Wiele osób zastanawia się, czy procesor 64-bitowy może wydajnie emulować 32-bitowe środowisko. W przypadku architektury AMD64 nie jest to jednak emulacja, tylko osobny tryb pracy procesora, o czym świadczą wyniki testów wydajności przeprowadzonych w różnego rodzaju aplikacjach.

Data dodania: 2011-01-30

Wyświetleń: 1637

Przedrukowań: 0

Głosy dodatnie: 2

Głosy ujemne: 0

WIEDZA

2 Ocena

Licencja: Creative Commons

W trybie emulacji żaden z procesorów nie działa z podobną szybkością co pierwowzór o podobnym stopniu zaawansowania. Oczywiście, jeśli na współczesnym pececie uruchomimy emulator ATARI ST czy Commodore Amiga, to uzyskamy właściwą wydajność. Wynika to jednak z faktu, że uruchamiamy programy napisane dla 20-letnich komputerów, a więc o znacznie mniejszym stopniu skomplikowania. Intel Itanium, mimo znacznie większej mocy obliczeniowej, pozbawiony był początkowo możliwości wykonywania kodu x86. Wszystkie programy działały na nim kilkakrotnie wolniej niż na dostępnych w tym czasie procesorach 32-bitowych.

Najlepsze rezultaty pod względem wydajności osiągnęli twórcy procesora Crusoe firmy Transmeta. Był on jednak od początku zaprojektowany tak, by szybko wykonywał instrukcje występujące w innych architekturach dzięki wykorzystaniu sprzętowego przekształcania kodu (code morphing). Niestety, z powodu braku większego zainteresowania producentów komputerów i odbiorców Transmeta zaprzestała opracowywania kolejnych procesorów. Jednak ze względu na bardzo dobre proporcje między wydajnością a poborem energii Crusoe znajduje zastosowanie w niektórych specjalizowanych produktach, np. ultraprzenośnych notebookach o niskiej wydajności.

Bez emulacji

Wróćmy jednak do architektury AMD64 i wyniku testów jej wydajności. AMD opracowując jej założenia, usunęło z projektu moduły procesora niezbędne do działania aplikacji w trybie Real 8086 oraz Virtual 8086. Dzięki temu uproszczono schemat ideowy, ale ceną jest brak możliwości włączania programów 16-bitowych w trybie 64-bitowym. Co więcej, aplikacje 32-bitowe uruchamiane są w odseparowanych maszynach wirtualnych. Z jednej strony każda z nich może korzystać z całej 32-bitowej przestrzeni adresowej, z drugiej – żadna aplikacja nie powinna zakłócić działania innej.


Takie rozwiązanie wydaje się dość naturalne – konieczność zachowania zgodności z 30-letnimi programami nie jest obecnie najważniejsza, gdyż większość aplikacji jest już dostępna w nowocześniejszych wersjach i lepiej wykorzystuje sprzęt. Niestety, przywiązanie programistów do znanych rozwiązań powoduje, że część 32-bitowego oprogramowania korzysta z 16-bitowych programów instalujących. W efekcie nie ma możliwości uruchomienia go w 64-bitowym systemie.

Na szczęście autorzy najważniejszych programów dostrzegli korzyści z dostępu do większej liczby rejestrów i przygotowują aplikacje wykorzystujące możliwości AMD64. Warto podkreślić, że firma Sun dość szybko przygotowała 64-bitową wersję swojej 8 wirtualnej maszyny Javy, która jest około 40 proc. wydajniejsza od wersji 32-bitowej. Różnice szybkości działania zależą od złożoności rozwiązywa- nego zagadnienia. Niektóre, np. wyznaczanie szybkiej transformaty Fouriera, działają tak samo, inne wykazują 30-proc. przyspieszenie. Ale są również takie jak rozwiązywanie problemów numerycznych metodą Monte Carlo, które przyspieszają dwukrotnie, niezależnie od wielkości wykorzystanego zbioru danych.

Podobnej różnicy wydajności można się spodziewać po uruchomieniu aplikacji napisanej dla platformy NET. Na przykładzie programu Paint.NET w wersji 3.01 widać ponad 30-proc. wzrost szybkości działania aplikacji w systemie 64-bitowym w porównaniu z aplikacją uruchomioną w systemie 32-bitowym. Co istotne, poprawa wydajności nie wymaga od programisty najmniejszej modyfikacji kodu ani nawet zmiany ustawień kompilatora.

Źródło ,http://telewizjasatelitarnaikomputery.blogspot.com/

Licencja: Creative Commons
2 Ocena