计算机组成原理笔记(一):概述

一、计算机的发展历史

计算机发展的四个阶段

第一阶段:电子管计算机 1946-1957

第二阶段:晶体管计算机 1957-1964

第三阶段:集成电路计算机 1964-1980

第四阶段:超大规模集成电路计算机 1980至今

第一阶段:电子管计算机

计算机组成原理笔记(一):概述
第二次世界大战是电子管计算机产生的催化剂

全世界第一台电子管计算机:英国为了解密德国海军的密文

最著名的电子管计算机:埃尼阿克(ENIAC)

  • 战争使用了飞机和火箭
  • 打得准需要计算射击参数
  • 射击参数需要几千次的运算才能运算出来

即:没有计算机前,需要人工计算

埃尼阿克(ENIAC)

计算机组成原理笔记(一):概述

  • 18000个电子管
  • 耗电量150千瓦
  • 重量30吨,占地1500平方英尺

电子管计算机的特点

  • 集成度小,占用空间大
  • 功耗高,运行速度慢
  • 操作复杂,更换程序需要换线

第二阶段:晶体管计算机

背景:贝尔实验室的三个科学家发明了晶体管

计算机组成原理笔记(一):概述

全世界第一台晶体管计算机:TX-0,来自MIT林肯实验室

计算机组成原理笔记(一):概述

当时性能最高的晶体管计算机:PDP-1

  • 4K内存,每秒200,000指令
  • 配备512x512的显示器

计算机组成原理笔记(一):概述

晶体管计算机特点:

  • 集成度相对较高,空间占用相对小
  • 功耗相对较低,运行速度较快
  • 操作相对简单,交互更加方便

第三阶段:集成电路计算机

背景:德州仪器的工程师发明了集成电路(IC)

特点:

  • 计算机变得更小
  • 功耗变得更低
  • 计算速度变得更快

计算机组成原理笔记(一):概述

标志计算机具备进入千家万户的条件

IBM卖的最好的两台计算机:7094、1401

  • 主打功能不同
  • 相互无法兼容
  • 用户不愿意投入两组人力

操作系统的雏形:IBM推出兼容的产品Sytem/360

第四阶段:超大规模集成电路计算机

超大规模集成电路计算机

  • 一个芯片集成了上百万的晶体管
  • 速度更快,体积更小,价格更低,更能被大众接受
  • 用途丰富:文本处理、表格处理、高交互的游戏与应用

乔布斯推出了Apple和Apple二代

第五阶段:未来的计算机

生物计算机:以蛋白质分子为主要原料

  • 体积小,效率高
  • 不易损坏,生物级别的自动修复
  • 不受信号干扰,无热损耗

量子计算机:遵循量子力学的物理计算机

  • 2013年5月,谷歌和NASA发布 D-Wave Two
  • 2017年5月,中国科学院宣布制造出光量子计算机
  • 2019年1月,BM展示了世界首款商业化量子计算机
  • 腾讯在2017年就组建了量子实验室
  • 阿里巴巴在2017年成立了达摩院

微型计算机的发展历史

受限于性能

单核CPU

  • (1971~1973)500KHz频率的微型计算机(字长8位)
  • (1973~1978)高于1MHz频率的微型计算机(字长8位)
  • (1978~1985)500MHz频率的微型计算机(字长16位)
  • (1985~2000)高于1GHz频率的微型计算机(字长32位)
  • (2000~现在)高于2GHz频率的微型计算机(字长为64位

摩尔定律:集成电路的性能,每18-24个月就会提升一倍

多核CPU

  • (2005)Intel奔腾系列双核CPU、AMD速龙系列
  • (2006)Intel酷睿四核CPU
  • Intel酷睿系列十六核CPU
  • Intel至强系列五十六核CPU

二、计算机的分类

超级计算机

功能最强、运算速度最快、存储容量最大的计算机

多用于国家高科技领域和尖端技术研究

标记他们的运算速度的单位是TFlop/s

1TFlop/s = 每秒一万亿次浮点计算

截止2019年11月 世界前三的超级计算机

名字 制造商 处理器 峰值速度
Summit IBM(美国) 2397824 200795 TFlop/s
神威 太湖之光 中国 10649600 125436 TFlop/s
Sierra IBM(美国) 1572480 119193 TFlop/s

大型计算机

又称大型机、大型主机、主机等

具有高性能,可以处理大量数据和复杂的运算

在大型机市场领域,IBM占据大部分份额,如IBM Z9

编程语言:COBOL语言

去IOE行动:去IBM、Oracle、EMC

  • 去IOE是阿里巴巴2008年提出的概念
  • 代表了高维护费用的存储系统
  • 不够灵活,伸缩性弱
  • 阿里云在2009年成立

迷你计算机(服务器)

又称小型机,普通服务器

不需要特殊的空调场所

具备不错的算力,可以完成较复杂的运算

普通服务器组已经代替了大型机

计算机组成原理笔记(一):概述

工作站

高端的通用微型计算机,提供比个人计算机更强大的性能

类似于普通台式电脑,体积较大,但性能强劲

计算机组成原理笔记(一):概述

微型计算机

又称个人计算机,是最普通的一类计算机

可以分为台式机、笔记本电脑、一体机等

麻雀虽小、五脏俱全

从构成的本质来讲,个人计算机与前面的分类无异


三、计算机的体系与结构

冯诺依曼体系

定义:将程序指令和数据一起存储的计算机设计概念结构

  1. 早期计算机仅含固定用途程序

  2. 改变程序得更改结构、重新设计电路

  3. 把程序存储起来并设计通用电路

冯诺依曼体系要求:

  • 必须有一个存储器
  • 必须有一个控制器
  • 必须有一个运算器
  • 必须有输入设备
  • 必须有输出设备

所有现代计算机都是冯诺依曼机

  • 能够把需要的程序和数据送至计算机中
  • 能够长期记忆程序、数据、中间结果及最终运算结果的能力
  • 能够具备算术、逻辑运算和数据传送等数据加工处理的能力
  • 能够按照要求将处理结果输岀给用户

计算机组成原理笔记(一):概述

冯诺依曼瓶颈:

CPU处理速度快,而传输速度慢,CPU经常空转等待数据传输

现代计算机的结构

  • 现代计算机在冯诺依曼体系结构基础上进行修改
  • 解决CPU与存储设备之间的性能差异问题

现代计算机结构示意图:

计算机组成原理笔记(一):概述

从磁带和硬盘到了更高速度的设备:内存、CPU寄存器

可以理解为以存储器为核心

四、计算机的层次与编程语言

程序翻译与程序解释

出现:人类语言≠计算机语言,需要进行语言之间的转换

例子:

  • 较为高级的计算机语言L1
  • 较为低级的计算机语言L0

程序程序翻译:编译器对L1进行程序逻辑描述,生成L0

计算机执行的指令都是L0

翻译过程生成新的L0程序,解释过程不生成新的L0程序

解释过程由L0编写的解释器去解释L1程序

编程语言

程序翻译:C/C++、Object-C、Golang

程序解释:Python、PHP、JavaScript

翻译+解释:Java、C#

计算机层次

计算机组成原理笔记(一):概述

  • 硬件逻辑层
    • 门、触发器等逻辑电路组成
    • 属于电子工程的领域
  • 微程序机器层
    • 编程语言是微指令集
    • 微指令所组成的微程序直接交由硬件执行
  • 传统机器层
    • 编程语言是CPU指令集(机器指令)
    • 编程语言和硬件是直接相关
    • 不同架构的CPU使用不同的CPU指令集
    • 微指令 < 微指令 = 机器指令,一条机器指令对应一个微程序,一个微程序对应一组微指令
  • 操作系统层
    • 向上提供了简易的操作界面
    • 向下对接了指令系统,管理硬件资源
    • 操作系统层是在软件和硬件之间的适配层
  • 汇编语言层
    • 编程语言是汇编语言
    • 汇编语言可以翻译成可直接执行的机器语言
    • 完成翻译的过程的程序就是汇编器
    • 例子:PUSH DS AX MOV AX,0040 MOV DS,AX
  • 高级语言层
    • 编程语言为广大程序员所接受的高级语言
    • 高级语言的类别非常多,由几百种
    • 常见的高级语言有: Python、Java、C/C++、 Galang等
  • 应用层
    • 满足计算机针对某种用途而专门设计
    • 如Word、Excel、PPT等

分层目的是便于理解

五、计算机计算单位、字符和编码集

计算机的计算单位

容量单位

在物理层面,高低电平记录信息

理论上只认识0、1两种状态,0/1称为bit(比特位)

而0/1能够表示的内容太少了,需要更大的容量表示方法,催生了字节:1Byte = 8Bits

常见单位表,1024=2^10

bit Byte KB MB GB TB PB EB
名字 比特位 字节 千字节 兆字节 吉字节 太字节 拍字节 艾字节
比例 - 8bits 1024B 1024KB 1024MB 1024GB 1024TB 1024EB
用途 门电路 - 寄存器 高速缓存 内存/硬盘 硬盘 云硬盘 数据仓库

硬盘商一般用10进位标记容量

速度单位

网络速度

网络常用单位为Mbps

100M/s = 100Mbps = 100Mbit/s

100Mbit/s = (100/8)Mb/s = 12.5MB/s

CPU速度
  • CPU的速度一般体现为CPU的时钟频率
  • CPU的时钟频率的单位一般是赫兹(Hz)
  • 主流CPU的时钟频率都在2GHz以上
  • Hz其实就是秒分之一,它是每秒中的周期性变动重复次数的计量,并不是描述计算机领域所专有的单位

计算机的字符与编码集

字符编码集的历史

ASCII码

  • 使用7个bits就可以完全表示ASCII码
  • 包含95个可打印字符
  • 33个不可打印字符(包括控制字符)
  • 33+95=128=2^7
  • ASCII码表,很多应用或者国家中的符号都无法表示
    计算机组成原理笔记(一):概述

Extended ASCII码

计算机组成原理笔记(一):概述

第一次对ASCII码进行扩充,7bits => 8bits

  • 常见数学运算符

  • 带音标的欧洲字符

  • 其他常用符、表格符等

字符编码集的国际化

  • 欧洲、中亚、东亚、拉丁美洲国家的语言多样性
  • 语言体系不一样,不以有限字符组合的语言
  • 中国、韩国、日本等的语言最为复杂

中文编码集

GB2312,国标2312

  • 《信息交换用汉字编码字符集——基本集》
  • 共收录了7445个字符
  • 包括6763个汉字和682个其它符号

GBK

  • 《汉字内码扩展规范》
  • 向下兼容GB2312,向上支持国际ISO标准
  • 收录了21003个汉字,支持全部中日韩汉字

Unicode,兼容全球的字符集

  • Unicode:统一码、万国码、单一码

  • Unicode定义了世界通用的符号集,∪TF-*实现了编码

  • UTF-8以字节为单位对 Unicode进行编码

Windows系统默认使用GBK编码,编程推荐使用UTF-8编码