acm-header
登录

ACM通信

实践

CPU DB:记录微处理器历史


ST 486 DX2-80微处理器

来源:PCinBits.com

回到顶部

1971年11月,英特尔推出了世界上第一台单芯片微处理器——英特尔4004。它有2300个晶体管,以高达740KHz的时钟速度运行,并且可以传输60000年每秒指令,耗散0.5瓦。接下来的四十年见证了计算能力的指数级增长,这一趋势使得气候建模、蛋白质折叠和计算《愤怒的小鸟》的实时弹道轨迹等各种应用成为可能。今天的微处理器芯片使用了数十亿个晶体管,在单个硅模上包括多个处理器核心,以千兆赫的时钟速度运行,性能是最初4004的400多万倍。

这些令人难以置信的进步来自哪里?本文通过介绍CPU DB (cpudb.stanford.edu)来解释这个问题,这是一个开放的、可扩展的数据库,由斯坦福的VLSI研究小组收集了几代处理器(和学生)。我们收集了来自17个制造商的商业处理器的信息,并将其放在CPU DB中,该数据库现在包含了过去40年790个处理器的数据。

此外,我们还提供了一种方法,将技术扩展的影响与其他前沿领域(例如,架构和软件)的改进分离开来,允许对不同技术构建的机器进行比较。为了展示这些数据和分析的效用,我们使用它将处理器改进分解为来自设备物理扩展的贡献,以及来自微架构、编译器和软件技术的改进。

虽然关于当前处理器的信息很容易找到,但它们很少以对研究社区有用的方式排列。例如,数据表可能包含处理器的功率、电压、频率和缓存大小,但不包含管道深度或技术最小特征大小。即便如此,这些规格通常也不能说明全部情况:笔记本电脑处理器的工作频率和电压范围,而不仅仅是包装盒标签上显示的2GHz。

处理器越老,规格数据就越难找到,这并不奇怪,特别是那些不再生产的处理器,或者更糟的是,它们的制造商已经不存在了。我们已经收集这类数据30年了,现在正以开放的处理器规范存储库的形式发布它。CPU DB的目标是将详细的处理器规范聚合为一种方便的形式,并鼓励社区参与,以便利用这些信息并保持其准确和最新。CPU DB由桌面、膝上型电脑和服务器处理器填充,我们使用SPEC13作为我们的绩效衡量工具。此外,数据库包含嵌入式核心的有限数据,为此我们使用CoreMark基准测试来提高性能。5随着时间的推移和社区的帮助,我们希望扩展数据库中嵌入式处理器的覆盖范围。

为了使用户分析不同的处理器特性,CPU DB包含每个CPU的许多数据条目,范围从物理参数(如金属层数)到总体性能指标(如SPEC分数)。为了使查看相关数据更容易,数据库包含了汇总字段,如标称时钟频率,这些字段试图表示更详细的伸缩数据。表1显示当前CPU DB参数列表。表2总结“微架构”规范。

今天所有的高性能处理器都会告诉系统在允许的范围内需要什么供电电压。这使得很难跟踪电源电压随时间的变化。研究人员不必依赖于指定的最坏情况行为,而是可以自由地分析处理器在运行应用程序时实际使用的功率、频率和电压,然后将其添加到CPU DB存储库中。表3是在CPU DB中跟踪的测量参数的摘要。

虽然CPU DB包含大量处理器数据字段,但体系结构社区的某些成员可能想要研究我们没有想到包括的数据字段。为了处理这种情况,建议用户建议新的数据列。这些建议将被审查,然后输入数据库。

类似的系统有助于保持CPU DB的准确性和更新。用户可以为新的处理器和体系结构提交数据,并对数据条目提出修改建议。我们知道用户可能没有所有规范的数据,我们鼓励用户提交数据字段的任何子集。新数据和修正在应用到数据库之前将被审查。

有了这些用于添加和审查数据的机制,对于希望将处理器数据纳入研究的架构师来说,CPU DB将是一个强大的工具。因为许多数据库用户可能希望对原始CPU DB数据执行分析,所以可以下载以逗号分隔值格式的完整数据库。

回到顶部

技术标准化方法

CPU DB允许并行访问相对简单的有序处理器(直到1990年代中期)和现代无序处理器的性能数据。有人可能会问,以较低的性能为代价,旧设计的简单性是否带来了效率优势。不幸的是,使用原始数据进行直接比较很困难,因为多年来,制造技术有了显著改进。如果这两种处理器使用相同的工艺制造,就可能进行公平的比较;但是由于将所有这些旧的处理器移植到现代技术上是不可实现的,我们需要另一种方法。为了进行这样的比较,我们转而估计处理器的性能和功率如何随着技术的发展而变化。

我们的主要性能指标是基于行业标准SPEC CPU2006评分。13不幸的是,大多数较老的处理器不运行SPEC 2006,而是用MIPS(每秒百万指令)来衡量性能,后来又用SPEC 1989、SPEC 1992、SPEC 1995和SPEC 2000来衡量。在这些情况下,我们通过将旧分数转换为a来估计SPEC 2006的数字规范2006年等效使用转换因子进行评分。转换值是通过检查具有两个SPEC版本分数的系统,然后取重叠分数之间比率集的几何平均值来确定的。该方法用于在数据库中创建汇总性能分数。我们还提供原始分数,以便用户可以随着时间的推移开发更好的转换方法。

为了估计使用新工艺制造的处理器的性能,我们使用门延迟数据计算该技术中的时钟频率。虽然处理器上缓存内存的速度随着技术的发展而变化,但进入主存的延迟只会随着时间的推移而缓慢变化。因此,时钟频率翻倍通常不会使处理器的性能翻倍。我们用与微处理器行业相同的方法处理这个问题:通过缩放片上缓存,使内存失速时间百分比保持不变。利用缺失率与缓存大小平方根成正比的经验法则,914时钟频率每增加一倍,最后一级缓存就扩展四倍。因此,我们假设处理器的性能随时钟频率的变化而变化,但是我们通过增加处理器的缓存来减少处理器的能量和面积。

对于时钟周期时间的估计,我们需要知道栅极和电线的延迟将如何扩展。幸运的是,不同逻辑门的延迟缩放是相似的,因此可以充分衡量单个逻辑门的延迟缩放。我们的分析使用一个逆变器驱动四个等效逆变器(四个风扇输出,或FO4)的延迟作为门速度量。逆变器是最常见的门型,其时延经常在技术论文中发表。对于线路延迟,重要的是要记住,设计的面积会随着缩放而缩小,所以它的线路延迟通常会缓慢减少,或者在最坏的情况下保持不变。它对循环时间的影响取决于内部电路的设计。设计师通常会使用较长的线路,所以他们往往不会限制关键路径。因此,我们忽略了线路延迟,并做出稍微乐观的假设:新技术中处理器的频率将根据fo4从老到新的比率而提高:

ueq01.gif

使用FO4作为基本度量还有一个额外的优点:它清晰地涵盖了由于电源电压的改变而产生的性能/能量变化。两个处理器,即使采用相同的技术,也可能在不同的供电电压下工作。两者之间的能量差可以直接从电源电压计算,但电压对性能的影响很难估计。在两种不同电压下使用FO4数据进行这些设计可以提供所需的所有信息。

考虑到可伸缩内存系统的影响后,我们发现用可伸缩技术估计处理器的能力是相当直接的。处理器功率有两个组成部分:动态和泄漏。在优化设计中,泄漏功率约为动态功率的30%,泄漏功率随动态功率的增大而增大。16

动态功率由处理器的平均活动因子α(节点在每个周期切换的概率)、处理器频率和切换晶体管的能量的乘积给出:

ueq02.gif

处理器的平均活动因子取决于逻辑,而不是技术,因此它随扩展而不变。由于单位长度的电容大致与缩放常数,C应该与特征大小λ成比例。我们已经估计了频率将如何缩放,所以估计的功率和性能缩放技术是:

ueq03.gif

在分析处理器效率时,查看每次操作的能量通常比查看功率更好。能量/op因子剔除了性能和功率与频率的线性关系(FO4)。降低频率会改变功率,但不会改变能量/op。由于能量/op与功率与性能之比成正比,我们将公式1和公式2除以,得到公式3:

ueq04.gif

有了这些表达式,就有可能将CPU DB处理器的性能和能量标准化为单一的进程技术。虽然英特尔的谢卡尔·博卡等人给出了多年来技术扩展和架构改进如何促进处理器性能的粗略草图,2我们的数据和归一化方法可以用来生成一个实际的散点图,显示两个因素之间的分解:更快的晶体管(由于技术缩放)和架构改进。见图1、进程缩放和微架构缩放对处理器性能提升的贡献几乎相同。

作为对归一化结果的快速检查,我们绘制了归一化性能与晶体管计数和归一化面积的关系图2而且3..这些图是根据波拉克规则绘制的,该规则指出,性能的规模是设计复杂性的平方根。1波拉克规则已在许多已发表的研究中被用于比较性能与处理器模具资源使用情况。241015图2而且3.表明我们的归一化数据与波拉克规则非常一致,表明我们的归一化方法能够准确地反映设计性能。

回到顶部

身体比例

收集这个数据库的一个好处是,它允许人们看到芯片的复杂性、电压和功率是如何随着时间的推移而变化的,以及预测的缩放与现实的比较情况如何。近年来,特征扩展的速度加快(图4).向上通过130纳米(纳米)工艺生成,特征尺寸缩小了一个因子

ueq05.gif

大约每两到三年。然而,从90nm一代开始,大约每两年就会引入一种新的工艺。英特尔似乎正在推动这一紧张的时间表,自180nm一代以来,它一直是率先将每种工艺推向市场的企业之一。

由于这种指数级扩展的结果,自英特尔80386发布以来的25年里,晶体管的面积缩小了近4000倍。如果特征尺寸的缩放是驱动处理器密度的全部因素,那么晶体管数量将以相同的速度缩放。然而,对商用微处理器的分析显示,晶体管的数量实际上增长了1.6万倍。

晶体管的增长速度超过特征尺寸的一个简单原因是处理器的寿命增加了。而80386微处理器的模具尺寸为103毫米2在美国,现代英特尔酷睿i7芯片的面积高达296毫米2.然而,这并不是晶体管缩放背后的全部故事。图5通过绘制平均处理器晶体管占用的最小特征的平方数,显示与技术无关的晶体管密度。我们通过取模具面积,除以特征尺寸的平方,然后除以晶体管数量来生成这些数据。从1985年到2005年,不断增加的金属层和更大的缓存结构(具有高晶体管密度)使晶体管的平均尺寸减小了四倍。有趣的是,自2005年以来,晶体管的密度实际上下降了大约两倍。虽然我们的数据没有指出这种变化的原因,但我们怀疑这是由于亚波长光刻更严格的设计规则,在处理器中使用更健壮的逻辑样式,以及在芯片多处理器中用于缓存的处理器区域的百分比不断缩小的综合结果。

我们的数据还提供了一些有趣的洞察,关于电源电压如何随时间缩放。大多数人都知道电压随技术特征尺寸的变化而变化,所以许多人认为电压的变化与特征尺寸成正比,正如Robert Dennard在1974年的文章中最初提出的那样。6然而,正如他和其他人所注意到的,如图6,电压没有按照特征尺寸的速度缩放。3.12大约在0.6 μm节点之前,处理器的工作电压一直维持在5伏,因为这是当时流行的逻辑家族的常用供电电压,处理器功耗不是问题。直到制造商在0.6 μm代中达到3.3伏,电压才开始随特征尺寸缩放。拟合从半微米到0.13 μm过程生成的电压数据曲线,我们的数据表明,即使当电压缩放时,它也大致以特征大小的平方根进行缩放。这种较慢的比例被归因于获得更快的栅极和更好的抗噪声和工艺变化的双重好处,以更高的芯片功率密度为代价。

从0.13 μm一代开始,电压的缩放似乎减慢了。然而,与此同时,从我们的数据中估计电压的趋势变得更加困难。如前所述,今天几乎所有处理器都定义了自己的工作电压。数据表上只有操作范围。图6绘制最大指定电压。更多的用户数据应该能让我们了解电源电压是如何变化的。

回到顶部

电路和流水线

电路设计师和微架构师不满足于按照他们过去的门速度来扩展频率,那么微处理器今天将只能运行在500MHz左右。作为图7表明,频率的增长比简单的栅极速度快得多。这种差异的原因很大程度上是因为体系结构决策减少了每个处理器管道阶段的逻辑深度,增加了阶段的数量。从1985年到2000年左右,由于加器、分支单元和缓存的更快、更多的并行电路实现以及积极管道的使用,频率迅速增加。这些趋势在Intel 80386的两级获取/执行管道和Prescott Pentium IV的30多级管道之间的对比中很明显。

自2000年以来,处理器频率一直停滞不前,但这并不是全部。我们的数据证实,门的速度随着技术的发展而不断提高。但现在的不同之处在于,油气行业已经不再采用深度流水线作业的机器,而是在设计每段流水线作业更多的机器。这种变化的原因很简单:动力。虽然短滴答机器是可能的,而且从性能角度来看可能是最佳的,71114它们并不节能。8

鉴于较慢的电压缩放和较快的频率缩放,处理器的功率随着时间的推移而增加就不足为奇了。见图8在美国,从80386发布到2005年,处理器功率密度增加了32倍以上,不过随着节能计算越来越重要,最近开始下降。

有趣的是,根据比例法则,功率应该更差。从英特尔80386到奔腾4,功能尺寸增加了16倍,电源电压增加了大约4倍,频率增加了200倍。这意味着功率密度应该增加16·200/4倍2= 200,这远远大于中所示的32倍的功率密度增长图8图9比较了观察到的功率和如果我们只是扩大英特尔386架构以匹配新处理器的性能,功率应该如何扩展。八倍的节省代表了电路和微架构优化,如时钟门,在这一时期已经完成,以保持功率在控制之下。这些技术节省的能源最初一直在增长,但不幸的是,最近似乎稳定在8倍的标记附近。如果我们希望继续扩展性能,这不是一个好迹象,因为能源的技术扩展正在放缓。

回到顶部

微体系结构和软件

当过程技术人员正在寻找扩展晶体管的方法时,处理器架构师也在同样努力地推进和创新微架构水平。事实上,这种效果可以在CPU DB中看到,在技术归一化之后,我们观察到自Intel 80386以来微架构/软件性能有了百倍的改进。历史上,当每个芯片的晶体管数量随着技术的扩展而增加时,架构师们找到了使用这些晶体管来创建更快、更先进的单处理器的方法。除了积极的时钟缩放,架构师还实现了推测执行、并行指令发布、乱序处理和更大的缓存等特性,所有这些都有助于提高单线程性能。

大约到2005年,越来越复杂的处理器,以及缓慢的电压缩放,导致处理器遇到了一个新的限制:电源墙。这导致了该行业的重大转变。摩尔定律意味着处理器设计者仍然可以期待不断增加的晶体管数量,但他们必须以节能的方式使用这些晶体管;现在提高性能意味着减少能量/指令以保持功率不变。为了应对这一挑战,业界转向了CMP(芯片多处理器)设计,使用许多简单的处理器来提高芯片的总体性能。

图10绘制技术规范化的能量/op与规范化性能的对比图。对于这个图,我们假设与处理器的功率相比,扩展缓存大小所需的功率很小,这是对这些早期机器的效率的乐观假设。这幅图表明,对于早期的处理器设计来说,当性能提升时,能量/运算速率保持相对恒定。

然而,我们从这个图中注意到,一些早期的处理器(例如,奔腾)似乎比现代的处理器设计更节能。为了更公平地估计这些处理器的缩放能量,我们将缓存缩放为频率改进的平方,以保持内存失速百分比不变,我们估计45nm低功率SRAM的功率约为0.5W/MB。包含这个缓存能量校正因子的结果是图11.比较这两个图可以看出内存系统对于低能量处理器是多么重要。对于简单的处理器来说,我们估计的大型片上缓存的泄漏功率使指令的能量成本增加了4到8倍。

然而,令人惊讶的是,最初的奔腾设计仍然比地块中的其他设计节能得多。显然,需要进行更多的分析来了解这种明显的效率是否可以在未来的机器中得到利用。

近年来,桌面处理器已转向高通量并行计算机。随着这一转变,处理器设计者是否能够扩展单核性能还不清楚。对数据的简要分析图12说明单核性能随着每个新架构的发展而不断扩展。在体系结构中,性能主要取决于部件的频率和缓存大小。图13通过绘制几种现代处理器设计的性能与频率和缓存大小的关系来说明这一点。每个新体系结构的频率调整都比以前慢,而且现在通常只在其他处理器核心空闲时使用峰值频率。图14绘制以门延迟度量的周期时间,并显示处理器时钟频率似乎停滞的原因:处理器移动到更短的管道,导致更慢的频率需要一些时间才能赶上旧的超管道速率。

更有趣的是,即使控制了频率和缓存大小的影响,单核微架构的性能仍在随着每一代芯片(图13).诸如片上内存控制器和额外的执行单元等改进都在决定整体系统效率方面发挥着作用,架构师仍在寻找改进。


即使控制了频率和缓存大小的影响,单核微架构性能仍在每一代芯片中得到改进。


