コンピュータアーキテクチャにおいて、サイクルあたりの命令数(IPC)、一般にクロックあたりの命令数と呼ばれるものは、プロセッサのパフォーマンスの一側面であり、クロックサイクルごとに実行される命令の平均数です。これは、命令あたりのサイクル数の乗法逆数です。[ 1 ] [ 2 ] [ 3 ]
初期のCPUは命令実行のすべてのステップを順次実行していましたが、現代のCPUは多くの処理を並列で行うことができます。クロック速度を単純に倍増させることは不可能であるため、命令パイプライン処理とスーパースカラプロセッサ設計が進化し、CPUはさまざまな実行ユニットを並列に利用できるようになりました。これは、入力される命令を先読みして最適化するものです。この結果、1サイクルあたりの実行命令数が1をはるかに上回り、後続のCPU世代における速度向上の大きな要因となっています。
IPC(命令/サイクル)の計算は、まず一連のコードを実行し、それを完了するために必要なマシンレベルの命令数を計算します。次に、高性能タイマーを使用して、実際のハードウェア上でそれを完了するために必要なクロックサイクル数を計算します。最終的な結果は、命令数をCPUクロックサイクル数で割ることによって得られます。
プロセッサの1秒あたりの命令数と浮動小数点演算回数は、1サイクルあたりの命令数に、当該プロセッサのクロック周波数(ヘルツで表される1秒あたりのサイクル数)を乗じることで算出できます。1秒あたりの命令数は、プロセッサの性能を概算する指標となります。
クロックサイクルごとに実行される命令数は、特定のプロセッサにとって一定ではありません。実行されるソフトウェアがプロセッサ、ひいてはマシン全体、特にメモリ階層とどのように相互作用するかによって決まります。しかし、プロセッサの特定の機能、例えば複数の算術論理演算ユニット(ALUは基本的な算術演算と論理演算を実行できるプロセッササブシステム)の存在や短いパイプラインなどは、平均以上のIPC値を持つ設計につながる傾向があります。異なる命令セットを比較する場合、同じチップ技術を使用したより複雑な命令セットの実装よりも、より単純な命令セットの方がIPC値が高くなる場合があります。ただし、より複雑な命令セットの方が、より少ない命令でより多くの有用な処理を実行できる可能性があります。そのため、異なる命令セット間(例えばx86とARM)のIPC値を比較することは、通常意味がありません。
コンピュータで実行できる有用な作業は、プロセッサの速度以外にも多くの要因に依存します。これらの要因には、命令セットアーキテクチャ、プロセッサのマイクロアーキテクチャ、コンピュータシステムの構成(ディスクストレージシステムの設計、その他の接続デバイスの機能と性能など)、オペレーティングシステムの効率性、およびアプリケーションソフトウェアの高レベル設計が含まれます。
コンピュータのユーザーや購入者にとって、システム性能を示す指標としては、1サイクルあたりの命令数(IPC)よりも、アプリケーションのベンチマークの方がはるかに有用であることが多い。しかし、IPCはクロック速度だけがコンピュータ性能に関わる唯一の要素ではないことを示す一例でもある。