DE112009004320T5 - Speicher-Untersystem - Google Patents

Speicher-Untersystem Download PDF

Info

Publication number
DE112009004320T5
DE112009004320T5 DE112009004320T DE112009004320T DE112009004320T5 DE 112009004320 T5 DE112009004320 T5 DE 112009004320T5 DE 112009004320 T DE112009004320 T DE 112009004320T DE 112009004320 T DE112009004320 T DE 112009004320T DE 112009004320 T5 DE112009004320 T5 DE 112009004320T5
Authority
DE
Germany
Prior art keywords
memory
data
video
block
input
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.)
Withdrawn
Application number
DE112009004320T
Other languages
English (en)
Inventor
Jorge Rubinstein
Albert Rooyakkers
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.)
Bring Technology Inc Ca
Original Assignee
Maxim Integrated Products Inc
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
Priority claimed from US12/322,571 external-priority patent/US8660193B2/en
Application filed by Maxim Integrated Products Inc filed Critical Maxim Integrated Products Inc
Publication of DE112009004320T5 publication Critical patent/DE112009004320T5/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C19/00Digital stores in which the information is moved stepwise, e.g. shift registers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/11Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/186Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack

Abstract

Ausgestaltungen der vorliegenden Erfindung sind auf Speicher-Untersysteme gerichtet, die implementiert sind innerhalb oder verbunden mit und zugänglich für parallel und seriell arbeitende Implementierungen von Rechenmaschinen mit integrierten Schaltkreisen, die zum Lösen von komplexen Rechenproblemen konzipiert sind. Weitere Ausgestaltungen der vorliegenden Erfindung sind auf Speicher-Untersysteme gerichtet, die implementiert sind innerhalb oder verbunden mit und zugänglich für eine Vielzahl von unterschiedlichen Typen von elektronischen Vorrichtungen. Eine Ausgestaltung der der vorliegenden Erfindung umfasst eine Speichersteuereinheit, die in einem ersten integrierten Schaltkreis oder einem anderen elektronischen System implementiert ist, und eine oder mehrere separate Speichervorrichtungen. Alternative Ausgestaltungen der vorliegenden Erfindung binden die Speichersteuereinheit in eine oder mehrere Speichervorrichtungen ein, die verbunden sind mit einer und zugänglich sind für eine Rechenmaschine mit integriertem Schaltkreis oder eine andere elektronische Vorrichtung. Alternative Ausgestaltungen der vorliegenden Erfindung beinhalten einen Vielfach-Zugriffsspeicher, der sich an eine einfachere Speichersteuereinheit anschließt, um eine Verbindung mit oder Integration in eine Rechenmaschine oder eine andere elektronische Vorrichtung zu ermöglichen.

Description

  • QUERVERWEISE AUF VERWANDTE ANMELDUNGEN
  • Diese Anmeldung ist eine Continuation-in-Part der Anmeldung US 121322,571, eingereicht am 04.02.2009, welche ihrerseits eine Continuation-in-Part der Anmeldung US 121319,750, eingereicht am 12.01.2009 ist.
  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft elektronische Speicher und insbesondere ein Speicher-Untersystem innerhalb einer oder zugänglich für eine hochgradig parallel und seriell arbeitende Rechenmaschine mit integrierter Schaltung, oder benutzt innerhalb einer oder zugänglich für eine Vielzahl von unterschiedlichen Typen von elektronischen Vorrichtungen.
  • HINTERGRUND DER ERFINDUNG
  • Rechenanlagen durchlaufen derzeit eine rapide Entwicklung. Frühe elektronische Rechner waren im Allgemeinen vollständig sequentiell verarbeitende Maschinen, welche einen Strom von Befehlen, welche zusammen ein Rechnerprogramm bilden, einen nach dem anderen abarbeiten. Viele Jahre lang beinhalteten elektronische Rechner im Allgemeinen einen einzigen Hauptprozessor, welcher in der Lage war, einen verhältnismäßig kleinen Satz von einfachen Befehlen auszuführen, wie z. B. Speicherabhol-, Speichersicherungs-, arithmetische und logische Befehle. Eine Rechenaufgabe wurde adressiert, indem man eine Lösung zu der Aufgabe als einen Satz von Befehlen programmierte und dann das Programm auf einem Einprozessorrechnersystem ausführte.
  • Verhältnismäßig früh in der Entwicklung von elektronischen Rechnern begannen diverse Hilfs- und Unterstützungsaufgaben weg von dem Hauptprozessor hin zu spezialisierten Hilfsprozessorkomponenten verlagert zu werden. Beispielsweise wurden separate Eingabe/Ausgaberegler entwickelt, um viele der sich wiederholenden und Rechenbandbreite verbrauchenden Aufgaben, welche mit dem Austausch von Informationen zwischen Hauptspeicher und diversen externen Geräten, wie z. B. Massenspeichergeräte, Kommunikationsgeräte, Anzeigegeräte und Nutzereingabegeräte, verbunden sind, auszulagern. Diese Einbindung von einer Vielzahl von Verarbeitungselementen in Rechensysteme mit nur einem Hauptprozessor war der Anfang eines Trends zur Erhöhung des Parallelismus in der Datenverarbeitung.
  • Paralleles Rechnen ist derzeit ein dominierender Trend bei der Entwicklung von modernen Rechenanlagen. An einem Ende stellen einzelne Prozessorkerne häufig gleichzeitige, parallele Ausführungen von mehrfachen Befehlsströmen sicher und ermöglichen fließbandartige, gleichzeitige Ausführung mehrfacher Befehle. Die meisten Rechner, eingeschlossen Personal Computer, beinhalten jetzt mindestens zwei und häufig viel mehr Prozessorkerne innerhalb jeder einzigen integrierten Schaltung. Jeder Prozessorkern kann relativ unabhängig mehrere Befehlsströme abarbeiten. Elektronische Rechnersysteme können mehrere mehrkernige Prozessoren enthalten und können in weitläufig verteilte Rechennetzwerke umfassend einige zehn bis tausende bis hunderttausende von diskreten Rechnersystemen, die miteinander kommunizieren und jeweils eine oder mehrere abtrennbare Portionen einer großen verteilten Rechenaufgabe ausführen, zusammengefasst sein.
  • Da Rechner sich zu parallelen und massiv parallelen Rechensystemen entwickelt haben, hat sich gezeigt, dass viele der schwersten und dringlichsten Probleme im Zusammenhang mit parallelem Rechnen mit dem Zerlegen großer Rechenaufgaben in voneinander unabhängige Unteraufgaben, von denen jede von einer anderen Prozessoreinheit ausgeführt werden können zusammenhängen. Wenn Aufgaben nicht in geeigneter Weise zerlegt werden oder wenn Aufgaben nicht für parallele Entwürfen zerlegt werden können, bietet der Einsatz von parallelen Rechenanlagen oft wenig oder keinen Nutzen und kann in ungünstigsten Fällen sogar zu langsamerer Ausführung führen als die von traditioneller, auf einem Einprozessorrechensystem ausgeführter Softwareimplementierung erhältliche Ausführung. Wenn mehrere Recheneinheiten um gemeinsam genutzte Ressourcen konkurrieren oder auf Rechenergebnisse, welche gleichzeitig von anderen Recheneinheiten erzeugt werden, angewiesen sind, können enorme Rechen- und Kommunikationsressourcen aufgewendet werden, um den parallelen Betrieb der mehreren Recheneinheiten zu verwalten. Häufig kann der Kommunikations- und Rechenaufwand die Vorteile eines Parallelrechenansatzes, der auf einer Vielzahl von Prozessoren oder anderen Recheneinheiten ausgeführt wird, bei weitem übersteigen. Ferner können signifikante finanzielle Kosten mit parallelem Rechnen einhergehen und auch signifikante Kosten hinsichtlich Stromverbrauch und Wärmeabstrahlung.
  • Obwohl paralleles Rechnen daher biologischen Systemen und den evolutionären Trends, die bereits in der kurzen Zeitspanne der Evolution elektronischer Rechner zu beobachten sind, nach zu urteilen der logische Ansatz zu effizienter Berechnung vieler Rechenaufgaben zu sein scheint, ist paralleles Rechnen auch mit vielen Komplexitäten, Kosten und Nachteilen verbunden. Wohingegen viele Aufgabenstellungen theoretisch von einem Parallelrechenansatz profitieren könnten, können die Technologie und Hardware zum parallelen Rechnen, welche derzeit verfügbar sind, häufig keine kosteneffektiven Lösungen für viele Rechenaufgaben bieten, insbesondere für komplexe Berechnungen, welche in Echtzeit innerhalb von Geräten, welche beschränkt sind durch Größenbeschränkungen, Wärmeabstrahlungsbeschränkungen, Stromverbrauchsbeschränkungen und Kostenbeschränkungen ausgeführt werden müssen. Aus diesem Grunde erkennen Informatiker, Elektroingenieure, Forscher und Entwickler in vielen rechenorientierten Gebieten, Hersteller und Verkäufer von elektronischen Geräten und elektronischen Rechnern und, am Ende, Nutzer von elektronischen Geräten und elektronischen Rechnern alle den Bedarf an einer fortgesetzten Entwicklung von neuen Ansätzen zur effizienten Implementierung von parallelen Rechenmaschinen zur Lösung praktischer Probleme. Insbesondere Computerwissenschaftler, Elektroingenieure, Forscher und Entwickler in vielen rechenlastigen Gebieten, Hersteller und Vertreiber von elektronischen Vorrichtungen und Computern und andere bemühen sich um effiziente, energiesparende und kostengünstige Untersysteme, die in oder verbunden mit parallel arbeitenden Rechenmaschinen eingesetzt werden können, effiziente, energiesparende und kostengünstige Speicher-Untersysteme mit eingeschlossen.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Ausgestaltungen der vorliegenden Erfindung sind auf Speicher-Untersysteme gerichtet, die implementiert sind innerhalb oder verbunden mit und zugänglich für parallel und seriell arbeitende Implementierungen von Rechenmaschinen mit integrierten Schaltkreisen, die zum Lösen von komplexen Rechenproblemen konzipiert sind. Weitere Ausgestaltungen der vorliegenden Erfindung sind auf Speicher-Untersysteme gerichtet, die implementiert sind innerhalb oder verbunden mit und zugänglich für eine Vielzahl von unterschiedlichen Typen von elektronischen Vorrichtungen. Eine Ausgestaltung der der vorliegenden Erfindung umfasst eine Speichersteuereinheit, die in einem ersten integrierten Schaltkreis oder einem anderen elektronischen System implementiert ist, und eine oder mehrere separate Speichervorrichtungen. Alternative Ausgestaltungen der vorliegenden Erfindung binden die Speichersteuereinheit in eine oder mehrere Speichervorrichtungen ein, die verbunden sind mit einer und zugänglich sind für eine Rechenmaschine mit integriertem Schaltkreis oder eine andere elektronische Vorrichtung. Alternative Ausgestaltungen der vorliegenden Erfindung beinhalten einen Vielfach-Zugriffsspeicher, der sich an eine einfachere Speichersteuereinheit anschließt, um eine Verbindung mit oder Integration in eine Rechenmaschine oder eine andere elektronische Vorrichtung zu ermöglichen.
  • KURZBESCHREIBUNGEN DER FIGUREN
  • 1 veranschaulicht ein digital kodiertes Bild.
  • 2 veranschaulicht zwei verschiedene Bildpunktwertkodierungsverfahren gemäß zwei verschiedenen Farb- und Helligkeitsmodellen.
  • 3 veranschaulicht digitale Kodierung unter Verwendung des Y' CrCb Farbmodells.
  • 4 veranschaulicht die Ausgabe einer Videokamera.
  • 5 veranschaulicht die Funktionsweise eines Videcodec.
  • 6 veranschaulicht verschiedene Datenobjekte, auf welchen Videokodierungsoperationen während einer Videodatenstromkompression und einer komprimierter Videodatenstromdekompression durchgeführt werden.
  • 7 veranschaulicht die Unterteilung eines Videoeinzelbilds in zwei Scheibengruppen.
  • 8 veranschaulicht eine zweite Ebene einer Unterteilung von Videoeinzelbildern.
  • 9 veranschaulicht das grundlegende Konzept der Intraprädiktion.
  • 10A–I veranschaulichen die neun 4×4 Luma Block Intraprädiktionsmodi.
  • 11A–D veranschaulichen, unter Verwendung ähnlicher Darstellungskonventionen wie in den 14A–I verwendet, die vier Modi zur Intraprädiktion von 16×16 Luma Blöcken.
  • 12 veranschaulicht das Konzept der Interprädiktion.
  • 13A–D veranschaulichen den Interpolationsprozess, welcher zur Berechnung von Bildpunktwerten für Blöcke innerhalb eines Suchraums für ein Referenzeinzelbild, welche man sich als an fraktionellen Koordinaten auftretend vorstellen kann, verwendet wird.
  • 14A–C veranschaulichen die unterschiedlichen Arten von Einzelbildern und einige unterschiedliche Arten von Interprädiktionen, welche bezüglich dieser Einzelbilder möglich sind.
  • 15 veranschaulicht die Erzeugung von Differenzmakroblöcken.
  • 16 veranschaulicht Bewegungsvektor- und Intraprädiktionsmodus-Vorhersage.
  • 17 veranschaulicht Zerlegung, Ganzzahltransformation und Quantisierung eines Differenzmakroblocks.
  • 18 liefert die Herleitung der Ganzzahltransformation und inversen Ganzzahltransformation, welche in H.264 Videokompression bzw. Videodekompression eingesetzt wird.
  • 19 veranschaulicht den Quantisierungsprozess.
  • 20 gibt ein numerisches Beispiel für Entropiekodierung an.
  • 21A–B geben ein Beispiel einer arithmetischen Kodierung an.
  • 22A–B veranschaulichen ein häufig auftretendes Artefakt und ein Filterverfahren, welches als abschließender Schritt bei der Dekompression verwendet wird, um das Artefakt auszubessern.
  • 23 fasst die H.264 Videodatenstromkodierung zusammen.
  • 24 veranschaulicht den H.264 Videodatenstromkodierungsprozess in Form eines Blockdiagramms, welches ähnlich ist zu dem in 23 verwendeten.
  • 25 ist ein sehr schematisches Diagramm eines Altzweck-Rechners.
  • 26 veranschaulicht eine Reihe von Aspekten des Videokompressions- und -Dekompressionsverfahrens, die, wenn betrachtet, Einblick in einen neuen, und weit recheneffizienteren, Ansatz zur Implementierung eines Videocodec gemäß der vorliegenden Erfindung liefern.
  • 27 veranschaulicht die grundlegenden Merkmale einer Implementierung mit integriertem Schaltkreis eines Videocodec gemäß Verfahren der vorliegenden Erfindung.
  • 28 veranschaulicht eine Ausführungsform der vorliegenden Erfindung, in der der integrierte Schaltkreis 2802 einen Arbeitsspeicher 2804 beinhaltet, der in der in 27 veranschaulichten Ausführungsform extern ist.
  • 29 veranschaulicht eine alternative Ausführungsform der vorliegenden Erfindung, in der die digitale Videokamera in einer Implementierung mit integriertem Schaltkreis einer kombinierten Videokamera und eines Videocodec beinhaltet ist.
  • 3032 veranschaulichen die gesamte Taktung und den Datenfluss innerhalb der Implementierung mit integriertem Schaltkreis des Videocodec gemäß der vorliegenden Erfindung.
  • 33A–B liefern eine Blockdiagrammabbildung einer Implementierung mit einem einzigen integrierten Schaltkreis eines Videocodec gemäß der vorliegenden Erfindung.
  • 34 veranschaulicht die Taktung und Synchronisation des Gesamtsystems der Implementierung mit einer einzigen integrierten Schaltung eines Videocodec gemäß der vorliegenden Erfindung.
  • 35 liefert eine Tabelle der verschiedenen Objekttypen, die vom Video-Pufferspeicher entlang dem Datenobjektbus zu den Verarbeitungselementen in der Implementierung mit einem einzigen integrierten Schaltkreis eines Videocodec gemäß der vorliegenden Erfindung übertragen werden.
  • 36A–B veranschaulichen, auf eine abstrakte Weise, den Betrieb eines Rechenelements innerhalb der Videocodec-Implementierung mit einem einzigen integrierten Schaltkreis, die eine Ausführungsform der vorliegenden Erfindung darstellt.
  • 37 veranschaulicht das Bewegungsschätzungs-Verarbeitungselement, das eine Ausführungsform der vorliegenden Erfindung darstellt.
  • 38 veranschaulicht das Intra-Prädiktions- und Inter-Prädiktions-Verarbeitungselement, das ein Paar von Verarbeitungselementen umfasst und das eine Ausführungsform der vorliegenden Erfindung darstellt.
  • 39 veranschaulicht ein Blockdiagramm des entropiekodierten Verarbeitungselements, das eine Ausführungsform der vorliegenden Erfindung darstellt.
  • 40 veranschaulicht die Speichererfordernisse für einen Video-Pufferspeicher in der Videocodec-Implementierung, wie in 33A veranschaulicht.
  • 41 veranschaulicht den Betrieb der Luma-Makroblock-Umlaufwarteschlange (4002 in 40) während neun höheren Verarbeitungszyklen.
  • 42 veranschaulicht eine Implementierung des Video-Cachecontrollers eines Videocodec, der eine Ausführungsform der vorliegenden Erfindung darstellt.
  • 43 steht eine Tabelle bereit, die ein Beispiel des gesamten Verarbeitungsverfahrens veranschaulicht, das durch jeweils bestimmte der Verarbeitungselemente des Videocodec ausgeführt wird, der eine Ausführungsform der vorliegenden Erfindung darstellt.
  • 44A–E liefern höhere VHDL-Definitionen der verschiedenen Verarbeitungselemente in der Implementierung mit einer einzigen integrierten Schaltung eines Videocodec gemäß einer Ausführungsform der vorliegenden Erfindung, wie in 33A veranschaulicht.
  • 45 veranschaulicht Komponenten und Funktionalitäten des Speicher-Untersystems einer Videokamera, welche diverse Ausgestaltungen der vorliegenden Erfindung darstellen.
  • 46A–E veranschaulichen eine Serie von Videosystemen, welche diverse Ausgestaltungen der vorliegenden Erfindung darstellen und welche eine Lösung für die zunehmende Integration zwischen Untersystemen der Videosysteme verkörpern.
  • 47 veranschaulicht eine verallgemeinerte, mittels einer erfindungsgemäßen Ausgestaltung der Speichersteuereinheit bereitgestellte Schnittstelle zu Kameras, einen Videocodec und einen Speicher.
  • 48A–H veranschaulichen die Komponenten und deren Betrieb einer Speichersteuereinheit, welche eine Ausgestaltung der vorliegenden Erfindung darstellt.
  • 49A–C veranschaulichen eine Ausgestaltung eines in Bezug auf die 48B–C diskutierten Busverwalters, welcher eine Komponente einer Speichersteuereinheit ist, welche eine Ausgestaltung der vorliegenden Erfindung darstellt.
  • 50 veranschaulicht eine einfache Darstellung von zeitlichen Betrachtungen für einen in einer Speichersteuereinheit implementierten Speichersteuereinheitsbusverwalter, welche eine Ausgestaltung der vorliegenden Erfindung darstellt.
  • 5154 veranschaulichen schematische Diagramme für eine Speichersteuereinheit, welche eine Ausgestaltung der vorliegenden Erfindung darstellt.
  • 55 veranschaulicht den Betrieb eines Vielfach-Zugriffsspeichers, welcher eine Ausgestaltung der vorliegenden Erfindung darstellt.
  • 56 veranschaulicht abstrakt den Betrieb des Vielfach-Zugriffsspeichers, welcher eine Ausgestaltung der vorliegenden Erfindung darstellt.
  • 57 veranschaulicht ein Vielebenen-Speichersystem gemäß einer Ausgestaltung der vorliegenden Erfindung.
  • 58 veranschaulicht die Partitionierung der mit jeder Kamera verbundenen Speicherpartition gemäß den Ausgestaltungen der vorliegenden Erfindung in einem Vielfach-Zugriffsspeicher.
  • 59 veranschaulicht das Schreiben eines Datenübertragungsblockes in einen Vielfach-Zugriffsspeicher gemäß diversen Ausgestaltungen der vorliegenden Erfindung.
  • 60 veranschaulicht einen Signalwechselrichter.
  • 61 veranschaulicht ein Schaltbild einer Speichereinheit oder einer Speicherzelle für einen Vielfach-Zugriffsspeicher, welcher eine Ausgestaltung der vorliegenden Erfindung darstellt, mitsamt einer symbolischen Darstellung der Speicherzelle.
  • 62A–C veranschaulichen das Verschieben von Daten in eine Speicherzelle eines Vielfach-Zugriffsspeichers, welcher eine Ausgestaltung der vorliegenden Erfindung darstellt.
  • 63A–C veranschaulichen das Schreiben eines booleschen Wertes „0” in eine Speicherzelle, die momentan einen booleschen Wert „1” speichert, gemäß den Ausgestaltungen der vorliegenden Erfindung.
  • 64A–B veranschaulichen die Ausgabe des Wertes, der momentan in einer Speicherzelle eines Vielfach-Zugriffsspeichers gespeichert ist, an eine Ausgabesignalleitung gemäß den Ausgestaltungen der vorliegenden Erfindung.
  • 65A–B veranschaulichen das Schreiben eines Wertes in eine Speicherzelle, welche eine Ausgestaltung der vorliegenden Erfindung darstellt, über zwei Eingabesignalleitungen.
  • 66A–B veranschaulichen die Implementierung eines 4×4 Speicherfeldes unter Verwendung von 16 Speicherzeilen der in 61 veranschaulichten Art und eine symbolische Darstellung des 4×4 Speicherfeldes.
  • 67 veranschaulicht ein schematisches Diagramm eines größeren Feldes gemäß den Ausgestaltungen der vorliegenden Erfindung, basierend auf 4×4 Speicherfeldern, wie beispielsweise das in 66A veranschaulichte 4×4 Speicherfeld.
  • 68 veranschaulicht ein Schaltbild für die in dem Speicherfeld in 67 veranschaulichten Dekodierungsblöcke mit zweidimensionalem Zugriff als eine Ausgestaltung der vorliegenden Erfindung.
  • 69 veranschaulicht eine Speichersteuereinheit, welche sich an einen oben in Bezug auf die 6568 diskutierten Vielfach-Zugriffsspeicher anschließt und welche eine Ausgestaltung der vorliegenden Erfindung darstellt.
  • DETAILLIERTE BESCHREIBUNG DER BEVORZUGTEN AUSGESTALTUNGEN
  • Die Ausgestaltungen der vorliegenden Erfindung sind auf Speicher-Untersysteme gerichtet, welche innerhalb von Rechenmaschinen implementiert oder mit Rechenmaschinen verbunden werden können, wodurch die Rechenmaschinen komplexe Rechenaufgaben mit geringem Energieverbrauch, geringer Wärmedissipation, großer rechnerischer Bandbreite und kurzer Wartezeit für die Ausführung der Aufgabe bewerkstelligen. Rechenmaschinen sind als individuelle integrierte Schaltkreise oder Chips ausgestaltet, die höhere durch viele gleichzeitig arbeitende Verarbeitungselemente gemäß der vorliegenden Erfindung gelieferte Parallelberechnungen kennzeichnen. Effektive Verwendung der derzeitigen ausführenden Verarbeitungselemente wird durch eine geeignete Dekompression einer komplexen Rechenaufgabe, effizienten Zugriff auf gemeinsam genutzte Informationen und Datenobjekte in der integrierten Schaltkreis und effektive, hierarchische Kontrolle der Verarbeitungsaufgaben und Subaufgaben möglich gemacht.
  • Die Verarbeitungselemente greifen auf Rechenobjekte zu, an denen sie über einen Objektbus arbeiten, der die Verarbeitungselemente mit einem On-Board-Objektcache verbindet. Der On-Board-Objektcache ist wiederum durch eine Objektspeichersteuereinheit mit einem großen Objektspeicher verbunden oder gekoppelt, der, in bestimmten Ausführungsformen der vorliegenden Erfindung, als eine externe Komponente ausgestaltet sein kann. Die Steuerung der Berechnung, die durch die Rechenmaschinen der vorliegenden Erfindung ausgestaltet ist, wird, in bestimmten Ausführungsformen der vorliegeriden Erfindung durch einen Mikroprozessorcontroller nach einem relativ niederfrequenten Takt geliefert, wobei ein oder mehrere hochfrequentere Taktsignale die Verarbeitung in den Verarbeitungselementen steuern. Die Verarbeitungselemente sind in bestimmten Ausführungsformen der vorliegenden Erfindung logisch in einer fließbandartigen Leitung mit Rechenobjekten angeordnet, die im Allgemeinen durch das Verarbeitungselement entlang der Leitung sequentiell verarbeitet werden, die zwischen Verarbeiturigselementen und/oder vom Objektcache hin oder her bewegt werden. Verarbeitungselementberechnung, Cachezugriff, Speicherzugriff und Datentransfer sind in Rechenobjekte anstatt als willkürlich bemessene Dateneinheiten wie Bytes oder Worte angeordnet.
  • Eine große Anzahl von unterschiedlichen Aufgaben kann durch die Ausführung und Entwicklung von hoch parallelen Implementierungen mit integriertem Schaltkreis von Rechenmaschinen gemäß Ausführungsformen der vorliegenden Erfindung angesprochen werden. Als eine spezifische Ausführungsform der vorliegenden Erfindung wird eine parallele, über eine Leitung geleitete Implementierung mit integrierter Schaltung eines Videocodec untenstehend erörtert. Verschiedene alternative Ausführungsformen der Implementierung mit einem integrierten Schaltkreis des Videocodec können in einer breiten Vielfalt von elektronischen Geräten, einschließlich Mobiltelefonen mit Videokameras, digitalen Videokameras, Personal Computern, Überwachungsausrüstung, Fernfühlern, Flugzeugen und Raumfahrzeugen und einer breiten Vielfalt von anderen Ausrüstungstypen eingesetzt werden. Es wird hier, und während der folgenden Erörterung, unterstrichen, dass die Videocodec-Implementierungen spezifische Beispiele der vielen verschiedenen parallelen, über eine Leitung geleiteten Rechenmaschinen mit integriertem Schaltkreis sind, die Ausführungsformen der vorliegenden Erfindung darstellen.
  • Die beschriebene Implementierung eines Videocodec mit parallelem integrierten Schaltkreis ist eine relativ komplexe Vorrichtung, die ausgelegt ist, eine komplexe Rechenaufgabe auszuführen. Die folgende Erörterung ist in sechs Unterabschnitte gegliedert: (1) der H.264 Komprimiertes-Videosignal-Dekompressionsstandard, (2) Prinzipien der parallelen, integrierten Schaltungsauslegung zum Adressieren komplexer Rechenaufgaben gemäß der vorliegenden Erfindung, (3) ein als ein einziger integrierter Schaltkreis ausgeführter H.264 Videocodec, (4) Implementierungen eines Videosystems, welche eine verbesserte Integration mit dem Speicher-Untersystem gemäß der vorliegenden Erfindung aufweisen, (5) eine erste Familie von Speicher-Untersystemen, welche einen ersten Satz von Ausgestaltungen der vorliegenden Erfindung darstellen und (6) eine Familie von Speicher-Untersystemen, welche einen zweiten Satz von Ausgestaltungen der vorliegenden Erfindung darstellen. Es sollte angemerkt werden, dass, während die hierin vorgestellten Beispiele den H.264 Standard benutzen, es sich versteht, dass dies lediglich Beispiele sind und die Erfindung in keiner Weise auf H.264 Implementierungen eingeschränkt ist. Im untenstehenden ersten Unterabschnitt wird die Rechenaufgabe im Überblick beschrieben, die durch ein spezifisches Beispiel einer Rechenmaschine mit paralleler, über eine Leitung geleiteter integrierter Schaltung ausgeführt wird. Die spezifisch beschriebene Ausführungsform ist ein Videocodec, der rohe Videosignale komprimiert und komprimierte Videosignale gemäß dem H.264 oder MPEG-4 AVC, Komprimiertes-Videosignal-Dekompressionsstandard dekomprimiert. Für die Leser, die bereits mit dem H.264 Komprimiertes-Videosignal-Dekompressionsstandard vertraut sind, kann der erste Unterabschnitt übersprungen werden. In dem zweiten Unterabschnitt der Erörterung werden Prinzipien der parallelen integrierten Schaltungsausführung gemäß Ausführungsformen der vorliegenden Erfindung beschrieben, die für jede der vielen zahlreichen komplexen Rechenaufgaben angewendet werden können. Schließlich wird in einem dritten Unterabschnitt ein H.264 Videocodec im Detail beschrieben, der als ein einziger integrierter Schaltkreis ausgeführt ist, der eine spezifische Ausführungsform der vorliegenden Erfindung darstellt. In dem vierten Unterabschnitt werden diverse Ausgestaltungen eines Videocodec mit einem einzelnen integrierten Schaltkreis diskutiert, welche einen Lösungsweg hin zu einer verbesserten Integration von Speicher-Untersystemen mit dem Videocodec und schlussendlich mit einem Bildgebungssystem weisen. In dem fünften Unterabschnitt wird eine erste Familie von auf Direktzugriffsspeichern basierenden Speicher-Untersystemen, welche Ausgestaltungen der vorliegenden Erfindung darstellen, diskutiert.
  • Abschließend wird in dem sechsten Unterabschnitt eine zweite Familie von effizienten Speichersystemen, welche Ausgestaltungen der vorliegenden Erfindung darstellen, diskutiert.
  • Unterabschnitt I: Der H.264 Standard für Dekompression komprimierter Videosignale
  • Die erste Untersektion gibt einen Überblick über den H.264 Standard für Dekompression von komprimierten Videosignalen. Diese Untersektion gibt eine Beschreibung der Rechenaufgabe an, welche von einer spezifischen Ausführungsform einer parallelen Pipeline-Rechenmaschine mit integriertem Schaltkreis, welcher eine Ausführungsform der vorliegenden Erfindung darstellt, angesprochen wird. Jene Leser, welche mit H.264 vertraut sind, können diese erste Untersektion überspringen und mit der zweiten Untersektion unten fortfahren.
  • Die 1 veranschaulicht ein digital kodiertes Bild. Ein digital kodiertes Bild kann eine Standbildfotografie, ein Videoeinzelbild oder eines von unterschiedlichen grafischen Objekten sein. Im Allgemeinen umfasst ein digital kodiertes Bild eine Folge von digital kodierten Zahlen, welche zusammen ein rechteckiges Bild 101 beschreiben. Das rechteckige Bild hat eine horizontale Ausdehnung 102 und eine vertikale Ausdehnung 104, deren Verhältnis als „Seitenverhältnis” des Bildes bezeichnet wird.
  • Ein digital kodiertes Bild wird in winzige Anzeigeeinheiten zerlegt, welche als Bildpunkt („Pixel”) bezeichnet werden. In 1 ist ein kleiner Abschnitt 106 der linken oberen Ecke eines dargestellten Bildes zweifach vergrößert gezeigt. Jeder Vergrößerungsschritt ist eine 12-fach-Vergrößerung, welche eine endgültige 144-fache Vergrößerung eines winzigen Abschnitts der linken oberen Ecke des digital kodierten Bildes 108 hervorbringt. Bei 144-fache Vergrößerung erkennt man, dass der kleine Abschnitt des angezeigten Bildes durch ein geradliniges Koordinatengitter in kleine Quadrate aufgeteilt ist, wobei jedes kleine Quadrat, wie zum Beispiel Quadrat 110, einem Bildpunkt entspricht oder einen Bildpunkt darstellt. Ein Videobild wird digital kodiert als eine Folge von Dateneinheiten, wobei jede Dateneinheit die Lichtemissionscharakteristika eines Bildpunktes innerhalb des dargestellten Bildes beschreibt. Die Bildpunkte kann man sich als Zellen innerhalb einer Matrix vorstellen, wobei jeder Bildpunktort durch eine horizontale Koordinate und eine vertikale Koordinate beschrieben wird. Die Bildpunkte können alternativ als eine lange lineare Folge von Bildpunkten aufgefasst werden, welche in Rasterabtastreihenfolge oder in einer anderen Tordefinierten Reihenfolge erzeugt werden. Im Allgemeinen wird ein logischer Bildpunkt in einem digital kodierten Bild direkt in Lichtemission von einem oder mehreren winzigen Anzeigeelementen eines Anzeigegerätes übersetzt. Die Zahl, welche den Wert jedes Bildpunktes digital kodiert, wird in eine oder mehrere elektronische Spannungssignale übersetzt, um die Anzeigeeinheit dahingehend zu steuern, Licht mit richtigem Farbton und Intensität zu emittieren, so dass, wenn alle Anzeigeeinheiten gemäß den kodierten Bildpunktwerten in einem digital kodierten Bild angesteuert werden, die Anzeigevorrichtung das kodierte Bild originalgetreu zur Betrachtung durch einen menschlichen Betrachter reproduziert. Digital kodierte Bilder können auf Kathodenstrahlröhren oder Plasmaanzeigegeräten, welche in Fernsehern integriert sind, auf Computermonitoren und anderen derartigen lichtemittierenden Anzeigegeräten angezeigt werden, können auf Papier oder synthetischen Filmen durch Computerdrucker gedruckt werden, können über digitale Kommunikationsmedien an entfernte Geräte übertragen werden, können auf Massenspeichergeräten und in Computerspeichern abgespeichert werden und können durch verschiedene Bildverarbeitungsanwendungsprogramme bearbeitet werden.
  • Es gibt verschiedene unterschiedliche Verfahren und Standards zum Kodieren von Farb- und Emissionsintensitätsinformation in einer Dateneinheit. Die 2 veranschaulicht zwei verschiedene Bildpunktwertkodierungsverfahren gemäß zwei verschiedenen Farb- und Helligkeitsmodellen. Ein erstes Farbmodell 202 ist mittels eines Würfels dargestellt. Das Volumen innerhalb des Würfels wird indiziert durch drei orthogonale Achsen, die R' Achse 204, die B' Achse 206 und die G' Achse 208. In diesem Beispiel wird jede Achse in 256 Schritten inkrementiert, entsprechend allen möglichen numerischen Werten eines 8 Bit Bytes, wobei alternative R'G'B'-Modelle eine kleinere oder größere Anzahl von Schritten verwenden. Das Volumen des Würfels stellt alle möglichen Farb- und Helligkeitskombinationen dar, welche durch einen Bildpunkt eines Anzeigegeräts angezeigt werden können. Die R', B' und G'-Achsen entsprechen roten, blauen und grünen Komponenten des von einem Bildpunkt emittierten farbigen Lichts. Die Intensität der Lichtemission durch eine Anzeigeeinheit ist im Allgemeinen eine nicht-lineare Funktion der an die Dateneinheit angelegten Spannung. In dem RGB Farbmodell würde ein G-Komponentenwert von 127 in einer Byte-kodierten G-Komponente angeben, dass die Hälfte der maximalen Spannung, welche an eine Anzeigeeinheit angelegt werden kann, an eine bestimmte Anzeigeeinheit angelegt wird. Jedoch kann, wenn die Hälfte der maximalen Spannung an eine Anzeigeeinheit angelegt wird, die Helligkeit der Emission signifikant die Hälfte der maximalen Helligkeit, die bei voller Spannung emittiert wird, überschreiten. Aus diesem Grund wird eine nichtlineare Transformation an den Schritten des ROB Farbmodells vorgenommen, um Inkrementierungen des R', G', B'-Farbmodells hervorzubringen, bei denen die Skalierung hinsichtlich der wahrgenommenen Helligkeit linear ist. Die Kodierung für einen bestimmten Bildpunkt 210 kann drei 8 Bit-Bytes beinhalten, für eine Summe von 24 Bits, wenn bis zu 256 Helligkeitswerte für jeden der roten, blauen und grünen Komponenten des von einem Bildpunkt emittierten Lichts spezifiziert werden kann. Wenn eine größere Anzahl von Helligkeitswerten spezifiziert werden kann, wird eine größere Anzahl von Bits verwendet, um jeden Bildpunkt darzustellen, und wenn eine kleinere Anzahl von Heiligkeitswerten spezifiziert wird, kann eine kleinere Anzahl von Bits benutzt werden, um jeden Bildpunkt zu kodieren.
  • Obwohl das R', G', B'-Farbmodell verhältnismäßig leicht zu verstehen ist, insbesondere mit Blick auf den Aufbau von Anzeigeeinheiten in Kathodenstrahlröhrenanzeigen mit rot emittierendem Phosphor, grün emittierendem Phosphor und blau emittierendem Phosphor, sind eine Vielzahl von verwandten, aber unterschiedlichen, Farbmodellen nützlicher für Videosignal-Kompression und -Dekompression. Ein derartiges alternatives Farbmodell ist das Y-CrCb-Farbmodell. Das Y-CrCb-Farbmodell kann abstrakt dargestellt werden als ein bipyramidales Volumen 212 mit einer zentralen horizontalen Ebene 214, welche orthogonale Cb- und Cr-Achsen enthält, wobei die lange, vertikale Achse der Bipyramide 216 der Y-Achse entspricht. Bei diesem Farbmodell sind die Cr- und Cb-Achsen farbspezifizierende Achsen, wobei die horizontale Mittelebene 214 alle möglichen Farbtöne, die angezeigt werden können, darstellt, und die Y-Achse die Helligkeit oder Intensität, mit welcher die Farbtöne angezeigt werden, darstellt. Die numerischen Werte, welche die Rot-, Blau- und Grünkomponenten in dem R', G', B'-Farbmodell spezifizieren, können mittels einer einfachen Matrixtransformation 220 unmittelbar in äquivalente Y-CrCb-Werte umgewandelt werden. Dementsprechend kann, wenn 8 Bit Mengen verwendet werden, um die Y-Cr- und Cb-Komponenten der Emission der Anzeigeeinheit gemäß dem Y'-CrCb-Farbmodell zu kodieren, eine 24 Bit Dateneinheit 222 verwendet werden, um den Wert für einen einzelnen Bildpunkt zu kodieren.
  • Für Bildverarbeitungsprozesse kann man sich, wenn das Y-CrCb-Farbmodell eingesetzt wird, das digital kodierte Bild als drei separat in Bildpunkte aufgelöste Ebenen vorstellen, welche übereinander überlagert sind. Die 3 veranschaulicht digitale Kodierung unter Verwendung des Y-CrCb-Farbmodells. Ein digital kodiertes Bild, wie in 3 gezeigt, kann aufgefasst werden als ein Y-Bild 302 und zwei Chroma Bilder 304 und 306. Die Y'-Ebene 302 kodiert im Wesentlichen die Helligkeitswerte des Bildes und ist äquivalent zu einer Monochromdarstellung des digital kodierten Bildes. Die zwei Chromaebenen 304 und 306 repräsentieren gemeinsam den Farbton, oder die Farbe, an jedem Punkt in dem digital kodierten Bild. Für viele Videoverarbeitungs- und Videobildspeicherzwecke ist es zweckmäßig, die Cr- und Cb-Ebenen zu dezimieren, um Cr- und Cb-Ebenen 308 und 310 mit halber Auflösung zu erzeugen. Mit anderen Worten, statt eine Intensität und zwei Chromawerte für jeden Bildpunkt zu speichern, wird die Intensität für jeden Bildpunkt gespeichert, aber ein Paar Chromawerte für jedes vier Bildpunkte beinhaltende 2×2 Quadrat. Folglich sind alle vier Bildpunkte in der oberen linken Ecke des Bildes 312 so kodiert, dass sie dieselben Cr-Werte und Cb-Werte besitzen. Für jede 2×2 Region des Bildes 320 kann die Region digital durch vier Intensitätswerte 322 und zwei Chromawerte 324 kodiert werden, insgesamt 48 Bits, oder, in anderen Worten, durch Verwenden von 12 Bits pro Bildpunkt.
  • Die 4 veranschaulicht die Ausgabe einer Videokamera. Die Videokamera 402 wird als eine Linse 404 und ein elektronischer, ausgabeerzeugender Sensor 406 dargestellt. Die Videokamera erzeugt ein Taktsignal 408, die ansteigende Flanke jedes Impulses, das dem Anfang eines nächsten Datenpakets entspricht, wie das Datenpaket 410. In dem in 4 gezeigten Beispiel enthält jedes Datenpaket eine Intensität von acht Bit oder einen Chromawert. Die digitale Kamera erzeugt ein Linien- oder Reihensignal 412 mit einem Hochsignal über eine Zeitperiode entsprechend der Ausgabe einer ganzen Reihe eines digital kodierten Bildes. Die digitale Kamera gibt zusätzlich ein Bildsignal 414 aus, das während einer Zeitperiode hoch ist, während der ein digitales Bild oder eine Bilderreihe ausgegeben wird. Die Takt-, Reihen- und Bilderreihenausgabesignale spezifizieren zusammen die Zeiten für die Ausgabe für jede/n Intensität oder Chromawert, die Ausgabe jeder Reihe einer Bilderreihe und die Ausgabe jeder Bilderreihe in einem Videosignal. Die Datenausgabe 416 der Videokamera wird detailliert als die Sequenz des Pakets 420 an der Unterseite der 4 gezeigt. Bezug nehmend auf die 2×2 Bildpunktregion (320 in 3), die in 3 gezeigt wird, und unter Verwendung derselben indizierenden Konvention, die in Bezug zu dieser Region für die kodierte Intensität und Chromawerte 322 und 324 in 3 verwendet wird, kann der Inhalt des Datenstroms 420 in 4 verstanden werden. Zwei Intensitätswerke für eine 2×2 Quadratregion von Bildpunkten 422426 werden zusammen mit einem ersten Satz von zwei Chromawerten 428429 für die 2×2 Quadratregion von Bildpunkten als Teil einer ersten Reihe von Bildpunktwerten mit den zwei Chromawerten 428429 übertragen, wobei die zwei Chromawerte 428429 zwischen den ersten zwei Intensitätswerten 422423 übertragen werden. Anschließend werden die Chromawerte 430431 zwischen dem zweiten Paar der Intensitätswerte 424 und 426 als Teil der nächsten Reihe von Bildpunktintensitäten wiederholt. Das Wiederholen der Chromawerte ermöglicht bestimmte Typen der Echtzeitvideodatenstromverarbeitung. Jedoch ist das zweite Paar der Chromawerte 430431 redundant. Wie in Bezug auf 3 erörtert, sind die Chromaebenen dezimiert, so dass lediglich zwei Chromawerte mit jeder 2×2 Region mit vier Bildpunkten verbunden sind.
  • Die 5 veranschaulicht die Funktion eines Videocodec. Wie oben mit Bezug auf die 14 erörtert, erzeugt eine Videokamera 502 einen Strom von digital kodierten Videoeinzelbildern 504. Bei 30 Einzelbildern pro Sekunde, ausgehend von Einzelbildern mit 1920×1080 Bildpunkten und ausgehend von einer Kodierung, die 12 Bits pro Bildpunkt verwendet, erzeugt die Videokamera 93 Megabytes an Daten pro Sekunde. Eine Minute fortlaufende Videoerfassung würde 5,5 Gigabytes an Daten erzeugen. Kleine elektronische Handgeräte, die gemäß den derzeitig verfügbaren Designs und Technologien hergestellt werden, können Daten mit diesem Verhältnis nicht verarbeiten, speichern und/oder übertragen. Um handhabbare Datenübertragungsverhältnisse zu erzeugen, wird ein Videocodec 506 eingesetzt, um die Datenstromausgabe von der Kamera zu komprimieren. Der H.264-Standard liefert ein Kompressionsverhältnis von etwa 30:1. Der eingehende 93 MB/Sek-Datenstrom von der Kamera wird somit durch den Videocodec 506 komprimiert, um einen komprimierten Videodatenstrom von 3 MB/Sek 508 zu erzeugen. Im Gegensatz zum von der Kamera erzeugten Rohvideodatenstrom wird der komprimierte Videodatenstrom durch einen Videocodec mit einer Datenrate ausgegeben, die zum Speichern oder Übertragen durch ein Handgerät verarbeitet werden kann. Ein Videocodec kann auch einen komprimierten Videodatenstrom 510 empfangen und die komprimierten Daten dekomprimieren, um eine Ausgabe eines rohen Videodatenstroms 512 für den Verbrauch durch eine Videoanzeigevorrichtung zu erzeugen.
  • Das 30:1 Kompressionsverhältnis kann durch einen Videocodec erreicht werden, da Videosignale im Allgemeinen verhältnismäßig große Mengen an redundanten Informationen enthalten. Als ein Beispiel enthält ein durch Filmen zweier Kinder, die einen Ball hin und her werfen, erzeugtes Videosignal eine verhältnismäßig kleine Menge von schnell veränderlichen Informationen, nämlich die Bilder der Kinder und des Balls, und eine verhältnismäßig große Menge an statischen oder langsam veränderlichen Objekten, umfassend die Hintergrundlandschaft und den Rasen, auf welchem die Kinder spielen. Wohingegen die Bilder der Kinder und das Bild des Balls sich von Einzelbild zu Einzelbild signifikant ändern können, können über den Verlauf der Filmaufnahme oder zumindest für vergleichsweise lange Zeitintervalle Hintergrundobjekte während der Filmaufnahmen oder zumindest für vergleichsweise lange Zeitintervalle verhältnismäßig konstant bleiben. In diesem Fall kann ein Großteil der in auf das erste Einzelbild folgenden Einzelbildern kodierten Information recht redundant sein. Videokomprimierungstechniken werden benutzt, um die redundante Information zu finden und effizient zu kodieren, um daher die Gesamtmenge an Informationen, welche in einem komprimierten Videosignal enthalten ist, stark zu vermindern.
  • Der komprimierte Videostrom 508 ist im unteren Abschnitt von 5 in größeren Einzelheiten 520 gezeigt. Gemäß dem H.264 Standard umfasst der komprimierte Videostrom eine Folge von Netzabstraktionsschicht („NAL”) Paketen, wie zum Beispiel NAL-Paket 522. Jedes NAL-Paket beinhaltet einen 8 Bit Nachrichtenkopf, wie zum Beispiel Nachrichtenkopf 524 des NAL-Pakets 522. Ein erstes Bit muss stets null 526 sein, die nächsten beiden Bits 528 geben an, ob die in dem Paket enthaltenen Daten mit einem Referenzeinzelbild assoziiert sind oder nicht, und die letzten fünf Bits 530 ergeben zusammen ein Typfeld, welches die Art von Paket und die Eigenschaft von dessen Datenfracht angibt. Paketdaten schließen Pakete ein, welche kodierte Bildpunktdaten und kodierte Metadaten, welche beschreiben, wie Abschnitte der Daten kodiert worden sind, beinhalten, und schließen auch Pakete ein, die unterschiedliche Arten von Begrenzerzeichen, darin enthalten Ende der Folge-Ende des Strombegrenzerzeichen, darstellen. Der Rumpf eines NAL-Pakets 532 enthält im Allgemeinen kodierte Daten.
  • Die 6 veranschaulicht verschiede Datenobjekte, an welchen Videokodierungsoperationen während der Videodatenstromkomprimierung und -dekomprimierung von komprimierten Videodatenströmen vorgenommen werden. Vom Standpunkt der Videoverarbeitung wird ein Videoeinzelbild 602 als aus einem zweidimensionalen Feld von Makroblöcken 604 zusammengesetzt verstanden, wobei jeder Makroblock ein 16×16 Feld von Datenwerten umfasst. Wie oben erörtert, arbeiten Videokomprimierung und -Dekomprimierung im Allgemeinen unabhängig auf Intensitätswerte enthaltenden Y' Einzelbildern und Chromawerte enthaltenden Chromaeinzelbildern. Das menschliche Auge ist im Allgemeinen bei weitem empfindlicher gegenüber Variationen der Helligkeit als gegenüber räumlicher Veränderung der Farbe. Daher erhält man eine erste nützliche Komprimierung schlicht durch Dezimierung zweier Chromaebenen, wie oben erörtert. Vor der Dezimierung kann ein 2×2 Quadrat von Bildpunkten durch 12 Bytes kodierter Daten dargestellt werden, ausgehend von 8 Bit Darstellungen der Intensitäts- und Chromawerte. Nach Dezimierung kann dasselbe 2×2 Quadrat aus vier Bildpunkten durch lediglich sechs Datenbytes dargestellt werden. Auf diese Weise wird durch Verminderung der räumlichen Auflösung des Farbsignals ein Komprimierungsverhältnis von 2:1 erreicht. Wohingegen Makroblöcke die Grundeinheit, an welcher Komprimierungs- und Dekomprimierungsoperationen ausgeführt werden, sind, können Makroblöcke für bestimmte Komprimierungs- und Dekomprimierungsoperationen weiter partitioniert werden. Die Intensitäts- oder Luma-Makroblöcke enthalten jeweils 256 Bildpunkte 606, können aber partitioniert werden, um 16×8 Partitionen 608, 6×16 Partitionen, 8×8 Partitionen 612, 8×4 Partitionen 614, 4×8 Partitionen 616 und 4×4 Partitionen 618 zu erzeugen. Auf ähnliche Weise enthalten Chromamakroblöcke jeweils 64 kodierte Chromawerte 620, können aber weiter partitioniert werden um 8×4 Partitionen 622, 4×8 Partitionen 624, 4×4 Partitionen 626, 4×2 Partitionen 628, 2×4 Partitionen 630 und 2×2 Partitionen 632 zu erzeugen. Zusätzlich können 1×4, 1×8 und 1×6 Bildpunktvektoren bei bestimmten Operationen verwendet werden.
  • Gemäß dem H.264 Standard kann jedes Videoeinzelbild logisch in Scheibengruppen partitioniert werden, wobei die Partitionierung durch einen Scheibengruppenteil spezifiziert ist. Viele unterschiedliche Arten von Scheibengruppenpartitionierungen können durch einen geeigneten Scheibengruppenplan spezifiziert werden. Die 7 veranschaulicht die Partitionierung eines Videoeinzelbilds in zwei Scheibengruppen. Das Videoeinzelbild 702 wird partitioniert in eine erste, schachbrettartige Scheibengruppe 704 und eine komplementäre schachbrettartige Scheibengruppe 706. Die erste Scheibengruppe und die zweite Scheibengruppe enthalten beide eine übereinstimmende Anzahl von Bildpunktwerten, und jede enthält die Hälfte der Gesamtanzahl von Bildpunktwerten in dem Einzelbild. Das Einzelbild kann in eine im Wesentlichen beliebige Anzahl von Scheibengruppen partitioniert werden, welche jeweils einen im Wesentlichen beliebigen Bruchteil der Gesamtbildpunkte umfassen, entsprechend im Wesentlichen beliebigen Zuordnungsfunktionen.
  • Die 8 veranschaulicht eine zweite Ebene der Partitionierung eines Videoeinzelbilds. Jede Scheibengruppe, wie zum Beispiel Scheibengruppe 802, kann in eine Anzahl von Scheiben 804806 partitioniert werden. Jede Scheibe enthält eine Anzahl von zusammenhängenden Bildpunkten (zusammenhängend innerhalb der Scheibengruppe, aber nicht notwendigerweise innerhalb eines Einzelbilds) in Rasterabtastreihenfolge. Die Scheibengruppe 802 kann ein ganzes Videoeinzelbild sein oder kann eine Partitionierung des Einzelbildes gemäß einer beliebigen Scheibengruppenpartitionierungsfunktion sein. Bestimmte der Komprimierungs- und Dekomprimierungsoperationen werden auf einer scheibenweisen Basis durchgeführt.
  • Zusammenfassend werden Videokomprimierungs- und Dekomprimierungstechniken an Videoeinzelbildern und verschiedenen Untergruppen von Videoeinzelbildern, eingeschlossen Scheiben, Makroblöcke und Makroblockpartitionen, vorgenommen. Im Allgemeinen werden Intensitätsebenen oder Lumaebenenobjekte unabhängig von Chromaebenenobjekten bearbeitet. Da Chromaebenen um einen Faktor zwei in jeder Dimension dezimiert werden, mit einer 4:1 Gesamtkomprimierung, sind die Dimensionen von Chromamakroblöcken und Makroblockpartitionen in jeder Dimension im Allgemeinen die Hälfte jener der Lumamakroblöcke und Lumamakroblockpartitionen.
  • Ein erster Schritt bei der Videokomprimierung, wie durch den H.264 Standard angedeutet, ist es, eine von zwei verschiedenen allgemeinen Vorhersagetechniken einzusetzen, um die Bildpunktwerte eines aktuell behandelten Makroblocks oder einer aktuell behandelten Makroblockpartition aus, in einem Fall, benachbarten Makroblöcken oder Makroblockpartitionen in demselben Einzelbild, und, in dem anderen Fall, räumlich benachbarter Makroblöcke oder Makroblockpartitionen, welche in Einzelbildern auftreten, welche dem Einzelbild des Makroblocks oder der Makroblockpartition, welche gerade vorhergesagt wird, vorangehen oder folgen, vorherzusagen. Die erste Art von Vorhersage ist räumliche Vorhersage, bezeichnet als „Intra-Prädiktion”. Eine zweite Art von Vorhersage ist zeitliche Vorhersage, bezeichnet als „Inter-Prädiktion”. Intra-Prädiktion ist die einzige Art von Vorhersage, welche für bestimmte Einzelbilder, „Referenz Einzelbilder” genannt, benutzt werden kann. Intra-Prädiktion ist auch die Standardvorhersage, die beim Kodieren von Makroblöcken verwendet wird. Für einen Makroblock eines Einzelbilds, welches nicht Referenzeinzelbild ist, wird als erstes Interpradiktion versucht. Wenn Inter-Prädiktion gelingt, wird Intra-Prädiktion nicht für den Makroblock verwendet. Allerdings kann, wenn Interprädiktion scheitert, Intra-Prädiktion als Standardvorhersageverfahren eingesetzt werden.
  • Die 9 veranschaulicht das grundlegende Konzept der Intra-Prädiktion. Man betrachte einen Makroblock C 902, welcher während einer Makroblock-für-Makroblock-Komprimierung eines Videoeinzelbildes gefunden wurde. Wie oben erörtert, kann ein 16×16 Lumamakroblock 904 unter Benutzung von 256 Bytes kodiert werden. Wenn es allerdings möglich wäre, den Inhalt des Makroblocks aus dem Bild angrenzenden Makroblöcken zu berechnen, dann ist theoretisch ein recht großer Umfang an Komprimierung möglich. Man betrachte zum Beispiel vier an den aktuell betrachteten Makroblock C 902 angrenzende Makroblöcke. Diese vier Makroblöcke schließen einen linken Makroblock 904, einen anderen linken diagonalen Makroblock 906, einen oberen Makroblock 908 und einen oberen rechten diagonalen Makroblock 910 ein. Wäre es möglich, die Bildpunktwerte in C 902 als Funktion eines oder mehrerer dieser angrenzenden Makroblöcke zu berechnen, unter Verwendung einer aus einer Anzahl von verschiedenen Vorhersagefunktionen fc 912, dann könnten die Inhalte des Makroblocks schlichtweg als numerischer Bezeichner oder Spezifikationssymbol für die Vorhersagefunktion kodiert werden. Wäre die Anzahl der Vorhersagefunktionen kleiner als oder gleich 256, zum Beispiel, dann könnte der Bezeichner oder das Spezifikationssymbol für die ausgewählte Vorhersagefunktion in einem einzigen Informationsbyte kodiert werden. Wäre es also möglich, die Inhalte eines Makroblocks exakt aus dessen Nachbarn zu berechnen unter Verwendung einer ausgewählten von 256 möglichen Vorhersagefunktionen, könnte das recht spektakuläre Komprimierungsverhältnis von 256:1 erzielt werden. Bedauerlicherweise werden Komprimierungsverhältnisse dieser Größenordnung im Allgemeinen von den räumlichen Vorhersageverfahren, die für die H.264 Komprimierung eingesetzt werden, im Allgemeinen nicht erzielt, da es bei weitem zu viele mögliche Makroblöcke gibt, um eine exakte Vorhersage mit lediglich 256 Vorhersagefunktionen zuzulassen. Wenn jeder Bildpunkt beispielsweise durch 12 Bits kodiert wird, gibt es 212 = 4096 verschiedene mögliche Bildpunktwerte und 4096256 verschiedene mögliche Makroblöcke. Allerdings kann Intra-Prädiktion signifikant zu dem Gesamtkomprimierungsverhältnis für H.264 Videokomprimierung beitragen, insbesondere für verhältnismäßig statische Videosignale mit großen Bildbereichen, die sich nicht schnell verändern und die vergleichsweise homogen bezüglich Intensität und Farbe sind.
  • H.264 Intra-Prädiktion kann nach neun verschiedenen Modi für 4×4 Lumamakroblöcke oder gemäß vier verschiedenen Modi für 16×16 Lumamakroblöcken durchgeführt werden. Die 10A–I veranschaulichen die neun 4×4 Lumablock Intraprädiktionsmodi. Die in sämtlichen diesen Figuren verwendeten Darstellungskonventionen sind ähnlich und sind mit Bezug auf 10A beschrieben. Der 4×4 Lumamakroblock, welcher aktuell vorhergesagt wird, ist in den Figuren durch die 4×4 Matrix 1002 unten rechts im Diagramm dargestellt. Daher enthält der oberste linksseitige Bildpunktwert 1004 in der 4×4 Matrix, welche vorhergesagt wird, in 10A den Wert „A”. Die zu dem 4×4 Lumablock benachbarten Zeilen stellen Bildpunktwerte in benachbarten 4×4 Lumablocks innerhalb des Bildes dar. Beispielsweise sind in 10A die Werte „A” 1006, „B” 1007, „C” 1008 und „D” 1009 Datenwerte, welche in dem 4×4 Lumablock direkt oberhalb des 4×4 Lumablocks, welcher vorhergesagt wird 1002, enthalten sind. Auf ähnliche Weise stellen die Zellen 10101013 Bildpunktwerte innerhalb einer letzten vertikalen Spalte des 4×4 Lumablocks links von dem 4×4 Lumablock, welcher vorhergesagt wird, dar. Im Falle einer Modus-0-Vorhersage, veranschaulicht in 10A, werden die Werte in der letzten Reihe des oberen, angrenzenden 4×4 Lumablocks vertikal nach unten in die Spalten des aktuell betrachteten 4×4 Lumablocks 1002 kopiert. Daher stellt die Modus-0-Vorhersage eine nach unten gerichtete vertikale Vorhersage dar, welche durch den in 10A gezeigten nach unten gerichteten Richtungspfeil 1020 repräsentiert wird. Die verbleibenden acht Intraprädiktionsmodi zum Vorhersagen von 4×4 Lumablöcken sind in den 10B10I gezeigt, unter Verwendung der gleichen Darstellungskonventionen wie in 10A verwendet, und sind daher vollständig abgeschlossen und selbsterklärend. Jeden Modus, mit Ausnahme des Modus 2, kann man sich als räumlichen Vektor vorstellen, welcher eine Richtung anzeigt, in welche Bildpunktwerte in benachbarten 4×4 Blöcken in den Block, welcher vorhergesagt wird, übersetzt werden.
  • Die 11A–D veranschaulichen unter Benutzung ähnlicher Darstellungskonventionen, wie in den 10A–I verwendet, die vier Modi zur Intraprädiktion von 16×16 Lumablöcken. In den 11A–D ist der Block, welcher vorhergesagt wird, der 16×16 Block in dem unten rechthändigen Abschnitt der Matrix 1002, die äußerste linke vertikale Spalte 1104 ist die äußerste rechte vertikale Spalte des linken angrenzenden 16×16 Lumablocks und die obere horizontale Reihe 1106 ist die Unterreihe des oberen angrenzenden 16×16 Lumablocks. Die obere äußere linke Zelle 1110 ist die untere Zelle in der rechten Ecke eines oberen, linken diagonalen 16×16 Lumablocks. Die 16×16 Vorhersagemodi sind ähnlich einer Untergruppe der 4×4 Intraprädiktionsmodi mit Ausnahme des Modus 4, gezeigt in 11D, welcher ein vergleichsweise komplexer Ebenenvorhersagemodus ist, der Vorhersagewerte für jeden Bildpunkt aus allen Bildpunkten in der unteren Reihe des oberen angrenzenden 16×16 Lumablocks und der äußersten rechten vertikalen Spalte des linken angrenzenden 16×16 Lumablocks berechnet. Im Allgemeinen wird der Modus, welcher die nächste Näherung an einen aktuellen Block, welcher Intra-vorhergesagt wird, erzeugt, als Intra-Prädiktionsmodus ausgewählt, der auf den aktuell betrachteten Block angewendet werden soll. Vorhergesagte Bildpunktwerte können mit aktuellen Bildpunktwerten unter Verwendung von unterschiedlicher Vergleichsmetrik verglichen werden, eingeschlossen mittlere Bildpunktwertdifferenzen zwischen dem vorhergesagten und betrachteten Block, dem Mittelwert der Fehlerquadrate der Bildpunktwerte, Summe der Fehlerquadrate und anderer derartiger Metriken.
  • Die 12 veranschaulicht das Konzept der Inter-Prädiktion. Inter-Prädiktion, wie oben erörtert, ist zeitliche Vorhersage, die man sich vorstellen kann als bewegungsbasierte Vorhersage. Zu Zwecken der Veranschaulichung betrachte man ein aktuelles Einzelbild 1202 und ein Referenzeinzelbild, welches in dem Videosignal entweder vor oder nach dem aktuellen Einzelbild 1204 auftritt.
  • An einem aktuellen Punkt in der Videokomprimierung muss ein aktueller Makroblock 1206 aus den Inhalten des Referenzeinzelbildes vorhergesagt werden. Ein Beispiel des Vorgangs ist in 12 veranschaulicht. In dem Referenzeinzelbild wird ein Referenzpunkt 1210 als die Koordinaten des aktuell betrachteten Blocks 1206 mit Bezug auf das aktuelle Einzelbild, angewendet auf das Referenzeinzelbild, ausgewählt. Mit anderen Worten beginnt der Prozess an der äquivalenten Position in dem Referenzeinzelbild des aktuell betrachteten Blocks in dem aktuellen Einzelbild. Dann wird innerhalb eines begrenzten Suchraums, in 12, durch ein fettgedrucktes 1212 Quadrat angedeutet, jeder Block innerhalb des Suchraums mit dem aktuell betrachteten Block in dem aktuellen Einzelbild verglichen, um einen Block in dem Suchbereich 1212 des Referenzeinzelbildes 1204 zu identifizieren, welcher am ähnlichsten zu dem aktuell betrachteten Block ist. Wenn die Differenz zwischen den Inhalten des nächsten Blocks in Bildpunktwerten innerhalb des Hochbereichs zu dem aktuell betrachteten Block unterhalb eines Schwellwertes ist, dann sagt der nächste aus dem Suchbereich ausgewählte Block die Inhalte des aktuell betrachteten Blocks vorher. Der ausgewählte Block aus dem Suchbereich kann ein tatsächlicher Block sein oder kann ein geschätzter Block an gebrochenen Koordinaten bezüglich des geradlinigen Bildpunktgitters sein, wobei Bildpunktwerte in dem geschätzten Block aus tatsächlichen Bildpunktwerten in dem Referenzeinzelbild interpoliert sind. Auf diese Weise kann unter Verwendung von Interprädiktion, anstatt den aktuell betrachteten Makroblock 1206 als 356 Bildpunktwerte zu kodieren, der aktuell betrachtete Makroblock 1206 als Bezeichner des Referenzeinzelbildes eine numerische Darstellung des Vektors, welcher von dem Referenzpunkt 1210 zu einem aus dem Suchbereich 1212 ausgewählten Makroblock zeigt, kodiert werden. Wenn zum Beispiel festgestellt wird, dass der ausgewählte interpolierte Block 1214 am nächsten mit dem aktuell betrachteten Block 1206 übereinstimmt, dann kann der aktuell betrachtete Block als Bezeichner für das Referenzeinzelbild 1204, wie zum Beispiel als ein Versatz in Einzelbildern innerhalb des Videosignals von dem aktuellen Einzelbild, und als eine numerische Darstellung des Vektors 1216, welcher die räumliche Verschiebung des ausgewählten Blocks 1214 von dem Referenzpunkt 1210 darstellt, kodiert werden.
  • Verschiedene unterschiedliche Metriken können verwendet werden, um die Inhalte des aktuellen oder interpolierten Blocks innerhalb des Suchbereichs des Referenzeinzelbildes 1212 zu vergleichen mit den Inhalten des aktuell betrachteten Blocks 1206, eingeschlossen eine mittlere absolute Bildpunktwertdifferenz oder eine mittlere quadratische Differenz zwischen Bildpunktwerten. C++-artiger Pseudocode 1220 ist in 12 als alternative Beschreibung des oben beschriebenen Interprädiktionsprozesses angegeben. Ein codierter Verschiebungsvektor ist als Bewegungsvektor bezeichnet. Die räumliche Verschiebung des ausgewählten Blocks von dem Referenzpunkt in dem Referenzeinzelbild entspricht einer zeitlichen Verschiebung des aktuell betrachteten Makroblocks in dem Videostrom, was häufig einer tatsächlichen Bewegung von Objekten in einem Videobild entspricht.
  • Die 13A–D veranschaulichen einen Interpolationsvorgang, welcher zur Berechnung von Bildpunktwerten für Blöcke innerhalb eines Suchbereichs eines Referenzeinzelbildes, die man sich als bei gebrochenen Koordinaten auftretend vorstellen kann, verwendet wird. Der H.264 Standard ermöglicht eine Auflösung von 0,25 hinsichtlich der ganzzahligen Bildpunktkoordinaten. Man betrachte den 6×6 Bildpunktblock 1302 links in 13A. Der Interpolationsvorgang kann angesehen werden als eine translatorische Expansion der tatsächlichen Bildpunkte in zwei Dimensionen und Berechnungen von interpolierten Werten zum Einfügen zwischen den expandierten Bildpunkten. Die 13A–D veranschaulichen die Berechnung der eine höhere Auflösung aufweisenden eingefügten Werte zwischen den mittleren vier Bildpunkten 1304 bis 1307 in dem 6×6 Block der tatsächlichen Bildpunktwerte. Die Expansion ist an der rechten Seite der 13A 1310 veranschaulicht. In diesem Beispiel sind Bildpunktwerte 1304 bis 1307 räumlich in zwei Dimensionen expandiert worden und 21 neue Zellen sind hinzugefügt worden, um eine 4×4 Matrix mit den ursprünglichen Bildpunktwerten 1304 bis 1307 an den Ecken zu bilden. Die verbleibenden Bildpunkte der 6×6 Bildpunktmatrix 1302 sind ebenfalls translatorisch expandiert worden. 13B veranschaulicht den Interpolationsvorgang zur Erzeugung interpolierter Werte 1312 auf halbem Wege zwischen tatsächlichen Bildpunktwerten 1304 und 1306. Ein vertikales Filter wird entlang der Spalte von Bildpunktwerten, welche die ursprünglichen Bildpunktwerte 1304 und 1306 beinhalten, in 13B durch gestrichelte Linien 1314 gezeigt, angewendet. Interpolierter Wert Y 1312 wird nach der Formel 1316 berechnet. In diesem Beispiel wird der Wert Y' 1320 mittels linearer Interpolation der beiden vertikalen angrenzenden Werte gemäß Formel 1322 interpoliert. Der Interpolationswert 1324 kann auf ähnliche Weise mittels linearer Interpolation zwischen Werten 1312 und 1306 berechnet werden. Das vertikale Filter 1314 kann auf ähnliche Weise angewendet werden, um die interpolierten Werte in der Spalte, welche die ursprünglichen Werte 1305 und 1307 enthält, zu berechnen. 13C veranschaulicht Berechnung der interpolierten Werte in horizontalen Reihen zwischen ursprünglichen Werten 1304 und 1305. In diesem Beispiel wird ein horizontales Filter 1326 auf die tatsächlichen Bildpunktwerte angewendet, ähnlich zu der Anwendung des vertikalen Filters in 13B. Der Mittelpunktsinterpolationswert wird durch Formel 1328 berechnet und die Viertelpunktwerte an jeder Seite des Mittelpunktwertes können mittels linearer Interpolation gemäß der Formel 1330 und eine ähnliche Formel für die rechthändigen interpolierten Werte zwischen dem mittleren Punkt und ursprünglichen Wert 1305 erhalten werden. Das gleiche horizontale Filter kann auf die letzte Reihe, welche die ursprünglichen Werte 1306 und 1307 enthält, angewendet werden. 13D veranschaulicht die Berechnung des zentralen interpolierten Punkts 1340 und der angrenzenden Viertelpunkte zwischen den interpolierten Mittelpunktwerten 1342 und 1344. Alle verbleibenden Werte können mittels linearer Interpolation erhalten werden.
  • Die 14A–C veranschaulichen Beispiele von unterschiedlichen Arten von Einzelbildern und die unterschiedlichen Arten von Interprädiktion, welche bezüglich dieser unterschiedlichen Arten von Einzelbildern möglich sind. Wie in 14A gezeigt, umfasst ein Videosignal eine lineare Folge von Videoeinzelbildern. In 14A beginnt die Folge mit Einzelbild 1402 und endet mit Einzelbild 1408. Eine erste Art von Einzelbild in einem Videosignal wird mit „I”-Einzelbild bezeichnet. Die Bildpunktwerte der Makroblöcke eines I-Einzelbildes können nicht mittels Interprädiktion vorhergesagt werden. Ein I-Einzelbild ist eine Art von Referenzpunkt innerhalb eines dekomprimierten Videosignals. Die Inhalte eines kodierten I-Einzelbildes hängen nur von den Inhalten des I-Einzelbildes in Rohsignalform ab. Daher kann, wenn systematische Fehler beim Dekomprimieren auftreten, welche Probleme in Verbindung mit Interprädiktion betreffen, die Videosignaldekomprimierung gerettet werden, indem nach vorne zu einem nächsten I Referenzeinzelbild gesprungen wird und die Dekodierung ausgehend von diesem Einzelbild fortgesetzt wird. Derartige Fehler pflanzen sich nicht über die I-Einzelbildbarrieren hinweg fort. In 14A sind die ersten und letzten Einzelbilder 1402 und 1404 I-Einzelbilder.
  • Eine nächste Art von Einzelbild ist in 14B veranschaulicht. Ein P-Einzelbild 1410 kann Blöcke enthalten, welche mittels Interprädiktion aus einem I-Einzelbild vorhergesagt wurden. In 14B wurde der Block 1412 als ein Bewegungsvektor und ein Spezifikationssymbol für Referenzeinzelbild 1402 kodiert. Der Bewegungsvektor stellt zeitliche Bewegung von Block 1414 in Referenzeinzelbild 1402 zu der Position des Blocks 1412 in P Einzelbild 1410 dar. P-Einzelbilder stellen eine Art von vorhersageerzwungenem Einzelbild mit Blöcken, welche mittels Interprädiktion aus Referenzeinzelbildern vorhergesagt worden sein können, dar. P Einzelbilder stellen eine andere Art von Barriereeinzelbild innerhalb eines kodierten Videosignals dar. Die 14C veranschaulicht eine dritte Art von Einzelbild. Ein B-Einzelbild 1416 bis 1419 kann mittels Interprädiktion von einem oder zwei anderen B-Einzelbildern, P-Einzelbildern oder I-Einzelbildern vorhergesagte Blöcke beinhalten. In 14C enthält B-Einzelbild 1418 einen Block 1420, welcher mittels Interprädiktion aus Block 1422 in P-Einzelbild 1410 vorhergesagt wurde. B-Einzelbild 1416 enthält einen Block 1426, welcher vorhergesagt wurde sowohl aus Block 1428 in B-Einzelbild 1417 und Block 1430 in Referenzeinzelbild 1402. B-Einzelbilder können am besten von Interprädiktion Gebrauch machen und erzielen daher höchste Komprimierung aufgrund von Interprädiktion, haben aber auch höhere Wahrscheinlichkeit von verschiedenen Fehlern und Anomalien, welche bei dem Dekodiervorgang auftreten können. Wenn ein Block, wie zum Beispiel Block 1426, aus zwei anderen Blöcken vorhergesagt wird, wird der Block als zwei verschiedene Referenzeinzelbildspezifikationssymbole und Bewegungsvektoren kodiert, und der vorhergesagte Block wird als ein möglicherweise gewichteter Durchschnitt der Bildpunktwerte in den beiden Blöcken, aus denen er vorhergesagt wurde, erzeugt.
  • Wie oben erwähnt, könnten extrem hohe Komprimierungsverhältnisse erhalten werden, wäre Intraprädiktion und/oder Interprädiktion vollkommen zuverlässig. Es ist sicherlich bei weitem knapper, einen Block als einen oder zwei Bewegungsvektoren und Einzelbildoffsets darzustellen, als 256 verschiedene Bildpunktwerte. Es ist sogar noch effizienter, einen Block als einen von 13 verschiedenen Intraprädiktionsmodi darzustellen. Allerdings, wie man sich anhand der unüberschaubaren Anzahl von verschiedenen möglichen Makroblockwerten klarmachen kann, und wenn man berücksichtigt, dass ein Makroblockwert ein 256 Byte kodierter numerischer Wert ist, kann weder Intra- noch Interprädiktion eine exakte Vorhersage der Inhalte von Blöcken innerhalb eines Videoeinzelbildes erzeugen, es sei denn, das Videosignal, in welchem das Videoeinzelbild enthalten ist, beinhaltet kein Rauschen und beinahe keine Information, wie zum Beispiel ein Video eines uniformen, unveränderlichen, vollfarbigen Hintergrunds. Obwohl Intra- und Interprädiktion die Inhalte von Makroblöcken nicht exakt vorhersagen können, können sie im Allgemeinen jedoch die Inhalte von Makroblöcken häufig vergleichsweise nahe approximieren. Diese Approximierung kann verwendet werden, um Differenzmakroblöcke zu erzeugen, welche die Differenz zwischen einem tatsächlichen Makroblock und den mittels entweder Intra- oder Interprädiktion erhaltenen vorhergesagten Werten für den Makroblock darstellen. Wenn die Vorhersage gut ist, enthält der resultierende Differenzblock im Allgemeinen nur kleine oder sogar Bildpunktwerte gleich null.
  • Die 15 veranschaulicht Beispiele der Erzeugung von Differenzmakroblöcken. In dem Beispiel gemäß 15 sind Makroblöcke als dreidimensionale Graphen gezeigt, in welchen die Höhe der Säulen über einer zweidimensionalen Fläche des Makroblocks die Größe von Bildpunktwerten innerhalb des Makroblocks darstellt. In 15 ist der tatsächliche Makroblock innerhalb eines aktuell betrachteten Einzelbilds als der oberste dreidimensionale Graph 1502 gezeigt. Der mittlere dreidimensionale Graph repräsentiert einen vorhergesagten Makroblock, welcher entweder durch Intra- oder Interprädiktion erhalten wurde. Man beachte, dass der dreidimensionale Graph des vorhergesagten Makroblocks 1504 recht ähnlich zu dem tatsächlichen Makroblock 1502 ist. 15 stellt einen Fall dar, in welchem entweder Intra- oder Interprädiktion eine sehr nahe Approximation des tatsächlichen Makroblocks erzeugt hat. Subtrahierung des vorhergesagten Makroblocks von dem tatsächlichen Makroblock erzeugt einen Differenzmakroblock, welcher als der untere dreidimensionale Graph 1506 in 15 gezeigt ist. Obwohl 15 eine Übertreibung einer Bestfallvorhersage ist, zeigt sie dennoch, dass der Differenzmakroblock nicht nur im Allgemeinen Werte mit geringen Beträgen enthält, sondern häufig weniger von null verschiedene Werte als die tatsächlich endvorhergesagten Makroblöcke. Man beachte auch, dass der tatsächliche Makroblock vollständig wiederhergestellt werden kann, indem man den Differenzmakroblock zu dem vorhergesagten Makroblock addiert. Natürlich können vorhergesagte Bildpunktwerte tatsächliche Bildpunktwerte überschreiten oder unterschreiten, so dass der Differenzmakroblock sowohl positive als auch negative Werte enthalten kann. Allerdings kann beispielhaft Verschieben des Ursprungs verwendet werden, um einen Differenzmakroblock mit durchgehend positiven Werten zu erzeugen.
  • Genauso wie die Bildpunktwerte innerhalb eines Makroblocks aus den Werten in räumlich angrenzenden und/oder zeitlich an den Makroblock angrenzenden Blocks vorhergesagt werden können, können die Bewegungsvektoren, welche mittels Interprädiktion erzeugt wurden, und die mittels Intraprädiktion erzeugten Modi ebenfalls vorhergesagt werden. 16 veranschaulicht ein Beispiel einer Vorhersage von Bewegungsvektor und Intraprädiktionsmodus. In 16 ist ein aktuell betrachteter Block 1602 innerhalb eines Gitters von Blöcken eines Abschnitts eines Einzelbilds gezeigt. Angrenzende Blöcke 1604 bis 1606 sind bereits mittels Intra- oder Interprädiktion komprimiert worden. Daher gibt es einen Intraprädiktionsmodus, welcher eine Art von Verschiebungsvektor ist, oder einen Interprädiktionsbewegungsvektor, welcher mit diesen benachbarten, bereits komprimierten Blöcken assoziiert ist. Es ist daher vernünftig anzunehmen, dass der räumliche Vektor oder zeitliche Vektor, je nachdem, ob Intra- oder Interprädiktion verwendet wird, der mit dem aktuell betrachteten Block 1602 assoziiert ist, zu den räumlichen oder zeitlichen Vektoren, welche mit den benachbarten, bereits komprimierten Blöcken 1604 bis 1606 assoziiert sind, ähnlich ist. Tatsächlich kann der räumliche oder zeitliche Vektor, welcher mit aktuell betrachtetem Block 1602 assoziiert ist, als Durchschnitt der räumlichen oder zeitlichen Vektoren des benachbarten Blocks vorhergesagt werden, wie durch die Vektoraddition 1610 rechts in der 16 gezeigt. Anstatt Bewegungsvektoren oder Interprädiktionsmodi direkt zu kodieren, berechnet der H.264 Standard daher einen Differenzvektor, basierend auf Vektorvorhersage, wie der vorhergesagte Vektor 1622, welcher von dem tatsächlich berechneten Vektor 1622 abgezogen wurde. Man würde erwarten, dass die zeitliche Bewegung von Blocks zwischen Einzelbildern und räumliche Homogenitäten innerhalb eines Einzelbildes im Allgemeinen korreliert sind. Daher würde man erwarten, dass vorhergesagte Vektoren tatsächliche, berechnete Vektoren nahe approximieren. Der Differenzvektor ist daher im Allgemeinen von geringerem Betrage als der tatsächliche, berechnete Vektor, und kann daher unter Verwendung von weniger Bits kodiert werden. Wiederum kann, wie im Falle eines Differenzmakroblocks, der tatsächliche, berechnete Vektor exakt wiederhergestellt werden, indem man den Differenzvektor zu dem vorhergesagten Vektor addiert.
  • Sobald ein Differenzmakroblock erzeugt ist, mittels entweder Inter- oder Intraprädiktion, wird der Differenzmakroblock anschließend in 4×4 Differenzblocks zerlegt, gemäß einer vorgegebenen Reihenfolge, von denen jeder durch eine Ganzzahltransformation transformiert wird, um einen entsprechenden Koeffizientenblock zu erzeugen, dessen Koeffizienten anschließend quantisiert werden, um eine endgültige Folge von quantisierten Koeffizienten zu erzeugen. Der Vorteil von Intra- und Interprädiktion ist, dass die Transformation des Differenzblocks im Allgemeinen eine grolle Anzahl von nachgestellten Null Koeffizienten erzeugt, welche recht effizient durch einen nachfolgenden Entropiekodierungsschritt komprimiert werden können.
  • Die 17 veranschaulicht ein Beispiel einer Zerlegung, Ganzzahltransformation, und Quantisierung eines Differenzmakroblocks. in diesem Beispiel wird der Differenzmakroblock 1702 in 4×4 Differenzblöcke 1704 bis 1706 in der durch die numerischen Beschriftungen der Zellen des Differenzmakroblocks in 17 vorgegebenen Reihenfolge zerlegt. Eine Ganzzahltransformation 1708 Berechnung wird mit jedem 4×4 Differenzblock durchgeführt, um einen entsprechenden 4×4 Koeffizientenblock 1708 zu erzeugen. Die Koeffizienten in dem umgeformten 4×4 Block werden gemäß einem Zick-Zack-Serialisierungsmuster 1710 serialisiert, um eine lineare Folge von Koeffizienten zu erzeugen, welche dann durch eine Quantisierungsberechnung 1712 quantisiert werden, um eine Folge 1714 von quantisierten Koeffizienten zu erzeugen. Viele der bereits besprochenen Schritte bei der Videosignal-Komprimierung sind verlustlos.
  • Makroblöcke können verlustfrei aus Intra- oder Interprädiktionsverfahren und entsprechenden Differenzmakroblocks neu gebildet werden. Es gibt auch eine exakte Invertierung der Ganzzahltransformation. Allerdings ist der Quantisierungsschritt 1712 eine Form von verlustbehafteter Komprimierung dahingehend, dass, sobald quantisiert, ein approximierter Wert des ursprünglichen Koeffizienten mittels einer approximierten Invertierung des Quantisierungsverfahrens, „Neuskalierung” genannt, neu gebildet werden kann. Chromaebenendezimierung ist ein weiterer verlustbehafteter Komprimierungsschritt, dahingehend, dass die höher aufgelösten Chromadaten nicht aus den niedriger aufgelösten Chromadaten zurückgenommen werden können. Quantisierung und Chromebenendezimierung sind, in der Tat, die beiden verlustbehafteten Komprimierungsschritte in der H.264 Videokomprimierungstechnik.
  • Die 18 liefert die Herleitung der Ganzzahltransformation und inversen Ganzzahltransformation, welche bei H.264 Videokomprimierung bzw. Videodekomprimierung eingesetzt wird. Das Symbol „X” 1802 stellt einen 4·4 Differenz- oder Rest-Block (z. B. 17041706 in 17) dar. Eine diskrete Kosinustransformation, eine wohlbekannte diskrete Fourierartige Transformation, ist durch einen ersten Satz von Ausdrücken 1804 in 18 definiert. Die diskrete Kosinustransformation ist, wie im Ausdruck 1806 gezeigt, eine matrixmultiplikationsbasierte Rechenoperation. Die diskrete Kosinustransformation kann wie in Ausdruck 1808 in 18 faktoriert werden. Die Elemente der Matrix C 1810 beinhalten eine rationale Zahl „d” 1812. Um die diskrete Kosinustransformation effizient zu approximieren, kann diese Zahl als 1/2 approximiert werden, was zu approximierten Matrixelementen 1814 gemäß 18 führt. Diese Approximierung, mit Multiplikation zweier Reihen der Matrix C, um Elemente zu erzeugen, die durchgehend ganzzahlig sind, erzeugt die Ganzzahltransformation 1818 in 18 und eine korrespondierende inverse Ganzzahltransformation 1820.
  • Die 19 veranschaulicht den Quantisierungsprozess. Man betrachte als ein einfaches Beispiel eine in 8 Bits kodierte Zahl 1902, die sich daher im Wert zwischen 0 (1904 in 19) und 255 (1906 in 19) bewegen kann, und tendenziell jeden ganzzahligen Wert im Bereich 0 bis 255 annehmen kann. Ein Quantisierungsprozess kann verwendet werden, um die 8 Bit Zahl 1902 in nur 3 Bits 1908 mittels einer inversen linearen Interpolation von Ganzzahlen im Bereich 0 bis 255 zu Ganzzahlen im Bereich von 0 bis 7 kodiert werden, wie in 19 gezeigt. In diesem Falle werden durch eine 8 Bit kodierte Zahl dargestellte Ganzzahlwerte 0 bis 31 alle auf den Wert 0 (1912 in 19) abgebildet. Aufeinanderfolgende Spannen von 32 Ganzzahlwerten werden auf die Werte 1 bis 7 abgebildet. Auf diese Weise erzeugt zum Beispiel Quantisierung der Ganzzzahl 200 (1916 in 19) den quantisierten Wert 6 (1918 in 19). 8 Bit Werte können durch einfache Multiplikation aus den 3 Bit quantisierten Werten wiedergewonnen werden. Die 3 Bit quantisierten Werte können mit 32 multipliziert werden, um eine Approximierung der ursprünglichen 8 Bit Zahl zu erhalten. Allerdings kann die approximierte Zahl 1920 nur einen der Werte 0, 32, 64, ..., 224 haben.
  • Mit anderen Worten ist Quantisierung eine Form der numerischen Wertdezimierung oder Verlust an Präzision. Ein neuer Skalierungsprozess, oder Multiplikation, kann verwendet werden, um Zahlen wiederzugewinnen, um die ursprünglichen Werte, die quantisiert wurden, zu approximieren, kann jedoch nicht die in dem Quantisierungsprozess verlorene Präzision wiedergewinnen. Im Allgemeinen wird Quantisierung durch Formel 1922 ausgedrückt und die Umkehrung der Quantisierung, oder Neuskalierung, wird durch Formel 1924 ausgedrückt. Der Wert „Qstep” in diesen Formeln steuert den Grad der verlorenen Präzision bei dem Quantisierungsvorgang. In dem auf der linken Seite von 19 veranschaulichten Beispiel hat Qstep den Wert „32”. Ein kleinerer Wert von Qstep bietet einen geringeren Verlust an Präzision, aber auch weniger Komprimierung, wohingegen größere Werte größere Komprimierung bieten, aber auch größeren Verlust an Präzision. Beispielsweise war in dem in 19 gezeigten Beispiel Qstep 128 statt 32, die 8 Bits Zahl hätte in einem einzigen Bit kodiert werden können, aber Neuskalierung würde nur die beiden Werte 0 und 128 erzeugen. Man beachte auch, dass die neu skalierten Werte vertikal verschoben werden können, wie durch Zeile 1926 und 1928 angedeutet, mittels eines zusätzlichen Additionsschritt, der der Neuskalierung folgt.
  • In dem in 19 gezeigten Beispiel erzeugt beispielsweise die Addition von 16 zu den neu skalierten Werten korrespondierende Werte von 16, 28, ..., 240, anstatt Werte 0, 32, 34, ..., 224 zu erzeugen, so dass eine weniger dramatische Lücke im oberen Ende der neu skalierten vertikalen Zahlenzeile verbleibt.
  • Nach der Quantisierung von Rest- oder Differenz-Blöcken und Sammlung von Differenzvektoren und anderen als Datenstrom erzeugten Objekten aus den Schritten stromaufwärts von der Entropiekodierung wird ein Entropiekodierer auf den partiell komprimierten Datenstrom angewendet, um einen entropiekodierten Datenstrom zu erzeugen, welcher die Nutzlast des NAL Pakets, welches oben mit Bezug auf 5 beschrieben wurde, umfasst. Entropiekodierung ist eine verlustlose Kodierungstechnik, welche sich statistische Ungleichmäßigkeiten in dem partiell kodierten Datenstrom zu Nutze macht. Ein wohlbekanntes Beispiel für Entropiekodierung ist der Morsecode, welcher Ein-Puls-Kodierung von gewöhnlich auftretenden Buchstaben, wie z. B. „E” und „T”, sowie Vier-Puls- oder Fünf-Puls Kodierung für selten angetroffene Buchstaben, wie z. B. „U” und „Z”, benutzt.
  • Die 20 gibt ein numerisches Beispiel zur Entropiekodierung an. Man betrachte die viersymbolige Zeichenkette 2002, welche 28 jeweils aus einem der vier Buchstaben „A”, „B”, „C” und „D” ausgewählte Symbole umfasst. Eine simple und intuitive Kodierung dieser 28-symboligen Zeichenkette wäre es, jedem der vier Buchstaben einen von vier verschiedenen 2 Bit Codes zuzuordnen, wie in der Kodierungstabelle 2004 gezeigt. Bei Verwendung dieser 2 Bit Kodierung wird eine 56 Bit kodierte Symbolkette 2006, welche zu Symbolkette 2002 äquivalent ist, erzeugt. Jedoch zeigt die Analyse der Symbolkette 2002 das prozentuale Auftreten jedes Symbols, wie in Tabelle 2010 gezeigt. „A” ist bei weitem das am häufigsten auftretende Symbol, und „D” ist bei weitem das am wenigsten häufig auftretende Symbol. Eine bessere Kodierung wird dargestellt durch die Kodierungstabelle 2012, welche eine Darstellung jedes Symbols mit variabler Länge verwendet. „A” als am häufigsten auftretendem Symbol wird der Code „0” zugeordnet. Den am wenigsten häufig auftretenden Symbolen „B” und „D” werden die Codes „110” bzw. „111” zugeordnet. Verwendung dieser Kodierung erzeugt die codierte Symbolkette 2014, welche lediglich 47 Bits verwendet. Im Allgemeinen sollte eine binäre Entropiekodierung ein kodiertes Symbol von -log2P Bits pro Symbol mit einer Wahrscheinlichkeit des Auftretens von „P” erzeugen. Wenn auch die Verbesserung in der Kodierungslänge bei dem in 20 gezeigten Beispiel nicht spektakulär ist, erzeugt Entropiekodierung für lange Folgen von Symbolen mit dezidiert ungleichmäßigen Verteilungen des Auftretens von Symbolen vergleichsweise hohe Komprimierungsverhältnisse.
  • Eine Art von Entropiekodierung wird als „arithmetische Kodierung” bezeichnet. Ein einfaches Beispiel ist in den 21A–B angegeben. Die in den 21A–B veranschaulichte arithmetische Kodierung ist eine Version einer kontextadaptiven Kodierungsmethode. In diesem Beispiel wird eine 8-symbolige Folge 2102 als ein fünfstelliger Bruchwert 0,04016 (2104 in 21A) kodiert, welcher mittels jeder von verschiedenen bekannten binären numerischen Kodierungen kodiert werden kann, um eine binäre kodierte Symbolkette zu erzeugen. In diesem einfachen Beispiel wird eine Symbolvorkommenswahrscheinlichkeitstabelle 2106 ständig während des Kodierungsvorgangs aktualisiert. Dies liefert Kontextadaption, da sich mit der Zeit die Kodierungsmethode dynamisch verändert, wenn die Symbol-Vorkommenswahrscheinlichkeiten gemäß den während der Kodierung beobachteten Symbolvorkommenshäufigkeiten angepasst werden. Am Anfang werden, in Ermangelung eines besseren Satzes von Anfangswahrscheinlichkeiten, die Wahrscheinlichkeiten für alle Symbole auf 0,25 gesetzt. Bei jedem Schritt wird ein Intervall eingesetzt. Das Intervall bei jedem Schritt wird durch eine Zahlenzeile, wie z. B. Zahlenzeile 2108, dargestellt. Am Anfang erstreckt sich das Intervall von 0 bis 1. Bei jedem Schritt wird das Intervall entsprechend den Wahrscheinlichkeiten in der aktuellen Symbolvorkommenshäufigkeitstabelle in vier Partitionen geteilt. Da die Anfangstabellen gleiche Wahrscheinlichkeiten von 0,25 enthält, wird das Intervall im ersten Schritt in vier gleiche Teile geteilt. In dem ersten Schritt wird das erste Symbol „A” 2110 in der Symbolfolge 2102 kodiert. Die Intervallpartition 2112, welche dem ersten Symbol entspricht, wird als das Intervall 2114 für den nächsten Schritt ausgewählt. Ferner werden, da das Symbol „A” angetroffen wurde, die Symbolvorkommenswahrscheinlichkeiten in der nächsten Version der Tabelle 2116 angepasst, indem die Wahrscheinlichkeit des Vorkommens für Symbol „A” um 0,03 erhöht wird und die Wahrscheinlichkeiten des Vorkommens der verbleibenden Symbole um 0,01 herabgesetzt werden. Das nächste Symbol ist also „A” 2118 und daher wird die erste Intervallpartition 2119 wieder als das folgende Intervall 2120 für den dritten Schritt ausgewählt. Dieser Vorgang läuft weiter, bis alle Symbole in der Symbolkette verbraucht worden sind. Das erste Symbol, „A”, 2126, wählt das erste Intervall 2128 in dem letzten Intervall, welches in der Prozedur errechnet wurde, aus. Man beachte, dass die Intervalle mit jedem Schritt in der Größe kleiner werden und im Allgemeinen eine größere Anzahl von Dezimalstellen zum Spezifizieren benötigen. Die Symbolkette kann durch Auswählen eines beliebigen Wertes innerhalb des Endintervalls 2128 kodiert werden. Der Wert 0,04016 fällt in dieses Intervall und stellt daher eine Kodierung der Symbolkette dar. Die ursprüngliche Symbolkette kann, wie in 21B gezeigt, wiedererzeugt werden, in dem man den Prozess erneut mit einer Ausgabetabelle 2140 der Symbolvorkommenshäufigkeitswahrscheinlichkeit mit gleichen Werten und einem Anfangsintervall von 0 bis 1 2142 startet. Die Kodierung, 0,04016, wird verwendet, um eine erste Partition 2144, welche dem Symbol „A” entspricht, auszuwählen. Anschließend wird in Schritten, die den Schritten in dem vorhergehenden Prozess ähnlich sind, und in 21a gezeigt sind, die Kodierung 0,04016 verwendet, um jede darauffolgende Partition jedes darauffolgenden Intervalls auszuwählen, bis die endgültige Symbolkette wieder erzeugt ist 2148.
  • Während dieses Beispiel das allgemeine Konzept der arithmetischen Kodierung veranschaulicht, ist es ein künstliches Beispiel, weil das Beispiel unendlich genaue Arithmetik annimmt und weil der Algorithmus zur Anpassung der Symbolvorkommenshäufigkeitswahrscheinlichkeitstabelle schnell zu unbearbeitbaren Werten führen würde. Tatsächliche arithmetische Kodierung geht nicht von unendlich genauer Arithmetik aus und verwendet stattdessen Techniken, um die Intervalle anzupassen, mit dem Ziel, Intervallspezifizierung und Auswahl innerhalb der von einem bestimmten Rechnersystem vorgehaltenen Präzision zuzulassen. Der H.264 Standard spezifiziert mehrere verschiedene Kodierungsschemata, von denen einer ein kontextadaptives arithmetisches Kodierungsschema ist. Tabellennachschlagprozeduren werden zum Kodieren häufig vorkommender Symbolketten, welche von den stromaufwändigen Kodierungstechniken erzeugt werden, verwendet, eingeschlossen diverse Metadaten und Parameter, welche in dem partiell komprimierten Datenstrom enthalten sind, um nachfolgende Dekomprimierung zu erleichtern.
  • Wenn Videodatenströme nach der H.264 Technik komprimiert werden, kann nachfolgende Dekomprimierung bestimmte Arten von Artefakten hervorbringen. Als Beispiel veranschaulichen die 22A–B ein gewöhnlich auftretendes Artefakt und ein Filterverfahren, welches als abschließender Schritt bei der Dekomprimierung benutzt wird, um das Artefakt auszubessern. Wie in 22A gezeigt, kann ein dekomprimiertes Videobild ohne Filterung blockiert erscheinen. Da Dekomprimierung und Komprimierung auf einer Block für Block Basis durchgeführt wird, können verschiedene Blockgrenzen signifikante Diskontinuitäten bei Komprimierungs-/Dekomprimierungsverarbeitung darstellen, welche zu einer visuell wahrnehmbaren Blockierung eines angezeigten dekomprimierten Videobildes führen. Die 22B veranschaulicht ein Entblockierungsfilterverfahren, welches bei H.264 Dekomprimierung eingesetzt wird, um das Blockierungsartefakt auszubessern. Bei dieser Technik werden vertikale 2210 und horizontale 2112 Filter, ähnlich den Filtern, welche für Bildpunktwertinterpolierung, welche oben mit Bezug auf die 13A–D erörtert wurde, verwendet, entlang aller Blockgrenzen durchgereicht, um die Diskontinuitäten in den Bildpunktwertgradienten über die Blockgrenzen zu glätten. Drei Bildpunktwerte an jeder Seite der Grenze können von dem Blockfilterverfahren betroffen sein. An der rechten Seite von 22B ist ein Beispiel einer Endblockierungsfilteranwendung gezeigt. In diesem Beispiel ist das Filter 2214 als eine vertikale Spalte dargestellt, welche vier Bildpunktwerte an jeder Seite einer Blockgrenze 2216 enthält. Anwendung des Filters erzeugt gefilterte Bildpunktwerte für die ersten drei Bildpunktwerte an jeder Seite der Blockgrenze. Als ein Beispiel wird der gefilterte Wert für den Bildpunkt 2218, x*, aus den vorgefilterten Werten der Bildpunkte 2218, 2220, 2221, 2222 und 2223 berechnet. Der Filter neigt dazu, Bildpunktwerte zu mitteln oder zu verschmieren, um einen kontinuierlichen Gradienten über die Grenze wiederherzustellen.
  • Die 23 fasst die H.264 Kodierung von Videodatenströmen zusammen. 23 gibt ein Blockdiagramm und daher eine Beschreibung des Kodierungsvorgangs auf Hochniveau an. Allerdings bietet dieses Diagramm, zusammen mit der vorhergehenden Diskussion und den vorhergehend in Bezug genommenen Figuren, einen wesentlichen Überblick über H.264 Kodierung. Weitere Einzelheiten werden, wenn erforderlich, offengelegt, um spezielle Videocodec-Ausgestaltungen der vorliegenden Erfindung zu beschreiben. Es versteht sich, dass es eine Fülle von Feinheiten, Einzelheiten und Spezialfällen bei der Videokodierung und Videodekodierung gibt, welche nicht in einem Überblicksabschnitt dieses Dokuments angesprochen werden können. Zur Erleichterung der Kommunikation und zur Vereinfachung basieren die Beispiele, die hier angegeben sind, überwiegend auf dem H.264 Standard, jedoch sollte daraus in keiner Weise geschlossen werden, dass die hier vorgestellte Erfindung auf H.264 Anwendungen beschränkt ist. Die offizielle H.264 Spezifikation ist über 500 Seiten lang. Diese vielen Einzelheiten schließen beispielsweise Spezialfälle ein, die aus verschiedensten Randbedingungen, spezifischen Einzelheiten und optionalen Alternativverfahren, die in diversen kontextbezogenen Fällen angewendet werden können, erwachsen. Man betrachte zum Beispiel Intraprädiktion. Intraprädiktionsmodi hängen von der Verfügbarkeit von Bildpunktwerten in bestimmten benachbarten Blöcken ab. Für Grenzblöcke ohne Nachbarn können viele dieser Modi nicht verwendet werden. In bestimmten Fällen können nicht verfügbare benachbarte Bildpunktwerte interpoliert oder approximiert werden, um die Benutzung eines bestimmten Intraprädiktionsmodus zuzulassen. Viele interessante Einzelheiten bei dem Kodierungsvorgang stehen im Zusammenhang mit der Auswahl optimaler Vorhersageverfahren, Quantisierungsparameter und dem Treffen weiterer derartiger Parameterwahlen, um die Komprimierung eines Videodatenstroms zu optimieren. Der H.264 Standard spezifiziert nicht, wie Komprimierung durchgeführt wird, sondern spezifiziert stattdessen das Format und die Inhalte eines kodierten Videodatenstroms und wie der kodierte Videodatenstrom dekomprimiert werden soll. Der H.264 Standard gibt auch diverse unterschiedliche Ebenen unterschiedlicher Rechenkomplexität an, wobei Spitzenebene rechenintensivere aber effizientere zusätzliche Schritte und Verfahren unterstützen. Der vorliegende Überblick beabsichtigt, einen ausreichenden Hintergrund zu liefern, um die nachfolgend angegebene Beschreibung verschiedener Ausführungsformen der vorliegenden Erfindung zu verstehen, soll aber in keiner Weise eine vollständige Beschreibung der H.264 Videokodierung und -dekodierung darstellen.
  • In 23 ist ein Strom von Einzelbildern 2302 bis 2304 als Eingabe für ein Kodierungsverfahren vorgesehen. Bei diesem Beispiel werden die Einzelbilder in Makroblöcke oder Makroblockpartitionen, wie oben erörtert, für nachfolgende Verarbeitung zerlegt. In einem ersten Bearbeitungsschritt wird versucht, einen aktuell betrachteten Makroblock oder eine aktuell betrachtete Makroblockpartition mittels Interprädiktion aus einem oder mehreren Referenzeinzelbildern vorherzusagen. Wenn Interprädiktion erfolgreich ist, und einer oder mehrere Bewegungsvektoren erzeugt werden, wie im Schritt 2308 bestimmt wird, dann wird der vorhergesagte Makroblock, welcher mittels des Bewegungsschatz- und Ausgleichsschritts 2306 erzeugt wurde, von dem tatsächlichen rohen Makroblock in einem Differenzbildungsschritt 2310 subtrahiert, um einen korrespondierenden Restmakroblock zu erzeugen, welcher von dem Differenzbildungsschritt auf den Datenpfad 2312 ausgegeben wird. Wenn allerdings Interprädiktion fehlschlägt, wie ebenfalls in Schritt 2308 ermittelt, dann wird ein Intraprädiktionsschritt 2314 eingeleitet, um eine Intraprädiktion auf dem Makroblock oder der Makroblockpartition durchzuführen, welche dann von dem tatsächlichen rohen Makroblock oder der tatsächlichen rohen Makroblockpartition im Schritt 2310 subtrahiert wird, um einen Restmakroblock oder eine Restmakroblockpartition als Ausgabe an Datenpfad 2312 zu erzeugen. Der Restmakroblock oder die Restmakroblockpartition wird dann mittels des Transformierungsschritts 2316 transformiert, mittels des Quantisierungsschritts 2318 quantisiert, möglicherweise neu sortiert für effizientere Kodierung in Schritt 2320 und dann entropiekodiert in Schritt 2322, um einen Strom von Ausgabe-NAL-Paketen 2324 zu erzeugen. Im Allgemeinen sind Komprimierungsimplementierungen bestrebt, das Vorhersageverfahren einzusetzen, welches die nächstkommende Vorhersage eines betrachteten Makroblocks liefert, bei gleichzeitiger Abwägung der Kosten bezüglich Zeit und Speichernutzung verschiedener Vorhersageverfahren. Jede von diversen verschiedenen Ordnungs- und Auswahlkriterien zur Anwendung von Vorhersageverfahren kann verwendet werden.
  • Weiter dem Beispiel nach 23 folgend werden, nach Quantisieren, im Schritt 2318 die quantisierten Koeffizienten an die Neuordnungs- und Entropiekodierungs-Stufen 2320 und 2322 eingegeben und auch an einen inversen Quantisierer 2326 und einen inversen Transformationsschritt 2328 eingegeben, um einen Restmakroblock oder eine Restmakroblockpartition, die an einem Datenpfad 2330 durch den inversen Transformationsschritt ausgegeben werden, zu erzeugen. Der Restmakroblock oder die Restmakroblock-Partition, welche von dem inversen Transformationsschritt ausgegeben wird, ist im Allgemeinen nicht identisch mit dem Restmakroblock oder der Restmakroblockpartition, die von dem Differenzbildungsschritt 2310 an den Datenpfad 2312 ausgegeben werden. Man rufe sich in Erinnerung, dass Quantisierung eine verlustbehaftete Komprimierungstechnik ist. Daher erzeugt der inverse Quantisierungsschritt 2326 eine Approximation der ursprünglichen Transformationskoeffizienten, statt die ursprünglichen Transformationskoeffizienten exakt zu reproduzieren. Obwohl die inverse Ganzzahltransformation eine exakte Kopie des Restmakroblocks oder der Restmakroblockpartition erzeugen würde, würde man sie auf die von dem Ganzzahltransformationsschritt 2316 erzeugten ursprünglichen Koeffizienten anwenden, wird daher, weil der inverse Ganzzahltransformationsschritt 2328 auf neu skalierte Koeffizienten angewendet wird, nur eine Approximation an den ursprünglichen Restmakroblock oder die ursprüngliche Restmakroblockpartition im Schritt 2328 erzeugt. Der approximierte Restmakroblock oder die approximierte Restmakroblockpartition wird anschließend zu dem entsprechenden vorhergesagten Makroblock oder der entsprechenden vorhergesagten Makroblockpartition addiert, in dem Additionsschritt 2332, um eine dekomprimierte Version des Makroblocks zu erzeugen. Die dekomprimierte aber nicht gefilterte Version des Makroblocks wird an den Intraprädiktionsschritt 2312 eingegeben, über Datenpfad 2334, zur Intraprädiktion eines anschließend bearbeiteten Blocks. Der Entblockungsfilter 2326 Schritt wird auf dekomprimierten Makroblocks durchgeführt, um gefilterte, dekomprimierte Makroblöcke zu erzeugen, welche dann zusammengefasst werden, um dekomprimierte Bilder 2338 bis 2340 zu erzeugen, welche an den Bewegungsschatz- und -ausgleichsschritt 2306 eingegeben werden können. Eine Feinheit betrifft Eingabe dekomprimierter Einzelbilder an den Bewegungsschätz- und Ausgleichsschritt 2306 und dekomprimierte aber nicht gefilterte Makroblöcke und Makroblockpartitionen an den Intraprädiktionsschritt 2314. Man rufe sich in Erinnerung, dass sowohl Intraprädiktion und die meisten Bewegungsschätzungen und Ausgleichungen benachbarte Blöcke verwenden, entweder in dem Fall von räumlicher Vorhersage in einem aktuellen Einzelbild oder in dem Falle von zeitlicher Interprädiktion in vorhergehenden und/oder nachfolgenden Einzelbildern, um Werte in einem aktuell betrachteten Makroblock oder einer aktuell betrachteten Makroblockpartition vorherzusagen. Man betrachte jedoch den Empfänger eines komprimierten Datenstroms. Der Empfänger wird keinen Zugang zu den ursprünglichen Rohvideoeinzelbildern 2302 und 2304 haben. Daher wird der Empfänger von kodiertem Videodatenstrom während der Dekomprimierung vorhergehend dekodierte oder dekomprimierte Makroblöcke zur Vorhersage der Inhalte von nachfolgend dekodierten Makroblöcken verwenden. Wenn der Kodierungsvorgang die rohen Videoeinzelbilder zur Vorhersage verwenden würde, dann würde der Kodierer unterschiedliche Daten zur Vorhersage verwenden als nachfolgend dem Dekodierer zur Verfügung stehen. Dies würde signifikante Fehler und Artefakte bei dem Dekodierungsvorgang verursachen. Um dies zu vermeiden, erzeugt der Kodierungsvorgang dekomprimierte Makroblöcke und Makroblockpartitionen und dekomprimierte und gefilterte Videoeinzelbilder zur Verwendung bei den Inter- und Intraprädiktionsschritten, so dass die Intra- und Interprädiktion dieselben Daten zur Vorhersage von Inhalten von Makroblöcken und Makroblockpartitionen verwenden, wie jeder beliebigen Dekomprimierungsprozedur zur Verfügung stehen werden, die sich zur Dekomprimierung ausschließlich auf den kodierten Videodatenstrom stützen können. Daher sind die dekomprimierten aber ungefilterten Makroblöcke und Makroblockpartitionen, welche über Datenpfad 2334 an den Intraprädiktionsschritt 2314 eingegeben werden, die benachbarten Blöcke, aus welchen ein aktueller Makroblock oder eine aktuelle Makroblockpartition anschließend vorhergesagt wird, und die dekomprimierten und gefilterten Videoeinzelbilder 2328 bis 2340 werden von dem Bewegungsschatz- und -ausgleichsschritt 2306 als Referenzeinzelbilder zur Verarbeitung anderer Einzelbilder verwendet.
  • Die 24 veranschaulicht ein Beispiel in einer Blockdiagrammart, welche ähnlich zu der in 23 verwendeten ist, den H.264 Videodatenstromdekodierungsvorgang. Dekomprimierung ist einfacher als Komprimierung. Ein NAL-Paketstrom 2402 wird an einen Entropiedekodierschritt 2404 eingegeben, welcher eine inverse Entropiekodierung anwendet, um quantisierte Koeffizienten zu erzeugen, welche mittels einem Neuordnungsschritt 2406, welcher komplementär zu der Neuordnung, welche von dem Neuordnungsschritt 2320 in 23 durchgeführt wird, ist, neu geordnet werden. Information in dem entropiedekodierten Strom kann verwendet werden, um die Parameter zu ermitteln, nach welchen die Daten ursprünglich kodiert wurden, einschließlich ob oder nicht Intraprädiktion oder Interprädiktion bei der Komprimierung jedes Blocks eingesetzt wurde. Diese Daten ermöglichen über Schritt 2408 Auswahl entweder von Interprädiktion, in Schritt 2410, oder Intraprädiktion, in Schritt 2412, um vorhergesagte Werte für Makroblöcke und Makroblockpartitionen zu erzeugen, welche entlang Datenpfad 2414 dem Additionsschritt 2416 zur Verfügung gestellt werden. Die neu geordneten Koeffizienten werden neu skaliert mittels eines inversen Quantifizierers, in Schritt 2418, und eine inverse Ganzzahltransformation wird in Schritt 2420 angewendet, um eine Approximierung der restlichen, oder Rest-, Makroblöcke oder Makroblockpartitionen zu erzeugen, welche in dem Additionsschritt 2416 zu den vorhersagten Makroblöcken oder Makroblockpartitionen, welche basierend auf vorhergehend dekomprimierten Makroblöcken oder Makroblockpartitionen erzeugt wurden, addiert werden. Der Additionsschritt erzeugt dekomprimierte Makroblöcke oder Makroblockpartitionen, auf welche ein Entblockierungsfilter angewendet wird, um endgültige dekomprimierte Videoeinzelbilder im Schritt 2422 zu erzeugen, um die dekomprimierten Videoeinzelbilder 2424 bis 2426 zu erzeugen. Der Dekomprimierungsvorgang ist im Wesentlichen äquivalent zu dem unteren Abschnitt des Komprimierungsprozesses, welcher in 23 gezeigt ist.
  • Unterabschnitt II: Prinzipien des Entwurfs von parallel integrierten Schaltungen zur Lösung komplexer Rechenaufgaben gemäß der vorliegenden Erfindung
  • Das Problem des Implementierens einer Rechenmaschine, um eine H.264 Kompression und Dekompression auszuführen, ist ein exemplarisches Problemgebiet anhand dessen die vorliegende Erfindung veranschaulicht wird. Die Grundlagen zum Entwickeln einer parallelen, über eine Leitung geleiteten Rechenmaschine mit integrierter Schaltung zum Ausführen von H.264 Kompression und Dekompression werden in diesem Unterabschnitt als ein Beispiel eines allgemeinen Ansatzes von Rechenmaschinenentwürten beschrieben, die Ausführungsformen der vorliegenden Erfindung darstellen. Die vorliegende Erfindung ist in keiner Weise auf H.264 Implementierungen beschränkt.
  • Eine Möglichkeit, einen die H.264 Videokompression und -dekompression ausführenden Videocodec zu implementieren, die im ersten Unterabschnitt erörtert wurde, ist, das Kodierungs- und Dekodierungsverfahren durch Software zu programmieren und das Programm auf einem Altzweck-Rechner auszuführen. 25 ist ein sehr schematisches Diagramm eines Altzweck-Rechners. Der Computer beinhaltet einen Prozessor 2502, einen Arbeitsspeicher 2504, einen Speicher/Prozessor-Bus 2506, der den Prozessor, den Speicher und eine Brücke 2508 miteinander verbindet. Die Brücke verbindet den Prozessor/Speicher-Bus 2506 mit einem Hochgeschwindigkeitsdateneingabebus 2510 und einem internen Bus 2512, der die erste Brücke 2508 mit einer zweiten Brücke 2514 verbindet. Die zweite Brücke ist wiederum mit verschiedenen Vorrichtungen 25162518 über Hochgeschwindigkeitskommunikationsmedien 2520 verbunden. Eine dieser Vorrichtungen ist ein E/A-Regler 2516, der eine Massenspeichervorrichtung 2521 regelt.
  • Betrachtet sei eine Ausführung des Softwareprogramms, das einen Videocodec implementiert. Das Softwareprogramm wird in diesem Beispiel auf der Massenspeichervorrichtung 2521 gespeichert und auf einer Bedarfsbasis in den Speicher 2502 eingelagert. Anweisungen des Softwareprogramms werden durch den Prozessor 2502 vom Speicher zur Ausführung abgerufen. Folglich umfasst die Ausführung jeder Anweisung mindestens einen Speicherabruf und kann auch einen Zugriff auf gespeicherte Daten im Speicher und letztlich in der Massenspeichervorrichtung 2521 durch den Prozessor umfassen. Ein großer Prozentsatz der aktuellen Rechenaktivität im Allzweck-Rechnersystem wird zum Übertragen von Daten und Programmanweisungen zwischen der Massenspeichervorrichtung, dem Speicher und dem Prozessor verwendet. Bei einer Videokamera oder anderen Dateneingabevorrichtungen, die große Datenvolumina bei hohen Datentransferverhältnissen erzielen, gibt es außerdem unter der Videokamera und dem Prozessor signifikante Konkurrenz sowohl um Speicher als auch um die Massenspeichervorrichtung. Diese Konkurrenz kann zu einer Übersteuerung der verschiedenen Busse und Brücken innerhalb des Allzweck-Rechnersystems führen. Um eine Echtzeitvideokompression und -dekompression auszuführen, die eine Softwareimplementierung eines Videocodec verwendet, wird ein sehr großer Anteil der verfügbaren Rechenressourcen und des Stromverbrauchs des Computers zum Datentransfer und Anweisungstransfer anstatt zum Ausführen der aktuellen Kompression und Dekompression verwendet. Ein parallel verarbeitender Ansatz kann als ein möglicher Ansatz zum Erhöhen des Rechendurchsatzes eines softwareimplementierten Videocodec in Betracht gezogen werden. In einem Allzweck-Rechnersystem ist aber ein richtiges Zerlegen des Problems, um den vollen Vorteil von mehreren Verarbeitungskomponenten zu nutzen, weit davon entfernt, eine triviale Aufgabe zu sein und könnte die Konkurrenz um Speicherressourcen und Erschöpfung der Datentransferbandbreite innerhalb des Computersystems nicht lösen oder diese sogar verschlimmern.
  • Die nächste Implementierung, die betrachtet werden könnte, wäre, die Softwareimplementierung auf Hardware unter Verwendung einer der verschiedenen System-on-Chip Ausführungsverfahren zu übertragen. Ein System-on-Chip implementierter Videocodec würde bestimmte Vorteile über ein Allzweck-Rechnersystem zum Ausführen einer Softwareimplementierung des Videocodec mit sich bringen. Insbesondere können Programmanweisungen On Board in einem Flashspeicher gespeichert werden, und unterschiedliche Rechenschritte können in logischen Schaltungen implementiert werden anstatt als sequentielle Ausführung von Anweisungen durch einen Prozessor implementiert zu werden. Jedoch ist die System-on-Chip Implementierung eines Videocodec im Allgemeinen dennoch in ihrer Natur sequentiell und liefert keinen parallelen Rechenansatz mit hohem Durchsatz.
  • Dir 26 veranschaulicht eine Anzahl an Aspekten des Videokompressions- und -dekompressionsverfahrens, die, wenn berücksichtigt, Einsicht in einen neuen und wert recheneffizienteren Ansatz eines Videocodec gemäß der vorliegenden Erfindung liefert. Zunächst hat der H.264 Standard für eine höhere Problemzerlegung gesorgt, die für parallel verarbeitende Lösungen zugänglich ist. Wie oben erörtert, wird jedes Videoeinzelbild 2602 in Makroblöcke 26042613 dekomprimiert, und makroblockbasierte oder makroblockteilbasierte Operationen werden an Makroblöcken und Makroblockteilen durchgeführt, um in Vorwärtsrichtung ein Videoeinzelbild zu komprimieren, und Makroblöcke werden in rückwärtiger Dekompressionsrichtung dekomprimiert, um dekomprimierte Einzelbilder wieder herzustellen. Wie oben erörtert, gibt es sicherlich Abhängigkeiten zwischen Einzelbildern und zwischen Makroblöcken während des Kodierungsverfahrens und während des Dekodierungsverfahrens. Wie in 26 gezeigt, sind die Makroblock-zu-Makroblock- und Makroblockteil-zu-Makroblockteilabhängigkeiten jedoch im Allgemeinen Vorwärtsabhängigkeiten. Der erste Makroblock in einem ersten Einzelbild einer Sequenz 2613 hängt nicht von nachfolgenden Makroblöcken ab und kann einzig basierend auf seinem eigenen Inhalt komprimiert werden. Wenn die Kompression sich Einzelbild für Einzelbild via eines Rasterscanverfahrens von Makroblocken fortsetzt, können nachfolgende Makroblöcke insbesondere für die Inter-Prädiktion von Makroblöcken in zuvor komprimierten Einzelbildern abhängen und können insbesondere für die Intra-Prädiktion von zuvor komprimierten Makroblöcken innerhalb desselben Einzelbildes abhängen. Jedoch sind die Abhängigkeiten auch eingeschränkt. Zunächst sind die Abhängigkeiten durch eine maximale Distanz in der Sequenz, dem Raum und der Zeit 2620 gebunden. Mit anderen Worten können lediglich benachbarte Makroblöcke innerhalb des aktuellen Einzelbildes und Makroblöcke innerhalb der bei der Position des aktuellen Einzelbildes in einer relativ kleinen Anzahl von Referenzeinzelbildern zentrierten Suchebene zum möglichen Komprimieren aller gegebenen Makroblöcke beitragen. Wurden die Abhängigkeiten nicht gut in Zeit, Raum und Sequenz beschränkt, würden sehr große Speicherkapazitäten erforderlich, um für die erfolgreiche Kompression von Makroblöcken notwendige Zwischenresultate zu erhalten. Solche Speicher sind teuer und beginnen schnell, verfügbare Rechenbandbreite zu verbrauchen, wenn Speicherverwaltungsaufgaben in Komplexität und Größe zunehmen. Ein anderer Beschränkungstyp ist, dass es nur eine relativ kleine maximale Anzahl an für einen gegebenen Makroblock 2622 möglichen Abhängigkeiten gibt. Diese Beschränkung trägt auch zum Begrenzen der notwendigen Speichergröße bei und trägt zu einer Begrenzung der Rechenkomplexität bei. Indem die Abhängigkeiten wachsen, kann die Rechenkomplexität geometrisch oder exponentiell wachsen. Parallele Verarbeitungslösungen für komplexe Rechenprobleme sind außerdem nur machbar und beherrschbar, wenn die notwendige Kommunikation zwischen Verarbeitungseinheiten gut begrenzt ist. Andernfalls übersteigt die Kommunikation von Ergebnissen zwischen diskreten Verarbeitungseinrichtungen schnell die verfügbare Rechenbandbreite. Ein anderes Merkmal des Problems des Videocodec ist, dass das Verarbeiten jedes Makroblocks, entweder in der vorwärtigen Kompressionsrichtung oder in der rückwärtigen Dekompressionsrichtung, ein schrittweises Verfahren 2624 ist. Wie oben erörtert, beinhalten die sequentiellen Schritte Inter- und Intra-Prädiktion, Erzeugung von Restmakroblöcken, Hauptumformungen, Quantisierung, Objektnachbestellung und Entropiekodierung. Diese Schritte sind diskret, und im Allgemeinen werden die Ergebnisse eines Schrittes direkt in den folgenden Schritt eingespeist. Somit können Makroblöcke in Fließbandweise verarbeitet werden, ebenso wie Autos und Geräte schrittweise entlang Fließbändern hergestellt werden.
  • Die Merkmale der mit Bezug auf 26 erörterten Videocodec-Implementierung, die die massiv parallel verarbeitende Implementierung eines Videocodec gemäß der vorliegenden Erfindung motiviert, können innerhalb unterschiedlicher Problemgebiete auftreten. In vielen Fällen kann ein Rechenproblem auf viele unterschiedliche Arten zerlegt werden. Um die Verfahren der vorliegenden Erfindung auf ein bestimmtes Problem anzuwenden, muss als erster Schritt des Verfahrens eine Problemzerlegung gewählt werden, die einige oder sämtliche der oben mit Bezug auf 26 erörterten Merkmale erzeugt. Das Videodaterstromkompressionsproblem kann zum Beispiel auf alternative, nachteilige Weise zerlegt werden. Eine alternative Zerlegung wäre zum Beispiel, den gesamten Videodatenstrom oder signifikante Blöcke von Einzelbildern im Voraus der Makroblockverarbeitung zur Bewegungserkennung zu analysieren. In gewisser Hinsicht könnte dieser größere, grobkörnigere Ansatz signifikante Vorteile in Bezug auf eine Bewegungserkennung und bewegungserkennungsbasierte Kompression liefern. Diese alternative Problemzerlegung benötigt jedoch einen signifikant größeren internen Speicher, und der Bewegungserkennungsschritt würde zu komplex und rechenineffizient sein, um einfach innerhalb einer schrittweisen Verarbeitung von rechnerisch lenkbaren und handhabbaren Datenobjekten unterbringbar zu sein. Es wird noch einmal betont, dass, während die vorliegende Erfindung im Zusammenhang einer Implementierung eines Videocodec beschrieben wird, die Verfahren der vorliegenden Erfindung Anwendbarkeit auf ein breites Spektrum effizienter, eine Vielfalt von unterschiedliche Rechenprobleme lösende Rechenmaschinen haben. Für diese Probleme, die zerlegt und formuliert werden können, um die mit Referenz zu 26 erörterten Merkmale zu liefern, liefern die Verfahren der vorliegenden Erfindung Effizienz in der Rechenbandbreite, den Kosten, dem Stromverbrauch und andere wichtige Effizienzen, die die Rechenmaschine, Vorrichtung und Systementwicklung motivieren und beschränken.
  • Die 27 veranschaulicht die grundlegenden Merkmale einer Implementierung mit integrierter Schaltung eines Videocodec gemäß den Verfahren der vorliegenden Erfindung. Solche innerhalb einer einzigen, integrierten Schaltung implementierten Komponenten werden innerhalb eines großen, gestrichelten Blocks 2702 gezeigt. Die Videocodec-Implementierung verwendet zusätzlich einen externen Arbeitsspeicher 2704 und die externe Optik und Elektronik einer Videokamera 2706. Zusätzliche externe Komponenten eines Videokamerasystems beinhalten Netzteile, unterschiedliche zusätzliche elektromechanische Komponenten, ein Gehäuse, Verbindungen für externe Geräte und andere derartige Komponenten.
  • Wie oben mit Bezug auf 4 erörtert, liefert die Videokamera einen Datenstrom- und eine elektronische Taktsignaleingabe 2708 für den Videocodec. Der Datenstrom wird zum Arbeitsspeicher 2704 und einer Mikroproressorcontrollerkomponente 2710 innerhalb der integrierten Schaltung geleitet, die auf die Taktsignalausgabe der Videokamera zugreifen kann, um die Aktivitäten des Videocodec zu koordinieren. Der Arbeitsspeicher 2704 hat zwei Anschlüsse, so dass, wenn Videodaten von der digitalen Videokamera 2706 einströmen, zuvor gespeicherte Rohvideodaten vom externen Arbeitsspeicher in einen internen Pufferspeicher 2712 zur Bereitstellung zu jedem der Anzahl an Verarbeitungselementen 27142719 herausgezogen werden können. In 27 werden sechs Verarbeitungselemente 27142719 gezeigt, obwohl es in der spezifischen, untenstehend erörterten Implementierung eine tatsächlich größere Anzahl an Verarbeitungselementen gibt. Die Anzahl an Verarbeitungselementen ist ein problemgebietsbestimmter und ausführungsgewählter Parameter. Verschiedene Verarbeitungselemente einer Implementierung können alternativ in einer anderen Implementierung kombiniert werden.
  • Der Mikroprozessorcontroller 2710 im 27 Beispiel führt in einem Flashspeicher 2720 gespeicherte Anweisungen aus. Der Mikroprozessorcontroller kommuniziert über unterschiedliche Signalpfade mit dem Arbeitsspeicher 2722, dem Pufferspeicher 2724, einem Systemtaktgeber 2726 und den vielfachen Verarbeitungselementen 2728. Innerhalb der integrierten Schaltung findet der Großteil des Datenflusses über einen Objektbus 2730 statt. Der Objektbus liefert videodatenbezogene Objekte zu den Verarbeitungselementen, hauptsächlich Makroblöcke und Makroblockpartitionen. Zusätzlich kann der Objektbus auch gemeinsam genutzte parameter- und metadatenbeinhaltende Objekte liefern, die die Makroblöcke und Makroblockpartitionsobjekte wie auch das aktuelle Einzelbild und höhere Strukturebenen innerhalb des Videodatenstroms beschreiben.
  • In diesem Beispiel führt jedes Verarbeitungselement einen Schritt des Schritt-für-Schritt-Verfahrens der Videodatenobjekte durch, hauptsächlich Makroblöcke und Makroblockpartitionen. Die zu einem Verarbeitungselement eingebenden Videoobjekttypen und die durch ein Verarbeitungselement ausgebenden Video- und Datenobjekttypen hängen vom besonderen Schritt im durch das Verarbeitungselement implementierten Kompressionsverfahren ab. Der überwiegende Teil der zum Komprimieren von Videodaten ausführenden Berechnungen wird durch das Verarbeitungselement ausgeführt. Der Verarbeitungsansatz hat sehr viel von einem über eine Leitung geleiteten, fließbandartigen Ansatz, in dem ein gegebener Rohdatenmakroblock in das erste Verarbeitungselement 2714 eintritt und Schritt-für-Schritt entlang der Sequenz von anschließenden Verarbeitungselementen in der Verarbeitungselementleitung umgewandelt wird. Die gesamte fließbandartige Verarbeitung wird durch ein relativ niederfrequentes taktsignalimplementiertes Rechenschritttaktsignal gesteuert. Die Verarbeitungsschritte innerhalb jedes Verarbeitungselements werden durch ein relativ hochfrequentes Taktsignal gesteuert. Ein wichtiger Aspekt der Implementierung mit einem einzigen integrierten Schaltkreis des Videocodec ist, dass das niederfrequente taktsignalimplementierte Rechenschritttaktsignal für den Mikroprozessorcontroller ein Taktsignal liefert, aber nicht absolute Kontrolle über das Fließbandverfahren liefert. Im Allgemeinen soll jeder Schritt im schrittweisen, höheren Verfahren innerhalb eines einzigen, niederfrequenten Rechenschritttaktsignalintervalls ausgeführt werden. Jedoch kann es Fälle geben, in denen das Verarbeitungselement nicht imstande ist, seine Aufgabe in einem Zeitintervall zu beenden. Solche Fälle werden durch die durch den Mikroprozessorcontroller 2710 gelieferte höhere Steuerlogik erkannt, in diesem Fall kann der Mikroprozessorcontroller das Starten des nachfolgenden Rechenschrittes verzögern, wodurch dem Verarbeitungselement ermöglicht wird, seine Aufgabe zu beenden, obwohl die Aufgabe das niederfrequente Taktintervall überschritten hat. Mikroprozessorcontrollersteuerung liefert somit einen wichtigen Schritt an Flexibilität in der Gesamtsteuerung der Videokompressions- und Videodekompressionsverfahren. Wäre diese Flexibilität nicht gegeben, dann müsste das niederfrequente Intervall mindestens auf das größtmöglichen Zeitintervall gesetzt werden, das durch jedes Verarbeitungselement innerhalb des Systems benötigt wird, um die komplexesten Rechenaufgaben zu beenden, denen das Verarbeitungselement begegnen könnte. In dem Fall, dass die maximal komplexe Aufgabe lediglich selten auftritt, wie einmal in allen 1000 Makroblöcken, würde dann, während des Verarbeitens der verbleibenden 999 weniger anspruchsvollen Rechenmakroblöcke, das Verarbeitungselement untätig für signifikante Zeiträume innerhalb des niederfrequenten Zeitintervalls bleiben. Durch die Bereitstellung flexiblerer Mikroprozessorcontrollersteuerung des gesamten Fließbandverfahrens können die niederfrequenten Taktsignalintervalle auf einen angemessenen Wert gesetzt werden, der ein Zeitintervall spezifiziert, während dessen die Mehrheit der Makroblöcke verarbeitet werden kann und können in Echtzeit in einer kontextabhängigen Art eingestellt werden, um relativ seltene, rechenintensive Makroblöcke unterzubringen.
  • In diesem Beispiel liefert ein On-Board-Objektcache 2712 einen anderen Flexibilitätsgrad. Der Pufferspeicher liefert einen dynamischen Puffer für Datenobjekte, der unterschiedliche Mengen an Daten unterbringen kann, die während besonderer Punkte in der Videokompression benötigt werden. Wie die durch die Mikroprozessorcontrollersteuerung gelieferte Taktdehnbarkeit, ermöglicht ein flexibler Pufferspeicher die Unterbringung von bestimmten kontextabhängigen Speicheranforderungen während weniger speicherintensive, allgemeine Verarbeitungsaufgaben effizient gehandhabt werden. Die durch den Taktgeber 2726 gelieferten hochfrequenten Taktintervalle ermöglichen eine zeitgebergesteuerte Verarbeitung innerhalb des Verarbeitungselements, das eher als logische Schaltkreise denn als mikroprozessorcontrollerausgeführte Anweisungen implementiert ist. Es ist diese taktgebergesteuerte, logische schaltungsbasierte Implementierung, die die große Rechenbandbreite der gesamten integrierten Einzelschaltungsimplementierung des Videocodec liefert. Würden signifikante Teile des Videokompressions- und Videodekompressionsverfahrens durch Anweisungsausführung auf Prozessoren ausgeführt, würde ein signifikanter Bruchteil des gesamten Rechenaufwandes durch den Anweisungsabrufzyklus verbraucht. Ein Objektcontroller ist verantwortlich für den Austausch von Objekten zwischen dem On-Board-Objekt-Pufferspeicher und einem Objektspeicher.
  • Schließlich erleichtert der Objektbus 2730 die Objekt-über-eine-Leitunggeleitet-basierte Implementierung. Würden Makroblöcke und Makroblockpartitionen innerhalb des integrierten Schaltkreises als Bit- oder Byteströme übertragen, würde sehr hochfrequente Kommunikationsverarbeitung für die Kommunikation der Makroblöcke und Makroblockpartitionen mit und aus den Verarbeitungselementen benötigt werden. Durch Bereitstellen eines breiten Busses mit einer hohen Kapazität können die zu jedem Verarbeitungselement übertragenen Daten von jedem Pufferspeicher in einer rechen- und zeiteffektiven Weise geliefert werden.
  • Zusammengefasst umfasst die Implementierung einer komplexen Rechenaufgabe gemäß der vorliegenden Erfindung die Ausführung und Herstellung einer integrierten Schaltung, die eine problemspezifische Rechenmaschine verkörpert. Die Rechenmaschine beinhaltet einen Mikroprozessorcontroller, der eine hohe Steuerung der Verarbeitung innerhalb der integrierten Schaltung liefert, aber auch eine große Anzahl paralleler, über eine Leitung geleiteter Verarbeitungselemente liefert, die den Großteil des Rechenverfahrens ausführen. Die Verarbeitungselemente arbeiten parallel, um eine hohe Rechenbandbreite zu liefern, und liefern, durch einen Objektbus und durch Inter-Verarbeitungselementdatenpfade, Daten in Objekteinheiten, wie Makroblöcke und Makroblockpartitionen, die die natürlichen Objekte sind, auf denen die Verarbeitungselemente arbeiten. Hochfrequente Taktung in Verarbeitungselementen wird durch einen Systemtaktgeber geliefert, aber niederfrequente Hochniveau-Rechenschrittsteuerung wird durch einen Mikroprozessorcontroller geliefert, wodurch wiederum Flexibilität in der gesamten Taktung der fließbandartigen Verarbeitung von Rechenaufgaben geliefert wird, um die Effizienz und den Durchsatz der Rechenmaschine zu erhöhen.
  • Alternative Ausführungsformen des Videocodec werden in den 2829 gezeigt. Die 28 veranschaulicht eine Ausführungsform der vorliegenden Erfindung, in der die integrierte Schaltung 2802 einen Arbeitsspeicher 2804 beinhaltet, der in der in 27 veranschaulichten Ausführungsform extern ist. Die 29 veranschaulicht eine alternative Ausführungsform der vorliegenden Erfindung, in der die digitale Videokamera in einer Implementierung mit einem einzigen integrierten Schaltkreis einer kombinierten Videokamera und eines Videocodec beinhaltet ist.
  • Die 3032 veranschaulichen die gesamte Taktung und den Datenfluss innerhalb der Implementierung mit einem einzigen integrierten Schaltkreis des Videocodec gemäß der vorliegenden Erfindung. Bei der Fertigstellung eines vorherigen Schrittes kontrolliert der Mikroprozessorcontroller die Verarbeitungseinheiten, den Pufferspeicher und, wenn notwendig, den Arbeitsspeicher, um sicherzustellen, dass sämtliche Datenobjekte, die notwendig sind, einen höheren Rechenschritt auszuführen, für eine Übertragung zu den Verarbeitungselementen, die die Datenobjekte benötigen, verfügbar sind. Somit kontrolliert der Mikroprozessorcontroller, um sicher zu stellen, dass Datenobjekte verfügbar sind, und, wenn notwendig, erleichtert das Einweisen von Datenobjekten 30013005 in Pufferspeicher für den Zugriff durch Verarbeitungselemente im nächsten höheren Rechenschritt, und kontrolliert, dass jedes Verarbeitungselement alle Daten, die zu anderen Verarbeitungselementen für den nächsten höheren Rechenschritt geliefert werden müssen, erzeugt wurden und gegenwärtig gespeichert werden.
  • Zu beachten sei auch hier wieder, dass Mikroprozessorcontrollersteuerung eine Flexibilität in der gesamten Steuerung des integrierten Schaltkreises liefert. In vielen Fällen, ob ein besonderes Datenobjekt oder -objekte für die Übertragung in den nächsten Schritt bereit sein müssen oder nicht, hängt es von der Position des Schrittes in einer Sequenz von Schritten in der gesamten Videokodierungsaufgabe ab. Als ein Beispiel werden die anfänglichen Makroblöcke eines anfänglichen Referenzeinzelbildes eines Videostroms zunächst durch das erste Verarbeitungselement, das keine Ergebnisse liefert, um nachfolgende Verarbeitungselemente zu liefern, verarbeitet. Als ein weiteres Beispiel werden Referenzeinzelbilder innerhalb eines Videostroms nicht für die Inter-Prädiktion verarbeitet. Folglich können in jedem niederfrequenten Taktintervall die für ein Verarbeiten eines nachfolgenden höheren Rechenschrittes notwendigen Datenobjekte in einer kontextabhängigen Weise variieren. In bestimmten höheren Rechenschritten können außerdem ein oder mehrere Verarbeitungselemente nicht aktiv sein. Ausgestaltete Komplexitäten von kontextabhängiger und zeitveränderlicher Steuerung innerhalb der Verarbeitungselemente selbst würden unerwünscht komplexe Verarbeitungselementimplementierungen erfordern. Jedoch können durch das Liefern der höheren Steuerungsebenen durch einen Anweisungs-Ausführungs-Mikroprozessorcontroller die vielen Entscheidungsebenen und zeitabhängigen und kontextabhängigen Veränderungen in der Steuerung in Firmware anstatt in hoch komplexen logischen Schaltungen implementiert werden.
  • In diesem Beispiel, nachdem sämtliche Datenobjekte für den nächsten Verarbeitungsschritt verfügbar sind, und sämtliche Verarbeitungselemente ausbalanciert sind, um den nächsten Schritt zu beginnen, erzeugt der Mikroprozessorcontroller, wie in 31 gezeigt, ein Startsignal, um das Verarbeiten des nächsten Schrittes durch sämtliche Verarbeitungselemente zu starten. Wie in 31 gezeigt, werden die Datenobjekte zu den Verarbeitungselementen übertragen, die sie zu Beginn des nächsten Schrittes benötigen. Wie in 32 gezeigt, führen die Verarbeitungselemente dann ihre jeweiligen Aufgaben aus, erzeugen Ausgaben für den folgenden Schritt und tätigen Anfrage an den Pufferspeicher für Datenobjekte, die in den folgenden Schritten benötigt werden. Bei der Fertigstellung der Verarbeitung des aktuellen hohen Rechenschritts, veranschaulicht in 32, ist der Stand gezeigt, der in 30 erreicht ist, und die Verarbeitungselemente sind dann zum Starten des folgenden Verarbeitungsschritts ausbalanciert. Es soll noch einmal betont werden, dass während jedes niederfrequenten Zeitintervalls jedes Verarbeitungselement seine Rechenaufgabe an einem anderen Datenobjekt ausführt als die Datenobjekte, die durch andere Verarbeitungselemente verarbeitet werden. Zum Beispiel wird, während ein Restmakroblock durch die Ganzzahlumwandlung umgewandelt wird, ein anderer Makroblock analysiert für eine Inter- oder Intraprädiktion.
  • Zusammengefasst beinhalten die höheren konzeptionellen Komponenten einer Rechenmaschine, die eine Ausführungsform der vorliegenden Erfindung darstellt: (1) eine Problemzerlegung, die zu einer schrittweise Verarbeitung von Rechenobjekten vernünftiger Größe führt, wobei sämtliche Rechenobjekte beschränkte Abhängigkeiten von zusätzlichen Daten besitzen, bereits verarbeitete Rechenobjekte und nachfolgend verarbeitete Rechenobjekte und jedes Rechenobjekt im Wesentlichen einen Datenstrukturwert umfasst, wie die Elementenwerte von eindimensionalen, zweidimensionalen oder höher dimensionalen Bereichen oder die Werte von Feldern in Multifelddatensätzen oder -Strukturen, (2) eine fließbandartige Serie von Verarbeitungselementen, von denen jedes einen höheren Schritt eines schrittweise Verarbeitens der Rechenobjekte ausführt, (3) einen On-Board-Objektcache, der Rechenobjekte ausreichend puffert, so dass relevante Daten und Objekte anfangs zum Verarbeiten eines Rechenobjektes entlang der Serien von Verarbeitungselementen in den Objektcache vom Arbeitsspeicher geladen werden können, ohne wiederholten Zugriff während des schrittweisen Verarbeitens von Rechenobjekten auf dem Arbeitsspeicher, (4) einen Objektbus, der es Verarbeitungselementen ermöglicht, auf Objekte in einer Objektebenenzugriffstransaktion zuzugreifen, die im Objektcache gespeichert sind, (5) einen niederfrequenten Taktgeberzyklus zur Steuerung der schrittweise Verarbeitung und ein oder mehrere höherfrequente Taktgeberzyklen für eine feinkörnige Steuerung von Rechenschritten durch Verarbeitungselemente, (6) einen Mikroprozessorcontroller oder eine andere Steuerungsteilkomponente zur Koordinierung und Synchronisierung höherer Schrittausführungen durch die Verarbeitungselemente und (7) eine Objektspeichersteuereinheit zum Laden von Objekten vom Arbeitsspeicher in den Objektcache und zum Speichern von Objekten im Objektcache in den Arbeitsspeicher.
  • Für bestimmte Problembereiche liefert eine Implementierung mit einem einzigen integrierten Schaltkreis einer Rechenmaschine Vorteile in der Herstellung, im Chipgehäuse, in der Vorrichtungsbasisfläche, im Stromverbrauch, in der Rechenlatenzzeit und andere solche Vorteile. Für andere Problembereiche kann eine Gesamtrechenmaschine als zwei oder mehrere separate Rechenmaschinen implementiert werden, wobei die Problembereiche in höhere Unterbereiche unterteilt werden, von denen jeder durch eine separate Rechenmaschine ausgeführt wird. Die Subbereiche werden weiterhin in Aufgaben unterteilt, von denen jede durch ein Verarbeitungselement innerhalb einer Rechenmaschine ausgeführt wird. Dieser Ansatz kann auch Herstellungsvorteile liefern, wie auch eine erhöhte Modularität. Für bestimmte zusätzliche Problemfeldtypen kann eine Implementierung mit einem einzigen integrierten Schaltkreis einer Rechenmaschine mit zusätzlichen integrierten Schaltkreisen verbunden werden, um eine Vorrichtung zu implementieren, um zum Beispiel von bereits entwickelten integrierten Schaltkreisen Verwendung zu machen.
  • Im speziellen Beispiel einer H.264 Kompressions- und Dekompressionsrechenmaschine, die eine Ausführungsform der vorliegenden Erfindung darstellt, beinhalten Rechenobjekte Makroblöcke und Makroblockpartitionen, wie oben mit Bezug auf 6 erörtert, Bewegungsvektoren, wie oben mit Bezug auf 12 erörtert, und unterschiedliche Daten- und Parameterobjekte, die den Videostromkontext von Makroblöcken und Makroblockpartitionen beschreiben. Verarbeitungselemente beinhalten ein Inter-Vorhersageverarbeitungselement, ein Intra-Vorhersageverarbeitungselement, ein Bewegungsschätzungsverarbeitungselement, ein direktes Ganzzahlumwandlungsverarbeitungselement, ein inverses Ganzzahlumwandlungsverarbeitungselement, ein Quantifizierungs- und Skalierungsverarbeitungselement, ein Entquantifizierungs- und -Entskalierungsverarbeitungselement, ein Entropiekodierungsverarbeitungselement und ein Entropiedekodierungsverarbeitungselement. Der Objektcache speichert die oben genannten Objekttypen, einschließlich Makroblöcke und Makroblockpartitionen. Der Objektbus überträgt Makroblöcke und Makroblockpartitionen zwischen Verarbeitungselementen und dem Objektcache, wobei die Verarbeitungselemente entlastet werden, die benötigt werden, um Byte-orientierte und Wort-orientierte Kommunikationsprotokolle zum Zugreifen auf Rechenobjekte auszuführen. Ein niederfrequenter Taktgeberzyklus steuert im Allgemeinen die schrittweise Makroblockverarbeitung durch die fließbandartige Serie von Verarbeitungselementen, und höherfrequente Taktgeberzyklen steuern die Rechenverarbeitung durch Verarbeitungselemente. Ein Mikroprozessorcontroller führt die Gesamtsteuerung und -Synchronisation der schrittweisen Makroblockverarbeitung durch, wobei sichergestellt wird, dass notwendige Objekte für jedes Verarbeitungselement zur Ausführung eines nächsten Verarbeitungsschritts vor dem Start des nächsten Verarbeitungsschritts in den Verarbeitungselementen verfügbar sind. Schließlich arbeitet eine Speichersteuereinheit, um Rechenobjekte zwischen einem Direktzugriffsspeicher mit großer Kapazität und dem Objektcache auszutauschen, einschließlich Makroblöcke und Makroblockpartitionen.
  • Unterabschnitt III: Ein H.264 Videocodec, der als ein einziger integrierter Schaltkreis gemäß einer Ausführungsform der vorliegenden Erfindung implementiert ist
  • In diesem Unterabschnitt wird ein spezifisches Beispiel einer Rechenmaschine erörtert, die eine Ausführungsform der vorliegenden Erfindung darstellt. Es sei wieder betont, dass Ausführungsformen der vorliegenden Erfindung ausgeführt und implementiert werden können, um jede aus einer Vielzahl von unterschiedlichen Rechenaufgaben auszuführen, einschließlich Einzelbildverarbeitungsaufgaben, dreidimensionale Medienkompression und -Dekompression, verschiedene Typen von Rechenfilterung, Merkmalsvergleich und neuronale Netzwerkimplementierung. Die folgende Erörterung der H.264 Videocodec-Rechenmaschine dient dazu, eine detaillierte Veranschaulichung eines Beispiels der vorliegenden Erfindung zu liefern, dient aber nicht dazu, den Umfang der folgenden Ansprüche auf Rechenmaschinen, die ausgelegt sind, eine H.264 Videokompression und/oder -Dekompression auszuführen, auf Videoanwendungen im Allgemeinen oder auf irgend einen anderen spezifischen Problembereich zu begrenzen. Diese spezifische Implementierung ist eine Implementierung eines Videocodec mit einem einzigen integrierten Schaltkreis. Alternative Ausführungsformen können einen Multirechenmaschinenansatz verwenden oder können eine Rechenmaschine mit einem einzigen integrierten Schaltkreis mit zusätzlichen integrierten Schaltungen verbinden.
  • Die 33A–B liefern eine Blockdiagrammabbildung einer Implementierung mit einem einzigen integrierten Schaltkreis eines Videocodec gemäß der vorliegenden Erfindung. Vieles im in 33A gelieferten Diagramm ist im Wesentlichen in Anbetracht der obigen Erörterung der 2732 und der 2324 selbsterklärend. Die Implementierung mit einem einzigen integrierten Schaltkreis des Videocodec beinhaltet getrennte Verarbeitungselemente für die Bewegungsschätzung 3302, die Intra- und Inter-Prädiktion 3304, die Restblockberechnung 3306, die direkte Ganzzahlumformung 3308, die Quantifizierung und Skalierung 3310, die Entropiekodierung 3312, die Entropiedekodierung 3313, die Entquantifizierung und Entskalierung 3314, die inverse Ganzzahlumformung 3316 und den Entsperrungsfilter 3318. Die Verarbeitungselemente 3302 entsprechen Block 2306 in 23, die Verarbeitungselemente 3304 entsprechen den Blöcken 2306 und 2314 in 23, die Verarbeitungselemente 3306 entsprechen der Funktionsweise 2310 in 23, das Verarbeitungselement 3308 entspricht Block 2316 in 23, das Verarbeitungselement 3310 entspricht Block 2318 in 23, die Verarbeitungselemente 3312 und 3313 entsprechen Block 2322 in 23, das Verarbeitungselement 3314 entspricht Block 2326 in 23, das Verarbeitungselement 3316 entspricht Block 2328 in 23 und das Verarbeitungselement 3318 entspricht Block 2336 in 23. Man beachte, dass der Videocodec, wie mit Bezug auf 5 beschrieben, Rohvideodaten 3320 von einer Videokamera empfangen kann und komprimierte Videodaten 3322 als Ausgabe erzeugen kann oder komprimierte Videodaten 3324 als Eingabe empfangen kann und Rohvideodaten 3326 als Ausgabe erzeugen kann. Der Neuordnungsblock 2320 in 23 kann entweder in die Verarbeitungselemente 3310 und 3314 der Videocodec-Implementierung oder in die Verarbeitungselemente 3312 und 3313 integriert sein. Man beachte auch, dass die Videospeichersteuereinheit 3330, in der Implementierung mit einem einzigen integrierten Schaltkreis, für das Leiten von Eingabevideodaten zu den externen Arbeitsspeichern 3332 und für den Austausch von Datenobjekten zwischen Video-Pufferspeicher, dem externen Arbeitsspeicher und dem Objektbus 3340 verantwortlich ist. 33B liefert einen Schlüssel für 33A. Man beachte, dass der Objektbus 3340 betrachtet werden kann als umfassend einen separaten Luma-Objektbus, einen Chroma-Objektbus, einen Bewegungsvektorobjektbus, einen Parameter-/Datenobjektbus und einen internen Mikroprozessorcontrollerbus.
  • Die 33A liefert Details über die Eingaben und Ausgaben jedes Verarbeitungselements in einer Ausführungsform der vorliegenden Erfindung, und damit die Interaktion jedes Verarbeitungselementes mit dem Objektbus, dem VideoPufferspeicher und der Videospeichersteuereinheit. Die Videospeichersteuereinheit 3330 leitet Videodaten von der Kamera zum externen Arbeitsspeicher. Die Videospeichersteuereinheit 3342 nimmt Speicheranfragen im Auftrag der Verarbeitungselemente an die Videospeichersteuereinheit vor, die durch die Videospeichersteuereinheit durch Zugreifen auf angefragte Datenobjekte vom externen Arbeitsspeicher und Speichern der angefragten Datenobjekte im Video-Pufferspeicher befriedigt werden. Folglich wird viel vom Rechenaufwand, der mit dem Partitionieren des Videodatensignals in Einzelbilder, Makroblöcke und Makroblockpartitionen verbunden ist, innerhalb der Videospeichersteuereinheit ausgeführt, was ein anderer Aspekt der massiv parallelen Verarbeitung ist, die durch die Implementierung des Videocodec mit einer einzigen integrierten Schaltung geliefert wird.
  • Der Multiplexer 3344 liefert, während der Videokompression, einen Pfad vom Quantifizierungsverarbeitungselement 3310 zum Entquantifizierungs- und Entskalierungsverarbeitungselement 3314 und einen Pfad vom Entropiedecoder 3313 zum Entquantifizierungs- und Entskalierungsverarbeitungselement 3314 während der Videodekompression. Bewegungsschätzungsverarbeitungselemente 3302 arbeiten an Luma-Makroblöcken und Makroblockpartitionen während die verbleibenden Verarbeitungselemente sowohl an Luma- als auch an Chroma-Makroblöcken und/oder Makroblockpartitionen arbeiten. Der SPI-Port 3350 in 33A ist eine seriell-parallele Schnittstelle, die ein Schreiben und/oder Lesen der Flashspeicher durch das SPI-Schnittstellensignal erlaubt.
  • Die 34 veranschaulicht die Taktung und Synchronisation des Gesamtsystems der Implementierung mit einem einzigen integrierten Schaltkreis eines Videocodec gemäß der vorliegenden Erfindung. Wie oben erörtert, steuert ein Taktsignal 3402 mit einem kurzen Intervall die Ausführungsschritte innerhalb eines Verarbeitungselements während der Verarbeitung jedes Gesamtschrittes in der fließbandartigen Verarbeitung von Makroblöcken und Makroblockpartitionen. Wie oben erörtert, beginnen die Verarbeitungselemente die Ausführung des nächsten höheren Rechenschritts nach Erhalt eines Startsignals 3404 vom Mikroprozessorcontroller und produzieren ein erledigt-Signal 3406 nach Fertigstellung eines höheren Rechenschrittes. Wie oben erörtert, steuert im Allgemeinen ein Taktsignal 3410 mit einem langen Intervall die höhere Schritt-für-Schritt über eine Leitung geleitete Verarbeitung von Makroblöcken und Makroblockpartitionen entlang dem Fließband von Verarbeitungselementen über den Mikroprozessorcontroller. Im Allgemeinen wird ein nächster Gesamtschritt in der Verarbeitung, während jedes niederfrequenten Intervalls 3412, durch jedes Verarbeitungselement ausgeführt. Jedoch kann in bestimmten Fällen, wie auch oben erörtert, der nächste Verarbeitungsschritt am Nieder-zu-Hoch-Übergang des niederfrequenten Taktsignals in dem Fall nicht starten, dass ein Verarbeitungselement seine Aufgabe nicht abgeschlossen hat, weil Verarbeitungselemente beginnen, jeden höheren Rechenschritt nach Empfangen eines Startsignals vom Prozessor zu verarbeiten.
  • Die 35 liefert eine Tabelle der verschiedenen Objekttypen, die vom Video-Pufferspeicher entlang dem Datenobjektbus zu den Verarbeitungselementen in der Implementierung mit einem einzigen integrierten Schaltkreis eines Videocodec gemäß der vorliegenden Erfindung übertragen werden. Die Tabelle zeigt zwei Hauptklassen von Objekten: (1) Videoobjekte 3502 und (2) Datenobjekte 3504. Videoobjekte beinhalten Makroblöcke und Makroblockpartitionen von sowohl Luma- als auch Chromaebenen, wie oben mit Bezug auf 3 erörtert wurde, sowie Bewegungsvektorobjekte, wie oben mit Bezug auf 12 erörtert. Die Datenobjekte beinhalten unterschiedliche Informationstypen gemäß dem gegenwärtigen Kontext eines gegenwärtigen verarbeiteten Makroblocks oder Makroblockpartition, die Scheibe, zu der der Makroblock oder Makroblockpartition gehört, die Art des Einzelbildes, in das der Makroblock oder die Makroblockpartition eingeschlossen ist und andere solche Informationen. Die Objekte können auch parametrische Informationen beinhalten, wie den Quantifizierparameter, wie oben mit Bezug auf 19 erörtert. Die Rechenbandbreite nimmt eher durch Einsetzen des Objektbusses 3340 signifikant zu, der zugeschnitten ist, die durch die Verarbeitungselemente als diskrete Objekte benötigten Objekte zu liefern, als durch das Anfordern von Verarbeitungselementen, um ein Byte-basiertes oder Wort-basiertes Protokoll zum Zugreifen auf Datenobjekte vom Speichercache und Arbeitsspeicher auszuführen. Ein breiter Datenobjektbus liefert äußerst hohe interne Datentransferverhältnisse innerhalb der integrierten Schaltung.
  • Die 36A–B veranschaulichen, auf einer abstrakten Ebene, den Betrieb eines Rechenelements innerhalb der Videocodec-Implementierung mit einem einzigen integrierten Schaltkreis, die eine Ausführungsform der vorliegenden Erfindung darstellt. Wie oben erörtert, erhält das Verarbeitungselement einen Startimpuls 3602 vom Mikroprozessorcontroller und gibt einen erledigt-Impuls 3604 an den Mikroprozessorcontroller für die Gesamtsynchronisation des niederfrequenten höheren Schrittverarbeitungszyklus. Das Verarbeitungselement empfängt ein oder mehrere Objekte und andere Daten 3606 von einem vorherigen Verarbeitungselement in der Leitung und/oder dem Objektbus und gibt ein oder mehrere Objekte und/oder andere Daten 3608 an ein nächstes Verarbeitungselement in der Verarbeitungselementleitung und/oder dem Objektbus. Selbstverständlich empfängt das erste Verarbeitungselement in der Leitung keine Objekte von vorhergehenden Verarbeitungselementen, und das letzte Verarbeitungselement in der Leitung erzeugt eine Ausgabe von der Implementierung mit integriertem Schaltkreis des Videocodec anstatt Ausgeben eines Objektes oder anderer Daten an ein Verarbeitungselement. Wie obenstehend erörtert, empfängt ein Verarbeitungselement ein hochfrequentes Taktgebersignal zum Steuern der logischen Schaltung innerhalb des Verarbeitungselements, um komplexe Rechenaufgaben auszuführen. Zu beachten ist, dass Verarbeitungselemente Daten und Ergebnisse entlang der Leitung durch den Leitungsspeicher übertragen, der verschieden vom Objektbus ist.
  • Die 36B veranschaulicht eine Synchronisations- und Taktsteuerung von Verarbeitungselementen. Wie oben erörtert, führen Verarbeitungselemente Rechenaufgaben gemäß einem hochfrequenten Taktgebersignal 3620 aus. Eine Aufgabe beginnt nach dem Erhalt eines Startsignalimpulses 3622, und das Verarbeitungselement teilt den Abschluss einer Aufgabe durch einen erledigt-Signalimpuls 3624 mit.
  • Die 37 veranschaulicht das Bewegungsschätzungs-Verarbeitungselement, das eine Ausführungsform der vorliegenden Erfindung darstellt. Das Bewegungsschätzungs-Verarbeitungselement empfängt als Eingabe ein Luma-Objekt entsprechend dem gegenwärtigen Makroblock und ein oder mehrere Luma-Objekte, die Referenzmakroblöcke von einem im Arbeitsspeicher gespeicherten Referenzeinzelbild darstellen. Das Bewegungsschätzungs-Verarbeitungselement erzeugt als Ausgabe Bewegungsvektorobjekte.
  • Die 38 veranschaulicht das Intra-Prädiktions- und Inter-Prädiktions-Verarbeitungselement, das ein Paar von Verarbeitungselementen umfasst und das eine Ausführungsform der vorliegenden Erfindung darstellt. Das Intra-Prädiktions-Verarbeitungselement 3802 empfängt horizontale und vertikale Luma- und Chromabildpunktvektoren von benachbarten Blöcken sowie Daten, die die nächsten Nachbarblöcke beschreiben, und erzeugt als Ausgabe einen der vier 16×16 Intra-Prädiktionsmodi beziehungsweise neun 4×4 Intra-Prädiktionsmodi für entweder einen ganzen Makroblock oder für 16 4×4 Makroblockpartitionen. Einer von vier Chroma-Intra-Prädiktionsmodi wird für jeden Chroma-Makroblock erzeugt. Wie bei der Inter-Prädiktion wählt das Intra-Prädiktionsverarbeitungselement den Modus, der die beste Schätzung des derzeitig betrachteten Makroblocks liefert. Abhängig vom Grad der durch den Videocodec umgesetzten Kompressionskomplexität kann ein Makroblock auf viele unterschiedliche Weisen aufgeteilt werden, wie mit Bezug auf 6 erörtert wurde, um eine besondere Partition zu finden, die die effektivste Prädiktion liefert. Das Inter-Prädiktions-Verarbeitungselement 3804 empfängt Referenzmakroblöcke, sowohl Luma-Makroblöcke als auch Chroma-Makroblöcke, und Bewegungsvektoren und erzeugt als Ausgabe einen Prädiktionsmakroblock oder eine -makroblockpartition.
  • Die Implementierung mit zwei Verarbeitungselementen des Intra- und Inter-Vorhersageverarbeitungselements (3304 in 33A) veranschaulicht einen Ausführungsparameter. Die Anzahl und Komplexität der Verarbeitungselemente kann in Abhängigkeit von vielen unterschiedlichen Ausführungserwägungen variieren, sowie die Komplexität der Aufgabe durch ein Verarbeitungselement ausgeführt wird.
  • Wenn zum Beispiel eine Implementierung mit einer sehr hohen Bandbreite benötigt wird, kann es notwendig sein, jede besondere Aufgabe als eine Anzahl von parallelen Verarbeitungselementen innerhalb der Verarbeitungselementleitung zu implementieren. In Implementierungen mit einer niedrigeren Bandbreit können diese parallelen Verarbeitungselemente mit einem einzigen Verarbeitungselement kombiniert werden. Ein anderer wichtiger Punkt wird in der Implementierung des Intra- und Inter-Prädiktions-Verarbeitungselementes offenbart. Wie oben erörtert, gibt es verschiedene Ebenen von Kompression und Dekompression, die vom Gesamt R264 Standard umfasst wird. Höhere Ebenen liefern eine bessere Kompression, aber auf Kosten einer größeren Rechenkomplexität. Eine besondere Implementierung mit einer einzigen integrierten Schaltung eines Videocodec kann höhere Ebenen des Standards sowie mittlere und niedrige Ebenen implementieren, und aktuelle Operationen können durch Parametereingabe in die integrierte Einzelschaltung gesteuert und im Flashspeicher gespeichert werden. Somit kann eine Implementierung mit einer einzigen integrierten Schaltung für flexible Operationen gemäß mehreren Parametern sorgen.
  • Die 39 zeigt ein Blockdiagramm des entropiekodierten Verarbeitungselements, das eine Ausführungsform der vorliegenden Erfindung darstellt. Dies Verarbeitungselement empfängt Luma-, Chroma- und Bewegungsvektorobjekte sowie unterschiedliche Typen von Datenobjekten, und verwendet, wie oben erörtert, verschiedene andere Entropiekodierungsschemata, um die letzte Kopierausgabe zu erzeugen, die in NAL-Einheiten verpackt ist.
  • Die 40 veranschaulicht ein Beispiel der Speichererfordernisse für einen Video-Pufferspeicher in der Videocodec-Implementierung, wie in 33A veranschaulicht. In einer Ausführungsform beinhaltet der Video-Pufferspeicher ausreichend Makroblöcke, Makroblockpartitionen und Bewegungsvektoren, so dass ein gegebenes Objekt nicht zwischen dem Video-Pufferspeicher und dem externen Arbeitsspeicher während einer Sequenz von Operationen als sequentielle Schritte ausgetauscht werden muss, die vorn ersten Verarbeitungselement starten und bis zum letzten Verarbeitungselement fortfahren. Die unterschiedlichen Objekttypen werden in Umlaufwarteschlangen innerhalb des Video-Pufferspeichers gespeichert, wobei viele der Warteschlangen aufgeteilt werden, um derzeitig betrachtete Makroblockinformationen in einer Partition und benachbarte Makroblockinformationen in der anderen Partition zu fassen. Zum Beispiel beinhaltet folglich der Video-Pufferspeicher eine 16 Luma-Makroblöcke beinhaltende Umlaufwarteschlange 4002, die in zwei Partitionen von jeweils acht Makroblöcken aufgeteilt ist.
  • Die 41 veranschaulicht den Betrieb der Luma-Makroblock-Umlaufwarteschlange (4002 in 40) während neun höheren Verarbeitungsintervallen. Während des Zeitintervalls t0 4102 ist ein nächster Rohvideodatenluma-Makroblock Eingabe in einen Stecklatz 0 4104 und ein entsprechender Nachbarreferenzblock von einem rekonstruierten Einzelbild wird in den Steckplatz 8 4106 eingefügt. Während jedes aufeinander folgenden Zeitintervalls sind zusätzliche Rohdatenmakroblöcke und Referenzmakroblöcke Eingabe in aufeinander folgende Steckplätze innerhalb der Umlaufwarteschlange. Über die Zeitintervalle verändern sich die Inhalte der Makroblöcke in Steckplatz 0 4104 fortlaufend, wenn durch anschließende Verarbeitungselemente auf sie zugegriffen wird und sie modifiziert werden. Während des Intervalls t7 4108 wird der Inhalt des Makroblocks schließlich kodiert und durch das letzte Verarbeitungselement ausgegeben, so dass während Intervall t8 4110 ein neuer Rohdatenmakroblock in den Steckplatz 0 4112 platziert werden kann. Eine Umlaufwarteschlange beinhaltet folglich einen Makroblockdatenvideo-Pufferspeicher für eine fließbandartige Verarbeitung durch sämtliche Verarbeitungselemente und ersetzt dann den Makroblock durch einen neuen Rohdatenmakroblock und Referenzmakroblöcke, nachdem ein letztes Verarbeitungselement den Makroblock verarbeitet hat. Während jedes niederfrequenten Taktsignalzeitintervalls werden sämtliche Kodierungs- und Dekodierungsschritte ausgeführt, wobei aber jedes Verarbeitungselement seine Aufgabe auf einem anderen Makroblock oder Makroblockpartition während eines niederfrequenten Taktsignalzeitintervalls ausführt.
  • Die 42 veranschaulicht eine Implementierung des Video-Cachecontrollers eines Videocodec, der eine Ausführungsform der vorliegenden Erfindung darstellt. Der Video-Pufferspeicher 4202 wird über Multiplexer 42044206 abgerufen, die durch umlaufpuffernde Lese-und-Schreibadresszeiger gesteuert werden. Folglich kann ein Verarbeitungselement zu einem gegebenen Zeitpunkt einen unterschiedlichen Lese-und-Schreibzeiger von anderen Verarbeitungselementen speichern, so dass jedes Verarbeitungselement auf den geeigneten Steckplatz in der Umlaufwarteschlange zugreift. Wenn Blöcke durch die Leitung der Verarbeitungselemente voranschreiten, werden der Leseadresszeiger und der Schreibadresszeiger, die mit einem Block verbunden sind, von Verarbeitungselement zu Verarbeitungselement erhöht, um sicher zu stellen, dass die Verarbeitungselemente auf den geeigneten Steckplatz innerhalb der Umlaufwarteschlangen zugreifen, ohne zu fordern, dass die Daten anfänglich innerhalb des Video-Pufferspeichers zur Übertragung zwischen dem Video-Pufferspeicher und einem externen Arbeitsspeicher übertragen werden müssen.
  • Die 43 stellt eine Tabelle bereit, die das gesamten Rechenverarbeitungsverfahrens zeigt, das durch jeweils bestimmte Verarbeitungselemente des Videocodec ausgeführt wird, der eine Ausführungsform der vorliegenden Erfindung darstellt. Durch diese Tabelle kann die Größenordnung der Rechenbandbreite, die durch massiv parallele Verarbeitung innerhalb der Implementierung mit einer einzigen integrierten Schaltung des Videocodec gemäß einer Ausführungsform der vorliegenden Erfindung geliefert wird, geschätzt werden. Um eine Rechenmaschine und Software zu implementieren, die eine gleichwertige Rechenbandbreite liefern würde, müsste der Prozessor, der die Software ausführt, mit einer sagenhaften Geschwindigkeit arbeiten, weit oberhalb der Taktgebergeschwindigkeit, die durch derzeitig verfügbare Prozessoren unterstützt wird.
  • Eine beliebte Sprache für integrierte Schaltungsauslegung ist die Very-High-Speed-Integrated-Circuit Hardware Description Lanquage („VHDL”). Die 44A–E liefern höhere VHDL-Definitionen der verschiedenen Verarbeitungselemente in der Implementierung mit einer einzigen integrierten Schaltung eines Videocodec gemäß einer Ausführungsform der vorliegenden Erfindung, wie in 33A gezeigt. In 44A werden zunächst Definitionen 4402 von unterschiedlichen Objekten geliefert. Unter fettgedruckten Namen von unterschiedlichen Verarbeitungselementen werden dann eine VHDL Definition der Eingabe und der Ausgabe des Verarbeitungselements geliefert. In der unteren Hälfte von 44A werden zum Beispiel die Eingaben und Ausgaben 4404 für das Bewegungsschätzungsverarbeitungselement geliefert. Das Bewegungsschätzungsverarbeitungselement empfängt vier logische Signaleingaben 4406, einen Luma-Makroblock 4408 und einen Luma-Referenzmakroblock 4410 und erzeugt als Ausgabe drei logische Signale 44124414 und ein Bewegungsvektorobjekt 4416.
  • Unterabschnitt IV: Videocodec-Implementierungen, welche eine verbesserte Integration mit dem Speicher-Untersystem gemäß diversen Ausgestaltungen der vorliegenden Erfindung aufweisen
  • In diesem und den beiden darauffolgenden Unterabschnitten wird eine Vielzahl von unterschiedlichen Speicher-Untersystemen, welche Ausgestaltungen der vorliegenden Erfindung darstellen, diskutiert. Dieser Unterabschnitt fokussiert sich auf diverse Implementierungen des mit einer einzelnen integrierten Schaltung implementierten Videocodec, wie in den vorhergehenden Unterabschnitten beschrieben, welcher sich durch eine verbesserte Integration einer vollständig integrierten Kamera, eines Videocodec und eines Speichers auszeichnet. Die unterschiedlichen Implementierungen bieten unterschiedliche Charakteristika, welche insbesondere in diversen unterschiedlichen Marktnischen und für unterschiedliche Arten von Bildgebungssystemen Anwendung finden dürften. Beispielsweise die Ausgestaltung mit integrierter Linse, Sensor, Speicher und Codec, welche nachfolgend diskutiert wird, dürfte Effizienz und Preisvorteile bieten, wohingegen die weniger integrierten Ausgestaltungen der vorliegenden Erfindung den Vorteil größerer Modularität und geringerer Planungs- und Herstellungskosten bieten dürften.
  • Die 45 veranschaulicht Komponenten und Funktionalitäten des Speicher-Untersystems einer Videokamera, welche diverse Ausgestaltungen der vorliegenden Erfindung darstellen. Ein Videokamerasystem kann eine oder mehrere Videokameras aufweisen, die in 45 als Paare von Linsen und Sensoren 45024505 abgebildet sind, wobei diese Daten in einem Strom von informationskodierten Einheiten, beispielsweise Bytes, zu einem elektronischen Speicher 4506 übertragen.
  • Wie oben diskutiert, kann eine Videokamera große Datenmengen produzieren, und kann dies asynchron tun bezüglich anderer mit dem Videokamerasystem verbundener Videokameras und bezüglich eines Videokameradatenverarbeitungs-Untersystems, wie beispielsweise des obenstehend beschriebenen Videocodec mit einer einzelnen integrierten Schaltung. Die Videodaten sind in einem Speicher als Datenübertragungsblöcke gespeichert, wobei jeder Datenübertragungsblock, wie oben beschrieben, durch eine Position innerhalb einer linearen Sequenz von Datenübertragungsblöcken, durch diverse Videokameraparameter, inklusive einer Datenübertagungsblockweite und Datenübertragungsblockhöhe und durch eine große Anzahl an Datenwerten beschrieben ist, wobei jeder der Werte für jeden Bildpunkt innerhalb des Datenübertragungsblockes Farb- und Helligkeitsinformation in einer allgemein festgelegten, kleinen Anzahl von Bits kodierend ausgebildet ist. Einzelne Bildpunkte, Vektoren von Bildpunkten, Blöcke von Bildpunkten und diverse andere Datenobjekte, die von dem Videocodec benutzt werden, werden aus einem Speicher abgerufen und in einen Pufferspeicher 4508 abgelegt, um einen Zugriff durch diverse Verarbeitungselemente eines Videocodec zu ermöglichen, und können während der Videokameradatenverarbeitung in einer abgeänderten Form von dem Pufferspeicher in den Speicher zurückgegeben werden.
  • Während die Datenpfade 4510 von den Videokameras 45024505 in den Speicher 4506 im Wesentlichen unidirektional verlaufen, ist der Datenpfad 4512, welcher den Pufferspeicher 4508 mit dem Speicher 4506 verbindet, bidirektional. In einigen der Ausgestaltungen der vorliegenden Erfindung stellt eine Speichersteuereinheit 4514 eine Datenformatierung, Datenadressierung und Entscheidungsfunktionalitäten bereit, welche es ermöglichen, dass eine oder mehrere Videokameras 45024505 gleichzeitig und asynchron auf den Speicher 4506 zugreifen, indessen der Speicher gleichzeitig für einen Videocodec über den Pufferspeicher 4508 zugänglich ist.
  • Die 46A–E veranschaulichen eine Serie von Videosystemen, welche diverse Ausgestaltungen der vorliegenden Erfindung darstellen und welche eine Lösung für die zunehmende Integration zwischen Untersystemen der Videosysteme verkörpern. Die erste, in 46A veranschaulichte Ausgestaltung der vorliegenden Erfindung weist eine separate Videokamera 4602, eine Speicherbank 4604 und Videocodec-Komponenten-Untersysteme 4606 auf, wobei der Videocodec sowohl die Speichersteuereinheit 4608 als auch den Pufferspeicher als Unterkomponenten beinhaltet. Diese Ausgestaltung der vorliegenden Erfindung ist in den vorangegangenen Unterabschnitten ausführlich beschrieben. Die Vorteile dieser Ausgestaltung der vorliegenden Erfindung umfassen die Verwendung von standardmäßigen, handelsüblichen Speicherchips für die Speicherbank und einen relativ hohen Grad an Modularität. Sobald schnellere und leistungsfähigere Chips erhältlich werden, kann die Speicherbank über einen Speicherchipaustausch und eine relativ unkomplizierte Neuparametrisierung des Videocodec aufgerüstet werden.
  • Die 46B veranschaulicht eine weitere Ausgestaltung der vorliegenden Erfindung. In dieser Ausgestaltung ist eine Speichersteuereinheitsfunktionalität 4610 direkt in eine oder mehrere der Speicherchips 4612 der Speicherbank eingebracht, anstatt in dem Videocodec. Diese Ausgestaltung der vorliegenden Erfindung bietet eine einfache Schnittstelle zwischen dem Videocodec und dem Speicher-Untersystem und in bestimmten Ausgestaltungen dürfte der Kommunikationsaufwand zwischen dem Videocodec und dem Speicher-Untersystem verringert werden.
  • Die 46C veranschaulicht eine dritte Ausgestaltung der vorliegenden Erfindung. In dieser Ausgestaltung der vorliegenden Erfindung werden die Videokameradaten direkt in das Speicher-Untersystem 4616 eingegeben, anstatt durch den Videocodec, so wie in den zuvor diskutierten Ausgestaltungen der vorliegenden Erfindung. In dieser Ausgestaltung ist der Videocodec weiter vereinfacht und der Kommunikationsaufwand weiter verringert.
  • Die 46D veranschaulicht eine vierte Ausgestaltung der vorliegenden Erfindung. In dieser Ausgestaltung der vorliegenden Erfindung sind der Videocodec und der Speicher zusammengeführt in einem einzelnen integrierten Schaltkreis 4618. Hierdurch wird der Kommunikationsaufwand abermals verringert, da der Datenverkehr zwischen der Speichersteuereinheit und dem Videocodec in einem einzelnen integrierten Schaltkreis aufgenommen ist, anstatt Hochgeschwindigkeitsdatenverbindungen oder Busse zwischen dem Videocodec und dem Speicher-Untersystem zu erfordern.
  • Die 46E veranschaulicht eine vollständig integrierte Ausgestaltung der vorliegenden Erfindung. In diesen sowohl in einer Aufsicht 4620 als auch in einer Seitenansicht 4622 dargestellten Ausgestaltungen sind die Kamera mit dem Speicher-Untersystem und dem Videocodec vollständig integriert, um ein einzelnes monolithisches System zu bilden. In dieser Ausgestaltung der vorliegenden Erfindung werden die Videokameradaten direkt in die integrierte Schaltung eingegeben, ohne einen die Kamera mit der integrierten Schaltung verbindenden Hochgeschwindigkeitsbus oder eine verbindende serielle Verbindung zu benötigen. Des Weiteren ermöglicht die zweidimensionale oder höherdimensionale Speicherarchitektur, zweidimensionale Kameradaten direkt in einen korrespondierenden zweidimensionalen Speicher einzugeben, ohne eine Serialisierung und Deserialisierung zu erfordern, wodurch die Geschwindigkeit erhöht und damit die Effizienz der Speicherung von Kameradaten in einen elektronischen Speicher verbessert wird. Die letzte Ausgestaltung der vorliegenden Erfindung macht sich die Vorteile vieler neuer Entwicklungen aus den Materialwissenschaften, der Nanotechnologie und der Nanoelektronik zu Nutze, welche deutlich vergrößerte zweidimensionale und dreidimensionale Speicherdichten anbieten. Mit der vollständigen Integration dürften sich ebenfalls die zahlreichen potenziellen Schwachstellen ausmerzen und die Integrationskosten des Untersystems reduzieren lassen.
  • Wie bereits oben ausgeführt, ist die Reihenfolge der zahlreichen in den 46A–E abgebildeten Ausgestaltungen nicht dazu gedacht, anzudeuten, dass eine Ausgestaltung der vorliegenden Erfindung eine andere Ausgestaltung der Erfindung notwendigerweise überflügelt oder Erstere von Letzterer überflügelt wird. Jede in den 46A–E gezeigten Ausgestaltungen der vorliegenden Erfindung bietet eine unterschiedliche Zusammensetzung an Kompromissen und gleicht zwischen einer Vielfalt an unterschiedlichen Kosten, Effizienzklassen und gewünschten Charakteristika aus. Das in 46E gezeigte vollständig integrierte System kann viele Kameras aufnehmen, jedoch wäre die zu Grunde liegende integrierte Schaltung im Allgemeinen größer, um weitere Kameras aufzunehmen und würde relativ strenge Einschränkungen bezüglich ihrer Geometrie bedingen, obwohl eine Ausgestaltung mit zwei Kameras, wobei die Kameras um einige Grad gegeneinander verschwenkt sind, eine Stereobildaufnahme ermöglichen würde, um eine Tiefenbestimmung in dem aufgenommenen Bild zu unterstützen. Die erste in 46A veranschaulichte Ausgestaltung der vorliegenden Erfindung ermöglicht die Verwendung von bereits existierenden, handelsüblichen Speicherchips für eine relativ einfach durchzuführende Aktualisierung des Speicher-Untersystems. Es wird erwartet, das die Vielzahl an unterschiedlichen Familien von Ausgestaltungen der vorliegenden Erfindung auf die zahlreichen in den 46A–E veranschaulichten Architekturen gestützt werden können, um einen ganzen Bereich von Leistungsfähigkeiten, Kosten und Kompromissen anzubieten.
  • Unterabschnitt V: Eine erste Familie von Speicher-Untersystemen, welche einen ersten Satz von Ausgestaltungen der vorliegenden Erfindung darstellen
  • In einem ersten Satz von Ausgestaltungen der vorliegenden Erfindung umfasst ein Speicher-Untersystem eine Bank von handelsüblichen Speicherchips und eine Speichersteuereinheit innerhalb dem in Bezug auf 46A diskutierten integrierten Schaltkreis des Videocodec oder mehrere höher integrierte Videokamera-basierte Videodatenverarbeitungssysteme, bei denen die Speichersteuereinheit in einen oder mehrere Speicherchips integriert ist, wie beispielsweise in den oben in den 46B–C diskutierten Ausgestaltungen der vorliegenden Erfindung. In diesen Ausgestaltungen der vorliegenden Erfindung funktioniert die Speichersteuereinheit als ein Busverwalter, um einen asynchronen, gleichzeitigen Zugriff auf den Speicher durch die Videokameras und den Videocodec zu koordinieren, wie auch als Serialisierer von zweidimensionalen Daten auf eindimensionale Daten und als Deserialsierer von eindimensionalen Daten auf zweidimensionale Daten. Speicher-Untersysteme dieses ersten Satzes von Ausgestaltungen der vorliegenden Erfindung können auch mit anderen Typen von Rechenmaschinen verbunden werden oder in andere Typen von Systemen, die effiziente Speicher-Untersysteme benötigen, eingefügt werden.
  • Die 47 veranschaulicht eine verallgemeinerte, mittels einer erfindungsgemäßen Ausgestaltung der Speichersteuereinheit bereitgestellte Schnittstelle zu Kameras, einen Videocodec und einen Speicher. In 47 ist die Speichersteuereinheit 4702 durch ein Rechteck dargestellt. Die Speicher- und Pufferspeicherschnittstellen sind auf der rechten Seite 4704 des Rechteckes dargestellt, die Videokamera- und Videocodec-Schnittstellen auf der linken Seite 4706. Die Speichersteuereinheit kann mit einer oder mehreren Videokameras verbunden werden. Die in 47 veranschaulichte Speichersteuereinheit ist mit vier Videokameras 47084711 verbunden. Jede der Videokameras ist mit einem Eingabedatenpfad, einem Leitungssignal („ls”), einem Datenübertragungsblocksignal („fs”) und einem Bildpunkttaktsignal („pixclk”) verbunden, wie hier der Eingabedatenpfad 4716, ls 4718, fs 4720 und pixclk 4722 für die Videokamera 4708. Der Eingabedatenpfad 4716 umfasst einen Satz von parallelen Eingabesignalleitungen, wobei jede der Eingabesignalleitungen mit einem Bit innerhalt einer größeren Informationseinheit, wie zum Beispiel ein Byte, korrespondiert. Die ls-, fs- und pixclk-Signale 4718, 4720 und 4722 sind in den vorangegangenen Abschnitten beschrieben worden. Kurz wiederholend, das ls gibt Liniengrenzen innerhalb eines serialisierten Kameradatensignals an, das fs Datenübertagungsblockgrenzen. Das pixclk ist ein Kamera-unterstütztes Taktsignal, wobei die Kamera im Allgemeinen für jeden aktiven Übergang einen Bildpunkt eingibt, oder in anderen Worten pro pixclk-Intervall, auch Uhrsignal genannt, einen Bildpunkt eingibt.
  • Die Speichersteuereinheit, welche diverse Ausgestaltungen der vorliegenden Erfindung darstellt, bietet eine etwas komplexere Schnittstelle zu dem Videocodec oder Videoverarbeitungs-Untersystem eines Videosystems. Diese Schnittstelle beinhaltet die Eingabe der x-Koordinate 4730 und der y-Koordinate 4732 eines Bildpunktes oder eines Bildpunktblockes innerhalb eines in dem Speicher gespeicherten Datenübertragungsblockes, die Eingabe einer Datenübertagungsblocknummer 4734, die Eingabe eines Maschinenbefehls 4738, eine Programmsignaleingabe 4740, eine Schreibsignaleingabe 4742 und eine Auswahlsignaleingabe 4744 und, wenn die Speichersteuereinheit die Eingabe von zwei oder mehreren Videokameras unterstützt, die Eingabe des Indexes einer Kamera 4736. Es sollte angemerkt werden, dass die in Bezug auf die 47 beschriebenen Ausgestaltungen exemplarische Schnittstellen sind und dass besondere Ausgestaltungen der vorliegenden Erfindung eine Vielzahl an unterschiedlichen spezifischen Schnittstellen verwenden können, die unterschiedliche Datenpfade und -signale und/oder eine größere oder kleinere Anzahl an Datenpfaden und -signalen umfassen. Beispielsweise, anstatt der Eingabe einer x-Koordinate 4730 und einer y-Koordinate 4732 in die Speichersteuereinheit, kann eine alternative Schnittstelle die Eingabe einer linearen Bildpunktadresse innerhalb einer linearen Sequenz von Bildpunkten ermöglichen. In diesem Fall würde die Eingabe der linearen Bildpunktadresse doppelt so viele Signalleitungen benötigen als entweder für die Eingabe der x-Koordinate oder der y-Koordinate gemäß der vorstehend diskutierten Ausgestaltung benutzt werden, falls beide Ausgestaltungen dieselbe maximale Datenübertragungsblockgröße unterstützen.
  • In bestimmten Ausgestaltungen der vorliegenden Erfindung umfassen die x- und y-Koordinaten das (x, y)-Koordinatenpaar, welches den Ort des linksobersten Punktes in einem Block oder Vektor von Bildpunkten oder einen besonderen Bildpunkt innerhalb eines in dem Speicher gespeicherten Videodatenübertragungsblockes angibt. Sowohl die x- als auch die y-Koordinaten werden über einen Satz von parallelen Signalleitungen mit ausreichender Breite geliefert, um als eine binäre Zahl die größtmögliche Koordinate innerhalb des größtmöglichen, durch das Videosystem unterstützten Datenübertragungsblockes darzustellen. Zu beachten ist, dass die y-Koordinate mit den Zeilenindices innerhalb des Datenübertragungsblockes korrespondiert und die x-Koordinate mit den Spaltenindices, im Gegensatz der geläufigen mathematischen Konvention für die Koordinaten x und y. Abermals, die Bildpunkte innerhalb eines Datenübertragungsblockes können alternativ durch einen linearen Index oder eine Position adressiert werden, wenn der Datenübertragungsblock als eine lineare Sequenz von Bildpunkten betrachtet wird, anstatt als ein zweidimensionales Feld von Bildpunkten.
  • Die Datenübertragungsblocknummer 4734 wird ebenfalls durch einen Satz von parallelen Signalleitungen ausreichender Anzahl bereitgestellt, um als binäre Zahl den größtmöglichen Datenübertragungsblockindex für die in dem Speicher gespeicherten Datenübertragungsblöcke darzustellen. Beispielsweise sind zwei Signalleitungen ausreichend, um jede der Datenübertragungsblocknummern in einem Satz {0, 1, 2, 3} darzustellen. Analog dazu wird der Kameraindex 4736 durch einen Satz von parallelen Signalleitungen ausreichender Anzahl bereitgestellt, um den Index oder die Kameranummer jeder mit der Speichersteuereinheit verbundenen Videokamera darzustellen. Der Maschinenbefehl 4738 wird ebenfalls durch einen Satz von parallelen Signalleitungen ausreichender Anzahl zur Verfügung gestellt, um als binäre Zahl alle benötigten Maschinenbefehle zu kodieren. In einer Ausgestaltung der vorliegenden Erfindung sind die Programm-, Schreib- und Auswahlsignalleitungen einzelne Signalleitungen, die eine binäre „0” oder „1” bereitstellen, auch Aus und Ein oder Tief und Hoch genannt. Jede erdenkliche Kodierung von binären Signalen kann innerhalb einer bestimmten Ausgestaltung der vorliegenden Erfindung verwendet werden. Beispielsweise kann in einer bestimmten Ausgestaltung der Erfindung die Eingabe des booleschen Wertes „0” in die Schreibsignalleitung einen Schreibvorgang kennzeichnen, in alternativen Ausgestaltungen der vorliegenden Erfindung aber einen Lesevorgang. In jeder einzelnen Ausgestaltung der vorliegenden Erfindung ist die jeweils verwendete Konvention festgelegt. In einer Ausgestaltung der vorliegenden Erfindung wird die Speichersteuereinheit mittels Setzens der Programmsignalleitung 4740 auf Hoch initialisiert, und danach werden die Initialisierungsdaten durch bestimmte der verbleibenden Signalleitungen und Datenpfade bereitgestellt. Zum Beispiel kann die maximale Datenübertragungsblockgröße als ein Produkt der maximal möglichen Werte der x- und y-Koordinaten spezifiziert werden, welche durch die x- und y-Koordinatensignalpfade 4730 und 4732 eingegeben werden. Analog dazu kann die maximale Anzahl an Datenübertragungsblöcken, die für jede Kamera gespeichert werden können, über die Datenübertragungsblocksignalleitung 4734 eingegeben werden. Die maximale Anzahl der unterstützten Kameras kann mittels des Kameraindexsignalpfades 4736 als der größtmögliche Kameraindex eingegeben werden. Der Videocodec fordert einen Speicher-zu-Pufferspeicher oder einen Pufferspeicher-zu-Speicher-Vorgang mittels Hoch-Setzens der Auswahlsignalleitung an, während er einen Maschinenbefehl über den Maschinenbefehlssignalpfad 4738, eine Datenübertragungsblocknummer über den Datenübertragungsblocknummernsignalpfad, einen Kameraindex über den Kameraindexsignalpfad und x- und y-Koordinaten über die x- und y-Signalpfade eingibt. In einer Ausgestaltung der vorliegenden Erfindung mit einer einzelnen Videokamera wird kein Kameraindexsignalpfad benötigt. In einer Ausgestaltung der vorliegenden Erfindung wird ein Pufferspeicher-zu-Speicher-Vorgang mittels Hoch-Setzens der Schreibsignalleitung 4744 initiiert, wohingegen ein Speicher-zu-Pufferspeicher-Vorgang mittels Tief-Setzens der Schreibsignalleitung angefordert wird. Der exakte zeitliche Ablauf und die Sequenzen der Eingabesignale können variieren von einer Ausgestaltung der vorliegenden Erfindung zu einer anderen. In bestimmten Ausgestaltungen der vorliegenden Erfindung verkörpert jeder Maschinenbefehl einen unterschiedlichen Speicherzugriffstyp, wobei die Speicherzugriffstypen, wie in den vorangegangenen Abschnitten diskutiert, einen Zugriff auf einen Bildpunkt, auf unterschiedlich große Vektoren von Bildpunkten, auf unterschiedlich große Blöcke von Bildpunkten und auf Datenobjekte umfassen.
  • Die in 47 dargestellte verallgemeinerte Speichersteuereinheitsschnittstelle umfasst eine erste Schnittstelle zu dem Speicher, die einen bidirektionalen Datenpfad 4750, einen Adresspfad 4752 und einen Kontrollpfad 4754 aufweist. Die Speichersteuereinheitsschnittstelle enthält zusätzlich eine zweite Schnittstelle zu dem Pufferspeicher, die ebenfalls einen Datenpfad 4756, einen Adresspfad 4758 und einen Kontrollpfad 4760 aufweist. Zwischen dem Speicher und dem Pufferspeicher werden die Daten durch einen Satz von parallelen Signalleitungen 4750 beziehungsweise 4756 ausgetauscht. In bestimmten Ausgestaltungen der vorliegenden Erfindung ist der Datenpfad bidirektional und wird sowohl für das Schreiben von Daten in den Speicher als auch für das Empfangen von Daten aus dem Speicher verwendet. In anderen Ausgestaltungen der vorliegenden Erfindung werden separate unidirektionale Datenpfade für das Schreiben von Daten in den Speicher und das Lesen von Daten aus dem Speicher verwendet. Jeder Datenpfad weist einen Satz von parallelen Signalleitungen in ausreichender Anzahl auf, um eine Informationseinheit, beispielsweise ein Byte, ein Wort, ein Langwort oder deutlich längere Bitsequenzen, zu übertragen. In vielen Ausgestaltungen korrespondiert jede der Signalleitungen in einem Datenpfad mit einer separaten Ebene innerhalb einer Speicherbank oder Speicherarchitektur. Beispielsweise kann ein Datenpfad mit acht Signalleitungen die Speichersteuereinheit mit acht Speicherchips verbinden, wobei jedes von einer Kamera empfangene Byte auf die acht Speicherchips verteilt wird. Eine Vielzahl von anderen Abbildungen und Datenpfadgrößen sind möglich, insbesondere breitere Datenpfade und unterschiedliche Typen von verzahnten Abbildungen von Dateneinheiten auf die Speicherebenen.
  • Als Teil einer jeden Zugriffsanforderung wird eine Speicheradresse zu dem Speicher und Pufferspeicher durch die Adresspfade 4752 und 4758 bereitgestellt. In bestimmten Ausgestaltungen der vorliegenden Erfindung übersetzt die Speichersteuereinheit die serialisierten Kameradaten und die damit verbundenen Signale oder Spezifikationen von zweidimensionalen Datenblöcken in lineare Speicheradressen. Der Speicher ist im Allgemeinen auch mit Kontrollsignalen durch die Kontrollpfade 4754 und 4760 versorgt, wie beispielsweise die Auswahl- und Schreibsignale, die durch den Videocodec der Speichersteuereinheit bereitgestellt werden (4752 und 4744).
  • Die 48A–H veranschaulichen die Komponenten und deren Betrieb einer Speichersteuereinheit, welche eine Ausgestaltung der vorliegenden Erfindung darstellt. Diese Komponenten sind in den nachfolgenden Absätzen mit Bezug auf die nachfolgenden Figuren genauer beschrieben. Sämtliche 48A–H verwenden ähnliche Darstellungskonventionen, die im Rahmen der 48A erläutert werden.
  • Die Speichersteuereinheit 4802 ist als ein Rechteck dargestellt. Wie oben diskutiert, kann die Speichersteuereinheit als ein Modul oder Untersystem innerhalb eines Videocodec implementiert sein oder alternativ als ein Untersystem oder Modul innerhalb eines oder mehrerer Speicherchips oder alternativ als ein Untersystem oder Modul innerhalb einem integrierten Schaltkreis mit Videocodec und Speicher. Es kann sogar möglich sein, die Speichersteuereinheit als eine alleinstehende Komponente in bestimmten komplexen Systemen zu implementieren. Die Speichersteuereinheit umfasst einen Kamerablock, der mit jeder mit der Speichersteuereinheit verbundenen Kamera korrespondiert. In den 48A–H sind drei Kamerablöcke 48044806 abgebildet. Die Kamerablöcke empfangen Daten und Signale von den Videokameras und geben Kontrollsignale und Daten an den Speicher aus. Somit implementieren sie Datenstromschnittstellen, die es Videokameras erlauben, Daten an die Speichersteuereinheit zu übertragen. Ein Speichersequenzer 4808 implementiert die in Bezug auf 47 diskutierte Schnittstelle von dem Videocodec zu der Speichersteuereinheit. Obwohl in den 48A–H lediglich ein einzelner Speichersequenzer gezeichnet ist, können alternative Ausgestaltungen mehrere Speichersequenzer verwenden, um einen höheren Grad an Parallelität in der Verbindung zwischen den Videocodec und der Speichersteuereinheit zu fördern.
  • Das Speicher-Untersystem ist als Rechteck 4810 dargestellt, wobei es mit der Speichersteuereinheit durch einen Dateneingabepfad 4812, einen Datenausgabepfad 4814, einen Adresspfad 4816 und einen Kontrollpfad 4818 verbunden ist. Wie vorstehend diskutiert, können bestimmte Speicher-Untersysteme die Datenein- und -ausgabepfade 4812 und 4814 zu einem einzelnen bidirektionalen Datenpfad zusammenführen. Die Speichersteuereinheit umfasst zusätzlich einen Busverwalter 4820, eine Takteingabe 4822, drei Multiplexer 48244826 und eine Adressübersetzungseinheit 4828. Abschließend weist die Speichersteuereinheit Dateneingabe- und -ausgabeanschlüsse 4829 und 4830 auf, um Daten von dem Pufferspeicher zu empfangen und in den Pufferspeicher zu übertragen. Diese Anschlüsse können in bestimmten Ausgestaltungen der vorliegenden Erfindung in einen bidirektionalen Datenanschluss zusammengeführt werden. Dieselbe oder eine separate Adressübersetzungskomponente kann für das Spezifizieren von Zugriffen des Pufferspeichers auf den Speicher verwendet werden oder Zugriffe des Pufferspeichers auf den Speicher können durch andere Untersysteme, wie beispielsweise den Videocodec, spezifiziert werden.
  • Die 48B–C veranschaulichen die Funktion des Busverwalters (4820 in 48A). Wie in 48B veranschaulicht, empfängt der Busverwalter Anforderungssignale von jedem der Kamerablöcke und Speichersequenzer. Ein Kamerablock oder ein Speichersequenzer initiiert einen Speichervorgang mittels Setzens der Anforderungssignalleitung, die den Kamerablock oder die Speichersteuereinheit mit dem Busverwalter verbindet, auf „1”. Der Busverwalter 4820 vermittelt zwischen den von den Kamerablöcken und dem Speichersequenzerblock empfangenen, asynchronen und gleichzeitigen Anforderungen durch zu jedem Zeitpunkt erfolgendes Auswählen desjenigen Blockes aus den Kamerablöcken und dem Speichersequenzerblock, für den die nächste Anforderung abzuarbeiten ist. In anderen Worten, der Busverwalter empfängt kontinuierlich Hinweise von anhängigen Anforderungen von den Kameras und dem Speichersequenzer und serialisiert den Strom der eingehenden Anforderungen mittels Zulassens lediglich einer einzelnen Kamera oder des Speichersequenzer zu jedem Zeitpunkt, um eine Speichertransaktion auszuführen. Der Busverwalter überträgt Freigabesignale, die in der hier diskutierten Ausgestaltung der Erfindung als binärer Wert „1” kodiert sind, über Freigabesignalleitungen 48364839 zu jedem der Kamerablöcke in dem Speichersequenzerblock. Zu einem gegebenen Zeitpunkt steht lediglich eine einzelne Signalleitung auf Hoch. Der Busverwalter muss dafür sorgen, dass in einem bestimmten Zeitpunkt lediglich ein einzelner Kamerablock oder der Speichersequenzer eine Speichertransaktion durchführt und dass die von den Kamerablöcken und dem Speichersequenzer gestellten Anforderungen im Zeitmittel gerecht gehandhabt werden, sodass sämtliche Kamerablöcke und der Speichersequenzer ausreichend Speicherbandbreite erhalten und dass keine Eingabedaten darin scheitern, den Speicher zu erreichen. Wie in 48C veranschaulicht, werden die drei Freigabesignalleitungen 48364839 in die drei Multiplexer 48244826 eingegeben, um es den Multiplexern zu ermöglichen, Daten-, Bildpunkt-, Bildpunktvektor- oder Bildpunktblockkoordinaten und Kontrollsignale von dem momentan freigegebenen Kamerablock oder dem Speichersequenzer auszuwählen.
  • Die 48D veranschaulicht die Funktion des ersten Multiplexers 4824. Jeder der Kamerablöcke 48044806 und der Speichersequenzerblock 4808 kann Daten an den Speicher 4810 senden. Die Datenpfadausgaben durch jeden der Kamerablöcke und der durch den Speichersequenzerblock gesteuerte Dateneingabeanschluss 4829 sind mit dem ersten Multiplexer 4824 verbunden, der einen der vier Eingabedatenpfade auswählt, um Daten, die der erste Multiplexer an den Speicher 4810 weiterleitet, zu empfangen. In 48D ist der Speichersequenzerblock durch den Busverwalter momentan freigegeben und deshalb werden die durch den ersten Multiplexer 4824 über den Dateneingabeanschluss 4829 von dem Pufferspeicher empfangenen Daten durch den ersten Multiplexer 4824 an den Speicher gesendet. Wie in 48E veranschaulicht, sendet der Multiplexer 4825 zu einem bestimmten Zeitpunkt Koordinaten für Daten von einem der Kamerablöcke oder Koordinaten für einen Bildpunkt, einen Bildpunktvektor, einen Bildpunktblock oder ein Datenobjekt aus dem Speichersequenzerblock zu der Adressübersetzungseinheit 4828, welche die Koordinaten in korrespondierende lineare Speicheradressen übersetzt, die die Adressübersetzungseinheit anschließend an den Speicher weiterleitet. Die lineare Speicheradresse wird für eine Kameraeingabe als eine Position innerhalb einer Linie eines Datenübertragungsblockes berechnet, die zu der Summe aus einem Grundversatz für die Kamera und einem Datenübertragungsblockversatz addiert wird. Ähnlich dazu, wie in 48F gezeigt, empfängt der Multiplexer 4826 Kontrollsignale von jedem der Kamerablöcke oder des Speichersequenzerblockes und überträgt zu jedem Zeitpunkt Kontrollsignale von einem durch den Busverwalter freigegebenen Kamerablock oder des freigegebenen Speichersequenzerblockes zu dem Speicher. Wie in 48G gezeigt, fließen Daten von dem Speicher über den Datenausgabeanschluss 4830 durch die Speichersteuereinheit zurück in den Pufferspeicher, während eine Leseanforderung durch den Speichersequenzerblock an den Speicher gestellt wird, wenn der Speichersequenzerblock durch den Busverwalter freigegeben ist.
  • Wie in 48H gezeigt, wird eine Takteingabe 4822 in die Speichersteuereinheit eingegeben und zu jedem der Kamerablöcke und dem Speichersequenzer, dem Busverwalter und zu jeder anderen Komponente der Speichersteuereinheit, die das Taktsynchronisierungssignal verwendet, geleitet. Das Taktsignal, innerhalb der Speichersteuereinheit „fastclk” genannt, ist im Allgemeinen ein Vielfaches des schnellsten erwarteten pixclk-Signals. Das Vielfache n variiert in Abhängigkeit von der Anzahl der Kamerablöcke und kann in bestimmten Ausgestaltungen der vorliegenden Erfindung ein konfigurierbarer Parameter sein. In einer Ausgestaltung der vorliegenden Erfindung wird ein Vielfaches n = 16 verwendet, wenn vier Kamerablöcke durch die Speichersteuereinheit mit dem Speicher verbunden sind. Das interne Speichersteuereinheitstaktsignal, untenstehend „fastclk” genannt, muss von ausreichend großer Frequenz sein, so dass die Speichersteuereinheit gleichzeitig alle durch die Kamerablöcke und den Speichersequenzerblock gestellten Speicherzugriffsanforderungen bedienen kann. Zum Beispiel in einem Fall von vier mit der Speichersteuereinheit verbundenen Videokameras werden durchschnittlich vier Bildpunkte während einer Zeitspanne von 16 fastclk-Intervallen durch die Speichersteuereinheit übertragen, wenn sämtliche vier Kameras Daten mit der schnellstmöglichen Rate von einem Bildpunkt pro pixclk-Intervall übertragen. Da die Speichersteuereinheit interne Vorgänge inklusive Speicherzugriffsvorgänge gemäß der fastclk-Frequenz ausführt, stellt die Speichersteuereinheit ausreichend fastclk-Zyklen und damit ausreichend Speicherbandbreite für den Videocodec über den Speichersequenzerblock bereit, selbst unter voller Datenübertragungsbelastung, hervorgerufen durch alle vier Videokameras.
  • Die 49A–C veranschaulichen eine Ausgestaltung eines in Bezug auf die 48B–C diskutierten Busverwalters, welcher eine Komponente einer Speichersteuereinheit ist, welche eine Ausgestaltung der vorliegenden Erfindung darstellt. Die 49A stellt ein Zustandsübergangsdiagramm und eine symbolische Darstellung eines Kamerablockbusverwalters dar, wobei Letzterer eine Komponente des Speichersteuereinheitsbusverwalters ist und als eine Zustandsmaschine implementiert ist. Die symbolische Darstellung 4902 des Kamerabusverwalterblockes zeigt an, dass der Kamerabusverwalterblock zwei Eingabesignale empfängt und zwei Ausgabesignale ausgibt. Die Eingabesignale umfassen ein Block-Ein-Signal 4904 und ein Anforder-Signal 4906. Der Kamerabusverwalterblock gibt ein Gewähr-Signal 4908 und ein Block-Aus-Signal 4910 aus. Eingabe- und Ausgabesignale sind Einzelsignalleitungssignale, wobei jedes zu einem bestimmten Zeitpunkt einen der zwei binären Werte „0” und „1” befördert. Der Zustand eines Kamerabusverwalterblockes ist somit durch vier boolesche Ausdrücke oder Mengen ausdrückbar, die mit Werten korrespondieren, welche momentan in den Kamerabusverwalterblock mittels der zwei Eingabesignalleitungen eingegebenen und mittels der zwei Ausgabesignalleitungen durch den Kamerabusverwalterblock ausgegeben werden. Der Zustand wird in jedem fastclk-Intervall neu ausgewertet und kann sich ändern.
  • Die 49A stellt auch ein Zustandsübergangsdiagramm bereit, welches die Charakteristika der Vorgänge des Kamerabusverwalterblockes darstellt. In dem Zustandsübergangsdiagramm 4912 verkörpert jeder Kreis, wie beispielsweise Kreis 4914, einen unterschiedlichen stabilen Zustand des Kamerabusverwalterblockes. Die geraden Pfeile, die die Zustände verbinden, stellen Zustandsübergange dar, so wie der Zustandsübergangspfeil 4916, wohingegen die geschwungenen Pfeile, wie beispielsweise der geschwungene Pfeil 4918, keinen Zustandsübergang darstellen, oder in anderen Worten, einen Kamerabusverwalterblock darstellen, der in einem einzelnen Zustand über zwei oder mehrere fastclk-Intervalle bleibt. Jeder Zustand, so wie Zustand 4914, ist durch einen Namen bezeichnet, wie beispielsweise durch den Name „Anhängig” der Zustand 4914 bezeichnet ist, und umfasst auch einen Hinweis auf die momentane Ausgabe der zwei Ausgabesignale. Zum Beispiel in dem Zustand Anhängig 4914 gibt der Kamerabusverwalterausgabeblock „0” an die Gewähr-Ausgabe und „1” an die Block-Aus-Ausgabe aus. Zustandsübergänge finden für spezifische Werte eines oder der beiden Eingabesignale statt. Zum Beispiel geht der Kamerabusverwalterblock von dem Zustand 4920 in den Zustand 4922 über, wenn das Anforder-Eingabesignal 4906 Tief ist oder wenn, wie in 49A gezeigt, der boolesche Ausdruck „¬Anforder” den Wert TRUE hat. Wenn ein Zustandsübergang in einem einzelnen booleschen Ausdruck spezifiziert ist, so findet der Zustandsübergang als ein Ergebnis von einer bestimmten Werteingabe mittels einer einzelnen Eingabesignalleitung statt. Wenn ein Zustandsübergang durch einen zweifach variablen booleschen Ausdruck spezifiziert ist, dann müssen beide Eingabesignalleitungen spezifische Werte für den sich zu ereignender Zustandsübergang aufweisen.
  • Ein Kamerabusverwalterblock kann sich in jedem beliebigen der drei folgenden Zustände befinden: (1) in einem Ruhe-Zustand 4922, (2) in einem Anhängig-Zustand 4914 und (3) in einem Gewähr-Zustand 4920. In dem Ruhe-Zustand fordert die damit verbundene Kamera keine Speicherkontrolle an, um einen Speicherzugriffsvorgang auszuführen. In dem Anhängig-Zustand überträgt die damit verbundene Kamera Daten zum Schreiben in den Speicher, ist aber gegen die Erlangung der Speicherkontrolle durch eine andere Kamera oder den Videocodec blockiert. In dem Gewähr-Zustand ist die mit dem Kamerabusverwalterblock verbundene Kamera freigegeben, um auf den Speicher zuzugreifen.
  • Der Ausgangszustand eines Kamerabusverwalterblockes nach dem Einschalten ist „Ruhe” 4922, wobei der Kamerabusverwalterblock eine boolesche „0” an die Gewähr-Ausgabesignalleitung ausgibt und den entgegengesetzten Wert an die Block-Aus-Ausgabesignalleitung ausgibt, welchen er durch die Block-Ein-Eingabesignalleitung empfängt. Wenn die Anforder-Eingabesignalleitung Tief ist, bleibt der Kamerabusverwalterblock in dem Ruhe-Zustand 4922. Wenn die Anforder-Eingabesignalleitung auf Hoch übergeht oder den Wert „1” eingibt, geht der Kamerabusverwalterblock in den Gewähr-Zustand 4920 über 4926, falls die Block-Ein-Eingabesignalleitung Tief ist, oder geht in den Anhängig-Zustand 4914 über 4928, falls die Block-Ein-Eingabesignalleitung Hoch ist. In dem Ruhe-Zustand 4922 steht die mit dem Kamerabusverwalterblock verbundene Kamera momentan keine Speicheranforderung und keine andere Kamera stellt momentan eine Speicheranforderung. Wenn eine höher priorisierte Kamera eine Speichertransaktion angefordert hat, kann der momentan betrachtete Kamerabusverwalter nicht in den Gewähr-Zustand übergehen, sondern geht stattdessen in den Anhängig-Zustand über, um abzuwarten, bis keine höher priorisierte Kamera eine Speichertransaktion anfordert. Der Anhängig-Zustand 4914 stellt somit einen Zustand dar, in welchem die mit dem Kamerabusverwalter verbundene Kamera eine Speichertransaktion anfordert, aber die Speichertransaktion nicht freigegeben werden kann, weil eine höher priorisierte Kamera momentan eine Speichertransaktion mit dem Speicher ausführt. In dem Anhängig-Zustand gibt der Kamerabusverwalterblock den booleschen Wert „1” an die Block-Aus-Signalleitung aus, um niedriger priorisierte Kameras oder den Speichersequenzer daran zu hindern, die Gewährung des Speicherzugriffs zu erhalten, bis die mit dem Kamerabusverwalterblock verbundene Kamera eine Chance gehabt hatte, eine angeforderte Speichertransaktion auszuführen. Der Gewähr-Zustand 4920 stellt einen Kamerabusverwalterblockzustand dar, in welchem die verbundene Kamera freigegeben ist, Speichertransaktionen auszuführen. In dem Gewähr-Zustand 4920 ist die mit dem Kamerabusverwalterblock verbundene Kamera freigegeben, wie durch die Ausgabe von „1” durch den Kamerabusverwalterblock an das Gewähr-Signal 4908 angezeigt. Zu beachten ist, dass eine Kamera nicht länger als ein einzelnes fastclk-Intervall in dem Gewähr-Zustand 4930 bleiben kann. Folglich ist es den Kameras lediglich erlaubt, eine einzelne Dateneinheit an den Speicher zu übertragen, bevor sie die Speicherkontrolle an einen anderen momentan anfordernden Block abtreten.
  • Die 49B zeigt ein Zustandsübergangsdiagramm und eine symbolische Darstellung eines Speichersequenzerbusverwalterblockes innerhalb eines Speichersteuereinheitsbusverwalters, welcher eine Ausgestaltung der vorliegenden Erfindung darstellt. Die symbolische Darstellung 4920 für den Speichersequenzerbusverwalterblock zeigt, dass der Speichersequenzerbusverwalterblock zwei Eingabesignale empfängt, die zu denen identisch sind, welche der Kamerabusverwalterblock empfängt, und lediglich das Gewähr-Ausgabesignal ausgibt, anstatt sowohl das Gewähr-Ausgabesignal und das Block-Aus-Ausgabesignal, welche der Kamerabusverwalterblock ausgibt. Das Zustandsübergangsdiagramm 4942 für den Speichersequenzerbusverwalterblock ist deshalb einfacher als das Zustandsübergangsdiagramm für den Kamerabusverwalterblock. Der Speichersequenzerbusverwalterblock weist lediglich einen einzelnen Ruhe-Zustand 4944 in dem Zustandsübergangsdiagramm auf und bleibt bedeutender Weise über viele fastclk Intervalle in dem Gewähr-Zustand 4946. In Implementierungen mit vielfachen Speichersequenzern weisen alle außer dem letzten Speichersequenzerbusverwalterblock ein Block-Aus-Ausgabesignal und ein geringfügig unterschiedliches Zustandsübergangsdiagramm als das in 48B Gezeigte auf.
  • Die 49C veranschaulicht eine Implementierung des Speichersteuereinheitsbusverwalters innerhalb einer Speichersteuereinheit, welcher eine Ausgestaltung der vorliegenden Erfindung darstellt. Der Busverwalter umfasst eine Serie von Kamerabusuverwalterblöcken 49604962 und einen einzelnen Speichersequenzerblock 4964. Die mit den Kamerabusverwalterblöcken 49604962 verbundenen Kameras sind in absteigender Reihenfolge priorisiert gemäß der Reihenfolge der verbundenen Kamerabusverwalterblocke in der Sequenz der Kamerabusverwalterblöcke. Folglich hat die mit dem Kamerabusverwalter 4960 verbundene Kamera die höchste Priorität. Der mit dem Speichersequenzerbusverwalterblock 4964 verbundene Speichersequenzer hat daher die niedrigste Priorität. Allerdings, wie vorstehend diskutiert, kann der Speichersequenzer für viele fastclk-Intervalle in dem Gewähr-Zustand oder dem freigegebenen Zustand verbleiben, wohingegen die höher priorisierten Kameras den Speicher lediglich für ein einzelnes fastclk-Intervall kontrollieren können. Höher priorisierte Blöcke sind mit niedriger priorisierten Blöcken durch die Block-Aus-Ausgabesignalleitung des höher priorisierten Blockes und Block-Ein-Eingabesignalleitung des niedriger priorisierten Blockes verbunden. Wenn ein besonderer Block entweder in dem Anhängig- oder dem Gewähr-Zustand ist, sind alle niedriger priorisierten Blöcke verhindert, von dem Anhängig-Zustand in den Gewähr-Zustand überzugehen.
  • Die 50 veranschaulicht eine einfache Darstellung von zeitlichen Betrachtungen für einen in einer Speichersteuereinheit implementierten Speichersteuereinheitsbusverwalter, welche eine Ausgestaltung der vorliegenden Erfindung darstellt. In 50 stellt ein kompletter Umlauf um den Kreis 5002 ein pixclk-Intervall dar. Jedes Inkrement entlang des Kreises, wie beispielsweise das inkrement 5004 stellt ein fastclk-Intervall dar. Wenn sämtliche vier Kameras Daten in einer maximalen Datenübertragungsrate übertragen, überträgt jede Kamera eine Dateneinheit pro pixclk-Intervall oder, wie in 50, während der durch einen Vollkreis dargestellten Zeitspanne. Selbst wenn die Speichersteuereinheit in 50 eine Speicherübertragung im Namen einer Kamera in zwei fastclk-Intervallen ausführt, dann bleibt unabhängig von dem zeitlichen Ablauf oder der Reihenfolge der von den Kameras empfangenen Dateneinheiten wenigstens die Hälfte der Speichersteuereinheitsbandbreite, in 50 unschattiert dargestellt, für den Speichersequenzer oder den Videocodec erhältlich. In 50 ist gezeigt, dass eine Speicherübertragung in einem fastclk-Intervall stattfindet, so dass Dreiviertel des fastclk-Intervalls für Videocodec-Speichervorgänge erhältlich sind. Sowie das Vielfache n der fastclk-Intervalle pro pixclk-Intervall steigt, ist ein steigender Anteil an Speichersteuereinheitsbandbreite für den Videocodec erhältlich. Die Anzahl der fastclk Intervalle n innerhalb eines pixclk-Intervalls kann daher angepasst werden, um zwischen der Bedienung der Videocodec-Speicherzugriffsanforderungen und der Bedienung von Kamera-Speicherzugriffsanforderungen auszugleichen, sowie die Speichersteuereinheitstaktrate auf dem geringstmöglichen Niveau zu halten, um so wenig wie möglich Energie zu verbrauchen und auch sicherzustellen, dass die Speicherzugriffe nicht die maximale Zugriffsrate des Speichers überschreiten.
  • Die 5154 veranschaulichen schematische Diagramme für eine Speichersteuereinheit, welche eine Ausgestaltung der vorliegenden Erfindung darstellt. Die 51 bietet ein schematisches Diagramm für eine Speichersteuereinheit mit einer einzelnen Kamera, welche eine Ausgestaltung der vorliegenden Erfindung darstellt. In dieser Ausgestaltung findet sich ein einzelner Kamerablock 5102 zusätzlich zu dem Speichersequenzerblock 5104. Die Speichersteuereinheit ist durch ein fastclk-Signal 5106 angetrieben, welches n-fach schneller oszilliert als das pixclk-Signal 5108 der Kamera. Der Busverwalter weist einen Kamerabusverwalterblock 5110 und einen Speichersequenzerbusverwalterblock 5112 auf. In der in 51 gezeigten Ausgestaltung werden die Speichersteuereinheitssignale direkt mittels logischer Gatterschaltungen aus den Busverwalterausgabesignalen und in die Speichersteuereinheit eingegebenen Signalen generiert, anstatt durch einen separaten Kontrollmultiplexer. Ein erster Multiplexer 5114 sendet entweder Kameradaten oder Pufferspeicherdaten an den Speicher, in Abhängigkeit davon, ob der Kamerablock oder der Speichersequenzer momentan durch ein Gewähr-Signal von einem diesbezüglichen Busverwalterblock freigegeben ist. Der Kamerablock 5012 übersetzt die Kameraeingabesignale ls, fs und pixclk in x- und y-Koordinaten, die an einen Koordinatenmultiplexer 5120 ausgegeben werden 5116 und 5118, wobei der Koordinatenmultiplexer die Eingabekoordinaten an eine Adressübersetzungseinheit 5122 weiterleitet, die Speicheradressen generiert, welche die Adressübersetzungseinheit an den Speicher sendet. Der Speichersequenzerblock 5104 übersetzt x- und y-Eingabekoordinaten 5124 und 5126 in x- und y-Speicherkoordinaten 5128 beziehungsweise 5130.
  • Die 52 zeigt ein Schema, das eine Speichersteuereinheit mit vielen Kameras veranschaulicht, welche eine Ausgestaltung der vorliegenden Erfindung darstellt. In dieser Ausgestaltung sind viele Kamerablöcke 52025203 mit vielen Kamerabusverwalterblocken 5204 beziehungsweise 5205 verbunden.
  • Die 53 bietet ein Schema, das einen in eine Speichersteuereinheit gemäß den Ausgestaltungen nach den 5152 eingefügten Kamerablock veranschaulicht. Der Kamerablock umfasst einen Zuersthinein-zuerst-hinaus-Puffer („FIFO-Puffer”) 5308, in dem Informationseinheiten, die von verbundenen Videokameras eingegebenen wurden, vorübergehend für die Ausgabe in den Speicher gespeichert werden. Dieser FIFO-Puffer bietet eine ausreichende Elastizität im zeitlichen Ablauf einer Datenübertragung, um es dem Busverwalter zu ermöglichen, konkurrierende Anforderungen von vielen Kameras als auch von dem Speichersequenzer auszugleichen. In der in 53 gezeigten Ausgestaltung generiert der Kamerablock nur dann ein Anforderungssignal 5310, wenn der FIFO-Puffer annähernd voll ist. Ansonsten beugt sich der Kamerablock anderen Kamerablöcken und dem Speichersequenzerblock, insbesondere dem Speichersequenzer erlaubend, Videocodec-initiierte Speichertransaktionen im größtmöglichen Umfang auszuführen, aber dennoch sicherstellend, dass sämtliche Kameradaten rechtzeitig in den Speicher übertragen werden, um jeglichen Verlust an Kameradaten zu verhindern. In einer Ausgestaltung der vorliegenden Erfindung weist der FIFO-Puffer für jede Kamera Platz für das Speichern von vier Dateneinheit auf. Der Kamerablock detektiert auch redundante Daten in der Datenstromeingabe durch die Kamera und sendet ein UV-redundant-Signal 5312, wenn redundante Daten detektiert werden. Die Ausgabe von redundanten Daten durch eine Kamera wurde in dem vorhergehenden Abschnitt diskutiert. Dieses UV-redundant-Signal ermöglicht es, redundante Daten in einem von einer Kamera gesendeten Datenstrom fallenzulassen, anstatt diese in den FIFO-Puffer einzugeben, um einen unnötigen Energieverlust und eine Zuweisung von Speichersteuereinheitszyklen für die Übertragung von redundanten Daten in den Speicher zu verhindern. In alternativen Ausgestaltungen kann die FIFO-Warteschlange Einträge in für die Unterbringung von vielen Informationseinheiten ausreichenden Größen enthalten, welche bezüglich des FIFO-Eintrages als auch innerhalb der FIFO-Warteschlange angeordnet sind. In bestimmten Ausgestaltungen der vorliegenden Erfindung kann der Kamerablock auch die Reihenfolge der Informationseinheiten in dem Datenstrom mittels Umsortierens von empfangenen Informationseinheiten in der FIFO-Warteschlange umformen. Wie bereits beschrieben, kann eine Informationseinheit ein Byte, ein Wort oder eine andere binäre Informationseinheit festgelegter Größe sein.
  • In bestimmten Ausgestaltungen der vorliegenden Erfindung wird ein komplexerer inhaltsadressierbarer FIFO-Block („CAM FIFO”) verwendet. Der CAM FIFO-Puffer umfasst viele Spalten, wobei jede Spalte viele Einträge enthält und mit x- und y-Koordinaten, sowie mit Y-, U- oder V-Hinweisen und einem Zähler verbunden ist. Der CAM FIFO-Puffer ermöglicht ein Umsortieren der Kameraeingabe für die Ausgabe an den Speicher, sowie die Ausgabe von größeren Dateneinheiten, die ihrerseits jeweils viele Eingabedaten von Kameras enthalten. Als ein Beispiel kann der FIFO-Puffer implementiert sein, um 32 Bit-Worte auszugeben, obwohl der Kamerablock 8 Bit-Bildpunkte von der Kamera empfängt. In dieser Ausgestaltung ist das Anforderungssignal erhöht, wenn der FIFO-Puffer annähernd voll ist und wenn die nächste zu übertragende Spalte voll ist, wie intern durch den Zähler angezeigt, welcher mit der den maximalen Zählerwert aufweisenden Spalte verbunden ist, und wie durch ein verwendetes Lese-OK-Signal in Verbindung mit einem Freigabe- und einem Fast-voll-Signal, um, wie in 53 gezeigt, die Ausgabe auf das Anforderungssignal zu bestimmen.
  • Die 54 zeigt ein Schema für eine Schnittstelle zwischen einer Speichersteuereinheit und einem Speicher in einer Ausgestaltung der vorliegenden Erfindung. Die Schreibeingabe 5402 und die Auswahleingabe 5404 in den Speicher 5406 werden aus den Gewährsignalen 54085411 des Busverwalters und dem Schreibsignal, welches in den Speichersequenzer eingegeben 5412 wird, generiert.
  • Die in diesem Unterabschnitt diskutierten Ausgestaltungen der Speichersteuereinheit der vorliegenden Erfindung bieten somit eine Anzahl an Vorteilen für Videoverarbeitungssysteme. Wie oben diskutiert, bietet der Busverwalter eine gerechte Vermittlung ohne Engpass oder Datenverlust für viele Kameras, die Datenströme in einen Speicher eingeben, sowie für einen Videocodec, der von den Kameras eingegebene Daten verarbeitet. Videokameradaten werden durch die Speichersteuereinheit gefiltert, so dass Speichersteuereinheitszyklen nicht verschwendet werden, um redundante Daten in den Speicher zu übertragen, und so dass die Speicherbandbreite, die andernfalls für redundante Daten verschwendet werden würde, stattdessen für Videocodec-initiierte Speicherzugriffsvorgänge verwendet werden kann. Die Speichersteuereinheiten, die Ausgestaltungen der vorliegenden Erfindung darstellen, bieten eine einfache Schnittstelle zu dem Videocodec mittels eines Speicher-Untersystems, so dass zweidimensionale Daten, einschließlich Makroblöcken und Vektoren, zwischen dem Speicher und dem Pufferspeicher als ein Ergebnis von einzelnen hochrangigen Speichervorgängen ausgetauscht werden können. Die hohen Taktfrequenzen, die zum Verarbeiten von Eingabedaten von Kameras als auch zum Verarbeiten von Speicheranforderungen von dem Videocodec notwendig sind, können innerhalb der Speichersteuereinheit konzentriert werden, anstatt sich durch das Videocodec fortzupflanzen, wobei hierdurch sowohl die Energieverluste als auch die Kosten für die Planung und die Herstellung des Videocodec reduziert werden.
  • Speicher-Untersysteme der momentan diskutierten Familie von Speicher-Untersystemen können im Allgemeinen für eine Vielzahl von Anwendungen eingesetzt werden, bei denen eine oder mehrere Datenquellen gleichzeitig Datenströme durch eine Speichersteuereinheit-Datenstrom-Schnittstelle an den Speicher senden, während zur selben Zeit eine Rechenmaschine oder eine andere Vorrichtung Daten direktzugriffsartig aus dem Speicher liest und Daten an den Speicher sendet und insbesondere zweidimensionale Datenobjekte mit dem Speicher in einzelnen zweidimensionalen Direktzugriffsspeichervorgängen austauscht.
  • Unterabschnitt VI: Eine zweite Familie von Speicher-Untersystemen, welche einen zweiten Satz von Ausgestaltungen der vorliegenden Erfindung darstellen
  • Wie in den vorangegangenen Abschnitten diskutiert, werden Ausgestaltungen der vorliegenden Erfindung, die separate, mit standardmäßigen Speicherchips implementierte Speicherbanken bieten durch eine Speichersteuereinheit, die bei relativ hohen Taktraten arbeitet, um Speicheraustauschvorgänge zwischen Videokameras und dem Speicher und zwischen einen Videocodec und dem Speicher über einen Pufferspeicher auszuführen, ermöglicht. Ein erheblicher Datenkommunikationsaufwand stellt sich ein durch den Bedarf einer Serialisierung und Deserialisierung von Daten zwischen dem Pufferspeicher und dem Speicher und durch die Notwendigkeit, Daten über eine Anzahl von Datenkommunikationsschnittstellen hinweg auszutauschen. Des Weiteren, weil standardmäßige Speicherchips zu einem bestimmten Zeitpunkt lediglich eine einzelne Speicheranforderung bedienen können, arbeitet die Speichersteuereinheit bei einer relativ hohen Frequenz, um ausreichende Busverwalterzyklen bereitstellen zu können, um zwischen Speicherzugriffen unter gleichzeitig sendenden Kameras und dem Videocodec gerecht vermitteln zu können.
  • Ein neuer, in diesem Unterabschnitt offenbarter Typ, Vielfach-Zugriffsspeicher genannt, kann in videoverarbeitenden Systemen und in vielen anderen Arten von rechnergestützten Systemen verwendet werden, um einen parallelen Zugriff auf viele auf den Speicher zugreifende Vorrichtungen zu bieten, ohne einer Vermittlung und/oder eines Multiplexens zu bedürfen. Dieser Vielfach-Zugriffsspeicher kann ein weitaus effizienteres Datenspeichermedium als die traditionellen Direktzugriffsspeicher bereitstellen und kann maßgeschneidert werden, um Zugriffsraten, Vorgangsgeschwindigkeiten und Kapazitäten, die exakt die Anforderungen eines videoverarbeitenden Systems oder eines anderen Typs von rechnergestützten Systemen erfüllen, zur Verfügung zu stellen.
  • Die 55 veranschaulicht den Betrieb eines Vielfach-Zugriffsspeichers, welcher eine Ausgestaltung der vorliegenden Erfindung darstellt. In einem videoverarbeitenden System, so wie die in den vorherigen Unterabschnitten diskutierten videoverarbeitenden Systeme, ist der Speicher 5502 in viele Partitionen 55045507 partitioniert, wobei jede Partition mit einer bestimmten Videokamera 55085511 verbunden ist. Der Speicher kann zusätzliche Partitionen 5512 für die Speicherung von Daten aufweisen, die ausschließlich für den Videocodec bestimmt sind. Jede Kamera kann gleichzeitig eine Linie eines Datenübertragungsblockes 55145517 in den Speicher schreiben, ohne andere Kameras zu behindern und ohne von anderen Kameras behindert zu werden. Zur gleichen Zeit kann der Videocodec auf jeden Bereich des Speichers, in den momentan nicht durch eine Kamera geschrieben wird, wie beispielsweise einen Makroblock 5518 zugreifen, um zu schreiben oder zu lesen. In 55 wird der Makroblock 5518 von dem Speicher in einen korrespondierenden Makroblock 5520 im Pufferspeicher 5522 geschrieben. Somit unterstützt der Vielfach-Zugriffsspeicher den gleichzeitigen Zugriff durch jede der vielen Videokameras sowie durch einen Videocodec mittels eines Pufferspeichers. Die einzige Einschränkung des vielfachen parallelen Zugriffs ist, dass auf eine einzelne Linie innerhalb eines in dem Speicher gespeicherten Datenübertragungsblockes nicht gleichzeitig von mehreren Instanzen zugegriffen werden kann.
  • Die 56 veranschaulicht abstrakt den Betrieb des Vielfach-Zugriffsspeichers, welcher eine Ausgestaltung der vorliegenden Erfindung darstellt. Der Speicher umfasst ein Gitter 5602 von Speicherelementen, wobei jedes Element, auch Einheit oder Zelle genannt, ein einzelnes Bit speichert. Viele Gitter können innerhalb eines Speicher-Untersystems als viele Ebenen kombiniert werden, wobei die Informationseinheiten, wie Bytes, über die Ebenen verteilt sind oder nach einem komplexeren Verteilungsmuster verteilt sind. In einem videodatenverarbeitenden System sind die Linien der Datertverarbeitungsblocke in horizontalen Zeilen des Gitters gespeichert, so wie die in 56 abgedunkelt dargestellte horizontale Reihe 5604. Die Kameradaten werden durch einen Reihendemultiplexer 5608 mittels eines sequenziellen Verschiebevorgangs, wie unten diskutiert, in den Speicher eingegeben. Wie oben dargelegt, sind Kameradaten ein serieller Strom von Informationseinheiten innerhalb von Linien von Datenübertragungsblöcken, was durch die Verwendung der von einer Kamera bereitgestellten ls- und fs-Signale als Informationseinheiten innerhalb von Linien von Videodatenübertragungsblöcken aufgefasst werden kann. Der Reihendemultiplexer 5608 demultiplext den Kameradatenstrom in Reihen von Datenverarbeitungsblocken, wobei er jede einzelne Reihe während der Speicherschreibvorgänge mittels wiederholter, sequenzieller Verschiebevorgänge seriell auffüllt Auf den Speicher kann auch in einer direkten Art über einen Spaltendemultiplexer 5610 und einen Reihendemultiplexer 5612 zugegriffen werden, so dass beide zusammen einen zweidimensionalen Direktzugriff auf den Vielfach-Zugriffsspeicher bieten. Wie in 56 gezeigt, wird eine x-Koordinate 5614 in den Spaltenmultiplexer 5610 und eine y-Koordinate in den Zeilenmultiplexer 5612 eingegeben, um eine bestimmte Speicherzelle 5620 für einen Lese- oder Schreibzugriff auszuwählen. Folglich unterstützt der Speicher einen zweidimensionalen Direktzugriff durch einen Videocodec in einer Anwendung als videoverarbeitendes System sowie einen im Wesentlichen eindimensionalen Schreibzugriff, verwendet für das Schreiben von Datenübertragungsblocklinien von Datenstromeingaben von Kameras in den Speicher. Da für jede Kamera in einem videoverarbeitenden System mit vielen Kameras unterschiedliche und separate Speicherpartitionen und Zeilendemultiplexer bereitstehen, behindern sich die Kameras nicht gegenseitig und können gleichzeitig in den Speicher schreiben. Der Videocodec, der auf den Speicher mittels der Spalten- und Zeilenmultiplexer 5614 und 5612 zugreift, kann auf jeden Bereich des Speichers zugreifen, vorausgesetzt, dass in den zuzugreifenden Bereich nicht gleichzeitig durch eine Kamera geschrieben wird. Ein gleichzeitiger Zugriff auf eine bestimmte Speicherzelle durch eine Kamera und den Videocodec kann durch ein Untersystem zur Kollisionserkennung verhindert werden oder alternativ durch einen Videocodec verhindert werden, wobei dieser die Kameraeingabeaktivität überwacht und sicherstellt, dass keine Zugriffe auf Videodatenübertragungsblöcke gerichtet werden, in die momentan Kameradatenströme eingegeben werden.
  • Die 57 veranschaulicht ein Vielebenen-Speichersystem gemäß einer Ausgestaltung der vorliegenden Erfindung. In 57 entspricht jede Ebene, so wie Ebene 5702, einer Bank 5704 von Speicherebenen einem Speichergitter, wie beispielsweise dem in 56 gezeigten Speichergitter 5602. Jede der Kameras und der Videocodec greifen mittels eines Dekodierers 5706 und eines Datenkanals 5708 auf den Speicher zu. Ein gemeinsames, von dem Dekodierer 5706 ausgegebenes Signal steuert die Speicherzugriffsvorgänge in sämtlichen Speicherebenen. Im Gegensatz dazu werden die von dem Datenkanal eingegebenen Daten über die Speicherebenen hinweg verteilt. In der in 57 gezeigten Ausgestaltung wird jedes Bit eines Bytes von Daten an eine separate Speicherebene gesendet und innerhalb dieser gespeichert. Somit zeigt 57 acht Speicherebenen, in die die Bits eines jeden empfangenen Bytes geschrieben werden und aus denen die Bits für jedes von dem Speicher gesendete Byte abgerufen werden. Wie bereits oben erwähnt, können von Bytes verschiedene Informationseinheiten durch den Vielfach-Zugriffsspeicher empfangen werden und gemäß diversen Verteilungsschemata, inklusive komplexen verzahnten Schemata, verteilt werden.
  • Die 58 veranschaulicht die Partitionierung der mit jeder Kamera verbundenen Speicherpartition gemäß den Ausgestaltungen der vorliegenden Erfindung in einem Vielfach-Zugriffsspeicher. In 58 ist die mit einer ersten Kamera verbundene Speicherpartition 5802 weitergehend in Speicherbereiche der Größe von Datenübertragungsblöcken, wie beispielsweise den Speicherbereich 5804, partitioniert. Die in dem Speicher aufeinanderfolgend sortierten Datenübertragungsblöcke werden durch das Speichersystem als ein FIFO-Puffer behandelt. Diese Datenübertragungsblöcke bilden im Wesentlichen eine kreisförmige FIFO-Warteschlange 5806, in die kontinuierlich Videokameradaten strömen. Ein Aktueller-Datenübertragungsblock-Zeiger 5808 markiert den aktuellen Datenübertragungsblock innerhalb der Speicherpartition, an den die Kamera momentan Daten sendet oder als nächstes senden will. Der Datenübertragungsblockzeiger wird durch die Detektion der Kanten in dem von der Kamera an den Speicher ausgegebenen fs-Signal erhöht.
  • Die 59 veranschaulicht das Schreiben eines Datenübertragungsblockes in einen Vielfach-Zugriffsspeicher gemäß diversen Ausgestaltungen der vorliegenden Erfindung. In 59 ist eine zweidimensionale Darstellung von Datenübertragungsblockdaten 5902 als geradliniges Gitter wiedergegeben, wobei das Gitter durch einen Spaltenindex x und einen Zeilenindex y indiziert ist. Die Daten werden in einer gespiegelten Weise in den Vielfach-Zugriffsspeicher 5904 geschrieben, wobei, wie in 59 gezeigt, der Spaltenindex x invertiert wird. Im unteren Teil von 59 sind die ersten vier Datenübertragungsuerschiebevorgänge während der Übertragung einer Zeile von Daten in den Vielfach-Zugriffsspeicher veranschaulicht. Eine erste Dateneinheit 5906 in der Zeile wird in eine erste Datenspeichereinheit 5908 der korrespondierenden Zeile des Vielfach-Zugriffsspeichers übertragen. Eine nächste Dateneinheit 5910 wird in ein erstes Datenspeicherelement 5908 der Speicherzeile übertragen, wobei der in diesem ersten Speicherelement abgelegte Wert gleichzeitig an eine zweite Datenspeichereinheit 5912 innerhalb der Zeile übertragen wird. In anderen Worten, jede Dateneinheit wird mittels eines Verschiebevorgangs eingegeben, wobei die gesamte Zeile des Vielfach-Zugriffsspeichers als ein sehr langes Verschieberegister arbeitet. Jeder darauffolgende Datenwert wird in die erste Datenspeichereinheit der Speicherzeile übertragen, wobei sämtliche, in der Zeile bereits gespeicherten Datenwerte um eine Position nach rechts verschoben werden. Dies erzeugt eine Spiegelung eines Datenübertragungsblockes in dem Vielfach-Zugriffsspeicher. Der Vielfach-Zugriffsspeicher enthält Zeilen von ausreichender Größe, um Videodatenübertragungsblöcke mit maximaler Breite unterbringen zu können. Engere Videodatenübertragungsblöcke können den dem Vielfach-Zugriffsspeicher durch die Verwendung von weniger Verschiebevorgängen gespeichert werden. Die Videodatenübertragungsblöcke können mittels Verschiebens der Videodatenübertragungsblöcke aus der entgegengesetzten Seite des Speichers durch zusätzliche Verschiebevorgänge Zeile für Zeile aus dem Vielfach-Zugriffsspeicher gelesen werden. Dieser auf Verschiebungen basierende Lesevorgang eines Videodatenübertragungsblockes kann beispielsweise verwendet werden, um dekomprimierte Videodaten zur deren Darstellung an eine Anzeigevorrichtung zu senden.
  • Als nächstes wird eine Implementierung des in Bezug auf die 5559 oben diskutierten Vielfach-Zugriffsspeichers bereitgestellt. Die 60 veranschaulicht einen Signalinwerter. Die symbolische Darstellung eines Signalinverters 6002 ist an der Mitte der 60 abgebildet. Ein Signalinverter wandelt ein digitales Eingabesignal „1” in „0” um und wandelt ein digitales Eingabesignal „0” in „1” um. Ein Signalinverter kann durch den Einsatz von zwei komplementären Metalloxidhalbleitern („CMOS”), wie in dem Schaltbild 6004 der 60 gezeigt, implementiert werden. Ein p-Typ-Transistor 6006 ist mit einem n-Typ-Transistor 6008 seriell verbunden. Die Quelle des p-Typ-Transistors ist mit einer mit dem booleschen Wert „1” 6010 korrespondierenden Spannung verbunden und die Senke des n-Typ-Transistors ist mit der Erdung 6012 verbunden. Die Eingabe des booleschen Wertes „0” 6014 aktiviert den p-Typ-Transistor 6006 und deaktiviert den n-Typ-Transistor 6008, was zu einer Ausgabe 6016 des booleschen Wertes „1” führt. Analog dazu führt die Eingabe des booleschen Wertes „1” zu einer Ausgabe des booleschen Wertes „0”, wie in dem Schaltbild 6020 in 60 gezeigt.
  • Die 61 veranschaulicht ein Schaltbild einer Speichereinheit oder einer Speicherzelle für einen Vielfach-Zugriffsspeicher, welcher eine Ausgestaltung der vorliegenden Erfindung darstellt, mitsamt einer symbolischen Darstellung der Speicherzelle. Die symbolische Darstellung 6102 der Speicherzelle zeigt, dass die Speicherzelle fünf Eingabesignale empfängt: (1) ¬Ain, das binäre Komplement eines Wertes, der für die Speicherung in der Speicherzelle durch einen Direktzugriffsspeicherzugriffsvorgang eingegeben wird, (2) SIn, ein Wert, der in den Zeilendemultiplexer 5608 in 56 eingegeben wird für eine Verschiebevorgang-basierte Eingabe in die Speicherzelle, (3) Verschiebe1- und Verschiebe2-Signale 61026107, welche verwendet werden, um einen in die Signalleitung SIn eingegebenen Wert in die Speicherzelle zu verschieben, (4) ASchreib, das das Schreiben des in der Signalleitung ¬Ain 6104 eingegebenen Wertes in die Speicherzelle steuert und (5) AusRd 6109, das die Ausgabe der Inhalte der Speicherzelle an eine Ausgabesignalleitung 6112 steuert. Die Speicherzelle gibt kontinuierlich die momentan gespeicherten Werte an die Ausgabesignalleitung SAus 6110 aus. Wie in der symbolischen Darstellung der Speicherzelle 6102 in 61 gezeigt, werden die Eingabesignale Verschiebe1, Verschiebe2, ASchreib und AusRd durch die Speicherzelle ohne Änderung ausgegeben. Ein schematisches Diagramm 6120 für die Speicherzelle ist ebenfalls in 61 abgebildet. Das Setzen der Signalleitung AusRd auf Hoch schaltet den Transistor T4 6122 ein und führt in der bistabilen Kippschaltung 6131 zu einer Ausgabe der in der Speicherzelle gespeicherten Daten an eine Ausgabesignalleitung „Aus” 6124. Die Eingabe eines booleschen Wertes „1” in die Signalleitung „Verschiebe1” 6125 aktiviert den Transistor T1 6126, um den Wert in der Signalleitung SIn 6127 in einen Inverter I1 6128 einzugeben. Die Eingabe eines booleschen Wertes „1” in die Signalleitung „Verschiebe2” 6129 aktiviert den Transistor T2 6130, um die invertierte SIn-Eingabe an das Flip-Flop 6131 auszugeben, das die Inverter I2 6132 und I3 6133 umfasst. Das Flip-Flop speichert das Komplement eines Eingabewertes auf unbestimmte Zeit, ohne einer stufenweise Auffrischung zu bedürfen. Folglich bildet das Flip-Flop eine statische Bit-Speichereinheit. Im Gegensatz dazu ist der Inverter I1 6128 auf eine dynamische Ladungsübertragung angewiesen, um das Eingabesignal SIn zu invertieren und das invertierte Signal N2 an das Flip-Flop 6131 zu übertragen. In einem Zyklus eines Speicherschreibverschiebevorgangs wird der Transistor T1 zunächst durch die Eingabe einer „1” von Verschiebe1 aktiviert, um das Signal SIn in den Inverter I1 einzugeben, und dann deaktiviert oder geöffnet, indessen der Transistor T2 darauffolgend aktiviert wird, um das invertierte Signal SIn von dem Inverter I1 an das Flip-Flop 6131 zu übertragen. Die Zeitspanne des Verschiebevorgangs ist ausreichend kurz, so dass der in den Inverter I1 eingegebene Wert sich nicht auflöst, bevor die Ausgabe des Komplementes des Wertes an das Flip-Flop erfolgt ist. Das Eingabesignal ASchreib 6134 aktiviert oder schließt den Transistor T3 6135, um den Wert des Signals ¬Ain 6136 in das Flip-Flop 6131 einzugeben. Die Kameradaten werden mittels der Eingaben SIn, Verschiebe1 und Verschiebe2 in die Speicherzelle geschrieben und mittels der Eingaben ASchreib, AusRd und ¬Ain in die Speichereinheit des Videocodec geschrieben und von dort abgerufen.
  • Die 62A–C veranschaulichen das Verschieben von Daten in eine Speicherzelle eines Vielfach-Zugriffsspeichers, welcher eine Ausgestaltung der vorliegenden Erfindung darstellt. Anfänglich, wie in 62A gezeigt, speichert die Speicherzelle den booleschen Wert „0” in dem Flip-Flop 6202. Ein boolescher Wert „1” wird gerade über die Eingabesignalleitung SIn 6204 eingegeben. Wie in 62B gezeigt, ist die Eingabesignalleitung Verschiebe1 6206 erhöht, um den Transistor T1 zu aktivieren und den Eingabewert „1” von der Leitung SIn an den Inverter I1 6207 weiterzuleiten. Als nächste, wie in 62C gezeigt, ist die Eingabesignalleitung Verschiebe1 erniedrigt, um den Transistor T1 6208 zu deaktivieren, und die Eingabesignalleitung Verschiebe2 6210 ist erhöht, um den Transistor T2 6212 zu aktivieren und den von dem Inverter I1 ausgegebenen booleschen Wert „0” in das Flip-Flop 6214 einzugeben, wo der Eingabewert „0” nochmals invertiert und als boolescher Wert „1” gespeichert wird. Zu beachten ist, dass wenn in 62B eine zweite Speicherzelle rechts neben der veranschaulichten Speicherzelle angeordnet wäre, wobei die SIn-Eingabe der zweiten Speicherzelle mit der SAus-Ausgabe 6216 der veranschaulichten Speicherzelle verbunden wäre und Verschiebe1 und Verschiebe2 der veranschaulichten Speicherzelle mit Verschiebe1 und Verschiebe2 der zweiten Speicherzeile direkt verbunden wären, so würde der aktuelle Wert in der veranschaulichten Speicherzelle bei dem Verschiebevorgang in die zweite Speicherzelle zum Speichern verschoben werden. Somit generiert das Zusammenschalten von Speicherzellen in einer Zeile ein Verschieberegister.
  • Die 63A–C veranschaulichen das Schreiben eines booleschen Wertes „0” in eine Speicherzelle, die momentan einen booleschen Wert „1” speichert, gemäß den Ausgestaltungen der vorliegenden Erfindung. Die 63A–C verwenden dieselben Konventionen bezüglich der Veranschaulichung wie sie in den 62A–C verwendet werden.
  • Die 64A–B veranschaulichen die Ausgabe des Wertes, der momentan in einer Speicherzelle eines Vielfach-Zugriffsspeichers gespeichert ist, an eine Ausgabesignalleitung gemäß den Ausgestaltungen der vorliegenden Erfindung. In 64A speichert die Speicherzelle momentan einen booleschen Wert „1” 6402. Eine Erhöhung der AusRd-Signalleitung 6404, wie in 64B gezeigt, aktiviert den Transistor T4 6406 und gibt den gespeicherten booleschen Wert „1” an die Ausgabesignalleitung Aus 6408 aus.
  • Die 65A–B veranschaulichen das Schreiben eines Wertes in eine Speicherzelle, welche eine Ausgestaltung der vorliegenden Erfindung darstellt, über zwei Eingabesignalleitungen. Wie in 65A gezeigt, speichert die Speicherzelle momentan einen booleschen Wert „0” 6502. Die Eingabe eines booleschen Wertes „1” in die Signalleitung ASchreib 6504 und die Eingabe eines booleschen Wertes „0” in die Signalleitung ¬Ain 6506 führen zur Speicherung des booleschen Wertes „1” 6508 in der Speicherzelle.
  • Die 66A–B veranschaulichen die Implementierung eines 4×4 Speicherfeldes unter Verwendung von 16 Speicherzellen der in 61 veranschaulichten Art und eine symbolische Darstellung des 4×4 Speicherfeldes. In 66A sind 16 Speicherzellen, einschließlich der Speicherzelle 6602, des in 61 gezeigten Typs in einem zweidimensionalen Gitter angeordnet, um ein 4×4 Speicherfeld bereitzustellen. Jede Speicherzelle speichert ein Bit an Information. Wie in Bezug auf 56 oben diskutiert, kann jede Zeile des 4×4 Feldes durch eine Serie von vier Verschiebevorgängen, wie in Bezug auf 59 diskutiert, sowie auch durch einen zweidimensionalen Direktzugriff, wie in Bezug auf 56 diskutiert, geschrieben werden. Die Daten werden während eines Direktschreibzugriffs in die ¬Ain-Eingabe der Speicherzeile eingegeben. Auf eine Speicherzelle wird deshalb während eines Direktzugriffsschreibvorgangs individuell zugegriffen. Analog dazu gibt die Aus-Ausgabe einer bestimmten Speicherzelle während eines Direktzugriffslesevorgangs einen Wert aus. In 66A sind die ¬Ain-Eingaben gezeigt als mit einem zweidimensionalen Gitter von mit „Axy” bezeichneten Eingabesignalleitungen verbunden, wobei x und y die Koordinaten der Speicherzelle innerhalb des 4×4 Feldes sind, und die Aus-Ausgaben sind mit einem zweidimensionalen Gitter von mit „Yxy” bezeichneten Eingabesignalleitungen verbunden, wobei x und y die Koordinaten der Speicherzelle innerhalb des 4×4 Feldes sind. Die 66B zeigt eine symbolische Darstellung des 4×4 Speicherzellenfeldes. Das Speicherzellenfeld weist Wr- und Rd-Eingaben, die mit den ASchreib- und AusRd-Eingaben der ersten Speicherzelle in jeder Zeile verbunden sind, und φ1- und φ2-Eingaben, die mit den Verschiebe1- und Verschiebe2-Eingaben der ersten Speicherzelle in jeder Zelle verbunden sind, auf, wobei diese an jede Speicherzelle in der Zeile durchgegeben werden.
  • Die 67 veranschaulicht ein schematisches Diagramm eines größeren Feldes gemäß den Ausgestaltungen der vorliegenden Erfindung, basierend auf 4×4 Speicherfeldern, wie beispielsweise das in 66A veranschaulichte 4×4 Speicherfeld. Der Zeilendekodierer 6702 und die Demultiplexer 6730 und 6731 arbeiten zusammen als Zeilendemultiplexer 5608 in 56. Der Spaltendekodierer 6704 und der Zeilendekodierer 6706 arbeiten zusammen als Spalten- und Zeilendemultiplexer 5614 und 5612 in 56. Die Ausgabewerte werden von den Speicherzellen jeder Zeile in Ausgabesammelsignalleitungen YL0 6708 und YL1 6710 gesammelt. Die Ausgabe einer bestimmten Speicherzelle innerhalb einer Zeile wird von einer gemeinsamen Ausgabesammelsignalleitung für diese Zeile gelesen. Ein 2×2 Block von Dekodierungsblöcken mit zweidimensionalem Zugriff („2D-Dekodierung”) 67206723 wird durch den Zeilendekodierer 6706 und den Spaltendekodierer 6704 angesteuert, um passende Wr- und Rd-Signale an das 4×4 Feld auszugeben. Zu beachten ist, dass zu jedem Zeitpunkt lediglich eine einzelne Zeile des in 67 gezeigten Vielfach-Zugriffsspeichers für ein auf Verschiebevorgängen basierendes Schreiben durch den Zeilendekodierer 6702 und die Demultiplexer 6730 und 6731 ausgewählt ist. Wie in Bezug auf 56 diskutiert, führt der einen Zeilendekodierer 6702 und die Demultiplexer 6730 und 6731 aufweisende Zeilendemultiplexer somit ordnungsgemäß auf Verschiebevorgängen basierende Schreibvorgänge mittels Dekodierens von von einem Kamerablock einer Speichersteuereinheit gelieferten x- und y-Koordinaten und mittels eines abwechselnden Erhöhens und Erniedrigens der Eingabesignale φ1 6736 und φ2 6737 innerhalb eines jeden Intervalls von zwei aufeinanderfolgenden pixclk-Uhrsignalen aus. Die 67 soll zur Veranschaulichung dienen, dass eine große Anzahl an Speicherzellen miteinander verschaltet sein kann, um beliebig große, in 57 veranschaulichte Speicherebenen zu bilden, um einen Vielfach-Zugriffsspeicher zu implementieren, der gleichzeitig einen auf Schieberegistern basierenden Schreibzugriff durch viele Kameras und einen Direktzugriff durch einen Videocodec einer Anwendung für ein videoverarbeitendes System ermöglicht.
  • Die 68 veranschaulicht ein Schaltbild für die in dem Speicherfeld in 67 veranschaulichten Dekodierungsblöcke mit zweidimensionalem Zugriff als eine Ausgestaltung der vorliegenden Erfindung. Jeder Dekodierungsblock mit zweidimensionalem Zugriff gibt Wr- und Rd-Signale an ein korrespondierendes 4×4 Feld aus. Falls die Ausgabe von Spalten und Zeilen durch den Spaltendekodierer (6704 in 67) und Zeilendekodierer (6706 in 67) mit den Indices der 2D-Kodierung übereinstimmen, so gibt die 2D-Kodierung ein Rd-Signal aus, wenn die Lese-Eingabe Hoch ist, und gibt ein Wr-Signal aus, wenn die Schreib-Eingabe Hoch ist.
  • Die 69 veranschaulicht eine Speichersteuereinheit, welche sich an einen oben in Bezug auf die 6568 diskutierten Vielfach-Zugriffsspeicher anschließt und welche eine Ausgestaltung der vorliegenden Erfindung darstellt. Wie bei der in den 48A–H veranschaulichten Speichersteuereinheit, umfasst eine Speichersteuereinheit 6902, die sich an einen Vielfach-Zugriffsspeicher 6904 anschließt, einen mit jeder Kamera verbundenen Kamerablock 69066908 und einen mit dem Videocodec verbundenen Speichersequenzerblock 6910. Wie bei der zuvor beschriebenen Speichersteuereinheit, gibt jeder Kamerablock in dem Speichersequenzerblock Daten, zweidimensionale Adressen und ein Taktsignal aus. Allerdings benutzt die in 69 gezeigte Speichersteuereinheit weder einen Busverwalter noch Multiplexer, stattdessen werden die Ausgabesignale direkt in die Dekodierer 69126915 des Vielfach-Zugriffsspeicher weitergeleitet. Die Kameradaten können deshalb direkt in den Speicher übertragen werden, ohne Vermittlung oder Multiplexen, und die Daten können über den Speichersequenzer mit dem Pufferspeicher ausgetauscht werden, ohne Vermittlung oder Multiplexen. Der Videocodec kann die von den Kameras verwendeten Aktueller-Datenübertragungsblock-Zeiger überwachen, um sicherzustellen, dass der Videocodec keine Speicherzugriffsvorgänge erteilt, die mit Speicherzugriffsvorgängen der Kameras kollidieren, oder in alternativen Ausgestaltungen der vorliegenden Erfindung kann eine einfache Schaltung zur Kollisionserkennung in die Speichersteuereinheit eingefügt werden, um sicherzustellen, dass von dem Speichersequenzer initiierte Speicherzugriffsvorgänge nicht mit Schreibzugriffsvorgängen der Kameras kollidieren.
  • Obwohl die vorliegende Erfindung mittels bestimmter Ausgestaltungen beschrieben worden ist, bedeutet dies nicht, dass die Erfindung auf diese Ausgestaltungen beschränkt ist. Modifikationen im Sinne der erfindungsgemäßen Grundidee werden für den Fachmann naheliegend sein. Beispielsweise können eine Speichersteuereinheit und ein Vielfach-Zugriffsspeicher, die Ausgestaltungen der vorliegenden Erfindung darstellen, in einer beliebigen der zahlreichen Sprachen zur Spezifizierung der Gestaltung von integrierten Schaltungen, einschließlich VHDL und Verilog, kodiert sein. Die Bedeutung der binären Signale darf willkürlich zugewiesen werden und unterschiedliche Ausgestaltungen der vorliegenden Erfindung können unterschiedliche Konventionen zur Signalkodierung einsetzen. Gemäß den verschiedenen Ausgestaltungen der vorliegenden Erfindung können Speicher-Untersysteme in beliebiger Größe hergestellt werden. Die Speicher-Untersysteme sind im Rahmen einer Anwendung für Videosysteme diskutiert worden, können aber auch in anderen Anwendungen verwendet werden, die gleichzeitig das Schreiben von Datenströmen in einen Speicher und einen zweidimensionalen Direktzugriff auf diesen Speicher unterstützen. Eine beliebige der zahlreichen Herstellungstechnologien für integrierte Schaltungen kann eingesetzt werden, um diverse Ausgestaltungen der vorliegenden Erfindung zu implementieren. Zahlreiche alternative Gestaltungen der Komponenten für die integrierte Schaltung und das Speicher-Untersystem können entworfen werden, um die Speicher-Untersysteme, die Ausgestaltungen der vorliegenden Erfindung darstellen, zu implementieren.
  • Zum Zwecke der Erklärung wurde eine spezifische Nomenklatur in der vorangehenden Beschreibung verwendet, um ein gründliches Verständnis der Erfindung zu liefern. Es ist jedoch für einen Fachmann offensichtlich, dass die spezifischen Details nicht benötigt werden, um die Erfindung auszuführen. Die vorangehenden Beschreibungen von spezifischen Ausführungsformen der vorliegenden Erfindung wurden zum Zwecke der Veranschaulichung und Beschreibung präsentiert. Sie sind nicht dazu bestimmt, erschöpfend zu sein oder die Erfindung auf die genau offenbarten Formen zu beschränken. Viel Modifikationen und Variationen sind in Anbetracht der obigen Lehren möglich. Die Ausführungsformen werden gezeigt und beschrieben, um die Prinzipien der Erfindung und ihre praktischen Anwendungen am besten zu erklären, um es damit anderen Fachleuten zu ermöglichen, die Erfindung und ihre verschiedenen Ausführungsformen mit verschiedenen Modifikationen, die geeignet sind zur besonderen betrachteten Verwendung, zu nutzen. Es ist beabsichtigt, dass der Umfang der Erfindung durch die folgenden Ansprüche und ihre Äquivalente definiert wird:

Claims (27)

  1. Speicher-Untersystem, umfassend: einen Speicher und eine Speichersteuereinheit, – die eine oder mehrere Datenstromschnittstellen aufweist, die – eine Direktzugriffsschnittstelle auf individuelle Speicherzellen und auf zweidimensionale Speicherregionen aufweist, – die zwischen den Datenstromschnittstellen und der Direktzugriffsschnittstelle vermittelt, um durch die Datenstromschnittstellen und die Direktzugriffsschnittstelle gleichzeitig angeforderte Speicherzugriffe in eine serielle Reihenfolge zu bringen, – die durch die Datenstromschnittstellen angeforderte Speicherzugriffe mittels Schreibens einer Datenstromeingabe in den Speicher ausführt und – die durch die Direktzugriffsschnittstelle angeforderte Speicherzugriffe auf einzelne Speicherzellen und auf zweidimensionale Speicherzellregionen mittels Lesens von Werten aus und Schreibens von Werten in Speicherzellen und zweidimensionale Speicherregionen ausführt.
  2. Speicher-Untersystem nach Anspruch 1, welches innerhalb einer einen einzelnen integrierten Schaltkreis aufweisenden Rechenmaschine implementiert ist.
  3. Speicher-Untersystem nach Anspruch 1, welches innerhalb eines Chipsatzes einer Rechenmaschine implementiert ist.
  4. Speicher-Untersystem nach Anspruch 1, welches innerhalb eines integrierten Speicherschaltkreises implementiert ist.
  5. Speicher-Untersystem nach Anspruch 1, wobei das Speicher-Untersystem durch ein fastclk-Taktsignal mit einer Frequent gesteuert ist, welche mindestens n-fach größer ist als die Frequenz des schnellsten, von der Speichersteuereinheit durch jede der einen oder mehreren Datenstromschnittstellen empfangenen Taktsignals, wobei n größer zwei ist und wobei die von den Datenstromschnittstellen empfangenen Taktsignale eine Synchronisation des Empfangs der Speichersteuereinheit von Dateneinheiten der durch die Datenstromschnittstellen empfangenen Datenströme mittels der Speichersteuereinheit ermöglicht.
  6. Speicher-Untersystem nach Anspruch 5, wobei das Speicher-Untersystem einen Busverwalter aufweist, welcher zwischen den Datenstromschnittstellen und der Direktzugriffsschnittstelle vermittelt, um durch die Datenstromschnittstellen und die Direktzugriffsschnittstelle eingehende, gleichzeitig angeforderte Speicherzugriffe in eine serielle Reihenfolge zu bringen, wobei der Busverwalter einen jeder Datenstromschnittstelle zugeordneten Datenquellenbusverwalterbock und einen der Direktzugriffsschnittstelle zugeordneten Speichersequenzerblock umfasst.
  7. Speicher-Untersystem nach Anspruch 6, bei dem ein oder mehrere Datenquellenbusverwalterblöcke und der Speichersequenzerbusverwalterblock in einer Sequenz miteinander verknüpft sind, wobei die Position der Datenquellenbusverwalterblöcke und des Speichersequenzerbusverwalterblocks innerhalb der Sequenz eine Priorität für jeden der Datenquellenbusverwalterblöcke und den Speichersequenzerbusverwalterblock definiert, wobei der Datenquellenbusverwalterblock an der ersten Position die höchste Priorität innehat, wobei die verbleibenden Prioritäten mit der ansteigenden Position der damit verbundenen Datenquellenbusverwalterblöcke in der Sequenz abnehmen und der Speichersequenzerbusverwalterblock die niedrigste Priorität innehat.
  8. Speicher-Untersystem nach Anspruch 7, bei dem jeder Datenquellenbusverwalterblock die Kontrolle über den Speicher für einen einzelnen Schreibvorgang erwirbt und dann die Kontrolle über den Speicher abgibt, um anderen Datenquellenbusverwalterblöcken oder dem Speichersequenzerbusverwalterblock das Erwerben der Kontrolle über den Speicher zu ermöglichen.
  9. Speicher-Untersystem nach Anspruch 7, bei dem der Speichersequenzerbusverwalterblock die Kontrolle über den Speicher erwirbt, bis ein potenzieller Datenverlust aus einem Datenstromeingang durch eine Datenstromschnittstelle den Busverwalter zwingt, die Speicherkontrolle dem Speichersequenzerbusverwalterblock zu entziehen und die Speicherkontrolle der Datenstromschnittstelle zu gewähren.
  10. Speicher-Untersystem nach Anspruch 7, bei dem einem einzelnen Datenquellenbusverwalterblock oder dem Speichersequenzerbusverwalterblock die Kontrolle über den Speicher jederzeit gewährt wird, bei dem höher priorisierte Datenquellenbusverwalterblöcke, welche mit Datenstromschnittstellen verbunden sind, durch die momentan ein Speicherzugriff angefordert wird, die Gewährung der Kontrolle über den Speicher an niedriger priorisierte Datenquellenbusverwalterblöcke verhindert und bei dem der höchstpriorisierte, die Speicherzugriffsanforderung empfangende Datenquellenbusverwalterblock oder Speichersequenzerbusverwalterblock als nächstem die Kontrolle über den Speicher zu gewähren ist.
  11. Speicher-Untersystem nach Anspruch 6, ferner aufweisend einen oder mehrere Datenquellenblöcke, welche jeweils eine Datenstromschnittstelle implementieren und jeweils mit einem Datenquellenbusverwalterblock für die Datenstromschnittstelle verbunden sind, und einen Speichersequenzerblock, welcher die Direktzugriffsschnittstelle implementiert, die den Zugriff auf individuelle Speicherzellen und auf zweidimensionale Speicherregionen ermöglicht und die mit dem Speichersequenzerbusverwalterblock verbunden ist.
  12. Speicher-Untersystem nach Anspruch 11, bei dem jeder Datenquellenblock eine FIFO-Warteschlange aufweist, um Dateneinheiten der Datenstromeingabe durch eine von dem Datenquellenblock implementierte Datenstromschnittstelle vorübergehend zu speichern.
  13. Speicher-Untersystem nach Anspruch 12, bei dem in einem durch eine von dem Datenquellenblock implementierte Datenstromschnittstelle empfangenen Datenstrom enthaltene redundante Dateneinheiten mittels des Datenquellenblockes fallengelassen werden, anstatt in die FIFO-Warteschlange eingefügt zu werden.
  14. Speicher-Untersystem nach Anspruch 5, bei dem die Frequenz des fastclk-Taktsignals ausreichend hoch ist, um dem Speicher-Untersystem zu ermöglichen, die durch die Direktzugriffsschnittstelle empfangenen Speicherzugriffsanforderungen zu befriedigen und indessen die Datenstromeingaben durch die eine oder mehrere Datenstromschnittstellen zu speichern.
  15. Speicher-Untersystem nach Anspruch 1, wobei der Speicher eine oder mehrere integrierte Speicherschaltkreise umfasst.
  16. Speicher-Untersystem nach Anspruch 1, bei dem die Datenstromschnittstellen Datenströme von Videokameras empfangen und die Direktzugriffsschnittstelle Direktzugriffsspeicheranforderungen von einem Videocodec empfängt.
  17. Vielfach-Zugriffsspeicher, umfassend: – ein geradliniges Gitter von Speicherzellen, wobei jede Speicherzelle ein Bit an Information speichert, – einen Zeilendemultiplexer, welcher mittels Verschiebevorgängen entlang einer Reihe von durch den Zeilendemultiplexer ausgewählten Speicherzellen innerhalb des geradlinigen Gitters der Speicherzellen die Bits von einem Datenstrom in Speicherzellen zuführent, und – ein Zeilendemultiplexer-Spaltendemultiplexer-Paar, welches ein bei einer Direktzugriffsspeicher-WRITE-Anforderung empfangenes Bit in eine von dem Zeilendemultiplexer-Spaltendemultiplexer-Paar ausgewählte Speicherzelle zuführt und – welches ein bei einer Direktzugriffsspeiche-READ-Anforderung angefordertes Bit aus einer von dem Zeilendemultiplexer-Spaltendemultiplexer-Paar ausgewählten Speicherzelle wiederfindet.
  18. Vielfach-Zugriffsspeicher nach Anspruch 17, wobei der Vielfach-Zugriffsspeicher einen oder mehrere Zeilendemultiplexer aufweist, welche jeweils mittels Verschiebevorgängen entlang einer Reihe von von dem Zeilendemultiplexer ausgewählten Speicherzellen Bits von einem Datenstrom in Speicherzellen leiten, wobei jeder Zeilendemultiplexer mit einer unterschiedlichen Region des geradlinigen Gitters der Speicherzellen verbunden ist.
  19. Vielfach-Zugriffsspeicher nach Anspruch 18, bei dem auf den Vielfach-Zugriffsspeicher gleichzeitig zugegriffen wird, um mittels Verschiebevorgängen wenigstens eine Zeile von dem Datenstrom zu schreiben und durch eine Direktzugriffsspeicher-WRITE-Anforderung und eine Direktzugriffsspeicher-READ-Anforderung.
  20. Vielfach-Zugriffsspeicher nach Anspruch 17, bei dem eine Speicherzelle eine invertierende Datenspeichereinheit aufweist, welche ein Komplement eines bei einer Datenspeichereinheitseingabe empfangenen Datenbits statisch, ohne Aktualisierung speichert und welche das gespeicherte Komplement des Datenbits an eine Speicherzellenverschiebeausgabe kontinuierlich ausgibt.
  21. Vielfach-Zugriffsspeicher nach Anspruch 20, bei dem die Datenspeichereinheit als ein Flip-Flop mit zwei Invertern ausgebildet ist.
  22. Vielfach-Zugriffsspeicher nach Anspruch 21, bei dem die Speicherzelle ferner umfasst: – einen ersten Verschiebevorgangstransistor, dessen Source-Eingang mit einem Speicherzellendatenstromeingang verbunden ist und dessen Gate mit einem Speicherzellen-Verschiebe1-Eingang verbunden ist, – einen zweiten Verschiebevorgangstransistor, dessen Drain-Ausgang mit einem Datenspeichereinheit-Eingang verbunden ist und dessen Gate mit einem Speicherzellen-Verschiebe2-Eingang verbunden ist, – einem verbundenen Inverter, dessen Eingang mit einem DRAIN-Ausgang des ersten Verschiebevorgangstransistors verbunden ist und dessen Ausgang mit einem Source-Eingang des zweiten Verschiebevorgangstransistors verbunden ist, – einen Speicherzellendirektzugriffsausgabetransistor, dessen Tor mit einem Speicherzellendirektzugriffsleseeingang verbunden ist, dessen Source-Eingang mit dem Speicherzellenverschiebeausgang verbunden ist und dessen Drain-Ausgang mit einem Speicherzellendirektzugriffsleseausgang verbunden ist, und – einen Speicherzellendirektzugriffseingabetransistor, dessen Gate mit einem Speicherzellendirektzugriffsschreibeingang verbunden ist, dessen Source-Eingang mit einem Speicherzellendirektzugriffseingang verbunden ist und dessen Drain-Ausgang mit dem Datenspeichereinheitseingang verbunden ist.
  23. Vielfach-Zugriffsspeicher nach Anspruch 22, bei dem ein Bit aus dem Speicherzellendatenstromeingang in die Speicherzelle verschoben wird durch Anheben des Speicherzellen-Verschiebel-Eingangs, Absenken des Speicherzellen-Verschiebel-Eingangs und Anheben des Speicherzellen-Verschiebe2-Eingangs.
  24. Vielfach-Zugriffsspeicher nach Anspruch 22, bei dem ein Bit aus dem Speicherzellendirektzugriffseingang in die Speicherzelle geschrieben wird durch Anheben des Speicherzellendirektzugriffsschreibeingangs.
  25. Vielfach-Zugriffsspeicher nach Anspruch 22, bei dem ein Bit aus der Datenspeichereinheit am Speicherzellendirektzugriffsleseausgang ausgelesen wird durch Anheben des Speicherzellendirektzugriffsleseeingangs.
  26. Vielfach-Zugriffsspeicher nach Anspruch 22, bei dem in dem geradlinigen Gitter der Speicherzelten Zeilen der Speicherzellen als ein Verschieberegister funktionieren, wobei der Speicherzellenverschiebeausgang aller außer der letzten Speicherzelle in jeder Zeile mit dem Speicherzellendatenstromeingang einer nächsten Speicherzelle in der Zeile verbunden ist.
  27. Vielfach-Zugriffsspeicher nach Anspruch 17, verbunden mit einer Speichersteuereinheit, um ein Speicher-Untersystem zu bilden.
DE112009004320T 2009-01-12 2009-12-21 Speicher-Untersystem Withdrawn DE112009004320T5 (de)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US31975009A 2009-01-12 2009-01-12
US12/319,750 2009-01-12
US12/322,571 US8660193B2 (en) 2009-01-12 2009-02-04 Parallel, pipelined, integrated-circuit implementation of a computational engine
US12/322,571 2009-02-04
US12/380,410 2009-02-26
US12/380,410 US8566515B2 (en) 2009-01-12 2009-02-26 Memory subsystem
PCT/US2009/068999 WO2010080645A2 (en) 2009-01-12 2009-12-21 Memory subsystem

Publications (1)

Publication Number Publication Date
DE112009004320T5 true DE112009004320T5 (de) 2012-02-02

Family

ID=42212170

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112009004320T Withdrawn DE112009004320T5 (de) 2009-01-12 2009-12-21 Speicher-Untersystem

Country Status (4)

Country Link
US (1) US8566515B2 (de)
CN (1) CN102369552B (de)
DE (1) DE112009004320T5 (de)
WO (1) WO2010080645A2 (de)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7983835B2 (en) 2004-11-03 2011-07-19 Lagassey Paul J Modular intelligent transportation system
WO2010082904A1 (en) * 2009-01-15 2010-07-22 Agency For Science, Technology And Research Image encoding methods, image decoding methods, image encoding apparatuses, and image decoding apparatuses
EP2449781B1 (de) * 2009-06-29 2016-12-28 Thomson Licensing Verfahren und vorrichtung zur adaptiven wahrscheinlichkeitsaktualisierung der unkodierten syntax
US8174912B2 (en) * 2009-09-08 2012-05-08 Lsi Corporation Systems and methods for circular buffering control in a memory device
JP4991816B2 (ja) * 2009-09-30 2012-08-01 シャープ株式会社 画像処理装置
EP2522145B1 (de) * 2010-01-08 2021-09-08 Nokia Technologies Oy Vorrichtung und verfahren zur verarbeitung von videoinhalten
JP5914962B2 (ja) * 2010-04-09 2016-05-11 ソニー株式会社 画像処理装置および方法、プログラム、並びに、記録媒体
US8503534B2 (en) * 2010-04-22 2013-08-06 Maxim Integrated Products, Inc. Multi-bus architecture for a video codec
US9558247B2 (en) * 2010-08-31 2017-01-31 Samsung Electronics Co., Ltd. Storage device and stream filtering method thereof
KR20120066305A (ko) * 2010-12-14 2012-06-22 한국전자통신연구원 비디오 움직임 예측 및 보상용 캐싱 장치 및 방법
NZ612089A (en) 2011-01-14 2015-07-31 Ericsson Telefon Ab L M Deblocking filtering
US8896610B2 (en) * 2011-02-18 2014-11-25 Texas Instruments Incorporated Error recovery operations for a hardware accelerator
US9948938B2 (en) 2011-07-21 2018-04-17 Texas Instruments Incorporated Methods and systems for chroma residual data prediction
JP2013222364A (ja) * 2012-04-18 2013-10-28 Renesas Electronics Corp 信号処理回路
CN103916674B (zh) * 2012-12-31 2017-05-24 富士通株式会社 存储装置及方法、映射方法、编解码装置和图像处理设备
US10904551B2 (en) 2013-04-05 2021-01-26 Texas Instruments Incorporated Video coding using intra block copy
US20140333779A1 (en) * 2013-05-13 2014-11-13 Electronics And Telecommunications Research Institute Apparatus for distributing bus traffic of multiple camera inputs of automotive system on chip and automotive system on chip using the same
GB2544083B (en) * 2015-11-05 2020-05-20 Advanced Risc Mach Ltd Data stream assembly control
US10795836B2 (en) * 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
CN109245842A (zh) * 2017-07-10 2019-01-18 中兴通讯股份有限公司 时钟时间同步的方法、设备及计算机可读存储介质
US10522202B2 (en) * 2018-04-23 2019-12-31 Taiwan Semiconductor Manufacturing Co., Ltd. Memory device and compensation method therein
US11076148B2 (en) * 2018-06-01 2021-07-27 Sony Semiconductor Solutions Corporation Solid-state image sensor, imaging apparatus, and method for controlling solid-state image sensor
US11295206B2 (en) 2020-02-07 2022-04-05 Google Llc Interleaving memory requests to accelerate memory accesses
JP7404201B2 (ja) * 2020-09-11 2023-12-25 株式会社東芝 画像処理装置及び画像処理方法
US11321020B2 (en) * 2020-09-18 2022-05-03 Kioxia Corporation System and method for multichip coherence with side-by-side parallel multiport operation

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5418907A (en) * 1991-09-12 1995-05-23 Sony Corporation Multi-port memory and digital interpolation apparatus
CA2145365C (en) * 1994-03-24 1999-04-27 Anthony M. Jones Method for accessing banks of dram
US5809538A (en) * 1996-02-07 1998-09-15 General Instrument Corporation DRAM arbiter for video decoder
US6401176B1 (en) * 1997-11-14 2002-06-04 Agere Systems Guardian Corp. Multiple agent use of a multi-ported shared memory
US6381659B2 (en) * 1999-01-19 2002-04-30 Maxtor Corporation Method and circuit for controlling a first-in-first-out (FIFO) buffer using a bank of FIFO address registers capturing and saving beginning and ending write-pointer addresses
JP3815948B2 (ja) * 2000-04-20 2006-08-30 シャープ株式会社 Fifoメモリ制御回路
US6477598B1 (en) * 2000-07-20 2002-11-05 Lsi Logic Corporation Memory controller arbitrating RAS, CAS and bank precharge signals
US6993637B1 (en) * 2002-11-07 2006-01-31 Lsi Logic Corporation Unified memory system for multiple processors and method for controlling the same
US7852343B2 (en) * 2004-04-15 2010-12-14 Panasonic Corporation Burst memory access method to rectangular area
CN100340118C (zh) * 2004-07-29 2007-09-26 Thomson宽带研发(北京)有限公司 运动估计的超大规模集成电路体系结构及数据缓存的方法
US20080158601A1 (en) * 2006-12-29 2008-07-03 Steven Tu Image memory tiling
JP4898615B2 (ja) * 2007-09-20 2012-03-21 キヤノン株式会社 情報処理装置および符号化方法

