논문 07-32-5-05 한국통신학회논문지 07-5 Vol. 32 No. 5 머쉰행위기술로부터 Retargetable 컴파일러생성시스템구축 준회원이성래 *, 정회원황선영 * Construction of a Retargetable Compiler Generation System from Machine Behavioral Description Sung-Rae Lee* Associate Member, Sun-Young Hwang* Regular Member 요 약 ASIP 디자인에서디자인되는프로세서의성능을측정할수있는컴파일러가요구된다. 머쉰에맞는컴파일러설계는매우많은시간을요구한다. 본논문은 MDL 기술로부터 C 컴파일러를생성하는시스템을보인다. MDL 을이용한컴파일러생성은 user retargetability와컴파일러와프로세서디자인의일관성을유지시켜준다. 그러나 MDL을이용한컴파일러생성시스템은컴파일러와머쉰간의미적차이를줄여야한다. 이러한문제를해결하기위해제안하는시스템은트리패턴마다행위정보를가지는라이브러리에머쉰행위기술을맵핑한다. 맵핑된인스트럭션과레지스터파일사용정보를이용해제안하는시스템은컴파일러후위부 interface function을생성한다. 생성된 MIPS R3000와 ARM9 컴파일러가 C로기술된어플리케이션프로그램으로검증되었다. Key Words : Retargetable compiler, ASIP, MDL, User retargetability, SSA form ABSTRACT In ASIP design, compiler is required for performance evaluation of processors being designed. The design of machine specific compiler is time consuming. This paper presents the system which generates C compiler from MDL descriptions. Compiler generation using MDL can support user retargetability and concurrency between compiler design and processor design. However, it must overcome semantics gap between compiler and machine. To handle this problem, the proposed system maps behavioral descriptions to library which contains abstract behavior for each tree pattern. Using mapped instructions and information on register file usage, the proposed system generates back-end interface function of the compiler. Generated compilers, for MIPS R3000, ARM9 cores, have been proved by application programs written in C code. Ⅰ. 서론 C나 C++ 등의상위수준언어를타겟프로세서코드로변환시키는컴파일러는오랫동안운영체제나어플리케이션소프트웨어설계에쓰여왔다. 최근내장형시스템의수요가늘고제한된전력과비용내에서최대의성능을낼수있는 ASIP (Application Specific Instruction set Processor) 의사용이급격히증대되면서 ASIP에최적화된컴파일러설계의중요성이증가하고있다. 이러한추세는컴파일러가단순히코드를생성해주는것뿐만아니라 ASIP 설계간프로세서인스트럭션세트의변경에따른성능측정을위해필요한인스트럭션변경에따른컴파일러를생성할수있는 retargetable 본논문은 2007 년도 서울시산학연협력사업 의 나노 IP/SoC 설계기술혁신사업단 의지원으로이루어졌습니다. * 서강대학교전자공학과 CAD&ES 연구실 (hwang@sogang.ac.kr) 논문번호 :KICS2007-02-052, 접수일자 :2006 년 2 월 9 일, 최종논문접수일자 :2006 년 2 월 10 일 286
논문 / 머쉰행위기술로부터 Retargetable 컴파일러생성시스템구축 compiler를요구하게되었다 [1][2]. 컴파일러의설계는지나치게많은비용과시간을필요로하므로 Time-to-Market의중요성이부각되고있는현추세에서컴파일러설계는상당한병목으로작용하고있다. 머쉰기술언어로부터컴파일러생성은컴파일러설계시간을단축시켜줄뿐만아니라하나의기술로컴파일러와프로세서설계가가능하므로디자인일관성을유지할수있으며컴파일러프로세서상호디자인을통해프로세서최적화를이룰수있다는점에서의의가있다. 본연구에서는 SMDL (Sogang Machine Description Language) 을이용하여 LCC (Little C Compiler) [3][4] 의후위부자동생성기인 lburg [5] 의입력을생성하는 SRCC (Sogang Retargetable Compiler Compiler) 를구축하였다. 머쉰기술언어로부터컴파일러생성을위해서는머쉰 -컴파일러간의미적차이를줄여야한다. 제안된시스템은머쉰행위정보를컴파일러의내부트리패턴에따른행위정보를가지는라이브러리와맵핑을통해컴파일러의인스트럭션맵핑룰을만든다. 또한다양한맵핑방식을통해맵핑영역의확대와어플리케이션에최적화된인스트럭션셋의선택이가능하게하였으며머쉰기술만으로컴파일러를생성하는시스템을구축하였다. 본논문의 2절에서는관련연구를기술하며 3절에서는 SMDL 시스템을보인다. 4절에서는구축된컴파일러생성시스템인 SRCC의개관과인스트럭션선택기생성기, 그리고 seamless 컴파일러생성과정을보인다. 5절에서는구축된시스템의검증을위한시뮬레이션결과를보이고, 마지막으로 6절에서는결론및추후연구과제를제시한다. Ⅱ. 관련연구 ASIP설계를지원하기위한 MDL 기반의 retargetable 컴파일러생성은많은연구가되어왔다. 이중 RECORD [6], CHESS [7][8], LISA [9]-[11] 가대표적인 MDL을이용한컴파일러생성시스템이다. RECORD 컴파일러시스템은 MIMOLA HDL [12] 로생성된 net-list로부터인스트럭션정보를축출한후 iburg 입력을만듦으로써컴파일러를생성한다. MIMOLA는매우낮은레벨에서기술이이루어지고이로인해기술과수정이어렵다. CHESS 코드생성기는 nml [13] 을입력으로받아 저장유닛, 오퍼레이션, 저장유닛간연결관계등의정보를가지는 ISG (Instruction Set Graph) 생성후코드생성을한다. nml은언어자체에서파이프라인을지원하지않아파이프라인기능이있는프로세서생성에어려움이있다. LISA는 ACE의 CoSy 컴파일러시스템 [14] 의후위부생성기기술인 CGD를생성함으로써컴파일러를생성한다. LISA는소스코드의서브젝트트리와인스트럭션간다양한맵핑방식을사용하며, C/C++ 로기술된행위정보의복잡함으로 behavior 기술과분리된 semantics 섹션을만들어컴파일러생성을위한정보를얻는다. 하지만 behavior 정보가아닌 semantics정보에의한컴파일러생성은전체적인기술량이증가하며, 행위정보로부터컴파일러생성정보를얻지못하므로이상적이지못하다. 본논문에서제안하는 SRCC 시스템은행위 / 구조정보를모두가지는 SMDL의인스트럭션행위정보기술로 LISA와같은다양한맵핑이가능하도록하였다. Ⅲ. SMDL 개관 SMDL 시스템은 SoC 설계자동화를위해구축한시스템으로, 타겟프로세서를자동생성해주는 CoreGen과 SMDL로기술된프로세서에최적화된컴파일러를생성해주는 SRCC, 타겟프로세서의 ISS (Instruction Set Simulator) 를자동성성해주는 RISGen (Retargetable Instruction-set Simulator Generator) 으로이루어져있다. 설계자는이시스템에타겟프로세서의 SMDL기술과어플리케이션프로그램을입력하여일련의피드백을통해어플리케이션에최적화된 Processor Core, 컴파일러, ISS가자동생성된다. 그림 1에 SMDL 시스템을보인다. SMDL ASIP 및개발도구생성 Application Code (C code) Application 적용및검증 Processor Model (Intermediate Form) Feedback SRCC (Sogang Retargetable 임베디드코어생성기 Compiler Compiler) ISSGen (Embedded Core Generator) (Instruction Set Simulator Generator) Retargetable Compiler 임베디드 Assembly ISS 코어 Code 그림 1. SMDL 시스템개관 287
한국통신학회논문지 07-5 Vol. 32 No. 5 형태와동일한라이브러리중간형태에맵핑을함으로써 lburg의컴파일러코드선택기기술을생성한다. SMDL만을입력으로하는 seamless 컴파일러생성을위해 SRCC는 SMDL의레지스터파일사용기술과라이브러리맵핑된인스트럭션을이용하여컴파일러의후위부 interface function을생성한다. 그림 3은 SRCC 시스템의개관이다. 그림 2. SMDL의기술구조. SMDL은블록다이어그램수준의구조기술과 C언어수준의인스트럭션의행위기술을통해타겟프로세서를기술할수있도록개발된 MDL이다 [15]. SMDL은크게내부구조기술부와외부구조기술부, 인스트럭션셋기술부로나뉜다. 내부구조기술부에서는타겟으로하는프로세서의실행유닛이나레지스터, 메모리등을선언해주고각각의내부리소스들이어느스테이지에할당되는지에대해기술한다. 외부구조기술부에서는프로세서이름, 외부포트, 인터럽트등을정의한다. 인스트럭션셋기술부에서는어드레싱모드및각각의인스트럭션의특성과행위정보를기술하게된다. SMDL의기술구조는그림 2와같다. SRCC는 SMDL의인스트럭션셋기술부와내부구조기술부의리소스타입정보를이용하여기술된프로세서에최적화된컴파일러를생성한다. Ⅳ. 구축된컴파일러생성시스템 SRCC 시스템은 SMDL의행위정보로부터라이브러리맵핑에용이한중간형태를만들고, 그중간 4.1 SRCC 맵핑영역 SRCC는 SISD (Single Instruction Single Data) 모델을기본으로하는파이프라인아키텍춰모델을목표로한다. 보통의다이나믹프로그래밍기반트리코드선택기 [5][16] 가 statement level을넘는코드생성을하지않고루프문을맵핑하기어려우므로루프문을배제하였다. 4.2 SRCC 라이브러리 SRCC 라이브러리는머쉰행위정보와컴파일러사이에발생하는의미적차이를극복하기위해사용된다. SRCC 라이브러리는 C와유사한문법으로트리패턴에맵핑될수있는머쉰행위정보를기술하고라이브러리행위기술에 SMDL로기술된머쉰행위정보를맵핑함으로써각각의트리패턴에대한인스트럭션맵핑룰을생성가능하게한다. 그림 4는 SRCC 라이브러리의개략적인 BNF (Backus-Naur Form) 이다. library_list library library_list library library tree_representation = behavior_list behavior_list behavior behavior _list behavior behavior [ declaration_list statement_list ] 그림 4. 라이브러리 BNF form. 그림 3. SRCC 시스템개관 하나의트리패턴에는여러개의행위정보들이 OR룰로매치가된다. SRCC는맵핑중하나의트리패턴에대해여러개의행위가맵핑되었을시가장비용이적은행위정보에대한코드를생성한다. SRCC 라이브러리는 SMDL보다간소화된타입으로하나의인스트럭션내지는여러인스트럭션간행위정보를기술가능하도록다음과같은타입을가진다. - T-type : 하나의인스트럭션내부또는여러인스트럭션간데이터전달을해주는타입이다. SMDL 288
논문 / 머쉰행위기술로부터 Retargetable 컴파일러생성시스템구축 의 non-terminal 타입, 레지스터타입, 템포러리타입, 스테이지레지스터타입등이 T-type에맵핑된다. - I-type : 인스트럭션의 immediate 필드가 I-type으로맵핑된다. - P-type : 프로그램카운터타입이맵핑된다. - M-type : 메모리타입이맵핑된다. 그림 5 는라이브러리기술의예이다. reg : BCOMU4(T-type A[32] : reg) = [ T-type B[32]; B = ~A; ] [ T-type B[32]; B = ~(A 0); ] ; 그림 5. 라이브러리기술예. 임의의레지스터값을 inversion시키는트리패턴기술인 reg : BCOMU4(reg) 에대해 SRCC 라이브러리는 T-type A를 inversion 시키거나 A와 0을 NOR하여 T-type B에대입하는행위기술을가진다. 4.3 SMDL의레지스터파일사용정보기술레지스터파일사용정보기술은 SRCC의 seamless 컴파일러생성을위해 SMDL에추가된기술로각각의레지스터파일을구성하는레지스터마다컴파일러의활용정보를포함하게하여인스트럭션맵핑과 seamless 컴파일러생성이가능하게한다. 표 1은 SMDL의레지스터사용기술을보인다. 표 1. 레지스터사용기술의종류와설명. 사용정보설명 constant((+ -)?[0-9]+) 임의의값으로고정된레지스터 for_assembler 어셈블러가사용하는레지스터 argument argument 레지스터 temporary saved function_call function_return_value stack_pointer frame_pointer return_address function 호출간저장되지않는레지스터 function 호출간저장되는레지스터 function 호출시호출되는 function 의어드레스를가지는레지스터 function 의반환값을가지는레지스터 스택포인터 프레임포인터 function 이끝날시돌아갈어드레스를가지는레지스터 SMDL을기술시레지스터파일의 terminal 기술에서위의사용정보중하나를선택하여기술한다. 그림 6은레지스터사용정보가추가된 SMDL 기술의일부이다. R0 = address (RF[0]) { binformat = 5b'0; mnemonic = "$zero"; usage = constant(0); } R1 = address (RF[1]) { binformat = 5b'1; mnemonic = "$at"; usage = for_assembler; } R2 = address (RF[2]) { binformat = 5b'2; mnemonic = "$a0"; usage = argument; }. R31 = address (RF[31]) { binformat = 5b'31; mnemonic = "$ra"; usage = return_address; } RS = R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29 R30 R31; 그림 6. 레지스터사용정보기술예 각각의 terminal 마다레지스터사용정보가기술되고 RS는 R0부터 R31까지 terminal 정보를가지는 non-terminal로기술된다. 4.4 중간형태생성과정 SMDL과 SRCC 라이브러리의행위정보는동일한중간형태로변환된다. 중간형태는 high-level SSA form [17] 으로, SSA form [18] 은리네이밍과 Φ -function을통해모든변수가단한번값이대입되는형태이다. Alpern et al. [17] 은 SSA form에컨트롤정보를추가시켜 high-level SSA form을제안하였다. High-level SSA form은프로그램동일성체크에이용되었다 [17][19]. SRCC는 high-level SSA form을이용한프로그램동일성체크를활용하여 SMDL을라이브러리에맵핑한다. SSA form 생성을위해 CFG (Control Flow Graph) 로부터도미넌스프런티어맵핑을하였으며, 맵핑된도미넌스프런티어를이용해 Φ-function을삽입하고리네이밍하였다. High-level SSA form은 SSA form과 CDG (Control Dependence Graph) 를사용하여구현하였으며, high-level SSA form의맵핑가능영역을넓히기위해 copy propagation을수행하였다. 289
한국통신학회논문지 07-5 Vol. 32 No. 5 4.5 맵핑을위한 C 코드생성과정 SMDL의행위기술은 SRCC와맵핑을위해 SRCC 라이브러리와동일한중간표현형태로변형된후맵핑정보를가지는 C 코드를생성한다. 각각의 SMDL로기술된인스트럭션들의중간형태정보는하나의 C로기술된 function으로만들어지며, 레지스터사용기술및인스트럭션표현정보는배열로변환되어표현된다. 인스트럭션중간형태를 C 코드로변환할시교환법칙이성립하는오퍼레이션을가지는 SSA 노드에대해서는노드의좌우자식노드의위치를바꾼정보까지고려한정보를 C 코드로생성함으로써맵핑가능영역을넓힌다. 4.6 SMDL과라이브러리맵핑과정 SMDL과라이브러리의맵핑은 high-level SSA form간맵핑이다. 루프를배제한맵핑영역의제한으로 SMDL과라이브러리간맵핑은 DAG (Direct Acyclic Graph) 맵핑이고 DAG를 duplication 함으로써트리맵핑이되도록한다. SRCC는 T-type을통해하나의인스트럭션내부또는여러인스트럭션간데이터전송을표현할수있으므로하나의라이브러리행위정보에여러가지인스트럭션이맵핑될수있다. SRCC는인스트럭션의개수를비용으로계산하여다이나믹프로그래밍에기반한가장비용이적은인스트럭션을맵핑한다. SRCC는 LISA와같은 one-to-one, one-to -many, many-to-one 맵핑방식을행위기술맵핑을통해수행한다. One-to-one 맵핑은단순히하나의서브젝트트리에하나의인스트럭션이맵핑되는방식이며, One-to-many 맵핑은하나의서브젝트트리에여러개의인스트럭션을맵핑하는방식이다. One-to-many 맵핑은특정서브젝트트리에 one-to- one 맵핑되는인스트럭션이정의되지않아도다른정의된인스트럭션들의조합이서브젝트트리에맵핑가능하게함으로써많이사용되지않는특정트리패턴만을위한인스트럭션사용을줄일수있다. Many-to-one 맵핑은 ASIP 설계에있어매우중요한맵핑방식으로여러서브젝트트리에하나의인스트럭션을맵핑하는방식이다. Many-to-one 맵핑은여러서브젝트트리를하나의인스트럭션으로맵핑함으로써수행속도를높이며, 이는특정어플리케이션을위한연산이많은 ASIP의특성상 Manyto-one 맵핑은수행성능향상요인이될수있다. One-to-one, many-to-one 맵핑은라이브러리행위기술에하나의인스트럭션이맵핑되지만서브젝트트리패턴기술에들어가는트리오퍼레이션개수에따라 one-to-one과 many-to-one 맵핑이될수있다. 그림 7은 one-to-one과 many-to-one 맵핑에따른개략적인라이브러리기술이다. one-to-one stmt : ADDI4(T-type A[32] : reg, T-type B[32] : reg) = behavior_list stmt : ADDI4(T-type A[32]: reg, many-to-one MULI4(T-type B[32]: reg, T-type C[32]: reg)) = behavior_list 그림 7. one-to-one, many-to-one 맵핑을위한라이브러리기술예 T-type을이용한라이브러리기술은여러인스트럭션간데이터전송행위기술까지가능하게함으로써트리패턴과인스트럭션간 one-to-many 맵핑이가능하게한다. 그림 8은 SMDL의 SLT와 BNE 인스트럭션이 LTI4라는트리패턴의라이브러리행위기술에 one-to-many 맵핑되는예를보인다. 그림 8. SMDL- 라이브러리맵핑예 290
논문 / 머쉰행위기술로부터 Retargetable 컴파일러생성시스템구축 4.7 레지스터 / 상수할당 One-to-many 맵핑시인스트럭션간데이터전송을 non-terminal 타입의리소스가담당할시레지스터할당이필요하다. 이런경우 SRCC는인스트럭션간데이터전송을위한레지스터를사용정보가 for_assembler 인레지스터로할당한다. 라이브러리의행위정보가임의의상수를사용하고맵핑되는 SMDL 행위기술이 immediate 데이터타입을사용할시 immediate 데이터에해당상수를할당한다. 임의의상수에맵핑되는 SMDL non-terminal 타입의 terminal 기술중맵핑되는상수로고정된 terminal이있을시해당 terminal을맵핑시킨다. 예를들어, $at terminal 레지스터의사용정보를 for_asembler 로설정하고 $zero 라는 terminal 레지스터의사용정보를 constant(0) 라기술할시, 그림 8의맵핑결과는레지스터할당과상수정보에대한맵핑을통해그림 9의출력을낸다. stmt : LTI4 (reg, reg) "SLT $at, %0, %1\nBNE $at, $zero, %a\n" 2 그림 9. 생성된인스트럭션선택기기술의예 $at 가할당되어인스트럭션간데이터전송을수행하고 $zero 가상수 0에맵핑된다. 4.8 컴파일러후위부 interface function 생성과정컴파일러후위부 interface function 생성을위해 SRCC는레지스터사용기술과인스트럭션맵핑정보를사용한다. 상수로고정된레지스터사용정보로부터특정상수에대한레지스터를할당하며, argument 로사용되는레지스터사용정보로 function 호출시 argument의전달방식을결정한다. temporary 와 saved 로사용되는레지스터사용정보로컴파일러가할당할레지스터필드를결정하며, function_call / function_return_value 로사용되는레지스터사용정보로 function 호출시 function 어드레스정보와반환값을저장하는레지스터를할당한다. 컴파일러후위부 interface function은 activation 레코드의생성과소멸, 특정트리패턴에대한인스트럭션등에대한정보를가진다. SRCC는인스트럭션선택기생성을위해만들어진인스트럭션맵핑정보로부터컴파일러후위부 interface function 이지정해야할타겟프로세서의인스트럭션에대 한정보를얻어, 후위부 interface function이타겟머쉰에맞는인스트럭션을지정할수있게한다. Ⅴ. 실험결과 구현된시스템의정확성과유용성을검증하기위해 SMDL로기술한 MIPS R3000 [20], ARM9 [21] 프로세서를위한컴파일러를생성하였다. 본실험에서는임베디드설계에가장많이쓰이는프로세서인 MIPS R3000과 ARM9 프로세서의컴파일러를생성하였으나다른대부분의프로세서에대해 SMDL로기술하고컴파일러를생성할수있다. 표 2는컴파일러트리패턴에대해 SMDL로기술한인스트럭션맵핑의결과이다. 약 24~31% 의트리패턴이 one-to-many 맵핑되었다. 이는생성된두컴파일러가 one-to-many 맵핑을고려하지않을시모든트리패턴에인스트럭션을맵핑할수없음을의미한다. 약 6~8% 의트리패턴이 many-to-one 맵핑을통해코드사이즈의감소와실행성능향상을얻었다. 표 2. 인스트럭션맵핑결과. MIPS R3000 ARM9 one-to-one 65 (69.1%) 49 (59.8%) one-to-many 23 (24.5%) 26 (31.7%) many-to-one 6 (6.4%) 7 (8.5%) 생성된컴파일러가정확히동작하는지와성능의측정을위해 C로기술된 JPEG 인코더를본연구실에서생성한컴파일러로컴파일하고시뮬레이션하였으며, 매뉴얼포팅한 LCC 컴파일러와성능을비교하였다. 표 3은메뉴얼포팅한 LCC 컴파일러가생성한코드와생성된컴파일러가생성한인스트럭션수를보인다. 표 3. 컴파일된 JPEG 인코더의인스트럭션수 manual 생성된 LCC 컴파일러컴파일러 비고 MIPS R3000 2,533 2,773 9.4% 증가 ARM9 2,651 3,244 22.3% 증가 메뉴얼포팅한 LCC 컴파일러에비교해 MIPS R3000 컴파일러는 9.4%, ARM9 컴파일러는 22.3% 의코드사이즈증가를보인다. 이는생성된컴파일러가레지스터에임의의상수나어드레스를저장할 291
한국통신학회논문지 07-5 Vol. 32 No. 5 때와 immediate 필드를가지는인스트럭션에대해이상적인코드생성을못하여메뉴얼포팅한 LCC 컴파일러에비해많은코드를생성했기때문이다. 생성된 ARM9 컴파일러는 activation record의생성과소멸에관계된연산을하는인스트럭션으로매뉴얼포팅한 LCC 컴파일러보다많은코드사이즈를가지는인스트럭션을선택한다. 이는 SRCC가어떠한프로세서대해서도 activation record 모델을만들어야하므로범용으로사용할수있는 activation record를생성기준으로했기때문이다. 생성된컴파일러가생성한 JPEG 인코더코드의수행시간을실행 cycle을기준으로측정하였다. 그림 10은메뉴얼포팅한 LCC 컴파일러의수행 cycle을 100% 로할때 JPEG 인코더의중요 function별성능측정치를보인다. 생성된 MIPS R3000 컴파일러는메뉴얼포팅한 LCC 컴파일러대비평균 94.2% 의성능을보이며 ARM9 컴파일러는평균 84.9% 의성능을보인다. ARM9 컴파일러의성능이낮은이유는생성된 ARM9 컴파일러가 immediate 필드를가지는인스트럭션의운용에부담이크고, ARM9 프로세서에대한 activation record 모델이최적화되지않아 (a) MIPS R3000 컴파일러 (b) ARM9 컴파일러그림 10. 생성된코드의성능분석 MIPS R3000 ARM9 그림 11. 생성된컴파일러에의해컴파일된 JPEG 인코더의수행결과 function의호출이많이일어날시성능저하가일어나기때문이다. 생성된 MIPS R3000, ARM9 컴파일러로 JPEG 인코더를컴파일하여생성된코드는실행시 11.9kB의 bmp파일을읽어 1.66kB의 JPEG 파일을생성한다. 그림 11은생성된 JPEG 파일을보인다. 생성된컴파일러에의해컴파일된코드수행으로얻어진 JPEG 이미지가오류없이출력되는것을확인함으로써생성된 MIPS R3000과 ARM9 컴파일러의정확한동작을검증하였다. Ⅵ. 결론및추후과제 본논문은 SMDL로기술로부터 seamless 컴파일러생성시스템인 SRCC의구축에대해기술하였다. SRCC는 SMDL의행위정보와레지스터사용기술로부터컴파일러생성을위한정보를추출하며 high-level SSA form을사용한 SMDL-라이브러리맵핑으로머쉰과컴파일러사이에생기는의미적차이를최소화하였다. 또한, one-to-many 맵핑으로적은인스트럭션으로많은트리패턴맵핑이가능하게하였으며 many-to-one 맵핑으로실행성능향상이가능하도록하였다. MIPS R3000과 ARM9 컴파일러의생성과 JPEG 인코더를통한검증으로생성된컴파일러의정확성을검증하였다. 생성된컴파일러는기존컴파일러와비교시 MIPS R3000과 ARM9 컴파일러에대하여각 94.2%, 84.9% 의실행성능을보였다. 하지만프로세서, 시뮬레이터생성시스템인 SMDL을이용해 seamless 생성에기반한빠른컴파일러생성시간을가지는점에서의의가있다. 추후과제는생성된컴파일러를위한프로파일러, SMDL 기술로부터프로세서의존적인정보추출을통한타겟프로세서에최적화되고메뉴얼포팅된컴파일러수준의성능을갖는컴파일러의생성이다. 292
논문 / 머쉰행위기술로부터 Retargetable 컴파일러생성시스템구축 참고문헌 [1] R. Leupers, Compiler Design Issues for Embedded Processors, IEEE Design & Test of Computers, Vol. 19, No. 4, pp. 51-58, July-Aug. 2002. [2] M. Jain, M. Balakrishnan, and A. Kumar, ASIP Design Methodologies : Survey and Issues, in Proc. IEEE/ACM Int. Conf. VLSI Design. (VLSI 2001), pp. 76-81, Jan. 2001. [3] C. Fraser and D. Hanson, A Retargetable C Compiler : Design and Implementation, Benjamin/ Cummings, 1995. [4] C. Fraser and D. Hanson, The lcc 4.x Code-Generation Interface, Microsoft Research, 2003. [5] C. Fraser, R. Henry, and T. Proebsting, "BURG - Fast Optimal Instruction Selection and Tree Parsing, ACM SIGPLAN Notices, Vol. 27, No. 4, pp. 68-76, April 1992. [6] R. Leupers and P. Marwedel, Retargetable Generation of Code Selectiors from HDL Processor Models, in Proc. European Design & Test Conf., 1997. [7] J. V. Praet, D. Lanneer, G. Goossens, W. Geurts, and H. De Man, A Graph Based Processor Model for Retargetable Code Generation, in Proc. European Design & Test Conf., 1996. [8] D. Lanneer et al, CHESS : Retargetable Code Generation for Embedded DSP Processors, in P. Marwedel and G. Goosens, ed., Code Generation for Embedded Processors, pp. 85-102, Kluwer Academic Publishers, 1995. [9] A. Hoffmann et al, A Novel Methodology for the Design of Application-Specific Instruction Set Processors(ASIPs) Using a Machine Description Language, IEEE Trans. Computer-Aided Design, Vol. 20, No. 11, pp. 1338-1354, Nov. 2001. [10] J. Ceng, M. Hohenauer, R. Leupers, G. Ascheid, H. Meyr, and G. Braun, C Compiler Retargeting Based on Instruction Semantics Models, in Proc. Design Automation and Test in Europe, pp. 1150-1155, 2005. [11] J. Ceng, W. Sheng, M. Hohenauer, R. Leupers, G. Ascheid, H. Meyr, and G. Braun, Modeling Instruction Semantics in ADL Processor Descriptions for C Compiler Retargeting. Int. Workshop on Systems, Architectures, Modeling, and Simulation (SAMOS), 2004. [12] S. Bashford, U. Bieker, B. Harking, R. Leupers, P. Marwedel, A. Neumann, and D. Voggenauer, The MIMOLA Language Version 4.1, Technical report, University of Dortmund, 1994. [13] A. Fauth, J. Van Praet, and M. Freericks, Describing Instructions Set Processors using nml, in Proc. European Design & Test Conf., Paris (France), pp. 503-507, Mar. 1995. [14] ACE - Associated Compiler Experts, The COSY Compiler Development System, http://www.ace.nl [15] 조재범, 유용호, 황선영, " 임베디드프로세서코어자동생성시스템의구축, 한국통신학회논문지, 30 권 6A호, pp. 526-534, 2005년 6월. [16] H. Emmelmann, F.-W. Schröer, and R. Landwehr, Beg - A Generator for Efficient Back Ends, in Proc. SIGPLAN Conf. Programming Language Design and Implementation, pp 227-237, 1989. [17] B. Alpern, M. Wegman, and F. Zadeck, Detecting Equality of Value in Programs, in Conf. Record of the 15th ACM Symposium on Principles of Program Languages, ACM, New York, pp. 1-11, January 1988. [18] R. Cytron, J. Ferrante, B. Rosen, M. Wegman, and F. Zadeck, Efficiently computing static single assignment form and the control dependence graph, ACM Trans. Program. Lang. Syst., Vol. 13, No. 4, pp. 451-490, Oct. 1991. [19] W. Yang, S. Horwitz, and T. Reps, Detecting Program Components with Equivalent Behaviors, Tech. Rep. 840. Dept. of Computer Science, Univ. of Wisconsin at Madison, Madison, Apr. 1989. [20] G. Kane and J. Heinrich, MIPS RISC Architecture, Prentice Hall, 1992. [21] S. Furber, ARM System-on-chip Architecture, Addison-Wesley, 2000. 293
한국통신학회논문지 07-5 Vol. 32 No. 5 이성래 (Sung-Rae Lee) 준회원 2006년 7월서강대학교전자공학과졸업 2006년 8월 ~ 현재서강대학교전자공학과석사과정 < 관심분야 > Embedded 시스템을위한고성능프로세서및 optimizing compiler 설계 황선영 (Sun-Young Hwang) 정회원 1976년 2월서울대학교전자공학과졸업 1978년 2월한국과학원전기및전자공학과공학석사취득 1986년 10월미국 Stanford 대학교전자공학박사학위취득 1976년 ~1981년삼성반도체 ( 주 ) 연구원, 팀장 1986년 ~1989년 Stanford대학 Center for Integrated Systems 연구소책임연구원및 Fairchild Semiconductor Palo Alto Research Center 기술자문 1989년 ~1992년삼성전자 ( 주 ) 반도체기술자문 2002년 4월 ~2004년 3월서강대학교정보통신대학원장 1989년 3월 ~ 현재서강대학교전자공학과교수 < 관심분야 > SoC 설계및 framework 구성, CAD시스템, Com. Architecture 및 DSP System Design 등 294