堆栈计算机的原理和实现 |
作者 Philip J. Koopman, Jr. |
| 编译 赵宇 张文翠 |
第八章 堆栈计算机的应用
堆栈计算机就像许多计算机一样,适应于广泛的应用领域,任何需要高速度和低系统复杂性的系统都可以选用堆栈处理器。
8.1 讨论了有这些需求、很适合堆栈处理器的应用领域 -- 这个领域就是实时嵌入式控制。实时控制应用需要的是尺寸小、重量轻、成本低、可靠性高。
8.2 讨论了 16 位和 32 位硬件的不同能力和折衷。正确选择处理器的尺寸对成功的设计是至关重要的。
8.3 讨论了系统实现时的考虑。选择硬连线和微码系统涉及一系列的折衷,包括复杂度、速度和灵活性,不同的集成度也影响系统的性能。
8.4 给出了4个适用于堆栈计算机的广泛应用领域,以列表方式给出了可能应用的详细说明。
8.1 实时嵌入式控制
实时嵌入式控制处理器是这样一类计算机,它们(通常)构建在一个复杂的设备中,比如汽车、飞机、计算机外设、音频电子和军用运输工具/武器,但它们自己却不再被当成是一个计算机。
8.1.1 实时控制的要求
大多数情况下,嵌入在系统中的计算机对于用户来说是不可见的,比如在一个汽车防滑减速系统中。通常,处理器以低成本和多功能来替代系统中的一个昂贵和体积巨大的部件,另外也有一些明显地表现是计算机的情况,比如在飞机的自动驾驭仪中。但是,在所有的情况下,计算机只是大系统的一个部件。
许多嵌入式系统对处理器作出了苛刻的限制,包括尺寸、重量、成本、功率、可靠性和操作环境。这是因为处理器只是大系统的一个部件,而那个大系统有它自己的操作环境和制造限制。
同时,处理器却必须提供最大的可能性以响应实时事件。实时事件典型地是异步地到达系统的外部请求,它要求在几微秒到几毫秒的时间内响应。例如,一些高性能的喷气飞机天生就不稳定,它依赖于计算机来保持它们飞行平稳。一个空中计算机必须很轻、很小,不可能过度地要求功率和冷却;同时,它又不能落后于依靠它飞行的飞机。在超过音速的时候,飞机大约每秒运行 1000 英尺,在这种速度下,几个毫秒就决定了飞机的生与死。
8.1.2 堆栈计算机是如何满足这些需要的
第4章和第5章所描述的堆栈计算机制造商都把实时控制应用作为它们技术的可能应用之一,是什么使得堆栈计算机适用于这个应用领域呢?
尺寸和重量
我们已经看到了,从处理器方面看,堆栈计算机非常简单。然而,决定整个系统尺寸和重量的并不仅仅是处理器自己有多少个门电路,更是整个系统的复杂度。一个处理器如果有大量的引脚就会占用宝贵的印刷电路板面积;如果需要 CACHE 控制器和大量的存储器器件就会占用更多的印刷电路板面积;如果由于巨大的软件环境而要求一个硬盘来做虚拟存储器管理那就更是无从说起了。做到尺寸和重量要求的核心是保持元件数量最小,堆栈计算机由于有很低的硬件复杂度和小的程序存储器要求,所以在这方面做得很好。由于堆栈计算机比其它计算机更简单,也就有更高的可靠性。
功耗和冷却
处理器的复杂度可以影响系统的功耗,处理器的功耗与晶体管的数目有关,特别是与处理器的引脚数目有关,依赖于特别工艺来得到速度的处理器就是一个“消耗功率的猪”。需要大量的高功耗、高速度存储器器件的处理器可能超过功耗的限制。
堆栈计算机趋向于低功耗,制造工艺可以对功耗有巨大的影响,使用新的 CMOS 工艺的器件器件其功耗与双极型和 NMOS 设计相比要小得多。当然,功耗直接影响冷却要求,因为计算机使用的所有功率最后都将以热的形式表现出来。对 CMOS 组件进行冷却能够降低元件的失效数,提高系统的可靠性。
操作环境
嵌入式处理器应用对操作环境的要求是极端苛刻的,特别是在汽车和军用设备中。处理系统必须面对震动、撞击和高低温,或许还有辐射。在远程安装应用中,系统必须能够在没有现场技术人员的支持下生存。通常避免操作环境所引起问题的规则是把元件的数量和引脚的数目减少到最小。堆栈计算机由于低的系统复杂度和高度的集成,在忍受恶劣操作环境方面做得很好。
成本
对于低端和中级性能来说,处理器自身的成本可能非常重要。因为芯片的成本与片上的晶体管数目和引脚数目相关,低复杂度的堆栈计算机在成本方面有天生的优势。
在高性能的系统中,处理器的成本淹没在多层印刷电路板、支持芯片、高速存储器芯片中。在这种情况下,低系统复杂度的堆栈计算机提供了附加的优点。
计算机性能
在实时嵌入式控制环境中,计算性能并不简单地是每秒指令的执行速率。尽管原始的计算性能非常重要,但其它的因素也可能导致系统崩溃,包括中断响应特性和上下文切换的开销。一个附加的期望特性是提供良好的子程序调用性能,子程序调用是减少程序存储器尺寸的有效方式,就算快速程序芯片的成本不作为这个系统追求的目标,可是小的空间和印刷电路板实际上也强制要求把程序塞进小的程序存储器中。前面讨论的堆栈计算机的特点显示了它们非常适合于这个领域。
8.2 16 位还是 32 位硬件
在为一个特别的应用选择堆栈处理器时,一个基本决策就是处理器的数据元素的尺寸:16 位还是 32 位。这其中需要考虑成本,尺寸和性能。
8.2.1 16 位硬件常常是最好的
16 位堆栈处理器的成本通常比 32 位处理器低。它们的内部数据通道比较窄,所以它们使用更少的晶体管,制造成本也低。它们与外部存储器的连接通道只有 16 位,所以它们与 32 位处理器相比只有一半的存储器总线。系统成本也很低,因为与 32 位处理器相比,最简单的 16 位配置只需要一半的存储器芯片。
16 位芯片也把合理数量的硅面积用于特殊功能,比如硬件乘法器、片上程序存储器和外设接口。现在的趋势是对于 16 位的堆栈处理器比如 RTX2000 用 SOC 方式实现,包括了 I/O 外设和程序存储器以便用于嵌入式系统。
在面对一个应用时,应该首先考虑 16 位的处理器,如果改用 32 位处理器,那就应该有清晰和明显的优点。
8.2.2 有时也需要 32 位系统
16 位的处理器能够很好地服务于大多数传统的实时控制应用,它们以最小的成本在一个小的系统中提供了高速处理。当然, 16 位处理器能够很好地适合传统应用的原因是在很长时间里,32 位处理器的能力没有被广泛应用。随着更多 32 位处理器能力的广泛应用,可以发现适合它们应用的新领域。
只是在下列情况下,才应该使用 32 位处理器代替 16 位处理器: 32 位整数计算、访问大量的存储器、浮点计算。
32 位整数计算很明显地适合 32 位处理器,主要用于图形应用或者处理大的数据结构;16 位处理器可以通过双精度来仿真 32 位计算,但是 32 位处理器更有效。
16 位处理器可以通过段寄存器来访问大于 64K 元素的存储器,但是如果经常访问大于 64K 的元素,这种技术就变得笨拙和缓慢;如果一个程序必须连续地改变段寄存器来访问数据结构(特别是单个数据元素大于 64K 的情况下),就会把大量的时间用于计算段值上。更坏的情况是,由于在计算数据记录位置时使用大于 16 位的宽度,地址的计算也必须是双精度的。一个 32 位的处理器提供了 32 位线性地址空间,它可以在 32 位数据通道上完成地址计算。
浮点计算也需要 32 位处理器来得到高的效率。16 位处理器在处理浮点数时需要花费大量的时间处理堆栈元素,而 32 位处理器自然地适应数据元素的尺寸。在许多情况下,比例化的整数计算比浮点数在某些计算机上对于提高速度更合适,这时 16 位处理器就足够了。然而,浮点数经常用来降低编程的成本,支持用高级语言编写的代码。这样伴随着极高速度的浮点处理硬件的到来,传统的整数操作相对于浮点操作速度方面的优点正在降低。
32 位处理器的缺点是成本和系统的复杂性。由于 32 位处理器芯片比 16 位的系统有更多的晶体管和引脚而成本更高。它们也要求 32 位的程序存储器和通常更大的印刷电路板面积,它们也没有更多的空间给硬件乘法器等外部设备,不过当工艺技术变得更细时,这些东西也就会出现了。
8.3 系统实现方法
一但在 16 位和 32 位系统之间作出了选择,接着就是选择制造商。本书所讨论的7个堆栈计算机都有不同的设计折衷,包括系统复杂度、灵活性以及性能方面,这些折衷反映了它们对不同应用的适应性,一个折衷就是使用硬连线还是微码控制。
8.3.1 硬连线还是微码控制
在所有的计算机领域中,使用硬连线还是使用微码来实现控制电路的争论由来已久,硬连线方法的优点是对于那些系统直接支持的指令执行得更快,缺点是这些计算机只支持简单的指令,必须执行多个指令才能综合一个复杂的操作。
微码机器比硬连线机器灵活,这是因为可以通过执行一个任意长的微码序列来实现非常复杂的指令。每个指令都可以视为对微码过程的一个子程序调用,在具有微码 RAM 的计算机上,指令集可以通过应用指定的指令来增强,这样可以对一个特殊的程序给出有效的速度提升。
硬连线堆栈计算机都支持某些复杂的堆栈操作,它们组合了堆栈处理、算术操作和子程序返回。这是通过处理指令中的不同字段来完成的。从这个意义上讲。硬连线指令格式更像是微码。事实上, NOVIX 把它的 NC4016 指令称为“外部微码”。
在使用微码的堆栈计算机上,简单的操作比如加法通常比在硬连线计算机上要长,复杂的操作码比如双精度算术操作在硬连线计算机上并不封装到一个单一的指令中。对于这些复杂的指令,微码计算机可以通过提供特殊的、复杂的操作码而运行得更快。通常这种灵活性的提高可以更多地弥补两种不同处理器的差异。最后的结论是,如果不评估所有的方法,则对于一个特定的应用来说,我们并不能说硬连线和微码计算机哪种方式更快。重要的一点是,在选择处理器之前,应该小心地评估应用的需求。
8.3.2 集成度和系统成本/性能
在讨论了硬连线和微码折衷之后,我们可能会记得在第4章中讨论 16 位堆栈处理器时给出了完整的集成度方面的考虑。集成度是放在处理器芯片上的系统硬件的数量,放在处理器上的系统功能越多,集成度就越高。当然,另一方面,我们还必须在设计中考虑成本/性能的折衷,使得为运行系统而使用的元件种类和数量最小。
WISC CPU/16 在给出的所有堆栈处理器中有最低的系统集成度,它使用了一打儿的元件在电路板上实现了处理器。当然,这种方法省去了生产一个单个芯片时的大量的布局投资。
MISC M17 是一个简单的单芯片处理器,由于它使用程序存储器作为堆栈,只需要程序存储器和处理器就可以工作,集成度可以算是高的,系统复杂度较低。这种简单性设计带来的限制是它的速度比分开的堆栈存储器要慢。
NOVIX NC4016 也是一个单芯片处理器,其集成度可以与 M17 相比。不奇怪,两种处理器都使用了门阵列工艺,所用的面积大致相当。主要的区别是 NC4016 使用了分离的存储器作为两个堆栈,分离的堆栈在给定的时钟速率下有更快的处理速度,因为有更多的存储器带宽可以使用,但是在成本方面需要有更多的系统级元件。
HARRIS RTX2000 通过片上堆栈存储器而比 NC4016 提高了系统集成度,这实际是在提供了速度效率的同时减少了系统的复杂度,因为片上存储器比片外存储器更快,代价是片上使用更多的晶体管。然而,这些增加的晶体管不一定就会大大增加芯片尺寸。因为 RTX2000 使用了称为标准单元的不同的技术,它很适合提供片上存储器。事实上, RTX2000 定制系统设计成在包含片上堆栈存储器的同时也包含片上程序存储器,提供一个单芯片的堆栈计算机系统。
未来的堆栈计算机设计在这些方面应该有所折衷:数据通道的宽度(对于大多数的处理是 16 位和 32 位宽度,对于信号处理应该是 24 位宽度,对于标记的数据结构应该是 36 位宽度),系统集成度,所需要的片外支持,原始的系统性能。在我们遇到每个目标应用时,这些问题都要考虑,然后才能决定选择一个合适的处理器。
8.4 应用领域举例
堆栈计算机能够应用的领域,就像通常的计算机一样,只受想象力的限制。看起来非常适合堆栈计算机应用的领域包括:
图像处理
目标识别、包括光电字符识别、指纹识别和手写体识别以及图像增强都需要特别强大的处理器,但是都有广泛的应用。许多商业应用所感兴趣的处理器是很小、成本低和便携的。
机器人控制
机器人有 5 到 6 个连接(自由度),典型的策略是为每个连接安排一个微控制器,再用一个更强大的微控制器作中央控制,每个连接可以实时地执行复杂的位置计算。在一个汽车中,小尺寸和低功耗是至关重要的。
数字滤波
滤波器要求很高的处理速度以保持高的数据流,堆栈计算机有片上空间用于实现硬件乘法器和算法指定的硬件以快速执行数字滤波计算。
过程控制
更加强大的处理器可以在简单的过程控制技术之外对实时过程监督和控制施以专家系统技术,堆栈计算机特别适合于基于规则的系统。
计算机图形
现在市场上有几个专用的图形加速器芯片,它们趋向于原始的画线和位块的移动,在这个领域中一个激动人心的机会是解释性的高级图形命令语言用于激光打印机和设备独立的屏幕显示。其中一个卓越的语言与 Forth 非常相似,那就是 Postscript 。
其它的计算机外设
堆栈计算机的低成本使得它适合于控制计算机外设,比如磁盘驱动器和通信链路。
电信
高速控制可以提供数据压缩能力,因此可以使传真和 MODEM 应用的成本更低。它们也可以监视收发设备的性能。
汽车控制
汽车市场对成本和环境有严格的限制,在这种业务中,每个元件成本的微小差异加起来就是巨大的利益或者损失,高级别的系统集成度是强制的要求,计算机可以提高系统的性能和安全性并同时减少应用中系统的成本。应用领域包括:计算机化的点火,刹车、燃料分配、反盗窃设备、碰撞告警系统和撞击显示系统。
消费类电子
消费类产品是一类对价格和系统集成度比汽车更敏感的东西,任何用过便宜的计算器或者是数字手表的人可能都会奇怪这种产品怎么能够仅仅通过塑料和一个单芯片就能做出来。高速、便携、成本低廉的堆栈处理器有这样的机会:音乐合成(比如 MIDI 设备)、CD、数字磁带设备、通过电话线的慢扫描电视、交互式电缆电视服务和视频游戏。
军事和太空控制应用
现代的太空应用已经可以有商业目的了,但它们与军用有着一样的可靠性和环境要求,堆栈处理器很好地适用于导弹和飞船的高速控制应用。此外,还有一些应用比如声音和电信号处理、图形增强、通信、点火控制和战场管理。
并行处理
原始的研究显示出堆栈计算机可以高效地执行函数程序设计语言,用这些语言写的程序有大量的与生俱来的并行性,它有待于多处理器堆栈计算机系统开发。
|