目录
计算机组成原理(一)
计算机的发展历程
- 电子管计算机
- 晶体管计算机
- 集成电路计算机
- 集成电路是把电路元件集成在一个指甲盖大小的硅片上
- 集成电路的电路元件有的是晶体管,有的是光刻电路
- 半导体就是导电性介于导体和绝缘体之间,在其参杂入不同的杂质时,导电性也会发生相应的变化。可以在同一个硅平面内不同区域掺杂不同杂质,以获得不同的电性,组成相应的电子元件。
- 超大规模集成电路计算机(当下计算机)
- 量子计算机、生物计算机(未来的发展)
集成电路和芯片的区别?
芯片是集成电路的一种载体
拓展阅读
冯诺依曼体系
指令和数据存储到同一块内存中,存储程序指令,设计通用电路
任何数据必须加载到内存才能和CPU
进行交互,如Java的字节码文件就必须使用ClassLoader
加载到内存中,才能与CPU
交互
五大组成:输入设配,存储器,控制器,运算器,输出设配
冯诺依曼体系:以**CPU
**为核心
改进的冯诺依曼体系:以存储器为核心
冯诺依曼瓶颈:CPU
和存储器速率不匹配
哈佛结构
哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。哈佛结构是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问。
冯▪诺依曼结构主要应用于通用计算机领域。
哈佛结构主要应用于嵌入式计算机中。
现代的CPU(准确说叫SoC
[系统芯片])基本都不是纯粹的哈佛结构或冯诺依曼机构,而都是混合结构的,例如很多高级ARM芯片已经采用哈佛结构和冯诺依曼结构的结合
编译执行和解释执行
编译型语言:编译器,C/C++
, Golang
解释型语言:解析器,Python
, JavaScript
, PHP
编译+解释:Java
、C#
Python 之所以称为解释型语言,是因为它没有显示的调用编译操作(实际会编译成pyc
后缀的字节码文件),
表现出解释型的特性比较多而已。但事实上,编译是存在的,具体怎么编译就看语言的实现了,也就是解释器的设计
区分是编译还是解析执行的意义并不大,而且要关注程序是如何运行的
计算机的层次结构
硬件逻辑层 门电路、触发器等、深入学习可以看数字逻辑
微程序机器层 编程语言是微指令集,微指令所组成的微指令直接交由硬件执行
传统机器层 CPU指令集(机器指令,与硬件直接相关,如Intel和AMD的CPU指令集就不同)
操作系统层 硬件和软件的适配层,所以操作系统大都可以兼容不同的CPU指令集(Linux兼容性比Windows好)
汇编语言层 人类可读的语言,如PUSH,MOV等指令
高级语言层 如C/C++, Java等
1条机器指令对应1个微程序,1个微程序对应一组微指令
计算机的度量单位
计算机只能识别0或1,这句话是。晶体管识别有无电流通过对应2进制,当然也可以根据电流的强弱对应其他进制
理论上3进制是最高效的进制(更加接近e
),可以参考为什么进制接近e最有效率
使用2进制是因为2进制有布尔代数这个基础,而且电路设计简单
详见Crash Course Computer Science(p3-01:20)
容量单位
单位 | 比例( 1 B = 8 b 1B = 8b 1B=8b, 1 K B = 1024 M B 1KB = 1024MB 1KB=1024MB) |
---|---|
bit | 1 |
Byte | 8 |
KB | 2 10 2^{10} 210 |
MB | 2 10 2^{10} 210 |
GB | 2 10 2^{10} 210 |
TB | 2 10 2^{10} 210 |
PB | 2 10 2^{10} 210 |
EB | 2 10 2^{10} 210 |
硬盘厂家通常是按照
1
G
B
=
1000
M
B
1GB=1000MB
1GB=1000MB进行换算,所以硬盘容量常常缩水
硬盘实际容量计算公式,
500
G
B
=
500
∗
1000
1024
=
488.28125
G
B
500GB = 500*\frac{1000}{1024} = 488.28125GB
500GB=500∗10241000=488.28125GB
国际单位制中TB
、GB
、MB
、KB
是1000
进制的计数单位(但是计算机中还是
1
G
B
=
1024
M
B
1GB = 1024MB
1GB=1024MB)
为此国际电工协会(IEC
)拟定了"KiB"、“MiB”、“GiB"
的二进制单位
参考:百度百科—硬盘容量
速度单位
网速
10
M
/
s
=
10
M
b
p
s
=
10
M
b
i
t
/
s
10M/s = 10Mbps = 10Mbit/s
10M/s=10Mbps=10Mbit/s
10
M
b
i
t
/
s
=
1.25
M
B
/
s
10Mbit/s = 1.25MB/s
10Mbit/s=1.25MB/s
所以10
兆光纤实际速度最多只有1.25MB
CPU时钟频率
Hz,秒分之一,每秒重复次数的计量,如蜜蜂翅膀的震动频率大约为400Hz
,
人能听见的声音频率是20~20000Hz
,蝴蝶的震动频率大约为15Hz
,所以人耳听不见
2
G
H
z
=
2
∗
100
0
3
H
z
2GHz = 2*1000^3Hz
2GHz=2∗10003Hz 每秒20亿次
字符编码
数字和字符的对应关系
ASCII码及其扩展
刚开始只有
7bit
有对应字符,其他位置都空着,后来加上了数学符号、其他欧洲国家的语言符号以及其他常用的符号
由于大部分字符编码都向下兼容ASCII码(UFT-16
好像不兼容),所以如果一个只有ASCII码的文件是不可能存在乱码的,这也是路径、文件尽量选择不带中文的原因(当然,最好不要有空格,因为Linux路径约定中建议避免使用空格、中文)
ASCII表及其扩展在线查询
GB2312
和GBK
GB2312
:又叫国标2312
,收录了常见的中文字符GBK
:向下兼容GB2312
,收录了中日韩文字
Unicode
和UTF-8
Unicode
:Unicode
只规定了字符和数字的对应关系,UTF-8
和UTF-16
等实现了存储方式UTF-8
可变长。它可以使用1 - 4
个字节表示一个字符,根据字符的不同变换长度,兼容ASCII
码