Serait-il théoriquement possible d'accélérer les processeurs modernes si l'on utilisait l'arithmétique du signal analogique (au détriment de l'exactitude et de la précision) au lieu des FPU numériques (CPU -> DAC -> FPU analogique -> ADC -> CPU)?
La division du signal analogique est-elle possible (étant donné que la multiplication de FPU prend de toute façon souvent un cycle de processeur)?
Réponses:
Fondamentalement, tous les circuits sont analogiques. Le problème posé par les calculs avec des tensions ou des courants analogiques est une combinaison de bruit et de distorsion. Les circuits analogiques sont sujets au bruit et il est très difficile de les linéariser sur des ordres de grandeur énormes. Chaque étage d'un circuit analogique ajoutera du bruit et / ou de la distorsion au signal. Ceci peut être contrôlé, mais il ne peut pas être éliminé.
Les circuits numériques (à savoir CMOS) évitent fondamentalement cette problématique en n'utilisant que deux niveaux pour représenter des informations, chaque étage régénérant le signal. Qui se soucie de savoir si la sortie est désactivée de 10%, il faut seulement qu'elle soit supérieure ou inférieure à un seuil. Qui se soucie de savoir si la sortie est déformée de 10%, encore une fois, il suffit qu'elle soit supérieure ou inférieure à un seuil. A chaque comparaison de seuil, le signal est fondamentalement régénéré et des problèmes de bruit / non-linéarité / etc. dépouillé. Cela se fait en amplifiant et en écrêtant le signal d'entrée - un onduleur CMOS est simplement un amplificateur très simple composé de deux transistors, exploités en boucle ouverte à titre de comparateur. Si le niveau dépasse le seuil, vous obtenez une erreur de bit. Les processeurs sont généralement conçus pour avoir des taux d'erreur sur les bits de l'ordre de 10 ^ -20, IIRC. À cause de ce, Les circuits numériques sont incroyablement robustes. Ils peuvent fonctionner dans une très large gamme de conditions, car la linéarité et le bruit ne sont fondamentalement pas un problème. Il est presque trivial de travailler numériquement avec des nombres de 64 bits. 64 bits représentent une plage dynamique de 385 dB. C'est 19 ordres de grandeur. Il n'y a aucun moyen en enfer que vous puissiez vous en approcher avec des circuits analogiques. Si votre résolution est de 1 picovolt (10 ^ -12) (et cela sera fondamentalement submergé instantanément par le bruit thermique), alors vous devez supporter une valeur maximale de 10 ^ 7. Ce qui fait 10 mégavolts. Il n'y a absolument aucun moyen de fonctionner sur ce type de plage dynamique en analogique - c'est tout simplement impossible. Un autre compromis important dans les circuits analogiques est la bande passante / vitesse / temps de réponse et le bruit / gamme dynamique. Les circuits à bande passante étroite génèrent un bruit de fond moyen et fonctionnent bien sur une large plage dynamique. Le compromis est qu'ils sont lents. Les circuits à large bande passante sont rapides, mais le bruit est un problème plus important et la plage dynamique est donc limitée. Avec le numérique, vous pouvez résoudre le problème pour augmenter la plage dynamique ou augmenter la vitesse en faisant des choses en parallèle, ou les deux.
Cependant, pour certaines opérations, l'analogique présente des avantages - plus rapide, plus simple, une consommation d'énergie plus faible, etc. Le numérique doit être quantifié en niveau et en temps. L'analogique est continu dans les deux cas. Un exemple où analogique gagne est dans le récepteur radio de votre carte wifi. Le signal d'entrée arrive à 2,4 GHz. Un récepteur entièrement numérique aurait besoin d'un ADC fonctionnant à au moins 5 gigasamples par seconde. Cela consomme énormément d'énergie. Et cela n’envisage même pas le traitement après l’ADC. À l'heure actuelle, les CAN de cette vitesse ne sont réellement utilisés que pour les systèmes de communication en bande de base à très hautes performances (par exemple, la modulation optique cohérente à haut débit de symboles) et dans les équipements de test. Cependant, une poignée de transistors et de passifs peut être utilisée pour convertir le 2 en abaissement.
L'essentiel est que le calcul analogique et numérique présente des avantages et des inconvénients. Si vous pouvez tolérer le bruit, la distorsion, une plage dynamique faible et / ou une précision faible, utilisez analogique. Si vous ne pouvez pas tolérer le bruit ou la distorsion et / ou si vous avez besoin d'une plage dynamique et d'une précision élevées, utilisez le numérique. Vous pouvez toujours jeter plus de bits au problème pour obtenir plus de précision. Il n’existe cependant pas d’équivalent analogique.
la source
Le mois dernier, j'ai assisté à une conférence sur l'IEEE intitulée « Retour vers le futur: traitement du signal analogique ». La conférence a été organisée par IEEE Solid State Circuit Society.
Il a été proposé qu'un MAC analogique (multiplier et accumuler) consomme moins d'énergie qu'un processeur numérique. Un problème cependant est qu’un MAC analogique est sujet au bruit analogique. Donc, si vous le présentez deux fois avec les mêmes entrées, les résultats ne seraient pas exactement les mêmes.
la source
Ce dont vous parlez s'appelle un ordinateur analogique et était assez répandu aux débuts de l'informatique. Vers la fin des années 60, ils avaient pratiquement disparu. Le problème est que non seulement la précision est bien pire que pour le numérique, mais que la précision l'est aussi. Et la vitesse de calcul numérique est beaucoup plus rapide que même les circuits analogiques modestes.
Les diviseurs analogiques sont en effet possibles et Analog Devices propose environ 10 modèles différents. Ce sont en fait des multiplicateurs qui sont insérés dans le chemin de retour d'un ampli op, produisant un diviseur, mais AD produisait auparavant un diviseur dédié optimisé pour une plage dynamique étendue (60 dB, je pense) du diviseur.
Fondamentalement, le calcul analogique est lent et inexact par rapport au numérique. De plus, la réalisation de tout calcul analogique particulier nécessite la reconfiguration du matériel. Tard dans le jeu, des ordinateurs analogiques hybrides ont été produits qui pourraient le faire sous contrôle logiciel, mais ils étaient encombrants et ne se sont jamais fait remarquer, sauf pour des utilisations spéciales.
la source
Si vous avez un multiplicateur analogique, un diviseur analogique est "facile" à créer:
simuler ce circuit - Schéma créé à l'aide de CircuitLab
En supposant que X1 et X2 sont positifs, cela résout Y = X1 / X2.
Les multiplicateurs analogiques existent, donc ce circuit est possible en principe. Malheureusement, la plupart des multiplicateurs analogiques ont une plage assez limitée de valeurs d'entrée autorisées.
Une autre approche consisterait tout d’abord à utiliser les amplificateurs de journal pour obtenir le logarithme de X1 et X2, soustraire, puis exponenti.
Au fond, c’est une question de technologie - on a tellement investi dans la R & D pour rendre les opérations numériques plus rapides, que la technologie analogique aurait encore beaucoup de chemin à parcourir pour se rattraper. Mais il n'y a aucun moyen de dire que c'est absolument impossible.
D'autre part, je ne m'attendrais pas à ce que mon circuit de diviseur brut ci-dessus fonctionne au-dessus de peut-être 10 MHz sans avoir à effectuer un travail très minutieux et peut-être une recherche en profondeur pour le rendre plus rapide.
En outre, vous dites que nous devrions négliger la précision, mais un circuit comme celui que je viens de dessiner n’est probablement précis qu’à 1% environ sans réglage, et probablement à 0,1% seulement, sans inventer de nouvelles technologies. Et la plage dynamique des entrées sur laquelle on peut calculer utilement est également limitée. Ainsi, non seulement il est probablement 100 à 1000 fois plus lent que les circuits numériques disponibles, mais sa plage dynamique est probablement environ 10 300 fois plus mauvaise (comparée à la virgule flottante IEEE 64 bits).
la source
Non, car les conversions DAC et ADC prennent beaucoup plus de temps que la division ou la multiplication numérique.
La multiplication et la division analogiques ne sont pas si simples, elles consomment plus d'énergie et ne seraient pas rentables (comparées aux circuits intégrés numériques).
Les circuits intégrés de multiplication et de division analogiques rapides (gamme GHz) ont une précision d'environ 1%. Cela signifie que tout ce que vous pouvez diviser sur un diviseur analogique rapide est ... des nombres à 8 bits ou quelque chose comme ça. Les circuits intégrés numériques traitent des chiffres comme celui-ci très rapidement.
Ici vous pouvez regarder les diviseurs et multiplicateurs analogiques proposés par Analog Devices ( link )
Ces choses ne sont pas très utiles en informatique générale. Celles-ci sont bien meilleures en traitement du signal analogique.
la source
float
, 23 bits pour le coefficient, 8 bits pour l'exposant et 1 bit pour le signe. Vous devez représenter ces 3 plages en analogique.En fait, les chercheurs reviennent maintenant sur les techniques d’informatique analogique dans le contexte du VLSI, car le calcul analogique pourrait offrir une efficacité énergétique bien supérieure à celle du numérique dans des applications spécifiques. Voir ce papier:
http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=7313881&tag=1
la source