L'arithmétique des signaux analogiques est-elle plus rapide que l'arithmétique numérique?


37

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)?


Cela ne répond pas à votre question, mais voici un article intéressant sur l'utilisation des ordinateurs électromécaniques analogiques sur les navires de guerre arstechnica.com/information-technology/2014/03/…
Doombot

De temps en temps, des propositions ont été faites pour utiliser une logique numérique multi-états, par exemple des "bascules" à quatre états au lieu de deux. Cela a en fait été fait dans certaines puces de mémoire de production, car cela réduit le goulot d'étranglement du câblage. (Je ne sais pas si les puces actuellement produites utilisent une logique multi-états.)
Hot Licks

Réponses:


45

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.


Cela mérite beaucoup plus de votes!
John U

Je le savais! Je ne pouvais tout simplement pas le dire avec de bons mots. Informations complémentaires intéressantes sur les récepteurs sans fil.
Smithers

2
Le circuit d’échantillonnage en attente? Bande magnetique? Enregistrement phonographique? Film photographique? Les dispositifs de mémoire analogiques existent certes, mais ils présentent des caractéristiques légèrement différentes de celles numériques.
alex.forencich

1
Toute gamme, oui. Mais toute gamme avec une résolution arbitraire? Pas tellement.
alex.forencich

1
L'amplification @ehsan n'augmente pas votre plage dynamique, votre valeur minimale (le bruit de fond) est amplifiée avec le maximum.
mbrig

20

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.


1
(+1 pour le bruit analogique.)
George Herold

De même, un article sur l'utilisation d'ordinateurs mécaniques sur les navires de guerre arstechnica.com/information-technology/2014/03/…
Doombot

18

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.


6
J'aime votre réponse, (+1) et la question. Mais je ne suis pas d'accord sur la partie vitesse. L'analogique est très rapide. Le problème est la précision et peut-être surtout le bruit. L'analogique a toujours du bruit. Le numérique est sans bruit, sur le plan informatique.
George Herold

Merci pour ces mots gentils. Mais. L’analogique est rapide, mais en général, le numérique est plus rapide. Et le bruit est facile à simuler.
WhatRoughBeast

4
L’analogique est rapide, s’il s’agit uniquement d’arithmétique, d’exp, de sqrt, etc. Mais dès que vous ajoutez un condensateur ou une inductance, nécessaire à la différenciation et à l’intégration, il est lent. Les ordinateurs analogiques de l’histoire étaient souvent utilisés pour résoudre des équations différentielles - ils étaient "lents". Mais certains ont juste fait de l'algèbre. Je peux donc voir pourquoi différentes personnes peuvent avoir des points de vue différents sur la vitesse de calcul analogique.
DarenW

1
Pourriez-vous expliquer pourquoi l'analogique est lent? En informatique numérique, certaines instructions sont "lentes" car elles nécessitent peu d'itérations. Mais avec l’analogique, je pense qu’il ne faut qu’un seul passage pour obtenir le résultat.
mrpyo

1
@ mrpyo - Absolument, vous pouvez exécuter les deux fonctions. Si vous prenez un multiplicateur et que vous connectez les deux entrées ensemble, cela devient un "carré". Si vous utilisez le circuit utilisé par le photon dans sa réponse, les deux entrées étant liées à la sortie de l'ampli op, il génère des racines carrées. La relation tension / courant dans une diode est exponentielle. Vous pouvez donc l'utiliser pour générer des exposants. Et en plaçant une diode dans un chemin de retour, vous obtenez des logarithmes. Cependant, dans tous les cas, la plage dynamique peut être limitée par des décalages d’amplificateur, des dérives, etc. De plus, il existe d’autres sources d’erreur pour les circuits à diodes.
WhatRoughBeast

11

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)?

Si vous avez un multiplicateur analogique, un diviseur analogique est "facile" à créer:

schématique

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.

Serait-il théoriquement possible d'accélérer les processeurs modernes si l'on utilisait l'arithmétique du signal analogique (au prix de la précision) au lieu des FPU numériques (CPU -> ADC -> FPU analogique -> DAC -> CPU)?

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).


5
Hey j'ai un vieux multiplicateur AD qui fait 10 MHz. Je parie que je peux obtenir quelque chose plus rapidement maintenant. Juste pour lancer une clé à molette dans ce sujet, si l’informatique quantique s’avançait, elle serait analogique.
George Herold

@ GeorgeHerold, c'est mon meilleur argument pour expliquer l'informatique quantique à l'huile de serpent.
Le Photon

Astuce très soignée. Sauf que je pense que calcule A (x1) / (1 + A (x2)), ce qui devrait être précis pour un gain important A.
Yale Zhang

@georgeherold Un mélangeur n'est en réalité qu'un multiplicateur analogique rapide avec des exigences d'entrée légèrement bizarres, et je pense que les micro-ondes obtiennent ces fréquences jusqu'à 60 GHz ou plus ces jours-ci
mbrig

@mbrig, la difficulté réside dans l'amplificateur opérationnel et le maintien de la boucle de contre-réaction fermée.
Le Photon

7
  1. Non, car les conversions DAC et ADC prennent beaucoup plus de temps que la division ou la multiplication numérique.

  2. 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).

  3. 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.

  4. 3.410343.41034

Ici vous pouvez regarder les diviseurs et multiplicateurs analogiques proposés par Analog Devices ( link )

entrez la description de l'image ici

Ces choses ne sont pas très utiles en informatique générale. Celles-ci sont bien meilleures en traitement du signal analogique.


4. Pas exactement. Les nombres à virgule flottante sont représentés en notation scientifique. Deux nombres - coefficient et exposant - couvrent tous deux une plage plus limitée.
mrpyo

@mrpyo Êtes-vous sûr? Je pense que la plage flottante de 16 bits est beaucoup plus élevée que les chiffres que j'ai écrits avant l'édition (quelque chose comme 0000000000000.1 et 10000000000000).
Kamil

en.wikipedia.org/wiki/IEEE_floating_point Pour C 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.
mrpyo

Ne pourriez-vous pas réduire la fréquence requise en disposant plusieurs unités en série et en n'en utilisant qu'une à la fois?
mrpyo

4
Le véritable équivalent analogique de Floating Point serait le domaine logarithmique. Par conséquent, une plage dynamique absurdement élevée (supérieure à la mantisse FP) n'est pas nécessaire. Sinon, bons points.
Brian Drummond

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.