汇编语言 - CPU与存储器
CPU,也就是中央处理器(Central Processing Unit),是计算机的核心部件,计算机需要向CPU提供指令和数据才能够让CPU运行,指令和数据存放在内存中,而CPU运算后的结果也需要进行保存才有意义,通常保存在内存中。
现在的计算机大部分都是基于冯诺依曼体系结构,而冯诺依曼体系的核心是存储程序, 顺序执行。
1. 冯诺依曼体系结构
冯诺依曼体系结构特点:
- 计算机中程序和数据使用二进制表示
- 指令和程序不加区分地混合存储在同一个存储器中
- 计算机顺序执行每一条指令
- 计算机由运算器、控制器、存储器、输入设备和输出设备五大部分组成
冯诺依曼体系结构必须要有以下功能:
- 将需要的指令和数据送入计算机中
- 必须具有长期记忆程序、数据、中间结果及最终运算结果的能力
- 能够完成各种算术、逻辑运算和数据传送等数据加工处理的能力
- 能够根据需要控制程序走向,并能根据指令控制机器的各部件协调操作
- 能够按照要求将处理结果输出给用户
从上面的结论来看,计算机中,内存和CPU是整个计算机最重要的部分,学习汇编语言,其实并不是非得使用汇编语言进行编程,而是能够通过学习汇编语言,了解CPU和内存之间的运行机制。
2. 存储设备
内存的逻辑结构
一个存储设备被划分为若干个单元,内存就是一块线性的空间
下图是一个拥有 n 个存储单元的内存空间,按照字节编址。
一个存储单元为一个字节(Byte),一个字节能够存储8个比特(bit),一个比特能够存储一个0或者一个1
常用单位转换:
8bit = 1Byte
210 Byte = 1 KB
210 KB = 1 MB
210 MB = 1 GB
210 GB = 1 TB
3. CPU 与内存的交互
内存被划分为多个单元,存储单元从0开始编号,每个单元都有唯一与之对应的编号。
CPU如果需要从内存中读写数据/指令,那就需要知道数据/指令的地址,并且将需写的数据发送到内存中,或者从内存中将需要的数据拿出来。
所以CPU和内存的交互需要三种信息。
- 存储单元的地址(地址信息)
- 命令的选择,读或者写(控制信息)
- 需要读或者写的数据(数据信息)
在物理设备上,CPU和内存之间需要使用导线连接以传送信息,连接CPU和内存之间的线被称为总线。
总线又分为:
- 地址线(传送地址信息)
- 数据线(传送数据信息)
- 控制线(传送控制信息)
每条线分别传送CPU和内存交互时需要的对应的信息
以下是CPU对内存进行的一次读写操作
读命令:3
- CPU首先发出读命令和需要读取操作的内存地址 5
- 然后将内存地址为 5 的内存单元中的数据 BC 通过数据线送入CPU
写命令:
- CPU首先发出写命令和需要进行写操作的内存地址 6
- 然后CPU将需要写的数据 FF 通过数据线送入内存中地址为 6 的单元
4. 总线
总线是CPU对内存进行交互的重要通道
4.1 地址总线
现在我们知道了,CPU 是通过地址总线进行寻址的,地址总线越多,可以寻址的范围就越大,也就是地址总线的宽度决定了 CPU 可以寻址的大小。
假如地址总线有 3 条,那么 3 个 bit 可以表示的数字为 0 - 7,那么内存最大也就只有 8 个 Byte
加入地址总线有 10 条,那么10个 bit 可以表示的数字为 0 - 1023,那么内存最大也就只有 1024Byte = 1KB
下图地址总线有 5 条,那么寻址范围为 0 到 25 - 1
4.2 数据总线
CPU与内存之间的数据传送是通过数据总线进行的,总线越宽,代表了一次能传送的数据也就越多
例如传送四个比特:
数据总线宽度为 2 的时候,需要传送两次
数据总线宽度为 4 的时候,只需要传送一次
很明显,只需要传送一次的效率肯定比需要传送两次的效率高。
4.3 控制总线
控制总线是选择对内存的操作,现在暂时只会遇到读操作,写操作。用一根线完全能够表示两种信息。
控制总线的宽度就是CPU能够对内存进行的控制数量,只是目前暂时只会遇到读或者写。
5. 相关练习题
-
一个 CPU 的寻址能力为 8 KB,那么它的地址总线的宽度为?
-
1 KB 的存储器有多少个存储单元?存储单元的编号又从多少到多少?
-
1 KB 的存储器可以存储多少个 bit ?
-
1 KB 的存储器可以存储多少个 Byte ?
-
1GB、1MB、1KB分别是多少 Byte?
-
8086、8088、80286、80386型号CPU地址总线宽度分别为16根,20根,24根,32根,则它们的寻址能力分别为多少KB?
-
8080、8088、8086、80286、80386的数据总线宽度分别为 8根,8根,16根,16根,32根,则它们分别一次可以传送的数据为多少Byte?
-
从内存中读取1024Byte的数据,8086至少需要读多少次,80836至少需要读多少次。
-
在存储器中,指令和数据是以什么形式存放的?K
答案:
- 13
- 1024个存储单元,编号为 0 - 1023
- 213 个 bit
- 1024 个Byte
- 分别为 230, 220, 210
- 分别为 26, 210,214,222 KB
- 分别为1, 1, 2, 2, 4 Byte
- 512次,1024次
- 以二进制形式存放