Project Specification
In this project, you will work in groups of 1-2 studentsto implement a Scoreboard simulator.
The maximum students per group will be 2.
Deliverables:
You can use one of the following languages to implementthe program:
C
C++
Python
Java
Verilog
VHDL
You will also need to:
Write clean code
Make sure your code is readable even for someone notversed in the particular language
Comment your code where necessary (too much commentingof code sometimes makes it hard to read)
Submit a user manual for your code detailing how to runit; step by step instructions as well as what OS to use and how tocompile the source code.
Your instructor has access to the followingOS:
a Mac OS Catalina (unix) platform
a Linux via linux.gl.umbc.edu
Windows 10
I would suggest you test your code on one of theseplatforms to ensure it runs as you expect.
Make sure that it is possible to run your code withoutneeding to purchase any additional software. (I count Trials as apurchase)
You will need to submit a zip file namedlastname_firstname_project.zip and containing:
An executable of your simulator if the language you usedrequires one.
The program files and source code.
A text file (README) detailing how to run your simulatorand recompile it if needed.
Only one submission per group. You will need to makesure all your names are shown in the README as well as in theprogram code.
Your program should take as an input a text file withMIPS code (see Instructions section), and output a table similar toone used in class showing:
When each instruction completed each stage
The values in all the registers at the end ofexecution
See input and output sections for furtherdetails
Due Date:
July 8th 2022 at 11.59pm
Grading:
The code and program will be graded according to thefollowing:
10% -if the program works. It does not have to beperfect for you to get this credit
50%- Implementation
How close is your simulator to mimicking a truescoreboard
How well does it meet the specifications in thisdocument
Do values in the register match what isexpected
How does it handle corner cases
40%-Well written code:
use of good variable names
code is easy to follow an understand and is wellorganized
Good instructions on how to run/compile yourcode
Late submissions will incur a 10 point deduction forevery 6 hours they are late.
This project follows the UMBC Academic Integrity Policyand any work submitted must be your own. In addition to thatpolicy, Collaboration between teams should only involve discussionof ideas but no sharing of code.
Any work copied from online resources MUST becited.
Processor Configuration:
The algorithm will model a processor with the followingconfiguration:
Pipelined FP adder/s for FP adds and subtracts-2cycles
Pipelined FP multiplier/s for FP multiplies-10cycles
Pipelined FP divider/s for FP divides-40cycles
Integer Unit/s for Loads, Stores, Integer Adds andSubtracts -1cycle
Your program should ask the user for how many unitsthere are for each functional units, that is, how many adders, howmany multipliers, how many dividers and how many integerunits.
32 FP registers and 32 integerregisters.
All registers will be initialized to 0 at thebeginning.
Memory:
You can initialize your data memory to the followingvalues:
Memory Location
Value in Memory
0
45
1
12
2
0
3
0
4
10
5
135
6
254
7
127
8
18
9
4
10
55
11
8
12
2
13
98
14
13
15
5
16
233
17
158
18
167
The memory location will be the index of the value andwe will use that index as the actual address for loads andstores.
For simplicity the value at the memory location is whatgets loaded into a register and if the memory location is offsetthen it loads whatever value is at that offset.
Example:
LD F2, 0(17) would load 158 into registerF2
LD F2, 1(17) would load 167 into registerF2
Instructions:
You can program your algorithm for the followinginstructions:
Memory Instructions:
L.D Fa, Offset(addr)
Load a floating point value into Fa
S.D Fa, Offset(addr)
Store a floating point value from Fa
LI $d, IMM64 -Integer Immediate Load
Load a 64 bit Integer Immediate into $d
LW $d, Offset(addr)
Load an integer value into $d
SW $s, Offset(addr)
Store an integer from $s
ALU Instructions:
ADD $d, $s, $t - Integer add
$d = $s + $t
ADDI $d, $s, immediate – Integer Add withImmediate
$d = $s + immediate
ADD.D Fd, Fs, Ft – Floating Point Add
Fd = Fs + Ft
SUB.D Fd, Fs, Ft – Floating Point Subtract
Fd = Fs - Ft
SUB $d, $s, $t -Integer Subtract
$d = $s - $t
*MUL.D Fd, Fs, Ft -Floating Point Multiply
Fd = Fs X Ft
DIV.D Fd, Fs, Ft – Floating Point Divide
Fd = Fs ÷ Ft
*You can assume that Fd is big enough to hold the valueof the result.
$s/$d are integer registers and Fa/Fd are floating pointregisters
Inputs
Your program should take the following inputs (how ittakes them is up to you):
The number of units per functional unit
Text file with a program written using MIPS instructionsoutlined above
You do not have to account for MIPS instructions notoutlined in this document
Outputs
Your program should output the following:
The cycle each instruction completed the differentstages (Issue, Read Operand, Execute, Write Back)
Ideally in the same format as done in the classexamples.
Final values in the FP and Integerregisters.
Project Specification In this project, you will work in groups of 1-2 students to implement a Scoreboard simulator. The
-
- Site Admin
- Posts: 899603
- Joined: Mon Aug 02, 2021 8:13 am