كان المعالج الأول الذي تم تنفيذه خارج الترتيب هو IBM POWER 1 ، والذي سيكون أساسًا لمعالجات RISC التي تحمل الاسم نفسه و PowerPCs. إنتل اعتمدت هذه التكنولوجيا من أجل x86 في بنتيوم برو. منذ ذلك الحين ، استفادت جميع وحدات المعالجة المركزية للكمبيوتر الشخصي من تقنية خارج الترتيب كأحد القواعد للحصول على أقصى أداء ممكن.
غالبًا ما يكون الشغل الشاغل في تصميم المعالجات ليس الحصول على أكبر قدر من القوة ، ولكن الحصول على أفضل أداء عند تنفيذ التعليمات. نحن نفهم الأداء على أنه حقيقة الاقتراب من المثالية النظرية لتشغيل المعالج. لا جدوى من امتلاك الأقوى وحدة المعالجة المركزية: إذا كان الشيء الوحيد الذي تمتلكه ، بسبب القيود ، هو إمكانية أن تكون وليست كذلك.
طريقتان للتعامل مع التوازي
هناك طريقتان لمعالجة التوازي في كود البرنامج ، وهما التوازي على مستوى الخيط أو ILP والتوازي التعليمي أو TLP.
في TLP ، يتم تقسيم الكود إلى عدة برامج فرعية مستقلة عن البرامج الأخرى وتعمل بشكل غير متزامن ، وهذا يعني أن كل منها لا يعتمد على رمز الباقي. عندما نكون في معالج TLP ، فإن المفتاح هو أنه في حالة حدوث توقف للتنفيذ لسبب ما ، فإن معالج TLP يأخذ سلسلة أخرى من خيوط التنفيذ ويضع الخامل قيد الانتظار.
تختلف معالجات ILP ، والتوازي هو مستوى التعليمات وبالتالي في نفس سلسلة التنفيذ ، لذلك لا يمكنهم الغش عن طريق وضع الخيط الرئيسي قيد الانتظار. في الوقت الحاضر ، تجمع وحدات المعالجة المركزية بين نوعي التنفيذ ، لكن ILP لا يزال مقصورًا على وحدات المعالجة المركزية (CPU) ، حيث تحصل على ميزة رائعة من حيث الكود التسلسلي على الكود المتوازي بالكامل.
لا يمكننا أن ننسى أنه وفقًا لقانون أمدال ، يتكون الكود من أجزاء متسلسلة ، والتي لا يمكن تنفيذها إلا بواسطة معالج واحد ، وبالتوازي ، والتي يمكن تنفيذها بواسطة عدة معالجات. ومع ذلك ، لا يمكن موازاة كل شيء وهناك أجزاء متسلسلة من الكود تتطلب تشغيلًا تسلسليًا.
في الخمسة عشر عامًا الماضية ، تم تطوير المفهوم الذي يتم فيه تنفيذ الخوارزميات المتوازية على وحدات معالجة الرسومات ، التي تكون نوىها من نوع TLP ، بينما يتم تنفيذ الكود التسلسلي على وحدات المعالجة المركزية من النوع ILP.
ترتيب تنفيذ التعليمات
تنفيذ الطلب هو تنفيذ التعليمات الكلاسيكي ، ويرجع اسمه إلى حقيقة أن التعليمات يتم تنفيذها بالترتيب الذي تظهر به في الكود ولا يمكن أن تستمر التعليمات التالية حتى يتم حل التعليمة السابقة.
تكمن الصعوبة الأكبر في التنفيذ بالترتيب في التعليمات الشرطية والقفز ، حيث سيتم تنفيذ ذلك عند حدوث الشرط ، مما يؤدي إلى إبطاء سرعة تنفيذ التعليمات البرمجية بشكل كبير. هذه مشكلة كبيرة عندما يكون عدد المراحل في المعالج مرتفعًا للغاية ، وهو ما يحدث عندما تعمل وحدة المعالجة المركزية بسرعات عالية على مدار الساعة.
تتمثل المصيدة لتحقيق سرعات عالية على مدار الساعة في تقسيم دقة التعليمات إلى الحد الأقصى مع عدد كبير من المراحل الفرعية لدورة التعليمات. عندما تحدث قفزة أو حالة خاطئة ، يتم فقد عدد كبير من دورات التعليمات.
خارج الترتيب ، تسريع ILP
خارج الترتيب أو التنفيذ خارج الترتيب هو الطريقة التي تنفذ بها وحدات المعالجة المركزية (CPU) الأكثر تقدمًا التعليمات البرمجية ويُعتقد أنها تتجنب توقف التنفيذ. كما يشير اسمه ، فهو يتألف من تنفيذ تعليمات المعالج بترتيب مختلف عن تلك المشار إليها في الكود.
السبب في ذلك هو أن كل نوع من التعليمات له نوع من وحدة التنفيذ المخصصة له. اعتمادًا على نوع التعليمات ، تستخدم وحدة المعالجة المركزية نوعًا واحدًا من وحدات التنفيذ أو أخرى ، ولكنها محدودة. يمكن أن يتسبب هذا في توقف التنفيذ ، لذا فإن ما يتم فعله هو تقديم التعليمات التالية في تنفيذها ، بالإشارة إلى ذاكرة أو سجل داخلي وهو الترتيب الحقيقي للتعليمات ، بمجرد تنفيذها يتم إرسالها مرة أخرى بالترتيب الأصلي الذي كانوا عليه في الكود.
يسمح لك استخدام "خارج الترتيب" بتوسيع متوسط عدد التعليمات التي تم حلها في كل دورة وتقريبها من الأداء المثالي. على سبيل المثال ، كان أول معالج Intel Pentium يحتوي على تنفيذ بالترتيب وكان وحدة معالجة مركزية قادرة على العمل بتعليمين مقابل 486 التي يمكن أن تعمل فقط مع واحد ، ولكن على الرغم من هذا الأداء بسبب التوقفات كان 40٪ فقط إضافي.
مراحل إضافية خارج النظام
يضيف تنفيذ التنفيذ خارج الطلب مراحل إضافية إلى دورة التعليمات ، والتي تحدثنا عنها بالفعل في المقالة بعنوان هذه هي الطريقة التي تنفذ بها وحدة المعالجة المركزية الخاصة بك التعليمات التي يقدمها البرنامج ، والتي يمكنك أن تجدها في HardZone.
في الواقع ، يختلف الجزء المركزي فقط من تنفيذ التعليمات فيما يتعلق بترتيب التنفيذ ، وتحدث هذه التغييرات قبل مرحلة التنفيذ ، لذلك لا تتأثر المرحلتان الأوليتان اللتان تم جلبهما وفك تشفيرهما ، ولكن هناك مرحلتان جديدتان المضافة ، والتي تحدث قبل وبعد تنفيذ التعليمات.
المرحلة الأولى هي محطات الاستعداد ، حيث تنتظر الأجهزة أن تكون وحدات التنفيذ مجانية. إن تنفيذها معقد ، لأنه يعتمد على آلية لا تراقب فقط عندما تكون وحدة التنفيذ مجانية ، ولكنها تحسب أيضًا متوسط المدة في دورات الساعة لكل تعليمات يتم تنفيذها لمعرفة كيف يتعين عليها إعادة ترتيب التعليمات.
المرحلة الثانية هي إعادة ترتيب المخزن المؤقت ، وهو المسؤول عن فرز التعليمات بترتيب الإخراج. ضع في اعتبارك أنه من أجل تسريع إخراج التعليمات في التنفيذ خارج الطلب ، يتم تنفيذ جميع فروع تعليمات المضاربة في الكود. تعليمات المضاربة هي تلك التي يتم تقديمها عندما يكون هناك قفزة مشروطة بغض النظر عما إذا كان الشرط قد تم استيفائه أم لا. لذلك في هذه المرحلة يتم تجاهل فروع التنفيذ غير المؤكدة.