SoftMC v1.0
요약
SoftMC는 DDR3 SODIMM의 테스트 개발에 사용되는 FPGA 기반 메모리 컨트롤러 설계입니다. 이 시스템은 HPCA 2017 논문으로 발표되었으며, 빠른 설치를 위한 사전 빌드 바이너리와 수정 가능한 소스 코드(Verilog/C++)를 제공합니다. 다만, 현재는 Xilinx ML605 보드만 지원하며, 사용 시 RIFFA 드라이버 설치가 필수적입니다.
핵심 포인트
- SoftMC는 FPGA 기반의 메모리 컨트롤러 설계이다.
- DDR3 SODIMM 테스트 개발에 활용되는 실험적인 인프라다.
- 사용을 위해서는 RIFFA 드라이버 및 특정 Xilinx 보드가 필요하다.
- 논문(HPCA 2017)을 반드시 인용해야 한다.
DRAM Bender (별칭 SoftMC v2)가 SoftMC를 대체합니다. 대신 SoftMC 대신 DRAM Bender를 사용하시기를 권장합니다.
SoftMC v1.0
SoftMC는 DDR3 SODIMM의 테스트 개발에 사용될 수 있는 실험적인 FPGA 기반 메모리 컨트롤러 설계입니다. 현재 SoftMC는 Xilinx ML605 보드만 지원합니다. 곧, 다른 인기 사용 보드(예: Xilinx VC709)에도 SoftMC를 포팅할 예정입니다.
SoftMC에 대해 자세히 설명한 논문은 HPCA 2017에서 발표되었으며 다음 링크에서 확인할 수 있습니다:
Hasan Hassan, Nandita Vijaykumar, Samira Khan, Saugata Ghose, Kevin Chang, Gennady Pekhimenko, Donghyuk Lee, Oguz Ergin, and Onur Mutlu,
"SoftMC: 실험적인 DRAM 연구를 가능하게 하는 유연하고 실용적인 오픈 소스 인프라"
Proceedings of the 23rd International Symposium on High-Performance Computer Architecture (HPCA), Austin, TX, USA, February 2017.
SoftMC를 사용하거나 기반으로 개발하는 경우, 해당 논문을 인용해 주십시오.
저희는 a) 빠른 설치를 위한 사전 빌드 바이너리와 b) 원하는 대로 수정할 수 있는 소스 코드(Verilog 및 C++ 모두)를 제공합니다.
전제 조건:
- Xilinx ML605 FPGA 또는 다른 호환 보드 (ML605만 테스트함)
- Linux 호스트 머신 (Ubuntu 12.04/14.04에서 테스트함)
- SoftMC는 Host Machine과 통신하기 위해 8레인 PCIe 인터페이스를 사용합니다.
따라서, 호스트 머신의 마더보드에 있는 8x/16x PCIe 슬롯에 보드를 연결해야 합니다. - FPGA 보드에 연결된 단일 랭크 DDR3 SODIMM
- Xilinx ISE 14.6 (소스에서 자체 비트파일을 빌드하려는 경우)
설치 가이드:
1) RIFFA 드라이버 설치:
FPGA와 PCIe 버스를 통해 통신할 수 있도록 시스템에 RIFFA 드라이버를 설치해야 합니다. FPGA 보드를 PCIe 슬롯에 연결하는 것을 잊지 마십시오.
먼저 RIFFA 드라이버의 소스 파일 디렉터리로 전환합니다:
$ cd sw/riffa_2.1/driver/linux
드라이버를 빌드하려면 make을 실행하세요.
$ make
그런 다음 드라이버를 시스템에 설치하세요.
$ sudo make install
2) SoftMC bitfile을 FPGA로 생성 및 다운로드:
a) 사전 빌드 바이너리를 사용한 빠른 설치
필요한 모든 것은 "prebuilt" 폴더 안에 있습니다 (Retention Time 테스트용 실행 파일 포함).
- 적절한 도구를 사용하여 bitfile을 FPGA에 다운로드해야 합니다 (Xilinx Impact가 ML605의 경우 이 작업을 수행합니다)
- PCIe를 통해 연결된 머신을 재부팅한 후, 아래 명령어를 입력하여 Retention Time 테스트 애플리케이션을 실행할 수 있어야 합니다:
$ ./SoftMC_RetentionTime [밀리초 단위 목표 유지 시간]
b) 소스 코드로부터의 설치
SoftMC bitfile을 생성하는 것은 간단합니다:
- Xilinx ISE 14.6을 사용하여 프로젝트를 열고, 경로는 hw/boards/ML605/SoftMC.xise입니다.
Xilinx ISE로 돌아가서 "Generate Programming File"을 클릭하고, IPCore 컴파일을 요청하는 대화 상자에서 "예(Yes)"를 클릭합니다.
합성(synthesis) 중 다음 오류가 발생하는 경우:
hw/boards/ML605/ipcore_dir/pcie_endpoint/source/gtx_wrapper_v6.v" Line 277: Instantiating <GTX_DRP_CHANALIGN_FIX_3752> from unknown module <GTX_DRP_CHANALIGN_FIX_3752_V6>
- "gtx_wrapper_v6.v"의 모듈 선언 전에
`include "gtx_drp_chanalign_fix_3752_v6.v"를 추가합니다. 파일을 저장합니다. - 방금 추가한 줄을 주석 처리(comment-out)합니다. 다시 파일을 저장합니다.
- 다시 합성(Synthesize)을 클릭합니다.
이 오류는 Xilinx ISE 소프트웨어의 버그로 인해 발생합니다. 해결 방법은 위에 나열된 단계를 수행하는 것입니다.
작업이 성공적으로 완료되면, 생성된 비트파일(bitfile)을 프로젝트 폴더에서 찾을 수 있습니다.
그런 다음 **a)**의 단계를 따릅니다.
(필요한 경우 SoftMC 하드웨어 시뮬레이션을 위해 시작할 수 있는 샘플 테스트벤치 모듈("tb_softMC_top.v")을 제공합니다. 시뮬레이션을 활성화하려면 "softMC.inc"에서 SIM 정의를 주석 해제(uncomment)해야 합니다. 이렇게 하면 최상위 모듈의 I/O 인터페이스가 PCIe 신호를 제외하도록 변경되어 SoftMC에 쉽게 명령을 내릴 수 있습니다.)
제공되는 샘플 애플리케이션(유지 시간 테스트, retention time test)을 컴파일하려면:
$ cd sw/RetentionTest
$ make
$ ./SoftMC_RetentionTest [Target Retention Time in milliseconds]
알려진 문제점 (Known Issues):
- Multi Rank SODIMM은 현재 지원되지 않습니다.
- 명령어 시퀀스는 최대 8192개의 명령어로 구성될 수 있습니다 (자세한 내용은 저희 HPCA 2017 논문을 참조하십시오).
- B75 칩셋을 사용하는 마더보드는 ML605의 PCIe 엔드포인트와 호환되지 않는 것으로 보입니다.
프로젝트에 기여해 주시면 환영합니다. 만약 문제를 발견하거나 해결했거나 SoftMC를 새로운 FPGA 보드로 포팅하는 경우, 아래 담당자에게 연락해 주십시오.
담당자 (Contacts):
Hasan Hassan (hhasan [at] inf [dot] ethz [dot] ch)
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub ML Hardware의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기