2009년 6월 5일 금요일

전력 최적화 실현한 자일링스 FPGA

프로그래머블 로직

전력 최적화 실현한 자일링스 FPGA

게재:2009년05월28일

By Matt Klein
Principal Engineer
Technical marketing
Xilinx, Inc.

지난 6년에 걸쳐 IC 공정기술은 130nm에서 90nm, 그리고 현재의 65nm 노드에 이르기까지 진보해 왔으며, 각 단계마다 전력관리의 중요성 또한 함께 증가해 왔다. 제조업체들은 130nm 노드에서 스탠바이 모드에서 조차 트랜지스터 전력 누설이 발생한다는 사실을 알게 되었다. 90nm에서는 IC의 동작전압이 감소하지만 누설전류가 계속 증가하면서 디바이스의 전력 낭비는 더 많은 비중으로 높아졌다. 65nm에서도 이러한 경향은 계속되었다. 사실 65nm 노드에서의 누설전류는 많은 디자이너들이 성능 스펙을 충족시키는 것만큼 전력 관리 또한 중요하게 고려되어야 한다는 사실이 보다 분명해 졌다.

전통적으로 FPGA 공급업체들은 광범위한 어플리케이션을 위한 디자인과 상당히 많은 고속 트랜지스터로 이뤄진 디바이스를 설계해 왔기 때문에 FPGA가 가장 전력소모가 적은 디바이스라고 말할 수는 없다. 최첨단 공정기술로 설계된 다른 실리콘과 마찬가지로 누설전류를 가진 트랜지스터를 사용한다. 하지만 디자이너들은 FPGA의 프로그래머블 특성을 활용하거나 정확한 전력 예측이 가능한 관련 툴을 사용하여 보다 전력 효율적인 FPGA 디자인과 PCB를 만들 수 있는 최적의 설계기법을 얻을 수 있다.

FPGA의 전력소모는 주요한 2 가지의 타입이 있는데, 정적 및 동적 전력소모이다. 정적 전력소모는 누설 트랜지스터로부터 기인하며, 디자인 상에서 아무런 작업을 하지 않더라도 발생한다. 동적 전력소모는 디바이스가 동작하는 동안에 소모하는 전력으로 해당 기능의 전압, 주파수, 커패시턴스에 따라 노드가 토글링된다. 따라서 전력소모 한계치에 맞게 전력을 최적화하기 위해서는 이러한 두 가지 타입의 전력을 이해하고 어떻게 서로 다른 동작 조건 하에서 변화하는지를 파악하는 것은 매우 중요하다.

정적 및 동적 전력소모와 변동성

누설전류는 90nm는 물론 보다 까다로운 65nm에서 ASIC과 FPGA에게 모두 매우 중요한 문제이다. 보다 높은 성능의 트랜지스터를 얻기 위해서는 경계값 전압이 낮아져야 되지만, 반면에 누설전류는 증가하게 된다. 자일링스는 누설전류를 최소화하기 위해 많은 것들을 수행해 왔지만, 그럼에도 불구하고 누설전류로 인한 정적 전력소모의 변동은 최악의 경우와 일반적인 공정 간의 차이가 2대 1 정도였다. 또한 누설전류는 VCCINT의 3제곱으로 변화함으로써 코어 전압(VCCINT)으로 인해 크게 영향을 받는다. 정적 전력소모는 VCCINT이 5%만 증가해도 약 15%까지 상승하게 된다. 마지막으로 누설전류는 접합(혹은 다이) 온도에 따라 크게 영향을 받는다.

그림 1과 2는 전압 및 온도에 따른 누설전류로 인한 정적 전력소모의 변화를 나타내고 있다.

 그림 1. 다이 온도로 인한 누설전력 변동

그림 1. 다이 온도로 인한 누설전력 변동

 그림 2. 코어 전압(V<SUB>CCINT</SUB>)로 인한 누설전력 변동

그림 2. 코어 전압(VCCINT)로 인한 누설전력 변동

