مجموعه دستورالعمل: تفاوت میان نسخهها
محتوای حذفشده محتوای افزودهشده
جزبدون خلاصۀ ویرایش برچسبها: متن دارای ویکیمتن نامتناظر ویرایشگر دیداری |
جزبدون خلاصۀ ویرایش برچسبها: متن دارای ویکیمتن نامتناظر ویرایشگر دیداری |
||
خط ۱:
در علوم رایانه، یک '''معماری مجموعه ی دستورالعمل''' (instruction set architecture ('''ISA'''))، نوعی مدل انتزاعی از یک رایانه است که به آن '''معماری''' یا '''معماری رایانه''' نیز می گویند. نمود یک
به طور کلی یک
یک
(binary compatibility) بین پیاده سازی ها می شود. این امر امکان پیاده سازی های متعدد از یک
اگر یک [[سیستم عامل]]، یک [[واسط دودویی کاربردی|رابط باینری اپلیکیشن]](application binary interface) استاندارد و سازگار را برای یک
یک
این قابلیت های فراهم کردن سازگاری باینری، باعث شده است که
== مرور ==
معماری مجموعه دستورالعمل را باید از ریز معماری(microarchitecture) افتراق داد. ریز معماری، مجموعه ای از تکنیک های طراحی پردازنده است که در یک پردازنده خاص برای پیاده سازی مجموعه ی دستورالعمل استفاده می شود. پردازنده هایی با ریز معماری های متفاوت می توانند یک مجموعه دستورالعمل مشترک داشته باشند. برای مثال، اینتل پنتیوم و Advanced Micro Devices Athlon تقریباً نسخههای مشابهی از مجموعه دستورالعمل x86 را پیاده سازی می کنند، اما دارای طراحی داخلی کاملا متفاوتی هستند.
== طبقه بندی
یک
|url= http://cs.stanford.edu/people/eroberts/courses/soco/projects/risc/risccisc/
|title= RISC Architecture: RISC vs. CISC
خط ۱۷:
}}</ref>
سایر انواع
معماری هایی با پیچیدگیهای حتی کمتر مورد مطالعه قرار گرفته اند، نظیر: ''رایانه با مجموعه دستورالعمل حداقلی'' ( minimal instruction set computer) و ''رایانه با یک مجموعه دستورالعمل'' (one instruction set computer). این موارد از لحاظ تئوری اهمیت دارند اما استفاده تجاری نداشته اند.
خط ۳۷:
==== عملیات محاسباتی و منطقی ====
* این عملیات، مقادیر دو رجیستر را ''جمع''، ''تفریق''، ''ضرب''، یا ''تقسیم'' می کنند و مقدار حاصل را در یک رجیستر قرار می دهند، و احتمالاً یک یا بیش از یک کد شرطی را در یک رجیستر وضعیت ست می کنند.<br>
** ''افزایش مقدار'' یا ''کاهش مقدار'' در برخی
*''عملیات بیت به بیت'' را انجام می دهند، مثلاً بیت های متناظر را در یک جفت رجیستر با یکدیگر AND یا OR می کنند یا اینکه مکمل هر بیت در یک رجیستر را به دست می آورند.<br>
*دو مقدار را در رجیسترها با هم ''مقایسه'' میکنند (برای مثال، برای اینکه بدانند آیا یکی کوچکتر است یا با هم برابرند).<br>
خط ۱۰۳:
***برخلاف دو-عملوند یا یک-عملوند، این حالت اجازه می دهد تا هر سه مقدار a، b، و c برای استفاده مجدد بیشتر، در رجیستر ها موجود باشند.<br>
*عملوند های بیشتر-برخی ماشین های CISC، اجازه ی انواعی از حالت های آدرس دهی را می دهند که امکان استفاده از بیش از سه عملوند را فراهم می کند (رجیسترها یا دسترسیهای حافظه)، مثلاً: دستورالعمل ازیابی چند جمله ای VAX "POLY" .
به دلیل تعداد زیاد بیت های مورد نیاز برای کدگذاری سه رجیستر یک دستورالعمل سه-عملوندی، معماری های RISC که دارای دستورالعمل های ۱۶ بیتی هستند، تماماً دارای طراحی های دو-عملوندی هستند، نظیر: Atmel AVR, TI MSP43 و برخی نسخههای ARM Thumb. معماری های RISC که دارای دستورالعمل های ۳۲ بیتی هستند، معمولاً دارای طراحیهای سه-عملوندی هستند، نظیر: [[معماری آرم|ARM]], AVR32, MIPS, Power
هر دستورالعمل تعدادی عملوند (رجیستر ها، مکان های حافظه، یا مقادیر فوری) را "به طور آشکار" مشخص می کند. برخی دستورالعملها یک یا بیش از یک عملوند را به طور ضمنی فراهم می کنند، مثلاً از طریق ذخیره شدن در بالای یک پشته، یا در یک رجیستر غیر مستقیم. در حالتی که برخی از عملوند ها بطور ضمنی داده میشوند، به عملوند های کمتری در دستورالعمل نیاز هست. هنگامی که یک "عملوند مقصد" به طور آشکار مقصد را مشخص می کند، باید عملوند دیگری نیز فراهم شود. در نتیجه تعداد عملوند های کدگذاری شده در یک دستورالعمل، ممکن است با تعداد آرگومان های مورد نیاز از نظر ریاضی برای یک عملیات منطقی یا محاسباتی ( [[آریتی (ریاضی)|arity]]) تفاوت داشته باشد. عملوند ها یا در نمایش "آپ کد" دستورالعمل، کدگذاری میشوند و یا اینکه به صورت مقادیر یا آدرس، به دنبال آپ کد می آیند.
خط ۱۳۹:
هر مجموعه دستورالعمل داده شده را می توان به شیوههای متفاوتی پیادهسازی کرد. تمام شیوه های پیاده سازی یک مجموعه دستورالعمل خاص، یک مدل برنامه نویسی مشابه فراهم میکند. و تمام پیاده سازی های این مجموعه دستورالعمل، قادرند تا فایل یا برنامه های قابل اجرای مشابهی را اجرا کنند. شیوه های مختلف پیاده سازی یک مجموعه دستورالعمل، موجب توازن های مختلفی بین هزینه، عملکرد، مصرف انرژی، اندازه، و ... میشود.
مهندسان در هنگام طراحی کردن [[ریزمعماری|ریز معماری]] یک پردازنده، از قطعات مدار الکترونیکی شش میخ شده( hard-wired) (که معمولاً به طور جداگانه طراحی میشوند)، همچون جمع کننده ها، مالتی پلکسر ها، شمارنده ها، رجیسترها، ALU ها و ... استفاده می کنند. سپس معمولاً از انواعی از زبانهای انتقال رجیستر ( register transfer language) برای توصیف کدگشایی و توالی بندی هر دستورالعمل
* ۱. برخی طراحی های رایانه، تمام کد گشایی و توالی بندی مجموعه دستورالعمل را شش میخ می کنند، درست شبیه مابقی ریز معماری.<br>
* ۲. طراحی های دیگر از روتین های ریزکد یا جداول (یا هر دو) برای این کار استفاده میکنند- به طور معمول به شکل [[حافظه تنها خواندنی|ROM]] های روی چیپ یا PLA ها یا هر دو (اگرچه به طور تاریخی RAM ها و ROM های جداگانه استفاده شده اند). Western Digital MCP-1600 یک مثال قدیمی است که از یک ROM اختصاصی مجزا برای میکرو کد استفاده می کند.
خط ۱۴۶:
برخی طراحی های پردازنده از یک مخزن کنترل قابل نوشتن (writable control store) استفاده می کنند- آنها مجموعه دستورالعمل مورد نظر را در یک RAM قابل نوشتن یا فلش، در داخل پردازنده (مثلاً پردازنده Rekursiv) یا یک FPGA (رایانش قابل پیکربندی) کامپایل می کنند. <ref>{{cite web|url=http://cpushack.net/CPU/cpu7.html |title=Great Microprocessors of the Past and Present (V 13.4.0) |website=cpushack.net |access-date=2014-07-25}}</ref>
یک
معمولاً جزئیات پیاده سازی مورد نظر، تاثیر بسیاری روی دستورالعمل های خاص انتخاب شده برای مجموعه دستورالعمل مورد نظر دارند. برای مثال، بسیاری از پیاده سازی های [[خط لوله (رایانه)|خط لوله]] دستورالعمل، فقط اجازه می دهند تا یک بارگذاری حافظه یا ذخیره سازی حافظه به ازای هر دستورالعمل انجام شود، که منجر به معماری بارگیری-ذخیره سازی (RISC) می شود. به عنوان مثال دیگر، برخی روشهای ابتدایی پیاده سازی خط لوله دستورالعمل، منجر به یک درگاه تاخیر ( delay slot) شد.
|