人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

参考書に「MIMDを使用する際には、プロセッサのアーキテクチャの変更だけでなく、OSやコンパイラもMIMD技術に対応している必要がある」旨が書かれていたのですが、その理由を教えていただけないでしょうか。

●質問者: maru_fuku
●カテゴリ:コンピュータ
✍キーワード:OS アーキテクチャ コンパイラ プロセッサ 参考書
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● masahikokimoto
●35ポイント

http://q.hatena.ne.jp/1229465599

URLはダミーです。

まずコンパイラについては、スーパースケイラなんかだと動的に並列処理のスケジューリングをしてくれる

わけですが、MIMDだとコンパイラのレベルで静的にスケジューリングしなければならないので、最適化の

アルゴリズムなんかも独自に対応しなければなりません。

OSについては、その本が何を意図しているのかまでは分かりませんが、例えばある命令を実行している途中で

例外が発生し、カーネル内で処理をしてユーザプロセスに戻る場合、必要に応じて元の命令の再実行をしないと

いけないわけですが、デコーダにはMIMDの全部の命令が入ってしまうので、どの命令を再実行するのか管理

しないといけない、とかそういうことかなあと推測します。


2 ● くまっぷす
●35ポイント

http://homepage2.nifty.com/Miwa/10_FACOM%20VP/10_1.html

古い並列マシンの話↑。

MIMDが何をするものか考えれば自明です。

MIMDは「複数の処理を同時に実行することで効率を上げる」ので、

1)コンパイラで同時に処理しても問題ない命令を判断して複数のプロセッサに分けられるように処理する

例えばCで

a = b+c;

d = e+f;

g = a+d;

みたいなプログラムがあった場合、aとdの値の計算はお互いにかぶらないので同時に行わせる事ができますが、gの計算はa及びdの計算結果が出るまで待たないといけません。こういうのを手作業でやるのはとっても大変なのでコンパイラの機能として持たせる必要があります。

2)OSで複数の処理をそれぞれのCPUに効率よく振り分ける

むしろこっちの方が(スーパーコンピュータじゃない限り)よく使われるように思います。最近流行りのマルチコアCPUはまさにMIMDの代表例です。

コンピュータ上では時間単位、処理単位で複数の処理が同時並行的に進みます。例えばこうやってwebアクセスしている間にも裏で画面の表示切り替えをやったり音を出したりメールを受信したり...これらの仕事は、シングルプロセッサの場合、細かい時間単位で切り替えられますが、MIMDの場合、複数の処理系に割り振ることが可能です(それにより見掛け上N倍の性能が出る)。そういう処理はOSが行うのが普通です。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