【RISC-V学习】《手把手教你设计CPU——RISC-V处理器》笔记(二)2021.11.11

本文只针对RISC-V的相关内容大纲进行整理,对于蜂鸟E200处理器的内容基本上简要略过。且内容只是大纲部分,便于对本文有全局的理解,以及便于今后的翻阅查找。

第二部分 手把手教你使用Verilog 设计CPU

第五章 蜂鸟E200设计总览和顶层介绍

第五章主要以蜂鸟E200为具体实例介绍如何设计一款RISC-V CPU,从宏观入手,介绍若干处理器设计的总览要诀。

本章可以让我们清楚设计RISC-V CPU要从哪几个方面进行考虑,不需要清楚具体的实现细节。

5.1 处理器硬件设计概述

1.架构和微架构

架构:指令级架构

微架构:具体硬件实现

2.CPU、处理器、Core和处理器核

CPU&处理器:完整的SoC

Core&处理器核:核心

3.处理器设计和验证的特点

5.2 蜂鸟E200处理器核设计哲学

5.3 蜂鸟E200处理器核RTL代码风格介绍

5.4 蜂鸟E200模块层次划分

5.5 蜂鸟E200处理器核源代码

5.6 蜂鸟E200处理器核配置选项

5.7 蜂鸟E200处理器核支持的RISC-V指令子集

5.8 蜂鸟E200处理器核流水线结构

5.9 蜂鸟E200处理器核顶层接口介绍

想要了解蜂鸟E200处理器核的设计情况,请具体看5.2~5.3节

第六章 流水线不是流水账——蜂鸟E200流水线介绍

本章将讨论处理器的重要的基础知识——“流水线”。

流水线概念是了解CPU必须要知道的一个概念。

6.1 处理器流水线概述

1.经典的五级流水线

一条指令的流程:

  • 取指
  • 译码
  • 执行
  • 访存
  • 写回

前一条指令完成了“取指”进入“译码”阶段后,下一条指令马上就可以进入“取指”阶段

理论上可以取得每个时钟周期都完成一条指令的性能

2.可否不要流水线——流水线和状态机

  • 流水线:面积换性能、空间换时间
  • 状态机:性能换面积、空间换时间

侧重时间(性能)还是空间(面积)

3.流水线的深度

流水线的级数(又称深度)多少最好?是否越深越好。

越深(正面):主频越高,性能越高,吞吐率越高。

越深(负面):面积开销增大,反压时序问题,分支预测时的浪费和损失

4.越来越深的流水线

追求高性能

5.越来越浅的流水线

追求低功耗

6.2 处理器流水线中的乱序

处理器中发射、派遣、执行、写回的顺序

6.3 处理器流水线中的反压

每一级流水线需要进行握手,随着深度越深,流水线最后一级的反压信号可能会串扰到最前一级造成严重反压。

解决措施:

  • 取消握手
  • 加入乒乓缓存
  • 加入前向旁路缓存

6.4 处理器流水线中的冲突

1.资源冲突

硬件资源:运算单元的冲突

解决:复制硬件资源/流水线停顿等待硬件资源

2.数据冲突

不同的指令之间的操作数存在着数据相关性造成的冲突

  • WAR(write-after-read)
  • WAW(write-after-write)
  • RAW(read-after-write)

解决:

WAR和WAW:寄存器重命名

RAW:动态调度

6.5 蜂鸟E200处理器的流水线

两级按序流水线为主体,辅以其他组件流水线长度可变

第七章 一切从取指令开始

本章介绍处理器的”取指”功能,并介绍蜂鸟E200处理器取指单元(Instruction Fetch Unit,IFU)的微架构和源码(略)

7.1 取指概述

1.取指特点

  • 快(快速取指)
  • 连续不断(处理非对齐数据)

2.如何快速取指

存储器的读延迟

  • ITCM
  • I-Cache

3.如何处理非对齐数据

一个周期能读取一条指令

  • 普通指令非对齐:剩余缓存
  • 分支跳转指令非对齐:多体(Bank)化的SRAM

4.如何处理分支指令

(1)分支指令类型

  • 无条件跳转/分支指令
    • 无条件直接跳转/分支
    • 无条件间接跳转/分支
  • 带条件跳转/分支指令
    • 带条件直接跳转/分支
    • 带条件间接跳转/分支

分支预测

  • 预测取指
  • 预测执行

(2)预测方向

  • 静态预测
    • 最简单:总预测分支指令不会发生跳转。分支延迟槽
    • 常见:BTFN(Back Taken,Forward not Taken)预测,向后的跳转预测为跳,向前的跳转预测为不跳。
  • 动态预测
    • 依赖已经执行过的指令的历史信息和分支指令本身的信息综合进行“方向”预测
      • 一比特饱和计数器
      • 二比特饱和计数器

(3)预测地址

  • BTB
  • RAS
  • Indirect BTB

7.2 RISC-V架构特点对于取指的简化

1.规整的指令编码格式

2.指令长度指示码放于低位

3.简单的分支跳转指令

4.没有分支延迟槽指令

5.提供明确的静态分支预测依据

6.提供明确的RAS依据

7.3 蜂鸟E200处理器的取指实现

你可能感兴趣的:(RISC-V,risc-v)