مقایسه معماری مجموعه دستورات
"این مقاله در حال ترجمه از ویکی انگلیسی است
لطفا حذف نشود."
یک معماری مجموعه دستورالعمل (ISA)، مدلی انتزاعی از یک کامپیوتر است که به آن معماری کامپیوتر نیز گفته میشود. تحقق یک ISA، پیاده سازی نامیده میشود. یک ISA اجازه اجرای پیاده سازیهای چندگانه را میدهد که ممکن است از نظر عملکرد، اندازه فیزیکی، هزینه مالی و غیره متفاوت باشند. این به دلیل آن است که ISA به عنوان یک رابط بین نرم افزار و سخت افزار عمل میکند. نرم افزاری که برای یک ISA نوشته شدهاست، می تواند روی پیاده سازیهای مختلف همان ISA اجرا شود. این موضوع باعث شدهاست که سازگاری باینری بین نسلهای مختلف رایانهها به راحتی به دست آید و مجموعههای کامپیوتری توسعه یابند. هر دوی این پیشرفتها موجب کاهش هزینه رایانهها و افزایش کاربرد آنها شدهاست و به همین دلایل، ISA یکی از مهمترین مفاهیم انتزاعی در محاسبات امروزی است.
یک ISA همه چیزهایی را که یک برنامه نویس زبان ماشین برای برنامه نویسی یک کامپیوتر باید بداند، را تعریف میکند. آنچه که یک ISA تعریف میکند بین ISA ها متفاوت است. به طور کلی، ISA ها انواع دادههای پشتیبانی شده، وضعیت موجود (مانند حافظه اصلی و ثباتها) و مفاهیم آنها (مانند ثبات حافظه و حالت های آدرس دهی)، مجموعه دستورالعملها (مجموعه دستورالعملهای ماشین که شامل یک زبان ماشین کامپیوتر است) و مدل ورودی/خروجی را تعریف میکنند.
پایه[ویرایش]
در دهههای اولیه محاسبات کامپیوتری، رایانههایی وجود داشتند که از اعداد دودویی، اعشاری[۱] و حتی اعداد مبنای سه استفاده می کردند. [۲] کامپیوترهای معاصر تقریباً منحصراً باینری هستند.
بیتها[ویرایش]
معماریهای کامپیوتر اغلب به عنوان معماری n-بیت توصیف میشوند. امروزه مقدار n اغلب 8، 16، 32 یا 64 است، اما اندازههای دیگری نیز استفاده شدهاست (از جمله 6، 12، 18، 24، 30، 36، 39، 48، 60). این در واقع یک سادهسازی است، زیرا معماری رایانه اغلب دارای چند اندازه داده «طبیعی» در مجموعه دستورالعملها است. اما اجرای سختافزاری آنها میتواند بسیار متفاوت باشد. بسیاری از ISAها دستورالعملهایی دارند که در برخی از پیادهسازیهای آن، بر روی نصف و یا دو برابر اندازه مسیردادههای داخلی اصلی پردازنده عمل میکنند. نمونههایی از این نوع Z80 ،MC68000 و IBM System/360 هستند. در این نوع پیادهسازیها، یک عملیات دوبرابر گستردهتر معمولاً حدود دوبرابر سیکل ساعت طول میکشد (که در پیادهسازیهایی با کارایی بالا صدق نمیکند). به عنوان مثال، در مدل ۶۸۰۰۰، این به معنای ۸ به جای ۴ تیک ساعت است و این تراشه خاص ممکن است به عنوان یک معماری ۳۲-بیتی با اجرای ۱۶-بیتی توصیف شود. معماری مجموعه دستورالعمل(ISA) IBM System/360 به صورت ۳۲-بیتی است، اما چندین مدل از سری System/360، مانند IBM System/360 Model 30، مسیردادههای داخلی کوچکتری دارند، درحالی که مدلهای دیگر، مانند 360/195، دارای مسیردادههای داخلی بزرگتر هستند. عرض دیتابیس خارجی برای تعیین عرض معماری استفاده نمیشود. سریهای NS32008، NS32016 و NS32032 اساساً همان تراشههای ۳۲-بیتی با گذرگاههای داده خارجی متفاوت بودند. NS32764 یک گذرگاه ۶۴-بیتی داشت و از ثبات ۳۲-بیتی استفاده میکرد. ریزپردازندههای اولیه ۳۲-بیتی نیز معمولا یک آدرس ۲۴-بیتی داشتند، همانطور که پردازندههای System/360 نیز چنین بودند.
عملوندها[ویرایش]
تعداد عملوندها یکی از عواملیست که احتمالا نشاندهنده عملکرد مجموعه دستورالعمل باشد. معماری سه عملوندی اجازه خواهد داد که
A:= B + C
در یک دستورالعمل محاسبه شود.
معماری دو عملوندی اجازه خواهد داد که
A: = A + B
در یک دستور محاسبه شود. بنابراین برای شبیهسازی یک دستور سه عملوندی باید دو دستور اجرا شود.
A := B A: = A + C
اندیان[ویرایش]
یک معماری ممکن است از اندیان بزرگ یا اندیان کوچک و یا هر دو استفاده کند، یا برای استفاده از هر دو قابل تنظیم باشد. پردازندههای اندیان کوچک، بایتهایی با کمترین ارزش از یک عدد چند بایتی را در مکانی از حافظه با کمترین شماره مرتب میکنند. در عوض، معماریهای اندیان بزرگ، بایتهایی را با بیشترین ارزش را در آدرسی با کمترین شماره مرتب میکنند. معماری x86 و همچنین چندین نوع از معماری 8-بیتی، از نوع اندیان کوچک هستند. بیشتر معماریهای RISC مانند (SPARC، Power، PowerPC، MIPS) در ابتدا از نوع اندیان بزرگ بودند (ARM از نوع اندین کوچک بود)، اما بسیاری (از جمله همان ARM) اکنون به عنوان هرکدام از آنها قابل تنظیم هستند.
اندیان فقط برای پردازشگرهایی اعمال میشود، که به واحدهای داده (مانند بایتها) که کوچکتر از کلمه ماشین آدرسپذیر پایه هستند، آدرسدهی منحصر به فردی را میدهند.
مجموعههای دستورالعمل[ویرایش]
جدول زیر اطلاعات اولیه در مورد معماری مجموعه دستورالعملها(ISA) را مقایسه میکند.
یادداشتها:
- معمولاً تعداد رجیسترها عددی از توان دو است، مثلاً ۸، ۱۶، ۳۲. در برخی موارد، یک شبه رجیستر سختافزاری به صفر، بهعنوان «بخشی» از فایلهای ثبات معماری، بیشتر برای سادهسازی حالتهای نمایهسازی گنجانده میشود. ستون «ثبات ها» فقط «ثبات ها» را که در هر لحظه با دستورالعملهای عمومی قابل استفاده هستند، شمارش میکند. معماری ها همیشه شامل ثبات هایی با هدف خاص مانند شمارنده برنامه (ثبات PC) هستند. آن ها به حساب نمی آیند مگر اینکه ذکر شود. توجه داشته باشید که برخی از معماری ها، مانند SPARC، دارای پنجره های ثبت هستند . برای آن معماری ها، شمارش نشان می دهد که چه تعداد ثبات در یک پنجره ثبت وجود دارد. همچنین ثبات های غیرمعماری برای تغییر نام ثبات به حساب نمی آیند.
- در ستون "نوع" عبارت "Register–Register" مترادف یک نوع معماری متداول، "معماری بار-ذخیره" است، به این معنی که هیچ دستورالعملی نمیتواند مستقیماً به حافظه دسترسی داشته باشد به جز برخی موارد خاص، یعنی بارگیری یا ذخیره از ثبات(ها) ، به استثنای دستورالعمل های قفل حافظه برای عملیات اتمی.
- در ستون "نوع اندیان" مقدار "Bi" به این معنی است که اندیان قابل تنظیم شدن است.
معماری | تعداد بیتها | نسخه | سال انتشار | بیشینه تعداد# | نوع | طراحی | ثباتها(به استثنا FP/vector) | رمزگذاری دستورعمل | Branch evaluation | نوع اندیان | افزونهها | Open | Royalty
free |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
6502 | 8 | 1975 | 1 | Register–Memory | CISC | 3 | Variable (8- to 24-bit) | Condition register | کوچک | ||||
6800 | 8 | 1974 | 1 | Register–Memory | CISC | 3 | Variable (8- to 32-bit) | Condition register | بزرگ | ||||
6809 | 8 | 1978 | 1 | Register–Memory | CISC | 3 | Variable (8- to 32-bit) | Condition register | بزرگ | ||||
680x0 | 32 | 1979 | 2 | Register–Memory | CISC | 8 data and 8 address | Variable | Condition register | بزرگ | ||||
8080 | 8 | 1974 | 2 | Register–Memory | CISC | 7 | Variable (8 to 24 bits) | Condition register | کوچک | ||||
8051 | 32 (8→32) | 1977? | 1 | Register–Register | CISC |
|
Variable (8-bit to 128 bytes) | Compare and branch | کوچک | ||||
x86 | 16, 32, 64
(16→32→64) |
1978 | 2 (integer)
3 (AVX)[persian-alpha ۱]
4 (FMA4 and |
Register–Memory | CISC |
|
Variable (8086 ~ 80386: variable between 1 and 6 bytes /w MMU + intel SDK, 80486: 2 to 5 bytes with prefix, pentium and onward: 2 to 4 bytes with prefix, x64: 4 bytes prefix, third party x86 emulation: 1 to 15 bytes w/o prefix & MMU . SSE/MMX: 4 bytes /w prefix AVX: 8 Bytes /w prefix) | Condition code | کوچک | x87, IA-32, MMX, 3DNow!, SSE, | No | No | |
Alpha | 64 | 1992 | 3 | Register–Register | RISC | 32 (including "zero") | Fixed (32-bit) | Condition register | Bi | MVI, BWX, FIX, CIX | No | ||
ARC | 16/32/64 (32→64) | ARCv3[۴] | 1996 | 3 | Register–Register | RISC | 16 or 32 including SP
user can increase to 60 |
Variable (16- or 32-bit) | Compare and branch | Bi | APEX User-defined instructions | ||
ARM/A32 | 32 | ARMv1–v9 | 1983 | 3 | Register–Register | RISC |
|
Fixed (32-bit) | Condition code | Bi | NEON, Jazelle, VFP,
TrustZone, LPAE |
No | |
Thumb/T32 | 32 | ARMv4T-ARMv8 | 1994 | 3 | Register–Register | RISC |
|
Thumb: Fixed (16-bit), Thumb-2:
Variable (16- or 32-bit) |
Condition code | Bi | NEON, Jazelle, VFP,
TrustZone, LPAE |
No | |
Arm64/A64 | 64 | ARMv8-A[۵] | 2011[۶] | 3 | Register–Register | RISC | 32 (including the stack pointer/"zero" register) | Fixed (32-bit), Variable (32-bit or 64-bit for FMA4 with 32-bit prefix[۷]) | Condition code | Bi | SVE and SVE2 | ||
AVR | 8 | 1997 | 2 | Register–Register | RISC | 32
16 on "reduced architecture" |
Variable (mostly 16-bit, four instructions are 32-bit) | Condition register,
skip conditioned on an I/O or general purpose register bit, compare and skip |
کوچک | ||||
AVR32 | 32 | Rev 2 | 2006 | 2–3 | RISC | 15 | Variable[۸] | بزرگ | Java virtual machine | ||||
Blackfin | 32 | 2000 | 3[۹] | Register–Register | RISC[۱۰] | 2 accumulators
8 data registers 8 pointer registers 4 index registers 4 buffer registers |
Variable (16- or 32-bit) | Condition code | کوچک[۱۱] | ||||
CDC Upper 3000 series | 48 | 1963 | 3 | Register–Memory | CISC | 48-bit A reg., 48-bit Q reg., 6 15-bit B registers, miscellaneous | Variable (24- or 48-bit) | Multiple types of jump and skip | بزرگ | ||||
CDC 6000Central Processor (CP) | 60 | 1964 | 3 | Register–Register | n/a[persian-alpha ۲] | 24 (8 18-bit address reg.,
8 18-bit index reg., 8 60-bit operand reg.) |
Variable (15-, 30-, or 60-bit) | Compare and branch | n/a[persian-alpha ۳] | Compare/Move Unit | No | No | |
CDC 6000Peripheral Processor (PP) | 12 | 1964 | 1 or 2 | Register–Memory | CISC | 1 18-bit A register, locations 1–63 serve as index registers for some instructions | Variable (12- or 24-bit) | Test A register, test channel | n/a[persian-alpha ۴] | additional Peripheral Processing Units | No | No |
- ↑ da Cruz, Frank (October 18, 2004). "The IBM Naval Ordnance Research Calculator". Columbia University Computing History. Retrieved January 28, 2019.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "Russian Virtual Computer Museum – Hall of Fame – Nikolay Petrovich Brusentsov".صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "AMD64 Architecture Programmer's Manual Volume 6: 128-Bit and 256-Bit XOP and FMA4 Instructions" (PDF). AMD. November 2009.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "Synopsys Introduces New 64-bit ARC Processor IP Delivering up to 3x Performance Increase for High-End Embedded Applications".صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "ARMv8 Technology Preview" (PDF). Archived from the original (PDF) on 2018-06-10. Retrieved 2011-10-28.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "ARM goes 64-bit with new ARMv8 chip architecture". 27 October 2011. Retrieved 26 May 2012.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "Hot Chips 30 conference; Fujitsu briefing" (PDF). Toshio Yoshida. Archived from the original (PDF) on 2020-12-05.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "AVR32 Architecture Document" (PDF). Atmel. Retrieved 2008-06-15.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "Blackfin manual" (PDF). analog.com.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "Blackfin Processor Architecture Overview". Analog Devices. Retrieved 2009-05-10.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
- ↑ "Blackfin memory architecture". Analog Devices. Archived from the original on 2011-06-16. Retrieved 2009-12-18.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
This article "مقایسه معماری مجموعه دستورات" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:مقایسه معماری مجموعه دستورات. Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.
خطای یادکرد: برچسب <ref>
برای گروهی به نام «persian-alpha» وجود دارد، اما برچسب متناظر با <references group="persian-alpha"/>
یافت نشد.