3.流水与并行
并行算法设计

并行算法设计一、引言并行算法是指在多核处理器或分布式系统上同时执行多个子任务,以提高计算效率和处理速度的一种计算模式。
随着计算机硬件技术的不断发展,越来越多的问题需要借助并行算法来解决。
本文将介绍并行算法的设计原则和常见的设计模式,以及在实际应用中的一些注意事项。
二、并行算法设计原则1. 任务划分原则:并行算法的基础是将原本串行执行的任务划分成多个独立的子任务,并通过适当的调度算法分配给不同的处理器进行并行执行。
任务划分应尽量保持任务的独立性,避免数据依赖关系过多,以提高并行度和性能。
2. 数据分布原则:在设计并行算法时,应根据不同任务的计算量和数据量合理规划数据分布方式。
对于计算密集型任务,可以将数据均匀划分给多个处理器;对于数据密集型任务,可以采用数据分布策略来平衡负载和减少数据通信的开销。
3. 通信和同步原则:并行算法中,处理器间的通信和同步操作是必不可少的。
在设计并行算法时,应考虑如何减少通信和同步的开销,以提高整体的算法性能。
可以通过减少数据传输量、合理设置同步点等方式来优化并行算法的通信和同步操作。
4. 任务调度原则:任务调度是指将多个子任务合理地分配给不同的处理器进行执行的过程。
合理的任务调度策略可以提高并行算法的负载均衡性和吞吐量,并减少处理器间的竞争情况。
在设计并行算法时,应考虑任务划分和任务调度的关系,选择合适的调度策略来优化算法性能。
三、并行算法设计模式1. 分治法:分治法是指将一个大问题分解成多个相互独立的小问题,并通过递归的方式将小问题的解合并成大问题的解。
在设计并行算法时,可以将原问题划分成多个子问题,分配给不同的处理器并行解决,最后将子问题的解合并得到最终结果。
2. 数据并行:数据并行是指将数据划分成多个子集,分配给不同的处理器并行处理。
对于同一类操作,各处理器可以独立计算自己所负责的数据子集,最后将各处理器计算得到的结果合并得到最终结果。
3. 流水线:流水线是指将一个任务划分成多个子任务,并通过不同的处理器按照一定的顺序依次执行。
计算机组成原理中的流水线与并行处理

计算机组成原理中的流水线与并行处理计算机组成原理是指计算机的各个组成部分及其相互关系的原理。
其中,流水线与并行处理是计算机组成原理中的两个重要概念。
本文将从流水线和并行处理的定义、特点、应用以及优缺点等方面进行论述。
一、流水线的定义和特点流水线技术是一种将复杂的任务分解为若干个互相依赖的子任务,并通过时序控制将其分别交给不同的处理单元进行执行的技术。
它可以提高计算机的执行效率和吞吐量。
与串行处理相比,流水线处理具有以下特点:1.任务分解:将复杂的任务分解为多个子任务,每个子任务由不同的处理单元负责执行。
2.流水线寄存器:通过在流水线各个阶段之间插入流水线寄存器,实现了各个阶段之间的数据传递和暂存,确保了数据的正确性和稳定性。
3.并行操作:不同的处理单元可以并行执行不同的任务,提高了计算机的并行处理能力。
4.随机任务执行:由于流水线中的各个阶段是独立的,因此可以随机运行和停止任务,提高了计算机的灵活性。
二、并行处理的定义和特点并行处理是指同时利用多个处理器或者多个处理单元并行执行多个任务的处理方式。
它可以大幅提升计算机系统的运算速度和处理能力。
并行处理的特点如下:1.任务分配:将大任务分解为多个小任务,并分配给多个处理单元同时执行。
2.任务协调:通过合理的任务调度算法,协调各个处理单元之间的任务执行顺序和数据传递,确保整个系统的稳定性和正确性。
3.资源共享:各个处理单元之间可以共享资源,如内存、缓存等,提高资源利用率。
4.计算效率提高:通过多个处理单元同时执行任务,大幅提高了计算效率和处理速度。
三、流水线与并行处理的应用流水线和并行处理在计算机领域被广泛应用,以下是几个常见的应用示例:1.超级计算机:超级计算机通常采用并行处理的方式,利用多个处理器同时进行计算,以提高计算能力。
2.图形处理器:图形处理器(GPU)采用流水线技术,将图像处理任务分解为多个子任务,通过流水线处理实现高效的图形渲染和计算。
流水线与并行处理技术

流水线与并行处理1. 概述流水线技术导致了关键路径的缩短,从而可以提高时钟速度或采样速度,或者可以在同样速度下降低功耗。
在并行处理中,多个输出在一个时钟周期内并行地计算。
这样,有效采样速度提高到与并行级数相当的倍数。
与流水线类似,并行处理也能够用来降低功耗。
考虑3阶有限冲激响应(FIR )数字滤波器:y(n) = ax(n) + bx(n-1) + cx(n-2) (1-1)其框图实现示意图如图1所示:图1 一个3阶FIR 滤波器关键路径(或者处理一个新样点所需要的最小时间)由1个乘法与2个加法器时间来限定。
如果T M 是乘法所用的时间,T A 是加法操作需要的时间,T sample 是采样周期,则必须满足:T sample ≥ T M + 2T A (1-2)因而,采样频率(f sample )(也称为吞吐率或迭代速率),由下式给出:f sample ≤ A M T T 21 (1-3)流水线采用沿着数据通路引入流水线锁存器(本人理解是寄存器)的方法来减小有效关键路径(effective critical path )。
并行处理提高采样频率是采用复制硬件的方法,以使几个输入能够并行的处理,而几个输出能够在同一时间产生出来。
2. FIR 数字滤波器的流水线其流水线实现是通过引入两个附加锁存器而得到的,如图2所示:图2 流水线FIR滤波器,其中垂直虚线代表一个前馈割集关键路径现在由T M + 2T A减小为T M + T A。
在这种安排下,当左边的加法器启动当前迭代计算的同时,右边的加法器正在完成前次迭代结果的计算。
必须注意到,在一个M级流水线系统中,从输入到输出的任一路径上的延时原件数目是(M-1),它要大于在原始时序电路中同一路径上的延时元件数。
虽然流水线技术减小了关键路径,但是它付出了增加迟滞(latency)的代价。
迟滞实质上是流水线系统第一个输出数据的时间与原来时序系统第一个输出数据时间相比的滞后。
并行计算的基本概念

并行计算的基本概念并行计算是指同时执行多个计算任务的一种计算方法。
与串行计算相比,并行计算可以大幅提高计算效率,减少计算时间。
在并行计算中,多个任务可以被同时执行,任务之间可以相互独立执行或者相互协作完成。
任务并行是指将一个计算任务拆分成多个子任务,在不同的处理器上并行执行。
每个子任务都是相对独立的,可以独立地进行计算,并最终将计算结果合并。
任务并行适用于将一个大型计算任务分解成多个子任务并行执行的情况,每个子任务之间没有数据依赖。
数据并行是指将问题的数据集合分成多个部分,在不同的处理器上并行执行相同的计算任务。
每个处理器都负责处理部分数据,并最终将计算结果合并。
数据并行适用于将一个相同计算任务应用于多个数据元素的情况,每个处理器之间没有数据依赖。
流水线并行是指将一个计算任务拆分成多个阶段,在不同的处理器上并行执行不同的阶段,任务的执行流经过多个处理器,并最终将计算结果合并。
流水线并行适用于一个计算任务可以被划分成多个可以并行执行的阶段的情况,每个阶段之间有数据依赖。
并行计算还需要考虑负载均衡和数据同步的问题。
负载均衡是指将任务分配给不同的处理器时,尽量确保各个处理器的负载大致相当。
如果负载不均衡,会导致一些处理器的利用率较低,从而降低整体的计算效率。
负载均衡可以通过动态调整任务分配策略或者任务划分的方式来实现。
数据同步是指在并行计算中,处理器之间需要共享或者交换数据的过程。
数据同步主要包括数据传输和数据通信两个环节。
数据传输是指将数据从一个处理器传输到另一个处理器的过程,可以通过共享内存、消息传递或者文件系统等方式实现。
数据通信是指处理器之间交换数据的过程,可以通过消息传递等方式实现。
并行计算除了可以在多个处理器上进行,并且还可以通过分布式计算系统进行。
分布式计算是指将计算任务分布到不同的计算节点上,每个计算节点可以有多个处理器,通过网络连接进行通信和协作。
分布式计算可以进一步提高计算效率和扩展性,适用于处理大规模计算任务的场景。
处理大规模并行计算的方法

