PatentDe  


Dokumentenidentifikation DE10065754B4 04.03.2004
Titel Verfahren zur Steuerung eines Computersystems, Computersystem mit einer Ausführungsumgebung und Computerprogrammprodukt
Anmelder Fujitsu Siemens Computers GmbH, 81739 München, DE
Erfinder Westermaier, Bernhard, 82256 Fürstenfeldbruck, DE;
Maier, Christoph, Dr., 85635 Höhenkirchen-Siegertsbrunn, DE
Vertreter Epping Hermann Fischer, Patentanwaltsgesellschaft mbH, 80339 München
DE-Anmeldedatum 29.12.2000
DE-Aktenzeichen 10065754
Offenlegungstag 18.07.2002
Veröffentlichungstag der Patenterteilung 04.03.2004
Veröffentlichungstag im Patentblatt 04.03.2004
IPC-Hauptklasse G06F 9/34

Beschreibung[de]

Die vorliegende Patentanmeldung betrifft ein Verfahren zur Steuerung eines Computersystems, ein Computersystem mit einer Ausführungseinheit und ein entsprechendes Computerprogrammprodukt, welches auf einem computergeeigneten Medium gespeichert ist.

Computersysteme mit herkömmlichen Prozessoren zeichnen sich dadurch aus, daß der Prozessor (Recheneinheit) Instruktionen aus einem Befehlsspeicher lädt und diese in der Reihenfolge abarbeitet, wie sie in dem Befehlsspeicher gespeichert sind. Dadurch ist stets sichergestellt, daß ein Speicher-Schreib-Befehl, der in der Reihenfolge in dem Befehlsspeicher vor einem Speicher-Lese-Befehl angeordnet ist auch vor dem Speicher-Lese-Befehl ausgeführt wird, so daß die Daten bereits in dem Datenspeicher gespeichert sind und der Speicher-Lese-Befehl die tatsächlich aktuellen Daten aus dem Speicher erhält.

Moderne Prozessoren weisen beispielsweise mehrere parallele Rechenwerke auf, so daß Befehle in ihrer Abarbeitungsreihenfolge innerhalb eines Prozessors vertauscht werden können, um in einer parallelen Recheneinheit ausgeführt zu werden, wodurch die Gesamtverarbeitungsleistung des Prozessors steigt. Eine weitere Steigerung der Verarbeitungsgeschwindigkeit eines Computersystems ist beispielsweise durch die Anordnung mehrerer Prozessoren möglich. Hierbei wird die vorliegende Befehlsfolge auf mehrere Prozessoren verteilt, wodurch eine beschleunigte Abarbeitung des zugrundeliegenden Problems erreicht wird.

Problematisch ist hierbei, daß Befehle in ihrer Reihenfolge vertauscht werden, wodurch Dateninkonsistenzen entstehen können.

Dies ist beispielsweise der Fall, wenn in einem ersten Prozessor ein Ergebnis berechnet wird und die korrekte Berechnung des Ergebnisses nachfolgend von einem zweiten Prozessor verwendet werden muß. Ein mögliches Vorgehen um dies durchzuführen sieht vor, daß die korrekte Berechnung des Ergebnisses von dem ersten Prozessor in einem Signalfeld angezeigt wird. Ein zweiter Prozessor greift nun erst dann auf das von dem ersten Prozessor berechnete Ergebnis zu, wenn das Signalfeld anzeigt, daß das Ergebnis korrekt und vollständig berechnet wurde. Wird nun die Reihenfolge der Abarbeitung in dem ersten Prozessor vertauscht, so kann das Signalfeld ein vermeintlich gültig berechnetes Ergebnis anzeigen, obwohl der erste Prozessor dieses Ergebnis noch nicht berechnet hat. Folglich werden im zweiten Prozessor falsche Daten weiterverarbeitet.

Das beschriebene Problem tritt nicht nur für mehrere Prozessoren auf, sondern ist bereits in einem Prozessor mit mehreren Tasks, Prozessen oder Threads vorhanden. Dieses Problem kann beispielsweise dadurch gelöst werden, daß bei den modernen Prozessoren die parallele Abarbeitung beziehungsweise die sichtbare Vertauschung der Reihenfolge der Abarbeitung generell unterdrückt wird. Weiterhin wäre das Problem dadurch lösbar, daß lediglich ein Prozessor des Computersystems ein vorliegendes Programm bearbeitet und die übrigen Prozessoren des Computersystems keinen Beitrag zu der Bearbeitung des Programms leisten. Beide Vorgehen führen allerdings zu einer wesentlich reduzierten Rechenleistung des Computersystems.

Ein Programmcode umfaßt oftmals ein Nutzdatum und ein Signaldatum, wobei das Nutzdatum von dem ersten Prozessor eines Mehrprozessorsystems gespeichert sein sollte, bevor der erste Prozessor das Signaldatum speichert, das eine korrekte Speicherung des Nutzdatums anzeigt. Ebenso sollte der zweite Prozessor erst das Signaldatum aus dem Speicher lesen und auswerten, so daß sichergestellt werden kann, daß in einem nachfolgenden Schritt nur gültige Nutzdaten von dem zweiten Prozessor aus dem Speicher gelesen werden. Dies kann mit einem Attribut erreicht werden, daß sowohl die Vertauschung von Instruktionen während der Übersetzung, als auch die Vertauschung während der Ausführung einschränkt. Ein solches Attribut ist beispielsweise das aus der Programmiersprache "C" bekannte Attribut "volatile".

Wird ein Nutzdatum und ein Signaldatum beziehungsweise eine Datenstruktur und ein auf die Datenstruktur zeigender Zeiger (Pointer) nur von einem Prozessor verwendet, so sollte allerdings auch bei einem auftretenden Interrupt sichergestellt sein, daß das Signaldatum erst dann gesetzt ist, wenn die Nutzdaten bereits geschrieben sind beziehungsweise der Zeiger auf eine Datenstruktur erst dann verwendet wird, wenn die Datenstruktur bereits mit gültigen Daten gefüllt (initialisiert) ist.

Es ist die Aufgabe der Erfindung ein Verfahren zur Steuerung eines Computers anzugeben, das zu einer effizienteren Arbeitsweise des Computersystems führt, ein entsprechendes Computersystem mit einer Ausführungsumgebung und ein entsprechendes Computerprogrammprodukt anzugeben.

Erfindungsgemäß wird die Aufgabe gelöst durch ein Verfahren zur Steuerung eines Computersystems mit den im Anspruch 1 angeführten Merkmalen.

Hinsichtlich des auftretenden Interruptes kann das Problem mit Hilfe des zweiten Attributes gelöst werden, welches die Vertauschung von Instruktionen während der Übersetzung einschränkt und während der Laufzeit ermöglicht. Da das Vertauschen von dem Prozessor während der Laufzeit durchgeführt wird, können die daraus entstehenden Dateninkonsistenzen von dem Prozessor korrigiert werden.

Ein Vorteil des erfindungsgemäßen Verfahrens besteht darin, daß ein erstes Attribut und ein zweites Attribut zur Deklaration von Daten verwendet werden, wobei das erste Attribut eine andere Einschränkung bezüglich der Vertauschbarkeit von Instruktionen beinhaltet, als das zweite Attribut. Das erste Attribut beinhaltet eine Wirkung bezüglich der Vertauschbarkeit von Maschineninstruktionen, die sich sowohl auf den Übersetzungsprozeß des Quellcodes in Maschineninstruktionen als auch auf die Ausführungsreihenfolge der Maschineninstruktionen in der Recheneinheit auswirken. Das zweite Attribut beinhaltet eine Wirkung bezüglich der Vertauschbarkeit von Maschineninstruktionen, die sich lediglich auf den Übersetzungsprozeß des Quellcodes in Maschineninstruktionen auswirkt.

Das erste Attribut kann die Datenintegrität eines Mehrprozessorsystems gewährleisten, da die Vertauschbarkeit von Maschineninstruktionen sowohl bei der Übersetzung, als auch bei der Programmausführung verhinderbar ist. Dies stellt zunächst eine Einschränkung dar, welche die Abarbeitungsgeschwindigkeit des Computerprogramms bremst. Um eine beschleunigte Abarbeitung des Computerprogramms zu ermöglichen, kann zum Beispiel eine Instruktionsreihenfolge, die nur einen Prozessor betrifft, mit Hilfe des zweiten Attributs erzeugt werden. Das zweite Attribut beinhaltet nur eine Einschränkung der Vertauschung von Maschineninstruktionen für die Übersetzung, so daß ein einzelner Prozessor intern die Abarbeitungsreihenfolge ändern kann, um eine beschleunigte Abarbeitung des Computerprogramms zu erzielen. Moderne Prozessoren weisen dabei Mittel auf, welche die Datenkonsistenz gewährleisten.

Eine Ausgestaltung des erfindungsgemäßen Verfahrens sieht vor, daß die Übersetzung des Quellcodes in Maschineninstruktionen mittels eines Interpreters oder eines Compilers oder eines Just-In-Time Compilers durchgeführt wird. Ein Interpreter ist zur Übersetzung des Quellcodes geeignet, wobei die Übersetzung zur Laufzeit des Programms zum Zeitpunkt der Verarbeitung eines Befehls erfolgt. Ein Compiler übersetzt den Quellcode vorab, so daß eine effiziente Programmabarbeitung erfolgen kann. Ein Just-In-Time Compiler übersetzt den Quellcode zur Programmlaufzeit, wobei im Gegensatz zum Interpreter die aus dem Quellcode erzeugten Maschineninstruktionen gespeichert werden, so daß sie nur einmal übersetzt werden müssen.

Eine weitere Ausgestaltung des erfindungsgemäßen Verfahrens sieht vor, daß das erste Attribut des ersten Datenspeichers zusammen mit einem ersten Quellcode-Befehl, der auf den ersten Datenspeicher zugreift, die Erzeugung einer ersten Maschineninstruktion bei der Übersetzung bewirkt, die eine erste Grenze bildet.

Eine weitere Ausgestaltung des erfindungsgemäßen Verfahrens sieht vor, daß es sich bei der ersten Grenze oder der zweiten Grenze um eine Fence-Maschineninstruktion handelt oder um eine Maschineninstruktion handelt, welche die Wirkung einer Fence-Maschineninstruktion beinhaltet. Fence-Maschineninstruktionen beziehungsweise Maschineninstruktionen, welche die Wirkung einer Fence-Maschineninstruktion beinhalten, sind für moderne Prozessoren bekannt.

Eine weitere Ausgestaltung des erfindungsgemäßen Verfahrens sieht vor, daß es sich bei dem ersten Quellcode-Befehl oder dem zweiten Quellcode-Befehl um einen Speicher-Lese-Zugriff handelt, der eine in dem ersten oder dem zweiten Datenspeicher gespeicherte Information ausliest oder einen Speicher-Schreib-Zugriff handelt, der eine Information in den ersten oder dem zweiten Datenspeicher einschreibt.

Handelt es sich bei dem Quellcode-Befehl beispielsweise um den Zugriff auf ein Signalfeld, so kann das Signalfeld beispielsweise dazu verwendet werden um sicherzustellen, daß alle im Programm vor dem Zugriff auf das Signalfeld angeordneten Maschineninstruktionen mit Sicherheit abgearbeitet sind, bevor das Signalfeld einen Signalwert erhält.

Eine weitere Ausgestaltung des erfindungsgemäßen Verfahrens sieht vor, daß während der Übersetzung und während der Ausführung in einer Recheneinheit sichergestellt ist, daß alle Quellcode-Befehle, die vor dem ersten Quellcode-Befehl angeordnet sind, in Maschineninstruktionen übersetzt werden, die in der Maschineninstruktions-Reihenfolge vor der ersten Maschineninstruktion angeordnet sind und sichergestellt wird, daß alle vor der ersten Maschineninstruktion angeordneten Maschineninstruktionen ausgeführt werden, bevor eine nach der ersten Maschineninstruktion angeordnete Maschineninstruktion ausgeführt wird.

Eine weitere vorteilhafte Ausgestaltung des erfindungsgemäßen Verfahrens sieht vor, daß während der Übersetzung und während der Ausführung in einer Recheneinheit sichergestellt ist, daß über die erste Grenze hinweg keine sichtbare Vertauschung in der Maschineninstruktions-Reihenfolge erfolgt.

Eine weitere vorteilhafte Ausgestaltung des erfindungsgemäßen Verfahrens sieht vor, daß während der Übersetzung sichergestellt ist, daß über die zweite Grenze hinweg keine sichtbare Vertauschung in der Maschineninstruktions-Reihenfolge erfolgt.

Hierdurch ist sichergestellt, daß eine sichtbare Vertauschung von Instruktionen über die Grenze hinweg ausgeschlossen ist, so daß Programmteile strikt getrennt werden können. Eine sichtbare Vertauschung beinhaltet die Vertauschung der Abarbeitungsreihenfolge von Maschineninstruktionen beziehungsweise die Vertauschung des Abschusses der Abarbeitung einer Maschineninstruktion, die für andere Prozessoren oder Prozesse sichtbar wird.

