Homework 04¶
约 411 个字 247 行代码 12 张图片 预计阅读时间 5 分钟
4.1¶
假设 seq_length
保存在 x3
寄存器当中,RISC-V 代码如下:
RV64V 代码如下:
4.3¶
chime | inst1 | inst2 |
---|---|---|
1 | vld v0, 0(RclL) | |
2 | vld v1, 0(RclR) | |
3 | vld v2, 0(RtipL) | vmul v2, v2, v0 |
4 | vld v3, 16(RtipL) | vmul v3, v3, v0 |
5 | vld v4, 32(RtipL) | vmul v4, v4, v0 |
6 | vld v5, 48(RtipL) | vmul v5, v5, v0 |
7 | vld v6, 0(RtipR) | vmul v6, v6, v1 |
8 | vld v7, 16(RtipR) | vmul v7, v7, v1 |
9 | vld v8, 32(RtipR) | vmul v8, v8, v1 |
10 | vld v9, 48(RtipR) | vmul v9, v9, v1 |
11 | vsum f0, v2 | |
12 | vsum f1, v3 | |
13 | vsum f2, v4 | |
14 | vsum f3, v5 | |
15 | vsum f4, v6 | |
16 | vsum f5, v7 | |
17 | vsum f6, v8 | |
18 | vsum f7, v9 |
共需要 18 个时钟间隔,每次运算出一个结果需要 15 FLOPs,所以每个 FLOP 需要 \(18/(15*4)=0.3\) 个时钟周期
4.5¶
4.7¶
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
|
4.11¶
(a)
(b)
4.14¶
(a)因为 A 的下标都是 i,不可能存在依赖,所以我们只考虑 B:
- RAW 冒险,在迭代 \(i_1\) 写入 \(B[4*i_1+5]\),在迭代 \(i_2\) 读取 \(B[2*i_2+4]\),那么有 \(4*i_1+5=2*i_2+4,i_1<i_2\),分析奇偶性即可看出不可能
- WAR 冒险,在迭代 \(i_1\) 写入 \(B[2*i_1+4]\),在迭代 \(i_2\) 读取 \(B[4*i_2+5]\),那么有 \(2*i_1+4=4*i_2+5,i_1<i_2\),分析奇偶性即可看出不可能
- WAW 冒险,在迭代 \(i_1\) 写入 \(B[4*i_1+5]\),在迭代 \(i_2\) 写入 \(B[4*i_2+5]\),不可能
综上并没有依赖
(b)输出依赖:\(S_1\) 和 \(S_3\)(\(A[i]\))
反依赖:\(S_4\) 和 \(S_3\)(\(C[i]\))
重写代码如下:
真依赖:\(S_4\) 和 \(S_3\)(\(A[i]\)),\(S_2\) 和 \(S_1\)(\(T[i]\))
(c)对于数组 B 的迭代 i 和迭代 i+1 有反依赖,可以通过在 S2 对 B 的重命名来避免