Reconfigurable array core for mobile multimedia applications

가. 실습과제의 목적

본 실습 과제에서는 모바일 기기에 필수적인 비디오, 오디오, 3D graphics 정보의 처리를 위한 새로운 SoC 구조로서 최근에 부각되고 있는 reconfigurable array architecture에 관한 연구를 수행하고자 한다. Reconfigurable array architecture의 핵심 부분인 array 코어를 개발하고 기존의 범용 프로세서 및 특정 목적의 accelerator와 통합하여 멀티미디어용 SoC를 구현함과 동시에 컴파일러, debugger, simulator 등 관련 소프트웨어 및 개발환경 그리고 레퍼런스 라이브러리와 도큐먼트를 개발하여 하나의 완전한 플랫폼 환경을 개발하고자 한다.

나. 필요성

모바일 매체를 통한 멀티미디어 정보 교환의 폭발적인 수요 증가로 인하여 고성능, 저전력의 시스템을 보다 작은 크기로 설계해야하는 필요성이 어느 때보다 커지고 있다. 반면에 높은 품질의 멀티미디어 서비스에 대한 요청이 증가함에 따라 비디오, 오디오 및 3D graphics 데이터를 처리하는 애플리케이션에 대한 기술은 고도로 발전하고 있다. 이러한 애플리케이션들은 대개 복잡한 병렬 처리 연산을 필요로 하는 특징을 지니고 있으며 일반적으로 주문형 집적회로(ASIC)를 이용하여 구현하거나 일반적인 내장형 마이크로프로세서 상에서 소프트웨어적으로 구현한다. 하지만 전자의 경우 소비 전력 및 성능 면에서 최적화될 수 있으나 특정 애플리케이션에 국한된다는 단점이 있으며, 후자의 경우 다양한 애플리케이션을 실행시킬 수 있으나 애플리케이션이 복잡해지고 커질수록 만족스러운 성능을 낼 수 없다는 단점이 있다. 이에 이 중간형태인 reconfigurable array architecture를 사용하는 방식이 하나의 해결책으로 부각되고 있으며 이러한 기술은 앞으로 고성능, 저전력을 요하는 전자 및 정보통신 분야의 시스템을 개발하는 데에 핵심적인 기술이 될 것으로 기대된다.

다. 실습과제의 총괄 과제 내용

본 과제에서는 reconfigurable array architecture를 개발하기 위해 다음과 같은 연구를 수행하고자 한다. 하드웨어 플랫폼에서는 기존 reconfigurable array architecture(RAA)에 대한 분석과 모바일 기기에 사용되는 비디오/오디오 코덱, 3D graphics 등 관련 애플리케이션에 대한 분석을 바탕으로 RAA의 사양을 결정하고 이를 RTL로 설계하며 이를 검증할 수 있는 SoC 플랫폼을 구축한다. 한편 RT-수준에서 전체 애플리케이션에 대한 검증 및 성능 분석을 하며 모바일 기기라는 특성에 맞도록 저전력 및 고성능을 낼 수 있는 설계 기술을 연구하며 최종적으로는 SoC를 실제 chip으로 구현하도록 한다. 한편 애플리케이션에 따라 RAA만으로는 만족하는 성능을 내기 힘든 경우 RAA와 함께 동작 할 수 있는 reconfigurable HW accelerator를 개발하도록 한다.

한편 만들어진 RAA에 멀티미디어 애플리케이션을 효율적으로 매핑 시킬 수 있는 GUI 기반의 매핑 툴을 구현하여 손쉽게 RAA를 사용할 수 있게 하며, 상위수준에서 시스템을 검증해 볼 수 있는 simulator 및 debugger를 구현하여 이를 이용하여 보다 빠른 설계 공간 탐색을 할 수 있도록 한다. 또한 지금까지 사람에 의해서 행해왔던 매핑을 자동화 하는 컴파일러를 개발하고 이를 이용한 매핑이 hand optimization한 결과와 어떠한 차이를 보이며 좀더 높은 효율을 내기 위해서는 어떠한 방법이 필요한지에 관한 연구를 수행하고자 한다.

마지막으로 개발된 RAA를 효율적으로 사용할 수 있는 라이브러리 및 도큐먼트를 제작하여 추후 연구에 도움이 되도록 하며 개발된 RAA가 최종적으로 어떠한 성능을 내는지를 DSP나 ASIC 등과의 비교를 통해 평가한다.

그림 1. 설계 실습 프로젝트 개발 시스템 구성도

라. 실습과제의 중요성

[기술적으로의 중요성]

휴대형 매체를 통한 멀티미디어 정보의 교환과 처리에 대한 수요가 폭발적으로 증가함에 따라 멀티미디어 정보의 교환과 처리를 위한 표준화 작업이 활발하게 이루어지고 있다. 표준화 작업은 보다 적은 양의 정보를 교환하면서 더 좋은 품질의 멀티미디어 정보를 처리할 수 있도록 하는데 집중 되고 있다. 따라서 이러한 표준화된 멀티미디어 정보의 처리 방식을 휴대형 매체에서 구현하기 위해서는 고성능, 저전력 시스템이 필요하다. 한편 최근의 휴대형 매체에서는 유비쿼터스 컴퓨팅이 요구되면서 시스템의 유연성이 점점 더 중요해지고 있다.

이와 같이 시스템의 복잡도가 증가하고, 고성능, 저전력, 유연성이 동시에 요구되고 있으나 이러한 요구는 기존의 방법(고성능을 위한 HW 구현, 유연성을 위한 SW 구현, 또는 이들의 조합)으로는 만족시키기가 어려운 것이 현실이다. 이러한 문제를 완화시킬 수 있는 가능성을 보이고 있는 한 가지 방법이 reconfigurable array architecture이다.

Reconfigurable array architecture는 일반적으로 재구성 가능한 processing element(PE)의 배열을 이용하여 최대한 병렬성을 살림으로써 성능을 극대화하고, 동시에 재구성을 통하여 비용과 복잡도를 완화하고 저전력과 유연성을 추구한다. 그림 6은 reconfigurable array architecture가 차지할 것으로 기대되는 위치를 보여준다.


그림 . Performance/power vs. flexibility.

그런데 다양한 애플리케이션에서 요구하는 특수 데이터형 연산은 RAA 구조에서 고성능으로 처리하기에 어려움이 있다. 예를 들어 사용가능한 네트워크의 한계로 인해 데이터의 발생 확률분호를 활용하여 전송해야 할 평균 비트수를 줄이는 variable length coding/decoding(VLC/VLD) 연산 등이 그것이다. 따라서 RAA에서 구현하기 어려운 특수 기능 블록을 별도로 설계하여 고성능, 저전력화하여 전체적인 시스템 성능 향상을 위한 기술 연구가 reconfigurable array architecture 분야에서 중요시 되고 있다. 따라서 병렬 처리가 가능한 reconfigurable array architecture와 VLC/VLD, direct digital frequency synthesizer(DDFS) 등의 특수 기능 블록과의 효율적인 인터페이스를 통해 전체적인 성능 향상의 연구가 필요하다.

[>경제적으로의 중요성]

Reconfigurable array architecture는 SoC를 구성하는데 있어 기존의 연산엔진(내장형 마이크로프로세서, DSP, 하드웨어 가속기)을 대체하거나, 기존의 시스템에 대한 유연성 및 저전력, 성능 향상을 위해 추가되는 기술이므로, 이러한 연산엔진이 사용되는 SoC 제품(휴대폰, PDA, 휴대용 멀티미디어 단말기(PMP), 디지털멀티미디어 방송(DMB) 단말기 등)의 핵심 기술로 사용될 수 있다. 정보통신부가 발표한 국내 SoC 시장 규모[1][2]는 표 1과 같이 2005년도 3조 59억원, 2006년도에는 3조 548억원이 예상된다. 또한 국내 팹리스 (설계전문) 반도체 업체 수는 150여개에 달하며 최근 한국반도체산업협회가 내놓은 2006년 반도체시장 전망 자료에 따르면, 2005년 9000억원 수준이었던 국내 팹리스 반도체 산업 규모가 올해 77%가량 증가한 1조> 6000억원이 될 전망이다[3]. 세계 SoC 시장의 경우 가트너 그룹이 발표한 자료에 따르면[4] 표 2와 같이 2005년도 44,773백만 달러, 2006년도에는 48,423백만 달러의 규모가 예상된다. 따라서 SoC 시장 규모를 고려할 때 reconfigurable array architecture 설계 기술은 경제적으로 큰 의미를 갖고 있다.

표 1. 국내 SoC 시장 규모[1][2](단위: 백만원)

구분

2003

2004

2005

2006

2007

2008

표준기반 셀 IC-기반 SoC

375,802

539,529

578,195

695,547

854,795

1,029,569

임베디드 마이크로 로직 SoC

1,812,264

2,225,270

2,315,838

2,657,982

3,085,601

3,516,238

임베디드 메모리 SoC

69,893

90,618

94,836

113,559

141,771

163,100

기타 SoC 컴포넌트

42,025

60,194

70,362

81,620

87,564

91,144

합계

2,299,984

2,916,331

3,059,231

3,548,708

4,169,732

4,797,050

