00000 Index Invalidate              INDEX_INVALIDATE_I          (I)
00001 Index WriteBack Invalidate INDEX_WRITEBACK_INV_D (D)
00101 Index Load Tag INDEX_LOAD_TAG_D (D)
01001 Index Store Tag INDEX_STORE_TAG_D (D)
10001 Hit Invalidate HIT_INVALIDATE_D (D)
10101 Hit WriteBack Invalidate HIT_WRITEBACK_INV_D (D)
// R10000-specific cacheops
11001 Index Load Data INDEX_LOAD_DATA_D (D)
11101 Index Store Data INDEX_STORE_DATA_D (D)
00011 Index WriteBack Invalidate INDEX_WRITEBACK_INV_S(/D) (S)
00111 Index Load Tag INDEX_LOAD_TAG_S(/D) (S)
01011 Index Store Tag INDEX_STORE_TAG_S(/D) (S)
10011 Hit Invalidate HIT_INVALIDATE_S(/D) (S)
10111 Hit WriteBack Invalidate HIT_WRITEBACK_INV_S(/D) (S)
11011 Index Load Data INDEX_LOAD_DATA_S (S)
11111 Index Store Data INDEX_STORE_DATA_S (S)

Index WriteBack Invalidate (S) 指令将二级Cache 中的对应块置为Invalid 状态。如果二级Cache 对应块的数据是脏的,则将数据写到处理器系统接口部件。由于二级Cache与数据Cache 和指令Cache 保持包含关系,因此在二级Cache 无效写回前先将数据Cache和指令Cache 中的对应数据无效,如果数据Cache 中对应的数据是脏的,则先将其写入二级Cache,最后完成二级Cache 块的无效写回。PA[16:5]定义物理地址,PA[1:0]定义无效的组号。
无效写回操作过程如下:
1. 处理器从二级 Cache 的Tag 数组读取STag 和状态位.如果状态位State=00(Invalid),则不需要采取任何操作。如果对应Cache 块是有效的,STag 用来对对指令和数据Cache 进行操作。
2. 查询指令 Cache,如果指令Cache 的ITag=STag 并且指令Cache 中该块的状态IState=1(Valid),处理器将指令Cache 中的对应块无效,即将状态置位为0(Invalid)。
3. 查询数据 Cache,如果数据Cache 的DTag=STag 并且数据Cache 中该块的状态DState 不等于00(Invalid),若Dirty 位的值为1,则将数据写入二级Cache,无效对应Cache 块。若Dirty 位的值为0,则直接无效数据Cache 的对应块。
4. 将二级 Cache 块的状态置为00(Invalid)。如果二级Cache 的状态为11(Dirty),将对应块写回到处理器接口。

Hit WriteBack Invalidate (S) 指令二级Cache 中地址PA 匹配的对应块置为Invalid 状态。如果二级Cache 对应块的数据是脏的,则将数据写到处理器系统接口部件。由于二级Cache 与数据Cache 和指令Cache 保持包含关系,因此在二级Cache 无效写回前先将数据Cache 和指令Cache 中的对应数据无效,如果数据Cache 中对应的数据是脏的,则先将其写入二级Cache,最后完成二级Cache 块的无效写回。
无效写回操作过程如下:
1. 处理器用 PA 从二级Cache 的Tag 数组读取STag 和状态位。如果STag 的值与PA对应位的值相同,且状态位State 不等于00(Invalid),则发生了命中。如果没有发生命中,该Cache 指令操作完成。
2. 查询指令 Cache,如果指令Cache 的ITag=STag 并且指令Cache 中该块的状态IState=1(Valid),处理器将指令Cache 中的对应块无效,即将状态置位为0(Invalid)。
3. 查询数据 Cache,如果数据Cache 的DTag=STag 并且数据Cache 中该块的状态DState 不等于00(Invalid),若Dirty 位的值为1,则将数据写入二级Cache,无效对应Cache 块。若Dirty 位的值为0,则直接无效数据Cache 的对应块。
4. 将二级 Cache 块的状态置为00(Invalid)。如果二级Cache 的状态为11(Dirty),将对应块写回到处理器接口。

Hit Invalidate (S) 指令将二级Cache 中地址匹配的对应块置为Invalid 状态。由于二
级Cache 与数据Cache 和指令Cache 保持包含关系,因此在二级Cache 无效写回前先将数据Cache 和指令Cache 中的对应数据无效,最后完成二级Cache 块的无效。
无效操作过程如下:
1.处理器用PA 从二级Cache 的Tag 数组读取STag 和状态位。如果STag 的值与PA对应位的值相同,且状态位State 不等于00(Invalid),则发生了命中。如果没有
发生命中,该Cache 指令操作完成。
2.查询指令Cache,如果指令Cache 的PA 与STag 匹配,并且指令Cache 中该块的状态IState=1(Valid),处理器将指令Cache 中的对应块无效,即将状态置位为0(Invalid)。
3.查询数据Cache,如果数据Cache 的DTag=STag 并且数据Cache 中该块的状态DState 不等于00(Invalid),则无效数据Cache 的对应块。4.将二级Cache 块的状态置为00(Invalid)。

最新文章

  1. [内核笔记1]内核文件结构与缓存——inode和对应描述
  2. Azure Automation (4) 按照Azure虚拟机的机器名,设置开关机
  3. ui与ux的区别
  4. eclipse java 空心J文件的回复
  5. 1194: [HNOI2006]潘多拉的盒子 - BZOJ
  6. HDU4578 Transformation 线段树
  7. Python开发—Ajax系列
  8. HTTP协议5之代理--转
  9. 解释器模式 Interpreter 行为型 设计模式(十九)
  10. 深入了解Object.defineProperty
  11. WinForm中使用BackgroundWorker异步加载数据并使用进度条
  12. Git使用之(pathspec master did not match any file(s) known to git)
  13. 微信小程序记账本进度一
  14. jQuery选择器详解
  15. Python开课复习-10/15
  16. Why I Left the .NET Framework
  17. Ubuntu 16.04系统下apt-get和dpkg区别
  18. Codeforces 612B. Wet Shark and Bishops 模拟
  19. c++三大概念要分清--重载,隐藏(重定义),覆盖(重写)
  20. php字符串算术表达式计算

热门文章

  1. Centos6.5 pppoe-server
  2. Python——pyqt5——智能提示(lineEdit/conmbobox)
  3. iOS XIB使用中适配iPhoneX的安全区域、调用UiView动画
  4. Android技术文章收集
  5. Fedora 24系统基本命令
  6. BUG in Ubuntu--Could not get lock /var/lib/dpkg/lock
  7. linux服务器显卡崩了怎么处理
  8. SQL Server 中字段的精度问题
  9. 2018-2019 2 20175230《Java程序设计》第九周学习总结
  10. Apache的安装与配置