ハードウェアとソフトウェアによる Windows のパフォーマンスへの影響

コンピューティング技術の進歩により、最新の状態を維持することが難しくなっています。新しいデバイスを購入する際に販売員が使う専門用語はほとんど理解できず、特定のコンピューターを勧める人は、64 ビットコンピューティングの仕組みや、より多くの RAM にアクセスできること以外のユーザーへのメリットを理解していないようです。

この記事では、64 ビットシステムで実行されるように選択されたオペレーティングシステムとアプリケーションソフトウェア、およびプロセッサ自体のいくつかの機能がコンピューターの全体的なパフォーマンスにどのように影響するかについて説明します。

プロセッサとオペレーティングシステム

現在市場に出回っている PC のほとんどは 64 ビットプロセッサを搭載しており、そのほとんどには 64 ビット版の Windows がプリインストールされています。システムから最高の性能を引き出すには、このペアリングが重要です。32 ビットのオペレーティングシステムを 64 ビットコンピューターにインストールすることはできますが、ハードウェアの追加のメリットは失われます。

32 ビットのオペレーティングシステムを 64 ビットコンピューターにインストールすると、64 ビットプロセッサが即座に 32 ビットプロセッサに変換されます。

  • プロセッサレベルの命令はすべて 32 ビットレジスタを使用することに制限されているため、すべてのネイティブ演算関数は同様に範囲と精度が制限されます。
  • アクセスできる物理メモリの量は、より多くのメモリがインストールされている場合でも 4 GB に低下します。
  • ビデオメモリなどのハードウェアメモリは、アドレス指定可能なメモリの一部を消費し、そのメモリの上に移動されたり、ハードウェアメモリアドレスの周りに RAM が再マップされたりすることはありません。
  • システムで実行したい他のすべてのソフトウェアは 32 ビットである必要があり、これらの同じパラメータによって制約されます。

これが、64 ビットプロセッサを搭載したコンピューターで 64 ビットのオペレーティングシステムを使用する必要がある最大の理由です。

プロセッサの機能

ハードウェアに適切なオペレーティングシステムを組み合わせることに加えて、CPU 設計の要素がシステムのパフォーマンスに影響を与えています。処理を行うために使用できるコアの数は大きな要素の 1 つです。

シングルコアからマルチコアへ

約 20 年前、消費者に販売されたほとんどすべてのコンピューターは、パッケージに単一の処理コアを持つプロセッサを使用していました。この種の設計では、コンピューターは一度に 1 つの命令しか実行できず、オペレーティングシステムは一度に 1 つの実行スレッドをプロセッサに割り当てることができました。

現在、1 つのシリコンウェハーには 2、4、またはそれ以上のコアがあり、パッケージには複数のチップが含まれている場合があります。プロセッサパッケージに複数のコアを配置することで、オペレーティングシステムは各コアをプロセススレッドを割り当てることができる個々のプロセッサとして認識し、各コアは他のコアとは独立して動作します。したがって、クアッドコアシステムでは、コンピューターは 4 つの命令を同時に実行できます。各コアで 1 つずつです。

ハイパースレッディングによるコアの接続

2002 年、Intel はハイパースレッディングテクノロジーを導入しました。これにより、オペレーティングシステムはチップ上の各処理コアに対して 2 つの論理プロセッサを「認識」します。これは、論理プロセッサごとに 1 つずつ、2 つの異なるプロセッサ状態データセットと 1 つの共有実行コアを持つことで機能します。これにより、オペレーティングシステムは、独自のステートデータを保持している各論理プロセッサに実行スレッドを割り当てることができます。1 つのスレッドがデータまたは別のリソースを待機しているためにブロックされている場合、もう 1 つの論理プロセッサは待機状態にならない限り、処理に実行コアを使用できます。このテクノロジーを使用することによるパフォーマンスの向上は、通常 15 ~ 30 パーセントの範囲です。

これは、クアッドコアプロセッサは、特定の状況で同じクロックスピードで動作するデュアルコアプロセッサの 2 倍の速度であることを意味するわけではありませんし、ハイパースレッディングを備えた Intel プロセッサが、このテクノロジーのないプロセッサよりも優れたパフォーマンスを発揮することを意味するわけでもありません。特定のソフトウェア要因により、追加の処理コアの存在が完全に無効になる可能性があります。

アプリケーションソフトウェアの影響

さて、ハイパースレッディングを備えた新しい 64 ビット Intel デュアルコアプロセッサを入手して、64 ビット版の Windows と組み合わせることにしたとします。最高の性能が得られますよね?まあ、そうかもしれません。

最新のオペレーティングシステムはハードウェアが提供するすべてのものを活用できますが、使用しているアプリケーションソフトウェアは、特にレガシーソフトウェアは活用できない場合があります。

上で述べた古いシングルコア CPU は、一度に 1 つのスレッドの処理しか行えませんでした。その当時に行われたプログラミングの多くは、1 つのスレッドのみを使用するように書かれていました。そのソフトウェアをマルチコアシステムで使用しても、そのスレッドには 1 つのコアしか使用されません。これが、クアッドコアシステムがタスクマネージャーで 25% の負荷で実行され、1 つのコアが 100% 使用され、他の 3 つのコアはアイドル状態のように見えることがある理由です。ワークロードは分散されていません。

