高级计算机系统结构综述
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
1.概述 (3)
1.1 计算机系统结构的发展 (3)
1.3 计算机系统的层次结构 (3)
2.计算机指令集结构 (4)
2.1 指令结构的分类 (4)
2.2 指令集结构的功能设计 (5)
3.流水线技术 (6)
3.1 流水线的基本概念 (6)
3.2流水线的相关与冲突 (8)
3.3 向量处理机 (9)
4.指令并行 (10)
4.1 指令的静态调度与动态调度 (10)
4.2 动态分支预测技术 (10)
5.存储器的层次结构 (11)
5.1 存储器的结构 (11)
5.2 Cache的基本知识 (12)
5.3 主存与虚拟存储器 (13)
6.输入/输出系统 (13)
6.1 总线 (13)
6.2 通道处理机 (14)
7.计算机系统结构的发展趋势 (14)
7.1高性能计算机体系结构 (14)
7.2 高性能计算的发展方向 (15)
参考文献 (17)
高级计算机系统结构综述
摘要:计算机体系结构是一门连接硬件与软件的学科,在不断的深入研究过程中,一直在追求计算机的功能、性能、功率以及花费的高度协调,以期达到各方面的最佳状态,在花费、能量、可用性的抑制下,实现计算机的多功能、高性能、低功率、少花费的新时代。
本篇综述主要讲述计算机指令集结构设计,流水线技术,指令级并行,存储器层次结构,输入/输出系统以及计算机系统结构的发展趋势。
关键字:高级计算机系统结构,流水线技术,指令级并行,存储器层次结构,输入/输出系统
Overview of advanced computer architecture Abstract:The computer architecture is a subject which connects hardware and software. In the process of continuous in-depth study, it has been pursuing the function, performance, power and cost of the computer, in order to achieve the best state in every aspect,and realize the new era of multi-function, high performance, low power and low cost.This paper mainly focuses on the computer instruction set architecture, pipeline technology, instruction level parallelism, memory hierarchy, input / output system and the development trend of computer architecture.
Key words:advanced computer architecture,pipeline technology,instruction level parallelism,memory hierarchy,input / output system.
1.概述
1.1 计算机系统结构的发展
世界上第一台电子数字计算机是1946年在美国宾夕法尼亚大学制成的,这是科学史上一次划时代的创新,它奠定了电子计算机的发展基础。
提高计算机速度始终是发展计算机性能的一个突出问题,器件的发展对推动计算机的发展起了重大作用。
然而机器速度提高的速率越来越慢,这一事实促使人们对计算机系统结构做更多的研究工作更多潜力。
VLSI技术的发展,带来了集成度高、体积小、功耗低、可靠性高、价格便宜的器件,使得计算机系统可以通过采用更加复杂的系统结构来创造出性能更高、工作可靠、价格合理的高性能计算机。
20世纪60年代初期,随着晶体管和磁芯存储器的出现,处理单元和存储器实现小型化,并行计算机开始出现。
到了20世纪60年代末期,单一处理器中可以集成多个功能单元,产生了流水线技术。
在70年代初,与向量计算机同时出现了并行处理机,这类计算机同向量计算机的应用领域很多是相同的,但专业性更强。
20世纪80年代开始,微处理器技术高速发展。
此时,微处理器随着机器的字长从4位、8位、16位一直增加到32位、64位,其性能也随之显著提高。
另外,80年代在单处理机中提高指令执行的并行度方面也有新发展。
简化指令系统计算机(RISC)简化了指令系统使能充分发挥流水线的作用,超长指令字(VLIW)计算机和超级标量机的目标更提高了一步。
从20世纪90年代末开始,以前发展的主要几种体系逐步走向融合,同时随着新技术的出现又为新的架构带来了新的革命。
2006 年,处理器开始从单核转向多核处理器发展,多核处理器已不再局限于高端服务器,开始向 PC机普及,多核处理器使 PC 机变成并行式计算机。
多核技术在高性能计算中也已获得了广泛应用。
1.3 计算机系统的层次结构
计算机是一个十分复杂的硬、软件结合而成的整体。
它通常是多层次结构的,每一级各对应一类机器,各有自己的机器语言。
在这里,“机器”的定义是能存储、执行程序的算法和数据结构的集合体。
各级机器的算法和数据结构的实现方法不同:M0由硬件实现,M1由微程序(固件)实现,M2~M5由软
件实现。
由软件实现的机器称为虚拟机器,以区别由硬件或固件实现的实际机器。
各级的程序被翻译成比它低一级的语言的程序,或由低一级的程序解释。
如下图所示:
应用语言程序经应用程序包 翻译成高级语言程序
高级语言程序经编译程序翻 译成汇编语言
汇编语言程序经汇编程序翻 译成机器语言程序
一般机器语言程序解释作业 控制语句等
用微指令程序解释机器指
令
微指令由硬件直接执行
图1.1 计算机系统的层次结构图
2.计算机指令集结构
2.1 指令结构的分类
根据CPU 中用来存储操作数的存储单元的类型,可将指令集结构分为 堆栈型指令集结构、累加器型指令集结构和通用寄存器型指令集结构。
1.堆栈型指令集结构:堆栈型是一种表示计算的简单模型,指令短小,不能随机访问堆栈,从而很难生成有效代码。
同时,由于堆栈是瓶颈,所以很难被高效地实现。
微程序机器M0
具有L0机器语言(微指令系统) 应用语言机器M5
具有L5机器语言(应用语言) 高级语言机器M4
具有L4机器语言(高级语言) 汇编语言机器M3 具有L3机器语言(汇编语言) 操作系统机器M2 具有L2机器语言(作业控制语言等) 传统机器M1 具有L1机器语言(微机器令系统)
2.累加器型指令集结构:累加器型减少了机器的内部状态,由于累加器是唯一的暂存器,指令短小,这种机器的存储器通信开销最大。
3.通用寄存器型指令集结构:寄存器型易于生成高效的目标代码,所有操作数均需命名,且要显式表示,因而指令比较长。
现代大多数机器均采用通用寄存器型指令集结构,因为寄存器和CPU内部其他存储单元一样,要比存储器快。
其次是对编译器而言,可以更加容易、有效地分配和使用寄存器。
根据通用寄存器型指令集结构,又可进一步分为以下三种类型:
寄存器-寄存器型(RR)其优点是简单,指令字长固定,是一种简单的代码生成模型,各种指令的执行时钟周期数相近。
缺点与指令中含存储器操作数的指令集结构相比指令条数多,因而其目标代码量较大。
寄存器-存储器型(RM)其优点是可以直接对存储器操作数进行访问,而不必先用load指令进行加载。
容易对指令进行编码,且其目标代码量较小。
缺点是指令中的操作数类型不同。
在一条指令中同时对一个寄存器操作数和存储器操作数进行编码,将限制指令所能够表示的寄存器个数。
指令的执行时钟周期数因操作数的来源(寄存器或存储器)不同而差别比较大。
存储器-存储器型(MM)其优点是一种最紧密的编码方式,无需“浪费”寄存器保存变量。
缺点是指令字长多种多样。
每条指令的执行时钟周期数也大不一样,对存储器的频繁访问将导致存储器访问瓶颈问题。
这种类型的指令集结构现在已不用了。
2.2 指令集结构的功能设计
在设计指令集结构时,有两种截然不同的设计策略,产生了两类不同的计算机系统:
CISC即复杂指令集计算机。
它是增强指令功能,把越来越多的功能交由硬件来实行,并且指令的数量也是越来越多。
CISC通过只执行在程序中经常使用的指令来简化处理器的结构,而特殊操作则以子程序的方式实现,它们的特殊使用通过处理器额外的执行时间来弥补。
RISC即精简指令集计算机。
它是尽可能的把指令集简化,不仅指令的条数少,而且指令的功能也比较简单。
RISC包含许多应用程序中很少使用的特定指
令,执行数字存在内存而非暂存器的运算。
相比之下,比较复杂的指令集较容易使工作更完善,内存及快取的效率较高,以及较为简单的程式码。
3.流水线技术
3.1 流水线的基本概念
流水线技术是将一个重复的时序过程分解成为若干个子过程,而每一个子过程都可有效地在其专用功能段上与其他子过程同时执行。
流水线中的每个子过程及其功能部件称为流水线的级或段,段与段相互连接形成流水线。
流水线的段数称为流水线的深度。
流水线技术具有以下特点
(1)流水过程由多个相联系的子过程组成,每个过程称为流水线的“级”或“段”。
(2)每个子过程由专用的功能段实现。
(3)各个功能段所需时间应尽量相等。
流水线需要有“通过时间”,在此之后流水过程才进入稳定工作状态,每一个时钟周期流出一个结果。
(4)流水技术适合于大量重复的时序过程,只有在输入端能连续地提供任务,流水线的效率才能充分发挥。
从不同的角度和观点,可以把流水线分成多种不同的种类。
如下图所示:
图2.1 流水线分类图 单功能流水线:只能完成一种固定功能的流水线
多功能流水线:流水线的各段可以进行不同的连接,从而使流水线在不同的时间,或者在同一时间完成不同的功能。
静态流水线:在同一时间内,流水线的各段只能按同一种功能的连接方式工作。
动态流水线:在同一时间内,当某些段正在实现某种运算时,另一些段却在实现另一种运算。
部件级流水线(运算操作流水线):把处理机的算术逻辑部件分段,以便流水级别
向量流水处理机
流水
线
流水线完成功能分类 同一时间各段连 接方式 数据表示
流水线中是否有反馈路线 任务流入流出顺序是否相同 单功能流水线 多功能流水线 处理机级流水线 动态流水线 标量流水处理机 部件级流水线 静态流水线 顺序流水线 非线性流水线 乱序流水线
线性流水线
为各种数据类型进行流水操作。
处理机级流水线(指令流水线):把解释指令的过程按照流水方式处理。
处理机间流水线(宏流水线):由两个以上的处理机串行地对同一数据流进行处理,每个处理机完成一项任务。
标量流水处理机:处理机不具有向量数据表示,仅对标量数据进行流水处理。
向量流水处理机:处理机具有向量数据表示,并通过向量指令对向量的各元素进行处理。
线性流水线:流水线的各段串行连接,没有反馈回路。
非线性流水线:流水线中除有串行连接的通路外,还有反馈回路。
顺序流水线:流水线输出端任务流出的顺序与输入端任务流入的顺序完全相同。
每一个任务在流水线的各段中是一个跟着一个顺序流动的。
乱序流水线:流水线输出端任务流出的顺序与输入端任务流入的顺序可以不同,允许后进入流水线的任务先完成(从输出端流出)。
3.2流水线的相关与冲突
相关是指两条指令之间存在某种依赖关系。
如果两条指令相关,则他们就有可能不能在流水线中重叠执行或者只能部分重叠执行,
1.结构相关:当指令在重叠执行过程中,硬件资源满足不了指令重叠执行的要求,发生资源冲突时将产生“结构相关”;
2.数据相关:当一条指令需要用到前面指令的执行结果,而这些指令均在流水线中重叠执行时,就可能引起“数据相关”;
3. 控制相关:当流水线遇到分支指令和其他会改变PC值的指令时就会发
生“控制相关”。
流水线冲突是指对于具体的流水线来说,由于相关的存在,使得指令流中的下一条指令不能在指定的时钟周期执行。
流水线冲突有三种类型:
1.结构冲突:因硬件资源满足不了指令重叠执行的要求而发生的冲突。
解决方法:流水化功能单元;资源重复;暂停流水线。
2.数据冲突:当指令在流水线中重叠执行时,因需要用到前面指令的执行结果而发生的冲突。
3.控制冲突:流水线遇到分支指令和其他会改变PC值的指令所引起的冲突。
(可省)解决数据冲突有四中方法
1.定向技术:在某条指令产生一个结果之前,其他指令并不真正需要该计算结果,如果将该计结果从其产生的地方直接送到其他指令需要它的地方,就可以避免暂停;
2.暂停技术:设置一个“流水线互锁”的功能部件,一旦流水线互锁检测到数据相关,流水线暂停执行发生数据相关指令后续的所有指令,直到该数据相关解决为止。
;
3.采用编译器调度。
当流水线中出现冲突时,编译器通过重新排列代码的顺序来消除流水线中的暂停,这种技术称为流水线调度
4.重新组织代码顺序。
流水线设计者有时会允许结构冲突的存在,原因:一是为了减少硬件开销,二是为了减少功能单元的延迟。
3.3 向量处理机
在流水线处理机中,设置向量数据表示和相应的向量指令,称为向量处理机。
不具有向量数据表示和相应的向量指令的流水线处理机,称为标量处理机。
向量处理方式有以下三种方式:
1.水平处理方式:向量计算是按行的方式从左到右横向地进行,组成循环程序进行处理,不适合向量处理机的并行处理。
2.垂直处理方式:适合对向量进行流水处理,向量运算指令的源/目向量都放在存储器内,使得流水线运算部件的输入、输出端直接与存储器相联,构成MM型(存储器-存储器)的运算流水线。
3.分组处理方式:把向量分成若干组,组内按纵向方式处理,一次处理各组,每组向量运算的源/目向量都在向量寄存器中,流水线的运算部件输入、输出端与向量寄存器相联,构成RR型(寄存器—寄存器)运算流水线。
提高向量处理机性能有多种方法,许多新型向量处理机系统则采用了多处理机系统结构:
1.设置多个功能部件,使它们并行工作。
2.采用链接技术,加快一串向量指令的执行。
3.采用循环开采技术,加快循环处理。
4.采用多处理机系统,进一步提高性能。
4.指令并行
4.1 指令的静态调度与动态调度
当指令之间不存在相关时,它们可以在流水线中重叠起来并行执行。
这种指令序列中存在的潜在并行性称为指令级并行。
静态调度方法:依靠编译器对代码进行静态调度,以减少相关和冲突。
它不是在程序执行的过程中、而是在编译期间进行代码调度和优化。
静态调度通过把相关的指令拉开距离来减少可能产生的停顿。
动态调度方法:在程序的执行过程中,依靠专门硬件对代码进行调度,减少数据相关导致的停顿。
Tomasulo算法是一种比较典型的动态调度算法,其算法的核心思想是记录和检测指令相关,操作数一旦就绪就立即执行,把发生RAW冲突的可能性减少到最小,通过寄存器换名来消除WAR冲突和WAW冲突。
Tomasulo算法的基本思想是:只要操作数有效,就将其取到保留站,避免指令流出时才到寄存器中取数据,这就使得即将执行的指令从相应的保留站中取得操作数,而不是从寄存器中。
指令的执行结果也是直接送到等待数据的其他保留站中去。
因而,对于连续的寄存器写,只有最后一个才真正更新寄存器中的内容。
一条指令流出时,存放操作数的寄存器名被换成为对应于该寄存器保留站的名称(编号)。
指令流出逻辑和保留站相结合实现寄存器换名,从而完全消除了数据写后写和先读后写相关这类名相关。
4.2 动态分支预测技术
在程序运行时,根据分支指令过去的表现来预测其将来的行为。
如果分支行为发生了变化,预测结果也跟着改变。
预测分支是否成功和尽快找到分支目标地址(或指令),从而避免因控制相关而造成流水线停顿是动态分支预测技术的目的。
如何记录分支的历史信息以及如何根据这些信息来预测分支的去向(甚至取到指令)是其要解决的两个关键问题。
采用分支历史表 BHT,采用分支目标缓冲器BTB以及基于硬件的前瞻执行是三种动态分支预测技术,最常
用到的是基于硬件的前瞻执行。
前瞻执行的基本思想:对分支指令的结果进行猜测,并假设这个猜测总是对的,然后按这个猜测结果继续取、流出和执行后续的指令。
只是执行指令的结果不是写回到寄存器或存储器,而是放到一个称为ROB 的缓冲器中。
等到相应的指令得到“确认”(即确实是应该执行的)后,才将结果写入寄存器或存储器。
对Tomasulo 算法加以扩充,就可以支持前瞻执行了。
允许指令乱序执行,但必须顺序确认。
前瞻执行通过ROB 实现了指令的顺序完成,能够实现精确异常,且很容易地推广到整数寄存器和整数功能单元上,但所需的硬件太复杂。
5.存储器的层次结构
5.1 存储器的结构
对于通用计算机而言,存储层次至少应具有三级:最高层为CPU 寄存器,中间为主存,最底层为辅存。
在较高档的计算机中还可根据具体的功能分工细划如下图,存储层次中越往上,存储介质的访问速度越慢,价格也越高,相对的存储容量也越小。
CPU 寄存器
主存
辅存
图5.1 计算机系统存储层次图 单级存储器的主要矛盾是速度越快,每位价格就越高。
容量越大,每位价格就越低。
容量越大,速度越慢。
因此采取多级存储层次方法来解决此类矛盾。
“Cache -主存”层次:在CPU 和主存之间增加一级速度快、但容量较小而每位价格较贵的高速缓冲存储器。
借助于辅助软硬件,它与主存构成一个有机的整体,以弥补主存速度的不足。
寄存器
高速缓存 主存 磁盘缓存 磁盘 可移动存储介质
辅助硬件
CPU Cache 主存
图5.2 “Cache-主存”层次
“主存-辅存”层次:在主存外面增加一个容量更大、每位价格更便宜、但速度更慢的存储器。
它们依靠辅助软硬件的作用,构成一个整体。
以弥补主存容量的不足。
辅助软硬
CPU 主存辅存
图5.3 “主存-辅存”层次
5.2 Cache的基本知识
其地址映象规则有如下三种:
1. 全相联映象:主存中的任一块可以被放置到Cache中的任意一个位置,空间利用率最高,冲突概率最低,实现最复杂。
Cache空间的利用率较高,块冲突概率较低,因而Cache的失效率也低。
2. 直接映象:主存中的每一块只能被放置到Cache中唯一的一个位置。
Cache空间的利用率较低,块冲突概率较高,因而Cache的失效率也高。
3. 组相联映象:主存中的每一块可以被放置到Cache中唯一的一个组中的任何一个位置,组相联是直接映像和全相联的一种折中。
查找算法是为了解决当CPU访问Cache时,确定Cache中是否有要访问的块,以及确定其位置。
替换算法是为了解决当新调入一块,而Cache又已被占满,应该替换那一块。
有随机法,先进先出法以及最近最少使用法LRU。
5.3 主存与虚拟存储器
延迟和带宽是贮存的主要性能指标。
可以有以下三种存储器组织技术来提高主存性能:
增加存储器的宽度。
这样也就增加CPU和存储器之间的连接通路的宽度,CPU和Cache之间就有了一个多路选择器,扩充主存的最小增量增加了相应的倍数,而且写入有可能变得复杂。
采用简单的多体交叉存储器。
在存储系统中采用多个DRAM,并利用它们潜在的并行性。
独立存储体。
设置多个存储控制器,使多个体能独立操作,以便能同时进行多个独立的访存。
虚拟存储器是“主存-辅存”层次进一步发展的结果,可以分为页式和段式的存储器管理方式具有多次性,对换性,虚拟性的特点。
6.输入/输出系统
6.1 总线
输入/输出系统简称I/O系统,I/O系统是用于实现数据输入、输出及数据存储的系统。
它包括I/O设备以及I/O设备与处理机的连接。
在计算机系统中,各子系统之间可以通过总线相互连接。
因为它是由不同的外设分时共享的,形成了信息交换的瓶颈,从而限制了系统中总的I/O吞吐量。
总线按用途分类可分为
1.CPU存储器总线。
CPU存储器总线比较短,通常具有较高的速度,并且要和存储器系统的速度匹配来优化带宽。
2.I/O总线。
I/O总线要连接许多不同类型、不同带宽的设备,因而比较长,并且应遵循总线标准。
按设备定时方式分类,总线可分为
同步总线。
所有设备通过统一的总线系统时钟进行同步。
优点是成本低,速度快,因为它不需要设备之间互相确定时序的逻辑。
缺点是总线操作必须以相同的速度运行。
异步总线。
设备之间没有统一的系统时钟,设备自己内部定时。
设备之间
的信息传送用总线发送器和接收器控制。
容易适应更广泛的设备类型,扩充总线时不用担心时钟时序和时钟同步问题。
但在传输时,异步总线需要额外的同步开销。
CPU与外部设备进行输入/输出的方式在计算机的发展过程中经历了不同的方式。
在早期的计算机系统中,是采用程序I/O方式;当在系统中引入中断机制后,I/O方式便发展为中断驱动方式;此后,随着DMA控制器的出现,又使I/O方式在传输单位上发生了变化,即从以字节为单位的传输扩大到以数据块为单位进行传输,从而大大地改善了块设备的I/O性能;而通道的引入,又使对I/O操作的组织和数据的传送都能独立地进行而无需CPU的干预。
6.2 通道处理机
通道处理机(简称通道)专门负责整个计算机系统的输入/输出工作,只能执行有限的一组输入/输出指令。
其对外设的控制通过输入/输出接口和设备控制器进行控制。
根据信息传送方式的不同通道分为三种类型:字节多路通道:一种简单的共享通道,主要为多台低速或中速的外围设备服务。
传送过程:通道每连接一个外围设备,只传送一个字节,然后又与另一台设备连接,并传送一个字节。
数组多路通道:适于为高速设备服务。
传送过程:每连接一台高速设备,一般传送一个数据块,传送完成后,又与另一台高速设备连接,再传送一个数据块。
选择通道:为多台高速外围设备服务。
传送过程:在选择通道中,通道每连接一个外围设备,就把这个设备的n个字节全部传送完成,然后再与另一台设备相连接。
通道完成一次数据传输的工作过程:
在用户程序中使用访管指令进入管理程序,由CPU通过管理程序组织一个通道程序,并启动通道。
通道处理机执行CPU为它组织的通道程序,完成指定的数据I/O工作。
通道程序结束后向CPU发中断请求。
CPU响应这个中断请求后,第二次进入操作系统,调用管理程序对I/O中断请求进行处理。
7.计算机系统结构的发展趋势
7.1高性能计算机体系结构。