O programu TestCPU
Naprogramoval Robert Šmíd
Detekuje kolem 60 typů procesoru a ukáže obrázek procesoru
Detekuje vlastnosti procesoru a velikosti cache
Obsahuje muzeum procesorů s obrázky a popisem
Ukáže přenosovou rychlost pamětí pomocí různých instrukcí
Obsahuje standardní benchmarky
Minimální systémové požadavky
operační systém Windows 95/98/NT/2000
32-bitový procesor i386 (s FPU)
volná paměť 4 MB
pracovní plocha s 256 barvami
nespuštěné žádné procesy náročné na výkon počítače
doporučená je myš
Splashscreen
Když spustíte exe soubor zobrazí se malé úvodní okno - splashscreen,
během kterého se zjistí typ procesoru, frekvence, testy přenosové
rychlosti paměti a sada klasických testů CPU a FPU (Dhrystones,
Whetstones, MIPS, MFLOPS).
Pokud testování trvá příliš dlouho, tak buď systém čeká až bude moci
přidělit maximální prioritu, kterou testy požadují nebo je velký rozdíl
mezi rychlostí paměti a procesoru. Testování paměti potom trvá o něco déle.
STRÁNKA 1 - PROCESOR
První stránka obsahuje základní informace o procesoru.
Ke zjištění typu procesoru používám tři metody.
První metoda
využívá rozdílů mezi procesory a dokáže tak rozlišit následující
procesory. V závorce uvádím jak byl typ zjištěn:
Intel i386SX
Intel i386DX
Intel i486SX
Intel i486DX
Intel Pentium
Cyrix Cx486S
Cyrix Cx486DX
NexGen Nx586
NexGen Nx586FP
|
(má POPAD chybu)
(nemá FPU)
(má AC bit v registru příznaků)
(má ID bit v registru příznaků značící podporu CPUID instrukce,
viz dále)
(nemá FPU)
(procesory Cyrix nemění při dělení nedefinované bity v registru
příznaků)
(nemá FPU)
(procesory NexGen nemění při dělení ZeroFlag v registru příznaků)
|
Druhá metoda
vezme výsledky první a určí následující typy procesoru podle jeho
frekvence:
AMD Am386SX
AMD Am386DX
Intel i486DX2
AMD Am486DX4
Cyrix Cx486DX2
Cyrix Cx486DX4
Cyrix 6x86
Cyrix 6x86MX
|
(40MHz)
(40MHz)
(50 a 66MHz)
(100 a 120MHz)
(66 a 80 MHz)
(100MHz)
(všechny verze, 80 až 150MHz)
(všechny verze od 166MHz)
|
Třetí metoda
se provádí pouze u procesorů podporujících CPUID instrukci. To jsou v
podstatě všechny procesory vyrobené po procesoru Intel Pentium, který byl
uveden v roce 1993. Tedy i některé nové 486ky z roku 1994. U procesorů
Cyrix 5x86, Cyrix 6x86 a NexGen je ale tato instrukce BIOSem vypnuta
a pro správnou detekci je potřeba ji softwarově zapnout. Po provedení
CPUID instrukce vrátí procesor o sobě řadu informací, pomocí kterých lze
všechny současné procesory přesně detekovat. Zde je seznam procesorů,
které lze touto metodou rozpoznat:
Intel i486DX
Intel i486SX
Intel i486DX2
Intel i486SL
Intel i486SX2
Intel i486DX4
Intel i486DX4 OverDrive
Intel Pentium
Intel Pentium OverDrive
Intel Pentium MMX
Intel Pentium MMX OverDrive
Intel Pentium Pro
Intel Pentium II OverDrive
Intel Pentium II
Intel Pentium II Xeon
Intel Pentium II PE (mobilní)
Intel Celeron
Intel Celeron A (Slot1)
Intel Celeron A (Socket370)
Intel Pentium III
Intel Pentium III Xeon
Intel Pentium III E
Intel Pentium III E Xeon
UMC U5S
UMC U5D
UMC U486SX2
UMC U486DX2
|
AMD Am486DX2
AMD Am486DX4
AMD Am5x86
AMD K5
AMD K6
AMD K6-2
AMD K6-III
AMD Athlon
Cyrix MediaGX
Cyrix Media GXm
Cyrix 5x86
Cyrix 6x86
Cyrix 6x86MX
Cyrix M-II
Centaur/IDT WinChip
Centaur/IDT WinChip 2
Centaur/IDT WinChip 2A
Centaur/IDT WinChip 2B
Centaur/IDT WinChip 3
Rise mP6
NexGen Nx586
NexGen Nx586FP
NexGen Nx686
|
CPUID instrukci lze provádět v několika úrovních.
Na první úrovni CPUID instrukce
vrací specifický řetězec prodejce čipu:
"GenuineIntel"
"AuthenticAMD"
"CyrixInstead"
"NexGenDriven"
"CentaurHauls"
"RiseRiseRise"
"UMC UMC UMC"
|
řetězec "PravýIntel" vrací procesory Intel
řetězec "AutentickéAMD" vrací procesory AMD
řetězec "CyrixMístoToho" vrací procesory Cyrix
řetězec "PoháněnoNexGenem" vrací procesory NexGen
řetězec "KentaurTáhne" vrací procesory Centaur/IDT
vrací procesory Rise
vracely 486ky od firmy UMC
|
Na druhé úrovni CPUID instrukce
vrací informace o typu, rodině, modelu, revizi a vlastnostech procesoru.
Program obsahuje malou databázi, která k těmto detekovaným informacím
doplní krátké popisky. Malé vysvětlení hodnot, které CPUID instrukce vrací:
TYP může nabývat hodnot:
0 - což znamená, že se jedná o primární (první) procesor
1 - znamená OverDrive procesor, což je upgrade do zastaralých základních
desek
2 - značí, se jedná o sekundární (druhý, pomocný) procesor ve
víceprocesorovém systému
RODINA je téměř ekvivalentní s generací a značí
"výkonovou" třídu procesoru:
4 - všechny 486ky, AMD 5x86, Cyrix 5x86
5 - Intel Pentium a Pentium MMX, AMD K5 a K6, Cyrix 6x86,
všechny Centaur/IDT WinChip, Rise mP6
6 - Intel Pentium Pro, Celeron, Pentium II a Pentium III, AMD Athlon,
Cyrix 6x86MX a M-II
MODEL je opět číslo, které definuje o jaký model z rodiny se jedná:
například u rodiny 4:
0 - i486DX
3 - i486DX2
8 - i486DX4
například u rodiny 5:
2 - Pentium
4 - Pentium MMX
například u rodiny 6:
1 - Pentium Pro
5 - Pentium II
6 - Celeron
7 - Pentium III
tyto všechny procesory pocházejí od Intelu, pro jiného výrobce samozřejmě
tytéž hodnoty znamenají jiný procesor.
REVIZE číslo výrobce zvyšuje podle toho, kolik drobnějších úprav
na procesoru provede
BRAND je Intelem nově přidaná položka, její význam je rozlišit
některé jejich procesory. Uvedu hodnoty, které jsou doposud známé:
0 - funkce není podporována
2 - Intel Pentium III
3 - Intel Pentium III Xeon
Třetí úroveň CPUID instrukce
podporují pouze procesory Intel šesté generace (Pentium Pro a novější)
a vrací informace o velikosti cache pamětí reprezentované
následujícími (hexadecimálními) hodnotami:
$06 - procesor má 8kB L1 cache pro instrukce
$08 - procesor má 16kB L1 cache pro instrukce
$0A - procesor má 8kB L1 cache pro data
$0C - procesor má 16kB L1 cache pro data
$40 - procesor nemá L2 cache (princip detekce Celeronu)
$41 - procesor má 128kB L2 cache (CeleronA)
$42 - procesor má 256kB L2 cache (mobilní Pentium II)
$43 - procesor má 512kB L2 cache (Pentium II a III)
$44 - procesor má 1MB L2 cache (verze Xeon)
$45 - procesor má 2MB L2 cache (verze Xeon)
$82 - procesor má 256kB L2 cache (Pentium III E)
$4x - znamená 4-cestná cache (všechny)
$8x - znamená 8-cestná cache (Pentium III E)
Na čtvrté úrovni CPUID instrukce
vrací procesory Intel Pentium III (a novější) sériové číslo procesoru.
Procesory AMD, Cyrix a Centaur navíc podporují některé další úrovně CPUID
instrukce, kterými lze u těchto procesorů zjistit další vlastnosti (jako
3Dnow! technologii), velikosti cache pamětí nebo řetězec se jménem
procesoru, který je v čipu zakódován. Zde jsou řetězce, které
procesory vrací:
AMD-K5(tm) Processor
AMD-K6tm w/ multimedia extensions
AMD-K6(tm) 3D processor
AMD-K6(tm)-2 Processor
AMD-K6(tm) 3D+ Processor
AMD-K6(tm)-III Processor
AMD-K7(tm) Processor
IDT WinChip 2
IDT WinChip 2-3D
|
AMD K5
AMD K6
AMD K6-2
AMD K6-2
AMD K6-III
AMD K6-III
AMD K7
Centaur/IDT C2
Centaur/IDT C2
|
Frekvenci procesoru měřím pomocí dvou metod.
První metoda
změří čas provedení několika operací procesoru, pak podle typu procesoru
vybere z tabulky hodnotu, která udává za kolik taktů tyto operace
procesor provede. Potom stačí vydělit počet taktů časem a vyjde
frekvence.
Nevýhodou této metody je, že frekvence nebude zjištěna správně, pokud
není detekovaný správný typ procesoru nebo pokud hodnota pro nový
procesor ještě není do tabulky přidána.
Zjištění frekvence první metodou:
z tabulky načti kolik taktů je potřeba / čas provedení = frekvence
120000 taktů procesoru / 0.0012 sekundy = 100 MHz
Druhá metoda
se provádí jen u procesorů majících Time Stamp Counter - TSC (čítač
taktů procesoru). Ten se s každým taktem procesoru zvyšuje o jedničku
a poskytuje tak nejpřesnější způsob časování na PC. Čítač se nuluje
při resetu procesoru. Je to 64 bitový registr, takže se může zvyšovat
5850 let než přeteče zpět na nulu, pokud má procesor 100MHz. Přítomnost
TSC se zjišťuje přes CPUID instrukci. Všechny moderní procesory TSC
mají. Intel ho podporuje od procesoru Pentium, AMD od procesoru K5,
Cyrix až od procesoru 6x86MX. Pomocí TSC lze teoreticky určit správnou
frekvenci procesoru s přesností na jeden takt. V praxi se mohou hodnoty
mírně lišit podle zatížení systému, ale přesto program zjistí frekvenci
s přesností tisíciny MHz.
Zjištění frekvence druhou metodou:
1) přečti hodnotu TSC a zapiš ji do proměnné TAKT1
2) čekej přesně jednu sekundu (TSC se samo zvyšuje)
3) přečti hodnotu TSC a zapiš ji do proměnné TAKT2
4) výslednou frekvenci procesoru v Hertzích získáme odečtením TAKT2-TAKT1
PR-hodnocení
U některých procesorů se navíc vedle frekvence udává PR-hodnocení, což
znamená anglicky Performance Rating (tedy zkráceně PR). Na tomto označení
svých procesorů se domluvily firmy AMD, Cyrix a IBM, které tak chtěly
zdůraznit, že jejich procesory dokáží efektivněji zpracovávat instrukce,
takže na nižších frekvencích dosahují srovnatelného výkonu jako procesory
Intel Pentium nebo Pentium II. Jako měřítko použily test Winstone. Takže
například procesor s výkonem Pentia 75 obdrží PR75. Následuje tabulka
procesorů a jejich PR-hodnocení:
procesor:
NexGen Nx586-PR75
NexGen Nx586-PR80
NexGen Nx586-PR90
NexGen Nx586-PR100
NexGen Nx586-PR110
NexGen Nx586-PR120
AMD Am5x86-PR75
AMD K5-PR75
AMD K5-PR90
AMD K5-PR100
AMD K5-PR120
AMD K5-PR133
AMD K5-PR166
AMD K5-PR200
Cyrix 5x86-PR75
Cyrix 5x86-PR90
Cyrix 6x86-PR90
Cyrix 6x86-PR120
Cyrix 6x86-PR133
Cyrix 6x86-PR150
Cyrix 6x86-PR166
Cyrix 6x86-PR200
Cyrix 6x86MX-PR133
Cyrix 6x86MX-PR150
Cyrix 6x86MX-PR166
Cyrix 6x86MX-PR200
Cyrix 6x86MX-PR233
Cyrix 6x86MX-PR266
Cyrix M-II PR300
Cyrix M-II PR333
Cyrix M-II PR366
Cyrix M-II PR400
Cyrix M-II PR433
Rise mP6-PR166
Rise mP6-PR233
Rise mP6-PR266
Rise mP6-PR333
Rise mP6-PR366
IDT WinChip2A-PR200
IDT WinChip2A-PR233
IDT WinChip2A-PR300
IDT WinChip3-PR233
|
interní / externí frekvence v MHz:
70 / 35
75 / 37,5
84 / 42
93 / 46,5
102 / 51
111 / 55,5
133 / 33
75 / 50
90 / 60
100 / 66
90 / 60
100 / 66
116,7 / 66
133 / 66
100 / 33
120 / 40
80 / 40
100 / 50
110 / 55
120 / 60
133 / 66
150 / 75
100 / 50, 110 / 55
120 / 60, 125 / 50
133 / 66, 137,5 / 55, 150 / 50
150 / 75, 165 / 55, 166 / 66
166 / 83, 187,5 / 75, 200 / 66
207,5 / 83, 225 / 75, 233 / 66
207,5 / 83, 225 / 75, 233 / 66
250 / 83
250 / 100
285 / 95
300 / 100
166 / 83
190 / 95
200 / 100
237,5 / 95
250 / 100
200 / 66
233 / 66
250 / 100
200 / 66
|
STRÁNKA 2 - VLASTNOSTI
Vlastnosti procesoru, které vrací CPUID instrukce
jsou zobrazeny na druhé stránce. Některé zajímavé pro uživatele
dále popíši:
|
Koprocesor je integrován na čipu
|
Tato položka značí přítomnost matematického koprocesoru přímo
v procesoru, všechny moderní procesory jsou již takto vyráběny
(od 486DX), slouží pro výpočty s pohyblivou desetinnou
čárkou, anglický název zní Floating-Point Unit (FPU).
|
|
Čítač taktů procesoru
|
Anglicky Time Stamp Counter (TSC) umožňuje nejpřesnější způsob
časování na PC a lze pomocí něj velmi přesně zjistit frekvenci
procesoru, viz výše
|
|
Podpora více procesorů (čip má APIC)
|
Tato položka značí přítomnost APIC, který umožňuje spolupráci
více procesorů. Pokud je položka škrtnutá, je APIC
buď vypnutý nebo není přítomen.
|
|
Sériové číslo procesoru
|
Značí zapnuté sériové číslo. Intel ho umožňuje vypnout, potom
je položka škrtnutá.
|
|
Technologie MMX
|
Značí rozšíření instrukční sady procesoru o dalších 57 instrukcí
urychlujících zpracování grafiky a multimédií. Poprvé se objevila
u procesoru Intel Pentium MMX. V současnosti ji podporují všichni
výrobci procesorů.
|
|
Rychlé uložení a obnovení FP/MMX/SSE
|
Značí schopnost procesoru rychle se přepínat mezi módy
FPU, MMX a SSE.
|
|
Intel Streaming SIMD Extensions (SSE)
|
Značí přítomnost druhé rozšiřující sady se 70 instrukcemi,
které umožňují rychlejší zpracování 3D grafiky, zvuku a
internetu. Je podporována od procesoru Intel Pentium III.
|
Další vlastnosti podporují pouze konkurenční procesory Intelu:
|
Částečná podpora SSE
|
Značí rozšíření instrukční sady procesoru Athlon a novějších
o SSE-MMX a SSE-MEM instrukce.
|
|
Cyrix rozšířené MMX
|
Značí rozšíření instrukční sady procesorů 6x86MX, M-II a
novějších o další MMX instrukce.
|
|
AMD 3Dnow!
|
Značí přítomnost 21 instrukcí od AMD pro zrychlení 3D grafiky,
které se poprvé objevily v procesoru K6-2. Tato sada je
obsažena i v procesorech IDT WinChip.
|
|
AMD rozšířené 3Dnow!
|
Od procesoru Athlon zavádí AMD další rozšiřující 3D instrukce.
|
STRÁNKA 3 - PAMĚŤ 1
MOV test
je první z dvojice testů paměti, který měří přenosovou rychlost
pamětí a vyrovnávacích pamětí (tzv. cache). Test zjišťuje rychlost
těchto pamětí tak, že dvakrát přesouvá stejně velký blok dat. Při
prvním přesunu se blok dat nahraje zároveň do cache, takže se podruhé
vyzvednou data z ní. Velikost bloku se postupně zvětšuje od 2kB až
po 2MB. Pokud při zvětšení bloku prudce klesne přenosová rychlost,
znamená to, že zatímco se minulý blok do cache vešel, stávající blok byl
vzhledem k velikosti cache příliš velký. Tímto způsobem lze určit
velikosti cache pamětí. V tomto prvním testu používám k přesunu dvojici
instrukcí MOV, což je zároveň jedna z nejvíce používaných instrukcí
vůbec. Přesun pomocí MOV instrukce je však pomalejší než přesun pomocí
MOVSD instrukce, která je použita v druhém testu paměti, viz dále.
Zde je část kódu, který pro přesun používám:
|
@opakuj:
|
mov eax,[esi]
mov [edi],eax
add esi,4
add edi,4
dec ecx
jnz @opakuj
|
Nejprve se do ESI uloží zdrojová adresa, do EDI cílová adresa a do ECX
počet opakování. Chceme-li například přenášet 4 kB dat je to 1024
opakování, protože přenášíme 32 bitů (4 byte) najednou. Instrukce
MOV EAX,[ESI] čte data ze zdrojové adresy [ESI] v paměti do EAX registru
v procesoru. Druhá instrukce MOV [EDI],EAX zapíše data z EAX zpátky
na cílovou adresu v paměti určenou [EDI]. Následující dvě instrukce
ADD ESI,4 a ADD EDI,4 zvyšují ukazatele na zdrojovou a cílovou adresu
o 4 byte, aby ukazovaly na další 4 byte, které budeme přenášet. Další
instrukce DEC ECX sníží obsah registru ECX o jedničku, aby se smyčka
opakovala už jen 1023krát. Poslední instrukce JNZ @OPAKUJ se vrátí
na začátek pokud není ECX rovno nule.
Cache
jsou rychlé paměti malé kapacity, které do sebe nahrají často používaná
data z RAM a tak je přístup k těmto datům mnohem rychlejší. Cache paměť
se poprvé objevila na základních deskách pro 386. Od procesoru 486
se používají dvě cache. Cache první úrovně, která je přímo v procesoru
(tzv. Level 1 cache) a cache druhé úrovně na desce (Level 2 cache),
která je větší, ale pomalejší. Od Pentia se cache v procesoru
rozdělila na cache pro instrukce a pro data.
Některé velikosti cache v procesoru:
procesor:
Intel i486SX/DX/DX2
Intel i486DX4
Intel Pentium
Intel Pentium MMX
Intel Pentium Pro
Intel Pentium II/III
Intel Celeron
Intel Celeron A
Intel Pentium III E
AMD Am486DX/DX2/DX4
AMD Am5x86
AMD K5
AMD K6/K6-2
AMD K6-III
AMD Athlon
Cyrix Cx486SLC/DLC
Cyrix Cx486S
Cyrix Cx486DX/DX2/DX4
Cyrix 5x86/6x86
Cyrix 6x86MX/M-II
IDT WinChip/WinChip2
IDT WinChip3
Rise mP6
NexGen Nx586
NexGen Nx686
UMC 486
IBM 486SLC
|
L1 cache (pro instrukce + pro data)
8 kB
16 kB
16 kB (8 kB + 8 kB)
32 kB (16 kB + 16 kB)
32 kB (16 kB + 16 kB)
32 kB (16 kB + 16 kB)
32 kB (16 kB + 16 kB)
32 kB (16 kB + 16 kB)
32 kB (16 kB + 16 kB)
8 kB
16 kB
24 kB (16 kB + 8 kB)
64 kB (32 kB + 32 kB)
64 kB (32 kB + 32 kB)
128 kB (64 kB + 64 kB)
1 kB
2 kB
8 kB
16 kB
64 kB
64 kB (32 kB + 32 kB)
128 kB (64 kB + 64 kB)
16 kB (8 kB + 8 kB)
32 kB (16 kB + 16 kB)
48 kB (16 kB + 32 kB)
8 kB
16 kB
|
L2 cache v procesoru:
256 kB až 1 MB
512 kB (Xeon až 2 MB)
128 kB
256 kB
256 kB
512 kB
|
STRÁNKA 4 - PAMĚŤ 2
MOVSD test
je podobný prvnímu. Také měří přenosovou rychlost paměti, případně
cache, ale používá k tomu MOVSD instrukci. Ta je rychlejší než dvojice
MOV instrukcí, protože procesor přednačte data v burst cyklech (použije
prefetch) a také zápis dat bude kombinovat do burst cyklů.
Postup pro přenesení bloku dat je podobný. Nejprve se do ESI uloží
zdrojová adresa, do EDI cílová adresa a do ECX počet opakování. Potom
stačí použít jedinou instrukci REP MOVSD. Prefix REP znamená,
že instrukce bude prováděna opakovaně. Počet opakování určuje obsah
registru ECX, jehož hodnota se po každém provedení MOVSD snižuje
o jedničku. Až je ECX rovno nule provádění instrukce skončí. Instrukce
MOVSD při každém provedení přesune data ze zdrojové adresy [ESI] na
cílovou adresu [EDI] a oba ukazatele ESI a EDI zvýší, aby ukazovaly na
další data.
STRÁNKA 5 - VÝPOČTY
Tato stránka obsahuje pětici matematických testů:
První test počítá faktoriál čísla 10001. Jedná se o celočíselný
výpočet, takže využívá pouze procesor. Faktoriál čísla 10001 spočítáme
vynásobením všech čísel od 1 do 10001:
10001! = 1 * 2 * 3 * 4 * ....... * 9998 * 9999 * 10000 * 10001
Výsledek je velmi vysoké číslo, které je zapsáno v 14812 bytech (přes
14 kB) paměti. Při vyjádření v bitech by se jednalo o 118496-bitové
číslo! Přesto se výsledek vejde u většiny procesorů do L1 cache, která
je přímo v procesoru.
Druhý test počítá prvních 30000 prvočísel. Opět se počítá s celými
čísly, takže test zatěžuje jen procesor. Test používá asi 120 kB paměti,
které jsou ale přistupované pouze jednou, takže není potřeba cache.
Ke zjištění prvočísla existuje spousta inteligentních algoritmů, použil
jsem následující verzi:
Číslo n je prvočíslo pokud není dělitelné čísly většími než 1 a menšími
než n. Stačí však zjišťovat jen dělitelnost čísly od 2 po odmocninu z
čísla n. Navíc všechna sudá čísla n po dvojce nemohou být prvočísla,
protože jsou dělitelná právě dvojkou.
Třetí test počítá determinant matice 9x9 Laplaceovým rozvojem.
Pracuje s (regulární) maticí reálných čísel, takže mimo procesor využívá
i koprocesor. Počítání Laplaceovým rozvojem je založeno na rozkladu
původní matice na menší matice, které se dále rozkládají, dokud
nezískáme jednotlivá čísla. V programu je to zajištěno rekurzivním
voláním procedury. Zde je začátek výpočtu determinantu matice 3x3,
který ukazuje, jak procedura pracuje:
| 9 8 7 |
| 4 5 6 |
| 0 1 2 |
|
= (-1)1+1* 9 *
|
| 5 6 |
| 1 2 |
|
+ (-1)1+2* 8 *
|
| 4 6 |
| 0 2 |
|
+ (-1)1+3* 7 *
|
| 4 5 |
| 0 1 |
|
= ..... atd.
|
Čtvrtý test počítá inverzní matici 200x200 Gaussovou eliminací.
Test pracuje s dvojicí matic 200x200 s reálnými čísly, takže test
používá nejen procesor, ale i koprocesor. Navíc dvojice matic
zabírá přibližně 320 kB, takže má i paměťové požadavky. Do L2 cache
se vejde pouze pokud má cache alespoň 512 kB. První matice obsahuje
náhodná čísla (tak, aby byly jednotlivé vektory lineárně nezávislé) a
druhá matice je jednotková. Na těchto dvou maticích provádí program
Gaussovu a zpětnou Gaussovu eliminaci tak, že se první matice
převede na jednotkovou a z druhé vznikne inverzní matice.
Pátý test násobí dvě matice 250x250. Výsledek se ukládá do
třetí. Všechny matice obsahují reálná čísla, takže test opět zatěžuje
mimo procesoru i koprocesor. Tento test je ale nejnáročnější na paměť,
protože všechny tři matice vyžadují asi 750 kB paměti, takže se obvykle
nevejdou ani do L2 cache.
STRÁNKA 6 - TESTY
Tato stránka obsahuje čtveřici testů, které zatěžují procesor a
koprocesor:
Dhrystone
je 32-bitová verze testu, který reprezentuje výkon procesoru převážně
v aplikacích s celočíselnými výpočty. Zde jsem použil původní verzi
(2.1) od autora testu Reinholda Weickera. Celý test se vejde do poměrně
malé cache (asi 8 kB), takže u procesorů s interní cache testuje pouze
výkon procesoru a ne pamětí.
Whetstone
je 32-bitová verze syntetického testu, který zatěžuje převážně koprocesor
při operacích s reálnými čísly. Navíc obsahuje transcendentní funkce
jako SIN a EXP. Použita je verze jednoho z původních autorů Briana
Wichmanna. Test je opět malý, takže odráží pouze výkon koprocesoru a
interní L1 cache.
MIPS
není, jak by se mohlo podle názvu zdát, test výkonu v celočíselných
operacích. Jedná se o malý test, který velmi zatěžuje koprocesor
počítáním transcendentní funkce. Autor tohoto testu je Hiroshi Fukuda,
který ho zveřejnil v C a ve Fortranu, zde je původní část C kódu:
int i,n;double x,y;
for(i=1;i<=n;i++){
x=i;
y=sin(x)/x+x;
}
MFLOPS
Výsledek tohoto 32-bitového testu říká, kolik miliónů základních operací
s desetinnou čárkou (sčítání, odčítání, násobení) je schopný počítač
provést za sekundu. Toto číslo je určeno prováděním starší verze
Lawrence Livermoore Loops, což je sada 14 jader programů pracujících s
reálnými čísly, a vypočítáním průměrných MFLOPS (Millions of
FLoating-point OPerations per Second). Existuje i novější verze LLL,
která používá 24 jader a dává detailnější diagnózu výkonu, ta ale
nebyla používána kvůli své velikosti. Test LLL používá kolem 60 kB
paměti, takže výsledky mohou být ovlivněny velikostí cache.
STRÁNKA 7 - MUZEUM
Tato stránka popisuje vlastnosti většiny 32-bitových procesorů, které
byly doposud představeny. Většinu z nich také program rozpozná (až na
Cx486SLC/DLC, který lze detekovat pouze přes DIR registry Cyrixu). První
dva řádky Rodina a Model popisují jaké hodnoty vrací procesor po
provedení CPUID instrukce. V případě, že ji nepodporuje, tak jaké
hodnoty vrací po RESETU. Další řádek popisuje Kódové jméno, za kterým je
v závorce uvedená výrobní technologie. Následují položky: Počet
tranzistorů, První představení procesoru, Rozsah frekvencí, na kterých
procesor pracuje, Další vlastnosti a Velikosti cache.