Page 34 - 《软件学报》2025年第9期
P. 34

李奕瑾 等: 基于   RISC-V VLIW  架构的混合指令调度算法                                            3945


                                                    ∪          −−→
                                              A[x] =    (B[p]∪( d p,x > 0?{p} : ∅))                   (4)
                                                   p∈pred[x]

                                                                 ∪
                                                  B[x] = A[x]∪{x}∪   {p}                              (5)
                                                                p∈pred[x]
                    一个调度区域      R  中的指令可以表示为集合       (i, j, k, l), 分别表示  R  中  ALU、LOAD、STORE、JUMP  这  4  种类
                 型指令的数量. 由于不同的执行单元支持的指令类型不同, 因此在进行指令调度时首先需要对资源约束进行考虑.
                 若只考虑指令的数量和种类而不考虑指令间依赖关系, 则具体到本文架构                        (图  1) 完成调度区域   R  中指令所需的最
                 小     cycle 数  φ(i, j,k,l) 的计算公式为:
                                                             (         )
                                                              i+ j+k
                                                 φ(i, j,k,l) = max  , j,k,l                           (6)
                                                                3
                    定义指令节点      x 的最小发射    cycle, 简记为  MIC[x], 表示指令  x 的最小发射   cycle, 即该指令最早能够发射的
                 cycle. 则根据必经指令集合     A[x] 和  B[x] 可以计算出  MIC[x].

                                                            −−→
                                         MIC[x] = max (MIC[p]+d p,x , φ(A[x]) + 1 , φ(B[x]))          (7)
                                                p∈pred[x]
                    定义一个调度区域       R  的最小发射   cycle 为该调度区域内各指令节点最小发射            cycle 的最大值, 即:

                                                    MIC[R] = maxMIC[x]                                (8)
                                                             x∈I
                    基于必经指令集合公式         (4)、(5) 和  MIC  公式  (6)–公式  (8), 本文提出了一种线性复杂度的    IPC  理论模型, 该算
                 法可以给出单个调度区域内的           cycle 下界, 即  IPC  上界. 注意这里的下  (上) 界非下  (上) 确界.

                 5.2   IPC  理论模型计算示例
                    下面通过图     5  的  3  个例子给出根据必经指令集合公式         (4)、(5) 及  MIC  公式  (6)–公式  (8) 计算  cycle 下界的
                 示例.

                       MIC=1  0: A
                               →
                               d=1
                       MIC=2  1: A
                                                 MIC=1    MIC=1    MIC=1     MIC=1    MIC=1   MIC=1
                                →
                               d=1
                                                  0: L     1: L    2: L      0: A     1: S    2: S
                        MIC=3  2: A   3: A MIC=1
                                                       →     →      →             →     →     →
                                                      d=1   d=1    d=1            d=1   d=1   d=1
                                 →     →
                                 d=1   d=1
                            MIC=4  4: A                    3: S                       EXIT
                                                          MIC=4                      MIC=3
                            (a) 资源约束计算示例            (b) 前驱节点约束计算示例             (c) 虚拟退出节点计算示例
                                                图 5 指令节点    MIC  值计算示例

                    (1) 资源约束计算
                    图  5(a) 中节点  4  的  MIC  值取决于其直接前驱节点    2  和节点  3  的  MIC  值, 因此节点  4  的  MIC  为  4.
                    (2) 前驱节点约束计算
                    图  5(b) 中节点  3  的  MIC  值取决于所有前驱指令类型. 因为节点        0–2  为  3  条  LOAD  指令, 因此至少需要  3  个
                 cycle 完成  0–2, 因此节点  3  的  MIC  为  4.
                    (3) 虚拟退出节点的计算
                    图  5(c) 中由于不存在统一的退出节点, 无法根据节点的             MIC  值给出  DAG  图的  MIC  值. 因此通过引入虚拟退
                 出节点这一编译器的常用技术来得到             DAG  图的  MIC  值. 根据节点  0–2, 可得虚拟退出节点的      MIC  值为  3.
   29   30   31   32   33   34   35   36   37   38   39