Bezüglich des Computersystems wird die Aufgabe gelöst durch ein Mehrprozessorsystem mit einer Ausführungsumgebung mit den Merkmalen gemäß Anspruch 9.

Das erfindungsgemäße Mehrprozessorsystem ermöglicht die Vertauschung und parallele Abarbeitung von Instruktionen, die in einem Befehlsspeicher gespeichert sind. Dies führt zu einer beschleunigten Abarbeitung der in einem Befehlsspeicher gespeicherten Instruktionen, wobei durch zusätzliche Mittel sichergestellt ist, daß die Umsortierung der Maschineninstruktionen in einer vorbestimmten Weise eingeschränkt ist. Hierdurch wird ermöglicht, daß eine Dateninkonsistenz während der Abarbeitung der Instruktionen vermieden wird. Weiterhin ist vorgesehen, daß die Mittel lediglich bei der Übersetzung die Umsortierung der Maschineninstruktionen einschränken.

Weiterhin wird die Aufgabe bezüglich des Mehrprozessorsystemprogrammprodukts gelöst durch ein Mehrprozessorsystemprogrammprodukt gemäß Anspruch 10, das auf einem Mehrprozessorsystemgeeigneten Medium gespeichert ist und Computerlesbare Programmittel umfaßt, mit denen die Schritte gemäß einem der Ansprüche 1 bis 8 ausgeführt werden, wenn das Programmprodukt auf einem Mehrprozessorsystem läuft.

Vorteilhafte Ausgestaltungen der Erfindung sind Gegenstand der jeweiligen Unteransprüche.

Nachfolgend wird die Erfindung anhand von Ausführungsbeispielen und Figuren näher erläutert.

In den Figuren zeigen:

1 einen Quellcode mit Quellcode-Befehlen, sowie aus dem Quellcode generierte Maschineninstruktionen;

2 ein Computersystem mit einer ersten Recheneinheit, einem ersten Befehlsspeicher und einem Datenspeicher sowie einer zweiten Recheneinheit mit einem zweiten Befehlsspeicher;

In 1 ist ein Quellcode 7 dargestellt, der Quellcode-Befehle 8 enthält. Die Quellcode-Befehle 8 sind in einer Befehlsreihenfolge 9 angeordnet. Der Quellcode 7 umfaßt dabei eine Datendeklaration 10, die einem ersten Datenspeicher 11 ein erstes Attribut 12 und einem zweiten Datenspeicher 13 ein zweites Attribut 14 zuordnet. Zusätzlich ist in dem Quellcode 7 ein erster Quellcode-Befehl 17 und ein zweiter Quellcode-Befehl 20 angeordnet. Weiterhin ist in 1 ein erster Befehlsspeicher 4 dargestellt, in dem Maschineninstruktionen 15 in einer Maschineninstruktions-Reihenfolge 16 angeordnet sind, wobei die Maschineninstruktionen 15 aus den Quellcode-Befehlen 8 übersetzt worden sind. Die Übersetzung der Maschineninstruktionen 15 aus den Quellcode-Befehlen 8 kann zum einen während der Laufzeit des Programms durchgeführt werden. Weiterhin ist es möglich, daß ein Compiler vor der Laufzeit des Programms die Maschineninstruktionen 15 erzeugt, wodurch eine effiziente Abarbeitung des Computerprogramms möglich ist. Weiterhin ist es möglich, daß ein Just-In-Time Compiler die Quellcode-Befehle 8 in die Maschineninstruktionen 15 übersetzt, wodurch zur Laufzeit des Programms eine Übersetzung für die speziell vorliegende Hardware des Computersystems durchgeführt werden kann.

In 2 ist ein Computersystem 1 dargestellt. Das Computersystem 1 umfaßt eine erste Recheneinheit 2 und eine zweite Recheneinheit 3. Die erste Recheneinheit 2 ist mit dem ersten Befehlsspeicher 4 und die zweite Recheneinheit 3 ist mit einem zweiten Befehlsspeicher 5 verbunden. Die erste Recheneinheit 2 und die zweite Recheneinheit 3 sind mit einem Datenspeicher 6 verbunden. In dem ersten Befehlsspeicher 4 sind die Maschineninstruktionen 15 in der Maschineninstruktions-Reihenfolge 16 angeordnet.

In dem Datenspeicher 6 sind ein erster Datenspeicher 11, ein zweiter Datenspeicher 13 und ein dritter Datenspeicher 25 angeordnet.

Die Maschineninstruktionen 15 umfassen vertauschbare Maschineninstruktionen 23 sowie einen ersten Datenzugriff 24, der auf den dritten Datenspeicher 25 zugreift. Nachfolgend umfassen die Maschineninstruktionen 15 eine erste Maschineninstruktion 18, die einen Datenzugriff auf den ersten Datenspeicher 11 beinhaltet. Die erste Maschineninstruktion 18 umfaßt eine erste Grenze 19, da die erste Maschineninstruktion 18 auf den mit dem ersten Attribut 12 markierten ersten Datenbereich 11 zugreift. Umfassen beispielsweise die vertauschbaren Maschineninstruktionen 23 die Berechnung eines Ergebnisses, welches mittels des ersten Datenzugriffs 24 in dem dritten Datenspeicher 25 gespeichert wird, so ist es erforderlich, daß mittels der ersten Maschineninstruktion 18 ein Signalwert in den ersten Datenspeicher 11 erst dann eingeschrieben wird, wenn der erste Datenzugriff 24 den Schreibvorgang in dem dritten Datenspeicher 25 beendet hat.

Dadurch ist ermöglicht, daß der zweite Prozessor 3 die in dem zweiten Befehlsspeicher 5 angeordnete Abfrage-Maschineninstruktion 26 durchführt, um damit sicherzustellen, daß die in der nachfolgend ausgeführten Datenlese-Maschineninstruktion 27 aus dem dritten Datenspeicher gelesenen Daten gültig sind. Die Reihenfolge des ersten Datenzugriffs 24 und der ersten Maschineninstruktion 18 ist Prozessorübergreifend einzuhalten, so daß sowohl bei der Übersetzung des Quellcodes 7 in die Maschineninstruktionen 15 als auch bei der Ausführung der ersten Maschineninstruktionen 15 in dem ersten Prozessor 2 die Vertauschbarkeit der Reihenfolge eingeschränkt ist. Der erste Quellcode-Befehl 17 wird beispielsweise in die erste Maschineninstruktion 18 übersetzt, wobei bei der Übersetzung berücksichtigt wird, daß ein in dem ersten Quellcode-Befehl 17 enthaltener Zugriff auf den ersten Datenspeicher 11 und die Attributierung des ersten Datenspeichers 11 mit dem ersten Attribut 12 berücksichtigt wird.

Weiterhin ist vorgesehen, daß der zweite Quellcode-Befehl 20 in eine zweite Maschineninstruktion 21 übersetzt wird, die ebenfalls in dem ersten Befehlsspeicher 4 angeordnet ist. Der zweite Quellcode-Befehl 20 sieht einen Speicherzugriff auf den zweiten Datenspeicher 13 vor, der mit dem zweiten Attribut 14 gekennzeichnet ist. Dadurch ist gewährleistet, daß während des Übersetzens der Quellcode-Befehle 8 in die Maschineninstruktionen 15 eine zweite Grenze 22 neben der zweiten Maschineninstruktion 21 gebildet wird. Die zweite Grenze 22 sieht vor, daß während des Übersetzungsvorganges die Vertauschung von Maschineninstruktionen in der Weise eingeschränkt ist, daß die Datenkonsistenz gewährleistet bleibt. Die ist beispielsweise der Fall, wenn der erste Prozessor 2 exklusiv auf den zweiten Datenspeicher 13 zugreift. In diesem Fall kann der erste Prozessor 2 während der Laufzeit eine Vertauschung – auch über die durch die zweite Maschineninstruktion 21 gebildete Grenze 22 hinaus – durchführen, sofern der erste Prozessor 2 gewährleistet, daß die Datenkonsistenz gewährleistet bleibt.

