
5.10.3. Конфликты по управлению
В некоторых случаях причиной останова конвейера может служить отсутствие очередной команды в КЭШ-памяти. Данный факт предполагает обращение к ОЗУ и ожидание конвейером фазы выборки. Такая ситуация в вычислениях получила название «промах при обращении к КЭШ-памяти», а периоды простоя – «пузыри конвейера».
5.10.4. Накладные расходы перехода
В ходе выполнения команд безусловного перехода в фазе исполнения происходит выборка следующего за командой перехода управляющего слова. Однако, если переход должен быть выполнен в адресное пространство команды Ik, то управляющее слово, считанное в конвейер, будет иметь совершенно другой адрес. Возникает необходимость удаления ложного кода операции и замены его на код команды Ik. В результате конвейер совершает холостой ход и в вычислительном процессе происходит простой. Это время простоя получило название накладных расходов перехода.
Рассмотренная ситуация в двухступенчатом конвейере характеризуется временной диаграммой, приведенной на рис.5.54.
В четырехступенчатом конвейере накладные расходы перехода характеризуется временной диаграммой приведенной на рис.5.55.
Для сокращения потерь времени данного вида адрес перехода должен быть вычислен ранее. С этой целью усложняется блок выборки команд путем введения подсистемы анализа команд перехода (см.рис.5.56). В результате на шаге D2 формируются требуемые адреса и потери сокращаются на 1 такт.
5.10.5. Очередь команд и упреждающая выборка
Промахи при обращении к КЭШ-памяти и команды перехода обуславливают приостановку конвейера на 1 такт и более. Для минимизации потерь времени во многих процессорах используются сложные блоки выборки, которые извлекают команды из ОЗУ, еще до того как те понадобятся в вычислениях. Для хранения предварительно выбранных команд используется специальный блок, основу которого составляет дек-память. Это ЗУ функционирует аналогично стеку, однако выборка из дека выполняется с задержкой и порядок извлечения соответствует порядку записи. Таким образом, данное устройство представляет собой очередь команд с упреждающей выборкой информации из ОЗУ. Специальный блок, называемый блоком диспетчеризации, пересылает команды, расположенные в начале очереди, к блоку выполнения. В реальных системах блок диспетчеризации и декодирования совмещается, и весь модуль процессора имеет следующую архитектуру (рис.5.57):
В данной схеме F:\Db: не только осуществляет выборку из памяти, но и декодирование команд перехода. Такой принцип в процессорной технике получил название «ветвления с совмещением».
Следует заметить, что особенностью использования дека команд считается принцип ее заполнения при реализации переходов в цикле. Так, если в программе выполняется линейный участок программы, то очередь команд заполняется последовательно с учетом сдвига информации слева направо. Однако, при необходимости скачкообразного изменения адреса очередь должна быть сброшена и новый фрагмент программы записан в дек. В системе при этом тратится время на «проскальзывание» команд в очереди от блока F:\Db: к блоку декодирования. Общее время на «проскальзывание» составляет до 30% процессорного времени. Поэтому для устранения этих потерь блок F:\Db: модернизируется и в командах перехода реализует функцию заполнения очереди «начиная со старших регистров» дека (справа налево). И только после загрузки всей очереди нормальный режим ее заполнения восстанавливается вновь.