多核处理器cache一致性

多核处理器cache一致性

ID:13271819

大小:99.50 KB

页数:11页

时间:2018-07-21

多核处理器cache一致性_第1页
多核处理器cache一致性_第2页
多核处理器cache一致性_第3页
多核处理器cache一致性_第4页
多核处理器cache一致性_第5页
资源描述:

《多核处理器cache一致性》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一.多核处理器cashe一致性2二.基于无锁机制的事务存储31.事务的基本概念32.实现流程-design43.缓存状态54.事务行为55.回退机制6三.TCC模型61.编程模型62.TCC系统7四.ASTM71.背景72.STM设计82.1.急迫申请与懒惰申请82.2.元数据结构82.3.间接引用对象83.基本ASTM设计9五.参考文献10一.多核处理器cache一致性由于后续章节要用到多处理器cashe一致性的协议,这里先简单阐述一下!维持多处理器cashe一致性的协议叫做cashe一致性协议。而实现cashe一致性协议的关键就是要跟踪一个共享数据块的任何状态。

2、目前有两种协议,分别使用不同的技术来跟踪共享状态。一种是基于目录的,一个物理内存中数据块的共享状态保存在一个位置,叫做目录。另外一种就是snooping协议。我们先来看看snooping协议的具体实现。Snooping的做法是,每个cashe不仅保存着一份物理内存的拷贝,而且保存着数据块的共享状态的拷贝。通过广播介质这些cashe可以被访问,所有的cashe控制器通过介质检测来决定自己是否拥有一份来自总线请求的数据块的拷贝。目前多处理器普遍采用写无效协议来维持一致性的需求。它的核心思想就是一个处理器在写数据之前必须确保它对该数据块的互斥访问。如果一个读操作紧随一个写

3、操作之后,由于写操作是互斥的,它在写之前必须对无效化所有该数据块在其它cashe上的拷贝,当读发生时,它获得一个读缺失而被迫去获取新的拷贝。如果两个写操作试图对同一数据同时操作,那么只有一个获胜,获胜方使得其它处理器种的cashe拷贝无效化,其它操作要完成它的写操作必须先获得数据的新拷贝,也就是更新的数据的拷贝,因此写无效协议实际上实现了写的序列化。实现写无效协议的关键是使用总线(bus),或者其它的广播介质来执行无效操作。具体来说,处理器先申请对总线的访问,然后广播需要被无效化的地址,由于所有的处理器连续不断地在总线上探测,监控总线上的地址,它们检测在总线上的地址

4、是否在它们自己的cashe中,如果存在,那么cashe中相应的数据就被无效化。这里需要注意的是对共享数据的写操作只有在获得总线访问后才能完成。所以,当两个写操作同时试图写一个共享数据块时,它们将同时发送无效化的广播,但是它们在获取对总线的访问是必然被序列化。只有一个先获得总线的访问权。当cashemiss发生时,如何获取数据的新的拷贝的问题对于write-trough和wait-back两种机制实现的方法是不同的。如果是直写,那么很容易找到数据的最新值,因为所有的写数据操作总是立即反应到内存中,也就是cashe保存跟内存是数据是同步的。所以可以直接从内存中获取最新值

5、。如果是回写机制,寻找数据最新值的问题相对较难解决。因为最新值不在内存中,而是在某个处理器的cashe中。分布式的基于目录的一致性维护一个中央目录表,这个目录记录每个被缓存的块的状态。这些状态包括,哪些cashe中保存着数据块的拷贝以及这些拷贝是否是“脏数据”;通常,为了防止目录成为瓶颈,目录被分布到和内存在一起,降低了总线上的带宽。同snooping协议一样,基于目录的协议必须实现两个操作:处理读缺失和处理写共享。为了实现这些操作,目录协议必须跟踪每个cashe块的状态。这些状态包括:l共享的l非缓存的l更新的为了跟踪每个共享块的状态,我们必须跟踪哪些处理器拥有此

6、数据块的拷贝,因为这些拷贝需要在写时被无效化。最简单的办法是使用一个位向量来记录每个内存块的情况。当一个块没共享时,位向量的每一位代表相应的处理器是否有该块的拷贝。值得注意的是,目录协议中状态机之间的转化与snooping协议一致,不同的是触发转移的条件不同。对于目录协议,无效化互斥数据块的拷贝以及获得最新数据块的值的操作与snooping截然不同。因为,目录协议中涉及请求节点跟目录以及目录与更远节点之间的通信,而snooping只是广播给所有的节点,所以只需要一步!二.基于无锁机制的事务存储1.事务的基本概念MauriceHerlihy等人与上世纪90年代提出事务

7、存储的架构方式,设计了Lock-free数据结构来支持多处理器系统中的同步问题。它的核心思想是把数据库中事务的概念引入计算机体系结构中。多处理器同步操作多通过锁Lock来实现,但是加锁会带来很多问题:Priorityinversion,Convoying,Deadlock。Transactionalmemory就是为了不用锁进行原子atomic操作。事务就是一系列的操作,这些操作完成一项任务.只要这些操作里有一个操作没有成功,事务就操作失败,发生回滚事件.即撤消前面的操作,这样可以保证数据的一致性.而且可以把操作暂时放在缓存里,等所有操作都成功有提交数据库,这样

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。