JP5241737B2 - プロセッサ・システムにおいて命令レベルでのリソース割り当ての識別を可能にする方法および装置 - Google Patents

プロセッサ・システムにおいて命令レベルでのリソース割り当ての識別を可能にする方法および装置 Download PDF

Info

Publication number
JP5241737B2
JP5241737B2 JP2009547682A JP2009547682A JP5241737B2 JP 5241737 B2 JP5241737 B2 JP 5241737B2 JP 2009547682 A JP2009547682 A JP 2009547682A JP 2009547682 A JP2009547682 A JP 2009547682A JP 5241737 B2 JP5241737 B2 JP 5241737B2
Authority
JP
Japan
Prior art keywords
instruction
resource allocation
access request
hardware unit
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009547682A
Other languages
English (en)
Other versions
JP2010518472A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2010518472A publication Critical patent/JP2010518472A/ja
Application granted granted Critical
Publication of JP5241737B2 publication Critical patent/JP5241737B2/ja
Expired - Fee Related 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • 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 or 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 or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)
  • Storage Device Security (AREA)

Description

本願明細書の開示は、情報処理システムに関し、特に、情報処理システムにおける共有リソースの効率的な割り当てに関する。
情報処理システム(IHS:information handling system)には、情報の処理、取り扱い、伝達、または別の方法での操作を行う複数のプロセッサを用いるプロセッサ・システムが含まれ得る。マルチコア・プロセッサは、共通の集積回路上に統合された複数のプロセッサまたはコアを備えるプロセッサ・システムを表す1つの表現である。IHSまたはプロセッサ・システムは、複数のオペレーティング・システムを同時にサポートすることもある。さらに、複数のソフトウェア・プログラム・アプリケーションが、同時にプロセッサ・システム内で実行されることもある。例えば、プロセッサ・システムは、ウイルス検出用のプログラム・アプリケーションを実行する一方で、同時に、画像データを計算してディスプレイへ送出するプログラムを実行することもある。マルチプロセッシング環境は、複数のプログラムが、同時に実行される、または動く環境である。マルチプロセッシング環境は、従来のプロセッサ・アーキテクチャでは一般的である。
プロセッサ・システムにおける典型的なソフトウェア・プログラム・アプリケーションは、メモリ・アドレスおよび入出力(I/O:input/output)リソースを、プログラム実行中の標準的なプロセスとして消費する。プロセッサ・システムは、メモリ・バスまたはI/Oバス、あるいはその両方を用いるロードおよびストア動作を実行する。プロセッサ・システムは、効率的なリソース管理の重要な機能として、バス・リソースの割り当てに依存する。読み書き要求としても知られる、メモリ・ロード/ストア要求は、データ転送のためにメモリ・バスの使用を必要とする。アクティブなソフトウェア・アプリケーションは、IHSに備わっているシステム・メモリへの、またはシステム・メモリからのメモリ・データ転送の要求を開始することもある。従来のプロセッサ・システムは、メモリ・アクセスのリクエスタを複数含むこともある。さらに、他の複数プログラムと同時に動く2つ以上のプログラムが、メモリ・ロード/ストア要求を行い、それによって、メモリ・ロード/ストアまたは情報転送動作を開始することもある。さらに、プロセッサ・システム内の複数プロセッサが、共通のI/Oバスを要求することもある。したがって、プロセッサ・システムの種々の機能要素は、プロセッサ・システムのリソースを得るために競合し、結局はリソースを共有しなければならない。
プロセッサ・システムは、典型的には、メモリ・バスの複数の要求を管理し、各リソースの帯域幅の一部を各リソース・リクエスタに割り当てるリソース・マネージャを含む。プロセッサ・システム内のプロセッサまたはプロセッサ要素が、リソース・リクエスタである。リソース要求とリソースの利用可能性とのバランスをとることが、効果的なリソース・マネージャの設計における主要な課題となる。プロセッサ・システムは、競合するリクエスタが共有しなければならない共通のI/Oインターフェース・バスも含む。より詳しくは、プロセッサ・システムは、競合するオペレーティング・システム、ソフトウェア・アプリケーション、およびプロセッサ要素の間で共通のI/Oインターフェース・バスを共有する。リソース・マネージャは、帯域幅を、競合する複数のI/Oインターフェース・リソース・リクエスタに割り当てる。I/Oインターフェース・バスは、次に限定はされるものではないが、周辺のプロセッサ・システム、ディスプレイ、キーボード、マウス、メディア・ドライブ、およびその他のデバイスなどの外部デバイスと通信する。
プロセッサ・システムの従来のソフトウェア・アーキテクチャ上の階層は、ハイパーバイザ、すなわち、プロセッサ・リソース、メモリ・リソースおよびI/Oリソースに対するオペレーティング・システム(単数または複数)のアクセスをコントロールするソフトウェアの層を含むと考えられる。ハイパーバイザは、弱体化を招く競合を伴わずに、複数のソフトウェア・アプリケーションおよびオペレーティング・システムをプロセッサ・システムまたはIHSにおいて実行できるようにする。ハイパーバイザは、リソース・マネージャをコントロールし、リソース・マネージャがプログラム・アプリケーションごとに許可するメモリおよびI/Oバス帯域幅の量を制限し、それによって、複数のプログラム・アプリケーションがプロセッサ・システム内で効果的に協調して共存する環境を実現する。リソース・マネージャは、メモリおよびI/Oバスの使用を制限または限定することによって、メモリ帯域幅およびI/Oバス帯域幅をコントロールする。そのようなリソース・マネージャがなければ、1つのアプリケーションが、I/Oリソースを無制限に消費して、その結果、別のアプリケーションが適当なタイムフレーム内でアプリケーション・タスクを完了するのに十分なバス帯域幅を得られないようにするおそれがある。メモリ・バスまたはI/Oバスのリソース管理が不十分であると、連続的な再試行またはプログラムの中断など、望ましくない状況が生じ得る。より詳しくは、不十分なバス・リソース管理により、プロセッサ・システムが限られたバス帯域幅リソースを非効率的に消費するようになるかもしれない。プロセッサまたは単一の集積回路が、複数のコアまたはプロセッサ要素、ならびにメモリおよびI/Oコントローラを含むプロセッサ・システムは、現在では一般的である。そのようなプロセッサ・システムは、マルチコア・プロセッサまたはシステム・オン・チップ(SoC:system‐on‐a‐chip)と呼ばれることもある。このようなプロセッサ・システムは、メモリおよびI/Oリソースへのアクセスを要求することができる1つ以上のハードウェア・ユニット(HU:hardware unit)を含み得る。HUは、1つまたは複数の汎用プロセッサ・コア、1つまたは複数の専用プロセッサ・コア、およびI/Oデバイスの代わりに要求を開始し得るI/Oコントローラを含むこともある。そのようなマルチコア・プロセッサ内のリソース・マネージャは、メモリおよびI/O帯域幅の各部分を、プロセッサ・システム内のハードウェア・ユニットのリソース割り当てグループ(RAG:resource allocation group)に割り当てるとよい。残念ながら、この割り当ては、典型的には比較的粗雑である。例えば、単一のハードウェア・ユニット上で動く複数のオペレーティング・システムごと、またはプログラム・アプリケーションごとに異なるリソースの必要性に対応しない。そのような粗雑なリソース割り当ては、プロセッサ・システムまたはIHSにおいて動作面の問題を生じさせることもある。例えば、このような粗雑なリソース割り当てが原因で、ウイルス・スキャンなどの高帯域アプリケーションが、グラフィカル・ユーザ・インターフェースなどのユーザ対話型アプリケーションの実行を事実上制限する可能性がある。これは、ユーザの体験に悪影響をもたらし得る。
第1の態様によれば、複数のハードウェア・ユニットを含むプロセッサによって共有リソースにアクセスする方法が提供される。方法は、共有リソースへのアクセス要求を呼び出す実行命令を、プロセッサ内のハードウェア・ユニットによって受け取ることを含む。方法はさらに、ハードウェア・ユニット内の複数のパイプライン・ステージ(pipelined stage)を命令が通るときに、リソース割り当て識別情報を命令に提供することを含み、リソース割り当て識別情報は、ハードウェア・ユニット内のパイプライン・ステージからパイプライン・ステージへと、命令とともに進む。
パイプライン・ステージのうちの1つが、命令に関して有効アドレスから実アドレスへの変換を行うアドレス変換パイプライン・ステージである一実施形態では、リソース割り当て識別情報は、アドレス変換パイプライン・ステージにて命令と関連付けられる。一実施形態では、パイプライン・ステージのうちの1つはストア・キューであって、ストア・キューは、アドレス変換パイプライン・ステージによるアドレス変換の後に、命令と、関連するリソース割り当て識別情報とを受け取る。
第2の態様が提供される場合、それによれば、半導体ダイ上に位置する複数のハードウェア・ユニットを含むプロセッサが開示される。複数のハードウェア・ユニットは、共有リソースにアクセスするよう構成されている。複数のハードウェア・ユニットは、第1のハードウェア・ユニットを含む。第1のハードウェア・ユニットは、複数のパイプライン・ステージを含み、共有リソースへのアクセス要求を呼び出す実行命令を受け取る。第1のハードウェア・ユニットは、第1のハードウェア・ユニット内の複数のパイプライン・ステージを命令が通るときに、リソース割り当て識別情報を命令に提供するよう構成されている。
共有リソースは、複数のハードウェア・ユニットの外部にあることが好ましい。
一実施形態では、第1のハードウェア・ユニットのパイプライン・ステージのうちの1つが、命令に関して有効アドレスから実アドレスへの変換を行うアドレス変換パイプライン・ステージであり、リソース割り当て識別情報は、アドレス変換パイプライン・ステージにて命令と関連付けられる。一実施形態では、パイプライン・ステージのうちの1つはストア・キューであって、ストア・キューは、アドレス変換パイプライン・ステージによるアドレス変換の後に、命令と、関連するリソース割り当て識別情報とを受け取る。一実施形態では、第1のハードウェア・ユニットを除く他の複数のハードウェア・ユニットはそれぞれ、複数のパイプライン・ステージを含み、上記他のハードウェア・ユニットは、共有リソースへのアクセス要求を呼び出す実行命令を受け取る。上記他のハードウェア・ユニットは、上記他のハードウェア・ユニット内の複数のパイプライン・ステージを通る個々の命令に、リソース割り当て識別情報を提供する。
以下、一例として、次の図面を参照して本発明の好適な実施形態を開示する。
本発明の好適な実施形態に従った、プロセッサ・システムのリソース・マネージャのブロック図である。 本発明の好適な実施形態に従った、図1のプロセッサ・システムのリソース割り当てマップである。 本発明の好適な実施形態に従った、図1のプロセッサ・システムで使用可能なハードウェア・ユニットのブロック図である。 本発明の好適な実施形態に従った、プロセッサ・システムで使用可能な、開示されるハードウェア・ユニットのブロック図である。 本発明の好適な実施形態に従った、図4のハードウェア・ユニットを含む開示されるプロセッサ・システムのブロック図である。 本発明の好適な実施形態に従った、図4の開示されるハードウェア・ユニットのERATルックアップ・テーブルの例を表すものである。 本発明の好適な実施形態に従った、図4の開示されるハードウェア・ユニットのFIFO(first in first out)ストア・キューの例を表すものである。 本発明の好適な実施形態に従った、開示される方法を用いたプロセッサ・システム内でのストア要求の処理を示すフロー・チャートである。 本発明の好適な実施形態に従った、開示されるリソース割り当て方法を用いる情報処理システムのブロック図である。
複数のプロセッサ・ユニットを含むプロセッサ・システムにおいて、リソース割り当てマネージャ(RAM:resource allocation manager)は、メモリおよびI/O帯域幅割り当てレートを、メモリまたはI/Oアクセスを要求し得る各プロセッサ・ユニットに割り振ることで、複数のプログラム・アプリケーション間のリソース帯域幅レートを管理するとよい。ハードウェア・ユニット(HU)という表現は、メモリまたはI/Oアクセス要求を出し得る、プロセッサ・システム内の各プロセッサ・ユニットに対応する。そのようなハードウェア・ユニット内で実行されるシステム・ソフトウェア・プログラム・アプリケーション内のロードまたはストア命令は、特定のメモリまたはI/O要求を生成し得る。トークン・マネージャは、プロセッサ・システムが用いてもよい、リソース割り当てマネージャ(RAM)の一種類の例である。トークン・マネージャは、各ハードウェア・ユニット(HU)のリソース帯域幅割り当てレートを制御する、1つ以上のリソース・コントロール・レジスタを含むとよい。RAMは、ハードウェア・ユニットHUをリソース割り当てグループ(RAG)にグループ化する。リソース・コントロール・レジスタは、プロセッサ・システム内の特定のRAGそれぞれを、トークン・マネージャ内での別々の識別子の割り振りによって識別する。トークン・マネージャは、トークン付与プロセス(token grant process)によって、要求元ハードウェア・ユニット(HU)にメモリおよびI/Oインターフェース・バスの使用を許可する。トークンは、HUによるバス帯域幅要求の個別的なコントロールを実現して、メモリおよびI/Oバス帯域幅の使用をコントロールする。トークン・マネージャが各リソース割り当てグループ(RAG)に関連付けるバス帯域幅の量は、トークン・レート、すなわち、トークン・マネージャがトークンを所定のRAG内の要求元HUに付与するレートとして知られている。トークン・マネージャは、トークン・マネージャのリソース・コントロール・レジスタにおいて、特定のトークン・レートをRAGの識別子に関連付けることによって、特定の帯域幅割り当てレートを特定のRAGに割り振るとよい。
ハイパーバイザは、トークン・マネージャ内のリソース・コントロール・レジスタを再プログラムして、プロセッサ・システムにおけるHUのRAG割り振りそれぞれに関して、トークン・レートまたは帯域幅割り当てレートに変更を加えてもよい。既存のRAGのトークン・レートに変更を加えるための時間またはシステム・バス・サイクルは、RAGの割り振りをプログラム実行中に変更する際の主要な欠点である。実行中のプログラムは、最初に、現在未解決の全リソース要求、すなわち、既存のリソース割り当て設定を使用するリソース要求または命令を使い果たす、すなわち「フラッシュ」する必要がある。プロセッサ・システムは、この命令フラッシュを、「SYNC」コマンドを用いて遂行する。さらに、プログラム・アプリケーションは、新たな帯域幅割り当てレートが影響する既存命令の前に、SYNCコマンド命令を挿入する必要がある。SYNCコマンドは、SYNCコマンドに続く次の命令より前に、パイプライン・キューが完了するまで、すなわち空になるまで、プログラム命令の既存のパイプライン・キューに処理を続けさせる。新たな帯域幅レートが有効になる前に、すべてのバスI/O動作が完了する必要がある。この、SYNCコマンドに基づくプロセスは、望ましくないほど長い時間を消費することもある。
SYNCコマンド・プロセスが完了すると、パイプライン・キュー内の次の命令が、RAMのコントロール・レジスタ、およびその結果としてRAG帯域幅割り当てレートに変更を加えることができる。RAMのコントロール・レジスタに変更を加えるプロセスも、RAMと、新たなRAG割り振りを要求するHUとの間の距離が比較的長いことが原因で、望ましくないほど長い時間を消費し得る。新たなRAG割り振りが完了すると、HU内の命令パイプライン・キューは、後の命令に関して新たな帯域幅割り当てレートで処理を続けることができる。残念ながら、この遅いRAG割り振り変更プロセスは、帯域幅割り当てレートの変更中に実行される複雑なシステム・クロック・サイクルに関連するシステム遅延を生じさせることもある。このような理由で、このRAG割り振り変更プロセスは、帯域幅割り当てレートを変更する望ましい方法ではない。
RAG割り振り変更の別の手法では、各HUが、個々のHU内のリソース割り当て識別子(RAID:resource allocation identifier)レジスタを使用して、特定のRAGへのHUの割り振りを特定する。RAIDの割り振り、ひいては特定のHUのリソース帯域幅割り当てレートに変更を加えることが、個々の命令間のリソース帯域幅レートを調節する、より現実的な手法である。HUがRAID情報をローカルに維持することが理由で、RAIDを変更し、その結果、異なる帯域幅割り当てレートを有する可能性のある他のRAGにHUを関連付けるためにプロセッサ・システムが使うシステム・バス・サイクル時間が減る。このローカルRAIDストレージ手法は、ローカルRAIDストレージを用いない手法よりも高速である。しかし、このローカルRAIDストレージ手法では、プロセッサ・システムは依然として、命令パイプライン・キューをフラッシュし、新たな帯域幅割り当てレートが、新たなレートを必要とする次の命令と同期をとることができるようにする。したがって、ローカルRAIDストレージ手法もやはり、システム・リソース時間の点から見ると望ましくないほどにコストがかかる。
リソース割り当てマネージャ(RAM)は、プロセッサ・システム内のハードウェア・ユニット(HU)の中核を成し、メモリ・アクセスおよびI/Oインターフェース・アクセスのHU要求を管理する。さらに、RAMは、複数HUのリソース割り当てグループ(RAG)それぞれの、個々の帯域幅割り当てレートをコントロールすることによって、バス使用を管理する。システム・ソフトウェアは、システム・メモリのストアをプロセッサ・システム内の特定のタスクに割り当て得るが、メモリ・バスは、複数のアプリケーションが共有しなくてはならないリソースを表す。さらに、RAMは、メモリ・バス帯域幅を効果的に管理して、メモリ・リソースの効率的な使用を実現しなければならない。
図1は、プロセッサ・システム100における集中型のリソース管理を示すブロック図である。プロセッサ・システム100は、マルチコア・プロセッサ105を含み、マルチコア・プロセッサ105は、その中に統合されているリソース割り当てマネージャRAM110を備える。マルチコア・プロセッサの一例は、IBM(IBM社の登録商標)社、ソニーおよび東芝の「Cell Broadband Engine Architecture、 Version 1.0」という題の、2005年8月8日の公表資料に示されているものなどのセル・ブロードバンド・エンジン(CBE:cell broadband engine)プロセッサである。この公表資料の開示全体を、参照によって本願明細書に引用したものとする。RAM110は、汎用コンピューティング能力をもたらす電力プロセッサ要素PPE(power processor element)115に結合している。1つの手法では、RAM110は、要求元HUに対してメモリまたはI/Oバスを許可するためのトークンを付与する、トークン・マネージャである。各トークンは、例えば128バイト、または特定用途に応じたその他の値など、バス帯域幅の特定の割り当てレートを表すとよい。
電力プロセッサ要素PPE115は、RAM110からのトークンを蓄積すること、または蓄える(bank)ことができる。より詳しくは、PPE115は、RAM110からのトークンを要求し、RAM110からのトークンを蓄え、すなわち保持してもよい。PPE115は、後からのメモリまたはI/O要求に対するRAM110からの承認としてトークンを使用してもよい。この特定のプロセッサ・システム100は、8つの相乗プロセッサ要素(synergistic processor element)、すなわちSPE‐1、SPE2、SPE‐3、SPE‐4、SPE‐5、SPE‐6、SPE‐7、およびSPE‐8を含み、これらは、図1に示されているようにRAM110に結合している。8つのSPEそれぞれ、ならびにPPE115は、RAM110からのトークンを個別に要求するとよい。したがって、各SPEおよびPPEは、本願明細書で定義されるハードウェア・ユニット(HU)である。この特定のプロセッサ・システム100では、SPEおよびPPEは、4つのリソース割り当てグループ(RAG)を表すことができる。RAM110内のコントロール・レジスタは、各RAGの帯域幅割り当てレートを格納する。
メモリ・コントローラ160は、RAM110に結合し、メモリ・バス165へのインターフェースを管理する。メモリ・バス165は、後述する情報処理システム(IHS)のシステム・メモリ(図示せず)に連結する。システム・メモリは、等しいメモリ・サイズの8つのバンクを含むとよい。メモリのロードまたはストアを要求するPPEまたはSPEなどのHUは、メモリの各バンクに個別にアクセスする。RAM110は、各バンクに関し別々のトークンを出す。メモリの個々のバンクは、アクセス・ロードおよびストア中に、セットアップおよびセトリング時間を必要とする。メモリの各バンクは、どのロードまたはストア動作を完了するためにも複数のバス・サイクルを必要とする。いかなるメモリ・バス動作も待ち時間が長いことから、RAM110は、メモリの同じバンクに関して繰り返しのトークンを連続して出すことを避ける。
I/Oインターフェース・コントローラ170は、RAM110に結合し、高速および低速インターフェース・バスへのI/Oインターフェースを管理する。より詳しくは、高速インターフェース入力バスIOIF(Input/Output interface)0‐入175および高速インターフェース出力バスIOIF0‐出180が、プロセッサ105を、別のCBEまたはグラフィック・ディスプレイなどの高速デバイスに結合する。低速インターフェース入力バスIOIF1‐入185および低速インターフェース出力バスIOIF1‐出190が、プロセッサ105を、キーボードおよびコンパクト・ディスク読み書きドライブなどの低速インターフェース・デバイスに結合する。I/Oバスは、入出力インターフェース・バス175〜190の略称である。
ハードウェア・ユニット(HU)は、プロセッサ・システム100においてメモリ・アドレスまたはI/Oに対するロードまたはストア要求を生成することで、メモリまたはI/Oリソース帯域幅の使用を直接要求する、プロセッサ・システム100内のハードウェア要素、プロセッサ要素または機能ユニットである。RAM110は、プロセッサ・システム100内のハードウェア・ユニット(HU)の任意のリソース割り当てグループ(RAG)にRAM110が割り当てるメモリおよびI/Oインターフェース帯域幅の量をコントロールする。図1に示されているように、プロセッサ・システム100は、PPE115およびSPE1〜8などのHUを含む。I/Oデバイスの代理として直接メモリ・アクセス(DMA:direct memory access)を要求するインターフェース・コントローラ170の能力が理由で、I/Oインターフェース・コントローラ170は、この特定のプロセッサ・システム100のアーキテクチャでは、第10のHUとしての要件を満たす。メモリ・コントローラ160よびメモリ・バス165は、メモリ・コントローラ160も、メモリ・バス165も、メモリまたはI/Oバスの使用を直接要求しないため、ハードウェア・ユニットHUとしての要件を満たさない。10個のHUはすべて、動作およびRAM110との対話の間中、CBEのメモリおよびI/O帯域幅の使用をめぐって競合する。
RAM110は、HUを等しい帯域幅割り当てレートのグループ、すなわちリソース割り当てグループ、つまりRAGに編成する。RAM110は、I/Oバス帯域幅の合計のうちの所定の割合を各RAGに割り当てる。RAM110は、トークンを生成し、それに対し所定のRAGを付与する。さらに、RAM110は、トークンを出すこと、すなわちトークン付与レートによって、リソース割り当てを管理する。各トークンは、メモリ・バスおよびI/Oインターフェース・バス・リソース割り当てのメカニズムを実現する。この例では、各トークンは、メモリまたはI/Oの128バイトの帯域幅をサポートする。RAM110がHUにトークンを付与すると、HUは、128バイトというIOバス使用のトークン・サイズまでで、許可されたI/Oまたはメモリ・バス・プロセスを開始し、完了するまでI/Oまたはメモリ・バス・プロセスを管理する。
図2は、図1のプロセッサ・システム100のRAM110が用いるとよい、1つのリソース割り当てマップを示す図である。図は、リソース割り当てグループ番号、すなわちRAG番号(RAG#)を表す列210を含む。RAM110は、図2が示すリソース割り当てマップに従って動作する。ハイパーバイザを含むこともあるシステム・ソフトウェアが、プロセッサ・システム100の帯域幅割り当てレートを判断する。さらに、システム・ソフトウェアは、RAM110のリソース・コントロール・レジスタ195に、帯域幅レートのRAG割り振りをロードする。RAM110は、4つのリソース割り当てグループRAG、すなわち、列210に見られるRAG#0〜3それぞれに対する特定のメモリ・バスおよびI/Oインターフェース帯域幅割り当てレートを管理する。RAM110は、特定のハードウェア・ユニット(HU)に対するI/O帯域幅割り当てレートを管理し、その割り当てレートを、システム・ソフトウェアが特定のRAGに割り振るRAG番号に基づかせる。メモリ・アクセスまたはインターフェースI/O転送を要求するソフトウェア命令は、図2の列215のHUと、列210のRAG番号との間でRAG番号が関連付ける、リソース割り当てレート割り振りを使用する。
上記のように、ハードウェア・ユニット(HU)は、メモリ・アクセスまたはI/Oインターフェース転送を要求する能力がある、プロセッサ・システムのハードウェア処理要素である。図1の例および図2の列215では、ハードウェア・ユニット(HU)は、PPE、SPE‐1、SPE2、SPE‐3、SPE‐4、SPE‐5、SPE‐6、SPE‐7、SPE‐8、および最後にI/Oインターフェース・コントローラ170である。システム・ソフトウェアは、特定のRAIDビットを各HUの個々のRAIDレジスタに割り振ることで、列210に示されるように、特定のRAGの、数値で示される関連性を各HUに割り振る。さらに、列210のRAGの数値で示される割り振りは、動的に変化して、プロセッサ・システム100がシステム・ソフトウェアの要求通りにオンザフライで(on the fly)I/Oバス帯域幅割り当てレートの割り振りを変更できるようにしてもよい。図2のマップに示されているように、RAM110は、ハードウェア・ユニットPPE115およびSPE‐1を、0と等しいRAG番号、すなわちRAG0に割り振る。RAG0の割り振りは、RAG0のハードウェア・ユニットHUに対する特定の帯域幅割り当てレートを表す。PPE115およびSPE‐1からの、それから先のメモリ・アクセス要求またはI/Oインターフェース要求に対する帯域幅割り当てレートの割り振りは、システム・ソフトウェア、より具体的にはハイパーバイザが割り振りに変更を加えるまで、RAG0の割り振りに対応する。図2の例では、RAM110はさらに、SPE‐2、SPE‐3、SPE‐4およびSPE‐5を、1というRAG番号1、すなわちRAG1に割り振る。RAM110は、SPE‐6およびSPE‐7を、RAG番号2、すなわちRAG2に割り振る。RAM110は、SPE‐8をRAG番号3、すなわちRAG3に割り振る。I/Oコントローラ170は、I/Oコントローラ170に隣接してRAG番号列210に示されている特定のRAG番号、すなわちRAG0〜RAG3にそれぞれ対応する、4つの仮想I/Oチャネル(図示せず)を含む。さらに、RAM110は、I/Oデバイスから生じる各I/O要求を、所定の仮想チャネルに割り振り、それによって、I/O要求を対応するRAGに割り振る。
一例では、プロセッサ・システム100はさらに、メモリ・バンク220を8つの別々のバンクに分割する。メモリの別々のバンクはそれぞれ、一意のメモリ・ロードまたはストア動作を表す。メモリ・バンク・アクセスまたはメモリ・データ転送には、RAM110に対するトークン要求と、RAM110による対応するトークン付与が必要である。RAM110は、メモリ・バンクのロードおよびストア動作の転送帯域幅を管理する。RAM110は、各メモリ・バンクのロードまたはストア要求と、単一の帯域幅レートとを関連付ける。メモリ・コントローラ160は、プロセッサ・システム100において、個々のメモリ・バンクI/Oロードおよびストア動作を管理する。
RAM110のトークン要求およびトークン付与プロセスは、バス帯域幅の利用可能性合計の或る割合に相当する。さらに、帯域幅割り当てレートは、バスの利用可能性全体、すなわち100%のうちの割合である。図2の例では、帯域幅の割合が、メモリ・バンク220の各列に示されている。RAG0は、総メモリ・バス帯域幅の20%を表すよう示されている。RAG1は、総メモリ・バス帯域幅の30%を表す。RAG2は、メモリ・バス帯域幅の15%を表す。図2に示されているように、RAG3は、総メモリ・バス帯域幅の10%を表す。最後に、I/Oコントローラ170の4つの仮想チャネルに対応するRAG0〜RAG3は、総メモリ・バス帯域幅の10%を表す。メモリ・バスの総バス帯域幅は100%であるが、バス帯域幅割合のRAG割り振り全体の合計は、必ずしも100%と等しいとは限らない。より詳しくは、必ずしもバスの完全利用がプロセッサ・システム100の標準状態であるとは限らないため、メモリ帯域幅の総割合は合わせて100%以下であればよい。図2の例では、メモリ帯域幅の総割合、すなわち85%が、列220に示されている割合すべての和を表す。
図2のI/Oインターフェースの列230は、RAM110が管理することになる第2〜第5のリソースを示す。これらのリンク・リソースは、I/OバスIOIF0‐入175、IOIF0‐出180、IOIF1‐入185およびIOIF1‐出190を含む。これら4つのI/Oインターフェース・バスはそれぞれ、RAM110の、特定の帯域幅割り当てリソースと、I/Oインターフェース・バス割り当て割合レートとを表す。より詳しくは、図2が示すように、RAM110は、特定のHUに特定のRAG番号を割り振り、今度はRAG番号が、割合として示される帯域幅割り当てレートを、5つの関連するリソース、すなわちメモリ・バンク220および4つのI/O230のバスそれぞれに割り振る。IOIF0‐入175は、RAG0に関して10%のI/Oインターフェース・バス帯域幅割り当てレートを、RAG1に関して20%を、RAG2に関して15%を、RAG3に関して15%を、さらに最後にRAG0〜RAG3に関して20%を表すよう図2に示されている。メモリ・バスの場合の様に、バス帯域幅割り当ての総割合は、合わせて総I/Oインターフェース・バス帯域幅割り当ての100%になる必要はない。列230のIOIF0‐出180は、RAG0に関して15%のI/Oインターフェース・バス帯域幅割り当てレートを、RAG1に関して10%を、RAG2に関して20%を、RAG3に関して25%を、さらに最後にRAG0〜RAG3に関して15%を表す。IOIF1‐入185は、RAG0に関して15%のI/Oインターフェース・バス帯域幅割り当てレートを、RAG1に関して20%を、RAG2に関して10%を、RAG3に関して10%を、さらに最後にRAG0〜RAG3に関して10%を表す。図2に示されているIOIF1‐出190は、RAG0に関して10%のI/Oインターフェース・バス帯域幅割り当てレートを、RAG1に関して10%を、RAG2に関して30%を、RAG3に関して15%を、さらに最後にRAG0〜RAG3に関して15%を表す。場合によっては、RAM110は、追加のRAG番号割り振りを使用して、帯域幅が現在割り当てられていないか、またはトークンが付与されていない要求元HUからのメモリまたはI/O要求を管理してもよい。
図3は、リソース割り当て識別子(RAID)レジスタ355を含むハードウェア・ユニット(HU)300のブロック図を示す。プロセッサ・システム100などのマルチコア・プロセッサ・システムは、そのすべてのハードウェア・ユニットとして、HU300を用いてもよい。より具体的には、プロセッサ・システム100は、HU300をPPE115、SPE‐1〜SPE‐8、およびI/Oコントローラ170として使用してもよい。しかし、そのようなHU300の構成を備えたプロセッサ・システム100は、以下の、バス帯域幅割り当ての割り振りの問題に直面することもある。
ハードウェア・ユニット(HU)300は、命令ハンドラ305および他のハードウェア306を含む。命令ハンドラ305は、後述のように命令の実行を扱う多段命令パイプライン(multi−stage instruction pipeline)を含む。他のハードウェア306は、ローカル・キャッシュ・メモリ、演算論理ユニット(ALU:arithmetic logic unit)、または特定のタイプのHUに適したその他のハードウェアなどのハードウェアを含むとよい。例えば、PPEまたはSPEタイプのHUはALUを含む可能性がある一方で、I/Oコントローラ・タイプのHUはALUを含まないと考えられる。
プロセッサ・システム100内の典型的なHU300など、特化して構成されている各HUは、プロセッサ・システム内で実行される、より大型のソフトウェア・アプリケーションまたはプログラム・アプリケーションの一部として、一連のプログラミング・ソフトウェア命令を開始し得る。特定のハードウェア・ユニットHU300が、プロセッサ・システム100内で実行されているプログラム・アプリケーションから一連の命令を受け取る。プログラム・アプリケーションの出力は、命令キュー307の入力に送り込まれる。HU300は、HU300内の命令ハンドラ305の命令キュー307に、命令を入れる。命令キュー307は、HU300内で実行される次の命令を含む命令レジスタ310に結合している。HU300は、HU内で実行される次の命令、例えばメモリ・ストアまたはI/Oインターフェース・ストア命令を復号する。ストア命令は、メモリまたはインターフェースI/O要求を必要とする。このストア命令の後、HU300が開始する次の命令が、命令キュー307から命令レジスタ310へ移動する。
命令ストア・シーケンスの間、HU300はまず、HUがストア命令の実行を完了するときにHUがデータを書き込むことになる有効アドレス(EA:effective address)の値を求める。命令ハンドラ305は、書き込み命令の有効アドレス(EA)の計算を容易にするオペランドを含んだ汎用レジスタ(GPR:general purpose register)315のセットを含む。汎用レジスタ(GPR)315は、オペランド・レジスタ320およびオペランド・レジスタ325に結合している。命令レジスタ310、オペランド・レジスタ320、およびオペランド・レジスタ325は、すべてEA生成器330の個別の入力に結合している。EA生成器330は、命令レジスタ310内のストア命令に関して有効アドレス(EA)を計算する。EA生成器330の出力は、EAレジスタ335の入力に結合しており、そこへストア命令の有効アドレスを提供する。EAレジスタ335の出力は、有効アドレス‐実アドレス変換器(ERAT:effective to real address translator)340の入力に結合している。ERAT340は、EAレジスタ335から有効アドレス・データを入力として受け取る。
メモリまたはI/Oストア要求の間、HU300は、ソフトウェア・アプリケーション動作アーキテクチャの中の有効アドレス変換を使用して実アドレスを生成する。実アドレスは、メモリ・アドレス位置に直接関係する。より詳しくは、実アドレスは、IHSのシステム・メモリ(図示せず)内など、HUの外部のメモリ位置に対応する。ERAT340は、連想配列のページ・テーブル変換データのページ・テーブル・キャッシュを使用するルックアップ・テーブル(LUT:lookup table)として機能し得る。さらに、ERAT340内の各エントリは、ページ・テーブル・エントリ(PTE:page table entry)である。ERAT340の各エントリは、有効アドレス(EA)をメモリのページの実アドレス(RA)にマッピングする。有効アドレス(EA)、すなわち仮想アドレスは、ERAT340ページ・テーブル・キャッシュまたはメモリ・マップ配列への入力を表す。ERAT340データ・テーブルは、EA入力と関連する実アドレス(RA)およびWIMGビットを格納する。HU300は、メモリ・ページごとにERATキャッシュを編成する。ERAT340のメモリ・ページは、固定サイズまたは複数の異なるサイズのうちの1つを示すとよい。これらメモリ・ページは、変換中のアドレスの最上位のビット・セットを表す。一例では、ERAT340は、4Kバイトの有効アドレスを変換し得る。この特定の例では、ERAT340は、有効アドレスの下位12ビットを変換に使用しない。さらに具体的には、ERAT340は、有効アドレスの下位12ビットをページ・オフセットとして解釈し、4Kバイトの有効アドレスの下位12ビットは、変換後、元の状態のままである。したがって、ページは、有効アドレスおよび実アドレス(RA)の、残りの上位アドレス・ビットを表す。
ERAT340は、メモリ・アドレス転送属性としてWIMGビットを格納する。より具体的には、図3の例において、ERAT340は、WIMGビットをアドレス・ストレージ属性として格納する。WIMGビットは、プロセッサ・システム内のソフトウェアおよびハードウェアがメモリにアクセスする方法を決定する。WIMGビットは、アドレス要求のライト・バックまたはライト・スルー状態に対応するWビットと、ストア要求のキャッシュ有効またはキャッシュ禁止状態を表すIビットとを含む。Mビットは、ストア要求のローカルまたはグローバルのアクセス権を表す。Gビットは、アドレス・ストア要求の保護または非保護状態に対応する。ERAT340の出力は、RA,WINGレジスタ345の入力に結合している。ERAT340は、物理、すなわち実アドレスRAと、ストレージ属性WIMGビットのセットとを出力として生成する。RA,WIMGレジスタ345は、有効アドレス‐実アドレス変換モジュールERAT340の出力を入力として受け取る。RA,WIMGレジスタ345の出力は、先入れ先出し(FIFO)パイプライン・ストア・キュー350の入力に結合している。ストア・キュー350は、RA,WIMGレジスタ345から命令シーケンスを受け取る。さらに、HU300は、これら命令シーケンスを、(FIFO)パイプライン・ストア・キュー350に集めて格納する。命令パイプライン・ストア・キュー350は、RA,WIMGレジスタ345からの後続の命令を保持する。ストア・キュー350に詰めていくことで、HU300が現在の命令を実行している間に、ERAT340によって新たなアドレスを変換できるようになる。現在の命令は、パイプライン(FIFO)ストア・キュー350の最下位置にある。HU300は、満杯または部分的に満杯のストア・キュー350の現在の命令を実行し、現在の命令のメモリまたはI/Oバス・アクセスを待つ。
HU300は、図3に示されているように、ハイパーバイザ・ソフトウェア層352を含む。さらに、HU300内で動いているハイパーバイザ352は、RAG識別子を表す2ビットのバイナリ・コードでRAIDレジスタ355をポピュレートする。RAIDレジスタ355の出力は、トークン・リクエスタ360の入力に結合している。トークン・リクエスタ360は、HU300がメモリまたはI/Oバス動作を必要とするときに、リソース割り当てマネージャRAM110からのトークンを要求する。RAIDレジスタ355は、4つのRAGのうちの1つ、すなわちRAG0、RAG1、RAG2またはRAG3を特定する2バイナリ・ビットのデータを含む。より詳しくは、RAG0〜RAG3は、RAM110における個々の帯域幅割り当てレートに直接対応する。HU300は、ストア・キュー350の最下のエントリを読み取り、RAIDレジスタ355内のRAIDビット値をトークン・リクエスタ360へ送出することによって、I/O要求を開始する。その後、トークン・リクエスタ360は、RAM110に結合している出力信号トークン要求ライン365に出力信号トークン要求を生成する。このようにして、トークン・リクエスタ360は、メモリ・バス・アクセスの要求を、リソース割り当てマネージャRAM110へ送出する。出力信号トークン要求は、RAIDレジスタ355からのHU300RAIDビットを2つ含む。RAIDレジスタ355からの2つのRAIDビットは、HU300のRAG識別子RAG0〜RAG3をそれぞれ表す。RAM110は、トークン要求を受け取り、HU300が必要とする帯域幅割り当てレートを評価する。RAM110は、HU300のRAID識別子ビットを、現在の帯域幅使用に対して評価し、トークン付与をトークン・リクエスタ360へ送るトークン付与ライン370上にトークン付与信号を生成することによって、トークンを付与する。
より詳しくは、RAM110は、RAM110内での適切なタイミングおよび帯域幅分析が完了すると、ライン370の入力にトークン付与信号を生成する。ストア・キュー350の出力は、スイッチ375の1つの入力に結合している。スイッチ375は、トークンの付与後にリソース要求が進むことを可能にするハードウェアを表す。ストア・キュー350の出力がメモリ・ストア命令であれば、ストア要求は、メモリ・バス165の使用を必要とする。ストア・キュー350の出力がI/Oストア命令であれば、ストア要求はI/Oバス175〜190の使用を必要とする。HU300は、ストア・キュー350の出力を評価して、どのバス、すなわちメモリ・バス165またはI/Oバス175〜190をストア要求が必要としているかを判断する。スイッチ375は、ストア・キュー350の出力を、図1のプロセッサ・システム100のメモリ・コントローラ160/システム・メモリ165またはI/Oコントローラ170/I/Oバス175〜190と効果的に接続および切断する。この切り替えは、HU300のスイッチ375に結合しているトークン・リクエスタ360にコントロールされる。トークン・リクエスタ360が、トークン付与ライン370上でRAM110からトークン付与信号を受け取ると、HU300は、効果的にスイッチ375を閉じ、ストア動作の最終ステージを開始する。さらに、HU300は、ストア・キュー350の最下のエントリが、スイッチ375を通って移動してメモリまたはI/Oバス175〜190にアクセスし、したがって、実アドレスおよびWIMGビットを、ストア動作のタイプに応じてメモリまたはI/Oバスに乗せることを許可する。ストレージ・データおよびデータ・サイズが、実アドレスおよびWIMGビット・データとともに進む。
上記の方法は、図1のプロセッサ・システム100内でのストア動作を示す。あるいは、プロセッサ・システム100は、書き込みデータの生成はしないが読み取りデータを要求するロード動作を扱うこともある。より具体的には、ロード動作の間、プロセッサ・システム100は、I/Oインターフェース・バス170〜190上にデータを書き込むことも、メモリ・バス165を介してシステム・メモリにデータを書き込むこともない。ロード動作には2つの段階がある。第1の段階では、HUがロード要求を開始し、最終的に、実アドレスをメモリ・バス165またはI/Oインターフェース・バス170〜190に乗せる。第2の段階で、プロセッサ・システムがロード・データを取り出した後、プロセッサ・システムはロード・データを要求元HUに渡し、ロード動作が完了する。実アドレス、WIMGビットおよびRAIDビットは、ストア動作で果たすのと同じ役割をロード動作において果たす。なお、簡単にするために、以下の説明ではストア動作に焦点を当てる。
図1および図2を参照する。RAM110は、プロセッサ・システム100の各HUに、RAM110のコントロール・レジスタ195内の特定のRAG番号を割り振る。さらに、RAG番号を割り振ることで、プロセッサ・システムの各ハードウェア・ユニットHUごとに特定の帯域幅割り当てレートを区別する際の柔軟性がもたらされる。なお、プログラム・アプリケーション間または各HU内の特定の命令間で帯域幅割り当てレートを区別するには追加動作が必要である。
再度図1および図2両方を参照する。RAM110内のコントロール・レジスタ195にあるデータに変更を加えることが、命令ごとにバス帯域幅割り当てレートの割り振りを変更する1つの手法を実現する。より具体的には、ハイパーバイザ352は、RAM110内のリソース・コントロール・レジスタ195を新たなバス帯域幅値で再プログラミングすることによって、帯域幅割り当てレートに変更を加えるとよい。リソース・コントロール・レジスタ195に対するストア動作が完了すると、ストアを要求している特定のHUが、すべての新しいバス動作を新たなRAG番号の割り振りを用いて開始し、新たなバス帯域幅割り当てレートが適用される。プロセッサ・システム100のシステム・ソフトウェアは命令を実行し、命令は新たな帯域幅割り当てレートを示す単数または複数のRAGに関連する。残念ながら、この手法は、完了するために複数のバス・サイクルを要することもあり、プロセッサ・システム100による非効率的な処理をもたらしがちである。
RAIDレジスタ355におけるRAIDビットの割り振りを再プログラミングすることが、命令ごとに帯域幅割り当てレートの割り振りを変更するさらに別の手法を実現する。図3のRAIDレジスタ355への変更は、長いサイクル時間の外部ストア動作が必要ないように、特定のHU内部にとどまる。残念ながら、RAM110は、RAM110のコントロール・レジスタに既にある当該の既存のRAG番号および帯域幅割り当てレート割り振りに対する、新たなRAIDレジスタ355割り振りを制限する。システム・プログラマまたはプロセッサ・システム・コンパイラは、RAIDの再割り当てを認識して、適切な命令シーケンスを生成し、特定のHU内でコンフリクトを伴わずに変更を加えることができるようにしなければならない。さらに、HU300は、隣接する任意の2つのストア命令の間にSYNCステートメントを挿入して、最新のRAID変更より前にすべてのストア命令の命令キュー307をまずフラッシュし、新たな帯域幅割り当てレートを要求する次のストア動作のキューを保持しなければならない。より詳しくは、キューは保持状態に入り、新たな帯域幅割り当てレートを必要とするストア動作より前のすべての命令を取り除かなければならない。次に、ハイパーバイザ352は、新たなリソース割り当て識別子の、RAIDレジスタ355へのロードを発生させる。HU300がSYNCコマンドでキューをフラッシュすると、先行するストア動作は、次の動作用にバスを解放する前に、それらのバス・サイクルを完了しなければならない。続いて、特定のHUが、新たなRAIDビット割り振りを活用するストア命令を実行する。残念ながら、上記の方法でSYNCコマンドを出すと、SYNCステートメントが命令キュー・パイプラインの遅延を複数生じさせるため、プロセッサ・システムのパフォーマンスに対して重大な悪影響を与えることもある。このような理由で、図1のプロセッサ・システム100のHUに図3のHU300のHU構成を使用することは、望ましくないこともある。
図4は、開示される方法を実践して、特定のHU内で命令ごとまたはアクセス要求ごとに異なる帯域幅割り当てレートを可能にする、典型的なハードウェア・ユニット(HU)400のブロック図である。開示される方法および装置の一実施形態では、望ましくない長い待ち時間のSYNC命令を導入することも、RAM110のRAIDレジスタのデータに変更を加える追加のストア命令を導入することもなく、各命令が、特定のI/Oバス帯域幅割り当てレートに対応することができる。
図5は、半導体ダイ505を含むプロセッサ・システム500のブロック図である。プロセッサ・システム500は、そのハードウェア・ユニットそれぞれに、HU400などの個別のハードウェア・ユニットを用いる。より具体的には、プロセッサ・システム500は、SPE‐511〜SPE‐518、PPE519、およびI/Oコントローラ520としてHU400を使用してもよい。プロセッサ・システム500は、上記のセル・ブロードバンド・エンジン(CBE)のアーキテクチャを用いて、このマルチコア・プロセッサ・システムを構成する複数のコアを構成してもよい。プロセッサ・システム500は、メモリ・バス530に結合しているメモリ・コントローラ525を含む。メモリ・バス530は、システム・メモリ(図示せず)に結合している。プロセッサ・システム500のI/Oインターフェース(IOIF)コントローラ520としても知られるI/Oコントローラ520は、I/Oバス535に結合している。I/Oバス535は、図5に示されているとおり、IOIF0‐入バス540およびIOIF0‐出バス545、IOIF1‐入バス550およびIOIF1‐出バス555を含む。
プロセッサ・システム500は、メモリ・バス530およびI/Oバス535へのアクセスの要求を扱うリソース割り当てマネージャ(RAM)560を含む。RAM560は、リクエスタへのリソースの割り当てをコントロールするリソース・コントロール・レジスタ565を含む。一実施形態では、図5のRAM560は、図1のRAM110と同じ構成および機能性を示すとよい。
図4に戻る。ハードウェア・ユニット(HU)400は、命令ハンドラ405および他のハードウェア406を含む。命令ハンドラ405は、後述のように命令の実行を扱う多段命令パイプラインを含む。ハードウェア406は、ローカル・キャッシュ・メモリ、演算論理ユニット(ALU)、または、特定のタイプのHUに適したその他のハードウェアなどのハードウェアを含むとよい。例えば、PPEまたはSPEタイプのハードウェア・ユニットは、演算論理ユニットを含む可能性がある一方で、I/OコントローラHUはALUを含まないと考えられる。
プロセッサ・システム500内の典型的なHU400など、特別に構成されている各HUは、プロセッサ・システム内で実行される、より大型のソフトウェア・アプリケーションまたはプログラム・アプリケーションの一部として、一連のソフトウェア・プログラム命令を開始し得る。特定のハードウェア・ユニットHU400が、プロセッサ・システム500内で動くプログラム・アプリケーションから一連の命令を受け取る。プログラム・アプリケーションの出力は、命令キュー407の入力に送り込まれる。HU400は、命令ハンドラ405の命令キュー407に、命令を入れる。命令キュー407は、HU400内で実行される次の命令を含む命令レジスタ410に結合している。HU400は、復号器(図示せず)を用いて、HU内で実行される次の命令、例えばシステム・メモリ要求またはI/Oインターフェース要求を必要とするストア命令を復号する。このストア命令の後、HU400が開始する次の命令が、命令キュー407から命令レジスタ410へ移動する。命令ストア・シーケンスの間、HU400はまず、HUがストア命令の実行を完了するときにHUがデータを書き込むことになる有効アドレスの値を求める。
命令ハンドラ405は、書き込み命令の有効アドレス(EA)の復号を容易にするオペランドを含んだ、汎用レジスタ(GPR)415のセットを含む。汎用レジスタ415は、第1のオペランド・レジスタ420および第2のオペランド・レジスタ425に結合している。命令レジスタ410、第1のオペランド・レジスタ420、および第2のオペランド・レジスタ425は、すべてEA生成器430の個別の入力に結合している。EA生成器430は、命令レジスタ410内のストア命令に関して有効アドレス(EA)を計算する。EAレジスタ435が、EA生成器430の出力に結合しており、有効アドレスの計算結果を、EA生成器430から入力として受け取る。EAレジスタ435の出力は、有効アドレス‐実アドレス変換器(ERAT)440の入力に結合している。命令ハンドラ405の要素は、情報がステージからステージへ、または要素から要素へ進むパイプライン構造を構成する。例えば、命令キュー407、ERAT440、レジスタ445およびFIFOストア・キュー700が、このパイプラインのステージの一部の例である。
図6は、ページ番号エントリの典型的なERAT440を示す。典型的なERATは32のエントリを含むとよいが、それより大きなERATおよび小さなERATも可能である。さらに、ERAT440の各エントリは、ページ・テーブル・エントリ(PTE)である。ERAT440は、キャッシュ変換データの複数エントリを含み、書き込み命令またはストア命令の有効アドレスEAまたは有効ページ番号(EPN:effective page number)を入力として使用する。図6に見られるように、キャッシュ変換データの複数エントリのうち、一番上の3つが詳しく示されている。ERAT440ルックアップ・テーブル(LUT)は、実アドレス(RA)または実ページ番号(RPN:real page number)データに対する有効アドレス(EA)を含む。ERATテーブルの各行は、有効ページ番号(EPN)を実ページ番号(RPN)にマッピングする。ERAT440は、RAデータと関連するWIMGビットおよびRAIDビットも含む。より詳しくは、RAIDビットは、ERAT440のページ・テーブル・エントリ(PTE)の属性である。ERAT440は、他の複数の属性(図示せず)を含んでもよい。ERAT440は、ページ・オフセットを変換する必要も、EA入力の下位ビットを変換する必要もない。さらに、ERAT440は、EAおよびRAページ・テーブル・データの下位ビットを格納しなくてよい。この例では、ERAT440の一番上のエントリにおいて、HU400は、有効アドレスEA3をERAT440への入力として使用する。ERAT440は、実アドレスRA3データを出力する。0101として示されているWIMGビットは、それぞれW、I、MおよびGビットを表す。実アドレスRA3のライト・バックまたはライト・スルー状態に対応するWビットは0であり、したがってライト・バックを指定する。RA3のキャッシュ有効またはキャッシュ禁止状態に対応するIビットは1であり、したがってキャッシュ禁止を指定する。実アドレスRA3のローカル・アクセスまたはグローバル・アクセスに対応するMビットは0であり、したがってローカル・アクセスを指定する。実アドレスRA3の非保護または保護状態に対応するGビットは1であり、したがって保護状態を指定する。00(すなわち0)というRAID割り振りが、RA3データおよびERAT440へ入力されるEA3と関連している。
変換データのERAT440キャッシュの次のエントリは、EA2という有効アドレスとして示されている。HU400は、有効アドレスEA2をERAT440への入力として使用する。ERAT440は実アドレスRA2データを出力する。0101として示されているWIMGビットは、それぞれW、I、MおよびGビットを表す。実アドレスRA2のライト・バックまたはライト・スルー状態に対応するWビットは0であり、したがってライト・バックを指定する。RA2のキャッシュ有効またはキャッシュ禁止状態に対応するIビットは1であり、したがってキャッシュ禁止を指定する。実アドレスRA2のローカル・アクセスまたはグローバル・アクセスに対応するMビットは0であり、したがってローカル・アクセスを指定する。実アドレスRA2の非保護または保護状態に対応するGビットは1であり、したがって保護状態を指定する。11(すなわち3)というRAID割り振りが、RA2データおよびERAT440へ入力されるEA2と関連している。
変換データのERAT440キャッシュの次のエントリは、EA1という有効アドレスとして示されている。HU400は、有効アドレスEA1を、ERAT440への入力として使用する。ERAT440は実アドレスRA1データを出力する。0101として示されているWIMGビットは、それぞれW、I、MおよびGビットを表す。実アドレスRA1のライト・バックまたはライト・スルー状態に対応するWビットは0であり、したがってライト・バックを指定する。RA1のキャッシュ有効またはキャッシュ禁止状態に対応するIビットは1であり、したがってキャッシュ禁止を指定する。実アドレスRA1のローカル・アクセスまたはグローバル・アクセスに対応するMビットは0であり、したがってローカル・アクセスを指定する。実アドレスRA1の非保護または保護状態に対応するGビットは1であり、したがって保護状態を指定する。01(すなわち1)というRAID割り振りが、RA1データおよびERAT440へ入力されるEA1と関連している。図6において、複数のエントリ(図示せず)が、有効アドレス‐実アドレス変換器EA440の変換データのキャッシュ全体を表す。
ERAT440は、EAレジスタ435から有効アドレス・データを入力として受け取る。ストア要求の間、HU400は、ソフトウェア・アプリケーション動作アーキテクチャの中の有効アドレス変換を用いて実アドレスを生成する。実アドレスは、メモリ・アドレス位置に直接関係する。より詳しくは、実アドレスは、IHSのシステム・メモリなど、HUの外部の物理メモリ位置に対応する。ERAT440は典型的に、図6に見られるように、連想配列の変換データのページ・テーブル・キャッシュを使用するルックアップ・テーブル(LUT)として機能する。有効アドレス(EA)、すなわち仮想アドレスは、ERAT440ページ・テーブル・キャッシュ配列への入力を表す。ERAT440ページ・テーブルは、EA入力と関連する実アドレス(RA)、書き込まれるデータのサイズ、書き込まれるデータ、WIMGビットおよびリソース割り当て識別子(RAID)ビットを保持する。RAG識別子を表す2つのRAIDビットはERAT440にある。RAIDビットはERAT440にあるため、HU400は、図3のHU300のようにRAIDレジスタを必要としない。さらにこの特定の実施形態では、HU400は、2つのRAIDビットをERAT440内のページに割り振り、それによって、ERAT440が実行するアドレス変換プロセスの間に各命令に一意のRAIDを提供する、ハイパーバイザ442、すなわちHU400内のソフトウェアまたはファームウェア層を含む。ハイパーバイザ442は、読み出しアクセスおよび変更の権利など、プロセッサ・システム100の他のシステム・ソフトウェアよりも高いプロセッサ・システム特権を示す、特権のあるシステム・ソフトウェア層を表す。ハイパーバイザ442は、HU上で実行され得る命令を含む。ハイパーバイザの命令は、RAIDレジスタ、RAM110、およびERAT440がキャッシュするアドレス変換テーブルなどのシステム・コントロール機能にアクセスできる。オペレーティング・システムまたはスーパーバイザ・コード、およびアプリケーション・プログラムには、典型的にはそのようなアクセス権がない。プロセッサ・システム100のハイパーバイザ442は、典型的にはSPE、すなわちSPE‐1〜SPE‐8上で直接実行することはない。しかし、ハイパーバイザ442は、PPE115上で直接実行され、メカニズム(図示せず)を使用してSPE内のシステム・コントロール機能を変更する能力を示す。一実施形態では、ハイパーバイザ442は、ERATがキャッシュとしての機能を果たすアドレス変換テーブルを維持する。RAID情報は、ハイパーバイザが維持するアドレス変換テーブルと関連している。RAID情報は、ERAT440内のページ・テーブル・エントリ(PTE)の属性である。I/Oインターフェース動作およびメモリ動作は、I/Oインターフェース動作およびメモリ動作のどちらも一意のリソース割り当て識別子RAIDを得られるように、実行中、ERAT440を経て動作する。ハイパーバイザ442は、一意のRAIDビットの割り振りを、変換データのERAT440キャッシュの各エントリに割り振る。さらに、ハイパーバイザ442は、一意のRAIDビット割り振りを割り振って、ERAT440キャッシュ内の各エントリ、ひいては命令に対し、異なる帯域幅割り当てレートを用いる。プロセッサ・システム500のHU内で実行されるアプリケーション・ソフトウェアが、特定のバス帯域幅割り当てレートの必要性を解釈し、さらに、命令ごとに、ERAT440内のRAIDビットの割り振りを変更するよう、ハイパーバイザ442に指示してもよい。
ERAT440のページ・テーブル・キャッシュ内の各エントリは、ページ・テーブル・エントリPTEに対応する。ERAT440のページは、変換中のアドレスまたは有効アドレス(EA)の最上位ビットのセットを表す。開示される装置および方法の一実施形態では、ERAT440は、4Kバイトの有効アドレス(EA)を実アドレス(RA)に変換する。この変換プロセスでは、ERAT440は、変換に関して有効アドレスEAの下位12ビットを無視する。より具体的には、ERAT440は、有効アドレスEAの下位12ビットをページ・オフセットとして解釈し、4Kバイトの有効アドレスEAの下位12ビットは、変換後、元の状態のままである。ページ、または変換中のEAの上位ビットは、残る、有効アドレスEA‐実アドレスRA変換の上位アドレス・ビットを表す。
ERAT440は、WIMGビットを、メモリ・アドレス転送属性として格納する。より具体的には、図4の実施形態では、ERAT440は、WIMGビットをアドレス・ストレージ属性として格納する。WIMGビットは、プロセッサ・システム内のソフトウェアおよびハードウェアがシステム・メモリにアクセスする方法を決定する。WIMGビットは、アドレス要求のライト・バックまたはライト・スルー状態に対応するWビットを含む。Iビットは、ストア要求のキャッシュ有効またはキャッシュ禁止状態を表す。Mビットは、ストア要求のローカルまたはグローバルのアクセス権を表す。Gビットは、アドレス・ストア要求の保護または非保護状態に対応する。ERAT440の出力は、RA,WIMG,RAIDレジスタ445の入力に結合している。ERAT440は、物理、すなわち実アドレスRAと、ストレージ属性WIMGビットのセットと、RAIDビットとを、その出力において生成する。RA,WIMG,RAIDレジスタ445は、有効アドレス‐実アドレス変換器ERAT440の出力を入力として受け取る。RA,WIMG,RAIDレジスタ445は、HU400が実行する命令のRA、WIMGおよび対応するRAIDビットの一時的なストレージを提供する。RA,WIMG,RAIDレジスタ445の出力は、図7のパイプライン先入れ先出し(FIFO)ストア・キュー700の入力に結合している。(FIFO)ストア・キュー700は、RA,WIMG,RAIDレジスタ445から命令シーケンスを受け取る。HU400は、これら命令シーケンスを、パイプライン(FIFO)ストア・キュー700に集めて格納する。さらに、パイプライン命令(FIFO)ストア・キュー700は、RA,WIMG,RAIDレジスタ445からの後続の命令を保持する。(FIFO)ストア・キュー700に詰めていくことで、HU400が現在の命令でのメモリ・バス・アクセスを待っている間に、ERAT440によって新たなアドレスを変換できるようになる。現在の命令は、(FIFO)ストア・キュー700の最下位置にある。HU400は、満杯または部分的に満杯の(FIFO)ストア・キュー700の現在の命令を実行し、現在の命令のメモリまたはI/Oバス・アクセスを待つ。
FIFOストア・キュー700内のRAIDビットは、4つのRAGのうちの1つ、すなわちRAG0、RAG1、RAG2またはRAG3を特定する2バイナリ・ビットのデータである。より詳しくは、RAG0〜RAG3は、RAM560における帯域幅割り当てレートに直接対応する。FIFOストア・キュー700の出力は、トークン・リクエスタ460の入力に結合し、そこへRAIDビット・データを提供する。HU400は、FIFOストア・キュー700の最下のエントリを読み出し、FIFOストア・キュー700内のRAIDビットをトークン・リクエスタ460へ送出することによって、メモリ・バス・アクセスまたはI/Oバス・アクセスの要求を開始する。その後、トークン・リクエスタ460は、トークン要求ライン465にトークン要求を生成する。このトークン要求は、メモリ・バス・アクセスまたはI/Oバス・アクセスの要求として、トークン要求ライン465上をリソース割り当てマネージャ(RAM)560まで伝わる。ライン465上のトークン要求は、RA,WIMG,RAIDレジスタ445からのHU400RAIDビットを含む。RAM560は、トークン要求を受け取り、対応するHU400の帯域幅割り当てレートを評価する。RAM560は、HU400のRAID識別子ビットを、現在の帯域幅使用に対して評価し、トークン付与をトークン・リクエスタ460へ返すトークン付与ライン470上にトークン付与信号を生成することによって、トークンを付与する。RAM560は、RAM560内での適切なタイミングおよび帯域幅分析が完了すると、トークン付与を生成する。
FIFOストア・キュー700の出力は、スイッチ475の1つの入力に結合している。FIFOストア・キュー700の出力が、メモリ・ストア命令、すなわちデータを格納するためのメモリ・アクセス要求を出すと、ストア要求は、メモリ・バス530の使用を必要とする。FIFOストア・キュー700の出力がI/Oストア命令を出すと、ストア要求はI/Oバス535の使用を必要とする。HU400は、FIFOストア・キュー700の出力を評価して、どちらのバス、すなわちメモリ・バス530またはI/Oバス535をストア要求が必要としているかを判断する。スイッチ475は、FIFOストア・キュー700の出力を、図5のプロセッサ・システム500のメモリ・コントローラ525/システム・メモリ・バス530またはI/Oコントローラ520/I/Oバス535と効果的に接続および切断する。この切り替えは、HU400のスイッチ475に結合しているトークン・リクエスタ460にコントロールされる。トークン・リクエスタ460が、トークン付与ライン470上でRAM560からトークン付与信号を受け取ると、HU400は、効果的にスイッチ475を閉じ、ストア動作の最終ステージを開始する。さらに、HU400は、FIFOストア・キュー700の最下のエントリが、スイッチ475を通って移動し、メモリ・バス530またはI/Oバス535にアクセスし、したがって、実アドレスおよびWIMGビットを、メモリまたはI/Oバスに乗せることを許可する。ストレージ・データおよびデータ・サイズが、実アドレスおよびWIMGビット・データとともに進む。
上記で開示された方法は、図5のプロセッサ・システム500が図4の特別に構成されているハードウェア・ユニット(HU)400を用いる、典型的なストア動作について説明している。当該の例はストア動作を伴うが、プロセッサ500のHUは、開示された方法を用いてロード動作も実行し得る。ロード動作は、書き込みデータの生成はしないが、読み取りデータを要求する。ロード動作の間、プロセッサ・システム500は、I/Oインターフェース・バス535上にデータを書き込むことも、メモリ・バス530を介してシステム・メモリにデータを書き込むこともない。ロード動作には2つの段階がある。ロード動作の第1の段階では、HU400がロード要求を開始し、ERAT440による有効アドレスから実アドレスへの変換後、最終的に、実アドレスをメモリ・バス530上に乗せる。ロード動作の第2の段階では、プロセッサ・システム500は、特定のターゲット・アドレスにおいてメモリ・データを取り出し、メモリ・データをメモリ・バス530上でHUに渡す。その結果、ロード動作が完了する。HU400によるストア動作とHU400によるロード動作とを比較すると、実アドレス、WIMGビットおよびRAIDビットはすべて、これら動作それぞれにおいて本質的に同じ役割を果たす。したがって、HU400によるストア動作の実行に関する上記の教示は、HU400が実行するロード動作にも当てはまる。
プロセッサ・システム500の典型的なHU400における命令レベルの帯域幅割り当ては、異なる個別のI/Oバス使用レートまたはメモリ・バス・アクセス・レート、あるいはその両方をそれぞれ必要とする複数のアプリケーションを管理する能力をもたらす。開示される方法は、同じHU上で動作している複数のオペレーティング・システムがそれぞれ、I/Oバス使用およびメモリ・バス使用に関し、オペレーティング・システムごとに特定の異なる帯域幅割り当てレートを必要とする場合、特に有用である。
図7は、図4のHU400用のFIFOストア・キュー700の典型的な構成を示す。より具体的には、図7は、最下の3つのストア命令を示し、これらは、ERAT440がこれらのストア命令を変換した後、RA,WIMG,RAIDレジスタ445に一時的にあったものである。ERAT440は、これらのストア命令を変換し、続いて、レジスタ445を介して、FIFOストア・キュー700内の個々のストレージ位置に、変換された命令を入れる。図7は、FIFOストア・キュー700の要素を、命令ごとに、実アドレスRA、WIMGビット、命令データ・サイズ、ストレージ・データ、およびRAIDビットとして示す。ストア命令、すなわちストア‐1命令は、HUによる実行完了のためにFIFOストア・キュー700を出る次の命令を表す。FIFOストア・キュー700は、ストア‐1命令に関して、RA1という実アドレスRAを含む。RA1は、64ビット・アドレスを表すとよく、下位12ビットは、ERAT440に入力された有効アドレスと同じである。一実施形態では、FIFOストア・キュー700は、これら下位12ビットを格納しなくてもよい。EAおよびRAの下位12ビットは、4KBアドレス・ページ・オフセットを表す。この例では、64ビット実アドレスRAの残りの上位52ビットが、実アドレスRA1エントリに相当する。0110として示されているWIMGビットの例は、それぞれW、I、MおよびGビットを表す。WIMGビットは、ハードウェア・ユニット(HU)のメモリまたはI/Oバスへのアクセス法に影響を及ぼすことができるメモリ・アドレス転送属性である。実アドレスRA1のライト・バックまたはライト・スルー状態に対応するWビットは0であり、したがってライト・バックを指定する。RA1のキャッシュ有効またはキャッシュ禁止状態に対応するIビットは1であり、したがってキャッシュ禁止を指定する。実アドレスRA1のローカル・アクセスまたはグローバル・アクセスに対応するMビットは1であり、したがってグローバル・アクセスを指定する。実アドレスRA1の非保護または保護状態に対応するGビットは0であり、したがって非保護状態を指定する。図7では、FIFOストア・キュー700は、命令ストア‐1の典型的なデータ・サイズを2バイトとして示す。したがって、ストア‐1のストア動作に関するデータ・サイズは、2バイトのデータである。FIFOストア・キュー700は、図7において、D1として2バイトのサイズで示されているストア動作ストア‐1のデータを含む。ストア‐1命令は、01(すなわち1)という関連RAIDビットの割り振りを示す。この例では、1というRAID割り振りは、ストア‐1命令が、1というRAG番号割り振りと、RAM560がRAG1に割り振る関連バス帯域幅レートとを有することになるということを示す。
図7のFIFOストア・キュー700の表現に見られるように、ストア‐1命令の後の、FIFOストア・キュー700の次の命令は、ストア‐2命令である。FIFOストア・キュー700は、ストア‐2命令に関して、RA2という実アドレスRAを格納している。RA2は、64ビット・アドレスを表すとよく、下位12ビットは、ERAT440に入力された有効アドレスと同じである。一実施形態では、FIFOストア・キュー700は、これら下位12ビットを格納しなくてもよい。EAおよびRAの下位12ビットは、4KBアドレス・ページ・オフセットを表す。この例では、実アドレスRAの上位52ビットが、実アドレスRA2エントリに相当する。1101として示されているWIMGビットの例は、それぞれW、I、MおよびGビットを表す。実アドレスRA2のライト・バックまたはライト・スルー状態に対応するWビットは1であり、したがってライト・スルー動作を指定する。RA2のキャッシュ有効またはキャッシュ禁止状態に対応するIビットは1であり、したがってキャッシュ禁止を指定する。実アドレスRA2のローカル・アクセスまたはグローバル・アクセスに対応するMビットは0であり、したがってローカル・アクセスを指定する。実アドレスRA2の非保護または保護状態に対応するGビットは1であり、したがって保護状態を指示する。図7では、FIFOストア・キュー700は、ストア‐2命令の典型的なサイズを8バイトとして示す。したがって、ストア‐2のストア動作に関するデータ・サイズは、8バイトのデータである。FIFOストア・キュー700は、D2として8バイトのサイズで示されているストア動作ストア‐2のデータを含む。11(すなわち3)というRAIDの割り振りが、ストア‐2命令と関連している。したがって、RAM560は、RAG3のバス帯域幅レートをストア‐2命令に割り振る。
ストア‐2命令の後の、FIFOストア・キュー700における次の命令が、ストア‐3命令として示されている。図7では、FIFOストア・キュー700は、ストア‐3命令に関して、RA3という実アドレスRAを格納している。RA3は、64ビット・アドレスを表すとよく、上記のように、下位12ビットはERAT440に入力された有効アドレスと同じである。一実施形態では、FIFOストア・キュー700は、これら下位12ビットを格納しなくてもよい。EAおよびRAの下位12ビットは、4KBアドレス・ページ・オフセットを表す。この例では、実アドレスRAの上位52ビットが、実アドレスRA3エントリに相当する。0101として示されているWIMGビットの例は、それぞれW、I、MおよびGビットを表す。実アドレスRA3のライト・バックまたはライト・スルー状態に対応するWビットは0であり、したがってライト・バックを指定する。RA3のキャッシュ有効またはキャッシュ禁止状態に対応するIビットは1であり、したがってキャッシュ禁止を指定する。実アドレスRA3のローカル・アクセスまたはグローバル・アクセスに対応するMビットは0であり、したがってローカル・アクセスを指定する。実アドレスRA3の非保護または保護状態に対応するGビットは1であり、したがって保護状態を指示する。図7では、FIFOストア・キュー700は、ストア‐3に関して、4バイトという典型的なサイズを示す。ストア‐3のストア動作のデータ・サイズは、4バイトのデータである。FIFOストア・キュー700は、D3として、4バイトのサイズとして表されているストア動作ストア‐3のデータを含む。00(すなわち0)というRAIDの割り振りが、ストア‐3命令と関連している。RAM560は、RAG0のバス帯域幅レートをストア3命令に割り振り、それによって、FIFOストア・キュー700をポピュレートしているストア命令データを完了する。RAIDビットの割り振りには、0、1、2、および3があり、異なる2ビットの対が、RAIDビットの割り振りそれぞれに対応する。RAIDビットの割り振りは、RAG番号の割り振りRAG0、RAG1、RAG2、およびRAG3と直接関連している。一部の用途において、より少ない数のRAGが特定の用途に望ましければ、プロセッサ・システム500およびHU400は2より少ない数のビットを用いてもよい。例えば、0または1の単一ビット・フィールドが、2つのRAGを表してもよい。一部の用途において、4より多い数のRAGが特定の用途に望ましければ、プロセッサ・システム500およびHU400は、2より多い数のビットを用いてもよい。
図8は、図4の典型的なハードウェア・ユニット(HU)400によるストア命令または書き込み命令の実行を示すフロー・チャートである。プロセッサ・システム500内のハードウェア・ユニット(HU)は、当該のストア要求を実行することができる。ストア命令の実行は開始ブロック805で始まる。複数のHUのうちのいずれかで実行されるアプリケーション・ソフトウェアが、書き込み命令または書き込み動作としても知られるストア命令を開始するとよい。ハイパーバイザ442は、ブロック810のように、実アドレスRA、WIMGビットを備え、リソース割り当て識別(RAID)ビットを含む、命令ごとの初期の変換データを、変換テーブル(図示せず)を用いて間接的にERAT440にロードするとよい。ERAT440の各エントリは、ルックアップ・アドレスまたは有効アドレスEAに対応する命令を含む。ブロック815のように、特定のHU内の命令復号器(図示せず)が命令を復号する。次に、決定ブロック820のように、HU400内の命令復号器または関連のハードウェアがテストを実行し、復号された命令がストア命令、すなわち書き込み要求であるかを判断する。復号された命令のテストが偽の結果を返し、復号された命令がストア命令でなければ、非ストア命令の処理ブロック822のように、非ストア命令が実行される。フローはブロック815へ戻り、命令復号器は次の命令を復号する。一方、ストア命令テストが決定ブロック820で真の結果を返すと、HUは、有効アドレス(EA)判断ブロック825のように、ストア命令の有効ターゲット・アドレスを判断する。続いて、HUは、評価のために、ストア命令データをその有効アドレスと共にERAT440へ移動させる。ERAT440は、有効アドレス‐実アドレス変換器ERAT内にEAエントリが既に存在すれば、有効アドレス(EA)を対応する実アドレス(RA)に変換する。より詳しくは、ERAT440は、有効アドレス(EA)を、ルックアップ・テーブルLUTにおいてルックアップ・データとして使用し、ブロック830のように、ERAT440内のEAデータを探索する。ERAT440が現在、そのLUTメモリにEAを格納していれば、ERAT440は、対応するRAをLUTメモリに出力する。これは、決定ブロック840での「ヒット」、すなわち変換成功を表す。一方、ERAT LUTメモリが、テスト中の特定のEAに関して値を含まなければ、決定ブロック840のヒット・テストは偽の結果を返す。決定ブロック840で、そのようなEAヒットなしの状態になると、HUは、ブロック845のように、サービス変換要求を開始する。サービス変換要求は、ブロック850のように、適切なERAT変換データを生成させ、そのERAT変換データをERAT LUTメモリにロードさせる。ERAT LUTメモリのロードが成功した後、再びブロック830のように、HUは再度ERAT440内のEAのルックアップを試行する。ブロック840の有効アドレス・ヒット・テストが、対象のストア命令または動作に関して真の結果を返し、ERATキャッシュがEAの一致するものを含むと、ブロック870のように、HUは、その命令の対応するRA、WIMGビットおよびリソース割り当て識別(RAID)ビットをFIFOストア・キュー700へ転送する。この例のために、ブロック870はWIMGビットに言及している。しかし、開示された方法の他の実装では、ハードウェア・ユニット(HU)は、追加のコントロール・ビット、またはWIMGの例よりも少ないコントロール・ビットを使用してもよく、それらコントロール・ビットは、特定の用途に従う他のアドレス転送属性に対応してもよい。
一実施形態では、HU400は、FIFOストア・キュー700に命令をロードし、各命令を、命令のロード順に実行する。例えば、図7では、最下の命令ストア‐1が、キューにおける、次に実行する命令である。ストア‐1命令の実行後、ストア‐2命令はFIFOストア・キュー700の最下位置へ移動し、次に実行する命令となる。ストア‐3命令はストア・キュー内で下へ移動し、新たな命令がストア・キューの最上位置に入る。図8のフロー・チャートへ戻る。キュー内の次の命令は、FIFOストア・キュー700の最下のエントリである。ブロック875のように、HU400は、FIFOストア・キュー700の前方へ進む。続いて、HU400は、ブロック880のように、トークン要求を開始するか、またはトークンを要求する。より詳しくは、HU400のトークン・リクエスタ460が、リソース割り当てマネージャ(RAM)560からのトークンを要求する。すなわち、ストア動作のためにメモリ・バス530またはI/Oインターフェース・バス535の使用を要求する。HU400は、RAM560がトークン要求を許可するまでストア命令動作を継続せずに待つ。トークン・リクエスタ460は、トークン付与決定ブロック885のように、テストを行ってRAM560がトークンを付与することで応答するかを判断する。トークン付与テストが偽の結果を返すと、決定ブロック885のように、HU400は、保留および待機状態を維持する。一方、トークン付与テストが真の結果を返すと、ブロック890によって、適切に、HU400がストア要求データをメモリ・バス530またはI/Oインターフェース・バス535に乗せる。メモリ・ストア動作の場合、メモリ・バス530は次に、ストア要求データをシステム・メモリへ、そのメモリに格納されるよう転送する。HUはさらに、I/Oインターフェース・バス535転送を、上記と同じ方法で要求してもよい。その場合、HUは、得られたI/Oデータを、I/Oインターフェース・コントローラ520を通じて、I/Oインターフェース・バス535上に乗せることになる。したがって、「要求をバス上に乗せる」ブロック890は、ストア命令から生じるデータをメモリ・バス530上に乗せることと、さらにI/O要求命令から生じるデータをI/Oバス535上に乗せることとの両方に当てはまる。最後に、ストア命令動作が成功した後、ブロック815のように、HU400は次の命令を復号し、動作フローは継続する。図8に示されている例は、プロセッサ・システム100の典型的なストアまたは書き込み動作を示す。示された実施形態の有効性を実証する別のタイプの動作は、ロードまたは読み取り動作である。データのストアおよびロード、すなわちバス上でのデータの読み取りまたは書き込みにおける差異は、2つの動作タイプの違いを表すが、図8に示されているメカニズムおよび方法は、当該の構造の同じ基本的要素を表す。さらに、RAIDビットの特別な用途は、ロード動作とストア動作との間の共通要素を表す。
図9は、プロセッサ905を用いる典型的な情報処理システム(IHS)900の単純化したブロック図を示す。一実施形態では、プロセッサ905は、HU400を含むプロセッサ・システム500である。IHS900は、プロセッサ905をメモリ・コントローラ525およびビデオ・グラフィックス・コントローラ920に結合するバス910をさらに含む。より詳しくは、システム・メモリ・バス530が、図のように、システム・メモリ915に結合している。実際の実践においては、バス910は、例えばメモリ・バスおよびI/Oバスなど、複数のバスを含むとよい。ディスプレイ925は、ビデオ・グラフィックス・コントローラ920に結合している。ハード・ディスク・ドライブ、CDドライブ、DVDドライブ、またはその他の不揮発性ストレージなどの不揮発性ストレージ930が、バス910に結合し、IHS900に情報の永久ストレージを提供する。オペレーティング・システム935が、メモリ915にロードされ、IHS900の動作を制御する。他のシステム・ソフトウェア、すなわちアプリケーション・ソフトウェア940およびハイパーバイザ945は、メモリ915に常駐し、IHS900の動作をさらに制御する。キーボードおよびマウス・ポインティング・デバイスなどのI/Oデバイス950は、I/Oバス535およびI/Oコントローラ520を介してバス910へ結合している。USB、IEEE1394バス、ATA、SATA、PCI、PCIEおよび他のバスなどの1つ以上の拡張バス955が、バス910に結合して、IHS900に周辺機器およびデバイスを容易に接続できるようにしている。ネットワーク・インターフェース・アダプタ960がバス910に結合し、IHS900が、有線または無線でネットワークおよび他の情報処理システムに接続できるようにしている。図9は、プロセッサ・システム500をプロセッサ905として用いる1つのIHSを示すが、IHSは数多くの形態をとり得る。例えば、IHS900は、デスクトップ、サーバ、携帯用、ラップトップ、ノート、もしくはその他のフォーム・ファクタのコンピュータ、またはデータ処理システムの形態をとってもよい。IHS900は、ゲーム用デバイス、携帯情報端末(PDA:personal digital assistant)、携帯用電話デバイス、通信デバイス、またはプロセッサおよびメモリを含むその他のデバイスなど、その他のフォーム・ファクタをとり得る。
上記では、メモリ・バスおよびI/Oインターフェース・バス帯域幅の改善を実現し得るプロセッサ・システムおよび方法が開示された。一実施形態では、プロセッサ・システムは、メモリ・バスまたはI/Oバス帯域幅、あるいはその両方を、命令ごとまたは要求ごとに割り当てるとよい。
本発明のこの説明を考慮すると、本発明の変更および代わりの実施形態が、当業者には明らかとなる。したがって、この説明は、本発明を遂行する方法を当業者に教示するものであり、実例としてのみ解釈されるものとする。図示および記載された本発明の形態が本実施形態を構成する。当業者は、部品の形状、サイズおよび配置に種々の変更を加えてよい。例えば、当業者は、ここに説明および記載された要素の代わりに、等価な要素を用いてもよい。

Claims (25)

  1. 複数のハードウェア・ユニットを含むプロセッサによって共有リソースにアクセスする方法であって、
    前記共有リソースへのアクセス要求を呼び出す実行命令を、前記プロセッサ内のハードウェア・ユニットによって受け取るステップと、
    前記ハードウェア・ユニット内の複数のパイプライン・ステージを前記命令が通るときに、リソース割り当て識別情報を前記命令に提供するステップであって、前記リソース割り当て識別情報は、前記ハードウェア・ユニット内の一のパイプライン・ステージから他のパイプライン・ステージへと、前記命令とともに進む、前記ステップと、
    を含む方法。
  2. 前記複数のパイプライン・ステージのうちの1つは、前記命令に関して有効アドレスから実アドレスへの変換を行うアドレス変換パイプライン・ステージであり、前記リソース割り当て識別情報は、前記アドレス変換パイプライン・ステージにて前記命令と関連付けられる、請求項1に記載の方法。
  3. 前記複数のパイプライン・ステージのうちの1つはストア・キューであって、前記ストア・キューは、前記アドレス変換パイプライン・ステージによるアドレス変換の後に、前記命令と、関連のリソース割り当て識別情報とを受け取る、請求項2に記載の方法。
  4. 前記提供するステップは、前記ハードウェア・ユニットにおいて実行されるハイパーバイザによって前記リソース割り当て識別情報を提供するステップを含む、請求項1〜3のいずれか一項に記載の方法。
  5. 前記ハードウェア・ユニット内のアクセス・リクエスタが、前記共有リソースへのアクセスのアクセス要求をリソース割り当てマネージャへ送り、前記リソース割り当てマネージャは、前記ハードウェア・ユニットの外部にあって、前記プロセッサの前記複数のハードウェア・ユニットと通信しており、前記アクセス・リクエスタは、前記ストア・キュー内の命令および関連のリソース割り当て識別情報に関して、命令ごとにアクセス要求を送り、それによって、前記ストア・キュー内の個々の命令のリソース割り当て識別情報を含むアクセス要求を提供する、請求項3に記載の方法。
  6. 前記リソース割り当てマネージャによって、前記アクセス要求内の前記リソース割り当て識別情報に基づき、前記アクセス要求に対して前記共有リソースの帯域幅を割り当てるステップをさらに含む、請求項5に記載の方法。
  7. 前記アクセス要求は、メモリ・アクセス要求と、I/Oアクセス要求とのうちの1つである請求項1〜6のいずれか一項に記載の方法。
  8. 前記共有リソースは、メモリと、I/Oデバイスとのうちの1つである請求項1〜7のいずれか一項に記載の方法。
  9. 半導体ダイ上に位置し、共有リソースにアクセスするよう構成され、第1のハードウェア・ユニットを含む複数のハードウェア・ユニット
    を含むプロセッサであって、
    前記第1のハードウェア・ユニットは、複数のパイプライン・ステージを含み、前記共有リソースへのアクセス要求を呼び出す実行命令を受け取り、前記第1のハードウェア・ユニット内の前記複数のパイプライン・ステージを前記命令が通るときに、リソース割り当て識別情報を前記命令に提供する、
    前記プロセッサ。
  10. 前記第1のハードウェア・ユニットを除く他の前記複数のハードウェア・ユニットはそれぞれ、複数のパイプライン・ステージを含み、上記他のハードウェア・ユニットは、前記共有リソースへのアクセス要求を呼び出す実行命令を受け取り、上記他のハードウェア・ユニット内の前記複数のパイプライン・ステージを前記命令が通るときに、リソース割り当て識別情報を前記命令に提供する、請求項9に記載のプロセッサ。
  11. 前記第1のハードウェア・ユニットの前記複数のパイプライン・ステージのうちの1つは、前記命令に関して有効アドレスから実アドレスへの変換を行うアドレス変換パイプライン・ステージであり、前記リソース割り当て識別情報は、前記アドレス変換パイプライン・ステージにて前記命令と関連付けられている、請求項9に記載のプロセッサ。
  12. 前記第1のハードウェア・ユニットの前記複数のパイプライン・ステージのうちの1つはストア・キューであって、前記ストア・キューは、前記アドレス変換パイプライン・ステージによるアドレス変換の後に、前記命令と、関連のリソース割り当て識別情報とを受け取る、請求項11に記載のプロセッサ。
  13. 前記第1のハードウェア・ユニットは、前記リソース割り当て識別情報を前記命令に提供するハイパーバイザを実行する、請求項9〜12のいずれか一項に記載のプロセッサ。
  14. 前記第1のハードウェア・ユニットは、前記共有リソースへのアクセスのアクセス要求をリソース割り当てマネージャへ送るアクセス・リクエスタを含み、前記リソース割り当てマネージャは、前記第1のハードウェア・ユニットの外部にあって、前記プロセッサの前記複数のハードウェア・ユニットに結合されており、前記アクセス・リクエスタは、前記ストア・キュー内の命令および関連のリソース割り当て識別情報に関して、命令ごとにアクセス要求を送り、それによって、前記ストア・キュー内の個々の命令のリソース割り当て識別情報を含むアクセス要求を提供する、請求項12に記載のプロセッサ。
  15. 前記アクセス要求内の前記リソース割り当て識別情報に基づいて、前記アクセス要求に対して前記共有リソースの帯域幅を割り当てるよう前記リソース割り当てマネージャが動作可能なように、さらに構成されている、請求項14に記載のプロセッサ。
  16. 前記アクセス要求は、メモリ・アクセス要求と、I/Oアクセス要求とのうちの1つである、請求項9〜15のいずれか一項に記載のプロセッサ。
  17. 前記共有リソースは、メモリと、I/Oデバイスとのうちの1つである、請求項9〜16のいずれか一項に記載のプロセッサ。
  18. 情報処理システムであって、
    共有リソースと、
    前記共有リソースにアクセスする複数のハードウェア・ユニットを含み、前記共有リソースに結合されているプロセッサであって、前記複数のハードウェア・ユニットは、第1のハードウェア・ユニットを含む、前記プロセッサ
    を含み、
    前記第1のハードウェア・ユニットは、複数のパイプライン・ステージを含み、前記共有リソースへのアクセス要求を呼び出す実行命令を受け取り、前記第1のハードウェア・ユニット内の前記複数のパイプライン・ステージを前記命令が通るときに、リソース割り当て識別情報を前記命令に提供する、
    前記情報処理システム。
  19. 前記第1のハードウェア・ユニットの前記複数のパイプライン・ステージのうちの1つは、前記命令に関して有効アドレスから実アドレスへの変換を行うアドレス変換パイプライン・ステージであり、前記リソース割り当て識別情報は、前記アドレス変換パイプライン・ステージにて前記命令と関連付けられている、請求項18に記載の情報処理システム。
  20. 前記複数のパイプライン・ステージのうちの1つはストア・キューであって、前記ストア・キューは、前記アドレス変換パイプライン・ステージによるアドレス変換の後に、前記命令と、関連のリソース割り当て識別情報とを受け取る、請求項19に記載の情報処理システム。
  21. 前記第1のハードウェア・ユニットは、前記リソース割り当て識別情報を前記命令に提供するハイパーバイザを実行する、請求項18〜20のいずれか一項に記載の情報処理システム。
  22. 前記第1のハードウェア・ユニットは、前記共有リソースへのアクセスのアクセス要求をリソース割り当てマネージャへ送るアクセス・リクエスタを含み、前記リソース割り当てマネージャは、前記第1のハードウェア・ユニットの外部にあって、前記プロセッサの前記複数のハードウェア・ユニットに結合されており、前記アクセス・リクエスタは、前記ストア・キュー内の命令および関連のリソース割り当て識別情報に関して、命令ごとにアクセス要求を送り、それによって、前記ストア・キュー内の個々の命令のリソース割り当て識別情報を含むアクセス要求を提供する、請求項20に記載の情報処理システム。
  23. 前記アクセス要求内の前記リソース割り当て識別情報に基づいて、前記アクセス要求に対して前記共有リソースの帯域幅を割り当てるよう前記リソース割り当てマネージャが動作可能なように、さらに構成されている、請求項22に記載の情報処理システム。
  24. 前記アクセス要求は、メモリ・アクセス要求と、I/Oアクセス要求とのうちの1つである、請求項18〜23のいずれか一項に記載の情報処理システム。
  25. 前記共有リソースは、メモリと、I/Oデバイスとのうちの1つである、請求項18〜24のいずれか一項に記載の情報処理システム。
JP2009547682A 2007-02-06 2008-01-30 プロセッサ・システムにおいて命令レベルでのリソース割り当ての識別を可能にする方法および装置 Expired - Fee Related JP5241737B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/671,508 US8407451B2 (en) 2007-02-06 2007-02-06 Method and apparatus for enabling resource allocation identification at the instruction level in a processor system
US11/671,508 2007-02-06
PCT/EP2008/051122 WO2008095844A1 (en) 2007-02-06 2008-01-30 Method and apparatus for enabling resource allocation identification at the instruction level in a processor system

Publications (2)

Publication Number Publication Date
JP2010518472A JP2010518472A (ja) 2010-05-27
JP5241737B2 true JP5241737B2 (ja) 2013-07-17

Family

ID=39471983

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009547682A Expired - Fee Related JP5241737B2 (ja) 2007-02-06 2008-01-30 プロセッサ・システムにおいて命令レベルでのリソース割り当ての識別を可能にする方法および装置

Country Status (7)

Country Link
US (1) US8407451B2 (ja)
EP (1) EP2115584B1 (ja)
JP (1) JP5241737B2 (ja)
KR (1) KR101123443B1 (ja)
CN (1) CN101606130B (ja)
TW (1) TWI417792B (ja)
WO (1) WO2008095844A1 (ja)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8046524B2 (en) * 2007-08-08 2011-10-25 Sandisk Technologies Inc. Managing processing delays in an isochronous system
US8102865B2 (en) 2008-05-16 2012-01-24 Microsoft Corporation Group based allocation of network bandwidth
US10802990B2 (en) * 2008-10-06 2020-10-13 International Business Machines Corporation Hardware based mandatory access control
US8838796B2 (en) * 2008-12-19 2014-09-16 Adobe Systems Incorporated System and method for allocating online storage to computer users
WO2011130406A1 (en) * 2010-04-13 2011-10-20 Et International, Inc. Runspace method, system and apparatus
GB2481232A (en) * 2010-06-16 2011-12-21 Advanced Risc Mach Ltd Cache for a multiprocessor system which can treat a local access operation as a shared access operation
US9134771B2 (en) * 2010-08-06 2015-09-15 Dhk Storage, Llc Raid devices, systems, and methods
CA2820081A1 (en) 2010-12-16 2012-06-21 Et International, Inc. Distributed computing architecture
US8918791B1 (en) 2011-03-10 2014-12-23 Applied Micro Circuits Corporation Method and system for queuing a request by a processor to access a shared resource and granting access in accordance with an embedded lock ID
TWI550408B (zh) * 2011-04-22 2016-09-21 晨星半導體股份有限公司 多核心電子系統及其速率調節裝置
KR101867960B1 (ko) 2012-01-05 2018-06-18 삼성전자주식회사 매니 코어 시스템을 위한 운영체제 동적 재구성 장치 및 방법
WO2014000779A1 (en) * 2012-06-27 2014-01-03 Qatar Foundation An arrangement configured to allocate resources of a plurality of data storage media to a plurality virtual machines and associated method
WO2014209407A1 (en) * 2013-06-29 2014-12-31 Intel Corporation Service rate redistribution for credit-based arbitration
US9026681B2 (en) 2013-08-08 2015-05-05 Qualcomm Incorporated Flexible hardware module assignment for enhanced performance
US10523585B2 (en) * 2014-12-19 2019-12-31 Amazon Technologies, Inc. System on a chip comprising multiple compute sub-systems
US10394731B2 (en) * 2014-12-19 2019-08-27 Amazon Technologies, Inc. System on a chip comprising reconfigurable resources for multiple compute sub-systems
US11200192B2 (en) 2015-02-13 2021-12-14 Amazon Technologies. lac. Multi-mode system on a chip
US11221853B2 (en) 2015-08-26 2022-01-11 Huawei Technologies Co., Ltd. Method of dispatching instruction data when a number of available resource credits meets a resource requirement
US10853077B2 (en) * 2015-08-26 2020-12-01 Huawei Technologies Co., Ltd. Handling Instruction Data and Shared resources in a Processor Having an Architecture Including a Pre-Execution Pipeline and a Resource and a Resource Tracker Circuit Based on Credit Availability
CN105183565B (zh) * 2015-09-30 2018-12-07 华为技术有限公司 计算机、服务质量控制方法及装置
US10628373B2 (en) * 2015-12-01 2020-04-21 Marvell International Ltd. Systems and methods for transmitting an access request via a flexible register access bus
CN112184192A (zh) 2016-12-12 2021-01-05 创新先进技术有限公司 资源调配方法和装置以及电子支付方法
US10649678B2 (en) * 2017-01-13 2020-05-12 Arm Limited Partitioning of memory system resources or performance monitoring
US10394454B2 (en) * 2017-01-13 2019-08-27 Arm Limited Partitioning of memory system resources or performance monitoring
US10268379B2 (en) * 2017-01-13 2019-04-23 Arm Limited Partitioning of memory system resources or performance monitoring
CN107800644A (zh) * 2017-11-08 2018-03-13 中国人民解放军国防科技大学 一种可动态配置的流水化令牌桶限速方法与装置
TWI681362B (zh) * 2018-03-01 2020-01-01 瑞昱半導體股份有限公司 有限記憶體頻寬系統及其動態限制圖形處理器的記憶體頻寬的方法
CN111708622B (zh) * 2020-05-28 2022-06-10 山东云海国创云计算装备产业创新中心有限公司 一种指令组调度方法、架构、设备及存储介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2685484B2 (ja) * 1988-04-13 1997-12-03 株式会社日立製作所 記憶制御方式
US5600805A (en) * 1992-06-15 1997-02-04 International Business Machines Corporation Pass-through for I/O channel subsystem call instructions for accessing shared resources in a computer system having a plurality of operating systems
JPH06332701A (ja) * 1993-05-26 1994-12-02 Hitachi Ltd 情報処理装置
US6801995B1 (en) * 1998-08-04 2004-10-05 Agere Systems, Inc. Method for optimally encoding a set of instruction codes for a digital processor having a plurality of instruction selectable resource types and an associated optimized set of instruction codes
US6631462B1 (en) * 2000-01-05 2003-10-07 Intel Corporation Memory shared between processing threads
US6820142B2 (en) * 2000-12-14 2004-11-16 International Business Machines Corporation Token based DMA
US6643747B2 (en) * 2000-12-27 2003-11-04 Intel Corporation Processing requests to efficiently access a limited bandwidth storage area
US6567897B2 (en) * 2001-03-01 2003-05-20 International Business Machines Corporation Virtualized NVRAM access methods to provide NVRAM CHRP regions for logical partitions through hypervisor system calls
GB2392742B (en) 2002-09-04 2005-10-19 Advanced Risc Mach Ltd Synchronisation between pipelines in a data processing apparatus
US7530068B2 (en) * 2003-12-17 2009-05-05 International Business Machines Corporation Method of resource allocation using an access control mechanism
US6996647B2 (en) * 2003-12-17 2006-02-07 International Business Machines Corporation Token swapping for hot spot management
US20060015772A1 (en) * 2004-07-16 2006-01-19 Ang Boon S Reconfigurable memory system
US7386687B2 (en) * 2005-01-07 2008-06-10 Sony Computer Entertainment Inc. Methods and apparatus for managing a shared memory in a multi-processor system
US20060259733A1 (en) * 2005-05-13 2006-11-16 Sony Computer Entertainment Inc. Methods and apparatus for resource management in a logically partitioned processing environment
US7412353B2 (en) * 2005-09-28 2008-08-12 Intel Corporation Reliable computing with a many-core processor

Also Published As

Publication number Publication date
US8407451B2 (en) 2013-03-26
US20080189522A1 (en) 2008-08-07
JP2010518472A (ja) 2010-05-27
EP2115584A1 (en) 2009-11-11
KR101123443B1 (ko) 2012-06-12
WO2008095844A1 (en) 2008-08-14
TW200901040A (en) 2009-01-01
KR20090115115A (ko) 2009-11-04
TWI417792B (zh) 2013-12-01
CN101606130B (zh) 2014-05-07
EP2115584B1 (en) 2016-01-27
CN101606130A (zh) 2009-12-16

Similar Documents

Publication Publication Date Title
JP5241737B2 (ja) プロセッサ・システムにおいて命令レベルでのリソース割り当ての識別を可能にする方法および装置
JP7379502B2 (ja) フォールバックを伴う有向割り込みの仮想化方法、システム、プログラム
US8943584B2 (en) Centralized device virtualization layer for heterogeneous processing units
TWI516958B (zh) 用於處理器加速器介面的虛擬化的處理器、系統及方法
US10310973B2 (en) Efficient memory virtualization in multi-threaded processing units
US7958298B2 (en) System and method for providing address decode and virtual function (VF) migration support in a peripheral component interconnect express (PCIE) multi-root input/output virtualization (IOV) environment
RU2608000C2 (ru) Представление фильтрации наблюдения, ассоциированной с буфером данных
KR101179341B1 (ko) 메모리 액세스 데이터 구조에 기초하는 직접 캐시 액세스트랜잭션의 수행
JP7398465B2 (ja) 有向割り込みの仮想化のための割り込み信号伝達方法、システム、プログラム
US9384132B2 (en) Emulated message signaled interrupts in a virtualization environment
JP7335339B2 (ja) 有向割り込みの仮想化方法、システム、プログラム
JP7450627B2 (ja) 実行中インジケータを使用した有向割り込みの仮想化方法、システム、プログラム
US20140123146A1 (en) Efficient memory virtualization in multi-threaded processing units
JP7448550B2 (ja) ブロッキング・インジケータを使用した有向割り込みの仮想化方法、システム、プログラム
JP2011065650A (ja) ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供
JP2013025823A (ja) 仮想gpu
US9626216B2 (en) Graphics processing unit sharing between many applications
JP2008269474A (ja) 情報処理装置およびアクセス制御方法
US10853259B2 (en) Exitless extended page table switching for nested hypervisors
JP2023070069A (ja) 仮想マシンにおけるユーザレベル割り込み
TW202219758A (zh) 在虛擬機器間無需複製而移動資料的技術
US20230315328A1 (en) High bandwidth extended memory in a parallel processing system
JP4214521B2 (ja) 情報処理システム及びマルチプロセッサ・システム
CN113849427A (zh) 用于处理器中的细粒度地址空间选择的系统、装置和方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100922

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121226

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130108

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20130123

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130123

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20130123

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20130123

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130312

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20130312

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20130312

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130402

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160412

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees