my504 (05.04.2017 08:59 - 09:01, просмотров: 301) ответил Ксения на 8-битники не исключают 16 разрядов у периферии - под эти цели используют 2 соседних регистра. Например, у AVR такое бывает у 16-разрядного таймера, АЦП, установки скорости того же UART'а, у адреса EEPROM и пр. Поэтому совершенно нет препятствий
Работа с двухбайтными словами у 8-битников требует далеко не одного лишнего такта. Это простая пересылка по указателю отличает один и два байта на один такт, да и то если компилятор сие так реализует. Поэтому не стоит причуды компилятора мешать в кучу различий 8 vs 16/32. А что касается двухбайтных входных данных, то я вел речь об их ДАЛЬНЕЙШЕЙ обработке. То есть если int загрузили с АЦП, то и дальнейшая обработка будет идти в основном в разрядности int. А в линейных вычислениях нативная разрядность выигрывает В РАЗЫ по сравнению с увеличенной программными способами. Попробуйте сравнить извлечение корня из 32 разрядов (сумма квадратов) в 16 (очень распространенная операция при нахождении амплитуды сигнала или среднеквадратичного значения) у 32/16-разрядного контроллера и 8 разрядного. Отличие составит раз в ДЕСЯТЬ... Кроме того, очень важна для производительности разрядность КОМАНДЫ. Она определит и типы адресаций и время доступа к ОЗУ и много чего еще. Разрядность шины даже с 9-битным УАРТом будет влиять. Потому что с 8-битником нужно на лету сортировать данные по 9 биту и никакие ДМА тут не катят, а с 16/32 можно спокойно парсить данные АПОСТЕРИОРИ, не прерывая остальные процессы каждым приходящим байтом, не увеличивая парсер на величину латентности и брутто-команд обработчика. Это тоже дает потерю у 8-битников много больше, чем 1 лишний такт.