DE102023129952A1 - Fraktionierte übertragungen von sensordaten für streaming- und latenzempfindliche anwendungen - Google Patents

Fraktionierte übertragungen von sensordaten für streaming- und latenzempfindliche anwendungen Download PDF

Info

Publication number
DE102023129952A1
DE102023129952A1 DE102023129952.2A DE102023129952A DE102023129952A1 DE 102023129952 A1 DE102023129952 A1 DE 102023129952A1 DE 102023129952 A DE102023129952 A DE 102023129952A DE 102023129952 A1 DE102023129952 A1 DE 102023129952A1
Authority
DE
Germany
Prior art keywords
processing device
image
data
processing
portions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102023129952.2A
Other languages
English (en)
Inventor
Aki Petteri Niemi
Sean Midthun Pieper
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102023129952A1 publication Critical patent/DE102023129952A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0038System on Chip

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Processing (AREA)

Abstract

Es werden Vorrichtungen, Systeme und Techniken offenbart, die fraktionierte Datenübertragungen zwischen Verarbeitungsvorrichtungen in Echtzeit-Datenerzeugungs- und Streaming-Anwendungen implementieren. Ohne darauf beschränkt zu sein beinhalten die Techniken Verarbeitung von Bilddaten durch eine erste Verarbeitungsvorrichtung, um eine Vielzahl von Teilen eines Bildes zu erzeugen, Speicherung des ersten Teils in einer ersten Speichervorrichtung der ersten Verarbeitungsvorrichtung als Reaktion auf die Erzeugung eines ersten Teils der Vielzahl von Teilen des Bildes, Setzen eines Fertigstellungsindikators für den ersten Teil und Veranlassung, dass der erste Teil einer zweiten Verarbeitungsvorrichtung bereitgestellt wird.

Description

  • TECHNISCHES GEBIET DER ERFINDUNG
  • Mindestens eine Ausführungsform betrifft Verarbeitungsressourcen und -techniken, welche zur Effizienzverbesserung und zur Latenzverkürzung von Datenübertragungen in Rechenanwendungen verwendet werden. Beispielsweise betrifft mindestens eine Ausführungsform effiziente Übertragung von Bild- und Videodaten zwischen Rechenanlagen in sicherheitssensiblen Anwendungen, einschließlich Anwendungen für autonomes Fahren.
  • HINTERGRUND DER ERFINDUNG
  • In sicherheitssensiblen Anwendungen, wie autonomen oder teilautonomen Fahrsystemen, müssen große Mengen an Sensordaten, zum Beispiel Kameradaten, Lidar-Daten (Daten der Lichterfassung und Abstandsmessung), Radar-Daten (Daten der funkgestützten Ortung und Abstandsmessung), Ultraschalldaten, Sonardaten usw., schnell und präzise verarbeitet werden. Die erfassten Sensordaten müssen in der Regel zwischen verschiedenen Verarbeitungsressourcen weitergeleitet werden, zum Beispiel von einem Sensor zu einem Modul der Bildsignalverarbeitung (image signal processing, ISP) für die Erstverarbeitung, von der ISP zu verschiedenen Computer-Vision-Anwendungen (CV) für Objekterkennung und -verfolgung, von CV-Anwendungen zu Fahrsteuerungssystemen usw. Sensordaten haben oft ein großes Volumen und werden mit hoher Geschwindigkeit von mehreren Sensoren erfasst und dann von einer Reihe komplexer Softwareanwendungen verarbeitet.
  • KURZE BESCHREIBUNG DER FIGUREN
    • 1 ist ein Blockdiagramm eines beispielhaften Systems, das in der Lage ist, fraktionierte Datenübertragungen zwischen Verarbeitungsvorrichtungen in Echtzeit-Datenerzeugungs- und Streaming-Anwendungen gemäß mindestens einer Ausführungsform zu implementieren;
    • 2 ist eine schematisches Zeitdiagramm fraktionierter Datenübertragungen zwischen Verarbeitungsvorrichtungen in Live-Streaming- und/oder zeitkritischen Anwendungen gemäß mindestens einer Ausführungsform;
    • 3A-B sind schematische Zeitdiagramme zur Veranschaulichung fraktionierter Datenübertragungen zwischen Verarbeitungsvorrichtungen in Live-Streaming- und/oder zeitkritischen Anwendungen in den Fällen der Identifizierung nicht zu behebender Fehler gemäß mindestens einer Ausführungsform;
    • 4 ist ein Flussdiagramm eines beispielhaften Verfahrens fraktionierter Datenübertragungen, wie es von einer Übertragungsvorrichtung gemäß mindestens einer Ausführungsform durchgeführt werden kann;
    • 5 ist ein Flussdiagramm eines beispielhaften Verfahrens fraktionierter Datenübertragungen mit nicht korrigierbaren Fehlern, wie es von einer Übertragungsvorrichtung gemäß mindestens einer Ausführungsform durchgeführt werden kann;
    • 6 ist ein Flussdiagramm eines beispielhaften Verfahrens fraktionierter Datenübertragungen, wie es von einer Empfangsvorrichtung gemäß mindestens einer Ausführungsform durchgeführt werden kann;
    • 7 ist ein Flussdiagramm eines beispielhaften Verfahrens fraktionierter Datenübertragungen mit nicht korrigierbaren Fehlern, wie es von einer Empfangsvorrichtung gemäß mindestens einer Ausführungsform durchgeführt werden kann;
    • 8 zeigt ein Blockdiagramm einer beispielhaften Computeranlage, die in der Lage ist, fraktionierte Datenübertragungen zwischen Verarbeitungsvorrichtungen in Echtzeit-Datenerzeugungs- und Streaming-Anwendungen gemäß mindestens einer Ausführungsform zu implementieren.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
  • Sensordaten, zum Beispiel Video- und Bildkameradaten, haben oft einen großen Umfang und erreichen oder überschreiten mehrere Megapixel pro Frame (Bild), welche in einem kontinuierlichen Strom von 30 oder mehr Frames (Bildern) pro Sekunde erfasst werden. Daher werden oft mehrere Verarbeitungsvorrichtungen implementiert, um solche datenintensiven Ströme zu verarbeiten. Die Verarbeitungsvorrichtungen werden häufig als integrierte System-on-Chip-Schaltungen (SoC-Schaltungen) realisiert, die für spezielle Aufgaben geeignet sind. Beispielsweise kann ein erstes SoC zur Verarbeitung von Sensor-Rohdaten (ISP) und zur Erzeugung von Bildern (z. B. demosaikierte Bilder, wie RGB-Bilder) in einem von mehreren digitalen Bildformaten verwendet werden. Ein zweites SoC kann dann verschiedene Computer-Vision-Algorithmen implementieren, um Objekte in den verpixelten Bildern zu erkennen und möglicherweise die Bewegung dieser Objekte über die Zeit zu verfolgen. Ein drittes SoC kann die Informationen über die erkannten/verfolgten Objekte verwenden, um einen Fahrweg für das autonome Fahrzeug zu ermitteln und Anweisungen an den Antriebsstrang des Fahrzeugs, das Bremssystem, das Signalsystem usw. auszugeben. Diese SoC-Spezialisierung erhöht die Effizienz der Datenverarbeitung, führt jedoch zu Latenzengpässen bei der Datenübertragung zwischen den SoCs. SoCs können die Daten über verschiedene Kommunikationskanäle übertragen, darunter eine Peripheral Component Interconnect Express (PCIe)-Verbindung, eine Compute Express Link (CXL)-Verbindung oder eine NVLink-Verbindung und dergleichen. Die Latenz von Datenübertragungen wird oft durch die Tatsache verlängert, dass mehrere Sätze von Messdaten (z. B. von mehreren Kameras erfasste Frames) synchron erfasst werden und die SoC-zu-SoC-Verbindungen etwa zur gleichen Zeit erreichen können. Dies führt zu Kommunikationsanhäufungen von Daten alle 1/f Sekunden, wobei f die Rate der Datenerfassung ist. Zu anderen Zeiten bleiben die Kommunikationskanäle dagegen ungenutzt. Eine solche ungleichmäßige Auslastung der Kommunikationskanäle führt zu Latenzzeiten, welche für sicherheitsrelevante Anwendungen wie autonome Fahrsysteme, Sicherheitsüberwachungssysteme, industrielle Steuerungssysteme und andere Anwendungen, welche Verarbeitung und Übermittlung großer Datenmengen erfordern, nachteilig sind.
  • Aspekte und Ausführungsformen der vorliegenden Erfindung gehen diese und andere technologische Herausforderungen an, indem sie Verfahren und Systeme offenbaren, die eine fraktionierte Kommunikation von Dateneinheiten (z. B. Bild- oder Videoframe) unterstützen. Dadurch werden Datenbursts vermieden, die Latenz der Datenkommunikation verkürzt und die Effizienz der erneuten Datenübertragung im Falle einer Datenbeschädigung verbessert. Genauer gesagt umfassen die offenbarten Techniken Hardware- und Softwareunterstützung zur Fraktionierung von Bildframes (oder beliebigen anderen Dateneinheiten) in Teile und Übermittlung der fraktionierten Teile über SoC-zu-SoC-Kommunikationsverbindungen. Beispielsweise kann ein erstes SoC Bilddaten erhalten, zum Beispiel Rohdaten von einem oder mehreren Sensoren, wie Kameras, Sonar-, Lidar- und Radar-Systemen usw., empfangen. Das erste SoC kann eine erste Bildsignalverarbeitung durchführen und Bildframes erzeugen. Jeder erzeugte Frame kann in einem Puffer des ersten SoC gespeichert werden, auf den eine Steuerung für Kommunikationsverbindungen (z. B. ein Root-Komplex der PCIe-Verbindung) des ersten SoC zugreifen kann. Ein Hardware-Interrupt (oder ein Software-Flag) kann so programmiert werden, dass er/es zu einem Zeitpunkt ausgelöst wird, zu dem ein erster Teil (1/M-ter Bruchteil) des Frames durch das ISP-Modul erzeugt wird. Die Verbindungssteuerung kann den Interrupt (das Flag) erkennen und einen Schreibvorgang durchführen, um den ersten Teil in einem Puffer des zweiten SoC zu speichern. Alternativ kann die Verbindungssteuerung den Interrupt (das Flag) an eine Verbindungssteuerung des zweiten SoC weiterleiten, welcher einen Lesevorgang durchführen kann, um den ersten Teil des Bildes aus dem ersten SoC zu holen und den ersten Teil im Puffer des zweiten SoC zu speichern. Ähnliche Operationen können für die übrigen AT-1 Teile des Bildes verwendet werden. Dies hat zur Folge, dass die Übertragung des m-ten Teils erfolgt, während der m+1-te Teil erzeugt wird, so dass nach Abschluss der Bilderzeugung nur noch der letzte Teil des Bildes an den zweiten SoC übertragen werden muss.
  • Weitere Vorteile der offenbarten Techniken im Vergleich zu bestehenden Systemen umfassen ein effizienteres Handling im Falle beschädigter Frames. Gegenwärtig muss ein Frame, welcher einen nicht korrigierbaren (durch einen Fehlerkorrekturcode) Fehler aufweist, bei Streaming- und/oder sicherheitssensiblen Anwendungen in seiner Gesamtheit verworfen werden. Im Verlauf fraktionierter Datenübertragungen kann ein nicht korrigierbarer Fehler, welcher in einem bestimmten Teil des Frames lokalisiert ist, dadurch behoben werden, dass lediglich der betreffende Teil verworfen wird, während andere, fehlerfreie (oder fehlerkorrigierbare) Teile desselben Frames verarbeitet (und einer Host-Anwendung bereitgestellt) werden. Die übermittelten restlichen Teile können immer noch wertvolle Informationen über das Umfeld liefern. Beispielsweise kann sich der verworfene Teil im Außenbereich des Frames befinden, während die verbleibenden Teile eine zentrale Ansicht der Kamera bereitstellen können. In einigen Ausführungsformen kann das erste SoC dem zweiten SoC das/die beschädigte(n) Teil(e) zusammen mit dem Hinweis übertragen, welches beschädigte Teil/welche beschädigten Teile verworfen werden soll(en). In einigen Ausführungsformen kann das erste SoC den beschädigten Teil verwerfen, ohne den zweiten SoC zu benachrichtigen, während das zweite SoC den/die Teil(e) auf der Grundlage einer Lücke in einer Folge von Kennungen der empfangenen Teile als fehlend identifizieren kann. In anderen Implementierungen kann das zweite SoC den beschädigten Teil von dem ersten SoC zusammen mit dem Hinweis lesen, der das zweite SoC darüber informiert, dass der gelesene Teil zu verwerfen ist.
  • Zu den Vorteilen der offenbarten Techniken gehört, ohne darauf beschränkt zu sein, Latenzverkürzung oder -minimierung der SoC-zu-SoC-Kommunikation von in Echtzeit erzeugten Daten, sowohl im Verlauf der normalen Datenerzeugung als auch im Fall von beschädigten Daten. Die verkürzte Latenz verbessert die Datenübertragungsraten und erhöht somit die Sicherheit von Fahrzeugen und anderen sicherheitssensiblen Systemen und Anwendungen.
  • Die hier beschriebenen Systeme und Verfahren können für vielfältige Zwecke verwendet werden, beispielsweise und ohne Einschränkung für Maschinensteuerung, Maschinenbewegung, Maschinenantrieb, Erzeugung synthetischer Daten, Modelltraining, Wahrnehmung, erweiterte Realität, virtuelle Realität, gemischte Realität, Robotik, Sicherheit und Überwachung, Simulation und digitales Twinning, autonome oder halbautonome Maschinenanwendungen, Deep Learning, Umweltsimulation, Rechenzentrumsverarbeitung, dialogorientierte KI, Lichttransportsimulation (z. B. Ray-Tracing, Path-Tracing etc.), kollaborative Inhaltserstellung für 3D-Assets, Cloud-Computing und/oder andere geeignete Anwendungen.
  • Offenbarte Ausführungsformen können in einer Vielzahl verschiedener Systeme enthalten sein, wie zum Beispiel in Fahrzeugsystemen (z. B. in einem Steuerungssystem für eine autonome oder halbautonome Maschine, einem Wahrnehmungssystem für eine autonome oder halbautonome Maschine), in Systemen, welche unter Verwendung eines Roboters implementiert werden, in Luftfahrtsystemen, medialen Systemen, Bootssystemen, intelligenten Bereichsüberwachungssystemen, in Systemen zur Durchführung von Deep-Learning-Operationen, in Systemen zur Durchführung von Simulationsoperationen, in Systemen zur Durchführung digitaler Twin-Operationen, in Systemen, welche unter Verwendung eines Edge-Geräts implementiert werden, in Systemen, welche eine oder mehrere virtuelle Maschinen (VMs) enthalten, in Systemen zur Durchführung von Operationen zur Erzeugung synthetischer Daten, in Systemen, welche zumindest teilweise in einem Rechenzentrum implementiert sind, in Systemen zur Durchführung dialogorientierter KI-Operationen, in Systemen zur Durchführung von Lichttransportsimulationen, in Systemen zur Durchführung kollaborativer Inhaltserstellung für 3D-Assets, in Systemen, welche zumindest teilweise unter Verwendung von Cloud-Computing-Ressourcen implementiert sind, und/oder in anderen Arten von Systemen.
  • SYSTEMARCHITEKTUR
  • 1 ist ein Blockdiagramm eines beispielhaften Systems 100, das in der Lage ist, fraktionierte Datenübertragungen zwischen Verarbeitungsvorrichtungen in Echtzeit-Datenerzeugungs- und Streaming-Anwendungen gemäß mindestens einer Ausführungsform zu implementieren. Wie in 1 dargestellt, kann das System 100 mehrere Verarbeitungsvorrichtungen umfassen, darunter ein erstes SoC 102, welches über einen Kommunikationskanal 140 mit einem zweiten SoC 150 verbunden ist. Sowohl das erste SoC 102 als auch das zweite SoC 150 kann eine integrierte Schaltung sein, welche auf einem einzigen Substrat (oder Mikrochip) implementiert ist und mehrere Computerkomponenten unterstützt. Genauer gesagt kann das erste SoC 102 eine Reihe von Verarbeitungsressourcen 103 enthalten, einschließlich des Hauptspeichers 104, einer oder mehrerer zentraler Verarbeitungseinheiten (CPUs) 105, einer oder mehrerer Grafikverarbeitungseinheiten (GPUs) 106 und/oder verschiedener anderer Komponenten, die in 1 nicht explizit dargestellt sind, wie zum Beispiel drahtlose Modems, Netzwerkkarten, lokale Busse, Grafikkarten, parallele Verarbeitungseinheiten (PPUs), Datenverarbeitungseinheiten (DPUs) oder Beschleuniger und so weiter. In ähnlicher Weise kann das zweite SoC 150 Verarbeitungsressourcen 153 enthalten, wie zum Beispiel den Hauptspeicher 154, eine oder mehrere CPUs 155, eine oder mehrere GPUs 156 und/oder andere Komponenten, die in 1 nicht explizit dargestellt sind.
  • Das erste SoC 102 und/oder das zweite SoC 150 können/kann eine oder mehrere Anwendungen unterstützen, einschließlich Echtzeit-Datenstreaming und/oder Verarbeitungsanwendungen, zum Beispiel Host-Anwendung 190, die beispielsweise auf dem zweiten SoC 150 ausgeführt werden kann, aber auch vom ersten SoC 102 oder von einem dritten Gerät ausgeführt werden kann. In einigen Ausführungsformen kann die Host-Anwendung 190 eine autonome Fahranwendung sein oder beinhalten. In einigen Ausführungsformen kann das erste SoC 102 die Verarbeitung von Sensordaten unterstützen, welche von einem oder mehreren Sensoren 110 erfasst und/oder erzeugt werden. Sensor(en) 110 kann/können Kamerasensoren, Radarsensoren, Lidarsensoren, Sonarsensoren und dergleichen umfassen. Der eine oder die mehreren Sensoren 110 können Sensordaten in jedem geeigneten unverarbeiteten oder minimal verarbeiteten (z. B. sensorspezifischen und/oder proprietären) Rohdatenformat erzeugen. Die von dem einen oder den mehreren Sensoren 110 erzeugten Sensordaten können periodisch mit einer bestimmten Frequenz f erfasst werden, zum Beispiel entsprechend der Kameraerfassungsrate, der Lidar-Abtastfrequenz und dergleichen.
  • Die vom Sensor 110 erzeugten Sensordaten können von einem Sensoreingabegerät (SI-Modul) 112 empfangen werden. Das SI-Modul 112 kann eine Eingabeschnittstelle 111, einen Protokollstapel 114, eine SI-Verarbeitung 116 und ein Fehlererkennungsmodul 118 sowie andere Komponenten und Module umfassen. In einigen Ausführungsformen kann die SI-Verarbeitung 116 eine Hardwarekomponente sein, zum Beispiel ein spezieller SI-Prozessor, welcher die Deserialisierung der Messdaten durchführt, die von dem einen oder den mehreren Sensoren 110 gestreamt sind. Die SI-Verarbeitung 116 kann beispielsweise einen Tegra®-NVIDIA-Chip oder eine andere geeignete Komponente umfassen, welche in der Lage ist, die Abtastdaten zu verarbeiten und die verarbeiteten Daten in ein Format zu formatieren, das von einer Bildsignalverarbeitung (image signal processing, ISP) 120 verstanden werden kann. Das SI-Modul 112 kann die Abtastdaten über eine beliebige geeignete Eingangsschnittstelle 111 empfangen, zum Beispiel über eine serielle Schnittstelle, wie beispielsweise eine serielle Kameraschnittstelle (CSI), die in einigen Ausführungsformen eine MIPI-CSI (Mobile Industry Processor Interface-CSI) ist. Die über die Eingabeschnittstelle 111 empfangenen Abtastdaten können von einem geeigneten Protokollstapel 114, zum Beispiel einem MIPI-CSI-Übertragungsprotokollstapel, verarbeitet werden, welcher Hardwarekomponenten und/oder Firmware-Module enthalten kann, die eine physikalische Schicht, eine Lane-Merger-Schicht, eine Low-Level-Protokollschicht, eine Pixel-zu-Byte-Konvertierungsschicht, eine Anwendungsschicht und dergleichen implementieren. In einigen Ausführungsformen kann die Eingabeschnittstelle 111 mehrere wählbare Datenübertragungsraten unterstützen. In einigen Ausführungsformen kann die Eingabeschnittstelle 111 Datenfusion von Abtastdaten unterstützen, welche von verschiedenen Sensoren 110 erfasst wurden, zum Beispiel Fusion von Kameradaten mit Radardaten, Lidardaten und dergleichen. Das Fehlererkennungsmodul 118 kann die Integrität von Datenpaketen (z. B. CSI-Datenpaketen), welche von den Sensoren 110 über die Eingabeschnittstelle 111 übertragen werden, überprüfen. Das Fehlererkennungsmodul 118 kann redundante Daten (Prüfsummen, Paritätsdaten etc.) verwenden, welche zusammen mit Datenpaketen gestreamt werden, um Lokalisierungen (und in einigen Fällen Wiederherstellung) von Datenpaketen, die während der Datenerzeugung oder -übertragung von dem einen oder den mehreren Sensoren 110 zum SI-Modul 112 verloren gegangen sind oder beschädigt wurden, zu erleichtern. Das Fehlererkennungsmodul 118 kann beispielsweise Prüfsummen, Paritätswerte oder andere Fehlerkorrekturdaten überprüfen. Das Fehlererkennungsmodul 118 kann auch fehlende Datenpakete erkennen. In einigen Ausführungsformen kann das Fehlererkennungsmodul 118 Fehlerkorrekturdaten verwenden, um beschädigte Datenpakete zu reparieren. In den Fällen, in denen Datenpakete nicht repariert werden können und/oder einige Datenpakete fehlen, kann das Fehlererkennungsmodul 118 Kennungen der fehlenden und/oder beschädigten Datenpakete speichern und so weiter.
  • Vom SI-Modul 112 erzeugte serielle Daten können der Bildsignalverarbeitung (ISP) 120 bereitgestellt werden, die eine Sammlung ausführbarer Software/Firmware-Codes, Bibliotheken und verschiedener Ressourcen umfassen kann, welche im Hauptspeicher 104 gespeichert und von der CPU 105 und/oder GPU 106 ausgeführt werden. In einigen Ausführungsformen können verschiedene serielle Aufgaben der ISP 120 von der CPU 105 und verschiedene parallele Aufgaben von der GPU 106 ausgeführt werden. In einigen Ausführungsformen können sowohl serielle als auch parallele Aufgaben der ISP 120 von der CPU 105, von der GPU 106 oder von einer Kombination aus CPU 105 und GPU 106 ausgeführt werden. Die ISP 120 kann jede geeignete Bildverarbeitung von Sensordaten durchführen, einschließlich Rauschfilterung, Entfernung von Verwischungen/Schärfung, Kontrastmodifikation, Farbanpassung, Bildzusammenführung (z. B. Zusammenführung mehrerer Bilder, die von Kameras mit beschränkter Blickweite aufgenommen wurden), Bildbeschneidung und/oder Verkleinerung und andere Bildvorverarbeitung. In einigen Ausführungsformen kann die ISP 120 Bilder kombinieren, welche mit mehreren Belichtungen aufgenommen wurden, wie beispielsweise Standard Dynamic Range (SDR)-Belichtungen (z. B. eine kurze Belichtung, eine lange Belichtung, eine extralange Belichtung etc.), um zusammengeführte Pixelwerte zu erzeugen, die ein High Dynamic Range (HDR)-Bild bilden. Die ISP 120 kann auf der Grundlage von Sensor-Rohdaten demosaikierte Bilder erzeugen. Die demosaikierten Bilder können Pixel mit einem oder mehreren Intensitätswerten enthalten, zum Beispiel Schwarz-Weiß-Intensitätswerte, RGB-Intensitätswerte (Rot, Grün, Blau), CMYK-Intensitätswerte (Cyan, Magenta, Gelb, Schwarz) oder Intensitätswerte eines anderen Farbschemas. Die Erzeugung von Bildern durch ISP 120 kann Datenkomprimierung umfassen. Die ISP 120 kann Bilder in jedem digitalen Format erzeugen, zum Beispiel TIFF, PNG, GIF, JPEG, BMP oder einem anderen Format, einschließlich geeigneter proprietärer Formate. Verschiedene Formate und Layouts von Bildern können Pixeldaten enthalten, welche im Block-Linear-Format, im Pitch-Linear-Format, im Sub-Sampling-Format und dergleichen dargestellt werden. Beispielsweise können die Pixeldaten im YUV420-Format ausgegeben werden, bei dem ein Y-Luma-Kanal mit einem U- und V-Chroma-Kanal kombiniert wird, wobei die Chroma-Kanäle eine andere Auflösung als der Luma-Kanal haben (z. B. die Hälfte der Auflösung des Luma-Kanals). Zudem können einzelne Pixel unterschiedliche Formate haben, einschließlich gepackter (oder verschachtelter) Pixel, planarer Pixel, semi-planarer Pixel usw., wobei jedes Format eine bestimmte Art und Weise angibt, in der Pixeldaten im Speicher gespeichert werden. In einigen Ausführungsformen kann die ISP 120 Bilder verschiedener Typen kombinieren, beispielsweise Kamerabilder mit Radar- oder Lidar-Sensordaten anreichern (z. B. verschiedene Punkte in den Kamerabildern mit Entfernungsdaten verknüpfen). Die ISP 120 kann einzelne Bilder und/oder eine Zeitfolge zusammenhängender Bilder (z. B. Videobilder) erzeugen.
  • In einigen Ausführungsformen kann die ISP 120 ein Datenfraktionierungsmodul 122 enthalten, welches Bruchteile von Bildframes ausgibt, sobald diese Bruchteile von der ISP 120 erzeugt wurden, und die ausgegebenen Bruchteile in einem Puffer (oder einer anderen Speichervorrichtung), auf den eine Übertragungssteuerung (TX-Controller) 130 zugreifen kann, zum Beispiel einem TX-Puffer 134, speichern. In einigen Ausführungsformen kann der TX-Puffer 134 ein Hochgeschwindigkeits-Cache sein. In einigen Ausführungsformen können die Bilder und/oder EC-Daten im Hauptspeicher 104 oder in einem GPU-Speicher (in 1 nicht dargestellt) gespeichert werden, zum Beispiel an einer bestimmten Speicheradresse oder in einem Speicheradressbereich.
  • Operationen des Datenfraktionierungsmoduls 122 können über eine Anwendungsprogrammierschnittstelle (API) 124 geleitet und gesteuert werden. Die API 124 kann einen Satz benutzerkonfigurierbarer Anweisungen zur Steuerung fraktionierter Datenübertragungen vom ersten SoC 102 zum zweiten SoC 150 enthalten, wie zum Beispiel von der CV-Anwendung 170, einer Host-Anwendung 190 und/oder einer anderen Anwendung spezifiziert, welche auf dem ersten SoC 102, dem zweiten SoC 150 und/oder einer anderen Rechenanlage, die kommunikativ mit dem ersten SoC 102 und/oder dem zweiten SoC 150 gekoppelt ist, instanziiert werden kann. Die API 124 kann eine Größe S einer übertragenen Dateneinheit definieren. Im Fällen übertragener Bilder, Videoframes usw. kann die Größe S in Bytes (z. B. 1 MB, 8 MB etc.), Zeilen/Spalten von Pixeln, Blöcken von Pixeln einer bestimmten Größe oder auf jede andere Weise definiert werden. Die Anwendung kann ferner die Größe eines Teils der Dateneinheit für fraktionierte Datenübertragungen festlegen. Sobald beispielsweise der 11M-te Teil eines Bildes (oder einer anderen Dateneinheit), zum Beispiel ein Teil der Größe S/M, von der ISP 120 verarbeitet und im Sendepuffer 134 gespeichert wurde, kann der TX-Controller 130 diesen Teil an ein zweites SoC 150 übertragen. Genauer gesagt kann die API 124 in einigen Ausführungsformen einen Interrupt konfigurieren, zum Beispiel einen Hardware-Interrupt (HW-Interrupt) 107, um zu erkennen, dass ein Teil der Größe S/M im TX-Puffer 134 gespeichert wurde, und den TX-Controller 130 veranlassen, diesen Teil des Bildes an die RX-Controller 160 zu übertragen. In einigen Ausführungsformen kann der Interrupt ein Software-Interrupt sein. In einigen Ausführungsformen kann der Interrupt so konfiguriert sein, dass er aktiviert wird, wenn die Größe S/M+∈ im TX-Puffer 134 gespeichert wurde, wobei ∈ ein zusätzlicher Datenteil ist, welcher von einer nachgeschalteten Anwendung (z. B. CV-Anwendung 170) zur Verarbeitung des S/M-Teils verwendet werden kann. Beispielsweise kann die Verarbeitung einer Pixelzeile durch die nachgelagerte Anwendung die Verwendung einer oder mehrerer benachbarter Zeilen beinhalten. Dementsprechend kann dem 1/M-ten Bruchteil der Frame-Daten S ein Stück ∈ hinzugefügt werden, bevor der Bruchteil an das zweite SoC 150 übertragen wird.
  • Der TX-Controller 130 kann mit dem RX-Controller 160 über den Kommunikationskanal 140 kommunizieren. Beispielsweise können/kann der TX-Controller 130 und/oder der RX-Controller 160 einen Root-Komplex, der PCIe-Operationen unterstützt, und einen oder mehrere Switches enthalten, um Nachrichten zwischen dem ersten SoC 102 und dem zweiten SoC 150 (und anderen Geräten) weiterzuleiten. Der TX-Controller 130 und/oder der RX-Controller 160 können/kann einen Protokollstapel enthalten, welcher von einer physikalischen Schicht, einer Datenverbindungsschicht, einer Transaktionsschicht und/oder anderen Schichten, die durch ein spezifisches Kommunikationsprotokoll definiert sein können, unterstützt wird. Der TX-Controller 130 und/oder der RX-Controller 160 können/kann auch einen (in 1 nicht dargestellten) Schichtenstapel enthalten, welcher die Interaktion des jeweiligen Controllers mit einem Host-Gerät (z. B. dem ersten SoC 102 oder dem zweiten SoC 150) unterstützt.
  • Der TX-Controller 130 kann den HW-Interrupt 107 (oder ein Software-Flag) erkennen, welcher (welches) anzeigt, dass ein Teil, zum Beispiel ein erster Teil, eines Bildes im TX-Puffer 134 gespeichert wurde. Das Fehlerprüfmodul 132 des TX-Controllers 130 kann auch die Integrität des ersten Teils überprüfen. So kann das Fehlerprüfmodul 132 beispielsweise auf gespeicherte (z. B. vom Fehlererkennungsmodul 118) Identitäten beschädigter oder fehlender Datenpakete zugreifen. Darüber hinaus kann das Fehlerprüfmodul 132 auf zusätzliche Fehler prüfen, welche während der Verarbeitung der ISP 120 des jeweiligen Teils aufgetreten sein könnten. In einigen Ausführungsformen kann das Fehlerprüfmodul 132 versuchen, solche zusätzlichen Fehler zu korrigieren.
  • Wenn das Fehlerprüfmodul 132 keine Fehler der ISP 120 (und keine fehlenden/beschädigten Datenpakete, welche während der Verarbeitung des ersten Teils in die ISP 120 eingegeben wurden) feststellt, kann das Fehlerprüfmodul 132 den TX-Controller 130 veranlassen, den ersten Teil an den RX-Controller 160 zu übermitteln, zum Beispiel, um den ersten Teil im RX-Puffer 166 zu speichern. Der TX-Controller 130 kann zusätzlich einen Indikator für einen guten Teil in einem Statuspuffer 164 des RX-Controllers 160 speichern, der der CV-Anwendung 170 anzeigt, dass ein guter (fehlerfreier) Teil angekommen ist.
  • Wenn das Fehlerprüfmodul 132 Fehler bei der Verarbeitung der ISP 120 feststellt (oder dass die ISP 120 den ersten Teil mit fehlenden/beschädigten Datenpaketen verarbeitet hat), kann das Fehlerprüfmodul 132 den TX-Controller 130 veranlassen, eine der folgenden Maßnahmen durchzuführen. Der TX-Controller 130 kann den ersten Teil verwerfen, indem er den ersten Teil nicht an den RX-Controller 160 übermittelt. Der TX-Controller 130 kann zusätzlich einen Indikator für einen fehlerhaften Teil im Statuspuffer 164 des RX-Controllers 160 speichern. Alternativ kann der TX-Controller 130 den ersten Teil an den RX-Controller 160 übermitteln (wobei der erste Teil im RX-Puffer 166 gespeichert wird) und auch den Indikator für einen fehlerhaften Teil in einem Statuspuffer 164 speichern. Der im Statuspuffer 164 gespeicherte Indikator für einen fehlerhafte Teil kann der CV-Anwendung 170 anzeigen, dass ein fehlerhafter (beschädigter) Teil angekommen ist oder dass kein Teil angekommen ist.
  • In einigen Ausführungsformen kann der RX-Controller 160 statt Durchführung von Speicher- (Schreib-) Operationen durch den TX-Controller 130 in den RX-Puffer 166 einen Lesevorgang durchführen, welche den ersten Teil des Bildes aus dem TX-Puffer 134 abruft und den ersten Teil im RX-Puffer 166 speichert. Ein solcher Lesevorgang kann als Reaktion auf die Speicherung eines Indikators für einen guten Teil durch den TX-Controller 130 im Statuspuffer 164 des RX-Controllers 160 oder einem ähnlichen Statuspuffer des TX-Controllers, der von dem RX-Controller 160 (z. B. periodisch) abgefragt werden kann, 130 durchgeführt werden. In dem Fall, in dem der RX-Controller 160 einen Indikator für einen schlechten Teil im Statuspuffer 164 (oder in einem ähnlichen Statuspuffer des TX-Controllers 130) erkennt, kann der RX-Controller 160 darauf verzichten, den Lesevorgang zum Abrufen des ersten Teils durchzuführen.
  • Ähnliche Vorgänge können für die Übertragung der übrigen M-1 Teile des Bildes durchgeführt werden. Folglich erfolgt die Übertragung des m-ten Teils, während der m+1-te Teil erzeugt wird, so dass nach Abschluss der Bilderzeugung nur noch der letzte Teil des Bildes an das zweite SoC 150 zu übermitteln ist. In einigen Ausführungsformen können Teile des Bildes im RX-Puffer 166 gesammelt werden, bis das vollständige Bild empfangen wird. In einigen Ausführungsformen kann jeder empfangene, zum Beispiel m-te, Teil des Bildes an eine Anwendung weitergeleitet werden, welche die Bilder verbraucht, beispielsweise die CV-Anwendung 170, während der nächste m+1-te Teil noch über den Kommunikationskanal 140 übertragen wird. Die Verarbeitung von Teilen von Bildern kann von fraktionierter Datenverarbeitung 174 durchgeführt werden, deren Operationen unter Verwendung einer API 172 programmiert und gesteuert werden können. In einigen Ausführungsformen kann die API 172 von der Host-Anwendung 190 und/oder einer anderen Anwendung konfiguriert sein, welche auf dem zweiten SoC 150 und/oder einer anderen Rechenvorrichtung, die kommunikativ mit dem zweiten SoC 150 verbunden ist, instanziiert sein kann. Die Ausgabe der CV-Anwendung 170, zum Beispiel Orte und Arten erkannter Objekte, Trajektorien der erkannten Objekte und/oder andere ermittelte Daten können über eine geeignete Eingabe-/Ausgabeschnittstelle 133 an die Host-Anwendung 190 übermittelt werden.
  • 2 ist ein schematisches Zeitdiagramm fraktionierter Datenübertragungen zwischen Verarbeitungsvorrichtungen in Live-Streaming- und/oder zeitkritischen Anwendungen gemäß mindestens einer Ausführungsform. Der obere Teil in 2 zeigt konventionelle Vollbilddatenübertragungen. Genauer gesagt geben der eine oder die mehreren Sensoren 110 rohe Pixel von CSI-Daten aus, welche von dem SI-Modul 112 empfangen werden. Das SI-Modul 112 deserialisiert die Rohdaten (z. B. Rohpixel) und stellt die deserialisierten Daten der ISP 120 bereit, wie schematisch durch ein Feld 202 dargestellt, dessen horizontale Ausdehnung die Dauer der SI-Verarbeitung veranschaulicht. Die ISP 120 erzeugt dann ein Bild (z. B. ein entmosaikiertes Bild), welches schematisch durch ein Feld 204 dargestellt ist, dessen horizontale Ausdehnung die Dauer der Bildverarbeitung veranschaulicht. Das erzeugte Bild wird im TX-Puffer 134 gespeichert, wie schematisch durch ein Feld 206 dargestellt, dessen horizontale Ausdehnung die Zeit des Speichervorgangs veranschaulicht. Das Bild wird anschließend vom TX-Puffer 134 an den RX-Puffer 166 übertragen, was schematisch durch ein Feld 208 dargestellt ist, dessen horizontale Ausdehnung die Zeit für die Datenübertragung zwischen den SoCs veranschaulicht.
  • Der untere Teil von 2 veranschaulicht fraktionierte Bilddatenübertragungen. Zu Beginn der Bildverarbeitung und -übertragung kann das erste SoC 102 eine Paketreferenz (nicht dargestellt) an den zweiten SoC 150 übermitteln, der Zeiger auf den TX-Puffer 134, den Statuspuffer 164 und den RX-Puffer 166 enthalten kann, und kann ferner ein Synchronisationsprimitiv erstellen, um den Abschluss einer Paketübertragung anzuzeigen. Jedes Paket kann ein oder mehrere Bilder (Frames) enthalten. Ähnlich wie bei der Vollbilddatenübertragung, welche im oberen Teil von 2 dargestellt ist, können der eine oder die mehreren Sensoren 110 Rohdaten ausgeben, die vom SI-Modul 112 empfangen werden. Nachdem das SI-Modul 112 den ersten 1/M-ten Teil der eingegebenen Rohdaten verarbeitet (z. B. deserialisiert) hat (der Fall von M=4 ist der Konkretheit halber dargestellt), kann der erste Teil an die ISP 120 weitergeleitet werden, wie durch das Feld 202-1 angezeigt, dessen horizontale Ausdehnung die Zeit für die Verarbeitung des ersten 1/M-ten Teils der Rohdaten veranschaulicht und etwa 1/M der Zeit für die Verarbeitung der vollständigen Daten betragen kann (Feld 202). Darüber hinaus kann das SI-Modul 112 auf verschiedene Fehler in den Rohdaten prüfen, beispielsweise auf einen abgeschnittenen Frame, fehlende EOF-Indikatoren (End-of-Frame, Ende des Frames), fehlende EOL-Indikatoren (End-of-Line, Ende der Zeile), das Vorhandensein von Pixeln eines falschen Datentyps, Fehler in Prüfsummen und/oder anderen EC- oder Paritätssymbolen und/oder Ähnliches. Die ISP 120 erzeugt dann den ersten 1/M-ten Teil des Frames (Feld 204-1 von etwa 11M der Ausdehnung des Feldes 204). Der erste Teil des Frames kann dann im TX-Puffer 134 (Feld 206-1 von ungefähr 1/M der Ausdehnung von Feld 206) gespeichert werden. Sobald der erste Teil im TX-Puffer 134 empfangen wurde, kann der erste Teil vom TX-Puffer 134 an den RX-Puffer 166 übermittelt werden, wie schematisch durch ein Feld 208-1 dargestellt, dessen horizontale Ausdehnung die Zeit für die Datenübertragung zwischen den SoCs veranschaulicht und etwa 1/M der Zeit für die Übermittlung des vollständigen Bildes (Feld 206) beträgt. Sobald die nachfolgenden Teile der Rohdaten von dem SI-Modul 112 (Felder 202-2, 202-3 und 202-4) verarbeitet und von der ISP 120 in die jeweiligen Teile des Bildes (Frames) (Felder 204-2, 204-3 und 204-4) umgewandelt wurden, können diese Teile des Bildes (Frames) im TX-Puffer 134 (Felder 206-2, 206-3 und 206-4) gespeichert und anschließend an den RX-Puffer 166 (Felder 208-2, 208-3 und 208-4) übermittelt werden. Bevor jeder Teil des Bildes (Frames) an das zweite SoC 150 übermittelt wird, kann das Fehlerprüfmodul 132 des TX-Controllers 130 überprüfen, ob die von dem/den Sensor(en) 110 empfangenen Rohdaten fehlerfrei waren (z. B. durch Empfang der Prüfsumme oder anderer Paritätsdaten vom Fehlererkennungsmodul 118 des SI-Moduls 112), und kann ferner überprüfen, ob während der Verarbeitung durch die ISP 120 keine zusätzlichen Fehler aufgetreten sind. Der TX-Controller 130 kann den Statuspuffer 164 mit einer Anzeige aktualisieren, dass das vollständige Bild (Frame) an den RX-Puffer 166 übermittelt wurde. In einigen Ausführungsformen kann der Statuspuffer 164 nach Übermittlung jedes Teils des Bildes (Frames) an den RX-Puffer 166 aktualisiert werden. Nach dem Empfang des Bildes (Framens) durch den RX-Controller 160 kann das Fehlerprüfmodul 162 des RX-Controllers 160 eine Fehlererkennung/-korrektur des empfangenen Bildes (Frames) durchführen und den Bildframe an die CV-Anwendung 170 weiterleiten, wenn keine Fehler festgestellt werden. In einigen Ausführungsformen kann das Fehlerprüfmodul 162 des RX-Controllers 160 eine Fehlererkennung/-korrektur für einzelne Teile des empfangenen Bildes (Rahmens) durchführen, bevor es die einzelnen Teile an die CV-Anwendung 170 weiterleitet. Zu den Vorteilen der in 2 dargestellten fraktionierten Datenkommunikation gehören die schnellere (durch die Verkürzung der Zeit Δt dargestellte) Lieferung von Bildern (Frames) an das zweite SoC 150 (oder jede andere Empfangsvorrichtung) und eine gleichmäßigere zeitliche Verteilung des Datenverkehrs zwischen SI-Modul 112 und ISP 120, zwischen ISP 120 und TX-Puffer 134 und zwischen TX-Puffer 134 und RX-Puffer 166.
  • 3A-B sind schematische Zeitdiagramme zur Veranschaulichung fraktionierter Datenübertragungen zwischen Verarbeitungsvorrichtungen in Live-Streaming- und/oder zeitkritischen Anwendungen in den Fällen der Identifizierung nicht zu behebender Fehler gemäß mindestens einer Ausführungsform. Fehler können durch elektromagnetische Störungen, Energieinstabilitäten, mechanische Erschütterungen oder Stöße und/oder von anderen Gründen verursacht werden. Zu den Fehlern können beliebige Fehler in den Rohdaten gehören, zum Beispiel solche, die vom Fehlererkennungsmodul 118 des SI-Moduls 112 erkannt wurden, beliebige Fehler, welche während der Verarbeitung durch die ISP 120 oder der Speicherung im TX-Puffer 134 aufgetreten sind, zum Beispiel solche, die vom Fehlerprüfmodul 132 des TX-Controllers 130 erkannt wurden, oder beliebige Fehler, welche während der Übertragung vom TX-Puffer 134 zum RX-Puffer 166 aufgetreten sind, zum Beispiel solche, die vom Fehlerprüfmodul 162 des RX-Controllers 160 erkannt wurden, und/oder beliebige andere erkannte Fehler. Die Fehlererkennung kann unter Verwendung von Reed-Solomon-EC-Codes, Hamming-EC-Codes, Einzel-Fehlerkorrektur/Doppelfehlererkennungs-Codes oder anderen geeigneten EC-Codes durchgeführt werden. In einigen Fällen, wenn beispielsweise die erkannten Fehler behebbar sind, kann die Übertragung des reparierten Bildes (Frames) wie zuvor im Zusammenhang mit 2 beschrieben erfolgen. In den Fällen, in denen die erkannten Fehler nicht behebbar sind (z. B. wenn einige Daten fehlen oder die Anzahl der Fehler die Kapazität der verwendeten EC-Codes übersteigt), wie schematisch mit einem Kreuz in dem jeweiligen Feld dargestellt, kann der entsprechende Teil des Bildes (Frames) verworfen werden. Wenn beispielsweise, wie in 3A dargestellt, ein nicht zu behebender Fehler (z. B. fehlende Pixel oder Pixelzeilen) in den Rohdaten auftritt (wie durch das Kreuz in Feld 202-2 angezeigt), kann die anschließende Verarbeitung durch die ISP 120 dazu führen, dass der beschädigte Teil des Bildes (Frames) erzeugt wird (z. B. wie durch das Kreuz in Feld 204-4 angezeigt) und im TX-Puffer 134 gespeichert wird (z. B. wie durch das Kreuz in Feld 206-4 angezeigt).
  • In einigen Fällen können die Rohdaten fehlerfrei sein, aber der Fehler kann während der Verarbeitung durch die ISP 120 und/oder der Speicherung im TX-Puffer 134 auftreten. In einigen Ausführungsformen können der eine oder die mehreren beschädigten Teile des Bildes (Frames) immer noch an den RX-Puffer 166 (Feld 208-2) übertragen werden, beispielsweise zusammen mit einem Indikator oder einer Markierung, der/die im Statuspuffer 164 gespeichert ist und anzeigt, dass der entsprechende Teil des Bildframes (z. B. der zweite Teil im Beispiel von 3A) zu verwerfen ist. In einigen Ausführungsformen, wie durch das gestrichelte Feld 208-2 dargestellt, wird der beschädigte Teil des Bildes (Frames) nicht an den RX-Puffer 166 übertragen, während die Anzeige auf den einen oder die mehreren beschädigten Teile weiterhin im Statuspuffer 164 oder im RX-Puffer 166 gespeichert werden kann. In einigen Ausführungsformen, in denen der eine oder die mehreren beschädigten Teile nicht an den RX-Puffer 166 übertragen wird/werden, kann der RX-Controller 160 feststellen, dass der eine oder die mehreren entsprechenden Teile fehlen, beispielsweise anhand einer Lücke in der Teilkennung, die vom nächsten angekommenen Teil (der zum selben oder einem nachfolgenden Bild gehören kann) erhalten wird.
  • In einigen Ausführungsformen können, sobald ein beschädigter Teil eines Bildes (Rahmens) erkannt wurde, die zuvor übermittelten Teile desselben Bildes (Rahmens) verworfen werden. Wie in 3A dargestellt, kann zum Beispiel der zuvor empfangene erste Teil desselben Bildes (Frames) verworfen werden. Die nachfolgenden Teile desselben Bildes (Frames), sofern sie erzeugt wurden, können ebenfalls verworfen werden. Der Statuspuffer 164 kann mit einer Anzeige aktualisiert werden, dass das Bild (der Frame) verworfen wird. In einigen Ausführungsformen kann der TX-Controller 130, sobald ein beschädigter Teil eines Bildes erkannt wurde, die Übermittlung nachfolgender Teile desselben Bildes (Frames) an das zweite SoC 150 beenden. In einigen Ausführungsformen können die nachfolgenden Teile weiterhin an das zweite SoC 150 übermittelt werden, wobei der RX-Controller 160 alle empfangenen Teile des Frames verwerfen kann, ohne einen der Teile an die CV-Anwendung 170 zu übermitteln.
  • In einigen Ausführungsformen können nur die beschädigten Teile des Bildes (Frames) verworfen werden, während gute (nicht beschädigte oder erfolgreich reparierte) Teile desselben Bildes (Frames) an das zweite SoC 150 übertragen werden können. Beispielsweise kann, wie in 3B dargestellt, der zweite Teil des Bildes verworfen werden, während der erste, der dritte und der vierte Teil an den RX-Puffer 166 übertragen werden können. Der Statuspuffer 164 kann mit einer Anzeige aktualisiert werden, welche Teile verworfen und welche Teile übertragen wurden. In einigen Ausführungsformen können alle Teile, einschließlich des einen oder der mehreren beschädigten Teile, an das zweite SoC 150 übertragen werden, während ein Indikator, der einen beschädigten Bereich anzeigt (z. B. einen beschädigten Bereich von Pixeln oder eine beschädigte Zeile von Pixeln), im Statuspuffer 164 gespeichert werden kann. Dementsprechend kann der RX-Controller 160 den beschädigten Bereich verwerfen und den einen oder die mehreren nicht beschädigten Bereiche des beschädigten Teils an die CV-Anwendung 170 übermitteln.
  • 4-7 sind Flussdiagramme beispielhafter Verfahren 400-700 fraktionierter Datenübertragungen zwischen Verarbeitungsvorrichtungen in Live-Streaming- und/oder zeitkritischen Anwendungen gemäß einigen Ausführungsformen der vorliegenden Erfindung. Die Verfahren 400-700 können im Zusammenhang mit autonomen Fahranwendungen, industriellen Steuerungsanwendungen, Bereitstellung von Streaming-Diensten, Videoüberwachungsdiensten, auf Computervision basierenden Diensten, Diensten der künstlichen Intelligenz und des maschinellen Lernens, Kartierungsdiensten, Spieldiensten, Diensten der virtuellen oder erweiterten Realität und in vielen anderen Kontexten und/oder in Systemen und Anwendungen zur Bereitstellung eines oder mehrerer der vorgenannten Dienste durchgeführt werden. Die Verfahren 400-700 können unter Verwendung einer oder mehrerer Verarbeitungseinheiten (z. B. CPUs, GPUs, Beschleuniger, PPUs, DPUs etc.), welche eine oder mehrere Speichervorrichtungen umfassen (oder mit diesen kommunizieren) können, durchgeführt werden. In mindestens einer Ausführungsform können die Verfahren 400-700 unter Verwendung des ersten SoC 102 und des zweiten SoC 150 von 1 durchgeführt werden. In mindestens einer Ausführungsform können die Verarbeitungseinheiten, welche eines der Verfahren 400-700 durchführen, Anweisungen ausführen, welche auf einem nicht flüchtigen computerlesbaren Speichermedium gespeichert sind. In mindestens einer Ausführungsform kann jedes der Verfahren 400-700 unter Verwendung mehrerer Verarbeitungs-Threads (z. B. CPU-Threads und/oder GPU-Threads) durchgeführt werden, wobei einzelne Threads eine oder mehrere einzelne Funktionen, Routinen, Subroutinen oder Operationen des Verfahrens ausführen. In mindestens einer Ausführungsform können Verarbeitungs-Threads, welche eines der Verfahren 400-700 implementieren, synchronisiert werden (z. B. unter Verwendung von Semaphoren, kritischen Abschnitten und/oder anderen Thread-Synchronisierungsmechanismen). Alternativ dazu können Verarbeitungs-Threads, welche eines der Verfahren 400-700 implementieren, asynchron zueinander ausgeführt werden. Verschiedene Operationen der Verfahren 500 und/oder 600 können in einer anderen Reihenfolge als in der in den 4-7 ausgeführt werden. Einige Operationen eines der Verfahren 400-700 können gleichzeitig mit anderen Operationen ausgeführt werden. In mindestens einer Ausführungsform können ein oder mehrere der in den 4-7 gezeigten Operationen nicht immer ausgeführt werden.
  • 4 ist ein Flussdiagramm eines beispielhaften Verfahrens 400 fraktionierter Datenübertragungen, wie es von einer Übertragungsvorrichtung gemäß mindestens einer Ausführungsform durchgeführt werden kann. In Block 410 kann das Verfahren 400 die Verarbeitung von Bilddaten (z. B. rohe Pixeldaten) durch eine erste Verarbeitungsvorrichtung (z. B. SoC 102 in 1) umfassen, um eine Vielzahl von Teilen eines Bildes zu erzeugen. Das Bild kann ein Videoframe eines Videos (oder eine andere zeitliche Abfolge von Bildern) sein (oder beinhalten), das von einer Videokamera oder einer anderen Sensorvorrichtung, einschließlich einer Lidar-Vorrichtung, einer Radar-Vorrichtung, einer Sonar-Vorrichtung und dergleichen, erfasst wurde. In einigen Ausführungsformen sind unter „Bilddaten“ auch Audiodaten zu verstehen, welche zusammen mit visuellen Bildern gestreamt werden. In einigen Ausführungsformen sind unter „Bilddaten“ beliebige digitale Daten zu verstehen, zum Beispiel Audiodaten, welche ohne visuelle Bilder gestreamt werden, beliebige andere Sensordaten (z. B. industrielle Prozessüberwachungsdaten) oder beliebige digitale Daten, welche in diskrete Einheiten aufgeteilt sind (hier als „Bilder“ bezeichnet), die mit unterschiedlichen Zeitstempeln verknüpft sein können. In Block 420 kann die erste Verarbeitungsvorrichtung als Reaktion auf die Erzeugung eines ersten Teils der mehreren Teile des Bildes den ersten Teil in einer ersten Speichervorrichtung (z. B. TX-Puffer 134) der ersten Verarbeitungsvorrichtung speichern. Die Termini „erster Teil“ und „zweiter Teil“ sind in dieser Erfindung als Indikatoren für beliebige Teile des Bildes zu verstehen und implizieren keine zeitliche, logische oder kontextuelle Reihenfolge.
  • In Block 430 kann das Verfahren 400 mit der ersten Verarbeitungsvorrichtung fortgesetzt werden, die einen Fertigstellungsindikator für den ersten Teil setzt. In einigen Ausführungsformen kann der Fertigstellungsindikator auf die erste Verarbeitungsvorrichtung gesetzt werden. In einigen Ausführungsformen kann der Fertigstellungsindikator auf die zweite Verarbeitungsvorrichtung gesetzt werden (z. B. im Statuspuffer 164 des RX-Controllers 160 oder einer anderen geeigneten Speichervorrichtung). Wie in dem oberen Textfeld von 4 angegeben, kann in Block 432 das Setzen des Fertigstellungsindikators für den ersten Teil als Reaktion auf einen Hardware-Interrupt erfolgen, die feststellt, dass ein vorbestimmter Bruchteil des Bildes erzeugt wurde (z. B. die Hälfte des Bildes, ein Viertel des Bildes etc.).
  • In Block 440 kann das Verfahren 400 damit fortfahren, den ersten Teil der zweiten Verarbeitungsvorrichtung bereitzustellen. In einigen Ausführungsformen, wie in dem unteren Textfeld 4 angegeben, kann das Bereitstellen des ersten Teils für die zweite Verarbeitungsvorrichtung unter Verwendung einer Reihe von Optionen erfolgen. In einigen Ausführungsformen kann die erste Verarbeitungsvorrichtung, wie in Block 442 angegeben, einen direkten Schreibvorgang durchführen, um den ersten Teil in einer zweiten Speichervorrichtung (z. B. RX-Puffer 166) der zweiten Verarbeitungsvorrichtung zu speichern. In einigen Ausführungsformen kann die erste Verarbeitungsvorrichtung, wie in Block 444 angegeben, den Fertigstellungsindikator an die zweite Verarbeitungsvorrichtung übermitteln, um die zweite Verarbeitungsvorrichtung zu veranlassen, einen Lesevorgang durchzuführen, damit der erste Teil aus der ersten Speichervorrichtung abgerufen wird. Die Blöcke 420-440 können für andere Teile desselben Bildes und für andere Bilder, die gestreamt werden, wiederholt werden. In einigen Ausführungsformen wird der erste Teil von der ersten Verarbeitungsvorrichtung der zweiten Verarbeitungsvorrichtung über eine Peripheral Component Interconnect Express (PCIe)-Verbindung, eine Compute Express Link (CXL)-Verbindung oder eine NVLink-Verbindung bereitgestellt.
  • 5 ist ein Flussdiagramm eines beispielhaften Verfahrens 500 fraktionierter Datenübertragungen mit nicht korrigierbaren Fehlern, wie es von einer Übertragungsvorrichtung gemäß mindestens einer Ausführungsform durchgeführt werden kann. Das Verfahren 500 kann in einigen Ausführungsformen zusammen mit dem Verfahren 400 durchgeführt werden. Das Verfahren 500 kann Erzeugung eines zweiten Teils einer Vielzahl von Teilen eines Bildes beinhalten. In einigen Fällen können der zweite Teil und der erste Teil Teile desselben Bildes sein. Der zweite Teil kann vor dem ersten Teil, nach dem ersten Teil oder gleichzeitig mit dem ersten Teil erzeugt werden (z. B. in den Fällen, in denen mehrere Teile parallel erzeugt werden). In Block 510 kann die erste Verarbeitungsvorrichtung als Reaktion auf Erzeugung des zweiten Teils den zweiten Teil in der ersten Speichervorrichtung speichern.
  • In Block 520 kann das Verfahren 500 damit fortfahren, dass die erste Verarbeitungsvorrichtung feststellt, dass der zweite Teil mit einem oder mehreren Fehlern erzeugt wurde. In einigen Ausführungsformen kann das Verfahren 500 beinhalten, dass in Block 530 veranlasst wird, dass der zweite Teil der zweiten Verarbeitungsvorrichtung bereitgestellt wird (z. B. wie oben in Verbindung mit den Blöcken 442-444 des Verfahrens 400 beschrieben). In einigen Ausführungsformen kann die erste Verarbeitungsvorrichtung als Reaktion auf die Feststellung, dass der zweite Teil mit einem oder mehreren Fehlern erzeugt wurde, verhindern, dass der zweite Teil der zweiten Verarbeitungsvorrichtung bereitgestellt wird (z. B. kann der zweite Teil verworfen werden).
  • In Block 540 kann das Verfahren 500 das Setzen eines für die zweite Verarbeitungsvorrichtung zugreifbaren Indikators für einen beschädigten Teil beinhalten. In einigen Ausführungsformen kann der Indikator für den beschädigten Teil eine Identifizierung des Bildes enthalten. In einigen Ausführungsformen kann der Indikator für den beschädigten Teil eine Identifizierung des zweiten Teils enthalten. In einigen Ausführungsformen kann der Indikator für den beschädigten Teil eine Identifizierung eines beschädigten Bereichs des zweiten Teils (Indikator für einen schlechten Bereich), eines nicht beschädigten Bereichs des zweiten Teils (Indikator für einen guten Bereich) oder beides enthalten.
  • 6 ist ein Flussdiagramm eines beispielhaften Verfahrens 600 fraktionierter Datenübertragungen, wie es von einer Empfangsvorrichtung gemäß mindestens einer Ausführungsform durchgeführt werden kann. Im Block 610 kann das Verfahren 600 Empfang eines Fertigstellungsindikators von einer ersten Verarbeitungsvorrichtung durch eine zweite Verarbeitungsvorrichtung umfassen, wobei der Indikator anzeigt, dass ein erster Teil einer Vielzahl von Teilen eines Bildes von der ersten Verarbeitungsvorrichtung erzeugt wurde. In einigen Ausführungsformen kann der Fertigstellungsindikator auf die erste Verarbeitungsvorrichtung gesetzt werden. In einigen Ausführungsformen kann der Fertigstellungsindikator auf die zweite Verarbeitungsvorrichtung gesetzt werden (z. B. im Statuspuffer 164 des RX-Controllers 160). In Block 620 kann das Verfahren 600 mit dem Empfang des ersten Teils von der ersten Verarbeitungsvorrichtung durch die zweite Verarbeitungsvorrichtung fortgesetzt werden. In einigen Ausführungsformen kann der Empfang des ersten Teils unter Verwendung einer Reihe von Optionen durchgeführt werden, wie in der 6 dargestellt. In einigen Ausführungsformen, wie mit Block 622 angezeigt, kann das Verfahren 600 den Empfang des ersten Teils über einen Schreibvorgang, der von der ersten Verarbeitungsvorrichtung durchgeführt wird, umfassen. Der Schreibvorgang kann den ersten Teil in einer Speichervorrichtung der zweiten Verarbeitungsvorrichtung (z. B. im RX-Puffer 166) speichern. In einigen Ausführungsformen kann der erste Teil, wie in Block 624 angegeben, über einen von der zweiten Verarbeitungsvorrichtung durchgeführten Lesevorgang empfangen werden. Der Lesevorgang kann den ersten Teil in der Speichervorrichtung der zweiten Verarbeitungsvorrichtung speichern. In Block 630 kann das Verfahren 600 mit der Durchführung einer Bildverarbeitungsoperation durch die zweite Verarbeitungsvorrichtung unter Verwendung des empfangenen ersten Teils fortfahren. Die Bildverarbeitungsoperation kann die Durchführung einer Objekterkennung (oder eines anderen Rechenvorgangs) unter Verwendung mindestens des ersten Teils umfassen.
  • 7 ist ein Flussdiagramm eines beispielhaften Verfahrens 700 für fraktionierte Datenübertragungen mit nicht zu behebenden Fehlern, wie es von einer Empfangsvorrichtung gemäß mindestens einer Ausführungsform durchgeführt werden kann. Das Verfahren 700 kann in einigen Ausführungsformen zusammen mit dem Verfahren 600 durchgeführt werden. In Block 710 kann das Verfahren 700 Empfang eines zweiten Teils der Vielzahl von Teilen des Bildes von der ersten Verarbeitungsvorrichtung durch die zweite Verarbeitungsvorrichtung umfassen. In einigen Fällen können der zweite Teil und der erste Teil Teile desselben Bildes sein. Der zweite Teil kann vor dem ersten Teil, nach dem ersten Teil oder gleichzeitig mit dem ersten Teil erzeugt werden (z. B. in den Fällen, in denen mehrere Teile parallel erzeugt werden). In Block 720 kann das Verfahren 700 Empfang eines Indikators für einen beschädigten Teil von der ersten Verarbeitungsvorrichtung durch die zweite Verarbeitungsvorrichtung umfassen, wobei der Indikator anzeigt, dass der zweite Teil mit einem oder mehreren Fehlern erzeugt wurde. In einigen Ausführungsformen kann der Indikator für den beschädigten Teil ferner einen beschädigten Bereich des zweiten Teils spezifizieren, zum Beispiel einen Indikator für einen schlechten Bereich, der einen Bereich von beschädigten Pixeln oder Zeilen von Pixeln identifiziert, und/oder einen Indikator für einen guten Bereich, der einen Bereich von nicht beschädigten Pixeln oder Zeilen von Pixeln identifiziert. In Block 730 kann das Verfahren 700 Verwerfen des zweiten Teils beinhalten, zum Beispiel das Verhindern, dass der zweite Teil an die CV-Anwendung 170, die Host-Anwendung 190 und/oder jede andere relevante Anwendung übermittelt wird. In einigen Ausführungsformen kann, wie in Block 732 angegeben, der Indikator für den beschädigten Teil verwendet werden, um einen nicht beschädigten Bereich des zweiten Teils zu identifizieren und den nicht beschädigten Bereich an die CV-Anwendung 170, die Host-Anwendung 190 und/oder eine andere relevante Anwendung zu übermitteln. In Block 740 kann das Verfahren 700 mit der Durchführung der Bildverarbeitungsoperation unter Verwendung des nicht beschädigten Bereichs des zweiten Teils fortfahren, beispielsweise identifiziert durch den Indikator für einen guten Bereich.
  • 8 zeigt ein Blockdiagramm einer beispielhaften Computeranlage 800, die gemäß mindestens einer Ausführungsform in der Lage ist, fraktionierte Datenübertragungen zwischen Verarbeitungsvorrichtungen in Echtzeit-Datenerzeugungs- und Streaming-Anwendungen zu implementieren. Die beispielhafte Computeranlage 800 kann mit anderen Rechenanlagen in einem LAN, einem Intranet, einem Extranet und/oder dem Internet verbunden sein. Die Computeranlage 800 kann in der Funktion eines Servers in einer Client-Server-Netzwerkumgebung arbeiten. Bei der Computeranlage 800 kann es sich um einen Personal Computer (PC), eine Set-Top-Box (STB), einen Server, einen Netzwerk-Router, einen Switch oder eine Bridge oder um eine beliebige Vorrichtung handeln, welche in der Lage ist, einen Satz von Anweisungen, der von dieser Vorrichtung auszuführende Aktionen spezifiziert, (sequentiell oder anderweitig) auszuführen. Während nur eine einzige beispielhafte Computeranlage abgebildet ist, soll der Terminus „Computer“ auch eine beliebige Sammlung von Computern umfassen, welche einzeln oder gemeinsam einen Satz (oder mehrere Sätze) von Anweisungen ausführen, um eine oder mehrere der hier beschriebenen Verfahren durchzuführen.
  • Die beispielhafte Computeranlage 800 kann eine Verarbeitungsvorrichtung 802 (auch als Prozessor oder CPU bezeichnet), einen Hauptspeicher 804 (z. B. Festwertspeicher (ROM), Flash-Speicher, dynamischer Direktzugriffsspeicher (DRAM) wie synchroner DRAM (SDRAM) etc.), einen statischen Speicher 806 (z. B. Flash-Speicher, statischer Direktzugriffsspeicher (SRAM) etc.) und einen Sekundärspeicher (z. B. eine Datenspeichervorrichtung 818) umfassen, welche über einen Bus 830 miteinander kommunizieren können.
  • Die Verarbeitungsvorrichtung 802 (die die Verarbeitungslogik 803 enthalten kann) stellt eine oder mehrere Universalverarbeitungsvorrichtungen dar, wie zum Beispiel einen Mikroprozessor, eine zentrale Verarbeitungseinheit oder dergleichen. Insbesondere kann die Verarbeitungsvorrichtung 802 ein CISC-Mikroprozessor (Complex Instruction Set Computing), ein RISC-Mikroprozessor (Reduced Instruction Set Computing), ein VLIW-Mikroprozessor (Very Long Instruction Word), ein Prozessor, welcher andere Befehlssätze implementiert, oder ein Prozessor sein, welcher eine Kombination von Befehlssätzen implementiert. Bei der Verarbeitungsvorrichtung 802 kann es sich auch um eine oder mehrere Verarbeitungsvorrichtungen für spezielle Zwecke handeln, wie zum Beispiel eine anwendungsspezifische integrierte Schaltung (ASIC), ein feldprogrammierbares Gate-Array (FPGA), einen digitalen Signalprozessor (DSP), einen Netzwerkprozessor oder dergleichen. Gemäß einem oder mehreren Aspekten der vorliegenden Erfindung kann die Verarbeitungsvorrichtung 802 ausgelegt sein, Anweisungen auszuführen, welche Verfahren 400-700 für fraktionierte Datenübertragungen zwischen Verarbeitungsvorrichtungen bei Live-Streaming- und/oder zeitkritischen Anwendungen ausführen.
  • Die beispielhafte Computeranlage 800 kann ferner eine Netzwerkschnittstellenvorrichtung 808 umfassen, welche kommunikativ mit einem Netzwerk 820 gekoppelt sein kann. Die beispielhafte Computeranlage 800 kann ferner eine Videoanzeige 810 (z. B. eine Flüssigkristallanzeige (LCD), einen Touchscreen oder eine Kathodenstrahlröhre (CRT)), ein alphanumerisches Eingabegerät 812 (z. B. eine Tastatur), ein Cursorsteuerungsgerät 814 (z. B. eine Maus) und ein Gerät zur Erzeugung akustischer Signale 816 (z. B. einen Lautsprecher) umfassen.
  • Die Datenspeichervorrichtung 818 kann ein computerlesbares Speichermedium (oder, genauer gesagt, ein nichttransitorisches computerlesbares Speichermedium) 828 enthalten, auf dem ein oder mehrere Sätze ausführbarer Anweisungen 822 gespeichert sind. Gemäß einem oder mehreren Aspekten der vorliegenden Erfindung können die ausführbaren Anweisungen 822 ausführbare Anweisungen umfassen, welche das Verfahren 400 zur Durchführung von GPU-Ferndirektspeicherzugriffsoperationen mit speichereffizienter Paketverarbeitung ausführen.
  • Ausführbare Anweisungen 822 können sich auch vollständig oder zumindest teilweise im Hauptspeicher 804 und/oder in der Verarbeitungsvorrichtung 802 befinden, während sie von der beispielhaften Computeranlage 800 ausgeführt werden, wobei der Hauptspeicher 804 und die Verarbeitungsvorrichtung 802 auch computerlesbare Speichermedien darstellen. Ausführbare Anweisungen 822 können ferner über ein Netzwerk über die Netzwerkschnittstellenvorrichtung 808 gesendet oder empfangen werden.
  • Während das computerlesbare Speichermedium 828 in 8 als ein einzelnes Medium dargestellt ist, sollte der Terminus „computerlesbares Speichermedium“ so verstanden werden, dass er ein einzelnes Medium oder mehrere Medien (z. B. eine zentralisierte oder verteilte Datenbank und/oder zugehörige Caches und Server) umfasst, welche den einen oder mehrere Sätze von Arbeitsanweisungen speichern. Der Terminus „computerlesbares Speichermedium“ soll auch jedes Medium umfassen, welches in der Lage ist, einen Satz von Anweisungen zur Ausführung durch die Maschine, die die Maschine zur Durchführung eines oder mehrerer der hier beschriebenen Verfahren veranlassen, zu speichern oder zu kodieren. Der Terminus „computerlesbares Speichermedium“ umfasst dementsprechend Festkörperspeicher sowie optische und magnetische Medien, ohne auf diese beschränkt zu sein.
  • Einige Teile der obigen detaillierten Beschreibungen sind in der Form von Algorithmen und symbolischen Darstellungen von Operationen an Datenbits in einem Computerspeicher dargestellt. Diese algorithmischen Beschreibungen und Darstellungen sind die Mittel, die von Fachleuten der Datenverarbeitung verwendet werden, um anderen Fachleuten auf diesem Gebiet den Inhalt ihrer Arbeit am effektivsten zu vermitteln. Ein Algorithmus wird hier und im Allgemeinen als eine in sich konsistente Abfolge von Schritten verstanden, welche zu einem gewünschten Ergebnis führen. Bei den Schritten handelt es sich um solche, die physikalische Manipulationen von physikalischen Größen erfordern. Normalerweise, wenn auch nicht notwendigerweise, haben diese Größen die Form elektrischer oder magnetischer Signale, welche gespeichert, übertragen, kombiniert, verglichen und anderweitig manipuliert werden können. Zuweilen hat es sich als zweckmäßig erwiesen, vor allem aus Gründen des allgemeinen Sprachgebrauchs, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Termini, Zahlen oder dergleichen zu bezeichnen.
  • Es ist jedoch zu beachten, dass alle diese und ähnliche Termini mit den entsprechenden physikalischen Größen zu verknüpfen sind und lediglich praktische Bezeichnungen für diese Größen darstellen. Sofern nicht ausdrücklich anders angegeben, wie aus der folgenden Diskussion ersichtlich, wird davon ausgegangen, dass sich in der gesamten Beschreibung Diskussionen mit Termini wie „Identifizieren“, „Bestimmen“, „Speichern“, „Einstellen““, „Verursachen“, „Zurückgeben“, „Vergleichen“, „Erzeugen“, „Anhalten“, „Laden“, „Kopieren“, „Werfen“, „Ersetzen“, „Durchführen“ oder dergleichen, auf die Aktionen und Prozesse eines Computersystems oder einer ähnlichen elektronischen Rechenvorrichtung beziehen, welche Daten, die als physikalische (elektronische) Größen in den Registern und Speichern des Computersystems dargestellt werden, manipuliert und in andere Daten umwandelt, die in ähnlicher Weise als physikalische Größen in den Speichern oder Registern innerhalb des Computersystems oder in anderen derartigen Geräten zur Speicherung, Übertragung oder Anzeige von Informationen dargestellt sind.
  • Beispiele der vorliegenden Erfindung betreffen auch eine Anlage zur Durchführung der hier beschriebenen Verfahren. Diese Anlage kann speziell für die erforderlichen Zwecke konstruiert sein, oder es kann ein Universalcomputersystem sein, welches selektiv durch ein im Computersystem gespeichertes Computerprogramm programmiert wird. Ein solches Computerprogramm kann in einem computerlesbaren Speichermedium gespeichert sein, wie zum Beispiel, aber nicht beschränkt auf, jede Art von Diskette, einschließlich optischer Disketten, CD-ROMs und magnetisch-optischer Disketten, Festwertspeicher (ROMs), Speicher mit wahlfreiem Zugriff (RAMs), EPROMs, EEPROMs, Magnetplattenspeichermedien, optische Speichermedien, Flash-Speichervorrichtungen, andere Arten von maschinell zugänglichen Speichermedien oder jede Art von Medien, welche zum Speichern elektronischer Anweisungen geeignet sind und jeweils mit einem Computersystembus verbunden sind.
  • Die hier vorgestellten Verfahren und Anzeigen sind nicht von Natur aus an einen bestimmten Computer oder ein anderes Gerät gebunden. Verschiedene Universalsysteme können mit Programmen in Übereinstimmung mit den hier dargestellten Erkenntnissen verwendet werden, oder es kann sich als zweckmäßig erweisen, ein spezialisierteres Gerät zu konstruieren, um die erforderlichen Verfahrensschritte durchzuführen. Die erforderliche Struktur für eine Vielzahl dieser Systeme wird in der folgenden Beschreibung dargestellt. Darüber hinaus ist der Umfang der vorliegenden Erfindung nicht auf eine bestimmte Programmiersprache beschränkt. Es versteht sich, dass eine Vielzahl von Programmiersprachen verwendet werden kann, um die Erkenntnisse der vorliegenden Erfindung zu implementieren.
  • Es versteht sich, dass die obige Beschreibung der Veranschaulichung dient und nicht als Einschränkung aufzufassen ist. Viele andere Realisierungsbeispiele werden dem Fachmann beim Lesen und Verstehen der obigen Beschreibung offensichtlich sein. Obwohl die vorliegende Erfindung spezifische Beispiele beschreibt, versteht es sich, dass die Systeme und Verfahren der vorliegenden Erfindung nicht auf die hier beschriebenen Beispiele beschränkt sind, sondern mit Modifikationen im Rahmen der beigefügten Ansprüche in die Praxis umgesetzt werden können. Dementsprechend sind die Beschreibung und die Zeichnungen eher veranschaulichend als einschränkend zu verstehen. Daher sollte der Umfang der vorliegenden Erfindung mit Verweis auf die beigefügten Ansprüche zusammen mit dem vollen Umfang der Äquivalente, auf die diese Ansprüche ein Recht erheben, festgelegt werden.
  • Andere Variationen sind im Sinne der vorliegenden Erfindung. Während die offenbarten Techniken für verschiedene Modifikationen und alternative Konstruktionen geeignet sind, sind bestimmte veranschaulichende Ausführungsformen von ihnen in den Zeichnungen dargestellt und vorangehend detailliert beschrieben. Es versteht sich jedoch, dass nicht beabsichtigt ist, die Erfindung auf eine bestimmte Form oder bestimmte Formen zu beschränken, sondern dass im Gegenteil beabsichtigt ist, alle Modifikationen, alternativen Konstruktionen und Äquivalente abzudecken, die in den Geist und den Umfang der Erfindung, wie in den beigefügten Ansprüchen definiert, fallen.
  • Die Termini „ein“ und „der/die/das“ und ähnliche Formulierungen im Zusammenhang mit der Beschreibung offenbarter Ausführungsformen (insbesondere im Zusammenhang mit den folgenden Ansprüchen) sind so auszulegen, dass sie sowohl die Einzahl als auch die Mehrzahl umfassen, sofern hier nicht anders angegeben oder durch den Kontext eindeutig widerlegt, und nicht als Definition eines Terminus. Die Termini „umfassen“, „mit/haben“, „einschließen“ und „enthalten“ sind, sofern nicht anders angegeben, als offene Begriffe zu verstehen (im Sinne von „einschließlich, aber nicht beschränkt auf“). Der Terminus „verbunden“ ist, wenn er unverändert ist und sich auf physische Verbindungen bezieht, als teilweise oder ganz in etwas enthalten, an etwas befestigt oder mit etwas verbunden zu verstehen, auch wenn etwas dazwischen liegt. Die Aufzählung von Wertebereichen soll lediglich als Abkürzungsmethode dienen, um sich individuell auf jeden einzelnen Wert zu beziehen, der in den Bereich fällt, sofern hier nichts anderes angegeben, und jeder einzelne Wert ist in die Beschreibung aufgenommen, als ob er hier einzeln aufgeführt wäre. In mindestens einer Ausführungsform ist die Verwendung des Terminus „Satz/Menge“ (z. B. „ein Satz/eine Menge von Objekten“) oder „Teilsatz/Teilmenge“, sofern nicht anders angegeben oder durch den Kontext widerlegt, als eine nicht leere Sammlung zu verstehen, die ein oder mehrere Elemente umfasst. Sofern nicht anders angegeben oder durch den Kontext widerlegt, bezeichnet der Terminus „Teilmenge/Teilsatz“ einer entsprechenden Menge/eines entsprechenden Satzes nicht notwendigerweise eine echte Teilmenge der entsprechenden Menge/einen echten Teilsatz des entsprechenden Satzes, sondern Teilmenge/Teilsatz und entsprechende Menge/entsprechender Teilsatz können gleich sein.
  • Konjunktive Ausdrücke, wie zum Beispiel Sätze der Form „mindestens ein/eine/eines von A, B, und C“ oder „mindestens ein/eine/eines von A, B und C“, sind, sofern nicht ausdrücklich anders angegeben oder durch den Kontext eindeutig widerlegt, in Verbindung mit dem Kontext im Allgemeinen so zu verstehen, dass ein Element, ein Terminus usw. entweder A oder B oder C oder eine beliebige, nicht leere Teilmenge der Menge von A und B und C sein kann. So beziehen sich beispielsweise in dem anschaulichen Beispiel einer Menge mit drei Elementen die konjunktiven Ausdrücke „mindestens ein/eine/eines von A, B, und C“ und „mindestens ein/eine/eines von A, B und C“ auf eine der folgenden Mengen: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Derartige konjunktive Formulierungen sind also nicht generell so zu verstehen, dass bei bestimmten Ausführungsformen jeweils mindestens ein/eine/eines von A, mindestens ein/eine/eines von B und mindestens ein/eine/eines von C vorhanden sein muss. Sofern nicht anders angegeben oder durch den Kontext widerlegt, bezeichnet der Terminus „Vielzahl“ einen Zustand der Pluralität (z. B. „eine Vielzahl von Elementen“ bezeichnet mehrere Elemente). In mindestens einer Ausführungsform beträgt die Anzahl der Elemente in einer Vielzahl mindestens zwei Elemente, kann aber auch mehr Elemente umfassen, wenn dies entweder ausdrücklich oder durch den Kontext angegeben ist. Sofern nicht anders angegeben oder aus dem Kontext klar hervorgeht, bedeutet der Ausdruck „basierend auf“ „zumindest teilweise basierend auf” und nicht „ausschließlich basierend auf“.
  • Die Operationen der hier beschriebenen Prozesse können in jeder geeigneten Reihenfolge durchgeführt werden, sofern hier nichts anderes angegeben oder nicht eindeutig durch den Kontext widerlegt. In mindestens einer Ausführungsform wird ein Prozess wie die hier beschriebenen Prozesse (oder Variationen und/oder Kombinationen davon) unter Steuerung eines oder mehrerer Computersysteme durchgeführt, welche mit ausführbaren Anweisungen konfiguriert sind und als Code (z. B. ausführbare Anweisungen, ein oder mehrere Computerprogramme oder eine oder mehrere Anwendungen) implementiert sind, welche gemeinsam auf einem oder mehreren Prozessoren, durch Hardware oder Kombinationen davon ausgeführt werden. In mindestens einer Ausführungsform ist der Code auf einem computerlesbaren Speichermedium gespeichert, zum Beispiel in Form eines Computerprogramms, welches eine Vielzahl von Anweisungen umfasst, die von einem oder mehreren Prozessoren ausführbar sind. In mindestens einer Ausführungsform ist ein computerlesbares Speichermedium ein nichttransitorisches computerlesbares Speichermedium, das transitorische Signale (z. B. eine sich ausbreitende transiente elektrische oder elektromagnetische Übertragung) ausschließt, aber nichttransitorische Datenspeicherschaltung (z. B. Puffer, Cache und Warteschlangen) innerhalb von Transceivern für transitorische Signale enthält. In mindestens einer Ausführungsform ist Code (z. B. ausführbarer Code oder Quellcode) auf einem Satz eines oder mehrerer nichttransitorischer, computerlesbarer Speichermedien gespeichert, auf denen ausführbare Anweisungen gespeichert sind (oder auf einem anderen Speicher zum Speichern ausführbarer Anweisungen), die, wenn sie von einem oder mehreren Prozessoren eines Computersystems ausgeführt werden (d. h. als Ergebnis der Ausführung), das Computersystem veranlassen, hier beschriebene Operationen durchzuführen. In mindestens einer Ausführungsform umfasst der Satz nichttransitorischer, computerlesbarer Speichermedien mehrere nichttransitorische, computerlesbare Speichermedien, und auf einem oder mehreren der einzelnen nichttransitorischen Speichermedien der mehreren nichttransitorischen, computerlesbaren Speichermedien fehlt der gesamte Code, während die mehreren nichttransitorischen, computerlesbaren Speichermedien gemeinsam den gesamten Code speichern. In mindestens einer Ausführungsform werden ausführbare Anweisungen so ausgeführt, dass verschiedene Anweisungen von verschiedenen Prozessoren ausgeführt werden - zum Beispiel speichert ein nichttransitorisches computerlesbares Speichermedium Anweisungen und eine Haupt-Zentraleinheit (CPU) führt einige der Anweisungen aus, während eine Grafikverarbeitungseinheit (GPU) andere Anweisungen ausführt. In mindestens einer Ausführungsform haben verschiedene Komponenten eines Computersystems separate Prozessoren, und verschiedene Prozessoren führen verschiedene Teilsätze von Anweisungen aus.
  • Dementsprechend sind in mindestens einer Ausführungsform Computersysteme ausgelegt, einen oder mehrere Dienste zu implementieren, welche einzeln oder gemeinsam Operationen der hier beschriebenen Prozesse durchführen, und solche Computersysteme sind mit geeigneter Hardware und/oder Software konfiguriert, die die Durchführung der Operationen ermöglichen/ermöglicht. Ferner ist ein Computersystem, welches mindestens eine Ausführungsform der vorliegenden Erfindung implementiert, ein einzelnes Gerät, und in einer anderen Ausführungsform ist es ein verteiltes Computersystem, welches mehrere Geräte umfasst, die unterschiedlich so arbeiten, dass das verteilte Computersystem hier beschriebene Operationen durchführt, und so, dass ein einzelnes Gerät nicht alle Operationen durchführt.
  • Die Verwendung von Beispielen oder beispielhaften Formulieren (z. B. „wie“) dient lediglich der besseren Veranschaulichung von Ausführungsformen der Erfindung und stellt, sofern nicht anders angegeben, keine Einschränkung des Umfangs der Erfindung dar. Keine Formulierung in der Beschreibung sollte so ausgelegt werden, dass ein nicht beanspruchtes Element als wesentlich für die Umsetzung der Erfindung angesehen wird.
  • Alle Verweise, einschließlich Veröffentlichungen, Patentanmeldungen und Patente, die hier zitiert werden, werden hiermit durch Bezugnahme in demselben Umfang einbezogen, als ob jede Referenz einzeln und ausdrücklich als durch Bezugnahme einbezogen angegeben wäre und hier in ihrer Gesamtheit dargelegt würde.
  • In der Beschreibung und den Ansprüchen können die Termini „gekoppelt“ und „verbunden“ sowie deren Ableitungen verwendet werden. Es versteht sich, dass diese Termini nicht als Synonyme füreinander zu verstehen sind. Vielmehr kann in bestimmten Beispielen „verbunden“ oder „gekoppelt“ verwendet werden, um anzuzeigen, dass zwei oder mehr Elemente in direktem oder indirektem physischen oder elektrischen Kontakt zueinander stehen. „Gekoppelt“ kann auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt zueinander stehen, aber dennoch zusammenarbeiten oder miteinander agieren.
  • Sofern nicht ausdrücklich anders angegeben, beziehen sich Termini wie „Verarbeiten“, „Rechnen“, „Berechnen“, „Bestimmen“ oder dergleichen in der gesamten Beschreibung auf Aktionen und/oder Prozesse eines Computers oder Computersystems oder einer ähnlichen elektronischen Rechenanlage, welche Daten, die als physikalische, zum Beispiel elektronische, Größen in den Registern und/oder Speichern der Rechenanlage dargestellt sind, manipulieren und/oder in andere Daten umwandeln, die in ähnlicher Weise als physikalische Größen in den Speichern, Registern oder anderen Geräten zur Speicherung, Übertragung oder Anzeige von Informationen der Rechenanlage dargestellt sind.
  • In ähnlicher Weise kann sich der Terminus „Prozessor“ auf ein Gerät oder einen Teil eines Geräts beziehen, welches elektronische Daten aus Registern und/oder Speichern verarbeitet und diese elektronischen Daten in andere elektronische Daten, die in Registern und/oder Speichern gespeichert werden können, umwandelt. Als nicht einschränkende Beispiele kann der „Prozessor“ eine CPU oder eine GPU sein. Eine „Datenverarbeitungsplattform“ kann einen oder mehrere Prozessoren umfassen. Der hier verwendete Terminus „Software“-Prozesse kann zum Beispiel Software- und/oder Hardware-Einheiten umfassen, welche im Laufe der Zeit Arbeit verrichten, wie beispielsweise Aufgaben, Threads und intelligente Agenten. Jeder Prozess kann sich auch auf mehrere Prozesse beziehen, um Anweisungen nacheinander oder parallel, kontinuierlich oder intermittierend auszuführen. In mindestens einer Ausführungsform werden die Termini „System“ und „Verfahren“ hier austauschbar verwendet, da ein System eine oder mehrere Verfahren umfassen kann und Verfahren als ein System betrachtet werden können.
  • Im vorliegenden Dokument kann auf Erhalten, Erfassen, Empfangen oder Eingeben analoger oder digitaler Daten in ein Teilsystem, ein Computersystem oder eine computerimplementierte Maschine Bezug genommen werden. In mindestens einer Ausführungsform kann der Prozess des Erhaltens, Erfassens, Empfangens oder Eingebens analoger und digitaler Daten auf verschiedene Weise erfolgen, zum Beispiel durch Empfangen von Daten als Parameter eines Funktionsaufrufs oder eines Aufrufs an eine Anwendungsprogrammierschnittstelle. In mindestens einer Ausführungsform können Prozesse zum Erhalten, Erfassen, Empfangen oder Eingeben analoger oder digitaler Daten durch Übertragung von Daten über eine serielle oder parallele Schnittstelle bewerkstelligt werden. In mindestens einer Ausführungsform können Prozesse des Erhaltens, Erfassens, Empfangens oder Eingebens analoger oder digitaler Daten durch Übertragung von Daten über ein Computernetz von der bereitstellenden Einheit zur erfassenden Einheit durchgeführt werden. In mindestens einer Ausführungsform können auch Verweise auf Bereitstellen, Ausgeben, Übertragen, Senden oder Darstellen analoger oder digitaler Daten gemacht werden. In verschiedenen Beispielen können Prozesse des Bereitstellens, Ausgebens, Übertragens, Sendens oder Darstellens analoger oder digitaler Daten durch Übertragung von Daten als Eingabe- oder Ausgabeparameter eines Funktionsaufrufs, eines Parameters einer Anwendungsprogrammierschnittstelle oder eines Interprozess-Kommunikationsmechanismus durchgeführt werden.
  • Obwohl in den vorliegenden Beschreibungen beispielhafte Ausführungsformen der beschriebenen Techniken erläutert werden, können auch andere Architekturen zur Implementierung der beschriebenen Funktionalität, die in den Anwendungsbereich dieser Erfindung fallen, verwendet werden. Auch wenn oben zu Beschreibungszwecken bestimmte Zuständigkeitsbereiche definiert sind, können ferner verschiedene Funktionen und Zuständigkeiten je nach Umständen auf unterschiedliche Weise verteilt und aufgeteilt werden.
  • Auch wenn der Gegenstand in einer Sprache beschrieben ist, die sich auf strukturelle Merkmale und/oder methodische Handlungen bezieht, versteht es sich, dass der in den beigefügten Ansprüchen beanspruchte Gegenstand nicht notwendigerweise auf die beschriebenen spezifischen Merkmale oder Handlungen beschränkt ist. Vielmehr werden die spezifischen Merkmale und Handlungen als beispielhafte Formen der Umsetzung der Ansprüche offenbart.

