• 検索結果がありません。

自動並列化コンパイラによるソフトウェアキャッシュコヒーレンシ制御手法の評価

N/A
N/A
Protected

Academic year: 2021

シェア "自動並列化コンパイラによるソフトウェアキャッシュコヒーレンシ制御手法の評価"

Copied!
7
0
0

読み込み中.... (全文を見る)

全文

(1)Vol.2014-ARC-213 No.19 Vol.2014-HPC-147 No.19 2014/12/9. 情報処理学会研究報告 IPSJ SIG Technical Report. 自動並列化コンパイラによる ソフトウェアキャッシュコヒーレンシ制御手法の評価 岸本 耀平1,a). 間瀬 正啓1,†1. 木村 啓二1. 笠原 博徳1. 概要:主記憶共有型マルチコアプロセッサにおいて,一般にキャッシュコヒーレンシ制御はハードウェアに より実現されている.今後のプロセッサコア数の増加に伴いキャッシュコヒーレンシハードウェアの回路 規模は大きくなり,チップへの実装が困難になること,電力消費が大きくなること,設計期間及び開発費用 が増大することが懸念されている.本稿ではこのハードウェアコヒーレンシ制御の問題を解決するために, ハードウェアコヒーレンシ制御機構を持たない主記憶共有型ノンコヒーレントキャッシュマルチコアに対 して,並列化コンパイラがソフトウェアに対し自動的にコヒーレンシ制御を行う手法を提案する.本手法 を実装した OSCAR 自動並列化コンパイラと,4 コアのクラスタを 2 つ持ちクラスタ間ではハードウェア コヒーレンシを持たない情報家電用マルチコア RP2 を用い性能評価を行った.9 つの科学技術計算アプリ ケーションを対象として評価を行ったところ,4 コアのハードウェアコヒーレンシ制御使用時の性能は平 均で 1 コア性能の 2.80 倍であったのに対し,ハードウェアコヒーレンシを使用せず本手法を適用した 4 コ ア実行時の性能は平均で 1 コア性能の 2.61 倍となりほぼ同等の速度向上が得られ,さらに 8 コアハード ウェアコヒーレンシ制御無効時には平均で 1 コア性能の 3.66 倍とスケールアップすることが確認できた.. 1. はじめに より高い計算能力への要求及び半導体集積度の向上に伴. れない.これらの問題に対処するためにはソフトウェアに おいて複雑なコヒーレンシ制御のプログラミングを行う必 要があり,ソフトウェア生産性に問題があった.. い,チップに実装されるコア数は増加している.現在主流. 本稿では,自動並列化コンパイラによるソフトウェア. の主記憶共有型マルチコアプロセッサでは,一般にプロ. キャッシュコヒーレンシ制御手法を提案する.さらにノン. セッサ近傍に高速かつ小容量のメモリであるキャッシュメ. コヒーレントキャッシュアーキテクチャ上で提案手法の性. モリを搭載している.その際,現在の多くのマルチコアプ. 能評価を行った結果について述べる.本手法では,コンパ. ロセッサでははハードウェアによりキャッシュコヒーレン. イラが自動並列化及びキャッシュ最適化を行うとともに,. シ制御が実現されている.しかしながら,ハードウェアコ. Stale Data への参照を回避するキャッシュ操作命令の挿. ヒーレンシ機構のチップへの実装は,コア数の増加に伴い. 入,及び False Sharing を回避するためのコード変形を自動. 消費電力の増大,ハードウェア設計コスト及び期間の増大. で行う.すなわち,提案手法により手動でのソフトウェア. が顕著になり,特に 64 コア以上のメニーコアでは困難に. の改変なしにノンコヒーレントキャッシュアーキテクチャ. なることが懸念されている.. 上でプログラムが動作可能となり,ソフトウェア開発者の. このような課題に対処するため,ハードウェアコヒーレ. 負担が軽減される.. ンシ機構を持たずソフトウェアによりコヒーレンシ制御を. 本手法を OSCAR 自動並列化コンパイラ [5] に実装し,8. 行うノンコヒーレントキャッシュアーキテクチャが提案及. コア集積の情報家電用マルチコアプロセッサ RP2[6] にお. び実装されてきた [1][2][3].一方で,ハードウェアコヒー. いて性能評価を行った.RP2 は 4 コアクラスタ内はハード. レンシ機構が存在しない場合,陳腐化したデータ (Stale. ウェアコヒーレンシ機構を持つが,5 コア以上ではソフト. Data)[4] への参照,及び False Sharing が発生し,これら. ウェアによるコヒーレンシ維持が必要な動作となる.. の問題に対処しない限りソフトウェアの実行が正常に行わ 1 †1 a). 早稲田大学 IPSJ, Chiyoda, Tokyo 101–0062, Japan 現在,日立製作所 中央研究所 Presently with Hitachi Central Research Laboratory [email protected]. ⓒ 2014 Information Processing Society of Japan. 以下,2 章ではノンコヒーレントキャッシュアーキテク チャ,3 章ではコンパイラによるキャッシュコヒーレンシ 制御手法について,4 章では評価について,5 章ではまと めについて述べる. 1.

(2) Vol.2014-ARC-213 No.19 Vol.2014-HPC-147 No.19 2014/12/9. 情報処理学会研究報告 IPSJ SIG Technical Report. シュコヒーレンシを考慮していない並列プログラムを動作. 2. ノンコヒーレント キャッシュアーキテクチャ. させると以下の 2 つの問題が生じる. まず,キャッシュラインが更新され最新の内容になった. 本章では本制御手法の対象とするハードウェアコヒーレ. という情報が同一キャッシュラインのコピーを所有してい. ンシ制御機構を持たないマルチコアアーキテクチャの仕様. る他のコアに伝わらないため,Stale なキャッシュライン. と,対象アーキテクチャでのコヒーレンシ制御の問題点に. の参照 (陳腐化したデータの参照) が発生するという問題が. ついて述べる.. ある.このとき,Stale なキャッシュラインはメインメモ リ上の値と異なるにもかかわらず Valid となっている.こ の状態で,コヒーレンシ維持のためにはあるコアでキャッ. 2.1 対象アーキテクチャ. シュラインの更新を行った後,別のコアでそのキャッシュ V. D. tag . data . V: valid bit, D: Dirty bit . Core 0 . Core 1 . Core N . CPU . CPU . CPU . Local   Cache . Local   Cache . … . Local   Cache . ラインの参照がある際,キャッシュラインの一貫性制御を ソフトウェアで明示的に行う必要がある. 次に,True Sharing あるいは False Sharing に起因する 問題がある. 複数のコアが同一キャッシュラインを更新する際,ハー ドウェアコヒーレンシ機構の存在下ではキャッシュライン. Interconnec4on  network  (Bus,  Crossbar,  Mesh,  Ring,  etc) . Shared  Memory 図 1. ノンコヒーレントキャッシュアーキテクチャ. Fig. 1 Non-coherent cache architecture. のインバリデーションとライトバックが逐次化されるため に,当該キャッシュラインのミス時には全コアによる処理 がメインメモリに正しく反映される.一方で,ハードウェ アコヒーレンシ機構が存在しない場合,最終的にメインメ モリに反映されるキャッシュラインは時系列順で最後に. 本稿の対象とするアーキテクチャは,複数のプロセッサ. ライトバックを行ったコアが持つキャッシュラインとな. コアがコアごとのプライベートキャッシュを持つ主記憶共. り,そのコアが更新したデータのみしかメインメモリに反. 有型のシステムであるが,キャッシュ及びメインメモリの. 映されないという問題がある.このような状況は,複数コ. コヒーレンシを保つためのハードウェアコヒーレンシ機. アによりキャッシュライン内の同一部分が更新される場. 構を持たないことを仮定している.ソフトウェアでキャッ. 合 (True Sharing) またはキャッシュライン内の異なる部. シュコヒーレンシ制御を行う場合,キャッシュライン毎に. 分がで更新される場合 (False Sharing) に発生する.True. Invalid, Valid, Dirty の 3 状態を管理する機能を持つものと. Sharing または False Sharing が発生する場合,コヒーレン. する.Invalid は,当該キャッシュラインのデータは無効で. シ維持のためには変数配置を変更し同一キャッシュライン. あることを示し,キャッシュラインの初期状態及び無効化. への更新が同時に起きないようにするか,同一キャッシュ. が行なわれた後の状態である.Valid は,当該キャッシュ. ラインへの更新を含む処理をソフトウェア側で逐次化する. ラインのデータは利用可能であり,メインメモリ上の値と. 必要がある.. 同一 (Clean) な状態である.Dirty は,当該キャッシュラ インのデータはプロセッサコア内では利用可能であるが, メインメモリ上の値から更新されメインメモリとキャッ. 3. コンパイラによるキャッシュコヒーレンシ 制御手法. シュ上の値が異なる状態である.そのため,キャッシュラ. 本章ではノンコヒーレントキャッシュアーキテクチャに. インはタグ,データの他に,この 3 状態を管理するための. 対してコンパイラが行う制御手法を提案する.本章で述べ. Valid ビット,及び Dirty ビットを持つものとする.. るコヒーレンシ制御手法を OSCAR マルチグレイン自動並. また,メインメモリとキャッシュのコヒーレンシ維持を. 列化コンパイラに実装した.. ソフトウェアで行うために,キャッシュの内容をメイン メモリに書き戻すライトバック (Writeback),及びキャッ. 3.1 粗粒度並列処理. シュを無効化するセルフインバリデート (Self-Invalidate). 図 2 に OSCAR コンパイラにおける階層的並列処理の実. のキャッシュ操作命令をサポートしていることを想定して. 行イメージを示す.階層的粗粒度タスク並列処理では,ま. いる.. ずプログラムは基本ブロック,ループ,関数呼び出しなど のマクロタスク (MT) として分割する.この際ループ及び. 2.2 対象アーキテクチャに対して考慮すべき点. 関数呼び出しの内部に対しては,階層的に MT 生成を行う.. ノンコヒーレントキャッシュアーキテクチャでは,ハー. 次に MT 間のコントロールフローとデータ依存の解析結果. ドウェアコヒーレンシ維持機構を持たないため,キャッ. から最早実行可能条件解析 [7] を行い,MT 間の粗粒度並列. ⓒ 2014 Information Processing Society of Japan. 2.

(3) Vol.2014-ARC-213 No.19 Vol.2014-HPC-147 No.19 2014/12/9. 情報処理学会研究報告 IPSJ SIG Technical Report Centralized scheduler code. 1st layer. $OMP PARALEL SECTIONS SECTION. Sta$c  scheduling  . MT1_1. MT1_2 DOALL MT1_4 RB. SECTION. PE0 PE1 PE2 PE3 PE4 PE5 PE6 PE7 Distributed scheduler code MT1_3 SB. MT1_1. SYNC SEND MT1_2. MT1_3. MT1_4 1_4_1 . 1_3_1 1_3_2 1_3_3 1_3_4 . 1_4_1 . SYNC RECV. 1_4_2 1_4_3 1_4_4 . 1_3_5 . 1_3_6 . 2nd. layer. Centralized  Dynamic  scheduling  . 3rd layer. 1_3_1 . 1_3_2 . 1_3_2 . 1_3_2 . 1_3_3 . 1_3_3 . 1_3_3 . 1_4_2 . 1_4_3 . 1_4_3 . 1_3_4 . 1_3_4 . 1_3_4 . 1_3_5 . 1_3_5 . 1_3_5 . 1_3_6 . 1_3_6 . 1_3_6 . 1_4_4 . $OMP END PARALLEL SECTIONS. Processor Group0 (PG0). Distributed  Dynamic  scheduling  . 図 2. 1_3_1 . 1_4_1 . 1_4_2 . 1_4_4 . 1_3_1 . Processor Group1 (PG1). 階層的タスク並列処理の実行モデル. アでは更新の後に更新を行ったキャッシュラインをライ トバックし,その後メモリアクセスの逐次化を行うメモ リフェンス命令の実行を行い,最後に同期を行う.読み出 し側のコアでは,キャッシュラインの状態は Stale 状態と なっているので,キャッシュラインをセルフインバリデー トし,同期及びメモリフェンスの後に読み出しを行う必要 がある.出力依存についてもフロー依存と同様にキャッ シュ操作命令の挿入を行う.逆依存については陳腐化した データの参照は発生しないため,キャッシュコヒーレンシ 操作コードの挿入は必要なく,同期により変数へのアクセ スが逐次化されていることを保証すれば良い.コンパイラ によるデータ依存解析が不十分でメモリアクセス範囲が特. Fig. 2 Data layout transformation. 定できない場合,キャッシュ操作はキャッシュ全域に対し. 性を表現した結果としてマクロタスクグラフ (MTG) を生. て行う必要が生じる.プログラム中に True Sharing が発. 成する.その後,各 MTG の持つ並列性に応じ,プロセッ. 生する場合,データ依存解析により依存が生じることが特. サコア (PE) のグルーピング [8] を行い,タスクに対し階層. 定され,本節の方法を適用してりキャッシュラインへのア. 的なプロセッサグループ (PG) を割り当て,スケジューリ. クセスを逐次化し,正しい動作を保証することができる.. ングを行う.階層的な MTG が PG,PE に割り当てられ,. 3.4 False Sharing の検出. 並列実行される際のイメージを図 2 に示す.. int A[1000][3]; /* 4Byte per element */ for (i = 0; i < n; i++) { A[i+1][2] = ...; }. 3.2 並列化に伴うコヒーレンシ制御 本手法では,まずプロセッサグループ割り当てにより複 数のプロセッサコアが割り当てられ並列処理されるタス クについて,False Sharing の検出と回避を行う.その後,. 図 4. スケジューリング結果に基づき各プロセッサコアにタスク. Fig. 4 An example of loop of possibly false sharing. False Sharing が発生する可能性のあるループの例. を割り当てるとともにタスク間の依存関係を保持する同期 を挿入して並列コード生成を行う.並列コード生成と同時. 変数間での False Sharing は 3.5.1 節の方法で解消する. に,タスク間のデータ依存に基づいてキャッシュ操作の挿. ことを前提とすると,複数のコアから同一キャッシュライ. 入を行う.. ン上の異なる位置でアクセスされる配列要素間では False. Sharing が存在するため,False Sharing の検出及び回避を 行う必要がある.そのため並列実行されるタスクまたは. 3.3 陳腐化したデータへの参照の回避. ループイタレーションで,配列の定義される範囲の解析 Modified. Valid. A  =  …;  /*  def  A*/     Writeback(A);     Memory-­‐fence();   sync_flg  =  1;   Writeback(sync_flg);       …; . Valid   (Stale) Self-­‐Invalidate(A);     do  {      Self-­‐invalidate(sync_flg);   }  while  (sync_flg  !=  1);     Memory-­‐fence();     …  =  A;  /*  use  A  */ . Aのキャッシュ状態. Invalid. False Sharing が起こる配列次元を求める. キャッシュラインサイズを 32Byte とした際の具体的 な解析例を図 4 に示す.図 4 では配列 A は int 型 (1 要素. 4Byte) の,1 次元目の大きさが 3,2 次元目の大きさが 1000 Valid. Aのキャッシュ状態. 図 3. をそれぞれに対し行い,False Sharing が発生する配列と,. キャッシュ操作. Fig. 3 Cache operation. の配列として宣言されており,その後の for ループで配列 要素の定義がされている. まず,並列化対象ループの内側で定義される配列の範囲 を解析した結果は,A[i+1][2] である.ループが最大分 割数,つまり 1 イタレーションごとに分割され並列実行 される場合を考慮すると,ループインデックス i が変化. 本手法ではデータ依存解析に基づき,陳腐化したデータ. して A[i+1][2] と A[(i+1)+1][2] (0 ≤ i < n) が異なる. への参照の回避を行う.図 3 のように,あるコアでデータ. コアで更新される.ここで,キャッシュラインサイズは. の定義を行った後,他のコアでデータの参照を行うという. 32Byte であるのに対し,A の 2 次元目のサイズは 4Byte. フロー依存が存在する場合,キャッシュコヒーレンシ操. × 3 = 12Byte とキャッシュラインサイズより小さいので,. 作コードの挿入を行う.具体的には,データの更新側のコ. A[i+1][2] 及び A[(i+1)+1][2] が同一キャッシュライン. ⓒ 2014 Information Processing Society of Japan. 3.

(4) Vol.2014-ARC-213 No.19 Vol.2014-HPC-147 No.19 2014/12/9. 情報処理学会研究報告 IPSJ SIG Technical Report. に配置されて複数コアによる更新が発生する可能性がある.  適用前. ことがわかる.その結果,配列 A については 2 次元目で. False Sharing するという解析結果が得られる. 3.5 False Sharing の回避 False Sharing 解析結果を元に,False Sharing を回避し,.  適用後. コア0がアクセス. コア0がアクセス. 

(5) . . 

(6). .

(7) . . 

(8). . .  .

(9) 

(10).

(11) . . 

(12).

(13) .

(14) 

(15).

(16) .

(17) . . . . 

(18). . . 

(19). . . . 

(20). . . 同一キャッシュラインへの更新が異なるコアで同時に起き ないことを保証する.本節では False Sharing の各回避方. . コア1がアクセス. 法についてそれぞれ述べる.False Sharing が解析できな. コア1がアクセス. Pad. い,あるいは False Sharing の回避が不可能な場合,その 図 6. タスクは 1 つのコアで逐次処理される.. 3.5.1 変数のアライメント 並列化により複数のプロセッサコアが同一のラインを処 理してしまう場合の False Sharing の問題に対しては,変 数をキャッシュラインの先頭に配置することで,変数間で キャッシュラインを共有しないようにする.これにより変 数間で False Sharing が発生しないことを保証できる.ま た,本操作により配列や構造体の先頭がキャッシュライン の先頭に配置されることを前提に配列内部の False Sharing の解析が可能となる.. False Sharing を回避する.配列の左側の次元を上位,右側 の次元を下位の次元として,False Sharing が発生する次元 の 1 つ下位の次元に Pad を挿入する (Padding).最下位の 次元で False Sharing が発生する場合,配列次元を 1 次元拡 張 (Array Expansion) する.図 6 のように,配列 A[4][3] に対する連続アクセスを均等分割する場合,配列 A の 2 次 がキャッシュラインサイズで割り切れるよう宣言サイズを. A[4][4] に変更する..  適用後. コア0がアクセス. 一致するように配列要素にダミー要素 (Pad) を挿入して,. 元目で False Sharing が発生するので,1 次元目のサイズ. 3.5.2 キャッシュラインを考慮したループ分割  適用前. データレイアウト変換. Fig. 6 Data layout transformation. またデータレイアウト変換を行った時,ポインタ解析結. コア0がアクセス. 果を元に,変換を行った配列変数を参照するポインタ変数.  .

(21). . .

(22). . . についても,型と参照を変換する.. . . . . . . . . . 4. 評価. . . .

(23). . . .

