DE69701806T2 - Verfahren zur leistungsregelung eines anwenderprogramms in einem digitalrechner - Google Patents
Verfahren zur leistungsregelung eines anwenderprogramms in einem digitalrechnerInfo
- Publication number
- DE69701806T2 DE69701806T2 DE69701806T DE69701806T DE69701806T2 DE 69701806 T2 DE69701806 T2 DE 69701806T2 DE 69701806 T DE69701806 T DE 69701806T DE 69701806 T DE69701806 T DE 69701806T DE 69701806 T2 DE69701806 T2 DE 69701806T2
- Authority
- DE
- Germany
- Prior art keywords
- time
- computer
- control program
- delay
- program
- 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
- 238000000034 method Methods 0.000 title claims description 26
- PWPJGUXAGUPAHP-UHFFFAOYSA-N lufenuron Chemical compound C1=C(Cl)C(OC(F)(F)C(C(F)(F)F)F)=CC(Cl)=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F PWPJGUXAGUPAHP-UHFFFAOYSA-N 0.000 title 1
- 238000005070 sampling Methods 0.000 claims 6
- 230000000977 initiatory effect Effects 0.000 claims 2
- 230000004044 response Effects 0.000 description 7
- 230000001934 delay Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000001276 controlling effect Effects 0.000 description 3
- 230000000875 corresponding effect Effects 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3433—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3419—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/805—Real-time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/81—Threshold
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Description
- Diese Erfindung betrifft Verfahren zur Regelung des Ausführungspegels, den ein Anwenderprogramm erreicht, wenn es in einem Digitalrechner ausgeführt wird.
- Für gewöhnlich setzt sich ein Digitalrechner aus einem Digitalspeicher und einem Befehlsausführungsmodul zusammen. Mehrere unterschiedliche Arten von Anwendungsprogrammen werden gleichzeitig im Speicher gespeichert, und das Befehlsausführungsmodul ist eine Digitallogikschaltung, die die Befehle in diesen Programmen durchführen kann. Im Digitalspeicher wird auch ein Betriebssystem gespeichert, und es wählt für jedes auszuführende Anwendungsprogramm Zeitschlitze aus.
- Im oben beschriebenen Digitalrechner muß die Gesamtanzahl der Anwendungsprogramme, die zu jedem Zeitpunkt aktiv sind, nicht konstant sein. Wann auch immer diese Gesamtanzahl abnimmt, werden folglich für die verbliebenen durchzuführenden aktiven Anwendungsprogramme zusätzliche Zeitschlitze verfügbar; und umgekehrt. Solchermaßen wird der Ausführungspegel der aktiven Anwendungsprogramme umgekehrt zur Gesamtanzahl der aktiven Anwendungsprogramme variieren.
- In jedem Digitalrechner führt weiterhin ein typisches Befehlsausführungsmodul die Befehle synchron mit einem Takt aus, der bei einer bestimmten Frequenz läuft. Wenn diese Taktfrequenz verändert wird, wird sich der Ausführungspegel der aktiven Anwendungsprogramme ebenfalls verändern. Eine solche Änderung in der Taktfrequenz wird zum Beispiel auftreten, wenn das Befehlsausführungsmodul von einem Modell zum anderen, das bei einer höheren Taktfrequenz läuft, aufgerüstet wird.
- Infolge der obigen Änderungen in den Ausführungspegeln der aktiven Anwendungsprogramme können bestimmte Probleme auftreten. Zum Beispiel kann ein Ausführungspegel in einem Anwendungsprogramm, der zufällig zu hoch wird, Überlastungen in anderen Einheiten verursachen, die mit dem Rechner zusammenwirken. Auch wenn der Ausführungspegel eines bestimmten Anwendungsprogramms von einem sehr niedrigen Pegel zu einem sehr hohen Pegel stark fluktuieren kann, werden dann mehrere Modelle dieses Programms, die jeweils einen unterschiedlichen Ausführungspegel aufweisen, daran gehindert, erzeugt zu werden.
- Entsprechend ist es eine Hauptaufgabe der Erfindung, ein Ausführungsregelungsprogramm bereitzustellen, durch das der Ausführungspegel eines jeden Anwendungsprogramms konstant überwacht und in Echtzeit gesteuert wird.
- In Übereinstimmung mit der vorliegenden Erfindung, wie in Anspruch 1 definiert, werden ein Verfahren zur Regelung eines Anwendungsprogramms in einem Digitalrechner bereitgestellt. Weitere Verbesserungen werden durch die Unteransprüche bereitgestellt.
- Der unabhängige Anspruch 14 ist auf das Speichermedium gerichtet, das das Regelungsprogramm nach Anspruch 1 verkörpert.
- In Zusammenhang mit dem obigen Regelungsprogramm, werden alle äußeren Einheiten, die am Rechner koppelt sind, daran gehindert, durch eine übermäßige Ausführung von Anwendungsprogrammen überladen zu werden. Zum Beispiel können solche Überladungen ohne das Regelungsprogramm in einer Datendatei auftreten, wenn die übermäßige Ausführung des Anwendungsprogramms zu viele Zugriffe aus der Datendatei verursacht.
- In Zusammenhang mit dem obigen Regelungsprogramm können auch mehrere Modelle des Anwendungsprogramms leicht so erzeugt werden, daß jedes Modell einen unterschiedlichen Ausführungspegel erreicht. Dieses Merkmal wird im Schritt 2 bereitgestellt, indem in jedem Modell ein anderer erlaubter Ausführungspegel eingestellt wird.
- Verschiedene bevorzugte Ausführungsformen der vorliegenden Erfindung werden hierin in Verbindung mit den begleitenden Zeichnungen beschrieben, worin:
- Fig. 1 ein Datenverarbeitungssystem zeigt, das ein Ausführungsregelungsprogramm in Übereinstimmung mit der vorliegenden Erfindung umfaßt;
- Fig. 2 die innere Struktur für eine bevorzugte Ausführungsform des Regelungsprogramms in Fig. 1 zeigt;
- Fig. 3 eine bevorzugte Abfolge von Unterschritten zeigt, die als ein Teil des Regelungsprogramms aus Fig. 2 ausgeführt wird, um eine Taktfrequenz eines Rechners zu bestimmen;
- Fig. 4 eine Tabelle zeigt, die von einem Teil des Regelungsprogramms aus Fig. 2 verwendet wird, um ein Ziel für eine Prozent-Laufzeit eines Anwendungsprogramms zu bestimmen;
- Fig. 5 ein Beispiel für die Zeitabfolge zeigt, mittels der das Regelungsprogramm aus Fig. 2 arbeitet;
- Fig. 6 mehrere Berechnungen zeigt, die durch einen Abschnitt des Regelungsprogramms aus Fig. 2 ausgeführt werden, um eine Verzögerung zu bestimmen, die die tatsächliche Prozent- Laufzeit eines Anwendungsprogramms auf das Ziel senken wird;
- Fig. 7 eine alternative Ausführungsform des Abschnitts des Regelungsprogramms aus Fig. 2 zeigt, die die Verzögerung bestimmt, die die tatsächliche Prozent-Laufzeit des Anwendungsprogramms auf ein Ziel vermindern wird;
- Fig. 8 die Ergebnisse zeigt, die auftreten, wenn die Ausführungsform aus Fig. 7 an die Zeitabfolge aus Fig. 5 eingesetzt wird;
- Fig. 9 eine Tabelle zeigt, die eine Alternative zur Tabelle aus Fig. 4 darstellt; und
- Fig. 10 den innere Struktur für eine modifizierte Ausführungsform des Regelungsprogramms in Fig. 2 zeigt.
- Nimmt man auf Fig. 1 Bezug, wird ein Datenverarbeitungssystem beschrieben, das die vorliegende Erfindung umfaßt. Diese Datenverarbeitungssystem aus Fig. 1 besteht aus einem Digitalrechner 10, einer elektronischen Datendatei 11 und einem weiteren Digitalrechner 12. Sowohl die Einheit 11 als auch 12 werden, wie gezeigt, mittels eines digitalen Nachrichtenkanals 13 miteinander und mit dem Rechner 10 verbunden.
- Im Digitalrechner 10 sind ein Digitalspeicher 10a und ein Befehlsausführungsmodul 10b eingeschlossen. Mehrere verschiedene Arten von Software-Programmen 20, 21-1 bis 21-N und 22 werden im Speicher 10a gespeichert, und Modul 10b ist jede beliebige digitale Logikschaltung, die die Befehle in diesen Programmen ausführen kann. In einer besonderen Ausführungsform ist der Modul 10b ein einziger PentiumTM-Mikroprozessorchip, der mit einer Taktfrequenz CK läuft.
- Jedes der Programme 21-1 bis 21-N im Speicher 10a ist ein herkömmliches Anwendungsprogramm einer beliebigen gewünschten Art. Zum Beispiel kann das Programm 21-1 ein Textverarbeitungssystem wie beispielsweise WinwordTM sein; das Programm 21-i kann ein Emulator sein, der PentiumTM-Befehle verwendet, um die Befehle eines anderen Rechners zu parsen und auszuführen; und Programm 21-N ein Datenwiedergewinnungsprogramm wie beispielsweise ein LexisTM sein.
- Alle Anwendungsprogramme 21-1 bis 21-N werden auf dem Modul 10b in der Art eines Zeitmultiplexbetriebs ausgeführt. Das Programm 20 ist ein Betriebssystem wie beispielsweise ein Windows NTTM, das die jeweiligen Zeitschlitze für jedes der durchzuführenden Anwendungsprogramme aussucht.
- In Übereinstimmung mit der vorliegenden Erfindung ist jetzt das Programm 22 ein Ausführungsregelungsprogramm, das in Verbindung mit dem Anwendungsprogramm 21-i läuft. Infolge des Betriebs vom Programm 22, wird die Ausführung des Anwendungsprogramms 21-i auf einer Echtzeit-Grundlage regelt, um einen bestimmten erlaubten Pegel nicht zu überschreiten. Zum Beispiel kann die Ausführung des Anwendungsprogramms 21-1 darauf begrenzt werden, 100 RPM nicht zu überschreiten, wobei RPM ein relatives Ausführungsmaß (relative performance measure) darstellt.
- Ein Weg, damit die Auswirkung des Ausführungsregelungsprogramms 22 ersichtlich wird, ist es, die Gesamtanzahl der Anwendungsprogramme zu verändern, die über die Zeit hinaus aktiv sind. Wann immer diese Gesamtanzahl abnimmt, werden zusätzliche Zeitschlitze für die Anwendungsprogramme 21-i verfügbar, um auf dem Modul 10b zu laufen; und umgekehrt. Folglich wird sich der Ausführungspegel des Anwendungsprogramms 21-1 - wenn das Regelungsprogramm 22 nicht vorhanden ist - umgekehrt zur Gesamtanzahl der aktiven Anwendungsprogramme verändern.
- Auch kann man die Auswirkung des Ausführungsregelungsprogramms 22 sehen, wo immer der Modul 10b aufgerüstet wird. Wenn zum Beispiel der Modul 10b von einem 90 MHz-PentiumTM-Chip auf einen 133 MHz PentiumTM-Chip geändert wird, wird die Anzahl der Programmbefehle, die in einem einzigen Zeitschlitz ausgeführt wird, zunehmen. Folglich wird der Ausführungspegel des Anwendungsprogramms 21-i ohne das Regelungsprogramm 22 ebenfalls steigen.
- Ein wichtiges Merkmal des Ausführungsregelungsprogramms 22 liegt darin, daß es verhindert, daß jede der Einheiten 11-13 durch die übermäßige Ausführung im Anwendungsprogramm 21-i überladen wird. Ohne das Regelungsprogramm 22 können solche Überladungen auftreten, wenn das Programm 21-i zu viele Zugriffe aus der Datendatei 11 macht und/oder zu viele Nachrichten an den Rechner 12 sendet und/oder zu viele Daten an beliebige andere Einheiten (nicht gezeigt) auf dem Kommunikationskanal 13 überträgt. Mit dem Regelungsprogramm 22 werden solche Überladungen vermieden, indem die Gesamtausführung des Programms eingeschränkt wird.
- Ein weiteres wichtiges Merkmal des Ausführungsregelungsprogramms 22 liegt darin, daß es ermöglicht, daß mehrere Modelle des Anwendungsprogramms auf einfache Weise derart erzeugt werden, daß jedes Modell einen unterschiedlichen Ausführungspegel erreicht. Dieses Merkmal wird auf einfache Weise erreicht, indem in jedem Modell ein anderer erlaubter Ausführungspegel eingestellt wird. Zum Beispiel kann der erlaubte Ausführungspegel in einem ersten Modell auf 50 RPM eingestellt werden; der erlaubte Ausführungspegel in einem zweiten Modell kann auf 100 RPM eingestellt werden; der erlaubte Ausführungspegel in einem dritten Modell kann auf 150 RPM eingestellt werden, usw. Dieses Merkmal kann entweder mit oder ohne Rücksicht auf das obige Überladungsvermeidungsmerkmal verwendet werden. Zum Beispiel kann der Betrag für jedes Modell geändert werden.
- Kehrt man als nächstes auf Fig. 2 zurück, wird die interne Struktur für eine bevorzugte Ausführungsform des Regelungs programms 22 beschrieben. In dieser Ausführungsform aus Fig. 2 wird das Regelungsprogramm in zwei Teile 22a und 22b aufgeteilt. Teil 22a wird nur einmal ausgeführt, und zwar erfolgt dies unmittelbar vor dem Start der Ausführung des Anwendungsprogramm 21-i. Zum Vergleich wird Teil 22b als Reaktion auf Sprünge, die wiederholt aus dem Anwendungsprogramm 21-1 erfolgen, wiederholt ausgeführt.
- Wie durch die Bezugsziffer 31 angezeigt, liest das Regelungsprogramm anfangs einen erlaubten Ausführungspegel aus, der zuvor für das Anwendungsprogramm 21-i gespeichert wurde. Geeigneterweise kann dieser erlaubte Ausführungspegel innerhalb des Anwendungsprogramms 21-i oder innerhalb des Regelungsprogramms oder auf jedem Medium gespeichert werden, das vom Modul 10b gelesen werden kann. Als nächstes bestimmt das Regelungsprogramm die Taktfrequenz CK, mit der der Modul 10b die Befehle ausführt. Dieser Schritt wird mit der Bezugsziffer 32 gekennzeichnet.
- Als nächstes verwendet das Regelungsprogramm den erlaubten Ausführungspegel aus Schritt 31 und die Taktfrequenz aus Schritt 32, um ein Ziel für die Prozent-Laufzeit des Anwendungsprogramms 21-i auf dem Modul 10b einzustellen. Zum Beispiel könnte das Ziel auf 50% eingestellt werden, was soviel bedeutet, als daß das Anwendungsprogramm 21-i nicht länger als die Hälfte der Zeit auf dem Modul 10b laufen darf, wenn es einmal gestartet startet wurde.
- Als nächstes startet das Regelungsprogramm einen Timer, der im Modul 10b bzw. in einer anderen Einheit eingeschlossen ist, auf die der Modul 10b zugreifen kann; und dieser Timer stellt die Mindest-Zeitspanne ein, die zwischen Sprüngen aus dem Anwendungsprogramm 21-i zum Regelungsprogramm verstreicht. Dieser Schritt ist mit der Bezugsziffer 34 gekennzeichnet. Im selben Schritt liest das Regelungsprogramm auch die momentane Tageszeit TOD1 von einer Tageszeituhr ab, die im Modul 10b vorliegt.
- Im Anschluß an die vorstehenden Schritte 31-34 beginnt die Ausführung des Anwendungsprogramms 21-i. Dieses Anwendungsprogramm wird in Fig. 2 als ein Emulator gezeigt; jedoch könnte alternativ irgendeine andere Anwendungsprogrammart den Emulator ersetzen.
- In Fig. 2 werden drei Hauptteile 41, 42 und 43 des Emulator-Anwendungsprogramms 21-i gezeigt. Teil 41 führt die folgenden Aufgaben aus: das Abrufen eines der Befehle, das zu emulieren ist, das Pasing dieses Befehls und das Prüfen des Timers, der in Schritt 34 gestartet wurde. Wenn der Timer abgelaufen ist, wird ein Sprung des Regelungsprogramms zum Teil 22b durchgeführt; anderenfalls wird die Ausführung des Anwendungsprogramms fortgesetzt.
- Teil 42 des Anwendungsprogramms 21-i führt einen der "kurzen" Befehle Op(i) aus, die emuliert werden müssen. Ein "kurzer" Befehl ist ein Befehl, der weniger als eine vorbestimmte Zeit braucht, um ausgeführt zu werden. Für jeden "kurzen" Befehl Op(i) wird ein entsprechendes Emulatorteil 42 bereitgestellt. Die Ausführung des Emulatortelis 42 wird fortgesetzt, bis sie abgeschlossen ist, woraufhin eine Abzweigung zurück zu Teil 41 genommen wird.
- Teil 43 des Anwendungsprogramms führt einen der "langen" Befehle Op(j) durch, die emuliert werden müssen. Für jeden "langen" Befehl Op(j) wird ein entsprechendes Emulatorteil 43 bereitgestellt. An vorbestimmten Punkten innerhalb eines jeden Emulatorteils wird für einen "langen" Befehl der Timer, der in Schritt 34 gestartet wird, geprüft. Wenn dieser Timer abgelaufen ist, wird ein Sprung zum Teil 22b des Regelungsprogramms ausgeführt; anderenfalls wird die Ausführung des langen Befehls fortgesetzt.
- Jedesmal wenn in den Abschnitt 22b des Regelungsprogramms 22 eingetreten wird, wird die tatsächliche Prozent-Laufzeit des Anwendungsprogramms 21-i auf dem Modul 10b bestimmt. Diese tatsächliche Prozent-Laufzeit ist die Summe aller beabstandeten Zeitspannen, in denen der Modul 19b das Anwendungsprogramm 21-i durchführt, geteilt durch die Gesamtzeit, die vom Beginn zum Ende dieser Zeitspannen verstreicht. Dieser Schritt ist mit der Bezugsziffer 35 gekennzeichnet.
- Als nächstes vergleicht der Abschnitt 22b des Regelungsprogramms die tatsächliche Prozent-Laufzeit, wie in Schritt 35 bestimmt, mit dem Ziel. Dieser Schritt wird mit Bezugsziffer 36 identifiziert. Wenn die tatsächliche Prozent- Laufzeit das Ziel nicht überschreitet, wird dann ein Rücksprung zurück zum Anwendungsprogramm 21-i gemacht; und dieser wird durch den Schritt 36a angezeigt.
- Wenn zum Vergleich die tatsächliche Prozent-Laufzeit das Ziel überschreitet, werden dann die Schritte 37-38 vom Regelungsprogramm ausgeführt. Im Schritt 37 wird eine bestimmte Verzögerung festgelegt, die die tatsächliche Prozent-Laufzeit auf das Ziel senken wird. Wenn die Verzögerung iN kleiner als ein bestimmter voreingestellter Schwellwert ist, wird dann in Schritt 37a ein Rücksprung zum Anwendungsprogramm 21-i gemacht. Andernfalls wird in Schritt 38 eine Abzweigung zurück zum Betriebssystem durchgeführt, und zwar mit einer Anforderung zur Rückkehr zur Ausführung des Anwendungsprogramms 21-i, nachdem eine Verzögerung von mindestens Δ auferlegt wird.
- Während der Verzögerung, die durch den Schritt 38 eingeleitet wird, wird das Betriebssystem 20 anderen Anwendungsprogrammen wie beispielsweise dem Programm 21-N erlauben, auf dem Modul 10b zu laufen, sofern diese Programme gegenwärtig aktiv sind; und folglich wird das Datenverarbeitungsvermögen des Moduls 10b nicht vergeudet. Wenn das Anwendungsprogramm 21-i das einzige Anwendungsprogramm ist, das aktiv ist, wenn die Verzögerung vom Schritt 38 auferlegt wird, dann wird das Betriebssystem 20 einfach in einer Leerlaufschleife bleiben, bis die Verzögerung abgeschlossen wird.
- Unter Bezugnahme auf Fig. 3 wird als nächstes ein bevorzugtes Verfahren zum Bestimmen der Taktfrequenz des Rechners, wie es vom Schritt 32 im Regelungsprogramm gefordert wird, beschrieben. Dieses Verfahren aus Fig. 3 setzt sich aus mehreren Unterschritten zusammen, die in Fig. 3 mit den Bezugsziffern 32a bis 32j gekennzeichnet werden. Ein besonderes Merkmal dieses Verfahrens aus Fig. 3 liegt darin, daß es gegenüber Fehlern immun ist, die andernfalls durch unerwartete Interrupts bewirkt werden können.
- Im Unterschritt 32a wird die Tageszeit eingelesen; im Unterschritt 32b wird ein Maschinenzykluszählwert C1 eingelesen;
- und in Schritt 32c wird die Tageszeit nochmals eingelesen. Die Zeit T1 ist der Lesevorgang der ersten Tageszeit, die durch den Unterschritt 32a erhalten wird; und die Zeit T2 ist der zweite Lesevorgang der Tageszeit, die im Unterschritt 32c erhalten wird.
- Diese zwei Lesevorgänge der Tageszeit T1 und T2 werden im Unterschritt 32d miteinander verglichen. Wenn die Zeit T2 minus der Zeit T1 größer als eine voreingestellte Grenze ergibt - wie beispielsweise 3 Millisekunden - werden dann die Unterschritte 32a-32d wiederholt, da eine Zeitdifferenz über der Grenze anzeigt, daß zwischen dem Unterschritt 32a und dem Unterschritt 32c ein Interrupt auftrat. Ein solches Interrupt zerstört die Fähigkeit zu sagen, daß der Zählvorgang C1 zur Tageszeit T2 erfolgte.
- Im Unterschritt 32e wird eine bestimmte Reihe von Vorgängen durchgeführt; und während dieses erfolgt, werden der Maschinenzykluszähler und die Tageszeituhr dutzende Male inkrementiert. Daraufhin werden die Unterschritte 32f, 32g und 32h ausgeführt, die den oben beschriebenen Unterschritten 32a, 32b und 32c gleich sind.
- Als nächstes wird Unterschritt 32i ausgeführt, worin die Lesewerte der Tageszeiten T3 und T4, die in den Unterschritten 32f und 32h erhalten werden, miteinander verglichen werden. Wenn die Zeit T4 minus der Zeit T3 größer als die voreingestellte Grenze ist, werden dann die Unterschritte 32f-32i wiederholt, da ein Interrupt zwischen dem Unterschritt 32f und dem Unterschritt 32h stattgefunden haben muß. Ein solches Interrupt zerstört die Fähigkeit zu sagen, daß der Zählvorgang C2 zur Zeit t4 erfolgte.
- Im Unterschritt 32j wird die Taktfrequenz des Prozessors als die Anzahl der Maschinenzyklen bestimmt, die während des Zeitintervalls T4-T2 auftrat. Diese Zyklenanzahl ist dem Zählwert C2 vom Unterschritt 32g minus dem Zählwert C1 vom Unterschritt 32b gleich, und zwar unabhängig davon, ob zu irgendeinem Zeitpunkt während der Reihen von Vorgängen, die im Unterschritt 32e ausgeführt werden, ein Interrupt erfolgte oder nicht.
- Unter Bezugnahme auf Fig. 4 wird als nächstes ein bevorzug tes Verfahren zum Einstellen eines Ziels für die Prozent-Laufzeit des Anwendungsprogramms 20-i für den Fall beschrieben, wo der Modul 10b ein einziger PentiumTM-Mikroprozessor ist. Diese Einstellung des Ziels erfolgt während des zuvor beschriebenen Schrittes 33 in Fig. 2.
- Fig. 4 ist in Form einer Tabelle, die mehrere Zeilen und drei Spalten aufweist. In jeder Zeile gibt der am weitesten links befindliche Eintrag eine bestimmte Taktfrequenz für einen einzigen PentiumTM-Mikroprozessor im Modul 10b an; der nächste Eintrag gibt einen erlaubten Ausführungspegel an, der vom Anwendungsprogramm 21-i nicht überschritten werden muß; und der am weitesten rechts befindliche Eintrag gibt ein entsprechendes Ziel für die Prozent-Laufzeit des Anwendungsprogramms 21-i an.
- Zum Beispiel ist die Taktfrequenz in der zweiten Zeile aus Fig. 4 75 MHz; der erlaubte Ausführungspegel 100 RPM; und die Ziel-Prozent-Laufzeit 50 Prozent. Dies bedeutet, daß, wenn der Modul 10b ein 75 MHz PentiumTM-Mikroprozessor ist, daraufhin das Anwendungsprogramm 20-i einen relativen Ausführungspegel von 100 RPM erreichen wird, wenn dieses Programm 50% der Zeit auf dem Modul 10b läuft.
- Um alle Einträge in der Tabelle aus Fig. 4 zu erzeugen, wird das Anwendungsprogramm 21-i mit einer bestimmten Taktfrequenz f0 über 100% der Zeit auf einem PentiumTM-Mikroprozessor ausgeführt und der entstandene Ausführungspegel P0 gemessen. Um die Ausführung P0 auf irgendeinen erlaubten Ausführungspegel PPL zu reduzieren, während die Taktfrequenz bei f0 bleibt, wird daraufhin das Ziel für die Prozent-Laufzeit gleich mit PPL dividiert durch P0 eingestellt. Wenn die Taktfrequenz auf fX verändert wird, der erlaubte Ausführungspegel jedoch unverändert bleibt, wird infolgedessen das Ziel für die Prozent-Laufzeit durch das Verhältnis von f0 dividiert durch fX geändert.
- Nimmt man jetzt auf Fig. 5 Bezug, wird des weiteren detailliert die Zeitabfolge beschrieben, mit der das Regelungsprogramm arbeitet. Fig. 5 ist ein Taktungsdiagramm, in dem die Zeit auf einer horizontalen Achse von links nach rechts verläuft. Vor der Zeit t0 läuft eines der anderen Anwendungsprogramme (wie beispielsweise das Programm 21-N) auf dem Modul 10b.
- Zum Zeitpunkt t0 beendet das Betriebssystem 20 das Laufen des anderen Anwendungsprogramms, da sein Zeitschlitz aufgehört hat. Dann entscheidet das Betriebssystem 20 das Emulatorprogramm 21-i zwischen dem Zeitpunkt t0 und t1 zu starten; und so wird zum Zeitpunkt t1 der Zeitschlitz vom Betriebssystem an das Emulatorsystem abgegeben.
- Der Abschnitt 22a des Regelungssystems wird - wie zuvor in Verbindung mit der Fig. 2 beschrieben - ab den Zeitpunkt t1 ausgeführt. Dort wird für die Prozent-Laufzeit des Emulatorprogramms 21-i ein Ziel eingestellt. Auch ein Timer wird gestartet, der Sprünge bewirken wird, die wiederholt vom Emulatorprogramm zum Regelungsprogramm durchgeführt werden müssen; und die anfängliche Tageszeit TOD1 wird gelesen.
- In den Fig. 2 und 5 wird die Zeit zwischen den Sprüngen beispielsweise auf zwanzig Millisekunden eingestellt. Als ein Beispiel wird auch die anfängliche Tageszeit TOD1 auf 8 : 05 : 00 : 00 eingestellt. Alle Tageszeitlesevorgänge werden in Stunden : Minuten : Sekunden : und Millisekunden angegeben.
- Im Anschluß an die obigen Vorgänge durch den Abschnitt 22a des Regelungsprogramms beginnt eigentlich die Ausführung des Emulatorprogramms 21-i. Die Ausführung des Emulatorprogramms 21- i wird bis zum Zeitpunkt t2 fortgesetzt, wobei zu diesem Zeitpunkt ein Sprung zum Abschnitt 22b des Regelungsprogramms gemacht wird. Dieser Sprung erfolgt als Reaktion auf einen abgelaufenen Timer, der im Schritt 34 aus Fig. 2 gestartet und in den Abschnitten 41 und 43 des Emulatorprogramms geprüft wurde, wie zuvor beschrieben wurde.
- Das Regelungsprogramm 22 bestimmt ab den Zeitpunkt T2, ob die tatsächliche Prozent-Laufzeit des Anwendungsprogramms das Ziel überschreitet. Beim Treffen der Bestimmung befindet das Regelungsprogramm, daß zwischen dem Zeitpunkt t1 (wenn das Emulatorprogramm als erstes gestartet wird) und dem momentanen Zeitpunkt t2 das Emulatorprogramm 100% der Zeit gelaufen ist.
- Um die tatsächliche Prozent-Laufzeit auf das Ziel zu reduzieren, wird eine Verzögerung Δ von zwanzig Millisekunden eingeführt. Folglich zweigt das Regelungsprogramm mit einer Aufforderung zur Wiederkehr zum Betriebssystem ab, und zwar nur nachdem die Verzögerung von mindestens L1 verstrichen ist.
- Als Reaktion auf die obige Abzweigung erlaubt das Betriebssystem einem anderen Anwendungsprogramm zu laufen. Dieses andere Anwendungsprogramm fährt solange fort zu laufen, bis das Betriebssystem beschließt, dem Emulator 21-i eine zusätzliche Laufzeit zu geben. In Fig. 5 wird diese zusätzliche Laufzeit mit dem Zeitpunkt t3 beginnend an den Emulator gegeben.
- Während des Zeitintervalls von t2 bis t3 läuft der Timer erneut ab. Folglich wird kurz nach dem Zeitpunkt t3 ein Sprung des Regelungsprogramms zum Abschnitt 22b vorgenommen. Dort wird bestimmt, daß die tatsächliche Prozent-Laufzeit kürzer als das Ziel ist und solchermaßen wird ein Rücksprung zum Emulator 21-i gemacht.
- Danach läuft das Emulatorprogramm bis zum Zeitpunkt t4 kontinuierlich auf dem Modul 10b. Dann wird zum Zeitpunkt t4 vom Emulatorprogramm ein Sprung zum Abschnitt 22b des Regelungsprogramms gemacht. Dieser Sprung erfolgt als Reaktion auf ein weiteres Ablaufen des Timers, der in Schritt 34 aus Fig. 2 gestartet wurde.
- Während des Sprungs zum Regelungsprogramm zum Zeitpunkt t4 wird die tatsächliche Prozent-Laufzeit erneut mit der Ziel- Prozent-Laufzeit verglichen. Bei der Durchführung dieses Vergleichs wird eine Bestimmung gemacht, daß die tatsächliche Prozent-Laufzeit das Ziel nicht überschreitet. Folglich unternimmt der Abschnitt 22b des Regelungsprogramms einen Rücksprung zum Emulatorprogramm, und zwar eher als einen Sprung zum Betriebssystem.
- Vom Zeitpunkt t4 bis zum Zeitpunkt t5 wird die Ausführung des Emulatorprogramms fortgesetzt. Dann wird zum Zeitpunkt t5 als Reaktion auf ein weiteres Ablaufen des Timers ein weiterer Sprung zum Abschnitt 22b des Regelungsprogramms vorgenommen.
- Wenn in das Regelungsprogramm zum Zeitpunkt t5 eingetreten wird, wird die tatsächliche Prozent-Laufzeit eines Emulatorprogramms wiederum mit der Ziel-Prozent-Laufzeit verglichen. Dieser Vergleich zeigt, daß die tatsächliche Prozent-Laufzeit das Ziel überschreitet; jedoch überschreitet die Differenz zwischen ihnen nicht einen vorab eingestellten Schwellwert. Folglich wird vom Regelungsprogramm ein weiterer Rücksprung zum Emulatorprogramm vorgenommen.
- Die Ausführung des Emulatorprogramms wird vom Zeitpunkt t5 bis zum Zeitpunkt t6 fortgesetzt; und danach erfolgt infolge des Ablaufens des Timers ein weiterer Sprung des Regelungsprogramms zum Abschnitt 22b. Danach bestimmt das Regelungsprogramm, daß die tatsächliche Prozent-Laufzeit des Emulatorprogramms das Ziel um mehr als die Schwellwertgröße überschreitet.
- Um die tatsächliche Prozent-Laufzeit auf das Ziel zu reduzieren, muß eine Verzögerung Δ von 22 Millisekunden eingeführt werden. Folglich zweigt das Regelungsprogramm zum Betriebssystem ab, und zwar mit der Anforderung zur Rückkehr zum Emulatorprogramm, nachdem eine Verzögerung von mindestens Δ auftritt.
- Als Reaktion auf diese Abzweigung erlaubt das Betriebssystem anderen Anwendungsprogrammen zu laufen. Dann erlaubt das Betriebssystem zum Zeitpunkt t7, die Ausführung des Emulatorprogramms fortzusetzen. Während dieser Ausführung des Emulators werden wiederholt Sprünge zum Regelungsprogramm vorgenommen, ähnlich denen, die zwischen dem Zeitpunkt t3 und dem Zeitpunkt t6 auftraten.
- Wie der Abschnitt 22b des Regelungsprogramms die tatsächliche Prozent-Laufzeit bestimmt und die Verzögerung Δ bestimmt, die benötigt wird, um die tatsächliche Prozent- Laufzeit zu senken, wird in Fig. 6 gezeigt. Dort sagt die Linie 51a aus, daß die tatsächliche Prozent-Laufzeit des Emulators 21- i zum Zeitpunkt t2 gleich ist mit der Laufzeit RT des Emulators dividiert durch TOD2-TOD1. In der Linie 51a ist TOD2 die Tageszeit zum Zeitpunkt t2 und TOD1 die Tageszeit zum Zeitpunkt t1.
- Die Laufzeit RT des Emulators 21-i wird vom Betriebssystem gehalten; und sie wird durch die Ausführung eines "Lese Laufzeit"-Befehls vom Regelungsprogramm abgetastet. Die momentane Tageszeit wird von einer Tageszeituhr im Modul 10b gehalten, und sie wird durch die Ausführung eines "Lese Tageszeit"-Befehls vom Regelungsprogramm abgetastet.
- In der Linie 51b wird das Ziel von 50% eingestellt, um mit der Laufzeit RT dividiert durch die Größe TOD2-TOD1+A gleich zu sein. Die Lösung der Linie 51b für Δ gibt die Verzögerung an, die zum Zeitpunkt t2 eingeführt werden muß, um die tatsächliche Prozent-Laufzeit auf 50% zu senken. Diese Verzögerung Δ wird in Linie 51 so bestimmt, daß sie zwanzig Millisekunden beträgt.
- Die Linie 52a sagt aus, daß die tatsächliche Prozent- Laufzeit des Emulators 21-i zu einem Zeitpunkt t3 gleich mit der Laufzeit RT des Emulators dividiert durch TOD3-TOD1 ist. Hier ist TOD3 die Tageszeit zum Zeitpunkt t3. Zum Zeitpunkt t3 liegt die tatsächliche Prozent-Laufzeit unter dem Ziel; und folglich wird keine Verzögerung eingeführt.
- Auf ähnliche Weise sagt die Linie 53a aus, daß die tatsächliche Prozent-Laufzeit des Emulators 21-i mit der Laufzeit RT des Emulators dividiert durch TOD4-TOD1 ist. Hier entspricht TOD4 der Tageszeit zum Zeitpunkt t4. Zum Zeitpunkt t4 liegt die tatsächliche Prozent-Laufzeit unter dem Ziel; und folglich wird keine Verzögerung eingeführt.
- Die Linie 54a sagt aus, daß die tatsächliche Prozent- Laufzeit des Emulators 21-i zum Zeitpunkt t5 gleich mit der Laufzeit RT des Emulators dividiert durch TOD5-TOD1 ist; worin TOD5 der Tageszeit zum Zeitpunkt t5 entspricht. Dies ergibt eine tatsächliche Prozent-Laufzeit von 50,8%, die über dem Ziel liegt.
- In der Linie 54b wird das Ziel von 50% gleich zur Laufzeit RT dividiert durch die Größe TOD5-TOD1+Δ eingestellt. Die Lösung der Linie 54b für Δ ergibt, wie in Linie 54c gezeigt, eine Verzögerung von zwei Millisekunden, die eingeführt werden muß, um die tatsächliche Prozent-Laufzeit auf 50% zu senken. Jedoch wird diese Verzögerung von zwei Millisekunden nicht eingeführt, da sie den voreingestellten Schwellwert nicht überschreitet.
- Die Linie 55a sagt aus, daß die tatsächliche Prozent- Laufzeit des Emulators 21-i zum Zeitpunkt t6 gleich ist mit der Laufzeit RT des Emulators dividiert durch TODG-TOD1. Dies ergibt eine tatsächliche Prozent-Laufzeit von 57,9%. In der Linie 55b wird das Ziel von 50% gleich zur Laufzeit RT dividiert durch die Größe TODG-TOD1+A eingestellt. Die Lösung der Linie 55b für A ergibt eine Verzögerung von 22 Millisekunden, wie in Linie 55c gezeigt wird.
- Eine bevorzugte Ausführungsform der Erfindung wurde nun detailliert beschrieben. Jetzt werden in Verbindung mit den Fig. 7, 8, 9 und 10 einige alternative bevorzugte Ausführungsformen der Erfindung beschrieben.
- In Fig. 7 umfassen die Schritte 60-69, wie gezeigt, eine alternative Ausführungsform des Abschnitts 22b des Regelungsprogramms der Fig. 2. In Zusammenhang mit dieser Ausführungsform aus Fig. 7 wird die tatsächliche Prozent-Laufzeit eines Anwendungsprogramms 21-i in Schritt 60 als die Laufzeit RT dieses Anwendungsprogramms dividiert durch diese Laufzeit plus alle Verzögerungen, die vom Regelungsprogramm eingeführt werden, bestimmt.
- Wenn die tatsächliche Prozent-Laufzeit des Schrittes 60 das Ziel überschreitet, dann wird bei Schritt 61 eine derartige Verzögerung Δ gefunden, daß die Laufzeit RT des Anwendungsprogramms dividiert durch die Laufzeit plus alle zuvor eingeführten Verzögerungen plus die Verzögerung Δ gleich mit dem Ziel ist. Wenn die Verzögerung Δ größer als ein voreingestellter Schwellwert ist (wie beispielsweise zehn Millisekunden), sagen dann die Schritte 62 und 63 aus, daß die verbliebenen Schritte 63 bis 69 ausgeführt werden.
- Im Schritt 64 wird die aktuelle Tageszeit X gelesen. Im Schritt 65 wird eine Abzweigung vom Regelungsprogramm zum Betriebssystem vorgenommen, und zwar mit einer Aufforderung zur Rückkehr nachdem eine Verzögerung von mindestens Δ aufgetreten ist. Wenn später diese Rückkehr vom Betriebssystem stattfindet, wird der Schritt 66 ausgeführt, worin die momentane Tageszeit Y gelesen wird. Dann wird in Schritt 67 die Dauer der tatsächlichen Verzögerung, die zwischen dem Schritt 64 und dem Schritt 66 erfolgte, als die Größe Y-X bestimmt. Im Schritt 68 wird die tatsächliche Verzögerung von Y-X zu allen zuvor eingeführten Verzögerungen addiert, um die momentane Gesamtgröße aller eingeführten Verzögerungen zu erhalten.
- Wenn das Regelungsprogramm aus Fig. 7 an das Taktungsdiagramm aus Fig. 5 eingesetzt wird, werden die Ergebnisse, die an verschiedenen Schritten im Programm erfolgen, in Fig. 8 gezeigt. Diese Figur enthält eine Tabelle, worin die Spalten den Zeitpunkten in Fig. 5 und die Zeilen den Schritten in Fig. 7 entsprechen. Zum Beispiel ist der Eintrag aus Fig. 8 an der Spalte t2, Zeile 61', 20 Millisekunden; und dies bedeutet, daß die Verzögerung Δ zwanzig Millisekunden ist, wenn der Schritt 61 aus Fig. 7 zum Zeitpunkt t2 in Fig. 5 eingesetzt wird. Auf ähnliche Weise ist der Eintrag aus Fig. 8 an der Spalte t3, Zeile 67', 58 Millisekunden; und dies bedeutet, daß eine tatsächliche Verzögerung von 58 Millisekunden gefunden wird, wenn der Schritt 67 zum Zeitpunkt t3 in Fig. 5 eingesetzt wird.
- Ein besonderes Merkmal der Verwendung des Schrittes 60 in Fig. 7, um die tatsächliche Prozent-Laufzeit zu bestimmen, liegt darin, daß Verzögerungen in der Lauf Zeit des Anwendungsprogramms 21-i, die durch das Betriebssystem eingeleitet werden, ignoriert werden. Wenn zum Beispiel das Betriebssystem die Beendigung des Laufens eines Emulatorprogramms in Fig. 5 zum Zeitpunkt tX einleitet, wie durch die gestrichelte Linie angezeigt wird, dann wird die Verzögerung beim Laufen des Emulators, die vom Zeitpunkt tX bis zum Zeitpunkt t7 erfolgt, im Schritt 60 aus Fig. 7 ignoriert. Diese Verzögerung wird auch vom Schritt 61 aus Fig. 7 ignoriert.
- Mit der ersten Ausführungsform des Regelungsprogramms, die in Verbindung mit Fig. 6 beschrieben wurde, wird zum Vergleich eine Verzögerung beim Laufen des Emulators vom Zeitpunkt tX bis zum Zeitpunkt t7, die vom Betriebssystem eingeleitet wird, nicht ignoriert werden. In Zusammenhang mit der Ausführungsform aus Fig. 6 wird die tatsächliche Prozent-Laufzeit zum Zeitpunkt t7 gleich mit der Gesamtlaufzeit des Emulators bis zum Zeitpunkt t7 dividiert durch TOD7-TOD1 sein.
- Als nächstes sollte auf Fig. 9 Bezug genommen werden, worin eine Tabelle gezeigt wird, die eine alternative Ausführungsform der zuvor beschriebenen Tabelle in Fig. 4 bildet. In Zusammenhang mit der Ausführungsform aus Fig. 9 wird das Ziel für die Prozent-Laufzeit des Anwendungsprogramms 21-i auf mehrere unterschiedliche Modelle eines Mikroprozessors korreliert, von denen jeder als eine Alternative im Modul 10b eingeschlossen sein kann.
- Zum Beispiel sagt die erste Zeile der Tabelle aus Fig. 9 aus, daß das Anwendungsprogramm 21-i in Zusammenhang mit einer Ziel-Prozent-Laufzeit von 100% einen Ausführungspegel von 200 RPM aufweisen wird, wenn dieses Programm auf einen einzigen 75 MHz PentiumTM-Mikroprozessor innerhalb des Moduls 10b ausgeführt wird. Auf ähnliche Weise sagt die zweite Zeile aus Fig. 9 aus, daß das Anwendungsprogramm 21-i in Zusammenhang mit einer Ziel- Prozent-Laufzeit von 100% einen Ausführungspegel von 300 RPM aufweisen wird, wenn dieses Programm von dualen 75 MHz PentiumTM Mikroprozessoren innerhalb des Moduls 10b ausgeführt wird. Auf ähnliche Weise sagt die dritte Zeile aus Fig. 9 aus, daß das Anwendungsprogramm in Zusammenhang mit einer Prozent-Laufzeit von 100% einen Ausführungspegel von 240 RPM aufweisen wird, wenn dieses Programm von einem einzigen 75 MHz Pentium ProTM- Mikroprozessor innerhalb des Moduls 10b ausgeführt wird.
- Um die Einträge in alle drei Zeilen aus Fig. 9 zu erzeugen, läuft das Anwendungsprogramm 21-i auf jedem der drei Rechnermodelle, die aufgeführt sind, mit einer Taktfrequenz von 75 MHz über 100% der Zeit, und es wird für jeden Fall der entstandene Ausführungspegel gemessen. Um danach zu bestimmen, wie die Ziel-Prozent-Laufzeit sein sollte, um den obigen Ausführungspegel auf irgendeinen niedrigeren Ausführungspegel zu reduzieren, während die Taktfrequenz entweder bei 75 MHz bleibt oder geändert wird, wird dasselbe Verfahren verwendet, wie es zuvor in Verbindung mit der Fig. 4 detailliert beschrieben wurde. Bei der Durchführung dieses Schrittes wird für jede Ausführungsform des Moduls 10b, die in Fig. 9 aufgeführt wird, eine eigene Fig. 4 erzeugt.
- Als nächstes wird unter Bezugnahme auf die Fig. IO eine modifizierte Ausführungsform des Regelungsprogramms in Fig. 2 beschrieben. In der Ausführungsform aus Fig. 10 wird das Regelungsprogramm in zwei Teile 22a' und 22b' aufgeteilt. Teil 22a' wird nur einmal ausgeführt, was unmittelbar vor dem Laufstart eines Anwendungsprogramms 21-i erfolgt. Teil 22b' wird als Reaktion auf Sprünge, die wiederholt vom Anwendungsprogramm 21-i ausgeführt werden, mehrere Male ausgeführt.
- Im Schritt 71 aus Fig. 10 liest das Regelungsprogramm einen bestimmten Ausführungspegel aus einer Datei aus, der für das Anwendungsprogramm 21-i erlaubt ist. Als nächstes bestimmt das Regelungsprogramm im Schritt 72 eine Taktfrequenz, bei der der Modul 10b die Befehle ausführt. Diese zwei Schritte 71 und 72 sind dieselben wie die Schritte 31 und 32 in Fig. 2.
- Als nächstes bestimmt das Regelungsprogramm 22a' im Schritt 73 das bestimmte Modell des Mikroprozessors, das im Modul 10b eingeschlossen ist. In Übereinstimmung mit Fig. 9 kann dieses Modell zum Beispiel ein einziger PentiumTM-Mikroprozessorchip bzw. ein Dual-PentiumTM-Mikroprozessorchips bzw. ein einziger Pentium ProTM-Mikroprozessorchip sein. Um Schritt 73 durchzuführen, wird ein "CPU-Identifizierung"-Befehl (CPUID) ausgeführt.
- Im Schritt 74 werden die Ergebnisse der vorherigen Schritte 71-73 verwendet, um ein Ziel für die Prozent-Laufzeit des Anwendungsprogramms 21-i einzustellen. Der Schritt 74 wird ausgeführt, indem ein Eintrag aus einer Tabelle wie beispielsweise jene in den Fig. 4 und 9 gezeigte eingelesen wird.
- Als nächstes lädt das Regelungsprogramm im Schritt 75 einen anfänglichen Zählwert in ein Register innerhalb des Moduls 10b bzw. in ein Wort des Speichers 10a; und es liest die momentane Tageszeit TOD1 ein. Dieser anfängliche Zählwert wird danach auf Null dekrementiert, um dadurch Sprünge vom Anwendungsprogramm zum Regelungsprogramm zu bewirken; und solchermaßen stellt sie eine Alternative zum Timer dar, der vom Schritt 34 in Fig. 2 gestartet wird.
- Im Anschluß an die obigen Schritte 71-75 beginnt die Ausführung des Anwendungsprogramms 21-i. Das Programm 21-i wird wieder als ein Emulator gezeigt, so daß ein Vergleich zwischen der Ausführungsform der Fig. 10 und der Fig. 2 gemacht werden kann; jedoch kann irgendeine Anwendungsprogrammart den Emulator ersetzen.
- In Fig. 10 werden drei Hauptteile 41', 42' und 43' der Emulatoranwendung 21-i gezeigt. Teil 41' ist wie Teil 41 in Fig. 2, mit Ausnahme davon, daß im Teil 41' der Zählwert um Eins dekrementiert und auf einen Wert hin geprüft wird, der kleiner als Null ist. Teil 42' ist mit Teil 42 in Fig. 2 identisch. Teil 43' ist wie Teil 43 in Fig. 2, mit Ausnahme davon, daß der Zählwert wieder um Eins dekrementiert und auf einen Wert hin geprüft wird, der kleiner als Null ist.
- Wenn ein Zählwert, der kleiner als Null ist, erfaßt wird, wird ein Sprung zum Teil 22b' des Regelungsprogramms gemacht, das alle Schritte 60-69 aus Fig. 7 einschließt. Durch den Schritt 61 wird die Verzögerung Δ bestimmt, die die tatsächlich vorliegende Laufzeit des Anwendungsprogramms 21-i auf das Ziel verringern wird. Wenn diese Verzögerung Δ kleiner als die voreingestellte Schwellwertgröße ist, wird unmittelbar ein Rücksprung zum Anwendungsprogramm durchgeführt. Andernfalls wird durch den Schritt 65 eine Abzweigung zum Betriebssystem mit einer Aufforderung zur Wiederkehr gemacht, nachdem eine Verzögerung von mindestens Δ auftritt. Nachdem diese Verzögerung abgeschlossen ist, werden die Schritte 66-69 des Regelungsprogramms aus Fig. 7 ausgeführt. Dann wird der anfängliche Zählwert erneut in das Register bzw. das Speicherwort geladen und ein Rücksprung zum Anwendungsprogramm 21-i vorgenommen.
- Sowohl mit der Ausführungsform des Regelungsprogramms aus Fig. 10 als auch mit der Ausführungsform aus Fig. 2 können die Schritte zum Bestimmen der Verzögerung Δ, die die tatsächliche Prozent-Laufzeit auf das Ziel reduzieren wird, ausgeführt werden, indem im Modul 10b nur ein paar Befehle ausgeführt werden. Folglich wird vom Regelungsprogramm für jeden Fall, wo die Verzögerung Δ den Schwellwert nicht überschreitet, sehr wenig Zeit vergeudet.
- Sowohl in Fig. 2 als auch in Fig. 10 wird vorzugsweise jeder Sprung zum Regelungsprogramm und die sofortige Rückkehr zum Anwendungsprogramm, ohne daß eine Verzögerung eingeführt wird, darauf beschränkt, daß er weniger als zu einem Prozent der Zeit zwischen jeglichen aufeinanderfolgenden Sprüngen zum Regelungsprogramm auftritt. Dies gewährleistet, daß das Regelungsprogramm nur eine unbedeutende Größe an zusätzlicher Organisation darstellt.
- In der Ausführungsform aus Fig. 10 wird vorzugsweise auch der anfängliche Zählwert, der in den Block 22a' des Regelungsprogramms geladen und erneut in den Block 22b' geladen wird, vom Regelungsprogramm erhöht, wenn die Taktfrequenz CK des Moduls 10b steigt. Dies stellt sicher, daß die Zeit zwischen jeglichen zwei aufeinanderfolgenden Sprüngen zum Regelungsprogramm im wesentlichen konstant bleibt - wie beispielsweise 20 MS. Solchermaßen bleibt der zusätzliche Organisationsaufwand, der infolge des Regelungsprogramms vorliegt, unbedeutend, wenn die Taktfrequenz CK zunimmt.
- Ein bestimmtes Verfahren zur Bestimmung der Taktfrequenz des Rechners besteht aus den Unterschritten 32a - 32j in Fig. 3. Als eine Modifikation zur Fig. 3 können jedoch die Unterschritte 32a, 32c, 32f und 32g geändert werden, um den Maschinenzykluszähler auszulesen; die Unterschritte 32b und 32g können geändert werden, um die Tageszeit auszulesen, und die Unterschritte 32d und 32i können geändert werden, um den Maschinenzykluszählwert jeweils aus den Unterschritten 32a-32c und 32f-32g zu vergleichen. Wenn die Differenz zwischen zwei Maschinenzykluszählwerte kleiner als eine voreingestellte Grenze wie beispielsweise 3000 ist, könnte zwischen den Lesevorgängen dieser Zählwerte kein Interrupt aufgetreten sein.
- Mehrere bevorzugte Ausführungsformen der Erfindung wurden nun detailliert beschrieben. Zusätzlich können jedoch verschiedene Änderungen und Modifikationen zu den Details der bevorzugten Ausführungsformen vorgenommen werden, ohne sich vom Schutzumfang und dem Geist der Erfindung zu lösen. Entsprechend sollte klar sein, daß die Erfindung nicht auf die Details irgendeiner speziellen Ausführungsform begrenzt ist, sondern durch die anliegenden Ansprüche bestimmt wird.
Claims (14)
1. Ein Verfahren zur Regelung der Ausführung eines
Anwendungsprogramms in einem Digitalrechner, wobei das Verfahren
durch den Rechner ausgeführt wird und folgende Schritte umfaßt:
das Abtasten einer Taktfrequenz, bei der der Rechner
arbeitet, durch ein Regelungsprogramm im Rechner;
das Einstellen eines Ziels für eine Prozent-Laufzeit des
Anwendungsprogramms im Rechner durch das Regelungsprogramm als
eine Funktion der Taktfrequenz und eines bestimmten
Ausführungspegels, der erreicht werden soll;
das Ausführen des Anwendungsprogramms im Rechner, und zwar
derart, daß wiederholt Sprünge zum Regelungsprogramm
durchgeführt werden;
das Fortsetzen des Ausführensschritts im Anschluß an jeden
der Sprünge, nachdem eine jeweilige Zeitverzögerung eingeführt
wird, die die tatsächliche Prozent-Laufzeit auf das Ziel senken
wird, wenn die tatsächliche Prozent-Laufzeit des
Anwendungsprogramms im Rechner das Ziel überschreitet; und anderenfalls
das Fortsetzen des Ausführensschritts ohne das Einführen einer
Verzögerung; und
das Einleiten einer jeden jeweiligen Zeitverzögerung durch
das Abzweigen vom Regelungsprogramm zu einem Betriebsprogramm im
Rechner mit einer Aufforderung zur Einführung einer bestimmten
Verzögerung, und worin das Betriebssystem reagiert, indem es dem
Rechner ermöglicht, während einer Zeitspanne, die der bestimmten
Verzögerung gleich ist oder sie überschreitet, andere Programme
auszuführen.
2. Ein Verfahren nach Anspruch 1, worin jede jeweilige
Zeitverzögerung mit einer veränderlichen Dauer vom
Regelungsprogramm eingeführt wird, die sich erhöht, wenn sich die
tatsächliche Prozent-Laufzeit minus dem Ziel erhöht.
3. Ein Verfahren nach Anspruch 1, worin jede jeweilige
Zeitverzögerung im Regelungsprogramm durch die Unterschritte der
Bestimmung der Gesamtlaufzeit des Anwendungsprogramms und der
Gesamtzeit, die kontinuierlich verstrichen ist, seitdem die
Laufzeit startete, ausgewählt wird, und der Auswahl der
jeweiligen Zeitverzögerung ausgewählt wird, und zwar derart, daß das
Ziel gleich mit der Gesamtlaufzeit dividiert durch die Summe der
Gesamtzeit, die kontinuierlich verstrichen ist, und der
jeweiligen Zeitverzögerung ist.
4. Ein Verfahren nach Anspruch 1, worin jede jeweilige
Zeitverzögerung im Regelungsprogramm durch die Unterschritte der
Bestimmung der Gesamtlaufzeit des Anwendungsprogramms und der
Gesamtverzögerung, die vom Regelungsprogramm eingeführt wurde,
seitdem die Laufzeit startete, ausgewählt wird, und der Auswahl
der jeweilige Laufzeit ausgewählt wird, und zwar derart, daß das
Ziel gleich mit der Gesamtlaufzeit dividiert durch die Summe der
Gesamtlaufzeit und der Gesamtverzögerung und der jeweiligen
Zeitverzögerung ist.
5. Ein Verfahren nach Anspruch 1, worin jede jeweilige
Zeitverzögerung nur mit einer Dauer eingeführt wird, die einen
vorbestimmten minimalen Schwellwert überschreitet.
6. Ein Verfahren nach Anspruch 1, worin der Abtastschritt
die Unterschritte der Vornahme eines Paars von Lesevorgängen aus
einer Tageszeituhr im Rechner und eines Lesevorgangs zwischen
dem Paar aus einem Maschinenzykluszähler im Rechner einschließt;
des Ausführens einer Reihe von Befehlen; des Wiederholens des
Vornahmeschrittes; und des Einstellens der Taktfrequenz auf die
Differenz zwischen den Lesevorgängen aus dem
Maschinenzykluszähler dividiert durch die Differenz zwischen zwei Lesevorgängen
von unterschiedlichen Paaren der Tageszeituhr, und zwar nur
dann, wenn sich die Tageszeitlesewerte in jedem Paar um weniger
als eine vorbestimmte Grenze unterscheiden.
7. Ein Verfahren nach Anspruch 1, worin der Abtastschritt
die Unterschritte der Vornahme eines Paars von Lesevorgängen aus
einem Maschinenzykluszähler im Rechner und eines Lesevorgangs
zwischen dem Paar aus einer Tageszeituhr im Rechner einschließt;
des Ausführens einer Reihe von Befehlen; des Wiederholens des
Vornahmeschrittes; und des Einstellens der Taktfrequenz auf die
Differenz zwischen zwei Lesevorgängen aus verschiedenen Paaren
aus dem Maschinenzykluszähler dividiert durch die Differenz
zwischen den Lesevorgängen aus der Tageszeituhr, und zwar nur
dann, wenn sich die Maschinenzykluszähler-Lesewerte in jedem
Paar um weniger als eine vorbestimmte Grenze unterscheiden.
8. Ein Verfahren nach Anspruch 1, worin der Schritt zum
Abtasten der Ziel-Prozent-Laufzeit die Unterschritte der
Bereitstellung einer Tabelle im Regelungsprogramm einschließt,
die mehrere Prozent-Laufzeiten auf entsprechende Kombinationen
aus der Taktfrequenz und den Ausführungspegeln korreliert; und
des Verwendens der Taktfrequenz aus dem Abtastschritt und des
bestimmten Ausführungspegels einschließt, um die Ziel-Prozent-
Laufzeit aus der Tabelle auszuwählen.
9. Ein Verfahren nach Anspruch 1, worin der Abtastschritt
den Unterschritt der Erfassung eines bestimmten Modells für
einen Rechner durch das Regelungsprogramm einschließt; und worin
die Ziel-Prozent-Laufzeit mittels der Kombination des Modells
und der Taktfrequenz und des bestimmten Ausführungspegels
eingestellt wird.
10. Ein Verfahren nach Anspruch 1, worin die Sprünge im
Ausführungsschritt von einer Timerschaltung im Rechner
eingeleitet werden, die parallel zur Ausführung des Anwendungsprogramms
läuft.
11. Ein Verfahren nach Anspruch 1, worin die Sprünge im
Ausführungsschritt durch einen Zählvorgang eingeleitet werden,
der durch die Befehle verändert wird, die sequentiell mit dem
Anwendungsprogramm ausgeführt werden.
12. Ein Verfahren nach Anspruch 1, worin jeder Sprung zum
Regelungsprogramm und die anschließende Fortsetzung des
Ausführungsschrittes ohne die Verzögerung begrenzt wird, um in
weniger als einem Prozent der Zeit zwischen jeden zwei
aufeinanderfolgenden Sprüngen zum Regelungsprogramm zu erfolgen.
13. Ein Verfahren nach Anspruch 1, worin die Sprünge aus
dem Ausführungsschritt bei einer Rate auftreten, die vom
Regelungsprogramm im wesentlichen konstant gehalten wird, selbst
wenn sich die Taktfrequenz erhöht.
14. Eine von einem Rechner lesbare
Programmspeichervorrichtung, die ein Regelungsprogramm umfaßt, das Verfahrensschritte
durchführt, die die Ausführung eines Anwendungsprogramms im
Rechner regeln; wobei die Verfahrensschritte folgendes
einschließen:
das Abtasten einer Taktfrequenz, mit der der Rechner
arbeitet, durch ein Regelungsprogramm im Rechner;
das Einstellen eines Ziels für eine Prozent-Laufzeit des
Anwendungsprogramms im Rechner durch das Regelungsprogramm als
Funktion der Taktfrequenz und eines bestimmten
Ausführungspegels, der erreicht werden soll;
das Ausführen des Anwendungsprogramms am Rechner, und zwar
derart, daß wiederholt Sprünge zum Regelungsprogramm vorgenommen
werden;
das Fortsetzen des Ausführensschritts im Anschluß an jeden
der Sprünge, nachdem eine jeweilige Zeitverzögerung eingeführt
wird, die die tatsächliche Prozent-Laufzeit auf das Ziel senken
wird, wenn die tatsächliche Prozent-Laufzeit des
Anwendungsprogramms im Rechner das Ziel überschreitet; und anderenfalls
das Fortsetzen des Ausführensschritts ohne das Einführen einer
Verzögerung; und
das Einleiten jeder jeweiligen Zeitverzögerung aus dem
Regelungsprogramm durch das Abzweigen zu einem Betriebssystem im
Rechner mit der Anforderung; dem Rechner die Ausführung anderer
Programme während der jeweiligen Verzögerung zu ermöglichen.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/686,612 US5794011A (en) | 1996-07-19 | 1996-07-19 | Method of regulating the performance of an application program in a digital computer |
PCT/US1997/012619 WO1998003917A1 (en) | 1996-07-19 | 1997-07-18 | Method of regulating the performance of an application program in a digital computer |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69701806D1 DE69701806D1 (de) | 2000-05-31 |
DE69701806T2 true DE69701806T2 (de) | 2000-10-19 |
Family
ID=24757035
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69701806T Expired - Fee Related DE69701806T2 (de) | 1996-07-19 | 1997-07-18 | Verfahren zur leistungsregelung eines anwenderprogramms in einem digitalrechner |
Country Status (6)
Country | Link |
---|---|
US (1) | US5794011A (de) |
EP (1) | EP0912940B1 (de) |
JP (1) | JP3215438B2 (de) |
CN (1) | CN1099639C (de) |
DE (1) | DE69701806T2 (de) |
WO (1) | WO1998003917A1 (de) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6381558B1 (en) | 1998-12-18 | 2002-04-30 | International Business Machines Corporation | Alternative profiling methodology and tool for analyzing competitive benchmarks |
US20020135611A1 (en) * | 1999-03-04 | 2002-09-26 | Trevor Deosaran | Remote performance management to accelerate distributed processes |
US6580431B1 (en) * | 1999-03-04 | 2003-06-17 | Nexmem | System, method, and computer program product for intelligent memory to accelerate processes |
US6978233B1 (en) | 2000-03-03 | 2005-12-20 | Unisys Corporation | Method for emulating multi-processor environment |
US6978374B1 (en) | 2000-09-29 | 2005-12-20 | Unisys Corporation | Authorization key system for selectively controlling the performance of a data processing system |
KR20030020221A (ko) * | 2001-09-03 | 2003-03-08 | 주식회사 만호 | 차량용 헤드라이너 모듈화용 브래킷트, 고정클립 및 그고정방법 |
US20030120539A1 (en) * | 2001-12-24 | 2003-06-26 | Nicolas Kourim | System for monitoring and analyzing the performance of information systems and their impact on business processes |
US8903968B2 (en) * | 2006-08-29 | 2014-12-02 | International Business Machines Corporation | Distributed computing environment |
DE102006046201A1 (de) * | 2006-09-29 | 2008-04-17 | Siemens Ag | Verfahren zum rechnergestützten Optimieren des Ressourcenverbrauchs eines Programms |
DE102007029133A1 (de) | 2007-03-20 | 2008-09-25 | Ludwig-Maximilians-Universität | Verfahren zum rechnergestützten Ermitteln der Abhängigkeiten einer Vielzahl von Modulen eines technischen Systems, insbesondere eines Softwaresystems |
CN102033802B (zh) * | 2010-11-11 | 2013-01-23 | 广东威创视讯科技股份有限公司 | 一种统计显示设备累计运行时间的装置及其方法 |
US9870298B2 (en) * | 2013-08-26 | 2018-01-16 | Google Llc | Application resource utilization management |
CN104615525B (zh) * | 2013-11-01 | 2018-09-04 | 腾讯科技(深圳)有限公司 | 一种检测移动终端中应用程序的运行时长的方法及装置 |
US11068827B1 (en) | 2015-06-22 | 2021-07-20 | Wells Fargo Bank, N.A. | Master performance indicator |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4893271A (en) * | 1983-11-07 | 1990-01-09 | Motorola, Inc. | Synthesized clock microcomputer with power saving |
US4727491A (en) * | 1984-06-27 | 1988-02-23 | Compaq Computer Corporation | Personal computer having normal and high speed execution modes |
US5086387A (en) * | 1986-01-17 | 1992-02-04 | International Business Machines Corporation | Multi-frequency clock generation with low state coincidence upon latching |
US5047919A (en) * | 1986-04-03 | 1991-09-10 | Harris Corporation | Method and apparatus for monitoring software execution in a parallel multiprocessor computer system |
US4882727A (en) * | 1987-03-11 | 1989-11-21 | Aristacom International, Inc. | Adaptive digital network interface |
US5483659A (en) * | 1987-09-14 | 1996-01-09 | Yamamura; Kimio | Apparatus for controlling a signal processing system to operate in high and low speed modes |
US5123107A (en) * | 1989-06-20 | 1992-06-16 | Mensch Jr William D | Topography of CMOS microcomputer integrated circuit chip including core processor and memory, priority, and I/O interface circuitry coupled thereto |
WO1993022725A1 (en) * | 1992-04-28 | 1993-11-11 | THE UNITED STATES GOVERNMENT as represented by THESECRETARY OF COMMERCE | Synthetic perturbation tuning of computer programs |
-
1996
- 1996-07-19 US US08/686,612 patent/US5794011A/en not_active Expired - Lifetime
-
1997
- 1997-07-18 CN CN97197581A patent/CN1099639C/zh not_active Expired - Fee Related
- 1997-07-18 WO PCT/US1997/012619 patent/WO1998003917A1/en active IP Right Grant
- 1997-07-18 EP EP97934220A patent/EP0912940B1/de not_active Expired - Lifetime
- 1997-07-18 DE DE69701806T patent/DE69701806T2/de not_active Expired - Fee Related
- 1997-07-18 JP JP50710598A patent/JP3215438B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH11514120A (ja) | 1999-11-30 |
CN1228856A (zh) | 1999-09-15 |
CN1099639C (zh) | 2003-01-22 |
JP3215438B2 (ja) | 2001-10-09 |
DE69701806D1 (de) | 2000-05-31 |
WO1998003917A1 (en) | 1998-01-29 |
EP0912940B1 (de) | 2000-04-26 |
EP0912940A1 (de) | 1999-05-06 |
US5794011A (en) | 1998-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69701806T2 (de) | Verfahren zur leistungsregelung eines anwenderprogramms in einem digitalrechner | |
DE4227345C2 (de) | Verfahren zur Ablaufsteuerung von Prozessen in einem Mehrprozessor-Computersystem | |
DE69031233T2 (de) | Adaptive Arbeitsfolgeplanung für Mehrfachverarbeitungssysteme | |
DE60126288T2 (de) | Nicht-zeitabhängige synchronisation von datenbanken | |
EP0907912B1 (de) | Synchronisationsverfahren | |
DE69219372T2 (de) | Mikrorechner mit Zeitüberwachungseinrichtung | |
DE69911026T2 (de) | Synchronisation von prozessoren in einem fehlertoleranten multi-prozessor-system | |
EP2504738B1 (de) | Parallelisierte programmsteuerung | |
EP0655682B1 (de) | Recheneinheit mit mehreren ausführbaren Tasks | |
DE4410775C2 (de) | Steuergerät und Arbeitsverfahren eines Betriebssystems für dieses Steuergerät | |
DE69908682T2 (de) | Prozessor mit Echtzeit-Ablaufsteuerung zur Fehlerbeseitigung ohne Fehlerbeseitigungsmonitor | |
DE4111072C2 (de) | ||
DE68924810T2 (de) | Zeitgeberkanal für die Verwendung in einem Mehrkanal-Zeitsystem. | |
DE69114321T2 (de) | Zum Durchführen der Unterbrechungsverschachtelungsfunktion geeignetes Unterbrechungssteuerungsgerät. | |
DE68915074T2 (de) | Integrierte Zeitgeberschaltung mit mehreren Kanälen und zugeordnetem Bedienungsprozessor. | |
DE68924719T2 (de) | Vorrichtung und Verfahren zur Ausführung eines Unterprogramms in einem Datenverarbeitungssystem mit Blockumschaltung. | |
DE3650165T2 (de) | Buszustandssteuerungsschaltung. | |
DE69222468T2 (de) | Vorrichtung zur Steigerung der Leistung eines einer Multiprozessorstruktur mit einer möglicherweise hohen Anzahl von Prozessoren zugeordneten Echtzeitsteuerprogrammkerns | |
EP1303809B1 (de) | Verfahren und vorrichtung zur messung der laufzeit einer task in einem echtzeitsystem | |
DE68919018T2 (de) | Zeitgeberkanal mit Übereinstimmungserkennungsmerkmalen. | |
DE68922545T2 (de) | Zugeordneter Dienstprozessor mit Übertragungsmöglichkeiten zwischen Kanälen. | |
EP3080668B1 (de) | Verfahren zur beeinflussung eines steuerprogramms eines steuergeräts | |
DE69125881T2 (de) | Verhinderung der Bestimmung der Ausführungszeit einer vorbestimmten Datenverarbeitungsroutine im Zusammenhang mit dem Auftreten eines zuvor beobachtbaren Ereignisses | |
DE69128908T2 (de) | Verfahren zum Durchführen von erlässlichen Befehlen in einem Rechner | |
DE19957594B4 (de) | Verfahren zum Synchronisieren von threads eines Computerprogramms |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |