
19.10.2007, 16:37
|
Прохожий
|
|
Регистрация: 18.10.2007
Сообщения: 17
Репутация: 10
|
|
И, наконец, Часть 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.
|