从晶体管、逻辑门、时钟、寄存器、SRAM / DRAM、NAND Flash 到设备硬件的最小物理图像
| 层级 | 它是什么 | 对上层的意义 |
|---|---|---|
| 晶体管 | 受控制的电子开关 | 所有数字逻辑的物理基础 |
| 逻辑门 | AND、OR、NOT、XOR 等布尔运算电路 | 构成加法器、比较器、选择器等基本计算单元 |
| 组合逻辑 | 输出只由当前输入决定 | 执行算术、译码、路由和控制判断 |
| 时序逻辑 | 输出与当前输入和历史状态有关 | 寄存器、计数器、状态机、流水线都依赖时序逻辑 |
| 时钟 | 让电路按节拍推进状态 | 频率、功耗、热、时序收敛共同限制性能上限 |
| 介质 | 特性 | 工程上的影子 |
|---|---|---|
| SRAM | 快、贵、面积大,常用于 CPU Cache | Cache 容量有限,命中率对性能至关重要 |
| DRAM | 容量大、需要刷新,访问慢于 SRAM | 主存访问比 CPU 计算慢很多,内存带宽和延迟会限制程序 |
| NAND Flash | 非易失、按页读写、按块擦除,有寿命和写放大问题 | SSD 快但不是无成本,随机写、同步刷盘、磨损和 FTL 都影响尾延迟 |
| 磁盘 | 机械结构,顺序吞吐和随机延迟差异极大 | 日志、数据库和备份系统要区分顺序写、随机读写和队列深度 |
| 设备 | 硬件本质 | 上层现象 |
|---|---|---|
| 网卡 | 收发以太网帧,使用队列、中断、DMA 与内存协作 | 包量高时,软中断、队列、驱动和 CPU 亲和性影响网络吞吐 |
| SSD | NAND + 控制器 + FTL,把块设备接口映射到闪存页 / 块 | 写放大、GC、擦除块和队列深度会影响 P99 写延迟 |
| GPU | 大量并行计算单元 + 高带宽显存 | AI / 图形 / 科学计算受显存、带宽、kernel launch、数据搬运影响 |
| TPU / NPU | 面向矩阵或张量计算的专用硬件 | 吞吐高但依赖模型形状、编译器、算子支持和数据布局 |
| 物理限制 | 软件中的表现 | 判断方式 |
|---|---|---|
| 信号传播需要时间 | 频率不能无限提高,跨芯片 / 跨机房延迟更不可能消失 | 不要把远程调用想成函数调用 |
| 能耗和热 | CPU / GPU 会降频,数据中心受供电和散热限制 | 高负载下看频率、温度、功耗和 throttling |
| 存储层级速度差 | Cache、内存、SSD、网络存储延迟差几个数量级 | 用缓存、批量、预取、异步和局部性管理差距 |
| 设备队列有限 | 高峰时排队导致尾延迟爆炸 | 看队列深度、利用率和 P99,而不只看平均吞吐 |
| 物理事实 | 上层抽象 | 穿透方式 | 工程后果 |
|---|---|---|---|
| 信号传播和开关翻转需要时间 | CPU 主频、内存访问、网络延迟 | 频率不能无限升,距离和介质会变成延迟下限 | 本地内存、同机房、跨地域调用的延迟不可能被框架抹平 |
| 晶体管开关消耗能量并发热 | 功耗、散热、降频 | 负载越高越可能触发 thermal / power throttling | 压测后半段变慢,可能不是代码变了,而是频率下来了 |
| SRAM 贵而小,DRAM 慢而大 | Cache / 主存层级 | 热点数据能留在 Cache 就快,随机大数据集会被主存拖住 | 数据布局、局部性和批量处理比“多写几行优化代码”更关键 |
| NAND Flash 擦写不对称 | SSD、数据库、日志系统 | 写入会经过 FTL、擦除块、GC 和写放大 | 同步写、随机写、压缩整理会制造 P99 抖动 |
| 设备通过总线、队列、中断与 CPU 协作 | 网卡、磁盘、GPU、加速器 | 数据搬运和队列排队本身就有成本 | GPU 算得快不代表端到端快,网卡带宽高不代表服务吞吐高 |
| 场景 | 底层物理原因 | 软件层表现 | 处理思路 |
|---|---|---|---|
| 跨地域调用怎么优化都慢 | 光速和路由距离给延迟设下限 | 单次 RPC 延迟无法压到本地调用量级 | 减少同步跨地域调用,改用缓存、异步、就近部署和数据副本 |
| SSD 写入偶发长尾 | NAND 擦除、FTL 映射、盘内 GC 和队列排队 | 数据库 commit、日志 fsync、对象存储写入 P99 抖动 | 批量写、顺序写、削峰、分盘、观察设备队列和写放大 |
| AI 推理 GPU 利用率不高 | CPU 到 GPU 数据搬运、显存带宽、kernel launch、batch 形状 | GPU 看起来没满,但请求延迟高 | 优化 batch、减少拷贝、融合算子、检查显存和 PCIe / NVLink 路径 |
| 高负载一段时间后性能下降 | 功耗墙、温度墙、动态降频 | 同样 QPS 下延迟越来越高 | 观察频率、温度、功耗、散热和节点资源混部 |
| 场景 | 错误猜测 | 真实机制 | 证据 | 动作 |
|---|---|---|---|---|
| 跨地域接口怎么优化都在几十毫秒以上 | RPC 框架太慢 | 距离、路由、光纤传播和中间设备给延迟设了物理下限 | ping / traceroute、地域距离、链路路径、同机房对照延迟 | 减少同步跨地域依赖,就近部署,异步复制,读本地副本,合并调用 |
| SSD 平均写很快,但数据库提交 P99 抖 | 数据库事务实现差 | NAND 擦除块、FTL、盘内 GC、写放大和设备队列会制造长尾 | iostat await、磁盘队列、fsync 耗时、设备写放大、P99 对齐 compaction / checkpoint | 顺序批量写,削峰,隔离日志盘,调 checkpoint,观察设备队列而不只看平均吞吐 |
| GPU 利用率不高但推理延迟高 | 模型太小或 GPU 太差 | CPU 预处理、PCIe 搬运、显存带宽、kernel launch、batch 形状都可能让 GPU 等数据 | GPU utilization、显存带宽、H2D / D2H 拷贝、batch timeline、kernel 间隙 | 融合算子,固定 batch,减少拷贝,流水线化预处理,检查 PCIe / NVLink 拓扑 |
| 高峰半小时后同样流量越来越慢 | 服务有内存泄漏 | 也可能是功耗、温度、风扇策略或混部导致 CPU / GPU 降频 | 频率、温度、功耗、throttling、节点共部署负载、机房温度 | 把性能时间线和硬件遥测对齐,必要时降载、隔离节点或优化散热 / 功耗预算 |
| 误判 | 为什么错 | 更好的说法 |
|---|---|---|
| 硬件足够快,软件不用管物理限制 | 越高性能的系统,越容易被内存、总线、设备队列和能耗限制 | 软件优化的核心之一就是尊重物理层级 |
| SSD 没有机械结构,所以写入没有长尾 | NAND 擦除、FTL 和盘内 GC 仍然会制造长尾 | SSD 快的是平均和并发能力,不代表同步写没有 P99 |
| GPU 算力高,端到端一定快 | 数据搬运、显存、batch、算子和 CPU 预处理可能才是瓶颈 | 加速器优化要看端到端 timeline,不只看 TFLOPS |
| 不深挖 | 原因 | 什么时候需要学 |
|---|---|---|
| 半导体制造工艺 | 和一般软件工程排障距离较远 | 芯片、硬件、AI Infra 供应链、数据中心成本研究 |
| 模拟电路 | 数字系统只需要知道信号不是理想的即可 | 硬件设计、通信、传感器、嵌入式底层 |
| 版图与时序收敛 | 属于芯片设计专业深水区 | ASIC / FPGA / EDA 方向 |
| 步骤 | 判断 | 证据 |
|---|---|---|
| 1. 拆端到端时间 | GPU 利用率不是端到端延迟,先拆 CPU 预处理、拷贝、排队、执行、后处理 | 请求 timeline、GPU profiler、服务 trace |
| 2. 看数据搬运 | PCIe / NVLink、H2D / D2H 拷贝可能比算子更慢 | copy time、显存带宽、batch 大小、pinned memory |
| 3. 看算子形状 | 小 batch、小矩阵、频繁 kernel launch 会让 GPU 等任务 | kernel 间隙、occupancy、batch shape、算子 timeline |
| 4. 看物理限制 | 显存、功耗、温度、拓扑都可能限制吞吐 | 显存使用、功耗、频率、温度、PCIe 拓扑 |
| 5. 改造路径 | 减少搬运、合并算子、批量化、流水线化,而不是只换更贵 GPU | 优化前后端到端 P50 / P99、吞吐、成本 |
| 物理限制 | 不能指望什么 | 工程设计响应 | 验证指标 |
|---|---|---|---|
| 距离和传播速度 | 不能把跨地域 RPC 优化成本地函数调用 | 就近部署、读本地副本、异步复制、减少同步链路、合并远程调用 | RTT、跨地域调用次数、P99、超时率 |
| 介质读写不对称 | 不能认为 SSD 平均快就没有同步写长尾 | 顺序写、批量提交、日志盘隔离、削峰、控制 checkpoint / compaction | fsync P99、await、队列深度、写放大、数据库提交延迟 |
| 数据搬运成本 | 不能只看计算单元峰值算力 | 减少拷贝、固定 batch、流水线化、融合算子、优化 PCIe / NVLink 拓扑 | H2D / D2H、kernel gap、显存带宽、端到端 timeline |
| 功耗和散热 | 不能假设高负载下频率恒定 | 功耗预算、节点隔离、混部治理、散热校验、降载策略 | 频率、温度、功耗、throttling、同流量延迟曲线 |
| 设备队列有限 | 不能用平均吞吐代表高峰体验 | 背压、限流、队列隔离、批量、优先级、过载保护 | 队列深度、利用率、P99 / P999、丢包 / 超时 |
| 步骤 | 判断 | 关键证据 | 动作 |
|---|---|---|---|
| 1. 先承认物理下限 | 光在光纤里的传播、路由绕行、中间设备和协议握手共同决定了跨地域最低延迟 | 地域距离、ping、traceroute、运营商 / 云厂商链路、同机房对照 | 不要把“优化 RPC 框架”当主方案,先改调用形态 |
| 2. 拆一次远程调用 | 业务看到的是一次接口,物理上可能包含 DNS、建连、TLS、排队、服务处理和回包 | Trace span、TCP 建连耗时、TLS 握手、网关日志、重试次数 | 复用连接、减少握手、合并调用、避免跨地域串行 fan-out |
| 3. 判断一致性要求 | 很多跨地域慢不是网络单点问题,而是强一致读写要求把多地通信放进关键路径 | 写入路径、共识协议、同步复制、主从距离、事务提交时间线 | 能异步就异步,能本地读就本地读,把强一致范围压到最小 |
| 4. 设计绕开路径 | 物理下限不能被消灭,只能通过架构绕开或减少进入关键路径的次数 | 跨地域调用次数、缓存命中率、异步队列积压、用户地域分布 | 就近接入、边缘缓存、区域化服务、数据副本和最终一致补偿 |
| 步骤 | 判断 | 关键证据 | 动作 |
|---|---|---|---|
| 1. 区分平均吞吐和同步提交 | SSD 平均 IOPS 高,不代表每次 fsync 都稳定;同步写关心的是尾延迟 | iostat await、fsync P99、数据库 commit latency、日志写入时间线 | 把 P99 / P999 写入延迟作为容量指标,而不只看平均 MB/s |
| 2. 理解 NAND 写路径 | 写入要经过页写、块擦除、FTL 映射、磨损均衡和盘内 GC,随机写更容易触发写放大 | 写放大、设备 GC、随机写比例、discard / trim、盘剩余空间 | 尽量顺序写、批量提交,给 SSD 留空闲空间,避免小随机同步写风暴 |
| 3. 对齐数据库后台任务 | checkpoint、compaction、flush、日志归档会和前台写争同一设备队列 | checkpoint 时间、compaction 时间、设备队列深度、前后台 IO 比例 | 错峰、限速、独立日志盘、调整 checkpoint / compaction 策略 |
| 4. 做隔离和背压 | 设备队列被打满后,上层重试会进一步放大排队 | 队列深度、应用重试、超时、写入批量大小、节点混部任务 | 加背压和削峰,隔离重 IO 任务,限制重试风暴 |
| 步骤 | 判断 | 关键证据 | 动作 |
|---|---|---|---|
| 1. 看性能是否随时间衰减 | 同样 QPS 下,压测前段快、后段慢,可能是温度或功耗墙,而不是业务状态变化 | 固定流量压测曲线、CPU / GPU 频率、温度、功耗、throttling 标记 | 把硬件遥测和业务延迟放在同一时间轴 |
| 2. 区分热、功耗和混部 | 降频可能来自温度,也可能来自功耗预算、BIOS 策略、云厂商限制或同节点混部 | power cap、thermal event、节点共部署任务、风扇 / 机房温度、云实例规格 | 隔离节点做对照,核对实例规格和电源策略 |
| 3. 判断是否是端到端瓶颈 | 频率下降不一定影响所有服务,只有 CPU / GPU 热路径明显时才会变成业务长尾 | 火焰图、GPU timeline、热点函数、P99 对齐频率下降时间点 | 优先优化热路径和批量策略,而不是只换机器 |
| 4. 建立容量余量 | 接近功耗墙运行的系统缺少突发余量,稳定性会比峰值跑分更差 | 持续压测、峰值温度、频率稳定性、P99 稳定性、节点资源水位 | 降低单机目标水位,做混部治理、散热校验和过载保护 |
| 物理层问题 | 证据 | 观测方向 | 常见误判 |
|---|---|---|---|
| 距离延迟 | RTT、路由路径、地域距离 | ping、traceroute、链路监控 | 以为 RPC 框架能抹掉物理距离 |
| 功耗 / 降频 | 频率、温度、功耗、throttling | 硬件遥测、节点监控 | 把热降频误判成应用泄漏 |
| SSD 写长尾 | await、队列深度、fsync、写放大 | iostat、数据库日志、设备指标 | 只看平均吞吐 |
| GPU 数据搬运 | H2D / D2H、显存带宽、kernel gap | GPU profiler、推理 trace | 只看 GPU utilization |
| 题目 | 要输出什么 | 判分点 |
|---|---|---|
| 跨地域同步写入 P99 很高 | 画出物理延迟、共识、写盘、网络重试的下限 | 是否知道距离是不可优化掉的硬约束 |
| SSD 平均很快但日志提交抖 | 给出 fsync、队列、FTL、盘内 GC 的证据链 | 是否避免只看平均 IOPS |
| GPU 推理成本高但利用率低 | 拆预处理、拷贝、batch、kernel、后处理 | 是否看端到端 timeline |
| 问题 | 本页读法 | 继续读 |
|---|---|---|
| CPU / Cache 性能 | SRAM / DRAM、物理限制 | 计算机体系结构底座 |
| 设备和 IO 长尾 | NAND、网卡、设备队列 | 操作系统内核机制底座 |
| AI 加速器 | GPU / TPU、数据搬运、功耗 | AI Infra / GPU |
| 相关页 | 连接关系 |
|---|---|
| 计算机系统底座 | 本页是系统底座的硬件物理下钻 |
| 计算机体系结构底座 | 体系结构把数字电路组织成 CPU、Cache、内存和设备执行模型 |
| AI Infra / GPU | GPU / 加速器硬件限制会进入 AI 训练和推理成本 |
| 容量治理 | 容量最终受物理资源、功耗、散热和设备队列约束 |