| Seth Mueller's blog | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Home Projects About Me Find Me All Posts:
|
Dual-Issue Out-of-Order Superscaler Processor Using Tomasulo's algorithm in Logisim5-25-2026This article discusses my implementation of Tomasulo's algorithm on a simple simulated processor in Logisim and how I was able to extend it to allow for dual-issuing of instructions. If you are unfamiliar with Tomasulo's algorithm, I'd strongly recommend checking out my previous post describing the algorithm. Before I get started, here's some quick definitions of everything in the very long title:
Alright, on to the article... After reading through some more of Computer Architecture: A Quantitative Approach, I got inspired to have a hand at my own implementation of Tomasulo's algorithm, which allows for processors to handle running and queueing multiple instructions at once. Once I got the basic algorithm down, it was pretty straightforward to expand the processor to be able to commit multiple instructions per clock cycle and fetch multiple instructions from memory per clock cycle (hence the "dual-issue" in the title). As with the other simulated processor I put together (link), I used Logisim to design this whole thing and tried to keep everything else simple in order to maintain focus on the algorithm itself in the project. The ISA I implemented was from a digital electronics class my school offers and is very minimalistic (see image for description). Since jump addresses can only be 6 bits long, this limits all programs to being only 64 instructions, which makes the ISA a bit impractical, but again, the point of this was just to study the theory of instruction-level parallelism.
The very simple ISA. Instructions are 8-bit and operate on 4 16-bit registers. The Processor/Implemenation in Logisim
Top-level overview of the processor. You may need to open it in a new tab and zoom in to see the detailed text. Here is the root level of the entire processor where everything connects. The bulk of Tomasulo's algorithm comes from the Since the processor is dual-issue, the Here is a basic overview of the responsiblities of each part:
PreformanceTo demonstrate the preformance of the processor I ran the following simple endless fibonacci sequence calculator program which places fibonacci numbers starting with the second term (1, 2, 3, 5, ...) in memory consecutively.
The time to place 46,368—the largest fibonacci number able to be represented with 16 bits—in memory for this processor and other simple ones is listed below:
CommentsPost a comment:Please don't spam the comments, I get a notification every time. Also please be mature (Nolan) Message limit: 1500 characters, name limit: 100 characters |
||||||||||||||
No comments here yet. You should write one!