📜  内存分类(1)

📅  最后修改于: 2023-12-03 15:36:48.477000             🧑  作者: Mango

内存分类

在计算机系统中,内存是指用于暂时存放程序运行时需要使用的数据和指令的存储空间。我们可以将内存分为以下几类:

1. 寄存器

寄存器是CPU内部的一种存储器件,用于暂存指令和数据。由于它是CPU内部的组成部分,因此它的读取和写入速度非常快。不同的CPU架构会有不同数量和类型的寄存器。

示例代码
mov eax, 1 ; 将值1存入eax寄存器
add eax, 2 ; 将eax寄存器中的值加上2,结果存回eax寄存器
2. 缓存

缓存是一种介于主存储器和CPU之间的高速存储器。CPU执行指令时,会将需要的数据从主存储器中读取到缓存中,以提高读取速度。不同的CPU架构会有不同级别和大小的缓存。

示例代码
int main() {
    int arr[10000];
    /* 将arr数组中的所有元素都置为0 */
    for (int i = 0; i < 10000; i++) {
        arr[i] = 0;
    }
    return 0;
}
3. 主存储器

主存储器是计算机系统中最主要的存储器,它用于存储程序运行时需要的数据和指令。主存储器由一组用于存储数据的存储单元组成,每个存储单元都有一个唯一的地址。

示例代码
int main() {
    int a = 1;
    int b = 2;
    int c = a + b;
    return 0;
}
4. 虚拟内存

虚拟内存是计算机系统中一种将主存储器扩展到磁盘上的技术。它将主存储器分成若干个固定大小的页面,每个页面可以被映射到物理内存或磁盘上。当程序需要访问一个尚未装载到物理内存中的页面时,虚拟内存会将其从磁盘上读入物理内存,并将不常用的页面调出到磁盘上。

示例代码
int main() {
    /* 访问超出数组范围的元素,会导致访问未被映射到物理内存中的页面 */
    int arr[10000];
    arr[10000] = 1;
    return 0;
}
5. 高速缓存(L1/L2/L3 Cache)

高速缓存是CPU内部的一种高速缓存,用于暂存主存储器中经常访问的数据。高速缓存采用比主内存更快的访问速度,并且可以保证CPU在访问高速缓存中的数据时不需要等待。

示例代码
int main() {
    int a = 1;
    int b = 2;
    int c = a + b;
    return 0;
}