Domanda

Sono nuovo di programmazione e vengo da un background non-CS (nessun grado formale). Io per lo più il programma WinForms utilizzando C #.

Sono confuso su 32 bit e 64 bit .... Voglio dire, hanno sentito parlare a 32 bit del sistema operativo, processore a 32 bit e in base al quale un programma può avere il massimo della memoria. Come influisce sulla velocità di un programma. Ci sono molte più domande che continuano a venire in mente.

Ho cercato di passare attraverso alcuni libri Organizzazione informatica e architettura. Ma, o sono troppo stupido per capire ciò che è scritto in là o gli autori supporre che il lettore abbia una certa CS sfondo.

Qualcuno può spiegare a me queste cose in una pianura semplice inglese o mi puntare a qualcosa che lo fa.

Modifica Ho letto cose come in modalità a 32 bit, che possono accedere fino a 4 GB di memoria; in modalità a 64 bit, possono accedere molto altro ancora .... voglio sapere perché a tutte queste cose.

BOUNTY : risposte qui sotto sono davvero buoni .... specialmente uno per Martin. Ma, io sto guardando una spiegazione completa, ma in pianura inglese semplice.

È stato utile?

Soluzione

E 'davvero tutto si riduce a fili.

Nei circuiti digitali, solo 0 e 1. (solitamente basso voltaggio ed alta tensione) possono essere trasmessi da un elemento (CPU) ad un altro elemento (chip di memoria). Se ho solo 1 filo, posso inviare solo un 1 o uno 0 sul filo per ciclo di clock. Ciò significa che posso indirizzare solo 2 byte (supponendo byte di indirizzamento, e che interi indirizzi vengono trasmessi in solo 1 ciclo di velocità!).

Se ho 2 fili, posso affrontare 4 byte. Perché posso inviare: (0, 0), (0, 1), (1, 0), o (1, 1) sui due fili. Quindi, in pratica si tratta di 2 alla potenza di # dei fili.

Quindi, se ho 32 fili, posso affrontare 4 GB, e se ho 64 fili, posso affrontare molto di più.

Ci sono altri trucchi che gli ingegneri possono fare per affrontare uno spazio di indirizzamento più grande dei fili consentono. Per esempio. suddividere l'indirizzo in due parti e inviando una metà nel primo ciclo e la seconda metà del ciclo successivo. Ma questo significa che l'interfaccia di memoria sarà la metà più veloce.

A cura i miei commenti in questa sede (inedito);) e farne un wiki se qualcuno ha qualcosa di interessante da aggiungere pure

.

Come altri commenti hanno già detto, 2 ^ 32 (2 alla potenza di 32) = 4294967296, che è 4 GB. E 2 ^ 64 è 18.446.744.073.709.551.616. Per scavare in più (e probabilmente leggere questo in Hennesey e Patterson) processori contiene i registri che usa come "spazio zero" per memorizzare i risultati delle sue calcoli. Una CPU solo sa come fare semplice aritmetica e sa come spostare i dati in giro. Naturalmente, le dimensioni di questi registri sono la stessa larghezza in bit come "# -bits" dell'architettura che è, quindi registri di una CPU 32 bit sarà 32 bit di larghezza, e registri a 64 bit della CPU sarà di 64 bit largo.

Non ci saranno eccezioni a questo quando si tratta di virgola mobile (per gestire doppia precisione) o altre istruzioni SIMD (single-istruzione, più comandi dati). I carichi di CPU e salva i dati da e verso la memoria principale (RAM). Poiché la CPU utilizza anche questi registri per calcolare indirizzi di memoria (fisici e virtuali), la quantità di memoria che può essere indirizzato è anche uguale alla larghezza dei suoi registri. Ci sono alcune CPU che gestisce l'indirizzo di calcolo di speciali registri estesi, ma quelli che chiamerei "dopo i pensieri", ha aggiunto dopo gli ingegneri si rendono conto di aver bisogno di esso.

Al momento a 64-bit è un bel po 'per l'indirizzamento memoria fisica reale. La maggior parte delle CPU a 64 bit saranno omettere un bel paio di cavi quando si tratta di cablaggio fino alla CPU alla memoria a causa di praticità. Non ha senso utilizzare fino prezioso scheda madre immobiliare per posare i cavi che avranno sempre 0 di. Per non parlare in modo da avere la quantità massima di RAM con densità di DIMM di oggi richiederebbe 4 miliardi di slot DIMM:)

Oltre alla maggiore quantità di memoria, processori a 64 bit offrono calcolo veloce per numeri interi maggiori di 2 ^ 32. Precedentemente programmatori (o compilatori, che è programmato anche per programmatori;) dovrebbero simulare avente un registro a 64 bit prendendo due registri a 32 bit e gestire eventuali situazioni di overflow. Ma su CPU a 64 bit sarebbe essere gestita dalla CPU stessa.

Lo svantaggio è che una CPU a 64 bit (con tutto uguale) consumerebbe più potenza di una CPU a 32 bit solo a causa (approssimativamente) al doppio della quantità di circuiteria necessaria. Tuttavia, in realtà non si sarà mai uguale paragone perché CPU più recenti saranno prodotte nei processi di silicio recenti che hanno perdite di potenza inferiore, consentono di stipare più circuito della stessa dimensione del die, ecc Ma architetture a 64 bit consumerebbero il doppio memoria. Quello che una volta era considerato "brutto" di lunghezza variabile di istruzioni di 86 è in realtà un vantaggio ora rispetto alle architetture che utilizza una dimensione di istruzioni fissa.

Altri suggerimenti

Proviamo a rispondere a questa domanda, cercando in persone contro computer ; spero che questo sarà far luce su cose per voi:

Cose da tenere a mente

  • Per quanto sorprendente come sono, i computer sono molto, molto stupido.

Memory

  • La gente ha la memoria (con l'eccezione, forse, dei mariti e dei politici.) Le persone memorizzano le informazioni nella loro memoria per un uso successivo.
    • Con una domanda (per esempio, "Qual è il tuo numero di telefono?"), Una persona è in grado di recuperare le informazioni di dare una risposta (ad esempio, "867-5309")
  • Tutti i computer moderni hanno la memoria, e memorizzare le informazioni nella loro memoria per un uso successivo.
    • Poiché i computer sono stupidi, che può essere chiesto solo una questione molto specifica per recuperare le informazioni: "Qual è il valore a X nella vostra memoria"
      • Nella domanda precedente, X è conosciuto come indirizzo , che può anche essere chiamato un puntatore .

Quindi qui abbiamo una differenza fondamentale tra persone e computer: Per richiamare le informazioni dalla memoria, i computer devono essere dato un Indirizzo , considerando che le persone non lo fanno. (Beh in un certo senso si potrebbe dire "il tuo numero di telefono" è un indirizzo perché dà informazioni diverse rispetto "il tuo compleanno", ma questa è un'altra conversazione.)

Numeri

  • La gente usa il decimale sistema numerico . Ciò significa che per ogni cifra in un numero decimale, la cifra può essere uno dei 0, 1, 2, 3, 4, 5, 6, 7, 8 o 9. La gente ha dieci le opzioni per cifre .
  • Tutti i computer moderni usano il sistema binario numero . Ciò significa che per ogni cifra in un numero binario, la cifra può essere solo 1 o 0. I computer hanno due le opzioni per cifra.
    • In gergo informatico, una singola cifra binaria è chiamato po ', abbreviazione di b fabbrica di alcune componenti dig .

Indirizzi

  • Ogni indirizzo in un computer è un numero binario.
  • Ogni indirizzo in un computer ha un numero massimo di cifre (o bit) che può avere. Questo è soprattutto perché l'hardware del computer è inflessibile (noto anche come fisso ) e ha bisogno di sapere in anticipo che un indirizzo sarà solo così a lungo.
  • Termini come "32 bit" e "64 bit" stanno parlando l'indirizzo più lungo per il quale un computer in grado di memorizzare e recuperare informazioni. In inglese "32 bit" in questo senso significa "Questo computer si aspetta istruzioni su sua memoria di avere indirizzi lunghi non più di 32 cifre binarie."
    • Come si può immaginare, le più bit di un computer in grado di gestire il più a lungo l'indirizzo può guardare in alto e quindi la più memoria si possono gestire in una sola volta.

32 bit v. Indirizzamento a 64 bit

  • Per un numero (fisso) inflessibile di cifre (ad esempio 2 cifre decimali) i possibili numeri che può rappresentare è chiamato Gamma (ad esempio da 00 a 99, o 100 numeri unici). Aggiungendo una cifra decimale aggiuntiva moltiplica la gamma da 10 (cifre decimali esempio 3 -> 000 a 999, o 1000 numeri univoci).
  • Questo vale per i computer, anche, ma perché sono binario macchine al posto di decimale macchine, aggiungendo una cifra binaria aggiuntivo ( bit ) aumenta solo l'intervallo di un fattore di 2 .

    Rivolgendosi Campi:
    • 1 bit di indirizzamento permette di parlare circa 2 indirizzi univoci (0 e 1).
    • 2 bit di indirizzamento permette di parlare di circa 4 indirizzi univoci (00, 01, 10, e 11).
    • 3-bit di indirizzamento permette di parlare di circa 8 indirizzi univoci (000, 001, 010, 011, 100, 101, 110 e 111).
    • e dopo un bel po '... indirizzamento a 32 bit permette di parlare circa 4,294,967,296 indirizzi univoci.
    • e dopo un anche di più , mentre ... indirizzamento a 64 bit permette di parlare circa 18.446.744.073.709.551.616 indirizzi univoci. Questo è un LOT della memoria!

Implicazioni

Che cosa tutto questo significa è che un computer a 64 bit in grado di memorizzare e recuperare molto più informazioni di un computer a 32 bit. Per la maggior parte degli utenti questo in realtà non significa un bel po 'perché le cose come navigare sul web, controllare la posta e giocando a Solitaire tutti lavorare comodamente all'interno dei confini di indirizzamento a 32 bit. Dove il vantaggio a 64 bit sarà davvero brillare è nelle zone dove si hanno un sacco di dati del computer dovrà sfornare attraverso. elaborazione del segnale digitale, gigapixel fotografia e giochi 3D avanzata sono tutte le aree in cui i loro enormi quantità di elaborazione dei dati avrebbero visto un grande impulso in un ambiente a 64 bit.

Molti processori moderni possono funzionare in due modalità: modalità a 32 bit, e la modalità a 64 bit. Nella modalità a 32 bit, possono accedere fino a 4 GB di memoria; in modalità a 64 bit, possono accedere a molto altro ancora. vecchi processori supportano solo modalità a 32 bit.

I sistemi operativi hanno scelto di utilizzare i processori in uno di questi modi: al momento dell'installazione, una scelta è se operare il processore in modalità a 32 bit o in modalità a 64 bit. Anche se il processore può continuare ad operare in modalità a 64 bit, il passaggio da 32 bit a 64 bit richiederebbe una reinstallazione del sistema. I vecchi sistemi supportano solo la modalità a 32 bit.

Le applicazioni possono anche essere scritti in (o compilati per) la modalità a 32 bit o 64 bit. Compatibilità qui è più difficile, come il processore, se eseguito in modalità a 64 bit, può ancora supportare applicazioni a 32 bit come caratteristica di emulazione. Quindi, su un sistema operativo a 64 bit, è possibile eseguire sia applicazioni a 32 bit o le applicazioni a 64 bit. In un sistema operativo a 32 bit, è possibile eseguire solo applicazioni a 32 bit.

Anche in questo caso, scegliendo la dimensione è soprattutto una questione di quantità di memoria principale che si desidera accedere. applicazioni a 32 bit sono spesso limitate a 2 GB su molti sistemi, dal momento che il sistema ha bisogno di un po 'di spazio di indirizzi per sé.

Da un punto di vista delle prestazioni (velocità), non v'è alcuna differenza significativa. applicazioni a 64 bit possono essere po 'più lento perché usano puntatori a 64 bit, quindi hanno bisogno di più accessi alla memoria per una determinata operazione. Allo stesso tempo, essi possono anche essere un po 'più veloce, in quanto possono eseguire operazioni interi a 64 bit come un'istruzione, considerando processori a 32 bit devono emulare loro con più istruzioni. Tuttavia, tali operazioni interi a 64-bit sono poco frequenti.

Si può anche chiedersi quale sia il costo è di esecuzione di un'applicazione a 32 bit su un processore a 64 bit: su processori AMD64 e Intel64, questa modalità di emulazione è per lo più in hardware, quindi non c'è perdita di prestazioni reali nel corso di eseguire il 32 applicazione bit nativo. Questo è significativamente diverso su Itanium, dove a 32 bit (x86) applicazioni vengono emulati molto male.

Lasciate che vi racconti la storia di Binville, una piccola città nel bel mezzo del nulla. Binville aveva una strada che conduce ad esso. Ogni persona sia venuta o lasciando Binville dovuto guidare su questa strada. Ma come si avvicinò alla città, c'era una forchetta. Si potrebbe o andare a sinistra o andare a destra.

In realtà, ogni strada ha avuto una forchetta in esso, tranne che per le strade che portano alle case stesse. Quelle strade semplicemente si è conclusa presso la casa. Nessuno dei strade avevano nomi; non hanno bisogno di nomi, grazie ad uno schema di indirizzamento ingegnoso creato dalla Commissione di pianificazione Binville. Ecco una mappa di Binville, che mostra le strade e le case:

              ------- []  00
             /
       ------
      /      \
     /        ------- []  01
-----
     \        ------- []  10
      \      /
       ------
             \
              ------- []  11

Come si può vedere, ogni casa ha un indirizzo a due cifre. Questo indirizzo sola è sufficiente per a) identificare in modo univoco ogni casa (non ci sono ripetizioni) e b) vi dirà come arrivarci. E 'facile per spostarsi in città, si vede. Ogni forcella è etichettato con uno zero o uno, che la Commissione di pianificazione chiama il Binville Intersezione Tracer, o po ' in breve. Quando ci si avvicina al primo bivio, guardare il primo bit dell'indirizzo. Se si tratta di uno zero, andare a sinistra; se si tratta di un uno, andate a destra. Poi guarda alla seconda cifra quando si arriva al secondo bivio, andare a sinistra oa destra a seconda dei casi.

Diciamo che si desidera visitare il vostro amico che vive in Binville. Dice che vive in casa 10. Quando si arriva al primo bivio di Binville, andare a destra (1). Poi alla seconda forcella, andare a sinistra (0). Sei lì!

Binville esisteva come questo per diversi anni ma la parola ha iniziato a spostarsi sulla sua posizione idilliaca, grande sistema di parco, e l'assistenza sanitaria generoso. (Dopo tutto, se non si dispone di spendere soldi per cartelli stradali, si può utilizzare su cose migliori.) Ma c'era un problema. Con solo due bit, lo schema di indirizzamento è stato limitato a quattro case!

Quindi, la Commissione di progettazione ha messo insieme le loro teste e si avvicinò con un piano: avrebbero aggiungere un po 'a ciascun indirizzo, raddoppiando così il numero di case. Per attuare il piano, avrebbero costruito una nuova forcella ai margini della città e tutti avrebbero ottenere nuovi indirizzi. Ecco la nuova mappa, che mostra la nuova forcella che porta in città e la nuova parte di Binville:

                     ------- []  000
                    /
              ------
             /      \
            /        ------- []  001
       -----                            Old Binville
      /     \        ------- []  010
     /       \      /
    /         ------
   /                \
  /                  ------- []  011
--
  \                  -------     100
   \                /
    \         ------
     \       /      \
      \     /        ------- []  101
       -----                            New Binville (some homes not built yet)
            \        -------     110
             \      /
              ------
                    \
                     -------     111

Avete notato che tutti nella parte originale della Binville semplicemente aggiunto uno zero alla parte anteriore del loro indirizzo? Il nuovo bit rappresenta la nuova intersezione che è stato costruito. Quando il numero di bit viene aumentato di uno, il numero di indirizzi raddoppia. I cittadini hanno sempre saputo la dimensione massima della loro città: tutto quello che dovevano fare era calcolare il valore di due elevato alla potenza del numero di bit. Con tre bit, potrebbero avere 2 3 = 8 case.

Alcuni anni passavano e Binville era ancora una volta riempiti di capacità. Sempre più persone hanno voluto muoversi in, quindi è stato aggiunto un altro pezzo (insieme con l'intersezione necessaria), raddoppiando la dimensione della città per sedici case. Poi un altro po ', e un altro, e un altro gli indirizzi ... di Binville furono presto a sedici bit, in grado di ospitare fino a 2 16 (16.384) case, ma non era sufficiente. La gente continuava a venire e venire!

Quindi, la Commissione di progettazione ha deciso di risolvere il problema una volta per tutte: avrebbero saltare fino a trentadue bit. Con gli indirizzi sufficienti per oltre quattro miliardi di case (2 32 ), che sicuramente sarebbe sufficiente!

Ed è stato ... per circa 25 anni, quando Binville non era più una piccola città nel bel mezzo del nulla. Era ormai una metropoli importante. In realtà, si stava facendo per essere grande come un'intera nazione con miliardi di abitanti. Ma i parchi erano ancora bello e tutti avevano grande cura della salute, così la popolazione ha continuato a crescere.

Di fronte alla sempre crescente della popolazione, la Commissione di pianificazione, ancora una volta ha messo insieme le loro teste e ha proposto un'altra espansione della città. Questa volta userebbe 64 bit. Sai quante case potrebbe rientrare entro i limiti della città Binville ora? Proprio così: 18, 446.744.073.709.551.616. Questo numero è così grande, potremmo popoliamo circa due miliardi di terre e dare a tutti un proprio indirizzo.

Utilizzando 64 bit non era una panacea per tutti i loro problemi di indirizzamento. Gli indirizzi prendono il doppio di spazio per scrivere come i vecchi indirizzi a 32 bit ha fatto. Peggio ancora, alcuni cittadini non hanno ancora aggiornato i loro indirizzi per utilizzare il nuovo formato a 64 bit, quindi erano costretti in una sezione di parete-off della città riservato appositamente per chi usa ancora gli indirizzi a 32 bit. Ma che era ok: le persone che utilizzano 32 bit hanno avuto accesso a più che sufficiente della città per soddisfare le loro esigenze. Essi non sentono il bisogno di cambiare ancora.

Saranno 64 bit sarà sufficiente? Chi lo sa in questo momento, ma i cittadini di Binville sono in attesa per l'annuncio di indirizzi a 128 bit ...

La risposta di Martin è in gran parte corretta e dettagliata.

Ho pensato solo ricordare che tutti i limiti di memoria sono per-applicazione memoria virtuale limiti, non limiti per la memoria fisica reale nel computer. In realtà è possibile lavorare con più di 4GB di memoria a singola applicazione anche in sistemi a 32 bit, richiede solo più lavoro, in quanto non può essere tutti accessibili usando puntatori in una sola volta. link testuale

Un'altra cosa che non era menzionato è che la differenza tra il processore x86 e x86-64 tradizionale è non solo nella dimensione del puntatore, ma anche nel set di istruzioni. Mentre i puntatori sono più grandi e consumano più memoria (8 byte anziché 4) è compensato da un maggior set registro (15 general purpose registra invece di 8, IIRC), per cui le prestazioni può effettivamente essere meglio per il codice che funziona computazionale.

La risposta di Martin è eccellente. Giusto per aggiungere un po 'ulteriori punti ... da quando si parla .NET, si dovrebbe notare che la CLI / JIT ha alcune differenze tra x86 e x64, con diverse ottimizzazioni (tail-call, per esempio), e alcuni comportamenti sottili diverso di tecnologie avanzate cose come volatile. Tutto questo può avere un impatto sul codice.

Inoltre, non tutto il codice funziona su x64. Tutto ciò che utilizza DirectX o alcune funzioni COM possono lottare. Non proprio una prestazioni caratteristica, ma importante sapere.

(ho tolto "DirectX" - potrei essere parlando spazzatura lì ... ma semplicemente: è necessario controllare che tutto dipendete su è stabile sulla piattaforma di destinazione)

Pensate a una memoria di computer generico come una carta di bingo enorme con miliardi di piazze. Per affrontare qualsiasi casella individuale sul bordo c'è uno schema di etichettare ogni riga e colonna B-5, I-12, O-52..etc.

Se ci sono abbastanza quadrati sulla carta alla fine si esegue fuori di lettere quindi sarà necessario per iniziare a riutilizzare più lettere e la scrittura di un numero maggiore di continuare ad essere in grado di affrontare in modo univoco ogni quadrato.

Prima di sapere che il presentatore è schizzando numeri fastidiosamente enormi e le combinazioni di lettere per farvi sapere che piazza per segnare sulla vostra carta di 10 miliardi quadrato. BAZC500000, IAAA12000000, OAAAAAA523111221

Il numero di bit del computer indica il limite della complessità delle lettere e dei numeri per affrontare qualsiasi casella specifica.

32-bit indica se la carta è più grande di 2 ^ 32 piazze computer non ha abbastanza fili e Transisters per permettere di univoco indirizzo fisicamente qualsiasi quadrato specifico richiesto per leggere un valore o scrivere un nuovo valore specificato posizione di memoria.

computer a 64 bit possono affrontare singolarmente un massiccio 2 ^ 64 piazze .. ma per fare in modo che ogni piazza ha bisogno di molte più lettere e numeri per assicurarsi che ogni quadrato ha un proprio indirizzo univoco. Questo è il motivo per cui i computer a 64 bit hanno bisogno di più memoria.

Altri esempi comuni di limiti di indirizzamento sono numeri di telefono locali. Sono ususally 7 cifre 111-2222 o riformattato come un numero 1.112.222 .. quello che succede quando ci sono più di 9.999.999 persone che vogliono i loro propri numeri Telelphone? È possibile aggiungere prefissi e codici dei paesi e il tuo numero di telefono va da 7 cifre a 10-11 occupare più spazio.

Se si ha familiarità con l'IPv4 carenza imminente il suo stesso problema .. Gli indirizzi IPv4 sono 32 bit significa che ci sono solo 2 ^ 32 (~ 4 miliardi di euro) gli indirizzi IP unico possibile e ci sono molte più persone che che oggi vivo .

Non v'è in testa in tutti gli schemi che ho citato (computer, numeri di telefono, indirizzi IPv4) in cui alcune parti sono riservati per esigenze organizzative così lo spazio utile è molto meno.

La promessa prestazioni per il mondo a 64 bit è che invece di inviare 4 byte alla volta (ABCD) un computer a 64 bit può inviare 8 byte alla volta (ABCDEFGH) quindi l'alfabeto è trasferito tra le diverse aree di memoria fino a due volte più veloce di un computer a 32 bit. C'è anche beneficio per alcune applicazioni che semplicemente eseguire più velocemente quando hanno più memoria che possono utilizzare.

Nel mondo reale processori desktop a 64 bit da Intel ed altri non sono realmente vero processori a 64 bit ed ancora sono limitati a 32-bit per diversi tipi di operazioni così nel mondo reale delle prestazioni tra 32 bit e 64 applicazioni -bit è marginale. modalità a 64 bit ti dà più registri hardware con cui lavorare che non migliorare le prestazioni, ma rivolgendosi più memoria su un processore "falso" a 64-bit può anche influire negativamente sulle prestazioni in alcune aree per cui il suo ususally un lavaggio. In futuro ci sarà vedere altri miglioramenti di prestazioni quando i processori desktop diventano completamente a 64-bit.

Non credo che ho visto gran parte della parola 'registrare' nelle risposte precedenti. Un computer digitale è un gruppo di registri, con logica aritmetica e la memoria di dati e memorizzare programmi.

Ma prima ... computer digitali utilizzano una rappresentazione binaria di numeri perché le cifre binarie (bit '') 0 e 1 sono facilmente rappresentati dai due stati (on / off) di un interruttore. primi computer utilizzati interruttori elettromeccanici; i computer moderni usano transistor perché sono più piccoli e più veloci. Gran più piccolo, e molto più veloce.

All'interno della CPU, gli interruttori sono raggruppati in registri di una lunghezza finita, e operazioni vengono tipicamente eseguite su interi registri: Ad esempio, aggiungere questo registro a ciò, e così via. Come ci si aspetterebbe, una CPU a 32 bit ha dei registri lunghi 32 bit. Sto semplificando qui, ma recano con me.

Ha senso organizzare la memoria del computer come una serie di 'sedi', ciascuno tiene lo stesso numero di bit come registro CPU: per esempio, caricare questo registro da quella posizione di memoria. In realtà, se pensiamo memoria, come bytes , questo è solo una frazione conveniente di un registro e migh caricare un registro da una serie di locazioni di memoria (1, 2, 4, 8).

Come transistor diventano più piccoli, logica addizionale per l'aritmetica più complessa può essere implementato nello spazio limitato di un chip. CPU immobiliare è sempre ad un premio.

Ma con miglioramenti nella fabbricazione di chip, più transistor possono essere effettuate in modo affidabile su chip solo leggermente più grandi. I registri possono essere più a lungo ei percorsi tra loro può essere più ampio.

Quando i registri che contengono gli indirizzi delle locazioni di memoria sono più lunghi, si rivolgono memorie e dati più grandi possono essere manipolate in blocchi più grandi. In combinazione con la logica aritmetica più complessa, le cose vengono fatte più veloce.

E non è che quello che stiamo tutti dopo?

per spiegare perché la modalità a 32 bit può accedere solo 4GB di RAM:

Spazio massimo memoria accessibile = 2 n byte dove n è la lunghezza della parola dell'architettura. Quindi, in un'architettura a 32 bit, il massimo spazio di memoria accessibile è 2 32 = 4294967296 = 4GB di RAM.

architettura a 64 bit sarebbe in grado di accedere 2 64 = quantità di memoria.

Appena notato commenti Tchens andando oltre questo. In ogni modo, senza un background CS, sì organizzazione computer e libri di architettura stanno per essere difficile da capire al meglio.

  • Il processore utilizza base 2 per memorizzare numeri. Base 2 è stato probabilmente scelto perché è il "semplice" di tutte le basi:. Ad esempio la tavola pitagorica base-2 ha solo 4 celle mentre la base tavola pitagorica "10" ha un 100 cellule
  • Prima del 2003, i processori per PC comuni sono stati solo "a 32-bit in grado".
    • Ciò significa che le operazioni numeriche native del processore erano per numeri a 32 bit.
    • Si può ancora fare operazioni numeriche per i numeri più grandi, ma quelli dovrebbe essere eseguita da programmi eseguiti dal processore, e non essere le "azioni primitivi" (comandi in linguaggio macchina) supportate dal processore come quelli per il 32 -bit-interi (al momento)
    • 32 bit sono stati scelti perché gli ingegneri della CPU sono appassionato di potenze di 2, e 16-bit non sono stati sufficienti
  • Perché non erano a 16 bit a sufficienza? Con 16 bit si può rappresentare numeri interi nella gamma di 0-65535
    • 65535 = 1111111111111111 in binario (= 2 0 +2 1 +2 2 ... + 2 15 = 2 16 -1)
    • 65535 non è sufficiente, perché, ad esempio, un software di gestione ospedale deve essere in grado di contare più di 65535 pazienti
    • Di solito le persone considerano la dimensione della memoria del computer quando si parla di quanto grande i suoi numeri interi dovrebbero essere. 65535 non è sicuramente abbastanza. I computer hanno modo più RAM di questo, e non importa se si conta in "Byte" o bit
  • 32 bit è stato considerato sufficiente per un po '. Nel 2003 AMD ha introdotto il primo a 64 bit compatibile "x86" del processore . Intel presto seguito.
  • In realtà a 16 bit è stato considerato sufficiente un molto tempo fa .
  • E 'pratica comune per un sacco di hardware e software per essere retro-compatibile. In questo caso significa la CPU 64 bit compatibile può anche eseguire ogni software CPU 32 bit capaci can.
    • La retrocompatibilità è adoperata a una strategia di business. Altri utenti vorranno aggiornare al processore meglio se si può anche fare tutto quello precedente poteva.
    • Nella CPU retrocompatibilità significa che le nuove azioni i supporti CPU sono aggiunte al linguaggio macchina precedente. Ad esempio, il linguaggio macchina precedente può avuto qualche specifica come "tutti i codici operativi a partire dal 1111 sono riservati per uso futuro"
    • In teoria, questo tipo di CPU compatibilità all'indietro sarebbe non era stato necessario in quanto tutto il software potrebbe avere appena stato ricompilato per il nuovo e non in linguaggio macchina compatibili. Tuttavia questo non è il caso a causa di strategie aziendali e sistemi politici o economici. In un mondo "open source" Utopic, la compatibilità di linguaggi macchina probabilmente non sarebbe un problema.
  • La compatibilità di x86-64 (linguaggio macchina degli CPU 64 bit) si presenta sotto forma di una 'modalità compatibilità'. Ciò significa che qualsiasi programma che intendono avvalersi delle nuove funzionalità CPU deve notificare alla CPU (tramite il sistema operativo) che dovrebbe funzionare in "modalità a 64 bit". E allora si potrebbe utilizzare per grandi nuova CPU funzionalità a 64 bit.
  • Quindi, per un programma di utilizzare le funzionalità a 64 bit della CPU: la CPU, il sistema operativo e il programma, tutti devono "supporto a 64-bit"
  • .
  • 64-bit è sufficiente a dare ad ogni persona nel mondo diversi numeri unici. E 'probabilmente abbastanza grande per la maggior parte degli sforzi di calcolo attuali. E 'probabilmente improbabile che le CPU future si sposterà ulteriormente a 128 bit. Ma se lo fanno, questo è sicuramente abbastanza per tutto quello che riesco a immaginare, e quindi una transizione a 256 bit non sarà necessario.

Spero che questo aiuta.

E 'interessante notare che alcune applicazioni (per es. Multimediale di codifica / decodifica e rendering) guadagno significativo (2x) incremento delle prestazioni quando scritto di utilizzare appieno a 64 bit.

Si veda a 32-bit vs benchmark a 64 bit per Ubuntu e Windows Vista

Per persona non CS. 64bit funziona meglio per i calcoli (tutti i tipi di) sarà un bene anche che vi permetterà di avere più RAM.

Anche se si dispone di poca RAM (in VPS ad esempio o piccolo-RAM server dedicato) -. Scegliere 32 bit, i servizi ci sarà mangiare meno RAM

Questa è una spiegazione molto semplice, dato che tutto ciò di cui sopra è abbastanza dettagliato.

32 bit si riferisce ai registri. I registri sono luoghi per memorizzare i dati, e tutti i programmi funzionano manipolando queste cose. Assemblea opera direttamente su di loro (e, quindi, perché le persone sono spesso entusiasti di programmare in assembly).

32 bit indica l'insieme di base di registri può contenere 32 bit ofinformation. mezzi a 64 bit, ovviamente, a 64 bit di informazioni.

Perché questo può rendere i programmi più veloce? Poiché è possibile fare operazioni più grandi più veloce. Si farà solo certi tipi di programmi più velocemente, tra l'altro. Giochi, tipicamente, possono trarre grande vantaggio di ottimizzare per processore , a causa delle loro operazioni matematiche-pesante (e quindi registrare l'uso).

Ma in modo divertente, come detto Tchen, loro sono molte altre 'cose' che consentono di eseguire le operazioni più grandi comunque. SSE, SSE2, ecc, avrà registri a 64 bit e registri a 128 bit, anche su un sistema '32 po'.

L'aumento della capacità di indirizzare la memoria parla direttamente l'aumento delle dimensioni di base registro, sulla base di (immagino) sistema di memoria di indirizzamento specifico di Windows'.

La speranza che aiuta un po '. altri manifesti sono molto più preciso di me, sto solo cercando di spiegare in modo molto semplice (è utile che io so molto poco:)

ho una risposta meravigliosa per questa domanda, ma non va bene per tutti all'interno di questo blocco risposta .... La risposta più semplice è che per il vostro programma per ottenere un byte di memoria, ha bisogno di un indirizzo. In CPU 32-bit, l'indirizzo di memoria di ciascun byte è memorizzato in un numero intero a 32 bit (segno), che come valore massimo di 4 GB. Quando si utilizza un processore a 64 bit, l'indirizzo di memoria è un intero a 64 bit, che vi dà circa 1,84,467441 millions × 10 ^ 19 possibili indirizzi di memoria. Questo in realtà dovrebbe essere sufficiente se siete nuovi alla programmazione. Si dovrebbe davvero essere incentrato più su imparare a programmare, di circa il funzionamento interno del processore, e perché non è possibile accedere a più di 4 GB di RAM sul vostro CPU a 32 bit.

Risposta semplice per spiegare intervallo di memoria indirizzabile con processori a 32 bit è:

lascia supporre Hai solo 3 numeri a due cifre permesso di costruire numero in modo massimo u può andare fino a 999. È intervallo di numeri è (0-999). Hai appena 1000 numeri da utilizzare.

Ma se u sono autorizzati ad avere 6 numeri a due cifre allora il numero massimo che si può costruire è 999999. gamma Ora è (0-999.999). Così ora la u ha 1 milione di numeri con l'uso.

Allo stesso modo più bit si è permesso di avere in un processore, più grande insieme di indirizzi (numeri in dell'esempio precedente), è possibile costruire ed eventualmente utilizzare per memorizzare i dati, ecc ..

Tutto più semplice di questo sarebbe interessante leggere!

-AD.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top