DE68915937T2 - Reduzierung von prozessorblockierungseffekten. - Google Patents
Reduzierung von prozessorblockierungseffekten.Info
- Publication number
- DE68915937T2 DE68915937T2 DE68915937T DE68915937T DE68915937T2 DE 68915937 T2 DE68915937 T2 DE 68915937T2 DE 68915937 T DE68915937 T DE 68915937T DE 68915937 T DE68915937 T DE 68915937T DE 68915937 T2 DE68915937 T2 DE 68915937T2
- Authority
- DE
- Germany
- Prior art keywords
- processor
- priority value
- value
- priority
- blocked
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 230000000903 blocking effect Effects 0.000 title claims 2
- 238000000034 method Methods 0.000 claims 5
- 238000010586 diagram Methods 0.000 description 2
- 101710097688 Probable sphingosine-1-phosphate lyase Proteins 0.000 description 1
- 101710105985 Sphingosine-1-phosphate lyase Proteins 0.000 description 1
- 101710122496 Sphingosine-1-phosphate lyase 1 Proteins 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000000263 scanning probe lithography Methods 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4831—Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Bus Control (AREA)
Description
- Die Erfindung betrifft die Steuerung des Bestands an zur Ausführung durch einen Prozessor verfügbaren Aufgaben, wenn die Arbeit des Prozessors durch einen Konflikt mit einem anderen Prozessor vorübergehend blockiert worden ist.
- Eine solche Blockierung kann beispielsweise vorkommen, wenn ein Prozessor versucht, in einen kritischen Code-Bereich einzutreten, in dem der andere Prozessor gerade arbeitet. (Kritische Bereiche werden festgelegt, um Daten, die in einem gemeinsamen Speicher gespeichert sind, vor kollidierenden Zugriffen durch zwei oder mehr Prozessoren zu schützen.) Normalerweise wird der kritische Bereich durch ein Kennzeichenbit im gemeinsamen Speicher geschützt, das gesetzt wird, wenn ein Prozessor gerade in diesem Bereich arbeitet, und das ansonsten aufgehoben wird. Ein Prozesser überprüft immer erst das Kennzeichenbit, bevor er in den Bereich eintritt, und wenn ein gesetztes Kennzeichenbit vorliegt, wartet er, bis der andere Prozessor den Bereich verlassen hat.
- In manchen Systemen wird der wartende Prozessor zur Arbeit an anderen Aufgaben herangezogen, bis der kritische Bereich frei wird. Eine Umschaltung auf andere Aufgaben beansprucht Zeit, weil aktuelle Kontextinformationen gespeichert und jedesmal dann wiederhergestellt werden müssen, wenn eine weitere Aufgabe erledigt wird.
- Eine andere bekannte Vorgehensweise nutzt die Tatsache aus, daß in manchen Computern (z. B. im VAX von Digital Equipment Corporation) jeder Aufgabe eine von beispielsweise 32 Unterbrechungsprioritätsstufen zugeordnet ist, wobei diese Aufgaben nach ihrer relativen Dringlichkeit und dem relativen Overhead, den ihre Ausführung verursacht, eingeordnet sind. Wenn ein Prozessor daran gehindert wird, in einem kritischen Bereich mit einer gegebenen Unterbrechungsprioritätsstufe zu arbeiten, kann der blockierte Prozessor im allgemeinen nur solche Aufgaben mit höherer Unterbrechungsprioritätsstufe bedienen. Im IBM Technical Disclosure Bulletin, Band 26, Nr. 6, November 1983 mit dem Titel "Suspension Locking In A Multilever Multiprocessor" (S. 2820) ist ein System beschrieben, bei dem ein Prozessor, der gerade an der Aufgabe mit der höchsten Prioritätstufe arbeitet, die ihm zur Verfügung steht, sich anderen Aufgaben mit niedrigerer Prioritätsstufe widmen kann, wenn er durch einen anderen Prozessor blockiert wird.
- Ein allgemeines Merkmal der Erfindung besteht darin, daß der Bestand oder Vorrat an zur Verfügung stehenden Aufgaben, die vom blockierten Prozessor ausgeführt werden können, während er wartet, vergrößert werden kann, und zwar durch eine vorübergehende Absenkung der Unterbrechungspriorität auf eine Minimalstufe, oberhalb der es diesem Prozessor erlaubt ist, Aufgaben zur Ausführung entgegenzunehmen.
- Bevorzugte Ausführungsbeispiele der Erfindung weisen die folgenden Merkmale auf. Wenn ein Konflikt entsteht, indem ein Prozessor nicht in einen kritischen Code-Bereich zugelassen wird, in dem gerade ein anderer Prozessor arbeitet, wird die Prioritätsstufe des blockierten Prozessors unter die Prioritätsstufe des kritischen Bereichs abgesenkt, allerdings weder unter eine vorgegebene Prioritätsstufe (die auf dem Kontext-Schaltungs-Overhead basiert, der für die verschiedenen Prioritätsstufen notwendig ist), noch unter die Prioritätsstufe, die der blockierte Prozessor vor dem Entstehen des Konflikts hatte.
- Folglich ist der Prozessor dazu in der Lage, andere Aufgaben durchzuführen, während er auf das Ende des Konflikts wartet, und zwar ohne daß ein unnötig großer Kontext-Schaltungs-Overhead entsteht, und ohne daß ihm Aufgaben mit einer Prioritätsstufe zugewiesen werden, die unter der ursprünglichen Prioritätsstufe des blockierten Prozessors liegen. Diese Idee ist leicht zu realisieren und flexibel in der Anwendung.
- Weitere Vorteile und Merkmale werden aus der folgenden Beschreibung eines bevorzugten Ausführungsbeispieles sowie aus den Ansprüchen deutlich.
- Zunächst werden die Zeichnungen kurz beschrieben.
- Fig. 1 ist ein Blockschaltbild eines Teils eines Mehrfachprozessor-Computers.
- Fig. 2 ist ein Diagramm von Unterbrechungsprioritätsstufen.
- Fig. 3 ist ein Flußdiagramm, das die Einstellung der minimalen Unterbrechungsprioritätsstufe für einen Prozessor zeigt.
- In Fig. 1 ist gezeigt daß sich in einem symmetrischen Mehrfachprozessor(SMP)- System 10 eine Reihe (N) von Prozessoren 11(1) bis 11(N) über einen Bus 14 einen gemeinsamen Speicher 12 teilen. Im Speicher 12 sind unter anderem Daten 16, eine Synchronisations-Prioritätstabelle 18 und ein Betriebssystem- und Anwendungs-Code 20 (einschließlich der kritischen Bereiche 22, verschiedener Unterbrechungs-Aufgaben 24 und einer Semaphor-Routine 26) gespeichert.
- Jeder Eintrag 28 in der Synchronisations-Prioritätstabelle entspricht einem der kritischen Bereiche und dient dazu, den Eintritt von mehr als einem Prozessor in den jeweiligen kritischen Bereich zu verhindern. Ein Kennzeichenbit-Datenfeld 30 (FL) zeigt an, ob in dem kritischen Bereich gerade ein Prozessor arbeitet. Wenn dies der Fall ist, wird dieser Prozessor im PROC-ID-Datenfeld (= Prozessor-Identifizierungs-Datenfeld) 32 identifiziert. Ein Synchronisations-Prioritätsstufen(SPL)- Datenfeld 34 enthält einen Wert, der der Unterbrechungsprioritätsstufe des kritischen Bereichs entspricht, die im Zusammenhang mit dem Tabelleneintrag steht.
- Wie in Fig. 2 gezeigt, gibt es in dem VAX 32 mögliche Unterbrechungsprioritätsstufen 36. Die unteren sechzehn Stufen sind Software-Unterbrechungen 38, während die oberen sechzehn Stufen Hardware-Unterbrechungen 40 sind, die beispielsweise Dienstanforderungen von Anwenderprogrammen beinhalten. Wenn ein Prozessor auf eine Unterbrechung bei Stufe 3 oder höher reagiert, ist bei der Kontextumschaltung nur die Speicherung des Programmzählers (PC) und des Programmzustands-Langworts (PSL) notwendig. Eine Reaktion auf eine Unterbrechungs- Aufgabe unter Stufe 3 erfordert jedoch die Speicherung aller Register.
- Bei einer gegebenen Unterbrechungsprioritätsstufe, z. B. Stufe 27, kann es eine ganze Reihe von kritischen Bereichen 42 geben. In der Synchronisations- Prioritätstabelle wird das SPL-Datenfeld für einen gegebenen Eintrag auf die Unterbrechungsprioritätsstufe des entsprechenden kritischen Bereichs gesetzt.
- Es wird nun nochmals auf Fig. 1 Bezug genommen. Jeder Prozessor weist ein Hardware-Register 44 auf, das einen SPL-Wert für diesen Prozessor enthält. Ein Prozessor kann keine Aufgabe durchführen, deren Prioritätsstufe unter seiner aktuellen SPL liegt.
- Wenn ein Prozessor im Begriff ist, in einen kritischen Bereich einzutreten, wird er angewiesen, die Semaphor-Routine 26 auszuführen.
- Es wird nun auf Fig. 3 Bezug genommen. Zunächst speichert (50) die Semaphor- Routine die SPL des Prozessors, überprüft dann den Eintrag 28 der Synchronisations-Prioritätstabelle, der dem kritischen Bereich entspricht und setzt (52) die SPL des Prozessors auf die Unterbrechungsprioritätsstufe, die in dem SPL-Datenfeld des Tabelleneintrags vorhanden ist. Anschließend überprüft und setzt (54) die Semaphor-Routine das Kennzeichenbit-Datenfeld. Wenn das Kennzeichenbit vorher nicht gesetzt worden ist, dann war der kritische Bereich nicht besetzt und steht nun nur diesem Prozessor zur Verfügung. Anschließend wird die ID des Prozessors in das PROC-ID-Datenfeld eingegeben (56) und der Prozessor wird angewiesen, in den kritischen Bereich (60) einzutreten. Am Ende des kritischen Bereichs wird das Kennzeichenbit aufgehoben (62), wodurch der kritische Bereich anderen Prozessoren potentiell zur Verfügung steht.
- Wenn die Semaphor-Routine andererseits den Bereich besetzt vorfindet, senkt (66) sie die SPL des Prozessors auf eine neue SPL ab, die über den ersten drei SPLs oder über der ursprünglichen SPL des Prozessors liegt (d. h. über der in Schritt 50 gespeicherten SPL). Es steht dem Prozessor dann frei, auf Unterbrechungen von Aufgaben anzusprechen, deren Unterbrechungsprioritätsstufe höher ist als die neue SPL, auch wenn sie (möglicherweise) unterhalb des kritischen Bereichs liegen. Nach der Ausführung (68) jeder Unterbrechungs-Aufgabe kehrt der Prozessor zur Semaphor-Routine zurück, die wieder damit fortfährt, das Kennzeichenbit (70) zu überprüfen. Wenn der kritische Bereich besetzt bleibt, steht es dem Prozessor wiederum frei, eine andere Unterbrechungs-Aufgabe auszuführen (68). Andernfalls setzt die Semaphor-Routine die SPL des Prozessors wieder auf die SPL des Tabelleneintrags (52) und fährt mit Schritt 54 fort.
- Die Absenkung der SPL des Prozessors vergrößert den Bestand an möglichen Aufgaben, die er ausführen darf, anstatt den Bestand an Aufgaben, deren Unterbrechungsprioritätsstufe höher ist als die SPL des kritischen Bereichs, zu begrenzen, und zwar ohne daß die großen Kontextumschaltungs-Overhead-Kosten für Aufgaben entstehen, deren Unterbrechungsprioritätsstufe 2 oder niedriger ist.
- Indem die SPL nicht unter ihren ursprünglichen Wert abgesenkt wird, wird gewährleistet, daß der Prozessor nicht zu Service-Aufgaben unterhalb der Stufe herangezogen wird, die dem Prozessor zugewiesen worden war, bevor er den kritischen Bereich erreichte.
- Andere Ausführungsbeispiele liegen im Bereich der nachfolgenden Ansprüche. Es können beispielsweise andere Schemata verwendet werden, um die Prioritätsstufe zu bestimmen, auf die die SPL des Prozessors abgesenkt wird, wenn der Prozessor blockiert wird.
Claims (6)
1. Verfahren zum Steuern des Bestandes an zur Ausführung durch einen
Prozessor (11) verfügbaren Aufgaben, wenn die Arbeit des Prozessors (11) in
einem Multiprozessorsystem (10) durch einen Konflikt mit einem anderen
Prozessor (11) vorübergehend blockiert worden ist, wobei das Verfahren folgendes
aufweist:
- die Anordnung der Aufgaben in einer Prioritätsfolge (36);
- die Aufrechterhaltung eines aktuellen Prioritätswertes für jeden Prozessor (11),
wobei dieser Wert das niedrigste Prioritätsniveau von Aufgaben angibt, die der
Prozessor gegenwärtig durchführen darf;
- die Speicherung (50) des aktuellen Prioritätswertes als ursprünglichen
Prioritätswert, bevor der Prozessor (11) in einen kritischen Bereich (22) eintritt;
- die Anhebung des aktuellen Prioritätswertes des Prozessors (11) auf einen
Prioritätswert, der mit dem kritischen Bereich (22) assoziiert ist; und,
- wenn der Prozessor (11) durch einen Konflikt mit einem anderen Prozessor (11)
blockiert worden ist, das Absenken (66) des angehobenen Prioritätswertes des
blockierten Prozessors (11) auf einen neuen Prioritätswert, wobei der neue
Prioritätswert nicht niedriger ist als der gespeicherte ursprüngliche
Prioritätswert.
2. Verfahren nach Anspruch 1, wobei der Prioritätswert des blockierten
Prozessors vorübergehend auf einen Wert abgesenkt wird, der im Vergleich zwischen
dem gespeicherten ursprünglichen Prioritätswert und einem vorgegebenen Wert
der größere dieser beiden Werte ist.
3. Verfahren nach Anspruch 2, wobei der vorgegebene Wert auf der Basis des
Overheads für die Kontextumschaltung bestimmt wird, der von Aufgaben mit
unterschiedlichen Prioritätswerten verlangt wird.
4. Verfahren nach Anspruch 1, wobei der kritische Bereich (22) einen
Prioritätswert besitzt, der über dem Prioritätswert des blockierten Prozessors vor der
Blockierung liegt, und wobei der Prioritätswert des blockierten Prozessors
vorübergehend auf einen Wert angehoben wird, der niedriger ist als der Prioritätswert des
kritischen Bereichs.
5. Vorrichtung zum Steuern des Bestands an zur Ausführung durch einen
Prozessor (11) verfügbaren Aufgaben, wenn die Arbeit des Prozessors (11) in
einem Multiprozessorsystem (10) durch einen Konflikt mit einem anderen
Prozessor (11) vorübergehend blockiert worden ist, wobei die Vorrichtung folgendes
aufweist:
- eine Einrichtung zum Anordnen der Aufgaben in einer Prioritätsfolge (36);
- eine Einrichtung zum Aufrechterhalten eines aktuellen Prioritätswertes (44) für
jeden Prozessor (11), wobei dieser Wert das niedrigste Prioritätsniveau von
Aufgaben angibt, die der Prozessor gegenwärtig durchführen darf;
- eine Einrichtung zum Speichern (50) des aktuellen Prioritätswertes als
ursprünglichen Prioritätswert, bevor ein Prozessor (11) in einen kritischen
Bereich (22) eintritt;
- eine Einrichtung zum Anheben des aktuellen Prioritätswertes des Prozessors
(11) auf einen Prioritätswert, der mit dem kritischen Bereich (22) assoziiert ist;
und
- eine Einrichtung zum Absenken (66) des angehobenen Prioritätswertes des
blockierten Prozessors (11) auf einen neuen Prioritätswert, wenn der Prozessor
(11) durch einen Konflikt mit einem anderen Prozessor (11) blockiert worden ist,
wobei der neue Prioritätswert nicht niedriger ist als der gespeicherte
ursprüngliche Prioritätswert.
6. Vorrichtung nach Anspruch 5, wobei die Einrichtung zum Absenken eine
Einrichtung umfaßt, um den Prioritätswert vorübergehend auf einen Wert
abzusenken, der im Vergleich zwischen dem gespeicherten ursprünglichen Wert und
einem vorgegebenen Wert der größere dieser beiden Werte ist.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US18163788A | 1988-04-14 | 1988-04-14 | |
PCT/US1989/001586 WO1989009964A1 (en) | 1988-04-14 | 1989-04-14 | Reducing the effect of processor blocking |
Publications (2)
Publication Number | Publication Date |
---|---|
DE68915937D1 DE68915937D1 (de) | 1994-07-14 |
DE68915937T2 true DE68915937T2 (de) | 1995-01-05 |
Family
ID=22665135
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE68915937T Expired - Fee Related DE68915937T2 (de) | 1988-04-14 | 1989-04-14 | Reduzierung von prozessorblockierungseffekten. |
Country Status (5)
Country | Link |
---|---|
EP (1) | EP0367816B1 (de) |
JP (1) | JP2676034B2 (de) |
CA (1) | CA1321033C (de) |
DE (1) | DE68915937T2 (de) |
WO (1) | WO1989009964A1 (de) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5247675A (en) * | 1991-08-09 | 1993-09-21 | International Business Machines Corporation | Preemptive and non-preemptive scheduling and execution of program threads in a multitasking operating system |
JP5397546B2 (ja) * | 2010-07-27 | 2014-01-22 | 富士通株式会社 | マルチコアプロセッサシステム、制御プログラム、および制御方法 |
JP5621896B2 (ja) * | 2013-10-24 | 2014-11-12 | 富士通株式会社 | マルチプロセッサシステム、制御プログラム、および制御方法 |
-
1989
- 1989-04-13 CA CA000596573A patent/CA1321033C/en not_active Expired - Fee Related
- 1989-04-14 DE DE68915937T patent/DE68915937T2/de not_active Expired - Fee Related
- 1989-04-14 EP EP89905310A patent/EP0367816B1/de not_active Expired - Lifetime
- 1989-04-14 JP JP1505044A patent/JP2676034B2/ja not_active Expired - Lifetime
- 1989-04-14 WO PCT/US1989/001586 patent/WO1989009964A1/en active IP Right Grant
Also Published As
Publication number | Publication date |
---|---|
JPH02501515A (ja) | 1990-05-24 |
DE68915937D1 (de) | 1994-07-14 |
EP0367816A1 (de) | 1990-05-16 |
WO1989009964A1 (en) | 1989-10-19 |
EP0367816B1 (de) | 1994-06-08 |
JP2676034B2 (ja) | 1997-11-12 |
CA1321033C (en) | 1993-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69803304T2 (de) | Hardwareunterstütztes verfahren zum kontextwechsel | |
DE69230462T2 (de) | Arbitrierung des Multiprozessorzugriffs zu gemeinsamen Mitteln | |
DE2629459C2 (de) | ||
DE3687724T2 (de) | Digitalprozessorsteuerung. | |
DE69609608T2 (de) | Vorrichtung und verfahren zur unterbrechungszuweisung | |
DE3131341C2 (de) | ||
DE3751164T2 (de) | Datenprozessor mit verschiedenen Unterbrechungsverarbeitungsarten. | |
DE69839194T2 (de) | Gerät und verfahren zum initieren hardwarevorrangsmanagement durch softwarekontrollierten registerzugriff | |
DE2302074A1 (de) | Speicherschutzanordnung in einem multiprozessorsystem | |
EP0011685B1 (de) | Programmierbare Speicherschutzeinrichtung für Mikroprozessorsysteme und Schaltungsanordnung mit einer derartigen Einrichtung | |
DE2054068A1 (de) | Mit Programmverschachtelung arbei tendes Datenverarbeitungssystem zur gleichzeitigen Verarbeitung mehrerer Programme | |
EP0635784A1 (de) | Multiprozessorsystem | |
DE2414311C2 (de) | Speicherschutzeinrichtung | |
DE1774870C3 (de) | Einrichtung zur Adressierung einer Speicherzelle eines Speichers in einer Datenverarbeitungsanlage | |
DE68928759T2 (de) | Rechner mit intelligentem Speichersystem und zugehöriges Verfahren | |
DE2054830C3 (de) | Informationsverarbeitungsanlage mit Mitteln zum Zugriff zu Speicher-Datenfeldern variabler Länge | |
DE2164793A1 (de) | Verfahren und Datenverarbeitungsanlage zur Steuerung einer Vielzahl von Eingabe/ Ausgabe-Einheiten mittels eine Zentraleinheit | |
DE2101949A1 (de) | Verfahren zum Schutz von Datengruppen in einer Multiprocessing-Datenverarbeitungsanlage | |
DE69233282T2 (de) | Datenverarbeitungsvorrichtung | |
DE3545937A1 (de) | Mikroprozessor | |
DE2617127A1 (de) | Mehrfachprogramm-datenverarbeitungssystem | |
DE68915937T2 (de) | Reduzierung von prozessorblockierungseffekten. | |
DE3789912T2 (de) | System und Verfahren zur Bildverarbeitung. | |
DE3410497A1 (de) | Rechneranordnung | |
EP0057755B1 (de) | Mikrorechnersystem zum raschen Auffinden von Kennzeichenblöcken |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8328 | Change in the person/name/address of the agent |
Free format text: GRUENECKER, KINKELDEY, STOCKMAIR & SCHWANHAEUSSER, 80538 MUENCHEN |
|
8339 | Ceased/non-payment of the annual fee |