본문 바로가기
컴퓨터/컴퓨터구조

[UCB CS61C] Lec07 RISC-V Intro

by 봄여름가을 2024. 1. 5.
  • 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에는 값이 아예 정해져있기 때문에 바꿀 수 없음.

댓글