Tajniki platformy A64

  1. Wstęp teoretyczny - budowa systemu z A64 oraz różnice w stosunku do SocketA.

    Pojawienie się Athlonów 64 wprowadziło wielką nowość w budowie systemów. Zmienił się sposób przepływu danych. Chipset stracił pozycję centralnego zarządcy obliczeniami, tę rolę przejął procesor.
    Zobaczmy schematy blokowe systemu z chipsetem KT600 (Athlon XP) i K8T800Pro (Athlon 64):


    Rys. 1. Schematy blokowe platform opartych o chipsety KT600 i K8T800(Pro)

    Jaka jest najważniejsza różnica? Popatrzcie na połączenie procesora z pamięciami - w systemie z KT600 komunikują się one za pośrednictwem mostka północnego, w systemie z K8T800 - bezpośrednio. Jaki to może mieć wpływ na zachowanie się systemu?
    W systemie z Athlonem XP chipset odpowiada za koordynację działań procesora i pamięci - wszystkie dane wymieniane między nimi przechodzą przez mostek północny. Jak ważna więc jest w takim systemie synchronizacja, minimalizacja opóźnień, jak duży ujemny wpływ mogą mieć wszelkie spowolnienia wiemy nie od dziś. Tylko tryb synchroniczny zapewnia optymalny przepływ danych maksymalizujący wydajność.
    W systemie z A64 chipset nie zajmuje się przesyłaniem danych i nie bedzie miał wpływu na wydajność podsystemu pamięci. Wszystkie sprawy związane z komuniikacją procesora z pamięciami przejął na siebie procesor. Chipset służy od teraz tylko do komunikacji bloku CPU-pamięci z resztą systemu.
    Popatrzmy jeszcze na częstotliwości. W systemie z KT600 chipset komunikuje się z procesorem z częstotliwością 400MHz (magistrala FSB 200MHz w trybie DDR). Jednocześnie procesor i pamięci mogą się porozumiewać maksymalnie z taką częstotliwością. W systemie z K8T800 komunikacja ta zachodzi z częstotliwością 400-1000MHz (magistrala HT z mnożnikiem ustalanym w BIOSie - defaultowo x4, co daje 800MHz). Nawet gdyby to chipset musiałby się zajmować przesyłaniem danych między procesorem a pamięciami, wpływ opóźnień przy 800MHz byłby mniejszy. Do czego przyda się przepustowość łącza HyperTransport? Do przesyłania danych z/do portu AGP? Chyba nie, bo jego maksymalna przepustowość jest za mała. Może w przyszłości w czasach PCI-Express będzie wykorzystana.

  2. Poszukiwania asynchroniczności w systemie z A64 - porównanie wpływu zmiany stosunku FSB:pamięci na wydajność systemu.

    Jak już wcześniej widzieliśmy, w systemie z A64 nie powinien występować w najmniejszym nawet stopniu efekt, który pamietamy z platformy Socket A, czyli spadek wydajności po ustawieniu asynchronicznego trybu pracy procesora i pamięci, kiedy stosunek ich częstotliwości nie jest równy 1:1. Czy tak jest rzeczywiście? Przekonajmy się.
    Aby to zbadać należy przeprowadzić pomiary przy różnych stosunkach częstotliwości CPU i pamięci, a niezmiennych wszelkich możliwych innych czynników mogących mieć wpływ na wyniki benchmarków. Będą to przede wszystkim bezwzględna częstotliwość procesora i pamięci, a także wszelkie ustawienia w BIOSie. Należy też zadbać o niezakłócanie pomiarów przez usługi systemowe, połączenie z siecią itp.
    Zapewnienie najważniejszych warunków nie jest trudne. Należy tylko przygotować zestaw iloczynów mnożnik*FSB dający tę samą liczbę oraz dzielników CPU:RAM dających tę samą częstotliwość pamieci.

    Dla Athlona 64 2800+ (mnożnik maksymalny x9) wybrałem następujące zestawienie:

    1. 9x222MHz, stosunek częstotliwości CPU:dzielnika pamieci równy 9:9 (pamięci @222MHz) - tryb 'synchroniczny'

    2. 8x250MHz, stosunek częstotliwości CPU:dzielnika pamieci równy 8:9 (pamięci @222MHz) - tryb 'asynchroniczny'

    3. 7x285MHz, stosunek częstotliwości CPU:dzielnika pamieci równy 7:9 (pamięci @222MHz) - tryb 'asynchroniczny'

    Jak widać procesor bedzie miał zawsze równo 2GHz, a pamięci zawsze równo 222MHz. Zmieniać będzie się tylko stosunek częstotliwości FSB:pamięci, o co nam właśnie chodzi.
    Dla 9x222MHz zrobimy jeszcze pomiary dla dwóch różnych mnożników HT - x3 i x4. Sprawdzimy czy to coś zmieni.

    Dla Athlona XP weźmiemy nastepujące warianty:

    1. 12x200MHz, stosunek częstotliwości CPU:pamieci równy 4:6 (pamięci @133MHz) - tryb asynchroniczny

    2. 15x160MHz, stosunek częstotliwości CPU:pamieci równy 5:6 (pamięci @133MHz) - tryb asynchroniczny

    3. 18x133MHz, stosunek częstotliwości CPU:pamieci równy 6:6 (pamięci @133MHz) - tryb synchroniczny

    Tu również spełnimy warunki: procesor i pamięci będą miec taką samą częstotliwość dla każdego dzielnika FSB:pamięci.

    Jako narzędzia pomiarowe użyte będą:

    Sisoft Sandra - do zmierzenia przepustowości pamięciami

    Superpi - do zmierzenia mocy obliczeniowej systemu

    3DMark2001SE - do zmierzenia wydajności 3D.

    Wszystkie 3 programy charakteryzują się dobrą lub bardzo dobrą powtarzalnością pomiarów, jedynie dla 3DMarka musimy uwzględnić częściową przypadkowość wyników.

    Na początek popatrzmy na wyniki zmiany stosunku FSB do częstotliwości pamięci w platformie Socket A (nForce2 w trybie Dual DDR) (pomiary wykonał Lagier - dzięki za pomoc):

    Tab. 1. Pomiary wydajności Athlona XP.

    Ustawnienia

    Sisoft Sandra/Memory

    Superpi 4M

    3DMark2001SE

    18x133MHz, FSB:Mem=1:12021/19524'12"15529
    13.5x178MHz, FSB:Mem=4:32254/21064'06"15375
    12x200MHz, FSB:Mem=6:42272/21414'03"15613

    Nie ulega chyba wątpliwości, że zmiana stosunku częstotliwości FSB do częstotliwości pamięci przy niezmienionej częstotliwości pamięci oraz procesora daje wyrażne zmiany przepustowości pamięci oraz wydajności systemu. Zmiany są widoczne w każdej aplikacji.
    A czego to jest wynikiem? Przede wszystkim tego, że dane wymieniane między pamięcią a procesorem muszą przewędrować przez chipset. A przepustowość tego łącza jest mocno ograniczona - wyznacza ją częstotliwość FSB w trybie DDR. Łatwo zrozumieć, że dla trybu Dual DDR (wymagana 2 razy większa przepustowość) jest to za mało.
    Zupełnie przy okazji obaliliśmy mit o tym, że tylko w trybie synchronicznym Athlon XP pracuje najwydajniej. Tu widać tendencję zupełnie odwrotną. Tak więc bracia Athlonowcy w wersji SocketA: jeśli pamięci nie idą Wam wyżej, maksymalizujcie FSB - w trybie Dual DDR mocno podrasuje to Wasze kompy.

    Przyjrzyjmy się teraz zachowaniu Athlona 64:

    Tab. 2. Pomiary wydajności A64.

    Ustawnienia

    Sisoft Sandra/Memory

    Superpi 4M

    3DMark2001SE

    9x222MHz, HTx4 (888MHz), CPU:Mem=9:93461/34613'36"20914
    9x222MHz, HTx3 (666MHz), CPU:Mem=9:93463/34623'36"20915
    8x250MHz, HTx3 (750MHz), CPU:Mem=8:93464/34653'33"20929
    7x285MHz, HTx3 (855MHz), CPU:Mem=7:93459/34583'33"20976

    Widać pewne rozbieżności? Ale popatrzmy na częstotliwości pokazywane przez CPU-Z:


    Rys. 2. CPU-Z - 9x222MHz


    Rys. 3. CPU-Z - 8x250MHz


    Rys. 4. CPU-Z - 7x285MHz

    Widać, że częstotliwości nie są równe. Również częstotliwości pamięci będą różne. Wynoszą odpowiednio: 222MHz, 222.2MHz oraz 221.7MHz. Nie są to wielkie różnice, ale dla pewności przeliczmy co będzie kiedy unormujemy wyniki.

    Po unormowaniu wyników do pierwszej wartości wyniki w Sandrze bedą wyglądać następująco:

    Tab. 3. Pomiary Sisoft Sandra/Memory - wartości unormowane.
    UstawnieniaSisoft Sandra/Memory - wartości unormowane
    9x222MHz, HTx4 (888MHz), CPU:Mem=9:93461/3461
    9x222MHz, HTx3 (666MHz), CPU:Mem=9:93463/3462
    8x250MHz, HTx3 (750MHz), CPU:Mem=8:93461/3462
    7x285MHz, HTx3 (855MHz), CPU:Mem=7:93464/3463


    Różnice w czasie kolejnych pomiarów (przyciskiem odświeżania w oknie programu) sięgają 2MB/s, można więc śmiało powiedzieć ze wyniki są identyczne (błędy pomiaru są większe niż pomierzone różnice). Różnice w Superpi wyglądają podobnie. Natomiast w przypadku 3DMarka2001SE należy koniecznie brać pod uwagę, że wyniki mogą się różnić przy kolejnych powtórzeniach nawet o kilkadziesiąt punktów. Jednak uważam jego użycie za sensowne.


    Gdzie się więc podział wpływ asynchroniczności na wydajność? Odszedł w krainę wiecznych Megaherców, ale smutno nam nie bedzie.

  3. 'Zaraz zaraz, a co to za 7:9, 8:9, 9:9?' czyli skąd się biorą te dzielniki.

    W systemie A64 inaczej ustalana jest częstotliwość pracy pamieci. Wiemy, że chipset komunikuje się z pamięciami za pośrednictwem procesora. Co z tego wynika? Nie można tak po prostu ustawić dzielnika FSB:pamięci, bo nie ma jak. Ten stosunek ustawia się pośrednio. Najpierw ustawiamy mnożnik procesora: 5, 6, 7, 8, 9, ew. połówkowe 5.5, 6.5, 7.5. Następnie musimy ustawić dzielnik częstotliwości CPU:pamięci. Iloczyn tych wartości da stosunek częstotliwości FSB:pamięci.

    Na przykład: mnożnik procesora to 9. Możemy więc ustawić: 9:9, 9:10, 9:11, 9:12 itd.

    Jak widzimy różni się to znacznie od tego, co widzimy w BIOSach - tam jest 200MHz, 166MHz, 133MHz, w niektórych płytach jeszcze 183MHz i150MHz. Co jest grane? Twórcy standardu albo się bardzo nudzili, albo uważali nas za idiotów którzy nie potrafiliby zrozumieć tego, że jest mnożnik procesora i dzielnik pamięci. Uznali, że użytkownik ma widzieć częstotliwość pamięci. Jaki mętlik to powoduje chyba wszyscy wiemy. Aby z częstotliwości procesora uzyskać częstotliwość pamięci trzeba najpierw odgadnąć jaki dzielnik CPU:pamięci ustala sobie płyta, a następnie podzielić częstotliwość procesora przez te liczbę. Z kolei aby z ustawienia w BIOSie wyliczyć częstotliwość pamięci trzeba wiedzieć jakiemu dzielnikowi FSB:pamięci odpowiada dane ustawienie (żeby było śmieszniej dla różnych mnożników procesora są ustalane różne dzielniki CPU:pamięci, a jeszcze zabawniej jest dla mnożników połówkowych, bo wtedy procesor zaokrągla dzielnik w górę do najbliższej liczby całkowitej).

    Przykład: chcemy ustawić dzielnik FSB:pamięci 200MHz:183MHz przy mnożniku procesora 10. Liczymy: 183:200=0,915. Najbliższym stosunkiem dla mnożnika 10 bedzie 10:11. Da to dla pamięci częstotliwość 0,90909x200MHz=181,8MHz. To samo ustawienie przy mnożniku 9 da dla pamięci częstotliwość 180MHz, dla mnożnika 8 będzie 177.8MHz. Nieco to komplikuje sprawę w porównaniu do starej architektury, gdzie był tylko dzielnik w chipsecie.

    Pełna tablica dzielników wygląda następująco:


    Tab. 4. Dzielniki pamięci A64.

    A wynikające z niej częstotliwości pamięci dla poszczegółnych ustawień pamięci i mnożników procesora:


    Tab. 5. Dzielniki pamięci A64 - wynikowe częstotliwości pamięci.

    Tak więc mówiąc o ustawieniach 200, 166, 133MHz należy pamiętać, że to tylko symboliczne oznaczenia a rzeczywista częstotliwość pamięci może być inna niż wynika to z ustawienia pokazanego w BIOSie. Tym bardziej jest to ważne, że nawet programy pokazujące te częstotliwości (np.: CPU-Z) potrafią się w tym względzie mylić!

  4. Mnożnik HT - co daje, na co wpływa.

    Jak pewnie zauważyliście w tabeli pomiarowej, ustawienie częstotliwości HT na 666MHz i 888MHz nie zmienia zupełnie niczego. Nie zmienia się ani przepustowość pamięci, ani wynik Superpi, ani wydajność 3D. Czego to dowodzi? Dowodzi to po pierwsze tego, że nie ma ona znaczącego wpływu na wydajność komputera. Powód jest bardzo prosty - już przy tych 600MHz przepustowość magistrali procesor-reszta systemu jest całkowicie wystarczająca. Tak więc pogoń za Gigahercami w tym miejscu jest zupełnie niepotrzebna. A gdy do tego dodamy częste kłopoty przy wyższych częstotliwościach rzędu 1GHz wiemy już, że ustawianie wysokich mnożników HT możemy sobie darować. Skupmy się na wyciskaniu MHz z procesora i pamięci.

  5. Podsumowanie.

    Co widać po wynikach naszych pomiarów? Najważniejszą informacją jest całkowita dowolność w ustawianiu częstotliwości pamięci - nareszcie nie musimy się martwić o dzielniki. O pytaniu 'ustawię 5:4 to stracę czy zyskam?', o zwrocie 'synchroniczne/asynchroniczne ustawienie pamięci' użytkownik A64 może zupełnie zapomnieć.

    Platforma A64 wnosi wiele zmian, trzeba od nowa uczyć się tych dzielników, mnożników, zerkać czasem do tabeli. Ale to kwestia przyuczenia się. Potem czekają nas już tylko same przyjemności...


    rapra, Białystok 2005.01.09


    Źródła:
    - schematy blokowe platform KT600 i K8T880 - www.viaarena.com
    - tablice dzielników pamięci A64 - www.xtremesystems.org

    - Hosted by Bachus Anonymous -