Probablement déjà dit différentes manières dans les autres réponses. En général aujourd'hui, mais pas nécessairement historiquement, un octet est de 8 bits. La plupart du temps, nous parlons de "mémoire adressable en octets", ce qui signifie que la PLUS PETITE chose à laquelle nous pouvons accéder avec une seule adresse est un octet. Mais cela ne signifie pas que c'est la SEULE chose que nous pouvons aborder. Selon la plateforme, une seule adresse peut être utilisée pour accéder à un octet, un demi-mot / mot (16 bits), un mot / double mot (32 bits) et ainsi de suite 64 bits. L'instruction détermine essentiellement la taille de l'accès souhaité (8, 16, 32, 64, etc.) généralement dans les unités 8, 16, 32, 64. Mais ce n'est pas difficile et rapide, "cela dépend".
En fonction également de la conception du processeur et / ou du système, il n'y a aucune raison de supposer que la taille de l'accès est la taille de la mémoire ou la taille du plus petit accès. Avec des exigences de plus en plus grandes, il est de moins en moins judicieux au fil du temps d'implémenter réellement le système de mémoire en utilisant la plus petite taille, l'ordinateur sur lequel vous lisez ceci utilise probablement un bus de données de 32 bits ou 64 bits pour tous les accès, vous voulez lire un octet, il fait une lecture de 64 bits et lance le reste des bits, pourquoi cela ne coûte rien de plus garder le bus aussi large jusqu'à près du cœur du processeur et le processeur sélectionne la bonne voie d'octets. coûte plus de logique et / ou d'horloges pour rendre le bus plus étroit ou déplacer les octets dans les voies d'octets, (cela se fait parfois). les béliers internes d'un microcontrôleur peuvent donc avoir une largeur de 32 bits, par exemple, si cela a du sens pour le système. peut être 16. Oui pour les écritures vous gravez plus de cycles, vous devez lire-modifier-écrire quelque part le long de la ligne. Vous voulez écrire un seul octet sur votre PC, quelque part une lecture 64 bits se produit, puis quelque part un octet de ces 64 bits est modifié, selon ce que vous faites après cela, ces 64 bits peuvent revenir au dram avec seulement ces 8 bits différent de ce qui était auparavant, la mise en cache et votre code n'en font pas une règle générique. Les écritures sont des incendies et oublient cependant, le contrôleur de mémoire peut collecter l'adresse et les données du processeur et permettre au processeur de continuer à fonctionner pendant qu'il fait éventuellement les horloges d'économie d'écriture, peut-être plus d'horloges qui sont gravées dans une lecture-modification-écriture (si déjà en cache),
Il y a des exceptions même aujourd'hui à peu près tout cela, il y a peut-être des instructions ou des types d'accès dans certains systèmes qui sont adressables par bits, il y a des systèmes où l'adresse est en unités de quelque chose d'autre qu'un octet. Un octet n'était pas toujours 8 bits et peut-être qu'il y a des systèmes qui fonctionnent toujours (c'est vrai que nous utilisions octal et un octet 9 bits 18 ou 36 bits ont beaucoup de sens pour les programmeurs humains et les concepteurs de puces qui pensent octal, un 8 bits a beaucoup de sens pour les penseurs hexadécimaux).
Maintenant, l'ordinateur sur lequel vous lisez ceci, même si le bus de données pour ce contrôleur dram peut avoir une largeur de 32 ou 64 bits, le module dram lui-même est probablement composé de plusieurs parties de 8 bits de large, que vous pouvez facilement voir. S'il a 8 ou 9 puces d'un côté, il s'agit probablement d'un bus de 64 bits ou 72 bits (64 bits plus 8 bits de ECC) mis en œuvre avec des parties de 8 bits de large. Si vous avez 4 ou 5 puces d'un côté du module mais avez encore des tonnes de broches, alors c'est soit une largeur de 32 bits (peu probable de nos jours), soit 4 des puces ont une largeur de 16 bits et s'il y en a une 5ème, cela peut être de 16 bits de large et seulement 8 sont utilisés ou il s'agit d'une partie de 8 bits de large. Il existe également des parties de 32 bits de large, mais la largeur de 8 bits est la plus courante. Une pratique très courante qui remonte à loin.
Nous aurions besoin de savoir ce microcontrôleur. Puisque vous mentionnez 32 bits, il est très probable (sans informations détaillées, bien que nous ne puissions pas le dire) que la mémoire à l'intérieur de cette partie a une largeur de 32 bits, et que tous les accès à celle-ci ont une largeur de 32 bits. les instructions détermineraient probablement ce que le programme veut qui offre probablement un type d'accès 8 bits, 16 bits et 32 bits, les plus petites en écriture nécessiteraient une lecture-modification-écriture quelque part, les lectures vous ignorent simplement les voies d'octets. Il en va de même pour le flash, bien que les écritures flash soient un autre sujet. Mais le flash interne a probablement une largeur de 32 bits et toutes les lectures sont en unités de 32 bits. Un flash externe cependant, c'est une autre histoire, très probablement ils ont un bit de large (spi ou i2c), bien que les parties spi puissent parfois prendre en charge 1, 2 ou 4 bits, mais une broche miso est la plus courante. En interne, ils sont organisés en unités d'octets, pourrait avoir une largeur de 8 bits ou 16 ou 32, ou qui sait, vous devez les déplacer et les adresser en unités d'octets. avec spi, vous pouvez déplacer n'importe où entre un octet et la mémoire entière en une seule transaction, dépend de la conception de la partie flash.