نمودار بلوک یک رایانه پایه با پردازشگر تک پردازنده. خطوط سیاه جریان داده را نشان می‌دهند، در حالی که خطوط قرمز جریان کنترل را نشان می‌دهند. فلش‌ها جهت جریان را نشان می‌دهند.
**معماری رایانه** در مهندسی رایانه، مجموعه ای از قوانین و روش‌هاست که عملکرد، سازماندهی و روند اجرای سیستم‌های رایانهای را توصیف می‌کند. برخی تعاریف معماری، آن را به عنوان توصیف توانایی‌ها و مدل برنامه نویسی رایانه، تعریف می‌کنند که در عین حال جنبه اجرایی ندارد. در تعاریف دیگر، معماری رایانه شامل طراحی مجموعه معماری، طراحی معماری خرد، طراحی منطق و پیاده سازی است.

تاریخچه
-------

مقالهٔ اصلی: تاریخ معماری رایانه
اولین معماری مستند رایانه در مکاتبات چارلز بابیج و آدا لاولاس بود که موتور تحلیلی را توصیف می‌کرد. هنگام ساخت رایانه Z1 در سال 1936 ، کنراد زوزه در دو برنامه ثبت اختراع برای پروژه‌های آینده خود توضیح داد که دستورالعمل‌های ماشین می‌توانند در همان حافظه‌ای که داده‌ها ذخیره شده‌اند ذخیره گردند..   دو مثال اولیه و مهم دیگر عبارتند از:

* مقاله جان فون نویمان در سال 1945 ،به نام First Draft of a Report on the EDVAC ، که توصیف کننده سازمانی از عناصر منطقی است.
* *ماشین حساب الکترونیکی* آلن تورینگ *که جزئیات بیشتری دارد، پیشنهاد شده* برای موتور محاسبات اتوماتیک، همچنین در سال 1945 به مقاله جان فون نویمان اشاره کرده‌است.

اصطلاح "معماری" در ادبیات رایانه را می‌توان در آثار لایل آر جانسون و فردریک پی بروکس جونیور، اعضای بخش سازمان ماشین در مرکز تحقیقات اصلی IBM در سال 1959 جستجو کرد. جانسون این فرصت را داشت که یک مقاله تحقیقاتی اختصاصی درباره Stretch ، ابررایانه IBM تولید شده برای آزمایشگاه ملی Los Alamos (در آن زمان به عنوان آزمایشگاه علمی Los Alamos)، بنویسد. وی برای توصیف سطح جزئیات برای بحث در مورد رایانه لوکس و مجلل، خاطرنشان کرد که توصیف او از قالب‌ها، انواع دستورالعمل‌ها، پارامترهای سخت افزاری و بالا بردن سرعت، در سطح "معماری سیستم" است، اصطلاحی که مفیدتر از "سازمان ماشین" به نظر می‌رسد "

متعاقباً، بروكس، یک طراح Stretch ، فصل 2 کتاب*Planning a Computer System: Project Stretch* by stating را "معماری رایانه" نامید.

مانند سایر معماری‌ها، هنر، تعیین نیازهای کاربر از یک سازه و سپس طراحی آن برای رفع نیازها تا حد ممکن با توجه به محدودیت‌های اقتصادی و فناوری است. "

بروکس در ادامه به توسعه خط رایانه‌های IBM System / 360 (که اکنون IBM zSeries نامیده می شود) کمک می‌کند، که در آن "معماری" به عنوان "آنچه کاربر باید بداند" تعریف می‌شود.  بعدا کاربران رایانه از این اصطلاح به ندرت در موقعیت مناسب استفاده کردند. 

اولین معماری‌های رایانه بر روی کاغذ طراحی شده و سپس مستقیماً در فرم نهایی سخت افزار ساخته شده اند.  بعدها نمونه‌های اولیه معماری رایانه به صورت فیزیکی در قالب رایانه ترانزیستور - منطق ترانزیستور (TTL) - مانند نمونه‌های اولیه 6800 و PA-RISC - ساخته و قبل از تعهد به فرم سخت افزاری نهایی، ساخته شدند. از دهه 1990 ، معماری‌های رایانه جدید معمولاً "ساخته" می‌شوند ، آزمایش می‌شوند و اصلاح می شوند (در برخی دیگر از معماری‌های رایانه در شبیه ساز معماری رایانه)؛ یا داخل یک FPGA به عنوان یک ریزپردازنده نرم؛ یا هر دو (قبل از تعهد به فرم سخت افزاری نهایی).

زیر مجموعه‌ها
-------------

رشته معماری رایانه دارای سه زیر مجموعه اصلی است: 

* **معماری مجموعه دستورالعمل‌ها** (ISA): کد ماشین را که پردازنده می‌خواند و بر اساس آن عمل می‌کند، بعلاوه اندازه کلمه، حالت آدرس دهی، ثبات و نوع داده را تعریف می‌کند.
* **معماری خرد** : همچنین به عنوان "سازمان رایانه‌ای" شناخته می‌شود. این روش نحوه اجرای ISA توسط یک پردازنده خاص را بیان می‌کند. به عنوان مثال اندازه حافظه نهان پردازنده رایانه، مسئله‌ای است که به طور کلی هیچ ارتباطی با ISA ندارد.
* **طراحی سیستم‌ها** : شامل سایر مولفه‌های سخت افزاری درون یک سیستم محاسباتی مانند پردازش داده غیر از CPU (به عنوان مثال دسترسی مستقیم به حافظه ) ، مجازی سازی و پردازش چندگانه

فناوری‌های دیگری نیز در معماری رایانه وجود دارد. فن آوری‌های زیر در شرکت‌های بزرگتر مانند اینتل مورد استفاده قرار می‌گیرد و در سال 2002 تخمین زده شد که 1٪ از کل معماری رایانه را شامل می‌شود:

* معماری **کلان** : لایه‌های معماری انتزاعی‌تر از معماری **خرد** است.
* **معماری مجموعه دستورالعمل‌های اسمبلی**: یک اسمبلر هوشمند ممکن است یک زبان اسمبلی انتزاعی را که برای گروهی از ماشین‌ها متداول است، برای اجراهای مختلف به زبان ماشین کمی متفاوت تبدیل کند.

**معماری کلان قابل مشاهده توسط برنامه نویسان** : ابزارهای زبان‌های سطح بالاتر مانند کامپایلرها ممکن است یک رابط یا قرارداد ثابت برای برنامه نویسان با استفاده از آنها تعریف کنند، تفاوت بین ISA ، UISA و ریز معماری‌های اساسی را انتزاع کنند. برای مثال، استانداردهای C ،C ++ یا Java، معماری‌های مختلف قابل مشاهده توسط برنامه نویس را تعریف می‌کنند.

* **میکرو کد(ریزبرنامه سازی)** : میکروکد نرم افزاری است که دستورالعمل‌های کار با تراشه را ترجمه می‌کند. مانند یک پوشش در اطراف سخت افزار عمل می‌کند و نسخه مطلوبی از رابط مجموعه دستورالعمل سخت افزار را ارائه می‌دهد. این امکان ترجمه دستورالعمل‌ها، انتخاب‌های انعطاف پذیری را به طراحان تراشه می‌دهد: به عنوان مثال:
* 1) نسخه جدید تراشه بهبود یافته می‌تواند با استفاده از میکروکد دقیقاً همان دستورالعمل نسخه قبلی تراشه را ارائه دهد، بنابراین تمام نرم افزارهایی که این مجموعه دستورالعمل‌ها را هدف قرار می‌دهند بدون نیاز به تغییر روی تراشه جدید اجرا می‌شوند.
* 2) میکروکد می‌تواند مجموعه دستورالعمل‌های متنوعی را برای همان تراشه زیربنایی ارائه دهد، که به آن امکان می‌دهد تا نرم افزارهای متنوعی را اجرا کند.

