ハイパースレッディングとマルチスレッディングの主な違いは、ハイパースレッディングが1つの物理プロセッサを2つの仮想プロセッサに変換するのに対し、マルチスレッディングは1つのプロセスで複数のスレッドを同時に実行することである。
ハイパースレッディングは、CPU/プロセッサの性能を向上させるためにインテルが開発した技術です。
1つのCPUで2つのスレッドを実行できるようにするものです。
一方、マルチスレッドは、1つのプロセス内で複数の軽量なスレッドを同時に実行できる仕組みだ。
各スレッドは、それぞれ独自のプログラムカウンタ、スタック、レジスタなどを持つ。
ハイパースレッディングとは
ハイパースレッディングは、CPUの性能を向上させるために考案された技術です。
各コア上で複数のスレッドを実行させ、CPUを効率的に動作させることができます。
CPUが単位時間内に実行する作業量を増やすことができます。
コアはCPUの実行単位です。
当初、CPUのコアは1つだけでした。
その後、メーカーはCPUが一度に実行する命令数を増やすためにコアを増やした。
ハイパースレッディングは、CPUの性能をさらに向上させるための仕組みです。
OSに各物理コアを2つの仮想コアまたは論理コアとして認識させるのだ。
言い換えれば、CPUのコア数を仮想的に増やすのです。
そのため、1つのプロセッサで2つのスレッドが実行されます。
注意すべきは、ハイパースレッディングは実際にはコアの数を増やしているわけではなく、仮想的または論理的にコアを増やしているだけであるということです。
各仮想コアは独立して動作することができます。
さらに、ハイパースレッディングが可能なCPUは、汎用レジスタ、制御レジスタ、その他のアーキテクチャコンポーネントを2セット含んでいますが、キャッシュ、バス、実行ユニットは同じものを共有しています。
マルチスレッドとは
プロセスとは、実行中のプログラムのことです。
タスクごとにプロセスを作成するのは資源を消費する。
そこで、1つのプロセスを複数のサブプロセスに分割し、各サブプロセスにタスクを割り当てることが可能です。
各サブプロセスはスレッドと呼ばれる。
また、スレッドを軽量プロセスとして考えることもできる。
マルチスレッドとは、一つのプロセスを複数のスレッドに分割し、同時に実行させる仕組みのことです。
ここでは、各スレッドは独立して動作する。
スレッドにはカーネルスレッドとユーザースレッドの2種類があります。
カーネルが管理するスレッドがカーネルスレッドであるのに対し、ユーザが管理するスレッドがユーザスレッドです。
マルチスレッドには様々なモデルがあります。
Many to Oneモデル – 複数のユーザースレッドが1つのカーネルスレッドにマッピングされます。
One to oneモデル – 各カーネルスレッドが1つのユーザースレッドを管理します。
多対多モデル – 複数のユーザースレッドが同量または少量のカーネルスレッドにマッピングされます。
ハイパースレッディングとマルチスレッディングの違い
定義
ハイパースレッディングは、1つのプロセッサを、オペレーティングシステムとそれを使用するアプリケーションプログラムに対して、2つの独立したプロセッサのように動作させる技術です。
マルチスレッドとは、1つのプロセスのコンテキスト内に複数のスレッドを存在させ、それらが独立して実行されながらプロセスリソースを共有できるようにする仕組みのことです。
これがハイパースレッディングとマルチスレッディングの主な違いです。
機能性
ハイパースレッディングでは、物理プロセッサが2つの仮想プロセッサまたは論理プロセッサに分割されるのに対し、マルチスレッディングでは、1つのプロセスが複数のスレッドに分割されます。
したがって、この点もハイパースレッディングとマルチスレッディングの違いと言えるでしょう。
結論
ハイパースレッディングとマルチスレッディングの主な違いは、ハイパースレッディングが1つの物理プロセッサを2つの仮想プロセッサに変換するのに対し、マルチスレッディングは1つのプロセスで複数のスレッドを同時に実行する点です。