Ch 4. The Processor - (2)
2. Building Datapath
배워볼 내용: single clock cycle datapath
- instuction이 one clock cycle에서 실행
- datapath는 MIPS instruction set에 의해 결정
MIPS
- instructions
- memory-reference instructions
- lw, sw
- arithmetic-logical instructions
- add, sub, and, or, slt
- control flow instructions
- beq
- memory-reference instructions
- Generic Implementation
- instruction fetch
- instruction 주소를 공급하기 위해 PC 사용
- memory로부터 instruction을 get
- instruction execute
- registers를 읽어오기
- 다음 액션을 결정하기 위해 instruction 사용
- instruction fetch
add Operation
- add rd, rs, rt
- RTL(Register Transfer Language) Description
IR ← mem[PC]; R[rd] ← R[rs] + R[rt]; PC ← PC + 4;
Fetch instruction from memory
ADD operation
Calculate next address
sub Operation
- sub rd, rs, rt
- RTL Description
IR ← mem[PC]; R[rd] ← R[rs] + ~R[rt] + 1; PC ← PC + 4;
Fetch instruction from memory
SUB operation (two’s complement)
Calculate next address
lw Operation
- lw rt, rs, imm16
- RTL Description
IR ← mem[PC]; Addr ← R[rs] + SignExt (imm16); R[rt] ← Mem[Addr]; PC ← PC + 4;
Fetch instruction from memory
Compute memory address (Sign Extension)
Load data into register
Calculate next address
sw Operation
- sw rt, rs, imm16
- RTL Description
IR ← mem[PC]; Addr ← R[rs] + SignExt (imm16); Mem[Addr] ← R[rt]; PC ← PC + 4;
Fetch instruction from memory
Compute memory address (Sign Extension)
Store data into memory
Calculate next address
beq Operation
- beq rt, rs, imm16
- RTL Description
IR ← mem[PC]; Cond ← R[rs] + ~R[rt] + 1; PC ← Cons ? PC + 4; : PC + 4 + (SignExt(imm16) << 2)
Fetch instruction from memory
Compute conditional ‘Cond’ (two’s complement)
Fall through if non-zero ‘Cond’
Branch if zero ‘Cond’
Abstract / Simplified View of Implementation
- Separate memory
- instruction memory
- data memory
Register File
- using D flip-flop
- Register Read
- Multiplexer가 번호와 대응하는 Register를 골라 출력 (data selection)
- Register Write
- Write가 enable이 되고 올바른 register 번호가 공급되면 대응하는 register만 enable
- Read & Write 동시에 가능
Components for Simple Implementation
- Instruction fetch
- Instruction memory
- Program Counter
- Adder
- R-format ALU operations
- Registers
- ALU
- add, sub, and, or, slt
- sw, lw, instuctions
- Registers
- ALU
- Data memory unit
- Sign-extension unit
- beq instruction
- Registers
- ALU
- Sign-extension unit
- Program counter
- Adder * Use multiplexers to stitch them together
ALU with 4 control signals
ALU control lines | Function |
---|---|
0000 | AND |
0001 | OR |
0010 | add |
0110 | subtract |
0111 | set on less than |
1100 | NOR |
Status Bit
- Z : zero
- 1 (result = 0)
- 0 (result = non-zero)
- S : sign
- 0 (result = positive number)
- 1 (result = negative number)
- V : overflow
- 0 (overflow X)
- 1 (overflow O)
- C : carryout
- 0 (carryout O)
- 1 (carryout X)