指令级流水指令级并行
三门定律解析

三门定律解析
三门定律是由美国数学家John von Neumann提出的概念,指的是计算机科学领域中的三个重要原则。
这些原则用于评估和优化计算机系统中的性能和效率。
1.指令级并行(Instruction-Level Parallelism):这个原则指的是在执行指令时,同时利用多种处理器资源。
它包括了指令流水线、超标量和超流水线等技术。
指令级并行性可以加快计算机处理速度,通过同时执行多条指令来提高效率。
2.数据级并行(Data-Level Parallelism):这个原则关注的是同时处理多个数据元素的能力。
它包括向量处理、多处理器系统等技术。
通过同时处理多个数据,可以提高计算机系统的效率。
3.任务级并行(Task-Level Parallelism):这个原则指的是同时处理多个独立的任务或者进程。
它包括了多线程、分布式系统等技术。
任务级并行性可以提高系统的吞吐量,使得计算机能够同时处理多个任务。
三门定律强调了并行性在计算机系统中的重要性。
它们代表了不同层次上的并行化原则,通过同时处理多个指令、数据或任务来提高计算机系统的效率和性能。
然而,并行化也面临着一些挑战,比如资源竞争、数据一致性等问题需要被有效地解决。
计算机指令流水线回顾

计算机指令流水线回顾计算机指令流水线是一种高效的指令执行技术,旨在提高计算机的运行速度。
在本文中,我们将回顾计算机指令流水线的基本原理、优点和局限性,并提供相关题库类型的答案和解析。
一、引言计算机指令流水线是一种并行处理技术,它允许多个指令同时在不同的处理阶段执行,以提高指令执行的速度和效率。
本节将介绍计算机指令流水线的定义和基本原理。
二、计算机指令流水线的原理计算机指令流水线是基于指令执行的并行处理技术。
它将一条指令的执行划分为多个阶段,并且允许多个指令同时在不同的阶段执行。
下面是计算机指令流水线的基本原理:1. 指令划分阶段:将一条指令划分为多个独立且可执行的子指令。
2. 指令执行阶段:每个子指令在不同的处理阶段执行,例如指令提取、指令解码、操作数获取等。
3. 管道寄存器:用于在不同的阶段之间传递数据和指令。
4. 阶段并行执行:多个指令在不同的阶段同时执行,实现指令级并行。
5. 超标量流水线:同时执行多条指令。
三、计算机指令流水线的优点计算机指令流水线相较于传统的顺序执行方式,具有以下优点:1. 提高吞吐量:通过并行执行多条指令,大大提高了计算机的吞吐量。
2. 提高运行速度:指令流水线的并行执行能够加快指令的执行速度,提高计算机的运行效率。
3. 提高资源利用率:指令流水线可以充分利用计算机的硬件资源,使处理器单元始终保持繁忙状态。
四、计算机指令流水线的局限性虽然计算机指令流水线有很多优点,但也存在一些局限性:1. 指令依赖:由于指令之间存在数据或控制依赖关系,可能导致流水线的暂停或冲突,进而影响指令的执行速度和效率。
2. 硬件成本:为了实现指令流水线,需要增加硬件资源和复杂的控制电路,导致成本的增加。
3. 分支预测错误:分支指令的预测错误或错误的预测会导致流水线的中断和重组。
五、题库类型答案与解析在计算机指令流水线的相关题库中,我们可以通过以下方式给出答案与解析:1. 填空题:要求填写与指令流水线相关的概念、原理或术语。
MIPS指令五级流水CPU设计剖析

MIPS指令五级流水CPU设计剖析MIPS指令五级流水CPU设计是一种高性能的处理器设计架构,它将指令的执行过程拆分为五个阶段,并且在每个阶段中可以同时处理多条指令,实现了指令级并行处理。
在这种设计中,分别是取指(Instruction Fetch)、译码(Instruction Decode)、执行(Execute)、访存(Memory Access)和写回(Write Back)这五个阶段。
在MIPS指令五级流水CPU设计中,首先是取指(Instruction Fetch)阶段,这是整个处理器开始处理一条指令的阶段。
在这个阶段,处理器从指令存储器中读取即将执行的指令,并将其送入流水线中。
这个阶段还会包括对指令地址的计算和异常处理的操作。
当一条指令流入流水线后,处理器就会进行下一个阶段的操作。
接下来是译码(Instruction Decode)阶段,这个阶段主要是将取到的指令进行解码,确定指令的操作类型和需要操作的寄存器等信息。
在这个阶段,会根据指令的不同分支到不同的功能单元中处理。
同时还会识别指令之间的数据相关性,以便在后续阶段进行相应的控制。
第三个阶段是执行(Execute)阶段,在这个阶段,CPU执行指令的操作,进行算数运算或逻辑运算,或者进行跳转等控制操作。
在这个阶段,CPU还将从寄存器文件中读取数据,并进行相应的运算。
这个阶段涉及到的计算量比较大,所以需要比较多的时钟周期来完成。
接下来是访存(Memory Access)阶段,这个阶段主要是处理访问数据内存的操作,比如从数据内存中读取数据,或将结果写入数据内存等。
在这个阶段,处理器还会涉及到访存相关的操作,比如缓存机制的处理等。
这个阶段的操作通常是比较高速的存储器操作。
最后是写回(Write Back)阶段,这个阶段是处理器的最后一个阶段,处理器将执行结果写回到寄存器文件中,或进行其他相关的操作。
这个阶段可以认为是指令执行的结束阶段,对前面四个阶段产生的结果进行最终的处理。
精品文档-计算机组成与系统结构(裘雪红)-第7章

第7章 流水线技术与指令级并行
41
从时-空图中可以看到,当流水线被启动后,需要经过一个 启动阶段流水管道才能被充满,这个启动阶段所用时间称为通
过时间(或填充时间)。在理想的情况下, 通过时间= (流水线级数-1)×时钟周期 (7-2)
在通过时间之后,流水线达到稳定而被充分利用,并且每个时 钟周期输出一个新的结果。
第7章 流水线技术与指令级并行
35
2. 增加指令流水线条数 以Intel微处理器为例,80486及之前的x86微处理器中只有
一条指令流水线,程序中的所有指令都是通过这唯一的指令流 水线来执行的。而在Pentium处理器中设置了两条指令 流水线,分别叫U指令流水线(主流水线)和V指令流水线(副流水
线)。每个流水线都拥有自己的算术逻辑运算部件ALU、地址生 成逻辑以及与数据Cache的接口。U指令流水线可以执行所有的 指令,而V指令流水线只能执行简单的指令。
当选择截断法时,舍弃部分自然丢弃,所以不需要任何舍入处 理操作或电路。
第7章 流水线技术与指令级并行
15
图 7.6 IBM System 360/91的浮点加/减法单元
第7章 流水线技术与指令级并行
16
图 7.7 浮点加/减法单元的流水线结构
第7章 流水线技术与指令级并行
17
7.2.2 浮点乘除运算流水线
所以
(7-11)
第7章 流水线技术与指令级并行
54
对于指令流水线而言,当加速比S作为指令数n的函数时, 则理论上有
(7-12) 当加速比S作为指令流水线级数m的函数时,则理论上有
(7-13)
第7章 流水线技术与指令级并行
55
指令级并行的概念

目 录
• 指令级并行简介 • 指令级并行技术 • 指令级并行应用场景 • 指令级并行面临的挑战与解决方案 • 指令级并行未来展望
01
指令级并行简介
定义与特点
定义
指令级并行是指计算机在执行程序时, 通过同时执行多个指令来提高处理速 度的一种并行处理技术。
特点
指令级并行主要依赖于处理器中的指 令流水线,通过并行执行多个指令, 实现处理速度的提升。
详细描述
超线程技术允许在一个物理处理器核心上同时运行多个线程,从而实现指令级的 并行处理。通过精细的调度和管理,超线程技术可以有效地利用处理器资源,提 高处理器的整体性能。
VLIW(Very Long Instruction Word)技术
总结词
VLIW技术是一种将多个操作码和操作数组合到一个长指令中,由处理器一次执行的方法。
VS
详细描述
EPIC技术强调在编译阶段对程序进行并 行化处理,通过分析程序中的指令关系和 数据依赖关系,自动地生成并行执行的代 码。EPIC技术的目标是最大化处理器的 并行执行能力,从而提高程序的执行效率 。
03
指令级并行应用场景
科学计算
科学计算是利用计算机进行大规模数值计算以解决科学研究 和工程领域中的复杂问题。指令级并行技术可以提高科学计 算的效率和精度,例如在气候模拟、流体动力学模拟、物理 模拟等领域的应用。
指令缓存失效问题
指令缓存失效问题
由于指令的执行结果可能被缓存在缓存中, 当指令并行执行时,缓存失效可能导致指令 重新读取数据,从而影响并行执行的效率。
解决方案
通过缓存行对齐技术,将并行执行的指令对 齐到同一缓存行,以减少缓存失效的次数。 此外,可以使用写回策略来将指令的执行结
计算机体系结构性能优化方法

计算机体系结构性能优化方法在计算机体系结构的发展过程中,性能优化是一个至关重要的环节。
性能优化是指在保持计算机系统硬件和软件功能的前提下,提高其计算速度、响应时间、资源利用率和可靠性等方面的手段和措施。
本文将介绍一些常见的计算机体系结构性能优化方法。
一、并行计算并行计算是通过将一个任务拆分为多个子任务,然后将这些子任务分配给多个处理器同时执行的方法。
它可以充分利用多核处理器的并行计算能力,提高计算吞吐量和并发能力。
在并行计算中,需要注意任务的划分和调度,合理安排任务的调度顺序和负载均衡,以充分发挥并行计算的优势。
二、指令级并行指令级并行是通过同时执行多条指令来提高计算机的性能。
它包括指令并发和流水线技术。
指令并发是指在同一时钟周期内并行执行多条指令,充分利用处理器的执行单元。
流水线技术是指将指令的执行过程划分为多个阶段,使多条指令在不同阶段同时执行,以提高指令的吞吐量。
三、存储器层次结构优化存储器层次结构是计算机存储器的组织方式。
在性能优化中,存储器的访问速度是一个关键因素。
通过合理设计存储器的层次结构,如缓存技术、预取技术和虚拟存储器技术,可以提高存储器的访问速度和命中率,减少访问延迟,从而提高计算机的性能。
四、并行I/O优化在大规模数据处理和并行计算中,I/O操作成为性能瓶颈。
通过采用并行I/O技术,可以同时进行多个I/O操作,提高数据传输的速度和并发能力。
在并行I/O优化中,还可以使用缓冲区和预读取技术来提高I/O性能,减少CPU等待时间。
五、负载均衡优化负载均衡是指将任务合理分配给多个处理器,使得各个处理器的负载均衡,提高系统的整体性能。
在负载均衡优化中,需要考虑任务的复杂度和执行时间,采用任务分配算法和调度算法来实现任务的均衡分配。
六、优化算法和数据结构优化算法和数据结构是计算机程序设计的关键。
通过优选算法和数据结构,可以提高程序的效率和性能。
在实际应用中,可以使用一些常见的优化算法,如贪心算法、分治算法和动态规划算法,以及高效的数据结构,如哈希表和平衡二叉树,来优化计算机的性能。
计算机组成原理专升本试题解析指令流水线与并行处理

