计算机内存相关知识总结

计算机内存

计算机内存系统核心知识总结

软件层面:栈(Stack)

内存布局

  • 栈在高地址,向下增长:在进程的虚拟地址空间中,栈通常位于高地址区域,并随着数据压入而向低地址方向增长。

栈帧(Stack Frame)

  • 本质:栈帧本质上是一个函数的活动记录,用于存储函数的局部变量、参数、返回地址等信息。
  • 栈溢出防护
    • 代码层面 :使用安全的字符串函数,如 strncpy 替代 strcpy,避免缓冲区溢出。
    • 编译器层面 :GCC 默认开启 -fstack-protector 选项,在函数栈中插入保护字(canary)来检测栈溢出攻击。

硬件层面:存储层次结构

核心组件

  1. 寄存器(Registers):CPU 内部的速度最快的存储单元。
  2. 缓存(Cache):位于 CPU 和主存之间的高速缓冲存储器。
  3. 主存(Main Memory / RAM):程序运行时存放代码和数据的主要场所。

存储器分类

存储器主要分为两大类:

类型 全称 特点 典型应用
ROM 只读存储器(Read-Only Memory) 内容通常只能读取,不能随意写入。 存储固件、BIOS
RAM 随机存取存储器(Random Access Memory) 可读可写,断电后数据丢失。 用作系统主内存
ROM 的发展
  • 早期:紫外线可擦除(EPROM),但擦除次数有限。
  • 后期:电可擦除可编程只读存储器(EEPROM),可多次擦写。
RAM 的分类
类型 全称 特点 典型应用
SRAM 静态随机存取存储器(Static RAM) 速度快、造价高、不需要刷新。 CPU 内部的高速缓存(L1, L2, L3)
DRAM 动态随机存取存储器(Dynamic RAM) 速度相对慢、造价低、需要定期刷新。 内存条(主内存)

缓存(Cache)

  • 作用:缓存是处理器和主内存之间的高速桥梁,用于弥补 CPU 高速与内存低速之间的差距。
  • 层级 :通常为多层结构,如 L1、L2、L3 缓存,速度逐级降低,容量逐级增大。L1分指令缓存和数据缓存,L1存取速度4个cpu时钟周期,L2 11个,L3 39个 RAM内存的存取速度107个 L1大部分32KB 一个cache line为64Bytes 共有512条cache line 如果有8组 则每一路有64*64=4096Byts .为方便索引内存地址Tag:每条 Cache Line 前都会有一个独立分配的 24 bits来存的 tag,其就是内存地址的前24bits
    • Index:内存地址后续的6个bits则是在这一Way的是Cache Line 索引,2^6 = 64 刚好可以索引64条Cache Line
    • Offset:再往后的6bits用于表示在Cache Line 里的偏移量https://coolshell.cn/articles/20793.html
  • 管理单元
    • 缓存块(Cache Block / Cache Line):缓存进行数据管理的最小单元。
    • 容量计算:整个缓存容量 = 组数 × 路数 × 缓存块大小。

程序局部性原理

缓存设计基于以下两个关键的局部性原理:

原理 定义 对缓存设计的启示
时间局部性 被访问过一次的内存位置,在短时间内很可能再次被访问。 将最近访问过的数据保留在缓存中。
空间局部性 被访问过的某个内存位置附近的位置,不久后也大概率会被访问。 缓存加载数据时,会一次性加载一个缓存块(包含目标地址及其相邻数据)。

结论:正是基于程序访问内存所表现出的这些规律性(局部性),计算机系统才设计了多级缓存结构,从而显著提升了程序的整体执行效率。

相关推荐
XLYcmy18 小时前
核内调度问题的分层优化:缓存管理与性能均衡策略 模型评价 模型缺点与改进方向
缓存·ai·启发式算法·图神经网络·遗传算法·数模·模拟退火
随风一样自由1 天前
【前端+React+缓存竞态】导航切换缓存刷新机制
前端·react.js·缓存
桌面运维家1 天前
如何用半缓存云桌面将服务器硬盘容量扩展至本地终端?
运维·服务器·缓存
YOU OU2 天前
Redis初识
数据库·redis·缓存
livemetee2 天前
【关于redis高性能,高可用处理】
数据库·redis·缓存
青山木2 天前
Hot 100 --- LRU 缓存
java·数据结构·算法·leetcode·链表·缓存·哈希
无小道2 天前
Redis——哨兵
数据库·redis·缓存·哨兵
闪电悠米2 天前
黑马点评-Redis Set-实现关注、取关和共同关注
数据库·redis·缓存
Ricky_Theseus2 天前
CrewAI 生产化:缓存、回调、LLM 配置
java·spring·缓存
风向决定发型丶2 天前
redis集群搭建
数据库·redis·缓存