32bitové Windows uměly využít víc než 4 GB RAM, ale záměrně to zakázali. Důvod nebyl technický, nýbrž praktický
Procesory Intel uměly adresovat až 64 GB RAM už od roku 1995. Microsoft přesto u klientských Windows zavedl tvrdý strop na 4 GB, a to kvůli ovladačům.
Obsah článku
Populární poučka zní jednoduše: 32bitový systém = maximálně 4 GB operační paměti. Jenže tak úplně to neplatilo. Technologie Physical Address Extension (PAE), kterou Intel zabudoval do procesorů počínaje Pentiem Pro v listopadu 1995, rozšiřovala fyzické adresování z 32 na 36 bitů, a tím umožňovala práci až s 64 GB RAM. Serverové edice Windows tuto schopnost skutečně využívaly. Klientské verze (Windows XP, Vista, 7) ji ale záměrně ignorovaly. Důvod nebyl v tom, že by to systém „neuměl“. Microsoft se rozhodl funkci zablokovat, protože ovladače třetích stran na ni nebyly připravené a hrozilo poškození dat, pády systému i modré obrazovky smrti. Šlo o vědomé produktové rozhodnutí, ne o technickou bariéru.
Tři různé věci, které se schovávají za „4GB limit“
Aby celý příběh dával smysl, je potřeba rozlišit tři pojmy, které se běžně házejí do jednoho pytle:
- Virtuální adresní prostor procesu – každý 32bitový proces vidí maximálně 4 GB virtuální paměti. To je skutečný architektonický limit 32bitového adresování a PAE na něm nic nemění.
- Fyzické adresování CPU – procesory s PAE dokázaly adresovat fyzickou RAM nad 4 GB. Intel to v dokumentaci k architektuře IA-32 výslovně popisuje jako rozšíření na 2³⁶ bajtů, tedy 64 GB.
- Produktový limit edice Windows – Microsoft u klientských verzí zavedl umělý strop, který systému nedovolil využít fyzickou RAM nad 4 GB, přestože jádro to technicky zvládalo.
Právě třetí bod je klíčový. Stejné 32bitové jádro Windows, které na desktopu odmítalo vidět víc než 4 GB, ve Windows Server 2003 Enterprise bez problémů pracovalo s 64 GB. Rozdíl nebyl v kódu jádra, ale v licenční a kompatibilitní politice.
Zlom přišel s Windows XP SP2
Tvrdý strop se v klientských Windows neobjevil hned s vydáním XP v roce 2001. Podle dobové dokumentace Microsoftu k němu došlo až s Windows XP Service Pack 2, který vyšel 17. září 2004. Ve stejném období Microsoft omezil i Windows Server 2003 SP1 ve variantě Standard.
Důvod byl konkrétní a měřitelný. Když PAE posunulo fyzické adresy nad hranici 4 GB, ovladače, které předpokládaly shodu mezi 32bitovou virtuální a fyzickou adresou, najednou přestaly fungovat správně. Nejnebezpečnější situace nastávala u DMA přenosů: ovladač nebo zařízení si z fyzické adresy vzaly jen spodních 32 bitů, zbytek zahodily a zapsaly data na úplně jiné místo v paměti.
Pro uživatele to znamenalo náhodnou korupci souborů, nečitelné I/O operace, zamrzání a modré obrazovky. Microsoft tento problém zdokumentoval jako známý scénář u systémů s PAE a chybně napsanými ovladači. Na serverech, kde běžel kontrolovaný hardware s ověřenými ovladači dodávanými se systémem, bylo riziko minimální. Na desktopech, kam si uživatelé instalovali ovladače pro nejrůznější zařízení od tiskáren po herní periferie, představovala tato situace noční můru.
Serverová cesta existovala, ale stála jmění
Kdo chtěl na 32bitovém x86 hardwaru využít víc než 4 GB RAM, měl jedinou oficiální cestu: koupit serverovou edici Windows. Windows Server 2003 Enterprise podporoval na x86 až 64 GB díky PAE. Jenže nejlevnější 32bitová serverová edice s touto schopností stála 3 999 dolarů. Při tehdejším květnovém kurzu ČNB 27,095 Kč za dolar to vycházelo na zhruba 108 tisíc korun, bez DPH a bez dalších klientských licencí. Pro běžného uživatele absurdní částka.
Druhá cesta se otevřela až 24. dubna 2005, kdy Microsoft vydal Windows XP Professional x64 Edition. Ta už pracovala s 64bitovým adresním prostorem a celý problém s PAE obcházela úplně jinou architekturou.
Zajímavé je, že Microsoft nebyl jediný, kdo s PAE na 32bitových systémech bojoval. Linux na i386 PAE podporoval otevřeněji, dokumentace jádra počítá až s 64 GB RAM, ale zároveň varuje před většími stránkovacími tabulkami, výkonnostním režijním zatížením a doporučuje na 32bitovém systému obecně nepřekračovat 8 GB. Apple šel ještě jinou cestou: místo řešení PAE na klientu přesouval uživatele rovnou na 64bitový model.
Produktová segmentace, ne technická bezmoc
Příběh 4GB limitu ve Windows je ve skutečnosti příběhem o tom, jak rozhoduje ekosystém. Microsoft měl v rukou jádro, které víc paměti zvládalo. Neměl ale v rukou tisíce ovladačů od třetích stran, jejichž kvalitu na desktopovém trhu nedokázal garantovat. Zablokování PAE na klientu bylo pojistkou proti nestabilitě a zároveň jasnou produktovou segmentací, která tlačila profesionální uživatele k dražším serverovým edicím.
Podobný princip ostatně Microsoft používal i později. Windows 7 Home Premium podporoval maximálně 16 GB RAM, zatímco Professional a Ultimate až 192 GB. Windows 10 Home má strop 128 GB, verze Pro 2 TB. Žádný z těchto rozdílů nesouvisí s procesorem ani s jádrem systému. Jde čistě o licenční politiku.
Dnes už je celá debata akademická, Windows 11 existují výhradně v 64bitové verzi. Ale až příště někdo prohlásí, že „32bitový systém prostě neuměl víc než 4 giga“, vězte, že realita byla složitější. Uměl. Nesměl.