引言

我们在前面分析了ORPSoC,or1200_top,和or1200_cpu的整体架构,在最近,我们也分析了or1200的pipeline(流水线)中的两级,EX级和IF级。

但是,我们还没有从宏观的角度,整体的了解一下or1200的流水线结构,本小节就做这件事情。

1,流水线

1>概述

关于流水线的概念,历史,划分等等这些内容,在很多文献里都提到过,而且我们之前也介绍过,这里不再展开阐述,如有疑问请参考:

http://blog.csdn.net/rill_zhen/article/details/8038697

或者

http://en.wikipedia.org/wiki/Pipeline_(computing)

2>or1200的流水线

在分析or1200的流水线之前,我们有必要先了解一下关于or1200_top(OpenRISC的一种实现,包括core和外围模块)。

下面一段内容来自官网的翻译:http://opencores.org/or1k/OR1200_OpenRISC_Processor

1》概述

or1200是一个32-bit的标量RISCharvard架构的微处理器。具有5级整型流水(没有fpu),支持MMU和基本的DSP处理能力。

默认配置下,or1200的dcache和icache都是8K直接映射,cacheline是16B。dcache和icache都是物理索引(也就是说cache的地址是物理地址,关于什么是物理索引,虚拟索引,虚拟物理混合索引,我们之前介绍过,请参考:http://blog.csdn.net/rill_zhen/article/details/9491095)。

默认配置下,or1200的dmmu和immu中的TLB都是基于散列的,映射方式采用直接映射,dtlb和itlb都是64 entry。

or1200除了最基本的模块外,还增加了debug,tt,pic,pm等模块。

2》基本架构组成

a,核心模块:CPU/DSP

b,兼容IEEE754单精度的FPU

c,直接映射数据cache

d,直接映射指令cache

e,基于散列DTLB的数据MMU

f,基于散列ITLB的指令MMU

g,具有功耗管理单元和功耗管理接口

h,嘀嗒定时器

i,中断控制器和中断接口

j,指令总线和数据总线都是wishbone B3

3》目前状态

or1200是稳定版本,并且已经在很多商用ASIC和FPGA上实现了。但是为了增加新的特性和进一步的完善它,所以开发还在继续。

4》验证

or1200利用or1ksin(or1200的simulator),在模拟器上跑了很多C和汇编程序。

5》调试接口

一般情况下,or1200都有一个debug nuit模块,和JTAG模块来实现对or1200的在线调试。

6》or1200的实现

or1200在0.18u 6LM工艺下,工作在150MHz时,测量其性能有150多个dhrystone,相当于2.1MIPS,MAC运算能力为150个。(Dhrystone是测量处理器运算能力的最常见基准程序之一,常用于处理器的整型运算性能的测量。程序是用C语言编写的,因此C编译器的编译效率对测试结果也有很大影响。Dhrystone的计量单位为每秒计算多少次Dhrystone,后来把在VAX-11/780机器上的测试结果1757 Dhrystones/s定义为1 Dhrystone MIPS(百万条指令每秒))。

如果采用默认配置,整个or1200所用的门的数量大概是40K个。

7》实现和性能统计

采用默认配置,在FPGA上实现的情况统计:
15K core cells (1850 FFs, 48 block RAMs) at 25MHz on Actel ProASIC3 technology

4K LUTs, 7 block RAM at 60MHz on Xilinx Virtex 5 technology

ORPSoC的性能统计:(benchmarks run within ORPmon)

OR1200, 8KByte/4KByte I/D cache, hardware multiply/divide disabled, @20MHz on Actel ProASIC3, SDR SDRAM
Dhrystone (120,000 runs): 17,000 Dhrystones/second

CoreMark 1.0 : 11.954573 (0.6 CoreMark/MHz) / GCC4.5.1-or32-1.0rc1 -O2 -msoft-mul -msoft-div -msoft-float / STACK
OR1200, 8KByte/4KByte I/D cache, hardware multiply/divide enabled, @20MHz on Actel ProASIC3, SDR SDRAM
Dhrystone (120,000 runs): 20,000 Dhrystones/second

CoreMark 1.0 : 25.773196 (1.25 CoreMark/MHz) / GCC4.5.1-or32-1.0rc1 -O2 -mhard-mul -mhard-div -msoft-float / STACK
OR1200, 32KByte/32KByte I/D cache, hardware multiply/divide enabled, @50MHz on Xilinx ML501
Dhrystone (500,000 runs): 50,000 Dhrystones/second

CoreMark 1.0 : 66.788100 (1.34 CoreMark/MHz) / GCC4.5.1-or32-1.0rc1 -O3 -mhard-mul -mhard-div -msoft-float -nostdlib / STACK

最小配置时,在FPGA上的实现:
7K core cells (1100 FFs, 4 block RAMs) at 35MHz on Actel ProASIC3 technology
2.4K LUTs, 1 block RAM at 125MHz on Xilinx Virtex 5 technology

2,or1200的流水线结构

1>a general picture

惯例,在分析or1200 core的流水线结构之前,我们先看一下or1200_cpu的所有模块的连接图,如下所示:

从中我们可以看出,整个or1200的CPU =内核一共由14个module组成。

2>or1200的流水线线结构

一般,在进行computer architecture design时,大体上分为两部分工作,一部分是数据通路的设计,另外一部分是控制通路的设计。所以,我们在分析or1200的架构时,也从这两个方面分析。

通过前面的介绍,我们知道or1200 的内核采用经典五级流水,由14个子模块组成,那么整体结构如何,各个流水线阶段都由那些子模块组成呢?如下所示:

3>子模块功能

之前,我们已经分析了IF级和EX级的模块,请参考:

IF级:

http://blog.csdn.net/rill_zhen/article/details/9733811

EX级:

http://blog.csdn.net/rill_zhen/article/details/9700155

EX级需要说明的是fpu模块虽然从图中看是实现了浮点运算,但实际上这个模块内部什么都没有,不要以为有一个叫fpu的模块就说or1200支持浮点运算。

下面我们简单说一下其它三个流水线阶段。

ID级:

也就是指令解码阶段,这个阶段由ctrl一个模块组成,其功能就是根据IF级的if模块读取指令cache获得的指令,根据指令格式进行解析,产生各种控制信号。

MA级:

也就是访存阶段,这个阶段由lsu(load store unit)一个模块组成,其功能就是读写外部的主存,当然,要先经过dmmu和dcache两道关卡。

WB级:

也就是写回阶段,这个阶段由wb_mux和rf两个模块组成,由于想进行写回操作的模块不止一个,所以需要一个mux。rf就是寄存器堆,其物理结构是两个双端口的RAM,值得注意的是这两个RAM的两个地址端口连在一起,而两个数据输出端口是分开的。而两个RAM分别存放第一个操作数和第二操作数,这样组织的结果就是只要一次写操作,同时写两个操作数,只需要一次读操作,就可以同时读到两个操作数。其结构如下:

3,小结

本小节从宏观的角度介绍了or1200的流水线的结构,并对每个流水阶段做了简单介绍。

OpenRisc-44-or1200的pipeline整体分析的更多相关文章

  1. Openrisc的or1200

    1 什么是OpenRISC OpenRISC 是硬件开源社区opencores开发的RISC指令集处理器架构,包括32 bits 的Openrisc1000 和64 bitsOpenrisc 2000 ...

  2. OpenRisc-45-or1200的ID模块分析

    引言 之前,我们分析了or1200流水线的整体结构,也分析了流水线中IF级,EX级,本小节我们来分析ID(insn decode)级的一些细节. 1,基础 or1200的pipeline的ID阶段包含 ...

  3. OpenRisc-39-ORPSoC,or1200的memory hierarchy整体分析

    引言 前面我们简单分析了ORPSoC的整体结构,or1200_top的整体结构,or1200_cpu的整体结构. 并对ORPSoC的启动过程,ORPSoC的debug子系统,clock子系统进行了介绍 ...

  4. Redis学习笔记7--Redis管道(pipeline)

    redis是一个cs模式的tcp server,使用和http类似的请求响应协议.一个client可以通过一个socket连接发起多个请求命令.每个请求命令发出后client通常会阻塞并等待redis ...

  5. A trip through the Graphics Pipeline 2011_12 Tessellation

    Welcome back! This time, we’ll look into what is perhaps the “poster boy” feature introduced with th ...

  6. A trip through the Graphics Pipeline 2011_09_Pixel processing – “join phase”

    Welcome back!    This post deals with the second half of pixel processing, the “join phase”. The pre ...

  7. A trip through the Graphics Pipeline 2011_07_Z/Stencil processing, 3 different ways

    In this installment, I’ll be talking about the (early) Z pipeline and how it interacts with rasteriz ...

  8. A trip through the Graphics Pipeline 2011_06_(Triangle) rasterization and setup

    Welcome back. This time we’re actually gonna see triangles being rasterized – finally! But before we ...

  9. A trip through the Graphics Pipeline 2011_04

    Welcome back. Last part was about vertex shaders, with some coverage of GPU shader units in general. ...

随机推荐

  1. JS日期格式化函数性能优化篇

    最近开发的软件中需要用到日志功能,其中有一个重要功能是显示日期和时间.于是网上搜了一把,搜到大量的日期格式化函数,不过比较了下,感觉代码都不够优雅,而且性能都不给力.对线上一些代码进行了评测,以下是一 ...

  2. python Sina微博自动转发带抽奖字样的微博,添加关注,取消关注

    项目地址:https://github.com/chengshuyi/SinaWeibo 具有的功能 转发带抽奖字样的微博并可以@相应数量的好友 提取关注并添加关注 取消关注 获取粉丝列表

  3. oracle、db2、sybase大型数据库面试总结

    1. oracle数据库单例.多例模式. 数据库创建之后会有一系列为该数据库提供服务的内存空间和后台进程,称为该数据库的实例. 每一个数据库至少会有一个实例为其服务. 2. mysql获取字段的长度用 ...

  4. JQuery图片轮换 nivoSlider图片轮换

    效果图: 第一步:添加引用 <script src="jquery-ui-1.9.2.custom.min.js" type="text/javascript&qu ...

  5. 安装VS2010后,如何设置老版本的项目文件不是默认用VS2010打开

    1.系统先后安装了VS2008和VS2010,在打开用VS2008创建的项目文件时总是会默认用VS2010打开,选择打开方式都不行,很不方便,差点要把VS2010卸载了.     其实只需要简单设置V ...

  6. PHP Cookies

    PHP Cookies cookie 常用于识别用户. Cookie 是什么? cookie 常用于识别用户.cookie 是一种服务器留在用户计算机上的小文件.每当同一台计算机通过浏览器请求页面时, ...

  7. 关于<%@ include file=" " %>与<jsp:include page=""></jsp:include>中的那些问题?

    今天在使用<%@ include file=" " %>指令时,竟然在页面中不让使用?这是怎么回事:问题如下图: 顿时被这个问题给搞到了!!!突然想到在以前的 JSP ...

  8. ie6,7下js动态加载图片不显示错误

    ie6,7下js动态加载图片不显示错误 先描述一下出现这种匪夷所思bug的背景: 我在页面加载的时候加载一堆小缩略图,<a href="javascript:void(0);" ...

  9. Sql Server索引(转载)

    官方说法: 聚集索引 一种索引,该索引中键值的逻辑顺序决定了表中相应行的物理顺序. 聚集索引确定表中数据的物理顺序.聚集索引类似于电话簿,后者按姓氏排列数据.由于聚集索引规定数据在表中的物理存储顺序, ...

  10. 【Ecstore2.0】导出问题解决(未导出或导出文件为0字节)

    如果导出队列能成功执行(队列不执行看这里)但是并未生成文件,那么原因大部份可能是出在FTP上. ECSTORE2.0采用了PHP的FTP模块,所以先确认你的环境是否安装了FTP模块,如果没有,安装并在 ...