Claims (21)

  1. Verfahren, umfassend: Verarbeitung von Bilddaten unter Verwendung einer ersten Verarbeitungsvorrichtung, um eine Vielzahl von Teilen eines Bildes zu erzeugen, Speicherung des ersten Teils unter Verwendung einer ersten Speichervorrichtung der ersten Verarbeitungsvorrichtung als Reaktion auf eine Erzeugung eines ersten Teils der Vielzahl von Teilen des Bildes, Festlegung, dass der erste Teil einem vorbestimmten Bruchteil des Bildes entsprich, Einstellung eines Fertigstellungsindikators für den ersten Teil, der zumindest auf der Bestimmung basiert, dass der erste Teil einem vorbestimmten Bruchteil des Bildes entspricht, und Veranlassung, dass der erste Teil einer zweiten Verarbeitungsvorrichtung bereitgestellt wird.
  2. Verfahren nach Anspruch 1, wobei Veranlassung, dass der erste Teil der zweiten Verarbeitungsvorrichtung bereitgestellt wird, Folgendes umfasst: Durchführung eines Schreibvorgangs unter Verwendung der ersten Verarbeitungsvorrichtung, um den ersten Teil unter Verwendung einer zweiten Speichervorrichtung der zweiten Verarbeitungsvorrichtung zu speichern.
  3. Verfahren nach Anspruch 1 oder 2, wobei Veranlassung, dass der erste Teil der zweiten Verarbeitungsvorrichtung bereitgestellt wird, Folgendes umfasst, Bereitstellung des Fertigstellungsindikators für die zweite Verarbeitungsvorrichtung, um die zweite Verarbeitungsvorrichtung zu veranlassen eine Leseoperation durchzuführen, um den ersten Teil aus der ersten Speichervorrichtung abzurufen.
  4. Verfahren nach einem der vorhergehenden Ansprüche, wobei der erste Teil der zweiten Verarbeitungsvorrichtung über eine Peripheral Component Interconnect Express (PCIe)-Verbindung, eine Compute Express Link (CXL)-Verbindung oder eine NVLink-Verbindung bereitgestellt wird.
  5. Verfahren nach einem der vorhergehenden Ansprüche, wobei Festlegung, dass der erste Teil einem vorbestimmten Bruchteil des Bildes entspricht, unter Verwendung eines Hardware-Interrupts die Erkennung umfasst, dass ein vorbestimmter Teil des Bildes erzeugt wurde.
  6. Verfahren nach einem der vorhergehenden Ansprüche, ferner umfassend: Speicherung des zweiten Teils unter Verwendung der ersten Speichervorrichtung als Reaktion auf eine Erzeugung eines zweiten Teils der Vielzahl von Teilen des Bildes, Erkennung, dass der zweite Teil mit einem oder mehreren Fehlern erzeugt wurde, Veranlassung, dass der zweite Teil der zweiten Verarbeitungsvorrichtung bereitgestellt wird Setzen eines Indikators für einen beschädigten Teil, auf den die zweite Verarbeitungsvorrichtung zugreifen kann, wobei der Indikator für einen beschädigten Teil mindestens eines der folgenden Elemente umfasst: eine Identifizierung des Bildes, eine Identifizierung des zweiten Teils oder eine Identifizierung eines beschädigten Bereichs des zweiten Teils.
  7. Verfahren nach einem der vorhergehenden Ansprüche, ferner umfassend: Verhinderung, dass der zweite Teil der zweiten Verarbeitungsvorrichtung bereitgestellt wird als Reaktion auf die Feststellung, dass ein zweiter Teil der Vielzahl von Teilen des Bildes mit einem oder mehreren Fehlern erzeugt wurde.
  8. Verfahren nach einem der vorhergehenden Ansprüche, wobei die erste Verarbeitungsvorrichtung eine System-on-Chip-Vorrichtung ist.
  9. Verfahren umfassend: Empfang, unter Verwendung einer ersten Verarbeitungsvorrichtung durch eine zweite Verarbeitungsvorrichtung, eines Fertigstellungsindikators, der anzeigt, dass ein erster Teil einer Vielzahl von Teilen eines Bildes unter Verwendung der ersten Verarbeitungsvorrichtung erzeugt wurde, wobei der erste Teil einem vorbestimmten Bruchteil des Bildes entspricht, Empfang des ersten Teils von der ersten Verarbeitungsvorrichtung unter Verwendung der zweiten Verarbeitungsvorrichtung und Durchführung einer Bildverarbeitungsoperation mit der zweiten Verarbeitungsvorrichtung unter Verwendung des empfangenen ersten Teils.
  10. Verfahren nach Anspruch 9, wobei der erste Teil über eine Schreiboperation empfangen wird, die unter Verwendung der ersten Verarbeitungsvorrichtung durchgeführt wird, wobei die Schreiboperation den ersten Teil unter Verwendung einer Speichervorrichtung der zweiten Verarbeitungsvorrichtung speichert.
  11. Verfahren nach Anspruch 9 oder 10, wobei der erste Teil durch eine Leseoperation empfangen wird, die unter Verwendung der zweiten Verarbeitungsvorrichtung durchgeführt wird, wobei die Leseoperation den ersten Teil unter Verwendung einer Speichervorrichtung der zweiten Verarbeitungsvorrichtung speichert.
  12. Verfahren nach einem der Ansprüche 9 bis 11, wobei der erste Teil von der ersten Verarbeitungsvorrichtung über eine Peripheral Component Interconnect Express (PCIe) Verbindung, eine Compute Express Link (CXL) Verbindung oder eine NVLink Verbindung empfangen wird.
  13. Verfahren nach einem der Ansprüche 9 bis 12, ferner umfassend: Empfang eines zweiten Teils der Vielzahl von Teilen des Bildes von der ersten Verarbeitungsvorrichtung unter Verwendung der zweiten Verarbeitungsvorrichtung, Empfang, von der ersten Verarbeitungsvorrichtung unter Verwendung der zweiten Verarbeitungsvorrichtung, eines Indikators für einen beschädigten Teil, der anzeigt, dass der zweite Teil mit einem oder mehreren Fehlern erzeugt wurde, und Verwerfen des zweiten Teils.
  14. Verfahren nach einem der Ansprüche 9 bis 13, ferner umfassend: Empfang eines zweiten Teils der Vielzahl von Teilen des Bildes von der ersten Verarbeitungsvorrichtung unter Verwendung der zweiten Verarbeitungsvorrichtung, Empfang, von der ersten Verarbeitungsvorrichtung unter Verwendung der zweiten Verarbeitungsvorrichtung, eines Indikators für einen beschädigten Teil, der einen beschädigten Bereich des zweiten Teils anzeigt, und Durchführung der Bildverarbeitungsoperation unter Verwendung des zweiten Teils und des Indikators für den beschädigten Teil.
  15. Verfahren nach einem der Ansprüche 9 bis 14, wobei die Bildverarbeitungsoperation Objekterkennung umfasst, die unter Verwendung mindestens des ersten Teils ausgeführt wird.
  16. Verfahren nach einem der Ansprüche 9 bis 15, wobei die zweite Verarbeitungsvorrichtung eine System-on-Chip-Vorrichtung ist.
  17. System, umfassend: eine erste Verarbeitungsvorrichtung zur Verarbeitung von Bilddaten zur Erzeugung einer Vielzahl von Teilen eines Bildes, Speicherung des ersten Teils unter Verwendung einer ersten Speichervorrichtung als Reaktion auf die Erzeugung eines ersten Teils der Vielzahl von Teilen des Bildes, Festlegung, dass der erste Teil einem vorbestimmten Bruchteil des Bildes entspricht, Setzen eines Fertigstellungsindikators für den ersten Teil des Bildes als Reaktion auf das Festlegung, dass der erste Teil dem vorbestimmten Bruchteil entspricht, und Veranlassung, dass der erste Teil in einer zweiten Speichervorrichtung gespeichert wird und eine zweite Verarbeitungsvorrichtung, um eine Bildverarbeitungsoperation unter Verwendung des ersten Teils durchzuführen, wobei die erste Verarbeitungsvorrichtung kommunikativ mit der ersten Speichervorrichtung gekoppelt ist und die zweite Verarbeitungsvorrichtung kommunikativ mit der zweiten Speichervorrichtung gekoppelt ist.
  18. System nach Anspruch 17, wobei die erste Verarbeitungsvorrichtung ferner dazu dient: einen Schreibvorgang zum Speichern des ersten Teils unter Verwendung der zweiten Speichervorrichtung durchzuführen.
  19. System nach Anspruch 17 oder 18, wobei die zweite Verarbeitungsvorrichtung ferner dazu dient: als Reaktion auf den von der ersten Verarbeitungsvorrichtung bereitgestellten Fertigstellungsindikator einen Lesevorgang durchzuführen, um den ersten Teil aus der ersten Speichervorrichtung abzurufen.
  20. System ach einem der Ansprüche 17 bis 19, wobei die zweite Verarbeitungsvorrichtung ferner dazu dient,: Empfang eines zweiten Teils der Vielzahl von Teilen des Bildes unter Verwendung der ersten Verarbeitungsvorrichtung, Empfang, unter Verwendung der ersten Verarbeitungsvorrichtung, eines Indikators für einen beschädigten Teil, der einen beschädigten Bereich des zweiten Teils anzeigt, und Durchführung der Bildverarbeitungsoperation unter Verwendung des zweiten Teils und des Indikators für den beschädigten Teil.
  21. System nach einem der Ansprüche 17 bis 19, wobei das System in mindestens einem der folgenden Systeme enthalten ist: einem Steuerungssystem für eine autonome oder halbautonome Maschine, einem Wahrnehmungssystem für eine autonome oder halbautonome Maschine, einem System zur Durchführung von Simulationsoperationen, einem System zur Durchführung digitaler Twin-Operationen, einem System zur Durchführung von Lichttransportsimulationen, einem System zur Durchführung kollaborativer Inhaltserstellung für 3D-Assets, einem System zur Durchführung von Deep-Learning-Operationen, einem System, das unter Verwendung eines Edge-Gerätes implementiert ist, einem System zur Erzeugung oder Darstellung von mindestens einem der Inhalte von Inhalten der erweiterten Realität, Inhalten der virtuellen Realität oder Inhalten der gemischten Realität, einem System, das unter Verwendung eines Roboters implementiert ist, einem System zur Durchführung dialoggesteuerter KI-Operationen, einem System zur Erzeugung synthetischer Daten, einem System, das eine oder mehrere virtuelle Maschinen (VMs) enthält, einem System, das zumindest teilweise in einem Rechenzentrum implementiert ist oder einem System, das zumindest teilweise unter Verwendung von Cloud-Computing-Ressourcen implementiert ist.
