fpgas for dummies-ch01

8
1 모두를 위한 FPGA 이 장에서 다루는 내용 * FPGA 소개 * FPGA 의 작동 원리 및 기능 탐색 * FPGA ASIC 의 차이점 살펴보기 반갑습니다! 장을 읽고 있다면 이전에 FPGA(Field Programmable Gate Arra y) 대해 배웠지만 자세히 알고자 하는 엔지니어에게 훌륭한 길잡이가 되어줄 것입니다. 설계에서 어떤 방식으로 사용할 있는지 궁금할 것입니다. 여기에서는 FPGA 소개하고 어떤 문제를 해결해주는지 설명합니다. 또한 작동 원리와 기능을 살펴보고 설계 트레이드오프와 FPGA 기능의 실체를 파헤칩니다. 다른 하드웨어 구현 방법에 비해 FPGA 가지 이점을 지니고 있습니다. 첫째, 모든 경쟁업체에서 사용하는 동일한 ASSP(Application Specific Standard Product) 를 사용하거나 ASIC(Application Specific Integrated Circuit) 설계에 따른 시간, 비용, 위험을 감수하지 않고 필요한 하드웨어를 정확하게 구현할 있습니다. 하지만 마찬가지로 중요한 점은, FPGA 커스터마이즈 기능을 통해 일반적으로 A SSP 마이크로프로세서 코어에서 작업을 수행할 때보다 FPGA 에서 간단하고, 빠르고, 에너지 효율적인 방식으로 작업을 수행할 있다는 것입니다. FPGA 가 필요합니까? 당연한 질문입니다! FPGA 제조 기능을 정의할 있는 반도체 소자입니다. FPGA 제품이 현장에 설치된 이후에도 제품 특성 기능을 프로그래밍하고, 표준을 채택하고, 특정 애플리케이션에 맞게 하드웨어를 재구성할 있습니다. 그래서 필드 프로그래머블이라는 용어를 사용합니다. 그리고 게이트 어레이논리 게이트의 2 차원 배열입니다. 이러한 내용을 충분히 이해하면 이처럼 간단한 계산 기능을 추가하여 의미있는 작업을 수행할 있습니다. 기술적인 표현을 빌리자면, FPGA 설계에서 유연성을 허용하고, 설계 일정에 많은 비용을 투입하거나 지연 위험을 감수하지 않고 시스템 일부의 작동 방식을 변경하는 방법입니다.

Upload: sam-jin

Post on 30-Jul-2015

66 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: FPGAs For Dummies-ch01

제 1 장

모두를 위한 FPGA

이 장에서 다루는 내용* FPGA 소개* FPGA 의 작동 원리 및 기능 탐색* FPGA 와 ASIC 의 차이점 살펴보기

반갑습니다! 이 장을 읽고 있다면 이전에 FPGA(Field Programmable Gate Array)에 대해 배웠지만 더 자세히 알고자 하는 엔지니어에게 훌륭한 길잡이가 되어줄 것입니다. 설계에서 어떤 방식으로 사용할 수 있는지 궁금할 것입니다. 여기에서는 FPGA 를 소개하고 어떤 문제를 해결해주는지 설명합니다. 또한 작동 원리와 기능을 살펴보고 설계 트레이드오프와 FPGA 기능의 실체를 파헤칩니다.

다른 하드웨어 구현 방법에 비해 FPGA 는 두 가지 큰 이점을 지니고 있습니다. 첫째, 모든 경쟁업체에서 사용하는 동일한 ASSP(Application Specific Standard Product)를 사용하거나 ASIC(Application Specific Integrated Circuit) 설계에 따른 시간, 비용, 위험을 감수하지 않고 필요한 하드웨어를 정확하게 구현할 수 있습니다.

하지만 마찬가지로 중요한 점은, FPGA 커스터마이즈 기능을 통해 일반적으로 ASSP 의 마이크로프로세서 코어에서 작업을 수행할 때보다 FPGA 에서 더 간단하고, 더 빠르고, 더 에너지 효율적인 방식으로 작업을 수행할 수 있다는 것입니다.

왜 FPGA 가 필요합니까?당연한 질문입니다! FPGA 는 제조 후 기능을 정의할 수 있는 반도체 소자입니다. FPGA 는 제품이 현장에 설치된 이후에도 제품 특성 및 기능을 프로그래밍하고, 새 표준을 채택하고, 특정 애플리케이션에 맞게 하드웨어를 재구성할 수 있습니다. 그래서 필드 프로그래머블이라는 용어를 사용합니다. 그리고 게이트 어레이는 논리 게이트의 2 차원 배열입니다. 이러한 내용을 충분히 이해하면 이처럼 간단한 계산 기능을 추가하여 의미있는 작업을 수행할 수 있습니다.

덜 기술적인 표현을 빌리자면, FPGA 는 설계에서 유연성을 허용하고, 설계 일정에 많은 비용을 투입하거나 지연 위험을 감수하지 않고 시스템 일부의 작동 방식을 변경하는 방법입니다.

Page 2: FPGAs For Dummies-ch01

간단한 예로 차량용으로 설계된 후방 카메라를 들 수 있습니다. 카메라 시스템이 이미지 센서에 이미지가 포착된 순간부터 이미지 프레임이 디스플레이에 실제로 나타날 때까지 250 밀리초가 걸리고, 변경된 정부 규정에서 이러한 지연이나 대기 시간이 100 밀리초를 넘지 않도록 요구하는 경우, FPGA 에서 이미지 신호 처리 파이프라인을 조정하여 새로운 대기 시간 요구 사항을 준수하는 방법을 찾을 수 있습니다. 이는 마이크로프로세서 기반 시스템으로는 거의 불가능합니다. 이 예에서 회사는 부품을 재설계하거나 새로운 프로세서를 모두 구매하지 않아도 되므로 FPGA 를 사용하여 큰 혜택을 얻을 수 있습니다.

초창기에 FPGA 회로는 매우 컸으며 단일 칩에 많은 기능을 구현할 수 없었습니다. 설계자가 할 수 있는 일은 단지 FPGA 로 인터페이스를 구축하는 것이었고, 고객은 해당 인터페이스를 다른 작업을 수행하도록 다시 프로그래밍할 수 있었습니다(예를 들어, 키보드 입력으로 작동하는 인터페이스를 터치 스크린 장치의 입력을 처리하는 인터페이스로 변경). 하지만, 곧 설계자는 FPGA 에서 하위 시스템 전체를 구축할 수 있다는 것을 알게 되었으며, 이는 더 이상 ASIC 만 사용하여 이러한 하위 시스템을 구현하도록 제약이 따르지 않음을 의미했습니다. 회로 구성 요소가 점차 작아짐에 따라 설계자가 동일한 보드 공간에 더 많은 소자를 담고 더 복잡한 기능과 더 빠른 연산을 수행할 수 있게 되었으며, 그 결과 처리 속도가 더 빨라지고 전력 소모가 줄어들었습니다.

<기술 정보>모던 FPGA 는 구성 가능한 SRAM(Static Random Access Memory 또는 플래시), 고속 입출력 핀(I/O), 논리 블록 및 라우팅이 혼재되어 구성되어 있습니다. 특히 FPGA 는 LE 라고 하는 프로그래머블 논리 요소는 물론, LE 가 서로 물리적으로 연결될 수 있도록 재구성 가능한 인터커넥트 계층구조도 포함합니다. 복잡한 기능을 수행하거나 단순히 AND 및 OR 같은 기초 논리 게이트를 실행하도록 LE 를 구성할 수 있습니다. 대부분의 FPGA 는 메모리 블록도 포함합니다. (이러한 주제에 대한 자세한 내용은 "FPGA 의 빌딩 블록" 섹션을 참조하십시오.)

오늘날 하드 지적 재산(IP)은 전력 소모를 줄이고 비용을 낮추면서도 풍부한 기능을 제공하도록 FPGA 패브릭으로 구축할 수 있습니다. 현재 FPGA 에 포함된 하드 IP 의 일부 예로는 메모리 블록, 회로 계산, 트랜시버, 프로토콜 컨트롤러 및 심지어 중앙 처리 장치(CPU)도 있습니다. 하지만 기억해야 할 중요한 사실은 이 하드 IP 는 나머지 FPGA 처럼 커스터마이즈할 수 없다는 것입니다! 예를 들어, DSP(Digital Signal Processor)와 같은 하드 IP 통합은 설계자가 이러한 공통 부분을 시스템에 추가할 때마다 처음부터 새로 구축해야 하는 번거로움으로부터 해방시켜줍니다. 이러한 편리한 기능 덕분에 상품성을 갖추게 되었고, 그에 따라 대부분의 전자 시스템에서 상당히 일관성있게 작동하므로, FPGA 제조업체가 수월하게 하드 IP 구성 요소를 FPGA 에 통합할 수 있습니다.

<기술 정보>

Page 3: FPGAs For Dummies-ch01

ASIC 와 ASSPASIC(Application Specific Integrated Circuit)는 트랜지스터, 콘덴서 및 레지스터 등의 전자 구성 요소로 구성된 집적 회로로, 대개 특정 용도로 커스터마이즈된 실리콘 또는 기타 반도체 재료로 구성된 웨이퍼에서 제작됩니다. ASIC 의 두가지 예로 녹음기나 고효율 비트코인 마이너가 있습니다. 시간이 지나면서 IC 에서 사용되는 구성 요소의 크기가 줄어들었습니다. 즉 동일한 공간을 사용하여 더 복잡한 회로를 만들 수 있게 되었습니다. 이러한 구성 요소의 축소 덕분에 이제 일부 ASIC 는 여러 마이크로프로세서와 기타 복잡한 하위 시스템을 포함할 정도로 커졌습니다.

ASSP(Application Specific Standard Product)는 단일 고객을 대상으로 설계되고 판매되는 ASIC 와는 반대로, 특정 애플리케이션 시장에 집중하고 두 명 이상의 사용자에게 판매되는 (따라서 표준인) IC 입니다. ASSP 의 몇 가지 예로 많은 스마트폰과 태블릿의 중심부에 있는 마이크로컨트롤러와 시스템 칩을 들 수 있습니다.

ASIC 와 ASSP 는 전용 기능에 맞춰 특별히 설계됩니다. 구성의 엄격한 통제로 인해 ASIC 및 ASSP 는 아주 소형이며, 저렴하고 빠르면서도 전력 소모가 적습니다. 따라서 전자 설계에 가장 적합한 특성을 모두 갖추고 있습니다. 제조 시 기능이 고정 배선되므로 회로의 일부 기능을 변경하기가 쉽지 않습니다. 실제로 이러한 회로는 실리콘 웨이퍼에 영구적으로 구현되므로, 단순히 회로망을 떼어내고 다른 것으로 교체할 수 없습니다. 설계에서 변경해야 할 사항이 있는 경우, 전체 칩을 폐기하고 처음부터 다시 시작해야 합니다.

FPGA 살펴보기다음 섹션에서는 FPGA 를 처음 배운 이후 오랜 시간이 지나 일부 세부 내용이 기억나지 않는 분들을 위해 FPGA 구성 요소에 대해 자세히 논하고 FPGA란 무엇인지 좀 더 쉽게 설명합니다.

FPGA 의 빌딩 블록와이어, 논리 게이트 및 레지스터의 세 가지 간단한 조각으로 모든 디지털을 구축할 수 있습니다(그림 1-1 참조). 레지스터는 다른 정보를 기억하도록 명령을 받기 전까지 정보 조각을 기억합니다. 논리 게이트는 신호에서 간단한 논리 연산을 실행하고 와이어는 이러한 다른 조각들을 연결합니다.

그림 1-1: 디지털 시스템의 빌딩 블록.

Altera Corporation 제공논리 게이트

논리 게이트는 디지털 회로의 핵심 기능을 수행합니다. 즉, 컴퓨터가 0 과 1 을 나타내기 위해 사용하는 전기적 펄스인 입력에서 간단한 논리를 수행합니다. 이러한 간단한 연산만으로는 그다지 많은 작업을 수행할 수 없지만 수천 또는 수백만 개가 합쳐지면 진정으로 강력한 기능을 발휘할 수 있습니다. 컴퓨터의 CPU 는 컴퓨터로 가능한 모든 기능을 수행할 수 있는 수십억 개의 논리 게이트로 구성되어 있습니다.

<기술 정보>

Page 4: FPGAs For Dummies-ch01

기능적 회로 역할을 수행하기 위해 논리 게이트는 부울 대수라는 산술 유형을 사용합니다. 부울 대수는 1854년 조지 불(George Boole)에 의해 처음 소개되었습니다. 기초 대수학과 달리, 변수의 값은 숫자이며 주요 연산은 더하기와 곱하기이고, 부울 대수의 기본 연산은 결합 AND, 분리 OR 및 부정 NOT 입니다. 부울 대수에서 변수의 값은 참과 거짓입니다.

기본적인 부울 대수 연산은 다음과 같습니다.

* And(결합)는 x AND y 로 나타내며, x 와 y 모두가 참이면 참인 결과를 산출하고 그렇지 않으면 거짓인 결과를 산출합니다.

* Or(분리)는 x OR y 로 나타나며, x 나 y 중 하나가 참이면 참인 결과를, x 와 y가 모두 참이 아니면 거짓인 결과를 산출합니다.

* Not(부정)은 NOT x 로 나타내며, x 가 거짓이면 참인 결과를, x 가 참이면 거짓인 결과를 산출합니다.

부울 대수가 가장 일반적으로 사용되는 분야 중 하나는 디지털 논리 설계입니다. 부울 대수는 입력이 0 과 1 또는 거짓과 참인 디지털 회로에 직접 매핑되는 것으로 밝혀졌습니다. 0 과 1 로 간단한 부울 연산을 실행하는 이러한 논리 게이트를 더 많이 연결하여 고급 기능을 실행하는 시스템을 구현할 수 있습니다. 예를 들어, 논리 게이트는 화성 탐사 로봇을 안내하고, 수십억 개의 소자를 위성 위치 확인 시스템(GPS)에 연결하고, 심지어 아이폰에서 즐겨찾는 게임에 접속하여 배드피기스에서 버드를 실행할 수도 있습니다!

레지스터레지스터는 나중에 사용하기 위해 데이터 조각을 저장하는 간단한 소자입니다. 레지스터는 신속하게 액세스할 수 있는 단기 데이터 저장소라고 생각하십시오. 이곳은 전화를 걸기 전에 해당 전화 번호를 잠시 보관하는 장소입니다. 새로운 약속 시간 등 무언가를 기억하려고 하면, 즉시 이전에 기억했던 전화 번호가 약속 시작 시간으로 교체됩니다. 레지스터는 기존 정보를 잊고 새 정보를 보관하라는 명령을 받을 때까지 해당 정보를 보관합니다.

와이어모든 디지털의 세 번째 부분은 모든 레지스터와 논리 게이트를 연결하는 데 사용되는 와이어입니다. 1 + 2 와 같은 간단한 작업에서부터, 블루레이 디스크를 읽어들여 블루 LED 의 펄스를 TV 화면에서 고화질 이미지로 변환하는 등의 복잡한 작업에 이르기까지 원하는 작업을 수행하려면, 이러한 요소들을 전체 시스템에 연결해야 합니다. 정확한 수량의 논리 게이트와 레지스터를 와이어로 모두 연결하여 원하는 모든 디지털 시스템을 구축할 수 있습니다.

새로운 시각으로 FPGA 설명그러나 잠시만 기다리십시오! 논리 게이트, 레지스터 및 와이어에 대해 앞서 언급한 이 모든 내용은 지극히 기술적이며 매우 추상적으로 들립니다. FPGA 를 이해하려면 경험이 풍부한 전자 엔지니어여야 할까요? 아닙니다! 두 가지 서로

Page 5: FPGAs For Dummies-ch01

다른 메타포를 사용하여 FPGA 작동 원리를 설명할 수 있습니다. 첫 번째는 비드와 문자열 메타포입니다. 두 번째는 레고 메타포입니다.

그렇다면 디지털 전자 시스템 설계 시 비드와 레고 조각은 어떤 역할을 해야 할까요? 비드와 레고 조각은 논리 요소를 사용하여 전자 시스템을 구축하는 두 가지 접근 방법을 보여주는 것으로 밝혀졌습니다.

비드와 문자열비드와 문자열에서 제시하는 방법은 설계자가 소량의 비드와 짧은 문자열을 사용하여 패턴을 가장 세밀하게 제어하고 모두 연결할 수 있도록 합니다. 그 결과는 아름답고 매우 복잡한 패턴입니다. 하지만 이처럼 세분화된 제어는 대가가 따릅니다. 모든 작업을 실행 취소하고 다시 시작하지 않으면 패턴을 살짝 변경하는 것조차 불가능하지는 않더라도 매우 어렵습니다. 비드와 스레드를 디지털 전자 설계로 매핑하면 ASIC 또는 ASSP 와 매우 유사한 설계를 구현할 수 있습니다.

다른 패턴으로 배열되고 스레드에 의해 연결된 서로 다른 색상의 많은 비드로부터 만들어진 비드워크 패턴을 가정합시다. 이러한 간단한 구성 요소를 사용하여 비드의 수, 해당 색상 및 이를 배열하는 방법에 따라 가장 간단한 패턴부터 가장 복잡한 패턴에 이르기까지 거의 모든 유형의 패턴을 만들 수 있습니다.

이제 비드가 레지스터와 논리 게이트를 모두 나타낸다고 가정하고, 문자열을 와이어로 가정합시다. 비드나 문자열과 마찬가지로 이러한 요소는 매우 간단한 연산부터 매우 복잡한 연산에 이르기까지 모든 유형의 연산을 실행할 수 있는 시스템을 구현합니다. 서로 다른 비드 색상은 AND, OR 또는 NOT 과 같은 서로 다른 유형의 논리 게이트를 나타내는 것으로 생각할 수 있으며, 간단한 비드의 색상 배열을 문자열과 함께 사용할 경우 매우 복잡한 패턴이 될 수 있는 것과 마찬가지로, 이러한 간단한 산술 연산이 얼마나 복잡한 계산이 될 수 있는지 살펴 볼 수 있습니다.

패턴에서 비드를 배열하여 아름다운 디자인을 만들 수 있지만, 비드를 재배열하거나 비드의 색상을 변경하여 다른 패턴으로 변경하려고 하면 어떤 일이 발생할까요? 이렇게 하면 일이 상당히 복잡해 질 수 있습니다! 패턴을 변경하려면 주변 항목들도 변경해야 하는데, 그러면 모든 문자열을 풀어헤쳐야 합니다. 스레드가 매우 긴밀하게 연결되어 있어서 설계의 일부를 실행 취소할 수 없다는 것을 곧 알게 될 것입니다. 패턴을 살짝 변경하려고만 해도 전체 설계를 뜯어내야 한다는 것을 금방 알게 될 것입니다. 글쎄요, 그다지 유연하지 않은 것 같죠?

레고레고에서 제시하는 접근 방법은 좀 다릅니다. 레고는 상대적으로 크고 두툼하며 블록의 특정 지점에만 끼울 수 있습니다. 레고를 사용하면 설계를 모두 뜯어내고 처음부터 다시 시작하지 않고서도 아주 쉽게 설계의 작은 부분만 변경할 수 있습니다. 레고 설계는 비드와 스레드로 제작된 패턴만큼 세련되고 복잡하지는 않습니다. 하지만 모두 무너뜨리고 처음부터 다시 시작하지 않고서도 설계의

Page 6: FPGAs For Dummies-ch01

일부를 변경할 수 있으므로, 개인적으로 디지털 전자 설계에서 두 번째 접근 방법을 선호합니다. FPGA.

어린 시절 또는 자녀와 함께 레고 조각으로 빌딩, 소방차, 우주선 등을 만드느라 많은 시간을 보낸 경험이 있을 것입니다. 마찬가지로, 테이블을 만들고 일부 블록은 논리 게이트, 일부는 레지스터, 나머지는 이들 모두를 연결하는데 사용되는 와이어라고 가정하면, 레고를 사용하여 디지털 시스템을 훌륭히 재현할 수 있습니다.

