英語版
このページの英語版を見る
core.cpuid
ホストCPUの特性を識別し、キャッシュサイズやアセンブリの最適化に関する情報を提供する。
キャッシュサイズとアセンブリ最適化のヒントに関する情報を提供する。このモジュールは
主にアセンブリ言語プログラマー向けに提供される。
参考文献 この情報の中には、探し出すのが非常に困難なものもあった。いくつかの 以下の文書のいくつかは、検索エンジンによって保存されたキャッシュされたバージョンでのみ見つかった! このコードは
- 「Intel(R) 64 and IA-32 Architectures Software Developers Manual、 Volume 2A: Instruction Set Reference, A-M" (2007) に記載されている情報を使用している。
- "AMD CPUID Specification", Advanced Micro Devices, Rev 2.28 (2008).
- AMD Processor Recognition Application Note For Processors Prior to AMD 0Fh Processors", Advanced Micro Devices, Rev 2.28 (2008). Family 0Fh Processors", Advanced Micro Devices, Rev 3.13 (2005).
- 「AMD Geode(TM) GX Processors Data Book"、 Advanced Micro Devices, Publication ID 31505E, (2005).
- "AMD K6 Processor Code Optimisation", Advanced Micro Devices, Rev D (2000).
- 「Application note 106: Software Customization for the 6x86 Family"、 サイリックス・コーポレーション、Rev 1.5 (1998)
- https://www.datasheetcatalog.org/datasheet/nationalsemiconductor/GX1.pdf
- "Geode(TM) GX1 Processor Series Low Power Integrated X86 Solution"、 ナショナル セミコンダクター、(2002)
- "The VIA Isaiah Architecture", G. Glenn Henry, Centaur Technology, Inc (2008).
- https://www.sandpile.org/ia32/cpuid.htm
- https://www.akkadia.org/drepper/cpumemory.pdf
- 「プログラマーがメモリについて知っておくべきこと」、 Ulrich Depper, Red Hat, Inc. (2007).
- 「Windows カーネルによる CPU 識別", G. Chappell (2009). https://www.geoffchappell.com/viewer.htm?doc=studies/windows/km/cpu/cx8.htm
- Intel(R) Processor Identification and the CPUID Instruction, Application Note 485" (2009). 注釈 485"(2009)。
Bugs:
現在のところ、x86とItanium CPUでのみ動作する。
多くのプロセッサーでは、CPUID命令のマイクロコードにバグがある、
そのため、キャッシュ情報が正しくないことがある。
License:
Authors:
Don Clugston, Tomas Lindquist Olsen <tomas@famolsen.dk>
ソース core/cpuid.d
- struct
CacheInfo
; - キャッシュのサイズと動作
- size_t
size
; - CPUごとのキャッシュのサイズ(キロバイト単位)。 L1ユニファイド(データ+コード)キャッシュの場合、このサイズは物理サイズの半分である。 (通常、データサイズはコードサイズよりはるかに大きいため、サイズが大きい場合は半分にしない。 クリティカルなループでは、データサイズはコードサイズよりはるかに大きいからである)。
- ubyte
associativity
; - 連想配列の数:
- 1 = ダイレクトマップド
- 2 = 2ウェイセット連想
- 3 = 3ウェイセット連想
- ubyte.max=完全な連想。
- uint
lineSize
; - キャッシュミスが発生したときにキャッシュに読み込まれるバイト数。
- CacheInfo[5]
datacache
; - 廃止予定。代わりにdataCaches 。
- pure nothrow @nogc @property @trusted const(CacheInfo)[5]
dataCaches
(); - データキャッシュ。物理キャッシュ・レベルが5より少ない場合、残りのレベルはsize_maxに設定される、 残りのレベルは size_t.max に設定される (== メモリ空間全体)。
- pure nothrow @nogc @property @trusted string
vendor
(); - ベンダーの文字列を返す。 機能の決定に使用しないこと! いくつかのCPUは、プログラム可能なvendorIDを持っていることに注釈:。
- pure nothrow @nogc @property @trusted string
processor
(); - プロセッサの文字列を返す。
- pure nothrow @nogc @property @trusted bool
x87onChip
(); - x87 FPUをオンチップ搭載しているか?
- pure nothrow @nogc @property @trusted bool
mmx
(); - MMXはサポートされているか?
- pure nothrow @nogc @property @trusted bool
sse
(); - SSEはサポートされているか?
- pure nothrow @nogc @property @trusted bool
sse2
(); - SSE2 はサポートされているか?
- pure nothrow @nogc @property @trusted bool
sse3
(); - SSE3がサポートされているか?
- pure nothrow @nogc @property @trusted bool
ssse3
(); - SSSE3はサポートされているか?
- pure nothrow @nogc @property @trusted bool
sse41
(); - SSE4.1はサポートされているか?
- pure nothrow @nogc @property @trusted bool
sse42
(); - SSE4.2はサポートされているか?
- pure nothrow @nogc @property @trusted bool
sse4a
(); - SSE4aはサポートされているか?
- pure nothrow @nogc @property @trusted bool
aes
(); - AES はサポートされているか?
- pure nothrow @nogc @property @trusted bool
hasPclmulqdq
(); - pclmulqdq はサポートされているか
- pure nothrow @nogc @property @trusted bool
hasRdrand
(); - rdrandはサポートされているか
- pure nothrow @nogc @property @trusted bool
avx
(); - AVXがサポートされているか
- pure nothrow @nogc @property @trusted bool
vaes
(); - VEX-Encoded AES はサポートされているか?
- pure nothrow @nogc @property @trusted bool
hasVpclmulqdq
(); - vpclmulqdq がサポートされている
- pure nothrow @nogc @property @trusted bool
fma
(); - FMA がサポートされている
- pure nothrow @nogc @property @trusted bool
fp16c
(); - FP16C がサポートされている
- pure nothrow @nogc @property @trusted bool
avx2
(); - AVX2がサポートされている
- pure nothrow @nogc @property @trusted bool
hle
(); - HLE (ハードウェア・ロック・エリジョン) がサポートされている
- pure nothrow @nogc @property @trusted bool
rtm
(); - RTM (制限付きトランザクションメモリ) がサポートされている
- pure nothrow @nogc @property @trusted bool
avx512f
(); - AVX512F がサポートされている
- pure nothrow @nogc @property @trusted bool
hasRdseed
(); - rdseed がサポートされているか
- pure nothrow @nogc @property @trusted bool
hasSha
(); - SHA がサポートされているか
- pure nothrow @nogc @property @trusted bool
amd3dnow
(); - AMD 3DNOW はサポートされているか?
- pure nothrow @nogc @property @trusted bool
amd3dnowExt
(); - AMD 3DNOW Extはサポートされているか?
- pure nothrow @nogc @property @trusted bool
amdMmx
(); - AMDのMMX拡張はサポートされているか?
- pure nothrow @nogc @property @trusted bool
hasFxsr
(); - fxsave/fxrstorはサポートされているか?
- pure nothrow @nogc @property @trusted bool
hasCmov
(); - cmovはサポートされているか?
- pure nothrow @nogc @property @trusted bool
hasRdtsc
(); - rdtscはサポートされているか?
- pure nothrow @nogc @property @trusted bool
hasCmpxchg8b
(); - cmpxchg8bはサポートされているか?
- pure nothrow @nogc @property @trusted bool
hasCmpxchg16b
(); - cmpxchg8bはサポートされているか?
- pure nothrow @nogc @property @trusted bool
hasSysEnterSysExit
(); - SYSENTER/SYSEXITはサポートされているか?
- pure nothrow @nogc @property @trusted bool
has3dnowPrefetch
(); - 3DNowプリフェッチはサポートされているか?
- pure nothrow @nogc @property @trusted bool
hasLahfSahf
(); - LAHFとSAHFは64ビットモードでサポートされているか?
- pure nothrow @nogc @property @trusted bool
hasPopcnt
(); - POPCNT はサポートされているか?
- pure nothrow @nogc @property @trusted bool
hasLzcnt
(); - LZCNTはサポートされているか?
- pure nothrow @nogc @property @trusted bool
isX86_64
(); - これはIntel64かAMD64か?
- pure nothrow @nogc @property @trusted bool
isItanium
(); - IA64(Itanium)プロセッサか?
- pure nothrow @nogc @property @trusted bool
hyperThreading
(); - ハイパースレッディングはサポートされているか?
- pure nothrow @nogc @property @trusted uint
threadsPerCPU
(); - CPUあたりのスレッド数を返す
- pure nothrow @nogc @property @trusted uint
coresPerCPU
(); - CPUのコア数を返す
- pure nothrow @nogc @property @trusted bool
preferAthlon
(); - アセンブリコードの最適化のヒント前方互換性のために、CPUは異なるマイクロアーキテクチャと比較される。 マイクロアーキテクチャと比較される。32ビットx86の場合、インテルPPro/PII/PIII/PMファミリーと比較される。 インテル PPro/PII/PIII/PM ファミリーと比較される。 主な32ビットx86マイクロアーキテクチャの「王朝」は以下の通りである:
- インテルP6(PentiumPro、PII、PIII、PM、Core、Core2)。
- AMD Athlon(K7、K8、K10)。
- Intel NetBurst(Pentium 4、Pentium D)。
- 注文中のペンティアム(ペンティアム1、PMMX、アトム)
- Intel Atom 230/330 (ファミリー6、モデル0x1C)はインオーダーコアである。
- Centaur Isiah = VIA Nano (ファミリー6、モデルF)はアウトオブオーダーコアである。
- pure nothrow @nogc @property @trusted bool
preferPentium4
(); - この CPU は、PentiumPro.Core2 コードよりも Pentium4 コードで優れた性能を発揮するか?
- pure nothrow @nogc @property @trusted bool
preferPentium1
(); - このCPUは、Pentium ProのコードよりもPentium Iのコードで優れた性能を発揮するか?
- uint
stepping
; - 警告このフィールドは将来のリリースでプロパティになる予定である。プロセッサー型(ベンダー依存)。 これは表示目的でのみ表示されるべきである。
- uint
model
; - 警告:このフィールドは将来のリリースでプロパティ化される予定である。プロセッサ型(ベンダー依存)。 これは表示目的でのみ表示されるべきである。
- uint
family
; - 警告:このフィールドは将来のリリースでプロパティ化される予定である。プロセッサ型(ベンダー依存)。 これは表示目的でのみ表示されるべきである。
- uint
numCacheLevels
; - このフィールドは廃止された。代わりにcacheLevels 。
- nothrow @nogc @property @trusted uint
cacheLevels
(); - CPUのキャッシュレベル数。
Copyright © 1999-2024 by the D Language Foundation
DEEPL APIにより翻訳、ところどころ修正。
このページの最新版(英語)
このページの原文(英語)
翻訳時のdmdのバージョン: 2.108.0
ドキュメントのdmdのバージョン: 2.109.1
翻訳日付 :
HTML生成日時:
編集者: dokutoku