JP5789072B2 - マルチコアアーキテクチャにおけるリソース管理 - Google Patents

マルチコアアーキテクチャにおけるリソース管理 Download PDF

Info

Publication number
JP5789072B2
JP5789072B2 JP2007505624A JP2007505624A JP5789072B2 JP 5789072 B2 JP5789072 B2 JP 5789072B2 JP 2007505624 A JP2007505624 A JP 2007505624A JP 2007505624 A JP2007505624 A JP 2007505624A JP 5789072 B2 JP5789072 B2 JP 5789072B2
Authority
JP
Japan
Prior art keywords
controller
processor
thread
manager
core processor
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.)
Active
Application number
JP2007505624A
Other languages
English (en)
Other versions
JP2007531137A (ja
Inventor
マーク, デイヴィッド リペット,
マーク, デイヴィッド リペット,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Synopsys Inc
Original Assignee
Synopsys Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Synopsys Inc filed Critical Synopsys Inc
Publication of JP2007531137A publication Critical patent/JP2007531137A/ja
Application granted granted Critical
Publication of JP5789072B2 publication Critical patent/JP5789072B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Computing Systems (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)

Description

本発明は、マルチコアアーキテクチャにおけるリソース管理の方法および装置に関する。
今日、複雑な異種混合マルチコアアーキテクチャを組み込んだ半導体デバイスが、ユビキタスなデスクトップコンピュータから、携帯電話機、携帯情報端末、高速電気通信/ネットワーク交換装置などといった最新型の電子機器に至るまで、多種多様なシステムおよび機器で利用されている。
任意のコンピュータプロセッサの使用目的がどのようなものであれ、プロセッサ製造者は、現在のプロセッサの性能を高めると同時に、それらの単位「コスト」を維持し、または低減しようと努力し続ける。
プロセッサの「コスト」は、様々なパラメータを使って評価され得る。多くの場合、コストは、純粋に、金銭的コストであるが、多くの適用分野、特に組み込み式プロセッサ市場において、コスト計算は、電力消費、冷却要件、効率、商品化に要する時間などの付随的考慮事項も含む。
任意のプロセッサが有用な機能を果たす絶対的能力は、達成可能なMIPS(100万命令/秒)比として特徴付けることができ、よって、任意のプロセッサの「価格/性能」比は、例えば、MIPS/mm、MIPS/$、あるいはMIPS/mWなどによって特徴付けることができる。
しかしながら、実際には、すべての命令が同量の有用な作業を達成するとは限らず、したがって、「純粋な」MIPS評価は、容易に比較することができない。よって、ディジタル信号プロセッサ(DSP)は、携帯電話機の無線インターフェースの近くにおける数学的な集中処理の解決には適しているが、その電話機の画面上で実行されるWebブラウザの実行においては極めて効率が悪い。事実上、これは、プロセッサが、「アプリケーション利用可能」価格/性能の観点からの方がより有効に分類され得ることを意味している。
しかも、プロセッサを制御し、カスタマイズして個々のアプリケーションを実施するのに使用されなければならないプログラミング、すなわちソフトウェアツールの非効率性によって、有効性能のさらなる低下が引き起こされ得る。よって、個々のアプリケーションのためにプロセッサから抽出され得る最終的な性能レベルは、使用可能な、または「達成可能なアプリケーション利用可能」価格/性能のレベルとみなされ得る。
半導体企業による、プロセッサのアプリケーション利用可能価格/性能を改善しようとする取り組みにおいて、新しいクラスのプロセッサ、すなわち、マルチコアデバイスが開発されている。マルチコアデバイスは、プロセッサによって実行され得るアプリケーションの特定の態様での最大レベルの有効価格/性能比を提供するために、それぞれが高度に特化されていてもよい、様々な要素(コア)から構築される高度に集積されたプロセッサである。そのようなデバイスは、「異種混合」、すなわち複数の、異種のコアを組み込んだものとすることも、「同種」、すなわち複数の類似のコアを組み込んだものとすることもできる。
また、ほとんどのマルチコアデバイスは、システムオンチップ(SoC)デバイスとして分類することができる。というのは、その集積が、複数のプロセッシングコアのみならず、任意の個別製品のハードウェア要件の(全部ではないにしろ)大部分を処理するのに必要とされるメモリ、入出力およびその他のシステム(コア)も含むからである。すべてのSoCデバイスが複数のプロセッシングコアを有するとは限らないが、複数のコアとSoCという用語は、しばしば、互いに入れ替えて使用される。マルチコアSoCの好例を多くの携帯電話機に見ることができ、それらには、無線インターフェースを実行するための1つ以上のDSPを含む単一のプロセッサと、電話機でユーザアプリケーションを実行するための汎用プロセッサが搭載されている。
マルチコアデバイスの出現は、ムーアの法則によって可能となったものであり、この法則によれば、シリコンの任意の所与の面積に組み込まれ得るトランジスタの数は、製造工程の改善により18ヶ月ごとに倍増することになる。したがって、ムーアの法則は、シリコンダイ上の任意の所与の面積により多くの個別トランジスタを組み込むことを可能にし、単一のシリコン片上により一層複雑なデバイスを製作することを、技術的にも経済的にも実行可能にする。同様に、各トランジスタのサイズを縮小することにより、トランジスタは、より一層高速で切り換わることができる。
従来、ムーアの法則は、基礎となるアーキテクチャに大きな変更を加えずに、より高速な、または使用されるシリコンの点でより費用対効果の高い、より小型の新世代プロセッサを製作するのに使用された(すなわち、改善は、デバイスの論理的マクロアーキテクチャの改善ではなく、製造工程およびデバイスの物理的マイクロアーキテクチャの改善であった)。
事実上、マルチコア/SoCプロセッサに向かう傾向は、より高レベルの集積へのマクロアーキテクチャ的移行とみなすことができ、これは、まず、シリコンダイ自体への入出力(通信)機能の導入から始まった。今や、入出力、メモリ、および複数の処理装置、DSPおよびコプロセッサの機能を同じシリコンダイ上に集積することができる。これらのプロセッサは、個々のアプリケーションクラスに最低コストで、最高性能のプロセッサを提供することによって、最終製品の製造コストを低減するはずである。また、システム構成部品の大部分を単一プロセッサ上に集積することにより、部品点数も削減され、したがって、信頼性を高め、電力消費を低減することができる。
重要な問題は、可能な限り高い「アプリケーション利用可能」価格/性能を達成するために、そのようなマルチコアデバイスにおける基礎的なハードウェアの使用をどのようにして最適化し得るかである。
プロセッサおよびシステムの設計者らが、アプリケーションソフトウェア内での並列処理(アプリケーションレベルの並列処理)および命令ストリーム内での並列処理(命令レベルの並列処理)を利用することのできる多くのやり方がある。それら様々な発現では、並列処理がどこで管理されるか、および並列処理が、システムが実行しているとき/実行時に管理される(動的システム)か、それともアプリケーションソフトウェアがコンパイルされているとき/コンパイル時に管理される(静的システム)かが異なる。実際には、動的システムと静的システムおよびハードウェア集約的解決とソフトウェア集約的解決の間の区分は明確なものではなく、ある分野からの技法が、しばしば、その他の分野によって流用される。
個別プロセッシングコアレベルにおいて、単一ストリームからの並列の多数命令で動作する複数発行プロセッサまたはマシンの概念は、当分野では十分に確立している。これらは、スーパースカラプロセッサと超長命令語(VLIW)プロセッサという2つの基本的種類で供給される。スーパースカラプロセッサは、実行時(動的にスケジュールされる)またはコンパイル時(静的にスケジュールされる)のどちらかに識別される、様々な数の1クロックサイクル当たりの命令を発行する。VLIWプロセッサは、コンパイラによって定義されるように、非常に長い命令語を形成する固定数の命令を発行する。通常、プログラマは、このプロセスに全く気付かない。というのは、システムのプログラミングモデルが、標準的なシングルプロセッサ抽象化であるからである。
スーパースレッディングとハイパースレッディングは、両方とも、複数の仮想プロセッサの間で複数の実行スレッドを多重化することによって複数のプロセッサをエミュレートする技術である。通常、これらの仮想プロセッサは、統計的に、単一のスレッドによって常に使用されるとは限らないはずのいくつかのリソースを共用する。スーパスレッディングアーキテクチャおよびハイパースレッディングアーキテクチャは、複数の独立のプロセッサの役割を演じ、したがって、効率よく働くために、あるレベルのアプリケーション並列処理が存在することを必要とする。通常、プロセッサコアのハードウェア制約条件により、サポートされ得るスレッド数が、実質上100未満に制限される。
さらに、多くのアプリケーションにおける固有の並列処理の利用では、いくつかのシステムアーキテクチャ上の選択肢が存在する。各プロセッサが、なんらかの共用リソース(例えば、メモリおよび/または相互接続など)を介してそのピアと協働しながら、独自の命令を実行し、独自のデータセットに基づいて動作する多重命令多重データ(MIMD)マシンは、それらが多種多様なアプリケーションに対処することができるために普及している。
性能需要が高まるにつれて、組み込みシステムは、ますます、複数の異種または同種の処理リソースを使用する、マルチコアMIMDアーキテクチャを利用して、必要なレベルのシリコン効率を提供するようになってきている。通常、これらは、集中型共用メモリアーキテクチャと呼ばれるMIMDマシンのクラスであり、複数の処理リソース間で単一のアドレス空間(またはその一部)が共用されるが、よりアプリケーション特有のハイブリッドアーキテクチャもよく見られる。
MIMDアレイの各処理リソースは、命令レベルの並列処理(ILP)を利用することができるが、MIMDマシンは、スレッドレベルの並列処理(TLP)を利用して、基礎となるハードウェアの潜在的性能を実現することもできる。実行時に(特定のハードウェアによって)、またはコンパイル時に(コンパイルツールを最適化することによって)識別されるILPに対して、TLPは、アプリケーション設計時に高水準プログラミングソフトウェア内で定義される。
スレッディングは、長年にわたり、ソフトウェア業界内で、並列処理の高レベル表現として使用されてきた概念である。スレッドとは、定義上、他のスレッドと同時に実行され得る実行状態、命令ストリームおよびデータセットを含む自律的作業パッケージを定義するものである。命令ストリームの複雑度は重要ではない。スレッドは、単純なデータ転送から複雑な数学的変換に至るまで何でも記述することができる。
従来から、オペレーティングシステムは、ソフトウェア技術者が基礎となるデバイスアーキテクチャを詳細に理解することを必要とせずにマルチコアアーキテクチャのある一定の構成上でアプリケーションが実行されることを可能にするスレッド割り振り機能を含めて、システム管理の提供を支援している。しかしながら、ユニコアデバイス内のスレッド管理のための既存のソフトウェア技術は、マルチコアアーキテクチャに一貫して容易に適合することができない。これまでの解決策は、設計ごとにカスタマイズされた解決策を必要とする、専用のものであり、通常は、性能および拡張性を損なうものであった。
従来、異種混合マルチコアシステム(すなわち、ほぼ異種の処理リソースを有するシステム)の場合には、多種多様な手法を用いて異なる処理リソースが協働することを可能にしている。しかしながら、これらは、大まかに、「プロキシホスト」と「連携」(「ピアツーピア」ともいう)という2つのカテゴリに分けられる。前者の場合、指定された汎用ホストプロセッサ(バスベースのシステムでは、しばしば、CPUと呼ばれる)は、システム全体を統括し、システム全体のタスクを仲介し、メモリやデバイスなどのリソースへのアクセスを同期させる。そのようなシステム統括管理は、通常、オペレーティングシステムのカーネルで操作され、システムアプリケーションおよびホストプロセッサ上の非同期イベントの処理とタイムスライスを求めて競合する。言い換えると、この汎用プロセッサは、マルチコアデバイス上のすべての処理リソースのための集中型プロキシスレッドマネージャとして働くと共に、主要なアプリケーションプロセッサとしても働かなければならない。
この構成で使用されるとき、汎用プロセッサは、事前設定のスケジューリングポリシに応じた各処理リソースごとの実行可能なスレッドの待ち行列、すなわち、スレッドの優先度(すなわちディスパッチまたは作動可能待ち行列)、ならびに、スレッド自体が実行され始める前に、何らかのイベント、または別のスレッドの結果を待ち受けるスレッドの待ち行列(すなわち保留およびタイミング待ち行列)を維持しなければならない。これらが、スレッド実行前のプロセッサ構成など、他のシステムオーバーヘッドに加えられる。
汎用プロセッサが、例えば、スレッドの完了のために発行された割り込み(したがって、そのスレッドを完了したばかりの処理リソースの解放)の結果として、その処理時間を、プロセッサが現在実行しているスレッドから、(スレッド管理を含む)システムの管理に転じるときにはいつでも、汎用プロセッサは、コンテキスト変更を行わなければならない。
コンテキスト変更には、休止されるスレッドの現在の進捗状況をメモリに格納し、その他のスレッド/処理リソースのサービス提供のための管理ルーチンに関連する命令をフェッチし、次いで、任意の構成要件を含めてそれらの命令を実行することを伴う。元の、休止されたスレッドに戻るには、さらなるコンテキスト変更が実行されなければならない。これらのコンテキスト変更は、通常、割り込みを受け取り時に実行され、組み込みシステムでは、これらの割り込みが、汎用プロセッサ上で実行中のアプリケーションコードにとって、頻繁、かつ非同期的であることがしばしばある。したがって、システム全体として、著しい性能劣化を呈する。また、コンテキスト切換えは、ホストプロセッサキャッシュに悪影響を及ぼす(いわゆる「コールドキャッシュ」効果)。
連携システムの場合、各処理リソースは、オペレーティングシステムの別々のインスタンスを実行し、その一部が、リソース間通信を可能にする。したがって、そのような構成は、ピア間の割り込みの特定の経路指定の結果として、比較的厳格なアーキテクチャ上の区分化を有する。この種のシステムは、アプリケーションを生成するのに必要なプリミティブを提供するが、実施性能は、依然として、オペレーティングシステムのカーネルアクティビティに関連付する頻繁なコンテキスト切換えによって損なわれる。
要約すると、従来のアーキテクチャ(汎用プロセッサ、ソフトウェアエグゼクティブなど)でのシステム管理実現の現在の設計および方法は、複雑な異種混合マルチコアアーキテクチャのシステムおよびスレッド管理には適さない。実際、汎用プロセッサは、マイクロ(命令セット)アーキテクチャレベルでも、マクロ(キャッシュ、レジスタファイル管理)アーキテクチャレベルでも、十分に最適化されない。マルチコアプロセッサの相互接続は、別々の処理リソース間の相互運用のための物理的媒体を提供するが、システム管理の一貫性した手法を可能にする、すべての処理リソース間で共用される、システム規模のタスク管理通信層がない。最悪の場合、これは、従来から、それぞれが、随時、ソフトウェアにおいて別々に解決されなければならない、あらゆる処理リソース間のあらゆる可能な通信チャネルに関連付けられる明確な問題をもたらしかねない。
よって、これらの非常に複雑なマルチコアアーキテクチャの効率的なシステム管理の方法が求められている。ソフトウェア抽象化だけでは、複雑なマルチコアアーキテクチャの必要なレベルの性能を提供することができない。
発明の概要
本発明の第1の態様によれば、請求項1で定義されるマルチコアプロセッサのリソース管理/タスク割り振りコントローラが提供される。
好ましい実施形態では、請求項1のコントローラは、リソース管理およびタスク割り振り専用であり、それ以上の処理リソースを提供しない。
本発明の実施形態において、「従来の」マスタ処理装置(すなわち、本発明のリソース管理/タスク割り振りコントローラがない場合に、タスク割り振りを実行すると共に、利用可能な処理リソースの1つとしても働くはずの一般的な処理リソース)は、システムの電源投入時にマスタとして始動することができ、リソース管理/タスク割り振りコントローラは、初期設定シーケンスの間のMPUからマスタステータスを引き受ける。
また、本発明の実施形態は、通常は、個々のタスクを処理する際の使用で無視されるはずの処理リソースへのタスクの割り振りを可能にする異種混合マルチコアプロセッサの機能も提供する。そのようにして、本発明のコントローラは、利用可能なリソースのより効率のよい使用を可能にする。
別個のリソース管理/タスク割り振りコントローラを設けることによって、本発明は、マルチコアプロセッサのための改善されたタスク割り振り/管理システムを提供し、利用可能な処理リソース間でのより効率のよいタスク割り振りを可能にする。コントローラは、システム管理および例外処理の要素を、専用の、効率のよい、ハードコードされた実施形態に抽象化する。
本発明の実施形態は、「プロキシエージェント」の役割を強制するのではなく、コントローラと共にコントローラクライアントを用いる。コントローラクライアントは、ハードウェアまたはソフトウェアとして実施され得る。そのような構成は、基礎となるシステムの「実行時」アクティビティを効率よく制御する。特に、コントローラは、事前定義された割り振りパラメータの範囲に基づいて、システムスレッドの状態およびスケジューリング決定の正確さを絶えず(「貪欲に」)維持する。
したがって、好ましい実施形態のアーキテクチャは、複雑度を問わずに、構成コンポーネント間の作業分配、および個々の処理リソースの自律性の点で、大きなメリットを提供する。すべての処理リソースが、デフォルトでは「怠惰」であるスレーブデバイスになる。すなわち、好ましい実施形態では、専用の割り込みを介して、リソース管理/タスク割り振りコントローラによってタスクを実行するよう明示的に指示されるのを待つ。同様に、他の実施形態では、リソース管理/タスク割り振りコントローラと処理リソースの間で、ポーリングベースの通信が使用されてもよい。
本発明のコントローラを用いるシステムでは、アーキテクチャ外部から引き起こされるすべての非同期イベントは、直接ピンを介してであれ、間接的に処理リソースの1つ(すなわち入出力装置)の外部操作によってであれ、好ましくは、コントローラに経路指定され、そこで、「ブート時」に構成された1組のスケジューリングポリシを使って、ターゲット処理リソース上で現在実行されているタスクと比較される。処理リソースは、外部イベントに関連付けられた割り込みサービススレッド(IST)が、現在実行中のトランザクション(スレッドまたはタスク)を統括する場合に限って割り込まれ、それによって、当分野で問題であった、任意の処理リソースにおける不必要なコンテキスト切換えを未然に防ぐ。さらに、好ましい実施形態のコントローラクライアントは、任意の複雑度の処理リソースが、共用リソースおよびコントローラ自体で基本的なシステム管理操作を行う(スレッドを作成する、同期プリミティブを発行する、スレッドを削除する、メモリコピーなど)ことを可能にし、命令セットベースのマシンが、これらのタスクをプロキシによって実行する必要を回避する。
本発明のさらなる態様では、そのようなコントローラを備えるマルチコアプロセッサが提供される。
また、本発明は、請求項40で定義される、マルチコアプロセッサ内のリソースを制御し、割り振る方法にも適用される。
添付の従属請求項には、さらなる利点および特徴が定義されている。
本発明は、いくつかのやり方で実施することができ、次に、例としてあげるにすぎないが、添付の図面を参照していくつかの実施形態を説明する。
好ましい実施形態の詳細な説明
図1に、本発明の一実施形態による機構を組み込んだシステムフレームワーク10の論理図を示す。フレームワーク10は、それぞれが他の処理リソース150と同種であっても、異種であってもよく、それぞれが任意の複雑度のものとすることのできる複数の処理リソース150を備える。各処理リソースは、相互接続160を介して共用データが格納される共通のシステムメモリ140へのアクセスを共用する。当然ながら、すべてのシステムメモリ140が必ずしもすべての処理リソース150に共通であるとは限らないことが理解されるであろう。
また、システムフレームワークは、本発明の一実施形態による、集中型タスク割り振り/管理システム20も備える。集中型タスク割り振り/管理システム20は、システム管理コントローラ130と、専用の密結合メモリ190に接続された専用の密結合メモリインターフェース180とを含む。各処理リソース150は、相互接続115を介してコントローラ130にアクセスすることができる。図1の構成の実施においては、どんな特定の相互接続戦略(すなわち、コントローラ130が各処理リソース150と、またその逆方向に通信するための構成、および各処理リソース150がシステムメモリ140と通信するための構成)も必要とされないことを理解すべきである。特に、処理リソースのそれぞれが、コントローラ130と直接的または間接的に(すなわち、他の処理リソースを介して、または別のやり方で)通信することができる必要があることだけを別として、ポイントツーポイントリンク、中央システムバスまたはパイプライン型アーキテクチャでさえも等しく用いることができる。
図2に、やはり一例にすぎないが、図1の論理構成を実施するマルチコアプロセッサを示す。図2のマルチコアプロセッサは、それぞれがシステム相互接続160を介して接続された、複数の処理リソース150を用いる。システム相互接続160は、さらに、入力インターフェース100、および出力インターフェース110を介して、システム管理コントローラ130と通信する。図2の例で、システム相互接続160は、処理リソース150のそれぞれを相互に接続し、コントローラ130と接続すると共に、システムメモリ140などの共用システムリソースとも接続する従来の中央バスとして配置される。メモリ140とのインターフェースは、いくつかの現在利用可能なインターフェース技術のいずれか1つによって達成されてもよい。メモリは、例えば、静的ランダムアクセスメモリ(SRAM)や、2倍速ランダムアクセスメモリ(DDR RAM)といった、現在利用可能な中央コンピュータメモリ技術のいずれで構成されてもよい。
図2にみられるように、複数の処理リソース150のそれぞれは、中央コントローラ130から制御情報を受け取り、受け取った制御情報に従って処理リソース150を管理するように構成された、関連付けられたシステム管理コントローラクライアント120を有する。コントローラクライアント120の機能および目的は、以下で、図7および8に関連してより詳細に説明する。また、各処理リソースは、システム相互接続160を介したコントローラ130との通信のための、関連付けられた相互接続エージェント170も有する。相互接続エージェント170は、システム相互接続160上で使用される基礎となる相互接続プロトコルから独立の、コントローラクライアント120への汎用インターフェースを提供する。すなわち、相互接続エージェント170は、システム相互接続160上で使用される通信プロトコルとコントローラクライアント120によって使用される通信プロトコルの間のプロトコル変換を提供する。相互接続エージェント170の使用により、本発明の実施形態のコントローラクライアント120は、現在利用可能な任意のシステム相互接続プロトコルと共に使用することができる。
マルチコアプロセッサは、全体として、スレッドと呼ばれるいくつかの個別タスクに分割することのできるターゲットアプリケーションを実行するように構成される。各処理リソース150は、それだけに限らないが、当該のスレッドの優先度、各処理リソース150の利用可能性および個々のスレッドの実行への個々の処理リソースの適合性を含むいくつかのパラメータに従い、コントローラ130によって適切なスレッドに割り振られる。これについても、やはり、以下でより詳細に説明する。
しかしながら、システム管理コントローラ130およびその専用メモリ190の追加は、その他の点ではプロセッサ10の配置の再設計を必要としないことを理解すべきである。
図3に、1つの具体的な構成を示す。図3には、ブロック図の形で、典型的なシステムオンチップ(SoC)アーキテクチャが示され、実際のアプリケーションにおいてコントローラ130のリソース管理下に置かれ得る様々な処理リソースが説明されている。処理リソースは、具体的には、DSPなど、比較的一般的な機能のものとすることもでき、周辺入出力など、比較的限定された機能のものとすることもできることが認められる。
システム管理コントローラインターフェースグループ
図4に、コントローラ130と、コントローラ130の周辺に位置する、コントローラ130に関連付けられたインターフェースグループ200〜250を示す。
システム制御グループ200は、システム管理コントローラ130の正しい動作を保証するのに必要な2つのシステム入力信号を備える。2つのシステム入力信号は、システムクロックに接続されるCLK入力と、RST入力からなる。システム管理コントローラ130からのすべての出力信号がシステムクロックに同期し、システム管理コントローラ130へのすべての入力信号が、このクロックを使ってサンプリングされる。RST入力は、システム管理コントローラ130をリセットするための同期リセット信号である。
外部割り込みグループ210は、システム管理システム外部から供給される同期外部割り込みのグループからなる。これらの信号は、システム管理コントローラ130周辺に接続される前にCLKに同期されなければならない。外部割り込みグループ210内の信号は、例えば、外界との入力インターフェースから、またはピンを介してマルチコアプロセッサ外部から直接駆動され得る。外部割り込み入力の数は、マルチコアプロセッサ10設計段階において定義される。
内部制御グループ220は、各コントローラクライアント120およびそれに関連付けられた処理リソース150ごとの単一の同期割り込みからなる。したがって、信号のグループの数は、通常、システム内の処理リソース150の数に対応し、マルチコアプロセッサ10設計段階において定義される。内部割り込み信号は、そのコントローラクライアント120に関連付けられた特定の処理リソース150に割り当てられている、実行可能なスレッドを示す。
密結合メモリインターフェースグループ180は、システム管理コントローラ130を、独自の専用密結合メモリリソース190にインターフェースする。図5に、専用密結合メモリ190の典型的な構造を示す。アドレスパスおよびデータパスの幅は、マルチコアプロセッサ10設計段階において定義される。専用密結合メモリインターフェースは、メモリアドレスバス191、メモリ読取りデータバス192、メモリ書込みデータバス193、ならびに書込み194および読取り196イネーブル信号を含む。
接続されるメモリは、同期SRAMデバイスであるものとする。専用密結合メモリ190は、ターゲットアプリケーションの必要に従って、マルチコアプロセッサ10設計段階において定義される、整数個のコントローラメモリ要素195を含む。現在の好ましい実施形態において、各コントローラメモリ要素195は、256ビットのメモリ空間を消費する。やはり現在の好ましい実施形態において、コントローラは、最大65536個のコントローラメモリ要素(すなわち、16MBメモリ)をサポートする。後述するように、待ち行列記述子はコントローラメモリ要素195を消費するが、典型的なシステムにおいて、必要なコントローラメモリ要素195の数は、スレッドサポート要件によって決まるはずである。例えば、システム管理コントローラ130内で同時に400スレッドをサポートすることのできるシステムは、おおよそ128KBの接続メモリを必要とするはずである。
図4の相互接続インターフェースグループ230は、マルチコアプロセッサ10と、マルチコアプロセッサ設計段階において定義される相互接続エージェント170で使用される選択された相互接続プロトコルに従う。
コントローラサブブロック記述および機能
図6に、システム管理コントローラ130の主要な論理コンポーネントを示す。コントローラ130の機能は、以下の各機能を実行する4つの1次内部並列処理サブブロック間で分担される。
1.専用密結合メモリ190内の空いているコントローラメモリ要素195のリストを維持し、コントローラメモリ要素195回復を監視するように構成されたスレッド入力マネージャ(TSIM)300。
2.専用密結合メモリ190内の保留リストおよびタイマ待ち行列を維持し、スレッド間の同期を実行し、必要に応じて、専用密結合メモリ190内の作動可能待ち行列構造へのスレッドの格上げを行うように構成されたスレッド同期マネージャ(TSPM)310。スレッド同期マネージャ310は、専用密結合メモリ190内での保留スレッド記述子の挿入および抽出によって、保留およびタイマ待ち行列構造の保全性を維持する。
3.専用密結合メモリ190内の作動可能待ち行列構造と、専用密結合メモリ190内の各処理リソース150ごとのディスパッチ待ち行列とを維持するように構成されたスレッド出力マネージャ(TSOM)320。スレッド出力マネージャ(TSOM)320は、さらに、コントローラクライアント120に送られる割り込み220を生成するように構成される。作動可能待ち行列構造の保全性の維持は、専用密結合メモリ190内のコントローラメモリ要素195で保持されるスレッド記述子の挿入および抽出によって行われる。
4.専用密結合メモリ190内に位置する作動可能待ち行列構造内の各処理リソース150ごとにスケジューリング決定を提供するように構成されたスレッドスケジュールマネージャ(TSSM)330。
さらに、いくつかの2次処理サブブロックが、以下のサポート機能を提供する。
5.相互に排他およびロッキングを含む、接続された専用密結合メモリ190への集約アクセスを提供するように構成されたスレッドメモリマネージャ(TSMM)340。
6.入力される外部システム割り込みを内部同期プリミティブに変換するように構成された割り込みマネージャ(TSIC)350。
7.各処理リソース150に同期のためのタイマ機能および監視タイマ機能を提供するように構成されたタイムマネージャ(TSTC)360。
8.処理リソース150に相互接続インターフェースおよび構成および実行時アクセスを提供するように構成されたシステムインターフェース(TSIF)380。
続いて、システム管理コントローラ130内の上記1次および2次処理サブブロックの対話の詳細な説明を行う。
各サブブロックは、他のサブブロックに1組の関数を提示し、それぞれが、そのピアに、専用密結合メモリ190内のそれぞれに維持される構造に対する操作を実行するよう指示することができるようにする。各関数は、コントローラソフトウェアのアプリケーションプログラミングインターフェース(API)において受け取られたのと類似のコマンドを受け取り次第、個々のサブブロックによって呼び出される。
スレッド入力マネージャ関数
スレッド入力マネージャ300は、システム管理コントローラ130内の他のサブブロックに3つの共通関数を提供する。
FreeListStatus関数は、コントローラメモリ要素195フリーリスト内の先頭ポインタおよび要素数を返す。フリーリストは、現在未使用のコントローラメモリ要素195のリストである。この関数は、コントローラ130ソフトウェアAPIにおける類似コマンドの受け取り時に、システムインターフェース380によってのみ呼び出され得る。
PushFreeIndex機能は、解放されたコントローラメモリ要素195インデックスをフリーリスト上にプッシュバックするのに使用される。この関数は、スレッドスケジュールマネージャ330によってのみ呼び出され得る。
PopFreeIndex関数は、フリーリストから空いているコントローラメモリ要素195インデックスをポップするのに使用される。これは、通常、システムインターフェース380内のAPI呼び出しサービスルーチン内から呼び出される。
スレッド同期マネージャ関数
スレッド同期マネージャ310は、システム管理コントローラ130内の他のサブブロックに7つの共通関数を提供する。
以下の5つの関数は、コントローラ130ソフトウェアAPIによって受け取られた類似のコマンドに応答して、システムインターフェース380によってのみ呼び出され得る。
PushPendingDescriptor関数は、ブートプロセスの間に、保留待ち行列記述子のリストに保留待ち行列記述子を加えるのに使用される。
PushThread関数は、実行時に、所与の保留待ち行列に従属スレッドを加えるのに使用される。
SetTimerStatusは、タイマ待ち行列内の先頭ポインタおよび要素数を設定する。
GetTimerStatus関数は、タイマ待ち行列内の先頭ポインタおよび要素数を返す。
SetPendingStatus関数は、保留待ち行列記述子リストの状況を設定する。
GetPendingStatus関数は、保留記述子待ち行列内の先頭ポインタおよび要素数を返す。
SyncEvent関数は、所与の保留待ち行列に同期プリミティブを発行するのに使用される。この関数は、スレッド割り込みマネージャ350およびシステムインターフェース380によって呼び出される。
TimeEvent関数は、タイマ待ち行列に、タイマベースの同期プリミティブを発行するのに使用される。この関数は、タイムマネージャ360によってのみ呼び出される。
スレッド出力マネージャ関数
スレッド出力マネージャ320は、システム管理コントローラ130内の他のサブブロックに5つの共通関数を提供する。
Push関数は、作動可能待ち行列構造内にスレッド記述子を配置する。このメソッドは、(例えば、割り込みを処理するなどの)処理速度を速めるために、高い優先度で呼び出され得る。スレッドが独立である(即座に作動可能である)場合、呼び出しは、システムインターフェース380から行われ、スレッド記述子が元々依存関係を有していた場合、呼び出しは、スレッド同期マネージャ310から行われる。
以下の3つの関数は、コントローラ130ソフトウェアAPIにおける類似コマンドの受け取りに応答して、システムインターフェース380によってのみ呼び出され得る。
GetDispatchQueueStatus関数は、ディスパッチ待ち行列リスト内の先頭ポインタおよび要素数を返す。
SetDispatchQueueStatus関数は、ディスパッチ待ち行列リスト内の先頭ポインタおよび要素数を設定する。
DispatchQueuePop関数は、ディスパッチ待ち行列の先頭からスレッド記述子をポップする。
DispatchWorkQueuePush関数は、スレッド出力マネージャ320作業待ち行列上にディスパッチ待ち行列をプッシュする。この関数は、スレッドスケジュールマネージャ330によってのみ呼び出され、スレッドスケジュールマネージャ330は、この関数を使って、出力マネージャ320に、スケジュール更新の結果としてディスパッチ待ち行列内で必要とされる変更を知らせる。
スレッドスケジュールマネージャ関数
スレッドスケジュールマネージャ330は、システム管理コントローラ130内に位置するスレッド出力マネージャ320およびシステムインターフェース(TSIF)380に3つの共通関数を提供する。
PushPushWorkEvent関数は、スレッド出力マネージャ320が作動可能待ち行列構造にスレッド記述子を加えた直後に、スレッド出力マネージャ320によって呼び出される。
PushPopWorkEventは、スレッド出力マネージャ320が作動可能待ち行列構造からスレッド記述子を除去した直後に、スレッド出力マネージャ320によって呼び出される。
FreeIndex関数は、コントローラメモリ要素195の解放が、スレッドスケジュールマネージャ330内で進行中のスケジューリングアクティビティと適正に同期されることを可能にする。呼び出しは、コントローラ130ソフトウェアAPIにおいて類似のコマンドを受け取り次第、またはスレッド出力マネージャ320内のポップ操作の結果として発行されてもよい。
コントローラクライアント
前述のように、処理リソース150という用語は、命令がどれほど初歩的なものであるかに関わらず、その命令を実行し得る任意のリソースに適用される。したがって、入出力モジュールなど、固定機能を有するリソースも含まれる。処理リソース150の種類に応じて、システム管理コアクライアント120を介した、システム相互接続160と処理リソース150の間の接続は、単方向とすることも、双方向とすることもできる。
図7に、システム管理コントローラ130と共に使用するためのコントローラクライアント120の概略的ブロック図の一例を示す。
例えば、汎用プロセッサやディジタル信号プロセッサなどの適切な処理リソース150上で、コントローラクライアント120は、通常、ソフトウェアとして実施される。しかしながら、処理リソース150が限定された機能のものである場合、コントローラクライアント120は、ハードウェアコンポーネントを必要とすることもある。
システム相互接続160と処理リソース150の間でハードウェアコンポーネントが使用されるとき、コントローラクライアント120は、やはり、同じインターフェースを使って処理リソース150にインターフェースする。すなわち、コントローラクライアントは、処理リソース150のコントローラクライアントへのインターフェースと同一のインターフェースを相互接続エージェント170に提示する。場合によっては、例えば、入出力装置の場合には、処理リソースへのデータパスを、処理リソースからのデータパスと異なるものとして処理するのが妥当なこともある。
主要なインターフェースに加えて、コントローラクライアント120は、実行時およびデバッグイベントの出力として使用するために帯域外インターフェースも提供する。ソフトウェアコントローラクライアント120が使用される場合、これらは、適切なサービスルーチンを呼び出す標準割り込みを使って提供される。
コントローラクライアント動作モード
各コントローラクライアント120は、完全に割り込み駆動型である。コントローラ130から内部割り込みを受け取り次第、コントローラクライアント120は、専用密結合メモリ190内に保持されているその特定の処理リソース150に関連付けられたディスパッチ待ち行列の先頭から、スレッド記述子をポップする。次いで、スレッド記述子内の一意の参照を使って、メインメモリリソース140さらなるスレッド制御情報、スレッド制御ブロック(TCB)が読み取られる。TCB内に含まれる情報は以下のいずれかとすることができる。
1.コントローラクライアント120構成内容。この情報は、コントローラクライアント120システムリソース使用ポリシング、データプレゼンテーションモードなどを構成するのに使用され得る。
2.処理リソース150構成内容。これは、個々のスレッドの実行のために処理リソース150を準備するのに必要とされる情報である。これは、このスレッド前の部分実行からの回復、または、オーディオCODECなどの、専用ハードウェアアクセラレータの構成を含んでいてもよい。
3.命令内容。固定機能ハードウェアアクセラレータの場合、例えば、処理リソース150が出力モジュールであるときの出力命令など、「命令」は、目的のハードウェア処理リソース150では暗黙的となり、任意の必要な専門化または構成が、構成情報内に収容されることになる。ソフトウェアコントローラクライアント120の状況では、これは、通常、スレッドに関連付けられた機能コードを指示すポインタになる。
4.データ内容。この内容は、システムメモリ140内の開始アドレスまたは複数のアドレス、およびスレッドが動作し得るデータ範囲を定義することができる。
5.コントローラクライアント120後処理内容。この内容は、スレッド実行完了後のコントローラクライアント120のアクションを決定する。
コントローラクライアント120の3つの異なる動作段階がある。
1.処理リソース150およびコントローラクライアント120が個々のスレッドの実行のために準備される構成段階。最も単純な場合、構成段階はヌルになる。
2.スレッドが実行され、コントローラクライアント120がデータを供給し、かつ/またはリソース利用を監視し得る実行段階。
3.完了段階。処理の完了は、結果として、アクションなし、別のスレッドの作成、同期プリミティブの発行、またはスレッド作成と同期の組み合わせを生じ得る。さらに、コントローラクライアント120は、スケジューラメトリックを設定または更新し、スレッドを終了させるように要求されることもある。スレッド実行時に、結果を格納するためにさらなるメモリが必要とされる場合、コントローラクライアント120は、このメソッドも実行しなければならない。
個別のハードウェアコントローラクライアント120bが、アクティブ期間において利用可能なシステム相互接続160帯域幅を完全に利用する状況において、1つの最適化された解決策は、コントローラクライアント120bが、複数のハードウェア処理リソース150のプロキシとして動作するのを可能にすることであろう。そのような構成を図7bに示す。前述の場合と同様に、プロキシコントローラクライアント120bは割り込み駆動型である。しかしながら、前述の例では、コントローラ130から単一の割り込みだけが経路指定されたが、プロキシコントローラクライアントモデルでは、処理リソース150ごとの割り込みがある。コントローラ130から受け取られる割り込みのインデックスに従って、プロキシコントローラクライアント120bは、識別された処理リソース150で同じステップを実行する。システム相互接続160使用ポリシングが必要とされるプロキシコントローラクライアントモデルでは、ハードウェアアダプタ120cが、処理リソース150とシステム相互接続160の間に残る。
前述のように、コントローラクライアント120は、ソフトウェアとして実施されてもよい。この場合、コントローラクライアント120の機能の一部、例えば、共用リソース使用ポリシングは、通常、処理リソース150ハードウェア(例えば、メモリ管理ユニット(MMU)など)にすでに存在する既存のハードウェアコンポーネントを利用することになる。
結果として、ソフトウェアコントローラクライアント120アーキテクチャおよび実施は、処理リソース150特有のものになる。
また、ハードウェアコントローラクライアント120は、関連付けられた処理リソース150の特質による専門要件を有することもある。以下の項では、大部分の場合に好適となる汎用アーキテクチャを説明する。
ハードウェアコントローラクライアントの一般例
図8に、ハードウェアコントローラクライアント120の基本構造を示す。設計の機能的中心にあるのは、コントローラクライアント有限状態機械(FSM)500である。この有限状態機械(FSM)500は、3段階すべてにおいてアクティブとすることができる。コントローラクライアントFSM500は、コントローラ130からの割り込み220によって活動化される。
まず、コントローラクライアントFSM500は、システム相互接続160を制御して、独自の命令への参照を含む共用メモリリソース140からTCBを読み取らせる。構成段階の間、コントローラクライアント120は、処理リソースを制御して、構成コマンドを解釈し、コマンドを、処理リソース150に発行される書込みサイクルに変換することができる。さらに、コントローラクライアント120は、独自のリソースポリシングを構成する。構成状態から実行状態への遷移の仕方は処理リソース150特有のものであるが、明示的な実行プリミティブによってマークされてもよく、単に、データ転移状態に入ることとしてもよい。
コントローラクライアント120から見て、最も単純なアーキテクチャは、処理リソース150とシステム側の両方で同一のインターフェースプロトコルを有する。この場合、実行段階の間に、処理リソース150読取り/書込みサイクルが、適切な場合にはチェックを伴って、単に、システムインターフェースにマップされるだけである。
最も単純なコントローラクライアント120実施は、システムから処理リソースへのパス510と処理リソースからシステムへのパス520の両方でFIFOスタイルのインターフェースを必要とするはずである。この性質のコントローラクライアント120の実行段階の間、データは、メッセージまたはストリーミングモードによって処理リソース150に提示され得る。データセット全体が、処理の前にコントローラクライアント120内においてローカルで蓄積されるメッセージモードは、より複雑な相互接続アービタを円滑化し得る、より粗くむらのある相互接続挙動を生じさせる。データがシステムメモリから処理リソース150に直接ストリーミングされるストリーミングモードは、ハンドシェークのより慎重な考察を必要とし、細かい相互接続トランザクションおよび相互接続への密結合を呈する、よりシリコン効率の高い解決策を提示する。
実行段階から完了段階への遷移は、処理リソース150へのデータの提示を測定することによって推断されてもよく、処理リソース150自体によって明示的に通知されてもよい。完了段階の間、コントローラクライアント120は、再度、元のスレッド制御ブロックによって提供される命令セットから実行する。
場合によっては、処理リソース150に入るディスパッチ(例えば、入出力装置など)と処理リソース150から出るパスとを区別して扱うことが妥当であることに留意されたい。これに対して、同じコントローラクライアント120フレームワーク内でデータの消費側と生成側を結合すべき場合(例えば、DSPなどのアルゴリズム的アクセラレータ)もある。
処理リソース150とその他のシステムリソースの間で減結合のレベルを提供するために、コントローラクライアント120によって、以下のようないくつかの追加機能が提供され得る。
a)処理リソース150によって生成されるアドレスが、比較器530および比較アドレスレジスタ540を使って、基底アドレスおよびオフセット定義によって定義される期待される挙動に照らしてチェックされてもよい。
b)処理リソース150によって生成されるアドレスが、減算機550およびオフセットアドレスレジスタ560を使ってオフセットされ、処理リソース150が、通常、アドレス0×0前後に正規化される、任意の所与のスレッドのアドレスマップの正規化ビューを有することを可能にする。
オブジェクト
システム管理コントローラ130内で使用されるデータ型のインスタンスは、公開(システム一般から見ることができ、システム一般によって操作される)と専用可視(システム管理コントローラ130内でのみ見ることができ、システム管理コントローラ130サブブロックによってのみ操作される)とに分けられる。複数のエンドアプリケーションにまたがる設計の移植性を保証するために、すべてのスレッド、待ち行列および集約待ち行列記述子が、共通基底クラスを使用する専用密結合メモリ190、コントローラメモリ要素195内に格納される。
コントローラメモリ要素
各コントローラメモリ要素195は、以下の7つの記述子型のいずれかを表すことができる。
1.フリーリスト要素。この要素は、その他の記述子型のいずれによっても自由に利用される。ユーザ初期設定も実行時操作も必要とされない。
2.スレッド記述子(TD)。これは、アプリケーション/OSスレッドのデータ構造表現である。この記述子は、専用密結合メモリ190内の保留待ち行列、作動可能待ち行列またはディスパッチ待ち行列に存在し得る。ユーザ初期設定は必要とされないが、実行時操作は必要である。
3.スケジューラルート記述子(SRD)。これは、スケジューラ階層の最上位の記述子である。ユーザ初期設定は必要であるが、実行時操作は必要とされない。ルート記述子は親を持たないが、子は、SSTD、DSTDまたはTDのいずれかとすることができる。
4.静的スケジューラ層記述子(SSTD)。これは、SRDまたは別のSSTDを親とすることのできる静的スケジューラ層記述子である。SSTDの子は、別のSSTD、DSTDまたはTDのいずれかとすることができる。
5.動的スケジューラ層記述子(DSTC)。これは、動的スケジューラ層記述子である。ユーザ初期設定は必要とされないが、実行時操作は必要である。DSTDの親は、SRDまたはSSTDのどちらかとすることができるが、DSTDは、TDの子だけしか持つことができない。
6.ディスパッチ待ち行列記述子。この種の記述子は、関連付けられた処理リソース150からのポップ操作を待ち受けるスレッド記述子のリストを記述する。ユーザ初期設定は必要であるが、実行時操作は必要とされない。
7.保留待ち行列記述子。この種の記述子は、同期イベントを待ち受けるスレッド記述子のリストを記述する。ユーザ初期設定は必要であるが、実行時操作は必要とされない。
以下の各項では、これらの記述子をより詳細に説明する。
コントローラメモリ要素195の様々な形、およびそのそれぞれを、図9aから9lに示す。
スレッド表現
記述子が初期設定または実行時操作を必要とする場合、操作は、コントローラ130APIを介して行われる。集中型タスク割り振り/管理システムは、リアルタイム対話が、ハードウェア実施に十分適する/ハードウェア実施に十分なほど単純化されるように設計される。
図10に、スレッド記述子と、システム管理コントローラ130と、処理リソース150と、共用システムメモリ140の間の典型的な関係を示す。各スレッドプリミティブは、一意の参照、pReferenceを含む。この参照は、システム管理コントローラ130によって解釈も、変更もされない。pReferenceは、実行されるべきタスクを定義するシステムメモリ140内のデータ構造を指し示すポインタを提供する。通常、これは、コントローラクライアント制御ブロック125であり、少なくとも、(図10に処理リソース命令ブロック145として示す)関数ポインタ、スタックポインタおよび(図10にデータブロック135として共に示す)引数ポインタという要素を含むはずである。帯域内構成または共用システムリソースのセキュリティを提供する追加フィールドが定義されてもよい。
しかしながら、アプリケーションおよび/またはターゲット処理リソース150によって、コントローラクライアント制御ブロック125の複雑度は異なり得る。特に、適切な「制御」命令コードおよび対応する「ディスパッチ」コードが与えられた場合に、異なる処理リソース150が、一定の状況下で、同じデータに対して同じ関数を実行することを可能にし得る別のレベルの間接化も含まれ得ることに留意されたい。
図11に、スケジューリング階層が、2つの異種の処理リソース(図11のタイプIおよびタイプII)150aと150bにまたがってタスクを負荷均衡化する一例を示す。(この階層の待ち行列に入れられるスレッド記述子内の)pReferenceフィールドは、前述のようにコントローラクライアント制御ブロック125を参照するが、この場合、それぞれの異種の命令セットによって必要とされる個々の命令ストリームに対応する処理リソースの種類ごとにポインタがある。コントローラクライアント120は、コントローラクライアント制御ブロック125内のフラグに従って適切な命令ストリーム(命令ブロック145aまたは145b)を選択する。
この機能は、例えば、いくつかの処理リソースの電源遮断機能と関連させると役立つことがある。所与のタスクに最適なプロセッサが電源遮断された場合、高くつくリブートサイクルを発生させるのではなく、次善のプロセッサがそのタスクを実行する方が望ましいことがある。さらに、例外的な負荷の状況下では、例えば、負荷の軽い汎用プロセッサが、負荷の思いDSPの負担を軽減することができるようにしてもよい。
処理リソース150がスレッドを処理することが可能な状態になると、スレッドは、その処理リソース150と一意に関連付けられた適切なディスパッチ待ち行列からポップされる。ポップ操作は、pReference、スケジューリングイベントを生じたスケジューラメトリック、およびスレッドが作動可能になったのはタイムアウトによるものか、それとも同期プリミティブによるものかを示す指示を含む1組のフラグを含むオブジェクトを返す。スレッド記述子に使用されるコントローラメモリ要素195は、後のスレッド記述子が使用するためにフリーリストに自動的に返される。
共用オブジェクト
この項では、コントローラ130APIを介してシステムから見ることのできるオブジェクトを説明する。通常、これらのオブジェクトは、実行時に、コントローラ130とクライアント120とそれらに関連付けられた処理リソース150とを備える集中型タスク割り振り/管理システムによって操作される。
実行時コントローラ130APIは、アプリケーションが、新しいスレッドを導入し、新しい動的スケジューラ要素を導入し、同期プリミティブを発行し、スケジュールされたスレッドをポップし、割り込みされたスレッドをプッシュし、またはスレッドを除去することを可能にする。
図12に、システム管理コントローラ130内のスレッド管理の典型的な全体図を示す。
スレッドプリミティブ
図9cおよび9dにスレッドプリミティブのフォーマットを示す。その依存関係に従って、スレッド記述子は、保留待ち行列構造に、または直接作動可能待ち行列構造に配置され得る。スレッドが保留待ち行列構造内に配置されるべきである場合、アプリケーションは、スレッドの依存関係を定義しなければならない。外部イベントへの依存性は、依存参照として現れる。コントローラ130は、この依存参照を解釈しない。これは、スレッド記述子を作動可能待ち行列構造にいつ移行させるべきか決定する、入力同期プリミティブとの比較のために維持される。
従属スレッドでは、タイムアウトを指定することができ、ヌル依存参照と関連させて、この機能をスレッドベースのハードウェアタイミング機能として使用することができる。依存関係と関わりなく、タイムアウトは、スレッドを、特定の時刻にスケジュールさせる。
スレッドは、スレッドを作動可能待ち行列構造に格上げさせる同期イベント(タイマまたはプリミティブ)に従ってタグ付けされる。
同期プリミティブ
同期プリミティブは、保留待ち行列とインターフェースし、1つ以上のスレッド記述子の保留待ち行列構造から作動可能待ち行列構造への移行を生じさせることができる。
各同期プリミティブは、識別された保留待ち行列内の各スレッド記述子内に格納された依存参照と比較される一意の参照を含む。比較は、スレッドプリミティブによって識別される優先度の順に進められる。
その種類に従って、同期は、保留待ち行列内の最高優先度のマッチングスレッド記述子またはすべてのマッチングスレッド記述子を稼動状態にすることができる。さらに、特殊なブロードキャストプリミティブが、すべての保留待ち行列内のすべてのマッチングスレッド記述子を活動化する。
割り込み処理
割り込みサービススレッド(IST)法は、非同期イベントによって処理リソース150に課される負荷を最小限に抑える有益な手段を提供する。さらに、本発明に基づくシステムにおける加速されたリアルタイム応答は、小さなシステム変更を加えるだけでISTのさらなる普及を可能にする。
コントローラ130は、コントローラ周辺での外部割り込み入力210から自動的に同期プリミティブを作成する。保留待ち行列内の事前に構成された割り込みサービススレッド記述子が、これらの割り込み同期プリミティブの受け取り時に、作動可能待ち行列構造に格上げされる。
アプリケーションは、通常、システム初期設定時に、外部割り込み210に関連付けられたスレッド記述子を構成し、関連付けられた割り込みサービススレッドの各実行内でも構成する。
この機能は、事実上、システム内の他の任意の専用割り込みサービス提供処理リソース150の必要をなくす。さらに、この機能は、これらの外部割り込み210を、同じ優先度構造により、すべてのプロセッサタスクに使用される同じポリシに従って処理し、すでにより優先度の高いタスクを実行している処理リソース内でのコンテキスト切換えの必要をなくす。通常の優先使用ルーチンを使って現在実行中のスレッドを作動可能待ち行列にプッシュバックすることができるために、任意の数のネストされた割り込みがサポートされる。
タイマベースの割り込み(ウォッチドッグおよび周期的イベント)も同様のやり方で処理される。(周期的または1回限りの)タイムベースのタスクは、タイマ待ち行列に挿入されなければならず、タイムアウト依存関係を有するスレッドと類似のやり方で処理される。設計により、この方法は、有用な処理要件を持たないタイムベースの例外を除外する。
割り込み優先度は、応答時間を速くするために、割り込みルーチンが現在実行中のタスクに取って代わることを許されるように設定される。
専用オブジェクト
専用オブジェクトは、通常、ブート時、すなわち、電源遮断サイクル後のシステム初期設定時に構成される。処理リソース150が、実行時に内部オブジェクトと直接対話することはまれである。
内部オブジェクトは、主として、待ち行列構造である。システム管理コントローラ130は、保留待ち行列、タイマ待ち行列、作動可能待ち行列およびディスパッチ待ち行列という4種類の主要な待ち行列を管理する。
システム管理コントローラ130内には、内部操作を円滑化するために、さらに2次的待ち行列が存在する。待ち行列間のスレッド記述子の移動は、ポインタ操作のみで行われる。スレッド記述子は、絶対にコピーされることはない。
保留待ち行列構造
スレッドは、同期イベントまたはタイマイベントによって、保留待ち行列構造から作動可能待ち行列構造に格上げされ得る。スレッドは、これらのイベントクラスの両方に反応しても、一方だけに反応してもよい。スレッドが両方に反応する場合、そのスレッドは、保留待ち行列とタイマ待ち行列の両方に存在する。
保留待ち行列は、同期イベントを待ち受ける従属スレッドを保持する。スレッドは、処理リソース150からの同期プリミティブによって、またはタイムマネージャ360によって内部で生成されたタイマイベントによってこれらの構造から除去される。複数の競合有効範囲および割り込みサービススレッドをサポートするために、アプリケーションプログラマが、構成可能な数の保留待ち行列を利用することができる。各保留待ち行列内の要素は、それらの優先度に従って処理されなければならない。優先度に従った処理には、挿入時のソートと抽出時のソートという2つの選択肢がある。挿入時のソートは、保留リストを厳密な優先順位で格納し、新しいスレッドをその優先度に従ってリスト内の位置に挿入するためのプロセスを定義する。抽出時のソートは、新しいスレッドをどこに挿入すべきかの任意の選択を行い、同期後の適格なスレッド記述子の優先度に基づくソートを行う。本発明の好ましい実施形態は、挿入時ソートの技法を用いる。
図13に、保留待ち行列の典型的な構造を示す。各エントリは、厳密な優先順位で格納される。新しいスレッドの挿入が達成され得る速度は、スキップリストの使用によって加速される。図14に、典型的な保留待ち行列スキップリストを示す。
前述のように、スレッドは、ブロックされて、同期またはタイマイベントを待ち受けてもよい。スレッドの中には、排他的に同期イベントを待ち受けるものもあり、同様に、排他的にタイマイベントを待ち受けるものもある。その都度、スレッドは、単一の待ち行列にのみ存在することになる。各スレッドは、名目上、保留待ち行列とタイマ待ち行列の両方に関連付けられた、2組のポインタを含む。これらの場合、設けられるタイマ待ち行列および保留待ち行列のポインタは、それぞれ、スペアである。スキップリストは、これらのスペアポインタを利用することができる。すなわち、例えば、スレッドがタイマ待ち行列内に見当たらない場合、これらのポインタを再利用して、保留待ち行列内における可能な前方ジャンプが指示されてもよい。これは、通常は逐次のサーチが、新しい従属スレッドの正しい挿入点に反復的に接近しながら、スレッド記述子のブロックをジャンプすることを可能にする。
一代替方法が、スキップノード記述子であり、この一例を、関連付けられたフィールド(図9l)と共に図9kに示す。スキップノード記述子は、事前定義されたメトリックに従って、保留およびタイマ待ち行列構造に周期的に挿入され得る。スキップノード記述子は、スキップノード記述子間の、または関与するスレッド記述子間の、定義された最大観測数のスレッド記述子に従って挿入される。スキップノード記述子は、保留待ち行列とタイマ待ち行列のスキップリストの一部を同時に形成することができる。
それぞれの新しい従属スレッドが、その優先度に従って挿入されなければならない。このプロセスでは、典型的に、始めに、新しいスレッドの優先度がスキップリストノードの優先度より高くなるまでスキップリストをトラバースする。その後、サーチは、そのスキップリストノードから、スレッド記述子ごとに、正しい挿入点が見つかるまで続けられる。これは、通常は線形のサーチが、新しい従属スレッドの正しい挿入点に向かって進むときに、保留スレッドのブロックをスキップすることを可能にする。
同期イベントには、以下の3つの異なる種類がある。
ユニキャスト:同期イベントは、指定された保留待ち行列で見つかった最初の(最高優先順位の)適切な従属スレッドで状態遷移をトリガする。
マルチキャスト:同期イベントは、指定された保留待ち行列内のすべての適切な従属スレッドで状態遷移をトリガする。
ブロードキャスト:同期イベントは、すべての保留待ち行列内のすべての適切な従属スレッドで状態遷移をトリガする。
保留待ち行列は、図9iおよび9jに示すように、保留待ち行列記述子によって定義される。保留待ち行列記述子は、システム初期設定時に一度構成され、単一のコントローラメモリ要素195を消費する。保留待ち行列は、従属スレッド記述子とスキップリストノードをだけを含む。
タイマ待ち行列構造
タイムアウトイベントを待ち受けるスレッド記述子を格納する単一システム規模のタイマ待ち行列が設けられる。図15に、タイマ待ち行列の例示的実施形態を示す。
また、スキップリストは、前述のタイマ待ち行列構造へのスレッドの挿入を迅速化するためにも使用される。しかしながら、この場合、それは、スキップリストに使用される、時間的依存関係(もしあるとすれば)だけを有するスレッドである。
タイマ待ち行列記述子は、レジスタ内に格納され、同時比較が、タイマ待ち行列の先頭と現在時刻の間で進行することを可能にする。これは、タイマティックのメモリ帯域幅に対する影響を大幅に低減する。
作動可能待ち行列構造
作動可能待ち行列構造は、実行可能な状態のスレッドを保持する。これらのスレッドは、独立のスレッドプリミティブを用いて作成されたスレッドであり、または依存対象とする同期プリミティブを受け取っているスレッドである。同期スレッドは、あらかじめ保留待ち行列構造から移行している。
作動可能待ち行列構造は、スケジューラノード記述子と、独立の同期されたスレッド記述子を含むことができる。この構造は、システム初期設定時におおむね定義されるが、スレッド記述子および動的スケジューラ層記述子は、リアルタイムで出入りすることを許される。
作動可能待ち行列は、スレッドを特定の処理リソース150、または処理リソース150のプールに対してスケジュールすることができる。これは、特定のタスクを特定の処理リソース150、例えば、ハードウェアアクセラレータや入出力装置などに向けることができる状態を維持しつつ、複数の処理リソース150にまたがる負荷均衡化を可能にする。
図16に、2つの処理リソース150での典型的な作動可能待ち行列構造を示す。動的スケジューラ層2は、両方のルートスケジューラ層から利用可能であることに留意されたい。これは、システム管理コントローラ130が、ルート層1および2と関連付けられた処理リソース150の間の動的な層2の下でスレッドを負荷均衡化することができるようにする。
スケジューラ層
スケジューラ層は、スレッド記述子をスケジュールするのに使用される階層を定義する。各スケジューラ層は、通常、スケジューリングアルゴリズム、スケジューリング決定を行うのに使用されるいくつかのメトリック、および別のスケジューラ層またはスレッド記述子とすることのできる子要素のリストを定義する。ルート、静的および動的の3種類のスケジューラ層記述子がある。スケジューラ層メモリ要素のフォーマットを図9eおよび9fに示す。
ルートスケジューラ記述子は、ディスパッチ待ち行列と1対1マッピングを有する。これらは、作動可能待ち行列構造における最終ノードを表す。スケジューラルート記述子は、システム初期設定時に構成され、永久に存在する。
静的スケジューラ記述子は、スケジューリング階層内のルートノードの下に存在する。静的スケジューラ記述子の親は、他の静的スケジューラ記述子とすることも、ルート記述子とすることもできる。静的スケジューラ記述子は、その親の定義するスケジューラアルゴリズムおよびそのスケジューラメトリックに従って、兄弟ノードと競合する。静的スケジューラ記述子は、システム初期設定時に構成され、永久に存在する。動作時に、システム管理コントローラ130は、選択されたスケジューリングアルゴリズム、例えば、ラウンドロビンスケジューリングなどに従ってスケジューラメトリックを維持する。
動的スケジューラ記述子は、スケジューリング階層内のルートおよび、おそらく、静的ノードの下に存在する。動的スケジューラ記述子の親は、静的スケジューラ記述子またはルート記述子とすることができる。動的スケジューラ記述子は、その親の定義するスケジューラアルゴリズムおよび独自のスケジューラメトリックに従って兄弟ノードと競合する。動的スケジューラ記述子は、いつでも構成することができ、特定の状況下において廃棄することができる。これは、システムが、純粋に静的な条件で可能なはずの数よりずっと多くのスケジューリング層をサポートすることを可能にする。システム管理コントローラ130は、多数の多様なスレッドおよび動的スケジューラ層が常に使用されるが、ある有限期間の間、一時要求がより小さいくなる可能性を利用することによってこれを実現する。例えば、最大4000の動的要素(スレッドおよび動的スケジューラ記述子)をサポートするメモリが接続されたネットワークシステムでは、16000接続をサポートすることが可能であると考えられる。というのは、任意の瞬間に、コントローラには、全接続空間のほんの一部からのデータ単位だけがあるからである。この柔軟性は、性能をわずかに犠牲にして達成される。というのは、動的スケジューラ記述子が存在しない場合、それが子スレッド記述子の追加の前に作成されなければならないからである。
動作時に、システム管理コントローラ130は、選択されたスケジューリングアルゴリズムに従ってスケジューラメトリックを維持する。いくつかの状況下では、動的スケジューラ記述子は、コントローラメモリ要素195フリーリストに戻される。これは、動的スケジューラ層記述子にその層内で処理されるべき最後のスレッドからのpReferenceを格納することによって達成される。コントローラ130APIは、動的スケジューラ記述子が後続の類似のスレッドの間に持続するかどうか判定するために、コントローラメモリ要素195の問合せをサポートする。
ディスパッチ待ち行列
ディスパッチ待ち行列は、関連付けられた処理リソース150からのサービスを待ち受ける先入れ先出し(FIFO)待ち行列としてスケジュールされたスレッド記述子を保持する。現在の好ましい実施形態では、最大32のディスパッチ待ち行列が許容される。ディスパッチ待ち行列は、図9gおよび9hに示すディスパッチ待ち行列記述子によって定義される。ディスパッチ待ち行列記述子は、システム初期設定時に構成される。
スレッド記述子を作動可能待ち行列構造からディスパッチ待ち行列構造に遷移させるプロセスは、ハードウェアとして実行され、コントローラ130API対話を必要としない。
図17に、本発明の特徴を実施する典型的な単一のディスパッチ待ち行列構造の例示的実施形態を示す。ディスパッチ待ち行列記述子は、フル閾値を定義する。ディスパッチ待ち行列長は、スレッドバンドルがスケジュールされている場合、または割り込みスレッドプッシュが行われた場合にのみフル閾値を上回ることを許される。
各要素は、処理リソースによってコントローラ130APIを介して呼び出されるポップ操作によってディスパッチ待ち行列から除去される。
ディスパッチ待ち行列記述子には優先度フィールドが含まれる。ディスパッチ待ち行列からスレッドがポップされるときに、優先度フィールドに、現在実行中のスレッドの優先度が取り込まれる。別のAPI呼び出しが、優先度が実行中のプロセッサによって別の値にリセットされるようにして、優先度逆転を回避する。優先度逆転は、異なる優先度の少なくとも3つのスレッドが関与する、同期とスケジューリング要件の間の競合をいう。優先度逆転は、優先度の低いスレッドが、優先度の高いスレッドを無期限にブロックすることを可能にする。例えば、優先度の低いスレッドが共用リソースをロックし、次いで、より優先度の高いスレッドに取って代わられる。次いで、優先度の高いスレッドは、優先度の低いスレッドによってロックされているリソースでブロックする。今度は、優先度の高いスレッドがブロックされているため、通常は、ロックされているリソースから独立の、現在自由に実行できる第3の中間スレッドがなかった場合、優先度の低いスレッドが再開するはずである。優先度の低いスレッドは、決して共用リソースをロック解除する機会を得ることができず、したがって、優先度の高いスレッドは無期限にブロックされる。「優先度上限」プロトコルとは、スレッドが共用リソースを所有している間、それが指定された優先度で実行されることを意味する。これは、前述の優先度の「低い」スレッドが優先度の高いスレッドと共用されるリソースを所有している間、それが「高い」優先度を有することを保証する。
スレッドバンドルは、同じスケジューラ層を起源とするスレッド記述子のグループをいう。各スケジューラ記述子には、更新するよう求めるスケジューリング決定が強制される前に、作動可能待ち行列のその層からディスパッチ待ち行列に遷移され得るスレッドの数を定義するパラメータが存在する。この機能を利用すると共に、スケジューラ層のメンバが共通の属性を有するように構成することによって、処理リソース150に、通常観測されるはずのものより著しく高いキャッシュ局所性を呈するスレッドのブロックを提示することができ、その結果、キャッシュミスが低減され、システム性能が向上する。
図18に、本発明の一実施形態による、スレッドバンドリングを含む2層のスケジューリング階層の例を示す。ルート層から最も遠い層である、子層は、FIFOスケジューリングアルゴリズムを使う。ルート層スケジューラアルゴリズムは、ラウンドロビンとして構成される。この実施形態では、各FIFO待ち行列内の要素は、同じ待ち行列の他のメンバとの高レベルのキャッシュ局所性を呈する。
図18(a)に、子層のスレッドバンドル限界が1に設定されているスケジューリング結果を示す。この結果は、完全にインターリーブされている。この方式は、各待ち行列に最小の待ち時間を提示するが、メモリ管理がほとんど考慮されない(すなわち、低いキャッシュ性能を呈する可能性が最も高い)。スケジュールされたスレッドごとにコンテキスト切換えが必要である。ルート層がキャッシュを使用する処理リソース150と関連付けられる場合、強制的なキャッシュミスがシステム性能に影響を及ぼす可能性がある。
図18(b)に、子層のスレッドバンドル限界が4に設定されているスケジューリング結果を示す。スケジューラはより粗い更新特性を呈し、それは、このスレッドバンドル限界によって設定された限界を有する同じ待ち行列からスケジュールされているスレッドのブロックとして現れる。このバースト性挙動は、状況によっては理想的ではないこともあるが、はるかに優れたキャッシュ性能を呈する。というのは、コンテキスト切換えを必要とされることが比較的まれだからである。結果として得られる効果は、きめ細かな手法の優れたプログラミングモデルを維持しつつ、粗いマルチスレッディングの優れたキャッシュ性能に匹敵するものである。
システムが外界と対話する場合には、スレッドバンドリングのバースト性が極めて有害になる可能性が高い。しかしながら、スレッドバンドリングは、ターゲット処理リソース150がキャッシュを使用する場合にだけ有益であり、したがって、外界と対話する専門処理リソース150、例えば入出力装置などは、キャッシュ技術を使用する可能性が低く、したがって、スレッドバンドリングを利用しない。
図17に戻って、各要素は、処理リソース150によりコントローラ130APIを介して呼び出されるポップ操作によってディスパッチ待ち行列から除去される。各要素は、優先使用の場合には、作動可能待ち行列にプッシュバックされてもよい。
ディスパッチ待ち行列記述子には、優先度上限プロトコルの実施を可能にする優先度フィールドが含まれ、共用データでの優先度逆転を防ぐ。各処理リソース150は、一意のディスパッチ待ち行列を有する。
スケジューリング
アプリケーションおよびシステムのスケジューリング要件は様々に異なり、実際には、実際の動作環境での試験後に初めて明らかになることもある。これに対応するために、システム管理コントローラ130は、使用されるスケジューリングポリシとスケジューリングアルゴリズムの両方に柔軟性を与え、これらは、マルチコアプロセッサ設計段階全体を通して変更、調整することができる。
スケジューリングポリシは、以下の3種類に分けられる。
1.連携スケジューラが現在実行中のタスクを利用して新しいタスクをスケジュールする前に処理リソース150を解放する。この種のシステムは、(例えば、処理リソース150にとってローカルのキャッシュが必要な命令を含まず、したがって、より低速の上位メモリから足りない命令をロードしなければならないなどの場合の)コールドキャッシュ効果の最小化、および固定機能ハードウェアアクセラレータと適合するが、より複雑な組み込みアプリケーションには適さないことがある。
2.静的アルゴリズム駆動型スケジューラが、より適格性の高いタスクを実行するために、現在実行中のタスクに取って代わることができる。事前定義されたスケジューリングパラメータおよびアルゴリズムによる最も適格なスレッドが、常に、これらのシステムにおける実行中のスレッドである。任意の所与のタスクの適格性は、システムが実行を開始する前に定められる。
3.動的アルゴリズム駆動型スケジューラが、実行時に適格性を再定義することができる。前述のように、現在実行中のプロセスは、依然として、適格性が最も高いものであるが、タスクが実行を開始した後で、適格性メトリックが変更されている可能性がある。
システム管理コントローラ130は、適切な構成およびターゲットアプリケーションとの実行時対話によって3つのスケジューリングポリシすべてを満足させる。
システム管理コントローラ130は、例えば、先入れ先出し待ち行列法、優先度待ち行列法または重み付き公平待ち行列法など、オペレーティングシステムおよび通信業界で見られる多くのスケジューリングアルゴリズムをサポートする。スケジューリングアルゴリズムを適切に選択すれば、特に、主観的品質メトリックが関与する場合には、明白な利点が呈示される。
スレッド記述子内では、システム管理コントローラ130内のスケジューリング挙動をサポートするために2つのスケジューラメトリックが設けられる。第1のメトリックは、あらゆる場合におけるスレッドの優先度を表し、保留待ち行列構造、優先度ベースのスケジューラおよびディスパッチ待ち行列構造内で使用される。必要な場合には、第2のメトリックを使って、個別スレッドとそのピアの間で選択が行われる。さらに、どちらかのメトリックを使って親記述子内のメトリックが更新されてもよい。スレッド記述子の第2のプリミティブ内に配置される値は、そのスケジューラ階層内で生じるスケジューリングの種類を反映しなければならない。
これら2つのスケジューラメトリックは、スケジューラ記述子とスレッド記述子の両方で使用される。しかしながら、スレッドメトリックは処理リソース150内で計算されるが、これはスケジューラ層には不可能である。したがって、スケジューラ層がそれ自体のメトリックを更新することができるようにするには、所与の層のスケジュールされたスレッドから十分なパラメータが渡されなければならない。各スケジューラ層ごとに、どのようにしてメトリックが子から親に伝播されるかを定義する1組の命令が定義される。
スケジューラ階層全体に多少注意すれば、アプリケーションシステムにおける洗練されたトラフィックおよびタスク管理機能を提供するための、スケジューラアルゴリズムの複雑な組み合わせを容易に作成することができる。
パラメータ継承例
図19に、通信システムに一般的に見られる簡略化された待ち行列構造の例示的実施形態を示す。この構造は、入出力装置の出力待ち行列を表す。FIFO待ち行列を共用するすべてのスレッドが同じ接続上にあり、そのため、これは、接続ごとの待ち行列構造である。第2のスケジューリング層は、この例では重み付き公平待ち行列(WFQ)アルゴリズムを使用する。このアルゴリズムは、所与のタスクの完了時刻を、その長さと重み係数に基づいて計算する。次いで、最も早い完了時刻を有するパケットを選択する。WFQはスレッドが表すパケットの長さの知識を利用するものであるが、最初のFIFO待ち行列は、この情報とは無関係である。この場合、アプリケーションプログラマは、パケットの長さが、各スレッドごとのスケジューラメトリックに存在するようにしなければならない。階層内の上位のスケジューラ層は、それら自体のスケジューリングアルゴリズムのためにこのパラメータを継承する。
WFQでは、以下の変数が必要とされる。
P 接続に割り振られるパイプ帯域幅の部分
I パケットの長さ
B 総パイプ帯域幅
c 接続帯域幅
d スケジューラ層デッドライン
接続帯域幅cを計算する式は以下の通りである。
P*B=c
チャネルを帯域幅1に正規化した場合、pはcに等しくなる。その場合、パケット処理の完了時刻tは次式で与えられる。
(1/p)*l=t
その場合、必要なメトリック1/pとlである。pは元々分数であるため、これらの値(1/pおよびl)は両方とも整数である。スケジュールされたパケットの長さは、スケジューラ階層を介して上方に渡され、その層のデッドラインを漸進的に更新する。各更新内で行われる計算は、詳細には、以下の通りである。
d=d+[(1/p)*l]
式中、dおよび1/p(重み)は、スケジューラ層記述子内に格納され、lはスケジュール更新の間に階層を介して渡される。この計算は、スケジューラマネージャ330内で実行される。
以上、本発明の具体的実施形態について説明したが、これは一例にすぎず、様々な変更が考えられることを理解すべきである。さらに、本発明は、それだけに限らないが、例えば、携帯電話機やインターネットプロトコル上の音声(VoIP)など、マルチコアプロセッサを用いる任意の装置またはアプリケーションにおける一般的な用途のものである。したがって、この具体的実施形態は、添付の特許請求の範囲によって決定されるべきである保護の範囲を限定するものとみなされるべきではない。
本発明の一実施形態によるリソース管理/タスク割り振りコントローラを組み込んだシステムの論理的レイアウトを示す概略的ブロック図である。 本発明を実施するコントローラが、専用メモリデバイスおよびコントローラクライアントと共に、汎用マルチコアプロセッサアーキテクチャ内に組み込まれている、図1の論理的レイアウトの1つの例示的実施を示す概略的ブロック図である。 図2の要素を組み込んだ最新のシステムオンチップ(SoC)バスベースアーキテクチャの一例を、やはりブロック図として示す図である。 図1、2および3のコントローラへの外部接続をより詳細に示す図である。 図2および3のメモリデバイスをより詳細に示す図である。 図2、3および4のコントローラの内部構成をより詳細に示す図である。 図2および3に示すコントローラクライアントを示す概略的ブロック図である。 複数の処理リソースのプロキシとして働く単一のコントローラクライアントの場合のシステムを示す概略的ブロック図である。 ハードウェアコントローラクライアントをより詳細に示す概略的ブロック図である。 総称記述子を示す図である。 総称記述子に関連付けられるフィールドを示す図である。 スレッド記述子を示す図である。 スレッド記述子に関連付けられるフィールドを示す図である。 スケジューラ層記述子を示す図である。 スケジューラ層記述子に関連付けられるフィールドを示す図である。 ディスパッチ待ち行列記述子を示す図である。 ディスパッチ待ち行列記述子に関連付けられるフィールドを示す図である。 保留待ち行列記述子を示す図である。 保留待ち行列記述子に関連付けられるフィールドを示す図である スキップリスト記述子を示す図である。 スキップリスト記述子に関連付けられるフィールドを示す図である スレッド記述子と、システム管理コントローラと、処理リソースと、共用システムメモリの間の典型的な関係を示す図である。 2つの異種の処理リソースが存在する、図10の構成における間接化の原理を示す図である。 図4のコントローラ内のスレッド管理を示す典型的な全体図である。 典型的な保留待ち行列構造を示す図である。 典型的な保留待ち行列スキップリストを示す図である。 典型的なタイマ待ち行列を示す図である。 2つの処理ソースでの典型的な作動可能待ち行列構造を示す図である。 典型的な単一ディスパッチ待ち行列構造の例示的実施形態を示す図である。 スレッドバンドリングを含む、2層スケジューリング階層を示す図である。 通信システムにおいて一般に見られる簡略化された待ち行列構造の一例を示す図である。

Claims (61)

  1. 実行可能トランザクションを処理するためのリソースを提供する、複数の相互接続されたプロセッサ要素を有するマルチコアプロセッサを制御するリソース管理/タスク割り振りコントローラであって、
    前記複数のプロセッサ要素のうちの少なくとも一つのプロセッサ要素は、電源投入時にマスタとして始動し、前記コントローラと物理的に分離されており、前記マルチコアプロセッサ内の実行可能トランザクションの割り振りを受信するように適合されており、
    前記コントローラは、前記マスタとして始動したプロセッサ要素を含む前記複数のプロセッサ要素のそれぞれと通信するように適合されており、事前定義された割り振りパラメータに従って個々のプロセッサ要素に前記マルチコアプロセッサ内の実行可能トランザクションを割り振る制御論理を備え、
    初期設定シーケンスに続いて実行可能トランザクションを割り振るために前記制御論理を作動させ、
    前記制御論理は、複数のコントローラクライアントを介して、前記プロセッサ要素のそれぞれと通信し、
    前記コントローラクライアントの各々は、対応するプロセッサ要素に関連付けられており、関連付けられたプロセッサ要素と複数の相互接続されたプロセッサ要素のうちの少なくとも一つとの通信を制御するように構成されており、
    前記制御論理は、前記複数のコントローラクライアントを介して実行可能トランザクションを割り振るように構成されており、
    前記コントローラは、少なくとも一つの前記実行可能トランザクションを前記マスタとして始動したプロセッサ要素に割り振り、
    前記制御論理が、実行可能トランザクションマネージャと、専用メモリマネージャとをさらに備え、前記専用メモリマネージャが、前記実行可能トランザクションマネージャによる専用メモリへのアクセスを制御する、
    コントローラ。
  2. コントローラの前記制御論理内に含まれる事前定義された割り振りパラメータの範囲が、前記プロセッサ要素による前記実行可能トランザクションの実行のタイミングおよび/または順序のスケジューリングのための、複数のトランザクションスケジューリング規則を含む、請求項1に記載のコントローラ。
  3. コントローラの前記制御論理内に含まれる事前定義された割り振りパラメータの範囲が、前記実行可能トランザクションが前記プロセッサ要素によって実行されるやり方を制御するための、複数のシステム管理規則を含む、請求項1または2に記載のコントローラ。
  4. さらに、前記プロセッサ要素への通信のための命令を生成するように構成されている、請求項2または3に記載のコントローラ。
  5. プロセッサ要素に、前記プロセッサ要素を、コントローラによってそのプロセッサ要素に割り振られる実行可能トランザクションの後続の実行を可能にするようさらに適合させるプロセッサ要素構成命令を送るように構成されている、請求項4に記載のコントローラ。
  6. 前記プロセッサ要素への1つ以上の割り込みの送信によって命令を生成するように構成されている、請求項4または5に記載のコントローラ。
  7. 前記プロセッサ要素への1つ以上のポーリングの送信によって命令を生成するように構成されている、請求項4または5に記載のコントローラ。
  8. 前記実行可能トランザクションマネージャが、前記専用メモリ内の利用可能なメモリの指示を維持するように構成された、実行可能トランザクション入力マネージャをさらに備える、請求項1〜7のいずれか一項に記載のコントローラ。
  9. 前記実行可能トランザクションマネージャが、前記専用メモリ内の利用可能なメモリ位置のリストを維持するように構成されている、請求項に記載のコントローラ。
  10. 前記実行可能トランザクション入力マネージャが、前記専用メモリマネージャからの更新された命令の結果として前記利用可能なメモリの指示を維持する、請求項に記載のコントローラ。
  11. 前記割り振られるべき実行可能トランザクションが、それぞれが前記マルチコアプロセッサ上で実行されているアプリケーションの一部を形成するスレッドを含み、前記スレッドの少なくとも一部が、他のイベントと関係なく実行することのできる独立スレッドであり、前記スレッドのうちの前記独立スレッドの他のスレッドの少なくとも一部が、その実行が所定のイベントの存在に依存する従属スレッドである、請求項1〜10のいずれか一項に記載のコントローラ。
  12. 前記制御論理が、前記実行可能トランザクションマネージャにタイマ機能を提供するように構成されたタイムマネージャをさらに備える、請求項11に記載のコントローラ。
  13. 前記所定のイベントがタイミングイベントである、請求項12に記載のコントローラ。
  14. 前記所定のイベントが、前のスレッドの実行の完了、または別のより適格なスレッドによる優先使用である、請求項11に記載のコントローラ。
  15. 前記実行可能トランザクションマネージャが、所定のイベントの発生を待ち受ける従属スレッドを指示する、前記専用メモリ内の少なくとも1つの保留待ち行列リストと、タイミングイベントを待ち受けるスレッドを指示する、前記専用メモリ内の少なくとも1つのタイマ待ち行列リストとを維持するように構成された実行可能トランザクション同期マネージャをさらに備える、請求項11に記載のコントローラ。
  16. 前記実行可能トランザクションマネージャが、関連付けられた前記プロセッサ要素の1つでの実行を待ち受ける前記スレッドを指示する、前記専用メモリ内の複数のディスパッチ待ち行列構造を維持すると共に、前記プロセッサ要素の1つで実行するための前記プロセッサ要素の1つへの割り振りを待ち受けるスレッドを指示する、前記専用メモリ内の複数の作動可能待ち行列構造を維持するように構成された実行可能トランザクション出力マネージャをさらに備える、請求項15に記載のコントローラ。
  17. 前記実行可能トランザクションマネージャが、各プロセッサ要素ごとに、前記作動可能待ち行列内から前記ディスパッチ待ち行列へのスレッドのディスパッチに優先順位付けするスケジューリング決定を提供し、維持するように構成された実行可能トランザクションスケジュールマネージャをさらに備える、請求項16に記載のコントローラ。
  18. 前記制御論理が、前記実行可能トランザクションマネージャと通信する、コントローラによる前記マルチコアプロセッサへのアクセスを管理するように構成されたシステムインターフェースマネージャをさらに備える、請求項1〜17のいずれか一項に記載のコントローラ。
  19. 前記システムインターフェースマネージャが、相互接続インターフェースおよび構成、ならびに前記実行可能トランザクションマネージャへの実行時アクセスを提供するように構成されている、請求項18に記載のコントローラ。
  20. 前記制御論理が、前記マルチコアプロセッサ内で用いられる第1のフォーマットのシステム割り込みを、前記実行可能トランザクションマネージャが理解可能な、第2の異なるフォーマットのコントローラ割り込みに変換するシステム割り込みマネージャをさらに備える、請求項6に記載のコントローラ。
  21. 請求項1〜20のいずれか一項に記載のコントローラを備えるマルチコアプロセッサであって、それぞれが関連付けられたコントローラクライアントを有する複数の相互接続されたプロセッサ要素を有し、各コントローラクライアントが、前記コントローラからの制御信号に応じて、前記プロセッサ要素とマルチコアプロセッサの残りの部分の間の通信を制御するように構成されている、マルチコアプロセッサ。
  22. 請求項1〜20のいずれか一項に記載のコントローラを備えるマルチコアプロセッサであって、複数の相互接続されたプロセッサ要素と、少なくとも1つのコントローラクライアントとを有し、前記コントローラクライアントが、前記コントローラからの制御信号に応じて、前記プロセッサ要素とマルチコアプロセッサの残りの部分との間の通信を制御するように構成されている、マルチコアプロセッサ。
  23. 前記コントローラからも、前記複数の相互接続されたプロセッサ要素からもアクセス可能な共用システム相互接続をさらに備える、請求項21に記載のマルチコアプロセッサ。
  24. 前記マルチコアプロセッサを1つ以上の外部装置に接続する外部インターフェースをさらに備える、請求項23に記載のマルチコアプロセッサ。
  25. 前記コントローラと通信する専用メモリをさらに備える、請求項21〜24のいずれか一項に記載のマルチコアプロセッサ。
  26. 前記専用メモリが、前記コントローラから排他的にアクセス可能である、請求項25に記載のマルチコアプロセッサ。
  27. 前記専用メモリが、前記コントローラからも、前記マルチコアプロセッサの少なくとも1つの別のコンポーネントからもアクセス可能である、請求項25に記載のマルチコアプロセッサ。
  28. 前記専用メモリが、複数の個別メモリ要素を備える、請求項25に記載のマルチコアプロセッサ。
  29. 個別メモリ要素の数がユーザ定義可能である、請求項28に記載のマルチコアプロセッサ。
  30. 各メモリ要素が類似のサイズのものであり、前記ユーザ定義可能なメモリ要素の数が、結果として可変メモリサイズをもたらす、請求項29に記載のマルチコアプロセッサ。
  31. 前記コントローラクライアントが、前記関連付けられたプロセッサ要素上で実行中のソフトウェアアプリケーションである、請求項21に記載のマルチコアプロセッサ。
  32. 前記コントローラクライアントが、前記関連付けられたプロセッサ要素の機能に依存するハードウェアコントローラクライアントである、請求項21に記載のマルチコアプロセッサ。
  33. 前記コントローラクライアントが、前記コントローラからの制御信号による活動化時に、前記関連付けられたプロセッサ要素を制御するクライアント制御論理をさらに備える、請求項32に記載のマルチコアプロセッサ。
  34. 前記コントローラクライアントが、前記プロセッサ要素とマルチコアプロセッサの残りの部分の間で送られる通信メッセージの一時保管のための複数のバッファをさらに備える、請求項33に記載のマルチコアプロセッサ。
  35. 前記複数のバッファが、先入れ先出しバッファである、請求項34に記載のマルチコアプロセッサ。
  36. 前記コントローラクライアントが、それぞれがアドレスを格納するように構成された複数のメモリ要素をさらに備える、請求項34に記載のマルチコアプロセッサ。
  37. 前記コントローラクライアントが、それぞれが、前記関連付けられたプロセッサ要素によって生成されるアドレスを前記メモリ要素の1つに格納されるアドレスと比較するように構成された複数の比較器をさらに備える、請求項36に記載のマルチコアプロセッサ。
  38. 前記コントローラクライアントが、前記メモリ要素の1つに格納されるアドレスを、前記関連付けられたプロセッサ要素によって生成されるアドレスから差し引くように構成された減算器をさらに備える、請求項36に記載のマルチコアプロセッサ。
  39. 複数のプロセッサ要素を有するマルチコアプロセッサ内のリソースを制御し、割り振る方法であって、
    前記複数のプロセッサ要素のうちの、電源投入時にマスタとして始動するプロセッサ要素において、前記マルチコアプロセッサ内の実行可能トランザクションの割り振りを受信するステップと、
    前記マスタとして始動したプロセッサ要素とは物理的に別個のリソース管理/タスク割り振りコントローラにおいて、実行可能トランザクションを受け取るステップと、
    前記マスタとして始動したプロセッサ要素の制御とは関係なく、初期設定シーケンスに続いて、前記プロセッサ要素の1つにその実行可能トランザクションを割り振るステップと、
    コントローラクライアントを介して前記プロセッサ要素の1つに前記実行可能トランザクションを宛先指定するステップと、を備え、
    前記実行可能トランザクションを割り振るステップにおいて、少なくとも一つの前記実行可能トランザクションを前記マスタとして始動したプロセッサ要素に割り振り、
    前記リソース管理/タスク割り振りコントローラは、前記プロセッサ要素に前記実行可能トランザクションを割り振る制御論理を有し、前記制御論理は、実行可能トランザクションマネージャと、専用メモリマネージャとをさらに備え、前記専用メモリマネージャが、前記実行可能トランザクションマネージャによる専用メモリへのアクセスを制御する、
    方法。
  40. 前記コントローラクライアントがハードウェアクライアントである、請求項39に記載の方法。
  41. 前記コントローラクライアントがソフトウェアクライアントである、請求項39に記載の方法。
  42. 前記コントローラクライアント内に所定のアドレスを格納するステップをさらに備える、請求項40に記載の方法。
  43. 前記コントローラクライアントにおいて、前記関連付けられたプロセッサ要素によって生成されたアドレスから前記所定のアドレスを差し引いて、正規化されたアドレスを生成するステップをさらに備える、請求項42に記載の方法。
  44. 前記コントローラクライアントにおいて、前記関連付けられたプロセッサ要素によって生成されたアドレスを、前記格納された所定のアドレスと比較するステップと、
    前記比較の結果に応じて前記プロセッサ要素を構成するステップとをさらに備える、請求項42に記載の方法。
  45. 前記コントローラクライアントにおいて、前記マルチコアプロセッサの残りの部分から前記関連付けられたプロセッサ要素への通信メッセージ全部を格納するステップと、
    続いて、前記全メッセージを前記関連付けられたプロセッサ要素に渡すステップとをさらに備える、請求項40に記載の方法。
  46. 前記コントローラクライアントにおいて、前記マルチコアプロセッサの残りの部分から前記関連付けられたプロセッサ要素に通信メッセージをストリーミングするステップをさらに備える、請求項40に記載の方法。
  47. 第2のコントローラクライアントを用いて、第1のコントローラクライアントの実行可能トランザクションを作成し、実行し、または削除するステップをさらに備える、請求項39に記載の方法。
  48. 事前定義されたスケジューリングパラメータセットに基づいて、前記実行可能トランザクションを前記プロセッサ要素の1つに割り振るステップをさらに備える、請求項39〜47のいずれか一項に記載の方法。
  49. 前記スケジューリングパラメータセットがユーザ定義可能である、請求項48に記載の方法。
  50. 前記コントローラが使用するための前記スケジューリングパラメータのリストを監視するステップをさらに備える、請求項48または49に記載の方法。
  51. 時間の経過につれて前記スケジューリングパラメータセットを変更するステップをさらに備える、請求項48〜50のいずれか一項に記載の方法。
  52. 前記スケジューリングパラメータの前記リストを監視するステップが、前記プロセッサ要素の1つ以上によって実行され得る作動可能タスクのリストを維持する工程をさらに備える、請求項50に記載の方法。
  53. 前記マルチコアプロセッサ内のプロセッサリソースを均衡化するよう求める要件に基づいて、前記実行可能トランザクションを前記プロセッサ要素の1つに割り振るステップをさらに備える、請求項48〜51のいずれか一項に記載の方法。
  54. 前記プロセッサ要素の1つにとって、より優先度の高いタスクを実行することが望ましいと判定されるときに、前記実行可能トランザクションのそのプロセッサ要素への前記割り振りを妨げるステップをさらに備える、請求項48〜51のいずれか一項に記載の方法。
  55. 所定の長さの時間より長期間割り振られていない実行可能トランザクションのリストを維持するステップをさらに備える、請求項39〜54のいずれか一項に記載の方法。
  56. 前記スケジューリングパラメータの前記リストを監視するステップが、所定のイベントを待ち受ける保留タスクのリストを維持する工程をさらに備える、請求項50に記載の方法。
  57. 前記所定のイベントがタイマイベント、同期イベントまたは両方である、請求項56に記載の方法。
  58. 相互に排他的な所定のイベントに従って、複数の保留タスクのリストを維持するステップをさらに備える、請求項56に記載の方法。
  59. 前記スケジューリングパラメータの前記リストを監視するステップが、個々の処理リソース上での実行を待ち受けるディスパッチタスクのリストを維持する工程をさらに備える、請求項50に記載の方法。
  60. タイムアウト時に、所定のイベントを待ち受ける実行可能トランザクションを作動可能待ち行列に移動させるステップをさらに備える、請求項59に記載の方法。
  61. 前記コントローラが、もっぱら、前記タスクの割り振り専用である、請求項39〜60のいずれか一項に記載の方法。
JP2007505624A 2004-03-31 2005-03-30 マルチコアアーキテクチャにおけるリソース管理 Active JP5789072B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB0407384.7 2004-03-31
GBGB0407384.7A GB0407384D0 (en) 2004-03-31 2004-03-31 Resource management in a multicore processor
PCT/GB2005/001154 WO2005096143A1 (en) 2004-03-31 2005-03-30 Resource management in a multicore architecture

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2012221414A Division JP2013061947A (ja) 2004-03-31 2012-10-03 マルチコアアーキテクチャにおけるリソース管理

Publications (2)

Publication Number Publication Date
JP2007531137A JP2007531137A (ja) 2007-11-01
JP5789072B2 true JP5789072B2 (ja) 2015-10-07

Family

ID=32247648

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2007505624A Active JP5789072B2 (ja) 2004-03-31 2005-03-30 マルチコアアーキテクチャにおけるリソース管理
JP2012221414A Pending JP2013061947A (ja) 2004-03-31 2012-10-03 マルチコアアーキテクチャにおけるリソース管理
JP2013122998A Active JP6018021B2 (ja) 2004-03-31 2013-06-11 マルチコアアーキテクチャにおけるリソース管理

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP2012221414A Pending JP2013061947A (ja) 2004-03-31 2012-10-03 マルチコアアーキテクチャにおけるリソース管理
JP2013122998A Active JP6018021B2 (ja) 2004-03-31 2013-06-11 マルチコアアーキテクチャにおけるリソース管理

Country Status (7)

Country Link
EP (1) EP1730628B1 (ja)
JP (3) JP5789072B2 (ja)
KR (3) KR101248170B1 (ja)
CN (1) CN100517219C (ja)
GB (1) GB0407384D0 (ja)
TW (3) TWI407373B (ja)
WO (1) WO2005096143A1 (ja)

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0420442D0 (en) * 2004-09-14 2004-10-20 Ignios Ltd Debug in a multicore architecture
JP5088365B2 (ja) 2007-03-23 2012-12-05 富士通株式会社 電子機器および負荷分散プログラム
US8544014B2 (en) * 2007-07-24 2013-09-24 Microsoft Corporation Scheduling threads in multi-core systems
US8327363B2 (en) 2007-07-24 2012-12-04 Microsoft Corporation Application compatibility in multi-core systems
KR100958303B1 (ko) * 2007-12-12 2010-05-19 한국전자통신연구원 멀티코어 시스템 환경에서 내부 코어 간 통신채널을 이용한 모듈 디바이스의 동적 적재 및 실행을 통한 부하 균등화 시스템 및 방법
US8930644B2 (en) 2008-05-02 2015-01-06 Xilinx, Inc. Configurable transactional memory for synchronizing transactions
KR100953968B1 (ko) * 2008-09-11 2010-04-21 엘지전자 주식회사 멀티 프로세서 및 이를 이용한 전원 절감 방법
TWI486048B (zh) * 2008-09-12 2015-05-21 Chi Mei Comm Systems Inc 手機圖片轉換系統及方法
WO2010035315A1 (ja) 2008-09-24 2010-04-01 富士通株式会社 マルチコアcpuにおける消費電力制御方法,消費電力制御プログラム及び情報処理システム
TWI381315B (zh) * 2008-10-24 2013-01-01 Nat Univ Chung Cheng Synchronization elements for multi-core embedded systems
KR100981017B1 (ko) * 2008-12-08 2010-09-07 재단법인대구경북과학기술원 정적 태스크 정의 기능을 가진 시스템을 위한 우선순위 재정의 및 대기큐 관리 방법과 상기 방법을 실행하는 시스템
US9785462B2 (en) * 2008-12-30 2017-10-10 Intel Corporation Registering a user-handler in hardware for transactional memory event handling
JP2011034189A (ja) * 2009-07-30 2011-02-17 Renesas Electronics Corp ストリームプロセッサ及びそのタスク管理方法
TWI465916B (zh) * 2010-09-01 2014-12-21 Tatung Co 異質雙核心之非對稱傳輸系統與方法
CN101977313B (zh) * 2010-09-20 2012-11-21 中国科学院计算技术研究所 视频信号编码装置和方法
US20120096292A1 (en) * 2010-10-15 2012-04-19 Mosaid Technologies Incorporated Method, system and apparatus for multi-level processing
CN102012844B (zh) * 2010-11-29 2013-01-09 上海大学 一种面向cmp系统的线程调度方法
TWI432953B (zh) 2010-12-09 2014-04-01 Ind Tech Res Inst 具電源管理之超長指令處理器以及其電源管理裝置與方法
FR2975200B1 (fr) * 2011-05-12 2013-06-14 Peugeot Citroen Automobiles Sa Synchronisation de donnees dans un systeme de pilotage
KR101639854B1 (ko) * 2011-05-20 2016-07-14 소프트 머신즈, 인크. 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 상호접속 구조
US8335875B1 (en) * 2011-06-24 2012-12-18 Intel Corporation System and method for performing isochronous data buffering
KR101283911B1 (ko) * 2011-11-08 2013-07-16 재단법인대구경북과학기술원 운영체제의 알람 관리방법 및 그 운영체제, 그 기록매체
CN102521036A (zh) * 2011-12-05 2012-06-27 苏州希图视鼎微电子有限公司 指令驱动协处理器的任务中断方法及系统
SE537552C2 (sv) 2011-12-21 2015-06-09 Mediatek Sweden Ab Digital signalprocessor
KR101880452B1 (ko) 2012-02-06 2018-08-17 삼성전자주식회사 커널 수행 순서 스케줄링 방법 및 장치
CN108681519B (zh) * 2012-03-30 2022-04-08 英特尔公司 用于从多线程发送请求至加速器的机制
KR101984635B1 (ko) 2012-07-19 2019-05-31 삼성전자주식회사 어플리케이션을 고속으로 처리하는 연산 처리 장치 및 방법
KR101421232B1 (ko) 2012-10-25 2014-07-21 주식회사 시큐아이 패킷 처리 장치, 방법 및 컴퓨터 판독 가능한 기록 매체
US9361103B2 (en) * 2012-11-02 2016-06-07 Advanced Micro Devices, Inc. Store replay policy
CN103810223B (zh) * 2012-11-15 2017-03-01 中国科学院软件研究所 一种基于数据分组的内存数据组织查询方法
US9558003B2 (en) 2012-11-29 2017-01-31 Samsung Electronics Co., Ltd. Reconfigurable processor for parallel processing and operation method of the reconfigurable processor
US8984251B2 (en) * 2012-12-04 2015-03-17 Apple Inc. Hinting of deleted data from host to storage device
US9201791B2 (en) 2013-01-08 2015-12-01 Apple Inc. Flow-ID dependency checking logic
TWI492157B (zh) * 2013-03-05 2015-07-11 Andes Technology Corp 處理中斷要求事件的裝置與方法
US8959576B2 (en) * 2013-03-14 2015-02-17 Intel Corporation Method, apparatus, system for qualifying CPU transactions with security attributes
DE102013109990B4 (de) * 2013-08-30 2020-08-27 Fujitsu Ltd. Computersystem, Verwendung eines Systemmanagement-Bausteins und Verfahren zum bidirektionalen Datenaustausch
TWI489393B (zh) * 2013-11-15 2015-06-21 Univ Nat Yunlin Sci & Tech Applied Assignment Method for Multi - core System
US9588774B2 (en) 2014-03-18 2017-03-07 International Business Machines Corporation Common boot sequence for control utility able to be initialized in multiple architectures
US9552033B2 (en) * 2014-04-22 2017-01-24 Qualcomm Incorporated Latency-based power mode units for controlling power modes of processor cores, and related methods and systems
TWI644253B (zh) * 2014-07-18 2018-12-11 軸子研究有限公司 Data processing device and control method thereof
US20160092117A1 (en) * 2014-09-26 2016-03-31 Intel Corporation Reduction of performance impact of uneven channel loading in solid state drives
TWI554945B (zh) * 2015-08-31 2016-10-21 晨星半導體股份有限公司 例行工作的分配方法及應用其之多核心電腦
GB2543302B (en) * 2015-10-14 2018-03-21 Advanced Risc Mach Ltd Vector load instruction
GB2547893B (en) * 2016-02-25 2018-06-06 Advanced Risc Mach Ltd Combining part of an offset with a corresponding part of a base address and comparing with a reference address
CN106878389B (zh) * 2017-01-04 2020-02-07 北京百度网讯科技有限公司 用于在云系统中进行资源调度的方法和装置
KR102297512B1 (ko) 2017-04-04 2021-09-03 삼성전자주식회사 전자 장치 및 그의 제어 방법
CN110737616B (zh) * 2018-07-20 2021-03-16 瑞昱半导体股份有限公司 处理中断优先级的电路系统
CN111371820A (zh) * 2018-12-25 2020-07-03 上海亮衡信息科技有限公司 一种基于定时器触发的通信方法、系统及通信设备
CN110008123B (zh) * 2019-03-28 2022-04-26 武汉达梦数据库股份有限公司 一种自动部署测试软件的方法以及相应的装置
CN111913809B (zh) * 2020-07-28 2024-03-19 阿波罗智能技术(北京)有限公司 多线程场景下的任务执行方法、装置、设备和存储介质
KR102530348B1 (ko) * 2020-11-17 2023-05-09 이화여자대학교 산학협력단 Gpgpu의 스레드 블록 스케줄링 방법 및 장치
CN112286863B (zh) 2020-11-18 2023-08-18 合肥沛睿微电子股份有限公司 处理暨存储电路
TWI786476B (zh) * 2020-11-25 2022-12-11 大陸商合肥沛睿微電子股份有限公司 處理暨儲存電路

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB8711663D0 (en) * 1987-05-18 1987-06-24 Singer Link Miles Ltd Multiprocessing architecture
JPH03138753A (ja) * 1989-10-25 1991-06-13 Mitsubishi Electric Corp マルチプロセッサシステムのブートロード装置
JPH0635724A (ja) * 1992-07-21 1994-02-10 Fujitsu Ltd イベント同期制御方式
US5504670A (en) * 1993-03-31 1996-04-02 Intel Corporation Method and apparatus for allocating resources in a multiprocessor system
JP3245500B2 (ja) * 1994-04-28 2002-01-15 エヌイーシーマイクロシステム株式会社 マルチプログラミングにおける事象管理方式
KR0170506B1 (ko) * 1995-08-05 1999-03-30 양승택 멀티프로세서 인터럽트 처리기 및 인터럽트 처리 및 구동방법
KR100376056B1 (ko) 1995-12-29 2003-07-22 엘지엔시스(주) 멀티 프로세서 인터럽트 처리장치
KR970059923A (ko) * 1996-01-05 1997-08-12 구자홍 마이크로프로세서의 외부 인터럽트 제어장치
JP3001461B2 (ja) * 1997-05-29 2000-01-24 日本電気ソフトウェア株式会社 プロセスのディスパッチ装置
US6212544B1 (en) * 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6427224B1 (en) 2000-01-31 2002-07-30 International Business Machines Corporation Method for efficient verification of system-on-chip integrated circuit designs including an embedded processor
US7007153B1 (en) 2000-03-30 2006-02-28 Agere Systems Inc. Method and apparatus for allocating functional units in a multithreaded VLIW processor
US6516393B1 (en) * 2000-09-29 2003-02-04 International Business Machines Corporation Dynamic serialization of memory access in a multi-processor system
US20030126416A1 (en) * 2001-12-31 2003-07-03 Marr Deborah T. Suspending execution of a thread in a multi-threaded processor

Also Published As

Publication number Publication date
TW200602981A (en) 2006-01-16
KR101239082B1 (ko) 2013-03-06
EP1730628B1 (en) 2018-12-26
WO2005096143A1 (en) 2005-10-13
TW201337769A (zh) 2013-09-16
TWI541725B (zh) 2016-07-11
KR20070022034A (ko) 2007-02-23
JP2013061947A (ja) 2013-04-04
TW201337768A (zh) 2013-09-16
CN100517219C (zh) 2009-07-22
TWI407373B (zh) 2013-09-01
JP2007531137A (ja) 2007-11-01
KR101248170B1 (ko) 2013-03-27
GB0407384D0 (en) 2004-05-05
KR20120003014A (ko) 2012-01-09
TWI502511B (zh) 2015-10-01
JP2013211050A (ja) 2013-10-10
KR101258502B1 (ko) 2013-04-26
KR20120106890A (ko) 2012-09-26
EP1730628A1 (en) 2006-12-13
CN1993674A (zh) 2007-07-04
JP6018021B2 (ja) 2016-11-02

Similar Documents

Publication Publication Date Title
JP5789072B2 (ja) マルチコアアーキテクチャにおけるリソース管理
US9779042B2 (en) Resource management in a multicore architecture
JP6495208B2 (ja) ストリームに基づく演算を実装するための汎用複数コアシステムのための方法および装置
US7925869B2 (en) Instruction-level multithreading according to a predetermined fixed schedule in an embedded processor using zero-time context switching
JP6294586B2 (ja) 命令スレッドを組み合わせた実行の管理システムおよび管理方法
EP2288989B1 (en) Local collections of tasks in a scheduler
JP2017182820A (ja) グラフィックス計算プロセススケジューリング
US20070150895A1 (en) Methods and apparatus for multi-core processing with dedicated thread management
JP6086868B2 (ja) ユーザモードからのグラフィックス処理ディスパッチ
JP2005235228A (ja) マルチプロセッサシステムにおけるタスク管理方法および装置
JP2013239199A (ja) マルチコアアーキテクチャにおけるスケジューリング
WO2013131340A1 (zh) 片上系统soc的多处理器的调度方法及装置
Rezaei et al. Ultrashare: Fpga-based dynamic accelerator sharing and allocation
Murtaza et al. Silicon real time operating system for embedded DSPs
Uddin Microgrid-The microthreaded many-core architecture
Labarta et al. Hybrid Parallel Programming with MPI/StarSs
Wu et al. BLQ: Light-Weight Locality-Aware Runtime for Blocking-Less Queuing
Samman et al. Architecture, on-chip network and programming interface concept for multiprocessor system-on-chip
MENELAOS WEIGHTED SCHEDULING IN HETEROGENEOUS ARCHITECTURES FOR OFFLOADING VARIABLE-LENGTH KERNELS

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070824

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080129

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20081219

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20090205

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20090310

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110104

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110329

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110405

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110704

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120403

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20120524

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120627

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120702

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120709

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120803

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120810

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120831

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120907

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121003

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20121204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130404

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130524

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20130614

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150107

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150611

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150731

R150 Certificate of patent or registration of utility model

Ref document number: 5789072

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313117

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250