Ile adresów pamięci może pomieścić pamięć RAM w moim komputerze?

Jun 18, 2025
Sprzęt komputerowy

Czasami fajnie jest spojrzeć na powierzchowny poziom doświadczenia komputerowego, a innym razem fajnie jest zagłębiać się w wewnętrzne mechanizmy. Dzisiaj przyjrzymy się strukturze pamięci komputera i temu, ile rzeczy można spakować do pamięci RAM.

Dzisiejsza sesja pytań i odpowiedzi jest dostępna dzięki uprzejmości SuperUser - części Stack Exchange, grupy witryn internetowych z pytaniami i odpowiedziami.

Pytanie

Czytnik SuperUser Johan Smohan boryka się z tym, jak typ procesora i rozmiar pamięci współdziałają, aby uzyskać łączną liczbę adresów. On pisze:

Ile adresów pamięci możemy uzyskać przy 32-bitowym procesorze i 1 GB pamięci RAM, a ile przy 64-bitowym procesorze?

Myślę, że wygląda to mniej więcej tak:

1 GB pamięci RAM podzielone przez 32 bity i 4 bity (?), Aby uzyskać liczbę adresów pamięci?

Czytałem na Wikipedii, że 1 adres pamięci ma 32 bity szerokości lub 4 oktety (1 oktet = 8 bitów), w porównaniu z 64-bitowym procesorem, w którym 1 adres pamięci lub 1 liczba całkowita ma szerokość 64 bitów lub 8 oktetów. Ale nie wiem też, czy dobrze to zrozumiałem.

To są rodzaje pytań, które mogą nie spać w nocy ciekawskiego geeka. Ile adresów jest dostępnych w każdym z hipotetycznych systemów Johana?

Odpowiedź

Współautor SuperUser, Gronostaj, oferuje wgląd w sposób podziału i wykorzystania pamięci RAM:

Krótka odpowiedź: Liczba dostępnych adresów jest równa mniejszej z następujących:

  • Rozmiar pamięci w bajtach
  • Największa liczba całkowita bez znaku, którą można zapisać w słowie maszynowym procesora

Długa odpowiedź i wyjaśnienie powyższego:

Pamięć składa się z bajtów (B). Każdy bajt składa się z 8 bitów (b).

1 B = 8 b

1 GB pamięci RAM to w rzeczywistości 1 GiB (gibibajt, a nie gigabajt). Różnica jest taka:

1 GB = 10 ^ 9 B = 1000000000 B
1 GiB = 2 ^ 30 B = 1 073 741 824 B

Każdy bajt pamięci ma swój własny adres, bez względu na wielkość słowa maszynowego procesora. Na przykład. Procesor Intel 8086 był 16-bitowy i adresował pamięć bajtami, podobnie jak nowoczesne procesory 32-bitowe i 64-bitowe. To jest przyczyna pierwszego ograniczenia - nie możesz mieć więcej adresów niż bajtów pamięci.

Adres pamięci to tylko liczba bajtów, które procesor musi pominąć od początku pamięci, aby dostać się do tej, której szuka.

  • Aby uzyskać dostęp do pierwszego bajtu, musi pominąć 0 bajtów, więc adres pierwszego bajtu to 0.
  • Aby uzyskać dostęp do drugiego bajtu, musi pominąć 1 bajt, więc jego adres to 1.
  • (i tak dalej…)
  • Aby uzyskać dostęp do ostatniego bajtu, procesor pomija 1073741823 bajtów, więc jego adres to 1073741823.

Teraz musisz wiedzieć, co właściwie oznacza 32-bit. Jak wspomniałem wcześniej, jest to rozmiar słowa maszynowego.

Słowo maszynowe to ilość pamięci używanej przez procesor do przechowywania liczb (w pamięci RAM, pamięci podręcznej lub rejestrach wewnętrznych). 32-bitowy procesor wykorzystuje 32 bity (4 bajty) do przechowywania liczb. Adresy pamięci również są liczbami, więc w 32-bitowym procesorze adres pamięci składa się z 32 bitów.

Teraz pomyśl o tym: jeśli masz jeden bit, możesz zapisać na nim dwie wartości: 0 lub 1. Dodaj jeszcze jeden bit i masz cztery wartości: 0, 1, 2, 3. Na trzech bitach możesz zapisać osiem wartości : 0, 1, 2… 6, 7. To jest właściwie system binarny i działa tak:

Binarny dziesiętny
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
10 1010,
11 1011,
12 1100,
13 1101,
14 1110,
15 1111

Działa dokładnie tak samo, jak zwykłe dodawanie, ale maksymalna cyfra to 1, a nie 9. Dziesiętne 0 to 0000 , następnie dodajesz 1 i otrzymujesz 0001 , dodaj jeszcze raz i masz 0010 . To, co się tutaj wydarzyło, jest jak z dziesiętnym 09 i dodanie jednego: zmieniasz 9 na 0 i zwiększasz kolejną cyfrę.

Z powyższego przykładu możesz zobaczyć, że zawsze istnieje maksymalna wartość, którą możesz zachować w liczbie o stałej liczbie bitów - ponieważ gdy wszystkie bity mają wartość 1 i spróbujesz zwiększyć wartość o 1, wszystkie bity staną się 0, przerywając w ten sposób numer. Nazywa się to przepełnieniem liczb całkowitych i powoduje wiele nieprzyjemnych problemów, zarówno dla użytkowników, jak i programistów.

11111111 = 255
+ 1
-----------
  100000000 = 0 (tutaj 9 bitów, więc 1 jest obcięty)
  • Dla 1 bitu największa wartość to 1,
  • 2 bity - 3,
  • 3 bity - 7,
  • 4 bity - 15

Największa możliwa liczba to zawsze 2 ^ N-1, gdzie N to liczba bitów. Jak powiedziałem wcześniej, adres pamięci jest liczbą i ma również wartość maksymalną. Dlatego rozmiar słowa maszynowego jest również ograniczeniem liczby dostępnych adresów pamięci - czasami procesor po prostu nie może przetworzyć liczb wystarczająco dużych, aby zająć więcej pamięci.

Tak więc na 32 bitach możesz zachować liczby od 0 do 2 ^ 32-1, a to jest 4 294 967 295. To więcej niż największy adres w 1 GB pamięci RAM, więc w twoim konkretnym przypadku ilość pamięci RAM będzie czynnikiem ograniczającym.

Limit pamięci RAM dla 32-bitowego procesora teoretycznie wynosi 4 GB (2 ^ 32), a dla 64-bitowego procesora to 16 EB (eksabajtów, 1 EB = 2 ^ 30 GB). Innymi słowy, 64-bitowy procesor może obsłużyć cały Internet… 200 razy;) (szacowany wg WolframAlpha ).

Jednak w rzeczywistych systemach operacyjnych 32-bitowe procesory mogą adresować około 3 GiB pamięci RAM. Wynika to z wewnętrznej architektury systemu operacyjnego - niektóre adresy są zarezerwowane do innych celów. Więcej na temat tego tzw Bariera 3 GB na Wikipedii . Możesz podnieść ten limit za pomocą Rozszerzenie adresu fizycznego .

Mówiąc o adresowaniu pamięci, jest kilka rzeczy, o których powinienem wspomnieć: pamięć wirtualna , segmentacja i stronicowanie .

Pamięć wirtualna

Jak @Daniel R Hicks wskazał w innej odpowiedzi, systemy operacyjne używają pamięci wirtualnej. Oznacza to, że aplikacje w rzeczywistości nie działają na rzeczywistych adresach pamięci, ale na adresach udostępnianych przez system operacyjny.

Technika ta umożliwia systemowi operacyjnemu przeniesienie niektórych danych z pamięci RAM do tzw. Pliku stronicowania (Windows) lub wymiany (* NIX). Dysk twardy jest o kilka wielkości wolniejszy niż pamięć RAM, ale nie stanowi to poważnego problemu w przypadku rzadko używanych danych i umożliwia systemowi operacyjnemu udostępnienie aplikacji większej ilości pamięci RAM, niż faktycznie zainstalowano.

Paging

To, o czym rozmawialiśmy do tej pory, nazywa się płaskim schematem adresowania.

Stronicowanie jest alternatywnym schematem adresowania, który pozwala na adresowanie większej ilości pamięci niż normalnie można by było użyć jednego słowa maszynowego w modelu płaskim.

Wyobraź sobie książkę wypełnioną czteroliterowymi słowami. Powiedzmy, że na każdej stronie jest 1024 liczb. Aby zaadresować numer, musisz wiedzieć dwie rzeczy:

  • Liczba stron, na których wydrukowane jest to słowo.
  • Którego słowa na tej stronie szukasz.

Właśnie tak nowoczesne procesory x86 obsługują pamięć. Jest podzielony na 4 strony KiB (po 1024 słowa maszynowe każda) i te strony mają numery. (w rzeczywistości strony mogą mieć rozmiar 4 MB lub 2 MB z rozszerzeniem PAE ). Jeśli chcesz zaadresować komórkę pamięci, potrzebujesz numeru strony i adresu na tej stronie. Zauważ, że do każdej komórki pamięci odwołuje się dokładnie jedna para liczb, co nie będzie miało miejsca w przypadku segmentacji.

Segmentacja

Cóż, ten jest dość podobny do stronicowania. Został użyty w Intel 8086, żeby wymienić tylko jeden przykład. Grupy adresów nazywane są teraz segmentami pamięci, a nie stronami. Różnica polega na tym, że segmenty mogą się nakładać i nakładają się bardzo. Na przykład w 8086 większość komórek pamięci była dostępna z 4096 różnych segmentów.

Przykład:

Powiedzmy, że mamy 8 bajtów pamięci, wszystkie zawierają zera z wyjątkiem czwartego bajtu, który jest równy 255.

Ilustracja do modelu płaskiej pamięci:

_____
|  0  |
|  0  |
|  0  |
| 255 |
|  0  |
|  0  |
|  0  |
|  0  |
 -----

Ilustracja do pamięci stronicowanej ze stronami 4-bajtowymi:

PAGE0
 _____
| 0 |
| 0 |
| 0 | STRONA 1
| 255 | _____
 ----- | 0 |
        | 0 |
        | 0 |
        | 0 |
         -----

Ilustracja do pamięci segmentowej z segmentami 4-bajtowymi przesuniętymi o 1:

SEG 0
 _____ SEG 1
| 0 | _____ SEG 2
| 0 | | 0 | _____ SEG 3
| 0 | | 0 | | 0 | _____ SEG 4
| 255 | | 255 | | 255 | | 255 | _____ SEG 5
 ----- | 0 | | 0 | | 0 | | 0 | _____ SEG 6
         ----- | 0 | | 0 | | 0 | | 0 | _____ SEG 7
                 ----- | 0 | | 0 | | 0 | | 0 | _____
                         ----- | 0 | | 0 | | 0 | | 0 |
                                 ----- ----- ----- -----

Jak widać, czwarty bajt można adresować na cztery sposoby: (adresowanie od 0)

  • Segment 0, przesunięcie 3
  • Segment 1, odsunięcie 2
  • Segment 2, odsunięcie 1
  • Segment 3, przesunięcie 0

To zawsze ta sama komórka pamięci.

W rzeczywistych implementacjach segmenty są przesuwane o więcej niż 1 bajt (dla 8086 było to 16 bajtów).

Wadą segmentacji jest to, że jest skomplikowana (ale myślę, że już o tym wiesz;) Co jest dobre, możesz użyć sprytnych technik do tworzenia programów modułowych.

Na przykład, możesz załadować jakiś moduł do segmentu, a następnie udawać, że segment jest mniejszy niż w rzeczywistości (tylko wystarczająco mały, aby pomieścić moduł), a następnie wybrać pierwszy segment, który nie pokrywa się z tym pseudo-mniejszym i załadować następny moduł i tak dalej. Zasadniczo otrzymujesz w ten sposób strony o różnym rozmiarze.


Masz coś do dodania do wyjaśnienia? Dźwięk w komentarzach. Chcesz przeczytać więcej odpowiedzi od innych zaawansowanych technicznie użytkowników Stack Exchange? Sprawdź cały wątek dyskusji tutaj .

How Many Memory Addresses Can We Get With A 32-bit Processor And 1gb Ram? (5 Solutions!!)

Memory Addresses, Computer Science Lecture | Sabaq.pk |

Q. 7.8: (a) How Many 32K * 8 RAM Chips Are Needed To Provide A Memory Capacity Of 256Kbytes? (b) How

How Computer Memory Works - Kanawat Senanan

Assembly Program - Obtaining Memory Addresses

What Is Virtual Memory? – Gary Explains

The Fetch-Execute Cycle: What's Your Computer Actually Doing?

256KB Memory Design Using 64KB Ram Blocks-Microprocessors Example

How Much RAM Do You ACTUALLY Need? (2020)

Registers And RAM: Crash Course Computer Science #6

Lesson 9.3 : Pointers Containing Memory Addresses Of Multi Byte Variables


Sprzęt komputerowy - Najpopularniejsze artykuły

Najlepsze kontrolery gier retro na Twój komputer lub emulatory Raspberry Pi

Sprzęt komputerowy Apr 20, 2025

TREŚĆ NIENARUSZONA Najwyraźniej Nintendo uczulony na pieniądze . Po stworzeniu natychmiastowego i dochodowego hitu z NES Classic, firma zdecydowała się zakoń..


Co to jest „przystanek” w fotografii?

Sprzęt komputerowy Mar 14, 2025

TREŚĆ NIENARUSZONA „Stop” to termin fotograficzny, który jest często używany. Ktoś określi zdjęcie jako zatrzymanie niedoświetlone lub powie, aby zwiększyć czas otw..


Jak całkowicie wyłączyć wszystkie powiadomienia o aktywności na zegarku Apple Watch

Sprzęt komputerowy Oct 12, 2025

Domyślnie zegarek Apple Watch przypomina o wstaniu, powiadamia o realizacji celów i osiągnięciach oraz wyświetla cotygodniowe podsumowanie Twojej aktywności. Masz dość oglą..


HTG recenzuje HooToo TripMate: akumulator podróżny i cud Wi-Fi

Sprzęt komputerowy Feb 24, 2025

Kiedy jesteś maniakiem w ruchu, łatwo jest przeciążać gadżetami. Dzisiaj przyjrzymy się poręcznemu, niewielkiemu gadżetowi, który odciąża: połączenie urządzenia, któ..


Zapytaj HTG: przenoszenie moich dokumentów, tworzenie kopii zapasowych Androida i paski zadań z wieloma monitorami w systemie Windows 7

Sprzęt komputerowy Sep 13, 2025

TREŚĆ NIENARUSZONA Raz w tygodniu podsumowujemy niektóre odpowiedzi, które wysłaliśmy czytelnikom How-To Geek, i udostępniamy je wszystkim. W tym tygodniu zastanawiamy się..


Zapytaj HTG: Radzenie sobie z wygaśnięciem CP systemu Windows 8, zapisami kopii zapasowych Nintendo DS, pomieszanymi ścieżkami audio w programie Windows Media Player

Sprzęt komputerowy Mar 26, 2025

TREŚĆ NIENARUSZONA Raz w tygodniu podsumowujemy kilka wspaniałych pytań czytelników i dzielimy się odpowiedziami ze wszystkimi. W tym tygodniu zastanawiamy się, co zrobić,..


Geekowe projekty zrób to sam dla swoich zwierząt

Sprzęt komputerowy Aug 22, 2025

TREŚĆ NIENARUSZONA Niezależnie od tego, czy jest to Twój kot, pies, fretka, świnka morska czy królik, Twoje zwierzę jest w takim samym stopniu częścią Twojej rodziny, ja..


Z zestawu wskazówek: sterowanie głosowe dla systemu Android, dyfuzory lampy błyskowej do samodzielnego montażu i łatwe wysyłanie wiadomości tekstowych dla wielu osób

Sprzęt komputerowy Apr 5, 2025

TREŚĆ NIENARUSZONA Raz w tygodniu zagłębiamy się w pole ze wskazówkami i dzielimy się naszymi ulubionymi wskazówkami dla czytelników. W tym tygodniu zajmiemy się sterowa..


Kategorie