Search
🏫

[컴퓨터 구조] 4. 중앙처리장치

[컴퓨터 구조] 4. 중앙처리장치
CS
Computer Architecture
2023/11/28 08:27
[컴퓨터 구조] 4. 중앙처리장치
CS
Computer Architecture
2023/11/28 08:27

1. 중앙처리장치의 개요와 내부구조

1.1. 중앙처리장치의 개요

중앙처리장치(CPU)
컴퓨터에서 명령어를 수행하고 데이터를 처리하는 장치
프로그램이 수행되는 전반적인 과정을 제어
처리장치와 제어장치로 구성

1.2. 중앙처리장치의 구성요소

산술논리연산장치 (ALU)
산술연산장치
논리연산장치
시프터
상태 레지스터
연산 결과의 상태를 나탙내는 플래그를 저장하는 레지스터
보수기
ALU내의 데이터에 대한 보수연산을 수행
레지스터 세트
CPU 내 레지스터 집합
기억장치 중 액세스 속도가 가장 빠름 → CPU에서의 빠른 처리속도를 지원
빠른속도를 갖지만 가격이 비쌈 → CPU 내의 레지스터의 수는 제한됨
제어장치
프로그램에 의한 연산의 순서대로 기억장치, 연산장치, 입출력장치에 제어신호를 발생
제어장치의 동작
1단계: 명령어를 해독하고 명령어 레지스터에 저장
2단계: 명렁어 레지스터에 저장된 명령어 실행
내부버스
ALU와 레지스터 간의 데이터 전송을 위한 통로
데이터 버스와 제어 버스로 구성
외부장치(기억장치, 입출력장치)와 데이터 전송
시스템 버스와 연결
시스템 버스: 데이터, 주소, 제어버스로 구성

1.3. 중앙처리장치의 내부 구조

내부구조

3. 레지스터

레지스터의 종류
범용 레지스터 (general purpose register)
데이터를 일시적으로 저장
특수 레지스터 (special purpose register)
특수한 기능을 수행

3.1. 범용 레지스터

개념
데이터 저장과 같은 일반적인 목적을 위한 레지스터
CPU 내부에 있는 소규모의 일시적인 기억장치로, 프로그램의 진행 도중 가까운 시간 내에 사용할 데이터나 연산결과를 일시적으로 기억시키는데 사용
데이터를 연산할 때 메모리로부터 데이터를 인출할 경우, 호출시간이 많이 걸리기 때문에 CPU 내부의 레지스터에 데이터를 기억시켜두고 연산
형태

3.2. 특수 레지스터

주소를 기억하는 레지스터 (AR)
명령어를 기억하는 레지스터 (IR)
데이터를 기억하는 레지스터 (DR)

3.3. 주소를 기억하는 레지스터

프로그램 카운터 (PC)
다음에 수행되어질 명령어가 있는 주소를 갖고 있음
데이터가 저장되어있는 기억장치의 주소를 지정
현재 처리하려고 하는 데이터를 인출한 후에 자동으로 1 증가
프로그램 카운터의 비트 수는 기억장치의 용량에 따라 결정됨
예) 기억장치 전체 영역이 256MByte(=2^28)라면, 프로그램 카운터 비트 수는 28비트
기억장치 주소 레지스터 (MAR: Memory Address Register)
기억장치 주소를 임시 저장하는 레지스터
스택 포인터 (SP: Stack Pointer)
스택 주소지정방식에서 사용됨
스택 영역의 번지를 지정해주는 포인터
스택 영역은 실제로 데이터가 피신되는 기억 장소로써 기억 장치에 위치
프로그램 카운터와 같은 크기의 비트 수를 가짐
제어 주소 레지스터 (CAR: Control Address Register)
제어기억장치에 있는 마이크로명령어의 주소를 나타냄
인덱스 레지스터 (XR: IndeX Register)
인덱스된 주소지정방식에서 사용
명령어의 주소 영역에 대한 상대적인 변윗값을 저장하는데 사용
베이스 레지스터 (BR: Base Register)
베이스 레지스터 주소지정방식에서 사용
명령어의 주소 부분에 저장된 변윗값에 더해질 기준주소를 저장하는데 사용

3.4. 명령어를 기억하는 레지스터

명령어 레지스터 (IR: Instruction Register)
프로그램의 수행 중 가장 최근에 기억장치로부터 인출되어진 명령어를 갖고 있음
연산코드, 오퍼랜드
명령어 레지스터의 비트 수는 명령어의 연산코드의 비트 수와 같음
명령어 레지스터에 있는 명령어는 명령어 해독기(decoder)에 의해 해독된 후 그 명령어에 해당되는 제어신호가 각 구성요소에 전달

3.5. 데이터를 기억하는 레지스터

기억장치 버퍼 레지스터 (MBR: Memory Buffer Register)
기억장치로 쓰여질 데이터나 혹은 기억장치로부터 읽혀질 데이터를 임시로 저장하는 레지스터
누산기 (AC: Accumulator)
데이터를 일시적으로 저장하는 레지스터
입력장치로부터 데이터를 받아들이거나, 출력장치로 데이터를 전송하는데 사용
산술 및 논리연산이 이루어질 경우에는 오퍼랜드나 연산 결과를 일시적으로 기억하는 레지스터
CPU가 연산을 수행 한 후 그 결과는 반드시 누산기에 저장

4. 명령어 사이클

4.1. 명령어 사이클의 개념

개념
컴퓨터의 기본적인 기능은 기억장치에 기억되어 있는 프로그램을 실행하는 것
실행되는 프로그램은 명령어로 구성
따라서 중앙처리장치는 기억장치에 저장되어 있는 명령어를 인출하여 실행함으로써 프로그램을 수행
이러한 명령어의 수행과정을 명령어 사이클이라 함
명령어 사이클
한 개의 명령어를 CPU에서 수행하는데 필요한 전체 수행 과정
명령어 사이클 종류
인출 사이클
실행 사이클
간접 사이클
인터럽트 사이클
명령어 수행 과정

4.2. 명령어 인출 사이클

기억장치에 저장되어 있는 명령어를 인출하는 곽정
T0 : MAR ← PC
첫번째 클럭 T0 에서는 다음 명령어의 주소가 들어 있는 PC의 내용을 MAR로 이동
T1 : MBR ← M[MAR], PC ← PC+1
두번째 클럭 T1 에서는 MAR에 저장된 주소를 가지고 기억장치에 저장된 내용을 MBR로 이동
동시에 PC 를 1 증가시킴
T2 : IR ← MBR
세번째 클럭 T2 에서는 MBR에 저장된 명령어를 실행시키기 위해 IR로 이동시킴

4.3. 명령어 실행 사이클

역할
명령어 인출과정을 통하여 IR 레지스터에 실린 명령어를 해독
해독한 명령어에 따라 필요한 연산이 수행
수행되는 연산들의 기능
데이터의 이동 기능
기억장치와 CPU 혹은 입출력장치 사이에 데이터의 이동
데이터의처리기능
산술 혹은 논리연산을 통한 데이터 처리
데이터의 저장 기능
연산결과를 기억장치에 저장
제어기능
프로그램의 실행 순서를 결정
LOAD 명령어
데이터 이동을 위한 명령어
원하는 기억장치의 데이터 → CPU의 내부 레지스터인 누산기로 전달
ADD 명령어
데이터 처리명령어
누산기에 있는 데이터 + 기억장치에 있는 데이터 → 결과를 누산기에 저장
STORE 명령어
연산결과를 갖고 있는 누산기의 데이터를 기억장치에 저장하는 동작을 수행
분기 혹은 점프 명령어
분기(branch)와 점프(jump)명령어는 제어기능을 수행하는 명령어
프로그램의 순서를 바꾸는 명령어
즉, 다음에 수행할 명령어는 PC가 가지는 주소의 명령어가 아니라, 분기 혹은 점프 명령어에 있는 주소에 해당하는 명령어

4.4. 간접 사이클

간접주소지정방식에서 명령어 오퍼랜드의 유효주소를 결정하는 과정
인출 사이클에서 인출된 명령어가 간접주소지정방식을 사용하면, 간접 사이클이 실행 사이클보다 먼저 실행

4.5. 인터럽트 사이클

CPU의 정상적인 동작 중에 인터럽트 요청이 발생했을 때 실행되는 과정
실행 사이클이 끝난 직후에 인터럽트가 발생했는지를 검사
만약 발생하였다면 인터럽트 서비스 루틴(ISR: Interrupt Service Routine)이 시작되도록
cf) 인터럽트 발생
1.
프로그램이 잘못 실행된 경우
2.
하드웨어 결함
3.
I/O 장치 등의 요청