M.4 指令集的演变(附录 A、J、K)
每当有人用面向栈或面向寄存器的指令集来开发未来的体系结构时,人们都应该扬起眉毛,表示惊讶。
——Meyers[1978,第 20 页]
最早的计算机,包括 UNIVAC I、EDSAC 和 IAS 计算机,都采用基于累加器的结构。在硬件资源极其有限的条件下,这类计算机结构简单,自然成为首选。第一台采用通用寄存器的计算机,是 Ferranti 公司于 1956 年建造的 Pegasus。Pegasus 有 8 个通用寄存器,其中 R0 恒为零;通过块传送,将磁鼓存储器中的数据装入这 8 个寄存器。
栈体系结构
1963 年,Burroughs 交付了 B5000。它也许是第一台认真考虑软件以及软硬件权衡的计算机。Barton 和 Burroughs 的设计者为 B5000 采用了栈体系结构[Barton,1961]。这种体系结构旨在支持 ALGOL 等高级语言,其操作系统 MCP 也用高级语言编写。B5000 还是美国制造商推出的第一台支持虚拟内存的计算机。1968 年推出的 B6500[Hauck 和 Dent,1968]增加了由硬件管理的活动记录。B5000 和 B6500 都将栈顶两个元素保留在处理器中,其余部分存放在内存中。栈体系结构具有良好的代码密度,却只提供两个高速存储位置。IBM 360 原始论文[Amdahl、Blaauw 和 Brooks,1964]及 PDP-11 原始论文[Bell 等人,1970]的作者都反对栈结构,主要理由有三点:
- 性能来自快速寄存器本身,而不是寄存器的使用方式。
- 栈结构的限制太多,需要大量交换和复制操作。
- 栈总有底部;当这部分放在较慢的内存中时,就会损失性能。
基于栈的硬件在 20 世纪 70 年代末失去青睐;除 Intel 80x86 的浮点体系结构外,它基本上消失了。例如,SPEC 报告列出的计算机中,除了 80x86,没有一种采用栈结构。
不过,20 世纪 90 年代 Java 虚拟机(JVM)的成功,又给栈体系结构注入了活力。JVM 是一种软件解释器,用于解释 Java 编译器生成的中间语言——Java 字节码[Lindholm 和 Yellin,1999]。解释器的目的是实现跨多种平台的软件兼容性,期望做到“一次编写,到处运行”。尽管解释执行使速度降低到约十分之一,有时兼容性仍比性能更重要,例如将 Java applet 下载到 Internet 浏览器时。
虽然有人提出用硬件直接执行 JVM 指令,例如 McGhan 和 O’Connor[1998]的方案,但截至原文撰写时,这些方案都没有产生显著的商业影响。人们转而寄望于 Java 即时编译器(JIT):它在程序运行时,将代码编译为执行该 Java 程序的计算机的原生指令集,从而克服解释执行的性能损失。Java 的流行还催生了直接编译为硬件原生指令集的编译器,绕过 Java 字节码这一抽象层。
“计算机体系结构”的定义
IBM 在 20 世纪 60 年代初创造了 computer architecture(计算机体系结构)一词。Amdahl、Blaauw 和 Brooks[1964]用它指代 IBM 360 指令集中程序员可见的部分。他们认为,具有相同体系结构的计算机系列应该能够运行同一套软件。今天看来,这似乎理所当然,但在当时却是相当新颖的想法。IBM 虽然已是行业领先者,在 360 之前却有五种不同的体系结构;因此,让一家公司统一采用一种体系结构,是一种激进的主张。360 的设计者希望,通过定义共同的体系结构,将 IBM 六个不同部门凝聚起来。他们对体系结构的定义是:
……机器语言程序员为了给某台计算机编写正确的、与时序无关的程序,所必须理解的计算机结构。
“机器语言程序员”意味着兼容性要一直保持到机器语言层面;“与时序无关”则允许采用不同的实现。该体系结构开辟了二进制兼容的道路,后来者纷纷沿用。
IBM 360 是第一种同时采用以 8 位字节为单位的字节寻址和通用寄存器、并获得大规模销售的计算机。360 还具有寄存器—内存指令,以及有限的内存—内存指令。附录 K 概述了这套指令集。
1964 年,Control Data 交付了第一台超级计算机 CDC 6600。正如 Thornton[1964]所述,他、Cray 和其他 6600 设计者是最早深入探索流水线技术的一批人。6600 是第一台通用 load-store 计算机。20 世纪 60 年代,6600 的设计者就认识到,为了高效实现流水线,必须简化体系结构。20 世纪 70 年代,微处理器和小型机设计者大多忽视了体系结构简洁性与实现之间的这种相互影响;到 80 年代,这一思想又重新受到重视。
高级语言计算机体系结构
20 世纪 60 年代末至 70 年代初,人们认识到软件成本的增长快于硬件成本。McKeeman[1967]指出,编译器和操作系统日益庞大、复杂,开发周期也越来越长。由于编译器不够成熟,加上计算机内存有限,当时大多数系统程序仍然用汇编语言编写。许多研究者提出,通过更强大、面向软件的体系结构来缓解软件危机。Tanenbaum[1978]研究了高级语言的特性;与其他研究者一样,他发现大多数程序其实很简单。他认为,体系结构设计应以此为出发点,针对程序大小和编译难度进行优化。为实现这些目标,Tanenbaum 提出一种栈计算机,采用按使用频率编码的指令格式。不过,正如我们已经看到的,程序大小并不能直接换算成性价比;在这项工作之后不久,栈计算机就逐渐退出了主流。
Strecker[1978]讨论了他和 DEC 的其他设计者如何通过 VAX 体系结构回应这些问题。VAX 的设计目标是简化高级语言的编译。编译器作者曾抱怨 PDP-11 缺乏完全的正交性;VAX 因而被设计成高度正交的体系结构,使一条高级语言语句可以映射为一条 VAX 指令。此外,VAX 的设计者还力图优化代码大小,因为编译后的程序常常超出现有内存容量。附录 K 概述了这套指令集。
VAX-11/780 是 VAX 系列公布的第一台计算机,也是历史上最成功、研究最充分的计算机之一。DEC 战略的基石,是用单一体系结构 VAX 运行单一操作系统 VMS。这项战略在十多年间取得了良好效果。大量报告 VAX 指令混合、实现测量结果和分析的论文,使它成为理想的案例研究对象[Clark 和 Levy,1982;Wiecek,1982]。Bhandarkar 和 Clark[1991]量化分析了 VAX 相对 RISC 计算机的劣势,从技术上解释了 VAX 的衰落。
在 VAX 设计的同时,研究界正在倡导一种更激进的方法,称为高级语言计算机体系结构(High-Level Language Computer Architecture,HLLCA)。这场运动试图把硬件“提升”到编程语言的层次,从而消除高级语言与计算机硬件之间的差距,即 Gagliardi[1973]所说的“语义鸿沟”。Meyers[1982]很好地总结了相关论点和高级语言计算机体系结构项目的历史。HLLCA 从未产生显著的商业影响。计算机内存容量的增长消除了高级语言带来的代码大小问题,也使操作系统能够用高级语言编写。更简单的体系结构与软件结合,以更低的成本和复杂性,提供了更高性能和更强的灵活性。
精简指令集计算机
20 世纪 80 年代初,计算机体系结构的发展方向开始转变,不再倾向于为语言提供高级硬件支持。Ditzel 和 Patterson[1980]分析了高级语言体系结构遇到的困难,认为出路在于更简单的体系结构。在另一篇论文中[Patterson 和 Ditzel,1980],两位作者首次讨论了精简指令集计算机(Reduced Instruction Set Computer,RISC)的思想,并提出支持简单体系结构的论据。VAX 的设计者 Clark 和 Strecker[1980]反驳了这一主张。
MIPS 这样的简单 load-store 计算机,通常称为 RISC 体系结构。RISC 的根源可以追溯到 6600 一类计算机:Thornton、Cray 等人认识到,要建造高速计算机,指令集的简洁性十分重要。Cray 在 CRAY-1 中延续了保持计算机简单的传统。商用 RISC 主要建立在三个研究项目的工作之上:Berkeley RISC 处理器、IBM 801,以及 Stanford MIPS 处理器。它们声称,相对于采用相同技术的其他计算机,可以获得 2 至 5 倍的性能优势,因此吸引了产业界的极大兴趣。
IBM 项目始于 1975 年,最早启动,却最晚公开。IBM 的计算机被设计为采用 ECL 的 24 位小型机;两个大学项目则都采用 MOS 技术,设计 32 位微处理器。John Cocke 被认为是 801 设计之父,并因这些贡献获得 Eckert–Mauchly 奖和图灵奖。Radin[1982]介绍了 801 体系结构的主要特点。801 是一个实验项目,从未以产品为目标;实际上,为控制成本和复杂性,这台计算机只采用了 24 位寄存器。
1980 年,Patterson 和 Berkeley 的同事启动了一个项目,为这一体系结构方法赋予了名称[Patterson 和 Ditzel,1980]。他们建造了 RISC-I 和 RISC-II 两台计算机。由于 IBM 的项目当时并不广为人知,也缺少公开讨论,Berkeley 团队在推广 RISC 方法方面的作用,对这项技术获得认可至关重要。他们还建造了最早支持混合格式 RISC 的指令缓存之一[Patterson 等人,1983]:内存中可以存放 16 位或 32 位指令,而缓存中统一为 32 位。Berkeley 团队后来又建造了面向 Smalltalk 的 RISC 计算机[Ungar 等人,1984],以及面向 LISP 的 RISC 计算机[Taylor 等人,1986]。
1981 年,Hennessy 和 Stanford 的同事发表了 Stanford MIPS 计算机的说明。高效的流水线和编译器辅助的流水线调度,都是最初 MIPS 设计的重要方面。MIPS 是 Microprocessor without Interlocked Pipeline Stages 的缩写,即“没有互锁流水级的微处理器”;这一名称反映出,它不使用使流水线停顿的硬件,而由编译器处理依赖。
这些早期 RISC 计算机——801、RISC-II 和 MIPS——具有许多共同点。两个大学项目都希望设计一种简单计算机,能够在大学的条件下用 VLSI 实现。三台计算机都采用简单的 load-store 体系结构和固定格式的 32 位指令,并强调高效流水线。Patterson[1985]介绍了这三台计算机,以及后来成为 RISC 特征的基本设计原则。Hennessy[1984]从另一个角度讨论了同样的思想,并介绍了 VLSI 处理器设计中的其他问题。
1985 年,Hennessy 发表论文解释 RISC 的性能优势,将其根源归于大幅降低的 CPI:RISC 处理器的 CPI 小于 2,而 VAX-11/780 超过 10;不过,这些数据并非来自完全相同的工作负载。Emer 和 Clark[1984]描述 VAX-11/780 性能的论文,对帮助 RISC 研究者理解其机器性能优势的来源起到了重要作用。
大学项目在 1983—1984 年间结束后,这项技术被产业界广泛接纳。许多早期计算机,即 1986 年之前制造的计算机的厂商,都宣称自己的产品是 RISC。不过,这些说法往往更多出于营销愿望,而非工程事实。
1986 年,计算机产业开始发布基于这三个 RISC 研究项目所探索技术的处理器。Moussouris 等人[1986]介绍了 MIPS R2000 整数处理器,Kane[1986]的书则完整描述了这一体系结构。Hewlett-Packard 将原有的小型机产品线转向 RISC;Lee[1989]介绍了 HP Precision Architecture。IBM 从未将 801 直接转化为产品,而是将其中的思想用于一种新的低端体系结构,集成到 IBM RT-PC 中;Waters[1986]编辑的论文集介绍了这项工作。1990 年,IBM 发布新的 RISC 体系结构 RS 6000,这是第一种超标量 RISC 处理器。1987 年,Sun Microsystems 开始交付基于 SPARC 体系结构的计算机;SPARC 源于 Berkeley RISC-II 处理器,由 Garner 等人[1988]介绍。PowerPC 则汇合了 Apple、IBM 和 Motorola 三方的力量。附录 K 概述了几种 RISC 体系结构。
为帮助解决 RISC 与传统设计之间的争论,VAX 处理器设计者后来选择组织结构相近的实现,对 VAX 与 RISC 处理器进行了量化比较:VAX 8700 和 MIPS M2000。VAX 与 MIPS 的不同目标导致了截然不同的体系结构。VAX 追求简单的编译器和较高的代码密度,因而采用功能强大的寻址方式和指令、高效的指令编码,以及较少的寄存器。MIPS 则追求通过流水线获得高性能、易于硬件实现,并适合高度优化的编译器;这些目标使它采用简单指令、简单寻址方式、定长指令格式和大量寄存器。
图 M.1 给出了执行指令数之比、CPI 之比,以及按时钟周期衡量的性能之比。由于两种实现的组织结构相近,比较中假定时钟周期相同。MIPS 执行的指令约为 VAX 的两倍,但 VAX 的 CPI 约为 MIPS 的六倍。因此,MIPS M2000 的性能接近 VAX 8700 的三倍。而且,构建 MIPS 处理器所需的硬件远少于 VAX 处理器。正是这种性价比差距,使原先制造 VAX 的公司推出基于 MIPS 的产品,随后完全放弃 VAX,转向与 MIPS 相当相似的 Alpha。Bell 和 Strecker[1998]总结了公司内部的这场争论。曾经是世界第二大计算机公司、也是小型机行业最成功企业的 DEC,在原文撰写时只剩下并入 HP 和 Intel 的一些业务。

