计算机概念
这是一个家用计算机的硬件和软件组成:
- 计算机软件代码最基层 — 固件,在计算机首次启动时由处理器运行一些引导加载程序,比如从U盘、光盘等读取操作 系统。这些程序永久储存在计算机内存中,所以称作固件。嵌入式操作系统的 Bootloader 就属于这类固件;
- 中间层 — 操作系统;
- 最上层 — 应用软件,前端
计算机的模型
计算机原理架构
计算机的硬件
计算机硬件原理
- 中央处理器 (Central Processing Unit)
CPU 执行程序进程; - 主存储器 (Radom-access Memory)
RAM 保存进程指令和数据; - 输入/输出控制器:
使 CPU 能够与外部设备通信; - 系统总线
将所有内容与地址、数据、控制信号连接在一起。 - 算数逻辑单元 (ALU)
算术逻辑单元 (Arithmetic Logic Unit, ALU) 在处理器中执行数据的内部算术操作。 - 处理器读取和执行的指令控制寄存器和 ALU 之间的数据流。指令通过 ALU 的控制输入控制 ALU 执行的算术运算。
- 随机访问存储器 (RAM)
RAM 与 CPU 直接交换指令、数据。
随机访问内存,随时快速读写,通常作为操作系统或其他正在运行的程序的临时存储介质。
Von Neumann 架构:CPU处理器、内存之间指令流 - 指令从内存中读取,而数据则从内存中读取和写入;
Harvard 架构:指令、数据分开存储,每个存储空间具有单独的地址、数据和控制总线。
Intel X86 架构,存储内存结构
目前主流的三总线系统架构:地址总线、数据总线和控制总线。
算术逻辑单元:算术逻辑单元 (Arithmetic Logic Unit, ALU) 在处理器中执行数据的内部算术操作。
处理器读取和执行的指令控制寄存器和 ALU 之间的数据流。指令通过 ALU 的控制输入控制 ALU 执行的算术运算。
计算机软件指令集
RISC / CISC
- 复杂指令集 (Complex Instruction Set Computers, CISC)
CISC 指令集设计目标是用尽可能少的代码指令完成一项任务。
CISC 指令集一种特殊的 “MULT” 复杂指令,通过硬件连接执行进程。
例如,下列指令行执行存储器中 2行:3列的数据 × 5行:2列的数据 :
MULT 2:3, 5:2 - 精简指令集 (Reduced Instruction Set Computers, RISC)
RISC 指令集只在一个循环中执行简单指令。
“MULT”指令将被分成三步指令:
“LOAD” 指令,从存储器中读取数据,加载到寄存器中;
“PROD” 指令,计算寄存器中的两个操作数的乘积;
“STORE” 指令,将数据从寄存器存储到存储内存中。
LOAD A, 2:3
LOAD B, 5:2
PROD A, B
STORE 2:3, A
CISC / RISC 的比较
由于 RAM 存储内存技术的进步,存储内存存储大量指令是非常容易的。因此,RISC 指令集是目前应用最广泛的指令集。
Intel x86 架构是当前唯一仍采用 CISC 指令集的芯片。
RAM – 存储内存技术的进步,材料尺寸小型化
- 早期的真空管存储方式,1900s
集成到晶体振荡器电路中来产生传输频率。
- 第一代半导体晶体管,锗半导体
- RAM 内存,32GB DDR4 2666MHz
评价计算机的性能,可以用一个计算公式:
这个公式中的具体含义是:
T (执行一个程序进程的时间) = N1 (执行的指令数量) × N2 (执行指令需要的循环次数) × t (时钟周期)
计算机参考时间是通过时钟 (clock) 来确定的,这与材料本身本征性质有关。时钟指定的离散时间事件称为时钟周期。
CPU 进程完成一个程序的时间 (T) = CPU 进程的时钟周期 * 时钟周期时间 = CPU 进程的时钟周期 / 时钟速率 ;
例如,时钟的周期时间,可以是 5 ns。
时钟速率 = 频率 (Frequency),比如 200 MHz。
计算机的运算过程
计算机运算是通过二进制实现的。比如电路的“开”和“关”就分别对应“0”和“1”。
我们常常听到8位、16位、32位、64位,计算机的“位”是什么?
计算机编程编码是通过 “0” 和 “1” 存储数据的;
1 字节包括 8 个数字,位就是字节的长度。
00000000 00000001 ……
8位 | 2^8 = 256 | 256 Byte 存储空间 |
---|---|---|
16位 | 2^16 = 65,536 | 64 kb 存储空间 |
32位 | 2^32 = 4,294,967,296 | 4 Gb 存储空间 |
64位 | 2^64 = 18,446,744,073,709,551,616 | … … |
可见,32 位系统的最大存储空间是 4 Gb。因此,为 32 位系统的电脑加内存是没用的。而 64 位的系统内存足够大,通常不会全部使用。
现行的几种二进制编码包括:
ANSI
GB 2312
UTF - 8
UTF – 16
… …