Недостаточное дублирование некоторых ресурсов

Одним из типичных примеров таких конфликтов служит конфликт из-за доступа к подсистеме памяти. Из табл. 30.1 видно, что в случае, когда операнды и команды находятся в одном запоминающем устройстве, начиная с такта 3, работу конвейера придется постоянно приостанавливать, поскольку различные команды в одном и том же такте обращаются к подсистеме памяти на считывание команды, выборку операнда, запись результата.

Борьба с конфликтами такого рода проводится путем увеличения количества однотипных функциональных устройств, которые могут одновременно выполнять одни и те же или схожие функции.

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

Конфликты из-за функциональных (исполнительных) устройств обычно сглаживаются введением в состав ядра процессора дополнительных блоков. Например, для обработки целочисленных данных имеется 4 АЛУ. При этом появляется возможность параллельной обработки информации в нескольких конвейерах.

Ядра процессоров, имеющие в своем составе более одного конвейера подготовки команд, принадлежащих одному программному потоку, называются суперскалярными.

Недостатком суперскалярных ядер процессоров является необходимость синхронного продвижения команд в каждом из конвейеров.

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

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

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

 

 








Дата добавления: 2015-09-29; просмотров: 833;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.