표 2. 세계 SoC 시장 규모[4](단위: 백만달러)

구분

2003

2004

2005

2006

2007

2008

LSI/SOC ASIC

20,708

26,953

30,427

32,889

37,794

44,209

LSI/SOC ASSP

10,782

12,936

14,346

15,524

17,404

19,768

Total

31,490

39,889

44,773

48,423

55,198

63,977

그리고 reconfigurable HW accelerator의 경우 모바일 기기에서 요구하는 VLC/VLD, DDFS 등의 특수 기능 블록을 SoC로 설계하여 IP 및 특허 등록을 통한 실질적인 경제적 획득의 기반을 마련한다. 이러한 특수 기능 블록에 적합한 표준 채택과 성능 향상을 위한 아키텍처의 최적화로 모바일 기기에 적용, 실용화한다. 결과적으로 고성능 및 저전력 설계 기술 연구를 통한 SoC설계 전문가의 양성은 국가 경제 발전에 이바지할 수 있을 것으로 기대된다.

이런 reconfigurable array architecture SoC를 효과적으로 이용하기 위한 가장 큰 전제 조건은 애플리케이션 코드의 각 연산이 reconfigurable array architecture를 이루고 있는 각각의 processing element(PE)들에 밀도 있게 매핑되어 매 사이클마다 낭비 없이 수행되는 것이다. 이러한 전제 조건이 만족되지 않는다면 유연한 특성은 계속 유지되겠지만 고성능이라는 장점은 살리기 어렵기 때문이다. 따라서 코드 매핑을 얼마나 효율적으로 자동화 할 수 있는 지가 reconfigurable array architecture의 성능을 크게 좌우하는 것이다. 그리고 이것이 reconfigurable array architecture의 상업적 가치의 척도가 된다.

따라서 본 설계 실습 과제에서는 앞서 언급한 설계 기술 뿐 아니라 코드 매핑 기술 그리고 추가적으로 이런 설계 환경에 대한 설계 공간 탐색 기술 등에 대한 복합적인 연구를 통해서 고부가가치를 갖는 reconfigurable array architecture 시스템을 개발할 예정이다.

본 사업에서의 SoarLab의 역할

가. 코드 매핑 자동화 툴 개발

Reconfigurable array architecture는 하드웨어적인 효율성과 소프트웨어적인 유연성을 동시에 갖추고 있지만, 적합한 컴파일러 기술의 부재가 reconfigurable array architecture가 널리 사용되는 것을 저해하고 있다. 특히 이 중에서 애플리케이션의 kernel code를 reconfigurable array architecture에 효과적으로 매핑하는 부분이 문제가 되는데 이는 architecture의 구조적 특징과 각각의 애플리케이션 프로그램의 특성에 따라 다양하고 복잡한 사항들을 고려해야하는 어려움을 안고 있기 때문이다. 그래서 이러한 매핑 문제를 해결하기 위해 애플리케이션의 특성에 따라 크게 temporal 매핑과 spatial 매핑이라는 두 가지 방법으로 나누고 각각의 매핑 알고리즘을 개발하여 자동으로 매핑을 수행하고 실제 HW 시스템에서 수행될 수 있는 이진 코드를 생성해 내는 자동화 툴을 개발한다면 reconfigurable array architecture를 사용하는데 있었던 그동안의 어려움을 해결해 줄 것으로 본다.

이와 더불어 전체 애플리케이션에 대한 분석 및 프로파일링 하는 작업이 필요하며 내장형 마이크로프로세서에서의 수행에 적합한 애플리케이션 코드 최적화 작업을 할 예정이다.

나. 핵심요소 및 접근방법

앞서 제시된 국내외 기술현황에서 알 수 있듯이 reconfigurable array architecture의 핵심 기술은 설계 공간 탐색, 코드 매핑, 하드웨어 chip 설계 기술로 구분할 수 있으며, 결국 각각의 기술에 대한 한계점을 극복하는 방식이 효율적인 접근 방법이라고 볼 수 있다.

