计算最终将同空气一样随处可得,请看——
麻省理工学院计算机科学实验室从事原始工程(Raw project)的Anant Agarwal与同事正在为氧气工程研制一种全新的微处理器。这种名为原始芯片(Raw chip)的微处理器将提供前所未有的性能(能源效率及成本效益),这归因于它的灵活设计:通过将线路暴露于软件系统面前,以满足在其运行的各种应用程序的需要。
微处理器的不断小型化为原始芯片铺平了道路。1987年,含有约10万只晶体管、执行速度达20MPS(每秒百万条指令)的微处理器可容纳于大约1平方厘米(0.16平方英寸)的硅片上。可到了1997年,具有相同计算功能的微处理器可容纳于仅1毫米见方的芯片上。预计到2007年,20MIPS的微处理器可容纳于仅0.1毫米见方的芯片上,大小为1987年微处理器的万分之一。我们正在跨入一个微处理器所含晶体管以数10亿计算的时代。显然,惊人的机遇就摆在我们面前。
当然,我们也许会与这一机遇失之交臂。一种情况就是继续研攻千篇一律的芯片架构与技术:研制的微处理器只是较如今型号更为复杂的版本。问题在于当前的微处理器架构不具备伸缩性,大多数个人计算机在硬件与软件之间使用一种名为指令集结构(ISA)的接口。ISA中的指令将数据从微处理器上的存储单元传送到功能单元,数据在此进行加、乘或其他运算。譬如说有这样一条指令:“ADD, Register 7,Memory Location 1024,Register 8。”它就指示微处理器将寄存器8与存储单元1024中的内容相加,并把总数存放到寄存器7。但大多数指令集并不把存储单元或者功能单元在芯片上的位置告诉软件,因此当前的微处理器必须用硬件如成组的导线——总线,把每个存储单元与功能单元相连。
晶体管尺寸的不断缩小,使硬件设计人员能尽量把更多的存储单元与功能单元做到每块芯片上。更小的晶体管最终将缩短芯片时钟周期,即执行一次基本运算所需的时间。但由于当前的架构要求芯片导线把每一存储单元与功能单元相连,导线长度仍将与芯片的直径成比例,不会同时钟周期一并减少。数据传输于导线上的时延越来越久,最终将限制芯片的性能。因较长的导线要求较多的能源来转换信号,当前的架构还将导致微处理器能源效率不足。
解决问题的“逻辑门”
一些人可能认为:我们在现有架构的复杂性、速度以及能源效率方面已遇到了一道难以逾越的障碍。每台个人计算机里面都有一块微处理器,但如果想充分利用机器,还得购买几块扩充卡,例如调制解调器卡、图形卡、声卡、数学卡、FM收音机卡和视频卡:等。只是为了插入所有这些专用卡,你就得买一只大机箱。这些卡一旦安装完毕,系统整体就能为不同多媒体应用程序提供足够的性能。
这些专用卡是如何提供所需性能的呢?设计人员极其小心地靠手工把线路做到插卡的定制芯片上,以符合视频、无线电等每个特殊应用程序的需求。硬件专家手工制作导线来符合应用程序的需要,并对电路专门设计,确保导线尽可能短、所有信号在适宜的时候从起始点传到适宜的位置。设计人员在这一工艺上投入了很大精力。
那么怎样才能克服这个影响计算机性能提高的障碍?我们计划通过逻辑门来解决这一问题。逻辑门是一排排晶体管,它控制着微芯片上电流的方向,从而控制着信息流。大约10年后,每块芯片将含有数10亿个逻辑门。芯片设计人员可以通过设计出一种软件编译器,使大量逻辑门传送芯片导线上的信息流改道,利用这种数量优势,无须使芯片制造商为每个应用程序小心布线花去大量时间。我们准备研制一种可自动重新配置导线的处理器和编译器,软件编译器将能够利用人类可阅读的语言如C和Java编制成的应用程序,然后将它们直接映射到芯片中。
这种新的计算模型之所以被称为原始计算,是因为它将芯片上的原始硬件包括导线暴露在软件编译器面前。通过使用大量逻辑门指示及存储传输于芯片导线上的信号,编译器基本上为每个应用程序定制了导线,这与现有架构截然不同。现有架构中的软件只控制芯片的逻辑运算,如加减法等基本功能,却无法控制芯片的线路。相比之下,原始芯片允许软件对导线这一微芯片最宝贵的资源进行编程。
原始芯片的设计非常简单,芯片本身排列有众多晶片。每块晶片与其他所有晶片一模一样,都含有大量存储位置的内存单元以及功能单元。更为重要的. 是,每块晶片都有一个开关,控制着连接相邻晶片的导线。
编译器对所有晶片上的开关进行编程,发出一连申指令,从而确定在芯片运算的每个周期具体由哪组导线连接。这样,编译器与软件系统可通过为每个开关区编程,解决数据如何沿整块芯片传送的问题。针对每个应用程序,定制了的信号重新为芯片布线。
编译器对所有晶片上的开关进行编程,发出一连申指令,从而确定在芯片运算的每个周期具体由哪组导线连接。这样,编译器与软件系统可通过为每个开关区编程,解决数据如何沿整块芯片传送的问题。针对每个应用程序,定制了的信号重新为芯片布线。第一步,编译器应用“流水线技术”设计芯片的线路,不至于因导线长引起时延长。具体方法是在导线上导入存储数据的寄存器,实质上把导线分成了多个段。一条导线经过流水线技术设计后,信号在一个时钟周期内就不必通过整条导线。信号只通过一个段,然后存储于某个寄存器中。因为时钟周期大大缩短,原始架构可大幅度提高时钟频率(芯片每秒完成的周期数量)。到2010年,原始芯片的时钟频率将能达到约10~15吉兆赫兹,而如今的微处理器时钟频率却只有500兆赫兹。虽然在流水线化的导线上传送信号需要多个时钟周期,但许多信号值(每个导线段有一个信号值)将能够同时沿着导线传送。第一个信号值到达目的地后,随后的信号值就到达每个时钟周期的末端,从而加大了导线的吞吐量即传送能力。编译器还试图把信号值故人处理数据功能单元附近的内存单元。这就使信号值从一个位置传送到另一个位置所需周期数量减少。
因芯片导线是一种极重要的资源,用一根导线只连接芯片上的两个位置无疑是浪费。基于这种认识,于是我们对导线段实行了“多路复用”技术,这样可以连接大量的存储单元与功能单元。多路复用技术类似于把几座城市的支路合并成一条超级高速公路。支路接点的信号到达导线段的一端后,用逻辑门制成的多路复用器就可确保在给定时钟周期只有一个信号在线段上传送。编译器对多路复用器编程后,为每个应用程序在适宜的时候选择适宜的信号。正如高速公路的交通流量大于支路,多路复用导线的信号传送能力也要大于普通导线。
最后,编译器通过精确调度信号在最佳路径上传送信号,来满足特定应用程序的需要。因为芯片导线由软件进行编程,我们将其称为软导线。
这种设计的一大优点是,可以把大量数据流如视频或传感器信号直接传送至芯片进行计算的有关部分。数据输入速度加快将使性能与能源效率大为提高。正在研制的原始芯片含有的专门处理数据流的输入/输出引脚将超过1000个,比现今微处理器的同类引脚数量的10倍还多。
功能齐全的通用芯片
原始芯片可容纳执行各种应用程序的单一设备,例如加密、语音识别、游戏或者通信应用程序。我们将这种拟议中的21世纪工具称为Handy 21。用户将来可以对Handy 21说:“嘿,给我变成蜂窝电话。”该设备就会找到适宜的配置软件并下载、配置内部原始芯片的导线,赋予其蜂窝电话的特性。
我现在有一只传呼机,还有蜂窝电话和Palm Pilot。但在不远的将来,可以统统抛掉这些专用装置,只要携有Handy 21,就能下载适宜的配置软件,具有几乎所有通信设备的功能。Handy 21将含有一块原始芯片及几个感知接口:照相机、小型显示屏及包括扬声器与麦克风在内的基于语音的接口。它将使用一根供通信用的天线及模数转换器。转换器将集成于同一块原始芯片上,这样通过定制应用程序将结果径直输入芯片导线,就可以实现如今几乎所有专用硬件具有的功能。
我们小组已经研制出一种编译器,可对应用程序编程,将结果径直输入原始芯片的仿真器。例如,编译了一个软件收音机应用程序,它可以使个人计算机获得类似FM收音机的功能。结果表明,应用程序在原始芯片上的运行速度要比普通微处理器大约快10倍。有一些学生费尽周折在没有编译器的帮助下编译应用程序,结果性能提高了10倍。不过真正的挑战却是研制出这样一种编译器:通过用手工定制芯片的线路以满足应用程序的需要,性能可提高100倍。
如果取得成功,原始芯片也许会成为通用逻辑芯片,从而取代通用微处理器与专用微芯片。
[Scientific American,1999年第8期]