3.5.8.17L2BM→DRAMグループ間結合縮約命令
この命令は複雑なのでまず具体的に、単位動作であるL2BM側 64 長語読み出しの動作を説明する。全
L2BMから 64 長語ずつ読み、グループ方向に縮約する。全グループの 0 番L2Bのデータを縮約した 64 長語
を 16 長語ずつに分割し、各DRAMに書き込む。同様に全グループの 1 番L2Bのデータを縮約した 64 長語
を 16 長語ずつに分割し、各DRAMに書き込む。以上で各DRAMに 32 長語が書き込まれる。
code:txt
単位動作でない場合はこれを繰り返す。
スループットはL2BM側 16 長語/サイクル、DRAM側 8 長語/サイクルである。
文法
mvr4<op>/n<size><tag> $lc<addr_c> $d<addr_d> code:txt
縮約演算指定<op>については3.5.5節を参照のこと。
code:txt
効果
uint_t n=size / 64
for i= 0:n
uint_t src_addr=addr_c + 64 *i
uint_t dst_offset= addr_d+ 32 * i
forall group,l2b
code:txt
forall group,l2b
uint_t buf_addr= 16 *group
uint_t dst_addr=dst_offset + 16 *l2b
code:txt
注意:縮約を内部的に実際にこの手順で行っているわけではない。
エラー
sizeが単位動作 64 の倍数でないとエラーになる。
code:txt
例
mvr4dfadd/n64 $lc0 $d0
code:txt
本節冒頭で延べた単位動作である。縮約には倍精度浮動小数点数加算を用いている。