x86 e Memory Addressing
-
21-09-2019 - |
Domanda
Ho letto su modelli di memoria in un libro di montaggio ho preso e ho un paio di domande. Supponiamo che il bus indirizzi ha 32 linee, il bus dati ha 32 linee e la CPU è a 32 bit (per semplicità). Ora, se la CPU fa una richiesta di lettura e invia l'indirizzo a 32 bit, ma ha solo bisogno di 8 bit, tutti i 32 bit tornano comunque? Inoltre, gli indirizzi in memoria vengono ancora affrontati per byte corretta? Quindi, andare a prendere un byte riporterebbe 0000 0001 per affrontare 0000 0004?
Soluzione
In generale, sì. Non c'è niente da guadagnare leggendo parti di una parola da un autobus, quindi una parola intera viene letto. Istruzioni specificano quali parti delle parole di cui hanno bisogno per caricare o memorizzare in registri in realtà.
Detto questo, è raro leggere direttamente dalla memoria di questi tempi. CPU hanno cache con cui si interagisce il 99% del tempo, e quando i dati non si trova nella cache, una linea intera è portato a (più parole) e poi ancora lette dalla cache.
Si noti inoltre che molte CPU moderne in realtà hanno i bus a 64 bit.
Altri suggerimenti
Si dovrebbe davvero leggere questo: Ciò che ogni programmatore dovrebbe conoscere memoria