然而,我们的研究结果需要注意的是,现代单核性能的某些性能改进来自编译器优化。图15展示了SPEC 2006基准Libquantum在Intel Bloomfield架构上的性能是如何随时间变化的。Libquantum将大量计算集中在一个可以优化的内部for循环中。结果,Libquantum的分数在底层硬件没有任何改进的情况下提高了18倍。此外,现代处理器的许多SPEC得分都是在Auto Parallel标志打开的情况下进行度量的,这表明所度量的“单核”性能可能仍然受益于多核计算。

回到顶部

结论

在过去的40年里,超大规模集成电路(VLSI)的设计者们使用了大量的工程专业知识来创造和改进这些我们称为微处理器的神奇设备。因此,性能得到了提高,能量/op下降了许多数量级,使这些设备成为驱动我们的信息技术基础设施的引擎。CPU DB旨在帮助探索这一领域。使用CPU DB中的数据和一些简单的缩放规则,我们进行了一些初步研究,以显示可能的分析类型。我们鼓励读者探索CPU DB中的处理器数据并对其做出贡献,我们期待从它们所开发的见解中了解更多关于处理器的知识。

回到顶部

致谢

本文的贡献作者是:Omid Azizi, Hicamp Systems, Inc.;约翰·s·布伦哈弗二世,斯坦福大学;罗恩Ho甲骨文;史蒂芬·理查森,斯坦福大学;斯坦福大学奥弗·沙查姆;Hicamp系统公司的Alex Solomatnikov。

有关在线CPU数据库和如何贡献数据的更多信息,请访问cpudb.stanford.edu

ACM队列的q戳相关文章
queue.acm.org

与史蒂夫·弗伯的对话
http://queue.acm.org/detail.cfm?id=1716385

实际的并发性
布莱恩·坎特里尔,杰夫·邦维克
http://queue.acm.org/detail.cfm?id=1454462

绩效的代价
路易斯安德烈·巴罗佐
http://queue.acm.org/detail.cfm?id=1095420

回到顶部

参考文献

1.千核芯片:技术视角。在第44届设计自动化年会论文集(2007), 746749;http://doi.acm.org/10.1145/1278480.1278667

2.微处理器的未来。Commun。ACM 54, 5(2011年5月),6777;http://doi.acm.org/10.1145/1941487.1941507

3.Chang, L., Frank, D., Montoye, R., Koester, S., Ji, B., Coteus, P., Dennard, R.和Haensch, W.节能计算技术的实用策略。在IEEE 98论文集2 (2010);215236.

4.Chung, E.S, Milder, P.A, Hoe, J.C.和Mai, K.单芯片异构计算:未来是否包括自定义逻辑、fpga和gpgpu ?在43人会议记录理查德·道金斯年度IEEE/ACM国际微架构研讨会(2010), 225236;http://dx.doi.org/10.1109/MICRO.2010.36

5.CoreMark, EEMBC基准。嵌入式和桌面cpu的CoreMark评分;http://www.coremark.org/home.php

6.Dennard, R., Gaensslen, F., Yu, H., Rideout, V., Bassous, E.和LeBlanc, A.具有非常小物理尺寸的离子注入mosfet设计。在IEEE 87论文集, 4(1999), 668678(转载自IEEE固体电路杂志,1974)。

7.Hartstein和Puzak, T.微处理器的最佳管道深度。在29人会议记录th计算机体系结构年度国际研讨会(2002), 713。

8.Hartstein, A.和Puzak, T.最佳功率/性能管道深度。在36人会议记录th年度IEEE/ACM国际微架构研讨会(2003年12月),117125年。

9.哈特斯坦,A,斯里尼瓦桑,V,普扎克,T.R.和艾玛,P.G.缓存miss行为cacm5504_b.gif?在会议记录理查德·道金斯计算前沿会议(2006), 313320;http://doi.acm.org/10.1145/1128022.1128064

10.多核时代的Hill, M.和Marty, M. Amdahl定律。电脑41, 7(2008), 3338。

11.Hrishikesh, M., Jouppi, N., Farkas, K., Burger, D., Keckler, S.和Shivakumar, P.每个管道级的最佳逻辑深度是6到8 FO4逆变器延迟。在29人会议记录th计算机体系结构年度国际研讨会(2002), 1424。

12.当缩放陷入困境时,保持CMOS缩放的好处。IBM研究与发展杂志, 2.3(2002), 169180。

13.标准绩效评估公司(SPEC)。规范CPU2006结果;http://www.spec.org/cpu2006/results/

14.Sprangle, E, Carmean, D.通过实现更深的管道来提高处理器性能。在29人会议记录th计算机体系结构年度国际研讨会(2002), 2534。

15.吴,d。h。李,h。h。将Amdahl定律应用于多核时代的高效计算。电脑41, 12(2008), 2431。

16.使用功率编译器和多vt库的高性能低泄漏设计。Synopsys用户组(SNUG)欧洲,2003年。

回到顶部

作者

安德鲁Danowitz目前在斯坦福大学攻读电气工程博士学位。他的研究重点是可重构硬件设计方法和节能架构。

凯尔·凯利是斯坦福大学电气工程博士研究生。他的研究兴趣包括高效的VLSI设计和并行计算。

詹姆斯·毛是斯坦福大学VLSI研究小组的博士候选人,研究混合信号设计的验证工具。

约翰·p·史蒂文森毕业于美国海军学院,并在美国海军驱逐舰上担任军官洛杉矶(sn -688))在进入斯坦福大学博士项目之前。他的兴趣包括计算机架构和数字电路设计。他正在研究新的内存系统架构。

马克·霍洛维茨他是电气工程系的主席,雅虎!斯坦福大学创始人教授,Rambus公司创始人。他的研究兴趣包括利用EE和CS分析方法解决分子生物学问题,以及为模拟和数字VLSI电路创造新的设计方法。

回到顶部

数据

F1图1所示。菱形表示处理器性能实际上是如何随时间变化的,而方框表示改进制造过程带来的加速程度。

F2图2。使用CPU DB的波拉克规则:性能vs晶体管计数。回归的收益率性能规范n反式0.37

F3图3。使用CPU DB的波拉克规则:性能vs.标准化区域。回归的收益率性能规范n反式0.46

F4图4。晶体管特征尺寸随时间的缩放。直到130nm节点,特征尺寸每两到三年增加一次。自90nm一代以来,特征尺寸的缩放速度已经加快到每两年一次。

F5图5。在现代芯片中,每个晶体管的特性数量已经开始增长。

F6图6。电压vs.特征尺寸。很明显,电压缩放并不遵循一个简单的规则。首先,按照惯例,它被维持在5伏。一旦需要降低电压,就建立了3.3伏的新约定。然后电压按特征尺寸的比例降低,直到130nm节点。对数空间回归显示,电压大致缩放为0.6um到130nm节点之间特征大小的平方根。

F7图7。处理器频率随时间变化。正如所示,处理器频率自2005年以来基本趋于平稳。

F8图8。随时间变化的功率密度。从1985年到2005年,电力密度增长了大约32倍。自2005年以来,功率密度基本上开始下降。

F9图9。考虑到电压、晶体管数量和性能的实际缩放,功率应该如何缩放。

F10图10。能源/ op与性能。注意,这些能量/运行并不反映片上存储系统的任何扩展。

季图11。能量/op vs.性能,修改以扩大旧内核的内存系统。

F12图12。业绩与2005年以来的年比。

F13图13。自2005年以来的性能与时钟速率和缓存大小(LLC是最后一级缓存大小)。

F14图14。FO4在处理器设计上的每个周期延迟。每个周期的FO4延迟大致与每个周期完成的计算量成正比。

F15图15。Libquantum评分vs. spec评分。该图显示了编译器优化如何提高Libquantum的性能。

回到顶部

T1表1。用于在CPU DB中组织每个处理器规格的类别。

T2表2。微架构参数包含在CPU DB中。

T3表3。CPU DB中的测量参数。注意,spec基准测试还包括针对单个spec子测试的性能的综合字段。

回到顶部


©2012 acm 0001-0782/12/0400 $10.00

允许为个人或课堂使用部分或全部作品制作数字或硬拷贝,但不得为盈利或商业利益而复制或分发,且副本在首页上附有本通知和完整的引用。除ACM外,本作品的其他组件的版权必须受到尊重。允许有信用的文摘。以其他方式复制、重新发布、在服务器上发布或重新分发到列表,都需要事先获得特定的许可和/或费用。请求发布的权限permissions@acm.org传真(212)869-0481。

数字图书馆是由计算机协会出版的。版权所有©2012 ACM, Inc.


没有发现记录

Baidu
map