(24). . コア1がアクセス. 技術計算アプリケーションに対しコンパイラによるキャッ シュコヒーレンシ制御手法を適用し,その有効性を評価. Fig. 5 Loop division aligned to cacheline. ループイタレーション間に依存がなく独立に実行可能な 場合,通常はループは負荷均衡を考慮して均等分割して. する.. 4.1 評価環境 㪚㫃㫌㫊㫋㪼㫉㩷㪇. 㪚㫃㫌㫊㫋㪼㫉㩷㪈. 並列処理を行うが,分割の境界がキャッシュラインの途. 㪚㫆㫉㪼㩷㪊. 中に存在する場合 False Sharing が発生する.例えば,図. 5(a) のように 12 要素の配列を定義する処理を 6 要素ずつ コアに均等分割して並列処理すると,A[6] の先頭で False. Sharing が発生する.そこで図 5(b) のように分割をキャッ シュライン先頭で行うことにより,False Sharing を回避す. 㪣㪚㪧㪞㪇 㪧㪚㪩㪊 㪧㪚㪩㪉 㪧㪚㪩㪈. 㪚㫆㫉㪼㩷㪎. 㪝㪧㪬 㪚㫆㫉㪼㩷㪉㪚㪧㪬 㪝㪧㪬 㪛㩻 㪚㫆㫉㪼㩷㪈㪚㪧㪬 㪠㩻 㪚㪚㪥 㪊㪉㪢 㪝㪧㪬 㪛㩻㪊㪉㪢 㪚㫆㫉㪼㩷㪇㪚㪧㪬 㪠㩻 㪦㪣㪩㪘㪤 㪠㪣㪩㪘㪤㪚㪚㪥 㪊㪉㪢 㪚㪧㪬 㪛㪫㪬㪛㩻 㪠㩻㪊㪉㪢㪏㪢 㪝㪧㪬 㪈㪍㪢 㪦㪣㪩㪘㪤 㪠㪣㪩㪘㪤㪚㪚㪥 㪊㪉㪢 㪠㩻㪊㪉㪢㪏㪢 㪛㩻 㪈㪍㪢 㪚㪚㪩 㪛㪫㪬 㪠㪣㪩㪘㪤㪙㪘㪩 㪬㪩㪘㪤㩷㪈㪉㪏㪢 㪦㪣㪩㪘㪤 㪈㪍㪢 㪛㪫㪬 㪈㪍㪢 㪏㪢 㪈㪍㪢 㪬㪩㪘㪤㩷㪈㪉㪏㪢 㪠㪣㪩㪘㪤 㪦㪣㪩㪘㪤 㪛㪫㪬 㪏㪢 㪊㪉㪢 㪬㪩㪘㪤㩷㪈㪉㪏㪢. 㪪㫅㫆㫆㫇㩷㪺㫆㫅㫋㫉㫆㫃㫃㪼㫉㩷㪈㩷㩿㪪㪥㪚㪀. キャッシュラインに沿ったループ分割. 㪪㫅㫆㫆㫇㩷㪺㫆㫅㫋㫉㫆㫃㫃㪼㫉㩷㪇㩷㩿㪪㪥㪚㪀. 図 5. コア1がアクセス. 本章では 8 コアマルチコアプロセッサ RP2 上で,科学. 㪚㪧㪬 㪝㪧㪬 㪚㫆㫉㪼㩷㪍 㪚㪧㪬 㪝㪧㪬 㪠㩻 㪚㫆㫉㪼㩷㪌 㪛㩻 㪚㪚㪥 㪊㪉㪢㪠㩻㪚㫆㫉㪼㩷㪋 㪊㪉㪢㪛㩻 㪚㪧㪬 㪝㪧㪬 㪚㪚㪥 㪦㪣㪩㪘㪤 㪠㪣㪩㪘㪤 㪊㪉㪢㪠㩻㪛㪫㪬 㪊㪉㪢㪛㩻 㪚㪧㪬 㪝㪧㪬 㪈㪍㪢 㪏㪢 㪚㪚㪥 㪦㪣㪩㪘㪤 㪠㪣㪩㪘㪤 㪊㪉㪢㪠㩻㪛㪫㪬 㪚㪚㪩 㪊㪉㪢㪛㩻 㪈㪍㪢 㪏㪢 㪬㪩㪘㪤㩷㪈㪉㪏㪢 㪠㪣㪩㪘㪤 㪦㪣㪩㪘㪤 㪈㪍㪢 㪛㪫㪬 㪈㪍㪢 㪙㪘㪩 㪏㪢 㪈㪍㪢 㪬㪩㪘㪤㩷㪈㪉㪏㪢 㪠㪣㪩㪘㪤 㪦㪣㪩㪘㪤 㪛㪫㪬 㪏㪢 㪬㪩㪘㪤㩷㪈㪉㪏㪢 㪊㪉㪢. 㪬㪩㪘㪤㩷㪍㪋㪢. 㪧㪚㪩㪇. る.キャッシュラインに沿ったループ分割では,各コアに. 㪬㪩㪘㪤㩷㪍㪋㪢. 㪣㪚㪧㪞㪈 㪧㪚㪩㪎 㪧㪚㪩㪍 㪧㪚㪩㪌 㪧㪚㪩㪋. 㪦㫅㪄㪺㪿㫀㫇㩷㫊㫐㫊㫋㪼㫄㩷㪹㫌㫊㩷㩿㪪㫌㫇㪼㫉㪟㫐㫎㪸㫐㪀. 割り当てられる回転数が均等にならない可能性があり,そ のような場合負荷不均衡が生じて速度低下の原因となる.. 3.5.3 パディングによるデータレイアウト変換 データレイアウト変換では,False Sharing の検出結果か ら False Sharing を起こす配列変数について,False Sharing の発生する次元の要素の先頭がキャッシュラインの境界と ⓒ 2014 Information Processing Society of Japan. 図 7. 㪣㪙㪪㪚. 㪛㪙㪪㪚. 㪪㪩㪘㪤. 㪛㪛㪩㪉㩷㪪㪛㪩㪘㪤. 㪚㪪㪤 㪈㪉㪏㪢. 4 コアまでのコヒーレンシ制御機構を持つ 8 コアマルチコア. RP2 Fig. 7 RP2: 8-core multicore processor with cache coherence up to 4 core. 4.

(25) Vol.2014-ARC-213 No.19 Vol.2014-HPC-147 No.19 2014/12/9. 情報処理学会研究報告 IPSJ SIG Technical Report. 図 7 に評価環境である RP2 のブロック図を示す.RP2. が 3.66 倍と NCC8 コアの速度向上率が SMP4 コアの速度. は 1 チップ上に SH-4A コアを 8 コア搭載したホモジニア. 向上率を上回っている.ここから,ソフトウェアによるコ. スマルチコアであり,各プロセッサコアは 16KByte のデー. ヒーレンシ維持が必要な 5 コア以上でもコア数に対しス. タキャッシュを持ち,キャッシュラインサイズは 32Byte. ケーラブルに性能向上しているといえる.特に CG におい. である.ハードウェアによるキャッシュコヒーレンシは 4. ては SMP4 コアが 1 コア性能の 3.68 倍に対し NCC8 コア. コアで構成されたクラスタ内で保証され,MESI プロトコ. で最大の 5.31 倍の速度向上が得られた.また,SMP4 コア. ルが採用されている.クラスタ間では明示的にキャッシュ. 平均で 1 コア性能の 2.80 倍であったのに対し,NCC4 コ. コヒーレンシ制御を行う必要がある.また,クラスタ内の. アの性能は平均で 1 コア性能の 2.61 倍と 7%の性能劣化に. ハードウェアキャッシュコヒーレンシ機構は無効化する. とどまりハードウェアキャッシュコヒーレンシが無効の時. ことができる.本アーキテクチャは 2.1 節で述べたノンコ. でも概ね同等の速度向上率が得られているといえる.art,. ヒーレントキャッシュアーキテクチャの要件を満たしてお. equake, lbm ではいずれのコア数でも NCC が SMP の性能. り,キャッシュ操作命令としてはキャッシュラインのライ. を上回っており,特に art では 2 コアで SMP1.57 倍に対. トバック,セルフインバリデートを備える.. し NCC1.67 倍,4 コアで SMP2.66 倍に対し NCC3.01 倍 であった.一方 SP 及び LU では,4 コアの SMP に対する. NCC の性能を比較すると,SP では 2.14 倍に対し 1.60 倍,. 4.2 評価に使用するアプリケーション 本ソフトウェアコヒーレンシ制御手法を適用するアプリ ケーションとして,SPEC95 ベンチマークより 179.art,. LU では 2.76 倍に対し 1.18 倍の速度向上率であり,NCC の SMP に対する性能低下が顕著に見られる.. 183.equake, SPEC2006 ベ ン チ マ ー ク よ り 456.hmmer,. 図 9 にソフトウェアキャッシュコヒーレンシ制御を構成. 470.lbm,NAS Parallel Benchmarks v3.0 より SP, CG, LU,. する要素ごとの性能に対する影響を示す.図 9 の横軸はア. MG, BT を用いた.いずれも Parallelizable C[9] に準拠し. プリケーション及びコア数を表し,縦軸は各コアの SMP. た逐次の C 言語で記述されたアプリケーションであり,. を 1 とした際の相対性能を表す.グラフのそれぞれの系列. OSCAR コンパイラによる自動並列化を適用し,SH C コン. は以下のとおりである.. パイラにより実行バイナリを生成した.一部のアプリケー. SMP 基準となる,MESI ハードウェアコヒーレンシ制. ションでは標準のデータセットではメインメモリに載り切. 御が有効でソフトウェアキャッシュコヒーレンシ制御. らないため,表 1 に示すとおり縮小したデータセットを使. を行わない際の性能.. Stale data handling ソフトウェアキャッシュコヒーレ. 用している.. ンシ制御のうち,Stale Data への対処のみ行うが,ハー 表 1 アプリケーションとデータサイズ. ドウェアコヒーレンシは有効化した際の性能.キャッ. Table 1 Applications and data size アプリケーション. シュ操作による影響を表す.. データサイズ. False sharing avoidance ソフトウェアキャッシュコ. SPEC95 art, equake, SPEC2006 hmmer. ref. ヒーレンシ制御のうち,False Sharing への対処のみ行. SPEC2006 lbm. 100 × 100 × 15. うが,ハードウェアコヒーレンシは有効化した際の性. NPB SP, CG, LU, MG, BT. CLASS S. 能.アライメント,キャッシュラインに沿ったループ 分割,及びデータレイアウト変換による影響を表す.. NCC (hardware coherence) ソフトウェアキャッシュ 4.3 並列処理性能 ハードウェアキャッシュコヒーレンシ制御が有効の場合. (SMP) 及びハードウェアキャッシュコヒーレンシが無効. コヒーレンシ制御を行い,かつハードウェアコヒーレ ンシ制御を有効化したままの状態の性能.コヒーレン シ制御による影響を表す.. でコンパイラによるソフトウェアキャッシュコヒーレンシ. NCC (software coherence) ソフトウェアキャッシュ. 制御を適用した場合 (NCC) において評価を行った際の並. コヒーレンシ制御を行い,ハードウェアコヒーレンシ. 列処理性能を図 8 に示す.図 8 の横軸はアプリケーション. 制御を無効化した際の性能.. 及びコア数を表し,縦軸は各アプリケーションの SMP1 コ. 図 9 において,art,equake,及び lbm では,4 コアでの. ア実行時の実行時間を 1 とした際の速度向上率を表してい. NCC (software coherence) と NCC (hardware coherence). る.グラフの系列は左が SMP,右が NCC の速度向上率を. を比較すると NCC(hardware coherence) が 4%から 14%の. 示している.. 性能向上がある.ハードウェアコヒーレンシ制御を無効化. 図 8 において,まず SMP4 コアと NCC8 コアの速度向. することによる性能への影響を与える要素として 2 つの. 上率を比較すると,評価に用いた 9 アプリケーションの平. 要因が挙げられる.1 つめの要因として,コア間でキャッ. 均で SMP4 コアが 1 コア性能の 2.80 倍に対し NCC8 コア. シュラインの授受がある際,ハードウェアコヒーレンシ制. ⓒ 2014 Information Processing Society of Japan. 5.

(26) Vol.2014-ARC-213 No.19 Vol.2014-HPC-147 No.19 2014/12/9. 情報処理学会研究報告 IPSJ SIG Technical Report. 6.00     5.31     4.91    . 速度向上率 . 5.00    . NCC  (SoIware  Coherence)  . 4.41    . 4.00     3.00    . SMP  (Hardware  Coherence)  . 4.76    . 3.47     3.01     2.66    . 1.76     2.00     1.57     1.10     1.00     1.00    . 3.47     3.35     2.65     2.54    . 1.46     1.39     1.07     1.00    . 1.92     1.89    . 3.33    . 3.30    . 2.88     2.78    . 2.76    . 2.36     2.14     2.20     1.91     1.94     1.93     1.88     1.80     1.73     1.65     1.60     1.52     1.07     1.27       1.05     1.18       1.05  1.23     1.03  1.27     1.00     1.00     1.00  1.00       1.00     1.00     0.73    . 1.90     1.77    . 1.07     1.00    . 3.50     3.43    . 3.28     2.90    . 1.06     1.00    . 0.00     1   2   4   8   1   2   4   8   1   2   4   8   1   2   4   8   1   2   4   8   1   2   4   8   1   2   4   8   1   2   4   8   1   2   4   8   art  . equake  . hmmer  . lbm  . 図 8. sp   cg   アプリケーション/コア数 . lu  . mg  . bt  . 提案ソフトウェアコヒーレンシ制御の性能. Fig. 8 Parallel performance on RP2. SMPを基準とした相対性能 . 1.20     1.10     1.00     0.90     0.80    . SMP  . 0.70    . NCC(soDware  coherence)  . 0.60    . NCC(hardware  coherence)  . 0.50    . stale  data  handling  . 0.40    . false  sharing  avoidance  . 0.30     1   2  . 4  . art  . 1   2  . 4  . equake  . 1   2  . 4  . hmmer  . 1   2  . 4  . lbm  . 1   2  . 4  . 1   2  . sp  . 4  . cg  . 1   2  . 4   lu  . 1   2  . 4  . mg  . 1   2  . 4  . bt  . アプリケーション/コア数 . 図 9 ソフトウェアキャッシュ制御による性能に対する影響. Fig. 9 Performance effects of software cache. 御下ではキャッシュ間転送を行うが,ソフトウェアキャッ. られる.art, equake, 及び lbm でハードウェアコヒーレン. シュコヒーレンシ制御ではメインメモリ経由でのキャッ. シ制御無効化により性能向上が得られたのは,(2) のよう. シュライン授受を行い,更にキャッシュ操作命令のオー. なコア間でキャッシュラインを共有しないデータアクセス. バーヘッドがある (1).2 つめの要因として,他のコアの. が支配的であるためである.. キャッシュに存在しないキャッシュラインのアクセスを行. 図 9 における LU と SP の 4 コアでの Stale data handling. う場合,ハードウェアコヒーレンシ制御下ではそのキャッ. と SMP を比較すると,Stale data handling は SMP と比. シュラインが他のコアに存在するか確認を行うバストラン. 較して SP で 30%,LU で 41%の性能低下を起こしており,. ザクションが発生するのに対し,ソフトウェアキャッシュ. Stale Data への対処が性能に悪影響を与えていることがわ. コヒーレンシ制御では他のコアのキャッシュラインの状. かる.これらのアプリケーションでは並列化階層が外側の. 態を確認する必要が無いため,その分性能向上に寄与する. ループにより繰り返し実行されるという制御構造を持って. (2).. おり,並列化対象の処理の粒度が小さいという特徴がある.. (1)(2) の要素が性能に影響を与える度合いはアプリケー. NCC では並列化階層において陳腐化したデータへの参照. ション内のデータアクセスの特性に応じて変化すると考え. の回避のためキャッシュ全体に対する操作を行っているの. ⓒ 2014 Information Processing Society of Japan. 6.

(27) 情報処理学会研究報告 IPSJ SIG Technical Report. Vol.2014-ARC-213 No.19 Vol.2014-HPC-147 No.19 2014/12/9. で,外側の繰り返しに存在するデータローカリティを有効 活用できなくなり性能低下が起きたと考えられる.外側の ループイタレーション間でのメモリアクセス範囲の解析結 果をキャッシュ操作に適用し,キャッシュ操作の範囲を限 定することで性能改善が見込まれる.. 5. おわりに 本稿では,自動並列化コンパイラによるソフトウェア キャッシュコヒーレンシ制御手法を OSCAR コンパイラ に実装し,ノンコヒーレントキャッシュアーキテクチャ RP2 上で評価を行った.本手法はソフトウェアに対し自 動で Stale Data 参照及び False Sharing の回避を行うため に,手動での困難なキャッシュコヒーレンシ制御のプログ ラミングを必要とせずノンコヒーレントキャッシュアーキ テクチャ上でハードウェアキャッシュコヒーレンシ制御 下と同等の動作を実現可能である.マルチコアプロセッサ RP2 上で評価を行った結果,9 アプリケーションで 4 コア のハードウェアコヒーレンシ制御使用時の性能は平均で 1 コア性能の 2.80 倍であったのに対し,ハードウェアコヒー レンシを使用せず本手法を適用した 4 コア実行時の性能は 平均で 1 コア性能の 2.61 倍となり,ほぼ同等の速度向上が 得られた.本手法の適用により,ノンコヒーレントキャッ シュアーキテクチャに対するソフトウェア開発コスト及び メニーコア開発時のハードウェアコストを削減可能であ り,今後のコンピューティング技術の発展に寄与するもの と考えられる. 参考文献 [1]. [2]. [3]. [4]. [5] [6]. [7]. [8]. [9]. 坪井芳朗,太田裕,山下高廣:東芝の次世代 SoC「Venezia」, ホモジニアス・マルチコアを採用,日経エレクトロニクス, No. 981, pp. 105–118 (2008). Howard, J. et al.: A 48-Core IA-32 message-passing processor with DVFS in 45nm CMOS, Solid-State Circuits Conference Digest of Technical Papers (ISSCC), 2010 IEEE International, pp. 108 –109 (2010). Johnson, D., Johnson, M., Kelm, J., Tuohy, W., Lumetta, S. and Patel, S.: Rigel: A 1,024-Core Single-Chip Accelerator Architecture, Micro, IEEE, Vol. 31, No. 4, pp. 30 –41 (2011). Hennessy, J. L. and Patterson, D. A.: Computer Architecture: A Quantitative Approach 5th edition, p. 112, Elsevier (2012). 笠原博徳:最先端の自動並列化コンパイラ技術,情報処理, Vol. 44, No. 4, pp. 384–392 (2003). Ito, M., Hattori, T., Yoshida, Y., Hayase, K., Hayashi, T., Nishii, O., Yasu, Y., Hasegawa, A., Takada, M., Ito, M., Mizuno, H., Uchiyama, K., Odaka, T., Shirako, J., Mase, M., Kimura, K. and Kasahara, H.: An 8640 MIPS SoC with independent power-off control of 8 CPUs and 8 RAMs by an automatic parallelizing compiler, Digest of Technical Papers - IEEE International Solid-State Circuits Conference, Vol. 51, pp. 90–92 (2008). 本多弘樹,岩田雅彦,笠原博徳:Fortran プログラム粗粒 度タスク間の並列性検出手法,電子情報通信学会論文誌 (1990). 小幡元樹,白子準,神長浩気,石坂一久,笠原博徳:マル チグレイン並列処理のための階層的並列性制御手法,情報 処理学会論文誌,Vol. 44, No. 4, pp. 1044–1055 (2003). 間瀬 正啓,木村 啓二,笠原博徳:マルチコアにおける Parallelizable C プログラムの自動並列化,情報処理学会 研究報告. 計算機アーキテクチャ研究会報告, Vol. 2009, No. 15, pp. 1–10 (2009).. ⓒ 2014 Information Processing Society of Japan. 7.

(28)

図 1 ノンコヒーレントキャッシュアーキテクチャ Fig. 1 Non-coherent cache architecture
図 2 階層的タスク並列処理の実行モデル Fig. 2 Data layout transformation
Fig. 7 RP2: 8-core multicore processor with cache coherence up to 4 core
図 7 に評価環境である RP2 のブロック図を示す. RP2 は 1 チップ上に SH-4A コアを 8 コア搭載したホモジニア スマルチコアであり,各プロセッサコアは 16KByte のデー タキャッシュを持ち,キャッシュラインサイズは 32Byte である.ハードウェアによるキャッシュコヒーレンシは 4 コアで構成されたクラスタ内で保証され, MESI プロトコ ルが採用されている.クラスタ間では明示的にキャッシュ コヒーレンシ制御を行う必要がある.また,クラスタ内の ハードウェアキャッシュコヒーレン
+2

参照

関連したドキュメント

糸速度が急激に変化するフィリング巻にお いて,制御張力がどのような影響を受けるかを

算処理の効率化のliM点において従来よりも優れたモデリング手法について提案した.lMil9f

で得られたものである。第5章の結果は E £vÞG+ÞH 、 第6章の結果は E £ÉH による。また、 ,7°²­›Ç›¦ には熱核の

LLVM から Haskell への変換は、各 LLVM 命令をそれと 同等な処理を行う Haskell のプログラムに変換することに より、実現される。

[r]

よう素による甲状腺等価線量評価結果 核種 よう素 対象 放出後の72時間積算値 避難 なし...

まとめ資料変更箇所リスト 資料名 :設計基準対象施設について 章/項番号:第14条 全交流動力電源喪失対策設備

行列の標準形に関する研究は、既に多数発表されているが、行列の標準形と標準形への変 換行列の構成的算法に関しては、 Jordan