설계 공간 탐색 기술의 경우 지금까지 개별적인 DSP 알고리즘에 대한 적용 사례였으며, 전체 애플리케이션에 대한 검증이 부족한 문제점이 있다. 이를 해결하기 위해 개별적인 알고리즘에 대한 검증뿐만 아니라, 전체 애플리케이션 관점에서의 분할, 분석 및 검증을 고려한 설계 공간 탐색 기술에 대한 연구가 필요하다. 또한 코드 매핑 기술의 경우 지금까지의 국내외 연구 동향은 특정 구조에 적용 가능한 컴파일러 및 복잡도가 낮은 알고리즘에 대한 검증만 수행했기 때문에 architecture의 사양이 변경되거나 복잡도가 높은 알고리즘에 대한 적용이 불가능한 단점이 있다. 이를 해결하기 위해 template 기반의 reconfigurable array 구조를 고려한 코드 매핑 기술이 선행되어야 하며, 복잡도가 높은 알고리즘을 처리할 수 있는 자동 매핑 기법에 대한 연구가 필요하다. 하드웨어 chip 설계 기술의 경우 지금까지 구현된 reconfigurable array architecture들은 ASIC 방식의 하드웨어 구현보다 면적소비량이 많고 저전력을 고려한 설계 기술이 미비하다는 점에서 이를 극복하기 위한 접근 방법이 필요하다. 면적소비 문제의 경우 RT-수준에서의 최적화 설계 기술 연구가 필요하며, 전력소비 관점에서는 전력소비 최소화를 위해 상위수준 및 하위수준을 모두 고려한 저전력 설계기술에 대한 연구가 이뤄져야 한다. 또한 reconfigurable HW accelerator를 개발하여 reconfigurable array architecture에서 수행이 어려운 VLC/VLD, DDFS 등의 부분을 효과적으로 처리할 수 있도록 한다. 본 설계 실습 프로젝트 참여 연구실에서는 이미 resource sharing and pipelining을 통한 RAA 최적화 기법[22]을 제안하고, 이를 IDEC MPW를 통해 reconfigurable array architecture SoC chip으로 구현한 실적 및 RAA용 spatial mapping 자동화 알고리즘[23]을 제안한 실적 등을 보유하고 있으므로 위의 연구에 가장 적합한 연구기관이라고 할 수 있다.

코드 매핑의 경우에는 자동화하기 위해 애플리케이션과 아키텍처의 특성에 따라 크게 다음과 같은 두 가지 방식을 적용하려고 한다.

그림 3. Spatial mapping (b) and temporal mapping (c) for processing application code (a).

Temporal 매핑 방식은 위의 그림 3(c)와 같이 하나의 loop body가 reconfigurable array architecture의 일부에만 매핑이 되어 PE들이 매 cycle마다 다른 명령을 수행하게 된다. 따라서 한정된 array 크기 내에서 효율적으로 복잡도가 높은 알고리즘을 구성할 수 있으며 최적의 성능을 기대할 수 있다. 하지만 각 PE상의 configuration cache에 수행에 필요한 모든 configuration들을 저장해야 하고, 각 사이클마다 그러한 configuration이 바뀌어야 하는 오버헤드가 존재한다. 이에 반해 spatial 매핑은 위의 그림 3(b)처럼 reconfigurable array architecture 전체에 loop body가 매핑되므로 각 PE가 타겟 애플리케이션 전체를 수행하는 동안 하나의 일정한 configuration만을 갖기 때문에 temporal 매핑에서 생기는 오버헤드를 줄일 수 있고, 작은 cache를 사용해야 하는 경우에도 매핑이 가능하다는 장점이 있다. 하지만 array 크기 제한으로 인한 성능 저하 및 매핑의 난이도가 증가하는 단점이 있다.

그러므로 실제 특정 애플리케이션이 주어졌을 때 두 방식 중에 어떤 방식을 택하여 매핑하는 것이 효과적인지를 설계 공간 탐색을 통해서 결정하는 것이 필요하다. 이 경우에 template 기반의 GUI 툴 및 simulator가 사용되어 효율적으로 설계 공간 탐색을 수행할 수 있다. 이들이 모두 갖추어질 때 애플리케이션으로부터 자동으로 매핑 코드를 생성하여 reconfigurable array architecture에서 수행할 수 있는 최적의 환경을 구성할 수 있다.

[단계별 추진 체계]

1단계: 자료조사

2단계: 분석 및 프로파일링

3단계:최적화

위의 세 가지 단계는 H.264, AAC 및 3D graphics 모두에 적용하여 수행한다. 애플리케이션을 분석하고 프로파일링하며 최적화시키는 것은 RAA의 사양을 결정하는데 우선시되어야 하는 것이고, 다른 연구실에서도 관련 애플리케이션의 분석결과가 필요하므로 공동 연구를 통해 빠른 시일 내에 해결하는 것이 중요하다. 이를 위해 각 애플리케이션을 분석하는 팀을 구성하도록 한다. 이 연구에 참여하는 연구원들은 일반적으로 각 멀티미디어 코덱 알고리즘에 대한 이해가 부족할 수 있으므로 이에 대한 공부가 필요하며 필요한 경우 관련 수업을 듣거나 IT SoC에서 개설하는 강의를 수강함으로써 이해를 넓힐 수 있다.