FPGA의 정적 전력소모의 또 다른 원인은 공정 및 온도가 현저하게 불변하지 않는다면 대부분 동작회로의 DC 전류가 된다. 예를 들어, I/O DC 전류(HSTL, SSTL, LVDS와 같은 종단의 표준 상에서 I/O 터미네이션 전압)를 비롯해 LVDS와 같은 I/O 타입들의 전류 드라이버 상의 DC 전류가 해당된다. 또한 공정 및 온도가 불변하더라도 일부 FPGA의 아날로그 블록이 정적 전력소모의 원인이 되기도 한다. 이러한 것들은 자일링스 FPGA 내의 DCM(Digital Clock Manager)이나 클럭 제어 요소 등이 해당되며, 자일링스 버텍스-5(Virtex-5) FPGA에서 제공되는 PLL(Phase Locked Loop)과 자일링스 FPGA의 입출력 신호 상의 프로그래머블 딜레이를 선택하기 위해 사용되는 IODELAY 등이 있다.

동적 전력소모는 FPGA 코어나 I/O 내에서 스위칭 이벤트가 발생하는 동안에 소모된다. 동적 전력소모를 산출하기 위해서는 토글링 트랜지스터의 수와 트레이스, 커패시턴스, 토클링 주파수를 알아야 한다. 트랜지스터는 FPGA 상의 로직과 메탈 트레이스 간의 프로그래머블 인터커넥트를 위해 사용된다. 커패시턴스는 트랜지스터 기생 커패시턴스와 메탈 인터커넥트 커패시턴스로 이뤄진다. 따라서 동적 전력소모의 공식은 PDYNAMIC=nCV2f가 되며, 여기에서 n은 토글링 노드의 수, C는 커패시턴스, V는 전압 스윙, f는 토글 주파수이다.

로직 결합을 보다 타이트하게 구성하면(FPGA 내부 아키텍처 변화를 통해) 스위칭 트랜지스터의 수는 감소한다. 보다 적은 트랜지스터를 사용함으로써 이들 간의 라우팅 길이를 줄일 수 있고 동적 전력소모 또한 감소시킬 수 있다. 따라서 65nm 기반 버텍스-5 FPGA의 트랜지스터는 보다 낮은 게이트 커패시턴스와 짧은 인터커넥트 트레이스를 사용하기 때문에 약 15~20%까지 노드 커패시턴스를 줄일 수 있다. 이는 곧 동적 전력소모를 낮추게 된다.

전압 또한 동적 전력소모에 영향을 준다. 90nm에서 65nm 프로세스 노드로 이전함에 따라 간단하게 VCCINT이 1.2V에서 1V로 낮아지면서 버텍스-5 FPGA 디자인의 동적 전력소모는 약 30% 감소되었다. 더불어 아키텍처의 향상을 통해 순수 동적 전력소모는 90nm 기술과 비교했을 때 40~50%까지 감소되었다.(참고: 동적 전력소모는 FPGA 코어의 온도와 프로세서가 크게 변하지 않으면 VCCINT의 제곱으로 변화한다.)

FPGA 전력분석 툴

자일링스는 2가지 종류의 전력 분석 툴을 제공한다. 첫 번째로 XPE(XPower Estimator) 스프레드시트 툴이 있는데, 이는 디자이너가 구현 툴을 적용하기 전에 사용할 수 있다. 두 번째 툴은 XPower Analyzer로 디자인을 구현한 후에 어떻게 전력 소모가 변했는지 체크하기 위해 사용된다.

XPower Estimator는 스프레드시트 환경에서 토글 레이트, 로딩 등과 같은 FPGA 상의 리소스 활용에 대한 유저 정의에 기반하여 빠르게 전력을 예측할 수 있다. 이 툴은 전원공급장치 및 레귤레이터 뿐만 아니라 시스템을 위한 어떠한 쿨링 솔루션(히트 싱크, 팬 등)을 선택할 지 최초의 전력 평가에 사용할 수 있다.

마이크로소프트의 액셀 기반 툴을 통해 시스템 설계자는 디바이스, 디자인 및 시스템에 기반한 전력을 결정할 수 있다. 디자이너는 간단하게 리소스 활용, 동작 환경, 클럭 및 토글 레이트 등과 같은 추정된 디자인 요소들을 입력하면 된다. 그러면 XPE는 해당 디자인에 따라 추정되는 전력을 산정하고, 총 전력소모 및 최대 접합 온도뿐만 아니라 레일-기반 및 블록-기반 전력을 알려준다.

추정 동작을 시작하는데 있어 툴의 프로세스 기능은 중요한 요소이다. 이는 여러 블록에 따라 일반적인 혹은 최악의 경우에 해당하는 전력 소모를 알려준다. 우선 VCCINT 공급전압 상의 누설전류로 인한 정적 전력소모는 프로세스에 따라 크게 좌우된다. 한편 VSS(Voltage Source Summary)는 전압 변동이 전력 소모에 미치는 영향을 빠르게 파악할 수 있도록 도와준다. 이는 모든 코어 로직을 대표하는 하나의 공급전압 VCCINT와의 연관성을 이해하는데 특히 중요하다. XPE 툴에서 프로세스 변동과 전압 변동을 모두 선택함으로써 최악의 경우에 해당하는 공급전압의 크기를 적절하게 결정할 수 있다.

XPE의 또 다른 유용한 기능 중 하나는 TIS(Thermal Information/Summary)로, 히트 싱크, PCB 속성과 온도 정보 등을 지정할 수 있다. 이를 통해 설계 시 상업용 등급 혹은 산업용 등급 디바이스에 걸맞는 열 규격을 충족시킬 수 있다. 한편 BS(Block Summary)는 각 블록에 대한 전력을 나타내며, PS(Power Summary)는 정지 및 동적 전력의 총량을 보여준다.

XPE 툴에 있는 각각의 탭을 이용해 클럭, 로직, I/O, 블록 RAM, PLL, DSP 등과 같은 해당 리소스 타입에 대한 유틸라이제이션 및 토글 레이트를 입력할 수 있다.

마지막으로 XPE의 그래프 탭과 시트는 기능 및 프로세스, 전압, 온도 변동에 따른 전력을 그래픽 기능을 통해 보여준다. 특히 기능 그래프에 따른 전력은 각각의 특성을 열거하고 해당 전력소모를 보여주기 때문에 특성을 확인할 수 있어 최적화를 통한 최상의 이점을 얻을 수 있다.

두 번째 자일링스 전력 분석 툴인 XPower Analyzer는 구현하는 동안에 추출한 정확한 리소스 정보를 기반으로 보다 더 정확하게 전력 오류를 판단하게 된다. 테스트 및 시뮬레이션 벡터를 툴에 제공할 수도 있으며, 벡터가 없는 상태에서도 전력 평가를 수행할 수 있다. 이 툴은 FPGA 디자인 내의 물리적 리소스들을 위한 특성화된 커패시턴스 데이터를 사용한다.

XPower Analyzer는 자일링스의 ISE(Integrated Software Environment)와 연결되어 있으며, 몇몇 내부 자일링스 파일 포맷을 통해 포스트-P&R 정보를 받아들일 수 있다. 또한 업계 표준 VCD(Value Change Dump)와 SAIF(Switching Activity Interchange Format) 파일을 처리할 수 있다.

VCD 혹은 SAIF 포맷 중 하나를 사용할 경우, 대표적인 시뮬레이션 벡터를 생성해야 하며, 이를 통해 툴은 시스템의 노드별 토글 레이트를 기록할 수 있어 이후 데이터 액세스가 가능하게 된다. 이러한 시뮬레이션 파일이 없을 때에는 XPower Analyzer 툴을 이용해 벡터가 없는 상태에서 시뮬레이션을 수행할 수 있다. 이러한 종류의 시뮬레이션은 실제 디자인 로직의 전 영역으로 토글 레이트를 확산시키기 위해 수학적 연산 및 통계적 모델링을 사용한다. 그 다음 디자인 상의 각 노드별 토글 레이트를 포함하는 결과를 생성하게 된다.

벡터 기반(VCD 및 SAIF) 파일과 벡터가 없는 경우 모두 XPower는 P&R 디자인의 물리적 커넥티비티와 정확한 리소스 사용을 고려한다. 이 툴은 해당 토글 레이트에서 각 블록의 개별적인 동적 전력 소모와 함께 물리적 리소스를 위해 특성화된 커패시턴스 데이터로 각 노드별 토글 레이트 혹은 동작을 교차해서 참조하게 된다. 그림 3에 나타낸 결과에는 총 전력과 최대 접합 온도, 그리고 레일-기반, 블록-기반, 계층-기반 전력 리포팅이 포함되어 있다.

 그림 3. 자일리스 XPower Analyzer 요약 페이지

그림 3. 자일리스 XPower Analyzer 요약 페이지

XPower는 디자인 상에서 전력이 소모되는 위치를 상세하게 파악할 수 있도록 도와주며, ‘what if’ 분석으로 간단한 것에서부터 아키텍처 재조정에 이르는 최적화 작업을 통해 어떤 블록이 최상의 결과를 얻을 수 있는지를 보다 정확한 정보를 기반으로 선택할 수 있도록 한다. 또한 XPower는 해당 디자인의 실제 전력 사양을 문서화할 수 있으며, 이러한 정보를 보드 레벨에 적용할 수 있다.

 그림 4. T_DCI를 이용해 메모리 읽기, 메모리 쓰기가 이뤄지는 동안에 보여지는 FPGA 핀

그림 4. T_DCI를 이용해 메모리 읽기, 메모리 쓰기가 이뤄지는 동안에 보여지는 FPGA 핀

그림 4 안의 설명
최상의 SI(Signal Integrity), 하지만 입력 DC 터미네이션 전력은 메모리 쓰기가 이뤄지는 동안에 제거된다.

FPGA 설계 기법으로 전력소모 절감

프로세스가 65nm로 진화하면서 버텍스-5는 기본적인 동적 전력소모 절감의 이득을 얻을 수 있었으며, 또한 새로운 툴과 트릭, 기법을 이용해 보다 많은 전력절감을 실현할 수 있다.

전력소모를 줄일 수 있는 한가지 방법은 디자인에 적합한 FPGA를 선택하는 것이며, 그 다음으로는 보다 더 디자인에 최적화된 전력소모를 구현하기 위해 프로그래머블 특성을 활용하는 것이다. 디자인 선택은 정적 및 동적 전력소모에 모두 영향을 미친다.

누설전류로 인한 정적 전력소모는 로직의 양과 비례하며, 트랜지스터 수는 해당 FPGA를 구성하는데 사용된다. 따라서 사용하는 FPGA 리소스의 수를 줄이면 보다 작은 디바이스에 디자인을 구현할 수 있으며, 결과적으로 누설전류를 낮출 수 있다. 그림 5는 보다 작은 디바이스를 사용할 경우의 효과를 보여주고 있다.

 그림 5. 부품의 크기 감소로 정적 전력소모의 감소

그림 5. 부품의 크기 감소로 정적 전력소모의 감소

디자인 크기를 줄이기 위해 여러 가지 기법을 사용할 수 있다. 먼저 FPGA 내에 하나의 데이터를 시간적으로 2번 연속으로 처리해야 하는 경우에는 2개의 기능 블록을 구현하는 하는 것이 아니라 기능 블록을 하나만 만들고 처리 속도를 2배로 올려서 처리한다면 2개의 기능 블록 대신 하나의 기능 블록으로 대치할 수 있게 된다. 이런 기법을 타임 슬라이스라고 한다.

어느 한 순간에 하나의 기능만이 필요하다면 필요할 때마다 새로운 기능으로 해당 블록을 바꾸는 것이다.

또한 제한없이 리소스를 이용할 수 있는 기능을 선택할 수도 있다. 예를 들어, BRAM을 위한 스테이트 머신 혹은 DSP48(자일링스 멀티플라이, 애드, DSP 블록)의 카운터, 쉬프트 레지스터 로직의 레지스터, LUT RAM의 BRAM 등이 있다. 이와 함께 무리하게 높은 constraint를 적용하게 되면 로직과 레지스터가 중복될 수 있으므로 이러한 constraint는 피해야 한다.

한편 FPGA 아키텍처 안에 구현되어 있는 하드 IP 블록(BRAM, DSP, FIFO, 이더넷 MAC, PCI Express)의 장점을 충분히 활용할 수 있다.

