Notice
Recent Posts
Recent Comments
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

SYDev

[컴퓨터 구조] 3주차 정리 본문

3학년 1학기 전공/컴퓨터 구조

[컴퓨터 구조] 3주차 정리

시데브 2024. 3. 22. 18:49
경희대학교 컴퓨터공학부 김정욱 교수님의 컴퓨터 구조 강의 내용을 기반으로 한 정리글

 

MIPS(Microprocessor without Interlocked Pipeline Stages)

  • Instructions set architecture created by MIPS technologies
  • 앞 chapter에서의 mips와 다름

Design Principle of MIPS

  • 성능을 최대화하고, 비용을 최소화하면서, 하드웨어 및 컴파일러를 쉽게 구축할 수 있는 언어를 만들자.
  • Design Principle1: 간단함을 위해 규칙을 만들자 -> Making MIPS code(assembly and machine codes) to be regular
  • Design Principle2: Smaller is faster -> 레지스터의 수는 32로 제한
  • Design principple3: 좋은 설계는 적당한 타협을 요구한다. -> 32bit 명령어를 사용

+ 일반적인 상황은 빠르게 만들자 -> making $zero register

 

 

Arithmetic Instructions in MIPS

  • General 3-operand format of MIPS assembly language notation(표기법) -> operation destination, source 1, source2
  • 피연산자 3개 -> 두 개의 sources/ 하나의 destination
  • 하나의 operation
  • add a, b, c -> b와 c의 합을 a에 저장

 

Register

  • CPU가 요청을 처리할 때 필요한 데이터를 일시적으로 저장하는 기억장치
  • 빠르게 accept, store and transfer data & instructions
  • 레지스터의 개수는 32개로 제한 -> 레지스터의 수가 많을수록 더 많은 정보를 저장해놓고 바로 쓸 수 있지만, 그만큼 clock cycle time도 증가
  • 레지스터 - 캐쉬(Static RAM) - 메모리(Dynamic RAM) -디스크(Magnetic Disk)
  • 레지스터 하나에는 32비트의 정보가 저장됨
add $t0, $s1, $s2 # 레지스터 $t0에 g + h 값 저장
add $t1, $s3, $s4 # 레지스터 $t0에 i + j 값 저장
sub $s0, $t0, $t1 # s0에 (g + h) - (i + j) 값 저장

 

Memory Operands

  • MIPS instructions의 Arithmetic 연산은 레지스터에서 발생한다. -> 하지만 data는 memory에 저장돼있음 -> MIPS는 memory의 데이터를 register에 넣는 명령어를 포함해야 한다. -> memory의 word에 접근하기 위해서는 명령어는 memory address를 제공해야 한다.
  • word: natural unit of access in a computer
g = h + A[8]

lw $t0, 32($s3)  # 임시 register $t0에 A[8]값 저장 -> array A의 base address인 $s3에서 32bits(8bytes) 이동
-> lw: load word

add $s1, $s2, $t0  # g = h + A[8]
sw $t0, 48($s3)  # 임시 레지스터에 있던 값을 A[12]에 저장
-> sw: save word

 

addi $t0, $s2, -5
add $s0, $s1, $t0

lw $t0, 16($s6)
add $t0, $s1, $t0
sub $s0, $0, $t0

 

Signed and Unsigned Numbers

  • base진법 표현 -> d * (base)^i
  • Least significant bit (LSB) and Most significant bit (MSB)

 

Unsigned binary numbers (32bit)

0 ~ 2^(31) - 1

 

Signed binary numbers (32bit)

-2^(31) ~ 2^(31) - 1

 

Hexadecimal

  • base of the hexadecimal is 16

 

Representing Instructions in the Computer

  • Assembly Language -> binary machine language

MIPS Fields (R-Format) - 수학/논리적 명령어(add, sub, ..)

  • op: 명령어가 수행할 연산의 종류
  • rs(register source): 첫 번째 피연산자 레지스터(5bits - 32registers)
  • rt(register target): 두 번째 피연산자 레지스터(5bits - 32registers)
  • rd(register destination): 목적지 연산자 레지스터(5bits - 32registers)
  • shamt: shift amount -> 시프트 연산에서 이동의 크기
  • funct: function code(add, sub) -> op필드에서 연산의 종류를 표시하고, funct 필드에서는 그 연산을 구체적으로 지정

-> 명령어에서 레지스터를 5비트로 표현하는 이유는 레지스터의 개수가 32개이기 때문이고, 레지스터 내부에 저장되는 정보가 5비트인 것과는 별개

-> 그렇다면 레지스터에 담겨져있는 것은 value? address?

MIPS Fields (I-Format)

  • 데이터 교환 명령어에서 사용된다.

  • op: 연산자 코드
  • rs: 첫 번째 피연산자 레지스터
  • rt: 두 번째 피연산자 레지스터
  • constant or address - op코드에 따라 결정
  • address: 2^15만큼의 offset
  • constant: add immediate -2^15 ~ 2^15 - 1

 

 

 

Logical Operations

Logical Operation

  • 개별적인 bits 연산
  • Shift left - << - sll
  • Shift right - >> - srl
  • Bit-by-bit AND - & - and, andi
  • Bit-by-bit OR - | - or, ori
  • Bit-by-bit NOT - ~ - nor

 

Shift
sll $t2, $s0, 4
0 0 16 10 4 0
funct code가 shift left or shift right 결정

And
and $t0, $t1, $t2

Or
or $t0, $t1, $t2

Nor
1이 하나라도 있으면 0
둘 다 0이면 1

 

Instructions for Making Decisions

  • Branch if equal(beq) -> beq register1, register2, L1 -> reg1과 reg2가 일치하면 L1으로 
  • Branch if not equal(bne) -> bne register1, register2, L1

bne $s3, $s4, Else
add $s1, $s2, $s0
j Exit
Else: sub $s1, $s2, $s0
Exit:

 

While loop

 

 

Comparison instruction(Signed int ver)

  • Set on less than(slt): reg1이 reg2보다 작으면 1
  • Set on less than immediate(slti)
slt $t0, $s3, $s4    ;$t0 = 1 if $s3 < $s4
slti $t0, $s2, 10    ;$t0 = 1 if $s2 < 10

 

Comparison instruction(Unsigned int ver)

  • Set on less than unsigned(sltu): reg1이 reg2보다 작으면 1
  • Set on less than immediate unsigned(sltiu)
slt $t0, $s3, $s4    ;$t0 = 1 if $s3 < $s4
slti $t0, $s2, 10    ;$t0 = 1 if $s2 < 10

 

slt 
-> $s0는 -1, $s1은 1 -> $t0는 1
uslt
-> $s0는 2^64, $s1은 1 -> $t1은 0

참고자료

 

[컴퓨터 구조] MIPS R-format, I-format 명령어, 내장 프로그램

명령어의 컴퓨터 내부 표현 Machine Code ✔ 모든 명령어는 숫자로 표현됨. ✔ 어셈블리 언어와 구별하여...

blog.naver.com