В упрощенном виде архитектура микроконтроллера PIC 16F84 показана на Рис. 5.1.На первый взгляд она сложна, однако в действительности она не намного сложнее архитектуры элементарного гарвардского компьютера Рис. 6.3.
Основное отличие заключается в заключается в том, что к внутренней шине данных памяти данных, помимо ЦПУ, подключены периферийные модули. Чтобы лучше понять материал этой главы, рекомендую еще раз просмотреть материал, касающийся указанного компьютера.
Вообще говоря, в микроконтроллерах РIС реализована гарвардская архитектура с ее раздельными модулями памяти программ и данных, в которой периферийные устройства отображены на адресное пространство памяти данных. То есть с точки зрения программы все эти устройства расположены в памяти данных. То же касается и различных служебных регистров, таких как регистры статуса и управления, а также счетчика команд.
В основе работы любого вычислительного устройства лежит периодическое выполнение цикла выборка—исполнение. При этом каждая команда поочередно выбирается из памяти программ, интерпретируется и исполняется. Поскольку память, к которой обращается программа в процессе выполнения, является памятью данных, а каждое устройство памяти имеет собственные шины, операции выборки и исполнения могут осуществлятьсяпараллельно.
Таким образом, во время выборкип-й команды исполняется команда п—1. Коды обеих команд, как следующей, так и текущей, хранятся в двух внутренних регистрах команд — PК1 и PК2 соответственно. Команды, считанные из памяти программ, загружаются в начало этого конвейера и «выталкиваются» в дешифратор команд с конца конвейера. НаРис. 5.4 изображен развернутый во времени процесс выполнения команды, разбитый на машинные циклы. Во время каждого цикла, за исключением самого первого, выборка новой команды и исполнение предыдущей осуществляются одновременно.
Таким образом, во время выборкип-й команды исполняется команда п—1. Коды обеих команд, как следующей, так и текущей, хранятся в двух внутренних регистрах команд — PК1 и PК2 соответственно. Команды, считанные из памяти программ, загружаются в начало этого конвейера и «выталкиваются» в дешифратор команд с конца конвейера. НаРис. 5.4 изображен развернутый во времени процесс выполнения команды, разбитый на машинные циклы. Во время каждого цикла, за исключением самого первого, выборка новой команды и исполнение предыдущей осуществляются одновременно.