CPU 개요

연어는결국강으로·2023년 2월 13일
0

컴퓨터 구조

목록 보기
1/3

(1) 컴퓨터의 핵심 CPU와 폰노이만 구조

  • 컴퓨터 시스템의 3대 구성 : CPU, 메모리, 디스크
  • 여기에 I/O까지 추가 → 컴퓨터를 이루는 기본 골격
  • 이것을 제안한 사람이 폰노이만
  • 주요 특징은 명령어/데이터를 순차적으로 로드/실행/저장을 수행하는 것과
  • 데이터/프로그램 메모리를 하나의 버스로 접근하는 구조이다.

(2) CPU의 구성도

  • CPU의 내부 구성은 크게 산술/논리 연산 장치(ALU), 제어 장치와 레지스터로 구성되어 있다.
    • 산술/논리 : 연산 장치는 덧셈을 수행
    • 제어 장치 : 시그널을 통해서 데이터 흐름을 통제하는 것
    • 레지스터 : CPU 내부의 메모리


(3) 산술/논리 연산 장치(ALU)

  • ALU는 산술적인 연산과 논리적인 연산을 담당 하는 장치로 가산기, 보수기, 누산기, 기억 레지스터, 데이터 레지스터, 부동소수연산장치(FPU), 정수 연산장치, 논리연산(AND, OR 등) 장치 등으로 구성된다.
  • 캐시나 메모리로부터 읽어 온 데이터는 레지스터(Register) 라는 CPU 전용의 기억장소에 저장되며,
  • ALU는 레지스터에 저장된 데이터를 이용하여 덧셈, 곱셈 등과 같은 산술 연산을 수행한다.


제어 장치

  • 제어장치 : CPU가 자신 및 주변기기들을 컨트롤하는 장치이다.
- 프로그램 계수기(Program Counter, PC) : 프로그램 수행 순서를 제어한다. 
- 명령 레지스터(Instruction Register) : 현재 수행중인 명령어의 내용을 임시 기억한다. 
- 명령해독기(Instruction decoder) : 명령 레지스터에 수록된 명령을 해독하여 수행될 장치에 제어신호를 보낸다.
  • 제어장치의 구현방식 : Hardwired 방식과 Micro Program 방식이 있다.

표) 제어 장치 구현 방식의 종류

Hardwired(고정 배선 제어)Micro Program
제어신호가 Hardwired Circuit에 의해서 생성되도록 하드웨어 구성발생 가능한 제어 신호들의 조합을 미리 구성하여 ROM에 저장하였다가 필요시 신호를 발생시키는 Software 방식
상태계수기와 PLA(Programmable Logic Array) 회로로 구성
고속처리, 고가하드웨어 방식에 비해 속도 낮고 가격 저렴
RISC 시스템에 적용CISC에 적용

레지스터

  • 레지스터(Register)는 CPU 내부에 있는 기억장치이다.
- 주로 산술 연산 논리장치에 의해 사용되는 범용 레지스터(General-Purpose Register)와
- PC 등 특수 목적에 사용되는 전용 레지스터(Dedicated-Purpose Register)로 구분할 수 있다. 
- 아래는 16bit Machine의 레지스터 구조이다.

  • 아래의 표는 레지스터의 종류이다. 각각 CPU 내의 메모리로 다음과 같이 사용된다.
종류사용
IR(Instruction Register)현재 수행 중에 있는 명령어 부호를 저장하고 있는 레지스터
PC(Program Counter)명령이 저장된 메모리의 주소를 가리키는 레지스터
AC(Accumulator)산술 및 논리 연산의 결과를 임시로 기억하는 레지스터

명령어 구조

  • 명령어는 시스템이 특정 동작을 수행시키는 작은 단위이다.

  • 명령어는 코드로 되어 있다.

  • 아래와 같이 동작코드(Op-code : Operational Code)와 오퍼랜드(Operand)로 구성되어 있다.

    이름설명
    명령어(Instruction)동작 코드 + 오퍼랜드(Operand)
    동작 코드 (Op-code)각 명령어의 실행 동작을 구분하여 표현
    오퍼랜드(Operand)명령어의 실행에 필요한 자료나 실제 자료의 저장 위치

명령어 수행 과정

  • CPU가 하나의 명령(Operation)을 처리하는 과정은 다음과 같다.

1) 읽기(Fetch Instruction) : 메모리에서 명령을 가져온다.
2) 해석(Decode Instruction) : 명령을 해석한다.
3) 실행(Execute Instruction) : 명령을 수행한다.
4) 기록(Write Back) : 수행한 결과를 기록한다.

Fetch

  • 명령어를 수행하기 위해서 명령어를 가져오는데 이를 Fetch라 한다. Fetch 사이클은 아래와 같다.

  • PC는 Fetch 할 다음의 명령어 주소를 갖고 있다. 프로세스는 PC가 가리키는 주소위치에서 명령어를 가져오면서 PC를 증가시키고 명령문은 Instruction Register(IR)에 Load 된다.
  • IR 에 Load 된 명령어는 수행 과정(Execute)이 진행되는데, 명령어를 수행하는 Execute Cycle Fetch 과정에서 가져온 명령어를 실제 ALU(가산기)에서 처리하게 된다.

