64位开源处理器Rocket的源代码简单介绍

最近大概阅读了一下UCB发布的Rocket处理器的源码,对源代码各个文件的功能有了一些大致的了解,Mark一下。

Rocket是一款64bit的标量处理器,5级流水线,采用的是risc-v指令集,集成FPU,并有许多or1200没有的特性,比如:无阻塞缓存、分支预测、返回地址堆栈、硬件页表填充、cache支持ECC、支持多核等。

Rocket的源代码是使用Chisel编写的,Chisel是UCB发布的基于Scala的领域特定语言。可以在https://github.com/ucb-bar/rocket下载Rocket的全部源码,共有20个文件,各个文件实现的功能大致如下:

开源处理器Rocket的源代码文件作用说明
arbiter.scala 实现了一个固定优先级的仲裁器,编号越低,优先级越高
btb.scala 实现了gshare,其中包含BTB(Branch Target Buffer)、BHT(Branch History Table),还实现了RAS(Return Address Stack)
consts.scala 定义了一些类似与宏定义的变脸
core.scala 包含控制通路、数据通路,联合起来为Core
csr.scala 实现了risc-v指令集中定义的Control Status Registers
ctrl.scala 实现了控制通路,其中就反映了5级流水线
decode.scala 其中实现了对卡诺图的化简,在指令译码的时候会使用这里的功能
dpath.scala 实现数据通路
depath_alu.scala 实现了ALU
fpu.scala 实现了与第三方FPU的接口
icache.scala 实现了指令一级缓存、取值,其中就使用了btb.scala中定义的分支预测技术
instructions.scala 定义了Rocket处理器支持的所有指令
multiplier.scala 实现了乘法、除法运算,其中乘法采用的是迭代法,除法采用的是试商法
nbdcache.scala 实现了数据一级缓存,采用MSHR技术实现了无阻塞缓存
package.scala 定义了复位地址、异常处理vector base address
ptw.scala 实现了硬件的page table walk,也就是硬件页表填充
rocc.scala 实现了一个加速协处理器,用来执行用户自定义指令
tile.scala Rocket处理器的顶层文件,其中连接Core、指令一级缓存、数据一级缓存、FPU等模块
tlb.scala 实现了传输后备缓冲器
util.scala 定义了一些对象,提供了一些工具函数,比如:类型转换。

以上是个人的理解,欢迎大家提出异议,共同讨论啊。

时间: 2024-11-10 20:04:48

64位开源处理器Rocket的源代码简单介绍的相关文章

GitHub开源库排名一百的简单介绍,值得收藏!

GitHub Android Libraries Top 100 简介 本项目主要对目前 GitHub 上排名前 100 的 Android 开源库进行简单的介绍, 至于排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不相关的项目, 所以排名并不具备任何官方效力, 仅供参考学习, 方便初学者快速了解当前一些流行的 Android 开源库. iOS 版本的在此: https://github.com/Aufree/tri

高性能、高容错、基于内存的开源分布式存储系统Tachyon的简单介绍

Tachyon是什么? Tachyon是一个高性能.高容错.基于内存的开源分布式存储系统,并具有类Java的文件API.插件式的底层文件系统.兼容Hadoop MapReduce和Apache Spark等特征.Tachyon能够为集群框架(如Spark.MapReduce等)提供内存级速度的跨集群文件共享服务.Tachyon充分使用内存和文件对象之间的世代(Lineage)信息,因此速度很快,官方号称最高比HDFS吞吐量高300倍.目前,很多公司(如Pivotal.EMC.红帽等)已经在使用T

关于Win7 64位系统通过ODBC访问Access的一点经验

最近趁着工作相对清闲,把电脑的操作系统重装了,由原来的XP换成了Win7(64位),结果遇到一系列的应用数据访问问题. 问题1:自己用VS2010编写的很多小程序在Win7下运行出现错误,经过核实,出错的环节都是访问Access数据库. 问题2:自己经常用的分析工具Knime,在读取Access数据库时提示出错(Knime是64位). 为了解决上述问题,上网搜索了一番,初步弄清楚问题的原因. 因为我安装的Office2007是32位的(一般用户不推荐安装64位的Office,具体参考这篇文章:3

Java千百问_01基本概念(016)_32位和64位计算机有什么区别

点击进入_更多_Java千百问 1.32位和64位计算机有什么区别 我们通常说的32位.64位计算机是指计算机的CPU位数.当然很早还有8位.16位的CPU,以Intel的80x86系列来说,8位的8080,16位的8086.8088.80186.80286,而32位的CPU最早始于80386,64位就是大家熟悉的EM64T技术以及AMD的x86-64.当然不同的厂商间同位数的CPU内部有很大的区别,但是它们的核心都是一样:CPU处理能力为64位. 这个位数指的是CPU的通用寄存器(GPRs,G

[百度空间] [转]将程序移植到64位Windows

from : http://goooder.bokee.com/2000373.html (雷立辉 整理) 简介:本文对如何将32位Windows程序平滑的支持和过渡到64位Windows操作系统做出了一个简单而系统的介绍.包括对于64位操作系统的版本,编程模型,一些移植原则甚至包括对驱动程序的移植原则的介绍. 作者介绍:系统分析员,现在在北京工作.作者的blog:http://goooder.blogchina.com. 前言: 或许大家还对32位的CPU及操作系统使用还是觉得非常的合乎日常需

Visual Studio远程调试监视器(MSVSMON.EXE)的32位版本不能用于调试64位进程或64位转储

在VS2013中调试Silverlight项目时,提示:无法附加.Visual Studio远程调试监视器(MSVSMON.EXE)的32位版本不能用于调试64位进程或64位转储.请改用64位版本. 解决方法很简单: 把调试按钮的调试程序Internet Explorer改成Internet Explorer2,就可以了.

win7 64位如何调出debug

win7 64位没有debug功能,接下来介绍如何使win7可以使用该功能 工具/原料 dos模拟器即DOSBOX 下载地址: http://www.dosbox.com/download.php?main=1 debug32.exe 下载地址:http://download.csdn.net/detail/qq_20480611/8715889 方法/步骤 下载一个dosbox和win7 32位debug.exe,安装dosbox,打开后页面如下 将debug.exe放入磁盘根目录,这里以D盘

Qt 4.5发布(最大的变动是换用LGPL许可证,移植进了苹果的Cocoa框架。之前的Qt只支持Carbon框架,现在的Qt 4.5两者都支持。单一源代码创建出支持32位或64位字节的Intel或PowerPC Mac二进制文件)

Nokia的开源Qt开发工具正式发布了4.5版.如前所述,Qt 4.5最大的变动是换用LGPL许可证,目前采用的三个许可证分别为LGPL/GPL和商业许可证. 新版增强图形系统.数据处理和网络引擎性能,其它主要特性有:提升与WebKit渲染引擎的集成度,包括Netscape浏览器插件API支持,Qt应用程序可以载入Flash:更先进的Web 用户界面效果,包括动画.转换和缩放:新的JavaScript引擎可提供更强的性能. Qt4.5还被移植进了苹果的Cocoa框架.之前的Qt只支持Carbon

利用x64_dbg破解一个最简单的64位小程序

最近在研究学习一些逆向的东西,其实之前也涉及到这方面的东西,只是之前的系统和应用,基本上都是32位的,所以直接用od来分析就行了,这方面的资料在网上很多,随便一搜到处都是,不过随着技术的不断发展,64位系统出现了,随之64位的应用也出现了,而od只能分析32位应用,所以一些64位应用,od是没办法分析逆向的,所以,在这里要提到另一个可以用于分析64位应用的调试软件,名字叫x64_dbg.网上对于这款软件的介绍很少,只是说能分析64位应用,具体用法也找不到,不过我找到了它的一个教程,里面有一个最简