- •3. Лекция. Архитектура современных высокопроизводительных эвм. Функциональная структура компьютера. Основные концепции функционирования. Программное обеспечение компьютера. Основы алгоритмизации.
- •3.1.1. Устройство ввода
- •3.1.2. Блок памяти
- •3.1.3. Арифметико-логическое устройство
- •3.1.4. Блок вывода
- •3.1.5. Блок управления
- •3.2. Основные концепции функционирования
- •3.3. Структура шины
- •3.4. Программное обеспечение
- •3.4.1.Этапы подготовки и решения задач на эвм
- •3.4.2.Алгоритмы и способы их описания (для более детального изучения раздела можно посмотреть ресурс http://www.Tmn.Fio.Ru/works/04x/306/p04_04/page/p1.Htm)
3.2. Основные концепции функционирования
Как было сказано в разделе 3.1, действиями компьютера управляют инструкции. Для выполнения конкретной задачи в память записывается соответствующая программа, состоящая из множества команд. Команды по очереди пересылаются из памяти в процессор, который их выполняет. Данные, используемые в качестве операндов команд, также хранятся в памяти. Вот пример типичной команды:
1) Add R0,LOCA
Эта команда складывает операнд, хранящийся в памяти по адресу LOCA, с операндом, хранящимся в регистре R0 процессора, и помещает результат в этот же регистр. Исходное содержимое памяти по адресу LOCA не меняется, а содержимое регистра R0 перезаписывается. Данная команда выполняется в несколько этапов. Сначала она пересылается из памяти в процессор. Затем операнд команды считывается из памяти по адресу LOCA и складывается с содержимым регистра R0, после чего результирующая сумма записывается в регистр R0.
В описанной команде Add объединяются две операции: доступ к памяти и операция АЛУ. Во многих современных компьютерах эти два типа операций выполняются с помощью отдельных команд. Такое разделение основывается на соображениях производительности, о которых мы поговорим ниже. Приведенная выше команда может быть реализована и в виде двух команд:
1) Load R3,LOCA для Intel Architecture (IA-32): mov bx,loca
Add R0,R3 add ax,bx
Первая из этих команд копирует содержимое памяти по адресу LOCA в регистр процессора R1, а вторая команда складывает содержимое регистров R1 и R0 и помещает сумму в регистр R0. Обратите внимание, что в результате выполнения двух команд исходное содержимое обоих регистров уничтожается, а содержимое памяти по адресу LOCA сохраняется.
Пересылка данных между памятью и процессором начинается с отправки в устройство памяти адреса слова, к которому требуется получить доступ, и выдачи соответствующих управляющих сигналов. Затем данные пересылаются в память или из памяти.
На рис. 3.2 показано, как соединяются между собой память и процессор. Кроме того, рисунок иллюстрирует несколько важных особенностей функционирования процессора, о которых мы с вами еще не говорили. На нем не показана реальная схема соединений этих компонентов, поскольку пока мы обсуждаем только их функциональные характеристики. Более детально соединение компонентов описывается в разделе 8 при рассмотрении конструкции процессора.
Кроме АЛУ и управляющих схем процессор содержит множество регистров, предназначенных для разных целей. В регистре команды (Instruction Register, IR) содержится код выполняемой в данный момент команды. Ее результат доступен управляющим схемам, которые генерируют сигналы для управления различными элементами, участвующими в выполнении команды. Еще один специализированный регистр, называемый счетчиком команд (Program Counter, PC), служит для контроля за ходом выполнения программы. В нем содержится адрес следующей команды, подлежащей выборке и выполнению. Пока выполняется очередная команда, содержимое регистра PC обновляется — в него записывается адрес следующей команды. Говорят, что регистр PC указывает на команду, которая должна быть выбрана из памяти. Кроме регистров IR и PC на рис. 3.2 показано n регистров общего назначения, от R0 до R„-i. Для чего они нужны, объясняется в главе 2.
Наконец, еще два регистра обеспечивают взаимодействие с памятью. Это регистр адреса (Memory Address Register, MAR) и регистр данных (Memory Data Register, MDR). В регистре MAR содержится адрес, по которому производится обращение к памяти, а в регистре MDR — данные, которые должны быть записаны в память или прочитаны из таковой по этому адресу.
Рассмотрим типичный процесс выполнения программы компьютером. Программа располагается в памяти, куда обычно попадает через входное устройство. Ее выполнение начинается с записи в регистр PC адреса первой команды. Содержимое этого регистра пересылается в регистр MAR, а в память направляется управляющий сигнал Read. Когда истекает время, необходимое для доступа к памяти, адресуемое слово (в данном случае — первая команда программы) считывается из памяти и загружается в регистр MDR. Затем содержимое регистра MDR пересылается в регистр IR. Команда готова к декодированию и выполнению.
Если команда требует, чтобы АЛУ выполнило определенную операцию, для нее необходимо получить операнды. Операнд, располагающийся в памяти (он может находиться и в регистре общего назначения), нужно сначала из таковой извлечь, переслав его адрес в регистр MAR и инициализировав цикл Read. После пересылки из памяти в регистр MDR операнд будет направлен в АЛУ. Аналогичным образом туда же будут переданы и остальные необходимые команде операнды, после чего АЛУ сможет выполнить требуемую операцию. Если результат должен быть сохранен в памяти, он будет записан в регистр MDR. Затем адрес, по которому его нужно записать в память, будет помещен в регистр MAR, после чего будет инициирован цикл Write. В какой-то момент в ходе выполнения текущей инструкции содержимое регистра PC увеличивается, и он начинает указывать на следующую подлежащую выполнению инструкцию. Другими словами, как только завершится выполнение текущей инструкции, можно будет приступать к выборке следующей.
Рис. 3.2. Соединения между процессором и памятью
Компьютер не только пересылает данные между памятью и процессором, но и принимает их от входных устройств, а также отсылает выходным устройствам. Поэтому среди машинных команд имеются и команды для выполнения операций ввода-вывода.
Если возникает необходимость срочно обслужить некоторое устройство (например, когда устройство мониторинга в автоматизированном промышленном процессе обнаружит опасную ситуацию), нормальное выполнение программы может быть прервано. Для того чтобы немедленно отреагировать на эту ситуацию, компьютер должен прервать выполнение текущей программы. С этой целью устройство генерирует сигнал прерывания. Прерывание (interrupt) — это запрос, поступающий от устройства ввода-вывода, с требованием предоставить ему процессорное время. Для обслуживания этого устройства процессор выполняет соответствующую программу обработки прерывания. А поскольку ее выполнение может изменить внутреннее состояние процессора, перед обслуживанием прерывания нужно сохранить его состояние в памяти. Обычно в ходе этой операции сохраняется содержимое регистра PC, регистров общего назначения и некоторая управляющая информация. По завершении работы программы обработки прерывания состояние процессора восстанавливается и прерванная программа продолжает свою работу. Процессор со всеми его элементами (рис. 3.2) обычно реализуется в виде одной микросхемы, на которой располагается как минимум одно устройство кэш-памяти. Такие чипы называются VLSI (VLSI — аббревиатура от Very Large Scale Integration, что переводится как очень крупномасштабная интеграция).