软、硬件的功能分配是计算机系统结构的主要任务,而软件和硬件在逻辑功能上又是等 效的。从原理上讲,软件的功能可以用硬件或固件完成,硬件的功能也可以用软件模拟完成, 只是它们在性能、价格、实现的难易程度上是不同的。
原则1应考虑在现有硬、器件(主要是逻辑器件和存储器件)条件下,系统要有高的 性能价格比,主要从实现费用、速度和其他性能鹽求来综合考虑。
仅从实现费用要求讨论。
无论是硬件实现,还是软件实现,实现费用都应包括研制费用和重复生产费用。虽然目 前软件的设计效率丨氐,但用硬件实现的设计费用还是明显地高于用软件实现的费用,尤其是VLSI 专用芯片的设计费用是比较高的。
假设某功能的软、硬件实现的每次设计费用分别为Ds和Dh,则Dh=100 Ds是完全可 能的。
至于重复生产费用,硬件实现的也比软件实现的贵得多,后者只是软件的复制费用加上 存放该软件的存储介质(如盘片)的费用。假设该功能软、硬件实现的每次重复生产费用分 别为Ms和Mh,则Mh=100Ms也是可能的。
用硬件实现的功能(如子程序调用的全部操作)_般只需设计一次,而用软件实现时, 每用到该功能往往要重新设计。设C为该功能在软件实现时需重新设计的次数,则该功能 用软件实现的设计费用就为C x Ds(由于重新设计时可利用原设计进行修改或简单套用, 使设计费用Ds要低得多)。同一功能的软件在存储介质上可能多次复制和存储,如出现了 R次,则软件实现此功能的重复生产费用就为Rx Ms。
假定某计算机系统生产了 V台。每台计算机用硬件实现的费用为Dh / V + Mh ,若改 用软件实现,费用则为C x Ds/ V + R x Ms。只有当
Dh / V + Mh = C x Ds / V + R x Ms
用硬件实现才是适宜的。将上述Dh与Ds、Mh与Ms的比值代入,得
100Ds / V +100Mh< C x Ds / V + R x Ms
结论:只有在c和R的值较大时,这个不等式才越能够成立。就是说,只有这个功能 是经常要用的基本单元功能,才宜于用硬件实现。不要盲目地认为硬件实现的功能比例越大 越好。
目前,就软件设计费用来说,要远比软件的重复生产费用高,Ds^ 104xMs也是完全 可能的。将此关系式代入上式,得
106/V +100 < 104x C / V + R
由于C值一般总比100小,因此K值越大,这个不等式才越成立。
结论:只有对产量大的计算机系统,増大硬件功能实现的比例才是适宜的。如果用硬件 实现不能给用户带来明显的好处,产量仍较低,则系统是不会有生命力的。
原则2要考虑到准备采用和可能采用的组成技术,使之尽可能不要过多或不合理地限 制各种组成、实现技术的采用。
原则3不能仅从"硬"的角度考虑如何便于应用组成技术的成果和便于发挥器件技术 的进展,还应从"软"的角度把如何为编译和操作系统的实现以及为高级语言程序的设计提 供更多、更好的硬件支持放在首位。
结论:应当进一步缩短高级语言与机器语言、操作系统与计算机系统结构、程序设计环 境(如模块化、数据类型抽象)等与计算机系统结构之间存在的语义差距。计算机系统结构、 机器语言是用硬件和固件实现的,而这些语义差Si是用软件来填补的。语义差距的大小实质 上取决于软、硬件功能的分配,差S距宿小了 ,系统结构对软件设计的支持就加强了。本书将 在第2章中结合数据表示、寻址方式与指令系统的设计和改进,讨论在维持一定语义差距 的前提下缩小语义差距的某些途径。
在设计i十算机系统时,一般应遵循如下的定量设计原理。
尽可能加速处理高概率的事件远比加速处理概率很低的事件对性能的提高要显著。例 如,CPU在运算中发生溢出的概率是很低的,为此,设计时可考虑加快不溢出时的运算速 度,而对溢出时的速度不予考虑。有关哈夫曼压缩原理将在以后章节中详细讲述。
2.Amdah 定律
该定律是1967年IBM公司的Amdahl在设计IBM360系列机时首先提出来的。该定律可用于确定对系统中性能瓶颈部件采取措施提高速度后系统性能改进的程度,即系统加速 比Sp。系统加速比Sp定义为系统改进后的性能与未改进时的性能的比值,或者定义为系统 未改进时的程序执行时间Told与改进后的程序执行时间Tmw的比值。系统加速比Sp与两个 因素有关,即性能可改进比f-和部件加速比。
性能可改进比fnew是系统性能可改进部分占用的时间与未改进时系统总执行时间的比 值,显然,0< fnew <1。部件加速比r_是系统性能可改进部分在改进后性能提高的比值,不 难看出,。>丨。
这样,系统加速比为1 Tnew (1f new ^ + f new 丨 rnew
式中,分母的(1 - fnew)为不能改进性能这部分的比例。
可见,当系统性能可改进比/_为0时,Sp =1;而当部件加速比rnew趋于无穷大时, 分母中的L / Lw将趋于0,这里有1p 1 - fnew就是说,性能提高的幅度受限于性能改进部分所占的比例大小,而性能改善的极P!又受 性能可改进比f_的约束。
Amdahl定律告诉我们,改进效果好的高性能系统应是一个各部分性能均能平衡得到 提高的系统,不能只是其中某个功能部件性能的提高。
3.程序访问的局部性定律
程序访问的局部性包括了时间上和空间上的两个局部性。时间上的局部性指的是现在 正使用的信息可能不久还要使用,这是因为程序存在着循环。空间上的局部性指的是最近的
将来要用到的信息很可能与现在正在使用的信息在程序位置上是邻近的,这是因为指令通常 是顺序存放、顺序执行的,数据也通常是以向量、阵列、树、表等形式簇聚地存放在一起 的。统计表明,程序执行时,90%的时间只访问整个程序的10%那一部分,而其余10%的 时间才访问另外90%的那部分程序。甚至有的程序部分访问时间连1%都不到。这为设计 指令系统提供了重要的依据,即指令硬件的设计应尽量加速高频指令的执行。
1.计算机系统设计的主要任务
计算机系统设计的主要任务包括系统结构、组成和实现的设计。它涉及软硬件功能分 配、计算机指令系统设计、功能组织、逻辑设计、集成电路设计、封装、电源、冷却等许多 方面。优化设计时,还要熟悉编译系统和操作系统的设计技术。
计算机系统设计首先要根据市场和应用情况,确定用户对计算机系统的功能、性能和价 格的要求。其中,应用软件对功能的确定起主要作用。如果某类应用软件基于某种指令系统 且在市场上应用很普遍,就必须在系统结构设计时实现这种指令系统,以满足其应用需求。
1) 要弄清其应用领域是专用的还是通用的。专用机用于特殊的专门领域,往往要求有 高的性能和实时性。通用机则要求适用于多种应用场合,并且在每一种应用场合中都能有较 均衡的高性能。如果是面向科学计算的通用机,就要提高浮点运算性能;而如果是面向事务 处理的通用机,则应増加事务处理类指令和对数据库的支持和操作功能。
2) 要弄清软件兼容是放在明陳层次。如果是高级语言级兼容,就比较灵活,主要研究 相应的编译程序。如果是传统机器语言(目标代码)级的软件兼容,结构就已确定,灵活性 较差。这时可不必考虑软件移植的工作,但可以考虑采用不同的微程序实现。
3) 要弄清对操作系统有何种要求。这主要是关注于存储系统的设计。如果寻址范围很大,就要考虑采用何种存储管理方式。例如,是采用页式管理还是段页式管理,需要采取哪 些存储保护方式等。
4)要如何保证有高的标准化程度。对现有国际标准和国家标准应尽可能遵守,如各种 浮点数标准、总线标准、网络标准、程序语言标准等。随着技术发展,当前的标准不能适用 时,则应向厂家、研究所和各种标准化组织提出研究新的标准。
在系统的功能确定后,就要考虑如何优化系统的设计,使之能有高的性能价格比。这可 用代表性的应用程序测试,评价、量化其性能。其中关键的是要考虑如何使软件和硬件功能 的分配更为合理。功能用硬件实现还是软件实现是各有优缺点的。硬件实现的优点是速度往 往较快,性能好,但缺点是不灵活,适应性差。软件实现的优点是设计容易,修改容易,有 灵活的适应性,但缺点是速度、性能低。应该看到,硬件实现也不是一定比软件实现的速度 高,算法有着举足轻重的影响。先进的算法用软件实现有时可比差劲的算法用硬件实现的速 度快得多。用于科学计算的计算机就要配置浮点协处理器来提高浮点运算速度,事务处理计 算机就要配置二-十进制数表示、字符操作类指令。因此,协调平衡好软、硬件功能分配的 比例,就能使系统获得更高的性能价格比。
系统结构设计应适应硬件技术、软件技术、器件技术、应用要求的发展变化。注意并适 应这些变化,系统结构才能有强的生命力。器件特别是集成电路、动态随机访问存储器、硬 盘等的发展,会促进软件实现的功能更多地改用硬件实现。目前芯片上的晶体管数量每年增 加1/4,开关电路的速度每年提高1/4,存储器访问周期每10年缩短1/3,硬盘存储密度每年提 高1/4,硬盘访问时间每10年减少1/3。
硬件设计还要考虑有好的易扩性、兼容性,以便曰后系统的升级换代。从应用来看,存 储容量每年増长1.5〜2倍,相应要求访存地址码位数每年增加0.5〜1位,所以主存容量应 有可扩性。此外,高级语言逐步取代汇编语言,要求系统结构能更好地支持编译程度和编程模式的改变。面向对象的程序设计就要求系统结构设计能^有相应的支持。
2.计算机系统的设计方法
从多级层次结构出发,计算机系统的设计按多级层次结构(见图1-1 )的由上、下、中 开始设计可以有"由上往下"、"由下往上"、"由中间开始"3种不同的设计方法。
1 )"由上往下"设计,也称"由顶向底"设计。它是先考虑如何满足应用要求,定好 面向应用的那个虚拟机器级的特性和工作环境,如要用到的基本命令、指令、语句结构、数 据类型、数据格式等,再逐级地向下设计,每设计下一级都考虑对上一级是优化的。这样设 计出来的计算机系统对面向的应用必然是高效的。这是一种环境要求比较稳定的专用机的设 计方法,无;'去用于通用机的设计。"由上往下"设计是一种串行设计方法,设计周期较长。
2 )"由下往上"设计,也称"由底向顶"设计。它是先不管应用要求,只根据目前能 用的器件,参照、吸收已有各种机器的特点,将微程序机器级(如果采用微程序控制)和传 统机器级研制出来。然后,加配适用于不同应用领域的多种操作系统和编译系统软件,如多 种分时操作系统、实时操作系统和多种高级语言的编译程序,传统称为配软件,使应用人员 可以根据不同的语言类型、数据形式,采用合适的系统软件和算法来满足应用的需要。这的 确是一种通用机的设计方法。软、硬件脱节,软件因得不到硬件支持而显得繁杂。而且,这 样研制出的机器有些性能指标往往是虚假的。例如,传统机器级的每秒运算次数指标就是 如此。"由下往上"设计也是串行设计,同样也会延长设计周期。因此,这种"由下往上" 设I十在硬、器件技术飞速发展的今天来说,已很少采用。
3 )"从中间开始"向两边设计。这是通用机一般采用的方法。它可以克服"由上往下" 和"由下往上"两种设计方法中,软、硬件设计分离和脱节的致命缺点。"从中间开始"设 计是选择从层次结构的主要软、硬界面开始设计,即在传统机器语言机器级与操作系统机器 级之间进行合理的软、硬件功能分配。既考虑到硬、器件的现状和发展,又考虑到可能使用的算法和数据结构,定义好这个界面,确定哪些功能由硬件实现,明陛功能由软件实现。同 时,考虑硬件能对操作系统、编译系统的实现提供什么样的支持。然后,由这个中间界面分 别向上、向下同时进行软、硬件的设计。软件人员依次设计操作系统级、汇编语言级、高 级语言级和应用语言级;硬件人员依次设计传统机器语言机器级、微程序机器级和数字逻辑 级。软件和硬件并行设计,大大缩短了系统的设计周期,设计过程中两部分人可交流协调, 适当微调软、硬件实现的比例。所以这是一种较好的交互式设计方法。当然,这要求设计者 应同时具备丰富的软件、硬件、器件和应用等方面的知识。又由于软件设计周期一般比较长, 为了能在硬件研制出来之前开展软件的设计测试,还应具备有效的软件设计环境和开发工 具。例如,在某个宿主机上建立目标程序的指令模拟器、系统结构分析模拟器以及良好的测 试程序、性能评价的测试程序等。
计算机设计的步骤大体是先进行需求分析。对系统的应用环境(科学计算、事务处理、 实时处理、分时处理、网络、远程处理、容错、高保密性、高可靠性等)、所用语言的种类 特性、对操作系统的要求、所用到的外围设备特性等,进行技术经济分析和市场分析。
根据需求分析相应地写出需求分析说明书。需求分析说明书应包括设计准则、速度、造 价、可行性、可扩性、兼容性、可靠性、灵活性、安全性、功能、所用芯片、新结构引人的 风险、程序设计的方便性等的说明。
接下来进行概念设计。对机器级界面,如数据表示、指令系统、寻址方式、存储机构、 中断系统、输入/输出系统、总线结构等进行具体细致的定义和设计,同时应提供几种方案, 以便选择和比较。
最后通过模拟、测试,反复对所设计的系统进行优化和性能评价,使系统获得尽可能高 的性能价格比。
用户评论