- 1970, 80년대에는 더 많은 instruction을 더해 나가는 것이 트렌드였음. 하지만 1980년대 초반에 간단하고 작은 형태의 instruction set을 만들기 시작했음.
- 이를 통해 fast hardware를 만들고, 복잡한 연산은 software에게 맡기게 됨. 이는 당시의 사고방식에는 역행하는 것이었음.
Registers
- assembly에는 변수가 없고, 레지스터를 operand로 다룸. 레지스터는 HW에 있기 때문에 극도로 빠름. 하지만 HW에 있기 때문에 이미 정해진 수만큼만 존재하게 됨. 그래서 RISC-V는 이러한 제한된 레지스터를 효율적으로 사용해야 함.
- RISC-V는 32개의 레지스터를 사용함.
- (수업에서 사용하는) RV32에서는 word의 단위가 32비트(4바이트)임.
- 레지스터는 0에서 31까지 이름이 붙어있으며(
x0-x31
), 이 중x0
은 항상 0을 담고 있다는 점에서 특별함.
Addition and Substraction
add x1, x2, x3
- operation by name "destination", "source1", "source2" 순임.
- 이는
a = b + c
와 동일하며, x1, x2, x3가 각각 a, b, c에 해당
sub x3, x4, x5
d = e - f
와 동일하며, x3, x4, x5가 각각 d, e, f에 해당
a = b + c + d - e
와 같은 식은 multiple instructions로 나뉨. 여기서 일종의 임시 변수와 같은 역할을 하는 다른 레지스터를 이용함.f = (g + h) - (i + j)
도 마찬가지임.
Immediates
- numerical constant를 immediate라고 부르며, 특별한 instruction을 사용함.
addi x3, x4, 10
에서와 같이addi
라는 다른 instruction을 사용함.
- 하지만 subtract immediate는 RISC-V에서 지원되지 않음. 그 이유는 필요하지 않기 때문임.
addi x3, x4, -10
과 같은 식으로 표현 가능
- 0은 자주 사용되기 때문에
x0
를 사용하며 이때는addi
가 아닌add
를 사용하면 됨.x0
에는 값이 아예 정해져있기 때문에 바꿀 수 없음.
'컴퓨터 > 컴퓨터구조' 카테고리의 다른 글
[UCB CS61C] Lec10 RISC-V Memory and Calling Conventions (1) | 2024.01.09 |
---|---|
[UCB CS61C] Lec09 RISC-V Logical Instructions (0) | 2024.01.09 |
[UCB CS61C] Lec08 RISC-V (lw, sw, decision making) (0) | 2024.01.05 |
[UCB CS61C] Lec06 Floating Point (0) | 2024.01.04 |
[CS61C] Lec01 Intro (0) | 2024.01.01 |
댓글