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

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

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

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

Архітектура ЕОМ часто описується як 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
  2. ARM goes 64-bit with new ARMv8 chip architecture. Процитовано 26 May 2012. 
  3. AVR32 Architecture Document. Atmel. Процитовано 2008-06-15. 
  4. Blackfin Processor Architecture Overview. Analog Devices. Процитовано 2009-05-10. 
  5. Blackfin memory architecture. Analog Devices. Процитовано 2009-12-18. 
  6. а б в г Crusoe Exposed: Transmeta TM5xxx Architecture 2. Real World Technologies. 
  7. а б в Alexander Klaiber (January 2000). The Technology Behind Crusoe Processors. Transmeta Corporation. Процитовано December 6, 2013. 
  8. LatticeMico32 Architecture. Lattice Semiconductor. Процитовано 2009-12-18. 
  9. Open Source Licensing. Lattice Semiconductor. Процитовано 2009-12-18. 
  10. The 65k Project. Advanced 6502. Процитовано 20 December 2013. 
  11. Power ISA 2.07. IBM. Процитовано 2013-08-12. 
  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