[컴퓨터구조] #2. MIPS 명령어(2)
Lec 2. MIPS Instructions_2 (Language of the Computer)
- MIPS Arithmetic Instructions
: add, sub, addi, addiu, mult, div
- Levels of Program Code
High-level language : productivity, protability(이식성 : 타깃 하드웨어의 instruction set을 신경 쓸 필요 x )
Assembly language : textual, symbolic
Machine code (object code or binary) : binary bits of instructions and data
- High-Level Code is Portable
: 어떤 CPU에서 어떻게 돌아갈지 해당 CPU의 instruction set을 이해할 필요 x.
어떤 CPU가 되었건 상관없이 high-level code는 다 알아들음(이식성 있음).
-> 컴파일러가 타깃 CPU에 맞게 컴파일해줌
고급언어(one-to-many) -> 컴파일러 -> 어셈블리어(one-to-one) -> 어셈블러 -> 기계어
- Register File in Verilog
Verilog : 하드웨어를 module 단위로 기술하는 언어.
module 키워드로 시작을 알리고 기술하고 싶은 모듈의 이름(regfile)을 써줌.
이후 module을 둘러싸는 입출력port에 대한 기술.
reg[31:0] 는 각 레지스터가 32bit인 것을, rf[31:0] 는 레지스터 32개를 나타냄.
클럭이 positive edge(0->1)일 때
write enable(we)이 1이면 rf[wa]에 wd값을 집어넣음.
클럭(clk) : 순차회로에서 동기화를 맞추기 위한 신호. 0과 1을 반복하는 파형임.
ra1==0이면 (굳이 R0을 읽지 않고) rd1은 0을 배출함.
R0은 전부 0으로 차있는 read only register임.
- MIPS Instruction examples in 2 forms
: Human-readable form(sub $7, $7, $2), Machine-readable form(2진수)
- MIPS Instruction Fields
rs (source1), rt (source2), rd (destination) => 각각 5-bits
op와 funct (add, sub, .. 등을 나타냄) => 각각 6-bits
- add
: add rd, rs, rt
ALU (Arithmetic and Logical Unit) : 덧셈, 뺄셈, 로직 연산 등이 들어있는 뭉치
- sub
: sub rd, rs, rt