芯片战争-14:如果没有存储器,人类就没有硅文明

​中国半导体产业的思考—随笔之《芯片战争——亮剑!国运之战》

芯片战争14—如果没有存储器,人类就没有硅文明

(混沌之际,1932-1949年)

冯.诺依曼结构明确“存储程序”概念,哈佛结构提出“程序和数据分别存储”的技术要求,这为存储器这一计算机工业时代最伟大的发明指明前进道路。从磁鼓存储器到磁芯存储器,再到半导体存储器DRAM,人类社会的硅周期之文明时代就此拉开了历史的画卷。

第一章 混沌之际

第十二节:如果没有存储器,人类就没有硅文明

在没有存储器的时代,人们修改程序的时候就是通过“插拔零件”进行的,这就使得程序修改工作变得极为复杂和繁琐,进而极大程度的制约了现代电子计算机的向前发展。

当我们今天享受着各种各样的软件应用程序所带来的不同体验、各种便利,以及通过各种应用程序接触着外部世界多姿多彩的信息时代之时,我们需要清醒的记得,如果没有存储器这一计算机工业的最伟大发明,那么也就没有了今天移动互联网时代的一切。

这不是危言耸听,我们再次回溯历史,看看存储器这一概念又是如何提出的,又将如何改变了人类社会的“硅文明”时代。

早期的科学家们对通用型计算机的追求,从图灵机到冯.诺依曼,再到哈佛结构,存储器应运而生。

随笔在前文中谈到,大众情人—ENIAC大型计算机是全球第一台数字计算机,并且是全球第一台“电子多用途功能和能力”的数字式计算机。这里的电子多用途功能和能力的计算机如何理解?最简答的理解就是通用型计算机。

相比于更早期的ABC计算机的最大进步之处就在于ENIAC是一台通用型计算机,因此,当它1946年7月正式交付给美国军方时,虽然二战已经结束,但是ENIAC仍可在其它方面发挥着巨大威力。虽然研制它的初衷是计算炮弹的弹道表,但是它的第一次实际应用,并不是计算弹道表,而是应用于研制氢弹的科学计算方面。

通用型计算机得概念最早源自于英国数学家查尔斯.巴贝奇(Charles Babbage)。1922年,巴贝奇花了十年时间完成了他的第一台“差分机”的制造。但在研制第二代“差分机”和功能更为强大的“分析机”的过程中,巴贝奇耗尽了所有财富和精力,都未能成功制造出一台可运行的样机,最后郁郁而终。

尽管巴贝奇的“分析机”未能最终完成,但在他的设计中首次提出了通用计算机的概念和逻辑结构,因此巴贝奇一直被视为计算机的理念先驱。

巴贝奇关于通用计算机的思想在那时倍受嘲讽,唯一能真正理解他思想的恐怕就只有他的妻子Ada了。Ada是诗人拜伦的女儿,同时也是一位数学天才。Ada比巴贝奇小24岁,巴贝奇晚年时已讲不出话,关于“分析机”的文字材料几乎都由Ada替他完成。Ada与她父亲拜伦一样,死于36岁。后来,美国国防部研制的计算机语言ADA,就是为了纪念这位伟大的女性。

巴贝奇之后,计算机时代最杰出的天才—图灵提出了“图灵机

”,可以说,这才是现代通用型计算机的最原始的理论模型。

图:图灵机的模型

本质上,图灵机是图灵构想出来的一台虚拟“计算机”,逻辑结构上图灵机有四个部分组成:

第一是纸带,一个无限长的存储带,带子由一个个连续的存储格子组成,每个格子可以存储一个数字或符号,纸带被划分为一个个小格子,每格格子上面有一个符号。符号数量是有限的,但是纸带是无限长。

第二是读写头,读写头可以在存储带上左右移动,并可以读取、修改存储格上的数字或符号。

第三是内部状态寄存器,该存储器可以记录图灵机的当前状态,并且有一种特殊状态为停机状态。

第四是控制器,它根据读写头读出的符号来确定读写头下一步的动作,并改变状态寄存器的值。也即是说控制器就是控制程序指令,指令可以根据当前状态以及当前读写头所指的格子上的符号来确定读写头下一步的动作(左移还是右移),并改变状态存储器的值,令机器进入一个新的状态或保持状态不变。

通用图灵机,其实是一种特殊的图灵机,它可以模拟任意图灵机的指令序列。现代电子计算机本质上就是一种通用图灵机的模拟。随笔在此之所以说是模拟,是因为现实中的计算机的存储器的容量都是有限的,不会有“无限长的纸带”。

