DE60034170T2 - Protokoll zum Koordinieren der Verteilung von gemeinsamem Speicher - Google Patents
Protokoll zum Koordinieren der Verteilung von gemeinsamem Speicher Download PDFInfo
- Publication number
- DE60034170T2 DE60034170T2 DE60034170T DE60034170T DE60034170T2 DE 60034170 T2 DE60034170 T2 DE 60034170T2 DE 60034170 T DE60034170 T DE 60034170T DE 60034170 T DE60034170 T DE 60034170T DE 60034170 T2 DE60034170 T2 DE 60034170T2
- Authority
- DE
- Germany
- Prior art keywords
- memory
- strand
- block
- shared memory
- token
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Description
- GEBIET DER ERFINDUNG
- Die vorliegende Erfindung bezieht sich allgemein auf Multithreading-Anwendungen und insbesondere auf Verfahren zur Koordinierung der Verteilung von gemeinsam benutztem Speicher auf Steuerstränge, die in einem Datenverarbeitungssystem ausgeführt werden.
- HINTERGRUND DER ERFINDUNG
- Unter Multithreading versteht man das Partitionieren eines Computerprogramms, das einen bestimmten Prozess ausführt, in logisch unabhängige Steuerstränge, die parallel ausgeführt werden können. Jeder Strang umfasst eine Folge von Befehlen und von den Befehlen verwendeten Daten zur Ausführung einer bestimmten Aufgabe des Programms wie etwa einer Berechnung oder einer Ein-/Ausgabefunktion.
- Obwohl ein einzelner Prozessor jeweils nur die Befehle eines Strangs ausführen kann, kann der Prozessor mehrere Stränge parallel ausführen, indem er zum Beispiel die einem Strang entsprechenden Befehle ausführt, bis er einen ausgewählten Befehl erreicht, die Ausführung dieses Strangs dann unterbricht und die einem anderen Strang entsprechenden Befehle ausführt, bis alle Stränge abgearbeitet sind. Solange der Prozessor mit der Ausführung von Befehlen für mehr als einen Strang während eines bestimmten Zeitintervalls begonnen hat, spricht man bei diesem System davon, dass alle ausgeführten Stränge während des betreffenden Zeitintervalls „laufen", wodurch ein so genanntes „Multiprocessing" erreicht wird.
- Ein Prozess umfasst mehrere Stränge, die von einem gemeinsamen Adressbereich aus arbeiten. Prozesse können so konfiguriert sein, dass Teile ihres Adressbereichs gemeinsam benutzt werden, das heißt sie sind einem gemeinsamen physikalischen Ort oder Speicher zugeordnet. Mehrere Stränge in einem Prozess nutzen Teile dieses Speicheradressbereichs gemeinsam. Es ist möglich, dass mehr als ein Strang annimmt, alleinigen Zugriff auf einen Teil des Speichers zu haben, und dass er eine Reihe von Lese- und Schreiboperationen in einem Speicherbereich durchführt, während ein anderer Strang Lese- und Schreiboperationen im selben Speicherbereich durchführt. Ein solcher Parallelbetrieb durch miteinander konkurrierende Stränge kann den Ablauf eines Prozesses verwirren. Daher muss in einer Umgebung mit gemeinsam benutztem Speicher der gemeinsam benutzte Speicher jedem einzelnen Strang auf der Grundlage eines Koordinierungsverfahrens zugewiesen werden, das sicherstellt, dass jeweils nur ein Strang Zugriff auf einen gemeinsam benutzten Speicherbereich hat.
- Die derzeitigen Speicherzuordnungsverfahren weisen den Strängen den Adressplatz auf eine von zwei Weisen zu: durch Verteilung oder durch gegenseitigen Ausschluss. Verteilungsverfahren unterteilen den gemeinsam benutzten Speicher in Blöcke gleicher Größe und weisen die Speicherblöcke den Strängen wie angefordert zu. Jeder Speicherblock muss groß genug sein, um den Speicherbedarf für den Strang zu erfüllen, der den meisten Speicher benötigt. Der Gesamtspeicherbedarf wird bestimmt durch den maximalen Bedarf an Zugriff auf den gemeinsam benutzten Speicher durch einen bestimmten Strang, multipliziert mit der Gesamtzahl der beteiligten Stränge. Dieses Verfahren ist besonders verschwenderisch, wenn einzelne Stränge nicht die gleichen Mengen an gemeinsam benutztem Speicher erfordern. Selbst geringe Unterschiede im Speicherbedarf der Stränge können einen erheblichen Einfluss auf den Gesamtspeicherbedarf haben.
- Gegenseitige Ausschlussverfahren, die in der Hardware oder Software implementiert werden können, koordinieren die Verwendung des gemeinsam benutzten Speichers unter den Strängen durch lesen und Schreiben gemeinsam benutzter Variablen und Zeiger, die auf die gemeinsam benutzten Adressen verweisen. Die Implementierung dieser Verfahren erfordert einen Zugriff auf das Betriebssystem, was sowohl langsam als auch aufwändig ist.
- Bei einer Implementierung mit gegenseitigem Ausschluss gestattet das Betriebssystem jeweils nur einem Strang den Zugriff auf den gemeinsam benutzten Speicher. Der gemeinsam benutzte Speicher wird einem Strang durch Austauschen von Signalen zwischen Strängen zugewiesen, so dass ein Strang veranlasst werden kann, an einem bestimmten Punkt während der Ausführung anzuhalten, bis er ein bestimmtes Signal erhält. Im Einzelnen kann das Betriebssystem einem Strang den Zugriff auf den gemeinsam benutzten Speicher erlauben, indem es den gemeinsam benutzten Speicher sperrt, den Speicher für die ausschließliche Nutzung durch den Strang zuweist und den Speicher wieder freigibt, sobald der Strang die Speicheroperation abgeschlossen hat.
- Während der Speicherbereich gesperrt ist, sind andere Stränge daran gehindert, auf ihn zuzugreifen, bis die Sperre aufgehoben wird. Dieses Verfahren ist eine akzeptable Möglichkeit zum Zuordnen von Speicher für einmalige oder weniger häufige Operationen, zum Beispiel ein von einem Prozess angefordertes einmaliges Hochfahren. Die Datenverarbeitung erfordert jedoch im Allgemeinen die Ausführung von Operationen, die Hunderte oder gar Tausende von Malen pro Sekunde auftreten, zum Beispiel wenn viele Stränge einen gemeinsamen Speicherbereich durch Ausführen einer Schreiboperation modifizieren. Bei solchen Operationen führt dieses Verfahren des Sperrens und Freigebens von gemeinsam benutztem Speicher zu Engpässen in der Systemleistung. Mit zunehmender Anzahl von Strängen, die Systemleistung anfordern, erhöht sich die Wahrscheinlichkeit von Systemengpässen. Dies wirkt sich natürlich negativ auf die Systemleistung aus.
- Es sind Verfahren vorgestellt worden, die auf einige der vorstehend genannten Probleme eingehen.
EP 0817044 A2 beschreibt ein Speicherzuordnungsverfahren für eine Multithreading-Umgebung. Das Verfahren verwendet gegenseitige Ausschlusssperren, die jeweils mit Speicherpools in einem gemeinsam benutzten Speicher verbunden sind. Einzelne Stränge können auf einen bestimmten Speicherpool zugreifen, während der Zugriff durch andere Stränge über die gegenseitige Ausschlusssperre des jeweiligen Speicherpools ausgeschlossen ist. Mehrere Stränge können gemeinsam auf einen bestimmten Speicherpool zugreifen, indem der Zugriff von anderen Strängen verhindert wird, während einer den Pool benutzt. Auch wenn dies eine effektive Möglichkeit zur Steuerung des Zugriffs auf gemeinsam benutzten Speicher in einer Multithreading-Umgebung ist, verwendet das beschriebene Verfahren kein Token, das von den Strängen gemeinsam benutzt werden kann, um auf ausgewählte Teile des gemeinsam benutzten Speichers zuzugreifen, für die Speicherzuordnung, während der Zugriff auf andere Teile des gemeinsam benutzten Speichers möglich ist. - Nach den Aspekten der vorliegenden Erfindung werden ein Verfahren zum Zuordnen von Blöcken eines gemeinsam benutzten Speichers in einem Datenverarbeitungssystem, ein Speicherzuordnungssystem und ein computerlesbares Medium mit computerlesbaren Befehlen zur Durchführung eines Verfahrens auf einem Datenverarbeitungssystem zum Zuordnen von Blöcken eines gemeinsam benutzten Speichers nach den Ansprüchen 1, 6 bzw. 9 bereitgestellt.
- Die anliegenden Zeichnungen, die Bestandteil der vorliegenden Spezifikation sind, zeigen eine Ausführungsform der Erfindung und dienen zusammen mit der Beschreibung zur Erläuterung der Vorteile und Grundsätze der Erfindung.
-
1 zeigt ein Blockdiagramm eines Datenverarbeitungssystems, das zur Anwendung der Verfahren und Systeme nach der vorliegenden Erfindung geeignet ist. -
2 zeigt eine logische Ansicht mehrerer Stränge, die auf einen gemeinsam benutzten Speicher zugreifen. -
3 zeigt ein Blockdiagramm zur Erläuterung des Betriebs eines gemeinsam benutzten Speichersystems, das nach einem gemeinsam benutzten Speicherprotokoll nach der vorliegenden Erfindung arbeitet. -
4 zeigt eine Darstellung von Strängen, die nach der vorliegenden Erfindung Blöcken eines gemeinsam benutzten Speichers zugewiesen sind. -
5 zeigt ein Ablaufdiagramm zur Veranschaulichung der Operationen, die von einem gemeinsam benutzten Speicherzuordnungs- und -koordinierungsverfahren nach einer Ausführungsform der vorliegenden Erfindung ausgeführt werden. - AUSFÜHRLICHE BESCHREIBUNG
- Nachstehend wird ausführlich auf eine Ausführungsform nach der vorliegenden Erfindung verwiesen, wie sie in den anliegenden Zeichnungen gezeigt ist. Nach Möglichkeit werden in den Zeichnungen und der folgenden Beschreibung gleiche Bezugszeichen verwendet, um gleiche oder ähnliche Teile zu bezeichnen.
- Übersicht
- Entsprechend den Verfahren und Systemen nach der vorliegenden Erfindung gibt ein Programmierer, der ein Multithreading-Anwendungsprogramm schreibt, in dem Programm einen Gesamtbetrag des Speicherplatzes an, der von den Programmsträngen während der Ausführung gemeinsam benutzt werden soll. Außerdem gibt der Programmierer eine „Blockgröße" an, das heißt die Größe jeder Partition des Gesamtspeicherplatzes, der den Strängen während der Ausführung nach Bedarf zugewiesen werden soll. Die Blöcke des gemeinsam benutzten Speicherplatzes werden den Stränge fortlaufend zugewiesen, was bedeutet, dass, wenn ein Strang Speicher benötigt (zum Beispiel weil die von dem Strang ausgeführte Berechnungsaufgabe die gegenwärtige Speicherzuteilung des Strangs überschreitet), der Strang bestimmt, ob seine Anforderung verarbeitet werden kann; falls ja, wird dem Strang der nächste verfügbare Block in dem gemeinsam benutzten Speicherplatz zugewiesen. Jeder Strang kann eine eindeutige Kennung aufweisen, und alle Strangkennungen können zu Beginn der Programmausführung angegeben werden. Speicherblöcke können den Strängen unter Verwendung der Kennungen zugewiesen werden. In einem ausgewiesenen Bereich des gemeinsam benutzten Speichers können auch Informationen zur Identifizierung jedes Strangs anhand seiner Kennung sowie der bestimmten Blöcke des gemeinsam benutzten Speichers, die jedem Strang zugewiesen sind, enthaften sein.
- Ein Indikator für den nächsten verfügbaren Block in einem ausgewiesenen Bereich des gemeinsam benutzten Speichers enthält Informationen zur Angabe der Position (das heißt der Anfangsadresse) in dem gemeinsam benutzten Speicher für den nächsten verfügbaren Block. Da alle Blöcke dieselbe Größe aufweisen, wird der Indikator am Schluss jedes Speicherzuordnungszyklus einfach mit einem festen Wert auf der Grundlage der Blockgröße aktualisiert.
- Der Programmierer gibt auch ein gemeinsam benutztes Speicherprotokoll für die Stränge an. Dieses Protokoll, das als Teil des Programms selbst oder getrennt von dem Programm enthalten sein kann, besteht aus einer Reihe von Regeln, die bestimmen, wie die Stränge zusammenwirken, um zur Durchführung der Speicherzuordnungsfunktion auf den gemeinsam benutzten Speicher zuzugreifen. Wenn ein Strang Speicher benötigt, bestimmt er nach diesem Protokoll zuerst, ob ein anderer Strang gegenwärtig zur Zuordnung von Speicher auf den gemeinsam benutzten Speicherplatz zugreift. Dies kann durch Vorsehen eines „Token" in einem ausgewiesenen Bereich des gemeinsam benutzten Speicherplatzes erfolgen. Der bedürftige Strang stellt fest, ob das Token verfügbar ist, was bedeutet, dass derzeit kein anderer Strang auf den gemeinsam benutzten Speicherplatz zugreift, der einem Speicherblock zugeordnet werden soll. Ist das Token verfügbar, „belegt" der bedürftige Strang das Token (das heißt er gibt an, dass das Token gegenwärtig nicht verfügbar ist) und fährt mit der Zuordnung des nächsten verfügbaren Blocks fort.
- Ist das Token jedoch belegt, das heißt ein anderer Strang greift auf den gemeinsam benutzten Speicherbereich zu, der einem Speicherblock zugeordnet werden soll, fährt der bedürftige Strang nicht fort. Stattdessen überwacht der bedürftige Strang das Token und wartet, bis es verfügbar wird, woraufhin dem Strang ein nächster verfügbarer Speicherblock zugewiesen werden kann.
- Nachdem ein Strang das Zuordnungsverfahren abgeschlossen hat, gibt er das Token frei, wodurch dieses für weitere Speicherzuordnungszyklen verfügbar wird. Nach Abschluss eines Zuordnungszyklus wird der Indikator für den nächsten verfügbaren Block aktualisiert, so dass der Indikator, wenn das nächste Mal ein Strang einen Speicherblock zugewiesen haben möchte, den nächsten verfügbaren Block widerspiegelt.
- Obwohl der Zugriff auf den gemeinsam benutzten Speicherplatz ausschließlich für einen einzelnen Strang zum Ausführen des Zuordnungsverfahrens möglich ist, können alle parallel arbeitenden Stränge auf ihre zugewiesenen Blöcke zugreifen, auch wenn das Zuordnungsverfahren für einen bestimmten Strang läuft. Die einzige Beschränkung bei diesem System betrifft die Speicherblockzuordnung, wobei ein Block jeweils nur einem Strang zugewiesen sein kann. Darüber hinaus haben alle Stränge potenziell Zugriff auf den gesamten gemeinsam benutzten Speicherplatz. Mit anderen Worten, kein Strang hat die ausschließliche Kontrolle über einen bestimmten Block oder eine Gruppe von Blöcken, der bzw. die zu Beginn der Programmausführung angegeben worden sind.
- Computerarchitektur
-
1 zeigt ein beispielhaftes Datenverarbeitungssystem100 , das für die Anwendung der Verfahren und Implementierung von Systemen nach der vorliegenden Erfindung geeignet ist. Das Datenverarbeitungssystem100 umfasst ein Computersystem105 , das mit einem Netzwerk190 wie zum Beispiel einem LAN (Local Area Network), WAN (Wide Area Network) oder dem Internet verbunden ist. - Das Computersystem
105 enthält einen Hauptspeicher125 , eine sekundäre Speichervorrichtung130 , einen Prozessor140 , eine Eingabevorrichtung150 und eine Video-Anzeigevorrichtung160 . Alle diese Komponenten arbeiten in einer Weise, die dem Fachmann bekannt ist. Der Prozessor140 führt zum Beispiel ein Betriebssystem und Anwendungsprogramme aus. Die Eingabevorrichtung150 empfängt Benutzereingaben, und die Video-Anzeigevorrichtung160 zeigt zum Beispiel das Ergebnis eines vom Prozessor140 ausgeführten Anwendungsprogramms an. - Der Hauptspeicher
125 und die sekundäre Speichervorrichtung130 können verwendet werden, um alle Teile des Betriebssystems und der Anwendungsprogramme zu speichern, wenn diese nicht vom Prozessor140 ausgeführt werden. Für die Zwecke dieser Beschreibung ist der Hauptspeicher125 in1 jedoch so gezeigt, dass er sowohl ein Betriebssystem120 als auch ein Anwendungsprogramm110 enthält. Das Betriebssystem120 steht für ein beliebiges Betriebssystem, obwohl ein Betriebssystem, das insbesondere die Ausführung von Multithreading-Progammen erleichtert, bevorzugt wird, zum Beispiel das Betriebssystem Solaris® von Sun Microsystems, Inc. - Das Anwendungsprogramm
110 ist ein Multithreading-Programm, das einen bestimmten Prozess unter Verwendung unabhängiger logischer Steuerstränge durchführt, die parallel auf dem Prozessor140 ausgeführt werden. Obwohl ein einzelner Prozessor gezeigt ist, ist für den Fachmann ersichtlich, dass mehrere Prozessoren zur Implementierung von Verfahren und Anwendung von Systemen nach der vorliegenden Erfindung verwendet werden können. - Bei der Ausführung des Anwendungsprogramms
110 greifen dessen Stränge gemeinsam auf den Hauptspeicher125 und den sekundären Speicher130 zu. Spezifische Ausführungsformen von Speichern in einem Datenverarbeitungssystem können ein virtuellen Speicher verwenden, um bestimmte der mit einem Prozess verbundenen Daten zu speichern, so dass der Hauptspeicher die mit mehreren Prozessen verbundenen Daten speichern kann. Bei dieser Art von System greifen die Stränge auch gemeinsam auf den virtuellen Speicherbereich zu. - Das Anwendungsprogramm
110 weist ein gemeinsam benutztes Speicherprotokoll115 auf. Das gemeinsam benutzte Speicherprotokoll115 enthält eine Reihe von Richtlinien, die die Stränge beim Zugriff auf den Speicher beachten müssen. Das gemeinsam benutzte Speicherprotokoll115 interagiert mit den Strängen einer Anwendung, die im Programm110 läuft, und mit dem Speicher125 . Für den Fachmann ist ersichtlich, dass andere Ausführungsformen nach der vorliegenden Erfindung das gemeinsam benutzte Speicherprotokoll115 getrennt von dem Programm110 entweder in der Software oder in der Hardware implementieren können. - Obwohl Aspekte dieser Ausführungsform als im Speicher
125 enthalten gezeigt sind, ist für den Fachmann ersichtlich, dass das System und die Verfahren nach der vorliegenden Erfindung ganz oder teilweise auf anderen computerlesbaren Medien wie zum Beispiel sekundären Speichervorrichtungen wie Festplatten, Disketten und CD-ROMs, über ein Netzwerk wie zum Beispiel das Internet empfangene digitale Signale oder andere Formen von RAM oder RAM gespeichert sein oder von diesen gelesen werden können. -
2 zeigt eine logische Darstellung mehrerer Stränge, die gemeinsam auf den Speicher zugreifen. Wenn mehrere Stränge gemeinsam auf den Speicher zugreifen, kann jeder der Stränge auf einen beliebigen Teil des Speichers zugreifen.2 zeigt mehrere Stränge210a bis210n , die gemeinsam auf den Speicher200 zugreifen. Weil jeder der Stränge210a bis210n gleichzeitig auf den gesamten Speicher zugreifen kann, ist es möglich, dass mehr als ein Strang einen Teil des Speichers benutzt, der von einem anderen Strang benutzt wird, was die Betriebsabläufe verwirrend macht. Daher konkurrieren die in einer gemeinsam benutzten Speicherumgebung arbeitenden Stränge miteinander um die Speicherbenutzung. Die Verfahren und Systeme nach der vorliegenden Erfindung sind zur Koordinierung der Verteilung des Zugriffs auf gemeinsam benutzten Speicher durch konkurrierende Stränge eingerichtet. - Gemeinsam benutztes Speicherzuordnungs- und -verteilungssystem
-
3 zeigt eine logische Darstellung einer gemeinsam benutzten Speicherkonfiguration nach der vorliegenden Erfindung. Die Stränge304 ,306 ,308 und310 können einem oder mehreren Prozessen entsprechen, die parallel vom Prozessor320 ausgeführt werden. Obwohl nur ein Prozessor320 in3 gezeigt ist, können die Verfahren und Systeme nach der vorliegenden Erfindung ebenfalls in Umgebungen mit mehreren Prozessoren betrieben werden. - Der Speicher
340 enthält eine Dateizuordnungstabelle („FAT")345 . Um die parallele Ausführung mehrerer Stränge zu erleichtern, ist der Speicher340 logisch in Segmente gleicher Größe unterteilt, wie durch den Benutzer eines gemeinsam benutzten Speichersystems festgelegt, das nach den Grundsätzen des gemeinsam benutzten Speicherprotokolls330 arbeitet. Die Partitionsgröße wird verwendet, um einem Strang einen Speicherblock entsprechend einem Adressplatz zuzuweisen. - Wenn ein Anwendungsprogramm mit der Ausführung und Vermehrung seiner Stränge beginnt, stimmt jeder Strang zu, nach den Regeln des gemeinsam benutzten Speicherprotokolls
330 auf den Speicher340 zuzugreifen. Das gemeinsam benutzte Speicherprotokoll330 beschreibt das Format der FAT345 für jeden Strang. Nach dem Protokoll330 stimmt jeder Strang zu, einen Indikator zu beachten, der angibt, ob ein anderer Strang auf den Speicher zugreift, der einem Block zugewiesen werden soll, ehe er den Speicher für sich selbst sicherstellt. Das Protokoll330 erlaubt es Strängen, die bereits den Zugriff auf einen Speicherblock sichergestellt haben, diesen Block für die Dauer der Ausführung der Anwendung zu benutzen. Jedes Mal, wenn ein Strang den Zugriff auf einen neuen Speicherblock sicherstellen muss, muss er die Regeln des gemeinsam benutzten Speicherprotokolls330 beachten. - Wenn zum Beispiel der Strang
304 den Zugriff auf den Speicherblock350 sichergestellt hat, kann er auf diesen Speicherblock für die Dauer der Ausführung eines Programms zugreifen. Während jedoch der Strang306 den Zugriff auf den Speicherblock355 sicherstellt, kann der Strang304 nicht versuchen, den Zugriff auf einen anderen Speicherblock340 sicherzustellen. Während der Strang306 den Zugriff auf einen Speicherblock340 sicherstellt, kann der Strang304 nur auf die Speicherblöcke zugreifen, die er bereits sichergestellt hat. Sobald der Indikator in der FAT345 anzeigt, dass der Strang306 seinen gesicherten Betrieb beendet hat, kann der Strang304 versuchen, einen zusätzlichen Speicherblock sicherzustellen. - Die FAT
345 wird verwendet, um einem Strang einen Speicherblock zuzuweisen. In der FAT345 sind Tabellen, die den gegenwärtigen Zuordnungen von Speicherblöcke zu Strängen unter Verwendung von gemeinsam benutztem Speicher340 entsprechen, ein Indikator, der angibt, ob ein Strang gegenwärtig versucht, den Zugriff auf einen Speicherblock sicherzustellen, und ein Zeiger enthalten, der einen nächsten verfügbaren Speicherblock angibt. Ein Strang stellt den Zugriff auf einen Speicherblock sicher, indem er eine Zuordnung für einen Speicherblock aus der FAT empfängt. Wenn ein Strang einen Speicherblock sicherstellt, erhöht er einen Zeiger in der FAT auf den nächsten verfügbaren Speicherblock, wie in4 gezeigt. -
4 zeigt eine physikalische Darstellung, wie ein gemeinsam benutzter Speicher400 mit Methoden und Systemen nach der vorliegenden Erfindung Strängen zugeordnet und verwaltet werden kann. Ehe ein Programm ausgeführt wird, gibt ein Benutzer sowohl die Größe eines gemeinsam benutzten Speichers400 als auch die Größe der einzelnen Speicherblöcke415 ,420 ,425 und430 an. Jeder Speicherblock entspricht einer Gruppe von Adressen. Sobald die Größe des gemeinsam benutzten Speichers400 und die Größe der Blöcke415 ,420 ,425 und430 festgelegt worden sind, bleiben sie während der Ausführung des Programms konstant. - Jeder Strang, der nach den Grundsätzen der vorliegenden Erfindung auf den Speicher
400 zugreift, ist eindeutig identifizierbar. Bei Beginn der Ausführung eines ersten Strangs in einem Prozess wird dem Prozess ein Prozesskenncode zugewiesen. Wenn ein Strang die Zuordnung eines Speicherblocks empfängt, werden ihm ein Strangkenncode und ein Speicherplatzcode zugewiesen. Jeder Strang eines Programms kann durch einen globalen Strangkenncode, eine Kombination aus Prozesskenncode für den dem Strang entsprechenden Prozess und einem Strangkenncode, eindeutig identifiziert werden. Dieses Identifizierungsmerkmal ermöglicht es, dass Verfahren und Systeme nach der vorliegenden Erfindung jede Parallelverarbeitungsanwendung handhaben können, einschließlich Multithreading-Anwendungen sowie Anwendungen mit mehreren Prozessoren, auf denen Prozesse mit mehreren Strängen laufen. - Weitere Einzelheiten des Betriebs eines gemeinsam benutzten Speichersystems, das nach den Grundsätzen des gemeinsam benutzten Speicherprotokolls arbeitet, werden im Folgenden unter Bezugnahme auf das Ablaufdiagramm in
5 erläutert. Das gemeinsam benutzte Speicherprotokoll beginnt mit der Benutzerinitialisierung. Während der Initialisierung werden die Programmspezifikationen des Benutzers für die Größe sowohl des gemeinsam benutzten Speichers als auch der einzelnen Speicherblöcke festgelegt, die den Stränge zugewiesen werden, die auf den Speicher zugreifen (Schritt505 ). Die Größe des gemeinsam benutzten Speicherbereichs und die Größe der Speicherblöcke haben keinen Einfluss auf den Betrieb eines gemeinsam benutzten Speicherzuordnungs- oder -verteilungsverfahrens nach der vorliegenden Erfindung. Daher kann der Benutzer die Größen mit einer beliebigen Anzahl von Kriterien angeben, zum Beispiel den Speicherbedarf einer Mehrzahl der laufenden Stränge. - Bevor er versucht, den Zugriff auf einen Speicherblock sicherzustellen, bestimmt der Strang, ob ein anderer Strang gerade den Zugriff auf einen Speicherblock sicherstellt. Wenn ein Strang feststellt, dass ein „Token" zur Sicherstellung des Zugriffs auf den Speicher verfügbar ist (Schritt
530 ), sichert der Strang einen Speicherblock für sich, indem er auf die FAT zugreift (Schritt535 ). - Bei der Sicherstellung des Zugriffs auf einen Speicherblock wird die FAT verwendet, um dem Strang einen Speicherplatzcode zuzuweisen, der den Speicherplatz des Speicherblocks angibt, und einen Strangkenncode zur Identifizierung des Strangs in einem Prozess (Schritt
535 ). Weil den Strängen automatisch ein nächster verfügbarer Speicherblock zugewiesen wird, können Strängen von unterschiedlichen Prozessen aufeinander folgende Speicherblöcke zugewiesen werden. Jeder Strang erhält einen Speicherblock entsprechend der vom Benutzer bei der Initialisierung (Schritt505 ) festgelegten Größe der Speicherblöcke. Benötigt ein Strang mehr Speicher als in einem einzelnen Speicherblock enthalten, werden dem Strang ausreichend Speicherblöcke zur Deckung seines angeforderten Bedarfs zugewiesen. - Nachdem alle Positions- und Kennungszuordnungen vorgenommen worden sind, wird ein Speicherzuordnungszähler, der im FAT-Bereich des gemeinsam benutzten Speichers geführt wird, weitergeschaltet (Schritt
540 ). Durch das Weiterschalten des Zählers wird das Setzen eines Zeigers auf einen nächsten verfügbaren Speicherplatz eingeleitet. Nachdem ein Strang den Zugriff auf einen Speicherblock sichergestellt hat, gibt der Strang das „Token" frei, damit ein anderer Strang den Zugriff auf einen Speicherblock sicherstellen kann (Schritt545 ). - Ein Strang kann beliebig viele Speicheranforderungen ausgeben. Ein gemeinsam benutztes Speichersystem, das nach den Grundsätzen des gemeinsam benutzten Speicherprotokolls arbeitet, stellt sicher, dass alle ausgeführten Stränge, die Speicher benötigen, Gelegenheit erhalten, den Zugriff auf den Speicher sicherzustellen, indem das Speicherzuordnungsverfahren wiederholt wird, bis die Ausführung aller Stränge abgeschlossen ist (Schritt
550 ). - Fazit
- Verfahren und Systeme nach der vorliegenden Erfindung koordinieren die Verteilung von gemeinsam benutztem Speicher unter den in einer Parallelverarbeitungsumgebung ausgeführten Steuersträngen. Die Verteilung gemeinsam benutzter Speicherressourcen nach den Grundsätzen der vorliegenden Erfindung erfordert keinen Zugriff auf das Betriebssystem, was teuer und zeitaufwändig ist, um den gemeinsam benutzten Speicher unter den Strängen zu verteilen. Außerdem erfordert ein System nach den Grundsätzen der vorliegenden Erfindung kein Verbot für konkurrierende Stränge bezüglich des Zugriffs auf einen gemeinsam benutzten Speicherbereich, während ein anderer Strang auf den Speicher zugreift.
- Systeme nach der vorliegenden Erfindung eignen sich für alle Multithreading-Programme, die in allen Computer-Programmiersprachen einschließlich Fortran 77, Java, C und C++ geschrieben sind.
- Obwohl vorstehend eine bestimmte Ausführungsform beschrieben worden ist, ist für den Fachmann ersichtlich, dass verschiedene Änderungen in Bezug auf Form und Details möglich sind, ohne vom Umfang der vorliegenden Erfindung abzuweichen, wie er in den anliegenden Ansprüchen festgelegt ist.
Claims (11)
- Verfahren zum Zuordnen von Blöcken (
350 ,355 ,360 ) eines gemeinsam benutzten Speichers (340 ) in einem Datenverarbeitungssystem (100 ), das einen einen ersten Strang (304 ) aufweisenden ersten Prozess und einem einen zweiten Strang (306 ) aufweisenden zweiten Prozess aufweist, wobei dem ersten und dem zweiten Prozess ein erster bzw. ein zweiter Prozesskenncode zugewiesen wird, und wobei: aufgrund der Feststellung, dass ein Token zur ausschließlichen Sicherstellung von Speicherzugriff zur Durchführung der Speicherzuordnung dem ersten Strang (304 ) zur Verfügung steht, durch den ersten Strang (304 ) auf eine Dateizuordnungstabelle (345 ) in dem gemeinsam benutzten Speicher (340 ) zugegriffen wird, um Zugriff auf einen ersten Block (350 ) des gemeinsam benutzten Speichers (340 ) sicherzustellen, aufgrund der Feststellung das Token von dem ersten Strang (304 ) sichergestellt wird, durch die Dateizuordnungstabelle (345 ) dem ersten Strang (304 ) ein erster Speicherplatzcode zugewiesen wird, der einem Speicherplatz des ersten Blocks (350 ) entspricht, durch den ersten Strang (304 ) ein in der Dateizuordnungstabelle (345 ) enthaltener Zähler erhöht wird, der auf den nächsten verfügbaren Speicherblock in dem gemeinsam benutzten Speicher (340 ) hinweist, das Token von dem ersten Strang (304 ) freigegeben wird, das Token von dem zweiten Strang (306 ) sichergestellt wird und durch die Dateizuordnungstabelle (345 ) dem zweiten Strang (306 ) ein zweiter Speicherplatzcode zugewiesen wird, der einem Speicherplatz des nächsten verfügbaren Speicherblocks innerhalb des gemeinsam benutzten Speichers (340 ) entspricht, und wobei die Zuweisung des zweiten Speicherplatzcodes stattfindet, während der erste Strang (304 ) auf den ersten Block (350 ) des gemeinsam benutzten Speichers (340 ) außer zur Durchführung der Speicherzuordnung zugreift. - Verfahren nach Anspruch 1, wobei zum Zuweisen eines Speicherplatzcodes: festgestellt wird, dass der erste Strang (
304 ) Speicher benötigt, der größer ist als ein verfügbarer erster Block (350 ), und beginnend mit dem ersten verfügbaren Block genügend Speicherblöcke (350 ,355 ,360 ) des gemeinsam benutzten Speichers (340 ) zugewiesen werden, so dass die angesammelte Größe der zusätzlichen Speicherblöcke (350 ,355 ,360 ) einschließlich des ersten Blocks gleich oder größer ist als die Größe des von dem ersten Strang (304 ) angeforderten Speichers. - Verfahren nach Anspruch 1, wobei zum Zuweisen eines zweiten Speicherplatzcodes an den zweiten Strang (
306 ): der in der Dateizuordnungstabelle (345 ) enthaltene Zähler von dem zweiten Strang (306 ) erhöht wird, und das Token von dem zweiten Strang (306 ) freigegeben wird. - Verfahren nach Anspruch 1, wobei von einem Benutzer die Größe der Blöcke (
350 ,355 ,360 ) eines gemeinsam benutzten Speichers (340 ) gewählt wird und die Wahl erfolgt, bevor der erste Strang (304 ) auf die Dateizuordnungstabelle (345 ) zugreift, um Zugriff auf den ersten Block (350 ) des gemeinsam benutzten Speichers (340 ) sicherzustellen. - Verfahren nach Anspruch 1, wobei zum Zuweisen eines ersten Speicherplatzcodes an den ersten Strang (
304 ) durch die Dateizuordnungstabelle (345 ): eine von dem ersten Strang (304 ) ausgehende Speicherzuordnungsanforderung empfangen wird, der erste Block (350 ) des gemeinsam benutzten Speichers (340 ) dem ersten Strang (304 ) zugeordnet wird, von dem ersten Strang (304 ) auf den ersten Block (350 ) zugegriffen wird, aufgrund der Feststellung, dass das Token zur Sicherstellung von Speicherzugriff von dem zweiten Strang (306 ) sichergestellt ist, eine von dem ersten Strang (304 ) ausgehende zweite Speicherzuordnungsanforderung verweigert wird, der erste Block (350 ) dem ersten Strang (304 ) entzogen wird, wenn dieser mit der Benutzung des ersten Blocks fertig ist, das Token von dem zweiten Strang (306 ) freigegeben wird, eine von dem ersten Strang (304 ) ausgehende dritte Speicherzuordnungsanforderung empfangen wird und aufgrund der Feststellung, dass das Token dem ersten Strang (304 ) zur Verfügung steht, diesem ein zweiter Block des gemeinsam benutzten Speichers (340 ) zugeordnet wird, wobei der zweite Block dem ersten Strang (304 ) zugeordnet wird, während der zweite Strang (306 ) auf den gemeinsam benutzten Speicher (340 ) zugreift. - Speicherzuordnungssystem mit einem gemeinsam benutzten Speicher (
340 ) und mindestens einem Prozessor zur Ausführung eines einen ersten Strang (304 ) aufweisenden ersten Prozesses und eines einen zweiten Strang (306 ) aufweisenden zweiten Prozesses, wobei dem ersten und dem zweiten Prozess ein erster bzw. ein zweiter Prozesskenncode zugewiesen ist, und wobei der Prozessor in Reaktion auf eine von einem ersten Strang (304 ) ausgehende Speicherzuordnungsanforderung: aufgrund der Feststellung, dass ein Token zur ausschließlichen Sicherstellung von Speicherzugriff zur Durchführung der Speicherzuordnung dem ersten Strang (304 ) zur Verfügung steht, auf eine Dateizuordnungstabelle (345 ) in dem gemeinsam benutzten Speicher (340 ) zugreift, um Zugriff auf einen ersten Block (350 ) des gemeinsam benutzten Speichers (340 ) sicherzustellen, aufgrund der Feststellung das Token für den ersten Strangs (304 ) sicherstellt, durch die Dateizuordnungstabelle (345 ) dem ersten Strang (304 ) einen ersten Speicherplatzcode zuweist, der einem Speicherplatz des ersten Blocks (350 ) entspricht, einen in der Dateizuordnungstabelle (345 ) enthaltenen Zähler erhöht, der auf den nächsten verfügbaren Speicherblock in dem gemeinsam benutzten Speicher (340 ) hinweist, das Token für den ersten Strang (304 ) freigibt, das Token für den zweiten Strang (306 ) sicherstellt und durch die Dateizuordnungstabelle (345 ) dem zweiten Strang (306 ) einen zweiten Speicherplatzcode zuweist, der einem Speicherplatz des nächsten verfügbaren Speicherblocks innerhalb des gemeinsam benutzten Speichers (340 ) entspricht, wobei die Zuweisung des zweiten Speicherplatzcodes stattfindet, während der erste Strang (304 ) auf den ersten Block (350 ) des gemeinsam benutzten Speichers (340 ) außer zur Durchführung der Speicherzuordnung zugreift. - System nach Anspruch 6, wobei der mindestens eine Prozessor einen Bereich des Speichers mit einer Adresse eines zugeordneten Speicherblocks aktualisiert.
- System nach Anspruch 6, wobei ein erster Prozess den ersten Strang (
304 ) und ein zweiter Prozess den mindestens einen weiteren Strang ausführt. - Computerlesbares Medium mit computerlesbaren Befehlen zur Durchführung eines Verfahrens auf einem Datenverarbeitungssystem (
100 ) zum Zuordnen von Blöcken (350 ,355 ,360 ) eines gemeinsam benutzten Speichers (340 ), wobei das System einen einen ersten Strang (304 ) aufweisenden ersten Prozess und einen einen zweiten Strang (306 ) aufweisenden zweiten Prozess enthält, wobei dem ersten und dem zweiten Prozess ein erster bzw. ein zweiter Prozesskenncode zugewiesen sind, wobei: aufgrund der Feststellung, dass ein Token zur ausschließlichen Sicherstellung von Speicherzugriff zur Durchführung der Speicherzuordnung dem ersten Strang (304 ) zur Verfügung steht, durch den ersten Strang (304 ) auf eine Dateizuordnungstabelle (345 ) in dem gemeinsam benutzten Speicher (340 ) zugegriffen wird, um Zugriff auf einen ersten Block (350 ) des gemeinsam benutzten Speichers (340 ) sicherzustellen, aufgrund der Feststellung das Token von dem ersten Strang (304 ) sichergestellt wird, durch die Dateizuordnungstabelle (345 ) dem ersten Strang (304 ) ein erster Speicherplatzcode zugewiesen wird, der einem Speicherplatz des ersten Blocks (350 ) entspricht, durch den ersten Strang (304 ) ein in der Dateizuordnungstabelle (345 ) enthaltener Zähler erhöht wird, der auf den nächsten verfügbaren Speicherblock in dem gemeinsam benutzten Speicher (340 ) hinweist, das Token von dem ersten Strang (304 ) freigegeben wird, das Token von dem zweiten Strang (306 ) sichergestellt wird und durch die Dateizuordnungstabelle (345 ) dem zweiten Strang (306 ) ein zweiter Speicherplatzcode zugewiesen wird, der einem Speicherplatz des nächsten verfügbaren Speicherblocks innerhalb des gemeinsam benutzten Speichers (340 ) entspricht, und wobei die Zuweisung des zweiten Speicherplatzcodes stattfindet, während der erste Strang (304 ) auf den ersten Block (350 ) des gemeinsam benutzten Speichers (340 ) außer zur Durchführung der Speicherzuordnung zugreift. - Computerlesbares Medium nach Anspruch 9, wobei zum Bestimmen des nächsten verfügbaren Speicherblocks als Reaktion auf die Anforderung ein Bereich des Speichers mit einer Adresse des zugewiesenen Speicherblocks aktualisiert wird.
- Computerlesbares Medium nach Anspruch 9, wobei ein erster Prozess den ersten Strang (
304 ) und ein zweiter Prozess den mindestens einen weiteren Strang ausführt.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US244135 | 1999-02-04 | ||
US09/244,135 US6341338B1 (en) | 1999-02-04 | 1999-02-04 | Protocol for coordinating the distribution of shared memory |
Publications (2)
Publication Number | Publication Date |
---|---|
DE60034170D1 DE60034170D1 (de) | 2007-05-16 |
DE60034170T2 true DE60034170T2 (de) | 2007-12-20 |
Family
ID=22921496
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE60034170T Expired - Fee Related DE60034170T2 (de) | 1999-02-04 | 2000-02-03 | Protokoll zum Koordinieren der Verteilung von gemeinsamem Speicher |
Country Status (4)
Country | Link |
---|---|
US (2) | US6341338B1 (de) |
EP (1) | EP1031927B1 (de) |
JP (1) | JP2000235502A (de) |
DE (1) | DE60034170T2 (de) |
Families Citing this family (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6341338B1 (en) * | 1999-02-04 | 2002-01-22 | Sun Microsystems, Inc. | Protocol for coordinating the distribution of shared memory |
JP2000333169A (ja) * | 1999-05-24 | 2000-11-30 | Mitsubishi Electric Corp | 動画像符号化装置 |
US6631478B1 (en) * | 1999-06-18 | 2003-10-07 | Cisco Technology, Inc. | Technique for implementing high performance stable storage hierarchy in a computer network |
US6571277B1 (en) * | 1999-10-19 | 2003-05-27 | International Business Machines Corporation | Method and apparatus for scaling universal plug and play networks using atomic proxy replication |
US6807620B1 (en) * | 2000-02-11 | 2004-10-19 | Sony Computer Entertainment Inc. | Game system with graphics processor |
US6681345B1 (en) * | 2000-08-15 | 2004-01-20 | International Business Machines Corporation | Field protection against thread loss in a multithreaded computer processor |
US7406681B1 (en) | 2000-10-12 | 2008-07-29 | Sun Microsystems, Inc. | Automatic conversion of source code from 32-bit to 64-bit |
KR100771728B1 (ko) * | 2000-12-09 | 2007-10-30 | 엘지엔시스(주) | 자동은행거래단말기에서의 상호 스레드 통신방법 |
US20030217184A1 (en) * | 2000-12-30 | 2003-11-20 | Govindan Nair | Method and apparatus for allocating buffers shared among protocol layers in a protocol stack |
US7325030B2 (en) * | 2001-01-25 | 2008-01-29 | Yahoo, Inc. | High performance client-server communication system |
US6526491B2 (en) * | 2001-03-22 | 2003-02-25 | Sony Corporation Entertainment Inc. | Memory protection system and method for computer architecture for broadband networks |
US7516334B2 (en) * | 2001-03-22 | 2009-04-07 | Sony Computer Entertainment Inc. | Power management for processing modules |
US7093104B2 (en) * | 2001-03-22 | 2006-08-15 | Sony Computer Entertainment Inc. | Processing modules for computer architecture for broadband networks |
US7233998B2 (en) | 2001-03-22 | 2007-06-19 | Sony Computer Entertainment Inc. | Computer architecture and software cells for broadband networks |
US7231500B2 (en) * | 2001-03-22 | 2007-06-12 | Sony Computer Entertainment Inc. | External data interface in a computer architecture for broadband networks |
US7290104B2 (en) * | 2001-09-19 | 2007-10-30 | Intel Corporation | Increasing code separation between applications |
US20040039884A1 (en) * | 2002-08-21 | 2004-02-26 | Qing Li | System and method for managing the memory in a computer system |
US6842848B2 (en) * | 2002-10-11 | 2005-01-11 | Sandbridge Technologies, Inc. | Method and apparatus for token triggered multithreading |
US6925643B2 (en) * | 2002-10-11 | 2005-08-02 | Sandbridge Technologies, Inc. | Method and apparatus for thread-based memory access in a multithreaded processor |
CA2422252C (en) * | 2003-03-14 | 2008-09-02 | Ibm Canada Limited - Ibm Canada Limitee | Reduced synchronization reservation system and method for a shared memory buffer |
US7124255B2 (en) * | 2003-06-30 | 2006-10-17 | Microsoft Corporation | Message based inter-process for high volume data |
EP1505490A1 (de) * | 2003-08-05 | 2005-02-09 | Sap Ag | Verfahren und Vorrichtung zum Zugriff von private Thread-Daten |
WO2005093570A1 (fr) * | 2004-02-25 | 2005-10-06 | Opencube Technologies | Dispositif a memoire virtuelle partagee auto-administree apte a gerer au moins un flux de donnees multipiste |
FR2866729B1 (fr) * | 2004-02-25 | 2006-08-11 | Opencube | Dispositif a memoire virtuelle partagee auto-administree apte a gerer au moins un flux de donnees multipiste |
US8224639B2 (en) | 2004-03-29 | 2012-07-17 | Sony Computer Entertainment Inc. | Methods and apparatus for achieving thermal management using processing task scheduling |
US7386687B2 (en) * | 2005-01-07 | 2008-06-10 | Sony Computer Entertainment Inc. | Methods and apparatus for managing a shared memory in a multi-processor system |
US7882505B2 (en) * | 2005-03-25 | 2011-02-01 | Oracle America, Inc. | Method and apparatus for switching between per-thread and per-processor resource pools in multi-threaded programs |
JP4388518B2 (ja) * | 2005-11-01 | 2009-12-24 | 株式会社ソニー・コンピュータエンタテインメント | スレッドデバッグ装置、スレッドデバッグ方法及びプログラム |
US8024770B2 (en) * | 2006-06-21 | 2011-09-20 | Microsoft Corporation | Techniques for managing security contexts |
US7428629B2 (en) * | 2006-08-08 | 2008-09-23 | International Business Machines Corporation | Memory request / grant daemons in virtual nodes for moving subdivided local memory space from VN to VN in nodes of a massively parallel computer system |
US8392878B2 (en) * | 2007-10-31 | 2013-03-05 | National Instruments Corporation | In-place structure in a graphical program |
US8700877B2 (en) * | 2009-09-25 | 2014-04-15 | Nvidia Corporation | Address mapping for a parallel thread processor |
JP5776776B2 (ja) * | 2011-08-05 | 2015-09-09 | 富士通株式会社 | データ処理システム、およびデータ処理方法 |
US9069598B2 (en) | 2012-01-06 | 2015-06-30 | International Business Machines Corporation | Providing logical partions with hardware-thread specific information reflective of exclusive use of a processor core |
US9244828B2 (en) * | 2012-02-15 | 2016-01-26 | Advanced Micro Devices, Inc. | Allocating memory and using the allocated memory in a workgroup in a dispatched data parallel kernel |
CN103365720B (zh) | 2012-03-28 | 2017-12-05 | 国际商业机器公司 | 用于多线程环境下动态调整全局堆分配的方法和系统 |
GB2521155B (en) | 2013-12-10 | 2021-06-02 | Advanced Risc Mach Ltd | Configuring thread scheduling on a multi-threaded data processing apparatus |
GB2521151B (en) * | 2013-12-10 | 2021-06-02 | Advanced Risc Mach Ltd | Configurable thread ordering for a data processing apparatus |
US10560542B2 (en) * | 2014-09-15 | 2020-02-11 | Ge Aviation Systems Llc | Mechanism and method for communicating between a client and a server by accessing message data in a shared memory |
CN105302737A (zh) * | 2015-11-24 | 2016-02-03 | 浪潮(北京)电子信息产业有限公司 | 一种内存分配管理方法及系统 |
US10706027B2 (en) * | 2017-01-09 | 2020-07-07 | Sap Se | Database management system with dynamic allocation of database requests |
US11119820B2 (en) * | 2019-03-15 | 2021-09-14 | Intel Corporation | Local memory sharing between kernels |
CN111813552B (zh) * | 2020-07-16 | 2021-12-03 | 济南浪潮数据技术有限公司 | 一种基于多线程任务的调度执行方法、装置和介质 |
US20220206839A1 (en) * | 2020-12-28 | 2022-06-30 | Advanced Micro Devices, Inc. | Address mapping-aware tasking mechanism |
Family Cites Families (144)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0138535A3 (en) | 1983-10-13 | 1987-01-28 | British Telecommunications Plc | Visual display logic simulation system |
US4685082A (en) | 1985-02-22 | 1987-08-04 | Wang Laboratories, Inc. | Simplified cache with automatic update |
US5021947A (en) | 1986-03-31 | 1991-06-04 | Hughes Aircraft Company | Data-flow multiprocessor architecture with three dimensional multistage interconnection network for efficient signal and data processing |
JPH0195347A (ja) * | 1987-10-08 | 1989-04-13 | Nec Corp | アドレス変換方式 |
US5146593A (en) | 1989-03-06 | 1992-09-08 | International Business Machines Corporation | Procedure call interface |
EP0390339B1 (de) | 1989-03-29 | 1996-01-03 | Hewlett-Packard Company | Gerät zur Streckenmessung und -analyse zur Leistungsabschätzung von Software-Entwürfen |
US5075847A (en) | 1989-05-26 | 1991-12-24 | Hewlett-Packard Company | Method and apparatus for computer program encapsulation |
WO1990014629A2 (en) * | 1989-05-26 | 1990-11-29 | Massachusetts Institute Of Technology | Parallel multithreaded data processing system |
US5119465A (en) | 1989-06-19 | 1992-06-02 | Digital Equipment Corporation | System for selectively converting plurality of source data structures through corresponding source intermediate structures, and target intermediate structures into selected target structure |
US5274821A (en) | 1989-08-14 | 1993-12-28 | International Business Machines Corporation | Communication between prolog and an external process |
US5179702A (en) | 1989-12-29 | 1993-01-12 | Supercomputer Systems Limited Partnership | System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling |
US5073851A (en) | 1990-02-21 | 1991-12-17 | Apple Computer, Inc. | Apparatus and method for improved caching in a computer system |
JPH04137046A (ja) | 1990-09-28 | 1992-05-12 | Toshiba Corp | 電子計算機のオペレーティングシステム |
US5325499A (en) | 1990-09-28 | 1994-06-28 | Tandon Corporation | Computer system including a write protection circuit for preventing illegal write operations and a write poster with improved memory |
US5297274A (en) | 1991-04-15 | 1994-03-22 | International Business Machines Corporation | Performance analysis of program in multithread OS by creating concurrently running thread generating breakpoint interrupts to active tracing monitor |
JPH0816877B2 (ja) | 1991-06-10 | 1996-02-21 | インターナショナル・ビジネス・マシーンズ・コーポレイション | データ処理システム用資源データの実時間捕獲及び減縮方法及びシステム |
JP3259969B2 (ja) | 1991-07-09 | 2002-02-25 | 株式会社東芝 | キャッシュメモリ制御装置 |
US5301312A (en) | 1991-08-21 | 1994-04-05 | International Business Machines Corporation | Method and system for utilizing benign fault occurrence to measure interrupt-blocking times |
CA2078315A1 (en) | 1991-09-20 | 1993-03-21 | Christopher L. Reeve | Parallel processing apparatus and method for utilizing tiling |
GB9123271D0 (en) * | 1991-11-02 | 1991-12-18 | Int Computers Ltd | Data processing system |
US5742793A (en) | 1991-12-18 | 1998-04-21 | Intel Corporation | Method and apparatus for dynamic memory management by association of free memory blocks using a binary tree organized in an address and size dependent manner |
US5666296A (en) | 1991-12-31 | 1997-09-09 | Texas Instruments Incorporated | Method and means for translating a data-dependent program to a data flow graph with conditional expression |
US5526507A (en) * | 1992-01-06 | 1996-06-11 | Hill; Andrew J. W. | Computer memory array control for accessing different memory banks simullaneously |
US5481708A (en) | 1992-06-05 | 1996-01-02 | Borland International, Inc. | System and methods for optimizing object-oriented compilations |
US5438659A (en) | 1992-10-08 | 1995-08-01 | Hewlett-Packard Company | Object-action user interface management system |
US5390314A (en) | 1992-10-09 | 1995-02-14 | American Airlines, Inc. | Method and apparatus for developing scripts that access mainframe resources that can be executed on various computer systems having different interface languages without modification |
US5553235A (en) | 1992-10-23 | 1996-09-03 | International Business Machines Corporation | System and method for maintaining performance data in a data processing system |
US5353401A (en) | 1992-11-06 | 1994-10-04 | Ricoh Company, Ltd. | Automatic interface layout generator for database systems |
US5913223A (en) | 1993-01-25 | 1999-06-15 | Sheppard; Douglas Parks | Low power set associative cache memory |
US5535364A (en) * | 1993-04-12 | 1996-07-09 | Hewlett-Packard Company | Adaptive method for dynamic allocation of random access memory to procedures having differing priorities based on first and second threshold levels of free RAM |
US5675790A (en) * | 1993-04-23 | 1997-10-07 | Walls; Keith G. | Method for improving the performance of dynamic memory allocation by removing small memory fragments from the memory pool |
US5519866A (en) | 1993-06-28 | 1996-05-21 | Taligent, Inc. | Method and apparatus of incrementally linking components of a modeled computer program |
US5325533A (en) | 1993-06-28 | 1994-06-28 | Taligent, Inc. | Engineering system for modeling computer programs |
US5497458A (en) | 1993-07-06 | 1996-03-05 | Dell Usa, L.P. | Cache testability circuit for embedded diagnostics |
US5748961A (en) | 1993-07-12 | 1998-05-05 | Digital Equipment Corporation | Efficient method and apparatus for compiling and linking modules of computer code in a large software system |
US5500881A (en) | 1993-07-12 | 1996-03-19 | Digital Equipment Corporation | Language scoping for modular, flexible, concise, configuration descriptions |
GB9320982D0 (en) | 1993-10-12 | 1993-12-01 | Ibm | A data processing system |
US5450542A (en) * | 1993-11-30 | 1995-09-12 | Vlsi Technology, Inc. | Bus interface with graphics and system paths for an integrated memory system |
US5696922A (en) | 1993-12-10 | 1997-12-09 | Cray Research, Inc. | Recursive address centrifuge for distributed memory massively parallel processing systems |
US5845310A (en) | 1993-12-15 | 1998-12-01 | Hewlett-Packard Co. | System and methods for performing cache latency diagnostics in scalable parallel processing architectures including calculating CPU idle time and counting number of cache misses |
US5485619A (en) | 1993-12-29 | 1996-01-16 | International Business Machines Corporation | Array variable transformation system employing subscript table mapping to scalar loop indices |
US5636374A (en) | 1994-01-04 | 1997-06-03 | Intel Corporation | Method and apparatus for performing operations based upon the addresses of microinstructions |
US5539907A (en) | 1994-03-01 | 1996-07-23 | Digital Equipment Corporation | System for monitoring computer system performance |
US5774731A (en) * | 1995-03-22 | 1998-06-30 | Hitachi, Ltd. | Exclusive control method with each node controlling issue of an exclusive use request to a shared resource, a computer system therefor and a computer system with a circuit for detecting writing of an event flag into a shared main storage |
US5640550A (en) | 1994-04-15 | 1997-06-17 | Coker; Drake | Computer system for generating SQL statements from COBOL code |
US5963975A (en) * | 1994-04-19 | 1999-10-05 | Lsi Logic Corporation | Single chip integrated circuit distributed shared memory (DSM) and communications nodes |
US5710727A (en) | 1994-05-04 | 1998-01-20 | National Instruments Corporation | System and method for creating resources in an instrumentation system |
CA2147036A1 (en) | 1994-05-16 | 1995-11-17 | Yih-Farn Robin Chen | System and method for selective regression testing |
US5574922A (en) | 1994-06-17 | 1996-11-12 | Apple Computer, Inc. | Processor with sequences of processor instructions for locked memory updates |
US5613063A (en) | 1994-07-01 | 1997-03-18 | Digital Equipment Corporation | Method and apparatus for checking validity of memory operations |
US5689712A (en) | 1994-07-27 | 1997-11-18 | International Business Machines Corporation | Profile-based optimizing postprocessors for data references |
ES2176214T3 (es) | 1994-09-19 | 2002-12-01 | Siemens Ag | Sistema de administracion de memoria de un sistema de ordenador. |
US6006031A (en) | 1994-10-07 | 1999-12-21 | Tandem Computers Incorporated | Method and apparatus for reconciling conflicting translations by factoring and parameterizing differences |
US5745897A (en) | 1994-11-21 | 1998-04-28 | Bay Networks Group, Inc. | Method and system for compiling management information base specifications |
US5740433A (en) | 1995-01-24 | 1998-04-14 | Tandem Computers, Inc. | Remote duplicate database facility with improved throughput and fault tolerance |
US5675802A (en) | 1995-03-31 | 1997-10-07 | Pure Atria Corporation | Version control system for geographically distributed software development |
US5920895A (en) | 1995-04-24 | 1999-07-06 | Microsoft Corporation | Mapped file input/output with delayed zeroing |
US5696937A (en) | 1995-04-28 | 1997-12-09 | Unisys Corporation | Cache controller utilizing a state machine for controlling invalidations in a network with dual system busses |
US5581696A (en) | 1995-05-09 | 1996-12-03 | Parasoft Corporation | Method using a computer for automatically instrumenting a computer program for dynamic debugging |
US6101525A (en) * | 1995-05-19 | 2000-08-08 | Emc Corporation | Method and apparatus for shared memory cleanup |
US5737547A (en) | 1995-06-07 | 1998-04-07 | Microunity Systems Engineering, Inc. | System for placing entries of an outstanding processor request into a free pool after the request is accepted by a corresponding peripheral device |
US5812799A (en) | 1995-06-07 | 1998-09-22 | Microunity Systems Engineering, Inc. | Non-blocking load buffer and a multiple-priority memory system for real-time multiprocessing |
US5787285A (en) | 1995-08-15 | 1998-07-28 | International Business Machines Corporation | Apparatus and method for optimizing applications for multiple operational environments or modes |
JP3051972B2 (ja) | 1995-08-24 | 2000-06-12 | 日本アイ・ビー・エム株式会社 | 並列計算機のプロセッサ間通信方法 |
US6016474A (en) | 1995-09-11 | 2000-01-18 | Compaq Computer Corporation | Tool and method for diagnosing and correcting errors in a computer program |
US5774724A (en) | 1995-11-20 | 1998-06-30 | International Business Machines Coporation | System and method for acquiring high granularity performance data in a computer system |
US5784698A (en) * | 1995-12-05 | 1998-07-21 | International Business Machines Corporation | Dynamic memory allocation that enalbes efficient use of buffer pool memory segments |
US6173368B1 (en) * | 1995-12-18 | 2001-01-09 | Texas Instruments Incorporated | Class categorized storage circuit for storing non-cacheable data until receipt of a corresponding terminate signal |
US5734822A (en) * | 1995-12-29 | 1998-03-31 | Powertv, Inc. | Apparatus and method for preprocessing computer programs prior to transmission across a network |
US5850554A (en) | 1995-12-29 | 1998-12-15 | Intel Corporation | Compiler tool set for efficiently generating and easily managing multiple program versions of different types |
US5805795A (en) | 1996-01-05 | 1998-09-08 | Sun Microsystems, Inc. | Method and computer program product for generating a computer program product test that includes an optimized set of computer program product test cases, and method for selecting same |
US5867649A (en) | 1996-01-23 | 1999-02-02 | Multitude Corporation | Dance/multitude concurrent computation |
US5740431A (en) | 1996-01-24 | 1998-04-14 | Electronic Data Systems Corporation | Configuration file management |
AU722149B2 (en) | 1996-02-29 | 2000-07-20 | Bt Financial Group Pty Limited | Determination of software functionality |
JPH09259153A (ja) | 1996-03-19 | 1997-10-03 | Mitsubishi Electric Corp | バッチ実行制御プログラム作成装置及び方法 |
US6542919B1 (en) * | 1996-03-22 | 2003-04-01 | Koninklijke Philips Electronics N.V. | Operating system for use with protection domains in a single address space |
US5748892A (en) | 1996-03-25 | 1998-05-05 | Citrix Systems, Inc. | Method and apparatus for client managed flow control on a limited memory computer system |
US5970510A (en) | 1996-04-10 | 1999-10-19 | Northrop Grumman Corporation | Distributed memory addressing system |
US5860024A (en) | 1996-04-15 | 1999-01-12 | Advanced Micro Devices, Inc. | Microprocessor with automatic name generation including performance indication |
US5978892A (en) * | 1996-05-03 | 1999-11-02 | Digital Equipment Corporation | Virtual memory allocation in a virtual address space having an inaccessible gap |
US5940616A (en) | 1996-05-31 | 1999-08-17 | International Business Machines Corporation | Tracker class for object-oriented programming environments |
US6058460A (en) * | 1996-06-28 | 2000-05-02 | Sun Microsystems, Inc. | Memory allocation in a multithreaded environment |
US6141692A (en) | 1996-07-01 | 2000-10-31 | Sun Microsystems, Inc. | Directory-based, shared-memory, scaleable multiprocessor computer system having deadlock-free transaction flow sans flow control protocol |
US5933627A (en) * | 1996-07-01 | 1999-08-03 | Sun Microsystems | Thread switch on blocked load or store using instruction thread field |
US6253252B1 (en) * | 1996-07-11 | 2001-06-26 | Andrew Schofield | Method and apparatus for asynchronously calling and implementing objects |
US6173327B1 (en) | 1996-07-11 | 2001-01-09 | Jeroen De Borst | Object-oriented method and apparatus for information delivery |
US6263485B1 (en) * | 1996-07-11 | 2001-07-17 | Andrew Schofield | Method and apparatus for describing an interface definition language-defined interface, operation, and data type |
US5787480A (en) | 1996-07-17 | 1998-07-28 | Digital Equipment Corporation | Lock-up free data sharing |
US5890171A (en) | 1996-08-06 | 1999-03-30 | Microsoft Corporation | Computer system and computer-implemented method for interpreting hypertext links in a document when including the document within another document |
US6101325A (en) | 1996-10-10 | 2000-08-08 | Microsoft Corporation | Parameterized packaging system for programming languages |
US5905488A (en) | 1996-10-11 | 1999-05-18 | Xerox Corporation | Local inking with gray pixels |
JPH10124325A (ja) | 1996-10-25 | 1998-05-15 | Toshiba Corp | 変数の最適配置方法、変数の最適配置装置及び変数の最適配置プログラムを格納したコンピュータ読み取り可能な記録媒体 |
US5943499A (en) | 1996-11-27 | 1999-08-24 | Hewlett-Packard Company | System and method for solving general global data flow predicated code problems |
JPH10177560A (ja) | 1996-12-17 | 1998-06-30 | Ricoh Co Ltd | 記憶装置 |
US5857097A (en) | 1997-03-10 | 1999-01-05 | Digital Equipment Corporation | Method for identifying reasons for dynamic stall cycles during the execution of a program |
US5835705A (en) | 1997-03-11 | 1998-11-10 | International Business Machines Corporation | Method and system for performance per-thread monitoring in a multithreaded processor |
US6049855A (en) * | 1997-07-02 | 2000-04-11 | Micron Electronics, Inc. | Segmented memory system employing different interleaving scheme for each different memory segment |
US5991708A (en) | 1997-07-07 | 1999-11-23 | International Business Machines Corporation | Performance monitor and method for performance monitoring within a data processing system |
US6044438A (en) * | 1997-07-10 | 2000-03-28 | International Business Machiness Corporation | Memory controller for controlling memory accesses across networks in distributed shared memory processing systems |
US6317871B1 (en) * | 1997-07-18 | 2001-11-13 | Compaq Computer Corporation | System for ensuring the accuracy of file structures in a source-to-source computer program translator |
US6286130B1 (en) * | 1997-08-05 | 2001-09-04 | Intel Corporation | Software implemented method for automatically validating the correctness of parallel computer programs |
US5872977A (en) | 1997-08-08 | 1999-02-16 | International Business Machines Corporation | Object-oriented method and apparatus for creating a makefile |
US5974536A (en) | 1997-08-14 | 1999-10-26 | Silicon Graphics, Inc. | Method, system and computer program product for profiling thread virtual memory accesses |
US5991893A (en) * | 1997-08-29 | 1999-11-23 | Hewlett-Packard Company | Virtually reliable shared memory |
US5987479A (en) * | 1997-09-24 | 1999-11-16 | Sony Corporation, Inc. | Large block allocation for disk-based file systems |
US6314429B1 (en) * | 1997-10-08 | 2001-11-06 | Mitel Corporation | Bi-directional conversion library |
US6072951A (en) | 1997-10-15 | 2000-06-06 | International Business Machines Corporation | Profile driven optimization of frequently executed paths with inlining of code fragment (one or more lines of code from a child procedure to a parent procedure) |
US6065019A (en) | 1997-10-20 | 2000-05-16 | International Business Machines Corporation | Method and apparatus for allocating and freeing storage utilizing multiple tiers of storage organization |
US6088771A (en) | 1997-10-24 | 2000-07-11 | Digital Equipment Corporation | Mechanism for reducing latency of memory barrier operations on a multiprocessor system |
US6018793A (en) | 1997-10-24 | 2000-01-25 | Cirrus Logic, Inc. | Single chip controller-memory device including feature-selectable bank I/O and architecture and methods suitable for implementing the same |
US5974510A (en) | 1997-10-31 | 1999-10-26 | Advanced Micro Devices, Inc. | Method for testing the non-cacheable region functioning of a cache memory controller |
US6066181A (en) | 1997-12-08 | 2000-05-23 | Analysis & Technology, Inc. | Java native interface code generator |
US6108343A (en) * | 1997-12-19 | 2000-08-22 | Nortel Networks Corporation | Dynamically reconfigurable DSP architecture for multi-channel telephony |
US6098169A (en) | 1997-12-23 | 2000-08-01 | Intel Corporation | Thread performance analysis by monitoring processor performance event registers at thread switch |
US6014517A (en) | 1998-01-06 | 2000-01-11 | Emc Corporation | Automatic creation of C to assembler interface |
US6167565A (en) | 1998-01-08 | 2000-12-26 | Microsoft Corporation | Method and system of custom marshaling of inter-language parameters |
US6145054A (en) | 1998-01-21 | 2000-11-07 | Sun Microsystems, Inc. | Apparatus and method for handling multiple mergeable misses in a non-blocking cache |
JPH11306026A (ja) * | 1998-04-22 | 1999-11-05 | Toshiba Corp | コード最適化装置、コード最適化方法、及び、コード最適化プログラムを記録したコンピュータ読み取り可能な記録媒体 |
US6434741B1 (en) * | 1998-04-30 | 2002-08-13 | Hewlett-Packard Company | Method and apparatus for debugging of optimized code using emulation |
US6263489B1 (en) * | 1998-04-30 | 2001-07-17 | Hewlett-Packard Company | Method and apparatus for debugging of optimized code |
US6077312A (en) | 1998-05-06 | 2000-06-20 | International Business Machines Corporation | Apparatus, program product and method of debugging utilizing a context sensitive breakpoint |
US6947987B2 (en) * | 1998-05-29 | 2005-09-20 | Ncr Corporation | Method and apparatus for allocating network resources and changing the allocation based on dynamic workload changes |
US6205537B1 (en) * | 1998-07-16 | 2001-03-20 | University Of Rochester | Mechanism for dynamically adapting the complexity of a microprocessor |
KR20010072477A (ko) * | 1998-08-13 | 2001-07-31 | 썬 마이크로시스템즈, 인코포레이티드 | 가상 머신 환경에서 네이티브 코드를 변환하고 실행하는방법 및 장치 |
US6304951B1 (en) * | 1998-10-01 | 2001-10-16 | International Business Machines Corporation | Data processing system and method for generating virtual memory descriptors including pretranslated physical addresses |
US6430657B1 (en) * | 1998-10-12 | 2002-08-06 | Institute For The Development Of Emerging Architecture L.L.C. | Computer system that provides atomicity by using a tlb to indicate whether an exportable instruction should be executed using cache coherency or by exporting the exportable instruction, and emulates instructions specifying a bus lock |
JP4130713B2 (ja) * | 1998-10-21 | 2008-08-06 | 松下電器産業株式会社 | プログラム変換装置 |
GB2344030B (en) * | 1998-11-17 | 2003-06-04 | 3Com Technologies Ltd | Credit-based scheme for high performance communication between devices in a packet-based communication system |
US6212604B1 (en) * | 1998-12-03 | 2001-04-03 | Sun Microsystems, Inc. | Shared instruction cache for multiple processors |
US6311320B1 (en) * | 1998-12-07 | 2001-10-30 | Lsi Logic Corporation | Alterable scripting tool and method |
US6353829B1 (en) * | 1998-12-23 | 2002-03-05 | Cray Inc. | Method and system for memory allocation in a multiprocessing environment |
US6496902B1 (en) * | 1998-12-31 | 2002-12-17 | Cray Inc. | Vector and scalar data cache for a vector multiprocessor |
US6434714B1 (en) * | 1999-02-04 | 2002-08-13 | Sun Microsystems, Inc. | Methods, systems, and articles of manufacture for analyzing performance of application programs |
US6351845B1 (en) * | 1999-02-04 | 2002-02-26 | Sun Microsystems, Inc. | Methods, apparatus, and articles of manufacture for analyzing memory use |
US6341338B1 (en) * | 1999-02-04 | 2002-01-22 | Sun Microsystems, Inc. | Protocol for coordinating the distribution of shared memory |
US6367071B1 (en) * | 1999-03-02 | 2002-04-02 | Lucent Technologies Inc. | Compiler optimization techniques for exploiting a zero overhead loop mechanism |
US6353869B1 (en) * | 1999-05-14 | 2002-03-05 | Emc Corporation | Adaptive delay of polling frequencies in a distributed system with a queued lock |
US6366994B1 (en) * | 1999-06-22 | 2002-04-02 | Sun Microsystems, Inc. | Cache aware memory allocation |
US6473833B1 (en) * | 1999-07-30 | 2002-10-29 | International Business Machines Corporation | Integrated cache and directory structure for multi-level caches |
US6574725B1 (en) * | 1999-11-01 | 2003-06-03 | Advanced Micro Devices, Inc. | Method and mechanism for speculatively executing threads of instructions |
US6629214B1 (en) * | 1999-11-09 | 2003-09-30 | International Business Machines Corporation | Extended cache coherency protocol with a persistent “lock acquired” state |
US6647546B1 (en) * | 2000-05-03 | 2003-11-11 | Sun Microsystems, Inc. | Avoiding gather and scatter when calling Fortran 77 code from Fortran 90 code |
US6802057B1 (en) * | 2000-05-03 | 2004-10-05 | Sun Microsystems, Inc. | Automatic generation of fortran 90 interfaces to fortran 77 code |
US6574708B2 (en) * | 2001-05-18 | 2003-06-03 | Broadcom Corporation | Source controlled cache allocation |
-
1999
- 1999-02-04 US US09/244,135 patent/US6341338B1/en not_active Expired - Lifetime
-
2000
- 2000-02-01 JP JP2000024066A patent/JP2000235502A/ja active Pending
- 2000-02-03 DE DE60034170T patent/DE60034170T2/de not_active Expired - Fee Related
- 2000-02-03 EP EP00400302A patent/EP1031927B1/de not_active Expired - Lifetime
-
2002
- 2002-01-18 US US10/050,774 patent/US7240169B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP1031927B1 (de) | 2007-04-04 |
EP1031927A2 (de) | 2000-08-30 |
JP2000235502A (ja) | 2000-08-29 |
US6341338B1 (en) | 2002-01-22 |
EP1031927A3 (de) | 2004-11-03 |
DE60034170D1 (de) | 2007-05-16 |
US7240169B2 (en) | 2007-07-03 |
US20020059503A1 (en) | 2002-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE60034170T2 (de) | Protokoll zum Koordinieren der Verteilung von gemeinsamem Speicher | |
DE69930855T2 (de) | Verfahren und vorrichtung zur durchführung einer deterministischen speicherzuordnungsantwort in einem computer-system | |
DE69737709T2 (de) | Verfahren und Vorrichtung für Informationsverarbeitung und Speicherzuordnungsanordnung | |
DE2423194C2 (de) | Vorrichtung zum Berechnen einer absoluten Hauptspeicheradresse in einer Datenverarbeitungsanlage | |
EP1831786B1 (de) | Verfahren zur verteilung von rechenzeit in einem rechnersystem | |
DE60016283T2 (de) | Arbeitsbelastungsverwaltung in einer rechnerumgebung | |
EP1228432B1 (de) | Verfahren zur dynamischen speicherverwaltung | |
DE112010005096T5 (de) | Verfahren und Vorrichtungen zum Bewerten der Ressourcen-Kapazität in einem System von virtuellen Containern | |
DE102005022893B3 (de) | Verfahren zum Zugreifen auf Speicherbereiche einer Speicherkarte durch eine anfordernde Anwendung und Speicherkarte | |
DE102005029852A1 (de) | Multiprozessorsystem mit mehreren Speicherpositionen zum jeweiligen Speichern von TLB-Abschussdaten für mehrere Prozessorknoten | |
DE3805107A1 (de) | Verfahren und vorrichtung zur steuerung virtueller adressraeume eines virtuellen speichers | |
DE112007002201T5 (de) | Quality-of-Service-Implementierung für Plattformressourcen | |
DE10196879T5 (de) | Nicht-einteilige mehrfache Feldschleifenverarbeitung in einer SIMD-Anordnung | |
EP0010570B1 (de) | Verfahren und Einrichtung zur selbstadaptiven Zuordnung der Arbeitslast einer Datenverarbeitungsanlage | |
EP0635792A2 (de) | Verfahren zur Koordination von parallelen Zugriffen mehrerer Prozessoren auf Resourcenkonfigurationen | |
DE112010003675T5 (de) | Adress-Server | |
DE102010038466A1 (de) | Gemeinsame Elektronische Steuereinheit und in dieser Implementiertes Weiterleitungsprogramm | |
DE102013211266B4 (de) | Aufrechterhalten der Bandbreiten-Servicequalität einer Hardware-Ressource über einen Hardware-Zähler | |
DE69934823T2 (de) | Verfahren zur last-regulierung | |
DE102008000649B4 (de) | Speicher-Verwaltungsvorrichtung und Verfahren für diese | |
DE102021108295A1 (de) | Objektfreigabe durch entitäten unter verwendung einer datenstruktur | |
DE102005019631A1 (de) | Verfahren zur Prozesssteuerung und entsprechenden Geräten | |
DE102020214951A1 (de) | Verfahren zum dynamischen Zuweisen von Speicherbandbreite | |
DE102019118757B4 (de) | Verfahren zur Herstellung der Cachekohärenz in Mehrkernprozessoren | |
DE4007998A1 (de) | Prozess-planungsverfahren und mehrfach-rechner |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |