Microsoft 및 Amazon도 자사의 서비스를 지원하는 하드웨어로 채용하고 있는 'FPGA '는 구매자가 직접 회로 구성을 변경할 수 있는 점이 특징입니다. 엔지니어 Ken Shirriff 씨는 가장 먼저 생산된 FPGA 'XC2064'를 리버스 엔지니어링하여, FPGA의 기본 구조를 설명합니다.

Reverse-engineering the first FPGA chip, the XC2064
http://www.righto.com/2020/09/reverse-engineering-first-fpga-chip.html

Reverse-engineering the first FPGA chip, the XC2064

A Field-Programmable Gate Array (FPGA) can implement arbitrary digital logic, anything from a microprocessor to a video generator or crypt...

www.righto.com


1985년 자일링스에 의해 개발된 최초의 FPGA 'XC2064'는 현대의 FPGA보다 훨씬 간단한 구조였다고 합니다. 현재는 Verilog와 같은 표준화 된 언어에 따라 FPGA를 프로그래밍할 수 있지만, 당시는 자일링스의 'XACT'라고 하는 가격이 1만 2000달러(약 1270만 원)가 넘는 비싼 소프트웨어가 필요했습니다.


FPGA의 기본적인 구조는 아래의 이미지에서 확인이 가능합니다. 파란색의 'CLB(Configurable Logic Block)'라는 논리 블록은 다른 CLB 그리고 신호의 입출력을 수행하는 I/O에 상호 연결되어 있습니다.


CLB는 4개의 입력에 대해 2개의 출력을 하는 회로로, 회로 구조의 변경을 가능하게 하는 부분입니다. 임의의 회로를 프로그래밍할 수 있는 조합 회로와 1bit의 정보를 저장할 수 있는 플립플롭 회로 등을 갖추고 있으며, 이 구조를 'LUT(Lookup Table)'이라고 합니다.


XC2064의 조합 회로의 구조는 이런 느낌으로, 멀티플렉서가 메모리상의 데이터를 입력에 맞추어 선택하여 조합 회로 프로그래밍을 가능하게 합니다. A' 'B' 'C'로 표현되는 제어 입력에 따라 데이터가 선택된다는 것입니다.


XC2064는 64개의 CLB로 구현되어 있으며, CLB 사이의 복잡한 상호 연결을 가능하게 하는 것이 녹색의 '스위치 매트릭스'입니다. CLB 사이의 통신이 스위치 매트릭스를 통해 이루어집니다.

 
이상이 FPGA의 구조이지만, XC2064에 의한 구현은 조금 다르다고 합니다. XC2064는 CLB 및 라우팅 기능을 정리한 타일을 64개 가지고 있으며, 타일끼리 서로 연결되어 있습니다. 모든 타일이 밀접하고 있는 것은 아니고, 신호 증폭을 위한 '버퍼(Buffer)'가 수평 방향과 수직 방향으로 2개 설치되어 있습니다. 아래 이미지에서 녹색 선으로 표시되어 있습니다. 주황색 선은 전원(Power)이고, 빨간색의 '시프트 레지스터(Shift register)와 파란색의 '컬럼 셀렉트(Column select)'는 XC2064가 프로그램 설정을 저장하는 데 중요한 구조입니다.


타일을 확대한 사진. 녹색 테두리로 둘러싸인 부분은 프로그래밍한 설정을 저장하기 위한 영역으로 타일 전체의 40%를 차지하고 있습니다. 다른 부분은 플립플롭 및 LUT 등의 CLB 부분과 스위치 매트릭스 등의 라우팅 부분이 구현되어 있습니다.

 
XC2064가 프로그램 설정을 가져오는 방법이 다음. XC2064의 메모리는 수평 방향으로 160bit 수직으로 71bit를 유지하는 것이 가능하며, 프로그래밍 소프트웨어에서 설정한 회로 구조는 '비트 스트림'으로 시프트 레지스터에 입력됩니다. 시프트 레지스터가 71bit의 비트열로 가득찬 후, 열 선택기를 통해 현재 시프트 레지스터의 값을 어느 열의 메모리에 로드할지가 선택됩니다. 이렇게 다음의 비트 스트림이 시프트 레지스터에 로드된 컬럼 시프트가 1열씩 이동하여 모든 메모리에 비트 스트림이 로드되는 구조로 되어 있습니다.


1bit의 설정을 저장하는 메모리 회로를 확대하면 이런 느낌. 회로도로 보면 컬럼 셀렉트에 의해 활성화된 데이터 라인부터 데이터를 로드하는 구조를 쉽게 알 수 있습니다.


XC2064는 고도로 최적화된 다양한 회로가 사용되고 있습니다만, 당초 제조가 어렵고, 비용이 높았다고 합니다. 현대의 FPGA와 비교하면 XC2064의 판매 수량은 적었지만, 혁신적인 신제품의 선구자였다고 Shirriff 씨는 말합니다.

Posted by 말총머리
,