Una cosa son los chips de memoria física con los que trabajas. Estos siempre tienen un ancho de datos fijo de 8 a 64 bits, en mi experiencia. Como nota al margen, en las ranuras DIMM a menudo tiene múltiples chips con su E / S de datos "paralelizada", de modo que el módulo, como una caja negra, entrega un bus de datos de 64 bits de ancho.
Luego tienes la CPU que quiere que se transfieran sus datos. Tienes razón, que con la PC, la palabra completa es la pieza más pequeña de memoria a la que puede acceder el hardware. De nuevo tiene razón, que el controlador de CPU / memoria luego selecciona los sub-bytes que necesita cada instrucción individual.
También me gustaría relacionar este problema con alineación , aunque la pregunta no lo menciona.
Muchas arquitecturas modernas esperan que ciertos operandos de instrucción estén alineados. Esto es principalmente un problema con SIMD, donde normalmente desearía una alineación de 16 bytes. Las herramientas de lenguaje C * a menudo no lo hacen muy fácil de lograr.
Esto se refiere a la lógica adicional que se usa para volver a alinear el bloque de memoria (es decir, la línea de caché); el acceso alineado a menudo es más rápido, porque esta lógica de alineación se omite.