1. Tryby pracy procesora

Tryby pracy procesora zostaną przedstawione na przykładzie procesorów firmy Intel. Jednak dla wszystkich procesorów klasy PC są one analogiczne.

 

Rys. 1. Tryby pracy procesora firmy Intel

 

Na rysunku 1 przedstawiono możliwe tryby pracy procesora firmy Intel. Wiążą się one ściśle ze sposobem adresowania pamięci. Historycznie najstarszy jest tryb rzeczywisty. Jest to tryb pracy pierwszych procesorów Intela. W trybie tym procesor ma do dyspozycji 20 bitową szynę adresową. Należy pamiętać, że rejestry procesora były wtedy 16 bitowe. W celu wygenerowanie adresu 20 bitowego użyto pewnego triku. Do adresowania są wykorzystywane dwa rejestry 16 bitowe (Rys. 2). Jeden z nich (adres przesunięcia) jest traktowany jak zwykły rejestr 16 bitowy. Drugi (rejestr segmentowy) jest traktowany jako rejestr, do którego dopisano (w domyśle) cztery bity na ostatnich, najmniej znaczących, pozycjach. Rejestr ten jest traktowany, jako 20 bitowy, gdzie ostatnie cztery bity są zawsze zerami. Następnie sumator dodaje wartości tych rejestrów generując adres 20 bitowy. Ten sposób adresowania jest charakterystyczny dla pierwszych komputerów działających pod systemem operacyjnym DOS. Pamięć w tym trybie nie jest chroniona w żaden sposób. Każdy program może zapisywać dane w dowolne miejsce pamięci, również tam gdzie rezyduje system operacyjny, powodując w takim przypadku jego zawieszenie. Ponieważ dysponujemy 20 liniami adresowymi, to możliwy do zaadresowania obszar pamięci wynosi 1MB. Na początku wartość ta wydawała się więcej niż wystarczająca. Należy nadmienić, że do dyspozycji programów nie była cała dostępna pamięć, a tylko jej część (do 640kB). W pozostałej, górnej części pamięci przechowywane były różne dane systemowe.

 

 

Rys. 2. Sumator do obliczania 20-to bitowego adresu fizycznego (system operacyjny DOS)

 

Programy jednak stawały się coraz bardziej „zasobożerne”. Szybko okazało się, że pamięci brakuje. W procesorach, począwszy od Intel 386, pojawił się nowy tryb chroniony pracy. Przede wszystkim teraz procesory były 32 bitowe. Procesor mógł bezpośrednio adresować 2^32 = 4,294,967,296 (4GB) pamięci. Jednak pamięć, ze względów które będą wyjaśnione dalej, nie była adresowana bezpośrednio. Stosowano najczęściej technikę segmentacji pamięci połączoną ze stronicowaniem. W tym przypadku pamięć była chroniona przed nieuprawnionym dostępem (stąd nazwa tego trybu). Programy nie mogły już bezkarnie zapisywać danych w obszary zajmowane przez system operacyjny i inne programy. Niebagatelna była też możliwość adresowania aż 4 GB pamięci RAM.

Pojawił się jednak problem, jak obsłużyć stare programy, pracujące w trybie rzeczywistym. Przełączanie procesora pomiędzy pracą w trybie rzeczywistym i chronionym było co prawda możliwe, ale bardzo kłopotliwe. Dlatego powstał tryb wirtualny 8086. Jest to możliwość stworzenia wirtualnego trybu rzeczywistego, koniecznego np. do uruchomienia programu pracującego pod kontrolą systemu DOS, działającego bezpośrednio w trybie chronionym. Nie trzeba było już przełączać się pomiędzy trybami. Co więcej każdy program DOS mógł mieć własne, wirtualne środowisko pracy.

Z chwilą pojawienia się procesorów 64 bitowych wprowadzono odrębny tryb adresowania IA-32e. Jest to rozszerzony tryb chroniony, w którym adresy mogą być 64 bitowe. Ze względów ekonomicznych nie stosuje się adresowania 64 bitowego. W Windows adresy są 47 bitowe, na płytach głównych często wyprowadzanych jest tylko 40 ścieżek adresu. Tym niemniej i tak dostępna przestrzeń adresowa przekracza możliwości konstrukcyjne pamięci RAM. W tym trybie pamięć jest również chroniona. Najczęściej stosuje się stronicowanie pamięci (segmentacja jest wyłączona).

Tryb zarządzania systemem (ang. system management) jest charakterystyczny dla procesorów Intela. Służy on głównie do diagnostyki systemu w ramach interfejsu ACPI (ang. Advanced Configuration and Power Interface). Poniżej wymieniono niektóre sytuacje, gdzie ten tryb pracy może być użyty:

  • Obsługa zdarzeń systemowych, takich jak błędy pamięci lub mikroukładu.
  • Zarządzanie funkcjami bezpieczeństwa systemu, takimi jak wyłączanie przy wysokiej temperaturze procesora oraz włączanie i wyłączanie wentylatorów.
  • Uśpienie systemu i hibernacja, itp.