システムのすべての処理コアを活用するには、ソフトウェアは並列処理とマルチスレッドを念頭に置いて設計する必要があります。ここでのアイデアは、コンピューターが別々のコアで同時に各タスクを完了できるように、問題を互いに独立して完了できる個別のコンポーネントに分解することです。これにより、目的の結果を生成するのにかかる時間を短縮できます。また、他のコアで他のスレッドの重い処理が行われている場合でも、ユーザーインターフェイスのスレッドがロックされないことも意味します。

プログラムがマルチスレッドを念頭に置いて設計されている場合でも、その機能の一部を並列化できない可能性があります。その一例は、Visual Basic for Applications(VBA)マクロを使用する Microsoft Office アプリケーションです。長時間実行されるマクロは、終了するまでコア全体を消費する可能性があります。コンピューターはマクロを並列化できるかどうかを自動的に判断できないため、単に試行しません。

シングルスレッドアプリのパフォーマンスを向上させる

シングルスレッドのレガシーアプリケーションを使用する必要がある場合、特に複数のアプリケーションを同時に実行する必要がある場合は、パフォーマンスを向上させる最善の方法は、プロセッサのアフィニティを設定することです。これにより、特定の処理コアのみを使用するように強制されます。これにより、コア全体のプロセッサ能力を消費することはできますが、同じコアで消費することはなく、プロセスが絶対に必要な以上に完了するのに時間がかかるようになります。

Windows では、タスクマネージャーを開き、プロセス名で右クリックして、コンテキストメニューからアフィニティの設定...を選択し、使用しないすべてプロセッサのチェックボックスをオフにしてからOKをクリックすることで、アフィニティを設定できます。

start コマンドのアフィニティフラグを使用して、コマンドラインからこれを行うこともできます。

start /affinity 2 notepad.exe

アフィニティフラグで使用されるプロセッサ番号は 1 から始まるのに対し、タスクマネージャーを見るときは 0 から始まるため、これは CPU 1 でメモ帳を起動することになります。

Linux ユーザーには、taskset コマンドで同様の機能があります。これは util-linux パッケージの一部であり、ほとんどのディストリビューションのデフォルトインストールの一部です。現在システムにない場合は、次のようにインストールできます。

sudo apt-get install util-linux

Debian ベースのディストリビューションの場合、または

sudo yum install util-linux

Red Hat ベースのシステムの場合。

CPU 2 で vlc を起動するためにコマンドを使用するには、次を使用します。

taskset -c 2 vlc

CPU 4 と 5 を使用するプロセス ID(PID)が 9021 である実行中のプロセスのアフィニティを変更するには、次を使用します。

taskset -cp 4,5 9021

アプリケーションのもう 1 つの要素はワード長です。32 ビットアプリケーションは整数と浮動小数点の 64 ビット数の両方を保存して操作できますが、これは同じ計算をネイティブに行う 64 ビットプロセッサよりも長い時間がかかる「ビッグマスの」ライブラリを介して行う必要があります。アプリケーションが 64 ビット数の提供する拡張範囲とより高い精度を必要とする場合、そのタスクに 64 ビットアプリケーションを使用する方が常に効率的です。

一部のソフトウェアでは、32 ビットか 64 ビットかはあまり問題ではありません。32 ビットの Web ブラウザは、ほとんどの人にとって十分に機能します。通常の使用では、数十のタブを開いていても、大量のメモリは必要ありません。物理プロセッサと論理プロセッサの両方で複数のスレッドを簡単に使用でき、CPU にバインドされることはありません。ほとんどのワープロ処理にも同じことが当てはまります。しかし、写真やビデオの編集、トランスコーディング、モデリングソフトウェアの実行、またはその他の CPU 集中型タスクを実行する場合、または大量のデータセットを処理する場合、マルチスレッドの 64 ビットソフトウェアがないと必要以上に時間がかかる可能性があります。

最終的な結論

では、最良の選択肢は何でしょうか?最良の答え:それは状況によります。

長時間実行される VBA マクロを使用する Excel スプレッドシートをシステムで実行する場合は、2.2 GHz で動作するクアッドコアよりも 3 GHz で動作するデュアルコアシステムの方が適していますが、コンピューターでの作業やプレイ中に複数のマルチスレッドプログラムを常に切り替えている場合は、その逆が当てはまります。

一般論はすべてのケースで証明されることはありませんが、今日の最高のデスクトップコンピューティングのパフォーマンスは、最新の 64 ビットオペレーティングシステムと 64 ビットマルチスレッドアプリケーションを実行する 64 ビットマルチコアプロセッサを使用することによって得られます。

64 ビットのパフォーマンスでどのような経験をしましたか?64 ビットのソフトウェアよりも優れたパフォーマンスを発揮する 32 ビットのソフトウェアがありますか?または、それらの間に識別可能な違いはありませんか?下のコメントでお知らせください。

画像クレジット: Dismantling an old computer (CC by 2.0) by fdecomite, 4th Generation Intel® Core™ i7 Processor Front and Back (CC by 2.0) by Intel in Deutschland