この論文で提案する「Line Recycling(LR)」の考え方を次の図に示す。次の図のように不良ビットを持つ3つのキャッシュラインを考える。この3つのキャッシュラインは同じビット位置に不良ビットが重ならないように選ぶ。

この例でset0 way3のエラーを訂正してそのキャッシュラインをリサイクルする場合、同じビット位置にエラーの無い2つのキャッシュラインをパッチラインとする。そして、set0 way3に書き込む場合は同じデータをパッチラインにも書き込む。パッチラインの赤で示したビットにエラーがあっても、リサイクルするset0 way3のエラービットと位置が重なってなければ良いので、2セットをパッチラインに使えばいくつものエラーの訂正に使える。

そしてset0 way3を読み出す場合は2つのパッチラインも読み出して多数決を取ると正しい値を得ることができる。

1つのエラーを訂正するのに2つのラインをパッチラインとして使うので、その分、キャッシュの容量が減るが、パッチラインにエラーが無いことは要求されないので、パッチラインの候補は容易に見つかりオーバヘッドとしては大きくないと思われる。

また、このLR法では、エラーを訂正してリサイクルするためには、2つのパッチラインにも同じデータを書き込む必要があり、読み出しの場合には2つのパッチラインも読み出す必要があり、Read/Writeともに3回のキャッシュアクセスが必要となる。このため、キャッシュのアクセス時間が長くなり、電力が増えるというデメリットがある。

さらに、TLBにパッチラインのアドレスを書いて置く必要があるなど、いろいろなオーバヘッドがある。

  • LR法の考え方

    Line Recyclingは2つのパッチラインにも同じ情報を書き込み、読み出し時にはパッチラインも読み出して多数決を取ってエラーを訂正する

BOOMの開発環境であるが、次の図に示すようにBOOMv1とBOOMv2ではパイプラインダイヤグラムも変わり大きな設計変更が行われているが、僅か4か月でこの設計変更を行っているように非常にアジャイルな開発環境が構築されている。

  • 4か月でBOOMv2を開発

    BOOMv1とBOOMv2では大きな変更があるが、作り上げた設計メソドロジで僅か4か月でBOOMv2を作り上げるアジャイルな設計ができた

次の図に完成したBOOMチップの諸元とチップ写真、ブロックダイヤを示す。命令フェッチは2命令並列で、命令を分解したマイクロ命令のレベルでは最大4命令を同時に発行できる。L1キャッシュは命令、データともに4wayで16KB。L2キャッシュは8wayで1MBである。チップ写真に見られるように、L2キャッシュが全体の6割程度の面積を占めている。

  • BOOMチップの諸元

    BOOMチップの諸元、チップ写真とブロックダイヤグラム。1MBのL2キャッシュがチップ全体の6割の面積を占めている

次の図に実験のセットアップを示す。手前のボードに前述のBOOMチップが搭載されている。奥のボードはXilinxのZC706を搭載したボードで、Xilinxのチップの中に入っているCortex-A9プロセサがBOOMを使うコンピュータのフロントエンドサーバとして動いている。

BOOMチップは0.9Vの電源で1GHzのクロックで動作し、Coremark/MHzは3.77でIPCは1.11を計測した。なお、このチップは0.6V電源でも320MHzクロックで動作した。

  • BOOMチップの実験セットアップ

    BOOMチップの実験セットアップ。手前のボードにBOOMチップが搭載されており、奥のボードにフロントエンドとして動作するCortex-A9が載っている

次の図の左側のグラフは、電源電圧(この図の横軸は[V]ではなく任意単位[a.u.])とビットエラー率の関係を示したもので、例えばL2キャッシュの場合は、Vddが0.6の場合は

10-7のエラー率であるが、Vddが0.45まで下がるとエラー率は3×10-4と300倍になる。

右側の棒グラフは何の対策も取らない場合は、電源電圧は0.6[a.u.]必要であり、これを下回ると正常に動作しなくなる。しかし、各種の低電圧での動作不良ビットを切り離したり、マスクしたりすると、より低い電源電圧でも動作させられる。

この論文で提案するLine Recycling(LR)という方法で5%のキャッシュ容量のロスを許容すると、動作電圧を21.7%下げることができ、消費電力を43%低減することができた。

  • 電源電圧とビットエラー率の関係

    左が電源電圧とビットエラー率の関係。電源電圧が下がるとエラー率は急増する。右が各種のSRAM動作電圧の低減方法を使った場合の動作電圧の低減を示すグラフ

次の図はL2キャッシュのSRAMのシュムープロットであるが、対角線の下の右側の緑の部分は、特別な対策を行わなくても正常に動作する領域、対角線の上の赤の部分は動作しない領域である。そして黄色の部分が、LRで不良ビットに対策を施したらSRAMが正常に動作する部分である。LRの対策なしでは電源電圧0.6程度が下限であるが、LRで対策を行えば、 0.47まで動作域が広がる。ただし、0.47の電源では、動作周波数は70MHzと低くなる。

なお、この図では下限は0.47Vと書かれており、任意単位[a.u.]は[V]と同じであるようである。

  • BOOMチップのシュムープロットら

    BOOMチップのシュムープロット。黄色の部分がLRの適用で動作するようになった部分で、電源電圧の下限が0.6Vから0.47Vに改善された。左の図は黄色の部分の拡大図

BOOMコアは、アジャイルな設計メソドロジの研究、ハードウェアとソフトウェアのコデザインの研究、SpectreやMeltdownのような攻撃をどう防ぐかなどのセキュリティの研究、新たなRISC-Vアーキテクチャの研究など、いろいろな用途に使うことができる。

  • BOO<の活用方法

    BOOMはアジャイル設計のメソドロジの研究、ハード、ソフトのコデザインの研究、SpectreやMeltdownなどのアタックに対する防御の研究など、各種の研究に利用することができる。当然、RISC-Vアーキテクチャの拡張の研究にも利用できる