处理大规模并行计算的方法近年来,随着计算机技术的飞速发展,大规模并行计算成为了处理大数据和高性能计算的重要手段。
在处理大规模并行计算的过程中,选择合适的方法和技术能够显著提高计算效率和性能。
本文将介绍几种常用的处理大规模并行计算的方法,并探讨其优缺点和适用场景。
一、任务并行任务并行是指将一个大任务分解为多个小任务,并将这些小任务分配给不同的处理单元同时进行计算的方式。
这种方法可以充分利用多台计算机或多个CPU的计算能力,从而提高计算速度和效率。
任务并行的关键是任务的划分和调度,通过合理的任务划分和调度策略,可以实现任务之间的负载均衡,进一步提高计算性能。
二、数据并行数据并行是指将大规模数据分割成多个小数据块,并将这些小数据块分配给不同的处理单元同时进行计算的方式。
这种方法适用于需要对大量数据进行相同操作的场景,如图像处理、数据挖掘等。
数据并行的关键是数据的划分和通信,通过适当的数据划分和高效的通信机制,可以加快计算速度和降低通信开销。
三、流水线并行流水线并行是指将一个大的计算过程分解为多个子计算过程,并通过流水线的方式进行计算。
在流水线并行中,每个子计算过程可以由不同的处理单元并行执行,从而提高计算效率。
流水线并行适用于计算过程具有一定的顺序性和高度可并行性的情况,如图像处理、视频编码等。
然而,流水线并行也面临着任务之间的依赖关系和流水线的平衡问题,需要合理设计和管理。
四、共享内存并行共享内存并行是指多个处理单元共享同一块内存空间,并通过读取和写入内存来进行通信和协调的方式。
这种方法具有内存访问速度快、通信成本低的优势,适用于需要频繁共享数据和协同计算的场景,如并行搜索算法、图计算等。
共享内存并行的关键是处理好并发访问冲突和数据一致性的问题,确保计算结果的准确性和一致性。
综上所述,处理大规模并行计算的方法包括任务并行、数据并行、流水线并行和共享内存并行等。
选择合适的方法取决于具体的应用场景和需求,需要综合考虑计算规模、计算复杂度、数据通信等因素。
计算机系统结构——课后答案

习题一1、解释下列术语计算机系统的外特性:通常所讲的计算机系统结构的外特性是指机器语言程序员或编译程序编写者所看到的外特性,即由他们所看到的计算机的基本属性(概念性结构和功能特性)。
计算机系统的内特性:计算机系统的设计人员所看到的基本属性,本质上是为了将有关软件人员的基本属性加以逻辑实现的基本属性。
模拟:模拟方法是指用软件方法在一台现有的计算机上实现另一台计算机的指令系统。
可移植性:在新型号机出台后,原来开发的软件仍能继续在升级换代的新型号机器上使用,这就要求软件具有可兼容性,即可移植性。
可兼容性是指一个软件可不经修改或只需少量修改,便可由一台机器移植到另一台机器上运行,即同一软件可应用于不同环境。
Amdahl 定律:系统中对于某一部件采用某种更快的执行方式所能获得的系统性能改进程度,取决于这种执行方式被使用的频度或占总执行时间的比例。
虚拟机(Virtual Machine ):指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
6、7、假定求浮点数平方根的操作在某台机器上的一个基准测试程序中占总执行时间的20%,为了增强该操作的性能,可采用两种不同的方法:一种是增加专门的硬件,可使求浮点数平方根操作的速度提高为原来的20倍;另一种方法是提高所有浮点运算指令的速度,使其为原来的2倍,而浮点运算指令的执行时间在总执行时间中占30%。
试比较这两种方法哪一种更好些。
答:增加硬件的方法的加速比23.120/2.0)2.01(11=+-=p S ,另一种方法的加速比176.12/3.0)3.01(12=+-=p S ,经计算可知Sp1>Sp2第一种方法更好些。
9、假设高速缓存Cache 的工作速度为主存的5倍,且Cache 被访问命中的概率为90%,则采用Cache 能使整个存储系统获得多高的加速比? 答:加速比%10)(%90'⨯++⨯==tc tm tc tmT T S ,其中tm=5tc ,代入公式,得到加速比S=3.33。
并行计算的分类

并行计算的分类随着计算机技术的不断发展,计算能力和算法的复杂程度也得到了大幅提升,但是在某些场景下,单个计算机的计算能力和运行速度已经无法满足需求。
并行计算应运而生,可以利用多个计算机或者处理器同时进行计算任务,进而提高计算速度和效率。
并行计算的分类可以从不同角度进行区分,下面是常见的并行计算分类。
1.按照并行度分类并行度是指在并行计算中,可同时执行的任务数目。
根据并行度的不同,可以将并行计算分为以下几类。
(1)任务并行:任务并行是指将大的计算任务分为多个小的子任务,然后将子任务分配给多个处理器进行同时计算。
这种并行化策略可以极大地提高计算速度和效率。
例如,在图像处理中,可以将一幅图像分成多个子区域,然后交给多个处理器并行计算。
(2)数据并行:数据并行是指将大的数据集分为多份,然后将数据分配给多个处理器进行计算。
例如,在机器学习中,可以将数据集分为多份,然后交给多个处理器进行同时训练。
(3)管道并行:管道并行是指将多个处理器按照流水线方式进行组合,每个处理器负责一道计算工序,然后将结果传递给下一个处理器。
例如,在视频处理中,可以将视频编码器和解码器按照流水线方式进行组合,提高视频处理的效率。
(4)混合并行:混合并行是指以上所述所有并行化方式的混合使用。
2.按照计算资源分类根据计算资源的不同,可以将并行计算分为以下几类。
(1)集中式并行计算:集中式并行计算是指将多个处理器或者计算机集中在一个计算中心进行协同工作,以完成一些大规模计算任务。
例如,在云计算中,可以将多个计算机集成在同一数据中心,来实现大规模的计算任务。
(2)分散式并行计算:分散式并行计算通常是通过网络进行协同工作,各个计算机或者处理器之间互相通讯,协同完成计算任务。
例如,在分布式系统中,每个计算机负责执行一部分计算任务,并将结果传递给其他计算机进行处理。
3.按照工作量分配策略分类根据工作量分配策略的不同,可以将并行计算分为以下几类。
(1)静态数据分配:静态数据分配是指将数据集按照静态的方法分配给各个处理器进行计算。
lc3并行流水

F D
In LC-3, this is always the first four bits of instruction. A 4-to-16 decoder asserts a control line corresponding to the desired opcode.
Depending on opcode, identify other operands from the remaining bits.
EA
OP EX S
Example: for LDR, last six bits is offset
for ADD, last three bits is source operand #2
Instruction Processing: EVALUATE ADDRESS
For instructions that require memory access, compute address used for access. Examples: add offset to base register (as in LDR)
ADD指令
状态机
The control unit is a state machine. Here is part of a simplified state diagram for the LC-3:
LC3状态机
共65个状态,初始和默认状态为18
每一个时钟周期跳转一次,执行完 一条指令就回到到18,每条指令的 前几个状态用于取指,是固定的
周期时序控制
时序设计: 周期、节拍、脉冲
如何区分一个指令周期中各个CPU周期(取指周期、取数周 期、执行周期等)?
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
b(n) a(n)
c(n) a(n)
+
c(n) d(n)
+
+ *
a)
y(n)
b(n)
I
+ *
y(n)
O
d(n)
z(n)
z(n)
b) 图四、多输入多输出系统及其DFG
下面以图四的 DFG 为例,来练练手,看如何插入流水线寄存器以缩短关键路径。首先假设 加法节点计算时间 TA=1u.t. ,乘法节点计算时间为 TM=2u.t. ,那么图四 b)的 DFG 关键路径
+ I
D
D D
+ O I
D
D 2D
+
D
+
D
O
2D a)
*1 *2
2D b)
*1
D
*2
图六、a)乘法节点可拆分;b)细粒度流水线架构
细粒度流水线, 无非就是假设那些决定架构关键路径的节点是可以拆分的, 将其拆分之后再 运用流水线寄存器将其斩断,从而进一步缩短关键路径。反过来,我们把节点不可拆分的流 水线称为“粗粒度”流水线。 流水线想要用好,除了按正确的方法(单向割集法)进行插入之外,还要注意分析插 入的位置, 使得插入的流水线寄存器恰好能斩断有效的关键路径, 从而得到更短的关键路径, 如若不然这种流水线插入就没有意义了。
A
C
A
CACຫໍສະໝຸດ BDBD
B
D
a) b) c) 图三、割集示例:a)单向割集;b)双向割集;c)单向割集
------------------------------------------------- 回到流水线讲解-----------------------------------------------明白了割集和单向割集 (也就是课本上的前馈割集, 以后我们均认为在单向割集上插入流水 线寄存器) ,此外还有一点需要注意:当 DSP 系统有多个输入端和多个输出端时,应该先把 多个输入端折合成一个输入节点,多个输出端折合成一个输出节点,当然了,输入节点和输 出节点计算不耗时间,也就是计算时间为 0u.t. 。比如图四 a)的 DSP 框图,输入有四个分别 为 a(n)、b(n)、c(n)和 d(n),输出有两个分别为 y(n)和 z(n);图四 b)为其 DFG,所有输入折 合为节点 I,所有输出折合为节点 O。
y (2k ) y (2k 1)
x(2k ) a(2k ) b(2k )
x(2k 1) a(2k 1) b(2k 1)
这两个式子完全可以单独计算,根据式子构造的并行硬件如图一 c)所示。
a(2k) x(2k)
b(2k)
a(2k+1) y(2k) x(2k+1)
b(2k+1)
+
+
+
+
y(2k+1)
图一、示例,c)并行处理结构
练习:对于这个示例要构造更高阶的并行系统,如何操作? 二、流水线 观察前面的例子,可以看出流水线采用沿着数据通路引入流水线寄存器的方法来缩短 有效的关键路径,从而缩短迭代周期(采样周期也会相应缩短) ,提高系统吞吐率。这里先 直接给出流水线的三句口诀(也是流水线的严格定义,见课本) : 1、 一个架构的速度(或时钟周期)由任意两个寄存器间、或一个输入与一个寄存器间、 或一个寄存器与输出间、或输入与输出间路径中最长的路径限定。 2、 这个最长的路径或“关键路径”可以通过在架构中恰当插入流水线寄存器来缩短。 3、 流水线寄存器只能按照穿过任一图的前馈割集的方式插入。 为了说明第三点,需要引入两个定义: 割集:割集是一个图边的集合,如果从图中移去这些边,图就成为不相连的了。 前馈割集:如果数据在割集的所有边上都沿前进方向移动,这个割集就称为前馈割 集。 对于 1,等价的说法就是零延时最长路径决定了架构的速度,也就是关键路径。对于 2,在 初步认识的示例中, 的确是通过在架构中插入流水线寄存器从而缩短了关键路径长度, 由原 来的 2*TA 变为 TA,缩短一半。但是要注意,如果想通过插入流水线寄存器的方法来缩短 关键路径,那插入的位置就要恰当,必须保证流水线寄存器出现在关键路径的某些边上。众 所周知,关键路径上的边必须是零延时的,如果在关键路径的某些边上插入流水线寄存器, 那么这条关键路径将被这些流水线寄存器斩断成若干段, 架构中新的关键路径肯定小于等于 旧的关键路径。之所以有“等于” ,是那么一种情况,如果流水线寄存器不是插入到关键路 径的某条边上,那原始关键路径没有被斩断,架构的关键路径长度不变。还有另一种情况, 在一个架构中, 存在多条等长的关键路径, 流水线寄存器只斩断其中一些, 还有一些没斩断, 那么架构的关键路径长度还是不变。 反过来说, 流水线寄存器要插入到能斩断所有关键路径 的边上才能缩短关键路径长度。 总之,插入流水线就是想斩断原始的所有关键路径,以得到更短的关键路径。那么插入流水 线寄存器, 是不是指随便在某些边上加入延时就行了呢?不是的, 要想保证架构的功能不变, 必须按照规定的法则进行流水线寄存器的插入。 看第 3 个口诀: 流水线寄存器只能按照穿过 任一图的前馈割集的方式插入。 --------------------------------------- 我们先把割集和前馈割集弄清楚------------------------------------割集是一个连通图的边的集合, 如果从图中移去割集中所包含的边, 该连通图就会成为 “两个”不相连的连通子图。首先割集中的边要足够多,多到只要移去割集中的边,就能把 原来的一个连通图变为两个孤立的连通子图。其次,割集中的边要足够少,少到只要少移去 一条割集中的边,就得不到不相连的两个连通子图(注:割集的严格定义可以参考图论方面 的书籍) 。这里要明白一点,割集中的边是充分的但不多余,恰好可使一个连通图变为两个
题外话:课本以 3 阶 FIR 滤波器为例介绍流水线,帖子中我们不用这个例子,留给大家自 己去分析。 这样流水线一节就有两个示例分析可以帮助你理解和掌握它。 大家看书切记盲从, 应该与实际结合起来进行思考, 又时书上的一些说法是不太恰当, 我想主要是由于文字表达 的问题,而不是作者的水平有问题。说实在的,只有真正用心的人才能听得懂作者要说的意 思。这本书的很多技术都是作者千辛万苦从 N 多文献中总结出来的,疏忽之处在所难免, 但如果没有这本书,你想深入掌握这些本事,可能得自己去看好多文章,有时都不知从何下 手,不论如何,谢谢这个印度老儿 Keshab K.Parhi。
不相通的连通子图,如下图二的几个示例:
A
C
A
C
A
C
B a)
D
B b)
D
B c)
D
图二、割集示例:a)割集;b)不是割集,不充分;c)不是割集,多余了
图二 a)是割集,边不多也不少;b)不是割集,如果多加 A->B 的边就是了;c)也不是割集, 多了 B->C 的边。 如果指定割线方向,如图三所示,每条割线(红色虚线)都有一个方向。如果割集中的 边都在割线的同一侧,那么该割集成为单向割集,比如图三 a)和 c);反之,割集中的边不 全在割线同一侧,则称该割集为双向割集,如图三 b)。课本上说流水线寄存器只能在前馈 割集上插入,其实有些不恰当,应该是在单向割集上插入。
(0)
为
(1)
(1)
(2)
(0)
I
+
+
*
O
,长度为 TA+TA+TM=4u.t. 。列
出图四 b)DFG 的一些单向割集如图五所示。
+ I
a)
+ + * O I
b)
+ * +
O
+ I
c)
+ *
O
I
d)
+ *
O
图五、四种可能的单向割集
图五 a)的割集不算斩断有效关键路径, 因为决定关键路径长度的是两个加法节点和一个乘法 节点,而 a)只是将一个计算时间为 0u.t. 的输入节点从关键路径是去掉而已;b)斩断有效关键 路径,新的关键路径为 I++或者是*O,长度均为 2*TA=TM=2u.t. ;c)和 a)类似,不算斩断关 键路径, 仅仅是把计算时间为 0u.t. 的输出节点从关键路径上去掉而已; d)斩断有效关键路径, 新的关键路径为+*O,长度为 TA+TM=3u.t.。比较上述的四种流水线插入,b)的插入最有效, 可以使得关键路径缩短到 2u.t. ,次之是 d)的插入,关键路径缩短到 3u.t. ,而 a)和 d)属于无 效的流水线插入。 练习:对图五,还能找出其它能作为流水线插入的单向割集吗? 对于图五的示例,如果进行两次流水线插入,也就是先进行 b)再进行 d),可得如下结
第三章、打怪抢宝之流水与并行 喜欢玩魔兽的朋友都知道,游戏的前期,不论是基地、士兵或是英雄都是很弱的,此 时英雄主要带领小兵到处去打怪练级,同时抢些小小的宝物。这一章的任务就是打怪抢宝, 而流水与并行就是两个小小的宝物。称其为“小小的宝物”是恰当的,因为从第四章到第七 章,将会隆重推出四件上古之神器:1)重定时、2)展开、3)折叠和 4)脉动。这四个神 器相对于流水与并行这两个小小宝物那可谓神通广大。实际上,流水就是重定时的特例,而 并行又是展开的特例。
+ I
D
构
D D
D
+
D
O
D
*
,虽然关键路径只剩一条*O(只进行 b)的话,
就有两条:I++和*O) ,但是关键路径长度仍然为 TM=2u.t. ,看起来第二次的流水线插入 d)
并没有起到作用,因为它只斩断了 I++这条关键路径,还剩另一条等长的关键路径*O 没被 斩断,而且*O 似乎也没办法斩断了。 下面我们要介绍的细粒度流水线将可以解决*O 没法斩断的问题。仔细分析新的关键路 径*O,如果乘法节点能拆分,比如拆成两个部分,分别为节点*1 和节点*2,且两个节点计 算时间相等都为 1u.t. ,也就是原始乘法节点的一半,如图六 a),那么可以再次插入一级流 水线(红色割线所示) ,就可以斩断乘法节点,从而得到关键路径长度为 1u.t. 的“终极”细 粒度流水架构如图六 b)所示。