Hlavní navigace

Názor ke zprávičce Intel pracuje na pětiúrovňové tabulce stránek od frr - Ohledně počtu drátů v patici CPU, trochu bych...

  • Aktualita je stará, nové názory již nelze přidávat.
  • 18. 12. 2016 23:08

    frr

    Ohledně počtu drátů v patici CPU, trochu bych to rozvedl:

    V dobách, kdy v patici CPU byla vyvedena sběrnice FSB, tzn. uvnitř pouzdra CPU bylo skutečně pouze CPU jádro a jeho cache (nebo dvě nebo čtyři jádra), měly některé procesory skutečně 32 bitů pro celý fyzický adresní prostor. Toto odpovídá cca dobám Pentia IV (Netburst) a prvním generacím ATOMů. Do fyzického adresního prostoru se musí vejít PCI config space a mapovaná okna PCI MMIO. Poslední generace procesorů s vyvedenou FSB měly v patici 36 adresních bitů (tuším spodní 3 nebyly přítomny, protože data FSB byla široká 64 bitů = 8 bajtů). Tahle doba (FSB) skončila u Intelu procesory Core2Duo a čipsetem i4x series (včetně).

    V následující generaci (první Core i3/5/7 series) se north bridge = řadič paměti přestěhoval do pouzdra CPU, a FSB zmizela někde uvnitř pouzdra (později uvnitř čipu). Potažmo procesory mají vyvedenu pouze sběrnici paměťovou - která má na daném modelu CPU určitý počet kanálů (dnes na desktopu dva, ale bývaly i tři, u Xeonů čtyři) a na každém kanálu určitý počet obsloužitelných "ranků", DIMM patic, a naadresovatelných gigabajtů. Kromě toho Intel, inspirován AMD a jeho HyperTransportem (který má původ tuším u DEC Alpha), zavedl u více-paticových strojů (Xeon e5) svou vlastní "štíhlou CPU-to-CPU sběrnici" zvanou QPI. Takže tu máme patrně dokonce tři čísla, kolik paměti daný CPU podporuje:

    1) kolik gigabajtů a v jaké skladbě DIMMů umí obsloužit řadič paměti, v součtu za všechny kanály. Vstupují do toho single/dual/quad-rank DIMMy a u některých modelů také generace sběrnice, např. DDR2 vs. 3, a také přítomnost/absence ECC. Podrobnosti bývají v datasheetu konkrétního modelu (nebo rodiny) CPU.

    2) jakou interní délku adresy má jádro (+ cache) při přístupu na on-chip řadič RAM a HT/QPI/PCI-e root complex. Toto je obdoba staré dobré FSB - a asi úplně nehraje roli, zda je uvnitř čipu mezi jádry CPU, kešemi a MCH blokem pořád jenom FSB nebo už něco jiného: maticový přepínač, nějaký toroidní token bus apod. Do této "šířky na rozhraní jádra CPU" se vedle RAM musí vejít taky PCI config space a MMIO okna. Tohle číslo jsem nikdy v datasheetech nehledal, možná není ani uvedeno. U jedno-paticových platforem (desktop a entry server) bohatě stačí, pokud je to číslo dvojnásobkem podporované kapacity fyzické RAM.

    3) jakou délku adresy transportuje HT/QPI. Tím by teoreticky mohlo být omezeno, kolik fyzické RAM lze osadit v jediném vícepaticovém NUMA systému (Xeon E5/E7 apod.). Tohle číslo neznám.

    Další věc je, jak velký NUMA systém lze postavit z dostupných CPU co mají HT/QPI = jaká další omezení ta stavebnice má (max. počet NUMA uzlů, krát max. RAM na NUMA uzel). Něco umí samotné procesory od daného výrobce, ale další expanzi lze třeba zařídit pomocí HT/QPI čipsetů třetích stran.

    Pokud to správně chápu, nemá velký smysl stavět systém, který bude mít terabajty RAM pro několik málo CPU jader. Jako efektivnější mi připadá obecnější NUMA, kde k určitému počtu paměťových modulů patří vždycky hrst CPU jader (a to celé je NUMA uzel). Každopádně to nebudou malé sestavy pro velký počet zákazníků. Ani bych to neviděl na servírování virtuálů někde v cloudu. Nejspíš se bude jednat o relativně akademickou specialitku pro HPC. Pokud to má být provozně spolehlivé, mělo by to podporovat hot-swap NUMA uzlů apod. A popravdě mi přijde, že i pro velkou část HPC úloh už není velký rozdíl, jestli je stroj echtovní NUMA, nebo nějaký volnější cluster (IB/PCI-e/Ethernet v backplanu) - přičemž ten volnější cluster bude odhadem levnější a vrozeně shovívavější k výpadkům jednotlivých uzlů...

    Pokud správně chápu, stránkovací tabulky jsou uložené v RAMce a prohrabuje se jimi jádro CPU. Čili není to záležitost čipsetu, nebo něčeho "jižně od FSB". Záležitostí čipsetu bývaly MTRR, ale to se jednak týká relativně omezené a obskurní oblasti IO (přístupu na periferie skrz PCI a spol.), druhak údajně roli MTRR přebrala "page attribute table", což je rozšíření/apendix stránkovacích tabulek, o kterých pojednává tento článek.

    BTW PCI a PCI-e odedávna podporuje 64b adresaci, v případě paralelní PCI i na 32b fyzické šířce (dual address cycle). Tady se bavíme o adresách na PCI sběrnici, které mají relativně blízko k fyzickému adresnímu prostoru CPU. Okna sběrnicových adres se mapují skrz PCI/PCI-e root complex... kam vlastně? do virtuálního prostoru jádra? Google bus_to_virt / phys_to_virt... To vypadá, že na x86 vč. x86_64 je sběrnicový adresní prostor PCI přímo mapovaný do fyzického adresního prostoru hostitelského CPU :-)