CPU诞生鲜为人知的故事:首款8位CPU并不是Intel的,仅比4004晚了两个月

Stella981
• 阅读 871

发明于1947年的晶体管作为电子放大器和开关,是各种电子设备(从袖珍收音机到仓库规模的超级计算机)的核心部件。其早期版本被称为“双极晶体管”,至今仍在使用。到了20世纪60年代,工程师已经找到了将多个双极晶体管组合成单个集成电路的方法。但由于这些晶体管的复杂结构,集成电路只能包含少量的晶体管。所以,因此,建立在双极集成电路基础上的微型计算机虽然比早期计算机小得多,但仍然需要多块主板和数百个芯片。

CPU诞生鲜为人知的故事:首款8位CPU并不是Intel的,仅比4004晚了两个月

英特尔的4位4004芯片被广泛认为是世界上第一个微处理器。但是,这个头衔不是没有竞争对手。

1960年,出现了一种新型晶体管——金属氧化物半导体(MOS)晶体管。起初,这项技术并没有表现出广阔的前景。但到了1964年,相较于双极集成电路,在MOS 晶体管基础上制作的集成电路拥有更高的密度和更低的生产成本。如摩尔定律所述,集成电路越来越复杂,但如今MOS技术引领了潮流。

20世纪60年代末,单一MOS集成电路包含100个甚至更多逻辑门,每个逻辑门又包含多个晶体管,因此这种技术对于制造计算机特别有吸引力。这些芯片及其诸多组件被称为大规模集成电路(LSI)。

工程师们认识到,随着MOS晶体管的密度越来越大,最终将实现基于单一芯片的计算机处理器。但是由于MOS晶体管的速度要低于双极晶体管,所以,只有当性能要求偏低或设备需要小而轻时(如数据终端、计算器或者航空电子设备),MOS芯片计算机才能发挥作用。因此,正是这些计算应用领域掀起了微处理器革命。

今天,大多数工程师脑中的印象是,这场革命始于1971年英特尔的4位4004芯片,很快英特尔又推出了8位的8008芯片。实际上,微处理器的诞生故事要精彩和奇妙得多。尤其是,一些刚刚披露的文件描述了一个长期被遗忘的芯片——德州仪器的TMX 1795——力压英特尔8008,成为第一款8位微处理器,却一直默默无闻。

CPU诞生鲜为人知的故事:首款8位CPU并不是Intel的,仅比4004晚了两个月

TMX 1795,3078个晶体管

CPU诞生鲜为人知的故事:首款8位CPU并不是Intel的,仅比4004晚了两个月

4004,2300个晶体管

CPU诞生鲜为人知的故事:首款8位CPU并不是Intel的,仅比4004晚了两个月

8008,3098个晶体管

将MOS集成电路应用于计算,为第一款微处理器打开了大门。第一台利用MOS-LSI芯片制造的计算机是由Autonetics(位于加州阿纳海姆市,北美航空公司的一个分支机构)在1967年制造的D200。

CPU诞生鲜为人知的故事:首款8位CPU并不是Intel的,仅比4004晚了两个月

1996年为国家发明家名人堂举办的入场仪式中,Federico Faggin,Marcian “Ted”Hoff Jr.和Stanley Mazor [左起])展示了他们在20世纪70年代初创立的先驱微处理器,即Intel 4004。

这台24位紧凑型通用计算机的设计初衷是用于航空和导航。它的中央处理单元由24个MOS芯片组成,得益于四相逻辑设计技术,利用个相分离的时钟信号(每个信号都有一个不同的开关模式或相位)推动晶体管的状态变化,从而使电路大大简化。该计算机只有几公斤重,用于为“波塞冬”潜射弹道导弹制导以及B-1轰炸机燃料的管理。甚至还有人考虑把它用在航天飞机上。

很快,D200之后又出现了另一台航空电子计算机——由盖瑞特艾雷赛奇(现在隶属于霍尼韦尔)制造的中央航空数据计算机(Central Air Data Computer),包含3个CPU和28个芯片。该计算机是为F-14战斗机设计的飞行控制系统,使用的是盖瑞特艾雷赛奇在1968—1970年间开发的MP944 MOS-LSI芯片组。这台20位的计算机通过处理从传感器获得的信息,为仪器和飞机控制生成输出数据。

