شرح وحدة المعالجة المركزية الخاصة بالكمبيوتر (CPU)

وحدة المعالجة المركزية (CPU) هي الدوائر الإلكترونية داخل الكمبيوتر التي تنفذ تعليمات برنامج الكمبيوتر عن طريق إجراء العمليات الحسابية والمنطقية والتحكم والإدخال / الإخراج (I / O) الأساسية المحددة في التعليمات. تم استخدام المصطلح في صناعة الكمبيوتر على الأقل منذ أوائل الستينيات. تقليديًا ، يشير مصطلح "وحدة المعالجة المركزية" إلى المعالج ، وبشكل أكثر تحديدًا إلى وحدة المعالجة ووحدة التحكم (CU) ، ويميز هذه العناصر الأساسية للكمبيوتر عن المكونات الخارجية مثل الذاكرة الرئيسية ودائرة الإدخال / الإخراج.
لقد تغير شكل وتصميم وتنفيذ وحدات المعالجة المركزية على مدار تاريخها ، لكن تشغيلها الأساسي لم يتغير تقريبًا. تشمل المكونات الرئيسية لوحدة المعالجة المركزية وحدة المنطق الحسابي (ALU) التي تقوم بإجراء العمليات الحسابية والمنطقية ، وسجلات المعالج التي تزود المعاملات إلى ALU وتخزن نتائج عمليات ALU ، ووحدة التحكم التي تجلب التعليمات من الذاكرة و "تنفذها" من خلال توجيه العمليات المنسقة لـ ALU والسجلات والمكونات الأخرى.

معظم وحدات المعالجة المركزية الحديثة هي معالجات دقيقة ، مما يعني أنها موجودة في شريحة دائرة متكاملة واحدة (IC). قد يحتوي IC الذي يحتوي على وحدة المعالجة المركزية أيضًا على ذاكرة وواجهات طرفية ومكونات أخرى للكمبيوتر ؛ تسمى هذه الأجهزة المتكاملة بشكل مختلف المتحكمات الدقيقة أو الأنظمة الموجودة على شريحة (SoC). تستخدم بعض أجهزة الكمبيوتر معالجًا متعدد النواة ، وهو عبارة عن شريحة واحدة تحتوي على وحدتي CPU أو أكثر تسمى "مراكز" ؛ في هذا السياق ، يشار أحيانًا إلى الرقائق الفردية باسم "المقابس". تحتوي معالجات الصفيف أو معالجات المتجهات على معالجات متعددة تعمل بالتوازي ، مع عدم اعتبار أي وحدة مركزية.

 

 

تاريخ نشأة وحدة المعالجة المركزية (CPU)

كان لابد من إعادة توصيل أجهزة الكمبيوتر مثل ENIAC ماديًا لأداء مهام مختلفة ، مما تسبب في تسمية هذه الأجهزة "بأجهزة الكمبيوتر ذات البرامج الثابتة". نظرًا لأن مصطلح "وحدة المعالجة المركزية" يُعرَّف عمومًا على أنه جهاز لتنفيذ البرامج (برنامج الكمبيوتر) ، فإن أقدم الأجهزة التي يمكن تسميتها بحق وحدات المعالجة المركزية جاءت مع ظهور كمبيوتر البرنامج المخزن.

كانت فكرة جهاز الكمبيوتر المخزن موجودة بالفعل في تصميم J. Presper Eckert و ENIAC لجون ويليام موشلي ، ولكن تم حذفها في البداية بحيث يمكن الانتهاء منها في وقت قريب. في 30 يونيو 1945 ، قبل إنشاء ENIAC ، وزع عالم الرياضيات جون فون نيومان الورقة بعنوان المسودة الأولى لتقرير عن EDVAC. كان المخطط التفصيلي لجهاز الكمبيوتر المخزن الذي سيتم الانتهاء منه في نهاية المطاف في أغسطس 1949. تم تصميم EDVAC لأداء عدد معين من التعليمات (أو العمليات) من أنواع مختلفة. بشكل ملحوظ ، كان من المقرر تخزين البرامج المكتوبة لـ EDVAC في ذاكرة كمبيوتر عالية السرعة بدلاً من تحديدها بواسطة الأسلاك المادية للكمبيوتر. لقد تغلب هذا على قيود شديدة على ENIAC ، والتي كانت الوقت والجهد الكبيرين اللازمين لإعادة تكوين الكمبيوتر لأداء مهمة جديدة. مع تصميم von Neumann ، يمكن تغيير البرنامج الذي يشغله EDVAC ببساطة عن طريق تغيير محتويات الذاكرة. EDVAC ، مع ذلك ، لم يكن أول كمبيوتر برنامج مخزن ؛ شغلت آلة مانشستر التجريبية الصغيرة الحجم ، وهي نموذج أولي صغير للكمبيوتر المخزن ، برنامجها الأول في 21 يونيو 1948 وشغلت مانشستر مارك 1 أول برنامج لها في ليلة 16-17 يونيو 1949.

كانت وحدات المعالجة المركزية المبكرة عبارة عن تصميمات مخصصة تُستخدم كجزء من كمبيوتر أكبر وأحيانًا مميز. ومع ذلك ، فإن هذه الطريقة في تصميم وحدات المعالجة المركزية المخصصة لتطبيق معين قد أفسحت المجال إلى حد كبير لتطوير معالجات متعددة الأغراض يتم إنتاجها بكميات كبيرة. بدأ هذا التوحيد القياسي في عصر حواسيب الترانزستور المنفصلة وأجهزة الكمبيوتر الصغيرة ، وقد تسارعت بسرعة مع تعميم الدائرة المتكاملة (IC). سمح IC بتصميم وتصنيع وحدات المعالجة المركزية المعقدة بشكل متزايد لتفاوتات في حدود نانومتر. أدى كل من تصغير وحدات المعالجة المركزية (CPU) وتوحيدها إلى زيادة وجود الأجهزة الرقمية في الحياة الحديثة إلى ما هو أبعد من التطبيق المحدود لأجهزة الحوسبة المخصصة. تظهر المعالجات الدقيقة الحديثة في الأجهزة الإلكترونية التي تتراوح من السيارات إلى الهواتف المحمولة ، وأحيانًا حتى في ألعاب الأطفال.

بينما يُنسب الفضل إلى von Neumann في الغالب في تصميم كمبيوتر البرنامج المخزن بسبب تصميمه لـ EDVAC ، وأصبح التصميم معروفًا باسم هندسة von Neumann ، فقد اقترح آخرون قبله ، مثل Konrad Zuse ، أفكارًا مماثلة ونفذوها. استخدمت أيضًا ما يسمى بهندسة Harvard Mark I ، والتي اكتملت قبل EDVAC ، تصميم برنامج مخزن باستخدام شريط ورقي مثقوب بدلاً من الذاكرة الإلكترونية. يتمثل الاختلاف الرئيسي بين معماريتي von Neumann و Harvard في أن الأخير يفصل بين تخزين ومعالجة تعليمات وبيانات وحدة المعالجة المركزية ، بينما يستخدم الأول نفس مساحة الذاكرة لكليهما. معظم وحدات المعالجة المركزية الحديثة هي أساسًا von Neumann في التصميم ، ولكن يتم أيضًا رؤية وحدات المعالجة المركزية مع بنية Harvard ، خاصة في التطبيقات المضمنة ؛ على سبيل المثال ، المتحكمات الدقيقة Atmel AVR هي معالجات معمارية من جامعة هارفارد.

