Research Themes


津邑研では,「多数のコアを使って何如にプロセッサを高速化するか, また,プログラマに多数のコアを何如に容易に使いこなさせるか」を基本理念と し,ハードウェアとソフトウェアの協調をベースに研究を行っています。 ここでは,それらのうち一部の具体的な研究テーマについて紹介します。

自動メモ化プロセッサ / Memoization

1. 概要

プロセッサは微細化が進んだことにより, 高クロック化だけでは性能向上が望めなくなってきました。このため現在,さまざまな 単位での並列化によって,性能向上が追求されています。 たとえば命令単位での並列化であるスーパスケーラ,データ並列を生かすSIMD,スレッド並列を生かすマルチコア等です。

これらのアプローチはもちろん重要なものですが,並列化は,本質的に並列性を持ったプログラムしか高速化することができません。そこで我々は,並列化とは全く異なる概念である「メモ化」機能をプロセッサに持たせることで,高速化を実現する手法を提案しています。

2. メモ化とは

メモ化」とは,元来 Lisp プログラムなどを高速化するために行われてきたプログラミング手法で,「関数の入力と出力の組を覚えておくことで,以降,同じ入力による関数呼び出しを処理しなくても出力が得られる」という考え方です。

津邑研で提案している「自動メモ化プロセッサ (Auto-Memoization Processor)」は,この「関数呼出し」を自動的に検知して関数の入出力ペアをハードウェア表に覚えておきます。こうして過去の実行結果を再利用することで以降の関数呼出しを自動的に省略し,プログラムの実行時間を削減します。

3. 並列事前実行

従来のメモ化と大きく異なる点として,自動メモ化プロセッサは,関数だけでなくループも対象とすることが挙げられます。しかしループの入力は一般に単調変化するため,同じ入力による実行は行われず,そのままではメモ化の効果が得られません。

そこで,将来の入力を予測し,用意した投機コアにその予測入力を用いて事前にループを実行させ,その結果を記憶することにします。これを「並列事前実行」と呼んでいます。入力の予測が正しかった場合,メインコアは投機コアの実行結果を再利用することで実行を省略できるため,高速化が望めます。

4. 成果

自動メモ化プロセッサは,並列性を持たないプログラムも高速化可能であることが最大の特長です。プロセッサの速度評価に一般的に用いられるベンチマーク群である,SPEC CPU95 を用いて評価した場合,投機コアを3つ備えた構成で,最大40%の実行時間の削減が可能です。オリジナリティの高いこのプロセッサ構成方式は,高い評価を受けており,これまでに以下に挙げるようなさまざまな賞も受賞しています

  • 国際会議ICNC'12 Best Paper Award
  • 平成22年度 情報処理学会東海支部 学生論文奨励賞
  • 平成22年度 名古屋工業大学 副学長表彰 (学術活動部門)
  • 国際会議ICNC'10 Best Paper Award
  • 第6回 情報科学技術フォーラムFIT2007 船井ベストペーパー賞

トランザクショナルメモリ / Transactional Memory

1. 概要

共有メモリ型マルチコアプロセッサでは,メモリに対する読み書きで簡単にデータの受け渡しが行える一方,メモリアクセスの競合を適切に調停する必要があります。 これは従来,ロックなどの仕組みを用いて実現されて来ましたが,ロックはプログラマの負担が大きいうえ,デッドロックの発生や並列性の低下など,さまざまな問題がありました。

そこで現在,ロックに代わる枠組みとして,トランザクショナルメモリ(TM: Transactional Memory) が注目を集めています。TMには,ソフトウェア実装によるSTMと,ハードウェア実装によるHTMがあり,津邑研では主にHTMを研究しています。

2. HTM

HTM(Hardware Transactional Memory)では,共有変数へのアクセスを含む処理を,クリティカルセクションではなくトランザクションという処理単位として定義します。トランザクションはクリティカルセクションとは異なり,競合が実際に発生するまでは投機的に実行が可能です。

例えばトランザクション内で「書き込み」アクセスが発生した場合,その変数を既に読み出しているトランザクションが他に存在すると,競合となります。この場合,投機的に実行されていたトランザクションはキャンセルされることになります。

3. スケジューリング

津邑研では,HTMの性能を決める鍵は,トランザクションのスケジューリングだと考えています。つまり,各トランザクションをどのようなタイミングや順序で,できるだけ競合を起こさないように実行すべきかが重要です。

このトランザクションスケジューリングを改善するため,アプリケーション内で競合を起こしやすいパターンを調べ,これを解決する方法を提案しています。また,競合を直接引き起こさない「読み出し」アクセスを敢えて制限するという新しい発想で,その後のスケジューリングを効率化する手法を提案しています。

4. 成果

研究を始めてまだ日が浅いですが,既に論文誌や国際会議を通じて,多数の発表を行っています。また,以下のような賞も受賞しています。

  • 平成25年度 情報処理学会東海支部 学生論文奨励賞
  • 平成25年度 名古屋工業大学学長表彰(学術活動部門)
  • 平成24年度 情報処理学会東海支部 学生論文奨励賞
  • 情報処理学会 第196回ARC研究会 若手奨励賞
  • 先進的計算基盤システムシンポジウムSACSIS2012 優秀若手研究賞

自動並列化 / Auto-Parallelization

1. 概要

これまでは,クロック向上などのCPUの発展により,プログラム実行は放っておいても速くなりました。 しかし現在のCPUの発展は,コア数の増大や, GPUや専用回路などのアクセラレータの併設によって実現される形に転換しつつあります。

これらによるCPUの発展がこれまでと決定的に違う点は, プログラマが明示的にプログラムを並列化したり,アクセラレータを使用するためのコードを 記述しなければ,プログラムは一切早くならないということです。 しかし,熟練していないプログラマにはこれが大きな負担となります。 津邑研では,熟練度の低いプログラマでもCPUの性能を十分に引き出せるようにするための支援環境を研究しています。

2. RaVioli

動画像処理は重要なアプリケーションのひとつですが,コンピュータで動画像を扱う場合,本来は連続的なデータである動画像を,フレームやピクセル(画素)といった単位に離散化して処理する必要があります。そしてそのフレーム数や画素数に応じて,ループ繰り返し回数などを設計しなければなりません。

しかし元来,わたしたちの視覚認識仮定には,これらの単位は介在していないため,これらの存在が直観的プログラミングを阻害してしまいます。そこで津邑研では,フレームやピクセルという単位をプログラマから隠蔽するプログラミング環境RaVioliを研究しています。

これらを隠蔽することで,プログラマが繰り返し回数などを意識しなくてもよくなるうえ,並列化単位の抽出が容易になるため,プログラムを効率的な並列プログラムに自動変換することも可能になり,性能が向上します。

3. GPGPU

GPUは,本来グラフィック処理専用のプロセッサですが, CPUなどよりもずっと多くのコアを備えた超並列処理環境であることを生かし, グラフィック以外の様々な処理に応用される場面が増えてきています。

しかし,その多数のコアを使いこなすのは難しく, また特殊なメモリ構成並列実行のための制約が, プログラミングを困難にしています。そこで津邑研では,プログラマがGPUのハードウェアを意識しなくても, GPUの性能を引き出すことができるプログラミング環境を研究しています。

4. 成果

Printing Now...

ハードウェア支援 / Hardware Acceleration

1. 概要

アプリケーションの動作性能は,いかにハードウェア(汎用プロセッサ)の性能を引き出せる実装になっているかに大きく影響を受けます。すなわち,一般にハードウェアは,特定のプログラムではなく多くのプログラムを共通して高速化するための仕組みを備えており,プログラマがその動作を理解して開発を行うことになります。

しかし,アルゴリズム面や実装面の工夫だけでは,十分な速度性能が出せない処理も存在します。そのような処理に対しては,ハードウェア側からの「歩みより」,すなわち,その処理に特化した高速化技術をハードウェアが提供することも検討する必要があります。

2. GC

ガベージコレクション(GC)は,アプリケーションプログラマにとってメモリ管理を容易にしてくれる優れた機能で,さまざまなOSや言語処理系で提供されています。しかし,GC動作時にはシステムのパフォーマンスが大きく低下する場合があり,全体性能やユーザ体感品質に影響を与えます。

そこで津邑研では,従来ソフトウェアで実現されていたGCの機能を一部ハードウェアで実現することにより,GCの大幅な速度向上を目指して研究しています。この実現により,サーバサイドアプリケーションからスマートフォンアプリケーションに至る幅広い環境で性能の改善が期待できます。

3. 成果

Printing Now...