마이크로코드

마이크로프로그래밍(microprogramming, 이를테면 마이크로코드(microcode)의 기록)은 CPU 안에 기계어를 상대적으로 쉽게 추가할 수 있도록 이용하는 방식으로, 다른 방식들에 비해 하드웨어를 덜 사용한다. 이것은 매우 상세하면서도 기초가 되는 가장 낮은 수준의 루틴의 모임이며 이러한 루틴은 특정한 명령어를 수행하는 데 필요한 동작들을 제어하고 나열한다. 또, 이따금씩 이들을 해석하기도 한다. 그러므로 일련의 마이크로 명령어가 추가한 기계어는 인터프리터가 기계어를 사용하여 고급 프로그래밍 언어의 명령문을 추가하는 방식과 비슷하다고 볼 수 있다.

마이크로코드는 디자인 단계에서 일반적으로 CPU 기술자가 기록한다. 그러나 일반 프로그래머, 심지어는 어셈블리 프로그래머도 이를 보면서 바꿀 수 있다는 것을 뜻하지는 않는다. 왜냐하면 설계상 마이크로코드는 새로운 마이크로아키텍처가 만들어질 때마다 극적으로 바뀔 수 있기 때문이다. 기계어는 하위 호환성을 유지한다. 마이크로코드는 마이크로아키텍처가 다른 강력한 아키텍처를 에뮬레이트하는 데 사용해왔다.

또, IBM과 같은 일부 하드웨어 업체들은 실제로 프로세서의 마이크로프로그래밍의 도입 여부에 관계 없이 마이크로코드(microcode)라는 용어를 펌웨어와 동의어로 사용한다. 심지어 하드 드라이브에 쓰이는 것과 같은 단순한 펌웨어라도 이따금씩 마이크로코드로 서술한다.

역사 
1947년 훨윈드 I의 설계는 컴퓨터 설계를 단순화하고 애드혹 방식을 넘어서는 컨트롤 스토어의 개념을 도입하였다. 컨트롤 스토어는 다이오드 매트릭스였고, 이는 2차원 격자로 되어 있었다. 하나는 CPU의 내부 클럭으로부터 제어 시간 펄스를 받아들이고, 다른 하나는 게이트와 다른 회로의 신호를 제어하기 위해 연결한다. 펄스 배분기는 CPU 클럭에서 만들어진 펄스를 가져다가 8개의 별도의 시간 펄스로 나누었고, 각각은 다른 열의 격자를 활성화한다. 열이 활성화되면 그와 연결된 제어 신호를 활성화한다.

1951년, 모리스 윌크스는 컴퓨터 소프트웨어의 조건문과 개념이 비슷한 조건부 실행 기능을 추가하여 이 개념을 강화하였다. 그의 초기 구현체는 한 쌍의 매트릭스로 구성되었다. 하나는 Whirlwind 컨트롤 스토어의 방식으로 신호를 만드는 반면, 두 번째 매트릭스는 어느 신호의 열이 다음 사이클에서 호출할 것인지 선택하였다. 컨트롤 스토어의 하나의 줄이 두 번째 매트릭스 내의 다른 대안에서 선택 가능한 방법을 제공하는 조건 기능이 구현되었다. 이는 감지된 내부 신호에서 제어 신호를 조건적(conditional)으로 만들어 주었다. 윌크스는 마이크로프로그래밍(microprogramming)이라는 용어를 만들어 이 기능을 기술하고 단순한 컨트롤 스토어와 구별하였다.

같이 보기 
 펌웨어
 제어 장치
 CPU 디자인
 마이크로아키텍처

각주 

중앙 처리 장치
명령어 처리
펌웨어
바이오스