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
📝 초록 (Abstract)
이 논문에서는 레지스터-트랜스퍼 수준(RTL)의 아키텍처 설계 공간 탐색을 위한 플랫폼을 소개합니다. 이 플랫폼은 RISC-V 기반 단일 및 다중 코어 시스템 설계를 위해 오픈 소스, 파라미터화된, 합성 가능한 RTL 모듈 세트입니다. 이 플랫폼은 높은 수준의 모듈성을 갖추고 있으며 다양한 RISC-V 기반 코어 복잡도, 다단계 캐싱 및 메모리 구조, 시스템 토폴로지, 라우터 아키텍처 및 라우팅 스키마의 탐색을 위해 고정적으로 조정 가능한, 구성 가능한 RTL 모듈들을 제공합니다. 이 플랫폼은 RTL 시뮬레이션과 FPGA 기반 에뮬레이션에 모두 사용될 수 있습니다. 하드웨어 모듈들은 벤더 특정 블록을 사용하지 않는 합성 가능한 Verilog로 구현되었습니다. 이 플랫폼에는 코어를 위한 소프트웨어 개발을 돕기 위한 RISC-V 컴파일러 도구체인, 시스템 구성 그래픽 사용자 인터페이스(GUI) 및 웹 기반의 RISC-V 어셈블리 시뮬레이터가 포함되어 있습니다. 이 플랫폼은 단순한 싱글 사이클 프로세서에서 복잡한 메모리 계층과 네트워크-온-칩을 갖춘 다중 코어 SoC까지 다양한 RISC-V 아키텍처를 지원합니다. 모듈들은 점진적인 추가 및 수정을 지원하도록 설계되었습니다. 구성 요소 사이의 인터페이스는 프로세서의 일부, 전체 캐시 모듈, 코어 또는 개별 파이프라인 단계를 변경하거나 교체할 수 있도록 설계되었습니다. 이 플랫폼은 연구자들이 필요한 요구 사항에 맞게 조정 가능한 RTL을 통해 완전한 RISC-V 다중 코어 시스템을 빠르게 구현하고 수정할 수 있게 합니다.
💡 논문 핵심 해설 (Deep Analysis)
This paper introduces BRISC-V, an open-source platform for exploring various single and multi-core architectures based on the RISC-V instruction set. The platform includes synthesizable RTL modules, a graphical user interface (GUI), and a RISC-V compiler toolchain to assist in rapid prototyping of hardware designs.
The main issue addressed by this research is the difficulty and time-consuming nature of designing, building, and testing multi-core systems. With increasing complexity in these systems, traditional methods have become less feasible for design space exploration.
BRISC-V tackles this problem by providing a modular and parameterized approach to architecture design. Users can explore different configurations of RISC-V cores, cache subsystems, memory architectures, and network-on-chip (NoC) topologies through the platform’s flexible GUI and customizable RTL modules.
The primary achievement of this work is the creation of a versatile tool that enables researchers to quickly instantiate complete working RISC-V multi-core systems with synthesizable RTL. This not only accelerates design exploration but also allows for FPGA-based emulation, providing an accurate simulation environment.
This platform is significant because it bridges the gap between hardware design and software development by enabling rapid experimentation with new architectures. It supports a wide range of RISC-V designs, making it particularly useful in educational and research settings where quick prototyping and testing are essential.
📄 논문 본문 발췌 (Translation)
# 소개
단일 코어, 다중 코어 및 심지어 많은 코어 프로세서 시스템을 설계하고 구축하며 테스트하는 것은 어려우며 시간이 많이 걸리는 작업입니다. 디자이너들은 성능에 미치는 복잡한 영향을 고려해야 하는 여러 가지 디자인 결정을 해야 합니다. 다중 코어 및 많은 코어 시스템의 크기와 복잡성은 증가하고 있으며, 개발에 필요한 시간과 노력이 설계 공간 탐색 및 연구를 위한 진입 장벽을 높이고 있습니다. 이러한 증가하는 장애물로 인해 다중 코어 시스템 설계는 유연한 마이크로 아키텍처 설계 공간 탐색 플랫폼의 필요성을 초래합니다.
그러나 그러한 플랫폼을 만들기 위한 많은 도전 과제가 있습니다. 이러한 플랫폼을 만드는 데 관련된 중요한 연구 질문들은 다음과 같습니다: (1) 다중 코어 시스템의 어떤 부분이 마이크로 아키텍처 설계 공간 탐색에 중요할까요? (2) 설계 공간 탐색 플랫폼은 어떻게 사용자 친화성을 유지하면서도 FPGA 기반 에뮬레이션의 속도와 정확성을 제공할 수 있을까요? (3) 플랫폼이 지원하는 설계 공간의 크기를 최대화하여 다양한 시스템 및 연구를 지원하는 방법은 무엇일까요?
이러한 질문과 도전 과제에 대응하기 위해, 우리는 RISC-V 다중 코어 시스템 마이크로 아키텍처 설계 공간 탐색을 위한 오픈 소스 플랫폼을 제시합니다. 이 플랫폼의 주요 구성 요소들은 다음과 같습니다:
모듈화된 파라미터화된 합성 가능한 다중 코어 RISC-V 하드웨어 시스템으로 Verilog로 작성되었습니다.
사용자의 코드를 하드웨어 시스템에서 바ARE-Metal 실행을 위해 컴파일하기 위한 RISC-V 도구체인.
하드웨어 시스템과 독립적으로 사용자의 소프트웨어를 테스트하기 위한 RISC-V 어셈블리 시뮬레이터.
다중 코어 하드웨어 시스템을 시각화하고 생성하기 위한 하드웨어 시스템 구성 그래픽 사용자 인터페이스(GUI).
이 플랫폼은 현재 애nonymity를 유지하려고 합니다.
현재 빠른 마이크로 아키텍처 설계 공간 탐색을 필요로 하는 연구는 네트워크-온-칩(NoC) 개발부터 캐시 타이밍 사이드채널 제거, 이질적인 또는 적응형 아키텍처 설계에 이르기까지 다양합니다. 실제로 다중 코어 설계의 모든 하위 시스템과 관련된 활발한 연구가 계속되고 있습니다. 따라서 우리의 플랫폼은 다음과 같은 설계 공간 탐색을 지원합니다: (1) 다양한 파이프라인 깊이와 구성 옵션을 가진 RISC-V 코어; (2) 사용자가 선택할 수 있는 크기와 결합성을 갖춘 캐시 서브시스템; (3) on-chip 블록 RAM(BRAM) 또는 off-chip 메모리를 지원하는 메인 메모리 서브시스템; 및 (4) 다양한 라우터 설계 및 라우팅 알고리즘을 지원하는 파라미터화된 on-chip 네트워크.
하드웨어 시스템은 벤더 특정 IP 블록이 없는 합성 가능한 Verilog로 작성되었습니다. 이 구현은 RTL 시뮬레이션과 대형 및 정확한 설계 공간 탐색을 위한 필수적인 FPGA 기반 에뮬레이션을 가능하게 합니다. 파라미터화와 모듈화는 시스템의 설계를 빠르게 변경할 수 있게 합니다. 개별 모듈(예: 코어 파이프라인 단계 또는 캐시 교체 정책) 및 전체 하위 시스템(예: 코어, 캐시 또는 NoC 디자인)은 서로 독립적으로 사용자가 필요에 따라 수정하거나 교체할 수 있습니다. 이 플랫폼은 사용자가 선택할 수 있는 여러 가지 코어, 캐시, 메모리 및 NoC 하위 시스템 구현을 제공하여 적절한 하드웨어 모듈이 선택된 후 마이크로 아키텍처를 세밀하게 조정할 수 있습니다.
플랫폼에 포함된 소프트웨어 도구는 플랫폼 워크플로우를 간소화함으로써 빠른 설계 공간 탐색을 촉진합니다. 필요한 도구체인을 제공하여 사용자는 다양한 시스템 구성에서 자신들의 디자인 공간 탐색 소프트웨어를 개발하고 실행할 수 있습니다. 플랫폼의 RISC-V 어셈블리 시뮬레이터는 프로그램 실행의 골든 모델을 생성하고 하드웨어 시스템에 테스트하기 전에 소프트웨어를 세밀하게 조정하는 데 사용될 수 있습니다. 이러한 골든 모델은 예상된 수행 흐름을 제공하여 디버깅 작업을 가속화할 수 있습니다. 하드웨어 시스템 구성 GUI는 사용자가 코어 유형과 기능, 캐시 크기 및 결합성, 버스 기반 또는 NoC 기반 인터커넥트 등을 선택할 수 있도록 합니다.
구성의 시각화는 사용자에게 즉시 그들의 시스템에 대한 이해를 제공합니다. GUI를 통해RTL 구현을 생성하여 새로운 설계를 만드는 데 필요한 변경 사항과 시각화를 쉽게 수행할 수 있습니다. 교체 가능한 코어, 캐시, 메모리 및 NoC 하위 시스템(그 내부 모듈 포함)에 대한 지원으로 인해 기반 플랫폼의 RTL 수정 없이 넓은 범위의 설계 공간을 탐색할 수 있습니다. 모든 측면에서 오픈 소스를 활용하여 탐색 가능한 설계 공간을 최대화합니다. 사용자가 지원되는 하위 시스템의 수를 확장하거나 실험적 기능을 추가하려는 경우, 기본 시스템의 Verilog RTL을 수정하거나 확장할 수 있습니다.
RISC-V는 모듈러성과 다양한 확장 사양으로 인해 설계 공간 탐색에 대한 추가적인 가능성입니다. 사용자는 실험적인 아키텍처 기능 또는 맞춤형 하드웨어 가속기 지원을 위한 커스텀 명령 집합 확장을 추가할 수 있습니다. 이러한 개방성과 커스텀 확장의 옵션은 RISC-V를 설계 공간 탐색에 이상적인 ISA로 만듭니다. 이 플랫폼은 RISC-V 사용자 레벨 ISA 2.2 버전을 사용합니다.
메인 메모리 인터페이스는 캐시 서브시스템과 메인 메모리를 분리합니다. 사용자는 다음 중 하나를 선택할 수 있습니다: (1) 통합 또는 별도의 비동기 명령 및 데이터 메모리, (2) 통합 또는 별도의 동기 명령 및 데이터 메모리, 또는 (3) off-chip 메모리 컨트롤러.
메인 메모리 인터페이스를 오프 칩 메모리 컨트롤러에 연결하면 큰 메인 메모리를 가능하게 합니다. 시스템이 주어진 FPGA에서 사용 가능한 이상의 메모리를 필요로 할 때 오프 칩 메모리를 사용하는 것이 유용합니다. 현재 플랫폼에는 간단한 off-chip SRAM 메모리 컨트롤러가 포함되어 있으며 다른 장치별 메모리 컨트롤러를 쉽게 추가할 수 있습니다. 인터페이스는 또한 on-chip 네트워크에 연결되며, 각 노드 별로 메인 메모리 크기를 구성하는 능력과 결합하여 균일하고 비균일 분산 메모리 시스템을 구현합니다.
온칩 네트워크
플랫폼의 온칩 네트워크는 메모리 서브시스템과 함께 다양한 다중 코어 아키텍처를 구현합니다. NoC는 사용자가 다양한 네트워크 토폴로지와 시스템의 리소스 활용 및 성능 최적화를 탐색할 수 있는 여러 구성 옵션을 제공합니다. 네트워크는 다음 조합을 탐색하도록 구성될 수 있습니다: 1) 플로우 제어, 2) 라우팅 알고리즘, 3) 네트워크 토폴로지.
NoC 라우터는 완전히 파라미터화되어 있습니다. NoC의 라우터는 버퍼 또는 버퍼 없는 라우터로 구성할 수 있습니다. 라우터는 고정 논리 또는 구성 가능한 라우팅 테이블을 사용하여 무지한 라우팅 알고리즘을 지원합니다. 고정 논리는 차원 순서 라우팅을 위해 구현되었습니다. 프로그래머블 라우팅 테이블은 라우팅 테이블 항목의 변경으로 다양한 라우팅 알고리즘을 지원합니다. 라우터의 입력 포트 수, 출력 포트 수 및 라우팅 테이블 내용을 구성함으로써 넓은 범위의 네트워크를 구현할 수 있습니다.
라우터는 사용자가 필요에 따라 다양한 하드웨어 모듈을 선택하고 조정할 수 있도록 설계되었습니다. 교체 가능한 코어, 캐시, 메모리 및 NoC 하위 시스템(그 내부 모듈 포함)에 대한 지원으로 인해 기반 플랫폼의 RTL 수정 없이 넓은 범위의 설계 공간을 탐색할 수 있습니다.