معماری رایانه

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

## تاریخچه

اولین معماری مستند رایانه در مکاتبات چارلز بابیج و آدا لاولاس بود که موتور تحلیلی را توصیف می‌کرد. هنگام ساخت رایانه Z1 در سال ۱۹۳۶، کنراد زوزه در دو برنامه ثبت اختراع برای پروژه‌های آینده خود توضیح داد که دستورالعمل‌های ماشین می‌توانند در همان حافظه‌ای که داده‌ها ذخیره شده‌اند ذخیره گردند. . دو مثال اولیه و مهم دیگر عبارتند از:
* مقاله جان فون نویمان در سال ۱۹۴۵، به نام First Draft of a Report on the EDVAC، که توصیف کننده سازمانی از عناصر منطقی است.
* *ماشین حساب الکترونیکی* آلن تورینگ *که جزئیات بیشتری دارد، پیشنهاد شده* برای موتور محاسبات اتوماتیک، همچنین در سال ۱۹۴۵ به مقاله جان فون نویمان اشاره کرده است.

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

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

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

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

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

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

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

**معماری کلان قابل مشاهده توسط برنامه نویسان**: ابزارهای زبان‌های سطح بالاتر مانند کامپایلرها ممکن است یک رابط یا قرارداد ثابت برای برنامه نویسان با استفاده از آنها تعریف کنند، تفاوت بین ISA , UISA و ریز معماری‌های اساسی را انتزاع کنند. برای مثال، استانداردهای C ,C ++ یا Java، معماری‌های مختلف قابل مشاهده توسط برنامه‌نویس را تعریف می‌کنند.
* **[[ریزبرنامه‌سازی|میکرو کد (ریزبرنامه سازی)]]**: میکروکد نرم‌افزاری است که دستورالعمل‌های کار با تراشه را ترجمه می‌کند. مانند یک پوشش در اطراف سخت‌افزار عمل می‌کند و نسخه مطلوبی از رابط مجموعه دستورالعمل سخت‌افزار را ارائه می‌دهد. این امکان ترجمه دستورالعمل‌ها، انتخاب‌های انعطاف‌پذیری را به طراحان تراشه می‌دهد: به عنوان مثال:
# نسخه جدید تراشه بهبود یافته می‌تواند با استفاده از میکروکد دقیقاً همان دستورالعمل نسخه قبلی تراشه را ارائه دهد، بنابراین تمام نرم‌افزارهایی که این مجموعه دستورالعمل‌ها را هدف قرار می‌دهند بدون نیاز به تغییر روی تراشه جدید اجرا می‌شوند.
# میکروکد می‌تواند مجموعه دستورالعمل‌های متنوعی را برای همان تراشه زیربنایی ارائه دهد، که به آن امکان می‌دهد تا نرم‌افزارهای متنوعی را اجرا کند.
* **UISA**: دستور العمل کاربر برای مجموعه معماری، به یکی از سه زیر مجموعه دستورالعمل CPU **[[رایانه کم‌دستور|RISC]]**(رایانه کم دستور) ارائه شده توسط **[[پاورپی‌سی|پردازنده]]**‌های **[[پاورپی‌سی|PowerPC]]** RISC اشاره دارد. زیر مجموعه UISA، دستورالعمل‌های RISC مورد علاقه توسعه دهندگان برنامه هستند. دو زیر مجموعه دیگر دستورالعمل‌های VEA (معماری محیط مجازی) است که توسط توسعه دهندگان سیستم مجازی سازی استفاده می‌شود و OEA (معماری محیط عملیاتی) که توسط توسعه دهندگان سیستم عامل استفاده می‌شود.
* **معماری پین**: عملکردهای سخت‌افزاری که یک ریزپردازنده باید در اختیار یک پلتفرم سخت‌افزاری قرار دهد، مثلاً پایه‌های x86 A20M , FERR / IGNNE یا FLUSH. همچنین پیام‌هایی که پردازنده باید منتشر کند تا حافظه نهان خارجی آزاد شود. توابع معماری پین انعطاف پذیرتر از توابع ISA است زیرا سخت‌افزار خارجی می‌تواند با رمزگذاری‌های جدید سازگار شود یا از پین به پیام تغییر کند. اصطلاح «معماری» مناسب است، زیرا توابع باید برای سیستم‌های سازگار ارائه شوند، حتی اگر روش دقیق تغییر کند.

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

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

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

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

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

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

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

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

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

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

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

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

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

### تغییر تقاضای بازار
افزایش فرکانس ساعت در مقایسه با بهبودهای کاهش قدرت طی چند سال گذشته با سرعت کمتری رشد کرده است. این امر با پایان قانون مور و تقاضا برای دوام باتری بیشتر و کاهش اندازه فناوری تلفن همراه صورت گرفته است. این تغییر در تمرکز از نرخ کلاک بالاتر به مصرف انرژی و کوچک سازی را می‌توان با کاهش قابل توجهی در مصرف برق، تا ۵۰٪، که توسط اینتل در انتشار ریز معماری Haswell گزارش شده، نشان داد. جایی که آنها معیار مصرف برق خود را از ۳۰–۴۰ وات به ۱۰–۲۰ وات کاهش دادند. مقایسه این با افزایش سرعت پردازش ۳ گیگاهرتز تا ۴ گیگاهرتز (۲۰۰۲ تا 2006) می‌شود که تمرکز در تحقیق و توسعه از فرکانس ساعت دور شده و به سمت مصرف انرژی کمتر و اشغال فضای کمتری حرکت می‌کند.

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

## منابع

* John L. Hennessy و دیوید پترسون (۲۰۰۶). معماری رایانه: رویکرد کمی (ویرایش چهارم). مورگان کافمن شابک John L. Hennessy John L. Hennessy
* بارتون، رابرت اس. "طراحی عملکردی رایانه ها"، *ارتباطات ACM* 4 (9): 405 (1961).
* بارتون، رابرت اس. "رویکرد جدیدی به طراحی کاربردی رایانه دیجیتال"، *مجموعه مقالات کنفرانس مشترک رایانه ای غربی*، مه ۱۹۶۱، صص. ۳۹۳–۳۹۶. دربارهٔ طراحی رایانه Burroughs B5000.
* بل، سی گوردون؛ و نیول، آلن (1971). "ساختارهای رایانه ای: قرائت و مثالها"، مک گرا-هیل.
* Blaauw , GA و Brooks , FP، جونیور ، "ساختار سیستم / ۳۶۰ ، قسمت اول-رئوس مطالب ساختار منطقی"، *IBM Systems Journal*، جلد ۱. ۳، نه ۲، ص. ۱۱۹–۱۳۵، ۱۹۶۴.
* Tanenbaum, Andrew S. (1979) سازمان رایانه ای ساخت یافته. صخره‌های Englewood، نیوجرسی: Prentice-Hall. شابک Tanenbaum, Andrew S. Tanenbaum, Andrew S.

## پیوند به بیرون
* ISCA: مجموعه مقالات همایش بین‌المللی معماری رایانه 
* میکرو: سمپوزیوم بین‌المللی IEEE / ACM در ریز معماری
* HPCA: سمپوزیوم بین‌المللی معماری با کارایی بالا در رایانه
* ASPLOS: کنفرانس بین‌المللی پشتیبانی معماری از زبان‌های برنامه‌نویسی و سیستم عامل‌ها 
* معاملات ACM در زمینه معماری و بهینه‌سازی کد
* معاملات IEEE در رایانه‌ها
* معماری von Neumann سیستم‌های رایانه ای

رده:علوم رایانه
رده:واحد پردازشگر مرکزی