일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 티스토리챌린지
- LG Aimers 4th
- Classification
- PCA
- 회귀
- 딥러닝
- ChatGPT
- Machine Learning
- 오블완
- LG Aimers
- 분류
- deep learning
- 머신러닝
- LLM
- GPT-4
- LG
- gpt
- regression
- supervised learning
- 해커톤
- 지도학습
- AI
- OpenAI
Archives
- Today
- Total
SYDev
[컴퓨터 구조] 3주차 정리 본문
경희대학교 컴퓨터공학부 김정욱 교수님의 컴퓨터 구조 강의 내용을 기반으로 한 정리글
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, $t0lw $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
참고자료
'3학년 1학기 전공 > 컴퓨터 구조' 카테고리의 다른 글
[컴퓨터 구조] Lecture 09: Arithmetic for Computers (0) | 2024.04.13 |
---|---|
[컴퓨터 구조] Lecture 08: Instructions - Language of the Computer (0) | 2024.04.13 |
[컴퓨터 구조] Lecture 07: Instructions - Language of the Computer (0) | 2024.04.05 |
[컴퓨터 구조] Lecture 06: Instructions - Language of the Computer (0) | 2024.04.04 |
[컴퓨터 구조] 1, 2주차 정리 (0) | 2024.03.19 |