• ADAS
  • SDN
  • video

Board&Kits

LUT 308개로 구현하는 8088 마이크로프로세서 IP 코어, Kintex-7 FPGA에서 180 MHz의 실행 속도 실현
LUT 308개로 구현하는 8088 마이크로프로세서 IP 코어, Kintex-7 FPGA에서 180 MHz의 실행 속도 실현
2016-03-21
MicroCore Labs사가 모든 x86 프로세서 매니아들을 위해 오리지널 8088 마이크로프로세서의 정밀 사이클(cycle-accurate), FPGA 기반 IP 코어 구현물을 개발했습니다. MCL86이라고 불리는 이 제품이 Xilinx Kintex-7 FPGA 내에서 사용하는 LUT는 308개에 불과하며, 클럭 속도는 180 MHz에 이릅니다. 100MHz 속도에서 MCL86 프로세서 코어는 1979년에 선보인 오리지널 4.77MHz “8088” 마이크로프로세서(3 미크론 IC 공정 기술로 구현된!)의 핀 레벨 거동을 모사하는 정밀 사이클 성능을 구현합니다.

동등한 성능에서 20배의 클럭 속도 차이를 보이는 것은 이 IP 코어가 매 4.77MHz 클럭마다 20회 동작하는 마이크로시퀀서를 기반으로 하고 있기 때문입니다. 이 코어의 BIU(bus interface unit)에 내장된 카운터는 각 명령어의 마이크로코딩 된 실행 루틴 이후에 지연을 추가함으로써 적절한 연산 코드 타이밍을 구현합니다. 단지 8088 연산 코드만 실행하면 되고 오리지널 프로세서의 정확한 타이밍 거동 재현 같은 것은 아무래도 좋다면, MicroCore Labs사에서 지연 카운터를 제거하여 속도를 크게 높일 수도 있습니다. 뿐만 아니라 MCL86 코어는 SETALC와 같이 자료에 없는 8088 명령어들도 지원합니다.
 
그렇다면 LUT 308개란 대체 어느 정도의 크기일까요? 가장 작은 Kintex-7 FPGA는 K70T로서, 로직 셀 6만 5,600개가 집적되어 있습니다(로직 셀은 “고전적인 4입력 LUT 한 개와 플립플롭 한 개의 로직 등가물”이라고 User Guide UG474는 설명하고 있습니다). 다시 말해, 소비 자원이 이처럼 매우 작은 프로그래머블 디바이스의 1%에도 훨씬 못 미치는 것입니다. 가장 작은 Artix-7 FPGA인 A15T의 로직 셀 수는 1만 6,640개입니다. 308개의 LUT를 MLC86 코어용으로 할애하더라도 다른 회로용으로 사용할 수 있는 로직 셀이 1만 6,000개 이상이나 남는 것입니다. 이것은 작은 프로세서 코어입니다.
 
MicroCore Labs사가 유튜브에 올린 10초 길이의 비디오에서는 이 코어가 오리지널 IBM PC 하드웨어 상에서 Landmark CPU Speed Test를 수행하는 모습을 보여주고 있습니다. (이 테스트를 기억하는 독자라면 아마도 30세가 넘었을 것입니다.) 비디오는 다음과 같습니다:

필자의 좋은 친구로서 MCL86 프로세서 코어에 대해 “FPGA LUT 308개만으로 개발할 수 있는 정밀 사이클 8088/8086 소프트 프로세서 코어”라는 글을 써주신 embedded.com의 Max Maxfield 씨에게 감사 드립니다. 그의 기사에는 해당 코어 개발자와의 인터뷰도 포함되어 있습니다.
적용분야 :
High Performance Computing
관련제품 :
Kintex-7