二并行存储器奥鹏教育文档格式.docx
《二并行存储器奥鹏教育文档格式.docx》由会员分享,可在线阅读,更多相关《二并行存储器奥鹏教育文档格式.docx(287页珍藏版)》请在冰豆网上搜索。
操作员
2
传统机器语言级
机器语言程序员
软硬件接口
1
微程序机器级
逻辑设计员
固件
电子线路级
硬件设计员
硬件
其中,第0级由硬件实现,第1级由微程序(固件)实现,第2级至第6级由软件实现。
可见,计算机系统结构是指在计算机系统软、硬件的分接口上,机器所表现出的外特性。
二、计算机系统结构
(一)计算机系统结构定义
概念:
计算机系统结构就是计算机的机器语言程序员或编译程序编写者所看到的外特性,是硬件子系统的概念结构及其功能特性。
系统结构一般应包括以下几个方面:
机器内的数据表示、寻址方式、寄存器定义、指令系统、中断机构、存储体系和管理、机器工作状态的定义和切换、输入输出结构、信息保护等。
在计算机技术中,一种本来存在的事物或属性,但从某种角度看似乎不存在,这称为透明性。
(二)计算机系统结构、组成与实现
计算机系统结构是机器语言程序员所了解的计算机的属性,即外特性。
系统结构设计者的主要任务是研究软件、硬件功能分配和对软件、硬件界面的确定,即哪些功能由软件完成,哪些功能由硬件完成。
包括:
数据表示、寻址方式、寄存器定义、指令系统、中断机构、存储体系和管理、机器工作状态的定义和切换、输入输出结构、信息保护等。
计算机组成是计算机系统结构的逻辑实现,计算机组成的任务是在计算机系统结构确定分配给硬件子系统的功能及其概念结构之后,研究各组成部分的内部构造和相互联系,以实现机器指令级的各种功能和特性。
具体包括:
数据通路的宽度、专用部件的设置、各功能部件操作部件的并行度和共享程度、控制机构的组成方式、缓冲技术排队技术的采用、可靠性技术的采用和方式的选择、预估预判优化处理。
计算机实现即计算机逻辑设计之后的物理实现,包括:
处理机,主存部件的物理结构,器件的集成度,速度的选择,模块、插件、底板的划分与连接,电源、冷却,以及整机的装配技术等。
(三)计算机系统结构的分类
计算机系统的分类常见分类方法:
1、按大小划分
种类:
巨型机、大型机、中型机、小型机、微型机等。
2、按用途划分
科学计算、事务处理、实时控制、工作站、服务器、家用计算机等。
3、按数据类型划分
定点机、浮点机、向量机、堆栈机等。
4、按处理机个数和种类划分
单处理机、并行处理机、多处理机、分布处理机、关联处理机、超标量处理机、超流水线处理机、SMP(对称多处理机)、MPP(大规模并行处理机)、机群(Cluster)系统等。
5、按所使用的器件划分
第一代:
电子管计算机(Valve)
第二代:
晶体管计算机(Transistor)
第三代:
集成电路计算机(LSI)
第四代:
大规模集成电路计算机(VLSI)
第五代:
智能计算机等
6、佛林(Flynn)分类法
1966年由Michael.J.Flynn提出,按照指令流和数据流的多倍性特征对计算机系统进行分类。
指令流(instructionstream):
机器执行的指令序列;
数据流(datastream):
由指令流调用的数据序列,包括输入数据和中间结果;
多倍性(multiplicity):
在系统性能瓶颈部件上同时处于同一执行阶段的指令或数据的最大可能个数。
(1)单指令流单数据流SISD(SingleInstructionSingleDatastream)
(2)单指令流多数据流SIMD(SingleInstructionMultipleDatastream)
(3)多指令流单数据流MISD(MultipleInstructionSingleDatastream)
(4)多指令流多数据流MIMS(MultipleInstructionMultipleDatastream)
CU:
控制部件 PU:
处理部件 MM:
内存模块
IS:
指令流 DS:
数据流
图1.2.1Flynn分类法各类机器结构
7、冯泽云分类法
1972年美籍华人冯泽云提出用最大并行度来对计算机系统进行分类。
最大并行度:
指在单位时间内能够处理的最大二进制位数。
字宽:
在一个字中同时处理的二进制的位数。
位宽:
在一个位片中能同时处理的字数。
例如:
同时处理的字宽为n,位宽为m,则最大并行度定义为:
图1.2.2按最大并行度的冯氏分类法
由图1.2.2可得出4类不同处理方法的计算机系统结构:
(1)字符串位串WSBS(WordSerialandBitSerial)串行计算机;
m=1,n=1;
EDVAC(1,1)
(2)字并位串WPBS(WordParallelandBitSerial)传统的单处理机;
m=1,n>1;
Pentium(32,1)
(3)字符串位并WSBP(WordSerialandBitParallel)并行计算机、MPP、相联计算机;
m>1,n=1;
MPP(1,16384),STARAN(1,256),DAP
(4)字并位并WPBP(WordParallelandBitParallel)全并行计算机;
m>1,n>1;
IILIACIV(64,64),ASC(64,32),PEPE,Cmmp
8、汉德勒分类法
由WolfganHandler于1977年根据并行度和流水线提出的一种分类方法。
又称为ESC(ErlangeClassificationScheme)分类法。
根据并行度和流水线分类,计算机硬件结构分成三个层次,并分别考虑它们的可并行性和流水处理程度。
这三个层次是:
(1)程序级k:
程控部件(PCU)的个数;
(2)操作级d:
算术逻辑部件(ALU)或处理部件(PU)的个数;
(3)逻辑级w:
每个算术逻辑部件包含的逻辑线路(ELC)的套数。
据此可以把计算机系统的结构用公式t(系统型号)=(k,d,w)表示。
t(EDVAC)=(1,1,1)
t(Pentium)=(1,1,32)
t(STARAN)=(1,8192,1)
t(ILLIACⅣ)=(1,64,64)
t(Cmmp)=(16,1,16)
为了表示流水线,采用:
t(系统型号)=(k×
k'
,d×
d'
,w×
w'
)
其中:
表示宏流水线中程控部件的个数
表示指令流水线中算术逻辑部件的个数
表示操作流水线中基本逻辑线路的套数
Cray1有1个CPU,12个相当于ALU或PE的处理部件,最多8级流水线,字长为64位,可以实现1~14位流水线。
表示为:
t(Cray1)=(1,12×
8,64(1~14))
又例如:
t(PEPE)=(1×
3,288,32)
t(TIASC)=(1,4,64×
8)
三、计算机系统设计
计算机系统结构的设计是整个计算机系统设计当中极为重要的内容,因此也必须遵守计算机系统设计的原则方法和步骤。
下面介绍目前在计算机系统设计中应该遵守的定量原理。
(一)计算机系统的设计原则
1、加快经常性事件的速度(Makethecommoncasefast)
这是最重要也是被广泛采用的设计准则。
道理十分明显,使经常性事件的处理速度加快能明显提高整个系统的性能。
2、Amdahl定律
IBM公司的设计师Amdahl在1967年提出的Amdahl定律告诉我们:
系统中某一部件由于采用某种更快的执行方式后整个系统性能的提高与这种执行方式的使用频率或占总执行时间的比例有关。
性能提高的衡量指标为加速比,其定义为:
在Amdahl定律中,加速比与两个因素有关:
一是被改进部分的使用频率的大小即可改进部分所占时间的百分比:
二是被改进部分本身在改进后所取得的效果,即改进部分的加速比,也可以用时间参量来表示:
改进之后整个任务的执行时间为(改进前时间-(改进前可改时间-改进后可改时间)):
其中T0为改进前的整个任务的执行时间。
改进后整个系统的加速比达到:
其中(1-Fe)表示不可改进部分,显然当Fe为0,即没有改进部分时,Sn为1,所以性能的提高受改进部分所占比例的限制。
当Se→∞时,则Sn=1/(1-Fe),因此,可获取性能改善极限值受Fe值的约束。
3、访问局部性原理
程序访问局部性原理说明了计算机在程序执行过程中呈现出的一种规律,即程序往往重复使用它刚刚使用过的数据和指令。
局部性分为时间上的局部性和空间上的局部性两种。
所谓时间局部性是指近期被访问的代码,很可能不久又将再次被访问;
空间局部性是指地址上相邻近的代码可能会被连续地访问。
目前存储系统层次结构的设计就是以此为理论基础。
(二)计算机系统设计的主要任务
1、确定用户对计算机系统的功能、价格和性能要求
功能要求包括:
应用领域、软件兼容性、操作系统的要求、各种通用国际标准的要求。
价格要求:
考虑用户或市场对计算机功能和性能要求的前提下,尽量降低成本。
性能要求包括:
速度、容量、输入/输出的种类、可靠性、可维护性、安全性、容错能力、人机交互的能力等等。
2、软硬件的平衡
硬件实现:
速度快、成本高;
灵活性差、占用内存少。
软件实现:
速度低、复制费用低;
灵活性好、占用内存多。
设计必须考虑硬件和软件的合理分配,同时还应考虑设计的复杂性及软硬件实现的难易程度。
3、设计出符合今后发展方向的系统结构
一个成功的系统结构应该能经得住软、硬件技术的发展以及应用的变化。
因此设计者必须特别注意计算机应用和计算机技术的发展趋势,这样才能延长一种机器的使用寿命。
发展趋势:
硬件实现的比例越来越高,软件所占的成本越来越高。
(三)计算机系统设计的主要方法
基于计算机系统层次结构的基础上,其设计方法可以有以下的三种:
1、由上向下(Top-Down)
设计过程:
面向应用的数学模型→面向应用的高级语言→面向这种应用的操作系统→面向操作系统和高级语言的机器语言→面向机器语言的微指令系统和硬件实现。
应用场合:
专用计算机的设计(早期计算机的设计)。
特点:
对于所面向的应用领域,性能(性能价格比)很高。
随着通用计算机价格降低,目前已经很少采用。
2、由下向上(Bottom-Up)(通用计算机系统的一种设计方法)
根据当时的器件水平,设计微程序机器级和传统机器级。
根据不同的应用领域设计多种操作系统、汇编语言、高级语言编译器等。
最后设计面向应用的虚拟机器级。
在计算机早期设计中(60~70年代)广为采用。
特点:
容易使软件和硬件脱节,整个计算机系统的效率降低。
3、中间开始(Middle-Out)
首先定义软硬件的分界面。
然后各个层次分别进行设计。
用于系列机的设计。
软硬件的分界面在上升,硬件比例在增加。
硬件价格下降,软件价格上升。
软硬件人员结合共同设计。
四、计算机的性能评价
(一)CPU性能
CPU的性能是指CPU执行程序所用时间,也就是CPU连续地执行一条条指令的时间,不包括I/O等待时间。
CPU的性能取决于三个要素:
①时钟频率;
②每条指令所花的时钟周期数CPI;
③指令条数IC。
则:
其中Ii表示i指令在程序中执行的次数,CPIi表示i指令所需的平均时钟周期数,n为指令种类数。
(二)MIPS和MFLOPS
1、MIPS(millioninstructionspersecond)
它表示每秒百万条指令数,对于一个给定的程序,MIPS定义为:
程序的执行时间为:
Te为程序执行时间,CPI为每条指令的平均时钟周期,时钟频率为每秒周期数即每周期的时间的倒数。
显然,机器愈快其MIPS愈高,但MIPS对指令系统和程序的依赖性很大,故在某些情况下不能准确反映系统的性能。
2、MFLOPS(millionfloatingpointoperationspersecond)
表示每秒百万次浮点操作次数,MFLOPS定义为:
显然,MFLOPS可以用来衡量机器浮点操作的性能,因为同一程序在不同机器上执行的指令可能不同,但执行的浮点运算却是完全相同的。
但是,MFLOPS不能体现机器的整体性能;
MFLOPS取决于机器和程序两个方面,因为不同机器浮点运算集不同,因此不同的浮点操作类型运算时间不同。
(三)系统性能测试
为了能进行合理的评价,通常采用不同类型的程序进行测试,经过实践选择出的这些程序称为基准测试程序。
1、基准测试程序
(1)实际应用程序:
例如C语言的编译程序,Tex正文处理程序,SpiceCAD工具软件等。
(2)核心程序:
从实际程序中抽取小量关键的循环程序段,例如Livermore24Loop(24个循环段)、Linpack(解线性方程组)。
(3)综合测试程序:
它类似于核心程序,但考虑到各种不同的操作和不同种类的程序。
如Whetstone和Dhrystone等。
2、性能评价结果处理
根据哪个数据来确定机器的性能呢?
一般有以下三个:
假设有n个测试程序,Ri为第i个测试程序的速率;
Ti为第i个测试程序所需的时间,则:
速率算术平均值Am:
速率几何平均值Gm:
通常用于各机器之间的比较,可以以某一机器为标准,对其他机器进行规格化,再求其几何平均值的比。
速率加权平均值Am:
其中,ωi是第i个程序在任务中所占的比重。
五、计算机系统结构的发展
(一)冯·
诺依曼机型及其演变
1946年普林斯顿高级研究所数学家冯·
诺依曼(VanNenmann)提出了一个完整的现代计算机雏形,它由运算器、控制器、存储器、输入输出四部分组成,主要特点是程序存储,指令驱动,集中控制,见图1.5.1所示。
一般认为其主要特征有以下几点:
(1)机器以运算器为中心。
除了完成运算以外,机器内部的数据传输都经过运算器。
各部件的操作以及它们之间的协调由控制器集中控制。
(2)存储器按一维线性编址,顺序访问存储器地址单元,每个存储单元的位数固定。
(3)程序存储,指令和数据无区别存放在存储器中,指令和数据一样可以送到运算器中进行运算,指令与数据的区别主要在于地址区域不同。
(4)指令在存储器中按其执行顺序存放,由一个顺序控制器(亦称程序计数器或指令计数器)指定即将被执行的指令地址。
每读取一条指令后,计数器自动按顺序递增。
(5)指令由操作码和地址码组成,操作码指明操作类型,地址码指明操作数的地址和结果地址。
(6)数据以二进制表示。
经历几十年的不断改进与发展,现代的计算机虽然仍然以冯·
诺依曼的结构为基础,但已有了许多重大改进,主要改进是:
存储器为中心,总线结构,分散控制。
具体表现在下列几个方面。
(1)计算机处理的数据类型不断增加新的表示形式,除了通常的定点数、浮点数、十进制数、逻辑数字符等基本数据类型外,还有向量、堆栈、自定义数据、汉字等。
(2)指令种类与寻址方式增加,增加了支持操作系统与语言编译的指令,增加了多种寻址方式如变址寻址、间接寻址、相对寻址、基址寻址以及为了存储管理而采用的页面寻址等方式。
(3)改变了以CPU为中心的数据传送方式,以存储器为中心,存储系统中采用了虚拟存储,高速缓存,为了提高速度出现了多存储体的并行存取或交叉存储的结构,改变了一维线性编址的方式。
采用了指令与数据分体的存储方式,以有利于并行操作。
(4)处理器采用了多种新技术,如堆栈的采用、支持过程调用及递归、表达式的计算,采用指令流水、操作流水的技术与多功能部件,多处理器的并行技术,提高了CPU的功能,改进并行性能。
(二)系统结构并行技术的发展
计算机系统结构发展的重要方向就是并行处理。
并行处理技术的发展经过以下几个阶段:
1、串行阶段
传统的程序存储计算机。
2、先行处理
最初的并行,通过预取指令使取指令与指令执行操作重叠。
3、功能并行
(1)采用并行多功能部件;
(2)中断技术,使输入输出与CPU操作并行;
(3)多体存储器交叉并行访问技术,使存储器与存储器及CPU并行;
(4)整数运算,浮点运算以及指令执行的取指、译码、读操作数由各自独立的功能部件完成。
4、流水线技术
(1)一个任务分成多个子任务同时执行;
(2)用软件控制循环执行,称为标量流水线处理机。
5、向量处理机
(1)以硬件或固件的结构执行,称为显式向量处理机;
(2)实现存储器到存储器和寄存器到寄存器之间的并行处理。
6、SIMD、MIMD
如阵列机、联想机、多处理机与多计算机。
(三)影响计算机系统结构的因素
1、软件对系统结构的影响
由于软件相对于硬件的成本越来越贵,并且已积累了大量成熟的系统软件和应用软件,用户希望能在性能更好的机器上运行原来开发的软件,以便保护软件开发投资,为此采用以下几种措施。
(1)系列机与兼容机:
所谓系列机是指同一厂家生产的具有相同系统结构,但采取了不同的组成和实现技术的一系列计算机系统。
如IBM系列机具有以下结构特点:
相同的指令系统,采用顺序执行、重迭、流水和并行处理方式。
相同的32位字长,数据通路宽度为8位、16位、32位、64位。
采用系列机方法的主要优点:
系列机之间软件兼容,可移植性好;
插件、接口等相互兼容;
便于实现机间通信;
便于维修、培训;
有利于提高产量、降低成本。
采用系列机方法的主要缺点:
限制了计算机系统结构的发展。
如PC系列机,其系统结构最落后,使用也最普及
(2)模拟和仿真:
用软件的方法在一台现有的计算机系统上实现另一台计算机的指令系统叫模拟。
被模拟的机器是不存在的,称为虚拟机,执行模拟程序的机器称为宿主机。
用微程序(即用硬件、固件或软件、硬件、固件混合)的方法在一台现有的计算机系统上实现另一台计算机的指令系统叫仿真。
执行微程序的机器称为宿主机,被实现的称为目标机。
模拟是用宿主机的指令编写出一段程序来解释虚拟机上的一条指令;
仿真是直接用宿主机的一段微程序解释执行目标机的每条指令。
从而实现软件的移植。
(3)统一标准高级语言:
采用同一种不依赖于任何具体机器的高级语言编写系统软件和应用软件。
但至今还没有这样一种高级语言。
2、应用需求对系统结构的影响
应用的需求一直是计算机发展的动力。
3、器件对系统结构的影响
在相当长的一段时间内,器件的改进是提高计算机速度的主要途径,器件发展对提高处理机主频(Fz)起决定性作用。
器件发展的特点:
集成度迅速提高、速度已接近极限、价格直线下降、可靠性越来越高。
第一章概论关键词汇
1、计算机系统结构
2、指令流
机器执行的指令序列。
3、数据流
由指令流调用的数据序列,包括输入数据和中间结果。
4、多倍性
5、Amdahl定律
6、字宽
7、位宽
8、MIPS
9、MFLOPS
10、CPU的性能
是指CPU执行程序所用时间,也就是CPU连续地执行一条条指令的时间。
11、程序访问局部性原理
12、最大并行度
13、透明性
14、系列机
15、模拟
用软件的方法在一台现有的计算机系统上实现另一台计算机的指令系统叫模拟,是用宿主机的指令编写出一段程序来解释虚拟机上的一条指令;
16、仿真
用微程序(即用硬件、固件或软件、硬件、固件混合)的方法在一台现有的计算机系统上实现另一台计算机的指令系统叫仿真,是直接用宿主机的一段微程序解释执行目标机的每条指令。
第一章概论FAQ
一、实现程序移植的主要途径有什么?
答:
统一高级语言、系列机、模拟、和仿真。
二、提高计算机系统并行性的主要技术途径有什么?
提高计算机系统并行性的主要技术途径有时间重叠、资源重复和资源共享。
三、计算机系统的Flynn(弗林)分类法是按什么来分类的?
共分哪几类?
解释其含义。
弗林分类法是按指令流、数据流以及多倍性分类的。
共分四类。
SISD——指令部件只对一条指令处理,只控制一个操作部件操作。
如一般的串行单处理机。
SIMD——由单一指令部件同时控制多个重复设置的处理单元,执行同一指令下不同数据的操作。
如阵列处理机。
MISD——多个指令部件对同一数据的各个处理阶段进行操作。
这种机器很少见。
MIMD——多个独立或相对独立的处理机分别执行各自的程序、作业或进程。
例如多处理机。
四、假设高