재구성 가능 컴퓨팅

**재구성 가능 컴퓨팅**(Reconfigurable computing)은 필드 프로그래머블 게이트 어레이(FPGA)와 같은 유연한 하드웨어 플랫폼을 사용하여 처리함으로써 소프트웨어의 유연성과 하드웨어의 고성능을 결합한 컴퓨터 구조이다. 일반 마이크로프로세서를 사용하는 것과의 주요 차이점은 FPGA를 사용하여 사용자 정의 계산 블록을 추가할 수 있다는 점이다. 반면, 맞춤형 하드웨어, 즉 주문형 반도체와의 주요 차이점은 재구성 가능한 패브릭에 새로운 회로를 "로딩"하여 런타임 중에 하드웨어를 조정할 수 있다는 점이다. 따라서 기존 시스템에 새로운 칩을 제조하고 추가할 필요 없이 새로운 계산 블록을 제공한다.

## 역사
재구성 가능 컴퓨팅의 개념은 1960년대 제럴드 에스트린의 논문에서 표준 프로세서와 "재구성 가능한" 하드웨어 배열로 구성된 컴퓨터 개념을 제안하면서부터 존재했다. 메인 프로세서는 재구성 가능한 하드웨어의 동작을 제어한다. 후자는 영상 처리 또는 패턴 매칭과 같은 특정 작업을 전용 하드웨어만큼 빠르게 수행하도록 맞춤 제작될 수 있었다. 작업이 완료되면 하드웨어는 다른 작업을 수행하도록 조정될 수 있었다. 이로 인해 소프트웨어의 유연성과 하드웨어의 속도를 결합한 하이브리드 컴퓨터 구조가 탄생했다.

1980년대와 1990년대에는 이 연구 분야에서 많은 제안된 재구성 가능한 아키텍처가 산업 및 학계에서 개발되면서 르네상스가 일어났다. 예를 들어 Copacobana, Matrix, GARP, Elixent, NGEN, Polyp, MereGen, PACT XPP, Silicon Hive, Montium, Pleiades, Morphosys, PiCoGA 등이 있다. 이러한 설계는 복잡한 설계를 하나의 칩에 구현할 수 있게 해준 실리콘 기술의 지속적인 발전 덕분에 가능했다. 이러한 대규모 병렬 재구성 가능 컴퓨터 중 일부는 주로 분자 진화, 신경 또는 영상 처리와 같은 특수 하위 도메인을 위해 제작되었다. 세계 최초의 상업용 재구성 가능 컴퓨터인 Algotronix CHS2X4는 1991년에 완성되었다. 이는 상업적인 성공을 거두지는 못했지만, 필드 프로그래머블 게이트 어레이(FPGA)의 발명사인 자일링스가 이 기술을 인수하고 Algotronix 직원을 고용할 만큼 유망했다. 이후 기계들은 MereGen을 사용한 유전자 코딩의 자발적인 공간 자기 조직화와 같은 과학적 원리의 첫 시연을 가능하게 했다.

## 이론

### 트레데닉의 분류

재구성 가능 컴퓨팅 기계 패러다임의 근본적인 모델인 데이터 스트림 기반 안티 머신은 닉 트레데닉의 다음 컴퓨팅 패러다임 분류 체계(표 1: 닉 트레데닉의 패러다임 분류 체계 참조)에 나타난 바와 같이 이전에 도입된 다른 기계 패러다임과의 차이점으로 잘 설명된다.

### 하텐슈타인의 Xputer

컴퓨터 과학자 라이너 하텐슈타인은 재구성 가능 컴퓨팅을 안티 머신의 관점에서 설명하는데, 그에 따르면 이것은 보다 일반적인 폰 노이만 머신으로부터 근본적인 패러다임 전환을 나타낸다. 하텐슈타인은 이를 재구성 가능 컴퓨팅 역설이라고 부른다. 소프트웨어에서 컨피그웨어(소프트웨어에서 FPGA)로의 마이그레이션이 최대 4배 이상의 속도 향상과 거의 4배에 달하는 전력 소비 감소를 가져온다고 보고된다. 이는 FPGA의 기술적 파라미터가 고든 무어 곡선보다 약 4배 뒤처져 있고, 클럭 주파수도 마이크로프로세서보다 현저히 낮음에도 불구하고 발생한다. 이 역설은 부분적으로 폰 노이만 증후군으로 설명된다.

## 고성능 컴퓨팅
**고성능 재구성 가능 컴퓨팅**(HPRC)은 컴퓨터 구조로, 필드 프로그래머블 게이트 어레이와 같은 재구성 가능 컴퓨팅 기반 가속기를 CPU 또는 멀티 코어 마이크로프로세서와 결합한다.

FPGA의 논리 증가로 더 크고 복잡한 알고리즘을 FPGA에 프로그래밍할 수 있게 되었다. 이러한 FPGA를 PCI 익스프레스와 같은 고속 버스를 통해 최신 CPU에 연결하면 구성 가능한 논리가 주변기기보다는 코프로세서처럼 작동할 수 있게 되었다. 이로 인해 재구성 가능 컴퓨팅이 고성능 컴퓨팅 영역으로 들어서게 되었다.

더 나아가, FPGA에 알고리즘을 복제하거나 다수의 FPGA를 사용함으로써 여러 계산 장치가 다른 데이터를 동시에 처리할 수 있는 재구성 가능한 SIMD 시스템을 생산할 수 있게 되었으며, 이는 병렬 컴퓨팅에 매우 적합하다.

이러한 이종 시스템 기술은 컴퓨팅 연구, 특히 슈퍼컴퓨팅에서 사용된다.
2008년 논문은 4배 이상의 속도 향상 요인과 거의 4배에 달하는 에너지 절약 요인을 보고했다.
일부 슈퍼컴퓨터 기업은 FPGA를 가속기로 포함하는 이종 처리 블록을 제공한다.
한 연구 분야는 이러한 이종 시스템에 대해 얻어진 트윈 패러다임 프로그래밍 도구 흐름 생산성이다.

미국 미국 국립과학재단은 고성능 재구성 가능 컴퓨팅 센터(CHREC)를 운영하고 있다.
2011년 4월에는 유럽에서 제4회 매니코어 및 재구성 가능 슈퍼컴퓨팅 컨퍼런스가 개최되었다.

IBM이 FPGA를 IBM 파워 마이크로프로세서에 통합한다고 발표하면서 상업용 고성능 재구성 가능 컴퓨팅 시스템이 등장하기 시작했다.

## 부분 재구성
**부분 재구성**은 재구성 가능한 하드웨어 회로의 일부를 변경하는 동안 다른 부분은 이전 구성을 유지하는 과정이다. 필드 프로그래머블 게이트 어레이는 종종 부분 재구성의 지원으로 사용된다.

전자 하드웨어는 소프트웨어와 마찬가지로 하위 구성 요소를 만들고 상위 수준 구성 요소를 만들어 인스턴스화함으로써 모듈식으로 설계될 수 있다. 많은 경우 FPGA가 여전히 작동하는 동안 이러한 하위 구성 요소 중 하나 또는 여러 개를 교체할 수 있는 것이 유용하다.

일반적으로 FPGA를 재구성하려면 외부 컨트롤러가 FPGA에 설계를 다시 로드하는 동안 재설정 상태로 유지해야 한다. 부분 재구성은 FPGA 또는 외부의 컨트롤러가 재구성 가능한 모듈에 부분 설계를 로드하는 동안 설계의 중요한 부분이 계속 작동하도록 허용한다. 부분 재구성은 또한 설계 간에 변경되는 부분 설계만 저장함으로써 여러 설계에 대한 공간을 절약하는 데 사용될 수도 있다.

부분 재구성이 유용할 수 있는 일반적인 예는 통신 장치의 경우이다. 장치가 여러 연결을 제어하고 그 중 일부에 암호화가 필요한 경우, 전체 컨트롤러를 중단시키지 않고도 다른 암호화 코어를 로드할 수 있는 것이 유용할 것이다.

부분 재구성은 모든 FPGA에서 지원되지 않는다. 모듈식 설계에 중점을 둔 특수 소프트웨어 흐름이 필요하다. 일반적으로 설계 모듈은 FPGA 내에서 잘 정의된 경계를 따라 구축되며, 이는 설계를 내부 하드웨어에 특별히 매핑해야 한다.

설계의 기능에 따라 부분 재구성은 두 가지 그룹으로 나눌 수 있다.
* 동적 부분 재구성(활성 부분 재구성으로도 알려짐) - FPGA의 나머지 부분이 여전히 실행 중인 동안 장치의 일부를 변경할 수 있다.
* 정적 부분 재구성 - 재구성 프로세스 동안 장치가 활성화되지 않는다. 부분 데이터가 FPGA로 전송되는 동안 장치의 나머지 부분은 정지(종료 모드)되고 구성이 완료된 후 다시 시작된다.

## 현재 시스템

