Page 113 - 《软件学报》2020年第9期
P. 113

2734                                 Journal of Software  软件学报 Vol.31, No.9,  September 2020

             算法 2. GISDP 算法第 2 部分——修改数据放置.
             输入:一个 IAFG G=〈V,E,D〉;
                 磁带的容量 N,M 个读/写头;
                 算法 1 的输出的 sch,place,shift,shift_count,shift_data;
             输出:比算法 1 总移动次数少的数据放置顺序 place;
                 总的移动次数 shift;
                 一个记录移动次数的列表 shift_count.
             1.   shift←统计 shift_data 中每对连续访问数据的连续次数;
             2.   relate←计算 shift_data 中的每对连续访问数据的相关度,并根据相关度降序排序数据对;
             3.   while relate[i]>1 do
             4.      if  数据对(m,n)不在同一个位置段  then
             5.         将数据 m 与在本位置段中和数据 n 偏移位置相同的数据 r 交换位置;
             6.         对所有段中,将 r 所在域(及其等价域)到 m 所在域(及其等价域)之间的数据(包括 r,不包括 m),向 r
                    所在域的方向循环移动一个位置;
             7.      else then
             8.         将其他任意一个位置段中与 n 偏移位置相同的数据 r 与 m 交换位置;
             9.         对所有段中,将 m 原来放置域(及其等价域)到 m 当前放置域(及其等价域)之间的数据,向 m 原来放
                    置域的方向循环移动一个位置;
             10.     统计交换位置后的移动次数;
             11.     if  本次统计移动次数<shift then
             12.        shift=本次统计移动次数;place=本次放置结果;
             13.        重新统计相关度,更新 relate;i=0;
             14.     else then
             15.        shift 不变;place=之前放置结果;i=i+1;
             16.     end if
             17. end while
             18. return place,shift.
             在算法 2 对数据的放置进行改进之后,算法 3 根据算法 2 的数据放置和 IAFG G 对指令进行了重调度,以获
         得与新数据放置策略相适宜的指令调度.算法 3 的主要思想是:尽量将访问当前 port 所在域中数据的指令进行
         调度,没有可调度的指令则移动一个位置.当 port 移动到有指令可调度的域的时候,将会更新 port 的状态.最后统
         计该调度下的移动次数,与重调度之前的移动次数进行比较,如果移动次数减少,则保留此次的调度;否则不更
         新调度.
             算法 3. GISDP 算法第 3 部分——改进指令调度.
             输入:一个 IAFG G=〈V,E,D〉;
                 磁带的容量 N,M 个读/写头;
                 算法 1 的输出 sch,算法 2 的输出 place,shift;
             输出:一个指令调度列表 sch;
                 总的移动次数 shift.
             1.   list0←统计入度为 0 的节点;list1←统计入度不为 0 的节点;
             2.   i=1;
             3.   while len(sch)<len(V) do
             4.         if port 此时状态下有可调度的指令  then
   108   109   110   111   112   113   114   115   116   117   118