명령어 집합
마이크로프로세서가 인식해 기능을 이해하고 실행할 수 있는 명령어 / From Wikipedia, the free encyclopedia
명령어 집합(영어: instruction set) 또는 명령어 집합 구조(영어: Instruction set architecture, ISA)는 마이크로프로세서가 인식해서 기능을 이해하고 실행할 수 있는 기계어 명령어를 말한다. 마이크로프로세서마다 기계어 코드의 길이와 숫자 코드가 다르다. 명령어의 각 비트는 기능적으로 분할하여 의미를 부여하고 숫자화한다. 프로그램 개발자가 숫자로 프로그램하기가 불편하므로 기계어와 일대일로 문자화한 것이 어셈블리어이다.
이 문서의 내용은 출처가 분명하지 않습니다. (2013년 8월) |
최하위 레벨의 프로그래밍 인터페이스로, 프로세서가 실행할 수 있는 모든 명령어들을 포함한다. 명령어 집합, 곧 명령어 집합 구조는 자료형, 명령어, 레지스터, 어드레싱 모드, 메모리 구조, 인터럽트, 예외 처리, 외부 입출력을 포함한 프로그래밍 관련 컴퓨터 아키텍처의 일부이다. ISA는 특정한 CPU 디자인으로 추가된 순수 명령어인 opcode의 집합 규격(기계어)을 포함한다.
RISC CPU는 명령어의 구조와 명령어의 숫자를 단순화 하여 빠른 실행이 가능하고 하드웨어를 줄일 수 있다. ARM의 경우 단순화를 통해 실행속도와 전력소모에 유리하므로 이동전화와 같은 이동장치에 많이 사용한다. ARM의 명령어 길이는 32비트(16비트 Thumb 제외)로 구성되고, 오퍼랜드(operand)를 32비트 내에 존재한다. CISC의 오퍼랜드가 op 코드 다음에 오는 구조와 대조적이다. 대신 32비트 모두를 지정할 수 없으므로 원거리 주소나 데이터 지정이 불가능해져 복수의 명령어를 사용할 필요가 생길 수 있다.
각 기계어 명령어를 실행하는 명령 주기 단계 별 처리를 위해 마이크로코드로 작성된 프로그램이 마이크로프로세서 내의 메모리(ROM)에 고정되므로 이미 결정되어 있어 변경할 수 없다. 개발자가 인식하는데 불편하므로 어셈블리어로 프로그램 코드를 작성하고 어셈블러에 의해 기계어 코드로 전환되어 메모리에 넣고 실행한다. 하이레벨 프로그램 언어도 컴파일러에 의해 기계어 명령어로 바뀐다. C 언어로 프로그래밍 할 경우, C 언어는 같은 코드라도 다른 CPU에서 실행하려면 다른 숫자의 기계어로 전환되어야 하므로 다른 컴파일러 도구가 필요하다.
명령어 집합 구조를 물리적으로 구현하는 방법을 마이크로아키텍처 혹은 컴퓨터 조직이라고 하며, 같은 명령어 집합 구조를 서로 다른 마이크로아키텍처로 구현하기도 한다. 예를 들어, 인텔의 펜티엄과 AMD의 애슬론은 거의 같은 명령어 집합 구조를 서로 다른 마이크로아키텍처로 구현한 것이다.