Порівняння архітектур систем команд

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Фактори[ред. | ред. код]

Біти[ред. | ред. код]

Архітектура ЕОМ часто описується як n-бітова архітектура, де n найчастіше дорівнює 8, 16, 32, 64 і так далі, що фактично є сильним спрощенням. У архітектури ЕОМ часто є декілька більш-менш «природних» розмірів даних в наборі команд, але їх впровадження апаратними засобами може сильно відрізнятися. У багатьох архітектур є системи команд, що впливають на зменшення і/або збільшення удвічі розміру відповідних процесорів головного операційного автомата. Прикладами є Intel 8080, Zilog Z80, Motorola 68000, а також багато інших. На цьому типі реалізації удвічі ширший розмір операції, як правило, також займає удвічі більшу кількість тактів (що не є типовим для високоефективної реалізації). На 68000, наприклад, це означає, що замість 4 тиків годинника, їх було б 8. Цей чип може бути описаний як 32-бітова архітектура з 16-бітовою реалізацією. Зовнішня ширина шини даних часто не допомагає визначити ширину архітектури; NS32008, NS32016 та NS32032[en] є також 32-бітовими чипами з різними зовнішніми шинами даних. NS32764 мав 64-бітову шину, але використав 32-бітові регістри.

Ширина адресної шини в різних випадках може або відрізнятися від ширини шини даних, або бути такою ж. У ранніх 32-бітових мікропроцесорів часто була 24-бітова адресна шина, як це була, наприклад, у процесорах IBM System/360.

Операнди[ред. | ред. код]

Число операндів - один з факторів, які можуть повідомити про виконання набору команд. Архітектура з трьома операндами дозволить

A: = B + C

бути вичисленим в одній інструкції. Архітектура з двома операндами дозволить

 A: = A + B

бути вичисленим в одній інструкції, таким чином, дві системи команд повинні бути виконані, щоб моделювати єдину інструкцію з трьома операндами

A: = B
A: = A + C


Порядок байтів[ред. | ред. код]

Докладніше: Порядок байтів

Архітектура може використовувати порядок байтів "від старшого до молодшого" (англ. big - endian, дослівно: "тупокінцевий") або "від молодшого до старшого" (англ. little - endian, дослівно: "загострений"), так само може використати як обидва, так і бути налаштованою, щоб використовувати окремо кожен з них. При порядку від молодшого до старшого запис розпочинається з молодшого байта і закінчується старшим. Цей порядок запису прийнятий в пам'яті персональних комп'ютерів з x86-процесорами, у зв'язку з чим іноді його називають інтеловським порядком байтів (по назві фірми-творця архітектури x86). В протилежність до порядку "від старшого до молодшого", little-endian підтримують менше кросс-платформенних протоколів і форматів даних; істотними виключеннями є: USB, конфігурація PCI, таблиця розділів GUID, рекомендації FidoNet. Багато процесорів можуть працювати і в порядку від молодшого до старшого, і в зворотному (bi-endian), наприклад, ARM, PowerPC.

Набори команд[ред. | ред. код]

Кожен процесор має набір регістрів, які містять поточний стан процесора. Звичайне число регістрів є степенем числа два, наприклад, 8, 16, 32. В деяких випадках зашитий до нуля псевдорегістр, включений як "частина" файлів регістра архітектури, головним чином щоб спростити способи індексації. Ця таблиця тільки рахує ціле число "регістрів", які вживаються загальним набором команд у будь-який момент. Архітектура завжди включає регістри спеціального призначення, такі як покажчик програми (PC).

Слід зауважити, що у деякої архітектури, такої як SPARC, є вікна регістра; для цієї архітектури кількість нижче вказує, скільки регістрів доступні у вікні регістра. Крім того, неспроектовані регістри для перейменування регістра не пораховані.

Також варто відмітити, що загальний тип архітектури "завантаження-зберігання" є синонімом для "Регістра Регістра", вказаного в таблиці нижче і означає відсутність інструкцій доступу до пам'яті окрім спеціального - завантаження до регістра(ів) - і збереження з регістра(ів) - за можливими виключеннями атомних операцій по пам'яті для блокування.

Таблиця нижче порівнює основну інформацію про набори команд, які будуть здійснені в архітектурі центрального процесора:

Архітектура Біти Версія Запроваджена Макс. число Операндів Тип Дизайн Процесори Кодування команд Обчислення переходу Порядок байтів Розширення Відкрита Безкоштовна
Alpha 64 1992 3 Register Register RISC 32 (Включно "0") Фіксоване (32-bit) Condition register Bi MVI, BWX, FIX, CIX Ні Невідомий
ARM 32/16 ARMv7 та новіші 1983 3 Register Register RISC 7 in 16-bit thumb mode, 15 in 32-bit Фіксоване (32-bit), Thumb: Фіксоване (16-bit), Thumb-2: Змінне (16- and 32-bit) Condition code Bi NEON, Jazelle, VFP, TrustZone, LPAE Невідомий Ні
ARMv8-A 64/32 ARMv8-A[1] 2011[2] 3 Register Register RISC 31 Фіксоване (32-bit). In ARMv7 compatibility mode: Thumb: Фіксована (16-bit), Thumb-2: Змінна (16- and 32-bit), A64 Condition code Bi None (all extensions of ARMv7 are non-optional) Невідомий Ні
AVR 8 1997 2 Register Register RISC 32 (16 on "reduced architecture") Змінне (mostly 16-bit, four instructions are 32-bit) Condition register, skip conditioned on an I/O or general purpose register bit, compare and skip Little Невідомий Невідомий
AVR32 32 Rev 2 2006 2–3 RISC 15 Змінне[3] Big Java Virtual Machine Невідомий Невідомий
Blackfin 32 2000 RISC[4] 8 Little[5] Невідомий Невідомий
Crusoe 32 2000 1 Register Register[6] VLIW[6][7] 1 in native push stack mode 6 in x86 emulation, 12 integer + 48 shadow in virtual stat [6][7] Змінне (64- or 128-bit)[7] Condition code[6] Little
DLX 32 1990 3 RISC 32 Фіксоване (32-bit) Big Невідомий Невідомий
eSi-RISC 16/32 2009 3 Register Register RISC 8–72 Змінне (16- or 32-bit) Compare and branch and condition register Bi User-defined instructions Ні Ні
Itanium (IA-64) 64 2001 Register Register EPIC 128 Condition register Bi (selectable) Intel Virtualization Technology Ні Ні
M32R 32 1997 RISC 16 Фіксоване (16- or 32-bit) Bi Невідомий Невідомий
Motorola 68k 32 1979 2 Register Memory CISC 8 data and 8 address Змінне Condition register Big Невідомий Невідомий
Mico32 32 2006 3 Register Register RISC 32[8] Фіксоване (32-bit) Compare and branch Big User-defined instructions Так[9] Так
MIPS 64 (32→64) 5 1981 1–3 Register Register RISC 4–32 (Включно: "0") Фіксоване (32-bit) Condition register Bi MDMX, MIPS-3D Невідомий Ні
MMIX 64 1999 3 Register Register RISC 256 Фіксоване (32-bit) Big Так Так
6502 8 1975 1 Register Memory CISC 1 Змінне (8- to 32-bit) Condition register Little
65k 64 (8→64)[10] 2006? 1 Memory Memory[джерело?] CISC 1 Змінне (8-bit to 256 bytes) Compare and branch[джерело?] Little
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 Змінне (8-bit to 128 bytes) Compare and branch Little
NS320xx 32 1982 5 Memory Memory CISC 8 Змінний алгоритм Хаффмана Condition code Little BitBlt instructions Невідомий Невідомий
OpenRISC 32, 64 2010 3 Register Register RISC 16 or 32 Фіксоване Так Так
PA-RISC (HP/PA) 64 (32→64) 2.0 1986 3 Register Register RISC 32 Фіксоване (32-bit) Compare and branch Big → Bi Multimedia Acceleration eXtensions (MAX), MAX-2 Ні Невідомий
PowerPC 32/64 (32→64) 2.07[11] 1991 3 Register Register RISC 32 Фіксоване (32-bit), Variable Condition code Big/Bi AltiVec, APU, VSX, Cell Так Ні
Rx 64/32/16 2000 3 Memory Memory CISC 4 integer + 4 address Змінне Compare and branch Little Невідомий Ні
RISC-V 32, 64, 128 2010 Register Register RISC 32 (Включно: "0") Змінне Compare and branch Little Так Так
S+core 16/32 2005 RISC Little Невідомий Невідомий
SPARC 64 (32→64) OSA2015[12] 1985 3 Register Register RISC 32 (Включно: "0") Фіксоване (32-bit) Condition code Big → Bi VIS 1.0, 2.0, 3.0, 4.0 Так Так[13]
SuperH (SH) 32 1990-ті 2 Register Register / Register Memory RISC 16 Фіксоване (16- or 32-bit), Variable Condition code (single bit) Bi Невідомий Невідомий
System/360 / System/370 / z/Architecture 64 (32→64) 3 1964 Register Memory / Memory Memory CISC 16 Змінне Condition code Big Невідомий Невідомий
Transputer 32 (4→64) 1987 1 Stack machine MISC 0 Змінне (8 ~ 120 bytes) Compare and branch Little
VAX 32 1977 6 Memory Memory CISC 16 Змінне Compare and branch Little VAX Vector Architecture Невідомий Невідомий
x86 16, 32, 64 (16→32→64) 1978 2 (integer)
3 (AVX-512 only)
Register Memory CISC 8 in 16/32-bit, 16 in 64-bit Змінне Condition code Little x87, IA-32, MMX, 3DNow!, SSE, SSE2, PAE, x86-64, SSE3, SSE4, SSE5, AVX, AES, FMA Ні Ні
Z80 8 1976 2 Register Memory CISC 8 Змінне (8 to 32 bits) Condition register Little
Архітектура Біти Версія Запроваджена Макс. число Операндів Тип Дизайн Процесори Кодування команд Обчислення переходу Порядок байтів Розширення Відкрита Безкоштовна

Див. також[ред. | ред. код]

Примітки[ред. | ред. код]

  1. ARMv8 Technology Preview. Архів оригіналу за 10 червня 2018. Процитовано 27 жовтня 2015. 
  2. ARM goes 64-bit with new ARMv8 chip architecture. Процитовано 26 травня 2012. 
  3. AVR32 Architecture Document. Atmel. Процитовано 15 червня 2008. 
  4. Blackfin Processor Architecture Overview. Analog Devices. Архів оригіналу за 22 травня 2009. Процитовано 10 травня 2009. 
  5. Blackfin memory architecture. Analog Devices. Архів оригіналу за 16 червня 2011. Процитовано 18 грудня 2009. 
  6. а б в г Crusoe Exposed: Transmeta TM5xxx Architecture 2. Real World Technologies. 
  7. а б в Alexander Klaiber (January 2000). The Technology Behind Crusoe Processors. Transmeta Corporation. Процитовано 6 грудня 2013. 
  8. LatticeMico32 Architecture. Lattice Semiconductor. Процитовано 18 грудня 2009. 
  9. Open Source Licensing. Lattice Semiconductor. Процитовано 18 грудня 2009. 
  10. The 65k Project. Advanced 6502. Процитовано 20 грудня 2013. 
  11. Power ISA 2.07. IBM. Архів оригіналу за 29 жовтня 2015. Процитовано 12 серпня 2013. 
  12. http://www.oracle.com/technetwork/server-storage/sun-sparc-enterprise/documentation/sparc-processor-2516655.html Oracle SPARC Processor Documentation
  13. http://sparc.org/technical-documents/#ArchLic SPARC Architecture License