图中纵轴均为 MIPS/VAX;横轴为 SPEC89 各基准。Performance ratio 表示性能比值,Instructions executed ratio 表示执行指令数比值,CPI ratio 表示 CPI 比值。基准名称保留原文。
回头看,RISC/CISC 之争后只有一种复杂指令集计算机(CISC)指令集存活下来,它与 PC 软件保持二进制兼容。PC 行业的芯片出货量极大,提供了足够的收入来支付额外的设计成本;Moore 定律也提供了足够的资源,使微处理器能在内部将 CISC 转换为 RISC。为在芯片上容纳这种转换而增加的流水级长度和芯片面积,会造成效率损失,但巨大的销量以及为该产品专门配置集成电路生产线的能力,弥补了这些损失。
有趣的是,Intel 也曾认为 80x86 产品线的未来并不确定。它创建 IA-64 体系结构,以支持 64 位寻址,并转向 RISC 风格的指令集。IA-64[Huck 等人,2000]在 Itanium-1 和 Itanium-2 中的实现,成败参半。虽然它在浮点应用上取得了高性能,整数性能却一直不出色。此外,Itanium 的晶体管数量多、芯片面积大,功耗也高。IA-64 指令集的复杂性,至少在某些方面与 RISC 理念相冲突,无疑也是面积和功耗效率低下的原因。
AMD 则决定只把体系结构从 32 位地址扩展到 64 位,正如 Intel 当年在 80386 中将它从 16 位地址扩展到 32 位一样。Intel 后来也效仿 AMD。最终,80x86 已有市场地位形成的巨大优势,连这份遗产的拥有者 Intel 自己也无法克服!
参考文献
Alexander, W. G., and D. B. Wortman [1975]. “Static and dynamic characteristics of XPL programs,” IEEE Computer 8:11 (November), 41–46.
Amdahl, G. M., G. A. Blaauw, and F. P. Brooks, Jr. [1964]. “Architecture of the IBM System 360,” IBM J. Research and Development 8:2 (April), 87–101.
Barton, R. S. [1961]. “A new approach to the functional design of a computer,” Proc. Western Joint Computer Conf., May 9–11, 1961, Los Angeles, Calif., 393–396.
Bell, G., R. Cady, H. McFarland, B. DeLagi, J. O’Laughlin, R. Noonan, and W. Wulf [1970]. “A new architecture for mini-computers: The DEC PDP-11,” Proc. AFIPS SJCC, May 5–7, 1970, Atlantic City, N.J., 657–675.
Bell, G., and W. D. Strecker [1998]. “Computer structures: What have we learned from the PDP-11?” in G. S. Sohi, ed., 25 Years of the International Symposia on Computer Architecture (Selected Papers), ACM, New York, 138–151.
Bhandarkar, D. P. [1995]. Alpha Architecture and Implementations, Digital Press, Newton, Mass.
Bhandarkar, D., and D. W. Clark [1991]. “Performance from architecture: Comparing a RISC and a CISC with similar hardware organizations,” Proc. Fourth Int’l. Conf. on Architectural Support for Programming Languages and Operating Systems (ASPLOS), April 8–11, 1991, Palo Alto, Calif., 310–319.
Bier, J. [1997]. “The evolution of DSP processors,” paper presented at University of California, Berkeley, November 14.
Boddie, J. R. [2000]. “History of DSPs,” www.lucent.com/micro/dsp/dsphist.html.
Case, R. P., and A. Padegs [1978]. “The architecture of the IBM System/370,” Communications of the ACM 21:1, 73–96.
Chow, F. C. [1983]. “A Portable Machine-Independent Global Optimizer— Design and Measurements,” Ph.D. thesis, Stanford University, Palo Alto, Calif.
Clark, D., and H. Levy [1982]. “Measurement and analysis of instruction set use in the VAX-11/780,” Proc. Ninth Annual Int’l. Symposium on Computer Architecture (ISCA), April 26–29, 1982, Austin, Tex., 9–17.
Clark, D., and W. D. Strecker [1980]. “Comments on ‘the case for the reduced instruction set computer,’” Computer Architecture News 8:6 (October), 34–38.
Crawford, J., and P. Gelsinger [1988]. Programming the 80386, Sybex Books, Alameda, Calif.
Darcy, J. D., and D. Gay [1996]. “FLECKmarks: Measuring floating point performance using a full IEEE compliant arithmetic benchmark,” CS 252 class project, University of California, Berkeley (see http://www.sonic.net/~jddarcy/Research/fleckmrk.pdf).
Digital Semiconductor. [1996]. Alpha Architecture Handbook, Version 3, Digital Press, Maynard, Mass.
Ditzel, D. R., and D. A. Patterson [1980]. “Retrospective on high-level language computer architecture,” Proc. Seventh Annual Int’l. Symposium on Computer Architecture (ISCA), May 6–8, 1980, La Baule, France, 97–104.
Emer, J. S., and D. W. Clark [1984]. “A characterization of processor performance in the VAX-11/780,” Proc. 11th Annual Int’l. Symposium on Computer Architecture (ISCA), June 5–7, 1984, Ann Arbor, Mich., 301–310.
Furber, S. B. [2000]. ARM system-on-chip architecture. Addison-Wesley, Boston, Mass.
Gagliardi, U. O. [1973]. “Report of workshop 4—software-related advances in computer hardware,” Proc. Symposium on the High Cost of Software, September 17–19, 1973, Monterey, Calif., 99–120.
Game, M., and A. Booker [1999]. “CodePack code compression for PowerPC processors,” MicroNews, 5:1.
Garner, R., A. Agarwal, F. Briggs, E. Brown, D. Hough, B. Joy, S. Kleiman, S. Muchnick, M. Namjoo, D. Patterson, J. Pendleton, and R. Tuck [1988]. “Scalable processor architecture (SPARC),” Proc. IEEE COMPCON, February 29– March 4, 1988, San Francisco, 278–283.
Hauck, E. A., and B. A. Dent [1968]. “Burroughs’ B6500/B7500 stack mechanism,” Proc. AFIPS SJCC, April 30–May 2, 1968, Atlantic City, N.J., 245–251.
Hennessy, J. [1984]. “VLSI processor architecture,” IEEE Trans. on Computers C-33:11 (December), 1221–1246.
Hennessy, J. [1985]. “VLSI RISC processors,” VLSI Systems Design 6:10 (October), 22–32.
Hennessy, J., N. Jouppi, F. Baskett, and J. Gill [1981]. “MIPS: A VLSI processor architecture,” in CMU Conference on VLSI Systems and Computations, Computer Science Press, Rockville, Md.
Hewlett-Packard. [1994]. PA-RISC 2.0 Architecture Reference Manual, 3rd ed., Hewlett-Packard, Palo Alto, Calif.
Hitachi. [1997]. SuperH RISC Engine SH7700 Series Programming Manual, Hitachi, Santa Clara, Calif.
Huck, J. et al. [2000]. “Introducing the IA-64 Architecture” IEEE Micro, 20:5, (September–October), 12–23.
IBM. [1994]. The PowerPC Architecture, Morgan Kaufmann, San Francisco.
Intel. [2001]. “Using MMX instructions to convert R GB to YUV color conversion,” cedar.intel.com/cgi-bin/ids.dll/content/content.jsp?cntKey=Legacy::irtm_AP548_9996&cntType=IDS_EDITORIAL.
Kahan, J. [1990]. “On the advantage of the 8087’s stack,” unpublished course notes, Computer Science Division, University of California, Berkeley.
Kane, G. [1986]. MIPS R2000 RISC Architecture, Prentice Hall, Englewood Cliffs, N.J.
Kane, G. [1996]. PA-RISC 2.0 Architecture, Prentice Hall, Upper Saddle River, N.J.
Kane, G., and J. Heinrich [1992]. MIPS RISC Architecture, Prentice Hall, Englewood Cliffs, N.J.
Kissell, K. D. [1997]. “MIPS16: High-density for the embedded market,” Proc. Real Time Systems ’97, June 15, 1997, Las Vegas, Nev.
Kozyrakis, C. [2000]. “Vector IRAM: A media-oriented vector processor with embedded DRAM,” paper presented at Hot Chips 12, August 13–15, 2000, Palo Alto, Calif, 13–15.
Lee, R. [1989]. “Precision architecture,” Computer 22:1 (January), 78–91.
Levy, H., and R. Eckhouse [1989]. Computer Programming and Architecture: The VAX, Digital Press, Boston.
Lindholm, T., and F. Yellin [1999]. The Java Virtual Machine Specification, 2nd ed., Addison-Wesley, Reading, Mass.
Lunde, A. [1977]. “Empirical evaluation of some features of instruction set processor architecture,” Communications of the ACM 20:3 (March), 143–152.
Magenheimer, D. J., L. Peters, K. W. Pettis, and D. Zuras [1988]. “Integer multiplication and division on the HP precision architecture,” IEEE Trans. on Computers 37:8, 980–990.
McGhan, H., and M. O’Connor [1998]. “PicoJava: A direct execution engine for Java bytecode,” Computer 31:10 (October), 22–30.
McKeeman, W. M. [1967]. “Language directed computer design,” Proc. AFIPS Fall Joint Computer Conf., November 14–16, 1967, Washington, D.C., 413–417.
Meyers, G. J. [1978]. “The evaluation of expressions in a storage-to-storage architecture,” Computer Architecture News 7:3 (October), 20–23.
Meyers, G. J. [1982]. Advances in Computer Architecture, 2nd ed., Wiley, New York.
MIPS. [1997]. MIPS16 Application Specific Extension Product Description.
Mitsubishi. [1996]. Mitsubishi 32-Bit Single Chip Microcomputer M32R Family Software Manual, Mitsubishi, Cypress, Calif.
Morse, S., B. Ravenal, S. Mazor, and W. Pohlman [1980]. “Intel microprocessors—8080 to 8086,” Computer 13:10 (October).
Moussouris, J., L. Crudele, D. Freitas, C. Hansen, E. Hudson, S. Przybylski, T. Riordan, and C. Rowen [1986]. “A CMOS RISC processor with integrated system functions,” Proc. IEEE COMPCON, March 3–6, 1986, San Francisco, 191.
Muchnick, S. S. [1988]. “Optimizing compilers for SPARC,” Sun Technology 1:3 (Summer), 64–77.
Palmer, J., and S. Morse [1984]. The 8087 Primer, John Wiley & Sons, New York, 93.
Patterson, D. [1985]. “Reduced instruction set computers,” Communications of the ACM 28:1 (January), 8–21.
Patterson, D. A., and D. R. Ditzel [1980]. “The case for the reduced instruction set computer,” Computer Architecture News 8:6 (October), 25–33.
Patterson, D. A., P. Garrison, M. Hill, D. Lioupis, C. Nyberg, T. Sippel, and K. Van Dyke [1983]. “Architecture of a VLSI instruction cache for a RISC,” 10th Annual Int’l. Conf. on Computer Architecture Conf. Proc., June 13–16, 1983, Stockholm, Sweden, 108–116.
Radin, G. [1982]. “The 801 minicomputer,” Proc. Symposium Architectural Support for Programming Languages and Operating Systems (ASPLOS), March 1–3, 1982, Palo Alto, Calif., 39–47.
Riemens, A., K. A. Vissers, R. J. Schutten, F. W. Sijstermans, G. J. Hekstra, and G. D. La Hei [1999]. “Trimedia CPU64 application domain and benchmark suite,” Proc. IEEE Int’l. Conf. on Computer Design: VLSI in Computers and Processors (ICCD’99), October 10–13, 1999, Austin, Tex., 580–585.
Ropers, A., H. W. Lollman, and J. Wellhausen [1999]. DSPstone: Texas Instruments TMS320C54x, Tech. Rep. Nr. IB 315 1999/9-ISS-Version 0.9, Aachen University of Technology, Aaachen, Germany (www.ert.rwth-aachen.de/Projekte/Tools/coal/dspstone_c54x/index.html).
Shustek, L. J. [1978]. “Analysis and Performance of Computer Instruction Sets,” Ph.D. dissertation, Stanford University, Palo Alto, Calif.
Silicon Graphics. [1996]. MIPS V Instruction Set (see http://www.sgi.com/MIPS/arch/ISA5/#MIPSV_indx).
Sites, R. L., and R. Witek, eds. [1995]. Alpha Architecture Reference Manual, 2nd ed., Digital Press, Newton, Mass.
Strauss, W. [1998]. “DSP Strategies 2002,” www.usadata.com/market_research/spr_05/spr_r127-005.htm.
Strecker, W. D. [1978]. “VAX-11/780: A virtual address extension of the PDP-11 family,” Proc. AFIPS National Computer Conf., June 5–8, 1978, Anaheim, Calif., 47, 967–980.
Sun Microsystems. [1989]. The SPARC Architectural Manual, Version 8, Part No. 800-1399-09, Sun Microsystems, Santa Clara, Calif.
Tanenbaum, A. S. [1978]. “Implications of structured programming for machine architecture,” Communications of the ACM 21:3 (March), 237–246.
Taylor, G., P. Hilfinger, J. Larus, D. Patterson, and B. Zorn [1986]. “Evaluation of the SPUR LISP architecture,” Proc. 13th Annual Int’l. Symposium on Computer Architecture (ISCA), June 2–5, 1986, Tokyo.
Texas Instruments [2000]. “History of innovation: 1980s,” www.ti.com/corp/docs/company/history/1980s.shtml.
Thornton, J. E. [1964]. “Parallel operation in Control Data 6600,” Proc. AFIPS Fall Joint Computer Conf., Part II, October 27–29, 1964, San Francisco, 26, 33–40.
Ungar, D., R. Blau, P. Foley, D. Samples, and D. Patterson [1984]. “Architecture of SOAR: Smalltalk on a RISC,” Proc. 11th Annual Int’l. Symposium on Computer Architecture (ISCA), June 5–7, 1984, Ann Arbor, Mich., 188–197.
van Eijndhoven, J. T. J., F. W. Sijstermans, K. A. Vissers, E. J. D. Pol, M. I. A. Tromp, P. Struik, R. H. J. Bloks, P. van der Wolf, A. D. Pimentel, and H. P. E. Vranken [1999]. “Trimedia CPU64 architecture,” Proc. IEEE Int’l. Conf. on Computer Design: VLSI in Computers and Processors (ICCD’99), October 10–13, 1999, Austin, Tex., 586–592.
Wakerly, J. [1989]. Microcomputer Architecture and Programming, Wiley, New York.
Waters, F. (ed.) [1986]. IBM RT Personal Computer Technology, SA 23-1057, IBM, Austin, Tex.
Weaver, D. L., and T. Germond [1994]. The SPARC Architectural Manual, Version 9, Prentice Hall, Englewood Cliffs, N.J.
Weiss, S., and J. E. Smith [1994]. Power and PowerPC, Morgan Kaufmann, San Francisco.
Wiecek, C. [1982]. “A case study of the VAX 11 instruction set usage for compiler execution,” Proc. Symposium on Architectural Support for Programming Languages and Operating Systems (ASPLOS), March 1–3, 1982, Palo Alto, Calif., 177–184.
Wulf, W. [1981]. “Compilers and computer architecture,” Computer 14:7 (July), 41–47.