المعالجات هي عقول الحواسيب واحد اهم مكوناتها ان لم يكن الاهم علي الاطلاق، لكن كيف يعمل ويتم تصنيعه من الاساس؟
ماذا يجري داخل بلايين الترانزستورات لجعل الكومبيوتر يعمل؟ في هذه السلسلة سنجيب عن تساؤلاتك ونتعمق في مفاهيم المعماريات، تصاميم الدارات الكهربائية، ومرورا بالدارات فائقة التكامل (VLSI), حتي النهاية وكيف يتم تصنيع المعالج من شرائح السيليكون.
الجزء الاول: مبادئ معمارية الحاسوب
سنبدأ بالمستوي العالي من المعالج ودوره، وكيف تتجمع مكونات المعالج معاً في تصميم فعال، هذا يتضمن انوية المعالج، تسلسل الذاكرة والكثير من المكونات الأخرى.
لكن نحتاج اولا مفهوم بسيط عن ماهية عمل المعالج. ابسط تعريف هو ان المعالج يتبع تسلسل معين من الأوامر والتعليمات لتنفيذ عملية معينة على مجموعة من البيانات. علي سبيل المثال: قد تكون العملية هي قراءة قيمة من الذاكرة ثم جمعها مع قيمة اخري وفي النهاية تخزين الناتج في الذاكرة مرة اخري. عندما تقوم بتشغيل لعبة او برنامج، فالبرنامج في حد ذاته هو مجموعة من التعليمات والاوامر المطلوب من المعالج تنفيذها. هذه الاوامر يتم تحميلها من الذاكرة لوضعها في المعالج ليتم تنفيذها واحدة تلو الأخرى حتى ينتهي البرنامج. وبينما يقوم المطورين بالبرمجة باستخدام لغات برمجة عالية المستوي مثل البايثون او ال++C، فالمعالج لا يفهمها وانما يفهم لغة الواحد والأصفار فقط، ولهذا علينا ترجمة تلك اللغات.
المعمارية – CPU Architecture

يتم ترجمة لغات البرمجة عالية المستوي الي لغة منخفضة المستوي -يقصد بالمستوي هو مدي اقتراب اللغة من لغة الألة- تسمي بالAssembly Language او لغة التجميع والتي هي عبارة عن مجموعة من الاوامر كجزء مما يعرف بمجموعة التعليمات (Instruction Set Architecture) او معمارية الحاسوب. والتي هي مجموعة من التعليمات والاوامر التي وضعت مسبقا، والتي يتم تصنيع وتصميم المعالج لكي يفهمها. أشهر المعماريات هي x86 وARM وهي الاشهر والاكثر انتشارا ثم يأتي بعدها RISC-V وMIPS وPowerPC. وكما لغات البرمجة المختلفة لها تركيبات مختلفة (Syntax)، فكل معمارية لها تركيباتها وتعليماتها المختلفة التي يلزم بناء البرنامج عليها لكي يعمل مع المعالج، ولهذا على سبيل المثال رأينا عدم امكانية تشغيل الويندوز المبني على معمارية x86 على الهواتف التي تعمل بمعمارية ARM حتى وقت قريب الي ان اضافت مايكروسوفت دعم الARM.
ويمكن تقسيم المعماريات الي نوعين رئيسين، معماريات ذات طول ثابت، واخري ذات طول متغير. لنأخذ معمارية الRISC-V من نوع الطول الثابت كمثال، حيث لكل امر او instruction رقم معين في لغة الألة محدد يميزها، مما يسهل عملية ترجمة الأمر للغة الألة. بينما معمارية ال x86 من النوع ذي الطول المتغير فيمكن للأمر ان يتم ترجمته للغة الألة في اشكال وارقام مختلفة. ولهذا السبب فمترجم الأوامر للغة الألة هو الجزء الاكثر تعقيدا في تصميم المعالجات بمعمارية x86.
بناء معمارية ذات طول ثابت يسمح بترجمة الأوامر للغة الألة بشكل أسرع نظرا لطبيعتها الثابتة، ولكن هذا يحد او يقلل من العدد الكلي من الأوامر المسموح للمعمارية ان تحتوي عليها وتدعمها. فبينما تحتوي معمارية RISC-V ذات الطول الثابت علي 100 امر فقط، تحتوي معمارية x86 على الاف التعليمات المختلفة والغير معروف رقمها تحديدا نظرا لطبيعتها مغلقة المصدر وملكيتها لشركة انتل. ورغم الاختلافات بين المعماريات، في النهاية جميعها تحتوي على التعليمات الاساسية التي تضمن قيامها بالعمليات الاساسية.

الأن وبعد عمل المعمارية ووضع الاوامر الاساسية، نحن جهازون لتشغيل الحاسوب وبدأ العمل عليه. تنفيذ الامر من قبل المعالج في الواقع يمر بعدة اجزاء اساسية يتم تقسيمها لمراحل أصغر داخل المعالج.
الخطوة الاولي هي جلب الأمر من الذاكرة للمعالج لبدأ التنفيذ، في الخطوة الثانية يتم ترجمة الأمر للغة الألة لكي يفهم المعالج اي امر هو بالتحديد. هنالك العديد من انواع الاوامر امثال العمليات الحسابية، او عمليات الذاكرة وغيرها. بعد التعرف على نوع العملية، يتم تجميع البيانات المراد ان يتم معالجتها من الذاكرة. إذا كنت تريد اضافة العدد A للعدد B فمن المستحيل ان تتم العملية بدون معرفة قيمة العدد A والعدد B. معظم المعالجات اليوم تستخدم الحجم 64bit كحد أقصي لممرات البيانات او كحجم سجل المعالج -كمية صغيرة من الذاكرة المتوافرة على وحدة المعالجة المركزية بهدف تسريع عمليات الوصول مقارنة بالذواكر الأخرى- فبينما المعالجات من النوع 32bit لها حد أقصى من البيانات 4 جيجابايت، فالحد الأقصي لمعالجات ال 64bit هو 16 اكسابايت اي 16 متبوعا ب 18 صفر، وهو رقم لن نصل اليه في المستقبل القريب او البعيد حتى :).
بعد ان يقوم المعالج بتحميل البيانات، يتجه لمرحلة التنفيذ حيث يتم معالجة البيانات، هذا من الممكن ان يكون عمل بعض العمليات الحسابية او المنطقية، او حتى تمريرها دون اي تعديل على الأطلاق. بعد انتهاء العملية والحصول على الناتج يقوم المعالج بتخزين البيانات مرة اخري في الذاكرة لينتقل للأمر الذي بعدها وهكذا. تعرف العمليات ال 4 الاساسية التي ذكرناها بدورة المعالج، فاكتمال الاربع عمليات الاساسية يحتسب دورة وهكذا.
انابيب التجزئة – Pipelines
الوصف للعمليات الذي ذكرناه هو تبسيط شديد للواقع، المعالجات الحديثة تقسم تلك العمليات التي ذكرناها ل 20 عملية أصغر لتحسين الفعالية وتسريع المعالجة. هذا يعني انه بالرغم من ان المعالج سيبدأ وينهي عدة اوامر خلال الدورة الواحدة، قد يستغرق 20 دورة او أكثر لتنفيذ اي امر منهم، اي انه قد يقوم بتحميل البيانات للأمر A ومعالجة البيانات للأمر B وتخزين ناتج الأمر C خلال نفس الدورة، هذا السلوك يعرف بأنابيب التجزئة او الPipelines

كل الاوامر ليس من اللازم ان تنتهي في نفس التوقيت، فبينما جمع عددين يحدث بسرعة فائقة، فقسمة نفس العددين قد يستغرق مئات الدورات. فبدلا من تعطيل عمل المعالج واقتصاره على تنفيذ امر واحد كبير، فأغلبية المعالجات الحديثة تنفذ الأوامر دون الالتزام بتتابع تسلسل الاوامر. هذا يعني ان المعالج سيقرر اي امر تنفيذه هو الاسرع والأكثر جاهزية للتنفيذ، ويؤجل تنفيذ الأخري. إذا كان الامر الحالي ليس جاهزا للتنفيذ بعد قد يقفز المعالج للامام ويبحث عن امر اخر أكثر جاهزية.
خطوط المعالجة الفائقة (Hyper-threading)
بالاضافة لتنفيذ الاوامر دون تتابع، تقوم المعالجات الحديثة بتوظيف ما يعرف بالsuperscalar architecture، هذا يعني انه المعالج يمكنه تنفيذ اكتر من امر واحد في نفس الوقت. لجعل هذا ممكن، المعالج سوف يقوم بعمل عدة انابيب للتجزءة (الPipelines). اذ رأي المعالج ان هناك أمرين جاهزين للتنفيذ في نفس الوقت، سيقوم بتنفيذهما في نفس الوقت. أحد الطرق الشائعة تعرف بخطوط المعالجة المتعددة او ماتطلق عليه انتل وAMD الHyperthreading، حاليا الشركتين تدعمان خطوط المعالجة المتعددة الثنائية -اي خطين للمعالجة لكل نواة-.
لتنفيذ تلك العمليات الدقيقة بشدة، يحتوي المعالج على اجزاء كثيرة اخري اضافية غير الأنوية العادية. هناك المئات من المكونات الاخري التي تخدم اهداف محددة، في هذه المقال سنتداول الاكثر اهمية وهو الذاكرة المخبئة (Cache Memory).
الذاكرة المخبئة (Cache Memory)
دور الذاكرة المخبئة قد يكون مربك للبعض، حيث انه دورهم تخزين الذاكرة مثل الذاكرة العشوائية او الاقراص الصلبة. الفرق بين انواع التخزين الثلاث هو معدل التأخير وسرعة القراءة والكتابة. وبالرغم من سرعة الذاكرة العشوائية الشديدة الا انها تظل بطيئة نسبة لسرعة معالجة البيانات الخاصة بالمعالج، قد تستغرق الذاكرة العشوائية مئات الدورات لكي يحضر البيانات للمعالج بينما المعالج باق بدون اي عمل الي ان تنتهي دورات الذاكرة العشوائية. ولهذا يحتوي المعالج على ذاكرته السريعة الخاصة المكونة من ثلاث مستويات تعرف بالتسلسل الهرمي للذاكرة (Memory Hierarchy).
المستوي الاول L1: الاسرع والاصغر مساحة
المستوي الثاني L2
المستوي الثالث L3: الأبطئ والأكبر حجما
وهناك النوع الرابع ويعرف بالCPU Registers وهي الاسرع في الجهاز ولكن تتراوح مساحتها في حدود ال 1kb.
عندما يطلب المعالج البيانات سيقوم بالتحقق اولا عن وجودها في الL1 في حالة عدم وجودها سيتحقق من وجودها في الL2 وهكذا حتى الاقراص الصلبة والSSD في اخر الترتيب

كان هذا كل شيء لهذا الجزء، سنتناول في الجزء القادم بقية تفاصيل التصميم، البوابات المنطقية، ادارة الطاقة وغيرها.