- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档免费下载、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
RISCV的实战-⼆级流⽔线的DarkRISCV
介绍
在2018年8⽉19⽇凌晨2点到8点之间夜晚开发,darkriscv是开源RISC-V指令集的⼀个实验性的实现。如今,经过数周令⼈兴奋的不眠
夜⼯作,darkriscv已经可以稳定运⾏,可以⽤riscv-elf-gcc编译“hello world”并正常运⾏!
设计概念基于作者的其他早期RISC处理器,由简化的两级流⽔线组成,其中在第⼀个时钟中从指令存储器取指令,然后在第⼆个时钟中解
码/执⾏指令。管道在没有互锁的情况下重叠,在某种程度上,darkriscv可以在⼤多数时间达到每个指令⼀个时钟的性能(例外是在分⽀之
后,其中⼀个时钟在流⽔线flush中丢失)。另外,代码⾮常紧凑,有⼤约200⾏Verilog代码。
尽管与其他RISC-V实现相⽐,代码规模不⼤,但darkriscv具有许多令⼈印象深刻的功能:
实现了⼤多数RISC-V RV32I指令集
⼯作频率⾼达75MHz,⼤部分时间每条指令维持 1个时钟
灵活的哈佛架构 (易于集成缓存控制器)
在真正的spartan-6 lx9中⼯作得很好
使⽤RISC-V的gcc 9.0.0可正常⼯作(⽆需补丁 !)
仅使⽤⼤约 1000个LUT(spartan-6 lx9,仅核⼼)
和最好的功能:BSD许可证
随意提出建议和良好的⿊客攻击 (良好的可扩展性)!
实现说明
因为作者使⽤的开发版是超低功耗的Xilinx Spartan-6系列FPGA,所以该项⽬⽬前使⽤的开发⼯具为Xilinx ISE 14.4 for Linux。但
是,DarkRISCV没有对Xilinx元件管脚进⾏明确的引⽤,并且所有逻辑都是直接从Verilog推断出来的,这意味着该项⽬可以轻松移植到其
他FPGA系列芯⽚板,并且可以轻松移植到其他环境中(作者将在未来添加对其他FPGA和⼯具的⽀持) )。
darkriscv的开发 ⽬的是为680x0 / coldfire系列的某些项⽬创建迁移路径。我的第⼀种⽅法是寻找可⾏的软件⽅案,经过⼤量的测试,我
发现了picorv32和RISC-V周围的所有⽣态系统。尽管直接替换680x0系列是⼀个⾮常好的选择,但picorv32可能不⾜以取代coldfire
processors系列芯⽚板。
picorv32的主要问题是⼤多数指令每条指令需要3或4个时钟,在某些⽅⾯类似于68020,但运⾏频率为 150MHz。⽆论如何,每条指令
有3个时钟,峰值性能仅为50MIPS左右。因为我对实验RISC内核有⼀些很好的经验,我就开始编写darkriscv代码来检查复杂程度。令我
惊讶的是,在第⼀个晚上,我映射了RV32I规范的⼏乎所有指令,⽽darkriscv开始在75MHz正确执⾏第⼀条指令,每条指令⼀个时钟,
类似于快速和漂亮的68040!哇 ! :)
RV32I规范本⾝⾮常令⼈印象深刻且易于实现(参见[1],第16页)。当然,还有⼀些缺点,例如有趣的⼩端总线(与680x0系列中的⽹络
导向⼤端总线相反),但经过⼀些实证测试后很容易就能完成⼯作。
初始设计⾮常简单,处理器具有2级流⽔线--指令预取和指令执⾏。在预取指令流⽔线,程序计数器总是提前⼀个时钟⼯作。在执⾏⽅⾯,
我们发现了所有解码,寄存器组读取,算术和逻辑运算,寄存器组写⼊和IO操作。只要两个阶段重叠,结果就是连续的指令流以每个指令1
个时钟的速率和⼤约75MIPS。
这意味着当与运⾏在150MHz并且每个指令有3个时钟的picorv32相⽐时,75MHz的darkriscv指令执⾏速度快50%。
不幸的是,我的加载指令有⼀个⼩问题: 1级执⾏需要更快的外部存储器!这对于早期的RISC处理器来说不是问题,因为早期的RISC处理
器使⽤基于LUT的⼩型和更快的存储器,但在darkriscv的情况下,该提议是⼀种更灵活的设计,在某种程度上可以使⽤基于BlockRAM的
缓存和缓慢的外部存储器。块RAM的问题在于需要两个时钟来回读存储器 :⼀个时钟⽤于寄存地址,另⼀个时钟⽤于寄存数据。外部存储
器需要⼤量时钟。
我的第⼀个解决⽅案是使⽤两个不同的时钟沿:⼀个⽤于darkriscv,另⼀个⽤于内存/总线接⼝。
在这种情况下,具有2级流⽔线的处理器就像2 * 0.5 + 1级流⽔线⼀样:
1/2阶段⽤于指令预取
1/2阶段⽤于静态指令解码
指令执⾏的1个阶段
在加载/存储指令的特殊情况下,最后⼀个阶段分为两个不同的阶段,作为⼀个4 * 0.5阶段的管道:
1/2阶段⽤于指令预取
您可能关注的文档
- 16秋西南交《材料力学A》在线作业二.pdf
- SpringBoot+Redis(实现处理热点数据).pdf
- 2020中考作文热点素材-风景.pdf
- 2019六年级数学上册单元测试卷:第一单元语文.pdf
- Struts、Spring、Hibernate三大框架的原理和优点.pdf
- 2014年下计算机专业组工作计划.pdf
- 2021版新教材高中地理课时分层作业8海水的性质(含解析)新人教版必修第一册.pdf
- 2021届河南省焦作市普通高中高三下学期3月三模考试理科综合生物试卷及答案.pdf
- 2014年金融IT软件行业简析.pdf
- 2022年10月社会学概论00034自考真题.pdf
- 2022北京东城初一(下)期末英语(七年级试题).pdf
- 2022北京东城初一(下)期末地理(七年级试题含答案).pdf
- 2022北京大兴初一(下)期末英语(七年级试题含答案).pdf
- 2022北京大兴初一(下)期末地理(七年级试题含答案).pdf
- 2022北京朝阳初一(下)期末语文(七年级试题含答案解析).pdf
- 2022北京朝阳初一(下)期末地理(七年级试题含答案).pdf
- 2022北京门头沟初一(下)期末道德与法治(七年级试题含答案解析).docx
- 2022北京西城初一(下)期末道德与法治(七年级试题).pdf
- 2022北京门头沟初一(下)期末道德与法治(七年级试题含答案解析).pdf
- 保密知识产权协议书模板(3篇).doc
文档评论(0)