Die eigentliche Frage ist am Ende. Aber das allein zu lesen zeigt dir vielleicht nicht, warum ich verwirrt bin. Ich habe diesen Beitrag geschrieben, beginnend mit einigen Definitionen, Annahmen und Spekulationen und dann die eigentliche Frage gestellt.
Ich denke immer, dass ich den Unterschied kenne, aber wenn ich eine Frage bekomme wie: "Wenn ich einen Transceiver mit einem uC einsetze, ist das jetzt ein SoC?" Ich bin durcheinander und weiß nicht, wie ich antworten soll. Ich erinnere mich, als mir gesagt wurde, dass ein uC im Wesentlichen ein SoC ist . Aber welchen Beweis habe ich? Aber Arduino ist nicht auf einem einzigen Chip! Ich kann den Atmeg-Prozessor jederzeit vom "Board" nehmen!
Wenn ich online nachschaue, erhalte ich alle Arten von Antworten, die bestätigen oder widersprechen, was ich gerade direkt oder indirekt gesagt habe. Das ist für mich immer verwirrend und ich beschuldige niemanden außer Marketing-Leuten, die diese Begriffe locker und manchmal austauschbar verwenden, und den Leuten, die ihrem Beispiel folgen.
Deshalb habe ich mich entschlossen, nach der grundlegenden Bedeutung dieser drei Begriffe zu suchen: uC, SoC und DSP. Wenn ich zum Beispiel über Spannungen in Schaltkreisen verwirrt bin, kehre ich immer zu den Grundlagen der Physik zurück. Masse ist nicht wirklich Null, sondern nur eine "Referenz", und Spannungen sind nicht "absolut", sondern "Verwandte". Das weist mich immer in die richtige Richtung. Aber es gibt keine Basis, zu der man gehen kann, wenn man über uC spricht. "Mikro" "Controller" ist ein Controller, der so klein ist, dass er im Mikrometerbereich liegt. Aber wir haben nicht den Begriff Nanocontroller, oder? Diese Denkweise würde also nicht helfen.
Ich versuche Folgendes zu beantworten:
- uC ist eine Verarbeitungseinheit mit anderen Peripheriegeräten und Speicher für den allgemeinen Gebrauch, oder?
- SoC ist ein vollständiges "System" auf einem "Chip". Welches System Sie also auf einen einzelnen Chip setzen, ist ein SoC, richtig?
DSP ist eine Verarbeitungseinheit für bestimmte Zwecke, hauptsächlich für mathematische Operationen, oder?
Jetzt
Bedeutet das, dass sich alles in einem uC in einem Chip befinden muss? denn wenn ja, dann ist uC tatsächlich ein SoC. Vielleicht eine kleine, aber es ist. Was ist mit Arduino? Wahrscheinlich "kann" uC ein SoC sein, wenn es sich auf einem einzelnen Chip befindet, muss es aber nicht (ich verwende hier stark Arduino als Beispiel).
Arduino ist also ein uC, wenn ich alle seine Komponenten nehme und sie auf ein anderes Board lege und zum Beispiel XBEE zum Mix hinzufüge. Es ist immer noch ein uC, oder? Wann sagen wir also, dass es jetzt ein SoC ist? Nur wenn das gleiche Zeug auf einen einzigen Chip gelegt und nicht auf einem Brett gesammelt wird?
Bis jetzt denke ich, dass sich die obigen Fragen irgendwie von selbst beantworten, aber ich möchte nur bestätigen, damit ich weitermachen kann. Wenn ich versuche zu denken, dass "grundsätzlich" Chip oder Board "gleich" sein können, sind es nur Drähte, die die verschiedenen Komponenten verbinden. und was definieren Sie an dieser Stelle eine Komponente? Ist es ein einzelner Transistor oder eine Schaltung wie ein ADC? Aber ich will nicht dorthin gehen.
Die nächste Frage ist, worum es in diesem Beitrag wirklich geht:
- Ist ein uC im Wesentlichen ein SoC? Ein Sonderfall eines SoC, dessen eine Anforderung darin besteht, dass das gesamte System für allgemeine Zwecke verwendet wird.
- uC ist ein allgemeiner Zweck (laut Internet) und DSP dient hauptsächlich dazu, aus der realen Welt gesammelte Signale mathematisch zu verarbeiten. Aber DSP ist immer noch ein "Prozessor" und ein uC enthält einen "Prozessor". Kann ich einfach einen DSP mit einem Bündel oder Peripheriegeräten (sagen wir ADC und DAC, da diese normalerweise damit verwendet werden) einbauen und den Mix als uC bezeichnen? oder ist das ein SoC (da die Mischung jetzt kein allgemeiner Zweck ist und wir sie daher nicht als uC bezeichnen können, aber es ist immer noch ein SoC)
quelle
AltGr + M
oder⌘ + M
sollten Sie den Trick machen.Antworten:
uC = ein eigenständiger Verarbeitungs-Chip: CPU, RAM, ROM, einige Peripheriegeräte.
DSP = Prozessorchip (kann eine separate CPU sein, heutzutage meistens eine uC), der für die Signalverarbeitung optimiert ist. Hat oft schnelle MAC (Multiplizieren-Akkumulieren), sättigende Mathematik und mehrere Speicherschnittstellen. Um das Beste daraus zu machen, müssen Sie sich häufig seiner Besonderheiten bewusst sein, z. B. welche Art von Speicherzugriff gleichzeitig ausgeführt werden kann. (Wird daher häufig mit vom Hersteller bereitgestellten fein abgestimmten Baugruppenbibliotheken verwendet.) Wird häufig nicht für die Verwendung mit großen Speichern verwendet (16-Bit-Adressbus ist häufig ausreichend).
SOC = Prozessorchip (meistens eine CPU, möglicherweise mit etwas RAM zum Zwischenspeichern), der Peripheriegeräte enthält, die sich früher außerhalb des Hauptprozessorchips befanden. Dies ist per Definition ein bewegliches Ziel: Die Funktionen in heutigen spezialisierten SOCs sind in den Mainstream-Chips von morgen zu finden. Die aktuellen SOCs sind hauptsächlich für die Ausführung eines Linux-Betriebssystems gedacht und enthalten die meisten Dinge, die Sie auf einem solchen System benötigen würden, mit Ausnahme von RAM und ROM (obwohl einige ROMs häufig enthalten sind, häufig zum Lesen eines externen FLASH).
Beispiele für Peripheriegeräte, die in heutigen SOCs üblich sind (aber ihren Weg in uCs finden!): Ethernet-Ports, Ethernet-Switching-Fabric, USB inkl. Host & OTG, Grafik-Engine (s), MPEG-Decodierung, Crypto-Engine, RAM & FLASH-Schnittstellen.
Ein Arduino ist ein Produkt auf Board-Ebene, daher ist es per Definition kein uC, DSP oder SOC, obwohl es eines enthalten kann. Das grundlegende Uno enthält ein uC.
Ein uC ist kein SOC (obwohl es Grenzfälle geben kann): Ein uC ist eigenständig und (auf dem aktuellen Stand der Technik) nicht für die Ausführung von Linux-Betriebssystemen gedacht. Ein SOC ist nicht eigenständig (benötigt RAM und ROM).
Die Grenzen sind nicht zu 100% hoch und verschieben sich im Laufe der Zeit. Die CPU- und Speicherschnittstellen der meisten aktuellen CPUs übertreffen die DSPs von gestern sogar auf ihrem Rasen. Heutzutage sind DSPs jedoch schneller und / oder billiger oder weniger leistungshungrig als allgemeinere CPUs, wenn sie Signalverarbeitung durchführen. Es ist ein Wettlauf zwischen den Herstellern, den attraktivsten Chip mit dem neuesten Stand der Technik und Nachfrage herzustellen. Im Moment hatte dies zu den oben genannten 3 Sweet-Spots (plus Allzweck-Mikroprozessoren) geführt, aber dies wird sich im Laufe der Zeit ändern (DSPs sind weniger beliebt als vor 10 Jahren, IMO, da der Audiopegeldurchsatz jetzt leicht von a erreicht werden kann Allzweck-CPU).
Ein bestimmter Chiptyp, der heutzutage immer häufiger verwendet wird, ist der uC (oder SOC) mit einer drahtlosen Schnittstelle. Überprüfen Sie den ESP8266 und ESP32 auf WiFi-Beispiele und den RN2483 auf LoraWan.
quelle
uC und DSPs haben eine ziemlich einfache Definition.
Ein uC ist ein Verarbeitungskern, in den der Speicher (flüchtig und nicht flüchtig) intern integriert ist. Dies im Vergleich zu einem Mikroprozessor, der im Allgemeinen einen flüchtigen Speicher enthält, jedoch keinen nichtflüchtigen.
Ein DSP ist ein Ableger eines uC. DSPs haben im Allgemeinen wirklich gute analoge Abtastfähigkeiten als ein typischer uC. DSPs haben auch bessere mathematische Fähigkeiten als uC und verfügen über viele Bibliotheken wie FFT oder Autokorrelation, um diese mathematischen Fähigkeiten zu nutzen.
SoC ist eher ein Marketing-Wichsbegriff. SoC ist ein Begriff, den sie verwenden möchten, wenn ein uC genügend Funktionen für eine Einzel- oder nahezu Einzelchip-Lösung bereitgestellt hat. Der Begriff SoC wird häufig verwendet, wenn die uC Grafikverarbeitung und Grafiktreiber integriert hat. Denken Sie an die ARM-Chips in Mobiltelefonen. Sie enthalten die Grafiken.
quelle
Was wir SOC nennen, hat im Allgemeinen einen viel leistungsstärkeren Prozessorkern als uC. Normalerweise finden Sie dort den ARM-Kern. Fast alle "großen" ARM-Prozessoren, wie die heute produzierte Cortex A-Serie, sind tatsächlich SOCs. Um ein großes Betriebssystem wie Linux auszuführen, benötigen Sie viel RAM, sodass SOCs über einen externen RAM-Controller verfügen, der moderne SDRAM-Chips unterstützt. Kleine Menge an integriertem statischem RAM, der nur in der Startphase zum Ausführen des Bootloaders und zum Initialisieren von Peripheriegeräten und SDRAM-Controllern verwendet wird.
uCs sind normalerweise komplette All-in-One-Lösungen mit integriertem statischem RAM (relativ kleine Menge). Kleiner RAM und fehlende MMU verhindern die Verwendung großer Betriebssysteme. Heutzutage haben die meisten uCs entweder einen 8-Bit- oder einen 32-Bit-Kern. 16-Bit-uCs werden nur in Legacy-Anwendungen verwendet. Die Ära der 32-Bit-USS begann mit Kernen der ARM M-Serie. Diese Kerne wurden speziell für uCs entwickelt und haben mit großen ARMs außer dem Befehlssatz nur sehr wenig gemeinsam (ARM M verwendet THUMB-Befehle, eine Teilmenge des ARM-Befehlssatzes).
Der DSP-Begriff bezieht sich auf die Kernarchitektur. DSPs haben mehr als eine ALU und sogenannte VLIW-Befehlssätze (Very Long Instruction Word). Der VLIW-Befehl besteht aus einer Reihe von Unterbefehlen (ungefähr 4), die auf verschiedene CPU-Subsysteme abzielen. Beispielsweise kann ein derart langer Befehl einen Befehl zum Vorabrufen von Daten aus dem Speicher, einen Multiplikationsbefehl zu einer spezialisierten Multiplikator-ALU und einen arithmetischen Befehl zu einer Allzweck-ALU enthalten.
Sie können DSP als Allzweck-uC verwenden, aber der Hauptzweck ist die digitale Datenverarbeitung (nicht nur Signale, sondern auch Video). Digitale Filter, Medienkomprimierungs- / Dekomprimierungsalgorithmen profitieren von der DSP-parallelisierten Architektur.
Moderne CPU-Kerne haben normalerweise eine Art "DSP-Erweiterungen" in Form von Vektoranweisungen (Sie können dieselbe arithmetische Operation für eine Anzahl von ungefähr 8 Operanten ausführen). Es ist etwas anderes als die VLIW-Anweisungen von DSPs.
quelle