当前位置: 首页 > news >正文

计算机组成原理学习笔记:计算机的发展历程

计算机系统

  • 计算机系统由硬件和软件这样的两大部分组成的, 即:计算机系统 = 硬件 + 软件(操作系统+应用软件)
  • 硬件:硬件是计算机系统的物理基础, 它决定了这个计算机系统它的天花板瓶颈
  • 软件:决定了可以把这个硬件的性能发挥到什么样的程度
    • 系统软件:用来管理整个计算机系统
      • 比如:操作系统,DBMS(数据库管理系统), 标准程序库,网络软件(实现TCP,IP的软件模块), 语言处理程序(编译程序,可以把高级语言翻译成机器语言),服务程序(调试代码的调试程序)
    • 应用软件:按任务需要编制成的各种程序
      • 比如:微信,支付宝
  • 计算机性能的好坏取决于"软", "硬"件功能的总和

计算机硬件的发展历程

  • 第一代:1946 ~ 1957 逻辑元件:电子管, 速度:几千 ~ 几万(次/秒), 内存: 汞延迟线、磁鼓, 外存: 穿孔卡片、纸袋
    • 故事:
      • 在1946年第一台电子数字计算机诞生,而这台计算机有一个响亮的名字:ENIAC
      • 在1946年刚好是第2次世界大战即将接近尾声的时候,当时美国军方在开发新武器
      • 需要计算武器的射程,弹道轨迹,如果用手工的方式来计算,那非常非常的慢
      • 当时军方提出要制造一台可以快速的进行数学运算的计算机,请了一个资深的顾问叫冯诺依曼
      • 这台计算机采用电子管作为它的逻辑元件,在计算机在进行数字计算的时候, 本质上他就是在处理一些电信号
      • 所谓逻辑元件,就是用来处理这些电信号的最小的一个基本单元, 这样一台计算机其实就是要把很多很多个逻辑元件用线路把它们连接起来
      • 从而实现用电路来运算的一个功能,在当时每个电子管的体积都是很大的,这台计算机总共使用了1.8万个电子管
      • 把这么多个电子管把它们连接起来,组装成一台计算机,就需要很多很多的空间,所以当时第1台计算机的占地面积高达170平方米
      • 同时由于电子管的这种物理特性导致了它的耗电量也很高,达到150千瓦,除了占地面积大,耗电量惊人之外
      • 运算速度也不是特别快,每秒只能进行5000次左右的加法运算,以ENIAC为代表的这一代计算机,我们把它称为电子管时代
      • 原因就是这一代的计算机使用电子管作为逻辑元件, 体积大耗电量高,同时计算速度还比较慢
      • 在这一阶段,程序员都是直接使用机器语言来编程的, 这个机器它只能识别0101这样的二进制语言,
      • 程序员编程是在一个纸袋上打孔,有孔的地方表示二进制的零,没有孔的地方表示二进制的一
      • 在这个阶段,如果在这一条代表程序的纸带上,出现了一只死掉的小虫子,那么这只小虫子在纸袋上会导致纸袋机读取错误
      • 因此为什么程序漏洞我们会称为程序的bug,bug这个单词本来表示的是小虫子,在最开始纸袋机编程的这个阶段,一个小虫子就会导致你的这个程序出现错误
      • 因此这个说法一直被延续至今, 程序的错误,我们现在也把它称为程序bug
  • 第二代:1958 ~ 1964 逻辑元件:晶体管, 速度:几万 ~ 几十万(次/秒), 内存: 磁芯存储器, 外存: 磁带
    • 故事
      • 后来著名的贝尔实验室发明了晶体管,晶体管的这种电气特性可以用来替代电子管
      • 而每一个晶体管的体积大小要比电子管要小得多,用晶体管取代电子管作为计算机的逻辑元件,可以让计算机体积得到大幅度降低
      • 计算机逻辑元件的一个革命导致了我们计算机体积减小,功耗降低,同时由于我们可以用晶体管来设计更复杂的电路
      • 因此计算机的运行速度,计算速度也达到了一个质的飞跃,可以达到每秒计算几十万次降低一个级别
      • 在这个阶段就开始出现一些高级编程语言,比如说FORTRAN
      • 同时为了让计算机能够有自我管理的功能,连续的完成一系列的任务,所以这个时候开始出现操作系统
      • 这就是第2个阶段采用了晶体管取代电子管,制造一台计算机大概需要几万到几十万个晶体管
      • 需要把这些晶体管用手工的方式把它们焊接到电路板上,几十万个晶体管就有可能有几百万个电焊点
      • 所以这个所以这个阶段的计算机硬件还是十分不可靠的,任何一个焊点出现问题都可能导致整个计算机无法工作
  • 第三代:1964 ~ 1971 逻辑元件:中小规模集成电路, 速度: 几十万 ~ 几百万(次/秒), 内存: 半导体存储器, 外存: 磁带、磁盘
    • 故事
      • 计算机进入了第3个时代,中小规模集成电路时代,把这些逻辑元件集成在一个基片上
      • 采用集成电路的制造工艺,使得我们计算机变得越来越小,功耗更低,同时这种集成电路的可靠性要比晶体管手动焊接的那种电路可靠性要高得多
      • 在这一阶段, 各种高级语言开始迅速发展,同时有了分时操作系统, 在这一阶段计算机主要还是用于科学计算等等专业的用途还并没有融入人们的生活
  • 第四代:1972 ~ 现在 逻辑元件:大规模、超大规模集成电路, 速度:上千万 ~ 万亿(次/秒), 内存: 半导体存储器, 外存: 磁盘、磁带、光盘、半导体存储器
    • 故事
      • 后来随着集成电路工艺的一个不断的提升,慢慢的就开始进入了第4代,就是大规模和超大规模集成电路时代
      • 此时开始出现微处理器和微型计算机处理器,微处理器简单理解其实就是大家熟悉的CPU, 举个例子,
      • 一块指甲盖大小的微处理器,一个这样的CPU,他就在里边集成了85亿个晶体管,85亿个逻辑元件
      • 总之芯片技术的进步导致微处理器的诞生,同时也导致很多微型计算机的诞生
      • 在之后的日子, 微型计算机逐渐的步入每一个人的生活, 在这个阶段也开始出现了一些操作系统如:linux, windows

微处理器的发展

  • 谈到微处理器的发展,我们就不得不提到英特尔,下图是英特尔微处理器的部分迭代版本
微处理器机器字长年份晶体管数目
80808位1974
808616位19792.9万
8028616位198213.4万
8038632位198527.5万
8048632位1989120.0万
Pentium64位1993310.0万
Pentium Pro64位1995550.0万
Pentium II64位1997750.0万
Pentium III64位1999950.0万
Pentium IV64位20004200.0万
  • 机器字长:表示计算机一次整数运算所能处理的二进制位数
  • 最开始8080这个CPU它只能一次处理8个二进制位,而8086可以一次处理16个二进制位
  • 机器字长的提升显然是会直接影响到CPU的运算速度的,比如使用8080型号CPU计算16个二进制位的加法
  • 那么你必须进行两次的整数运算,因为每一次你只能处理8位,而如果采用8086这款CPU,只需要进行一次的整数运算
  • 自从进入奔腾处理器这个系列之后,英特尔的这些CPU基本上就是保持了64位这样的一个机器字长
  • 我们个人使用的微型计算机基本上就是随着微处理器技术的发展而发展的

一则创业小故事

  • 计算机硬件的发展,不得不提到这样的一段历史,在1947年的时候贝尔实验室有三个人发明了晶体管,其中一个人叫 威廉·肖克利
  • 他是1956年的诺贝尔物理学奖得主,因为他和其他两位科学家发明了晶体管, 后来他从贝尔实验室退出,创建了 肖克利实验室股份有限公司
  • 他想靠这个公司生产晶体管盈利,由于晶体管之父这个头衔很响亮,在他创业初期的时候吸引了一堆人才,其中有8个人分别叫
  • 摩尔、罗伯茨、克莱纳、诺伊斯、格里尼克、布兰克、赫尔妮、拉斯特
  • 实际上肖克利对于公司的管理运营不是很好,上面8个小弟觉得跟着他继续干没有前途
  • 于是8个人集体辞职, 由于他们背叛了肖克利,所以肖克利把他们称为8叛徒,后来这8个人他们联合创立了一个公司,叫做仙童半导体公司
  • 这个公司很厉害啊,他们刚开始也是干老本行,就是给IBM之类的企业生产晶体管
  • 后来在1959年仙童半导体公司发明了集成电路, 集成电路技术的出现导致我们的计算机从晶体管时代步入了集成电路时代
  • 后来该公司被收购了之后,这几个人就陆续的退出了仙童半导体公司
  • 其中1968年摩尔等三个人离开了仙童创立了后来的英特尔公司,1969年仙童销售部负责人桑德斯离开了仙童,创立了后来的AMD
  • 而英特尔和AMD这两家公司就是后来超大规模集成电路的一个推行者

摩尔定律

  • 摩尔这个人还有一个重要的贡献,就是提出了摩尔定律, 揭示了信息技术进步的速度
    • 摩尔定律: 集成电路上可容纳的晶体管数目,约每隔18个月便会增加一倍,整体性能也将提升一倍
  • 就是说如果我现在比如说花2000块钱买了一个CPU,那么我在18个月之后同样花2000块钱,我可以买到一个性能提升一倍的CPU
  • 除了CPU的发展符合摩尔定律,存储器的发展也符合摩尔定律,在相同成本的情况下,大概两年我们的存储器也就是储存的总量大概可以翻倍
  • 世界上第一个较大容量的半导体存储器,也是仙童公司制造的

