高性能计算机的体系结构与程序优化

合集下载

高性能计算中的并行计算模型及其特点分析

高性能计算中的并行计算模型及其特点分析

高性能计算中的并行计算模型及其特点分析高性能计算(High-Performance Computing,HPC)是指利用大规模的计算机集群或并行计算机体系结构,通过并行处理技术和优化算法,实现大规模科学计算、复杂数据分析和模拟实验的能力。

在高性能计算中,使用并行计算模型可以提高计算效率和性能,并实现更快速的计算任务处理。

本文将对几种常见的并行计算模型进行分析,并讨论它们的特点。

1. SIMD并行计算模型单指令多数据(SIMD,Single Instruction Multiple Data)是一种并行计算模型,它通过并行执行多个相同指令,在多个数据上同时操作。

SIMD在数据并行性较高的任务中表现出色,如图像处理、信号处理等。

SIMD计算模型的特点是数据并行性强,计算过程中的每个指令会同时作用于多个数据元素。

它可以提高性能,减少资源的浪费。

然而,其缺点是程序设计较为复杂,需要在编程时手动实现并行指令。

2. MIMD并行计算模型多指令多数据(MIMD,Multiple Instruction Multiple Data)是一种并行计算模型,它通过在多个处理单元上执行多个独立的指令,同时处理不同的数据。

MIMD广泛应用于科学计算、仿真模拟等领域。

MIMD计算模型的特点是每个处理单元都独立执行指令,并且可以在不同的数据上进行操作。

这种模型适用于任务之间的数据依赖较弱的情况。

与SIMD相比,MIMD具有更好的灵活性和扩展性,但也会引入更多的通信和同步开销。

3. SPMD并行计算模型单程序多数据(SPMD,Single Program Multiple Data)是一种并行计算模型,它使用多个处理单元执行相同的程序,但处理不同的数据。

SPMD广泛用于科学计算、并行编程和并行算法设计等领域。

SPMD计算模型的特点是多个处理单元以相同的方式执行同一个程序,但每个处理单元可以有不同的数据输入。

它弥补了MIMD模型中通信和同步的不足,并提供了更好的可扩展性和负载均衡性。

计算机体系结构优化方法

计算机体系结构优化方法

计算机体系结构优化方法随着科技的不断发展和计算机应用范围的不断扩大,人们对于计算机性能的需求也越来越高。

计算机体系结构是计算机硬件与软件之间的桥梁,它的设计和优化对提高计算机性能至关重要。

本文将介绍几种常见的计算机体系结构优化方法。

一、流水线技术流水线技术是一种可以同时执行多个指令的技术,它能够充分利用计算机硬件资源,提高计算机的执行效率。

在流水线技术中,计算机的处理过程被划分为多个阶段,每个阶段执行不同的指令。

通过将多个指令交错执行,可以大幅度提高计算机的吞吐量。

同时,流水线技术还能降低处理器的时钟周期,提高计算机的工作频率。

二、超标量技术超标量技术是一种可以同时执行多条指令的技术,它可以通过在一个时钟周期内执行多个指令来提高计算机的执行效率。

在超标量技术中,计算机可以同时从指令流中提取多个指令并执行,而不是依次执行指令。

通过并行执行多条指令,超标量技术可以显著提高计算机的性能。

为了实现超标量执行,计算机需要有多个功能单元和多个寄存器,以支持多条指令的并行执行。

三、向量处理器技术向量处理器技术是一种可以同时处理多个数据元素的技术,它能够将一条指令应用于多个数据元素,从而提高计算机的处理速度。

在向量处理器技术中,计算机可以将多个数据元素存储在向量寄存器中,并通过单条指令同时对多个数据元素进行操作。

与传统的标量处理器相比,向量处理器可以在一个时钟周期内执行更多的计算操作,从而提高计算机的性能。

目前,向量处理器技术已经广泛用于科学计算、图形处理等领域。

四、并行计算技术并行计算技术是一种通过同时使用多个处理器来执行任务的技术,它能够显著提高计算机的计算速度。

在并行计算技术中,计算机可以将一个任务分解成多个子任务,并由多个处理器并行执行。

通过充分利用多个处理器的计算能力,计算机可以在更短的时间内完成任务。

并行计算技术在科学计算、数据分析等领域有着广泛的应用。

结论计算机体系结构优化方法的发展,不仅可以提高计算机的性能和效率,还可以推动计算机技术的发展和进步。

计算机体系结构

计算机体系结构

