명령어 (2) - 산술연산, 레지스터 개요

컴퓨터구조

2020. 4. 8. 10:01

1. Arithmetic Operation 개요

  • Arithmetic Operation은 산술연산을 의미함. 
  • add a, b, c 는 a = b + c를 의미함. 
  • 모든 산술연산은 위와 같은 형태(규칙성)을 지님.

 

Design Principle 1.
Simplicity Favors Regularity (규칙성을 이용해서 간단하게 만들자)

- 규칙적으로 만들어야 구현하기에 쉬워진다.
- 단순성을 추구해야 저비용으로 고성능 구조를 만들 수 있다.

 

아래를 통해 Arithmetic Operation의 예시를 알아보자.

// C Code : 
f = (g + h) - (i + j);

// MIPS Code :
add t0, g, h
add t1, i, j
sub f, t0, t1
  • 여기에 나와있는 t0, t1은 레지스터이다.
  • 이 단계에서는 이해를 쉽게 하기 위해 g, h등을 직접 코드에 적었지만 원래는 이렇지 않다.
  • 실제로는 모든 연산은 레지스터에서 일어난다. 
  • 때문에 g, h 등의 메모리안에 있는 데이터는 레지스터로 로드된다.

 

2. Register 개요

  • Arithmetic Instruction은 레지스터를 오퍼랜드로 사용한다.
  • MIPS Architecture의 경우 32Bit의 레지스터를 32개 사용한다. (0 ~ 31번 존재)
  • MIPS는 32Bit Processor이기 때문에 레지스터에서 한번에 32Bit까지 처리할 수 있다.
  • 많은 레지스터들이 있지만 대표적으로 $t0, $t1 처럼 t로 시작하는 레지스터는 temporary를 의미하고
  • $s0, $s1, $s2 처럼 s로 시작하는 레지스터는 saved value를 의미한다. (t는 가변, s는 불변이다)

 

Design Principle 2. 
Smaller is faster (작을수록 빠르다)

- 일반적으로 메모리(RAM)은 DRAM으로 만들고, 레지스터는 SRAM으로 만듦.
- 그러나 작은 레지스터가 커다란 메모리보다 빠른 이유는 단순히 메모리가 더 용량이 크기 때문이다.
- 메모리가 레지스터보다 크기 때문에 전기적인 신호를 더 멀리 보내야한다.
- 이 때문에 메모리에 엑세스할 때 레지스터보다 Clock Cycle Time이 많이 걸린다.
- 실제로 레지스터에 엑세스하는 시간이 메모리에 엑세스 하는 시간보다 훨씬빠르다.

※ 추가로 알아보기 ※
- DRAM의 경우 MOS 트랜지스터 안에 있는 콘덴서에 전하의 형태로 저장되며, 이 전하는 시간이 지나면 방전되어 정보를 잃는다. 때문에 재충전 (Refresh)이 반드시 필요하고, 1개의 트랜지스터로 만들 수 있다.

- SRAM의 경우 플립플롭 소자로 이루어져서 전원이 연결되어있으면 내용이 계속 유지된다. Read/Write속도가 무척 빠르고, 보통 4~6개의 트랜지스터로 만들어서 가격이 비싼편이다.

- Register의 경우 CPU 내부에 존재하며, 직접적으로 ALU와 연결되어있어서 연산에 사용될 데이터를 저장하는 용도로 사용되지만 RAM(메모리)는 CPU와 주소버스, 데이터버스로 연결되어있고, 더욱 대량의 데이터/프로그램(명령어)를 저장하고 있는 용도로 사용된다.

- Cache (캐시) 역시 SRAM으로 구성되어있다. 캐시는 Main Memory와 CPU 사이의 속도차이를 극복하기 위해 도입되었으며, Memory에서 데이터를 Word단위로 매번 엑세스 하려면 매우 느리기 때문에 Cache에 데이터를 미리 많이 가져다 놓고, Cahce와 Register사이에서 데이터를 주고받으며 연산을 수행하게 된다.

 

아래를 통해 Register 사용의 예시를 알아보자.

// C Code :
f = (g + h) - (i + j);

// MIPS Code : 
// f, ..., j in $s0, ..., $s1
add $t0, $s1, $s2
add $t1, $s3, $s4
sub $s0, $t0, $t1

 

3. Reference

 

컴퓨터구조

이 과목에서는 컴퓨터 시스템의 구성, 동작원리와 설계를 다룬다. 특히 컴퓨터 성능, 명령집합, 제어와 마이크로프로그래밍, 파이프라인, 정수와 부동 소수점수 연산, 기억부 시스템, 입출력 부시스템, 고급 컴퓨터구조 등과 같은 내용에 중점을 둔다. 교과목을 통해 고속 Data Network 시스템에 들어가는 여러 Processors를 이해하고, 이들을 설계 또는 Programming 할 수 있는 능력을 배양한다.

www.kocw.net