总结

  • 我们把计算机硬件的发展分为4个阶段,有的书上也可能会把它分为5个阶段或者6个阶段,把超大规模集成电路/巨大规模集成电路各自拆分成一个阶段
  • 总之就是逻辑元件的集成度越来越高越来越小,速度越来越快,功耗越来越低

计算机软件的发展历程

机器语言

  • 所有的软件其实都是用编程语言把它编出来的,所以编程语言的发展其实直接就决定了我们的软件世界到底有多丰富
  • 在计算机发展初期,所有的编程都需要用机器语言0101…

汇编语言

  • 由于这种机器可读性很差,因此发明了汇编语言, 汇编语言和机器语言本质上都是一样的语言, 它会把机器语言转换成人类更方便记忆的一些符号
  • 程序员进行编程的时候,除了要关注要解决的问题是什么之外也还必须关注到我使用的这台机器的特性是什么样的, 它能识别的语言到底是怎么样的?应该怎么来编写
  • 因此这个阶段程序员编写一些软件是很困难的,这个阶段软件不可能特别多,不可能很丰富

高级语言

  • 后来为了让编程更方便,慢慢的开始出现了一些高级的编程语言,比如说像PASCAL、C++之类的语言
  • 程序员在使用这些高级语言编程的时候,就不需要再关心机器的具体特性是什么,程序员只需要专注于它要解决的问题就可以了
  • 因为这些高级语言基本上是接近我们人类所使用的自然语言了,有了这些高级语言作为基础,我们的软件世界也越来越丰富
  • 随着计算机网络技术的发展,又出现了一些类似于Java Python之类的,更适用于网络环境的一些编程语言
  • 总之编程语言这个东西它就是用来制造软件的, 编程语言是否好用,方便就直接决定了我们的软件世界是否足够丰富
  • 除了应用软件,操作系统这种系统软件也在发展,像刚开始的操作系统,比如说DOS系统,我们只能用命令行的方式来操作这些计算机
  • 后来逐渐出现了一些图形化的界面,Windows, Mac OS, Android, iOS, 这种系统类的软件也在不断的发展

计算机系统发展趋势

  • 目前来看我们的计算机系统有两极分化的这种发展趋势
  • 一级是微型计算机向着更加微型化,更加网络化,更加高性能,更加多用途的方向发展
    • 智能穿戴设备和手机是可以做的越来越小,用途却越来越广
  • 另一极是朝着巨型化超高速并行处理,智能化的方向发展
    • 说中国现在最快的超级计算机叫做神威·太湖之光,可以每秒进行9.31亿次的浮点运算,全世界这台超级计算机的速度可以排到第6名
    • 现在世界排名第9的超级计算机也是我们国家的, 这是计算机发展的另一个极端啊,计算机的体积越来越巨型,计算速度也是超级快
    • 具体查看: https://www.top500.org 备注:这个排名是动态的

相关文章:

  • java毕业设计小区停车场管理系统mybatis+源码+调试部署+系统+数据库+lw
  • java基于springboot+vue的旅游博客旅游经验分享系统
  • React Spring实战之API以及animated 组件的运用
  • [JavaEE系列] Thread类的基本用法
  • Allegro Design Entry HDL(OrCAD Capture HDL)窗口管理菜单详细介绍
  • 报错:Error: module property was removed from Dependency
  • java基于springboot+vue的在线求助系统
  • java计算机毕业设计青岛地区常见昆虫图鉴与论坛源码+数据库+系统+lw文档+mybatis+运行部署
  • 17.EC实战 开发板开发环境搭建、程序烧录及运行代码过程
  • java计算机毕业设计全国消费水平展示平台源码+数据库+系统+lw文档+mybatis+运行部署
  • vscode推荐插件20220901
  • 24. python 字符串索引取值
  • Visual Studio Code通过SSH进行远程开发及调试的方法
  • Django简介(基本操作命令|目录结构|小白三板斧)
  • zookeeper核心源码分析
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • conda常用的命令
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • js如何打印object对象
  • leetcode386. Lexicographical Numbers
  • Linux快速复制或删除大量小文件
  • nfs客户端进程变D,延伸linux的lock
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • vue-router 实现分析
  • webgl (原生)基础入门指南【一】
  • Web设计流程优化:网页效果图设计新思路
  • 高性能JavaScript阅读简记(三)
  • 观察者模式实现非直接耦合
  • 警报:线上事故之CountDownLatch的威力
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 实战|智能家居行业移动应用性能分析
  • 微信小程序:实现悬浮返回和分享按钮
  • 智能网联汽车信息安全
  • FaaS 的简单实践
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • #pragma pack(1)
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (待修改)PyG安装步骤
  • (定时器/计数器)中断系统(详解与使用)
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (四)Controller接口控制器详解(三)
  • (转)人的集合论——移山之道
  • (转载)Linux网络编程入门
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .NET Framework杂记
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .net知识和学习方法系列(二十一)CLR-枚举
  • ::前边啥也没有
  • @Not - Empty-Null-Blank
  • @selector(..)警告提示
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)
  • [20171101]rman to destination.txt