暗号コミュニティでは、アルゴリズムのパフォーマンスをサイクル/バイトで測定するのが一般的です。私の質問は、CPUアーキテクチャのどのパラメータがこの数に影響を与えているかということです。もちろんクロックスピードを除いて:)
3 に答える
サイクル/バイトに影響を与える可能性があるいくつかの CPU 機能を以下に示します。
- パイプラインの深さ
- 並行して作業できるIUおよび/またはFPUの数
- キャッシュメモリのサイズ
- 分岐予測のアルゴリズム
- キャッシュミスを処理するためのアルゴリズム
さらに、 WCET (最悪の場合の実行時間)を評価する一般的な問題に興味があるかもしれません。
2 つの重要な要素は次のとおりです。
CPU の ISA、またはより具体的には、実行する必要がある操作に CPU 命令がどれだけ密接にマップされているか - 特定の操作を 1 つの CPU で 1 つの命令で実行できるが、別の CPU で 3 つの命令が必要な場合、最初の CPUはおそらくもっと早く。CPU に特定の暗号化命令がある場合、または活用できる SIMD などの拡張機能がある場合は、はるかに優れています。
CPU の命令発行率、つまり、クロック サイクルごとに発行できる命令の数
主に:
- メモリバス帯域幅
- サイクルあたりの CPU 命令
CPU が 1 秒あたりにアクセスできるメモリの量は、制限要因になる可能性があります。それは、アルゴリズムと、作業の大部分がメモリアクセスであることに依存します。また、メモリのどの部分がアクセスされるかは、メモリ キャッシュの動作に影響します。
現在、命令時間は命令にかかるサイクル数ではなく、同じサイクルで実行できる命令の数です。CPU のプリプロセッサは、複数の命令を並列に実行するように並べます。そのため、CPU の並列ラインの数と、コードをどの程度並列化できるかによって異なります。一般に、アルゴリズムの条件分岐が多いと、並列化が難しくなります。