ISE 디자인 툴을 이용한 FPGA 전력 최적화 ISE 디자인 툴을 이용한 FPGA 전력 최적화
관리자 2008-02-01 18:54:18

이 글에서 논의하고 있는 P&R의 최적화 목적은 인터커넥트 패브릭에서 전력소모를 절감하기 위한 것이다. 효과적인 전력소모 절감을 위해 Xilinx ISE 소프트웨어 버전 9.2i에 통합되어 있는 것과 같은 CAD(Computer-Aided Design) 기법을 이용한 애플리케이션을 기술하고자 한다. 새로운 전력 구동 백엔드 플로우를 통해 버텍스-4, 버텍스-5, 스파르탄-3 설계의 전력소모를 절감시킬 수 있다.글│수보드 굽타(Subodh Gupta) 박사, 디자인 소프트웨어 부문, 자일링스

자일링스가 처음으로 FPGA를 고안한 지 벌써 20년이 지났다. 그 동안 지속적인 연구개발을 토대로 FPGA의 속도 및 면적 효율성은 획기적으로 향상되었으며, ASIC과의 격차도 근소하게 좁혀지면서 FPGA는 디지털 회로를 구현하기 위한 플랫폼의 대안이 되었다.

최근에는 전력 소모가 FPGA 공급업체 및 고객들에게 중요한 관심사로 대두되면서 FPGA의 전력소모 절감이 관심을 모으고 있다. FPGA의 전력소모 절감은 패키징과 냉각 비용을 감소시키고, 디바이스의 신뢰성을 향상시켜 모바일 전자제품과 같은 새로운 시장을 개척해 나가는데 있어 핵심 요인으로 작용한다.

자일링스는 저전력 FPGA 솔루션 분야의 선도주자이다. 이 글에서는 효과적인 전력소모 절감을 위해 Xilinx ISE 소프트웨어 버전 9.2i에 통합되어 있는 것과 같은 CAD(Computer-Aided Design) 기법을 이용한 애플리케이션을 기술하고자 한다.

CMOS 회로의 전력 소모는 정적(누설) 전력과 동적 전력으로 이루어 진다. 동적 전력은 회로의 신호가 트랜지션 됨으로써 발생하며, 다음과 같은 공식으로 결정된다:

여기서 Ci는 신호 i의 커패시턴스를 나타내며, fi는 `스위칭 동작`으로서 신호 i에 대한 트랜지션 비율이고, V는 공급 전압이다.

반면, 정적 전력은 회로가 정지 상태일 때 소모된다. 정적 전력은 오프 트랜지스터에서 발생되는 누설전류로 주로 서브-임계(Sub-Threshold) 및 게이트-산화 누설로 인해 초래된다. 오프-MOS 트랜지스터는 드레인 및 소스 터미널 사이에 서브-임계 누설 전류를 발생시키는 불완전한 인슐레이터이며, 게이트-산화 누설전류는 트랜지스터의 바디, 드레인, 소스의 게이트 터미널을 통해 전류가 터널링됨으로써 발생한다.

최근 65nm 공정과 같이 기술 스케일링은 더욱 낮은 공급전압과 더욱 적은 트랜지스터 크기로 이동하고 있으며, 이는 더욱 짧은 와이어 길이, 더욱 적은 커패시턴스 및 동적 전력의 전반적인 감소를 가져오고 있다. 보다 미세공정으로 이동하면서 트랜지스터 채널 길이는 더욱 짧아지고 있으며, 게이트 산화막은 더 얇아지고, 기술 스케일링처럼 정적 전력은 증가하고 있다.

FPGA의 전력소모

FPGA의 프로그래머블 특성과 유연성은 주어진 로직 회로를 구현하는데 있어 커스텀 ASIC보다는 전력 면에서 효율이 낮다. FPGA 컨피규레이션 회로 및 컨피규레이션 메모리는 상당한 실리콘 면적을 차지하며, 보다 긴 와이어 길이와 높은 인터커넥트 커패시턴스를 필요로 한다.

또한 프로그래머블 라우팅 스위치는 FPGA 인터커넥트 상의 사전 패브릭된 메탈 와이어 세그먼트에 부착되어 있기 때문에 신호로 인해 초래되는 커패시티브 부하가 추가로 발생한다.

FPGA에서 대부분의 동적 전력은 프로그래머블 라우팅 패브릭에서 소모되며, 정적 전력은 총 트랜지스터 폭과 비례한다. 인터커넥트는 상당한 양의 FPGA 트랜지스터로 이루어지는데 이를 통해 누설전류를 조절할 수 있다. 따라서 인터커넥트 패브릭은 FPGA 전력 최적화를 이루는데 있어 가장 핵심적인 영역이 된다.

분명한 사실은 전력은 공정 기술과 하드웨어 아키텍처 혹은 회로 레벨의 변경을 통해 해결될 수 있다는 점이다. 버텍스-5(Virtex-5) FPGA는 `대각선 형태`의 인터커넥트 리소스를 포함하고 있는데, 이는 커넥션을 보다 적은 라우팅 컨덕터로 구성할 수 있으며, 인터커넥트 커패시턴스를 감소시킬 수 있다.

또한 트랜지스터 레벨에서 버텍스-4 및 버텍스-5 FPGA는 누설전류를 줄이기 위해 3중 산화물 공정 기술을 채택하고 있다. 속도, 전력, 안정성 요건에 따라 각각의 트랜지스터를 3가지 형태의 산화물 두께로 구성하여 이용할 수 있다. DSP 및 프로세서와 같은 하드 IP 블록을 사용하는 것도 전력소모를 줄일 수 있는 또 하나의 방법이다.

한편 비용 부담이 큰 하드웨어를 변경하지 않고도 전력을 감소시킬 수 있는 방법이 있다. ISE 9.2i 소프트웨어에서 제공하는 새로운 전력 구동 CAD 알고리즘과 설계 플로우를 통해 전력 문제를 해결할 수 있다.

ISE 9.2i 설계 툴의 전력 최적화 방법

ISE 소프트웨어 버전 9.2i는 로직 블록 내에서 전력을 감소시키는 포스트-라우팅 기법을 비롯해 배치, 라우팅 상에서의 전력 최적화 방안을 통합하고 있다.

배치(Placement)

자일링스 플레이서(Placer)의 핵심 알고리즘은 분석적인(수학적) 기법을 사용하고 있다. 이것은 설계 초기에 중복 배치로 시작한 다음, 과밀 지역에서 로직 블록을 이동시킬 수 있는 강제적 분리(Force Abstraction) 기능을 사용한 뒤 궁극적으로는 실행 가능한 오버랩-프리 배치를 생성한다.

일단 분석적인 배치가 완료되면, 스왑 기반(Swap-Based)의 로컬 최적화 동작을 통해 배치된 설계를 보다 세밀하게 정렬시킨다. 자일링스의 플레이서에서 사용되는 전통적인 코스트(Cost) 함수는 다음과 같은 공식으로 와이어 길이와 타이밍을 고려한다:

Cost = a W + b T

여기에서 W와 T는 각각 와이어 길이 및 타이밍 코스트이며, a와 b는 스칼라 무게이다. a와 b의 값은 타이밍 대 와이어 길이의 상대적 우선순위에 따라 설정될 수 있다. 플레이서 코스트 구조는 그림 1에 제시되어 있다.

실제 라우팅은 배치 동안에는 이루어질 수 없기 때문에 와이어 길이에 대한 코스트는 추정된 와이어 길이를 기반으로 한다. 타이밍 코스트 또한 사용자가 설정한 제약조건과 추정되는 커넥션 지연을 기반으로 한다.

전력을 최적화하기 위해, 자일링스는 그림 1의 오른쪽에서 보듯이 코스트 함수에 전력 요소를 추가함으로써 분석적 배치 및 로컬 최적화를 확장했다. 수정된 코스트 함수는 다음과 같다:

