마이크로프로세서가 인식하고 실행할 수 있는 기계어 명령어의 집합. 하드웨어와 소프트웨어 사이의 인터페이스를 정의한다.
내장형 컴퓨터와 튜링 머신
오늘날 거의 모든 컴퓨터는 폰 노이만 구조를 따른다. 프로그램을 데이터와 같은 메모리에 저장하는 내장형(stored-program) 컴퓨터이고, RAM에서 명령어를 가져와(fetch) CPU에서 실행하는(execute) 사이클로 돈다.
앞선 개념인 튜링 머신은 임시 저장소가 테이프인 오토마타로, 계산 가능성을 다루는 이론 모델이었다. 폰 노이만은 그것을 실제로 만들 수 있는 기계 구조로 옮겼다. 그 구조에서 컴퓨터를 운영하는 것이 명령어 집합인 ISA다.
하드웨어가 바뀌어도 그대로인 것
ISA는 소프트웨어 관점에서 하드웨어를 추상화한다. 가장 밑단에 있는 언어이고, 이것으로 하드웨어를 프로그래밍한다. IA-32, PowerPC, MIPS, SPARC, ARM이 그런 예다.
하드웨어가 바뀌어도 아키텍처가 같으면 ISA는 변하지 않는다. ISA가 그대로라는 말은 소프트웨어를 고칠 필요가 없다는 말이다. CPU 세대가 올라가도 기존 프로그램이 그대로 도는 이유가 여기 있다.
인텔과 AMD 프로세서를 쓰는 아키텍처는 x86 ISA를 가졌다고 하고, 스마트폰에는 ARM ISA가 쓰인다. 데스크톱 애플리케이션과 모바일 전용 애플리케이션이 호환되지 않는 것은 애초에 인터페이스가 달라 말이 통하지 않기 때문이다.
ISA를 물리적으로 구현하는 방법을 마이크로아키텍처라고 한다.
층위를 옮겨도 같은 발상
바뀌는 것과 바뀌지 않는 것 사이에 인터페이스를 두는 발상은 층위를 옮겨도 같다. PSA가 기술과 애플리케이션 사이에서 하는 일을 ISA는 하드웨어와 소프트웨어 사이에서 한다.
설계 단계에서 정해지는 성능
ISA는 소프트웨어와 하드웨어 양쪽의 영향을 받아 쉽게 바꾸지 못한다. 하드웨어는 마음대로 갈아치울 수 있지만 ISA는 한번 정해지면 오래 간다. 마이크로프로세서의 성능이 ISA에 따라 정해지는데도 나중에 손보기 어려우니, 설계 단계에서 잘 정해두는 것 말고는 방법이 없다.