Also Published As

Publication number Publication date
WO2010080645A2 (en) 2010-07-15
CN102369552A (zh) 2012-03-07
US8566515B2 (en) 2013-10-22
WO2010080645A3 (en) 2011-01-20
CN102369552B (zh) 2014-11-05
US20100177585A1 (en) 2010-07-15

Similar Documents

Publication Publication Date Title
DE112009004320T5 (de) Speicher-Untersystem
DE112009004344T5 (de) Parallele Implementierung einer Rechenmaschine nach dem Pipelineverfahren auf einerintegrierten Schaltung
EP2109993B1 (de) Vorrichtung und verfahren zum kodieren eines transformationskoeffizientenblockes
US20100220215A1 (en) Video acquisition and processing systems
KR101710001B1 (ko) 그래픽 프로세스 유닛 기반 jpeg2000 인코딩/디코딩 장치 및 방법
US20150012708A1 (en) Parallel, pipelined, integrated-circuit implementation of a computational engine
US20140165021A1 (en) System and methods for dynamic management of hardware resources
CN110691250B (zh) 结合块匹配和串匹配的图像压缩装置
DE112014004432T5 (de) Parallele Hardware- und Software-Blockverarbeitungspipelines
DE102020108428A1 (de) Codieren von Video unter Verwendung zweistufiger Intra-Suche
US7515761B2 (en) Encoding device and method
DE112014000643T5 (de) Bilddatencodierung für Zugriff nach Raster und nach Makroblock
DE60210720T2 (de) Eine 2D FIFO-Vorrichtung für blockbasierte Kodierung und Verfahren dazu
DE4408522C2 (de) Vorrichtung zur Bilddatenverarbeitung und Verfahren zur Verarbeitung von Bilddaten
DE102022120207A1 (de) Effiziente Transformationen und Transponierungen zur Optimierung der Ratenverzerrung und Rekonstruktion in Videocodieren
DE102017117381A1 (de) Beschleuniger für dünnbesetzte faltende neuronale Netze
DE19819405A1 (de) Implementation eines reversiblen eingebetteten Wavelet-Systems
Lafruit et al. The local wavelet transform: a memory-efficient, high-speed architecture optimized to a region-oriented zero-tree coder
De Cea-Dominguez et al. GPU-oriented architecture for an end-to-end image/video codec based on JPEG2000
CN103179391A (zh) 图像处理设备以及图像处理方法
US20020057276A1 (en) Data processing apparatus, processor and control method
DE102011002325A1 (de) Einrichtung mit vertikalem und/oder horizontalem Cachespeicher und in einem Kodierer und/oder Dekodierer verwendete Verfahren
US20050276486A1 (en) Data transform for improved compression of multicomponent images
KR102247196B1 (ko) 병렬 디코딩 경로를 사용하는 vc­2 디코딩
CN114697650A (zh) 基于下采样的帧内划分方法、相关装置设备及介质

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: CANZLER & BERGMEIER PATENTANWAELTE, DE

