汇编语言 - CPU与存储器

汇编语言 - CPU与存储器

CPU,也就是中央处理器(Central Processing Unit),是计算机的核心部件,计算机需要向CPU提供指令和数据才能够让CPU运行,指令和数据存放在内存中,而CPU运算后的结果也需要进行保存才有意义,通常保存在内存中。

现在的计算机大部分都是基于冯诺依曼体系结构,而冯诺依曼体系的核心是存储程序, 顺序执行

1. 冯诺依曼体系结构

冯诺依曼体系结构特点:

  1. 计算机中程序和数据使用二进制表示
  2. 指令和程序不加区分地混合存储在同一个存储器中
  3. 计算机顺序执行每一条指令
  4. 计算机由运算器、控制器、存储器、输入设备和输出设备五大部分组成

image-20210805202535304

冯诺依曼体系结构必须要有以下功能:

  1. 将需要的指令和数据送入计算机中
  2. 必须具有长期记忆程序、数据、中间结果及最终运算结果的能力
  3. 能够完成各种算术、逻辑运算和数据传送等数据加工处理的能力
  4. 能够根据需要控制程序走向,并能根据指令控制机器的各部件协调操作
  5. 能够按照要求将处理结果输出给用户

从上面的结论来看,计算机中,内存和CPU是整个计算机最重要的部分,学习汇编语言,其实并不是非得使用汇编语言进行编程,而是能够通过学习汇编语言,了解CPU和内存之间的运行机制。

2. 存储设备

内存的逻辑结构

一个存储设备被划分为若干个单元,内存就是一块线性的空间

下图是一个拥有 n 个存储单元的内存空间,按照字节编址。

image-20210805204508124

一个存储单元为一个字节(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和内存的交互需要三种信息。

  1. 存储单元的地址(地址信息)
  2. 命令的选择,读或者写(控制信息)
  3. 需要读或者写的数据(数据信息)

在物理设备上,CPU和内存之间需要使用导线连接以传送信息,连接CPU和内存之间的线被称为总线。

总线又分为:

  1. 地址线(传送地址信息)
  2. 数据线(传送数据信息)
  3. 控制线(传送控制信息)

每条线分别传送CPU和内存交互时需要的对应的信息

以下是CPU对内存进行的一次读写操作

读命令:3

  1. CPU首先发出读命令和需要读取操作的内存地址 5
  2. 然后将内存地址为 5 的内存单元中的数据 BC 通过数据线送入CPU

写命令:

  1. CPU首先发出写命令和需要进行写操作的内存地址 6
  2. 然后CPU将需要写的数据 FF 通过数据线送入内存中地址为 6 的单元

image-20210805211458407image-20210805211511302

4. 总线

总线是CPU对内存进行交互的重要通道

4.1 地址总线

现在我们知道了,CPU 是通过地址总线进行寻址的,地址总线越多,可以寻址的范围就越大,也就是地址总线的宽度决定了 CPU 可以寻址的大小

假如地址总线有 3 条,那么 3 个 bit 可以表示的数字为 0 - 7,那么内存最大也就只有 8 个 Byte

加入地址总线有 10 条,那么10个 bit 可以表示的数字为 0 - 1023,那么内存最大也就只有 1024Byte = 1KB

下图地址总线有 5 条,那么寻址范围为 0 到 25 - 1

image-20210805213741002

4.2 数据总线

CPU与内存之间的数据传送是通过数据总线进行的,总线越宽,代表了一次能传送的数据也就越多

例如传送四个比特:

数据总线宽度为 2 的时候,需要传送两次

数据总线宽度为 4 的时候,只需要传送一次

很明显,只需要传送一次的效率肯定比需要传送两次的效率高。

image-20210805214657450image-20210805214707235

4.3 控制总线

控制总线是选择对内存的操作,现在暂时只会遇到读操作,写操作。用一根线完全能够表示两种信息。

控制总线的宽度就是CPU能够对内存进行的控制数量,只是目前暂时只会遇到读或者写。

image-20210805215331886

5. 相关练习题

  1. 一个 CPU 的寻址能力为 8 KB,那么它的地址总线的宽度为?

  2. 1 KB 的存储器有多少个存储单元?存储单元的编号又从多少到多少?

  3. 1 KB 的存储器可以存储多少个 bit ?

  4. 1 KB 的存储器可以存储多少个 Byte ?

  5. 1GB、1MB、1KB分别是多少 Byte?

  6. 8086、8088、80286、80386型号CPU地址总线宽度分别为16根,20根,24根,32根,则它们的寻址能力分别为多少KB?

  7. 8080、8088、8086、80286、80386的数据总线宽度分别为 8根,8根,16根,16根,32根,则它们分别一次可以传送的数据为多少Byte?

  8. 从内存中读取1024Byte的数据,8086至少需要读多少次,80836至少需要读多少次。

  9. 在存储器中,指令和数据是以什么形式存放的?K

答案:

  1. 13
  2. 1024个存储单元,编号为 0 - 1023
  3. 213 个 bit
  4. 1024 个Byte
  5. 分别为 230, 220, 210
  6. 分别为 26, 210,214,222 KB
  7. 分别为1, 1, 2, 2, 4 Byte
  8. 512次,1024次
  9. 以二进制形式存放

猜你喜欢

转载自blog.csdn.net/qq_45978890/article/details/119428665