除法是CPU最慢的操作之一。传统设计里,除法单元独占24+周期,期间其他指令只能干等。流水线化让除法也能像加法一样流水执行,大幅提升吞吐量。这篇聊聊除法流水化的原理、实现和代...
除法是CPU最慢的操作之一。传统设计里,除法单元独占24+周期,期间其他指令只能干等。流水线化让除法也能像加法一样流水执行,大幅提升吞吐量。这篇聊聊除法流水化的原理、实现和代...
CPU只有16个整数寄存器(x86-64),但现代处理器内部有上百个物理寄存器。寄存器重命名技术把程序看到的"逻辑寄存器"动态映射到"物理寄存器",消除WAW和WAR假依赖,...
流水线让CPU同时执行多条指令,但指令之间会打架。结构冒险抢硬件,数据冒险抢数据,控制冒险抢方向。这篇聊聊这三种冒险的本质和应对方法。 1. 结构冒险:硬件不够用了 1.1 ...
ROB:现代CPU的"指挥中心" 超标量处理器每周期发射多条指令,但程序要求顺序执行的效果。Reorder Buffer(ROB,重排序缓冲区)就是这个矛盾的核心解决方案——...
流水线让CPU同时执行多条指令,但数据依赖会卡住流水线。转发(Forwarding/Bypassing)技术通过把结果直接传给需要它的指令,避免等待写回寄存器。x86和ARM...
CPU缓存用SRAM,内存用DRAM,这是计算机体系结构的基本常识。但为什么不用SRAM做主存?DRAM这些年在忙什么?这篇从物理原理到产业现实聊清楚。 1. 物理原理:6T...
缓存优化是计算机体系结构的核心课题。《计算机体系结构:量化研究方法》中总结了10种高级优化技术,每种都在性能、功耗、复杂度之间做取舍。 1. 降低命中时间的技术 1.1 小而...
矩阵乘法是科学计算的核心,但 naive 实现性能惨不忍睹。问题出在缓存——三个大矩阵来回折腾,L1缓存根本装不下。缓存分块(Cache Blocking/Tiling)通过...
CPU等内存是最浪费时间的事。硬件预取(Hardware Prefetching)让CPU在需要数据之前就把它从内存抓到缓存,等真正要用的时候,数据已经在缓存里了。 1. 为...
缓存miss了,传统做法是等整个64字节块从内存回来再交给CPU。但CPU可能只需要其中4字节。关键字优先(Critical Word First)和提前重启动(Early ...
缓存Bank化不只是为了提升带宽,更是为了省电。把大缓存拆成多个小Bank,每次只激活需要的部分,功耗能降30%以上。 1. 单Bank的功耗噩梦 想象一个32KB的L1缓存...
上一篇我们聊了写合并,实际情况中写文件、发网络包、填显存,如果逐字节/逐字段操作,性能会惨不忍睹。这一篇具体讲讲在业务代码中可能遇到的情况。 1. 核心思想:缓冲+批量 无论...
CPU写内存时,如果每个写都直接发到内存总线,效率会很低。写缓冲区合并(Write Combining/Merging)技术把多个小写入攒起来,打包成一个大块一起发,既省带宽...
CPU的缓存越来越大,但单端口SRAM的访问速度跟不上处理器的发射宽度。多缓存组(Multi-Banking)技术把一个大缓存拆成多个独立的小块,让它们并行工作。 1. 单端...
缓存miss了咋整?传统做法是CPU干等着,直到数据从内存回来。无阻塞缓存(Non-blocking Cache)打破了这个规矩——即使前面有个miss正在处理,后面的请求该...
很多人学缓存时都被"组相联"、"N路"这些概念搞晕。其实组和路就是缓存的两个维度——组是行,路是列。这篇用实际芯片数据和硬件原理讲清楚。 1. 组是楼层,路是房间 想象一栋公...
高相联度缓存(8路、16路组相联)是减少冲突缺失的有效手段,但硬件复杂度过高会拖慢访问速度。增加流水线段数能否解决这个问题? 1. 高相联度缓存的痛点 组相联缓存的访问流程很...
芯片的静态功耗:关不掉的"待机耗电" 做低功耗设计时,静态功耗(Static Power)是个绕不开的坑。它跟动态功耗不同,不管芯片干不干活,只要通电就在耗电。 静态功耗从哪...
在一些芯片相关的描述或者书籍中,经常把"功率"和"能耗"混着用。但在实际工程中,这两个概念差别很大。结合最近看的资料,聊聊里面的门道。 功率带来的硬约束 现代芯片面临的首要问...