컴퓨터구조 강의노트 #12: Chap. 13 축소명령어세트컴퓨터 [RISC] Chap. 14 슈퍼스칼라, 멀티프로세서 2009. 6. 10. 담당교수 : 조재수 E-mail: jaesoo27@kut.ac.kr 1 컴퓨터시스템구조론 제 13 장축소명령어세트컴퓨터 (RISC) 2 1
핵심요점들 고급언어프로그램의실행패턴에관한연구들이새로운형태의프로세서구조인축소명령어세트컴퓨터 (Reduced istructio set computer: RISC) 를설계하는데주요지침이되었다. RISC 프로세서들의주요특성 l 고정된형식을가진제한된명령어세트 l 많은수의레지스터들혹은레지스터사용을최적화시키는컴파일러의사용 l 명령어파이프라인최적화의강조 RISC 의명령어세트가간단해짐으로써파이프라이닝의효과를더높일수있게되었다. 3/34 컴퓨터의주요발전동향 계열 (family) 개념의도입 l 구조 (architecture) 와구현 (implemetatio) 의분리시도 l 동일한구조를가지지만가격대성능은서로다른컴퓨터들을제공 마이크로프로그램을이용한제어유니트 (microprog-rammed cotrol uit) 사용 l 1951년 Wilkes가제안 l 제어유니트의설계와구현을용이하게해줌 캐쉬기억장치의도입 l 1969년 IBM S/360 model 85에서처음사용 4/34 2
컴퓨터의주요발전동향 ( 계속 ) 파이프라이닝 (Pipeliig) 구조도입 l 순차적특성을가진기계명령어프로그램에병렬성부여. [ 예 ] 명령어파이프라이닝 다중프로세서 (Multiple processors) : 한시스템내에 다수의프로세서들이서로협력하면서작업들을처 리 5/34 다음발전단계 : RISC 축소명령어세트컴퓨터 (Reduced Istructio Set Computer) 주요특성들 l 제한적이고간단한명령어세트 l 레지스터의최적사용을위하여많은수의범용레지스터들을포함하거나컴파일러기술을사용 l 명령어파이프라인의최적화강조 6/34 3
표 13.1 몇가지 CISC 과 RISC 및스칼라프로세서들의특성들 CISC RISC Superscalar Characteristic IBM VAX Itel SPARC MIPS PowerPC Ultra MIPS 370/168 11/780 80486 R4000 SPARC R10000 Year developed 1973 1978 1989 1987 1991 1993 1996 1996 No. of istructio 208 303 235 69 94 225 Istructio size (bytes) 2-6 2-57 1-11 4 4 4 4 4 Addressig modes 4 22 11 1 1 2 1 1 GP Registers 16 16 8 40-520 32 32 40-520 32 Cotrol memory Size 420 480 246 - - - - - Cache size (kbytes) 64 64 8 32 128 16-32 32 64 7/34 13.1 명령어실행특성들 복잡한고급프로그래밍언어의개발 l 알고리즘표현의간략화 l 구조적프로그래밍가능 고급언어와컴퓨터구조가제공하는연산들간의차이인어의상의차이 (sematic gap) 발생 l 실행의비효율성, 지나치게큰기계어프로그램, 컴파일러의복잡성 -> 설계자들은이차이를줄일수있는구조를연구 l 해결책 큰명령어세트 (large istructio sets) 주소지정방식의종류증가 HLL 명령어들의하드웨어구현 [ 예 ] VAX 시스템의 CASE (switch) 명령어 8/34 4
복잡한명령어세트의이점 컴파일러작성자의작업용이 실행효율향상 l 복잡한명령어의마이크로코드 (microcode) 구현 복잡하고정교한고급언어지원 9/34 RISC 제창자들에의한실행특성분석 수행될연산들 사용되는오퍼랜드들 실행순서 고급언어프로그램들에대하여위의특성들 을분석 : 프로그램실행중의동적특성분석 10/34 5
연산들의특성분석결과 ASSIGN 문이가장많다 l 데이터의이동이중요 조건문 (IF, LOOP) 의사용도빈번한편프로시듀어호출및복귀 ((Procedure call-retur) 에많은시간소모 [ 표 13.2] HLL 연산들에있어서가중치가부여된상대 적인동적빈도 [ 표 13.3] 오퍼랜드들의동적백분율 11/34 프로시듀어호출 (Procedure Calls) 의특성 HLL 프로그램에서가장많은시간을소모하는것이호출 (call) 과복귀 (retur): 표 13.2 효율적구현을위한주요사항들 l 전송되는파라미터들의수 l 중첩 (estig) 의깊이 v Taebaum 의연구결과 동적으로호출된프로시듀어의 98% 가 6 개이하의파라미터전송, 이들중 92% 는 6 개이하의지역변수사용 12/34 6
제안 RISC 구조를위한세가지요소들 l 많은수의레지스터사용 : 오퍼랜드참조의최적화 l 파이프라인의신중한설계 : 조건분기및프로시듀어호출에의한비효율성존재 l 단순화된 ( 축소된 ) 명령어세트필요 13/34 13.2 큰레지스터파일의사용 레지스터는주기억장치나캐쉬보다더빠른저장장치이기때문 레지스터파일은크기가작고, ALU 및제어유니트와함께칩내에있으며, 캐쉬와기억장치보다짧은주소를사용 가장자주사용되는오퍼랜드를레지스터에저장함으로써레지스터 - 기억장치간의이동을최소화하는전략이필요 l 소프트웨어를이용하는방법 : Compiler l 하드웨어를이용하는방법 14/34 7
레지스터윈도우 레지스터들을여러개의작은레지스터세트로분할각세트를서로다른프로시듀어에게할당프로시듀어호출시레지스터내용을기억장치에저장하지않으며, 호출된프로시듀어는다른레지스터세트를사용하도록자동적으로전환인접한프로세듀어간에는중첩 (overlap) 을이용하여파라미터전송 15/34 레지스터윈도우 ( 계속 ) 레지스터세트를세영역으로구분 l 파라미터레지스터들 (Parameter registers) : 호출한프로시듀어로부터전송된파라미터저장 l 지역레지스터들 (Local registers) : 지역변수들저장 l 임시레지스터들 (Temporary registers) : 현재프로세듀어에의해호출될하위프로세듀어로전송할파라미터저장. 하위프로세듀어로부터결과값을되돌려받을때도사용 중첩 (overlap) : 데이터의실제이동없이파라미터전송가능 16/34 8
중첩레지스터윈도우들 (Overlappig Register Widows) 그림 13.1: 중첩레지스터윈도우들 (Overlappig register widows) 17/34 중첩윈도우들의순환버퍼조직 (CWP) 18/34 9
순환버퍼의동작 호출이이루어졌을때, 현재윈도우포인터 (curret widow poiter: CWP) 는현재활성화된레지스터윈도우를가리키도록이동. 만약모든윈도우들이사용중이라면, 인터럽트가발생하고가장오래된윈도우 ( 가장먼저호출된프로시듀어가사용중인윈도우 ) 를기억장치에저장. 보관윈도우포인터 (saved widow poiter) 는저장된윈도우가다음에복구될위치를지정. 19/34 전역변수들 (Global Variables) 컴파일러는전역변수들을위해기억장치할당 l 빈번히액세스되는변수들에는비효율적 CPU 내에전역레지스터세트 (global register set) 를둠. [ 예 ] 레지스터 0 ~ 7 : 전역변수를위해사용 레지스터 8 ~ 31 : 현재프로시져를위한레지스터로사용 20/34 10
큰레지스터파일과캐쉬의비교 레지스터파일은가장많이사용되는변수들을저장하고작고빠른버퍼이다. 레지스터파일은가장최근에활성화된 N-1 개의프로시져들의모든지역스칼라변수들을저장 캐쉬는최근에사용된스칼라변수들의일부분을가지고있다. 레지스터파일은모든스칼라변수들을저장하고있기때문에시간이절약된다. 반면에캐쉬는상황에따라적절히대처하기때문에공간을더유용하게사용하도록해준다. 캐쉬는모든기억장치참조들을동일하게취급 21/34 윈도우 - 기반레지스터파일에서의스칼라변수참조 22/34 11
캐쉬에서의스칼라변수참조 23/34 13.3 컴파일러를이용한레지스터최적화 필요성 : 적은수 (16 ~ 32 개 ) 의레지스터들을가진 RISC 에서컴파일러가레지스터사용을최적화 è 기억장치사용의최소화 l HLL 프로그램에서는레지스터가명시되지않으며, 각변수에는기호적혹은가상레지스터가지정됨. l 기호레지스터들은실제레지스터들로사상 (mappig) 되며, 실제레지스터들을공유할수도있음. l 실제레지스터로사상될수없는변수들은기억장치에배정됨 24/34 12
13.4 축소명령어세트구조 왜 CISC 인가? 그동안명령어세트는명령어의수가더많아지고, 더복잡해지는경향으로발전 : 이에대한두가지주요이유 l 컴파일러를단순화시키기위한것과 l 성능을향상시키려는것 코드크기를최소화하고, 명령어실행횟수를줄이고, 파이프라이닝을개선할수있도록코드생성을최적화하는일은복잡한명령어세트로는더욱어렵다. 명령어의수가많아지면, 전체제어유니트는더복잡하게구성되고, 마이크로프로그램제어를위한저장장치도더커지게된다. -> 간단한명령어들의실행시간을증가시킨다. -> 명령어세트가더복잡해지는경향이옳다는것은설득력이없다. -> 다른시도 (RISC) 25/34 축소명령어세트구조의특징들 사이클당한명령어실행 (oe istructio per cycle) 레지스터 - 레지스터연산들 (register-to-register operatios) 간단한주소지정방식사용 (simple addressig modes) 레지스터주소지정방식 간단한명령어형식들 (simple istructio formats) 26/34 13
RISC 와 CISC 간의비교및논쟁 정량적 (Quatitative) 측면 l 프로그램길이와실행속도의비교 정성적 (Qualitative) 측면 l 고급언어의지원문제및 VLSI 기술의사용가능성 문제점 l 직접비교할수있는 RISC와 CISC가없다 l 정의된시험프로그램이없다 l 하드웨어에의한효과와컴파일러에의한효과를구분하기어렵다 l RISC에대한분석의대부분은상용제품이아닌실험용에의해이루어졌다 27/34 슈퍼스칼라 슈퍼스칼라란? l CPU 내에파이프라인을여러개두어여러명령어를동시에실행하는기술 28/34 14
슈퍼스칼라 29/34 파이프라이닝 슈퍼스칼라의제약사항 다음과같은특성이존재하는경우에는동시에실행되어서는안된다 30/34 15
파이프라이닝 순수데이터의존성또는 'read after write' 의존성 순차적으로실행 실행순서를바꿔실행 31/34 파이프라이닝 l 자원의존성과프로시듀어의존성자원의존성 : 같은자원을동시에사용하고자할때생기는것 => 이두명령어는모두나누기연산장치라는같은자원을요구하기때문에동시에실행될수없다. 프로시듀어의존성 : 분기명령어에의해생기는것으로분기명령어와바로다음에있는명령어는동시에실행될수없다. 분기명령어의다음명령어는분기명령어의실행이종료될때가지실행되어서는안된다. 32/34 16
멀티프로세서란 l l 병렬처리 (parallel processig) : 여러개의프로그램을동시에실행하거나하나의프로그램을분할해서동시에실행하는기술 멀티프로세서 (multiprocessor) : 병렬처리를가능하게하는시스템. 성능향상, 신뢰성제공 멀티프로세서의병렬처리 33/34 Thak You! 수고하셨습니다. 34/34 17