* **UISA** : دستور العمل کاربر برای مجموعه معماری، به یکی از سه زیر مجموعه دستورالعمل CPU **RISC**(رایانه کم دستور) ارائه شده توسط **پردازنده** های **PowerPC** RISC اشاره دارد. زیر مجموعه UISA ، دستورالعمل های RISC مورد علاقه توسعه دهندگان برنامه هستند. دو زیر مجموعه دیگر دستورالعمل‌های VEA (معماری محیط مجازی) است که توسط توسعه دهندگان سیستم مجازی سازی استفاده می‌شود و OEA (معماری محیط عملیاتی) که توسط توسعه دهندگان سیستم عامل استفاده می‌شود.

* **معماری پین** : عملکردهای سخت افزاری که یک ریزپردازنده باید در اختیار یک پلتفرم سخت افزاری قرار دهد ، مثلاً پایه های x86 A20M ، FERR / IGNNE یا FLUSH. همچنین پیام هایی که پردازنده باید منتشر کند تا حافظه نهان خارجی آزاد شود. توابع معماری پین انعطاف پذیرتر از توابع ISA است زیرا سخت افزار خارجی می‌تواند با رمزگذاری های جدید سازگار شود یا از پین به پیام تغییر کند. اصطلاح "معماری" مناسب است ، زیرا توابع باید برای سیستم‌های سازگار ارائه شوند، حتی اگر روش دقیق تغییر کند.

نقش ها
------

### تعریف

معماری رایانه مربوط به متعادل سازی عملکرد، کارایی، هزینه و قابلیت اطمینان یک سیستم رایانه‌ای است. مجموعه دستورالعمل‌های پیچیده‌تر، برنامه نویسان را قادر می‌سازد تا برنامه‌هایی با فضای کمتری بنویسند، زیرا یک دستورالعمل می‌تواند برخی از انتزاعات سطح بالاتر را رمزگذاری کند (مانند دستورالعمل حلقه x86). با این وجود، رمزگشایی دستورالعمل‌های طولانی‌تر و پیچیده‌تر برای پردازنده زمان بیشتری می‌برد و پیاده سازی آنها می‌تواند هزینه بیشتری داشته باشد. پیچیدگی بیشتر دستورالعمل‌های بزرگ، احتمال بیشتری برای قابل اعتماد نبودن در هنگام تعامل دستورالعمل‌ها به روش‌های غیرمنتظره ایجاد می‌کند.

این پیاده سازی شامل طراحی مدار مجتمع، بسته بندی، قدرت و خنک سازی است. بهینه سازی طراحی، نیاز به آشنایی با کامپایلرها، سیستم عامل‌ها برای طراحی منطقی، و بسته بندی دارد. 

### مجموعه دستورالعمل معماری

معماری مجموعه دستورالعمل‌ها (ISA) رابط بین نرم افزار و سخت افزار رایانه است و همچنین می‌تواند به عنوان نمای برنامه نویسان از ماشین مشاهده شود. رایانه‌ها زبان های برنامه نویسی سطح بالا مانند جاوا، C ++ یا بیشتر زبان های برنامه نویسی مورد استفاده را نمی‌فهمند. پردازنده فقط دستورالعمل‌های رمزگذاری شده را به صورت عددی، معمولاً به عنوان اعداد دودویی، می‌فهمد. ابزارهای نرم افزاری، مانند کامپایلرها، زبان‌های سطح بالا را به دستورالعمل‌هایی تبدیل می کنند که پردازنده می‌تواند آنها را درک کند.

علاوه بر دستورالعمل ها، ISA مواردی را که در دسترس یک برنامه است در رایانه تعریف می کند — به عنوان مثال، انواع داده ها، ثبات ها، حالت های آدرس دهی و حافظه. دستورالعمل ها، این موارد موجود را با فهرست های ثبات (یا نام ها) و حالت های آدرس دهی حافظه پیدا می کنند.

ISA یک رایانه معمولاً در یک کتابچه راهنمای کوچک شرح داده می‌شود که نحوه کدگذاری دستورالعمل‌ها را شرح می‌دهد. همچنین، ممکن است اسامی کوتاه (مبهم) برای دستورالعمل‌ها تعریف شود. نام‌ها را می‌توان با یک ابزار توسعه نرم افزار به نام اسمبلر تشخیص داد. اسمبلر یک برنامه رایانه‌ای است که یک فرم ISA قابل خواندن توسط انسان را به فرم قابل خواندن توسط رایانه ترجمه می‌کند. دیس اسمبلر ها نیز به طور گسترده در دسترس هستند، معمولاً در اشکال زدایی و برنامه‌های نرم افزاری، برای جداسازی و اصلاح اشکال‌ها در عملکرد در برنامه‌های باینری رایانه به کار می روند.

