그래픽 프로세서의 발달로 실사 수준의 고품질 컴퓨터 그래픽은 여러 분야에 다양한 용도로 사용되고 있으며, 그래픽 프로세서의 핵심 중 하나인 셰이더 프로세서는 프로그램 가능한 통합 셰이더로 발전하였다. 그러나 현재의 상용 그래픽 프로세서들은 특정한 알고리즘에 최적화되어 있어 다양한 알고리즘의 개발을 위해서는 독립적인 셰이더 프로세서가 필요하다. 본 논문에서는 프로그래머블 통합 셰이더 프로세서에서 DirectX 셰이더 어셈블리 명령어를 수행할 수 있는 고성능 3차원 컴퓨터 그래픽 영상을 지원하기 위한 제어 유닛을 설계하고 구현하였다. 설계한 제어 유닛은 기능적 레벨에서 시뮬레이션을 통하여 그 성능을 검증 하였으며, FPGA Virtex-4에 구현하여 하드웨어 리소스 사용율을 확인하고 ASIC 라이브러리를 적용하여 동작속도를 확인 하였다. 또한 비슷한 기능을 하는 셰이더 프로세서에 비해 약 1.5배 정도 많은 수의 명령어를 지원하며, 사용하는 연산 유닛 수에 비해 전체적인 성능은 약 3.1GFLOPS 향상된 결과를 보였다.
그래픽 프로세서의 발달로 실사 수준의 고품질 컴퓨터 그래픽은 여러 분야에 다양한 용도로 사용되고 있으며, 그래픽 프로세서의 핵심 중 하나인 셰이더 프로세서는 프로그램 가능한 통합 셰이더로 발전하였다. 그러나 현재의 상용 그래픽 프로세서들은 특정한 알고리즘에 최적화되어 있어 다양한 알고리즘의 개발을 위해서는 독립적인 셰이더 프로세서가 필요하다. 본 논문에서는 프로그래머블 통합 셰이더 프로세서에서 DirectX 셰이더 어셈블리 명령어를 수행할 수 있는 고성능 3차원 컴퓨터 그래픽 영상을 지원하기 위한 제어 유닛을 설계하고 구현하였다. 설계한 제어 유닛은 기능적 레벨에서 시뮬레이션을 통하여 그 성능을 검증 하였으며, FPGA Virtex-4에 구현하여 하드웨어 리소스 사용율을 확인하고 ASIC 라이브러리를 적용하여 동작속도를 확인 하였다. 또한 비슷한 기능을 하는 셰이더 프로세서에 비해 약 1.5배 정도 많은 수의 명령어를 지원하며, 사용하는 연산 유닛 수에 비해 전체적인 성능은 약 3.1GFLOPS 향상된 결과를 보였다.
Real picture like high quality computer graphic is widely used in various fields and shader processor, a key part of a graphic processor, has been advanced to programmable unified shader. However, The existing graphic processors have been optimized to commercial algorithms, so development of an algo...
Real picture like high quality computer graphic is widely used in various fields and shader processor, a key part of a graphic processor, has been advanced to programmable unified shader. However, The existing graphic processors have been optimized to commercial algorithms, so development of an algorithm which is not based on it requires an independent shader processor. In this paper, we have designed and implemented a control unit to support high quality 3 dimensional computer graphic image on programmable integrated shader processor. We have done evaluation through functional level simulation of designed control unit. Hardware resource usage rate are measured by implementing directly on FPGA Virtex-4 and execution speed are verified by applying ASIC library. the result of an evaluation shows that the control unit has the commands more about 1.5 times compared to the other shader processors that is a behavior similar to the control unit and with a number of processing units used in a shader processor, compared with the other processors, overall performance of the control unit is improved about 3.1 GFLOPS.
Real picture like high quality computer graphic is widely used in various fields and shader processor, a key part of a graphic processor, has been advanced to programmable unified shader. However, The existing graphic processors have been optimized to commercial algorithms, so development of an algorithm which is not based on it requires an independent shader processor. In this paper, we have designed and implemented a control unit to support high quality 3 dimensional computer graphic image on programmable integrated shader processor. We have done evaluation through functional level simulation of designed control unit. Hardware resource usage rate are measured by implementing directly on FPGA Virtex-4 and execution speed are verified by applying ASIC library. the result of an evaluation shows that the control unit has the commands more about 1.5 times compared to the other shader processors that is a behavior similar to the control unit and with a number of processing units used in a shader processor, compared with the other processors, overall performance of the control unit is improved about 3.1 GFLOPS.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
디코더 모듈의 주된 기능 중 하나는 입력 레지스터들에 대한 의존성을 검사하는 것이다. 즉, 입력으로 사용된 레지스터가 이전의 명령에 의해 사용되고 있는 목적지 레지스터이면 RAW 의존성(read after write dependency)이 있는 것으로, 이슈 모듈은 해당하는 레지스터의 값이 생성된 후에 사용해야 한다.
본 논문에서는 그래픽 처리의 핵심적인 기능을 담당하는 DirectX의 셰이더 명령을 하드웨어에서 직접 수행할 수 있도록 프로그래머블 통합 셰이더 프로세서를 위한 제어 유닛을 설계하였다.
즉, 명령어 사이에 존재하는 데이터간의 의존성(dependency)에 의해 비정상적인 결과가 발생할 수 있다. 이러한 의존성을 해결하기 위해 본 논문에서는 레지스터의 사용 가능성을 검사 할 수 있도록 레지스터들의 상태를 표시하고 관리하는 레지스터 상태 테이블을 구성하였다.
제안 방법
본 논문에서 구현한 제어 유닛은 Xilinx 사의 FPGA 중 Virtex4 계열의 XC4VLX200을 사용하였고 입력 클럭 90MHz에 동작한다. 다른 유닛들에 비해 상대적으로 복잡하고 유기적인 구조를 갖는 제어 유닛은 하나의 동작 레벨 코딩을 통하여 구현하고 이를 시뮬레이션을 통하여 검증하였다. 또한 ASIC으로 구현하였을 때의 성능을 평가하기 위하여 제어 유닛을 구성하는 여러 모듈중 크리티컬 패스(critical path)를 가지고 있는 이슈 유닛에 대하여 SMIC사의 0.
디코더 모듈은 패치 모듈에서 전달받은 명령어 코드, 목적지 레지스터, 소스 레지스터 0, 1, 2의 정보에 대해 그 내용을 분석하여 연산 유닛의 타입을 결정하고 결정된 연산 유닛의 이슈 모듈 상태와 사용되는 레지스터 상태를 점검하여 명령어의 전달이 가능하면 이슈 모듈과 연산 유닛에서 필요한 제어 신호를 생성하여 그 정보를 이슈 모듈로 보내 해당하는 연산을 수행하도록 한다.
따라서 본 논문에서는 연산 유닛의 앞단에 두 개의 이슈 모듈을 구성하여 비교적 복잡도가 낮으면서 비순차 이슈가 가능한 구조를 선택하였다. 설계된 이슈 모듈의 순서도는 그림 7과 같다.
프로세서의 이진 코드를 생성하는데 있어 DirectX에 있는 이진 코드를 사용하는 것도 하나의 방법이 될 수 있으나, 이는 실질적으로 프로세서에서 필요한 이진 코드에 비해 길기 때문에 하드웨어적인 최적화가 필요한 프로세서 구조에는 적합하지 않다. 따라서 본 논문에서는 이진 코드를 DirectX 의 정점 셰이더와 픽셀 셰이더 명령어를 참조하여 제안하는 마이크로 아키텍처에 맞도록 단순화시켜 구성하였다.
그러나 이렇게 기본 명령어를 이용하여 조합 명령어를 수행하기 위해서는 계산의 중간 과정을 저장할 별도의 버퍼가 필요하게 된다. 따라서 조합 명령어를 수행하기 위해서 임시 레지스터와 같은 기능을 하는 별도의 레지스터를 추가하여 임시 레지스터를 확장하고 조합 명령어의 처리는 이 레지스터를 사용하도록 하였다. 확장된 레지스터는 임시 레지스터와 동일한 구조를 가지며 디코더 모듈 및 레지스터 상태 테이블 외의 다른 유닛에서도 임시 레지스터와 동일하게 취급된다.
또한 ASIC으로 구현하였을 때의 성능을 평가하기 위하여 제어 유닛을 구성하는 여러 모듈중 크리티컬 패스(critical path)를 가지고 있는 이슈 유닛에 대하여 SMIC사의 0.18μm ASIC 라이브러리를 적용하여 배치 및 배선을 하였다.
본 논문에서 구현한 제어 유닛은 성능 평가를 위하여 2개의 ALU와 1개의 SFU로 구성된 2ALU/1SFU 구조와 3ALU/1SFU, 3ALU/2SFU, 4ALU/1SFU, 4ALU/2SFU, 5ALU/1SFU의 6가지 구조에 대하여 성능을 측정하였다. 또한 각 구조에 대해 벡터 크기를 16, 32, 64, 128로 하여 성능을 측정하였으며, 입력 픽셀의 수는 320, 1600, 3200, 16000, 32000에 대하여 성능의 변화를 측정하였다. 셰이더 프로세서의 성능 평가의 지표가 되는 가장 핵심적인 항목은 IPC(Instruction Per Clock)이다.
설계된 결과는 기능적 시뮬레이션을 통하여 동작을 검증하였으며 FPGA Virtex-4에 구현하여, 최적화된 하드웨어 리소스의 사용율과 성능을 확인하였다. 또한 여러 가지 프로세서와 비교하여 설계된 기법에 대한 성능을 분석하였다.
AMD(3DNOW!)는 간단한 벡터 명령어를 지원하지만 이는 다양한 벡터 명령어를 지원하는 것은 아니며, ATTILA 프로젝트는 설계된 셰이더 프로세서와 유사하게 벡터 방식의 셰이더 프로세서에 관한 연구를 진행하고 있지만 현재 소프트웨어 시뮬레이션 모델만이 완성되어있는 상태이다. 반면 통합 셰이더 프로세서를 위해 본 논문에서 구현된 제어 유닛은 모든 명령어들에 대해 벡터 처리가 가능한 구조이며 구현 및 검증이 이루어졌다.
벡터 처리가 불가능한 제어문의 처리를 위하여 본 논문에서는 셰이더 프로세서를 기본적인 벡터 처리 이외에 스칼라 모드로 동작할 수 있도록 설계하였고, 스칼라 처리를 위하여 스칼라 모드의 시작과 끝을 알리는 명령어를 추가하였다. 셰이더 프로세서가 스칼라 모드 시작 명령을 만나면 번들의 번호를 하나로 고정시킨 후 지정된 구간의 명령어를 연속적으로 실행하고, 스칼라 모드 끝 명령어를 만나게 되는 경우, 다음에 처리할 번들의 번호를 확인하여 벡터 내의 모든 번들에 대한 처리가 끝났으면 다음 명령어로 진행하고, 그렇지 않으면 다시 스칼라 모드 시작 명령 다음부터 명령어들을 수행하는 동작을 반복한다.
본 논문에서 구현한 제어 유닛은 성능 평가를 위하여 2개의 ALU와 1개의 SFU로 구성된 2ALU/1SFU 구조와 3ALU/1SFU, 3ALU/2SFU, 4ALU/1SFU, 4ALU/2SFU, 5ALU/1SFU의 6가지 구조에 대하여 성능을 측정하였다. 또한 각 구조에 대해 벡터 크기를 16, 32, 64, 128로 하여 성능을 측정하였으며, 입력 픽셀의 수는 320, 1600, 3200, 16000, 32000에 대하여 성능의 변화를 측정하였다.
설계된 제어 유닛은 데이터 레벨 병렬성을 고려하여 필요한 모든 데이터에 대하여 네 개의 단정도 부동소수점(IEEE 754) 입력을 병렬로 처리할 수 있는 SIMD(Single Instruction Multiple Data) 구조이며 모든 명령어는 네 개의 입력 데이터를 처리할 수 있다. 또한 하나의 명령어에 의해 정해진 크기의 연속된 데이터를 처리하며 이를 위해 모든 구성 요소들은 벡터 처리에 적합하게 설계된다.
IPC는 프로시저를 수행하며 실행한 명령어의 수를 소요된 클럭의 수로 나누어 얻을 수 있다. 설계한 셰이더 프로세서는 벡터 방식의 처리를 하므로 전체 실행된 명령어의 수는 프로시저를 실행하며 수행된 명령어의 수에 처리된 픽셀의 수를 곱하였고, 프로시저 실행에 소요된 클럭은 첫 번째 명령어를 시작하여 최종적인 결과의 쓰기가 끝나는 시점까지의 클럭을 사용하였다.
즉, 해당 연산 유닛에서 필요한 레지스터 오프셋에 대한 결과는 나오고 있지만 첫 번째 번들은 지나간 상태인 것으로 이때는 RAW(Read After Write) 해저드가 해결되어 필요한 내용은 레지스터 파일에 들어있고 레지스터 파일에서 값을 읽어 사용할 수 있다. 소스 레지스터의 의존성 해결을 검사하는 데 있어 이슈 모듈은 필요한 소스 레지스터의 번들 번호, 오프셋 정보를 참조하여 소스 레지스터에서 실제로 사용되는 요소에 대해서만 사용 가능 여부를 판단한다. 이는 다른 유닛에서 하나의 소스 레지스터 내의 네 개의 요소에 대하여 마치 개별 레지스터로 간주하여 처리하는 것과 같다.
이슈 모듈은 전달받은 명령어의 소스 레지스터들이 모두 사용 가능하고 자신이 연산 유닛으로 데이터를 전달할 수 있는 상태가 되면 레지스터 파일 또는 연산 유닛과 연결된 데이터 버스에서 소스 레지스터의 값을 읽어 이를 제어 정보와 함께 연산 유닛에 전달하여 명령어가 수행되도록 한다. 연산 유닛은 ALU(Arithmetic Logic Unit)와 SFU(Special Function Unit)로 나누고, 4개의 IEEE 754 입력에 대하여 병렬로 필요한 연산을 수행할 수 있는 구조로 되어있으며, 이슈 유닛으로부터 필요한 컨트롤 정보와 데이터를 받아 연산을 수행한 후 그 결과를 목적지 레지스터에 쓰기 위한 신호를 생성한다. 마지막으로 레지스터 파일 구조는 필요한 레지스터들에 대해서 번들의 개수만큼 다중화 되어 벡터 연산을 수행할 수 있도록 하였고, 입출력 레지스터의 경우 다시 이중 버퍼 구조로 하여 명령어를 수행함과 동시에 호스트에서는 처리가 완료된 결과를 읽어가고 다음에 처리할 데이터를 준비할 수 있도록 하였다.
프로그래머블 통합 셰이더 프로세서는 파이프라인과 병렬처리의 장점을 모은 것으로, SIMD 및 벡터 프로세서 구조를 적용하여 설계하였다.
대상 데이터
본 논문에서 구현한 제어 유닛은 Xilinx 사의 FPGA 중 Virtex4 계열의 XC4VLX200을 사용하였고 입력 클럭 90MHz에 동작한다. 다른 유닛들에 비해 상대적으로 복잡하고 유기적인 구조를 갖는 제어 유닛은 하나의 동작 레벨 코딩을 통하여 구현하고 이를 시뮬레이션을 통하여 검증하였다.
데이터처리
본 논문에서 구현된 모든 구조는 HDL(Hardware Description Language) 언어를 사용하여 기술하였으며, Xilinx사의 ISE 9.2 프로그램을 사용하여 합성한 후, Mentor Graphics사의 ModelSim 6.0 SE를 이용하여 동작 검증을 하였다.
설계된 결과는 기능적 시뮬레이션을 통하여 동작을 검증하였으며 FPGA Virtex-4에 구현하여, 최적화된 하드웨어 리소스의 사용율과 성능을 확인하였다. 또한 여러 가지 프로세서와 비교하여 설계된 기법에 대한 성능을 분석하였다.
성능/효과
[12∼13] 이러한 결과를 보았을 때 셰이더 프로세서를 지원하기 위해 본 논문에서 구현한 제어 유닛은 비슷한 기능을 하는 셰이더 프로세서에 비해 약 1.5배 정도 많은 수의 명령어를 지원하며 사용하는 연산 유닛의 수에 비해 전체적인 성능은 약 3.1GFLOPS 만큼 성능이 향상되었다.
18μm ASIC 라이브러리를 적용하여 배치 및 배선을 하였다. 그 결과 제안된 셰이더 프로세서의 동작 속도는 227MHz이며 벡터 크기 128에서 3.7GFLOPS(GPU FLoating point Operations Per Second)의 성능을 보인다. 표 2는 연산 유닛의 설계 구조에 따른 모듈별 슬라이스 사용량을 나타낸 것이다.
연산 유닛은 ALU(Arithmetic Logic Unit)와 SFU(Special Function Unit)로 나누고, 4개의 IEEE 754 입력에 대하여 병렬로 필요한 연산을 수행할 수 있는 구조로 되어있으며, 이슈 유닛으로부터 필요한 컨트롤 정보와 데이터를 받아 연산을 수행한 후 그 결과를 목적지 레지스터에 쓰기 위한 신호를 생성한다. 마지막으로 레지스터 파일 구조는 필요한 레지스터들에 대해서 번들의 개수만큼 다중화 되어 벡터 연산을 수행할 수 있도록 하였고, 입출력 레지스터의 경우 다시 이중 버퍼 구조로 하여 명령어를 수행함과 동시에 호스트에서는 처리가 완료된 결과를 읽어가고 다음에 처리할 데이터를 준비할 수 있도록 하였다.
이상과 같은 비교를 종합하였을 때 본 논문에서 구현된 제어 유닛은 동급의 셰이더 프로세서에 비해 많은 수의 명령어를 지원하며 사용하는 연산 유닛의 수에 비해 전체적인 성능도 우수하다.
후속연구
통합 셰이더 프로세서를 위해 본 논문에서 구현한 제어 유닛은 SIMD 방식으로 데이터 처리가 가능한 다중 연산 유닛을 갖는 비순차 이슈 방식의 벡터 프로세서를 지원한다. 또한 단일 프로세서로서 우수한 성능을 나타내므로 기존의 상용 그래픽 프로세서를 사용하여 연구하기 어려운 전역 조명 등의 그래픽 처리 알고리즘 개발에 필요한 셰이더 프로세서로 사용될 수 있으며, DSP 코어, 수치 해석 등 다양한 분야에 유용하게 사용될 수 있다.
향후 연구과제로는 상대적으로 높은 하드웨어 면적과 동작 속도를 차지하는 이슈 모듈의 패스를 줄이기 위한 방안 및 제어로직의 최적화, 대용량의 데이터 저장을 위한 메모리의 확장, 높은 동작 주파수를 얻기 위한 ASIC의 제작 및 다중 셰이더 프로세서에 관한 연구가 함께 이루어져야 할 것이다.
질의응답
핵심어
질문
논문에서 추출한 답변
3차원 컴퓨터 그래픽이란?
3차원 컴퓨터 그래픽이란 대상으로 하는 공간을 3차원의 기하학적 정보로써 모델링 하고, 이 정보를 사용자의 시점을 기준으로 변환하여 컴퓨터의 평면 디스플레이 장치에 보여주는 것이다. 영상의 품질은 모델링과 렌더링 과정의 우수함에 따라 좌우되며, 실시간성은 렌더링 과정에서 소요되는 시간에 따라 결정된다.
영상의 품질은 무엇에 따라 좌우되는가?
3차원 컴퓨터 그래픽이란 대상으로 하는 공간을 3차원의 기하학적 정보로써 모델링 하고, 이 정보를 사용자의 시점을 기준으로 변환하여 컴퓨터의 평면 디스플레이 장치에 보여주는 것이다. 영상의 품질은 모델링과 렌더링 과정의 우수함에 따라 좌우되며, 실시간성은 렌더링 과정에서 소요되는 시간에 따라 결정된다. 기본적인 렌더링 요소는 일반적으로 점, 선, 삼각형으로 구성된다.
렌더링에서 데이터를 효율적으로 처리하기 위해 파이프라인 형태로 구성되는데 이는 어떻게 동작하는가?
렌더링은 데이터를 효율적으로 처리하기 위해 그림 1과 같이 파이프라인(pipeline)형태로 구성되며, 이 파이프라인은 그래픽스 파이프라인(graphics pipeline)이라고 불린다. 즉, 데이터 처리를 독립적으로 할 수 있도록 응용, 기하, 레스터화(rasterization)의 세 단계로 모듈화되어 데이터가 병렬처리 된다.[9]
참고문헌 (15)
A. Watt, "3D Computer Graphics Third Edition", ADDISON WESLEY, 2000.
W. K. Jeong, "A SIMD-DSP/FPU for High-Performance Embedded Microprocessors", Phd Thesis, Yonsei University, Dec. 2002.
B. Atabek and A. Kimar, "Implementability of Shading Models for Current Game Engines", ICCES, pp. 427-432, 2008.
K. Chung, C. Yu, D. Kim, and L. Kim, "Tessellation-Enabled Shader for a Bandwidth-Limited 3D Graphics Engine", IEEE CICC, pp. 367-370, 2008.
Foley, van Dam. Feiner, Hughes, Computer Graphics Principle and Practice, Addison & Wesley, 1996.
J. L. Hennessy and D. A. Patterson, "Computer Architecture, A Quantitative Approach, Fourth Edition", Elsevier, Sep. 2006.
T. A. Moller and E. Haines, "Real-Time Rendering", A. K. Peters, 2002.
B. Gooch and A. Gooch, "Non-Photorealistic Rendering", A. K. Peters, Natick, MA, 2001.
J. Jeong, "A Proposal of 3D Graphics Rendering Hardware Using Parallel Processing", Master Thesis, Yonsei University, Dec. 2001.
B. Khailany, "Imagine: Media Processing with Streams", IEEE Micro, vol. 21, no. 2, pp. 35-46, Mar. 2001.
I. Buck, et al., "Brook for GPUs: Stream Computing on Graphics Hardware", in proceedings of ACM SIGGRAPH, 2004.
V. Moya, C. Gonzalez, J. Roca, A. Fernandez, and R. Espasa, "Shader Performance Analysis On a Modern GPU Architecture," in proceedings of the 38th annual IEEE/ACM International Symposium on Microarchitecuture(MICRO`05), pp. 355-364, Nov. 2005.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.