1.4.7 算法和系统结构
系统结构设计者必须仔细地研究算法,以便了解怎样才能充分利用系统结构的高性能。系统结构设计者还需要了解各种应用问题,例如受浮点除速度限制的问题,受内排序限制的问题,受图象数据位变换的解释能力限制的问题等等。改进原有的算法是最常用的方法。有时候只要作简单的修改,有时候把原有的算法修改成几乎完全是新的算法了。这样,原来很不适于在高性能系统结构上处理的应用问题,就能在只要增加一些便宜硬件的系统结构上处理了。针对某个特殊应用问题,如果算法上有突破,甚至不需要高性能的系统结构,而在普通的系统上就能得到解决。关于浮点除和排序这两类算法已研究得很透沏了,所以无论怎样修改现有的算法,一般不太可能会有新的突破。然而许多其它算法都有改进的余地,所以通过算法的研究会大大提高系统的性能。
虽然我们不能期望计算机系统结构设计者进入应用领域并在这个领域的算法方面产生突破,但是系统结构设计者把一些基本算法修改成更适合于处理的形式是可能的。例如系统结构设计者可以把一个问题按新的方式划分,以便减小存储器工作区和减少所需的高速寄存器的数目。例如系统结构设计者可以找到构造问题的新方法,以便使它适合于并行的系统结构。
系统结构设计者实际上既要研究算法又要研究系统结构。充分利用算法和系统结构两方面优势,构造出一种有效的解决问题的方法。必须提醒的一点是通常应该研究一类算法,而不是一个算法。更困难的是设计一个系统结构,使所有这类问题在此结构上都能很好解决。
第二种解决方法是改进基本的系统结构。过去,我们已经采用了许多不同技术来改进系统的性能。例如,指令缓冲器、Cache存储器、流水线等,已在许多商业机器中采用。为了减少取指令的次数,有些机器设有复杂的指令。为了减少指令的基本周期时间,有些机器去掉了复杂指令。
系统结构设计者需要了解系统的瓶颈在哪部分,然后采取措施去掉瓶颈。一个设计很好的系统当它以峰值性能工作时,应该使许多部件都处于接近饱和状态。如果只有一处瓶颈,而其它功能部件都处于没被充分利用的状态,那么我们说这个系统设计得不好。我们可以把这一系统的某些无法被利用的功能去掉,这样整个系统的性能仍保持不变而价格降低了。或者想法解决这个瓶颈,可用较少的费用而达到改进整个系统性能之目的。
第三种方法是利用并行性获得高速度。通常这是最费钱的方法。但是VLSI芯片价格的迅速下降,使并行硬件成为一种可行的方案了。回过来再看图1.8,它告诉我们:采用低价格的器件技术是获得高性能最理想的方案。但每种器件技术只在某一性能范围才有效。然而并行系统结构提供了一种采用低成本器件技术获得高性能的方法。由于并行计算机可以采用价格较便宜的器件,而高性能串行计算机必须采用价格较贵的器件,这是研究并行系统结构的吸引力之一。当然通过采用低价格器件技术所获得的好处部分将被由于并行执行程序的开销而抵消。
上述改进性能的三种技术都很重要,但并不是说只有这三种技术。所有技术都值得进一步研究。由于现实世界和本书中所假设的高度理想化的模型不完全一致,所以现实世界可能出现配置不平衡的系统,而根据性能和价格标准很难判断这些配置不平衡系统的好坏。
例如,系统A有一个256K字节的Cache存储器,系统B为了能与系统A竞争设有512K字节或1M字节的Cache存储器。即使已经证明这么大容量的Cache存储器不太合理,但系统B已经用较大的Cache容量获得了竞争的优势。因此,这些竞争性压力很容易迫使系统结构设计者设计出配置很不平衡的系统。
这几年我们通常用性能和价格来衡量系统的好坏。如果系统在首次推出时,其配置很不平衡,实际的性能不如所说的那样好,用户就会觉得价格太高了。这样,系统的最后配置将被修改成性能和价格都比较合理的情况。
通过上面讨论,我们已经知道为了改进系统的性能,系统结构设计者可以采用改进算法、在基本系统结构上增加硬件辅助部件、设计并行系统结构这三种方法。有时为了达到高性能,可能需要把这三种方法结合起来考虑。
由于新的器件不断推出,系统结构设计者可用的积木块也相应地不断变化,容易实现的新结构也就不断出现了。另外,应用领域也不断变化,许多新领域开始使用计算机,已经使用计算机的领域的应用范围和规模都比原来增大了。总之,系统结构设计者在进行新的设计时会遇到新问题,需要研究新方法、新方案、新结构。但是系统结构作为方法学来说,它是把不同可用的功能部件组合在一起成为一个能高效解决应用问题的系统,这一点是始终不会改变的。
技术的发展促进了计算机系统结构的发展。每年都有新的器件和新的设备问世,使新功能的计算机系统结构不断出现。今天看来富有想象力和卓有成效的系统结构,明天也许会显得落后了。同样,今天看来是荒谬、不切实际的建议,明天可能是很理想的设计方案。因此不存在一个绝对的标准用来断言一种系统结构一定比另一种系统结构好。
学习计算机系统结构的关键是学会在现有技术条件下评价系统结构的方法。了解一台计算机的速度固然重要,但了解其是否充分利用了处理机周期、存储器容量、输入�彩涑龃�宽等也同样重要。评价一个系统结构既要考虑价格又要考虑性能,不能只注意性能。由于技术的发展,各功能模块的价格每年都有很大的变化,各功能模块之间的相对价格同样也有很大的变化,所以为了获得较好的性能/价格比,不同功能模块的最佳比例也应随着技术的发展而有所改变。
本书将介绍系统结构的设计技术,而不是仅仅给出结论。我们准备提供一系列可供选择的设计技术,其中有些对今天来说是合理的,有些则不合理。我们将介绍如何从中选择合适的技术来构造高性能的系统和如何评价采用90年代技术所制造的系统。评价所获得的结论一直到下个世纪初可能都是合理的,但是我们无论如何也不能说今天看来是最佳的系统结构在下一个十年仍是最佳的。
然而,方法是长期有效的。系统结构设计者使用本书所介绍的设计方法与评价技术就可以在任何时候根据当时的技术,设计出高性能的系统。
性能分析应建立在整个系统结构基础上。设计和分析一个高性能系统非常复杂,最好的方法是把一个大系统分解成由功能模块组成的层次形式,这样每个功能模块的系统结构可以分别进行分析。如果某个功能模块仍然非常复杂,那么还可以进一步分解成更小的功能模块。例如,处理机可以看作由算术部件、控制逻辑、寄存器等组成。
指令系统的设计是系统结构的一个重要内容。目前存在着指令系统是非常复杂好还是非常简单好的争论。我们不打算介入这场争论,因为关于这个争论不可能只有一个答案。但是我们要阐明决定这个答案的各种因素。不管采用什么技术,系统结构设计者在进行新的设计时应对这些因素进行权衡。
往往易把计算机系统结构设计和计算机硬件设计相混淆。由于计算机系统结构的设计是在功能这一层次上考虑问题,当然也不排斥硬件这一层次,但计算机系统结构设计不只包括硬件设计。例如,一台具有算术和逻辑功能的处理器可以由硬件实现而无需额外的程序设计。存储器管理功能可以由硬件和软件共同实现,它们之间的分工取决于性能、价格及当前硬件和软件的可用性情况。在VLSI还处于发展初期时,存储器管理功能一般由软件实现,处理机必须提供用于地址变换和地址保护的寄存器。随着VLSI的不断发展,存储器管理的大部分功能变为由硬件实现。许多系统已经用硬件来实现过去只能用软件方法实现的存储器管理算法。如果把存储器管理软件写到只读存储器,管理程序可以透明地调用它,那么硬件和软件之间的界线就变得模糊了。我们可把这种只读存储器视为一个实现存储器管理的黑匣子。这样,实现存储器管理功能就由软件方法变为硬件方法了。使用这种只读存储器芯片的系统结构设计者不需要考虑存储器管理软件。如果这种芯片只实现大部分而不是全部的存储器管理功能,那么系统结构设计者还必须通过软件模块来弥补不足的功能。
综上所述,计算机系统结构是把各个功能部件组成一个系统,这些部件可以是硬件、软件或两者的混合体。系统结构设计是选择一种最佳的部件组合,使得整个系统能有效地工作。以后章节我们将介绍不同系统结构的实例,其中有些正被证明是成功的,有些则是可能会成功的方案。