에피소드 I: 프로세서 설계에 대한 전반적인 이해

프로세서 설계를 이해하려고 제가 가장 먼저 읽은 것은 Stackoverflow의 이 답변이었는데, 많은 영감을 받았습니다. @mithro가 추천해 준 이 글도 있습니다. 체계적인 강의로는 MIT의 이 강의를 적극 추천합니다. 이 강의는 제가 여기서 다룬 것보다 훨씬 더 나아가기 위한 원리(파이프라인 등)도 알려 줍니다.

Verilog 기초와 문법은 Verilog by example by Blaine C. Readler로 공부했는데, 이 책 역시 짧고 핵심만 담고 있습니다.

Stackoverflow 답변에는 좋은 점이 두 가지 있습니다.

여기서 배울 수 있는 것은, 이른바 범용(general-purpose) 레지스터를 저장하는 레지스터 파일(register file)이 있다는 점입니다. 범용이라는 말은, 명령어가 레지스터를 읽을 때마다 그 레지스터가 어느 것이든 될 수 있고, 명령어가 레지스터에 쓸 때마다 그 레지스터 역시 어느 것이든 될 수 있다는 뜻입니다. 이는 특수(specialized) 레지스터를 가진 x86(CISC)과 다른 점입니다. 가장 일반적인 명령어(register <- register OP register)를 구현하기 위해, 레지스터 파일은 매 사이클마다 레지스터 두 개를 읽고, 선택적으로 레지스터 하나에 결과를 다시 씁니다(write-back).

두 값에 대한 연산을 계산하는 ALU가 있습니다.

또한 현재 명령어의 비트 패턴으로부터 필요한 모든 내부 신호를 생성하는 디코더(decoder)도 있습니다.

RISC-V 프로세서를 직접 설계하고 싶다면, Stackoverflow 답변을 깊이 살펴보고, 더 나아가기 전에 직접 회로도를 몇 개 그려 보면서 전반적인 개념을 모두 머릿속에 넣어 두기를 권합니다.

좋습니다. 이제 이것을 RISC-V 명령어를 이해하는 무언가로 어떻게 옮길 수 있는지 살펴봅시다.

다음