Почему используется такой «странный» размер регистра? Есть ли какая-либо документация о том, почему для этих регистров нежелательно использовать 64 или 128 бит?
Почему регистры Intel x87 имеют ширину 80 бит?
Ответы (1)
На странице Википедии стандарта IEEE 754-1985 есть довольно хорошее объяснение относительно 80-битный расширенный формат:
«Стандарт также рекомендует использовать расширенный формат (ы) для выполнения внутренних вычислений с более высокой точностью, чем требуется для конечного результата, чтобы минимизировать ошибки округления».
Число двойной точности с плавающей запятой представлено в 64 битах. Вам понадобится еще несколько бит, чтобы получить более высокую точность для промежуточных результатов, но было бы излишним использовать 128-битный тип, когда вам нужны только 64 бита в конечном результате.
80 бит — это разумно четное число битов, превышающее 64 бита.
Учтите, что шина данных в то время, когда были установлены эти стандарты, была 8- или 16-битной, а не 32- или 64-битной, как сегодня. Если бы стандарт был написан сегодня, 96 бит были бы более разумным числом, или, возможно, данные передавались бы как 128 бит, даже если бы все эти биты не использовались в вычислениях.