论文翻译

需求,瓶颈,好运:微处理器演变的动力

摘要

​ 第一台微处理器——Intel 4004于1971年问世,其集成了2300个晶体管,时钟频率为108KHz。在三十年后的今天,一个微处理器中集成了近2亿个晶体管,其时钟频率超过了1GHz。在未来的5年里,集成在单个芯片上的晶体管的数量预计将超过10亿,以从6GHz到10GHz的时钟频率运行。

​ 微处理器的演变,始于1971年,发展到今日的状况,再到未来5年后可能到达的位置,是因为几个贡献性的力量。我们的立场是:这种演变不是恰好发生的,而是演变的每一步都是三件事其一影响的结果,而且其背景总是计算机架构师于三者中做权衡、折衷。这三件事是:1)新需求;2)瓶颈;3)好运气。我将它们统称为演变的动力。

​ 这篇文章尝试从三个方面展开:描述微处理器领域的一个基本框架,展示自第一台微处理器问世后的三十年里的重大发展,最后,提出一些新事物,有望于在未来的5年内看到发生在高性能微处理器上的新事物。

关键词——计算机体系结构,微体系结构,微处理器, 微处理器设计,微处理器进化。

Ⅰ. 基本框架

A. 计算机体系结构:折衷(权衡)的科学

​ 计算机体系结构,与其说是“科学”,不如说是“艺术”。随着阅历的增长,我们的能力和洞察力都有所提升。计算机架构师会借鉴以往的设计经验来对当前项目做出决策。如果说计算机体系结构是一门科学,那么它是一门关于权衡的科学。在过去的半个世纪里,计算机架构师一直在学习钻研基础知识,以帮助他们能够实践他们的工艺。 计算机架构师的工作几乎总是需要使用这些基础知识来进行权衡,尤其在微处理器的整个发展过程中,亦是如此。

image

​ 图1 现代微处理器

B. 抽象变换的层次结构

​ 晶体管的数量以及其开关时间是工艺技术所提供的资源。(以上为直译,个人理解为:集成在单个芯片上的晶体管的数量和晶体管的开关时间由加工技术决定。)我们将这些资源用于什么则取决于市场的需求。 我们如何使用这些资源就是微处理器的全部意义所在(个人理解为:根据市场需求,而后使用这些资源来制造微处理器,也就是需求和资源的一种折衷)。 图1展示了抽象变换的层次结构,一个用自然语言描述的问题如英语,必须通过这几层的抽象变换(根据问题,求解算法,选择适当算法编写程序,然后高级语言程序翻译成机器语言程序,再到微程序解释机器语言程序,最后硬件执行微指令,再到底层的电路,最后是最底层的电子,也就高低电平变换01变换,也就是电子)最终才能得以解决。在现实中,是电子运动做动解决了问题。然而,我们并不会在实际中说“电子”,同时“电子”也不会说任何自然语言,我们能做的最好的事情就是通过图1所示的层次结构系统地来转换问题,直到到达电子(或着说设备)层,这一层也就是集成了2亿个集体管,时钟频率为1GHz的芯片。

​ 在这个过程中,问题的解决方案首先被用算法的形式来明确阐述以致消除自然语言的一些不可接受的特性,如歧义性。然后用机器语言对其编码并编译为特定微处理器的指令集架构(ISA)。ISA是一致商定的接口:1)编译后的程序用来告诉微处理器该程序需要做什么;2)微处理器用来知道它必须代表程序执行什么。ISA由一组硬件结构实现,其被统称为微处理器的微体系架构。每个硬件结构以及之间的相互连接均由电子数字电路组成,而电子数字电路又由电子设备组成。

​ 当我们今天讨论微处理器时,我们通常是指图1的阴影部分。每个微处理器由电路组成,电路实现了硬件结构(统称为微体系架构),其提供了一个面向软件的接口(被称为ISA)。在个人计算机中,ISA一般是IA-32,个人电脑的ISA是IA-32,微架构是Intel的Pentium IV,或者是早期的Pentium III、Pentium II、Pentium Pro、486等等,或者AMD的K-8, 或者为更早的K-7、K-6 等。

​ 还有一些其他的ISA:例如SPARC(来自Sun Microsystems),Alpha(来自Compaq),以及Power-PC(来自Motorola and IBM)。每种ISA都有其自己的特性来为编译器提供更好或更坏的接口,或者说微体系架构跟好或更坏地执行工作。对于每个ISA,都有多个不同的微体系架构。 我们已经提到了IA-32 的几个微架构。 于Alpha而言, 有 21064、21164 和 21264。