지금 누군가 테이블의 오른쪽 하단 모서리의 패턴을 변경하고 레고 색상을 변경하고 싶다고 말했다고 가정합시다. 레고 조각은 모두 서로 연결되는 조각이므로, 손쉽게 오른쪽 하단 모서리에서 해당 조각을 분리하고 다른 레고 그룹으로 교체할 수 있습니다. 테이블의 나머지 레고는 건드리지 않으며 일부만 변경하기 위해 전체 설계를 다시 실행할 필요가 없습니다.

FPGA 와 ASIC 비교FPGA 는 일반적으로 ASIC 보다 더 유연하고 비용 효율적입니다. 다음 섹션에서 그 이유에 대해 설명합니다.

비용 및 유연성FPGA 를 사용하여 ASIC 에서 할 수 있는 모든 논리적 기능을 구현할 수 있지만, 두드러진 이점은 칩 제조 후 기능을 업데이트할 수 있다는 점으로, 다수의 애플리케이션에 적용될 수 있습니다. FPGA 는 고객이 업체와 계약을 맺고 그들의 요구에 맞게 ASIC 를 설계하고 제작하는 것이 아니라, 고객의 요구 사항에 따라 FPGA 를 프로그래밍할 수 있기 때문에 ASIC 보다 비용 효율적입니다.

설계 시 위험 감소 대비 속도비용에 관계없이 세계에서 가장 진보된 반도체 공정을 사용하면 언제든지 현존하는 가장 빠른 FPGA 보다 더 빠르게 실행되는 ASIC 를 설계할 수 있을 것입니다. 하지만 거의 대부분의 사람들이 가장 진보된 공정을 사용하지 않습니다. 이렇게 하는 것은 위험하고 매우 어려우며, 비용이 부담스러울 수 있습니다. 사실상 극소수의 ASSP 업체만이 새로운 공정이 나오는 즉시 올라 탈 수 있습니다. 그 밖의 모든 사람들은 1, 2 또는 3 세대 공정을 사용합니다. 또한 실제로 현존하는 가장 빠른 FPGA 로 할 수 있는 작업은 이전 ASIC 공정으로 바로 완료할 수 있습니다. FPGA 는 설계 작업을 줄여주고 휠씬 덜 위험합니다.

예를 들어, 특정 전력 효율성과 성능 요구 사항을 갖춘 시스템을 설계하고 이전의 65nm(나노미터) ASIC 를 사용할 계획인 경우, 현재의 20nm FPGA 로 비슷한 결과를 달성할 수 있다는 사실을 알고 계십니까?

또한 FPGA 를 사용하면 설계 시간을 단축하고, 설계 오류 위험을 줄이고, ASIC보다 총 소유 비용(TCO)을 낮출 수 있습니다. 대부분의 애플리케이션에서 FPGA

Page 7: FPGAs For Dummies-ch01

의 전력 소비는 사용자 요구에 부합할 것입니다. 이처럼 낮은 TCO 와 뛰어난 유연성 덕분에 FPGA 는 종종 최선의 기술적 선택이 되고 있습니다.

<기술 정보>나노미터(nm)는 칩의 트랜지스터 크기 측정 단위입니다. 트랜지스터는 수십년에 걸쳐 작아지고 있습니다. 제 2 장을 참조하십시오.

레고를 비유하여 설명한 대로, 시스템에 FPGA 를 선택하면 나머지 설계에 영향을 주지 않고 FPGA 의 작은 부분을 수정할 수 있기 때문에, 설계자가 더 쉽게 구성할 수 있고 개발 일정에 영향을 주는 위험 요소가 줄어듭니다.

놀라울 정도로 사용하기 쉬운 FPGA일부 설계자는 모던 FPGA 로 시스템을 구축하는 것이 단지 약간의 유용성을 위해 수백만 개의 논리 게이트와 대규모 연결을 엉망으로 만들어야 하는 것으로 잘못된 인식을 갖고 있습니다. 이러한 인식이 사실이라면 FPGA 사용이 증가하지 않았을 것입니다. 대신에 극소수의 FPGA 사용자만 남아 있을 것입니다.

<기억>희소식은 FPGA 설계자가 클록 생성기, DRAM(Dynamic Random Access Memory) 컨트롤러, PCI Express(Peripheral Component Interconnect) 컨트롤러는 물론 전체 멀티코어 마이크로프로세서와 같은 공통적으로 필요한 구성 요소를 추가하는 어려운 작업들을 이미 대부분 마쳤기 때문에, 애플리케이션에 특정한 기능들을 커스터마이즈하는 데만 집중하면 된다는 것입니다.

하드 IP이 장의 앞부분에서 하드 IP 는 DRAM 컨트롤러, PCI 컨트롤러, 클록 생성기 및 큰 메모리 블록과 같은 FPGA 로 구축된 지적 재산이라고 언급했습니다. 실제로 오늘날의 FPGA 에는 SoC(System on a Chip)가 된 하드 IP 가 상당히 많이 있습니다.

대부분의 시스템 설계자가 FPGA 의 하드 IP 에 구축해야 하는 공통 기능뿐만 아니라, 레이더나 통신용 고속 직렬 트랜시버 및 신호 처리용 DSP(Digital Signal Processor) 곱셈 누산기와 같이 흔히 사용되지 않는 기능도 포함될 수 있습니다. 지금은 심지어 듀얼 코어 ARM(ARM 은 마이크로프로세서 설계 브랜드) CPU 하위 시스템도 내장할 수 있습니다. 사실 오늘날의 하이엔드 FPGA 는 기판의 절반에만 프로그래머블 논리가 있고 나머지 절반은 하드 IP 로 구성됩니다. 현재 설계자는 일반적으로 필요한 IP 가 이미 내장된 FPGA 로 시작한 후, 프로그래머블 논리를 사용하여 FPGA 를 그들의 특정 애플리케이션에 맞게 커스터마이즈합니다.

Page 8: FPGAs For Dummies-ch01

병렬 연산 및 명령 감소모던 설계자는 더 복잡한 연산을 간단하게 줄여주는 스마트한 툴을 만드는 데 익숙하고(명령 감소로 통칭), 또한 동시에 실행되는 일련의 명령으로 복잡한 연산을 수행할 수 있으며, 이를 병렬 연산이라고 합니다.

모두 근사해 보이지만 실제 의미는 무엇입니까? 마이크로프로세서는 단순히 해당 명령을 실행하는 방식으로 해당 작업만 수행할 수 있습니다. 프로그램이 곱하라고 말하면, 마이크로프로세서가 메모리에서 명령을 불러오고, 디코딩하고, 각각의 번호를 로드하고, 곱하고, 결과를 저장합니다. 이러한 각 단계는 시간과 에너지를 소비합니다. 하지만 실행하려는 작업이 단지 어떤 숫자에 2 를 곱하는 것이라면 어떨까요? 곱셈 연산이 있고 계수 중 하나가 상수 값인 것을 알고 있는 경우, 처리 시간과 전력을 절약하기 위해 이 복잡한 연산을 더 간단히 줄일 수 있습니다. FPGA 와 달리 마이크로컨트롤러는 가능한 경우 곱셈을 덧셈으로 줄이는 스마트 기능을 가지고 있지 않으므로, 곱셈 연산을 실행해야 하며, 그 결과 실행 속도가 느려지고 전력 사용량이 늘어납니다.

<팁>벡터 수학 계산 등을 수행할 때 FPGA 는 진정으로 빛을 발합니다. 벡터 수학은 물리 수업에 국한되지 않습니다. 큰 숫자 집합의 각 숫자에 대해 동일한 연산을 실행해야 할 때마다 프로그래머들은 이를 사용합니다. 여기에서 FPGA 의 큰 장점은 마이크로프로세서가 각 숫자(또는 기껏해야 한 번에 몇 개의 숫자)를 개별적으로 처리해야 하지만, 다수의 연산과 심지어 서로 다른 다수의 연산을 동시에(병행하여) 실행하도록 FPGA 를 프로그래밍할 수 있다는 것입니다. 128 요소 행렬이 있는 경우 128 개의 산술 "파이프라인"을 구축할 수 있으므로, 이러한 모든 연산을 동시에 실행하면 성능과 전력 사용량에서 큰 이득을 얻을 수 있습니다.

종종 ASIC 나 ASSP 가 정답은 아닙니다!