图灵机之后,随着现代电子计算机研制工作的推进,冯.诺依曼体系结构和哈佛结构分别得到了提出,并反过来极大的推动了全球现代电子计算机的向前发展。

冯.诺依曼体系结构(von Neumann architecture),也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的电脑设计概念结构。冯.诺依曼体系结构描述的是一种实际上通用图灵机的计算装置,以及一种相对于平行计算的序列式结构参考模型(referential model)。

冯.诺依曼体系结构结构中明确了将储存装置(存储器)与中央处理器(CPU)分开的设计理念,因此冯.诺依曼结构设计出的计算机又称储存程序型计算机,可以说,现代的通用计算机的研究工作又得以向前迈进了一大步。

图:冯.诺依曼体系结构(on Neumann architecture)示意图

最早的计算机器仅有内涵固定用途的程式,现代的某些计算机依然维持这样的设计方式,通常是为了简化或教育之目的。例如一个计算器仅有固定的数学计算程式,它不能拿来当作文书处理软件,更不能拿来玩游戏。若想要改变此机器的程式,必须更改线路、更改结构甚至重新设计此机器。当然最早的计算机并没有设计的那个可编程化。当时所谓的“重写程式”很可能指的是纸笔设计程式步骤,接着制订工程细节,再施工将机器的电路配线或结构改变。

而储存程式型电脑的概念改变了这一切。借由创造一组指令集结构,并将所谓的运算转化成一串程式指令的执行细节,让此机器更有弹性。借着将指令当成一种特别型态的静态资料,一台储存程式型电脑可轻易改变其程式,并在程控下改变其运算内容。可以说,冯·诺伊曼结构与储存程式型电脑是互相通用的名词。

储存程式型概念也可让程式执行时自我修改程式的运算内容。这一概念的设计动机之一就是可让程式自行增加内容或改变程式指令的内存位置,因为早期的设计都要使用者手动修改。但随着索引暂存器与间接位置存取变成硬件结构的必备机制后,这一功能就不如以往重要了。而程式自我修改这项特色也被现代程式设计所放弃,因为它会造成理解与除错的难度,且现代中央处理器的管线与快取机制会让此功能效率降低。

从整体而言,将指令当成资料的概念使得组合语言、编译器与其他自动编程工具得以实现,可以用这些“自动编程的程式”,以人类较易理解的方式编写程式。从局部来看,强调I/O的机器,例如Bitblt,想要修改画面上的图样,以往是认为若没有客制化硬件就办不到。但之后显示这些功能可以借由“执行中编译”技术而有效达到。

此结构当然有所缺陷,除了下列讲述的冯·诺伊曼瓶颈之外,修改程式最主要的问题就是程序设计的问题,无论是有意还是无意的设计错误。在一个简单的储存程式型电脑上,一个设计不良的程式可能会伤害自己、其他程式甚或是操作系统,导致当机,这就对于程序员提出了更高的要求。

缓冲区溢位就是一个典型例子,而创造或更改其他程式的能力也导致了恶意软件的出现。利用缓冲区溢位,一个恶意程式可以覆盖呼叫堆栈(Call stack)并覆写程式码,并且修改其他程式档案以造成连锁破坏。内存保护机制及其他形式的存取控制可以保护意外或恶意的程式码更动。

总而言之,冯.诺依曼结构的最大贡献就是“存储程序”这一概念的提出,紧随其后的则是哈佛结构,可以说,哈佛结构是今天桌面互联网和移动互利网时代的最主要的标准结构。

哈佛结构(Harvardarchitecture),是一种将程序指令储存和数据储存分开的存储器结构。中央处理器首先到程序指令储存器中读取程序指令内容,解码后得到数据地址,再到相应的数据储存器中读取数据,并进行下一步的操作(通常是执行)。程序指令储存和数据储存分开,数据和指令的储存可以同时进行,可以使指令和数据有不同的数据宽度,比如曾经享誉全球的Microchip公司的PIC16系列芯片的程序指令是14位宽度,而数据是8位宽度。Microchip公司的PIC16系列芯片,随笔后文会为小伙伴们讲述之。

哈佛结构的微处理器通常具有较高的执行效率。其程序指令和数据指令分开组织和储存的,执行时可以预先读取下一条指令。目前使用哈佛结构的中央处理器和微控制器有很多,除了上面提到的Microchip公司的PIC系列芯片,还有早期摩托罗拉公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列和ARM公司的ARM9、ARM10和ARM11等等芯片系列。

虽然,哈佛结构是一种将程式资料与普通资料分开储存的设计概念,但是,它并未完全突破冯.诺伊曼架构。

图:哈佛结构示意图

从巴贝奇的分析机,到图灵机,到ENIAC大型数字计算机,到并行结构的旋风计算机,再到冯.诺依曼结构、哈佛结构,我们可以清晰的看到一条主线,那就是通用型计算机的逐步发展和演进的过程

透过通用型计算机技术演进,我们可以进一步深刻的揭开现代数字式电子计算机最为核心的一个伟大的设想“存储程序”,在这一概念的指导之下,存储器的研制,特别是读取速度更快,存储容量更大的存储器的研制就成为了全球计算机工业的发展历史进程大事件。

通过上文的叙述,我们可以清楚的看到,冯.诺依曼结构到哈佛结构的演进过程成为了全球计算机工业发展历史进程中的一个关键节点,在此,随笔为您进一步揭开冯.诺依曼结构曾经尘封的历史往事,以及充分展现了现代电子计算机发展缩影的马克计算机。

尘封的往事—“101页报告”,冯.诺依曼结构提出的来由。

第二次世界大战期间,冯.诺依曼参与了美国秘密研究原子弹的曼哈顿计划。一直从事纯理论研究的冯.诺依曼深深感觉到,即使只是为了得到定性的结果,单靠解析研究已经远远不够,必须辅之以数值计算。而进行手工计算或使用台式计算器所需化费的时间是令人难以容忍的,洛斯阿拉莫斯国家实验室尽管已聘请大量的“Woman Computer”不分昼夜地进行计算,还是无法满足需要。这种困境与戈德斯坦中尉在弹道实验室所遇到的问题如出一辙。

巧合的是,冯.诺依曼与戈德斯坦这两位本没有什么交集的人,竟在1944年夏天,在马里兰州的一个火车站有了一段美丽的“邂逅”。戈德斯坦战前是密歇根大学的数学教授,他当然认识大名鼎鼎的冯.诺依曼。他主动上前与冯.诺依曼打招呼,尤如粉丝见到偶像一般,戈德斯坦兴奋地向冯.诺依曼表达了滔滔不绝的敬仰之情。

真正的大师都是非常“nice”的,两人就在站台随意的攀谈了起来。戈德斯坦此时正在负责ENIAC建造项目,他趁着这难得的机会向眼前这位数学泰斗请教了一系列关于数字计算机的问题。冯.诺依曼是何许人物,渐渐地他从谈话中敏感地觉察到戈德斯坦正在进行某个关于计算机的研究项目,于是他反过来连珠炮式地向戈德斯坦提出一连串问题。戈德斯坦后来回忆说,冯.诺依曼拳拳到肉的提问令他觉得比博士论文答辩时还要恐怖。

当得知冯.诺依曼是“自己人”后,戈德斯坦向他透露了正在制造中的ENIAC的详细情况,并希望他能给予指导。也在为研制核弹过程中的巨量运算而感到头痛不已冯.诺依曼欣然答应了戈德斯坦的请求,几天之后,他来到了摩尔学院。

在摩尔学院,冯.诺依曼看到了正在全力赶制中的ENIAC。在静静也听完了总工程师埃克特的大致介绍后,诺依曼立即询问了ENIAC的逻辑架构。埃克特与戈德斯坦相视一笑。原来在诺依曼到来之前,埃克特就曾对戈德斯坦说过,他能从冯.诺依曼提出的第一个问题,判断出他是否真如传说般厉害。如果诺依曼首先问到的是ENIAC的逻辑架构,那么他真的是个天才,如果他问的是其它问题,恐怕只是徒有虚名而已。

冯.诺依曼提出的第一个问题就戳中了ENIAC在逻辑架构上的“痛点”。由于没有程序存储功能,使得ENIAC在执行不同程序时变得相当麻烦。不过,埃克特自豪地告诉冯.诺依曼,他们已经着手准备开始另一个计算机项目EDVAC(Electronic Discrete variable Automatic Computer,离散变量自动电子计算机)的研制工作。

EDVAC同样是美国陆军军械部弹道研究室与宾夕法尼亚大学合作的电子计算机项目,负责这一项目的,仍然莫契利与埃克特。与ENIAC相比,EDVAC将会采用二进制,并且增加程序存储功能。听罢埃克特的介绍,冯.诺依曼当即对EDVAC产生了浓厚的兴趣,在接下来的几个月时间里,他一有空闲便思考EDVAC,更准确地说是思考现代计算机应该具有怎么样的逻辑结构。

