В большинстве компьютеров используется долговременная память больших объемов, обычно на магнитных или оптических дисках, в которой время доступа к ячейке зависит от ее физического расположения в памяти. Помимо этого недостатка, присущего памяти с последовательным доступом, такие устройства, как правило, слишком медленны для использования их в качестве основной памяти. Поэтому они используются для резервного хранения больших объемов данных (например, ответов на экзаменационные билеты) или программ, которые перед выполнением необходимо подгружать в основную память.
Память программ
В памяти программ хранится двоичный код, составляющий
Память данных
В памяти данных хранятся данные, используемые во время работы программы. И опять же быстродействие этой памяти обычно сравнимо с быстродействием ЦПУ. Также в адресном пространстве памяти данных могут располагаться специальные регистры, например порты ввода/вывода.
Независимо от своего назначения компьютер должен иметь возможность взаимодействовать с окружающим миром. Хотя обычно вспоминаются такие устройства, как клавиатура и монитор, можно считывать и изменять состояние практически любого физического устройства. Так, данные об объеме топлива, впрыскиваемого в цилиндр двигателя, в совокупности со значением скорости вращения вала могут использоваться для управления моментом зажигания искры в камере сгорания бензинового двигателя.
Все элементы фон-неймановского компьютера соединяются между собой одной общей магистралью передачи данных, или шиной (понятие шины было введено во 2-й главе, см. Рис. 2.4 на стр. 34). Вся информация передается по этим общим линиям в обоих направлениях, при этом ЦПУ играет роль главного контроллера. В компьютере с гарвардской архитектурой память программ имеет отдельную шину данных, что позволяет осуществлять выборку команд одновременно с действиями на шине данных памяти программ. Другие шины используются для передачи адресов различным областям памяти, а также управляющей информации и информации о состоянии (см. Рис. 3.4).
* * *
Микроконтроллеры, которым посвящена эта книга, имеют гарвардскую архитектуру, поэтому дальше мы будем рассматривать только ее. Взяв за основу ЦПУ, показанный на Рис. 2.20 (стр. 49), и добавив к нему память программ, память данных, а также схемы управления и дешифрации, мы получим примитивный компьютер с гарвардской архитектурой (Рис. 3.3). Серым цветом на рисунке выделены элементы исходной схемы с Рис. 2.21, приведенного на стр. 50.
Благодаря подключению шины данных АЛУ к памяти данных, мы получаем возможность считывать из памяти первый операнд, а также при необходимости помещать в нее результат операции. Адрес этого операнда является частью кода команды, считанного из памяти программ и дешифрованного устройством управления. Это же устройство управления формирует сигналы выбора режима АЛУ, который зависит от текущей команды. Результат, получаемый на выходе АЛУ, может быть загружен либо в рабочий регистр (устройство управления формирует импульс на линии W), либо обратно в ту же ячейку памяти, откуда был считан операнд (устройство управления формирует импульс на линии F). Информация об адресате результата операции также содержится в коде команды.
Команды (в виде кодовых слов) обычно располагаются в памяти программ последовательно. Для поочередной адресации каждой команды используется двоичный суммирующий счетчик (см. Рис. 2.24 на стр. 53). Если, предположим, при сбросе компьютера
Рис. 3.3.