[go: up one dir, main page]

DE60316197T2 - Verfahren und System zum Teilen eines Speichermoduls - Google Patents

Verfahren und System zum Teilen eines Speichermoduls Download PDF

Info

Publication number
DE60316197T2
DE60316197T2 DE60316197T DE60316197T DE60316197T2 DE 60316197 T2 DE60316197 T2 DE 60316197T2 DE 60316197 T DE60316197 T DE 60316197T DE 60316197 T DE60316197 T DE 60316197T DE 60316197 T2 DE60316197 T2 DE 60316197T2
Authority
DE
Germany
Prior art keywords
processors
processor
memory
memory module
collision
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.)
Expired - Fee Related
Application number
DE60316197T
Other languages
English (en)
Other versions
DE60316197D1 (de
Inventor
Rudi Frenzel
Raj Kumar Jain
Markus Terschluse
Christian Horak
Stefan Uhlemann
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.)
Infineon Technologies AG
Original Assignee
Infineon Technologies AG
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 US10/117,668 external-priority patent/US20030088744A1/en
Priority claimed from US10/133,941 external-priority patent/US7346746B2/en
Application filed by Infineon Technologies AG filed Critical Infineon Technologies AG
Publication of DE60316197D1 publication Critical patent/DE60316197D1/de
Application granted granted Critical
Publication of DE60316197T2 publication Critical patent/DE60316197T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft allgemein integrierte Schaltungen (ICs). Insbesondere betrifft die vorliegende Erfindung eine verbesserte Architektur mit gemeinsam genutzten Speichern.
  • Hintergrund der Erfindung
  • 1 zeigt ein Blockdiagramm eines Teils eines herkömmlichen Ein-Chip-Systems (System-on-Chip, SOC) 100, wie beispielsweise eines digitalen Signalprozessors (DSP). Wie dargestellt, weist das SOC einen Prozessor 110 auf, der mit einem Speichermodul 160 über einen Bus 180 verbunden ist.
  • Das Speichermodul speichert ein Computerprogramm mit einer Abfolge von Anweisungen. Während des Betriebs des SOC ruft der Prozessor die Anweisungen vom Speichermodul ab und führt diese zur Durchführung der gewünschten Funktion aus.
  • Ein SOC kann mit mehreren Prozessoren versehen sein, die beispielsweise das gleiche Programm ausführen. Abhängig von der Anwendung können die Prozessoren verschiedene Programme ausführen oder dasselbe Programm gemeinsam nutzten. Üblicherweise ist jedem Prozessor für eine verbesserte Performance sein eigenes Speichermodul zugeordnet, weil auf ein Speichermodul während jeder Taktzeit nur von einem einzigen Prozessor zugegriffen werden kann. Wenn der Prozessor sein eigenes Speichermodul aufweist, braucht daher der Prozessor nicht darauf zu warten, bis der Speicher frei wird, da er der einzige Prozessor ist, der auf das ihm zugeordnete Speichermodul zugreift. Die gesteigerte Performance wird jedoch mit dem Verlust einer größeren Chipgröße erreicht, da mehrfache Speichermodule für jeden Prozessor nötig sind.
  • Die US 3,931,613 offenbart ein Datenverarbeitungssystem, dessen Betriebslogik ausgeführt ist, einen überlappenden Zugriff oder Abrufoperationen, wie beispielsweise den Zugriff auf ein zweites Speichermodul mit einer Prozessoreinheit zu ermöglichen, bevor eine Datenübertragung in Bezug auf ein erstes Speichermodul beendet ist, und ein Auslesen des zweiten Speichermoduls während eines Zurückschreibezyklus des ersten Speichermoduls durchgeführt werden kann, um die Gesamtverarbeitungszeit zu reduzieren.
  • Wie aus der oben erfolgten Diskussion offensichtlich ist, ist es wünschenswert, ein System bereitzustellen, in dem die Prozessoren ein Speichermodul gemeinsam benützen können, um die Chipgröße ohne Leistungsnachteilen herkömmlicher Ausgestaltungen zu verringern.
  • Zusammenfassung der Erfindung
  • Die vorliegende Erfindung betrifft ein Verfahren für eine gemeinsame Nutzung eines Speichermoduls durch mehrere Prozessoren, aufweisend: Unterteilen des Speichermoduls in n Bereiche, wobei n = wenigstens 2, wodurch es ermöglicht wird, dass auf das Speichermodul von einem oder mehreren Prozessoren gleichzeitig zugegriffen werden kann, Kartieren des Speichermoduls zum Zuordnen aufeinanderfolgender Adressen zu wechselnden Bereichen des Speichers, Speichern von Datenwörtern in dem Speicher, wobei Datenwörter in aufeinanderfolgenden Adressen in abwechselnden Bereichen aufgrund der Kartierung des Speichers gespeichert werden, Bereitstellen eines ersten Signalpfades, der, wenn ausgewählt, einen Cache mit einem Prozessor und dem Speichermodul koppelt, wobei der Cache erlaubt, dass der Prozessor eine Mehrzahl von Datenwörtern von verschiedenen Bereichen gleichzeitig abrufen kann, Bereitstellen eines zweiten Signalpfades, der den Prozessor mit dem Speichermodul koppelt wenn ausgewählt, und Auswählen des ersten Signalpfades im Falle einer Kollision und Auswählen des zweiten Signalpfades, wenn keine Kollision vorherrscht.
  • Kurze Beschreibung der Zeichnungen
  • 1 zeigt ein Blockdiagramm eines herkömmlichen SOC;
  • 2 zeigt ein System;
  • 3-5 zeigen einen Fluss einer FCU;
  • 6 zeigt ein System gemäß einer Ausführungsform der Erfindung;
  • 7-8 zeigen Flussdiagramme einer Entscheidungseinheit gemäß mehrerer Ausführungsformen der Erfindung; und
  • 9-10 zeigen Speichermodule gemäß mehrerer Ausführungsformen der Erfindung.
  • Bevorzugte Ausführungsformen der Erfindung
  • 2 zeigt ein Blockdiagramm eines Teils eines Systems 200.
  • Das System weist beispielsweise mehrere digitale Signalprozessoren (DSPs) für Anwendungen im Bereich von digitalen Mehrfach-Anschluss Teilnehmeranschlussleitung (DSL) auf einem einzigen Chip auf. Das System umfasst m Prozessoren 210, wobei m eine ganze Zahl größer als oder gleich 2 ist. Das System umfasst beispielsweise erste und zweite Prozessoren 210a-b (m = 2). Mehr als zwei Prozessoren können auch verwendet werden.
  • Die Prozessoren sind mit einem Speichermodul 260 über entsprechende Speicherbusse 218a und 218b gekoppelt. Der Speicherbus hat beispielsweise eine Datenbusbreite von 16 Bits. Busse mit anderen Datenbreiten können ebenfalls abhängig von der Datenbreite jedes Datenbytes benutzt werden. Von den Prozessoren abgerufene Datenbytes werden im Speichermodul gespeichert.
  • Die Datenbytes weisen wahlweise Programmanweisungen auf, wobei die Prozessoren die Anweisungen von dem Speichermodul für eine Ausführung abrufen.
  • Wahlweise teilen sich die Prozessoren das Speichermodul ohne einer bemerkbaren Verringerung der Performance, wodurch die Notwendigkeit mehrere Speichermodule für jeden Prozessor vorzusehen vermieden wird.
  • Eine bemerkbare Verringerung der Performance wird durch eine Aufteilung des Speichermoduls in eine Anzahl n unabhängig betreibbarer Bereiche 265 vermieden, wobei n eine natürliche Zahl größer oder gleich 2 ist. Bevorzugt entspricht die Anzahl n der Anzahl von Prozessoren im System (d.h. n = m). Da die Speicherbereiche unabhängig voneinander funktionieren, können Prozessoren gleichzeitig auf verschiedene Bereiche des Speichermoduls während eines Taktzyklus zugreifen.
  • Ein Speicherbereich kann in eine Anzahl x verschiedener zugreifbarer Blöcke 275a-p unterteilt werden, wobei x eine natürliche Zahl größer gleich 1 ist. Wahlweise kann jeder Bereich in acht unabhängig zugreifbare Blöcke unterteilt werden. Im Allgemeinen gilt, je größer die Anzahl der Blöcke ist, je geringer ist die Wahrscheinlichkeit einer Kollision. Die Anzahl der Blöcke ist gemäß einer Ausführungsform derart ausgewählt, um die Performance zu optimieren und Kollisionen zu verringern.
  • Wahlweise hat jeder Prozessor (210a oder 210b) einen Bus (218a oder 218b), der mit jedem Bereich gekoppelt ist. Die Blöcke eines Speicherarray haben jeweils beispielsweise eine Steuerschaltung 278, um geeignet Daten über den Bus an die Prozessoren zu übermitteln.
  • Die Steuerschaltung umfasst beispielsweise eine Multiplexerschaltung oder Tri-State-Puffer, um die Daten an den gewünschten Prozessor zu leiten. Jeder Bereich ist beispielsweise in acht Blöcke unterteilt. Indem unabhängige Blöcke innerhalb eines Bereichs vorgesehen sind, können die Prozessoren in Vorteilhafterweise auf verschiedene Blöcke zugreifen, unabhängig davon, ob dieser Teil desselben Bereichs sind oder nicht. Dies erhöht weiter die Systemperformance durch eine Reduzierung potenzieller Konflikte zwischen den Prozessoren.
  • Des Weiteren ist der Speicher derart kartiert, sodass Kollisionsbehaftete Speicheradressen zwischen den verschiedenen Speicherbereichen abgewechselt werden. Beispielsweise in einem Zwei-Bereichs-Speichermodul (beispielsweise Bereich 0 und Bereich 1) würde eine ein Bereiche (Bereich 0) den geraden Adressen zugeordnet werden, während die ungeraden Adressen dem anderen Bereich (Bereich 1) zugewiesen werden. Dies hat zur Folge, dass Datenbytes in nachfolgenden Adressen in alternierenden Speicherbereichen gespeichert werden, sodass ein Datenbyte 1 im Bereich 0, ein Datenbyte 2 im Bereich 1, ein Datenbyte 3 im Bereich 0 usw. gespeichert sind. Die Datenbytes weisen Anweisungen eines Programms auf. Da die Programmanweisungen sequenziell mit Ausnahme von Sprüngen (beispielsweise Verzweigungs- und Schleifenanweisungen) ausgeführt werden, würde ein Prozessor im Allgemeinen auf verschiedene Bereiche des Speichermoduls nach jedem Zyklus während der Programmausführung zugreifen.
  • Durch Synchronisieren oder Staffeln der Prozessoren, um das Programm derart auszuführen, dass die Prozessoren auf ver schiedene Speicherbereiche im selben Taktzyklus zugreifen, können mehrere Prozessoren das im Speichermodul 260 gespeicherte Programm gleichzeitig ausführen.
  • Eine Flusskontrolleinheit (FCU) 245 synchronisiert den Zugriff der Prozessoren auf verschiedene Speicherblöcke, um Speicherkonflikte oder Kollisionen zu vermeiden. Im Falle eines Speicherkonflikts (beispielsweise wenn zwei Prozessoren gleichzeitig auf denselben Block zugreifen), dann sperrt die FCU einen der Prozessoren (beispielsweise durch das Einfügen eines Waitstate oder Taktzyklus) und erlaubt den anderen Prozessor, auf den Speicher zuzugreifen. Dies sollte die Prozessoren derart synchronisieren, dass diese auf verschiedene Speicherbereiche im nächsten Taktzyklus zugreifen. Einmal synchronisiert, können beide Prozessoren auf das Speichermodul während desselben Taktzyklus zugreifen bis ein Speicherkonflikt, beispielsweise bedingt durch eine Sprunganweisung, auftritt. Wenn beide Prozessoren (210a und 210b) während desselben Taktzyklus versuchen, auf den Block 245a zuzugreifen, dann wird beispielsweise für den Prozessor 210b für einen Takt ein Waitstate eingefügt, sodass der Prozessor 210a als erstes auf den Block 275a zugreifen kann. Im nächsten Taktzyklus greift der Prozessor 210a auf den Block 275b und der Prozessor 210b greift auf den Block 275a zu. Die Prozessoren 210a und 210b sind demnach synchronisiert, um auf verschiedene Speicherbereiche in nachfolgenden Taktzyklen zuzugreifen.
  • Wahlweise können die Prozessoren mit entsprechenden kritischen Speichermodulen 215 ausgestattet sein. Das kritische Speichermodul ist beispielsweise kleiner als das Hauptspeichermodul 260 und wird zur Speicherung von Programmen oder von Unterprogrammen verwendet, auf welche häufig die Prozessoren zugreifen (beispielsweise kritische MIPS). Die Verwendung von kritischen Speichermodulen erhöht die Systemperformance durch Verringerung von Speicherkonflikten, ohne eine deutliche Vergrößerung der Chipgröße in Kauf nehmen zu müssen.
  • Eine Steuerschaltung 214 ist vorgesehen. Die Steuerschaltung ist mit einem Bus 217 und 218 gekoppelt, um geeignet Daten vom Speichermodul 260 oder vom kritischen Speichermodul 215 zu multiplexen. Wahlweise umfasst die Steuerschaltung Tri-State-Ppuffer, um den geeigneten Bus mit dem Prozessor zu koppeln oder zu entkoppeln.
  • Wahlweise ist die FCU als Zustandsmaschine ausgeführt. 3 zeigt einen allgemeinen Datenfluss einer FCU Zustandsmaschine. Wie dargestellt, steuert die FCU die Zugriffe der Prozessoren (beispielsweise A oder B). Beim Schritt 310 wird die FCU initialisiert. Während des Betriebs rufen die Prozessoren entsprechende Speicheradressen (AAdd oder BAAdd) entsprechend dem Speicherzugriff während des nächsten Taktzyklus auf. Die FCU vergleicht AAdd und BAdd beim Schritt 320, um festzustellen, ob ein Speicherkonflikt besteht oder nicht (beispielsweise ob die Prozessoren auf dieselben oder verschiedene Speicherblöcke zugreifen). Wahlweise überprüft die FCU die Adressen, ob auf eine der kritischen Speichermodule zugegriffen wird (nicht dargestellt). Wenn entweder der Prozessor A oder der Prozessor B auf seinen entsprechenden kritischen Speicher zugreift, dann liegt kein Konflikt vor.
  • Wenn kein Konflikt vorliegt, dann greifen die Prozessoren auf das Speichermodul im selben Zyklus beim Schritt 340 zu. Wenn ein Konflikt besteht, dann bestimmt die FCU die Zugriffspriorität der Prozessoren beim Schritt 350. Wenn der Prozessor A die höhere Priorität hat, dann erlaubt die FCU dem Prozessor A auf den Speicher zuzugreifen, während der Prozessor B einen Waitstate ausführt, Schritt 360. Wenn der Prozessor B die höhere Priorität hat, dann greift der Prozessor B auf den Spei cher zu, während der Prozessor A einen Waitstate ausführt, Schritt 370.
  • Nach dem Schritt 340, 360 oder 370 kehrt die FCU zum Schritt 320 zurück, um die Adressen für den nächsten Speicherzugriff durch die Prozessoren zu vergleichen. Beispielsweise wenn ein Konflikt besteht, so wie beim Schritt 360, dann wird ein Waitstate für den Prozessor B eingefügt, während der Prozessor A bei der Adresse AAdd auf den Speicher zugreift. Somit sind beide Prozessoren synchronisiert, um auf verschiedene Speicherblöcke in nachfolgenden Zyklen zuzugreifen.
  • 4 zeigt einen Datenfluss 401 einer FCU. Im Falle eines Konflikts weist die FCU die Zugriffspriorität beim Schritt 460 durch Überprüfen des Prozessors A zu, um zu ermitteln, ob er einen Sprung ausgeführt hat oder nicht. Wahlweise, wenn der Prozessor B einen Sprung ausgeführt hat, dann wird der Prozessor B gesperrt (beispielsweise durch Ausführen eines Waitstate) während dem Prozessor A die Zugriffspriorität erteilt wird. Ansonsten wird der Prozessor A gesperrt und dem Prozessor B wird die Zugriffspriorität gewährt.
  • Wahlweise vergleicht die FCU die Adressen der Prozessoren A und B im Schritt 440, um zu ermitteln, ob die Prozessoren auf denselben Speicherblock zugreifen. In dem Fall, dass die Prozessoren auf verschiedene Speicherblöcke zugreifen (d.h. kein Konflikt), dann erlaubt die FCU beiden Prozessoren gleichzeitig auf den Speicher beim Schritt 430 zuzugreifen. Wenn ein Konflikt besteht, dann vergleicht die FCU beispielsweise die geringwertigsten Bits der aktuellen und der vorhergehenden Adressen des Prozessors A, um die Zugriffspriorität im Schritt 460 zu ermitteln. Wenn die geringwertigsten Bits nicht gleich sind (d.h. die aktuelle und die vorhergehenden Adressen sind fortlaufend) dann kann der Prozessor B den Konflikt durch eine Ausführung eines Sprungs verursacht haben. Somit fährt die FCU mit Schritt 470 weiter und sperrt den Prozessor B während sie dem Prozessor A erlaubt, auf den Speicher zuzugreifen. Wenn die geringwertigsten Bits gleich sind, dann wird der Prozessor A gesperrt und der Prozessor B greift auf den Speicher zu, Schritt 480.
  • 5 zeigt eine FCU 501. Vor dem Betrieb wird die FCU beim Schritt 510 initialisiert. Beim Schritt 520 vergleicht die FCU die Adressen der Prozessoren, um zu ermitteln, ob diese auf verschiedene Speicherblöcke zugreifen. Wenn die Prozessoren auf verschiedene Speicherblöcke zugreifen, dann wird beiden Prozessoren der Zugriff erlaubt, Schritt 530. Wenn aber die Prozessoren auf denselben Speicherblock zugreifen, dann besteht ein Konflikt. Während eines Konfliktes ermittelt die FCU, welcher der Prozessoren den Konflikt verursacht hat, beispielsweise durch einen Sprung. Wahlweise bei den Schritten 550 und 555 werden die geringwertigsten Bits der aktuellen und vorhergehenden Adressen der Prozessoren verglichen. Wenn der Prozessor A den Sprung verursacht hat (beispielsweise wenn die geringwertigsten Bits der vorhergehenden und aktuellen Adresse des Prozessors A gleich sind während die geringwertigsten Bits der vorhergehenden und aktuellen Adresse des Prozessors B unterschiedlich sind) geht die FCU zum Schritt 570 über. Beim Schritt 570 sperrt die FCU den Prozessor A und erlaubt dem Prozessor B beim Schritt 570 auf den Speicher zuzugreifen. Wenn der Prozessor B den Sprung verursacht hat, dann sperrt die FCU den Prozessor B während sie dem Prozessor A erlaubt, beim Schritt 560 auf den Speicher zuzugreifen.
  • Es kann vorkommen, dass beide Prozessoren einen Sprung durchgeführt haben. In diesem Fall fährt die FCU beim Schritt 580 fort und durchsucht ein Prioritätsregister, welches eine Information darüber enthält, welcher Prozessor Priorität hat.
  • Wahlweise wird das Prioritätsregister hin und her geschaltet, um die Priorität zwischen den beiden Prozessoren abzuwechseln. Wie es in der 5 dargestellt ist, schaltet die FCU das Prioritätsregister beim Schritt 580 um, bevor es ermittelt, welcher Prozessor die Priorität hat. Alternativ kann das Prioritätsregister umgeschaltet werden, nachdem die Priorität ermittelt wurde. Wahlweise deutet eine 1 im Prioritätsregister an, dass der Prozessor A die Priorität hat (Schritt 585) während eine 0 andeutet, dass der Prozessor B die Priorität hat (Schritt 590). Das Verwenden einer 1, um anzuzeigen, dass der Prozessor B die Priorität hat, und eine 0, um anzuzeigen, dass A die Priorität hat, ist auch verwendbar. Dasselbe Verfahren kann auch im Falle eines bestehenden Konflikts durchgeführt werden, wenn kein Prozessor einen Sprung verursacht hat (beispielsweise geringwertigste Bits der aktuellen und vorhergehenden Adresse des Prozessors A oder des Prozessors B sind nicht dieselben).
  • Andere Arten von Entscheidungsprogrammen können ebenfalls durch die FCU verwendet werden, um die Prozessoren zu synchronisieren. Die Prozessoren können einem spezifischen Prioritätslevel gegenüber dem anderen Prozessor oder den anderen Prozessoren zugeordnet werden.
  • 6 zeigt ein Blockdiagramm eines Teils eines Systems 600 gemäß einer Ausführungsform der Erfindung.
  • Das System umfasst beispielsweise mehrere digitale Signalprozessoren (DSPs) für Anwendungen im Bereich von digitalen Mehrfachanschluss-Teilnehmeranschlussleitungen (DSL) auf einem einzigen Chip. Das System umfasst m Prozessoren 610, wobei m eine ganze Zahl gleich oder größer als 2 ist. Das System umfasst beispielsweise erste und zweite Prozessoren 610a bis b (m = 2). Mehr als zwei Prozessoren können auch verwendet werden.
  • Ein Speichermodul 660 ist vorgesehen, um gemeinsam von den Prozessoren benutzt zu werden. Datenwörter, auf die die Prozessoren zugreifen, sind im Speichermodul gespeichert. Ein Datenwort umfasst eine Gruppe von Bits (beispielsweise 32 Bits). In einer Ausführungsform weisen die Datenwörter Programmanweisungen auf, auf die von den Prozessoren im Speichermodul über Speicherbusse (beispielsweise 618a und 618b) für eine Ausführung zugegriffen werden. Die Datenwörter können ebenfalls Applikationsdaten aufweisen.
  • Gemäß einer Ausführungsform der Erfindung teilen sich die Prozessoren das Speichermodul ohne eine bemerkbare Verringerung der Performance, wodurch die Notwendigkeit mehrfacher Speichermodule für jeden Prozessor vorzusehen vermieden wird.
  • Eine bemerkbare Verringerung der Performance wird durch eine Aufteilung des Speichermoduls in eine Anzahl n unabhängig betreibbarer Bereiche (beispielsweise 665a und 665b) vermieden, wobei n eine Zahl größer oder gleich 2 ist. Bevorzugt entspricht die Anzahl n der Anzahl von Prozessoren im System (d.h. n = m). Da die Speicherbereiche unabhängig voneinander funktionieren, können Prozessoren gleichzeitig auf verschiedene Bereiche des Speichermoduls während eines Taktzyklus zugreifen.
  • Gemäß einer weiteren Ausführungsform können die Bereiche in eine Anzahl x verschiedener zugreifbarer Blöcke 665a-p unterteilt werden, wobei x eine natürliche Zahl größer gleich 1 ist.
  • Ein Bereich ist beispielsweise in acht unabhängig zugreifbare Blöcke unterteilt. Im Allgemeinen gilt, je größer die Anzahl der Blöcke ist, je geringer ist die Wahrscheinlichkeit einer Kollision. Die Anzahl der Blöcke ist gemäß einer Ausführungsform derart ausgewählt, um die Performance zu optimieren und Kollisionen zu verringern.
  • Die Blöcke des Speicherarray haben beispielsweise Kontrollschaltungen 668, um geeignet Daten über die Speicherbusse (beispielsweise 618a oder 618b) an die Prozessoren (610a oder 610b) zu übermitteln. Die Steuerschaltung umfasst beispielsweise Multiplexerschaltungen oder Tri-State-Puffer, um die Daten an den gewünschten Prozessor zu leiten. Indem unabhängige Blöcke innerhalb eines Bereichs vorgesehen sind, können die Prozessoren vorteilhafterweise auf verschiedene Blöcke zugreifen, egal ob diese Teil desselben Bereichs sind oder nicht.
  • Dies erhöht weiter die Systemperformance durch eine Reduzierung potenzieller Konflikte zwischen den Prozessoren.
  • Des Weiteren ist der Speicher derart kartiert, sodass einen Konflikt aufweisende Speicheradressen zwischen den verschiedenen Speicherbereichen abgewechselt werden. Beispielsweise in einem Zweibereichspeichermodul (beispielsweise Bereich 0 und Bereich 1) würde einem Bereich (Bereich 0) die geraden Adressen zugeordnet werden, während die ungeraden Adressen dem anderen Bereich (Bereich 1) zugewiesen werden. Dies hat zur Folge, dass Datenbits in nachfolgenden Adressen in alternierenden Speicherbereichen gespeichert werden, sodass ein Datenwort 1 im Bereich 0, ein Datenwort 2 im Bereich 1, ein Datenwort 3 im Bereich 0 usw. gespeichert sind. In einer Ausführungsform weisen die Datenwörter Programmanweisungen auf. Da die Programmanweisungen sequenziell mit Ausnahme von Sprüngen (beispielsweise Verzweigung- und Schleifenanweisungen) ausge führt werden, würde ein Prozessor im Allgemeinen auf verschiedene Bereiche des Speichermoduls nach jedem Zyklus während der Programmausführung zugreifen. Durch Synchronisieren oder Staffeln der Prozessoren, um das Programm derart auszuführen, dass die Prozessoren auf verschiedene Speicherbereiche im selben Taktzyklus zugreifen, können mehrere Prozessoren das im Speichermodul 660 gespeicherte Programm gleichzeitig ausführen.
  • Eine Entscheidungssteuereinheit (ACU) 645 ist vorgesehen, die mit dem Prozessor über den Datenbus und mit dem Speichermodul über den Speicherbus gekoppelt ist. Die ACU steuert den Zugriff auf den Speicher durch die Prozessoren. Im Falle eines Speicherkonflikts (beispielsweise greifen zwei Prozessoren gleichzeitig auf denselben Bereich zu) ermittelt die ACU, welcher Prozessor die Priorität hat, um auf das Speichermodul zuzugreifen, während die anderen Prozessoren gesperrt sind (beispielsweise durch Ausführen eines Waitstate oder Wartezyklus). Dies synchronisiert im Allgemeinen die Prozessoren, um auf verschiedene Bereiche im nachfolgenden Taktzyklus zuzugreifen.
  • Gemäß einer Ausführungsform ist ein Prioritätsregister vorgesehen, um anzugeben, welcher Prozessor Priorität hat. Im Falle eines Systems mit zwei Prozessoren kann das Prioritätsregister ein Bit (P Bit) aufweisen. Zusätzliche Bits können hinzukommen, um eine zusätzliche Anzahl von Prozessoren zu berücksichtigen. Das Prioritätsregister wird nach dem Auftreten einer Kollision aktualisiert, um die Priorität zwischen den Prozessoren abzuwechseln.
  • Beispielsweise deutet ein Wert 1' im P Bit an, dass der erste Prozessor Priorität hat, und eine 0' deutet an, dass der zweite Prozessor Priorität hat. In jedem Zyklus, in dem eine Kollision auftritt, wird das P Bit hin- und hergeschaltet, um die Priorität der Prozessoren umzuschalten. Andere Arten von Entscheidungsprogrammen können ebenfalls verwendet werden.
  • Wahlweise können die Prozessoren mit entsprechenden kritischen Speichermodulen 615 ausgestattet sein. Das kritische Speichermodul ist beispielsweise kleiner als das Hauptspeichermodul 660 und wird zur Speicherung von Programmen oder von Unterprogrammen verwendet, auf die die Prozessoren häufig zugreifen (beispielsweise kritische MIPS). Die Verwendung von kritischen Speichermodulen erhöht die Systemperformance durch Verringerung von Speicherkonflikten, ohne eine deutliche Vergrößerung der Chipgröße in Kauf nehmen zu müssen.
  • Die ACU 645 ist mit n Speicherlogikeinheiten (CLUs) gekoppelt, und zwar einer für jeden der n Prozessoren. Die ACU weist beispielsweise eine erste CLU 648a für den ersten Prozessor 610a und eine zweite CLU 648b für den zweiten Prozessor 610b auf. Ist eine CLU aktiviert, dann ist dem entsprechenden Prozessor der Zugang zum Speichermodul erlaubt. In einer Ausführungsform ist die CLU mit einem Prozessor und mit den n Bereichen des Speichermoduls gekoppelt, um dem Prozessor gleichzeitig Zugriff auf die n Speicherbereiche zu erlauben. Da die Bandbreite eines Prozessors gleich der Bandbreite des Speicherbereichs ist, erlaubt die CLU dem Prozessor mehr Wörter vom Speicher abzurufen als nötig. In einer Ausführungsform kann der Prozessor potenziell zweimal so viele Wörter als nötig abrufen.
  • Die CLU weist erste (Cache) und zweite (normal) Signalpfade auf. Der Cache-Signalpfad weist beispielsweise ein Cacheregister (633a oder 633b) und einen Multiplexer (636a oder 636b) auf. Wenn der Cachepfad ausgewählt ist, dann greift der mit der CLU gekoppelte Prozessor auf die ersten und zweiten Speicherbereiche (665a bis b) zu. Gemäß einer Ausführungsform wird auf den aktuelle Adressenplatz (Addr), wie vom Prozessor spezifiziert, und auf die nächste Adresse (Addr+1) zugegriffen.
  • Der Multiplexer wählt das Wort bei der Adresse (Addr+1) aus und speichert es im Cache, während das Wort bei der aktuellen Adresse (Addr) zum Prozessor weiter geleitet wird. Die Adresse des Wortes, das im Cache gespeichert ist, wird beispielsweise in einem Cache-Adressregister (640a oder 640b) gespeichert. Ist der zweite Pfad (normal) ausgewählt, dann greift der Prozessor auf den aktuellen Speicherplatz zu. Die CLU übermittelt das Datenwort des aktuellen Speicherplatzes an den Prozessor über den zweiten Signalpfad. Indem ein Cache zum Speichern von Datenwörtern in nachfolgenden Adressen vorgesehen ist, wird die Wahrscheinlichkeit eines Datenzugriffs auf den Speicher verringert, wodurch die Wartezeit, bedingt durch einen Speicherkonflikt, reduziert wird.
  • Die Prozessoren können mit entsprechenden kritischen Speichermodulen 615a und 615b ausgestattet sein. Das kritische Speichermodul ist beispielsweise kleiner als das Hauptspeichermodul 660 und wird für die Speicherung von Daten (beispielsweise Programme oder Unterprogramme) verwendet, auf die häufig die Prozessoren zugreifen (beispielsweise kritische MIPS). Die Verwendung von kritischen Speichermodulen erhöht die Systemperformance, indem Speicherkonflikte reduziert werden, ohne wesentlich die Chipgröße zu erhöhen.
  • 7 zeigt einen Datenfluss einer ACU Zustandsmaschine gemäß einer Ausführungsform der Erfindung. Wie dargestellt, steuert die ACU die Zugriffe der ersten und zweiten Prozessoren (A oder B). Die ACU wird beispielsweise vor einer Systemausführung (beispielsweise System power up) initialisiert (710).
  • Die Initialisierung umfasst beispielsweise das Setzen des Prioritätsbits, um anzuzeigen, welcher Prozessor im Falle eines Speicherkonflikts Priorität hat. Das Prioritätsregister ist beispielsweise derart gesetzt, dass der Prozessor A Priorität hat.
  • Während des Betriebs des Systems rufen die Prozessoren entsprechende Speicheradressen (AAddr oder BAddr, die die Speicheradressen repräsentieren, die aktuell vom Prozessor A und Prozessor B aufgerufen werden) auf, die einem Speicherzugriff im nächsten Taktzyklus entsprechen. Die ACU ermittelt bei den Schritten 720 und 722, ob ein Speicherkonflikt vorliegt oder nicht, beispielsweise ob die Prozessoren auf denselben Speicherbereich zugreifen oder nicht. Der Speicherbereich stimmt gemäß einer Ausführungsform mit einem Speicherblock überein. In einer anderen Ausführungsform stimmt der Speicherbereich mit Speicherblöcken in verschiedenen Bereichen überein, wobei die Speicherblöcke nachfolgende Adressen aufweisen. Wenn kein Konflikt vorliegt, dann greifen die Prozessoren A und B auf entsprechende Bereiche des Speichermoduls beim Schritt 750 zu. Die CLUs der Prozessoren A und B sind aktiviert, wobei die normalen Signalpfade ausgewählt sind. Daher ruft jeder Prozessor Datenwörter von den entsprechenden Speicherbereichen bei den Adressen Addr und BAddr ab.
  • Wenn eine Kollision vorliegt, dann überprüft die ACU das Prioritätsregister, um zu entscheiden, welcher Prozessor Zugriffspriorität hat, Schritt 726. Dem Prozessor P mit der Zugriffspriorität (beispielsweise Prozessor A) wird Zugriff auf den Speicher erlaubt, während der andere Prozessor P' mit geringerer Priorität beim Schritt 728 einen Waitstate (beispielsweise Prozessor B) ausführt. Daher, wenn die Prozessoren anschließend auf Datenwörter in aufeinanderfolgenden Plätzen in den nächsten Zyklen zugreifen, werden auf verschiedene Bereiche ohne Ausführung von Waitstates zugegriffen. Durch Synchronisieren oder Staffeln der Prozessoren für ein Ausführen des Programms derart, dass die Prozessoren auf verschiedene Speicherbereiche in demselben Zyklus zugreifen, können mehrere Prozesse dasselbe in dem Speichermodul 660 gespeicherte Programm gleichzeitig ohne Kollision ausführen.
  • Die CLU des Prozessors P wird aktiviert, wobei der Cache-Signalpfad ausgewählt ist, Schritt 730. Die Daten von der augenblicklichen Adresse PAddr und der nächsten nachfolgenden Adresse PAddr+1 werden aus den Speicherbereichen ausgelesen. Die Daten der augenblicklichen Adresse PAddr wird an den Prozessor P für einen Zugriff übermittelt und Daten der nächsten Adresse PAddr+1 werden in das Cache-Register gespeichert. Die ACU aktualisiert die Priorität beim Schritt 332 für die nächste Kollisionsauswertung beim Schritt 722.
  • Die ACU ermittelt beim Schritt 734, ob die neue Adresse PAddr, die durch den Prozessor im nächsten Zyklus spezifiziert wird, mit der Adresse der Cache-Daten (d.h. dem Cache-Treffer, engl.: cache hit) übereinstimmt. Wenn ein Cache-Verfehlen (engl.: chache miss) auftritt, dann wird der Vorgang durch Auswertung der durch die Prozessoren A und B spezifizierten Adressen für eine Kollision in dem Schritt 720 wiederholt. Gemäß einer Ausführungsform werden die Daten in dem dem Prozessor P zugeordneten Cache-Register verworfen.
  • Ein Cache-Treffer würde es dem Prozessor P ermöglichen, mit der Ausführung durch Abfragen der Daten aus dem Cache anstatt aus dem Speicher fortzufahren, wodurch das Hinzufügen eines Waitstate beim Schritt 736 vermieden wird. In einer Ausführungsform wird die CLU des Prozessors P' aktiviert, wobei der Cache-Signalpfad beim Schritt 734 ausgewählt wird.
  • Die Daten der aktuellen Adresse PAddr und der nächsten Adresse PAddr+1 werden aus den Speicherbereichen ausgelesen. Die Daten der aktuellen Adresse PAddr werden zum Prozessor P für einen Zugriff übermittelt und die Daten der nächsten Adresse PAddr+1 werden im Cache-Register gespeichert, der dem Prozessor P' zugeordnet ist. Liegt ein Cache-Treffer für den Prozessor P' im nächsten Zyklus vor, dann wird auf die Cache-Daten vom Prozessor P' beim Schritt 740 zugegriffen.
  • Auf die Daten der aktuellen Adresse PAddr des Prozessors P wird vom Prozessor zugegriffen und die Daten der nächsten Adresse PAddr+1 werden im dem Prozessors P zugeordneten Cache-Register gespeichert.
  • Es besteht keine Notwendigkeit, einen Kollision zu überprüfen, da lediglich ein Prozessor auf den Speicher zugreift. Die Bestimmung eines Cache-Treffers für den Prozessor P wird in dem Schritt 734 wiederholt. Wenn ein Cache-Verfehlen für P' in dem Schritt 738 auftritt, dann wiederholt die ACU in einem Schritt den gesamten Vorgang.
  • In einer weiteren, in der 8 dargestellten Ausführungsform weist die ACU den Cache-Signalpfad für jeden Prozessor auf, wobei der Cache-Speichersignalpfad ein Auslesen von mehr als vom Prozessor verlangten Datenwörtern aus dem Speicher ermöglicht. Der Cache-Signalpfad weist beispielsweise ein Cache-Register und einen Multiplexer. Während des Betriebs des Systems werden die von den Prozessoren A und B aufgerufenen Adressen auf eine Kollision bei den Schritten 820 und 822 ausgewertet. Wenn eine Kollision besteht, dann wird die Priorität festgesetzt, und Waistates für den Prozessor mit der niedrigeren Priorität eingefügt, wie es in 7 obenstehend beschrieben ist.
  • Wenn keine Kollision besteht, dann werden die den beiden Prozessoren zugeordneten Caches auf einen Cache-Treffer beim Schritt 852 ausgewertet.
  • Wenn keine Cache-Treffer beobachtet werden, dann rufen die Prozessoren A und B entsprechende Bereiche des Speichermoduls über entsprechende Cache-Signalpfade beim Schritt 850 auf. Gemäß einer Ausführungsform werden die CLUs der Prozessoren A und B aktiviert, wobei die Cache-Pfade ausgewählt sind. Die Daten der aktuellen Speicheradressen (AAddr und BAddr) werden zu den entsprechenden Prozessoren für einen Zugriff übermittelt, und Daten der nächsten nachfolgenden Adressen (AAddr+1 und BAddr+1 werden in den entsprechenden Cache-Registern gespeichert. Wenn Cache-Treffer beider Prozessoren erkannt werden, dann werden auf die entsprechenden Cache-Inhalte von den Prozessoren beim Schritt 862 zugegriffen, und der Vorgang beim Schritt 820 wiederholt.
  • Wenn ein Cache-Treffer nur für einen der Prozessoren erkannt wird, dann kann der Speicherzugriff für den anderen Prozessor ohne der Notwendigkeit einer Kollisionsüberprüfung weitergeführt werden, da nur ein Prozessor auf den Speicher zugreift. Wird beispielsweise ein Cache-Treffer des Prozessors A und ein Cache-Verfehlen des Prozessors B entdeckt, dann wird auf den Inhalt des dem Prozessor A zugeordneten Cache zugegriffen, während auf die Daten der aktuellen Speicheradresse BAddr vom Prozessor B zugegriffen wird, Schritt 854. Daten des Speichers bei dem nächsten Platz BAddr+1 werden in dem dem Prozessor B zugeordneten Cache gespeichert.
  • Beim nächsten Zyklus wird der Cache des Prozessors B wieder auf einen Cache-Treffer hin beobachtet. Wenn ein Cache-Treffer erfolgt, dann wird der Cache-Inhalt für den Prozessor B beim Schritt 856 abgerufen. Die Daten des Speichers bei der Adresse AAddr werden für den Prozessor A abgerufen. Ein Cache-Verfehlen beim Schritt 858 veranlasst den Vorgang vom Schritt 820 an zu wiederholen. 9 und 10 veranschaulichen die Kartierung des Speichers gemäß verschiedener Ausführungsformen der Erfindung.
  • Bezugnehmend auf 9, ist ein Speichermodul 260 mit zwei Bereichen (Bereich 0 und Bereich 1) gezeigt, wobei jeder der Bereiche in 8 Blöcke (Blöcke 0 bis 7) unterteilt ist. Beispielsweise wird angenommen, dass das Speichermodul 512 Kb Speicher mit einer Breite von 16 Bits aufweist, wobei jedem Block 2K adressierbare Speicherplätze zugeordnet sind (2K × 16bit × 16 Blöcke). Gemäß einer Ausführungsform werden gerade Adressen dem Bereich 0 (d.h., 0, 2, 4 ... 32K-2) und ungerade Adressen dem Bereich 1 (d.h. 1, 3, 5 ... 32K-1) zugewiesen.
  • Der Block 0 des Bereiches 0 hat dann die Adresse 0, 2, 4 ... 4K-2; der Block 1 des Bereiches 1 hat dann die Adressen 1, 3, 5 ... 4K-1.
  • Mit Bezugnahme auf 10 ist ein Speichermodul mit vier Bereichen (Bereiche 0 bis 3) gezeigt, wobei jeder Bereich in 8 Blöcke (Blöcke 0-7) unterteilt ist. Angenommen, das Speichermodul 512 Kb weist einen Speicher mit einer Breite von 16 Bit auf, dann ist jedem Block 1K adressierbarer Speicherplatz zugeordnet (1K × 16bits × 32 Blöcke). In dem Fall, dass das Speichermodul vier Bereiche umfasst, wie dies in der 10 gezeigt ist, würden die Adressen wie folgt zugeordnet werden: Bereich 0: Jede vierte Adresse ausgehend von 0 (d.h. 0, 4, 8, etc.) Bereich 1: Jede vierte Adresse ausgehend von 1 (d.h. 1, 5, 9, etc.) Bereich 2: Jede vierte Adresse ausgehend von 2 (d.h. 2, 6, 10, etc.) Bereich 3: Jede vierte Adresse ausgehend von 3 (d.h. 3, 7, 11, etc.). Die Speicherkartierung kann für n Bereiche wie folgt verallgemeinert werden: Bereich 0: Jede n-te Adresse beginnend mit 0 (d.h. 0, n, 2n. 3n etc.) Bereich 1: Jede n-te Adresse beginnend mit 1 (d.h. 1, 1+n, 1+2n, 1+3n, etc.) Bereich n-1: Jede nt-e Adresse beginnend mit n-1 (d.h. n-1, n-1+n, n-1+2n, etc.). Obwohl die vorliegende Erfindung insbesondere unter Bezugnahme auf verschiedene Ausführungsformen dargestellt und beschrieben wurde, ist es für den Fachmann offensichtlich, dass Modifikationen und Änderungen der vorliegende Erfindung vorgenommen werden können, ohne sich vom Erfindungsgedanken zu entfernen. Der Gegenstand der Erfindung wird daher nicht durch die Bezugnahme auf die oben erfolgte Beschreibung bestimmt, sondern unter Bezugnahme auf die beiliegenden Ansprüche.

Claims (14)

  1. Verfahren zur gemeinsamen Nutzung eines Speichermoduls (660) durch mehrere Prozessoren (610), aufweisend: Unterteilen des Speichermoduls (660) in n Bereiche (665), wobei n wenigstens 2 ist, und dadurch ermöglichen, dass auf das Speichermodul (660) von einem oder mehreren Prozessoren (660) gleichzeitig zugegriffen werden kann; Kartieren des Speichermoduls (660) zum Zuordnen aufeinanderfolgender Adressen zu wechselnden Bereichen (675) des Speichers (660); Speichern von Datenwörtern im Speicher (660), wobei Datenwörter in aufeinanderfolgenden Adressen in abwechselnden Bereichen aufgrund der Kartierung des Speichers gespeichert werden; gekennzeichnet durch Bereitstellen eines ersten Signalpfades, der, wenn ausgewählt, einen Cache mit einem Prozessor (610) und dem Speichermodul (660) koppelt, wobei der Cache erlaubt, dass der Prozessor (660) eine Mehrzahl von Datenwörtern von verschiedenen Bereichen (665) gleichzeitig abrufen kann; Bereitstellen eines zweiten Signalpfades, der den Prozessor (610) mit dem Speichermodul (660) koppelt wenn ausgewählt; und Auswählen des ersten Signalpfades im Falle einer Kollision und Auswählen des zweiten Signalpfades, wenn keine Kollision aufgetreten ist.
  2. Verfahren nach Anspruch 1, ferner aufweisend eines Verfahrensschrittes des Unterteilens des Bereiches (665) in x Blöcke, wobei x wenigstens gleich 1 ist, wobei auf einen Block (675) durch einen oder mehrere Prozessoren (610) zu einem gegebenen Zeitpunkt zugegriffen werden kann.
  3. Verfahren nach Anspruch 1 oder 2, wobei eine Kollision auftritt, wenn zwei oder mehrere Prozessoren (610) auf denselben Adressbereich zu einem gegebenen Zeitpunkt zugreifen.
  4. Verfahren nach Anspruch 2 und 3, wobei der Adressbereich mit wenigstens einem Block (675) übereinstimmt.
  5. Verfahren nach einem der Ansprüche 1-4, ferner aufweisend eines Verfahrensschrittes des Synchronisierens der Prozessoren (610), um auf verschiedene Bereiche (665) zuzugreifen, wenn eine Kollision aufgetreten ist.
  6. Verfahren nach einem der Ansprüche 1-5, ferner aufweisend eines Verfahrensschrittes des Ermittelns von Zugriffsprioritäten der Prozessoren (610) wenn eine Kollision aufgetreten ist.
  7. Verfahren nach Anspruch 6, bei dem der Schritt des Ermittelns der Zugriffsprioritäten ein Zuweisen von geringeren Zugriffsprioritäten an Prozessoren aufweist, welche die Kollision verursacht haben.
  8. Verfahren nach Anspruch 5, bei dem der Schritt des Synchronisierens der Prozessoren ein Einfügen von Waitestates für die Prozessoren mit geringeren Prioritäten aufweist, wenn eine Kollision aufgetreten ist.
  9. Ein System, aufweisend: eine Mehrzahl von Prozessoren (610); ein Speichermodul (660) mit n Bereichen, wobei n wenigstens gleich 2 ist, wobei auf einen Bereich (665) von einem oder mehreren Prozessoren zu einem gegebenen Zeitpunkt zugegriffen werden kann; eine Speicherkarte zum Zuordnen aufeinanderfolgender Adressen zu wechselnden Bereichen (665) des Speichermoduls (660); im Speicher (660) gespeicherte Datenwörter, wobei die Datenwörter in aufeinanderfolgenden Adressen in wechselnden Bereichen (665) gemäß der Speicherkarte gespeichert sind; und eine Mehrzahl von Steuerlogikeinheiten, die einem Prozessor (660) es ermöglichen, auf eine Mehrzahl von Datenwörtern von verschiedenen Bereichen (665) zuzugreifen, dadurch gekennzeichnet, dass eine Steuerlogikeinheit erste und zweite Signalpfade aufweist, wobei im Falle einer Kollision der erste Signalpfad einen Cache mit einem Prozessor (660) und dem Speichermodul (660) koppelt und im Falle keiner Kollision der zweite Signalpfad den Prozessor (660) mit dem Speichermodul (660) koppelt.
  10. System nach Anspruch 9, wobei der erste Signalpfad ein Cache Register (633) und einen Multiplexer (636) aufweist.
  11. System nach Anspruch 9 oder 10, wobei der Bereich (665) x Blöcke (675) aufweist, wobei x wenigstens gleich 1 ist, wobei auf einen Block (675) von einem oder mehreren der Mehrzahl von Prozessoren (610) zu einem gegebenen Zeitpunkt zugegriffen werden kann.
  12. System nach einem der Ansprüche 9-11, ferner aufweisend eine Flusssteuereinheit (645) zum Synchronisieren der Prozessoren (610), damit diese auf verschiedene Blöcke (675) zu einem gegebenen Zeitpunkt zugreifen.
  13. System nach einem der Ansprüche 9-13, ferner aufweisend ein Prioritätsregister zum Speichern der Zugriffspriorität eines Prozessors (610).
  14. System nach einem der Ansprüche 9-13, ferner aufweisend eine Mehrzahl kritischer Speichermodule (615) zum Speichern einer Mehrzahl von Datenwörtern für die Prozessoren (610), um die Möglichkeit einer Kollision zu verringern.
DE60316197T 2002-04-04 2003-04-04 Verfahren und System zum Teilen eines Speichermoduls Expired - Fee Related DE60316197T2 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US117668 2002-04-04
US10/117,668 US20030088744A1 (en) 2001-11-06 2002-04-04 Architecture with shared memory
US10/133,941 US7346746B2 (en) 2002-04-26 2002-04-26 High performance architecture with shared memory
US133941 2002-04-26

Publications (2)

Publication Number Publication Date
DE60316197D1 DE60316197D1 (de) 2007-10-18
DE60316197T2 true DE60316197T2 (de) 2008-04-10

Family

ID=28793881

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60316197T Expired - Fee Related DE60316197T2 (de) 2002-04-04 2003-04-04 Verfahren und System zum Teilen eines Speichermoduls

Country Status (6)

Country Link
US (1) US20060059319A1 (de)
EP (2) EP1628216B1 (de)
KR (1) KR100701800B1 (de)
CN (1) CN1328660C (de)
DE (1) DE60316197T2 (de)
WO (1) WO2003085524A2 (de)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7174437B2 (en) * 2003-10-16 2007-02-06 Silicon Graphics, Inc. Memory access management in a shared memory multi-processor system
US7631132B1 (en) * 2004-12-27 2009-12-08 Unisys Corporation Method and apparatus for prioritized transaction queuing
KR100688537B1 (ko) 2005-03-16 2007-03-02 삼성전자주식회사 다수개의 프로세서들에 억세스 가능한 메모리 장치를 갖는시스템
KR100728650B1 (ko) * 2005-07-26 2007-06-14 엠텍비젼 주식회사 복수 경로를 통한 다중 분할된 메모리 공유 방법 및 장치
KR100658588B1 (ko) * 2005-11-16 2006-12-15 엠텍비젼 주식회사 메모리 공유 시스템 및 그 방법
KR100658591B1 (ko) * 2005-11-23 2006-12-15 엠텍비젼 주식회사 공유 메모리를 이용한 디스플레이 제어 방법 및 장치
US8074031B2 (en) 2005-12-20 2011-12-06 Nxp B.V. Multi-processor circuit with shared memory banks
KR100740635B1 (ko) 2005-12-26 2007-07-18 엠텍비젼 주식회사 휴대형 단말기 및 휴대형 단말기에서의 공유 메모리 제어방법
KR100700040B1 (ko) * 2006-03-08 2007-03-26 엠텍비젼 주식회사 공유 메모리를 구비한 장치 및 공유 메모리 억세스 상태정보 제공 방법
KR100748191B1 (ko) 2006-04-06 2007-08-09 엠텍비젼 주식회사 공유 메모리를 구비한 장치 및 공유 메모리 억세스 상태정보 제공 방법
KR100843580B1 (ko) * 2006-05-24 2008-07-04 엠텍비젼 주식회사 접근 권한 레지스터 로직을 갖는 다중 포트 메모리 장치 및그 제어 방법
KR100834373B1 (ko) * 2006-06-05 2008-06-02 엠텍비젼 주식회사 다중 포트 메모리 장치 및 그 접근 권한의 제어 방법
KR100855701B1 (ko) * 2007-01-26 2008-09-04 엠텍비젼 주식회사 복수의 프로세서 코어가 통합된 칩 및 데이터 처리 방법
KR101091844B1 (ko) * 2007-05-17 2011-12-12 삼성전자주식회사 고속으로 배드 블록을 검색하는 플래시 메모리 시스템 및그것의 배드 블록 관리 방법
US8239566B2 (en) * 2008-02-28 2012-08-07 Silicon Graphics International, Corp. Non-saturating fairness protocol and method for NACKing systems
CN101706788B (zh) 2009-11-25 2012-11-14 惠州Tcl移动通信有限公司 一种嵌入式文件系统的跨区访问方法
CN101867833A (zh) * 2010-06-12 2010-10-20 北京东方艾迪普科技发展有限公司 一种视频图像格式转换方法和装置
WO2012070319A1 (ja) 2010-11-25 2012-05-31 インターナショナル・ビジネス・マシーンズ・コーポレーション 複数のプロセッサのメモリ共有化のためのメモリアクセス装置、及びそのアクセス方法
KR20150139718A (ko) 2014-06-03 2015-12-14 에스케이하이닉스 주식회사 불휘발성 메모리를 제어하는 컨트롤러 및 그것을 포함하는 반도체 장치
CN104794065B (zh) * 2015-05-04 2018-01-09 常州工学院 一种多分组定长数据循环存取方法
KR101772921B1 (ko) 2016-11-25 2017-08-30 전남대학교 산학협력단 메모리 경합 인지를 통한 그래픽 처리 장치의 전력관리 기법 및 그 기법을 수행하는 전력관리 유닛, 그래픽 처리 장치
JP2022175420A (ja) * 2021-05-13 2022-11-25 富士通株式会社 演算処理装置および演算処理方法
CN115145859B (zh) * 2022-06-27 2025-09-23 曙光信息产业(北京)有限公司 一种数据传输方法、装置、电子设备和存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3931613A (en) * 1974-09-25 1976-01-06 Data General Corporation Data processing system
US4918587A (en) * 1987-12-11 1990-04-17 Ncr Corporation Prefetch circuit for a computer memory subject to consecutive addressing
US5617575A (en) * 1991-03-19 1997-04-01 Hitachi, Ltd. Interprocessor priority control system for multivector processor
US5412788A (en) * 1992-04-16 1995-05-02 Digital Equipment Corporation Memory bank management and arbitration in multiprocessor computer system
US5809533A (en) * 1993-02-18 1998-09-15 Unisys Corporation Dual bus system with multiple processors having data coherency maintenance
US20030088744A1 (en) * 2001-11-06 2003-05-08 Infineon Technologies Aktiengesellschaft Architecture with shared memory

Also Published As

Publication number Publication date
EP1628216A2 (de) 2006-02-22
EP1490764A2 (de) 2004-12-29
CN1668999A (zh) 2005-09-14
KR20040093167A (ko) 2004-11-04
EP1628216B1 (de) 2007-09-05
DE60316197D1 (de) 2007-10-18
WO2003085524A2 (en) 2003-10-16
WO2003085524A3 (en) 2004-08-19
EP1628216A3 (de) 2006-06-21
CN1328660C (zh) 2007-07-25
US20060059319A1 (en) 2006-03-16
KR100701800B1 (ko) 2007-04-02

Similar Documents

Publication Publication Date Title
DE60316197T2 (de) Verfahren und System zum Teilen eines Speichermoduls
DE69721590T2 (de) Ein bereichsbasiertes seiten-table-walk-bit verwendendes verfahren sowie vorrichtung
DE3783370T2 (de) Schaltung zur blockierungsverhinderung von hochprioritaetsanforderungen an eine systemsteuerung.
DE69029995T2 (de) Multiprozessor mit relativ atomaren Befehlen
DE69523395T2 (de) Datenprozessor mit gesteuertem Stoss-Speicherzugriff und Vorrichtung dafür
DE69031411T2 (de) Verfahren und Anordnung zum Lesen, Schreiben und Auffrischen eines Speichers mit direktem virtuellem oder physikalischem Zugriff
DE69616465T2 (de) Cachespeicher mit Datenvorausladung
DE69327703T2 (de) Mikroprozessor mit Busbreite-Wechselfunktion
DE69331039T2 (de) Rechnersystem mit einem Vorausholungscachespeicher
DE69434728T2 (de) Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel
DE69128107T2 (de) Busanordnung für Speicherzugriff
DE69637294T2 (de) Mikro-tlb mit parallelem zugriff zum beschleunigen der adressübersetzung
DE68923863T2 (de) Ein-/Ausgabecachespeicherung.
DE69319763T2 (de) Verfahren und Gerät zur Durchführung eines Busarbitrierungsprotokolls in einem Datenverarbeitungssystem
DE69707181T2 (de) Architektur und Verfahren zur gemeinsamen Benutzung von TLB-Einträgen
DE3587439T2 (de) Gemeinsam benutzter Mehrprozessor-Pipeline-Cachespeicher.
DE68926036T2 (de) Speicherkonfiguration zur Verwendung für Schnittstellenbildung zwischen einer Systemsteuereinheit für ein Multiprozessorsystem und dem Hauptspeicher
DE69322064T2 (de) Verfahren und System zur Zuteilung mehrerer Befehle in einem superskalaren Prozessorsystem in einem einzigen Zyklus
DE3887324T2 (de) Speicheranordnung.
DE69625486T2 (de) Speichersteuerung zur nicht sequentiellen ausführung von schreibbefehlen
DE69230211T2 (de) Integrierter Speicher, Verwaltungsverfahren und resultierendes Informationssystem
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE2854485A1 (de) Datenverarbeitungssystem mit speicherhierarchie
DE19516937A1 (de) Hierarchisches Cachesystem für einen Computer
DE3933849A1 (de) Prozessorgesteuerte schnittstelle

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee