cellプロセッサ向け実行環境sacsis.hpcc.jp/2006/include/sacsis2006-web-tutorial-cell.pdf ·...

27
2006/05/24 Copyright © 2006 Sony Computer Entertainment Inc. All Rights Reserved. Cellプロセッサ向け実行環境 SPU Centric Execution Model (株)ソニー・コンピュータエンタテイメント 井上敬介 [email protected] http://cell.scei.co.jp/

Upload: others

Post on 25-May-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Cellプロセッサ向け実行環境sacsis.hpcc.jp/2006/include/sacsis2006-web-tutorial-cell.pdf · 2006-10-06 · さらにspuの利用効率を上げる 規模が大きいと統合が発生

2006/05/24Copyright © 2006 Sony Computer Entertainment Inc. All Rights Reserved.

Cellプロセッサ向け実行環境SPU Centric Execution Model

(株)ソニー・コンピュータエンタテイメント井上敬介

[email protected]://cell.scei.co.jp/

Page 2: Cellプロセッサ向け実行環境sacsis.hpcc.jp/2006/include/sacsis2006-web-tutorial-cell.pdf · 2006-10-06 · さらにspuの利用効率を上げる 規模が大きいと統合が発生

Copyright © 2006 Sony Computer Entertainment Inc. All Rights Reserved. 2006/05/24

FAQ Cellの環境はいつ手に入りますか?

今すぐダウンロード

各種日本語ドキュメント

Linux on Cell (SPE実行環境)

SPUコンパイラ(gcc、xlc)フルシステムシミュレータ

各社の製品は各社にご確認ください

Page 3: Cellプロセッサ向け実行環境sacsis.hpcc.jp/2006/include/sacsis2006-web-tutorial-cell.pdf · 2006-10-06 · さらにspuの利用効率を上げる 規模が大きいと統合が発生

Copyright © 2006 Sony Computer Entertainment Inc. All Rights Reserved. 2006/05/24

http://cell.scei.co.jp/

Page 4: Cellプロセッサ向け実行環境sacsis.hpcc.jp/2006/include/sacsis2006-web-tutorial-cell.pdf · 2006-10-06 · さらにspuの利用効率を上げる 規模が大きいと統合が発生

Copyright © 2006 Sony Computer Entertainment Inc. All Rights Reserved. 2006/05/24

学生さんも安心の日本語ドキュメント!

Page 5: Cellプロセッサ向け実行環境sacsis.hpcc.jp/2006/include/sacsis2006-web-tutorial-cell.pdf · 2006-10-06 · さらにspuの利用効率を上げる 規模が大きいと統合が発生

Copyright © 2006 Sony Computer Entertainment Inc. All Rights Reserved. 2006/05/24

内容

Cell Broadband Engineの概要

SPU Runtime Systemのコンセプト

並列実行モデル その1並列実行モデル その2実行モデル間での効果的なSPUの共有

Page 6: Cellプロセッサ向け実行環境sacsis.hpcc.jp/2006/include/sacsis2006-web-tutorial-cell.pdf · 2006-10-06 · さらにspuの利用効率を上げる 規模が大きいと統合が発生

Copyright © 2006 Sony Computer Entertainment Inc. All Rights Reserved. 2006/05/24

Cell Broadband Engineのブロック図

SPU

256KBMFCDMACMMU

PPU

L1$

MFCL2$

MMU

SPE

PPE

EIB

SPU

256KBMFCDMACMMU

SPESPU

256KBMFCDMACMMU

SPESPU

256KBMFCDMACMMU

SPESPU

256KBMFCDMACMMU

SPESPU

256KBMFCDMACMMU

SPESPU

256KBMFCDMACMMU

SPESPU

256KBMFCDMACMMU

SPE

MIC

XDR

BEI

Page 7: Cellプロセッサ向け実行環境sacsis.hpcc.jp/2006/include/sacsis2006-web-tutorial-cell.pdf · 2006-10-06 · さらにspuの利用効率を上げる 規模が大きいと統合が発生

Copyright © 2006 Sony Computer Entertainment Inc. All Rights Reserved. 2006/05/24

Cell Broadband Engineの並列処理的側面

ヘテロジニアスなチップマルチプロセッサSPE視点ならシンメトリック

キャッシュコヒーレンシPPEのキャッシュ

SPEのアトミックキャッシュ(同期用)

SPEのDMA SPE

PPE

SPE SPE SPE SPE SPE SPE SPE

Page 8: Cellプロセッサ向け実行環境sacsis.hpcc.jp/2006/include/sacsis2006-web-tutorial-cell.pdf · 2006-10-06 · さらにspuの利用効率を上げる 規模が大きいと統合が発生

Copyright © 2006 Sony Computer Entertainment Inc. All Rights Reserved. 2006/05/24

SPEの概要

SPU - Synergistic Processing Unitシンプルな構造の普通のプロセッサ

シンプルで静的な振る舞い

動作の予測が容易

128本の128ビットレジスタファイル

ほとんどSIMD命令

256KBローカルストレージ(LS)L1キャッシュ相当のスピード

固定レイテンシ

コードとデータで共用

MFC - Memory Flow ControllerDMAコントローラ

Memory Management Unit

SPU

256KB

MFC

DMAC

MMU

SPE

Page 9: Cellプロセッサ向け実行環境sacsis.hpcc.jp/2006/include/sacsis2006-web-tutorial-cell.pdf · 2006-10-06 · さらにspuの利用効率を上げる 規模が大きいと統合が発生

Copyright © 2006 Sony Computer Entertainment Inc. All Rights Reserved. 2006/05/24

SPE

SPEの並列処理的側面

SPUとMFCは別プロセッシングユニット?メッセージパッシング

SPU⇔MFCはチャネルインタフェースを通して通信

リクエスト→ステータスリード(ブロッキング、ノンブロッキング)

LS⇔MFCは別パス

お互いに独立動作 SPU

256KB

MFCDMACMMU

チャネル

Page 10: Cellプロセッサ向け実行環境sacsis.hpcc.jp/2006/include/sacsis2006-web-tutorial-cell.pdf · 2006-10-06 · さらにspuの利用効率を上げる 規模が大きいと統合が発生

Copyright © 2006 Sony Computer Entertainment Inc. All Rights Reserved. 2006/05/24

Cellの性能を存分に生かすには?

当然SPEを効率よく使い切る

あらゆるレベルで並列処理Processing ElementXDR⇔LS転送と計算

LS⇔レジスタ転送と計算

Dual IssueSIMD

SPE

PPE

SPE SPE SPE SPE SPE SPE SPE

ここが勝負

Page 11: Cellプロセッサ向け実行環境sacsis.hpcc.jp/2006/include/sacsis2006-web-tutorial-cell.pdf · 2006-10-06 · さらにspuの利用効率を上げる 規模が大きいと統合が発生

Copyright © 2006 Sony Computer Entertainment Inc. All Rights Reserved. 2006/05/24

SPEを効率よく使い切るには?

高い独立性でSPUを実行

Do not stop SPUs!Do not disturb SPUs!同期は最小限に

排他(mutex)の利用は計画的に

プリエンプションの発生する環境で危険

Think about SMP (SPE centric Multi-Processing)

Page 12: Cellプロセッサ向け実行環境sacsis.hpcc.jp/2006/include/sacsis2006-web-tutorial-cell.pdf · 2006-10-06 · さらにspuの利用効率を上げる 規模が大きいと統合が発生

Copyright © 2006 Sony Computer Entertainment Inc. All Rights Reserved. 2006/05/24

Pitfalls

OSによって仮想化されたSPEでmulti-threadingサービスコールはリモートPPUコール

SPUに特権モードはない

ブロッキングコールだとSPEは待ちぼうけ

SPEのプリエンプションコストは安くない参考文献:Cell Broadband Engine Architecture

PPU centric multi-processingSPUから使いづらいデータ構造になりがち

SPUをコプロセッサとして使いがち密結合でないコプロセッサは通信コストで負ける

SPUへ関数オフロードしがち判断基準がSPU向きの処理かどうかではアムダールの法則により効果薄

Page 13: Cellプロセッサ向け実行環境sacsis.hpcc.jp/2006/include/sacsis2006-web-tutorial-cell.pdf · 2006-10-06 · さらにspuの利用効率を上げる 規模が大きいと統合が発生

Copyright © 2006 Sony Computer Entertainment Inc. All Rights Reserved. 2006/05/24

Philosophy of SPURS

与えられたSPUを効率よく利用

PPUに依存せずにSPUコードを選択/実行

機能は効率重視で割り切るMFCのコンテキストは保存せずDMA完了を待つ

協調的プリエンプション

PPUはサービスコプロセッサ

KISS (Keep It Simple and Static behavior)

Page 14: Cellプロセッサ向け実行環境sacsis.hpcc.jp/2006/include/sacsis2006-web-tutorial-cell.pdf · 2006-10-06 · さらにspuの利用効率を上げる 規模が大きいと統合が発生

Copyright © 2006 Sony Computer Entertainment Inc. All Rights Reserved. 2006/05/24

Program

TaskTask Task

TaskTask

TaskTask

Task

PPU thread

PPU thread

アプリケーションを複数SPUで実行その1

プログラムを複数の小さなタスクに分割

通信ライブラリを用いてタスク間を依存関係で結合

LS常駐のカーネルは実行可能なタスクを選んで実

Page 15: Cellプロセッサ向け実行環境sacsis.hpcc.jp/2006/include/sacsis2006-web-tutorial-cell.pdf · 2006-10-06 · さらにspuの利用効率を上げる 規模が大きいと統合が発生

Copyright © 2006 Sony Computer Entertainment Inc. All Rights Reserved. 2006/05/24

SPURSタスク実行モデル

task

kernelSPU

kernelSPU

kernelSPU

kernelSPU

ready tasks waiting tasks

task

task tasksendSignal

task

•Semaphore•Barrier•Data queue•Event flag

PPU thread

PPU thread

SPU centric is not SPU only

Lock free design communicationlibraries

Page 16: Cellプロセッサ向け実行環境sacsis.hpcc.jp/2006/include/sacsis2006-web-tutorial-cell.pdf · 2006-10-06 · さらにspuの利用効率を上げる 規模が大きいと統合が発生

Copyright © 2006 Sony Computer Entertainment Inc. All Rights Reserved. 2006/05/24

SPURSタスクの状態遷移図

nonexistent

readyw/o context

running waiting

wait signal(blocked)

readyw/context

(dispatch)yield

exit

create task

send signal

Page 17: Cellプロセッサ向け実行環境sacsis.hpcc.jp/2006/include/sacsis2006-web-tutorial-cell.pdf · 2006-10-06 · さらにspuの利用効率を上げる 規模が大きいと統合が発生

Copyright © 2006 Sony Computer Entertainment Inc. All Rights Reserved. 2006/05/24

タスクのLSコンテキストサイズは任意

heap

.bss

.data

.text, .rodata

kernel

stack

Full context

heap

.bss

.data

.text, .rodata

kernel

stack

Partial context

heap

.bss

.data

.text, .rodata

kernel

stack

No context

Page 18: Cellプロセッサ向け実行環境sacsis.hpcc.jp/2006/include/sacsis2006-web-tutorial-cell.pdf · 2006-10-06 · さらにspuの利用効率を上げる 規模が大きいと統合が発生

Copyright © 2006 Sony Computer Entertainment Inc. All Rights Reserved. 2006/05/24

SPURSタスク実行モデルのまとめ

Non preemptive multi-SPU multi-tasking固定メモリレイアウト

ユーザメモリエリアはLSの95%以上

ロックフリーデザインPPUスレッドもSPURSタスクと協調動作可能

協調動作中のPPUスレッドがプリエンプトされてもSPU側

は動作し続ける

軽い動作の同期・通信ライブラリPPUスレッドをブロックする以外にシステムコールは呼ば

ない

Page 19: Cellプロセッサ向け実行環境sacsis.hpcc.jp/2006/include/sacsis2006-web-tutorial-cell.pdf · 2006-10-06 · さらにspuの利用効率を上げる 規模が大きいと統合が発生

Copyright © 2006 Sony Computer Entertainment Inc. All Rights Reserved. 2006/05/24

アプリケーションを複数SPUで実行その2

1. プログラムとデータを小さいジョブに分割

2. ジョブを並べる(Job Chain)3. LS常駐のカーネルはジョブリストからジョブを取っ

てきて実行

ProgramandData

JobJob

Job

JobJob

Job

Job

JobJobJob

JobJob

JobJob

Job Job

Job Chain

Page 20: Cellプロセッサ向け実行環境sacsis.hpcc.jp/2006/include/sacsis2006-web-tutorial-cell.pdf · 2006-10-06 · さらにspuの利用効率を上げる 規模が大きいと統合が発生

Copyright © 2006 Sony Computer Entertainment Inc. All Rights Reserved. 2006/05/24

SPURSジョブ実行モデル

4 stage pipelineIn order job fetch DMAOut of order input DMAOut of order executionOut of order output DMA

kernelSPU

jobjobjob

kernelSPU

jobjobjob

jobkernelSPU

jobjobjob

jobkernelSPU

jobjobjob

Job Chain

fetch input exec outputF I E O

F I E OF I E

Page 21: Cellプロセッサ向け実行環境sacsis.hpcc.jp/2006/include/sacsis2006-web-tutorial-cell.pdf · 2006-10-06 · さらにspuの利用効率を上げる 規模が大きいと統合が発生

Copyright © 2006 Sony Computer Entertainment Inc. All Rights Reserved. 2006/05/24

SPURSジョブチェイン

CALL

NEXT

RET

END

JobSYNC

Job List

JobDefinition

JobBinary Input

JobDefinition

JobDefinition

JobDefinition

Cmd List

Page 22: Cellプロセッサ向け実行環境sacsis.hpcc.jp/2006/include/sacsis2006-web-tutorial-cell.pdf · 2006-10-06 · さらにspuの利用効率を上げる 規模が大きいと統合が発生

Copyright © 2006 Sony Computer Entertainment Inc. All Rights Reserved. 2006/05/24

SPURSジョブ実行モデルのまとめ

Multi SPU executionジョブチェインは複数のカーネルから共有される

ジョブはSPE上で4ステージパイプライン実行ジョブとDMAも並列実行

柔軟なメモリ管理(mallocは未使用)ジョブはほぼ全メモリの使用も可能

パイプラインストールが発生

バイナリやroデータをキャッシュ可能

優先ジョブコマンド(Urgent Job)ジョブチェイン、ジョブリストは再利用可能

Page 23: Cellプロセッサ向け実行環境sacsis.hpcc.jp/2006/include/sacsis2006-web-tutorial-cell.pdf · 2006-10-06 · さらにspuの利用効率を上げる 規模が大きいと統合が発生

Copyright © 2006 Sony Computer Entertainment Inc. All Rights Reserved. 2006/05/24

さらにSPUの利用効率を上げる

規模が大きいと統合が発生両方の実行モデルが同時に必要

タスク:固定デザインやコード中心のプログラムスタイル

ジョブ:データ志向での柔軟なプログラム構成

ミドルウェアや社内共通プログラムの使用

統合は利用効率問題につながるSPUを機能割りしたくない

仮想化したSPUのスイッチバック回数とオーバヘッド

Integrator’s controlabilityIntegrator's control

No virtualization!No unpredictable behavior!

Page 24: Cellプロセッサ向け実行環境sacsis.hpcc.jp/2006/include/sacsis2006-web-tutorial-cell.pdf · 2006-10-06 · さらにspuの利用効率を上げる 規模が大きいと統合が発生

Copyright © 2006 Sony Computer Entertainment Inc. All Rights Reserved. 2006/05/24

SPURS Minimum Integration Platform

Full control of scheduling to integratorMatrix style priority

Small footprintless than 1% of Local Storage

Non virtualized static behaviorNon-preemptive

Inter-workload balancingNext chart

Page 25: Cellプロセッサ向け実行環境sacsis.hpcc.jp/2006/include/sacsis2006-web-tutorial-cell.pdf · 2006-10-06 · さらにspuの利用効率を上げる 規模が大きいと統合が発生

Copyright © 2006 Sony Computer Entertainment Inc. All Rights Reserved. 2006/05/24

Shared m

emory

Virtual S

PU

groupSPU Runtime System Overview

kernel kernel kernel kerneltm tm

kernel

module

kerneljm

task task

job modulejob module

Graphicsjob chainGraphicsjob chain

Audiojob chain

Audiojob chain

task moduletask module

PhysicstasksetPhysicstaskset

jm

A.I.taskset

A.I.taskset

ControltasksetControltaskset

Execution models

Workloads

jm

task

tm

Page 26: Cellプロセッサ向け実行環境sacsis.hpcc.jp/2006/include/sacsis2006-web-tutorial-cell.pdf · 2006-10-06 · さらにspuの利用効率を上げる 規模が大きいと統合が発生

Copyright © 2006 Sony Computer Entertainment Inc. All Rights Reserved. 2006/05/24

Shared m

emory

Virtual S

PU

group

task workloadtask workload

Scheduling And Priority Table

SPU0 SPU1 SPU2 SPU3tm tm

kernel

module

job workloadjob workload

76543210SPUtask

moduletask

module tasksettaskset

SPU4jm

Priority table

Atomic NotifierAtomic Notifier

task task

jobmodule

jobmodule

jobchainjob

chain

Page 27: Cellプロセッサ向け実行環境sacsis.hpcc.jp/2006/include/sacsis2006-web-tutorial-cell.pdf · 2006-10-06 · さらにspuの利用効率を上げる 規模が大きいと統合が発生

Copyright © 2006 Sony Computer Entertainment Inc. All Rights Reserved. 2006/05/24

SPURSのまとめ

SPURSは2レイヤ構成2KBのワークロードスケジュール層

ポリシーモジュール(実行モデル)層

効率の良い実行

協調的なSPUの共有

インテグレータに嬉しい見通しの良い動作No virtualizationNon-preemptiveStatic behavior of scheduling