Multiprocessor -CA


Here Insert Picture Description

Messaging shared storage

Two kinds of parallel systems: shared memory and message passing Comparison

Here Insert Picture Description

(1) shared storage:
high complexity, can influence the reduction of L (tens or hundreds of: the SMP server system several to several tens)
Here Insert Picture Description

(2) messaging:
currently used tens of thousands of processors;

Shared memory programming complexity and messaging

(1) dividing the data into task:
• shared memory programming task is divided simply
• messaging program in addition to the task division, and considering the need to divide the data communications
• shared storage: BBS and Messaging: Email

More difficult (2) transmitting complex data structures:
a plurality of pointers to the structure •
• struct {int PA; int Pb ;} int * PC

(3) Dynamic Communication:
• {for (I, J) = {... X; Y = ...; A [I] [J] = B [X] [Y];}}
• migration process and the number of changes in the process

example

(1)积分求π:
1)问题:
Here Insert Picture Description
2)串行程序:
Here Insert Picture Description

3)并行程序:
该并行程序都采用SPMD(single program multiple data)模式;
(每个进程虽然都运行同一个程序,但是处理不同的数据)
其中:

  • numprocs:参与运算的进程个数,所有参与运算的进程都有相同的numprocs值;

  • myid:参与运算的进程的编号,每个进程都有自己的编号(一般并行编程系统都会提供接口函数让进程知道自己的编号)

  • 共享存储程序:(JIAJIA虚拟共享存储系统)
    Here Insert Picture Description

    • 由jie_alloc()分配空间的变量pi是所有参与运算的进程共享的,所有进程只有一份,其他变量都是每个进程局部的,每个进程都有一份;
    • 每个进程通过numprocs和myid号分别计算部分的圆周率值,最后通过一个临界区的机制吧所有进程的计算结果加到一起;
    • Jia_lock()和jia_unlock()是临界区的锁机制;
  • 消息传递程序:
    Here Insert Picture Description

    • 由malloc()分配空间的变量每个进程都有独立的一份,互相看不见;
    • 每个进程算完部分结果后,通过规约操作reduce()把所有进程的mypi加到0号进程的pi中;

(2)矩阵乘法:
1)问题描述:
Here Insert Picture Description

  • A x B = C的过程可分为四个独立的部分:Ai x B = Ci,i = 1, 2, 3, 4
  • 每部分包含的运算可由一台处理机单独完成
  • 矩阵较大时,需分开存放,即Ai,Bi,Ci放在结点i上
  • 每个结点的工作分为AiB1, AiB2, AiB3, AiB4四个部分

2)并行程序:

  • 共享存储:
    Here Insert Picture Description

    • 先由0号进程对A、B、C三个矩阵进程初始化,而其他进程通过jia_barrier()语句等待;
    • barrier是并行程序常见的同步方式,它要求所有进程都到齐后在前进;
    • 然后每个进程分别完成部分运算,在通过jia_barrier()到齐后由进程0统一打印结果;
  • 消息传递:
    Here Insert Picture Description
    - 需要通过显示的发送语句send和接受语句recv进程多个进程之间的通信;
    - 先由进程0进行初始化后发生给其他进程,每个进程分别算完后在发生给进程0进行打印;
    - 在该机制中,要详细列出每次发送的数据大小和起始地址等信息,0号进程接收的时候还要把从其他进程收到的数据拼接在一个矩阵中;

(3)图像纠正
1)问题描述:
把原始图像in通过多项式函数P()映射到目标图像
2)串行程序:
Here Insert Picture Description
3)共享存储并行程序:
Here Insert Picture Description

  • 通信行为是在程序运行过程中动态确定的,这些应用消息传递的方法写并行程序难度大;
  • 数组in和out分布在不同进程的内存上,在消息传递环境下进程并行化时,由于访问in的下标(x,y)是通过多项式P()动态算出来的,编写程序是不知道谁需要跟谁通信;
  • 在共享存储环境下由于不用考虑数据分布,只考虑任务分配,所以并行化比较简单;

常见的共享存储系统体系结构

(1)分类依据:
存储器的分布、一致性的维护、实现方式等

(2)依据存储器的分布:

  • 集中式:多处理器由总线或交叉开关等与共享存储器相连(访问延迟相同),当个数增加时,集中式的存储器成为瓶颈;
  • 分布式(DSM):每个结点包含共享存储器的一部分,结点间由伸缩性好的互联网(如:mesh)相连,这样增加了访存带宽,但导致不一致的访存结构NUMA;

(3)常见结构:
1)无CACHE结构:

  • 集中式共享存储;
  • 无cache,多个处理器通过交叉开关或多级互联网络等直接访问共享存储器;
  • 无CACHE一致性问题,可伸缩性受限于交叉开关或多级互联网络的带宽;
  • 如:CRAY-XMP,YMP-C90

2)SMP结构(共享总线结构)

  • 集中式共享存储;
  • 每个处理器都有cache,多个处理器通过总线与存储器相连;
  • 侦听总线或环等维护一致性,但由于总线是独占性资源,可伸缩性有限;
  • 如:DEC,SUN,SEQUENT,SGI等公司的SMP产品、目前流行的片内多核也多采用该结构;

3)CC-NUMA结构

  • cache一致的分布式共享存储;
  • 共享存储器分布于各结点之间,结点间通过可伸缩性好的互联网相连,每个处理器都能缓存共享单元;
  • cache一致性维护是该系统关键,决定了系统的可伸缩性;
  • 通过目录协议等维护一致性;
  • 如:DASH, Alewife, Origin 2000等

4)NCC-NUMA结构:

  • cache不一致的分布式共享存储系统;
  • 虽然每个处理器都有cache,但硬件不负责维护cache一致性,cache一致性由编译器或程序员维护;
  • 可伸缩性好,可达上千个处理机;
  • 如:以Cray-T3D及T3E为代表;他们提供了一些用于同步的库函数,便于用户通过设置临界区等手段来维护数据一致性

5)COMA结构:

  • 唯有cache结构;共享存储器的地址是活动的;
  • 存储单元与物理地址分离,数据可以根据访存模式动态地在各结点间的存储器移动和复制;
  • 每个结点的存储器相当于一个大容量CACHE,数据一致性也在这一级维护;
  • 如:KSR,DDM等;
  • 优点:当处理器访问不在cache命中时,在本地共享存储器命中的概率较高;
  • 缺点:当处理器的访问不在本结点命中时,由于存储器的地址是活动的,需要有一种机制来查找被访问单元的当前位置,因此延迟大。

6)虚拟共享存储系统:

  • 又称软件DSM系统;
  • 在基于消息传递的MPP多计算机或机群中,用软件的方法把分布于各节点的多个独立编址的存储器转化为一个统一编址的共享虚拟存储空间;
  • 如:IVY, Midway, Munin, TreadMarks, JIAJIA等;

共享存储与消息传递发展趋势

  • 1970年代到1980年代中期,并行系统主要是SMP与向量机,结点个数不多(4-8路),是科学计算、事务处理、服务器领域的主要产品;
  • 由于SMP与向量机可伸缩性差,1990年代消息传递的MPP兴起,主要用于科学计算,同时NUMA系统的研究全面展开,如DASH,Alewife,KSR-1等 ;
  • 1990年代后期,由于解决了伸缩性问题,以Origin 2000为标志,中规模和大规模的共享存储兴起,SUN的Starfile,Compaq的Wildfire, 及IBM的NUMA-Q ;
    目前主流的服务器均采用共享存储,低端服务器由处理器ᨀ供直接互连形成2-4路系统;高端服务器通过桥片连接形成几十路的系统;
  • 以科学计算为目的大规模MPP系统仍以消息传递为主,几千到上万个处理机,随着带宽的增加与用户级通信的发展,机群系统与MPP系统的界限越来越模糊;
  • 主流商业片内多核都采用共享存储结构,甚至分布式共享存储系统;片内众核(几百到上千核)如GPU结构采用独立存储结构;

