Computer Architecture

12 篇内容

技术文章LWN.net

Domas: Bypassing memory protection with AMD's memory controllers

Christopher Domas 发布了一份概念验证,展示如何利用 AMD 内存控制器的 bank swizzle 模式绕过内存保护,实现任意数据读写,包括 CPU 微码定义和平台安全处理器内存。文章指出,该行为在 AMD 官方手册中已有文档记录,但通过该模式访问任意内存并重写固件而不导致主机崩溃,似乎属于设计之外的非预期副作用。利用该技术需要内核级权限,因此对大多数软件并非直接威胁,但攻击者未来可能将其用于恶意目的。文章梳理了技术原理、触发条件和安全影响,并强调硬件文档与安全边界之间的潜在冲突。对于关注系统安全、内核防护和硬件设计风险的读者,这是一份重要的技术资料。

推荐收录,因为它揭示了硬件功能与安全预期之间的真实冲突,并给出了可复现的概念验证和官方文档依据,具备长期技术参考价值。适合系统安全研究者、内核开发者和硬件平台工程师阅读,有助于在设计加固和威胁建模时考虑类似侧效应。

工程实践Ken Shirriff

Energizing a vacuum-tube flip-flop module from a 1948 IBM system

文章对IBM 604(1948)电子计算穿孔机中的TR-3触发(触发器)模块进行了逆向工程和实际演示。作者从真空管三极管的工作原理讲起,详细剖析了反相器电路和交叉耦合反相器构成的触发器,解释了电平移位和脉冲输入的实现,并展示了模块如何通过两个稳定状态存储一位信息。文中还结合历史脉络,说明该触发器如何用于十进制计数器(BCD编码)并为早期计算机的状态机提供基础。文章边界在于它聚焦于历史硬件,其高电压设计和模拟敏感性与现代数字电路有较大差异。

本文通过实际逆向工程和上电演示,阐释了真空管触发器的电路原理与历史意义,为理解早期计算机设计提供了第一手资料。适合对计算机历史、电子学基础或反向工程感兴趣的读者,其中的电平移位、交叉耦合和稳定条件分析可迁移到对时序电路基本原理的教学中。

技术文章Daniel Lemire

Memory-level parallelism: AMD is the king

文章通过 pointer chase 基准测试,系统测量了 Intel、AMD 和 Graviton 处理器的内存级并行度(MLP)演化。核心方法是构建 1 GiB 的随机循环数组,同时运行多条独立的指针追逐路径(lanes),通过观测吞吐量饱和点确定单核可维持的最大并发内存请求数。结果显示,AMD Zen 5(Turin)达到 58 条并发缓存行请求和 24.5 GiB/s/s 随机访问带宽,约为 Intel Granite Rapids 的两倍;Intel 十年间从 10 增长至 30,主要提升在最近两代;Graviton 5 延迟显著改善,但 MLP 停滞在 19。测试在 AWS 云实例上进行,数据与脚本公开。该研究为理解处理器内存子系统的实际能力提供了可重复的实验框架和跨代对比。

推荐收录。文章不是泛泛的性能宣传,而是给出了可复现的指针追逐实验设计、完整的跨平台数据及演化趋势分析,直接揭示了 MLP 这一隐藏关键参数对软件性能的实质影响。对从事性能调优、系统选型或体系结构研究的读者极具参考价值,其测量方法和结论可迁移至各类内存敏感型工作负载的优化中。

技术文章Mitchell Hashimoto

Everyone Should Know SIMD

文章倡导所有开发者了解 SIMD(单指令多数据流)并破除其过于复杂的迷思。作者以 Zig 语言为例,展示了一套通用的五步模式来将标量循环向量化:广播常量、按向量宽度迭代、执行向量操作、归约向量结果、处理标量尾部。通过终端模拟器 Ghostty 中查找控制字符的真实案例,详细解释了每步的实现细节和寄存器位运算。文章还讨论了编译器自动向量化的局限性,强调手动编写 SIMD 可以在可预测的情况下获得显著性能提升,同时指出该方法主要适用于大量连续数据的处理场景,对于复杂算法则需更高技巧。整体内容清晰、可迁移,降低了 SIMD 的入门门槛。

本文以易懂的案例和通用模板系统讲解了 SIMD 的基本模式,适合希望提升循环密集型代码性能的软件开发者。其提出的五步法具有高度的可迁移性,能帮助读者跨语言理解向量化思维,避免过度依赖容易失效的编译器自动向量化。对于日常优化中处理扫描、比较、计数等任务的工程师,本文是一份低门槛、高回报的入门参考。

技术文章NVIDIA Technical Blog

Kernel Fusion in NVIDIA CUDA: Optimizing Memory Traffic and Launch Overhead

本文深入探讨了CUDA中的内核融合技术,旨在缓解GPU计算与内存带宽之间的瓶颈。文章从GPU内存带宽不足以完全利用计算能力这一常见问题出发,详细解释了内核融合如何通过合并多个CUDA内核来减少内存传输和内核启动开销。文中介绍了多种实现融合的方法,包括手工编写融合内核、利用CUDA图动态融合以及通过编译指示自动融合等,并对比了各自的适用场景和潜在局限。文章还指出,内核融合虽然能够提升性能,但可能增加寄存器使用量和代码复杂度,需在具体情况下权衡。整体而言,该文为GPU性能优化提供了系统性的实践指导,特别适用于受内存带宽或启动延迟限制的计算密集型应用。

本文来自NVIDIA官方技术博客,从问题背景、优化原理到多种实现方式进行了系统阐述,并提供了可操作的代码示例和权衡分析。对于从事GPU编程、性能优化或HPC领域的开发者,文中关于减少内存瓶颈和启动开销的策略具有直接指导意义,可迁移至其他受类似约束的计算架构中。因此,该文具备长期参考价值,适合收录为技术深文。

工程实践知乎 - 手抓饼熊

GTC 2026 技术分析:通过 CUTLASS Python 在 Blackwell GPU 上实现 GEMM 峰值 Tensor Core 性能

这篇文章基于 GTC 2026 关于 CUTLASS Python 的演讲,系统分析了如何在 Blackwell GPU 上围绕 GEMM 逐步逼近 Tensor Core 峰值性能。文章从基础 GEMM 的分块、TMA 传输、TMEM/RMEM/SMEM 流水线讲起,进一步比较了 2CTA、Warp Specialization、TMA Store、Persistent Kernel、Preferred/Fallback Cluster、Dynamic Scheduler 和 PDL 等优化手段在不同矩阵规模与瓶颈条件下的收益与边界。全文不仅给出性能数据,还强调了不同规模下瓶颈会从 DRAM 延迟、epilogue 开销转向 L2 命中率和调度效率,适合作为 Blackwell 上高性能 GEMM 编程的系统性参考。

推荐收录,因为它不是单纯介绍 CUTLASS Python,而是把 Blackwell 架构特性、内存层次、调度机制和性能结果串成了一条完整的优化路径。对做 GPU kernel、推理加速或高性能矩阵计算的读者来说,这些关于瓶颈切换、流水线隐藏和 cluster 调度的结论具有很强的可迁移性。

技术文章知乎 - 手抓饼熊

Tensor Core 编程与优化深度技术解析 — GTC 2026

这篇文章系统梳理了 NVIDIA Tensor Core 的编程模型与优化方法,覆盖 Warp Level、Warpgroup Level 到 Blackwell 第五代 Tensor Core 的演进,并把 Nsight Systems/Nsight Compute 的分析方法、TMA 流水线、CuTe/CUTLASS 编程框架串成一条完整优化路径。文章不仅解释了 MMA、tiling、寄存器/共享内存/TMEM 的数据流关系,还通过具体矩阵尺寸、SASS 形态和 profiling 指标说明如何判断瓶颈与选择合适的实现策略。适用边界主要在 NVIDIA CUDA GPU 生态,且部分 Blackwell/GTC 2026 相关特性具有较强版本依赖。

推荐收录,因为文章把 Tensor Core 的硬件代际、编程接口和性能分析工具放在同一框架下讲清楚,兼具原理、方法和实战排查路径。对于做 CUDA 算子优化、GPU 性能分析或 AI 基础设施开发的读者,它提供了可迁移的心智模型与调优抓手。

工程实践Amazon Science

Graviton5’s improved design increases speed and energy efficiency — beyond Moore’s law

这篇文章介绍了 AWS Graviton5 的整体设计升级,包括从 96 核提升到 192 核、采用 3nm 工艺、支持 DDR5-8800 与 PCIe Gen6,以及更大的 L3 缓存和改进后的芯粒互联。作者进一步解释了这些变化如何通过更好的分支预测、缓存层级、NUMA 划分和芯粒内互联来提升真实负载表现,尤其是数据库、Web 应用和机器学习推理等场景。文章还补充了 Nitro Isolation Engine 的正式验证隔离机制,强调了硬件设计与云安全之间的结合。

推荐收录,因为它不仅是产品发布,更提供了 CPU、缓存、芯粒互联、NUMA 和云安全隔离的具体设计思路,适合关注云基础设施和处理器演进的读者。尽管带有厂商宣传色彩,但其中关于真实工作负载优化与形式化验证安全性的论述具有较强的迁移价值。

工程实践Stanford Hazy Research

AMD GPUs go brrr

这篇文章深入分析了 AMD MI355X/CDNA4 GPU 上 AI kernel 的性能来源,并提出 HipKittens 作为面向 AMD 的编程原语集合。作者先从硬件结构入手,对比了 AMD 与 NVIDIA 在寄存器文件、SRAM、矩阵指令、chiplet/L2/LLC 组织以及编译器支持上的差异,说明许多在 NVIDIA 上有效的做法在 AMD 上会失效。文章重点解释了为什么 wave specialization 在 AMD 上表现不佳:没有寄存器重分配、AGPR/VGPR 约束更强、以及细粒度同步和内存指令行为更复杂。为此,作者提出 8-wave ping-pong 和 4-wave interleave 两种调度模式,并结合 chiplet-aware 的 grid 排布来提升缓存复用。实验表明,这些策略在 GEMM 和 attention 等工作负载上能达到接近或优于现有 AMD 基线的性能,但其方法强依赖 CDNA3/4 细节、HIPCC 行为和底层指令布局知识,移植到其他平台仍需重新验证。

