중앙처리장치의 조직과기능 Prof. Jae Young Choi ( 최재영교수 ) (2015 Spring 의학진단및치료기기학 ) Prof. Jae Young Choi
Section 01 컴퓨터본체에서 CPU 의위치살펴보기 CPU 는기본적으로입력된데이터와명령어를프로그램에서지정한순서에따라수행한다. 이러한방식을프로그램내장방식이라부르며이를처음제안한발명자의이름을따서, 폰노이만 (Von Neumann) 컴퓨터구조라한다 2
머신사이클 컴퓨터시스템은프로그램에따라동작을수행하는데, 이때프로그램을구성하는명령어는 4 단계의과정을거쳐동작 3
클록속도와명령어처리속도 컴퓨터의 CPU 나디지털신호논리회로가일정한속도로작동하려면일정한간격으로전기적전동 (pulse) 을공급받아야함 CPU 를비롯한컴퓨터의모든부품은특정신호에맞추어동작하는데, 이특정한신호를클록 (clock) 이라고함 클록은기본적으로주회로기판에장착되어있는클록발생기가만드는데, 클록수가높을수록컴퓨터의처리속도가빠름 명령어처리속도는 1 초에 100 만개의명령어수행을나타내는 MIPS(Million Instruction Per Second) 로나타냄. 처리속도가 18.5 MIPS 라면 1 초동안에 1,850 만개의명령을실행할수있음 4
CPU 내부구조 CPU 내부구조 연산장치 레지스터세트 제어장치 내부 CPU 버스 제어장치는명령을해독하고제어신호를발생하며제어기능을수행 버스를통해서데이터의전달기능을수행 CPU 의내부구조 5
CPU 내부구조 - 연산장치 연산장치 (Arithmetic and Logic Unit) 상태플래그 : ALU 내의상태표시이동기 : 데이터의좌우이동보수기 : 보수연산산술및부울로직 : 산술연산과논리연산 6
CPU 내부구조 - 프로세서레지스터 컴퓨터 CPU( 프로세서 ) 내에서데이터를저장하는장치를프로세서레지스터또는간략하게레지스터라고함 레지스터세트 CPU 내부의레지스터집합레지스터는컴퓨터의기억장치들중액세스속도가가장빠름 일반적으로 CPU 에서고속으로계산하는값을저장하는데사용 ALU 에서처리된결과데이터를임시보관하고, 주기억장치에서읽어온명령어와데이터를임시보관함제한된수의레지스터가 CPU 내부에존재 7
CPU 내부구조 - 프로세서레지스터 8
CPU 내부구조 - 프로그래머가이용하는레지스터 어셈블리프로그래밍을하기위하여명칭과용도를알아야함 어셈블리프로그래머는프로그램에서사용되는변수데이터등을저장하기위해해당레지스터를알고있어야함 9
CPU 내부구조 - 프로그래머가이용하는레지스터 조건코드 (condition code): 사용자에게보이는레지스터에저장되데이터의상태를표시하는데사용. 연산의결과에따라세트되는비트들 - 부호비트 : 양수인지음수인지 - 오버플로우비트 : 연산결과가오버플로우가발생했는지여부 10
CPU 내부구조 - 제어및상태레지스터 프로그램실행과정에서 CPU 내부적으로사용되는대표레지스터 11
CPU 내부구조 - 제어및상태레지스터 12
제어장치 제어장치프로그램에의해주어진연산의순서대로실행하기위해기억, 연산, 입출력장치에제어신호발생제어장치의동작 1 단계 : 명령어를해독제어장치내의명령어레지스터에저장 2 단계 : 명령어레지스터에저장된명령어를실행 주기억장치에저장되어있는명령어의구조 연산코드필드 : 수행되어야할연산이지정되어있는필드 기억장치주소번지필드 : 해당연산을수행할때데이터가저장되어있는주소 명령어의형식 13
제어장치의구성요소 제어장치 기억장치버퍼레지스터 : 주기억장치에서읽어온명령어를임시적으로저장하는곳 기억장치주소레지스터 : 명령어레지스터에저장된명령어의주소번지를저장함. 저장된주소번지에근거하여주기억장치에서데이터를읽어와연산장치에전달하고그데이터를사용해연산을함 명령어레지스터 : 명령어를저장하는곳 명령어해독기 : 명령어레지스터에저장된명령어의연산코드필드를전달받아서명령어를해독하여수행할연산을결정. 수행할연산을연산장치에서실행하도록함. 프로그램카운터 : 다음에수행할명령어의주소번지를저장. 현재명령어의실행이종료되면다음명령어의번지를프로그램카운터에서확인하고해당번지에서명령어를읽어와서기억장치버퍼레지스터에저장 14
내부 CPU 버스 내부 CPU 버스 (internal CPU bus) 는컴퓨터 CPU 내에서 ALU 와레지스터간의데이터이동과 ALU 와제어장치간의데이터이동그리고제어장치와레지스터간의데이터이동을위한통로를말함 내부 CPU 버스는 CPU 밖의시스템버스들과는직접연결되지않으며, 반드시버퍼레지스터나시스템버스인터페이스회로를통하여시스템버스와접속한다. 15
CPU 의기능과동작그리고성능 CPU 가모든명령어에대하여공통적으로수행하는기능은명령어인출 (instruction fetch) 와명령어해독 (instruction decode) CPU 와주기억장치와의데이터전송 16
CPU 의동작 CPU 의기능과동작그리고성능 17
제어장치의기본동작 컴퓨터에있는모든데이터는 CPU 내에있는제어장치에서지시를받아산술연산장치에서처리됨. 따라서컴퓨터의모든장치는제어장치의신호에의해서만작동되며, 이러한신호는제어버스에의해전달됨 18
제어장치의기본동작 제어장치의기본동작 19
프로그램카운터의동작 제어장치의기본동작 프로그램은앞에서부터한명령씩차례대로실행되지만조건부분기 ( 예 : JUMP) 와같이그순서를바꾸어야하는경우가생김 이때는프로그램카운터를사용해그내용을바꿈으로써분기된이후부터의명령들이새로운순서에맞게실행되게함 프로그램카운터의동작 20
제어장치의기본동작 제어장치의동작을포함한 CPU 의동작 21
CPU 의성능요소 컴퓨터의속도는일반적으로 CPU 의속도를이야기함 CPU 가데이터를처리하는속도영향인자들클록 (clock) 주파수워드 (word) 크기캐시기억장치명령어집합의복잡성파이프라이닝 (pipelining) 병렬처리 (parallel processing) 22
CPU 의성능요소 클록주파수 워드크기 23
CPU 의성능요소 캐시기억장치 캐시기억장치는 CPU 가데이터에빠르게접근할수있도록하는고속의기억장치 컴퓨터는다음에어떤데이터가필요한지예측하여미리캐시기억장치에갖다놓을수있음 CPU 는필요한데이터를찾을때주기억장치를확인하기전에먼저캐시기억장치를확인한다. 따라서읽기와쓰기동작의속도가향상되어전체적으로 CPU 속도에영향을주게된다. 24
명령어집합의복잡성 CPU 의성능요소 25
CPU 의성능요소 파이프라이닝 26
CPU 의성능요소 병렬처리 27
Section 01 컴퓨터본체에서 CPU 의위치살펴보기 [ 그림 9-1] 주회로기판에서중앙처리장치와주기억장치 28
CPU 의성능 성능측정요소 클럭주파수워드크기캐시메모리명령어집합의복잡성파이프라이닝병렬처리 29
성능측정요소 클럭주파수수행되는연산의타이밍을맞추기위한펄스컴퓨터의명령어수행속도결정하나의클럭동안에명령어부사이클수행클럭의주기가짧을수록많은명령을처리 워드크기 CPU 가한번에읽고쓸수있는비트수시스템에따라다르게적용워드가큰시스템은워드가작은시스템에비해한명령어에서더많은데이터처리가능 30
캐시메모리 성능측정요소 CPU 가데이터를빠르게접근할수있는고속기억장치읽기와쓰기의속도향상 명령어집합의복잡성복잡명령어집합컴퓨터 (CISC : Complex Instruction Set Computer) CPU 에많은복잡한명령어가내재된컴퓨터축소명령어집합컴퓨터 (RISC : Reduced Instruction Set Computer) CPU 내부에빠르게수행되는제한된수의간단한명령어만이내재된컴퓨터 31
파이프라이닝 성능측정요소 프로세서가이전명령마치기전에다음명령을수행 병렬처리 [ 그림 9-2] 파이프라이닝의동작원리 다수의 CPU 가있는컴퓨터에서한번에여러개의명령어를동시에처리하는방법 [ 그림 9-3] 병렬처리의동작원리 32
명령어인출 CPU 의기능 캐시나주기억장치에저장되어있는명령어를읽어오는기능 명령어해독 읽혀진명령어에대해수행해야할동작을결정하기위해인출된명령어해독 기능 내용 데이터인출 (Data Fetch) 기능 명령어실행을위해기억장치또는입출력장치로부터데이터를읽어오는과정이다. 데이터처리 (Data Process) 기능 데이터쓰기 (Data Store) 기능 읽어온데이터에대한산술적또는논리적연산을수행한다. 데이터처리과정에서의수행결과를저장하는기능이다. 명령어의기능 33
CPU 의조직 CPU 내부구조 연산장치레지스터세트제어장치내부 CPU 버스 [ 그림 9-5] CPU 의내부구조 34
내부구조 연산장치 (Arithmetic and Logic Unit) 상태플래그 : ALU 내의상태표시이동기 : 데이터의좌우이동보수기 : 보수연산산술및부울로직 : 산술연산과논리연산 레지스터세트 CPU 내부의레지스터집합레지스터는컴퓨터의기억장치들중액세스속도가가장빠름제한된수의레지스터가 CPU 내부에존재 35
CPU 내부구조 제어장치프로그램에의해주어진연산의순서대로실행하기위해기억, 연산, 입출력장치에제어신호발생제어장치의동작 1 단계 : 명령어를해독제어장치내의명령어레지스터에저장 2 단계 : 명령어레지스터에저장된명령어를실행 내부 CPU 버스 (internal CPU bus) ALU 와레지스터들간의데이터이동을위한통로데이터선과제어선으로구성외부의시스템버스와연결되지않음버퍼레지스터또는버스인터페이스회로를통해시스템버스와접속 36
CPU 의동작 데이터는주기억장치로부터레지스터 1 번으로외부시스템버스를통해연결제어장치는레지스터 1 과레지스터 2 에저장되어있는데이터를덧셈하라는제어신호를 ALU 로전달 ALU 에서는제어신호에의해덧셈을수행, 그결과를누산기에저장계산결과는외부시스템버스를통해주기억장치에전달 [ 그림 9-6] CPU 의기본동작 37
제어장치의기본동작 주기억장치에서명령어를읽어서제어장치내에명령어레지스터로저장된다. 명령어의포인터에는다음에실행될명령어의주소가저장된다. 제어장치가명령어레지스터의명령어를해석한다. 해석된명령어는해당되는제어신호를발생하게된다. 제어장치의기본동작 38
CPU 는주기억장치에서읽어온명령어와데이터를임시적으로보관장소필요 ALU 의처리결과임시적보관장소필요 레지스터 CPU 에서사용되는임시적인저장장치 사용자에게보이는레지스터 제어및상태레지스터 레지스터의조직 39
사용자에게보이는레지스터 어셈블리프로그램을위해사용되는레지스터프로그래머가레지스터의명칭과용도를미리인지일반목적용레지스터여러가지용도로사용, 연산의피연산자데이터레지스터데이터저장에사용, 누산기주소레지스터특정주소지정방식을위해사용 세그먼트포인터 인덱스레지스터 스택포인터조건코드레지스터에저장된데이터의상태표시 부호비트 영 (zero) 비트 오버플로우비트 40
제어및상태레지스터 프로그램실행과정에서 CPU 내부적으로사용되는레지스터프로그램카운터 (Program Counter) 명령어레지스터 (Instruction Register) 기억장치주소레지스터 (Memory Address Register) 기억장치버퍼레지스터 (Memory Buffer Register) 입 / 출력주소레지스터 (I/O AR: I/O Address Register) 입 / 출력버퍼레지스터 (I/O BR: I/O Buffer Register) 프로그램상태단어 (Program Status Word) 데이터의상태와조건을나타내기위하여추가된조건코드비트 부호 (sign) 비트, 영 (zero) 비트, 올림수 (carry) 비트, 동등 (equal) 비트, 오버플로우 (overflow) 비트, 인터럽트가능 / 불가능 (interrupt enable/disable) 비트, 슈퍼바이저 (supervisor) 비트 41
명령어사이클 명령어인출사이클 (fetch cycle) 명령어실행사이클 (execute cycle) [ 그림 9-9] 명령어사이클 42
명령어인출사이클 CPU 가주기억장치로부터명령어를읽어오는단계 프로그램카운터 (PC) 는다음에인출할명령어의주소 프로세서는 PC 가가리키는기억장소로부터명령어를인출. PC 내용을증가 인출된명령어가명령어레지스터 (IR) 로적재. 프로세서는명령어를해석하고, 요구된동작을수행 CPU 클럭마이크로연산동작 t 0 MAR PC PC 내용을 MAR 로전송 t 1 MBR M[MAR] PC PC + 1 해당주소기억장치의명령어가 MBR 로적재 PC 의내용에 1 을증가 t 2 IR MBR MBR 에있는명령어코드가 IR 로이동 인출사이클의마이크로연산 MAR: Memory Address Register MAR: Memory Buffer Register 43
인출사이클에서주소와명령어흐름 인출사이클에서주소와명령어흐름 44
명령어실행사이클명령어실행의종류 프로세서와기억장치간에데이터가전송프로세서와 I/O 모듈간에데이터가전송데이터에대하여지정된산술혹은논리연산이수행제어 (control) 동작 점프 (jump) 와같이실행될명령어의순서가변경될때사용된다. 45
덧셈연산의실행사이클 명령어실행사이클 CPU 클럭 t 0 t 1 t 2 마이크로연산 MAR IR(addr) MBR M[MAR] AC AC + MBR 동작 MBR 에저장될데이터의기억장치의주소를 MAR 로전송 저장할데이터를버퍼레지스터인 MBR 로이동 MBR 데이터와 AC 의내용을더하고결과값을다시 AC 에저장 ADD 실행사이클의마이크로연산 46
ADD 명령어실행사이클동안의정보흐름 [ 그림 9-11] ADD 명령어실행사이클동안의정보흐름 47
명령어파이프라이닝 2단계명령어파이프라인 4단계명령어파이프라인 6단계명령어파이프라인파이프라인에의한속도향상 48
2 단계명령어파이프라이닝 인출 (fetch stage), 실행 (execute stage) 두개의독립적파이프라인모듈로분리실행 명령어처리속도가약 2 배향상 처리시간이동일하지않으면 2 배의속도향상을기대할수없다. [ 그림 9-12] 2 단계명령어파이프라인과시간흐름도 49
4단계명령어파이프라인명령어인출 (IF : Instruction Fetch) 명령어를기억장치로부터인출 명령어해독 (ID : Instruction Decode) 인출된명령어해석 오퍼랜드인출 (OF : Operand Fetch) 기억장치로부터변수또는데이터인출 실행 (EX : Execute) 지정된연산을수행 2 단계명령어파이프라인에비해더빠른속도 50
4 단계명령어파이프라인과시간흐름도 4 단계명령어파이프라인과시간흐름도 IF: instruction fetch, ID: Instruction Decode, OF: Operation Fetch, EX: Execute 51
6단계명령어파이프라인 FI (Fetch Instruction) DI (Decode Instruction) CO (Calculation Operand) FO (Fetch Operand) EI (Execute Instruction) WO (Write Operand) 처리속도의향상 최대 6 개의명령어단계가동시에처리 52
6 단계명령어파이프라인과시간흐름도 6 단계명령어파이프라인시간흐름도 FI (Fetch Instruction)/DI (Decode Instruction)/CO (Calculation Operand) FO (Fetch Operand)/EI (Execute Instruction)/WO (Write Operand) 53
파이프라인단계수 = k 실행할명령어들의수 = N 파이프라인에의한속도향상 각파이프라인단계가한클럭주기씩걸린다고가정 파이프라인에의한전체명령어실행시간 T T = k + (N - 1) 명령어를실행하는데 k 주기소요 (N - 1) 개의명령어들은각각한주기씩만소요만약파이프라인되지않은경우에는 N 개의명령어들을실행하는데는 k N 주기가소요 54
속도향상의예 [ 예 ] 파이프라인단계수 = 4 파이프라인클럭 = 1 MHz( 각단계에서의소요시간 = 1 μs ) 인경우첫번째명령어실행에걸리는시간 = 4 μs다음부터는매 1 μs마다한개씩의명령어실행완료 10 개의명령어실행시간 = 4 + (10-1) = 13 μs 파이프라이닝의속도향상 : SP k k N ( N 1) 속도향상 = (10 4) / 13 3.08 배 55
속도향상의예 [ 예 ] 파이프라인단계수 = 4 명령어의수 N 증가 N = 100 이라면, Sp = 400 / 103 = 3.88 N = 1000 이라면, Sp = 4000 / 1003 = 3.99 N = 10000 이라면, Sp = 40000 / 10003 = 3.998 N, Sp = 4 파이프라인단계수만큼속도증가 56