跳转到主要内容

M.7 多处理器与并行处理的历史(第 5 章及附录 F、G、I)

多处理器的历史内容极为丰富。本节同时按时期和体系结构组织讨论,先介绍 SIMD 方法和 Illiac IV,再简要讨论其他早期实验性多处理器,继而回顾并行处理领域的几场重大争论。随后追溯现有多处理器的历史根源,最后介绍较新的进展。

SIMD 计算机:诱人的想法,众多的尝试,却没有持久的成功

然而,通用多处理器的成本非常高,因此还考虑了其他设计选择,希望在不严重降低系统能力或效率的情况下减少成本。这些选择,就是将三个主要组成部分之一重新集中起来。……将[控制单元]集中,就形成了……Illiac IV 这样的阵列处理器的基本组织结构。

——Bouknight 等人[1972]

SIMD 是最早的并行计算模型之一,可以追溯到第一台大规模多处理器 Illiac IV。它与后来 SIMD 多处理器的核心思想相同:利用许多功能单元,让一条指令同时操作许多数据项。

SIMD 风格计算机的最早思想来自 Unger[1958]以及 Slotnick、Borck 和 McReynolds[1962]。Slotnick 的 Solomon 设计构成了 Illiac IV 的基础;后者也许是超级计算机项目中最声名狼藉的一个。它虽然成功推动了几项后来被证明有用的技术,但作为计算机却失败了。尽管只建成原计划多处理器的四分之一,成本仍从 1966 年估计的 800 万美元,上升到 1972 年的 3100 万美元。实际性能最高只有 15 MFLOPS,而最初预测完整系统可达到 1000 MFLOPS[Hord,1982]。机器于 1972 年交付 NASA Ames Research 后,又经过三年工程改进才可使用。这些事件减缓了 SIMD 的研究,但 Danny Hillis[1985]通过拥有 65,636 个 1 位处理器的 Connection Machine,使这种体系结构重获生机。

原文数字说明: 此段原书为 65,636;M.6 节及本节后文均为 65,536。此处保留原数,注明这一处不一致。

实际 SIMD 计算机需要混合使用 SISD 与 SIMD 指令。SISD 主机负责分支、地址计算等不需要并行执行的操作。SIMD 指令广播到所有执行单元,每个单元都有自己的寄存器组。为增加灵活性,执行 SIMD 指令时可以禁用个别执行单元。此外,大规模并行 SIMD 多处理器依靠互连或通信网络,在处理单元之间交换数据。

SIMD 最适合处理 for 循环中的数组。因此,要获得大规模 SIMD 并行的机会,就必须有大量数据,也就是数据并行性。SIMD 最不擅长处理 case 语句:每个执行单元可能需要根据自身数据的不同,对数据执行不同操作。数据不符合当前分支条件的执行单元会被禁用,只有符合条件的单元继续执行。这种情况下,性能实际上降到原来的 1/n1/n,其中 nn 是分支情况数。

SIMD 多处理器的基本权衡,是单个处理器性能与处理器数量之间的权衡。后来出现的多处理器更重视大规模并行,而非单个处理器的性能。例如,Connection Multiprocessor 2 提供 65,536 个 1 位宽处理器,而 Illiac IV 有 64 个 64 位处理器。

20 世纪 80 年代,Thinking Machines 和后来的 MasPar 先后使 SIMD 模型复兴;但它作为通用多处理器体系结构,又一次沉寂下去,主要有两个原因。第一,它缺乏灵活性。许多重要问题无法利用这种多处理器,而且体系结构缩小规模后缺乏竞争力,即小规模 SIMD 多处理器的性价比往往不如其他方案。第二,SIMD 无法利用微处理器技术在性能和成本上的巨大优势。SIMD 多处理器的设计者必须制造定制处理器,而不能直接利用这种低成本技术。

虽然 SIMD 计算机已退出通用计算方案的竞争,这种体系结构仍将在专用设计中发挥作用。许多专用任务具有很强的数据并行性,只需要有限种类的功能单元。因此,设计者可以为某些操作提供专门支持,并在功能单元之间设置硬连线的互连通路。这种组织方式通常称为阵列处理器,适用于图像处理和信号处理等任务。

其他早期实验

很难确定哪一台是最早的 MIMD 多处理器。例如,令人意外的是,Eckert-Mauchly Corporation 的第一台计算机就采用重复单元来提高可用性。Holland[1959]很早就提出了使用多个处理器的论据。记录最充分的两个多处理器项目,在 20 世纪 70 年代由 Carnegie Mellon University 开展。第一个是 C.mmp[Wulf 和 Bell,1972;Wulf 和 Harbison,1978],由 16 台 PDP-11 通过交叉开关连接到 16 个存储单元。它是最早超出少数几个处理器规模的多处理器之一,采用共享内存编程模型。C.mmp 项目的研究重点大多在软件,尤其是操作系统方面。后来的 Cm*[Swan 等人,1977]是一种基于集群的多处理器,采用分布式内存和非均匀访问时间。由于没有缓存,远程访问延迟又长,数据放置至关重要。Gehringer、Siewiorek 和 Segall[1987]充分描述了这台多处理器及其应用实验。20 世纪 80 年代,微处理器大幅降低了建造多处理器的成本,这些机器中的许多思想因此被重新采用。

并行处理中的重大争论

20 世纪 60 年代中期,提高计算机运算速度的努力开始受到收益递减规律的影响,于是人们开始偏离传统组织结构。……电子电路的工作速度最终受到光速的限制……而许多电路已经工作在纳秒量级。

——Bouknight 等人[1972]

……顺序计算机的潜在计算能力,正在接近一个根本性的物理极限。这个极限就是光速……

——Angel L. DeCegama,The Technology of Parallel Processing,第 I 卷,1989 年

……今天的多处理器……随着技术逼近光速而接近困境。即使顺序处理器的各个部件能以这样的速度工作,最多也只能期待每秒几百万条指令。

——David Mitchell,The Transputer: The Time Is Now,1989 年

以上引文给出了主张放弃现有计算方式的经典论据,而 Amdahl[1967]则给出了继续专注于 IBM 360 体系结构的经典回应。关于并行执行优势的论证,甚至可以追溯到 19 世纪[Menabrea,1842]!然而,多处理器究竟能多大程度地缩短单个重要程序的执行延迟,仍在探索之中。除并行性优势与限制的争论外,人们还围绕如何建造多处理器展开了数场激烈讨论。

未来很难预测,但 Gordon Bell 于 1989 年对 1995 年作出了两项预测。我们将它们收入本书第一版时,结果还完全不明朗。下面讨论这些预测,并评估其准确性。

第一项预测是:到 1995 年,将建成能持续达到 1 TFLOPS,即一百万 MFLOPS 的计算机;它可能是具有 4K 至 32K 个节点的多计算机系统,也可能是具有数百万处理单元的 Connection Multiprocessor[Bell,1989]。为理解这一预测,不妨考察每年表彰并行计算进展的 Gordon Bell 奖,其中包括运行最快、MFLOPS 最高的实际程序。1989 年的获奖者在八处理器 Cray Y-MP 上达到 1680 MFLOPS。根据这些数字,要使最快程序在 1995 年达到 1 TFLOPS,多处理器和程序性能每年必须达到上年的 3.6 倍。直到 1999 年,Gordon Bell 奖获奖者才首次越过 1 TFLOPS 门槛:他们使用为 Livermore Laboratories 专门设计、具有 5832 个处理器的 IBM RS/6000 SST 系统,在冲击波仿真中达到 1.18 TFLOPS。这相当于性能每年达到上年的 1.93 倍,仍然十分惊人。

自 20 世纪 90 年代以来,人们认识到:即使技术上能够制造 TFLOPS 多处理器,也不能确定这种机器是否具有成本效益;例外也许只有少数高度专用、对国家安全至关重要的应用。1990 年,我们估计达到 1 TFLOPS 需要约 5000 个处理器,成本约为 1 亿美元。Livermore 的 5832 处理器 IBM 系统实际耗资 1.1 亿美元。可以预料,单个微处理器在成本与性能上的改进,会直接影响大规模多处理器的成本和性能;但一个 5000 处理器系统的成本,会高于采用相同处理器的桌面系统价格的 5000 倍。此后,人们建造了快得多的多处理器,但在原文所述的最近五年间,主要改进越来越多地来自处理器,而非并行体系结构的根本突破。

Bell 的第二项预测,涉及 1995 年交付的超级计算机中的数据流数量。Danny Hillis 认为,虽然数据流较少的超级计算机可能销量最好,最大的多处理器却会具有许多数据流,并承担大部分计算。Bell 与 Hillis 打赌:在 1995 年第四季度交付的多处理器中,采用少量数据流(不超过 100 条)的系统,其持续 MFLOPS 总量将高于采用大量数据流(至少 1000 条)的系统。赌约只涉及超级计算机,即价格超过 100 万美元、用于科学应用的多处理器。赌约将持续 MFLOPS 定义为每月执行的浮点操作数,因此机器的可用性也影响评分。

1989 年打赌时,谁会赢完全不清楚。1995 年对当时公开已知超级计算机的调查表明,全世界只有六台多处理器拥有超过 1000 条数据流,因此 Bell 明确获胜。事实上,1995 年规模小得多、采用微处理器的多处理器——不超过 20 个处理器——正在成为主流。基于 Linpack 评分的 TOP500 调查列出在用的 500 台最高性能多处理器;1995 年的结果显示,其中数量最多的竟是基于总线的共享内存多处理器!到 2005 年,各种集群或多计算机系统占据了重要位置。例如,排名前 25 的系统中,11 台为定制集群,如 IBM Blue Gene 和 Cray XT3;10 台由共享内存多处理器组成,其中既有分布式内存,也有集中式内存;其余四台是用 PC 和现成互连组成的集群。

较新的进展与发展

除了并行向量多处理器,见附录 G,以及后来 IBM Blue Gene 的设计之外,其他较新的 MIMD 计算机都使用现成微处理器构建,采用总线加逻辑集中式内存,或者互连网络加分布式内存。20 世纪 80 年代建造的一批实验性多处理器,进一步完善和扩展了构成许多现有多处理器基础的概念。

基于总线、支持缓存一致性的多处理器的发展

虽然 20 世纪 60 年代和 70 年代已经建造采用多个处理器的大型主机,多处理器直到 80 年代才取得广泛成功。Bell[1985]认为,关键在于微处理器体积较小,使内存总线能够替代互连网络硬件;同时,可移植操作系统意味着多处理器项目不再需要重新发明操作系统。Bell 在论文中定义了 multiprocessor(多处理器)和 multicomputer(多计算机系统),为构建更大规模多处理器的两条路线奠定了基础。

第一种采用监听缓存的总线式多处理器,是 Frank[1984]介绍的 Synapse N+1。Goodman[1983]发表了最早描述监听缓存的论文之一。20 世纪 80 年代末,许多商用总线式监听缓存体系结构相继出现,包括 Silicon Graphics 4D/240[Baskett、Jermoluk 和 Solomon,1988]、Encore Multimax[Wilson,1987]和 Sequent Symmetry[Lovett 和 Thakkar,1988]。80 年代中期,各种一致性协议蓬勃发展。Archibald 和 Baer[1986]提供了很好的综述与分析,以及原始论文的参考资料。图 M.2 汇总了几种监听式缓存一致性协议,并列出使用过或正在使用这些协议的多处理器。

20 世纪 90 年代初,此类系统开始通过极宽的高速总线扩大规模。例如,SGI Challenge 使用 256 位、面向分组的总线,最多支持八块处理器板、32 个处理器。随后又出现多总线和交叉开关互连,例如 Sun SPARCCenter 和 Enterprise;Charlesworth[1998]讨论了这些系统的互连体系结构。2001 年,Sun Enterprise 服务器是在用大规模对称多处理器,即超过 16 个处理器的系统的主要代表。在原文撰写时,大多数总线式机器只提供四个左右处理器;八个及以上处理器通常采用交换网络或其他设计。

名称协议类型内存写策略特有性质采用该协议的多处理器
Write Once写失效首次写入之后采用写回文献中最早描述的监听协议原表未列出
Synapse N+1写失效写回显式表示“内存为所有者”的状态Synapse 多处理器;最早可购得的缓存一致性多处理器
Berkeley(MOESI)写失效写回带所有权的共享状态Berkeley SPUR;Sun Enterprise 服务器
Illinois(MESI)写失效写回干净的私有状态;任何持有干净副本的缓存都能提供数据SGI Power 和 Challenge 系列
“Firefly”写广播私有时写回,共享时直写广播时更新内存当时没有在用的多处理器;SPARCCenter 2000 最接近
图 M.2 五种监听协议概览。 Archibald 和 Baer[1986]用这些名称描述五种协议,Eggers[1989]按图中所示方式总结了异同。Firefly 协议以最早采用它的 DEC 实验性 Firefly 多处理器命名。协议的另一组名称来自其支持的状态:M = Modified,已修改;E = Exclusive,独占,即私有且干净;S = Shared,共享;I = Invalid,无效;O = Owner,所有者,即共享且脏。

迈向大规模多处理器

构建大规模多处理器的努力,探索了两条不同路线:消息传递多计算机系统,以及可扩展共享内存多处理器。虽然此前已有许多采用网格和超立方体连接的尝试,Caltech 的 Cosmic Cube[Seitz,1985]却是最早成功将各个环节整合起来的多处理器之一。它在路由和互连技术上引入重要进展,大幅降低互连成本,有助于使多计算机系统成为可行方案。Intel iPSC 860 是由 i860 构成的超立方体系统,以这些思想为基础。后来的系统,例如 Intel Paragon,采用维数更低、单条链路能力更强的网络。Paragon 还在每个节点配备独立的 i860 作为通信控制器,不过一些用户发现,让两个 i860 同时承担计算和通信更好。Thinking Multiprocessors CM-5 使用现成微处理器和胖树互连,见附录 F;它允许用户级直接访问通信通道,显著降低了通信延迟。1995 年,这两种多处理器代表了消息传递多计算机系统的最高水平。

可扩展共享内存多处理器的早期尝试,包括 IBM RP3[Pfister 等人,1985]、NYU Ultracomputer[Elder 等人,1985;Schwartz,1980]、Illinois 大学的 Cedar 项目[Gajksi 等人,1983],以及 BBN Butterfly 和 Monarch[BBN Laboratories,1986;Rettberg 等人,1990]。这些系统都采用非均匀分布式内存模型的某种变体,因而属于分布式共享内存(DSM)多处理器,但不支持缓存一致性,使编程复杂得多。RP3 和 Ultracomputer 既探索了新的同步机制 fetch-and-operate,也研究了在网络中合并访问的想法。在上述四类多处理器中,互连网络的成本都高于处理节点,给小规模版本带来困难。Cray T3D/E 在这些思想上继续发展:它采用不提供缓存一致性的共享地址空间,同时利用多计算机领域发展出的互连技术。T3D 的评估见 Arpaci 等人[1995],T3E 的增强设计见 Scott[1996],互连技术见 Scott 和 Thorson[1996]。

通过结合多种思想,人们为共享内存模型增加了可扩展的缓存一致性。基于目录的缓存一致性技术,实际上早于监听缓存技术。最早的缓存一致性协议就采用目录,Tang[1976]对此作了介绍,IBM 3081 中也进行了实现。Censier 和 Feautrier[1978]描述了一种将标记保存在内存中的目录一致性方案。把目录与内存一起分布,以实现可扩展缓存一致性的思想,由 Agarwal 等人[1988]首次描述,并成为 Stanford DASH 多处理器的基础[Lenoski 等人,1990、1992]。DASH 是第一台能够运行的缓存一致性 DSM 多处理器。它是采用“胖节点”的 cc-NUMA 机器,每个节点是四处理器 SMP;节点互连方式类似 Wildfire,但采用更可扩展的二维网格,而不是交叉开关。

Kendall Square Research KSR-1[Burkhardt 等人,1992]是可扩展一致性共享内存的第一个商用实现。它扩展基本 DSM 方法,实现了仅缓存存储器体系结构(cache-only memory architecture,COMA),使主存也成为缓存。KSR-1 的内存块可以复制到各节点的主存中,并由硬件处理这些复制块带来的额外一致性要求。严格来说,KSR-1 并非纯粹的 COMA,因为它不迁移数据项的归属位置,而总在归属节点保留一个副本,本质上只实现了复制。研究界还提出了许多 COMA 风格的体系结构[Falsafi 和 Wood,1997;Hagersten、Landin 和 Haridi,1992;Saulsbury 等人,1995;Stenström、Joe 和 Gupta,1992],以及通过迁移减轻非均匀内存访问负担的相近方法[Chandra 等人,1994;Soundararajan 等人,1998],但没有出现后续商用实现。

Convex Exemplar 用两级体系结构实现可扩展一致性共享内存:最低层用交叉开关构建八处理器模块,再通过环形网络连接最多 32 个模块,总共 256 个处理器;评估见 Thekkath 等人[1997]。Laudon 和Lenoski[1997]介绍了 SGI Origin。它于 1996 年首次交付,主要基于最初的 Stanford DASH,但在可扩展性和易编程性方面加入了多项创新。Origin 的目录使用 16 位或 32 位位向量,每个位代表一个含两个处理器的节点。采用粗粒度位向量表示时,每个位最多代表八个节点,从而支持总共 1024 个处理器。Galles[1996]介绍了其高性能胖超立方体全局互连。Hristea、Lenoski 和 Keen[1997]全面评估了 Origin 存储系统的性能。

还有一些研究原型探索了支持或不支持多线程的可扩展一致性,包括 MIT Alewife[Agarwal 等人,1995]和 Stanford FLASH[Gibson 等人,2000;Kuskin 等人,1994]。

集群

集群很可能由 20 世纪 60 年代的用户“发明”:他们或是无法将全部工作放进一台计算机,或是需要一台备用机器,以应对主机故障[Pfister,1998]。Tandem 于 1975 年推出 16 节点集群;Digital 随后在 1984 年推出 VAX 集群。最初,它们是共享 I/O 设备的独立计算机,需要分布式操作系统协调活动。很快,计算机之间加入了通信链路;其中一个目的是允许机器分布在不同地点,以在某一站点遭遇灾难时提高可用性。用户登录集群,并不知道自己实际运行在哪台机器上。到 1993 年,DEC——后来成为 HP 的一部分——已售出超过 25,000 套集群。其他早期厂商包括 Tandem,后来同样并入 HP,以及 IBM,仍然是 IBM。原文撰写时,几乎每家公司都有集群产品。多数产品主要面向可用性,性能扩展是次要收益。

集群上的科学计算后来成为大规模并行处理器(MPP)的竞争者。Beowulf 项目于 1993 年启动,目标是满足 NASA 的需求:用不到 50,000 美元,获得一台 1 GFLOPS 计算机。1994 年,用采用 80486 的现成 PC 构建的 16 节点集群达成了这一目标[Bell 和 Gray,2001]。对这种用途的重视,催生了多种软件接口,以便提交、协调和调试大型程序,或者大量独立程序。

一些研究项目努力降低集群通信延迟,同时提高带宽。低延迟研究的一项商业成果是 VI 接口标准,后来被下文提到的 InfiniBand 采用。低延迟又被证明有助于其他应用。例如,1997 年,University of California, Berkeley 的 100 台 UltraSPARC 桌面机,通过每条链路 160 MB/s 的 Myrinet 交换机连接,创下数据库排序和破解加密消息的世界纪录:一分钟内,将原本位于磁盘上的 8.6 GB 数据排序;3.5 小时内,破解一个 40 位 DES 密钥。

这个名为 Network of Workstations 的研究项目[Anderson、Culler 和 Patterson,1995]还开发了 Inktomi 搜索引擎,并促成同名创业公司的成立。Google 效仿 Inktomi,使用桌面机集群构建搜索引擎,而非大型 SMP;后者是当时领先的 Alta Vista 搜索引擎的策略,Google 后来超过了它[Brin 和 Page,1998]。到 2011 年,几乎所有 Internet 服务都依靠集群服务数百万客户。

集群也很受科学家欢迎。一个原因是成本低,个人科学家或小团队就能拥有专用于自身程序的集群。与在超级计算中心共享 MPP 上排队相比,这种集群往往能更快得到结果;共享系统的作业队列可能长达数周。希望深入了解的读者,可以阅读 Pfister[1998]那本生动有趣的集群著作。

大规模多处理器的较新趋势

20 世纪 90 年代中后期,人们逐渐看清:超大规模并行计算市场很可能不会出现所期待的增长。缺少这种市场增长,高端并行计算市场就越来越难承担为小众市场专门设计的高度定制硬件和软件成本。这一认识引出的最重要趋势,或许就是通过集群达到最高性能。大规模多处理器大体上形成了四类:

  • 利用 Myrinet 或 InfiniBand 等互连技术,将标准桌面主板集成为集群。
  • 用标准微处理器组成处理单元,再以定制互连连接的多计算机系统。例如 Cray XT3,采用较早版本的 Cray 互连和简单集群结构;以及稍后将详细介绍的 IBM Blue Gene。
  • 由小规模共享内存计算机组成的集群,可能还支持向量处理。Earth Simulator 属于这一类,它还拥有可在线阅读的专门期刊。
  • 大规模共享内存多处理器,例如 Cray X1[Dunigan 等人,2005],以及 SGI Origin 和 Altix。SGI 系统也被组成集群,使处理器数量超过 512 个,不过不同系统之间仅支持消息传递。

其中最引人注目的是 IBM Blue Gene,因为其设计依据,与单处理器体系结构转向多核的根本原因相似。Blue Gene 起初是 IBM 内部面向蛋白质测序和折叠问题的研究项目。设计者观察到,大规模多处理器越来越受功耗问题制约,而嵌入式处理器的每瓦性能远好于高端单处理器。如果通向高性能的道路是并行性,为什么不从效率最高的基本构件出发,再增加构件数量呢?

因此,Blue Gene 采用定制芯片,其中集成嵌入式 PowerPC 微处理器:性能约为高端 PowerPC 的一半,面积和功耗却只占很小一部分。这使包括全局互连在内的更多系统功能能够集成到同一芯片上。结果是一种高效、易于大量复制的基本构件,让 Blue Gene 更高效地扩展到大得多的处理器数量。Blue Gene 的基本构件不是独立微处理器,也不是标准桌面主板,而是处理器核。这种方法无疑能提供更高效率,但市场能否承担定制设计和专用软件的成本,仍是开放问题。

原文写道:2006 年,Lawrence Livermore 一台具有 32K 个处理器、并计划于 2005 年末扩展到 65K 个处理器的 Blue Gene,其 Linpack 性能是排名第三系统的 2.6 倍;后者由 20 台各含 512 个处理器的 SGI Altix,通过 InfiniBand 互连成集群。

原文年代说明: 上段同时写有“2006 年”和“计划于 2005 年末”,存在时间表述不一致;译文保留原文的年代和数量。

Blue Gene 的前身是实验机器 QCDOD。它率先使用低功耗嵌入式微处理器,并将互连紧密集成,以降低节点成本和功耗。

同步与存储一致性模型的发展

人们为共享内存多处理器提出了多种同步原语。Mellor-Crummey 和 Scott[1991]概述了相关问题,并给出了锁、屏障等重要原语的高效实现。其详尽的参考文献还涵盖自旋锁、队列锁、屏障等领域的其他重要贡献。Lamport[1979]引入了顺序一致性概念,并定义并行程序正确执行的含义。Dubois、Scheurich 和 Briggs[1988]介绍了弱序思想,它最早于 1986 年提出。1990 年,Adve 和 Hill 对弱序给出了更完善的定义,并定义了无数据竞争的概念;在同一次会议上,Gharachorloo 及其同事[1990]引入释放一致性,并首次提供了放宽一致性模型的性能数据。较宽松的一致性模型被微处理器体系结构广泛采用,包括 Sun SPARC、Alpha 和 IA-64。Adve 和 Gharachorloo[1996]提供了一篇出色的教程,介绍存储一致性及不同模型之间的差异。

其他参考资料

Kai Li 于 1988 年在 Ivy 系统中,率先使用虚拟内存为不同机器实现共享地址空间。后续论文继续探索其硬件支持、软件机制和编程问题。Amza 等人[1996]介绍了一种建立在工作站上、使用新一致性模型的系统;Kontothanassis 等人[1997]介绍了采用远程写的软件共享内存方案;Erlichson 等人[1996]则介绍了利用共享虚拟内存,以 SMP 为节点构建大规模多处理器的方法。

有关多处理器和多计算机系统的资料几乎无穷无尽:会议、期刊论文,甚至书籍的出现速度,似乎都超过了任何一个人吸收思想的速度。毫无疑问,许多论文会无人注意,正如过去一样。大多数主要体系结构会议都会发表多处理器论文。每年举办的 Supercomputing XY 会议,XY 为年份的最后两位,汇集用户、体系结构设计者、软件开发者和厂商;其论文集以图书、CD-ROM 和在线形式出版,网址为 www.scXY.org。两种主要期刊 Journal of Parallel and Distributed Computing 和 IEEE Transactions on Parallel and Distributed Systems,刊载并行处理各方面的论文。下面的文献还列出多本专门讨论并行处理的书,其中 Culler、Singh 和 Gupta[1999]是原文所述时期最新的一项大型著作。NASA Ames Research Center 的 Eugene Miya 多年来一直收集并行处理论文的在线书目;原文撰写时已有 35,000 多条,可在 liinwww.ira.uka.de/bibliography/Parallel/Eugene/index.html 查阅。

这些文献不仅记录了如今已投入实践的概念如何被发现,也描述了许多经过探索却被发现有不足的思想,以及一些只是时机尚未成熟的思想。随着高性能计算机体系结构的未来转向多核与多处理器,我们预计,今后会有许多新方法得到探索。其中少数方法将成功解决硬件和软件问题;而在过去 40 年中,这些问题始终是利用多处理技术的关键!

参考文献

  1. Adve, S. V., and K. Gharachorloo [1996]. “Shared memory consistency models: A tutorial,” IEEE Computer 29:12 (December), 66–76.

  2. Adve, S. V., and M. D. Hill [1990]. “Weak ordering—a new definition,” Proc. 17th Annual Int’l. Symposium on Computer Architecture (ISCA), May 28–31, 1990, Seattle, Wash., 2–14.

  3. Agarwal, A., R. Bianchini, D. Chaiken, K. Johnson, and D. Kranz [1995]. “The MIT Alewife machine: Architecture and performance,” 22nd Annual Int’l. Symposium on Computer Architecture (ISCA), June 22–24, 1995, Santa Margherita, Italy, 2–13.

  4. Agarwal, A., J. L. Hennessy, R. Simoni, and M. A. Horowitz [1988]. “An evaluation of directory schemes for cache coherence,” Proc. 15th Annual Int’l. Symposium on Computer Architecture, May 30–June 2, 1988, Honolulu, Hawaii, 280–289.

  1. Agarwal, A., J. Kubiatowicz, D. Kranz, B.-H. Lim, D. Yeung, G. D’Souza, and M. Parkin [1993]. “Sparcle: An evolutionary processor design for large-scale multiprocessors,” IEEE Micro 13 (June), 48–61.

  2. Alles, A. [1995]. “ATM Internetworking,” White Paper (May), Cisco Systems, Inc., San Jose, Calif. (www.cisco.com/warp/public/614/12.html).

  3. Almasi, G. S., and A. Gottlieb [1989]. Highly Parallel Computing, Benjamin/ Cummings, Redwood City, Calif.

  4. Alverson, G., R. Alverson, D. Callahan, B. Koblenz, A. Porterfield, and B. Smith [1992]. “Exploiting heterogeneous parallelism on a multithreaded multiprocessor,” Proc. ACM/IEEE Conf. on Supercomputing, November 16–20, 1992, Minneapolis, Minn., 188–197.

  5. Amdahl, G. M. [1967]. “Validity of the single processor approach to achieving large scale computing capabilities,” Proc. AFIPS Spring Joint Computer Conf., April 18–20, 1967, Atlantic City, N.J., 483–485.

  6. Amza C., A. L. Cox, S. Dwarkadas, P. Keleher, H. Lu, R. Rajamony, W. Yu, and W. Zwaenepoel [1996]. “Treadmarks: Shared memory computing on networks of workstations,” IEEE Computer 29:2 (February), 18–28.

  7. Anderson, T. E., D. E. Culler, and D. Patterson [1995]. “A case for NOW (networks of workstations),” IEEE Micro 15:1 (February), 54–64.

  8. Ang, B., D. Chiou, D. Rosenband, M. Ehrlich, L. Rudolph, and Arvind [1998]. “StarT-Voyager: A flexible platform for exploring scalable SMP issues,” Proc. ACM/IEEE Conf. on Supercomputing, November 7–13, 1998, Orlando, FL.

  9. Archibald, J., and J.-L. Baer [1986]. “Cache coherence protocols: Evaluation using a multiprocessor simulation model,” ACM Trans. on Computer Systems 4:4 (November), 273–298.

  10. Arpaci, R. H., D. E. Culler, A. Krishnamurthy, S. G. Steinberg, and K. Yelick [1995]. “Empirical evaluation of the CRAY-T3D: A compiler perspective,” Proc. 22nd Annual Int’l. Symposium on Computer Architecture (ISCA), June 22–24, 1995, Santa Margherita, Italy.

  11. Baer, J.-L., and W.-H. Wang [1988]. “On the inclusion properties for multi-level cache hierarchies,” Proc. 15th Annual Int’l. Symposium on Computer Architecture, May 30–June 2, 1988, Honolulu, Hawaii, 73–80.

  12. Balakrishnan, H. V., N. Padmanabhan, S. Seshan, and R. H. Katz [1997]. “A comparison of mechanisms for improving TCP performance over wireless links,” IEEE/ACM Trans. on Networking 5:6 (December), 756–769.

  13. Barroso, L. A., K. Gharachorloo, and E. Bugnion [1998]. “Memory system characterization of commercial workloads,” Proc. 25th Annual Int’l. Symposium on Computer Architecture (ISCA), July 3–14, 1998, Barcelona, Spain, 3–14.

  14. Baskett, F., T. Jermoluk, and D. Solomon [1988]. “The 4D-MP graphics superworkstation: Computing + graphics = 40 MIPS + 40 MFLOPS and 10,000 lighted polygons per second,” Proc. IEEE COMPCON, February 29–March 4, 1988, San Francisco, 468–471.

  15. BBN Laboratories. [1986]. Butterfly Parallel Processor Overview, Tech. Rep. 6148, BBN Laboratories, Cambridge, Mass.

  1. Bell, C. G. [1985]. “Multis: A new class of multiprocessor computers,” Science 228 (April 26), 462–467.

  2. Bell, C. G. [1989]. “The future of high performance computers in science and engineering,” Communications of the ACM 32:9 (September), 1091–1101.

  3. Bell, C. G., and J. Gray [2001]. Crays, Clusters and Centers, Tech. Rep. MSR-TR-2001-76, Microsoft Research, Redmond, Wash.

  4. Bell, C. G., and J. Gray [2002]. “What’s next in high performance computing,” CACM, 45:2 (February), 91–95.

  5. Bouknight, W. J., S. A. Deneberg, D. E. McIntyre, J. M. Randall, A. H. Sameh, and D. L. Slotnick [1972]. “The Illiac IV system,” Proc. IEEE 60:4, 369–379. Also appears in D. P. Siewiorek, C. G. Bell, and A. Newell, Computer Structures: Principles and Examples, McGraw-Hill, New York, 1982, 306–316.

  6. Brain, M. [2000]. Inside a Digital Cell Phone, www.howstuffworks.com/inside-cell-phone.htm.

  7. Brewer, E. A., and B. C. Kuszmaul [1994]. “How to get good performance from the CM-5 data network,” Proc. Eighth Int’l. Parallel Processing Symposium (IPPS), April 26–29, 1994, Cancun, Mexico.

  8. Brin, S., and L. Page [1998]. “The anatomy of a large-scale hypertextual Web search engine,” Proc. 7th Int’l. World Wide Web Conf., April 14–18, 1998, Brisbane, Queensland, Australia, 107–117.

  9. Burkhardt III, H., S. Frank, B. Knobe, and J. Rothnie [1992]. Overview of the KSR1 Computer System, Tech. Rep. KSR-TR-9202001, Kendall Square Research, Boston.

  10. Censier, L., and P. Feautrier [1978]. “A new solution to coherence problems in multicache systems,” IEEE Trans. on Computers C-27:12 (December), 1112–1118.

  11. Chandra, R., S. Devine, B. Verghese, A. Gupta, and M. Rosenblum [1994]. “Scheduling and page migration for multiprocessor compute servers,” Proc. Sixth Int’l. Conf. on Architectural Support for Programming Languages and Operating Systems (ASPLOS), October 4–7, 1994, San Jose, Calif., 12–24.

  12. Charlesworth, A. [1998]. “Starfire: Extending the SMP envelope,” IEEE Micro 18:1 (January/February), 39–49.

  13. Clark, W. A. [1957]. “The Lincoln TX-2 computer development,” Proc. Western Joint Computer Conference, February 26–28, 1957, Los Angeles, 143–145.

  14. Comer, D. [1993]. Internetworking with TCP/IP, 2nd ed., Prentice Hall, Englewood Cliffs, N.J.

  15. Culler, D. E., J. P. Singh, and A. Gupta [1999]. Parallel Computer Architecture: A Hardware/Software Approach, Morgan Kaufmann, San Francisco.

  16. Dally, W. J., and C. I. Seitz [1986]. “The torus routing chip,” Distributed Computing 1:4, 187–196.

  17. Davie, B. S., L. L. Peterson, and D. Clark [1999]. Computer Networks: A Systems Approach, 2nd ed., Morgan Kaufmann, San Francisco.

  18. Desurvire, E. [1992]. “Lightwave communications: The fifth generation,” Scientific American (International Edition) 266:1 (January), 96–103.

  1. Dongarra, J., T. Sterling, H. Simon, and E. Strohmaier [2005]. “High-performance computing: Clusters, constellations, MPPs, and future directions,” Computing in Science & Engineering, 7:2 (March/April), 51–59.

  2. Dubois, M., C. Scheurich, and F. Briggs [1988]. “Synchronization, coherence, and event ordering,” IEEE Computer 21:2 (February), 9–21.

  3. Dunigan, W., K. Vetter, K. White, and P. Worley [2005]. “Performance evaluation of the Cray X1 distributed shared memory architecture,” IEEE Micro, January/ February, 30–40.

  4. Eggers, S. [1989]. “Simulation Analysis of Data Sharing in Shared Memory Multiprocessors,” Ph.D. thesis, Computer Science Division, University of California, Berkeley.

  5. Elder, J., A. Gottlieb, C. K. Kruskal, K. P. McAuliffe, L. Randolph, M. Snir, P. Teller, and J. Wilson [1985]. “Issues related to MIMD shared-memory computers: The NYU Ultracomputer approach,” Proc. 12th Annual Int’l. Symposium on Computer Architecture (ISCA), June 17–19, 1985, Boston, Mass., 126–135.

  6. Erlichson, A., N. Nuckolls, G. Chesson, and J. L. Hennessy [1996]. “SoftFLASH: Analyzing the performance of clustered distributed virtual shared memory,” Proc. Seventh Int’l. Conf. on Architectural Support for Programming Languages and Operating Systems (ASPLOS), October 1–5, 1996, Cambridge, Mass., 210–220.

  7. Falsafi, B., and D. A. Wood [1997]. “Reactive NUMA: A design for unifying S-COMA and CC-NUMA,” Proc. 24th Annual Int’l. Symposium on Computer Architecture (ISCA), June 2–4, 1997, Denver, Colo., 229–240.

  8. Flynn, M. J. [1966]. “Very high-speed computing systems,” Proc. IEEE 54:12 (December), 1901–1909.

  9. Forgie, J. W. [1957]. “The Lincoln TX-2 input-output system,” Proc. Western Joint Computer Conference, February 26–28, 1957, Los Angeles, 156–160.

  10. Frank, S. J. [1984]. “Tightly coupled multiprocessor systems speed memory access time,” Electronics 57:1 (January), 164–169.

  11. Gajski, D., D. Kuck, D. Lawrie, and A. Sameh [1983]. “CEDAR—a large scale multiprocessor,” Proc. Int’l. Conf. on Parallel Processing (ICPP), August, Columbus, Ohio, 524–529.

  12. Galles, M. [1996]. “Scalable pipelined interconnect for distributed endpoint routing: The SGI SPIDER chip,” Proc. IEEE HOT Interconnects ’96, August 15–17, 1996, Stanford University, Palo Alto, Calif.

  13. Gehringer, E. F., D. P. Siewiorek, and Z. Segall [1987]. Parallel Processing: The Cm* Experience, Digital Press, Bedford, Mass.

  14. Gharachorloo, K., A. Gupta, and J. L. Hennessy [1992]. “Hiding memory latency using dynamic scheduling in shared-memory multiprocessors,” Proc. 19th Annual Int’l. Symposium on Computer Architecture (ISCA), May 19–21, 1992, Gold Coast, Australia.

  15. Gharachorloo, K., D. Lenoski, J. Laudon, P. Gibbons, A. Gupta, and J. L. Hennessy [1990]. “Memory consistency and event ordering in scalable shared-memory multiprocessors,” Proc. 17th Annual Int’l. Symposium on Computer Architecture (ISCA), May 28–31, 1990, Seattle, Wash., 15–26.

  1. Gibson, J., R. Kunz, D. Ofelt, M. Horowitz, J. Hennessy, and M. Heinrich [2000]. “FLASH vs. (simulated) FLASH: Closing the simulation loop,” Proc. Ninth Int’l. Conf. on Architectural Support for Programming Languages and Operating Systems (ASPLOS), November 12–15, Cambridge, Mass., 49–58.

  2. Goodman, J. R. [1983]. “Using cache memory to reduce processor memory traffic,” Proc. 10th Annual Int’l. Symposium on Computer Architecture (ISCA), June 5–7, 1982, Stockholm, Sweden, 124–131.

  3. Goralski, W. [1997]. SONET: A Guide to Synchronous Optical Network, McGraw-Hill, New York.

  4. Grice, C., and M. Kanellos [2000]. “Cell phone industry at crossroads: Go high or low?” CNET News (August 31), technews.netscape.com/news/0-1004-201-2518386-0.html?tag=st.ne.1002.tgif.sf.

  5. Groe, J. B., and L. E. Larson [2000]. CDMA Mobile Radio Design, Artech House, Boston.

  6. Hagersten E., and M. Koster [1998]. “WildFire: A scalable path for SMPs,” Proc. Fifth Int’l. Symposium on High-Performance Computer Architecture, January 9–12, 1999, Orlando, Fla.

  7. Hagersten, E., A. Landin, and S. Haridi [1992]. “DDM—a cache-only memory architecture,” IEEE Computer 25:9 (September), 44–54.

  8. Hill, M. D. [1998]. “Multiprocessors should support simple memory consistency models,” IEEE Computer 31:8 (August), 28–34.

  9. Hillis, W. D. [1985]. The Connection Multiprocessor, MIT Press, Cambridge, Mass.

  10. Hirata, H., K. Kimura, S. Nagamine, Y. Mochizuki, A. Nishimura, Y. Nakase, and T. Nishizawa [1992]. “An elementary processor architecture with simultaneous instruction issuing from multiple threads,” Proc. 19th Annual Int’l. Symposium on Computer Architecture (ISCA), May 19–21, 1992, Gold Coast, Australia, 136–145.

  11. Hockney, R. W., and C. R. Jesshope [1988]. Parallel Computers 2: Architectures, Programming and Algorithms, Adam Hilger, Ltd., Bristol, England.

  12. Holland, J. H. [1959]. “A universal computer capable of executing an arbitrary number of subprograms simultaneously,” Proc. East Joint Computer Conf. 16, 108–113.

  13. Hord, R. M. [1982]. The Illiac-IV, The First Supercomputer, Computer Science Press, Rockville, Md.

  14. Hristea, C., D. Lenoski, and J. Keen [1997]. “Measuring memory hierarchy performance of cache-coherent multiprocessors using micro benchmarks,” Proc. ACM/IEEE Conf. on Supercomputing, November 15–21, 1997, San Jose, Calif.

  15. Hwang, K. [1993]. Advanced Computer Architecture and Parallel Programming, McGraw-Hill, New York.

  16. IBM. [2005]. “Blue Gene,” IBM J. of Research and Development, 49:2/3 (special issue).

  1. Infiniband Trade Association. [2001]. InfiniBand Architecture Specifications Release 1.0.a, www.infinibandta.org.

  2. Jordan, H. F. [1983]. “Performance measurements on HEP—a pipelined MIMD computer,” Proc. 10th Annual Int’l. Symposium on Computer Architecture (ISCA), June 5–7, 1982, Stockholm, Sweden, 207–212.

  3. Kahn, R. E. [1972]. “Resource-sharing computer communication networks,” Proc. IEEE 60:11 (November), 1397–1407.

  4. Keckler, S. W., and W. J. Dally [1992]. “Processor coupling: Integrating compile time and runtime scheduling for parallelism,” Proc. 19th Annual Int’l. Symposium on Computer Architecture (ISCA), May 19–21, 1992, Gold Coast, Australia, 202–213.

  5. Kontothanassis, L., G. Hunt, R. Stets, N. Hardavellas, M. Cierniak, S. Parthasarathy, W. Meira, S. Dwarkadas, and M. Scott [1997]. “VM-based shared memory on low-latency, remotememory-access networks,” Proc. 24th Annual Int’l. Symposium on Computer Architecture (ISCA), June 2–4, 1997, Denver, Colo.

  6. Kurose, J. F., and K. W. Ross [2001]. Computer Networking: A Top-Down Approach Featuring the Internet, Addison-Wesley, Boston.

  7. Kuskin, J., D. Ofelt, M. Heinrich, J. Heinlein, R. Simoni, K. Gharachorloo, J. Chapin, D. Nakahira, J. Baxter, M. Horowitz, A. Gupta, M. Rosenblum, and J. L. Hennessy [1994]. “The Stanford FLASH multiprocessor,” Proc. 21st Annual Int’l. Symposium on Computer Architecture (ISCA), April 18–21, 1994, Chicago.

  8. Lamport, L. [1979]. “How to make a multiprocessor computer that correctly executes multiprocess programs,” IEEE Trans. on Computers C-28:9 (September), 241–248.

  9. Laudon, J., A. Gupta, and M. Horowitz [1994]. “Interleaving: A multithreading technique targeting multiprocessors and workstations,” Proc. Sixth Int’l. Conf. on Architectural Support for Programming Languages and Operating Systems (ASPLOS), October 4–7, 1994, San Jose, Calif., 308–318.

  10. Laudon, J., and D. Lenoski [1997]. “The SGI Origin: A ccNUMA highly scalable server,” Proc. 24th Annual Int’l. Symposium on Computer Architecture (ISCA), June 2–4, 1997, Denver, Colo., 241–251.

  11. Lenoski, D., J. Laudon, K. Gharachorloo, A. Gupta, and J. L. Hennessy [1990]. “The Stanford DASH multiprocessor,” Proc. 17th Annual Int’l. Symposium on Computer Architecture (ISCA), May 28–31, 1990, Seattle, Wash., 148–159.

  12. Lenoski, D., J. Laudon, K. Gharachorloo, W.-D. Weber, A. Gupta, J. L. Hennessy, M. A. Horowitz, and M. Lam [1992]. “The Stanford DASH multiprocessor,” IEEE Computer 25:3 (March), 63–79.

  13. Li, K. [1988]. “IVY: A shared virtual memory system for parallel computing,” Proc. Int’l. Conf. on Parallel Processing (ICCP), August, The Pennsylvania State University, University Park, Penn.

  14. Lo, J., L. Barroso, S. Eggers, K. Gharachorloo, H. Levy, and S. Parekh [1998]. “An analysis of database workload performance on simultaneous multithreaded processors,” Proc. 25th Annual Int’l. Symposium on Computer Architecture (ISCA), July 3–14, 1998, Barcelona, Spain, 39–50.

  1. Lo, J., S. Eggers, J. Emer, H. Levy, R. Stamm, and D. Tullsen [1997]. “Converting thread-level parallelism into instruction-level parallelism via simultaneous multithreading,” ACM Trans. on Computer Systems 15:2 (August), 322–354.

  2. Lovett, T., and S. Thakkar [1988]. “The Symmetry multiprocessor system,” Proc. Int’l. Conf. on Parallel Processing (ICCP), August, The Pennsylvania State University, University Park, Penn., 303–310.

  3. Mellor-Crummey, J. M., and M. L. Scott [1991]. “Algorithms for scalable synchronization on shared-memory multiprocessors,” ACM Trans. on Computer Systems 9:1 (February), 21–65.

  4. Menabrea, L. F. [1842]. “Sketch of the analytical engine invented by Charles Babbage,” Bibliothèque Universelle de Genève, 82 (October).

  5. Metcalfe, R. M. [1993]. “Computer/network interface design: Lessons from Arpanet and Ethernet.” IEEE J. on Selected Areas in Communications 11:2 (February), 173–180.

  6. Metcalfe, R. M., and D. R. Boggs [1976]. “Ethernet: Distributed packet switching for local computer networks,” Communications of the ACM 19:7 (July), 395–404.

  7. Mitchell, D. [1989]. “The Transputer: The time is now,” Computer Design (RISC suppl.), 40–41.

  8. Miya, E. N. [1985]. “Multiprocessor/distributed processing bibliography,” Computer Architecture News 13:1, 27–29.

  9. National Research Council. [1997]. The Evolution of Untethered Communications, Computer Science and Telecommunications Board, National Academy Press, Washington, D.C.

  10. Nikhil, R. S., G. M. Papadopoulos, and Arvind [1992]. “*T: A multithreaded massively parallel architecture,” Proc. 19th Annual Int’l. Symposium on Computer Architecture (ISCA), May 19–21, 1992, Gold Coast, Australia, 156–167.

  11. Noordergraaf, L., and R. van der Pas [1999]. “Performance experiences on Sun’s WildFire prototype,” Proc. ACM/IEEE Conf. on Supercomputing, November 13–19, 1999, Portland, Ore.

  12. Partridge, C. [1994]. Gigabit Networking, Addison-Wesley, Reading, Mass.

  13. Pfister, G. F. [1998]. In Search of Clusters, 2nd ed., Prentice Hall, Upper Saddle River, N.J.

  14. Pfister, G. F., W. C. Brantley, D. A. George, S. L. Harvey, W. J. Kleinfekder, K. P. McAuliffe, E. A. Melton, V. A. Norton, and J. Weiss [1985]. “The IBM research parallel processor prototype (RP3): Introduction and architecture,” Proc. 12th Annual Int’l. Symposium on Computer Architecture (ISCA), June 17–19, 1985, Boston, Mass., 764–771.

  15. Reinhardt, S. K., J. R. Larus, and D. A. Wood [1994]. “Tempest and Typhoon: User-level shared memory,” Proc. 21st Annual Int’l. Symposium on Computer Architecture (ISCA), April 18–21, 1994, Chicago, 325–336.

  16. Rettberg, R. D., W. R. Crowther, P. P. Carvey, and R. S. Towlinson [1990]. “The Monarch parallel processor hardware design,” IEEE Computer 23:4 (April), 18–30.

  1. Rosenblum, M., S. A. Herrod, E. Witchel, and A. Gupta [1995]. “Complete computer simulation: The SimOS approach,” in IEEE Parallel and Distributed Technology (now called Concurrency) 4:3, 34–43.

  2. Saltzer, J. H., D. P. Reed, and D. D. Clark [1984]. “End-to-end arguments in system design,” ACM Trans. on Computer Systems 2:4 (November), 277–288.

  3. Satran, J., D. Smith, K. Meth, C. Sapuntzakis, M. Wakeley, P. Von Stamwitz, R. Haagens, E. Zeidner, L. Dalle Ore, and Y. Klein [2001]. “iSCSI,” IPS Working Group of IETF, Internet draft www.ietf.org/internet-drafts/draft-ietf-ips-iscsi-07.txt.

  4. Saulsbury, A., T. Wilkinson, J. Carter, and A. Landin [1995]. “An argument for Simple COMA,” Proc. First IEEE Symposium on High-Performance Computer Architectures, January 22–25, 1995, Raleigh, N.C., 276–285.

  5. Schwartz, J. T. [1980]. “Ultracomputers,” ACM Trans. on Programming Languages and Systems 4:2, 484–521.

  6. Scott, S. L. [1996]. “Synchronization and communication in the T3E multiprocessor,” Seventh Int’l. Conf. on Architectural Support for Programming Languages and Operating Systems (ASPLOS), October 1–5, 1996, Cambridge, Mass., 26–36.

  7. Scott, S. L., and G. M. Thorson [1996]. “The Cray T3E network: Adaptive routing in a high-performance 3D torus,” Proc. IEEE HOT Interconnects ’96, August 15–17, 1996, Stanford University, Palo Alto, Calif., 14–156.

  8. Seitz, C. L. [1985]. “The Cosmic Cube (concurrent computing),” Communications of the ACM 28:1 (January), 22–33.

  9. Singh, J. P., J. L. Hennessy, and A. Gupta [1993]. “Scaling parallel programs for multiprocessors: Methodology and examples,” Computer 26:7 (July), 22–33.

  10. Slotnick, D. L., W. C. Borck, and R. C. McReynolds [1962]. “The Solomon computer,” Proc. AFIPS Fall Joint Computer Conf., December 4–6, 1962, Philadelphia, Penn., 97–107.

  11. Smith, B. J. [1978]. “A pipelined, shared resource MIMD computer,” Proc. Int’l. Conf. on Parallel Processing (ICPP), August, Bellaire, Mich., 6–8.

  12. Soundararajan, V., M. Heinrich, B. Verghese, K. Gharachorloo, A. Gupta, and J. L. Hennessy [1998]. “Flexible use of memory for replication/migration in cache-coherent DSM multiprocessors,” Proc. 25th Annual Int’l. Symposium on Computer Architecture (ISCA), July 3–14, 1998, Barcelona, Spain, 342–355.

  13. Spurgeon, C. [2001]. “Charles Spurgeon’s Ethernet Web site,” www.host.ots.utexas.edu/ethernet/ethernet-home.html.

  14. Stenström, P., T. Joe, and A. Gupta [1992]. “Comparative performance evaluation of cachecoherent NUMA and COMA architectures,” Proc. 19th Annual Int’l. Symposium on Computer Architecture (ISCA), May 19–21, 1992, Gold Coast, Australia, 80–91.

  15. Sterling, T. [2001]. Beowulf PC Cluster Computing with Windows and Beowulf PC Cluster Computing with Linux, MIT Press, Cambridge, Mass.

  16. Stevens, W. R. [1994–1996]. TCP/IP Illustrated (three volumes), Addison-Wesley, Reading, Mass.

  17. Stone, H. [1991]. High Performance Computers, Addison-Wesley, New York.

  1. Swan, R. J., A. Bechtolsheim, K. W. Lai, and J. K. Ousterhout [1977]. “The implementation of the Cm* multi-microprocessor,” Proc. AFIPS National Computing Conf., June 13–16, 1977, Dallas, Tex., 645–654.

  2. Swan, R. J., S. H. Fuller, and D. P. Siewiorek [1977]. “Cm*—a modular, multi-microprocessor,” Proc. AFIPS National Computing Conf., June 13–16, 1977, Dallas, Tex., 637–644.

  3. Tanenbaum, A. S. [1988]. Computer Networks, 2nd ed., Prentice Hall, Englewood Cliffs, N.J.

  4. Tang, C. K. [1976]. “Cache design in the tightly coupled multiprocessor system,” Proc. AFIPS National Computer Conf., June 7–10, 1976, New York, 749–753.

  5. Thacker, C. P., E. M. McCreight, B. W. Lampson, R. F. Sproull, and D. R. Boggs [1982]. “Alto: A personal computer,” in D. P. Siewiorek, C. G. Bell, and A. Newell, eds., Computer Structures: Principles and Examples, McGraw-Hill, New York, 549–572.

  6. Thekkath, R., A. P. Singh, J. P. Singh, S. John, and J. L. Hennessy [1997]. “An evaluation of a commercial CC-NUMA architecture—the CONVEX Exemplar SPP1200,” Proc. 11th Int’l. Parallel Processing Symposium (IPPS), April 1–7, 1997, Geneva, Switzerland.

  7. Tullsen, D. M., S. J. Eggers, J. S. Emer, H. M. Levy, J. L. Lo, and R. L. Stamm [1996]. “Exploiting choice: Instruction fetch and issue on an implementable simultaneous multithreading processor,” Proc. 23rd Annual Int’l. Symposium on Computer Architecture (ISCA), May 22–24, 1996, Philadelphia, Penn., 191–202.

  8. Tullsen, D. M., S. J. Eggers, and H. M. Levy [1995]. “Simultaneous multithreading: Maximizing on-chip parallelism,” Proc. 22nd Annual Int’l. Symposium on Computer Architecture (ISCA), June 22–24, 1995, Santa Margherita, Italy, 392–403.

  9. Unger, S. H. [1958]. “A computer oriented towards spatial problems,” Proc. Institute of Radio Engineers 46:10 (October), 1744–1750.

  10. Walrand, J. [1991]. Communication Networks: A First Course, Aksen Associates: Irwin, Homewood, Ill.

  11. Wilson, A. W., Jr. [1987]. “Hierarchical cache/bus architecture for shared-memory multiprocessors,” Proc. 14th Annual Int’l. Symposium on Computer Architecture (ISCA), June 2–5, 1987, Pittsburgh, Penn., 244–252.

  12. Wolfe, A., and J. P. Shen [1991]. “A variable instruction stream extension to the VLIW architecture.” Proc. Fourth Int’l. Conf. on Architectural Support for Programming Languages and Operating Systems (ASPLOS), April 8–11, 1991, Palo Alto, Calif., 2–14.

  13. Wood, D. A., and M. D. Hill [1995]. “Cost-effective parallel computing,” IEEE Computer 28:2 (February), 69–72.

  14. Wulf, W., and C. G. Bell [1972]. “C.mmp—A multi-mini-processor,” Proc. AFIPS Fall Joint Computer Conf., December 5–7, 1972, Anaheim, Calif., 765–777.

  1. Wulf, W., and S. P. Harbison [1978]. “Reflections in a pool of processors—an experience report on C.mmp/Hydra,” Proc. AFIPS National Computing Conf. June 5–8, 1978, Anaheim, Calif., 939–951.

  2. Yamamoto, W., M. J. Serrano, A. R. Talcott, R. C. Wood, and M. Nemirosky [1994]. “Performance estimation of multistreamed, superscalar processors,” Proc. 27th Hawaii Int’l. Conf. on System Sciences, January 4–7, 1994, Wailea, 195–204.

表格阅读