[컴퓨터일반]컴퓨터구조-중앙처리장치

컴퓨터 시스템의 구성요소

하드웨어(Hardware)

컴퓨터를 구성하는 기계장치로 주기억장치의 기억소자, 중앙처리장치의 논리회로, 각정 보조기억장치 및 입출력장치 등 이들의 동작원리를 포함한 컴퓨터 그 자체를 말함

소프트웨어(Software)

하드웨어를 인간이 활용하여 기능을 발휘할 수 있도록 하기 위해 요구되는 모든 프로그램 체계를 말하며, 시스템 소프트웨어와 응용 소프트웨어로 구분됨

중앙처리장치와 주변장치

중앙처리장치(Central Processing Unit)

제어장치(Contrrol Unit) : 기억장치에 들어있는 프로그램의 명령을 해독하고 그 결과에 따라 장치를 제어하는 장치

연산장치(ALU, Arithmetic and Logic Unit) : 제어장치의 제어를 받아 기억되어 있는 데이터로 실제 연산을 수행하는 장치

기억장치(Register) : CPU내에서 컴퓨터의 작동에 필요한 데이터와 명령어를 저장하는 장치

주변장치(Peripheral Device)

입력장치(Input Unit) : 프로그램이나 데이터를 기억장치로 받아들이는 장치

출력장치(Output Unit) : 기억장치에서 처리된 데이터를 출력하는 장치

제어장치(Control Unit)

주기억장치에 기억된 프로그램의 명령을 하나씩 꺼내어 해독하고 각 장치에 필요한 제어신호를 줌으로써 각 장치가 동작함
기능으로는 입출력장치 제어, 주기억장치에 자료를 기억시키고 읽음, 주기억장치와 산술.논리연산장치(ALU) 사이의 경로를 정함, 산술.논리연산장치의 실행을 지시 등이 있음

제어장치의 구성요소

명령 계수기(PC, Program Counter) : 명령이 순서대로 실행되도록 다음 실행할 명령의 주소를 기억하는 레지스터

주소 레지스터(MAR, Memory Address Register) : 주기억장치에서 선택될 주소를 기억하는 레지스터

내용 레지스터(MBR, Memory Buffer Register) : 명령 계수기(PC)나 주소 레지스터(MAR)가 지정하는 주기억장치의 내용을 임시로 기억하는 레지스터

명령 레지스터(IR, Instruction Register) : 명령 계수기가 지정한 주소의 명령을 인출하여 명령 실행이 완료될때까지 명령을 보관해 두는 레지스터

명령 해독기(Instruction Decoder) : 명령 레지스터에서 보내온 명령코드를 해독하는 장치

인덱스 레지스터(IX, Index Register) : 주소를 계산할 때 이용되는 레지스터로서 명령 어드레스를 변경하거나 인덱스를 이용할 때 변경자(증분)를 기억하고 있음

제어 신호 발생기(Control Signal Generator, 부호기) : 명령 해독기로부터 보내온 신호를 명령을 실행하는데 필요한 신호로 바꾸어 각 장치에 제어신호를 보내는 장치

명령실행순서

1) PC에 기억된 주소를 주소레지스터로 보냄
2) 내용레지스터에 있는 명령을 인스트럭션 레지스터가 인출
3) IR에 기억된 명령 코드를 디코더에 보내 해독
4) 명령 실행을 위해 제어신호기는 필요한 장치에 제어 신호를 발생
5) 주소처리기는 다음 실행할 명령의 주소를 계산하여 PC에 기억
6) 현재 명령이 끝나면 1)번으로 돌아가서 다음 명령을 수행

연산장치(ALU)

중앙처리장치의 일부로서 컴퓨터 명령어내에 있는 연산자들에 대해 연산과 논리동작을 담당함
논리연산을 수행하는 논리 연산부와 사칙연산을 대수법칙에 따라 연산하는 산술 연산부로 구성되고, 보조하는 시프터가 있음

구성요소

누산기(Accumulator) : 연산결과를 일시적으로 기억하는 레지스터

데이터 레지스터(Data Register) : 실행대상(Operand)이 2개 필요한 경우에 주기억장치로부터 읽어들인 데이터를 임시보관하고 있다가 필요할때 제공하는 역할

가산기(Adder) : 누산기와 데이터 레지스터의 두 수를 가산하는 기능을 하며, 그 결과는 누산기에 저장

상태 레지스터(Status Register) : 연산에 관계된 상태(양수,0,음수,자리올림 등)와 외부로부터의 인터럽트 신호 유무를 나타냄

범용 레지스터(General Register) : 필요에 따라 다목적으로 사용할 수 있는 레지스터

부동소수점 레지스터(Floating Register) : 자릿수가 큰 수나 매우 작은 수치를 취급하는 복잡한 계산에 이용되는 레지스터

특수기능 레지스터(SFR, Special Function Register) : 128바이트이며, 그 영역에는 프로그램 카운터/타이머, 시리얼 포트, 인터럽트 등 주변기기의 상태 정보나 제어값을 갖는 레지스터

명령어의 구성

기계어 명령의 구성운 연산자부(Op-Code)와 번지부(Operand)로 나눔

연산자부(Operation Code) : 인스트럭션의 형식, 연산자, 자료의 종류 등을 나타내며, Op-Code의 크기가 n비트일 때 최대 2n개의 명령어를 사용함

번지부(Operand) : 실제 데이터에 대한 정보를 표시하는 부분으로 처리할 자료가 기억된 주소 또는 주소를 구하는데 필요한 정보나 특수한 경우는 자료 자신이 기억되어 있으며, 자료의 주소, 자료, 레지스터 번호, 메모리의 주소 등을 표시함

연산자의 기능

제어기능
프로그래머가 명령의 실행순서를 변경시키는 것으로 무조건 분기 또는 조건 분기 기능
– 무조건 분기 명령 : Goto, Jump(JMP)
– 조건 분기 명령 : IF조건, SPA(Skip if AC is positive), SNA(Skip if AC is negative), SZA(Skip if AC is zero)
– Call : 부프로그램 호출
– Return : 부프로그램에서 메인 프로그램으로 복귀

연산기능
수치적인 산술 연산과 비수치적인 논리 연산 기능
– 산술연산 : ADD, SUB, MUL, DIV, 산술Shift
– 논리연산 : NOT, AND, OR, XOR, 논리적Shift, Rotate, Complement, Clear

전달기능
자료 전송 기능으로 CPU와 기억장치 사이에서 정보를 교환
– LOAD : 메모리에서 레지스터로 자료를 전송
– STORE : 레지스터에 기억된 자료를 메모리로 전송
– MOVE : 레지스터 간에 자료를 저장
– PUSH : 스택에 자료를 저장
– POP : 스택에서 자료를 꺼내옴

입출력기능
CPU와 입출력장치, 또는 메모리와 입출력장치 사이에서 자료를 전달
– INPUT : 입출력장치의 자료를 주기억장치로 입력
– OUTPUT : 주기억장치의 자료를 입출력장치로 출력

명령어의 형식

0-주소 명령어 형식
오러랜드부가 없는 명령형식으로 모든 연산은 스택에 있는 자료를 이용하여 연산하며, 그 결과는 다시 스택에 보존

1-주소 명령어 형식
모든 데이터 처리가 누산기(AC)에 의해 이루어지는 형식

2-주소 명령어 형식
가장 흔히 사용되는 형식으로 범용레지스터를 가지는 컴퓨터에서 연산할 자료를 자료1 주소와 자료2 주소에 나누어 저장하고 연산 결과는 자료1 주소에 기억되는 명령 형식(연산 후 입력 자료 보존 불가)

3-주소 명령어 형식
연산할 자료를 자료2 주소와 자료3 주소에 나누어 저장하고 연산된 결과는 자료1 주소에 기억하는 명령 형식
(연산 후 입력 자료 보존되나, 최소 4번 메모리에 접근해야하므로 수행시간이 길어짐)

예제 형식별 계산) X = (A+B) X (C-D)

0주소 방식1주소 방식
PUSH A TOS <- M[A]
PUSH B TOS <- M[B]
ADD TOS <- (A+B)
PUSH C TOS <- M[C]
PUSH D TOS <- M[D]
SUB TOS <- (C-D)
MUL TOS <- (A+B) X (C-D)
POP X M[X] <- TOS
LOAD A AC <- M[A]
ADD B AC <- AC + M[B]
STORE T M[T] <- AC
LOAD C AC <- M[C]
SUB D AC <- AC – M[D]
MUL T AC <- AC X M[T]
STORE X M[X] <- AC
2주소 방식3주소 방식
MOV R1, A R1 <- M[A]
ADD R1, B R1 <- R1 + M[B]
MOV R2, C R2 <- M[C]
SUB R2, D R2 <- R2 – M[D]
MUL R1, R2 R1 <- R1 X R2
MOV X, R1 M[X] <- R1
ADD R1, A, B R1 <- M[A] + M[B]
SUB R2, C, D R2 <- M[C] – M[D]
MUL X, R1, R2 M[X] <- R1 X R2
* TOS : Top Of Stack

주소지정 방식

명령 실행을 위해 오퍼랜드의 주소를 이용하여 해당 자료에 접근하는 방식
묵시적 주소(Implied Address) 지정 방식
명령어의 형식상 이미 오퍼랜드가 묵시적으로 정해지는 주소 지정 방식

자료 자신 주소(Immediate Address, 즉시, 즉치) 지정 방식
오퍼랜드에 표현된 자료는 메모리 주소가 아니라 실제의 자료가 기억되어 있는 형식

직접 주소(Direct Address) 지정 방식
오퍼랜드내에 있는 주소가 실제 데이터의 주소인 경우

간접 주소(Indirect Address) 지정 방식
오퍼랜드에 표현된 주소에는 실제의 자료가 있는 주소를 찾을 수 있는 번지가 들어간 형식으로 메모리참조가 여러번 이루어짐

레지스터와 레지스터 간접 주소 지정 방식
레지스터 방식은 오퍼랜드가 레지스터에 저장되어 있는 것이며, 레지스터 간접주소지정 방식은 레지스터가 실제 오퍼랜드가 저장된 기억장치의 주소를 갖고 있는 방식

계산에 의한 주소 지정 방식
오퍼랜드에 표현된 주소와 특정한 레지스터에 기억된 주소를 더하여 실제로 자료가 기억된 주소를 구하는 방식
(상대 주소 지정 방식과 인덱스된 주소 지정 방식이 존재)

명령실행과 제어

메이저 상태(Major State)

CPU의 현재 상태를 나타내며, CPU가 주기억장치에 접근하는 이유를 4가지 상태(Fetch, Indirect, Execute, Interrupt)로 나눔

FETCH(인출) Cycle
주기억장치로부터 명령어를 꺼내어 디코딩하는 과정

INDIRECT(간접) Cycle
피연산 데이터가 있는 기억장치의 유효주소를 계산하는 과정
(Fetch단계에서 해석한 주소가 간접주소이면 유효주소를 계산하기 위해 다시 Indirect 단계 수행)

EXECUTE(실행) Cycle
연산자 코드의 내용에 따라 연산을 수행하는 과정으로, 플래그 레지스터의 상태변화를 검사하여 Interrupt단계로 전이하거나 Fetch단계로 변경함
(실행 명령은 메모리참조명령, 레지스터참조명령, 입출력명령으로 나누어짐)

INTERRUPT(인터럽트) Cycle
인터럽트 발생시 복귀주소를 먼저 저장시키고, 제어 순서를 인터럽트 처리 프로그램의 첫번째 명령으로 옮기고 마친후 Fetch단계로 전이함

마이크로 오퍼레이션

명령(Instruction)을 수행하기 위해 CPU내의 레지스터와 플래그가 의미있는 상태변환을 하도록 하는 동작
한 개의 Clock 펄스 동안 실행되는 CPU의 기본 동작이며, 레지스터에 저장된 일련의 비트스트링(Bit String) 또는 데이터에 대해서 수행되는 기본적인 동작
한 개의 마이크로 오퍼레이션을 수행하는데 걸리는 시간을 마이크로 오퍼레이션 사이클 타임이라하며, CPU 속도를 나타내는 척도로 이용됨

종류
전송 마이크로 동작 : 하나의 레지스터에서 다른 레지스터로 2진 정보를 전송하는 동작
산술 마이크로 동작 : 레지스터에 저장된 숫자 또는 데이터에 대해 산술 동작을 수행
시프트 마이크로 동작 : 하나의 레지스터 내의 각 비트를 이동
논리 마이크로 동작 : 데이터의 비트 스트링 사이에 이루어지는 2진 연산

마이크로 오퍼레이션 사이클

마이크로프로세서
하나의 칩에 컴퓨터의 기본 처리 기능(제어기능과 연산기능 등)을 저장한 일종의 처리장치

마이크로프로그램
별도의 번역과 RAM으로의 접근이 필요하지 않기 때문에 일반적인 소프트웨어와 구별하여 펌웨어(Firmware)라고도 함
어떤 명령을 수행할 수 있도록 된 일련의 제어 워드가 특수한 기억장치 속에 저장된 것으로 각종 제어 신호를 발생시킴
마이크로 명령으로 형성되어 있으며, 마이크로프로그램이 저장되는 제어 메모리는 ROM이 주로 사용됨

이전게시글