随着半导体集成电路技术的发展和广泛的应用,最早由Intel公司将控制器和运算器集成到同一个芯片上。这就是我们所说的中央处理器(Central Processing Unit),简称CPU,它主要通过总线和其他设备进行联系。另外,在嵌入式系统中,外部设备也常常直接接到中央处理器的外部I/O引脚上。中央处理器的类型和品种非常丰富,其性能也差别很大,有不同的内部结构及不同的指令系统,但是基本部分组成相似。其中控制器的功能是控制计算机各部分协调工作,运算器则负责计算机的算术运算和逻辑运算,而运算的最终结果和中间结果要送入存储器中保存。输入、输出设备在中央处理器的控制下通过接口线路与内存交换信息,输入设备的任务是将程序和原始信息输入给计算机;输出设备的作用是将计算的结果输出。而且,在CPU中还利用许多其他技术来增加性能。如采用一种以硬件增加来换取性能提升的方式把一个指令分解成多个更小的指令,由不同的处理单元来处理,这样形成了流水线。在理想的满负荷运行的状态下,执行单条指令的时间虽然没有减少。但是多个不同功能的处理单元同时工作,同一时间在执行指令的不同部分,从而使得总体执行时间大大减少,处理速度得到极大提高。
1.控制器
控制器是中央处理器的核心,控制并协调整个计算机的动作,其组成如图2-1所示。
图2-1 控制器组成
控制器的各组件如下。
(1)指令寄存器(Instruction Register):保存中央处理器即将执行的指令。
(2)指令解码器(Instruction Decoder):解码指令,已知中央处理器执行的操作。
(3)定时与控制电路(Programmable Logic Array):用来产生各种微操作控制信号。
(4)程序计数器(Program Counter):其中存放下一条指令的地址。由于多数情况下程序顺序执行,所以程序计算数器设计为能自动加1.当出现转移指令或中断等情况时,则重填程序计数器。程序计数器可能是下一条指令的绝对地址,也可能是相对地址,即地址偏移量。
(5)标志寄存器(Flags Register):其中通常记录运算器的重要状态或特征,典型为是否溢出、结果为0或被0除等。这个寄存器的每一位代表一个特征,其典型应用是作为跳转指令的判断条件。
(6)堆栈和堆栈指针(Stack Pointer):堆栈可以为一组寄存器或存储器内的特定区域。由于寄存器数量有限,所以大多数系统采用了使用存储器的软件堆栈,指向堆栈顶部的指针称为堆栈指针。
(7)寄存器组:上面提及的程序计数器及标志寄存器等为专用寄存器组,它们有特定的功能和用途。
通用寄存器的功能由程序指令决定,最常见的应用是放置计算的中间结果及减少对存储器的访问次数,其宽度和运算器的位数一致。
2.运算器
运算器的主要功能是在控制器的控制下完成各种算术运算、逻辑运算和其他操作,一个计算过程需要用到加法器/累加器、数据寄存器或其他寄存器,如状态寄存器等。
加法是加运算器的基本功能,在大多数中央处理器中,其他计算也是经过变换后使用加法完成的。一位加法的逻辑图如图2-2所示。
图2-2 一位加法的逻辑图
其中Xi、Yi是加数和被加数,Ci+1是低位进位,Ci是进位,Zi是和。
为完成多位加法,可以通过增加电路和部件,简单的加法器能够变为串行、并行加法器及超前进位加法器等。
运算器的位数,即运算器一次能对多少位的数据执行加法运算是衡量中央处理器的一个重要指标。
3.存储器系统
存储器体系包括寄存器、cache、主存储器、磁盘存储器、光盘存储器和磁带存储器等。
存储器中数据常用的存取方式有顺序存取、直接存取、随机存取和相联存取等4种。
(1)顺序存取:存储器的数据以记录形式组织,对数据的访问必须按特定的线性顺序进行。磁带存储器采用这种方式。
(2)直接存取:直接存取使用一个共享的读写装置访问所有的数据,每个数据块都拥有惟一的地址标识。读写装置可以直接移动到目的数据块的所在位置进行访问,存取时间也是可变的。磁盘存储器采用这种方式。
(3)随机存取:存储器的每一个可寻址单元都有自己惟一的地址和读写装置,系统可以在相同的时间内访问任意一个存储单元的数据,而与先前的访问序列无关。主存储器采用方式。
(4)相联存取:相联存取也是一种随机存取的形式,但是选择某一单元进行读写取决于其内容而不是其地址。与普通的随机存取方式一样,每个单元都有自己的读写装置,读写时间也是一个常数。使用这种方式,可以对所有的存储单元的特定位进行比较,选择符合条件的单元进行访问。为了提高地址映射的速度,cache采取这种方式。
中央处理器通过总线可直接访问的存储器,通常称为"内存",硬盘等需要通过I/O接口访问的存储器常称为"外存"或者"辅存".
4.主存储器
主存储器也就是我们简称的主存或内存,根据工艺和技术不同,可分为下列几种。
(1)RAM(random access memory):RAM存储器既可以写入,也可以读出。断电后数据无法保存,因此只能用于暂存数据。RAM又可分为DRAM和SRAM两种。
DRAM(dynamic RAM):信息会随时间逐渐消失,因此需要定时对其进行刷新(refresh)以维持信息不丢失。
SRAM(static RAM):在不断电情况下信息能够一直保持。
DRAM的密度大于SRAM且更加便宜,但 SRAM速度快,电路简单(不需刷新电路),然而容量小且价格高。
(2)ROM(read only memory):只读存储器,信息已固化在存储器中。ROM出厂时其内容由厂家用掩膜技术(mask)写好,只可读出,但无法改写,一般用于存放系统程序BIOS和微程序控制。
(3)PROM(programmable ROM):可编程ROM,只能进行一次写入操作(与ROM相同),可以在出厂后由用户使用特殊电子设备写入。
(4)EPROM(erasable PROM):可擦除的PROM,其中的内容既可以读出,也可以写入。但是在一次写操作之前必须用紫外线照射15~20分钟以擦除所有信息,然后写入,可以写多次。
(5)E2PROM(electrically EPROM):电可擦除EPROM,可以读出,也可写入。而且在写操作之前,不需要把以前内容擦除。能够直接对寻址的字节或块进行修改,只不过写操作所需的时间远远大于读操作所需时间(每字节需几百ms),其集成度也较低。
(6)闪速存储器(flash memory):其性能介于EPROM与E2PROM之间,可使用电信号进行删除操作。整块闪速存储器可以在数秒内删除,速度远快于EPROM.而且可以选择删除某一块而非整块芯片的内容,但还不能进行字节级别的删除操作。其集成度与EPROM相当,高于E2PROM.闪速存储器有时也简称为"闪存".
(7)相联存储器(content addressable memory,CAM):CAM是一种特殊的存储器,是一种基于数据内容进行访问的存储设备。写入数据时,CAM能够自动选择一个未用的空单元进行存储;读出数据时,不是给出其存储单元的地址,而是直接给出该数据或者该数据的一部分内容,CAM对所有的存储单元中的数据同时进行比较并标记符合条件的所有数据以供读取。由于比较是同时进行的,所以这种基于数据内容读写的机制,其速度比基于地址进行读写的方式要快许多。
存储器的性能指标如下。
(1)存取时间:指的是从中央处理器发出指令到操作完成的时间。
(2)传输率:或称为"数据传输带宽",指单位时间内写入或读取的数据的多少。显然存取时间越少,则传输率越高。
(3)存储密度:单位面积的存储容量,人们在不断增加这个值。
5.辅助存储器
辅助存储器用于存放当前不需要立即使用的信息,一旦需要,则和主机成批交换数据。它是主存储器的后备,因此称之为"辅助存储器".常用的辅助存储器有磁带存储器、磁盘存储器和光盘存储器。
(1)磁带存储器
磁带存储设备是一种顺序存取的设备,存取时间较长。但存储容量大,便于携带,价格便宜,所以也是一种主要的辅助存储器。磁带的内容由磁带机读写(最便宜也最慢),按磁带机的读写方式主要可以分为两种,即启停式和数据流。
启停式磁带机按带宽可以分为1/4英寸、1/2英寸和1英寸3种。磁带上的信息以文件块的形式存放,整盘磁带的开始有一卷标标明。然后有一初始空白块,用于适应磁带从静止到稳定带速所需时间。文件记录以文件头标志和文件尾标志标识,一个文件由若干数据块组成,每一数据块又由若干记录组成(一个数据块所包括的记录条数叫做"块因子")。数据块之间以空白块(gap)进行分隔,文件之间也存在一段空隙。所有的文件都顺序地排列在磁带上,一个文件的长度不仅包括记录信息,也包括块间间隔。磁带机每一次读写信息的位数与磁带表面并行记录信息的磁道数有关,如7道、9道和16道,则分别有7、9和16个磁头并列,一次可以读写7位、9位或16位。
数据流磁带机结构简单,价格低,数据传输速率快。其记录格式是串行逐道记录,每次读写1位信息。数据连续地写在磁带上,数据块之间以空隙分隔,磁带机不能在块间启停。读写顺序为(4个磁道)先从0道的首端(BOT)开始,到其末端(EOT)。然后第1道反向记录从EOT到BOT,而第2道又正向从BOT到EOT,第3道再反向。
(2)磁盘存储器
磁盘上的数据都存放在磁道上,磁道是磁盘上的一组同心圆,其宽度与磁头的宽度相同。为了避免减小干扰,磁道与磁道之间要保持一定的间隔(inter-track gap),沿磁盘半径方向,单位长度内磁道的数目称之为"道密度"(道/英寸,TPI),最外层为0道。
沿磁道方向,单位长度内存储二进制信息的个数叫做"位密度".为了简化电路设计,每个磁道存储的位数都是相同的,所以其位密度也随着从外向内而增加。磁盘的数据传输以块为单位,所以磁盘上的数据也以块的形式存放。这些块称为"扇区"(sector),每个磁道通常包括10~100个扇区。同样为了避免干扰,扇区之间也相互留有空隙(inter-sector gap)。柱面是若干个磁盘组成的磁盘组,所有盘面上相同位置的磁道组称为"一个柱面"(每个柱面有n个磁道)。若每个磁盘有m个磁道,则该磁盘组共有m个柱面。
磁盘的非格式化容量为为Cn=w×3.14×d×m×n,其中w为位密度,d为最内圈直径(内径,),m为记录面数,n为每面磁道数。
磁盘格式化后能够存储有用信息的总量,存储容量=n×t×s×b。其中n为保存数据的总盘面数、t为每面磁道数、s为每道的扇区数、b为每个扇区存储的字节数。
磁盘的存取时间包括寻道时间(查找时间,seek time)和等待时间,寻道时间为磁头移动到目标磁道所需的时间(movable-head disk),固定磁头磁盘无需移动磁头,只需选择目标磁道对应的磁头即可;等待时间为等待读写的扇区旋转到磁头下方所用的时间,一般选用磁道旋转一周所用时间的一半作为平均等待时间。寻道时间由磁盘机的性能决定,目前主流硬盘典型的AST(average seek time)一般在10 ms左右,而转速则有2 400 r/m,5 400 r/m,7 200 r/m等。软盘转速较慢,一般只有360 r/m(因为磁头与盘面为接触性读写)。
磁盘的数据传输速率指磁头找到地址后,单位时间写入或读出的字节数。R=TB/T,其中TB为一个磁道上记录的字节数,T为磁盘每转一圈所需的时间,R为数据传输速率。
(3)RAID存储器
RAID(redundant array of inexpensive disks,廉价磁盘冗余阵列)技术旨在缩小日益扩大的CPU速度和磁盘存储器速度之间的差距。其策略是用多个较小的磁盘驱动器替换单一的大容量磁盘驱动器,同时合理地在多个磁盘上分布存放数据以支持同时从多个磁盘进行读写,从而改善了系统的I/O性能。小容量驱动器阵列与大容量驱动器相比,具有成本低、功耗小及性能好等优势。低代价的编码容错方案在保持阵列的速度与容量优势的同时保证了极高的可靠性,同时也较容易扩展容量。但是由于允许多个磁头同时进行操作以提高I/O数据传输速度,因此不可避免地提高了出错的概率。
RAID机制中共分8个级别,工业界公认的标准分别为RAID0~RAID7.RAID应用的主要技术有分块技术、交叉技术和重聚技术。
(4)网络存储
计算机所处理和产生的数据的十分重要,因为一旦数据丢失,所有的计算能力都变得毫无价值。这就给数据存储工业提出了新的挑战,即必须在廉价的网络上提供24×7操作数据的可靠性。经验业已证明,在网络环境下实现存储管理相当困难的。一个企业可能拥有不同的硬件/软件平台,而每一种平台都有与之相配套的实用管理程序。对于系统管理员来说,要想正确无误地处理所有这些差异,是极端困难的。网络环境下的存储管理大约有两种方法,其一,利用服务器提供的接口来实现管理;其二,通过专用的存储连接来管理,后者是大部分存储工业公司经常采用的方法。这就导致了一个有趣的结论,即数据是有价的独立实体,与访问它的计算机是分离的,因而也要求它的管理系统与主机系统是分离的。
网络存储沿着两条主要技术的发展方向前进,即NAS(网络连接存储)和SAN(存储区域网络)。NAS具有提供以太网数据访问的传统,其模型主要源于网络文件服务器的概念,其产品通常以与现有网络结构相容的应用软件包形式提供集成服务;SAN是一种新的存储连接拓扑结构,用于代替现有的系统和存储系统之间SCSI I/O连接。SAN代表了一种将数据由数据处理系统传输到数据存储系统的新方法,二者的比较见表2-1.
表2-1 SAN和NAS的比较
SAN一直被作为一种开放系统计算环境中数据可用性的解决方案来兜售。通过将某些I/O处理过程从系统转移到存储,可以获得更好的数据可用性,因此存储管理功能可以独立于访问数据的服务器。这种方法有明显的优点,例如,可以使用大型存储子系统为来自多个服务器的数据提供接口管理控制。然而提供这种能力的存储子系统必须获得更多的信息,而不仅仅是目前系统中提供的块传输表。进行存储管理必须对整个数据实体的信息有清楚的认识,如对于文件不仅仅是保存面向连接的块存储表。恢复文件的过程是一个很好的例子,即用户简单地提供想恢复的文件名和文件版本。然后选中该文件,启动恢复过程并将文件恢复。他们在恢复一个文件时并没有先找到所有需要恢复的文件的相关数据块,然后提交这些数据块列表来进行恢复。由此可见,如果SAN想提供有用的存储管理能力,则必须掌握数据库/文件系统的信息,而不仅仅是关于数据块的信息,这样SAN才能直接管理文件和数据库对象。如果SAN想提供预期的自治管理能力,则必须要求那些SAN中的智能组件提供关于数据/文件的处理功能。目前SAN中的智能组件可以支持块传播功能层的功能,并作为"超强虚拟设备"工作。但这并不意味着它们的智能足以极大简化存储和数据管理的过程,因此需要将文件系统的一部分移植到存储子系统中以达到这种目的。而具有嵌入式文件系统技术的存储子系统通常被视为NAS产品,这也解释了为什么SAN和NAS不是竞争对手。以后,SAN将逐渐具备某些文件系统的特征,以获得对数据管理的效率。另一方面,文件系统和数据库管理系统将逐渐演化,成为一种SAN可识别的分布式资源。无论从哪一方面发展,这两种技术都将逐渐相互融合,而不是相互分离。
SAN和NAS的区别和联系如下。
(1)SAN是一种网络,NAS产品则是一个专有文件服务器或一个智能文件访问设备。
(2)SAN在服务器和存储器之间用做I/O路径的专用网络。
(3)SAN包括面向块(SCSI)和面向文件(NAS)的存储产品。
(4)NAS产品能通过SAN连接到存储设备。
6.输入/输出设备
输入设备用于输入程序和需处理的原始数据(包括文本、图形、图像及声音等),输出设备用于输出计算机的运行或数据处理结果。现代计算机的输入输出设备形式多样,功能各异,下面介绍微机的主要输入输出设备。
(1)纸带机和卡片机:这都是"古代"大型计算机的输入设备,机器指令以打孔等方式存在于纸带及卡片上,由纸带机和卡片机输入计算机。以后人们可能只能从博物馆看到这些设备。
(2)键盘和鼠标:键盘用于输入字符,鼠标负责指示位置并执行选择等操作。在嵌入式系统中键盘往往简化成少数的几个键,手写笔是鼠标的扩展。
(3)显示器:显示器正向着越来越大,越来越清晰的方向发展,CRT显示器统治地位已经受到液晶显示器的挑战。嵌入式系统中的显示器往往简化为小屏幕CD或数码管,触摸屏实际上是显示器和鼠标的结合体。
(4)外存:外存是主存的辅助和延伸。有软盘、硬盘、光存储器、磁带机和闪存等。
(5)打印机:将需要的结果输出纸面上,有针打、喷墨及激光打印机。绘图仪是一种特殊的打印机,专门用于大幅面的图形精确输出。
7.计算机性能评价
首先介绍与性能有关的指令流和数据流的定义。
指令流为机器执行的指令序列,数据流为由指令流调用的数据序列,包括输入数据和中间结果。
(1)计算机根据多倍性的分类
按照计算机在一个执行阶段可执行的指令或处理数据的最大可能数,人们把计算机分成4种,见表2-2.
表2-2 多倍性分类
SISD(单指令流单数据流):这是最简单的方式,计算机每次处理一条指令,并只为一个操作部件分配数据。一般认为流水线技术的计算机仍然属于SISD.
SIMD(单指令流多数据流):并行处理机通常具备SIMD,它的多个处理单元每次都执行同样的指令,处理不同的数据单元,非常适合处理矩阵计算等。
MISD(多指令流单数据流):这种处理方式有多个处理单元,同时执行不同的指令,针对的是单一数据。但有资料认为流水线处理机是每个数据由不同操作部件处理。
MIMD(多指令流多数据流):这是一种全面的并行处理,典型的是多处理机,这种计算机的设计和控制都很复杂。
(2)处理器性能
计算机系统是一个极为复杂的系统,不同的指令系统,不同的体系实现方式,不同数量的硬件,不同的部件组合都对计算机的性能造成这样那样的影响。而且不同的应用对处理器性能的不同方面有不同的要求,这使得处理器性能评价需要综合考虑各方面。
(3)影响处理器性能的主要因素
基本字长:运算器进行计算的位数称为"基本字长",字长越长,处理器能够计算的精度就越高,处理器的复杂度就越高。因为基本字长增加不但要增加运算器的复杂度,而且需要同时增加寄存器和总线的宽度。
数据通路宽度:数据通路宽度指数据总线一次所能并行传送的位数,它体现了到信息的传送能力,从而影响计算机的有效处理速度。在处理器内部,数据通路的宽度一般是基本字长,而外部总线的数据通路宽度则不一定。显然,如果外部数据通路宽度小于基本字长,那么运算器需要的数据需要多次通过总线从主存传递到处理器内部。
指令系统:不同的指令系统对处理器的性能也有非常大的影响,一些处理器对一些专门的应用增加了专门的指令,处理器在处理这些专门的应用时能够"得心应手".
时钟频率:通常来说,提高处理器的时钟频率高能够提高系统的性能。因为在同样的时间内,提高时钟频率,使得时钟周期减少,指令的执行时间减少。
流水线技术:处理器使用流水线技术使得不同指令的不同执行部分能够使用不同的处理单元同时执行,比如将一个指令的取指、移码、取操作数、执行及写结果分别由不同的处理单元处理,这样能够有效地提高处理器性能。还有处理器把这些不同的处理单元在硬件上重复,形成多条流水线,以期进一步提高性能。无疑流水线增加了处理器的复杂度,不但要分开处理单元,而且需要增加流水线管理部分的电路。
内部数据/指令缓存:使用存储器内部的数据或指令缓存,能够减少处理器访问较慢的内存,从而提高处理器的性能,缓存越大越好。在缓存命中失败时,需要从主存提取数据,这个判断需要增加控制电路。如果缓存太小或管理不当,有可能对性能造成负面影响。
(4)处理器性能的评价
评价处理器性能可以是直接给出处理器每条指令的执行时间,或者指令系统中的指令执行时间的某种加权评价,还有就是计算处理器每秒能执行多少个加法指令。1个MIPS指的是处理器每秒能完成1×106条指令。
这样的简单评价方法随着计算机应用的不断发展,局限性也日益暴露,很快出现了改进的方法。
等效指令速度法:该方法把指令分成多种不同的类型,分别统计各种类型指令在整个程序中的比例和执行时间来计算等效指令速度。采用固定比率的方法来计算处理器的执行时间不能灵活地适应不同程序应用存在的指令频率不同,不能反映出不同处理器之间数据长度和指令功能强弱对处理器性能的影响,同时也不能反应处理器内部数据缓存及流水线等对性能的影响。
数据处理速度法:该方法试图给出处理器的"数据处理速度",这个值考虑了不同指令及不同操作数的平均长度对处理器性能的影响。这种方法主要对处理器和主存储器的速度进行度量,没有涉及cache及多功能部件等技术对性能的影响。
核心程序法:该方法总结归纳应用程序中使用最为频繁的部分程序作为核心程序,把这些程序在不同的处理器上运行,运行时间作为不同处理器的性能评价依据。使用精挑细选的核心程序,能够比较全面地评价处理器对某种应用程序的性能。和实际的应用程序相比,核心程序由于比较小,所以缓存利用率要高。