정적 전력소모를 줄일 수 있는 다른 방법은 해당 디자인을 면밀하게 살펴보고 과도한 DC 소모요인을 제거하는 것이다. 종종 이질적이거나 불분명한 DCM 혹은 PLL을 가진 블록이 디자인에 사용될 수 있다. 이는 블록을 재설계하거나 이들을 제거하는 것으로 잊어버린 경우, 혹은 기존 코드로 차세대 제품을 구현할 때에 발생한다. 디자인의 탑 레벨에서 DCM 혹은 PLL을 추출해 내면 블록들이 리소스를 공유할 수 있으며, 디자인 크기 및 DC 전력을 더 감소시킬 수 있다.

메모리 블록을 현명하게 사용한다면 FPGA 디자인의 동적 전력소모를 감소시키는데 도움이 되며, 이는 곧 전반적인 전력소모에도 영향을 미친다. 동적 전력소모는 커패시턴스(면적 혹은 길이)와 주파수 함수로 이뤄지기 때문에 디자인이 블록 메모리와 액세스하는 방법과 커패시턴스와 주파수를 최적화할 수 있는 영역에 대한 검토가 필요하다.

자일링스 FPGA는 2 종류의 메모리 어레이를 가지고 있다. 18K 혹은 36K 크기로 제공되는 BRAM은 대형 메모리 블록에 최적화되어 있다. LUTRAM은 작은 단위에 최적화되어 있으며, FPGA의 LUT(Look Up Table)에 기반하고 있다. LUTRAM은 자일링스 버텍스-5 FPGA에서 64bit 단위로 사용할 수 있다.

일반적으로 이러한 2 종류 중 BRAM이 더 많은 전력을 소모한다. 동작속도는 BRAM 전력소모의 가장 큰 원인이 되며, 토글 또한 영향을 미치기는 하지만 부수적이다. 디자이너는 BRAM의 전력소모를 최소화하기 위해 몇 가지 조치를 취할 수 있는데, 예를 들어, BRAM을 읽고 쓰는 활성 사이클 동안에만 동작시키는 것이다. 또한 BRAM은 보다 큰 메모리 블록을 위해 남겨두고 작은 메모리 블록을 위해서는 BRAM 대신 반드시 LUTRAM을 사용하는 것이다. 더불어 다중 대형 블록에도 BRAM을 사용하도록 한다.

또 다른 기법은 공간을 최소화하고 성능을 최대화하거나 전력소모를 최소화하기 위해 메모리 어레이를 조정하는 것이다. 그림 6은 속도와 공간에 최적화된 2K x 36bit 스토리지 어레이를 보여주고 있다. 이것은 4개의 2K x 9bit 블록을 이용해 병렬로 구성한 것으로 새로운 값이 필요할 때 4개의 블록이 모두 항상 동작된다. 또한 4개의 512 x 36bit 블록을 조합하여 2K x 36bit를 다르게 구성할 수도 있는데, 512 x 36bit 블록이 액세스 되도록 선택하기 위해서는 더 낮은 2개의 어드레스 비트가 디코딩된다. 후자의 경우, 메모리 블록을 하나 이상 동시에 액세스하지 않음으로 첫 번째 경우와 비교해 전력소모를 75%까지 절감할 수 있다.

 그림 6. 속도 및 공간 대비 전력 최적화 메모리 어레이(왼쪽), 그리고 전력 대비 공간선택을 통한 자일링스 블록 메모리 제너레이터(Block Memory Generator)

그림 6. 속도 및 공간 대비 전력 최적화 메모리 어레이(왼쪽), 그리고 전력 대비 공간선택을 통한 자일링스 블록 메모리 제너레이터(Block Memory Generator)

그림 6의 오른쪽은 자일링스의 BMG(Block Memory Generator)를 보여주고 있다. 이 툴은 속도나 전력에 맞게 최적화하거나 메모리 어레이 사이즈를 자유롭게 구현할 수 있도록 도와준다. 그림 7은 이러한 케이스를 위한 자일링스의 Power Estimator로 주어진 동작속도로 구동하는 N 블록과 N/4의 동작 속도를 가진 N 블록 간의 전력소모를 비교한 것이다. 결과는 동적 전력소모를 75% 절감할 수 있는 것으로 나타났다.

 그림 7. XPE를 통한 전력 최적화 어레이 결과

그림 7. XPE를 통한 전력 최적화 어레이 결과

자일링스 툴은 작업에 가장 적합한 메모리 어레이를 선택할 수 있도록 도와준다. 디자인에 필요한 2 세트의 메모리 스토리지 공간을 고려하게 된다. 첫 번째 경우, 300MHz에서 동작하는 16 세트의 64 x 32bit 메모리 구조(총 비트 수는 32K)가 필요하다. 다른 경우에는 16 세트의 512 x 36bit 메모리 구조(총 비트수는 294K)가 필요하다.

XPE 툴을 이용해 16 세트의 64 x 32bit 메모리 구조의 전력을 비교해 보면, 작은 메모리 어레이는 LUTRAM에서 구현되는 것이 최상이라는 것을 알 수 있다.(그림 8) BRAM에 구현하는 것보다 85%의 전력을 절감할 수 있다. 이는 BRAM으로 인해 상당한 공간을 낭비하고 있기 때문이며, 16개의 매우 작은(64 x 32bit) 메모리를 얻기 위해 16개의 18Kbit 블록을 비효율적으로 사용하고 있는 것이다.

 그림 8. BlockRAM 혹은 LUTRAM을 이용한 소형 메모리의 전력 예측

그림 8. BlockRAM 혹은 LUTRAM을 이용한 소형 메모리의 전력 예측

두 번째 경우에 해당하는 16 세트의 18Kbit 어레이의 전력을 XPE 툴을 이용해 비교해 보면, 대형 메모리 어레이와 상반된다는 것을 알 수 있다.(그림 9) LUTRAM 대신에 BRAM에 이를 구현하게 되면 28%의 전력소모가 줄어들며, 많은 작은 단위의 대상들이 동작되거나 인터커넥트가 필요한 것으로 간주된다.

 그림 9. LUTRAM 대비 BlockRAM을 이용한 대형 메모리의 전력 예측

그림 9. LUTRAM 대비 BlockRAM을 이용한 대형 메모리의 전력 예측

또한 자일링스 FPGA는 클럭 게이팅 분야에서 몇 가지 흥미로운 기능을 가지고 있다. 예를 들어, FPGA의 글로벌 클럭을 차단하거나 보다 느린 클럭을 동적으로 선택하기 위해 BUFGMUX 클럭 버퍼를 사용할 수 있다. 또한 디자이너들이 ASIC 디자인에 사용하는 사이클-게이팅 기법과 어떤 면에서는 매우 유사한 사이클-바이-사이클 클럭 게이팅을 실행하기 위해 BUFGCE 클럭 버퍼를 사용할 수 있다.

이러한 두 가지 기능을 모두 고려해 보는 것이 좋다. 특히 사용하지는 않지만 전력소모에 영향을 미치는 특정 블록을 가진 디자인에 매우 유용하다. 이러한 경우, 사이클-바이-클럭-사이클 기반의 클럭이거나 혹은 수많은 클럭 사이클에서 수천개의 클럭이 로드하는 매우 큰 클럭 도메인을 차단할 수 있다.

또한 글리치 에너지를 줄임으로써 동적 전력 소모를 억제시킬 수 있다. 로직 및 레지스터 조합을 포함하고 있는 디자인의 경우, 가끔 다양한 입력들이 로직 조합 블록으로 약간씩 다른 시간에 도착하면서, 다른 구조에도 파급되거나 전력을 낭비할 수 있는 글리치가 잠시 상주하게 된다.(그림 10 참조)

 그림 10. 플립-플롭을 삽입하여 글리치 확대 및 블록킹

그림 10. 플립-플롭을 삽입하여 글리치 확대 및 블록킹

보드 레벨에서의 전력 감소

PCB 디자이너와 기계 엔지니어, 시스템 설계자는 FPGA의 전력소모를 절감하기 위해 보드 레벨에서 몇 가지를 고려해야 한다. FPGA의 코어 전압과 접합 온도는 모두 여러 부품의 전력소모에 많은 영향을 미친다.

