计算机系统结构的定义和内涵
从计算机的层次结构角度来看,系统结构( System Architecture)”是对计算机系统中各级界面的定义及其上下的功能分配。每级都有其自己的系统结构。在此,先说明有关“透明”的概念。如果客观存在的事物或属性从某个角度看不到,则称对它是透明( Transparent)的。不同机器级程序员所看到的计算机属性是不同的,它就是计算机系统不同层次的界面。系统结构就是要研究对于某级,哪些属性应透明,哪些属性不应透明。透明可简化该级的设计,但因无法控制也会带来不利影响。因此,要正确进行透明性取舍。 计算机系统结构也称计算机系统的体系结构( Computer Architecture),它只是系统结构中的一部分,指的是传统机器语言机器级的系统结构。其界面之上包括操作系统级、汇编语言级、高级语言级和应用语言级中所有软件的功能,该界面之下包括所有硬件和固件的功能。因此,它是软件和硬件/固件的交界面,是机器语言、汇编语言程序设计者或编译程序设计者看到的机器物理系统的抽象。 结论:计算机系统结构研究的是软、硬件之间的功能分配以及对传统机器级界面的确定。为机器语言、汇编语言程序设计者或编译程序生成系统设计或生成的程序能在机器上正确运行提供应看到和遵循的计算机属性。 就目前的通用机来说,计算机系统结构的属性包括:
- 硬件能直接识别和处理的数据类型及格式等的数据表示。
- 最小可寻址单位、寻址种类、地址计算等的寻址方式。
- 通用/专用寄存器的设置、数量、字长、使用约定等的寄存器组织。
- 二进制或汇编指令的操作类型、格式、排序方式、控制机构等的指令系统。
- 主存的最小编址单位、编址方式、容量、最大可编址空间等的存储系统组织。
- 中断的分类与分级、中断处理程序功能及入口地址等的中断机构。
- 系统机器级的管态和用户态的定义与切换。
- 输入/输出设备的连接、使用方式、流量、操作结束、出错指示等的机器级I/O结构。
- 系统各部分的信息保护方式和保护机构等属性。
【例1-1】 IBM PC系列和VAX-11系列的指令系统、寻址方式、寄存器组织、I/O设备连接方式等都不一样,从传统机器浯言程序员或汇编语言程序员的角度来看,概念性结构和功能特性差异很大。要使他们所编写的程序能运行,应了解的计算机属性大不相同,但高级语言程序员却看不到。
计算机组成与计算机实现的定义和内涵
从计算机系统结构的内涵可以看出,机器级内部的数据流和控制流的组成、逻辑设计和器件设计等都不属于计算机系统结构,就是说,它们对计算机系统结构设计是透明的。它们属于计算机组成或计算机实现的范畴。
计算机组成
计算机组成( Computer Organization)指的是计算机系统结构的逻辑实现,包括机器级内部的数据流和控制流的组成以及逻辑设计等。 计算机组成着眼于机器级内部各事件的排序方式与控制机构、各部件的功能及各部件间的联系。它要解决的问题是在希望达到的性能和价格的情况下,如何更好、更合理地把各种设备和部件组织成计算机,实现所确定的系统结构。20世纪60年代以来,计算机组成设计主要是围绕提高速度,着重提高操作的并行度、重叠度,以及功能的分散和设置专用功能部件来进行的。 计算机组成设计要确定的方面一般应包括:
- 数据通路宽度(数据总线一次并行传送的信息位数)。
- 专用部件的设置(是否设置乘除法、浮点运算、字符处理、地址运算等专用部件,设置的数量与机器要达到的速度、价格及专用部件的使用频率等有关)。
- 各种操作对部件的共享程度(分时共享使用程度高,虽然限制了速度,但价格便宜。设置部件多降低共享程度,因操作并行度提高,可提高速度,但价格也会提高)。
- 功能部件的并行度(是用顺序串行,还是用重叠、流水或分布式控制和处理)。
- 控制机构的组成方式(用硬件还是微程序控制,是单机处理还是多机或功能分布处理)。
- 缓冲和排队技术(部件间如何设置及设置多大容量的缓冲器来协调它们的速度差。是用随机、先进先出、先进后出、优先级,还是用循环方式来安排事件处理的顺序)。
- 预估、预判技术(用什么原则为优化性能预测未来行为)
- 可靠性技术(用何种冗余和容错技术来提高可靠性)。
计算机实现
计算机实现( Computer Implementation)指的是计算机组成的物理实现,包括处理机、主存等部件的物理结构,器件的集成度和速度,器件、模块、插件、底板的划分与连接,专用器件的设计,微组装技术,信号传输,电源、冷却及整机装配技术等。 计算机实现的设计着眼于器件技术和微组装技术,其中,器件技术起着主导作用。 【例1-2】指令系统的确定属于计算机系统结构。指令的实现,如取指令、指令操作码译码、计算操作数地址、取数、运算、送结果等的操作安排和排序属于计算机组成。实现这些指令功能的具体电路、器件的设计及装配技术属于计算机实现。 确定指令系统中是否要设置乘法指令属于计算机系统结构。乘法指令是用专门的高速乘法器实现,还是靠用加法器和移位器经一连串时序信号控制其相加和右移来实现,属于计算机组成。乘法器、加法-移位器的物理实现,如器件的类型、集成度、数量、价格,以及微组装技术的确定和选择属于计算机实现。 主存容量与编址方式(按位、按字节,还是按字访问等)的确定属于计算机系统结构。为达到性能价格要求,主存速度应该为多少,以及逻辑结构是否采用多体交叉属于计算机组成。主存器件的选定、逻辑设计、微组装技术的使用属于计算机实现。 【例1-3】IBM370系列有115、125、135、145、158、168等由低档到高档的多种型号机器。从汇编语言、机器语言程序设计者角度看到的概念性结构。它们均是由中央处理机/主存一通道一设备控制器一外设4级构成的,以主存为中心,采用通道方式输入/输出。从层次结构角度看,IBM370系列中不同型号的机器从高级语言机器级汇编语言机器级到传统机器语言机器级都是相同的,只是使用不同的组成和实现、不同的微程序机器级使机器性能、价格不同。因此,设计何种系列机属于计算机系统结构,而系列内不同型号计算机的组织属于计算机组成。 IBM 370系列的中央处理机都有相同的机器指令和汇编指令系统,只是指令的分析执行在低档机上采用顺序方式进行,在高档机上则采用重叠、流水或其他并行处理方式。程序设计者编程时所看到的数据形式(即数据表示)都是相同的32位序长,定点数都是半字长16位或全字长32位,浮点数都是单字长32位、双字长64位或四字长128位。由于速度、价格的要求不同,在组成和实现时,数据通路宽度(数据总线线数)可以分别采用8位、16位、32位或64位。一个64位的字在8位数据通路宽度的机器上需分8次传送完,而在64位数据通路宽度的机器上只需一次即可传送完,速度快了,但硬件多了,价格变贵。因此,数据总线宽度对程序员是透明的,是不需要知道的。 IBM370系列的各档机器都釆用通道方式进行输人/输出,但在计算机组成上,低档机器可以采用结合型通道,让通道的功能借用中央处理机的某些部件完成,同一套硬件分时执行中央处理机和通道的功能,虽然系统速度性能低,但可以降低成本。而高档机器上釆用独立型通道,单独设置通道硬件,与中央处理机并行,成本虽高,但系统速度提高了。 结论:机器/汇编指令系统、数据表示、是否釆用通道方式输入/输出的确定属于计算机系统结构;指令采用顺序、重叠、流水还是其他方式解释,数据通路宽度的确定,通道采用结合型还是独立型,则属于计算机组成。 【例1-4】DEC公司早先推出的PDP-1系列是以单总线结构著称的,它不属于计算机系统结构。因为为适应不同速度和价格的要求,不同型号机器仍使用了多种不同的总线。但是,它们都具有相同的10连接和使用方式,即将I/O设备端口寄存器在逻辑上看做是主存的一部分,与主存统一编址,通过访间主存这些指定单元来实现与指定的I/O设备通信,完成对该设备的读/写等。单盘因此,对PDP-11或后来的VAX-11来说,单总线结构属于计算机组成,其机器级的 ⅠO连接和使用方式才属于计算机系统结构,是程序设计者编写LO程序时应当看到的。
计算机系统结构、组成和实现的相互关系和影响
计算机系统结构、组成、实现三者互不相同,但又相互影响。从前面的例子可以看出,相同结构(如指令系统相同)的计算机,可以因速度不同而采用不同的组成。例如,指令间既可以顺序执行,也可以重叠执行,以提高性能。乘法指令既可以用专门的乘法器来实现,也可以用加法器、移位器等经重复加、移位来实现,这取决于性能、价格、乘法指令使用频度及所用乘法的运算方法。高速、高频的可以使用专门乘法器,否则宜用后一种方法来降低价格。 同样,一种组成可有多种不同的实现方法。例如,主存器件可用双极型的,也可用MOS型的;可用VSI单片,也可用多片小规模集成电路组成。这取决于要求的性能价格比及器件技术状况。 结构不同会使可能采用的组成技术不同。 【例1-5】为了实现 A:=B+C D:=E*F 若采用面向寄存器的系统结构,其程序可以是 LOAD R1,B ADD R1,C STORE A,R1 LOAD R2,F MPY R2,F STORE D,R2 而对于面向主存的三中地址寻址方式的结构,其程序可以是 ADD B,C,A MPY E,F,D 要提高运算速度,可让相加与相乘并行,为此这两种结构在组成上都要求设置独立的加法器和乘法器。对于面向寄存器的结构,还要求R1和R2能同时被访问。而对于面向主存的三地址寻址的结构并无此要求,但是要求能同时形成多个访存操作数地址和能同时访存。 组成也会影响结构。微程序控制就是一个范例。通过改变控制存储器中的微程序,就可以改变系统的机器指令,改变结构。在一台计算机上提供对应多种指令系统的微程序动态切换,结构可变,这是硬联控制组成技术无法做到的。另外,增加多倍长运算、十进制运算、字符行处理、矩阵乘、多项式求值、三角函数求值、查表、字节测试、开方等复合机器指令和宏指令,由微程序解释实现,因为大量减少了访主存取机器指令的次数,速度比用基本机器指令构成的机器语言子程序实现要快几倍到十几倍。如果没有组成技术的进步,结构的进展是不可能的。 因此,系统结构的设计必须结合应用考虑,为软件和算法的实现提供更多、更好的支持,同时还要考虑可能采用和准备采用的组成技术。结构设计应避免过多地或不合理地限制各种组成、实现技术的采用与发展,尽量做到既能方便地在低档机上用简单、便宜的组成实现,又能在高档机上用复杂、较贵的组成实现,使它们都能充分发挥实现方法所带来的好处,这样,结构才有生命力。 组成设计向上决定于结构,向下受限于实现技术。然而,它们是可以与实现折中权衡的。例如,为达到所要求的速度,可用较简单的组成,但却是复杂的实现技术;也可用复杂的组成,但却是一般速度的实现技术。前者可能要选用高性能的器件,从而增加器件测试、组装、电源和冷却等的负担;而后者可能造成组成设计复杂化和更多地采用专用芯片。组成和实现的权衡取决于器件来源、厂家技术特长和性能价格比能否优化。应当在当时器件技术条件下,保证价格不增或只增很少的情况下尽可能地提高速度。 结构、组成和实现所包含的具体内容随着不同的时期及不同的计算机系统也会有差异。在某些系统中作为结构的内容,在另一些系统中可能是组成和实现的内容。软件的硬化和硬件的软化都反映了这一事实。ⅥLSI的发展更使结构、组成和实现融合于一体,难以分开。 由于计算机组成和计算机实现关系密切,有人将它们合称为计算机实现,即计算机系统的逻辑实现和物理实现。 结论:计算机系统结构设计的任务是进行软、硬件的功能分配,确定传统机器级的软、硬件界面,但作为“计算机系统结构”这门学科来讲,实际上包括了系统结构和组成两个方面的内容。因此,它研究的是软、硬件的功能分配以及如何更好、更合理地实现分配给硬件的功能。可把着眼于软、硬件功能分配和确定程序设计者所看到的机器级界面的计算机系统结构,称为程序设计者看到的计算机系统结构;而把着眼于如何更好、更合理地实现分配给硬件的功能的计算机组成,称为计算机设计者看到的计算机系统结构。