Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
47
Добавлен:
18.03.2015
Размер:
273 Кб
Скачать
☆

Команды считываются из оперативной памяти по одной в специальный регистр команд (РК). В основном алгоритме работы вычислительного ядра машины фон Неймана для современных компьютеров величина приращения значения СК будет равна не единице, а длине команды в байтах. В компьютерах на базе всех Intelсовместимых процессоров, команды имеют неодинаковую длину. В результате процессор должен по виду операции определить её длину в байтах и прибавить к СК.

Основной алгоритм обеспечивает реализацию последовательно расположенных в ОЗУ команд. На практике требуется организовывать повторение действий (циклы) или выбор различных действий в зависимости от полученного результата (ветвление). Для того чтобы можно было нарушить естественный последовательный порядок выполнения программы, используются специальные команды — команды безусловного и условного перехода.

В первом случае переход происходит всегда, а во втором — только при выполнении определённого условия. Пусть, например, выбранная команда, находящаяся в РК, является командой безусловного перехода. Тогда её несколько младших разрядов служат адресом ячейки ОЗУ для следующей команды. Для осуществления перехода достаточно перенести код из этих разрядов в регистр СК, и тогда следующие команды будут выбраны уже из другого места программы.

Кроме того, в современных компьютерах применяется т.н. конвейеризация. При выполнении каждой команды

компьютер проделывает определённые стандартные

действия (см. основной алгоритм). В современных

компьютерах для каждого отдельного выделенного действия в процессоре предусмотрено отдельное

устройство. Благодаря узкой специализации таких устройств они способны очень быстро выполнять

отдельное действие, а затем передавать результат следующему устройству. Пока следующие устройства заканчивают действие, первое из устройств

освободилось и способно начать выполнение другой

команды и т.д. Теоретически цепочка из пяти устройств способна выполнять до пяти команд, при этом первая

будет уже завершаться, обработка пятой только

начнется, а выполнение 2-й – 4-й команд будет

находиться в различных промежуточных состояниях.

Рассмотрим простейший пример организации конвейерного выполнения команд программы. Предположим, что все этапы выполнения команды абсолютно независимы и выполняются за одинаковое время (реально это не всегда так). Разобьем выполнение команды на следующие 5 этапов:

•ВК — выборка команды из памяти;

•ДК — декодирование команды;

•ВО — выборка операндов;

•РО — реализация операции;

•ЗР — запоминание результата.

При сделанных допущениях выполнение пяти последовательных команд, первая из которых имеет условный номер n, можно показать так:

Из таблицы видно, что преимущества конвейера проявляются не сразу: первые 4 такта имеется хотя бы одно устройство, которое простаивает. Только начиная с 5-го такта конвейер начинает функционировать на полную мощность, и каждый такт сопровождается завершением выполнения одной команды.

На практике возникают следующие трудности:

1.Не все команды требуют одинакового времени (например, некоторые берут данные из ОП, а некоторые — из регистров, что значительно быстрее); разные команды требуют для исполнения разное число тактов; поэтому некоторые устройства конвейера в некоторых тактах будут простаивать.

2.Наиболее критичной операцией конвейера является обращение к ОП. Две команды не могут одновременно обращаться к ОП (в частности, этапы ВК и ВО в примере не должны находиться в одном столбце).

3.Последующим командам могут потребоваться

результаты предыдущих.

4.Для выхода на режим «полной загрузки» конвейера требуется некоторое время, причём не только с

момента включения процессора: некоторые команды

(например, команды переходов) изменяют адрес исполняемой команды, нарушая тем самым

нормальный процесс конвейеризации, что вынуждает заново перезапускать конвейер.

5.Отдельно взятая команда даже при полностью

благоприятном стечении обстоятельств в конвейере будет выполняться несколько дольше, чем если бы она выполнялась отдельно: в организации работы конвейера имеют место некоторые «накладные временные расходы».

Вычислительные системы принято классифицировать

по двум принципам: является ли поток команд и поток данных одиночным или множественным. Классическая

модель фон Неймана выполняет команды программы

последовательно одну за другой, причём каждая команда обрабатывает только одно число (в крайнем

случае, производя действие между ним и последним результатом). Такой способ обработки называется

ОКОД — Одиночный поток Команд и Одиночный поток

данных. Конвейерные вычислительные системы, способные одновременно выполнять несколько команд, обозначаются МКОД — Множественный поток Команд и Одиночный поток данных.

Соседние файлы в папке лекции