Během psaní seriálu o AwardBIOSu jsem si řekl, že by neškodilo se s vámi podělit o zkušenosti, které jsem získal při své snaze optimalizovat výkon paměťového subsystému na základní desce MSI K7T Turbo. Vše se točí kolem pojmu memory bank interleaving neboli prokládané zpracování paměťových bank – tato funkce může práci vaší paměti významně urychlit.
SDRAM, její banky a tajemný interleavingPaměťovou jednotkou, ke které přistupuje čipset základní desky, není celý modul SDRAM, ale paměťová banka – každý modul, které zasouváte do základní desky, je totiž logicky rozdělen právě na dvě banky (proto se mu říká DIMM neboli Dual In-line Memory Module).
Řadič paměti SDRAM je schopen provádět zajímavou věc, která může významně urychlit odezvu a potažmo i průchodnost paměti: zhruba řečeno, umí přistupovat k datům ve více paměťových blocích (bankách) najednou. Jak to dělá? Paměť je organizována maticově, tedy do sloupců a řádků, proto při přístupu do ní musí proběhnout dvě operace: výběr řádku (Row Access Strobe neboli RAS) a výběr sloupce (Column Access Strobe neboli CAS) – pak teprve získáme obsah požadované paměťové adresy. Mezi těmito operacemi ještě musí být krátká prodleva nazývaná RAS to CAS delay. Často se výše uvedené parametry paměti shrnují do zápisu typu x-y-y-y, kde x je doba, za kterou získáme obsah náhodné adresy z paměti a y je doba, za kterou získáme obsah jiné adresy ze stejného řádku. Můžeme snadno odvodit, že platí:
x = RAS + RAS to CAS delay + CAS (nastavujeme řádek i sloupec)y = CAS (zde už nastavujeme pouze sloupec, protože zůstáváme na stejném řádku)
Netřeba jistě zdůrazňovat, že čím jsou hodnoty RAS a CAS nižší, tím je výkon paměti vyšší. A nyní přichází ten trik, kterému se anglicky říká interleaving a česky bychom ho mohli označit jako prokládané zpracování paměťových bank. Procesor zadá čipsetu požadavek na přečtení obsahu nějaké paměťové adresy, a jak bylo výše uvedeno, několik cyklů to potrvá, než danou hodnotu dostane. Protože však řadič paměti umí zacházet s jednotlivými bankami souběžně a nezávisle, může zároveň přistupovat k jiné adrese, pokud se tato nachází na jiné paměťové bance. V ideálním případě plně využitého čtyřcestného interleavingu tedy řadič současně získává hodnoty ze čtyř paměťových bank a připravuje je procesoru, aby jeho čekání na data bylo co nejkratší.
Interleaving se vztahuje i na občerstvování (refresh) obsahu paměti. Dynamická paměť se musí v pravidelných intervalech občerstvovat, aby neztratila svůj obsah, a v době občerstvování nemůže procesor k paměti vůbec přistupovat. Aby procesor po dobu refreshe neztrácel přístup k celé paměti, občerstvuje se při interleavingu v daném okamžiku vždy jen jedna paměťová banka a nikoli všechny najednou – procesor tak může ve zbývajících bankách pokračovat v rozdělané práci.
Vidíme tedy, že interleaving je v určitých situacích schopen výrazným způsobem zefektivnit práci paměťového subsystému a dodávat procesoru data z operační paměti rychleji.
Jak se k tomu staví MSI K7T Turbo (ale i jiné základní desky)Oficiální BIOS tohoto motherboardu (momentálně verze 2.8) nám u pamětí klasifikovaných v jejich identifikačním čipu (SPD) jako CAS 3 neumožňuje pokusit se o plnou optimalizaci jejich výkonu. Standardně máme dvě možnosti, z nichž žádná není ideální. První variantou je ve skupině Advanced Chipset Features zapnout volbu DRAM Timing by SPD – tím získáme výhodný čtyřcestný interleaving, ale BIOS nám zároveň znepřístupní volby SDRAM Cycle Length a DRAM Clock, v nichž nastaví hodnoty z SPD (tedy CAS = 3). My ale víme, že většina pamětí klasifikovaných výrobcem jako CAS 3 dokáže bez problémů zvládnout i CAS = 2, což přináší vyšší výkon, a chtěli bychom tuto hodnotu nastavit. Pokud ovšem zvolíme druhou variantu, tj. vypnutí volby DRAM Timing by SPD, a „ručně“ nastavíme CAS (tedy SDRAM Cycle Length) na hodnotu 2, přijdeme o čtyřcestný interleaving, který je zde bohužel zapnut pouze tehdy, je-li zapnuto DRAM Timing by SPD. Co tedy s tím?
Řešení existuje a má jméno Memory Interleave Enabler (MIE). Jedná se o malý ovladač pro 9x, ME, NT 4.0, 2000 a XP, který na základních deskách s čipsety VIA zapíná čtyřcestný interleaving (seznam podporovaných čipsetů najdete na této stránce). Je třeba dodat, že ovladač slouží pouze k úvodnímu přeprogramování registrů při startu Windows a nezabírá prakticky žádnou paměť. Jeho instalace je jednoduchá – stačí rozbalit stažený archiv do libovolného adresáře, spustit instalační dávku (pro Windows 9x/ME je to Setup_9x.bat a pro Windows NT4/2000 Setup_NT.bat) a na závěr restartovat počítač. Pokud vám váš BIOS umožňuje interleaving aktivovat a neztratit přitom žádnou z jiných optimalizačních výhod, samozřejmě MIE nepotřebujete; v opačném případě se vám však tento ovladač velmi hodí. VIA začlenila možnost prokládaného zpracování paměťových bank do svých čipsetů již v roce 1997, mnoho výrobců základních desek však v BIOSech tuto vlastnost nedává uživateli plně k dispozici.
Jak zjistit, jestli váš paměťový subsystém interleaving používá?Stačí použít oblíbený diagnosticko-benchmarkovací program SiSoftware Sandra, v jehož modulu Mainboard Information (pod hlavičkou Logical/Chipset Memory Banks) tuto informaci objevíte (viz obrázek). Nenajdete-li tam položku Bank Interleave, znamená to, že je režim prokládaného zpracování vypnut.
Podívejte se na výsledky, které jsem naměřil, a posuďte sami. Grafy jasně naznačují (rozdíl mezi první hodnotou a dalšími dvěma), jak velkým přínosem je aktivování prokládaného zpracování paměťových bank. Je samozřejmě třeba vzít v úvahu, že Sandřin benchmark průchodnosti paměti je pouze syntetickým testem a u konkrétních her a aplikačních programů se bude přírůstek výkonu lišit podle toho, jak intenzivně a jakým způsobem daný program s pamětí pracuje.
Zdroje: RipNet, Networking Resources