http://chineseinput.net/에서 pinyin(병음)방식으로 중국어를 변환할 수 있습니다.
변환된 중국어를 복사하여 사용하시면 됩니다.
복수의 메모리 접근 명령어의 효율적인 이용을 통한 코드 크기의 감소
안민욱(Minwook Ahn),조두산(Doosan Cho),백윤홍(Yunheung Paek),조정훈(Jeonghun Cho) 한국정보과학회 2005 정보과학회논문지 : 소프트웨어 및 응용 Vol.32 No.8
하나의 instruction으로 여러 메모리 블록을 읽거나 쓰는 MLS(Multiple Load/Store) 명령어를 사용하면 전체 코드에서 메모리 명령어의 수를 최소화해서 코드 사이즈를 축소할 수 있다. 이러한 장점 때문에 많은 마이크로 프로세서에서 이 명령어를 지원하고 있으나 현재까지 개발되어 있는 컴파일러들은 MLS 명령어의 장점을 효과적으로 이용하고 있지 못하고 있고 오직 제한적인 용도로 MLS 명령어를 사용하고 있다. 기존의 컴파일러에서 MLS 명령어를 효율적으로 지원하지 못하는 것은 일반적으로 MLS 명령어를 효과적으로 이용하기 위해서 해결해야 할 문제가 NP-hard의 범주에 속하기 때문이다. 이것은 stack frame에서 변수들에 대한 최적의 메모리 옵셋을 찾는 문제와 레지스터 할당에 관련된 복합적인 문제이다. 본 논문에서는 heuristic 기법을 효율적으로 이용하여 위에 언급된 문제를 polynomial time bound에 해결할 수 있는 기법을 제안한다. Code size reduction is ever becoming more important for compilers targeting embedded processors because these processors are often severely limited by storage constraints and thus the reduced code size can have a positively significant impact on their performance. Various code size reduction techniques have different motivations and a variety of application contexts utilizing special hardware features of their target processors. In this work, we propose a novel technique that fully utilizes a set of hardware instructions, called the multiple load/store (MLS), that are specially featured for reducing code size by minimizing the number of memory operations in the code. To take advantage of this feature, many microprocessors support the MLS instructions, whereas no existing compilers fully exploit the potential benefit of these instructions but only use them for some limited cases. This is mainly because optimizing memory accesses with MLS instructions for general cases is an NP-hard problem that necessitates complex assignments of registers and memory off-sets for variables in a stack frame. Our technique uses a couple of heuristics to efficiently handle this problem in a polynomial time bound.
Sanghyun Park(박상현),Minwook Ahn(안민욱),Doosan Cho(조두산),Jonghee Yoon(윤종희),Yunheung Paek(백윤흥) 한국정보과학회 프로그래밍언어연구회 2006 프로그래밍언어논문지 Vol.20 No.2
In the past decade, several tools have been developed to automate the floating-point to fixed-point conversion for DSP systems. In the conversion process, they first determine the integer/fractional word lengths for each fixed-point variable, and attempt to optimize the SQNR of the fixed-point code while precluding overflows. In this attempt, a number of scaling shifts need to be inserted into the code, and inevitably they alter the original code sequence. Recently, we have observed that a compiler can often be adversely affected by this alteration of the source code, and consequently fails to generate efficient machine code for its target processor. In this paper, we discuss how we circumvent this problem with a simple peephole optimization technique that safely migrates scaling shifts to other places within the code so that the compiler can have a higher chance to produce better code. We consider our technique to be safe in that it does not introduce new overflows, yet preserving (sometimes even improving) the original SQNR. We implemented this technique on our retargetable compiler, Soargen. The experimental results on a commercial fixed-point DSP processor exhibit that our technique is effective enough to achieve tangible improvement on code size and speed for a set of benchmarks.
Multi-Output Instruction 기술 방법 향상을 통한 성능 개선에 관한 연구
윤종희 ( Jonghee Youn ),안민욱 ( Minwook Ahn ),김대호 ( Daeho Kim ),김호균 ( Hokyun Kim ),조두산 ( Doosan Cho ),권용인 ( Yongin Kwon ),백윤흥 ( Yunheung Paek ) 한국정보처리학회 2008 한국정보처리학회 학술대회논문집 Vol.15 No.1
많은 DSP 등에서 Multi-Output Instructions(MOI)를 지원하나 이를 사용할 수 있는 컴파일러가 없다. 그래서 기존연구에서 이 문제를 해결하는 새로운 코드 생성 알고리즘을 개발하여 소개하였다. 하지만, 이 논문에서 제시한 방법은 많은 제약이 있어, 본 논문에서는 기존 논문에서 사용한 MOI 를 위한 compiler grammar rule description 을 확장하고, 알고리즘을 변경하여 기존에 제안된 방법이 해결할 수 없었던 MOI 들까지 모두 컴파일러에서 처리할 수 있도록 하였다.
Switching Activity 를 줄이기 위한 Retargetable 스케쥴링 기법
박상현 ( Sanghyun Park ),안민욱 ( Minwook Ahn ),김용주 ( Yongjoo Kim ),김원섭 ( Wonsub Kim ),백윤흥 ( Yunheung Paek ) 한국정보처리학회 2006 한국정보처리학회 학술대회논문집 Vol.13 No.2
임베디드 시스템에서 저전력 설계에 대한 요구는 급증하고 있다. 대부분의 전력 소모는 circuit 내의 switching activity 로 인해 발생한다. 이 논문에서는 machine description 을 이용하여 instructiobus 에서의 switching activity 를 줄이기 위한 scheduling 기법들을 제시하고, 그 효과를 Intel XScale processor 상에서 MiBench benchmark 을 통해 확인한다. 명령어들 간의 switching activity 를 최소화 하게끔 명령어를 재배치 함으로써 적은 performance degradation(2.6%)으로 instruction bus 에서의 전력 소모를 최고 12.3%, 평균적으로 10.3%까지 줄일 수 있었다.
Binutils 를 이용한 Retargetable Assembler 와 Linker 의 개발
윤종희 ( Jonghee Youn ),김호균 ( Hokyun Kim ),안민욱 ( Minwook Ahn ),최영규 ( Youngkyu Choi ),김대호 ( Daeho Kim ),정지문 ( Jimoon Jung ),백윤흥 ( Yunheung Paek ) 한국정보처리학회 2008 한국정보처리학회 학술대회논문집 Vol.15 No.2
CE (Consumer Electronics) 시장에서 Embedded System 은 time-to-market 이라는 개념이 나날이 중요해지고 있다. 시스템의 중심인 core processor 에 대하여 지원하는 여러 가지 software toolkit 의 빠른 개발은 무엇보다 중요해지고 있다. 이 논문에서는 GNU Binutils 를 기반으로 ADL 을 이용하여 Embedded system 의 core processor 를 위 하여 신속한 Assembler 와 Linker 를 개발하는 플랫폼을 개발 하였다. 이 플랫폼은 서울대학교 소프트웨어 최적화 연구실에서 개발한 ADL (Architecture Description Language)[1] 을 이용하여 core processor 를 기술하면 자동으로 Assembler 와 Link 를 생성해주는 시스템이다.
Heterogeneous 레지스터 아키텍처를 위한 코드 생성 방법 연구
이주연 ( Jooyeon Lee ),정석교 ( Seokgyo Jung ),안민욱 ( Minwook Ahn ),윤종희 ( Jonghee Yoon ),량영모 ( Yongmo Liang ),백윤흥 ( Yunheung Paek ) 한국정보처리학회 2006 한국정보처리학회 학술대회논문집 Vol.13 No.2
임베디드 프로세서의 본질적인 하드웨어적 복잡성 때문에 최적화된 코드를 만드는데 복잡하고 많은 컴파일 시간을 필요로 하는 알고리즘을 필요로 하게 된다. 이 논문은 임베디드 프로세서를 위한 기존의 빠른 코드 생성 알고리즘과 우리가 제안한 코드 생성 알고리즘을 비교 분석한 결과를 설명하고자 한다. 이 알고리즘들이 heterogeneous 레지스터를 가진 복잡한 아키텍쳐에 맞게 구성되어 있지만 둘 다 실제적으로 polynomial time 의 복잡성을 가지는 결과를 보인다. 그러나 실제 code quality 를 고려하였을 때는 두 알고리즘의 장단점이 구별되게 된다.
Block level parallelism 을 위한 수정된 SIMD Architecture 설계
윤종희 ( Jonghee Youn ),김대호 ( Daeho Kim ),안민욱 ( Minwook Ahn ),최영규 ( Youngkyu Choi ),김호균 ( Hokyun Kim ),양승준 ( Seungjun Yang ),백윤흥 ( Yunheung Paek ) 한국정보처리학회 2008 한국정보처리학회 학술대회논문집 Vol.15 No.2
미디어 어플리케이션, 특히 비디오 어플리케이션의 경우 커널 코드를 얼마나 효과적으로 처리하느냐에 따라 전체적인 성능에 큰 차이가 생긴다. 이러한 커널 코드를 효과적으로 처리하기 위해, 일반적인 DSP co-processor 에 SIMD 구조를 추가한 아키텍처를 설계하여 비디오 어플리케이션의 전체적인 성능을 향상할 수 있도록 하였다.
VLIW 프로세서를 위한 Swing Modulo Scheduler 구현
신장섭 ( Jangseop Shin ),한상준 ( Sangjun Han ),정현균 ( Hyungyun Jung ),안민욱 ( Minwook Ahn ),윤종희 ( Jonghee M Youn ),백윤흥 ( Yunheung Paek ) 한국정보처리학회 2014 한국정보처리학회 학술대회논문집 Vol.21 No.1
하드웨어가 해저드(hazard) 검출을 지원하지 않는 멀티이슈 VLIW 프로세서의 성능을 높이기 위해서는 컴파일러가 명령어 의존성과 하드웨어 자원의 제약을 지키는 범위 안에서 최대한 명령어수준 병렬성(ILP)을 활용하는 것이 중요하다. 기본 블록(basic block) 스케쥴링은 Branch 등 제어 흐름 (control flow)의 경계를 넘어선 스케쥴링을 행하지 않아 그 효과가 제한적이다. 소프트웨어 파이프라 이닝(software pipelining)은 루프(loop)의 경계를 허물어 여러 반복(iteration)의 명령어가 동시에 수행되도록 하는 것으로 모듈로 스케쥴링(modulo scheduling)은 그 중에 한 범주의 스케쥴링 기법들을 일컫는다. 본 연구에서는 그 중 한가지인 스윙 모듈로 스케쥴러(swing modulo scheduler)[1]를 구현하여 그 효과를 알아보고자 한다.