ISA از نظر کیفیت و کامل بودن متفاوت است. ISA خوب بین راحتی برنامه نویس (آسان بودن درک کد)، اندازه کد (مقدار کد که برای انجام یک عمل خاص مورد نیاز است)، هزینه رایانه برای تفسیر دستورالعمل‌ها (پیچیدگی بیشتر به معنی سخت افزار بیشتر برای رمزگشایی و اجرای دستورالعمل‌ها است) و سرعت رایانه (با پیچیدگی بیشتر رمزگشایی، زمان رمزگشایی سخت افزار هم بیشتر می‌شود) تعادل برقرار می‌کند. بخش حافظه نحوه تعامل دستورالعمل‌ها با حافظه و نحوه تعامل حافظه با خود را تعریف می‌کند.

در طول شبیه سازی طراحی، شبیه سازها می‌توانند برنامه‌هایی را که در یک مجموعه دستورالعمل پیشنهادی نوشته شده ‌اند، اجرا کنند. شبیه سازهای مدرن می‌توانند اندازه، هزینه و سرعت را اندازه گیری کنند تا مشخص کنند آیا ISA خاصی اهداف خود را برآورده می‌کند.

### سازمان رایانه

سازمان رایانه به بهینه سازی محصولات مبتنی بر عملکرد کمک می‌کند. به عنوان مثال، مهندسان نرم افزار باید قدرت پردازش پردازنده‌ها را بدانند. شاید برای دستیابی به بیشترین عملکرد با کمترین قیمت، نیاز به بهینه سازی نرم افزار داشته باشند. این امر می‌تواند به تجزیه و تحلیل کاملاً دقیق سازمان رایانه نیاز داشته باشد. برای مثال، در کارت SD ، ممکن است لازم باشد طراحان کارت را مرتب کنند تا بیشترین داده‌ها به سریع‌ترین شکل پردازش شوند.

سازمان رایانه‌ای همچنین به برنامه ریزی برای انتخاب پردازنده برای یک پروژه خاص کمک می‌کند. پروژه های چندرسانه‌ای ممکن است به دسترسی سریع داده‌ها نیاز داشته باشند، در حالی که ماشین‌های مجازی ممکن است به وقفه‌های سریع نیاز داشته باشند. بعضی اوقات بعضی از کارها به اجزای اضافی نیز احتیاج دارند. به عنوان مثال، رایانه‌ای که قادر به راه اندازی یک ماشین مجازی باشد، به سخت افزار حافظه مجازی نیاز دارد تا حافظه رایانه‌های مختلف مجزا از هم، جدا شود. سازماندهی و ویژگی‌های رایانه همچنین بر مصرف برق و هزینه پردازنده تأثیر می‌گذارد.

### پیاده سازی

هنگامی که یک مجموعه دستورالعمل و معماری خرد طراحی شد، باید یک ماشین عملی ساخته شود. به این فرآیند طراحی *پیاده سازی گفته می‌شود*. پیاده سازی معمولاً به عنوان طراحی معماری در نظر گرفته نمی‌شود، بلکه مهندسی طراحی سخت افزار محسوب می‌شود. پیاده سازی را می‌توان به چندین مرحله تقسیم کرد:

* **پیاده سازی منطقی** مدارهای مورد نیاز را در سطح گیت منطقی طراحی می کند.
* **پیاده سازی مدار**، طراحی سطح ترانزیستور از عناصر اساسی (به عنوان مثال، دروازه‌ها، مالتی پلکسرها، لچ ها) و همچنین برخی بلوک های بزرگتر ( ALUها (واحد محاسبه و منطق) ، حافظه نهان و غیره) را که ممکن است در سطح دروازه منطقی یا حتی در سطح فیزیکی اجرا شود، در صورتی که طرح آن را بخواهد انجام می‌دهد.
* **اجرای فیزیکی** مدارهای فیزیکی را ترسیم می‌کند. اجزای مختلف مدار در یک طبقه از تراشه یا یک صفحه قرار می‌گیرند و سیم‌های اتصال دهنده آنها ایجاد می‌شود.
* **اعتبار سنجی طراحی**، رایانه را به عنوان یک کل آزمایش می‌کند تا ببیند در همه شرایط و همه زمان‌ها کار می‌کند. هنگامی که فرآیند اعتبار سنجی طراحی شروع می‌شود، طراحی در سطح منطقی با استفاده از شبیه سازهای منطقی آزمایش می‌شود. با این حال، این معمولاً برای اجرای یک آزمون واقع بینانه بسیار کند است. بنابراین، پس از انجام اصلاحات بر اساس آزمون اول، نمونه‌های اولیه با استفاده از آرایه‌های دروازه‌ای قابل برنامه ریزی ( FPGA ) ساخته می‌شوند. بیشتر پروژه‌های سرگرمی در این مرحله متوقف می‌شوند. مرحله آخر آزمایش نمونه‌های اولیه مدارهای مجتمع است که ممکن است به چندین طراحی مجدد نیاز داشته باشد.

برای پردازنده‌ها ، کل روند پیاده سازی به گونه‌ای متفاوت سازماندهی می‌شود و اغلب از آن به عنوان طراحی CPU یاد می‌شود.

اهداف طراحی
-----------

شکل دقیق سیستم رایانه‌ای به محدودیت‌ها و اهداف بستگی دارد. معماری رایانه معمولاً تعادل بین استاندارد و قدرت را در مقابل عملکرد، هزینه، ظرفیت حافظه، تاخیر (تاخیر زمانی است که برای انتقال اطلاعات از یک گره به منبع لازم است) و توان تولید را برقرار می‌کند. بعضی اوقات ملاحظات دیگر مانند ویژگی‌ها، اندازه، وزن، قابلیت اطمینان و قابلیت ارتقا نیز از عوامل دیگر هستند.

رایج ترین طرح، تجزیه و تحلیل عمیق نیرو را انجام می‌دهد و نحوه کم کردن مصرف برق با حفظ عملکرد کافی را مشخص می‌کند.

### تغییر تقاضای بازار

افزایش فرکانس ساعت در مقایسه با بهبودهای کاهش قدرت طی چند سال گذشته با سرعت کمتری رشد کرده است. این امر با پایان قانون مور و تقاضا برای دوام باتری بیشتر و کاهش اندازه فناوری تلفن همراه صورت گرفته است. این تغییر در تمرکز از نرخ کلاک بالاتر به مصرف انرژی و کوچک سازی را می‌توان با کاهش قابل توجهی در مصرف برق، تا 50٪ ، که توسط اینتل در انتشار ریز معماری Haswell گزارش شده، نشان داد. جایی که آنها معیار مصرف برق خود را از 30-40 وات به 10-20 وات کاهش دادند.  مقایسه این با افزایش سرعت پردازش 3 گیگاهرتز تا 4 گیگاهرتز (2002 تا 2006)  می‌شود که تمرکز در تحقیق و توسعه از فرکانس ساعت دور شده و به سمت مصرف انرژی کمتر و اشغال فضای کمتری حرکت می کند.

همچنین ببینید
-------------

* مقایسه معماری CPU
* سخت افزار رایانه
* طراحی پردازنده
* ممیز شناور
* معماری هاروارد
* معماری جریان داده
* محاسبات قابل تنظیم
* تأثیر IBM PC در بازار رایانه های شخصی
* مجموعه دستورهای متعامد
* معماری نرم افزار
* معماری فون نویمان
* طبقه بندی فلین

منابع
-----