كانت المرحلات والأنابيب المفرغة (الأنابيب الحرارية) تستخدم بشكل شائع كعناصر تبديل ؛ يتطلب الكمبيوتر المفيد آلاف أو عشرات الآلاف من أجهزة التحويل. السرعة الإجمالية للنظام تعتمد على سرعة المفاتيح. تميل أجهزة الكمبيوتر الأنبوبية مثل EDVAC إلى ثماني ساعات في المتوسط ​​بين حالات الفشل ، في حين أن أجهزة الكمبيوتر مثل (أبطأ ، ولكن قبل ذلك) Harvard Mark I فشلت نادرًا جدًا. في النهاية ، أصبحت وحدات المعالجة المركزية (CPU) القائمة على الأنبوب مهيمنة لأن مزايا السرعة الكبيرة الممنوحة عمومًا تفوق مشاكل الموثوقية. عملت معظم وحدات المعالجة المركزية المتزامنة المبكرة هذه بمعدلات منخفضة على مدار الساعة مقارنة بالتصاميم الإلكترونية الدقيقة الحديثة (انظر أدناه لمناقشة معدل الساعة). كانت ترددات إشارة الساعة التي تتراوح من 100 كيلو هرتز إلى 4 ميجا هرتز شائعة جدًا في هذا الوقت ، وكانت محدودة إلى حد كبير بسرعة أجهزة التبديل التي تم إنشاؤها باستخدامها.

 

وحدات المعالجة المركزية الترانزستور

زاد تعقيد تصميم وحدات المعالجة المركزية (CPU) حيث سهلت التقنيات المختلفة بناء أجهزة إلكترونية أصغر حجمًا وأكثر موثوقية. جاء التحسن الأول مع ظهور الترانزستور. لم تعد وحدات المعالجة المركزية (CPU) ذات الترانزستور خلال الخمسينيات والستينيات من القرن الماضي بحاجة إلى أن تُبنى من عناصر تحويل ضخمة وغير موثوقة وهشة مثل الأنابيب المفرغة والمرحلات. مع هذا التحسين ، تم بناء وحدات المعالجة المركزية الأكثر تعقيدًا وموثوقية في واحد أو عدة لوحات دوائر مطبوعة تحتوي على مكونات منفصلة (فردية).

في عام 1964 ، قدمت شركة IBM بنية الكمبيوتر System / 360 الخاصة بها والتي تم استخدامها في سلسلة من أجهزة الكمبيوتر القادرة على تشغيل نفس البرامج بسرعة وأداء مختلفين. كان هذا مهمًا في وقت كانت فيه معظم أجهزة الكمبيوتر الإلكترونية غير متوافقة مع بعضها البعض ، حتى تلك التي صنعتها نفس الشركة المصنعة. لتسهيل هذا التحسين ، استخدمت شركة IBM مفهوم البرنامج المصغر (غالبًا ما يطلق عليه "الرمز الصغير") ، والذي لا يزال يرى استخدامًا واسع النطاق في وحدات المعالجة المركزية الحديثة. كانت بنية System / 360 شائعة جدًا لدرجة أنها هيمنت على سوق أجهزة الكمبيوتر المركزية لعقود من الزمن وتركت إرثًا لا يزال مستمرًا بواسطة أجهزة كمبيوتر حديثة مماثلة مثل IBM zSeries. في عام 1965 ، قدمت شركة Digital Equipment Corporation (DEC) كمبيوترًا مؤثرًا آخر يستهدف الأسواق العلمية والبحثية ، وهو PDP-8.

تتمتع أجهزة الكمبيوتر القائمة على الترانزستور بالعديد من المزايا المتميزة عن سابقاتها. بصرف النظر عن تسهيل زيادة الموثوقية وانخفاض استهلاك الطاقة ، سمحت الترانزستورات أيضًا لوحدات المعالجة المركزية بالعمل بسرعات أعلى بكثير بسبب قصر وقت التبديل للترانزستور مقارنةً بالأنبوب أو المرحل. بفضل كل من الموثوقية المتزايدة وكذلك السرعة المتزايدة بشكل كبير لعناصر التبديل (والتي كانت تقريبًا ترانزستورات حصرية بحلول هذا الوقت) ، تم الحصول على معدلات ساعة وحدة المعالجة المركزية في عشرات الميجاهرتز خلال هذه الفترة. بالإضافة إلى ذلك ، بينما كان الترانزستور المنفصل ووحدات المعالجة المركزية IC قيد الاستخدام الكثيف ، بدأت تظهر تصميمات جديدة عالية الأداء مثل معالجات متجه SIMD (تعليمات فردية متعددة البيانات). أدت هذه التصميمات التجريبية المبكرة لاحقًا إلى ظهور عصر أجهزة الكمبيوتر العملاقة المتخصصة مثل تلك التي صنعتها شركة Cray Inc.

 

وحدات المعالجة المركزية المتكاملة صغيرة الحجم

خلال هذه الفترة ، تم تطوير طريقة لتصنيع العديد من الترانزستورات المترابطة في مساحة مضغوطة. سمحت الدائرة المتكاملة (IC) بتصنيع عدد كبير من الترانزستورات على قالب مفرد قائم على أشباه الموصلات ، أو "رقاقة". في البداية ، تم تصغير الدوائر الرقمية الأساسية غير المتخصصة فقط مثل بوابات NOR إلى دوائر متكاملة. عادةً ما يشار إلى وحدات المعالجة المركزية (CPU) القائمة على "وحدات البناء الأساسية" هذه على أنها أجهزة "تكامل على نطاق صغير" (SSI). تحتوي SSI ICs ، مثل تلك المستخدمة في كمبيوتر التوجيه Apollo ، عادةً على عدد قليل من الترانزستورات. يتطلب بناء وحدة معالجة مركزية كاملة من وحدات SSI ICs آلاف الرقائق الفردية ، لكنها لا تزال تستهلك مساحة وطاقة أقل بكثير من تصميمات الترانزستور المنفصلة السابقة.

استخدمت متابعة نظام IBM / 370 لنظام System / 360 SSI ICs بدلاً من وحدات الترانزستور المنفصلة لتكنولوجيا المنطق الصلبة. كما تحول PDP-8 / I و KI10 PDP-10 الخاص بـ DEC من الترانزستورات الفردية المستخدمة بواسطة PDP-8 و PDP-10 إلى SSI ICs ، وتم إنشاء خط PDP-11 الشهير للغاية في الأصل باستخدام SSI ICs ولكن تم تنفيذه في النهاية باستخدام LSI المكونات بمجرد أن تصبح هذه عملية.

 

وحدات المعالجة المركزية المتكاملة واسعة النطاق

نشر Lee Boysel مقالات مؤثرة ، بما في ذلك "بيان" عام 1967 ، الذي وصف كيفية بناء ما يعادل جهاز كمبيوتر كبير 32 بت من عدد صغير نسبيًا من دوائر التكامل واسعة النطاق (LSI). في ذلك الوقت ، كانت الطريقة الوحيدة لبناء شرائح LSI ، وهي رقائق ذات مائة بوابة أو أكثر ، هي بناؤها باستخدام عملية MOS (أي منطق PMOS أو منطق NMOS أو منطق CMOS). ومع ذلك ، استمرت بعض الشركات في بناء المعالجات من الرقائق ثنائية القطب لأن ترانزستورات الوصلة ثنائية القطب كانت أسرع بكثير من رقائق MOS ؛ على سبيل المثال ، قامت Datapoint ببناء معالجات من رقائق TTL حتى أوائل الثمانينيات.

أراد الأشخاص الذين يبنون أجهزة كمبيوتر عالية السرعة أن تكون سريعة ، لذلك في السبعينيات قاموا ببناء وحدات المعالجة المركزية من التكامل الصغير (SSI) والتكامل المتوسط ​​النطاق (MSI) 7400 بوابات TTL. في ذلك الوقت ، كانت MOS ICs بطيئة جدًا لدرجة أنها كانت تعتبر مفيدة فقط في عدد قليل من التطبيقات المتخصصة التي تتطلب طاقة منخفضة.

مع تقدم التكنولوجيا الإلكترونية الدقيقة ، تم وضع عدد متزايد من الترانزستورات على الدوائر المتكاملة ، مما قلل من كمية الدوائر المتكاملة الفردية اللازمة لوحدة المعالجة المركزية الكاملة. زاد MSI و LSI ICs من أعداد الترانزستور إلى المئات ، ثم الآلاف. بحلول عام 1968 ، تم تقليل عدد الدوائر المتكاملة المطلوبة لبناء وحدة معالجة مركزية كاملة إلى 24 وحدة متكاملة من ثمانية أنواع مختلفة ، مع احتواء كل دائرة متكاملة على ما يقرب من 1000 وحدة MOSFET. في تناقض صارخ مع أسلافها من SSI و MSI ، احتوى أول تطبيق LSI لـ PDP-11 على وحدة معالجة مركزية تتكون من أربع دوائر LSI متكاملة فقط.

 

