- Title: BRISC-V An Open-Source Architecture Design Space Exploration Toolbox
- ArXiv ID: 1908.09992
- 발행일: 2019-08-28
- 저자: Sahan Bandara, Alan Ehret, Donato Kava and Michel A. Kinsy
📝 초록
이 논문에서는 레지스터-트랜스퍼 수준 (RTL) 아키텍처 설계 공간 탐색을 위한 플랫폼을 소개합니다. 이 플랫폼은 오픈 소스이며, RISC-V 기반의 단일 및 멀티코어 시스템 설계를 위해 파라미터화되고 합성 가능한 RTL 모듈 세트로 구성됩니다. 플랫폼은 높은 수준의 모듈성을 갖추고 있습니다. 다양한 복잡도의 RISC-V 기반 코어, 다중 레벨 캐시 및 메모리 조직, 시스템 토폴로지, 라우터 아키텍처 및 라우팅 방식을 탐색하기 위한 고성능, 정확한 파라미터화된, 조합 가능한 RTL 모듈을 제공합니다. 이 플랫폼은 RTL 시뮬레이션과 FPGA 기반의 에뮬레이션에 사용될 수 있습니다. 하드웨어 모듈은 벤더별 블록 없이 합성 가능한 Verilog로 구현되었습니다. 플랫폼에는 코어를 위한 소프트웨어 개발을 돕는 RISC-V 컴파일러 도구체인, 시스템 구성용 웹 기반 그래픽 사용자 인터페이스 (GUI), 그리고 RISC-V 어셈블리 시뮬레이터가 포함되어 있습니다. 이 플랫폼은 단순한 싱글 사이클 프로세서에서 복잡한 메모리 계층과 네트워크-온-칩을 갖춘 멀티코어 SoC까지 다양한 RISC-V 아키텍처를 지원합니다. 모듈은 증분적 추가 및 수정을 지원하도록 설계되었습니다. 구성 요소 간의 인터페이스는 프로세서의 전체 캐시 모듈, 코어 또는 개별 파이프라인 스테이지가 시스템의 나머지를 변경하지 않고 수정되거나 교체될 수 있도록 설계되었습니다. 이 플랫폼은 연구원들이 필요에 따라 맞춤화할 수 있는 완성된 RISC-V 멀티코어 시스템을 빠르게 인스턴스화하고 합성 가능한 RTL로 만들 수 있게 합니다.
💡 논문 해설
**핵심 요약**: 이 논문은 RISC-V 아키텍처를 기반으로 한 단일 및 멀티코어 시스템 설계를 위한 오픈 소스 플랫폼을 소개합니다. 이 플랫폼은 합성 가능한 Verilog 모듈로 구성되어 있으며, 다양한 코어 복잡도, 캐시 및 메모리 구조, 네트워크-온-칩(NOC) 등을 탐색할 수 있습니다.
문제 제기: 멀티코어 또는 다중 코어 프로세서 시스템 설계는 시간이 많이 걸리고 복잡합니다. 다양한 설계 결정들이 성능에 미치는 영향을 정확하게 이해하기 어렵습니다. 이 문제를 해결하려면 유연한 마이크로아키텍처 설계 공간 탐색 플랫폼이 필요합니다.
해결 방안 (핵심 기술): 제안된 플랫폼은 RISC-V 아키텍처를 기반으로 한 모듈화된, 파라미터화된 Verilog 코드로 구성됩니다. 이 코드는 다양한 코어 복잡도와 메모리 구조를 탐색할 수 있는 합성 가능한 RTL 모듈을 제공합니다. 플랫폼에는 RISC-V 컴파일러 도구체인, 어셈블리 시뮬레이터, 그리고 GUI 기반의 하드웨어 구성 도구가 포함되어 있습니다.
주요 성과: 이 플랫폼은 다양한 코어 설계와 메모리 구조를 빠르게 탐색하고 에뮬레이션할 수 있게 합니다. 예를 들어, 싱글 사이클 프로세서에서부터 7단계 파이프라인 및 Out-of-Order 프로세서까지 다양한 코어 설계가 가능합니다.
의의 및 활용: 이 플랫폼은 연구자들이 복잡한 멀티코어 시스템을 빠르게 탐색하고 개발할 수 있게 합니다. 이를 통해 새로운 아키텍처를 실험하거나, 최적화된 설계를 찾는 등 다양한 활용이 가능합니다.
📄 논문 발췌 (ArXiv Source)
---
## 개요
단일 코어, 멀티코어, 다중 코어 프로세서 시스템의 설계, 구현 및 테스트는 복잡하고 시간이 많이 소요되는 작업입니다. 디자이너들은 성능에 미치는 영향을 이해하기 어려운 여러 가지 설계 결정을 해야 합니다. 멀티코어와 다중 코어 시스템의 크기와 복잡성이 증가함에 따라 개발 시간과 노력도 급증하여 설계 공간 탐색 및 연구의 진입 장벽이 높아집니다. 이러한 문제를 해결하기 위해 RISC-V 기반 멀티코어 시스템 마이크로 아키텍처 설계 공간 탐색 플랫폼을 제안합니다.
플랫폼의 주요 구성 요소는 다음과 같습니다:
Verilog으로 작성된 모듈화되고 파라미터화된 합성 가능한 멀티코어 RISC-V 하드웨어 시스템.
사용자의 코드를 베어메탈 실행을 위한 하드웨어 시스템에 컴파일하는 RISC-V 도구체인.
하드웨어 시스템과 독립적으로 사용자 소프트웨어를 테스트하기 위한 RISC-V 어셈블리 시뮬레이터.
멀티코어 하드웨어 시스템을 가시화하고 생성하는 하드웨어 시스템 구성 GUI.
이 플랫폼은 현재 연구에서 네트워크 온 칩(NoC)의 효율적인 설계부터 캐시 타이밍 사이드채널 제거, 이종 또는 적응형 아키텍처 설계까지 다양한 분야에 활용됩니다. 플랫폼은 RISC-V 코어, 다양한 파이프라인 깊이와 구성, 사용자 선택 가능한 크기 및 결합도를 갖춘 캐시 서브시스템, 온칩 블록 RAM(BRAM) 또는 오프칩 메모리를 지원하는 메인 메모리 서브시스템, 다양한 라우터 설계와 라우팅 알고리즘을 지원하는 파라미터화된 온칩 네트워크를 탐색할 수 있습니다.
하드웨어 시스템은 벤더별 IP 블록이 없는 합성 가능한 Verilog로 구현되었습니다. 이 구현은 RTL 시뮬레이션뿐만 아니라 정확한 설계 공간 탐색을 위한 빠른 FPGA 기반 에뮬레이션을 가능하게 합니다. 파라미터화 및 모듈화는 시스템 설계에 대한 신속한 변경을 가능하게 합니다.
메인 메모리와 네트워크 온 칩
메인 메모리 인터페이스는 캐시 서브시스템과 메인 메모리를 분리합니다. 사용자는 제공된 메인 메모리 서브시스템 중 하나를 선택할 수 있습니다: (1) 통합 또는 별도의 비동기 명령 및 데이터 메모리, (2) 통합 또는 별도의 동기 명령 및 데이터 메모리, (3) 오프칩 메모리 컨트롤러.
메인 메모리 인터페이스를 오프칩 메모리 컨트롤러에 연결하면 대용량 메인 메모리를 사용할 수 있습니다. 시스템이 주어진 FPGA에서 제공되는 이상의 메모리가 필요할 때 오프칩 메모리를 사용하는 것이 유용합니다. 현재 플랫폼에는 간단한 오프칩 SRAM 메모리 컨트롤러가 포함되어 있으며, 다른 장치별 메모리 컨트롤러를 쉽게 추가할 수 있습니다. 인터페이스는 또한 온칩 네트워크에 연결하는 것을 지원하며, 이와 함께 각 노드별로 메인 메모리 크기를 구성할 수 있는 기능을 통해 균일하고 비균일 분산 메모리 시스템을 구현할 수 있습니다.
온 칩 네트워크
플랫폼의 온칩 네트워크는 메모리 서브시스템과 함께 다양한 멀티코어 아키텍처를 구현하는 데 사용됩니다. NoC는 여러 구성 옵션을 제공하여 사용자가 다른 네트워크 토폴로지와 시스템의 리소스 사용 및 성능 최적화를 탐색할 수 있습니다.
NoC 라우터는 완전히 파라미터화되었습니다. NoC 내의 라우터는 버퍼링 또는 버퍼 없는 라우터로 구성될 수 있습니다. 라우터는 고정 논리를 사용하거나 재구성 가능한 라우팅 테이블을 사용하여 무지한 라우팅 알고리즘을 지원합니다. 고정 논리는 차원 순서 라우팅(Dimension Order Routing)에 대한 것을 구현하였습니다.
재구성 가능한 라우팅 테이블은 라우팅 테이블 항목을 변경하여 다양한 라우팅 알고리즘을 활성화할 수 있습니다. 라우터의 입력 포트와 출력 포트, 라우팅 테이블 내용을 구성함으로써 다양한 네트워크 토포로지를 구현할 수 있습니다.
NoC 라우터 아키텍처.
하드웨어 구성 GUI
하드웨어 시스템 구성 애플리케이션은 사용자가 사양에 맞는 하드웨어 시스템을 구성할 수 있도록 하는 그래픽 애플리케이션입니다. 이 애플리케이션은 웹 브라우저에서 실행되므로 Windows, Linux 또는 Mac에서 사용할 수 있습니다.
하드웨어 구성 시스템을 통해 사용자는 (1) 원하는 코어 유형과 기능 선택, (2) 선택 사항으로 캐시 서브시스템 포함 및 매개변수 선택, (3) 메인 메모리 서브시스템 선택(예: 온칩, 오프칩, 통합 또는 별도의 명령 및 데이터 메모리), 그리고 (4) NoC 구성 옵션(노드 수, 라우터 토포로지, 라우팅 방식)을 선택할 수 있습니다.