معماری رایانه
معماری رایانه در مهندسی رایانه، مجموعه ای از قوانین و روش‌هاست که عملکرد، سازماندهی و روند اجرای سیستم‌های رایانهای را توصیف می‌کند. برخی تعاریف معماری، آن را به عنوان توصیف توانایی‌ها و مدل برنامه نویسی رایانه، تعریف می‌کنند که در عین حال جنبه اجرایی ندارد. در تعاریف دیگر، معماری رایانه شامل طراحی مجموعه معماری، طراحی معماری خرد، طراحی منطق و پیاده سازی است.
اولین معماری مستند رایانه در مکاتبات چارلز بابیج و آدا لاولاس بود که موتور تحلیلی را توصیف می‌کرد. هنگام ساخت رایانه Z1 در سال 1936 ، کنراد زوزه در دو برنامه ثبت اختراع برای پروژه‌های آینده خود توضیح داد که دستورالعمل‌های ماشین می‌توانند در همان حافظه‌ای که داده‌ها ذخیره شده‌اند ذخیره گردند. . دو مثال اولیه و مهم دیگر عبارتند از:اصطلاح "معماری" در ادبیات رایانه را می‌توان در آثار لایل آر جانسون و فردریک پی بروکس جونیور، اعضای بخش سازمان ماشین در مرکز تحقیقات اصلی 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 به عنوان یک ریزپردازنده نرم؛ یا هر دو (قبل از تعهد به فرم سخت افزاری نهایی).
رشته معماری رایانه دارای سه زیر مجموعه اصلی است: فناوری‌های دیگری نیز در معماری رایانه وجود دارد. فن آوری‌های زیر در شرکت‌های بزرگتر مانند اینتل مورد استفاده قرار می‌گیرد و در سال 2002 تخمین زده شد که 1٪ از کل معماری رایانه را شامل می‌شود:معماری کلان قابل مشاهده توسط برنامه نویسان : ابزارهای زبان‌های سطح بالاتر مانند کامپایلرها ممکن است یک رابط یا قرارداد ثابت برای برنامه نویسان با استفاده از آنها تعریف کنند، تفاوت بین ISA ، UISA و ریز معماری‌های اساسی را انتزاع کنند. برای مثال، استانداردهای C ،C ++ یا Java، معماری‌های مختلف قابل مشاهده توسط برنامه نویس را تعریف می‌کنند.
معماری رایانه مربوط به متعادل سازی عملکرد، کارایی، هزینه و قابلیت اطمینان یک سیستم رایانه‌ای است. مجموعه دستورالعمل‌های پیچیده‌تر، برنامه نویسان را قادر می‌سازد تا برنامه‌هایی با فضای کمتری بنویسند، زیرا یک دستورالعمل می‌تواند برخی از انتزاعات سطح بالاتر را رمزگذاری کند (مانند دستورالعمل حلقه x86). با این وجود، رمزگشایی دستورالعمل‌های طولانی‌تر و پیچیده‌تر برای پردازنده زمان بیشتری می‌برد و پیاده سازی آنها می‌تواند هزینه بیشتری داشته باشد. پیچیدگی بیشتر دستورالعمل‌های بزرگ، احتمال بیشتری برای قابل اعتماد نبودن در هنگام تعامل دستورالعمل‌ها به روش‌های غیرمنتظره ایجاد می‌کند.
این پیاده سازی شامل طراحی مدار مجتمع، بسته بندی، قدرت و خنک سازی است. بهینه سازی طراحی، نیاز به آشنایی با کامپایلرها، سیستم عامل‌ها برای طراحی منطقی، و بسته بندی دارد.
معماری مجموعه دستورالعمل‌ها (ISA) رابط بین نرم افزار و سخت افزار رایانه است و همچنین می‌تواند به عنوان نمای برنامه نویسان از ماشین مشاهده شود. رایانه‌ها زبان های برنامه نویسی سطح بالا مانند جاوا، C ++ یا بیشتر زبان های برنامه نویسی مورد استفاده را نمی‌فهمند. پردازنده فقط دستورالعمل‌های رمزگذاری شده را به صورت عددی، معمولاً به عنوان اعداد دودویی، می‌فهمد. ابزارهای نرم افزاری، مانند کامپایلرها، زبان‌های سطح بالا را به دستورالعمل‌هایی تبدیل می کنند که پردازنده می‌تواند آنها را درک کند.
علاوه بر دستورالعمل ها، ISA مواردی را که در دسترس یک برنامه است در رایانه تعریف می کند — به عنوان مثال، انواع داده ها، ثبات ها، حالت های آدرس دهی و حافظه. دستورالعمل ها، این موارد موجود را با فهرست های ثبات (یا نام ها) و حالت های آدرس دهی حافظه پیدا می کنند.
ISA یک رایانه معمولاً در یک کتابچه راهنمای کوچک شرح داده می‌شود که نحوه کدگذاری دستورالعمل‌ها را شرح می‌دهد. همچنین، ممکن است اسامی کوتاه (مبهم) برای دستورالعمل‌ها تعریف شود. نام‌ها را می‌توان با یک ابزار توسعه نرم افزار به نام اسمبلر تشخیص داد. اسمبلر یک برنامه رایانه‌ای است که یک فرم ISA قابل خواندن توسط انسان را به فرم قابل خواندن توسط رایانه ترجمه می‌کند. دیس اسمبلر ها نیز به طور گسترده در دسترس هستند، معمولاً در اشکال زدایی و برنامه‌های نرم افزاری، برای جداسازی و اصلاح اشکال‌ها در عملکرد در برنامه‌های باینری رایانه به کار می روند.
ISA از نظر کیفیت و کامل بودن متفاوت است. ISA خوب بین راحتی برنامه نویس (آسان بودن درک کد)، اندازه کد (مقدار کد که برای انجام یک عمل خاص مورد نیاز است)، هزینه رایانه برای تفسیر دستورالعمل‌ها (پیچیدگی بیشتر به معنی سخت افزار بیشتر برای رمزگشایی و اجرای دستورالعمل‌ها است) و سرعت رایانه (با پیچیدگی بیشتر رمزگشایی، زمان رمزگشایی سخت افزار هم بیشتر می‌شود) تعادل برقرار می‌کند. بخش حافظه نحوه تعامل دستورالعمل‌ها با حافظه و نحوه تعامل حافظه با خود را تعریف می‌کند.
در طول شبیه سازی طراحی، شبیه سازها می‌توانند برنامه‌هایی را که در یک مجموعه دستورالعمل پیشنهادی نوشته شده ‌اند، اجرا کنند. شبیه سازهای مدرن می‌توانند اندازه، هزینه و سرعت را اندازه گیری کنند تا مشخص کنند آیا ISA خاصی اهداف خود را برآورده می‌کند.
سازمان رایانه به بهینه سازی محصولات مبتنی بر عملکرد کمک می‌کند. به عنوان مثال، مهندسان نرم افزار باید قدرت پردازش پردازنده‌ها را بدانند. شاید برای دستیابی به بیشترین عملکرد با کمترین قیمت، نیاز به بهینه سازی نرم افزار داشته باشند. این امر می‌تواند به تجزیه و تحلیل کاملاً دقیق سازمان رایانه نیاز داشته باشد. برای مثال، در کارت SD ، ممکن است لازم باشد طراحان کارت را مرتب کنند تا بیشترین داده‌ها به سریع‌ترین شکل پردازش شوند.
سازمان رایانه‌ای همچنین به برنامه ریزی برای انتخاب پردازنده برای یک پروژه خاص کمک می‌کند. پروژه های چندرسانه‌ای ممکن است به دسترسی سریع داده‌ها نیاز داشته باشند، در حالی که ماشین‌های مجازی ممکن است به وقفه‌های سریع نیاز داشته باشند. بعضی اوقات بعضی از کارها به اجزای اضافی نیز احتیاج دارند. به عنوان مثال، رایانه‌ای که قادر به راه اندازی یک ماشین مجازی باشد، به سخت افزار حافظه مجازی نیاز دارد تا حافظه رایانه‌های مختلف مجزا از هم، جدا شود. سازماندهی و ویژگی‌های رایانه همچنین بر مصرف برق و هزینه پردازنده تأثیر می‌گذارد.
هنگامی که یک مجموعه دستورالعمل و معماری خرد طراحی شد، باید یک ماشین عملی ساخته شود. به این فرآیند طراحی "پیاده سازی گفته می‌شود". پیاده سازی معمولاً به عنوان طراحی معماری در نظر گرفته نمی‌شود، بلکه مهندسی طراحی سخت افزار محسوب می‌شود. پیاده سازی را می‌توان به چندین مرحله تقسیم کرد:برای پردازنده‌ها ، کل روند پیاده سازی به گونه‌ای متفاوت سازماندهی می‌شود و اغلب از آن به عنوان طراحی CPU یاد می‌شود.
شکل دقیق سیستم رایانه‌ای به محدودیت‌ها و اهداف بستگی دارد. معماری رایانه معمولاً تعادل بین استاندارد و قدرت را در مقابل عملکرد، هزینه، ظرفیت حافظه، تاخیر (تاخیر زمانی است که برای انتقال اطلاعات از یک گره به منبع لازم است) و توان تولید را برقرار می‌کند. بعضی اوقات ملاحظات دیگر مانند ویژگی‌ها، اندازه، وزن، قابلیت اطمینان و قابلیت ارتقا نیز از عوامل دیگر هستند.
رایج ترین طرح، تجزیه و تحلیل عمیق نیرو را انجام می‌دهد و نحوه کم کردن مصرف برق با حفظ عملکرد کافی را مشخص می‌کند.
افزایش فرکانس ساعت در مقایسه با بهبودهای کاهش قدرت طی چند سال گذشته با سرعت کمتری رشد کرده است. این امر با پایان قانون مور و تقاضا برای دوام باتری بیشتر و کاهش اندازه فناوری تلفن همراه صورت گرفته است. این تغییر در تمرکز از نرخ کلاک بالاتر به مصرف انرژی و کوچک سازی را می‌توان با کاهش قابل توجهی در مصرف برق، تا 50٪ ، که توسط اینتل در انتشار ریز معماری Haswell گزارش شده، نشان داد. جایی که آنها معیار مصرف برق خود را از 30-40 وات به 10-20 وات کاهش دادند. مقایسه این با افزایش سرعت پردازش 3 گیگاهرتز تا 4 گیگاهرتز (2002 تا 2006) می‌شود که تمرکز در تحقیق و توسعه از فرکانس ساعت دور شده و به سمت مصرف انرژی کمتر و اشغال فضای کمتری حرکت می کند.