معماري مجموعه دستورات پردازنده

پيش از اينكه معماري ريسك همهگير شود، بسياري از معماران كامپيوتر در پي پركردن خلا منطقي بين برنامهنويس و دستورات كامپيوتر بودند و بهدنبال طراحي مجموعه دستوراتي از كامپيوتر بودند كه مستقيما از ساختارهاي زبانهاي سطح بالا، مثل فراخواني زيربرنامهها، كنترل حلقهها و آدرسدهيهاي پيچيده پشتيباني كند و دسترسي به ساختارهاي داده و آرايهها را با يك دستور آسان كند.
طبيعت فشرده چنين مجموعه دستوراتي، كوچكتر شدن حجم برنامه و فراخوانيهاي كمتر به حافظه اصلي، كه در آن زمان (اوايل دهه 60) منجر به صرفهجويي زيادي در مصرف حافظه كامپيوتر و ديسك ميشد. همچنين ميزان توليد برنامهها به زبان اسمبلي، در غياب زبانهاي سطح بالايي چون فورترن1 و يا الگول2 مفيد بود.
اينكه تمامي طراحيها به ميزان بهرهوري بيشتر با هزينه كمتر ميانديشيدند و همچنين تعريف ساختارهاي زبانهاي سطح بالاتر با دستورات كمتر، هميشه دغدغه معماران نبود.
بهعنوان مثال، نسخههاي سطح پايين معماري پيچيده كه از سختافزار كمتري استفاده ميكردند، به موقعيتهايي ميرسيدند كه در آنها بازدهي سيستم هنگامي بالا ميرفت كه از دستورات پيچيده (فراخواني زيربرنامه و...) استفاده نميشد و از چند دستور سادهتر به جاي آن استفاده ميكردند.
اين نتيجه حاصل شد كه معماران كامپيوتر، گاهي اوقات دستورات اسمبلر را «بيش از حد طراحي» ميكردند كه باعث ميشد آندستور در سختافزار قابل پياده سازي نباشد.
عوارض جانبي اين موضوع (كه فراتر از استانداردها بود)، مثل مقداردهي به يك ثبات كه اگر از طريق عادي اين كار انجام ميشد، اتلاف زماني به فاصله چندين پالس ساعت رخ ميداد.
حتي در طراحيهاي با بازدهي بالا، اين دستورات سطح بالا، با رمزگذاريهاي پيچيده همراه هستند و رمزگشايي اين دستورات براي ترانزيستورهاي ارزانتر غيرقابل انجام است. اين معماريها در بخش طراحي پردازنده، كار عظيمي را بايد طي كنند كه هر دستور سطح بالا، در مقابل چند دستور مشابه سادهتر، اما كندتر در جدول رمزگشاييها يا صف ريزدستورات بهصرفه خواهد بود يا خير و در زماني كه فضايي كه ترانزيستورها اشباع ميكنند، فضاي محدودي خواهد بود، در اينصورت حفظ بازدهي بهروشهاي ديگر ممكن نخواهد بود و نتيجه كار، به سادهتر كردن دستورات خواهد انجاميد و اين اتفاق به توليد كامپيوترها با معماري دستورات سادهشده در ميانههاي دهه 70 ميلادي منجر شد.
پردازندههاي سيسك و ريسك
پردازندههايي كه برمبناي معماري سيسك درست شدهاند، را ميتوان در ميان سري VAX، 11PDP-، خانواده موتورولا 68000 و همچنين اينتل 86x يافت.
البته در تكامل معماريهاي پردازندهها، ديگر اختلاف ميان سيسك و ريسك كمتر شده است. اولين پيادهسازي سطح بالاي سيسك كه در خانواده 486 اينتل، AMD، سايركس و آيبيام وجود داشت تمام دستورات اين پردازندهها را با پيادهسازي زيرمجموعهاي از اين دستورات (به كمك معماري ريسك، اما بدون محدوديتهاي ذخيره بازيابي آن) اجرا و بازدهي بالايي را ارائه ميكرد.
پردازندههاي جديدتر 86x قادر به رمزگشايي دستورات پيچيدهتر به ريزعمليات داخلي هستند كه بهطور سريال اجرا ميشوند، با اين وجود بازدهي بالايي دارند.
كامپيوترهايي با معماري بدون مجموعه دستورات
تفكر جديدي كه هماكنون براي معماري مجموعه دستورات وجود دارد، كامپيوترهايي با معماري صفر دستورالعمل (ZISC، با تلفظ زيسك) است. اين تفكر كه از شبكههاي عصبي مصنوعي3 و پردازشهاي بزرگ موازي4 نشات ميگيرد، اوايل دهه نود و بر مبناي يك مدل شبكه عصبي كه توسط پروفسور ليون كوپر5 شكل گرفت. در سال 93 در آزمايشگاه نيمههاديهاي آيبيام مورد بررسي قرار گرفت و نخستين چيپ اين پردازنده به نام 36ZISC توسط گايپيلت6 توليد شد. نخستين نسل از اين پردازندهها 36 سلول داشت و هر كدام بهعنوان نرون7 عمل ميكرد. هر كدام از اين سلولها ميتوانست ورودي برداري تا 64 بايت را مقايسه كند كه در حافظهاش قرار داشت: اگر بردار ورودي8 با برداري كه در حافظهاش يكي بود، برابر بود، سلول سيگنال ميداد. سيگنال خروجي يا بهمعناي شناسايي الگو9 بود، يا نيافتن الگو.
نكته اصلي سرعت بخشيدن به چنين سيستمي، پردازش موازي در سيستمهاي زيسك است كه ديگر دردسر بارگزاريهاي سريال و خطي را ندارد و همزمان همه موقعيتها را با هم چك ميكند. گسترشپذيري اين سيستمها نيز جالب توجه است، يك سيستم زيسك ميتواند با افزودن چيپهاي بيشتر ، بيشتر شود بدون آنكه با بزرگ شدن از بازدهي آن كاسته شود.
پردازندههاي امروزي زيسك حدود 78 نرون در هر چيپ دارند و ميتوانند در هر ثانيه يك ميليون الگو را مورد مطابقت قرار دهند و در كمتر از 50 مگاهرتز فعاليت كنند.
در سال 2007، نسخه تكامل يافته زيسك78 به نام K1CogniMem ارائه شد كه تشخيص بردار 256 بايتي را در 10ميكروثانيه انجام ميدهد.
منابع
http://en.wikipedia.org/wiki/Zero_
Instruction_Set_Computer
http://cs.washington.edu/homes/ http://en.wikipedia.org/wiki/CISC