Linuxを実行しているx86-64(Intel Nehalem)マシンでのTLBミスによるパフォーマンスオーバーヘッドを見積もりたいと思います。いくつかのパフォーマンスカウンターを使用して、この見積もりを取得したいと思います。誰かがこれを推定するための最良の方法についていくつかの指針を持っていますか?
ありがとうアルカ
Linuxを実行しているx86-64(Intel Nehalem)マシンでのTLBミスによるパフォーマンスオーバーヘッドを見積もりたいと思います。いくつかのパフォーマンスカウンターを使用して、この見積もりを取得したいと思います。誰かがこれを推定するための最良の方法についていくつかの指針を持っていますか?
ありがとうアルカ
「Westmere」ベースのシステムにアクセスできる場合、コードのパフォーマンス特性は「Nehalem」でのパフォーマンス特性と非常に似ているはずですが、ほぼ正確に測定する新しいハードウェアパフォーマンスカウンターイベントにアクセスできます。欲しいです。
Westmereでは、TLBミスが処理されるのを待っている間に失われるパフォーマンスの最良の見積もりは、おそらくハードウェアパフォーマンスカウンターイベント08H、マスク04H「DTLB_LOAD_MISSES.WALK_CYCLES」からです。第2レベルTLBでのロードミスによる歩行」。これについては、http: //www.intel.com/content/www/からオンラインで入手できる「インテル®64およびIA-32アーキテクチャーソフトウェア開発者マニュアル第3B巻:システムプログラミングガイド、パート2」(文書番号:253669)で説明されてい ます。 us / en / archive-and-technology / 64-ia-32-architectures-software-developer-vol-3b-part-2-manual.html
このイベントが必要な理由は、TLBミス処理時間が、ページテーブルエントリを含むキャッシュラインの読み取りに必要な時間によって支配されるためです。そのキャッシュラインがL2キャッシュにある場合、TLBミスのオーバーヘッドは非常に小さくなります(10サイクルのオーダー)。回線がL3キャッシュにある場合は、おそらく25サイクルです。回線がメモリ内にある場合、約200サイクル。