정리하면
1) PC가 가리키는 주소에서 명령어 가져옴 + PC 증가
2) IR에 명령문 Load
3) Execute
4) ALU에서 처리

명령어 처리방식 RISC 와 CISC

  • RISC(Reduced Instruction Set Computer)는 컴퓨터 내부적으로 사용하는 명령어 세트를 단순화 시켜서 처리하는 형태의 구조이다. 단순한 명령을 조합해서 하나의 기능을 수행하게 된다.
  • CISC(Complex Instruction Set Computer)는 하나의 기능에 해당하는 하나의 명령이 있는 개념이다.

  • RISC는 프로세스가 수행하는 시간을 결정하는 변수로는 명령어의 개수, 명령어당 평균 동작 단계의 수, 그리고 평균 시간을 곱한 것으로 계산할 수 있다. 또한 파이프라인화하여 명령어를 동시 수행할 수 있는 장점을 갖는다.

실행시간=nst실행시간 = n * s * t

nn : Instruction 개수,
ss : Instruction 당 평균 동작 단계의 수,
tt : 한 동작 단계의 수행시간 )
그냥 싹 다 곱하면됨 ㄹㅇㅋㅋ

  • CISC는 복잡하고 많은 명령어를 자체적으로 포함하는 내장 방식 프로세서로써 각 명령어마다 여러 Cycle에서 수행한다.

  • 명령어 집합이 다양해 짐에 따라서 프로세서 구조의 복잡도도 증가하게 된다.

  • CISC와 RISC의 비교

    구분CISCRISC
    사이클여러 사이클로 명령어 처리하나의 사이클로 명령어 수행
    메모리많은 명령어가 메모리 참조메모리 Load/Store 명령만 처리
    장/단점파이프라이닝 사용이 어려움파이프라이닝, 슈퍼스칼라 가능
    컴파일러복잡한 마이크로 프로그램복잡한 컴파일러 구조
  • CISC는 가능한 적은 수의 명령으로 작업을 수행하는 것이 목적이다.

  • 예를 들어 살펴보면 다음과 같다.
    MULT 5:7, 4:3

  • 여기서 MULT 라는 것이 복합 명령어(Complex Instruction)가 되는 것이다. 고수준의 언어와 비슷하고 사용자가 봐도 의미를 이해할 수 있다. 이것을 RISC로 접근할 경우 간단한 명령어들의 조합으로 구성할 수 있다.

  • "MULT"가 각각 "LOAD", "PROD", "STORE"로 분리되어 아래와 같이 처리된다.

    LOAD A, 5:7
    LOAD B, 4:3
    PROD A,B
    STORE 5:7, A

차이점은 MULT 라는 명령어를 위해서는 내부적으로 여러 사이클을 수행하게 되고, RISC인 경우는 한 클럭에 한 개의 명령을 수행할 수가 있다. 이렇게 단일 형태로 실행되기 대문에 파이프 라이닝이나 슈퍼 스칼라 방식의 처리가 가능하다.

RISC 한계를 극복하는 EPIC(Explicitly Parallel Instruction Computing)

  • RISC 기술은 여러 개의 명령어를 여러 개의 실행 유니트로 동시에 실행하는 것이 핵심이다.
  • 프로그램 코드의 수행은 선형으로 진행되고 실행 위치가 중간 조건에 따라 바뀌는 분기가 발생하는 문제가 빈번하고 이전의 실행 결과에 의해 다음 연산이 연계되어 진행되는 경우가 많다.
  • RISC 방식은 한계가 존재하는데 이는 기존의 병렬 처리 기법에 프로세서에 의해서만 이루어지기 때문이다.
  • 소프트웨어에서 미리 병렬 처리에 적합하도록 프로그램을 만들어 준다면 병렬 처리 효율을 극대화 할 수 있게 되는 명시적인 병렬처리 방식인 EPIC가 필요하다.
  • EPIC는 HP와 Intel이 공동으로 정의하고 설계한 64 비트 마이크로프로세서용 명령어 셋이다.
  • 32Bit CISC 및 RISC 마이크로프로세서 아키텍쳐의 32비트 레지스터, 분기 예측, 메모리 지연, 암시적 병렬 처리 등의 문제를 해결하기 위한 설계 방식으로 최대 128개의 일반 및 부동 소수점 단위 레지스터를 제공하고, 계산 작업을 수행하기 위하여 명시적인 병렬 처리를 제공, 병렬처리 과정이 소프트웨어를 기계어로 번역하는 과정에서 명확하게 지정된 병렬 처리 명령어를 사용한다. 즉 컴파일 시에 병렬 실행 가능한 명령어를 모아 실행 파일 생성 후 프로그램 생성 시 병렬 처리가 가능하다는 의미이다.

출처 : 기술노트 with 알렉

0개의 댓글