المعالجات الدقيقة (Microprocessors)

في السبعينيات من القرن الماضي ، غيرت الاختراعات الأساسية التي قام بها Federico Faggin (Silicon Gate MOS ICs ذات البوابات ذاتية المحاذاة جنبًا إلى جنب مع منهجية التصميم المنطقي العشوائي الجديدة) تصميم وتنفيذ وحدات المعالجة المركزية إلى الأبد. منذ تقديم أول معالج دقيق متوفر تجاريًا (Intel 4004) في عام 1970 ، وأول معالج دقيق يستخدم على نطاق واسع (Intel 8080) في عام 1974 ، تجاوزت هذه الفئة من وحدات المعالجة المركزية تقريبًا جميع طرق تنفيذ وحدة المعالجة المركزية الأخرى. أطلقت الشركات المصنعة للحواسيب الكبيرة والحواسيب الصغيرة في ذلك الوقت برامج تطوير خاصة بها لترقية بنيات الكمبيوتر القديمة ، وأنتجت في النهاية مجموعة تعليمات معالجات دقيقة متوافقة مع الإصدارات السابقة مع أجهزتهم وبرامجهم الأقدم. بالاقتران مع ظهور الكمبيوتر الشخصي في كل مكان ونجاحه في نهاية المطاف ، يتم تطبيق مصطلح وحدة المعالجة المركزية الآن بشكل حصري تقريبًا على المعالجات الدقيقة. يمكن دمج العديد من وحدات المعالجة المركزية (النوى المشار إليها) في شريحة معالجة واحدة.

تم تنفيذ الأجيال السابقة من وحدات المعالجة المركزية كمكونات منفصلة والعديد من الدوائر المتكاملة الصغيرة (ICs) على واحد أو أكثر من لوحات الدوائر. من ناحية أخرى ، المعالجات الدقيقة هي وحدات المعالجة المركزية المصنعة على عدد صغير جدًا من الدوائر المتكاملة ؛ عادة واحدة فقط. الحجم الكلي لوحدة المعالجة المركزية (CPU) الأصغر ، نتيجة لتطبيقه على قالب واحد ، يعني وقت تبديل أسرع بسبب العوامل المادية مثل انخفاض السعة الطفيلية للبوابة. وقد سمح ذلك للمعالجات الدقيقة المتزامنة بأن يكون لها معدلات على مدار الساعة تتراوح من عشرات الميجاهرتز إلى عدة جيجاهيرتز. بالإضافة إلى ذلك ، مع زيادة القدرة على إنشاء ترانزستورات صغيرة للغاية على IC ، زاد تعقيد وعدد الترانزستورات في وحدة معالجة مركزية واحدة عدة مرات. يصف قانون مور هذا الاتجاه الملحوظ على نطاق واسع ، والذي أثبت أنه مؤشر دقيق إلى حد ما لنمو وحدة المعالجة المركزية (وغيرها من التعقيدات).

في حين أن التعقيد والحجم والبناء والشكل العام لوحدات المعالجة المركزية قد تغير بشكل كبير منذ عام 1950 ، فمن الملاحظ أن التصميم الأساسي والوظيفة لم يتغير كثيرًا على الإطلاق. يمكن وصف معظم وحدات المعالجة المركزية الشائعة اليوم بدقة كبيرة على أنها آلات برنامج von Neumann المخزنة. مع استمرار سريان قانون مور المذكور أعلاه ، نشأت مخاوف بشأن حدود تقنية ترانزستور الدائرة المتكاملة. يتسبب التصغير الشديد للبوابات الإلكترونية في أن تصبح تأثيرات ظواهر مثل الهجرة الكهربائية والتسرب تحت العتبة أكثر أهمية. هذه المخاوف الجديدة هي من بين العديد من العوامل التي دفعت الباحثين إلى التحقيق في طرق جديدة للحوسبة مثل الكمبيوتر الكمي ، وكذلك لتوسيع استخدام التوازي والطرق الأخرى التي تزيد من فائدة نموذج فون نيومان الكلاسيكي.

 

العملية الأساسية لمعظم وحدات المعالجة المركزية

تتمثل العملية الأساسية لمعظم وحدات المعالجة المركزية ، بغض النظر عن الشكل المادي الذي تتخذه ، في تنفيذ سلسلة من التعليمات المخزنة تسمى البرنامج. يتم الاحتفاظ بالتعليمات التي سيتم تنفيذها في نوع من ذاكرة الكمبيوتر. تتبع جميع وحدات المعالجة المركزية تقريبًا خطوات الجلب وفك الشفرة وتنفيذها في تشغيلها ، والتي تُعرف مجتمعة باسم دورة التعليمات.

بعد تنفيذ التعليمات ، تتكرر العملية بأكملها ، مع دورة التعليمات التالية عادةً ما تجلب التعليمات التالية في التسلسل بسبب القيمة المتزايدة في عداد البرنامج. إذا تم تنفيذ تعليمة قفزة ، فسيتم تعديل عداد البرنامج ليحتوي على عنوان التعليمات التي تم الانتقال إليها وسيستمر تنفيذ البرنامج بشكل طبيعي. في وحدات المعالجة المركزية الأكثر تعقيدًا ، يمكن جلب تعليمات متعددة وفك تشفيرها وتنفيذها في وقت واحد. يصف هذا القسم ما يُشار إليه عمومًا باسم "Classic RISC Pipeline" ، وهو أمر شائع جدًا بين وحدات المعالجة المركزية البسيطة المستخدمة في العديد من الأجهزة الإلكترونية (تسمى غالبًا وحدة التحكم الدقيقة). إنه يتجاهل إلى حد كبير الدور المهم لذاكرة التخزين المؤقت لوحدة المعالجة المركزية ، وبالتالي يتجاهل مرحلة الوصول لـ Pipeline.

تتلاعب بعض التعليمات في عداد البرنامج بدلاً من إنتاج بيانات النتائج مباشرةً ؛ تسمى هذه التعليمات عمومًا "القفزات" وتسهل سلوك البرنامج مثل الحلقات والتنفيذ الشرطي للبرنامج (من خلال استخدام قفزة شرطية) ووجود الوظائف. في بعض المعالجات ، تقوم بعض التعليمات الأخرى بتغيير حالة البتات في سجل "الأعلام". يمكن استخدام هذه العلامات للتأثير على سلوك البرنامج ، لأنها تشير غالبًا إلى نتيجة العمليات المختلفة. على سبيل المثال ، في مثل هذه المعالجات تقوم تعليمات "المقارنة" بتقييم قيمتين وتعيين أو مسح البتات في سجل العلامات للإشارة إلى أيهما أكبر أو ما إذا كانت متساوية ؛ يمكن بعد ذلك استخدام إحدى هذه العلامات بواسطة تعليمات قفزة لاحقة لتحديد تدفق البرنامج.

اولا: الجلب (Fetch)

تتضمن الخطوة الأولى ، الجلب ، استرجاع التعليمات (التي يتم تمثيلها برقم أو تسلسل من الأرقام) من ذاكرة البرنامج. يتم تحديد موقع (عنوان) التعليمات في ذاكرة البرنامج من خلال عداد البرنامج (الكمبيوتر الشخصي) ، والذي يخزن رقمًا يحدد عنوان التعليمات التالية التي سيتم جلبها. بعد إحضار التعليمات ، يتم زيادة الكمبيوتر الشخصي بطول التعليمات بحيث يحتوي على عنوان التعليمة التالية في التسلسل. في كثير من الأحيان ، يجب استرداد التعليمات المراد جلبها من ذاكرة بطيئة نسبيًا ، مما يتسبب في توقف وحدة المعالجة المركزية أثناء انتظار إرجاع التعليمات. يتم تناول هذه المشكلة إلى حد كبير في المعالجات الحديثة من خلال ذاكرات التخزين المؤقت وبنيات pipeline.

ثانيا: فك التشفير (Decode)

تحدد التعليمات التي تجلبها وحدة المعالجة المركزية من الذاكرة ما ستفعله وحدة المعالجة المركزية. في خطوة فك التشفير ، التي يتم إجراؤها بواسطة الدائرة المعروفة باسم وحدة فك ترميز التعليمات ، يتم تحويل التعليمات إلى إشارات تتحكم في أجزاء أخرى من وحدة المعالجة المركزية.

يتم تحديد الطريقة التي يتم بها تفسير التعليمات من خلال بنية مجموعة تعليمات وحدة المعالجة المركزية (ISA). في كثير من الأحيان ، تشير مجموعة واحدة من البتات (أي "حقل") ضمن التعليمات ، تسمى كود التشغيل ، إلى العملية التي سيتم تنفيذها ، بينما توفر الحقول المتبقية عادةً معلومات تكميلية مطلوبة للعملية ، مثل المعاملات. يمكن تحديد هذه المعاملات كقيمة ثابتة (تسمى قيمة فورية) ، أو كموقع لقيمة قد تكون سجل معالج أو عنوان ذاكرة ، كما هو محدد بواسطة بعض أوضاع العنونة.

في بعض تصميمات وحدة المعالجة المركزية ، يتم تنفيذ وحدة فك ترميز التعليمات كدائرة غير قابلة للتغيير. في حالات أخرى ، يتم استخدام برنامج microprogram لترجمة التعليمات إلى مجموعات من إشارات تكوين وحدة المعالجة المركزية التي يتم تطبيقها بالتتابع عبر نبضات متعددة على مدار الساعة. في بعض الحالات ، تكون الذاكرة التي تخزن البرنامج المصغر قابلة لإعادة الكتابة ، مما يجعل من الممكن تغيير الطريقة التي تقوم بها وحدة المعالجة المركزية بفك تشفير التعليمات.

ثالثا: التنفيذ (Execute)

بعد خطوات الجلب وفك التشفير ، يتم تنفيذ خطوة التنفيذ. اعتمادًا على بنية وحدة المعالجة المركزية ، قد يتكون هذا من إجراء واحد أو سلسلة من الإجراءات. أثناء كل إجراء ، يتم توصيل أجزاء مختلفة من وحدة المعالجة المركزية كهربائيًا حتى يتمكنوا من أداء كل أو جزء من العملية المطلوبة ثم يكتمل الإجراء ، عادةً استجابة لنبض الساعة. غالبًا ما تتم كتابة النتائج في سجل وحدة المعالجة المركزية داخليًا للوصول السريع من خلال التعليمات اللاحقة. في حالات أخرى ، قد تتم كتابة النتائج على ذاكرة رئيسية أبطأ ولكنها أقل تكلفة وذات سعة أكبر.

على سبيل المثال ، في حالة تنفيذ تعليمات إضافة ، يتم توصيل مدخلات وحدة المنطق الحسابي (ALU) بزوج من مصادر المعامل (يتم جمع الأرقام) ، يتم تكوين ALU لإجراء عملية إضافة بحيث يكون مجموعها ستظهر مدخلات المعامل عند إخراجها ، ويكون خرج ALU متصلًا بالتخزين (على سبيل المثال ، سجل أو ذاكرة) التي ستتلقى المجموع. عند حدوث نبضة الساعة ، سيتم نقل المجموع إلى التخزين ، وإذا كان المجموع الناتج كبيرًا جدًا (أي أنه أكبر من حجم كلمة إخراج ALU) ، فسيتم تعيين علامة تجاوز حسابي.

 

هيكل و تطبيق وحدة المعالجة المركزية (CPU)

التوصيل الصلب في دائرة وحدة المعالجة المركزية عبارة عن مجموعة من العمليات الأساسية التي يمكن أن تؤديها ، وتسمى مجموعة التعليمات. قد تتضمن هذه العمليات ، على سبيل المثال ، إضافة أو طرح رقمين ، أو مقارنة رقمين ، أو القفز إلى جزء مختلف من البرنامج. يتم تمثيل كل عملية أساسية بمجموعة معينة من البتات ، تُعرف باسم كود تشغيل لغة الآلة ؛ أثناء تنفيذ التعليمات في برنامج لغة الآلة ، تقرر وحدة المعالجة المركزية العملية التي يجب إجراؤها عن طريق "فك تشفير" كود التشغيل. يتكون تعليم لغة الآلة الكامل من كود التشغيل ، وفي كثير من الحالات ، بتات إضافية تحدد وسيطات العملية (على سبيل المثال ، الأرقام التي سيتم جمعها في حالة عملية الإضافة). بالارتقاء في مقياس التعقيد ، فإن برنامج لغة الآلة عبارة عن مجموعة من تعليمات لغة الآلة التي تنفذها وحدة المعالجة المركزية.

يتم تنفيذ العملية الرياضية الفعلية لكل تعليمة بواسطة دائرة منطقية توافقية داخل معالج وحدة المعالجة المركزية المعروفة باسم وحدة المنطق الحسابي أو ALU. بشكل عام ، تقوم وحدة المعالجة المركزية بتنفيذ التعليمات عن طريق جلبها من الذاكرة ، واستخدام ALU الخاص بها لإجراء عملية ، ثم تخزين النتيجة في الذاكرة. إلى جانب الإرشادات الخاصة بالرياضيات الصحيحة والعمليات المنطقية ، توجد العديد من إرشادات الآلة الأخرى ، مثل تلك الخاصة بتحميل البيانات من الذاكرة وتخزينها مرة أخرى ، والعمليات المتفرعة ، والعمليات الحسابية على أرقام الفاصلة العائمة التي تقوم بها وحدة الفاصلة العائمة (FPU).

وحدة التحكم

تحتوي وحدة التحكم في وحدة المعالجة المركزية على دوائر كهربائية تستخدم إشارات كهربائية لتوجيه نظام الكمبيوتر بأكمله لتنفيذ تعليمات البرنامج المخزن. لا تنفذ وحدة التحكم تعليمات البرنامج ؛ بدلاً من ذلك ، فإنه يوجه أجزاء أخرى من النظام للقيام بذلك. تتصل وحدة التحكم بكل من وحدة ALU والذاكرة.

وحدة المنطق الحسابية

وحدة المنطق الحسابي (ALU) هي دائرة رقمية داخل المعالج تقوم بعمليات حسابية صحيحة وعمليات منطقية للبت. المدخلات إلى ALU هي كلمات البيانات التي سيتم تشغيلها (تسمى المعاملات) ، ومعلومات الحالة من العمليات السابقة ، ورمز من وحدة التحكم يشير إلى العملية المطلوب تنفيذها. اعتمادًا على التعليمات التي يتم تنفيذها ، قد تأتي المعاملات من سجلات وحدة المعالجة المركزية الداخلية أو الذاكرة الخارجية ، أو قد تكون ثوابت تم إنشاؤها بواسطة وحدة ALU نفسها.

عندما تستقر جميع إشارات الإدخال وتنتشر من خلال دائرة ALU ، تظهر نتيجة العملية المنفذة في مخرجات ALU. تتكون النتيجة من كلمة بيانات ، يمكن تخزينها في سجل أو ذاكرة ، ومعلومات الحالة التي يتم تخزينها عادةً في سجل CPU داخلي خاص محجوز لهذا الغرض.

النطاق الصحيح

