-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
A better version of the "Why a new Design" #2
base: master
Are you sure you want to change the base?
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -52,17 +52,31 @@ Here is a list of important assumptions and things to know about : | |
- In the execute pipeline, stage.up(RS1/RS2) is the value to be used, while stage.down(RS1/RS2) should not be used, as it implement the bypassing for the next stage | ||
- Fetch.ctrl(0) isn't persistant. | ||
|
||
About VexRiscv (not VexiiRiscv) | ||
Why a New Design? | ||
------------------------------------ | ||
|
||
There is few reasons why VexiiRiscv exists instead of doing incremental upgrade on VexRiscv | ||
The original VexRiscv is a successful design. But we have reached the limits of what it can accomplish, and in the process of improving it, we added too much complexity. We now have a newer and better abstraction. Specifically the new VexiiRiscv abstraction: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "better abstraction" can make people running away. Also, fondamentaly it isn't about the abstraction, it is more about the framework :) |
||
|
||
- Mostly, all the VexRiscv parts could be subject for upgrades | ||
- VexRiscv frontend / branch prediction is quite messy | ||
- The whole VexRiscv pipeline would have need a complete overhaul in oder to support multiple issue / late-alu | ||
- The VexRiscv plugin system has hits some limits | ||
- VexRiscv accumulated quite a bit of technical debt over time (2017) | ||
- The VexRiscv data cache being write though start to create issues the faster the frequency goes (DRAM can't follow) | ||
- The VexRiscv verification infrastructure based on its own golden model isn't great. | ||
- Supports more parallelism with optionally multiple issues and multiple early and late alus. | ||
- Has a much cleaner frontend / branch prediction design. | ||
- Has a more flexible plugin system. | ||
- Has a much better verification approach. | ||
- Works better with DDRAM than the existing write through data cache. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I would say this is aproximative. The VexRiscv design works quite well with SDR DRAM. The notion of running the CPU at higher frequency with write through was starting to hit DRAM limits is kinda key. |
||
|
||
Really almost the whole VexRiscv system would need to rewritten, so it is better to start anew. This can be done faster than carrying around the old baggage. | ||
|
||
What was Wrong with the Old Design? | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "Old Design" is too much relying on the implicit understanding that we talk about VexRiscv. |
||
------------------------------------ | ||
|
||
There are a few reasons why we are creating a new VexiiRiscv instead of doing incremental upgrade on VexRiscv: | ||
|
||
- Almost all of the VexRiscv parts need to be upgraded. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
It isn't that they need to be ugraded, it is more that something better could be done. |
||
- VexRiscv front end amd branch prediction is quite messy. | ||
- The whole VexRiscv pipeline would have need a complete overhaul in oder to support multiple issue / late-alu. | ||
- The VexRiscv plugin system has hits some limits. | ||
- VexRiscv accumulated quite a bit of technical debt since it was introduced in 2017. | ||
- The VexRiscv data cache being write though starts to have issues as frequency increases (DRAM can't follow). | ||
- The VexRiscv verification infrastructure being based on its own golden model isn't great. | ||
|
||
So, enough is enough, it was time to start fresh :D | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm maybe "new design" is too much implicit (maybe it should be more explicit)
"Why VexiiRiscv" ?