マルチスレッド​と​マルチタスク​の​違い

概要

この​ドキュメント​は、​マルチ​コア​プログラミング​の​基本​シリーズ​の​一部​です。
マルチコアプログラミングの基本シリーズ

マルチ​コア​プログラミング​の​基本​シリーズ

この​ドキュメント​では、​アプリケーション​で​マルチタスク​と​マルチスレッド​を​利用​する​重要性​について​説明​し​ます。

内容

背景

マルチ​コア​システム​は、​2​つ​以上​の​コア​が​搭載​さ​れ​た​シングル​プロセッサ​CPU​です。​各​コア​に​は​専用​の​マイクロプロセッサ​が​内蔵​さ​れ​てい​ます。​マルチ​コア​マイクロプロセッサ​は、​単一​の​物理​パッケージ​で​マルチプロセッシング​を​実行​し​ます。​マルチ​コア​システム​は、​L2​キャッシュ​や​フロント​サイド​バス​など​の​マルチプロセッサ​システム​で​重複​する​コンピュータ​リソース​を​共有​し​ます。

マルチ​コア​システム​の​性能​は、​マルチプロセッサ​に​似​てい​ます​が、​複数​の​プロセッサ​ソケット​など​複数​の​プロセッサ​を​サポート​する​マザー​ボード​が​必要​ない​ため、​コスト​を​大幅​に​節約​でき​ます。

 

マルチタスク​処理

マルチタスク​は、​プロセス​と​呼ばれる​複数​の​タスク​が​CPU​など​の​処理​リソース​を​共有​する​方法​です。​Windows XP​など​の​マルチタスク​OS​では、​複数​の​アプリケーション​を​同時に​実行​でき​ます。​マルチタスク​処理​と​は、​異なる​アプリケーション​が​複数​の​動作​を​同時に​行​って​いる​よう​に​各​計算​タスク​を​素​早く​切り替える​OS​の​機能​を​指し​ます。

CPU​の​クロック​速度​が​向上​する​とともに、​アプリケーション​を​高速​に​実行​できるだけ​では​なく、​OS​が​アプリケーション​の​切り替え​を​より​迅速​に​行える​よう​に​なり​ま​した。​これ​により、​パフォーマンス​全体​が​向上​しま​した。​一度に​多く​の​動作​が​コンピュータ​上​で​行​え、​個々​の​アプリケーション​は​高速​に​実行​さ​れ​ます。

 

シングル​コア

シングル​CPU​コア​が​搭載​さ​れ​た​コンピュータ​では、​一度に​1​つ​の​タスク​のみ​を​実行​でき​ます。​つまり、​CPU​が​タスク​の​命令​を​実行​し​て​いる​という​こと​です。​マルチタスク​処理​では、​特定​の​時間​に​実行​する​タスク​や​待機​中​の​タスク​が​実行​さ​れる​タイミング​を​スケジュール​する​こと​により​この​問題​を​解消​し​ます。

 

図​1. シングル​コア​システム​は、​1​つ​の​CPU​で​マルチタスク​を​行う​タスク​を​スケジュール​する

 

マルチ​コア

マルチ​コア​システム​の​場合、​マルチタスク​OS​は​複数​の​タスク​を​同時に​実行​し​ます。​複数​の​演算​エンジン​が​異なる​タスク​上​で​独立​し​て​動作​し​ます。

たとえば、​デュアル​コア​システム​では、​ワードプロセッサ、​E​メール、​ウェブブラウズ、​ウイルス​対策​ソフトウェア​など​の​4​つ​の​アプリケーション​が​同時に​異なる​プロセッサ​コア​に​アクセス​する​こと​が​可能​です。​E​メール​を​チェック​し​ながら​同時に​文字​を​タイプ​という​よう​に​マルチタスク​を​行う​こと​が​できる​ため、​アプリケーション​の​パフォーマンス​全体​も​向上​し​ます。

 

図​2. デュアル​コア​システム​は、​マルチタスク​OS​が​2​つ​の​タスク​を​同時に​実行​する​こと​を​可能​に​する

 

OS​は、​異なる​アプリケーション​または​プロセス​を​異なる​CPU​コア​間​で​分割​する​こと​により、​複数​の​アプリケーション​を​より​効率​的​に​実行​し​ます。​コンピュータ​は​作業​を​分割​する​ため、​スループット​および​パフォーマンス​が​向上​し​ます。​この​場合、​各​コア​では​半分​の​量​の​アプリケーション​管理​および​切り替え​が​行​われ​ます。​事実​上、​アプリケーション​は​並列​に​実行​さ​れ​ます。

 

マルチスレッド​処理

マルチスレッド​処理​は、​マルチタスク​処理​の​発想​を​アプリケーション​に​広​げた​もの​で、​単一​の​アプリケーション​で​特定​の​操作​を​個々​の​スレッド​に​分割​し​ます。​各​スレッド​は​並列​に​実行​さ​れ​ます。​OS​によって、​さまざま​な​アプリケーション​間​だけ​で​なく、​1​つ​の​アプリケーション​内​の​スレッド​間​で、​処理​時間​の​分割​が​可能​となり​ます。

たとえば、​LabVIEW​の​マルチ​ス​レッド​プログラム​では、​アプリケーション​を、​ユーザ​インタフェース、​データ​集録、​ネットワーク​通信、​ログ​の​4​つ​の​スレッド​に​分割​する​こと​が​でき​ます。​これらの​各​スレッド​が​独立​し​て​動作​する​よう​に​優先​度​を​割り当てる​こと​が​でき​ます。​そのため、​マルチ​ス​レッド​アプリケーション​では、​複数​の​タスク​を​他の​アプリケーション​と​並列​実行​させる​こと​が​でき​ます。

図​3. デュアル​コア​システム​では​マルチスレッド​処理​が​可能

 

マルチスレッド​処理​を​生​か​した​アプリケーション​に​は、​以下​を​含む​多く​の​利点​が​あり​ます。

  • 効率面で優れた​CPU​の​使用
  • システム​の​信頼​性​の​向上
  • マルチプロセッサ​の​コンピュータ​で​の​パフォーマンス​向上

多く​の​アプリケーション​では、​計測​器​など​の​リソース​の​同期​呼び出し​を​行い​ます。​この​よう​な​計測​器​の​呼び出し​に​は、​時間​が​かかり​ます。​シングルス​レッド​の​アプリケーション​の​この​よう​な​同期​呼び出し​では、​操作​が​完了​する​まで​アプリケーション​内​の​他の​タスク​の​実行​が​結果​として​妨げ​ら​れ​ます。​この​よう​な​問題​は、​マルチスレッド​処理​によって​回避​でき​ます。

同期​呼び出し​が​1​つ​の​スレッド​で​実行​さ​れる​間、​この​呼び出し​に​依存​しない​プログラム​の​他の​部分​は​異なる​スレッド​で​実行​さ​れ​ます。​同期呼び出しが完了するまで停止せずに、​アプリケーション​の​実行​が​進行​し​ます。​このように、​アプリケーション​の​スレッド​の​実行​準備​が​でき​て​いる​場合​に​CPU​が​アイドル​状態​に​なら​ない​ため、​マルチスレッド​処理​アプリケーション​は​CPU​の​効率​が​向上​し​ます。

 

LabVIEW​で​の​マルチスレッド​処理

LabVIEW​は、​アプリケーション​を​複数​の​実行​スレッド​に​自動的​に​分割​し​ます。​複雑​な​タスクスレッド​管理​は、​透過​的​に​LabVIEW​実行​システム​に​内蔵​さ​れ​てい​ます。

 

図​4. LabVIEW は​複数​の​実行​スレッド​を​使用​する

 

LabVIEW​で​の​マルチタスク​処理

LabVIEW​は、​対応​する​OS​で​割り込み​型​マルチスレッド​を​使用​し​ます。​LabVIEW​は​また、​協調​型​マルチスレッド​も​使用​し​ます。​割り込み​型​マルチスレッド​を​使用​する​OS​と​プロセッサ​は、​これらの​システム​が​協調​型​マルチスレッド​の​使用​に​戻る​場合​の​ため​に​制限​さ​れ​た​数​の​スレッド​を​使用​し​ます。

実行​システム​は​スレッド​を​使用​し​て、​割り込み​式​に​マルチタスク​の​処理​を​行い​ます。​ただし、​使用​できる​スレッド​の​数​は​制限​さ​れ​ます。​並列​性​の​高い​アプリケーション​では、​使用​できる​スレッド​が​ビジー​状態​の​場合、​実行​システム​は​協調​型​マルチタスク​を​使用​し​ます。​また、​OS​は、​アプリケーション​と​他の​タスク​間​で​割り込み​型​マルチタスク​を​処理​し​ます。

 

Was this information helpful?

Yes

No