マイクロスレッド
マイクロスレッド(英: microthread)は、マイクロプロセッサ内部の並列機構である。スレッドとは異なり、タスクのスケジュールが単純であり、OSのカーネルではなくプロセッサが担当するためオーバヘッドが少なく、より細かい粒度での並行計算が実現できる。
並行計算のためのマイクロスレッド
[編集]マイクロスレッドは、マイクロプロセッサ内部で並行に動作可能な小さなコードである。マイクロスレッドは、計算を同時に実行できるコードに分割するために、既存のプロセッサに対していくつか新たな命令を用いた実行モデルを提供する。
マイクロスレッド同士の依存関係の管理は、あるマイクロスレッドにおける計算が別のマイクロスレッドの生成するデータに依存するとき、あるレジスタをセマフォとして用いて計算の完了を同期すことで行われる。
これはデータフローモデルの一形態である。このモデルは、既存のマイクロプロセッサの命令セットに並行性制御のための5命令を追加するだけで適用することができる。
マイクロスレッドのセット は基本的なコードブロックをマイクロコンテキストを共有しながら一つのプロセッサで動作する並行実行単位に静的に分割したものである。マイクロスレッドセットに対するイテレータ が、動的でパラメトリックなマイクロスレッド群を形成する。イテレータはループの並列性を捕捉し、別のプロセッサにスケジュールすることができる。マイクロスレッドセットに対するイテレータは動的に生成され、マイクロスレッド群と呼ばれる。これがモデルが並列性を実現できるようにするための機構であり、この機構は複数のプロセッサや機能単位の上で実行することができる。
ノンブロッキングI/Oのためのマイクロスレッド
[編集]CPUの演算速度がメモリのアクセス速度より極めて速いために、メモリのI/Oを実行している時間は計算ユニットが遊んでしまう。計算をマイクロスレッドにすることで、メモリアクセスの間も計算を実行でき、性能を向上させることができる。このアイディアはCellプロセッサに採用された。