Compare commits

...

18 Commits

Author SHA1 Message Date
ding 011a3985bb Remove .vscode from version control 2025-03-25 20:36:58 +08:00
Knight of Thunder e7a5e95c87
Merge branch 'main' into FTQ_DOC 2025-03-25 20:25:37 +08:00
ding e86bf6e181 modify ftq doc (remove .vscode) 2025-03-25 19:33:08 +08:00
ding 9bd42b3d2e documents/ 2025-03-25 19:30:05 +08:00
FrankOu2001 ea906beb2a Adapt the code of ITTAGE to the latest RTL(2025022801 release) 2025-03-25 19:26:45 +08:00
FrankOu2001 d61cfb9175 Adapt the code of TAGE-SC to the latest RTL(2025022801 release) 2025-03-25 19:26:45 +08:00
Knight of Thunder 53d18603d1 Ftq env (#99)
* add rtl dir, we don't want to delete this

* scripts

* fix xiangshan-kmh.yaml for ftq_redirect_mem

* scripts for ftq_pd_mem

* add ftq_pd_mem for scripts

* nothing

* change gitignore to push testfile under dut

* add dut dir

* add ftq so for test

* restore .gitignore

* ftq enviroment: scipts

* fix: ftq env scripts

* 删除被提交的dut目录

* restore  dut/__init__.py

* fix the scripts to fit th e latest rtl version which is 25/2/28

* 删除了脚本中一些无效注释
2025-03-25 19:26:45 +08:00
ding 57384969f4 modify ftq doc 2025-03-25 18:43:14 +08:00
ding 25821d0a3f add serial number for each doc 2025-03-25 18:07:30 +08:00
ding f92ac11eda fix FTQ linkTitle 2025-03-25 17:04:46 +08:00
ding cc4b25d02c Remove .vscode directory 2025-03-25 12:10:56 +08:00
ding bfa1d4e0f1 mv ftq to 98_ut 2025-03-25 12:01:34 +08:00
ding b94b405bd3 回退一个提交,它修改了在主分支已经被修改的bug 2025-03-25 11:32:29 +08:00
ding 1dd04947cf Revert "test make doc and success"
This reverts commit 2f8f2f7527.
2025-03-25 11:32:29 +08:00
ding 486864e5a5 按照模板修改文档 2025-03-25 11:32:29 +08:00
ding 5555469d36 test make doc and success 2025-03-25 11:32:26 +08:00
ding 5f47d09896 add titile for FTQ doc 2025-03-25 11:25:30 +08:00
ding 2685270eff init FTQ documents 2025-03-25 11:25:30 +08:00
12 changed files with 26 additions and 50 deletions

View File

@ -1,6 +1,6 @@
---
title: FTQ顶层
linkTitle: FTQ顶层
linkTitle: 01_FTQ顶层
weight: 12
---
@ -14,7 +14,7 @@ weight: 12
- **fromBackend接受后端执行结果和commit信号的接口CtrlToFtqIO**
- **toBpu向BPU发送训练信息和重定向信息的接口FtqToBpuIO**
- **toIfu向IFU发送取值目标和重定向信息的接口FtqToIfuIO**
- toICache向ICache发送取值目标的接口FtqToICacheIO)
- toICache向ICache发送取值目标的接口FtqToICacheIO
- **toBackend向后端发送取值目标的接口FtqToCtrlIO**
- toPrefetch向Prefetch发送取值目标的接口FtqToPrefetchIO
- mmio

View File

