JP2010044784A - Scheduling request in system - Google Patents
Scheduling request in system Download PDFInfo
- Publication number
- JP2010044784A JP2010044784A JP2009237427A JP2009237427A JP2010044784A JP 2010044784 A JP2010044784 A JP 2010044784A JP 2009237427 A JP2009237427 A JP 2009237427A JP 2009237427 A JP2009237427 A JP 2009237427A JP 2010044784 A JP2010044784 A JP 2010044784A
- Authority
- JP
- Japan
- Prior art keywords
- request
- resource
- execution
- scheduler
- requests
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/485—Resource constraint
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
- Multi Processors (AREA)
Abstract
【課題】プロセス、スレッドの異なるリソース要求を効率的にスケジュールする。
【解決手段】システムは、リソースと、このリソースに要求を出すように構成された実行エンティティと、各実行エンティティに対するスロット割当てを含むテーブル或いはテーブルセグメント202A〜202Eとをそれぞれ含んでいる。スケジュールコントローラ314は、テーブル或いはテーブルセグメントにアクセスし、スロット割当てに従って実行エンティティからの要求を処理するように構成される。このシステムは、スロット割当てを更新するスケジューラ232も含んでいる。さらに、このシステムは、実行エンティティと交渉し、リソース使用要求を決定するオペレーティングシステム220を含んでもよい。テーブル或いはテーブルセグメントは、リソース使用要求に基づいて、オペレーティングシステムによって更新されてもよい。
【選択図】図2ATo efficiently schedule resource requests of different processes and threads.
The system includes a resource, an execution entity configured to issue a request to the resource, and a table or table segment 202A-202E that includes a slot assignment for each execution entity. The schedule controller 314 is configured to access a table or table segment and process requests from execution entities according to slot assignments. The system also includes a scheduler 232 that updates slot assignments. In addition, the system may include an operating system 220 that negotiates with the executing entity and determines resource usage requests. The table or table segment may be updated by the operating system based on the resource usage request.
[Selection] Figure 2A
Description
背景
本発明は、システムにおける要求(リクエスト)の決定論的なスケジューリングに関するものである。
BACKGROUND The present invention relates to deterministic scheduling of requests in a system.
システム(例えば、コンピュータ)のソフトウェアレイヤは、一般的には、オペレーティングシステム及びアプリケーションプログラムを含んでいる。アプリケーションプログラムが実行される場合、1つ或いはそれ以上のプロセス、或いは、ワーク又は実行エンティティの他の基本ユニットが構築されてもよい。マイクロソフト社からのウィンドウズ(登録商標)95或いはウィンドウズ(登録商標)NTオペレーティングシステムのような所定のオペレーティングシステムの場合には、各プロセスは、割当てられた機能を実行するためにプロセスのアドレス空間に含まれたコードを実行するワークの1つ或いはそれ以上のユニット(スレッドと呼ばれる)を含んでいてもよい。親プロセスに属するスレッドは、異なる機能を実行するように割当てられてもよい。例えば、スプレッドシートプロセスの場合、スレッドは、ユーザ入力を計算し、印刷し、受信し、ヘルプ機能等を行うように構築されてもよい。他のオペレーティングシステムの場合、タスク或いはプロセスは、中央処理装置(CPU)によって実行するためにスケジューリングされるワーク或いは実行エンティティの基本ユニットを構成してもよい。 The software layer of a system (eg, a computer) typically includes an operating system and application programs. When an application program is executed, one or more processes or other basic units of work or execution entities may be constructed. In the case of a given operating system, such as the Windows 95 or Microsoft NT operating system from Microsoft, each process is included in the process address space to perform its assigned function. One or more units of work (called threads) that execute the generated code may be included. Threads belonging to the parent process may be assigned to perform different functions. For example, in the case of a spreadsheet process, the thread may be constructed to calculate, print, receive user input, perform help functions, and the like. For other operating systems, a task or process may constitute a basic unit of work or execution entity that is scheduled for execution by a central processing unit (CPU).
オペレーティングシステムは、複数のアクティブスレッド或いはプロセスを管理するスケジューラを含んでもよい。異なる形式のオペレーティングシステムは、異なるスケジューリング方式を有してもよい。例えば、いくつかのウィンドウズ(登録商標)オペレーティングシステムの場合、タイムスロットは、対応するスレッドが実行することができるラウンドロビン方式でアクティブスレッドに割当てられる。さらに、いくつかのウィンドウズ(登録商標)オペレーティングシステムの場合、優先順位クラスは、スレッドに割当てられてもよい。最高優先順位クラスのスレッドは、それらに割当てられたタイムスライス(より低い優先順位クラスのスレッドが後に続く)において最初に実行される。従って、いかなる特定の優先順位クラスにおいて、スケジューリングは、ラウンドロビン方法で実行されてもよい。1つ或いはそれ以上の事象が生じるまで、スレッドは実行し続ける。タイムスライスは、終了するか、或いは、スレッドは、実行する用意ができているより高い優先順位の他のスレッドによって取って代わられる。 The operating system may include a scheduler that manages multiple active threads or processes. Different types of operating systems may have different scheduling schemes. For example, for some Windows operating systems, time slots are assigned to active threads in a round robin fashion that the corresponding thread can execute. Further, for some Windows operating systems, priority classes may be assigned to threads. The highest priority class threads are executed first in the time slice assigned to them (followed by the lower priority class threads). Thus, in any particular priority class, scheduling may be performed in a round robin manner. The thread continues to execute until one or more events occur. The time slice ends or the thread is replaced by another thread of higher priority that is ready to execute.
異なるプロセス、スレッド、或いはワークの他のユニットは、システムリソースを異なって使用してもよい。例えば、ビデオ再生及びデコードプロセスでは、データは、コンパクトディスク(CD)或いはディジタルビデオディスク(DVD)ドライブからシステムメモリに転送され、CPUとシステムメモリとの間で転送され、モニタ上のグラフィックスカードによって表示するためにシステムメモリからビデオメモリへ転送されてよい。一般に、CD或いはDVDドライブからシステムメモリに転送されるデータは、CPUとシステムメモリとの間のデータの転送よりも遅くてもよい、グラフィックスカードとシステムメモリとの間に転送されるデータよりも遅い。このように、システムリソース(例えば、システムメモリ、バス、及び他の装置を含む)は、ワーク或いは実行エンティティの異なるユニットの要求に応じて異なって使用されてもよい。 Different processes, threads, or other units of work may use system resources differently. For example, in the video playback and decoding process, data is transferred from a compact disc (CD) or digital video disc (DVD) drive to system memory, transferred between the CPU and system memory, and displayed by a graphics card on the monitor. May be transferred from system memory to video memory. In general, the data transferred from the CD or DVD drive to the system memory may be slower than the data transferred between the CPU and the system memory, and slower than the data transferred between the graphics card and the system memory. . Thus, system resources (eg, including system memory, buses, and other devices) may be used differently depending on the requirements of different units of work or execution entities.
従来のオペレーティングシステムは、一般的には異なるプロセス、スレッド或いはワークの他のユニットの異なるリソース要求を効率的に明らかにしない。このような従来のオペレーティングシステムは、プロセス、スレッド、ワークの他のユニットを適切なレベルでスケジュール(スケジューリング)する。すなわち、例えば、各アプリケーションに関連するプロセス、スレッド或いはワークの他のユニットは、所定の優先順位クラスに割当てられる。一般的には、ユニットのワークからの要求は、必要とされたシステムリソースが利用可能であるかどうかに関係なく、予め割当てられた優先順位及びスケジューリングプロトコルに従ってスケジュールされるようになっている。 Conventional operating systems generally do not efficiently account for different resource requirements of different processes, threads or other units of work. Such conventional operating systems schedule (schedule) processes, threads, and other units of work at an appropriate level. That is, for example, processes, threads or other units of work associated with each application are assigned to a predetermined priority class. In general, requests from unit work are scheduled according to pre-assigned priorities and scheduling protocols, regardless of whether the required system resources are available.
概要
一般に、一実施形態では、システムは、リソースと、システムに要求を出すように構成される実行エンティティと、各実行エンティティからのリソースに対する要求に関連したスロット割当てを含む記憶ロケーション(記憶場所)とを含んでいる。コントローラは、リソースに結合され、記憶ロケーションにアクセスし、スロット割当てに従って実行エンティティからリソースに対する要求を処理するように構成される。
In general, in one embodiment, a system includes a resource, an execution entity configured to make a request to the system, and a storage location that includes slot assignments associated with requests for the resource from each execution entity; Is included. The controller is coupled to the resource, configured to access the storage location and process a request for the resource from the executing entity according to the slot assignment.
他の機能は、下記の説明及び特許請求の範囲から明らかとなるであろう。 Other features will be apparent from the following description and the claims.
本発明によれば、要求されたリソースの利用可能度及び利用の状態がスケジューラによって決定される決定方式を利用することによって、スケジューラは、実行エンティティからの要求が、要求されているエンティティの帯域幅要求及び呼び出し時間要求に従ってサービスされることをより良く保証できる。 According to the present invention, by using a decision scheme in which the availability and state of use of a requested resource is determined by the scheduler, the scheduler can request that the request from the executing entity be the bandwidth of the requested entity. It can better guarantee that it will be serviced according to request and ring time requirements.
詳細な説明
本発明の実施形態によるシステムは、ファームウェアレイヤのソフトウェアによって使用されるか或いはアクセスされる。例として、システムリソースは、システムメモリ、1つ或いはそれ以上のバスと、他の装置とを含んでもよい。システムで実行する実施形態に係るスケジューラは、いくつかの実施形態では、所定のシステムリソースが利用可能であるかどうか及び要求の呼び出し時間及び帯域幅を含んでいるソフトウェアレイヤ及びハードウェアレイヤによって所定の基準に従って作成されるワーク或いは実行エンティティの基本ユニット(例えば、プロセス、タスク或いはスレッド)からの要求をスケジュールする。いつかの実施形態においては、スケジューラには、システムリソース利用可能度及び利用の状態のフィードバックが提供される。要求されたリソースの利用可能度及び利用の状態がスケジューラによって決定される決定方式を利用することによって、スケジューラは、実行エンティティからの要求が、要求されているエンティティの帯域幅要求及び呼び出し時間要求に従ってサービスされることをより良く保証できる。
System according DETAILED DESCRIPTION Embodiments of the present invention is or accessed used by the software of firmware layers. By way of example, system resources may include system memory, one or more buses, and other devices. A scheduler according to an embodiment executing in a system, in some embodiments, is predetermined by a software layer and a hardware layer that include whether a given system resource is available and the request call time and bandwidth. Schedule requests from basic units (eg, processes, tasks or threads) of work or execution entities created according to criteria. In some embodiments, the scheduler is provided with feedback on system resource availability and usage status. By utilizing a decision scheme in which the availability and status of the requested resource is determined by the scheduler, the scheduler ensures that requests from the executing entity are in accordance with the requested entity's bandwidth and call time requirements. You can be better guaranteed to be serviced.
図1を参照すると、例えば、汎用コンピュータ又は専用コンピュータ、他のマイクロプロセッサ或いはマイクロコントローラ方式システム、携帯計算装置、セットトップボックス、電気器具、ゲームシステム、或いは特定用途向け集積回路(ASIC)又はプログラマブルゲートアレイ(PGA)のような制御装置を含む他のシステムであってもよいシステム10のブロック図が示されている。 Referring to FIG. 1, for example, a general purpose or special purpose computer, other microprocessor or microcontroller based system, portable computing device, set top box, appliance, game system, or application specific integrated circuit (ASIC) or programmable gate A block diagram of system 10 is shown, which may be another system including a controller such as an array (PGA).
ここでの説明は、システム10の種々のレイヤについての特定の構成及びアーキテクチャを参照しているけれども、記載された実施形態及び例示された実施形態に関して多数の修正及び変更が可能である。 Although the description herein refers to specific configurations and architectures for the various layers of the system 10, numerous modifications and changes are possible with respect to the described and illustrated embodiments.
図1の実施形態では、システム10は、主メモリ(システムメモリ)104に結合されたメモリコントローラ103及びグラフィックスカード106に結合されたグラフィックスインタフェース105を含んでいるホストブリッジコントローラ102に結合された中央処理装置(CPU)100を有している。グラフィックスインタフェース105は、例えば、1998年5月に発行されたアクセレートグラフィックスポートインタフェース仕様、改訂2.0に記載のアクセレートグラフィックスポート(A.G.P.)であってよい。ホストブリッジコントローラ102は、第2レベル(L2)キャッシュメモリ109を制御するためにキャッシュコントローラ107も含んでいる。ホストブリッジコントローラ102は、システムバス112に結合されたバスインタフェース111を含んでいる。なお、このバスインタフェース111は、一実施形態においては、1995年6月に発行されたPCIローカルバス仕様、製造版、改訂2.1に記載されているように作動する周辺構成要素相互接続(PCI)バスであってもよいし、他の実施形態においては、他の種類のインタフェースプロトコルであってもよい。 In the embodiment of FIG. 1, the system 10 includes a central controller coupled to a host bridge controller 102 that includes a memory controller 103 coupled to a main memory (system memory) 104 and a graphics interface 105 coupled to a graphics card 106. A processing device (CPU) 100 is included. The graphics interface 105 may be, for example, an accelerated graphics port (AGP) described in the Accelerated Graphics Port Interface Specification, Rev. 2.0, issued in May 1998. The host bridge controller 102 also includes a cache controller 107 for controlling the second level (L2) cache memory 109. Host bridge controller 102 includes a bus interface 111 coupled to system bus 112. Note that this bus interface 111, in one embodiment, is a peripheral component interconnect (PCI) that operates as described in the PCI local bus specification, production version, revision 2.1 issued in June 1995. ) Bus, and in other embodiments, other types of interface protocols.
例えば、他の構成では、ホストコントローラ及びブリッジコントローラは、リンクによって結合されるメモリハブ及び入出力ハブと置き換えられてもよい。このような構成では、メモリ及びグラフィックスインタフェース回路は、メモリハブにあってもよく、ブリッジコントローラはI/Oハブであってもよい。 For example, in other configurations, the host controller and bridge controller may be replaced with a memory hub and input / output hub coupled by a link. In such a configuration, the memory and graphics interface circuit may be in a memory hub and the bridge controller may be an I / O hub.
システムバス112は、ハードディスクドライブ115或いはコンパクトディスク(CD)又はディジタルビデオディスク(DVD)ドライブ116のような1つ或いはそれ以上の記憶装置へのアクセスを制御する記憶装置コントローラ114に結合されている。ネットワークインタフェースや、周辺装置に結合されたスロット(図示せず)のような他のデバイスが、システムバス112に結合されてもよい。種々の他の統合レベルに従うシステムは、異なるブロックで実行されるコントローラを有してもよい。例えば、ハードディスクドライブや、CD又はDVDドライブコントローラは、システムブリッジコントローラ110に含まれてもよい。 The system bus 112 is coupled to a storage controller 114 that controls access to one or more storage devices, such as a hard disk drive 115 or a compact disk (CD) or digital video disk (DVD) drive 116. Other devices, such as network interfaces and slots (not shown) coupled to peripheral devices may be coupled to the system bus 112. Systems according to various other integration levels may have controllers that execute in different blocks. For example, a hard disk drive or a CD or DVD drive controller may be included in the system bridge controller 110.
システム10は、二次バス若しくは拡張バス120を有している。システムブリッジコントローラ110は、システムバス112と拡張バス120との間に結合されている。システムブリッジコントローラ110は、システムバス112に結合されたシステムバスインタフェース113及び拡張バス120に結合された拡張バスインタフェース119を含んでいる。このシステムブリッジコントローラ110も、1996年1月に発行された汎用バス仕様、改訂1.0に記載されているようにUSBポート118に結合された汎用直列バス(USB)インタフェース117を含んでいる。拡張バス120は、種々の周辺装置(入力/出力装置)122及び不揮発性メモリ124に結合されている。バス、バスそのもの、及びシステムメモリに結合された構成要素及び装置は、システム10内のワーク或いは実行エンティティのユニットのからの要求によって使用或いはアクセスされるシステムリソースの一部を形成する。 The system 10 has a secondary bus or expansion bus 120. System bridge controller 110 is coupled between system bus 112 and expansion bus 120. System bridge controller 110 includes a system bus interface 113 coupled to system bus 112 and an expansion bus interface 119 coupled to expansion bus 120. The system bridge controller 110 also includes a universal serial bus (USB) interface 117 coupled to the USB port 118 as described in the general bus specification published in January 1996, revision 1.0. The expansion bus 120 is coupled to various peripheral devices (input / output devices) 122 and a non-volatile memory 124. Components and devices coupled to the bus, the bus itself, and system memory form part of the system resources used or accessed by requests from units of work or execution entities within the system 10.
図2A〜図2Bを参照すると、システム10の種々のソフトウェアレイヤ及びハードウェアレイヤは、より詳細に示されている。例として、システム10は、オペレーティングシステム(OS)220及びプロセス222及び224を含んでもよい。次の説明では、オペレーティングシステム220は、各プロセスが1つ或いはそれ以上のスレッドを含んでもよいあるウィンドウズ(登録商標)オペレーティングシステムのようなスレッドベースシステムであると仮定される。しかしながら、前述の実施形態による要求スケジューリング方式は、異なって構成された実行エンティティ或いはワークのユニットによってオペレーティングシステムで実行されてもよい。 With reference to FIGS. 2A-2B, the various software and hardware layers of the system 10 are shown in greater detail. By way of example, system 10 may include an operating system (OS) 220 and processes 222 and 224. In the following description, operating system 220 is assumed to be a thread-based system such as the Windows operating system where each process may include one or more threads. However, the request scheduling scheme according to the above embodiments may be executed in the operating system by differently configured execution entities or units of work.
図2Aに示されるように、スレッド228及び229は、プロセス222に属し、スレッド230及び231はプロセス224に属する。スレッドは、オペレーティングシステムの下で規定されるアプリケーションプログラマブルインタフェース(API)のような所定のインタフェースを介してオペレーティングシステム(OS)220と通信してもよい。それとは別に、「サードパーティ」APIが使用されてもよい。オペレーティングシステム(OS)220は、所定のインタフェースを介してアクティブスレッドからの要求をスケジュールするスケジューラ232を有している。一実施形態では、本発明の実施形態に従ってスケジューリング動作を実行するために、スケジューラ232は、メモリ、I/O、システム10の他の所定の位置にアクセスし得てハードウェア構成要素と通信するデバイスドライバ240に関連されていてよい。これらの要素232及び240は、ひとまとめにしてスケジューラと呼ばれる。他の実施形態では、スケジューラは、より多くのモジュール或いはレイヤに分離されてもよい。 As shown in FIG. 2A, threads 228 and 229 belong to process 222 and threads 230 and 231 belong to process 224. The thread may communicate with the operating system (OS) 220 via a predetermined interface, such as an application programmable interface (API) defined under the operating system. Alternatively, a “third party” API may be used. The operating system (OS) 220 has a scheduler 232 that schedules requests from active threads via a predetermined interface. In one embodiment, scheduler 232 may access memory, I / O, other predetermined locations of system 10 and communicate with hardware components to perform scheduling operations in accordance with embodiments of the present invention. It may be associated with the driver 240. These elements 232 and 240 are collectively referred to as the scheduler. In other embodiments, the scheduler may be separated into more modules or layers.
スレッドからの要求を受信する際に、スケジューラ232は、この要求をハードウェア構成要素からのフィードバック通信、未だ実行されていない要求の数、要求スレッドの呼び出し時間及び帯域幅要求に基づいてスケジュール(スケジューリング)する。 When receiving a request from a thread, the scheduler 232 schedules the request based on feedback communication from the hardware component, the number of requests not yet executed, the calling time of the request thread, and the bandwidth request. )
一実施形態によれば、スケジューラ232は、所定のエンティティ数を有する要求待ち行列(キュー)204に要求を記憶する。要求待ち行列204の各エントリは、特定の要求が処理されたかどうかを示す状態フィールド206の状態フラグに関連してもよい。 According to one embodiment, scheduler 232 stores requests in request queue (queue) 204 having a predetermined number of entities. Each entry in the request queue 204 may be associated with a status flag in the status field 206 that indicates whether a particular request has been processed.
デバイスドライバ240を介してスケジューラ232によってアクセスできる、システムメモリ104(或いは、ある他の適当な記憶ロケーション)に記憶されたテーブルのセット或いはテーブルセグメント202は、各々がスレッド識別子(ID)を有する対応アクティブスレッドのためのチャネル割当てを識別する。各チャネルは、クロック発生器250によって発生されたクロックのような基本クロックの所定サイクル数を有するものとして規定される。チャネル毎の基本クロック数は所望の細分性(グラニュラリティ)に基づいて選択される。テーブル或いはテーブルセグメント202の各々は、例えば、システムメモリ104、グラフィックスカード106、システムバス112、拡張バス120、USBポート118等を含むシステム10のリソースに対応する。 A set of tables or table segments 202 stored in system memory 104 (or some other suitable storage location) that can be accessed by scheduler 232 via device driver 240 is a corresponding active each having a thread identifier (ID). Identifies the channel assignment for the thread. Each channel is defined as having a predetermined number of cycles of a basic clock, such as a clock generated by clock generator 250. The number of basic clocks for each channel is selected based on the desired granularity. Each table or table segment 202 corresponds to system 10 resources including, for example, system memory 104, graphics card 106, system bus 112, expansion bus 120, USB port 118, and the like.
実施形態においては、ブリッジコントローラ102、110は、スレッドIDによって特定のスレッドに対するチャネル割当てを監視する各種のシステムリソースに対応するテーブル或いはテーブルセグメントも記憶する。ブリッジコントローラのテーブル或いはテーブルセグメントは、オペレーティングシステム(OS)220によって保有される対応するテーブル202に基づいてロードされる。例示された実施形態では、テーブル或いはテーブルセグメント302A、302B、及び302Cは、システムメモリ104、システムバス112、及びグラフィックスカード106のそれぞれに対するチャネル割当てを監視するためにホストブリッジコントローラ102によって記憶されてもよい。システムブリッジコントローラ110は、USBポート118及び拡張バス120に対するチャネル割当てを監視するためにテーブル或いはテーブルセグメント302D及び302Eを記憶してもよい。他のテーブルも他のシステムリソースのために保有されてもよい。 In an embodiment, the bridge controllers 102, 110 also store tables or table segments corresponding to various system resources that monitor channel assignments for specific threads by thread ID. The bridge controller table or table segment is loaded based on a corresponding table 202 maintained by the operating system (OS) 220. In the illustrated embodiment, the tables or table segments 302A, 302B, and 302C may be stored by the host bridge controller 102 to monitor channel assignments for each of the system memory 104, system bus 112, and graphics card 106. Good. The system bridge controller 110 may store tables or table segments 302D and 302E to monitor channel assignments to the USB port 118 and expansion bus 120. Other tables may also be reserved for other system resources.
ブリッジコントローラ102、110に記憶されているものとして示されているけれども、テーブル302A〜302Eは、システムメモリ104或いは外部記憶装置のような他の適当な位置に記憶されてもよい。それとは別に、異なるシステムリソースは、図示されるようにブリッジコントローラ102、110に統合されるよりもむしろシステム中に配設されたコントローラによって制御されてもよい。 Although shown as being stored in the bridge controller 102, 110, the tables 302A-302E may be stored in the system memory 104 or other suitable location, such as an external storage device. Alternatively, the different system resources may be controlled by a controller disposed in the system rather than being integrated into the bridge controller 102, 110 as shown.
テーブル302A〜302Eは、チャネル割当て変更としてオペレーティングシステム(OS)220によって周期的に更新されてもよい。テーブル302A〜302Eの各々において、スレッドは同じ或いは異なる数のチャネルを割当てられてもよい。例えば、第1のスレッドIDに関連したスレッドは第1のチャネル数を割当てられてもよいし、第2のスレッドIDに関連したスレッドは異なるチャネル数を割当てられてもよい。 Tables 302A-302E may be periodically updated by operating system (OS) 220 as channel assignment changes. In each of the tables 302A-302E, threads may be assigned the same or different number of channels. For example, the thread associated with the first thread ID may be assigned a first channel number, and the thread associated with the second thread ID may be assigned a different channel number.
テーブル302A〜302Eのスレッドに割当てられたチャネルは、図3に示されるように全スケジューリングサイクル400内のスレッド要求実行ウィンドウ或いはスロットを規定する。スケジューリングサイクル400は、各々が割当てられたチャネル数を含む複数のスレッド要求実行ウィンドウ或いはスロット4200、4021、...、402N-1、及び402Nを含んでいる。各要求実行ウィンドウ402は、スレッドからの要求の実行に割当てられる。 The channels assigned to the threads in tables 302A-302E define a thread request execution window or slot within the entire scheduling cycle 400 as shown in FIG. The scheduling cycle 400 includes a plurality of thread request execution windows or slots 420 0 , 402 1 ,. . . 402 N-1 and 402 N. Each request execution window 402 is assigned to execute a request from a thread.
一実施形態では、第1のウィンドウ4200は、ブリッジコントローラ102、110のOSテーブル202と対応するテーブル302との間のコヒーレンシー(coherency)を保持するスケジューラ232に割当てられる。残りのウィンドウ4021〜402Nは、種々の他のスレッドからの要求に割当てられてもよい。例示された実施形態では、テーブル302A〜302Eは、コピーレンシー・ウィンドウズ(登録商標)4200のスケジューリングサイクル400毎に1回、スケジューラ・デバイスドライバ240によって更新される。コヒーレンシー・ウィンドウ4200の時間中、或いは、それとは別に他のウィンドウ402iでは、スケジューラ・デバイスドライバ240は、また、どの要求が完了したかを決定するためにブリッジコントローラ102、110の状態レジスタ304A〜304Eの内容を読み出してもよい。従って、スケジューラ232は、どのシステムリソースが利用可能であるか監視をすることができるようにどの要求が完了され、どの要求が未だ実行されていないかについての情報がフィードバックされるように構成されている。このように、スレッドからの要求がスケジューラ232によって受信される場合、スケジューラ232は、十分なリソースが要求を処理するために利用可能であるかどうかを決定できる。 In one embodiment, the first window 420 0 is assigned to a scheduler 232 that maintains coherency between the OS table 202 of the bridge controller 102, 110 and the corresponding table 302. The remaining windows 402 1 -402 N may be assigned to requests from various other threads. In the illustrated embodiment, the tables 302A-302E are updated by the scheduler device driver 240 once every scheduling cycle 400 of Copyency Windows® 4200. During the time of the coherency window 420 0 , or in another window 402 i , the scheduler device driver 240 also determines the status register 304 A of the bridge controller 102, 110 to determine which request has been completed. The contents of .about.304E may be read. Thus, scheduler 232 is configured to feed back information about which requests have been completed and which requests have not yet been executed so that it can monitor which system resources are available. Yes. Thus, when a request from a thread is received by scheduler 232, scheduler 232 can determine whether sufficient resources are available to process the request.
再度、図2A及び図2Bを参照すると、実施形態によれば、ブリッジコントローラ102、110の各々は、システム10の種々のリソースに対する要求を記憶する種々の呼び出し時間を含んでいる。例として、ホストブリッジコントローラ102は、メモリコントローラ103のメモリ待ち行列310を有している。CPUバスインタフェース312を介して接続されたCPU100、及び、システムバスインタフェース111を介して接続されたシステムバス112上の各種のデバイスをそれぞれ含むシステム10の種々のソースからメモリコントローラ103によって受信された要求は、実行するためにメモリ待ち行列310に記憶される。メモリアドレス及びデータ情報に加えて、メモリ待ち行列310は、また、メモリ要求の関連IDを記憶するように構成されている。 Referring again to FIGS. 2A and 2B, according to an embodiment, each of the bridge controllers 102, 110 includes various call times that store requests for various resources of the system 10. As an example, the host bridge controller 102 has a memory queue 310 for the memory controller 103. Requests received by the memory controller 103 from various sources of the system 10 including the CPU 100 connected via the CPU bus interface 312 and various devices on the system bus 112 connected via the system bus interface 111, respectively. Are stored in the memory queue 310 for execution. In addition to the memory address and data information, the memory queue 310 is also configured to store an associated ID of the memory request.
本発明のいくつかの実施形態では、CPU100は関連スレッドIDとともに命令をフェッチ(命令取り出し動作)する。スレッドIDは、ブリッジコントローラ102、110に送られ、ブリッジコントローラ102、110の待ち行列に記憶される。 In some embodiments of the invention, the CPU 100 fetches an instruction (instruction fetch operation) along with the associated thread ID. The thread ID is sent to the bridge controllers 102 and 110 and stored in a queue of the bridge controllers 102 and 110.
ホストブリッジコントローラ102のスケジューラコントローラ314は、カウンタ306及びテーブル或いはテーブルセグメント302A〜302Cからの出力値を受信する。クロック発生器250からの基本クロックによってクロックされるカウンタ306は、スケジューリングサイクル400でチャネルを通して計数するように構成されてもよい。カウンタ306の値に基づいて、スケジューラコントローラ314は、スケジューリングサイクル400の範囲内で現スレッド要求実行ウィンドウ400i(i=0〜N)を決定できる。どのウィンドウ400iがアクティブであるか、並びに、テーブル302Aのチャネル割当てに基づいて、メモリ待ち行列310の対応するスレッドIDに関連した要求がメモリコントローラ103によって処理するために選択されてもよい。 The scheduler controller 314 of the host bridge controller 102 receives the output value from the counter 306 and the tables or table segments 302A to 302C. Counter 306 clocked by the base clock from clock generator 250 may be configured to count through the channel in scheduling cycle 400. Based on the value of the counter 306, the scheduler controller 314 can determine the current thread request execution window 400 i (i = 0 to N) within the scheduling cycle 400. Based on which window 400 i is active and the channel assignments in table 302 A, a request associated with the corresponding thread ID in memory queue 310 may be selected for processing by memory controller 103.
選択された要求は、現ウィンドウ400i内で実行される。要求の完了の際に、ホストブリッジコントローラ102は、状態レジスタ304Aの適切なビットをプログラミングすることによって要求完了状態に戻してもよい。次のコヒーレンシー・ウィンドウ4020では、スケジューラ・デバイスドライバ240の制御の下でCPU100は、状態レジスタ304A(並びに他の状態レジスタ304B〜304E)を読み出し、どの要求が完了したかを決定する。次に、スケジューラ・デバイスドライバ240は、要求待ち行列204の完了要求のフラグ206を更新する。 The selected request is executed in the current window 400i. Upon completion of the request, the host bridge controller 102 may return to the request completion state by programming the appropriate bits in the status register 304A. In the next coherency window 4020, under the control of the scheduler device driver 240, the CPU 100 reads the status register 304A (as well as the other status registers 304B-304E) to determine which request has been completed. Next, the scheduler device driver 240 updates the completion request flag 206 in the request queue 204.
メモリ待ち行列310に加えて、一実施形態のホストブリッジコントローラ102は、また、システムバスインタフェース111のシステムバス待ち行列316及びグラフィックスインタフェース105のグラフィックスカード要求待ち行列318を含んでいてよい。システムバス112に対する要求は、システムバス待ち行列316に入れられるのに対して、グラフィックスカード106に対する要求は、グラフィックスカード待ち行列318に入れられる。要求はスレッドIDに関連しているので、スケジューラコントローラ314は、現スレッド要求実行ウィンドウ402i及びテーブル302B,302Cに記憶されたチャネル割当てに基づいて、バスインタフェース111或いはグラフィックインタフェース105による適切な処理を選択できる。待ち行列316及び318の要求の完了は、状態レジスタ304B及び304Cのそれぞれによって示される。 In addition to the memory queue 310, the host bridge controller 102 in one embodiment may also include a system bus queue 316 for the system bus interface 111 and a graphics card request queue 318 for the graphics interface 105. Requests for the system bus 112 are placed in the system bus queue 316, while requests for the graphics card 106 are placed in the graphics card queue 318. Since the request is related to the thread ID, the scheduler controller 314 performs appropriate processing by the bus interface 111 or the graphic interface 105 based on the channel assignment stored in the current thread request execution window 402 i and the tables 302B and 302C. You can choose. Completion of requests in queues 316 and 318 is indicated by status registers 304B and 304C, respectively.
同様に、システムブリッジコントローラ110は、拡張バス120に供給される要求を記憶する拡張バス待ち行列320と、USBポート118に供給すう要求を記憶するUSBバス待ち行列322とを含んでいる。クロック発生器250からの基本クロックによってクロックされるカウンタ308は、スケジューリングサイクル400のチャネルを計数する。カウンタ308によって示されるような現スレッド要求実行ウィンドウ402i、及び、テーブル302D,302Eに記憶されたチャネル割当てに基づいて、システムブリッジコントローラ110のスケジューラコントローラ324は、待ち行列320及び322それぞれの要求の中のどれが処理されるべきであるかを決定する。要求の完了は、状態レジスタ304D,304Eによって示される。 Similarly, the system bridge controller 110 includes an expansion bus queue 320 that stores requests supplied to the expansion bus 120 and a USB bus queue 322 that stores requests supplied to the USB port 118. Counter 308 clocked by the base clock from clock generator 250 counts the channels in scheduling cycle 400. Based on the current thread request execution window 402 i as indicated by the counter 308 and the channel assignments stored in the tables 302D and 302E, the scheduler controller 324 of the system bridge controller 110 determines the request for each of the queues 320 and 322, respectively. Determine which ones should be processed. Completion of the request is indicated by status registers 304D and 304E.
図4に示すように、スケジューラ232と協動するスケジューラ・デバイスドライバ240は、(ステップ502において)所定のイベントの受信を待つ。アプリケーション・プログラマブル・インタフェース(API)呼び出しの形であってもよい、スレッドからの要求が、受信された場合、スケジューラ・デバイスドライバ240は、(ステップ504において)要求待ち行列204及びチャネル割当てテーブル202にアクセスするので、スケジューラ232は、リソースがスレッド要求を処理するために利用可能であるかどうかを(ステップ506において)決定することができる。 As shown in FIG. 4, the scheduler device driver 240 cooperating with the scheduler 232 waits (at step 502) to receive a predetermined event. If a request from a thread, which may be in the form of an Application Programmable Interface (API) call, is received, the scheduler device driver 240 (in step 504) enters the request queue 204 and the channel assignment table 202. Having access, scheduler 232 can determine (at step 506) whether resources are available to process the thread request.
リソースが要求を適切に処理するために利用可能でないことをスケジューラ232が決定する場合には、要求されているスレッドが(ステップ508において)通知される。この通知に応じて、スレッドは、要求を再度出す前に若干の時間だけ待つことができるか、或いは、スレッドは、さもなければこの状態を特に適切に処理できる。要求されたリソースが利用可能である場合には、スレッドからの要求は、要求待ち行列204に(ステップ510において)加えられる。 If the scheduler 232 determines that the resource is not available to process the request properly, the requested thread is notified (at step 508). In response to this notification, the thread can wait for some time before reissuing the request, or the thread can otherwise handle this condition particularly well. If the requested resource is available, the request from the thread is added to the request queue 204 (at step 510).
スケジュール待ち行列204の特定要求が処理され、完了される場合、待ち行列204のフラグフィールド206の全フラグは、前述のように設定されてもよい。 When a specific request in schedule queue 204 is processed and completed, all flags in flag field 206 of queue 204 may be set as described above.
スケジューラ・デバイスドライバ240そのものは、要求待ち行列及びスレッドチャネル割当てテーブルに対応するメモリ位置にアクセスするような要求を出すことができるスレッドである。(ステップ520において)要求待ち行列204に入れられたスケジュール・デバイスドライバ・スレッドからの要求は、スケジュールサイクル400の第1のウィンドウ4020で処理されてもよい。それに代えて、他のウィンドウ402iは、スケジューラ・デバイスドライバ240に割当てられてもよい。 The scheduler device driver 240 itself is a thread that can issue requests to access memory locations corresponding to the request queue and thread channel allocation table. (In step 520) a request from the schedule device driver threads placed in the request queue 204 may be processed by the first window 402 0 schedule cycle 400. Alternatively, other windows 402 i may be assigned to the scheduler device driver 240.
コヒーレンシー・ウィンドウ4020の期間中、スケジューラ・デバイスドライバ240の制御の下でのCPU100は、必要に応じてブリッジコントローラテーブル302A〜302Eを(ステップ522において)更新し、チャネル割当てを変える。CPU100は、(ステップ524において)どの要求が完了されたかを決定するために状態レジスタ304A〜304Eにアクセスしてもよい。それに代えて、テーブル更新動作及び状態レジスタ読み出し動作が別々に行われてもよい。次に、デバイスドライバ240の制御の下でのCPU100は、(ステップ526において)要求待ち行列204を更新してもよい。 During the coherency window 402 0, CPU 100 under the control of the scheduler device driver 240, the bridge controller table 302A~302E (in step 522) and updated as needed, change the channel assignment. CPU 100 may access status registers 304A-304E to determine which requests have been completed (at step 524). Instead, the table update operation and the status register read operation may be performed separately. Next, CPU 100 under control of device driver 240 may update request queue 204 (at step 526).
スケジューラ232は、要求そのもの及びAPI呼出しのパラメータのような要求パラメータを調べることによって、何のシステムリソースが要求によって求められているかを決定することができる。例えば、パラメータは、システムメモリ104のメモリアドレス空間の位置へのアクセスを指定してもよい。他のパラメータは、USBポート118に結合されたUSBバス上のグラフィックスカード106のバス112、120の中の1つにあるI/Oアドレス空間の位置或いはシステム10の他の位置を指定してもよい。要求リソース、待ち行列204に既にある要求、及びスケジューラ・デバイスドライバ240によって検索されるようなテーブル或いはテーブルセグメント202に指定されたチャネル割当てに基づいて、スケジューラ・デバイスドライバ232は、要求がある程度妥当な方法で処理されてよいかどうかを決定することができる。これは、システム10に予めプログラム化され、起動ルーチン(例えば、基本入出力システム或いはBIOSルーチン)によってロードされる基準に従って規定されてもよい。スケジューラ232は、システムの種々のスレッドの呼び出し時間要求及び帯域幅要求を認識している。呼び出し時間要件及び帯域幅要件は、十分なリソースがスレッド要求を満たすために利用可能であるかどうかを決定するためにスケジューラ232によって使用されてもよい。 The scheduler 232 can determine what system resources are required by the request by examining the request parameters, such as the request itself and the parameters of the API call. For example, the parameter may specify access to a location in the memory address space of the system memory 104. Other parameters may specify the location of the I / O address space on one of the buses 112, 120 of the graphics card 106 on the USB bus coupled to the USB port 118 or other location of the system 10. Good. Based on the requested resources, the requests already in the queue 204, and the channel assignment specified in the table or table segment 202 as retrieved by the scheduler device driver 240, the scheduler device driver 232 may determine that the request is reasonably reasonable. It can be determined whether the method can be processed. This may be defined according to criteria pre-programmed into the system 10 and loaded by a startup routine (eg, basic input / output system or BIOS routine). The scheduler 232 is aware of the call time and bandwidth requirements of the various threads of the system. Call time requirements and bandwidth requirements may be used by scheduler 232 to determine whether sufficient resources are available to satisfy a thread request.
一例として、スレッドは、グラフィックスカード106のビデオメモリからのビデオデータのフレームをシステムメモリ104に転送する要求を出してもよい。フレームサイズ(例えば、720×480ピクセル)及び各ピクセルに対して規定された多数のビットが与えられると、ビデオ転送の帯域幅要求は、転送が発生しなければならない特定の時間に基づいて決定されてもよい。さらに、転送要求の呼び出し時間は既知であってよい。帯域幅及び呼び出し時間情報に基づいて、及び未だ実行されていないリソースに対する未実行の要求に基づいて、スケジューラ232は、ビデオ転送要求が利用可能なリソースによって処理できるかどうかを決定することができる。処理できない場合には、スレッドはスケジューラ232によって知らされ、スレッドは、他の要求を出す前に或いは要求をいくつかの部分に分割する前に待機することを含む多数の方法の1つで応答してよい。 As an example, the thread may issue a request to transfer a frame of video data from the video memory of graphics card 106 to system memory 104. Given a frame size (eg, 720 × 480 pixels) and a number of bits defined for each pixel, the bandwidth requirement for video transfer is determined based on the specific time that the transfer must occur. May be. Further, the call time for the transfer request may be known. Based on the bandwidth and ring time information, and based on outstanding requests for resources that have not yet been executed, the scheduler 232 can determine whether the video transfer request can be processed by the available resources. If not, the thread is informed by the scheduler 232 and the thread responds in one of a number of ways, including waiting before issuing another request or splitting the request into parts. It's okay.
図5に示すように、システム初期化は、実施形態によるシステムBIOSルーチンによって実行される。システムリセットによりシステムハードウェアが初期状態にされた後に、CPU100は、システム10の構成要素を既知の状態に初期設定し、使用するオペレーティングシステム(OS)220のためのシステム構成情報を構成する責務を持つBIOSの電源オン自己試験(POST)手順の命令を実行し始める。いくつかの初期化タスクがシステム10で(ステップ602において)実行され、BIOSルーチンは、次に、システムメモリ104或いは他の適当な記憶ロケーションを(ステップ604において)設定し、チャネル割当てテーブル或いはテーブルセグメント202を記憶する。BIOSルーチンは、各チャネルに対する基本クロック数(例えば、チャネル毎に1クロック或いは数クロック)及びスケジュールサイクル400の全幅を指定してもよい。特定のメモリアドレスは、テーブル或いはテーブルセグメント202を記憶するために予約されていてもよい。さらに規準は、スレッド要求を受諾するか或いは拒否するかどうかを決定する際に、スケジューラ232によって使用するために指定されてもよい。 As shown in FIG. 5, system initialization is performed by a system BIOS routine according to an embodiment. After the system hardware is initialized by a system reset, the CPU 100 is responsible for initializing the components of the system 10 to a known state and configuring system configuration information for the operating system (OS) 220 to be used. Start executing instructions of the BIOS power on self test (POST) procedure. Several initialization tasks are performed in the system 10 (in step 602) and the BIOS routine then sets up the system memory 104 or other suitable storage location (in step 604) to create a channel assignment table or table segment. 202 is stored. The BIOS routine may specify the number of basic clocks for each channel (eg, one or several clocks per channel) and the full width of the schedule cycle 400. A particular memory address may be reserved for storing a table or table segment 202. Furthermore, criteria may be specified for use by scheduler 232 in determining whether to accept or reject a thread request.
次に、デフォルトチャネル割当ては、(ステップ606において)テーブルにロードされてもよい。例えば、オペレーティングシステム(OS)に関連した所定のスレッド(例えば、スケジューラ及び他のシステム管理レイヤ)は、サイクル400でウィンドウに割当てられる。さらに、BIOSは、特定のウィンドウに割り当てられないスレッド要求を処理するために所定数のチャネルを有するデフォルトウィンドウを設定してもよい。BIOSは、プロセッサがマルチ処理システムである場合に利用可能なプロセッサの型式を決定するシステムの構成空間及び他の情報をポーリングできる。この情報から、BIOSはシステムの通信処理能力を決定できる。このような決定された通信処理能力に基づいて、BIOSは、それに応じてデフォルトウィンドウのチャネル数を割当てることができる。次に、システム構成要素は、(ステップ608において)BIOSルーチンによって初期化され、構成される。次に、オペレーティングシステム(OS)220は(ステップ610において)ブート(起動)される。 The default channel assignment may then be loaded into the table (in step 606). For example, certain threads (eg, schedulers and other system management layers) associated with the operating system (OS) are assigned to windows at cycle 400. In addition, the BIOS may set a default window with a predetermined number of channels to handle thread requests that are not assigned to a particular window. The BIOS can poll the system configuration space and other information that determines the type of processor available when the processor is a multi-processing system. From this information, the BIOS can determine the communication processing capability of the system. Based on such determined communication throughput, the BIOS can allocate the default window channel number accordingly. Next, the system components are initialized and configured by the BIOS routine (at step 608). Next, the operating system (OS) 220 is booted (in step 610).
図6に示すように、オペレーティングシステム(OS)220がブートされた後に、オペレーティングシステム(OS)220は、(ステップ650において)システム10におけるいくつかのアクティブスレッドを識別する。オペレーティングシステム(OS)220は、(ステップ652において)システム10のリソースに対するその帯域幅要求及び呼び出し時間要求に対する各スレッドを照会する。いくつかのスレッドは、どのような呼び出し時間要求及び帯域幅要求が各システムリソースに対してあるかを認識している。例えば、マルチメディアプロセスに関連したスレッドは、データ転送に対する比較的小さい呼び出し時間を許容できる、高いデータ転送スループットを必要とする「実時間」要求を有してもよい。他のスレッドは、より高い呼び出し時間、及び、より低いデータ転送帯域幅を許容することができるものであってよい。アクティブスレッドからの異なる呼び出し時間要求及び帯域幅要求の比較に基づいて、異なるスレッドに対応する異なる要求ウィンドウ402iを割当てるいくつかのチャネルは、より低い呼び出し時間及びより高い帯域幅を有するスレッドを促進するためにオペレーティングシステム(OS)によって(ステップ654において)セットされてもよい。結果として、これらの種類のスレッドは、多数のチャネル及び多分複数のウィンドウ402iを割当てられてもよい。多数の割当てられたウィンドウ402iは、スケジューリングサイクル400で連続してもよいし或いは分散されてもよい。スレッドが、システムリソースに対する呼び出し時間及び帯域幅情報を供給しない場合には、このスレッドは、テーブル或いはテーブルセグメント202のスケジューリングサイクル400でデフォルトウィンドウ402iに割当てられてもよい。 As shown in FIG. 6, after the operating system (OS) 220 is booted, the operating system (OS) 220 identifies (at step 650) a number of active threads in the system 10. The operating system (OS) 220 queries (at step 652) each thread for its bandwidth request and call time request for resources of the system 10. Some threads know what call time and bandwidth requirements are for each system resource. For example, a thread associated with a multimedia process may have “real time” requests that require high data transfer throughput that can tolerate relatively small call times for data transfer. Other threads may be able to tolerate higher call times and lower data transfer bandwidth. Based on a comparison of different call time requests and bandwidth requests from active threads, several channels that allocate different request windows 402 i corresponding to different threads facilitate threads with lower call times and higher bandwidth May be set by the operating system (OS) (in step 654). As a result, these types of threads may be assigned multiple channels and possibly multiple windows 402 i . A number of assigned windows 402 i may be continuous in a scheduling cycle 400 or may be distributed. If a thread does not provide call time and bandwidth information for system resources, this thread may be assigned to the default window 402 i in the scheduling cycle 400 of the table or table segment 202.
算定された数のチャネルに基づいて、テーブル或いはテーブルセグメント202は、スレッドIDに従ってチャネル割当てで(ステップ656において)ロードされてもよい。 Based on the calculated number of channels, the table or table segment 202 may be loaded with channel assignments (at step 656) according to thread ID.
従って、いくつかの実施形態によれば、スケジューリング方式は、データフロー要求がリソースの利用可能度及びチャネル割当てに基づいて満たされてもよいかどうかを決定することによって、システムのスレッドからの要求をスケジュール(スケジューリング)する。リソースの利用可能度は、ハードウェア要求によってシステムのスケジューラに示される。さらに、要求の種類及び要求パラメータに基づいて、スケジューラは、どのようなリソースが特定の要求によって必要とされるかを決定することができる。 Thus, according to some embodiments, a scheduling scheme may request a request from a system thread by determining whether a data flow request may be satisfied based on resource availability and channel allocation. Schedule (schedule). Resource availability is indicated to the system scheduler by hardware requirements. Further, based on the request type and request parameters, the scheduler can determine what resources are required by a particular request.
他の実施形態は、上記の特許請求の範囲内にある。例えば、異なるオペレーティングシステムの場合には、システムにおけるワーク或いは実行エンティティの基本ユニットは、スレッドでなくてもよくプロセス或いは他の規定ユニットであってもよい。さらに、システムのハードウェア構成要素は異なって構成されてもよい。ソフトウェア或いは図示のファームウェアモジュール或いはレイヤによって実行された動作は、変更されてもよい。 Other embodiments are within the scope of the above claims. For example, in the case of different operating systems, the basic unit of work or execution entity in the system may not be a thread but may be a process or other defined unit. Furthermore, the hardware components of the system may be configured differently. Operations performed by software or illustrated firmware modules or layers may be altered.
本発明は、限られた数の実施形態に関して開示されているが、当業者は、それらからの多数の修正及び変更を理解するであろう。添付された特許請求の範囲が本発明の真の精神及び範囲内にあるような全ての修正及び変更を含むことが意図される。 Although the present invention has been disclosed with respect to a limited number of embodiments, those skilled in the art will appreciate numerous modifications and variations therefrom. It is intended that the appended claims cover all modifications and changes as fall within the true spirit and scope of the invention.
Claims (20)
前記リソースに要求を出すように構成される実行エンティティと、
各実行エンティティからの前記リソースに対する要求に関連するスロット割当てを含む記憶ロケーションと、
前記リソースに結合され、かつ、前記記憶ロケーションにアクセスし、前記スロット割当てに従って前記実行エンティティから前記リソースに対する要求を処理するように構成されるコントローラと
をそれぞれ備えることを特徴するシステム。 Resources and
An execution entity configured to issue a request to the resource;
A storage location including slot assignments associated with requests for the resource from each executing entity;
A controller coupled to the resource and configured to access the storage location and to process a request for the resource from the execution entity according to the slot assignment.
前記オペレーティングシステムによって更新可能であり、その割当てられたチャネルの期間中にシステムリソースにアクセスできる実行装置の前記リソース使用要求に基づいて、チャネルを前記実行装置に割当てる記憶ロケーションと
を含むことを特徴とする請求項1に記載のシステム。 An operating system that cooperates with the execution unit to determine resource usage requests;
A storage location that allocates a channel to the execution unit based on the resource usage request of the execution unit that is updatable by the operating system and has access to system resources during the allocated channel. The system according to claim 1.
システムリソースのための前記実行装置のデータフロー情報を決定し、
前記データフロー情報に基づいて、前記システムリソースへのアクセスのためにタイムスロットを前記実行装置に割当て、
前記割当てられたタイムスロットに基づいて、コントローラをプログラミングすることを含み、かつ前記コントローラが、現在どのタイムスロットがアクティブであるかという情報及び前記タイムスロット割当てに基づいて、前記システムリソースのための要求を処理する
ことを特徴とする方法。 A method for scheduling requests from execution devices in a system, comprising:
Determining data flow information of the execution unit for system resources;
Based on the data flow information, assigning a time slot to the execution unit for access to the system resources;
Programming a controller based on the assigned time slot, and the controller requests for the system resources based on information about which time slot is currently active and the time slot assignment. A method characterized by processing.
前記命令に基づいてプロセッサが、
システムリソースへのアクセスを含む実行エンティティから第1の要求を受信し、
前記システムリソースのための所定の他の未実行の要求が処理されたかどうかを決定するために、前記システムリソースに結合されたコントローラにアクセスし、かつ
前記システムリソースが前記第1の要求に対して利用可能であるかどうかを決する、
ことを特徴とする装置。 An apparatus having a storage medium containing instructions for scheduling requests from execution entities,
Based on the instructions, a processor
Receiving a first request from an execution entity including access to system resources;
Accessing a controller coupled to the system resource to determine whether a predetermined other outstanding request for the system resource has been processed, and the system resource is in response to the first request Determine if it is available,
A device characterized by that.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US18861498A | 1998-11-09 | 1998-11-09 |
Related Parent Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2000581535A Division JP2002529850A (en) | 1998-11-09 | 1999-08-26 | Scheduling requests in the system |
Related Child Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2010224970A Division JP2011044165A (en) | 1998-11-09 | 2010-10-04 | Scheduling of request in system |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2010044784A true JP2010044784A (en) | 2010-02-25 |
Family
ID=22693875
Family Applications (3)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2000581535A Pending JP2002529850A (en) | 1998-11-09 | 1999-08-26 | Scheduling requests in the system |
| JP2009237427A Pending JP2010044784A (en) | 1998-11-09 | 2009-10-14 | Scheduling request in system |
| JP2010224970A Pending JP2011044165A (en) | 1998-11-09 | 2010-10-04 | Scheduling of request in system |
Family Applications Before (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2000581535A Pending JP2002529850A (en) | 1998-11-09 | 1999-08-26 | Scheduling requests in the system |
Family Applications After (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2010224970A Pending JP2011044165A (en) | 1998-11-09 | 2010-10-04 | Scheduling of request in system |
Country Status (6)
| Country | Link |
|---|---|
| JP (3) | JP2002529850A (en) |
| AU (1) | AU5902299A (en) |
| DE (1) | DE19983709B4 (en) |
| GB (1) | GB2358939B (en) |
| TW (1) | TW511034B (en) |
| WO (1) | WO2000028418A1 (en) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20190132097A (en) * | 2018-05-18 | 2019-11-27 | 강원대학교산학협력단 | Method and apparatus of real-time scheduling for industrial robot system |
Families Citing this family (11)
| 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 disks to control access to memory banks |
| US8255615B1 (en) | 2009-01-08 | 2012-08-28 | Marvell International Ltd. | Flexible sequence design architecture for solid state memory controller |
| DE102009016742B4 (en) | 2009-04-09 | 2011-03-10 | Technische Universität Braunschweig Carolo-Wilhelmina | Multiprocessor computer system |
| CN101667159B (en) | 2009-09-15 | 2012-06-27 | 威盛电子股份有限公司 | Cache system and method for transmitting requested blocks |
| WO2012087971A2 (en) | 2010-12-20 | 2012-06-28 | Marvell World Trade Ltd. | Descriptor scheduler |
| DE102011013833B4 (en) * | 2011-03-14 | 2014-05-15 | Continental Automotive Gmbh | display device |
| HUE062361T2 (en) | 2021-03-15 | 2023-10-28 | Procter & Gamble | Detergent product container with lock and transversal wall |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH07504071A (en) * | 1991-12-23 | 1995-04-27 | ネットワーク・エクスプレス・インコーポレイテッド | System for internetworking data terminal equipment via switched digital networks |
| JPH1093924A (en) * | 1996-08-08 | 1998-04-10 | Shinekkus Inf Technol Inc | System and method for distributing digital data on demand |
| WO1998020425A2 (en) * | 1996-11-06 | 1998-05-14 | Motorola Inc. | A method for determining the number of accesses granted during wcl and apparatus |
| US5809261A (en) * | 1995-11-20 | 1998-09-15 | Advanced Micro Devices, Inc. | System and method for transferring data streams simultaneously on multiple buses in a computer system |
| JP2002529850A (en) * | 1998-11-09 | 2002-09-10 | インテル コーポレイション | Scheduling requests in the system |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| 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 |
| DE69738832D1 (en) * | 1996-03-28 | 2008-08-28 | Hitachi Ltd | Method for planning periodical processes |
| JP2904483B2 (en) * | 1996-03-28 | 1999-06-14 | 株式会社日立製作所 | Scheduling a periodic process |
| US5826082A (en) * | 1996-07-01 | 1998-10-20 | Sun Microsystems, Inc. | Method for reserving resources |
| US6567839B1 (en) * | 1997-10-23 | 2003-05-20 | International Business Machines Corporation | Thread switch control in a multithreaded processor system |
-
1999
- 1999-08-13 TW TW88113880A patent/TW511034B/en active
- 1999-08-26 AU AU59022/99A patent/AU5902299A/en not_active Abandoned
- 1999-08-26 JP JP2000581535A patent/JP2002529850A/en active Pending
- 1999-08-26 DE DE19983709T patent/DE19983709B4/en not_active Expired - Fee Related
- 1999-08-26 GB GB0109904A patent/GB2358939B/en not_active Expired - Fee Related
- 1999-08-26 WO PCT/US1999/019596 patent/WO2000028418A1/en active Application Filing
-
2009
- 2009-10-14 JP JP2009237427A patent/JP2010044784A/en active Pending
-
2010
- 2010-10-04 JP JP2010224970A patent/JP2011044165A/en active Pending
Patent Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH07504071A (en) * | 1991-12-23 | 1995-04-27 | ネットワーク・エクスプレス・インコーポレイテッド | System for internetworking data terminal equipment via switched digital networks |
| US5809261A (en) * | 1995-11-20 | 1998-09-15 | Advanced Micro Devices, Inc. | System and method for transferring data streams simultaneously on multiple buses in a computer system |
| JPH1093924A (en) * | 1996-08-08 | 1998-04-10 | Shinekkus Inf Technol Inc | System and method for distributing digital data on demand |
| WO1998020425A2 (en) * | 1996-11-06 | 1998-05-14 | Motorola Inc. | A method for determining the number of accesses granted during wcl and apparatus |
| JP2000509858A (en) * | 1996-11-06 | 2000-08-02 | モトローラ・インコーポレイテッド | Method and apparatus for determining the number of accesses allowed during WCL |
| JP2002529850A (en) * | 1998-11-09 | 2002-09-10 | インテル コーポレイション | Scheduling requests in the system |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20190132097A (en) * | 2018-05-18 | 2019-11-27 | 강원대학교산학협력단 | Method and apparatus of real-time scheduling for industrial robot system |
| KR102149171B1 (en) * | 2018-05-18 | 2020-08-28 | 강원대학교산학협력단 | Method and apparatus of real-time scheduling for industrial robot system |
Also Published As
| Publication number | Publication date |
|---|---|
| GB0109904D0 (en) | 2001-06-13 |
| TW511034B (en) | 2002-11-21 |
| DE19983709T1 (en) | 2002-02-14 |
| WO2000028418A1 (en) | 2000-05-18 |
| DE19983709B4 (en) | 2007-02-22 |
| JP2011044165A (en) | 2011-03-03 |
| GB2358939A (en) | 2001-08-08 |
| HK1036860A1 (en) | 2002-01-18 |
| AU5902299A (en) | 2000-05-29 |
| JP2002529850A (en) | 2002-09-10 |
| GB2358939B (en) | 2003-07-02 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2010044784A (en) | Scheduling request in system | |
| RU2530345C2 (en) | Scheduler instances in process | |
| KR100628492B1 (en) | Method and system for performing real-time operation | |
| CN100594487C (en) | Dispatching method and real-time processing system | |
| JP4606142B2 (en) | Scheduling method, scheduling apparatus, and multiprocessor system | |
| TWI292127B (en) | Method, apparatus and program product of dynamically allocating computer resources in a multithreaded computer | |
| US8087020B2 (en) | Method and system for performing real-time operation | |
| EP1341083A2 (en) | Parallel-process execution method and multiprocessor-type computer | |
| US20030056091A1 (en) | Method of scheduling in a reconfigurable hardware architecture with multiple hardware configurations | |
| US20080201561A1 (en) | Multi-threaded parallel processor methods and apparatus | |
| US20020095565A1 (en) | Interstream control and communications for multi-streaming digital processors | |
| JP2017204307A (en) | Systems and methods of using hypervisor with guest operating systems and virtual processors | |
| JP2005536791A (en) | Dynamic multilevel task management method and apparatus | |
| US20080046621A1 (en) | Information Processing Apparatus, Interrupt Process Control Method, and Computer Program | |
| US9529625B2 (en) | Method and system for providing stack memory management in real-time operating systems | |
| JP2006099332A (en) | Information processor, process control method and computer program | |
| US10635497B2 (en) | Method and apparatus for job pre-scheduling by distributed job manager in a digital multi-processor system | |
| CN109426562B (en) | priority weighted round robin scheduler | |
| CN110968418B (en) | Scheduling method and device for large-scale constrained concurrent tasks based on signals and slots | |
| JP5243822B2 (en) | Workload management in a virtualized data processing environment | |
| JPH11175357A (en) | Task management method | |
| JPH11249917A (en) | Parallel computers, their batch processing method, and storage medium | |
| CN120669908A (en) | Data interaction method and device, storage medium and electronic equipment | |
| JP2003280932A (en) | Functional system, functional system management method, data processing device and computer program | |
| JP3591883B2 (en) | Computer, its system and its control method |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100219 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100513 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20100604 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20101004 |