如今基于计算机系统的机器随处可见,大到服务器,基站,航天飞机,飞船,小到个人PC,手机,家用电器。这当中都会涉及CPU,不管是通用计算机系统还是专用计算机系统,他们的核心都离不开CPU和其中的程序。

  本文章主要讲述计算机的硬件,而且会有对计算机的构造不断挖掘至底层电路和Layout层。后面则会讲解计算机的软件系统。

  在介绍计算机CPU工作原理前,有必要了解一下计算机的发展史。

计算机的历史

  机械,电子,半导体,计算机之间是密不可分的。

无计算机时代

  这个名字是我自己起的,哈哈。
  看起来很滑稽,但是如果想想一下我们没有计算机的话,做一些数值分析,物理仿真,数理统计那将是一个大工程,更别说拿计算机来进行娱乐和撩妹子了。
  说到底,计算机是一个辅助计算,计算机能算出来的,只要给人类足够的时间也能算出来。
  最早,人类利用类似符木的工具辅助记录,像是腓尼基人使用黏土记录牲口或谷物数量,然后藏于容器妥善保存,米诺斯文明的出土文物也与此相似,当时的使用者多为商人、会计师及政府官员。历史上算盘是人类的专门用来计算的工具。
1614年,苏格兰数学家纳皮尔发现利用加减计算乘除的方法,依此发明对数,纳皮尔在制作第一张对数表的时候,必需进行大量的乘法运算,而一条物理线的距离或区间可表示真数,于是他设计出计算器纳皮尔的骨头协助计算。到1633年,英国牧师奥特雷德利用对数基础,发明出一种圆形计算工具比例环(Circles of Proportion),后来逐渐演变成近代熟悉的计算尺。直到口袋型计算器发明之前,有一整个世代的工程师,以及跟数学沾上边的专业人士都使用过计算尺。美国阿波罗计划里的工程师甚至利用计算尺就将人类送上了月球,其精确度达到3或4位的有效数字。
  

计算机机械时代

  机械时代我把它叫做计算机的史前时代,有点类似于人类历史出现前的“史前”这个概念。
  1623年,德国科学家施卡德建造出世界已知的第一部机械式计算器,成为计算机世代之父,这部机械改良自时钟的齿轮技术,能进行六位数的加减,并经由钟声输出答案,因此又称为“算数钟”,可惜后来毁于火灾,施卡德也因战祸而逝。
  1642年法国数学家帕斯卡为税务所苦的税务员父亲发明了滚轮式加法器,可透过转盘进行加法运算。我们有一种编程语言就叫pascal。就是为了纪念这个人的。1673年德国数学家莱布尼茨使用阶梯式圆柱齿轮加以改良,制作出可以四则运算的步进计算器,可惜成本高昂,不受当代重视。
  1725年,法国纺织工人鲁修为便于转织图样,在织布机套上穿孔纸带,他的合作伙伴则在1726年着手改良设计,将纸带换成相互串连的穿孔卡片,以此达到仅需手工进料的半自动化生产。1801年,法国人雅卡尔发明提花织布机,利用打孔卡控制织花图样,与前者不同的是,这部织布机变更连串的卡片时,无需更动机械设计,此乃可编程化机器的里程碑。这应该也算是早起的自动化机床吧。
  1823年,英国数学家巴贝奇在政府的支持下,开始建造以蒸汽引擎驱动的差分机,用来比较数字间的差异,经历10年未能竟功,巴贝奇遂转而研究设计得更为完整,直接利用打孔卡输入和储存资料的分析机,可惜最后巴贝奇穷其毕生精力都未能造出任一完整的差分机或分析机。
  巴贝奇在1835年提到,分析机是一部一般用途的可编程化计算机,同样是以蒸汽引擎驱动,吸收提花织布机的优点,使用打孔卡输入资料,其中的重要创新是用齿轮模拟算盘的算珠3。他于是最初的计划是打算利用打孔卡控制机器进行运算,印出高精确度的对数表(特殊用途计算机),后来才转而开发一般用途的可编程化计算机。
  尽管巴贝奇的设计健全,方向正确(至少是仅需部分修正),计划仍因各种大小问题而阻扰不断。一来巴贝奇难以共事,任何人不合其意便起争端,加上他的机器全是手工打造,上千个零件只要一个零件有一点小差错,就会引起重大错误,因此需要远超寻常的制造公差。英国政府也因差分机的经验,不愿继续资助如此先进的科技,于是资金告馨后,这项计划就在与技工的吵吵闹闹中告终。
  爱达·勒芙蕾丝曾经翻译意大利人所写的《分析机概论》一书,并加以注解,后来与巴贝奇发展出相当深的关系,她曾说:“分析机所织者,是代数的连续花纹”。后来爱达为分析机的打孔卡安排指令顺序,因此有人认为她是世界首位程序员,不过也有人不以为然,关于爱达的贡献在计算机科学上的重要性尚有不少争论。现在美国军方开发的一种计算机语言ade就是为了纪念世界上第一位程序员而命名。
  美国宪法规定每十年必须进行一次人口普查,1880年排山倒海的普查资料就花费了8年时间处理分析,因此美国统计学家赫尔曼·何乐礼在1890年开发出一种排序机,利用打孔卡储存资料,再由机器感测卡片,协助美国人口调查局对统计资料进行自动化制表,结果不出3年就完成户口普查工作[4]。
  何乐礼在1896年成立制表机器公司,几经并购,后来成为国际商业机器有限公司(IBM)的一部分。到了1950年,IBM的卡片已在业界与政府机构广泛使用,为了让卡片可作为证明文件重复使用,卡片上都印有“请勿折叠、卷曲或毁损”的警告字样,这行警语后来还成为后二次大战时期的流行标语。

计算机机电时代

  机电时代我把他叫做计算机的古代,这个时候由于继电器和电力技术的发展。
  1936年,在德国独力研发的楚泽,开始打造以记忆能力和可编程化为特色的Z系列计算器。1938年,楚泽在柏林父亲的公寓中完成Z1电脑,完全机械制造,使用二进位制,但是由于部分零件精确度的问题,运作并不稳定。
  楚泽后续机种Z3电脑完成于1941年,使用打孔胶卷作为输入程式的媒介,以电话型继电器为基础,运作顺利,因此成为首部可编程控制的功能性电脑。Z3电脑在许多方面都跟现代电脑相当类似,比如说使用了浮点数,是多项先进功能中的先锋。楚泽扬弃不好用的十进位制(巴贝奇早期设计皆使用十进位制)取简单的二进位制,以当时的科技工艺来说,此举使得他的机种易于制造,较为可靠,也有人认为这是楚泽比巴贝奇成功的主要原因之一。Z3电脑虽然被人忽略,不过已在1990年代证实合乎通用电脑定义(忽略其物理储存容量限制)。
  然而他当时是在二战期间的德国,所以这些机器受到了盟军的轰炸。此时美国各所研究机构则开始大规模的进行相关研究。
  1937年,美国数学家兼工程师克劳德·香农在麻省理工学院发表他的硕士论文,是史上首度将布尔代数应用在电子继电器和电闸上的人。论文题为《中继和交换电路的符号分析》(A Symbolic Analysis of Relay and Switching Circuits),是数字电路设计的实践基础。
  1937年11月,在贝尔实验室工作的乔治·史提比兹在他家厨房组装出一部以继电器表示二进位制的电脑“K模型机”。贝尔实验室后来在1938年通过史提比兹提出的所有研究计划,1940年1月8日,复数计算器完工。1940年9月11日,在达特茅斯学院召开的美国数学学会会议上,作为示范,史提比兹透过电话线向复数计算器传送远端指令,这是电脑远端遥控的首度实例。参与会议的目击者包括约翰·冯·诺伊曼、约翰·莫克利和诺伯特·维纳都在回忆录里提过这件事。
  1939年,爱荷华州立大学的约翰·阿塔纳索夫和克里夫·贝理开发出阿塔纳索夫-贝瑞计算机(ABC),为一特殊用途的电子计算机,用以解决一次方程的问题。ABC使用超过300个真空管提高运算速度,以固定在机械旋转磁鼓上的电容器作为记忆器件,虽然不可编程化,但是采用二进位制和电子线路等各方面,都使其成为第一部现代电脑的先驱。
  1939年,马克一号在IBM安迪卡特(Endicott)实验室起手开发,其正式名称为自动化循序控制计算器(ASCC), 是为一般用途的电动机械计算机,由哈佛大学数学家霍华·艾肯总筹指挥,IBM赞助人力资金。马克一号参考巴贝奇分析机,使用十进位制、转轮式储存器、旋转式开关以及电磁继电器,由数个计算单元平行控制,经由打孔纸带进行程式化(改良后改由纸带读取器控制,并可依条件切换读取器)。虽然马克一号被认为是第一部通用计算机,但其实并没达到图灵完全的条件。马克一号后来移至哈佛大学,于1944年5月开机启用。

计算机电子时代

  电子时代我把他叫做计算机的近代,此时电子技术已经开始萌芽,电子管和晶体管也已经出现。
  美国制造的埃尼阿克(全名为电子数值积分计算器)一般被认为是世上第一部一般用途的电子计算机,公认是有效利用电子学的大型电脑。埃尼阿克是现代计算机发展史上重要的里程碑,由约翰·莫克利和约翰·伊克特指导建造,起初它以运算速度震惊世人,表现超越同期设计千倍之谱,后来更以微型化潜力留名千古。
  埃尼阿克的发展建造,始于1943年,1945年完工。设计刚发表时,不少研究人员认为这上千件脆弱的零件(像是真空管)会承受不住压力损毁殆尽,导致埃尼阿克整天下线修整,一无事处。这也的确,但是每秒数千次的运算速度,只要零件故障前能跑上几个钟头也算值回票价了。埃尼阿克是符合图灵完全的器件,“程式”对埃尼阿克来说,是一段电子程式储存器到主机的距离,之间是由电缆和开关拼凑连接出来的运作状态,不过在当时,光是能够独立运算这点,就已被认为是一大胜利5。 
  第一部成功运作的冯·诺伊曼结构电脑是1948年曼彻斯特大学的小规模实验机,又称“宝贝”。随后在1949年,曼彻斯特马克一号电脑登场,功能完整,以威廉管和磁鼓作为内存媒介,并且引进变址寄存器的功能。
  竞逐“第一部数字储存程式电脑”名号的还有在剑桥大学设计建造的延迟存储电子自动计算器(简称EDSAC),EDSAC比曼彻斯特的“宝贝”年轻一个年头,但是解决问题的能力不遑多让,然而实际上,启发EDSAC的就是埃尼阿克的继任者──离散变数自动电子计算机(简称EDVAC)。不像平行处理的埃尼阿克,EDVAC只使用单一的处理单元,此一设计简单好用,走在后来微型化趋势的前端,还增加了可靠的程度。近代电脑结构多取经自曼彻斯特马克一号、EDSAC和EDVAC,有些人也将其视为电脑界的“夏娃”。
  欧洲大陆第一部通用型可编程化电脑是小型电子计算机(简称МЭСМ),由苏联基辅电机学会的瑟吉·亚历塞维奇·列别捷夫带领一组科学家团队所建造,МЭСМ在1950年开始运作,使用6000根真空管,25千瓦的电力,每秒可作3000次运算。其它早期电脑还有澳洲设计的科学与工业研究议会自动计算机(简称CSIRAC),在1949年作首次程式测试。
  1947年,一家以饮料起家的英国餐饮公司约瑟·里昂公司,对新式的办公室管理技术产生莫大的兴趣,决定积极参与电脑的商业开发。到了1951年,里昂一号电脑起跑,执行了世上第一个办公室电脑的例行指令。
  1951年6月,通用自动计算机(简称UNIVAC I)送抵美国人口调查局,这部电脑由雷明顿兰德公司制造,却常被误认为是“IBM的UNIVAC”。雷明顿兰德公司后来以每台百万美金以上的售价,卖出46部。UNIVAC是第一部量产的电脑,使用5200根真空管,125千瓦电力,所使用的水银延迟线存储器能储存11个正十位数字组1000个(72位元字组),UNIVAC不像IBM的电脑,配备有打孔卡读卡机,1930年代风行的金属磁带(即UNISERVO)导入后,结果与有些商用资料储存器件并不相容。那个年代,其它电脑都用高速的打孔带和现代的磁带作为输出输入设备。
  1951年11月,约瑟·里昂公司开始每周定期在里昂一号上,运作一支糕饼评估程式,这是第一支在程式储存电脑上的商业应用程序。
  1952年,IBM公开IBM 701电子资料处理器,是IBM 700/7000型系列的前锋,也是IBM的第一部大型电脑。1954年推出IBM 704,所使用的磁芯内存后来成为大型电脑的标准配备。第一套可执行的一般用途高阶编程语言FORTRAN也是在1955年到1956年间,IBM为IBM 704所开发的,并在1957年初发表。
  1954年,IBM推出一款电脑体积较小,价格和善,后来广受欢迎。这款IBM 650重达900公斤,附属的电力供应器件也有1350公斤左右,两者各安置在与人等高的橱柜里。这款电脑要价50万美金,或可以每月$3500块美金的代价出租。原本其磁鼓内存只能保存2000个十位数字组,还需要晦涩难明的编程程序才能有效运作,诸如此类的内存限制在之后的十年间主宰了编程程序,直到编程模组一番革命性的改变后,软件开发才有了较人性化的转变。
  1955年,莫里斯·威尔克斯发明微程式设计,将基础指令的程式内建,方便定义或延伸的工作7,广泛运用在大型计算机(和其它诸如IBM 360系列的电脑)的中央处理器和浮点运算单元上。1956年,IBM首部磁盘储存器件统计控制随机存取法(简称RAMAC)面市,使用50面24英寸的金属磁盘,每面100道磁道,总容量5MB,平均每MB需花费1万美金8。

计算机集成电路时代

  集成电路时代则和现代计算机的发展密不可分。
  
  创建于1968年的英特尔公司(Intel),是全球最大的半导体生产企业,也是“硅谷”最有代表性的企业之一。英特尔的两位创始人,一位是发明了集成电路的罗伯特·诺伊斯(Robert Noyce),另一位是提出“摩尔定律”的戈登·摩尔(Gordon Moore)。而公司的第三位员工安迪·格鲁夫(Andy Grove)后来则成为全球最优秀的企业管理大师之一。
  1927年,罗伯特·诺伊斯(Robert Noyce,也称Bob Noyce)生于美国爱荷华州。中学毕业后,考入格林纳尔学院,同时学习物理、数学两个专业。1953年获麻省理工学院物理学博士学位。1929年,戈登·摩尔(Gordon Moore)出生在美国加州的旧金山。他曾获得加州大学伯克利分校的化学学士学位,并且在加州理工学院获得物理化学博士学位。1957年,诺伊斯和摩尔加入了由威廉·肖克利(William Shockley)创办的肖克利半导体实验室(Shockley Semiconductor Laboratory)。
  肖克利曾因在贝尔实验室参与发明晶体管而荣获1956年度的诺贝尔物理学奖,被称为“晶体管之父”。当时,他网罗了科技界的年轻英才,组建了一只梦之队。然而,这些天才明星们却无法忍受他。很快,诺伊斯和摩尔等八人便离开了肖克利。怒不可遏的肖克利称他们是“八叛逆”。1957年,这八个人成立了仙童半导体公司(Fairchild Semiconductor,也称飞兆半导体)。
  仙童半导体很快发展成为当时世界上最大、最富创新精神和最令人振奋的半导体生产企业,为硅谷的成长奠定了坚实的基础。这家公司为硅谷孕育了成千上万的技术人才和管理人才,被称为电子、电脑业界的“西点军校”、“硅谷人才摇篮”。仙童的公司文化既悠闲又人性化,在硅谷树立了典范,这很大程度上归功于诺伊斯的领导。  
  1958到1959年,德州仪器(Texas Instruments)的杰克·基尔比(Jack Kilby)和诺伊斯先后发明集成电路,即将电路所有元件嵌入单片半导体中。基尔比后来于2000年获得诺贝尔奖,可惜诺伊斯1990年因游泳时突然心脏病发作而去世,无法共享这一殊荣。 
  1936年,安德拉斯·格洛夫(Andras Grof)出生于匈牙利布达佩斯一个犹太人家庭。20岁时,他到了美国,并改名为安迪·格鲁夫(Andy Grove)。不久他进入纽约城市大学,后来进入加州大学伯克利分校,并于1963年获得博士学位。同年,进入了仙童半导体公司工作。 
  1965年,担任仙童半导体工程师的摩尔在《电子学》杂志(Electronics Magazine)发表了文章《让集成电路填满更多的组件》,文中预言半导体芯片上集成的晶体管和电阻数量将每年增加一倍。后来,这个预言被称为“摩尔定律”(Moore’s Law)。 
  到1967年,仙童半导体成立十年时,公司营业额已接近2亿美元。但是,由于无法忍受企业惰性,诺伊斯和摩尔与很多人一样,也选择了离开。1968年,他们创办了另外一家公司——英特尔(Intel),最终这家公司成为半导体行业的翘楚。
  英特尔公司是世界上最大的半导体公司,也是第一家推出x86架构处理器的公司,总部位于美国加利福尼亚州圣克拉拉。由罗伯特·诺伊斯、高登·摩尔、安迪·葛洛夫,以“集成电子”(Integrated Electronics)之名在1968年7月18日共同创办公司,将高级芯片设计能力与领导业界的制造能力结合在一起。英特尔也有开发主板芯片组、网卡、闪存、绘图芯片、嵌入式处理器,与对通信与运算相关的产品等。
英特尔的CPU系列

  • 桌面型
    8086
    8088
    80286
    80386
    80486
    奔腾(Pentium)
    奔腾Pro(Pentium Pro)
    奔腾MMX(Pentium MMX)
    奔腾II(Pentium II)
    赛扬(Celeron)
    奔腾III(Pentium III)
    奔腾4(Pentium 4)
    奔腾D(Pentium D)
    赛扬D(Celeron D)
    酷睿2(Core 2)
    奔腾双核(Pentium Dual-Core)
    赛扬双核(Celeron Dual-Core)
    酷睿i3(Core i3)
    酷睿i5(Core i5)
    酷睿i7(Core i7)
    酷睿i9(Core i9)
  • 笔记型
    奔腾III Mobile(Pentium III Mobile)
    奔腾4 Mobile(Pentium 4 Mobile)
    奔腾M(Pentium M)
    赛扬M(Celeron M)
    酷睿(Core)
    酷睿2(Core 2)
    凌动(Atom)
    酷睿i3(Core i3)
    酷睿i5(Core i5)
    酷睿i7(Core i7)
  • 服务器
    奔腾II至强(Pentium II Xeon)
    奔腾III至强(Pentium III Xeon)
    至强(Xeon)
    安腾(Itanium)
    安腾2(Itanium 2)

      1962年11月3日《纽约时报》在相关报导中首次使用“个人电脑”一词,至1968年时惠普公司即把其产品Hewlett-Packard 9100A称为“个人电脑”。世界公认第一部个人电脑,则为1971年Kenbak Corporation推出的Kenbak-1。第一部大量生产的个人电脑,则为1971年Computer Terminal Corporation所推出的Datapoint 2200。至1973年,法国工程师François Gernelle和André Truong所发明的Micral个人电脑,则为首部使用英特尔微处理器的商用个人电脑。
      东芝采用x86架构开发出世界第一部笔记本电脑。
      1980年代,IBM推出以英特尔的x86的硬件架构及微软公司的MS-DOS操作系统的个人电脑,并制定以PC/AT为PC的规格。之后由英特尔所推出的微处理器以及微软所推出的操作系统发展几乎等同于个人电脑的发展历史。微特尔架构全面取代了IBM在个人电脑主导的地位。 
      1981年,IBM公司推出IBM 5150,为快速发展的个人电脑市场推波助澜。IBM5150使用英特尔8088微处理器,微软MS-DOS操作系统。同年,第一款便携式电脑研制成功,亚当·奥斯本(Adam Osborne)揭开了Osborne I的神秘面纱。Osborne I重约24磅,售价1795美元,显示器5英寸,另外,有两个软盘驱动器、64千字节存储空间和一个调制解调器。
      1982年,Commodore 64(C64)上市,Commodore由此开始了成功的道路。Commodore 64持续热销11年之久,销量至少为1700万台,足以赢得《吉尼斯世界纪录》“最畅销电脑”的头衔。Commodore 64售价595美元,相对便宜,由此激发了数千套软件的开发。
    1983年,苹果推出第一款具有图形用户界面的个人电脑Lisa。尽管这款创新性电脑在美国宇航局找到了卖主,但由于售价高达1万美元,加之运行速度慢,Lisa在市场上并没有获得成功。
      1983年,个人电脑市场并未全线溃败,康柏根据IBM PC的相同软件,开发出第一台PC版本,在商业上大获成功。
      1984年,苹果推出了第一款具有图形用户界面的电脑Macintosh,这是对家用电脑有着里程碑意义的一年。在“超级碗”比赛电视广告上,“奥威尔”主题把苹果说成是个人电脑市场的大救星,将击败行业大哥大IBM。IBM并没有停止前进的脚步,在1984年发布了PC Jr. 和PC-AT两款个人电脑。PC-AT售价4000美元,比Macintosh价格高出60%,宣称与之前的IBM个人电脑相比,存储容量更大、性能更优。 
      1985年,东芝采用x86架构开发出世界第一台真正意义的笔记本电脑。
      1986年,康柏发布第一款采用英特尔最新80386芯片的台式机Deskpro 386,在同IBM较量中胜出。电脑历史博物馆称,Deskpro 386的运算速度和能力都优于以前几款大型机和微型电脑。
      1987年,IBM也吸引了业界的关注,发布了OS/2操作系统以取代DOS。
    足够薄的膝上型电脑被称为“笔记本”,在20世纪80年代末期问世。康柏公司在笔记本电脑市场率先发威,推出了LTE 和LTE 286,这两款电脑有内置硬盘和软盘驱动器,性能类似于台式机。
      1990年,IBM和微软两强之间出现了裂痕,IBM的OS/2操作系统不断抢占市场,而微软则将未来寄托于Windows。Windows早在1985年便已面市,但直到90年代初3.0版本发布以后才在市场站稳脚跟。微软的Windows和包括Word、Excel和PowerPoint在内的Office平台的巨大成功,令其在个人电脑软件市场上占据着主导地位。

计算机体系

  计算机硬件涉及到各种设备、芯片以及接口。这些内容繁复、繁琐,作为软件开发者,通常不会去关心。作为软件开发者,最关心的往往是三个部件:中央处理器(CPU)、内存(Memory)以及 I/O 控制芯片(I/O Controller)。接下来,我们以这三个部件为中心,探索一下计算机硬件架构及其发展历程。
  计算机硬件的发展,很大程度上可以归结于 CPU 技术的发展。具体的表现,就是 CPU 核心频率的不断提升。
  在早期,CPU 的核心频率和内存的频率一致,因此 CPU 可以和内存连在同一根总线上。至于显示器、键盘、软盘驱动器、硬盘驱动器,它们的工作速度比 CPU 和内存慢得多。于是,通常来说,这些 I/O 设备需要通过各自的控制器与总线相连。
  后来,CPU 的频率提升很多,而内存的频率跟不上 CPU 的频率。于是 CPU 开始采用倍频的方式与总线通信——也就是说,CPU 跑过多个时钟周期,再一股脑跟总线通信;就好像总司令连着颁布几道命令,通讯员一口气把这些命令下达到前线一样。与此同时,图形化操作系统(Windows)和 3D 游戏迅速发展起来,这就要求显卡能与 CPU 和内存之间进行大量的数据交换。于是,人们专门设计了一个北桥芯片(Northbridge, PCI Bridge),用来协调 CPU、内存和显卡之间的高速内存交换。
  连接在北桥芯片上的设备,运行速度都非常高。相对应的,硬盘、键盘、鼠标等设备速度就显得很低了。如果北桥要同时协调一群高速设备和一群低速设备,那么北桥的设计就会变得非常复杂。为此,人们设计了南桥,用来统筹这些相对低速的设备。
  后来,随着处理器制造技术的提升,北桥被 CPU 直接集成在内,形成了类似下图的结构。
  可以看到,随着硬件制造技术的提升,特别是 CPU 制造技术的提升,计算机的硬件结构随之不断发生改变。不过,本质上还是没有逃开 CPU - 内存 - I/O 设备的结构。这也是为什么,我们在做程序设计和开发的时候,可以总是将计算机抽象成这样一个简单的模型。
  

计算机各部分硬件

中央处理器:用来对数据进行各算术运算和逻辑运算,是计算机的执行单元。
主存储器:也称内存,直接与CPU相连,是计算机中的工作存储器,计算机当前正在运行的程序与数据必须存放在主存内。存取速度快,但存储容量小。
辅助存储器:也称外存,存储容量大,几乎存放计算机中所有的信息,在计算机实际执行程序和加式处理数据时,辅助存储器中的信息需要先传送入内存后才能被CPU使用。
输入输出设备:简称I/O设备,是计算机与外界联系的桥梁,输入设备是指能向计算机系统输入信息的设备,包括键盘、鼠标、扫描仪等。输出设备是指能从计算机系统国输出信息的设备,包括显示器、打印机、绘图仪等。
总线:是连接计算机中CPU、内存、辅存、各种输入输出部件的一组物理信号线及其相关的控制电路,是计算机中用于在各部件间运载信息的公共机构。
主板:相当于躯干,所有内置配件都在上面。CPU:负责处理信息,相当于人的大脑
内存条:储存CPU要处理的临时信息(现在一般用4G,8GB,16GB)。
硬盘:储存数据(文件)用的(现在一般用500G,1T);
显卡:负责将图像显示到显示器上(有些用户不用独立显卡的,比如就用来办公、上网、聊天用的用集成显卡就够用了,对于玩游戏的用户来说当然是独立显卡的比较好,常见GeForce6600GT,GeForce 7300GT等);
光驱:放光盘用的,也包括刻录机(软件光盘、游戏光盘、VCD DVD等 光驱有CD光驱 还有DVD 还有刻录机);
网卡:上网或局域网用的,现在大多主板都已集成了;
声卡:负责把声音数据传到音响上播放。
物理加速卡:AGIEA的可以代替CPU处理游戏中的物理现象的加速卡,并不常见。
IEEE1394卡:视频采集卡,可以将摄像机(用MiniDV磁带的)上录的视频传到电脑上。
电视卡:可以在电脑上看电视,录节目。

