4 svar
Återställ till standard
17
I en enkel design är storleken på databussen storleken på processorregistren. Detta är i allmänhet sant för den första generationen av de flesta konstruktioner, så de första 16-bitars processorer hade 16-bitars bussar, 32-bitars processorer hade 32-bitars databussar, etc.
Det är dock storleken på processorns heltalsregister som bestämmer OS-typen (64 vs 32) och inte databussen. Databussen kan skilja sig från heltalsregistren, men författaren till ditt citat associerar de två med varandra eftersom det ofta var historiskt lika.
Några exempel i den verkliga världen där bredden på databussen och heltalsregister skiljer sig:
Den ursprungliga 8088 från IBM PC är en 16-bitars CPU-design, men databussen är 8-bitars bred. För att flytta 16-bitar till ett processorregister från RAM krävdes två åtkomstcykler
Original Pentium från 1992 har en 64-bitars databuss men är en 32-bitars design. Den större databussen gör att CPU:n kan överföra mer data in och ut med cacher men ändå bara komma åt 32-bitar åt gången internt med sina CPU-register.
I allmänhet följer pekarstorleken också registerstorleken men den fysiska adressbussbredden kan vara större eller mindre än registerstorleken. Några exempel:
- De flesta 8-bitars CPU:er kunde adressera minst 64k minne med en 16-bitars adressbuss.
- 8086:an var 16-bitars men hade en 20-bitars adressbuss för att tillåta mer adresserbart RAM.
- Den ursprungliga AMD Opteron är 64-bitars men den fysiska adressbussen är 40-bitar (internt) för att förenkla designen av minnesundersystemet, eftersom hela 64-bitars är för stort för att kunna användas. Moderna 64-bitars AMD-processorer är 48-bitars.
Modern design använder också mycket mer komplicerade bussar som inte passar in i ett bitbrett paradigm. Opteron-exemplet ovan handlar om hur mycket CPU:n fysiskt kan adressera enligt mjukvara, det kan faktiskt finnas någon fysisk 48-bitars adressering exponerad av CPU:n. CPU:er är mycket integrerade och har specialiserade bussar för kringutrustning, minne och kommunikation med andra CPU:er. Det finns inte längre en singulär "databuss" eller "adressbuss". Dessa bussar kan använda differentiell signalering som inte hanterar bitbredder på något meningsfullt sätt, och även när de gör det är de inte starkt kopplade till CPU:ns arkitekturregister.
Det är bäst att inse att bitheten hos en CPU är helt arkitektonisk och mest bara ur ett mjukvaruperspektiv. Det har inte så mycket med fysisk design att göra längre.
Förbättra det här svaret
redigerad 27 juli 2021 kl. 19:26
svarade8 juli 2012 klockan 18:47
DougvjDougvj
1 03266 silvermärken1111 bronsmärken
10
-
2
"den fysiska adressbussens bredd kan vara större" - Speciellt med 4-bitars och 8-bitars processorer!
See Alsox86 Assembly/16, 32 och 64 bitar - Wikibooks, öppna böcker för en öppen världSnabbaste sättet att beräkna ett 128-bitars heltal modulo ett 64-bitars heltal–sågspån
8 juli 2012 klockan 23.10
-
Okej. Men jag försöker förstå det trivialt. Jag kunde inte hitta något samband mellan storleken på databussen och maximalt möjligt minne, som jag kunde förklara med adressbussstorlek. Så svaret verkar vara "INTE ADDRESS BUS SIZE men DATA BUS SIZE" (eftersom den vanligtvis är lika stor som processorn registrerar). Har jag missat något?
–elev
10 juli 2012 kl. 19:22
-
@learner Det är korrekt, förvirringen ligger också i det faktum att den maximala pekarstorleken för ett system är storleken på processorregistren. I ett platt adressutrymme som med de flesta moderna system är det lika med att begränsas av storleken på processorregistren, därav adresseringsbegränsningarna som du påpekade. Vissa processorer, särskilt äldre, använde knep som speciell segmenterad adressering för att komma runt detta.
–Dougvj
10 juli 2012 klockan 19:40
-
@Dougvj , Okej, det blir allt tydligare. Men varför gjorde de adressbussstorlekar annorlunda än processorregisterstorlekar? Skulle det inte vara mer meningsfullt att behålla dem samma? Och jag är förvirrad över var adresserna förvaras? (adressbussen eller processorregistret?) Tack
–elev
11 juli 2012 klockan 19:22
-
1
@learner Det stämmer. För att sammanfatta: OS-beteckningen motsvarar exakt storleken på processorregistren. Adressbussen kan ha eller inte ha samma storlek som processorregistren, så det maximalt möjliga adresserbara RAM-minnet är oberoende av det. Processorn internt har emellertid nästan undantagslöst någon form av adresseringsschema som involverar pekare som har samma storlek som processorregistren.
–Dougvj
(Video) System Bus: Control Bus, Address Bus, Data Bus16 juli 2012 klockan 16:22
| Visa ytterligare 5 kommentarer
2
Det finns inget "rent" 32 eller 64 bitarssystem, och därför är termerna bara approximationer ändå.
T.ex. ta ditt uttalande"Minne (RAM) består av bitar, grupper om 8 som bildar bytes, som var och en kan adresseras". Det är inte särskilt vanligt. Datorer har sitt RAM-minne på DIMM-moduler, och de är 64 bitar breda. Tillbaka på 90-talet hade du SIMM, och de var 32 bitar breda.
I vissa system måste eller kan DIMM:er paras ihop ("gängad"/"dubbelkanal"), vilket skulle vara en 128-bitars databuss. Detta koncept går före de så kallade "64-bitars"-processorerna från AMD och Intel.
Dessa grupper på 64 bitar från en enda DIMM kan verkligen delas upp i 8 byte. Det görs ganska transparent av din CPU. Det kan också bryta de 64 bitarna i 4*16 bitar, 2*32 bitar, eller bara använda alla 64 bitar som en enda variabel.
Den viktigaste frågan är dock bredden på en adress. Varje byte i minnet har sin egen adress, men inte varje bit. Det betyder att de 64 bitarna du får från en enda DIMM har 8 adresser. Den lägsta av dessa är alltid en multipel av 8: Hur många distinkta adresser stöder processorn? Det finns två vanliga svar, åtminstone i teorin. Vissa CPU-stöd 232olika adresser, vissa stöder 264. Denna distinktion är den vanligaste skillnaden mellan 32 och 64 bitars system.
I praktiken stöder 64-bitars system idag mindre än 264byte RAM. Det skulle vara oöverkomligt och skulle inte passa i en vanlig PC ändå. Så mycket minne skulle väga flera miljoner ton!
Förbättra det här svaret
svarade8 juli 2012 klockan 22:10
MSaltersMSalters
8,14711 guldmärke2222 silvermärken2929 bronsmärken
3
-
Är det processorregistret där en adress förvaras, eller är det adressbussen? Du säger "vissa processorer stöder 2^32 olika adresser...". Vad är de exakt begränsade av?
–elev
(Video) Word size and Bus Widths - A Level Computer Science10 juli 2012 klockan 19:29
-
Vanligtvis både registerstorlekarna och MMU (Memory Management Unit, den del av CPU:n som är direkt ansvarig för minnet).
–MSalters
11 juli 2012 klockan 11:57
-
Du har en motsägelse angående byte-adresserbart minne. Först skriver du att det är"inte särskilt vanligt". Men senare"Varje byte i minnet har sin egen adress". Oavsett vilket verkar du också blanda ihop adresserbarhetsenheten med minnesdatabredden i de två första styckena. Att du nämner SIMM och DIMM är förvirrande och irrelevant för frågan.
–sågspån
24 december 2020 kl. 05.57
Lägg till en kommentar |
1
Det är registerstorleken och minneshanteringen i processorn.
Med hjälp av knep hade en 16-bitars processor en 20-bitars adressbuss, så det är inte ett minne utanför processorn.
Förbättra det här svaret
svarade8 juli 2012 klockan 18:44
Fiasco LabsFiasco Labs
6,73611 guldmärke2626 silvermärken3333 bronsmärken
Lägg till en kommentar |
Båda faktiskt.
Bitarna på en CPU är normalt en referens till storleken på dess interna register. En 32-bitars CPU har 32-bitars register som kan eller inte kan delas upp i bitar.
Det är vettigt att ha en 32 bitars CPU med en 32 bitars databuss eftersom du kan överföra all data från minnet direkt till registren, men du kan ha vilken databussstorlek som helst. Så 32 bitars CPU har normalt 32 bitars databuss för att göra det enkelt att överföra data från och till den.
Och det är också vettigt att ha en 32-bitars adressbuss av två skäl. En större adressbuss skulle göra det svårare att göra indirekt adressering eftersom du inte skulle ha ett register som är större nog för att lagra en minnesadress eller så skulle CPU:n behöva specialiserat register för minnesadressering, observera att gamla CPU:er som Intel 8080 var 8 bitar och hade en 16 bitars adressbuss. Tvärtom, en adressbuss som är mindre än registret är bara ett slöseri med resurser. Det finns mikrokontroller som använder mindre adressbuss.
Förbättra det här svaret
svarade5 januari 2018 kl. 23:43
h0m3h0m3
4111 silvermärke77 bronsmärken
Lägg till en kommentar |
Inte svaret du letar efter? Bläddra bland andra taggade frågor
- minne
- operativsystem
ellerställ din egen fråga.
Inte svaret du letar efter? Bläddra bland andra taggade frågor
- minne
- operativsystem
ellerställ din egen fråga.
FAQs
What is the difference between 16-bit and 32-bit and 64 bit processor? ›
While a 16-bit processor can simulate 32-bit arithmetic using double-precision operands, 32-bit processors are much more efficient. While 16-bit processors can use segment registers to access more than 64K elements of memory, this technique becomes awkward and slow if it must be used frequently.
What is the difference between 8-bit 16-bit and 32-bit processor? ›An 8-bit processor receives its distinction by manipulating bits 8 at a time while a 16- and 32-bit processor can handle bits in groups of 16 and 32 respectively.
What is the difference between 8-bit 16-bit 32-bit and 64-bit? ›Answer: In computing, 32-bit and 64-bit are two different types of processors. The bit number (usually 8, 16, 32, or 64) refers to how much memory a processor can access from the CPU register. Most computers made in the 1990s and early 200s were 32-bit machines.
How can you determines that microprocessor is an 8 16 or 32-bit? ›Explanation: The bit size (8-bit, 16-bit, 32-bit) of a microprocecessor is determined by the hardware, specifically the width of the data bus.