LINEスタンプ制作代行サービス・LINEスタンプの作り方!

お電話でのお問い合わせ:03-6869-8600

stampfactory大百科事典

ハードウェアマルチスレッディング

ハードウェアマルチスレッディング(Hardware multithreading)は、プロセッサのマイクロアーキテクチャにおいて複数のスレッドの実行をハードウェアで提供することである。ハードウェアマルチスレッドのパラダイムは、1990年代後半以来、命令レベルの並列性をこれ以上利用する努力が行き詰まったため、注目されるようになった。"スループットコンピューティング" の概念をより特化した分野であるトランザクション処理から突如再浮上させることになった。"スループットコンピューティング" のための二つの有力な方法が、マルチプロセッシングとハードウェアマルチスレッディングである。マルチスレッディングに対していくつか批判もある:マルチスレッドサポートするために用いられるハードウェア技術は、コンピュータプログラムのマルチタスクのためのソフトウェア技術と匹敵する。もっともシンプルなタイプのマルチスレッディングは、一つのスレッドが、通常長い遅延のあるストールを発生させるイベントによりブロックされるまで動作しつづけるものである。こうしたストールはチップの外にあるメモリにアクセスする必要があり、データを取得して復帰するまで数百 CPU サイクルかかるキャッシュミスである可能性がある。スレッド化されたプロセッサは、ストールが解決されるのを待たず、動作の準備ができている別のスレッドに実行を切り替える。以前のスレッドにデータが到着した場合にのみ、以前のスレッドが実行可能なスレッドのリスト上に復帰する。例:概念的には、リアルタイムオペレーティングシステムで使用される協調マルチタスクに似ている。これは、特定のイベントを待つ必要がある場合にタスクが自主的に実行時間を引き渡す。この種類のマルチスレッディングは"ブロック型(Block)マルチスレッディング"、"協調(Cooperative)マルチスレッディング"、"粗粒度(Coarse-grained)"マルチスレッディング(CGMT)、"垂直(Vertical)"マルチスレッディング(VMT)として知られる。マルチスレッディングをハードウェアでサポートすることの目標は、ブロックされたスレッドと、実行可能な別のスレッドの切り替えを高速に行うことである。この目標を達成するためのハードウェアのコストは、プログラムから見えるレジスタといくつかのプロセッサ制御レジスタ(プログラムカウンタなど)を複数持つことである。あるスレッドから別のスレッドへの切り替えは、使用するレジスタセットを別のものに切り替えることを意味する。こうしたハードウェアの追加は以下の利点がある:アクティブなスレッド同士を効率的に切り替えるため、それぞれのアクティブなスレッドは専用のレジスタを一式持つ必要がある。たとえば、二つのスレッドを高速に切り替えるため、レジスタのハードウェアは二つ作成する必要がある。より高い性能を持つマルチスレッディングの種類は、プロセッサが各 CPU サイクルでスレッドを切り替えるものである。例:この種類のマルチスレッディングの目的は、実行パイプラインから、データ依存によるストールをすべて排除することである。一つのスレッドが比較的他のスレッドから独立しているため、一つのパイプのステージ内の一つの命令がパイプラインの古い命令の出力結果を必要とする可能性は低い。概念的には、オペレーティングシステムで用いられるプリエンプティブ・マルチタスクと似ている。各アクティブスレッドに与えられたタイムスライスを 1 CPU サイクルに例えることができるだろう。この種のマルチスレッディングは初め"バレルプロセッシング"と呼ばれ、樽(barrel)の段がパイプラインのステージと、実行スレッドを表す。"インターリーブ型(Interleaved)マルチスレッディング"、"プリエンプティブ(Pre-emptive)マルチスレッディング"、"細粒度(Fine-grained)マルチスレッディング"(FGMT)、"タイムスライス(time-sliced)"マルチスレッディングなどがより現代的な用語である。"ブロック"型のマルチスレッディングで議論したハードウェアコストに加え、"インターリーブ"型マルチスレッディングはさらに各パイプラインステージが処理する各命令のスレッド ID を追跡するためのコストがかかる。また、パイプライン内でより多くのスレッドが並列に実行されるため、異なるスレッド間のスラッシングを避けるためキャッシュや TLB などの共有リソースを大きくする必要がある。"同時マルチスレッディングを参照"もっとも進歩したタイプのマルチスレッディングはスーパースケーラ CPU に適用するものである。通常のスーパースケーラプロセッサは一つのスレッドから毎サイクル複数の命令を発行する。同時マルチスレッディング(SMT)ではスーパースケーラプロセッサは複数のスレッドから毎サイクル複数の命令を発行する。各シングルスレッドの命令レベルの並列性が限定されていることを認識し、この種のマルチスレッディングは、使用されていない命令発行スロットに関連した無駄を削減するため、スレッド間で利用できる並列性を活用しようとするものである。例:SMT をその他のマルチスレッディングの種類と区別するため、同時に一つのスレッドからの命令しか発行できない場合には(Temporal multithreading)という用語が用いられる。"インターリーブ"型マルチスレッディングで議論したハードウェアのコストに加え、SMT は 各パイプラインのステージが処理する命令のスレッド ID を"各命令ごとに"認識するコストがかかる。さらに多数のアクティブのためキャッシュや TLB などの共有リソースを大きくしなければならない。研究の主な領域は、実行可能スレッドのリストの中から次に実行するものを高速に選択し、同時に実行可能およびストールしたスレッドのリストを管理するスレッドスケジューラである。スレッドスケジューラは、完全にソフトウェアでも完全にハードウェアでも、ハード/ソフトの組み合わせでも実現することができる。それ以外の研究の領域として、キャッシュミス、スレッド間通信、DMA の完了など、どの種類のイベントがスレッドの切り替えを起こすべきか、という問題がある。もしマルチスレッディングの方法としてすべてのソフトウェアから見える状態、権限管理レジスタ、TLB などを含めて複製するのであれば、それは各スレッドに仮想マシンを有効にすることである。これにより各スレッドが自分のオペレーティングシステムを同じプロセッサ上で実行できる。一方で、もしユーザーモードの状態のみが保存されるのであれば、ハードウェアへの要求は少なく、同じダイエリア/コストでより多くのスレッドが一度にアクティブに動作できるようになる。

出典:wikipedia

LINEスタンプ制作に興味がある場合は、
下記よりスタンプファクトリーのホームページをご覧ください。