ICML 2018の論文リストを眺めていて、目についたタイトルの論文を読み始めた。まず最初に「Learning Memory Access Patterns」という論文を読んだ。この論文はRNNを用いてメモリアクセスパターンを予測することで、プリフェッチの精度を上げてパフォーマンス向上を目的としている。ある種の調査によると、CPUサイクルの50%以上はメモリからのデータを待っているともいわれており、プリフェッチの精度を上げることはコンピュータの性能向上に寄与する可能性が高い。
アイデアとしては、メモリアドレス空間をvocabralyとして扱う。これは、アドレス空間は非常に広大だが、実際にプロセスによってアクセスされる個所は局所的であり、これを予測しようとすると非常に疎なデータであるため正規化した際に有用な情報が失われてしまうためである。また、現在アクセスされているアドレスと次の時間にアクセスされるアドレスの差分(デルタ)を正解ラベルとして用いることで、デルタは通常小さいため、訓練が上手くいくというアイデアが用いられている。
また、単純にLSTMを使うだけでなく、前処理としてクラスタリングを行ってからLSTMにかけることで、プログラムのローカル構造(例えば構造体のアクセスや配列の走査)などの特徴を掴みやすくなったと述べている。
著者らは様々なデータセットを用いて、既存のメモリプリフェッチ機構とprecision/recallを比較しているが、クラスタリング+LSTMが良い性能が出ることを確認している。
Hit/Missの性能が良いのは理解できなくもないが、気になるのはやはり速度性能である。これは推測だが、おそらく既存のメモリプリフェッチ機構を置き換えるにはLSTMの推論は処理が重いのではないかという気がする。著者らは実際にH/W実装はまだ行っておらず、速度性能については今後の課題だと述べている。今後TPUのようなAIプロセッサの技術革新が進んでいけば、将来的には既存のプリフェッチ機構を置き換える可能性を秘めているかもしれない。
論文では、以前話題になったB-treeよりも高速なインデックス構造を機械学習で作成した「The Case for Learned Index Structures」という論文があったが、今後は既存のコンピュータアーキテクチャ分野にも機械学習が進出する未来がやってくるのかもしれない。