DE102012105622A1 - Datenverarbeitungsgerät und Datenverarbeitungsanordnung - Google Patents

Datenverarbeitungsgerät und Datenverarbeitungsanordnung Download PDF

Info

Publication number
DE102012105622A1
DE102012105622A1 DE201210105622 DE102012105622A DE102012105622A1 DE 102012105622 A1 DE102012105622 A1 DE 102012105622A1 DE 201210105622 DE201210105622 DE 201210105622 DE 102012105622 A DE102012105622 A DE 102012105622A DE 102012105622 A1 DE102012105622 A1 DE 102012105622A1
Authority
DE
Germany
Prior art keywords
data
data processing
memory
memory area
processing component
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
DE201210105622
Other languages
English (en)
Inventor
Mirko Sauermann
Alexander Schackow
Cyprian Grassmann
Ulrich Hachmann
Ronalf Kramer
Dominik Langen
Wolfgang Raab
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.)
Intel Deutschland GmbH
Original Assignee
Intel Mobile Communications GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Mobile Communications GmbH filed Critical Intel Mobile Communications GmbH
Publication of DE102012105622A1 publication Critical patent/DE102012105622A1/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Ein Datenverarbeitungsgerät (200) mit einem Speicher (203) und einer ersten (201) und zweiten Datenverarbeitungskomponente (202) wird beschrieben. Die erste Datenverarbeitungskomponente (201) weist einen Steuerspeicher (205) auf, der für jeden Speicherbereich (204) einer Vielzahl von Speicherbereiche (204) des Speichers (203) eine Anzeige (206), ob ein Datenzugriff auf den Speicherbereich (204) von der ersten Datenverarbeitungskomponente (201) durchgeführt werden kann, und eine Datenzugriffsschaltung (208), die eingerichtet ist, um einen Datenzugriff auf einen Speicherbereich (204) der Vielzahl von Speicherbereiche (204) durchzuführen, wenn ein Datenzugriff auf den Speicherbereich (204) von der ersten Datenverarbeitungskomponente (201) durchgeführt werden kann, und eine Einstellschaltung (209), die eingerichtet ist, um die Anzeige (206) für einen Speicherbereich (204) einzustellen, um anzuzeigen, dass ein Datenzugriff auf den Speicherbereich (204) von der ersten Datenverarbeitungskomponente (201) nicht durchgeführt werden kann, in Antwort auf Abschluss eines Datenzugriffs der ersten Datenverarbeitungskomponente (201) auf den Speicherbereich (204), aufweist.

Description

  • Ausführungsformen betreffen im Allgemeinen ein Datenverarbeitungsgerät und eine Datenverarbeitungsanordnung.
  • In Datenverarbeitungssystemen müssen Daten typischerweise zwischen unterschiedlichen Komponenten, z. B. unterschiedlichen Prozessoren (z. B. zwischen einer Zentralverarbeitungseinheit (central processing unit, CPU) und einem Co-Prozessor), oder ebenfalls zwischen unterschiedlichen Prozessen, die auf dem gleichen Prozessor laufen, ausgetauscht werden.
  • Daten können zwischen unterschiedlichen Entitäten (die Softwareprozesse beinhalten können, die von einem Prozessor oder Hardwarekomponenten, wie z. B. einem Co-Prozessor, ausgeführt werden) mittels Schreibens der auszutauschenden Daten in einen Speicher, auf den von allen Entitäten zugegriffen werden kann, d. h. ein gemeinsam genutzter Speicher, ausgetauscht werden.
  • In solch einem Szenario müssen typischerweise Mechanismen bereitgestellt werden, um synchronisierten Zugriff auf die Daten sicherzustellen, und um Datenkorruption zu vermeiden, die z. B. auftreten kann, wenn eine Entität auf den gemeinsam genutzten Speicher zugreift, bevor eine andere Entität deren Zugriff auf den gemeinsam genutzten Speicher abgeschlossen hat.
  • Dementsprechend sind Mechanismen zum Steuern des Zugriffs auf einen Speicher (z. B. ein gemeinsam genutzter Speicher, der für den Datenaustausch verwendet wird), die effizienten Zugriff bereitstellen, z. B. die schnellen Datenaustausch mittels des Speichers ermöglichen, wünschenswert.
  • In verschiedenen Ausführungsformen wird ein Datenverarbeitungsgerät bereitgestellt, aufweisend: einen Speicher, aufweisend eine Vielzahl von Speicherbereiche; eine erste Datenverarbeitungskomponente; einen Steuerspeicher, der für jeden Speicherbereich der Vielzahl von Speicherbereiche eine Anzeige aufweist, ob ein Datenzugriff auf den Speicherbereich von der ersten Datenverarbeitungskomponente durchgeführt werden kann; und eine zweite Datenverarbeitungskomponente; wobei die erste Datenverarbeitungskomponente aufweist: eine Prüfschaltung, die eingerichtet ist, um einen Speicherbereich dahingehend zu überprüfen, ob ein Datenzugriff auf den Speicherbereich von der ersten Datenverarbeitungskomponente basierend auf der Anzeige für den Speicherbereich durchgeführt werden kann; eine Datenzugriffsschaltung, die eingerichtet ist, um einen Datenzugriff auf einen Speicherbereich der Vielzahl von Speicherbereichen durchzuführen, wenn ein Datenzugriff auf den Speicherbereich von der ersten Datenverarbeitungskomponente durchgeführt werden kann; und eine Einstellschaltung, die eingerichtet ist, um die Anzeige für einen Speicherbereich einzustellen, um anzuzeigen, dass ein Datenzugriff auf den Speicherbereich von der ersten Datenverarbeitungskomponente nicht durchgeführt werden kann, in Antwort auf Abschluss eines Datenzugriffs der ersten Datenverarbeitungskomponente auf den Speicherbereich; und wobei die zweite Datenverarbeitungskomponente eingerichtet ist, um die Anzeige für einen Speicherbereich einzustellen, um anzuzeigen, dass die erste Datenverarbeitungskomponente einen Datenzugriff auf den Speicherbereich durchführen kann.
  • In einer Ausgestaltung kann die zweite Datenverarbeitungskomponente eingerichtet sein, um die Anzeige für einen Speicherbereich einzustellen, um anzuzeigen, dass die erste Datenverarbeitungskomponente einen Datenzugriff auf den Speicherbereich durchführen kann.
  • In noch einer Ausgestaltung kann die erste Datenverarbeitungskomponente weiter eine Speicherschnittstelle zum Datenaustausch mit dem Speicher aufweisen.
  • In noch einer Ausgestaltung kann die erste Datenverarbeitungskomponente eingerichtet sein, um Datenzugriffe auf die Speicherbereiche in vorbestimmter Reihenfolge durchzuführen.
  • In noch einer Ausgestaltung kann die erste Datenverarbeitungskomponente einen Eingang aufweisen, der eingerichtet ist, um die Anzeige zu empfangen.
  • In noch einer Ausgestaltung kann die zweite Datenverarbeitungskomponente ein Prozessor sein, der einen Softwareprozess ablaufen lässt, und wobei die Einstellung der Anzeige für einen Speicherbereich, um anzuzeigen, dass die erste Datenverarbeitungskomponente einen Datenzugriff auf den Speicherbereich durchführen kann, von dem Softwareprozess initiiert wird.
  • In noch einer Ausgestaltung kann die erste Datenverarbeitungskomponente weiter eine Datenverarbeitungsschaltung und eine Schnittstelle aufweisen, die eingerichtet ist, um Daten, die im Verlauf des Datenzugriffs aus dem Speicher gelesen wurden, an die Datenverarbeitungsschaltung weiterzuleiten, oder um die Daten, die im Verlauf des Datenzugriffs in den Speicher geschrieben werden sollen, bereitzustellen.
  • In noch einer Ausgestaltung können die Speicherbereiche Puffer sein, die in einem gemeinsam genutzten Speicher zugeordnet sind.
  • In noch einer Ausgestaltung kann können die Speicherbereiche gleich groß sein.
  • In noch einer Ausgestaltung kann das Datenverarbeitungsgerät ein Computer sein.
  • In noch einer Ausgestaltung kann die Anzeige, dass ein Datenzugriff auf den Speicherbereich von der ersten Datenverarbeitungskomponente durchgeführt werden kann, die Spezifikation sein, dass die Datenblockgröße eines Datenblocks, der in dem Speicherbereich gespeichert ist, größer als Null ist.
  • In noch einer Ausgestaltung kann die Anzeige, dass kein Datenzugriff auf den Speicherbereich von der ersten Datenverarbeitungskomponente durchgeführt werden kann, die Spezifikation sein, dass die Datenblockgröße eines Datenblocks, der in dem Speicherbereich gespeichert ist, Null ist.
  • In noch einer Ausgestaltung kann für zumindest einen Speicherbereich der Steuerspeicher zusätzlich zu der Anzeige zumindest einen Parameterwert speichern, gemäß dessen der Datenzugriff durchgeführt werden soll, oder die Daten, die in dem Speicherbereich gespeichert sind, von der ersten Datenverarbeitungskomponente verarbeiten werden sollen.
  • In noch einer Ausgestaltung kann der Steuerspeicher eingerichtet sein, um den zumindest einen Parameterwert von der zweiten Datenverarbeitungskomponente zu empfangen.
  • In verschiedenen Ausführungsformen wird eine Datenverarbeitungskomponente eines Datenverarbeitungsgeräts bereitgestellt, wobei die Datenverarbeitungskomponente aufweist: einen Steuerspeicher, der für jeden Speicherbereich der Vielzahl von Speicherbereiche eine Anzeige aufweist, ob ein Datenzugriff auf den Speicherbereich von der ersten Datenverarbeitungskomponente durchgeführt werden kann; eine Prüfschaltung, die eingerichtet ist, um einen Speicherbereich dahingehend zu überprüfen, ob ein Datenzugriff auf den Speicherbereich von der ersten Datenverarbeitungskomponente basierend auf der Anzeige für den Speicherbereich durchgeführt werden kann; eine Datenzugriffsschaltung, die eingerichtet ist, um einen Datenzugriff auf einen Speicherbereich der Vielzahl von Speicherbereiche durchzuführen, wenn ein Datenzugriff auf den Speicherbereich von der ersten Datenverarbeitungskomponente durchgeführt werden kann; eine Einstellschaltung, die eingerichtet ist, um die Anzeige für einen Speicherbereich einzustellen, um anzuzeigen, dass ein Datenzugriff auf den Speicherbereich von der ersten Datenverarbeitungskomponente nicht durchgeführt werden kann, in Antwort auf Abschluss eines Datenzugriffs der ersten Datenverarbeitungskomponente auf den Speicherbereich.
  • In verschiedenen Ausführungsformen wird eine Datenverarbeitungsanordnung bereitgestellt, aufweisend: einen ersten Speicher, der eine Vielzahl von Datenobjekten aufweist; einen zweiten Speicher, der eine Vielzahl von Datenspeichereinheiten aufweist, wobei die Anzahl an Datenspeichereinheiten niedriger ist als die Anzahl an Datenobjekten; eine Datenverarbeitungsschaltung, die eingerichtet ist, um auf die Vielzahl von Datenspeichereinheiten für Zustandsinformationen über die Vielzahl von Datenobjekten zuzugreifen; eine Auswählschaltung, die eingerichtet ist, um ein Datenobjekt aus der Vielzahl von Datenobjekten gemäß einer vorbestimmten Regel auszuwählen; eine Speicherschaltung, die eingerichtet ist, um Zustandsinformationen über das ausgewählte Datenobjekt in einer Datenspeichereinheit der Vielzahl von Datenspeichereinheiten zu speichern.
  • In einer Ausgestaltung kann die Auswählschaltung eingerichtet sein, um das Datenobjekt gemäß einer Ordnung der Datenobjekte auszuwählen.
  • In noch einer Ausgestaltung kann können die Zustandsinformationen ein Zugriffsrecht auf das Datenobjekt sein.
  • In noch einer Ausgestaltung kann das Datenobjekt ein Speicherbereich eines Speichers sein.
  • In den Zeichnungen beziehen sich gleiche Bezugsnummern durchgängig in den unterschiedlichen Ansichten im Allgemeinen auf die gleichen Teile. Die Zeichnungen sind nicht notwendigerweise maßstabsgetreu und betonen stattdessen im Allgemein die Veranschaulichung der Prinzipien der Erfindung. In der folgenden Beschreibung werden verschiedene Ausführungsformen unter Bezugnahme auf die folgenden Zeichnungen beschrieben, in denen:
  • 1 eine Datenverarbeitungsanordnung gemäß einer Ausführungsform zeigt.
  • 2 ein Datenverarbeitungsgerät gemäß einer Ausführungsform zeigt.
  • 3 ein Datenverarbeitungsgerät gemäß einer Ausführungsform zeigt.
  • 4 ein Ablaufdiagramm gemäß einer Ausführungsform zeigt.
  • 5 einen Speicher gemäß einer Ausführungsform zeigt.
  • 6 eine Datenverarbeitungsanordnung zeigt.
  • 7 eine Abbildung von Zustandsinformationen gemäß einer Ausführungsform zeigt.
  • In der folgenden detaillierten Beschreibung wird auf die beigefügten Zeichnungen Bezug genommen, in denen veranschaulichend spezifische Details und Ausführungsformen, bei denen die Erfindung praktiziert werden kann, gezeigt sind. Diese Ausführungsformen sind ausreichend detailliert beschrieben, damit es dem Fachmann ermöglicht wird, die Erfindung zu praktizieren. Andere Ausführungsformen können verwendet werden und strukturelle, elektrische und Logikänderungen können vorgenommen werden, ohne vom Umfang der Erfindung abzuweichen. Die verschiedenen Ausführungsformen schließen sich nicht notwendigerweise gegenseitig aus, da einige Ausführungsformen mit einer oder mehreren anderen Ausführungsformen kombiniert werden können, um neue Ausführungsformen zu bilden.
  • In Datenverarbeitungssystemen müssen Daten, die von einer Entität generiert werden (d. h. einer Datenerzeugungsentität, z. B. eine Hardwarekomponente oder ein Prozess, der auf einem Prozessor läuft), unter Umständen an eine andere Entität geliefert werden (d. h. eine Datenverbrauchsentität, z. B. eine weitere Hardwarekomponente oder ein Prozess, der auf einem Prozessor läuft, möglicherweise der gleiche Prozessor, auf dem die Datenerzeugungsentität läuft). Es ist anzumerken, dass die andere Entität, d. h. die Datenverbrauchsentität, ebenfalls als Datenerzeugungsentität für einen dritten Kommunikationspartner (d. h. eine dritte Entität) oder ebenfalls für die Datenerzeugungsentität betrieben werden kann, so dass beide Entitäten beide (jeweils) als Datenerzeugungsentität und als Datenverbrauchsentität betrieben werden.
  • Dies wird in 1 veranschaulicht.
  • 1 zeigt ein Datenverarbeitungsgerät 100 gemäß einer Ausführungsform.
  • Das Datenverarbeitungsgerät 100 beinhaltet eine Datenerzeugungsentität 101 (ebenfalls als Erzeuger bezeichnet) und eine Datenverbrauchsentität 102 (ebenfalls als Verbraucher bezeichnet). Beispielsweise generiert die Datenerzeugungsentität 101 Daten 103, die von der Datenverbrauchsentität 102 verarbeitet werden sollen. Beide Entitäten können ein Prozess sein, der auf dem gleichen Prozessor oder auf verschiedenen Prozessoren, z. B. von einem oder zwei Computersystemen, laufen, oder können unterschiedliche Hardwarekomponenten sein, z. B. ein Prozessor und ein Co-Prozessor, etc.
  • Die Daten 103 können zwischen der Datenerzeugungsentität 101 und der Datenverbrauchsentität 102 mittels eines gemeinsam genutzten Speichers 104 ausgetauscht werden. Die Datenerzeugungsentität 101 schreibt die Daten 103 in den gemeinsam genutzten Speicher 104 und die Datenverbrauchsentität 102 liest die Daten 103 aus dem gemeinsam genutzten Speicher 104. Die Daten 103 können beispielsweise Teil eines Datenstroms sein (wie veranschaulicht durch die drei Punkte links und rechts der Daten 103 in 1), der beispielsweise durchgängig von der Datenerzeugungsentität 101 erzeugt (z. B. generiert) und von der Datenverbrauchsentität 102 verbraucht wird.
  • Der gemeinsam genutzte Speicher 104 kann als einen Kanal 108 zwischen der Datenerzeugungsentität 101 und der Datenverbrauchsentität 102 implementierend angesehen werden.
  • Der gemeinsam genutzte Speicher 104 beinhaltet beispielsweise eine Vielzahl von Speicherbereiche 105, 106, 107, die nachstehend ebenfalls als Puffer des Speichers 104 bezeichnet werden. Jeder Speicherbereich 105, 106, 107 beinhaltet beispielsweise eine Vielzahl von Speicherzellen (z. B. für eine gewisse Menge an Daten) des Speichers 104.
  • Die Anordnung der Speicherbereiche 105, 106, 107 kann durch einen Eingangs/Ausgangs-(input/output)-I/O-Kontext beschrieben werden, der als ein Kontext des Kanals 108 angesehen werden kann. Die Erzeugungsentität 101 und die Verbrauchsentität 102 können jeweils eine Schnittstelle 109, 110 beinhalten, die mit diesem Kontext verbunden ist.
  • Beispielsweise schreibt die Datenerzeugungsentität 101 Daten 103 (z. B. Teil eines Datenstroms) in einen ersten Speicherbereich 105 des Speichers 104 und die Datenverbrauchsentität 102 liest die Daten aus dem ersten Speicherbereich 105. Um zu vermeiden, dass die Datenverbrauchsentität 102 Daten aus einem Speicherbereich 105, 106, 107 liest, bevor diese vollständig in den Speicherbereich 105, 106, 107 geschrieben wurden (und daher unvollständige und daher möglicherweise korrumpierte Daten ausliest) oder dass die Datenerzeugungsentität 101 neue Daten in den Speicherbereich 105, 106, 107 schreibt, bevor diese ordentlich von der Datenverbrauchsentität 102 ausgelesen wurden, können die Speicherbereiche 105, 106, 107 gesperrt werden, d. h. der Zugriff auf jeden Speicherbereich 105, 106, 107 kann gesperrt werden, um exklusiven Zugriff von entweder der Datenerzeugungsentität 101 oder der Datenverbrauchsentität 102 zu ermöglichen.
  • Eine Vielzahl von Speicherbereiche 105, 106, 107 kann verwendet werden, um gleichzeitiges ein Schreiben der Datenerzeugungsentität 101 (in eine der Speicherbereiche) und ein Lesen der Datenverbrauchsentität 102 (aus einer anderen Speicherbereich) zu ermöglichen.
  • Die Datenerzeugungsentität 101 und/oder die Datenverbrauchsentität 102 können beispielsweise Teil eines Computersystems sein und können mit dem Speicher 104 mittels eines Systemcomputerbusses des Computersystems gekoppelt sein. Gemäß einer Ausführungsform beinhaltet die Datenerzeugungsentität 101 und/oder die Datenverbrauchsentität 102 eine Schnittstellenschaltung, ebenfalls als Busmasterschnittstelle bezeichnet, mittels derer die Daten 103 ausgetauscht werden (z. B. die den Austausch der Daten 103 über den Speicher 104 steuert) und mittels derer Synchronisationsinformationen zwischen der Datenerzeugungsentität 101 und der Datenverbrauchsentität 102 ausgetauscht werden können, z. B. Informationen zum Sicherstellen, dass in einen Speicherbereich 105, 106, 107 von der Datenerzeugungsentität 101 geschrieben wurde, bevor diese von der Datenverbrauchseinheit 102 ausgelesen wird oder andersrum.
  • Ein Datenverarbeitungsgerät mit Komponenten, die solch eine Busmasterschnittstelle bilden können und/oder solch eine Busmasterschnittstelle implementieren, wird nachstehend unter Bezugnahme auf 2 beschrieben.
  • 2 zeigt ein Datenverarbeitungsgerät 200 gemäß einer Ausführungsform.
  • Das Datenverarbeitungsgerät 200 beinhaltet einen Speicher 203, der eine Vielzahl von Speicherbereichen 204, eine erste Datenverarbeitungskomponente 201 und einen Steuerspeicher 205 beinhaltet, der für jeden Speicherbereich der Vielzahl von Speicherbereichen 204 eine Anzeige 206 dahingehend beinhaltet, ob ein Datenzugriff auf den Speicherbereich 204 von der ersten Datenverarbeitungskomponente 201 durchgeführt werden kann.
  • Die erste Datenverarbeitungskomponente 201 beinhaltet eine Prüfschaltung 207, die eingerichtet wurde, um einen Speicherbereich 204 dahingehend zu überprüfen, ob ein Datenzugriff auf den Speicherbereich 204 von der ersten Datenverarbeitungskomponente 201 basierend auf der Anzeige 206 für den Speicherbereich 204 durchgeführt werden kann.
  • Die erste Datenverarbeitungskomponente 201 beinhaltet weiter eine Datenzugriffsschaltung 208, die eingerichtet wurde, um einen Datenzugriff auf einen Speicherbereich der Vielzahl von Speicherbereichen 204 durchzuführen, wenn ein Datenzugriff auf den Speicherbereich 204 von der ersten Datenverarbeitungskomponente 201 durchgeführt werden kann.
  • Die erste Datenverarbeitungskomponente 201 beinhaltet ferner eine Einstellschaltung 209, die eingerichtet wurde, um die Anzeige 206 für einen Speicherbereich 204 einzustellen, um anzuzeigen, dass ein Datenzugriff auf den Speicherbereich 204 von der ersten Datenverarbeitungskomponente 201 nicht durchgeführt werden kann, in Antwort auf Abschluss eines Datenzugriffs der ersten Datenverarbeitungskomponente 201 auf den Speicherbereich 204.
  • Das Datenverarbeitungsgerät 200 beinhaltet ferner eine zweite Datenverarbeitungskomponente 202, wobei die zweite Datenverarbeitungskomponente 202 eingerichtet wurde, um die Anzeige 206 für einen Speicherbereich 204 einzustellen, um anzuzeigen, dass die erste Datenverarbeitungskomponente 201 einen Datenzugriff auf den Speicherbereich 204 durchführen kann.
  • Der Steuerspeicher 205 kann Teil der ersten Datenverarbeitungskomponente 201 sein. Der Steuerspeicher 205 kann ebenfalls Teil der zweiten Datenverarbeitungskomponente 202 sein. Falls der Steuerspeicher 205 kein Teil der ersten Datenverarbeitungskomponente 201 ist, kann die erste Datenverarbeitungskomponente 201, z. B. in einem Speicher der ersten Datenverarbeitungskomponente 201, eine Kopie der Inhalte des Steuerspeichers 205 gespeichert haben. Mit anderen Worten kann die erste Datenverarbeitungskomponente 201 einen Speicher aufweisen, dessen Inhalte mit dem Steuerspeicher 205 synchronisiert sind.
  • Es ist anzumerken, dass die Anzeige, dass ein Datenzugriff auf einen Speicherbereich 204 durchgeführt werden kann, bei einer Ausführungsform ebenfalls eine Anzeige sein kann, dass der Datenzugriff auf den Speicherbereich 204 durchgeführt werden soll.
  • Abhängig davon, ob der Datenzugriff durch die erste Datenverarbeitungskomponente 201 ein Schreibzugriff oder ein Lesezugriff ist, kann die erste Datenverarbeitungskomponente 201 der Datenerzeugungsentität 101 (wenn der Datenzugriff ein Schreibzugriff ist) oder der Datenverbrauchsentität 102 (wenn der Datenzugriff ein Lesezugriff ist) entsprechen. Es ist anzumerken, dass die zweite Datenverarbeitungskomponente eine Architektur aufweisen kann, die ähnlich der ersten Datenverarbeitungskomponente ist, und der Datenerzeugungsentität 101 entsprechen kann, falls der Datenzugriff ein Lesezugriff ist, oder der Datenverbrauchsentität 102 entsprechen kann, falls der Datenzugriff ein Schreibzugriff ist.
  • Die erste Datenverarbeitungskomponente kann ferner eine Datenverarbeitungsschaltung 210 beinhalten, die beispielsweise eingerichtet wurde, um durch den Datenzugriff (verarbeitete) Daten bereitzustellen, die in dem Speicher 203 gespeichert werden sollen, oder die eingerichtet wurde, um durch den Datenzugriff Daten zu verarbeiten, die aus dem Speicher 203 gelesen wurden.
  • Der Steuerspeicher 205, die Prüfschaltung 207, die Datenzugriffsschaltung 208 und die Einstellschaltung 209 können als eine Schnittstelle für die erste Datenverarbeitungskomponente 201 bildend angesehen werden. Die erste Datenverarbeitungskomponente 201 kann mit dem Speicher 203 mittels eines Computerbusses 212 verbunden sein (über den der Datenzugriff auf den Speicher 203 durchgeführt werden kann). Dementsprechend kann die Schnittstelle 211 bei einer Ausführungsform eine Busmasterschnittstelle sein. Die erste Datenverarbeitungsschnittstelle 201 kann ein Hardwarebeschleuniger des Datenverarbeitungsgeräts 200 sein. Dementsprechend wird die Schnittstelle 211 nachstehend ebenfalls als Beschleunigermasterschnittstelle bezeichnet. Es ist anzumerken, dass die erste Datenverarbeitungskomponente 201 eine Vielzahl solcher Schnittstellen 211 beinhalten kann.
  • Gemäß einer Ausführungsform können die Speicherbereiche 204 als Datenpuffer angesehen werden und jeder Datenpuffer entspricht einem Datenblock (z. B. gespeichert in dem entsprechenden Speicherbereich 204). Gemäß einer Ausführungsform wird ein Datenblock, der in einem Speicherbereich 204 gespeichert ist, aus dem oder in den Speicherbereich 204 gelesen oder geschrieben. Mit anderen Worten kann eine Ausführungsform als basierend auf dem Konzept angesehen werden, dass die Daten in atomaren Einheiten ausgetauscht werden (wobei die Speicherbereiche 204 bzw. die Datenblöcke den Speicherbereichen 204 entsprechen), die synchronisiert werden (z. B. hinsichtlich eines exklusiven Zugriffs von entweder der ersten Datenverarbeitungskomponente 201 oder der zweiten Datenverarbeitungskomponente 202). Diese atomaren Einheiten werden nachfolgend als Speicherbereiche bezeichnet. Die Handhabung dieser Speicherbereiche kann beispielsweise durch einen Controller erleichtert werden.
  • Gemäß einer Ausführungsform führt mit anderen Worten die Prüfschaltung dahingehend eine Überprüfung durch, ob die erste Datenverarbeitungskomponente ein Zugriffsrecht auf den Speicherbereich besitzt, und die Einstellschaltung gibt dementsprechend nach Abschluss des Datenzugriffs das Zugriffsrecht durch Einstellen der Anzeige für den Speicherbereich frei.
  • Änderungen von Inhalten des Steuerspeichers 205, z. B. durchgeführt von der Einstellschaltung 209 oder von dem zweiten Datenverarbeitungselement 202, können der Prüfschaltung 207 mittels Signalen/Nachrichten, wie z. B. Unterbrechungen, signalisiert werden, so dass die Prüfschaltung 207 keine aktiven Überprüfungen hinsichtlich Änderungen in dem Steuerspeicher 205 durchführen muss, z. B. führt diese keine aktive Abfrage des Steuerspeichers 205 durch. Diese Signalgebung wird beispielsweise von einer Signalschaltung 213 durchgeführt, die ebenfalls zusammen mit dem Steuerspeicher 205 in dem ersten Datenverarbeitungselement 201 oder dem zweiten Datenverarbeitungselement 202 angeordnet sein kann.
  • Gemäß einer Ausführungsform können zusätzliche Parameter mit den Daten der Speicherbereiche 204 verbracht werden, die mit dem entsprechenden Speicherbereich 204 (oder entsprechend mit den Daten, die in dem Speicherbereich 204 gespeichert sind) verbunden sind.
  • Gemäß einer Ausführungsform ermöglicht ein hierarchisches Speicherbereichskonzept eine effiziente und dennoch flexible Implementierung der notwendigen Infrastruktur zur Handhabung der Speicherbereiche 204.
  • Bei einer Ausführungsform kann eine „Schaltung“ als jede Art logikimplementierende Entität verstanden werden, die ein Spezialschaltkreis oder eine prozessorausführende Software sein kann, gespeichert in einem Speicher, Firmware oder jeder Kombination davon. Daher kann bei einer Ausführungsform eine „Schaltung“ eine verdrahtete Logikschaltung oder eine programmierbare Logikschaltung, wie z. B. ein programmierbarer Prozessor, z. B. ein Mikroprozessor (z. B. ein CISC-(Complex Instruction Set Computer)-Prozessor oder ein RISC-(Reduced Instruction Set Computer)-Prozessor, sein. Eine „Schaltung“ kann ebenfalls eine prozessorausführende Software sein, z. B. jede Art von Computerprogramm, z. B. ein Computerprogramm, das einen virtuellen Maschinencode, wie z. B. Java, verwendet. Jede andere Art von Implementierung der entsprechenden Funktionen, die nachstehend detaillierter beschrieben sind, kann ebenfalls als eine „Schaltung“ in Übereinstimmung mit einer alternativen Ausführungsform verstanden werden.
  • Gemäß einer Ausführungsform wurde die zweite Datenverarbeitungskomponente eingerichtet, um die Anzeige für einen Speicherbereich einzustellen, um anzuzeigen, dass die erste Datenverarbeitungskomponente einen Datenzugriff auf den Speicherbereich durchführen kann, um beispielsweise die erste Datenverarbeitungskomponente anzuweisen, einen Datenzugriff auf den Speicherbereich durchzuführen.
  • Die erste Datenverarbeitungskomponente kann weiter eine Speicherschnittstelle zum Datenaustausch mit dem Speicher beinhalten. Die Speicherschnittstelle kann beispielsweise Teil der Schnittstelle 211 sein. Beispielsweise kann sie Teil der Datenzugriffsschaltung 208 sein.
  • Die erste Datenverarbeitungskomponente wurde beispielsweise eingerichtet, um Datenzugriffe auf die Speicherbereiche in vorbestimmter Reihenfolge durchzuführen.
  • Bei einer Ausführungsform beinhaltet die erste Datenverarbeitungskomponente einen Eingang, der eingerichtet wurde, um die Anzeige zu empfangen.
  • Beispielsweise ist die zweite Datenverarbeitungskomponente ein Prozessor, der einen Softwareprozess ablaufen lässt, und wobei die Einstellung der Anzeige für einen Speicherbereich, um anzuzeigen, dass die erste Datenverarbeitungskomponente einen Datenzugriff auf den Speicherbereich durchführen kann, durch den Softwareprozess initiiert wird.
  • Bei einer Ausführungsform wurde die Schnittstelle eingerichtet, um Daten, die im Verlauf des Datenzugriffs aus dem Speicher gelesen wurden, an die Datenverarbeitungsschaltung 210 weiterzuleiten, oder um die Daten, die im Verlauf des Datenzugriffs in den Speicher geschrieben werden sollen, bereitzustellen.
  • Die Speicherbereiche sind beispielsweise Puffer, die in einem gemeinsam genutzten Speicher zugeordnet sind.
  • Die Speicherbereiche sind beispielsweise gleich groß.
  • Das Datenverarbeitungsgerät ist beispielsweise ein Computer.
  • Bei einer Ausführungsform ist die Anzeige, dass ein Datenzugriff von der ersten Datenverarbeitungskomponente auf den Speicherbereich durchgeführt werden kann, die Spezifikation, dass die Datenblockgröße eines Datenblocks, der in dem Speicherbereich gespeichert ist, größer als Null ist.
  • Die Anzeige, dass kein Datenzugriff auf den Speicherbereich von der ersten Datenverarbeitungskomponente durchgeführt werden kann, ist beispielsweise die Spezifikation, dass die Datenblockgröße eines Datenblocks, der in dem Speicherbereich gespeichert ist, Null ist.
  • Bei einer Ausführungsform speichert für zumindest einen Speicherbereich der Steuerspeicher zusätzlich zu der Anzeige zumindest einen Parameterwert, gemäß dessen der Datenzugriff durchgeführt werden soll, oder die Daten, die in dem Speicherbereich gespeichert sind, von der ersten Datenverarbeitungskomponente verarbeiten werden sollen.
  • Der Steuerspeicher 205 kann beispielsweise eingerichtet werden, um den zumindest einen Parameterwert von der zweiten Datenverarbeitungskomponente zu empfangen. Dementsprechend kann die zweite Datenverarbeitungskomponente 202 eingerichtet werden, um den zumindest einen Parameterwert zu generieren und bereitzustellen.
  • Es ist anzumerken, dass die Merkmale der zweiten Datenverarbeitungskomponente 202 die Merkmale der ersten Datenverarbeitungskomponente 201, wie vorstehend beschrieben, und andersrum umfassen können. Mit anderen Worten kann das Datenverarbeitungsgerät zwei Datenverarbeitungskomponenten mit den vorstehend beschriebenen Merkmalen, die miteinander kommunizieren, beinhalten.
  • Ein Datenverarbeitungsgerät gemäß einer Ausführungsform ist nachstehend unter Bezugnahme auf 3 beschrieben.
  • 3 zeigt ein Datenverarbeitungsgerät 300 gemäß einer Ausführungsform.
  • Das Datenverarbeitungsgerät 300 beinhaltet einen Hardwarebeschleuniger 301 einschließlich eines Beschleunigerkerns 302 und einen lokalen Allzweckcontroller 303. Der Beschleunigerkern 302 beinhaltet einen inneren Beschleunigerkern 304, eine Masterschnittstelle 305 (oder bei einer Ausführungsform eine Vielzahl von Masterschnittstellen) und eine Slaveschnittstelle 306. Es kann eine oder mehr Beschleunigermasterschnittstellen 305 in einem einzelnen Beschleunigerkern 302 geben, um Durchsatzanforderungen zu erfüllen. Jede Beschleunigermasterschnittstelle 305 verbindet den inneren Beschleunigerkern 304 mit einem Systembus 307 des Datenverarbeitungsgeräts 300 (z. B. ein Computersystem).
  • Ein Speicher 308 des Datenverarbeitungsgeräts 300 ist mit dem Systembus 307 verbunden.
  • Die Beschleunigerslaveschnittstelle 306 verbindet den inneren Beschleunigerkern 304 mit dem lokalen Allzweckcontroller 303.
  • Die Busmasterschnittstelle 305 kann eine Vielzahl von Registern 309 beinhalten, die bei der RTL-(register transfer level)-Implementierung Teil der Beschleunigerslaveschnittstelle 306 sein können.
  • Bei einer Ausführungsform beinhaltet das Datenverarbeitungsgerät ebenfalls eine zentrale Synchronisationshardware 310.
  • Die Beschleunigermasterschnittstelle wird für Lese- und Schreibzugriffe (bei einer Ausführungsform alle Lese- und Schreibzugriffe) des Beschleunigerkerns 302 auf den Speicher 308 (der ein oder mehr gemeinsam genutzte Speichergeräte beinhalten kann) und für das Senden von Nachrichten über den Systembus 307 an Softwarekomponenten des Datenverarbeitungsgeräts 300 verwendet. Sie kann ebenfalls Datensynchronisation mit anderen Hardwarekomponenten oder Softwarekomponenten des Datenverarbeitungsgeräts 300 unterstützen.
  • Die Beschleunigermasterschnittstelle 305 kann als ein konfigurierbares generisches Makro angesehen werden, das als Busmasterschnittstelle in einer Vielzahl von (sogar allen) Hardwarebeschleunigerkernen 302 des Computersystems verwendet werden kann. Die generischen Parameter können individuell pro Beschleunigermasterschnittstelleninstanz angepasst werden und können nach Synthese festgelegt werden. Alle anderen Parameter können durch Software während der Laufzeit definiert werden.
  • Die Beschleunigermasterschnittstelle 305 beinhaltet einen Multithreadbusmastercontroller 311, optional zusätzliche Logik zur Speicherbereichsynchronisation, einschließlich einer Auto-Message-Schaltung 312 und einer Direkt-Sync-Schaltung 313, und den Satz an dedizierten Registern der Vielzahl von Registern 309. Die Auto-Message-Schaltung 312 ist beispielsweise verbunden mit einer Auto-Message-Arbiter-Schaltung 314 des Datenverarbeitungsgeräts 300.
  • Die Beschleunigermasterschnittstelle 305 weist mehrere Ports auf, die die Beschleunigermasterschnittstelle 305 mit dem inneren Beschleunigerkern 304, der Auto-Message-Arbiter-Schaltung 314, die mit der Nachrichtenwarteschlange des lokalen Allzweckcontroller 303 verbunden ist, dem Systembus 307 und der zentralen Synchronisationshardware 310 des Datenverarbeitungsgeräts 300 verbinden.
  • Der Beschleuniger 302 kann beispielsweise über die folgenden Signale und Verbindungen mit dem Systembus 307 verbunden werden:
    • • req: Verwendet von dem Busmastercontroller 311, um Zugriff auf den Systembus 307 anzufordern.
    • • req_spec: Verwendet von dem Busmastercontroller 311, um den Typ an Zugriff auf den Systembus 307 zu spezifizieren. Dieses Signal trägt die Blockadresse, die Clusteradresse und den Lese/Schreibindikator in dem Zyklus, in dem req beurteilt wird. In dem Zyklus, der auf die Anfrage folgt, trägt dieser die Burstlänge.
    • • reqd: Schaltet die Anfrage für jede einzelne Datenphase einer Bursttransaktion frei. Dies ist wichtig, wenn ein Burst, der bereits begonnen hat, angehalten werden soll.
    • • grant: Verwendet, um dem Busmastercontroller 311 zu signalisieren, dass Zugriff auf den Systembus 307 gewährt wurde.
    • • grantd: Gewährt die Lesedaten-Buslane rdata oder Schreibdaten-Buslane wdata an den anfragenden Master (in diesem Fall den Busmastercontroller 311) und definiert den Zyklus, bei dem die Daten auf dem Bus erscheinen.
    • • maddr: Verwendet zum Spezifizieren einer Speicheradresse des Speichers 308
    • • wdata: Verwendet von dem Busmastercontroller 311, um Daten, die in den Speicher 308 geschrieben werden sollen, auf dem Systembus 307 zu übertragen.
    • • byteen: Verwendet von dem Busmastercontroller 311, um einen Teil des Speichers 308 zu aktivieren. rdata: Verwendet zum Übertragen von Daten, die aus dem Speicher 308 gelesen wurden, über den Systembus 307 zu dem Busmastercontroller 311.
    • • wresp: Signalisiert den Abschluss einer Schreibübertragung.
  • Der innere Beschleunigerkern 304 und der Busmastercontroller 311 kommunizieren beispielsweise über die folgenden Signale und Verbindungen:
    • • io_trigger_command: Verwendet von dem inneren Beschleunigerkern 304, um eine Eingangs/Ausgangs-(input output, I/O)-Operation von dem Busmastercontroller 311 zu initiieren (z. B. Datenzugriff, wie z. B. ein Schreibzugriff oder ein Lesezugriff auf den Speicher 308).
    • • io_trigger_valid: Verwendet von dem inneren Beschleunigerkern 304, um zu signalisieren, dass das Initiierungssignal für eine I/O-Operation gültig ist.
    • • data_chunk_size: Verwendet von dem inneren Beschleunigerkern 304, um die Menge an Daten anzuzeigen, die im Verlauf einer initiierten I/O-Operation eingehen oder ausgehen sollen, d. h. die Größe eines Datenbursts.
    • • address_offset: Verwendet von dem inneren Beschleunigerkern 304, um einen Versatz innerhalb eines Speicherbereichs 315 zu spezifizieren, bei dem die Daten, die eingehen oder ausgehen sollen, innerhalb des Speicherbereichs beginnen. Bei einer Ausführungsform kann in dem Fall von Systembusnachrichten dieses Signal zum Melden von Daten verwendet werden.
    • • last_command: Zeigt an, dass der derzeitige I/O-Befehl der letzte I/O-Befehl für den derzeitigen Speicherbereich ist.
    • • io_trigger_ack: Verwendet von dem Busmastercontroller 311, um die Initiierung (d. h. die Auslösung) einer I/O-Operation zu bestätigen.
    • • read_data: Verwendet von dem Busmastercontroller 311, um Daten, die aus dem Speicher 308 gelesen wurden, an den inneren Beschleunigerkern 304 zu übertragen.
    • • read_data_valid: Verwendet von dem Busmastercontroller 311, um anzuzeigen, dass Daten, die über read_data übertragen wurden, gültig sind.
    • • write_data_req: Verwendet von dem Busmastercontroller 311, um Daten, die in einer I/O-Operation in den Speicher 308 geschrieben werden sollen, von dem inneren Beschleunigerkern 304 anzufragen.
    • • write_data: Verwendet von dem inneren Beschleunigerkern 304, um Daten an den Busmastercontroller 311 zu übertragen, die in den Speicher 308 geschrieben werden sollen.
  • Der innere Beschleunigerkern 304, der Busmastercontroller 311, die Auto-Message-Schaltung 312 und die Direkt-Sync-Schaltung 313 können beispielsweise über die folgenden Signale und Verbindungen kommunizieren:
    • • buffer_complete: Verwendet von dem Busmastercontroller 311, um anzuzeigen, dass die finale I/O-Operation hinsichtlich eines Speicherbereichs 315 (z. B. das Schreiben von Daten in den Speicherbereich 315 oder das Lesen von Daten aus dem Speicherbereich 315) abgeschlossen ist. bc_ctx: Index des I/O-Kontextes, für den das derzeitige buffer_complete-Signal beabsichtigt ist. bc_bufx_phys: Index des Parameterregistersatzes in dem Steuerspeicher, für den das derzeitige buffer_complete-Signal beabsichtigt ist.
    • • auto_msg_full: Verwendet von der Auto-Message-Schaltung 312, um anzuzeigen, dass ihr Puffer für zu sendende Auto-Messages voll ist.
    • • auto_msg_din: Verwendet, um der Auto-Message-Schaltung 312 die Inhalte einer Auto-Message anzuzeigen, die von der Auto-Message-Schaltung 312 gesendet werden sollen.
  • Es kann bis zu acht (oder bei anderen Ausführungsformen jegliche Anzahl von) konfigurierbare I/O-Kontexte zur Verwendung unterschiedlicher I/O-Modi (z. B. Streamingmodus oder Direktzugriffsmodus), unterschiedlicher I/O-Richtungen und einer Vielfalt an anderen unterschiedlichen Parametern innerhalb der gleichen Instanz der Beschleunigermasterschnittstelle 305 geben, unter denen ein spezieller I/O-Kontext zum Senden von Systembusnachrichten ist. Es ist anzumerken, dass solche I/O-Kontexte für jede Instanz einer Beschleunigermasterschnittstelle 305 in dem Datenverarbeitungssystem 301 im Falle einer Vielzahl von Beschleunigermasterschnittstellen 305 in dem Datenverarbeitungssystem 301 definiert werden können.
  • Jeder I/O-Kontext wird durch einen Satz an Parametern dargestellt, die die Eigenschaften des I/O-Kontextes bestimmen. Während einige dieser Parameter während der Gestaltung der Beschleunigermasterschnittstelle 305 festgelegt werden können, können andere während der Laufzeit eingerichtet werden. I/O-Kontextparameter, die während der Laufzeit eingerichtet werden können, sowie Speicherbereichsparameter werden in einem Satz an Registerfeldern der Register 309 abgebildet, die entweder von Software, d. h. von dem lokalen Allzweckcontroller 303 des Beschleunigers 301, durch die Slaveschnittstelle 306 des Beschleunigerkerns 302 oder von Hardware, d. h. durch den inneren Beschleunigerkern 304 oder durch die Beschleunigermasterschnittstelle 305 geschrieben werden können. Beispielsweise beinhalten die Register 309 für jeden I/O-Kontext einen Satz an Registern 316, der für den Beschleuniger 302 definiert ist. Ein Satz an Registern 316 beinhaltet beispielsweise I/O-Kontextregister, die die Registerfelder beinhalten, die die I/O-Kontextparameter speichern, und Register zum Speichern von Speicherbereichsparametern für diesen I/O-Kontext.
  • Es ist anzumerken, dass in der RTL-(register transfer level)-Implementierung, wie bereits für die Register 309 erwähnt, die I/O-Kontextregister Teil des Beschleunigerslaveschnittstellenmodells sein können.
  • Die I/O-Kontexte können nebenläufig verwendet werden, so dass sogar ein einzelner Beschleunigerkern 302 mit nur einer einzelnen Instanz der Beschleunigermasterschnittstelle 305 mehrere Eingangs- und Ausgangsdatenübertragungen gleichzeitig überlappend handhaben kann. Dies wird in 4 veranschaulicht.
  • 4 zeigt ein Ablaufdiagramm 400 gemäß einer Ausführungsform.
  • In diesem Beispiel führt der Busmastercontroller 311 drei Threads mit der Nummer 0, 1 und 2 aus, wobei jeder Thread seinen eigenen I/O-Kontext verwendet, der durch die I/O-Kontextregister des Satzes an Registern 316 für diesen I/O-Kontext definiert ist.
  • Das Diagramm 400 veranschaulicht den Datenfluss bei dem I/O-Befehlsport des Busmastercontrollers 311 (einschließlich beispielsweise die Verbindung io_trigger_command, etc.) und den Datenfluss bei dem Datenport des Busmastercontrollers 311 (einschließlich beispielsweise die Verbindungen wdata, rdata, etc. mit dem Systembus 307).
  • Über den I/O-Befehlsport werden fünf Befehle 401, 402, 403, 404 und 405 an den Busmastercontroller 311 gegeben.
  • Gemäß einem ersten Befehl 401 sollen erste Daten 406 in/aus den/m Speicher 308 geschrieben bzw. gelesen werden. Gemäß einem zweiten Befehl 402 sollen zweite Daten 407 in/aus den/m Speicher 308 geschrieben bzw. gelesen werden. Gemäß einem dritten Befehl 403 sollen dritte Daten 408 aus/in den/m Speicher 308 geschrieben bzw. gelesen werden.
  • In diesem Beispiel werden der erste Befehl 401 und ein vierter Befehl 404 von dem Busmasterthread 0 verarbeitet, der zweite Befehl 402 und ein fünfter Befehl 405 werden von Busmasterthread 1 verarbeitet und der dritte Befehl 403 wird von Busmasterthread 2 verarbeitet.
  • Wie veranschaulicht werden die Daten 406, 407, 408 seriell über den Datenport kommuniziert. Die Verarbeitung der Befehle 401405 durch unterschiedliche Threads ermöglicht beispielsweise, dass der zweite Befehl 402 von dem Busmastercontroller 305 empfangen wird, sogar bevor die ersten Daten 406 über den Datenport kommuniziert wurden. Kommunikation zwischen den Registern 309 und dem Busmastercontroller 311 wird beispielsweise unter Verwendung der folgenden Signale und Verbindungen durchgeführt.
    • • io_context_reset: Verwendet zum Rücksetzen des I/O-Kontextes.
    • • buffer_base_pointer: Verwendet zum Spezifizieren der Startadresse des ersten Speicherbereichs 315 in Speicher 308 für diesen I/O-Kontext.
    • • buffer_size: Verwendet zum Spezifizieren der Größe eines Speicherbereichs 315. n_buffers_virt: Verwendet zum Spezifizieren der Anzahl an Speicherbereiche 315. start_buffer_virt: Verwendet zum Spezifizieren des Speicherbereichs 315, für die die Verarbeitung beginnen soll (z. B. in einer sequentiellen Verarbeitung der Speicherregionen 315).
  • Diese Signale und Verbindungen liegen beispielsweise für jeden I/O-Kontext vor.
  • Gemäß einer Ausführungsform wird, wie vorstehend erwähnt, das Datensynchronisationskonzept basierend auf Speicherbereiche 315 in gemeinsam genutzten Speicher 308 verwendet. Im Allgemeinen basiert gemäß einer Ausführungsform die Synchronisation einer Datenerzeugungsentität (z. B. Prozess) 101 und einer Datenverbrauchsentität (z. B. Prozess) 102 auf dem Partitionieren der Daten 103 in Datenblöcke, die in Speicherbereichen in gemeinsam genutzten Speicher gespeichert werden.
  • Die Verwendung von Speicherbereichen 315 für Datensynchronisation wird unter Bezugnahme auf 5 detaillierter erklärt.
  • 5 zeigt einen Speicher 500 gemäß einer Ausführungsform.
  • Der Speicher 500 entspricht beispielsweise dem Speicher 308 des Datenverarbeitungsgeräts 300.
  • Der Speicher 500 beinhaltet eine Vielzahl von Speicherbereichen 501, wobei jeder Speicherbereich einen Datenblock 502 speichert. Die Speicherbereiche 501 weisen beispielsweise eine Größe memory_region_size 503 auf, die für alle Speicherbereiche 501 gleich sein kann.
  • Jeder Datenblock 502 wird daher in einem separaten gemeinsam genutzten Speicherbereich 501 gespeichert, wobei die Datenblockgrößen 504 in jedem Fall kleiner als oder gleich der Speicherbereichsgröße 503 sind.
  • Ein Speicherbereich 501 ist jeweils nur immer für eine Komponente des Datenverarbeitungsgeräts 300 zugreifbar, egal ob der Zugriff ein Lesezugriff, ein Schreibzugriff oder eine Mischung aus Lese- und Schreibzugriff ist. Die Komponente, der derzeit Zugriff auf den Speicherbereich 501 gegeben wird, wird ebenfalls als der Eigentümer des Speicherbereichs 501 bezeichnet. Es kann entweder eine Hardwarekomponente oder eine Softwarekomponente des Datenverarbeitungsgeräts 300 sein.
  • Zum Steuern der Eigentümerschaft eines spezifischen Speicherbereichs 501 wird gemäß einer Ausführungsform ein herkömmliches Datensynchronisationskonzept verwendet. Dieses Datensynchronisationskonzept basiert auf einem Parameter, der als block_size bezeichnet wird, der von einer Komponente für jeden Speicherbereich 501 gespeichert wird. Dieser Parameter wird gemäß der folgenden Regeln verwendet:
    • • block_size > 0: Nur die Komponente hat Lese/Schreibzugriff auf den Speicherbereich und alle ihre Parameter.
    • • block_size = 0: Nur eine andere Komponente hat Lese/Schreibzugriff auf den Speicherbereich und alle ihre Parameter.
  • Dies bedeutet, dass, solange der block_size-Parameter des Speicherbereichs größer als Null ist, die Komponente den Speicherbereich auslesen oder in diese schreiben kann. Kein Zugriff durch eine andere Komponente ist zu dieser Zeit erlaubt. Sobald die Komponente den block_size-Parameter nullisiert (d. h. auf Null setzt), hat die andere Komponente wieder Zugriff auf den Speicherbereich.
  • Im Falle des Datenverarbeitungsgeräts 300 ist der block_size-Parameter beispielsweise für jeden Speicherbereich 315 in einem block_size-Parameterregister der Register 309 für den Speicherbereich 315 gespeichert. Beispielsweise kann der block_size-Parameter in einem block_size-Parameterregister des Satzes an Registern 316 für den I/O-Kontext gespeichert sein, in dem der Speicherbereich 315 verwendet wird (d. h. in dem auf den Speicherbereich 315 zugegriffen wird, z. B. indem Daten in den Speicherbereich 315 geschrieben werden oder in dem Daten aus dem Speicherbereich 315 gelesen werden).
  • Der block_size-Parameter kann beispielsweise direkt oder indirekt von dem lokalen Allzweckcontroller 303 geschrieben werden. Beispielsweise kann der Controller 303 direkt den block_size-Parameter in ein block_size-Parameterregister der Register 309 für den Speicherbereich 315 schreiben. Im indirekten Fall kann der Controller 303 immer in die gleichen Register der Register 309 schreiben (z. B. hinsichtlich der Registeradresse), was automatisch in dem block_size-Parameterregister des Speicherbereichs 315 abgebildet wird (z. B. durch Spezialschaltkreis).
  • Der Wert des block_size-Parameters kann direkt oder indirekt von dem lokalen Allzweckcontroller 303 abgefragt werden. Beispielsweise kann der Controller 303 direkt das block_size-Parameterregister des Speicherbereichs 315 abfragen (z. B. auslesen).
  • Im indirekten Fall kann der Controller 303 immer die gleichen Register abfragen, was automatisch in dem block_size-Parameterregister des Speicherbereichs 315 abgebildet wird (z. B. durch Spezialschaltkreis).
  • Gemäß einer Ausführungsform können zusätzliche Speicherbereichsparameter in den Registern 309 für jeden Speicherbereich 315 gespeichert werden.
  • Beispielsweise verweilen zusätzliche Speicherbereichsparameter für einen Speicherbereich 315 in zusätzlichen Speicherbereichsparameterregistern der Register 309 des Beschleunigerkerns 302, die direkt auf das block_size-Parameterregister für den Speicherbereich 315 folgen. Zusätzliche Speicherbereichsparameter können optional sein, wobei der block_size-Parameter bei einer Ausführungsform obligatorisch ist. Anzahl und Zweck der zusätzlichen Speicherbereichsparameter können individuell für jeden I/O-Kontext (eines jeden Beschleunigers 301, wenn das Datenverarbeitungsgerät mehr als einen beinhaltet) während der Gestaltung definiert werden. Die Speicherbereichsparameterregister können ebenfalls für (optionale) Speicherbereichsrückgabewerte verwendet werden, die erneut während der Gestaltung definiert werden können.
  • Ein zusätzlicher Speicherbereichsparameter kann beispielsweise spezifizieren, wie die Daten, die in einem Speicherbereich 315 gespeichert sind, zu verarbeiten sind (z. B. kann er eine Funktion spezifizieren, die bei den Daten durchgeführt werden soll, etc.). Ein zusätzlicher Speicherbereichsparameter kann beispielsweise ebenfalls spezifizieren, dass ein Speicherbereich 315 ein anderes Mal ausgelesen werden soll. Beispielsweise weisen Speicherbereiche 315 bei einer Ausführungsform eine Ordnung auf und es wird darauffolgend auf diese gemäß dieser Ordnung zugegriffen (geschrieben oder ausgelesen). Ein zusätzlicher Speicherbereichsparameter kann beispielsweise ein Datenwiederholungsbit sein, durch das spezifiziert werden kann, dass auf einen Speicherbereich 315 zweimal hintereinander zugegriffen werden soll.
  • Ein Speicherbereichsrückgabewert für einen Speicherbereich 315 kann beispielsweise durch den Beschleunigerkern 302 eingestellt werden, nach Verarbeitung des Datenblocks, der in dem Speicherbereich 315 gespeichert ist. Beispielsweise kann ein Speicherbereichsrückgabewert spezifizieren, dass eine zyklische Redundanzprüfung (cyclic redundancy check, CRC) bei den Daten erfolgreich war.
  • Die Akkzessibilität der zusätzlichen Speicherbereichsparameter durch eine Komponente kann durch den block_size-Parameter gesteuert werden, ähnlich zu dem Speicherbereichszugriff:
    • • block_size > 0: Nur die Komponente mit den zusätzlichen Speicherbereichsparameterregistern hat Lese/Schreibzugriff auf den Speicherbereich und alle ihre Parameter.
    • • block_size = 0: Nur eine andere Komponente hat Lese/Schreibzugriff auf den Speicherbereich und alle ihre Parameter.
  • Gemäß einer Ausführungsform wird ein hierarchisches Speicherbereichskonzept eingesetzt. Dies wird in 6 veranschaulicht.
  • 6 zeigt eine Datenverarbeitungsanordnung 600.
  • Die Datenverarbeitungsanordnung 600 beinhaltet einen ersten Speicher 601 einschließlich einer Vielzahl von Datenobjekten 603. Die Datenobjekte entsprechen beispielsweise den Speicherbereichen 315 des Datenverarbeitungsgeräts 300.
  • Die Datenverarbeitungsanordnung 600 beinhaltet weiter einen zweiten Speicher 602 einschließlich einer Vielzahl von Datenspeichereinheiten 604, wobei die Anzahl an Datenspeichereinheiten 604 geringer ist, als die Anzahl an Datenobjekten 603. Der Speicher 602 entspricht beispielsweise den Registern 309.
  • Die Datenverarbeitungsanordnung 600 beinhaltet weiter eine Datenverarbeitungsschaltung 605, die eingerichtet ist, um auf die Vielzahl von Datenspeichereinheiten 604 für Zustandsinformationen über die Vielzahl von Datenobjekten 603 zuzugreifen. Die Zustandsinformationen können beispielsweise den block_size-Parameterwerten für die Speicherbereiche 315 entsprechen. Daher entspricht die Datenverarbeitungsanordnung 600 beispielsweise dem Busmastercontroller 311, der auf den block_size-Parameter in den Registern 309 zugreift.
  • Gemäß einer Ausführungsform beinhaltet die Datenverarbeitungsanordnung 600 eine Auswählschaltung 606, die eingerichtet wurde, um ein Datenobjekt 603 gemäß einer vorbestimmten Regel auszuwählen, und eine Speicherschaltung 607, die eingerichtet wurde, um Zustandsinformationen über das ausgewählte Datenobjekt 603 in einer Datenspeichereinheit 604 zu speichern.
  • Die Auswählschaltung kann eingerichtet werden, um das Datenobjekt gemäß einer Ordnung der Datenobjekte auszuwählen.
  • Es ist anzumerken, dass die Datenverarbeitungsschaltung 605, die Auswählschaltung 606 und die Speicherschaltung 607 nicht notwendigerweise der Datenzugriffsschaltung 208, der Prüfschaltung 207 und der Einstellschaltung 209 des Datenverarbeitungsgeräts 200 entsprechen müssen. Jedoch können die Datenverarbeitungsschaltung 605, die Auswählschaltung 606 und die Speicherschaltung 607 beispielsweise Teil der ersten Datenverarbeitungskomponente 201 sein, z. B. Teil der Schnittstelle 211.
  • Die Zustandsinformationen sind beispielsweise ein Zugriffsrecht auf das Datenobjekt und das Datenobjekt ist beispielsweise ein Speicherbereich eines Speichers.
  • Mit anderen Worten wird bei einer Ausführungsform nur ein Teilsatz der vollständigen Zustandsinformationen (z. B. ein Teilsatz der block_size-Parameterwerte für alle Speicherbereiche 315) in den Datenspeichereinheiten 604 des zweiten Speichers 602 (z. B. der Register 309 des Beschleunigerkerns 305) abgebildet.
  • Beispielsweise werden im Fall des Datenverarbeitungsgeräts 300 zwei Schichten von Speicherbereichsindizes verwendet, die eine hohe Gesamtspeicherbereichszählung für einen einzelnen I/O-Kontext ermöglichen, wobei eine Schicht der Speicherbereichsindizes die Speicherbereiche identifizieren soll und die andere Schicht der Speicherbereichsindizes die Speicherbereichsparametersätze (z. B. jeden Speicherbereichsparametersatz für einen Speicherbereich einschließlich des block_size-Speicherbereichsparameters und der zusätzlichen Parameter für den Speicherbereich) der Register 309 identifizieren soll.
  • Die vollständigen Sätze an Zustandsinformationen können als virtuelle Parametersätze angesehen werden und die Datenspeichereinheiten 604 entsprechen den (physischen) Parametersätzen, die in dem Steuerspeicher verweilen. Die Indizes in einer ersten Schicht, Speicherbereichsschicht 0, adressieren beispielsweise die Parametersätze in dem Steuerspeicher, während die Indizes in einer zweiten Schicht, Speicherbereichsschicht 1, die virtuellen Parametersätze adressieren. Dies wird in 7 veranschaulicht.
  • 7 veranschaulicht eine Abbildung von Zustandsinformationen gemäß einer Ausführungsform.
  • In der Veranschaulichung von 7 gibt es eine Anzahl an 4 Speicherbereichsparametersätzen in Steuerspeicher 701, nummeriert von 0 bis 3, und eine Anzahl an 8 Speicherbereichen 702, nummeriert von 0 bis 7.
  • Mit anderen Worten gibt es nur vier Speicherbereichsparametersätze in einem I/O-Kontext, die physisch in den Registern 309 (z. B. einer Registerdatei) verfügbar sind. Für nur vier der Speicherbereiche 702 ist daher ihr eigener Speicherbereichsparametersatz (z. B. einschließlich des block_size-Parameters und zusätzlicher Speicherbereichsparameter) Teil der Register 309.
  • Die Anzahl der Speicherbereiche 702 entspricht der Gesamtspeicherbereichszählung in einem I/O-Kontext und muss keine ganzzahlige Multiple der Anzahl an Parametersätzen in Steuerspeicher 701 sein. Die Anzahl an Speicherbereichen 702 ist beispielsweise durch Software programmierbar. Sie kann ebenfalls von I/O-Kontext zu I/O-Kontext variieren.
  • Die erste Speicherbereichsschicht, Speicherbereichsschicht 0, kann ein Schiebefenster darstellen, das 4 Speicherbereiche abdeckt. Mit anderen Worten beinhalten die Speicherbereichsparametersätze in Steuerspeicher 701 die Parameter von vier der Speicherbereiche 702 gemäß einem Schiebefenster, z. B. mit einer Schieberichtung, wie angezeigt durch Pfeil 703, in Richtung der ansteigenden Speicherbereichs-702-Nummern. Daher beinhalten die Parametersätze in Steuerspeicher 701 die Parameter für vier der Speicherbereiche 702, wobei diese vier Speicherbereiche 702 sich gemäß dem „Schiebefenster“ ändern.
  • Für Speicherbereichsschicht 1 verfolgt die Beschleunigermasterschnittstelle 305 nur den derzeitigen Speicherbereichsindex des Speicherbereichs 315, auf die der nächste Datenzugriff durchgeführt werden soll, und berechnet die Startadresse der als nächstes zu verwendenden Speicherbereiche (d. h. auf die als nächstes zugegriffen werden soll) in Speicher 308. Bei einer Ausführungsform ist kein zusätzlicher Hardwareaufwand für Speicherbereichsschicht 1 notwendig. Alle Speicherbereichsparameter für Speicherbereiche, die derzeitig nicht von dem Schiebefenster abgedeckt werden (gemäß der derzeitigen Abbildung, z. B. die Position des Schiebefensters), können implizit definiert werden (z. B. können Standardwerte aufweisen) oder können mittels Softwarevariablen gespeichert werden.
  • Gemäß einer Ausführungsform können automatische Nachrichten verwendet werden, um Abschluss des Datenzugriffs auf einen Speicherbereich an den lokalen Allzweckcontroller 303 über einen dedizierten Nachrichtenport zu signalisieren. Diese automatischen Nachrichten, die hierin ebenfalls Auto-Messages genannt werden, sind beispielsweise lokale Nachrichten und sind beispielsweise keine Nachrichten, die über den Systembus 307 des Datenverarbeitungsgeräts 300 gesendet werden. Das Auto-Message-Merkmal kann, wenn implementiert, per I/O-Kontext durch Software an- oder abgeschaltet werden, z. B. unter Verwendung eines Steuerbits in den Registern 309 des Beschleunigerkerns 302.
  • Wenn eine Auto-Message gesendet werden soll, generiert die Auto-Message-Schaltung 312 der Beschleunigermasterschnittstelle 305 ein Auto-Message-Datenwort, das beispielsweise beinhaltet:
    • • Beschleunigerkernindex (verwendet zum Identifizieren des Beschleunigerkerns 302 im Falle einer Vielzahl von Beschleunigerkerne in dem Hardwarebeschleuniger 301)
    • • Beschleunigermasterschnittstellenindex (verwendet zum Identifizieren der Beschleunigermasterschnittstelle 305 im Falle einer Vielzahl von Beschleunigermasterschnittstellen in dem Beschleunigerkern 302)
    • • I/O-Kontextindex (verwendet zum Identifizieren des I/O-Kontextes)
    • • Speicherbereichsindex
    • • Index des Speicherbereichsparametersatzes in Steuerspeicher
  • Eine generierte Auto-Message wird an den Auto-Message-Arbiter (z. B. über eine entsprechende Beschleunigermasterschnittstelle) übertragen. Der Auto-Message-Arbiter 314 kann zwischen dem Beschleunigerkern 302 (oder den Beschleunigerkernen 302) und dem Allzweckcontroller 303 für Auto-Message-Lieferung an Software angeordnet werden. Beispielsweise folgt der Auto-Message-Arbiter einem Ringschema, wenn zwei oder mehr Masterschnittstellen 305 eine Auto-Message gleichzeitig senden wollen.
  • Die Auto-Message-Schaltung 312 kann beispielsweise mit dem Auto-Message-Arbiter 314 mittels der folgenden Verbindungen und Signale kommunizieren:
    • • auto_msg_dout: Verwendet von der Auto-Message-Schaltung 312, um eine zu sendende Auto-Message zu übertragen.
    • • auto_msg_valid: Verwendet von der Auto-Message-Schaltung 312, um anzuzeigen, dass eine Auto-Message, die an den Auto-Message-Arbiter 314 übertragen wurde, gültig ist.
    • • auto_msg_ack: Verwendet von dem Auto-Message-Arbiter 314, um den Eingang einer Auto-Message von der Auto-Message-Schaltung 312 zu bestätigen.
  • Weiter können die folgenden Signale und Verbindungen verwendet werden, um mit dem Busmastercontroller 311 im Kontext von Auto-Messaging zu kommunizieren:
    • • acc_core_index: Verwendet zum Adressieren des Beschleunigerkerns 302 in dem Kontext von Auto-Messaging.
    • • master_if_index: Verwendet zum Adressieren der Masterschnittstelle 305 in dem Kontext von Auto-Messaging.
  • Gemäß einer Ausführungsform weist die Beschleunigermasterschnittstelle 305 einen Port zur Verbindung mit der zentralen Synchronisationshardware 310 des Datenverarbeitungsgeräts 300 auf, die in dem Beispiel, gezeigt in 3, durch die Direkt-Sync-Schaltung 313 und einer Sync-Bus-Arbiter-Schaltung 317 gebildet wird. Die Direkt-Sync-Schaltung 313 kann zur automatischen Speicherbereichssynchronisation verwendet werden, was nachstehend als Direkt-Sync bezeichnet wird.
  • Direkt-Sync kann das Schreiben voreingerichteter block_size-Parameterwerte in die Register 309 beinhalten, ohne Interaktion des Allzweckcontrollers 303 pro Speicherbereich. Der innere Beschleunigerkern 304 kann nicht in der Lage sein, festzustellen, ob ein block_size-Parameterwert durch Hardware (d. h. durch Direkt-Sync-Funktionalität) oder durch Software (oder durch Controller 303) geschrieben wurde.
  • Der voreingerichtete Wert des block_size-Parameters kann beispielsweise immer in das block_size-Register des nächsten Speicherbereichsparametersatzes im Steuerspeicher geschrieben werden, der für den entsprechenden I/O-Kontext eingerichtet werden muss. Der Index dieses Parametersatzes im Steuerspeicher kann beispielsweise unter Verwendung eines Zählers generiert werden.
  • Das Direkt-Sync-Merkmal kann, wenn implementiert, per I/O-Kontext durch Software an- oder abgeschaltet werden, z. B. unter Verwendung eines Steuerbits in den Slaveregistern des Beschleunigerkerns.
  • Die Direkt-Sync-Schaltung 313 und die Sync-Bus-Arbiter-Schaltung 317 können beispielsweise unter Verwendung der folgenden Signale und Verbindungen kommunizieren.
    • • synci_valid (Synchronisationsinitiiator gültig): Wenn aktiviert, zeigt dieses Signal einen gültigen Eintrag des Initiatorkanals an.
    • • synci_valid_oms (gültiges Initiatorsignal von den anderen Mastern der Schicht): Wenn aktiviert, sperrt dieses Signal von einem höher priorisierten Master den Ausgang eines Initiierungswortes. Ein Bit pro anderer Beschleunigermasterschnittstelleninstanz, die Direkt-Sync verwendet, ein Bit für den lokalen Controller.
    • • synci_mid: ID des initiierenden Masters. Die Abbildung ist durch Verwendung generischer Parameter zu definieren.
    • • synci_type (Initiierungsworttyp): 0: 1. Zyklus der Zugriffsinitiierung: Adresse, Lese/Schreibanzeige 1: 2. Zyklus der Schreibinitiierung: Schreiben von Daten
    • • synci_type_oms (Initiierungsworttyp von den anderen Mastern der Schicht): Eine 1 von einem Master zeigt eine Datenschreibphase an, die von der Adressphase nicht getrennt werden sollte. Dies sperrt den Ausgang eines Initiierungswortes, sogar bei höherer Priorisierung. Ein Bit pro anderer Beschleunigermasterschnittstelleninstanz, die Direkt-Sync verwendet, ein Bit für den lokalen Controller.
    • • synci_data (Initiatordaten): Initiierungswort, Multiplexadresse (14 Bits, einschließlich 3 Bits zum Kodieren der Agentenfunktion), Lese/Schreibindikator (1 Bit) und Schreibdaten (8 Bits). Die zwei Phasen einer Schreibtransaktion werden immer fortlaufend übertragen.
    • • syncr_valid (Synchronisationsantwort gültig): Das aktivierte Signal zeigt einen gültigen Eintrag auf dem Antwortkanal an.
    • • syncr_mid (Master ID des Antwortempfängers): Der Master akzeptiert nur Antworten, die angemessen adressiert sind. Die Abbildung ist durch Verwendung generischer Parameter zu definieren.
    • • syncr_data (Daten lesen): Bei Schreibzugriffen ist der Inhalt egal. Nicht intern in der Beschleunigermasterschnittstelle verbunden. Spezifiziert aus Kompatibilitätsgründen allein.
  • Obwohl die Erfindung insbesondere unter Bezugnahme auf spezifische Ausführungsformen gezeigt und beschrieben wurden, ist es für Fachleute selbstverständlich, dass verschiedene Änderungen hinsichtlich Form und Details daran vorgenommen werden können, ohne vom Geist und Umfang der Erfindung, wie durch die anhängenden Ansprüche definiert, abzuweichen. Der Umfang der Erfindung wird somit durch die anhängenden Ansprüche angezeigt, und alle Änderungen, die innerhalb der Bedeutung und des Äquivalenzbereichs der Ansprüche liegen, sollen daher umfasst werden.

Claims (19)

  1. Datenverarbeitungsgerät (200), aufweisend: einen Speicher (203), aufweisend eine Vielzahl von Speicherbereiche (204); eine erste Datenverarbeitungskomponente (201); einen Steuerspeicher (205), der für jeden Speicherbereich (204) der Vielzahl von Speicherbereichen (204) eine Anzeige (206) aufweist, ob ein Datenzugriff auf den Speicherbereich (204) von der ersten Datenverarbeitungskomponente (201) durchgeführt werden kann; und eine zweite Datenverarbeitungskomponente (202); wobei die erste Datenverarbeitungskomponente (201) aufweist: • eine Prüfschaltung (207), die eingerichtet ist, um einen Speicherbereich (204) dahingehend zu überprüfen, ob ein Datenzugriff auf den Speicherbereich (204) von der ersten Datenverarbeitungskomponente (201) basierend auf der Anzeige (206) für den Speicherbereich (204) durchgeführt werden kann; • eine Datenzugriffsschaltung (208), die eingerichtet ist, um einen Datenzugriff auf einen Speicherbereich (204) der Vielzahl von Speicherbereichen (204) durchzuführen, wenn ein Datenzugriff auf den Speicherbereich (204) von der ersten Datenverarbeitungskomponente (201) durchgeführt werden kann; und • eine Einstellschaltung (209), die eingerichtet ist, um die Anzeige (206) für einen Speicherbereich (204) einzustellen, um anzuzeigen, dass ein Datenzugriff auf den Speicherbereich (204) von der ersten Datenverarbeitungskomponente (201) nicht durchgeführt werden kann, in Antwort auf Abschluss eines Datenzugriffs der ersten Datenverarbeitungskomponente (201) auf den Speicherbereich (204); und wobei die zweite Datenverarbeitungskomponente (202) eingerichtet ist, um die Anzeige (206) für einen Speicherbereich (204) einzustellen, um anzuzeigen, dass die erste Datenverarbeitungskomponente (201) einen Datenzugriff auf den Speicherbereich (204) durchführen kann.
  2. Datenverarbeitungsgerät (200) gemäß Anspruch 1, wobei die zweite Datenverarbeitungskomponente (202) eingerichtet ist, um die Anzeige (206) für einen Speicherbereich (204) einzustellen, um anzuzeigen, dass die erste Datenverarbeitungskomponente (201) einen Datenzugriff auf den Speicherbereich (204) durchführen kann.
  3. Datenverarbeitungsgerät (200) gemäß Anspruch 1 oder 2, wobei die erste Datenverarbeitungskomponente (201) ferner eine Speicherschnittstelle zum Datenaustausch mit dem Speicher (203) aufweist.
  4. Datenverarbeitungsgerät (200) gemäß einem der Ansprüche 1 bis 3, wobei die erste Datenverarbeitungskomponente (201) eingerichtet ist, um Datenzugriffe auf die Speicherbereiche (204) in vorbestimmter Reihenfolge durchzuführen.
  5. Datenverarbeitungsgerät (200) gemäß einem der Ansprüche 1 bis 4, wobei die erste Datenverarbeitungskomponente (201) einen Eingang aufweist, der eingerichtet ist, um die Anzeige (206) zu empfangen.
  6. Datenverarbeitungsgerät (200) gemäß einem der Ansprüche 1 bis 5, wobei die zweite Datenverarbeitungskomponente (202) ein Prozessor ist, der einen Softwareprozess ablaufen lässt, und wobei die Einstellung der Anzeige (206) für einen Speicherbereich (204), um anzuzeigen, dass die erste Datenverarbeitungskomponente (201) einen Datenzugriff auf den Speicherbereich (204) durchführen kann, von dem Softwareprozess initiiert wird.
  7. Datenverarbeitungsgerät (200) gemäß einem der Ansprüche 1 bis 6, wobei die erste Datenverarbeitungskomponente (201) weiter eine Datenverarbeitungsschaltung (210) und eine Schnittstelle (211) aufweist, die eingerichtet ist, um Daten, die im Verlauf des Datenzugriffs aus dem Speicher (203) gelesen wurden, an die Datenverarbeitungsschaltung (210) weiterzuleiten, oder um die Daten, die im Verlauf des Datenzugriffs in den Speicher (203) geschrieben werden sollen, bereitzustellen.
  8. Datenverarbeitungsgerät (200) gemäß einem der Ansprüche 1 bis 7, wobei die Speicherbereiche (204) Puffer sind, die in einem gemeinsam genutzten Speicher (203) zugeordnet sind.
  9. Datenverarbeitungsgerät (200) gemäß einem der Ansprüche 1 bis 8, wobei die Speicherbereiche (204) gleich groß sind.
  10. Datenverarbeitungsgerät (200) gemäß einem der Ansprüche 1 bis 9, wobei dies ein Computer ist.
  11. Datenverarbeitungsgerät (200) gemäß einem der Ansprüche 1 bis 10, wobei die Anzeige (206), dass ein Datenzugriff auf den Speicherbereich (204) von der ersten Datenverarbeitungskomponente (201) durchgeführt werden kann, die Spezifikation ist, dass die Datenblockgröße eines Datenblocks, der in dem Speicherbereich (204) gespeichert ist, größer als Null ist.
  12. Datenverarbeitungsgerät (200) gemäß einem der Ansprüche 1 bis 10, wobei die Anzeige (206), dass kein Datenzugriff auf den Speicherbereich (204) von der ersten Datenverarbeitungskomponente (201) durchgeführt werden kann, die Spezifikation ist, dass die Datenblockgröße eines Datenblocks, der in dem Speicherbereich (204) gespeichert ist, Null ist.
  13. Datenverarbeitungsgerät (200) gemäß einem der Ansprüche 1 bis 12, wobei für zumindest einen Speicherbereich (204) der Steuerspeicher (205) zusätzlich zu der Anzeige (206) zumindest einen Parameterwert speichert, gemäß dessen der Datenzugriff durchgeführt werden soll, oder die Daten, die in dem Speicherbereich (204) gespeichert sind, von der ersten Datenverarbeitungskomponente (201) verarbeiten werden sollen.
  14. Datenverarbeitungsgerät (200) gemäß Anspruch 13, wobei der Steuerspeicher (205) eingerichtet ist, um den zumindest einen Parameterwert von der zweiten Datenverarbeitungskomponente (202) zu empfangen.
  15. Datenverarbeitungskomponente (201) eines Datenverarbeitungsgeräts (200), wobei die Datenverarbeitungskomponente (201) aufweist: • einen Steuerspeicher (205), der für jeden Speicherbereich (204) der Vielzahl von Speicherbereiche (204) eine Anzeige (206) aufweist, ob ein Datenzugriff auf den Speicherbereich (204) von der ersten Datenverarbeitungskomponente (201) durchgeführt werden kann; • eine Prüfschaltung (207), die eingerichtet ist, um einen Speicherbereich (204) dahingehend zu überprüfen, ob ein Datenzugriff auf den Speicherbereich (204) von der ersten Datenverarbeitungskomponente (201) basierend auf der Anzeige (206) für den Speicherbereich (204) durchgeführt werden kann; • eine Datenzugriffsschaltung (208), die eingerichtet ist, um einen Datenzugriff auf einen Speicherbereich (204) der Vielzahl von Speicherbereiche (204) durchzuführen, wenn ein Datenzugriff auf den Speicherbereich (204) von der ersten Datenverarbeitungskomponente (201) durchgeführt werden kann; • eine Einstellschaltung (209), die eingerichtet ist, um die Anzeige (206) für einen Speicherbereich (204) einzustellen, um anzuzeigen, dass ein Datenzugriff auf den Speicherbereich (204) von der ersten Datenverarbeitungskomponente (201) nicht durchgeführt werden kann, in Antwort auf Abschluss eines Datenzugriffs der ersten Datenverarbeitungskomponente (201) auf den Speicherbereich (204).
  16. Datenverarbeitungsanordnung, aufweisend: • einen ersten Speicher (203), der eine Vielzahl von Datenobjekten aufweist; • einen zweiten Speicher, der eine Vielzahl von Datenspeichereinheiten aufweist, wobei die Anzahl an Datenspeichereinheiten niedriger ist als die Anzahl an Datenobjekten; • eine Datenverarbeitungsschaltung (210), die eingerichtet ist, um auf die Vielzahl von Datenspeichereinheiten für Zustandsinformationen über die Vielzahl von Datenobjekten zuzugreifen; • eine Auswählschaltung, die eingerichtet ist, um ein Datenobjekt aus der Vielzahl von Datenobjekten gemäß einer vorbestimmten Regel auszuwählen; • eine Speicherschaltung, die eingerichtet ist, um Zustandsinformationen über das ausgewählte Datenobjekt in einer Datenspeichereinheit der Vielzahl von Datenspeichereinheiten zu speichern.
  17. Datenverarbeitungsanordnung gemäß Anspruch 16, wobei die Auswählschaltung eingerichtet ist, um das Datenobjekt gemäß einer Ordnung der Datenobjekte auszuwählen.
  18. Datenverarbeitungsanordnung gemäß Anspruch 16 oder 17, wobei die Zustandsinformationen ein Zugriffsrecht auf das Datenobjekt sind.
  19. Datenverarbeitungsanordnung gemäß einem der Ansprüche 16 bis 18, wobei das Datenobjekt ein Speicherbereich (204) eines Speichers (203) ist.
DE201210105622 2011-06-27 2012-06-27 Datenverarbeitungsgerät und Datenverarbeitungsanordnung Withdrawn DE102012105622A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/169,128 2011-06-27
US13/169,128 US8880811B2 (en) 2011-06-27 2011-06-27 Data processing device and data processing arrangement for accelerating buffer synchronization

Publications (1)

Publication Number Publication Date
DE102012105622A1 true DE102012105622A1 (de) 2012-12-27

Family

ID=47321508

Family Applications (1)

Application Number Title Priority Date Filing Date
DE201210105622 Withdrawn DE102012105622A1 (de) 2011-06-27 2012-06-27 Datenverarbeitungsgerät und Datenverarbeitungsanordnung

Country Status (3)

Country Link
US (1) US8880811B2 (de)
CN (1) CN102855199B (de)
DE (1) DE102012105622A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2511794B (en) * 2013-03-13 2020-12-02 Advanced Risc Mach Ltd A Protection Unit and Method for Controlling Access by Plural Processes to a Storage Unit
US10007586B2 (en) * 2016-01-08 2018-06-26 Microsoft Technology Licensing, Llc Deferred server recovery in computing systems
US10387666B2 (en) * 2016-01-15 2019-08-20 Acronis International Gmbh System and method for synchronization of large amounts of data while maintaining control over access rights to such data
US20180143230A1 (en) * 2016-11-22 2018-05-24 Google Inc. System and method for parallel power monitoring
US10296338B2 (en) * 2016-12-09 2019-05-21 Intel Corporation System, apparatus and method for low overhead control transfer to alternate address space in a processor
JP2019008860A (ja) * 2017-06-28 2019-01-17 ルネサスエレクトロニクス株式会社 半導体装置
DE102018124106A1 (de) * 2018-09-28 2020-04-02 Rockwell Collins Deutschland Gmbh Datenverarbeitungsvorrichtung mit mehreren Prozessoren und mehreren Schnittstellen

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004171209A (ja) * 2002-11-19 2004-06-17 Matsushita Electric Ind Co Ltd 共有メモリデータ転送装置
US20050144401A1 (en) * 2003-12-30 2005-06-30 Pantalone Brett A. Multiprocessor mobile terminal with shared memory arbitration
US7188229B2 (en) * 2004-01-17 2007-03-06 Sun Microsystems, Inc. Method and apparatus for memory management in a multi-processor computer system
FR2865291A1 (fr) * 2004-01-21 2005-07-22 Thomson Licensing Sa Procede de transfert de donnees dans un systeme multiprocesseur, systeme multiprocesseur et processeur mettant en oeuvre ce procede
EP1710703A1 (de) * 2005-04-04 2006-10-11 Stmicroelectronics Sa Cache-Kohärenz in einem Multiprozessorsystem mit unterteiltem Speicher
JP2006301894A (ja) * 2005-04-20 2006-11-02 Nec Electronics Corp マルチプロセッサシステム、及びマルチプロセッサシステムのメッセージ伝達方法
JP2006309512A (ja) * 2005-04-28 2006-11-09 Nec Electronics Corp マルチプロセッサシステム、及びマルチプロセッサシステムのメッセージ伝達方法
US8286188B1 (en) * 2007-04-27 2012-10-09 Marvell Israel (M.I.S.L.) Ltd. Method and apparatus for advanced interprocess communication

Also Published As

Publication number Publication date
CN102855199A (zh) 2013-01-02
US20120331240A1 (en) 2012-12-27
CN102855199B (zh) 2016-05-11
US8880811B2 (en) 2014-11-04

Similar Documents

Publication Publication Date Title
DE102012105622A1 (de) Datenverarbeitungsgerät und Datenverarbeitungsanordnung
DE2716051C2 (de) Datenverarbeitungsanlage mit einem oder mehreren Prozessoren mit mindestem einem Ein-/Ausgabekanal mit mehreren Unterkanälen und mit einer Speicheranordnung, bei der zum Speicherzugriff Schlüssel verwendet werden
DE3114961C2 (de)
DE2350884C2 (de) Adreßumsetzungseinheit
DE2523414C3 (de) Hierarchische Speicheranordnung mit mehr als zwei Speicherstufen
DE2856483C2 (de)
DE2854485C2 (de) Datenverarbeitungsanlage
DE2646296C3 (de) Elektronische assoziative Mehrrechner Schaltungsanordnung mit einem modularen Aufbau
DE2829550C2 (de)
DE2755952C2 (de)
DE102015117019B4 (de) Serielle Peripherieschnittstellen-Kettenkommunikation mit rahmengebundener Antwort
EP0006164B1 (de) Multiprozessorsystem mit gemeinsam benutzbaren Speichern
DE2806045A1 (de) Dv-system mit pufferspeicher
DE2928488A1 (de) Speicher-subsystem
DE2854397A1 (de) Pufferspeichereinheit fuer ein datenverarbeitungssystem
EP0010198A2 (de) Vorrichtung zur Steuerung des Seitenaustausches in einem Datenverarbeitungssystem mit virtuellem Speicher
CH615521A5 (de)
DE3508291A1 (de) Realzeit-datenverarbeitungssystem
DE2612139A1 (de) Ein/ausgang-steuerungssystem
DE2523372B2 (de) Eingabe-ZAusgabe-Anschlußsteuereinrichtung
DE2441754A1 (de) Prozessor-datenuebertragungssteueranordnung sowie verfahren zur steuerung der datenuebertragung eines prozessors
DE2336020C3 (de) Adressen-Berechnungsschaltung für Paritätsfehler-Korrekturprogramme
DE102016201340A1 (de) Konfigurierung serieller Geräte
DE2807321A1 (de) Spannungsueberwachung in einem datenverarbeitungssystem
DE2517170C2 (de) Schaltungsanordnung zum Unterbrechen des Programmablaufs in Datenverarbeitungsanlagen mit mehreren Ansteuereinrichtungen von Sekundärspeichern und dergleichen Speichereinheiten mit sequentiellem Zugriff

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R081 Change of applicant/patentee

Owner name: INTEL DEUTSCHLAND GMBH, DE

Free format text: FORMER OWNER: INTEL MOBILE COMMUNICATIONS GMBH, 85579 NEUBIBERG, DE

R082 Change of representative

Representative=s name: VIERING, JENTSCHURA & PARTNER MBB PATENT- UND , DE

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