D4.8.1 WriteNoSnoop

A WriteNoSnoop transaction is used in a region of memory that is not Shareable with other masters. A WriteNoSnoop transaction can result from:
• A program action, such as a store operation.
• An update of main memory for a cache line that is in a Non-shareable region of memory.

WriteNoSnoop 用于一段不和其他master share的内存。用于:

1. store操作

2. Non-shareable的内存的cache update到主存中。

writenosnoop是针对不共享的内存的操作,所以不需要给其他的master发送snoop的消息。

可以是直接写内存,或者是将cache中的内容同步到内存。

D4.8.2 WriteUnique

A WriteUnique transaction is used in a region of memory that is Shareable with other masters. A single write occurs that is required to propagate to main memory or a downstream cache.

和其他master共享的内存,writeunique是一个写操作,会将内容写入主存或downstream cache。

这个不是更新cache到主存的命令,是cpu直接发出的写的命令,这个时候如果有cache的话,cache的数据必须是处于clean的状态

In the case of master holding a line in a Clean state while performing a WriteUnique transaction, the cache line must be updated to the new value when the WriteUnique transaction response is received. 如果有clean cache的话,更新之后cache的内容也必须得到更新
   

D4.8.3 WriteLineUnique

A WriteLineUnique transaction is used in a region of memory that is Shareable with other masters. A single write occurs, that is required to propagate to main memory or a downstream cache. 写道主存或downstream cache
A WriteLineUnique transaction must be a full cache line store and all bytes within the cache line must be updated 一次必须是写整个cache的量
In the case of master holding a line in a Clean state while performing a WriteLineUnique transaction, the cache line must be updated to the new value when the WriteLineUnique transaction response is received. 如果有clean cache的话,cache中的内容也必须得到更新。

D4.8.4 WriteBack

A WriteBack transaction is a write that can be used in Shareable and Non-shareable regions of memory. A WriteBack transaction is a write of a dirty cache line to update main memory or a downstream cache. writeback属于cache维护命令,将dirty cache写道主存或downstream cache。
The difference between a WriteBack and a WriteClean transaction is whether the cache line remains allocated in the cache for a Shareable region of memory. After a WriteBack transaction, the cache line is no longer allocated. After a WriteClean transaction, the cache line remains allocated.

writeback和writeclean的区别:

writeback 写之后cache将变为invalid,writeclean写之后 cache依然 有效。

D4.8.5 WriteClean

A WriteClean transaction is a write operation that can be used in Shareable and Non-shareable regions of memory. A WriteClean transaction is a write of a dirty cache line to update main memory or a downstream cache. 同writeback,也属于cache 维护类操作,将dirty cache更新到主存或downstream cache。

D4.8.6 WriteEvict

A WriteEvict transaction can be used when evicting a clean cache line. This transaction is used to write the line to a lower level of the cache hierarchy, such as an L3 or system level cache. A WriteEvict transaction is not required to update main memory.  
A WriteEvict transaction must only be used in the following circumstances:
• When the cache line is held in a UniqueClean state.
• When the cache line has not been speculatively fetched from a different shareability domain.

必须时unique clean,为啥?

能看出来这条操作是将upstream的cleancache写道downstream,为下次使用做准备。

Note
It is important that a cache line that could have been speculatively fetched, so that it was located outside of its shareability domain, could become out-of-date as the cache line is not required to be updated by subsequent stores to the cache line. If a cache line could be a stale copy, then it must not be written back into its shareability domain by the use of a WriteEvict transaction.
 

D4.8.7 Restrictions on WriteUnique and WriteLineUnique usage

Typically, WriteUnique and WriteLineUnique transactions are used by a non-cached component that is writing to a Shareable region of memory. However, WriteUnique and WriteLineUnique transactions can be used by a cached component that meets the requirements.

WriteUnique and WriteLineUnique的典型使用场景是一个没有cache的master对shareable内存的写操作。

对有cache的master也可以,只是有下面一些限制:

A cached component must be able to complete any incoming snoop transaction while a WriteUnique or WriteLineUnique transaction is in progress. A cached component must: 在WriteUnique or WriteLineUnique执行时,component必须能完成其他master的snoop的操作,需要按如下规则操作:
Complete any outstanding WriteBack, WriteClean, WriteEvict, or Evict transactions before issuing a WriteUnique or WriteLineUnique transaction 在发出WriteUnique or WriteLineUnique传输之前,必须完成所有的WriteBack, WriteClean, WriteEvict, or Evict 传输。why?
No additional WriteBack, WriteClean, WriteEvict, or Evict transactions can be issued until all outstanding WriteUnique or WriteLineUnique transactions are completed. 在WriteUnique or WriteLineUnique完成之前不能发出额外的WriteBack, WriteClean, WriteEvict, or Evict 这些传输
Complete any incoming snoop transactions without the use of WriteBack, WriteClean, WriteEvict, or Evict transactions while a WriteUnique or WriteLineUnique transaction is in progress. 当 WriteUnique or WriteLineUnique正在执行时,直接完成所有的snoop,而不需要执行WriteBack, WriteClean, WriteEvict, or Evict transactions
WriteNoSnoop transactions can also be blocked behind WriteUnique and WriteLineUnique transactions. Therefore, the design of the master must ensure that an incoming snoop transaction can complete when a WriteNoSnoop transaction is blocked by an outstanding WriteUnique or WriteLineUnique transaction.  
This is necessary, because earlier transactions that also might require earlier snoop transactions to complete, can prevent WriteUnique and WriteLineUnique transactions from progressing.  
These requirements restrict the use of WriteUnique and WriteLineUnique transactions to components that can either:
• Complete all snoop transactions without requiring any data to be supplied, for example write-through caches that do not keep dirty cache lines for Shareable data.
• Complete snoop transactions by using the snoop data channel, CDDATA.
 
   

总结一下:

WriteNoSnoop 不与其他master共享内存,直接写内存或cache维护
WriteUnique 没有cache的master写(部分cache行)
WriteLineUnique 没有cache的master写(整个cache行)
WriteBack cache维护指令,将cache写到downstream或主存中,写之后此cache变为invalid
WriteClean cache维护指令,将cache写到downstream或主存中,写之后cache依然存在,变为clean
WriteEvict 将upstream的clean cache写道downstream,并且invalid upstream的cache

D4.8 Write transactions相关推荐

  1. D4.1 About an initiating master

    The internal action requires: • For a load, the master must get the data from either: - A valid copy ...

  2. System.Transactions介绍

    在.Net Framework 2.0中,新增了一个名称空间:System.Transactions.从其名字就可以看出来,里面包含了Transaction相关的类.System.Transactio ...

  3. 智源唐杰主编的IEEE Transactions on Big Data期刊被SCI收录 | AI日报

    智源唐杰主编的IEEE Transactions on Big Data期刊被SCI收录 今日,IEEE Transactions on Big Data (简称:IEEE TBD)被SCI收录.IE ...

  4. System.Transactions深入了解

    System.Transactions框架包含了一个称为LTM(Lightweight Transaction Manager)的TM,它隐式的将连接登记于事务中,从内部来看,是由ITransacti ...

  5. Oracle sessions,processes 和 transactions 参数 关系 说明

    一.官网说明 1.1 processes 11gR2 的文档: Property Description Parameter type Integer Default value 100 Modifi ...

  6. “System.Transactions.Diagnostics.DiagnosticTrace”的类型初始值设定项引发异常。

    "System.Transactions.Diagnostics.DiagnosticTrace"的类型初始值设定项引发异常. 参考文章: (1)"System.Tran ...

  7. System.Transactions:实现你自己的Resource Manager

    By Sahil Malik[http://www.developer.com/net/net/article.php/11087_3565196_1] .net 2.0所带来最大的变化之一也许就是S ...

  8. 谈谈分布式事务之三: System.Transactions事务详解[下篇]

    在前面一篇给出的Transaction的定义中,信息的读者应该看到了一个叫做DepedentClone的方法.该方法对用于创建基于现有Transaction对 象的"依赖事务(Depende ...

  9. System.Transactions事务超时设置

    System.Transactions 有2个超时属性(timeout 与 maxTimeout),可以通过配置文件来进行设置. 1. timeout System.Transactions 默认的t ...

  10. 主板19针接口_【新品上市】D4双通道还能组RAID!华南B365D4主板6/7/8/9代全兼容!...

    友情提醒,又一款新品主板来了! 这款新品能用Win7能用Win10 双协议M.2还能组RAID 内外兼修 高性价比之选 九代i5超稳搭档,释放Intel优异性能 前!方!高!能! 畅享9代处理器 HN ...

最新文章

  1. 布赖恩·凯利看好比特币现金:更多的用例可以转化为价值
  2. 关于移除节点的IE和Firefox的兼容问题
  3. 浅谈webpack打包原理
  4. 解决VS命令提示符 “Setting environment for using Microsoft Visual Studio. 此时不应有“系列错误
  5. Flex与ASP.NET通过Remoting方式交互说明文档
  6. 8X53 VS 6763
  7. Postgres 数据库字符集更改 ERROR: new encoding (UTF8) is incompatible
  8. 和大家分享2015年我逐步形成的六个管理认识
  9. python学习--关注容易被忽略的知识点---(一)python基础
  10. 一个房间里有4个小孩,2个戴黑帽,2个戴白帽
  11. 发动机压缩比怎么计算公式_精准的发动机压缩比计算方法与流程
  12. linux批量修改文件编码格式(包含子目录)
  13. 计算机基础知识面试题集合(包含计网OSI、TCP/IP、HTTP、TCP、UDP、三次握手、四次挥手、OS进程线程、死锁,常见数据结构及排序,Linux常用命令、数据库基础等。)
  14. Tensorflow1.7+cuda9.0+cudnn7.0中的各种意(da)外(keng)
  15. React实现(Web端)网易云音乐项目(五),错过了真的可惜呀
  16. android开发自定义键盘,Android 总结:自定义键盘实现原理和三种实例详解
  17. java B2B2C源码电子商务平台-配置中心svn示例和refresh
  18. 面试——Java字节面经(已获Offer)
  19. 联想WIN10进入BIOS进行设置的两种方法
  20. Python三国华容道程序-深度优先

热门文章

  1. Android视频列表自动播放功能
  2. Linux以百万兆字节显示内存大小
  3. bzoj5145 [Ynoi2018]未来日记 (多校第4场1013 Yuno and Claris)
  4. android兼容低版本方法,Android 应用程序向低版本兼容的问题
  5. 深入理解Attention及变种(三)
  6. 打字教程新手篇-指法练习的重要性和注意事项
  7. Python获取金山词霸每日一句
  8. MHZ是计算机的什么单位,电脑mhz是什么意思
  9. 点亮LED灯及IAR调试
  10. python乒乓球比赛规则介绍_乒乓球赛程 乒乓球比赛规则简介