收录依据很明确:文章不仅给出 AMD GPU 的硬件差异分析,还提供了寄存器调度、bank conflict、chiplet cache 复用和基准测试的完整证据链。适合做 GPU kernel、编译器和 AI 基础设施的长期参考,但读者需要接受其强 AMD/CDNA 绑定和大量底层实现细节。

科研议题Stanford Hazy Research

BASED ✌️: our one year retrospective

这篇文章是 Stanford Hazy Research 对 BASED 发表一年后的回顾,核心在于重新总结高效语言模型的设计原则与影响扩散路径。作者认为,推理时真正的关键权衡不是“是否使用 Transformer”,而是上下文回忆能力与 state size 之间的关系;BASED 通过“短程精确混合 + 大状态线性注意力”的组合,把这一帕累托前沿向外推进。文章进一步强调了 MQAR、EVAPORATE 等回忆评测任务如何成为衡量高效模型的重要基准,并回顾了该路线如何影响 Mamba-v2、RWKV-v5/v6、MetaLA、MiniMax、Liger attention 等后续架构。实现层面,作者强调从硬件出发设计内核,利用 H100 的 WGMMA/TMA 以及二阶 Taylor 近似的软最大核,在保持高质量的同时提升吞吐,并指出 k=2 在质量与性能间较平衡。文章也给出局限:高效模型仍存在“没有免费午餐”,且结论依赖具体工作负载与硬件平台,迁移时需要重新评估边界。

收录依据明确:文中不仅复盘了 BASED 的设计逻辑,还给出了可复用的评测基准、硬件优化手段和后续模型扩散证据。适合做高效 LLM、线性注意力和 GPU 内核设计的研究参考;但内容带有项目回顾色彩,部分效果宣称仍需结合原论文与独立复现交叉验证。

工程实践Stanford Hazy Research

ThunderKittens Now on Blackwells!

文章介绍了 ThunderKittens 针对 NVIDIA Blackwell/B200 架构的新一代 GEMM 与 Attention kernel 实现,并解释其为什么能接近或超过 cuBLAS、FA3 的性能。作者把重点放在“数据流”而非传统 CUDA 控制流上,围绕 5 代 tensor cores、tensor memory 和 CTA pairs 设计更深的流水线,通过 producer/consumer warpgroup 协作、persistent kernel、跨迭代预取 K/V、以及把输出累积器逐级写回共享内存和 HBM,尽量消除 pipeline bubble。文章还指出 B200 的 tensor core 更大,微基准上更像 128×128 systolic,因此只有当 M、N 维度足够大时才能充分吃满算力,小尺寸 GEMM 会按比例降速。它同时展示了如何把 Hopper 上的 kernel 结构迁移到 Blackwell,并说明 tensor memory 如何缓解 backward pass 的中间状态压力。整体结论是:Blackwell 的性能优化核心是提高并行数据供给深度,而 TK 的 tile 抽象恰好适配这一点,但收益依赖于特定硬件与形状假设。

推荐收录,因为文章直接给出了 Blackwell 上 GEMM/Attention kernel 的实现思路、硬件特性利用方式和明确的性能对比结果,而不是泛泛介绍新卡参数。适合做 GPU kernel、AI 加速和高性能计算的长期参考,尤其对需要把 Hopper 代码迁移到 Blackwell 的读者有可迁移的流水线设计价值;但其结论强依赖 B200 的 128×128 计算单元和特定 tile 形状。

工程实践Stanford Hazy Research

ThunderKittens: Bringing fp8 to theaters near you

这篇文章介绍 ThunderKittens 为 fp8 新增算子与 GEMM kernel 的实现思路,目标是在保持统一编程接口的同时支持量化数据类型。作者重点解释了 fp8 与 fp16/bf16/fp32 在寄存器布局上的差异,以及为何需要额外的线程间 shuffle 来完成数据重排,而不是简单复用原有 tile 逻辑。文章进一步分析了 ldmatrix/stmatrix 与 WGMMA 在 H100 上的使用方式,说明 fp8 在共享内存到寄存器加载时仍受 16 位指令接口限制,只能通过“先按 16 位加载再拆成两个 fp8”的方式绕过。为了降低 bank conflict,作者讨论了 32/64/128-byte swizzling 的适用条件,并把 fp8 tile 宽度下限提高到 32,以匹配更大的 core matrix 和更好的硬件利用率。整体结论是:fp8 kernel 可以复用 bf16 的整体结构,但必须围绕数据布局、bank conflict 和硬件指令约束做针对性改造,且效果高度依赖 NVIDIA H100 这类支持 WGMMA 的平台。

文中直接给出了 fp8 kernel 的布局、shuffle、swizzle 和 bank conflict 处理细节,并用 H100/WGMMA 约束解释了为何要这样设计。适合做 GPU 算子、AI 基础设施和高性能 CUDA 编程的参考,但结论明显依赖特定硬件代际。