最近大概读一点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 定义了一些对象,提供了一些工具函数,比方:类型转换。

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

版权声明:本文博主原创文章。博客,未经同意不得转载。

64位开源处理器Rocket该人士介绍的更多相关文章

  1. (转)64位开源处理器Rocket的源代码简单介绍

    转载地址: http://blog.csdn.net/leishangwen/article/details/46604819 最近大概阅读了一下UCB发布的Rocket处理器的源码,对源代码各个文件 ...

  2. ubuntu 到底是选择32位还是64位?

     ubuntu 到底是选择32位还是64位? 2011-06-03 15:16:31 标签:ubuntu linux 休闲 cpu 职场 原文出处:官方wiki原文作者:授权许可: 创作共用协议Att ...

  3. 64位sql server 如何使用链接服务器连接Access

    原文:64位sql server 如何使用链接服务器连接Access 测试环境 操作系统版本:Windows Server 2008 r2 64位 数据库版本:Sql Server 2005 64位 ...

  4. java与32/64位虚拟机

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt232 32位电脑与64位电脑有什么不同? 我们通常说的64位技术是相对于32 ...

  5. IOS是否存在32位和64位版本的区分

    苹果于2013年9月推出了iPhone 5S新手机,采用的全新A7处理器其最大特色就是支持64位运算.其64位A7处理器的使用意味着iPhone性能会大有提高,性能和速度更加出色:而要到达到这样的性能 ...

  6. 介绍 32 位和 64 位版本的 Microsoft Office 2010

    在使用 64 位版本的 Office 2010 运行现有解决方案时存在两个基本问题: Office 2010 中的本机 64 位进程无法加载 32 位二进制文件.在使用现有 Microsoft Act ...

  7. 字符转码开源库libiconv目前还不支持64位

    最新版的libiconv 1.14目前还不支持64位系统,只能编译出32位库. libiconv 1.14下载地址: http://ftp.gnu.org/pub/gnu/libiconv/libic ...

  8. 开源一个IE下获取XPath小工具,支持32/64位

    背景是曾经友情支持了测试组一小段时间,发现他们使用selenium做页面的自动化测试,需要用到XPath,但IE下没有获取XPath的工具,只能在Firefox和chrome下获取,步骤还比较麻烦.而 ...

  9. C语言变量长度在32位和64位处理器上的关系

    C语言变量长度在32位和64位处理器上的关系       理论上来讲 我觉得数据类型的字节数应该是由CPU决定的,但是实际上主要由编译器决定(占多少位由编译器在编译期间说了算).常用数据类型对应字节数 ...

随机推荐

  1. 利用Jquery实现http长连接(LongPoll)

    参考:http://www.cnblogs.com/vagerent/archive/2010/02/05/1664450.html PS:为了满足 某些需要 实时请求的业务(PS:例如聊天室),我们 ...

  2. java 常用基本数据类型的默认值

    在使用基本数据类型作为类成员的时候,有时只初始化了而没有给变量赋值,那么此时,java会给你的变量赋一个默认初始值. boolean        false char              '/ ...

  3. 【UVA1331】关于最优三角剖分

    最近在练习DP专题,学会了很多表示方法和转换方法,今天做最优三角剖分的时候发现脑子卡了,不会表示状态,于是写个博客记录一下. 最优三角剖分的一类题目都是差不多的.给你一个多边形,让你把它分割成若干个三 ...

  4. AD认证

    这两天接触到一个新的知识点,AD验证.什么是AD验证?Active Directory——活动目录,活动目录只是LDAP的一个实现,提供LDAP认证.Radius认证和NTML认证,都是标准认证方式 ...

  5. kernel 校验和实现

    kernel 校验和实现 Kernel checksum implementation ) TCP包的错误检测使用16位累加和校验. 除了TCP包本身, TCP校验数据块还包括源IP地址,目的IP地址 ...

  6. 【CF】259 Div.1 B Little Pony and Harmony Chest

    还蛮有趣的一道状态DP的题目. /* 435B */ #include <iostream> #include <string> #include <map> #i ...

  7. BZOJ_1001_狼抓兔子_(平面图求最小割+对偶图求最短路)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1001 1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec   ...

  8. BZOJ2661: [BeiJing wc2012]连连看

    2661: [BeiJing wc2012]连连看 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 483  Solved: 200[Submit][S ...

  9. 动态规划(计数DP):HDU 5136 Yue Fei's Battle

    Yue Fei's Battle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 512000/512000 K (Java/Other ...

  10. HDU-1598 find the most comfortable road

    find the most comfortable road Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...