реклама на сайте
подробности

 
 
> Float-ядро для double операций, Как использовать Float-ядро для double операций
AlexeyT
сообщение Nov 16 2013, 11:18
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 45
Регистрация: 5-06-07
Пользователь №: 28 207



Ожидаем поставку процессора с ядром Cortex-M4F с аппаратно реализованными операциями с плавающей точкой (32-битные float).

Точности float для некоторых наших вычислений недостаточно, приходится использовать 64-битный double.

Вопрос - есть ли способ использовать float-сопроцессор для операций формата double? Хотя бы для самых простых - сложение и вычитание?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SII
сообщение Nov 20 2013, 05:35
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 13-07-10
Из: Солнечногорск-7
Пользователь №: 58 414



В третий раз повторяю: изучите матчасть, а заодно и математику. Никакого "флотовского умножителя" в природе не существует. Для выполнения операций с вещественными числами используются схемы сложения, умножения, деления и сдвига целых чисел, не имеющие никаких принципиальных отличий от аналогичных узлов, предназначенных для выполнения целочисленной арифметики. Более того, разрядность у вычислительных блоков ППЗ, поддерживающего лишь вещественную арифметику одинарной точности, меньше, чем у аналогичных блоков основного процессора. Например, обычный целочисленный умножитель в основном процессоре позволяет умножить два 32-разрядных целых числа с получением 64-разрядного результата, а пресловутый умножитель в ППЗ, который никакой не "флотовый", а опять-таки самый что ни на есть обычный целочисленный -- лишь два 24-разрядных целых числа (поскольку мантисса вещественных чисел одинарной точности содержит 24 бита). То же самое относится и к другим схемам.

Может быть, теоретически удалось бы извернуться и использовать ППЗ одинарной точности для обработки чисел двойной точности, вот только реализация всего этого будет принципиально такой же, как на целочисленном процессоре без всякого ППЗ, только намного более муторной. Например, для умножения кусков мантисс вещественных чисел двойной точности (размер 53 бита) в любом случае придётся мантиссы разбивать на части и выполнять умножение по кусочкам, а потом складывать промежуточные результаты. На 32-разрядном умножителе основного процессора потребуется 4 операции умножения (32*32 бита с 64-разрядным результатом), а на 24-разрядном умножителе ППЗ -- целых 25 (12*12 бит с 24-разрядным результатом), т.е. даже по одному умножению ППЗ будет проигрывать основному процессору более чем в шесть раз. А ведь требуются ещё сдвиги и сложения, которые на ППЗ реализовать тоже сложней, чем на основном процессоре (если вообще удастся такое сделать -- тут надо думать). Так что такая реализация арифметики двойной точности на ППЗ одинарной точности будет во много медленней, чем её реализация на основном процессоре -- и, что весьма интересно, при этом никакие "плавающие" возможности ППЗ реально использовать невозможно, они лишь мешают.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- AlexeyT   Float-ядро для double операций   Nov 16 2013, 11:18
- - scifi   Цитата(AlexeyT @ Nov 16 2013, 15:18) Вопр...   Nov 16 2013, 12:18
- - fatlortroll   Цитата(AlexeyT @ Nov 16 2013, 15:18) Вопр...   Nov 16 2013, 17:25
- - Rst7   QUOTE Вопрос - есть ли способ использовать float-с...   Nov 16 2013, 21:51
- - vlad_new   А я не знал что незяяяяя. Взял и включил сопр. В и...   Nov 17 2013, 02:01
|- - AlexeyT   Цитата(vlad_new @ Nov 17 2013, 06:01) А я...   Nov 17 2013, 07:14
|- - vlad_new   Цитата(AlexeyT @ Nov 17 2013, 11:14) Эвон...   Nov 17 2013, 14:48
- - SII   Как видим, для деления вызывается подпрограмма, чт...   Nov 18 2013, 06:37
- - etoja   Цитата(AlexeyT @ Nov 16 2013, 15:18) Ожид...   Nov 18 2013, 12:19
- - Golikov A.   число дабл - это мантисса + порядок. если его ра...   Nov 18 2013, 17:33
|- - AlexeyT   Цитата(etoja @ Nov 18 2013, 16:19) Вы в с...   Nov 18 2013, 19:37
|- - jcxz   Цитата(Golikov A. @ Nov 18 2013, 23:33) я...   Nov 19 2013, 06:53
- - Golikov A.   ну вот так как-то (А+B ) * (D + C) = AD + BD + AC...   Nov 19 2013, 08:32
|- - jcxz   Цитата(Golikov A. @ Nov 19 2013, 14:32) н...   Nov 19 2013, 08:50
|- - SII   Цитата(Golikov A. @ Nov 19 2013, 12:32) н...   Nov 19 2013, 10:18
|- - DASM   Цитата(SII @ Nov 19 2013, 14:18) если для...   Nov 19 2013, 10:43
|- - SII   Цитата(DASM @ Nov 19 2013, 14:43) ARM раз...   Nov 19 2013, 13:55
- - Golikov A.   я не ошибся, я имел ввиду другое двойная точность...   Nov 19 2013, 10:25
- - Golikov A.   а я о теоретической применимости 32 битного флотов...   Nov 19 2013, 16:28
- - Golikov A.   ну вот теперь понятно... а 32 битный умножитель ц...   Nov 20 2013, 07:05
|- - Сергей Борщ   QUOTE (Golikov A. @ Nov 20 2013, 10:05) в...   Nov 20 2013, 08:21
|- - SII   Цитата(Golikov A. @ Nov 20 2013, 11:05) а...   Nov 20 2013, 08:54
- - Golikov A.   в лоб без оптимизации [32]*[32] дает [32].... имее...   Nov 20 2013, 11:40
- - Сергей Борщ   QUOTE (Golikov A. @ Nov 20 2013, 14:40) б...   Nov 20 2013, 12:54


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th August 2025 - 15:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01394 секунд с 7
ELECTRONIX ©2004-2016