多核处理器的MESI协议的细节对我来说非常重要,但我无法在任何地方找到它们。即使http://www.intel.com/content/dam/doc/manual/64-ia-32-architectures-software-developer-vol-3a-part-1-manual.pdf不包含足够的细节。例如:假设一个私有的L1和共享的二级缓存。如果一条线的状态在L1中是排他的,那它是否也是L2的独占(或者是无效的,因为只有一个缓存可能是一行独占的状态)?显然,如果另一个内核写入此行,则L1中以前专用行的状态变为无效,但是如何更改L2缓存行的状态?如果L1中的修改过的行被另一个内核读取,将会是该行共享的新状态,并通过L2高速缓存写回到主内存,还是保持在L2中修改?等等。有关多核处理器的MESI协议的详细信息
2
A
回答
0
1
您找不到这些答案的原因是因为传统协议没有为分层高速缓存体系结构定义,因此MESI协议本身并未定义当您拥有L1和L2高速缓存时会发生什么情况。它取决于其他三个系统属性。
如果L2被设计为不包含L1(即保证L2和L1永远不会有共同的缓存行),那么L1中的任何行都将是无效状态(基本上不存在) L2。
如果L2包含L1,即L1中的每一行也必须在L2中具有条目,则L2中的条目将包含描述符,该描述符指出哪一个L1高速缓存具有处于E状态的行。
无论是否值被写到L2或内存上给E或W阶段读取决于你的系统是否支持高速缓存到缓存传输与否。在过去,当每个芯片都是单核时,核心到核心的通信与读写内存一样昂贵,系统会将数据写入内存并使其他处理器读取它(这使得它们不支持缓存到缓存传输)。在多内核中,通过内存进行通话相比与片上其他内核而言是非常昂贵的,因此几乎所有的多核芯片都支持缓存到缓存传输。因此,从E或W阶段的读取不通过写入存储器来提供服务。
我希望这会有所帮助。
相关问题
- 1. MESI协议 - 如何处理INVALID?
- 2. 有关UITableView的多个详细信息
- 3. 有关DWR的更多详细信息?
- 4. Vue.js e2e w Nightwatch.js如何获取有关WebElements(WebDriver协议)的详细信息?
- 5. objectiveC协议问题详细信息 - >主通信
- 6. 有关poi点的详细信息MKMapview
- 7. 有关moneybookrs merchant_fields的详细信息?
- 8. 有关StreamWriter的详细信息
- 9. 有关继承IDisposable的详细信息?
- 10. 有关使用AVAudioEngine的详细信息
- 11. 有关函数RegQueryInfoKey的详细信息?
- 12. 有关IPX/SPX的详细信息
- 13. 有关Win32_OperatingSystem SerialNumber的详细信息
- 14. 有关/ proc/$ pid/attr的详细信息?
- 15. Gmail和Android同步协议的详细信息
- 16. AWS安全令牌服务协议的详细信息
- 17. Crystal Reports详细信息详细信息
- 18. Android主详细信息详细信息
- 19. 是否适用于具有2个逻辑内核的单处理器的mesi缓存一致性协议?
- 20. 从URL获取端口协议详细信息
- 21. MESI协议和LRU策略
- 22. 在swift中处理表视图控制器的详细信息
- 23. 具体的安卓处理器详细信息
- 24. 有关详细信息$ state.go()功能
- 25. ActiveReports多列详细信息
- 26. 有关xcode中的异常的更多详细信息
- 27. 的JavaScript - 获取详细信息有关浏览器的
- 28. Restkit核心数据详细信息
- 29. 有关Microsoft多字符串格式的详细信息
- 30. 如何获得有关装配的更多详细信息?
我有类似的问题。我似乎无法找到详细信息。 – atoMerz
与可接受的答案可以找到类似的问题[Here](http://stackoverflow.com/a/8006202/403279) –