Skip to content

tactcomplabs/sst-pim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

57 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PIM SST

This project provides a set of SST components that provide methods to model Processor In Memory (PIM) applications combined with the REV RISCV CPU.

The PIM provides a user extensible finite state machine (FSM) that allows sequencing access to/from a region of DRAM and to/from a local SRAM.

Supported Platforms

Tested on the following platforms

  • MacOS Darwin Kernel Version 23.6.0 arm64
  • Redhat 4.18.0-477.10.1.el8_8.x86_64 #1 SMP x86_64
  • Ubuntu 5.15.0-122-generic #132-Ubuntu SMP x86_64

SST Support

Important! This repository requires sst-core v14.1.0 and sst-elements v14.1.0. Due to customization of certain elements, these and only these versions are required.

Getting Started

Checkout and build the 'devel' branch of the REV CPU. The last tested compatable version of REV was git SHA 1e145cb

export REVHOME=<path to REV>
git clone [email protected]:kpgriesser/sst-pim.git
cd sst-pim
mkdir build
cd build
cmake ../
make -j -s
make install
ctest

REV Application Examples

cd test/pim
make clean
make
cat rev-output/checkdram/run.revlog
cat rev-output/userfunc/run.revlog
ls rev-test-src

These tests demonstrate both software and hardware algorithms:

  • checkdram.cpp: memcpy (dram to dram) function in hardware.
  • userfunc.cpp: scalar-vector multiply function.

The tests can be modified at compile time by modifying these lines of the source code:

// Select one and only one
//#define DO_LOOP 1
//#define DO_MEMCPY 1
#define DO_PIM 1

The finite state machines (FSMs) are in sstcomp/PIMBackend:

  • tclpim_functions.*: built-in functions
  • userpim_functions.*: user provided functions

Appx (Application Driver) Examples

The application driver replaces the REV CPU with application code compiled on that host and loaded as a Miranda subcomponent. This provides an efficient methods to test the PIM independently of the REV CPU.

cd test/pim
export APPX=1
make clean
make
cat appx-output/AppxTest/run.log