CPU写内存时,如果每个写都直接发到内存总线,效率会很低。写缓冲区合并(Write Combining/Merging)技术把多个小写入攒起来,打包成一个大块一起发,既省带宽...
CPU写内存时,如果每个写都直接发到内存总线,效率会很低。写缓冲区合并(Write Combining/Merging)技术把多个小写入攒起来,打包成一个大块一起发,既省带宽...
CPU的缓存越来越大,但单端口SRAM的访问速度跟不上处理器的发射宽度。多缓存组(Multi-Banking)技术把一个大缓存拆成多个独立的小块,让它们并行工作。 1. 单端...
缓存miss了咋整?传统做法是CPU干等着,直到数据从内存回来。无阻塞缓存(Non-blocking Cache)打破了这个规矩——即使前面有个miss正在处理,后面的请求该...
很多人学缓存时都被"组相联"、"N路"这些概念搞晕。其实组和路就是缓存的两个维度——组是行,路是列。这篇用实际芯片数据和硬件原理讲清楚。 1. 组是楼层,路是房间 想象一栋公...
高相联度缓存(8路、16路组相联)是减少冲突缺失的有效手段,但硬件复杂度过高会拖慢访问速度。增加流水线段数能否解决这个问题? 1. 高相联度缓存的痛点 组相联缓存的访问流程很...
芯片的静态功耗:关不掉的"待机耗电" 做低功耗设计时,静态功耗(Static Power)是个绕不开的坑。它跟动态功耗不同,不管芯片干不干活,只要通电就在耗电。 静态功耗从哪...
在一些芯片相关的描述或者书籍中,经常把"功率"和"能耗"混着用。但在实际工程中,这两个概念差别很大。结合最近看的资料,聊聊里面的门道。 功率带来的硬约束 现代芯片面临的首要问...
这张流程图展示了完整的地址转换和数据访问流程,结合缺页的那篇能搞清楚内存访问的完整链路。 内存访问的实际路径 CPU要访问内存,走这么几步: 第一步:TLB查询 虚拟地址拆成...
缺页的代价很高——要从磁盘读数据,毫秒级延迟。所以操作系统有两个核心诉求:一是虚拟页可以放在物理内存的任意位置(灵活性),二是找到它的速度要快(效率)。这两个诉求其实有点矛盾...
直接操作物理内存听起来简单,但现代操作系统无一例外都选择了虚拟地址。 直接操作物理地址的问题 假设程序直接访问物理内存: 没有隔离:进程A可以随意读写进程B的内存,甚至内核空...
SRAM用6个晶体管存1位,DRAM只用1个晶体管加1个电容。密度高、成本低,但代价是慢而且需要刷新。服务器中哪些会用到SRAM,DRAM的具体刷新机制是怎么样的呢? 基本存...
程序运行时,CPU通过虚拟地址访问内存。MMU(内存管理单元)负责将虚拟地址翻译成物理地址——这个过程依赖页表。当页表说"这个页面不在内存里",缺页中断就发生了。 整个过程:...
写缓存的时候,数据是立刻同步到内存,还是先攒着?这就是直写(Write-Through)和写回(Write-Back)的区别。两种策略没有绝对好坏,一致性和性能坐在跷跷板两头...
看CPU相关的资料,经常遇到stall和halt这两个词,都翻译成"暂停",但意思完全不一样。stall是流水线卡了一下,halt是整个系统停摆。 Stall:流水线打了个嗝...