Recently, the interest in augmented reality (AR) has been increased with the enhanced capability of the mobile devices. The goal of AR is to combine a real scene viewed by a user and a computer generated scene. Therefore, the AR allows the user to perceive the virtual object as a real object and acquire information in the real world. This AR application spreads on a wide range from entertainment to education and navigation. Due to its convenience and mobile-friendly applications, the AR system is suitable for mobile environment rather than PC platform. However, the restricted computing capability is a major problem in the mobile AR.
Interdisciplinary knowledge is involved in AR, including computer vision for image analysis and computer graphics for image synthesis. Both vision and graphics applications require high computational power, real-time operation, and low power consumption. They also need programmability for wide variety of recognition and rendering targets. To satisfy these requirements, AR processing needs hardware support even in the mobile environment.
Hardware support for graphics processing is relatively simple because many handheld devices have been using graphics hardware. Therefore, recent approaches for mobile graphics processor are useful. To sup-port vision processing, two approaches are available. First, since the vision processing requires high computa-tional power, vision processors have been introduced to deal with complex algorithms. However, it is over-head to incorporate both graphics and vision processors within limited area and power budget. Second, the vision computing on the graphics hardware has been researched recently. They utilized the graphics processing units (GPUs) to expand the computational resources that are available to vision and image processing algorithms. However, these researches focus only on the primitive operations using massively pa-rallel processing architecture of GPU which cannot exploit object- and task-level processing for high level vision algorithms such as object recognition.
In this work, we implement a 3D graphics processor using two unified shaders. Also, we propose a unified vision and graphics processor based on the 3D graphics processor. One of motivations of graphics processor is that graphics characteristics can be exploited to maximize the parallel processing ability within limited silicon area. Another motivation is that vertex transformation capability in vertex processing and power efficient texture operations in pixel processing decide the overall performance and power of the processor. The unified vision and graphics proposed processor of this work incorporates the unified hardware pipeline for vision and graphics, and combines three major components, parallel processors, a pixel arranger (PA), and a pose estimation engine (PEE). The parallel processor contains 8 SIMD linear array PE clusters each of which has 16 PEs, achieving the peak performance of 153.6GOPS. The PA is composed of 127 comparators tree, and it rearranges feature data of preprocessed image. The PEE generates graphics control data from vision processing results and consumes 0.89uW/fps. The chip is fabricated in 0.18um CMOS technology and its processing speed is higher than 60frames/sec with 413mW.
전통적으로 그래픽스 연산은 많은 연산량을 요구하며 연산 특성상 내재된 parallelism 을 이용한 멀티코어 아키텍쳐를 통해 그러한 요구를 만족시키면서 발전되어 왔다. 최근에는 이렇게 강력한 연산능력을 이용하여 다른 멀티미디어 애플리케이션을 지원하거나 물리연산 등을 수행하기 위해 GPGPU 와 관련된 연구가 활발하게 이루어지고 있다. 컴퓨터 비젼의 경우 역시 그래픽스 연산과 마찬가지로 많은 연산량을 필요로 하기 때문에 멀티코어 하드웨어의 도움을 받으려는 연구가 진행되고 있으나 컴퓨터 비젼 알고리즘의 다양성, parallelism 의 부족, 알고리즘의 복잡함 등의 이유로 인해 멀티코어 하드웨어에 그대로 적용하는 것이 쉽지 않다. 최근에 스마트폰의 대중화에 의해 모바일 환경에서 새로운 멀티미디어 애플리케이션에 대한 욕구가 증가하고 있으며 그중에 하나가 증강현실이다. 증강현실은 위의 언급된 그래픽스와 비젼의 연산을 모두 필요로 하는 애플리케이션으로 보다 많은 연산량과 실시간 연산의 성능이 필요로 된다. 따라서 모바일 환경에서 증강현실을 구현하기 위한 성능과 기능성 적인 측면에서의 향상이 크게 요구되고 있다.
본 논문에서는 기존의 연구 결과들이 일반적인 멀티코어 구조, 즉 많은 수의 연산 유닛을 가지고 병렬처리하는 방식, 을 이용하여 성능 향상에 초점을 맞추고 있는데 비해, 그래픽스와 비젼 연산의 특성을 먼저 파악하고, 이를 이용하여 그래픽스와 비젼의 알고리즘을 모두 처리할수 있는 하나의 통합 모델을 제안하며, 이를 통해 통합 모델에서 제안된 연산 파이프라인에 적합한 하드웨어 구조를 제안하였다.
제안하는 그래픽스와 비젼의 통합 프로세서는 병렬처리 프로세스를 위한 단계, 특징점 연산을 위한 단계, 증강현실의 애플리케이션을 위한 디시전 단계의 세 가지 주요 부분으로 구성된다. 병렬처리 프로세서를 위한 단계에서는 데이터와 인스트럭션의 parallelism 을 이용하여 병렬 연산의 효율성을 위해 다중 쓰레딩 방법과 VLIW 방법을 사용하였다. 다중 쓰레딩 방법은 데이터 연산에 따른 hazard 를 피할수 있도록 하며 이는 연산 내에서 데이터 간의 독립성을 이용한 방법이다. VLIW 구조는 여러 인스트럭션 들을 독립적으로 수행할 수 있게 하는 구조로서 VLIW 가 공유하는 연산 유닛의 양이 증가할수록 많은 양의 인스트럭션 들을 동시에 수행할 수 있으며 따라서 성능 향상을 가져오게 된다. 그러나 VLIW 의 병렬 처리 구조에서는 두가지 부담이 존재하게 되는데 첫번째는, 동시에 처리할 수 있는 연산의 독립성에 제한이 있다는 점이고 두번째는, 연산을 수행하기 위해 필요한 많은 수의 연산자를 제공할 때 필요한 메모리의 포트수가 증가하기 때문에 이것이 부담으로 작용한다. 따라서 VLIW 가 제공하는 연산 유닛이 많아지더라도 성능의 향상폭은 점차 줄어들게 된다. 모바일 환경에서는 성능의 향상 뿐만 아니라 면적의 고려도 필요하기 때문에 본 논문에서는 여러가지 VLIW 연산 유닛 수에 따른 면적의 모델링을 수행하였다. 그 결과 같은 양의 연산 유닛이 존재한다고 가정할 때 VLIW 가 제공하는 동시에 처리할 수 있는 인스트럭션의 수가 2개 일때가 그래픽스와 비젼의 알고리즘에 대하여 가장 성능과 면적 면에서 효율적이라는 결과를 얻을 수 있었다. 특징점 연산을 위한 단계에서는 이미지의 일부나 미리 이미지 처리를 통해 구해진 특징점들을 처리하여 하나의 결과 값을 얻기 위한 연산을 수행하는데 본 논문에서는 두가지 특징을 이용하여 효율적인 연산을 수행하였다. 첫번째는 병렬 프로세서의 row 별 연산을 수행할 때 특징점이 하나도 없을 경우 연산을 하지 않을 수 있다는 점이고, 두번째는 이미지의 일부만 특징점이기 때문에 그 수가 상대적으로 적다는 점이다. 기존의 방법에서는 특징점의 수에 상관 없이 모든 픽셀 데이터에 대해 연산을 수행하면서 특징점을 찾아내는 방법을 사용한 반면, 제안된 방법은 미리 특징점만을 찾아내어 그 데이터에 대한 연산만을 수행할 수 있다는 장점이 있다. 또한 기존의 ALU 트리 구조를 혼합하여, 찾아낸 특징점에 대해서도 병렬 처리를 할 수 있도록 하여 연산 시간을 더욱 줄일 수 있도록 하였다. 마지막으로, 증강 현실을 위한 디시전 단계에서는 parallelism 이 전혀 존재하지 않기 때문에 자세 추정 연산을 그대로 VLSI 구현을 하여 빠른 시간내에 특정 알고리즘이 수행될 수 있도록 구현하였다.
결과적으로, 제안하는 그래픽스와 비젼의 통합 프로세서는 병렬 처리 단계에 대해서 기존의 다중 쓰레드의 SIMD 방식에 비해서 1.7 배의 성능 향상을 가져왔으며 기존 칩의 구현결과와 대비하여 31% 의 에너지 효율을 높일 수 있었다. 특징점 처리 단계에 대해서는 전체 칩의 면적 대비 5.5% 의 하드웨어 추가로 기존의 병렬 처리 구조만을 이용했을 때에 대비 6.2 배의 빠른 연산 결과를 얻을 수 있었다. 또한 추가로 ALU 트리 구조를 혼합하여 병렬처리를 도왔을 경우 전체 칩의 면적 대비 7.8% 의 하드웨어 추가로 기존의 구조에 추가 하여 3.4배 추가의 성능 향상의 결과를 얻을 수 있었다. 이런 방법들을 통해 증강 현실 전체의 알고리즘 구현에 대해 VGA 이미지 사이즈에 대해 88.7 fps 의 결과를 얻을 수 있게 되었으며 이는 스마트 폰의 resolution 이 증가하는 경우를 가정해 볼 때 실시간 연산의 성능으로서 적합함을 알 수 있다.
본 연구 결과는 칩으로 구현되었다. 구현된 칩은 제안하는 통합 프로세서의 병렬 처리 단계, 특징점 처리단계, 자세추정 엔진등을 포함하여 0.94M 의 트랜지스터를 가지며 5x5.75mm2 의 칩 사이즈를 가지고 있으며 1.8V 1P5M 0.18$\mu$m 공정에서 제작되었다. 이 칩은 병렬 처리 단계에 대해서는 200Mhz 의 동작 주파수를 가지며 나머지 부분에 대해서는 100Mhz 의 동작 주파수를 가진다.