이전 섹션에서는 각 명령어를 필요했던 기능 단위 작업에 해당하는 일련의 단계로 나누었습니다. 이러한 단계를 사용하여 다중 사이클 구현을 만들 수 있습니다. 다중 사이클 구현에서는 실행의 각 단계가 1 사이클을 소요합니다. 다중 사이클 구현은 기능 단위가 서로 다른 클록 사이클에서 여러 번 사용될 수 있도록 허용합니다. 이 공유는 필요한 하드웨어 양을 줄이는 데 도움이 될 수 있습니다. 명령어가 서로 다른 수의 클록 사이클을 소모할 수 있도록 허용하는 능력과 단일 명령어 실행 내에서 기능 단위를 공유할 수 있는 능력이 다중 사이클 설계의 주요 장점입니다. 이 온라인 섹션에서는 MIPS의 다중 사이클 구현에 대해 설명합니다.
그림 4.11의 single-cycle 버전의 datapath와 비교해보면, 아래와 같은 차이가 있습니다.
At the end of a clock cycle, all data that is used in subsequent clock cycles must be stored in a state element. Data used by subsequent instructions in a later clock cycle is stored into one of the programmer-visible state elements: the register file, the PC, or the memory. In contrast, data used by the same instruction in a later cycle must be stored into one of these additional registers that are appended to each functional unit.
Thus, the position of the additional registers is determined by these two factors: what combinational units will fit in one clock cycle and what data is needed in later cycles implementing the instruction. 이 다중 사이클 설계에서는 클럭 사이클이 다음 작업 중 최대 하나만 수용할 수 있다고 가정합니다: 메모리 접근, 레지스터 파일 접근 (두 번 읽기 또는 한 번 쓰기), 또는 ALU 작업. 따라서 하나의 메모리, 레지스터 파일, ALU 중 하나에서 생성된 데이터는 나중의 사이클에서 사용하기 위해 임시 레지스터에 저장되어야 합니다. 저장되지 않으면 타이밍 레이스가 발생할 가능성이 있어 잘못된 값이 사용될 수 있습니다. 이러한 요구 사항을 충족시키기 위해 다음과 같은 임시 레지스터가 추가됩니다:
IR을 제외한 모든 레지스터는 두 개의 인접한 클록 사이클 사이에만 데이터를 보유하며 따라서 쓰기 제어 신호가 필요하지 않습니다. IR은 해당 명령어 실행이 끝날 때까지 명령어를 보유해야 하므로 쓰기 제어 신호가 필요합니다. 이 구별은 각 명령어의 개별 클록 사이클을 보여줄 때 더욱 명확해질 것입니다.
여러 기능 단위가 다양한 용도로 공유되기 때문에, 우리는 멀티플렉서(multiplexors)를 추가하고 기존의 멀티플렉서를 확장해야 합니다. 예를 들어, 하나의 메모리가 명령어와 데이터 모두에 사용되므로, 메모리 주소에 대해 두 소스 간에 선택할 수 있는 멀티플렉서가 필요합니다. 이 두 소스는 명령어 접근을 위한 PC와 데이터 접근을 위한 ALUOut입니다.
단일 사이클 데이터 경로의 세 개의 ALU를 단일 ALU로 대체하는 것은, 단일 ALU가 세 개의 서로 다른 ALU로 가던 모든 입력을 수용해야 한다는 것을 의미합니다. 추가 입력을 처리하기 위해 데이터 경로에 두 가지 변경이 필요합니다:
몇 개의 레지스터와 멀티플렉서를 도입함으로써, 메모리 유닛의 수를 두 개에서 하나로 줄이고 두 개의 가산기를 없앨 수 있습니다. 레지스터와 멀티플렉서는 메모리 유닛이나 ALU에 비해 상당히 작기 때문에, 이는 하드웨어 비용을 크게 줄일 수 있습니다.
With the jump instruction and branch instruction, there are two possible sources for the value to be written into the PC: