今さら聞けないマルチプロセッサの基礎教えます ――キャッシュの共有,割り込みの共有,OSによる制御

木村啓二

tag: 組み込み

技術解説 2005年2月18日

 ここで,OSのタスクの割り当てかたや待ち行列の持ちかたについて,システムを効率良く運用するためのしくみを考えてみましょう.

1)キャッシュを有効利用する

 OSがタスクをCPUに割り当てるとき,単に空いているCPUにタスクを割り当てるのではなく,例えば,何度も実行するタスクについては,なるべく同じCPUに割り当てるという方法があります.そうすれば,キャッシュに以前のデータが残っている可能性が大きいので,効率的に運用できます.

2)待ち行列の「待ち」を解消する

 「CPU0とCPU1が同じタスクを同時に実行してしまう」ということのないように,タスクの待ち行列は排他的に(一つのCPUが独占的に)操作する必要があります.しかし,OSが一つの待ち行列しか持っていないと,一つのCPUがタスク・スケジューリングをしている間,ほかのCPUは待たされることになります.CPUの数が増えるほど,これは大きな問題となります.

 そこで,例えば米国Sun Microsystems社のOS「Solaris」では,各CPUごとの専用の待ち行列を用意して,CPUが待ち行列の操作の順番を待つことのないようにしています(3)注4.Linux OSのカーネルも,バージョン2.6からこのようなしくみを導入しています.

 マルチプロセッサ用のOSにはさまざまなくふうが施されていますが,そのいずれも,キャッシュを有効利用する,資源の排他利用時間をなるべく短くする,といった点に集約されます.

 なお,OSを使わない場合は,例えばCPUを一つのマスタCPUと残りのスレーブCPUに分けて,スレーブCPUを明示的に操作するデバイス・ドライバを利用する方法がとれます.このデバイス・ドライバは,スレーブCPUの起動,処理の割り当て(実行するプログラムのアドレスの通知),処理の回収(スレーブCPUが使用していたメモリなどの資源の解放)といった,通常,マルチプロセッサ対応OSが行っていることを担当することになるでしょう.

 注4;このようにCPUがそれぞれ専用の待ち行列を持つとき,それぞれの待ち行列にタスクを割り当てるポリシが重要になる.割り当てポリシとしては,「一度あるCPUで実行したプロセスをなるべく同じプロセスで実行し続ける(キャッシュの利用効率の向上)」,「待ち行列にたまっているタスクがなるべく少ないものに割り当てる(負荷分散の向上)」,といったものが挙げられる.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日