Jeśli procesor ma 16-bitową magistralę adresową i 8-bitowe słowa, ile pamięci może adresować?

23

Uczę się na koniec egzaminu semestralnego i jestem mylony z następującym pytaniem. Jeśli procesor ma 16-bitową magistralę adresową i 8-bitowe słowa, ile pamięci w KB może adresować? Z mojego zrozumienia wynika, że ​​może on adresować 64 KB, jednak w tym celu użyłem 2 ^ 16 = 65 536. W tych obliczeniach nigdy nie uwzględniono 8-bitowych słów, więc nie jestem pewien, czy jest poprawny. Co również oznacza 8-bitowe słowa?

Twoje zdrowie

eZ_Harry
źródło
16
Użyłeś go pośrednio: całkowita ilość adresowalnej pamięci wynosi 2 ^ 16 * 8 bitów. Ponieważ jeden bajt = 8 bitów, to 2 ^ 16 bajtów, tj. 65536 bajtów lub 64 KiB. Zauważ, że K jest prefiksem SI dla 1000. Jeśli masz na myśli 1024, użyj Ki.
jcaron
2
Zwróć uwagę na różnicę między kilobajtami prefiksu SI (1000 bajtów) i kibibajtami prefiksu binarnego (1024 bajty). 2 ^ 16 = 65 536 = 64 kibi ~ 65,5 kilograma. Szukana odpowiedź jest prawdopodobnie taka, w której kilo oznacza kibi, ale są chwile, kiedy różnica naprawdę ma znaczenie. Jeśli chcesz mieć całkowitą pewność, wybierz bezpieczną trasę i podaj liczbę bajtów , a dla wygody nauczyciela zaoferuj tłumaczenie na bardziej przydatne jednostki, takie jak kilobajty lub kibibajty. Porównaj Wikipedia: Binarny prefiks . Układy pamięci zwykle określają np. 65 536 x 8 bitów.
CVn
3
Zakładam, że nie zakładasz wymiany banków. Większość 16-bitowych procesorów korzysta z jakiejś formy wymiany banków, co bardzo utrudnia odpowiedź.
Joshua
1
@ MichaelKjörling Pytanie brzmi KB, co zawsze oznaczało 1024 bajty.
kasperd

Odpowiedzi:

38

Słowo w większości architektur to największy element danych, który można przenieść do iz pamięci roboczej w ramach jednej operacji.

Największy możliwy rozmiar adresu, używany do oznaczenia lokalizacji w pamięci, jest zwykle nazywany słowem sprzętowym.

Tak więc twój procesor będzie w stanie adresować 64 KB (2 ^ 16), ale będzie w stanie przesłać tylko w jednej operacji 8 bitów.

Overmind
źródło
3
Jestem pewien, że ta odpowiedź jest tą, której szuka nauczyciel, ale czy rzeczywiście jest poprawna? Czy nie możesz użyć czegoś takiego jak PAE, aby zezwolić na 3-poziomową hierarchię (lub nawet więcej), aby umożliwić procesorom dostęp do więcej niż 64 KB? Nie jestem ekspertem od sprzętu, ale czy Commodore 128 nie zdołał nawet zrobić czegoś takiego na 8-bitowym słowie, 16-bitowej magistrali, umożliwiając przełączanie banków pamięci RAM?
davidgo
5
Nie jestem pewien, czy rozumiem twoje zdanie „będzie można przenieść tylko w jednej operacji jest 256B (2 ^ 8)”? Może przesłać tylko 1 słowo = 1 bajt = 8 bitów w jednej operacji.
jcaron
8
@davidgo nadal PAE wymaga odpowiedniego rozmiaru magistrali adresowej. Procesory Intel obsługujące PAE mają 36-bitową szynę adresową.
Dmitrij Grigoryev,
6
PAE to mniej więcej nazwa / funkcja specyficzna dla współczesnych procesorów x86. Tak, schematy pośredniego adresowania większych ilości pamięci były wdrażane od wieków (np. XMS), te w końcu traktują podsystem pamięci jak urządzenie peryferyjne, które można ciągle konfigurować, aby eksponować inną pamięć w mniejszej przestrzeni adresowej. Zobacz także model pamięci segmentowej starej szkoły x86 ...
rackandboneman
6
@Overmind powinieneś nieco wyjaśnić swoją odpowiedź. Nikt tak naprawdę nie używa pojedynczego B jako jednostki, a powodem tego jest dokładnie to, co się tutaj wydarzyło - mylisz bity i bajty. OP określa „8-bitowe słowa * - dlatego każde słowo ma 8 bitów (1 bajt) i może przenieść je tylko w jednej operacji. 256 to po prostu liczba możliwych wartości każdego słowa, a nie ile jest przesyłanych.
adelphus
21

Słowo maszynowe lub zwykle tylko słowo jest największą jednostką danych, którą CPU może manipulować jako całość za pomocą wspólnych instrukcji. Nie ma to nic wspólnego z adresowaniem pamięci.

Liczy się jednostka rozdzielczości adresu , która zwykle jest 8-bitowym bajtem nawet w architekturze 16/32/64 bitów. Nie musi być równy rozmiarowi słowa maszynowego, ale prawdopodobnie tak jest w twoim przypadku.

8-bitowa jednostka adresowalna w połączeniu z 16-bitową magistralą adresową wynosi 64 KB pamięci RAM, którą procesor może adresować.

Dmitrij Grigoriew
źródło
3
Ale użyłem maszyn, w których jednostka rozdzielczości adresu wynosiła 16 bitów. (Więc koncepcja jest znacząca.)
Martin Bonner wspiera Monikę
4
@MartinBonner Niemniej jednak nie jest to bezpośrednio związane z wielkością słowa procesora.
glglgl,
1
@glglgl - To bardzo powiązane. Nie wierzę, że istnieją jakieś architektur, które nie mają jednostkę adresową albo 8 bitów lub ich wielkości tekstu.
Jules
1
Nie zgadzam się ze stwierdzeniem, że słowo jest największą jednostką, którą CPU może manipulować jako całość. Intel i7 ma 64-bitową magistralę danych i nadal może korzystać z 256-bitowych instrukcji SIMD. Jeśli Wikipedia jest poprawna, to słowo odnosi się do szerokości magistrali danych, a nie do wewnętrznych elementów procesora.
Thomas Weller,
1
@ThomasWeller: 8088 ma 8-bitową magistralę danych, ale nadal 16-bitową instrukcję. W rzeczywistości jest to 8086 z mniejszym magistralą danych. Uwaga: szerokość magistrali danych i rzeczywisty transfer są również różne (pomyśl o niepoprawnych danych).
Giacomo Catenazzi
1

Co również oznacza 8-bitowe słowa?

W kontekście rozmiar słowa odpowiada rozmiarowi adresu opisującemu magistralę pamięci. Do pamięci miga 16 bitów, dzięki czemu może ona wybrać 64 lokalizacje. Następnie każda lokalizacja zawiera 8 bitów.

Rozmiar słowa w tym przypadku może, ale nie musi, odpowiadać rozmiarowi jednostki obliczeniowej procesora, i może, ale nie musi, odpowiadać logicznej ziarnistości w adresowaniu.

Na przykład procesor może reklamować 16-bitową magistralę (w tym celu). Używa 16-bitowych adresów w swoich instrukcjach i podobnie jak twój przykład ma 64ki. Ale ma 15 bitów magistrali adresowej i 16 bitów magistrali danych. Wymaga tylko adresów 32ki i zawsze otrzymuje 2 bajty z każdej lokalizacji. (Jeśli instrukcja chciała 1 bajtu, wysłałaby adres z najmniejszym brakującym bitem, w tym kroku pobrała oba bajty, a następnie spojrzała na najmniejszy bit pożądanego adresu, aby zdecydować, której połowy użyć).

Należy pamiętać, że wspomniane przez innych przełączanie banków, PAE itp. Nie są tutaj istotne. Jednostka zarządzania pamięcią może używać adresów 16-bitowych i mieć 20-bitowy adres sprzętowy, więc procesor musi się przełączać i mapować, aby wykorzystać rzeczywisty 20-bitowy zakres adresów układów pamięci RAM, które można adresować.

Pamiętaj, aby w odpowiedziach podać jednostki. „64ki”. Czego? 8-bitowe słowa, dzięki czemu (wciąż) 64 bajty adresowalnej pamięci RAM. Ten krok eliminuje zamieszanie i sprawia, że ​​takie problemy stają się banalne.

JDługosz
źródło
0

W obliczeniach musisz także użyć wielkości słowa. Odpowiedź to 64 KB.

Możesz zaadresować 2 ^ 16 słów, a każde słowo ma 8 bitów (= 1 bajt). Dlatego jest to 64 KB.

Jeśli rozmiar słowa wynosił 16 bitów. Odpowiedź wynosiłaby 128 KB.

Nuri Tasdemir
źródło
1
Twoje obliczenia nie dotyczą popularnych 32-bitowych procesorów, które nadal mogą adresować 2 ^ 32 bajty pamięci (4 GB), a nie (2 ^ 32) * 4 (16 GB).
Dmitrij Grigoriew
Nowoczesne procesory adresują większe „wiersze” i mają mniej wierszy adresu do dopasowania. Pytanie mówi o adresie autobusu po fizycznej stronie rzeczy. Dlatego mnożenie przez rozmiar słowa tej magistrali (nie rozmiar rejestru procesora) jest poprawne.
JDługosz
0

Są dwie strony tego, co twój instruktor prawdopodobnie chce, abyś mu powiedział i jaka jest rzeczywistość.

Najpierw prawdopodobnie instruktor chce, żebyś mu powiedział.

„16 bitów może adresować 2 ^ 16 lokalizacji pamięci, każda lokalizacja to 8 bitów. Więc możemy adresować pamięć 524288 bitów (65536 oktetów).”

Odzwierciedla to jednak raczej uproszczony światopogląd. Rzeczywistość jest bardziej skomplikowana i udzielenie ostatecznej odpowiedzi wymaga więcej informacji. Niektóre ze sposobów, w jakie prawdziwe systemy mogą być bardziej skomplikowane, obejmują:

  • Wiele procesorów nie ma dedykowanej mapy we / wy, więc może być konieczne użycie części przestrzeni adresowej pamięci do celów innych niż pamięć.
  • „Rozmiar słowa” procesora nie jest identyczny jak szerokość szyny danych pamięci lub najmniejszej adresowalnej jednostki pamięci.
  • Niektóre magistrale umożliwiają ruch jednostek danych o różnych rozmiarach. Wymaga to dalszego adresowania, które może, ale nie musi być obsługiwane przez bity głównej magistrali adresowej.
  • Niektóre magistrale multipleksują różne sygnały na tych samych liniach. Na przykład SDRAM używa dwukrotnie tych samych wierszy adresu, aby wysłać „adres wiersza” i „adres kolumny”.
  • Wiele systemów stosowało metody przełączania banków, aby umożliwić programom dostęp do większej ilości pamięci, niż procesor mógłby natywnie rozwiązać.
płyn do płukania
źródło