Das zweite Attribut 14 ist beispielsweise dann sinnvoll, wenn ein Interrupt zwischen zwei Instruktionen erfolgt, die in einer festen Reihenfolge zueinander auszuführen sind. Hierbei kann ein Fehler auftreten, wenn die Befehle in Ihrer Abarbeitungsreihenfolge vertauscht sind, da der von dem Interrupt aufgerufenen Interrupt-Handler die von den vertauschten Befehlen bearbeiteten Datenbereiche zur Auswertung auslesen kann. Eine Vertauschung währen der Laufzeit innerhalb des Prozessors kann durch moderne Prozessoren erkannt werden, so daß die voreilige Speicherung von einem Signaldatum vor dem Speichern eines Nutzdatums von dem Prozessor erkannt und behoben werden kann. Findet diese Vertauschung allerdings schon während der Übersetzung statt, so kann die bei der Übersetzung geänderte Reihenfolge nicht vom Prozessor korrigiert werden. Die Ermöglichung der Vertauschung während der Abarbeitung des Programms steigert die Abarbeitungsgeschwindigkeit des Programmcodes, da Befehle beispielsweise in einer parallelen Ausführungseinheit des Prozessors vorzeitig bearbeitet werden können.

1 Computersystem 2 erste Recheneinheit 3 zweite Recheneinheit 4 erster Befehlsspeicher 5 zweiter Befehlsspeicher 6 Datenspeicher 7 Quellcode 8 Quellcode-Befehle 9 Befehlsreihenfolge 10 Datendeklaration 11 erster Datenspeicher 12 erstes Attribut 13 zweiter Datenspeicher 14 zweites Attribut 15 Maschineninstruktionen 16 Maschineninstruktions-Reihenfolge 17 erster Quellcode-Befehl 18 erste Maschineninstruktion 19 erste Grenze 20 zweiter Quellcode-Befehl 21 zweite Maschineninstruktion 22 zweite Grenze 23 vertauschbare Maschineninstruktionen 24 erster Datenzugriff 25 dritter Datenspeicher 26 Abfrage-Maschineninstruktion 27 Datenlese-Maschineninstruktion

Anspruch[de]
  1. Verfahren zur Steuerung eines Mehrprozessorsystems (1) bei dem

    – ein Quellcode (7) mit Quellcode-Befehlen (8) erstellt ist, die in einer Befehlsreihenfolge (9) angeordnet sind;

    – wobei der Quellcode (7) eine Datendeklaration (10) umfaßt und die Datendeklaration (10) einem ersten Datenspeicher (11) ein erstes Attribut (12) zuordnet und einem zweiten Datenspeicher (13) ein zweites Attribut (14) zuordnet; und

    – der Quellcode (7) in Maschineninstruktionen (15) übersetzt wird und die Maschineninstruktionen (15) umsortiert werden, so daß die Maschineninstruktionen (15) eine Maschineninstruktions-Reihenfolge (16) aufweisen, die von der Befehlsreihenfolge (9) abweicht; und

    – die Maschineninstruktionen (15) in einem Befehlsspeicher (4) gespeichert werden und von einer Recheneinheit (2) aus dem Befehlsspeicher (4) geladen werden und abweichend von der Maschineninstruktions-Reihenfolge (16) von der Recheneinheit (2) ausgeführt werden;

    – wobei das erste Attribut (12) des ersten Datenspeichers (11) und das zweite Attribut (14) des zweiten Datenspeichers (13) bewirken, daß die Umsortierung der Maschineninstruktionen (15) bei der Übersetzung in einer ersten vorbestimmten Weise eingeschränkt wird; und

    – wobei das erste Attribut (12) des ersten Datenspeichers (11) bewirkt, daß die Umsortierung der Maschineninstruktionen (15) bei der Ausführung in der Recheneinheit (2) in einer zweiten vorbestimmten Weise eingeschränkt wird; und

    – wobei das zweite Attribut (14) des zweiten Datenspeichers (13) bewirkt,

    a) daß bei der Ausführung in der Recheneinheit (2) eine Umsortierung der Maschineninstruktionen (15) nicht eingeschränkt wird; und

    b) daß bei der Übersetzung das zweite Attribut (14) zusammen mit einem zweiten Quellcode-Befehl (20), der auf den zweiten Datenspeicher (13) zugreift, eine zweite Maschineninstruktion (21) erzeugt wird, die eine zweite Grenze (22) bildet, so daß alle Quellcode-Befehle, die vor dem zweiten Quellcode-Befehl (20) angeordnet sind, in Maschineninstruktionen übersetzt werden, die in der Maschineninstruktions-Reihenfolge (16) vor der zweiten Maschineninstruktion (21) angeordnet sind.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß die Übersetzung des Quellcodes (7) in Maschineninstruktionen (15) mittels eines Interpreters oder eines Compilers oder eines Just-In-Time Compilers durchgeführt wird.
  3. Verfahren nach einem der Ansprüche 1 oder 2, dadurch gekennzeichnet, daß das erste Attribut (12) des ersten Datenspeichers (11) zusammen mit einem ersten Quellcode-Befehl (17), der auf den ersten Datenspeicher (11) zugreift, die Erzeugung einer ersten Maschineninstruktion (18) bei der Übersetzung bewirkt, die eine erste Grenze (19) bildet.
  4. Verfahren nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, daß es sich bei der ersten Grenze (19) oder der zweiten Grenze (22) jeweils um eine Fence-Maschineninstruktion handelt oder jeweils um eine Maschineninstruktion handelt, welche die Wirkung einer Fence-Maschineninstruktion beinhaltet.
  5. Verfahren nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß es sich bei dem ersten Quellcode-Befehl (17) oder dem zweiten Quellcode-Befehl (20) um einen Speicher-Lese-Zugriff handelt, der eine in dem ersten oder dem zweiten Datenspeicher (11, 13) gespeicherte Information ausliest oder einen Speicher-Schreib-Zugriff handelt, der eine Information in den ersten oder dem zweiten Datenspeicher (11, 13) einschreibt.
  6. Verfahren nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, daß während der Übersetzung und während der Ausführung in einer Recheneinheit (2) sichergestellt ist, daß über die erste Grenze (19) hinweg keine sichtbare Vertauschung in der Maschineninstruktions-Reihenfolge (16) erfolgt.
  7. Verfahren nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, daß während der Übersetzung sichergestellt ist, daß über die zweite Grenze (22) hinweg keine sichtbare Vertauschung in der Maschineninstruktions-Reihenfolge (16) erfolgt.
  8. Mehrprozessorsystem mit einer Ausführungsumgebung zur Ausführung der Schritte nach einem der Ansprüche 1 bis 7,

    – für die ein Quellcode (7) mit Quellcode-Befehlen (8) erstellt ist, die in einer Befehlsreihenfolge (9) angeordnet sind;

    – wobei der Quellcode (7) eine Datendeklaration (10) umfaßt und die Datendeklaration (10) einem ersten Datenspeicher (11) ein erstes Attribut (12) zuordnet und einem zweiten Datenspeicher (13) ein zweites Attribut (14) zuordnet; und

    – wobei das Mehrprozessorsystem (1) Mittel aufweist, um den Quellcode (7) zur Ausführung durch das Mehrprozessorsystem von dem Mehrprozessorsystem in Maschineninstruktionen (15) zu übersetzen, wobei die Maschineninstruktionen (15) umsortiert werden, so daß die Maschineninstruktionen (15) eine Maschineninstruktions-Reihenfolge (16) aufweisen, die von der Befehlsreihenfolge (9) abweicht; und

    – die Maschineninstruktionen (15) in einem Befehlsspeicher (4) zur Verarbeitung von einer Recheneinheit (2) gespeichert sind und die Recheneinheit (2) Mittel aufweist, die zur Vertauschung der Maschineninstruktions-Reihenfolge (16) geeignet sind;

    – wobei das Mehrprozessorsystem (1) Mittel aufweist, die bewirken, daß das erste Attribut (12) des ersten Datenspeichers (11) und das zweite Attribut (14) des zweiten Datenspeichers (13) die Umsortierung der Maschineninstruktionen (15) bei der Übersetzung in einer ersten vorbestimmten Weise einschränken; und

    – wobei das Mehrprozessorsystem (1) Mittel aufweist, die bewirken, daß das erste Attribut (12) des ersten Datenspeichers (11) die Umsortierung der Maschineninstruktionen (15) bei der Ausführung in der Recheneinheit (2) in einer zweiten vorbestimmten Weise eingeschränkt, während das zweite Attribut (14) des zweiten Datenspeichers (13) die Umsortierung der Maschineninstruktionen (15) bei der Ausführung in der Recheneinheit (2) zuläßt.
  9. Computerprogrammprodukt, das auf einem computergeeigneten Medium gespeichert ist und Computerlesbare Programmittel umfaßt, mit denen die Schritte gemäß einem der Ansprüche 1 bis 8 ausgeführt werden, wenn das Programmprodukt auf einem Computer läuft.
Es folgen 2 Blatt Zeichnungen






IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com