مصطلحات تقنية : ما هو ناقل PCIe ونواقل التوسعة الأخرى؟ (الجزء الأول)
تحدثنا في مواضيع سابقة عن أساسيات الحاسب وبدأنا بالفعل بالحديث عن اللوحة الأم وتكلمنا بشكل مفصل عن النواقص أو الـ Bus الموجودة في الكمبيوتر، وكيف أنها هي المسؤلة عن عمليات التواصل بين القطع الداخلية في الحاسب. واليوم، سنتحدث بشكل أكثر تفصيلاً أو تفرعاً عن أحد هذه النواق، أو لنكن أكثر دقة في قول "نوع" من أنواع هذه النواقل، ومن ثم سنتحدث تحديداً عن أهم ناقل في هذه المجموعة. فحديثنا اليوم سيكون عن نواقل التوسعة بشكل عام أو Expansion Bus وسنتحدث بعد ذلك بشئ من التفصيل عن واجهة PCIe وما هي تحديداً. لذا فبدون المزيد من المقدمات، دعونا نبدأ الحديث، فهلّا بدأنا ؟!.
كما تحدثنا في مقالنا الخاص بالنواقل Bus، فإن الوظيفة الأساسية البسيطة للنواقل تكمن في نقل البيانات بين الأجزاء المختلفة من الحاسب، وتحديداً من خلال المعالج للمكونات الأُخرى. وبناء على ذلك، تم تقسيم هذه النواقل لعدة أقسام أو أنواع، والتي منها ما يُسمّى بنواقل التوسعة التي تعمل على توصيل المعالج بما نُسميه عادة بفتحات التوسعة أو Expansion slots، وهي تلك الشقوق التي عادة ما نُجدها في اللوحة الأم في الجزء السفلي من ناحية اليسار.
وفي الحقيقة، أحد الأمور المميزة في النواقل هو أنها تبادلية الطبيعة، وهذا يعني أنك على سبيل المثال تستطيع تغير البطاقة الرسومية التي يتم تركيبها على هذا الناقل (ناقل التوسعة PCI) ليتم التواصل بين البطاقة الرسومية والمعالج ومن ثم مع الشاشة نفسها وهكذا دواليك. فأنت تستطيع هُنا أن تقوم بتركيب بطاقتين رسوميتين أو حتى نزع البطاقة القديمة وتركيب الجديدة وهكذا. ولكن ما هو ناقل التوسعة PCI ، أو Peripheral Component Interconnect (PCI) أو ناقل ربط المكونات الطرفية كما يُطلق عليه البعض ؟! دعونا نرى معاً.
كيف ظهر ناقل التوسعة Peripheral Component Interconnect (PCI) ؟
كما تحدثنا في مقالنا السابق الخاص بالنواقل (والذي أقترح عليك قرائته لتفهم تماماً ما سنتحدث عنه اليوم)، عرفنا أن النواقل بشكل أساسي هي عبارة عن قنوات أو وصلات كهربية تقوم بالربط بين المكونات الداخلية للحاسب على اللوحة الأم وأيضاً داخل المكونات نفسها مثل البطاقة الرسومية. وعرفنا أن النواقل الخاصة بالتوسعة هي تلك النواقل التي تقوم بربط بطاقات التوسعة المختلفة مثل البطاقات الرسومية أو بطاقات الصوت أو الشبكة، وهذه النواقل تنقسم للعديد من الأنواع أو كما نُطلق عليها في بعض الأحيان "شقوق التوسعة" مثل نواقل PCI و PCIe و أيضاً AGP وغيرها من نواقل التوسعة الأُخرى.
المميز في هذا النوع من النواقل ليس فقط وظيفتها الأساسية، ولكن أنها تسمح لك كمستخدم بتغيير البطاقات أو المكونات التي تتصل بها. فمثلاً يمكنك أن تقوم بتوصيل بطاقة رسومية واحدة أو بطاقتين، كما يُمكنك تركيب بطاقة رسومية وتغييرها في المستقبل ببطاقة جديدة. وهو ما يختلف كثيراً عن بعض الأجهزة التي كانت تأتي بمعالجات رسومية غير قابلة للتغيير.
ولمعرفة كيف بدأت نواقل PCI في الظهور فيمكننا ببساطة الرجوع قليلاً بالزمن للوراء. ففي السابق كانت أجهزة الحاسب تتمتع بناقل واحد فقط في الحاسب والذي بدوره كان يعمل تقريباً بنفس تردد المعالج، ولذلك فقد كان الناقل وقتئذ متزامن بشكل ممتاز مع المعالج من ناحية نقل البيانات بدون أي مشكلة. ولكن مع التطور الحاصل في سرعة المعالجات بدأت الحاجة لزيادة عدد النواقل في الحاسب وذلك لمواكبة هذا التطور بشكل ما، وهو ما أدّى لأن تُصبح الحواسيب تحتوي على ناقلين أو أكثر، بحيث يتخصص كل ناقل في التعامل مع مجموعة من القطع داخل الكمبيوتر.
وبشكل عام يتكون أي حاسب في الوقت الحالي من ناقلين أساسيين ومجموعة من النواقل الفرعية حسب اللوحة الأم، الناقل أقل سرعة منهما هو ذلك الذي يندرج تحته ما يُسمى بناقل PCI أو ناقل ربط المكونات الطرفية.
هذه النواقل الطرفية الأقل سرعة بدورها تتصل بالشريحة الموجودة على اللوحة الأم (والتي تحدثنا عنها في مقال النواقل ومقال اللوحة الأم بالمناسبة) والتي بدورها تتصل بالمعالج عن طريق الناقل الأمامي أو نواقل النظام كما يُطلق عليها (يمكنك رؤية ذلك في الصورة المرفقة في الأعلى).
الجدير بالذكر أنه وبجانب هذين النوعين يوجد أيضاً نواقل أُخرى فرعية مثل الناقل العالمي Universal Serial Bus أو ناقل USB (نعم يا صديقي فمقبس الUSB هو الأخر عبارة عن ناقل) والذي يقوم بتوصيل الأجهزة الطرفية مثل الكاميرات ولوحات المفاتيح والطوابع وغيرها من الأجهزة من خلال سلك نحيف يتصل بمقبس USB من اللوحة الخلفية I/O أو من الجزء الأمامي للكيس. كما يوجد أيضاً ناقل Firewire الذي يُستخدم مع بعض الأجهزة مثل كاميرات الفيديو وبعض الأقراص الخارجية.
لمحة تاريخية
يعود تاريخ ظهور أول ناقل مع جهاز IBM PC (circa 1982) ، حيث كان هذا الناقل يعمل بعرض 16bits ويوفر تردد 4.77 MHz ، وعرف بعد ذلك باسم ISA bus . وقد كان هذا الناقل حينها قادر على نقل البيانات بسرعة 9MBps وهي سرعة كبيرة فعلياً في ذلك الوقت بل يمكنها أن تكون كافية للعديد من التطبيقات الموجودة حالياً حتى. وقد كان هذا الناقل هو السائد في ثمانينات القرن الماضي لفترة لا بأس بها، ولعل السبب الرئيسي وراء إستمراره لفترة كبيرة هو التوافق مع معظم مصنعي الهاردوير في تلك الفترة وأيضاً عدم قدرة العتاد على إستخراج كامل قوة النواقل الأُخرى الأحدث التي ظهرت في تلك الفترة.
ومع مرور الوقت وتقدم ناقلنا العتيق في العمر، بدأت النواقل الشابة في ذلك الوقت مثل EISA في أخذ محله بسبب سرعتها الأعلى، حيث كان هذا الناقل يمتلك تردد 8Mhz ويتوافر بعرض 32Bit. وبعد ذلك ناقل Vesa Local Bus (VL-Bus) والذي تم تسميته على اسم شركة VESA المصنعة له، وقد تميز هذا الناقل بأنه يأتي بعرض 32Bit أيضاً ولكن يعمل بسرعة الناقل المحلي (أي نفس سرعة المعالج تقريباً في تلك الحقبة من الزمن).
وقد كان الأمر جيداً لفترة ما وبإعتبار أن الناقل سيقوم بتوصيل جهاز واحد أو جهازين، ولكن مع زيادة عدد الأجهزة الذي يقوم الناقل بتوصيلها ببعضها، بدأ يظهر بعض التشوش في أداء الناقل وهو ما أثّر على أداء الناقل نفسه. ولهذا فقد تم إعتماد هذا الناقل ليكون موصلاً فقط للبطاقات الرسومية، حيث أنها كانت المكون الوحيد القادر فعلاً من الإستفادة من هذه السرعة في التواصل مع المعالج بشكل كامل (حيث أننا كما نعلم فالمعالج الرسومي يحتاج لسرعة كبيرة في نقل البيانات بينه وبين المعالج حتى يتم معالجة البيانات الرسومية كبيرة الحجم بدون أي تأخير).
ظهور ناقل PCI أخيراً للنور
ومع مرور الوقت وتحديداً في بدايات التسعينيات من القرن الماضي، قامت مهندسوا شركة Intel بإبتكار ناقل جديد يقوم بالتغلب على هذه المشكلة المزعجة التي كانت تؤرق الجميع. حيث قام المهندسون بابتكار ناقل جديد يُسمّى ناقل ربط المكونات الطرفية والذي عُرف إختصاراً باسم PCI. وقد كان ناقل PCI فريداً من نوعه بالفعل، فقد ضربت الشركة به عصفوران بحجر واحد، وذلك لأنه كان عبارة عن مزيج من كل من ناقل VESA و ISA. حيث كان يوفر توصيلاً مباشراً بذاكرة النظام مع الأجهزة الموصلة، بجانب أنه يستخدم جسراً ليقوم بالتواصل مع الناقل الأمامي FSB، وهو ما يعني أنه يتصل بالمعالج بشكل شبه مباشر أيضاً. وهو ما يعني أداء أفضل من VL-Bus ولكن بدون حدوث أي تشوش كما كان في السابق.
الناقل الأمامي والناقل الخلفي وبطاقات PCI
كما ذكرنا في السابق، فالناقل الأمامي في الحاسب هو تلك الوصلات الفيزيائية التي تقوم بتوصيل المعالج المركزي مع بقية المكونات الرئيسية في الحاسب مثل ذاكرة الوصول العشوائي ووحدات التخزين وأيضاً بطاقات PCI. وللعلم، فقد كان الناقل الأمامي يتمتع بمجموعة مختلفة من الترددات أو السرعات على مر الزمن ليصل إلى 400MHz كما هو شائع في العادة، ولكن مع الحواسيب الأحدث فقد وصل إلى ترددات 800MHz .
وعلى الجانب الآخر يأتي ما يُسمّى بالناقل الخلفي أو Backside-Bus، وهذا الناقل هو في حد ذاته حالة خاصة، حيث أن وظيفته الأساسية هي توصيل المعالج بذاكرة Level 2 Cach الخاصة به (سنتحدث عن الذاكرة المخبأة في مقال المعالج)، ليتم التواصل مع المعلومات المُخزّنة داخلها بشكل سريع. ولكي لا يتسبب هذا الناقل في بطء عمل المعالج، فقد كان يتمتع تقريباً بشكل دائم بنفس سرعة المعالج.
ولحسن الحظ، فقط تطور هذا الناقل مع مرور الزمن هو الآخر، ليتحول من سلك بسيط يقوم بتوصيل المعالج بشريحة ذاكرة L2 المخبأة والتي كانت شريحة منفصلة في السابق، إلى وصلة بسيطة داخل المعالج نفسه، حيث وضع مطوروا الحاسب شرائح ذاكرة L2 بعد ذلك داخل المعالج نفسه لتقليل تكلفة ذاكرة L2 المخبأة التي كانت مرتفعة وأيضاً تقليل مسافة الإتصال وبالتالي زيادة سرعة التواصل بين الذاكرة والمعالج، وهو ما يعني أن هذه الوصلة الصغيرة الحالية لا يمكننا تسميتها ناقل بالشكل التقليدي، لذا فلم يعد الناقل الخلفي أو الـ BSB ناقل بعد الآن !!.
وبما أننا قد قُلنا وداعاً للناقل الخلفي فلنصب الآن إهتمامنا بالناقل الأمامي والنواقل الأُخرى، وتحديداً ناقل PCI الفرعي كما أشرنا في البداية.
أحد المميزات التي يوفرها ناقل PCI مقابل ناقل VL-Bus الأقدم هو أنه يستطيع بشكل رئيسي توصيل حتى خمسة أجهزة أو عتاد خارجية External Devices عن طريق شقوق التوسعة، كما يمكنه تركيب أو توصيل قطعتين داخليتين مثُبّتتين في الحاسب نفسه Internal Components، بدلاً من كل جهاز خارجي (أي أننا يمكن أن نستبدل الخمس أجهزة الخارجية ب10 داخلية). كما أنه من الممكن أيضاً أن يتم تركيب ناقلي PCI في الحاسب الواحد. كما أن شريحة جسر PCI تنظم سرعة ناقل PCI بشكل مُستقل عن المعالج نفسه وهو ما يوفر سهولة أكبر في تصميم هذه النواقل بعيداً عن قيود المعالجات المختلفة.
في البداية كان يتم تشغيل ناقل PCI في الأصل بسرعة 33 ميجاهرتز باستخدام مسار بعرض 32 بت. ولكن بعد ذلك بدأت تظهر بعض التنقيحات المتتالية والتي قامت بزيادة سرعة المعيار من 33 ميجاهرتز إلى 66 ميجاهرتز ومضاعفة عدد البتات أو عرض الناقل إلى 64 بت . وحاليًا ، يوفر ناقل PCI-X عمليات نقل بعرض 64 بت وبتردد 133 ميجاهرتز للحصول على سرعة نهائية مذهلة تبلغ 1 جيجابايت في الثانية (جيجابايت في الثانية) من معدل نقل البيانات ! (لا تعرف كيف يتم حساب مُعدل نقل البيانات ؟ يمكنك مراجعة مقال النواقل وعرض النطاق الترددي).
وكغيره من التقنيات الجديدة، كان معيار PCI كالشبح المرعب للشركات المُصنّعة. وهو أمر إعتدنا عليه مع أي تقنية جديدة، حيث يتحاشاها الجميع ومن ثم يبدأ الكل في إستخدامها بعد ذلك. فعلى الرغم من أن شركة Intel اقترحت معيار PCI في عام 1991 ، إلا أنه لم يُحقق شعبية حتى وصول نظام التشغيل Windows 95 في عام 1995. وقد كان هذا الاهتمام المفاجئ بـ PCI بسبب حقيقة أن Windows 95 يدعم ميزة تُسمى Plug and Play (PnP) ، والتي سنتحدث عنها في القسم التالي.
ما هو مبدأ التوصيل والتشغيل PnP أو Plug and Play ؟
يعتمد مبدأ PnP بشكل أساسي على مفهوم بسيط للغاية، حيث يسمح للحاسب بالتعرف على الهاردوير الذي يتم تركيبه وضبط إعداداته مباشرة بدون أية جهود أو تدخل من المستخدم. والجدير بالذكر أن معيار PCI كان في الأساس يحتوي في تصميمه على دعم PnP ولكن كان الأمر يتطلب نظام تشغيل يدعم الأمر على المستوى البرمجي، وهو ما جعل معيار PCI يصبح هو الناقل الأساسي مكان نواقل ISA . حيث كان يتولى الـ BIOS القيام بالمهمة بالكامل لتعريف الهاردوير الجديد الذي يتم تركيبه.
وبالرغم من أن فكرة PnP كانت مميزة في حد ذاتها وقد ساعدت في توفير الكثير من الوقت، إلا أن الإختلافات الكثيرة في الاختلافات في إجراءات البرامج المستخدمة من قبل مطوري PnP BIOS ومصنعي أجهزة PCI ومايكروسوفت إلى الإشارة إلى PnP بعد ذلك باسم "Plug and Pray".
ولكن كيف يعمل ناقل PCI بشكل عملي ؟
- حسناً، دعنا نفترض أنك قمت للتو بإضافة بطاقة صوت جديدة تستند إلى معيار PCI إلى جهاز الكمبيوتر الذي يعمل بنظام Windows XP لديك.
- بعد أن قُمت بتركيب هذه البطاقة وقمت بتشغيل الكمبيوتر، يبدأ الـ BIOS الخاص بالنظام بتشغيل البيوس الفرعي الخاص بنظام PnP الذي تحدثنا عنه للتو، هذا النوع يُسمّى PnP BIOSوالذي بدوره يقوم بفحص النواقل الموجودة في حاسوبك، بما في ذلك ناقل PCI بحثًا عن الأجهزة الجديدة التي تم تركيبها . ويتم ذلك عن طريق إرسال إشارة إلى جميع الأجهزة المتصلة بهذا الناقل ، وسؤال كل هذه الأجهزة عن هويتها.
- تستجيب جميع الأجهزة المتصلة على ناقل PCI والتي من بينها الوافد الجديد بطاقة الصوت التي تقوم على الفور بالتعريف بنفسها كفرد جديد ضمن العائلة. حيث تقوم البطاقة بإرسال معرف الجهاز أو الـID الخاص بها مرة أخرى عبر الناقل إلى الـ BIOS .
- بعد ذلك يتحقق PnP BIOS من وجود معلومات بطاقة الصوت هذه هل هي مُخزّنة بالفعل في ذاكرة الحاسب لمعرفة ما إذا كانت بيانات التكوين الخاصة ببطاقة الصوت موجودة بالفعل أم أنه بالفعل عنصر جديد في الحاسب.... ونظرًا لأن بطاقة الصوت المسكينة قد تم تثبيتها بالفعل للتو ، فلن يجد الـ Bios هذه المعلومات ضمن سجلات ESCD الموجودة.
وعندها يقوم نظام البيوس الفرعي PnP BIOS بحفظ جميع إعدادات وعنوان الذاكرة و منافذ الإدخال / الإخراج الخاصة ببطاقة الصوت ويحفظ البيانات في ملف ESCD (ملف ESCD هو ملف يقوم بتخزين جميع البيانات الخاصة بأجهزة PnP التي يتم تركيبها على الحاسب) .
- بعد ذلك، يقوم نظام Windows XP أخيراً بالتمهيد. ويقوم بفحص ملف ESCD وناقل PCI، ليكتشف نظام التشغيل أن هناك عضو جديد هو بطاقة الصوت. ولأن نظام التشغيل هذا يدعم نظام التعرف التلقائي على الأجهزة PnP، سيتعرف مباشرة على وجود جهاز جديد ولذلك سيعرض نافذة صغيرة تخبرك أن Windows قد عثر على جهاز جديد وأنه يُحدد ما هو الآن. في كثير من الحالات ، سيقوم Windows XP بتحديد الجهاز والعثور على برامج التشغيل الضرورية وتحميلها ، وستكون جاهزًا للانطلاق. ولكن في بعض الحالات قد لا يستطيع ذلك، وبدلاً من هذا سيتم فتح نافذة جانبية صغيرة أو إشعار صغير مكتوب عليه "معالج العثور على أجهزة جديدة".
- سيوجهك هذا الإشعار بعد ذلك لتثبيت برامج التشغيل من القرص المدمج مثلاً المرفق ببطاقة الصوت. وبمجرد تثبيت التعريف ، سيكون الجهاز جاهزًا للاستخدام.
- قد تتطلب بعض الأجهزة إعادة تشغيل الكمبيوتر قبل أن تتمكن من استخدامها. ولكن في مثالنا ، ستكون بطاقة الصوت جاهزة للاستخدام على الفور.
والآن، لنقل أنك تُريد التقاط بعض الأصوات الخارجية وتسجيلها بإستخدام بطاقة الصوت التي قمت بتركيبها لتوك. وهذا يتم عن طريق إعداد برنامج لتسجيل الصوت ومن ثم البدء في التسجيل. فما الذي يحدث تحديداً ؟!
- ببساطة ما يحدث هو أن الصوت يأتي إلى بطاقة الصوت عبر موصل الصوت الخارجي. ومن ثم تقوم بطاقة الصوت بتحويل الإشارة التناظرية إلى إشارة رقمية، ويتم نقل بيانات الصوت الرقمي من بطاقة الصوت عبر ناقل PCI إلى وحدة التحكم في النواقل (والتي توجد حالياً داخل الشريحة الرئيسية في اللوحة الأم. حيث أن الشريحة الرئيسية أو مجموعة الشرائح Chipset تحتوي على جميع الشرائح الفرعية التي يحملها الحاسب مثل الجسر الأمامي والجنوبي ومتحكم النواقل وغيرها من الشرائح الأُخرى).
- بعد ذلك تُحدد وحدة التحكم أي جهاز على ناقل PCI له أولوية لإرسال البيانات إلى وحدة المعالجة المركزية. كما يتحقق أيضًا لمعرفة ما إذا كانت البيانات ستذهب مباشرة إلى وحدة المعالجة المركزية أو إلى ذاكرة النظام.
- ونظرًا لأن بطاقة الصوت تعمل في وضع التسجيل ، فإن وحدة التحكم في الناقل تحدد أولوية عالية للبيانات القادمة منها وترسل بيانات بطاقة الصوت عبر جسر الناقل إلى ناقل النظام أو الناقل الأمامي FSB، والذي يقوم بدوره بنقل البيانات لحفظها في ذاكرة النظام.
- وبمجرد اكتمال التسجيل ، يمكنك الآن تحديد ما إذا كانت البيانات من بطاقة الصوت سيتم حفظها على القرص الصلب أو الاحتفاظ بها في الذاكرة للمعالجة الإضافية. وهذا بدوره سيستدعي نقل البيانات مرة أُخرى من الذاكرة إلى المعالج مثلاً ومن ثم إلى وحدات التخزين أو للذاكرة مرة أُخرى بعد معالجتها. والذي سيقوم بعملية النقل هي أيضاً النواقل.
الحاجة لما هو أفضل !!
كان ناقل PCI مناسبًا لسنوات عديدة ، حيث يوفر نطاقًا تردديًا كافيًا لجميع الأجهزة الطرفية التي قد يرغب معظم المستخدمين في الحصول عليها. ولكن ومع مرور الوقت وكطبيعة التكنولوجيا، ظهرت بعد ذلك الحاجة إلى ما هو أفضل، لأن هناك قطعة في الحاسوب شرهة إلى حد كبير، شرهة بدون حدود. إنها كروت الشاشة !!!.
ففي منتصف التسعينيات من القرن الماضي، كانت البطاقات الرسومية تزداد قوة ، وكانت الألعاب ثلاثية الأبعاد تتطلب أداءً أعلى. وللأسف لا يستطيع ناقل PCI التعامل مع جميع المعلومات التي تمر بين المعالج المركزي والمعالج الرسومي. ونتيجة لذلك ظهرت الحاجة لنواقل أكثر سرعة من PCI نفسها. وقد ذهبت جميع الأنظار وقتها نحو المارد الأزرق، المطور الأساسي لمعيار PCI.
وكعادتها في تلك الفترة ولكونها أخذت على عاتقها تطوير التقنية في ذلك الوقت، طورت إنتل منفذ الرسومات المعجل (AGP. وهو عبارة عن ناقل مخصص بالكامل للبطاقات الرسومية لا غير. حيث لا تتم مشاركة النطاق الترددي عبر ناقل AGP مع أي مكونات أخرى داخل الحاسب، وذلك على الرغم من أن ناقل PCI كان لا يزال هو الناقل المفضل لمعظم الأجهزة الطرفية في ذلك الوقت، فقد تولى AGP مهمة المعالجة الرسومية المتخصصة.