Фактори
Біти
Архітектура ЕОМ часто описується як 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.
Операнди
Число операндів - один з факторів, які можуть повідомити про виконання набору команд. Архітектура з трьома операндами дозволить
бути вичисленим в одній інструкції.
Архітектура з двома операндами дозволить
бути вичисленим в одній інструкції, таким чином, дві системи команд повинні бути виконані, щоб моделювати єдину інструкцію з трьома операндами
Порядок байтів
Архітектура може використовувати порядок байтів "від старшого до молодшого" (англ. 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
|
|
|
|
Архітектура
|
Біти
|
Версія
|
Запроваджена
|
Макс. число Операндів
|
Тип
|
Дизайн
|
Процесори
|
Кодування команд
|
Обчислення переходу
|
Порядок байтів
|
Розширення
|
Відкрита
|
Безкоштовна
|
Див. також
Примітки