Folge 127: Was steckt in einem Video-SoC?
Shownotes
SoC steht für System-on-a-Chip, aber was genau steckt dann alles auf dem besagten Chip? Stefan Schütz und Manuel Ott nehmen heute einen typischen SoC-Aufbau mit CPU, GPU, NPU, ISP und DSP auseinander und erläutern, was hinter den Abkürzungen steckt und wie diese Komponenten miteinander interagieren.
Transkript anzeigen
00:00:13: Herzlich Willkommen im wohl innovativsten Schuppen zu unserem Podcast Empathet Vision aus der Gartenhütte.
00:00:18: Heute wollen wir uns mal den Thema annehmen, was eigentlich so in einem Video SoC steckt.
00:00:23: aber zunächst möchte ich natürlich meinen Co-host begrüßen.
00:00:26: Hallo Manuel!
00:00:26: Hallo Stefan schön auch die Woche mit dabei zu sein.
00:00:29: Ja wir wollten heute mal so ein SoC in seine Bestandteile zerlegen weil man ja von unseren Zuhörer und Zuhöhrerinnen eine Frage gestellt Wenn man jetzt nicht so in der Technik drinsteht, dann sieht man da block Schaltbilder und verschiedene Elemente mit einer CPU eine GPU eine NPU einen DSP ein ISP viele.
00:00:53: Begrifflichkeiten oder viele offensichtlich wichtige Bausteine in so ein Video SoC, aber dem wollten wir uns auch mal ein bisschen annehmen.
00:01:02: Ja tatsächlich!
00:01:03: Mein SoC steht ja schon für System on a Chip das heißt es ist quasi auf einen kleinen Chip ein gesamtes System verortet und zusammengefasst.
00:01:12: du hast jetzt schon mehrere Abkürzungen gesagt.
00:01:14: die müssen man natürlich dann auch ein bisschen tiefer legen was das Ganze bedeutet.
00:01:18: Aber zum Beispiel ich meine wenn man gar nicht in der Technik ist wird Schwierig zu erklären, aber so mal wenn man sich so überlegt ich hab daheim PC da ist irgendwo eine CPU die auf motherboard dann habe ich irgendwo ne Grafik hatte.
00:01:29: Die ist nochmal ein extra board das da dran steckt und du hast ja gerade gesagt CPU GPU diesen unter anderem in verschiedenen Video SoCs eben auch integriert.
00:01:40: also das heißt Ich habe einen Rechenkern eine CPU Central Processing Unit und einen grafischen Prozessereinheit verheiratet quasi auf einem Chip.
00:01:50: Und der Vorteil ist einfach, wir heißen ja embedded Wishing aus der Gartenhütte nicht.
00:01:56: Wir stellen irgendwo einen Server hin aus der gartenhüter und deswegen macht es natürlich Sinn das Ganze zu miniaturisieren quasi auf ein Stück Silizium dann zusammenzubringen und in einen Chip zu verheiraten.
00:02:10: Genau, ich glaube das kann man sich gut vorstellen.
00:02:12: CPU und GPU kennt erst mal jeder.
00:02:15: CPU ist eben der klassische Prozessor.
00:02:17: Sagen wir einfach der Acker-Gaul unter diesen Einheiten da kann man letztendlich jegliches Programm drauf laufen lassen.
00:02:27: klar gibt es auch irgendwelche Beschleuniger rund um die CPU aber letztendlig läuft da einfach ein Programm ab, was man halt im Vorfeld entwickelt hat.
00:02:35: Da läuft typischerweise im Betriebssystem drauf auch wenn man dem Embedded-Umfeld ist jetzt zum Beispiel wie in Embedted Linux.
00:02:42: Da läuft wirklich die Hauptapplikationen darauf.
00:02:46: Die sind mittlerweile auch sehr leistungsfähig aber eben optimiert.
00:02:50: nicht mit Bildern umzugehen, Bildern aufzubereiten sondern einfach sequenziell Teilweise natürlich schon auch Algorithmen ablaufen zu lassen, aber typische Applikationen, Web-Anbindungen, Konfigurationen.
00:03:04: Also ganz unterschiedlich.
00:03:06: und wenn man dann aber was mit Bildern machen will, dann hat man es eben mit einer riesigen Datenrate zu tun.
00:03:13: weil wenn man sich vorstellt, man hat mindestens mittlerweile ein HD-Bild, neunzehntzwanzig auf tausend achtzig meistens sogar höhere Auflösungen oder mehr Kameras, wo man ja am Ende vom Tag jeden einzelnen Pixel bearbeiten muss.
00:03:30: Für jeden Frame der da kommt also bei sechzig Bilder pro Sekunde hat man dann zum Beispiel nur... ...sechzehn Millisekunden Zeit um ein Bild zu bearbeiten für zum Beispiel beim HD-Bild zwei Millionen Pixel.
00:03:45: und da merkt man schon das kann man eigentlich nimmer sequenziell machen sondern braucht eine Einheit die optimiert ist da drauf eine hohe Parallelität irgendwo zu gewährleisten, parallel an mehreren Pixeln zu arbeiten.
00:04:00: Und das ist eben ne GPU wie du gesagt hast so wenn man es vom Heimumfeld kennt eben ne Grafikkarte die Bilder schnell rendern kann.
00:04:10: Man kennt's vielleicht auch aus dem Zocker-Umfeld irgendwelche schnellen anderen Fuse erzeugen kann irgendwelchen drei D Spezialitäten reinrechnen kann.
00:04:18: Das ist so ne GPU die natürlich trotzdem von der CPU, wenn kompliziert oder gesteuert wird.
00:04:26: Aber letztendlich fließen die Daten dann teilweise eben nur, wenn es um so Grafik und Visualisierung, also HMI Themen geht eigentlich ja fast ausschließlich über die GPU.
00:04:36: und die CPU triggert dann eben das nächste begriffene DMA-Engines Direct Memory Access solche Maschinerien an, die dann automatisch oder autonom Daten zur GPU schaufeln.
00:04:50: Dann wird er auf einem gewissen Bildausschnitt irgendwas berechnet mit einer hohen Parallelität.
00:04:56: die Bilder werden wieder irgendwo anders ausgegeben und das ist schon mal eine Einheit sag ich mal.
00:05:02: Genau, du hast jetzt den Zuckervergleich gebracht.
00:05:05: Ich bin ja selbst bekennender Zocker.
00:05:07: also im Sinne von Nichtglückspiel will ich gleich dazu sagen nicht dass es einem falscher Eindruck entsteht Aber es ist natürlich ein anderes Leistungsspektrum, wovon wir sprechen.
00:05:17: Auf dem SOC sind natürlich verschiedene Dinge zusammengebracht.
00:05:21: Wenn man jetzt gerade in diesen Embedded-Umfeld reden... Da ist natürlich einen Unterschied zu wenn man irgendwelche Grafikkarten im PC stecken hat.
00:05:29: das ist eine andere Leistungsklasse ganz oft an der Stelle.
00:05:33: Wir laufen gerade so ein bisschen durch den SOC durch.
00:05:36: Wir haben jetzt quasi die Daten, die CPU, die Tricker, die GPU... dazwischen ist eine DMA-Engine, die die Daten hin und her schiebt.
00:05:45: Jetzt hattest du noch ein paar andere Begriffe in den Ring geschmissen und ich würde dich einfach mal aufgreifen!
00:05:51: Du hattest zum Beispiel eine NPU genannt.
00:05:55: Wo ist denn dann die Spezialität von der NPU?
00:05:58: Weil so wie ich es jetzt verstanden habe, die Bilder sind in die GPU bekommen und die GPU hat noch was aus sich ein schönes Overlay gemacht oder einen HMA gemacht.
00:06:05: Was macht dann so einer NPU ?
00:06:07: Eine NPU ist dann quasi optimiert um neuronale Netze also embedded KI laufen zu lassen auch dafür wenn man sich an PC daheim vorstellt oder auch bisschen die Presse verfolgt, dann kann man natürlich auch KIs auf Grafikkarten laufen lassen.
00:06:24: Nur ist es halt so dass wenn eine GPU quasi zu groß auslegt, du hast ja gesagt bei uns muss alles in einen kleinen Chip rein, dann braucht die unheimlich viel Leistung weil es eigentlich auch eher so eine generische Verarbeitungseinheit ist.
00:06:40: und MPUs sind halt noch mal optimiert Auch mit einer hohen Parallelität, aber um neuronale Netze.
00:06:48: Mit einer hoeren Performance, aber mit einer sehr geringen Verlustleistung ablaufen lassen zu können.
00:06:55: So ein neuronales Netz besteht ja so aus einzelnen Mini-Neuronen die dann Millionenfach zusammen geschaltet sind, wo es über verschiedene Layer und so weiter geht.
00:07:04: Da braucht man auch an gewissen Stellen eine Art Minispicher, da braucht man eben genau Funktionen an der richtigen stelle um eben so ein neuron wirklich funktionieren zu lassen.
00:07:14: und das steckt dann alles in so einer npu drin die halt im gegensatz zur gpu nicht alles kann.
00:07:22: also die kann jetzt keine bilder render oder einen tollen d-effekt generieren lassen aber die ist eben optimiert darauf ein yolo netzwerk oder irgendwelche anderen auch seht auf sie artnetzwerke der neueren generation laufen zu lassen.
00:07:37: Und das ist so der punkt Wenn wir jetzt auch auf diese anderen Elemente kommen, wir sprechen eben ja von so einem Video SOC.
00:07:44: Das heißt da geht es nicht darum eine GPU oder CPU die leistungsfähigsten Kerne da einzudesignen weil sonst mein Chip fünfzighundert Watt braucht oder viel mehr wo ich dann das ganze eigentlich gerne mal in so ein kleinen Gerät reinbringen kann weil ich die Wärme abfuhr nicht gewährleistet krieg.
00:08:03: sondern Gerade bei so einem Video SoC ist es dann eben entscheidend, dass für die Standardaufgaben also irgendwo ich will eine Kamera anschließen.
00:08:12: Ich will was detektieren und ich will etwas toll auf irgendeinem Bildschirm oder ein HMI System anzeigen, das ich eben optimierte Hardware-Blöcke habe, die ich da in diesen SoC reinpackt wo's nicht darum geht die leistungsstärksten Elemente zu nehmen sondern zum Schluss zum optimalen Setup zu kommen.
00:08:34: Genau und damit wird es ja auch spannend für uns.
00:08:37: Und ein bisschen kompliziert muss man sagen das Gesamtsystem, weil wir alles so nehmen diese Einzelheiten im SOC und die zusammen auf einen Chip dann verheiraten oder nicht viel für die Verheiratern sondern die Hersteller verheiralten und dann muss man das Ganze auch richtig nutzen.
00:08:51: Genau.
00:08:52: und dann gibt's aber noch weitere... Bausteine.
00:08:54: Genau, da war voll Dich hinaus gerade.
00:08:56: Ich
00:08:56: habe ja gesagt man kann der Kameras anschließen.
00:08:58: jetzt haben wir schon öfter gesagt das sind natürlich unterschiedliche Kameras gibt oftmals liefern die Rotdaten.
00:09:04: Jetzt kann man natürlich auch wieder überlegen Die ganze Verarbeitung die man braucht um Rotdate oder um aus Rotdata vernünftiges Bild zu machen Könne ich in der CPU machen?
00:09:13: Könne sich in der GPU machen?
00:09:14: Das ist teilweise dann wieder Zu langsam braucht so viel Power einfach und dafür gibt es dann aber was.
00:09:23: Die ISP, die Image Signal Pipeline oder den ISP Image Signal Processor.
00:09:29: Oder je nachdem wird unterschiedlich genannt.
00:09:33: aber im Grunde geht es genau darum dass man sagt ich habe ein Rohbild von allein im Bayer Raum und möchte das Ganze in einen Farbraum konvertieren inklusive Weißpunkt Anpassung Tone Mapping keine Rektifizierung und und und Und das sind natürlich Sachen die müssen wie das auch bei der GPU gesagt, dass ein Stück weit parallelisiert werden und in eine Pipeline geschoben werden.
00:09:57: Denn das Problem bei der GPU mit der CPU ist immer die DMA Engine, die quasi die Daten nimmt einen Speicherschieb dann wiederholt wird er was damit macht wie den Speicherschiebt.
00:10:08: und bei der ISP die es ebenso konzipiert, dass einem Block die Daten direkt zum nächsten Block schiebt!
00:10:16: Und dadurch schaffe ich's eben wirklich im kompletten Durchsatz von Bildern kompletten Datendurchsatz zu haben, um dann eben sechzig Bilder pro Sekunde und eben auch noch mehr dann direkt verarbeiten zu können.
00:10:29: Und am Ende vom Tag von so einer ISP ist dann doch wieder eine DMA einstehen die dann sagt ich habe jetzt das Bild es schaut toll aus.
00:10:35: also da kann man natürlich auch wieder unterscheiden zwischen Human Wishing und Computer Wishing kann natürlich unterschiedlich aufbereitet werden und dann schiebe ich das Ganze in der Regel in Speicher rein.
00:10:48: auch noch irgendwelche algorithmischen Highlights machen will, berechnen möchte.
00:10:55: Dann gibt's noch im SOC ... Was gibt es da noch?
00:10:59: Genau!
00:10:59: Dann gibt es oftmals auch noch DSP-Einheiten.
00:11:03: Sowas.
00:11:04: Es hätten uns vorher abgeschlossen.
00:11:06: Digitaler Signalprozessor der quasi nochmal so eine Unterart bildet als ein Prozessor, der dafür ausgelegt ist, Signale sehr schnell zu verarbeiten, wie du sagst der eher pipeline-mäßig auch aufgebaut ist und spezielle Aufgaben dann noch übernehmen kann.
00:11:24: Manchmal muss man aber auch sagen es ist ja oftmals nicht nur Video dabei das vielleicht auch Audio dabei oder andere Signale die man verarbeiten will wo man dann sagt, okay da gibt es nicht so viele Datenmengen ums in eine GPU zu packen.
00:11:38: Ich habe aber irgendwelche Anforderungen vielleicht auch in Echtzeit oder an die Latents oder wie auch immer ums jetzt einfach sequenziell in der CPU zu verarbeiten.
00:11:47: und dafür gibt's dann eben auch noch diese DSP Einheiten.
00:11:51: und was wir ja schon ein wenig angeteasert haben letztendlich so einen SOC macht dann quasi aus dass man nicht versucht hier die Leistungsstärksten Komponenten, wie man es vielleicht im Heimumfeld hat oder die dickste Grafik hatte.
00:12:06: Oder gerne hätte.
00:12:07: Oder
00:12:07: gern reinzubauen sondern wirklich so den optimalen Match zu finden.
00:12:13: Ich will Kameras anschließen ich will ein Display anschließen.
00:12:15: Ich habe vielleicht irgendwie noch andere Themen.
00:12:17: Ich muss Sensor Fusion machen und da gibt's mittlerweile eben... Eine schöne Anzahl von wirklich universellen einsetzbaren Video SoCs, die eben diese ganzen unterschiedlichen Einheiten mittlerweile haben.
00:12:31: Wo man auch wirklich sagen muss gut verbunden wir haben jetzt schon öfter gesprochen Die Memory-Zuggriffe, die DMA Engines also auch diese ganze Infrastruktur muss natürlich auch passen bei so einem optimierten System, dass da nicht irgendwo bottlenecks in internen Bussen dann stattfinden.
00:12:48: Sondern das die Daten wirklich schön durchs System fließen können wie du gesagt hast erst mal von der Kamera in die ISP rein dann parallel verarbeitet Dann vielleicht einmal in den Zwischenspeicher dann in verschiedene Richtungen Vielleicht direkt zum HMI mit wenig Latents wo man nochmal ein Overlay über eine GPU bildet oder wo man es dann parallel an eine npu schickt um einen ja personenerkennung zu machen ein kalman filder vielleicht irgendwelche sensor fusion themen üben video dsp zu machen und das ist dann so ein bisschen des was auch die modernen videos uc ausmacht.
00:13:26: klar wenn er dann von außen drauf schaut oder erscheinen die erst mal sehr kompliziert weil die verschiedenen einheiten irgendwo schon auch programmiert, konfiguriert gehandelt werden müssen.
00:13:39: Wenn man aber immer von dem Gesamtsystem der Applikation kommt, dann erschließt sich das eigentlich immer so pö-a-pö was man für welche Einheit machen muss wobei natürlich dann der Workflow komplett anders ausschaut wenn ich für eine CPU ein Programm entwickel als wenn ich die NPU irgendein Neuronalesnetz deploye.
00:13:58: und vor allem muss man natürlich schauen dass es dann der ausgewählte video SOC auch zu dem passt Brauch, was mein ganzes System einfach da an einem ... Herzstück braucht.
00:14:09: Was hat denn werkelt?
00:14:11: Ja also wenn ich auf die Uhr schaue dann sind wir am Ende unserer heutigen Folge angekommen obwohl wir Sachen wie Encoding Einheit noch gar nicht angesprochen haben diese ganze Infrastruktur die außen rum ist irgendwie Power Control Unit irgendwie ein Trusted Platform Management und sowas.
00:14:28: vielleicht machen wir das mal Irgendwann.
00:14:30: eine weitere Folge, wo wir auch noch auf weitere Einheiten innerhalb dieser SoC's einfach eingehen.
00:14:36: Aber für heute soll es Schluss sein.
00:14:38: und wie immer der Hinweis an alle Zuhörerinnen und Zuhöhrer die E-Mail Podcast ads solectrics.de gibt es auch diese Woche noch kann man sich sehr gerne hinwenden.
00:14:47: Gerne auch wenn es Fragen rund um SOCs gibt können wir gerne nochmal ein bisschen tiefer einsteigen.
00:14:52: Und ansonsten wünsche mir wieder ne schöne Zeit, ne schöne Woche bis zum nächsten Mal.
00:14:55: tschüss und
00:14:56: ciao!
Neuer Kommentar