Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ekzam.docx
Скачиваний:
8
Добавлен:
18.09.2019
Размер:
3.23 Mб
Скачать

32. Конвеєрна обробка команд

В процессе эволюции вычислительных систем производительность по­вышалась не только за счет применения более совершенной элементной базы, но и во многом за счет более рациональной организации процесса выполне­ния команд в компьютере. Мы уже' видели несколько примеров организаци­онных решений, способствовавших повышению эффективности работы сис­темы, — увеличение количества программно доступных регистров в процес­соре, использование сверхоперативной кэш-памяти. В последнее время

широкое распространение получило еще одно направление в организации процесса обработки команд — конвейерная обработка1.

Основы конвейерной организации обработки

В общих чертах конвейерная обработка команд в компьютере напоминает сборку изделия на конвейере в машиностроении. Эффективность сборочного кон­вейера основана на том, что изделие последовательно проходит через определен­ные рабочие позиции, причем операции на всех позициях выполняются одно­временно (но с разными экземплярами изделий)2.

Для того чтобы этот принцип можно было применить к выполнению ма­шинных команд, следует уяснить, что процесс обработки распадается на множе­ство этапов. Представленная на рис. 11.6 схема основного цикла обработки пре­дусматривает разбивку процесса на 10 подзадач, выполняемых последовательно. Совершенно очевидно, что уже в такой разбивке имеются предпосылки для со­вмещения выполнения отдельных задач во времени.

Рассмотрим самую простую схему разделения процесса обработки команды на два этапа — извлечение команды и выполнение команды. При выполнении команды существуют интервалы времени, когда обращение к памяти не произ­водится. Их можно использовать для извлечения следующей команды парал­лельно с выполнением текущей. Этот подход иллюстрируется схемой, представ­ленной на рис. 11.10,0. Конвейер имеет две независимые "рабочие позиции" — извлечения команды и выполнения команды. На первой позиции команда из­влекается из памяти « загружается в буфер. Когда вторая позиция будет свобод­на, первая передаст ей команду из буфера. Пока команда будет выполняться на второй позиции, на первой позиции можно использовать любой свободный цикл обращения к памяти и извлечь следующую команду, загрузив ее в буфер. Этот процесс называется извлечением команды с опережением (instruction prefetch) или наложением извлечения (fetch overlap). Очевидно, что такая организация процесса ускорит обработку команд. Если оба этапа реализуются за одно и то же время, цикл обработки команды сократится вдвое. По присмотревшись к про­цессу повнимательнее, мы обнаружим, что увеличения скорости обработки вдвое вряд ли можно достичь на практике (рис. 11.10,6). Тому есть две причины.

1. Время выполнения команды в общем случае больше времени извлечения. Вы­полнение команды может потребовать извлечения и сохранения в памяти зна­чений операндов и выполнения определенных операций с ними. Следовательно, "позиция извлечения" конвейера будет вынуждена определенное время про­стаивать, дожидаясь, пока заполненный ею буфер не освободится.

2. Приступая к выполнению команды условного перехода, нельзя заранее предсказать, каков будет адрес следующей выполняемой команды. Следова­тельно, позиция извлечения должна дождаться завершения выполнения те­кущей команды, получить от нее адрес следующей выполняемой команды, и только после этого можно будет приступить к ее извлечению.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]