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 2A–2B 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 302A–302E 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 302A–302E können periodisch durch
das Betriebssystem 220 aktualisiert werden, wenn sich die
Kanalzuweisungen ändern.
In jeder der Tabellen 302A–302E 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 302A–302E 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 302A–302E 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 304A–304E 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 2A–2B 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 302A–302C.
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 304B–304E),
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 302A–302E,
wie es erforderlich ist, um die Kanalzuweisungen zu ändern. Die
CPU 100 kann darüber
hinaus (bei 524) auf die Statusregister 304A–304E 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.