从算盘到芯片
回顾20世纪之前
自古以来,人们为了简化数学计数,绞尽脑汁发明了很多精巧工具和机器。
在人类社会早期,人们借助数字这种工具来帮助自己记录物品和财产。从古希腊以及美洲土著文化中,借助小卵石或者谷粒进行计数。在欧洲,演化为计数板,在中东,演变成由骨架和算珠组成的算盘(abacus)。
苏格兰数学家约翰·纳皮尔(John Napier,1550-1617)为了简化乘法操作,发明了对数。两个数乘积可以简单地表示为其对数之和。因此,要得到两个数的乘积,可以采取一下步骤:首先在对数表中查出这两个数的值,然后将其值相加,最后在对数表中逆向搜寻出其乘积。
在随后的4000年时间里,爱德蒙·甘特(Edmund Cunter,1581-1626)发明了一种带对数刻度的滑尺久负盛名。威廉·奥特雷德(William Oughtred,1574-1660)对其进行了改进。
纳皮尔发明了另外一种由可在骨头,牛角,象牙上德数字条组成德乘法辅助器,称为纳皮儿骨架(Napier’s Bones).在1620年左右,威廉·斯奇尔(Wilhelm Schickard,1952-1653)制造出了最早德机械计数器,它类似于已经初步具备了自动功能德纳皮儿骨架。
同一时期,布莱兹·帕斯卡(Blaise Pascal,1623-1662)和哥特福瑞德·武赫勒姆·范·莱布尼茨(Gottfried Wilhelm von Leibniz,1646-1716)发明了机械计算器。但是他德进位机制禁止进行减法运算,在进行减法运算时,采用德是加上9的补数的方式(在第13章中介绍过)。
直到19世纪后半叶,真正意义上的机械计算器才得以出现并为人们所使用。
约瑟夫·玛丽·雅卡尔(Joseph Marie Jacquard,1752-1834)发明的一种奇妙的自动织布机对计算的历史产生深远的影响。雅卡尔织布机(大约1801年出现)使用打孔的金属卡片(很像钢琴上面的金属卡片)控制织物上的图案。雅卡尔使用了大约1万张卡片完成了一幅杰作,那就是用黑白线织成的自画像。
在18世纪(直到20世界40年代),这个用天上星辰进行航海导航的时期,经常要用到对数表和三角函数表。英国数学家查尔斯·巴贝芝(Charles Babbage,1791-1871)设计了解析机(Analytical Engine)。解析机是19世纪最接近计算机的器件,在巴贝芝设计中,解析机包含一个存储部件和(类似于现代存储器的概念)和一个运算部件(类似于算术逻辑单元)。
解析机最令人着迷的地方在于,可以使用改造的雅卡尔织布机中得卡片来编程。正如奥古斯塔·艾伦·拜伦(Augusta Ada Byron,1815-1852),对解析机得评价:“我们可以肯定地说,正如雅卡尔提花织布机织出了花瓣和树叶,解析机编织出了代数得结构模型。”
巴贝芝大概是第一个意识到条件跳转在计算机中最重要得人,并且提出超前的自动化观念。
计算史上另一个转折源于美国每10年一次的人口普查。赫尔曼·霍尔瑞斯(Herman Hollerith,1860-1929)参考雅卡尔织布机使用卡片,通过将人口特征按特定编码以打孔的形式标记在卡片上记录数据。为了便于数据统计分析,霍尔瑞斯发明了制表机和分类机。
在1890年人口普查中霍尔瑞斯使用这种自动化计数的取得了令人瞩目的成就。他总共加工处理了超过6200万张卡片,数据是1880年的2倍,时间却只用了后者的三分之一。1896年,他创办了制表机公司,租借并出售其穿孔卡片设备。到1991年,由于公司合并,制表机公司更名为计算制表记录公司。再到1915年,托马斯·J·华盛顿(Thomas J. Watson,1874-1959)成为该公司的总裁,他在1924年将公司的名字更改为国际商业机器公诉(International Business Machines Corporation),即IBM。
进入到20世纪之前,让我们重新审视一下19世纪这一百年。因为主题所限,本书更多关注的是数字性质的发明,其中包括电报,盲人用点字法,巴贝芝机器,以及霍尔瑞斯卡片。而在与数字概念以及相关设备打交道时,你会发现整个世界皆为数字。但是19世纪的发现和发明确切的来讲不是数字的。实际上,通过感官所认识的大自然只有很少一部分是数字的,更多的时候表现为不可分割的整体。
20世纪的计算机
尽管霍尔瑞斯在他的制表机以及分类机中使用了继电器(relays),但是人们直到20世界30年代中期才开始用继电器来构建计算机——它们最终被叫做机电(electromechanical)计算机。在这些机器中使用的继电器不同于一般的电报继电器。
20世纪70年代这种继电式计算机依靠微处理器进行计算。需要特别说明的是,早期的计算机内部不是使用二进制数。
我们的继电式计算机与早期计算机存在另一个不同点是存储方面。程序是存储在一些物理媒介上面,例如带穿孔的纸带。
下面按照时间顺序进行介绍,第一台继电式计算机由康拉德·楚泽(Conrad Zuse,1910-1995)制造,1935年还是工科学生的他在其父母位于柏林的家中制造了这台机器。这台机器使用了二进制数。楚泽使用老式35mm电影胶片进行穿孔,然后在上面编制程序。
1937年,贝尔电话实验室(Bell Telephone Laboratories)的乔治·史提必兹(George Stibitz,1904-1995)将一对电话继电器带回了家中,并在厨房的桌子上连接了一个1位加法器,后来他妻子将其称为K机器(K是厨房“kitchen”的头一个字母),这个实验促使了1939年贝尔实验室中复数计算机的诞生。
同一时期,哈佛大学研究生霍华德·艾肯(Howard Aiken,1900-1973)要寻找做一个大量的重复计算的方法,而正是他的这一需求促使哈佛大学与IBM合作,并最终在1943年创造出一台自动连续可控计算机(Automated Sequence Controlled Calculator,ASCC),也就是闻名于世的Harvard Mark I。这是第一台可以打印表格的数字计算机。Mark II是最大的继电式计算机,使用了13000个继电器。哈佛大学计算机实验室当时的主任是艾肯,也正是他讲授了计算机科学的第一次课。
对于构造计算机来说,即使安琪不是最完美的设备,因为它们是机械性的,利用金属片的弯曲和伸直状态进行工作,而频繁的工作可能导致其断裂,另外如果接触点之前有泥垢或者卡住纸屑,也会导致继电器实效。1947年发生了一件著名的事故,人们从Mark II计算机的一个继电器中发现了一只飞蛾。格雷斯·莫瑞·赫柏(Grace Murray Hopper,1906-1992)注明这件事为“第一个被发现的有生命的bug”。
真空管(vacuum tube)是一种可以替代继电器的元件,它是由约翰·安布罗斯·弗莱明(John Ambrose Fleming,1849-1945)和李·德·福雷斯特(Lee de Forest,1873-1961)在进行无线电通信连接研究时开发出来德。到20世纪40年代,真空管已经被广泛应用于放大电话信号。
真空管可以连接成与,或,与非和非门,这一点非常像继电器。逻辑门是由继电器还是真空管来制造德并不重要。利用逻辑门集成加法器,选择器,译码器,触发器和计数器。前面几章的基于继电器的器件在当继电器被换成真空管时仍然可用。
在20世纪40年代初,真空管开始在新的计算机中替换继电器。直到1945年,晶体管制成,正如继电器机器称为机电式计算机,真空管则是第一台电子计算机的基础。
1937年,艾伦·M·图灵(1912—1954)首先提出了“计算能力”的概念,用以分析计算机可以做到和不能做到的事。他构思出现在称为图灵机的计算机抽象模型。图灵写的第二篇著名论文的主题是人工智能,他介绍了一个测试机器智能的方法,现在称作图灵测试法。
约翰·冯·诺依曼(1903—1957)在1946年与ArthurW.Burks和HermanH.Goldstine合写的论文《PreliminaryDiscussionofthelogicalDesignofanElectronicComputinginstrumert》中,他描述了有关计算机的几点功能。计算机内部应该使用二进制数。计算机应该具有尽可能大的存储器,当程序执行时,这个存储器可用来存储程序代码和数据。指令应该在存储器中顺序存放并用程序计数器来寻址,但也应该允许条件跳转。这种设计思想叫做存储程序概念。
这种设计思想是重要的革命化的一步,今天称为冯·诺依曼体系结构,上一章建造的计算机就是典型的冯·诺依曼机器。但冯·诺依曼体系结构也带来冯·诺依曼瓶颈,冯·诺依曼型机器需要花费大量的时间从存储器中取出指令来准备执行。应该还记得第17章最后设计的计算机取指令的时间占整个指令周期的3/4。
在冯·诺依曼时代,用真空管构建存储器是不值得的,因而人们使用一些古怪的方法来解决这个问题。一个成功的方法就是水银延迟线存储器,它使用5英尺长的水银管子。在管子的一端,每隔1微秒向水银发一个小脉冲。这些脉冲需要1毫秒的时间到达管子的另一端(此时,它们像声波一样会被检测到,然后送回到开始的地方),因此每个水银管可存储大约1024位信息。
直到20世纪50年代中期,磁芯存储器才开发出来。这种存储器由大量的环绕着电线的电磁金属环组成,每个小环保存1位信息。当时老程序员经常把由处理器访问的存储器称为磁芯。
在20世纪40年代,冯·诺依曼并不是唯一一个对计算机的本质进行概念上思考的人。
克劳德·香农(1916年出生)是另外一个有着重大影响的思想家。第11章曾经提到他1938年的硕士论文,论文中确立了开关,继电器和布尔代数之间的关系。1948年,当他在贝尔电话实验室工作时,他在《BellSystemTechnicalJournal》上发表了一篇题为《AMathematicalTheoryofCommunication》的论文,其中不仅引入了“位”的概念,而且确立了一个现代称为“信息理论”的研究领域。信息理论涉及在噪声(经常阻碍信息信息传送)存在的情况下传送数字信息以及如何进行信息补偿等问题。1949年,他写了第一篇关于编写让计算机下棋的程序的文章;1952年他涉及了通过继电器控制的机械老鼠,这个老鼠可以在迷宫中记住路径。香农同时也因为他会骑独轮车,玩变戏法而在贝尔实验室很出名。
NorbertWiener(1894-1964)18岁时就在哈佛大学取得了数学博士学位,因《Cybernetics,orControlandCommunicationintheAnimalandMacbine》(1948)一书而闻名于世。他首次使用控制论(Cybernetics)这个词来表示一种把人及动物的生物活动与计算机及机器人的机理联系起来的理论。在现代文化里,广泛使用cyber-前缀表示与计算机相关的东西。更特别的是,成千上万的计算机通过因特网进行的互连称作cyberspace(信息空间),这个词来自科幻小说作家WilliamGibson1984年的小说《Neuromancer》中的词cyberpunk。
1948年,Eckert-Mauchly计算机公司(RemingtonRand公司的后继者)开始开发第一台商用计算机UNIVAC(universalautomaticcomputer),并于1951年完成。第一台被送往人口普查局。UNIVAC的首次网络应用是用于CBS,用来预测1952年的总统选举结果。WalterCronkite称它为“电脑”。同样是在1952年,IBM发布了它的第一个商用计算机系统,即701。
从此,开始了社团和政府使用计算机的漫长历史。然而,之所以对这段历史感兴趣可能是因为我们要追踪另一段历史轨迹—即降低计算机造价和大小并且使它进入家庭的轨迹,它开始于1947年一场几乎不被人注意的电子技术突破。
晶体管的发展史
贝尔电话实验室许多年里都是这样一个地方:聪明的人可以在此做他感兴趣的任何事。所幸的是,他们之中有人对计算机感兴趣,如已经提到的GeorgeStibitz和ClaudeShannon,他们在贝尔实验室工作的时候都为早期的计算机作出了突出的贡献。后来,在20世纪70年代,贝尔实验室诞生了很有影响的操作系统UNIX和程序设计语言C语言,这些在随后的几章里将要讲到。
1925年1月1日,美国电话电报公司正式把它的科学和技术研究部分与商业部分分离,另外建立附属机构,这样贝尔实验室诞生了。贝尔实验室的主要目的是为了研究能够提高电话系统性能的技术。幸运的是,它的要求非常含糊,可以包含所有的事情。但在电话系统中,一个明确的长期的目标是:在线路上传输的声音信号能不失真地放大。
从1912年起,贝尔电话系统就采用了真空管放大器,大量的研究和工程人员着手提高电话系统使用的真空管的性能。尽管这样,真空管仍然有许多问题。管子体积大,功耗大且最终会烧毁。不过,在当时却是唯一的选择。
1947年12月16日,当贝尔实验室的两个物理学家JohnBardeen(1908—1991)和WalterBrattain(1902—1987)在装配一个不同类型的放大器时,所有的一切都改变了。这种新型放大器由锗片—一种称作半导体的元素—和一条金箔构成。一个星期后,他们给他们的上司WilliamShockley(1910—1989)进行了演示。这就是第一个晶体管,一种被人们称为20世纪最伟大的发明的器件。
晶体管不是凭空产生的。8年前,即1939年12月29日,Shockley在笔记本写下:“今天我想用半导体而不是真空管做放大器在原理上是可能的。”第一个晶体管被发明以后,随后许多年它继续被完善。1956年,Shockley、Bardeen和Brattain获得诺贝尔物理学奖—“因为他们在半导体上的研究并且发明了晶体管。”
锗和硅元素(还有一些化合物)称为半导体,并不是因为它们的导电性是导体的一半,而是因为它们的导电性可以用多种方法来控制。半导体最外层有4个电子,是最外层所能容纳电子最大数目的一半。在纯半导体中,原子彼此非常稳固地结合在一起,具有与金刚石相似的晶状结构。这种半导体不是好的导体。
但是半导体可以掺杂,意思是与某种杂质相混合。半导体很容易与其他杂质结合而变得不纯。有一类杂质为原子的结合提供额外的电子,这种半导体叫N型半导体(N表示negative);另一种类型的杂质掺杂生成P型半导体。
两个N型半导体中夹一个P型半导体可制成方法起,称为NPN晶体管,对应的三部分分别是集电极(Collector),基极(Base)和发射极(Emitter)。
下面是一个NPN晶体管的示意图。
在基极上施加微小的电压就可以控制非常大的电压从集电极到发射极。如果在基极上没有施加电压,那么晶体管将不起作用。
晶体管通常封装在直径为四分之一英寸的小金属罐中,并伸出三根金属线,外形如下图所示。
晶体管开创了固态电子器件的时代,即指晶体管不再需要真空而是使用固体制造,尤其是使用半导体以及当今最为常见的硅来制造。除了体积必真空管更小,晶体管需要的电量更小,产生的热量更少,而且持久耐用。
然而,晶体管的第一个商业应用是助听器。为了纪念贝尔一生为聋人的贡献,AT&T公司允许助听器生产厂家不用付任何专利权税就可使用晶体管技术。第一台晶体管电视机出现于1960年,而今天,电子管器件几乎已消失了。(然而,并未完全消失,一些高保真发烧友及电子吉他手还是喜欢用电子管放大器来放大声音而不是用晶体管。)
1956年,Shockley离开贝尔实验室成立Shockley半导体实验室。他迁到加利福尼亚的PaloAlto—他的成长之地。他的公司是那里成立的第一家从事这种工作的公司。后来,其他半导体及计算机公司也在那儿建立了业务,于是旧金山南部的这个地方也就成为现在非正式地称作硅谷(SiliconValley)的地方。
开发真空管的最初目的是为了放大电信号,但是它同样可以应用在逻辑门的开关上,作用与晶体管一样。下面你将看到非常类似于继电器形式的由晶体管构造的与门。只有当A和B输入同时为1时晶体管才可以导通电流,从而输出1.电阻的作用是预防短路。
按照下图右边的方式连接两个晶体管可以组成一个或门。在与门中,上端晶体管的发射极连接下端晶体管的集电极。在或门中,两个晶体管的集电极都与电压源连接,两个发射极互相连接。
使用继电器构造逻辑门以及其他不见的方法对于晶体管同样是有效的。继电器,真空管以及晶体管最初都是为了开发放大器设计的,但是通过相似方式连接可以组成逻辑门,而计算机则是由这些部件构成的。1956年诞生了第一台晶体管计算机。
集成电路的发展
这里有一个问题:晶体管肯定可以使计算机更加可靠,体积更小以及需要的电量更少,但晶体管可以使计算机的结构变得更简单吗?
答案是否定的。虽然晶体管使得在一个小空间里能安装更多的逻辑门,但你还得担心这些组件的互连。连接晶体管形成逻辑门像连接继电器和真空电子管一样困难,某种程度上,它甚至更困难,因为晶体管较小,不容易掌握。如果想用晶体管建造第17章所建造的计算机及64KB的RAM阵列,设计工作中的一部分将是设法发明某种能容纳所有组件的结构。这些劳动是乏味的,需要在数百万晶体管之间建立起数百万连接。
可是,我们发现晶体管的某些祝贺具有特定功能,可以重复利用。一对晶体管可以连接成门,而门常常可以连接成振荡器,加法器,选择器,或译码器,触发器再组成多位锁存器或RAM阵列。如果晶体管事先能连接成通用的结构,那么组装一台计算机就容易多了。
这种设想由英国物理学家杰里佛(Geoffrey Dummer,生于1909年)在1952年5月的一次演讲中提出,他说:“我希望展望未来”,接下来他提出了一下观点:
“随着晶体管的出现以及半导体研究的广泛开展,现在也许可以设想将来会出现不采用连线而是由固体块组成的电子设备。”这种固体块可能由绝缘层,导体层,整流层以及放大层组成,将不同层次的隔离区连接起来即可实现电子功能。”
在对Dummer的预言毫不知情的情况下,1958年7月,德克萨斯仪器公司的JackKilby(生于1923年)想到了在一个硅片上造出许多晶体管、电阻及其他电子组件的方法。6个月以后,即1959年1月,RobertNoyce(1927—1990)也找到了基本上相同的方法。Noyce原先曾为Shockley半导体实验室工作过,但在1957年,他和其他7位科学家离开实验室并成立了Fairchild(仙童)半导体公司。在技术史上,同时产生的发明很普遍,可能超出了你的想像。尽管Kilby比Noyce早6个月发明了这项技术,并且德克萨斯仪器公司比仙童公司也早申请专利,但Noyce还是首先获得了专利。法律上的争斗随之而来,但仅过了10年,问题就得到了令他们都满意的解决。尽管他们从未在一起工作过,但Kildy和Noyce被认为是集成电路,或称IC,更普遍的是叫芯片的共同发明者。
集成电路需要经过非常复杂的工艺流程才可以制造出来,包括将硅片分层,然后非常精确地渗入杂质以及蚀刻形成微小部件。开发一种新的集成电路尽管很昂贵,但可以大量生产中获得效益——产能越大,价格越便宜。
实际的硅晶片薄且很脆弱,为了保护芯片并提供某种方法使芯片中的部件与别的芯片连接,芯片必须安全地封装。集成电路的封装有几种不同的方式,但通常多采用矩形塑料双排直插式封装(或dualinlinepackage,DIP),有14、16或40个管脚从旁边伸出:
上图是一个有16个管脚的芯片。将芯片上的凹槽朝左放置(如图),用1到16对管脚进行编号,从左下角开始,环绕到右端,依次为1~16,16号管脚位于左边最上端。管脚之间的距离正好是1/10英寸。
20世纪60年代,空间项目和军备竞赛刺激了早期的集成电路市场。在民用方面,第一个包含有集成电路的商业产品是1964年由Zenith出售的助听器。1971年,德克萨斯仪器公司开始出售第一批袖珍计算器,同时Pulsar出售了第一块数字表(显然数字手表中集成电路的封装完全不同于刚才图示的例子)。随后出现了其他很多种包含有集成电路的产品。
1965年,戈登·E·摩尔(当时在仙童公司,后来是Intel公司的合伙创始人)注意到技术以这样一种方式在发展:1959年后,可以集成到一块芯片上的晶体管的数目每年都翻一番。他预测这种趋势将继续下去。事实上后来这种趋势放慢了些,因此摩尔定律(最终这样命名)修改为预计每18个月在一个芯片上集成的晶体管数量将增长一倍。这仍是一个令人惊异的增长速度,这也就解释了为什么家用电脑只用了短短几年好像就已过时了。一些人认为摩尔定律将继续适用到2015年。
20世纪70年代中期集成电路(IC,芯片)的发展
本章的剩余部分以及下一章,我们将时间停留在20世纪70年代中期,此时特大规模集成电路(very-large-scale integration),即VLSI,由5000到50000逻辑门组成,正处于萌芽阶段。那时,人们使用几种不同的技术来制造集成电路的组件。那时每一种技术被称为一个IC家族,到20世纪70年代中期,有两个“家族”盛行开来:TTL和CMOS。
TTL
TTL代表transistor-transistor logic(晶体管-晶体管逻辑)。20世纪70年代中期,如果你身为一名数字电路设计师(即用IC来设计大的电路),一本1.25英寸厚的、德克萨斯仪器公司于1973年出版的名为《TheTTLDataBookforDesignEngineer》(TTL工程师设计数据手册)的书(以下简称《TTL数据手册》)就会是你书桌上的常客。这是一本关于德克萨斯仪器公司和其他公司出售的TTL集成电路7400系列的完整的参考书,之所以这样称呼是因为该家族的每个集成电路都以开头是74的数字标识。
7400系列中的每一个集成电路都是由以特定方式连接的预留逻辑门组成。一些芯片提供简单的预留的逻辑门,设计者可以用它们来组成更大规模的组件;另外一些芯片则提供通用组件,例如:触发器,加法器,选择器以及解码器。
7400系列中第一个集成电路标号即为7400,在《TTL数据手册》中这样描述它——“四个双输入正与非门”。这意味着这个特殊的集成电路包含四个双输入与非门。“正”与非门则是指1对应为有电压,而0对应没有电压。下图是一个14管脚的芯片,数据手册中的一张小图显示了管脚对应的输入与输出。
上图这张图为芯片的俯视图(管脚在下面),小凹槽位于左边。
14号管脚标注为VCC,与符号V一样,用来代表电压(顺便会说一下,大写字母V的双下标代表电压源。下标的字母C指晶体管的电压输入端,即集电极,collector)。7号管脚标注的GND代表接地(ground)。在特定电路中使用的所有集成电路都必须有接电源端与接地端。
拿TTL7400系列来说,VCC值必须介于4.75和5.25V之间。换句话讲,电压必须在5V±5%的范围内。若电压低于4.75V时,芯片将无法工作。而高于5.25V时,芯片将被烧坏。即便有一个5V的电池,那也不能用来对TTL进行供电,因为电池的电压不可能刚好适合这些芯片。通常情况下,TTL需要从墙上接入电源。
7400芯片中每一个与非门有两个输入端和一个输出端,且相互独立工作。上一章中已经区分了输入为1(有电压)或者为0(无电压)的情况。实际上,与非门的输入端电压可以为0V(接地)到5V(VCC)范围内的任一值。TTL中,当电压介于0~0.8V任一值则可以认为是逻辑“0”,而介于2~5V则可以认为是逻辑“1”。0.8~2V范围的电压输入则应当尽量避免。
TTL的典型输出是以0.2V表示逻辑“0”,以3.4V表示逻辑“1”。考虑到电压值不稳定,有时会有一些波动,集成电路的输入和输出端有时不用“0”和“1”表示,而是用“低”和“高”表示。此外,有时候低电压可以表示逻辑“1”,而高电压则可以表示逻辑“0”,这种配置称为“负逻辑”。7400芯片被称为“四个双输入正与非门”,而这里的“正”则代表了上述所讲的正逻辑。
若果TTL的典型输出0.2V代表逻辑“0”,而3.4V代表逻辑“1”,那么这个输出电压确实是输入允许的范围内,即逻辑“0”为0~0.8V,且逻辑“1”为2~5V,这就是TTL可以隔离噪声的原因。逻辑“1”输出的电压哪怕下降1.4V也仍可以作为逻辑“1”的高电压输入,同样的,逻辑“0”输出的电压哪怕升高0.6V也仍可以作为逻辑“0”的低电压输入。
影响一个集成电路性能的最重要因素可以认为是传播时间(propagation time),也就是输入端发生彼岸花引起输出端发生相应变化所需要的时间。
7400芯片中与非门的传播时间应该保证小于22ns。
然而,纳秒使计算机成为可能。迅速地完成这些操作是计算机能完成任何实际工作的唯一原因。
继续阅读《TTL数据手册》会发现书中很多熟悉的小条目。7402芯片有4个双输入或非门,7404芯片有6个反相器,7408芯片有4个双输入与门,7432芯片有4个双输入或门,以及7403芯片有8输入与非门,如下图所示。
缩写Nc表示无连接(no connection)。
7474芯片是另一个较为熟悉的芯片。它是一个“带预置和清零的双D型正边沿触发器”,如下图所示。
!{](https://github.com/arcticlion/reading-lists/blob/master/Code/Chapter%2018%20From%20Abaci%20to%20Chips/屏幕快照%202014-10-07%20上午3.20.46.png)
《TTL数据手册》中甚至还囊括了这个芯片中每个触发器的逻辑图。
继续阅读《TTL数据手册》会发现,7483芯片是一个4位二进制全加法器,74151是一个8-1的数据选择器,74154芯片是一个4-16的解码器,74161是同步4位二进制计数器,74175是四个带清除功能的D型触发器。你可以选择这些芯片中的两个做一个8位锁存器。
所以现在你该明白从第11章起使用的各种各样的组件是如何来的了,它们都是从《TTL工程师设计数据手册》中得来的。
作为一名数字电路设计工程师,需要花费大量的时间去通读《TTL数据手册》,了解要使用的TTL芯片的类型。一旦掌握了你所需要的工具,你就可以用TTL芯片实际组装第17章所示例的计算机。把芯片连接起来要比连接晶体管容易得多,然而你可能不想用TTL组成64KB的RAM阵列。在1973年的《TTL数据手册》中,所列最大容量的RAM芯片才256×1位,需要2048个这种芯片才能组成64KB的RAM!TTL远不是组织存储器的最好技术,第21章将要更多地谈到关于存储器的事情。
或许你想使用更好一点的振荡器。只要将TTL反相器的输出连接到输入,就会获得一个振荡器,而且其振荡频率更容易计算。这种振荡器使用石英晶体制造相当简单,石英晶体放在带有两个引线的密封小扁罐中。这些石英晶体的振荡频率在一个特定的值,通常情况下是每秒至少振荡一百万个周期,称1兆赫兹,缩写为MHz。如果使用TTL制造第17章中的计算机,那么需要时钟频率为10MHz才可以使其运行良好,每条指令执行时间为400ns。当然,这比使用继电器来做任何我们所构想的事情都要快。
COMS
另一个流行的芯片家族是(现在仍然是)CMOS,它代表由金属氧化物填充的半导体。如果你是70年代中期用CMOS集成电路进行电路设计的业余爱好者,你可能会使用一本由NationalSemicondactor(国家半导体公司)出版的参考书,它在你所在地方的电器行就能见到,书名为《CMOSDatabook》。此书包含了CMOS集成电路4000系列的信息。
TTL供电电压要求在4.75~5.25V范围内。而对于CMOS来说,范围在3~18V内的电压均可,这是非常灵活的。此外,CMOS相比TTL需要更少的能量,这使得用电池运行小型CMOS电路变得可信。CMOS的确定是速度慢,例如,CMOS 4008 4位全加器在5伏电压下只能保证750纳秒的延迟。当电源电压升高时,速度加快——10伏时,延迟为250纳秒;15伏时,延迟为190纳秒。但是CMOS设备不能接近于TTL4位加法器,TTL4位加法器的延迟为24纳秒。(25年前,在TTL的速度和CMOS的低功耗之间的权衡是很清楚的,今天,也有低功耗的TTL和高速率的CMOS。)
在实际应用中,芯片的连接是在一个塑料“面包版”(如下图所示)完成的。
每一个有5个孔的短行在塑料板下是电导通的。你把芯片插在面包板上,并使芯片跨在中间的长槽上,管脚插入槽两边的孔中。集成电路的每一个管脚都与其他4个孔电连接。你可以将线插入其余孔中来连接芯片。
使用一种叫做“钢丝包装”(wire-wrapping)的技术可以使芯片之间连接更加牢固,芯片插入到带有几个长长的方柱的插槽中,如下图所示。
每一个柱子对应于芯片的一个管脚,插座本身也插入打孔的板上。在板的另一边,你会看到特殊的用线缠绕的插槽紧紧包裹着围绕柱子的绝缘线。柱子的方形边缘穿破绝缘层并使它和导线电连接。
如果实际应用中使用集成电路制造一个特定的电路,那可能会用到“印刷电路板”(printed circuit board)。这种电路板上面布满了洞,并且被一层薄铜片覆盖。基本上,可以让防酸物质覆盖铜片上所有你想保护的地方,而使用酸蚀刻剩余的部分,接着就可以将集成电路的插口(或者集成电路本身)直接焊接到电路板上的铜片上。
计算机处理器
Intel4004
到70年代早期,已可以在一块电路板上用集成电路构造一个完整的计算机处理器。把整个处理器做在一块芯片上已只是时间问题。尽管德克萨斯仪器公司1971年为单片计算机申请了专利,但实际的制造荣誉却属于Intel—一家于1968年,由前仙童雇员RobertNoyce和GordonMoore建立的公司。Intel的第一个主要产品是1970年生产的可存储1024位的存储器芯片,在当时这是可做在一块芯片上的最大存储容量。
英特尔在为日本吉康(Busicom)公司生产可编程计算器设计芯片的过程中,决定采取一种不同的方法。正如英特尔工程师特德·霍夫(Ted Hoff)说的:“我想让它成为一个具有通用功能的计算机,进而可以通过编程成为一个计算器,而不是使这个设备成为一i 哥只有一些编程能力的计算器。”这导致了Intel 4004产生,它是第一块“计算机芯片“,或者叫”微处理器“。1971年11月,4004投入使用,它带有2300个晶体管。(根据摩尔定律,18年后微处理器应该有4000倍数量的晶体管,即大约1000万个,这是相当准确的预计。)
有了晶体管的数量,下面将描述4004的其他三个很重要的特性。自4004诞生以来,这三个指标经常用来作为微处理器相互比较的标准。
第一,4004是4位的微处理器。这意味着处理器的数据通路宽度只有4位,做加、减法运算时,它一次只处理4位。相比较,第17章中开发的计算机有8位数据通路,所以它是8位处理器。正如我们将看到的4位微处理器很快就被8位微处理器所超越,没有人会停滞不前。70年代后期,16位微处理器出现了。回想一样第17章的内容,以及在8位处理器上进行两个16位数相加所需要的指令代码,你就会欣赏16位处理器带给你的好处。80年代中期,32位微处理器出现了,并从那以后一直作为家用计算机的主流微处理器。
第二个标准:4004每秒最大时钟频率为10800周期,即108KHz。时钟频率是指连接到微处理器并驱动它运行的振荡器的最大频率,超过此时钟频率,微处理器将不能正常工作。到1999年,家用计算机微处理器的时钟频率已达到500MHz—大约4004运行速率的5000倍。
第三,4004可寻址的存储器是640个字节。这看起来是一个小得可笑的数字,然而这和当时可用的存储芯片的容量是相匹配的。下一章你就会看到,两年内微处理器可达到64KB的寻址空间,这是第17章所提及的机器的容量。到1999年,Intel的微处理器已达64TB的可寻址空间,尽管大多数人家用电脑的RAM容量还低于256MB。
然而,处理器根本的不同是在速度上。同时,速度也是我们为什么使用计算机的一个重要原因。
最大时钟频率(maximum clock speed),也称为主频,是影响处理器速度的决定性因素之一。时钟频率决定了执行一条指令所需要的时间,处理器的数据位宽也影响处理器的速度。并且处理器可寻址存储器的最大空间对处理器速度也是有影响的。
当然,这三个数字都只是初略地显示了微处理器的运行速度。这些数字没有告诉任何有关微处理器内部体系结构或机器码指令的效率和能力的问题。处理器越来越复杂,许多以前用软件来实现的普通工作现在可以用微处理器来实现。我们在后面的各章中可看到这种趋势的一些例子。
回到20世纪70年代中期,先不说4004的局限性,但毕竟它是一个开始。1972年4月,Intel发布了8008—一个8位微处理器,时钟频率为200KHz,可寻址16KB的存储空间。(仅用三个数来总结一个处理器是多么容易。)后来,1974年5月期间,Intel和Motorola公司同时发布了对8008进行改进的微处理器,这两种芯片改变了整个世界。