tomasulo's People
tomasulo's Issues
Implement reservation stations
In L2, print ways interleaved for data, print way0 then way1 for instructions
Since L1 is inclusive in L2, we may need to throw blocks from L1 when we evict a block from L2 to maintain the inclusive caches
This is simulated, but assuming it can be done "for free" in parallel to handling the L2 miss with no extra cycle penalty. When L1 blocks are thrown in that manner, they are only marked as not valid, they aren't overwritten and therefore the old data remains in the data memories (and is written to the dump files).
InstructionFactory should keep string representation of instruction in Instruction
For trace
If part of a block is requested from the L1 while it is being read from L2, it is considered a hit
(obviously we still have to wait until that block is present)
Write label analyzer
L1 data cache has a single 32-bit word write buffer in front of the cache, which can accept the write data and release the CPU immediately
The write will be processed in the background (hits as well as misses), while allowing other arithmetic commands to execute in the CPU in parallel. On the next L1 data cache access, we first wait for the background write to complete, if it hasn't already, then we handle the new cache access (which may itself return early and be processed in the background if it's a new write).
InstructionFactoryTest tests commented instructions and comment-only lines
Implement CPU for part 1
InstructionFactory should initialize with code base address and maintain its own PC
System tests
L2 cache should load critical word first, then critical L1 block first, then rest of L2
Loading should be cyclic within L1 block and within the remaining L2 block.
Non-blocking write miss
The L1 data cache has a single word buffer for handling write misses in the background.
On the next L1 data cache access, we first wait for the background write to complete, if it hasn't already, then we handle the new cache access (which may itself return early and be processed in the background if it's a new write).
Add support for commented line in code (skip it)
$0 is always zero
As per Gdalia's forum reply.
ConfigurationTest passes
Trim trailing zeroes from memory after execution
Implement register file with tags and values
System memory is always 16MB
According to Gdalia's reply.
Move toOpcode and validateRegisterIndex to ISA
InstructionFactoryTest passes
Attention on commit c613c65e0b99f7842d9c9e81366e78087bb44e28
Changed methods to use default values.
However, since way is the only one passed with default value, it must be the last parameter, so i switched the order of way and offset.
Since offset and way are from same type, if we do not change order, code will compile and we will have silent bug (bob).
This is only relevant for L2 afaik.
Generate CPU trace in the fat's format
Trace formatted identically to trace.txt in example.
System test passes
On a write miss to L1 which hits in L2, l2_access_delay is only till the first word in the block
Then additional cycles are required to transfer the entire block to L1 (one 32-bit word at a time).
Branch instructions keep offset in immediate, not absolute
Let PC be the value of the program counter at the address.
Let ABS be the absolute target address.
The immediate value is (ABS-(PC+4))/4
(forward jumps are positive, backward jumps are negative)
Main for part 1
CPU can write to $0
Let's hope that there are no test programs that check this.
Early restart and critical word first are used for reads
Adapt simulator main to part 3 input
To avoid big 16MB mem_dump.txt files, the code in 15MB - 16MB is ignored and not dumped, and only data is dumped to the file, up to the last line which contains a nonzero data
Fix compilation error in configuration
Something to do with TR1 regex?
Label max width can be 100 (limitation in parsing jumps)
Non blocking background write miss
Caches are write-allocate
Implement functional units: multiplier
Test CPU for part 1
Generate outputs after caches reach stable state
Particularly, if a cache is still loading the rest of a block (due to early restart) we should print the cache contents only after it's done loading.
However the time that this takes should not be counted towards execution time or any other statistics.
Implement instruction queue
Uses a limited capacity queue.
Knows when it is throttled by the instruction memory system.
ALU operations don't take additional time beyond the cache time
ALU instruction which hits in L1 instruction cache will take l1_access_delay total, for both the cache and the execution.
Implement a limited-capacity queue with future values
For the instruction unit
Actually use validateRegisterIndex in InstructionFactory
Implement functional units: adder
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.