​ 在层次结构的每一步中,从算法的选择到语言,到ISA 到微体系结构,到电路,都有选择,因此就有权衡。

​ 人们通常在更高的性能和更低的价格之间做选择,但并非总是如此。举一个汽车的类比可能更有启发性。可以制造一台高性能跑车,其可以在几乎0秒内从0英里/小时加速到 100 英里/小时。但是其造价会非常高。或者,可以制造一辆非常便宜的汽车,它的时速永远无法达到 100 英里/小时,但每加仑汽油可以行驶 100 英里。性能和经济性不可兼得。这就是权衡。

C. 设计要点

​ 微处理器的设计就是做相关的权衡(折衷)。我们将微处理器设计中的这组考虑因素以及每个考虑因素相关重要性成为微处理器的“设计要点”–也就是说,于微处理器用途而言最重要的特性,以至于较少关注于其他特性。性能、成本、散热和功耗是强烈影响设计点的特性的示例。另一个示例是“高可用性”——设计一个微处理器时其中考虑最多的就是这个微处理器永远不会出故障。如果可以确保微处理器永远不会出现故障,一些客户愿意接受更低的性能或更高的价格。我们将这种处理器称为“容错”或高可用性的。

​ 其他客户则愿意为节能、续航牺牲一部分性能,随着最高性能芯片的功率和能耗越来越大,大得令人无法接受,这个设计要点愈发重要。这就存在一个最高性能与功耗意识的权衡。

​ 值得一提的是,“功耗意识”与另一个重要的设计要点“低功耗”不同,在许多应用中,首先考虑的是微处理器消耗非常少量的能源但能长时间运行。

D. 应用空间

图1中“问题”一词是应用空间的统称,或者说我们希望使用微处理器的一组应用程序。应用程序的数量正在以惊人的速度增加,而且预计未来仍会保持增长的趋势。实际上,只要人们期望计算机的用途更加广泛(或者说计算机能实现更多功能),则对于微处理器的需求和权衡将会持续扩大。也就是说,应用空间(或更准确说,具有核心重要性的应用)驱动着这个设计要点。我们前面那已经提到了高可用性处理器,其中应用程序要求微处理器永远不出故障,以及在低功耗处理器中,应用程序必须能够消耗少量能量而能长时间运行。

​ 持续驱动独特设计要点需求的应用空间的其他示例如下:

1. 科学应用,例如,计算控制核电站,决定开采石油的位置,预测天气;
2. 基于事务的应用程序,例如办理ATM转账和电子商务业务;
3. 业务数据处理应用程序,例如处理库存控制、工资、IRS活动和各种个人记录的应用程序,无论这些个人是雇员、学生还是选民;
4. 网络应用,例如高速路由的互联网数据包,使你的家庭系统连接利用互联网;
5. 有保证的交付(即实时)应用程序,要求在某个关键期限之前得到计算结果;
6. 嵌入式应用程序,其中处理器是更大系统的一个组件,用于解决(通常)专用应用程序;
7. 解码视频和音频文件等媒体应用程序;
8. 桌面用户希望在自己的电脑上运行的随机软件包。

每个应用领域都有其特点,与其他领域大不同。每个应用领域都要求做不同的权衡、折衷来设计微处理器来满足其完成工作。

E. 基本处理

​ 微处理器处理执行指令,简单地说,有三个步骤:1)向处理器核心提供指令,让每条指令都能完成它的工作;2)提供每条指令所需的数据;3)执行每条指令。

F. 指令供给

在提供指令的早期阶段,一次取一条指令,解码并发送到内核进行处理。 随着时间的流逝,一次能取到指令的数量已经从一个增加到了四个,而且很可能不久就增长到六或八。 有三个因素会妨碍为内核充分提供待处理的指令:指令缓存未命中、获取中断和条件分支错误预测。 当对指令缓存不命中时,指令的供应量下降到零,直到高速缓存未命中得到解决。 当被提取的指令是一个已采取的分支时,则会发生提取中断,这使得在同一周期中提取的所有后续指令都变得无用,与问题宽度无关。 条件分支错误预测意味着自错误预测分支以来取出的所有指令都是无用且浪费了资源,并且必须在执行正确的指令路径继续之前将其丢弃。

