OpenRISC—OR1200子模块QMEM
admin 于 2021年02月23日 发表在 软核OR1200

1. QMEM的作用

    QMEM是Quick Memory的简称,顾名思义,就是快速存储器,实际上这是一个片上RAM,可以实现在一个时钟内读取其中存储内容(指令、数据),用户可以把一些常用的代码存放在其中,比如:Context切换过程、异常处理句柄、堆栈等。

    CPU取指、加载/存储数据过程,如下图所示:

 QMEM执行流程.png

(1)取指令过程

  • CPU给出指令的有效地址(EA:Effective Address),IMMU将有效地址翻译为物理地址(PA:Physical Address),然后送到QMEM中。

  • QMEM判断该地址是否位于QMEM的地址范围内,如果是,就直接取出指令送到CPU;如果不是位于QMEM的地址范围内,则将该地址发送给ICache。

  • ICache查看该地址是否被缓存,如果是就直接读出指令送往QMEM,QMEM直接转给CPU;如果ICache没有命中,则通过指令WB_BIU模块访问外部存储器获取指令。

(2)加载/存储数据过程

  • CPU给出读写数据的有效地址,DMMU将有效地址翻译为物理地址,然后送到QMEM中。

  • QMEM判断该地址是否位于QMEM的地址范围内,如果是,就直接读写指定地址;如果不是位于QMEM地址范围内,则将该地址发送给DCache。

  • DCache查看该地址是否被缓存,如果是就直接将该数据发送给QMEM,后者直接转发给CPU或者直接写数据;如果DCache没有命中,则会通过SB、数据WB_BIU模块访问外部存储器读写数据。

(3) QMEM的作用示意图

QMEM的作用示意图.png

2. QMEM模块的连接

2.1 Wishbone总线的分布

     上一篇《OpenRISC—OR1200总线标准Wishbone》介绍了Wishbone总线。事实上,OR1200内部大量使用到Wishbone总线,比如:CPU模块与IMMU、IMMJU与QMEM、QMEM与ICache、ICache与WB_BIU之间均使用到了Wishbone总线规范。

    从OR1200_TOP角度看各子模块,wishbone总线分布如下图所示(图中加粗的紫色线条表示Wishbone总线规范,且均为点对点互连):

CPU模块总线连接.png

2.2 QMEM和其它模块的连接

关于QMEM具体总线的连接方式,此处不再一一列举,请查看附件 or1200_top.png 如下:

参考来源:

[1] 《步步惊芯—软核处理器内部设计分析》      雷思磊                    电子工业出版社

注意:本站所有文章除特别说明外,均为原创,转载请务必以超链接方式并注明作者出处。 标签:OpenRISC,OR1200软核,qmem模块