يكي از سادهترين شيوههاي مورد استفاده براي انجام افزايش پارالليسم اين است كه اولين مراحل fetching و decoding دستوري را پيش از اينكه اجراي دستور قبلي تمام شود، شروع كنيم. اين روش سادهترين فرم يك تكنيك بنام instruction pipelining است و در تقريباً تمام سي پي يوهاي عمومي جديد استفاده ميشود. پايپ لاينينگ، با شكستن مسير دستوري و تبديل ان به مراحل جداگانه، باعث ميشود تا در هر زمان بيش از يك دستور اجرا شود. اين جدا كردن را ميتوان با خط مونتاژ مقايسه كرد كه در آن يك دستور در هر مرحله كاملتر ميشود تا اينكه كامل شود.
با اين وجود pipelining ممكن است موقعيتي را بوجود آورد كه در آن يافتههاي عمل قبلي براي كامل كردن عمل بعدي لازم است. اين وضعيت را معمولاً آشفتگي ناشي از وابستگي مينامند. براي جلوگيري از اين وضعيت، بايد توجه بيشتري شود تا در صورت رخ دادن اين شرايط بخشي از خط توليد دستوري را به تأخير اندازيم. بطور طبيعي برآورده كردن اين شرايط نيازمند مدارهايي اضافهاست، بنابراين پردازندههاي pipelined پيچيدهتر از انواع ساب اسكيلر هستند (البته نه خيلي چشمگير). يك پردازندهٔ pipelined ميتواند بسيار نزديك به حد اسكيلر شود، در اين شرايط تنها مانع موجود stallها (دستوري كه بيش از يك چرخهٔ ساعتي در يك مرحله طول ميكشد) هستند. ارتقاء بيشتر در مورد ايدهٔ instruction pipelining منجر به ايجاد روشي شدهاست كه زمان خالي اجزاي سي پي يو را حتي به ميزان بيشتري كاهش ميدهد. طراحيهايي كه گفته ميشود سوپراسكيلر هستند شامل يك خط ايجاد(pipeline) دستور طولاني و واحدهاي اجرايي مشابه متعدد هستند. در يك خط ايجاد سوپرسكيلر دستورهاي متعددي خوانده شده و به dispatcher (توزيع گر) ميروند، توزيع گر تصميم ميگيرد كه آيا دستورها مذكور ميتوانند بطور موازي (همزمان) اجرا شوند يا نه. در صورتي كه پاسخ مثبت باشد، دستورها مذكور به واحدهاي اجرايي موجود ارسال (dispatch) ميشوند. اين كار باعث ميشود تا چندين دستور بهطور همزمان اجرا شوند. بهطور كلي هرقدر يك سي پي يوي سوپرسكيلر بتواند دستورها بيشتري را بطور همزمان به واحدهاي اجرايي در حال انتظار ارسال (dispatch) كند، دستورها بيشتري در يك سيكل مشخص اجرا ميشوند.
جمعه ۲۵ اسفند ۹۶ | ۱۵:۱۶ ۱۰۲ بازديد
تا كنون نظري ثبت نشده است