从零开始造一颗 RISC-V CPU(六):微架构验证体系与 IPC 性能评估

从零开始造一颗 RISC-V CPU(六):微架构验证体系与 IPC 性能评估报告 系列博客第 6 篇(最终篇) —— 在现代 CPU 设计中,验证(Verification)往往占据了流片前 70% 的工作量。本文将全面解析我们如何通过 Python 构建指令集模拟器(ISS)、约束随机验证(CRV)以及端到端的状态机快照比对,验证这套复杂的双发乱序引擎,并给出最终的微架构 IPC 性能跑分。

从零开始造一颗 RISC-V CPU(五):乱序执行的来龙去脉与微架构实现

从零开始造一颗 RISC-V CPU(五):乱序执行的来龙去脉与微架构实现 系列博客第 5 篇 —— 深入探讨乱序执行(Out-of-Order Execution)的底层硬件机制。本文将从体系结构历史出发,讲解 Tomasulo 算法的演进,并结合完整的微架构全景图(Mermaid 框图)与核心 Verilog 源码,解析我们在 1000 多行代码内构建的这套乱序执行引擎。 1. 乱序执行的来龙

从零开始造一颗 RISC-V CPU(四):Cache 微架构演进与组相联设计

从零开始造一颗 RISC-V CPU(四):Cache 微架构演进与组相联设计深度解析 系列博客第 4 篇 —— 深入探讨存储器层级(Memory Hierarchy)的底层硬件机制。本文将从早期的“存储墙”问题出发,讲解从直接映射(Direct Mapped)到 2路组相联(2-Way Set-Associative)的架构演进,并结合完整的微架构数据通路(Mermaid 框图)与 Verilo

从零开始造一颗 RISC-V CPU(三):TAGE分支预测微架构

从零开始造一颗 RISC-V CPU(三):分支预测微架构 — 从 Bimodal 到 TAGE 引擎的硬核解析 系列博客第 3 篇 —— 深入探讨影响深级流水线性能的核心命题:分支预测(Branch Prediction)。本文将通过微架构层面的演进逻辑,讲解从基础的 Bimodal 到目前工业界最先进的 TAGE(TAgged GEometric History Length)预测器的算法本质

从零开始造一颗 RISC-V CPU(二):顺序双发射(In-Order Dual-Issue)

从零开始造一颗 RISC-V CPU(二):顺序双发射(In-Order Dual-Issue)基线架构与冒险黑洞 系列博客第 2 篇 —— 这是一个非常有意思的工程伏笔:为什么我们最终走向了“乱序执行(OoO)”?本文将解剖我们的基线版本(main 分支)—— 顺序双发射(In-Order Dual-Issue)架构。我们将看看在这套初代架构中,为了保证两条指令同时无碰撞地在深浅管线中平行飞奔,

从零开始造一颗 RISC-V CPU(一):项目总览与流水线基础

从零开始造一颗 RISC-V CPU(一):项目总览与流水线基础 系列博客第 1 篇 —— 介绍整个项目的动机、架构全貌、8 级流水线设计以及关键的 hazard 处理。 项目地址:https://github.com/HaibinLai/simple-CPU/tree/main/docs 为什么要自己造 CPU? 每年的计算机组成原理课,都有一个调bug到想死的大作业:用 Verilog 实现一

Computer Arch 102

项目 从计算机课堂的5级流水线进一步进阶,制作更强大的CPU。 github: https://github.com/HaibinLai/simple-CPU.git 使用指令集:RISC-V 多发射(Superscalar) Superscalar(超标量)是指 CPU 在一个时钟周期里,不再只发射(issue)一条指令,而是同时发射多条彼此独立的指令到不同执行单元。例如一个现代 CPU 可能同

Where do interrupts happen? 中断触发点在OOO处理器中的分布——神文解析

神文解析:Where do interrupts happen? 原文: https://travisdowns.github.io/blog/2019/08/20/interrupts.html 看完标题和第一句话,我就知道今晚这篇文章要让我睡不着了。看懂这篇文章需要一定的体系结构基础,对OoO,中断的机制比较了解。 在中文网站上我似乎没有看到类似的讨论。在考虑后,我决定将本文写为解析。我会将我