Skip to content

Mnemosyne: Multi-Bank Memories for Heterogeneous Architectures

License

Notifications You must be signed in to change notification settings

chrpilat/mnemosyne

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mnemosyne

Mnemosyne is a prototype CAD tool for memory optimization developed by the System-Level Design Group at Columbia University.

Welcome to Mnemosyne!

This is a tool for memory optimization at the hardware level. With Mnemosyne, designers can create and evaluate multi-bank memories for heterogeneous architectures, including but not limited to private local memories, specialized caches, and memory intellectual property (IP) blocks.

If you use the code, we would appreciate a citation to:

System-Level Optimization of Accelerator Local Memory for Heterogeneous Systems-on-Chip. Christian Pilato, Paolo Mantovani, Giuseppe Di Guglielmo, and Luca P. Carloni. IEEE Transactions on CAD of Integrated Circuits and Systems, 36:3, pages 435-448 (March 2017).

For any questions/concerns, please email Christian Pilato.

This research was supported in part by the C-FAR, one of the six centers of STARnet, in part by the DARPA PERFECT program under Contract HR0011-13-C-0003, and in part by the National Science Foundation under Grant 1219001 and Grant 1527821. This research is currently supported by the Horizon 2020 EU Research & Innovation programme under GA No 957269 (EVEREST project).

Requirements:

Mnemosyne dependencies

To build Mnemosyne, you will need to satisfy the following dependencies:

  1. libxml2-devel
  2. glib2-devel
  3. libsigc++20-devel
  4. glibmm24-devel
  5. libxml++-devel
  6. glpk-utils
  7. glpk-devel
  8. libboost-all-dev

System configuration

Mnemosyne requires that /bin/sh points to /bin/bash instead of /bin/dash, which is a common configuration for Ubuntu systems. This problem can be solved as follows:

sudo rm -rf /bin/sh
sudo ln -s /bin/bash /bin/sh

Installation

Setting up the source code

  1. Clone Mnemosyne.
git clone https://github.com/chrpilat/mnemosyne
  1. Install Xilinx Vivado Design Suite (optional)

  2. Download and uncompress the Synopsys SAED 32nm SRAM library (optional)

Building Mnemosyne

Type the following commands to build and install the sources:

mkdir obj && cd obj
cmake -DCMAKE_INSTALL_PREFIX=<install_prefix> ..
make && make install

Running Mnemosyne

Mnemosyne can be run in two ways: batch and optimization.

In the batch mode, only one data structure / memory IP can be created. Mnemosyne will simply create a multi-port memory block based on the given parameters (e.g., width, height, number of read/write ports). In the optimization mode, multiple data structures can be concurrently optimized, searching for sharing opportunities. Hence, it is also necessary to specify the compatibility graph as input.

Mnemosyne uses the mode command-line parameter to distinguish between these two modes (batch and opt, respectively).

Additional information can be found in the Wiki pages.


Contact

Christian Pilato (Politecnico di Milano): [email protected]

Luca P. Carloni (Columbia University): [email protected]

About

Mnemosyne: Multi-Bank Memories for Heterogeneous Architectures

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published