제어 장치는 컴퓨터의 중앙 처리 장치(CPU)의 주요 구성 요소로, 프로세서/컴퓨터에 의한 프로그램 실행 중 연산을 지시합니다. 제어 장치의 주 기능은 컴퓨터 메모리에서 명령어를 가져와 실행하는 것입니다. 사용자로부터 입력 명령어/정보를 받아 제어 신호로 변환한 후 CPU에 전달하여 추가 실행을 수행합니다. 존 노이만이 개발한 폰 노이만 아키텍처의 일부로 포함됩니다. 타이밍 신호와 제어 신호를 제공하고 CPU에 의한 프로그램 실행을 지시합니다. 현대 컴퓨터에서 CPU의 내부 부분으로 포함됩니다. 이 글은 제어 장치에 대한 완전한 정보를 설명합니다.
제어 장치란?
사용자로부터 입력 신호/정보/명령어를 받아 CPU에서의 실행을 위한 제어 신호로 변환하는 구성 요소입니다. 메인 메모리, 산술 논리 장치(ALU), 입출력 장치를 제어하고 지시하며, 컴퓨터 CPU로 전송되는 명령어도 책임집니다. 프로세서의 메인 메모리에서 명령어를 가져와 프로세서 명령어 레지스터로 보내며, 여기에는 레지스터 내용이 포함됩니다.
제어 장치 블록 다이어그램
제어 장치는 입력을 제어 신호로 변환하여 프로세서에 보내고 프로그램 실행을 지시합니다. 수행해야 할 연산은 프로세서가 컴퓨터에서 지시합니다. 주로 중앙 처리 장치(CPU)와 그래픽 처리 장치(GPU)가 제어 장치를 내부 부품으로 필요로 합니다. 제어 장치의 블록 다이어그램은 위에 표시되어 있습니다.
제어 장치의 구성 요소
이 장치의 구성 요소는 명령어 레지스터, CPU 내 제어 신호, 버스 간 제어 신호, 제어 버스, 입력 플래그, 클록 신호입니다.
하드와이어드 제어 장치의 구성 요소는 명령어 레지스터(연산 코드와 주소 필드 포함), 타이밍 유닛, 제어 상태 생성기, 제어 신호 생성 매트릭스, 명령어 디코더입니다. 마이크로프로그래밍 제어 장치의 구성 요소는 차기 주소 생성기, 제어 주소 레지스터, 제어 메모리, 제어 데이터 레지스터입니다.
기능
제어 장치의 기능은 다음과 같습니다.
프로세서와 다른 장치 간 데이터 시퀀스 흐름 지시.
명령어 해석 및 프로세서 내 데이터 흐름 제어.
명령어 레지스터에서 받은 명령어나 명령으로부터 제어 신호 시퀀스 생성.
컴퓨터 CPU의 ALU, 데이터 버퍼, 레지스터 등 실행 장치 제어 책임.
가져오기, 디코딩, 실행 처리, 결과 저장의 능력 보유.
데이터를 처리하고 저장할 수 없음.
데이터 전송을 위해 입출력 장치와 통신하고 컴퓨터의 모든 장치 제어.
제어 장치 설계
다음을 포함하는 두 가지 제어 장치 유형으로 설계할 수 있습니다.
하드와이어드 기반
마이크로프로그래밍 기반(단일 레벨 및 2레벨)
하드와이어드 제어 장치
하드와이어드 제어 장치의 기본 설계는 위에 나와 있습니다. 이 유형에서 제어 신호는 회로 구조 변경 없이 특수 하드웨어 로직 회로에 의해 생성됩니다. 여기서 생성된 신호는 프로세서에서 실행을 위해 수정될 수 없습니다.
연산 코드(명령어의 연산 코드) 기본 데이터가 디코딩을 위해 명령어 디코더로 전송됩니다. 명령어 디코더는 연산 코드 내 다양한 데이터 유형을 디코딩하는 디코더 집합입니다. 이는 활성 신호 값이 포함된 출력 신호를 생성하며, 이는 매트릭스 생성기에 입력으로 주어져 컴퓨터 프로세서에 의한 프로그램 실행을 위한 제어 신호를 생성합니다.
하드와이어드 기반 제어 장치
매트릭스 생성기는 제어 장치 상태와 프로세서로부터의 신호(인터럽트 신호)를 제공합니다. 매트릭스는 프로그래머블 로직 어레이로 구축됩니다. 매트릭스 생성기에서 생성된 제어 신호는 차기 생성기 매트릭스에 입력으로 주어지고 타이밍 유닛의 타이밍 신호(직사각형 패턴 포함)와 결합됩니다.
새 명령어 인출을 위해 제어 장치는 새 명령어 실행을 위한 초기 단계로 전환합니다. 타이밍 신호, 입력 신호, 컴퓨터 명령어 상태가 변경되지 않는 한 제어 장치는 초기 단계 또는 1단계에 머뭅니다. 생성된 신호 중 어느 것에서든 변화가 있으면 제어 장치 상태 변경이 발생할 수 있습니다.
외부 신호나 인터럽트가 발생하면 제어 장치는 다음 상태로 이동하여 인터럽트 신호 처리를 수행합니다. 플래그와 상태는 명령어 실행 사이클을 수행할 원하는 상태를 선택하는 데 사용됩니다.
마지막 상태에서 제어 장치는 다음 명령어를 인출하여 프로그램 카운터로 출력을 보내고, 메모리 주소 레지스터, 버퍼 레지스터, 명령어 레지스터로 거쳐 명령어를 읽습니다. 마지막으로 제어 장치가 인출한 마지막 명령어가 종료 명령어이면 프로세서의 운영 상태로 가서 사용자가 다음 프로그램을 지시할 때까지 대기합니다.
마이크로프로그래밍 제어 장치
이 유형에서는 프로그램 실행 중 인코딩된 제어 신호를 저장하기 위해 제어 저장소가 사용됩니다. 제어 신호는 마이크로프로그램이 제어 저장소에 주소 필드를 저장하기 때문에 즉시 생성되고 디코딩되지 않습니다. 전체 과정은 단일 레벨입니다.
마이크로 연산은 프로그램 내 마이크로 명령어 실행을 위해 수행됩니다. 마이크로프로그래밍 제어 장치의 블록 다이어그램은 위에 나와 있습니다. 다이어그램에서 마이크로 명령어의 주소는 제어 메모리 주소 레지스터에서 얻습니다. 제어 장치의 모든 정보는 ROM이라 불리는 제어 메모리에 영구 저장됩니다.
마이크로프로그래밍 기반 제어 장치
제어 메모리의 마이크로 명령어는 제어 레지스터에 보관됩니다. 마이크로 명령어가 제어 워드 형태(이진 제어 값 포함)로 되어 있어 데이터 처리를 위해 1개 이상의 마이크로 연산이 수행되어야 합니다.
마이크로 명령어 실행 중 차기 주소 생성기가 다음 마이크로 명령어 주소를 계산하여 제어 주소 레지스터로 보내 다음 마이크로 명령어를 읽습니다. 마이크로 프로그램의 마이크로 연산 시퀀스는 차기 주소 생성기에 의해 수행되며 마이크로프로그램 시퀀서 역할을 하여 시퀀스 주소, 즉 제어 메모리에서 읽은 주소를 얻습니다.
// 상태 초기화 initial begin state = 2'bxx; next_state = `PROC_FETCH; end
// 리셋 신호 처리 always @ (posedge RST) begin state = `PROC_FETCH; next_state = `PROC_FETCH; end always @ (posedge CLK) begin state = next_state; end always @(state) begin if (state === `PROC_FETCH) begin next_state = `PROC_DECODE;
print_instruction(INST_REG); end
if (state === `PROC_DECODE) begin next_state = `PROC_EXE;
end
if (state === `PROC_EXE) begin next_state = `PROC_MEM;
print_instruction(SP_REF); end
if (state === `PROC_MEM) begin next_state = `PROC_WB;
end
if (state === `PROC_WB) begin next_state = `PROC_FETCH;