第十章安腾高性能处理机体系结构 返回.

Slides:



Advertisements
Similar presentations
阻塞操作. 在 linux 里,一个等待队列由一个 wait_queue_head_t 类型的结构来描述 等待队列的初始化: static wait_queue_head_t testqueue; init_waitqueue_head(&testqueue);
Advertisements

信息技术:硬件、软件、网络、数据库 计算机技术、多媒体技术、压缩技术...
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
2017年3月5日 单片机原理与应用 背景知识调查.
第十章 安腾高性能处理机体系结构 高性能处理机体系结构的演变 安腾体系结构的基本设计思想 安腾指令系统结构 指令级并行机制
实用操作系统概念 张惠娟 副教授 1.
第三章 计算机核心部件及其 工作原理.
计算机组成原理 第二十一讲 计算机科学与技术学院 舒燕君.
基于解释性语言的手机跨平台架构 Sloan Yi. Qt MTK.
Oracle数据库 Oracle 子程序.
在PHP和MYSQL中实现完美的中文显示
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
Hadoop I/O By ShiChaojie.
存储系统.
走进编程 程序的顺序结构(二).
8.1 CPU 的结构 8.3 指令流水 8.2 指令周期 8.4 中断系统.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
Windows网络操作系统管理 ——Windows Server 2008 R2.
Windows网络操作系统管理 ——Windows Server 2008 R2.
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
以ISI平台为例,为您演示一下如何在Endnote文献中查看该文献的References
本节内容 模拟线程切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
逆向工程-汇编语言
数据挖掘工具性能比较.
CPU结构和功能.
中国科学技术大学计算机系 陈香兰(0551- ) Spring 2009
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
Instructions: Language of the Machine
2.1.2 空间中直线与直线 之间的位置关系.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
内容摘要 ■ 课程概述 ■ 教学安排 ■ 什么是操作系统? ■ 为什么学习操作系统? ■ 如何学习操作系统? ■ 操作系统实例
C语言程序设计 主讲教师:陆幼利.
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
微机系统的组成.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月13日.
实验七 安全FTP服务器实验 2019/4/28.
工业机器人知识要点解析 (ABB机器人) 主讲人:王老师
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
解决“最后1公里”问题.
实验三 16位算术逻辑运算实验 不带进位控制的算术运算 置AR=1: 设置开关CN 1 不带进位 0 带进位运算;
本节内容 内存复制指令 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
iSIGHT 基本培训 使用 Excel的栅栏问题
第八章 总线技术 8.1 概述 8.2 局部总线 8.3 系统总线 8.4 通信总线.
数据报分片.
College of Computer Science & Technology
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
魏新宇 MATLAB/Simulink 与控制系统仿真 魏新宇
微机原理与接口技术 ——8086微处理器 西安邮电大学 计算机学院 范琳.
临界区问题的硬件指令解决方案 (Synchronization Hardware)
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Python 环境搭建 基于Anaconda和VSCode.
3. 逻辑运算指令 A、简单逻辑操作指令 CLR A. (不影响CY、AC、 OV标志) CPL A
本节内容 Windows线程切换_时钟中断切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
Google的云计算 分布式锁服务Chubby.
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本底对汞原子第一激发能测量的影响 钱振宇
WEB程序设计技术 数据库操作.
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第四章 UNIX文件系统.
第十七讲 密码执行(1).
第十二讲 密码执行(上).
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
入侵检测技术 大连理工大学软件学院 毕玲.
Presentation transcript:

第十章安腾高性能处理机体系结构 返回

第十章安腾高性能处理机体系结构 高性能处理机体系结构的演变 安腾体系结构的基本设计思想 安腾指令系统结构 指令级并行机制 双核安腾处理机的组成

10.1高性能处理机体系结构的演变 一、IA体系结构的历史演变 二、英特尔64位处理机的两种体系结构

10.1高性能处理机体系结构的演变 一、IA体系结构的历史演变 IA32体系结构:IA32家族中的第一款32位微处理机流水技术 IA32体系结构仍是基于CISC架构的处理机。 Pentium体系结构:CISC外壳加RISC内核的结构

10.1高性能处理机体系结构的演变 二、英特尔64位处理机的两种体系结构 1、64T(英特尔64):基于显式并行指令计算EPIC(Explicitly Parallel Instruction Computing)技术的IA64体系结构,不与IA32指令系统的兼容性。 2、安腾体系结构:与IA32指令系统的兼容性。

