Adres pamięci

Adres pamięci

Adres pamięci w informatyce to unikalny identyfikator dla określonej części pamięci komputera, gdzie procesor (ang. CPU, central processing unit) może przechowywać dane do późniejszego użycia. W nowoczesnych systemach każdy adres wskazuje na pojedynczy bajt pamięci; dane, które nie mieszczą się w jednym bajcie, są podzielone na kilka bajtów, które mają następujące po sobie adresy. Niektóre mikroprocesory zostały zaprojektowane z możliwością adresowania dwubajtowego, co oznacza, że typowa jednostka przechowywania jest większa niż bajt. Przykłady takich systemów to Texas Instruments TMS9900 oraz National Semiconductor IMP-16, które stosują ten sposób adresowania.

Pamięć fizyczna a pamięć logiczna i wirtualna

Pamięć fizyczna odnosi się do sprzętu komputerowego. Jej przeciwieństwem jest pamięć logiczna i wirtualna, które reprezentują koncepcje związane z oprogramowaniem. Na przykład, pamięć fizyczna może odnosić się do rzeczywistej przestrzeni RAM, na przykład 128 MB. Natomiast pamięć wirtualna w procesorach 32-bitowych może wynosić aż 4 GB. Fizyczna struktura danych odnosi się do sposobu organizacji tych danych na nośniku, podczas gdy struktura logiczna opisuje, jak dane są prezentowane użytkownikowi lub programom. Na przykład plik danych to ciąg bajtów, ale fizycznie jeden plik może być rozproszony w różnych miejscach na dysku.

Adresy pamięci w nowoczesnych komputerach

Często w kontekście maszynowego słowa nowoczesnych komputerów mówi się również o wirtualnych adresach pamięci. Na przykład komputer uznawany za „32-bitowy” traktuje pamięć jako zbiór wartości 32-bitowych. Komputer, który adresuje bajtowo i może przypisać 32 bity do jednego adresu, ma przestrzeń adresową równą:

232 = 4294967296

bajtów, co odpowiada 4 gigabajtom. Starsze komputery często obsługiwały adresy, które były większe od ich słowa maszynowego; w przeciwnym razie ich pamięć byłaby zbyt mała. Na przykład 8-bitowy mikroprocesor MOS Technology 6502 obsługuje adresy 16-bitowe. Gdyby były one 8-bitowe, pamięć mogłaby mieć jedynie 256 bajtów. Podobnie, 16-bitowy Intel 8086 obsługuje adresy 20-bitowe, co pozwala zaadresować 1 megabajt, a nie 64 kilobajty. Komputer o architekturze 64-bitowej może zaadresować:

264

bajtów (16 eksabajtów), co stanowi ilość pamięci uznawaną za praktycznie nieskończoną.

Wpływ wyrównania adresów na wydajność

W zależności od architektury, wydajność komputera może być obniżona przez „niewyrównany” dostęp do pamięci. Na przykład komputer 16-bitowy z 16-bitową szyną danych, taki jak Intel 8086, działa efektywniej, gdy dane są „wyrównane” i zaczynają się od adresu parzystego. W takim przypadku załadowanie 16 bitów danych zajmuje jeden cykl. Jeśli adres jest nieparzysty, procesor może potrzebować dwóch cykli – jednego dla niższego adresu (pomijając połowę danych) i drugiego dla wyższego adresu (ponownie pomijając połowę danych do odczytu).

Zobacz też