计算机体系结构计算机体系结构是指计算机硬件和软件之间的接口、数据传输和运行机制的组织结构。

它决定了计算机系统的性能、可扩展性、可靠性和安全性。

计算机体系结构的设计是计算机科学和工程领域的核心问题之一,它直接影响到计算机的性能和能力。

一、概述计算机体系结构是计算机科学中一个重要的概念,它包括计算机的硬件和软件部分。

计算机硬件包括中央处理器(CPU)、内存、输入输出设备等,而计算机软件则包括操作系统、编译器、应用程序等。

计算机体系结构通过定义指令集架构、存储架构和总线结构等,来决定计算机系统的基本工作原理和功能。

二、指令集架构指令集架构是计算机体系结构的核心部分,它定义了计算机处理器所支持的指令集和指令执行方式。

常见的指令集架构有精简指令集(RISC)和复杂指令集(CISC)两种。

RISC架构采用简化的指令集和固定长度的指令格式,以提高指令执行的效率和速度;而CISC架构则支持更复杂的指令和灵活的地址模式,以提供更强大的功能和灵活性。

三、存储架构存储架构是计算机体系结构中的另一个核心要素,它定义了计算机系统中各种存储器的组织方式和访问机制。

存储器可以分为主存储器(RAM)和辅助存储器(硬盘、固态硬盘等)。

存储架构涉及到存储器的位宽、存储单元的地址和数据传输方式等问题。

不同的存储架构可以影响计算机的内存访问速度和容量。

四、总线结构总线结构是计算机体系结构中用于数据传输和通信的重要组成部分。

它定义了计算机系统中各种硬件组件之间的连接方式和数据传输的规范。

总线结构可以分为系统总线、数据总线和控制总线等不同的层次。

它决定了计算机系统中各个部件之间数据传输的带宽和速度。

五、并行处理并行处理是指利用多个处理器或处理核心同时执行多个任务,以提高计算机系统的性能和并发能力。

计算机体系结构中的并行处理包括指令级并行和线程级并行两种形式。

指令级并行通过同时执行多条指令来提高处理器的效率;线程级并行则利用多个线程并行执行任务,以提高整个系统的吞吐量。

计算机体系结构

计算机体系结构

计算机体系结构计算机体系结构是指计算机硬件与软件之间的结构和组织方式,包括计算机系统的层次、组件之间的连接方式、数据流以及控制流等。

它是计算机科学中的一个重要概念,对于理解计算机工作原理和优化计算机性能具有重要意义。

一、引言计算机体系结构是计算机科学领域中一项关键内容。

它关注计算机硬件和软件之间的交互和组织方式,是计算机系统设计的基础。

本文将介绍计算机体系结构的基本概念、组成以及它对计算机性能的影响。

二、计算机体系结构的基本概念1. 冯·诺依曼体系结构冯·诺依曼体系结构是计算机体系结构的基础,提出了程序存储器和数据存储器的概念,启发了后来计算机的设计思想。

在冯·诺依曼体系结构中,程序和数据被存储在同一块内存中,通过控制器实现程序和数据的读写。

2. 分布式体系结构分布式体系结构是一种多台计算机相互协作的体系结构,每台计算机具有独立的处理能力,通过通信网络进行数据交换和协作。

分布式体系结构具有高可靠性、高性能和可扩展性等优势,广泛应用于大规模计算和数据处理领域。

3. 多核体系结构多核体系结构是一种将多个处理核心集成到单个芯片上的体系结构。

多核体系结构有助于提高计算机的处理性能和并发能力,适用于并行计算和多任务处理。

三、计算机体系结构的组成1. 中央处理器(CPU)中央处理器是计算机体系结构的核心组件,负责执行计算机指令和控制计算机的工作流程。

它包括算术逻辑单元(ALU)、控制单元(CU)和寄存器等。

2. 存储器存储器用于存储计算机的程序和数据,分为主存储器和辅助存储器。

主存储器包括随机存取存储器(RAM)和只读存储器(ROM),辅助存储器包括硬盘、光盘和闪存等。

3. 输入输出设备输入输出设备用于与计算机进行信息交互,包括键盘、鼠标、打印机、显示器等。

它们通过输入输出控制器与计算机系统进行数据交换。

四、计算机体系结构的影响因素1. 性能计算机体系结构直接关系到计算机的性能。

计算机体系结构中的指令调度优化研究

计算机体系结构中的指令调度优化研究

计算机体系结构中的指令调度优化研究一、引言计算机体系结构是计算机硬件和软件共同组成的一种计算模型,对于计算机的性能和效率有着至关重要的影响。

其中,指令调度优化是体系结构中的一个关键领域,它旨在通过合理地组织和调度指令,以最大程度地提高计算机的执行效率和性能。

二、指令调度优化的意义指令调度优化可以有效地提高计算机的乱序执行能力,减少指令之间的依赖关系,从而提高指令级并行度,加快运行速度。

通过合理的指令调度优化,可以更好地利用计算机的硬件资源,提高系统整体的效率和性能。

三、指令调度优化的方法1. 静态指令调度优化静态指令调度优化是在编译器阶段进行的优化,通过对程序代码进行分析和重组,将那些容易并行执行的指令放在一起执行,从而减少指令之间的依赖,提高并行性。

这种方法可以通过程序的数据流分析和代码变换技术来实现。

2. 动态指令调度优化动态指令调度优化是在运行时进行的优化,通过对程序代码的动态分析,根据计算机当前的状态和执行情况来决定指令的调度顺序。

这种方法可以根据实时执行的情况来进行调度,可以更加精准地适应当前的运行环境。

四、指令调度优化的挑战指令调度优化在提高计算机性能的同时也面临着一些挑战。

首先,指令调度优化需要分析和处理大量的指令和数据依赖关系,这对计算机的处理能力和内存带宽提出了较高的要求。

其次,在动态指令调度优化中,需要对程序的运行状态进行实时监测和分析,这对计算机的性能和能耗也提出了一定的要求。

五、指令调度优化的应用领域指令调度优化在各种计算领域有着广泛的应用。

例如,在科学计算和仿真中,通过对指令的调度优化可以加速计算过程,提高运行效率。

在嵌入式系统和移动设备中,通过指令调度优化可以减少功耗,延长电池续航时间。

在云计算和大数据领域,通过指令调度优化可以提高并行计算的效率,加速数据处理过程。

六、指令调度优化的发展趋势随着计算机技术的不断发展,指令调度优化也在不断演进。

未来的发展趋势包括更加精细的指令调度优化算法和策略,更加智能和自适应的动态调度方法,以及与新兴技术的结合,如人工智能和量子计算等。

计算机体系结构作业答案(高性能)

计算机体系结构作业答案(高性能)
经过一级反相器和两级传输门传输门的输入到输出延迟就是传输门源到漏或漏到源的时间参考传输门晶体管结构105052ns观察如上图所示的触发器结构图在c1cn0时前级传输门打开d端数据进入n1打破n1和n2之间的反相器环强制将n1处状态改成与d端相同n2处状态改为与d端相反反相器环维持新的状态由于后级传输门关断n2处状态无法传播到n3cn1时前级传输门关闭d端数据无法影响触发器内部状态而后级传输门打开触发器状态则通过n3n4输出同时n3和n4间反相器环状态也被打破更改为与n2相符当下一个c1cn0关闭后级传输门时n3和n4间反相器环仍能保持状态并驱动q建立时间指的是在时钟触发沿此题为下降沿到来之前数据d端必须稳定的时间
2
第二讲:二进制与逻辑电路
9. 定点数的表示 a) 分别给出 64 位定点原码和补码表示的数的范围。 解:[-2 , 2 -1] b) 在 32 位定点补码表示中,0x80000000 表示什么数? 解:-2
31 63 63
10. 浮点数的表示 a) 把单精度数转化为十进制数:0x7ff0000, 0xbe400000, 0xff800000 解 : 0x7ff0000=0,0000 1111,111 1111 0000 0000 0000 0000=(1.1111111)2*2 3.8368135610839464260099560574934e-34 0xbe400000=1,0111 1100,100 0000 0000 0000 0000=-(1.1)2*2 0xff800000=1,1111 1111,000 0000 0000 0000 0000=-∞ b) 把双精度数转化为十进制数:0x4035000000000000, 0x8008000000000000 解 : 0x4035000000000000=0,10000000011,0101000000000000000000000000000000000000 000000000000=(1.0101)2*2 0x8008000000000000 =

计算机体系结构性能优化方法

计算机体系结构性能优化方法

计算机体系结构性能优化方法在计算机体系结构的发展过程中,性能优化是一个至关重要的环节。

性能优化是指在保持计算机系统硬件和软件功能的前提下,提高其计算速度、响应时间、资源利用率和可靠性等方面的手段和措施。

本文将介绍一些常见的计算机体系结构性能优化方法。

