ВУЗ:
Составители:
124
7.8. Разработка модели сложения двух чисел с плавающей запятой
Модель сложения двух чисел с плавающей запятой разрабатывается в следую-
щей последовательности:
1) выделить экспоненты обоих чисел;
2) сравнить экспоненты и изменить, если необходимо, должным образом поря-
док большей и меньшей экспонент;
3) сдвинуть точку в числе с меньшей экспонентой для их уравнения;
4) сложить дроби;
5) нормализовать результат;
6) проверить экспоненту на переполнение и сформировать экспоненту и дробь
результата.
Каждый из этих шагов может быть выполнен отдельным вычислительным бло-
ком, где каждый отдельный операнд передается от блока к блоку для выполнения
операции сложения. Очевидно, что необходимо выполнять до шести сложений одно-
временно.
Координацию работы различных блоков можно осуществлять несколькими
способами. Обычно управление конвейерной обработкой является синхронным, то
есть: время, отпущенное на выполнение каждого шага конвейера t, постоянно и фик-
сировано. В каждые t единиц времени результат каждого блока перемещается по кон-
вейеру, чтобы стать входом для следующего блока. Однако обработка может быть
приостановлена без необходимости при условии, если требуемое время будет изме-
няться от блока к блоку, а также внутри данного блока для различных входов. Напри-
мер, для выполнения шага нормализации результата при сложении чисел с плаваю-
щей запятой может потребоваться различное количество времени в зависимости от
того, на сколько разрядов необходимо произвести нормализующий сдвиг и в какую
сторону.
В асинхронном конвейере в среднем процесс обработки может быть ускорен,
если ввести сигнал завершения каждого шага конвейерной обработки к готовности
передать свой операнд и получить новый.
Результат шага конвейерной обработки может быть послан на следующий шаг
(k + 1), как только шаг k выполнен, а блок (k + 1) свободен.
Рассмотрим произвольный шаг конвейерной обработки. Пусть требуется по-
местить результат на входы и выходы в то время, когда они используются. Такая си-
туация предполагает наличие регистров: каждый блок использует значение своего
входного (буферного) регистра для вычисления значения выходного (буферного) ре-
гистра. Очевидно, что пока входной регистр блока не будет очищен путем пересылки
содержимого во входной регистр следующего блока, новое входное значение не мо-
жет появится в его входном регистре. Таким образом, для управления блоком k кон-
вейера необходимо знать, когда выполняются следующие условия:
- входной регистр заполнен;
- входной регистр пуст;
- выходной регистр заполнен;
- выходной регистр пуст;
- блок занят;
- блок свободен;
Страницы
- « первая
- ‹ предыдущая
- …
- 123
- 124
- 125
- 126
- 127
- …
- следующая ›
- последняя »