Vermutlich schon in den anderen Antworten verschiedene Möglichkeiten genannt. Im Allgemeinen besteht ein Byte heute, aber nicht unbedingt historisch, aus 8 Bits. Die meiste Zeit beschäftigen wir uns mit "byteadressierbarem Speicher", was bedeutet, dass das KLEINSTE, auf das wir mit einer einzelnen Adresse zugreifen können, ein Byte ist. Das heißt aber nicht, dass wir NUR darauf eingehen können. Abhängig von der Plattform kann eine einzelne Adresse verwendet werden, um auf ein Byte, ein Halbwort / Wort (16 Bit), ein Wort / Doppelwort (32 Bit) usw. zuzugreifen. Der Befehl bestimmt im Grunde genommen, wie groß der gewünschte Zugriff ist (8, 16, 32, 64 usw.), normalerweise in diesen Einheiten 8, 16, 32, 64. Aber das ist nicht hart und schnell, "es kommt darauf an".
Abhängig vom Design des Prozessors und / oder des Systems gibt es auch keinen Grund anzunehmen, dass die Größe des Zugriffs der Größe des Speichers oder der Größe des kleinsten Zugriffs entspricht. Bei immer größeren Anforderungen ist es im Laufe der Zeit immer weniger sinnvoll, das Speichersystem tatsächlich mit der kleinsten Größe zu implementieren. Der Computer, auf dem Sie dies lesen, verwendet wahrscheinlich einen 32-Bit-breiten Datenbus oder einen 64-Bit-breiten Datenbus für alle Zugriffe Wenn Sie ein Byte lesen möchten, führt es einen 64-Bit-Lesevorgang durch und wirft den Rest der Bits weg. Warum kostet es nichts mehr? Halten Sie den Bus so weit wie möglich in der Nähe des Prozessorkerns, und der Prozessor wählt die richtige Byte-Spur aus. kostet mehr Logik und oder Takte, um den Bus enger zu machen oder die Bytes in den Bytespuren zu verschieben (wird manchmal ausgeführt). Interne RAMs in einem Mikrocontroller können beispielsweise 32 Bit breit sein, wenn dies für das System sinnvoll ist. könnte 16 sein. Ja, für Schreibvorgänge, die Sie mehr Zyklen brennen, müssen Sie irgendwo entlang der Linie lesen, ändern und schreiben. Möchten Sie ein einzelnes Byte auf Ihren PC schreiben, passiert irgendwo ein 64-Bit-Lesevorgang, und irgendwo wird dann ein Byte dieser 64-Bit-Lesevorgänge geändert. Dies hängt davon ab, was Sie danach tun. Danach werden 64-Bit-Lesevorgänge möglicherweise mit nur diesen 8-Bit-Lesevorgängen wiederhergestellt Anders als zuvor, machen Caching und Ihr Code dies jedoch nicht zu einer generischen Regel. Schreibvorgänge sind jedoch Feuer und Vergessen. Der Speichercontroller kann die Adresse und die Daten vom Prozessor abrufen und dem Prozessor ermöglichen, weiterzulaufen, während er schließlich die schreibsparen- den Uhren ausführt, möglicherweise mehr Uhren, die beim Lesen, Ändern und Schreiben gebrannt werden (falls erforderlich) bereits im Cache),
Es gibt auch heute noch Ausnahmen zu so ziemlich allem, es gibt vielleicht Anweisungen oder Zugriffstypen in einigen Systemen, die bitadressierbar sind, es gibt einige Systeme, in denen die Adresse in Einheiten von etwas anderem als einem Byte angegeben ist. Ein Byte war nicht immer 8 Bit und vielleicht gibt es noch Systeme, auf denen dies zutrifft (früher verwendeten wir Oktal, und ein Wort mit 9 Bit und 18 oder 36 Bit ist für menschliche Programmierer und Chipdesigner, die an Oktal denken, sehr sinnvoll) 8 Bit ist für Hexadezimaldenker sehr sinnvoll.
Auf dem Computer, auf dem Sie dies lesen, besteht das eigentliche Dram-Modul wahrscheinlich aus mehreren 8 Bit breiten Teilen, die Sie leicht sehen können, obwohl der Datenbus für diesen Dram-Controller möglicherweise 32 oder 64 Bit breit ist. Wenn es 8 oder 9 Chips auf einer Seite hat, ist es wahrscheinlich ein 64-Bit- oder 72-Bit-Bus (64-Bit plus 8-Bit-ECC), der mit 8-Bit-breiten Teilen implementiert ist. Wenn Sie 4 oder 5 Chips auf einer Seite des Moduls haben, aber immer noch Tonnen von Pins haben, dann ist es entweder 32 Bit breit (heutzutage unwahrscheinlich) oder 4 der Chips sind 16 Bit breit und wenn es einen fünften gibt, kann es sein 16 Bit breit sein und nur 8 verwendet werden oder es ist ein 8 Bit breiter Teil. Es gibt auch 32-Bit-Teile, aber am häufigsten sind 8-Bit-Teile. Eine sehr verbreitete Praxis, die weit zurückreicht.
Wir müssten wissen, welcher Mikrocontroller. Da Sie 32 Bit erwähnen, ist es sehr wahrscheinlich (ohne detaillierte Informationen, die wir jedoch nicht sagen können), dass der Speicher in diesem Teil 32 Bit breit ist und alle Zugriffe auf ihn 32 Bit breit sind. Die Anweisungen würden wahrscheinlich bestimmen, was das Programm will, das wahrscheinlich einen 8-Bit-, 16-Bit- und 32-Bit-Zugriffstyp anbietet. Die kleineren Befehle für Schreibvorgänge würden irgendwo einen Lese-Änderungs-Schreibvorgang erfordern. Lesen Sie einfach, indem Sie die Byte-Spuren ignorieren. Gleiches gilt für den Flash, auch wenn Flash-Schreibvorgänge ein anderes Thema sind. Der interne Flash ist jedoch höchstwahrscheinlich 32 Bit breit und alle Lesevorgänge erfolgen in Einheiten von 32 Bit. Ein externer Blitz, das ist eine andere Geschichte, höchstwahrscheinlich sind sie ein Bit breit (SPI oder i2C), obwohl SPI-Teile manchmal 1, 2 oder 4 Bits unterstützen können, aber ein Miso-Pin ist am häufigsten. Intern sind sie in Einheiten von Bytes organisiert, 8 Bit breit oder 16 oder 32, oder wer weiß, Sie verschieben und adressieren sie in Einheiten von Bytes. Mit SPI können Sie in einer einzigen Transaktion zwischen einem Byte und dem gesamten Speicher wechseln. Dies hängt vom Design des Flash-Teils ab.