컨트롤 스토어
1. 개요
컨트롤 스토어는 컴퓨터의 제어 신호를 저장하는 데 사용되는 저장 장치이다. 초기에는 다이오드 어레이, 이후에는 ROM, PLA 구조를 사용했으며, 쓰기 가능한 제어 저장소(WCS)는 마이크로코드를 RAM에 저장하여 내용 변경을 가능하게 했다. WCS는 마이크로코드 수정 및 업데이트를 용이하게 했으며, 다양한 상용 기기에 적용되었다. 현대 CPU 설계는 명령어 집합을 RAM, 플래시 메모리 또는 FPGA에 컴파일하며, x86 아키텍처의 Intel CPU는 쓰기 가능한 마이크로코드를 통해 버그를 소프트웨어로 수정한다. 컨트롤 스토어는 일반적으로 출력에 레지스터를 가지며, 파이프라인 레지스터를 통해 경쟁 상태를 방지하고 시스템의 사이클 시간을 결정한다.
-
펌웨어 -
바이오스
BIOS(Basic Input/Output System, 기본 입출력 시스템)는 컴퓨터 하드웨어와 운영 체제 사이에서 하위 수준 인터페이스 역할을 하며, 부팅 과정에서 하드웨어를 초기화하고 제어하며, UEFI로 대체되는 추세이다. -
펌웨어 -
마이크로코드
마이크로코드는 CPU 내에서 기본적인 연산을 수행하는 저수준 명령어 집합으로, 하드웨어와 소프트웨어 사이의 간극을 메우고, 복잡한 기계어 명령을 단순한 하드웨어 수준의 동작으로 분해하여 실행하며, 컴퓨터 아키텍처의 유연성을 높이고 오류 수정 및 기능 개선을 용이하게 한다. -
명령어 처리 -
멀티스레딩
멀티스레딩은 프로세스 내에서 여러 스레드를 동시 실행하여 처리 능력을 향상시키는 기술로, 응답성 향상과 자원 공유 등의 장점이 있지만, 자원 간섭과 소프트웨어 복잡성 증가 등의 단점도 존재하며, 다양한 모델과 구현 방식, 스레드 스케줄러, 가상 머신 활성화 가능성 등을 고려해야 한다. -
명령어 처리 -
마이크로아키텍처
마이크로아키텍처는 명령어 집합 아키텍처를 구현하는 프로세서의 구성 요소, 상호 연결, 작동 방식을 포괄하는 개념으로, 동일 ISA에서 반도체 기술 발전과 새로운 구조 및 회로를 통해 성능 향상을 가능하게 한다.
2. 구현
마이크로코드는 CPU 내부에 구현되는 방식으로, 초기에는 ROM 형태로 구현되었으나, 현대에는 쓰기 가능한 제어 저장소(WCS)를 활용하여 유연성을 높이는 추세이다.
초기 제어 저장소는 ROM의 일종인 다이오드 어레이로 구현되었다. 이는 1947년에 처음 기술된 MIT Whirlwind의 '프로그램 타이밍 매트릭스'가 대표적이다. 현대의 VLSI 프로세서는 전계 효과 트랜지스터 매트릭스를 사용하여 ROM 및/또는 PLA 구조를 마이크로코드로 구현한다. IBM System/360은 모델별로 다른 기술을 사용했는데, Model 30은 CCROS, Model 40은 TROS, 50, 65 및 67 모델은 BCROS를 사용했다.
일부 컴퓨터는 마이크로코드를 RAM에 저장하는 쓰기 가능한 제어 저장소(WCS)를 사용한다. 초기 IBM System/360 모델은 읽기 전용 제어 저장소를 가졌지만, 이후 System/360, IBM System/370 및 후속 모델은 플로피 디스크나 기타 DASD에서 마이크로프로그램의 일부 또는 전부를 WCS로 로드했다. IBM은 초기 마이크로프로그램 로드 (IML 또는 IMPL) 기능을 통해 현장에서 마이크로프로그래밍 결함을 쉽게 수정할 수 있었다.
WCS를 사용한 상업용 기계로는 Burroughs Small Systems, Xerox Lisp machine 및 Xerox Star 워크스테이션의 Xerox 프로세서, DEC VAX 8800 ("Nautilus") 제품군, Symbolics L- 및 G-머신 등이 있다. HP 2100, DEC PDP-11/60 및 Varian Data Machines V-70 시리즈 미니컴퓨터 등은 사용자 프로그래밍 가능한 WCS를 옵션으로 제공했다. Mentec M11 및 Mentec M1과 Data General Eclipse MV/8000 ("Eagle")은 SRAM WCS를 가지고 있으며, 전원이 켜질 때 다른 CPU를 통해 로드된다.
WCS는 마이크로프로그램 패치 용이성, 빠른 액세스 등의 장점을 제공하며, 사용자 프로그래밍 가능한 WCS는 사용자가 기계를 최적화할 수 있게 해준다. 그러나 프로그램을 디버깅하기 어렵게 만들고 악의적인 사용자가 시스템 및 데이터에 부정적인 영향을 미칠 수 있다는 단점도 있다.
x86 아키텍처 제품군에 속하는 여러 Intel CPU는 1995년 Pentium Pro를 시작으로 쓰기 가능한 마이크로코드를 가지고 있다. 이를 통해 Intel Core 2 마이크로코드 및 Intel Xeon 마이크로코드의 버그를 소프트웨어로 수정할 수 있었다. 이러한 수정 사항은 Linux, FreeBSD, Microsoft Windows, 또는 마더보드 BIOS를 통해 설치할 수 있다.
컨트롤 스토어는 일반적으로 출력에 레지스터를 가진다. 경쟁 상태 발생을 방지하기 위해 다음 주소를 결정하기 위해 시퀀서로 다시 들어가는 출력은 레지스터를 거쳐야 한다. 대부분의 설계에서 다른 모든 비트도 레지스터를 거치는데, 이는 다음 마이크로 명령어의 실행을 한 주기 지연시키면 기계가 더 빠르게 작동하기 때문이다. 이 레지스터는 파이프라인 레지스터라고 한다.
2.1. 초기 구현
초기 제어 저장소는 주소 디코더를 통해 접근되는 다이오드 어레이로 구현되었으며, 이는 ROM의 한 형태였다. 이러한 방식은 1947년에 처음 기술된 MIT Whirlwind의 '프로그램 타이밍 매트릭스'까지 거슬러 올라간다. 현대의 VLSI 프로세서는 전계 효과 트랜지스터 매트릭스를 사용하여 프로세서와 내부 시퀀서를 제어하는 데 사용되는 ROM 및/또는 PLA 구조를 마이크로코드 구현으로 구축한다. IBM System/360은 다양한 기술을 사용했는데, Model 30은 CCROS(Card Capacitor Read-Only Storage), Model 40은 TROS(Transformer Read-Only Storage), 50, 65 및 67 모델은 BCROS(Balanced Capacitor Read-Only Storage)를 사용했다.
2.2. 쓰기 가능한 제어 저장소 (WCS)
컴퓨터 중 일부는 "쓰기 가능한 마이크로코드"를 사용하여 제작된다. 즉, 마이크로코드를 ROM이나 하드와이어드 로직(회로로 굳어진 형태)에 저장하는 대신 RAM에 저장하며, 이를 쓰기 가능한 제어 저장소(WCS)라고 한다.
초기 IBM System/360 모델은 읽기 전용 제어 저장소를 가졌지만, 이후 System/360, IBM System/370 및 후속 모델은 플로피 디스크 또는 기타 DASD에서 마이크로프로그램의 일부 또는 전부를 고속 랜덤 액세스 읽기-쓰기 메모리로 구성된 WCS로 로드했다. System/370 아키텍처는 콘솔에서 호출될 수 있는 초기 마이크로프로그램 로드 (IML 또는 IMPL)라는 기능을 포함하며, 전원 켜짐 재설정 (POR)의 일부 또는 긴밀하게 결합된 멀티프로세서 복합체의 다른 프로세서에서 호출될 수 있었다. 이를 통해 IBM은 현장에서 마이크로프로그래밍 결함을 쉽게 수정할 수 있었다.
WCS를 사용하는 상업용 기계로는 Burroughs Small Systems, Xerox Lisp machine 및 Xerox Star 워크스테이션의 Xerox 프로세서, DEC VAX 8800 ("Nautilus") 제품군, Symbolics L- 및 G-머신이 있다. 일부 DEC PDP-10 머신은 마이크로코드를 SRAM 칩에 저장하며, 이는 일반적으로 다른 프런트 엔드 CPU를 통해 전원이 켜질 때 로드된다. HP 2100, DEC PDP-11/60 및 Varian Data Machines V-70 시리즈 미니컴퓨터를 포함한 더 많은 머신에서 사용자 프로그래밍 가능한 WCS를 옵션으로 제공했다.
Mentec M11 및 Mentec M1은 마이크로코드를 SRAM 칩에 저장하며, 전원이 켜질 때 다른 CPU를 통해 로드된다. Data General Eclipse MV/8000 ("Eagle")은 SRAM WCS를 가지고 있으며, 전원이 켜질 때 다른 CPU를 통해 로드된다.
WCS는 마이크로프로그램 패치 용이성, 특정 하드웨어 세대에서 ROM보다 빠른 액세스 등 여러 가지 장점을 제공한다. 사용자 프로그래밍 가능한 WCS를 사용하면 사용자가 특정 목적에 맞게 기계를 최적화할 수 있다. 그러나 프로그램을 디버깅하기 어렵게 만들고 악의적인 사용자가 시스템 및 데이터에 부정적인 영향을 미칠 수 있다는 단점도 있다.
x86 아키텍처 제품군에 속하는 여러 Intel CPU는 1995년 Pentium Pro를 시작으로 쓰기 가능한 마이크로코드를 가지고 있다. 이를 통해 Intel Core 2 마이크로코드 및 Intel Xeon 마이크로코드의 버그를 전체 칩을 교체하지 않고 소프트웨어로 수정할 수 있었다. 이러한 수정 사항은 Linux, FreeBSD, Microsoft Windows, 또는 마더보드 BIOS를 통해 설치할 수 있다.
2.3. 타이밍, 래칭 및 경쟁 상태 방지
컨트롤 스토어는 일반적으로 출력에 레지스터를 가진다. 다음 주소를 결정하기 위해 시퀀서로 다시 들어가는 출력은 경쟁 상태 발생을 방지하기 위해 일종의 레지스터를 거쳐야 한다.
대부분의 설계에서 다른 모든 비트도 레지스터를 거친다. 이는 다음 마이크로 명령어의 실행을 한 주기 지연시키면 기계가 더 빠르게 작동하기 때문이다. 이 레지스터는 파이프라인 레지스터라고 한다. 매우 자주, 다음 마이크로 명령어의 실행은 현재 마이크로 명령어의 결과에 따라 달라지며, 이는 현재 마이크로 사이클이 끝날 때까지 안정되지 않는다. 어떤 경우든 컨트롤 스토어의 모든 출력이 하나의 큰 레지스터로 들어가는 것을 볼 수 있다. 역사적으로 이러한 레지스터 비트가 있는 EPROM을 동일한 칩으로 구매할 수 있었다.
시스템의 사이클 시간을 결정하는 클럭 신호가 주로 이 레지스터를 클럭한다.
3. 현대적 응용
현대의 많은 CPU는 쓰기 가능한 마이크로코드를 사용한다. 이는 마이크로코드를 RAM에 저장하여 소프트웨어 업데이트를 통해 기능을 개선하거나 오류를 수정할 수 있게 해준다.
인텔 x86 아키텍처 CPU는 1995년 펜티엄 Pro부터 쓰기 가능한 마이크로코드를 도입했다. 이를 통해 Intel Core 2 및 Intel Xeon 마이크로코드와 같은 CPU의 버그를 소프트웨어 패치로 수정할 수 있게 되었다. 이러한 패치는 리눅스, FreeBSD, 마이크로소프트 윈도우, 또는 마더보드 BIOS를 통해 설치할 수 있다.
Rekursiv 프로세서, Imsys Cjip과 같이 명령어 집합을 CPU 내부의 쓰기 가능한 RAM 또는 플래시 메모리에 컴파일하는 CPU 설계도 있다. 재구성 가능한 컴퓨팅은 FPGA를 활용하여 마이크로코드를 구현하는 방식이다.