architektura procesorów
Data: 19 wrzesień 2007
Identyfikator: 070101
Coraz więcej osób zastanawia
się, czy może skorzystać
z 64-bitowego systemu
operacyjnego i odpowiednich
aplikacji oraz czego w efekcie
należy się spodziewać. Dlaczego
rezygnacja ze środowiska
32-bitowego jest tak ważna,
jakie przynosi zyski i jakie
problemy mogą się pojawić?
Strona 1 z 5
|
Zdaniem redaktora
|
Michał Szulowski
redaktor działu Hardware magazynu NEXT, testuje sprzęt od ponad 10 lat
Optymalizowanie kodu aplikacji zawsze zabiera mnóstwo czasu, jednak pozwala osiągnąć bardzo dobre efekty. Ma szczególne znaczenie w przypadku programów, które są wykorzystywane do najbardziej czasochłonnych obliczeń. Nic więc dziwnego, że mimo konieczności poniesienia znacznych kosztów na optymalizację, inwestowanie w 64-bitowe aplikacje opłaca się użytkownikom programów. Obecnie najlepsze wyniki daje połączenie optymalizacji kodu dla platform 64-bitowych z możliwością podziału zadań między poszczególne jądra procesora. Niestety, większość programistów wychodzi z założenia, że produkt powinien jak najszybciej być gotowy do sprzedaży, bo konkurencja może wprowadzić swój wyrób szybciej. W efekcie często rezygnują ze szczegółowej optymalizacji kodu, a programy słabe wypierają te lepsze, zoptymalizowane.
|
Aby zrozumieć istotę zmian wprowadzonych przez 64-bitowy tryb pracy, należy poznać nieco historii. Najpopularniejsze obecnie procesory o architekturze x86 wywodzą się w prostej linii z układów scalonych wykorzystywanych w kalkulatorach. Nic więc dziwnego, że podstawowym działaniem, jakie potrafiły na początku wykonywać, było dodawanie i mnożenie. Oczywiście, procesor zastosowany w pierwszych komputerach IBM PC miał już bardziej rozwiniętą listę rozkazową, jednak założenia konstrukcyjne niewiele się zmieniły.
Do wykonywania podstawowych działań wystarczał pojedynczy rejestr, tzw. akumulator, w którym zapisywany był młodszy bajt wyniku działania, zastępując jeden z operandów. Oprócz tego dostępny był rejestr pomocniczy BX, licznik pętli CX oraz rejestr DX, w którym zwracany był starszy bajt wyniku. Pozostałe cztery, tzw. rejestry specjalne, wykorzystywane były do adresowania pamięci, przy pobieraniu lub zapisywaniu danych.
Procesory od 8086 do 80386 pracowały synchronicznie z pamięcią, więc czas dostępu do danych w niej przechowywanych nie był dużym utrudnieniem – oczekiwanie na informacje trwało w większości instrukcji kilkanaście taktów. Wraz z rozwojem procesorów, czyli od pojawienia się układów i486 DX2, częstotliwość pracy procesora zaczęła rosnąć znacznie szybciej niż częstotliwość pamięci, co powodowało wydłużenie czasu oczekiwania na dane. Współczesne CPU pracują od 6 do 15 razy szybciej niż pamięć. Powoduje to powstawanie bardzo dużych opóźnień i gdyby nie stosowanie różnego rodzaju pamięci podręcznych oraz rozmaitych technik zmian kolejności przetwarzania ciągu instrukcji, obserwowalibyśmy ogromne zmniejszenie szybkości działania procesora. Dlatego bardzo istotne jest udostępnienie możliwości lokalnego przechowywania danych w rejestrach procesora.
|
Najważniejsze bloki funkcjonalne procesora
|
|
|
W strukturze procesora można wyróżnić wiele specjalizowanych bloków funkcjonalnych.
Kolorami rozróżnione są generacje procesorów, w których wprowadzono poszczególne moduły.
|
Karkołomne sztuczki
W procesorach o architekturze x86 będących przedstawicielami CISC liczba rejestrów nadal jest ograniczona. W 32-bitowym trybie pracy dostępne są jedynie 4, tylko ich długość została zwiększona z 8 do 32 bitów.
Tymczasem współczesne procesory typu RISC mają od 32 do 64 rejestrów ogólnego przeznaczenia, a typu VLIW – nawet 128. Tak duża liczba wynika z szybkości dostępu do przechowywanych danych – większość operacji może zostać wykonana w pojedynczym takcie zegara sterującego.
Próbą rozwiązania problemu opóźnień jest powiększenie pamięci podręcznej. Jednak nawet jeśli informacje znajdują się w cache
pierwszego poziomu, wówczas przestój procesora przy odwoływaniu się do nich trwa kilka taktów. Jeżeli dane muszą być pobrane z pamięci podręcznej drugiego poziomu, wówczas traconych jest kilkanaście do kilkudziesięciu taktów, co zależy od konkretnego modelu procesora. W kolejnych generacjach procesorów wprowadzono jeszcze inne sposoby obejścia tego ograniczenia. Najważniejsze z nich polegają na zmianie kolejności wykonywania instrukcji ( OoOE), tak by procesor nie czekał na pobranie danych z pamięci, a operował na tych, które są dostępne szybciej. Jest to jednak dość trudne do zrealizowania, a skuteczność działania nie jest stuprocentowa, bo często występują zależności kolejnych operacji od wyniku poprzedniego działania. W efekcie układy, które realizują wszelkie próby obejścia problemu, są bardzo złożone i zajmują duży fragment powierzchni w strukturze krzemowej, a to podnosi koszt wytworzenia procesora i zwiększa zużycie energii.
Ocena: 



(aktualna: 5,0; liczba głosów: 2) (aby ocenić, musisz się zalogować w serwisie)
Podobne artykuły: