Semiconductor, Embedded/4. Digital, Analog, 회로 이론

컴퓨터 구조 및 CPU 동작 원리 (1) - 기본 개념

잇(IT) 2024. 10. 14. 12:49

목차

컴퓨터의 구성요소 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 TimeThroughput 두 가지가 존재한다.

 

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
728x90