Очевидно, что различное программное обеспечение должно работать с данными/переменными разных типов и размеров, и часто бывает необходимо работать с несколькими разными в одном и том же коде.
Возможность доступа к этим переменным напрямую и в целом, независимо от размера, упрощает программирование, так как вам не нужно склеивать, скажем, 4 8-битных байта, чтобы сформировать 32-битное значение или аналогично извлечь отдельные 8-битные значения из 32-разрядной памяти.
Существуют процессоры, которые не очень гибкие с точки зрения размеров поддерживаемых данных. Например, процессоры цифровых сигналов с фиксированной точкой. Некоторые могут только получить доступ к памяти как 16-битные слова и 32-битные двойные слова. Я думаю, что отсутствие в них 8-разрядной байтовой адресации не является большой проблемой, потому что ожидается, что они будут обрабатывать много обработки сигналов, а не быть универсальными и подходят для вычислений общего назначения, а образцы сигналов редко являются 8-разрядными (это слишком грубо), чаще всего они 16-бит.
Поддержка меньшего размера данных и других функций аппаратного обеспечения делает это оборудование более простым и дешевым (в том числе с точки зрения потребляемой энергии), что становится важным, если мы говорим о тысячах и миллионах устройств.
Различные проблемы требуют разных решений, следовательно, разнообразия.
Современные процессоры общего назначения имеют тенденцию быть байтовыми. DSP могут быть адресованными по словам. Некоторые исторические процессоры были адресованными по словам, иногда со странными размерами слов (IIRC, PDP-11 были Unix и C, изначально были написаны, имели 18-битные слова и адресно-адресуемую память). – ninjalj
Возможный дубликат http://stackoverflow.com/q/1586944/570609 – kch