ВУЗ:
Составители:
которой привело бы к максимальному сокращению графа потоков данных выполняемой
программы. Из-за невозможности определения такой микрокоманды, используется алгоритм
планирования имитирующая модель «первый пришел – первый обслужен» (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% точность предсказания. При неправильном прогнозе применен следующий подход. Микрокомандам, следующие за микрокомандой перехода, еще в упорядоченной части конвейера ставятся в соответствии адрес следующей команды и предполагаемый адрес перехода для спекулятивного выполнения. После вычисления перехода устройством выполнения переходов реальная ситуация сравнивается с предсказанным адресом. Если они совпадают, то проделанная работа оказывается полезной, спекулятивным микрокомандам, следующим за микрокомандой перехода, присваивается статус «выполнено», а сама микрокоманда перехода удаляется из пула команд. При несовпадении адресов устройство выполнения переходов изменяет статус всех микрокоманд, засланных в пул после микрокоманды перехода, с целью их удаления. При этом правильный адрес перехода направляется в буфер переходов, который перезапускает весь конвейер с нового адреса.
Страницы
- « первая
- ‹ предыдущая
- …
- 147
- 148
- 149
- 150
- 151
- …
- следующая ›
- последняя »