一、并行计算并行计算是通过将一个任务拆分为多个子任务,然后将这些子任务分配给多个处理器同时执行的方法。

它可以充分利用多核处理器的并行计算能力,提高计算吞吐量和并发能力。

在并行计算中,需要注意任务的划分和调度,合理安排任务的调度顺序和负载均衡,以充分发挥并行计算的优势。

二、指令级并行指令级并行是通过同时执行多条指令来提高计算机的性能。

它包括指令并发和流水线技术。

指令并发是指在同一时钟周期内并行执行多条指令,充分利用处理器的执行单元。

流水线技术是指将指令的执行过程划分为多个阶段,使多条指令在不同阶段同时执行,以提高指令的吞吐量。

三、存储器层次结构优化存储器层次结构是计算机存储器的组织方式。

在性能优化中,存储器的访问速度是一个关键因素。

通过合理设计存储器的层次结构,如缓存技术、预取技术和虚拟存储器技术,可以提高存储器的访问速度和命中率,减少访问延迟,从而提高计算机的性能。

四、并行I/O优化在大规模数据处理和并行计算中,I/O操作成为性能瓶颈。

通过采用并行I/O技术,可以同时进行多个I/O操作,提高数据传输的速度和并发能力。

在并行I/O优化中,还可以使用缓冲区和预读取技术来提高I/O性能,减少CPU等待时间。

五、负载均衡优化负载均衡是指将任务合理分配给多个处理器,使得各个处理器的负载均衡,提高系统的整体性能。

在负载均衡优化中,需要考虑任务的复杂度和执行时间,采用任务分配算法和调度算法来实现任务的均衡分配。

六、优化算法和数据结构优化算法和数据结构是计算机程序设计的关键。

通过优选算法和数据结构,可以提高程序的效率和性能。

在实际应用中,可以使用一些常见的优化算法,如贪心算法、分治算法和动态规划算法,以及高效的数据结构,如哈希表和平衡二叉树,来优化计算机的性能。

计算机体系结构基本概念

计算机体系结构基本概念

计算机体系结构基本概念计算机体系结构是指计算机系统中的各个组成部分之间的关系和交互方式。

它是计算机硬件与软件之间的接口,决定了计算机系统的工作方式、性能表现以及可扩展性。

本文将介绍计算机体系结构的基本概念和相关内容。

一、计算机体系结构的概述计算机体系结构是指计算机系统的结构组织,包括硬件和软件。

主要由计算机硬件、指令系统、运算方式和数据流组成。

计算机体系结构的目标是提供高性能、可靠性、可扩展性和高效能的计算机系统。

计算机体系结构的设计通常以指令集架构和微架构为基础。

二、指令集架构指令集架构是计算机体系结构中的一个重要概念。

它定义了计算机系统处理信息的方式。

指令集架构包括计算机的指令集、寄存器、数据类型和地址模式等。

根据指令集的不同,可以将计算机体系结构分为复杂指令集计算机(CISC)和精简指令集计算机(RISC)。

三、微架构微架构是指计算机体系结构的实现方式。

它包括处理器的内部结构、数据通路、控制流和存储相关的电路设计。

微架构的设计影响着计算机系统的性能和功能。

常见的微架构包括超标量、乱序执行和流水线等。

四、存储结构与存储器层级存储结构是指计算机系统中用于存储数据的层次结构。

存储器层级分为寄存器、高速缓存、内存和辅助存储器等。

不同层级的存储器具有不同的特点,如容量、速度和价格等。

存储结构的设计旨在提高计算机系统的访问速度和运行效率。

五、总线结构总线结构是计算机体系结构中连接各个组件的通信系统。

它包括地址总线、数据总线和控制总线等。

总线结构的设计影响着计算机系统的数据传输速度和可扩展性。

六、并行处理与多核技术并行处理是指多个处理器或计算单元同时执行指令,提高计算机系统的运行速度和性能。

多核技术则是将多个处理核心集成到同一个芯片上,实现并行运算。

并行处理和多核技术在高性能计算、科学计算和图像处理等领域得到广泛应用。

七、虚拟化技术虚拟化技术是指通过软件将计算机资源抽象为多个逻辑实体,实现多个操作系统和应用程序的隔离和共享。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

