« Отговор #30 -: Dec 25, 2013, 12:53 »
По принцип, 64-битовата система е по-бърза и по-сигурна и има няколко причини за това, естествено обаче зависи от workload-а. Ако ползваш CPU-интензивни приложения ще усетиш по-голяма разлика примерно, защото по-големият брой налични регистри гарантират че приложението няма толкова често да пъха и вади неща от паметта, понеже няма къде да ги държи. При CPU-доминирани натоварвания, както е в моята трошачка за хешове, разликите между x86 и x86_64 могат да станат големи - от порядъка на 150% и повече - защото x86_64 има два пъти повече SSE регистри, с които оперираме, при x86, "наказанията" от това постоянно нещо да се зарежда в SSE регистри и от тях да се записва в паметта, са огромни. Ако приложението ползва рекурсивни алгоритми - също ще намажем, понеже първите няколко аргумента се предават с регистри, не през стека, това е по calling конвенция. Ако приложенията са IO-bound обаче, няма да усетиш никаква разлика, дори е възможно 32-битовите приложения да са маргинално по-бързи. И накрая, ако приложението използва голям брой структури, в които има указатели, 32-битовото приложение вероятно ще се държи малко по-добре, защото ще прави по-малко достъпи до паметта и ще утилизира по-добре процесорния кеш.
Това казано, в зависимост от приложението, 64-битовото по принцип заема повече памет, защото адресите са 64-битови.
Що се отнася до сигурността - експлойти, които решават проблема с ASLR-а, пръскайки глупости из адресното пространство и действайки на принципа на брутфорса докато на харабията скочим на "правилния" адрес, на x86_64 може и да успеят......ама ще им трябват порядъци повече време. non-executable страниците ги има и при PAE, така че това няма голямо значение.
PAE иначе започва да става ужасно неефективен още при 8GB памет обаче, защото алокирането на памет над 4-те гигабайта от ядрото, става през един 128-мегабайтов (май?) прозорец и колкото повече физическа памет се адресира, толкова по-голяма става тарапаната през въпросния "прозорец" - памет постоянно се map-ва, unmap-ва и производителността на системата се срива. На практика, единствената файда от 32-битова система според мен е когато си ограничен в наличната RAM, примерно до 2GB, има смисъл. Оттам нататък, предимствата на 64-битовата платформа надделяват.