Ladíme výkon Athlonu 64
- Ladíme výkon Athlonu 64
- Athlon 64, maximální teplota
- Časování pamětí
- Frekvence pamětí
Frekvence pamětí se u procesorů Athlon 64 odvozuje z frekvence jádra. Samotné jádro se frekvenčně odvozuje z 200 MHz hodin pocházejících z externího clock generátoru ze základní desky. Typicky třeba Athlon 64 3000+ s frekvencí 1.8 GHz násobí 200 MHz 9x.
Protože AMD chtělo maximální výkon, není paměť časována z clock generátoru, ale dělením frekvence jádra. Samotný procesor má takto mnoho dělících poměrů od zhruba 5x do čísel větších než 30x. Základním nedostatkem tohoto systému je, že dělící poměry jsou vždy celočíselné. To znamená, že výsledná frekvence ne vždy odpovídá použitým pamětem. Tak například u procesoru s frekvencí 1800 MHz (9x 200) se pro čtyři základní podporované paměťové skupiny použijí následující dělící koeficienty:
DDR200 (reálná frekvence 100 MHz): 1800 / 18x = 100 MHz
DDR266 (reálná frekvence 133 MHz): 1800 / 14x = 129 MHz
DDR333 (reálná frekvence 166 MHz): 1800 / 11x = 164 MHz
DDR400 (reálná frekvence 200 MHz): 1800 / 9x = 200 MHz
Jak vidíte, ne vždy se výsledek přesně trefí. V případě volby DDR266 pojedou paměti ve skutečnosti na frekvenci o 5 MHz nižší, než by měly - výsledek tedy není DDR266, ale "DDR257". U volby DDR333 pak bude výsledkem "DDR327".
Tento problém se týká všech procesorů, ale liší se podle použitého násobiče frekvence jádra. Pokud třeba budeme mít nominální frekvenci 2000 MHz (10x 200), pak použité dělitele budou jiné:
DDR200 (reálná frekvence 100 MHz): 2000 / 20x = 100 MHz
DDR266 (reálná frekvence 133 MHz): 2000 / 15x = 133 MHz
DDR333 (reálná frekvence 166 MHz): 2000 / 12x = 166 MHz
DDR400 (reálná frekvence 200 MHz): 2000 / 10x = 200 MHz
Jak vidíte, s násobičem 10x je možné přesně vystihnout cílové frekvence. Pokud ale bude 11x, pak už dojde opět k rozhození. Procesor vždy volí takový dělící koeficient, aby výsledná frekvence pamětí byla co nejblíže cílové hodnotě, ale nikdy ne vyšší (takže z dvou dělitelů vždy volí ten vyšší).
CPU-Z si frekvenci pamětí dopočítává podle nastavení procesoru - nezjišťuje jí reálně!
Pozor na to, že žádný program vám spolehlivě nedokáže zjistit, na jaké skutečné frekvenci paměti běží. Procesor to totiž nikde nehlásí, takže neexistuje způsob, jak tuto informaci získat. Všechny programy, pokud nějakou hodnotu zobrazují, jí dopočítávají stejnou metodikou, kterou jsem uvedl výše - bohužel ale často v těchto programech jsou takové chyby, že není vůbec radno se na ně spoléhat.
Poznámka: Pokud se vlivem přetaktování změní frekvence z generátoru z 200 MHz na jinou hodnotu, použité dělitele se nezmění. V podstatě tak vyšší frekvence z generátoru způsobí i vyšší frekvenci paměti. Pomocí jednoduché matematiky uvedené výše je pak možné snadno dopočítat, na jaké konkrétní frekvenci paměti poběží.
Nastavování frekvence pamětí
Frekvence pamětí se nastavuje v Device 24, Function 2, Offset 94h (DRAM Configuration High Register).
U revizí D0 a starších slouží k nastavení frekvence bity 22 až 20. AMD v tomto registru popisuje pouze nastavení pro čtyři frekvence - 100, 133, 166 a 200 MHz. Protože se ale jedná o tři bity, je celkový počet nastavení osm. Některé frekvence jsou totiž neoficiální. Jejich funkčnost nikdo nezaručuje, ale obvykle to funguje bez problémů. Některé základní desky (například DFI) dokonce umožňují tyto neoficiální frekvence volit přímo v Setupu BIOSu.
Bity 22, 21 a 20 obsahují nedokumentovaná nastavení.
Experimentováním a benchmarkingováním jsem zjistil, že hodnoty bitů jsou následující:
Nastavení bitů [22:20] | Výsledná frekvence pamětí v MHz | Cílová frekvence za ideálních podmínek v MHz | Skóre ve WinRARu | Propustnost podle Sandry |
000 | 100 | 100 | 332 | 3009 |
001 | 120 | 125* | 373 | 3567 |
010 | 129 | 133 | 389 | 3827 |
011 | 138 | 142* | 406 | 4114 |
100 | 150 | 155* | 430 | 4420 |
101 | 164 | 166 | 457 | 4660 |
110 | 180 | 183* | 479 | 4839 |
111 | 200 | 200 | 500 | 5048 |
* Uvedené hodnoty nejsou oficiálně podporované, jedná se o moje odhady.
Takto to dopadlo u Athlonu 64 3000+. K uvedeným frekvencím jsem dospěl na základě regresní analýzy metodou nejmenších čtverců.
Přestože uvedené hodnoty nemůžu stanovit přesně (model vykazuje spolehlivost jen kolem 99 procent, což je na tak drobné odchylky málo), alespoň velmi orientačně s přesností na řekněme +/- 3 MHz je lze označit za správné. Na modelu je ostatně vidět, že při 95% spolehlivosti jsou intervaly konfidence poměrně úzké.
Revize E procesorů procesorů Athlon 64 mají novinky v podobě nastavování frekvence pomocí více bitů. Namísto bitů 22 až 20 jsou použity bity 23 až 20. Celkový počet nastavení je tak ještě o mnoho vyšší. Experimentem jsem zjistil, že nastavení 1000 odpovídá frekvenci 200 MHz, tedy je stejné jako nastavení 0111. Bohužel moje paměti nejsou schopny zvládnout o mnoho vyšší frekvence než právě DDR400, takže nejsem schopen zjistit, které nové cílové hodnoty jsou u těchto nových procesorů dostupné. Pokud někdo ze čtenářů má možnost zjistit, jaké frekvence to jsou, nechť mě kontaktuje.
Read Preamble (bity 11 až 8)
- 0000 = 2 ns
- 0001 = 2.5 ns
- 0010 = 3 ns
- ...
- 1111 = 9.5 ns
- Rozhodující je počet fyzicky přítomných DIMM slotů, ne počet osazených modulů.
Revize E a novější - OddDivisorCorrect
Athlony 64 v revizích E (tedy E3, E4 a E6) podporují také další nastavení nazvané OddDivisorCorrect. Jedná se jednobitový přepínač, který donutí procesor změnit dělitele tak, že eliminuje liché. Nastavuje se ve stejném registru jako frekvence, onen bit je číslo 31. Jednička znamená eliminaci lichých dělitelů, nula pak jejich zachování. Standardní nastavení je nula.
OddDivisorCorrect se nachází v bitu 31
Při zapnutí se pak tedy frekvence pamětí nedělí lichým číslem, ale pouze sudým vyšším. Následuje příklad z procesoru Athlon 64 3000+ (1800 MHz):
Nastavení bitů [22:20] | OddDivisorCorrect = 0 | OddDivisorCorrect = 1 | ||
Výsledná frekvence pamětí v MHz | Použitý dělitel | Výsledná frekvence pamětí v MHz | Použitý dělitel | |
000 | 100 | 18x | 100 | 18x |
001 | 120 | 15x | 112 | 16x |
010 | 129 | 14x | 129 | 14x |
011 | 138 | 13x | 129 | 14x |
100 | 150 | 12x | 150 | 12x |
101 | 164 | 11x | 150 | 12x |
110 | 180 | 10x | 180 | 10x |
111 | 200 | 9x | 180 | 10x |
Jak vidíte, nějaký veliký přínos to nemá. V podstatě to jen umožňuje nastavit oficiální cestou to, co se jinak dá nastavit nedokumentovanou kombinací bitů. Mimo to to u 3000+ nabízí jeden dělitel navíc - konkrétně 16x. V některých případech se ale mohou nové možnosti hodit.