32 bitů
-=-=-=-=-
Remember, an int is not always 16 bits. I'm not sure, but if the
80386 is one step closer to Intel's slugfest with the CPU curve that
is aymptotically approaching a real machine, perhaps an int has been
implemented as 32 bits by some Unix vendors...?
-- Derek Terveer
Toto je jedna z formulek, která je velmi často omílána v různých
časopisech. Dozvíme se, že Windows 95 jsou 32 bitový operační
systém, že používá 32 bitovou FAT a dokonce má 32 bitový přístup
k disku. Někteří píšou, že pentium je 64 bitový procesor atd...
Kupodivu málokdo ví, co to přesně znamená a k čemu to vlastně je
dobré. Reklamy nám pouze vsugerovaly, že co je 32 bitové, to je
moderní, rychlé, stabilní a dává pocit jistoty a bezpečí. To je
samozřejmě nesmysl.
Kolik bitů má procesor se určuje většinou podle šířky datových
cest. Tedy kolik bitů se po takové cestě v procesoru přetáhne naráz.
Z tohoto pohledu opravdu 32 bitové procesory toho zvládnou víc než
16ti bitové. Procesory Intelu jsou 32 bitové od 386DX.
Pro 32 bitový procesor je dobré psát kód, který těch 32 bitů
opravdu využije. Všechny předcházející procesory z řady 80x86 byly
16ti bitové (alespoň navenek) a proto i assemblerové instrukce jsou
takové, že 32 bitů nevyužijou a pokaždé zpracovávají pouze 16ti
bitová data. Procesory 386 přirozeně rozšířily tuto instrukční sadu
a přidaly 32 bitové registry. Pokud použijete 32bitový registr
na místě 16ti bytového, počítá se interně v 32 bitech a teprve
potom se vlastně využije celý procesor. Je li nějaký kód 32 bitový,
znamená to vlastně jenom to, že namísto 16ti bytových registrů
používá i tyto 32 bitové.
Takový kód by měl být schopen využít všechny schopnosti
procesoru. Je ale otázkou, jestli sčítáni 16+16 provedené 32bitově
je rychlejší, než sčítání 16+16 16bitově. Logická odpověď je,
že není. 32bitové sčítání sice využije celý procesor, ale zase sčítá
navíc jenom pár zbytečních cifer, které jsou stejně nulové. Procesor
toho musí udělat o něco víc, a tak by to mělo být o něco pomalejší.
Dněšní procesory ale provedou sčítání jak 16tibitově, tak 32bitově
v jednom taktu a tak by to mělo být stejné. Z této úvahy je vidět,
že zrychlení způsobené 32 bitovým procesorem nepříde samo, ale je
nutné přepsat programy tak, aby 32 bitů opravdu využily.
výheň