@ -1,12 +1,12 @@
---
title: FTQ子队列
linkTitle: FTQ子队列
linkTitle: 02_FTQ子队列
weight: 12
---
# FTQ子队列
## 文档概述
***请注意:从本篇开始,就涉及待验证的功能点和测试点了***
在之前的介绍中我们采用FTQ项这个术语描述描述FTQ队列中的每一个元素实际上这只是一种便于抽象的说法。
实际上的FTQ队列是由好多个子队列共同构成的一些子队列维护一类信息另一些子队列维护另一类信息相同ftqIdx索引的子队列信息共同构成一个完整的FTQ项。
@ -16,9 +16,10 @@ weight: 12
下面来介绍一些FTQ的主要子队列以及它们内部存储的数据结构。此外FTQ还有一些存储中间状态的更小的队列
## 术语说明
| 名称 | 定义 |
| --- | --- |
| 暂无 | 暂无 |
| 名称 | 定义 |
| -------------------------------------------------------- | ------------------------------------------------------ |
| [FTB项](https://open-verify.cc/xs-bpu/docs/ports/00_ftb/) | 分支预测结果的基本组成项,包含对预测块中分支指令和跳转指令的预测 |
| 取指目标 | 一个预测块内包含的所有指令PC当然它不是直接发送所有PC而是发送部分信号接收方可由该信号推出所有PC |
## 子模块列表
@ -255,7 +256,7 @@ ftq_redirect_mem存储的表项。继承自SpeculativeInfo存储RAS预测器
| 5\.2 | FTQ_META_1R_SRAM | READ | 向多端口中输入renraddr决定是否读以及读取地址从rdata读取 |
## 附录
***虽然列在附录,但实际上这段内容依然十分重要,请一定要查看。***
***虽然列在附录,但实际上这段内容依然十分重要,当你需要的时候请一定要查看。***
### 其余状态子队列
上述存储结构是FTQ中比较核心的存储结构实际上还有一些子队列用来存储一些状态信息也同样都是存储ftqsize个64元素。主要有以下
@ -265,6 +266,8 @@ update_target记录每个FTQ项的跳转目标跳转目标有两种
写入时机上一个周期的bpu_in_fire有效的时候或者说相对于bpu_in_fire有效时延迟一个周期写入。
newest_entry_ptrnewest_entry_target这几个内部信号表明我们当前最新的有效FTQ项。BPU新的写入重定向等等都会对最新FTQ项进行新的安排在相应的文档中对其生成方式做具体的描述。
cfiIndex_vec记录每个FTQ项的发生跳转的指令cficontrol flow instruction指令在其分支预测块中的位置
写入时机相对于bpu_in_fire有效时延迟一个周期写入。

View File

@ -1,11 +1,9 @@
---
title: FTQ接收BPU分支预测结果
linkTitle: FTQ接收BPU分支预测结果
linkTitle: 03_FTQ接收BPU分支预测结果
weight: 12
---
# FTQ接收BPU分支预测结果
## 文档概述
BPU会将分支预测结果和meta数据发给FTQ。
@ -22,7 +20,7 @@ BPU会将分支预测结果和meta数据发给FTQ。
| RAS (Return Address Stack) | 返回地址堆 |
| FTQ Entry | FTQ队列中的单个表项 |
## 模块功能说明
## 模块功能说明
### 1. 新的预测块进队条件
#### **1.1 成功接收数据**

View File

@ -1,12 +1,9 @@
---
title: FTQ向IFU发送取指目标
linkTitle: FTQ向IFU发送取指目标
linkTitle: 04_FTQ向IFU发送取指目标
weight: 12
---
# FTQ向IFU发送取指目标
## 文档概述
IFU需要取FTQ中的项进行取指令操作同时也会简单地对指令进行解析并写回错误的指令
FTQ发送给IFU的信号同时也需发送给ICache一份ICache是指令缓存帮助快速读取指令。

View File

@ -1,12 +1,9 @@
---
title: IFU向FTQ写回预译码信息
linkTitle: IFU向FTQ写回预译码信息
linkTitle: 05_IFU向FTQ写回预译码信息
weight: 12
---
# IFU向FTQ写回预译码信息
## 文档概述
IFU获取来自BPU的预测信息之后会执行预译码并将FTQ项写回FTQ中去。我们会比对FTQ中原BPU预测项和预译码的结果判断是否有预测错误

View File

@ -1,11 +1,9 @@
---
title: FTQ接收后端重定向
linkTitle: FTQ接收后端重定向
linkTitle: 06_FTQ接收后端重定向
weight: 12
---
# FTQ接收后端重定向
## 文档概述
FTQ重定向信息有两个来源分别是IFU 和 后端。两者的 重定向接口大致相似,但重定向的过程有一定区别。

View File

@ -1,12 +1,9 @@
---
title: FTQ接收IFU重定向
linkTitle: FTQ接收IFU重定向
linkTitle: 07_FTQ接收IFU重定向
weight: 12
---
# FTQ接收IFU重定向
## 文档概述
除了后端IFU也会发送重定向相关消息和后端不同IFU的重定向信息来自于预译码写回信息。相同的是它们都是通过BranchPredictionRedirect的接口传递重定向信息。
## 术语说明

View File

@ -1,12 +1,9 @@
---
title: FTQ向后端发送取指目标
linkTitle: FTQ向后端发送取指目标
linkTitle: 08_FTQ向后端发送取指目标
weight: 12
---
# FTQ向后端发送取指目标
## 文档概述
pc取值目标会发给后端pc mem让他自己进行存储之后从自己的pc mem取指此外最新的FTQ项和对应的跳转目标也会发给后端。

View File

@ -1,11 +1,9 @@
---
title: 执行单元修改FTQ状态队列
linkTitle: 执行单元修改FTQ状态队列
linkTitle: 09_执行单元修改FTQ状态队列
weight: 12
---
# 执行单元修改FTQ状态队列
## 文档概述
后端的写回信息,包括重定向信息和更新信息,实际上都是执行之后,由实际执行单元根据结果发回的
## 术语说明

View File

@ -1,12 +1,9 @@
---
title: 冲刷指针和状态队列
linkTitle: 冲刷指针和状态队列
linkTitle: 10_冲刷指针和状态队列
weight: 12
---
# 冲刷FTQ指针和状态队列
## 文档概述
之前讲了后端和IFU重定向写回会修改一些状态队列。此外FtqPtr也是一种比较重要的维护信息。由后端或者IFU引起的重定向需要恢复各种类型用来索引FTQ项的FtqPtr。而当重定向是由后端发起的时候还要修改提交状态队列说明指令已经被执行。
## 术语说明
@ -70,7 +67,7 @@ rob_commits的valid字段有效可以根据其中信息对指令进行提交
| fromIfu | 接收IFU重定向 |
| icacheFlush | 将flush信号转发到icache |
| toIFU | 将后端重定向转发到IFU |
所有顶层信号均在FTQ顶层IO一文中详述。
## 测试点总表
| 序号 | 功能名称 | 测试点名称 | 描述 |

View File

@ -1,12 +1,9 @@
---
title: FTQ向BPU发送更新与重定向信息
linkTitle: FTQ向BPU发送更新与重定向信息
linkTitle: 11_FTQ向BPU发送更新与重定向信息
weight: 12
---
# FTQ向BPU发送更新与重定向信息
## 文档概述
FTQ将已提交指令的更新信息发往BPU进行训练同时转发重定向信息。

View File

@ -1,10 +1,10 @@
---
title: FTQ概述
linkTitle: FTQ概述
linkTitle: FTQ
weight: 12
---
*下文包括所有的FTQ文档中会提到一些关于BPU和IFU的相关知识详情需要去查看对应的文档: *
下文包括所有的FTQ文档中会提到一些关于BPU和IFU的相关知识详情需要去查看对应的文档:
- [BPU文档链接](https://open-verify.cc/xs-bpu/docs/)
- [IFU文档链接](https://open-verify.cc/UnityChipForXiangShan/docs/98_ut/01_frontend/01_ifu/)
@ -67,7 +67,4 @@ FTQ的全名叫取值目标队列队列中的一个项叫做FTQ项BPU写
## 循环队列
FTQ队列实际上是一个循环队列所有类型的FTQ指针都是同一类型ftqPtr的value字段用来表示索引flag字段则用来表示循环轮数flag只有一位进入新的循环时flag位翻转。
这样,我们就可以在一个有限的队列空间内不断更新新的项,以及正确进行比较,判断哪个项在队列中更靠前。
*在香山的代码中设计了isAfter和isBefore的函数来比较指针大小字面上的意思是指针在队列靠后还是在队列靠前的位置但从取指令块来说*
### 最新项
有几个内部信号我想在这里提一下newest_entry_ptrnewest_entry_target这几个内部信号表明我们当前最新的有效FTQ项。BPU新的写入重定向等等都会对最新FTQ项进行新的安排在相应的文档中对其生成方式做具体的描述。
这样,我们就可以在一个有限的队列空间内不断更新新的项,以及正确进行比较,判断哪个项在队列中更靠前或者更靠后。