CPU 의구조와기능 CPU 의기본구조 명령어실행과실행사이클 명령어파이프라이닝
CPU 의기능 2 명령어인출 (Instruction Fetch) 기억장치로부터명령어읽기 명령어해독 (Instruction Decode) 수행해야할동작을결정하기위하여명령어를해독 모든명령어들에대하여공통적으로수행 데이터인출 (Data Fetch) 명령어실행에필요한데이터를기억장치혹은 I/O 장치로부터읽어온다 데이터처리 (Data Process) 데이터에대한산술적혹은논리적연산을수행 데이터쓰기 (Data Store) 수행한결과를저장 명령어에따라필요한경우에만수행 IT 융합공학부컴퓨터구조 2
2.1 CPU 의기본구조 3 산술논리연산장치 (Arithmetic and Logical Unit: ALU) 각종산술연산들과논리연산들을수행하는회로들로이루어진하드웨어모듈 산술연산 : +, -,, 논리연산 : AND, OR, NOT, XOR 등 레지스터세트 (Register Set) 액세스속도가가장빠른기억장치 CPU 내부에포함할수있는레지스터들의수가제한됨 ( 특수목적용레지스터들과적은수의일반목적용레지스터들 ) 제어유니트 (Control Unit) 프로그램코드 ( 명령어 ) 를해석하고, 그것을실행하기위한제어신호들 (control signals) 을순차적으로발생하는하드웨어모듈 CPU 내부버스 (CPU internal bus) ALU와레지스터들간의데이터이동을위한데이터선들과제어유니트로부터발생되는제어신호선들로구성된내부버스외부의시스템버스들과는직접연결되지않으며, 반드시버퍼레지스터들혹은시스템버스인터페이스회로를통하여시스템버스와접속 IT 융합공학부컴퓨터구조 3
CPU 의내부구성요소 ( 계속 ) 4 IT 융합공학부컴퓨터구조 4
2.2 명령어실행 5 명령어사이클 (instruction cycle) CPU가한개의명령어를실행하는데필요한전체처리과정 CPU가프로그램실행을시작한순간부터전원을끄거나오류가발생하여중단될때까지반복 두개의부사이클 (subcycle) 들로분리 인출사이클 (fetch cycle) CPU 가기억장치로부터명령어를읽어오는단계 실행사이클 (execution cycle) 읽어온명령어를해석하고실행하는단계 IT 융합공학부컴퓨터구조 5
명령어실행에필요한 CPU 내부레지스터들 6 프로그램카운터 (Program Counter: PC) 다음에인출할명령어의주소를가지고있는레지스터 각명령어가인출된후에는자동적으로일정크기 ( 한명령어길이 ) 만큼증가 분기 (branch) 명령어가실행되는경우에는목적지주소로갱신 누산기 (Accumulator: AC) 데이터를일시적으로저장하는레지스터. 레지스터의길이는 CPU 가한번에처리할수있는데이터비트수 ( 단어길이 ) 와동일 명령어레지스터 (Instruction Register: IR) 가장최근에인출된명령어코드가저장되어있는레지스터 기억장치주소레지스터 (Memory Address Register: MAR) PC에저장된명령어주소가시스템주소버스로출력되기전에일시적으로저장되는주소레지스터기억장치버퍼레지스터 (Memory Buffer Register: MBR) 기억장치에쓰여질데이터혹은기억장치로부터읽혀진데이터를일시적으로저장하는버퍼레지스터 IT 융합공학부컴퓨터구조 6
데이터통로가표시된 CPU 내부구조 7 IT 융합공학부컴퓨터구조 7
2.2.1 인출사이클 인출사이클의마이크로연 산 (micro-operation) 8 t 0 : MAR PC t 1 : MBR M[MAR], PC PC + 1 t 2 : IR MBR 단, t 0, t 1 및 t 2 는 CPU 클록 (clock) 의주기 [ 예 ] CPU 클록 = 1GHz ( 클럭주기 = 1ns ) 인출사이클 : 1ns x 3 = 3ns소요 IT 융합공학부컴퓨터구조 8
2.2.2 실행사이클 CPU 는실행사이클동안에명령어코드를해독 (decode) 하고, 그결과에따라필요한연산들을수행 CPU 가수행하는연산들의종류 데이터이동 CPU 와기억장치간혹은 I/O 장치간에데이터를이동 9 데이터처리 : 데이터에대하여산술혹은논리연산을수행 데이터저장 연산결과데이터혹은입력장치로부터읽어들인데이터를기억장치에저장 프로그램제어 : 프로그램의실행순서를결정 실행사이클에서수행되는마이크로 - 연산들은명령어의연산코드 (op code) 에따라결정됨 기본적인명령어형식의구성 연산코드 (operation code) CPU 가수행할연산을지정 오퍼랜드 (operand) 명령어실행에필요한데이터가저장된주소 (addr) IT 융합공학부컴퓨터구조 9
[ 명령어예 ] 10 LOAD addr 명령어 명령어기억장치에저장되어있는데이터를 CPU 내부레지스터인 AC로이동하는명령어 t 0 : MAR IR(addr) t 1 : MBR M[MAR] t 2 : AC MBR STA addr 명령어 AC 레지스터의내용을기억장치에저장하는명령어 t 0 : MAR IR(addr) t 1 : MBR AC t 2 : M[MAR] MBR ADD addr 명령어 기억장치에저장된데이터를 AC의내용과더하고, 그결과는다시 AC에저장하는명령어 t 0 : MAR IR(addr) t 1 : MBR M[MAR] t 2 : AC AC + MBR JUMP addr 명령어 오퍼랜드 (addr) 가가리키는위치의명령어로실행순서를변경하는분기 (branch) 명령어 t 0 : PC IR(addr) IT 융합공학부컴퓨터구조 10
어셈블리프로그램실행과정의예 11 연산코드에임의의정수배정 LOAD : 1 STORE : 2 ADD : 5 JUMP : 8 [ 어셈블리프로그램의예 ] IT 융합공학부컴퓨터구조 11
어셈블리프로그램실행과정의예 ( 계속 ) 12 100 번지의첫번째명령어코드가인출되어 IR 에저장 250 번지의데이터를 AC 로이동 PC = PC + 1 = 101 IT 융합공학부컴퓨터구조 12
어셈블리프로그램실행과정의예 ( 계속 ) 13 두번째명령어가 101 번지로부터인출되어 IR 에저장 AC 의내용과 251 번지의내용을더하고, 결과를 AC 에저장 PC 의내용은 102 로증가 IT 융합공학부컴퓨터구조 13
어셈블리프로그램실행과정의예 ( 계속 ) 14 세번째명령어가 102 번지로부터인출되어 IR 에저장 AC 의내용이 251 번지에저장 PC 의내용은 103 으로증가 IT 융합공학부컴퓨터구조 14
어셈블리프로그램실행과정의예 ( 계속 ) 15 네번째명령어가 103 번지로부터인출되어 IR 에저장 분기될목적지주소, 즉 IR 의하위부분 (170) 이 PC 로적재 ( 다음명령어인출사이클에서는 170 번지의명령어인출 ) IT 융합공학부컴퓨터구조 15
2.2.3 인터럽트사이클 (interrupt cycle) 16 인터럽트 프로그램실행중에 CPU의현재처리순서를중단시키고다른동작을수행하도록요구하는시스템동작 외부로부터인터럽트요구가들어오면 CPU 는원래의프로그램수행을중단하고, 요구된인터럽트를위한서비스프로그램을먼저수행 인터럽트서비스루틴 (interrupt service routine: ISR) 인터럽트를처리하기위하여수행되는프로그램루틴 IT 융합공학부컴퓨터구조 16
인터럽트처리과정 인터럽트가들어왔을때 CPU 는 어떤장치가인터럽트를요구했는지확인 => 해당 ISR을호출 17 서비스가종료되면중단되었던원래 프로그램의수행계속 CPU 인터럽트처리의세부동작 1 현재의명령어실행을끝낸즉시, 다음 에실행할명령어의주소 (PC 의내용 ) 를스 택 (stack) 에저장 일반적으로스택은주 기억장치의특정부분 2 ISR을호출하기위하여그루틴의시작주소를 PC에적재. 시작주소는인터럽 트를요구한장치로부터전송되거나미리정해진값으로결정 자세한사항은 7.4 절에서설명 IT 융합공학부컴퓨터구조 17
인터럽트사이클의마이크로연산 18 t 0 : MBR PC t 1 : MAR SP, PC ISR의시작주소 t 2 : M[MAR] MBR 단, SP는스택포인터 (stack pointer). IT 융합공학부컴퓨터구조 18
인터럽트사이클의마이크로연산 [ 예 ] 19 현재 SP = 999 인터럽트서비스루틴의시작주소는 650 번지라고가정 100 LOAD 250 <= 인터럽트발생 101 ADD 251 102 STA 251 103 JUMP 170 IT 융합공학부컴퓨터구조 19
다중인터럽트 (multiple interrupt) 20 인터럽트서비스루틴을수행하는동안에다른인터럽트발생 다중인터럽트의처리방법 ( 두가지 ) 1 CPU가인터럽트서비스루틴을처리하고있는도중에는새로운인터럽트요구가들어오더라도 CPU가인터럽트사이클을수행하지않도록방지 인터럽트플래그 (interrupt flag) 0 : 인터럽트불가능 (interrupt disabled) 상태 시스템운영상중요한프로그램이나도중에중단할수없는데이터입출력동작등을위한인터럽트를처리하는데사용 2 인터럽트의우선순위를정하고, 우선순위가낮은인터럽트가처리되고있는동안에우선순위가더높은인터럽트가들어온다면, 현재의인터럽트서비스루틴의수행을중단하고새로운인터럽트를처리 IT 융합공학부컴퓨터구조 20
2.2.4 간접사이클 (indirect cycle) 명령어에포함되어있는주소를이용하여, 그명령어실행에필요한데이터의주소를인출하는사이클 간접주소지정방식 (indirect addressing mode) 에서사용 21 인출사이클과실행사이클사이에위치 간접사이클에서수행될마이크로-연산 t 0 : MAR IR(addr) t 1 : MBR M[MAR] t 2 : IR(addr) MBR 인출된명령어의주소필드내용을이용하여기억장치로부터데이터의실제주소를인출하여 IR의주소필드에저장 IT 융합공학부컴퓨터구조 21
2.3 명령어파이프라이닝 (instruction pipelining) CPU 의프로그램처리속도를높이기위하여 CPU 내부하드웨어를여러단계로나누어동시에처리하는기술 22 2- 단계명령어파이프라인 (two-stage instruction pipeline) 명령어를실행하는하드웨어를인출단계 (fetch stage) 와실행단계 (execute stage) 라는두개의독립적인파이프라인모듈로분리 두단계들에동일한클록을가하여동작시간을일치시키면, 첫번째클록주기에서는인출단계가첫번째명령어를인출 두번째클록주기에서는인출된첫번째명령어가실행단계로보내져서실행되며, 그와동시에인출단계는두번째명령어를인출 2-단계파이프라인을이용하면명령어처리속도가두배향상 ( 일반적으로단계수만큼의속도향상 ) 문제점 : 두단계의처리시간이동일하지않으면두배의속도향상을얻지못함 ( 파이프라인효율저하 ) 해결책 : 파이프라인단계의수를증가시켜각단계의처리시간을같게함 파이프라인단계의수를늘리면전체적으로속도향상이더높아짐 IT 융합공학부컴퓨터구조 22
4- 단계명령어파이프라인 명령어의처리를 4단계로분리처리속도가이론적으로 4배빨라짐 23 명령어인출 (IF) 단계 다음명령어를기억장치로부터인출 명령어해독 (ID) 단계 해독기 (decoder) 를이용하여명령어를해석 오퍼랜드인출 (OF) 단계 기억장치로부터오퍼랜드를인출 실행 (EX) 단계 지정된연산을수행 IT 융합공학부컴퓨터구조 23
파이프라인에의한전체명령어실행시간 파이프라인단계수 = k 실행할명령어들의수 = N 각파이프라인단계가한클럭주기씩걸린다고가정한다면 24 파이프라인에의한전체명령어실행시간 Tp : Tp = k + (N - 1) 즉, 첫번째명령어를실행하는데 k 주기가걸리고, 나머지 (N - 1) 개의명령어들은각각한주기씩만소요 파이프라인되지않은경우의 N 개의명령어들을실행시간 T : T1 = k N 파이프라인에의한속도향상 (SPeedup) T1 Sp T P k N k ( N 1) IT 융합공학부컴퓨터구조 24
[ 예제 2-1] 파이프라인에의한속도향상 25 파이프라인단계수 = 4, 파이프라인클록 = 1GHz ( 각단계에서의소요시간 = 1 ns) 10 개의명령어를실행하는경우의속도향상은? < 풀이 > 첫번째명령어실행에걸리는시간 = 4 ns 다음부터는매 1 ns 마다한개씩의명령어실행완료 10 개의명령어실행시간 = 4 + (10-1) = 13 ns 속도향상 = (10 4) / 13 3.08 배 [ 예 ] k = 4 일때, N = 100 이라면, Sp = 400/103 = 3.88 N = 1000 이라면, Sp = 4000/1003 = 3.988 N = 10000 이라면, Sp = 40000/10003 = 3.9988 N 라면, Sp = 4 IT 융합공학부컴퓨터구조 25
파이프라인의효율저하요인들 모든명령어들이파이프라인단계들을모두 거치지는않는다 26 어떤명령어에서는오퍼랜드를인출할 필요가없지만, 파이프라인의하드웨어를단순화시키기위해서는모든명령어가네단계들을모두통과하도록해야한다 파이프라인의클록은처리시간이가장오래걸리는단계를기준으로결정된다 IF 단계와 OF 단계가동시에기억장치를액세스하는경우에, 기억장치충돌 (memory conflict) 이일어나면지연이발생한다조건분기 (conditional branch) 명령어가실행되면, 미리인출하여처리하던명령어들이무효화된다 IT 융합공학부컴퓨터구조 26
분기발생에의한성능저하의최소화방법 분기예측 (branch prediction) 분기가일어날것인지를예측, 그에따라명령어를인출하는확률적방법 27 분기역사표 (branch history table) 이용하여최근의분기결과를참조 분기목적지선인출 (prefetch branch target) : 조건분기가인식되면, 분기명령어의다음명령어뿐만아니라분기의목적지명령어도함께인출하는방법루프버퍼 (loop buffer) 사용 : 파이프라인의명령어인출단계에포함되어있는작은고속기억장치인루프버퍼에가장최근인출된 n개의명령어들을순서대로저장해두는방법지연분기 (delayed branch) : 분기명령어의위치를재배치 => 분기명령어앞의명령어와자리교환 IT 융합공학부컴퓨터구조 27
상태레지스터 (status register) 조건분기명령어가사용할조건플래그 (condition flag) 들저장 28 부호 (S) 플래그 : 직전에수행된산술연산결과값의부호비트를저장 영 (Z) 플래그 : 연산결과값이 0 이면, 1 올림수 (C) 플래그 : 덧셈이나뺄셈에서올림수 (carry) 나빌림수 (borrow) 가발생한경우에 1로세트 동등 (E) 플래그 : 두수를비교한결과가같게나왔을경우에 1 로세트 오버플로우 (V) 플래그 : 산술연산과정에서오버플로우가발생한경우에 1 로세트 인터럽트 (I) 플래그 인터럽트가능 (interrupt enabled) 상태이면 0 로세트 인터럽트불가능 (interrupt disabled) 상태이면 1 로세트 슈퍼바이저 (P) 플래그 : CPU 의실행모드가슈퍼바이저모드 (supervisor mode) 이면 1 로세트, 사용자모드 (user mode) 이면 0 로세트 IT 융합공학부컴퓨터구조 28
2.3.3 슈퍼스칼라 (Superscalar) 29 CPU의처리속도를더욱높이기위하여내부에두개혹은그이상의명령어파이프라인들을포함시킨구조매클록주기마다각명령어파이프라인이별도의명령어를인출하여동시에실행할수있기때문에, 이론적으로는프로그램처리속도가파이프라인의수만큼향상가능파이프라인의수 = m : m-way 슈퍼스칼라 2-way 슈퍼스칼라의명령어실행흐름도 IT 융합공학부컴퓨터구조 29
슈퍼스칼라에의한속도향상 (speedup: Sp) 단일파이프라인에의한실행시간 (N : 실행할명령어수 ) 30 m-way 슈퍼스칼라에의한실행시간 속도향상 명령어수 N, Sp m 슈퍼스칼라의속도저하 (Sp < m) 요인 : 명령어들간의데이터의존관계 하드웨어 (ALU, 레지스터, 등 ) 이용에대한경합발생 동시실행가능한명령어수 < m < 해결책 > 명령어실행순서재배치 명령어들간의데이터의존성제거 하드웨어추가 ( 중복 ) 설치 기억장치및레지스터에대한경합감소 IT 융합공학부컴퓨터구조 30
2.3.4 듀얼 - 코어및멀티 - 코어 CPU 코어 (core) : 명령어실행에필요한 CPU 내부의핵심 ( 명령어실행 ) 하드웨어모듈 31 멀티 - 코어프로세서 (multi-core processor): 여러개의 CPU 코어들을하나의칩에포함시킨프로세서 듀얼 - 코어 (dual-core): 두개의 CPU 코어포함 쿼드 - 코어 (quad-core): 네개의 CPU 코어포함 칩 - 레벨다중프로세서 (chip-level multiprocessor) 혹은단일 - 칩다중프로세서 (multiprocessor-on-a-chip) 이라고도부름 각 CPU 코어는별도의 H/W 모듈로이루어지며, 시스템버스와캐시만공유 프로그램실행에있어서각코어는 ( 슈퍼스칼라의각파이프라인보다 ) 더높은독립성가짐 : 멀티 - 태스킹 (multi-tasking) 혹은멀티 - 스레딩 (multi-threading) IT 융합공학부컴퓨터구조 31