计算机组成原理之概述篇
计算机组成原理之概述篇
环境说明:
Linux环境: VMWare WorkStation + Linux虚拟机
编程语言:C++,Python
-
计算机的发展简史
-
计算机的分类
-
计算机的体系结构
-
计算机的层次与编程
-
计算机的计算单位
-
计算机的字符与编码集
-
计算机发展的四个阶段
-
微型计算机的发展历史
计算机发展简史
计算机发展的四个阶段

第一个阶段:电子管计算机
第二次世界大战时电子管计算机产生的催化剂。
英国为了解密德国海军的密文
ENIAC 埃尼阿克 战争使用了飞机和火箭,打得准则需要计算射击参数 设计参数需要几千次运算才能计算出来,没有计算机前,需要人手算。缺点:集成度小,空间占用大等。
第二阶段:晶体管计算机
贝尔实验室的三个科学家发明了晶体管
在很多的电路中我们还是可以看到晶体管
著名的晶体管计算机:TX-0 PDP-1
集成度相对较高
第三阶段:集成电路计算机
德州仪器的工程师发明了集成电路(IC) 计算机具备进入千家万户的条件
IBM =》 7904 ,1401 这两款计算机主打功能不同,相互无法兼容,不愿意投入两组人力。
IBM推出兼容的产品System/360 => 操作系统的雏形
第四个阶段:超大规模集成电路计算机
一个芯片集成了上百万的晶体管
速度更快体积更小价格更低、用途丰富
乔布斯 Apple 和 Apple二代
第五个阶段:未来的计算机(畅想)
生物计算机
量子计算机
“集成度”指的是在单位面积或体积内集成的晶体管数量。 集成度越高,代表着芯片尺寸可以更小,或者在相同尺寸的芯片上可以容纳更多的元件,从而实现更多的功能和更高的性能。
在计算机发展史中:
- 电子管计算机:使用电子管作为主要的逻辑元件。电子管体积大、功耗高、产生的热量多,因此一台计算机需要成千上万个电子管,占据巨大的空间。 这导致了电子管计算机的集成度非常小。
- 晶体管计算机:晶体管取代了电子管。晶体管体积小、功耗低、速度更快。 这使得在相同的空间内可以容纳更多的逻辑元件,因此晶体管计算机的集成度相对于电子管计算机有了显著提高。
简单来说,集成度的提高是计算机体积越来越小、性能越来越强、功耗越来越低的关键因素之一。 电子管到晶体管的转变是计算机集成度提升的一个重要里程碑。 后来集成电路(IC)以及超大规模集成电路(VLSI)的出现,更是将集成度推向了新的高度,使得数百万甚至数十亿个晶体管可以集成在一个小小的芯片上。
个人(微型)计算机的发展历史
从第三个阶段开始的
受限于性能 单核CPU
单核CPU:
1971-1973 500KHz频率的微型计算机(字长8位)
1973-1978 高于1MHz频率的微型计算机(字长8位)
1978-1985 500MHz频率的微型计算机(字长16位)
1985-2000 高于1GHz频率的微型计算机(字长32位)
200-现在 高于2GHz频率的微型计算机(字长64位)
可能有朋友不太明白上面的Hz以及字长
这里简单说一下:
Hz (赫兹)
Hz 是频率的单位,全称是赫兹 (Hertz)。它表示的是每秒钟周期性事件发生的次数。
在 CPU(中央处理器)的语境下,Hz 用来衡量时钟频率 (Clock Speed 或 Clock Rate)。CPU 内部有一个时钟发生器,它会产生规律性的电脉冲信号,就像一个节拍器一样,指挥 CPU 的各个部件协同工作。
- 1 Hz 就代表 CPU 的时钟每秒钟跳动 1 次。
- KHz (千赫兹):1 KHz = 1000 Hz,代表 CPU 时钟每秒钟跳动 1000 次。
- MHz (兆赫兹):1 MHz = 1,000,000 Hz (一百万赫兹),代表 CPU 时钟每秒钟跳动一百万次。
- GHz (吉赫兹):1 GHz = 1,000,000,000 Hz (十亿赫兹),代表 CPU 时钟每秒钟跳动十亿次。
简单来说,CPU 的时钟频率越高 (Hz 值越大),意味着 CPU 在单位时间内能够执行更多的基本操作,通常也就意味着 CPU 的运算速度越快,性能越强。 你给出的数据中,从 500KHz 到高于 2GHz,就反映了 CPU 运行速度的巨大提升。
字长 (Word Length / Word Size)
字长指的是 CPU 一次能够处理的二进制数据的位数 (bits)。你可以把它想象成 CPU 用来思考和处理信息的基本单位的“宽度”。
- 位 (bit):计算机中数据的最小单位,只能是 0 或 1。
- 字节 (Byte):通常 1 字节 = 8 位。
字长决定了以下几个方面:
- CPU 内部寄存器的大小:寄存器是 CPU 内部用来临时存储数据的高速存储单元。字长是多少位,通常寄存器就能存储多少位的数据。
- CPU 一次能处理的数据量:例如,一个 8 位字长的 CPU,一次可以处理 8 位的数据;一个 64 位字长的 CPU,一次可以处理 64 位的数据。显然,字长越大,CPU 一次能处理的数据就越多,效率也就越高。
- 内存寻址能力:CPU 需要通过地址来访问内存中的数据。字长的大小会影响 CPU 能够直接访问的内存空间大小。例如,一个 32 位字长的 CPU,理论上最大可以寻址 232 字节 (约 4GB) 的内存空间。而 64 位字长的 CPU,其寻址能力则大大增加。
你给出的数据中:
- 8 位字长:CPU 一次能处理 8 位二进制数。
- 16 位字长:CPU 一次能处理 16 位二进制数。
- 32 位字长:CPU 一次能处理 32 位二进制数。
- 64 位字长:CPU 一次能处理 64 位二进制数。
总结一下:
- Hz (频率) 关系到 CPU 的运算速度快慢。
- 字长 关系到 CPU 一次能处理多少数据以及能管理多大的内存空间。
这两个参数都是衡量 CPU 性能的重要指标。随着技术的发展,CPU 的频率越来越高,字长也越来越大,从而带来了计算机性能的飞速提升。
摩尔定律
集成电路的性能,每18-24个月就会提升一倍
但是在21世纪这个定律慢慢失效了,因为随着芯片的发展,电路越来越复杂,热损耗也越来越高,无法解决这样的问题所以慢慢也就失效了。
进而发展了多核CPU
多核CPU :
2005 : Intel 奔腾系列双核CPU,AMD速龙系列
2006 : Intel酷睿四核CPU
Intel 酷睿系列十六核CPU
Intel 至强系列五十核CPU
主要是从CPU的角度来看待
计算机的分类
超级计算机
- 功能最强,运算速度最快,存储容量最大的计算机
- 多用于国家高科技领域和尖端技术研究
标记它们的运算速度的单位是TFlop/s
1TFlop/s=每秒一万亿次浮点计算
Intel® Core™ i7-6700k CPU @ 4.00GHz:44.87GFlop/s
大型计算机
又称之为大型机,大型主机,主机等
具有高性能,可处理大量数据与复杂的运算
在大型机市场领域,IBM占据很大的份额
COBOL编程语言
IBM Z9这台打星际是NASA最后一台打星际 Red Hat Enterprise Linux 大型机造价高昂
去“IOE”是阿里巴巴提出的概念
代表了高维护费用的存储系统
不够灵活,伸缩性若
“去IOE”行动:I(IBM),O(Oracle)E(EMC)
阿里2008年提出去“IOE运动”,于是在2009年成立了阿里云
迷你计算机(服务器)
也称之为小型机,普通服务器
不需要特殊的空调场所
具备不错的算力,可以完成较复杂的运算
普通服务器以及替代了传统的大型机,成为大规模企业计算的中枢
工作站
高端的通用微型计算机,提供比个人计算机更强大的性能
类似于普通台式电脑,体积较大,但性能强劲
微型计算机
又称之为个人计算机,最为普通的一类计算机
麻雀虽小,五脏俱全
从构成的本质上来讲,个人计算机与前面的分类无异
计算机的体系与结构
冯诺依曼体系
将程序指令和数据一起存储的计算机设计概念结构
早期计算机仅含固定用途程序=》改变程序得更改结构,重新设计电路=》[坑爹啊,不能先打会游戏然后再写代码]=》把程序存储起来并设计通用电路 => 存储程序指令设计通用电路
必须有一个存储器
必须有一个控制器
必须有一个运算器
必须有输入设备
必须有输出设备
现代计算机都是冯诺依曼机
能够把需要的程序和数据送至计算机
能够长期记忆程序,数据,中间结果以及最终运算结果的能力
能够具备算术,逻辑运算和数据传送等数据加工处理的能力
能够按照要求把处理结果输出给用户

冯诺依曼瓶颈
CPU和存储器速率之间的问题无法调和
因为CPU速度极快,但是存储器速度很慢,这样会导致CPU经常空转等待数据传输。那么如何解决?
没有什么是加一层解决不了的,有的话就再加一层。
现代计算机的结构
现代计算机在冯诺依曼机体系结构基础上进行修改
解决CPU与存储设备之间的性能差异问题

存储器 之前是磁带硬盘现在增加了更告诉的设备:内存,CPU的寄存器作为缓存,这样速度更快了
可以理解为以及存储器为核心
计算机的层次与编程语言
程序翻译与程序解释
人类语言:我是一名学生
计算机:01011100101…
需要进行语言之间的转换
较为高级的计算机语言L1
较为低级的计算机语言L0
那什么是程序翻译?
程序翻译就是L1进行程序逻辑描述,通过编译器生成较为低级的计算机语言L0(计算机实际执行的语言)
那什么是程序解释?
L1进行程序逻辑描述然后L1作为输入通过解释器来使用L0语言实现另外一个程序(较为低级的计算机语言L0)
计算机执行的指令都是L0
翻译过程生成新的L0程序,解释过程不生成新的L0程序
解释过程由L0编写的解释器去解释L1程序
常见的程序翻译型语言:C/C++,Object-C,Golang
常见的程序解释型语言:Python,Php,JavaScript
翻译+解释型语言:Java C# Java程序编译为JVM字节码然后再通过解释器来解释为机器码

硬件逻辑层:
门,触发器等逻辑电路组成
属于电子工程的领域
微程序机器层:
编程语言是微指令集
微指令所组成的微程序直接交由硬件执行
传统机器层:
编程语言是CPU指令集(机器指令)
编程语言和硬件是直接相关
不同架构的CPU使用不同的CPU指令集
一条机器指令对应一个微程序
一个微程序对应一组微指令
操作系统层:
向上提供了简易的操作界面
向下对接了指令系统,管理硬件资源
操作系统层是软件和硬件之间的适配层
汇编语言层:
汇编语言是汇编语言
汇编语言可以翻译为可直接执行的机器语言
完成翻译的过程就是汇编器
高级语言层:
编程语言为广大程序员所接受的高级语言
高级语言的类别非常多,有几百种
常见的高级语言有:Python,Java,C/C++,Golang
应用层:
满足计算机针对某种用途而专门设计:word,Excel,Powerpoint
分层的目的是便于理解
计算机的计算单位
容量单位
速度单位
容量单位 768M光盘 4G内存 2T硬盘
在物理层面,高低电平记录信息
理论上只认识0/1两种状态
0/1能够表示的内容太少了,需要更大的容量表示方法 0/1称为bit(比特位)
| 属性 | bit | Byte | KB | MB | GB | TB | PB | EB |
|---|---|---|---|---|---|---|---|---|
| 名字 | 比特位 | 字节 | 千字节 | 兆字节 | 吉字节 | 太字节 | 拍字节 | 艾字节 |
| 比例 | - | 8 bits | 1024 B | 1024 KB | 1024 MB | 1024 GB | 1024 TB | 1024 PB |
| 常见设备 | 门电路 | - | 寄存器 | 高速缓存 | 内存/硬盘 | 硬盘 | 云硬盘 | 数据仓库 |
字节:1Byte = 8bit
1G内存,可以存储多少字节的数据?可以存储多少比特数据?
1G = 1024^3 Bytes = 1024^3*8bits
为什么网上买的移动硬盘500G,格式化之后就只剩下465G了?
硬盘上一般用10进位标记容量
(500*1000^3)/ 1024^3 约等于 465
宽带中 2M宽带,4M宽带,100M宽带是什么意思?这里是容量吗?不是 是速度
网络速度
为什么电信拉的100M光纤,测试峰值速度只有12M每秒?
网络常用单位是Mbps
100M/s = 100Mbps = 100Mbit/s
100Mbit/s = (100/8)MB/s = 12.5 MB/S
CPU速度
CPU的速度一般体现再CPU的时钟频率
CPU的时钟频率的单位一般是赫兹(Hz)
主流CPU的时钟频率都在2GHz以上
Hz其实就是秒分之一
并不是描述计算机领域所专有的单位
它是每秒钟的周期性变动重复次数的计量
2GHz = 2*1000^3 Hz = 每秒20亿次
计算机的字符与编码集
字符编码集的历史
中文编码集
这个部分可以去搜一下:这里简明扼要的说一下:
兼容全球阿字符集是Unicode
Unicode定义了世界通用的符号集,UTF-*实现了编码
UTF-8是以字节为单位对Unicode进行编码
Windows系统默认使用GBK编码
编程推荐使用UTF-8编码
