명령 집합 아키텍처 비교
Comparison of instruction set architectures명령 집합 아키텍처(ISA)는 컴퓨터의 추상 모델이며 컴퓨터 아키텍처라고도 합니다.ISA의 실현을 구현이라고 부릅니다.ISA는 소프트웨어와 하드웨어 간의 인터페이스 역할을 하기 때문에 ISA는 성능, 물리적 크기 및 금전적 비용 면에서 다를 수 있는 여러 구현을 허용합니다.ISA용으로 작성된 소프트웨어는 동일한 ISA의 다른 구현에서 실행할 수 있습니다.이것에 의해, 다른 세대의 컴퓨터간의 바이너리 호환성을 간단하게 실현해, 컴퓨터 패밀리의 개발을 실현할 수 있게 되었습니다.이 두 가지 개발 모두 컴퓨터 비용을 절감하고 적용 가능성을 높이는 데 도움이 되었습니다.이러한 이유로 ISA는 오늘날 컴퓨팅에서 가장 중요한 개념 중 하나입니다.
ISA는 컴퓨터 프로그래밍을 위해 기계어 프로그래머가 알아야 할 모든 것을 정의합니다.ISA가 정의하는 것은 ISA에 따라 다릅니다.일반적으로 ISA는 지원되는 데이터 타입, 메인 메모리 및 레지스터와 같은 상태 및 그 의미론(메모리 일관성 및 어드레싱 모드 등), 명령 세트(컴퓨터의 기계 언어를 구성하는 기계 명령 세트) 및 입출력 m을 정의합니다.악취를 풍기다
기초
컴퓨팅의 초기 수십 년 동안은 이진법[1], 십진법, 심지어 [2][3]삼진법을 사용하는 컴퓨터가 있었습니다.현대의 컴퓨터는 거의 2진법이다.
비트
컴퓨터 아키텍처는 종종 n비트 아키텍처로 설명됩니다.현재 n은 8, 16, 32 또는 64이지만 다른 크기(6, 12, 18, 24, 30, 36, 39, 48, 60 등)가 사용되고 있습니다.이는 컴퓨터 아키텍처가 명령어 세트에 몇 가지 "자연스러운" 데이터 사이즈를 가지고 있는 경우가 많기 때문에 실제로 단순화된 것이지만 하드웨어 구현은 매우 다를 수 있습니다.많은 명령어 집합 아키텍처는 명령어 집합 아키텍처의 일부 구현에서 프로세서의 주요 내부 데이터 경로의 절반 또는 두 배 크기로 동작하는 명령을 가지고 있습니다.예를 들어 8080, Z80, MC68000 및 기타 많은 제품이 있습니다.이러한 타입의 실장에서는, 통상, 2배의 폭의 동작에 약2배의 클럭 사이클이 소요됩니다(고성능 실장에서는 그렇지 않습니다).예를 들어 68000에서는 4개의 클럭틱이 아닌8을 의미하며, 이 칩은 16비트를 실장하는 32비트아키텍처라고 할 수 있습니다.IBM System/360 명령 집합 아키텍처는 32비트이지만, IBM System/360 Model 30과 같은 System/360 시리즈의 일부 모델은 내부 데이터 경로가 더 작은 반면, 360/195와 같은 다른 모델은 내부 데이터 경로가 더 큽니다.외부 데이터버스 폭은 아키텍처의 폭 결정에 사용되지 않습니다.NS32008, NS32016 및 NS32032는 기본적으로 서로 다른 외부 데이터 버스를 가진 동일한 32비트 칩이었고 NS32764는 64비트 버스를 사용했으며 32비트 레지스터를 사용했습니다.초기 32비트 마이크로프로세서는 시스템/360 프로세서와 마찬가지로 24비트 주소를 가지고 있었습니다.
오퍼랜드
오퍼랜드의 수는 명령 집합의 성능에 대한 지표가 될 수 있는 요인 중 하나입니다.3개의 오퍼랜드 아키텍처를 통해
A : = B + C
하나의 명령으로 계산됩니다.
2개의 오퍼랜드 아키텍처를 통해
A : = A + B
하나의 명령으로 계산되므로 단일 3연산 명령을 시뮬레이션하려면 두 개의 명령을 실행해야 합니다.
A : = B A : = A + C
엔디안니스
아키텍처는 "큰" 또는 "작은" 엔디안을 사용하거나 둘 다 사용하도록 구성할 수 있습니다.little-endian 프로세서는 메모리 내의 바이트를 번호가 가장 낮은 메모리 위치에 있는 멀티바이트 값의 최하위 바이트로 정렬합니다.대신 빅 엔디언 아키텍처는 가장 낮은 번호의 주소에 가장 유의한 바이트를 가진 바이트를 배열합니다.x86 아키텍처와 여러 8비트 아키텍처는 리틀 엔디안입니다.대부분의 RISC 아키텍처(SPARC, Power, PowerPC, MIPS)는 원래 빅엔디안(ARM은 리틀엔디안)이었지만, 현재는 ARM을 포함한 많은 아키텍처(ARM 포함)도 어느쪽이든 설정할 수 있게 되었습니다.
엔디안니스는 기본 어드레싱 가능한 머신워드보다 작은 데이터 단위(바이트 등)의 개별 어드레싱을 허용하는 프로세서에만 적용됩니다.
명령어 세트
![]() | 이 섹션은 독자들에게 혼란스럽거나 불분명할 수 있습니다.특히 오픈 및 로열티 무료는 정의되어 있지 않으며 대부분의 엔트리는 소스되지 않습니다. 에 수 . (2021년 10월 ( 템플릿메시지를 에 대해 알아보기) |
일반적으로 레지스터 수는 8, 16, 32와 같은 2의 거듭제곱입니다.경우에 따라서는 주로 인덱싱 모드를 단순화하기 위해 아키텍처의 레지스터 파일의 "부분"으로 유선 연결에서 제로 사이비 레지스터가 포함됩니다.이 테이블은 언제든지 일반 명령에서 사용할 수 있는 정수 "등록자"만 카운트합니다.아키텍처에는 항상 프로그램 카운터(PC)와 같은 특수 목적 레지스터가 포함됩니다.그것들은 언급되지 않는 한 계산되지 않는다.SPARC 등 일부 아키텍처에는 레지스터 창이 있습니다.이러한 아키텍처의 경우 다음 카운트는 레지스터 창 내에서 사용 가능한 레지스터 수를 나타냅니다.또, 레지스터명의 비아키텍트 레지스터는 카운트 되지 않습니다.
참고로 일반적인 아키텍처 유형인 "load-store"는 아래의 "register-register"와 동의어입니다.즉, 특별한 부하를 제외하고 메모리에 액세스하여 등록 및 레지스터에서 저장하는 명령은 없습니다.단, 잠금을 위한 원자 메모리 조작의 예외는 있을 수 있습니다.
다음 표는 CPU 아키텍처에 구현되는 명령어세트에 대한 기본 정보를 비교한 것입니다.
아키 구조 | 비트 | 버전 | 도입부- duced(듀스) | 최대수 오퍼랜드 | 유형 | 설계. | 레지스터 (FP/벡터 제외) | 명령 부호화 | 지점평가 | 엔디언 네스 | 내선번호 | 열다. | 로열티 공짜 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
6502 | 8 | 1975 | 1 | 레지스터 - 메모리 | CISC | 3 | 가변(8~24비트) | 상황 레지스터 | 작은 | ||||
6809 | 8 | 1978 | 1 | 레지스터 - 메모리 | CISC | 9 | 가변(8~32비트) | 상황 레지스터 | 큰. | ||||
680 x 0 | 32 | 1979 | 2 | 레지스터 - 메모리 | CISC | 8 데이터 및 8 주소 | 변수 | 상황 레지스터 | 큰. | ||||
8080 | 8 | 1974 | 2 | 레지스터 - 메모리 | CISC | 8 | 가변(8~24비트) | 상황 레지스터 | 작은 | ||||
8051 | 32(8→32) | 1977? | 1 | [Register] : [Register | CISC |
| 가변(8비트~128바이트) | 비교 및 분기 | 작은 | ||||
x86 | 16, 32, 64 (16→32→64) | 1978 | 2 (표준) 3(AVX)[a] 4(FMA4)[4] | 레지스터 - 메모리 | CISC |
| 변수(8086 ~80386 : 1~6 바이트 /w MMU + Intel SDK, 80486 : 2 ~5 바이트 (프리픽스 포함), x64 : 4 바이트 (프리픽스 포함), x86 에뮬레이션 : 1~15 바이트 (프리픽스 포함), MMU . SSE / MMX : 4 바이트 / 8 바이트 (프리픽스 포함) | 조건코드 | 작은 | x87, IA-32, MMX, 3DNow!, SSE, SSE2, PAE, x86-64, SSE3, SSE3, SSE4, BMI, AVX, AES, FMA, XOP, F16C | 아니요. | 아니요. | |
알파 | 64 | 1992 | 3 | [Register] : [Register | RISC | 32 ('제로' 포함) | 고정(32비트) | 상황 레지스터 | 비 | MVI, BWX, FIX, CIX | 아니요. | ||
아아크 | 16/32/64 (32→64) | ARCv3[5] | 1996 | 3 | [Register] : [Register | RISC | SP를 포함한 16 또는 32 사용자는 60명까지 증가 가능 | 가변(16비트 또는 32비트) | 비교 및 분기 | 비 | APEX 사용자 정의 지침 | ||
ARM/A32 | 32 | ARMv1 – v9 | 1983 | 3 | [Register] : [Register | RISC |
| 고정(32비트) | 조건코드 | 비 | 네온, 자젤, VFP 트러스트 존, | 아니요. | |
엄지/T32 | 32 | ARMv4T-ARMv8 | 1994 | 3 | [Register] : [Register | RISC |
| 엄지: 고정(16비트), 엄지-2: 가변(16비트 또는 32비트) | 조건코드 | 비 | 네온, 자젤, VFP 트러스트 존, | 아니요. | |
암64/A64 | 64 | ARMv8-A[6] | 2011년[7] | 3 | [Register] : [Register | RISC | 32(스택 포인터/'제로' 레지스터 포함) | 고정(32비트), 가변(32비트[8] 프리픽스가 있는 FMA4의 경우 32비트 또는 64비트) | 조건코드 | 비 | SVE 및 SVE2 | 아니요. | |
AVR | 8 | 1997 | 2 | [Register] : [Register | RISC | 32 16개의 "하드웨어 아키텍처" | 가변(대부분 16비트, 4개의 명령어는 32비트) | 상황 레지스터, 조건부로 건너뛰다 I/O 또는 범용 레지스터 비트, 비교 및 건너뛰기 | 작은 | ||||
AVR32 | 32 | 리비전 2 | 2006 | 2–3 | RISC | 15 | 변수[9] | 큰. | Java 가상 머신 | ||||
블랙핀 | 32 | 2000 | 3개[10] | [Register] : [Register | RISC[11] | 축전지 2개 8 데이터 레지스터 8 포인터 레지스터 인덱스 레지스터 4개 4 버퍼 레지스터 | 가변(16비트 또는 32비트) | 조건코드 | 조금[12] | ||||
CDC 상위 3000 시리즈 | 48 | 1963 | 3 | 레지스터 - 메모리 | CISC | 48비트 A레지스터, 48비트 Q레지스터, 15비트 B레지스터 6개, 기타 | 가변(24비트 또는 48비트) | 다양한 유형의 점프 및 건너뛰기 | 큰. | ||||
CDC 6000 중앙 프로세서(CP) | 60 | 1964 | 3 | [Register] : [Register | 없음[b] | 24 (8 18비트주소 등록), 8 18비트 인덱스레지스트, 8 60비트 오퍼랜드레지스트) | 가변(15비트, 30비트 또는 60비트) | 비교 및 분기 | 없음[c] | 유닛 비교/이동 | 아니요. | 아니요. | |
CDC 6000 페리페럴 프로세서(PP) | 12 | 1964 | 1 또는 2 | 레지스터 - 메모리 | CISC | 1 18비트 A 레지스터, 위치 1~63은 일부 명령의 인덱스 레지스터 역할을 합니다. | 가변(12비트 또는 24비트) | 테스트 A 레지스터, 테스트 채널 | 없음[d] | 추가 주변기기 처리장치 | 아니요. | 아니요. | |
크루소 (비압축 VLIW) | 32개[13] | 2000 | 1 | [Register] : [Register | VLIW[13][14] | 변수(네이티브모드에서는 64비트 또는 128비트, x86 [14]에뮬레이션에서는 15바이트) | 조건코드[13] | 작은 | |||||
엘브루스 (비압축 VLIW) | 64 | 엘브루스-4S | 2014 | 1 | [Register[13]] : [Register | VLIW | 8–64 | 64 | 조건코드 | 작은 | 적시 동적 변환: x87, IA-32, MMX, SSE, SSE2, x86-64, SSE3, AVX | 아니요. | 아니요. |
DLX | 32 | 1990 | 3 | RISC | 32 | 고정(32비트) | 큰. | 네. | ? | ||||
eSi-RISC | 16/32 | 2009 | 3 | [Register] : [Register | RISC | 8–72 | 가변(16비트 또는 32비트) | 비교 및 분기 상태 레지스터 | 비 | 사용자 정의 명령 | 아니요. | 아니요. | |
아이테니엄 (IA-64) | 64 | 2001 | [Register] : [Register | 서사시 | 128 | 고정(5비트 템플릿 태그와 3개의 명령 포함, 각각 41비트 길이) | 상황 레지스터 | 비 (선택 가능) | 인텔 버추얼라이제이션 테크놀로지 | 아니요. | 아니요. | ||
M32R | 32 | 1997 | 3 | [Register] : [Register | RISC | 16 | 가변(16비트 또는 32비트) | 상황 레지스터 | 비 | ||||
마이코32 | 32 | ? | 2006 | 3 | [Register] : [Register | RISC | 32개[15] | 고정(32비트) | 비교 및 분기 | 큰. | 사용자 정의 명령 | 네, 그렇습니다[16]. | 네. |
MIPS | 64(32→64) | 6개[17][18] | 1981 | 1–3 | [Register] : [Register | RISC | 4 ~ 32 ('제로' 포함) | 고정(32비트) | 상황 레지스터 | 비 | MDMX, MIPS-3D | 아니요. | 아니요[19][20]. |
MMIX | 64 | ? | 1999 | 3 | [Register] : [Register | RISC | 256 | 고정(32비트) | ? | 큰. | ? | 네. | 네. |
니오스 2세 | 32 | 200배 | 3 | [Register] : [Register | RISC | 32 | 고정(32비트) | 상황 레지스터 | 작은 | Altera FPGA 디바이스에서 인스턴스화할 수 있는 소프트 프로세서 | 아니요. | Altera/Intel FPGA만 | |
NS320xx | 32 | 1982 | 5 | 메모리 - 메모리 | CISC | 8 | 가변 허프만 부호화(최대 23바이트) | 조건코드 | 작은 | BitBlt 명령 | |||
OpenRISC | 32, 64 | 1.3[21] | 2010 | 3 | [Register] : [Register | RISC | 16 또는 32 | 고정된. | ? | ? | ? | 네. | 네. |
PA-RISC (HP/PA) | 64(32→64) | 2.0 | 1986 | 3 | [Register] : [Register | RISC | 32 | 고정(32비트) | 비교 및 분기 | Big → Bi | 맥스. | 아니요. | |
PDP-8[22] | 12 | 1966 | 레지스터 - 메모리 | CISC | 어큐뮬레이터 1개 승수 지수 레지스터 1개 | 고정(12비트) | 상황 레지스터 테스트 및 분기 | EAE(확장산술요소) | |||||
PDP-11 | 16 | 1970 | 2 | 메모리 - 메모리 | CISC | 8(스택 포인터 추가, 어떤 레지스터도 할 수 있지만 스택 포인터로서 기능) | 가변(16비트, 32비트 또는 48비트) | 조건코드 | 작은 | 부동 소수점, 상용 명령어 세트 | 아니요. | 아니요. | |
POWER, PowerPC, Power ISA | 32/64(32→64) | 3.1[23] | 1990 | 3 | [Register] : [Register | RISC | 32 | 고정(32비트), 가변(32비트[23] 또는 64비트, 프리픽스 32비트) | 조건코드 | 빅/비 | AltiVec, APU, VSX, 셀 | 네. | 네. |
RISC-V | 32, 64, 128 | 20191213[24] | 2010 | 3 | [Register] : [Register | RISC | 32 ('제로' 포함) | 변수 | 비교 및 분기 | 작은 | ? | 네. | 네. |
RX | 64/32/16 | 2000 | 3 | 메모리 - 메모리 | CISC | 4 정수 + 4 주소 | 변수 | 비교 및 분기 | 작은 | 아니요. | |||
S+코어 | 16/32 | 2005 | RISC | 작은 | |||||||||
SPARC | 64(32→64) | OSA2017[25] | 1985 | 3 | [Register] : [Register | RISC | 32 ('제로' 포함) | 고정(32비트) | 조건코드 | Big → Bi | 표시 | 네. | 네, 그렇습니다[26]. |
슈퍼H(SH) | 32 | 1994 | 2 | [Register] : [Register 레지스터 - 메모리 | RISC | 16 | 고정(16비트 또는 32비트), 가변 | 조건코드 (싱글 비트) | 비 | 네. | 네. | ||
시스템/360 시스템/370 z/아키텍처 | 64(32→64) | 1964 | 2(대부분) 3(FMA, 고유 오퍼랜드 설비) 4(일부 벡터인스턴스) | 레지스터 - 메모리 메모리 - 메모리 [Register] : [Register | CISC | 16 일반 16 컨트롤(S/370 이후) 16 액세스(ESA/370 이후) | 가변(16비트, 32비트 또는 48비트) | 상태 코드, 비교 및 분기 | 큰. | 아니요. | 아니요. | ||
트랜스푸터 | 32(4→64) | 1987 | 1 | 스택 머신 | MISC | 3(스택으로서) | 변수(8~120바이트) | 비교 및 분기 | 작은 | ||||
VAX | 32 | 1977 | 6 | 메모리 - 메모리 | CISC | 16 | 변수 | 상태 코드, 비교 및 분기 | 작은 | 아니요. | |||
Z80 | 8 | 1976 | 2 | 레지스터 - 메모리 | CISC | 17 | 가변(8~32비트) | 상황 레지스터 | 작은 | ||||
아키 구조 | 비트 | 버전 | 도입부- duced(듀스) | 최대수 오퍼랜드 | 유형 | 설계. | 레지스터 (FP/벡터 제외) | 명령 부호화 | 지점평가 | 엔디언 네스 | 내선번호 | 열다. | 로열티 공짜 |
「 」를 참조해 주세요.
메모들
- ^ LEA(모든 프로세서) 및 IMUL-immediate(80186 이후) 명령에서는 3개의 피연산자를 사용할 수 있습니다.기본 정수 ISA의 다른 명령에서는 최대 2개의 피연산자를 사용할 수 있습니다.
- ^ 부분적으로는 RISC: 로드/스토어 아키텍처 및 단순한 어드레싱 모드, 부분적으로는 CISC: 3개의 명령 길이와 단일 명령 타이밍 없음
- ^ 메모리는 서브유닛에 접근할 수단이 없는 60비트 워드의 배열이기 때문에 빅 엔디안과 리틀 엔디안은 의미가 없습니다.옵션의 CMU 유닛에서는 빅엔디안 시멘틱스가 사용됩니다.
- ^ 메모리는 서브유닛에 접근할 수단이 없는 12비트 워드의 배열이기 때문에 빅 엔디안과 리틀 엔디안은 의미가 없습니다.
레퍼런스
- ^ da Cruz, Frank (October 18, 2004). "The IBM Naval Ordnance Research Calculator". Columbia University Computing History. Retrieved January 28, 2019.
- ^ "Russian Virtual Computer Museum – Hall of Fame – Nikolay Petrovich Brusentsov".
- ^ 를 클릭합니다Trogemann, Georg; Nitussov, Alexander Y.; Ernst, Wolfgang (2001). Computing in Russia: the history of computer devices and information technology revealed. Vieweg+Teubner Verlag. pp. 19, 55, 57, 91, 104–107. ISBN 978-3-528-05757-2..
- ^ "AMD64 Architecture Programmer's Manual Volume 6: 128-Bit and 256-Bit XOP and FMA4 Instructions" (PDF). AMD. November 2009.
- ^ "Synopsys Introduces New 64-bit ARC Processor IP Delivering up to 3x Performance Increase for High-End Embedded Applications".
- ^ "ARMv8 Technology Preview" (PDF). Archived from the original (PDF) on 2018-06-10. Retrieved 2011-10-28.
- ^ "ARM goes 64-bit with new ARMv8 chip architecture". 27 October 2011. Retrieved 26 May 2012.
- ^ "Hot Chips 30 conference; Fujitsu briefing" (PDF). Toshio Yoshida. Archived from the original (PDF) on 2020-12-05.
- ^ "AVR32 Architecture Document" (PDF). Atmel. Retrieved 2008-06-15.
- ^ "Blackfin manual" (PDF). analog.com.
- ^ "Blackfin Processor Architecture Overview". Analog Devices. Retrieved 2009-05-10.
- ^ "Blackfin memory architecture". Analog Devices. Archived from the original on 2011-06-16. Retrieved 2009-12-18.
- ^ a b c d e "Crusoe Exposed: Transmeta TM5xxx Architecture 2". Real World Technologies.
- ^ a b c Alexander Klaiber (January 2000). "The Technology Behind Crusoe Processors" (PDF). Transmeta Corporation. Retrieved December 6, 2013.
- ^ "LatticeMico32 Architecture". Lattice Semiconductor. Archived from the original on 23 June 2010.
- ^ "LatticeMico32 Open Source Licensing". Lattice Semiconductor. Archived from the original on 20 June 2010.
- ^ 프로그래머용 MIPS64 아키텍처: 릴리즈 6
- ^ 프로그래머용 MIPS32 아키텍처: 릴리즈 6
- ^ MIPS 오픈
- ^ "Wave Computing Closes Its MIPS Open Initiative with Immediate Effect, Zero Warning".
- ^ OpenRISC 아키텍처 리비전
- ^ "PDP-8 Users Handbook" (PDF). bitsavers.org. 2019-02-16.
- ^ a b "Power ISA Version 3.1". openpowerfoundation.org. 2020-05-01. Retrieved 2021-10-20.
- ^ "RISC-V ISA Specifications". Retrieved 17 June 2019.
- ^ Oracle SPARC 프로세서에 관한 문서
- ^ SPARC 아키텍처 라이선스