DE60034170T2 - Protokoll zum Koordinieren der Verteilung von gemeinsamem Speicher - Google Patents

Protokoll zum Koordinieren der Verteilung von gemeinsamem Speicher Download PDF

Info

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
Application number
DE60034170T
Other languages
English (en)
Other versions
DE60034170D1 (de
Inventor
Shaun Westminster Dennie
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Application granted granted Critical
Publication of DE60034170D1 publication Critical patent/DE60034170D1/de
Publication of DE60034170T2 publication Critical patent/DE60034170T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation 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/5016Allocation 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 Datenverarbeitungssystem 100, das für die Anwendung der Verfahren und Implementierung von Systemen nach der vorliegenden Erfindung geeignet ist. Das Datenverarbeitungssystem 100 umfasst ein Computersystem 105, das mit einem Netzwerk 190 wie zum Beispiel einem LAN (Local Area Network), WAN (Wide Area Network) oder dem Internet verbunden ist.
  • Das Computersystem 105 enthält einen Hauptspeicher 125, eine sekundäre Speichervorrichtung 130, einen Prozessor 140, eine Eingabevorrichtung 150 und eine Video-Anzeigevorrichtung 160. Alle diese Komponenten arbeiten in einer Weise, die dem Fachmann bekannt ist. Der Prozessor 140 führt zum Beispiel ein Betriebssystem und Anwendungsprogramme aus. Die Eingabevorrichtung 150 empfängt Benutzereingaben, und die Video-Anzeigevorrichtung 160 zeigt zum Beispiel das Ergebnis eines vom Prozessor 140 ausgeführten Anwendungsprogramms an.
  • Der Hauptspeicher 125 und die sekundäre Speichervorrichtung 130 können verwendet werden, um alle Teile des Betriebssystems und der Anwendungsprogramme zu speichern, wenn diese nicht vom Prozessor 140 ausgeführt werden. Für die Zwecke dieser Beschreibung ist der Hauptspeicher 125 in 1 jedoch so gezeigt, dass er sowohl ein Betriebssystem 120 als auch ein Anwendungsprogramm 110 enthält. Das Betriebssystem 120 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 Prozessor 140 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 Hauptspeicher 125 und den sekundären Speicher 130 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 Speicherprotokoll 115 auf. Das gemeinsam benutzte Speicherprotokoll 115 enthält eine Reihe von Richtlinien, die die Stränge beim Zugriff auf den Speicher beachten müssen. Das gemeinsam benutzte Speicherprotokoll 115 interagiert mit den Strängen einer Anwendung, die im Programm 110 läuft, und mit dem Speicher 125. Für den Fachmann ist ersichtlich, dass andere Ausführungsformen nach der vorliegenden Erfindung das gemeinsam benutzte Speicherprotokoll 115 getrennt von dem Programm 110 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änge 210a bis 210n , die gemeinsam auf den Speicher 200 zugreifen. Weil jeder der Stränge 210a bis 210n 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änge 304, 306, 308 und 310 können einem oder mehreren Prozessen entsprechen, die parallel vom Prozessor 320 ausgeführt werden. Obwohl nur ein Prozessor 320 in 3 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 Speicher 340 logisch in Segmente gleicher Größe unterteilt, wie durch den Benutzer eines gemeinsam benutzten Speichersystems festgelegt, das nach den Grundsätzen des gemeinsam benutzten Speicherprotokolls 330 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 Speicher 340 zuzugreifen. Das gemeinsam benutzte Speicherprotokoll 330 beschreibt das Format der FAT 345 für jeden Strang. Nach dem Protokoll 330 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 Protokoll 330 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 Speicherprotokolls 330 beachten.
  • Wenn zum Beispiel der Strang 304 den Zugriff auf den Speicherblock 350 sichergestellt hat, kann er auf diesen Speicherblock für die Dauer der Ausführung eines Programms zugreifen. Während jedoch der Strang 306 den Zugriff auf den Speicherblock 355 sicherstellt, kann der Strang 304 nicht versuchen, den Zugriff auf einen anderen Speicherblock 340 sicherzustellen. Während der Strang 306 den Zugriff auf einen Speicherblock 340 sicherstellt, kann der Strang 304 nur auf die Speicherblöcke zugreifen, die er bereits sichergestellt hat. Sobald der Indikator in der FAT 345 anzeigt, dass der Strang 306 seinen gesicherten Betrieb beendet hat, kann der Strang 304 versuchen, einen zusätzlichen Speicherblock sicherzustellen.
  • Die FAT 345 wird verwendet, um einem Strang einen Speicherblock zuzuweisen. In der FAT 345 sind Tabellen, die den gegenwärtigen Zuordnungen von Speicherblöcke zu Strängen unter Verwendung von gemeinsam benutztem Speicher 340 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 in 4 gezeigt.
  • 4 zeigt eine physikalische Darstellung, wie ein gemeinsam benutzter Speicher 400 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 Speichers 400 als auch die Größe der einzelnen Speicherblöcke 415, 420, 425 und 430 an. Jeder Speicherblock entspricht einer Gruppe von Adressen. Sobald die Größe des gemeinsam benutzten Speichers 400 und die Größe der Blöcke 415, 420, 425 und 430 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 (Schritt 505). 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 (Schritt 535).
  • 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 (Schritt 505) 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 (Schritt 545).
  • 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)

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. System nach Anspruch 6, wobei der mindestens eine Prozessor einen Bereich des Speichers mit einer Adresse eines zugeordneten Speicherblocks aktualisiert.
  8. System nach Anspruch 6, wobei ein erster Prozess den ersten Strang (304) und ein zweiter Prozess den mindestens einen weiteren Strang ausführt.
  9. 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.
  10. 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.
  11. Computerlesbares Medium nach Anspruch 9, wobei ein erster Prozess den ersten Strang (304) und ein zweiter Prozess den mindestens einen weiteren Strang ausführt.
DE60034170T 1999-02-04 2000-02-03 Protokoll zum Koordinieren der Verteilung von gemeinsamem Speicher Expired - Fee Related DE60034170T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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