计算机组成原理专升本试题解析指令流水线与并行处理计算机组成原理是计算机专业学生必修的一门基础课程,对于理解计算机的组成和工作原理非常重要。
在计算机组成原理的学习中,指令流水线与并行处理是一个重要的概念和技术。
本文将对指令流水线与并行处理进行详细解析。
一、指令流水线指令流水线是一种通过将处理器的执行过程划分为多个子阶段,并行执行这些子阶段来提高处理器性能的技术。
在指令流水线中,每个指令在执行的过程中经过取指令、译码、执行、访存和写回等多个阶段,不同指令在不同阶段同时执行,从而在单位时间内处理更多的指令。
指令流水线的优势在于充分利用了处理器的硬件资源,提高了指令的执行效率。
但是在实际应用中,由于指令间有数据依赖关系等问题,可能会导致流水线的阻塞和冒险,进而影响性能。
为了解决这些问题,人们提出了一系列的技术和策略,比如数据旁路、预测执行和乱序执行等,来提高指令流水线的性能。
二、并行处理并行处理是指通过同时执行多个任务来提高系统的处理能力和性能的技术。
在计算机组成原理中,主要涉及到的并行处理包括指令级并行和线程级并行。
指令级并行是通过在一个指令的执行过程中同时执行多个子指令来提高处理器性能的技术。
一种实现指令级并行的方法是超标量处理器,它能够在一个时钟周期内同时发射多条指令,并行执行这些指令。
另一种实现指令级并行的方法是超流水线处理器,它将处理器的执行流程进一步细分为多个较短的子阶段,以便更多地重叠执行。
线程级并行是通过同时处理多个线程来提高系统性能的技术。
在多核处理器和多线程处理器中,可以同时执行多个线程,从而实现线程级并行。
通过合理的线程调度和资源分配,可以充分利用处理器的硬件资源,提高系统的吞吐量和响应速度。
指令流水线和并行处理是计算机组成原理中的两个重要概念和技术,它们可以相互结合,共同提高计算机系统的性能。
指令流水线通过划分指令执行过程为多个子阶段并行执行,提高了指令的执行效率;而并行处理通过同时处理多个任务或线程,提高了系统的处理能力和性能。
单片机指令的并行执行技术

