Adresowalny bajt a adresowalny słowo

Próbuję zrozumieć różnicę między adresowaniem bajtów a adresowaniem słów.

Cztero-asocjacyjna jednostka pamięci podręcznej o pojemności 16 KB jest zbudowana przy użyciu bloku o wielkości 8 słów. Długość słowa wynosi 32 bity. Rozmiar fizycznej przestrzeni adresowej wynosi 4 GB.

Liczba zestawów w pamięci podręcznej $ = (16 * 1024) / (4 * 8 * 4) = 2 ^ 7 $

Jeśli używane jest adresowanie słów:

Przesunięcie bloku $ = 3 \ bits $

Ponieważ PAS wynosi 4 $ \ GB $ , całkowita liczba adresów = 2 $ ^ {32} / 2 ^ 2 = 2 ^ {30} $

Łączna liczba bitów adresu $ = 30 \ bits $

Struktura adresu:

Bity tagu: 20 $ \ bits $
Ustaw bity: 7 $ \ bits $
Bity przesunięcia bloku: $ 3 \ bits $

Teraz załóżmy, że procesor chce uzyskać dostęp do Trzeci bajt danego słowa.

  1. Kontroler pamięci podręcznej użyje pola set 7 $ \ bits $ do indeksowania zestawu i następnie porównanie wyższego 20 $ \ bits $ pola tagu z wszystkimi polami 4 $ bloków w zestawie. Jeśli dopasowanie zostanie znalezione, następuje trafienie w pamięci podręcznej i przesunięcie w bloku 3 $ \ bits $ w celu umieszczenia jednego ze słów poza 8 $ słów w jednym z rejestru ogólnego przeznaczenia. Następnie CPU wyodrębnia trzeci bajt ze słowa i wykonuje operację.
  2. Jeśli tagi są niedopasowane, następuje brak pamięci podręcznej, wysyłany jest sygnał odczytu pamięci, a ze względu na przestrzenną lokalizację odniesienia blok zawiera słowo jest przenoszone do pamięci podręcznej.

Jeśli procesor jest adresowalny bajtowo:

Łączna liczba bitów adresu $ = 32 $

Struktura adresu: bity tagu: 20 $ \ bits $
Ustaw bity: 7 $ \ bits $
Bity przesunięcia bloku: $ 5 \ bits $

Jeśli procesor chce uzyskać dostęp do trzeciego bajtu słowo:

  1. To samo co w kroku 1 słowa adresowalnego, ale procesor może teraz bezpośrednio adresować trzeci bajt słowa, używając niższego $ 2 \ bity $ offset bajtów. Jednak jestem zdezorientowany, jak to się stanie. Ponieważ rozmiar rejestru procesora ma szerokość 1 słowa, podobnie jak w przypadku adresowania słów, jedno słowo z 8 słów w bloku zostanie przesłane do rejestru. Ale w jaki sposób krok „wyodrębniania bajtów” będzie tutaj łatwiejszy? I dlaczego nazywamy to adresowaniem bajtowym, jeśli nadal adresujemy słowo?
  2. To samo co w kroku 2 adresowania słów. Blok danych zostanie przesłany z pamięci do pamięci podręcznej w przypadku braku pamięci podręcznej.

Ponadto ta odpowiedź mówi, że pamięć fizyczna jest zawsze bajtowa adresowalne. Jaka jest różnica między adresowalnością pamięci a adresowalnością architektury procesora?

Odpowiedź

Adresowanie słów oznacza, że liczba wierszy w szynie adresowej procesora jest mniejsza niż liczba bitów w samym słowie.

Powiedzmy, że mamy 4-bajtowe słowo. (32-bitowa przestrzeń adresowa)

Jeśli ten komputer jest bajtową tablicą adresową le, to magistrala adresowa procesora będzie miała 32 linie, co umożliwia dostęp do każdego bajtu w pamięci.

Jeśli ta maszyna jest adresowalna słowami, wówczas magistrala adresowa CPU będzie miała 30 linii ( 32 $ – log_ {2} 4 = 30 $ ), co umożliwia dostęp do pamięci TYLKO w słowach / kawałkach po 4 bajty, a także z adresów, które są wielokrotnością rozmiaru słów.

Teraz, jeśli poprosisz procesor o pobranie bajtu z określonego adresu, najpierw porzuci 2 najmniej znaczące bity (przez kroplę mam na myśli nadpisać je 0 „s) adresu, pobierze słowo z otrzymanego adresu i zwraca bajt, używając 2 najmniej znaczących bitów jako przesunięcia w pobranym słowie.

Powoduje to wydłużenie czasu dostępu do pamięci, ponieważ procesor musi poświęcić więcej czasu na modyfikację adresu i przetwarzanie pobrane słowo. Ale pomaga również zmniejszyć koszt sprzętu, ponieważ złożoność obwodów jest zmniejszona z powodu redukcji linii magistrali adresowej.

Jednak ten narzut nigdy nie występuje w maszynie adresowalnej bajtowo, stąd „bajt wyodrębnianie ”jest łatwiejsze.

Komentarze

  • Rozumiem, co ' mówisz. Ale co ' czy się stanie w przypadku adresowania bajtów? Załóżmy, że procesor potrzebuje trzeciego bajtu słowa. Wyśle adres 32-bitowy z co najmniej 2 znaczącymi bitami ustawionymi na 10, righ t?Ale jak będzie przechowywać bajt, biorąc pod uwagę, że używa rejestru o szerokości 1 słowa? Wygrał ' t CPU w tym przypadku również pobierze słowo z pamięci podręcznej i zapisze je w ' rejestrze?
  • Pierwsze pytanie: Procesory adresujące bajty mają oddzielne instrukcje zapisu w zależności od rozmiaru danych do zapisania. Jeden na bajt, jeden na dwubajt, jeden na czterobajt, jeden na słowo itd. (Właściwie każdy procesor ma oddzielne instrukcje zapisu, każda dla różnych obsługiwanych rozmiarów danych do zapisania). bajt do zapisania jest zwykle przechowywany w 8 blokach LSB rejestru, a następnie wykonywana jest instrukcja zapisu bajtu. Powoduje to, że TYLKO 8 bitów LSB rejestru jest ładowanych na szynę danych i tylko jeden bajt pod adresem w pamięci jest modyfikowany.
  • Nie ' Nie rozumiem drugiego pytania. Czy mógłbyś to rozwinąć.
  • Przypuszczam, że to samo dzieje się z odczytem bajtu z adresowalnej maszyny bajtowej, prawda? Na przykład niech ' powiedz, że ' to tablica znaków char arr[10] i procesor chce odczytać trzeci znak, tj. arr[2]. Następnie po uzyskaniu dostępu do bajtu przy użyciu adresu 32-bitowego, zapisze go w 8 LSB rejestru. Ale w przypadku słowa adresowalnego, CPU najpierw obliczy adres słowa, do którego należy trzeci bajt (tj. Nadpisze 2 LSB z 0) i pobierze zawarte w nim słowo ' s rejestru. Następnie użyje przesunięcia bajtów, aby uzyskać wymagany bajt. Czy to prawda?
  • Wielkie dzięki. Chciałbym, abyś zebrał to wszystko razem w oryginalnej odpowiedzi, aby mogła pomóc każdemu przyszłemu czytelnikowi.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *