reference:
※https://baike.baidu.com/item/MSHR/5968221?fr=aladdin
※https://blog.csdn.net/dark5669/article/details/53895775
※Li C, Song S L, Dai H, et al. Locality-Driven Dynamic GPU Cache Bypassing[J]. 2015.
※超标量处理器设计,姚永斌,p314,要支持非阻塞cache,在处理器中就需要将那些已经产生D-Cache缺失的load/store指令信息保存起来,这个部件称为MSHR
※GPU体系结构-the miss status holding register(MSHR)原理简介

  MSHR是一个计算机体系结构用语,Miss-status Handling Registers 的缩写,用来记录每一项未完成的事务,记录的信息包括失效地址、关键字信息以及重命名寄存器信息。
  一旦存储控制器返回失效访存所需要的数据,这些信息就用于重新执行。MSHR还用于合并对同一行的多个请求,防止将同一个请求发送多次。

Miss Status Handling Registers
缺失状态保持寄存器
作用:
keep track of outstanding misses
就是保存 misses 状态的轨迹信息的一个表

  Each MSHR contains enough state to handle one or more accesses of any type to single memory line。
每个MSHR包含足够的状态来处理对单个内存行的任何类型的一次或多次访问。
  A memory request that misses in the cache is added to the MSHR table and a fill request is generated if there is no pending request for that cache line.
一个在缓存中未命中的内存请求被添加到MSHR表中,如果该缓存行没有挂起的请求,则生成一个填充请求。
  When a fill response to the fill request is received at the cache, the cache line is inserted into the cache and the corresponding MSHR entry is marked as filled.
当缓存接收到对填充请求的填充响应时,缓存线被插入到缓存中,相应的MSHR条目被标记为填充。
  Responses for filled MSHR entries are generated at one request per cycle.
Once all the requests waiting at the filled MSHR entry have been responded to and serviced, the MSHR entry is freed.
每个周期在一个请求时生成对已填满的MSHR条目的响应。
一旦所有等待填充的MSHR条目的请求都得到响应和服务,MSHR条目就会被释放。
MSHR的作用:
  On a cache hit, a request will be served by sending data to the register file immediately. On a cache miss, the miss handling logic will first check the miss status holding register (MSHR) to see if the same request is currently pending from prior ones. If so, this request will be merged into the same entry and no new data request needs to be issued. Otherwise, a new MSHR entry and cache line will be reserved for this data request. A cache status handler may fail on resource unavailability events such as when there are no free MSHR entries, all cache blocks in that set have been reserved but still haven’t been filled, the miss queue is full, etc.
在缓存命中时,请求将通过立即向寄存器文件发送数据来处理。在缓存未命中时,未命中处理逻辑将首先检查未命中状态保持寄存器(MSHR),以查看与先前请求当前是否挂起相同的请求。如果是,这个请求将被合并到同一个条目中,并且不需要发出新的数据请求。否则,将为这个数据请求保留一个新的MSHR条目和缓存线。缓存状态处理程序可能会在资源不可用时失败,比如没有空闲的MSHR条目,该集合中的所有缓存块都被保留了但仍然没有被填满,miss队列已满,等等。

  在上面的微架构模型中,当系统有访存请求的时候,在①处的access type选择语句,有两条路径:bypass是绕过cache,这儿不考虑。我们关注的是L1-D-Path的路径,通过匹配tag,如果cache hit的话,那么就可以直接送往register files。如果cache miss,会先检查MSHR,看是否已经有相同的数据请求已经发出过(只是数据还没有被传回到cache中),如果确实发出过相同的数据请求的话,就将当前请求合并到之前的相同的数据请中。如果MSHR中没有(M)相同请求的话,就传递数据请求到下一级cache。

  当从下一级cache中拿到数据,放到return queue中,数据接下来的流向也有两条路径:如果数据请求是经过cache->MSHR->下一级cache这条路径的,那么需要把数据放到先前预留的cache line中,并且MSHR中对应的entry设置为filled(Fill Path 1);如果数据请求是通过bypass path这条路径的,那么直接把return queue中的数据传给register files(Fill Path 2)。

MSHR(Miss Status Handling Register)相关推荐

  1. Miss Status Handling Registers (MSHR) 计算机体系结构

    体系结构知识. MSHR可以被认为是一种"缺失缓冲buffer",存储之前要访问的但是Cache Miss 的请求. 具体操作如下: 当发生Cache Miss时: 首先搜索MSH ...

  2. 《浅谈Cache Memory》 学习-第四章

    Cache的层次结构 我第一次接触存储器瓶颈这个话题是在上世纪九十年代,距今已接近二十年.至今这个问题非但没有缓和的趋势,却愈演愈烈,进一步发展为Memory Wall.在这些问题没有得到解决之前,片 ...

  3. 并行多核体系结构基础 Yan Solihin 第5章 存储层次结构概述 摘录

    在多核体系结构中,存储层次由硬件管理的临时存储(如Cache),以及少量采用软件管理的临时存储(如便笺式存储器)组成. 性能调优过程最重要的一个因素就是理解当代计算机系统的存储层次.对于:1)了解如何 ...

  4. Processor Microarchitecture(Mark D.Hill ):Cache

    一.Introduction(背景) 二.cache structure organization(缓存结构) 三.non-blocking cache(非阻塞缓存) 四.multiported ca ...

  5. Locality-Driven Dynamic GPU Cache Bypassing

    文章目录 abstract introduction 问题背景 内存请求处理 GPU缓存效率分析 过滤器的设计 decoupled 设计 Decoupled L1D:operation SM Duel ...

  6. c9, Performance Monitor Control Register

    http://liuluheng.github.io/wiki/public_html/Embedded-System/Cortex-A8/Performance%20Monitor%20Contro ...

  7. GDB Watchpoints

    目录 Watchpoints Watchpoints and Threads x86 Watchpoints https://github.com/Rtoax/test/blob/master/c/g ...

  8. ARM调试原理【调试接口框图】【SWD时序】【SWD主机】

    调试接口框图 ARM-M0<ARM Cortex-M0.pdf>手册上提到的调试框图如下: <debug_interface_v6_0_architecture_specificat ...

  9. RISC-V架构学习

    RISC-V架构 RISC-V简介 RISC-V起源 RISC-V大事件 RISC-V 指令特点 设计哲学-简单就是美 无病一身轻--架构的篇幅 能屈能伸--模块化的指令集 浓缩的都是精华--指令的数 ...

最新文章

  1. 洛谷3933 Chtholly Nota Seniorious 二分答案+贪心
  2. 4、简单工厂模式,工厂方法模式,
  3. 实验一HSRP与STP结合
  4. Windows下安装并设置Redis
  5. JS引擎线程的执行过程的三个阶段
  6. 针对.NET开发者(neo-charm) 1.0 的NEO区块链架构参考模型
  7. P5659-[CSP-S2019]树上的数【贪心】
  8. mysql update nowait_mysql innodb之select for update nowait
  9. 【tool】kali连接rdp远程桌面
  10. AKKA Router路由
  11. 在Eclipse中使用SDK中的@hide函数
  12. Dell Alienware 13 R3 win10 安装 ubuntu 18.04 总结
  13. mongovue mysql_MongoDB 客户端 MongoVue
  14. python爬虫:英为财情爬取美国十年期国债收益率
  15. 微信 for Mac 3.0.0.1来袭 可以在电脑上刷朋友圈,附下载地址
  16. 沪漂5年,工作这点事儿
  17. 使用FlexPaper加载swf出现无法加载的问题
  18. 关于Idea合并不同分支代码你怎么看
  19. 如何将GPU中list类型的数据转移到CPU
  20. 挖掘肖特基二极管的作用及其接法

热门文章

  1. xlsx怎么设置行高列宽_Excel里面如何调整行高和列宽
  2. 抖音快手B站等平台视频检测机制和规避方法
  3. windows下ntp时间校对
  4. 【问题篇】Springboot解决报错“java.sql.SQLException: Unable to load authentication plugin ‘caching_sha2_passw”
  5. 漫画绘制技法大放送(上)
  6. 剑指offer刷题笔记-篇2
  7. 【Java】多线程(以java webcam实现视频功能为例)
  8. ORACLE的HINT详解
  9. 视频播放器倍速、清晰度切换、m3u8下载
  10. 岁月不居春秋代序 计算机学院,应用生物学院2019届 “岁月不居,春秋代序”毕业典礼隆重举行...