Wäre es theoretisch möglich, moderne Prozessoren zu beschleunigen, wenn man statt digitaler FPUs (CPU -> DAC -> analoge FPU -> ADC -> CPU) analoge Signalarithmetik (auf Kosten der Genauigkeit und Präzision) verwenden würde?
Ist eine analoge Signalaufteilung möglich (da die FPU-Multiplikation ohnehin oft einen CPU-Zyklus benötigt)?
Antworten:
Grundsätzlich sind alle Schaltungen analog. Das Problem bei der Durchführung von Berechnungen mit analogen Spannungen oder Strömen ist eine Kombination aus Rauschen und Verzerrung. Analoge Schaltungen unterliegen Rauschen und es ist sehr schwierig, analoge Schaltungen über große Größenordnungen linear zu machen. Jede Stufe einer analogen Schaltung fügt dem Signal Rauschen und / oder Verzerrungen hinzu. Dies kann kontrolliert, aber nicht beseitigt werden.
Digitale Schaltkreise (CMOS) umgehen im Grunde genommen dieses ganze Problem, indem sie nur zwei Ebenen zur Darstellung von Informationen verwenden, wobei jede Stufe das Signal regeneriert. Wen interessiert es, wenn der Output um 10% abfällt, er muss nur über oder unter einem Schwellenwert liegen. Wen kümmert es, wenn die Ausgabe um 10% verzerrt ist, wieder muss sie nur über oder unter einem Schwellenwert liegen. Bei jedem Schwellenwertvergleich wird das Signal im Grunde genommen regeneriert und es treten Rausch- / Nichtlinearitätsprobleme auf. ausgezogen. Dies geschieht durch Verstärken und Beschneiden des Eingangssignals - ein CMOS-Inverter ist nur ein sehr einfacher Verstärker, der aus zwei Transistoren besteht, die als Komparator im offenen Regelkreis betrieben werden. Wenn der Pegel über den Schwellenwert geschoben wird, erhalten Sie eine kleine Fehlermeldung. Prozessoren sind im Allgemeinen so ausgelegt, dass sie Bitfehlerraten in der Größenordnung von 10 ^ -20, IIRC aufweisen. Aus diesem Grund, Digitale Schaltungen sind unglaublich robust - sie können unter den unterschiedlichsten Bedingungen betrieben werden, da Linearität und Rauschen im Grunde keine Probleme darstellen. Es ist fast trivial, digital mit 64-Bit-Zahlen zu arbeiten. 64 Bit entsprechen einem Dynamikumfang von 385 dB. Das sind 19 Größenordnungen. In der Hölle gibt es keine Möglichkeit, mit analogen Schaltkreisen in die Nähe zu kommen. Wenn Ihre Auflösung 1 Picovolt (10 ^ -12) beträgt (und dies wird im Grunde sofort durch thermisches Rauschen überflutet), müssen Sie einen Maximalwert von 10 ^ 7 unterstützen. Welches ist 10 Megavolt. Es gibt absolut keine Möglichkeit, über einen solchen Dynamikbereich analog zu arbeiten - es ist einfach unmöglich. Ein weiterer wichtiger Kompromiss bei analogen Schaltungen sind Bandbreite / Geschwindigkeit / Reaktionszeit und Rauschen / Dynamik. Schaltkreise mit enger Bandbreite gleichen Rauschen aus und bieten eine gute Leistung über einen weiten Dynamikbereich. Der Nachteil ist, dass sie langsam sind. Schaltungen mit großer Bandbreite sind schnell, aber Rauschen ist ein größeres Problem, sodass der Dynamikbereich begrenzt ist. Mit Digital können Sie das Problem lösen, um den Dynamikumfang zu erhöhen oder die Geschwindigkeit zu erhöhen, indem Sie Dinge parallel ausführen, oder beides.
Für einige Vorgänge hat Analog jedoch Vorteile - schneller, einfacher, geringerer Stromverbrauch usw. Digital muss in Bezug auf Pegel und Zeit quantisiert werden. Analog ist in beiden Fällen stetig. Ein Beispiel, bei dem analog gewinnt, ist der Funkempfänger in Ihrer WLAN-Karte. Das Eingangssignal kommt mit 2,4 GHz an. Ein voll digitaler Receiver benötigt einen ADC mit mindestens 5 Gigasamples pro Sekunde. Dies würde sehr viel Strom verbrauchen. Und das berücksichtigt nicht einmal die Verarbeitung nach dem ADC. Derzeit werden ADCs mit dieser Geschwindigkeit nur für Basisband-Kommunikationssysteme mit sehr hoher Leistung (z. B. kohärente optische Modulation mit hoher Symbolrate) und in Testgeräten verwendet. Eine Handvoll Transistoren und Passive können jedoch verwendet werden, um die 2 herunter zu konvertieren.
Das Fazit ist, dass analoge und digitale Berechnungen Vor- und Nachteile haben. Wenn Sie Rauschen, Verzerrung, geringen Dynamikumfang und / oder geringe Präzision tolerieren können, verwenden Sie analog. Wenn Sie Rauschen oder Verzerrungen nicht tolerieren können und / oder einen hohen Dynamikbereich und eine hohe Präzision benötigen, verwenden Sie Digital. Sie können immer mehr Bits auf das Problem werfen, um mehr Präzision zu erzielen. Es gibt jedoch kein analoges Äquivalent dazu.
quelle
Ich habe letzten Monat an einem IEEE-Vortrag mit dem Titel „ Back to the Future: Analog Signal Processing “ teilgenommen . Der Vortrag wurde von der IEEE Solid State Circuit Society organisiert.
Es wurde vorgeschlagen, dass ein analoger MAC (multiplizieren und akkumulieren) weniger Strom verbrauchen könnte als ein digitaler. Ein Problem ist jedoch, dass ein analoger MAC einem analogen Rauschen ausgesetzt ist. Wenn Sie es also zweimal mit denselben Eingaben präsentieren, stimmen die Ergebnisse nicht genau überein.
quelle
Was Sie meinen, wird als analoger Computer bezeichnet und war in den Anfängen von Computern ziemlich verbreitet. Gegen Ende der 60er Jahre waren sie im Wesentlichen verschwunden. Das Problem ist, dass nicht nur die Präzision viel schlechter ist als bei Digital, sondern auch die Genauigkeit. Und die Geschwindigkeit der digitalen Berechnung ist viel schneller als selbst bescheidene analoge Schaltungen.
Analoge Teiler sind in der Tat möglich, und Analog Devices stellt ungefähr 10 verschiedene Modelle her. Dies sind tatsächlich Multiplikatoren, die in den Rückkopplungspfad eines Operationsverstärkers eingefügt werden und einen Teiler erzeugen. Mit AD wird jedoch ein dedizierter Teiler erzeugt, der für einen großen Dynamikbereich (60 dB, glaube ich) des Teilers optimiert ist.
Grundsätzlich ist die analoge Berechnung im Vergleich zur digitalen langsam und ungenau. Darüber hinaus erfordert die Realisierung einer bestimmten analogen Berechnung die Neukonfiguration der Hardware. Spät im Spiel wurden hybride analoge Computer hergestellt, die dies unter Softwaresteuerung tun konnten, aber diese waren sperrig und wurden nur für spezielle Zwecke eingesetzt.
quelle
Wenn Sie einen analogen Multiplikator haben, ist es "einfach", einen analogen Teiler zu erstellen:
simulieren Sie diese Schaltung - Schaltplan erstellt mit CircuitLab
Unter der Annahme, dass X1 und X2 positiv sind, löst dies Y = X1 / X2.
Es gibt zwar analoge Multiplizierer, diese Schaltung ist also grundsätzlich möglich. Leider haben die meisten analogen Multiplikatoren einen relativ begrenzten Bereich zulässiger Eingabewerte.
Ein anderer Ansatz wäre, zuerst logarithmische Verstärker zu verwenden, um den Logarithmus von X1 und X2 zu erhalten, zu subtrahieren und dann zu potenzieren.
Im Kern ist es eine Frage der Technologie - es wurde so viel in Forschung und Entwicklung investiert, um den digitalen Betrieb zu beschleunigen, dass die analoge Technologie an diesem Punkt noch einen langen Weg zurücklegen muss. Aber es gibt keine Möglichkeit zu sagen, dass es absolut unmöglich ist.
Auf der anderen Seite würde ich nicht erwarten, dass meine Rohteilerschaltung über 10 MHz funktioniert, ohne sehr sorgfältige Arbeit und gründliche Tauchuntersuchungen durchführen zu müssen, um sie schneller zu machen.
Sie sagen auch, wir sollten die Präzision vernachlässigen, aber eine Schaltung wie die von mir gezeichnete ist ohne Abstimmung wahrscheinlich nur auf etwa 1% genau und wahrscheinlich nur auf 0,1% genau, ohne eine neue Technologie zu erfinden. Der Dynamikumfang der Eingänge, der sinnvoll berechnet werden kann, ist ebenfalls begrenzt. Es ist also wahrscheinlich nicht nur 100- bis 1000-mal langsamer als verfügbare digitale Schaltkreise, sondern wahrscheinlich auch 10- bis 300- mal schlechter (im Vergleich zu IEEE 64-Bit-Gleitkomma).
quelle
Nein, da DAC- und ADC-Konvertierungen viel mehr Zeit in Anspruch nehmen als digitale Division oder Multiplikation.
Analoge Multiplikation und Division ist nicht so einfach, verbraucht mehr Energie und wäre nicht kosteneffizient (im Vergleich zu digitalen ICs).
Schnelle analoge Multiplikations- und Divisions-ICs (GHz-Bereich) haben eine Genauigkeit von etwa 1%. Das heißt, alles, was Sie auf einem schnellen analogen Teiler teilen können, sind ... 8-Bit-Zahlen oder ähnliches. Digitale ICs verarbeiten solche Zahlen sehr schnell.
Hier sehen Sie analoge Teiler und Multiplikatoren von Analog Devices ( Link )
Diese Dinge sind im allgemeinen Rechnen nicht sehr nützlich. Diese sind in der analogen Signalverarbeitung viel besser.
quelle
float
es 23 Bit für den Koeffizienten, 8 Bit für den Exponenten und 1 Bit für das Vorzeichen. Sie müssten diese 3 Bereiche analog darstellen.Tatsächlich besuchen Forscher im Rahmen von VLSI nun wieder analoge Computertechniken, da analoge Berechnungen in bestimmten Anwendungen eine viel höhere Energieeffizienz als digitale ermöglichen könnten. Siehe dieses Papier:
http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=7313881&tag=1
quelle