计算机的启动工作流程:
1.计算机加电。
2.BIOS开始运行,检测硬件:cpu、内存、硬盘等。BIOS就相当于一个小的操作系统,它有底层的I/O软件,包括读键盘,写屏幕,进行磁盘I/O,该程序存放于一非易失性闪存RAM中。
3.BIOS读取CMOS存储器中的参数,选择启动设备。
4.从启动设备上读取第一个扇区的内容(MBR主引导记录512字节,前446为引导信息,后64为分区信息,最后两个为标志位)。
5.根据分区信息读入bootloader启动装载模块,启动操作系统。Boot Loader 是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
6.然后操作系统询问BIOS,以获得配置信息。对于每种设备,系统会检查其设备驱动程序是否存在,如果没有,系统则会要求用户按照设备驱动程序。一旦有了全部的设备驱动程序,操作系统就将它们调入内核。然后初始有关的表格(如进程表),穿件需要的进程,并在每个终端上启动登录程序或GUI。

CPU内部ISA层

  计算机的大脑就是CPU,它从内存中取指令->解码->执行,然后再取指->解码->执行下一条指令,周而复始,直至整个程序被执行完成。
  每个cpu都有一套可执行的专门指令集,任何软件的执行最终都要转化成cpu的指令去执行。所以Pentium(英特尔第五代x86架构的微处理器)不能执行SPARC(另外一种处理器)的程序。这就好比不同的人脑,对于大多数人类来说,人脑的结构一样,所以别人会的东西你也都可以会,但对于爱因斯坦的脑子来说,它会的你肯定不会。
  因访问内存以得到指令或数据的时间比cpu执行指令花费的时间要长得多,所以,所有CPU内部都有一些用来保存关键变量和临时数据的寄存器,这样通常在cpu的指令集中专门提供一些指令,用来将一个字(可以理解为数据)从内存调入寄存器,以及将一个字从寄存器存入内存。cpu其他的指令集可以把来自寄存器、内存的操作数据组合,或者用两者产生一个结果,比如将两个字相加并把结果存在寄存器或内存中。
  寄存器的分类:
  1.除了用来保存变量和临时结果的通用寄存器外
  2.多数计算机还有一些对程序员课件的专门寄存器,其中之一便是程序计数器,它保存了将要取出的下一条指令的内存地址。在指令取出后,程序计算器就被更新以便执行后期的指令
  3.另外一个寄存器便是堆栈指针,它指向内存中当前栈的顶端。该栈包含已经进入但是还没有退出的每个过程中的一个框架。在一个过程的堆栈框架中保存了有关的输入参数、局部变量以及那些没有保存在寄存器中的临时变量
  4.最后 一个非常重要的寄存器就是程序状态字寄存器(Program Status Word,PSW),这个寄存器包含了条码位(由比较指令设置)、CPU优先级、模式(用户态或内核态),以及各种其他控制位。用户通常读入整个PSW,但是只对其中少量的字段写入。在系统调用和I/O中,PSW非常非常非常非常非常非常重要。
  寄存器的维护:
  操作系统必须知晓所有的寄存器。在时间多路复用的CPU中,操作系统会经常中止正在运行的某个程序并启动(或再次启动)另一个程序。每次停止一个运行着的程序时,操作系统必须保存所有的寄存器,这样在稍后该程序被再次运行时,可以把这些寄存器重新装入。

CPU汇编指令执行层

CPU底层电路工作层

如何深入了解通用计算机系统--上相关推荐

  1. 军队计算机使用管理规定,军队通用计算机系统使用安全要求.doc

    军队通用计算机系统使用安全要求 国家标准--军队通用计算机系统使用安全要求(GJB1295-91) Operation security requirements formilitary genera ...

  2. 通用计算机与嵌入式的比较,嵌入式系统与通用计算机系统相比有什么特点?如题 谢谢了...

    嵌入式系统与通用计算机系统相比有什么特点?如题 谢谢了以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 嵌入式系统与通用计 ...

  3. data后缀文件解码_封装ThinkPHP6.0通用文件上传

    php中文网最新课程 每日17点准时技术干货分享 本文为php中文网认证作者:"wpj"投稿,欢迎加入php中文网有偿投稿计划! 本文实例讲述了封装ThinkPHP6通用文件上传方 ...

  4. 嵌入式系统与通用计算机系统的区别,嵌入式操作系统和通用计算机系统的区别是什么...

    描述 (文章来源:OFweek) 嵌入式系统与通用计算机系统有着完全不同的技术要求和技术发展方向.通用计算机系统的技术要求是高速.海量的数值计算,其技术发展方向是总线速度的无限提升.存储容量的无限扩大 ...

  5. 嵌入式系统与通用计算机系统的区别,嵌入式操作系统和通用计算机系统两者有什么不同之处...

    (文章来源:OFweek) 嵌入式系统与通用计算机系统有着完全不同的技术要求和技术发展方向.通用计算机系统的技术要求是高速.海量的数值计算,其技术发展方向是总线速度的无限提升.存储容量的无限扩大:而嵌 ...

  6. 在通用计算机系统中系统软件,计算机系统中系统软件的核心是什么

    系统软件的核心是2113操作系统. 计算机软件需要5261才能使用操作系统作为平台. 4102 软件系统是指由系统软件,1653支持软件和应用软件组成的计算机软件系统. 它是由软件组成的计算机系统的一 ...

  7. 通用计算机系统的工作方式,通用计算机操作系统典型体系结构综述

    摘要:随着操作系统应用领域的扩大,以及操作系统硬件平台的多样化,操作系统的体系结构和开发方式都在不断更新,目前通用机上常见操作系统的体系结构有如下几种:模块组合结构.层次结构.虚拟机结构和微内核结构. ...

  8. Hive--hive一种通用的上亿级别的去重方法

    前些阵子在公司做项目遇到了一个问题,就是需要都行业中的所有品牌的uid进行去重的然后计数的操作. 数据量去完重复大概2个亿,去之前大概将近三个亿. 做法一:最原始的做法使用的是count(distin ...

  9. android 阿里 插件,堪比阿里插件的Android Studio插件集合(IDE通用)(上)

    点击上方蓝字关注码个蛋 除阿里插件之外这些好用的插件你知道吗? 作者博客 http://www.jianshu.com/u/f408bdadacce 文章目录 生成java文件,xml布局和生成资源文 ...

最新文章

  1. jetson nano 用 tensorrt 运行 nanodet(kitti数据集)
  2. 一文讲透推荐系统提供web服务的2种方式
  3. 查找txt中的中文字符_找出nginx请求日志中某个url请求总次数排名前十的ip地址...
  4. windows 常用命令不完全总结
  5. 开启win7 FTP 服务 无法登陆的原因
  6. asp空间和php空间_免费ASP空间与免费PHP空间
  7. iOS开发:对于AFNetworking HTTP转HTTPS请求证书问题
  8. mysql检查存在_如何检查MySQL中是否存在行?(即检查MySQL中是否存在电子邮件)...
  9. static与get属性的作用
  10. 图片转化为base64编码python版本
  11. 利用脚本设置本机IP地址
  12. 关于“该计算机已安装更高版本的Google Chrome浏览器“问题解决方法
  13. python股票分析入门_学习用Python分析股票数据(入门)
  14. 详解 PerformanceResourceTiming API,咦,这货真的干!
  15. linux下构建Smokeping网络监控平台
  16. 家庭光纤宽带有必要升级千兆双频路由器吗?
  17. 史兴国对谈顾振清:NFT艺术有哪些可以抵御加密寒冬的“武器”?
  18. CDA1级习题复习(3)
  19. Windows下命令行安装Pytorch(GPU)
  20. 应用代码(3)——modbus模板(RTU消息帧)

热门文章

  1. Lilypond开源打谱软件安装步骤
  2. 目标检测mAP计算详解
  3. mongodb--读操作
  4. 软件设计师学习笔记-计算机网络
  5. 马伯骞、法老助力,realme真我5G旗舰发布
  6. 【人工智能】 2019年-中国计算机学会推荐国际学术会议和期刊目录(八)
  7. 一文讲清chatGPT的发展历程、能力来源和复现它的关键之处
  8. 速度位置双环模式c语言,直流电机速度位置双环控制简明教程.PDF
  9. 整数有约|当智能虚拟人遇上元宇宙
  10. 【深度】了解小红书运营攻略