Организация микропроцессорных систем. Учебное пособие. Могнонов П.Б. - 149 стр.

UptoLike

Составители: 

которой привело бы к максимальному сокращению графа потоков данных выполняемой
программы. Из-за невозможности определения такой микрокоманды, используется алгоритм
планирования имитирующая модель «первый пришелпервый обслужен» (FIFO).
Команды, которые исполняются не в той последовательности, которая предписана
программой, следует в конечном итоге расположить в должной последовательностииначе
процессор не всегда сможет получить правильные результаты. Пул команд ROB сохраняет
статус исполнения и результаты каждой микрокоманды. Микрокоманда выводится, и
результаты заносятся в архитектурные регистры и память только после того, как станет
известно, что предыдущие микрокоманды завершились. Это выглядит так: после того как
команды были декодированы и регистры переименованы, микрокоманды помещаются в ROB
R (циклическая очередь FIFO) последовательно, в определяемом программой порядке. Это
происходит тогда, когда эти же самые микрокоманды пересылаются в станцию RS.
Последовательный процесс упорядочения очень важен для восстановления
программного порядка микрокоманд после исполнения с изменением последовательности.
Это обеспечивает упорядоченное обновление архитектурных регистров и ячеек памяти после
завершения исполнения.
Тот факт, что и ROB R, и RS получают одни и те же микрокоманды в одно и то же
время из декодеровважный элемент архитектуры Р6. Пока ROB R следит, за программной
последовательностью микрокоманд, RS сохраняет их в своем буфере и определяет момент,
когда конкретная микрокоманда будет готова к пересылке в соответствующее устройство
исполнения.
Выступая в роли резервуара, буфер микрокоманд хранит группу декодированных
команд с тем, чтобы исполнительные блоки продолжали работать, даже если декодеры
"зависали". И наоборот, если устройства исполнения заняты, станция RS предоставляет
декодерам возможность продолжить работу. В редких случаях, когда буфер микрокоманд
станции RS заполняется, блок декодирования может приостановить свою работу.
Станция RS, работающий согласованно с буфером ROB, – вот механизм,
позволяющий процессору исполнять программы с измененной последовательностью команд.
По существу, процессор освобождается от необходимости исполнять каждую команду в той
последовательности, которая предписывается программой, зато он может рассмотреть
несколько ожидающих своей очереди микрокоманд и определить, какая из них наилучшим
образом подходит для исполнения в данный момент времени. Принятое решение
основывается на таких факторах: доступность операндов, не занятость нужных
исполнительных блоков и устранения взаимозависимостей.
Поскольку система команд х86 содержит множество команд перехода, многие
микрокоманды также являются переходами. В типичной программе до 10% команд могут
быть безусловными переходами, и еще 10-20 % представлять собой условные переходы.
Безусловные переходы проблем не вызывают; процессор "уверен", что они будут
выполнены, и поэтому просто начинает выборку команд по указанному адресу.
Алгоритм, реализованный в буфере переходов для условных команд, обеспечивает
более чем 93% точность предсказания. При неправильном прогнозе применен следующий
подход. Микрокомандам, следующие за микрокомандой перехода, еще в упорядоченной
части конвейера ставятся в соответствии адрес следующей команды и предполагаемый адрес
перехода для спекулятивного выполнения. После вычисления перехода устройством
выполнения переходов реальная ситуация сравнивается с предсказанным адресом. Если они
совпадают, то проделанная работа оказывается полезной, спекулятивным микрокомандам,
следующим за микрокомандой перехода, присваивается статус «выполнено», а сама
микрокоманда перехода удаляется из пула команд. При несовпадении адресов устройство
выполнения переходов изменяет статус всех микрокоманд, засланных в пул после
микрокоманды перехода, с целью их удаления. При этом правильный адрес перехода
направляется в буфер переходов, который перезапускает весь конвейер с нового адреса.
которой привело бы к максимальному сокращению графа потоков данных выполняемой
программы. Из-за невозможности определения такой микрокоманды, используется алгоритм
планирования имитирующая модель «первый пришел – первый обслужен» (FIFO).
       Команды, которые исполняются не в той последовательности, которая предписана
программой, следует в конечном итоге расположить в должной последовательности – иначе
процессор не всегда сможет получить правильные результаты. Пул команд ROB сохраняет
статус исполнения и результаты каждой микрокоманды. Микрокоманда выводится, и
результаты заносятся в архитектурные регистры и память только после того, как станет
известно, что предыдущие микрокоманды завершились. Это выглядит так: после того как
команды были декодированы и регистры переименованы, микрокоманды помещаются в ROB
R (циклическая очередь FIFO) последовательно, в определяемом программой порядке. Это
происходит тогда, когда эти же самые микрокоманды пересылаются в станцию RS.
       Последовательный процесс упорядочения очень важен для восстановления
программного порядка микрокоманд после исполнения с изменением последовательности.
Это обеспечивает упорядоченное обновление архитектурных регистров и ячеек памяти после
завершения исполнения.
       Тот факт, что и ROB R, и RS получают одни и те же микрокоманды в одно и то же
время из декодеров – важный элемент архитектуры Р6. Пока ROB R следит, за программной
последовательностью микрокоманд, RS сохраняет их в своем буфере и определяет момент,
когда конкретная микрокоманда будет готова к пересылке в соответствующее устройство
исполнения.
       Выступая в роли резервуара, буфер микрокоманд хранит группу декодированных
команд с тем, чтобы исполнительные блоки продолжали работать, даже если декодеры
"зависали". И наоборот, если устройства исполнения заняты, станция RS предоставляет
декодерам возможность продолжить работу. В редких случаях, когда буфер микрокоманд
станции RS заполняется, блок декодирования может приостановить свою работу.
       Станция RS, работающий согласованно с буфером ROB, – вот механизм,
позволяющий процессору исполнять программы с измененной последовательностью команд.
По существу, процессор освобождается от необходимости исполнять каждую команду в той
последовательности, которая предписывается программой, зато он может рассмотреть
несколько ожидающих своей очереди микрокоманд и определить, какая из них наилучшим
образом подходит для исполнения в данный момент времени. Принятое решение
основывается на таких факторах: доступность операндов, не занятость нужных
исполнительных блоков и устранения взаимозависимостей.
       Поскольку система команд х86 содержит множество команд перехода, многие
микрокоманды также являются переходами. В типичной программе до 10% команд могут
быть безусловными переходами, и еще 10-20 % представлять собой условные переходы.
Безусловные переходы проблем не вызывают; процессор "уверен", что они будут
выполнены, и поэтому просто начинает выборку команд по указанному адресу.
       Алгоритм, реализованный в буфере переходов для условных команд, обеспечивает
более чем 93% точность предсказания. При неправильном прогнозе применен следующий
подход. Микрокомандам, следующие за микрокомандой перехода, еще в упорядоченной
части конвейера ставятся в соответствии адрес следующей команды и предполагаемый адрес
перехода для спекулятивного выполнения. После вычисления перехода устройством
выполнения переходов реальная ситуация сравнивается с предсказанным адресом. Если они
совпадают, то проделанная работа оказывается полезной, спекулятивным микрокомандам,
следующим за микрокомандой перехода, присваивается статус «выполнено», а сама
микрокоманда перехода удаляется из пула команд. При несовпадении адресов устройство
выполнения переходов изменяет статус всех микрокоманд, засланных в пул после
микрокоманды перехода, с целью их удаления. При этом правильный адрес перехода
направляется в буфер переходов, который перезапускает весь конвейер с нового адреса.