Instruction Set Architecture (ISA - [aɪsə])
명령어 집합 구조
* Instruction Set: 자연어에서 어휘(Vocabulary)에 해당하는 개념
- 마이크로프로세서가 인식해서 기능을 이해하고 실행할 수 있는 기계어로 된 명령어 구조를 의미한다.
- 최하위 레벨의 프로그래밍 인터페이스, 프로세서가 실행할 수 있는 모든 명령어를 포함한다.
- ISA는 Computer Architecture*의 구성요소 중 하나이다.
- 마이크로프로세서의 종류에 따라 기계어 코드의 길이와 숫자 코드가 다르다.
(ISA는 제조사마다 차이가 있지만 기본적인 구조 측면에서는 공통점이 많다.)
- 기계어 명령어의 각 비트는 기능적으로 분할되어 의미가 부여되고 이진 숫자화된다.
- 프로그래머가 숫자로 프로그래밍하기란 사실상 불가능에 가까워,
기계어와 일대일로 문자화한 것이 Assembly Language이다.
- ISA를 물리적으로 구현하는 방법을 Microarchitecture (Computer Organization) 라 하며,
같은 ISA를 서로 다른 Microarchitecture로 구현하기도 한다.
* Computer Architecture
A style of design or construction of computer system.
- 프로그래밍에 관련된 Computer Architecture로,
자료형, 명령어, 레지스터, 어드레싱 모드, 메모리 구조, 인터럽트 ,예외 처리, 외부 입출력 등이 있다.
ISA Types
- ISA는 CISC, RISC, Application-specific, EDGE(TRIPS), VLIW(EPIC) 등으로 구분된다.
CISC (Complex Instruction Set Computer)
- 복잡한 명령어 집합을 갖는 CPU Architecture이다.
- 하나의 Instruction이 여러 Job을 처리할 수 있다.
- 명령어의 길이가 가변적이다.
- 다양한 종류의 명령어가 존재한다.
- Operand 주소 표시법의 복잡하다.
- Load/Store 구조가 아니기 때문에, Load/Store 구조가 갖는 제약이 없다.
- 대량의 data를 처리하기에 적합하다.
ex) Intel x86
RISC (Reduced Instruction Set Computer)
- 비교적 단순한 명령어 집합을 갖는 CPU Architecture이다.
- 하나의 Instruction이 되도록 하나의 Job만을 처리하게 설계되었다.
- 명령어의 길이가 고정되어 있다.
- 명령어의 종류가 비교적 많지 않다.
- Operand 주소 표시법이 단순하다
- 대부분의 RISC는 Load/Store Architecture*를 채택한다.
ex) ARM, MIPS, SPARC 등
* Load/Store Architecture
- 오직 Load 명령과 Store 명령으로만 메모리에 액세스할 수 있는 구조이다.
- Memory to Memory 연산을 지원하지 않는 구조이다.
ex) 메모리에 있는 값과 레지스터에 있는 값을 곧 바로 더할 수 없고,
load 명령어를 통해 메모리에 있는 값을 레지스터에 옮긴 후 더할 수 있다.
Load | Memory | ▶ | Register |
Store | Register | ▶ | Memory |
ISA Products
- x86, ARM, MIPS, SPARC 등이 시장을 점유하고 있다.
1. x86 (CISC)
- Intel에서 개발된 Microprocessor 계열이자 이들과 호환되는 Processor들에서 사용된 ISA를 통칭하는 명칭이다.
- Desktop시장에서 널리 사용된다.
- 현재 x86 Processor 들은 명령들을 내부적으로 더 작은 단위로 쪼개어 RISC와 비슷한 내부 Architecture에서 수행한다.
2. ARM (RISC)
- 영국 캠브리지의 Acorn Computers 에서 개발되었다.
- 단순화를 통한 실행속도와 전력소모량에서 유리하므로 Embedded 기기에 많이 사용된다.
3. MIPS (RISC)
- Microprocessor without Interlocked Pipeline Stages 의 약자이다.
- MIPS Technologies 에서 개발된 RISC ISA 이다.
- 많은 Embedded System들과 Cisco Systems의 Router 등에 사용되었다.
- MIPS 디자이너들이 명령어 세트를 깔끔하게 설계했기 때문에
많은 대학의 컴퓨터 아키텍처 강좌에서 MIPS 아키텍처를 가르친다.
4. SPARC (RISC)
- Scalable* Processor ARChitecture 의 약자이다.
- SUN Microsystems 에서 개발된 Big-endian* RISC Processor 이다.
- 대형 SMP Server나 Workstation을 위해 개발되었다.
- SPARC Machine은 Solaris(SUN이 SPARC를 위해 개발한 OS)와 비슷하게 취급된다.
- 현재는 Linux, NexTSTEP, FreeBSD, OpenBSD, NetBSD 등이 SPARC Processor 에서 작동된다.
* Scalable: [Computer] 확장, 축소하여도 난조가 생기지 않는 (=확장, 축소할 수 있는)
* Big-endian: MSB(최상위 비트)부터 부호화시켜 저장하는 방식 (큰 단위가 숫자 앞에 나옴)