All Projects → spcl → pspin

spcl / pspin

Licence: Unknown and 2 other licenses found Licenses found Unknown LICENSE Apache-2.0 LICENSE.Apache2 Unknown LICENSE.SolderPad
PsPIN: A RISC-V in-network accelerator for flexible high-performance low-power packet processing

Programming Languages

SystemVerilog
227 projects
c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language
Makefile
30231 projects
python
139335 projects - #7 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to pspin

DivertPInvoke
PInvoke wrapper for WinDivert
Stars: ✭ 22 (-57.69%)
Mutual labels:  packet-processing
flipy
A Python linear programming interface library
Stars: ✭ 23 (-55.77%)
Mutual labels:  pulp
FastTransforms
🚅 Fast orthogonal polynomial transforms 🏄
Stars: ✭ 45 (-13.46%)
Mutual labels:  spin
pulp-operator
Kubernetes Operator for Pulp 3. Under active development.
Stars: ✭ 32 (-38.46%)
Mutual labels:  pulp
Ntopng
Web-based Traffic and Security Network Traffic Monitoring
Stars: ✭ 4,313 (+8194.23%)
Mutual labels:  packet-processing
Divert.Net
.NET Wrapper for WinDivert
Stars: ✭ 51 (-1.92%)
Mutual labels:  packet-processing
LiteNetwork
A simple and fast .NET networking library compatible with .NET Standard 2, .NET 5, 6 and 7.
Stars: ✭ 66 (+26.92%)
Mutual labels:  packet-processing
TB2J
a python package for computing magnetic interaction parameters
Stars: ✭ 35 (-32.69%)
Mutual labels:  spin
IsingMonteCarlo
A program implementing Metropolis Monte Carlo for the 2D square-lattice Ising model and the spin block renormalization
Stars: ✭ 20 (-61.54%)
Mutual labels:  spin
mbeddr.formal
FASTEN: FormAl SpecificaTion ENvironment - a set of DSLs to experiment with rigorous systems and safety engineering.
Stars: ✭ 16 (-69.23%)
Mutual labels:  spin
SpinMonteCarlo.jl
Markov chain Monte Carlo solver for lattice spin systems implemented by Julialang
Stars: ✭ 35 (-32.69%)
Mutual labels:  spin
SmartSpin2k
Transform your spin bike into a Smart Trainer!
Stars: ✭ 88 (+69.23%)
Mutual labels:  spin
pulp rpm
RPM support for Pulp Platform
Stars: ✭ 32 (-38.46%)
Mutual labels:  pulp
hero-sdk
⛔ DEPRECATED ⛔ HERO Software Development Kit
Stars: ✭ 21 (-59.62%)
Mutual labels:  pulp
awesome-playdate
A list of awesome resources for Playdate (https://play.date) game development and the Playdate SDK (https://play.date/dev/)
Stars: ✭ 149 (+186.54%)
Mutual labels:  pulp
vrpy
A python framework for solving the VRP and its variants with column generation.
Stars: ✭ 94 (+80.77%)
Mutual labels:  pulp
pulp soc
pulp_soc is the core building component of PULP based SoCs
Stars: ✭ 43 (-17.31%)
Mutual labels:  pulp

GitHub Workflow Status License License

PsPIN: A RISC-V in-network accelerator for flexible high-performance low-power packet processing

PsPIN architecture overview

PsPIN [1] is an implementation of the sPIN programming model [2] based on PULP [3]. This repository includes the RTL code implementing PsPIN, the runtime software, and a set of examples to get started. We provide a toolchain that allows to define, build, and test new handlers through cycle-accurate simulations.

Simulation Workflow summary: The RTL code is verilated into C++ modules that are compiled together with the functional models into two libraries: libpspin.so and libpspin_debug.so. To write your own handler, you need to define the handler code and a simulation driver. The handler code must be compiled with RISC-V GCC. The simulation driver interfaces to libpspin.so for (1) initializing the simulation; (2) defining the content of L2 handler memory; (3) defining the handlers to offload; (4) defining and injecting packets to process; (5) handle events generated by the execution of the handlers (e.g., packets being sent or writes/reads to/from host memory). By linking against libpspin_debug.so you make the simulation a waves.vcd that can be explored with any value-change-dump editor (e.g., GTKWave http://gtkwave.sourceforge.net/).

Repo organization: The repositority has the following structure:

  • hw/: Hardware components and simulation logic.
    • hw/deps/: (RTL) Dependencies from the PULP platform (https://github.com/pulp-platform). Some of them have been adapted to fit in the PsPIN design. License: SolderPad 0.51.
    • hw/src/: (RTL) PsPIN components. License: SolderPad 0.51.
    • hw/verilator_model/: (functional) Components implementing the NIC model shown by the above figure. License: Apache 2.0.
  • sw/: Software components. License: Apache 2.0.
    • sw/pulp-sdk/: Dependencies from the PULP SDK adapted to fit the PsPIN design.
    • sw/rules/: Makefile rules used to ease simulutions setups and runs.
    • sw/runtime/: HPUs runtime code and support functions for the handlers.
    • sw/script/: utilities for extracting data from the simulation output.
  • examples/: Examples of sPIN handlers. License: Apache 2.0.
    • examples/*/driver/. Simulation driver.
    • examples/*/handlers/. Handlers code.

Getting started

Please check the docs: https://spcl.github.io/pspin/.

Citation

Please include this citation if you use this work as part of your project:

@inproceedings{pspin,
	title={A RISC-V in-network accelerator for flexible high-performance low-power packet processing},
	author={Di Girolamo, Salvatore and Kurth, Andreas and Calotoiu, Alexandru and Benz, Thomas and Schneider, Timo and Beranek, Jakub and Benini, Luca and Hoefler, Torsten},
	booktitle={2021 ACM/IEEE 48th Annual International Symposium on Computer Architecture (ISCA)},
	year={2021}
}

References

[1] Di Girolamo Salvatore, Kurth Andreas, Calotoiu Alexandru, Benz Thomas, Schneider Timo, Beranek Jakub, Benini Luca, Hoefler Torsten. "A RISC-V in-network accelerator for flexible high-performance low-power packet processing." 2021 ACM/IEEE 48th Annual International Symposium on Computer Architecture (ISCA). IEEE, 2021.

[2] Hoefler Torsten, Salvatore Di Girolamo, Konstantin Taranov, Ryan E. Grant, and Ron Brightwell. "sPIN: High-performance streaming Processing in the Network." In Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis, pp. 1-16. 2017.

[3] Rossi, Davide, Francesco Conti, Andrea Marongiu, Antonio Pullini, Igor Loi, Michael Gautschi, Giuseppe Tagliavini, Alessandro Capotondi, Philippe Flatresse, and Luca Benini. "PULP: A parallel ultra low power platform for next generation IoT applications." In 2015 IEEE Hot Chips 27 Symposium (HCS), pp. 1-39. IEEE, 2015.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].