10.2安腾体系结构的基本设计思想 安腾体系结构脱离了IA32 CISC体系结构的束缚,但并没有完全照搬RISC处理机的设计思想。EPIC既不是RISC,也不是CISC,而是一种吸收了CISC和RISC两者长处的全新的体系结构。主要体现在以下几个方面: 显式并行指令计算(EPIC)技术 超长指令字(VLIW)技术 分支推断技术 推测技术 软件流水技术 寄存器堆栈技术

10.2安腾体系结构的基本设计思想 1、显式并行指令计算(EPIC)技术 安腾的指令中设计了属性字段,用于指明哪些指令可以并行执行。这些属性信息并不是在指令执行过程中由处理机判定后获得的,而是由编译程序在编译时通过对源代码的分析获取指令级的并行性信息,并填写到执行代码中。这就是所谓显式并行的概念。 EPIC技术则充分利用现代编译程序强大的对程序执行过程的调度能力,由专用的EPIC编译器首先分析源代码,根据指令之间的依赖关系最大限度地挖掘指令级的并行性,从而确定哪些指令可以并行执行,然后把并行指令放在一起并重新排序,提取并调度其指令级的并行,并将这种并行性通过属性字段“显式”地告知指令执行部件。

10.2安腾体系结构的基本设计思想 2、超长指令字(VLIW)技术 超长指令字(VLIW)技术是提高计算机系统并行性的有效手段。VLIW系统中指令字长可多达几百位,编译器经过优化,能将多条能够并行执行的指令合并成一个具有多个操作码的超长指令字,控制多个独立的功能部件工作。 EPIC是基于超长指令字的设计。 通过将多条指令放入一个超长指令字,能有效提高处理机内各个执行部件的利用率。

10.2安腾体系结构的基本设计思想 3、分支推断技术 技术能将传统的“ifthenelse”分支结构转变为无分支的顺序/并行代码,以避免由于错误预测分支而付出代价。当处理机在运行中遇到分支时,它并不是进行传统的分支预测并选择可能性最大的一个分支执行,而是按分支的所有可能的后续路径开始并行执行多段代码并暂存各段代码的执行结果,直到处理机能够确认分支转移与否的条件是真是假时,处理机再把应该选择的路径上的指令执行结果保留下来。 采用了推断技术后,原有的转移指令被转换成条件执行指令。原有的转移指令的所有的分支都被并行执行,无论哪条分支将被命中,都不会出现流水线断流现象,故消除了因分支预测失误而重新装载流水线导致的低效率现象。更进一步,以前由于程序分支和指令依赖等因素不能并行执行的许多指令现在完全可以并行执行,从而提高了处理机的执行效率。 在传统的RISC流水线中,一旦遇到分支转移指令,必须预测转移成功与否,并据此填充指令流水线。当预测正确时,流水线的工作状态与顺序程序的流水执行相同。但在预测失败的情况下,流水线上后续的指令与数据都将作废,流水线将会断流,这将严重影响指令执行的效率。但任何预测算法都不可能保证分支预测的正确率达到100%,所以分支转移是影响流水线上机器性能的一个非常重要的问题。

10.2安腾体系结构的基本设计思想 4、推测技术 推测技术,包括控制推测和数据推测,以减少存储器访问响应时间的影响。 控制推测技术和数据推测技术允许提前执行从内存单元至通用寄存器的取数指令。当程序中有分支时,控制推测技术将位于分支指令之后的取数指令提前若干周期执行,以此消除访存延时,提高指令执行的并行度。而数据推测技术则用于解决提前取数指令后的数据相关性问题。 推测技术避免了cache命中失败而导致访存延迟的损失,消除了因处理机空闲而导致的并行性降低的缺憾。 存储器响应时间是影响处理机性能的瓶颈之一。传统的处理机在访问cache失败时往往由于等待访存读取指令字和操作数而被迫暂停执行指令。在并行调度的情况下,每个周期处理的指令和数据越多,访存延时造成的处理机资源空闲现象就越严重。如果能提前预测未来将执行哪几条指令并将相应的指令字装入流水线,在需要使用数据之前提前将所需的数据从存储器加载至处理机内部,就可以消除处理机等待访存的时间。

