系统的性能取决于多种因素(性能指标),最基本的因素在于系统配置(构成系统的各种软硬件的成分、数量、能力和系统结构、处理和调度策略等)和系统负载(工作负载和方式,例如,交互方式、批处理方式等)。性能评价的主要任务就是研究系统配置、系统负载和性能指标之间的相互关系。
(1)硬联逻辑级。这是计算机的内核,由门、触发器等逻辑电路组成。
(2)微程序级。这一级的机器语言是微指令集,程序员用微指令编写的微程序一般直接由硬件执行。
(3)传统机器级。这一级的机器语言是该机的指令集,程序员用机器指令编写的程序可以由微程序进行解释。
(4)操作系统级。从操作系统的基本功能来看,一方面它要直接管理传统机器中的软硬件资源,另一方面它又是传统机器的延伸。
(5)汇编语言级。这一级的机器语言是汇编语言,完成汇编语言翻译的程序称为汇编程序。
(6)高级语言级。这一级的机器语言就是各种高级语言,通常用编译程序来完成高级语言翻译的工作。
(7)应用语言级。这一级是为了使计算机满足某种用途而专门设计的,因此,这一级的机器语言就是各种面向问题的应用语言。
(1)控制器。控制器是分析和执行指令的部件,也是统一指挥并控制计算机各部件协调工作的中心部件,所依据的是机器指令。控制器的组成包含程序计数器、指令寄存器、指令译码器、时序部件、微操作控制信号形成部件和中断机构。
(2)运算器。运算器也称为算术逻辑单元(Arithmetic and Logic Unit,ALU),其主要功能是在控制器的控制下完成各种算术运算和逻辑运算。一个计算过程需要用到加法器/累加器、数据寄存器或其他寄存器、状态寄存器等。运算器的位数,即运算器一次能对多少位的数据做加法,是衡量运算器的一个重要指标。运算器可以分成单总线结构的运算器、双总线结构的运算器和三总线结构的运算器。
(3)主存储器。主存储器也称为内存储器(通常简称为“内存”或“主存”)。存储现场操作的信息与中间结果,包括机器指令和数据。
(4)辅助存储器。辅助存储器也称为外存储器,通常简称为外存或辅存。存储需要长期保存的各种信息。
(5)输入设备。输入设备的任务是把人们编好的程序和原始数据送到计算机中去,并且将它们转换成计算机内部所能识别和接受的信息方式。按输入信息的形态可分为字符(包括汉字)输入、图形输入、图像输入及语音输入等。目前,常见的输入设备有键盘、鼠标、扫描仪等。
(6)输出设备。输出设备的任务是将计算机的处理结果以人或其他设备所能接受的形式送出计算机。目前,最常用的输出设备是打印机和显示器。有些设备既可以是输入设备,同时也可以是输出设备。
计算机软件按照功能,可以分为应用软件和系统软件两大类。
1.系统软件
系统软件用于实现计算机系统的管理、调度、监视和服务等功能。通常将系统软件分为以下五类:
(1)操作系统。操作系统是用户和计算机之间的接口,是系统软件的核心。
(2)语言处理程序。语言处理程序的主要任务是将计算机可识别的语言(例如,汇编语言、各种高级语言等)编写的源程序翻译成计算机能直接执行的语言(机器语言)。语言处理程序包括编译程序、汇编程序、解释程序等。编译程序和解释程序都可以把高级语言变成为机器语言,但前者是先将源程序转换为目标程序,再开始执行;而后者对源程序的处理则采用边解释边执行的方法。
(3)服务性程序。服务性程序为用户使用的系统提供许多功能,包括链接程序、编辑程序、调试程序、诊断程序等。
(4)数据库管理系统。包括数据库和数据库管理软件。
(5)计算机网络软件。计算机网络软件是为计算机网络配置的系统软件,主要负责计算机之间的通信和数据传送。
2.应用软件
应用软件是用户为解决某种应用问题而编制的一些程序;应用软件是用户或第三方软件公司为各自业务开发和使用的各种软件,种类繁多。例如,财务管理软件、项目管理软件等。
1.存储程序的概念
“存储程序”的概念是冯?诺依曼等人于1946年6月首先提出来的,它可以简要地概括为以下几点:
(1)计算机(指硬件)应由运算器、存储器、控制器、输入设备和输出设备五大基本部件组成。
(2)计算机内部采用二进制来表示指令和数据。
(3)将编好的程序和原始数据事先存入存储器中,然后再启动计算机工作。这就是存储程序的基本含义。
2.Flynn分类
Michael.J.Flynn提出根据指令流、数据流的多倍性特征对计算机系统进行分类(通常称为Flynn分类法),有关定义如下:
(1)指令流:指机器执行的指令序列;
(2)数据流:指由指令流调用的数据序列,包括输人数据和中间结果,但不包括输出数据。
(3)多倍性:指在系统性能瓶颈部件上同时处于同一执行阶段的指令或数据的最大可能个数。
Flynn根据不同的指令流-数据流组织方式,把计算机系统分成以下四类:
(1)单指令流单数据流(Single Instruction stream and Single Data stream,SISD):SISD其实就是传统的顺序执行的单处理器计算机,其指令部件每次只对一条指令进行译码,并只对一个操作部件分配数据。流水线方式的单处理机有时也被当作SISD。
(2)单指令流多数据流(Single Instruction stream and Multiple Data stream,SIMD):SIMD以并行处理机(矩阵处理机)为代表,并行处理机包括多个重复的处理单元,由单一指令部件控制,按照同一指令流的要求为它们分配各自所需的不同数据。
(3)多指令流单数据流(Multiple Instruction stream and Single Data stream,MISD):MISD具有n个处理单元,按n条不同指令的要求对同一数据流及其中间结果进行不同的处理。一个处理单元的输出又作为另一个处理单元的输入。这类系统实际上很少见到。有文献把流水线看作多个指令部件,称流水线计算机是MISD。
(4)多指令流多数据流(Multiple Instruction stream and Multiple Data stream,MIMD):MIMD是指能实现作业、任务、指令等各级全面并行的多机系统。多处理机属于MIMD。当前的高性能服务器与超级计算机大多具有多个处理机,能进行多任务处理,称为多处理机系统,无论是海量并行处理(Massive Parallel Processing,MPP)结构,还是对称多处理(Symmetrical Multi-Processing,SMP)结构,都属于这一类。
传统的存储器系统一般分为高速缓冲存储器(cache)、主存、辅存三级。
存储器中数据常用的存取方式有顺序存取、直接存取、随机存取和相联存取等四种。
(1)顺序存取:存储器的数据以记录的形式进行组织。对数据的访问必须按特定的线性顺序进行。磁带存储器采用顺序存取的方式。
(2)直接存取:与顺序存取相似,直接存取也使用一个共享的读写装置对所有的数据进行访问。但是,每个数据块都拥有惟一的地址标识,读写装置可以直接移动到目的数据块的所在位置进行访问。存取时间也是可变的。磁盘存储器采用直接存取的方式。
(3)随机存取:存储器的每一个可寻址单元都具有自己惟一的地址和读写装置,系统可以在相同的时间内对任意一个存储单元的数据进行访问,而与先前的访问序列无关。主存储器采用随机存取的方式。
(4)相联存取:相联存取也是一种随机存取的形式,但是选择某一单元进行读写是取决于其内容而不是其地址。与普通的随机存取方式一样,每个单元都有自己的读写装置,读写时间也是一个常数。使用相联存取方式,可以对所有的存储单元的特定位进行比较,选择符合条件的单元进行访问。为了提高地址映射的速度,cache采取相联存取的方式。
存储器系统的性能主要由存取时间、存储器带宽、存储器周期和数据传输率等来衡量。
主存用来存放计算机运行期间所需要的程序和数据,CPU可直接随机地进行读/写。根据工艺和技术不同,主存可分为随机存取存储器和只读存储器。
1.随机存取存储器
随机存取存储器(Random Access Memory,RAM)既可以写入也可以读出,但断电后信息无法保存,因此只能用于暂存数据。RAM又可分为DRAM(Dynamic RAM,动态RAM)和SRAM(Static RAM,静态)两种,DRAM的信息会随时间逐渐消失,因此需要定时对其进行刷新维持信息不丢失;SRAM在不断电的情况下信息能够一直保持而不会丢失。DRAM的密度大于SRAM且更加便宜,但SRAM速度快,电路简单(不需要刷新电路),然而容量小,价格高。
2.只读存储器
只读存储器(Read Only Memory,ROM)可以看作RAM的一种特殊形式,其特点是:存储器的内容只能随机读出而不能写入。由于信息一旦写入存储器就固定不变了,即使断电,写入的内容也不会丢失,所以又称为固定存储器。ROM一般用于存放系统程序BIOS(Basic Input Output System,基本输入输出系统)、专用的子程序,或用作函数发生器、字符发生器及微程序控制器中的控制存储器。
通常把向ROM写入数据的过程称为对ROM进行编程,根据编程方法的不同,ROM通常可以分为几类。
(1)MROM(Mask ROM,掩模式ROM)。它的内容是由半导体制造厂按用户提出的要求在芯片的生产过程中直接写入的,写入之后任何人都无法改变其内容。MROM的优点是可靠性高,集成度高,形成批量之后价格便宜;缺点是用户对制造厂的依赖性过大,灵活性差。
(2)PROM(Programmable ROM,一次可编程 ROM)。只能进行一次写入操作(与ROM相同),但是可以在出厂后,由用户使用特殊电子设备进行写入。
(3)EPROM(Erasable PROM,可擦除的 PROM)。不仅可以由用户利用编程器写入信息,而且可以对其内容进行多次改写。EPROM出厂时,存储内容为全“1”,用户可以根据需要将其中某些记忆单元改为“0”。当需要更新存储内容时可以将原存储内容擦除(恢复全“1”),以便再写入新的内容。EPROM又可分为紫外线擦除和电擦除。EPROM虽然既可读,又可写,但它却不能取代RAM。因为EPROM的编程次数(寿命)是有限的,而且每次写入的时间太长,速度太慢。
(4)闪速存储器(flash memory,闪存)。一种快擦写型存储器,它的主要特点是既可在不加电的情况下长期保存信息,又能在线进行快速擦除与重写,兼备了电擦除EPROM和RAM的优点。目前,大多数微型计算机的主板采用闪速存储器来存储BIOS程序。由于BIOS的数据和程序非常重要,不允许修改,故早期主板BIOS芯片多采用PROM或EPROM。闪速存储器除了具有ROM的一般特性外,还有低电压改写的特点,便于用户自动升级BIOS。
辅助存储器用于存放当前不需要立即使用的信息,一旦需要,再和主机成批交换数据,是主存储器的后备,因此称之为辅助存储器;它又是主机的外部设备,又称之为外存储器。辅助存储器的最大特点是存储器容量大、可靠性高、价格低。常用的辅助存储器有磁带存储器、硬盘存储器、磁盘阵列和光盘存储器。
1.磁带存储器
磁带存储器是一种顺序存取的设备,存取时间较长,但存储容量大,便于携带,价格便宜,所以也是一种主要的辅助存储器。
磁带的内容由磁带机进行读写,按磁带机的读写方式主要可以分为两种,分别是启停式和数据流。启停式磁带机按带宽可以分为1/4英寸、1/2英寸和1英寸三种。磁带上的信息以文件块的形式存放;数据流磁带机结构简单,价格低,数据传输速率快。其记录格式是串行逐道记录信息,每次读写1位信息,数据连续地写在磁带上,数据块之间以空隙分隔。磁带机不能在块间启停。
2.硬盘存储器
在硬盘中,信息分布呈以下层次:记录面、圆柱面、磁道和扇区。 一台硬盘驱动器中有多个磁盘片,每个盘片有两个记录面,每个记录面对应一个磁头,所以记录面号就是磁头号。所有的磁头安装在一个公用的传动设备或支架上,磁头一致地沿盘面径向移动,单个磁头不能单独地移动。在记录面上,一条条磁道形成一组同心圆,最外圈的磁道为0号,往内则磁道号逐步增加。在一个盘组中,各记录面上相同编号(位置)的各磁道构成一个柱面。若每个磁盘片有m个磁道,则该硬盘共有m个柱面。
引入柱面的概念是为了提高硬盘的存储速度。当主机要存入一个较大的文件时,若一条磁道存不完,就需要存放在几条磁道上。这时,应首先将一个文件尽可能地存放在同一柱面中。如果仍存放不完,再存入相邻的柱面内。
一条磁道划分多少扇区,每个扇区可存放多少字节,一般由操作系统决定。磁道上的扇区编号从1开始,不像磁头或柱面编号从0开始。
硬盘标称的容量是指格式化容量,即用户实际可以使用的存储容量,而非格式化容量是指磁记录介质上全部的磁化单元数,格式化容量一般约为非格式化容量的60%~70%。格式化存储容量的计算公式是:
存储容量 = n×t×s×b
其中:n为保存数据的总记录面数,t为每面磁道数,s为每道的扇区数,b为每个扇区存储的字节数。
硬盘转速是硬盘主轴电机的旋转速度,它是决定硬盘内部传输速率的关键因素之一,在很大程度上直接影响到硬盘的速度。硬盘转速以每分钟多少转(RPM)来表示,RPM值越大,内部传输速率就越快,访问时间就越短,硬盘的整体性能也就越好。
硬盘的存取时间主要包括三个部分。第一部分是指磁头从原先位置移动到目的磁道所需要的时间,称为寻道时间或查找时间;第二部分是指在到达目的磁道以后,等待被访问的记录块旋转到磁头下方的等待时间;第三部分是信息的读写操作时间。由于寻找不同磁道和等待不同记录块所花的时间不同,所以通常取它们的平均值。因为读/写操作时间比较快,相对于平均寻道时间Ts和平均等待时间Tw来说,可以忽略不计。
硬盘缓存存在的目的是为了解决硬盘内部与接口数据之间速度不匹配的问题,它可以提高硬盘的读/写速度。
硬盘的数据传输速率分为内部数据传输速率和外部数据传输速率。内部数据传输速率是指磁头与硬盘缓存之间的数据传输速率,它的高低是评价一个硬盘整体性能的决定性因素。外部数据传输速率指的是系统总线与硬盘缓存之间的数据传输速率,外部数据传输速率与硬盘接口类型和缓存大小有关。
硬盘接口是硬盘与主机系统间的连接部件,不同的硬盘接口决定着硬盘与计算机之间的连接速度,在整个系统中,硬盘接口的优劣直接影响着程序运行快慢和系统性能好坏。
3.磁盘阵列
廉价磁盘冗余阵列(Redundant Array of Inexpensive Disks,RAID)技术旨在缩小日益扩大的CPU速度和磁盘存储器速度之间的差距。其策略是用多个较小的磁盘驱动器替换单一的大容量磁盘驱动器,同时合理地在多个磁盘上分布存放数据以支持同时从多个磁盘进行读写,从而改善了系统的I/O性能。RAID现在代表独立磁盘冗余阵列(Redundant Array of Independent Disks),RAID机制中共分8个级别,RAID应用的主要技术有分块技术、交叉技术和重聚技术。
(1)RAID0级(无冗余和无校验的数据分块):具有最高的I/O性能和最高的磁盘空间利用率,易管理,但系统的故障率高,属于非冗余系统,主要应用于那些关注性能、容量和价格而不是可靠性的系统。
(2)RAID1级(磁盘镜像阵列):由磁盘对组成,每一个工作盘都有其对应的镜像盘,上面保存着与工作盘完全相同的数据拷贝,具有最高的安全性,但磁盘空间利用率只有50%。RAID1主要用于存放系统软件、数据以及其他重要文件。它提供了数据的实时备份,一旦发生故障,所有的关键数据即刻就可使用。
(3)RAID2级(采用纠错海明码的磁盘阵列):采用了海明码纠错技术,用户需增加校验盘来提供单纠错和双验错功能。对数据的访问涉及阵列中的每一个盘。大量数据传输时I/O性能较高,但不利于小批量数据传输。实际应用中很少使用。
(4)RAID3和RAID4级(采用奇偶校验码的磁盘阵列):把奇偶校验码存放在一个独立的校验盘上。如果有一个盘失效,其上的数据可以通过对其他盘上的数据进行异或运算得到。读数据很快,但因为写入数据时要计算校验位,速度较慢。RAID3采用位交叉奇偶校验码,RAID4采用块交叉奇偶校验码。RAID3适用于大型文件且I/O需求不频繁的应用,RAID4适用于大型文件的读取。
(5)RAID5(无独立校验盘的奇偶校验码磁盘阵列):与RAID4类似,但没有独立的校验盘,校验信息分布在组内所有盘上,对于大批量和小批量数据的读写性能都很好。RAID4和RAID5使用了独立存取技术,阵列中每一个磁盘都相互独立地操作,所以I/O请求可以并行处理。因此,该技术非常适合于I/O需求频繁的应用而不太适合于要求高数据传输率(大型文件)的应用,例如银行、金融、股市等大型数据处理中心的OLTP应用。
(6)RAID6(具有独立的数据硬盘与两个独立的分布式校验方案):在RAID6级的阵列中设置了一个专用的、可快速访问的异步校验盘。该盘具有独立的数据访问通路,但其性能改进有限,价格却很昂贵。
(7)RAID7(具有最优化的异步高I/O速率和高数据传输率的磁盘阵列):是对RAID6的改进。在这种阵列中的所有磁盘,都具有较高的传输速度,有着优异的性能,是目前最高档次的磁盘阵列。
(8)RAID10(高可靠性与高性能的组合):由多个RAID等级组合而成,建立在RAID0和RAID1基础上。RAID1是一个冗余的备份阵列,而RAID0是负责数据读写的阵列,因此又称为RAID 0+1。由于利用了RAID0极高的读写效率和RAID1较高的数据保护和恢复能力,使RAID10成为了一种性价比较高的等级。
4.光盘存储器
光盘存储器是利用激光束在记录表面存储信息,根据激光束的反射光来读出信息。根据性能和用途的不同,光盘存储器可分为CD-ROM、CD-R、CD-RW和DVD-ROM四种类型:
(1)CD-ROM(Compact Disc Read-Only Memory,只读压缩盘)又称固定型光盘。它由生产厂家预先写入数据和程序,使用时用户只能读出,不能修改或写入新内容。CD-ROM的读取目前有三种方式,分别是恒定角速度、恒定线速度和部分恒定角速度。
(2) CD-R光盘采用WORM(Write One Read Many)标准,光盘可由用户写入信息,写入后可以多次读出;但只能写入一次,信息写入后将不能再修改,所以称为只写一次型光盘。
(3)CD-RW光盘是可以写入、擦除、重写的可逆性记录系统,这种光盘类似于磁盘,可重复读写。
(4) DVD-ROM技术类似于CD-ROM技术,但是可以提供更高的存储容量。DVD可以分为单面单层、单面双层、双面单层和双面双层四种物理结构。
光盘存储器由光盘控制器和光盘驱动器及接口组成。光盘控制器主要包括数据输入缓冲器、记录格式器、编码器、读出格式器和数据输出缓冲器等部分;光盘驱动器主要包括主轴电机驱动机构、定位机构、光头装置及电路等。其中光头装置部分最复杂,是驱动器的关键部分。
光盘上的光道是一条从内向外的由凹痕和平坦表面相互交替而组成的连续的螺旋形路径。程序和数据文件是按内螺旋线的规律顺序存放在盘上的,不能像硬盘存储器那样读取文件的每个扇区,所以读出速度较慢。
cache的功能是提高CPU数据输入输出的速率,突破所谓的“冯?诺依曼瓶颈”,即CPU与存储系统间数据传送带宽限制。
cache通常采用相联存储器(Content Addressable Memory,CAM)。CAM是一种基于数据内容进行访问的存储设备。当对其写入数据时,CAM能够自动选择一个未用的空单元进行存储;当要读出数据时,不是给出其存储单元的地址,而是直接给出该数据或者该数据的一部分内容,CAM对所有存储单元中的数据同时进行比较,并标记符合条件的所有数据以供读取。
1.cache基本原理
使用cache改善系统性能的依据是程序的局部性原理。程序访问的局部性有两个方面的含义,分别是时间局部性和空间局部性。时间局部性是指如果一个存储单元被访问,则可能该单元会很快被再次访问。这是因为程序存在着循环。空间局部性是指如果一个存储单元被访问,则该单元邻近的单元也可能很快被访问。这是因为程序中大部分指令是顺序存储、顺序执行的,数据一般也是以向量、数组、树、表等形式簇聚地存储在一起的。
当CPU需要读取数据时,首先在cache中查找是否有所需内容,如果有,则直接从cache中读取;若没有,再从内存中读取该数据,然后同时送往CPU和cache。如果CPU需要访问的内容大多都能在cache中找到(称为访问命中),则可以大大提高系统性能。
如果以h代表对cache的访问命中率(“1-h”称为失效率,或者称为未命中率),t1表示cache的周期时间,t2表示内存的周期时间,以读操作为例,使用“cache+主存储器”的系统的平均周期为t3。则:t3=t1h+t2(1-h)
系统的平均存储周期与命中率有很密切的关系,命中率的提高即使很小也能导致性能上的较大改善。
2.映射机制
当CPU发出访存请求后,存储器地址先被送到cache控制器以确定所需数据是否已在cache中,若命中则直接对cache进行访问。这个过程称为cache的地址映射(映像)。在cache的地址映射中,主存和cache将均分成容量相同的块(页)。常见的映射方法有直接映射、全相联映射和组相联映射。
(1)直接映射。直接映射方式以随机存取存储器作为cache存储器,硬件电路较简单。直接映射是一种多对一的映射关系,但一个主存块只能够复制到cache的一个特定位置上去。直接映射方式的优点是比较容易实现,缺点是不够灵活,有可能使cache的存储空间得不到充分利用。
(2)全相联映射。全相联映射使用相联存储器组成的cache存储器。在全相联映射方式中,主存的每一页可以映射到cache的任一块。如果淘汰cache中某一块的内容,则可调入任一主存页的内容,因而较直接映射方式灵活。速度很慢,失掉了高速缓存的作用,这是全相联映射方式的最大缺点。
(3)组相联映射。组相联映射是直接映射和全相联映射的折中方案。它将cache中的块再分成组,通过直接映射方式决定组号,通过全相联映射的方式决定cache中的块号。在组相联映射方式中,主存中一个组内的页数与cache的分组数相同。
3.替换算法
当cache产生了一次访问未命中之后,相应的数据应同时读入CPU和cache。但是当cache已存满数据后,新数据必须替换(淘汰)cache中的某些旧数据。最常用的替换算法有以下三种:
(1)随机算法。这是最简单的替换算法。随机法完全不管cache块过去、现在及将来的使用情况,简单地根据一个随机数,选择一块替换掉。
(2)先进先出(First In and First Out,FIFO)算法。按调入cache的先后决定淘汰的顺序,即在需要更新时,将最先进入cache的块作为被替换的块。这种方法要求为每块做一记录,记下它们进入cache的先后次序。这种方法容易实现,而且系统开销小。其缺点是可能会把一些需要经常使用的程序块(如循环程序)替换掉。
(3)近期最少使用(Least Recently Used,LRU)算法。LRU算法是把CPU近期最少使用的块作为被替换的块。这种替换方法需要随时记录cache中各块的使用情况,以便确定哪个块是近期最少使用的块。LRU算法相对合理,但实现起来比较复杂,系统开销较大。通常需要对每一块设置一个称为“年龄计数器”的硬件或软件计数器,用以记录其被使用的情况。
4.写操作
因为需要保证缓存在cache中的数据与内存中的内容一致,相对读操作而言,cache的写操作比较复杂,常用的有以下几种方法。
(1)写直达(write through)。当要写cache时,数据同时写回内存,有时也称为写通。当某一块需要替换时,也不必把这一块写回到主存中去,新调入的块可以立即把这一块覆盖掉。这种方法实现简单,而且能随时保持主存数据的正确性,但可能增加多次不必要的主存写入,会降低存取速度。
(2)写回(write back)。CPU修改cache的某一块后,相应的数据并不立即写入内存单元,而是当该块从cache中被淘汰时,才把数据写回到内存中。在采用这种更新策略的cache块表中,一般有一个标志位,当一块中的任何一个单元被修改时,标志位被置“1”。在需要替换掉这一块时,如果标志位为“1”,则必须先把这一块写回到主存中去之后,才能再调入新的块;如果标志位为“0”,则这一块不必写回主存,只要用新调入的块覆盖掉这一块即可。这种方法的优点是操作速度快,缺点是因主存中的字块未随时修改而有可能出错。
(3)标记法。对cache中的每一个数据设置一个有效位。当数据进入cache后,有效位置“1”;而当CPU要对该数据进行修改时,数据只需写入内存并同时将该有效位置“0”。当要从cache中读取数据时需要测试其有效位,若为“1”则直接从cache中取数,否则,从内存中取数。
目前,主流的网络存储技术主要有三种,分别是直接附加存储(Direct Attached Storage,DAS)、网络附加存储(Network Attached Storage,NAS)和存储区域网络(Storage Area Network,SAN)。
1.直接附加存储
DAS是将存储设备通过SCSI(Small Computer System Interface,小型计算机系统接口)电缆直接连到服务器,其本身是硬件的堆叠,存储操作依赖于服务器,不带有任何存储操作系统。
DAS的适用环境为:
(1)服务器在地理分布上很分散,通过SAN或NAS在它们之间进行互连非常困难时;
(2)存储系统必须被直接连接到应用服务器(例如,Microsoft Cluster Server或某些数据库使用的“原始分区”)上时;
(3)包括许多数据库应用和应用服务器在内的应用,它们需要直接连接到存储器上时。
2.网络附加存储
采用NAS技术的存储设备不再通过I/O总线附属于某个特定的服务器,而是通过网络接口与网络直接相连,由用户通过网络访问。
NAS存储设备类似于一个专用的文件服务器,它去掉了通用服务器的大多数计算功能,而仅仅提供文件系统功能,从而降低了设备的成本。NAS以数据为中心,将存储设备与服务器分离,其存储设备在功能上完全独立于网络中的主服务器,客户机与存储设备之间的数据访问不再需要文件服务器的干预,同时它允许客户机与存储设备之间进行直接的数据访问,所以不仅响应速度快,而且数据传输速率也很高。
NAS技术支持多种TCP/IP网络协议,主要是NFS(Net File System,网络文件系统)和CIFS(Common Internet File System,通用Internet文件系统)来进行文件访问,所以NAS的性能特点是进行小文件级的共享存取。
NAS存储支持即插即用,可以在网络的任一位置建立存储。基于Web管理,从而使设备的安装、使用和管理更加容易。NAS可以很经济地解决存储容量不足的问题,但难以获得满意的性能。
3.存储区域网络
SAN是通过专用交换机将磁盘阵列与服务器连接起来的高速专用子网,采用块(block)级别存储。SAN是通过专用高速网将一个或多个网络存储设备和服务器连接起来的专用存储系统,其最大特点是将存储设备从传统的以太网中分离了出来,成为独立的存储区域网络。
根据数据传输过程采用的协议,其技术划分为FC SAN和IP SAN。另外,还有一种新兴的IB SAN技术。
(1)FC SAN。FC(Fiber Channel,光纤通道)的主要特性有:热插拔性、高速带宽、远程连接、连接设备数量大等。 FC SAN由三个基本的组件构成,分别是接口(SCSI、FC)、连接设备(交换机、路由器)和协议(IP、SCSI)。这三个组件再加上附加的存储设备和服务器就构成一个SAN系统。FC SAN有两个较大的缺陷,分别是成本和复杂性,其原因就是因为使用了FC。
(2)IP SAN。IP SAN是基于IP网络实现数据块级别存储方式的存储网络。设备成本低,配置技术简单,可共享和使用大容量的存储空间。IP存储主要是指iSCSI(Internet SCSI)。iSCSI是连接到一个TCP/IP网络的直接寻址的存储库,通过使用TCP/IP协议对SCSI指令进行封装,可以使指令能够通过IP网络进行传输,而过程完全不依赖于地点。
(3)IB SAN。IB(InfiniBand,无限带宽)是一种交换结构I/O技术,其设计思路是通过一套中心机构(IB交换机)在远程存储器、网络以及服务器等设备之间建立一个单一的连接链路,并由IB交换机来指挥流量。
5.网络存储技术的选择
网络存储技术的目的都是为了扩大存储能力,提高存储性能。这些存储技术都能提供集中化的数据存储并有效存取文件;都支持多种操作系统,并允许用户通过多个操作系统同时使用数据;都可以从应用服务器上分离存储,并提供数据的高可用性;同时,都能通过集中存储管理来降低长期的运营成本。
虚拟存储(virtual storage)是指把多个存储介质模块(例如,硬盘、RAID等)通过一定的手段集中管理,形成统一管理的存储池(storage pool),为用户提供大容量、高数据传输性能的存储系统。
1.虚拟存储的分类
按照拓扑结构的不同,虚拟存储可以分为两种方式,分别是对称式和非对称式。对称式虚拟存储技术是指虚拟存储控制设备与存储软件系统、交换设备集成为一个整体,内嵌在网络数据传输路径中;非对称式虚拟存储技术是指虚拟存储控制设备独立于数据传输路径之外。
按照实现原理的不同,虚拟存储也可以分为两种方式,分别是数据块虚拟与虚拟文件系统。数据块虚拟存储方式着重解决数据传输过程中的冲突和延时问题;虚拟文件系统存储方式着重解决大规模网络中文件共享的安全机制问题。
在实际应用中,数据块虚拟存储方式以对称式拓扑结构为表现形式,虚拟文件系统存储方式以非对称式拓扑结构为表现形式。
2.虚拟存储的实现方式
虚拟存储要解决的关键问题是逻辑卷与物理存储实体之间的映射关系,这种映射关系可以在计算机层解决,也可以在存储设备层解决,还可以在存储网络层解决。
(1)主机级的虚拟化。由安装在应用服务器上的卷管理软件完成存储的虚拟化。基于主机端的虚拟存储几乎都是通过纯软件的方式实现的,这种实现机制不需要引入新设备,也不影响现有存储系统的基本架构,所以实现成本比较低。但是,这种机制难以克服的困难是平台依赖性太强,开发商要为每一种操作系统平台甚至每一个版本,开发一套软件产品。同时,由于存储管理由主机解决,增加了主机的负担。
(2)存储设备级的虚拟化。由存储设备的控制器实现存储的虚拟化。这种虚拟存储一般是存储厂商实施的,很可能使用厂商独家的存储产品。这种实现机制主要通过大规模的RAID子系统和多个I/O通道连接到服务器上,智能控制器提供访问控制、缓存和其他(例如,数据复制等)管理功能。这种方式的优点在于效率高、性能好,管理员对设备有完全的控制权,而且通过与服务器系统分开,可以将存储的管理与多种服务器操作系统隔离,并且可以很容易地调整硬件参数。但是,在现实中,厂商往往都只提供对自身产品的支持,不能解决异构存储环境中的虚拟化问题。
(3)网络级的虚拟化。由加入SAN的专用装置实现存储虚拟化。这种机制可以管理不同厂商的存储设备,实现SAN中所有设备的统一管理,具有较好的开放性。
3.虚拟存储的特点
虚拟存储在很多方面表现出优秀的性能:
(1)虚拟存储提供了一个大容量存储系统集中管理的手段,由网络中的一个环节进行统一管理,避免了由于存储设备扩充所带来的管理方面的麻烦。
(2)虚拟存储可以大大提高存储系统整体访问带宽。存储系统是由多个存储模块组成的,而虚拟存储系统可以很好地进行负载平衡,把每一次数据访问所需的带宽合理地分配到各个存储模块上,这样,系统的整体访问带宽就增大了。
(3)虚拟存储技术为存储资源管理提供了更好的灵活性和兼容性,可以将不同类型的存储设备集中管理使用,保护用户的已有投资。
(4)虚拟存储技术可以通过管理软件,为网络系统提供一些其他的有用功能,例如,无需服务器的远程镜像和数据快照等。
(5)虚拟存储技术将计算机的应用系统与存储设备分离,使各种不同的存储设备看上去具有标准的存储特性,应用系统不需要关心数据存储的具体设备,从而减轻了应用系统的负担。
在计算机中,I/O系统可以有5种不同的工作方式,分别是程序控制方式、程序中断方式、DMA工作方式、通道方式、I/O处理机。
1.程序控制方式
由CPU执行一段I/O程序来实现主机与外设之间的数据传送,根据外设的不同性质,可分为无条件传送和程序查询方式两种。
在无条件传送方式中,I/O端口总是准备好接收主机的输出数据,或总是准备好向主机输入数据,因而CPU无须查询外设的工作状态,而默认外设始终处于准备就绪状态。在CPU认为需要时,随时可直接利用I/O指令访问相应的I/O端口,实现与外设之间的数据交换。这种方式的优点是软、硬件结构都很简单,但要求时序配合精确,一般的外设难以满足要求。所以,只能用于对简单开关量的I/O控制。
程序查询方式:如果外设尚未准备就绪,CPU就循环等待,只有当外设已作好准备时,CPU才能执行I/O指令进行数据传送,这就是程序查询方式。由程序主动查询外设,完成主机与外设间的数据传送,这种方法简单,硬件开销小,但I/O能力不高,严重影响CPU的利用率。
2.程序中断方式
为了提高I/O能力和CPU的效率,计算机系统引进了中断方式。程序中断是指计算机执行现行程序的过程中,出现某些急需处理的异常情况和特殊请求,CPU暂时中止现行程序(保护现场),而转去对随机发生的更紧迫的事件进行处理,在处理完毕后,CPU将自动返回原来的程序继续执行(恢复现场)。系统中具有多个中断源的情况下,常用的处理方法有多中断信号线法、中断软件查询法、雏菊链法、总线仲裁法和中断向量表法。
3.DMA方式
DMA方式是为了在主存与外设之间实现高速、批量数据交换而设置的,使用DMA控制器(Direct Memory Access Controler,DMAC)来控制和管理数据传输。DMAC和CPU共享系统总线,并且具有独立访问存储器的能力。在进行DMA时,CPU放弃对系统总线的控制而由DMAC控制总线;由DMAC提供存储器地址及必需的读写控制信号,实现外设与存储器之间的数据交换。
DMAC获取总线的方式主要有三种,分别是CPU停止访问主存法(暂停方式)、存储器分时法(共享方式)和周期挪用法(周期窃取方式)。DMA方式具有下列特点:
(1)它使主存与CPU的固定联系脱钩,主存既可被CPU访问,又可被外设访问。
(2)在数据块传送时,主存地址的确定、传送数据的计数等都由硬件电路直接实现。
(3)主存中要开辟专用缓冲区,及时供给和接收外设的数据。
(4)DMA传送速度快,CPU和外设并行工作,提高了系统的效率。
(5)DMA在传送开始前要通过程序进行预处理,结束后要通过中断方式进行后处理。
4.通道方式
通道是一种高级的I/O控制部件,它在一定的硬件基础上利用软件手段实现对I/O的控制和传送,更多地免去了CPU的介入,从而使主机和外设的并行工作程度更高。实质上,通道也是实现外设和主存之间直接交换数据的控制器。
按照所采取的传送方式,可将通道分为字节多路通道、选择通道和数组多路通道三种。字节多路通道是一种简单的共享通道,用于连接与管理多台低速设备,以字节交叉方式传送信息;选择通道又称为高速通道,在物理上它也可以连接多个设备,但这些设备不能同时工作,在一段时间内通道只能选择一台设备进行数据传送,此时该设备可以独占整个通道;数组多路通道是把字节多路通道和选择通道的特点结合起来的一种通道结构,它有多个子通道,既可以执行多路通道程序,即像字节多路通道那样,所有子通道分时共享总通道,又可以用选择通道那样的方式成组地传送数据;既具有多路并行操作的能力,又具有很高的数据传输速率,使通道的效率充分得到发挥。
5.I/O处理机
I/O处理机也称为外围处理机,它是一个专用处理机,也可以是一个通用的处理机,具有丰富的指令系统和完善的中断系统。专用于大型、高效的计算机系统处理外围设备的I/O。
I/O处理机基本上是独立于中央处理机异步工作的,它可以与中央处理机共享主存,也可以有自己独立的存储器,不共享主存。每台I/O处理机可以有自己独立的运算部件和指令控制部件,也可以由多个I/O处理机共享同一个运算部件和指令控制部件。
总线是一组能为多个部件分时共享的公共信息传送线路。
1.总线的分类
按总线相对于CPU或其他芯片的位置可分为内部总线和外部总线两种。按总线功能来划分,又可分为地址总线、数据总线、控制总线三类。按总线在微机系统中的位置,可分为机内总线和机外总线两种。计算机的总线按其功用来划分,主要有局部总线、系统总线、通信总线三种类型。按照总线中数据线的多少,可分为并行总线和串行总线。
2.总线标准
总线标准主要规定总线的机械结构规范、功能结构规范和电气规范。总线标准可以分为正式标准和工业标准,其中正式标准是由IEEE等国际组织正式确定和承认的标准;工业标准也称为事实标准,是首先由某一厂家提出,然后得到其他厂家广泛使用的标准。
3.总线的性能指标
总线的主要性能指标主要有以下几个:
(1)总线宽度。总线宽度指的是总线的线数,它决定了总线所占的物理空间和成本。对总线宽度最直接的影响是地址线和数据线的数量。主存空间和I/O空间的扩充使地址线数量的增加,并行传输要求有足够的数据线。
(2)总线带宽。总线带宽定义为总线的最大数据传输速率,即每秒传输的字节数。在同步通信中,总线的带宽与总线时钟密不可分,总线时钟频率的高低决定了总线带宽的大小:总线带宽 = 总线宽度×总线频率
(3)总线负载。总线负载是指连接在总线上的最大设备数量。大多数总线的负载能力是有限的。
(4)总线分时复用。总线分时复用是指在不同时段利用总线上同一个信号线传送不同信号,例如,地址总线和数据总线共用一组信号线。采用这种方式的目的是减少总线数量,提高总线的利用率。
(5)总线猝发传输。猝发式数据传输是一种总线传输方式,即在一个总线周期中可以传输存储地址连续的多个数据。
1.接口的功能
接口的主要功能表现在以下五个方面:
(1)实现主机和外设的通信联络控制。接口中的同步控制电路用来解决主机与外设的时间配合问题。
(2)进行地址译码和设备选择。当CPU送来选择外设的地址码后,接口必须对地址进行译码以产生设备选择信息,使主机能和指定外设交换信息。
(3)实现数据缓冲。数据缓冲寄存器用于数据的暂存,以避免丢失数据。在传送过程中,先将数据送入数据缓冲寄存器中,然后再送到输出设备或主机中。
(4)数据格式的变换。为了满足主机或外设的各自要求,接口电路中必须具有各类数据相互转换的功能。
(5)传递控制命令和状态信息。当CPU要启动某一外设时,通过接口中的命令寄存器向外设发出启动命令;当外设准备就绪时,则有“准备好”状态信息送回接口中的状态寄存器,为CPU提供外设已经具备与主机交换数据条件的反馈信息。当外设向CPU提出中断请求和DMA请求时,CPU也应有相应的响应信号反馈给外设。
2.接口的分类
根据外部设备与I/O模块交换数据的方式,系统接口可以分为串行接口和并行接口两种。串行接口一次只能传送1位信息,而并行接口一次就可传送多位信息。按I/O的信号分类,分为数字接口和模拟接口;按通用性分类,分为通用接口和专用接口;按功能选择的灵活性分类,分为可编程接口和不可编程接口等。
3.常见接口
常见的设备接口有以下几种:
(1)IDE。IDE是最常用的磁盘接口,分为普通IDE和增强型IDE(EIDE)接口。
(2)ATA(Advanced Technology Attachment,高级技术附件)。随着IDE/EIDE得到广泛的应用,全球标准化协议将该接口自诞生以来使用的技术规范归纳成为全球硬盘标准,这样就产生了ATA。
(3)SATA(Serial ATA,串行高级技术附件)。SATA是一种基于行业标准的串行硬件驱动器接口。与ATA相比,SATA规范将硬盘的外部传输速率理论值提高到了1200Mbps(150MB/s),而随着未来后续版本的发展,SATA接口的速率已经扩展到3000Mbps,有望达到4800Mbps。
(4)eSATA(external SATA,外部串行高级技术附件)。eSATA是基于标准的SATA线缆和接口,连接处加装了金属弹片来保证物理连接的稳固性,eSATA线缆能够插拔数千次。
(5)SCSI。SCSI是大容量存储设备、音频设备和CD-ROM驱动器的一种标准。SCSI接口通常被看作是一种总线,可用于连接多个外设,这些SCSI设备以菊花链形式接入,并被分配给惟一的ID号,其中最后一个ID分配给SCSI控制器。
(6)PCMCIA(Personal Computer Memory Card International Association,个人计算机内存卡国际联合会)。PCMCIA是一种广泛用于笔记本电脑的接口标准,体积小,扩展较方便、灵活。
(7)IEEE-1394。1394也被称为i.Link或FireWire,是由IEEE于1995年发布的,它的最初版本被称为1394a。与SCSI一样, 1394能够在同一条总线上支持不同速率的设备。1394支持设备的热插拔,即允许计算机在未关机带电的情况下,插入或拔除所连接的外设而不会造成损害。
(8)USB。USB接口是一种串行总线式的接口,在串行接口中可达到较高的数据传输率,并且也允许设备以雏菊链形式接入,最多可连接127个设备。USB的最大特点是允许热插拔,目前在便携式计算机和台式计算机中已成为标准配置。
4.端口
I/O端口(通常简称为“端口”)是指接口电路中可以被CPU直接访问的寄存器,若干个端口加上相应的控制逻辑电路组成接口。一个接口中包含有数据端口、命令端口和状态端口。端口编址的方式有两种,分别是独立编址和统一编址。独立编址又称为I/O映射,在这种编址方式中,主存地址空间和端口地址空间是相对独立的;统一编址又称为存储器映射,在这种编址方式中,端口地址和主存单元地址是统一编址的,把I/O接口中的端口作为主存单元一样进行访问,不设置专门的I/O指令,就用一般的数据传送类指令来实现I/O操作。
1.设计要求
设计指令系统时,在功能方面的基本要求是,指令系统的完整性、规整性、高效率和兼容性。
2.基本指令
通用计算机系统的基本指令有数据传送类指令、运算类指令、程序控制类指令、I/O指令、处理机控制和调试指令。
(1)数据传送类指令。数据传送类指令是最基本的指令类型,主要用于实现寄存器与寄存器之间、寄存器与主存单元之间,以及两个主存单元之间的数据传送。数据传送指令的种类由三个主要因素决定,分别是数据存储设备的种类、数据传送单位和采用的寻址方式。
(2)运算类指令。运算类指令又分为算术运算指令、逻辑运算指令和移位指令,其中移位指令又可分为算术移位、逻辑移位和循环移位。
(3)程序控制指令。程序控制类指令用于控制程序的执行顺序,并使程序具有测试、分析与判断的能力,主要包括三类,分别是转移指令(包括无条件转移和有条件转移)、程序调用和返回指令、循环控制指令。
(4)I/O指令。I/O指令用来实现主机与外部设备之间的信息交换,包括I/O数据、主机向外设发控制命令或外设向主机报告工作状态等。
(5)处理机控制和调试指令。在一般的计算机系统中,处理机有两个状态,分别是管态和用户态,或称主态和从态。这两个状态需要互相切换,在这两个状态下所能使用的指令应该有所区别。
1.RISC指令系统的特点
RISC指令系统的主要特点如下:
(1)指令数量少。优先选取使用频率最高的一些简单指令和一些常用指令,避免使用复杂指令。只提供了LOAD(从存储器中读数)和STORE(把数据写入存储器)两条指令对存储器操作,其余所有的操作都在CPU的寄存器之间进行。
(2)指令的寻址方式少。通常只支持寄存器寻址方式、立即数寻址方式合相对寻址方式。
(3)指令长度固定,指令格式种类少。因为RISC指令数量少、格式少、相对简单,其指令长度固定,指令之间各字段的划分比较一致,译码相对容易。
(4)以硬布线逻辑控制为主。为了提高操作的执行速度,通常采用硬布线逻辑(组合逻辑)来构建控制器。
(5)单周期指令执行,采用流水线技术。因为简化了指令系统,很容易利用流水线技术,使得大部分指令都能在一个机器周期内完成。
(6)优化的编译器:RISC的精简指令集使编译工作简单化。因为指令长度固定、格式少、寻址方式少,编译时不必在具有相似功能的许多指令中进行选择,也不必为寻址方式的选择而费心,同时易于实现优化,从而可以生成高效率执行的机器代码。
(7)CPU中的通用寄存器数量多,一般在32个以上,有的可达上千个。
2.RISC的核心思想
计算机执行一个程序所用的时间可表示为:P = I×CPI×T
其中,P是执行这个程序所使用的总时间,I是这个程序所需执行的总的指令条数,CPI是每条指令执行的平均周期数,T是一个周期的时间长度。
RISC的I长度只比CISC的长20%~40%。ISC的大多数指令都是单周期执行的,它们的CPI应该是1,不过经常略大于1。由于RISC一般采用硬布线逻辑实现,指令要实现的功能都比较简单,所以,CISC的T通常是RISC的3倍左右。
3.RISC的关键技术
目前,在RISC处理机中采用的主要技术有如下几种:
(1)延时转移技术。在RISC处理机中,指令一般采用流水线方式工作。流水线技术所面临的一个问题就是转移指令的出现,这时,有可能使流水线断流。其中一个解决办法是在转移指令之后插入一条有效的指令,而转移指令好象被延迟执行了,因此,把这种技术称为延迟转移技术。
(2)指令取消技术。采用指令延时技术,遇到条件转移指令时,调整指令序列非常困难,在许多情况下找不到可以用来调整的指令。有些RISC处理机采用指令取消技术。在使用指令取消技术的处理机中,所有转移指令和数据变换指令都可以决定下面待执行的指令是否应该取消。如果指令被取消,其效果相当于执行了一条空操作指令,不影响程序的运行环境。为了提高程序的执行效率,应该尽量少取消指令,以保持指令流水线处于充满状态。
(3)重叠寄存器窗口技术。在处理机中设置一个数量比较大的寄存器堆,并把它划分成很多个窗口。每个过程使用其中相邻的三个窗口和一个公共的窗口,而在这些窗口中,有一个窗口是与前一个过程共用,还有一个窗口是与下一个过程共用的。与前一个过程共用的窗口可以用来存放前一个过程传送给本过程的参数,同时也存放本过程传送给前一个过程的计算结果;与下一个过程共用窗口可以用来存放本过程传送给下一个过程的参数和存放下一个过程传送给本过程的计算结果。
(4)指令流调整技术。为了使RISC处理机中的指令流水线高效率地工作,尽量不断流。编译器必须分析程序的数据流和控制流,当发现指令流有断流可能时,要调整指令序列。对有些可以通过变量重新命名来消除的数据相关,要尽量消除。这样,可以提高流水线的执行效率,缩短程序的执行时间。
(5)逻辑实现以硬件为主,固件为辅。RISC主要采用硬布线逻辑来实现指令系统。对于那些必须的复杂指令,也可用固件实现。
1.时空图
描述流水线的工作,最常用的方法就是采用时空图。 在时空图中,横坐标表示时间,也就是输入到流水线中的各项任务在流水线中所经过的时间;纵坐标表示空间,即流水线的各个阶段(功能段)。
2.流水线的特点
采用流水线方式的处理机与顺序执行方式相比,具有如下特点:
(1)流水线中处理的必须是连续的任务,只有连续不断的提供任务,才能发挥流水线的效率。流水线从开始启动到流出第一个结果需要一个“装入时间”,在这段时间内并没有流出任何结果,所以,对第一条指令来说,和顺序执行没有区别。流水线在所有指令都装入完毕后,还需要一个“排空时间”(最后一条指令执行完毕)。
(2)在流水线每个操作部件的后面,都要有一个缓冲寄存器(或称为锁存器、闸门寄存器),用于保存本阶段的执行结果,以保证各部件之间的速度匹配,以及各部件独立、并行运行。
(3)流水线是把一个大的操作部件分解为多个独立的操作部件,并依靠多个操作部件并行工作来缩短程序执行时间。流水线中各段的执行时间应尽量相等,否则将引起堵塞、断流等现象。执行时间最长的—段将成为整个流水线的瓶颈,在流水线中应尽量解决瓶颈。
3.流水线的分级
按照流水线使用的不同级别,可以把流水线分为三级,分别是操作部件级、指令级(处理机级)和处理机间级;操作部件级流水线也称为运算操作流水线,是将复杂的算术和逻辑运算组成流水线的工作方式。指令级流水线是把一条指令的执行过程分解成多个阶段;处理机间级流水线又称为宏流水线,这种流水线由两个以上处理机通过存储器串行连接起来,其中每一个处理机完成某一专门任务,各个处理机所得到的结果需存放在与下一个处理机所共享的存储器中。
4.流水线的分类
按功能分类,可分成单功能流水线和多功能流水线。单功能流水线只能实现一种固定的功能。多功能流水线的各段可以进行不同的连接,在不同时间内或在同一时间内,通过不同的连接方式实现不同的功能。
按工作方式分类,可分为静态流水线和动态流水线。静态流水线在同一时间内只能按一种运算的连接方式工作。静态流水线仅当指令都是同一类型时才能连续不断地执行。动态流水线在同一时间内允许按多种不同运算的连接方式工作。显然,动态流水线必是多功能流水线,而单功能流水线必是静态的。
按连接方式分类,可分为线性流水线与非线性流水线。在线性流水线中,从输入到输出,每个功能段只允许经过一次,不存在反馈回路。非线性流水线存在反馈回路,从输入到输出过程中,某些功能段将数次通过流水线。非线性流水线经常用于递归调用,或构成多功能流水线等。
衡量流水线的性能指标主要有吞吐率、加速比和效率。另外,在流水线设计中,如何选择流水线的最佳段数,也是一个非常重要的问题。
1.吞吐率
流水线的吞吐率(Though Put rate,TP)也称为平均吞吐率或实际吞吐率,是指在单位时间内流水线所完成的任务数量或输出的结果数量。
当流水线中各段的执行时间不完全相等时,吞吐率主要是由流水线中执行时间最长的那个功能段来决定的,这个功能段就成了整个流水线的瓶颈,其执行时间称为瓶颈时间。要解决这个问题,既可以把瓶颈段再细分,使瓶颈时间变小;也可以使多个瓶颈段并行工作,也就是重复设置多个瓶颈段。
2.加速比
完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比称为流水线的加速比(speedup ratio)。在线性流水线的各段执行时间均相等的情况下,流水线的最大加速比等于流水线的段数。
3.效率
流水线的效率是指流水线的设备利用率。在时空图上,流水线的效率定义为n项任务占用的时空区与k个流水段总的时空区之比。流水线的效率包含有时间和空间两方面的因素。
4.流水线最佳段数的选择
增加流水线的段数,流水线的吞吐率和加速比都能提高。但是,因为在每个段的输出端都必须设置一个锁存器,当流水线的段数增多时,锁存器的总延迟时间也将增加。
流水线的最佳段数与流水线的延迟时间和流水线价格的平方根成正比,而与锁存器的延迟时间和锁存器价格的平方根成反比。
目前,一般处理机中的流水线段数在2~10段之间。一般把8段以上的流水线称为超流水线,采用超流水线的处理机称为超流水线处理机。
5.多条流水线的情况
假设指令由取指、分析、执行3个子部件完成,并且每个子部件的时间均为t。若采用常规标量单流水线处理机(即该处理机的度为1),连续执行12条指令,根据前面的介绍,则共需(12+3-1)t=14t。若采用度为4的超标量流水线处理机,连续执行上述12条指令,则因为同时运行4条流水线,平均每条流水线只需执行3条指令,因此只需(3+3-1)t=5t。
局部相关主要是指程序中出现数据相关,由于发生这类数据相关的指令之间大多间隔不远,一般不会超出过程(基本块)之外,故称为局部相关;全局相关是指转移指令或中断处理,即程序流程相关。
1.共享资源访问的冲突
共享资源访问的冲突是指后一条指令需要使用的数据,与前一条指令发生的冲突,或者相邻的指令使用了相同的寄存器。为了避免冲突,就需要把相互有关的指令进行阻塞,这样就会引起流水线效率的下降。上述问题就属于局部相关。解决局部相关的方法主要有两种,分别是后推法和定向技术:
(1)后推法是指遇到数据相关时,就暂停后继指令的运行,直至前面指令的结果已经生成为止。因此,要设置专门的检查数据相关的硬件,在每一次取数时,要把取数的地址与它前面正在流水线中尚未完成写数操作的所有写数指令的写数地址进行比较,如果有相同的,说明存在数据相关,就要推迟执行读数操作,等待相关的写数指令完成写数操作,把数真正送入主存(或通用寄存器)后才能取数。
(2)定向技术又称为旁路技术或相关专用通路技术,即在指令流水线中的读数和写数部分之间设置直接传送数据的通路,使在执行部件向主存(或通用寄存器)存数的同时,把数直接送到正在等待取这个数的指令部件中去。
2.转移指令
无条件转移指令可以在指令译码时发现。在发现无条件转移指令后,指令缓冲寄存器中在无条件转移指令以后的一些预先取出的指令都要作废,然后按转移地址重新读取新的指令序列。于有指令队列的缓冲,无条件转移不一定会引起执行部件的停止,因此,它对流水线效率的影响比较小。
条件转移指令虽然在指令流水线前端的指令译码时就能发现,但是确定转移方向的条件码却要在指令流水线的末端的执行部件中产生,才能决定是否实现转移。所以一旦在指令部件中发现条件转移指令,指令部件就要暂停,等待转移指令前面一条指令在执行部件中执行完毕,产生条件码以后,才能确定转移方向。
条件转移指令对流水线效率影响较大。为了改进由于条件转移指令引起的流水线断流现象、减少条件转移指令造成的执行部件停顿时间,一般有以下几种措施:
(1)猜测法。指令部件发现条件转移指令后,在等待执行部件执行完指令队列中的指令并产生条件码后的这一段时间里,指令部件仍按固定的方向继续预取指令(按条件成立的方向预取,或者按条件不成立的方向预取)。等到条件码产生后,如果与猜测的转移方向一致,指令缓冲寄存器组中预先取出的指令可以用,流水线停顿的时间可以缩短。如果未猜对,则指令缓冲寄存器组中的指令和已做的工作全部作废,重新按另一个方向读取指令,然后开始分析,这时流水线损失的时间就较长。
(2)预取转移目标。在发现条件转移指令后,同时向两个分支方向(条件成立、条件不成立)预取指令,最后根据真正的方向取其中一个分支的指令继续运行。有些处理机还可以对原来分支内指令进行带条件执行(即译码、取数、运算,但不送结果),进一步提高转移指令执行效率。
(3)加快和提前形成条件码。有些指令的条件码并不一定要等执行完毕得到运算结果后才能形成。例如,对于乘法指令,其结果是正是负的条件码在相乘之前,就能根据两个操作数的符号位来判定。
(4)推迟转移。在编译一个程序时,编译程序自动地调整条件转移指令的位置,把条件转移指令从原来的位置向后移一条或若干条,而把与该条件转移指令无关的指令先运行。这样做可以改进流水线的效率,且不影响结果。
(5)加快短循环程序的处理。循环是一种特殊的条件转移,通常是按循环计数器内的内容是否为0来判断是否已达到应有的循环次数,决定是否需要“向后”转移。短循环程序是指循环段的指令数目少于(或等于)指令缓冲寄存器组中可存放的指令数时的循环程序段。
3.中断处理
流水线响应中断有两种方式,分别是精确断点法和不精确断点法。
(1)不精确断点法。当有中断请求时,不再允许还未进入流水线的后续指令再进入,但已在流水线的所有指令却可仍然流动到执行完毕,然后才转入中断处理程序。这种方法的优点是实现控制简单,但中断响应时间较长,程序执行的结果可能出错,而且程序员很难调试程序。
(2)精确断点法。当有中断请求时,立即转入中断处理程序。这种方法能够立即响应中断,缩短了中断响应时间,但是增加了处理机的硬件复杂度。因为需要采用很多后援寄存器,以保证流水线内各条指令的现场都能保存和恢复。
MPP系统最重要的特点是进行大规模并行处理。MPP采用分布存储方式,这种方式可以使系统容易扩展,但因为各处理机不能直接访问非本地存储器,只能使用消息机制来进行共享,这就使得编程困难,并且增加了通信开销。为了解决这个问题,专家们引入了虚拟共享存储器(Shared Virtuel Memory,SVM)或共享分布存储器
(Distributed Shared Memory,DSM)技术。
SVM是在基于分布存储器的多处理机上,实现物理上分布但逻辑上共享的存储系统。其基本思想是,将物理上分散的各个处理机所拥有的LM,在逻辑上加以统一编址,形成一个统一的虚拟地址空间来实现存储器的共享。
目前,实现SVM系统的途径主要有三种:
(1)硬件实现。将传统的cache技术扩展应用到松耦合系统中,这种途径需要在现有的松耦合系统上,增加专用部件以取得高效的实现。
(2)操作系统和库实现。通过虚拟存储管理机制取得共享和一致性,这种途径在现有松耦合系统上不增加任何专用部件就可以实现。
(3)编译实现。自动将共享访问转换成同步和一致原语。它要求用户显式控制全局数据,当传送大量数据时或试图进行迁移时极其复杂。
SMP也称为共享存储多处理机,它与MPP最大的差别在于存储系统。SMP有一个统一共享的SM,而MPP则是每个处理机都拥有自己的LM。
1.共享存储模型
共享存储方式有三种模型,分别是均匀存储器存取(Uniform Memory Access,UMA)模型、非均匀存储器存取(Nonuniform Memory Access,NUMA)模型和只用高速缓存的存储器结构(Cache Only Memory Architecture,COMA)模型,这些模型的区别在于存储器和外设如何共享或分布。
2.S2MP的体系结构
S2MP是一种共享存储的体系结构,和MPP相比,它支持简单的编程模型,系统使用方便,是对SMP系统在支持更高扩展能力方面的发展。
从本质上来看,S2MP实际上是一种NUMA结构,每个结点由处理机和存储器两部分组成,存储器靠近处理机,而不是集中在某个地方,处理机可以访问LM获取数据。NUMA结构可以降低平均访存时延,并且随处理机数目的增加自动增加存储器带宽,也就是说,存储带宽是可扩展的。
互连网络用来连接一个计算机系统中各处理部件(或处理机)、存储模块以及各种外设,在系统软件控制下,使各功能部件相互通信的硬件网络结构。
1.互连函数
如果将互连网络的n个输入端和输出端分别用整数0,1,…,n-1来表示,则互连函数表示相互连接的输出端和输入端之间的一一对应关系。
2.互连方式
在多处理机系统中,衡量互连网络性能好坏的主要因素是它的连接度、延时性、带宽、可靠性和成本。
在最典型和最常见的互连网络中,多处理机互连的方式主要有以下五种:
(1)总线。总线方式是最简单的方法,通过共享总线把各个处理机连接起来,再配备各处理机都可访问的全局存储器。每个处理机都能访问公共总线。总线方式适用于多处理机个数少于100的系统,这主要是受到了组装技术的限制,而数据的传输速率受到总线带宽和速度的限制。
(2)交叉开关。总线互连最简单,但争用最严重。交叉开关可以把争用现象降到最低程度,但连接复杂度最高。开关网络为处理机和共享存储器之间提供了一个动态互连通路。如果中间的开关网同时连接到达一定的数量后,不能再容纳新的连接,这种网络是阻塞网络。交叉开关提供了非阻塞网络的连接,它使用一组开关阵列将处理机和共享存储器连接。每个交叉的结点都是开关,可以连接或断开。这是一种以空间矩阵换时间的方式,需要使用大量的连线和交叉点开关。因此,只有处理机和共享存储器数目较少时,才可能使用这种方式,而且一旦建成,很难扩充。
(3)开关枢纽。和交叉开关不同的是,开关枢纽不使用交叉矩阵这样庞大的硬件结构。它由仲裁单元和开关单元组成,仲裁单元完成冲突处理,开关单元完成连接。其方式和通信中的交换机有些相似。
(4)多端口存储器。这是将交叉点仲裁逻辑移动到存储器去控制的方法。每个存储器模块有多个存取端口,由存储器负责分解多个处理机的冲突请求。这增加了存储器模式的成本,和交叉开关类似,多端口存储器也需要大量的连线。而且,存储器端口数目是固定的,一旦开始生产之后就无法增加。
(5)多级互连网络。MIMD和SIMD计算机都用多级网络,各种多级网络的区别就在于所用开关模块、控制方式和级间连接模式的不同。多级网络是总线和交叉开关两者折中,主要优点在于采用模块结构,因而扩展性好,然而时延随网络级数而上升。另外,由于增加了连线和开关的复杂性,价格也是一种限制因素。
计算机系统的性能一般包括两个大的方面。一个方面是它的可靠性或可用性,也就是计算机系统能正常工作的时间,其指标可以是能够持续工作的时间长度(例如,平均无故障时间),也可以是在一段时间内,能正常工作的时间所占的百分比;另一个方面是它的处理能力或效率,这又可分为三类指标,第一类指标是吞吐率(例如,系统在单位时间内能处理正常作业的个数),第二类指标是响应时间(从系统得到输入到给出输出之间的时间),第三类指标是资源利用率,即在给定的时间区间中,各种部件(包括硬设备和软件系统)被使用的时间与整个时间之比。
1.字长和数据通路宽度
机器字长是指参与运算的数的基本位数,它是由加法器、寄存器的位数决定的。机器字长一般等于CPU内部寄存器的大小(例如,32位、64位等)。字长标志着运算精度,字长越长,计算的精度就越高。
数据总线一次所能并行传送信息的位数,称为数据通路宽度。这里所说的数据通路宽度是指外部数据总线的宽度,它与CPU内部的数据总线宽度(内部寄存器的大小)有可能不同。
2.主存容量和存取速度
计算机系统的主存储器所能存储的全部信息量称为主存容量。主存的存取速度通常由存取时间、存取周期和主存带宽等参数来描述。存取时间Ta又称为访问时间或读写时间,它是指从启动一次存储器操作到完成该操作所经历的时间;存取周期Tm又称为读写周期或访存周期,是指主存进行一次完整的读写操作所需的全部时间,即连续两次访问存储器操作之间所需要的最短时间;与存取周期密切相关的指标是主存带宽,它又称为数据传输率,表示每秒从主存进出信息的最大数量,单位为字节每秒(B/s)或位每秒(bps)。
3.运算速度
计算机的运算速度与许多因素有关,例如,机器的主频、执行什么样的操作,以及主存的速度等。
(1)主频和CPU时钟周期。主频又称为时钟频率,在很大程度上决定了计算机的运算速度。CPU的工作节拍是由主时钟来控制的,主时钟不断产生固定频率的时钟脉冲,这个主时钟的频率就是CPU的主频。主频越高,意味着CPU的工作节拍就越快,运算速度也就越快。一般用在一秒钟内处理器所能发出的脉冲数量来表示主频。
(2)CPI。由于不同指令的功能不同,造成指令执行时间不同,所以,CPI(Cycles PerInstruction,每条指令执行所用的时钟周期数)是一个平均值。在现代高性能计算机中,由于采用各种并行技术,使指令执行高度并行化,常常是一个系统时钟周期内可以处理若干条指令。CPI经常用IPC(Instructions Per Cycle,每个时钟周期执行的指令条数)表示。显然,IPC等于CPI的倒数。
(3)MIPS和MFLOPS。对于一个给定的程序,MIPS(Million Instructions Per Second,每秒百万条指令)定义为:
MIPS = 指令条数/(执行时间×106) = 主频/CPI = 主频×IPC
MFLOPS(Million FLoating-point Operations Per Second,每秒百万次浮点运算)定义为
MFLOPS = 浮点操作次数/(执行时间×106)
4.吞吐量与吞吐率
吞吐量是指在给定的时间内,系统所能处理(输入、加工、输出)的任务的数量,吞吐率是指系统在单位时间内所能处理的任务的数量。
5.响应时间与完成时间
响应时间(Response Time,RT)是指系统对请求作出响应的时间,是用户提交请求之后,输出开始之前的时间;完成时间(Turn Around Time,TAT)是指某一事件从发生到结束的这段时间,或者说是从用户提交请求到得到输出结果的时间间隔。
在计算机系统的发展中,早在1968年,米勒(Miller)即给出了3个经典的有关响应时间的建议:
(1)0.1秒:用户感觉不到任何延迟。
(2)1.0秒:用户愿意接受的系统立即响应的时间极限。即当执行一项任务的有效反馈时间在0.1~1秒之内时,用户是愿意接受的。超过此数据值,则意味着用户会感觉到有延迟,但只要不超过10秒,用户还是可以接受的。
(3)10秒:用户保持注意力执行本次任务的极限,如果超过此数值时仍然得不到有效的反馈,客户会在等待计算机完成当前操作时转向其他的任务。
6.兼容性
兼容性是指一个系统的硬件或软件与另一个系统或多种操作系统的硬件或软件的兼容能力,是指系统间某些方面具有的并存性,即两个系统之间存在一定程度的通用性。
1.准备工作
准备工作应该包括以下几项:
(1)识别约束。约束(例如,可维护性、预算限制等)是用户对系统的基本期望性能,在寻求更高的性能方面是不可改变的因素。因此,在性能调整时,必须将寻求性能提高的努力集中在不受约束的因素上。
(2)指定负载。这涉及到确定用户(客户端)需要哪些服务,以及对这些服务的需求程度。用于指定负载的最常用度量标准是用户数目、用户思考时间以及负载分布状况。其中,用户思考时间是指用户接收到输出结果到再次提交新请求之间的时间间隔,负载分布状况包括稳定或波动负载、平均负载和峰值负载。
(3)设置性能目标。在进行性能调整之前,必须明确性能目标,包括识别用于调整的度量标准及其对应的基准值。也就是说,要确定系统将要调整到一个什么样的状态,要满足哪些性能指标的要求。识别性能度量标准后,必须为每个度量标准建立可计量的基准值与合理的基准值。
2.调整循环
性能调整工作是一个“收集、分析、改进、测试”的循环,是一系列重复的受控性能试验,直到系统性能符合所设置的目标为止。
(1)收集。收集阶段是任何性能调整操作的起点。在这个阶段,只使用为系统特定部分所选择的性能测量(评估)方法来收集数据,这些方法应可用于网络、服务器或客户端。不论调整的是系统的哪一个部分,都需要根据基准值来进行比较,基准值可以设置为系统的行为令用户满意时的测量值。
(2)分析。收集了所需的性能数据后,还要对这些数据进行分析,以确定瓶颈之所在。要注意的是,性能数字仅具有指示性,它并不一定就可以确定实际的瓶颈在哪里,因为一个性能问题往往可能由多个原因导致的。
(3)改进。收集了数据并完成结果分析后,就可以确定系统的哪个部分需要进行修改。修改的最重要原则是:一次只修改一个地方。因为如果同时进行多个更改,就难以评估每个更改对系统性能的影响。
(4)测试。对系统进行修改后,必须完成适当级别的测试,以确定更改对调整的系统所产生的影响(性能提高、性能下降,或者对性能没有影响)。经过测试,如果系统性能提高到了预期的水上平,达到了所设置的性能目标,就可以退出调整循环。否则,就必须重新开始调整循环。
3.阿姆达尔解决方案
引起系统性能瓶颈问题的原因往往不是单一的,而是多方面的。改进系统某个组件,可以使该组件的性能得到提高,也可以使整个系统的性能得到提高,问题是这两者的提高程度是否相等。阿姆达尔(Amdahl)定律可以很好地解决这个问题。
阿姆达尔定律是这样的:对系统中某组件采用某种更快的执行方式,所获得的系统性能的改变程度,取决于该组件被使用的频率,或所占总执行时间的比例。
从计算机系统性能评估方法的体系上来看,大致可以分为两大类,分别是测量方法和模型方法。
1.测量方法
通过一定的测量设备或测量程序,可以直接从系统中测得各项性能指标或与之密切相关的度量,然后,由它们经过一些简单的运算,求出相应的性能指标。这是最直接也是最基本的方法,其他方法在一定程度上要依赖于它。
在使用测量方法时,就某个具体的性能指标而言,通常不能只测量一次,而是要在不同的条件、不同的时间进行多次测量。然后,使用统计分析方法,对这些测量数据进行统计分析,得出其期望均值,作为最后的测量结果。
2.模型方法
模型方法的基本思想是,首先对要评估的系统建立一个适当的模型,然后求出模型的性能指标,以便对系统进行性能评估。与测量方法相比,模型方法有两个优点,一是它不仅可以用于对现有系统进行性能评估,还可以用于对待开发系统的性能预测;二是它的工作量一般比测量方法要小,费用比测量方法要少。
模型方法又可分为模拟方法和分析方法两种:
(1)模拟方法。用程序动态地模拟系统及其负载。首先使用模拟语言为系统建立模型,然后在模拟时,通过负载驱动系统模型,从而得出模型的性能指标。模拟方法可以详细地刻画系统,得出较精确的性能指标,但是构造和使用模型时的费用较高。
(2)分析方法。应用数学理论与方法来研究和描述性能与系统、负载之间的关系,为了数学上描述与计算的方便,往往要对系统模型进行一些简化和假设。因此,这种数学模型刻画系统的详细程度较低,得出的性能指标精度也较低。但是,这种方法理论基础强,可以明显地刻画出各种因素之间的关系,构造和使用模型时的费用较低。
在计算机技术的发展过程中,性能评估的常用方法有时钟频率法、指令执行速度法、等效指令速度法、数据处理速率法、综合理论性能法和基准程序法等。
1.时钟频率法
计算机的时钟频率在一定程度上反映了机器速度。显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。
完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个时钟周期组成。指令周期是执行一条指令所需要的时间,一般由若干个机器周期组成。
2.指令执行速度法
在计算机发展的初期,曾用加法指令的运算速度来衡量计算机的速度。因为加法指令的运算速度大体上可反映出乘法、除法等其他算术运算的速度,而且逻辑运算、转移指令等简单指令的执行时间往往设计成与加法指令相同,因此,加法指令的运算速度有一定代表性。
3.等效指令速度法
等效指令速度法也称为吉普森混合法(Gibson mix)或混合比例计算法,是通过各类指令在程序中所占的比例(Wi)进行计算得到的。
4.数据处理速率法
数据处理速率法(Processing Data Rate,PDR)采用计算PDR值的方法来衡量机器性能,PDR值越大,机器性能越好。PDR与每条指令和每个操作数的平均位数以及每条指令的平均运算速度有关。
PDR值主要对CPU和主存储器的速度进行度量,但不适合衡量机器的整体速度,不能全面反映计算机的性能,因为它没有涉及cache、多功能部件等技术对性能的影响。
5.综合理论性能法
CTP是美国政府为限制较高性能计算机出口所设置的运算部件综合性能估算方法。CTP用MTOPS(Million Theoretical Operations Per Second,每秒百万次理论运算)表示。CTP的估算方法是,首先算出处理部件每个计算单元(例如,定点加法单元、定点乘法单元、浮点加单元、浮点乘法单元等)的有效计算率,再按不同字长加以调整,得出该计算单元的理论性能,所有组成该处理部件的计算单元的理论性能之和即为CTP。
把应用程序中用得最多、最频繁的那部分核心程序作为评估计算机系统性能的标准程序,称为基准测试程序(benchmark)。基准程序法是目前一致承认的测试系统性能的较好方法。
1.Dhrystone基准程序
Dhrystone是一个综合性的整数基准测试程序,它是为了测试编译器和CPU处理整数指令和控制功能的有效性,人为地选择一些典型指令综合起来形成的测试程序。
2.Linpack基准程序
Linpack是国际上最流行的用于测试高性能计算机系统浮点性能的测试。Linpack基准程序是一个用Fortran语言写成的子程序软件包,称为基本线性代数子程序包,此程序完成的主要操作是浮点加法和浮点乘法操作。测量计算机系统的Linpack性能时,让机器运行Linpack程序,测量运行时间,将结果用MFLOPS表示。
Linpack通过对高性能计算机采用高斯消元法求解一元n次稠密线性代数方程组的测试,评价高性能计算机的浮点性能。
3.Whetstone基准程序
Whetstone是用Fortran语言编写的综合性测试程序,主要由执行浮点运算、功能调用、数组变址、条件转移和超越函数的程序组成。
4.SPEC
SPEC(System Peformance Evaluation Cooperative,系统性能评估机构)基准程序对计算机系统性能的测试有两种方法,一种是测试计算机完成单项任务有多快,称为速度测试;另一种是测试计算机在一定时间内能完成多少项任务,称为吞吐率测试。
5.TPC
TPC(Transaction Processing Council,事务处理委员会)基准程序用以评测计算机在事务处理、数据库处理、企业管理与决策支持系统等方面的性能。该基准程序的评测结果用每秒完成的事务处理数TPC来表示。