1945年的春天,二战结束前夕,冯.诺依曼起草了一份长达101页的伟大报告——《关于EDVAC的报告草案》,这就是现代计算机发展史上非常著名的“101页报告”。在报告中,冯.诺依曼阐述了“存储程序”的概念和二进制运算原理,并提出计算机应该包括五大组件,即:

A、输入设备:负责输人数据和程序;

B、存储器:负责存储数据和程序;

C、运算器:负责数据处理;

D、控制器:负责程序执行;

E、输出设备:负责输出结果。

当我们回顾历史,不得不感慨万千,“101页报告”影响深远,意义非凡,诺依曼就此成为系统论述电子计算机逻辑结构的第一人。

不过客观地说,报告中的很多观点,冯.诺依曼都不是最早的提出者,例如斯蒂比兹和楚泽的电磁式计算机以及阿塔纳索夫和贝利的ABC计算机,就已采用了二进制原理,而报告中的最大亮点—“存储程序”的概念,不仅德国科学家楚泽早在1936年就提到过,而且莫契利、埃克特在研制ENIAC时也曾经提及过,并希望能在EDVAC上实现。

然而不知道什么原因,戈德斯坦收到这篇报告拿去刊印的时候,却只署了冯.诺依曼一个人的名字。这也成为莫契利后来与戈德斯坦和冯.诺依曼关系交恶的重要原因。尽管事后冯.诺依曼坦承这并非他一个人的思想,但历史最终还是不容分说地将这一伟大的计算机结构称为“冯.诺依曼结构”,把利用这种概念和原理设计的电子计算机系统统称为“冯.诺依曼型”计算机。

图:101页的《关于EDVAC的报告草案》,由摩尔学院在1945年6月30日油印出版,署名只有冯.诺依曼一人

从数字计算机发展之初,冯.诺依曼体系结构就占据着主导地位。直到今天,我们绝大多计算机仍然属于“冯.诺依曼型”计算机,顶多只是对其作了一些改进而已,并没有从根本上突破冯.诺依曼体系结构,直到今天的第四次硅含量提升周期。

近年来,随着计算机应用范围的不断扩大,对计算机运算速度的要求也越来越高,冯.诺依曼体系一些局限性也开始逐渐显现出来,因而开始发展出并行计算机结构、数据流计算机结构等“非冯.诺依曼体系结构”。这些新的体系结构,虽有其先进性,但在依旧强大的冯.诺依曼体系面前,目前还都只能被划为“非主流”,并未有得到实际广泛的应用。

需要说明的是,随着最近人工智能AI为代表的第四次硅含量提升周期的兴起,“非冯体系结构”逐渐成为了全球科学界和工业界研究的重点,并且在“非冯体系结构”中存储器的功能和能力得到更进一步的加强和提高。

EDVAC是第一台依照冯.诺依曼体系结构建造的计算机,1949年8月交付使用。EDVAC最终研制费用与ENIAC一样,达到50万美金。性能方面EDVAC大大优于ENIAC,其中最大的改进当然就是采用了“存储程序”和“二进制”。不过,交付使用后的EDVAC却发现存在一系列的问题,因此直到1951年才最终投入正式运行。而之所以出了那么多问题,拖了那么长时间,其中一个重要的原因就是冯.诺依曼、莫契利、埃克特、戈德斯坦、伯克斯等人都先后离开了EDVAC项目组。

冯.诺依曼虽然是EDVAC项目组的顾问,但在完成了“101页报告”后,他就回到洛斯阿拉莫斯国家实验室,全身心投入到原子弹研制的最后冲刺阶段。战后,冯.诺依曼预感到美苏两个超级大国之间的对抗已不可避免,而要在这场对抗中占得优势,一是要继续发展核武器,以取得绝对优势的核威慑力量;而另一个关键是则是发展大型计算机。诺依曼决定回普林斯顿,促使美国高等研究院(IAS)开展电子计算机的研制工作。

图:冯.诺依曼与IAS计算机,计算机下方一排圆筒状的物体为威廉姆斯管存储器

高等研究院缺少实践型的人才,为此冯.诺依曼向戈德斯坦、伯克斯和埃克特发出邀请,希望他们可以来高等研究院主持计算机的研制工作。戈德斯坦与伯克斯二话不说,立马追随冯.诺依曼而去。