1. ↑  «*معماری رایانه، معماری*» [*رایانه و فنّاوری اطلاعات*] هم‌ارزِ «*computer architecture, architecture*»؛ منبع: گروه واژه‌گزینی. جواد میرشکاری، ویراستار. *دفتر دوم*. فرهنگ واژه‌های مصوب فرهنگستان. تهران: انتشارات فرهنگستان زبان و ادب فارسی. شابک ۹۶۴-۷۵۳۱-۳۷-۰ (ذیل سرواژهٔ *معماری رایانه*)
2. ↑  Williams, F. C.; Kilburn, T. (25 September 1948), "Electronic Digital Computers", *Nature*, **162** (4117): 487, Bibcode:1948Natur.162..487W, doi:10.1038/162487a0, archived from the original on 6 April 2009, retrieved 2009-04-10
3. ↑  Susanne Faber, "Konrad Zuses Bemuehungen um die Patentanmeldung der Z3", 2000
4. ↑  Reproduced in B. J. Copeland (Ed.), "Alan Turing's Automatic Computing Engine", Oxford University Press, 2005, pp. 369-454.
5. ↑  Johnson, Lyle (1960). "A Description of Stretch" (PDF). p. 1. Retrieved 7 October 2017.
6. ↑  "System 360, From Computers to Computer Systems". *IBM100*. Retrieved 11 May 2017.
7. ↑  ACE underwent seven paper designs in one year, before a prototype was initiated in 1948. [B. J. Copeland (Ed.), "Alan Turing's Automatic Computing Engine", OUP, 2005, p. 57]
8. ↑  Schmalz, M.S. "Organization of Computer Systems". *UF CISE*. Retrieved 11 May 2017.
9. ↑  Frey, Brad (2005-02-24). "PowerPC Architecture Book, Version 2.02". IBM Corporation.
10. ↑  Martin, Milo. "What is computer architecture?" (PDF). *UPENN*. Retrieved 11 May 2017.
11. ↑  "Measuring Processor Power TDP vs ACP" (PDF). *Intel*. April 2011. Retrieved 5 May 2017.
12. ↑  "History of Processor Performance" (PDF). *cs.columbia.edu*. 24 April 2012. Archived from the original (PDF) on 16 May 2017. Retrieved 5 May 2017.

* John L. Hennessy و دیوید پترسون (2006). معماری رایانه: رویکرد کمی (ویرایش چهارم). مورگان کافمن شابک John L. Hennessy John L. Hennessy
* بارتون ، رابرت اس. ، "طراحی عملکردی رایانه ها" ، *ارتباطات ACM* 4 (9): 405 (1961).
* بارتون ، رابرت اس. ، "رویکرد جدیدی به طراحی کاربردی رایانه دیجیتال" ، *مجموعه مقالات کنفرانس مشترک رایانه ای غربی* ، مه 1961 ، صص. 393–396. درباره طراحی رایانه Burroughs B5000 .
* بل ، سی گوردون ؛ و نیول ، آلن (1971). "ساختارهای رایانه ای: قرائت و مثالها" ، مک گرا-هیل.
* Blaauw ، GA و Brooks ، FP ، جونیور ، "ساختار سیستم / 360 ، قسمت اول-رئوس مطالب ساختار منطقی" ، *IBM Systems Journal* ، جلد 1. 3 ، نه 2 ، ص. 119–135 ، 1964.
* Tanenbaum, Andrew S. (1979) سازمان رایانه ای ساخت یافته. صخره های Englewood ، نیوجرسی : Prentice-Hall. شابک Tanenbaum, Andrew S. Tanenbaum, Andrew S.

لینک های خارجی
--------------

* ISCA: مجموعه مقالات همایش بین المللی معماری رایانه بایگانی‌شده در ۷ مه ۲۰۰۶ توسط Wayback Machine
* میکرو: سمپوزیوم بین المللی IEEE / ACM در ریز معماری
* HPCA: سمپوزیوم بین المللی معماری با کارایی بالا در رایانه
* ASPLOS: کنفرانس بین المللی پشتیبانی معماری از زبان های برنامه نویسی و سیستم عامل ها بایگانی‌شده در ۹ مه ۲۰۰۶ توسط Wayback Machine
* معاملات ACM در زمینه معماری و بهینه سازی کد
* معاملات IEEE در رایانه ها
* معماری von Neumann سیستم های رایانه ای