计算机系统基础-存储访问
1.存储器使用场景
先来看如下这一张图,CPU运行程序的流程如下:
1:假设我现在在电脑上编译了一个hello.c
的程序,编译完成后为hello.bin
的一个二进制文件,此时这个程序还存储在我们电脑的硬盘上,这个硬盘可能是机械硬盘也可能是固态硬盘,这些都是外存储器。
2:将hello.bin
装载进内存,这里的内存就是插在电脑上的内存条,hello.bin
包含了cpu要执行的指令和运行所需要的数据。
3:CPU从内存中逐条读取指令及相关指令,然后依次执行完成对数据的处理。
4:将处理结果送回内存保存,然后再将处理结果送到外存储器。
所以其实在CPU运行的过程中主要是分为两类存储器:
内存储器
存取速度快
成本高、容量相对较小
直接与CPU连接,CPU对内存 中可直接进行读、写操作
属于易失性存储器(volatile), 用于临时存放正在运行的程序和数据,掉电就没了数据。
外存储器(简称外存或辅存)
– 存取速度慢 – 成本低、容量很大
– 不与CPU直接连接,先传送到内 存,然后才能被CPU使用。
– 属于非易失性存储器,用于长久存放系统中几乎所有的信息
这里可能会有个疑问,CPU访问内存的方式是通过地址总线来访问的,CPU是如何访问外存的呢:
CPU访问外部存储器(外存)的方式通常是通过输入输出(I/O)指令和I/O总线来实现的。外存通常指的是硬盘、固态硬盘(SSD)、光盘、磁带等非易失性存储介质。
与内存访问不同,外存的访问速度相对较慢,因此CPU在执行指令时通常不直接与外存进行交互,而是通过操作系统和设备控制器等中间层来实现。以下是CPU访问外存的一般过程:
- CPU发送I/O指令:当需要读取或写入外存中的数据时,CPU会发出相应的I/O指令,这些指令通常包括读取(IN)和写入(OUT)操作。
- I/O总线传输:CPU将I/O指令发送到I/O总线上。I/O总线是一种特殊的总线,用于传输CPU和外部设备之间的数据和控制信号。
- 设备控制器响应:I/O总线上连接着各种外部设备控制器,如硬盘控制器或磁带控制器。当设备控制器接收到CPU发送的I/O指令时,它会解析指令并准备执行相应的读取或写入操作。
- 数据传输:设备控制器根据指令从外存读取数据或将数据写入外存。这个过程涉及到设备控制器与外存之间的数据传输,可能需要通过外存总线或其他特定接口进行。
- 完成操作:设备控制器完成读取或写入操作后,将状态信息返回给CPU,指示操作是否成功或是否有错误发生。
主存的结构如下:
一个存储单元为一个bit,按字节编址的话一个地址对应的就是8个字节,数据总线读取一个地址的数据就一次性读取8个bit,这8个bit的地址都是一样的
如果CPU的数据总线是64位,则一次性最大可以读取64bit的数据也就是8个字节。
地址线为36位,则可以寻址的范围是0~2^36-1,即主存地址空间为64GB。
2.存储器分类
2.1 RAM
内存(主存,RAM,Random Access Memory):
- 主存是CPU直接访问的存储器,用于存储当前执行的程序、数据和临时计算结果。
- 分类:
- 随机访问存储器(RAM):包括动态随机访问存储器(DRAM)和静态随机访问存储器(SRAM)。DRAM存储器成本较低,容量较大,但读写速度相对较慢;SRAM存储器读写速度快,但成本较高。
- 缓存(Cache):用于在CPU和主存之间提供快速数据访问,减少CPU等待数据的时间。根据接近CPU的级别不同,可以分为一级缓存(L1 Cache)、二级缓存(L2 Cache)等多级别缓存。
- 应用场景:
- 执行指令和存储数据:CPU从内存中读取指令和数据进行运算和处理。
- 运行操作系统和应用程序:操作系统和应用程序加载到内存中运行,提供计算、存储和交互功能。
2.2 ROM
ROM是只读存储器(Read-Only Memory)的缩写,它是一种用于存储固定数据的存储器类型。与可写的存储器(如RAM)不同,ROM中的数据在制造或编程之后就无法被修改。
以下是一些关键特点和应用场景,以帮助更好理解ROM:
特点:
- 只读性质:ROM中的数据在制造或编程之后就无法被修改或擦除。
- 非易失性:与RAM不同,ROM中的数据在断电或重新启动后仍然保持不变。
- 持久存储:ROM用于存储固定的数据,如固件、引导程序、不经常更改的配置信息等。
应用场景:
- 固件:ROM常用于存储计算机系统或电子设备的固件,包括BIOS(基本输入/输出系统)、固件程序和引导加载器等。
- 引导程序:计算机启动时,ROM中的引导程序负责初始化硬件和加载操作系统。
- 芯片固化数据:ROM用于存储芯片的校准数据、配置信息和厂商特定的数据,以便在设备制造后使用。
- 只读存储媒体:一些光盘和芯片类型,如CD-ROM、DVD-ROM、Blu-ray Disc、EPROM(可擦除可编程只读存储器)等,被设计为只读存储介质。
需要注意的是,不同类型的ROM可以具有不同的特性。例如,EPROM是一种可擦除可编程只读存储器,允许通过特殊操作将其中的数据擦除并重新编程,而普通的ROM则不具备这种功能。此外,还有一些衍生类型的ROM,如EEPROM(可擦除可编程只读存储器)、Flash存储器等,它们具有一定的可擦除和可重新编程的能力。
2.3 储存器功能分类
- 寄存器(Register)
- 封装在CPU内,用于存放当前正在执行的指令和使用的数据
- 用触发器实现,速度快,容量小(几~几十个)
- 高速缓存(Cache)
- 位于CPU内部或附近,用来存放当前要执行的局部程序段和数据
- -用SRAM实现,速度可与CPU匹配,容量小(几MB)
- 内存储器MM(主存储器Main (Primary) Memory)
- 位于CPU之外,用来存放已被启动的程序及所用的数据
- 用DRAM实现,速度较快,容量较大(几GB)
- 外存储器AM (辅助存储器Auxiliary / Secondary Storage)
- 位于主机之外,用来存放暂不运行的程序、数据或存档文件
- 用磁盘、SSD等实现,容量大而速度慢