内容简介:Minerva is a CPU core that currently implements theMinerva currently requires Python 3.6+ andTo use Minerva in its minimal configuration, you need to wire the following ports to
Minerva
A 32-bit RISC-V soft processor
Minerva is a CPU core that currently implements the RISC-V RV32IM instruction set. Its microarchitecture is described in plain Python code using the nMigen toolbox.
Quick start
Minerva currently requires Python 3.6+ and nMigen on its master branch.
python setup.py install python cli.py generate > minerva.v
To use Minerva in its minimal configuration, you need to wire the following ports to minerva_cpu :
clk rst ibus__* dbus__* external_interrupt timer_interrupt software_interrupt
Features
The microarchitecture of Minerva is largely inspired by the LatticeMico32 processor.
Minerva is pipelined on 6 stages:
- Address The address of the next instruction is calculated and sent to the instruction cache.
- Fetch The instruction is read from memory.
- Decode The instruction is decoded, and operands are either fetched from the register file or bypassed from the pipeline. Branches are predicted by the static branch predictor.
- Execute Simple instructions such as arithmetic and logical operations are completed at this stage.
- Memory More complicated instructions such as loads, stores and shifts require a second execution stage.
- Writeback Results produced by the instructions are written back to the register file.
The L1 data cache is coupled to a write buffer. Store transactions are in this case done to the write buffer instead of the data bus. This enables stores to proceed in one clock cycle if the buffer isn't full, without having to wait for the bus transaction to complete. Store transactions are then completed in the background as the write buffer gets emptied to the data bus.
Configuration
The following parameters can be used to configure the Minerva core.
| Parameter | Default value | Description |
|---|---|---|
reset_address |
0x00000000 |
Reset vector address |
with_icache |
False |
Enable the instruction cache |
icache_nways |
1 |
Number of ways in the instruction cache |
icache_nlines |
128 |
Number of lines in the instruction cache |
icache_nwords |
4 |
Number of words in a line of the instruction cache |
icache_base |
0x00000000 |
Base of the instruction cache address space |
icache_limit |
0x80000000 |
Limit of the instruction cache address space |
with_dcache |
False |
Enable the data cache |
dcache_nways |
1 |
Number of ways in the data cache |
dcache_nlines |
128 |
Number of lines in the data cache |
dcache_nwords |
4 |
Number of words in a line of the data cache |
dcache_base |
0x00000000 |
Base of the data cache address space |
dcache_limit |
0x80000000 |
Limit of the data cache address space |
with_muldiv |
False |
Enable RV32M support |
with_debug |
False |
Enable the Debug Module |
with_trigger |
False |
Enable the Trigger Module |
nb_triggers |
8 |
Number of triggers |
with_rvfi |
False |
Enable the riscv-formal interface |
Possible improvements
In no particular order:
- RV64I
- Floating Point Unit
- Stateful branch prediction
- MMU
- ...
If you are interested in sponsoring new features or improvements, get in touch at contact [at] lambdaconcept.com .
License
Minerva is released under the permissive two-clause BSD license. See LICENSE file for full copyright and license information.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Spring技术内幕
计文柯 / 机械工业出版社 / 2010-1-1 / 55.00元
内容简介: 本书是Spring领域的问鼎之作,由业界拥有10余年开发经验的资深Java专家亲自执笔!Java开发者社区和Spring开发者社区一致强烈推荐。 国内第一本基于Spring3.0的著作,从源代码的角度对Spring的内核和各个主要功能模块的架构、设计和实现原理进行了深入剖析。你不仅能从木书中参透Spring框架的优秀架构和设计思想,而且还能从Spring优雅的实现源码中一窥......一起来看看 《Spring技术内幕》 这本书的介绍吧!