목차
컴퓨터의 구성요소 5가지
Absractions and ISA
Defining Performance
Instruction Set
MIPS Arithmetic Operation
Register Operands
Memory Operands
Immediate Operands
컴퓨터의 구성요소 5가지
1. Datapath : 데이터에 대한 연산 수행
2. Control : Datapath, Memory, I/O Device 등의 동작을 제어
3. Memory : 데이터 저장
4. 5. Input & Output : 주변 기기들과 컴퓨터 사이에 발생하는 입출력
Absractions and ISA
1. Abstraction : 추상화
복잡한 시스템이나 문제를 간단한 모델이나 개념으로 표현하는 과정
(1) 데이터 추상화 (2) 절차적 추상화 (3) 기술적 추상화
2. ISA : Instruction Set Architecture : 명령어 집합 아키텍처
프로세서가 이해하고 실행할 수 있는 명령어의 집합을 정의한다. 하드웨어와 소프트웨어 간의 인터페이스 역할을 한다.
(1) 명령어 형식 (2) 명령어 집합 (3) 주소 지정 모드
Defining Performance
성능을 판단하는 기준은 크게 Response Time과 Throughput 두 가지가 존재한다.
1. Response Time = Latency, Execution time
하나의 작업(task)을 처리하는 데 걸리는 시간
2. Throught = Bandwidth
한 번에 처리할 수 있는 작업량 => 단위 시간 당 처리한 task
Instruction Set
컴퓨터는 Instruction을 통해 명령을 수행한다. Instruction을 정의하고 모아놓은 집합이 Instruction Set이다. 일반적으로 MIPS Instruction Set을 다룬다.
- MIPS Instruction Set
MIPS Instruction Set은 현대 ISA에서 많이 채택되고 있는 Instruction Set이다. MIPS Instruction Set의 명령어들은 아래와 같이 분류할 수 있다.
Arithmetic : 산술 연산
Memory(Data Transfer) : 메모리 접근 및 데이터 전달
Logical : 논리 연산
Conditional : 조건 판별
Branch / Jump : 수행 시점을 특정 지점으로 옮김
Floating Point : 부동소수점 연산
Pseudo : Instruction Set에는 정의되지는 않지만 어셈블러에서 편의를 위해 제공하는 Instruction
- Format의 종류
R-format
I-format
J-format
MIPS Arithmetic Operation
add a, b, c
MIPS 산술 연산을 수행하는 어셈블리 코드이다.
b, c를 더한 값을 a에 저장하겠다는 의미다.
f = (g + h) - (i + j);
add t0, g, h # temp t0 = g + h
add t1, i, j # temp t1 = i + j
sub f, t0, t1 # f = t0 - t1
t0, t1은 Register에 해당한다.
Register Operands
Arithmetic Instruction은 레지스터 피연산자를 사용한다. (MIPS Architecture 기준)
Register : Processor에 존재하는 저장소, Register는 32bit 공간을 가진다.
32 bit 단위로 데이터를 자주 전달하기 때문에 1 word(= 32bit)라는 단위를 사용한다.
32개의 Register가 존재하며 각 Register는 0 ~ 31의 번호를 부여, 비용, 성능을 종합하여 32개로 유지
어셈블러에선 레지스터의 용도에 맞는 이름을 붙인다.
$t0, $t1, ... $t9
(Temporary) 값을 저장할 레지스터
$s0, $s1, ... $s7
(Saved) 값을 저장할 레지스터
f = (g + h) - (i + j);
각 변수는 $s0 ~ $s4에 저장되어 있다고 가정
add $t0, $s1, $s2 # $t0 = g + h
add $t1, $s3, $s4 # $t1 = i + j
sub $s0, $t0, $t1 # f = $t0 - $t1
Memory Operands
메인 메모리는 복합적인 데이터(배열, 구조체, 동적인 데이터)를 저장하는 데 사용
또 레지스터는 32bit, 32개로 한정되어 있기 때문에 여기에 저장할 수 없는 데이터가 Memory에 저장되기도 한다.
메모리의 값에 산술 연산을 적용하기 위해서는 Data Transfer Instruction을 사용해야 한다.
- Load : Memory -> Register, 메모리에서 값을 가져와 레지스터에 저장
- Store : Register -> Memory, 레지스터의 값을 메모리에 저장
메모리에 접근하기 위해서는 메모리 주소가 필요하다.
- 메모리 주소는 Byte 기준으로 되어 있다. Word들은 메모리 상에 정렬되어 있다. (메모리 주소는 4의 배수)
MIPS에서는 Big Endian 방식을 사용한다.
Word 시작 주소에 Most-Significant Byte가 위치한다.
[12 34 AB CD] : 1word 데이터 (16진수)
[12 34 AB CD] 데이터가 0xAAAAAAA0에 저장될 때,
# Big Endian
0xAAAAAAA0 - [12] : Most Significant Byte
0xAAAAAAA1 - [34]
0xAAAAAAA2 - [AB]
0xAAAAAAA3 - [CD]
Memory Instructions Examples
lw(Load Word), sw(Store Word)가 있다. 피연산자로는 목적지 레지스터, 오프셋, 베이스 레지스터가 있다.
lw, sw
lw $t0, 32($s3)
$t0는 메모리에서 가져온 데이터를 담을 레지스터, $s3는 접근할 메모리를 저장하고 있는 레지스터(base register)
32는 offset에 해당하며 base register + offset 위치에서 최종적으로 데이터를 가져온다.
-> $s3에 저장된 주소값 + 32 위치에서 1 word를 가져와 $t0에 저장하는 것이다.
sw $t0, 32($s3)
sw도 마찬가지로 base register + offset 위치의 주소를 계산하는 방법은 동일하지만 $t0에 메모리 값을 저장하는 것이 아니라, $t0에 있는 값을 해당 메모리 주소에 저장하는 것이다.
Example
a = b + A[8];
a : $s1, b : $s2, A의 베이스 주소 : $s3(A는 int(4byte) 배열)
lw $t0, 32($s3) # $t0 = A[8]
add $s1, $s2, $t0 # g = h + $t0
Immediate Operands
즉시값은 숫자, 메모리 주소 같은 상수를 직접 입력하는 방식의 피연산자를 말한다. 대표적인 Immediate Operation으로는 add의 Immediate 버전인 addi가 있다.
addi $s3, $s3, 4 # $s3 = $s3 + 4(Immediate)
subi는 없으며, 즉시값으로 음수를 넣는 것으로 대체 가능하다.
MIPS에서는 상수 0을 대신할 수 있는 레지스터 $zero를 제공한다. $zero에는 값을 덮어쓸 수 없으며 $zero와 add를 이용하면 레지스터에 값을 복사할 수 있다.
add $t2, $s1, $zero # $t2 = $s1
'Semiconductor > Digital, Analog, 회로 이론' 카테고리의 다른 글
Setup Time, Hold Time에 대하여 (0) | 2024.10.29 |
---|---|
컴퓨터 구조 및 CPU 동작 원리 (2) - CPU 동작 구조 (Pipelining) (1) | 2024.10.14 |
AXI4-Lite Interface에 대하여 (+ Template Code) (0) | 2024.09.26 |
WaveDrom (Timing Diagram) 사용 법 (0) | 2024.09.19 |
AMBA - AXI 이론편 (0) | 2024.09.04 |