http://www.kocw.net/home/search/kemView.do?kemId=998138
Instruction = opcode + operand
CPU Performance Equation
CPU Time =
Number of Clock Cycle = IC(Instruction Count 명령어 개수) * CPI(Cycles Per Instruction)명령어 당 몇 Clock 걸리는지
(* clock cycle time EX) 0.25ns ) or (/ clock rate EX) 4.0Ghz (주로 사용))
CPU Time = Number of Clock Cycle / clock rate
operand가 전부 R(Register)이다.
add, sub 등이 해당
opcode | rs | rt | rd | shamt | funct |
6bit | 5bit | 5bit | 5bit | 5bit | 6bit |
R-type에서 opcode는 전부 0으로 채운다.
레지스터 번호는 32까지 있어 5bit면 충분하다.
shamt는 쉬프트 연산 시 사용한다.
funct는 opcode를 0으로 놓고 6bit를 사용해 64가지,
opcode 나머지 63개 명령어를 사용해 127가지 명령어를 사용한다.
이를 opcode extension이라 한다.
add $1, $2, $3은 $1 = $2 + $3라는 표현이다.
2진수로 바꿔보면 $1은 결괏값이라 rd에 표현해야 한다.
rs에 $2, rt에 $3, rd에 $1이 들어가야 한다.
operand에 register가 아닌 상수값, 주소가 필요할 때 사용한다.
lw, sw, addi 등이 해당
opcode | rs | rt | address/constant |
6bit | 5bit | 5bit | 16bit |
addi $1, $2, 50의 경우 $1 = $2 + 50
R-type과 비슷하게 목적지 레지스터는 rd가 따로 없지만 뒤로 간다.
2진수로 바꿔보면 rs에 $2, rt에 $1, addr/const에 (0000 0000 0011 0010)50이 들어가게 된다.
Jump를 할 때 사용한다.
opcode | (word)address |
6bit | 26bit |
address는 32bit인데 주어진 공간은 26bit 뿐이다.
이를 해결하기 위해서
1. Alignment restriction에 의해 메모리 주소는 항상 4의 배수여야 한다.
2. 2^28B를 벗어나는 Jump는 없다고 가정하고 PC(Program Counter)앞 4byte를 가져온다.
PC | from instruction | 00 |
4byte | 26byte | 2byte |
의 형태가 된다.
이 경우가 안될 경우 li(load immediate)와 j를 사용한다.
컴퓨터구조 - 해저드 (0) | 2019.08.23 |
---|---|
웹 보안 - SQL 인젝션 (0) | 2019.08.22 |
컴퓨터구조 - 파이프라이닝 (0) | 2019.08.17 |
웹 보안 - 브루트 포스 (0) | 2019.08.16 |
OP.GG 크롤링하기 (0) | 2019.08.08 |