에피소드 VI: 선형 실행 흐름, reg <- reg OP reg ALU 명령어

RAM에 저장된 reg <- reg OP reg 명령어의 선형 스트림만 실행할 수 있는 아주 간단한 프로세서부터 시작해 봅시다. 설계의 왼쪽 부분에서 NextPC는 항상 PC에 4를 더해서 얻습니다. 가운데 부분에서는 명령어를 RAM에서 가져와 Instr에 저장합니다. 디코더가 두 소스 레지스터와 목적지 레지스터를 추출하여 레지스터 파일로 보냅니다. 레지스터 파일에서 읽은 두 값은 ALU에 입력되며, ALU는 역시 디코더가 추출한 연산을 계산합니다. 마지막으로 이 값은 레지스터 파일에 다시 기록됩니다.

이를 제어하는 유한 상태 기계는 세 개의 상태로 이루어진 매우 간단한 구조입니다. Instr Fetch가 시작될 때 프로그램 카운터 PC에는 유효한 주소가 들어 있습니다. 다음 상태인 Register Fetch가 시작될 때 명령어가 Instr에 준비되어 있습니다. 두 소스 레지스터와 목적지 레지스터도 준비되어 있는데, 이들은 Instr의 고정된 위치에서 추출한 5비트 워드에 불과하기 때문입니다. Write Back이 시작될 때 두 소스 레지스터와 계산된 값이 준비되어 있습니다(순수한 조합 논리 ALU를 사용하기 때문이며, 더 복잡한 ALU였다면 값이 준비될 때까지 기다려야 했을 것입니다). 그런 다음 결과가 레지스터 파일에 기록되고, PC는 NextPC로 교체됩니다.

(TODO: 테스트벤치와 예제 설계 추가)

다음