清华大学计算机科学与技术系高性能计算研究所 郑纬民 教授 2005年5月

Slides:



Advertisements
Similar presentations
《微型计算机技术 及应用》 ( 第 4 版) —— 戴梅萼 史嘉权. 目标 深刻理解 牢固掌握 灵活应用.
Advertisements

教员信息 姓 名:仲崇权 单 位:电子与信息工程学院 电 话: 办公室:创新院大厦720房间 :
Welcome to the world of Computer Organization 计算机组成原理
程序的执行 程序执行和指令执行概述 数据通路基本结构和工作原理 流水线方式下指令的执行
第 2 章 中央處理單元.
多核结构与程序设计 杨全胜 东南大学成贤学院计算机系.
第一章 多核概述 使用多核了吗? 摩尔定律——芯片的晶体管数量每一年半左右增长一倍。 处理器性能不断提高主要基于两个原因:
计算机基础 第一章 计算机基础知识 机电系计算机教研室
第五章 中央处理器 5.1 CPU的组成和功能 5.2 指令周期 5.3 时序产生器和控制方式 5.4 微程序控制器 5.5 微程序设计技术
上海普通居民对当地房价的态度及住房需求调查
Chapter 10 效能測量與分析.
第二章 微型计算机系统 第一节 基本术语和基本概念 第二节 计算机系统的基本构成 第三节 微机系统的硬件组成 第四节 微机系统的软件组成.
微型计算机技术及应用 王 健 主讲 授课学时:40学时 大连理工大学计算机系.
營利事業所得稅查核準則 相關概念介紹 南區國稅局 新營分局 林俊標 各位學員大家好:
Word高级应用——制作毕业论文 Word高级应用——制作毕业论文 6..
盘中顶底早知道 金牌讲师:高俊 ID:
计算机系统结构作业题解 第1章 作1.2 如有一个经解释实现的计算机,可以按功能划分成4级。每一级为了执行一条指令需要下一级的N条指令解释。若执行第一级的一条指令需K(ns)时间,那么执行第2、3、4级的一条指令各需要用多少时间(ns)? 解:∵第二级的一条指令需第1级的N条指令解释 ∴第二级的一条指令执行时间为NKns;
计算机组装与维护 电子商务系.
3、个人与社会的辩证关系(对立统一) (1)相互区别,不能等同。社会是根本,起决 定 作用。 (2)相互依存,密不可分。
计算机组成原理 北京理工大学计算机科学工程系 赵清杰 北京理工大学计算机科学工程系.
第3章 流水线技术.
信息科学与工程学院计算机科学系 2006年9月—2007年1月
組員:4A140013張瓊云 4A1I0039石宜芬 4A1I0909許峻綱 指導老師:王立杰老師
计算机组成原理第一章 知识点二:计算机系统性能评价指标 主讲教师: 秦磊华.
第11章 计算机系统 计算机系统概述 分类方法、计算机系统性能评测方法 2. 微机系统 3. 他体系结构处理机
學 號:997I0010、997I0024 組 員:洪韋鈴、王婷婷 日 期: 指導老師:王立杰 老師
计算机组成原理 东南大学计算机学院 任国林
最新計算機概論 第3章 計算機組織.
新世代計算機概論 第3章 電腦的系統單元.
五-4 台灣的生活禮俗 組員:603 15號 黃醴萬 6號 吳家熙 5號 楊証傑 11號 李偉新.
第二章 指令系统.
物價膨脹之意義(1) 一、意義:指在一段期間內,一國平均物價水準發生持續上漲的現象。 圖示(物價膨脹):
教育部補助 「大專校院社團帶動中小學社團發展」
公司法(六) 股份有限公司 1.
大连理工大学软件学院 软件工程系 赖晓晨 计算机组成与结构 大连理工大学软件学院 软件工程系 赖晓晨
企業講座 組長: 張仁杰 組員: 指導老師:洪伯毅 楊巧歆 楊明芬 陳璿安
计算机组成原理.
指導老師:陳韻如 班級:幼保二甲 姓名:林靜宜 學號:4A0I0033
为什么要理财? 财富在增加 幸福却…… 据最新发布的《中产家庭幸福白皮书》显示,中国大多中产阶级生活得并不幸福。面对越来越大的压力,这些有车有房,收入可观的人群却显得更为脆弱。中产阶级家庭中,子女教育、医疗、养老成为家庭财务规划中压力最大的三个内容。尤其是养老,随着通胀、退休延迟、失独老人的增加,人们对于未来20年、30年的生活状况感到不确定因素在不断增加,烦恼挥之不去。
周学海 , 中国科学技术大学 2018/9/20 现代微处理器体系结构 周学海 , 中国科学技术大学 2018/9/20 计算机体系结构.
周学海 , 中国科学技术大学 2018/9/21 计算机体系结构 周学海 , 中国科学技术大学.
第 2 章 中央處理單元.
第2章 Intel IA-32/Intel 64处理器 结构与原理
第5章 中央處理單元與主記憶體 5-1 中央處理單元-CPU 5-2 主記憶體.
微处理器设计1 刘鹏 College of ISEE Zhejiang University
計算機概論 第4章 從主機板看電腦的世界.
高等计算机系统结构 VLIW/EPIC 基于静态调度的ILP (第五讲) 程 旭 2011年4月16日.
Quiz 3 假设各种分支占所有指令数的百分比如下表所示:
二、计算机基本硬件介绍及选购 By:查宇
CPU資料處理 醫務管理暨醫療資訊學系 陳以德 副教授: 濟世CS 轉
周学海 中国科学技术大学 2018/11/16 计算机体系结构 周学海 中国科学技术大学.
计算机系统结构 第一章 基本概念 第二章 指令系统 第三章 存储系统 第四章 输入输出系统** 第五章 标量处理机 第六章 向量处理机
指令集架構 計算機也跟人類一樣,需要提供一套完整的語言讓人們跟它充分溝通,以完成正確的計算工作。
5 Computer Organization (計算機組織).
Lecture on High Performance Processor Architecture (CS05162)
第2章 计算机指令集结构 曲冠南
第三章 流水线技术.
計算機結構 – 概論 陳鍾誠 於金門大學.
嵌入式微处理器系统 第二章 处理器技术(1) 北京大学软件与微电子学院.
习题课 第1-2次作业 孙凡.
暴力、草莽、土野、情色、權慾 —華西街的成人童話
第3章 流水线技术 曲冠南
认识计算机系统.
刑事訴訟法 不受理.
作业3、4、6、7 俞天灿.
夏昊珺 PB 体系结构习题课2 夏昊珺 PB
玉米丰产已定 结构性供需决定后期行情 招金期货有限公司 农产品团队.
第4章 指令级并行 授课教师:车喜龙
手机淘宝“变形”产品—微淘 操作流程指南 (内测版).
第5章 中 央 处 理 器 5.1 CPU的功能和组成 5.2 指令周期 5.3 时序产生器和控制方式 5.4 微程序控制器
Presentation transcript:

清华大学计算机科学与技术系高性能计算研究所 郑纬民 教授 2005年5月 计算机科学与技术系研究生课程 高等计算机系统结构 清华大学计算机科学与技术系高性能计算研究所 郑纬民 教授 2005年5月

高等计算机系统结构 第一章 高等计算机的核心技术——并行处理 第二章 加速比性能模型与可扩展性分析 第三章 互连与通信 第四章 划分与调度 第一章 高等计算机的核心技术——并行处理 第二章 加速比性能模型与可扩展性分析 第三章 互连与通信 第四章 划分与调度 第五章 并行存储器系统 第六章 Cache Coherence 第七章 Memory Consistency 第八章 指令级并行处理

第八章 指令级并行处理 8.1 指令级并行概述 8.2 多发射结构 8.3 指令级并行的编译技术 8.1.1 指令级并行处理 8.1.2 减少每条指令执行的平均周期数 8.1.3 改进CPI的途径 8.2 多发射结构 8.3 指令级并行的编译技术

8.1 指令级并行概述 8.1.1 指令级并行处理 过去25年,微机性能差不多每年以50%的速度提高: (1)由于电路速度的改进,占年增长率一半不到。 (2)8位16位32位64位,CISC RISC; (3)片上cache,FLP H/W,图形加速H/W;

