Giter VIP home page Giter VIP logo

eisa's Introduction

EISA

Encryptinator ISA

Run ui.py to run the simulator for the Encryptinator ISA.

Requires the following Python packages to be installed:

  1. PyQt6
  2. tabulate
  3. aenum
  4. termcolor

eisa's People

Contributors

mposter1 avatar brendonky18 avatar

Stargazers

 avatar

Watchers

James Cloos avatar  avatar

eisa's Issues

Implement Pipeline

Pipeline must contain at least 5 sages:

  • fetch
  • decode
  • execute
  • memory
  • writeback

Must ensure that the pipeline correctly handles instruction dependencies, and also blocks/stalls

Does not need to implement forwarding or interrupt handling

Implement Testing Suite

Basically, I want the demo to confirm that you have a fully working cache and memory. This demo is more about ensuring that you have everything operating correctly, so you can build on top of that, and catching any mistakes before you go further. If there is something really wrong, I'll want you to fix it and show me again, so we can be sure you have it right. Monday is a chance to get everyone in the class checking everyone else's simulation, so every team can have a working memory subsystem. It's going to be important to watch what the other teams do and ask questions if you think they have missed anything - I may not catch some detail that you will, which might save them a lot of headaches down the line.

Your view command should return the tag, contents, dirty, and valid bit values for a given cache line, and should just return the contents of a block in DRAM if you tell it to view that level. Think of it as your debugging probe for the simulation.

Your demo should show the cache and memory empty at some locations, then you write some things, then show they are in the proper places (depends on your write policy), then read some, and show that they are in the right places. You should also show that two conflicting accesses cause an eviction, and that it handles dirty versus clean evictions.

Remember that if you use an allocate policy for writing, the cache loads the entire line first, then overwrites the specific word. The memory only needs to delay two or three cycles for the demo, so you don't have to issue as many commands. Your driver program should keep a count of the commands issued as a first cut at the cycle counter for the simulator.

Create basic program for demo

Program must demonstrate all of the basic operations

  • load/store
  • register to register arithmetic
  • conditional branch

A good demonstration is the equivalent of a for loop that reads a series of pairs of values from memory, adds them, stores the results back to memory, and exits when (read: if, ie. conditional branch) the loop control counter reaches the termination condition.

Implement basic set of opcodes

implement opcodes to demonstrate all basic functionality

  • load
  • store
  • At least 1 ALU op
    • add
    • subtract
    • multiply
    • divide
    • logical shifts
  • conditional branch

Optional:

  • Single special operation
    • For us, do the key generation operation
  • Unconditional op
    opcodes must be encoded in binary as integers

Implement Pipeline debugging interface

Must be able to:

  • view contents of each pipeline stage
  • controlled execution of the pipeline:
    • single step
    • execute until breakpoint
    • run for a specified number of cycles
  • load programs
  • save programs/state
  • reset state

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.