单片机指令的并行执行技术单片机指令的并行执行技术是一种提高单片机性能和效率的重要方法。
通过同时执行多个指令,可以大大加快程序运行速度,提高系统的响应能力。
本文将介绍单片机指令的并行执行技术以及其应用。
一、指令的并行执行原理指令的并行执行是指在一个时钟周期内同时执行多个指令。
实现指令的并行执行需要满足以下几个条件:1. 数据无相关性:同时执行的指令之间不能有数据相关性,即后续指令不依赖于前面指令的结果。
否则会导致数据错误。
2. 硬件支持:需要具备支持并行执行的硬件结构,包括有多个执行单元和数据通路。
基于以上原理,下面将介绍几种常见的单片机指令并行执行技术。
二、指令级并行执行技术指令级并行执行技术是指在一个时钟周期内同时执行多条指令的技术。
常见的指令级并行执行技术包括:1. 流水线技术:将指令执行过程分为多个阶段,每个阶段由不同的硬件执行,实现多个指令的同时执行。
比如Fetch(取指令)、Decode (解码)、Execute(执行)和Write Back(写回)等阶段。
2. 超标量技术:通过增加硬件资源,同时从指令存储器中提取多条指令并行执行。
不同于流水线技术,超标量技术可以并行执行多个指令的某个或全部阶段。
三、循环级并行执行技术循环级并行执行技术是指在一个循环中同时执行多条指令的技术。
常见的循环级并行执行技术包括:1. 向量处理器:通过并行处理多个数据元素来加速程序运行速度。
向量处理器可以一次性处理多个相同类型的指令,提高程序的执行效率。
2. SIMT技术:Single Instruction Multiple Thread,即单指令多线程技术。
通过将多个线程分配给不同的处理单元,实现多个线程的同时执行。
这种技术广泛应用于图形处理器(GPU)等领域。
四、应用领域指令的并行执行技术在多个领域都有广泛应用,特别是对于对计算能力要求较高的应用场景。
下面列举几个典型的应用领域:1. 数字信号处理(DSP):在音频和视频处理等领域,需要高效处理大量数据,指令的并行执行技术可以提高处理速度和实时性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机体系结构Report2指令级流水和指令级并行——永无休止的“完美”追求戚洪源目录一、性能瓶颈来源 (4)1、单周期、多周期MIPS结构性能瓶颈 (4)2、简单的五级流水MIPS性能瓶颈来源 (4)相关 (4)冲突 (5)二、突破瓶颈的可能性 (5)三、性能提升的具体方法 (6)1、简单的硬件实现方法 (6)定向技术 (6)投机 (6)2、基于软件(编译器)的静态调度方法 (7)预测分支 (7)3、软硬件结合的动态调度方法 (8)Tomasulo算法 (8)动态分支预测 (8)4、多指令流出 (9)基于静态调度的多流出技术 (9)基于动态调度的多流出技术 (9)超长指令字技术 (10)超流水线技术 (10)5、循环展开和指令调度 (10)四、总结 (10)摘要:有人说,如果计算机科学与技术是一座金字塔,位于塔尖的一定是高性能计算。
从计算机诞生至今,每一次进步都是对于计算机性能极限的一次刷新。
人类对于计算性能日益膨胀的需求,前沿科技对于高性能计算的考验,都促使这一领域不断发展。
单纯硬件技术上的改革是非常重要的:主频的提高、稳定的晶体管……但我们同样惊艳于并行技术在其中发挥的神奇的作用。
各种并行技术犹如催化剂一般,使提高计算机性能的进程大大加快。
这些技术的应用,不断挖掘着计算机潜在的性能,也让人类在一条追求“完美”的道路上不断前行。
何谓“完美”?这是一个看起来复杂实际上非常简单的问题。
“完美”,就是让计算机每一个部件每时每刻全负荷运作,发挥最高的性能。
看似简单,但却很难实现,也不可能实现。
并行技术的发展,也是追求“完美”的尝试。
然而程序“性本恶”,程序本身的许多特性为并行化带来了不小的麻烦。
我们其实是在和自己斗争。
“榨干计算机每一滴性能”,这是ASC15上浪潮集团首席科学家王恩东演讲时说的一句话。
在我看来,不论是指令级流水还是指令级并行,目的都是为了“榨干计算机每一滴性能”。
在这个过程中,出于需要又出现了一些非常特殊的结构上的支持。
本文将基于MIPS结构,通过对于性能瓶颈的来源、性能突破的可能性、性能提升的具体方法这三方面全面系统地阐述指令级流水和指令级并行的相关知识。
最后再提出一些感想。
在第一部分中,我们会讲述单周期到多周期再到流水线的发展过程,并对流水线的性能瓶颈进行具体分析。
在限制流水线性能的三个方面中,前两点只与硬件工艺有关,最后一点相关和冲突却可以通过许多技术来实现突破。
第二部分中,我们会继续讨论第一部分中提出的限制流水线性能的重要因素:相关和冲突。
这一部分,我们将从原理层面阐述突破这一瓶颈是可行的。
最后一部分,我们按照分类,具体阐述了多种提升性能的方法。
一、性能瓶颈来源这一部分将由简单到复杂,只提出限制性能的原因,不提出解决方案。
这一部分的讨论结果对后面的研究至关重要。
1、单周期、多周期MIPS结构性能瓶颈单周期和多周期最大的问题就是部件利用率不高。
将每一条指令的执行过程粒度化,我们可以发现:并不是每时每刻所有的部件都处于工作状态。
大多数时刻只有一个部件在工作。
这种浪费是非常可怕的,不能让其他部件都闲在那里等一个部件。
如果在同一时刻能让更多部件运行起来,性能一定会大大提高。
2、简单的五级流水MIPS性能瓶颈来源简单的五级流水是一种最基本的流水结构,在一定程度上解决了单周期和多周期部件空闲的问题。
然而,折中简单的五级流水结构并不是没有缺陷的。
一方面,如果在设计流水线的时候考虑不周全,使流水线各段不均匀,即有的段比别的段要长的多,这个段就成了瓶颈。
计算机的时钟周期取决于这个瓶颈段的延迟时间。
因此,在设计流水线式要尽可能使各段时间相等。
另一方面,由于流水寄存器延迟和时钟偏移开销,流水线增加了许多额外开销。
由于这些额外开销的存在,会使每条指令的执行时间有所增加。
这些开销也限制了流水级数的加深。
最后,也是最关键的,指令的相关和冲突。
当一个流水线设计完成后,上面的两种问题对使用流水线影响就不会太大了。
因为这些开销是现实存在的,不会消亡。
我们只能合理设计,提升工艺,尽量缩小它们对于流水线性能的影响。
但指令的相关和冲突,是确确实实限制流水性能的重大瓶颈!相关1、数据相关对于两条指令i(在前,下同)和j(在后,下同),如果下述条件之一成立,则称这两条指令数据相关。
i.指令j使用指令i产生的结果ii.指令j与指令k数据相关,而指令k又与指令i数据相关2、名相关当指令i与指令j出现如下两种情况,都属于名相关。
i.反相关。
如果指令j写的名与指令i读的名相同,则称指令i与指令j发生了反相关。
ii.输出相关。
如果指令j与指令i写的名相同,则指他们发生了输出相关。
名相关的两条指令之间并没有数据流动,只是使用了相同的名。
冲突1、结构冲突因硬件资源满足不了指令重叠执行的要求而发生的冲突。
如:当只有一个存储器时,存数和取指就会发生结构冲突。
2、数据冲突当指令重叠执行时,因需要用前面指令产生的结果而发生的冲突。
这其中又分为写后读冲突和写后写冲突。
其中写后读冲突只发生在这样的流水线中:流水线中不止一个段可以进行写操作。
3、控制冲突流水线遇到分支指令和其他会改变PC值的指令所引起的冲突。
总的来说,确定指令之间存在什么样的相关,对于确定程序中有多少并行性以及如何开发并行性具有重要的意义。
如果两条指令相关,它们就不可以并行执行,只能部分重叠执行。
冲突时针对具体的流水线来说的,由于相关的存在,使指令流中下一条指令不能在指定的时钟周期内执行。
相关是程序固有的一种属性,即“性本恶”,它反映了程序中指令相互依赖的关系。
而具体的一次相关是否会带来冲突以及会导致多长时间的停顿,则是由流水线自身决定的。
二、突破瓶颈的可能性自上世纪80年代中期以来,几乎所有的处理机都利用流水线来使指令重叠并行执行。
这种指令之间存在的潜在并行性成为指令级并行。
但上一个部分出现的问题,大多限制了指令级并行。
我们在这一部分首先概述开发并行性的可能性。
为下一部分的具体策略做铺垫。
程序的执行应当有自身的一个顺序。
但是这个顺序并不是一成不变的。
有些语句的调度并不会影响程序的执行结果,这也是我们可以进行指令调度的一个前提。
我们介绍的各种软硬件技术的目标是开发程序并行性,但同时也不能护士程序顺序执行的要求。
那么为了保证程序执行结果正确,我们必须保证程序的什么属性不受破坏呢?这两个属性就是数据流和异常行为。
保持异常行为是指无论怎么改变指令的执行顺序都不能改变程序中异常的发生情况。
而这两个特性经常被具体化为:如果能做到保证程序的数据相关和控制相关,就能保持程序的数据流和异常行为。
下面一个部分论述的所有技术,都是在保证程序的数据相关和控制相关的基础上,最大限度地开发程序的并行性。
三、性能提升的具体方法书上的第三章和第四章都提到了很多技术来提升流水线性能。
总的来说,第三章大多采用了基于软件的实现方法或者基于简单硬件的实现方法。
第四章主要讲解了较为复杂的软硬件结合的实现方法。
此外第四章还包括对于对指令流出和循环展开技术的介绍。
按照这种分类,我们来具体看一看提升性能1、简单的硬件实现方法定向技术定向技术是针对数据冲突的。
具体思想是:在某条指令产生结果前,其他指令并不是真正需要这条指令的计算结果,如果能将该计算结果从其产生的地方直接送到其他指令需要它的地方,那么就可以避免停顿了。
实现方式如下:●EX段和MEM段之间的流水寄存器中保存的ALU运算结果总是送回到ALU入口。
●当定向硬件检测到一个ALU运算结果写入的寄存器就是当前ALU操作的源寄存器时,那么控制逻辑就选择定向的数据作为ALU入口,而不采用通用寄存器读出来的值。
投机这是一种正对控制冲突的方法,在流水线中加入一个ALU部件,专门用来计算转移的地址。
使分支目的地址尽早得出。
这是一种硬件上的处理方法,在书中提到了。
2、基于软件(编译器)的静态调度方法编译器实现的指令调度为了减少停顿,对于无法用定向技术解决的数据冲突,可以通过在编译时让编译器重新组织指令执行顺序来消除冲突。
实际上,对于各种冲突都有可能用指令调度来解决。
这里的指令调度,通过编译器实现,具体实现方法不展开了。
预测分支当在译码段ID检测到分支指令时,如果流水不空等,而是预测分支的两条执行路径中的一条,继续处理后续指令,就可以体改分支指令的处理性能。
预测有两种选择,即预测分支成功或预测分支失败。
不管采用哪一种,都可以通过编译器来优化性能。
1)预测分支失败预测分支失败的方法就是沿失败的分支继续处理指令。
当确定分支是失败的,就把分支指令看成一条普通的指令;当确定分支是成功的,就把分支之后取出的所有指令转化为空操作,并按照目的地址重新取指执行。
2)预测分支成功基本与上述一致,但是有一个不同的地方:在没有投机的流水线中,转移地址和分支判断结果是同时得出的,这时候预测分支成功就没有意义了。
因此,预测分支成功要在投机的流水线中才可以使用。
3)延迟分支这种方法的主要思想就是在分支指令的后面加上几条指令,把它们看成一个整体。
不管分支是否成功,都要按照顺序执行这些指令。
这几条指令被称为指令槽。
放入延迟槽的指令是由编译器完成的,实际上延迟分支是否能带来好处完全取决于编译器能否把有用的指令调入延迟槽。
常用的调度策略有三种:从前调度,从目标处调度,从失败处调度。
上述的方法受两方面限制:一方面是可以被放入延迟槽中的指令要满足一定要求,另一个是编译器预测分支转移方向的能力。
3、软硬件结合的动态调度方法第三章中讨论的简单流水线有一个主要的局限性,即指令是按程序顺序流出和按序执行的。
如果某条指令在流水线中被停顿了,则后面所有的指令都将停止执行。
如果系统中有多个部件,这些部件可能会因为没有指令处理而处于空闲状态,系统效率低下。
动态调度可以实现多指令同时处于执行状态,可以最大限度地利用系统中每一个部件。
Tomasulo算法Tomasulo算法致力于解决程序的数据冲突,这个算法核心思想如下:●记录和检测指令相关,操作数一旦就绪立即执行,把发生RAW冲突的可能性降到最低。
●通过寄存器换名来消除WAR冲突和WAW冲突。
相比较于记分牌算法,它在硬件上增加了CDB总线、保留站等结构,但是它的记录表要比记分牌算法简单一些,并且无需等待写回后再调用,提高了执行速度(书112页开始介绍)。
动态分支预测与Tomasulo算法不同,虽同为动态调度方法,动态分支预测则主要解决控制冲突。
当所开发的指令级并行越多,控制相关的制约就越大,分支预测就需要有更高的精准度。
1)采用分支历史表BHTBHT是记录分支历史信息的表格,用于判定一条分支指令是否token;这儿记录的是跳转信息,简单点的,可以用1bit位记录,例如1表示跳转,0表示不跳转,而这个表格的索引是指令PC值;考虑在32位系统中,如果要记录完整32位的branch history,则需要4Gbit的存储器,这超出了系统提供的硬件支持能力;所以一般就用指令的后12位作为BHT表格的索引,这样用4Kbit的一个表格,就可以记录branch history了。