(4)采用流水技术 (5)电路的集成度也以每年40%的比例增长 10年来: 微处理器的周期从100200ns 少于4ns,大约降低了25倍; DRAM的访问时间从150 180ns 60 80ns,大约3倍,需要用cache来弥补。

指令级并行处理(ILPP,Instruction Level Parallel Processing)是实行低层机器操作的并行执行,如存、取、整数加和浮点乘等。

8.1.2 减少每条指令执行的平均周期数 RISC比CISC机器的CPI(Cycles per Instruction,平均周期数)要小。 CISC一般用微码技术,一条指令往往要用好几个周期才能实现,复杂指令所需的周期数则更多,CISC机器CPI一般为4-6; RISC一般指令一个周期完成,所以CPI=1,但LOAD、STORE等指令要长些,所以RISC机器的CPI 约大于1。

RISC技术未来发展的方向是进一步减少CPI; CISC机器也在减少CPI; 一些新型的微处理器的CPI(不论是RISC还是CISC),都在逐渐趋向于2和1之间。 例: Intel的5MHz的80286(1986),CPI=5 10MHz的68010(1983),CPI=12 22MHz的68030(1988),CPI=5 SUN SPARC(1987),CPI=1-2

8.1.3 改进CPI的途径 给定的工作频率下,要进一步减小CPI,必须进一步提高RISC内部的并行性。 (1)哈佛结构:即设计分开的指令cache和数据cache,可以并行工作。 (2)多端口的寄存器堆。如果一个寄存器堆有两个源操作数端口和一个目的操作数端口,那么两个源操作数可以同时取出,还可以写入或取出另一条指令的目的操作数。

(3)流水线的级分得更细。 (4)编译优化技术。充分利用硬件资源、优化分配寄存器。 (5)超标量(super scalar)结构。即设置多个执行部件。 (6)超流水线(superpipeline)结构。 (7)VLIW(Very Long Instruction Word)

第八章 指令级并行处理 8.1 指令级并行概述 8.2 多发射结构 8.3 指令级并行的编译技术 8.2.1 流水线结构 8.2.2 超标量机的典型结构 8.2.3 VLIW机的结构框图 8.3 指令级并行的编译技术

8.2 多发射结构 单发射结构:每个周期只发射一条指令; 多发射结构:在流水线结构基础上,每个周期可以发射多条指令。比如: 超标量 超流水线 VLIW 数据流

8.2.1 流水线结构 1.一般流水线结构 IPC(Instruction Per Cycle)=1,但由于数据相关、转移相关和资源相关使得IPC<1。 n IF ID EX WR IF ID EX WR n+1 IF ID EX WR n+2

2.超标量结构 主要特点: (1)配置多个处理部件,采用多条流水线并行处理; (2)能同时对若干条指令进行译码,将可并行执行的指令送往不同的执行部件,从而达到每个周期启动多条指令的目的。 (3)在程序运行期间由硬件完成指令调度。 下图中,一个周期内同时发出三条指令,有多个执行部件,三条指令发到三个独立的执行部件去分别执行。

IF ID EX WR IF ID EX WR IF ID EX WR 每拍启动3条指令,要求并行度=3

3.超流水线结构 下图中,一个流水段(一个周期)分成三个子段,每个子段取出的仍只有一条指令,但总体来看,一个周期内取出了三条指令,执行部件可以一套,每个部件在一个子段时间内完成。

每1/3个周期启动一条指令,要求并行度=3 IF ID EX WR IF ID EX WR IF ID EX WR IF ID EX WR

超标量和超流水线的比较 超标量:工作部件多,晶体管数目也多, 每个部件的工作速度相对的可以低一些。以空间换取时间。 超流水线:工作部件少,晶体管数目少了,每一个部件必须在一个子周期内执行,工作速度较高。以时间换取了空间。 大部分新一代的RISC都属于超标量结构,比如:i860,i960 ,Motorola 88110 ,IBM Power 6000 ,SUN/TI的Super SPARC。 MIPS的R4000属于超流水线结构。