寄存器的使用
• • • • • • for ( k=0;k<10;k++) { for (j=0;j<1000;j++) 执行运算过程B; } 运算过程B的大小也是我们必须考虑的。如果B过大, CPU内部寄存器的压力就会很大,如果寄存器的数量 不足以保存B中出现的所有数据,可能会出现颠簸的现 象,刚刚从寄存器中换出的数据也许就是下一个需要 的数据,还得重新读入寄存器,这对效率显然是有影 响的。解决的办法是将循环体过大的循环拆分成若干 循环体较小的循环,这种方法叫做循环分布,循环体 拆分的粒度是以寄存器数量的多少为参考的。
• 技术方面的缺点需要通过结构来弥补 • DRAM慢,SRAM小=》存储器层次结构
– 体系结构方面的革新
• 各个级别上并行性的开发
• 如何支持编程?
– 共享内存 – 承担一些软件较难完成的优化工作
• 如动态执行, 猜测执行, COMA等
三种类型的体系结构技术
• 保守的结构
– 硬件仅提供必需的设施, 如大量的寄存器 – 高性能能否最终达到, 完全依赖软件
指令调度的例子
假设:取数时间较长,后续指令不能立即使用 源程序语句:a = b + c; d = e - f; a, b, c, d ,e, f 都在存储器中. Slow code: Fast code: LW Rb,b LW Rb,b LW Rc,c LW Rc,c ADD Ra,Rb,Rc LW Re,e SW a,Ra ADD Ra,Rb,Rc LW Re,e LW Rf,f LW Rf,f SW a,Ra SUB Rd,Re,Rf SUB Rd,Re,Rf SW d,Rd SW d,Rd
寄存器的使用
• 寄存器的使用基本上是可以控制的
– 在汇编子程序里完全可以控制 – 在C语言里用register说明用得最多的变量
• 需要考虑CPU内通用寄存器和浮点寄存器的数量
– 编译程序在生成代码前,会进行寄存器分配
• 程序设计与优化时,可考虑寄存器利用
– 最内层循环体不宜过长,寄存器会不够用 – 循环展开的次数不能太多
• 折衷的结构
– 硬件做一些动态的优化, 如高速缓存 – 软件仍有优化的余地
• 包揽式的结构
– 硬件试图做充分的动态优化, 如COMA – 认为软件在动态分析和优化方面能力有限
结点内并行:超长指令字结构
• 芯片面积主要用于功能部件和高速缓存
– 完全依赖编译程序开发指令级并行性
• 分支预测, 循环展开, 软件流水, 踪迹调度
更一般的形式
• 原始循环
DO 10 I = 1, N B(I) = A(I) * A(I) 10 C(I) = 1 / B(I)
• 进一步优化
DO 10 I = 1, N, 3 B(I) = A(I) * A(I) B(I+1)=A(I+1)*A(I+1) B(I+2)=A(I+2)*A(I+2) C(I) = 1 / B(I) C(I+1) = 1 / B(I+1) 10 C(I+2) = 1 / B(I+2)
运算顺序的调整
• • • • • • • • • 如下例所示: b[0]=a[0]*a[0]; c[0]=1/b[0]; b[1]=a[1]*a[1]; c[1]=1/b[1]; b[2]=a[2]*a[2]; c[2]=1/b[2]; …… 是求一系列数的平方的倒数的操作。虽然因为 c[0] 紧接着 b[0] 计算,让计算的内在含义更明显,也更 符合通常的思维习惯,但对于流水线来说效率极令流,同时执行多条指令
– 在分析区间内,指令以数据流的方式执行 – 弥补编译器在静态分析和调度方面的不足 – 换代后目标码不重新编译也能获得较好的性能
• 需要发掘指令级并行性的新来源
– 精确的动态分支预测,消除分支损耗 – 设置大量换名寄存器,消除虚假的数据依赖 – 不等分支完成,就开始执行目标指令(猜测) – 同时执行分支的多个目标(多标量)
性能不仅依赖于结构
• 性能的提高依赖于体系结构上的革新
– 硬件技术的发展对体系结构提出了新的要求 – 各个层次并行性的开发是新体系结构的主要特征
• 实际性能的提高更依赖于体系结构与编译技 术、操作系统、应用算法间的配合与协调
– Architectural Support for Programming Languages and Operating Systems, Since 1988
– 指令系统结构不兼容
• 显式并行指令结构(EPIC)
– Explicitly Parallel Instruction Computer – 128位的Group包括3条指令 – 设置专门的域指示指令间是否存在依赖关系 – 可连接多个Group以支持更大范围内的并行
结点内并行:同时多线程结构
• 由硬件提供快速的上下文切换机制
• 体系结构是硬件和系统软件之间的界面
– Enable High Performance – Support Ease Programming
• 编程模型是应用和计算机系统间的界面
– 理想的模型: 应用不必了解具体的结构特征
体系结构的主要研究内容
• 如何提高性能?
– 先进的工艺技术--纯粹属于硬件的范围?
• • • • • • • • • • 形式B: for(k=0;k<10;k++){ for(j=0;j<1000;j++) 执行运算过程B1; } for(k=0;k<10;k++){ for(j=0;j<1000;j++) 执行运算过程B2; } 形式A比较符合人们的习惯思维方式,形式B对 循环的拆分更彻底,更加有利于并行执行。
运算顺序的调整
• • • • • • • • • 现在变动如下: b[0]=a[0]*a[0]; b[1]=a[1]*a[1]; b[2]=a[2]*a[2]; …… c[0]=1/b[0]; c[1]=1/b[1]; c[2]=1/b[2]; …… 调整以后,先是整个的把 数组b[]计算出来,然后再 计算数组c[],此时,需要 的b[]数组中的数据都已经 计算出来了,就不会存在 流水线停滞的问题。
应用程序员可以做什么?
• 仔细地研究编译器的优化功能和选项
– -O2, -O3, -finline-functions, -funroll-loops
• 充分利用已经优化过的库函数
– 如BLAS等 – 如果可能,找或编适合自己需要的高效率库
• 做一些源程序级的优化
– 最典型的一种优化:循环展开 – 为编译程序的优化提供更多的机会
发挥CPU内并行性的主要手段
• 编译程序:静态指令调度
– 分析程序中的指令流 – 在不影响结果的前提下,对指令重新排序 – 缺点:不能获得运行时的动态信息 – 改进:基于profile的指令调度或优化
• 硬件:超标量、动态指令调度
– 由专用硬件检查即将执行的一段指令 – 挑选出源操作数和功能部件都已齐备的指令 – 缺点:硬件会变得很复杂、降低时钟频率
高性能计算机的 体系结构与程序优化
提纲
• • • • • • 应用编程与体系结构的关系 高性能计算机体系结构概述 CPU内的并行结构(指令级并行) 存储器的层次结构 多体交叉的并行存储系统 分布存储系统中的通信优化
体系结构的位置
Programming Models Architecture Applications System Software Hardware
循环展开的例子
• 展开前的代码 DO 10 I = 1, N 10 Y(I) = A*X(I) + Y(I) • 这是一种常见的写法 • 循环体里包含的运算 量较小(1加、1乘) • 循环控制意味着转移 • 如果CPU一拍能做4 个浮点运算,这个循 环的性能就不高了 • 展开4次后的代码 DO 10 I = 1,N,4 Y(I)=A*X(I)+Y(I) Y(I+1)=A*X(I+1)+Y(I+1) Y(I+2)=A*X(I+2)+Y(I+2) 10 Y(I+3)=A*X(I+3)+Y(I+3)
存储层次发挥作用的基本原理
• 程序的访存局部性(locality)
– 时间局部性:最近访问的,将来还要访问 – 空间局部性:访问了A,则要访问A的近邻
• 局部性使快速存储区的内容多次被访问
– 比喻:80%的时间花在20%的代码上
• 工作集:最近程序集中访问的地址空间
– 调整程序结构,使工作集小于cache容量
– 全系统的查找需大量时间
存储器的供数率跟得上吗?
• CPU消耗数据的速率远大于存储器供数率
– 时钟频率增长的速度大于访存时间缩短的速度 – 同时执行多条指令要求供数率进一步提高 – 多线程或芯片内多处理器要求访问多组数据
• 已知的解决方案:存储器层次结构
– 片内cache的供数率能满足指令级并行的要求? – 片内cache的命中率足够高? – 为多个线程或处理器提供各自的cache? – 如何通过程序或算法的改进增强访存局部性?
– 引入了更多的指令级和线程级并行性 – 容忍远程访问延迟和数据依赖的负面影响
• 多个上下文之间的切换机制
– 发生事件时切换(有点象进程的切换) – 每个时钟周期都切换: 每次取不同线程的指令
• 多个线程的指令在同一流水线中(无依赖)
• 第一个多线程系统(Tera)已经问世
– 多线程同时工作对cache干扰很大
• 优化后的循环
DO 10 I = 1, N 10 B(I) = A(I) * A(I) DO 20 I = 1, N 20 C(I) = 1 / B(I)
相关文档
最新文档