R082 Change of representative

Representative=s name: CANZLER & BERGMEIER PATENTANWAELTE, DE

R082 Change of representative

Representative=s name: CANZLER & BERGMEIER PATENTANWAELTE, DE

R081 Change of applicant/patentee

Owner name: BRING TECHNOLOGY INC., CA

Free format text: FORMER OWNER: MAXIM INTEGRATED PRODUCTS, INC., SUNNYVALE, CALIF., US

Effective date: 20121203

Owner name: BRING TECHNOLOGY INC., CA

Free format text: FORMER OWNER: MAXIM INTEGRATED PRODUCTS, INC., SUNNYVALE, US

Effective date: 20121203

Owner name: MAXIM INTEGRATED PRODUCTS, INC., US

Free format text: FORMER OWNER: MAXIM INTEGRATED PRODUCTS, INC., SUNNYVALE, US

Effective date: 20121203

R082 Change of representative

Representative=s name: GRUND INTELLECTUAL PROPERTY GROUP PATENTANWALT, DE

Effective date: 20121116

Representative=s name: GRUND INTELLECTUAL PROPERTY GROUP PATENTANWALT, DE

Effective date: 20121119

Representative=s name: GRUND INTELLECTUAL PROPERTY GROUP PATENTANWALT, DE

Effective date: 20121203

Representative=s name: CANZLER & BERGMEIER PATENTANWAELTE, DE

Effective date: 20121116

Representative=s name: CANZLER & BERGMEIER PATENTANWAELTE, DE

Effective date: 20121119

Representative=s name: GRUND INTELLECTUAL PROPERTY GROUP, DE

Effective date: 20121116

Representative=s name: GRUND INTELLECTUAL PROPERTY GROUP, DE

Effective date: 20121119

Representative=s name: GRUND INTELLECTUAL PROPERTY GROUP, DE

Effective date: 20121203

Representative=s name: CANZLER & BERGMEIER PATENTANWAELTE, DE

Effective date: 20121203

R082 Change of representative

Representative=s name: GRUND INTELLECTUAL PROPERTY GROUP, DE

R081 Change of applicant/patentee

Owner name: BRING TECHNOLOGY INC., CA

Free format text: FORMER OWNER: MAXIM INTEGRATED PRODUCTS, INC., SAN JOSE, US

Effective date: 20140402

Owner name: BRING TECHNOLOGY INC., CA

Free format text: FORMER OWNER: MAXIM INTEGRATED PRODUCTS, INC., SAN JOSE, CALIF., US

Effective date: 20140402

R082 Change of representative

Representative=s name: GRUND INTELLECTUAL PROPERTY GROUP PATENTANWALT, DE

Effective date: 20140402

Representative=s name: GRUND INTELLECTUAL PROPERTY GROUP, DE

Effective date: 20140402

R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06T0001600000

Ipc: G06F0013300000

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee