Компилятор как раз таки позаботится о выравнивании и будет ваши 16
бит гонять в 32-битных словах. А если вы ему выкрутите руки и
упакуете структуры, то будет побайтово их читать, ибо не умеет
контроллер невыровненный доступ. Збсь такая "экономия". Адресация
32-битная, а значит к вашим 16 младшим битам нужно подгрузить и
прибавить старшие вместо того чтобы одним чтением загрузить сразу
указатель. И нет никакой проблемы с пропускной способностью флэша в
современных контроллерах - всё давно
просчитано, разрядность повышена, буферы добавлены. Может увидим листинг вашего чудо-алгоритма? Мне то не трудно, я уже штук пять разных вложил, но я же демагог.