Краткая теория

 

Цель работы. Изучение влияния различных конфликтов на эффективность функционирования мультиконвейера.

 

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

При работе любого числа конвейеров могут возникать конфликты,êîòîðûåснижают их производительность. Как отмечалось ранее, существует три типа конфликтов:

1) По данным, появляющиеся, если выполнение одной команды зависит от результата предыдущей;

2) Структурные, которые возникают из-за занятости отдельных ресурсов (когда аппаратные средства не могут поддерживать выполнение операций в режиме с совмещением);

3) По управлению, которые возникают при наличии команд переходов и других операций, изменяющих значение счетчика команд.

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

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

В реальных системах конфликты по данным устраняются с помощью оптимизирующих компиляторов или аппаратных средств микропроцессоров, которые изменяют порядок выполнения команд в программе так, чтобы ñâÿçàííûå êîìàíäû áûëè îòäåëåíû äðóã îò äðóãà íà ñîîòâåòñòâóþùåå ðàññòîÿíèå â òàêòàõ. Другим путем ликвидации этих, а также структурных коллизий является расширение регистровой и кэш-памяти, в частности, создание регистровых файлов, у которых запись данных производится в разные ячейки.

В настоящей работе имеется возможность воспроизвести êîíôëèêò ïî äàííûì ìåæäó äâóìÿ ñîñåäíèìè êîìàíäàìè ïðîãðàììû, êîòîðûå èìåíóþòñÿ ñâÿçêîé. Òàêèå îïåðàöèè â ìîäåëè âûäåëÿþòñÿ êðàñíûì öâåòîì.  ñâÿçêó ìîãóò âõîäèòü êàê îáû÷íûå êîìàíäû, òàê è äëèííûå. Åñëè â íåêîòîðûé êîíâåéåð ïîñòóïàåò îäíà èç îïåðàöèé ñâÿçêè, âòîðàÿ îæèäàåò âî âõîäíîé î÷åðåäè, ïîêà ïåðâàÿ íå ïðîéäåò ïî êîíâåéåðó è íå ïîïàäåò â âûõîäíîé áóôåð.  ýòî âðåìÿ äëÿ çàïîëíåíèÿ êîíâåéåðîâ èç âõîäíîé î÷åðåäè âûáèðàþòñÿ ñëåäóþùèå êîìàíäû.

 ìîäåëè òàêæå ìîæåò воспроизводиться ñòðóêòóðíûé êîíôëèêò, êîãäà îïåðàíäû î÷åðåäíîé êîìàíäû îòñóòñòâóþò â êýø-ïàìÿòè. Òàêèå îïåðàöèè â ïðîãðàììå íàçûâàþòñÿ êîìàíäàìè çàïèñè/÷òåíèÿ èç ïàìÿòè. Îïåðàöèè çàïèñè ñ÷èòàþòñÿ áîëåå äëèííûìè, ÷åì ÷òåíèå, è îáðàáàòûâàþòñÿ â äëèííûõ êîíâåéåðàõ. Åñëè â êýø-ïàìÿòè íå îêàçûâàåòñÿ äàííûõ äëÿ âûïîëíåíèÿ î÷åðåäíîé êîìàíäû, òî îíà îæèäàåò âî âõîäíîì áóôåðå.  ýòî âðåìÿ äëÿ çàïîëíåíèÿ êîíâåéåðîâ èç î÷åðåäè âûáèðàþòñÿ ñëåäóþùèå êîìàíäû.