Конвейер архитектуры K8

 

Принципиально конвейер в архитектуре K8 работает следующим образом.

На первом этапе блок выборки инструкций выбирает из кэш-памяти данные и выделяет в них инструкции. Как правило, удается выбрать три инструкции за такт. Параллельно блок предсказания переходов в этом же такте определяет адрес блока, с которого начнется выборка в следующем такте.

На втором такте работы конвейера инструкции распределяются по трем блокам декодирования инструкций.

С этого момента процессор переключается в режим работы с внутренними микроинструкциями. Далее начинается техническое волшебство. Все дальнейшие операции конвейера основаны на том, что обработка микроопераций проходит тройками инструкций (линия­ми). С логической точки зрения конвейер К8 обрабатывает именно линии, в которые упаковываются тройки микроопераций. На данный этап в нормальных условиях уходит пять тактов конвейера.

Сгенерированные линии по одной за такт поступают в устройство накопления очереди (емкостью 24 линии).

Декодированные микрооперации в произвольном порядке поступают в блок целочисленных вычислений (ALU) и блок вычислений с плавающей точкой (FPU). Однако инструкции, выполнение которых зависит от еще не обработанных данных, ждут своей очереди.

Результаты исполненных блоками ALU/FPU микроопераций отсылаются обратно в устройство накопления и упаковываются в те же линии, в которых они прибыли в очередь. На каждом такте проверяется корректность операций и сортировка очереди в зависимости от результатов. Когда все микрооперации линии оказываются исполненными, полученные результаты записываются в регистры, а линия сбрасывается.

В идеальных условиях полный цикл конвейера занимает 10-17 тактов, причем за каждый такт исполняется по три микрооперации, что составляет от 1,5 до 3 типовых инструкций системы команд x86.

К прочим особенностям архитектуры K8 относятся: интегрированный контроллер памяти, последовательная системная шина HyperTransport, эксклюзивная модель организации кэш-памяти.