غالبًا ما تسمى وحدة المعالجة المركزية (Central Processing Unit CPU) بأدمغة brains الكمبيوتر، تمامًا مثل الدماغ البشري، فهي تتكون من عدة أجزاء تعمل معًا لمعالجة المعلومات. هناك أجزاء تأخذ المعلومات، والأجزاء التي تخزن المعلومات، والأجزاء التي تعالج المعلومات، والأجزاء التي تساعد في إخراج المعلومات، والمزيد. في شرح اليوم، سنتناول العناصر الأساسية التي تتكون منها وحدة المعالجة المركزية وكيف تعمل جميعها معًا لتشغيل جهاز الكمبيوتر الخاص بك.
يجب أن تعلم أن هذه المقالة جزء من سلسلة علم التشريح لدينا التي تشرح كل التقنيات الكامنة وراء مكونات الكمبيوتر. لدينا أيضًا سلسلة مخصصة لتصميم وحدة المعالجة المركزية والتي تتعمق أكثر في عملية تصميم وحدة المعالجة المركزية وكيفية عمل الأشياء داخليًا. إنها قراءة فنية موصى بها للغاية. ستعيد مقالة التشريح هذه مراجعة بعض الأساسيات من سلسلة وحدة المعالجة المركزية، ولكن على مستوى أعلى وبمحتوى إضافي.
مقارنة بالمقالات السابقة في سلسلة التشريح لدينا، سيكون هذا المقال حتمًا أكثر تجريدًا. عندما تنظر داخل شيء ما مثل مصدر الطاقة، يمكنك أن ترى بوضوح المكثفات والمحولات والمكونات الأخرى. هذا ببساطة غير ممكن مع وحدة المعالجة المركزية الحديثة لأن كل شيء صغير جدًا ولأن Intel و AMD لا يكشفان علنًا عن تصاميمهما. معظم تصميمات وحدة المعالجة المركزية هي ملكية خاصة، لذا فإن الموضوعات التي تتناولها هذه المقالة تمثل الميزات العامة التي تمتلكها جميع وحدات المعالجة المركزية.
لذلك دعونا نتعمق. كل نظام رقمي يحتاج إلى شكل من أشكال وحدة المعالجة المركزية. في الأساس، يكتب المبرمج كودًا للقيام بأي مهمة، ثم تقوم وحدة المعالجة المركزية بتنفيذ هذا الرمز لإنتاج النتيجة المرجوة. ترتبط وحدة المعالجة المركزية أيضًا بأجزاء أخرى من النظام مثل الذاكرة والإدخال/ الإخراج للمساعدة في الحفاظ على تغذيتها بالبيانات ذات الصلة، لكننا لن نغطي هذه الأنظمة اليوم.
مخطط وحدة المعالجة المركزية: ISA
عند تحليل أي وحدة معالجة مركزية، فإن أول شيء ستصادفه هو بنية مجموعة التعليمات (Instruction Set Architecture ISA). هذا هو المخطط المجازي لكيفية عمل وحدة المعالجة المركزية وكيف تتفاعل جميع الأنظمة الداخلية مع بعضها البعض. تمامًا مثل وجود العديد من سلالات الكلاب في نفس النوع، هناك العديد من الأنواع المختلفة من ISAs يمكن بناء وحدة المعالجة المركزية عليها. النوعان الأكثر شيوعًا هما x86 (موجودان في أجهزة الكمبيوتر المكتبية والمحمولة) و ARM (الموجود في الأجهزة المدمجة والأجهزة المحمولة).
هناك بعض التطبيقات الأخرى مثل MIPS و RISC-V و PowerPC التي لديها المزيد من التطبيقات المتخصصة. سيحدد ISA التعليمات التي يمكن أن تعالجها وحدة المعالجة المركزية، وكيف تتفاعل مع الذاكرة وذاكرة التخزين المؤقت، وكيف يتم تقسيم العمل في العديد من مراحل المعالجة، وأكثر من ذلك.
لذلك دعونا نتعمق. كل نظام رقمي يحتاج إلى شكل من أشكال وحدة المعالجة المركزية. في الأساس، يكتب المبرمج كودًا للقيام بأي مهمة، ثم تقوم وحدة المعالجة المركزية بتنفيذ هذا الرمز لإنتاج النتيجة المرجوة. ترتبط وحدة المعالجة المركزية أيضًا بأجزاء أخرى من النظام مثل الذاكرة والإدخال/ الإخراج للمساعدة في الحفاظ على تغذيتها بالبيانات ذات الصلة، لكننا لن نغطي هذه الأنظمة اليوم.
مخطط وحدة المعالجة المركزية: ISA
عند تحليل أي وحدة معالجة مركزية، فإن أول شيء ستصادفه هو بنية مجموعة التعليمات (Instruction Set Architecture ISA). هذا هو المخطط المجازي لكيفية عمل وحدة المعالجة المركزية وكيف تتفاعل جميع الأنظمة الداخلية مع بعضها البعض. تمامًا مثل وجود العديد من سلالات الكلاب في نفس النوع، هناك العديد من الأنواع المختلفة من ISAs يمكن بناء وحدة المعالجة المركزية عليها. النوعان الأكثر شيوعًا هما x86 (موجودان في أجهزة الكمبيوتر المكتبية والمحمولة) و ARM (الموجود في الأجهزة المدمجة والأجهزة المحمولة).
هناك بعض التطبيقات الأخرى مثل MIPS و RISC-V و PowerPC التي لديها المزيد من التطبيقات المتخصصة. سيحدد ISA التعليمات التي يمكن أن تعالجها وحدة المعالجة المركزية، وكيف تتفاعل مع الذاكرة وذاكرة التخزين المؤقت، وكيف يتم تقسيم العمل في العديد من مراحل المعالجة، وأكثر من ذلك.
لتغطية الأجزاء الرئيسية من وحدة المعالجة المركزية، سنتبع المسار الذي تسلكه التعليمات أثناء تنفيذها. قد تتبع أنواع مختلفة من التعليمات مسارات مختلفة وتستخدم أجزاء مختلفة من وحدة المعالجة المركزية، لكننا سنعمم هنا لتغطية الأجزاء الأكبر. سنبدأ بأبسط تصميم لمعالج أحادي النواة ونضيف التعقيد تدريجيًا مع اقترابنا من تصميم أكثر حداثة.
وحدة التحكم و Datapath
يمكن تقسيم أجزاء وحدة المعالجة المركزية إلى قسمين: وحدة التحكم ومسار البيانات . تخيل سيارة قطار. المحرك هو ما يحرك القطار، لكن القائد يسحب الرافعات خلف الكواليس ويتحكم في الجوانب المختلفة للمحرك. وحدة المعالجة المركزية هي نفسها.
DATAPATH هو مثل المحرك وكما يوحي اسمها، هو المسار حيث تدفقات البيانات كما تتم معالجتها. و DATAPATH يتلقى المدخلات والعمليات لهم، ويرسل بها إلى المكان الصحيح عندما يتم القيام به. وحدة التحكم يحكي DATAPATH كيفية تشغيل مثل موصل من القطار. تبعا لتعليمات و DATAPATH إشارات الطريق الإرادة لمكونات مختلفة، تشغيل وإيقاف أجزاء مختلفة من DATAPATH، ورصد حالة وحدة المعالجة المركزية.
وحدة التحكم و Datapath
يمكن تقسيم أجزاء وحدة المعالجة المركزية إلى قسمين: وحدة التحكم ومسار البيانات . تخيل سيارة قطار. المحرك هو ما يحرك القطار، لكن القائد يسحب الرافعات خلف الكواليس ويتحكم في الجوانب المختلفة للمحرك. وحدة المعالجة المركزية هي نفسها.
DATAPATH هو مثل المحرك وكما يوحي اسمها، هو المسار حيث تدفقات البيانات كما تتم معالجتها. و DATAPATH يتلقى المدخلات والعمليات لهم، ويرسل بها إلى المكان الصحيح عندما يتم القيام به. وحدة التحكم يحكي DATAPATH كيفية تشغيل مثل موصل من القطار. تبعا لتعليمات و DATAPATH إشارات الطريق الإرادة لمكونات مختلفة، تشغيل وإيقاف أجزاء مختلفة من DATAPATH، ورصد حالة وحدة المعالجة المركزية.
دورة التعليمات- الجلب The Instruction Cycle- Fetch
أول شيء يجب أن تفعله وحدة المعالجة المركزية لدينا هو معرفة التعليمات التي يجب تنفيذها بعد ذلك ونقلها من الذاكرة إلى وحدة المعالجة المركزية. يتم إنتاج التعليمات بواسطة مترجم وهي خاصة بمعيار ISA الخاص بوحدة المعالجة المركزية. ستشارك ISA في أنواع التعليمات الأكثر شيوعًا مثل التحميل والتخزين والإضافة والطرح وما إلى ذلك، ولكن هناك العديد من الأنواع الإضافية الخاصة من التعليمات الفريدة لكل ISA معين. ستعرف وحدة التحكم الإشارات التي يجب توجيهها إلى مكان كل نوع من التعليمات.
عند تشغيل ملف exe. على Windows على سبيل المثال، يتم نقل رمز هذا البرنامج إلى الذاكرة ويتم إخبار وحدة المعالجة المركزية بالعنوان الذي تبدأ به التعليمات الأولى. تحتفظ وحدة المعالجة المركزية دائمًا بسجل داخلي يحتوي على موقع ذاكرة التعليمات التالية التي سيتم تنفيذها. وهذا ما يسمى عداد البرامج (PC).
بمجرد أن يعرف من أين تبدأ، فإن الخطوة الأولى في دورة التعليمات هي الحصول على هذه التعليمات. هذا ينقل التعليمات من الذاكرة إلى سجل تعليمات وحدة المعالجة المركزية ويعرف بمرحلة الجلب. من الناحية الواقعية، من المحتمل أن تكون التعليمات موجودة في ذاكرة التخزين المؤقت لوحدة المعالجة المركزية بالفعل، لكننا سنغطي هذه التفاصيل قليلاً.
دورة التعليمات- فك الشفرة The Instruction Cycle- Decode
عندما تحتوي وحدة المعالجة المركزية على تعليمات، فإنها تحتاج إلى معرفة نوع التعليمات على وجه التحديد. وهذا ما يسمى بمرحلة فك الشفرة. سيكون لكل تعليمات مجموعة معينة من البتات تسمى كود التشغيل والتي تخبر وحدة المعالجة المركزية بكيفية تفسيرها. هذا مشابه لكيفية استخدام امتدادات الملفات المختلفة لإخبار الكمبيوتر بكيفية تفسير ملف. على سبيل المثال، jpg. و. يعد كل من png ملفات صور، لكنهما ينظمان البيانات بطريقة مختلفة لذلك يحتاج الكمبيوتر إلى معرفة النوع من أجل تفسيرها بشكل صحيح.
اعتمادًا على مدى تعقيد ISA، قد يصبح جزء فك تشفير التعليمات من وحدة المعالجة المركزية معقدًا. قد يحتوي ISA مثل RISC-V على بضع عشرات فقط من التعليمات بينما يحتوي x86 على الآلاف. في وحدة المعالجة المركزية Intel x86 النموذجية، تعد عملية فك التشفير واحدة من أكثر العمليات صعوبة وتشغل مساحة كبيرة. أكثر أنواع التعليمات شيوعًا التي تقوم وحدة المعالجة المركزية بفك تشفيرها هي تعليمات الذاكرة أو الحساب أو التعليمات الفرعية.
3 أنواع تعليمات رئيسية Three Main Instruction Types
قد تكون تعليمات الذاكرة شيئًا مثل "قراءة القيمة من عنوان الذاكرة 1234 إلى القيمة A" أو "كتابة القيمة B إلى عنوان الذاكرة 5678". قد تكون التعليمات الحسابية شيئًا مثل "إضافة قيمة A إلى القيمة B وتخزين النتيجة في القيمة C". قد تكون تعليمات التفرع شيئًا مثل "تنفيذ هذا الرمز إذا كانت القيمة C موجبة أو تنفيذ هذا الرمز إذا كانت القيمة C سالبة". قد يقوم برنامج نموذجي بربطها معًا للتوصل إلى شيء مثل "إضافة القيمة في عنوان الذاكرة 1234 إلى القيمة الموجودة في عنوان الذاكرة 5678 وتخزينها في عنوان الذاكرة 4321 إذا كانت النتيجة إيجابية أو على العنوان 8765 إذا كانت النتيجة سلبية".
قبل أن نبدأ في تنفيذ التعليمات التي قمنا بفك شفرتها للتو، نحتاج إلى التوقف للحظة للتحدث عن السجلات.
تحتوي وحدة المعالجة المركزية على عدد قليل جدًا من أجزاء الذاكرة الصغيرة جدًا ولكنها سريعة جدًا تسمى السجلات. على وحدة المعالجة المركزية 64 بت، ستحتوي كل واحدة منها على 64 بت وقد يكون هناك بضع عشرات فقط من أجل النواة. تُستخدم هذه لتخزين القيم التي يتم استخدامها حاليًا ويمكن اعتبارها شيئًا مثل ذاكرة التخزين المؤقت L0. في أمثلة التعليمات أعلاه، سيتم تخزين القيم A و B و C في السجلات.
وحدة ALU
العودة إلى مرحلة التنفيذ الآن. سيكون هذا مختلفًا بالنسبة للأنواع الثلاثة من التعليمات التي تحدثنا عنها أعلاه، لذلك سنغطي كل منها على حدة.
البدء بالتعليمات الحسابية لأنها أسهل في الفهم. يتم تغذية هذا النوع من التعليمات في وحدة السجل الحسابي (ALU) للمعالجة. إن ALU عبارة عن دائرة تأخذ عادةً مدخلين بإشارة تحكم وتخرج نتيجة.
أول شيء يجب أن تفعله وحدة المعالجة المركزية لدينا هو معرفة التعليمات التي يجب تنفيذها بعد ذلك ونقلها من الذاكرة إلى وحدة المعالجة المركزية. يتم إنتاج التعليمات بواسطة مترجم وهي خاصة بمعيار ISA الخاص بوحدة المعالجة المركزية. ستشارك ISA في أنواع التعليمات الأكثر شيوعًا مثل التحميل والتخزين والإضافة والطرح وما إلى ذلك، ولكن هناك العديد من الأنواع الإضافية الخاصة من التعليمات الفريدة لكل ISA معين. ستعرف وحدة التحكم الإشارات التي يجب توجيهها إلى مكان كل نوع من التعليمات.
عند تشغيل ملف exe. على Windows على سبيل المثال، يتم نقل رمز هذا البرنامج إلى الذاكرة ويتم إخبار وحدة المعالجة المركزية بالعنوان الذي تبدأ به التعليمات الأولى. تحتفظ وحدة المعالجة المركزية دائمًا بسجل داخلي يحتوي على موقع ذاكرة التعليمات التالية التي سيتم تنفيذها. وهذا ما يسمى عداد البرامج (PC).
بمجرد أن يعرف من أين تبدأ، فإن الخطوة الأولى في دورة التعليمات هي الحصول على هذه التعليمات. هذا ينقل التعليمات من الذاكرة إلى سجل تعليمات وحدة المعالجة المركزية ويعرف بمرحلة الجلب. من الناحية الواقعية، من المحتمل أن تكون التعليمات موجودة في ذاكرة التخزين المؤقت لوحدة المعالجة المركزية بالفعل، لكننا سنغطي هذه التفاصيل قليلاً.
دورة التعليمات- فك الشفرة The Instruction Cycle- Decode
عندما تحتوي وحدة المعالجة المركزية على تعليمات، فإنها تحتاج إلى معرفة نوع التعليمات على وجه التحديد. وهذا ما يسمى بمرحلة فك الشفرة. سيكون لكل تعليمات مجموعة معينة من البتات تسمى كود التشغيل والتي تخبر وحدة المعالجة المركزية بكيفية تفسيرها. هذا مشابه لكيفية استخدام امتدادات الملفات المختلفة لإخبار الكمبيوتر بكيفية تفسير ملف. على سبيل المثال، jpg. و. يعد كل من png ملفات صور، لكنهما ينظمان البيانات بطريقة مختلفة لذلك يحتاج الكمبيوتر إلى معرفة النوع من أجل تفسيرها بشكل صحيح.
اعتمادًا على مدى تعقيد ISA، قد يصبح جزء فك تشفير التعليمات من وحدة المعالجة المركزية معقدًا. قد يحتوي ISA مثل RISC-V على بضع عشرات فقط من التعليمات بينما يحتوي x86 على الآلاف. في وحدة المعالجة المركزية Intel x86 النموذجية، تعد عملية فك التشفير واحدة من أكثر العمليات صعوبة وتشغل مساحة كبيرة. أكثر أنواع التعليمات شيوعًا التي تقوم وحدة المعالجة المركزية بفك تشفيرها هي تعليمات الذاكرة أو الحساب أو التعليمات الفرعية.
3 أنواع تعليمات رئيسية Three Main Instruction Types
قد تكون تعليمات الذاكرة شيئًا مثل "قراءة القيمة من عنوان الذاكرة 1234 إلى القيمة A" أو "كتابة القيمة B إلى عنوان الذاكرة 5678". قد تكون التعليمات الحسابية شيئًا مثل "إضافة قيمة A إلى القيمة B وتخزين النتيجة في القيمة C". قد تكون تعليمات التفرع شيئًا مثل "تنفيذ هذا الرمز إذا كانت القيمة C موجبة أو تنفيذ هذا الرمز إذا كانت القيمة C سالبة". قد يقوم برنامج نموذجي بربطها معًا للتوصل إلى شيء مثل "إضافة القيمة في عنوان الذاكرة 1234 إلى القيمة الموجودة في عنوان الذاكرة 5678 وتخزينها في عنوان الذاكرة 4321 إذا كانت النتيجة إيجابية أو على العنوان 8765 إذا كانت النتيجة سلبية".
قبل أن نبدأ في تنفيذ التعليمات التي قمنا بفك شفرتها للتو، نحتاج إلى التوقف للحظة للتحدث عن السجلات.
تحتوي وحدة المعالجة المركزية على عدد قليل جدًا من أجزاء الذاكرة الصغيرة جدًا ولكنها سريعة جدًا تسمى السجلات. على وحدة المعالجة المركزية 64 بت، ستحتوي كل واحدة منها على 64 بت وقد يكون هناك بضع عشرات فقط من أجل النواة. تُستخدم هذه لتخزين القيم التي يتم استخدامها حاليًا ويمكن اعتبارها شيئًا مثل ذاكرة التخزين المؤقت L0. في أمثلة التعليمات أعلاه، سيتم تخزين القيم A و B و C في السجلات.
وحدة ALU
العودة إلى مرحلة التنفيذ الآن. سيكون هذا مختلفًا بالنسبة للأنواع الثلاثة من التعليمات التي تحدثنا عنها أعلاه، لذلك سنغطي كل منها على حدة.
البدء بالتعليمات الحسابية لأنها أسهل في الفهم. يتم تغذية هذا النوع من التعليمات في وحدة السجل الحسابي (ALU) للمعالجة. إن ALU عبارة عن دائرة تأخذ عادةً مدخلين بإشارة تحكم وتخرج نتيجة.
تخيل آلة حاسبة أساسية استخدمتها في المدرسة الإعدادية. لإجراء عملية، عليك كتابة رقمي الإدخال بالإضافة إلى نوع العملية التي تريد تنفيذها. تقوم الآلة الحاسبة بالحساب وإخراج النتيجة. في حالة وحدة ALU الخاصة بوحدة المعالجة المركزية الخاصة بنا، يتم تحديد نوع العملية من خلال كود التشغيل الخاص بالتعليمات وترسل وحدة التحكم ذلك إلى وحدة ALU. بالإضافة إلى العمليات الحسابية الأساسية، يمكن للوحدات ALU أيضًا إجراء عمليات البت مثل AND و OR و NOT و XOR. ستخرج وحدة ALU أيضًا بعض معلومات الحالة لوحدة التحكم حول الحساب الذي أكملته للتو. يمكن أن يشمل ذلك أشياء مثل ما إذا كانت النتيجة إيجابية، أو سلبية، أو صفر، أو بها تجاوز.
ترتبط ALU بشكل كبير بالعمليات الحسابية، ولكن يمكن استخدامها أيضًا للذاكرة أو تعليمات التفرع. على سبيل المثال، قد تحتاج وحدة المعالجة المركزية إلى حساب عنوان الذاكرة المعطى كنتيجة لعملية حسابية سابقة. قد تحتاج أيضًا إلى حساب الإزاحة لإضافتها إلى عداد البرنامج الذي تتطلبه تعليمات التفرع. شيء من هذا القبيل "إذا كانت النتيجة السابقة سلبية، فانتقل إلى الأمام 20 تعليمات".
تعليمات الذاكرة والتسلسل الهرمي Memory Instructions and Hierarchy
بالنسبة لتعليمات الذاكرة، سنحتاج إلى فهم مفهوم يسمى التسلسل الهرمي للذاكرة Memory Hierarchy. يمثل هذا العلاقة بين ذاكرات التخزين المؤقت وذاكرة الوصول العشوائي والتخزين الرئيسي. عندما تتلقى وحدة المعالجة المركزية تعليمات ذاكرة لجزء من البيانات لم يكن موجودًا محليًا في سجلاتها، فسوف تنخفض في التسلسل الهرمي للذاكرة حتى تعثر عليها. تحتوي معظم وحدات المعالجة المركزية الحديثة على ثلاثة مستويات من ذاكرة التخزين المؤقت: L1 و L2 و L3. أول مكان ستتحقق منه وحدة المعالجة المركزية هو ذاكرة التخزين المؤقت L1. هذا هو أصغر وأسرع مستويات ذاكرة التخزين المؤقت الثلاثة. عادةً ما يتم تقسيم ذاكرة التخزين المؤقت L1 إلى جزء للبيانات وجزء للإرشادات. تذكر أنه يجب جلب التعليمات من الذاكرة تمامًا مثل البيانات.
قد تكون ذاكرة التخزين المؤقت النموذجية L1 بضع مئات من كيلوبايت. إذا لم تتمكن وحدة المعالجة المركزية من العثور على ما تبحث عنه في ذاكرة التخزين المؤقت L1، فسوف تتحقق من ذاكرة التخزين المؤقت L2. قد يكون هذا في حدود بضعة ميغا بايت. الخطوة التالية هي ذاكرة التخزين المؤقت L3 والتي قد تكون بضع عشرات من ميغابايت. إذا لم تتمكن وحدة المعالجة المركزية من العثور على البيانات التي تحتاجها في ذاكرة التخزين المؤقت L3، فستنتقل إلى ذاكرة الوصول العشوائي وأخيرًا التخزين الرئيسي. مع تقدمنا في كل خطوة، تزداد المساحة المتاحة تقريبًا بترتيب من حيث الحجم، وكذلك زمن الانتقال.
ترتبط ALU بشكل كبير بالعمليات الحسابية، ولكن يمكن استخدامها أيضًا للذاكرة أو تعليمات التفرع. على سبيل المثال، قد تحتاج وحدة المعالجة المركزية إلى حساب عنوان الذاكرة المعطى كنتيجة لعملية حسابية سابقة. قد تحتاج أيضًا إلى حساب الإزاحة لإضافتها إلى عداد البرنامج الذي تتطلبه تعليمات التفرع. شيء من هذا القبيل "إذا كانت النتيجة السابقة سلبية، فانتقل إلى الأمام 20 تعليمات".
تعليمات الذاكرة والتسلسل الهرمي Memory Instructions and Hierarchy
بالنسبة لتعليمات الذاكرة، سنحتاج إلى فهم مفهوم يسمى التسلسل الهرمي للذاكرة Memory Hierarchy. يمثل هذا العلاقة بين ذاكرات التخزين المؤقت وذاكرة الوصول العشوائي والتخزين الرئيسي. عندما تتلقى وحدة المعالجة المركزية تعليمات ذاكرة لجزء من البيانات لم يكن موجودًا محليًا في سجلاتها، فسوف تنخفض في التسلسل الهرمي للذاكرة حتى تعثر عليها. تحتوي معظم وحدات المعالجة المركزية الحديثة على ثلاثة مستويات من ذاكرة التخزين المؤقت: L1 و L2 و L3. أول مكان ستتحقق منه وحدة المعالجة المركزية هو ذاكرة التخزين المؤقت L1. هذا هو أصغر وأسرع مستويات ذاكرة التخزين المؤقت الثلاثة. عادةً ما يتم تقسيم ذاكرة التخزين المؤقت L1 إلى جزء للبيانات وجزء للإرشادات. تذكر أنه يجب جلب التعليمات من الذاكرة تمامًا مثل البيانات.
قد تكون ذاكرة التخزين المؤقت النموذجية L1 بضع مئات من كيلوبايت. إذا لم تتمكن وحدة المعالجة المركزية من العثور على ما تبحث عنه في ذاكرة التخزين المؤقت L1، فسوف تتحقق من ذاكرة التخزين المؤقت L2. قد يكون هذا في حدود بضعة ميغا بايت. الخطوة التالية هي ذاكرة التخزين المؤقت L3 والتي قد تكون بضع عشرات من ميغابايت. إذا لم تتمكن وحدة المعالجة المركزية من العثور على البيانات التي تحتاجها في ذاكرة التخزين المؤقت L3، فستنتقل إلى ذاكرة الوصول العشوائي وأخيرًا التخزين الرئيسي. مع تقدمنا في كل خطوة، تزداد المساحة المتاحة تقريبًا بترتيب من حيث الحجم، وكذلك زمن الانتقال.
بمجرد أن تعثر وحدة المعالجة المركزية على البيانات، ستقوم بإحضارها في التسلسل الهرمي بحيث تتمتع وحدة المعالجة المركزية بوصول سريع إليها إذا لزم الأمر في المستقبل. هناك الكثير من الخطوات هنا، ولكنها تضمن أن وحدة المعالجة المركزية لديها وصول سريع إلى البيانات التي تحتاجها. على سبيل المثال، يمكن لوحدة المعالجة المركزية القراءة من سجلاتها الداخلية في دورة أو دورتين فقط، و L1 في عدد قليل من الدورات، و L2 في عشر دورات أو نحو ذلك، و L3 في بضع عشرات . إذا احتاج الأمر إلى الذهاب إلى الذاكرة أو التخزين الرئيسي، فقد يستغرق ذلك عشرات الآلاف أو حتى ملايين الدورات. اعتمادًا على النظام، من المحتمل أن يكون لكل نواة ذاكرة تخزين مؤقت L1 خاصة بها، ومشاركة L2 مع نواة أخرى، ومشاركة L3 بين المجموعات الأربعة أو أكثر من النوى. سنتحدث أكثر عن وحدات المعالجة المركزية متعددة النواة لاحقًا في هذه المقالة.
تعليمات التفرع والقفز Branch and Jump Instructions
آخر أنواع التعليمات الثلاثة الرئيسية هو تعليمات التفرع. تقفز البرامج الحديثة طوال الوقت ونادرًا ما تنفذ وحدة المعالجة المركزية أكثر من عشرة تعليمات متجاورة بدون تفرع. تأتي تعليمات التفرع من عناصر البرمجة مثل عبارات if و for-loops و return-statement. تُستخدم جميعها لمقاطعة تنفيذ البرنامج والتبديل إلى جزء مختلف من الكود. هناك أيضًا تعليمات القفز وهي تعليمات التفرع التي يتم اتخاذها دائمًا.
تعتبر الفروع الشرطية صعبة بشكل خاص بالنسبة لوحدة المعالجة المركزية لأنها قد تنفذ تعليمات متعددة في وقت واحد وقد لا تحدد نتيجة التفرع إلا بعد أن يبدأ في التعليمات اللاحقة.
لفهم سبب هذه المشكلة تمامًا، سنحتاج إلى تحويل آخر والتحدث عن خطوط الأنابيب. قد تستغرق كل خطوة في دورة التعليمات بضع دورات حتى تكتمل. هذا يعني أنه أثناء إحضار التعليمات، ستظل وحدة ALU في وضع الخمول. لزيادة كفاءة وحدة المعالجة المركزية إلى أقصى حد، نقسم كل مرحلة في عملية تسمى الأنابيب.
الطريقة الكلاسيكية لفهم هذا هي من خلال القياس لغسيل الملابس. لديك حملين للقيام به، ويستغرق الغسيل والتجفيف كل منهما ساعة. يمكنك وضع الحمل الأول في الغسالة ثم المجفف عند الانتهاء، ثم بدء التحميل الثاني. سيستغرق هذا أربع ساعات. ومع ذلك، إذا قمت بتقسيم العمل وبدأت في الغسيل بالحمل الثاني أثناء تجفيف الحمل الأول، فيمكنك إنجاز كلتا الحمولتين في ثلاث ساعات. في ساعة واحدة جداول تخفيض مع عدد من الأحمال لديك وعدد من الغسالات والمجففات. لا يزال الأمر يستغرق ساعتين للقيام بحمل فردي، لكن التداخل يزيد من إجمالي الإنتاجية من 0.5 حمولة/ ساعة إلى 0.75 حمولة/ ساعة.
تعليمات التفرع والقفز Branch and Jump Instructions
آخر أنواع التعليمات الثلاثة الرئيسية هو تعليمات التفرع. تقفز البرامج الحديثة طوال الوقت ونادرًا ما تنفذ وحدة المعالجة المركزية أكثر من عشرة تعليمات متجاورة بدون تفرع. تأتي تعليمات التفرع من عناصر البرمجة مثل عبارات if و for-loops و return-statement. تُستخدم جميعها لمقاطعة تنفيذ البرنامج والتبديل إلى جزء مختلف من الكود. هناك أيضًا تعليمات القفز وهي تعليمات التفرع التي يتم اتخاذها دائمًا.
تعتبر الفروع الشرطية صعبة بشكل خاص بالنسبة لوحدة المعالجة المركزية لأنها قد تنفذ تعليمات متعددة في وقت واحد وقد لا تحدد نتيجة التفرع إلا بعد أن يبدأ في التعليمات اللاحقة.
لفهم سبب هذه المشكلة تمامًا، سنحتاج إلى تحويل آخر والتحدث عن خطوط الأنابيب. قد تستغرق كل خطوة في دورة التعليمات بضع دورات حتى تكتمل. هذا يعني أنه أثناء إحضار التعليمات، ستظل وحدة ALU في وضع الخمول. لزيادة كفاءة وحدة المعالجة المركزية إلى أقصى حد، نقسم كل مرحلة في عملية تسمى الأنابيب.
الطريقة الكلاسيكية لفهم هذا هي من خلال القياس لغسيل الملابس. لديك حملين للقيام به، ويستغرق الغسيل والتجفيف كل منهما ساعة. يمكنك وضع الحمل الأول في الغسالة ثم المجفف عند الانتهاء، ثم بدء التحميل الثاني. سيستغرق هذا أربع ساعات. ومع ذلك، إذا قمت بتقسيم العمل وبدأت في الغسيل بالحمل الثاني أثناء تجفيف الحمل الأول، فيمكنك إنجاز كلتا الحمولتين في ثلاث ساعات. في ساعة واحدة جداول تخفيض مع عدد من الأحمال لديك وعدد من الغسالات والمجففات. لا يزال الأمر يستغرق ساعتين للقيام بحمل فردي، لكن التداخل يزيد من إجمالي الإنتاجية من 0.5 حمولة/ ساعة إلى 0.75 حمولة/ ساعة.
تستخدم وحدات المعالجة المركزية نفس الطريقة لتحسين سرعة نقل التعليمات. قد تحتوي وحدة المعالجة المركزية الحديثة ARM أو x86 على أكثر من 20 مرحلة من خطوط الأنابيب مما يعني أنه في أي نقطة معينة، يقوم هذا النواة بمعالجة 20+ تعليمات مختلفة في وقت واحد. كل تصميم فريد من نوعه، ولكن قسم عينة واحد قد يكون 4 دورات للجلب، و 6 دورات لفك التشفير، و 3 دورات للتنفيذ، و 7 دورات لتحديث النتائج إلى الذاكرة.
العودة إلى الفروع، آمل أن تتمكن من البدء في رؤية المشكلة. إذا لم نكن نعلم أن التعليمات هي فرع حتى الدورة العاشرة، فسنكون قد بدأنا بالفعل في تنفيذ 9 تعليمات جديدة قد تكون غير صالحة إذا تم أخذ التفرع. للتغلب على هذه المشكلة، تحتوي وحدات المعالجة المركزية (CPU) على هياكل معقدة للغاية تسمى متنبئات التفرع. يستخدمون مفاهيم مماثلة من التعلم الآلي لمحاولة تخمين ما إذا كان سيتم أخذ فرع أم لا. إن تعقيدات المتنبئين بالفروع خارج نطاق هذه المقالة، ولكن على المستوى الأساسي، فهم يتتبعون حالة الفروع السابقة لمعرفة الما إذا كان من المحتمل أن يتم أخذ تفرع قادم أم لا. يمكن أن يكون لتنبؤات الفروع الحديثة دقة 95% أو أعلى.
بمجرد معرفة نتيجة التفرع بشكل مؤكد (انتهى من تلك المرحلة من خط الأنابيب)، سيتم تحديث عداد البرنامج وستواصل وحدة المعالجة المركزية تنفيذ التعليمات التالية. إذا كان التفرع قد تم توقعه بشكل خاطئ، فستقوم وحدة المعالجة المركزية (CPU) بإلقاء جميع التعليمات بعد التفرع الذي بدأ تنفيذه عن طريق الخطأ وبدء التشغيل مرة أخرى من المكان الصحيح.
تنفيذ خارج النظام Out-Of-Order Execution
الآن بعد أن عرفنا كيفية تنفيذ الأنواع الثلاثة الأكثر شيوعًا من التعليمات، دعنا نلقي نظرة على بعض الميزات الأكثر تقدمًا لوحدة المعالجة المركزية. تقريبًا لا تنفذ جميع المعالجات الحديثة التعليمات بالترتيب الذي وردت به. يتم استخدام نموذج يسمى التنفيذ خارج الترتيب out-of-order execution لتقليل وقت التوقف عن العمل أثناء انتظار انتهاء التعليمات الأخرى.
إذا علمت وحدة المعالجة المركزية (CPU) أن التعليمات القادمة تتطلب بيانات لن تكون جاهزة في الوقت المناسب، فيمكنها تبديل ترتيب التعليمات وإحضار تعليمات مستقلة من وقت لاحق في البرنامج أثناء انتظاره. تعد إعادة ترتيب التعليمات هذه أداة قوية للغاية، ولكنها بعيدة كل البعد عن الخدعة الوحيدة التي تستخدمها وحدات المعالجة المركزية.
هناك ميزة أخرى لتحسين الأداء تسمى الجلب المسبق. إذا كنت قد حددت الوقت الذي يستغرقه إكمال تعليمات عشوائية من البداية إلى النهاية، فستجد أن الوصول إلى الذاكرة يستغرق معظم الوقت. A prefetcher هو وحدة في وحدة المعالجة المركزية التي يحاول نتطلع إلى الأمام في تعليمات المستقبل وما البيانات التي سوف تحتاجها. إذا رأى أحدها قادمًا يتطلب بيانات لم يتم تخزينها مؤقتًا في وحدة المعالجة المركزية، فسوف تصل إلى ذاكرة الوصول العشوائي وتجلب تلك البيانات إلى ذاكرة التخزين المؤقت. ومن هنا جاء اسم الجلب المسبق.
المسرعات والمستقبل Accelerators and the Future
من الميزات الرئيسية الأخرى التي بدأت في تضمينها في وحدات المعالجة المركزية (CPU) هي مسرعات المهام المحددة. هذه دوائر وظيفتها بأكملها تؤدي مهمة صغيرة واحدة بأسرع ما يمكن. قد يشمل ذلك التشفير أو ترميز الوسائط أو التعلم الآلي.
يمكن لوحدة المعالجة المركزية القيام بهذه الأشياء من تلقاء نفسها، ولكن من الأكثر فاعلية أن يكون لديك وحدة مخصصة لها. وخير مثال على ذلك هو الرسومات المدمجة مقارنة بوحدة معالجة الرسومات المخصصة. من المؤكد أن وحدة المعالجة المركزية يمكنها إجراء العمليات الحسابية اللازمة لمعالجة الرسومات، ولكن وجود وحدة مخصصة لها يوفر أداءً أفضل من حيث الحجم. مع ظهور المسرّعات، قد يشغل النواة الفعلية لوحدة المعالجة المركزية جزءًا صغيرًا فقط من الشريحة.
توضح الصورة أدناه وحدة المعالجة المركزية Intel منذ عدة سنوات. يتم شغل معظم المساحة بواسطة النوى وذاكرة التخزين المؤقت. الصورة الثانية أدناه لشريحة AMD أحدث بكثير. معظم المساحة هناك تشغلها مكونات أخرى غير النوى.
المسرعات والمستقبل Accelerators and the Future
من الميزات الرئيسية الأخرى التي بدأت في تضمينها في وحدات المعالجة المركزية (CPU) هي مسرعات المهام المحددة. هذه دوائر وظيفتها بأكملها تؤدي مهمة صغيرة واحدة بأسرع ما يمكن. قد يشمل ذلك التشفير أو ترميز الوسائط أو التعلم الآلي.
يمكن لوحدة المعالجة المركزية القيام بهذه الأشياء من تلقاء نفسها، ولكن من الأكثر فاعلية أن يكون لديك وحدة مخصصة لها. وخير مثال على ذلك هو الرسومات المدمجة مقارنة بوحدة معالجة الرسومات المخصصة. من المؤكد أن وحدة المعالجة المركزية يمكنها إجراء العمليات الحسابية اللازمة لمعالجة الرسومات، ولكن وجود وحدة مخصصة لها يوفر أداءً أفضل من حيث الحجم. مع ظهور المسرّعات، قد يشغل النواة الفعلية لوحدة المعالجة المركزية جزءًا صغيرًا فقط من الشريحة.
توضح الصورة أدناه وحدة المعالجة المركزية Intel منذ عدة سنوات. يتم شغل معظم المساحة بواسطة النوى وذاكرة التخزين المؤقت. الصورة الثانية أدناه لشريحة AMD أحدث بكثير. معظم المساحة هناك تشغلها مكونات أخرى غير النوى.
Above: the die of Intel's first generation Nehalem architecture. Note that the cores and Cache take up the majority of the space.
Above: The die of an AMD SoC showing the large amount of space devoted to accelerators and external interfaces
الذهاب لتعدد النواة Going Multicore
الميزة الرئيسية الأخيرة التي يجب تغطيتها هي كيف يمكننا توصيل مجموعة من وحدات المعالجة المركزية الفردية معًا لتشكيل وحدة معالجة مركزية متعددة النواة. الأمر ليس بسيطًا مثل مجرد وضع نسخ متعددة من تصميم النواة الواحدة التي تحدثنا عنها سابقًا. تمامًا كما لا توجد طريقة سهلة لتحويل برنامج ذو مؤشر ترابط واحد إلى برنامج متعدد الخيوط، ينطبق نفس المفهوم على الأجهزة. تأتي القضايا من التبعية بين النوى.
بالنسبة لتصميم رباعي النواة، على سبيل المثال، يجب أن تكون وحدة المعالجة المركزية قادرة على إصدار التعليمات أسرع 4 مرات. يحتاج أيضًا إلى أربع واجهات منفصلة للذاكرة. مع وجود كيانات متعددة تعمل على نفس أجزاء البيانات المحتملة، يجب حل مشكلات مثل التماسك والاتساق coherence and consistency. إذا كانت نواتان كلاهما يعالجان التعليمات التي تستخدم نفس البيانات، فكيف يعرفان من لديه القيمة الصحيحة؟ ماذا لو قامت نواة واحدة بتعديل البيانات لكنها لم تصل إلى النواة الأخرى في الوقت المناسب لتنفيذها؟ نظرًا لأن لديهم ذاكرة تخزين مؤقت منفصلة قد تخزن بيانات متداخلة، يجب استخدام خوارزميات ووحدات تحكم معقدة لإزالة هذه التعارضات.
يعد التنبؤ الصحيح بالتفرع مهمًا للغاية أيضًا مع زيادة عدد النوى في وحدة المعالجة المركزية. كلما زاد عدد النوى التي تنفذ التعليمات في وقت واحد، زادت احتمالية أن يقوم أحدهم بمعالجة تعليمات التفرع. هذا يعني أن تدفق التعليمات قد يتغير في أي وقت.
عادةً ما تقوم النوى المنفصلة بمعالجة تدفقات التعليمات من خيوط مختلفة. هذا يساعد على تقليل الاعتماد بين النوى. لهذا السبب إذا قمت بفحص مدير المهام، فغالبًا ما ترى نواة واحدة تعمل بجد والبقية تعمل بجد. العديد من البرامج غير مصممة لتعدد العمليات. قد تكون هناك أيضًا حالات معينة يكون من الأفضل فيها أن يكون هناك نواة واحدة تقوم بالعمل بدلاً من دفع الغرامات العامة لمحاولة تقسيم العمل.
التصميم المادي Physical Design
ركزت معظم هذه المقالة على التصميم المعماري لوحدة المعالجة المركزية نظرًا لأن هذا هو المكان الذي يوجد فيه معظم التعقيد. ومع ذلك، يجب إنشاء كل هذا في العالم الحقيقي وهذا يضيف مستوى آخر من التعقيد.
من أجل مزامنة جميع المكونات في جميع أنحاء المعالج، يتم استخدام إشارة الساعة. تعمل المعالجات الحديثة عادةً بين 3.0 جيجاهرتز و 5.0 جيجاهرتز، ولم يتغير ذلك على ما يبدو في العقد الماضي. في كل دورة من هذه الدورات، يتم تشغيل وإيقاف بلايين الترانزستورات داخل رقاقة.
تعتبر الساعات ضرورية لضمان أنه مع تقدم كل مرحلة من مراحل خط الأنابيب، تظهر جميع القيم في الوقت المناسب. تحدد الساعة عدد التعليمات التي يمكن لوحدة المعالجة المركزية معالجتها في الثانية. ستؤدي زيادة ترددها من خلال رفع تردد التشغيل إلى جعل الشريحة أسرع، ولكنها ستزيد أيضًا من استهلاك الطاقة وإخراج الحرارة.
الذهاب لتعدد النواة Going Multicore
الميزة الرئيسية الأخيرة التي يجب تغطيتها هي كيف يمكننا توصيل مجموعة من وحدات المعالجة المركزية الفردية معًا لتشكيل وحدة معالجة مركزية متعددة النواة. الأمر ليس بسيطًا مثل مجرد وضع نسخ متعددة من تصميم النواة الواحدة التي تحدثنا عنها سابقًا. تمامًا كما لا توجد طريقة سهلة لتحويل برنامج ذو مؤشر ترابط واحد إلى برنامج متعدد الخيوط، ينطبق نفس المفهوم على الأجهزة. تأتي القضايا من التبعية بين النوى.
بالنسبة لتصميم رباعي النواة، على سبيل المثال، يجب أن تكون وحدة المعالجة المركزية قادرة على إصدار التعليمات أسرع 4 مرات. يحتاج أيضًا إلى أربع واجهات منفصلة للذاكرة. مع وجود كيانات متعددة تعمل على نفس أجزاء البيانات المحتملة، يجب حل مشكلات مثل التماسك والاتساق coherence and consistency. إذا كانت نواتان كلاهما يعالجان التعليمات التي تستخدم نفس البيانات، فكيف يعرفان من لديه القيمة الصحيحة؟ ماذا لو قامت نواة واحدة بتعديل البيانات لكنها لم تصل إلى النواة الأخرى في الوقت المناسب لتنفيذها؟ نظرًا لأن لديهم ذاكرة تخزين مؤقت منفصلة قد تخزن بيانات متداخلة، يجب استخدام خوارزميات ووحدات تحكم معقدة لإزالة هذه التعارضات.
يعد التنبؤ الصحيح بالتفرع مهمًا للغاية أيضًا مع زيادة عدد النوى في وحدة المعالجة المركزية. كلما زاد عدد النوى التي تنفذ التعليمات في وقت واحد، زادت احتمالية أن يقوم أحدهم بمعالجة تعليمات التفرع. هذا يعني أن تدفق التعليمات قد يتغير في أي وقت.
عادةً ما تقوم النوى المنفصلة بمعالجة تدفقات التعليمات من خيوط مختلفة. هذا يساعد على تقليل الاعتماد بين النوى. لهذا السبب إذا قمت بفحص مدير المهام، فغالبًا ما ترى نواة واحدة تعمل بجد والبقية تعمل بجد. العديد من البرامج غير مصممة لتعدد العمليات. قد تكون هناك أيضًا حالات معينة يكون من الأفضل فيها أن يكون هناك نواة واحدة تقوم بالعمل بدلاً من دفع الغرامات العامة لمحاولة تقسيم العمل.
التصميم المادي Physical Design
ركزت معظم هذه المقالة على التصميم المعماري لوحدة المعالجة المركزية نظرًا لأن هذا هو المكان الذي يوجد فيه معظم التعقيد. ومع ذلك، يجب إنشاء كل هذا في العالم الحقيقي وهذا يضيف مستوى آخر من التعقيد.
من أجل مزامنة جميع المكونات في جميع أنحاء المعالج، يتم استخدام إشارة الساعة. تعمل المعالجات الحديثة عادةً بين 3.0 جيجاهرتز و 5.0 جيجاهرتز، ولم يتغير ذلك على ما يبدو في العقد الماضي. في كل دورة من هذه الدورات، يتم تشغيل وإيقاف بلايين الترانزستورات داخل رقاقة.
تعتبر الساعات ضرورية لضمان أنه مع تقدم كل مرحلة من مراحل خط الأنابيب، تظهر جميع القيم في الوقت المناسب. تحدد الساعة عدد التعليمات التي يمكن لوحدة المعالجة المركزية معالجتها في الثانية. ستؤدي زيادة ترددها من خلال رفع تردد التشغيل إلى جعل الشريحة أسرع، ولكنها ستزيد أيضًا من استهلاك الطاقة وإخراج الحرارة.
الحرارة هي أسوأ عدو لوحدة المعالجة المركزية. مع تسخين الإلكترونيات الرقمية، يمكن أن تبدأ الترانزستورات المجهرية في التدهور. يمكن أن يؤدي ذلك إلى تلف رقاقة إذا لم تتم إزالة الحرارة. هذا هو السبب في أن جميع وحدات المعالجة المركزية تأتي مع موزعات الحرارة. قد يشغل قالب السيليكون الفعلي لوحدة المعالجة المركزية 20% فقط من مساحة سطح الجهاز المادي. تسمح زيادة البصمة بتوزيع الحرارة بشكل متساوٍ إلى غرفة التبريد. كما أنه يسمح لمزيد من الدبابيس للتفاعل مع المكونات الخارجية.
يمكن أن تحتوي وحدات المعالجة المركزية الحديثة على ألف أو أكثر من دبابيس الإدخال والإخراج في الخلف. قد تحتوي شريحة الهاتف المحمول على بضع مئات من الدبابيس فقط لأن معظم أجزاء الحوسبة موجودة داخل الشريحة. بغض النظر عن التصميم، يتم تخصيص حوالي نصفهم لتوصيل الطاقة والباقي يستخدم اتصالات البيانات. يتضمن ذلك الاتصال بذاكرة الوصول العشوائي ومجموعة الشرائح والتخزين وأجهزة PCIe والمزيد. مع وحدات المعالجة المركزية عالية الأداء التي تسحب مائة أمبير أو أكثر عند التحميل الكامل، فإنها تحتاج إلى مئات المسامير لتوزيع السحب الحالي بالتساوي. عادة ما تكون المسامير مطلية بالذهب لتحسين التوصيل الكهربائي. يستخدم المصنعون المختلفون ترتيبات مختلفة من المسامير عبر خطوط إنتاجهم العديدة.
وضع كل ذلك مع مثال Putting It All Together with an Example
لإنهاء الأمور، سنلقي نظرة سريعة على تصميم وحدة المعالجة المركزية Intel Core 2. يعود هذا إلى عام 2006، لذلك قد تكون بعض الأجزاء قديمة، ولكن لا تتوفر تفاصيل عن التصميمات الأحدث.
بدءًا من الأعلى، لدينا ذاكرة التخزين المؤقت للتعليمات و ITLB. يتم استخدام الترجمة Lookaside Buffer (TLB) لمساعدة وحدة المعالجة المركزية على معرفة مكان في الذاكرة للعثور على التعليمات التي تحتاجها. يتم تخزين هذه التعليمات في ذاكرة التخزين المؤقت لتعليمات L1 ثم يتم إرسالها إلى وحدة فك التشفير المسبق. تعتبر بنية x86 معقدة للغاية وكثيفة، لذا هناك العديد من الخطوات لفك التشفير. وفي الوقت نفسه، يتطلع كل من متنبئ التفرع والجلب المسبق إلى أي مشكلات محتملة ناتجة عن التعليمات الواردة.
يمكن أن تحتوي وحدات المعالجة المركزية الحديثة على ألف أو أكثر من دبابيس الإدخال والإخراج في الخلف. قد تحتوي شريحة الهاتف المحمول على بضع مئات من الدبابيس فقط لأن معظم أجزاء الحوسبة موجودة داخل الشريحة. بغض النظر عن التصميم، يتم تخصيص حوالي نصفهم لتوصيل الطاقة والباقي يستخدم اتصالات البيانات. يتضمن ذلك الاتصال بذاكرة الوصول العشوائي ومجموعة الشرائح والتخزين وأجهزة PCIe والمزيد. مع وحدات المعالجة المركزية عالية الأداء التي تسحب مائة أمبير أو أكثر عند التحميل الكامل، فإنها تحتاج إلى مئات المسامير لتوزيع السحب الحالي بالتساوي. عادة ما تكون المسامير مطلية بالذهب لتحسين التوصيل الكهربائي. يستخدم المصنعون المختلفون ترتيبات مختلفة من المسامير عبر خطوط إنتاجهم العديدة.
وضع كل ذلك مع مثال Putting It All Together with an Example
لإنهاء الأمور، سنلقي نظرة سريعة على تصميم وحدة المعالجة المركزية Intel Core 2. يعود هذا إلى عام 2006، لذلك قد تكون بعض الأجزاء قديمة، ولكن لا تتوفر تفاصيل عن التصميمات الأحدث.
بدءًا من الأعلى، لدينا ذاكرة التخزين المؤقت للتعليمات و ITLB. يتم استخدام الترجمة Lookaside Buffer (TLB) لمساعدة وحدة المعالجة المركزية على معرفة مكان في الذاكرة للعثور على التعليمات التي تحتاجها. يتم تخزين هذه التعليمات في ذاكرة التخزين المؤقت لتعليمات L1 ثم يتم إرسالها إلى وحدة فك التشفير المسبق. تعتبر بنية x86 معقدة للغاية وكثيفة، لذا هناك العديد من الخطوات لفك التشفير. وفي الوقت نفسه، يتطلع كل من متنبئ التفرع والجلب المسبق إلى أي مشكلات محتملة ناتجة عن التعليمات الواردة.
من هناك، يتم إرسال التعليمات إلى قائمة انتظار التعليمات. استرجع كيف يسمح التصميم خارج الطلب لوحدة المعالجة المركزية بتنفيذ التعليمات واختيار أنسب التعليمات لتنفيذه. تحتوي قائمة الانتظار هذه على الإرشادات الحالية التي تفكر فيها وحدة المعالجة المركزية. بمجرد أن تعرف وحدة المعالجة المركزية أي التعليمات ستكون الأفضل في التنفيذ، يتم فك تشفيرها إلى عمليات صغيرة. في حين أن التعليمات قد تحتوي على مهمة معقدة لوحدة المعالجة المركزية، فإن العمليات الدقيقة هي مهام دقيقة يسهل تفسيرها بواسطة وحدة المعالجة المركزية.
تذهب هذه التعليمات بعد ذلك إلى جدول الاسم المستعار للتسجيل و ROB ومحطة الحجز. إن الوظيفة الدقيقة لهذه المكونات الثلاثة معقدة بعض الشيء (فكر في دورة جامعية على مستوى الدراسات العليا)، لكنها تُستخدم في عملية خارج الترتيب للمساعدة في إدارة التبعيات بين التعليمات.
يحتوي "النواة" الفردية في الواقع على العديد من وحدات ALU ومنافذ الذاكرة. يتم وضع العمليات الواردة في محطة الحجز حتى يتوفر منفذ ALU أو ذاكرة للاستخدام. بمجرد توفر المكون المطلوب، ستتم معالجة التعليمات بمساعدة ذاكرة التخزين المؤقت لبيانات L1. سيتم تخزين نتائج الإخراج وستصبح وحدة المعالجة المركزية جاهزة الآن للبدء في التعليمات التالية. هذا عن ذلك!
بينما لم يكن المقصود من هذه المقالة أن تكون دليلًا نهائيًا لكيفية عمل كل وحدة معالجة مركزية بالضبط، إلا أنها يجب أن تعطيك فكرة جيدة عن أعمالها الداخلية وتعقيداتها. بصراحة، لا أحد خارج AMD و Intel يعرف بالفعل كيف تعمل وحدات المعالجة المركزية الخاصة بهم. يمثل كل قسم من هذه المقالة مجالًا كاملاً للبحث والتطوير، لذا فإن المعلومات المقدمة هنا تخدش السطح فقط.
تذهب هذه التعليمات بعد ذلك إلى جدول الاسم المستعار للتسجيل و ROB ومحطة الحجز. إن الوظيفة الدقيقة لهذه المكونات الثلاثة معقدة بعض الشيء (فكر في دورة جامعية على مستوى الدراسات العليا)، لكنها تُستخدم في عملية خارج الترتيب للمساعدة في إدارة التبعيات بين التعليمات.
يحتوي "النواة" الفردية في الواقع على العديد من وحدات ALU ومنافذ الذاكرة. يتم وضع العمليات الواردة في محطة الحجز حتى يتوفر منفذ ALU أو ذاكرة للاستخدام. بمجرد توفر المكون المطلوب، ستتم معالجة التعليمات بمساعدة ذاكرة التخزين المؤقت لبيانات L1. سيتم تخزين نتائج الإخراج وستصبح وحدة المعالجة المركزية جاهزة الآن للبدء في التعليمات التالية. هذا عن ذلك!
بينما لم يكن المقصود من هذه المقالة أن تكون دليلًا نهائيًا لكيفية عمل كل وحدة معالجة مركزية بالضبط، إلا أنها يجب أن تعطيك فكرة جيدة عن أعمالها الداخلية وتعقيداتها. بصراحة، لا أحد خارج AMD و Intel يعرف بالفعل كيف تعمل وحدات المعالجة المركزية الخاصة بهم. يمثل كل قسم من هذه المقالة مجالًا كاملاً للبحث والتطوير، لذا فإن المعلومات المقدمة هنا تخدش السطح فقط.