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

4.3. Конвейерные процессоры

Разработчики компьютеров стремятся увеличивать быстродействие и, следовательно, производительность процессоров в той степени, в которой эти характеристики процессоров могут быть улучшены в данных исторических условиях: при существующих и прогнозируемых ограничениях на площадь сверхбольших интегральных схем; при ограничениях на минимальных размер элементов, из которых строятся интегральные схемы; при известных оценках различных архитектурных решений процессоров – эффективности различных систем команд, способов адресации данных, многообразий типов данных и т.д. Главным препятствием в повышении быстродействии процессоров является большое время обращения к оперативной памяти, составляющее сейчас, как правило, от 5 до 20 нс. Еще в 1959 году при разработке компьютера IBM Stretch было предложено разделить процесс выполнения команд на два процесса: выборку команд из оперативной памяти в буфер выборки с упреждением и выполнение команд, выбираемых из регистров буфера, в порядке, определяемом программой. При этом процесс выборки команд в буфер отделялся от процесса выполнения команд с помощью буфера, в котором собиралось несколько команд, если оперативная память работала быстрее процессора, и оставалась одна команда, когда процессор работал быстрее оперативной памяти. Идея многоэтапной обработки команд получила дальнейшее развитие и привела к появлению конвейерных процессоров.

К онвейерные процессоры. Конвейерный процессор – совокупность операционных устройств, обеспечивающих поэтапный процесс выполнения команд программы, который может состоять из 2, 3, 4 и более этапов. Каждый этап выполнения команды реализуется самостоятельным операционным устройством, состоящим из операционного и управляющего автоматов и обеспечивающего выполнение только одного этапа выполнения команды: выборку команды, дешифрирование кода операции, выборку первого операнда операции, выборку второго операнда операции и т.д. На рис. 4.6, а представлена временная диаграмма 5-этапного процесса выполнения команд с номерами 1, 2, 3, … совокупностью операционных устройств ОУ1, ОУ2, …, ОУ5, образующих конвейерный процессор (рис 4.6, ). Операционные

устройства процессора ОУ1, ОУ2, …, ОУ5 выполняют следующие функции. Устройство ОУ1 выбирает команды в порядке их размещения в памяти и передает выбранную команду для ее исполнения в устройство ОУ2. По окончании выборки команды с номером 1 устройство ОУ1 начинает выбирать следующую команду с номером 2, и т.д. Устройство ОУ2 декодирует код операции поступившей команды, определяет тип выполняемой операции и передает адреса операндов и тип операции в следующее устройство ОУ3. Устройство ОУ3 обеспечивает выборку операндов, хранимых в основной памяти компьютера – в сверхоперативной памяти или в оперативной памяти. Выбранные операнды, адреса операндов, адрес команды и прочие данные о команде передаются для выполнения в следующее устройство ОУ4, которое служит для выполнения заданной командой операции: сложить, вычесть, умножить и т.д. После выполнения в устройстве ОУ4 заданной операции результат операции и все адресные данные поступают в устройство ОУ5, которое обеспечивает запись результата в заданные регистры общего назначения или в сверхоперативную и оперативную память компьютера. Таким образом обеспечивается параллельная во времени обработка линейной последовательности команд с номерами 1, 2, 3, …

Однако выполнению линейной последовательности команд препятствуют следующие обстоятельства: 1) наличие в программе команд условного перехода, реагирующих на признак результата операции (нулевой, положительный, отрицательный); 2) наличие в программах операционной системы команд условного перехода, реагирующих на признак готовности внешних устройств и команд ввода-вывода (выключено, работает, хранит прерывание, доступно); 3) возможность записи результата операции в память в то время, когда последующие команды только проходят первые этапы конвейерной обработки. По этим причинам исполнительные адреса команд, операндов и результатов передаются в конвейерных процессорах с первого этапа обработки команд до последнего этапа записи результата. Если в конвейере возникает одна из представленных ситуаций – условный переход или запись результата по адресу, совпадающему с ранее поступившим исполнительным адресом, производится сброс конвейера, чтобы исключить возможность некорректной обработки данных.

Таким образом конвейерный процессор – способ повышения пропускной способности процессора за счет использования последовательно соединенных операционных устройств. Количество таких устройств в составе процессора изменяется от пяти до двенадцати, в результате чего процессор может параллельно во времени обрабатывать от пяти до двенадцати команд программы. Если длительность такта процессора составляет Т нс и конвейер разделяется на n этапов, то длительность выполнения команды равна нс, а пропускная способность конвейера, определяемая предельным количеством команд, обрабатываемых за секунду, будет равна 1000/Т миллионов команд в секунду. Дополнительно отметим, что здесь речь идет только о пропускной способности конвейера, но не о фактической производительности конвейера, которая зависит от вероятностей появления различных команд в смеси задач, выполняемых компьютером, и от информационной связанности в программах, т.е. о записи результатов в память, когда последующие команды только начали обрабатываться на конвейере.

Суперскалярные процессоры. Термин суперскалярный процессор появился в 1987 году и определяет структуру процессора более производительную, чем конвейерный процессор, построенный на основе схемы последовательной обработки совокупности команд (см. рис. 4.6, б). Пример структуры суперскалярного процессора приведен на рис. 4.7. Этот процессор состоит из девяти операционных устройств ОУ1, …, ОУ9, пять из которых ОУ4, …, ОУ8 выполняют самые продолжительные этапы выполнения команд – операции загрузки слов из памяти в регистры общего назначения, записи слов из регистров общего назначения в память, операции над целыми числами и операции над числами с плавающей запятой. Именно потому, что операционные устройства ОУ4, …, ОУ8 реализуют самые продолжительные операции над данными, сумма вероятностей параллельной работы нескольких устройств из числа ОУ4, …, ОУ8 оказываются весьма значительной и лежит в диапазоне

1 < pi < 5, (4.2)

г де 5 – предельное количество устройств, реализующих в схеме рис. 4.7 операции над

данными. Естественно, что трансляторы с языков высокого уровня должны обеспечивать оптимизацию машинных кодов программ, чтобы по возможности исключить информационные связи между командами программы и увеличить сумму вероятностей параллельной работы устройств обработки данных (4.2).

Е ще один вариант схемы суперскалярного процессора представлен на рис. 4.8, который соответствует процессору класса Pentium, производимых корпорацией Intel. Выборка команд производится парами. При этом одна команда поступает на выполнение в главный конвейер, а вторая команда – в конвейер целочисленной арифметики. Существуют достаточно сложные правила для определения совместимости команд, которые должны выполняться параллельно во времени. Если команды в информационном отношении несовместимы, то выполняется только одна команда, которая использует ресурсы главного конвейера. Оставшаяся команда будет выполняться в паре со следующей командой, выбираемой из памяти. Для обеспечения высокопроизводительной работы процессора используются специальные компиляторы, обеспечивающие формирование пар команд, которые могли быть выполнены параллельно во времени. Измерения производительности компьютеров Pentium показали, что производительность компьютеров Pentium увеличивается почти в два раза при выполнении задач целочисленной арифметики, что является хорошим подтверждением эффективности конвейерной обработки программ.