تمثل كل وحدة معالجة مركزية قيمًا رقمية بطريقة معينة. على سبيل المثال ، مثلت بعض أجهزة الكمبيوتر الرقمية المبكرة الأرقام على أنها قيم نظام عددي مألوف (أساس 10) ، واستخدم البعض الآخر تمثيلات غير عادية مثل ثلاثي (الأساس الثالث). تمثل جميع وحدات المعالجة المركزية الحديثة تقريبًا أرقامًا في شكل ثنائي ، حيث يتم تمثيل كل رقم بواسطة كمية مادية ثنائية القيمة مثل الجهد "العالي" أو "المنخفض". تركيز. في حالة وحدة المعالجة المركزية الثنائية ، يتم قياس ذلك من خلال عدد البتات (الأرقام المهمة من عدد صحيح ثنائي التشفير) التي يمكن لوحدة المعالجة المركزية معالجتها في عملية واحدة ، والتي تسمى عادةً "حجم الكلمة" ، "عرض البت" ، "البيانات عرض المسار "أو" دقة عدد صحيح "أو" حجم عدد صحيح ". يحدد حجم العدد الصحيح لوحدة المعالجة المركزية نطاق قيم الأعداد الصحيحة التي يمكن أن تعمل عليها مباشرة. على سبيل المثال ، يمكن لوحدة المعالجة المركزية (CPU) ذات 8 بت أن تتعامل بشكل مباشر مع الأعداد الصحيحة الممثلة بثمانية بتات ، والتي لها نطاق من 256 (28) قيمة عدد صحيح منفصل ، ويمكن أن يؤثر النطاق المتكامل أيضًا على عدد مواقع الذاكرة التي يمكن أن تعالجها وحدة المعالجة المركزية مباشرةً (العنوان هو قيمة عددية تمثل موقع ذاكرة معين). على سبيل المثال ، إذا كانت وحدة المعالجة المركزية الثنائية تستخدم 32 بتًا لتمثيل عنوان ذاكرة ، فيمكنها معالجة 232 موقعًا في الذاكرة مباشرةً. للتحايل على هذا القيد ولأسباب أخرى مختلفة ، تستخدم بعض وحدات المعالجة المركزية آليات (مثل التحويل المصرفي) التي تسمح بمعالجة ذاكرة إضافية.

تتطلب وحدات المعالجة المركزية (CPU) ذات أحجام الكلمات الأكبر عددًا أكبر من الدوائر وبالتالي فهي أكبر من الناحية المادية وتكلفتها أعلى وتستهلك قدرًا أكبر من الطاقة (وبالتالي تولد مزيدًا من الحرارة). نتيجة لذلك ، تُستخدم وحدات تحكم دقيقة أصغر حجمًا من 4 أو 8 بت بشكل شائع في التطبيقات الحديثة على الرغم من توفر وحدات المعالجة المركزية (CPU) ذات أحجام الكلمات الكبيرة (مثل 16 ، 32 ، 64 ، حتى 128 بت). عندما يتطلب الأمر أداءً أعلى ، فإن فوائد الحجم الأكبر للكلمة (نطاقات البيانات الأكبر ومساحات العناوين) قد تفوق العيوب.

للحصول على بعض المزايا التي توفرها كل من أطوال البت المنخفضة والعالية ، تم تصميم العديد من وحدات المعالجة المركزية بعروض بت مختلفة لأجزاء مختلفة من الجهاز. على سبيل المثال ، استخدم IBM System / 370 وحدة المعالجة المركزية التي كانت في الأساس 32 بت ، لكنها استخدمت دقة 128 بت داخل وحدات الفاصلة العائمة لتسهيل دقة أكبر ونطاق في أرقام الفاصلة العائمة. تستخدم العديد من تصميمات وحدة المعالجة المركزية اللاحقة عرضًا متشابهًا للبت المختلط ، خاصةً عندما يكون المعالج مخصصًا للاستخدام للأغراض العامة حيث يتطلب الأمر توازنًا معقولاً بين عدد صحيح وقدرة النقطة العائمة.

معدل الساعة

معظم وحدات المعالجة المركزية عبارة عن دوائر متزامنة ، مما يعني أنها تستخدم إشارة ساعة لتسريع عملياتها المتسلسلة. يتم إنتاج إشارة الساعة بواسطة دائرة مذبذب خارجية تولد عددًا ثابتًا من النبضات في كل ثانية على شكل موجة مربعة دورية. يحدد تردد نبضات الساعة معدل تنفيذ وحدة المعالجة المركزية للتعليمات ، وبالتالي ، كلما زادت سرعة الساعة ، زادت التعليمات التي تنفذها وحدة المعالجة المركزية في كل ثانية.

لضمان التشغيل السليم لوحدة المعالجة المركزية ، تكون فترة الساعة أطول من الحد الأقصى للوقت اللازم لنشر جميع الإشارات (التحرك) عبر وحدة المعالجة المركزية. عند ضبط فترة الساعة على قيمة أعلى بكثير من تأخير الانتشار في أسوأ حالة ، من الممكن تصميم وحدة المعالجة المركزية بالكامل والطريقة التي تنقل بها البيانات حول "حواف" إشارة الساعة الصاعدة والهابطة. يتمتع هذا بميزة تبسيط وحدة المعالجة المركزية بشكل كبير ، من منظور التصميم ومن منظور حساب المكونات. ومع ذلك ، فإنه يحمل أيضًا عيبًا يتمثل في أن وحدة المعالجة المركزية بأكملها يجب أن تنتظر أبطأ عناصرها ، على الرغم من أن بعض أجزاءها تكون أسرع بكثير. تم تعويض هذا القيد إلى حد كبير عن طريق طرق مختلفة لزيادة توازي وحدة المعالجة المركزية.

ومع ذلك ، فإن التحسينات المعمارية وحدها لا تحل جميع عيوب وحدات المعالجة المركزية المتزامنة عالميًا. على سبيل المثال ، تخضع إشارة الساعة لتأخير أي إشارة كهربائية أخرى. تجعل معدلات الساعة المرتفعة في وحدات المعالجة المركزية المعقدة بشكل متزايد من الصعب الحفاظ على إشارة الساعة في الطور (متزامنة) طوال الوحدة بأكملها. وقد أدى ذلك إلى قيام العديد من وحدات المعالجة المركزية الحديثة بالمطالبة بتوفير عدة إشارات متطابقة على مدار الساعة لتجنب تأخير إشارة واحدة بشكل كبير بما يكفي لإحداث خلل في وحدة المعالجة المركزية. هناك مشكلة رئيسية أخرى ، مع زيادة معدلات الساعة بشكل كبير ، وهي كمية الحرارة التي تبددها وحدة المعالجة المركزية. تتسبب الساعة المتغيرة باستمرار في تبديل العديد من المكونات بغض النظر عما إذا كان يتم استخدامها في ذلك الوقت أم لا. بشكل عام ، يستخدم المكون الذي يتم التبديل طاقة أكثر من عنصر في حالة ثابتة. لذلك ، مع زيادة معدل الساعة ، يزداد أيضًا استهلاك الطاقة ، مما يتسبب في أن تتطلب وحدة المعالجة المركزية مزيدًا من تبديد الحرارة في شكل حلول تبريد وحدة المعالجة المركزية.

إحدى طرق التعامل مع تبديل المكونات غير الضرورية تسمى بوابة الساعة ، والتي تتضمن إيقاف تشغيل إشارة الساعة إلى المكونات غير الضرورية (تعطيلها بشكل فعال). ومع ذلك ، غالبًا ما يُنظر إلى هذا على أنه صعب التنفيذ ، وبالتالي لا يرى استخدامًا شائعًا خارج تصميمات الطاقة المنخفضة جدًا. أحد تصميمات وحدة المعالجة المركزية الحديثة البارزة التي تستخدم بوابة ساعة واسعة النطاق هو Xenon المستند إلى IBM PowerPC المستخدم في Xbox 360 ؛ بهذه الطريقة ، يتم تقليل متطلبات الطاقة لجهاز Xbox 360 بشكل كبير. هناك طريقة أخرى لمعالجة بعض المشكلات المتعلقة بإشارة الساعة العالمية وهي إزالة إشارة الساعة تمامًا. في حين أن إزالة إشارة الساعة العالمية تجعل عملية التصميم أكثر تعقيدًا إلى حد كبير من نواح كثيرة ، فإن التصميمات غير المتزامنة (أو التي لا تحتوي على ساعات) تحمل مزايا ملحوظة في استهلاك الطاقة وتبديد الحرارة مقارنةً بالتصاميم المتزامنة المماثلة. على الرغم من أنه غير شائع إلى حد ما ، فقد تم إنشاء وحدات المعالجة المركزية غير المتزامنة بالكامل دون استخدام إشارة الساعة العالمية. مثالان بارزان على ذلك هما AMULET المتوافق مع ARM و MiniMIPS المتوافقة مع MIPS R3000.

