多处理器Cache一致性分析
zynq cache问题的解决方法 linux
zynq cache问题的解决方法linuxZynq是Xilinx公司推出的一款全可编程SoC,它集成了FPGA和处理器核心,广泛应用于嵌入式系统开发。
在使用Zynq平台时,开发者可能会遇到Cache相关问题,影响系统的性能。
本文将针对Zynq Cache问题的解决方法进行探讨,主要基于Linux操作系统。
一、Zynq Cache简介Zynq SoC包含ARM Cortex-A9处理器核心,这些核心具有独立的L1 Cache(指令和数据),以及共享的L2 Cache。
Cache的主要作用是临时存储处理器频繁访问的数据和指令,以提高访问速度。
二、Zynq Cache问题及解决方法1.Cache一致性问题问题描述:当多个处理器核心或者处理器与FPGA之间访问同一内存地址时,可能会出现Cache一致性问题。
解决方法:(1)关闭处理器核心的L2 Cache:在Linux内核启动参数中添加“l2cache_disable=1”,以关闭L2 Cache。
(2)使用Cache一致性协议:如MOESI协议,确保多个Cache之间的一致性。
2.Cache性能问题问题描述:Cache命中率和带宽较低,导致系统性能下降。
解决方法:(1)优化程序代码:避免频繁访问大块内存,增加数据局部性。
(2)调整Cache策略:根据应用场景,调整Cache的替换策略和写入策略。
(3)增加Cache容量:在硬件设计阶段,可以考虑增加Cache容量以提高性能。
3.Cache错误问题问题描述:Cache出现错误,可能导致数据丢失或系统崩溃。
解决方法:(1)使用ECC(Error Correction Code)技术:对Cache进行错误检测和纠正。
(2)定期刷新Cache:定期将Cache中的数据写入内存,防止数据丢失。
(3)监控Cache错误计数器:通过查看Cache错误计数器,定位错误原因。
三、总结Zynq Cache问题在嵌入式系统开发中较为常见,了解其解决方法有助于提高系统性能和稳定性。
基于共享总线的多处理器cache一致性的硬件实现
oh ri lme t t n fc c ec h rn e a d t erp r r n e P te mp e n ai so a h o ee c n h i e o ma c .F GA x e i n ss o t a i b s s o p u i c n e s r o f e p rme t h w tt s u n o n t a n u e h h
的定义如下 :
a )M态。被寻址 的 cce 在 cc e中, cce块与 内 ah 块 ah 但 ah 存 中该 块相 比已被修改 。 b )E态。被寻址 的 cc e 在 cce中, ah 块 ah 并且 该 cce块 ah
L u — io,Z IJ n xa HANG S e g b n h n — i g,S N Xu b n HE — a g
( v t nMi oபைடு நூலகம் t nc C ne,N r w sr oyehi lU i ri ,X ’ n7 0 7 A i i c e co i et ao r er s r ot eenP l c n a n esy ia 1 02,C ia h t t c v t hn )
t a he c nsse c n mulir c s os’ s se c re ty a fii nl he c c o itn y i tp o e sr y t m o r cl nd efc e ty、 K e wo ds: ss o p; mutpr c s o s o itn y; c py b c y r bu n o li o e s r ;c nsse c o —a k
基 于 共 享总 线 的 多处 理 器 c c e一 致 性 的硬 件 实现 米 ah
cache 的mesi协议
cache 的mesi协议摘要:1.什么是Cache?2.Cache 的一致性问题和解决方案3.MESI 协议的提出4.MESI 协议的工作原理5.MESI 协议的优点和局限性6.总结正文:1.什么是Cache?Cache 是一种存储器,用于存储最近访问的数据。
在计算机系统中,Cache 位于处理器和主存储器之间,其作用是缓存主存储器中的数据,以便处理器能够更快地访问数据。
2.Cache 的一致性问题和解决方案当多个处理器同时访问Cache 时,可能会出现一致性问题。
为了解决这个问题,人们提出了多种一致性协议,其中最常用的是MESI 协议。
3.MESI 协议的提出MESI 协议是由加州大学伯克利分校的计算机科学家们提出的。
它是一种基于监听的总线协议,旨在解决Cache 一致性问题。
4.MESI 协议的工作原理MESI 协议根据数据的修改情况将Cache 分为四种状态:M(Modified)、E(Exclusive)、S(Shared)和I(Invalid)。
当处理器修改Cache 中的数据时,它将数据的状态设置为M。
当其他处理器请求访问该数据时,它将检查数据的状态,如果数据的状态为M,则处理器会拒绝访问;如果数据的状态为E,则处理器会允许访问;如果数据的状态为S,则处理器会共享数据;如果数据的状态为I,则处理器会重新加载数据。
5.MESI 协议的优点和局限性MESI 协议的优点是简单、高效,能够解决Cache 一致性问题。
然而,MESI 协议也有一些局限性,例如,它要求处理器能够区分不同状态的数据,这可能会增加处理器的复杂性。
6.总结MESI 协议是一种基于监听的总线协议,用于解决Cache 一致性问题。
它根据数据的修改情况将Cache 分为四种状态,并规定了不同状态下的处理器行为。
cache一致性问题和解决方法
cache一致性问题和解决方法作者辽宁工程技术大学摘要高速缓冲存储器一致性问题是指高速缓冲存储器中的数据必须与内存中的数据保持同步(一致) 。
多核处理器将一个以上的计算内核集成在一个处理器中,通过多个核心的并行计算技术,增强处理器计算性能。
单片多处理器结构(CMP—ChipMultiprocessor)又是该领域中备受关注的问题。
本文简要论述了CMP的多级Cache存储结构,多级结构引起了Cache一致性问题,一致性协议的选取对CMP系统的性能有重要影响。
使用何种Cache一致性模型以及它的设计方案是本文重点研究的内容。
关键词:CMP;Cache一致性;存储器;协议;替换策略Cache consistency problem and solving methodAbstract Cache consistency refers to the data in the cache memory must be synchronized with the data in memory (the same).Multi·core processor was the integration of multiple computing cores on a single processoL which improved processor computing ability through the parallelcomputing Technology of multi-coreprocessors.Single chip multi-processorarchitecture(CMP-ChipMulfiprocessor)was hot spots in this area.The CMPmulti-level Cache storage structure was briefly discussed in this paper,which led to Cache coherence problem,the selection of consistency protocol had a major impact on the performance of the CMP system.The selection of model of theCache Coherence and methods of its design will have a significant impact ofoverall design and development of CMPKey words:CMP Cache; consistency; memory; protocol; replacement strategy1引言在过去的二十年中,计算机处理器设计工艺和处理器体系结构发展迅速,计算机也能够完成所赋予它的大部分任务。
cache工作原理
cache工作原理概述:Cache是计算机系统中的一种高速缓存技术,用于存储最常用的数据,以提高计算机系统的性能。
本文将详细介绍Cache的工作原理,包括Cache的层次结构、Cache的读取和写入操作、Cache的替换策略以及Cache的一致性问题。
一、Cache的层次结构:计算机系统中的Cache通常分为多级,如L1 Cache、L2 Cache、L3 Cache等。
这些Cache按照层次结构排列,速度逐级递减,容量逐级递增。
L1 Cache位于CPU内部,速度最快,容量较小;L2 Cache位于CPU和主内存之间,速度次于L1 Cache,容量较大;L3 Cache位于CPU和主内存之间,速度最慢,容量最大。
Cache的层次结构能够充分利用局部性原理,提高数据的访问效率。
二、Cache的读取和写入操作:1. 读取操作:当CPU需要读取数据时,首先会从L1 Cache开始查找,如果在L1 Cache中找到了需要的数据,则称为命中(Cache Hit),CPU可以直接使用该数据。
如果在L1 Cache中没有找到需要的数据,则会依次向下一级Cache查找,直到找到或者到达主内存。
如果在所有的Cache中都没有找到需要的数据,则称为未命中(Cache Miss),CPU需要从主内存中读取数据,并将数据存入Cache中,以供下一次访问使用。
2. 写入操作:当CPU需要写入数据时,同样会首先在L1 Cache中查找是否存在需要写入的数据。
如果存在,则直接在L1 Cache中进行写入操作。
如果不存在,则需要根据Cache的写策略进行处理。
常见的写策略有写回(Write Back)和写直达(WriteThrough)。
写回策略是将数据先写入Cache中,然后在某个时刻再将数据写入主内存;写直达策略是将数据同时写入Cache和主内存。
写回策略可以减少对主内存的访问次数,提高性能,但可能会引发一致性问题。
三、Cache的替换策略:当Cache已满时,需要替换一些数据以腾出空间存放新的数据。
Cache一致性协议之MESI
Cache⼀致性协议之MESI转⾃:处理器上有⼀套完整的协议,来保证Cache⼀致性。
⽐较经典的Cache⼀致性协议当属MESI协议,奔腾处理器有使⽤它,很多其他的处理器都是使⽤它的变种。
单核Cache中每个Cache line有2个标志:dirty和valid标志,它们很好的描述了Cache和Memory(内存)之间的数据关系(数据是否有效,数据是否被修改),⽽在多核处理器中,多个核会共享⼀些数据,MESI协议就包含了描述共享的状态。
在MESI协议中,每个Cache line有4个状态,可⽤2个bit表⽰,它们分别是:状态描述M(Modified)这⾏数据有效,数据被修改了,和内存中的数据不⼀致,数据只存在于本Cache中。
E(Exclusive)这⾏数据有效,数据和内存中的数据⼀致,数据只存在于本Cache中。
S(Shared)这⾏数据有效,数据和内存中的数据⼀致,数据存在于很多Cache中。
I(Invalid)这⾏数据⽆效M(Modified)和E(Exclusive)状态的Cache line,数据是独有的,不同点在于M状态的数据是dirty的(和内存的不⼀致),E状态的数据是clean的(和内存的⼀致)。
(Shared)状态的Cache line,数据和其他Core的Cache共享。
只有clean的数据才能被多个Cache共享。
I(Invalid)表⽰这个Cache line⽆效。
E状态⽰例如下:E状态只有Core 0访问变量x,它的Cache line状态为E(Exclusive)。
S状态⽰例如下:S状态3个Core都访问变量x,它们对应的Cache line为S(Shared)状态。
M状态和I状态⽰例如下:M状态和I状态Core 0修改了x的值之后,这个Cache line变成了M(Modified)状态,其他Core对应的Cache line变成了I(Invalid)状态。
在MESI协议中,每个Cache的Cache控制器不仅知道⾃⼰的读写操作,⽽且也监听(snoop)其它Cache的读写操作。
多核处理器cache一致性
一.多核处理器cashe一致性 (2)二.基于无锁机制的事务存储 (3)1.事务的基本概念 (3)2.实现流程-design (4)3.缓存状态 (5)4.事务行为 (5)5. 回退机制 (6)三.TCC模型 (6)1.编程模型 (6)2.TCC系统 (7)四.ASTM (7)1.背景 (7)2.STM设计 (8)2.1. 急迫申请与懒惰申请 (8)2.2.元数据结构 (8)2.3. 间接引用对象 (8)3.基本ASTM设计 (9)五.参考文献 (10)一.多核处理器cache一致性由于后续章节要用到多处理器cashe一致性的协议,这里先简单阐述一下!维持多处理器cashe一致性的协议叫做cashe一致性协议。
而实现cashe一致性协议的关键就是要跟踪一个共享数据块的任何状态。
目前有两种协议,分别使用不同的技术来跟踪共享状态。
一种是基于目录的,一个物理内存中数据块的共享状态保存在一个位置,叫做目录。
另外一种就是snooping协议。
我们先来看看snooping协议的具体实现。
Snooping的做法是,每个cashe不仅保存着一份物理内存的拷贝,而且保存着数据块的共享状态的拷贝。
通过广播介质这些cashe可以被访问,所有的cashe控制器通过介质检测来决定自己是否拥有一份来自总线请求的数据块的拷贝。
目前多处理器普遍采用写无效协议来维持一致性的需求。
它的核心思想就是一个处理器在写数据之前必须确保它对该数据块的互斥访问。
如果一个读操作紧随一个写操作之后,由于写操作是互斥的,它在写之前必须对无效化所有该数据块在其它cashe上的拷贝,当读发生时,它获得一个读缺失而被迫去获取新的拷贝。
如果两个写操作试图对同一数据同时操作,那么只有一个获胜,获胜方使得其它处理器种的cashe拷贝无效化,其它操作要完成它的写操作必须先获得数据的新拷贝,也就是更新的数据的拷贝,因此写无效协议实际上实现了写的序列化。
实现写无效协议的关键是使用总线(bus),或者其它的广播介质来执行无效操作。
多核Cache一致性
x’
core1
x’
core2
……
x’
core3
I表示无效
4.写无效的问题 主要开销在两个方面: (1)作废各Cache副本的开销; (2)由作废引起缺失造成的开销,即处理 机需要访问已经作废的数据时将引起Cache的 缺失。
后果: 如果一个Core经常对某个块连续写,且Core 间对共享块的竞争较小,这时写无效策略维护 一致性的开销是很小的。如发生严重竞争,即 Core之间对某个地址的共享数据竞争,将产生 较多的作废,引起更多的作废缺失。结果是共 享数据在各Cache间倒来倒去,产生颠簸现象, 当缓存块比较大时,这种颠簸现象更为严重。
5. Write-Once一致性协议状态转移表
current command state P-Read P-Write 有效 有效 next state status action
P-Write
保留
必是局部进行, 有效 Read-hit 不影响有效状态 第一次写命中,用 保留 Write-hit 写通过法。同时修 改本地和主存副本 并广播Write-inv 使所有副本失效 第二次写命中,用 重写 Write-hit 写回法。但不修改 主存的副本
5. 写更新的问题 由于更新时,所有的副本均需要更新,开 销很大。
1.1 Cache Coherence问题 1.2 监听总线协议
1.2.1 写一次协议
1.3 基于目录的Cache一致性协议 1.4 三种Cache一致性策略
1.2 监听总线协议(Snoopy protocol)
通过总线监听机制实现Cache和共享存储 器之间的一致性。 适用性分析: 适用于具有广播能力的总线结构多Core系 统,允许每个Core监听其它Core的存储器访 问情况。 只适用于小规模的多Core系统。
多核处理器及其Cache一致性机制
由于 指令 级 并 行需 要 的硬 件 资源 最 少 , 处理 器 微体 系结 构 中 , 早 在 最 出现 的并 行技 术就 是指 令级 并行 , 而实 现指 令级 并行 通 常采用 的是 V I ( LW 超 长指令 字 ) 技术 和S pr saa( 标量 ) u e— clr超 技术 。 V uw : 处理 器在 处理 一 个 长指令 字 中赋 予编 译程 序 控制 所有 功能 单元
多 核处 理 器 结 构不 仅 有 性 能潜 力 大 、 成度 高 、 集 并行 度 高 、 结构 简 单
指令 , 以获 得 并 行性 。 2线程 级 并行 .
和设计验证方便等诸多优势 , 而且它还能继承传统单核处理器研究 中的某些 成果, 例如 同时 多线 程 、 低 功 耗等 。 减压 但多 核 处理 器 毕竟 是 一种 新 的结 构给多 核处理器 的未来提出了挑战。
1前 言 .
自从计算机诞生 以来 , 推动处理器高速发展的动力主要来源于两个方
面 : 电子 技术 的 巨大 进 步 和处 理 器体 系 结 构 的演 化和 发 展 , 微 而这 两 个 动力 则促成 了多 核处理 器 技 术 的 出现和 发展 。 多 内 核是 在 一 个 处理 器 中集 成两 个 或 多 个 完整 计 算 引擎 , 内核 。 即 而 多核处 理器 则是 将 多个 功能 完全 的 核心 集成 在 同一个 芯 片上 , 个芯 片作 为 整
的能力 , 使得被编译的程序能够精确地调度在何处执行每个操作、 每个寄存 器存储器读写和每个转移操作 。 S p r saa : u e — clr 由于各个指令之间可能用到不同的数据单元, 所以通过 次发射多个指令来获取指令级的并行。 此技术 , 主要是依靠运行时的复杂 硬件 逻 辑 , 打乱 指令 的执 行 顺序 , 发射 阶段 同时 发射 多个 使 用不 同资 源 的 在
有关Cache的总结
有关Cache的总结[摘要]随着社会的不断进步和发展,人们对计算机速度和规模的需求不断提高。
在多体并行存储系统中,由于I/O设备向主存请求的级别高于CPU访存,为了避免CPU “空等”现象及CPU和主存的速度差异,在计算机系统的CPU与主存之间引入了cache。
本文介绍了Cache的作用,Cache一致性问题的原因及解决这个问题的两种协议。
[关键字]Cache、Cache一致性、监听协议、基于目录的协议一、C ache简介和工作原理由于I/O设备的向主存请求的级别高于CPU访存,这就出现了CPU等待I/O设备访存的现象,致使CPU空等一段时间,从而降低了CPU的工作效率。
为了避免CPU与I/O设备争抢访存,在CPU与主存之间加一级缓存,这样可将CPU要取的信息提前送至缓存,一旦主存在与I/O设备交换时,CPU可直接从内存中读取所需信息,不必空等而影响效率。
从另一角度来看,主存速度的提高始终跟不上CPU的发展。
据统计,CPU的速度平均每年改进60%,而组成主存的动态RAM速度平均每年只改进7%,结果是CPU和动态的RAM之间的速度间隙平均每年增大50%。
因此由高速缓存cache来解决CPU“空等”现象和主存与CPU速度不匹配的问题。
Cache的工作原理是基于程序访问的局部性,该局部性分为时间局限性和空间局限性。
对大量典型程序运行情况的分析结果表明,在一定时间内,由程序产生的地址只是对集中在存储器逻辑地址空间的很小范围内的访问。
指令地址的分布是连续的,再加上循环程序段和子程序段要重复执行多次。
因此,对这些地址的访问就自然地具有时间上集中分布的倾向。
数据分布的这种集中倾向不如指令明显,但对数组的存储和访问以及工作单元的选择都可以使存储器地址相对集中。
这种对局部范围的存储器地址频繁访问,而对此范围以外的地址则访问甚少的现象,就称为程序访问的局部性。
程序访问的局部性原理分为时间局部性和空间局部性。
根据程序的局部性原理,可以在主存和CPU通用寄存器之间设置一个高速的容量相对较小的存储器,把正在执行的指令地址附近的一部分指令或数据从主存调入这个存储器,供CPU在一段时间内使用。
缓存一致性解决方案
缓存一致性解决方案缓存一致性是保持应用程序的数据一致性的重要前提。
缓存一致性是缓存技术的一个关键,可以显著提高系统的性能,提高系统的效率。
缓存一致性问题往往在大多数分布式系统中发生,因为分布式系统中的数据可能被多个程序、进程或服务并发访问和更新。
如果系统中的多个节点未能正确地同步数据,则不能保证系统中的数据有效性,从而导致系统出现不一致的问题。
针对缓存一致性问题,解决的方法有很多,如引入消息中间件服务来处理,使用数据同步机制(例如基于主从模式的rsync)进行数据同步,使用分布式缓存解决方案,如Redis,Memcached,Hazelcast 等,以及基于强一致性和弱一致性算法等。
首先,基于强一致性和弱一致性算法可以用来解决缓存一致性问题。
强一致性算法采用使用协调者组织参与者执行操作的方式,与参与的其他进程或服务协议协商,以达到一致性,但它的处理速度比较慢;而弱一致性算法则虽然不需要协议协商,但只要数据被更新,就可能导致数据不一致。
其次,多个节点可以使用数据同步机制来保证缓存一致性。
数据同步机制中,一般采用主从模式,当主节点数据更新时,会将数据同步到从节点,从而保证数据在多个节点间一致。
最后,一种解决缓存一致性的方法是使用分布式缓存解决方案,比如Redis,Memcached,Hazelcast等。
这些分布式缓存技术采用了节点群集技术,可以将多个节点组织成一个群集,当系统中一个节点的数据发生变化时,会将变化同步到其他节点,从而保证多个节点之间的数据一致性。
总之,缓存一致性是非常重要的一个问题,针对这个问题,可以采用多种方法来解决,如采用基于强一致性和弱一致性算法,使用数据同步机制、采用分布式缓存解决方案等。
这些方法的应用可以实现在系统中多个节点的数据同步,从而达到保证系统数据的一致性,提高系统的性能和效率。
多核处理器cache一致性技术综述
多核处理器cache一致性技术综述摘要:本文介绍了实现多核处理器cache一致性的基本实现技术,并分析了其存在的问题。
根据存在的问题,介绍了几种最新的解决方案。
关键词:cache 一致性监听协议目录协议性能能耗1 基本实现技术:实现cache一致性的关键在于跟踪所有共享数据块的状态。
目前广泛采用的有以下2种协议,它们分别使用不同的技术跟踪共享数据:1.监听协议( Snooping)处理器在私有的缓存中保存共享数据的复本。
同时处理器对总线进行监听,如果总线上的请求与自己相关,则进行处理,否则忽略总线请求信号。
2.目录式(Directory based)使用目录来存放各节点cache中共享数据的信息,把cache一致性请求只发给存放有相应数据块的节点,从而支持cache的一致性。
下面分别就监听协议和目录协议做简单的介绍:1.1 监听协议监听协议通过总线监听机制实现cache和共享内存之间的数据一致性。
因为其可以通过内存的总线来查询cache的状态。
所以监听协议是目前多核处理器主要采用的一致性技术。
监听协议有两种。
一种称为写无效协议(write invalidate protocol) ,它在处理器写数据块之前通过总线广播使其它该数据的共享复本(主要存储在其它处理器的私有缓存中)变为无效,以保证该处理器能独占访问数据块,实现一致性。
另一种称为写更新(write update) ,它在处理器写入数据块时更新该数据块所有的副本。
因为在基于总线的多核处理器中总线和内存带宽是最紧张的资源,而写无效协议不会给总线和内存带来太大的压力,所以目前处理器实现主要都是应用写无效协议。
读请求:如果处理器在私有缓存中找到数据块,则读取数据块。
如果没有找到数据块,它向总线广播读缺失请求。
其它处理器监听到读缺失请求,则检查对应地址数据块状态:无效状态下,向总线发读缺失,总线向内存请求数据块;共享状态下,直接把数据发送给请求处理器;独占状态下,远端处理器节点把数据回写,状态改为共享,并将数据块发送给请求处理器。
Cache一致性问题分析
二、并行系统中的高速缓存一致性问题和解决 方法
2-1、并行系统的特点;
2-2、Cache一致性问题的发现 ;
2-3、分析Cache的一致性问题 ;
2-4、产生高速缓存( Cache )不一致的三个原因 ;
2-5、解决高速缓特点
与单机系统相比,并行系统具有自身的显著特点: (1)具有多个 CPU,同一时刻可以有多个进程同时 进行; (2)各个处理机具有共享内存或私有局部内存,或 两者兼备; (3)各个处理机具有本地高速缓存; (4)各个处理机之间通过共享总线或交换网络进行 通讯,交换数据; 所以除了主存与高速缓存之间可能产生不一致的情况 之外,高速缓存与高速缓存之间也可能存在不一致的情况。
分段 LRU算法基于次数的替换算法 LFU是选择缓存中被 访问次数最少的块为被替换块的替换算法。这种算法中,要为 每个缓存块维护一个计数器,记录该块的被访问次数。在替换 时,选择被访问次数最少的块进行替换。这种算法有两个缺点: 第一,维护和利用访问次数比访问时间困难的多;第二,当某 些短期内被访问多次,却在以后不再被访问的块会长期占据缓 存,降低缓存的利用率。为了解决这些问题,LFU算法在实际 应用中要进行适当的改进。 以上介绍的替换算法在替换时都只是利用缓存块被访问的 状态信息(如访问时间、访、问次数等),没有考虑这些访问 可能来自不同的程序,而且这些不同的应用程序可能具有不同 的数据访问特征,因此这些算法存在如下几个问题: 1、某些应用程序的访问局部性比较差,如果缓存这些访问 应用访问的块,会将其它应用的具有较高缓存价值的块替换掉, 降低缓存的有效性。例如,一些大型文件系统的顺序访问可能 会将缓存中所有的块都替换出缓存,而代以将来可能不会
1-4、高速缓存的组成结构
高速缓冲存储器是存在于主存与CPU之间的一级存 储器, 由静态存储芯片(SRAM)组成,容量比较小但速 度比主存高得多, 接近于CPU的速度。 主要由三大部分组成: Cache存储体:存放由主存调入的指令与数据块。 地址转换部件:建立目录表以实现主存地址到缓存 地址的转换。 替换部件:在缓存已满时按一定策略进行数据块替 换,并修改地址转换部件。
缓存一致性问题(CacheCoherency)
缓存⼀致性问题(CacheCoherency)引⾔ 现在越来越多的系统都会⽤到缓存,只要使⽤缓存就可能涉及到缓存数据与数据库数据之间双写双存储,只要双写就会遇到数据⼀致性的问题,除⾮只有⼀个数据库服务器,数据⼀致性问题也就不存在了。
缓存的作⽤ 1. 临时存储,⽤于提⾼数据查询速度。
⽐如CPU的L1⾼速缓存和L2⾼速缓存,缓存主要是为CPU和内存提供⼀个⾼速的数据缓存区域。
CPU读取数据的百顺序是:先在缓存中寻找,找到后就直接进⾏读取,如果未能找到,才从主内存中进⾏读取。
2. 降低系统反应时间,提⾼并发能⼒。
数据⼀致性的问题的原因 主要是由于两次操作时间不同步导致的数据⼀致性问题。
⽐如Mysql主从复制到时候,master数据在同步slave给数据到过程中会有数据不⼀致的时刻。
如何保证缓存与数据库双写⼀致性 ⼀. 缓存与数据库读写模式(Cache aside pattern) 分两种情况,读数据和写数据(更新) 1. 读数据:读数据时候先读取缓存,如果缓存没有(miss hit)就读取数据库,然后在从数据库中取出数据并添加到缓存中,最后在返回数据给客户端。
2. 更新数据: 先更新数据库数据在删除缓存(也有⼈认为先删除缓存在更新数据库)。
那么为什么在更新数据库同时在删除缓存呢? 这⾥主要考虑⼏个点: 1)缓存懒加载。
有些缓存出来的数据是应⽤在⽐较复杂的场景中,这些缓存存在的时候,不是简单的从数据库取出数据,⽐如更新了数据表中某个字段的值,有⼀条缓存数据值是这个字段的值与另外多个表中字段的值进⾏计算后的结果,当每次该字段被更新的时候都要与其他表多个字段去运算然后得到这个缓存数据,所以这样场景下更新缓存的代价很⾼。
所以要不要实时更新缓存视具体情况来定,⽐如这个字段⼀分钟内修改60次,那么跟该字段相关缓存也跟着要计算60次,但是该缓存⼀分钟内只被访问1次,当缓存真正被访问的时候在进⾏计算,这⼀分钟内缓存只计算了⼀次,开销就⼤幅减少。
高速缓冲存储器一致性
感谢观看
I(Invalid):这行数据无效。
在该协议的作用下,虽然各cache控制器随时都在监听系统总线,但能监听到的只有读未命中、写未命中以 及共享行写命中三种情况。读监听命中的有效行都要进入S态并发出监听命中指示,但M态行要抢先写回主存;写 监听命中的有效行都要进入I态,但收到RWITM时的M态行要抢先写回主存。总之监控逻辑并不复杂,增添的系统 总线传输开销也不大,但MESI协议却有力地保证了主存块脏拷贝在多cache中的一致性,并能及时写回,保证 cache主存存取的正确性 。
在MESI协议中,每个Cache line有4个状态,可用2个bit表示,它们分别是:
M(Modified):这行数据有效,数据被修改了,和内存中的数据不一致,数据只存在于本Cache中。
E(Exclusive):这行数据有效,数据和内存中的数据一致,数据只存在于本Cache中。
S(Shared):这行数据有效,数据和内存中的数据一致,数据存在于很多Cache中。
一个完整的一致性模型包括高速缓存一致性及存储同一性两个方面,且这两个是互补的:高速缓存一致性定 义了对同一个存储进行的读写操作行为,而存储同一性模型定义了访问所有存储的读写行为。在共享存储空间中, 多个进程对存储的不同单元做并发的读写操作,每个进程都会看到一个这些操作被完成的序。
计算机组成原理cache论文缓存一致性的解决方案大学论文
缓存一致性的解决方案摘要:随着计算机技术的飞速发展,CPU时计算机组成的核心部分,提高CPU的性能一直是一个很重要的课题,所以CPU从单核提高到多核,但是总会有一些技术上的难题需要解决,这其中,Cache的一致性问题的解决就推动计算机多核的发展,解决一致性人们提出了一些协议,这其中比较好的解决方案是MESI协议,MESI协议通过监视机制,实时监视总系的事务,当修改某一缓存时,通过通知其它同样持有同一内容的缓存来保持缓存的一致性。
这一协议是目前比较好的解决缓存一致性问题的解决方案,本篇文章就这一经典协议做了分析与总结。
关键词:缓存一致性窥探协议引言现代的CPU上,大部分都需要通过缓存来进行内存访问,由于物理架构的原因,CPU没有管脚直接连到内存,所以CPU的读/写(以及取指令)单元正常情况下不能进行直接内存访问。
相反,CPU和一级缓存通讯,而一级缓存才能和内存通讯。
而现在又大多有了二级缓存,甚至三级缓存。
缓存是分段(line)的,即下文要用的“缓存段”(cache line),当我们提到”缓存段”的时候,就是指一段和缓存大小对齐的内存,而不关心里面的内容是否真正被缓存进去。
当CPU看到一条读内存指令时,它会把内存地址传递给一级数据缓存,一级数据缓存会检查它是否有这个内存地址对应的缓存段,没有的话,它会把对应的缓存段加载进来。
如果进行的是读操作,这就很简单,所有级别的缓存都遵循以下规律:在任意时刻,任意级别缓存中的缓存段的内容,等同于它关联内存中的内容。
如果进行写操作,情况就会变得复杂些,一般分为两种基本的写模式:直写(write-through)和回写(write-back)。
直写简单一点:透过缓存,直接把数据写到下一级内存中,如果对应的段被缓存了,就更新缓存中的内容,同样遵循前面的定律:缓存中的段永远和它关联内存的内容匹配。
回写相对复杂一些,回写模式下不会立即把数据传递给下一级,而是仅仅修改本级缓存中的内容,并将其标记为“脏段”,“脏段”会在触发回写,就是将缓存段中的内容传递给下一级,然后脏段又变干净了,即当一个脏段被丢弃了,总是要进行一次回写,在回写模式中,去掉了“任意时刻”这个修饰词,而是以相对弱化的条件代替它:缓存段干净时,缓存段的内容和内存一致;缓存段是脏段时,缓存段中的内容最终要回写到内存中,也就是说可以允许关联内存不和缓存内容同步,但最终要同步。
cache工作原理
cache工作原理一、概述Cache是计算机系统中常用的一种高速缓存技术,用于提高数据访问速度和系统性能。
本文将详细介绍Cache的工作原理,包括Cache的结构、Cache的命中与未命中、Cache的替换策略以及Cache的一致性问题等。
二、Cache的结构Cache通常由多级结构组成,包括L1 Cache、L2 Cache、L3 Cache等。
每一级Cache都有自己的容量、速度和访问方式。
Cache的结构类似于一个存储器,由多个Cache行组成,每个Cache行包含一个标记(Tag)、一个有效位(Valid Bit)和一个数据块(Data Block)。
三、Cache的命中与未命中当CPU需要访问一个数据时,首先会查询Cache,如果数据在Cache中找到,即发生了Cache命中,CPU可以直接从Cache中读取数据,避免了访问主存的开销,提高了访问速度。
如果数据不在Cache中,即发生了Cache未命中,CPU需要从主存中读取数据,并将数据存入Cache中,以便下次访问时可以直接从Cache 中读取。
四、Cache的替换策略当Cache已满且发生了Cache未命中时,需要选择一个Cache行进行替换。
常用的替换策略有随机替换、先进先出替换(FIFO)、最近最少使用替换(LRU)等。
随机替换策略是简单且公平的,但可能会导致Cache的利用率不高;FIFO策略保证了Cache中的数据按照访问顺序排列,但无法适应程序的访问模式变化;LRU策略根据数据的使用频率进行替换,保证了较高的Cache命中率。
五、Cache的一致性问题由于Cache的存在,可能导致多个Cache之间的数据不一致。
当一个Cache修改了某个数据,其他Cache中对应的数据可能仍然是旧值。
为了解决Cache的一致性问题,通常采用缓存一致性协议,如MESI协议。
MESI协议定义了四种状态:修改(Modified)、独占(Exclusive)、共享(Shared)和无效(Invalid),通过协议规定了Cache之间的数据共享和更新机制,保证了Cache的一致性。
系统结构实验二报告 多Cache一致性 —— 目录协议
实验二多Cache一致性——目录协议一、实验目的1、加深对多Cache一致性的理解。
2、进一步掌握解决多Cache一致性的目录协议的基本思想。
3、掌握在各种情况下,目录协议是如何工作的。
能给出要进行什么样的操作以及状态的变化情况。
二、实验内容及步骤2.1、模拟器使用方法简介该模拟器模拟4个CPU(A、B、C、D)访存的工作过程。
每个CPU中都有一个Cache,该Cache包含有4个块,其块地址为0-3。
分布式存储器中有32个块,其块地址为0-31。
每个块状态用色块表示,其中灰色为“无效”状态,淡青色为“共享”状态,橘红色为“独占”。
主存中块的状态由其右边的目录项的颜色来表示,未缓冲状态由黄色来表示,其他两种状态同Cache块。
对于每一个CPU都可以指定所要进行的访问是读还是写(从列表中选),并在输入框中输入所要访问的主存块号,然后用鼠标单击在其右边的标有“↓”的按钮,模拟器就将开始演示该访问的工作过程。
2.2、目录协议基本思想(自己补充)2.3、实验步骤对于以下访问序列,写出目录协议所进行的操作。
实验二多Cache一致性——监听协议一、实验目的1、加深对多Cache一致性的理解。
2、进一步掌握解决多Cache一致性的监听协议的基本思想。
3、掌握在各种情况下,监听协议是如何工作的。
能给出要进行什么样的操作以及状态的变化情况。
二、实验内容及步骤2.1、模拟器简介该模拟器模拟4个CPU(A、B、C、D)访存的工作过程。
每个CPU中都有一个Cache,该Cache包含有4个块,其块地址为0-3。
集中共享存储器中有32个块,其块地址为0-31。
每个块状态用色块表示,其中灰色为“无效”状态,淡青色为“共享”状态,橘红色为“独占”。
对于每一个CPU都可以指定所要进行的访问是读还是写(从列表中选),并在输入框中输入所要访问的主存块号,然后用鼠标单击在其右边的标有“↓”的按钮,模拟器就将开始演示该访问的工作过程。
Cache的一致性问题
Cache的⼀致性问题Cache中的内容是主存中的副本。
访问数据是先访问Cache,Cache中没有再看主存中有没有。
当对cache中的内容更新时,就会存在cache和主存如何保持数据⼀致的问题。
此外,下列问题也会导致cache⼀致性问题。
多个设备都允许访问主存时,cache中的内容被cpu修改,⽽主存中的没有,同时该内容需要写⼊磁盘,此时从内存写⼊到磁盘的数据和cache(希望的数据)不⼀样。
当多个CPU都有各⾃的cache⽽共享主存时,若有⼀个cpu修改了⾃⾝cache中的内容,则对应的主存块和其他cpu中对应的cache⾏的内容都变为⽆效(共享数据,数据更改了,未及时更改的那些数据都没⽤了)Cache⼀致性问题的关键是处理好写操作。
全写法对写命中,写未命中的解释:cache的写命中和写未命中,就是磁盘或者内存上的存储区域之前有没有写过数据。
如果有,这次再写到相同的区域叫写命中;如果写到其他区域,叫写未命中。
写操作时,若写命中,则同时写cache和主存;若写不命中,则有以下两种⽅式。
写分配法:先更新主存中的数据,再将更新后的主存块装⼊到cache中。
可重复利⽤程序的局部性原理。
⾮写分配法:仅更新主存中数据不写⼊cache,可减少读⼊主存块的时间,但是没有很好地利⽤程序地局部性原理。
为减少写主存地开⼼,通常再cache和主存之间加⼀个写缓冲,写⼊cache时也写⼊缓冲中,然后由存储控制器将写缓冲中的数据写⼊主存。
(写缓冲的读取速度很快,远远⾼于对主存的读取速度)回写法CPU执⾏写操作时,若写命中,则信息只写⼊cache不写⼊主存;若写不命中,则在cache中分配⼀⾏,将主存块调⼊该cache⾏中并更新相应单元的内容。
该⽅式下,写不命中时通常采⽤写分配法进⾏写操作。
我个⼈理解,写命中就是这个数据在cahce和内存⾥,但是内容不对需要更新。
写未命中就是,这个数据不在内存,也不在cache,需要申请⼀块新的空间存放它。
5.3.5_Cache的一致性问题
5.3.5 Cache的一致性问题 Cache中的内容是主存的副本情况1:当Cache中的内容进行更新时,而没有改变主存中的相应内容时,Cache 和主存之间产生了不一致(inconsistent) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 8 9 14 3Cache存储器 主存储器 写数据 Cache的一致性问题指什么? 5.3.5 Cache的一致性问题 Cache的一致性问题指什么? 情况2:当多个设备都允许访问主存时 例:I/O设备可通过DMA方式直接读写主存时,如果Cache中的内容被修改,则I/O设备读出的对应主存单元的内容无效;若I/O设备修改了主存单元的内容,则对应Cache行中的内容无效。
情况3:当多个CPU都有各自私有的Cache并且共享主存时 例:某个CPU修改了自身Cache中的内容,则对应的主存单元和其他CPU中对应的Cache行的内容都要变为无效。
5.3.5 Cache 的一致性问题 P3私有Cache 中的变量u 被更新后,各处理器读到的是不同的u 值处理器私有Cache 引入的问题• 同一变量拷贝可能出现在多个处理器私有Cache 中• 某处理器写操作可能对其它处理器是不可见的 程序不能容忍这样的错误, 但这种现象却很常见!I/O devicesMemoryP 1$ $$P2 P3 u :5u :512u :5 3u = 75u = ?4u = ?5.3.5 Cache 的一致性问题 需要研究Cache 写机制l● Write T hrough (写直达、写通过、直写) l● Write B ack (写回、一次性写、回写) 如何保持Cache 一致性呢? 当CPU 写存储地址命中Cache 时 如何保持。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
多处理器Cache一致性分析[摘要]随着社会不断向前发展,人类对计算速度和计算规模的需求不断提高。
而单处理器计算机系统由于处理器运算性能受限于芯片速度极限和加工工艺极限,不可能无限提高。
于是超大规模并行处理系统应运而生。
但这也引入了一些在单处理器系统中没有出现的问题。
在系统中出现的多机存储信息的一致性问题便是当今国际上研究的热门问题之一。
为了缓和CPU与存储器之间的速度差距,在计算机系统的CPU与主存之间引入了cache。
但在多处理器系统中,由于多个处理器可能对同一数据块进行读写操作,当某个处理器对共享的数据块进行写操作时,其它处理器的cache中该数据块的副本将成为过时的数据。
如果不及时地通知相应的处理器,将导致错误的运行结果。
本文介绍了Cache的作用,Cache一致性问题的原因及解决这个问题的两种协议。
[关键字]Cache、Cache一致性、监听协议、基于目录的协议一、Cache简介和工作原理虽然CPU主频的提升会带动系统性能的改善,但系统性能的提高不仅仅取决于CPU,还与系统架构、指令结构、信息在各个部件之间的传送速度及存储部件的存取速度等因素有关,特别是与CPU/内存之间的存取速度有关。
若CPU工作速度较高,但内存存取速度相对较低,则造成CPU等待,降低处理速度,浪费CPU的能力。
如500MHz的PⅢ,一次指令执行时间为2ns,与其相配的内存(SDRAM)存取时间为10ns,比前者慢5倍,CPU和PC的性能怎么发挥出来?目前最好的方法是在慢速的DRAM和快速CPU之间插入一速度较快、容量较小的SRAM,起到缓冲作用;使CPU既可以以较快速度存取SRAM中的数据,又不使系统成本上升过高,这就是Cache法。
Cache的工作原理是基于程序访问的局部性。
对大量典型程序运行情况的分析结果表明,在一个较短的时间间隔内,由程序产生的地址往往集中在存储器逻辑地址空间的很小范围内。
指令地址的分布本来就是连续的,再加上循环程序段和子程序段要重复执行多次。
因此,对这些地址的访问就自然地具有时间上集中分布的倾向。
数据分布的这种集中倾向不如指令明显,但对数组的存储和访问以及工作单元的选择都可以使存储器地址相对集中。
这种对局部范围的存储器地址频繁访问,而对此范围以外的地址则访问甚少的现象,就称为程序访问的局部性。
根据程序的局部性原理,可以在主存和CPU通用寄存器之间设置一个高速的容量相对较小的存储器,把正在执行的指令地址附近的一部分指令或数据从主存调入这个存储器,供CPU 在一段时间内使用。
这对提高程序的运行速度有很大的作用。
这个介于主存和CPU之间的高速小容量存储器称作高速缓冲存储器(Cache)。
系统正是依据此原理,不断地将与当前指令集相关联的一个不太大的后继指令集从内存读到Cache,然后再与CPU高速传送,从而达到速度匹配。
CPU对存储器进行数据请求时,通常先访问Cache。
由于局部性原理不能保证所请求的数据百分之百地在Cache中,这里便存在一个命中率。
即CPU在任一时刻从Cache中可靠获取数据的几率。
命中率越高,正确获取数据的可靠性就越大。
在CPU与主存之间增加了Cache之后,便存在数据在CPU和Cache及主存之间如何存取的问题。
读写各有2种方式。
写通过(Write Through):任一从CPU发出的写信号送到Cache的同时,也写入主存,以保证主存的数据能同步地更新。
它的优点是操作简单,但由于主存的慢速,降低了系统的写速度并占用了总线的时间。
写回式(Write-back):为了克服贯穿式中每次数据写入时都要访问主存,从而导致系统写速度降低并占用总线时间的弊病,尽量减少对主存的访问次数,又有了写回式。
它是这样工作的:数据一般只写到Cache,这样有可能出现Cache中的数据得到更新而主存中的数据不变(数据陈旧)的情况。
但此时可在Cache中设一标志地址及数据陈旧的信息,只有当Cache中的数据被再次更改时,才将原更新的数据写入主存相应的单元中,然后再接受再次更新的数据。
这样保证了Cache和主存中的数据不致产生冲突。
二、多个Cache不一致的原因在多处理机系统中,当一个处理机访问存储器时,首先检查要访问的数据在CACHE中是否已经存在.如果存在,则不需要访问共享存储器.若一个处理机向存储器写数据时,采用“写回”策略,存储器中仍保留过时的内容,这时另外一个处理机从存储器相应单元读到的将是不正确的内容.即使是采用“写透”策略,仍会出现问题.这就是多处理机系统最有名的CACHE一致性问题.例如,图1所示,在处理机Pl没有写操作之前,处理机Pl和P2都将同一存储单元的内容x读入各自的CACHE中了(图1(a)),这时不管是采用写透(图1(b)),还是写回(图1(c)),当处理机Pl完成写操作之后,处理机P2再次使用自己CACHE中的x时一定会导致错误.图1,多处理机CACHE一致性要解决多处理机的Cache一致性问题,首先要研究一致性问题的由来。
出现不一致的原因有3个:共享可写数据引起的不一致、进程迁移引起的不一致和I/O传输引起的不一致.对于进程迁移引起的CACHE不一致,可以通过禁止进程迁移的办法来解决,也可以在进程挂起时,靠硬件的方法将CACHE中该进程改写过的信息块强制写回主存相应位置来解决.对于1/O操作引起的不一致,一种直接的方法是将I/O处理机与各个专用CACHE直接相连,形成了主处理机与I/O处理机共享CACHE的结构,于是只要解决了各CACHE之间,以及CACHE与主存储器之间的数据一致性,就可保证I/O操作的一致性.三、解决多处理机CACHE不一致性问题的策略解决多处理机CACHE不一致性问题主要有两种办法:监听CACHE协议和基于CACHE 目录的协议.3.1监听CACHE协议监听CACHE协议,即各处理机的每次写操作都是公开发布,为所有的处理机知道,那么各处理机就根据监听的信息对自身的数据采取保持一致的措施,采用监听CACHE协议,当某个CACHE中的内容被改写后,可以有两个办法避免出现远程CACHE内容不一致,第一种办法是使所有远程CACHE中相同数据块“作废”,使全部CACHE中该数据块只有一个有效,简称写作废策略。
另一种办法是当改写时,凡存有该数据块的远程CACHE也进行同样的改写,使它们的内容同时“更新”,结果在全部CACHE中可能有多个有效的数据块,简称写更新策略,如果采用写更新方式,每当某个CACHE中的内容被改写后,就必须将改写的内容送到所有的远程CACHE中.在总线方式组织的系统中,将会大大地增加总线的负担.所以一般的应用系统很少使用写更新策略.在采用写作废策略的系统中,为了表示CACHE中每个数据块当前的状态,必须安排一些标志位说明该数据是有效或无效.有时可能需要两个标志位,除说明本地的数据块状态外,还需要表明与系统中对应数据块之间的某种关系.3.2基于CACHE目录的协议基于CACHE目录的协议,就是当某个处理机的写操作无法为其他的处理机知道时,通过修改目录间接地向其他处理机报告,以便其他处理机采取措施.目录协议的思想是非常简单的,即将所有使用某一数据块的处理机登记在册,每次变动前都要查目录,变动后则修改目录.根据目录存储方法的不同可以将基于CACHE目录的协议分为集中式目录协议和分布式目录协议.3.2.1集中式目录协议集中式目录协议是指在主存储器中只用一个目录来标志数据块在各个处理机CACHE中存储的情况.集中式目录协议有几种方案,其中全映射方案就是采用一个集中存储的目录,每个数据块都在目录中建立一个项,目录项中设有与系统处理机个数相同的“存在位”,每个处理机一位.如果该数据块存在于某处理机的CACHE中,相应位就置1,反之就置0,此外,在每一项中还设置了一个重写位,如果该位为l,表示该数据块的内容已经被改写过,此时存在位中只能有一位为l,即改写此数据块的那个处理机拥有该块.与目录表相对应,每个CACHE 中也为每个数据块安排两个控制信息位.一个是有效位(V),表示该数据的有效或无效,只有当V=l时该数据块才可用的.另外一位称为专用位(P),如P=l,处理机可以直接向该数据块执行写操作,实际上这时的CACHE是该数据块唯一正确的CACHE拷贝.反之,当P=0时.不允许直接写入.如图2所示,全映射目录协议中各标志位的情况.图2,全映射目录协议3.2.2分布式目录协议分布式目录协议又称为链表式目录协议,该协议将目录分散配置到各CACHE中,用链表将有关的CACHE连接在一起.每个数据块建立一个数据链表,每个链表中只包含拥有该数据块的CACHE.于是,存储器中的每个数据块都只有一个指针,指向使用这个数据块的头结点.头结点再指向下一个拥有此数据块的CACHE,直到最后一个结点.链表可以是单向也可以是双向,单向链表只要一个指针,双向链表则需要前项指针和后项指针两个指针,如图3所示是分布式目录协议所用双向链表示意图。
图3,分布式目录协议所用双向链表四、CACHE一致性问题在多处理机系统中的应用如SUN Enterprise是SUN Microsystem公司的多处理机产品,主要作为服务器使用.总线名称为Gigaplane,峰值带宽为2.67GB/s,允许l6路交叉访问总容量为30GB的存储器.每块CPU板上有两个UhraSpace处理机及2GB的存储器,数据宽度为512字节.机箱中有16个插槽,可以任意地插入CPU板或I/O板,但每种至少应有一块.尽管存储器与处理机在一块板上,但是当处理机访问同一块板上的存储器时,也要通过总线,因此访问时间是均匀的.每块1/O板上有两个独立的SBUS总线(64位,25MHz).总磁盘容量达10TB.操作系统使用Solaris UNIX.Gigaplane总线长度为18英寸,操作时钟为83.5MHz,数据线256位,地址线4l位,同时可以支持112个总线事物请求,允许每个板提出7个总线操作要求.为了保证CACHE的一致性,SUN Enterprise使用写废策略来维持CACHE的一致性.它采用三位CACHE状态位,用以表示5种状态,组成了一种MEOSI协议.MEOSI所表示的五种状态分别为:无效状态I、专用状态E、共享状态s、修改状态M和共享已修改状态O.如果一个CACHE行在本处理机修改后成为M状态后,被其他处理机读时,将修改为O状态,表示被读过,而且存储器的该行内容已过时.五,结束语设置CACHE的目的就是为了提高存储系统的速度,使之尽可能小地影响CPU的运行速度.在多处看机系统中,保持CACHE内容与主存内容一致性,使多个处理机并行协调完成一个复杂问题的计算,使并行多处理机系统展现出在性能价格比、可靠性、可扩展性的优势.参考文献[1]John D.Carpinelli.Comp uter s tern Organization&Architecture[M].北京:人民邮电出版社,2001.[2]李亚民.计算机组成与系统结构[M].北京.清华大学出版社,2000.[3]傅麒麟徐勇.现代计算机体系结构[M].北京:北京希望电子工业出版社.2002.[4]徐甲同.高级操作系统[M].西安:西安电子科技大学出版社.1998.[5]赵庆民,李伟平.多处理机系统分析[J].微计算机应用,2005.。