Probabilmente già detto vari modi nelle altre risposte. In generale oggi, ma non necessariamente storicamente, un byte è 8 bit. Il più delle volte ci occupiamo di "memoria indirizzabile in byte", il che significa che la cosa PIÙ PICCOLA a cui possiamo accedere con un singolo indirizzo è un byte. Ma ciò non significa che sia l'unica cosa che possiamo affrontare. A seconda della piattaforma, è possibile utilizzare un singolo indirizzo per accedere a un byte, una mezza parola / parola (16 bit), una parola / doppia parola (32 bit) e così via a 64 bit qualunque. L'istruzione determina fondamentalmente quale sia la dimensione dell'accesso desiderato (8,16,32,64, ecc.) Di solito in quelle unità 8, 16, 32, 64. Ma non è difficile e veloce, "dipende".
Inoltre, a seconda della progettazione del processore e / o del sistema, non vi è motivo di ritenere che la dimensione dell'accesso sia la dimensione della memoria o la dimensione dell'accesso più piccolo. Con requisiti sempre più grandi ha sempre meno senso nel tempo implementare effettivamente il sistema di memoria utilizzando le dimensioni più ridotte, il computer su cui stai leggendo questo utilizza probabilmente un bus dati a 32 bit di larghezza o bus dati a 64 bit di larghezza per tutti gli accessi, tu vuole leggere un byte, fa una lettura a 64 bit e lancia il resto dei bit, perché non costa nulla in più mantenere il bus così largo fino al vicino al core del processore e il processore seleziona la corsia giusta del byte. costa più logica e / o orologi per restringere il bus o spostare i byte nelle corsie dei byte (a volte viene fatto). quindi gli arieti interni in un microcontrollore potrebbero avere una larghezza di 32 bit, ad esempio se questo ha senso per il sistema. potrebbe essere 16. Sì per le scritture che si masterizzano più cicli, è necessario leggere-modificare-scrivere da qualche parte lungo la linea. Vuoi scrivere un singolo byte sul tuo PC, da qualche parte accade una lettura a 64 bit, e poi da qualche parte viene modificato un byte di quei 64 bit, a seconda di cosa fai dopo che quei 64 bit possono tornare al dramma con solo quegli 8 bit diverso da quello che c'era prima, la memorizzazione nella cache e il codice rendono questa non una regola generica. Le scritture sono attive e dimenticate, tuttavia, il controller di memoria può raccogliere l'indirizzo e i dati dal processore e consentire al processore di continuare a funzionare mentre alla fine esegue la scrittura salvando gli orologi, forse più orologi che vengono masterizzati in una lettura-modifica-scrittura (se nella cache già),
Ci sono eccezioni anche oggi a praticamente tutto questo, ci sono forse istruzioni o tipi di accesso in alcuni sistemi che sono indirizzabili in bit, ci sono alcuni sistemi in cui l'indirizzo è in unità di qualcosa di diverso da un byte. Un byte non era sempre 8 bit e forse ci sono ancora sistemi in esecuzione ciò che è vero (usavamo usare ottale e una parola di byte 18 o 36 bit di 9 bit ha molto senso per i programmatori umani e i progettisti di chip che pensano ottale, un 8 bit ha molto senso per i pensatori esadecimali).
Ora il computer su cui stai leggendo questo, anche se il bus dati per quel controller drammatico potrebbe avere una larghezza di 32 o 64 bit, il modulo drammatico stesso è probabilmente composto da più parti larghe 8 bit, che puoi facilmente vedere. Se ha 8 o 9 chip su un lato, probabilmente è un bus largo 64 bit o 72 bit (64 bit più 8 bit di ECC) implementato con parti larghe 8 bit. Se hai 4 o 5 chip su un lato del modulo ma hai ancora tonnellate di pin, allora è largo 32 bit (improbabile in questi giorni) o 4 chip larghi 16 bit e se ce n'è un 5 potrebbe essere largo 16 bit e solo 8 vengono utilizzati oppure è una parte larga 8 bit. Ci sono anche parti a 32 bit di larghezza, ma la larghezza a 8 bit è più comune. Una pratica molto comune che risale a molto tempo fa.
Dovremmo sapere quale microcontrollore. Dato che menzioni a 32 bit è abbastanza probabile (senza informazioni dettagliate sebbene non possiamo dirlo) che la memoria all'interno di quella parte è larga 32 bit e tutti gli accessi ad essa sono larghi 32 bit. le istruzioni determinerebbero probabilmente ciò che il programma vuole, che probabilmente offre un tipo di accesso a 8 bit, 16 bit e 32 bit, quelli più piccoli sulle scritture richiederebbero una lettura-modifica-scrittura da qualche parte, le letture che semplicemente ignorano le corsie di byte. Lo stesso vale per il flash, anche se le scritture flash sono un altro argomento. Ma il flash interno ha probabilmente una larghezza di 32 bit e tutte le letture sono in unità di 32 bit. Un flash esterno, tuttavia, è un'altra storia, molto probabilmente sono larghe un po '(spi o i2c), sebbene le parti spi possano talvolta supportare 1, 2 o 4 bit, ma un pin miso è più comune. Internamente sono organizzati in unità di byte, potrebbe essere largo 8 bit o 16 o 32, o chissà, si sposta e si indirizza in unità di byte però. con spi puoi spostarti ovunque tra un byte e l'intera memoria in una singola transazione, dipende dal design della parte flash.