Git Product home page Git Product logo

chisel-shmac's Introduction

Chisel-SHMAC

A prototype of The Single-ISA Heterogeneous MAny-core Computer (SHMAC) written in the Chisel Hardware Construction Language. Chisel is a Scala-embedded HDL and requires the Simple Build Tool to work.

The project was part of the ongoing SHMAC research project at NTNU. It's main purpose was to investigate the possibility for a SHMAC based on the RISC-V Instruction Set Architecture.

Project structure

The project consists of several modules that together make up a prototype of the SHMAC. The architecture of the project is described below. Those interested can also look at the final project report.

A high-level overview of the SHMAC architecture is shown below.

Router

A router is one of the most fundamental parts of a heterogeneous computer, this is an implementation of a router that implements an XY-routing routing algorithm for the packages in the network.

Each tile in the network are connected together with the routers, the figure below shows a detailed architecture of the router.

Memory

The memory is a simple module that supports read and writes, and simply wraps around a Chisel Mem object.

Sodor

This project utilizes a 3-Stage Sodor processor core from the Sodor Processor Collection. The processor core had to be modified slightly in order to support arbitrary memory stalls, which is an important requirement for heterogeneous systems.

Tiles

Two different tiles are implemented, a Memory Tile and a Sodor Tile. The two tiles wraps around the Memory module and the Sodor module, respectively, and connects these two modules together with a Router. These tiles acts as the basic building blocks, that can be combined in order to make a prototype of the SHMAC.

The architecture of the two tiles are shown below.

SHMAC

At last, two small prototypes of the SHMAC are included in the project.

Prototype 1

The first prototypes demonstrates a simple system with one processor core and one memory element.

Prototype 2

The second prototype demonstrates a system with two processor that executes the same programs, but behaves differently based on their location in the interconnect-network.

Running tests and simulations

All the components and modules have been tested and simulated. The tests are initiated in a simple test-runner found in TestMain.scala. The projects Makefile can be used to run unit-level tests, module-level tests, or all tests.

Run all tests:

$ make

Test a module, e.g.

$ make router

Run a single unit test, e.g.

$ make CrossBar.out

chisel-shmac's People

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

hacklinux

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.