F-14计算机的架构与众不同。它有3个并行的功能单元:一个进行乘法运算,一个进行除法运算,另一个用于特殊的逻辑功能运算(包括在最高值和最低值之间选择一个值)。每个功能单元由多个不同的MOS芯片构成,如一块只读存储器(ROM)芯片(包含了决定该单元将如何运作的数据)、一块数据控制芯片、各种运算芯片,以及一块用于临时存储的随机访问存储器(RAM)芯片。

由于F-14计算机属于机密,因此几乎没有人知道MP944芯片组。但是Autonetics公司对其D200进行了广泛宣传,后来推动了另一台更加紧凑的MOS计算机的出现——System Ⅳ。该计算机的发明者是李•博塞尔(Lee Boysel),他于1968年离开了仙童半导体公司,与他人共同创办了四相系统公司(Four-Phase Systems,以Autonetics的四相逻辑命名)。

24位System Ⅳ计算机的CPU仅由9个MOS芯片构成:3个名为AL1的算术逻辑单元(ALU)芯片(进行加减等运算操作,以及与、或、非等逻辑操作)、3个ROM芯片,以及3块随机逻辑芯片。

几乎同时,一家位于马萨诸塞州的创业公司——Viatron计算机系统公司也加入了这场游戏。该公司创建于1967年11月,而仅在一年之后,便推出了System 21——一台配备各种辅助设备的16位微型计算机,全部由定制化的MOS芯片构成。

我们要感谢Viatron的某个人创造了“微处理器”一词。1968年10月,该公司在推出产品2101时首次使用了这个名称。但这款微处理器并不是一个芯片。在Viatron的字典里,这个词指的是智能终端的一部分,这一智能终端配有键盘和磁带驱动器,并与一台单独的微型计算机相连。Viatron的“微处理器”用于控制该终端,由3块不同主板上的18个定制MOS芯片构成。

与此同时,20世纪60年代末,日本计算器制造商日本计算机公司(Business Computer Corp.也被称为比吉康,Busicom)与英特尔签署协议,为一款多芯片计算器定制芯片。最终产品被简化成一款单芯片CPU,也就是现在著名的英特尔4004,同时还有用于存储和输入/输出(I/O)的辅助芯片。这款4位4004芯片(意思是它只能操作4位宽度的数据)通常被认为是第一款微处理器。

1971年初,这款配备4004芯片的计算器上市了。当时,它有许多竞争对手。一家名为Mostek的半导体公司制造出了首款芯片计算器MK6010。Pico Electronics和通用仪器也在研发了它们的芯片计算器G250。不到半年,德州仪器的TMS1802芯片计算器也上市了,成为德州仪器取得巨大成功的0100生产线上的首款芯片。虽然这些电路作为计算器有很好的效果,但对其他事情却无能为力,而4004却能执行存储于外部ROM上的指令。因此4004能用于通用计算机。

那时正是电子计算器业务快速发展的年代,经历了财务危机的比吉康放弃了它对4004芯片的专有权。1071年11月,英特尔开始将4004及其附属配套芯片作为一款适用于通用计算应用的独立产品进行市场推广。但不过几个月之后,4004被其他更加强大的微处理器夺去了光辉,因此,基本没有找到可应用的商业领域,只包括几款弹球机、一款文字处理器和一个投票计算系统。

从这个意义上来说,是电子计算器推动了首款微处理器——英特尔的4位4004芯片的产生。而很快接替它的8位微处理器却有一个非常不同的起源。这个故事始于1969年计算机终端公司(CTC,位于德克萨斯州圣安东尼奥市)Datapoint2200“可编程终端”的开发。

Datapoint2200不仅仅是一个终端,而且是一台真正的通用计算机。它的8位处理器最初由大约100个双极芯片构成。其设计者一直在寻找让处理器消耗较少电量同时产生更少热量的方法。1970年初,CTC安排英特尔打造一个单MOS芯片,来替换Datapoint的处理器板,但不清楚使用单芯片的主意是出自英特尔还是CTC。

1970年6月,英特尔在Datapoint2200架构的基础上制定了芯片的功能参数,然后将项目搁置了6个月。后来这个设计成为了英特尔8008。所以,你认为无论第一款真正实用的单芯片通用微处理器是受计算器启发的4004,亦或是受终端启发的8008,创造它们的都是英特尔,对吗?其实不然。

1970年,英特尔开始研制8008的时候,它还只是一家仅有约100名员工的初创企业。获悉英特尔的处理器项目后,德州仪器——一家拥有4.5万名员工的大型企业咨询CTC,它是否也能为Datapoint2200制造一款处理器。CTC把相关的计算机参数给了德州仪器的工程师,让他们放手去干。但当德州仪器返回了一份三芯片设计时,CTC直接问,德州仪器是否能像英特尔那样在一块芯片上进行设计。然后,大约在1970年4月,德州仪器开始为CTC研发一款单芯片CPU。第二年设计完成,它被称为TMX1975(X指“试验”),后来当需要公布这款芯片的原型状态时,其名称演变成了TMC1795。

1971年6月,德州仪器为TMC1795发起了一场媒体宣传活动,描述了这款“单芯片中央处理器”将如何使新款Datapoint2200成为“原机器都无法与其功能相媲美的强大计算机”。尽管如此,TMC1795还是未能被应用到Datapoint2200上:CTC对TMC1795进行测试后,拒绝了这款芯片,选择继续使用一块双极芯片板制作处理器。英特尔芯片也直到1971年底才完成。

许多技术历史学家认为,TMC1795当时就流产了。但根据该芯片首席开发者盖里•布恩(Gary Boone)最新公布的文件,TMC1795被CTC拒绝后,德州仪器曾试图将该芯片(经过一些小的改进后,成为了TMC1795A)卖给多家公司。1971年,福特汽车公司对该芯片表示出了兴趣,想用它作为发动机控制器,布恩写道:“我觉得我们已经走进了对我们的‘单芯片CPU’有迫切需求的大众市场。”然而,这些努力也付之一炬,德州仪器停止营销TMC1795,转而将精力放在更加有利可图的计算器芯片上。不过,虽然德州仪器错失了机遇,但第一款8位微处理器的桂冠还是应该落在它的头上。

1971年底,英特尔还在研发8008,但CTC已经对单芯片CPU失去了兴趣,放弃了对该设计的独有权。英特尔则继续推进8008的商业化,1972年4月将其推出市场,并最终生产了几十万个8008。两年后,又根据8008衍生出了英特尔8080微处理器,对8086产生了巨大影响,也打开了英特尔现在的X86芯片生产线的闸门。所以,如果你现在正坐在一台使用X86处理器的电脑前,那么你正在使用一台其设计可追溯至1969年Datapoint2200可编程终端的电脑。

就像这段历史告诉我们的,微处理器的进化并不是一条直线。许多都是机会和各种商业决策的结果,而且很可能偏离方向。以CTC为Datapoint2200设计的8位处理器架构为例,它有4种不同的实施方式。CTC使用了两次双极芯片板,第一次是以串行方式交流数据,第二次是以并行方式,速度有所提高。德州仪器和英特尔都满足了CTC使用单芯片的要求,指令集也几乎相同,但这两款芯片在封装、控制信号、指令时序和内部电路方面完全不同。

英特尔使用的技术比德州仪器更加先进,最值得一提的是,用多晶硅制成的自对准栅极,既提高了晶体管的速度,又提高了产出,同时也使晶体管能够被布置得更紧密。结果,就算4004和8008加在一起,也比TMC1795的尺寸小。实际上,英特尔的工程师也曾认为德州仪器的芯片过于庞大,很难得到实际应用,但事实并非如此:德州仪器后来很快推出的TMS0100计算器芯片甚至比TMC1795还要大,但也取得了巨大成功。

所以,到底是谁最早发明了微处理器呢?一种答案是,微处理器并不算是发明,而是大家早已知道迟早会出现的东西。只要等着技术和市场相结合就可以了。我觉得这种观点最有说服力。