但埃克特拒绝了,因为冯.诺依曼没有邀请莫契利。此时的莫契利在摩尔学院已成为极不受待见的人物了,在别人眼里,莫契利傲慢自大、不懂礼貌,喜欢指手划脚却又无真才实学。没人喜欢和莫契利相处,除了埃克特。埃克特始终认为,莫契利对他有知遇之恩。如果不是莫契利,他一个连硕士学位都还没拿到手的毛头小子,是无论如何也不能有今天的成就的。因此,不管别人怎么看待莫契利,他都会一直追随着莫契利。

图:EDVAC计算机,第一台冯.诺依曼结构的计算机

EDVAC计算机是由:运算器、控制器、存储器、输入装置、输出装置五个基本部分组成,是第一台冯.诺依曼结构的计算机。1949年8月交付使用,1951年正式开始运行,其后几经硬件升级,一直正常运行到1961年。

我们再看看艾肯博士主导的马克(Mark)计算机的研制,可以说,马克计算机以及相应的系列产品上,完整的展现了现代计算机以及存储器从无到有的发展历程。或者说,马克计算机就是这一时期现代计算机工业和存储器行业的发展之缩影。

尘封往事—艾肯博士和马克计算机,早期现代计算机工业和存储器行业的发展之缩影。

在IBM公司雄厚资金的支持下,艾肯博士负责的Mark I计算机成功研制。随后,在1946到1952年间,艾肯博士带领着“小伙伴们”一口气推出了Mark Ⅱ、Mark Ⅲ、Mark Ⅳ三款产品。

Mark Ⅱ计算机采用了高速电磁式继电器,乘法运算速度比Mark I要快上8倍。

Mark Ⅲ计算机则开始采用了电子管技术,属于半电子半机电式的计算机,而存储器部分则使用了磁鼓存储器。Mark Ⅲ是程序存储计算机,不过却不属于冯.诺依曼体系结构,Mark Ⅲ的程序指令存储和数据存储是分开的,也即是采用了“哈佛结构”(Harvard architecture)。

图:1950年1月,时代杂志封面上的Mark III

1950年1月的美国时代杂志封面,漫画化的Mark III是一个戴着海军帽的独眼军官,两只机械臂正在操作着电传打字机。下面的配图文字为:Mark III Can man build a superman?

Mark Ⅳ计算机,1952年推出,它同样是一台“哈佛结构”的计算机,同是也是艾肯设计的第一台电子计算机。Mark Ⅳ使用了中国人王安设计磁芯存储器,成为最早使用磁芯存储器的计算机。

图:Mark Ⅳ计算机上使用的磁芯存储器,中国人王安所发明

在现代电子计算机发展历史上,艾肯博士占据着非常重要的一席之地。

图:艾肯博士

从1939到1952,从Mark I到Mark Ⅳ,艾肯由一个初出茅庐的大叔级博士毕业生变成了当时计算机领域最瞩目的实力派明星。不过,艾肯对于计算机技术发展所作出的贡献,并不仅仅在于此。在随笔看来,艾肯对于推广计算机技术、培养计算机人才方面所作的贡献,要远远胜于马克系列计算机的研制。

1946年,艾肯从海军退役,在哈佛大学创立了计算机实验室,并担任实验室的主任。在艾肯的领导下,哈佛计算机实验室成为当时美国领先的计算机技术研究中心和人才培训基地。此外,艾肯还在哈佛大学率先开设了“大型数学计算机”这一课程,随后又引入了计算机研究生课程,使得哈佛大学成为了最早授予计算机硕士和博士学位的大学。

艾肯本人带出了15名博士生,还有一批在研制Mark系列计算机时的助手,后来,这些人如同蒲公英种子一般分散各处,并且大都成为了日后全球计算机技术领域的“大宗师”。

冯.诺依曼结构以报告的形式明确提出了“存储程序”的概念,而哈佛结构则更进一步的提出了程序指令和数据指令分别存储的技术要求,可以说,这更进一步的为存储器这一计算机工业时代最伟大的发明的提出指明了前进的道路。从磁鼓存储器到磁芯存储器,从磁芯存储器到今天的半导体存储器DRAM,人类社会的硅含量提升周期之文明时代就此拉开了精彩纷呈的历史的画卷。

感谢您一直以来、长期持续关注《中国半导体产业的思考——随笔》和《芯片战争——亮剑!国运之战》相关系列报告以及敬请您持续关注后续系列!

注1:本文部分图表、数据等引用于互联网、公司公告等;

注2:本文相关专利信息和说明等引用于互联网以及国家相关专利机构等;

注3:本文相关公司信息、产品等引用于互联网,外媒、公司公告等;

注4:本文相关行业数据、产业信息等来自国家统计局、工信部等。