如DEC的Alpha和Intel Pentium。 4.超流水线超标量RISC 如DEC的Alpha和Intel Pentium。 IF ID EX WR IF ID EX WR IF ID EX WR 每拍启动9条指令,要求并行度=9

5.VLIW(超长指令字) 1983年,Yale大学Fisher教授首先提出。 一条长指令来实现多个操作的并行执行,以减少对存储器的访问,这种长指令往往达上百位,甚至上千位。 如下面的图。每拍启动一条长指令,执行3个操作,相当于3条指令,要求并行度为3。

IF ID EX WR EX EX IF ID EX WR EX EX IF ID EX WR EX EX 每拍启动1条指令,要求并行度=3

主要特点: 单一的控制流。只有一个控制器,每个周期启动一条长指令。 超长指令字被分成多个控制字段,每个字段直接独立的控制每个功能部件。 含有大量的数据通路和功能部件,由于编译器在编译时间已经考虑可能出现的数据相关和资源相关,故控制硬件比较简单。 在编译阶段完成超长指令中多个可并行执行操作的调度(超长指令字的生成是由编译器完成)。

区分一条指令和一个操作: 一个操作是指一个计算单位,如加、取、转移等。这在顺序结构中就是一条指令。而一条VLIW指令是包含一组同时发出的操作。编译器的任务就是要确定哪些操作可以组合在一条指令中。组合在一条VLIW指令中的所有操作是同时开始执行的。

8.2.2 超标量的典型结构 D-cache 主 存 存储器操作部件 指 RF 令 寄存器 1 调 堆 I-cache 度 ALU 2 转移控制部件 2条指令并行 取出并同时译码 状态 记录部件

指令的执行部件: 存储器操作部件:执行Load、Store指令 ALU:整数运算 转移控制部件:执行转移指令

状态记录部件(调度部件): 进行流水动态调度。依靠硬件在程序运行过程中对可能出现的相关情况加以检测,从而保证流水线中的各个功能部件能最大限度的重叠工作。 它对流水线中的各个功能部件的工作状态、进入流水线中的各条指令的工作状态、它们所使用的源寄存器和目的寄存器情况等进行集中的统一记录和调度。 在译码阶段,状态记录部件根据所记录的状态决定是否将译码后的指令发送给有关功能部件进行处理。

状态记录部件主要检查: 该指令要使用的功能部件是否已被流水线中的其它指令占用(资源冲突); 该指令的源操作数寄存器是否为其它指令的目的寄存器,或者它所要写入的目的寄存器又正好是前面其它指令所要读出的操作数,或是要写入的目的寄存器。即检查是否存在RAW、WAR、WAW的数据相关。

RAW(Read After Write): 指令j试图在指令i写入寄存器前就读出该寄存器的内容; WAR(Write After Read): 指令j试图在指令i读出寄存器前就写入该寄存器的内容; WAW(Write After Write): 指令j试图在指令i写入寄存器前就写入该寄存器的内容;

8.2.3 VLIW机的结构框图 主 存 RF(寄存器堆) LD/ST1 LD/ST2 FADD FMUL LD/ST1 LD/ST2 存/取1 存/取2 浮点加 浮点乘

例:要执行以下赋值语句。 C = A + B K = I + J L = M - K Q = C  K 假设LOAD/STORE,FADD一个周期完成, FMUL二个周期完成。 若按串行操作进行,则其所用的指令序列如下图所示。共需14个周期。

源代码 源代码 所需周期 C=A+B LOAD A LOAD B C=A+B STORE C 1 K=I+J LOAD I LOAD J K=I+J STORE K 1 L=M-K LOAD M L=M-K STORE L 1 Q=C*K Q=C*K STORE Q 2 1 共需14个周期

超标量结构、超流水线结构一般采用指令窗方法,把一段指令(长度为窗口的大小,例为8)取到窗口中,判断这段指令能否并行执行。 压缩技术——表调度法: LOAD A LOAD B LOAD I LOAD J C=A+B LOAD M STORE C K=I+J STORE K L=M-K Q=C*K STORE L STORE Q 只需要6个周期。 超标量结构、超流水线结构一般采用指令窗方法,把一段指令(长度为窗口的大小,例为8)取到窗口中,判断这段指令能否并行执行。

第八章 指令级并行处理 8.1 指令级并行概述 8.2 多发射结构 8.3 指令级并行的编译技术 8.3.1 软件流水方法 8.3.2 循环体展开

8.3 指令级并行的编译技术 8.3.1 软件流水方法 例1:在一台2发射处理机上执行下列程序。 Do I =1,N A(I) = A(I) * B + C End do 假定存储器访问Read(读)Write(写)用一个周期。 每一个算术操作Mul、Add需二个周期,执行一次迭代需要6个周期。如下:

采用流水方法(做4次迭代情况)的情形如下: 周期 指令 注释 1 READ /取A[I]/ 2 MUL /乘B/ 3 4 ADD /加C/ 5 6 WRITE /存A[I]/ 完成N次迭代需要6N个周期。 采用流水方法(做4次迭代情况)的情形如下:

周期 迭代 1 2 3 4 1 read 2 mul 3 read 4 mul 5 add read 6 mul 7 add read 8 write mul 9 add 10 write 11 add 12 write 13 14 write

每次迭代通过流水线需要8个周期,但4次迭代只需要14个时钟周期。与非流水线执行相比,加速比可达到: 用流水线执行N次迭代需要2N+6个周期,加速比为:

8.3.2 循环体展开 例1:一个循环体,对存储器中的一个指定向量(双精度)加上一个标量值: Loop: LD F0, 0(R1) /M[(R1)+0]F0, 读向量元素/ ADDD F4, F0, F2 /(F0)+(F2)F4/ SD 0(R1), F4 /(F4)M[(R1)+0] 存向量元素/ SUB R1, R1, #8 /(R1)-8R1 将指针减去8个字节/ BNEZ R1, Loop /若(R1)0, 则跳转/

假设FP ALU 使用另一个FP ALU指令操作结果需要等待3个周期,STORE指令欲使用由FP ALU指令产生的结果需要等待2个周期,FP ALU指令使用LOAD的结果等待1个周期。 则上面过程的实际执行情况如下:

执行一遍循环体需要9个时钟周期。 Loop: LD F0, 0(R1) STALL /停顿/ ADDD F4, F0, F2 STALL SD 0(R1), F4 SUB R1, R1, #8 BNEZ R1, Loop 执行一遍循环体需要9个时钟周期。

由于SUB和SD交换了先后顺序,因此SD指令中的R1的偏移量需由原来的0变为8。 对上述循环体进行调度,使其变成如下: Loop: LD F0, 0(R1) STALL ADDD F4, F0, F2 SUB R1, R1, #8 BNEZ R1, Loop SD 8(R1), F4 由于SUB和SD交换了先后顺序,因此SD指令中的R1的偏移量需由原来的0变为8。

将循环体展开3次后再进行调度: Loop: LD F0, 0(R1) 2 ADDD F4, F0, F2 3 SD 0(R1), F4 1 周期 Loop: LD F0, 0(R1) 2 ADDD F4, F0, F2 3 SD 0(R1), F4 1 LD F6, -8(R1) 2 ADDD F8, F6, F2 3 SD -8(R1), F8 1 LD F10, -16(R1) 2 ADDD F12, F10, F2 3 SD -16(R1), F1 1

循环展开3次,总计27个周期。对展开后的代码进行调度,如下: LD F14, -24(R1) 2 ADDD F16, F14, F2 3 SD -24(R1), F16 1 SUB R1, R1, #32 1 BNEZ R1, Loop 2 循环展开3次,总计27个周期。对展开后的代码进行调度,如下:

Loop: LD F0, 0(R1) LD F6, -8(R1) LD F10, -16(R1) LD F14, -24(R1) ADDD F4, F0, F2 ADDD F8, F6, F2 ADDD F12, F10, F2 ADDD F16, F14, F2 SD 0(R1), F4 SD -8(R1), F8 SD -16(R1), F1 SUB R1, R1, #32 BNEZ R1, Loop SD -24(R1), F16

调度后的代码每个循环只要14个周期即可。 循环体展开法通过增加源程序代码长度来获得较好的调度效果。