بدلاً من إزالة إشارة الساعة تمامًا ، تسمح بعض تصميمات وحدة المعالجة المركزية لأجزاء معينة من الجهاز بأن تكون غير متزامنة ، مثل استخدام وحدات ALU غير المتزامنة جنبًا إلى جنب مع خطوط الأنابيب الفائقة لتحقيق بعض مكاسب الأداء الحسابي. في حين أنه ليس من الواضح تمامًا ما إذا كانت التصميمات غير المتزامنة تمامًا يمكن أن تعمل بمستوى مماثل أو أفضل من نظيراتها المتزامنة ، فمن الواضح أنها تتفوق على الأقل في عمليات حسابية أبسط. هذا ، بالإضافة إلى استهلاكها الممتاز للطاقة وخصائص تبديد الحرارة ، يجعلها مناسبة جدًا لأجهزة الكمبيوتر المدمجة.

التماثل

يصف وصف التشغيل الأساسي لوحدة المعالجة المركزية المعروض في القسم السابق أبسط شكل يمكن أن تتخذه وحدة المعالجة المركزية. هذا النوع من وحدة المعالجة المركزية ، الذي يشار إليه عادةً باسم subcalar ، يعمل على تنفيذ تعليمات واحدة على قطعة واحدة أو قطعتين من البيانات في وقت واحد ، وهذا أقل من تعليمة واحدة لكل دورة ساعة - أو أكثر من دورة ساعة واحدة لكل تعليمات (CPI> 1 ).

تؤدي هذه العملية إلى عدم كفاءة متأصل في وحدات المعالجة المركزية الفرعية. نظرًا لأنه يتم تنفيذ تعليمات واحدة فقط في كل مرة ، يجب أن تنتظر وحدة المعالجة المركزية بأكملها حتى تكتمل هذه التعليمات قبل المتابعة إلى التعليمات التالية. نتيجة لذلك ، يتم "تعليق" وحدة المعالجة المركزية subcalar على التعليمات التي تستغرق أكثر من دورة ساعة واحدة لإكمال التنفيذ. حتى إضافة وحدة تنفيذ ثانية لا يحسن الأداء كثيرًا ؛ بدلاً من تعليق مسار واحد ، يتم الآن تعليق مسارين وزيادة عدد الترانزستورات غير المستخدمة. هذا التصميم ، حيث يمكن أن تعمل موارد تنفيذ وحدة المعالجة المركزية على تعليمات واحدة فقط في كل مرة ، يمكن أن يصل فقط إلى الأداء القياسي (تعليمة واحدة لكل دورة ساعة أو CPI = 1). ومع ذلك ، فإن الأداء دائمًا ما يكون دائمًا تقريبًا (أقل من تعليمة واحدة لكل دورة ساعة أو CPI> 1).

أدت محاولات تحقيق أداء قياسي وأفضل إلى مجموعة متنوعة من منهجيات التصميم التي تتسبب في أن تتصرف وحدة المعالجة المركزية بشكل أقل خطيًا وأكثر في التوازي. عند الإشارة إلى التوازي في وحدات المعالجة المركزية (CPUs) ، يتم استخدام مصطلحين بشكل عام لتصنيف تقنيات التصميم هذه:

الاول: التوازي على مستوى التعليمات (ILP) ، الذي يسعى إلى زيادة معدل تنفيذ التعليمات داخل وحدة المعالجة المركزية (أي لزيادة استخدام موارد التنفيذ أثناء التشغيل).

واحدة من أبسط الطرق المستخدمة لتحقيق التوازي المتزايد هي بدء الخطوات الأولى لجلب التعليمات وفك تشفيرها قبل انتهاء التعليمات السابقة من التنفيذ. هذا هو أبسط شكل من أشكال التقنية المعروفة باسم pipeline ، ويتم استخدامها في جميع وحدات المعالجة المركزية الحديثة للأغراض العامة تقريبًا. يسمح pipeline بتنفيذ أكثر من تعليمات في أي وقت من خلال تقسيم مسار التنفيذ إلى مراحل منفصلة. يمكن مقارنة هذا الفصل بخط التجميع ، حيث يتم إكمال التعليمات بشكل أكبر في كل مرحلة حتى تخرج من pipeline التنفيذ ويتم إيقافها.

ومع ذلك ، فإن pipeline تقدم إمكانية حدوث حالة تكون فيها نتيجة العملية السابقة ضرورية لإكمال العملية التالية ؛ حالة يطلق عليها غالبًا تعارض تبعية البيانات. للتعامل مع هذا ، يجب توخي الحذر الإضافي للتحقق من هذه الأنواع من الشروط وتأخير جزء من خط أنابيب التعليمات في حالة حدوث ذلك. بطبيعة الحال ، يتطلب إنجاز ذلك دوائر إضافية ، لذا فإن المعالجات الموصلة pipelined أكثر تعقيدًا من المعالجات تحت subscalar (وإن لم يكن الأمر كذلك بشكل كبير). يمكن أن يصبح المعالج المبني على pipelined عددًا تقريبًا جدًا ، ولا يتم تثبيته إلا من خلال أكشاك pipeline (تعليمات تنفق أكثر من دورة ساعة واحدة في مرحلة واحدة).

أدى المزيد من التحسينات على فكرة توجيه pipeline إلى تطوير طريقة تقلل من وقت الخمول لمكونات وحدة المعالجة المركزية بشكل أكبر. تتضمن التصميمات التي يُقال أنها فائقة السرعة pipeline تعليمات طويل ووحدات تنفيذ متعددة متطابقة. في خط أنابيب superscalar ، تتم قراءة تعليمات متعددة وتمريرها إلى المرسل ، والذي يقرر ما إذا كان يمكن تنفيذ التعليمات بالتوازي (في وقت واحد) أم لا. إذا كان الأمر كذلك ، يتم إرسالها إلى وحدات التنفيذ المتاحة ، مما يؤدي إلى القدرة على تنفيذ العديد من التعليمات في وقت واحد. بشكل عام ، كلما زادت التعليمات التي تستطيع وحدة المعالجة المركزية فائقة السرعة إرسالها في وقت واحد إلى وحدات التنفيذ المنتظرة ، سيتم إكمال المزيد من التعليمات في دورة معينة.

تكمن معظم الصعوبة في تصميم بنية وحدة المعالجة المركزية فائقة السعة في إنشاء مرسل فعال. يجب أن يكون المرسل قادرًا على تحديد ما إذا كان بالإمكان تنفيذ التعليمات بشكل متوازٍ بسرعة وبشكل صحيح ، بالإضافة إلى إرسالها بطريقة تجعل أكبر عدد ممكن من وحدات التنفيذ مشغولة. يتطلب هذا ملء pipeline التعليمات قدر الإمكان ويؤدي إلى الحاجة إلى وجود أبنية فائقة السعة لكميات كبيرة من ذاكرة التخزين المؤقت لوحدة المعالجة المركزية. كما أنه يجعل تقنيات تجنب المخاطر مثل التنبؤ بالفرع والتنفيذ التخميني والتنفيذ خارج الترتيب أمرًا ضروريًا للحفاظ على مستويات عالية من الأداء. من خلال محاولة التنبؤ بالفرع (أو المسار) الذي ستتخذه التعليمات الشرطية ، يمكن لوحدة المعالجة المركزية تقليل عدد المرات التي يجب أن ينتظر فيها pipeline بأكمله حتى يتم إكمال التعليمات الشرطية. غالبًا ما يوفر التنفيذ المضارب زيادات متواضعة في الأداء عن طريق تنفيذ أجزاء من التعليمات البرمجية التي قد لا تكون مطلوبة بعد اكتمال عملية مشروطة. يُعيد التنفيذ خارج الطلب إلى حد ما ترتيب تنفيذ التعليمات لتقليل التأخيرات بسبب تبعيات البيانات. أيضًا في حالة التعليمات الفردية للبيانات المتعددة - وهي حالة يلزم فيها معالجة الكثير من البيانات من نفس النوع ، يمكن للمعالجات الحديثة تعطيل أجزاء من pipeline بحيث عند تنفيذ تعليمات واحدة عدة مرات ، تتخطى وحدة المعالجة المركزية عملية الجلب و مراحل فك التشفير وبالتالي يزيد الأداء بشكل كبير في مناسبات معينة ، لا سيما في محركات البرامج شديدة الرتابة مثل برامج إنشاء الفيديو ومعالجة الصور.

في الحالة التي يكون فيها جزء من وحدة المعالجة المركزية فائق السعة والجزء غير كذلك ، فإن الجزء الذي لا يتعرض لعقوبة أداء بسبب جدولة الأكشاك. كان لدى Intel P5 Pentium وحدتا ALU فائقان يمكنهما قبول تعليمة واحدة لكل ساعة ، لكن FPU الخاص به لا يمكنه قبول تعليمة واحدة لكل ساعة. وبالتالي ، كان P5 عددًا فائقًا صحيحًا ولكنه لم يكن فائقًا للقيمة العائمة. أضاف خليفة إنتل إلى معمارية P5 ، P6 ، قدرات superscalar إلى ميزات النقطة العائمة ، وبالتالي أتاح زيادة كبيرة في أداء تعليمات النقطة العائمة.

يعمل كل من تصميم pipeline البسيطة والتصميم الفائق على زيادة ILP لوحدة المعالجة المركزية من خلال السماح لمعالج واحد بإكمال تنفيذ التعليمات بمعدلات تتجاوز تعليمة واحدة لكل دورة (IPC). معظم تصميمات وحدة المعالجة المركزية الحديثة هي على الأقل فائقة السرعة إلى حد ما ، وتقريبًا جميع وحدات المعالجة المركزية للأغراض العامة المصممة في العقد الماضي هي فائقة السقوط. في السنوات اللاحقة ، تم نقل بعض التركيز في تصميم أجهزة الكمبيوتر ذات المستوى العالي من ILP من أجهزة وحدة المعالجة المركزية إلى واجهة البرامج الخاصة بها ، أو ISA. تؤدي إستراتيجية كلمة التعليمات الطويلة جدًا (VLIW) إلى جعل بعض ILP ضمنيًا بشكل مباشر بواسطة البرنامج ، مما يقلل من حجم العمل الذي يجب أن تؤديه وحدة المعالجة المركزية لتعزيز ILP وبالتالي تقليل تعقيد التصميم.

الثاني : التوازي على مستوى الخيط (TLP) ، والذي يهدف إلى زيادة عدد الخيوط (البرامج الفردية الفعالة) التي يمكن لوحدة المعالجة المركزية تنفيذها في وقت واحد.

الإستراتيجية الأخرى لتحقيق الأداء وهي تنفيذ برامج أو خيوط متعددة بالتوازي. يُعرف مجال البحث هذا باسم الحوسبة المتوازية. في تصنيف Flynn ، تُعرف هذه الإستراتيجية باسم دفق التعليمات المتعددة - تدفق البيانات المتعددة أو MIMD.

كانت إحدى التقنيات المستخدمة لهذا الغرض هي المعالجة المتعددة (MP). تُعرف النكهة الأولية لهذه التقنية باسم المعالجة المتعددة المتماثلة (SMP) ، حيث يشترك عدد صغير من وحدات المعالجة المركزية في رؤية متماسكة لنظام الذاكرة الخاص بهم. في هذا المخطط ، تحتوي كل وحدة معالجة مركزية على أجهزة إضافية للحفاظ على عرض محدث باستمرار للذاكرة. من خلال تجنب العروض القديمة للذاكرة ، يمكن لوحدات المعالجة المركزية أن تتعاون في نفس البرنامج ويمكن أن تنتقل البرامج من وحدة معالجة مركزية إلى أخرى. لزيادة عدد وحدات المعالجة المركزية المتعاونة إلى ما بعد عدد قليل ، تم تقديم مخططات مثل الوصول إلى الذاكرة غير المنتظمة (NUMA) وبروتوكولات التماسك المستندة إلى الدليل في التسعينيات. تقتصر أنظمة SMP على عدد صغير من وحدات المعالجة المركزية بينما تم إنشاء أنظمة NUMA بآلاف المعالجات. في البداية ، تم بناء المعالجة المتعددة باستخدام العديد من وحدات المعالجة المركزية واللوحات المنفصلة لتنفيذ الترابط بين المعالجات. عندما يتم تنفيذ جميع المعالجات وربطها البيني على شريحة سيليكون واحدة ، تُعرف التقنية باسم المعالج متعدد النواة.

تم الاعتراف لاحقًا أن التوازي الدقيق موجود في برنامج واحد. قد يحتوي برنامج واحد على عدة خيوط (أو وظائف) يمكن تنفيذها بشكل منفصل أو بالتوازي. نفذت بعض الأمثلة المبكرة لهذه التقنية معالجة الإدخال / الإخراج مثل الوصول المباشر للذاكرة كسلسلة منفصلة من مؤشر ترابط الحساب. تم تقديم نهج أكثر عمومية لهذه التقنية في السبعينيات عندما تم تصميم الأنظمة لتشغيل خيوط حسابية متعددة على التوازي. تُعرف هذه التقنية باسم خيوط المعالجة المتعددة (MT). يعتبر هذا النهج أكثر فعالية من حيث التكلفة من المعالجة المتعددة ، حيث يتم نسخ عدد صغير فقط من المكونات داخل وحدة المعالجة المركزية لدعم MT بدلاً من وحدة المعالجة المركزية بأكملها في حالة MP. في MT ، تتم مشاركة وحدات التنفيذ ونظام الذاكرة بما في ذلك ذاكرات التخزين المؤقت بين خيوط متعددة. يتمثل الجانب السلبي لـ MT في أن دعم الأجهزة لتعدد مؤشرات الترابط يكون مرئيًا للبرامج أكثر من MP ، وبالتالي يجب أن تخضع برامج المشرف مثل أنظمة التشغيل لتغييرات أكبر لدعم MT. يُعرف نوع واحد من MT الذي تم تنفيذه باسم block multithreading ، حيث يتم تنفيذ مؤشر ترابط واحد حتى يتوقف في انتظار عودة البيانات من الذاكرة الخارجية. في هذا المخطط ، ستنتقل وحدة المعالجة المركزية بسرعة إلى مؤشر ترابط آخر جاهز للتشغيل ، وغالبًا ما يتم التبديل في دورة ساعة واحدة لوحدة المعالجة المركزية ، مثل تقنية UltraSPARC. يُعرف نوع آخر من MT باسم تعدد مؤشرات الترابط المتزامن ، حيث يتم تنفيذ تعليمات خيوط متعددة بالتوازي خلال دورة ساعة واحدة لوحدة المعالجة المركزية.

لعدة عقود من السبعينيات إلى أوائل العقد الأول من القرن العشرين ، كان التركيز في تصميم وحدات المعالجة المركزية عالية الأداء للأغراض العامة إلى حد كبير على تحقيق مستوى عال من ILP من خلال تقنيات مثل pipeline ، وذاكرة التخزين المؤقت ، والتنفيذ الفائق ، والتنفيذ خارج الطلب ، وما إلى ذلك. ، وحدات المعالجة المركزية المتعطشة للطاقة مثل Intel Pentium 4. بحلول أوائل العقد الأول من القرن الحادي والعشرين ، تم إحباط مصممي وحدة المعالجة المركزية من تحقيق أداء أعلى من تقنيات ILP بسبب التفاوت المتزايد بين ترددات تشغيل وحدة المعالجة المركزية وترددات تشغيل الذاكرة الرئيسية بالإضافة إلى تصاعد تبديد طاقة وحدة المعالجة المركزية بسبب لمزيد من تقنيات ILP الباطنية.

ثم استعار مصممو وحدة المعالجة المركزية أفكارًا من أسواق الحوسبة التجارية مثل معالجة المعاملات ، حيث كان الأداء الكلي لبرامج متعددة ، والمعروف أيضًا باسم الحوسبة الإنتاجية ، أكثر أهمية من أداء مؤشر ترابط أو برنامج واحد.

