运算器:arithmetic unit,计算机中执行各种算术和
逻辑运算操作的部件。运算器的基本操作包括加、减、乘、除
四则运算,与、或、非、
异或等
逻辑操作,以及移位、比较和传送等操作,亦称
算术逻辑部件(
ALU)。
简介
运算器由
算术逻辑单元(
ALU)、
累加器、
状态寄存器、
通用寄存器组等组成。算术逻辑
运算单元(ALU)的基本功能为加、减、乘、除四则运算,与、或、非、
异或等
逻辑操作,以及移位、求补等操作。计算机
运行时,运算器的操作和操作种类由控制器决定。运算器处理的数据来自
存储器;处理后的结果数据通常送回存储器,或暂时寄存在运算器中。与
Control Unit共同组成了
CPU的核心部分。
运算器是计算机中
处理数据的
功能部件。对数据处理主要包括数据的
算术运算和
逻辑数据的逻辑操作。因此,实现对数据的算术与
逻辑运算是运算器的核心功能。
基本理论
数据
运算器的处理对象是数据,所以数据长度和计算机
数据表示方法,对运算器的性能影响极大。70年代
微处理器常以1个、4个、8个、16个
二进制位作为
处理数据的
基本单位。大多数
通用计算机则以16、32、64位作为运算器处理数据的长度。能对一个数据的所有位同时进行处理的运算器称为
并行运算器。如果一次只处理一位,则称为串行运算器。有的运算器一次可处理几位 (通常为6或8位),一个完整的数据分成若干段进行计算,称为串/并行运算器。运算器往往只处理一种长度的数据。有的也能处理几种不同长度的数据,如半字长运算、
双倍字长运算、四倍字长运算等。有的数据长度可以在运算过程中指定,称为变字长运算。
按照数据的不同表示方法,可以有
二进制运算器、
十进制运算器、
十六进制运算器、
定点整数运算器、
定点小数运算器、
浮点数运算器等。按照数据的性质,有地址运算器和字符运算器等。
操作
运算器能执行多少种操作和操作速度,标志着运算器能力的强弱,甚至标志着计算机本身的能力。运算器最基本的操作是加法。一个数与零相加,等于简单地传送这个数。将一个数的代码求补,与另一个数相加,相当于从后一个数中减去前一个数。将两个数相减可以比较它们的大小。
左右移位是运算器的基本操作。在有符号的数中,符号不动而只移
数据位,称为
算术移位。若数据连同符号的所有位一齐移动,称为
逻辑移位。若将数据的最高位与最低位链接进行逻辑移位,称为
循环移位。
运算器的
逻辑操作可将两个数据按位进行与、或、
异或,以及将一个数据的各位求非。有的运算器还能进行二值代码的16种逻辑操作。
乘、除法操作较为复杂。很多计算机的运算器能直接完成这些操作。乘法操作是以加法操作为基础的,由乘数的一位或几位
译码控制逐次产生
部分积,部分积相加得乘积。除法则又常以乘法为基础,即选定若干因子乘以
除数,使它近似为1,这些因子乘
被除数则得商。没有执行乘法、除法硬件的计算机可用程序实现乘、除,但速度慢得多。有的运算器还能执行在一批数中寻求最大数,对一批数据连续执行同一种操作,求
平方根等复杂操作。
运算方法
实现运算器的操作,特别是四则运算,必须选择合理的运算方法。它直接影响运算器的性能,也关系到运算器的结构和成本。另外,在进行
数值计算时,结果的有效数位可能较长,必须截取一定的有效数位,由此而产生最低有效数位的舍入问题。选用的舍入规则也影响到计算结果的精确度。在选择计算机的数的表示方式时,应当全面考虑以下几个因素:要表示的数的类型(小数、整数、实数和复数):决定表示方式,可能遇到的数值范围:确定存储、处理能力。数值精确度:处理能力相关;
数据存储和处理所需要的硬件代价:造价高低。
两种常用格式:定点格式:定点格式容许的数值范围有限,但要求的处理硬件比较简单;
浮点格式:容许的数值范围很大,但要求的处理硬件比较复杂。
1、
定点数表示法:定点指
小数点的位置固定,为了处理方便,一般分为定点纯整数和
纯小数。
2、
浮点数表示法:由于所需表示的数值取值范围相差十分悬殊,给存储和计算带来诸多不便,因此出现了
浮点运算法。
浮点表示法,即小数点的位置是浮动的。其思想来源于
科学计数法。IEEE754的浮点数(比较特殊)浮点数的规格化:主要解决同一浮点数表示形式的不
唯一性问题。规定 ,否则尾数要进行左移或右移。
机器零的概念:尾数为0或是
阶码值小于所能表示的最小数。
3、
十进制数串的表示方法:由于人们对十进制比较熟悉,因此在计算机中要增加对十进制运算的支持。两种方式:将十进制数变为
二进制数运算,输出时再由二进制变为十进制。直接的十进制运算。
直接运算的表示方法:
字符串形式:用于非数值计算领域、压缩的十进制数串:分为
定长和不定长两种。需要相应的十进制运算器和指令支持。
4、自定义
数据表示:标志符数据表示、
描述符数据表示。区别:标志符与每个数据相连,二者合起来存放在一个
存储单元,而描述符要和数据分开存放;描述符表示中,先访问描述符,后访问数据,至少增加一次访存;描述符是程序的一部分,而不是数据的一部分。
原码:比较自然的
表示法,最高位表示符号,0为正,1为负。优点:简单易懂。缺点:加减法运算复杂。
补码:加减法运算方便,减法可以转换为加法。
定点小数的补码。
定点整数的补码,
反码:为计算补码方便而引入。由反码求补码:符号位置1,各位取反,末位加1。
移码:用于阶码的表示,两个移码容易比较大小,便于
对阶。
ASCII码
输入码:用于汉字输入;汉字的存储;
字模码:用于汉字的显示。
余数处理的两种方法:恢复余数法:运算步骤不确定,控制复杂,不适合计算机运算。
加减交替法:不恢复余数,运算步骤确定,适合计算机操作。逻辑
数概念:不带符号的
二进制数。四种
逻辑运算:
逻辑非、逻辑加、逻辑乘、逻辑异。多功能算术/
逻辑运算单元(
ALU) 并行
进位,
行波进位加/
减法器存在的两个问题:运算时间长,行波进位加/减法器只能完成加法和减法,而不能完成逻辑操作,控制端M用来控制作
算术运算还是逻辑运算,两种运算的区别在于是否对进位进行处理。M=0时,对进位无影响,为算术运算;M=1时,进位被封锁,为
逻辑运算。
正逻辑中,“1”用
高电平表示,“0”用
低电平表示,而
负逻辑刚好相反。
逻辑与负逻辑的关系为,正逻辑的“与”到负逻辑中变为“或”,即+·互换。
内部总线,总线分类:内部总线、
外部总线(
系统总线)、通信总线。总线又可分为
单向总线和
双向总线。带
锁存器的总线可实现总线的复用。运算器包括ALU、阵列乘除器件、
寄存器、
多路开关、
三态缓冲器、数据总线等
逻辑部件。运算器的设计,主要是围绕着ALU和寄存器同数据总线之间如何传送
操作数和运算结果而进行的。运算器的三种结构形式:单
总线结构的运算器:这种结构的主要缺点是操作进度较慢,但控制电路比较简单。双
总线结构的运算器。三总线结构的运算器:三总线结构的运算器的特点是操作时间快。
结构
运算器包括寄存器、
执行部件和控制电路3个部分。在典型的运算器中有3个寄存器:接收并保存一个
操作数的接收寄存器;保存另一个操作数和运算结果的
累加寄存器;在进行乘、
除运算时保存乘数或
商数的
乘商寄存器。执行部件包括一个
加法器和各种类型的输入输出
门电路。控制电路按照一定的
时间顺序发出不同的控制信号,使数据经过相应的门电路进入寄存器或
加法器,完成规定的操作。为了减少对
存储器的访问,很多计算机的运算器设有较多的寄存器,存放中间计算结果,以便在后面的运算中直接用作
操作数。为了提高
运算速度,某些
大型计算机有多个运算器。它们可以是不同类型的运算器,如定点
加法器、
浮点加法器、
乘法器等,也可以是相同类型的运算器。运算器的组成决定于整机的设计思想和设计要求,采用不同的运算方法将导致不同的运算器组成。但由于运算器的基本功能是一样的,其算法也大致相同,因而不同机器的运算器是大同小异的。运算器主要由
算术逻辑部件、
通用寄存器组和
状态寄存器组成。1、算术逻辑部件ALU。ALU 主要完成对
二进制信息的定点算术运算、逻辑运算和各种移位操作。算术运算主要包括定点加、减、乘和除运算。
逻辑运算主要有
逻辑与、
逻辑或、
逻辑异或和
逻辑非操作。移位操作主要完成逻辑
左移和右移、算术左移和右移及其他一些移位操作。某些机器中,ALU 还要完成数值比较、变更数值符号、计算
操作数在
存储器中的地址等。可见,ALU 是一种功能较强的
组合逻辑电路,有时被称为多功能
发生器,它是运算器组成中的核心部件。ALU 能处理的数据位数(即字长)与机器有关。如
Z80单板机中,ALU 是 8 位;
IBM PC/XT和 AT 机中,ALU 为 16 位;386 和 486微机中,ALU 是 32 位。ALU 有两个数据输入端和一个数据输出端,输入输出的数据宽度(即位数)与 ALU 处理的数据宽度相同。
2、
通用寄存器组设计的机器的运算器都有一组通用寄存器。它主要用来保存参加运算的
操作数和运算的结果。早期的机器只设计一个
寄存器,用来存放
操作数、操作结果和执行移位操作
,由于可用于存放重复累加的数据,所以常称为
累加器。
通用寄存器均可以作为
累加器使用。
通用寄存器的数据
存取速度是非常快的,一般是十几个毫
微秒(μs)。如果 ALU 的两个
操作数都来自寄存器,则可以极大地提高运算速度。
通用寄存器同时可以兼作专用寄存器,包括用于计算
操作数的地址(用来提供操作数的
形式地址,据此形成
有效地址再去访问
主存单元)。例如,可作为
变址寄存器、
程序计数器(PC)、
堆栈指示器(
SP)等。必须注意的是,不同的机器对这组寄存器使用的情况和设置的个数是不相同的。
3、
状态寄存器状态寄存器用来记录算术、
逻辑运算或测试操作的结果状态。程序设计中,这些状态通常用作
条件转移指令的判断条件,所以又称为
条件码寄存器。一般均设置如下几种状态位:
(1)零标志位(Z):当运算结果为 0 时,Z 位置“1”;非 0 时,置“0”;
(2)负标志位(N):当运算结果为负时,N 位置“1”;为正时,置“0”;
(3)溢出标志位(V):当运算结果发生溢出时,V 位置“1”;无溢出时,置“0”;
(4)进位或
借位标志(C):在做加法时,如果运算结果
最高有效位(对于有符号数来说,即符号位;对
无符号数来说,即数值最高位)向前产生进位时,C 位置“1”;无进位时,置“0”。在做减法时,如果不够减,最高有效位向前有借位(这时向前无进位产生)时,C 位置“1”;无借位(即有进位产生)时,C 位置“0”。除上述状态外,
状态寄存器还常设有保存有关中断和机器
工作状态(
用户态或
核心态)等信息的一些标志位(应当说明,不同的机器规定的内容和标志符号不完全相同),以便及时反映机器运行程序的工作状态,所以有的机器称它为“
程序状态字”或“
处理机状态字”(Processor Status Word,
PSW )。
性能指标
1.
机器字长,机器字长是指参与运算的数据的基本位数。它决定了
寄存器、运算器和
数据总线的位数,因而直接影响到硬件的价格。字长标志着计算精度。为协调精度与造价,并满足多方面的要求,许多计算机允许变字长计算,例如半字长、全字长和
双倍字长等。由于数和
指令代码都放在
主存中,因而字长与
指令码长度往往有一个对应关系,字长也就影响到指令
系统功能的强弱。计算机字长从 4 位、8 位、16 位、32 位到 64 位不等。机器字长可包含一个或多个字节。用于
科学计算的机器,为了确保精度,需要较长的字长;用于数据处理、
工业控制的机器,字长为 16 位或 32 位就能满足要求。
2.
运算速度,它是计算机的主要指标之一。计算机执行不同的运算和操作所需的时间可能不同,因而对运算速度存在不同的计算方法。一般常用
平均速度,即在单位时间内平均能执行的指令条数来表示,如某计算机运算速度为 100 万次 /秒,就是指该机在一秒钟内能平均执行 100万条指令(即 1
MIPS)。有时也采用
加权平均法(即根据每种指令的执行时间以及该指令占全部操作的
百分比进行计算)求得的等效速度表示。
功能分类
运算器的基本功能是完成对各种数据的加工处理,例如算术
四则运算,与、或、求反等
逻辑运算,算术和
逻辑移位操作,比较数值,变更符号,计算
主存地址等。运算器中的
寄存器用于临时保存参加运算的数据和运算的中间结果等。运算器中还要设置相应的部件,用来记录一次运算结果的特征情况,如是否溢出,结果的符号位,结果是否为零等。计算机所采用的运算器类型很多,从不同的角度分析,就有不同的
分类方法。从
小数点的表示形式可分为定点运算器和
浮点运算器。定点运算器只能做
定点数运算,特点是
机器数所表示的范围较小,但结构较简单。
浮点运算器功能较强,既能对
浮点数,又能对定点数进行运算,其数的表示范围很大,但结构相当复杂。从进位制方面分为
二进制运算器和十
进制运算器。一般计算机都采用
二进制运算器,随着计算机广泛应用于商业和数据处理,越来越多的机器都扩充
十进制运算的功能,使运算器既能完成二进制的运算,也能完成十进制运算。计算机中运算器需要具有完成多种运算操作的功能,因而必须将各种算法综合起来,设计一个完整的运算部件。
浮点运算器
浮点运算可用两个松散连接的
定点运算部件来实现:即
阶码部件和
尾数部件,
浮点运算器的一般结构尾数部件实质上就是一个通用的定点运算器,要求该运算器能实现加、减、乘、除四种基本算术运算。其中三个单字长寄存器用来存放
操作数:AC为
累加器,
MQ为
乘商寄存器,DR为
数据寄存器。AC和MQ连起来还可组成左右移位的双字长寄存器AC-MQ。
并行加法器用来完
成数据的加工处理,其输入来自AC和DR,而结果回送到AC。MQ寄存器在乘法时存放
乘数,而除法时存放
商数,所以称为乘商寄存器。DR用来存放
被乘数或
除数,而结果(乘积或商与
余数)则存放在AC-MQ。在四则运算中,使用这些寄存器的典型方法如下:
运算类别 寄存器关系加法AC+DR→AC减法AC-DR→AC乘法DR×MQ→AC-MQ除法AC÷DR→AC-MQ
对阶码部件来说,只要能进行阶码相加、相减和比较操作即可。在图2-21中,
操作数的阶码部分放在寄存器E1和E2,它们与并行加法器相连以便计算。
浮点加法和减法所需要的阶码比较是通过E1-E2来实现的,相减的结果放入
计数器E中,然后按照E的符号为决定哪一个阶码较大。在尾数相加或相减之前,需要将一个尾数进行移位,这是由计数器E来控制的,目的是使E的值按顺序减到0。E每减一次1,相应的尾数则向右移1位。一旦尾数高速完毕,它们就可按通常的定点方法进行处理。运算结果的阶码值仍放到计数器E中。
2、点协处理器,80x87是美国
Intel公司为处理浮点数等数据的算术运算和多种函数计算而设计生产的专用算术运算处理器。由于它们的算术运算是配合80x86
CPU进行的,所以又称为
协处理器。我们以80x87为例来讨论浮点运算器部件的组成。浮点协处理器的主要功能如下:
(1) 可与配套的CPU芯片异步并行工作。80x87相当于386的一个I/O部件,本身有它自己的指令,但不能单独使用,它只能作为386主CPU的协处理器才能运算。因为真正的读写主存的工作不是80x87完成,而是由386执行的。如果386从主存读取的指令是80x87浮点运算指令,则它们以
输出方式把该指令送到80x87,80x87接收后进行译码并执行浮点运算。在80x87进行运算期间,386可取下一条其他指令予以执行,因而实现了并行工作。如果在80x87执行浮点运算指令过程中386又取来一条80x87指令,则80x87以给出“忙”的
标志信号加以拒绝,使386暂停向80x87发送命令。只有待80x87完成浮点运算而取消“忙”的标志信号以后,386才可以进行一次发送操作。
(2) 高性能的80位字长的内部结构,有8个80位字长的以
堆栈方式管理的
寄存器组。80x87从
存储器取数和向存储器写数时,均用80位的临时实数和其他6种
数据类型执行自动转换。全部数据在80x87中均以80位临时实数的形式表示。因此80x87具有80位的内部结构,并有八个80位字长以 “先进后出”方式管理的寄存器组,又称寄存器堆栈。这些寄存器可以按堆栈方式工作,此时,
栈顶被用作
累加器;也可以按寄存器的编号
直接访问任一个寄存器。
(3) 浮点数的格式,完全符合
IEEE制定的
国际标准。
(4) 能处理包括
二进制浮点数、二进制整数和十进制数串三大类共7种数据。此7种数据类型在寄存器中表示如下:短整数(32位整数) S 31位 (二进制
补码) 长整数(64位整数) S 63位 (二进制补码) 短实数(32位浮点数) S 指数 尾数(23位) 长实数(64位浮点数) S 指数 尾数(52位) 临时实数(80位浮点数) S 指数 尾数(64位) 十进数串(十进制18位) S -- d17d16 … d1d0。此处S为一位符号位,0代表正,1代表负。三种浮点数阶码的基值均为2。阶码值用
移码表示,尾数用
原码表示。尾数有32位、64位、80位三种。不仅仅是一个浮点运算器,还包括了执行
数据运算所需要的全部
控制线路,就运算部分讲,有处理浮点数指数部分的部件和处理
尾数部分的部件,还有加速移位操作的
移位器线路,它们通过指数总线和小数总线与八个80位字长的寄存器堆栈相连接。(5) 内部的出错
管理功能为了保证操作的正确执行,80x87内部还设置了三个各为16位字长的寄存器,即特征寄存器、控制字寄存器和状态寄存器。特征寄存器用每两位表示寄存器堆栈中每个寄存器的状态,即
特征值为00-11四种组合时表明相应的寄存器有正确数据、数据为0、数据非法、无数据四种情况。控制字寄存器用于控制80x87的内部操作。其中PC为精度控制
位域(2位):00为24位,01为备用,10为53位,11为64位。RC为舍入控制位域(2位):00为就近舍入,01朝-方向舍入,10朝+方向舍入,11朝0舍入。IC为
无穷大控制位:该位为0时+与-作同值处理,该位为1时+与-不作同值处理。
控制寄存器的低6位作异常中断屏蔽位:IM为非法处理,DM为非法操作数,ZM为0作除数,OM为
上溢,UM为下溢,PM为精度下降。
状态字寄存器用于表示80x87的结果处理情况,例如当“忙”标志为1时,表示正在执行一条浮点运算指令,为0则表示80x87空闲。状态寄存器的低6位指出异常错误的6种类型,与控制寄存器低6位相。当的控制寄存器位为0(未屏蔽)而状态寄存器位为1时,因发生某种异常错误而产生
中断请求。
3.CPU内的
浮点运算器,奔腾CPU将浮点运算器包含在芯片内。
浮点运算部件采用流水线设计。指令执行过程分为8段流水线。前4段为
指令预取(DF)、指令译码(D1)、地址生成(D2)、取
操作数(EX),在U,V流水线中完成;后4段为执行1(X1)、执行2(X2)、结果
写回寄存器堆(WF)、
错误报告(ER),在
浮点运算器中完成。一般情况下,由V流水线完成一条浮点操作指令。浮点部件内有浮点专用的
加法器、
乘法器和
除法器,有8个80位
寄存器组成的寄存器堆,内部的
数据总线为80位宽。因此浮点部件可支持
IEEE754标准的
单精度和
双精度格式的浮点数。另外还使用一种称为临时实数的80位浮点数。对于浮点的取数、加法、乘法等操作,采用了新的算法并用硬件来实现,其执行速度是80486的10倍多。
发展
公元前5世纪,中国人发明了
算盘,广泛应用于
商业贸易中,算盘被认为是最早的计算机,并一直使用至今。算盘在某些方面的
运算能力要超过计算机,算盘的方面体现了中国人民的智慧。
直到17世纪,计算设备才有了第二次重要的进步。1642年,法国人Blaise Pascal(1623-1662)发明了自动进位
加法器,称为Pascalene。1694年,德国数学家Gottfried Wilhemvon Leibniz(1646-1716)改进了Pascaline,使之可以计算乘法。后来,法国人Charles Xavier Thomas de Colmar发明了可以进行
四则运算的计算器。现代计算机的真正起源来自英国数学教授Charles Babbage。Charles Babbage发现通常的计算设备中有许多错误,在
剑桥学习时,他认为可以利用
蒸汽机进行运算。起先他设计
差分机用于计算导航表,后来,他发现差分机只是专门用途的机器,于是放弃了原来的研究,开始设计包含现代计算机基本组成部分的
分析机。(Analytical Engine)
Babbage的蒸汽动力计算机虽然最终没有完成,以今天的标准看也是非常原始的,然而,它勾画出现代
通用计算机的
基本功能部分,在概念上是一个突破。
在接下来的若干年中,许多工程师在另一些方面取得了重要的进步,美国人Herman Hollerith(1860-1929),根据
提花织布机的原理发明了穿孔片计算机,并带入商业领域建立公司。
现代计算机发展历程
1946年2月15日,标志现代计算机诞生的
ENIAC(Electronic Numerical Integrator and Computer)在
费城公诸于世。ENIAC代表了计算机发展史上的里程碑,它通过不同部分之间的重新接线编程,还拥有并行计算能力。ENIAC由
美国政府和
宾夕法尼亚大学合作开发,使用了18000个
电子管,70000个
电阻器,有5百万个焊接点,耗电160千瓦,其
运算速度为每秒5000次。
第一代计算机的特点是
操作指令是为特定任务而编制的,每种机器有各自不同的
机器语言,功能受到限制,速度也慢。另一个明显特征是使用真空电子管和
磁鼓储存数据 .
1948年,
晶体管发明代替了体积庞大电子管,
电子设备的体积不断减小。1956年,晶体管在计算机中使用,晶体管和
磁芯存储器导致了
第二代计算机的产生。第二代计算机体积小、速度快、功耗低、性能更稳定。1960年,出现了一些成功地用在商业领域、大学和政府部门的第二代计算机。第二代计算机用晶体管代替电子管,还有现代计算机的一些部件:打印机、磁带、磁盘、内存、操作系统等。计算机中存储的程序使得计算机有很好的适应性,可以更有效地用于商业用途。在这一时期出现了更高级的
COBOL和
FORTRAN等语言,使计算机编程更容易。新的职业(
程序员、
分析员和
计算机系统专家)和整个
软件产业由此诞生。
1958年
德州仪器的工程师Jack Kilby发明了
集成电路(IC),将三种
电子元件结合到一片小小的硅片上。更多的元件集成到单一的半导体芯片上,计算机变得更小,功耗更低,速度更快。这一时期的发展还包括使用了操作系统,使得计算机在中心程序的控制协调下可以同时运行许多不同的程序。
大规模集成电路 (LSI) 可以在一个芯片上容纳几百个元件。到了 80 年代,
超大规模集成电路(VLSI) 在芯片上容纳了几十万个元件,后来的 (ULSI) 将数字扩充到百万级。可以在硬币大小的芯片上容纳如此数量的元件使得计算机的体积和价格不断下降,而功能和可靠性不断增强。70 年代中期,计算机制造商开始将计算机带给普通消费者,这时的
小型机带有友好界面的
软件包,供非专业人员使用的程序和最受欢迎的
字处理和
电子表格程序。1981 年,
IBM 推出
个人计算机(PC) 用于家庭、办公室和学校。80 年代个人计算机的竞争使得价格不断下跌,微机的拥有量不断增加,计算机继续缩小体积。与
IBM PC 竞争的 Apple
Macintosh 系列于 1984 年推出, Macintosh 提供了友好的
图形界面,用户可以用鼠标方便地操作。
纪事年表
1666年,在
英国Samuel Morland发明了一部可以计算
加数及
减数的机械
计数机。
1673年,Gottfried Leibniz 制造了一部踏式(stepped)圆柱形转轮的计数机,叫“Stepped Reckoner”,这部计算器可以把重复的数字相乘,并自动地加入加数器里。
1694年,德国数学家,Gottfried Leibniz ,把巴斯卡的Pascalene 改良,制造了一部可以计算
乘数的机器,它仍然是用齿轮及
刻度盘操作。
1773年,Philipp-Matthaus 制造及卖出了少量精确至12位的计算机器。
1775年,The third Earl of Stanhope 发明了一部与Leibniz相似的乘法计算器。
1786年,J.H.Mueller 设计了一部差分机,可惜没有拨款去制造。
1801年,Joseph-Marie Jacquard 的
织布机是用连接按序的
打孔卡控制编织的样式。
1858年,一条电报线第一次跨越
大西洋,并且提供了几日的服务。
1861年,一条跨越大陆的电报
线把大西洋和
太平洋沿岸连接起来。
1876年,Alexander Graham Bell 发明了电话并取得
专利权。
1876至1878年,Baron Kelvin 制造了一部
泛音分析机及潮汐预测机。
1882年,William S. Burroughs 辞去在银行
文员的工作,并专注于加数器的发明。
1889年,Herman Hollerith 的电动制表机在比赛中有出色的表现,并被用于 1890 中的
人口调查。Herman Hollerith 采用了Jacquard 织布机的概念用来计算,他用咭贮存资料,然后注入机器内编译结果。这机器使本来需要十年时间才能得到的人口调查结果,在短短六星期内做到。
1893年,第一部四功能计算器被发明。
1895年,Guglielmo Marconi 传送广播讯号。
1896年,Hollerith 成立制表机器公司(Tabulating Machine Company)。
1901年,打孔键出现,之后的半个世纪只有很少的改变。
1904年,John A.Fleming 取得真空
二极管的专利权,为
无线电通讯建立基础。
1906年,Lee de Foredt 加了一个第三活门在Felming 的二极管, 创制了三电极
真空管。
1908年,英国科学家 Campbell Swinton述了
电子扫描方法及预示用
阴极射线管制造电视。
1911年,Hollerith 的表机公司与其它两间
公司合并,组成 Computer Tabulating Recording Company (C-T-R),制表及录制公司。但在1924年,改名为International Business Machine Corporation (
IBM)。
1911年,
荷兰物理学家 Kamerlingh Onnes 在 Leiden Unversity 发现超导电。
1931年,Vannever Bush 发明了一部可以解决
差分程序的计数机,这机器可以解决一些令数学家,科学家
头痛的复杂差分程序。
1939年11月,John Vincent Atannsoff 与 John Berry 制造了一部16位加数器。它是第一部用真空管计算的机器。
贮存器,加上一个用
断电器逻辑(Relay Logic)的新算术部件。但当 Zuse完成草稿后,这计划被中断一年。
1939-40年,Schreyer 完成了用真空管的10位加数器,以及用
氖气灯(霓虹灯)的
存贮器。
1940年1月,在 Bell Labs,
Samuel Williams 及Stibitz 完成了一部可以计算复杂数字的机器,叫“
复杂数字计数机(Complex Number Calculator)”,后来改称为“断电器计数机型号I (Model I Relay Calculator)”。它用电话开关部份做
逻辑部件:145个断电器,10个横杠开关。数字用“Plus 3BCD”代表。在同年9月,
电传打字 etype 安装在一个数学会议里,由New Hampshire 连接去纽约。
1940年,Zuse 终于完成Z2,它比运作得更好,但不是太可靠。
浮点操作,有7个位的指数,14位的
尾数,以及一个
正负号累加器,每一个有自己的算术部件,及23位数的寄存器。
1943年12月,Tommy Flowers与他的队伍,完成第一部“Colossus”,它有2400个真空管用作逻辑部件,5 个纸带圈读取器(reader),每个可以每秒工作5000字符。
1943年,由 John Brainered领导,
ENIAC开始研究。而 John Mauchly 及J. Presper Eckert负责这计划的执行。
1946v第一台电子数字
积分计算器(ENIAC)在美国建造完成。
1947年,英国完成了第一个存储真空管O 1948
贝尔电话公司研制成半导体。
1952年,第一台大型
计算机系统IBM701宣布建造完成。
1954年,第一台半导体计算机由贝尔电话公司研制成功。
1954年,第一台通用数据处理机IBM650诞生。
1955年,第一台利用磁心的
大型计算机IBM705建造完成。
1956年,IBM公司推出科学704计算机。1957年,
程序设计语言FORTRAN问世。
1959年,第一台小型
科学计算器IBM620研制成功。
1960年,数据处理系统IBM1401研制成功。
1961年,第一台
分系统计算机由
麻省理工学院设计完成。
1965年,美国数字设备公司推出第一台
小型机PDP-8。
1969年,IBM公司研制成功90列
卡片机和系统--3计算机系统。
1970年,IBM系统1370计算机系列制成。
1971年,
伊利诺大学设计完成伊利阿克IV
巨型计算机。
1971年,第一台微处理机4004由
英特尔公司研制成功。
1972年,微处理机基片开始大量生产销售。
1973年,第一片
软磁盘由IBM公司研制成功。1975年,
ATARI--8800
微电脑问世。
1977年,柯莫道尔公司宣称全组合
微电脑PET--2001研制成功。
1977年,TRS--80微电脑诞生。
1979年,夏普公司宣布制成第一台手提式微电脑。