另一种观点认为,“微处理器”基本上是英特尔、德州仪器及其他芯片公司根据需要而推出的一个营销术语,用来称呼它们的新产品。布恩虽然是TMC1795的开发者,后来也认为是英特尔将微处理器变成了一种实际可行的产品。在一封没有标明日期的信(明显是针对谁首先发明了微处理器的法律讨论)中,他写道:“在微处理器发展过程中,最主要的是英特尔在1972—1975年间做出的企业贡献……它们在设计、软件和营销方面的创新使这一行业有了发展可能,或者至少加速了它的发展。”

要判断谁创造了第一款微处理器还取决于你如何定义这个词。有些人认为微处理器就是一块芯片上的CPU;有些人则认为仅需一块芯片上的一个算术逻辑单元即可;还有一些人将这些功能封装在几块芯片上,认为它们合起来构成一个微处理器。

在我看来,微处理器的主要特征在于,它是一块单芯片上的CPU(包括ALU、控制功能以及程序计数器等寄存器),而且可编程。但是,微处理器并不是一台完整的计算机:存储器、I/O和其他支持功能还需要其他芯片。

根据这一定义,大多数人认为英特尔4004是第一款微处理器,因为它在一块单芯片上容纳了中央处理单元的所有组件。布恩和费德里科•费金(Federico Faggin,英特尔4004团队成员)都同意,4004比最早的TMX1795样品早出现了一两个月。后者是首款8位微处理器,而英特尔的8008则是首款在商业上取得成功的8位微处理器。

但是如果你的“微处理器”定义没那么严格,那么很多系统都可以被看成是第一款微处理器。那些认为芯片上有算术逻辑单元即为微处理器的人,认为博塞尔在离开仙童公司与他人合办四相系统公司之前不久,于1968年制作出了第一款微处理器。也有人认为四相系统公司的AL1是第一款,因为它在一块单芯片上结合了寄存器和ALU,同时控制电路外置。如果你认为微处理器可以包含多块LSI芯片,那么Autonetics D200也具有成为第一款微处理器的资格。

专利提供了另一个评判微处理器发明的角度。德州仪器很快意识到专利的盈利能力,获得了TMX1795 和TMS0100的多项专利,并在诉讼和授权协议中充分利用了这些专利。

根据这些专利,德州仪器可以被视为微处理器和微控制器(集合了CPU、存储器和各种支持功能的单芯片)的发明者。或许也不是。因为1990年吉尔伯特•海特(Gilbert Hyatt)凭借他在1969年用多块双极芯片板制作16位串行计算机获得了单芯片处理器专利。这使得有人认为海特才是微处理器的发明者,直到经过一场复杂的官司,德州仪器于1996年在专利上击败了海特。

另一位被认为是微处理器发明者的是博塞尔。1995年,在一场法律诉讼(后来被戈登•贝尔戏称为“德州仪器与所有人的对抗”)中,博塞尔利用1969年的一块AL1 ALU单芯片在法庭上演示一台工作计算机,对德州仪器的单芯片处理器专利进行反击。他的行为有效打击了德州仪器,不过我不认为他的演示特别有说服力,因为他用了一些技术手段才赢得了官司。

无论认为哪个是首款微处理器,我们都得接受会有竞争者来争夺这一称谓。可惜的是大多数人试图在这场竞赛中只承认一个获胜者,而许多极好的亚军产品现在几乎都被遗忘了。不过对于我们这些对微计算早期历史感兴趣的人来说,这一丰富的历史将继续存在。

本文分享自微信公众号 - 网络交换FPGA(gh_cb8502189068)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
28篇论文、6大主题带你一览CVPR2020研究趋势
  !(http://dingyue.ws.126.net/2020/0625/c176bdbej00qchkrg001ld200p000ang00it0080.jpg)  编译|陈大鑫  编辑|丛末  首度于线上召开的CVPR2020会议已经落下帷幕。今年,大会共有1467篇论文被接收,共举办了29个Tutorial、64
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这