Cost = a × W + b × T + c × Pdynamic

여기에서 Pdynamic은 추정 동적 전력(사전 정의된)이며, c는 스칼라 무게이다. 여러분은 시뮬레이션을 통해 신호 스위칭 동작 데이터를 추출할 수 있으며, 이것을 툴에 공급할 수 있다. 만약 스위칭 동작 데이터를 제공하지 않는다면, 툴은 주요 입력값과 순차적인 출력을 위해 디폴트 스위칭 동작을 가정하게 되며, 나머지 신호에 대한 동작은 지연시키고, 로직 기능을 고려한다. 최상의 결과를 얻기 위해서는 사용자가 제공하는 스위칭 동작 데이터가 필요하다.

배치가 이루어지는 동안에는 신호의 커패시턴스를 알 수 없기 때문에 예측해야만 한다. 우리는 배치가 이루어지는 동안에 이용 가능한 신호 파라미터를 기반으로 예측 모델을 세우고 경험을 기초로 커패시턴스를 추정했다:

Ci = f(FOi, XSi, YSi)

여기에서 f는 일반적인 수학 함수를 나타내며, Ci는 신호 i의 커패시턴스, FOi는 신호 i의 팬아웃 수이다. 각각의 배치에서 XSi는 신호 i의 X-스팬(Span)이며, YSi는 신호 i의 Y-스팬이다. 이러한 파라미터들은 아키텍처와는 독립적으로 배치가 이루어지는 동안에도 쉽게 이용할 수 있다.

모델을 구현하기 위해 자일링스 고객들을 통해 수집한 설계 사례에서 각각의 신호에 대한 커패시턴스, 팬아웃 수, X-스팬, Y-스팬을 추출했다. 이 때 최소한의 스퀘어 복귀 분석을 사용해 모델 파라미터의 2차 함수로 커패시턴스를 맞췄다. 이 분석적 공식은 여러 설계에서 평균적으로 30% 오류가 발생했다.

라우팅

일단 로직 블록을 FPGA상의 물리적 위치에 할당하고 나면, 블록 간의 커넥션을 라우팅해야 한다. 이 라우터는 조율된 밀집-라우팅(Congestion-Routing) 알고리즘을 사용하며, 초기의 반복작업 동안에는 신호 간의 단락이 허용된다. 이후의 반복작업에서는 라우팅 컨덕터를 하나 이상의 신호에서 사용하지 않을 때까지 단락 발생 패널티가 증가한다.

타이밍이 중요한 커넥션의 경우에는 연산방식의 집중적인 RC 지연 계산을 통해 지연을 최소화하도록 라우팅한다. 하지만 대부분의 커넥션은 타이밍에 민감하지 않다.

전력 인식 라우터는 이렇듯 타이밍에 덜 민감한 커넥션의 커패시턴스를 최적화하기 위해 사용된다. 이를 위해 타이밍이 중요하지 않은 커넥션은 라우터의 코스트 함수를 변경시켜 커패시턴스를 고려한다. 이것은 예측된 지연이나 결함과 같은 다른 요소들을 코스트의 기본요소로 접근하는 1차적인 방식과 상반된다. 알고리즘을 설명하기 위해 그림 2에 라우팅 그래프를 나타내었다.


그래프의 각각의 노드는 라우팅 컨덕터나 로직 블록 핀을 나타내며, 각 에지는 프로그래머블 라우팅 스위치를 나타낸다. 이 라우터는 소스와 타겟 핀 간의 경로를 선택해야 한다. 각 노드의 오리지널 코스트 및 커패시턴스 코스트는 그림 상의 노드에 표시된 숫자들로 나타나 있다.

