DE19983709B4 - Scheduling resource requests in a computer system - Google Patents

Scheduling resource requests in a computer system Download PDF

Info

Publication number
DE19983709B4
DE19983709B4 DE19983709T DE19983709T DE19983709B4 DE 19983709 B4 DE19983709 B4 DE 19983709B4 DE 19983709 T DE19983709 T DE 19983709T DE 19983709 T DE19983709 T DE 19983709T DE 19983709 B4 DE19983709 B4 DE 19983709B4
Authority
DE
Germany
Prior art keywords
resource
request
controller
scheduler
time
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE19983709T
Other languages
German (de)
Other versions
DE19983709T1 (en
Inventor
Siamack Chandler Haghighi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE19983709T1 publication Critical patent/DE19983709T1/en
Application granted granted Critical
Publication of DE19983709B4 publication Critical patent/DE19983709B4/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/485Resource constraint

Abstract

Verfahren zum zeitlichen Einplanen von Ressourcen-Anforderungen aus aktiven Ausführungsentitäten, die Tasks, Prozesse und/oder Threads umfassen, wobei die Ressourcen-Anforderungen jeweils eine von mehreren Ressourcen eines Computersystems anfordern, wobei das Computersystem wenigstens einen mit einer CPU gekoppelten Controller (102, 110) aufweist, wobei jede Ressource (104, 106, 112, 118, 120) mit einem zugehörigen Controller (102, 110) gekoppelt ist, wobei:
a) jeder aktiven Ausführungsentität für jede der Ressourcen jeweils wenigstens ein Zeitfenster (402) innerhalb eines Einplanzyklus (400) zugewiesen wird, wobei die Zeitfenster (402) von einem auf der CPU laufenden Betriebssystem (220) zugewiesen werden, wobei die Zeitfenster (402) jeweils aus einer Anzahl von Zeit-Slots bestehen, wobei die Zuweisung der Zeitfenster in einer Mehrzahl von Tabellen (202) gespeichert wird, wobei jeweils eine Tabelle (202A–202E) einer Ressource zugeordnet ist, wobei die Tabellen (202A–202E) Zeit-Slot-Zuweisungen speichern, in denen jedem Zeit-Slot ein Identifizierer einer Ausführungsentität zugeordnet ist;
b) wobei ein Scheduler (232) des Betriebssystems (220) jeweils eine...
A method of scheduling resource requests from active execution entities comprising tasks, processes, and / or threads, the resource requests each requesting one of a plurality of resources of a computer system, the computer system including at least one controller coupled to a CPU (102, 110 ), each resource (104, 106, 112, 118, 120) being coupled to an associated controller (102, 110), wherein:
a) each active execution entity for each of the resources is assigned at least one time window (402) within a scheduling cycle (400), wherein the time windows (402) are assigned by an operating system (220) running on the CPU, wherein the time windows (402) each of a plurality of time slots, wherein the allocation of the timeslots is stored in a plurality of tables (202), one table (202A-202E) being associated with each resource, the tables (202A-202E) being time-sliced. Storing slot assignments in which an identifier of an execution entity is assigned to each time slot;
b) wherein a scheduler (232) of the operating system (220) each have a ...

Figure 00000001
Figure 00000001

Description

Die Erfindung bezieht sich auf die deterministische Einplanung von Anforderungen in Systemen.The The invention relates to the deterministic scheduling of requirements in systems.

Softwareebenen (Layer) in einem System (wie beispielsweise einem Computer) umfassen typischerweise ein Betriebssystem und Anwendungsprogramme. Wenn Anwendungsprogramme ausgeführt werden, können ein oder mehrere Prozesse, Tasks oder andere Grundarbeitseinheiten oder Ausführungsentitäten erzeugt werden. Bei bestimmten Betriebssystemen, wie beispielsweise den Betriebssystemen Windows 95 oder Windows NT® der Microsoft Corporation, kann jeder Prozeß eine oder mehrere Arbeitseinheiten (die als "Threads" bezeichnet werden) enthalten, die einen in dem Adreßraum des Prozesses enthaltenen Code ausführen, um zugewiesene Funktionen auszuführen. Zu einem Elternprozeß gehörende Threads können so zugewiesen sein, daß sie verschiedene Funktionen ausführen. Bei einem Spreadsheet-Prozeß beispielsweise können Threads erzeugt werden, um zu rechnen, zu drucken, Benutzereingaben aufzunehmen, Hilfefunktionen zur Verfügung zu stellen usw. Bei anderen Betriebssystemen kann eine Task oder ein Prozeß die Grundarbeitseinheit oder Ausführungsentität bilden, die zur Ausführung durch eine zentrale Verarbeitungseinheit (CPU) eingeplant werden kann.Software layers in a system (such as a computer) typically include an operating system and application programs. When executing application programs, one or more processes, tasks, or other basic work units or execution entities may be created. For certain operating systems, such as Microsoft Corporation's Windows 95 or Windows NT® operating systems, each process may include one or more work units (called "threads") that execute a code contained within the address space of the process for assigned functions perform. Threads associated with a parent process may be assigned to perform various functions. For example, in a spreadsheet process, threads may be generated to calculate, print, record user input, provide help functions, and so on. In other operating systems, a task or process may constitute the basic work item or execution entity that is to be executed by a central processing unit (CPU) can be scheduled.

Betriebssysteme können einen Einplaner (Scheduler) enthalten, um mehrere aktive Threads oder Prozesse zu verwalten. Verschiedene Arten der Betriebssysteme können verschiedene Einplanungsschemata aufweisen. Bei einigen Windows-Betriebssystemen beispielsweise werden Zeitscheiben (Zeitfenster) aktiven Threads in einem umlaufenden Schema zugewiesen, während welcher es den zugehörigen Threads gestattet wird, ausgeführt zu werden. Darüber hinaus können bei einigen Windows-Betriebssystemen Prioritätsklassen den Threads zugewiesen werden. Threads in der höchsten Prioritätsklasse werden in den ihnen zugewiesenen Zeitscheiben zuerst ausgeführt, gefolgt von Threads in niedrigeren Prioritätsklassen. So kann in einer bestimmten Prioritätsklasse die Einplanung in einer umlaufenden Weise (round robin) durchgeführt werden. Ein Thread wird solange abgearbeitet, bis eines oder mehrere Ereignisse auftreten: Die Zeitscheibe endet oder der Thread durch einen anderen Thread einer höheren Prioritätsklasse, der zum Ablaufen bereit ist, verdrängt wird (preempted).operating systems can a scheduler (scheduler) to contain multiple active threads or Manage processes. Different types of operating systems can be different Have scheduling schemes. On some Windows operating systems For example, time slices (time windows) become active threads assigned in a wrap-around scheme during which it's associated threads is permitted to become. About that can out For some Windows operating systems, priority classes are assigned to the threads become. Threads in the highest priority class are executed in the time slices assigned to them first, followed Threads in lower priority classes. So can in one certain priority class the scheduling is carried out in a circumferential manner (round robin). A thread is processed until one or more events The time slice ends or the thread passes through another thread a higher one Priority class, which is ready to expire, is preempted.

Aus der EP 0 817 041 A2 ist ein Verfahren zum Zuteilen von Ressourcen bekannt, bei dem ein Ressourcen-Manager verwendet wird. Dieser Manager empfängt Anforderungen nach Ressource, prüft deren Verfügbarkeit und reserviert die verfügbaren Ressourcen.From the EP 0 817 041 A2 For example, a method of allocating resources using a resource manager is known. This manager receives requests for resources, checks their availability, and reserves available resources.

Aus M.B. Jones et al.: Support for User-Centric Modular Real-Time Resource Management in the Rialto Operating System sind weitere Möglichkeiten zur Ressourcenverteilung mit einem Ressourcen-Planer bekannt. Der lokale Resourcen-Planer verhandelt mit Einzelanwendungen und versucht die Verfügbarkeit der laufenden Anwendungen im Hinblick auf die Ressourcen Zuordnungen zu optimieren.Out M. B. Jones et al .: Support for User-Centric Modular Real-Time Resource Management in the Rialto Operating System are other ways to Resource distribution with a resource planner known. The local Resource planner negotiates with individual applications and tries availability of running applications in terms of resource allocations to optimize.

Verschiedene Prozesse, Threads oder andere Arbeitseinheiten können Systemressourcen in verschiedener Weise benutzen. Beispielsweise können bei einem Videowiedergabe- und- decodierprozeß Daten von einem Compact-Disc-(CD-) oder digitalen Videoplatten-(DVD-) Laufwerk zum Systemspeicher, zwischen der CPU und dem Systemspeicher und aus dem Systemspeicher zum Videospeicher zur Anzeige durch eine Graphikkarte auf einem Monitor übertragen werden. Grundsätzlich ist die Datenübertragung von dem CD- oder DVD-Laufwerk zum Systemspeicher langsamer als die Datenübertragung zwischen der Graphikkarte und dem Systemspeicher, welche wiederum langsamer sein kann als die Datenübertragung zwischen der CPU und dem Systemspeicher. Somit können Systemressourcen (einschließlich beispielsweise des Systemspeichers, der Busse und anderer Einrichtungen) in Abhängigkeit von den Anforderungen der verschiedenen Arbeitseinheiten oder Ausführungsentitäten in unterschiedlicher Weise benutzt werden.Various Processes, threads or other work units can use different system resources Use the way. For example, at a video playback and decoding process data from a compact disc (CD) or digital video disc (DVD) Drive to the system memory, between the CPU and the system memory and from the system memory to the video memory for display by a Render graphics card on a monitor become. in principle is the data transfer from the CD or DVD drive to system memory slower than the data transfer between the graphics card and the system memory, which in turn slower than the data transfer between the CPU and the system memory. Thus, you can System resources (including for example system memory, buses and other facilities) in dependence of the requirements of different work units or execution entities in different ways Be used.

Herkömmliche Betriebssysteme berücksichtigen üblicherweise die verschiedenen Ressourcenanforderungen der verschiedenen Prozesse, Threads oder anderen Arbeitseinheiten nicht effektiv. Solche herkömmlichen Betriebssysteme planen Prozesse, Threads oder andere Arbeitseinheiten auf der Anwendungsebene ein; beispielsweise werden die der jeweiligen Anwendung zugeordneten Prozesse, Threads oder anderen Arbeitseinheiten einer vorgegebenen Prioritätsklasse zugewiesen. Typischerweise werden Anforderungen aus den Arbeitseinheiten in Übereinstimmung mit der zuvor zugewiesenen Priorität und dem Einplanungsprotokoll ohne Rücksicht darauf eingeplant, ob die benötigten Systemressourcen verfügbar sind.conventional Operating systems usually take into account the different resource requirements of different processes, threads or other work units are not effective. Such conventional Operating systems plan processes, threads or other work units at the application level; for example, those of the respective Application associated processes, threads or other work units a given priority class assigned. Typically, requests from the work items will be in accordance with the previously assigned priority and the scheduling protocol without regard to it scheduled whether the needed System resources available are.

Es ist Aufgabe der Erfindung, die Ressourcen-Einplanung für ablaufende Tasks, Prozesse oder Threads derart zu verbessern, dass die Zuteilung von Systemressourcen effektiver erfolgt.It Object of the invention, the resource scheduling for expiring Tasks, processes or threads to improve such that the allocation system resources more effectively.

Diese Aufgabe wird erfindungsgemäß durch ein Verfahren mit den Merkmalen des Anspruchs 1 sowie ein System mit den Merkmalen des Anspruchs 9 gelöst.This object is achieved by a method having the features of claim 1 and a system with the features of claim 9 solved.

Vorteilhafte Ausgestaltungen der Erfindung sind in den Unteransprüchen angegeben.advantageous Embodiments of the invention are specified in the subclaims.

1 ist ein Blockschaltbild eines Systems eines Ausführungsbeispiels der Erfindung. 1 Figure 4 is a block diagram of a system of one embodiment of the invention.

2A und 2B sind eine Blockdarstellung der Ebenen in dem System gemäß 1. 2A and 2 B FIG. 12 is a block diagram of the levels in the system according to FIG 1 ,

3 veranschaulicht einen Einplanungszyklus in Übereinstimmung mit einem Ausführungsbeispiel. 3 illustrates a scheduling cycle in accordance with one embodiment.

4 ist ein Ablaufdiagramm eines Einplanungsmoduls gemäß einem Ausführungsbeispiel in dem System gemäß 1. 4 FIG. 10 is a flowchart of a scheduling module according to an embodiment in the system according to FIG 1 ,

5 ist ein Ablaufdiagramm einer Basis-Eingabe/Ausgabe-System(BIOS)-Routine gemäß einem Ausführungsbeispiel in dem System gemäß 1. 5 FIG. 10 is a flowchart of a basic input / output system (BIOS) routine according to an embodiment in the system according to FIG 1 ,

6 ist ein Ablaufdiagramm eines Betriebssystems gemäß einem Ausführungsbeispiel in dem System gemäß 1. 6 FIG. 10 is a flowchart of an operating system according to an embodiment in the system according to FIG 1 ,

Ein System gemäß den Ausführungsbeispielen der Erfindung enthält verschiedene Ressourcen, die von Software- oder Firmware-Ebenen oder -Modulen, die in dem System ablaufen, benutzt werden oder auf die zugegriffen wird. Beispielsweise können die Systemressourcen einen Systemspeicher, einen oder mehrere Busse und weitere Einrichtungen umfassen. Ein Einplaner gemäß den Ausführungsbeispielen, der in dem System abläuft, plant Anforderungen aus Basisarbeitseinheiten oder Ausführungsentitäten (z.B. Prozessen, Tasks oder Threads) ein, die von den Software- und Firmware-Ebenen gemäß vorgegebenen Kriterien, welche bei einigen Ausführungsbeispielen umfassen können, ob bestimmte Systemressourcen verfügbar sind, sowie die Verzögerungs- und Bandbreitenerfordernisse der Anforderungen, erzeugt werden. Gemäß einigen Ausführungsbeispielen wird dem Einplaner eine Rückkopplung über die Systemressourcenverfügbarkeit und -benutzung zur Verfügung gestellt. Durch Verwendung einer deterministischen Lösung, bei welcher die Verfügbarkeit und Ausnutzung der angeforderten Ressourcen durch einen Einplaner bestimmt werden können, ist der Einplaner besser in der Lage, zu garantieren, daß eine Anforderung aus einer Ausführungsentität in Übereinstimmung mit den Bandbreiten- und Verzögerungserfordernissen der anfordernden Entität bedient wird.One System according to the embodiments of the invention different resources ranging from software or firmware levels or modules running in the system which is accessed. For example, the system resources may be one System memory, one or more buses and other facilities include. A scheduler according to the embodiments, which runs in the system, schedules requests from basic work items or execution entities (e.g. Processes, tasks, or threads) by the software and firmware levels according to predetermined Criteria that may include in some embodiments, whether certain system resources available as well as the delay and bandwidth requirements of the requirements. According to some embodiments is the scheduler a feedback on the System resource availability and use available posed. By using a deterministic solution, at which the availability and utilization of the requested resources by a scheduler can be determined the scheduler is better able to guarantee that a requirement from an execution entity in accordance with the bandwidth and delay requirements the requesting entity is served.

Es wird auf 1 Bezug genommen, in der ein Blockschaltbild eines Systems 10 gezeigt ist, welches beispielsweise ein Mehrzweckcomputer oder ein Spezialcomputer oder ein anderes mikroprozessor- oder mikrocontroller-basiertes System, ein Hand-Held-Computer, eine Set-Top-Box, ein Gerät, ein Spielsystem oder irgendein anderes System sein kann, das eine Steuereinrichtung enthält, wie beispielsweise eine anwendungsspezifische integrierte Schaltung (ASIC) oder ein programmierbares Gatter-Array (PGA).It will open 1 Reference is made to a block diagram of a system 10 which may be, for example, a general purpose computer or a special purpose computer or other microprocessor or microcontroller based system, a hand held computer, a set top box, a device, a game system, or any other system that includes a controller includes, such as an application specific integrated circuit (ASIC) or a programmable gate array (PGA).

Obwohl diese Beschreibung auf spezielle Konfigurationen und Architekturen der verschiedenen Ebenen des Systems 10 Bezug nimmt, sollen zahlreiche Modifikationen und Variationen der beschriebenen und veranschaulichten Ausführungsbeispiele möglich sein.Although this description refers to specific configurations and architectures of the different levels of the system 10 It should be understood that numerous modifications and variations of the described and illustrated embodiments are intended to be possible.

Bei dem Ausführungsbeispiel gemäß 1 enthält das System 10 eine zentrale Verarbeitungseinheit (CPU) 100, die über eine Host-Brückensteuereinrichtung 102 angekoppelt ist, die eine mit dem Hauptspeicher 104 gekoppelte Speichersteuereinrichtung 103 und eine mit einem Graphik-Controller 106 gekoppelte Graphikschnittstelle 105 enthalten kann. Die Graphikschnittstelle 105 kann beispielsweise eine Schnittstelle eines beschleunigten Graphik-Ports (AGP) gemäß der Accelerated Graphics Port Interface Specification, Revision 2.0, veröffentlicht im Mai 1998, sein. Die Host-Brückensteuereinrichtung 102 kann außerdem eine Cache-Steuereinrichtung 107 zum Steuern eines sekundären (L2-)Cache-Speichers 109 enthalten. Die Host-Brückensteuereinrichtung 102 enthält eine Busschnittstelle 111, die mit einem Systembus 112 gekoppelt ist, welcher bei einem Ausführungsbeispiel der Peripheriekomponentenverbindungs(PCI)-Bus sein kann, der gemäß der PCI Local Bus Specification, Production Version, Revision 2.1, veröffentlicht im Juni 1995, arbeitet, oder bei alternativen Ausführungsbeispielen andere Arten von Schnittstellenprotokollen.In the embodiment according to 1 contains the system 10 a central processing unit (CPU) 100 that has a host bridge controller 102 is docked, the one with the main memory 104 coupled memory controller 103 and one with a graphic controller 106 coupled graphics interface 105 may contain. The graphic interface 105 For example, an interface of an accelerated graphics port (AGP) according to the Accelerated Graphics Port Interface Specification, Revision 2.0 , published in May 1998. The host bridge controller 102 may also include a cache controller 107 for controlling a secondary (L2) cache memory 109 contain. The host bridge controller 102 contains a bus interface 111 that with a system bus 112 coupled, which in one embodiment may be the Peripheral Component Connection (PCI) bus, which conforms to the PCI Local Bus Specification, Production Version, Revision 2.1 , published June 1995, or, in alternative embodiments, other types of interface protocols.

Beispielsweise kann bei einer anderen Konfiguration die Host-Brückensteuereinrichtung durch ein Speicher-Hub und ein Eingabe/Ausgabe-Hub, die durch eine Verbindung (Link) gekoppelt sind, ersetzt werden. Bei einer derartigen Konfiguration können Speicher und Graphikschnittstellenschaltung in dem Speicher-Hub und Brückensteuereinrichtungen in dem I/O-Hub sein.For example may in another configuration, the host bridge controller by a Memory hub and an input / output hub through a connection (Link) are replaced. With such a configuration can memory and graphics interface circuitry in the memory hub and bridge controllers be in the I / O hub.

Der Systembus 112 kann mit einer Speichereinrichtungssteuereinrichtung 114 gekoppelt sein, der den Zugriff auf eine oder mehrere Speichereinrichtungen, wie beispielsweise ein Festplattenlaufwerk 115 oder ein Compact-Disc-(CD) oder ein Digital-Video-Disc-(DVD)-Laufwerk 116, steuert. Weitere Einrichtungen können ebenfalls mit dem Systembus 112 gekoppelt sein, wie beispielsweise eine Netzwerkschnittstellenkarte und mit (nicht gezeigten) Peripheriegeräten gekoppelte Steckplätze. Das System gemäß den verschiedenen weiteren Integrationsebenen kann Steuereinrichtungen aufweisen, die in verschiedenen Blöcken implementiert sind. Beispielsweise können die Festplattenlaufwerks- und die CD- oder DVD-Laufwerkssteuereinrichtung in der Systembrücke 110 enthalten sein.The system bus 112 can with a storage device controller 114 be coupled to the access to one or more storage devices, such as a hard disk drive 115 or a compact disc (CD) or digital video disc (DVD) drive 116 , controls. Other facilities can also use the system bus 112 coupled, such as a network factory interface card and slots coupled to peripherals (not shown). The system according to the various further levels of integration may include controllers implemented in different blocks. For example, the hard disk drive and the CD or DVD drive controller may be in the system bridge 110 be included.

Das System 10 kann außerdem einen sekundären oder Erweiterungsbus 120 enthalten. Eine Systembrückensteuereinrichtung 110 ist zwischen dem Systembus 112 und dem Erweiterungsbus 120 eingekoppelt. Die Systembrückensteuereinrichtung 110 kann eine Systembusschnittstelle 113 enthalten, die mit dem Systembus 112 gekoppelt ist, und eine Erweiterungsbusschnittstelle 119, die mit dem Erweiterungsbus 120 gekoppelt ist. Die Systembrückensteuereinrichtung kann außerdem eine Schnittstelle 117 eines universellen seriellen Busses (USB) enthalten, die mit einem USB-Port 118 gekoppelt ist, wie er in der Universal Bus Specification, Revision 1.0, veröffentlicht im Januar 1996, beschrieben ist. Der Erweiterungsbus 120 kann mit verschiedenen Peripheriegeräten 122 und einem nichtflüchtigen Speicher 124 gekoppelt sein. Die mit den Bussen gekoppelten Komponenten und Einrichtungen, die Busse selbst und der Systemspeicher können Teil der Systemressourcen sein, die durch Anforderungen aus Arbeitseinheiten oder Ausführungsentitäten in dem System 10 benutzt werden bzw. auf die zugegriffen wird.The system 10 can also have a secondary or expansion bus 120 contain. A system bridge controller 110 is between the system bus 112 and the expansion bus 120 coupled. The system bridge controller 110 can be a system bus interface 113 included with the system bus 112 coupled, and an expansion bus interface 119 that with the expansion bus 120 is coupled. The system bridge controller may also interface 117 a universal serial bus (USB) included with a USB port 118 coupled, as described in the Universal Bus Specification, Revision 1.0 , published in January 1996, is described. The expansion bus 120 Can with different peripherals 122 and a nonvolatile memory 124 be coupled. The components and devices coupled to the busses, the busses themselves, and the system memory may be part of the system resources that are required by work unit or execution entity requirements in the system 10 used or accessed.

Es wird auf die 2A2B Bezug genommen, in denen verschiedene Software- und Hardwareebenen in dem System 10 detaillierter veranschaulicht sind. Beispielsweise kann das System 10 ein Betriebssystem (OS) 220 und Prozesse 222 und 224 enthalten. In der nachfolgenden Beschreibung sei angenommen, daß das Betriebssystem 220 ein thread-basiertes System ist, wie beispielsweise irgendein Windows-Betriebssystem, bei welchem jeder Prozeß einen oder mehrere Threads enthalten kann. Es ist jedoch klar, daß das Anforderungseinplanungsschema gemäß den beschriebenen Ausführungsbeispielen bei Betriebssystemen mit abweichend konfigurierten Ausführungsentitäten oder Arbeitseinheiten implementiert werden kann.It will be on the 2A - 2 B Reference is made to various software and hardware levels in the system 10 are illustrated in more detail. For example, the system can 10 an operating system (OS) 220 and processes 222 and 224 contain. In the following description, it is assumed that the operating system 220 is a thread-based system, such as any Windows operating system, where each process may contain one or more threads. However, it will be understood that the request scheduling scheme according to the described embodiments may be implemented on operating systems having differently configured execution entities or work units.

Wie es in 2A veranschaulicht ist, gehören die Threads 228 und 229 zu dem Prozeß 222 und die Threads 230 und 231 zu dem Prozeß 224. Die Threads können mit dem OS 220 über eine zuvor definierte Schnittstelle kommunizieren, wie beispielsweise eine anwendungsprogrammierbare Schnittstelle (API), die unter dem Betriebssystem definiert sein kann. Alternativ kann eine "fremde" API verwendet werden. Das OS 220 enthält einen Einplaner (Scheduler) 232, der Anforderungen aus den aktiven Threads über die vordefinierten Schnittstellen einplant. Bei einem Ausführungsbeispiel kann der Einplaner 232 einem Gerätetreiber 240 zugeordnet sein, der in der Lage ist, auf Speicher, I/O oder andere definierte Orte in dem System 10 zuzugreifen, um mit Hardwarekomponenten zu kommunizieren, um Einplanungsaktivitäten in Übereinstimmung mit Ausführungsbeispielen der Erfindung durchzuführen. Die Elemente 232 und 240 können gemeinsam ebenfalls als Einplaner bezeichnet werden. Bei weiteren Ausführungsbeispielen kann der Einplaner in mehrere Module oder Ebenen aufgeteilt sein.As it is in 2A Illustrated are the threads 228 and 229 to the process 222 and the threads 230 and 231 to the process 224 , The threads can work with the OS 220 communicate via a previously defined interface, such as an application programmable interface (API), which may be defined under the operating system. Alternatively, a "foreign" API may be used. The OS 220 contains a scheduler 232 that schedules requests from the active threads through the predefined interfaces. In one embodiment, the scheduler 232 a device driver 240 which is capable of memory, I / O or other defined locations in the system 10 to communicate with hardware components to perform scheduling activities in accordance with embodiments of the invention. The Elements 232 and 240 can also be called scheduler together. In further embodiments, the scheduler may be divided into several modules or levels.

Bei Empfang einer Anforderung aus einem Thread plant der Einplaner 232 die Anforderung auf der Grundlage einer rückkoppelnden Kommunikation aus den Hardwarekomponenten, der Anzahl der ausstehenden Anforderungen und der Verzögerungs-(Latenz-) und Bandbreitenerfordernisse des anfordernden Threads ein.Upon receiving a request from a thread, the scheduler schedules 232 the request based on feedback communication from the hardware components, the number of pending requests, and the delay (latency) and bandwidth requirements of the requesting thread.

Gemäß einem Ausführungsbeispiel speichert der Einplaner 232 Anforderungen in eine Anforderungswarteschlange 204, die eine vorgegebene Anzahl von Einträgen aufweist. Jedem Eintrag in der Anforderungswarteschlange 204 kann ein Status-Flag in einem Statusfeld 206 zugeordnet sein, das anzeigt, ob eine bestimmte Anforderung verarbeitet worden ist.According to one embodiment, the scheduler stores 232 Requirements in a request queue 204 which has a predetermined number of entries. Each entry in the request queue 204 can be a status flag in a status field 206 which indicates whether a particular request has been processed.

Ein Satz von Tabellen oder Tabellensegmenten 202, der in dem Systemspeicher 104 (oder in irgendeinem anderen geeigneten Speicherort) gespeichert ist, auf den durch den Einplaner 232 über den Gerätetreiber 240 zugegriffen werden kann, identifiziert Kanalzuweisungen für zugehörige aktive Threads, die jeweils einen Thread-Identifizierer(-ID) aufweisen. Jeder Kanal ist so definiert, daß er eine vorgegebene Anzahl von Zyklen eines Basistaktes, wie beispielsweise eines von einem Taktgenerator 240 erzeugten Taktes, hat. Die Anzahl der Basistakte pro Kanal wird auf der Grundlage einer gewünschten Granularität ausgewählt. Jede der Tabellen oder Tabellensegmente 202 entspricht einer Ressource in dem System 10, einschließlich beispielsweise des Systemspeichers 104, der Graphikkarte 106, des Systembusses 112, des Erweiterungsbusses 120, des USB-Ports 118 usw.A set of tables or table segments 202 which is in the system memory 104 (or in any other suitable location) stored by the scheduler 232 via the device driver 240 identifies channel assignments for associated active threads, each having a thread identifier (ID). Each channel is defined to be a predetermined number of cycles of a base clock, such as one of a clock generator 240 generated clock, has. The number of base clocks per channel is selected based on a desired granularity. Each of the tables or table segments 202 corresponds to a resource in the system 10 including, for example, the system memory 104 , the graphics card 106 , the system bus 112 , the expansion bus 120 , the USB port 118 etc.

Gemäß einem Ausführungsbeispiel speichern die Brückensteuereinrichtungen 102, 110 ebenfalls den verschiedenen Systemressourcen entsprechende Tabellen oder Tabellensegmente, die die Kanalzuweisungen für spezielle Threads durch Thread-IDs verfolgen. Die Tabellen oder Tabellensegmente in den Brückensteuereinrichtungen werden auf der Grundlage der entsprechenden Tabellen 202, die von dem Betriebssystem 220 aufrechterhalten werden, geladen. Bei dem veranschaulichten Ausführungsbeispiel können die Tabellen oder Tabellensegmente 302A, 302B und 302C durch die Host-Brückensteuereinrichtung 102 gespeichert werden, um die Kanalzuweisungen für den Systemspeicher 104, dem Systembus 112 und die Graphikkarte 106 zu verfolgen. Die Systembrückensteuereinrichtung 110 kann Tabellensegmente 302D und 302E speichern, um Kanalzuweisungen für den USB-Port 118 und den Erweiterungsbus 120 zu verfolgen. Weitere Tabellen können ebenfalls für weitere Systemressourcen gehalten werden.According to one embodiment, the bridge controllers store 102 . 110 also tables or table segments corresponding to the various system resources that track the channel assignments for thread specific IDs. The tables or table segments in the bridge controllers are based on the corresponding tables 202 that by the operating system 220 maintained, loaded. In the illustrated embodiment, the tables or table segments 302A . 302B and 302C through the Host bridge controller 102 stored to the system memory channel allocations 104 , the system bus 112 and the graphics card 106 to pursue. The system bridge controller 110 can be table segments 302D and 302E Save to channel assignments for the USB port 118 and the expansion bus 120 to pursue. Additional tables can also be held for additional system resources.

Obwohl veranschaulicht ist, daß sie in den Brückensteuereinrichtungen 102, 110 gespeichert sind, können die Tabellen 302A302E an anderen geeigneten Orten, wie beispielsweise in dem Systemspeicher 104 oder externen Speichereinrichtungen gespeichert werden. Alternativ können die verschiedenen Systemressourcen durch Steuereinrichtungen kontrolliert werden, die über das System verteilt sind, statt in den Brückensteuereinrichtungen 102, 110 integriert zu sein, wie es veranschaulicht ist.Although it is illustrated that they are in the bridge controllers 102 . 110 saved, the tables can 302A - 302E at other suitable locations, such as system memory 104 or external storage devices. Alternatively, the various system resources may be controlled by controllers distributed throughout the system, rather than in the bridge controllers 102 . 110 to be integrated, as it is illustrated.

Die Tabellen 302A302E können periodisch durch das Betriebssystem 220 aktualisiert werden, wenn sich die Kanalzuweisungen ändern. In jeder der Tabellen 302A302E können die Threads der gleichen oder einer abweichenden Anzahl von Kanälen zugewiesen sein. Beispielsweise kann ein einem ersten Thread-ID zugeordneter Thread einer ersten Anzahl von Kanälen und ein einem zweiten Thread-ID zugeordneter Thread einer abweichenden Anzahl von Kanälen zugewiesen sein.The charts 302A - 302E can be periodically through the operating system 220 updated as the channel assignments change. In each of the tables 302A - 302E For example, the threads can be assigned to the same or a different number of channels. For example, a thread associated with a first thread ID may be assigned a first number of channels and a thread associated with a second thread ID may be assigned a different number of channels.

Die den Threads in den Tabellen 302A302E zugewiesenen Kanäle definieren Thread-Anforderungsausführungsfenster oder -Slots innerhalb eines Gesamteinplanungszyklus 400, wie er in 3 veranschaulicht ist. Der Einplanungszyklus 400 enthält mehrere Thread-Anforderungsausführungsfenster oder -Slots 4020 , 4021 , ..., 402N-1 und 402N , die jeweils eine zugewiesene Anzahl von Kanälen umfassen. Jedes Anforderungsausführungsfenster 402 ist der Ausführung von Anforderungen aus einem Thread zugewiesen.The the threads in the tables 302A - 302E assigned channels define thread request execution windows or slots within a total scheduling cycle 400 as he is in 3 is illustrated. The scheduling cycle 400 Contains multiple thread request execution windows or slots 402 0 . 402 1 , ..., 402N -1 and 402 N each comprising an assigned number of channels. Each request execution window 402 is assigned to execute requests from a thread.

Bei einem Ausführungsbeispiel ist das erste Fenster 402 dem Einplaner 232 zum Aufrechterhalten der Kohärenz zwischen den OS-Tabellen 202 und entsprechenden Tabellen 302 in den Brückensteuereinrichtungen 102, 110 zugewiesen. Die verbleibenden Fenster 4021 bis 402N können den Anforderungen aus verschiedenen weiteren Threads zugewiesen sein. Bei dem veranschaulichten Ausführungsbeispiel werden die Tabellen 302A302E jeweils einmal in jedem Einplanungszyklus 402 in dem Kohärenzfenster 4020 von dem Einplanergerätetreiber 240 aktualisiert. Während der Zeitdauer des Kohärenzfensters 402 oder alternativ in einem anderen Fenster 402i kann der Einplanergerätetreiber 240 außerdem Inhalte der Statusregister 304A304E in den Brückensteuereinrichtungen 102, 110 lesen, um festzustellen, welche Anforderungen abgeschlossen sind. Dem Einplaner 232 wird somit eine Rückkopplung darüber zur Verfügung gestellt, welche Anforderungen abgeschlossen sind und welche noch anhängig sind, um ihm zu ermöglichen zu verfolgen, welche Systemressourcen verfügbar sind. Auf diese Weise kann dann, wenn eine Anforderung aus einem Thread von dem Einplaner 232 empfangen wird, der Einplaner 232 bestimmen, ob ausreichende Ressourcen verfügbar sind, um die Anforderung zu verarbeiten.In one embodiment, the first window is 402 the scheduler 232 to maintain coherence between the OS tables 202 and corresponding tables 302 in the bridge control devices 102 . 110 assigned. The remaining windows 402 1 to 402 N can be assigned to the requests from various other threads. In the illustrated embodiment, the tables 302A - 302E once in each planning cycle 402 in the coherence window 402 0 from the scheduler device driver 240 updated. During the duration of the coherence window 402 or alternatively in another window 402 i can be the scheduler device driver 240 also contents of the status registers 304A - 304E in the bridge control devices 102 . 110 read to determine which requirements are complete. The scheduler 232 Thus, feedback is provided on which requests are completed and which are still pending to enable it to keep track of which system resources are available. In this way, when a request from a thread can be made by the scheduler 232 is received, the scheduler 232 determine if sufficient resources are available to process the request.

Es wird wieder auf die 2A2B Bezug genommen; gemäß einem Ausführungsbeispiel enthält jede der Brückensteuereinrichtungen 102, 110 verschiedene Warteschlangen zum Speichern von Anforderungen für verschiedene Ressourcen im System 10. Beispielsweise enthält die Host-Brückensteuereinrichtung 102 eine Speicherwarteschlange 310 in der Speicher steuereinrichtung 103. von der Speichersteuereinrichtung 103 aus verschiedenen Quellen in dem System 10 empfangene Anforderungen, einschließlich solcher von der CPU 100 über eine CPU-Busschnittstelle 312 und von Einrichtungen an dem Systembus 112 über die Systembusschnittstelle 111 empfangene, werden in der Speicherwarteschlange 310 zur Ausführung gespeichert. Zusätzlich zu den Speicheradreß- und -dateninformationen ist die Speicherwarteschlange 310 darüber hinaus so ausgebildet, daß sie den zugeordneten Thread-ID einer Speicheranforderung speichert.It will be back to the 2A - 2 B Reference is made; In one embodiment, each of the bridge controllers includes 102 . 110 different queues for storing requests for different resources in the system 10 , For example, the host bridge controller includes 102 a storage queue 310 in the memory control device 103 , from the memory controller 103 from different sources in the system 10 received requests, including those from the CPU 100 via a CPU bus interface 312 and facilities on the system bus 112 via the system bus interface 111 are received in the memory queue 310 saved for execution. In addition to the memory address and data information, the memory queue 310 in addition, configured to store the associated thread ID of a memory request.

Bei einigen Ausführungsbeispielen der Erfindung ruft die CPU 100 einen Befehl zusammen mit den zugehörigen Thread-ID ab. Der Thread-ID wird weitergeleitet und in den Warteschlangen der Brückensteuereinrichtungen 102, 110 gespeichert.In some embodiments of the invention, the CPU calls 100 a command along with the associated thread ID. The thread ID is forwarded and in the queues of the bridge controllers 102 . 110 saved.

Eine Einplanersteuereinrichtung 314 in der Host-Brückensteuereinrichtung 102 empfängt Ausgabewerte aus einem Zähler 306 und den Tabellen oder Tabellensegmenten 302A302C. Der Zähler 306, welcher von dem Grundtakt aus dem Taktgenerator 250 getaktet werden kann, kann so ausgebildet sein, daß er die Kanäle in dem Einplanungszyklus 400 durchzählt. Ausgehend von dem wert des Zählers 306 kann die Einplanungssteuereinrichtung 314 das aktuelle Thread-Anforderungsausführungsfenster 400i (i = 0 bis N) in dem Einplanungszyklus 400 feststellen. In Abhängigkeit davon, welches Fenster 400i aktiv ist, und in Abhängigkeit von den Kanalzuweisungen in der Tabelle 302A kann eine dem zugehörigen Thread-ID in der Speicherwarteschlange 310 zugeordnete Anforderung für die Verarbeitung durch die Speichersteuereinrichtung 103 ausgewählt werden.A scheduler controller 314 in the host bridge controller 102 receives output values from a counter 306 and the tables or table segments 302A - 302C , The counter 306 which is from the master clock from the clock generator 250 can be clocked so that it channels in the scheduling cycle 400 by one. Based on the value of the meter 306 can the scheduling controller 314 the current thread request execution window 400 i (i = 0 to N) in the scheduling cycle 400 determine. Depending on which window 400 i is active, and depending on the channel assignments in the table 302A can have a matching thread ID in the store queue 310 associated request for processing by the memory controller 103 to be selected.

Die ausgewählte Anforderung wird innerhalb des aktuellen Fensters 402i ausgeführt. Bei Abschluß der Anforderung kann die Host-Brückensteuereinrichtung 102 einen Anforderung-abgeschlossen-Status zurückgeben, indem sie geeignete Bits in dem Statusregister 304A programmiert. In dem nächsten Kohärenzfenster 4020 liest die CPU 100 unter der Steuerung des Einplanergerätetreibers 140 das Statusregister 304A (sowie die anderen Statusregister 304B304E), um zu bestimmen, welche Anforderungen abgeschlossen sind. Der Einplanergerätetreiber 240 aktualisiert dann Flags 206 der abgeschlossenen Anforderungen in der Anforderungswarteschlange 204.The selected request will be within the current window 402 i executed. Upon completion of the request, the host bridge controller may be enabled direction 102 return a request completed status by providing appropriate bits in the status register 304A programmed. In the next coherence window 402 0 reads the CPU 100 under the control of the scheduler device driver 140 the status register 304A (as well as the other status registers 304B - 304E ) to determine which requirements have been completed. The scheduler device driver 240 then updates flags 206 the completed requests in the request queue 204 ,

Zusätzlich zu der Speicherwarteschlange 310 kann die Host-Brückensteuereinrichtung 102 bei einem Ausführungsbeispiel außerdem eine Systembuswarteschlange 316 in der Systembusschnittstelle 111 und eine Graphikkartenanforderungswarteschlange 318 in der Graphikschnittstelle 105 enthalten. Anforderungen an den Systembus 112 werden in die Systembuswarteschlange 316 eingegeben, während Anforderungen der Graphikkarte 106 in die Graphikkartenwarteschlange 318 eingegeben werden. Die Anforderungen sind den Thread-IDs zugeordnet, so daß die Einplanersteuereinrichtung 314 die richtige Anforderung für eine Verarbeitung durch die Busschnittstelle 111 oder die Graphikschnittstelle 105 auf der Grundlage des aktuellen Thread-Anforderungsausführungsfensters 402i und der in den Tabellen 302B und 302C gespeicherten Kanalzuweisungen auswählen kann. Der Abschluß von Anforderungen in den Warteschlangen 316 und 318 wird durch die Statusregister 304B bzw. 304C angezeigt.In addition to the storage queue 310 may be the host bridge controller 102 in one embodiment, a system bus queue 316 in the system bus interface 111 and a graphics card request queue 318 in the graphics interface 105 contain. Requirements for the system bus 112 will be in the system bus queue 316 entered while requirements of the graphics card 106 into the graphics card queue 318 be entered. The requests are associated with the thread IDs so that the scheduler controller 314 the right request for processing through the bus interface 111 or the graphics interface 105 based on the current thread request execution window 402 i and in the tables 302B and 302C can select saved channel assignments. The completion of requests in the queues 316 and 318 is through the status register 304B respectively. 304C displayed.

In ähnlicher Weise enthält die Systembrückensteuereinrichtung 110 eine Erweiterungsbuswarteschlange 320 zum Speichern von an den Erweiterungsbus 120 gerichteten Anforderungen und eine USB-Buswarteschlange 322 zum Speichern von an den USB-Port 118 gerichteten Anforderungen. Ein Zähler 308, welcher durch den Grundtakt aus dem Taktgenerator 250 getaktet werden kann, zählt die Kanäle des Einplanungszyklus 400 durch. Auf der Grundlage des aktuellen Thread-Anforderungsausführungsfensters 402i , wie es vom Zähler 308 angezeigt wird, und der in den Tabellen 302D und 302E gespeicherten Kanalzuweisungen bestimmt eine Einplansteuereinrichtung 324 in der Systembrückensteuereinrichtung 110, welche den Anforderungen in den Warteschlangen 320 und 322 verarbeitet werden sollen. Der Abschluß der Anforderungen wird durch die Statusregister 304D und 304E angezeigt.Similarly, the system bridge controller includes 110 an expansion bus queue 320 to save to the expansion bus 120 directed requests and a USB bus queue 322 to save to the USB port 118 directed requirements. A counter 308 , which by the basic clock from the clock generator 250 can be clocked, counts the channels of the scheduling cycle 400 by. Based on the current thread request execution window 402 i as it is from the counter 308 is displayed, and that in the tables 302D and 302E stored channel assignments determines a scheduling controller 324 in the system bridge controller 110 which meets the requirements in the queues 320 and 322 to be processed. The completion of the requests is through the status registers 304D and 304E displayed.

Es wird auf 4 Bezug genommen; der Einplanergerätetreiber 240, der in Kooperation mit dem Einplaner 232 arbeitet, wartet auf den Empfang bestimmter Ereignisse (bei 502).It will open 4 Reference is made; the scheduler device driver 240 in cooperation with the scheduler 232 works, waiting for the receipt of certain events (at 502 ).

Wenn eine Anforderung aus einem Thread empfangen wird, welche in Form eines anwendungs-programmierbare-Schnittstelle(API)-Aufrufs vorliegen kann, greift (bei 504) der Einplanergerätetreiber 240 auf die Anforderungswarteschlange 204 und die Kanalzuweisungstabellen 202 zu, so daß der Einplaner 232 (bei 506) bestimmen kann, ob Ressourcen verfügbar sind, um die Thread-Anforderung verarbeiten zu können.When a request is received from a thread, which may be in the form of an application programmable interface (API) call, (in 504 ) the scheduler device driver 240 to the request queue 204 and the channel allocation tables 202 too, so that the scheduler 232 (at 506 ) can determine if resources are available to handle the thread request.

Wenn der Einplaner 232 feststellt, daß keine Ressourcen verfügbar sind, um die Anforderung ausreichend zu verarbeiten, so wird der anfordernde Thread benachrichtigt (bei 508). In Erwiderung der Benachrichtigung kann der Thread für eine Zeitdauer warten, bevor er die Anforderung erneut ausgibt, oder der Thread kann auf eine andere elegante Weise die Situation behandeln. Wenn die angeforderten Ressourcen verfügbar werden, dann wird die Anforderung aus dem Thread (bei 510) der Anforderungswarteschlange 204 hinzugefügt.If the scheduler 232 determines that there are no resources available to sufficiently handle the request, the requesting thread is notified (at 508 ). In response to the notification, the thread can wait for a period of time before reissuing the request, or the thread can handle the situation in another elegant way. When the requested resources become available, then the request from the thread (at 510 ) of the request queue 204 added.

Wenn eine bestimmte Anforderung in der Anforderungswarteschlange 204 verarbeitet und abgeschlossen ist, kann ein Abgeschlossen-Flag in dem Flag-Feld 206 der Warteschlange 204 gesetzt werden, wie es oben erörtert wurde.If a specific request in the request queue 204 can be processed and completed, a completed flag in the flag field 206 the queue 204 be set as discussed above.

Der Einplanergerätetreiber 240 selbst ist ein Thread, der in der Lage ist, Anforderungen auszugeben, wie beispielsweise solche zum Zugreifen auf Speicherorte, die der Anforderungswarteschlange und den Thread-Kanalzuweisungstabellen entsprechen. Anforderungen aus dem Einplanergerätetreiber-Thread, die in die Anforderungswarteschlange 204 (bei 520) eingegeben worden sind, können in dem ersten Fenster 4020 des Einplanungszyklus 400 verarbeitet werden. Alternativ könnte ein anderes Fenster 402i dem Einplanergerätetreiber 240 zugewiesen sein.The scheduler device driver 240 itself is a thread capable of issuing requests, such as those for accessing locations corresponding to the request queue and the thread channel assignment tables. Requests from the scheduler device driver thread to the request queue 204 (at 520 ) can be entered in the first window 402 0 of the scheduling cycle 400 are processed. Alternatively, another window could be 402 i the scheduler device driver 240 be assigned.

Während des Kohärenzfensters 4020 aktualisiert die CPU 100 unter der Steuerung des Einplanergerätetreibers 240 (bei 522) die Brückensteuereinrichtungstabellen 302A302E, wie es erforderlich ist, um die Kanalzuweisungen zu ändern. Die CPU 100 kann darüber hinaus (bei 524) auf die Statusregister 304A304E zugreifen, um zu bestimmen, welche Anforderungen abgeschlossen sind. Alternativ können die Vorgänge des Ta bellenaktualisierens und des Statusregisterlesens getrennt werden. Die CPU 100 kann dann unter Steuerung des Gerätetreibers 240 (bei 526) die Anforderungswarteschlange 204 aktualisieren.During the coherence window 402 0 updates the CPU 100 under the control of the scheduler device driver 240 (at 522 ) the bridge controller tables 302A - 302E as required to change the channel assignments. The CPU 100 In addition, (at 524 ) on the status registers 304A - 304E access to determine which requests are complete. Alternatively, the task of updating the clock and the status register reading may be disconnected. The CPU 100 can then be under control of the device driver 240 (at 526 ) the request queue 204 To update.

Der Einplaner 232 kann feststellen, welche Systemressourcen durch eine Anforderung benötigt werden, indem er die Anforderung selbst und die Anforderungsparameter, wie beispielsweise die Parameter in einem API-Aufruf, betrachtet. Ein Parameter könnte beispielsweise einen Zugriff auf einen Ort im Speicheradreßraum in dem Systemspeicher 104 spezifizieren. Ein weiterer Parameter könnte einen Ort im I/O-Adreßraum spezifizieren, welcher in einem der Busse 112, 120, in der Graphikkarte 106 auf dem USB-Bus, der mit dem USB-Port 118 gekoppelt ist, oder einem anderen Ort in dem System 10 lokalisiert sein. Auf der Grundlage der angeforderten Ressourcen, der bereits in der Warteschlange 204 befindlichen Anforderungen und den in den Tabellen oder Tabellensegmenten 202 spezifizierten Kanalzuweisungen, wie sie durch den Einplanergerätetreiber 240 gelesen worden sind, kann der Einplanergerätetreiber 232 bestimmen, ob eine Anforderung auf irgendeine vernünftige Weise verarbeitet werden kann. Dies kann in Übereinstimmung mit Kriterien definiert werden, die zuvor in das System 10 programmiert und durch eine Startroutine (z.B. eine Basis-Eingabe/Ausgabe-System- oder BIOS-Routine) geladen wurden. Der Einplaner 232 kennt die Verzögerungs-(Latenz-) und Bandbreitenerfordernisse der verschiedenen Threads in dem System. Die Latenz- und Bandbreitenanforderungen können von dem Einplaner 232 verwendet werden, um zu bestimmen, ob ausreichende Ressourcen verfügbar sind, um eine Thread-Anforderung zu befriedigen.The scheduler 232 can determine what system resources are needed by a request by considering the request itself and the request parameters, such as the parameters in an API call. For example, one parameter could be accessing a location in memory address space in the system memory 104 specify. Another parameter could be one Specify location in the I / O address space, which is in one of the buses 112 . 120 , in the graphics card 106 on the USB bus connected to the USB port 118 coupled or another location in the system 10 be localized. Based on the requested resources already queued 204 requirements and in the tables or table segments 202 specified channel assignments as determined by the scheduler device driver 240 The scheduler device driver may have been read 232 determine if a request can be processed in any reasonable way. This can be defined in accordance with criteria previously in the system 10 programmed and loaded by a startup routine (eg, a basic input / output system or BIOS routine). The scheduler 232 knows the delay (latency) and bandwidth requirements of the various threads in the system. The latency and bandwidth requirements may be dictated by the scheduler 232 can be used to determine if sufficient resources are available to satisfy a thread request.

Beispielsweise könnte ein Thread eine Anforderung zum Übertragen eines Einzelbilds von Videodaten aus dem Videospeicher in der Graphikkarte 106 an den Systemspeicher 104 ausgeben. Bei einer gegebenen Einzelbildgröße (z.B. 420 × 480 Pixel) und einer für jedes Pixel vorgegebenen Bitanzahl können die Bandbreitenerfordernisse der Videoübertragung auf der Grundlage einer spezifizierten Zeitperiode, in welcher die Übertragung auftreten soll, bestimmt werden. Zusätzlich kann die Verzögerung der Übertragungsanforderung ebenfalls bekannt sein. Auf der Grundlage der Bandbreiten- und Verzögerungsinformationen und auf der Grundlage der ausstehenden Anforderungen nach Ressourcen kann der Einplaner bestimmen, ob die Videoübertragungsanforderung durch verfügbare Ressourcen verarbeitet werden kann. Wenn nicht, wird der Thread von dem Einplaner informiert, und der Thread kann auf verschiedene weise reagieren, beispielsweise warten, bevor eine weitere Anforderung ausgegeben wird, oder eine Anforderung in verschiedene Teile unterteilen.For example, a thread might request to transfer a frame of video data from the video memory in the graphics card 106 to the system memory 104 output. For a given frame size (eg, 420 x 480 pixels) and a number of bits given for each pixel, the bandwidth requirements of the video transmission may be determined based on a specified time period in which the transmission is to occur. In addition, the delay of the transfer request may also be known. Based on the bandwidth and delay information and based on the pending resource requests, the scheduler may determine if the video transmission request can be processed by available resources. If not, the thread is informed by the scheduler and the thread can respond in a variety of ways, such as waiting before issuing another request or dividing a request into several parts.

Es wird auf 5 Bezug genommen; die Systeminitialisierung wird von einer System-BIOS-Routine in Übereinstimmung mit einem Ausführungsbeispiel durchgeführt. Nachdem ein Systemrücksetzen die System-Hardware in einen Anfangszustand gebracht hat, startet die CPU 100 mit der Ausführung von Befehlen in der Einschaltselbsttest(POST)-Prozedur des BIOS, welche für die Initialisierung von Komponenten in dem System 10 in bekannte Zustände und zum Aufbauen der Systemkonfigurationsinformationen für eine Verwendung durch das OS 220 verantwortlich ist. Nachdem irgendwelche Initialisierungsaufgaben in dem System 10 (bei 602) durchgeführt sind, richtet die BIOS-Routine als nächstes (bei 604) den Systemspeicher 104 oder einen anderen geeigneten Speicherort zum Speichern der Kanalzuweisungstabellen oder Tabellensegmente 202 ein. Die BIOS-Routine kann die Anzahl der Basistakte für jeden Kanal (z.B. einen oder mehrere Takte pro Kanal) und die Gesamtbreite des Einplanungszyklus 400 spezifizieren. Es können spezielle Speicheradressen reserviert werden, um die Tabellen oder Tabellensegmente 202 zu speichern. Zusätzlich können Kriterien spezifiziert werden für eine Verwendung durch den Einplaner 232 beim Bestimmen, ob eine Thread-Anforderung akzeptiert oder zurückgewiesen werden soll.It will open 5 Reference is made; the system initialization is performed by a system BIOS routine in accordance with one embodiment. After a system reset has brought the system hardware to an initial state, the CPU starts 100 with the execution of commands in the power-on self-test (POST) procedure of the BIOS used for initializing components in the system 10 in known states and to build the system configuration information for use by the OS 220 responsible for. Having any initialization tasks in the system 10 (at 602 ), the BIOS routine sets up next (at 604 ) the system memory 104 or any other suitable storage location for storing the channel allocation tables or table segments 202 one. The BIOS routine can set the number of basic clocks for each channel (eg, one or more clocks per channel) and the total width of the scheduling cycle 400 specify. Special memory addresses can be reserved to the tables or table segments 202 save. In addition, criteria may be specified for use by the scheduler 232 in determining whether to accept or reject a thread request.

Als nächstes können Standardkanalzuweisungen (bei 606) in die Tabellen geladen werden. Beispielsweise könnten bestimmte dem OS zugewiesene Threads (wie beispielsweise der Einplaner oder andere Systemmanagementebenen) den Fenstern in dem Zyklus 400 zugewiesen werden. Zusätzlich kann das BIOS Standardfenster einrichten, die eine vorgegebene Anzahl von Kanälen aufweisen, um Thread-Anforderungen zu behandeln, die nicht speziellen Fenstern zugewiesen worden sind. Das BIOS kann den Konfigurationsraum des Systems abfragen, um den Typ des verfügbaren Prozessors zu bestimmen, sofern der Prozessor ein Multi-Processing-System ist, und weitere Informationen. Aus den Informationen kann das BIOS die Fähigkeiten des Systems bestimmen. Auf der Grundlage der bestimmten Fähigkeiten kann das BIOS die Anzahl der Kanäle in den Standardfenstern entsprechend zuweisen. Als nächstes werden die Systemkomponenten durch die BIOS-Routine (bei 608) initialisiert und konfiguriert. Das OS 220 wird dann gebootet (bei 610).Next, standard channel assignments (at 606 ) are loaded into the tables. For example, certain threads assigned to the OS (such as the scheduler or other system management levels) could be windows in the cycle 400 be assigned to. In addition, the BIOS may set up default windows that have a predetermined number of channels to handle thread requests that have not been assigned to specific windows. The BIOS can query the system's configuration space to determine the type of processor available, if the processor is a multi-processing system, and more information. From the information, the BIOS can determine the capabilities of the system. Based on the specific capabilities, the BIOS can assign the number of channels in the standard windows accordingly. Next, the system components through the BIOS routine (at 608 ) initialized and configured. The OS 220 is then booted (at 610 ).

Es wird auf 6 Bezug genommen; nachdem das OS 220 gebootet ist, identifiziert es zunächst (bei 650) die Anzahl der aktiven Threads in dem System 10. Das OS 220 fragt (bei 652) jeden Thread nach seinen Bandbreiten- und Verzögerungserfordernissen für Ressourcen in dem System 10 ab. Einige Threads wissen, welches ihre Verzögerungs- und Bandbreitenerfordernisse für jede Systemressource sind. Beispielsweise kann ein einem Multimedia-Prozeß zugeordneter Thread "Echtzeit"-Erfordernisse aufweisen, die möglicherweise eine relativ geringe Verzögerung für Datenübertragungen tolerieren und die einen hohen Datenübertragungsdurchsatz erfordern. Andere Threads könnten in der Lage sein, höhere Verzögerungen und geringere Datenübertragungsbandbreiten zu tolerieren. Auf der Grundlage eines Vergleichs der verschiedenen Verzögerungs- und Bandbreitenerfordernisse aus den aktiven Threads kann die Anzahl der Kanäle zum Zuweisen der verschiedenen Anforderungsfenster 402i , die den verschiedenen Threads entsprechen, von dem OS (bei 654) so eingestellt werden, daß es die geringere Verzögerungen und höhere Bandbreiten erfordernden Threads favorisiert. Im Ergebnis könnten solchen Thread-Arten eine größere Anzahl von Kanälen und möglicherweise mehrere Fenster 402i zugewiesen werden. Die mehreren zugewiesenen Fenster 402i können aufeinanderfolgend oder in dem Einplanungszyklus 400 verteilt sein. Sofern ein Thread keine Verzögerungs- und Bandbreiteninformationen für irgendeine Systemressource zur Verfügung stellt, so kann dieser Thread den Standardfenstern 402i in dem Einplanungszyklus 400 der Tabellen oder Tabellensegmente 202 zugewiesen werden.It will open 6 Reference is made; after the OS 220 booted, it identifies it first (at 650 ) the number of active threads in the system 10 , The OS 220 asks (at 652 ) each thread for its bandwidth and latency requirements for resources in the system 10 from. Some threads know what their delay and bandwidth requirements are for each system resource. For example, a thread associated with a multimedia process may have "real-time" requirements that may tolerate a relatively small delay for data transfers and require high data transfer throughput. Other threads might be able to tolerate higher delays and lower data transmission bandwidths. Based on a comparison of the various delay and bandwidth requirements from the active threads, the number of channels for assigning the various request windows 402 i that correspond to the various threads from the OS (at 654 ) are set to require the lower delays and higher bandwidths favored the threads. As a result, such thread types could have a larger number of channels and possibly multiple windows 402 i be assigned to. The multiple assigned windows 402 i can be consecutive or in the scheduling cycle 400 be distributed. Unless a thread provides delay and bandwidth information for any system resource, this thread may default windows 402 i in the scheduling cycle 400 the tables or table segments 202 be assigned to.

Auf der Grundlage der berechneten Anzahl der Kanäle können die Tabellen oder Tabellensegmente 202 (bei 656) mit den Kanalzuweisungen gemäß den Thread-IDs geladen werden.Based on the calculated number of channels, the tables or table segments 202 (at 656 ) are loaded with the channel assignments according to the thread IDs.

Somit plant in Übereinstimmung mit einigen Ausführungsbeispielen ein Einplanschema Anforderungen aus Thread in dem System ein, indem es auf der Grundlage der Verfügbarkeit von Ressourcen und von Kanalzuweisungen bestimmt, ob Datenflußerfordernisse befriedigt werden können. Die Verfügbarkeit der Ressourcen wird durch Hardware-Komponenten einem Einplaner in dem System angezeigt. Darüber hinaus ist der Einplaner auf der Grundlage des Typs der Anforderung und von Anforderungsparametern in der Lage zu bestimmen, welche Ressourcen von der speziellen Anforderung benötigt werden.Consequently plans in agreement with some embodiments a scheduling schema requirements from thread in the system by it on the basis of availability of resources and channel assignments determines whether data flow requirements can be satisfied. The availability The resources are provided by hardware components to a scheduler displayed to the system. About that In addition, the scheduler is based on the type of request and by request parameters able to determine which Resources are required by the specific requirement.

Weitere Ausführungsbeispiele liegen innerhalb des Umfangs der nachfolgenden Patentansprüche. Beispielsweise können bei anderen Betriebssystemen die Basisarbeitseinheiten oder Ausführungsentitäten in dem System nicht Threads sondern Prozesse oder andere definierte Einheiten sein. Darüber hinaus können die Hardwarekomponenten in dem System abweichend konfiguriert sein. Die von den veranschaulichten Modulen und Ebenen der Software und Firmware ausgeführten Aktivitäten können variieren.Further embodiments are within the scope of the following claims. For example can In other operating systems, the basic work items or execution entities in the System not threads but processes or other defined units be. About that can out the hardware components in the system are configured differently. Those of the illustrated modules and levels of software and Firmware running activities can vary.

Claims (9)

Verfahren zum zeitlichen Einplanen von Ressourcen-Anforderungen aus aktiven Ausführungsentitäten, die Tasks, Prozesse und/oder Threads umfassen, wobei die Ressourcen-Anforderungen jeweils eine von mehreren Ressourcen eines Computersystems anfordern, wobei das Computersystem wenigstens einen mit einer CPU gekoppelten Controller (102, 110) aufweist, wobei jede Ressource (104, 106, 112, 118, 120) mit einem zugehörigen Controller (102, 110) gekoppelt ist, wobei: a) jeder aktiven Ausführungsentität für jede der Ressourcen jeweils wenigstens ein Zeitfenster (402) innerhalb eines Einplanzyklus (400) zugewiesen wird, wobei die Zeitfenster (402) von einem auf der CPU laufenden Betriebssystem (220) zugewiesen werden, wobei die Zeitfenster (402) jeweils aus einer Anzahl von Zeit-Slots bestehen, wobei die Zuweisung der Zeitfenster in einer Mehrzahl von Tabellen (202) gespeichert wird, wobei jeweils eine Tabelle (202A202E) einer Ressource zugeordnet ist, wobei die Tabellen (202A202E) Zeit-Slot-Zuweisungen speichern, in denen jedem Zeit-Slot ein Identifizierer einer Ausführungsentität zugeordnet ist; b) wobei ein Scheduler (232) des Betriebssystems (220) jeweils eine Ressourcen-Anforderung empfängt, dann aufgrund der Zeit-Slot-Zuweisungen für die jeweilige Ausführungsentität und die jeweilige Ressource und aufgrund der angeforderten Ressource sowie aufgrund von vorangegangenen anhängigen Ressourcen-Anforderungen bestimmt, ob die Ressourcen-Anforderung verarbeitet werden kann, und dann, wenn dies der Fall ist, die Ressourcen-Anforderung in einer Anforderungswarteschlange (204) speichert; c) wobei die Zeit-Slot-Zuweisungen enthaltenden Tabellen sowie die Ressourcen-Anforderungen für jede Ressource periodisch von dem Betriebssystem in Tabellen (302A–E) bzw. Anforderungs-Warteschlangen (310, 316, 318, 320, 322) in dem der Ressource zugeordneten Controller (102, 110) übertragen werden; und d) die in den Anforderungs-Warteschlangen (310, 316, 318, 320, 322) des wenigstens einen Controllers enthaltenen Ressourcen-Anforderungen in Abhängigkeit von den Zeit-Slot-Zuweisungen der zugehörigen Tabellen (302A–E) abgearbeitet werden.A method for scheduling resource requests from active execution entities comprising tasks, processes, and / or threads, the resource requests each requesting one of a plurality of resources of a computer system, the computer system including at least one controller coupled to a CPU ( 102 . 110 ), each resource ( 104 . 106 . 112 . 118 . 120 ) with an associated controller ( 102 . 110 ), wherein: a) each active execution entity has at least one time window for each of the resources ( 402 ) within a budgeting cycle ( 400 ), the time windows ( 402 ) from an operating system running on the CPU ( 220 ), the time windows ( 402 ) each consist of a number of time slots, the assignment of the time slots in a plurality of tables ( 202 ), with one table each ( 202A - 202E ) is assigned to a resource, the tables ( 202A - 202E ) Store time slot assignments in which each time slot is assigned an identifier of an execution entity; b) where a scheduler ( 232 ) of the operating system ( 220 ) each receives a resource request, then determines whether the resource request can be processed based on the time slot assignments for the particular execution entity and resource and the resource requested, as well as previous pending resource requests, and then if so, the resource request in a request queue ( 204 ) stores; c) the tables containing the time slot assignments and the resource requirements for each resource are periodically retrieved from the operating system in tables ( 302A -E) or request queues ( 310 . 316 . 318 . 320 . 322 ) in the controller associated with the resource ( 102 . 110 ) be transmitted; and d) those in the request queues ( 310 . 316 . 318 . 320 . 322 ) of the at least one controller contained resource requirements depending on the time slot assignments of the associated tables ( 302A -E) are processed. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß im Schritt b) dann, wenn der Scheduler bestimmt, daß die Ressourcen-Anforderung nicht verarbeitet werden kann, die anfordernde aktive Ausführungsentität benachrichtigt wird.Method according to claim 1, characterized in that that in the Step b) if the scheduler determines that the resource request can not be processed, notifying the requesting active execution entity becomes. Verfahren nach Anspruch 2, dadurch gekennzeichnet, daß dann, wenn die aktive Ausführungsentität benachrichtigt wurde, daß die Ressourcen-Anforderung nicht verarbeitet werden kann, die Ressourcen-Anforderung, nachdem eine bestimmte Zeitdauer gewartet wurde, erneut ausgegeben wird.Method according to claim 2, characterized in that that then, when the active execution entity notifies was that the Resource request can not be processed, the resource request, after waiting for a certain period of time, reissued becomes. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß im Schritt d) die Ressourcen-Anforderungen dann abgearbeitet werden, wenn das aktuelle Zeitfenster (402) derjenigen Ausführungsentität zugewiesen ist, aus der die Ressourcen-Anforderung herrührt.Method according to Claim 1, characterized in that the resource requests are processed in step d) if the current time window ( 402 ) is assigned to the execution entity from which the resource request originated. Verfahren nach Anspruch 4, dadurch gekennzeichnet, daß das aktuelle Zeitfenster von einem mit dem Controller (314, 324) der Ressource gekoppelten Zähler (306, 308) angezeigt wird.Method according to claim 4, characterized in that the current time window of one with the controller ( 314 . 324 ) of the resource-coupled counter ( 306 . 308 ) is shown. Verfahren nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß die Anzahl der Zeit-Slots, die als Zeitfenster den Ausführungsentitäten im Schritt a) jeweils zugewiesen werden, in Abhängigkeit von den verschiedenen Verzögerungs- und/oder Bandbreitenerfordernissen der Ausführungsentität für die jeweilige Ressource bestimmt wird.Method according to one of Claims 1 to 4, characterized in that the number of time slots serving as the time window corresponds to the execution time in step a), depending on the different delay and / or bandwidth requirements of the execution entity for the respective resource. Verfahren nach Anspruch 6, dadurch gekennzeichnet, daß die Bandbreiten- und/oder Verzögerungserfordernisse für die Ressourcen von den Ausführungsentitäten an den Scheduler übermittelt werden.Method according to Claim 6, characterized that the Bandwidth and / or delay requirements for the Resources from the execution entities to the Scheduler transmitted become. Verfahren nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, daß der Scheduler, bevor er im Schritt b) bestimmt, ob eine Ressourcen-Anforderung verarbeitet werden kann, die Inhalte von Statusregistern (304) liest, um zu bestimmen, welche der vorangegangenen Ressourcen-Anforderungen anhängig und/oder abgeschlossen sind, um so die Verfügbarkeit der Ressourcen zu ermitteln.Method according to one of Claims 1 to 7, characterized in that the scheduler, before determining in step b) whether a resource request can be processed, contains the contents of status registers ( 304 ) to determine which of the previous resource requests are pending and / or completed to determine the availability of the resources. Ein Computersystem zum Ausführen eines Verfahrens zum zeitlichen Einplanen von Ressourcen-Anforderungen aus aktiven Ausführungsentitäten gemäß einem der Ansprüche 1 bis 8, wobei das Computersystem aufweist: eine CPU, wobei die CPU die Ausführungsentitäten und ein Betriebssystem mit einem Einplaner (scheduler) ausführt, eine Mehrzahl von Ressourcen, und wenigstens einen mit der CPU gekoppelten Controller, wobei jede Ressource mit einem zugehörigen Controller gekoppelt ist, wobei der Controller Speicherplätze zum Speichern von Zeit-Slot-Zuordnungen aufweist, die Anforderungen von den mit dem Controller gekoppelten Ausführungsentitäten zugeordnet sind, wobei der Controller zum Zugreifen auf die Speicherplätze ausgebildet ist, und um die Anforderungen für die Ressource gemäß den Slot-Zuordnungen zu verarbeiten.A computer system for carrying out a method for temporal Scheduling resource requests from active execution entities according to a the claims 1 to 8, wherein the computer system comprises: a CPU, where the CPU the execution entities and running an operating system with a scheduler, a Plurality of resources, and at least one coupled to the CPU Controller, with each resource coupled to an associated controller is the controller having memory locations for storing time-slot assignments has the requirements of those coupled with the controller Associated with execution entities are, wherein the controller is designed to access the memory locations is, and the requirements for the resource according to the slot assignments to process.
DE19983709T 1998-11-09 1999-08-26 Scheduling resource requests in a computer system Expired - Fee Related DE19983709B4 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US18861498A 1998-11-09 1998-11-09
US09/188,614 1998-11-09
PCT/US1999/019596 WO2000028418A1 (en) 1998-11-09 1999-08-26 Scheduling resource requests in a computer system

Publications (2)

Publication Number Publication Date
DE19983709T1 DE19983709T1 (en) 2002-02-14
DE19983709B4 true DE19983709B4 (en) 2007-02-22

Family

ID=22693875

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19983709T Expired - Fee Related DE19983709B4 (en) 1998-11-09 1999-08-26 Scheduling resource requests in a computer system

Country Status (7)

Country Link
JP (3) JP2002529850A (en)
AU (1) AU5902299A (en)
DE (1) DE19983709B4 (en)
GB (1) GB2358939B (en)
HK (1) HK1036860A1 (en)
TW (1) TW511034B (en)
WO (1) WO2000028418A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102009016742A1 (en) * 2009-04-09 2010-10-21 Technische Universität Braunschweig Carolo-Wilhelmina Method for operating a multiprocessor computer system

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW511034B (en) * 1998-11-09 2002-11-21 Intel Corp Scheduling requests in a system
US20020040381A1 (en) * 2000-10-03 2002-04-04 Steiger Dianne L. Automatic load distribution for multiple digital signal processing system
US7673304B2 (en) * 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
US7690003B2 (en) * 2003-08-29 2010-03-30 Fuller Jeffrey C System and method for increasing data throughput using thread scheduling
KR101014149B1 (en) 2008-11-13 2011-02-14 (주)인디링스 Controller for solid state disk of controlling access to memory bank
US8255615B1 (en) 2009-01-08 2012-08-28 Marvell International Ltd. Flexible sequence design architecture for solid state memory controller
CN101667159B (en) * 2009-09-15 2012-06-27 威盛电子股份有限公司 High speed cache system and method of trb
EP2656216B1 (en) * 2010-12-20 2018-12-19 Marvell World Trade Ltd. Device with descriptor scheduler and corresponding method and system
DE102011013833B4 (en) 2011-03-14 2014-05-15 Continental Automotive Gmbh display device
KR102149171B1 (en) * 2018-05-18 2020-08-28 강원대학교산학협력단 Method and apparatus of real-time scheduling for industrial robot system

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0817041A2 (en) * 1996-07-01 1998-01-07 Sun Microsystems, Inc. Method for reserving resources

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1993013609A1 (en) * 1991-12-23 1993-07-08 Network Express System for internetworking data terminal equipment through a switched digital network
US5682484A (en) * 1995-11-20 1997-10-28 Advanced Micro Devices, Inc. System and method for transferring data streams simultaneously on multiple buses in a computer system
US5812844A (en) * 1995-12-07 1998-09-22 Microsoft Corporation Method and system for scheduling the execution of threads using optional time-specific scheduling constraints
EP0798638B1 (en) * 1996-03-28 2008-07-16 Hitachi, Ltd. Periodic process scheduling method
JP2904483B2 (en) * 1996-03-28 1999-06-14 株式会社日立製作所 Scheduling a periodic process
US5928327A (en) * 1996-08-08 1999-07-27 Wang; Pong-Sheng System and process for delivering digital data on demand
DE69724270T2 (en) * 1996-11-06 2004-02-19 Motorola, Inc. METHOD AND DEVICE FOR DETERMINING THE NUMBER OF APPROVED ACCESSES DURING THE LATENCY OF THE WORST CASE
US6567839B1 (en) * 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
TW511034B (en) * 1998-11-09 2002-11-21 Intel Corp Scheduling requests in a system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0817041A2 (en) * 1996-07-01 1998-01-07 Sun Microsystems, Inc. Method for reserving resources

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JONES, M.B. et al.: Support for User-Centric Modular Real-Time Resource Management in the Rialto Operating System. In Proceedings of the Sixth International Workshop on Network and Operating System Support for Digital Audio and Video, November 1995 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102009016742A1 (en) * 2009-04-09 2010-10-21 Technische Universität Braunschweig Carolo-Wilhelmina Method for operating a multiprocessor computer system
DE102009016742B4 (en) * 2009-04-09 2011-03-10 Technische Universität Braunschweig Carolo-Wilhelmina Multiprocessor computer system
US8515797B2 (en) 2009-04-09 2013-08-20 Technische Universitaet Braunschweig Carolo-Wilhelmina Method for operating a multiprocessor computer system
US9268618B2 (en) 2009-04-09 2016-02-23 Technische Universitaet Braunschweig Carolo-Wilhelmina Method for operating a multiprocessor computer system

Also Published As

Publication number Publication date
GB2358939B (en) 2003-07-02
HK1036860A1 (en) 2002-01-18
GB2358939A (en) 2001-08-08
JP2011044165A (en) 2011-03-03
TW511034B (en) 2002-11-21
JP2002529850A (en) 2002-09-10
AU5902299A (en) 2000-05-29
JP2010044784A (en) 2010-02-25
GB0109904D0 (en) 2001-06-13
DE19983709T1 (en) 2002-02-14
WO2000028418A1 (en) 2000-05-18

Similar Documents

Publication Publication Date Title
DE60020817T2 (en) Sequence control for resources
DE60307532T2 (en) Parallel process execution method and multiprocessor computer
DE60036465T2 (en) COMPUTER ADAPTER CARD FOR COMBINING INPUT / OUTPUT PREPARATION REPORTS AND USE THEREOF
DE102012216568B4 (en) Scheduling and managing compute tasks with different execution priority levels
DE602004012106T2 (en) Multi-channel DMA with shared FIFO buffer
DE112004001320B3 (en) Method, system and apparatus for improving the performance of multi-core processors
DE19983737B3 (en) System for reordering commands issued by a memory controller to memory devices preventing collision
DE69735575T2 (en) Method and apparatus for interrupt distribution in a scalable symmetric multiprocessor system without changing the bus width or the bus protocol
DE69835121T2 (en) Resources flow control
DE10296959T5 (en) System and method for controlling bus allocation during cache burst cycles
DE102004012056B4 (en) System and method for monitoring resource utilization and application performance
EP0762274B1 (en) Apparatus and method for real time processing of multiple tasks
DE69819686T2 (en) OBJECT AND METHOD FOR PROVIDING EFFICIENT MULTIPLE-USER ACCESS TO DISTRIBUTED OPERATING SYSTEM CORE CODE BY INSTANCING
DE112011101633B4 (en) Reorganization of storage levels taking virtualization and dynamic resource allocation into account
DE19728726B4 (en) Robot controller and its control method
DE60027748T2 (en) BUSARCHITECTURE AND DISTRIBUTED BUSARBITRATION PROCESS FOR A COMMUNICATION PROCESSOR
DE19882704C2 (en) Method and device for power supply management
DE112007002201T5 (en) Quality of service implementation for platform resources
DE3642324C2 (en) Multiprocessor system with processor access control
DE602004012563T2 (en) Multi-threaded DMA
DE19983745B3 (en) Use of page label registers to track a state of physical pages in a storage device
DE102006019839A1 (en) Time-conscious systems
DE19983709B4 (en) Scheduling resource requests in a computer system
DE3606211A1 (en) MULTIPROCESSOR COMPUTER SYSTEM
DE112010005096T5 (en) Methods and apparatus for evaluating resource capacity in a system of virtual containers

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8607 Notification of search results after publication
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20110301