|
#6
|
|||
|
|||
И, наконец, Часть 4 :
Код:
function TCpuData.P5CacheL1DI: word; begin if CheckMMX then P5CacheL1DI:=16 else P5CacheL1DI:=8; end; function TCpuData.P6CacheL1DI: word; begin if not CheckMMX then P6CacheL1DI:=8 else P6CacheL1DI:=16; end; function TCpuData.P6CacheL2: word; var Family, Model, Stepping: byte; begin if CheckCeleron then P6CacheL2:=128 else if CheckPentiumIII then begin GetFMS(Family,Model,Stepping); if Model=7 then P6CacheL2:=512 else if Model=8 then P6cacheL2:=256 else P6CacheL2:=512; end else if not CheckMMX then P6CacheL2:=512 else P6CacheL2:=512; end; function TCpuData.AuthenticAMD: TCpuRec; var Family, Model, Stepping: byte; EFamily, EModel, EStepping: byte; begin GetFMS(Family,Model,Stepping); if Family=4 then begin AuthenticAMD.name:='AMD 486'; AuthenticAMD.Vendor:=GetVendorString; AuthenticAMD.Frequency:=0; AuthenticAMD.Family:=Family; AuthenticAMD.Model:=Model; AuthenticAMD.Stepping:=Stepping; AuthenticAMD.L1DCache:=8; AuthenticAMD.L1ICache:=8; AuthenticAMD.L2Cache:=0; end else if Family=5 then begin if GetMaxExtendedFunctions>4 then begin AuthenticAMD.name:=GetExtendedCpuName; AuthenticAMD.Vendor:=GetVendorString; GetExtendedFMS(EFamily,EModel,EStepping); AuthenticAMD.Family:=EFamily; AuthenticAMD.Model:=EModel; AuthenticAMD.Stepping:=EStepping; AuthenticAMD.L1DCache:=GetExtendedL1DCache; AuthenticAMD.L1ICache:=GetExtendedL1ICache; AuthenticAMD.L2Cache:=0; end else begin AuthenticAMD.name:=AMDK5N; AuthenticAMD.Vendor:=GetVendorString; AuthenticAMD.Family:=Family; AuthenticAMD.Model:=Model; AuthenticAMD.Stepping:=Stepping; AuthenticAMD.L1DCache:=16; AuthenticAMD.L1ICache:=16; AuthenticAMD.L2Cache:=0; end; end else if family>5 then begin AuthenticAMD.name:=GetExtendedCpuName; AuthenticAMD.name:=GetExtendedCpuName; AuthenticAMD.Vendor:=GetVendorString; GetExtendedFMS(EFamily,EModel,EStepping); AuthenticAMD.Family:=EFamily; AuthenticAMD.Model:=EModel; AuthenticAMD.Stepping:=EStepping; AuthenticAMD.L1DCache:=GetExtendedL1DCache; AuthenticAMD.L1ICache:=GetExtendedL1ICache; AuthenticAMD.L2Cache:=GetExtendedL2Cache; end; end; function TCpuData.GenuineIntel: TCpuRec; var Family, Model, Stepping: byte; begin GetFMS(Family,Model,Stepping); if Family=4 then begin GenuineIntel.name:='Intel 486'; GenuineIntel.Vendor:=GetVendorString; GenuineIntel.Frequency:=0; GenuineIntel.Family:=Family; GenuineIntel.Model:=Model; GenuineIntel.Stepping:=Stepping; GenuineIntel.L1DCache:=8; GenuineIntel.L1ICache:=8; GenuineIntel.L2Cache:=0; end else if Family=5 then begin GenuineIntel.name:=IntelP5N; GenuineIntel.Vendor:=GetVendorString; GenuineIntel.Family:=Family; GenuineIntel.Model:=Model; GenuineIntel.Stepping:=Stepping; GenuineIntel.L1DCache:=P5CacheL1DI; GenuineIntel.L1ICache:=P5CacheL1DI; GenuineIntel.L2Cache:=0; end else if Family=6 then begin GenuineIntel.name:=IntelP6N; GenuineIntel.Vendor:=GetVendorString; GenuineIntel.Family:=Family; GenuineIntel.Model:=Model; GenuineIntel.Stepping:=Stepping; GenuineIntel.L1DCache:=P6CacheL1DI; GenuineIntel.L1ICache:=P6CacheL1DI; GenuineIntel.L2Cache:=P6CacheL2; end else if Family=$F then begin if CheckPentium4 then begin GenuineIntel.name:='Intel Pentium(r) 4'; GenuineIntel.Vendor:=GetVendorString; GenuineIntel.Family:=32; GenuineIntel.Model:=Model; GenuineIntel.Stepping:=Stepping; GenuineIntel.L1DCache:=8; GenuineIntel.L1ICache:=12; GenuineIntel.L2Cache:=256; end else if CheckIthanium then begin GenuineIntel.name:='Intel Ithanium'; GenuineIntel.Vendor:=GetVendorString; GenuineIntel.Family:=64; GenuineIntel.Model:=Model; GenuineIntel.Stepping:=Stepping; GenuineIntel.L1DCache:=0; GenuineIntel.L1ICache:=0; GenuineIntel.L2Cache:=0; end; end; end; function TCpuData.CyrixInstead: TCpuRec; var Family, Model, Stepping: byte; EFamily, EModel, EStepping: byte; begin GetFMS(Family,Model,Stepping); if Family=4 then begin CyrixInstead.name:='VIA Cyrix 4x86'; CyrixInstead.Vendor:=GetVendorString; CyrixInstead.Frequency:=0; CyrixInstead.Family:=Family; CyrixInstead.Model:=Model; CyrixInstead.Stepping:=Stepping; CyrixInstead.L1DCache:=8; CyrixInstead.L1ICache:=8; CyrixInstead.L2Cache:=0; end else if Family=5 then begin CyrixInstead.name:='VIA Cyrix 5x86'; CyrixInstead.Vendor:=GetVendorString; CyrixInstead.Family:=Family; CyrixInstead.Model:=Model; CyrixInstead.Stepping:=Stepping; CyrixInstead.L1DCache:=8; CyrixInstead.L1ICache:=8; CyrixInstead.L2Cache:=0; end else begin if GetMaxExtendedFunctions>0 then begin CyrixInstead.name:=GetExtendedCpuName; CyrixInstead.Vendor:=GetVendorString; GetExtendedFMS(EFamily,EModel,EStepping); CyrixInstead.Family:=EFamily; CyrixInstead.Model:=EModel; CyrixInstead.Stepping:=EStepping; CyrixInstead.L1DCache:=GetExtendedL1DCache; CyrixInstead.L1ICache:=GetExtendedL1ICache; CyrixInstead.L2Cache:=GetExtendedL2Cache; end else begin CyrixInstead.name:=Cyrix686N; CyrixInstead.Vendor:=GetVendorString; CyrixInstead.Family:=Family; CyrixInstead.Model:=Model; CyrixInstead.Stepping:=Stepping; CyrixInstead.L1DCache:=32; CyrixInstead.L1ICache:=32; CyrixInstead.L2Cache:=0; end; end; end; function TCpuData.GenericCPU: TCpuRec; var Family, Model, Stepping: byte; EFamily, EModel, EStepping: byte; begin if not GetCPUIDSupport then begin MessageDlg('This CPU does not support the CPUID instruction!!!',mtWarning, [mbOk],0); GenericCPU.name:='Unidentified CPU'; GenericCPU.Vendor:='Unidentified'; GenericCPU.Frequency:=0; GenericCPU.Family:=-1; GenericCPU.Model:=-1; GenericCPU.Stepping:=-1; GenericCPU.L1DCache:=0; GenericCPU.L1ICache:=0; GenericCPU.L2Cache:=0; end else begin GetFMS(Family,Model,Stepping); if GetMaxExtendedFunctions>0 then begin GenericCPU.name:=GetExtendedCPUName; GenericCPU.Vendor:=GetVendorString; CpuData.GetExtendedFMS(EFamily,EModel,EStepping); GenericCPU.Family:=EFamily; GenericCPU.Model:=EFamily; GenericCPU.Stepping:=EStepping; GenericCPU.L1DCache:=GetExtendedL1DCache; GenericCPU.L1ICache:=GetExtendedL1ICache; GenericCPU.L2Cache:=GetExtendedL2Cache; end else begin GenericCPU.name:=GenericCpuN; GenericCPU.Vendor:=GetVendorString; if Family<=4 then GenericCPU.Frequency:=0 else GenericCPU.Family:=Family; GenericCPU.Model:=Model; GenericCPU.Stepping:=Stepping; GenericCPU.L1DCache:=0; GenericCPU.L1ICache:=0; GenericCPU.L2Cache:=0; end; end; end; {$R *.res} exports {Нужные функции} begin end. |