计算机组成原理之概述篇

一 、章节导学

  • 计算机的发展简史
  • 计算机的分类
  • 计算机的体系结构
  • 计算机的层次与编程语言
  • 计算机的计算单位
  • 计算机的字符与编码集

二、计算机的发展历史

  • 计算机发展的四个阶段
  • 微型计算机的发展历史

1. 计算机发展的四个阶段

阶段 时间 名称
第一阶段 1946-1957 电子管计算机
第一阶段 1957-1964 晶体管计算机
第一阶段 1964-1980 集成电路计算机
第一阶段 1980-现在 超大规模集成电路计算机
1.1 第一个阶段:电子管计算机
  • 集成度小,空间占用大
  • 功耗高,运行速度慢
  • 操作复杂,更换程序需要接线
电子管
  • 第二次世界大战是电子管计算机产生的催化剂
    英国为了解密德军海军的密文
埃尼阿克(ENIAC)
  • 战争使用了飞机和火箭
  • 打得准则需要计算射击参数
  • 射击参数需要几千次运算才能计算出来
    没有计算机前,需要人手算

埃尼阿克(ENIAC)

  • 18000多个电子管
  • 运行耗电量150千瓦
  • 重量达30吨,占地1500平方英尺
1.2 晶体管计算机
  • 集成度相对较高,空间占用相对小
  • 功耗相对较低,运行速度较快
  • 操作相对简单,交互更加方便

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

晶体管

TX-0


TX-0
  • 来自MIT林肯实验室

PDP-1


image.png
  • 4k内存,每秒200,000指令
  • 配备512*512的显示器
1.3 集成电路计算机
  • 计算机变得更小
  • 功耗变得更低
  • 计算速度变得更快

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


image.png

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

IBM:7094,1401

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

IBM退出兼容的产品System/360 ==> 操作系统的雏形

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

image.png
1.5 未来的计算机
生物计算机:以蛋白质分子作为主要原材料
  • 体积小
  • 不易损坏,生物级别的自动修复
  • 不受信号干扰,无热损耗
image.png
量子计算机:遵循量子力学的物理计算机
  • 2013年5月,谷歌和NASA发布D-Wave Two
  • 2017年5月,中国科学院宣布制造出光量子计算机
  • 2019年1月,IBM展示了世界首款商业化量子计算机
  • 腾讯在2017年就组建了量子实验室
  • 阿里巴巴在2017年成立了达摩院
image.png

2. 微型计算机的发展历史

2.1 受限于性能

单核CPU

  • (1971 ~ 1973) 500KHz频率的微型计算机(字长8位)
  • (1973 ~ 1978) 高于1MHz频率的微型计算机(字长8位)
  • (1978 ~ 1985) 500MHz频率的微型计算机(字长8位)
  • (1985 ~ 2000) 高于1GHz频率的微型计算机(字长32位)
  • (2000 ~ 今) 高于2GHz频率的微型计算机(字长64位)
2.2 摩尔定律

集成电路的性能,每18-24个月就会提升一倍
多核CPU

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

三、计算机的分类

1. 超级计算机

  • 功能最强、运算速度最快、存储容量最大的计算机
  • 多用于国家高科技领域和尖端技术研究
  • 标记他们运算速度的单位是TFlop/s

1TFlop/s=每秒一万亿次浮点计算
Intel(R) Core(TM) i7-6700K CPU @ 4.00GHz:44.87 GFlop/s
44.87 GFlop/s = 0.04487TFlop/s

image.png
image.png

2. 大型计算机

  • 又称大型机、大型主机、主机等
  • 具有高性能,可处理大量数据与复杂的运算
  • 在大型机市场领域,IBM占据着很大的份额

IBM Z9

  • NASA 最后一台大型机
  • Red Hat Enterprise Linux
  • 大型机造价高昂

去“IOE”行动:I(IBM),O(Oracle),E(EMC)

  • 去”IOE“是阿里巴巴提出的概念
  • 代表了高维护费用的存储系统
  • 不够灵活,伸缩性弱

去“IOE”运动(阿里2008年提出)=> 阿里云(阿里云2009年成立)

3. 迷你计算机

  • 也称为小型机,普通服务器
  • 不需要特殊的空调场所
  • 具备不错的算力,可以完成较复杂的运算

大型机 => 普通服务器
普通服务器已经代替了传统的大型机,成为大规模企业计算的中枢

4. 工作站

  • 高端的通用微型计算机,提供比个人计算机更强大的性能
  • 类似于普通台式电脑,体积较大,但性能强劲


    image.png

5. 微型计算机

  • 又称为个人计算机,是最普通的一类计算机
    台式机,笔记本电脑,一体机
  • 麻雀虽小、五脏俱全
    从构成的本质上来讲,个人计算机与前面的分类无异

四、 计算机的体系结构

1. 冯诺依曼体系

1.1 概念

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


image.png

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

1.2 要求

  • 必须有一个控制器
  • 必须有一个存储器
  • 必须有一个运算器

1.3 功能

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

1.4 结构

image.png

1.5 冯诺依曼瓶颈

image.png
image.png

2. 现代计算机的结构

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

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

1. 程序翻译与程序解释

1.1 为什么要程序翻译
image.png
1.2 程序翻译
image.png
image.png
1.3 程序解析
image.png
1.4 程序翻译与程序解析
  • 计算机执行的指令都是L0
  • 翻译过程生成新的L0程序,解释过程不生成新的L0程序
  • 解释过程由L0编写的解释器去解释L1程序
1.5 语言分类
  • 程序翻译
    C/C++
    Object-C
    Golang

  • 程序解释
    Python
    Php
    JavaScript

  • 翻译+解释
    Java
    C#

image.png

2. 计算机的层次与编程语言

image.png
2.1 硬件逻辑层
  • 门、触发器等逻辑电路组成
  • 属于电子工程的领域
2.2 微程序机器层
  • 编程语言是微指令集
  • 微指令所组成的微程序直接交由硬件执行
2.3 传统机器层
  • 编程语言是CPU指令集(机器指令)
  • 编程语言和硬件是直接相关
  • 不同架构的CPU使用不同的CPU指令集

微指令 < 微程序 = 机器指令

  • 一条机器指令对应一个微程序
  • 一个微程序对应一组微指令
2.4 操作系统层
  • 向上提供了简易的操作界面
  • 向下对接了指令系统,管理硬件资源
  • 操作系统层是在软件和硬件之间的适配层
2.5 汇编语言层
  • 编程语言是汇编语言
  • 汇编语言可以翻译成可直接执行的机器语言
  • 完成翻译的过程的程序就是汇编器
PUSH DS
PUSH AX
MOV AX,0040
MOV DS,AX
2.6 高级语言层
  • 编程语言为广大程序员所接受的高级语言
  • 高级语言的类别非常多,由几百种
  • 常见的高级语言有:Python、Java、C/C++、Golang等
2.7 应用层
  • 满足计算机针对某种用途而专门设计

六、 计算机的速度单位

1. 容量单位

  • 在物理层面,高低电平记录信息
  • 理论上只认识0/1两种状态
  • 0/1能够表示的内容太少了,需要更大的容量表示方法

0/1称为bit(比特位)

字节:1Byte = 8 bit

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

1024 = 2^10

1G内存,可以存储多少字节的数据?可以存储多少比特数据?

1G = 1024^3Bytes = 1024^3*8bits

为什么网上买的移动硬盘500G,格式化之后就只剩465G了?

硬盘商一般用10进位标记容量
500 * 1000^3 / 1024^3 ≈ 465

2. 速度单位

2.1 网络速度
image.png

这里的100M并不是指容量
100M= 100M/s

为什么电信拉的100M光纤,测试峰值速度只有10M每秒?

网络常用单位为(Mbps)
100M/s = 100Mbps = 100Mbit/s
100Mbit/s = (100/8)MB/s = 12.5MB/s

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

2GHz = 2*1000^3Hz = 每秒20亿次

七、 计算机的字符与编码集

1. 字符编码集的历史

1.1 ASCII码
  • 使用7个bits就可以完全表示ASCII码
  • 包含95个可打印字符
  • 33个不可打印字符(包括控制字符)

33+95 = 128 = 2^7

ASCII
1.2 Extended ASCII码
ASCII码缺陷
  • 很多应用或者国家中的符号都无法表示
  • 数学符号:“÷≠ ≥ ≈ π”
  • 第一次对ASCII码进行扩充,7bits => 8bits
image.png
扩展后的ASCII码
  • 常见数学运算符
  • 带音标的欧洲字符
  • 其他常用符、表格符等
1.3 字符编码集的国际化
  • 欧洲、中亚、东亚、拉丁美洲国家的语言多样性
  • 语言体系不一样,不以有限字符组合的语言
  • 中国、韩国、日本等的语言最为复杂

2. 中文编码集

2.1 GB2312
  • 《信息交换用汉字编码字符集——基本集》
  • 一共收录了7445 个字符
  • 包括6763 个汉字和682 个其它符号
2.2 GBK
  • 《汉字内码扩展规范》
  • 向下兼容GB2312,向上支持国际ISO标准
  • 收录了21003个汉字,支持全部中日韩汉字
2.3 Unicode(兼容全球的字符集)
  • Unicode:统一码、万国码、单一码
  • Unicode定义了世界通用的符号集,UTF-*实现了编码
  • UTF-8以字节为单位对Unicode进行编码
2.4 注意
  • Windows系统默认使用GBK编码
  • 编程推荐使用UTF-8编码

八、 专项练习:17道习题

1.计算机的发展历史大概可以分为几个阶段?每个阶段的计算机分别有什么特点?

四个阶段:电子管计算机、晶体管计算机、集成电路计算机、超大规模集成电路计算机。

2.你了解“摩尔定律”吗?“摩尔定律”对现代计算机产生了什么影响?

摩尔定律:摩尔定律是由英特尔(Intel)创始人之一戈登·摩尔(Gordon Moore)提出来的。其内容为:当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。换言之,每一美元所能买到的电脑性能,将每隔18-24个月翻一倍以上。这一定律揭示了信息技术进步的速度。尽管这种趋势已经持续了超过半个世纪,摩尔定律仍应该被认为是观测或推测,而不是一个物理或自然法。

3.你了解冯诺依曼机吗?你是否可以大概描述冯诺依曼机的基本组成和工作原理?冯诺依曼机相对于之前的计算机有什么重要改进?

冯诺依曼机有五大组成部分:输入设备、输出设备、运算器、存储器、控制器。冯诺依曼机把程序指令和运行数据存储起来,使得计算机从专用电路计算机发展成为通用电路计算机。

  1. 什么是冯诺依曼瓶颈?冯诺依曼瓶颈对现代计算机产生了什么影响?

冯诺依曼瓶颈指的是存储器和运算器之间的访问速率差异巨大,使得计算机性能无法提升。现代计算机以存储器为核心,根据局部性原理设计了存储器的层次结构,大幅提升计算机性能。

5.你了解程序解释和程序翻译吗?什么是编译型语言,什么是解释型语言呢?

编程语言可以分为解释型语言和编译型语言,程序解释指的是程序代码在运行时,逐行翻译成较低层次的编程语言去执行;程序翻译指的是程序代码在编译阶段提前翻译成较低层次的编程语言逻辑,在运行时直接运行。

6.请你列举十种以上的编程语言,并分别分类他们属于什么类型的语言。

编译型语言:C、C++、Go、OC,解释型语言:Php、Python、Javascript、Perl、Lua,翻译+解释型语言:Java、C#、Kotlin等。

7.你了解计算机的层次结构吗?今天的软件和硬件是怎么界定的。

计算机的层次结构划分是为了方便理解计算机的整一个体系,在不同书籍或领域会有不一样的划分,没有绝对的正确。今天的软件、硬件的划分以硬件电路为界限,从涉及硬件电路逻辑往下的都归为硬件,要注意软件和硬件的划分也是与时俱进的,今天的软件很可能明天就变成了硬件,比如以前编写硬件逻辑代码是软件,而随着高级编程语言的出现和成熟,现在编写硬件逻辑代码已经视为硬件部分了。

8.请你尝试说明高级语言、汇编语言和机器语言的区别和联系?

高级语言是方便程序员描述程序逻辑的编程语言,与人类语言接近;汇编语言时方便程序员描述硬件逻辑的编程语言,与底层硬件接近;机器语言时方便计算机理解和运行的编程语言,一般程序员无法理解。

9.请完成常见的容量换算公式:

1). 1G = ( 10^3 )Bytes
2). 1Byte = ( 8 )bits
3). 一条内存条的容量大约2( GB )
4). 一个磁盘的容量大约1( T )
5). 一个SSD的容量大约256( GB )

10.CPU的速度一般使用什么做单位?它具有什么物理意义?

赫兹,是国际单位制中频率的单位,它是每秒中的周期性变动重复次数的计量。1Hz = 1/s,即在单位时间内完成振动的次数,单位为赫兹(1赫兹=1次/秒)。

11.网络的速度一般使用什么做单位?

bps,比特率是指每秒传送的比特(bit)数。单位为 bps(Bit Per Second),比特率越高,每秒传送数据就越多。

12.20世纪80年代以前的计算机是不支持输入中文的,当时的计算机使用的是什么编码集?

ASCII编码集。

13.ASCII编码集占用多少个字节?

ASCII有128个字符,占用7个比特位,扩展ASCII编码机占用8个比特位,一个字节。

14.‘A’, ‘b’, 'C’对应的ASCII十进制数值分别是多少?

65、98、67。

15.你可以使用你熟悉的语言将 72、96、108转换为ASCII码吗?

String.fromCharCode

String.fromCharCode(72)
"H"
String.fromCharCode(96)
"`"
String.fromCharCode(108)
"l"

16.你知道Unicode编码和UTF-8编码的区别和联系吗?

Unicode全名为:统一码、万国码,是计算机科学领域里的一项业界标准。Unicode标准有不同的编码实现,比如UTF-8、UTF-16、UTF-32,也即是可以有多种规则来实现Unicode标准,比如UTF-8使用的是不定长字节表示Unicode字符,在表示高位Unicode字符时可以自动扩展,UTF-32使用的是定长4个字节表示Unicode字符。

17.假设有10000个汉字,6000个日本字,3000个韩国字,1000个特殊字符,如果让你设计一套通用的编码集,请问每个字至少几个比特位?

10000+6000+3000+1000=20000个字符,最起码使用15个比特位,占2个字节。

九、 十二个重要概念

  • 摩尔定律
  • 冯诺依曼机
  • 冯诺依曼瓶颈
  • 程序解释
  • 程序翻译
  • 高级语言
  • 汇编语言
  • 机器语言
  • 计算机软件
  • 计算机硬件
  • 计算机的层次结构
  • 计算机编码集

你可能感兴趣的:(计算机组成原理之概述篇)