コンピューティングにおいて、コンピュータのパフォーマンスとは、コンピュータ システムによって達成される有用な作業の量です。特定のコンテキスト以外では、コンピュータのパフォーマンスは、コンピュータ プログラム命令を実行する際の精度、効率、速度の観点から評価されます。高いコンピュータ パフォーマンスに関しては、次の 1 つ以上の要因が関係している可能性があります。
- 特定の作業に対する応答時間が短い。
- 高いスループット(作業タスクの処理速度)。
- コンピューティング リソースの使用率が低い。
- 高速(または非常にコンパクトな)データ圧縮と解凍。
- コンピューティング システムまたはアプリケーションの高可用性。
- 高帯域幅。
- データ転送時間が短い。
技術的および非技術的な定義
あらゆるコンピュータシステムのパフォーマンスは、上記の指標の1つ以上を使用して、測定可能な技術的用語で評価できます。この方法でパフォーマンスは
- 変更前/変更後の他のシステムまたは同じシステムとの比較
- 絶対的な意味では、例えば契約上の義務を履行するため
上記の定義は科学的、技術的なアプローチに関連していますが、 Arnold Allenによる次の定義は技術者以外の読者にとって役立つでしょう。
コンピュータパフォーマンスにおけるパフォーマンスという言葉は、他の文脈でのパフォーマンスと同じ意味を持ちます。つまり、「コンピュータが期待される仕事をどれだけうまくこなしているか」ということです。[1]
ソフトウェア品質の側面として
コンピュータ ソフトウェアのパフォーマンス、特にソフトウェア アプリケーションの応答時間は、人間とコンピュータの相互作用において重要なソフトウェア品質の側面です。
パフォーマンスエンジニアリング
システム エンジニアリングにおけるパフォーマンス エンジニアリングには、システム開発ライフ サイクルの各フェーズで適用される一連の役割、スキル、アクティビティ、プラクティス、ツール、成果物が含まれており、ソリューションが設計され、実装され、運用上サポートされて、ソリューションに定義されたパフォーマンス要件を満たすことが保証されます。
パフォーマンス エンジニアリングでは、パフォーマンスの種類間のトレードオフを常に扱います。CPU設計者は、他の領域での CPU のパフォーマンスを犠牲にすることなく、以下に示すパフォーマンスの側面の 1 つを改善することで、全体的なパフォーマンスを向上させるCPUを作成する方法を見つけることができます。たとえば、より高性能で高速なトランジスタを使用して CPU を構築するなどです。
ただし、場合によっては、1 つのタイプのパフォーマンスを極端に押し上げると、チップのクロック レートなどの 1 つの印象的な数値を得るために他の重要な側面が犠牲になり、CPU 全体のパフォーマンスが低下することがあります(メガヘルツ神話を参照)。
アプリケーションパフォーマンスエンジニアリング
アプリケーション パフォーマンス エンジニアリング (APE)は、分散化が進むモバイル、クラウド、地上 IT 環境におけるアプリケーション パフォーマンスに関連する課題に対応するために設計された、パフォーマンス エンジニアリング内の特定の方法論です。アプリケーション ライフサイクルの各フェーズで適用される役割、スキル、アクティビティ、プラクティス、ツール、成果物が含まれており、非機能的なパフォーマンス要件を満たすようにアプリケーションが設計、実装、運用サポートされることを保証します。
パフォーマンスの側面
コンピュータのパフォーマンス指標(測定対象)には、可用性、応答時間、チャネル容量、待ち時間、完了時間、サービス時間、帯域幅、スループット、相対効率、スケーラビリティ、ワットあたりのパフォーマンス、圧縮率、命令パス長、スピードアップなどがあります。CPUベンチマークが利用可能です。[2]
可用性
システムの可用性は、通常、信頼性の要素として測定されます。信頼性が高まれば、可用性も高くなります (つまり、ダウンタイムが短くなります)。システムの可用性は、信頼性ではなく、テスト可能性と保守性の向上に重点を置く戦略によっても向上します。保守性の向上は、一般的に信頼性の向上よりも簡単です。保守性の見積もり (修復率) も、一般的にはより正確です。ただし、信頼性の見積もりの不確実性はほとんどの場合非常に大きいため、保守性レベルが非常に高い場合でも、信頼性の見積もりの不確実性が可用性 (予測の不確実性) の問題を支配する可能性があります。
応答時間
応答時間とは、サービス要求に応答するのにかかる合計時間です。コンピューティングでは、そのサービスは単純なディスクIOから複雑なWebページの読み込みまで、あらゆる作業単位になります。応答時間は3つの数値の合計です。[3]
- サービス時間 - 要求された作業を実行するのにかかる時間。
- 待機時間 - リクエストが実行される前に、その前にキューに入れられたリクエストを待機する必要がある時間。
- 送信時間 – 作業を実行しているコンピューターに要求を移動し、応答を要求元に返すまでにかかる時間。
処理速度
ほとんどの消費者は、既存のコンパイル済みソフトウェアの大規模なベースを実行できるように、コンピュータ アーキテクチャ (通常はIntel IA-32アーキテクチャ) を選択します。コンピュータ ベンチマークについてあまり知識がないため、動作周波数に基づいて特定の CPU を選択する消費者もいます (メガヘルツ神話を参照)。
並列コンピュータを構築するシステム設計者の中には、コストあたりの速度に基づいて CPU を選択する人もいます。
チャネル容量
チャネル容量は、通信チャネルを介して確実に送信できる情報速度の最も厳しい上限です。雑音チャネル符号化定理によれば、特定のチャネルのチャネル容量は、任意の小さなエラー確率で達成できる限界情報速度(単位時間あたりの情報単位)です。 [4] [5]
情報理論は、第二次世界大戦中にクロード・E・シャノンによって開発され、チャネル容量の概念を定義し、それを計算できる数学モデルを提供しています。重要な結果は、上で定義されたチャネルの容量は、チャネルの入力と出力の間の相互情報量の最大値によって与えられ、最大化は入力分布に関して行われるというものです。[6]
レイテンシー
レイテンシとは、観察対象のシステムにおける何らかの物理的変化の原因と結果の間の時間遅延です。レイテンシは、物理的な相互作用が発生する速度が限られているために発生します。この速度は常に光速以下です。したがって、空間次元がゼロではないすべての物理システムでは、何らかのレイテンシが発生します。
遅延の正確な定義は、観察対象のシステムと刺激の性質によって異なります。通信では、遅延の下限は通信に使用される媒体によって決まります。信頼性の高い双方向通信システムでは、ある瞬間に「送信中」の情報量に制限があるため、遅延によって情報の最大送信速度が制限されます。人間と機械の相互作用の分野では、知覚可能な遅延 (ユーザーがコマンドを実行してからコンピューターが結果を提供するまでの遅延) がユーザーの満足度と使いやすさに大きな影響を与えます。
コンピュータは、プロセスと呼ばれる一連の命令を実行します。オペレーティング システムでは、他のプロセスも実行されている場合、プロセスの実行を延期できます。さらに、オペレーティング システムは、プロセスが命令するアクションをいつ実行するかをスケジュールできます。たとえば、プロセスがコンピュータ カードの電圧出力を 1000 Hz の速度で高-低-高-低などに設定するように命令するとします。オペレーティング システムは、内部クロックに基づいて、各遷移 (高-低または低-高) のスケジュールを調整することを選択できます。レイテンシは、遷移を命令するプロセス命令と、ハードウェアが実際に電圧を高から低または低から高に遷移するまでの遅延です。
リアルタイム コンピューティングシステムを構築するシステム設計者は、最悪のケースでの応答を保証したいと考えています。CPU の割り込み待ち時間が少なく、応答が確定的であれば、 これはより簡単に実現できます。
帯域幅
コンピュータ ネットワークでは、帯域幅は、使用可能または消費されたデータ通信リソースのビット レートの測定値であり、1 秒あたりのビット数またはその倍数 (bit/s、kbit/s、Mbit/s、Gbit/s など) で表されます。
帯域幅は、デジタル通信システムにおけるネット ビット レート (別名: ピーク ビット レート、情報レート、または物理層有効ビット レート)、チャネル容量、または論理的または物理的な通信パスの最大スループットを定義する場合があります。たとえば、帯域幅テストでは、コンピュータ ネットワークの最大スループットを測定します。この用語が使用される理由は、ハートレーの法則によると、物理通信リンクの最大データ レートは、周波数帯域幅、スペクトル帯域幅、RF 帯域幅、信号帯域幅、またはアナログ帯域幅と呼ばれることもあるヘルツ単位の帯域幅に比例するためです。
スループット
一般的に言えば、スループットとは生産率、または何かを処理できる速度のことです。
通信ネットワークでは、スループットは基本的にデジタル帯域幅の消費と同義です。ワイヤレス ネットワークまたはセルラー通信ネットワークでは、ビット/秒/Hz/エリア単位、ビット/秒/Hz/サイト、またはビット/秒/Hz/セルでのシステム スペクトル効率は、最大システム スループット (総スループット) をアナログ帯域幅とシステム カバレッジ エリアの測定値で割った値です。
集積回路では、データフロー図のブロックは、多くの場合、単一の入力と単一の出力を持ち、情報の個別のパケットに対して動作します。このようなブロックの例としては、 FFTモジュールやバイナリ乗算器などがあります。スループットの単位は、伝播遅延の単位の逆数 (「メッセージあたりの秒数」または「出力あたりの秒数」) であるため、スループットを使用して、 ASICや組み込みプロセッサなどの専用機能を実行する計算デバイスを通信チャネルに 関連付けることができ、システム分析が簡素化されます。
スケーラビリティ
スケーラビリティとは、システム、ネットワーク、またはプロセスが増加する作業量を適切に処理する能力、またはその増加に対応するために拡張する能力です。
消費電力
コンピュータが使用する電力量(消費電力)。これは、太陽光、バッテリー、人力などの限られた電源を使用するシステムでは特に重要になります。
ワット当たりの性能
Googleのハードウェアのような並列コンピュータを構築するシステム設計者は、CPUの電力コストがCPU自体のコストを上回るため、ワットあたりの速度に基づいてCPUを選択します。[7]
宇宙飛行用コンピュータの場合、搭載されている電力資源が限られているため、ワットあたりの処理速度は、生の処理速度よりも有用な性能基準となります。[8]
圧縮比
圧縮は、データ ストレージ スペースや転送容量などのリソース使用量を削減できるので便利です。圧縮されたデータは使用するために解凍する必要があるため、この余分な処理によって解凍にかかる計算コストやその他のコストが発生します。この状況は、決して無料ではありません。データ圧縮は、空間と時間の複雑さのトレードオフの影響を受けます。
サイズと重量
これは、ポケットに入れておくスマートフォンから宇宙船内のポータブル組み込みシステムまで、モバイル システムの重要なパフォーマンス機能です。
環境への影響
製造時、リサイクル時、使用時におけるコンピューターの環境への影響。廃棄物の削減、有害物質の削減、コンピューターの環境への影響の最小化を目的として測定が行われます。
トランジスタ数
集積回路(IC)上のトランジスタの数。トランジスタ数は、IC の複雑さを測る最も一般的な指標です。
ベンチマーク
CPU のパフォーマンスをあらゆる側面からテストするプログラムが多数あるため、ベンチマークが開発されました。
最も有名なベンチマークは、 Standard Performance Evaluation Corporationが開発したSPECint およびSPECfpベンチマークと、Embedded Microprocessor Benchmark Consortium EEMBCが開発した Certification Mark ベンチマークです。
ソフトウェアパフォーマンステスト
ソフトウェア エンジニアリングでは、パフォーマンス テストは一般に、特定のワークロードにおけるシステムの応答性と安定性のパフォーマンスを判断するために実施されます。また、スケーラビリティ、信頼性、リソース使用率など、システムのその他の品質属性を調査、測定、検証、または確認するためにも使用できます。
パフォーマンス テストは、パフォーマンス エンジニアリングのサブセットです。パフォーマンス エンジニアリングは、システムの実装、設計、アーキテクチャにパフォーマンスを組み込むことを目的とする、新しいコンピュータ サイエンスの手法です。
プロファイリング(パフォーマンス分析)
ソフトウェア エンジニアリングにおいて、プロファイリング (「プログラム プロファイリング」、「ソフトウェア プロファイリング」) は、たとえば、プログラムのスペース (メモリ) や時間の複雑さ、特定の命令の使用、関数呼び出しの頻度と期間を測定する動的プログラム分析の形式です。プロファイリング情報の最も一般的な用途は、プログラムの最適化を支援することです。
プロファイリングは、プロファイラー(またはコード プロファイラー)と呼ばれるツールを使用して、プログラムのソース コードまたはそのバイナリ実行可能形式をインストルメント化することによって実現されます。プロファイラーでは、イベント ベース、統計、インストルメント化、シミュレーションなどのさまざまな手法を使用できます。
パフォーマンスチューニング
パフォーマンス チューニングとは、システムパフォーマンスを改善することです。これは通常、コンピューター アプリケーションですが、同じ方法を経済市場、官僚機構、その他の複雑なシステムにも適用できます。このような活動の動機はパフォーマンスの問題と呼ばれ、実際の問題である場合もあれば、予測される場合もあります。ほとんどのシステムは、負荷の増加に応じて、ある程度パフォーマンスが低下します。システムがより高い負荷を受け入れる能力はスケーラビリティと呼ばれ、より高い負荷を処理できるようにシステムを変更することはパフォーマンス チューニングと同義です。
体系的なチューニングは次の手順に従います。
- 問題を評価し、許容可能な動作を分類する数値を確立します。
- 変更する前にシステムのパフォーマンスを測定します。
- パフォーマンスの向上に重要なシステム部分を特定します。これをボトルネックと呼びます。
- ボトルネックを解消するには、システムのその部分を変更します。
- 変更後のシステムのパフォーマンスを測定します。
- 変更によってパフォーマンスが向上する場合は、それを採用します。変更によってパフォーマンスが悪化する場合は、元の状態に戻します。
知覚されるパフォーマンス
コンピュータ エンジニアリングにおける知覚パフォーマンスとは、ソフトウェア機能がタスクを実行する速度の速さを指します。この概念は主に、ユーザーの受け入れの側面に適用されます。
起動画面 (スプラッシュ画面を参照) やファイル進行状況ダイアログ ボックスを表示しても、アプリケーションの起動やファイルのダウンロードにかかる時間は短縮されません。ただし、起動画面はユーザーの目には速く見えるだけでなく、システムがユーザーの要求を処理していることを知らせる視覚的な手がかりも提供するため、人間のニーズは満たされます。
ほとんどの場合、実際のパフォーマンスを向上させると知覚されるパフォーマンスも向上しますが、物理的な制限により実際のパフォーマンスを向上させることができない場合は、テクニックを使用して知覚されるパフォーマンスを向上させることができます。
パフォーマンス方程式
特定のベンチマークプログラムを実行するのに必要な 合計時間(t )は
- 、または同等の
- [9]
どこ
- 実行時間の観点から見た「パフォーマンス」である
- は、実際に実行された命令の数です (命令パス長)。命令セットのコード密度は、N に大きく影響します。 Nの値は、命令セット シミュレータ(使用可能な場合)を使用するか、推定値 (入力変数の推定または実際の頻度分布に部分的に基づき、HLLコンパイラによって生成されたマシン コードを調べることによって決定されます) によって正確に決定できます。HLL ソース コードの行数から決定することはできません。 N は、同じプロセッサで実行されている他のプロセスの影響を受けません。ここで重要な点は、ハードウェアは通常、実行されたプログラムの N の値を追跡しない (または少なくとも簡単に利用できるようにしない) ということです。したがって、この値は命令セット シミュレーションによってのみ正確に決定できますが、これはめったに実行されません。
- 1 秒あたりのサイクル数で表したクロック周波数です。
- このベンチマークの命令あたりの平均サイクル数 (CPI) です。
- このベンチマークのサイクルあたりの平均命令数(IPC) です。
1 台のマシン上でも、異なるコンパイラーまたは異なるコンパイラー最適化スイッチを持つ同じコンパイラーによってN と CPI が変わる可能性があります。新しいコンパイラーが N または C を改善し、他方を悪化させることなく改善できる場合、ベンチマークはより高速に実行されますが、多くの場合、それらの間にはトレードオフがあります。たとえば、実行に長い時間がかかるいくつかの複雑な命令を使用する方がよいのか、ベンチマークを実行するのに多くの命令が必要であっても非常に高速に実行される命令を使用する方がよいのか、といった問題です。
CPU 設計者は特定の命令セットを実装する必要があることが多く、そのため N を変更することはできません。設計者は、(願わくば) C をあまり犠牲にせずに (より深いパイプラインやより高速なキャッシュなどの手法で) f を大幅に改善することでパフォーマンスを向上させることに重点を置くことがあります。その結果、スピード重視の CPU 設計になります。また、設計者は (願わくば) クロック周波数をあまり犠牲にせずに (アウトオブオーダー実行、スーパースカラCPU、より大きなキャッシュ、ヒット率が向上したキャッシュ、改善された分岐予測、投機的実行などの手法で) CPI を大幅に改善することでパフォーマンスを向上させることに重点を置くことがあります。その結果、頭脳的な CPU 設計になります。[10] 特定の命令セット (したがって固定の N) と半導体プロセスの場合、最大のシングルスレッド パフォーマンス (1/t) を得るには、頭脳的な手法とスピードレーサーの手法のバランスを取る必要があります。[9]
参照
- アルゴリズムの効率
- 桁違いのコンピュータ性能
- ネットワークパフォーマンス
- レイテンシ重視のプロセッサアーキテクチャ
- 最適化(コンピュータサイエンス)
- RAM更新レート
- 完全な命令セット
- ハードウェアアクセラレーション
- スピードアップ
- キャッシュ置換ポリシー
- PCハードウェアを理解する
- 相対的な効率
参考文献
- ^ Computer Performance Analysis with Mathematica、Arnold O. Allen著、Academic Press、1994年。$1.1 はじめに、1ページ。
- ^ プログラムの類似性の測定: SPEC CPU ベンチマーク スイートを使用した実験、2005 年、pp. 10–20、CiteSeerX 10.1.1.123.501
- ^ Wescott , Bob (2013). 『Every Computer Performance Book』、第 3 章:役に立つ法則。CreateSpace。ISBN 978-1482657753。
- ^ Saleem Bhatti. 「チャネル容量」。修士課程データ通信ネットワークおよび分散システム D51 - 基礎通信およびネットワークの講義ノート。2007-08-21 にオリジナルからアーカイブ。
- ^ Jim Lesurf. 「信号はノイズのように見える!」。情報と測定、第 2 版。
- ^ Thomas M. Cover、Joy A. Thomas (2006)。『情報理論の要素』John Wiley & Sons、ニューヨーク。
- ^ 「EEMBC - 組み込みマイクロプロセッサベンチマークコンソーシアム」。2005年3月27日時点のオリジナルよりアーカイブ。2009年1月21日閲覧。[1]
- ^ DJ Shirley、MK McLelland、「次世代 SC-7 RISC 宇宙飛行コンピュータ」、p. 2。
- ^ ab Paul DeMone. 「The Incredible Shrinking CPU」 2004年。[2] 2012年5月31日にWayback Machineにアーカイブ
- ^ 「天才、スピード狂、そして別れ」リンリー・グウェナップ著
