ヘテロジニアスマルチコアプロセッサ 環境を対象としたキャッシュシステム 自動生成ツールの開発

Slides:



Advertisements
Similar presentations
HBSP モデル上での 行列積を求めるアルゴリ ム 情報論理工学 吉岡健太.
Advertisements

OWL-Sを用いたWebアプリケーションの検査と生成
MPIを用いたグラフの並列計算 情報論理工学研究室 藤本 涼一.
情報理工学系研究科 コンピュータ科学専攻 上嶋裕樹
07. 値予測 五島 正裕.
キャッシュ付PRAM上の 並列クィックソートと 並列マージソート
07. 値予測 五島 正裕.
Chapter11-4(前半) 加藤健.
セキュリティ機構のオフロードを考慮した仮想マシンへの動的メモリ割当
Flashプレイヤーを使った動画配信 情報工学科 宮本 崇也.
Xenを用いたクラウドコンピュー ティングにおける情報漏洩の防止
計算機システムⅡ 主記憶装置とALU,レジスタの制御
仮想マシンの並列処理性能に対するCPU割り当ての影響の評価
第1章 計算基盤としてのFPGA 滝本 宗宏.
ゴールドバッハ予想と その類似について 5509046 嶋田 翔太 白柳研究室.
大きな仮想マシンの 複数ホストへのマイグレーション
高性能コンピューティング論2 第1回 ガイダンス
第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理
CSP記述によるモデル設計と ツールによる検証
画像処理ボード上での 高速テンプレートマッチングの 実装と検証
高山建志 五十嵐健夫 テクスチャ合成の新たな応用と展開 k 情報処理 vol.53 No.6 June 2012 pp
演算/メモリ性能バランスを考慮した マルチコア向けオンチップメモリ貸与法
第7回 2006/6/12.
変更文の移動を可能にした 静的単一代入形式上の部分冗長性除去
アスペクト指向プログラミングを用いたIDSオフロード
IPv6アドレスによる RFIDシステム利用方式
サーバ負荷分散におけるOpenFlowを用いた省電力法
MPIによる行列積計算 情報論理工学研究室 渡邉伊織 情報論理工学研究室 渡邉伊織です。
Occam言語による マルチプリエンプティブシステムの 実装と検証
OpenMPハードウェア動作合成システムの検証(Ⅰ)
高速剰余算アルゴリズムとそのハードウェア実装についての研究
MPIを用いた最適な分散処理 情報論理工学研究室 角 仁志
非レイテンシ指向 レジスタ・キャッシュ・システム
マイコンによるLEDの点灯制御 T22R003 川原 岳斗.
リモートホストの異常を検知するための GPUとの直接通信機構
実行時情報に基づく OSカーネルのコンフィグ最小化
HPC基盤における大量データ転送のためのデータ転送ツールの評価
Advanced Computer Architecture
巡回冗長検査CRC32の ハード/ソフト最適分割の検討
Advanced Computer Architecture
オペレーティングシステムJ/K (仮想記憶管理)
「コアの数なんて どうでもいい」 五島 正裕(東大).
通信機構合わせた最適化をおこなう並列化ンパイラ
メモリ投機を支援する CMPキャッシュコヒーレンスプロトコルの検討
未使用メモリに着目した 複数ホストにまたがる 仮想マシンの高速化
サービス指向ルータ向け 問合せ処理用ハードウェアの検討
背景 課題 目的 手法 作業 期待 成果 有限体積法による汎用CFDにおける 流体構造連成解析ソルバーの計算効率の検証
信頼できないクラウドにおける仮想化システムの監視機構
VMが利用可能なCPU数の変化に対応した 並列アプリケーション実行の最適化
Virtualizing a Multiprocessor Machine on a Network of Computers
Ibaraki Univ. Dept of Electrical & Electronic Eng.
コンピュータアーキテクチャ 第 9 回.
オブジェクトの協調動作を用いた オブジェクト指向プログラム実行履歴分割手法
設計情報の再利用を目的とした UML図の自動推薦ツール
「マイグレーションを支援する分散集合オブジェクト」
コンピュータアーキテクチャ 第 5 回.
パイプラインとは何か? マイクロプロセッサ(MPU)の高速化手法の一つのこと。
Cソースコード解析による ハード/ソフト最適分割システムの構築
理工学部情報学科 情報論理工学研究室 延山 周平
第4回 CPUの役割と仕組み2 命令の解析と実行、クロック、レジスタ
プロセッサ設計支援ツールを用いた 独自プロセッサの設計
コンピュータアーキテクチャ 第 9 回.
コンピュータアーキテクチャ 第 5 回.
MPIを用いた並列処理計算 情報論理工学研究室 金久 英之
MPIを用いた 並列処理 情報論理工学研究室 06‐1‐037‐0246 杉所 拓也.
アーキテクチャパラメータを利用した並列GCの性能予測
並列処理プロセッサへの 実数演算機構の開発
ベイジアンネットワークと クラスタリング手法を用いたWeb障害検知システムの開発
情報システム基盤学基礎1 コンピュータアーキテクチャ編
Presentation transcript:

ヘテロジニアスマルチコアプロセッサ 環境を対象としたキャッシュシステム 自動生成ツールの開発 計算機アーキテクチャ研究室 409812  岡本 昂樹

研究背景 ヘテロジニアスマルチコアとは? 設計・検証の時間膨大 ・1つのチップに異なる種類のコア ・要求にあわせコアを動作, 高性能・省電力の両立 設計・検証の時間膨大 最適! 不足! 近年、1つのチップに同じ種類のコアをのせたホモジニアスマルチコアから 構成の異なるプロセッサコアを複数個用いるヘテロジニアスマルチコアプロセッサの研究が注目を集めています 例えば、図のような特徴の異なるアプリケーションを実行する際、従来のホモジニアスマルチコアの場合(Click)(Click) アプリケーションに対してリソースが過剰になったり不足したりしてしまいます ヘテロジニアスマルチコアの場合、(Click)(Click)特徴の異なるアプリケーションに対して、それぞれ適切なコアを割り当てる事で計算性能の向上や消費電力の低減に大きく貢献します しかし、(Click)ヘテロジニアスマルチコアプロセッサを設計・検証するには、膨大な時間がかかってしまい、研究する上で大きな障害となっています(Click) 最適! 過剰! アプリケーション ヘテロジニアスマルチコア ホモジニアスマルチコア 2

FabHetero FabScalar 本研究の提案部分 FabCache FabBus Shared Memory Core0 Core1 Inst Cache Data L1-I L1-D L2 L2-I L2-D 本研究の提案部分 FabCache SnoopBus DataBus そこで、当研究室では、ノースカロライナ州立大学で提案されている、様々な構成のスーパースカラコアを自動生成するツールセットFabScalarを用いて、(Click) それに付随するキャッシュシステムを自動生成するツールFabCache(Click) 共有バスシステムを自動生成するツールFabBus(Click)を新たに提案・開発し、それらを組み合わせ、ヘテロジニアスマルチコアを自動生成するツールFabHeteroを提案しています 本研究では、FabHeteroのフレームワーク上の様々な構成のキャッシュシステムを自動生成するツールであるFabCache(Click)の提案と実装を行います FabBus Shared Memory 3

L3 cache(Shared Memory) FabCache core0 core1 Core2 Core3 命令フェッチ幅の変更 アクセス レイテンシ増減 L1-I Cache L1-D cache L1-I Cache L1-D cache L1-I Cache L1-D cache L2 L2-I Cache L2-D cache 一貫性 ヘテロジニアスマルチコアではシステムを構成する個々のプロセッサコアの特徴によって最適なキャッシュ構成が異なります さらに、様々なパラメータ、例えばL1命令キャッシュの命令フェッチ幅を変更したり(Click)、L2キャッシュの一貫性を保つアルゴリズムを変更したり(Click) L2キャッシュへのアクセスレイテンシを変更したりなど(Click) 最適なキャッシュ構成を手動で設計・評価するのは組み合わせの膨大さから非常に困難です そこで、この問題を解決するためにヘテロジニアスマルチコアプロセッサ用のキャッシュシステムを自動生成するFabCacheを提案しました 本研究では主にFabCacheのL1命令キャッシュを実装を行いました(Click) また、このFabCacheは、キャッシュシステムを自動生成するという点で、従来にはないキャッシュジェネレータとなっています L3 cache(Shared Memory) 4

L3 cache(Shared Memory) FabCache core0 core1 Core2 Core3 命令フェッチ幅の変更 アクセス レイテンシ増減 従来にはないキャッシュ ジェネレーターの提案 L1-I Cache L1-D cache L1-I Cache L1-D cache L1-I Cache L1-D cache L2 L2-I Cache L2-D cache 一貫性 L3 cache(Shared Memory) 4

L3 cache(Shared Memory) FabCache Core FabCacheParam `define SIZE_ICACHE 1024 `define SIZE_DCACHE 1024 `define L2LATENCY 1 ・ L1-I Cache L1-D cache L2 Cache 具体的にFabCacheを用いた任意のキャッシュシステムを生成する図を示します ユーザーは図に示したようなパラメータファイルの数字を変更するだけで、任意のキャッシュシステムが自動生成することができます L3 cache(Shared Memory) 5

Core スーパースカラ命令フェッチ概念図 命令Cache 命令1 命令2 命令3 命令8 `FETCH_WIDTH 3 8 2 要求 ・ ここで、今回FabCacheを実装する上での問題点とその対応を示します スーパースカラの場合、通常のプロセッサとは異なり、一度の要求で複数の命令をプロセッサ側に返します この為、通常のキャッシュで実装してしまうと問題があるため、キャッシュをインターリーブドメモリとして実装する事を提案し対応しました また、これを実装するにあたり、正しく効果がある事を確認する為、手動で設計したキャッシュを用いて予備実験を行った所 要求された性能を満たしている事が確認できました 命令3 ・ 命令8 6

FabScalarのクロックサイクル8.81ns スーパースカラ命令フェッチ概念図 Core 要求 命令Cache インターリーブドメモリで実現 命令1 命令2 `FETCH_WIDTH FabScalarのクロックサイクル8.81ns 今回実装のキャッシュの遅延5.23ns 8 命令3 ・ 命令8 6

インターリーブドメモリ 1Cycle 命令の1サイクルフェッチを想定 Line0 Line2 Line4 Line6 Line1 Line3 a b c d i j k l    ・ a b c d i j k l    ・ c d e f 1Cycle Even Bank Line1 Line3 Line5 Line7 FabScalarでは性能向上の為に、任意の場所から連続した命令を1サイクルでフェッチする事を想定しています しかし、通常のキャッシュでは、キャッシュラインをまたいだアクセスが発生した時に1サイクルでフェッチを完了することができません そこで、本研究では、キャッシュをインターリーブドメモリとして構成することを提案し、任意の連続した命令を1サイクルでフェッチする事を可能にしました 図では2バンクのインターリーブドメモリを示しています 偶数バンクには偶数番地のラインが、奇数バンクには奇数番地のラインがそれぞれ格納されています このようにデータを格納することで、c,d,e,fのようなキャッシュラインを跨いだアクセスが発生した場合にも(Click)、偶数バンクからc,dを、奇数バンクからe,fを同時に読み出すことで(Click) 任意の連続した命令を全て1サイクルで揃えることを可能としました e f g h m n o p    ・ e f g h m n o p    ・ Req: c d e f Odd Bank 7

インターリーブドメモリ 1サイクルフェッチが可能 1Cycle 命令の1サイクルフェッチを想定 Line0 Line2 Line4 a b c d i j k l    ・ a b c d i j k l    ・ 1サイクルフェッチが可能 c d e f 1Cycle Even Bank Line1 Line3 Line5 Line7 FabScalarでは性能向上の為に、任意の場所から連続した命令を1サイクルでフェッチする事を想定しています しかし、通常のキャッシュでは、キャッシュラインをまたいだアクセスが発生した時に1サイクルでフェッチを完了することができません そこで、本研究では、キャッシュをインターリーブドメモリとして構成することを提案し、任意の連続した命令を1サイクルでフェッチする事を可能にしました 図では2バンクのインターリーブドメモリを示しています 偶数バンクには偶数番地のラインが、奇数バンクには奇数番地のラインがそれぞれ格納されています このようにデータを格納することで、c,d,e,fのようなキャッシュラインを跨いだアクセスが発生した場合にも(Click)、偶数バンクからc,dを、奇数バンクからe,fを同時に読み出すことで(Click) 任意の連続した命令を全て1サイクルで揃えることを可能としました e f g h m n o p    ・ e f g h m n o p    ・ Req: c d e f Odd Bank 7

評価結果1/2 FabCacheが生成したキャッシュが正しく動作していることを検証する為に、フェッチ幅、キャッシュサイズを変更してSPEC2000INTから6つのベンチマークを実行しました フェッチ幅を1,2,4,8と変更したときの、1サイクルあたりの命令コミット数IPCをそれぞれグラフに示しました この結果を見て、キャッシュサイズを増加させるにつれてIPCも増加し、また大容量のキャッシュでは100%ヒットする理想的なキャッシュと遜色のない性能となっており正しく実装できていることが 確認できました(Click) 8

評価結果2/2 ・手動で設計したL1命令キャッシュとの面積・遅延を比較 ⇒それぞれL1命令キャッシュのみ論理合成 ⇒SRAMの容量は4KBに設定 生成方法 面積 遅延 FabCache 819,209μm² 2.27ns 手設計 818,590μm² 2.43ns また、FabCacheによって生成された回路が、手動で設計した回路と遜色がない事を示す為、FabCacheで生成したキャッシュと、手動で設計したキャッシュの面積を比較しました それぞれL1命令キャッシュのみ論理合成し、面積を出し、それに容量を4KBに設定したSRAMの面積を加算し評価したところ 表のような結果となり、(Click)同程度のハードウェア規模の回路が生成されている事から、実装の妥当性も確認できました(Click) 同程度のハードウェア規模を実現 9

・柔軟なキャッシュシステム自動生成ツール  まとめ  ・柔軟なキャッシュシステム自動生成ツール FabCacheの実装が出来た ⇒評価結果1から 正しく動作していることが実証できた ⇒評価結果2から 妥当な規模のハードウェアが生成されている事が実証できた     今後   まとめとして、(Click)評価結果から生成された回路は正しく動作し、手設計した回路と比較して遜色のない回路が生成されていることが確認できました (Click)今後の課題として、L1データキャッシュおよびL2キャッシュの機能実装を行い、より柔軟なキャッシュを自動生成できるシステムを構築していくことを目標としています   L1データキャッシュ   L2 キャッシュ         実装 10

データA データC データE データG データI データB データD データF データH データJ 奇数バンク データA データC データE データG データI データB データD データF データH データJ 偶数バンク プロセッサ

インタリーブキャッシュ FabScalarではキャッシュラインを跨いだ命令フェッチができる。よって性能向上のためにキャッシュメモリをインタリーブアクセス可にするために実装

FAB CACHEの仕様 可変になっている部分 可変域 命令のフェッチ幅 キャッシュサイズ L2キャッシュへのアクセスレイテンシ 連想度 ライン長 L1・L2間での受け渡しデータサイズ SRAMへのアクセスレイテンシ 1~8命令 2^n KB N Cycle N Way N Word N Byte

バンクメモリ メモリーを複数のバンクに分ける。そこに連続したメモリーアドレスを割り当てる事で、並列処理によって同時にアクセスし高速化する  メモリーを複数のバンクに分ける。そこに連続したメモリーアドレスを割り当てる事で、並列処理によって同時にアクセスし高速化する 0: a b c d 1: e f g h 2: i j k l 3: m n o p 4: ・ 5:  ・ 6: ・ 7: ・ 同時にアクセス可! Memory 0: a b c d 2: i j k l 4:  ・ 6:  ・ 0: a b c d 2: i j k l 4:  ・ 6:  ・ 1: e f g h 3: m n o p 5:  ・ 7:  ・ 1: e f g h 3: m n o p 5:  ・ 7:  ・ Even Odd 5

評価結果1/2 キャッシュサイズを変えて動かしたとき、大きいほどきちんと性能が向上しているか(きちんと動作しているか) SAMPLE 7

インターリーブドメモリ2/2 Line0 Line1 Line2 Line3 Line4 Line5 Line6 Line7 a b c d e f g h i j k l m n o p ・   ・ a b c d e f g h 同時にアクセス可! 0: a b c d 2: i j k l 4:  ・ 6:  ・ 0: a b c d 2: i j k l 4:  ・ 6:  ・ 1: e f g h 3: m n o p 5:  ・ 7:  ・ 1: e f g h 3: m n o p 5:  ・ 7:  ・ Even Bank Odd Bank Normal Memory

FabScalarでは性能向上の為、任意の場所から連続した命令を 通常キャッシュの問題点 FabScalarでは性能向上の為、任意の場所から連続した命令を 1サイクルでフェッチする事を想定! Req: c d e f Line0 Line1 Line2 Line3 Line4 Line5 Line6 Line7 a b c d e f g h i j k l m n o p ・   ・ a b c d 1Cycle e f g h 2Cycleかかってしまう! c d 2Cycle e f c d e f Normal Memory 5