2009-10-19 13 views
8

Dlaczego komputery mają pamięć adresowaną bajtowo, a nie 4-bajtową pamięć adresowalną (lub adresowaną 8 bajtów pamięć dla 64-bitów)? Tak, widzę, jak to bywa czasem przydatne, po prostu wydaje się nieeleganckie i przesadne. Czy zalety są znaczące, czy to naprawdę tylko ze względu na dziedzictwo?Dlaczego pamięć adresowana bajtowo, a nie 4-bajtowa pamięć adresowa?

+0

Zasadniczo: po co kroić pizzę na 8 plasterków? Zaczekaj, przeciąć pizzę na 16 plasterków!?!? –

Odpowiedz

6

Procesory faktycznie do dostęp do pamięci w ilościach 64-bitowych (x86 zrobił od Pentium); 64-bitowe procesory często mają 128-bitową magistralę. Dodatkowo, podczas uzyskiwania dostępu do głównej pamięci, masz serie, które wypełniają całą linię pamięci podręcznej, która jest jeszcze większą jednostką pamięci.

To tylko adresowanie oparte na bajtach; to dodaje niewielki narzut i wcale nie jest nadmierne.

Dzisiaj, bezwzględnie potrzebujesz adresowania bajtowego dla protokołów sieciowych. Wdrożenie TCP z adresowaniem opartym na słowie byłoby trudne: co chcesz, aby read() powrócił, jeśli otrzymałeś 17 bajtów? Podobnie, wyższe warstwy są oparte na bajtach: HTTP byłoby dość trudne do wdrożenia, jeśli otrzymasz linię żądania, taką jak "GET/HTTP/1.0", prezentowaną w jednostkach o czterech bajtach. Zasadniczo będziesz musiał podzielić słowa z powrotem na bajty za pomocą operacji zmiany i takich (które teraz procesory wykonują w sprzęcie, dzięki adresowaniu opartemu na bajtach).

+0

Na zaadresowanym słowie procesorowym, karta sieciowa może przechowywać każdy oktet sieci w słowo maszynowe (i odwrotnie do przesyłania). Lub dla bardziej prawdopodobnego przypadku pakowania 4 bajtów na słowa 32-bitowe (jak Alpha AXP, który nie miał instrukcji ładowania bajtowego/bajtu-sklepu we wczesnych wersjach), twój przykład TCP powróciłby 17, i to byłoby do oprogramowania radzić sobie z wyściółką w ostatnim słowie przy użyciu przesunięcia.(Alpha była w pewnym stopniu adresowana do bajtów, ale obsługuje tylko wyrównane 32- lub 64-bitowe słowo load/stores, z pewnymi hackami dla przestrzeni adresowej I/O http://www.tldp.org/HOWTO/Alpha-HOWTO- 8.html) –

+0

Alpha później dodała bajt ładuje/zapisuje, ale z pewnością obsługuje bez nich TCP (używając normalnych kart sieciowych PCI, AFAIK). To sprawiło, że jest to skutecznie maszyna zaadresowana do słowa, ale z niskimi bitami 64-bitowego adresu jest ignorowana (lub wymagana do 0?) Zamiast nieobecna. –

7

W większości przyczyn historycznych - stało się standardem rozumianym przez procesory. Here to dobra dyskusja na jej temat:

Generalnie, wielkość musi być wybrany do być wygodne zarówno dla danych i instrukcji maszynowych . 8 bitów (256 wartości) wystarcza, aby pomieścić wspólnych znaków w języku angielskim i niektórych innych językach. Projektanci 8-bitowych procesorów prawdopodobnie stwierdzili, że być w stanie kodować 256 wspólnych instrukcji jako jeden bajt był "rozsądny kompromis". I w tym czasie 8 bitów było na ogół wystarczające do kodowania innych rzeczy, takich jak kolor piksela lub współrzędne ekranu . O wielkości bajtowej , która jest potęgą 2, można również uznać za "schludniejszy" projekt. To Warto zauważyć, że dla przykład Marxera, E. (1974), elementy przetwarzania danych, opisuje bajt jako albo 6-bitowym i 8-bitowym w zależności od tego, czy komputer był z "ósemkowy" lub "szesnastkowy".

Oczywiście, inne rozmiary były używane na początku.

0

Musieliśmy osiąść na pewnym rozmiarze w celu standaryzacji. Ludzie wybierali 8-bitowy rozmiar z powodów wspomnianych powyżej przez Shane'a. od tego czasu utknęliśmy w adresatycznej pamięci bajtowej. teraz nie można tego zmienić ze względu na różne problemy ze zgodnością oraz fakt, że OPCODES są tylko bajtowe. ale przy użyciu sztuczki, pamięć jest łatwo adresowana do słowa, aby pobrać/zapisać dane/adresy!

Powiązane problemy