10.2安腾体系结构的基本设计思想 5、软件流水技术 安腾体系结构提供了很强的硬件支持,使循环执行过程中一次循环的代码执行与下一次循环代码的执行在时间上部分重叠,也即下一个循环步可以在上一个循环步结束前开始执行。 安腾体系结构引入了新机制来支持软件流水,包括自动寄存器重命名、推断执行和特殊的循环终止指令。因此,安腾处理机能够通过旋转寄存器机制为每个循环步提供自己的寄存器,并且不需要把循环扩展开来。 安腾体系结构中硬件对编译器管理软件流水线的支持使得编译器能够生成精简的代码,以高度并行的方式实现循环操作。 在指令的执行过程中,重复执行同一段代码的循环操作应用非常普遍。由于循环代码通常要执行多次,故循环操作往往会占用相当长的执行时间。因此,提高循环操作中指令执行的并行性将有可能显著提高系统性能。

10.2安腾体系结构的基本设计思想 6、寄存器堆栈技术 安腾处理机利用128个通用寄存器中的96个堆栈寄存器实现寄存器堆栈,并在处理机内部设置一个寄存器堆栈引擎RSE来管理寄存器堆栈。当96个堆栈寄存器不够用时,寄存器堆栈引擎能够自动将寄存器堆栈与内存储器对接,将寄存器堆栈溢出的数据转移到内存储器中保存,或在寄存器堆栈弹出数据时执行反向操作。这样,编译器将看到一个容量没有限制的寄存器堆栈空间。 在传统的RISC和CISC体系结构中,当处理机执行子程序调用指令时,需要将返回的断点地址以及许多通用数据寄存器的内容压入存储器堆栈保存,并利用堆栈进行参数传递;而处理机执行子程序返回指令时,又要将这些数据弹出。由于这些操作需要访问内存,所以要消耗相当长的时间。而安腾处理机硬件设置了大量的编译器可见的通用寄存器,并且将大量寄存器组织成寄存器堆栈,供子程序调用和返回时使用,因而可以大大降低子程序调用的开销。

10.3安腾指令系统结构 一、执行单元与指令类型 为提高并行处理能力,安腾处理机内部设置了多个执行单元。这些执行单元被分为四类: I单元:整数执行单元,用于执行整数算术运算、逻辑运算、移位和比特处理等指令,以及32位数据和指针操作。 M单元:存储器执行单元,用于执行通用寄存器、浮点寄存器和存储器之间的取数(load)指令、存数(store)指令以及某些整数ALU运算指令。 B单元:转移执行单元,用于执行转移分支类指令。 F单元:浮点执行单元,用于执行浮点运算指令。 相应地,安腾指令系统中的所有指令被分成六种类型,每种指令使用一种或多种执行单元。

10.3安腾指令系统结构 二、安腾寄存器结构 与RISC体系结构类似,安腾体系结构大量使用寄存器操作;见下一页图 只有取数load和存数store指令才能够访问内存,所有其他指令都在寄存器上操作。 在以安腾为基础的处理机内,用户可直接使用的寄存器数量甚至大大超过了主流RISC处理机。 一方面可以加快数据存取的速度,减少访存延迟,另一方面可以更好地支持并行操作。

安腾的主要寄存器

10.3安腾指令系统结构 三、安腾指令格式 典型指令格式:安腾的每条指令占41位。 对于寄存器操作数,需要7位选择128个通用寄存器或浮点寄存器。故一条典型的RRR型安腾指令需要21位来标识两个源寄存器操作数和一个目标寄存器操作数。 大多数指令还需要一个6位字段选择64个推断寄存器之一,用于支持推断执行、软件流水等功能。 指令束格式 安腾体系结构采用超长指令字技术,利用集束指令合成;

10.3安腾指令系统结构 指令组 指令束模版 指令组将相互之间没有读后写相关,写后写相关,可以并行执行的一组指令集合。 模版字段正是为实现EPIC的设计思想服务的:一方面,编译器可以通过5位模版字段指明每个指令槽中的指令使用哪一个执行单元;另一方面,编译器可以通过模板字段明确给出指令束内或指令束间的依赖关系。

10.3安腾指令系统结构 四、安腾汇编语言格式 [qp]Mnemonic[. Comp1][. Comp2] dest=src

例1:下面给出一些汇编指令 ①add rl=r2,r3 //简单指令:r2+r3=>r1 ②(P4)add rl=r2,r3 //推断指令,指定推断寄存器4 ③add r1=r2,r3, //立即寻址指令 ④cmpeq P3,P5=0,r4 //带指令完成符的指令:将r4寄存器的值与0比较,若相等则置推断寄存器P3为1,P5为0;否则置推断寄存器P3为0,P5为1 ⑤ld8 r1=[r7] //从寄存器r7指向的存储器空间读取连续8个字节,装入寄存器r1 add r6=r9,r8; //与上一条指令不存在相关性,故可放在一个指令组中 sub r3=r1,r4 //第一条指令的目标操作数是本指令的源操作数,故需重新开始一个指令组 st8 [r6]=r10 //将寄存器r10的内容存入寄存器r6指向的存储器单元

10.4指令级并行机制 一、推断执行技术 1、分支对系统性能的影响 分支是在两个指令序列中根据判定条件选择其中一个序列执行。为了判定最终选择哪一个指令序列执行,必须等待一些条件判断指令的执行结果。 指令执行一旦遇到分支转移,在执行判定操作之前,多个功能部件由于无法确定程序的执行方向而空闲等待,使系统性能明显下降。 分支预测并不能充分利用处理机流水线的功能部件 以一个典型的“if〈条件〉then…else…”判定执行结构为例,只有在执行了对〈条件〉的判定之后,才能选择执行then路径还是else路径。现代的高性能处理机广泛采用指令流水线和超标量体系结构。指令执行一旦遇到分支转移,在执行判定操作之前,多个功能部件由于无法确定程序的执行方向而空闲等待,使系统性能明显下降。在传统流水线体系结构中,解决这一问题的办法是使用转移预测,也即根据系统预测的条件指令执行的结果,选择可能性最大的分支加载指令流,并提前执行这一分支的指令流。而条件分支的预测不可能百分之百正确,一旦预测选择了错误的分支,提前执行的指令全部无效,指令队列也必须重新排空,多个执行部件必须延迟等待加载正确分支的指令流。因此,分支预测并不能充分利用处理机流水线的功能部件。

10.4指令级并行机制 2、安腾的推断技术原理 推断技术处理分支的方法是利用多个功能部件并行执行各个分支,然后根据判定结果选取某一分支的运行结果,因而可消除大部分的转移,使得整个系统的运行速度得到提高。 采用显式并行指令计算技术的安腾处理机将处理机的多个功能部件的并行处理能力与编译器的强大功能相结合,允许在编译时让编译器对程序进行优化,消除转移,提高效率。 安腾处理机的指令系统允许在每条指令中都指定一个推断寄存器。

10.4指令级并行机制 3、推断执行的实现 例2考察下面的一个典型的if-then-else结构: If (x=0) then m=m+1 else m=m-1 在传统的超标量流水线体系结构中,完成上述判断通常要首先安排一条比较语句,将x与0进行比较。得到比较结果后,再选择执行then分支或else分支。 相应的汇编语句大致如下所示: cmp x,0;比较x和0 je L1;若相等则转移至标号L1 sub m,1;m=m-1 jmp L2;无条件转移至标号L2 L1:add m,1;m=m+l L2:

10.4指令级并行机制例2续 而安腾处理机可以通过编译优化消除条件语句中的分支指令,将该结构转化成顺序的推测执行结构: ①cmpeq P1,P2=0,x;//无条件执行:将r4寄存器的值与0比较,若相等则置推断寄存器P1为1,P2为0,否则置推断寄存器P1为0,P2为1 ②(P1)add m=1,m //若P1为1,则m+1送m ③(P2)add m=-1,m //若P2为1,则m-1送m 从判定流程上,似乎上面的三条语句并没有从逻辑上改变if-then-else结构的执行过程。但如果我们能够把这个例子和安腾体系结构结合起来,还是可以从这个简单的例子中体会到安腾处理机的设计思想。

10.4指令级并行机制 4、安腾处理机设计思想 首先,安腾指令系统中的每条指令都能够支持推断执行,所以第二条指令和第三条指令中的条件判断并不需要使用专门的判断指令。虽然后面两条指令是条件执行的,但整体条件判断结构不再需要分支指令。 其次,指令中的推断操作的安排是由编译器在编译过程中完成的,不需要处理机在执行指令的非常短的时间内动态安排各条指令的条件执行。 最后,每条指令中虽然可以指定推断寄存器,但取指令、指令译码和执行操作并不需要等到推断寄存器的取值确定后再进行。 下面可以看一下传统流水线与安腾处理机比较。 正是因为如此,第二条指令和第三条指令可以并行执行,确切地说是并行完成取指令、指令译码和运算操作。但指令的执行结果则需要等到推断寄存器的值确定后才保存。因此,第二条指令的m+1操作和第三条指令的m-1=m+(-1)操作的取指、译码和运算过程可以先行进行,但将运算的结果赋值给m则需要等到P1和P2推断寄存器的取值确定之后。因此,传统处理机分支执行的流水线断流现象在安腾处理机中完全可以避免。

传统流水线与安腾处理机比较

10.4指令级并行机制 二、推测技术 1、存储器访问延迟与指令级并行 在现代计算机体系结构中,多级存储体系能够有效提高存储系统的性能价格比。但是,在多个功能单元实现并行处理的处理机中,执行指令的速度仍然受到存储器访问速度的制约。 现代RISC处理机用专用指令访问内存,取数指令往往成为影响处理机性能的瓶颈。见下图看一下取数指令对处理机并行执行指令的影响。

取数指令对处理机并行执行指令的影响 给出的实例显示了取数指令对处理机并行执行指令的影响。现利用具有四个并行执行单元的超标量处理机完成如下的指令序列: ①load(a)//从内存单元取数至寄存器a ②k=k+1 ③i=i-1 ④n=n+3 ⑤q=q+a 假设所有的算术运算指令可以在一个时钟周期中完成,而访存指令需要三个时钟周期。前四条指令可以分别安排在四个执行单元中并行执行。如果load指令所要访问的内存单元并没有被调入cache,那么load指令直接访问内存需要三个时钟周期才能执行完毕。而第五条指令依赖于load指令取得的操作数,所以在执行第五条指令之前需要等待两个时钟周期,从而所有的执行单元都必须闲置两个时钟周期,这就大大降低了执行效率。

10.4指令级并行机制 解决处理机访存延迟的办法就是将访存操作尽可能提前执行。 2、控制推测 解决处理机访存延迟的办法就是将访存操作尽可能提前执行。 在安腾处理机中,控制推测技术用于解决上述与取数指令有关的控制相关问题。 解决处理机访存延迟的办法就是将访存操作尽可能提前执行。编译器可以重组代码执行顺序,将取数指令提前至不会延迟其他指令执行的位置。但这种提前存在风险,因为上一小节讨论的推断执行技术并不能完全消除分支。如果取数指令原本处于某个分支中,若将该取数指令提前至分支指令之前,而该分支最终没有被选中执行,那么提前执行的取数指令反而会增加访存延迟。这不仅是因为执行不必要的取数指令本身会浪费时间,而且还包括取数指令所引起的额外时间浪费。后者是指取数指令可能会由于无效地址或页面错误等异常情况迫使处理机进入中断服务程序,从而大大增加延迟时间。 在安腾处理机中,控制推测技术用于解决上述与取数指令有关的控制相关问题。

10.4指令级并行机制 3、数据推测 控制推测技术能够解决分支和取数操作中的控制相关,但在指令优化过程中还可能存在数据相关。

【例3】考察下面包含分支与取数指令的程序段: if(r3=0) then r2=r2+1 else r1=[r3] 其功能是判断指针寄存器r3的值是否为零:若是则将寄存器r2加1;否则将r3指向的内存单元的内容加载到寄存器r1中。其原始汇编代码如下: ①cmp.eq P1,P2=0,r3;//无条件执行:将r3寄存器的值与0比较,若相等则置推断寄存器P1为1,P2为0,否则置推断寄存器P1为0,P2为1 ②(P1) add r2=1,r2 //若P1为1,则r2+1送r2 ③(P2)ld8 r1=[r3]//若P2为1,则以r3的内容为地址访存.,8字节操作数被加载至寄存器r1.为了减少访存延迟,希望将第3条取数指令提前至第1条指令的前面,或是更早的位置。但第3条指令是推断执行的,其实际结果只有在P2为真的情况下才会被真正存储。如果第3条指令固执行错误而引起异常处理,但最后发现该取数指令实际上并不需要执行,那么将浪费大量时间。

安腾体系结构采用的控制推测技术对此的解决方案 由编译器将一条取数指令分解为两条指令: (1)推测取数指令(loads),可以提前到适当位置先期执行取数操作,但如果需要进行异常处理时,并不真正调用操作系统的异常处理例程,而仅仅设置一个与被装入寄存器相关联的标志。这一标志就是每个通用寄存器中64位以外的延迟异常标记(NaT)位。 (2)推测检查指令chks), 安排在原来的取数指令位置,也即真正使用数据之前的位置。chks指令检查被装入的寄存器的延迟异常标记位:如果有未被执行的异常处理,则转入异常处理程序;否则,处理机将loads指令的执行结果保存,并继续执行下一条指令。

【例4】按照上面的处理方式,安腾的编译器将对例3的汇编代码进行优化 ①1d8.S r1=[r3]//以r3内容为地址访存,推测加载寄存器r1 ②……//加载指令被提前若干个周期 ③cmp.eq P1,P2=0,r3;//无条件执行:将r3寄存器的值与0比较,若相等则置推断寄存器P1为1,P2为0,否则置推断寄存器P1为0,P2为1 ④(P1) add r2=1,r2 //若P1为1,则r2+l送r2 ⑤(P2) chk.S r1.err_recov //若P2为1,则检查r1寄存器的NaT标记,若NaT=1,则转入err_recov例程,若NaT=0,则保存[r3]到r1

【例5】研究下面的程序段 ①add r5=4,r0; ②st4[r7]=r5; / /将r5的值存入r7指向的内存单元 ③ld4 r2=[r8];//以r8的内容为地址访存,加载寄存器r2 ④add r6=r2,r5 //r6=r2+r5 其中第4条指令需要使用第3条指令取数的结果。为了减少访存延迟,编译器可以将第3条指令提前到第1条指令之前。但这样做的风险是,假如当前寄存器r8的值和r7的值相等,则意味着第三条取数指令和第二条存数指令访问的是同一个内存单元。而把取数指令提前到存数指令之前将使取数指令得到存数之前的值,而不是程序原意要使用的存数指令执行之后的取值。因此,在传统体系结构中,如果编译器不能确定存数和取数的目标地址是否相同(例如在上例中使用指针访存的情况),则存数指令之后的取数指令将不能被移到存数指令之前.

安腾处理机采用数据推测技术 解决上述问题。与控制推测技术的解决办法类似,由编译器将一条取数指令分解为两条指令: (1)高级取数指令(loada),可以提前到适当位置先期执行取数操作,但该指令执行时除了从给定的内存单元取数据之外,还将被访问的内存单元的地址登记到一个名为高级取数地址表(ALAT)的硬件数据结构中。该地址表中保存了所有已经被取数指令访问过、且未被存数指令修改过的内存单元的地址、相应的寄存器以及存取数据的字节数。安腾的所有存数指令在执行时均会根据存数的目标内存地址检索该地址表,如果检索到地址匹配,则从地址表中删除该地址。 (2)取数检查指令(load c), 安排在原来的取数指令位置,也即真正使用数据之前的位置。该指令执行时将检索高级取数地址表,以便确认在高级取数指令执行后、取数检查指令执行前是否有任何指令修改了高级取数指令访问过的内存单元:如果检索到匹配项,则说明没有任何指令修改过高级取数指令访问过的内存单元,取数检查指令不再执行其他操作;如果检索不成功,则取数检查指令重新执行一次取数操作,以便加载到最新的数据。

例6按照上面的处理方式,安腾的编译器将对例5的汇编代码进行优化: ①ld4.a r2=[r8] //高级取数, //以r8的内容为地址访存 ②add r5=4,r0; ③st4[r7]=r5 //将r5的值存入r7 //指向的内存单元 ④ld4.c r2=[r8]; //检查以r8为指针的寄存器 // r2加载操作 ⑤add r6=r2,r5 //r6=r2+r5

10.5双核安腾处理机的组成 一、双核安腾处理机的基本特性 1、并行处理技术 2、显式并行指令计算技术 3、超线程技术 4、三级大容量高速缓冲存储器 5、硬件辅助虚拟化技术 6、高速缓存安全技术

虚拟化技术 所谓虚拟化,是指用单个处理机模拟多个处理机并行工作,而每个处理机都可以被看作一个独立的工作环境,从而在一个平台上同时运行多个操作系统,并且每一个操作系统中都有多个程序运行。应用程序在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。 返回

超线程技术1/2 在双核安腾处理机中,英特尔首次把在奔腾4处理机中采用的超线程(Hyper Threading)技术引进到安腾处理器家族中,每个处理机支持四个线程,使其能够处理的应用线程数是早期单核产品的四倍。 返回

超线程技术2/2 超线程技术在一颗处理机芯片内设计多个逻辑上的处理机内核,这些逻辑上的内核共享处理机内的整数运算单元、浮点运算单元和二级cache等资源,但却被模拟成多个物理内核芯片。从软件的角度看,系统中好像存在多个独立的处理机内核,因而可以让单个处理机在线程级实现并行计算,支持多线程的操作系统和应用软件。但核心硬件资源实际上只有一套,故当多个线程同时访问某一个资源时,其中一个线程要暂时停止并让出资源,直到这些资源闲置后才能继续执行。 返回

10.5双核安腾处理机的组成 二、双核安腾处理机的组织结构 1、指令执行单元 2、处理机流水线 3、cache组织 4、双核仲裁 返回

双核安腾处理机流水线 显示了安腾处理机的八级内核流水线结构。流水线每个时钟周期可以执行最多6条指令。前两个流水级构成前端,执行取指令操作IPG,指令指针生成,并将指令送入指令旋转级(ROT)的去耦缓冲器。扩展流水级(EXP)实现指令分派,REN级实现寄存器重命名。寄存器读操作级(REG)完成提交操作码操作,在这一级访问寄存器文件并在处理完推断控制后通过旁路网络提交数据。最后三级实现宽并行执行EXE、异常管理(DET)和写回WRB操作。其中异常检测级实现分支解析、存储器异常管理和推测等功能。 返回

双核仲裁器的方框图 双核安腾处理机配置了两个独立的处理机内核,但两个内核之间必须相互协同工作。两个内核通过一个仲裁器连接到系统接口。仲裁器向每个内核提供低延迟的传输路径,以便对系统事件做出响应。 返回

本 章 小 结 英特尔和惠普合作开发了取代IA32体系结构的64位安腾体系结构。安腾计算机体系结构是64位高性能计算环境中的主流体系结构之一。这一体系结构吸收了以往的先进处理机体系结构的优点,通过提高指令执行的并行性,增强了系统整体的计算性能。 安腾体系结构的核心是显式并行指令计算(EPIC)技术。通过精心设计的基于超长指令字技术的指令系统,EPIC编译器能够把在编译过程中发现的并行性显式地传递给处理机。与传统的基于超标量流水技术的处理机相比,处理机在运行时不需要在很短的时间内迅速确定一组指令中的并行执行关系,而是充分利用编译器的强大功能,因而这种设计技术既简化了处理机设计,又保证了很高的指令级并行性。 返回

本 章 小 结 安腾体系结构支持多种指令级并行技术,如推断执行、控制推测和数据推测。 推断技术将传统的if-then-else分支结构转换成条件执行指令。处理机按分支的所有可能的后续路径开始并行执行多段代码并暂存各段代码的执行结果,直到处理机能够确认决定分支转移与否的条件是真是假时,处理机再把应该选择的路径上的指令执行结果保留下来。因此无论哪条分支将被命中,都不会出现流水线断流现象,故消除了因分支预测失误而重新装载流水线导致的低效率现象。 返回

本 章 小 结 传统的处理机在访问cache失败时往往由于等待访存读取指令字和操作数而被迫暂停执行指令。安腾体系结构使用推测技术减少存储器访问响应时间。当程序中有分支时,控制推测技术将位于分支指令之后的取数指令提前执行,并在分支之后再进行确认,以此消除访存延时。而数据推测技术则用于解决提前取数指令后的数据相关性问题。 作为安腾体系结构的最新实现,双核安腾处理机把安腾体系结构所依赖的显式并行指令计算、推断、推测等技术与经典的超线程、多级高速缓冲存储器等技术相结合,显著提高了处理机的并行运算速度。 返回