知識ベース

コンピューター性能

コンピューティングにおいて、 コンピューターのパフォーマンスとは、コンピューターシステムによって達成される有用な作業の量です。特定のコンテキスト以外では、コンピューターのパフォーマンスは、コンピュータープログラムの命令を実行する精度、効率、速度の観点から推定されます。コンピューターのパフォーマンスが高くなると、次の要因の1つ以上が関係する場合があります。

  • 特定の作業に対する短い応答時間。
  • 高スループット(処理作業の速度)。
  • コンピューティングリソースの使用率が低い。
  • コンピューティングシステムまたはアプリケーションの高可用性。
    • 高速(または非常にコンパクトな)データの圧縮および圧縮解除。
  • 高帯域幅。
  • 短いデータ送信時間。

技術的および非技術的定義

上記の1つ以上のメトリックを使用して、コンピューターシステムのパフォーマンスを測定可能な技術用語で評価できます。このようにして、パフォーマンスは

  • 変更前後の、他のシステムまたは同じシステムと比較して
  • 絶対条件で、例えば契約上の義務を履行するため

上記の定義は科学的、技術的アプローチに関連していますが、Arnold Allenによる以下の定義は、技術的でない対象者にとって有用です。

コンピュータパフォーマンスのパフォーマンス という言葉 は、他のコンテキストでパフォーマンスが意味するものと同じことを意味します。つまり、「コンピュータが行うべき仕事をどれだけうまくやっているか」を意味します。

ソフトウェア品質の側面として

コンピュータソフトウェアのパフォーマンス、特にソフトウェアアプリケーションの応答時間は、人間とコンピュータの相互作用において重要なソフトウェア品質の側面です。

パフォーマンスエンジニアリング

システムエンジニアリング内のパフォーマンスエンジニアリングは、システム開発ライフサイクルのあらゆる段階で適用される役割、スキル、アクティビティ、プラクティス、ツール、および成果物のセットを網羅し、パフォーマンスを満たすようにソリューションを設計、実装、運用サポートすることを保証しますソリューションに定義された要件。

パフォーマンスエンジニアリングは、パフォーマンスのタイプ間のトレードオフを継続的に処理します。 CPU設計者は、他の領域でCPUのパフォーマンスを犠牲にすることなく、以下に示すパフォーマンスの側面の1つを改善することにより、CPU全体のパフォーマンスを向上させる方法を見つけることができます。たとえば、より高速で高速なトランジスタからCPUを構築します。

ただし、あるタイプのパフォーマンスを極端に上げると、CPUの全体的なパフォーマンスが低下する場合があります。これは、チップのクロックレートなど、印象的な数字を得るために他の重要な側面が犠牲になったためです(メガヘルツ神話を参照)。

アプリケーションパフォーマンスエンジニアリング

アプリケーションパフォーマンスエンジニアリング(APE)は、ますます分散するモバイル、クラウド、および地上のIT環境でのアプリケーションパフォーマンスに関連する課題に対処するために設計されたパフォーマンスエンジニアリング内の特定の方法論です。これには、アプリケーションのライフサイクルのあらゆる段階で適用される役割、スキル、アクティビティ、プラクティス、ツール、成果物が含まれ、非機能的なパフォーマンス要件を満たすようにアプリケーションを設計、実装、運用サポートします。

パフォーマンスの側面

コンピューターのパフォーマンスメトリック(測定対象)には、可用性、応答時間、チャネル容量、待ち時間、完了時間、サービス時間、帯域幅、スループット、相対効率、スケーラビリティ、ワットあたりのパフォーマンス、圧縮率、命令パスの長さ、速度が含まれます。 CPUベンチマークが利用可能です。

可用性

通常、システムの可用性は、信頼性の要因として測定されます。信頼性が向上するにつれて、可用性も低下します(つまり、ダウンタイムが減少します)。システムの可用性は、信頼性ではなくテスト容易性と保守性の向上に焦点を当てる戦略によっても向上します。一般的に、保守性の改善は信頼性よりも簡単です。保守性の見積もり(修理率)も一般に正確です。ただし、ほとんどの場合、信頼性の推定値の不確実性は非常に大きいため、保守性レベルが非常に高い場合でも、可用性(予測の不確実性)問題を支配する可能性があります。

反応時間

応答時間は、サービスの要求に応答するのにかかる合計時間です。コンピューティングでは、そのサービスは、単純なディスクIOから複雑なWebページの読み込みまで、あらゆる作業単位になります。応答時間は3つの数値の合計です。

  • サービス時間-要求された作業にかかる時間。
  • 待機時間-リクエストが実行される前に、リクエストがその前にキューに入れられるのを待機する時間。
  • 転送時間-要求を処理を実行しているコンピューターに移動し、応答を要求者に戻すのにかかる時間。

処理速度

ほとんどの消費者は、既存のプリコンパイルされたソフトウェアの大規模なベースを実行できるように、コンピューターアーキテクチャ(通常はIntel IA32アーキテクチャ)を選択します。コンピュータのベンチマークでは比較的情報が少ないため、動作周波数に基づいて特定のCPUを選択するものもあります(メガヘルツ神話を参照)。

並列コンピューターを構築する一部のシステム設計者は、1ドルあたりの速度に基づいてCPUを選択します。

チャネル容量

チャネル容量は、通信チャネルで確実に送信できる情報レートの最も厳しい上限です。ノイズのあるチャネルコーディングの定理により、特定のチャネルのチャネル容量は、任意の小さなエラー確率で達成できる制限情報レート(単位時間あたりの情報の単位)です。

第二次世界大戦中にクロードE.シャノンによって開発された情報理論は、チャネル容量の概念を定義し、それを計算できる数学モデルを提供します。重要な結果は、上記で定義したチャネルの容量は、チャネルの入力と出力の間の相互情報の最大値によって与えられることを示しています。最大化は入力分布に関するものです。

待ち時間

遅延とは、観察されているシステムの物理的変化の原因と結果の間の時間遅延です。遅延は、物理的な相互作用が発生する速度の制限の結果です。この速度は常に光の速度以下です。したがって、ゼロ以外の空間次元を持つすべての物理システムでは、何らかの遅延が発生します。

レイテンシの正確な定義は、観察されるシステムと刺激の性質に依存します。通信では、待ち時間の下限は通信に使用されるメディアによって決まります。信頼性のある双方向通信システムでは、多くの場合、「飛行中」の情報の量には常に制限があるため、待ち時間によって情報を送信できる最大速度が制限されます。ヒューマンマシンインタラクションの分野では、知覚可能な遅延(ユーザーがコマンドを実行してからコンピューターが結果を提供するまでの遅延)は、ユーザーの満足度と使いやすさに大きく影響します。

コンピューターは、プロセスと呼ばれる一連の命令を実行します。オペレーティングシステムでは、他のプロセスも実行中の場合、プロセスの実行を延期できます。さらに、オペレーティングシステムは、プロセスが指示しているアクションをいつ実行するかをスケジュールできます。たとえば、コンピューターカードの電圧出力を1000 Hzの速度で高低低高低などに設定するようにプロセスがコマンドを実行するとします。オペレーティングシステムは、内部クロックに基づいて各遷移(高-低または低-高)のスケジューリングを調整することを選択できます。レイテンシは、遷移を命令するプロセス命令と、実際に電圧を高から低または低から高に遷移させるハードウェアとの間の遅延です。

リアルタイムコンピューティングシステムを構築するシステム設計者は、最悪の場合の応答を保証したいと考えています。 CPUの割り込みレイテンシが低く、応答が確定的である場合、これは簡単です。

帯域幅

コンピューターネットワーキングでは、帯域幅は、利用可能なデータ通信リソースまたは消費されたデータ通信リソースのビットレートの測定値であり、ビット/秒またはその倍数(ビット/秒、kビット/秒、Mビット/秒、Gビット/秒など)で表されます。

帯域幅は、デジタルビットレート(別名、ピークビットレート、情報レート、または物理層の有効ビットレート)、チャネル容量、またはデジタル通信システムの論理または物理通信パスの最大スループットを定義する場合があります。たとえば、帯域幅テストでは、コンピューターネットワークの最大スループットを測定します。この使用法の理由は、Hartleyの法則によれば、物理通信リンクの最大データレートはヘルツ単位の帯域幅に比例するため、周波数帯域幅、スペクトル帯域幅、RF帯域幅、信号帯域幅、またはアナログ帯域幅とも呼ばれます。

スループット

一般的に、スループットとは生産の速度または何かを処理できる速度です。

通信ネットワークでは、スループットは基本的にデジタル帯域幅の消費と同義です。無線ネットワークまたはセルラー通信ネットワークでは、ビット/秒/ Hz /エリア単位、ビット/秒/ Hz /サイトまたはビット/秒/ Hz /セル単位のシステムスペクトル効率は、最大システムスループット(総スループット)をアナログ帯域幅とシステムカバレッジエリアの何らかの尺度。

集積回路では、多くの場合、データフロー図のブロックは単一の入力と単一の出力を持ち、情報の個別のパケットで動作します。そのようなブロックの例は、FFTモジュールまたはバイナリ乗算器です。スループットの単位は、「メッセージごとの秒数」または「出力ごとの秒数」である伝播遅延の単位の逆数であるため、スループットを使用して、ASICや組み込みプロセッサなどの専用機能を実行する計算デバイスを関連付けることができます通信チャネル、システム分析の簡素化。

相対効率

拡張性

スケーラビリティとは、システム、ネットワーク、またはプロセスが能力のある方法で増大する作業量を処理する能力、またはその成長に対応するために拡大する能力です。

消費電力

コンピューターが使用する電気の量。これは、太陽光、バッテリー、人力などの限られた電源を持つシステムにとって特に重要になります。

ワットあたりのパフォーマンス

Googleのハードウェアなどの並列コンピューターを構築するシステム設計者は、CPUに電力を供給するコストがCPU自体のコストを上回るため、ワットあたりの速度に基づいてCPUを選択します。

圧縮比

圧縮は、データストレージスペースや伝送容量などのリソース使用量の削減に役立つため、便利です。使用するには圧縮データを解凍する必要があるため、この余分な処理により、解凍による計算コストまたはその他のコストがかかります。この状況は無料のランチではありません。データ圧縮には、時空間の複雑さのトレードオフが伴います。

サイズと重量

これは、ポケットに入れたスマートフォンから宇宙船のポータブルな組み込みシステムに至るまで、モバイルシステムの重要なパフォーマンス機能です。

環境への影響

製造中とリサイクル中、および使用中の環境に対するコンピューターの影響。測定は、廃棄物の削減、有害物質の削減、およびコンピューターのエコロジカルフットプリントの最小化を目的として行われます。

トランジスタ数

トランジスタ数は、集積回路(IC)上のトランジスタの数です。トランジスタ数は、ICの複雑さの最も一般的な尺度です。

ベンチマーク

パフォーマンスのあらゆる側面でCPUをテストするプログラムが非常に多いため、ベンチマークが開発されました。

最も有名なベンチマークは、Standard Performance Evaluation Corporationが開発したSPECintおよびSPECfpベンチマーク、およびEmbedded Microprocessor Benchmark Consortium EEMBCが開発したConsumerMarkベンチマークです。

ソフトウェア性能試験

ソフトウェアエンジニアリングでは、パフォーマンステストは一般に、特定のワークロードでの応答性と安定性に関してシステムがどのように実行されるかを決定するために実行されるテストです。また、スケーラビリティ、信頼性、リソース使用量など、システムの他の品質属性を調査、測定、検証、または検証することもできます。

パフォーマンステストはパフォーマンスエンジニアリングのサブセットであり、システムの実装、設計、アーキテクチャにパフォーマンスを組み込むことを目的とした新しいコンピューターサイエンスの実践です。

プロファイリング(パフォーマンス分析)

ソフトウェア工学では、プロファイリング(「プログラムプロファイリング」、「ソフトウェアプロファイリング」)は、たとえばプログラムのスペース(メモリ)または時間の複雑さ、特定の命令の使用、または頻度を測定する動的プログラム分析の形式です。関数呼び出しの期間。プロファイリング情報の最も一般的な使用法は、プログラムの最適化を支援することです。

プロファイリングは、 プロファイラー (またはコードプロファイラー )と呼ばれるツールを使用して、プログラムソースコードまたはそのバイナリ実行可能形式のいずれかをインストルメント化することによって実現されます。プロファイラでは、イベントベース、統計、計装、シミュレーションなどのさまざまな手法を使用できます。

性能調整

パフォーマンスチューニングは、システムパフォーマンスの向上です。通常、これはコンピューターアプリケーションですが、同じ方法を経済市場、官僚、またはその他の複雑なシステムに適用できます。このようなアクティビティの動機はパフォーマンスの問題と呼ばれ、実際の問題または予想される問題です。ほとんどのシステムは、負荷の増加に応じて、ある程度パフォーマンスが低下します。より高い負荷を受け入れるシステムの能力はスケーラビリティと呼ばれ、より高い負荷を処理するようにシステムを変更することはパフォーマンスチューニングと同義です。

体系的なチューニングは次の手順に従います。

  1. 問題を評価し、許容可能な動作を分類する数値を確立します。
  2. 変更前にシステムのパフォーマンスを測定します。
  3. パフォーマンスを改善するために重要なシステムの部分を特定します。これはボトルネックと呼ばれます。
  4. システムのその部分を変更して、ボトルネックを取り除きます。
  5. 変更後のシステムのパフォーマンスを測定します。
  6. 変更によりパフォーマンスが向上する場合は、それを採用します。変更によりパフォーマンスが低下する場合は、以前の状態に戻します。

知覚されるパフォーマンス

コンピュータエンジニアリングにおける知覚パフォーマンスとは、ソフトウェア機能がタスクを実行するためにどれだけ速く見えるかを指します。この概念は、主にユーザー受け入れの側面に適用されます。

アプリケーションの起動にかかる時間、またはダウンロードするファイルは、起動画面(スプラッシュ画面を参照)またはファイルの進行状況ダイアログボックスを表示しても高速化されません。しかし、それは人間のニーズをいくつか満たします。システムはリクエストを処理していることをユーザーに知らせる視覚的な合図を提供するだけでなく、ユーザーにはより速く見えます。

ほとんどの場合、実際のパフォーマンスを上げると知覚されるパフォーマンスが向上しますが、物理的な制限のために実際のパフォーマンスを上げることができない場合は、知覚されるパフォーマンスを高めるための手法を使用できます。

性能方程式

特定のベンチマークプログラムの実行に必要な合計時間( t )は、

t = NCf {\ displaystyle t = {\ tfrac {NC} {f}}}または同等のP = IfN {\ displaystyle P = {\ tfrac {If} {N}}}

どこ

  • P = 1t {\ textstyle P = {\ frac {1} {t}}}は、実行時間に関して「パフォーマンス」です
  • N {\ textstyle N}は、実際に実行された命令の数(命令パスの長さ)です。命令セットのコード密度はNに強く影響します。 Nの値は、命令セットシミュレーター(使用可能な場合)を使用するか、入力変数の推定または実際の頻度分布に部分的に基づいて、HLLコンパイラーから生成されたマシンコードを調べることで正確に決定できます。 HLLソースコードの行数から判断することはできません。 Nは、同じプロセッサで実行されている他のプロセスの影響を受けません。ここで重要な点は、ハードウェアは通常、実行されたプログラムのNの値を追跡しない(または少なくとも簡単に使用可能にする)ことです。したがって、値は命令セットのシミュレーションによってのみ正確に決定できますが、これはほとんど行われていません。
  • f {\ textstyle f}は、サイクル/秒のクロック周波数です。
  • C = 1I {\ textstyle C = {\ frac {1} {I}}}は、このベンチマークの命令あたりの平均サイクル(CPI)です。
  • I = 1C {\ textstyle I = {\ frac {1} {C}}}は、このベンチマークのサイクルあたりの平均命令(IPC)です。

1台のマシン上でも、異なるコンパイラーまたは異なるコンパイラー最適化スイッチを備えた同じコンパイラーがNとCPIを変更する可能性があります。それらの間-たとえば、実行に長い時間がかかるいくつかの複雑な命令を使用する、またはベンチマークを実行するのに多くの時間がかかるにもかかわらず、非常に高速に実行する命令を使用する方が良いでしょうか?

CPU設計者は特定の命令セットを実装する必要があることが多いため、Nを変更することはできません。設計者はfを大幅に改善することでパフォーマンスを改善することに集中します(より深いパイプラインや高速キャッシュなどの手法を使用)。 Cが多すぎる-スピードデーモンCPU設計につながります。時々、デザイナーはCPIの大幅な改善(アウトオブオーダー実行、スーパースカラーCPU、より大きなキャッシュ、ヒット率の改善されたキャッシュ、改善された分岐予測、投機的実行などの技術を使用)によってパフォーマンスの改善に集中します。うまくいけば)あまりにも多くのクロック周波数を犠牲にしないでください-脳のCPU設計につながります。特定の命令セット(したがって固定N)と半導体プロセスでは、最大のシングルスレッドパフォーマンス(1 / t)には、頭脳のテクニックとスピードレーサーのテクニックのバランスが必要です。