Основы вычислительных конвейеров, страница 6

Существуют способы повышения производительности с помощью «опорного преобразователя», так называемая «каскадная реализация» и др., но все это будет связано с резким ростом аппаратных затрат. И при этом остро стоит проблема помех, а, значит, надо либо вводить задержки (управляемые), либо применять другие искусственные методы борьбы с помехами.

4.1.5 Временная организация и управление работой конвейеров.

Первое условие эффективности использования конвейера – своевременность подачи на его вход исходных данных (иначе ступени начнут работать вхолостую => падение производительности). Однако, кроме этого, в конвейере надо тщательно осуществить диспетчеризацию, т.е. определить и выдержать те моменты времени,  в которые каждая входная величина, промежуточное число, коэффициент вводятся на ступени, чтоб гарантировать и производительность, и отсутствие внутренних конфликтов.

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

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

1)  время исполнения для всех ступеней является кратным некоторому базовому периоду синхронизации;

2)  если вычисление в конвейере начато, то его временная схема использования ступеней фиксирована.

Второе ограничение сильнее первого, но оно достаточно «естественно»: как только данные в систему поступили, то должно быть ясно до конца, что с ними надо сделать.

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

4.2. Конвейеризация в структурах машин ОКОД.

Конвейеризация в ОКОД насчитывает несколько десятилетий. Была она, например, в БЭСМ-6. Правда, очень робкой.

Правда, появление машин класса ОКМД, потоковых машин с ориентацией на обработку сигналов отвлекло… Там все динамично развивалось, а, кроме того, диспетчеризация легла на плечи системных программистов.

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

Это приводит к конвейерам более сложным и высоко самореализующимся (к «асинхронным и многофункциональным с динамической диспетчеризацией инициаций»).

От программиста скрывают в системе команд конвейерность по двум причинам:

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

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

Конечно, не все удается от программиста скрыть. Есть два класса эффектов, которые если и не учитываются программистом, то все же видны ему:

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