CPU: 파이프라인 단계별 명령어 속도 비교: lw, sw, R-format, Branch 명령어 처리 시간
Instruction class에 따른 속도 차이\
주어진 표를 보면 Load word (lw)
명령어가 다른 명령어들보다 Total time
이 가장 길게 나와있습니다. 그 이유는 lw
명령어가 5단계 파이프라인의 모든 단계를 거쳐야 하기 때문입니다.
각 명령어가 거치는 단계와 해당 단계의 시간을 자세히 살펴보겠습니다.
Load word (lw):
Instruction fetch: 200 ps
Register read: 100 ps
ALU operation: 200 ps (주소 계산:
Base + Offset
)Data access: 200 ps (계산된 주소에서 데이터 메모리 읽기)
Register write: 100 ps (읽어온 데이터를 레지스터에 쓰기)
Total time: 800 ps
lw
명령어는 메모리에서 데이터를 읽어와 레지스터에 쓰는 명령어이므로, **Instruction Fetch, Register Read, ALU Operation (주소 계산), Data Access (메모리 읽기), Register Write (결과 저장)**의 모든 5단계를 거쳐야 합니다. 따라서 가장 긴 시간이 소요됩니다.Store word (sw):
Instruction fetch: 200 ps
Register read: 100 ps
ALU operation: 200 ps (주소 계산:
Base + Offset
)Data access: 200 ps (계산된 주소에 데이터 메모리 쓰기)
Register write: (없음)
Total time: 700 ps
sw
명령어는 레지스터의 데이터를 메모리에 쓰는 명령어입니다.lw
와 마찬가지로 주소를 계산하고 메모리에 접근해야 하지만, 메모리에 데이터를 쓴 후 레지스터에 결과를 다시 쓸 필요가 없습니다. (Store 명령어는 레지스터를 업데이트하지 않음) 따라서Register write
단계가 생략되어100 ps
가 줄어듭니다.R-format (add, sub, AND, OR, slt):
Instruction fetch: 200 ps
Register read: 100 ps
ALU operation: 200 ps (레지스터 값 간의 연산)
Data access: (없음)
Register write: 100 ps (ALU 연산 결과를 레지스터에 쓰기)
Total time: 600 ps
R-format 명령어는 레지스터 간의 연산만 수행합니다. 따라서 데이터 메모리에 접근할 필요가 없습니다.
Data access
단계가 생략되어200 ps
가 줄어듭니다.Branch (beq):
Instruction fetch: 200 ps
Register read: 100 ps
ALU operation: 200 ps (두 레지스터 값 비교)
Data access: (없음)
Register write: (없음)
Total time: 500 ps
beq
명령어는 두 레지스터 값을 비교하고 (ALU), 조건이 맞으면 분기합니다. 이 명령어는 데이터 메모리에 접근하지 않고, 레지스터에 어떤 값도 쓰지 않습니다. 따라서Data access
와Register write
단계가 모두 생략됩니다.