__TOC__ Фактори
Біти Архітектура ЕОМ часто описується як n-бітова архітектура, де n найчастіше дорівнює 8, 16, 32, 64 і так далі, що фактично є сильним спрощенням. У архітектури ЕОМ часто є декілька більш-менш «природних» розмірів даних в наборі команд, але їх впровадження апаратними засобами може сильно відрізнятися. У багатьох архітектур є системи команд, що впливають на зменшення і/або збільшення удвічі розміру відповідних процесорів головного операційного автомата. Прикладами є Intel 8080, Zilog Z80, Motorola 68000, а також багато інших. На цьому типі реалізації удвічі ширший розмір операції, як правило, також займає удвічі більшу кількість тактів (що не є типовим для високоефективної реалізації). На 68000, наприклад, це означає, що замість 4 тиків годинника, їх було б 8. Цей чип може бути описаний як 32-бітова архітектура з 16-бітовою реалізацією. Зовнішня ширина шини даних часто не допомагає визначити ширину архітектури; є також 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 , , , 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, , TrustZone, ARMv8-A 64/32 ARMv8-A 2011 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 Змінне Big Java Virtual Machine Blackfin 32 2000 RISC 8 Little Crusoe 32 2000 1 Register Register VLIW 1 in native push stack mode 6 in x86 emulation, 12 integer + 48 shadow in virtual stat Змінне (64- or 128-bit) Condition code 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 Фіксоване (32-bit) Compare and branch Big User-defined instructions 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) 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 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) OSA2015http://www.oracle.com/technetwork/server-storage/sun-sparc-enterprise/documentation/sparc-processor-2516655.html Oracle SPARC Processor Documentation 1985 3 Register Register RISC 32 (Включно: "0") Фіксоване (32-bit) Condition code Big → Bi VIS 1.0, 2.0, 3.0, 4.0 http://sparc.org/technical-documents/#ArchLic SPARC Architecture License 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 Архітектура Біти Версія Запроваджена Макс. число Операндів Тип Дизайн Процесори Кодування команд Обчислення переходу Порядок байтів Розширення Відкрита Безкоштовна
Див. також Центральний процесор Архітектура системи команд Операнд
Примітки