计算机内存相关知识总结

计算机内存

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

软件层面:栈(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):缓存进行数据管理的最小单元。
    • 容量计算:整个缓存容量 = 组数 × 路数 × 缓存块大小。

程序局部性原理

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

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

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

相关推荐
杨运交1 小时前
[031][缓存模块]RedisTemplate工具的租户隔离设计:自动Key前缀机制
缓存
xingyuzhisuan3 小时前
Redis 多级缓存落地聚合 API:重复请求降本 70% 实战数据
数据库·redis·缓存·ai
闪电悠米14 小时前
黑马点评-Redis 消息队列-03_stream_consumer_group
开发语言·数据库·redis·分布式·缓存·junit·lua
qqxhb14 小时前
47|成本与性能:缓存、批处理、模型路由与降级
缓存·批处理·智能模型路由·多级降级预案·成本预算
叶小鸡19 小时前
Java 篇-项目实战-AI 天机学堂(从 0 到 1)-day5
数据库·redis·缓存
大模型最新论文速读19 小时前
小红书提出 RedKnot:分头处理 kv 缓存,延时降低 60%效果还提升
论文阅读·人工智能·深度学习·机器学习·缓存·自然语言处理
大囚长21 小时前
大模型API的上下文缓存(Contextual Cache)
人工智能·缓存
小二·1 天前
Redis 7 分布式缓存架构实战
redis·分布式·缓存
一拳一个娘娘腔1 天前
CVE-2026-43284 — Dirty Frag 深度拆解:当零拷贝遇上原地解密,页缓存成了攻击者的画板
linux·缓存