يتضح هذا الانعكاس في التركيز من خلال انتشار تصميمات CMP (المعالجة المتعددة على مستوى الرقاقة) ثنائية ومتعددة النوى ، ولا سيما تصميمات Intel الأحدث التي تشبه بنية P6 الأقل فائقًا. تُظهر التصميمات المتأخرة في العديد من عائلات المعالجات CMP ، بما في ذلك x86-64 Opteron و Athlon 64 X2 و SPARC UltraSPARC T1 و IBM POWER4 و POWER5 ، بالإضافة إلى العديد من وحدات المعالجة المركزية لألعاب الفيديو مثل تصميم PowerPC ثلاثي النواة الخاص بـ Xbox 360 و PS3 7-النواة خلية المعالج.

وكما رأينا تختلف كل منهجية من حيث طرق تنفيذها ، بالإضافة إلى الفعالية النسبية التي توفرها في زيادة أداء وحدة المعالجة المركزية لأحد التطبيقات.

توازي البيانات

يتعامل نموذج وحدات المعالجة المركزية (CPU) الأقل شيوعًا ولكنه يزداد أهمية (وفي الواقع الحوسبة بشكل عام) مع توازي البيانات. يشار إلى جميع المعالجات التي تمت مناقشتها سابقًا على أنها نوع من الأجهزة العددية. كما يوحي الاسم ، تتعامل معالجات المتجهات مع أجزاء متعددة من البيانات في سياق تعليمة واحدة. يتناقض هذا مع المعالجات العددية ، التي تتعامل مع جزء واحد من البيانات لكل تعليمات. باستخدام تصنيف Flynn ، يُشار إلى هذين المخططين للتعامل مع البيانات عمومًا باسم SIMD (تعليمات فردية ، بيانات متعددة) و SISD (تعليمات فردية ، بيانات فردية) ، على التوالي. تكمن الفائدة الكبيرة في إنشاء وحدات المعالجة المركزية (CPU) التي تتعامل مع متجهات البيانات في تحسين المهام التي تتطلب نفس العملية (على سبيل المثال ، مجموع أو منتج نقطي) ليتم تنفيذها على مجموعة كبيرة من البيانات. بعض الأمثلة الكلاسيكية لهذه الأنواع من المهام هي تطبيقات الوسائط المتعددة (الصور والفيديو والصوت) ، بالإضافة إلى العديد من أنواع المهام العلمية والهندسية. في حين يجب أن تكمل وحدة المعالجة المركزية العددية العملية الكاملة لجلب وفك تشفير وتنفيذ كل تعليمات وقيمة في مجموعة من البيانات ، يمكن لوحدة المعالجة المركزية المتجهية إجراء عملية واحدة على مجموعة كبيرة نسبيًا من البيانات بتعليمات واحدة. بالطبع ، هذا ممكن فقط عندما يميل التطبيق إلى طلب العديد من الخطوات التي تطبق عملية واحدة على مجموعة كبيرة من البيانات.

ارتبطت معظم وحدات المعالجة المركزية المتجهة المبكرة ، مثل Cray-1 ، بشكل حصري تقريبًا بتطبيقات البحث العلمي والتشفير. ومع ذلك ، نظرًا لأن الوسائط المتعددة قد تحولت إلى حد كبير إلى الوسائط الرقمية ، فقد أصبحت الحاجة إلى شكل من أشكال SIMD في وحدات المعالجة المركزية للأغراض العامة أمرًا كبيرًا. بعد فترة وجيزة من إدراج وحدات تنفيذ النقطة العائمة ، بدأت تصبح شائعة في معالجات الأغراض العامة ، بدأت أيضًا مواصفات وتطبيقات وحدات تنفيذ SIMD في الظهور لوحدات المعالجة المركزية للأغراض العامة. كانت بعض مواصفات SIMD المبكرة مثل HP's Multimedia Acceleration eXtensions (MAX) و MMX من Intel عددًا صحيحًا فقط. ثبت أن هذا يمثل عائقًا كبيرًا لبعض مطوري البرامج ، حيث أن العديد من التطبيقات التي تستفيد من SIMD تتعامل بشكل أساسي مع أرقام الفاصلة العائمة. تدريجيًا ، تم تحسين هذه التصميمات المبكرة وإعادة صياغتها في بعض مواصفات SIMD الشائعة والحديثة ، والتي ترتبط عادةً بمعيار ISA واحد. بعض الأمثلة الحديثة البارزة هي Intel SSE و AltiVec المرتبط بـ PowerPC (المعروف أيضًا باسم VMX).

 

أداء وحدة المعالجة المركزية (CPU)

يعتمد أداء أو سرعة المعالج ، من بين العديد من العوامل الأخرى ، على معدل الساعة (يُعطى عمومًا بمضاعفات هرتز) والتعليمات لكل ساعة (IPC) ، والتي تعد معًا عوامل التعليمات في الثانية (IPS) التي يمكن أن تؤدي وحدة المعالجة المركزية. تمثل العديد من قيم IPS المبلغ عنها معدلات تنفيذ "الذروة" على تسلسلات التعليمات الاصطناعية مع عدد قليل من الفروع ، بينما تتكون أعباء العمل الواقعية من مزيج من التعليمات والتطبيقات ، والتي يستغرق بعضها وقتًا أطول للتنفيذ من البعض الآخر. يؤثر أداء التسلسل الهرمي للذاكرة أيضًا بشكل كبير على أداء المعالج ، وهي مشكلة بالكاد يتم أخذها في الاعتبار في حسابات MIPS. وبسبب هذه المشاكل ، تم تطوير العديد من الاختبارات المعيارية ، والتي غالبًا ما تسمى "معايير الأداء" لهذا الغرض - مثل SPECint - لمحاولة قياس الأداء الفعال الحقيقي في التطبيقات الشائعة الاستخدام.

يتم زيادة أداء معالجة أجهزة الكمبيوتر باستخدام معالجات متعددة النواة ، والتي تقوم بشكل أساسي بتوصيل اثنين أو أكثر من المعالجات الفردية (تسمى النوى بهذا المعنى) في دائرة متكاملة واحدة. من الناحية المثالية ، سيكون المعالج ثنائي النواة أقوى بمرتين تقريبًا من المعالج أحادي النواة. من الناحية العملية ، يكون مكاسب الأداء أصغر بكثير ، حوالي 50٪ فقط ، بسبب خوارزميات البرامج غير الكاملة والتنفيذ. تؤدي زيادة عدد النوى في المعالج (أي ثنائي النواة ورباعي النواة وما إلى ذلك) إلى زيادة عبء العمل الذي يمكن التعامل معه. هذا يعني أنه يمكن للمعالج الآن التعامل مع العديد من الأحداث غير المتزامنة والمقاطعات وما إلى ذلك والتي يمكن أن تؤثر سلبًا على وحدة المعالجة المركزية عند طغيانها. يمكن اعتبار هذه النوى على أنها أرضيات مختلفة في مصنع المعالجة ، حيث يتعامل كل طابق مع مهمة مختلفة. في بعض الأحيان ، ستتعامل هذه النوى مع نفس المهام مثل النوى المجاورة لها إذا كان نواة واحدة غير كافية للتعامل مع المعلومات.

نظرًا للقدرات المحددة لوحدات المعالجة المركزية الحديثة ، مثل الترابط الفائق وغير الأساسي ، والتي تتضمن مشاركة موارد وحدة المعالجة المركزية الفعلية مع استهداف زيادة الاستخدام ، أصبحت مراقبة مستويات الأداء واستخدام الأجهزة تدريجياً مهمة أكثر تعقيدًا. كاستجابة لذلك ، تطبق بعض وحدات المعالجة المركزية منطقًا إضافيًا للأجهزة يراقب الاستخدام الفعلي لأجزاء مختلفة من وحدة المعالجة المركزية ويوفر عدادات مختلفة يمكن الوصول إليها من خلال البرامج ؛ ومن الأمثلة على ذلك تقنية مراقبة عداد الأداء من Intel.