Skip to content

Commit 23064ab

Browse files
authored
fix(VFPU, Error): fix some format issues (#95)
* fix some format errors * add symbols * fix some rendering issues
1 parent 3933733 commit 23064ab

File tree

2 files changed

+11
-11
lines changed

2 files changed

+11
-11
lines changed

docs/zh/backend/VFPU.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ Table: 优化后的双通路浮点加法算法
146146

147147
本节详细介绍本文改进的双通路浮点加法算法,等效加法或 $d>1$ 的等效减法的通路称为 $far$ 路径,$d≤1$ 且等效减法的通路称为 $close$ 路径。含有无穷或 $NaN$ 操作数的情况单独判断,不属于 $far$ 路径或 $close$ 路径。
148148

149-
##### $far$ 路径
149+
##### far 路径
150150

151151
$far$ 路径算法如图所示,其中主要步骤如下:
152152

@@ -162,7 +162,7 @@ $far$ 路径算法如图所示,其中主要步骤如下:
162162

163163
第五步,产生最终结果,根据有效数字 $A+B$ 的结果在 $[1$-$2)$ 之间(情况一)还是 $[2$-$4)$之间(情况二),根据之前右移中计算的两套 $grs$ 和舍入模式,分别确定情况一选择两个有效数字加法器的条件,情况二选择两个有效数字加法器的条件,最后用四选一的独热码选择出尾数结果。指数结果则是 $EA$(情况一且尾数舍入后 $<1$)或 $EA+1$ (情况二或情况一舍入后 $=2$),注意舍入后指数是否 $overflow$,最终结果由 $overflow$ 选出 $overflow$ 结果和正常计算结果。异常标志位 $far$ 路径下只会产生上溢和不精确。
164164

165-
##### $close$ 路径
165+
##### close 路径
166166

167167
$close$ 路径下一定是等效减法并且 $d≤1$ 的情况,具体细分为 $d=0$ 或 $d=1$,算法如图所示,具体步骤如下:
168168

@@ -337,7 +337,7 @@ Table: 无符号整数乘法三种算法比较
337337
| 方式二 | $320.41$ | $2426.34$ ||
338338
| 方式三 | $302.19$ | $2042.46$ ||
339339

340-
##### $Booth$ 编码
340+
##### Booth 编码
341341

342342
$Booth$ 编码目的是减少乘法器部分积的个数,以二进制无符号数整数乘法 $C=A*B$ 为例推导 $Booth$ 编码算法。
343343

@@ -408,7 +408,7 @@ Table: $Booth$ 编码与 $PP$ 真值表
408408

409409
这样就可以保证所有部分积加起来之后进位是正确的,到此 $Booth$ 编码介绍结束,注意是以 $11$ 比特乘法为例介绍的,$f16$ 和 $f64$ 有效数字位数为奇数,但是 $f32$ 有效数字位数为偶数,最高位补零需要稍作区别,其他过程类似,不再赘述。
410410

411-
##### $CSA$ 压缩
411+
##### CSA 压缩
412412

413413
$Carry$-$Save$-$Adder$ 保留进位加法器,作用是将 $n$ 个加数通过某些逻辑压缩成 $m$ 个加数($m<n$),典型的是 $3\_2$ 压缩和 $4\_2$ 压缩。
414414

@@ -525,7 +525,7 @@ Table: $CSA3\_2、CSA4\_2$ 综合结果
525525

526526
可见 $CSA4\_2$ 虽说理论上是三级异或门的延迟,$CSA3\_2$ 理论上是两级异或门的延迟,但是真正物理实现之后,$CSA4\_2$ 只是比两级 $CSA3\_2$ 快一点点,所以尽量用 $CSA3\_2$,除非一级 $CSA4\_2$ 可以替代两级 $CSA3\_2$ 的情况,比如 $4->2$ 压缩,$8->2$ 压缩。
527527

528-
##### $CSAn\_2$
528+
##### CSAn\_2
529529

530530
两个无符号整数乘法使用 $Booth$ 编码产生的部分积数量为 $\frac{n+1}{2}$ 向上取整,因为部分积压缩之后要和位宽更大的数相加,为保证进位正确,部分积位宽拓展一比特,各数据格式部分积数量及位宽见表。
531531

@@ -623,7 +623,7 @@ $fp\_c$ 有效数字右移之后的结果 $rshift\_result$ 要和 $CSAn\_2$ 压
623623

624624
还需要考虑减法时对右移 $grs$ 取反加一,最终有效数字的加法结果 $adder$(含右移 $grs$)构成是:$adder\_high\_bits$、$adder\_low\_bits$、右移 $grs$(减法时取反加一)。因为 $adder$ 可能是负数,拓展了 $1bit$ 仅用于 $adder$ 的符号判断, 之后不需要使用,$adder\_inv$ 在 $adder$ 是负数时进行取反并且去掉了该符号判断位。
625625

626-
##### $LZD$、左移、舍入与未舍入尾数结果
626+
##### LZD、左移、舍入与未舍入尾数结果
627627

628628
在计算完 $adder\_inv$ 后,需要对 $adder\_inv$ 进行前导零检测,以确定需要左移的位数,进而对尾数结果规格化和舍入。
629629

@@ -1104,7 +1104,7 @@ Table: $VFDIV$ 接口和含义
11041104
| $fpdiv\_res\_o$ | $output$ | $64$ | 计算结果 |
11051105
| $fflags\_o$ | $output$ | $20$ | 标志位 |
11061106

1107-
### 向量格式转换模块 $VCVT$
1107+
### 向量格式转换模块 VCVT
11081108

11091109
$VCVT$ 模块是一个三级流水的向量浮点的格式转换模块。其例化 $2$ 个具有 $64bits$ 数据处理的子模块 $VectorCvt$,每个 $VectorCvt$ 分别包含一个 $cvt64$,一个 $cvt32$,两个 $cvt16$ 模块。其中 $cvt64$ 支持 $64,32,16,8bits$ 浮点/整数格式的处理,$cvt32$ 支持 $32,16,8bits$ 浮点/整数格式的处理,$cvt16$ 支持 $16,8bits$ 浮点/整数格式的处理。即 $vectorCvt$ 能同时处理 $1$ 个 $64bits$(或者 $2$ 个 $32bits$,或者 $4$ 个 16bits$,或者 $4$ 个 $8bits$ )浮点/整数格式输入数据的转换。
11101110

@@ -1126,7 +1126,7 @@ $f16/f32/f64 -> 65bit(f64 \#\# false.B)$
11261126

11271127
在此基础上,$VFCVT64$ 分为 $5$ 类:$int -> fp,fp -> fp widen,fp -> fp narrow,estimate7(rsqrt7$ & $rec7),fp -> int$。
11281128

1129-
#### $FuopType$ 译码逻辑
1129+
#### FuopType 译码逻辑
11301130

11311131
对于 $cvt$ 指令来说:其 $fuopType$ 共 $9$ 位,每一位所表示的信息如下:
11321132

docs/zh/cache/l2cache/Error.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
| ECC | Error Correction Code | 错误校验码 |
1919
| SECDED | Single Error Correct Double Error Detect | 单比特纠错双比特校验 |
2020
| TL | Tile Link | Tile Link 总线协议 |
21-
| CHI | | CHI 总线协议 |
21+
| CHI | Coherent Hub Interface | CHI 总线协议 |
2222

2323
## 设计规格
2424

@@ -41,11 +41,11 @@
4141

4242
L2 Cache 目前默认的 ECC 校验码为 SECDED。同时,L2 Cache 支持 parity、SEC 等校验码,可在 Configs 中修改,编译时进行配置。相关[校验算法参考](https://github.com/OpenXiangShan/Utility/blob/master/src/main/scala/utility/ECC.scala)
4343

44-
SECDED 要求对于一个 n 位的数据,所需的校验位数 r 需要满足: 2^r \geq n + r + 1
44+
SECDED 要求对于一个 $n$ 位的数据,所需的校验位数 $r$ 需要满足: $ 2^r \geq n + r + 1 $
4545

4646
#### ECC 处理流程
4747

48-
L2 Cache 支持 ECC 功能。 MainPipe 在 s3 向 Directory 和 DataStorage 重填数据时,会计算 tag 和 data 的校验码,前者与 tag 一起存入 Directory 中的 tagArray(SRAM),后者与 data 一起存入 DataStorage 中的 array(SRAM)
48+
L2 Cache 支持 ECC 功能。 MainPipe 在 s3 向 Directory 和 DataStorage 重填数据时,会计算 tag 和 data 的校验码,前者与 tag 一起存入 Directory 中的 tagArray(SRAM),后者与 data 一起存入 DataStorage 中的 array(SRAM)
4949

5050
1. 对于 tag,直接以 tag 为单元进行 ECC 编码/解码。
5151
2. 对于 data,基于物理设计以及更好检测错误的需求,目前将 data 划分成 dataBankBits(128 bits)的单元进行 ECC 编码/解码。因而在 SECDED 算法要求下,对于 1 个 512 bits 的 cache line,应该有 4 * 8 = 32 bits 校验位

0 commit comments

Comments
 (0)