3

アムダールの法則は、リソースが改善されたシステムに期待できる一定の作業負荷でのタスクの実行の理論上の高速化を理論的に示しています。アムダールの法則はどの程度正確ですか?

Slatency全タスクの実行のレイテンシーでの理論的な速度向上です。

sは、システムのリソースの改善から利益を得るタスクの部分の実行の高速化です。

pは、改善の前にシステムのリソースの改善から利益を受ける部分に関するタスク全体の実行時間のパーセンテージです。

Slatency = 1/[(1-p) + (p/s)]

これは、すべての理論であり、それが適用できないとき、それは私、思っていました。 CPUの性能を見積もるのはどれほど正確ですか?

答えて

3

プログラムの一部をチューニングする場合は、マイクロベンチマークを作成して、それを単離してテストすることがよくあります。

これは、完全なプログラムの一部として実行されたときの動作を必ずしも反映しているわけではありません。 (つまり、タイトループではなく、チューニングしているパートの実行間で他の作業を行う)。

sin(x)計算が高価であり、マイクロベンチマークで勝てるルックアップテーブルに置き換えられました。なぜなら、十分な小さなテーブルは、その間に他の作業を行わずに連続して呼び出されたときにキャッシュ内にとどまるからです。同様に、マイクロベンチマークは、ブランチ予測がプライムされ、コードキャッシュの圧力がない(ループのアンロールがより良く見えるようにする)パフォーマンスを測定します。

しかし、それはプログラム全体の一部として機能するためにあなたの推定値がsであることを意味するだけで、Amdahlの法則は不正確ではありません。それはそれを間違って使用する場合に過ぎません。


しかし、これは、あなたの質問に本当の答えにつながるん:

は、複数のキャッシュにつながる方法で、プログラムの一部をスピードアップやTLBは、分岐予測ミスなどでのミス他のプログラムの一部がアムダールの法律に違反しています。

+0

ありがとうございました。 's'の見積もりがとても厄介であることを認識していませんでした。しかしそれは理にかなっています。 –

+2

Amdalhの法則は単純な数学的関係であり、その意味では間違いありませんが、それが想定している(または通常は教科書のアプリケーションで想定されている)基礎的な性能モデルは単純すぎます。プログラムを2つの部分に均等に分割できます:一部の「リソース改善」(同様にリソースの削減)と影響を受けない別の部分の影響を受ける1つの部分。現代のホストのような非常に複雑なシステムでは、通常、そのようなきれいな部分はありません。ピーターが上で説明したように、ある部分の変更は他の部分に対する任意のノックオン効果を持ちます。 – BeeOnRope

関連する問題