G. 数据供给

为了提供一条指令所需的数据,人们需要能够在接近0的时间内(尽可能的快)以合理的成本(成本和速度的折衷)无限地提供所需数据。实际数据存储器无法满足这三个要求。 我们能做的最好的是一个存储层次结构,其中可以在一到三个周期内访问少量数据(在芯片上),在十到十六个周期内可以访问更多数据(也在芯片上), 并且可以在数百个周期内访问更多数据(片外)。 结果是实际数据存储器受到取出特定数据元素的时延和将该数据元素从其在存储层次结构中的位置移动到需要它的处理器核心所必需的带宽的二者的制约。

尽管这种片外延迟在今天依旧很糟糕,而这种情况一直在变得更差。 处理器的指令周期时间(这里联系上文中的处理器,这里的周期应该为指令周期——CPU每取出并执行一条指令所需要的时间,是从取指令、分析指令到执行完指令所需的全部时间。)的改进一直在增长,,且比内存周期时间快得多的速度增长。 几年后,我们希望看到对内存的片外数据访问需要数千个处理器周期。

H. 指令处理

为了执行这些指令所需的操作,需要足够数量的功能单元来在数据可用时立即处理数据,并且需要足够的互连以将一个功能单元产生的结果立即提供给需要它的功能单元 来源。 然而,足够的互连是不够的。 随着片上周期时间的减少,将芯片某一部分的功能单元所产生的结果转发到芯片其他部分的功能单元,在这个功能单元中结果是源操作数的一部分,其所需的延迟会变得更糟。

Ⅱ. 演变的动力

许多因素促进了微处理器的发展:消费者愿意购买供应商生产的产品——如果没有市场,我们早就回家了。 工程师解决问题的创造性——没有解决方案,就没有更新演化。

我认为这些事情是次要的,强制性的功能(我称之为演变的动力)是新的需求、瓶颈和幸运。

A. 动力 Ⅰ:新的需求

早期的微处理器将处理限制为在每个周期内取指、译码,并将其及其数据转发到内核中的功能单元进行处理。但对于更高性能的需求来说,每个周期获取一条指令是远远不够的。 结果是宽发射微处理器(wide-issue microprocessor),其中取指机制允许在每个时钟周期内取指、译码和转发多条指令到执行核心。

另一个例子,也是由于对高性能的要求,需要同时处理多条指令。 如果只有一个 ALU,则一次只能做一个 ADD。 其结果是目前在一个执行核心中集成了多个功能单元。

今天,普遍的新需求涉及功耗,或称为功耗感知计算。 要求是提供与先前设计相同水平的计算机性能,同时功率小于先前设计所需功率。 请注意,这与嵌入式处理器的低功耗要求不同,后者在一段时间内一直是一个重要的设计要点。

有很多人认为未来的新需求将涉及人机交互界面,随着计算机/人机交互变得越来越普遍,人机界面需要越来越多的关注。

B. 动力 Ⅱ:瓶颈

我们已经在上面确定了指令处理的三个组成部分(取指、取数和执行指令的操作),以及每个组成部分的含义。 到目前为止,微处理器的大部分改进都是为了消除阻碍这三个组件完成工作的瓶颈。

例如,取指需要在每个周期取一定数量的指令——今天是四个——指令。 如果这些指令存储在内存中,那么获取的时间会太长。 瓶颈是缓慢的访存。 因此,发明了指令缓存。

如果硬件有能力获取四条指令,但第二条指令是条件分支,则只能获取两条指令,而不是四条指令。 由条件分支引起的瓶颈是指令按照编译器生成的顺序排列,而不是指令执行的(动态)顺序。 最近添加到 Pentium IV 的新功能是跟踪缓存,它按照最近执行的顺序而不是编译器编译的(静态的)顺序来存储指令。

最后,如果每个周期都提供指令(取指),则在遇到分支时会出现问题,因为尚不确定是否满足条件而采取分支转移,有可能转移,也有可能不转移。可以等待得出指令的执行结果,先暂时停止指令的获取,直到确定是否满足条件,(即确定该指令的下一条指令)。 通过引入分支预测器突破了这个瓶颈,它猜测是否应该采用分支,并根据这个猜测立即取指。

C. 动力 Ⅲ:好运气

当某些事情导致意外收获时,这就是幸运,然后其意外收获可被用于为微处理器提供额外的功能。 这方面的一个很好的例子是技术收缩,它允许微处理器的下一代实现比以前的实现占用更少的芯片空间。 由于旧设计所需的空间更少,因此可以有更多空间用于做其他事情。 以这种方式引入微处理器的其他两个例子是 1980 年代中期的片上浮点加速器和 1990 年代后期在片上添加的多媒体指令扩展功能。

Ⅲ. 演变历程:从1971到今天

微处理器已经从 Intel 4004 的简单 2300 个晶体管发展到今天的样子。这种演变是源于几个原因,正如上面所述。 其结果是今天的 Pentium IV 与 1971 年的 Intel 4004 几乎没有相似之处。

这种演变的一些例子如下。

A. 流水线

早期的微处理器在开始处理下一条指令之前,处理一条指令要经历取指到指令休止。流水线,最晚自 1960 年代以来就在大型计算机中出现,是解决该性能瓶颈的重要方案。 具有商业利益(商用)的微处理器(例如 Intel 8086)在 1970 年代后期通过在执行当前指令时预取出下一条指令,向流水线迈出了第一步。

片内缓存稍微些才出现在微处理器中。 从片外存储器取指令和数据到片内处理元件的时延太大。解决方案是:片内缓存。 1984 年,第一个具有片上缓存的商业可行(商业)微处理器是摩托罗拉 MC68020。 在具有流水线技术的处理器中,能够在同一周期内取指令和取数据,而不是争用一个端口到缓存读取,突破了瓶颈,这是很有用的。1986 年,摩托罗拉的 MC68030 是第一批包含独立的片内的指令和数据缓存的微处理器。

缓存要么速度快要么容量大,不能两者兼得。因为缓存必须很快,那么它的容量不得不很小,从而导致缓存未命中率过大。 高速缓存未命中的问题是片外为解决未命中的延迟太大。解决方案是:芯片上有两级缓存,因此较快、容量小的一级缓存中的未命中可以通过容量较大、速度较慢的二级缓存来解决,这仍然比片外快得多。 直到 1994 年左右Alpha 21164 问世,这个技术才出现在微处理器上。今天,几乎所有的高性能微处理器都有两级缓存。

C. 分支预测

如果条件分支产生流水线停顿,等待处理分支条件且执行完分支指令,则失去了流水线的优势。 硬件(运行时)分支预测器直到 1990 年代初才在微处理器芯片上实现。早期,一些引入运行时分支预测器的微处理器是摩托罗拉的 MC88110、Digital 的 Alpha 21064 和英特尔的 Pentium。

D. 片内浮点单元

早期的微处理器有一个单独的芯片来处理浮点运算。 随着晶体管越来越小,芯片越来越大,通过利用“新”的空闲容量并节省不必要的片外通信,芯片上集成的晶体管数目达到了可以将浮点单元与主处理单元放在同一芯片上的程度。 摩托罗拉 MC88100 和英特尔 486 是 80 年代后期在主处理器芯片上集成浮点单元的两款早期芯片。

E. 其余专业功能单元

早期的微处理器只有一个或很少的功能单元。 随着芯片上晶体管数量的增多,人们也认识到可以通过利用多个功能单元来并发执行。 首先添加了诸如单独处理 ALUs之类的功能单元。 然后,更复杂的加载/存储功能单元其包含写缓冲区、未命中未决队列和处理内存消歧机制等,成为 1990 年代通用微处理器芯片的一部分。1986 年,英特尔的 I860 是首批拥有多个专用功能单元之一,除了浮点加法和乘法单元之外,还有一个单元用于辅助图形处理。

F. 乱序执行

程序员/编译器和微体系结构之间的契约要求指令必须按照翻译程序指定的顺序执行。而这就导致了一个瓶颈:如果当前指令因需要其后续指令为他提供其开始执行所需的全部内容,而不能执行,则会阻止其他指令执行。(简而言之,就是当前指令需要后续指令为其提供数据才能开始执行,那么当前数据不能执行,因为只有执行了当前指令,才能执行后续指令,就陷入了一个死锁)

自 1960 年代中期以来, 就已经提出这一瓶颈的机制,即乱序处理,例如,IBM 360/91。然而,该机制仅限于高性能科学计算,同时在高性能计算中,能够处理精确异常并不是重要需求。然而目前几乎所有制造商都认可IEEE 浮点标准,这表明处理精确异常并非不是重要需求。 尽管如此,虽然乱序执行已在大型机上使用了 35 年,但直到在1990 年代中期,它与精确异常处理的结合使用才在微处理器上首次出现。

为了适应乱序执行,微处理器调整了早期大型机上使用的寄存器别名和执行部件中的驻留站 。为了做到这一点,微处理器必须能区分指令执行和指令退出。指令在它们的执行所需资源(数据和功能单元)可用时才被允许执行,独立于它们在程序中的顺序,但被迫以它们在执行程序中出现的相同顺序退出。也就是说,内部微架构可以乱序执行指令,但必须按照指令在执行程序中出现的顺序报告执行结果(即改变计算的永久状态)。如果要实现这样功能,则需要一个能在异常情况下恢复状态的机制。这种状态恢复机制在当今大多数微处理器上通常表现为重新排序缓冲区,在少数微处理器上表现为检查点退休结构。尽管其他微处理器更早地出现了无序执行的情况,但第一个充分实现这一机制的是 1995 年的 Pentium Pro。

G. 集群

单芯片尺寸继续增大,特征尺寸继续减小,片内频率继续增大。 结果是芯片一角上的功能单元得到的值不能在片间传输,从而不能在下一个周期内中于芯片对角上的功能单元为源操作数使用。 解决方案——将执行核心划分为集群,以便在大多数情况下,一个集群中的功能单元产生的结果将被同一集群中的另一个功能单元使用。 但仍然存在不知道将特定指令引导到哪个集群取执行的问题,但是如果成功,原来因一个执行结果必须经芯片的主要部分传输而需要多个周期的不正常延迟消失。 此功能在 1990 年代后期首次出现在 Alpha 21264 上。

H. 芯片多处理器

芯片日益丰富的另一种用途(更多的晶体管,与更快的工作频率相结合)是将芯片划分为多个区域,每个区域使用相同的处理器。 该范例被称为 CMP,用于芯片多处理器。 对于易于划分为独立指令流的任务,其中需要指令流之间的大量通信,CMP 是一种有用的范例。 它提供了发生在片内的处理器间通信的额外好处,其中这种通信比片外通信快得多。 IBM 于 2000 年实现了此功能,其 G4 芯片上有两个处理器。

I. 同步多线程

当指令高速缓存访问出现未命中时,指令供应会受到影响。 在等待缓存命中时浪费了大量容量。 Burton Smith 在 1978 年 [3] 建议使用该空闲容量从其他指令流中获取指令。 这个概念首先在他的 Donelcor HEP 上实现。 这个概念直到 1990 年代才在微处理器世界中亮相,在微处理器中,它被扩展为允许在交替周期中从交替的单个指令流中取指,但基于所需数据的可用性,在同一周期中同时从所有指令流中执行 取指。第一个实现此功能的微处理器是 2000 年的 Pentium IV。

J.更快的内核

在密集型计算任务中,等待较早执行指令产生的结果为源操作数的数据依赖可能是一个重要的瓶颈。 一个解决方案是——以比微处理器其他部分快得多的频率运行执行核心。 2000 年推出的 Pentium IV 芯片的工作频率为 1.7 GHz,但 ALU 的工作频率为 3.4 GHz。

Ⅳ. 十亿晶体管芯片的未来

正如我们所说,在当前的十年内,工艺技术有望在单个芯片上集成 10 亿个晶体管,并以 6 至 10 GHz 的频率运行。 那么我们将如何利用所有这些能力?

今天的计算机架构师并不认同。 有些人主张扩展我们上面描述的 CMP 理念。 论据是,如果有 10 亿个晶体管,我们可以在单个芯片上集成 100 个微处理器,每个处理器由 1000 万个晶体管组成。 该论点进一步指出,一个 1000 万晶体管处理器仍然非常庞大,建造任何比这更大的东西只会适得其反,导致更大的收益递减。

其他人则是建议扩大使用同步多线程。 他们认为 CMP 所需的许多资源可以在单个处理器 SMT 芯片上共享,从而将节省的资源释放给其他功能,例如更大的缓存、更好的分支预测器、更多功能单元等