### 컴퓨터 에뮬레이션
섬네일|FPGA 보드가 Vector-06C 컴퓨터를 재현하는 데 사용되고 있다
저렴한 FPGA 보드의 등장으로 학생 및 취미 활동 프로젝트에서 빈티지 컴퓨터를 재현하거나 더 새로운 아키텍처를 구현하려는 시도가 이루어지고 있다. 이러한 프로젝트는 재구성 가능한 하드웨어(FPGA)로 구축되며, 일부 장치는 단일 재구성 가능한 하드웨어(C-One)를 사용하여 여러 빈티지 컴퓨터의 에뮬레이션을 지원한다.

### COPACOBANA
완전한 FPGA 기반 컴퓨터는 비용 최적화 코드 브레이커 및 분석기인 COPACOBANA와 그 후속작인 RIVYERA이다. 독일 보훔 및 킬 대학교의 COPACOBANA 프로젝트의 스핀오프 회사인 SciEngines GmbH는 완전한 FPGA 기반 컴퓨터 개발을 계속하고 있다.

### 미트리오닉스

미트리오닉스는 단일 할당 언어로 작성된 소프트웨어를 FPGA 기반 컴퓨터에서 컴파일하고 실행할 수 있도록 하는 SDK를 개발했다. 미트리온-C 소프트웨어 언어와 미트리온 프로세서를 통해 소프트웨어 개발자는 GPU(그래픽 처리 장치), 셀 기반 프로세서, PPU(병렬 처리 장치), 멀티코어 CPU, 전통적인 싱글코어 CPU 클러스터와 같은 다른 컴퓨팅 기술과 동일한 방식으로 FPGA 기반 컴퓨터에서 애플리케이션을 작성하고 실행할 수 있다. (사업 종료)

### 내셔널 인스트루먼츠

내셔널 인스트루먼츠는 CompactRIO라는 하이브리드 임베디드 컴퓨팅 시스템을 개발했다. 이 시스템은 사용자 프로그래밍 가능한 FPGA, 핫 스와핑 가능한 I/O 모듈, 결정론적 통신 및 처리를 위한 실시간 컨트롤러, 빠른 RT 및 FPGA 프로그래밍을 위한 그래픽 LabVIEW 소프트웨어를 수용하는 재구성 가능한 섀시로 구성된다.

### 자일링스
자일링스는 FPGA 장치의 부분 재구성 두 가지 방식인 모듈 기반 및 차이 기반을 개발했다. 모듈 기반 부분 재구성은 설계의 개별 모듈 부분을 재구성할 수 있도록 허용하는 반면, 차이 기반 부분 재구성은 설계에 작은 변경이 이루어질 때 사용될 수 있다.

### 인텔
인텔은 Stratix V와 같은 28나노미터 장치 및 20나노미터 Arria 10 장치에서 FPGA 장치의 부분 재구성을 지원한다. Arria 10을 위한 인텔 FPGA 부분 재구성 흐름은 Quartus Prime Pro 소프트웨어의 계층적 설계 방법론을 기반으로 하며, 사용자는 런타임에 재구성할 수 있는 FPGA의 물리적 파티션을 생성하고 나머지 설계는 계속 작동한다. Quartus Prime Pro 소프트웨어는 또한 계층적 부분 재구성 및 부분 재구성 시뮬레이션을 지원한다.

## 시스템 분류
새로운 아키텍처가 개발됨에 따라 재구성 가능한 아키텍처의 분류는 여전히 개발되고 개선되고 있으며, 현재까지 통일된 분류법은 제안되지 않았다. 그러나 이러한 시스템을 분류하는 데 사용할 수 있는 몇 가지 반복되는 매개변수가 있다.

### 세분성

재구성 가능한 논리의 세분성은 매핑 도구에서 다루는 가장 작은 기능 단위(구성 가능한 논리 블록, CLB)의 크기로 정의된다. 높은 세분성, 즉 미세 세분성은 하드웨어에 알고리즘을 구현할 때 더 큰 유연성을 의미한다. 그러나 이는 계산당 더 많은 라우팅이 필요하므로 전력, 면적, 지연 측면에서 불이익이 따른다. 미세 세분 아키텍처는 비트 수준 조작 수준에서 작동하며, 거친 세분 처리 요소(재구성 가능한 데이터 경로 장치, rDPU)는 표준 데이터 경로 애플리케이션에 더 최적화되어 있다. 거친 세분 아키텍처의 단점 중 하나는 세분성이 제공하는 것보다 작은 계산을 수행해야 할 경우 활용도와 성능이 저하되는 경향이 있다는 것이다. 예를 들어, 4비트 폭의 기능 단위에서 1비트 추가를 수행하면 3비트가 낭비된다. 이 문제는 거친 세분 배열(재구성 가능한 데이터 경로 배열, rDPA)과 FPGA를 동일한 칩에 두어 해결할 수 있다.

거친 세분 아키텍처(rDPA)는 워드 폭 데이터 경로(rDPU)가 필요한 알고리즘의 구현을 위한 것이다. 이들의 기능 블록은 큰 계산에 최적화되어 있으며 일반적으로 워드 폭 산술 논리 장치(ALU)를 포함하므로, 상호 연결된 더 작은 기능 단위 세트보다 더 빠르고 전력 효율적으로 이러한 계산을 수행할 것이다. 이는 연결 전선이 더 짧아 와이어 커패시턴스가 적고 따라서 더 빠르고 저전력 설계가 가능하기 때문이다. 더 큰 계산 블록을 갖는 잠재적인 바람직하지 않은 결과는 피연산자의 크기가 알고리즘과 일치하지 않을 때 자원의 비효율적인 활용이 발생할 수 있다는 것이다. 종종 실행될 애플리케이션의 유형이 미리 알려져 있어 논리, 메모리 및 라우팅 자원을 조정하여 장치의 성능을 향상시키면서도 향후 적응을 위한 특정 수준의 유연성을 제공할 수 있다. 이의 예로는 유연성을 줄여 더 일반적인 미세 세분 FPGA 사촌보다 전력, 면적, 처리량 측면에서 더 나은 성능을 얻는 것을 목표로 하는 도메인 특정 배열이 있다.

### 재구성 속도

이러한 재구성 가능한 시스템의 구성은 배포 시점, 실행 단계 사이 또는 실행 중에 발생할 수 있다. 일반적인 재구성 가능한 시스템에서는 비트 스트림이 배포 시점에 장치를 프로그래밍하는 데 사용된다. 미세 세분 시스템은 더 많은 요소가 처리되고 프로그래밍되어야 하므로 본질적으로 더 거친 세분 아키텍처보다 더 많은 구성 시간이 필요하다. 따라서 더 거친 세분 아키텍처는 잠재적으로 더 낮은 에너지 요구 사항의 이점을 얻을 수 있다. 정보가 덜 전송되고 활용되기 때문이다. 직관적으로 재구성 속도가 느릴수록 재구성의 관련 에너지 비용이 더 긴 기간에 걸쳐 상쇄되므로 전력 소비가 더 작아진다. 부분 재구성은 장치의 일부가 재프로그래밍되는 동안 다른 부분은 여전히 활성 계산을 수행할 수 있도록 하는 것을 목표로 한다. 부분 재구성을 통해 더 작은 재구성 가능한 비트 스트림이 가능하므로 비트 스트림에서 중복 정보를 전송하는 데 에너지를 낭비하지 않는다. 비트 스트림의 압축이 가능하지만, 더 작은 비트 스트림을 사용하여 절약된 에너지가 데이터를 압축하는 데 필요한 계산량보다 크지 않도록 신중한 분석을 수행해야 한다.

### 호스트 커플링

재구성 가능한 배열은 종종 호스트 프로세서에 연결된 처리 가속기로 사용된다. 결합 수준은 재구성 가능한 논리를 활용할 때 관련된 데이터 전송 유형, 대기 시간, 전력, 처리량 및 오버헤드를 결정한다. 가장 직관적인 설계 중 일부는 주변 버스를 사용하여 재구성 가능한 배열에 코프로세서와 같은 배열을 제공한다. 그러나 재구성 가능한 패브릭이 프로세서에 훨씬 더 가까운 구현도 있었으며, 일부는 프로세서 레지스터를 활용하여 데이터 경로에 구현되기도 한다. 호스트 프로세서의 역할은 제어 기능을 수행하고, 논리를 구성하고, 데이터를 스케줄링하고, 외부 인터페이스를 제공하는 것이다.

### 라우팅/상호 연결

재구성 가능한 장치의 유연성은 주로 라우팅 상호 연결에서 비롯된다. FPGA 공급업체인 자일링스와 알테라가 대중화한 상호 연결 방식 중 하나는 블록이 수직 및 수평 라우팅과 함께 배열로 배열되는 아일랜드 스타일 레이아웃이다. 부적절한 라우팅이 있는 레이아웃은 유연성이 떨어지고 자원 활용도가 낮아 성능이 제한될 수 있다. 너무 많은 상호 연결이 제공되면 필요 이상의 트랜지스터가 필요하므로 더 많은 실리콘 면적, 더 긴 와이어 및 더 많은 전력 소비가 발생한다.

## 운영 체제의 과제
재구성 가능 컴퓨팅의 주요 과제 중 하나는 더 높은 설계 생산성을 가능하게 하고 기본 개념에 익숙하지 않은 사용자에게 재구성 가능 컴퓨팅 시스템을 더 쉽게 사용할 수 있는 방법을 제공하는 것이다. 이를 달성하는 한 가지 방법은 일반적으로 운영 체제에 의해 지원되고 강제되는 표준화 및 추상화를 제공하는 것이다.

운영 체제의 주요 작업 중 하나는 하드웨어를 숨기고 프로그램(및 프로그래머)에게 멋지고 깨끗하며 우아하고 일관된 추상화를 제공하여 작업할 수 있도록 하는 것이다. 즉, 운영 체제의 두 가지 주요 작업은 추상화와 자원 관리이다.

추상화는 복잡하고 다양한 (하드웨어) 작업을 잘 정의되고 공통된 방식으로 처리하는 강력한 메커니즘이다. 가장 기본적인 OS 추상화 중 하나는 프로세스이다. 프로세스는 운영 체제가 제공하는 인식에 따라 기본 가상 하드웨어에서 자체적으로 실행되는 실행 중인 애플리케이션이다. 이는 스레드 개념을 통해 완화될 수 있으며, 다른 작업이 이 가상 하드웨어에서 동시에 실행되어 작업 수준 병렬성을 활용할 수 있도록 허용한다. 다른 프로세스와 스레드가 작업을 조정할 수 있도록 OS는 통신 및 동기화 방법을 제공해야 한다.

추상화 외에도 기본 하드웨어 구성 요소의 자원 관리가 필요하다. 운영 체제가 프로세스와 스레드에 제공하는 가상 컴퓨터가 사용 가능한 물리적 자원(프로세서, 메모리 및 장치)을 공간적으로나 시간적으로 공유해야 하기 때문이다.

## 같이 보기

* 메모리 내 컴퓨팅
* 재구성 가능 컴퓨팅 용어집
* iLAND 프로젝트
* M-Labs
* 원 칩 MSX
* 파이프렌치
* 사이프러스 PSoC
* 스프린터 (컴퓨터)

## 각주

## 더 읽어보기
* Cardoso, João M. P.; Hübner, Michael (Eds.), 재구성 가능 컴퓨팅: FPGA에서 하드웨어/소프트웨어 공동 설계까지, Springer, 2011.
* S. Hauck and A. DeHon, Reconfigurable Computing: The Theory and Practice of FPGA-Based Computing, Morgan Kaufmann, 2008.
* J. Henkel, S. Parameswaran (editors): Designing Embedded Processors. A Low Power Perspective; Springer Verlag, March 2007
* J. Teich (editor) et al.: Reconfigurable Computing Systems. Special Topic Issue of Journal it — Information Technology, Oldenbourg Verlag, Munich. Vol. 49(2007) Issue 3
* T.J. Todman, G.A. Constantinides, S.J.E. Wilton, O. Mencer, W. Luk and P.Y.K. Cheung, "Reconfigurable Computing: Architectures and Design Methods", IEEE Proceedings: Computer & Digital Techniques, Vol. 152, No. 2, March 2005, pp.&nbsp;193–208.
* A. Zomaya (editor): Handbook of Nature-Inspired and Innovative Computing: Integrating Classical Models with Emerging Technologies; Springer Verlag, 2006
* J. M. Arnold and D. A. Buell, "VHDL programming on Splash 2," in More FPGAs, Will Moore and Wayne Luk, editors, Abingdon EE & CS Books, Oxford, England, 1994, pp.&nbsp;182–191. (Proceedings, International Workshop on Field-Programmable Logic, Oxford, 1993.)
* J. M. Arnold, D. A. Buell, D. Hoang, D. V. Pryor, N. Shirazi, M. R. Thistle, "Splash 2 and its applications, "Proceedings, International Conference on Computer Design, Cambridge, 1993, pp. 482–486.
* D. A. Buell and Kenneth L. Pocek, "Custom computing machines: An introduction," The Journal of Supercomputing, v. 9, 1995, pp.&nbsp;219–230.

## 외부 링크
* 브라운 대학교 재구성 가능 컴퓨팅 강의 
* 동적 부분 재구성 소개
* 복잡한 재구성 가능한 시스템을 쉽게 구현하기 위한 ReCoBus-Builder 프로젝트
* DRESD (임베디드 시스템 설계의 동적 재구성 가능성) 연구 프로젝트

분류:디지털 전자공학