오리지널 코스트를 최소화하기 위해서 소스 및 타겟 핀 간의 라우팅은 파란색 선으로 나타난 경로를 채택하게 된다. 그러나 전력 인식 플로우에서 이 라우터는 녹색 선으로 이루어진 경로를 사용하게 될 것이다. 이를 통해 전체 커패시턴스를 낮출 수 있다.

전력 인식 P&R 결과

일련의 산업 설계에서는 전통적인 P&R 플로우와 위에서 기술한 전력 플로우를 모두 사용하여 배치 및 라우팅을 처리한다. 이러한 설계에서는 LFSR (Linear Feedback Shift Register) 기반 Pseudo-Random 벡터 제너레이터를 1차측 입력에 적용해 통합 자동 입력 벡터 생성 기능을 확대시킨다. 이를 통해 외부에 적용되는 대규모 파형을 요구하지 않고도 보드 레벨의 동적 전력 측정을 수행할 수 있다.

이러한 산업용 설계를 스파르탄-3, 버텍스-4, 버텍스-5 디바이스에 매핑했다. 그 결과 동적 전력이 스파르탄-3 FPGA의 경우 14% 감소되었고, 버텍스-4 FPGA는 11%, 버텍스-5 FPGA는 12% 감소되는 것으로 나타났다. 평균적으로 모든 설계에서 동적 전력은 스파르탄-3 FPGA의 경우 12% 감소되었으며, 버텍스-4 FPGA는 5%, 버텍스-5 FPGA는 7%까지 감소되었다.

모든 제품군의 평균적인 속도 성능은 3%에서 4% 사이로 작았으며, 이는 전력 인식 설계에 충분히 적용될 수 있을 것으로 보인다. 또한 이러한 것들이 단지 소프트웨어 변경을 통한 초기 결과라고 했을 때, 전력 상의 이점은 상당히 고무적인 것으로 평가된다.

로직 블록 내에서 전력 감소

이 글에서 논의하고 있는 P&R의 최적화 목적은 인터커넥트 패브릭에서 전력을 낮추기 위한 것이다. 우리는 모든 LUT(Look-Up-Tables) 입력이 사용되지 않을 때 로직 블록, 특히 LUT에서 전력을 감소시키는 방안을 고안했다(그림 3). K-입력 LUT는 단지 K-입력을 통해서만 어떤 로직 함수를 구현할 수 있는 소형 메모리이다.

그림 3은 가상의 3 입력 LUT(입력 A1, A2, A3로 이루어짐)가 2개 입력 AND 논리구조 기능을 어떻게 구현할 수 있는가를 보여주고 있다. 논리구조-AND에 대한 진리표(Truth Table)는 멀티플렉서 트리의 좌측에 LUT SRAM으로 나타난다.

입력 A3는 이 그림 3에서 사용되지 않았다. 보통 사용되지 않는 입력은 "don`t cares"로 다루어지며, 0이나 1로 추정된다. 따라서 그림 3의 이러한 사항을 고려하기 위해 자일링스 소프트웨어는 LUT SRAM 메모리 컨텐츠의 탑(Top)과 바텀 하프(Bottom Half)에서 로직 기능을 `복제`한다. 이러한 사용되지 않는 LUT 입력은 특히 6 입력 LUT 구조를 가지고 있는 버텍스-5 설계에서 종종 발생한다.

버텍스-5 하드웨어에서 사용되지 않는 LUT 입력은 위의 로직-1으로 끌어 올려지는데, 이러한 속성이 바로 최적화를 위한 기본이 된다. A3가 로직-1으로 끌어 올려질 경우, 하단의 입력은 트리에서 가장 멀리 떨어진 2 입력 멀티플렉서에서 선택되지 않는다.

그러나 로직 기능이 LUT 메모리 컨텐츠의 탑 및 바텀 하프에서 모두 복제되기 때문에 토글링(Toggling)이 신호 입력 A1과 A2에서의 변화를 토대로 내부 멀티플렉서 노드 n1 및 n2에서 발생할 수 있다. n1 및 n2 상의 트랜지션은 LUT 출력을 결코 유도하지 않기 때문에 이 토글링은 불필요한 동적 전력을 소모하게 된다.

최적화 작업은 로직 기능에 영향을 주지 않으면서 불필요한 내부 토글링을 제거하기 위해 포스트-라우팅 단계에서 사용되지 않은 LUT 입력을 검출하고 LUT 메모리 컨텐츠를 로직 0으로 설정하는 것을 의미한다.

그림 3의 사례에서 보면, LUT 메모리 컨텐츠의 바텀 하프는 로직-0으로 설정될 것이다. 따라서 내부의 노드 n1과 n2에서 토글링이 발생하지 않을 것이며, n1과 n2를 충방전하기 위한 동적 전력 소모는 없을 것이다.

이 산업용 설계의 최적화를 평가하기 위해 보드-레벨의 전력 측정을 수행했으며, 수 %에 달하는 동적 전력 소모를 줄일 수 있다는 사실을 확인했다. 또한 이러한 결과는 최적화 과정이 포스트-라우팅 단계에서 수행될 수 있고 추가 공간이나 성능 저하를 일으키지 않기 때문에 전혀 비용이 들지 않는다는 점에서 매우 유의미하다.

결론

설계 툴을 이용한 보다 다양한 전력 소모 절감 방법들이 존재한다. 프론트엔드 HDL 합성 과정에서 클럭 게이팅, 연산 독립과 같은 ASIC 도메인으로부터 검증된 최적화 방법을 FPGA를 위해 적용할 수 있다.

뿐만 아니라 LUT 및 범용 패브릭을 사용하는 대신 로직을 블록 RAM(이것은 대규모 ROM으로 사용될 수 있다)으로 매핑하는 것과 같은 FPGA에 특화된 전력 최적화 방안이 적용될 수도 있다.

이 글에서 언급한 것처럼 전력 인식 로직 합성과 LUT 매핑 기술에 대한 연구는 매우 잘 이뤄지고 있으며, 자일링스 FPGA 상에서 상당한 전력소모를 감소시킬 것이다. 배치과정에서 보다 정확한 커패시턴스 예측은 더 많은 전력소모 절감을 가능하게 할 것이다.

특히 2가지 영역 즉, 글리치 및 누설전류 최적화에서 좋은 결과가 기대된다. 글리치는 회로 상의 서로 다른 경로 지연으로 인해 신호에서 발생하는 스퓨리어스 트랜지션이다. 이러한 트랜지션은 불필요하지만 동적 전력에서는 상당히 중요한 역할을 담당한다.

글리치를 완화시키기 위해 경로 지연을 이퀄라이징 하거나 대부분의 `Glitchy` 경로에 따라 레지스터를 삽입하는 것과 같은 CAD 기법들이 있다. 디지털 CMOS 회로에서 누설전류는 회로에 적용된 입력 상태에 따라 매우 달라진다. 따라서 CAD로 누설 전류를 줄이기 위한 한 가지 방식은 신호 값이 낮은 누설전류 상태로 더 오래 유지될 수 있도록 회로를 자동으로 변경하는 것이다.

이번 결과는 ISE 설계 툴을 통한 전력소모 절감이 상당한 발전을 이루었음을 보여준다. 우리는 향후 소프트웨어를 통해 더 많은 전력 소모 절감이 가능할 것으로 기대하고 있다. 버텍스-5 FPGA와 같이 전력에 최적화된 디바이스와 전력 인식 CAD 알고리즘 등 다양한 전력 인식 솔루션들은 탁월한 결과를 가져다 줄 것이다. 저전력 소프트웨어 및 하드웨어의 지속적인 발전은 자일링스 FPGA가 전력에 민감한 새로운 마켓에 진출하는데 있어 단초를 제공할 것이다.

<자료제공: 월간 반도체네트워크 2007년 12월호>

디지털여기에 news@yeogie.com <저작권자 @ 여기에. 무단전재 - 재배포금지>