یادم افتاد چند سال پیش، اخبار گفت که دانشگاه امیر کبیر یک ابررایانه ساخته. آیا این به معنی ساخت قطعات از جمله ریزپردازنده توسط این دانشگاه است؟
یه ابر رایانه رو میشه با تعداد زیادی کامپیوترهای یکریخت ساخت که بهش کلاستر میگن. مثلا نیروی هوایی آمریکا یه ایر رایانه با playstion 3 ساخته:

www.geeks3d.com/20101210/a-cluster-with-1760-playstation-3-for-the-us-army/

دانشگاه امیر کبیر هم همین کار رو کرده.

با مطالعاتی که تا حالا داشتم به اینجا رسیدم که مهمترین عواملی که باعث بالا رفتن سرعت و قابلیت های پردازنده ها از 8086 و Z80 تاکنون شده عبارتند از: پیشرفت های صنعت الکترونیک،استفاده از کش، آدرس دهی مجازی، استفاده از چند خط پردازش(لوله)، حفاظت از حافظه تخصیص داده شده به برنامه ها، داشتن مد هسته و غیرهسته(چندکار).
خب اینها کلا مربوط به معماری کامپیوتر هست. عوامل خیلی بیشتر از اینها می تونه باشه.

بررسی زیادی روی پروتئوس انجام دادم. حداکثر امکاناتی که این شبیه ساز برای ساخت ریزپردازنده میتونه در اختیار ما بذاره عبارتند از:
1. تمام این قطعات رو میتونی از بازار هم تهیه کنی (سری LS یا FS رو بگیر توی بازار معمولا HS است)
2. شبیه سازی پروتیوس اصلا معتبر نیست.
3. معمولا قطعات دیگه ای استفاده میشه اونم بخاطر خطوط کنترلی مورد نیاز هست که از طرف CU باید مدیریت شن. کتاب SAP همه اینها رو گفته

کار دیگه ای که توی این مرحله انجام دادم بررسی و تعیین ثبات های مورد نیاز پردازنده و تهیه مجموعه دستورالعمل های پردازنده و تخصیص رمز منحصر به فرد به هر یک از آنهاست. با تمام تلاشی که انجام دادم نهایتاً نتوانستم تعداد آنها را از 56 عدد کمتر کنم. این مجموعه کامل است و شامل تمام دستورالعملهای مورد نیاز برای انتقال اطلاعات، حسابی و منطق و کنترل ریزپردازنده است. البته به احتمال زیاد در مراحل بعدی ممکن است تغییرات جزئی در تعداد آنها بوجود آید.
بهتر اول اون کتاب هایی رو که گفتم کامل بخونی. من مطمئنم که با تعداد کمتر دستورها میشه پردازنده های پیشرفته ای رو ساخت. مثلا MIPS و یا ARM . تعداد زیاد دستور خوب نیست و مشکلات زیادی رو به وجود میاره. مثلا یه پردازنده 2 گیگا هرتر و هشت هسته ARM از شرکت Allwinners نیازی به فن نداره اما یه پردازنده 1 گیگا هرتری تک هسته شرکت اینتل باید کلی سیستم خنک کننده داشته باشه. خب اینها همه تفاوت معماری ها هستن.

و بزرگترین مشکل های شرکت اینتل از نظر ISA:

1. تعداد زیاد دستورها ( همون نسخه های اولیه هم نزدیک 100 دستور داشتن)
2. طول متفاوت دستورها ( از یک تا 15 بایت)
3. حفظ سازگاری با ویرایش های قبلی
4. تعداد کم ثباتها (توی ویرایش های بعدی زیاد شدش) . البته این زیاد هم به ISA مربوط نیست اما تاثیر مستقیم روش داره.

برای کنترل تعداد دستورها اول از همه اونها رو دسته بندی کن

1. مثلا دستورهای محاسباتی
2. دستورهای پرش
3. دستورهای انتقال ثبات و ...

بعدش برای هر کدوم یک قالب درست کن. جوری که سعی کنی هر گروه رو توی همون قالب خودش جا بدی

نکته دیگه اینه که لازم نیست همه دستورها همه کارها رو انجام بدن. مثلا دستورهای محاسباتی لازم نیست هم از حافظه بخونن و هم اینکه محاسبه رو انجام بدن اونها می تونن فقط روی ثبات ها کار کنن و کار انتقال داده رو یه دستور دیگه انجام بده.

معماری ARM یه رنج زیاد دستورها رو با 4 پرچم کنترلی توی همه دستورها حذف کرده. و چند پرچم دیگه برای شناسایی گروه دستور. مثلا یه ایده خوب می تونه این باشه که مثلا گروهی با opcode دوازده کارش محاسبات باشه. حالا نوع محاسبه رو بیت های بعدی مشخص کنه و ثبات مبدا و مقصد رو بیتهای دیگه