PULSE is a distributed pointer-traversal framework for disaggregated memory that accelerates linked data structure access near memory to overcome the limitations of CPU-side caching, enabling low-latency, high-throughput, and energy-efficient execution. See our ASPLOS'25 paper for a comprehensive system description.
<PULSE>
│ README.md
└───apps: RPC/RPC-ARM/Cache+RPC implementations
│ │ webservice
│ │ wiredtiger
│ │ btrdb
└───benchmark: Simulation benchmarks
└───docker-swap: Workload local/remote memory analysis using Docker swap memory
└───docs: [WIP] Documentation for setting up the testing environment
└───fpga: PULSE accelerator implementation
└───pulse-lib: PULSE common libraries
│ │ src/cache: PULSE application cache implementation
│ │ src/ds: PULSE data structures
│ │ src/erpc: PULSE RPC library implementation based on [eRPC](https://github.com/erpc-io/eRPC)
└───scripts: Scripts for building, processing results, etc.
└───third_party: Third-party libraries
Before installing PULSE, please ensure that you have set up the required dependencies by following the installation instructions for the following repositories:
- eRPC – for running RPC-related benchmarks.
- MIND – for running MIND-related benchmarks.
- xup_vitis_network_example – for benchmarks involving the PULSE accelerator.
To build PULSE host-side code:
git clone https://github.com/Yale-NeRD/pulse
cd pulse
mkdir -p build
cd build
cmake ..
make -j && make install
To build PULSE accelerator code:
cd pulse/fpga/
make all DEVICE=<full platform path> INTERFACE=<interface number> DESIGN=pc