共享存储多核处理器的关键问题

通用多核处理器一般采用共享存储结构:
①多个处理器核发出的访存指令次序如何约定?
• 存储一致性模型:如顺序一致性、处理器一致性等
②多个处理器核间共享片上Cache如何组织及维护一致性?
• Cache一致性协议:片上Cache结构及Cache一致性协议
③多个核处理器核间如何实现通信?
• 片上互连结构
④多个处理器核间如何实现同步?
• 多核同步机制:互斥锁操作(lock)、路障操作(barrier)

共享存储系统中的访存相关性

一致性问题

  • 在单机系统中,只要保持程序中的数据相关性,就可以保证执行正确。在多处理机系统中,不仅要考虑单机内的数据相关,而且要考虑多机之间的数据相关;

  • 为了执行的正确性,每个处理机都必须根据程序序来执行指令

  • 共享存储程序片段PRG1:是保证只有一个进程进入临界区的一种同步机制
    Here Insert Picture Description
    变量定义:
    § 变量a,b:指示进程P1,P2是否进入临界区的标志(0未进入,1进入);P1,P2的共享变量;
    § 寄存器R1,R2是P1,P2的内部寄存器;
    工作机制:
    § 当一个进程试图进入临界区时,它首先把本进程的标志置1,然后检查另一进程的标志;
    § 若另一进程的标志为0,说明另一进程为进入临界区,则本进程进入临界区;
    § 否则本进程等待,直到另一进程退出临界区;
    可能情况:
    § 当P1和P2分别执行完相应的进程时,R1和R2的值的正确组合是(0,1)、(1,0)、(1,1)。
    § 这里最后一种情况将导致死锁(假设没有其他方法来防止死锁);
    § 只有R1=R2=0的结果是错误的,它将导致P1和P2同时进入临界区;

  • 即使每个处理机都根据程序序执行指令,仍可能导致错误结果:
    Here Insert Picture Description

    • 起因:从Write Atomic原子的到Write Non-atomic;
    • 什么是写可分割系统中正确的执行?
      存储一致性模型Cache一致性协议

什么是正确的执行?

(1)正确性标准:符合程序员的直觉
(2)正确性规范:顺序一致性
如果在多处理机环境下的一个并行执行的结果等于同一程序在单处理机多进程环境下的一个执行的结果,则此并行程序执行正确;

并行程序模型:

(1)程序模型=指令集+指令集上的序关系:

  • 一个进程P是一个二元组 < V ( P ) , P O ( P ) > <V(P),PO(P)> ,其中 V ( P ) V(P) 是LOAD和STORE指令的集合, P O ( P ) PO(P) V ( P ) V(P) 上的一个全序关系;
  • 由N个进程P1,P2,…,Pn组成的程序PRG(P1,P2,…,Pn)是一个二元组<V(PRG),PO(PRG)>,其中V(PRG)=V(P1)U V(P2)U…U V(Pn)是程序PRG的指令集,PO(PRG)=PO(P1) UPO(P2)U…UPO(Pn)是程序PRG的程序序;
  • 例:
    Here Insert Picture Description
    (2)冲突访问的概念:
  • 意义:程序中冲突访问的执行次序决定了程序执行的结果;
  • 如果两个访存操作访问的是同一单元(单处理器中同一变量)且其中至少有一个是存数操作, 则称这两个访存操作是冲突的;
  • C(PRG)={(u,v)|((u,v)∈V(PRG))∩(u,v是冲突访问)}称为程序PRG中冲突访问对集;
  • 例:
    Here Insert Picture Description

程序执行的正确性

(1)执行的概念:

  • 在在一个并行执行中,一旦互相冲突的访问的执行次序确定了。那么执行结果也就确定了;
  • 在程序PRG中, 对冲突访问对集C(PRG)的任一无圈定序称为程序PRG的一个执行,记为E(PRG)。
  • E(PRG )是C(PRG )的 ⼀个 定序 : 对任意的(u,v)∈C(PRG),(u,v)∈E(PRG) 和(v,u)∈E(PRG)有且仅有⼀个成⽴
  • 例子:
    Here Insert Picture Description
    (2)执行的正确性:
  • 如果存在PRG的 ⼀个正确串⾏执⾏SE(PRG),使得SE(PRG)U P0(PRG)⽆圈 ,且E(PRG)和SE(PRG)结果相等 ,则称E(PRG)是程序 PRG 的⼀个正确执⾏;
  • 串⾏程序串指令的相关性是并⾏程序中冲突访问的⼀种特殊情况;
  • 串⾏程序的执⾏中满⾜程序的相关性是并⾏程序中E(PRG)U P0(PRG)⽆圈的⼀种特殊情况;
  • 例子:
    Here Insert Picture Description

共享存储系统的访存事件次序

满足顺序一致的访存事件次序

顺序一致的一个充分条件(GPPO条件):
在共享存储多处理机中,若任一处理机都严格按照访存指令在进程中出现的次序执行,且在当前访存指令彻底执行完之前不能开始执行下一条访存指令,则此共享存储系统是顺序一致的。
• 一个存数操作“彻底完成”指的是它所引起的值的变化已被所有处理机所接受;
• 一个取数操作彻底完成是指它取回的值已确定,且写此值的存数操作已“彻底完成;

分布式系统的访存模型

(1)写可分割系统的访存事件模型:
• 系统中有N个处理机, 每个处理机执行一个进程。
• 任一访存操作u被分割成N个子操作u1,u2,… , un, 其中ui表示u相对于Pi已执行完。

(2)GPPO条件的描述:
• 任一处理机都按访存指令在进程中出现的次序执行,且在当前访存指令彻底执行完之前不能开始执行下一条访存指令;
Here Insert Picture Description

(3)在写可分割系统中,若执行E(PRG)满足GPPO条件,则E(PRG)正确;

顺序一致系统中的乱序执行

  • 如果访存操作u和v是同一进程Pi的两个访存操作且u在v之前,则在如下条件下v可先于u执行而不影响程序正确性:
    - 在v发出之后u“彻底完成”之前的这段时间内,没有其他对v所访问单元的访问相对于Pi完成(如v所访问单元在Pi中的备份不被更新)
    Here Insert Picture Description
  • 乱序执行的实现方法:猜测执行
    - 先往下执行,收到相应的invalidate信号再反悔(区分处理器是不是顺序一致的主要标志)

存储一致性模型

常见的存储一致性模型

Here Insert Picture Description

从某种意义上说,存储一致性模型对共享存储系统中多处理机的访存次序作了限制,从而影响了性能;

对存储一致性模型(Memory Consistency)的观点

(1)历史的观点: Hardware-Centric:
• 对多个处理机访问共享存储器的次序的一些限制
• 弱一致性模型:放松限制来ᨀ高性能
• 程序员必须考虑访存次序
• 系统设计者没有优化余地

(2)正确的观点: Programmer-Centric:
• 结构设计者与应用程序员之间的一种约定
• 给出正确程序的标准
• 程序员不用考虑访存次序
• 系统设计者有更多的ᨀ高性能的空间

各存储模型

(1)顺序一致性模型SC:

  • 正确性标准:符合程序员的直觉
  • 正确性规范:顺序一致性
    - 如果在多处理机环境下的一个并行执行的结果等于同一程序在单处理机多进程环境下的一个执行的结果,则此并行程序执行正确

(2)处理机一致性模型PC:

  • 由 Goodman 提出的处理机一致性(Processor Consistency)比顺序一致性弱;
  • 处理机一致性对访存事件发生次序施加的限制是:
    - 在任一取数操作 LOAD允许被执行之前,所有在同一处理机中先于这一LOAD 的取数操作都已完成
    - 在任一存数操作 STORE允许被执行之前,所有在同一处理机中先于这一STORE 的访存操作(包括LOAD 和STORE)都已完成
    (上述条件允许STORE之后的LOAD 越过STORE而执行,放松了顺序一致性模型对访存次序的限制)
  • 实际上是把Write Buffer变得让用户可见:
    • 如:Store提交后在Write Buffer,还没有写Cache/内存,后面的Load已经从Cache取回数据,此时收到对Load访问Cache行的一个无效请求(load指令不可取消);

(3)弱存储一致性模型WC:

  • 把同步操作和普通访存操作区分开来,只在同步点维护一致性:
    • 同步操作实现顺序一致性;
    • 冲突访问必须用同步操作保护;
  • 访存次序:
    • 同步操作的执行满足顺序一致性条件;
    • 在任一普通访存操作允许被执行之前,所有在同一处理机中先于这一访存操作的同步操作都已完成;
    • 在任一同步操作允许被执行之前,所有在同一处理机中先于这一同步操作的普通访存操作都已完成;

(4)释放一致性模型RC:

  • 把同步操作进一步分成获取操作ACQUIRE和释放操作RELEASE;
  • 冲突访问必须用REL->ACQ对隔开;
  • 访存次序:
    • 同步操作的执行满足顺序一致性条件;
    • 任一普通访存操作允许被执行之前,所有在同一处理机中先于这一访存操作的ACQUIRE操作都已完成;
    • 任一RELEASE操作允许被执行之前,所有在同一处理机中先于这一RELEASE的普通访存操作都已完成;

1)急切更新释放一致性ERC:

  • 临界区内的多个存数操作对共享内存的更新不是及时进行,而是在执行release操作前(退出临界区)集中进行;
  • 把多个存数操作合在一起,从进行统一执行,进而减少了数据通信次数;

2)懒惰更新释放一致性LRC:
由一个处理器对某单元的存数操作并不是由此处理器主动的传播到所有共享该单元的处理器,而是在其他处理器要用到此处理器所写的数据时(其他处理器acquire时)再向此处理器索取该单元的最新备份;

  • 例子:
    Here Insert Picture Description

○ 处理器p1所写的y值到达处理器p2的时刻不同:
§ RC:P1执行操作“y=1”时就开始把y的新值传播到P2;
§ ERC:P1执行“rell(11)”时才开始传播y的新值;
§ LRC:它不要求P1主动传播y的新值,只有在P2执行“acq(11)”时才向P1索取y的新值;
○ RC、ERC、LRC对同一程序体现出相同的行为,即它们在程序行为一级有相同的语义,对程序员有相同的正确程序设计要求。它们不是不同的存储一致性模型,而是同一存储一致性模型的不同实现;

(5)域一致性模型ScC:

  • 冲突访问必须用同一把锁保护;
  • 举例:
    Here Insert Picture Description

(6)单项一致性模型EC:

  • 必须为每一个共享变量指定相应的锁;
  • 加重了程序员的负担;
  • 有利于性能;

CACHE一致性协议

共享存储多处理机中的Cache一致性问题

(1) Cache在共享存储系统中的作用:
• 弥补CPU与主存间的速度差距
• 减少访存冲突以及对互连网络带宽的需求
(2)Cache一致性问题:
• 如何保持数据在Cache及主存中的多个备份的一致性

Cache一致性协议(Cache Coherence Protocol)

(1)定义:
一种把新写的值传播到其他处理机的机制;

(2)类别:
• 如何传播新值:Write Invalidate vs. Write Update // 写无效 vs 写更新
• 谁可以产生新值:Single Writer vs. Multiple Writer // 单写协议 vs 多写协议
• 何时开始传播新值:Early vs. Delayed Propagation // 及时传播 vs 延时传播
• 向何处传播新值:Snoopy vs. Directory Protocol // 侦听协议 vs 目录协议

(3)意义:
Cache一致性协议决定系统为维护一致性所做的具体动作,因而直接影响系统性能;

(4)Write-Invalidate和Write Update:

1)Write-Invalidate:

  • 当一个处理机更新某共享单位(如存储行或存储页)时(之前或之后),通过某种机制使该共享单位的其它备份无效,当其它处理机访问该共享单位时,访问失效,再取得有效备份;
  • 适用于顺序共享(sequential sharing)的程序:在较长时间内只有一个处理器访问一个变量;

2)Write-Update:

  • 当一个当一个处理机更新某共享单位时,把更新的内容传播给所有拥有该共享单位备份的处理机;
  • 适用于紧密共享(tight sharing)的程序:多个处理器在一段时间内频繁的访问同一变量;

3)比较:

  • Write Update: 重复更新已不再使用的行;
  • Write Invalidate: 假共享导致乒乓问题(处理器之间频繁的互相剥夺对一个共享块的访问权导致性能严重地下降);

4)补充:

  • 在共享粒度较⼤的共享存储系统中(尤其指共享虚拟存储系统中,共享粒度很⼤,通常为⼀⻚),容易导致假共享。
  • 假共享:⼏个处理器虽然共享某个存储块,但没有真正共享数据。在⼏个处理器同时访问同⼀共享块的不同部分时就会发⽣假共享

(5)单写和多写:

1)单写:任一时刻只有一个处理机能写某共享单位

2)多写:多个处理机同时写某共享单位的不同部分

  • 多写协议会引起额外的存储和计算开销;
  • 问题:
    • 为了把不同处理器对同一共享块中不同部分的修改内容“合并”在一起,需要识别每个处理器修改了该共享块中的哪部分内容?
  • 做法:
    • 在处理器第一次写一个共享块之前,为该共享块做一个备份(该共享块的块备份twin);
    • 当一致性协议要求对不同处理器的修改内容进行合并时,每个修改过该共享块的处理器吧该快当前的内容与它的twin进行比较,得出本处理器的修改内容(块差diff);
    • 这样,可以把不同处理器关于同一共享块的diff合并在一起,得到该共享块的新内容;

3)图示:
Here Insert Picture Description

(6)急切更新与懒惰更新:

  • 普通RC:边写边传输写操作
  • Eager RC:把写操作延迟到Release时一起发出
  • Lazy RC:进一步延迟到下一个Acquire时再传输
  • ERC和LRC是RC的不同实现,不是不同的一致性模型
    Here Insert Picture Description

(7)侦听协议:

1)通过广播维护一致性:
• 写数的处理机把新写的值或所需的存储行地址广播出去;
• 其他处理机侦听广播,当广播中的内容与自己有关时,接受新值或提供数据:
①写使无效侦听:让自己的备份无效;
②写更新侦听:更新自己的备份值;
• 存储器和每个处理机的Cache只维护状态信息;

2)适合于总线结构的SMP系统中:
• 只适用于可伸缩性差的共享总线结构;
• 总线是一种廉价而有效的广播工具

3)可伸缩性有限
• 总线是一种独占性资源
• 总线延迟随处理机数的增加而增加:仲裁、总线长度、总线阻抗

(8)基于目录的协议:

  • 每个存储行对应一个目录项:
    • 记录拥有该行的一个副本的那些处理机以及此行是否已被改写等信息;
    • 当某个处理机写该行时,根据目录项的内容传播数据(写使无效/写更新信号);
    • 在COMA结构中,记录该行的Owner
  • 由于避免了广播,目录协议有一定的伸缩性;
  • 适⽤于采⽤通⽤互联⽹络的分布式系统;
  • 目录需要大量存储空间, 需要动态维护:
    ①位向量目录: O(MN),存储开销大;
    - 其中:M:共享存储容量;N:处理器数;
    - 目录表每一目录项,包括:
    • n位的向量:第i位为1表示此存储行在第i个存储器有备份;
    • 改写位:为1表示某处理器独占并改写此行,此行为dirty,否则为CLEAN状态;
    ②有限指针目录:O(M logN),指针溢出;
    用有限个指针(log2n)指向当前持有此向量的几个处理器;
    共享的处理器太多时,可能出现指针溢出,此时用指针替换、广播等方法处理;
    ③链目录: O(M logN),串行更新;
    把所有持有同一存储行的cache行用链表链接起来,链表头存在存储行处;

ESI协议

(1)状态:
ESI 是指Cache 行的三种一致性状态:

  • EXC(Exclusive,独占):表明对应Cache 行被当前处理器核独占,当前处理器核可以随意读写,其他处理器核如果想读写这个cache 行需要请求占有这个cache 块的处理器核释放该Cache 行 ;
  • SHD(Shared,共享):表明当前Cache 行可能被多个处理器核共享,只能读取,不能写入;
  • INV (Invalid,无效):表明当前Cache 块是无效的;

(2)状态转换图:
Here Insert Picture Description
(3)应用情景:(根据x在cache和存储器中的不同状态采取不同的操作)
Here Insert Picture DescriptionHere Insert Picture DescriptionHere Insert Picture Description

(4)协议举例-基于目录,单写,写使无效;
①单元x初始时在存储器中处于CLEAN状态(改写位为0),并被处理器Pj和Pk所共享(在Pj和Pk的cache中处于SHD状态,如图a;
Here Insert Picture Description
②接着x被多个处理器按如下次序访问:

  • 处理器Pi发出存数操作STORE x;
    Here Insert Picture Description

  • 处理器Pk发出存数操作STORE x;
    Here Insert Picture Description

  • 处理器Pi发出取数操作LOAD x;
    • 若支持SC,Pi需等到Pk的“STORE x”执行完;
    • 若支持RC,无限制;
    Here Insert Picture Description

  • 处理器Pj发出取数操作LOAD x;
    Here Insert Picture Description

③最终状态:
Here Insert Picture Description

存储一致性模型与Cache一致性协议

存储一致性模型对Cache一致性协议的制约作用:
①Cache一致性协议都是针对某种存储一致性模型而设计的;
②存储一致性模型为Cache一致性协议规定了“一致性”的目标,即,什么是“一致性”;
• 如,顺序一致性模型要求对某处理机所写的值立即进行传播,在确保该值已经被所有处理机接受后才能继续其它指令的执行;
• 如,释放一致性模型允许将某处理机所写的值延迟到释放锁时进行传播;

访存事件次序在微结构中的实现

(1)指令在保留站中等待发射时检查并等待:
• 等到前面所有指令都提交
• Store操作写到Cache、访存失效队列空
• 同步操作如sync、LL、SC一般在发射时控制

(2) Load operation can not cross the Store operation is performed (or still undetermined address in the Store Buffer) completed:
• If the Load data back to register and use, and to cancel a lot of trouble
• To operate external to invalidate the view Store Buffer is too much

(3) In order to achieve the performance and simplicity of weak consistency model is often used

Factor analysis of multi-core CPU

(1) Processor core:
• heterogeneous, homogeneous; general, special; heavy nuclei, light nuclei; multi-core, many-core

(2) interconnect structures:
• the degree of stretching can be, whether to support the inter-chip interconnect

(3) fetched structure:
• All core the same address space, different cores having different address spaces
• Cache coherency protocols: Is Scalable

(3) peak performance and memory access bandwidth, the bandwidth and IO:
• Avoid teapot down inside the dumplings
• Universal multi-core processor memory access bandwidth and peak performance gap is not too big

Published 24 original articles · won praise 0 · Views 2048

Guess you like

Origin blog.csdn.net/weixin_44849403/article/details/104076766