DE102023129952.2A 2022-11-15 2023-10-30 Fraktionierte übertragungen von sensordaten für streaming- und latenzempfindliche anwendungen Pending DE102023129952A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/987,109 2022-11-15
US17/987,109 US20240161221A1 (en) 2022-11-15 2022-11-15 Fractionalized transfers of sensor data for streaming and latency-sensitive applications

Publications (1)

Publication Number Publication Date
DE102023129952A1 true DE102023129952A1 (de) 2024-05-16

Family

ID=91024065

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102023129952.2A Pending DE102023129952A1 (de) 2022-11-15 2023-10-30 Fraktionierte übertragungen von sensordaten für streaming- und latenzempfindliche anwendungen

Country Status (2)

Country Link
US (1) US20240161221A1 (de)
DE (1) DE102023129952A1 (de)

Also Published As

Publication number Publication date
US20240161221A1 (en) 2024-05-16

Similar Documents

Publication Publication Date Title
DE3687220T2 (de) Verfahren und vorrichtung zur detektion von musterfehlern.
DE102018204482A1 (de) Überwachungs- und steuerungssystem, überwachungs- und steuerungsvorrichtung sowie überwachungs- und steuerungsverfahren
DE69031638T2 (de) System zum Übertragen von Bildinformation
DE102008059372A1 (de) Bildverzeichnungskorrektur
EP0123893B1 (de) Verfahren und Schaltungsanordnung zur Bildfehlerkorrektur
DE102015115998A1 (de) Segmentierter Videocodec für Video mit hoher Auflösung und hoher Framerate
DE112004002391B4 (de) Räumlich-zeitliche Erzeugung von Bewegungsunschärfe
DE102017213247A1 (de) Wissenstransfer zwischen verschiedenen Deep-Learning Architekturen
DE112015003626T5 (de) System und verfahren zum erhöhen der bittiefe von bildern
DE102018109276A1 (de) Bildhintergrundsubtraktion für dynamische beleuchtungsszenarios
DE3851264T2 (de) Bildverarbeitungsverfahren.
DE112019004488T5 (de) Doppelmodus-datenerfassungssystem zur kollisionserfassung und objektdimensionierung
DE102015205678A1 (de) Steuervorrichtung und steuerungssystem für die durchführung eines verfahrens basierend auf einem aufgezeichneten bild
DE102020103204A1 (de) Partial-Schlussfolgerungstechnologie in allgemeinen Objektdetektionsnetzwerken zur effizienten Videoverarbeitung
DE102015209448A1 (de) Verfahren zur Anzeige sicherheitsrelevanter Anzeigeelemente
DE112015001607T5 (de) Orthogonale Datenorganisation für Fehlerdetektion und -korrektur in seriellen Videoschnittstellen
EP3253045A1 (de) Verfahren zur erkennung und korrektur von bildfehlern sowie bildverarbeitungseinheit und computerprogramm hierzu
DE102023129952A1 (de) Fraktionierte übertragungen von sensordaten für streaming- und latenzempfindliche anwendungen
WO2018133970A1 (de) Verfahren und vorrichtung zum anzeigen eines hinweises für einen anwender und arbeitsvorrichtung
DE102014014499A1 (de) Bildverarbeitungsverfahren, System und elektronische Vorrichtung
US20200260075A1 (en) Systems and methods for group of pictures encoding
DE602004001718T2 (de) Verfahren zur Echtzeitkorrektur nicht funktionierender Pixel in der digitalen Radiographie
DE102018103652A1 (de) Kachelwiederverwendung in der bilderzeugung
DE102014219163B4 (de) Elektronische Korrektur von durch Defekte eines Röntgendetektors hervorgerufenen Bildartefakten
DE60106137T2 (de) Entfernte Datenverarbeitungsverwaltung mit Darstellungsmöglichkeit

Legal Events

Date Code Title Description
R012 Request for examination validly filed