VCCINT 코어 전압을 제어하는 것도 보드 레벨에서 전력소모를 줄일 수 있는 하나의 방법이다. 누설전류로 인한 정적 전력 및 동적 전력 모두 FPGA의 코어 전압에 크게 좌우된다.

따라서 누설전류를 줄일 수 있는 한가지 방법은 버텍스-5의 하이엔드 동작전압(1.05V = +5%) 보다는 공칭전압(1V)에 가깝게 코어 전압을 설정하는 것이다. 최신 스위칭 레귤레이터를 이용하면 전압 허용범위 ±1.5% 대 ±5% 사양을 달성할 수 있다. 최대 1.05V 세팅 전압 보다 1V의 공칭전압으로 코어 전압을 유지함으로써 동적 전력소모는 10%까지, 정적 전력소모는 15%까지 줄일 수 있다.

또한 접합 온도를 제어함으로써 전력소모를 줄일 수 있다. 해당 디자인 상의 FPGA, PCB, 히트싱크, 주변온도, 기류, FPGA 전력 등과 같은 발열속성은 FPGA의 접합 온도에 모두 영향을 미친다.

FPGA의 접합온도를 줄일 수 있는 간단하면서도 다소 명확한 방법은 보다 열 효율적인 PCB나 히트싱크를 사용하는 것이다. 그러면 FPGA 디자이너가 어떤 변경을 하지 않더라도 추가적으로 전력소모를 줄일 수 있다. 100°C와 같은 높은 접합 온도에서 15°C 감소는 누설전류로 인한 정적 전력소모를 20%까지 줄일 수 있다.

전력소모를 줄이는 또 다른 방법은 FPGA에서 온도 및 전압을 모니터하는 것이다. 버텍스-5 FPGA는 시스템 모니터(System Monitor)라는 아날로그 블록을 가지고 있는데, 외부 및 내부 아날로그 전압과 다이 온도를 모니터링할 수 있다. 시스템 모니터는 10bit A/D 컨버터 주변을 감싸고 있는데, 40°C에서 +125°C의 온도범위에 걸쳐 정확하면서 신뢰할 만한 결과를 제공할 수 있다. A/D 컨버터는 온칩 센서의 출력을 디지털화하는데, 이를 시스템 성능에 대한 환경적 영향을 체크하기 위해 최대 17개의 외부 아날로그 입력에 사용할 수 있다.

이 블록은 경계값과 경고레벨을 컨피규레이션할 수 있으며, 유저 로직이나 마이크로프로세서와 쉽게 인터페이스가 가능한 컨피규러블 레지스터에 측정결과를 저장한다. 또한 FPGA가 컨피규레이션 되기 앞서 시동 할 때에, 혹은 JTAG 포트를 통해 그 값을 읽을 수 있다.

코어 전압의 전력이 트랜지스터 개선, 감소된 커패시턴스, 보다 낮은 전압을 통해 낮아짐에 따라 I/O 전력은 성능과 전력 간의 조율에 있어 중요하게 고려해야 할 또 다른 요소가 된다. 또한 현명하게 I/O를 선택함으로써 전반적인 전력 소모를 줄일 수 있다. 이를 위해서는 각 FPGA 디자인의 I/O 인터페이스 요건을 고려해야만 한다. 예를 들어, 메모리 인터페이스(DDR2, QDR, RLDRAM 등)는 SI(Signal Integrity)를 위해 FPGA 내부 터미네이션이 요구될 수 있지만, 일반적으로는 더 많은 전력을 소모하고, 접합 온도가 올라가게 될 것이다.

반면 FPGA와 ASIC/ASSP의 인터페이스의 경우, ASIC/ASSP가 타깃하고 있는 사양(LVDS, HSTL 등)에 기반해서 인터페이스를 선택해야만 한다. 만약 FPGA와 또 다른 FPGA와의 인터페이스의 경우에는 요구되는 디자인 성능에 따라 인터페이스를 선택할 수 있으며, 보다 손쉽게 전력 최적화 방법을 찾을 수 있을 것이다.

한편 입출력 모두 전력을 소모하는데, LVDS, HSTL, SSTL과 같은 표준이 가장 많이 소모한다는 것을 알 수 있다. 출력의 경우 보다 강력한 성능의 표준이 가장 많은 전력을 소모하며, 전력은 출력 인에이블 레이트와 토글 레이트에 따라 선형적으로 변동한다. 하지만 LVDS는 토글 레이트가 독립적인 고정 전류 소스에 기반하고 있기 때문에 예외이다.

입력의 경우, 참조된 표준들이 상당한 양의 전력을 소모하는데, 수신 구조가 차동 리시버를 통합하고 있는데다, 선택 가능한 내부 터미네이션을 포함하고 있기 때문이다. 이들 모두 DC 전력을 소모한다.

버텍스-5에서 제공되는 T_DCI(동적으로 3-statable 디지털로 제어된 임피던스)라는 기능은 해당 I/O 패드가 출력으로 사용될 때 사용자가 터미네이션을 동적으로 제거할 수 있다. 이는 데이터 버스나 메모리 인터페이스에 매우 유용하고, 읽기 대 쓰기 비율에 따라 좌우되며, 적정하게 전력량을 제어할 수 있다.(그림 4 참조)

현명한 I/O 인터페이스 선택은 성능과 전력의 조화를 고려하는 것이 중요하다. 설계에서 반드시 최상의 성능 및 최소 노이즈를 요구하거나 타깃 디바이스가 I/O 표준을 필요로 한다면 LVDS와 같은 인터페이스를 사용하는 것이 좋다.

터미네이션이 일반적으로 많은 양의 전력을 소모하기 때문에 이를 현명하게 사용해야만 하며, 성능 대비 전력 조건을 고려해야 한다. 설계에 외부 터미네이션을 사용하거나 혹은 터미네이션을 사용하지 않고 전력을 획기적으로 줄일 수 있다.

과거와 현재, 미래

전력관리가 중요한 이슈로 부각되기 시작한 당시부터 자일링스는 ISE 개발 툴 전반에 걸쳐 전력-최적화 기술을 구현하기 위해 부단히 노력해 왔다. 예를 들어, XPE, XPower Analyzer 출시와 더불어 자일링스는 수년 전에 FPGA 내부 라우팅 리소스의 이미 알려진 커패시턴스를 기반으로 동작하는 전력-최적화 라우터를 ISE를 통해 제공한 바 있다.

또한 ISE의 전력 최적화 합성 엔진을 실행하여 자동으로 소스 코드 내에 있는 작은 어레이들을 지정하고 이를 LUTRAM에 합성할 수 있다. 명령어에 따라 엔진은 대형 어레이(직접 지정한 크기)를 찾아내어 이를 BlockRAM에 합성한다. 만약 대형 카운터를 찾는다면, 이를 DSP48 블록에 구현할 수 있다. 또한 이는 최적의 양으로만 로직을 구현하기 위해 복제를 하는 경우 매우 현명한 선택이 될 수 있다.

보다 최근에 자일링스는 라우팅 길이와 커패시턴스를 최소하기 위해 기능을 함께 그룹화하는 최적화 배치툴을 발표했다. 이와 관련된 툴 세트가 PlanAhead™로서, 로직의 계층적 그룹화가 가능하며, 이들을 FPGA 내의 미개발된 공간 안에 물리적으로 배치할 수 있다. 이는 커패시턴스를 줄이고 라우팅 시간을 향상시키는데에도 도움이 된다.

자일링스가 선구적으로 최신 프로세스 노드 기술을 개척해 나감에 따라 동적 및 정적 전력소모에 대한 문제는 계속해서 제기될 것으로 예상된다. 하지만 동시에 자일링스는 전력관리 방법 및 툴 최적화를 위해 부단히 노력하고 있을 뿐만 아니라 초기 실리콘에서 전력문제를 해결하기 위해 힘을 모으고 있다. 자일링스의 전력관리에 대한 보다 자세한 정보는 www.xilinx.com/power에서 제공된다.

본 기사는 에 있는 전자 엔지니어 기사에서 인쇄한 것입니다:
http://www.eetkorea.com/ART_8800573768_839575_NT_78736230.HTM

댓글 없음: