Exploration architecturale de l'accumulateur de Kulisch
Abstract
Les sommes de produit utilisant le format flottant accumulent des erreurs d’arrondi pouvant
altérer la précision du résultat. Face à ce constat, Kulisch a proposé d’utiliser un accumulateur
interne suffisamment grand pour couvrir l’éventail d’exposants flottants, ce qui permet de ne
jamais arrondir les additions. Cette architecture n’a jamais aboutie dans les processeurs grand
public car elle était considérée comme trop lente et/ou utilisant trop de ressources. Cependant,
elle peut être intéressante dans le cadre des FPGAs pour deux raisons. D’une part, on peut y
utiliser un format flottant non standard, plus petit que 32 bits. La faible précision du format
peut être compensée par l’exactitude de l’accumulation dans une architecture dont la taille
devient raisonnable. D’autre part, l’addition de nombres flottants dans un tel accumulateur
est associative. Dans un flot de synthèse de haut niveau, ceci permet des optimisations qui
sont interdites en flottant standard. Ce travail compare donc plusieurs implémentations de
l’accumulateur de Kulisch, dont deux sont originales. Ces architectures sont implémentées dans
un générateur de C++ entièrement configurable produisant du code compatible avec VivadoHLS.
Les comparaisons effectuées sur FPGAs Xilinx Kintex 7 montrent une amélioration par rapport
à la solution de Kulisch en termes de surface et de rapidité. De plus, la comparaison avec des
implémentations flottantes classiques montre des compromis intéressants.
Origin : Files produced by the author(s)
Loading...