Czym są architektury 16, 32 i 64-bitowe?

Co oznaczają architektury 16-bitowe, 32-bitowe i 64-bitowe w przypadku mikroprocesorów i / lub systemów operacyjnych?

W przypadku mikroprocesorów oznacza maksymalny rozmiar General Purpose Register s lub rozmiar Integerlub liczbę Address-lineS lub liczbę Data Bus line S lub co?

Co mamy na myśli mówiąc "DOS is a 16-bit OS", "Windows in a 32-bit OS", itd...?

Author: anonymous, 2010-08-29

7 answers

Moja oryginalna odpowiedź jest poniżej, jeśli chcesz zrozumieć komentarze.

Nowa Odpowiedź

Jak mówisz, istnieją różne środki. Na szczęście dla wielu procesorów wiele środków jest takich samych, więc nie ma zamieszania. Spójrzmy na niektóre dane (przepraszam za wgrywanie obrazków, nie widziałem dobrego sposobu na zrobienie tabeli w markdown). Tabela

Jak widać, wiele kolumn jest dobrymi kandydatami. Ja jednak uważam, że rozmiar rejestrów ogólnego przeznaczenia (zielony) jest najbardziej powszechnie rozumiana odpowiedź.

Gdy procesor jest bardzo zróżnicowany pod względem wielkości dla różnych rejestrów, często będzie opisywany bardziej szczegółowo, np. Motorola 68k jest opisywana jako układ 16/32bit.

Inni twierdzą, że jest to Szerokość magistrali instrukcji (żółta), która również pasuje do tabeli. Jednak w dzisiejszym świecie rurociągów argumentowałbym, że jest to znacznie mniej istotna miara dla większości zastosowań niż rozmiar ogólnego przeznaczenia rejestry.


Oryginalna odpowiedź

Różni ludzie mogą oznaczać różne rzeczy, ponieważ, jak mówisz, istnieje kilka środków. Na przykład ktoś mówiący o adresowaniu pamięci może oznaczać coś innego niż ktoś mówiący o arytmetyce całkowitej. Postaram się jednak zdefiniować to, co moim zdaniem jest wspólnym rozumieniem.

Moim zdaniem dla procesora oznacza to "Rozmiar typowego rejestru używanego do standardowych operacji" lub "rozmiar magistrali danych" (dwa są zwykle równoważne).

Uzasadniam to następującą logiką. Z80 posiada 8-bitowy akumulator i 8-bitową bazę danych, jednocześnie posiadając 16-bitowe rejestry adresowania pamięci (IX, IY, SP, PC) oraz 16-bitową magistralę adresową pamięci. A Z80 nazywa się 8-bitowym mikroprocesorem. Oznacza to, że ludzie zwykle muszą oznaczać Główny rozmiar arytmetyczny lub rozmiar bazy danych, a nie rozmiar adresowania pamięci.

Nie jest to wielkość instrukcji, ponieważ Z80 (znowu) miał 1,2 i 3 bajty instrukcje, choć oczywiście multi-bajt były odczytywane w wielu odczytach. / Align = "left" / 8086 jest 16-bitowym mikroprocesorem i może odczytywać 8 lub 16-bitowe instrukcje. Więc musiałbym się nie zgodzić z odpowiedziami, które mówią, że jest to Rozmiar instrukcji.

Dla systemów operacyjnych zdefiniowałbym to jako "kod jest kompilowany do pracy na procesorze o tej wielkości", więc 32-bitowy system operacyjny ma kod skompilowany do pracy na 32-bitowym procesorze (zgodnie z powyższą definicją).

 16
Author: Nick Fortescue,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-31 09:39:42

Ile bitów "jest" procesora, czyli jaka jest długość słowa instrukcji. W przypadku procesora 32-bitowego długość słowa takiej instrukcji wynosi 32-bit, co oznacza, że jest to szerokość, którą procesor może obsłużyć jako instrukcje lub dane, co często skutkuje linią magistrali o tej szerokości. Z podobnego powodu rejestry mają rozmiar słowa procesora, ale często masz większe rejestry do różnych celów.

Weźmy komputer PDP-8 jako przykład. To był 12-bitowy komputer. Każdy instrukcja miała długość 12 bitów. Aby obsłużyć dane o tej samej szerokości, akumulator był również 12-bitowy. Ale to, co sprawia, że 12-bitowy komputer jest 12-bitową maszyną, to długość słowa instrukcji. Miał dwanaście przełączników na przednim panelu, za pomocą których można go zaprogramować, instrukcja po instrukcji.

Jest to dobry przykład, aby wyrwać się z 8/16/32 bit focus.

Liczba bitów jest również zazwyczaj wielkością magistrali adresowej. Dlatego zwykle podaje maksymalną adresowalną pamięć.

Jest dobre wyjaśnienie tego w Wikipedia :

W architekturze komputerów, 32-bitowe liczby całkowite, adresy pamięci lub inne jednostki danych to te, które mają co najwyżej 32 bity (4 oktety) szerokości. Również 32-bitowe architektury CPU i ALU to te, które są oparte na rejestrach, magistralach adresowych lub magistralach danych o tej wielkości. 32-bit jest również terminem nadanym generacji komputerów, w których 32-bitowe procesory były normą.

Teraz porozmawiajmy o OS.

Z OS-es, jest to o wiele mniej związane z rzeczywistą "bitty-ness" procesora, zwykle odzwierciedla to, jak montowane są opcody (dla której długości słowa procesora) i jak adresy rejestrów (nie można załadować wartości 32 bitowej w rejestrze 16 bitowym) i jak adresowana jest pamięć. Pomyśl o tym jak o skończonym, skompilowanym programie. Jest on przechowywany jako instrukcje binarne i dlatego musi mieścić się w długości słowa procesora. Zadaniowym, musi być w stanie zająć się całą pamięcią, w przeciwnym razie nie zrób odpowiednie zarządzanie pamięcią.

Ale co sprowadza się do tego, czy program jest 32 lub 64 bit (OS jest zasadniczo program tutaj) to jak jego instrukcje binarne są przechowywane i jak rejestry i pamięć są adresowane. Podsumowując, dotyczy to WSZYSTKICH rodzajów programów, a nie tylko systemów operacyjnych. Dlatego masz programy skompilowane dla 32 bitów lub 64 bitów.

 7
Author: polemon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-29 13:24:22

Definicje są terminami marketingowymi bardziej niż precyzyjnymi terminami technicznymi.

W fuzzy termin techniczny są bardziej związane z architektonicznie widocznymi szerokościami niż jakikolwiek rzeczywisty rejestr implementacyjny lub szerokość magistrali. Na przykład 68008 był klasyfikowany jako 32-bitowy procesor, ale miał 16-bitowe rejestry w silikonie i tylko 8-bitową magistralę danych i 20-nieparzyste bity adresu.

 1
Author: hotpaw2,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-29 10:56:19

Http://en.wikipedia.org/wiki/64-bit#64-bit_data_models Modele danych oznaczają bitowość dla języka.

Wyrażenie "OS to X-bit" zwykle oznacza, że system operacyjny został napisany dla X-bitowego trybu procesora, to znaczy 64-bitowy System Windows używa trybu long na x86-64, gdzie rejestry mają 64 bity, a przestrzeń adresowa jest 64-bitowa i istnieją inne wyraźne różnice od trybu 32-bitowego, gdzie zazwyczaj rejestry mają 32-bitową szerokość, a przestrzeń adresowa jest 32-bitowa. Na x86 duża różnica między Tryby 32 i 64 bitowe to obecność segmentacji w 32-bitach dla historycznej kompatybilności.

Zazwyczaj System Operacyjny jest napisany z myślą o bitowości procesora, x86-64 jest godnym uwagi przykładem dekad kompatybilności wstecznej - możesz mieć wszystko, od 16-bitowych programów w trybie rzeczywistym, przez 32-bitowe programy w trybie chronionym po 64-bitowe programy w trybie długim.

Poza tym istnieją różne sposoby wirtualizacji, więc twój program może działać tak, jakby w trybie 32-bitowym, ale w rzeczywistości jest wykonywany przez inny niż x86 rdzeń w ogóle.

 1
Author: berkus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-30 22:19:40

Różnica sprowadza się do szerokości bitów zestawu instrukcji przekazywanych do rejestru ogólnego przeznaczenia do operowania na. 16 bitów może działać na 2 bajtach, 64 na 8 bajtów instrukcji na raz. Często można zwiększyć przepustowość procesora, wykonując bardziej gęste instrukcje na cykl zegara.

 1
Author: htmldrum,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-27 18:27:12

Kiedy mówimy o architekturach 2^N bitowych w informatyce, to w zasadzie mówimy o rejestrach pamięci, rozmiarze magistrali adresowych lub rozmiarze magistrali danych. Podstawową koncepcją architektury 2 ^ N bitowej jest oznaczanie, że ten tutaj 2^N bit danych może być użyty do adresowania/transportu danych o rozmiarze 2^n przez procesy.

 0
Author: Saurabh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-29 10:54:48

Z tego co wiem, technicznie jest to szerokość ścieżek całkowitych. Słyszałem o 16-bitowych chipach, które mają adresowanie 32-bitowe. Jednak w rzeczywistości jest to szerokość adresu. sizeof (void*) jest 16-bitowy na 16-bitowym chipie, 32-bitowym na 32-bitowym i 64-bitowym na 64-bitowym.

Prowadzi to do problemów, ponieważ C i c++ pozwalają na konwersje między typami void* i integral, i jest to bezpieczne, jeśli Typ integral jest wystarczająco duży (taki sam rozmiar jak wskaźnik). Prowadzi to do wszelkiego rodzaju niebezpiecznych rzeczy w kategoriach z

void* p = something;
int i = (int)p;

Który będzie się burzył i wypalił na 64-bitowym kodzie (działa na 32-bitowym) ponieważ void* jest teraz dwa razy większy od int.

W większości języków, musisz ciężko pracować, aby dbać o szerokość systemu, nad którym pracujesz.

 0
Author: Puppy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-29 12:08:01