Então, basicamente, estou com dificuldade para entender o alinhamento de dados. Não entendo por que em uma arquitetura de 64 bits, por exemplo, é importante armazenar dados de 4 bytes em um múltiplo do endereço 0x0, 0x4, 0x8, 0xC. A busca da CPU começa em cada múltiplo do tamanho da palavra (que é 8 bytes aqui)? E por que dados de 2 bytes precisam ser armazenados nos endereços 0x0, 0x2, 0x4, 0x6, 0x8, 0xA, 0xC, 0xE? A CPU pode carregar em um clock dados de 2 bytes, mesmo se estiverem armazenados em 0x1... Então, por que eles deveriam estar no endereço 0x0, 0x2, 0x4, 0x6, 0x8, 0xA, 0xC, 0xE.
Além disso, se a linha de cache da CPU tiver, por exemplo, 64 bytes, por que devo me preocupar com o alinhamento de dados se os dados não se sobrepõem entre os endereços 0x...00 e 0x...40? É confuso...