Was ist der Unterschied zwischen einem DSP und einem Standard-Mikrocontroller?

84

Ich verstehe, dass ein DSP für die digitale Signalverarbeitung optimiert ist, bin mir jedoch nicht sicher, wie sich dies auf die Auswahl eines IC auswirkt. Fast alles, was ich mit einem Mikrocontroller mache, beinhaltet die Verarbeitung digitaler Signale!

Vergleichen wir zum Beispiel den beliebten Microchip dsPIC30 oder 33 DSP und sein anderes 16-Bit-Angebot, den Universal-Mikrocontroller PIC24. Der dsPIC und der PIC können so konfiguriert werden, dass sie den gleichen Speicher und die gleiche Geschwindigkeit haben. Sie verfügen über ähnliche Peripheriegeräte, ähnliche A / D-Fähigkeiten, Pin-Zählungen, Stromaufnahme usw. Der einzige Hauptunterschied, der in Digikeys Auflistung erscheint, ist die Position des Oszillator. Ich kann den Unterschied nicht anhand der Preise (oder eines anderen Bereichs) erkennen.

Wenn ich mit mehreren externen Sensoren arbeiten möchte, die verschiedene Protokolle (I2C, SPI usw.) verwenden, A / D-Konvertierungen durchführen, einige Daten auf einem seriellen Blitz speichern, auf einige Tasten reagieren und Daten an einen Charakter senden möchten LCD und über ein FT232 (ein ziemlich allgemeines Embedded-System), welchen Chip soll ich verwenden? Es scheint nicht, dass der DSP in irgendeiner Weise hinter dem PIC zurückbleibt, und er bietet diese mysteriöse "DSP-Engine". Mein Code rechnet immer und ab und zu brauche ich Gleitkomma- oder Bruchzahlen, aber ich weiß nicht, ob ich von der Verwendung eines DSP profitieren kann.

Ein allgemeinerer Vergleich zwischen DSPs eines anderen Anbieters und Mikrocontrollern wäre ebenso nützlich. Ich benutze diese nur als Ausgangspunkt für Diskussionen.

Kevin Vermeer
quelle

Antworten:

64

Um ehrlich zu sein, ist die Grenze zwischen den beiden heute fast verschwunden und es gibt Prozessoren, die als beides klassifiziert werden können (zum Beispiel AD Blackfin).

Allgemein gesagt:

Mikrocontroller sind ganzzahlige mathematische Prozessoren mit einem Interrupt-Subsystem. Einige verfügen möglicherweise über Hardware-Multiplikationseinheiten, andere über keine usw. Sie wurden speziell für einfache Berechnungen und hauptsächlich zur Steuerung anderer Geräte entwickelt.

DSPs sind Prozessoren, die für die Streaming-Signalverarbeitung optimiert sind. Sie verfügen häufig über spezielle Anweisungen, die häufige Aufgaben beschleunigen, z. B. das Multiplizieren und Akkumulieren in einer einzigen Anweisung. Sie haben auch oft andere Vektor- oder SIMD-Anweisungen. In der Vergangenheit waren sie keine Interrupt-basierten Systeme und wurden mit Nicht-Standard-Speichersystemen betrieben, die für ihren Zweck optimiert waren, wodurch ihre Programmierung erschwert wurde. Sie wurden normalerweise für den Betrieb in einer großen Schleife entwickelt, die einen Datenstrom verarbeitet. DSPs können als Ganzzahl-, Festkomma- oder Gleitkommaprozessoren ausgeführt werden.

Wenn Sie in der Vergangenheit Audiostreams und Videostreams verarbeiten und eine schnelle Motorsteuerung ausführen wollten, sollten Sie sich einen DSP zulegen.

Wenn Sie einige Tasten steuern, eine Temperatur messen, ein Zeichen-LCD ausführen und andere ICs steuern möchten, die Dinge verarbeiten, würden Sie einen Mikrocontroller verwenden.

Heutzutage gibt es meistens Allzweckprozessoren mit Mikrocontrollern, die entweder DSP-ähnliche Befehle enthalten oder mit On-Chip-Co-Prozessoren, um mit Streaming-Daten oder anderen DSP-Operationen umzugehen. Reine DSPs werden nur noch in bestimmten Branchen verwendet.

Der Prozessormarkt ist viel breiter und verschwommener als früher. Zum Beispiel betrachte ich einen ARM cortex-A8 SoC kaum als Mikrocontroller, aber er passt wahrscheinlich zur Standarddefinition, insbesondere in einem PoP-Paket.

BEARBEITEN: Ich habe mir vorgenommen, ein wenig zu erklären, wann / wo ich DSPs verwendet habe, selbst in den Tagen der Anwendungsprozessoren.

Ein kürzlich von mir entwickeltes Produkt war die Audioverarbeitung mit X Eingangskanälen und X Ausgangskanälen pro 'Zone'. Die beabsichtigte Verwendung des Produkts bedeutete, dass es oft dort saß und jahrelang die Audiokanäle verarbeitete, ohne dass jemand es berührte. Die Audioverarbeitung bestand aus verschiedenen akustischen Filtern und Funktionen. Das System war auch "hot-plug-fähig" mit der Möglichkeit, einige unabhängige "Zonen" in einer Box hinzuzufügen. Es wurden insgesamt 3 PCB-Designs (Hauptplatine, Rückwandplatine und Einsteckmodul) und die Rückwandplatine 4 Einsteckmodule unterstützt. Ein ziemlich lustiges Projekt, da ich es alleine gemacht habe, musste ich das Systemdesign, den Schaltplan, das PCB-Layout und die Firmware machen.

Jetzt hätte ich das Ganze mit einem einzigen sperrigen ARM-Kern erledigen können. Ich benötigte nur etwa 50 MIPS DSP-Arbeit für 24-Bit-Festkommazahlen pro Zone. Aber weil ich wusste, dass dieses System extrem lange funktionieren würde, war es wichtig, dass es niemals klickt oder knallt oder ähnliches. Ich entschied mich für die Implementierung mit einem DSP mit geringem Stromverbrauch pro Zone und einem einzelnen PIC-Mikrocontroller, der die Rolle des Systemmanagements spielte. Auf diese Weise würde der DSP, selbst wenn eine der uC-Funktionen abstürzt, möglicherweise ein DDOS-Angriff auf seinen Ethernet-Port, einfach weiter tuckern und es ist wahrscheinlich, dass niemand etwas davon merkt.

Der Mikrocontroller spielte also die Rolle des zweizeiligen LCD, einiger Tasten, der Temperaturüberwachung und der Lüftersteuerung (es gab auch einige Audioverstärker mit relativ hoher Leistung auf jeder Platine) und bediente sogar eine AJAX-artige Webseite über Ethernet. Es verwaltete auch die DSPs über eine serielle Verbindung.

Das ist eine Situation, in der selbst in den Tagen, in denen ich einen einzelnen ARM-Kern für alles hätte verwenden können, das Design einen dedizierten Signalverarbeitungs-IC vorschrieb.

Andere Bereiche, in denen ich auf DSPs gestoßen bin:

* High-End-Audio - Sehr hochwertige Receiver und Misch- und Verarbeitungsgeräte in Konzertqualität

* Radarverarbeitung - Ich habe auch ARM-Kerne für diese in Low-End-Apps verwendet.

* Sonar-Verarbeitung

* Echtzeit-Computer Vision

Die unteren und mittleren Bereiche des Audio- / Video- / ähnlichen Bereichs wurden größtenteils von Anwendungsprozessoren übernommen, die eine Allzweck-CPU mit Co-Proc-Offload-Engines für verschiedene Anwendungen kombinieren.

Kennzeichen
quelle
1
Ein weiterer Zusatz vielleicht. In einer Anwendung mit ungefähr 80 E / A-Leitungen und 12 analogen Eingängen verwenden wir jetzt einen einzelnen Mikrocontroller mit einem verbundenen FPGA, um die E / A-Datenströme zu verarbeiten. Lösungen wie diese werden immer häufiger. Wir verwenden dieses System: embeddedarm.com/products/board-detail.php?product=ts-7800 , um die Entwicklung für eine kurze Time-to-Market zu beschleunigen, und ich muss sagen, dass es sehr gut funktioniert Ein solches Produkt ist möglicherweise nicht für Anwendungen mit einem niedrigeren Verkaufspreis / Erwartungswert geeignet.) - Wouter Simons vor 33 Sekunden
Wouter Simons
Nicht alle Mikrocontroller haben Interrupts. In geschäftskritischen Anwendungen werden sie nie verwendet. Ein typisches Beispiel: die Viper-Steuerung, die in Kampfflugzeugen verwendet wird.
Stevenvh
15

Viele digitale Signalprozessoren enthalten eine Vielzahl von Funktionen, die bei "normalen" Prozessoren nicht vorhanden sind:

  1. Die Fähigkeit, eine Multiplikationsakkumulation mit beiden aus dem RAM abgerufenen Operanden mit einer Rate von einem Zyklus pro Operandenpaar durchzuführen.
  2. Die Möglichkeit, eine Art 'Modulo'- oder' Wrapping'-Adressierung durchzuführen, damit ein Puffer wiederholt verwendet werden kann, ohne manuellen Code verwenden zu müssen, um den Pointer-Wrap sicherzustellen. Der 3205x verfügt zum Beispiel über ein Register 'Buffer Start' und 'Buffer End'. Wenn der Code versucht, ein Zeigerregister zu inkrementieren oder zu dekrementieren, das auf "Buffer Start" zeigt, lädt der Prozessor den Zeiger mit "Buffer End". Der 3205x verfügt auch über einen Reverse-Carry-Modus, bei dem Adresszusätze das Carry-MSB an das LSB weiterleiten und nicht umgekehrt. Dies ermöglicht eine Modulo-N-Adressierung, wenn N eine Potenz von 2 ist, obwohl die Daten in einer durcheinandergebrachten Reihenfolge gespeichert werden.
  3. Die Möglichkeit, anzugeben, dass ein Befehl n-mal ausgeführt werden soll, ohne dass ein erneuter Abruf erforderlich ist. Einige Prozessoren wie der 8088 enthalten dies für einige Anweisungen, aber viele DSPs erlauben dies für viele Anweisungen.
  4. Die Möglichkeit, anzugeben, dass ein Codeblock bis zu n-mal wiederholt ausgeführt werden soll, ohne dass eine Verzweigung erforderlich ist. Vor jedem Code-Abruf wird der Programmzähler gegen das "Schleifenende" -Register geprüft; Wenn es übereinstimmt und die Schleife aktiviert ist, wird der Programmzähler mit "Schleifenstart" neu geladen (andernfalls wird er inkrementiert). Wenn 'Schleifenzahl' Null ist, wird die Schleifenfunktion deaktiviert. Andernfalls wird die Anzahl der Schleifen verringert.

Beachten Sie, dass viele DSPs separate Busse haben, damit beide Operanden eines Multiplikations-Akkumulators gleichzeitig abgerufen werden können. Ich habe noch nie einen Nicht-DSP gesehen, der das kann. Ich kenne zwar kein Merkmal, das einem Chip als DSP "fehlen" muss, aber zusätzlicher Siliziumraum, der zum Abrufen von Doppeloperanden erforderlich ist, wird für keinen anderen allgemeineren Zweck verwendet.

Superkatze
quelle
Ich war mit dem Multiplizieren-Akkumulieren vertraut, aber Modulo-Adressierung und wiederholtes Ausführen von Code ohne Abruf waren Funktionen, mit denen ich nicht vertraut war.
Kevin Vermeer
1
Sie haben viele gute Antworten und es ist cool, an alten und neuen Fragen zu arbeiten. Ich würde alle Ihre Antworten durchgehen und positiv bewerten, wenn es nicht die Algorithmen zur Betrugserkennung und die tägliche Wiederholungsrate gäbe . Erwarten Sie jedoch ein paar am Tag! Mach weiter so tolle Arbeit!
Kevin Vermeer
@reemrevnivek: Schön, dass Sie meine Antworten nützlich finden. Wie bereits erwähnt, ist das Design für Double-Fetch-Multiplikation-Akkumulation eine Funktion, die ich bei Nicht-DSP-Prozessoren nicht gesehen habe. Der ARM leistet gute Arbeit bei Operationen, die eine Multiplikations-Akkumulations- und Modulo-Adressierung erfordern (unter Verwendung einer effektiven Adresse von z. B. (R0 + (R1 >> 24)) für eine 256-Byte-Tabelle), aber ein typischer ARM würde vier Anweisungen erfordern, um was zu tun Ein DSP arbeitet in einem Zyklus.
Superkatze
MAC ist der Befehl mit drei Operanden a <- a + b * c, nicht zwei.
Trismegistos
@Trismegistos: Eine wiederholte MAC-Operation mit N Elementen umfasst insgesamt 2N + 1 Operanden. Es ist nicht erforderlich, den Akku vor jedem Artikel abzurufen und anschließend aufzubewahren. Während Prozessoren mit einem nicht wiederholten Multiplikations-Additions-Vorgang möglicherweise drei Operanden haben, ruft ein Wiederholungs-MAC nur zwei Operanden pro Zyklus ab.
Supercat
13

Eine Sache, die die anderen nicht erwähnt haben, ist das Verhalten beim numerischen Überlauf. In normalen Prozessoren springt dies normalerweise vom Maximalwert zum Minimalwert.

Für die DSP-Nutzung gibt es häufig zumindest die Option, stattdessen die Sättigung zu verwenden. Das heißt, beim Überlauf bleibt der Wert auf dem Maximalwert, wodurch weniger Verzerrungen auftreten und das Verhalten analoger Schaltungen besser nachgeahmt wird.

sternenblau
quelle
9

Der größte Unterschied zwischen DSP und dem Standard-uController besteht in der Multiplikations-Akkumulationsfunktion (MAC) des DSP, über die uC nicht verfügt. Dies ist nützlich, wenn Sie eine echte digitale Signalverarbeitung wie FFT durchführen möchten (ein Beispiel). Das Ausführen einer FFT in einem Standard-Mikrocontroller dauert im Vergleich zur Ausführung auf einem MAC des DSP sehr lange.

Die Verarbeitung von I2C- und seriellen Signalen entspricht nicht der Verarbeitung von Wellenformen in einem DSP. Eine völlig andere Art der Verarbeitung, da serielle Signale nur Bit-Banging sind.

Hier ist eine ähnliche Diskussion in einem DSP-Forum: DSP vs. Mikroprozessor

Jay Atkinson
quelle
Ich sah einen Akku im DSP-Blockdiagramm, wusste aber nicht, was er tat. Gut zu wissen! Ich verstehe, dass I2C und seriell nicht mit der Verarbeitung von Wellenformen beim Senden von ASCII-Daten identisch sind, sondern dass einige Peripheriegeräte (Serial-Access-Beschleunigungsmesser, externer A / D, GPS usw.) Wellenformen in ihren Datenströmen codieren in die DSP irgendwie!
Kevin Vermeer
3
Die meisten Signalverarbeitungen bestehen mathematisch aus der Multiplikation von Matrizen und / oder Vektoren. Dies führt zu einer Menge von Antworten = Berechnungen vom Typ a b + c d + e * f. Auf einer CPU ohne MAC, für die viele Anweisungen erforderlich sind, kann dies mit einem MAC um ein Vielfaches schneller sein.
Mark
1
Dieser Kommentar ist absolut FALSCH. Nicht alle, aber viele MCUs enthalten Hardware-Multiplikatoren mit MAC-Funktionen. Dies hat nichts mit einer Unterscheidung zwischen DSP und MCU zu tun. Ja, DSPs haben mit größerer Wahrscheinlichkeit einen MAC als eine MCU, aber es gibt weitaus grundlegendere Unterschiede als diese kleine Funktion.
2
Wenn Sie die Uhr um 15 Jahre zurückdrehen, sehen Sie fast keine MCUs mit dieser Funktion. Wenn Sie den MAC oder eine gleichwertige Funktion aus dem DSP entfernen, können Sie ehrlich sagen, dass Sie einen DSP haben? Ich würde auf keinen Fall einen kaufen wollen, wenn ich ihn nicht hätte oder etwas Ähnliches. Es gibt Architekturunterschiede zwischen Harvard und von Neuman und dem Speicherzugriff, aber ich habe eine einfache Antwort gegeben, ohne auf eine ausführliche Erklärung einzugehen. Ich denke, Sie sind zu hart mit Ihrem Kommentar, indem Sie "Flat out WRONG" sagen. Sie können gerne eine Antwort schreiben, in der die Tiefe besprochen wird, die Ihrer Meinung nach abgedeckt werden muss.
Jay Atkinson
@ adrian: Dein Kommentar ist absolut FALSCH. Wenn eine MCU eine MAC-Funktion hat, wird sie als DSP vermarktet.
Johan.A
5

Was DSPs auszeichnete, war ihre Optimierung für arithmetische Operationen, insbesondere Multiplikation, obwohl es heutzutage nicht ungewöhnlich ist, dass Mikrocontroller mit Multiplikations- und Divisionsanweisungen ausgestattet sind. Die Signalverarbeitung mit DSP-Chips kann immer noch von Vorteil sein, da einige von ihnen Hardware-Unterstützung für Festkomma-Mathematik bieten (z. B. die 'IQ'-Bibliothek des TI TMS320), wohingegen Mikros eher nur ganzzahlige Einheiten enthalten.

Persönlich würde ich, wenn ich mich für ein Design zwischen den beiden entscheiden muss, versuchen zu kategorisieren, ob die Anwendung sich wiederholende Berechnungen mit nur gelegentlicher Modusänderungslogik erfordert oder nur kurze Abfolgen von Berechnungen durchführen muss, wenn dies erforderlich ist. Ersteres wäre der DSP, letzteres ein Mikro.

Und dann gibt es natürlich lustige Dinge wie das OMAP, die beides haben. = P

JustJeff
quelle
1
Ich glaube, ich verstehe den Unterschied in der Absicht (Ihr zweiter Absatz), aber ich bin mir nicht sicher, warum ich das tun würde, wenn Mikros keine DSP-ähnlichen mathematischen Fähigkeiten haben und DSPs über mikroähnliche Peripheriegeräte verfügen. Wie ich in meinem OP sagte, können der dsPIC33 und der PIC24 einen nahezu identischen Funktionsumfang und einen identischen Preis haben. Korrigieren Sie mich, wenn ich falsch liege, aber während der DSP über Funktionen zur wiederholten Verarbeitung verfügt, glaube ich nicht, dass der PIC24 (oder ein anderes von mir untersuchtes Mikro) einen Vorteil gegenüber einem DSP im Modus hat, der sich wie ein Dual ändert Pipeline oder schneller FLASH.
Kevin Vermeer
@reemrevnivek: Sie sagen also, warum wählen Sie nicht immer nur einen DSP?
JustJeff
@ JustJeff: Ja, genau das sage ich.
Kevin Vermeer
1

Ein weiteres mögliches Merkmal des MAC-Befehls ist das automatische Inkrementieren der Register, die auf Multiplikanden zeigen. Ich habe einen Zilog-DSP programmiert, der den (16-Bit-Festkomma-) Clarkspur-Kern verwendet. Es handelte sich um eine Variante der Harvard-Architektur mit drei Bussen, mit denen gleichzeitig auf drei Speicherbereiche zugegriffen werden konnte: Anweisungsspeicher, Datenbank 1 und Datenbank 2. Mit einem Datenstrom in einer Speicherbank und Koeffizienten in der anderen Führen Sie einen FIR-Filter mit einem Einzelzyklusbefehl pro MAC / Zeiger-Inkrementierungsoperation durch. In C sieht die einzelne Anweisung folgendermaßen aus:

Akku + = rambank1 [r1 ++] * rambank2 [r2 ++];

Und natürlich wird diese Anweisung für jeden Koeffizienten wiederholt.

Ebenfalls nicht erwähnt, weisen DSPs (zumindest die älteren, die ich verwendet habe) im Allgemeinen eine RISC-Architektur auf und sind mit vielen oder den meisten Befehlen konstruiert, die in einem einzigen Zyklus (oder in der gleichen Anzahl von Zyklen) ausgeführt werden. Dies ermöglicht die Programmierung einer deterministischen Interrupt-Antwort (eine feste Taktanzahl zwischen der aktiv werdenden Interrupt-Leitung und dem ersten ausgeführten Befehl im ISR), während die meisten anderen Prozessoren auf Interrupts in einer variablen Anzahl von Taktzyklen reagieren, je nachdem, zu welcher Zeit Punkt in einem Mehrzyklusbefehl tritt der Interrupt auf. Durch die feste Ausführungszeit wird bei sich wiederholenden Ausgaben ein Jitter von mehreren Uhrzeiten vermieden.

Zum Vergleich des OP von Microchip Pic und DSPic war es meines Erachtens bei der Einführung von DSPic hauptsächlich ein Pic mit einem MAC-Befehl und ein paar weiteren zusätzlichen Funktionen, die einen Mikrocontroller, der Signalverarbeitungsfunktionen ausführt, sicherlich beschleunigen können, aber (Aufgrund des Fehlens einer der anderen diskutierten Funktionen) könnte es sein, dass die Terminologie dahingehend erweitert wird, dass sie als DSP bezeichnet wird. Der MSP430 ist auch in Versionen mit einem Hardware-MAC erhältlich, aber niemand nennt DAS einen DSP.

Ich erinnere mich, dass ich vor 10 bis 15 Jahren gelesen habe, dass Mainstream-Prozessoren von Intel MAC und ähnliche Befehle für die "native" Signalverarbeitung hinzufügten (anstelle von Erweiterungskarten mit dedizierten DSP-Prozessoren, die in den 1990er-Jahren für die Audioproduktion üblich waren) - einige davon kostengünstig PC-Bus-Modems mit 56.000 Einwahlnummern waren nur A / D- und D / A-Wandler und verließen sich auf den Hauptprozessor, um die Codierungs- und Decodierungsfunktionen für das Modem-Signal auszuführen. Medienanwendungen wie Videoschnitt / -codierung / -decodierung sowie Audioaufzeichnung / -produktion werden durch DSP-Anweisungen erheblich beschleunigt.

user23081
quelle
Unter der Sonne gibt es nichts Neues. <g>In den Anfängen von C wurden die Inkrement- und Dekrementoperatoren so konzipiert, dass sie direkt in einzelne Hardwareanweisungen auf dem PDP übersetzt werden.
Pete Becker