电脑
计算机是一台可以进行编程的计算机,以自动执行算术或逻辑操作(计算)的序列。现代的数字电子计算机可以执行称为程序的通用操作集。这些程序使计算机能够执行各种任务。一词计算机系统可能是指名义上完成的计算机,其中包括硬件,操作系统,软件和外围设备,并用于全面操作;或将链接并连接在一起的一组计算机,例如计算机网络或计算机群集。
广泛的工业和消费产品使用计算机作为控制系统。包括简单的特殊用途设备,例如微波炉和遥控器,以及工业机器人和计算机辅助设计等工厂设备以及通用设备,例如个人计算机和智能手机等移动设备。计算机为Internet提供动力,该Internet连接数十亿个计算机和用户。
早期的计算机仅用于计算。自古以来,诸如算盘之类的简单手动仪器已帮助人们进行计算。在工业革命的早期,建造了一些机械设备,以使漫长而繁琐的任务自动化,例如指导织机模式。更复杂的电机在20世纪初进行了专门的模拟计算。第一个数字电子计算机是在第二次世界大战期间开发的,包括机电和使用热阀。 1940年代后期的第一个半导体晶体管随后是矽的MOSFET (MOS晶体管)和1950年代后期的单片整合电路芯片技术,导致了1970年代的微处理器和微型电脑革命。从那时起,计算机的速度,功率和多功能性一直在急剧上升,晶体管计数在迅速的速度上增加(摩尔定律指出,计数每两年翻了一番),导致在20世纪末至21世纪初的数字革命。
通常,一台现代计算机由至少一个处理元素组成,通常是一个以微处理器形式的中央处理单元(CPU)以及某种类型的计算机存储器,通常是半导体内存芯片。处理元素进行算术和逻辑操作,测序和控制单元可以改变操作顺序,以响应存储的信息。外围设备包括输入设备(键盘,鼠标,操纵杆等),输出设备(监视器屏幕,打印机等)以及执行这两个功能的输入/输出设备(例如,2000年代 -触摸屏)。外围设备允许从外部来源检索信息,并可以保存和检索操作的结果。
词源

根据《牛津英语词典》的报导,计算机的第一个已知用法是在1613年的书中,名为《 Yong Mans Gleanings》 ,由英国作家Richard Brathwait撰写:“我读了最真实的计算机,是Euer的最佳算术师[ Sic ]呼吸,他将您的日子缩短了一个短数。”该术语的用法称为人类计算机,一个进行计算或计算的人。这个词一直持续到20世纪中叶。在此期间的后期,妇女经常被雇用为计算机,因为她们的薪水可能比男性少。到1943年,大多数人类计算机都是女性。
在线词源词典在1640年代对计算机进行了首次证明的使用,这意味着“计算一个人”;这是“ compute(v。)的代理名词”。在线词源词典指出,使用该术语表示“ (任何类型)的“计算机”是从1897年开始的。”在线词源词典表明,该术语的“现代用途”是指“可编程数字计算机”的历史可追溯到“ 1945年以这个名称为单位; [在1937年从1937年开始,作为图灵机的理论[ siense]中)。
历史
20世纪前
设备已被用来帮助计算数千年,主要是使用手指一对一的对应。最早的计数装置很可能是一种稳定的形式。后来记录了整个肥沃的新月形记录辅助工具,包括微积分(粘土球,锥体等),其中代表物品计数(可能是牲畜或谷物计数),并密封在空心未烘烤的粘土容器中。使用计数杆就是一个例子。

算盘最初用于算术任务。罗马算盘是从公元前2400年从巴比伦使用的设备开发的。从那时起,已经发明了许多其他形式的计算板或表格。在中世纪的欧洲计数屋中,将放置一张方格布在桌子上,并根据某些规则在其上四处走动,以帮助计算金钱。

根据Derek J. de Solla Price的说法,据信,抗胚胎机制是最早已知的机械模拟计算机。它旨在计算天文位置。它于1901年在kythera和克里特岛之间的希腊抗京植物岛( Antikythera )旁的抗胚层残骸中发现,其历史可追溯至大约c。公元前100年。直到十四世纪,与抗胚虫机制的相当复杂性的设备才会重新出现。
为天文学和导航使用构建了许多用于计算和测量的机械辅助工具。 Planisphere是AbūRayhānal-Bīrūnī在11世纪初期发明的星形图。天文舞列赛是公元前1或第二个世纪在希腊化世界中发明的,通常归因于Hipparchus 。 Astrolabe是Planisphere和Dioptra的结合,实际上是一款能够在球形天文学中解决几种不同类型的问题的模拟计算机。一款包括机械日历计算机和齿轮的星体标题是由波斯的伊斯法罕的阿比·巴克(Abi Bakr )发明的。齿轮, c。公元1000年。
该行业是一种用于解决比例,三角学,乘法和划分问题的计算工具,以及各种功能,例如正方形和立方根,是在16世纪后期开发的,并在枪支,测量和导航中发现了应用。
平面是一种手动仪器,可以通过机械连接来追踪封闭图的面积。

幻灯片规则是在1620年至1630年左右发明的,英国牧师威廉·奥夫德(William Oughtred)在对数的概念发布后不久。它是用于进行乘法和除法的手动模拟计算机。随着幻灯片规则的发展的进展,添加的量表提供了倒数,正方形和平方根,立方体和立方根,以及诸如对数和指数,循环和双曲线三角学和其他功能之类的先验功能。具有特殊尺度的幻灯片规则仍用于快速执行常规计算,例如用于轻型飞机上的时间和距离计算的E6B圆形幻灯片规则。
在1770年代,瑞士制表师皮埃尔·贾奎特·德罗兹(Pierre Jaquet-Droz)建造了一个机械娃娃(自动机),可以写拿着鹅毛笔。通过切换其内部轮子的数量和顺序不同,因此可以产生不同的消息。实际上,可以机械地“编程”阅读说明。与另外两台复杂的机器一起,娃娃还在瑞士Neuchâtel的Art D'Art et d'Histoire,仍在运营。
1831年至1835年,数学家和工程师Giovanni Plana设计了一台永久日历计算机,该计算机通过滑轮和气缸及以后的系统,可以预测从0 CE(即1 BCE)到4000 CE的每年的永久日历,跟踪跳跃年度和日期变化。苏格兰科学家威廉·汤姆森爵士(William Thomson)于1872年发明的潮汐预测机器是浅水区航行的极大效用。它使用滑轮和电线系统在特定位置在设定的期间自动计算预测的潮汐水平。
Dinialial Analyzer是一种机械模拟计算机,旨在通过集成来求解微分方程,并使用轮盘机制来执行集成。 1876年,威廉·汤姆森爵士(Sir William Thomson)已经讨论了此类计算器的可能建造,但他受到球和磁盘整合器的产量有限的扭矩所困扰。在差分分析仪中,一个积分器的输出驱动了下一个积分器的输入或图形输出。扭矩放大器是使这些机器起作用的进步。从1920年代开始, Vannevar Bush和其他人开发了机械差分分析仪。
在1890年代,西班牙工程师Leonardo Torres Quevedo开始开发一系列高级模拟机器,这些机器可以解决多项式的真实和复杂的根源,这些机器由巴黎科学院于1901年出版。
第一台计算机

