Web上のWindows、Linux、OSXの答えは簡単ですが、AIX(POWER)、HP-UX(Itanium)、Solaris(SPARC)などの市販のUNIXオペレーティングシステムではどうでしょうか。偽のキャッシュライン共有コードを試すことは、私が探している答えではありません。C/C++プログラムから市販のUNIX OSでキャッシュラインサイズを取得する方法は?
編集:CPUアーキテクチャが追加されました。
Web上のWindows、Linux、OSXの答えは簡単ですが、AIX(POWER)、HP-UX(Itanium)、Solaris(SPARC)などの市販のUNIXオペレーティングシステムではどうでしょうか。偽のキャッシュライン共有コードを試すことは、私が探している答えではありません。C/C++プログラムから市販のUNIX OSでキャッシュラインサイズを取得する方法は?
編集:CPUアーキテクチャが追加されました。
パフォーマンスを最適化しようとしている場合、ベンチマークはまさに実行する必要があります。たとえば、ATLASを参照してください。
パフォーマンスを最適化しようとしていないのであれば、なぜキャッシュラインのサイズに気を配りますか、ライン数と結合性には注意してください。
どのCPUアーキテクチャをサポートする必要がありますか?
さまざまなシステムやアーキテクチャでこの種の情報を提供するhwlocライブラリ(BSDライセンス)を見ることができます。コマンドラインツールlstopoまたは提供されたAPIを使用できます(documentationを参照)。
あなたがそのコマンドを使用することができますSolarisの(SPARCおよびx86アーキテクチャの両方で):
$ prtpicl -v -c cpu | grep -i cache-line-size
:l1-dcache-line-size 0x40
:l1-icache-line-size 0x40
:l2-cache-line-size 0x40
私は間違いなくベンチマークについて同意します!私が誤ったキャッシュライン共有を試したくないと言ったのは、実験は製品のキャッシュラインサイズを調べる方法ではなく、システムコールまたはインラインasmコールを好むでしょう。 – okun