(转)64位开源处理器Rocket的源代码简单介绍
转载地址: http://blog.csdn.net/leishangwen/article/details/46604819
最近大概阅读了一下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个文件,各个文件实现的功能大致如下:
| 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 | 定义了一些对象,提供了一些工具函数,比如:类型转换。 |
以上是个人的理解,欢迎大家提出异议,共同讨论啊。
(转)64位开源处理器Rocket的源代码简单介绍的更多相关文章
- 64位开源处理器Rocket该人士介绍
最近大概读一点UCB发布时间Rocket处理器的源代码,的每个文件的源代码的功能有一定的一般理解,Mark一点点. Rocket是一家64bit标量处理器,5第一阶段管道,用途risc-v指令集.综合 ...
- GitHub开源库排名一百的简单介绍,值得收藏!
GitHub Android Libraries Top 100 简介 本项目主要对目前 GitHub 上排名前 100 的 Android 开源库进行简单的介绍, 至于排名完全是根据 GitHub ...
- 高性能、高容错、基于内存的开源分布式存储系统Tachyon的简单介绍
Tachyon是什么? Tachyon是一个高性能.高容错.基于内存的开源分布式存储系统,并具有类Java的文件API.插件式的底层文件系统.兼容Hadoop MapReduce和Apache Spa ...
- ubuntu 到底是选择32位还是64位?
ubuntu 到底是选择32位还是64位? 2011-06-03 15:16:31 标签:ubuntu linux 休闲 cpu 职场 原文出处:官方wiki原文作者:授权许可: 创作共用协议Att ...
- [百度空间] [转]将程序移植到64位Windows
from : http://goooder.bokee.com/2000373.html (雷立辉 整理) 简介:本文对如何将32位Windows程序平滑的支持和过渡到64位Windows操作系统做出 ...
- java与32/64位虚拟机
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt232 32位电脑与64位电脑有什么不同? 我们通常说的64位技术是相对于32 ...
- IOS是否存在32位和64位版本的区分
苹果于2013年9月推出了iPhone 5S新手机,采用的全新A7处理器其最大特色就是支持64位运算.其64位A7处理器的使用意味着iPhone性能会大有提高,性能和速度更加出色:而要到达到这样的性能 ...
- Visual Studio远程调试监视器(MSVSMON.EXE)的32位版本不能用于调试64位进程或64位转储
在VS2013中调试Silverlight项目时,提示:无法附加.Visual Studio远程调试监视器(MSVSMON.EXE)的32位版本不能用于调试64位进程或64位转储.请改用64位版本. ...
- 介绍 32 位和 64 位版本的 Microsoft Office 2010
在使用 64 位版本的 Office 2010 运行现有解决方案时存在两个基本问题: Office 2010 中的本机 64 位进程无法加载 32 位二进制文件.在使用现有 Microsoft Act ...
随机推荐
- DevExpress 中 汉化包 汉化方法
刚试了一下,直接把汉化包放在 Debug 目录下也是可以的.直接会汉化 第一步: 在Debug 下添加 zh-CN 汉化包(自行下载) 第二步: 在 Program.cs中添加以下代码 : Syste ...
- java 中PriorityQueue优先级队列使用方法
1.前言 优先级队列是不同于先进先出队列的另一种队列.每次从队列中取出的是具有最高优先权的元素. PriorityQueue是从JDK1.5开始提供的新的数据结构接口. 如果想实现按照自己的意愿进行优 ...
- hdu 4893Wow! Such Sequence!
多校第三场 7题..线段树A的 #include <cstdio> #include <cstring> #include <iostream> #include ...
- Mysql数据库配置文件my.cnf详解
basedir = path 使用给定目录作为根目录(安装目录). character-sets-dir = path 给出存放着字符集的目录. datadir = path 从给定目录读取数据库文件 ...
- 下载论坛源码GBK UTF8 BIG5分别是什么意思
下载论坛源码GBK UTF8 BIG5分别是什么意思? 提问者:ly1987520 | 浏览次数:4010次 下载论坛源码简体中文GBK 简体中文UTF8 繁体中文BIG5 分别是什么意思?他们的区别 ...
- python 静态成员变量
python 静态成员变量 python 也可以定义静态成员变量,就是类的变量. 注意python的静态成员变量只能通过 类.变量名 的形式获取 class A: a1 = 0 def __init_ ...
- android实现超酷的腾讯视频首页和垂直水平网格瀑布流一揽子效果
代码地址如下:http://www.demodashi.com/demo/13381.html 先来一波demo截图 实现ListView.GridView.瀑布流 1.导入RecyclerView的 ...
- jquery mobile 的loading提示“正在加载...”在不同版本中的不同实现方式
在jquery mobile开发中,在页面的切换.或者ajax获取数据时由于网速慢等其他原因,会有一个加载的时间,如果能在这段时间给一个“正在加载...”的提示,用户体验会更好.下面来简单的介绍一下在 ...
- VMware Workstation 8正式版下载+密钥序列号
http://www.cnblogs.com/balaamwe/archive/2011/12/13/2285972.html摘要: 支持Win8安装,虚拟机VMware Workstation 8正 ...
- C# 读 xml注释
有这么个需求: 要统计所有的配置文件,这些配置文件都xml格式,并把这些配置写到数据表里,如果有注释要把这些注释写到对应配置对象的描述字段上 <item id="" key= ...