英国机械工程师和多态的查尔斯·巴巴奇(Charles Babbage)起源于可编程计算机的概念。他被认为是“计算机的父亲”,在19世纪初期概念化并发明了第一台机械计算机。
在为差异引擎撰写差异引擎之后,他于1822年宣布了自己的发明,在皇家天文学会的一篇论文中,标题为“有关机械在天文和数学表中计算计算的注释”,他还旨在帮助导航计算,在1833年,他意识到,更一般的设计,即分析引擎。程序和数据的输入将通过打孔卡向机器提供,这是一种方法,当时正在使用诸如jacquard织机之类的机械织机。对于输出,机器将具有打印机,曲线绘图仪和铃铛。该机器还可以将数字打到稍后阅读的卡上。该发动机结合了一个算术逻辑单元,以条件分支和循环的形式控制流动以及集成的内存,这使其成为通用计算机的第一个设计,可以用现代用语将其描述为Turing-Complete 。
这台机器比当时更重要。他的机器的所有零件都必须手工制作 - 对于拥有数千个零件的设备来说,这是一个主要问题。最终,由于英国政府决定停止资金,该项目被解散了。 Babbage未能完成分析引擎可能主要归因于政治和财务困难,以及他渴望开发越来越复杂的计算机,并比其他任何人都更快地前进的愿望。尽管如此,他的儿子亨利·巴巴奇(Henry Babbage)于1888年完成了分析引擎计算机(工厂)的简化版本。
机电计算机

莱昂纳多·托雷斯·奎维多(Leonardo Torres Quevedo)在1914年发表的有关自动化学的工作文章中,简要介绍了巴巴奇(Babbage)努力构建机械差异引擎和分析引擎的努力。他将分析引擎描述为体现了有关机器潜在力量的理论,并将设计引擎设计为对他作为机电设备发明者技能的挑战的问题。本文包含能够完全计算公式值的机器的设计 ,对于一系列涉及的变量值集。整个机器应由只读程序控制,该程序配有条件分支的规定。他还介绍了浮点算术的想法。 1920年,为了庆祝算术表发明的100周年,托雷斯在巴黎提出了机电算术计,该机电算术表由连接到(可能是远程)打字机的算术单元组成,可以在其上键入命令,并自动打印出结果。证明了机电分析引擎的可行性。
模拟计算机

在20世纪上半叶,越来越复杂的模拟计算机满足了许多科学计算的需求,该计算机使用问题的直接机械或电气模型作为计算的基础。但是,这些是不可编程的,并且通常缺乏现代数字计算机的多功能性和准确性。第一台现代模拟计算机是一台潮汐预测的机器,由威廉·汤姆森爵士(后来成为凯尔文爵士发明)于1872年发明。微分分析仪是一种机械模拟计算机,旨在通过使用轮轴和盘式机制集成来求解微分方程的机械模拟计算机,詹姆斯·汤姆森(James Thomson)于1876年概念化,威廉·汤姆森爵士(Sir William Thomson)的哥哥詹姆斯·汤姆森(James Thomson)。
机械模拟计算的艺术从1927年的HL Hazen和Vannevar Bush构建的差分分析仪从1927年开始就达到了顶峰。这是建立在James Thomson的机械集成器以及HW Nieman发明的扭矩放大器上的。这些设备中有十几个是在其过时之前建造的。到1950年代,数字电子计算机的成功已经为大多数模拟计算机拼写了结束,但是在1950年代,在某些专业应用(例如教育规则)和飞机(控制系统)中,模拟计算机仍在使用中。
数字计算机
机电
到1938年,美国海军已经开发了一台机电模拟计算机,足以在潜艇上使用。这是鱼雷数据计算机,该计算机使用三角学来解决在移动目标上发射鱼雷的问题。在第二次世界大战期间,其他国家也开发了类似的设备。
早期数字计算机是机电的;电动开关驱动机械继电器以执行计算。这些设备的工作速度低,最终被最初使用真空管的全电动计算机所取代。由德国工程师Konrad Zuse于1939年在柏林创建的Z2是机电继电器计算机最早的例子之一。

1941年,Zuse沿着他的早期机器沿着世界上第一个工作的机电可编程,全自动数字计算机的Z3 。 Z3是由2000个继电器构建的,实现了22位单词长度,以大约5-10 Hz的时钟频率运行。程序代码是在打孔膜上提供的,而数据可以存储在64个单词的内存或键盘中。在某些方面,它与现代机器非常相似,开创了许多进步,例如浮点数。使用二进制系统,使用二进制系统意味着Zuse的机器更容易构建,并且考虑到当时可用的技术,而不是使用二进制系统更容易构建Zuse的机器,而不是更难以实现的十进制系统(在Charles Babbage的早期设计中使用),而不是更难以实现的小数系统。 Z3本身不是通用计算机,但可以扩展到图灵完成。
Zuse的下一台计算机Z4成为世界上第一款商业计算机;由于第二次世界大战的最初延迟,它于1950年完成,并交付给了苏黎世。该计算机是由Zuse自己的公司Zuse KG制造的,该公司成立于1941年,是第一家在柏林开发计算机的公司。
真空管和数字电子电路
纯电子电路元件很快取代了它们的机械和机电等效物,同时数字计算取代了类似物。工程师汤米·弗洛斯(Tommy Flowers)于1930年代在伦敦的邮局研究站工作,开始探索电子设备在电话交换中的使用。他在1934年建造的实验设备五年后开始运行,将一部分电话交换网络转换为电子数据处理系统,使用数千枚真空管。在美国,爱荷华州立大学的约翰·文森特·阿塔纳索夫(John Vincent Atanasoff )和克利福德·贝里(Clifford E.该设计也是全电子的,使用了大约300个真空管,电容器固定在机械旋转的滚筒中以进行内存。

在第二次世界大战期间, Bletchley Park的英国破坏者在打破加密的德国军事通讯方面取得了许多成功。德国加密机器( Enigma )首先在经常由女性经营的电力爆炸案的帮助下袭击。为了破解用于高级陆军通讯的更精致的德国洛伦兹SZ 40/42机器,马克斯·纽曼(Max Newman)和他的同事们委托鲜花来建造巨像。从1943年2月初,他花了11个月的时间设计和建造第一个巨像。经过1943年12月的功能性测试后,巨像被运往Bletchley Park,该公园于1944年1月18日交付,并于2月5日攻击了其第一条信息。
巨像是世界上第一台电子数字可编程计算机。它使用了大量阀(真空管)。它具有纸带输入,并且能够配置为在其数据上执行各种布尔逻辑操作,但并不是Turing-Complete。建造了9个MK II巨像(MK I总共改建为MK II制造十台机器)。 Colossus I Mark I包含1,500个热阀(管),但带有2,400个阀门的Mark II均比Mark I快五倍,更简单,从而大大加速了解码过程。

ENIAC (电子数值集成商和计算机)是美国制造的第一台可编程计算机,尽管ENIAC与巨像相似,但它更快,更灵活,并且是图灵完整的。像巨像一样,ENIAC上的“程序”是由其贴片电缆和开关的状态定义的,与后来的存储程序电子机器相去甚远。编写程序后,必须通过手动重置插头和开关将其机械设置在机器中。 ENIAC的程序员是六名女性,通常被称为“ Eniac Girls”。
它结合了电子产品的高速,并能够解决许多复杂问题。它可以每秒增加或减去5000倍,比其他任何机器快1000倍。它还具有乘积,分隔和平方根的模块。高速记忆限制为20个单词(大约80个字节)。 Eniac的开发与建筑持续到1943年末,在宾夕法尼亚大学的John Mauchly和J. Presper Eckert的指导下建造。包含超过18,000个真空管,1,500个继电器以及数十万个电阻器,电容器和电感器。
现代计算机
现代计算机的概念
现代计算机的原理是由Alan Turing在1936年的开创性论文中提出的,该论文是关于可计算数字的。图灵提出了一个简单的设备,他称之为“通用计算机”,现在被称为通用图灵机。他证明了这样的机器能够通过执行存储在磁带上的说明(程序)来计算任何可以计算的内容,从而使机器可以编程。图灵设计的基本概念是存储程序,其中所有计算说明都存储在内存中。冯·诺伊曼(Von Neumann)承认,现代计算机的核心概念是由于本文造成的。到今天,图灵机是计算理论中研究的中心对象。除了其有限内存商店所施加的局限性外,现代计算机据说是图灵完整的,也就是说,它们具有与通用图灵机器等效的算法执行能力。
存储的程序

早期计算机具有固定的程序。更改其功能需要重新布局和重新结构机器。随着存储程序计算机的提议,这发生了变化。存储程序计算机包括设计指令集,并可以存储在存储器中一组指令(一个程序),以详细介绍计算。艾伦·图灵(Alan Turing)在1936年的论文中阐述了存储的计算机的理论基础。 1945年,图灵(Turing)加入了国家实验室,并开始开发一台电子存储程序数字计算机。他的1945年报告“拟议的电子计算器”是该设备的第一个规范。宾夕法尼亚大学的约翰·冯·诺伊曼(John von Neumann)在1945年还散发了关于EDVAC的报告的初稿。
曼彻斯特婴儿是世界上第一款存储的计算机。 It was built at the University of Manchester in England by Frederic C. Williams , Tom Kilburn and Geoff Tootill , and ran its first program on 21 June 1948. It was designed as a testbed for the Williams tube , the first random-access digital storage装置.尽管1998年的回顾展将计算机描述为“小而原始的”,但它是第一个容纳现代电子计算机必不可少的元素的工作机。婴儿一旦展示了其设计的可行性,就开始了一个项目将其开发成一台实际有用的计算机,即曼彻斯特Mark 1 。
Mark 1又迅速成为Ferranti Mark 1的原型,这是世界上第一家商业上使用的通用计算机。它由Ferranti建造,于1951年2月被运送到曼彻斯特大学。这些后来的机器中至少有七台在1953年至1957年之间交付,其中一辆是阿姆斯特丹的Shell Labs。 1947年10月,英国餐饮公司J. Lyons&Company的董事决定在促进计算机的商业开发方面发挥积极作用。 Lyons的Leo I计算机以1949年的剑桥EDSAC密切建模,于1951年4月开始运营,并经营着世界上第一个常规的办公室计算机工作。
格蕾丝·霍珀(Grace Hopper)是第一个为编程语言开发编译器的人。
电晶体

朱利叶斯·埃德加·利利安菲尔德( Julius Edgar Lilienfeld)于1925年提出了现场效应晶体管的概念。约翰·巴尔登(John Bardeen)和沃尔特·布拉塔( Walter Brattain)在贝尔实验室(Bell Labs)的下工作时,在1947年建造了第一个工作晶体管晶体管晶体管,后来建造了第一个工作的晶体管晶体管晶体管。从1948年的Shockley的双相交界晶体管。与真空管相比,晶体管具有许多优势:它们比真空管更小,需要少的功率,因此散发出更少的热量。连接晶体管比真空管更可靠,并且使用寿命更长,使用寿命更长。晶体管的计算机可以在相对紧凑的空间中包含数万个二元逻辑电路。但是,早期的连接晶体管是相对庞大的设备,这些设备难以在大规模生产的基础上制造,从而将它们限于许多专业应用。
在曼彻斯特大学,在汤姆·基尔本(Tom Kilburn)领导下的一支团队使用新开发的晶体管设计和建造了一台机器,而不是阀门。他们的第一台晶体管计算机和世界第一台计算机是在1953年之前运行的,1955年4月在那里完成了第二版。但是,机器确实利用阀生成其125 kHz时钟波形,并在电路中读取和读取和读取。在其磁性鼓内存上写入,因此它不是第一台完全跨跨晶体的计算机。这种区别是由哈威尔原子能研究所电子部门建造的1955年哈威尔学会。

1959年, Mohamed M. Atalla和Dawon Kahng发明了金属 - 氧化物 - 氧化物晶体效应晶体管(MOSFET),也称为MOS晶体管。 - 用于广泛用途的生产。与双极连接晶体管相比,其高可扩展性,更低的功耗和更高的密度,MOSFET使建立高密度集成电路成为可能。除了数据处理外,它还可以实际使用MOS晶体管作为存储单元存储元素,从而导致MOS半导体内存的发展,从而取代了计算机中早期的磁核存储器。 MOSFET导致了微型计算机革命,并成为计算机革命背后的推动力。 MOSFET是计算机中使用最广泛的晶体管,并且是数字电子产品的基本构建块。
集成电路

计算能力的下一个巨大进步是在集成电路(IC)的出现中。综合巡回赛的想法首先是由一位雷达科学家构想的,为国防部杰弗里·瓦·沃默(Geoffrey Wa Dummer)的皇家雷达建立而努力。 Dummer于1952年5月7日在华盛顿特区的质量电子组件进度研讨会上介绍了综合电路的第一个公开描述。
第一个工作IC是由德州仪器的杰克·基尔比(Jack Kilby)发明的,而罗伯特·诺伊斯(Robert Noyce)则在Fairchild Semiconductor发明了。基尔比(Kilby)在1958年7月记录了有关综合巡回赛的最初想法,成功地展示了1958年9月12日的第一个综合示例。在1959年2月6日的专利申请中,基尔比将他的新设备描述为“半导体材料的机构...电子电路的所有组件都是完全集成的”。但是,基尔比的发明是混合综合电路(混合IC),而不是整体式集成电路(IC)芯片。 Kilby的IC具有外线连接,这使得很难大规模生产。
Noyce还提出了自己的想法,比基尔比晚了半年的综合赛道。 Noyce的发明是第一个真正的单片IC芯片。他的芯片解决了基尔比没有的许多实际问题。它是在Fairchild半导体生产的,是由矽制成的,而Kilby的芯片是由锗制成的。 Noyce的单片IC是使用他的同事让·霍尔尼(Jean Hoerni)于1959年初开发的。
现代的单片IC主要是由MOSFET (MOS晶体管)构建的集成电路(金属 - 氧化物 - 氧化型)的集成电路。最早制造的实验性MOS是由Fred Heiman和Steven Hofstein于1962年在RCA建造的16台晶体芯片。一般的微电子学随后在1964年推出了由Robert Norman开发的第一个商业MOS IC。在1967年,Robert Kerwin, Donald Klein和John Sarace在Bell Labs的Robert Kerwin,Donald Klein和John Sarace开发了自我对准门( Silicon -Gate)MOS晶体管之后, Federico Faggin At Fairchild At Fairchild开发1968年的半导体。此后,MOSFET已成为现代IC中最关键的设备组成部分。

MOS集成电路的开发导致了微处理器的发明,并预示了计算机商业和个人使用中的爆炸。虽然确切的设备是第一个微处理器的主题是有争议的,部分是由于对“微处理器”一词的确切定义缺乏一致,但在很大程度上毫无疑问是,第一个单芯片微处理器是Intel 4004,它是设计和实现的Intel 4004 Federico Faggin与他的Silicon-Gate Mos IC技术以及Intel的Ted Hoff , Masatoshi Shima和Stanley Mazor一起。在1970年代初期,MOS IC技术使单个芯片中有10,000多个晶体管的整合。
芯片上的系统(SOC)是与硬币大小的微芯片(或芯片)上的完整计算机。它们可能具有或可能没有集成的RAM和闪存。如果未集成,则通常将RAM放置在上方(包装上称为包装)或以下(在电路板的另一侧)SOC,并且闪存通常位于SOC旁边,所有这些都做到了提高数据传输速度,因为数据信号不必长距离。自1945年ENIAC以来,计算机已经超过了,现代SOC(例如Snapdragon 865)的大小是硬币的大小,同时比Eniac强大数十万倍,将数十亿晶体管整合在一起,并且只消耗了几瓦。权力。
移动计算机
第一台移动计算机很重,并从电源电源中运行。 50磅(23千克) IBM 5100是一个早期的例子。后来的便携式设备,例如Osborne 1和Compaq便携式便携式设备更轻,但仍需要插入。第一个笔记本电脑(例如电网指南针)通过合并电池来删除这一要求,并且随着计算资源的持续微型化,便携式计算资源的进步和Portable的进步电池寿命,便携式计算机在2000年代越来越受欢迎。相同的发展使制造商能够在2000年代初将计算资源整合到蜂窝手机中。
这些智能手机和平板电脑在各种操作系统上运行,最近成为市场上的主要计算设备。这些是由芯片(SOC)上的系统供电的,它们是硬币大小的微芯片上完整的计算机。
类型
计算机可以通过多种不同的方式进行分类,包括:
通过建筑
按大小,形式和目的
- 超级计算机
- 大型计算机
- 微型计算机(不再使用术语),中端计算机
- 伺服器
- 个人电脑
- 单板计算机
- 插头计算机
- 棒PC
- 可编程逻辑控制器
- 计算机上模块
- 模块上的系统
- 包装中的系统
- 片上系统(也称为应用程序处理器或AP,如果缺少电路(例如无线电电路))
- 微控制器
硬体
一词硬件涵盖了有形物理对象的计算机的所有部分。电路,计算机芯片,图形卡,声卡,内存(RAM),主板,显示,电源,电缆,键盘,打印机和“小鼠”输入设备都是硬件。
计算硬件的历史
第一代 (机械/机电) |
计算机 | 帕斯卡的计算器,算术计,差异引擎,奎吠陀的分析机器 |
可编程设备 | Jacquard Loom ,分析引擎, IBM ASCC/Harvard Mark I , Harvard Mark II , IBM SSEC , Z1 , Z2 , Z3 | |
第二代 (真空管) |
计算机 | Atanasoff – Berry计算机, IBM 604 , Univac 60 , Univac 120 |
可编程设备 | Colossus , Eniac , Manchester Baby , Edsac , Manchester Mark 1 , Ferranti Pegasus , Ferranti Mercury , Csirac , Edvac , Univac I , IBM 701 , IBM 702 ,IBM 650, IBM 650 , Z22 | |
第三代 (离散晶体管和SSI,MSI,LSI集成电路) |
大型机 | IBM 7090 , IBM 7080 , IBM System/360 ,束 |
微型计算机 | HP 2116A , IBM System/32 , IBM System/36 , LINC , PDP-8 , PDP-11 | |
桌上型电脑 | HP 9100 | |
第四代 ( VLSI集成电路) |
微型计算机 | VAX , IBM AS/400 |
4位微型计算机 | 英特尔4004 ,英特尔4040 | |
8位微型计算机 | 英特尔8008 ,英特尔8080 ,摩托罗拉6800 ,摩托罗拉6809 , MOS Technology 6502 , Zilog Z80 | |
16位微型计算机 | 英特尔8088 , Zilog Z8000 , WDC 65816/65802 | |
32位微型计算机 | 英特尔80386 ,奔腾,摩托罗拉68000 ,手臂 | |
64位微型计算机 | Alpha , MIPS , PA-RISC , POWERPC , SPARC , X86-64 , ARMV8-A | |
嵌入式计算机 | 英特尔8048 ,英特尔8051 | |
个人电脑 | 台式计算机,家用计算机,笔记本电脑,个人数字助理(PDA),便携式计算机,平板电脑,可穿戴计算机 | |
理论/实验 | 量子计算机 | IBM Q系统一个 |
化学计算机 | ||
DNA计算 | ||
光学计算机 | ||
基于Spintronics的计算机 | ||
湿软件/有机计算机 |
其他硬件主题
外围设备(输入/输出) | 输入 | 鼠标,键盘,操纵杆,图像扫描仪,网络摄像头,图形平板电脑,麦克风 |
输出 | 监视器,打印机,扬声器 | |
两个都 | 软盘驱动器,硬盘驱动器,光盘驱动器,电视驱动器 | |
电脑巴士 | 短距离 | RS-232 , SCSI , PCI , USB |
远距离(计算机网络) | 以太网, ATM , FDDI |
通用计算机具有四个主要组件:算术逻辑单元(ALU),控制单元,内存以及输入和输出设备(统称为I/O)。这些零件是由通常由电线组制成的公共汽车互连的。这些零件中的每个零件都有数千至万亿个小电路,可以通过电子开关关闭或打开。每个电路代表信息的一点(二进制数字),因此当电路在上面时,它表示“ 1”,而当它熄灭时,它代表“ 0”(以正逻辑表示)。电路在逻辑大门中排列,以便一个或多个电路可以控制一个或多个其他电路的状态。
输入设备
当未经处理的数据借助输入设备发送到计算机时,将处理数据并将其发送到输出设备。输入设备可以手动或自动化。处理行为主要由CPU调节。输入设备的一些示例是:
输出设备
计算机给出输出的方式称为输出设备。输出设备的一些示例是:
控制单元

控制单元(通常称为控制系统或中央控制器)管理计算机的各个组件;它读取和解释(解码)程序说明,将它们转换为激活计算机其他部分的控制信号。高级计算机中的控制系统可能会更改某些指令的执行顺序以提高性能。
所有CPU共有的一个关键组件是程序计数器,一个特殊的内存单元格(寄存器),该单元格(一个寄存器)跟踪内存中的哪个位置将要从下一个指令中读取。
控制系统的函数如下 - 这是一个简化的描述,其中某些步骤可以同时执行或以不同的顺序执行,具体取决于CPU的类型:
- 从程序计数器指示的单元格中读取代码以获取下一条指令。
- 将指令的数值代码解码为其他每个系统的一组命令或信号。
- 增加程序计数器,以指向下一个指令。
- 阅读指令在内存中需要的任何数据(或从输入设备)中需要的任何数据。此必需数据的位置通常存储在指令代码中。
- 向ALU提供必要的数据或注册。
- 如果指令需要ALU或专门的硬件才能完成,请指示硬件执行请求的操作。
- 将ALU的结果写回存储位置或寄存器或输出设备。
- 跳回步骤(1)。
由于程序计数器(概念上)只是另一组内存单元,因此可以通过在ALU中完成的计算进行更改。在程序计数器中添加100个将导致从程序更进一步的100个位置阅读下一个指令。修改程序计数器的说明通常称为“跳跃”,并允许循环(计算机重复的说明)和经常有条件的指令执行(两个控制流的示例)。
控制单元通过处理指令的操作顺序本身就是一个简短的计算机程序,实际上,在一些更复杂的CPU设计中,还有另一台较小但较小的计算机称为Microsequencer ,该计算机运行了一个Microcode程序,该程序会导致Microcode程序所有这些事件发生。
中央处理单元(CPU)
控制单元,ALU和登记册统称为中央处理单元(CPU)。早期CPU由许多单独的组件组成。自1970年代以来,CPU通常是在称为微处理器的单个MOS集成电路芯片上构建的。
算术逻辑单元(ALU)
ALU能够执行两类操作:算术和逻辑。特定ALU支持的一组算术操作可能仅限于加法和减法,或者可能包括乘法,除法,三角学函数,例如正弦,余弦等和方形根。有些人只能在整数(整数)上操作,而另一些人则使用浮点来表示实数,尽管精度有限。但是,任何能够仅执行最简单操作的计算机都可以编程,以将更复杂的操作分解为可以执行的简单步骤。因此,可以对任何计算机进行编程以执行任何算术操作 - 尽管如果其ALU不直接支持该操作,则需要更多时间来执行此操作。 ALU还可以比较数字并返回布尔真实价值(是或错误),具体取决于一个人是否等于,大于或小于另一个(“大于65岁?”)。逻辑操作涉及布尔逻辑: or or of xor ,而不是。这些对于创建复杂的条件语句和处理布尔逻辑可能很有用。
超级计算机可能包含多个Alus,从而可以同时处理多个指令。具有SIMD和MIMD功能的图形处理器和计算机通常包含可以在向量和矩阵上执行算术的Alus。
记忆

计算机的内存可以看作是可以放置或读取数字的单元格列表。每个单元格都有一个编号的“地址”,可以存储一个数字。可以指示计算机“将数字123放入编号为1357的单元格中”或“将单元1357中的数字添加到单元2468中的数字,并将答案放入单元1595中。”存储在内存中的信息实际上代表任何事物。字母,数字,甚至计算机说明都可以轻松地放入内存中。由于CPU没有区分不同类型的信息,因此该软件有责任对内存所见的意义具有重要意义。
在几乎所有现代计算机中,每个内存单元均设置为以八个位(称为A字节)的组存储二进制数字。每个字节能够表示256个不同的数字(2 8 = 256);从0到255或-128至+127。为了存储较大的数字,可以使用几个连续的字节(通常是两个,四个或八个)。当需要负数时,通常将它们存储在两个补充符号中。其他安排是可能的,但通常在专业应用或历史背景之外没有看到。如果计算机可以在内存中存储任何类型的信息,如果可以用数字表示。现代计算机具有数十亿甚至万亿个字节的内存。
CPU包含一组特殊的记忆单元,称为寄存器,可以比主存储区域更快地读取并写入并写入。根据CPU的类型,通常在两个和一百个寄存器之间。寄存器用于最常见的数据项,以避免每次需要数据时访问主内存。随着数据不断进行,减少了访问主内存的需求(与ALU和控制单元相比,通常会很慢)大大提高了计算机的速度。
计算机主内存有两个主要品种:
RAM可以在CPU命令的任何时候读取并写入并写入ROM,但是ROM已预装到永不更改的数据和软件,因此CPU只能从中读取。 ROM通常用于存储计算机的初始启动说明。通常,当关闭计算机的功率时,将删除RAM的内容,但ROM无限期保留其数据。在PC中,ROM包含一个名为BIOS的专业程序,该程序在计算机打开或重置时,在硬盘驱动器中安排将计算机的操作系统从硬盘驱动器加载到RAM中。在经常没有磁盘驱动器的嵌入式计算机中,所有必需的软件都可以存储在ROM中。存储在ROM中的软件通常称为固件,因为它比软件更像硬件。闪存模糊了ROM和RAM之间的区别,因为它在关闭时保留了数据,但也可以重写。它通常比常规ROM和RAM慢得多,因此其使用仅限于不需要高速的应用。
在更复杂的计算机中,可能有一个或多个RAM缓存记忆,它比寄存器慢,但比主内存更快。通常,具有此类缓存的计算机旨在将经常需要的数据自动移动到缓存中,通常不需要对程序员进行任何干预。
输入/输出(I/O)
I/O是计算机与外界交换信息的手段。向计算机提供输入或输出的设备称为外围设备。在典型的个人计算机上,外围设备包括键盘和鼠标等输入设备,以及输出设备,例如显示器和打印机。硬盘驱动器,软盘驱动器和光盘驱动器既可以用作输入设备和输出设备。计算机网络是I/O的另一种形式。 I/O设备通常是具有自己的CPU和内存的复杂计算机。图形处理单元可能包含五十台或更多的微型计算机,这些计算机执行显示3D图形所需的计算。现代台式计算机包含许多较小的计算机,可帮助主CPU执行I/O。 2016年时代的平板显示屏包含其自己的计算机电路。
多任务
虽然可以将计算机视为运行一个存储在其主要内存中的巨型程序,但在某些系统中,有必要同时赋予运行多个程序的外观。这是通过多任务来实现的,即在依次运行每个程序之间使计算机迅速切换。这样做的一种方式是使用一个特殊信号,称为中断,该信号可能会定期导致计算机停止执行指令,而不是做其他事情。通过记住它在中断之前执行的位置,计算机可以稍后返回该任务。如果几个程序同时运行。然后,中断发电机可能会导致每秒几百个中断,每次都会导致程序切换。由于现代计算机通常执行指令比人类感知快几个数量级,因此似乎许多程序正在同一时间运行,即使在任何给定的瞬间只有一个程序。这种多任务方法有时被称为“时间共享”,因为每个程序又分配了“切片”。
在廉价计算机的时代之前,多任务处理的主要用途是允许许多人共享同一台计算机。看来,多任务处理将导致一台计算机在几个程序之间切换,以更慢地运行,直接与正在运行的程序数量成比例,但是大多数程序花费大部分时间等待慢速输入/输出设备来完成其任务。如果程序正在等待用户单击鼠标或按键盘上的键,则在等待事件发生之前,它将不需要“时间切片”。这使其他程序可以执行其他时间,以便可以同时运行许多程序而不会获得不可接受的速度损失。
多处理

某些计算机旨在在多处理配置中在几个CPU上分发其工作,这是一种仅在大型强大的机器中使用的技术,例如超级计算机,大型机计算机和服务器。多核和多核(单个集成电路上的多核)个人和笔记本电脑现已广泛使用,因此,在低端市场中越来越多地使用。
尤其是超级计算机通常具有高度独特的体系结构,这些体系结构与基本的存储程序结构和通用计算机有很大不同。它们通常具有成千上万的CPU,定制的高速互连和专门的计算硬件。由于一次使用大多数可用资源所需的大规模计划组织,此类设计往往仅对专业任务有用。超级计算机通常会在大规模仿真,图形渲染和加密应用程序以及其他所谓的“令人尴尬的并行”任务中看到用法。
软体
软件是指没有材料形式的计算机的一部分,例如程序,数据,协议等。软件是由编码信息或计算机说明组成的计算机系统的一部分,与物理硬件相比该系统已构建。计算机软件包括计算机程序,库和相关的非执行数据,例如在线文档或数字媒体。它通常分为系统软件和应用程序软件。计算机硬件和软件需要彼此,并且两者都无法单独使用。当软件存储在无法轻松修改的硬件中时,例如在IBM PC兼容计算机中使用BIOS ROM时,有时被称为“固件”。
语言
有成千上万种不同的编程语言 - 用于通用语言,而另一些则仅对高度专业的应用程序有用。
编程语言列表 | 编程语言的时间表,按类别按类别的编程语言列表,编程语言列表,编程语言列表,非英语的编程语言 |
常用的装配语言 | 手臂, mips , x86 |
常用的高级编程语言 | ADA , BASIC , C ,C, C ++ , C# , COBOL , FORTRAN , PL/I , REXX , JAVA , LISP ,PASCAL, PASCAL ,对象Pascal |
常用的脚本语言 | Bourne Script , JavaScript , Python , Ruby , PHP , Perl |
程式
将它们与所有其他机器区分开的现代计算机的定义功能是可以对其进行编程。也就是说,可以将某些类型的说明(程序)提供给计算机,并且可以处理它们。基于冯·诺伊曼体系结构的现代计算机通常具有命令式编程语言形式的机器代码。实际上,计算机程序可能只是一些说明或扩展到数百万个说明,例如,文章处理器和Web浏览器的程序也是如此。典型的现代计算机每秒可以执行数十亿个说明( GIGAFLOPS ),并且在多年的操作中很少犯错。由数百万个说明组成的大型计算机程序可能需要编程数年的团队来写作,并且由于任务的复杂性几乎肯定包含错误。
存储的程序架构

本节适用于最常见的基于RAM机器的计算机。
在大多数情况下,计算机说明很简单:将一个数字添加到另一个数字,将某些数据从一个位置移动到另一个位置,将消息发送到某些外部设备等。这些说明是从计算机内存中读取的,并且通常被执行(执行)按照他们的顺序。但是,通常有专门的说明告诉计算机向前或向后跳到程序中的其他位置并从那里继续执行。这些称为“跳跃”指令(或分支)。此外,可以使跳跃指令有条件地发生,以便根据某些先前的计算或某些外部事件的结果,可以使用不同的指令序列。许多计算机通过提供一种“记住”其跳跃位置的跳跃类型来直接支持子例程,并提供另一项指令,以返回该跳跃指令后的指令。
程序执行可能比作读书。虽然一个人通常会按顺序读取每个单词和行,但他们有时可能会跳回文本或跳过不感兴趣的部分的较早位置。同样,计算机有时可能会返回并一遍又一遍地重复程序中的某些部分中的说明,直到满足某些内部条件。这称为程序中的控制流,这就是允许计算机在不干预的情况下反复执行任务的原因。
相比之下,使用口袋计算器的人可以执行基本的算术操作,例如仅使用几个按钮按下两个数字。但是,将所有数字从1到1,000加在一起将需要数千个按钮和大量时间,并且几乎可以确定犯错。另一方面,只需使用一些简单的说明就可以编程计算机来执行此操作。以下示例用MIPS组装语言编写:
begin:
addi $8, $0, 0 # initialize sum to 0
addi $9, $0, 1 # set first number to add = 1
loop:
slti $10, $9, 1000 # check if the number is less than 1000
beq $10, $0, finish # if odd number is greater than n then exit
add $8, $8, $9 # update sum
addi $9, $9, 1 # get next number
j loop # repeat the summing process
finish:
add $2, $8, $0 # put sum in output register
一旦被告知要运行该程序,计算机将执行重复的加法任务,而无需进一步的人干预。它几乎永远不会犯错,现代PC可以在一秒钟内完成任务。
机器代码
在大多数计算机中,单个指令作为机器代码存储,每个说明都给出一个唯一的数字(其操作代码或简称为单位)。将两个数字添加在一起的命令将具有一个opcode;乘以它们的命令将具有不同的操作码,依此类推。最简单的计算机能够执行任何不同的指令。更复杂的计算机可供选择,每个计算机都有一个唯一的数值代码。由于计算机的内存能够存储数字,因此它也可以存储指令代码。这导致了一个重要事实,即可以将整个程序(仅仅是这些说明的列表)表示为数字列表,并且可以在计算机内部以与数字数据相同的方式进行操纵。将程序存储在计算机存储器中的基本概念以及其操作的数据以及von Neumann或存储程序架构的症结所在。在某些情况下,计算机可能会将其某些或全部程序存储在内存中,这些程序与其运行的数据分开。这被称为哈佛大学I计算机之后的哈佛建筑。现代的冯·诺伊曼计算机在其设计中显示了哈佛建筑的一些特征,例如在CPU CACHES中。
虽然可以将计算机程序编写为数字(机器语言)的列表,并且在许多早期计算机中使用了此技术,但在实践中,尤其是对于复杂的程序,它非常乏味且可能容易出错。取而代之的是,每个基本指令都可以给出一个简短的名称,该名称表明其功能且易于记住 - 诸如Add,sub,mult或跳跃之类的助记符。这些助记符统称为计算机的组装语言。将用汇编语言编写的程序转换为计算机实际理解的内容(机器语言)通常是由称为“汇编程序”的计算机程序完成的。

程式设计语言
编程语言提供了各种指定程序供计算机运行的方法。与天然语言不同,编程语言旨在不允许歧义和简洁。它们纯粹是书面语言,通常很难大声朗读。在运行之前,它们通常由编译器或汇编程序翻译成机器代码,或者由解释器在运行时间直接翻译。有时,程序是通过两种技术的混合方法执行的。
低级语言
机器语言和代表它们的汇编语言(统称为低级编程语言)通常是计算机中央处理单元( CPU )的特定体系结构所独有的。例如, ARM架构CPU(例如在智能手机或手持视频游戏中可以找到)无法理解可能在PC中的X86 CPU的机器语言。从历史上看,还创建了许多其他CPU架构,并看到了广泛的使用,尤其是MOS Technology 6502和6510除了Zilog Z80外。
高级语言
尽管比机器语言要容易得多,但是用汇编语言编写长程序通常很困难,而且也很容易出错。因此,大多数实用程序都是用更抽象的高级编程语言编写的,能够更方便地表达程序员的需求(从而有助于减少程序员错误)。高级语言通常使用另一个称为编译器的计算机程序“汇编”到机器语言中(或有时为汇编语言,然后使用机器语言)。高级别的语言与目标计算机的运作少于汇编语言的关系较少,而与最终程序要解决的问题的语言和结构有关。因此,通常可以使用不同的编译器将相同的高级语言程序转换为许多不同类型的计算机的机器语言。这是可以为不同的计算机架构(例如个人计算机和各种视频游戏机)提供视频游戏之类软件的手段的一部分。
程序设计
小程序的程序设计相对简单,涉及对问题的分析,输入的收集,使用语言中的编程结构,设计或使用既定的过程和算法,为输出设备和解决方案提供数据,以适用该问题。随着问题变得更大,越来越复杂,遇到了子程序,模块,正式文档和新范式(例如面向对象的编程)等功能。涉及数千条代码以及更多更多代码的大型程序需要正式的软件方法。开发大型软件系统的任务提出了重大的智力挑战。在可预测的时间表和预算中生产具有可接受的可接受可靠性的软件在历史上很困难。软件工程的学术和专业学科专门针对这一挑战。
错误

计算机程序中的错误称为“错误”。它们可能是良性的,不会影响程序的有用性,或者只有微妙的效果。但是,在某些情况下,它们可能会导致程序或整个系统“挂起”,对输入(例如鼠标咔嗒声或击键)无反应,完全失败或崩溃。否则,有时可能会通过不道德的用户撰写利用,旨在利用错误并破坏计算机正确执行的代码来利用良性错误来实现恶意意图。错误通常不是计算机的错。由于计算机仅执行给出的指令,因此错误几乎总是程序员错误或程序设计中进行的监督的结果。美国计算机科学家兼第一编译器的开发商Grace Hopper海军上将因首次在1947年9月在哈佛大学Mark II计算机中的接力赛而在计算中首次使用“错误”一词而闻名。
网络和互联网

自1950年代以来,计算机已用于协调多个位置之间的信息。美国军方的鼠尾草制度是这样一个系统的第一个大规模示例,该系统导致了许多特殊用途的商业系统,例如Saber 。在1970年代,美国各地研究机构的计算机工程师开始使用电信技术将其计算机连接在一起。这项工作是由ARPA(现为DARPA )资助的,所产生的计算机网络称为ARPANET 。使Arpanet成为可能传播和进化的技术。
随着时间的流逝,该网络在学术和军事机构之外传播,并被称为互联网。网络的出现涉及重新定义计算机的性质和边界。对计算机操作系统和应用程序进行了修改,以包括定义和访问网络上其他计算机资源的能力,例如外围设备,存储的信息等,作为单个计算机资源的扩展。最初,这些设施主要可用于在高科技环境中工作的人,但是在1990年代,电子邮件和万维网等应用程序的传播,加上廉价,快速网络技术(例如以太网和ADSL)的开发,例如计算机网络变得无处不在。实际上,网络的计算机数量正在显著增长。很大一部分的个人计算机定期连接到Internet,以通信和接收信息。 “无线”网络通常使用手机网络,这意味着即使在移动计算环境中,网络也变得越来越无处不在。
非常规计算机
计算机不需要是电子的,甚至没有处理器,也没有电脑,甚至是硬盘。虽然“计算机”一词的流行用法是个人电子计算机的代名词,但计算机的典型现代定义是:“计算的设备,尤其是可编程的(通常是]的电子机器,可以执行高速数学或逻辑操作或逻辑操作或这会组装,存储,关联或以其他方式处理信息。”根据此定义,任何处理信息的设备都符合计算机的资格。
未来
有积极的研究可以使许多有前途的新技术制造非经典计算机,例如光学计算机, DNA计算机,神经计算机和量子计算机。大多数计算机都是通用的,并且能够计算任何可计算功能,并且仅受其内存容量和操作速度的限制。但是,计算机的不同设计可以为特定问题提供截然不同的性能。例如,量子计算机可能会很快破坏某些现代加密算法(通过量子保理)。
计算机架构范例
计算机架构有多种类型:
在所有这些抽象的机器中,量子计算机是革命计算的最有望。逻辑门是一种常见的抽象,可以应用于上述大多数数字或模拟范式。存储和执行称为程序的指令列表的能力使计算机非常通用,从而将它们与计算器区分开。教会论文是这种多功能性的数学说明:任何具有最低功能的计算机(Turing-Complete)原则上都能执行与其他计算机可以执行的相同任务。因此,如果有足够的时间和存储容量,任何类型的计算机(上网本,超级计算机,蜂窝自动机等)都可以执行相同的计算任务。
人工智慧
计算机将完全解决问题的方法,而无需考虑效率,替代解决方案,可能的快捷方式或代码中可能的错误。学习和适应的计算机程序是人工智能和机器学习新兴领域的一部分。基于人工智能的产品通常分为两个主要类别:基于规则的系统和模式识别系统。基于规则的系统试图代表人类专家使用的规则,并倾向于开发昂贵。基于模式的系统使用有关问题的数据来生成结论。基于模式的系统的示例包括语音识别,字体识别,翻译和在线营销的新兴领域。
专业和组织
随着计算机在整个社会中的扩散,涉及计算机的职业越来越多。
与硬件有关 | 电气工程,电子工程,计算机工程,电信工程,光学工程,纳米工程 |
与软件有关 | 计算机科学,计算机工程,桌面出版,人与计算机互动,信息技术,信息系统,计算科学,软件工程,视频游戏行业,网页设计 |
计算机需要很好地合作并能够交换信息的需求催生了对正式和非正式性质的许多标准组织,俱乐部和社会的需求。
标准组 | ANSI , IEC , IEEE , IETF , ISO , W3C |
专业社会 | ACM , AIS , IET , IFIP , BCS |
免费/开源软件组 | 免费软件基金会, Mozilla基金会, Apache软件基金会 |
也可以看看
- 计算理论
- 计算机安全
- 计算机硬件术语的词汇表
- 计算机科学史
- 计算机术语词源列表
- 计算机系统制造商列表
- 虚构计算机列表
- 关于计算机的电影清单
- 计算机科学的开拓者名单
- 脉冲计算
- Top500 (最强大的计算机列表)
- 非常规计算