Организация вычислительных систем и сетей. Халабия Р.Ф. - 53 стр.

UptoLike

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

53
Instruction Pool (Reorder Buffer). Основное назначение этого модуля
предоставить возможность исполнения микроопераций в произвольном
порядке; в том числе, отличном от порядка их генерации.
В тот момент, когда микрооперации попадают в пул инструкций, порядок
их следования в потоке соответствует тому порядку, в котором они были
сгенерированы в результате декодирования IA-инструкций, поступивших на
вход модуля Fetch/Decode Unit, — никакого
изменения порядка следования
пока не произошло. Пул инструкций представляет собой последовательный
массив инструкций; при этом любая из этих инструкций может быть в любой
момент времени обработана модулем Dispatch/Execute Unit или Retire Unit — то
есть порядок обработки инструкций может быть произвольным и не зависит от
первоначального порядка, в котором инструкции поступили в пул. Именно
поэтому
пул инструкций иногда называют еще буфером переупорядочивания
инструкций (Reorder Buffer).
Dispatch/Execute Unit. Этот модуль проверяет состояние микроопераций,
содержащихся в пуле инструкций, исполняет их, если есть такая возможность,
и записывает полученные результаты обратно в пул инструкций (рис. 4.12).
Reservation Station — основной управляющий блок модуля
Dispatch/Execute Unit. Именно он планирует порядок исполнения и занимается
диспетчеризацией (распределением между вычислительными ресурсами)
микроопераций
. Этот блок последовательно просматривает пул инструкций в
поисках микроопераций, которые готовы к исполнениютаковыми считаются
микрооперации, у которых готовы (т.е. вычислены/загружены) исходные
операнды, — и передает (распределяет, диспетчеризует) их на исполнение
свободным вычислительными ресурсам, которые могут исполнить
микрооперацию. Результаты исполнения микрооперации записываются в пул
инструкций и хранятся там вместе
с самой микрооперацией до тех пор, пока
последняя не будет завершенаэтим занимается уже модуль Retire Unit.
Следует подчеркнуть, что жесткого, заранее предопределенного порядка
исполнения микроопераций не существуетони исполняются сразу же, как
только бывают готовы их операнды и свободен соответствующий
вычислительный ресурс. В том случае, если одному и тому же ресурсу может
быть одновременно передано на исполнение более одной микрооперации,
последние исполняются по принципу псевдо-FIFO (First In First Out) — первой
исполняется та микрооперация, которая раньше попала в пул инструкций.
Reservation Station имеет пять портов, через которые организуется обмен
данными с пятью вычислительными ресурсами. Поэтому Dispatch/Execute Unit
может за один такт исполнить максимум пять микроопераций. Однако при
реальной работе с постоянной
равномерной нагрузкой на процессор наиболее
типична ситуация, когда за один такт исполняется три микрооперации.
      Instruction Pool (Reorder Buffer). Основное назначение этого модуля —
предоставить возможность исполнения микроопераций в произвольном
порядке; в том числе, отличном от порядка их генерации.
      В тот момент, когда микрооперации попадают в пул инструкций, порядок
их следования в потоке соответствует тому порядку, в котором они были
сгенерированы в результате декодирования IA-инструкций, поступивших на
вход модуля Fetch/Decode Unit, — никакого изменения порядка следования
пока не произошло. Пул инструкций представляет собой последовательный
массив инструкций; при этом любая из этих инструкций может быть в любой
момент времени обработана модулем Dispatch/Execute Unit или Retire Unit — то
есть порядок обработки инструкций может быть произвольным и не зависит от
первоначального порядка, в котором инструкции поступили в пул. Именно
поэтому пул инструкций иногда называют еще буфером переупорядочивания
инструкций (Reorder Buffer).
      Dispatch/Execute Unit. Этот модуль проверяет состояние микроопераций,
содержащихся в пуле инструкций, исполняет их, если есть такая возможность,
и записывает полученные результаты обратно в пул инструкций (рис. 4.12).
      Reservation Station — основной управляющий блок модуля
Dispatch/Execute Unit. Именно он планирует порядок исполнения и занимается
диспетчеризацией (распределением между вычислительными ресурсами)
микроопераций. Этот блок последовательно просматривает пул инструкций в
поисках микроопераций, которые готовы к исполнению — таковыми считаются
микрооперации, у которых готовы (т.е. вычислены/загружены) исходные
операнды, — и передает (распределяет, диспетчеризует) их на исполнение
свободным вычислительными ресурсам, которые могут исполнить
микрооперацию. Результаты исполнения микрооперации записываются в пул
инструкций и хранятся там вместе с самой микрооперацией до тех пор, пока
последняя не будет завершена — этим занимается уже модуль Retire Unit.
      Следует подчеркнуть, что жесткого, заранее предопределенного порядка
исполнения микроопераций не существует — они исполняются сразу же, как
только бывают готовы их операнды и свободен соответствующий
вычислительный ресурс. В том случае, если одному и тому же ресурсу может
быть одновременно передано на исполнение более одной микрооперации,
последние исполняются по принципу псевдо-FIFO (First In First Out) — первой
исполняется та микрооперация, которая раньше попала в пул инструкций.
      Reservation Station имеет пять портов, через которые организуется обмен
данными с пятью вычислительными ресурсами. Поэтому Dispatch/Execute Unit
может за один такт исполнить максимум пять микроопераций. Однако при
реальной работе с постоянной равномерной нагрузкой на процессор наиболее
типична ситуация, когда за один такт исполняется три микрооперации.




                                     53