Jump to content
    

Есть опыт верификации сопроцессора, работающего с числами в стандарте IEEE 754?

Приветствуются любые соображения по стандарту "плавующей" точки при аппаратной реализации работы с денормализованными числами.

Share this post


Link to post
Share on other sites

Приветствуются любые соображения по стандарту "плавующей" точки при аппаратной реализации работы с денормализованными числами.

 

когда то при мне такое делали, реализовывали программную плавающую точку. В качестве тестов был выбран очень простой метод. Рандомно генерились числа и проверялись основные арифметические правила.

ab=ba

a(b+c)=ab+ac=ba+ca=(b+c)a

ну и так далее. Потом это просто запускалось с остановками и записями тех чисел, что не срослись, с начало выдавались ошибки, потом реже, последняя ошибка была найдена после нескольких часов удачных перемножений. Теперь ошибок вроде нет:)...

Если у вас полный сопроцессор, то можно суда еще сложение, вычитание, деление запихать и так далее... ну и считать, считать, считать...

Share this post


Link to post
Share on other sites

Приветствуются любые соображения по стандарту "плавующей" точки при аппаратной реализации работы с денормализованными числами.

 

когда то при мне такое делали, реализовывали программную плавающую точку. В качестве тестов был выбран очень простой метод. Рандомно генерились числа и проверялись основные арифметические правила.

ab=ba

a(b+c)=ab+ac=ba+ca=(b+c)a

ну и так далее. Потом это просто запускалось с остановками и записями тех чисел, что не срослись, с начало выдавались ошибки, потом реже, последняя ошибка была найдена после нескольких часов удачных перемножений. Теперь ошибок вроде нет:)...

Если у вас полный сопроцессор, то можно суда еще сложение, вычитание, деление запихать и так далее... ну и считать, считать, считать...

 

Такие простые вещи уже отработаны.

Есть си'шная функция, которая эмулирует программно работу сопроцессора, и затем хардверный результат сравнивается с ее результатом.

 

Тут больше вопрос к работе с денормализованными числами и правильностью округления, а также специфичные проблемы стандарта IEEE 754 (Например сколько будет из -0 вычесть -0 или +0 сложить с -0)

 

Те не попадались шаблоны данных для проверки таких вешей? А затем можно в бесконечном цикле рандомно проверять арифметику.

 

В идеале, если такие шаблоны сразу в стандарте команд ARM'a. Ну это мечты... :biggrin:

Share this post


Link to post
Share on other sites

Приветствуются любые соображения по стандарту "плавующей" точки при аппаратной реализации работы с денормализованными числами.

 

когда то при мне такое делали, реализовывали программную плавающую точку. В качестве тестов был выбран очень простой метод. Рандомно генерились числа и проверялись основные арифметические правила.

ab=ba

a(b+c)=ab+ac=ba+ca=(b+c)a

ну и так далее. Потом это просто запускалось с остановками и записями тех чисел, что не срослись, с начало выдавались ошибки, потом реже, последняя ошибка была найдена после нескольких часов удачных перемножений. Теперь ошибок вроде нет:)...

Если у вас полный сопроцессор, то можно суда еще сложение, вычитание, деление запихать и так далее... ну и считать, считать, считать...

 

Такие простые вещи уже отработаны.

Есть си'шная функция, которая эмулирует программно работу сопроцессора, и затем хардверный результат сравнивается с ее результатом.

 

Тут больше вопрос к работе с денормализованными числами и правильностью округления, а также специфичные проблемы стандарта IEEE 754 (Например сколько будет из -0 вычесть -0 или +0 сложить с -0)

 

Те не попадались шаблоны данных для проверки таких вешей? А затем можно в бесконечном цикле рандомно проверять арифметику.

 

В идеале, если такие шаблоны сразу в стандарте команд ARM'a. Ну это мечты... :biggrin:

 

 

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...