Czy rozmiar adresu pamięci i rozmiar magistrali adresowej jest związany?

4

Moje pytania dotyczą związku między rozmiarem adresu rzeczywistego / fizycznego a rozmiarem magistrali adresowej.

  1. Jeśli dobrze rozumiem, rzeczywisty / fizyczny rozmiar adresu jest określany podczas projektowania architektury komputera.
  2. Czy rozmiar magistrali adresowej musi być taki sam jak liczba bitów w adresie? Jeśli nie, czy oznacza to, że adres fizyczny musi być przesłany mniejszą magistralą adresową więcej niż jeden raz?

Uwaga

  • Nie mówię o wielkości słowa (tj. Wielkości, którą procesor może przetwarzać jednocześnie), która może różnić się zarówno od rzeczywistego / fizycznego rozmiaru adresu, jak i rozmiaru magistrali adresowej.
  • Nie mówię też o używaniu adresów segmentów i adresów offsetowych do reprezentowania adresu fizycznego.
Tim
źródło

Odpowiedzi:

3

Szerokość bitu magistrali adresu fizycznego może być większa lub mniejsza niż szerokość bitu w danym adresie pamięci, ponieważ istnieją różne hacki sprzętowe, które można zaprojektować w systemie, aby umożliwić dziwne tryby adresowania. Na przykład w niektórych systemach 32-bitowych szyna adresowa ma szerokość 52 bitów. Jako inny przykład niektóre instrukcje procesora mogą dekodować dłuższy adres przy użyciu kombinacji adresu podstawowego i tabeli odnośników.

Na koniec zadaniem sprzętu jest interpretacja adresu pamięci z procesora. Procesor po prostu oblicza potrzebny adres pamięci i wysyła go do kontrolera pamięci płyty głównej (pamiętaj, mówimy tutaj o sprzęcie, a nie oprogramowaniu, zobacz moją ostatnią notatkę na dole). Zadaniem kontrolera pamięci jest interpretacja tego adresu i umieszczenie odpowiednich danych na szynie pamięci.

Ponieważ wszystko to jest obsługiwane na poziomie sprzętowym, można faktycznie zwiększyć fizyczną przestrzeń adresową niektórych niższych bitów systemów pamięci za pomocą fizycznego rozszerzenia adresu . Ponownie, sposób obsługi tych adresów rozszerzonych jest częścią sposobu, w jaki system / sprzęt został wdrożony.

Na koniec, aby dać więcej korzyści hackom sprzętowym, o których wspomniałem powyżej, dobrym przykładem jest mapowane na pamięć wejście / wyjście (w skrócie MMIO). Umożliwia to procesorowi dostęp zarówno do urządzeń peryferyjnych, jak i pamięci RAM za pośrednictwem samej magistrali adresowej. Zwykle odbywa się to przez adresy pamięci wyższego rzędu, aby uniknąć konfliktów adresów niższego rzędu. Doprowadziło to jednak do powstania powszechnie znanej bariery pamięci 3 GB we wszystkich wariantach konsumenckich 32-bitowych systemów operacyjnych Windows. Ponownie, jest to po prostu pokazanie, co jest możliwe na poziomie sprzętowym.


Z punktu widzenia programisty wysokiego poziomu nie ma to nic wspólnego ze zmiennymi wskaźnikowymi. Zawsze mają ten sam rozmiar danych, ponieważ te rozszerzenia adresów są obsługiwane przez system operacyjny i / lub sam sprzęt. Rozmiary, adresy i przesunięcia wskaźników są ustawiane / obliczane przez kompilator.

Przełom
źródło
Dzięki! (1) w ostatnim akapicie, jakie są różnice między „zmiennymi wskaźnika” a „rozmiarami wskaźnika”? Wspomniałeś, że są obsługiwane na różnych poziomach. (2) Zastanawiam się, gdzie uczysz się tych rzeczy? Czy istnieją odniesienia, takie jak podręczniki, strony internetowe?
Tim
(3) Czy adres fizyczny musi być przesłany przez mniejszą magistralę adresową więcej niż jeden raz?
Tim
Wiele się nauczyłem zarówno ze szkolnego, jak i samodzielnego uczenia się (nigdy go nie czytałem, ale słyszałem, że było to niesamowite źródło ). Jeśli potrzebujesz szybkiego, ale zaawansowanego słownika technicznego, sprawdź to . Poza tym, jeśli jesteś ciekawy czegokolwiek, Google zabierze Cię do dziwnych miejsc w Internecie, o których istnieniu nigdy nie wiedziałeś;)
Przełom
(1) Zmienna wskaźnikowa reprezentuje adres pamięci do dowolnego typu danych (mówi się, że jest to typ wskaźnika). Rozmiar wskaźnika jest zwykle taki sam (w bajtach) w dowolnym systemie, bez względu na rozmiar bazowego typu danych, ponieważ reprezentuje tylko adres pamięci. (2) Naucz się montażu na mikrokontrolerze, nauczy Cię więcej niż chcesz wiedzieć o komputerze. Większość tego nauczyłem się z mojego kursu mikroprocesorów i mikrokomputerów (korzystaliśmy z Motoroli 68HC12).
Przełom
1
@ Tymczasowo przykro mi, że wciąż spamuję Cię komentarzami, ale oto instrukcja obsługi tego mikrokontrolera, o której wspomniałem. Przekazuje wiele użytecznych informacji dotyczących układu procesora, sposobu rozwiązywania problemów itp. Przyznaję, że pomaga wiedzieć coś o mikrokontrolerach lub języku asemblera przed rozpoczęciem czytania, chociaż prawdopodobnie ucz się przez to przechodząc.
Przełom
1

Należy zrozumieć, że wszystkie większe współczesne komputery są zmapowane w pamięci. „Przestrzeń adresowa” programu (zasadniczo określona przez rozmiar wskaźnika) może być większa lub mniejsza niż fizyczna przestrzeń adresowa (określona przez ilość pamięci RAM, którą można ewentualnie zaadresować). Pomiędzy znajduje się jedna lub kilka warstw logiki mapowania adresów, które przekształcają się z adresów „logicznych” na „fizyczne”. Obsługuje to „stronicowanie” pamięci wirtualnej (gdzie konkretna strona pamięci może być „stronicowana” na dysk, gdy nie jest ostatnio przywoływana) oraz obsługuje wiele procesów / zadań, z których każde ma własną „przestrzeń adresową”.

Oprócz powyższego (a zwłaszcza mikroprocesorów, w których piny są ograniczone), adres „bus”, który kończy procesor do banku pamięci, może być „multipleksowany”, tak że adresy są wysyłane w dwóch oddzielnych cyklach, najpierw wysoka połowa , np. wtedy dolna połowa. W rzeczywistości niektóre moduły pamięci są budowane z myślą o tym, ponieważ zbliżają się również adresy „multipleksowane”.

Daniel R. Hicks
źródło
1
Pamięć wirtualna (i stronicowanie) jest implementowana w oprogramowaniu przez system operacyjny i jest niezależna od sposobu, w jaki sprzęt implementuje translację adresów logicznych / fizycznych.
Przełom
1
Zaimplementowane w systemie operacyjnym tak, ale dalekie od niezależnego od mechanizmu translacji adresów. Przynajmniej nie można mieć pamięci wirtualnej i stronicowania bez mechanizmu translacji adresów, a ten mechanizm dyktuje rozmiar strony i szereg innych atrybutów modelu pamięci.
Daniel R Hicks,