You can edit almost every page by Creating an account. Otherwise, see the FAQ.

مقایسه معماری مجموعه دستورات

از EverybodyWiki Bios & Wiki
پرش به:ناوبری، جستجو

"این مقاله در حال ترجمه از ویکی انگلیسی است

لطفا حذف نشود."

یک معماری مجموعه دستورالعمل (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
  • 32 in 4-bit
  • 16 in 8-bit
  • 8 in 16-bit
  • 4 in 32-bit
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 VPBLENDVPx)[۳]

Register–Memory CISC
  • 8 (+ 4 or 6 segment reg.) (16/32-bit)
  • 16 (+ 2 segment reg. gs/cs) (64-bit)
  • 32 with AVX-512
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,

SSE2, PAE, x86-64, SSE3, SSSE3, SSE4,

BMI, AVX, AES, FMA, XOP, F16C

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
  • 15
Fixed (32-bit) Condition code Bi NEON, Jazelle, VFP,

TrustZone, LPAE

No
Thumb/T32 32 ARMv4T-ARMv8 1994 3 Register–Register RISC
  • 7 with 16-bit Thumb instructions
  • 15 with 32-bit Thumb-2 instructions
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
  1. 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 محتوایی ندارد.
  2. "Russian Virtual Computer Museum – Hall of Fame – Nikolay Petrovich Brusentsov".صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
  3. "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 محتوایی ندارد.
  4. "Synopsys Introduces New 64-bit ARC Processor IP Delivering up to 3x Performance Increase for High-End Embedded Applications".صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
  5. "ARMv8 Technology Preview" (PDF). Archived from the original (PDF) on 2018-06-10. Retrieved 2011-10-28.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
  6. "ARM goes 64-bit with new ARMv8 chip architecture". 27 October 2011. Retrieved 26 May 2012.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
  7. "Hot Chips 30 conference; Fujitsu briefing" (PDF). Toshio Yoshida. Archived from the original (PDF) on 2020-12-05.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
  8. "AVR32 Architecture Document" (PDF). Atmel. Retrieved 2008-06-15.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
  9. "Blackfin manual" (PDF). analog.com.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
  10. "Blackfin Processor Architecture Overview". Analog Devices. Retrieved 2009-05-10.صفحه پودمان:Citation/CS1/en/styles.css محتوایی ندارد.
  11. "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"/> یافت نشد.



Read or create/edit this page in another language[ویرایش]