Wskaźnik przechowuje adres pamięci, więc jego rozmiar jest rozmiarem adresu pamięci, który zależy od liczby lokalizacji pamięci. Z drugiej strony, rozmiar Worda jest największą jednostką, którą instrukcja może pracować / działa, więc Rozmiar komórki pamięci jest nieistotny, ponieważ wiele może być zbieranych jednocześnie. Jaki jest związek między rozmiarem słowa a rozmiarem wskaźnika?
memory
computer-architecture
radhika
źródło
źródło
Odpowiedzi:
Nie muszą być takie same, a liczba systemów komputerowych, w których nie są one znacznie większe niż te, w których się znajdują. Mimo to istnieją pewne relacje między rozmiarem wskaźnika a rozmiarem „słowa”.
Programy wykonują wiele arytmetyki wskaźników. Subskrybowanie tablicy jest dodawaniem wskaźnika. Wskaźniki są porównywane ze sobą. Jeśli Twój procesor nie może wykonywać arytmetycznych obliczeń w rozmiarze wskaźnika, twój adres musi być podzielony na wiele zmiennych, co skutkuje segmentową lub bankową przestrzenią adresową. Są one skomplikowane w zarządzaniu i rozprzestrzenianiu się typów podobnych do wskaźnika (blisko wskaźnika, dalekiego wskaźnika, wskaźnika bazowego). W rezultacie otrzymujesz dodatkowe dziwne ograniczenia, takie jak połączone listy, które mogą przechowywać więcej elementów niż tablica.
Jednak mikrokontrolery z 8-bitowymi szynami danych i większymi przestrzeniami adresowymi (być może tylko dla kodu, a nie danych) są wspólne. Z drugiej strony nowoczesne procesory ogólnego przeznaczenia z 32-bitowymi lub 64-bitowymi wskaźnikami mają znacznie szersze słowa danych niż wskaźniki (na przykład 512-bitowe słowa danych w podsystemie AVX nowoczesnych procesorów x86_64). Wiele algorytmów bez blokady zależy od atomowego dostępu do danych, które są co najmniej dwukrotnie większe od wskaźnika.
źródło
TLDR: Przypadek prawdopodobnie.
Wskaźnik nie jest częścią architektury komputerowej per se, jest to funkcja języka programowania. Na przykład interfejs API systemu Windows definiuje własne typy wskaźników i ich wielkość. W C w Windows: wskaźnik do znaku (
char*
) waha się od 32 do 64 bitów w zależności od wersji. Rozmiar słowa może mieć z tym niewiele wspólnego.Słowo to bardzo przeładowane słowo, ahem, termin. W architekturze CPU słowo może odnosić się do rozmiaru instrukcji, magistrali danych, magistrali pamięci itp. W Windows API słowo jest skrótem niepodpisanym, tj. przynajmniej 2 bajty, a zatem zależy od tego, jak są realizowane skróty.
Może istnieć korelacja między słowami MS a słowami wielkości instrukcji, ale myślę, że do debaty na ten temat potrzebowałbyś programisty systemu operacyjnego i wątpię, czy wpłynie to na wielkość wskaźników.
źródło
W pewnym momencie rejestry komputerowe i magistrale wewnętrzne przeszły z 4-bitowych na 8-bitowe, a następnie 16-bitowe, 32-bitowe i obecnie 64-bitowe. Maksymalna przestrzeń adresowa zależy od rozmiaru wskaźnika (chociaż niektóre wczesne procesory, np. Z80A, mogą strona pamięć w porcjach wielkości wskaźnika).
Gdy autobusy stały się szersze, pożądane było również zwiększenie pamięci RAM, więc zwiększył się również rozmiar wskaźnika. Czasami system operacyjny nie nadążał za większym autobusem, np. przy przechodzeniu z Windows 7 32-bit na 64-bit, maksymalna adresowalna pamięć RAM najpierw przeniosła się z 4 GB do 8 GB, a na końcu 192 GB w wersjach high-end.
Tak więc rozmiar rejestrów i magistrali (od półprzewodnika do bajtu, następnie Worda, a następnie DWORD w 16-bitowym systemie operacyjnym MS, usw.) wzrastał dowolnie, podobnie jak przestrzeń adresowa. Pełniejsze wyjaśnienie jest dostępne w @DarkDust.
źródło