S2-3-2 SWESTチュートリアル2 議事録 「マルチコアプロセッサを用いた組み込み向け並列処理」 NECシリコンシステム研究所 酒井 淳嗣 氏 会場:B会場 座席数:120 参加者:約40名 ■■■第一部:MP211マルチコアプロセッサについて■■■ ■組み込み機器の高速化 動画や音声、ネットワークなど、PCの機能が組み込み機器にも組み込まれるようになった。(組み込み機器の高度化が進んでいる) ・動画、3D、JAVA、音声認識、ネットワーク、ダウンロード、複数アプリの連携 ■汎用処理とメディア処理 メディア性能だけでなく、汎用的なCPU性能も求められる。 例)携帯電話 従来は、メディア処理要求の方が高かったが、最近は汎用CPUの性能も求められるようになっている。 ■組み込み機器とPCの違い ・組み込み 設計時にアプリ仕様確定(種類、組合せ) 所定性能達成が必須 所定性能達成に必要な最低限のリソースをしよう ↓ 特定アプリ、性能必達 ・PC 設計時にアプリ未定(出荷後もアプリ増える) 性能は必ずしも必達ではない リソースはあればあるほど良い ■将来の組み込み聞き:PC要素の取り込み 組み込み:所定性能達成が必須、所定性能達成に必要最低限なりソース PC:さまざまなアプリを追加可能 ↓ 両方の要求がある ■将来の組み込み聞きに予想されるニーズ 基本:性能↑、コスト↓ ・いかなる利用状況でも所定の性能は必ず達成したい ・消費電力は低く抑えたい(便利) ・高度化・大規模化するソフトの開発コストを下げたい(企業の立場) ■(↑のページに対し、)いろいろな性能向上方式 ・専用HW ・再構成可能HW ・メディアプロセッサ ・DSP ・CPU拡張命令 ・並列CPU(今回採用した方法) ・高クロックCPU ■事例 当面の課題であるメディア処理に注力した製品が多い ・MeP ・UniPhier ・SH-Mobile ・EMMA ・DAP/DNA ■並列CPUが効く? なぜ並列CPUが効くのか? ・いかなる利用状況でも所定の性能は必ず達成したい(スケーラビリティ、タスク並列) ・消費電力は低く抑えたい(低クロック、低電力) ・高度化・大規模化するソフトの開発コストを下げたい ■①低消費電力 システムの並列分割により、各CPUの動作クロックを低くし、電圧を抑えることで、高性能と低消費電力を両立。 Power = f * C * V^2 ↓ Power = (1/3 f) * (3*C) * (Lower V)^2 システムの並列分割が出来れば、並列CPUで実行可能。つまり、低消費電力を実現可能 ■②性能スケーラビリティ 標準的なバージョンから、高性能版、廉価版などのバリエーションを作るのが容易に ・新たに機能を追加したい場合はCPUを追加 ・廉価版はシングルCPUに ■③PC分野での実績 PCの汎用CPU上で選考実装された機能が、組み込み分野に及んできている ・JAVA,Flash/PDF,ネットワークプロトコル PC分野で培われてきた並列処理技術が使える ・クラスタMPI ・VLIW ・ILP など これらをサポートするOSやライブラリ、コンパイラがある ■どのような並列方式がいいか? PC分野ではSMP構成のCPUが一般的だが、 SMPの難点:CPU間の干渉、組み込み適用時期 低消費電力のSMPチップは難しい ■(SMPに対し)、タスク並列はどうか? 各PEにシングルCPU用のOSを乗せる→各PE内では従来シングルCPU OSと互換(各OSは互いに独立) 各タスクはいずれかのPE上で動作する(マイグレーション) ■タスク並列のご利益(1):PE独立性 各PEの独立性が高いため、PE間の性能干渉が少ない 例)あるPEに重い負荷がかかっても、他のPEには影響が及ばない ■タスク並列のご利益(2):availability ・CPUコア部は無改造 ・並列処理を「可能にする」責任はソフトに ・並列処理で「性能を出す」責任はソフトだけでなくハードにも。 ↑これから説明。 ■タスク並列処理の課題 ・ソフトウェア互換性 従来のシングルCPU環境でのマルチタスクアプリ群が、タスク並列環境のマルチタスクでそのまま動くか? →OS wrapper技術 ・ハードウェアリソース管理 異なるPEが同時に同一ハードウェアリソースにアクセスしようとしたら? →Client-Server方式 ■ソフトウェア互換性 タスク並列のOSはシングルCPU用OSのまま。 特別な通信ライブラリを用意すると、アプリ書き換えが必要。 何とかして、シングルCPU用のコードのまま、タスク並列環境で動かせないか? ■OS Wrapper カーネルとユーザプログラムの間に位置するソフトウェアレイヤ 従来のAPIを維持したまま、PE間での通信を実現 ■OS Wrapper実装(Linux) 多くの部分をユーザランド実装 ユーザランド=カーネルの内部構造の変更に左右されない →OSバージョンアップへの追従 →異種OSを用いた環境 GPL問題 図を用いて詳細に説明 ■Client-Server方式(ハードウェアリソース管理に対するひとつの答え) ・「アクセスサーバ」だけが実際のハードウェアアクセスを行なう。 + クライアントはアクセスサーバに処理を間接依頼 + チップ内のネットワークが高速なので、オーバヘッドが小さい ・マルチメディア系:高速通信が必須 + 直接アクセス方式。DSPアクセスで。 + アービタ ■MP211チップ チップ写真を見ながら説明。 ■MP211 & Linux Platform(アーキテクチャの話) ■試作アプリ:地上波DTV視聴+ニュースリーダー 動画でサンプルを紹介 ■性能(PE間の干渉性) ・DTVの再生結果を2種類の実行形式で比較 タスク並列ではPE間の性能干渉が小さくなり、性能保証するのが容易に。 ■ソフトウェア互換性 ・ソースコード修正なし 当初課題だったソフトウェア互換性問題はほぼクリアされた ■消費電力について(完全な評価ではない) 完全な評価ではない 並列にし、電圧を下げることで消費電力が下がる。 今回の評価では電圧は下げてない。 ■MP211タスク並列技術まとめ ・組み込み機器は、従来からの消費電力性、性能保証性に加え、PC的な汎用性、高機能性を求められるように。 ・MP211タスク並列:並列環境で ■■■第二部:なぜタスク並列?■■■ ■性能より作りやすさ? 当座困っている問題:メディア性能 →専用HWやメディアプロセッサで対応 別の問題:設計時に予想した性能に達しない。バグがなかなか取れない。 そのため、開発期間の延長、デバッグ・テスト期間の長期化、市場投入時期の延長、製品回収騒ぎが発生 →企業観点では大いに問題 「作りやすさ」も大事 ■SMP上のシステムは作りやすい? SMPなら、タスクの自動負荷分散がなされ、マルチスレッドで書いておけば1アプリの性能加速も出来る。←PC的な発想 性能必達・品質保証を考えると、 ・タスクのPE配置が固定している方が、性能変動が少ない。 ・タスクが勝手にマイグレートされると、デバッグ時の再現性に問題。 ■我々の現時点での判断:組み込みにはタスク配列 ・既にかれたCPUコア、OS、アプリを使い、スタティックにタスクを配置。動的不確実性を減らす。→チップ原価もソフト開発コストも抑えられる。 ・スタティックなタスク配置 ■タスク並列のその他のメリット watch dog的な使い方 ・各PEが隣のPEの動作状況を監視、万が一おかしくなったらそのPEをリブートさせる。 ・各PEが独立OSなので、1つずつリブート可能 ■組み込みでマルチコアにしようとした事例 ・マルチコアOSE(スウェーデンENEA社) SMPではなくタスク並列型とし、predictable性を狙う。 ・SystemWeaver(独Ignios社) マルチコアプロセッサ上でマルチコアタスクAPIを提供。プログラミングを楽に。 ・ARM966 x8コア(Agere社) プログラミングをどうするかが問題。 ■方式選択に影響及ぼす事項 ・製品のアプリミックスがどのような並列製を持っているか + マルチタスク、マルチスレッド、SIMD並列、、、 ・品質に対する考え方がどう変わっていくか + 最悪時保証、平均値保証(ベストエフォート) ・部材の原価と人的コストのバランス + 爆発的なソフト規模拡大に効く薬はあるのか? ・チューニング努力の考え方 + 並列CPU、大容量メモリ、高機能OS、PC風アプリ、、、 ■今後は? ・現在・近未来の条件バランスではタスク並列が一番良さそうだと考えているが、今後もずっと万歳とは言いがたい。。。 ・タスク並列かSMPか?あるいは、そもそも並列CPU路線化別の方式化?組み込み効きニーズの推移を見つつ、模索していく必要があろう。 ****************************************************************************************** 議論、質疑 慶応大、加藤さん Q:PE間をタスクマイグレーションなしとある。マイグレーションを行なった方が、負荷が分散される場合もあると思うが? A:それはあるかも知れない。 ??? Q:ブロック図。PEごとにアドレス空間は独立か? A:物理的にはメモリは1つ。論理的にはメモリ空間は独立。 Q:バスを1本で利用しているのであれば、競合は発生する? A:発生し得るが、十分に考慮された制御系になっている。どれくらいまで遅延が許されるかをあらかじめ計算しておき、それを用いて制御している。 Q:セキュリティ的に独立と言っていたが、・・・ A:カーネル権限を持つと、他のメモリ領域に書き込むことが出来る。 ソニー ?さん Q:マルチコアの場合のソフトのデバッグ方法は? A: サンリツ ?さん Q:Linuxのカーネルに手を入れないのがポイントだと思う。・・・ A:チェックはしている。 名大 冨山先生 東芝 高野さん Q:クライアントサーバの図。どのCPUがどのカーネルリソースにアクセスするかはどこで決めている? A:ソフトで決める。