而包括本文作者在内的一些人指出,虽然 SMT 在共享资源方面肯定比 CMP 有所改进,但在加快大多数重要的非科学基准测试方面,它们都存在不足。 原因:这些基准测试中的大多数都有令人失望的特性,re: SMT,由单个指令流组成。 一个非常昂贵的芯片应该解决多计算机网络无法解决的问题,这个计算机网络由许多更小更便宜的芯片组成的。这一观点主张使用所有的10亿个晶体管来生产一个非常高性能的单处理器。

还有一些人抱怨说,由于 CAD 工具已经无法准确验证我们当前的芯片,所以设计更复杂的芯片是不负责任的。 他们提倡一个非常简单的核心处理器,其有较大容量的片上缓存。

那些以成本为中心(这是一个非常不同的设计要点)的厂商认识到,更高水平的集成可以生产出更便宜的产品,并建议使用10亿个晶体管,将整个非激进的系统放在一个芯片上。

这些都是可供选择的建议,我推测它们中的每一个都会在未来十年内出现在某些产品中。我个人的偏好是使用十亿个晶体管来发展最高性能的单处理器,以处理单指令流应用。推动这一发展的因素和以前一样:新的需求、瓶颈和好运。以下是我们可能会看到的一些想法。

A. 新微处理器

到目前为止,微处理器的设计方式如图1所示。但是为什么这样做呢?如果我们把我们的抽象变换层次并把算法和语言包含在微处理器中,那么微处理器就变成了使用 器件工艺来解决问题的东西。参见图2。为什么不能为解决应用空间中的某一点,而设计一个微处理器,在这个微处理其中,将解决该问题所需的专用算法嵌入到微处理器中,为什么这样实现是不合理的呢?我们今天在低成本的嵌入式应用程序中这样实现。但为什么不能在可接受的高成本的有高性能要求的机器中实现呢呢?

这种定做可以采用以下讨论的可重构逻辑的形式,ISA中的特殊专用指令,或者芯片上提供的集成功能单元(如DSP引擎。

image

​ 图2 未来的微处理器

B. 新的数据路径

片内的时钟频率有望于到达很高以至于必须认真考虑芯片上任何信号线的长度。有些信号需要多个周期才能在芯片完成传输。必须仔细检查哪些信号可以这样做。大多数信号可能都不行。 这就产生了挑战:根据线长的新限制重新设计数据路径。

C. 内部容错

片内的时钟频率提升的另一个后果是对软错误的敏感性——由于材料的物理特性,在有望实现的如此高的时钟频率下运行,这些错误将间歇性地和不频繁地出现。未来的微处理器将必须提供在这些软错误发生时进行检查和纠正的功能。

D. 异步和同步单元共存

时钟脉冲相位差(查阅资料:时钟脉冲相位差是指同时产生的两个时钟信号,到达接收端的时间不同步。)已经成为一个严重的问题。在时钟频率为 6 GHz 时,情况会更糟糕。 诚然,异步结构更难设计,但它们确实解决了所有部件都要同步的全局时钟的问题。这一点非常重要,值得我们应对设计困难这一挑战。我的期望是,我们将看到一些部件在一段固定的时间内异步运行(以时钟周期衡量),之后它们与全局时钟同步。 不同的部件需要不同的时间来进行异步操作,以解决其独特的时钟脉冲相位差问题。

E. 不同功能的不等周期时间

对于那些同步运行的部件,没有必要它们都以芯片的额定频率运行。例如,不需要以高速运行的部件可以设计成以慢速运行,从而节省电力。未来的晶体管预算可以提供巨大的灵活性,以适当地满足片上需求的可变性。

ALU以处理核上其余部分运行频率的两倍运行,这只是冰山一角。 未来的微处理器可以智能地使用时钟,在需要的地方提高速度,在不需要的地方降低速度,在速度根本不重要的地方可以非常慢。

F. 新材料

我不知道这些材料从何而来,但摩尔定律仍然适用,尽管每五年左右就会出现一些末日论者来宣告它的消亡。 关键的重要材料要与芯片上的导电性相比,更重要的是,与功率要求和散热相比(关键材料要关注导电性、功率、散热)。 因此,本着纯粹的一厢情愿的精神,我希望工程的独创性再次占上风。 (即,有新材料的出现实现更好的性能)。

G. 微程序的扩展使用

片外带宽十分昂贵,片上带宽十分充足。 我的期望是:我们将更有效地利用片上带宽。 微程序的扩展使用是实现这一点的一种方法。 例如,微程序可以利用处于主指令流从属地位的未充分利用的功能单元的空闲容量。 我们创造了术语:从属同步微线程 (SSMT) 来反映其在 SMT 机器中的作用 [4]。 这些微程序可以执行动态重新编译、计算一些复合指令、调整缓存替换策略,或者以其他方式执行计算,使主指令流执行得更快。

H. 可重构逻辑

与图2一致,我希望未来的许多微处理器能够满足特定应用的要求。一个应用程序可以很好地利用一些对其他应用程序无用的逻辑功能,而另一个应用程序可以很好地利用另一个对第一个应用程序无用的逻辑功能。也许这两个应用程序都可以在具有运行时动态调整能力的微处理器有效运行。也就是说,我认为片上结构(可能是低粒度FPGA,但更可能是高粒度可重构逻辑结构)将是未来微处理器的通用结构。

I. 集锦

最后,我列出了我希望在 2008 年或 2009 年的高性能微处理器中实现的功能的清单,或者是无论何时工艺技术最终使得我们可在单个心片上集成了 10 亿个晶体管。

  1. 跟踪缓存的扩展使用,其中动态指令流段每个条目将包含远远超过8条指令,可能在编译器的帮助下预先安排(类似于块结构ISA或重放机制),但在运行时进行优化。
  2. 片内微程序,其用于使用执行核心的空闲容量来调整片上硬件结构。
  3. 执行程序的动态重新编译,可能由填充单元执行,或者片上微程序实现,这将会十分常见。
  4. 多个(至少三个)级别的缓存以及相应的ISA的 添加(多个预取和后存储指令)以响应内核对数据的需求 ,将数据移近内核并远离内核。
  5. 激进的价值预测硬件,可能是程序级别的预测,以及有相应的编译器优化以帮助其有效性。
  6. 性能监控硬件,其允许在运行时调整硬件以更有效地与执行程序的需求相匹配。
  7. 一种用于监控和影响芯片能源使用的片上部件

Ⅴ. 总结

自 1971 年问世以来,微处理器经历了一段激动人心的历程。很少有技术可以夸耀它取得的巨大进步。 不幸的是,有些人会争辩说这个黄金时代即将结束。 但这样的反对者以前也有过。 1986年,他们说MIPS R2000是所有人需要的微处理器,十年后,他们说Intel Pentium Pro 是任何人都需要的微处理器。 该行业将会继续发展得很好,享用该技术的用户能继续“更好地”享用这种技术。

这并不是说这样的情况会一成不变,不再需要新的独创性。在下层,我们可能需要底层结构发生彻底的根本的变化,比如量子计算,来拯救我们,但我们现在几乎没有受到限制。

当然,我们需要开发更好的 CAD 工具。 当前的 CAD 工具无法验证当今的微处理器,更不用说本文中的建议了。 而且,我们确实需要更广泛地思考微处理器的概念(例如,图 2)。但底线是,摩尔定律仍然存在,并且仍然提供了大量的机会。

致谢

这篇导论脱胎于多年来与以前和现在的学生以及同事的许多互动交流。 也感谢S. J. Patel、R. Belgard 和 R. R. Ronen 对本文的评论和批评。 值得一提的是,Ronen 和他在英特尔的同事 [5] 的一篇论文中提供了对这里涉及的许多问题的出色以及更详细的回答,本文作者向读者推荐该论文。

参考文献

  • [1] H. Mazor, “The history of the microcomputer-invention and evolution,”
    Proc. IEEE, vol. 83, pp. 1601–1608, Dec. 1995.
  • [2] Intel web site [Online]. Available: http://www.intel.com/pressroom/kits/quickrefyr.htm#1971.
  • [3] B. Smith, “A pipelined, shared resource MIMD computer,” in Proc.
    1978 Int. Conf. Parallel Processing, Aug. 1978, pp. 6–8.
  • [4] R. S. Chappell, J. Stark, S. P. Kim, S. K. Reinhardt, and Y. N. Patt,
    “Simultaneous subordinate microthreading (SSMT),” in Proc. 26th
    Annu. Int. Symp. Computer Architecture, May 1999, pp. 186–195.
  • [5] R. Ronen, A. Mendelson, K. Lai, S.-L. Lu, F. Pollack, and J. P. Shen,
    “Coming challenges in microarchitecture and architecture,” Proc.
    IEEE, vol. 89, pp. 325–340, Mar. 2001.
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2019-2022 1nvisble
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信