본문 바로가기

CS Knowledge/Computer Structure

Computer Structure - CPU(1)

 

임석구, 홍경호 저자의 '최신 컴퓨터 구조'를 참고하였음을 알립니다.

 

 

1. 프로세서 구성과 동작

2. 산술 논리 연산 장치

3. 레지스터

 

 

 

프로세서(CPU) 구성과 동작

컴퓨터의 3가지 핵심 장치 : 프로세서(CPU), 메모리, 입출력 장치

버스 : 장치간 주소, 데이터, 제어 신호를 전송하기 위한 연결 통로

 

 

 

1) 버스 구성

- 내부 버스 : 프로세서 내부의 장치 연결

- 시스템 버스 : 핵심장치 및 주변 장치 연결

 

2) CPU 구성

- 산술 논리 연산 장치(ALU) : 산술 논리 연산 등 기본 연산을 수행, 그 결과를 누산기(AC)에 저장

- 제어 장치 : 메모리에서 명령을 가져와 해독하고 실행에 필요한 장치들을 제어하는 신호를 발생

- 레지스터 세트 : CPU 내에 존재하는 용량은 작지만 속도가 매우 빠른 메모리, ALU 연산과 관련된 데이터, 특정 제어 정보 저장

   - 목적에 따라 특수 레지스터, 범용 레지스터로 분류, 일반적으로 1~32개의 레지스터 존재

- 내부 버스

 

3) CPU(프로세서)의 명령 분류

- 레지스터-메모리 명령 : 메모리 워드를 레지스터로 가져올 때(LOAD), 레지스터의 데이터를 메모리에 저장할 때(STORE)

- 레지스터-레지스터 명령 : 레지스터에서 오퍼랜드 2개를 ALU의 입력 레지스터로 불러와 연산을 수행하고 결과를 레지스터에 저장

 

4) CPU(프로세서)의 명령 실행

- 프로세서는 더 작은 마이크로 명령들로 나누어 실행한다.

- 주 사이클 : 인출 - 해독 - 실행

1단계 : 다음 실행될 명령어를 메모리에서 읽어 명령 레지스터(IR)로 가져온다

2단계 : 프로그램 카운터(PC)는 그 다음에 읽어올 명령어의 주소로 변경된다.

3단계 : 제어 장치는 방금 가져온 명령어를 해독(decode)하고 유형을 결정한다.

4단계 : 명령어가 메모리에 있는 데이터를 사용하는 경우 그 위치를 결정한다.

5단계 : 필요한 경우 데이터를 메모리에서 레지스터로 가져온다.

6단계 : 명령어를 실행한다.

7단계 : 1단계로 이동하여 다음 명령어 실행을 시작한다.

 

5) 해독기

- 하드웨어가 아닌 소프트웨어.

- 해독기 접근 방법은 제어 기억 장치(control memory)라는 빠른 읽기 전용 메모리를 사용하기에 가능

 

 

 

 

산술 논리 연산 장치(ALU)

산술 연산

- 주로 정수 연산을 처리하지만 최근에는 ALU가 부동 소수 연산까지 처리한다.

- 덧셈, 뺄셈, 곱셈, 나눗셈, 증가, 감소, 보수

- 가산기 기반 동작

- 캐리 전파로 인한 속도를 개선하기 위해 가산기 대신 캐리 예측 가산기를 이용하기도 한다.

- 2진수 곱셈은 부스 알고리즘을 사용한다.

 

 

부스 알고리즘 (부호가 있을 때 사용)

 

 

부호가 없을 때 사용

(" 승수를 오른쪽부터 차례대로 1이면 피승수를 그대로 작성, 0 이면 0000을 작성 후 작성한 수들을 더한다. ")

 

부호 없는 곱셈의 하드웨어 구조

M 레지스터 : 피승수 저장

Q 레지스터 : 승수 저장

A 레지스터, Q 레지스터 : 두배 길이의 결과값 저장

C 플래그 : 덧셈과정에서 발생한 올림수 저장

-> C-A-Q는 직렬로 연결되어 시프트 연산이 가능하다.

 

 

 

 

논리 연산

- AND, OR, NOT, XOR, SHIFT(산술, 논리, 회전, 캐리와 함께 회전 시프트)

 

 

 

 

레지스터

- 레지스터는 CPU가 사용하는 명령어나 데이터를 가져오고 저장하고 전송하는데 사용

- 메모리 계층의 최상위에 있으며 가장 빠르다.

- 매우 단순한 마이크로 프로세서는 레지스터로 누산기 하나만 가지고 있는 경우도 있음.

 

 

레지스터 용도에 따른종류

- 누산기

- 프로그램 카운터

- 명령 레지스터

- 인덱스 레지스터

- 스택 포인터

- 메모리 데이터 레지스터

- 메모리 주소 레지스터

 

 

 

레지스터 종류

 

데이터 관련

- 메모리 주소 레지스터 : 데이터의 메모리 주소를 저장

- 메모리 버퍼 레지스터 : 메모리에서 데이터를 읽거나 메모리에 저장될 데이터를 일시적으로 저장

- 입출력 주소 레지스터 : 특정 I/O 장치의 주소를 지정하는데 사용

- 입출력 버퍼 레지스터 : I/O 모듈과 CPU간에 데이터를 교환하는데 사용

 

명령어 관련

- 프로그램 카운터 : 실행을 위해 인출한 다음 명령어의 주소를 저장

- 명령 레지스터 : 주기억 장치에서 인출한 명령어 저장

 

연산 관련

- 누산기 : ALU내부에 위치하여 산술연산과 논리연산 과정에 사용한다.

 

그 외

- 스택 제어 레지스터 : 메모리 스택을 관리하는데 사용(후입선출)

- 플래그 레지스터(상태 레지스터) :  CPU가 동작하는 동안 특정 조건의 발생을 표시하는데 사용

- 데이터 레지스터 : CPU내에 데이터를 일시적으로 저장하는데 사용하는 레지스터

 

 

레지스터의 명령어

LOAD : 주기억 장치에서 레지스터로 데이터를 읽음

STORE : 레지스터에서 주기억장치로 데이터를 저장

MOVE : 레지스터에서 레지스터로 데이터를 이동