JP5558713B2 - Method for communicating instructions and data related to events in a processor within a data processing system - Google Patents

Method for communicating instructions and data related to events in a processor within a data processing system Download PDF

Info

Publication number
JP5558713B2
JP5558713B2 JP2008526500A JP2008526500A JP5558713B2 JP 5558713 B2 JP5558713 B2 JP 5558713B2 JP 2008526500 A JP2008526500 A JP 2008526500A JP 2008526500 A JP2008526500 A JP 2008526500A JP 5558713 B2 JP5558713 B2 JP 5558713B2
Authority
JP
Japan
Prior art keywords
channel
event
spu
read
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
JP2008526500A
Other languages
Japanese (ja)
Other versions
JP2009505258A (en
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
Priority claimed from US11/207,971 external-priority patent/US7500039B2/en
Priority claimed from US11/207,970 external-priority patent/US7778271B2/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2009505258A publication Critical patent/JP2009505258A/en
Application granted granted Critical
Publication of JP5558713B2 publication Critical patent/JP5558713B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Bus Control (AREA)
  • Communication Control (AREA)

Description

本発明は、一般に、改良されたデータ処理システムおよび方法に関する。より具体的には、本発明は、プロセッサと外部装置との間で命令およびデータを伝達するためのシステムおよび方法を対象とする。   The present invention generally relates to improved data processing systems and methods. More specifically, the present invention is directed to a system and method for communicating instructions and data between a processor and an external device.

通常、従来技術では、CPUまたはその他の処理装置(PU:processing unit)がプログラムの外部の何らかのイベントを待っているときに、オペレーティング・システムまたはアクティブ・プログラムはポーリング・ループを実行し、そこで、それが待っているイベントが発生するまで、プログラムに関してPUによって使用されるイベント・レジスタを読み取り続けることになる。プログラムが動作している間、PUはイベント・レジスタをポーリングしており、有用な作業を実行していない。   Typically, in the prior art, when the CPU or other processing unit (PU) is waiting for some event outside the program, the operating system or active program executes a polling loop where it Will continue to read the event register used by the PU for the program until the event is waiting. While the program is running, the PU is polling the event register and is not performing useful work.

典型的な最新プロセッサは、この通信のために仮想メモリおよび外部装置のメモリ・マッピングを使用する場合が多い。これに反して、いくつかのプロセッサは、特にマルチプロセッサ環境では、仮想メモリではなく、ローカル・メモリにのみアクセスできる。ローカル・メモリは有限であり、典型的なマルチプロセッサ構成では、このローカル・メモリの外部のいかなるメモリも、ロード動作および保管動作によってアクセスすることができない。したがって、外部装置からの応答を待っている間、その他のPU機能のためにローカル・メモリを使用することは限定される。PUが同時にいくつかの装置からの通信応答を待っている場合、その他の機能のために使用可能なメモリはさらに限定される。   Typical modern processors often use virtual memory and external device memory mapping for this communication. On the other hand, some processors can only access local memory, not virtual memory, especially in a multiprocessor environment. Local memory is finite and in a typical multiprocessor configuration, no memory outside of this local memory can be accessed by load and store operations. Therefore, using local memory for other PU functions while waiting for a response from an external device is limited. If the PU is waiting for communication responses from several devices at the same time, the memory available for other functions is further limited.

メモリは、着信または発信レジスタ内に有効データが存在するかどうかを追跡するために使用することもできる。有効データとは、受信装置による使用のためにレジスタ内に置かれたが、受信装置によってまだアクセスされていないデータである。したがって、上記により、最新のコンピューティング・デバイス内のメモリ・リソース上に多くのドレインが存在することは明白である。
米国特許出願公開第2004/0264445号
The memory can also be used to track whether there is valid data in the incoming or outgoing registers. Valid data is data that has been placed in a register for use by a receiving device but has not yet been accessed by the receiving device. Thus, from the above, it is clear that there are many drains on memory resources in modern computing devices.
US Patent Application Publication No. 2004/0264445

上記を考慮すると、このような通信がプロセッサのローカル・メモリまたは仮想メモリに負担をかけないような、プロセッサとプロセッサの外部のその他の装置、たとえば、その他のプロセッサ、入出力(I/O)装置などとの間で通信するためのシステムおよび方法を有することは有益なことになるであろう。その上、データまたはイベントを待っている間にプロセッサが低電力状態になることを可能にするシステムおよび方法を有することは有益なことになるであろう。   In view of the above, the processor and other devices external to the processor, such as other processors, input / output (I / O) devices, such communication does not burden the processor's local memory or virtual memory It would be beneficial to have a system and method for communicating with and the like. Moreover, it would be beneficial to have a system and method that allows the processor to enter a low power state while waiting for data or events.

本発明は、プロセッサと外部装置との間で命令およびデータを伝達するためのシステムおよび方法あるいはプロセッサ・イベント機能と通信するためのシステムおよび方法もしくはその両方を提供する。本発明のシステムおよび方法は、プロセッサとメモリ・フロー・コントローラとの間で通信するための1次メカニズムとしてチャネル・インターフェースを利用する。チャネル・インターフェースは、たとえば、プロセッサ機能、メモリ・フロー制御機能、マシン状態レジスタ、および外部プロセッサ割り込み機能と通信するためのチャネルを提供する。これらのチャネルは、プロセッサのローカル・ストアにかかる負担を低減するとともにバス・トラフィックを最小限にする働きをする。   The present invention provides a system and / or method for communicating instructions and data between a processor and an external device and / or a system and / or method for communicating with a processor event function. The system and method of the present invention utilizes the channel interface as the primary mechanism for communicating between the processor and the memory flow controller. The channel interface provides a channel for communicating with, for example, processor functions, memory flow control functions, machine status registers, and external processor interrupt functions. These channels serve to reduce the burden on the processor's local store and minimize bus traffic.

これらのチャネルは、ブロッキングまたは非ブロッキングとして指定することができる。ブロッキング・チャネルの場合、いかなるデータも対応するレジスタから読み取るために使用可能ではないか、またはいかなる空間も対応するレジスタに書き込むために使用可能ではないときに、プロセッサは低電力「停止(stall)」状態になる。データが使用可能になるかまたは空間が解放されると、プロセッサは、ブロッキング・チャネルによる通信を介して、自動的に起動される。したがって、本発明のチャネルは、従来技術のシステムのように、イベント・レジスタ上で連続的にポーリングまたはスピンするのではなく、プロセッサが低電力状態にとどまることを可能にする。   These channels can be designated as blocking or non-blocking. For the blocking channel, the processor is low power "stall" when no data is available to read from the corresponding register, or no space is available to write to the corresponding register. It becomes a state. When data becomes available or space is freed, the processor is automatically activated via communication over the blocking channel. Thus, the channel of the present invention allows the processor to remain in a low power state rather than continuously polling or spinning on the event register as in prior art systems.

本発明の上記その他の特徴および利点は、本発明の模範的な諸実施形態について以下に示す詳細な説明に記載されるかまたはその詳細な説明を考慮すると当業者には明らかになるであろう。   These and other features and advantages of the present invention are described in, or will be apparent to those skilled in the art, the following detailed description of exemplary embodiments of the present invention. .

本発明に特有と思われる新規な特徴は特許請求の範囲に明記されている。しかし、本発明そのものならびに本発明の好ましい使用態様、その他の目的および利点は、添付図面に関連して読んだときに、例示的な一実施形態について以下に示す詳細な説明を参照することにより、最も良く理解されるであろう。   The novel features believed characteristic of the invention are set forth in the appended claims. However, the invention itself, as well as preferred uses of the invention, and other objects and advantages, when read in conjunction with the appended drawings, by reference to the following detailed description of an exemplary embodiment, Will be best understood.

図1は、本発明の諸態様を実装可能なデータ処理システムの模範的なブロック図である。図1に示されている模範的なデータ処理システムは、インターナショナル・ビジネス・マシーンズ社から入手可能なCELLブロードバンド・エンジン・プロセッサなどの異機種ブロードバンド・プロセッサ・アーキテクチャの実装の一例である。ブロードバンド・プロセッサ・アーキテクチャ(BPA:Broadband Processor Architecture)は本発明の好ましい諸実施形態の説明で使用されるが、以下の説明を読むと当業者には容易に明らかになるように、本発明はこのようなものに限定されない。   FIG. 1 is an exemplary block diagram of a data processing system in which aspects of the present invention may be implemented. The exemplary data processing system shown in FIG. 1 is an example of an implementation of a heterogeneous broadband processor architecture such as a CELL broadband engine processor available from International Business Machines. The Broadband Processor Architecture (BPA) is used in the description of the preferred embodiments of the present invention, but the present invention is not limited to this, as will be readily apparent to those skilled in the art upon reading the following description. It is not limited to such a thing.

図1に示されている通り、BPA100は、パワー・プロセッサ・ユニット(PPU)116ならびにそのL1およびL2キャッシュ112および114を有するパワー・プロセッサ・エレメント(PPE)110と、そのそれぞれが専用の処理装置(SPU)140〜154、メモリ・フロー制御(MFC)155〜162、ローカル・メモリまたはストア(LS)163〜170、およびバス・インターフェース・ユニット(BIUユニット)180〜194を有する複数の協同プロセッサ・エレメント(SPE)120〜134との異機種配置を含み、そのバス・インターフェース・ユニットはたとえば、直接メモリ・アクセス(DMA)、メモリ管理ユニット(MMU)、およびバス・インターフェース・ユニットの組み合わせにすることができる。高帯域幅内部エレメント相互接続バス(EIB)196、バス・インターフェース・ユニット(BIC)197、およびメモリ・インターフェース・コントローラ(MIC)198も提供される。ブロードバンド・エンジン100は、図1に描写されているエレメントのそれぞれを単一マイクロプロセッサ・チップ上に設けることができるような1チップ上のシステム(system-on-a-chip)にすることができる。   As shown in FIG. 1, the BPA 100 includes a power processor unit (PPU) 116 and a power processor element (PPE) 110 having its L1 and L2 caches 112 and 114, each with a dedicated processing unit. Multiple coprocessors having (SPU) 140-154, memory flow control (MFC) 155-162, local memory or store (LS) 163-170, and bus interface unit (BIU unit) 180-194 Including a heterogeneous arrangement with elements (SPEs) 120-134, the bus interface unit being, for example, a combination of direct memory access (DMA), memory management unit (MMU), and bus interface unit It is possible. A high bandwidth internal element interconnect bus (EIB) 196, a bus interface unit (BIC) 197, and a memory interface controller (MIC) 198 are also provided. The broadband engine 100 can be a system-on-a-chip such that each of the elements depicted in FIG. 1 can be provided on a single microprocessor chip. .

BPA100は、図1に描写されているエレメントのそれぞれを単一マイクロプロセッサ・チップ上に設けることができるような1チップ上のシステムにすることができる。その上、BPA100は、SPUのそれぞれがシステム内の他のSPUのそれぞれから種々の命令を受信できる異機種処理環境である。その上、SPUに関する命令セットはPPUのものとは異なり、たとえば、PPUは縮小命令セット・コンピュータ(RISC)ベースの命令を実行することができ、SPUはベクトル化命令を実行する。   The BPA 100 can be a one-chip system such that each of the elements depicted in FIG. 1 can be provided on a single microprocessor chip. In addition, the BPA 100 is a heterogeneous processing environment in which each SPU can receive various instructions from each of the other SPUs in the system. Moreover, the instruction set for the SPU is different from that of the PPU, for example, the PPU can execute reduced instruction set computer (RISC) based instructions, and the SPU executes vectorized instructions.

SPE120〜134は、相互に結合され、EIB196を介してL2キャッシュ114に結合される。加えて、SPE120〜134は、EIB196を介してMIC198およびBIC197に結合される。MIC198は、共用メモリ199への通信インターフェースを提供する。BIC197は、BPA100とその他の外部バスおよび装置との通信インターフェースを提供する。   SPEs 120-134 are coupled together and coupled to L2 cache 114 via EIB 196. In addition, SPEs 120-134 are coupled to MIC 198 and BIC 197 via EIB 196. The MIC 198 provides a communication interface to the shared memory 199. The BIC 197 provides a communication interface between the BPA 100 and other external buses and devices.

PPE110はデュアル・スレッドPPE110である。このデュアル・スレッドPPE110と8個のSPE120〜134とを組み合わせることにより、10個の同時スレッドと128個以上の未解決メモリ要求を処理可能なBPA100になる。PPE110は、計算作業負荷のほとんどを処理する他の8個のSPE120〜134のためのコントローラとして動作する。PPE110は従来のオペレーティング・システムを実行するために使用することができ、SPE120〜134はたとえばベクトル化浮動小数点コード実行を実行する。   PPE 110 is a dual thread PPE 110. Combining the dual thread PPE 110 and the eight SPEs 120-134 results in a BPA 100 that can handle 10 simultaneous threads and 128 or more outstanding memory requests. PPE 110 operates as a controller for the other eight SPEs 120-134 that handle most of the computational workload. PPE 110 can be used to run a conventional operating system, and SPEs 120-134 perform, for example, vectorized floating point code execution.

SPE120〜134は、協同処理装置(SPU)140〜154と、メモリ・フロー制御ユニット155〜162と、ローカル・メモリまたはストア163〜174と、インターフェース・ユニット180〜194とを含む。ローカル・メモリまたはストア163〜174は、模範的な一実施形態では、PPE110にとって可視のものであり、ソフトウェアによって直接アドレス指定可能な256KBの命令およびデータ・メモリを含む。   SPEs 120-134 include cooperative processing units (SPUs) 140-154, memory flow control units 155-162, local memory or stores 163-174, and interface units 180-194. The local memory or store 163-174, in one exemplary embodiment, is visible to the PPE 110 and includes 256 KB of instruction and data memory that is directly addressable by software.

PPE110は、SPE120〜134に小さいプログラムまたはスレッドをロードし、複雑な動作内の各ステップを処理するためにSPEをまとめてチェーニングすることができる。たとえば、BPA100を取り入れたセット・トップ・ボックスは、DVDを読み取るため、ビデオおよびオーディオ・デコードのため、ならびにディスプレイのためのプログラムをロードすることができ、データは最終的に出力ディスプレイ上に到達するまで、SPEからSPEへと渡されるであろう。   The PPE 110 can load a small program or thread into the SPEs 120-134 and chain the SPEs together to handle each step in a complex operation. For example, a set top box incorporating BPA 100 can load programs for reading DVDs, for video and audio decoding, and for display, and the data will eventually arrive on the output display Will be passed from SPE to SPE.

メモリ・フロー制御ユニット(MFC)155〜162は、システムの残りの部分およびその他のエレメントへのSPUのためのインターフェースとして働く。MFC155〜162は、主記憶装置とローカル・ストア163〜174との間のデータ転送、保護、および同期のための1次メカニズムを提供する。論理的には、1つのプロセッサ内の各SPUごとに1つのMFCが存在する。いくつかの実装例は、複数のSPU間で単一MFCのリソースを共用することができる。このような場合、MFCに関して定義されたすべての機能およびコマンドは、各SPU用のソフトウェアにとって独立しているように見えなければならない。MFCを共用することの効果は、実装依存の機能およびコマンドに限定される。   Memory flow control units (MFCs) 155-162 serve as interfaces for the SPU to the rest of the system and other elements. MFCs 155-162 provide the primary mechanism for data transfer, protection, and synchronization between main storage and local stores 163-174. Logically, there is one MFC for each SPU in one processor. Some implementations may share a single MFC resource among multiple SPUs. In such a case, all functions and commands defined for the MFC must appear to be independent to the software for each SPU. The effect of sharing the MFC is limited to implementation-dependent functions and commands.

メモリ・フロー制御(MFC)ユニット
図2は、本発明の模範的な一実施形態による典型的なメモリ・フロー制御(MFC)ユニット200の模範的なブロック図である。この模範的な実施形態では、MFC200は、SPUへの2つのインターフェース210および212と、バス・インターフェース・ユニット(BIU)220への2つのインターフェース214および216と、任意選択のSL1キャッシュ230への2つのインターフェース222および224とを有する。SPUインターフェース210および212は、SPUチャネル・インターフェース210と、SPUローカル記憶インターフェース212である。SPUチャネル・インターフェース210により、SPUは、MFC機能にアクセスし、MFCコマンドを発行することができる。SPUローカル記憶インターフェース212は、SPU内のローカル・ストアにアクセスするためにMFC200によって使用される。BIU220への一方のインターフェース214により、MFC機能へのメモリ・マップ入出力(MMIO:Memory Mapped I/O)アクセスが可能になる。また、このインターフェース214により、他のプロセッサがMFCコマンドを発行することもできる。MMIOを使用して発行されたコマンドは、MFCプロキシ・コマンドと呼ばれる。
Memory Flow Control (MFC) Unit FIG. 2 is an exemplary block diagram of an exemplary memory flow control (MFC) unit 200 according to an exemplary embodiment of the present invention. In this exemplary embodiment, the MFC 200 has two interfaces 210 and 212 to the SPU, two interfaces 214 and 216 to the bus interface unit (BIU) 220, and two to the optional SL1 cache 230. Two interfaces 222 and 224. SPU interfaces 210 and 212 are an SPU channel interface 210 and an SPU local storage interface 212. The SPU channel interface 210 allows the SPU to access MFC functions and issue MFC commands. The SPU local storage interface 212 is used by the MFC 200 to access a local store within the SPU. One interface 214 to the BIU 220 allows memory mapped input / output (MMIO) access to the MFC function. In addition, this interface 214 allows other processors to issue MFC commands. Commands issued using MMIO are called MFC proxy commands.

SL1キャッシュへのインターフェース222および224は主にデータ転送用である。一方のインターフェース222は主記憶装置内のアドレス変換テーブルにアクセスするためにMFC200によって使用され、もう一方のインターフェース224は主記憶装置とローカル記憶装置との間のデータの転送に使用される。   Interfaces 222 and 224 to the SL1 cache are mainly for data transfer. One interface 222 is used by the MFC 200 to access the address translation table in the main storage device, and the other interface 224 is used to transfer data between the main storage device and the local storage device.

図2に示されている通り、典型的なMFC内の主要ユニットとしては、メモリ・マップ入出力(MMIO)インターフェース240と、MFCレジスタ250と、DMAコントローラ260とを含む。MMIOインターフェース240は、SPUのMFC機能をシステムの実アドレス空間にマッピングする。これにより、システム内の任意のプロセッサまたは任意の装置からMFC機能へのアクセスが可能になる。加えて、MMIOインターフェース240は、SPUのローカル・ストアを実アドレス空間にマッピングするよう構成することができる。これにより、システム内の任意のプロセッサまたは任意の装置からローカル・ストアへの直接アクセスが可能になり、ローカル・ストア間転送ならびに入出力装置がSPUのローカル・ストア・ドメインに直接アクセスする能力が使用可能になる。   As shown in FIG. 2, the main units in a typical MFC include a memory mapped input / output (MMIO) interface 240, an MFC register 250, and a DMA controller 260. The MMIO interface 240 maps the SPU's MFC function to the real address space of the system. This allows access to the MFC function from any processor or any device in the system. In addition, the MMIO interface 240 can be configured to map the local store of the SPU to the real address space. This allows direct access to the local store from any processor or device in the system, and enables the ability to transfer between local stores and I / O devices directly access the local store domain of the SPU. Become.

MFCレジスタ・ユニット250は、MFC機能のほとんどを収容する。いくつかの機能は直接メモリ・アクセス・コントローラ(DMAC)260に収容される。MFC200内の機能のリストは以下の通りである。ユーザ・モード環境機能、すなわち、非特権アプリケーションからアクセス可能な環境機能としては、(1)メールボックス機能、(2)SPU信号通知機能、(3)プロキシ・タグ・グループ完了機能、(4)MFCマルチソース同期機能、(5)SPU制御および状況機能、ならびに(6)SPU分離機能を含む。特権モード環境機能、すなわち、オペレーティング・システムなどの特権ソフトウェアのみによってアクセス可能な機能としては、(1)MFC状態レジスタ1、(2)MFC論理区画IDレジスタ、(3)MFC記憶記述レジスタ、(4)MFCデータ・アドレス・レジスタ、(5)MFCデータ記憶割り込み状況レジスタ、(6)MFCアドレス比較制御レジスタ、(7)MFCローカル記憶アドレス比較機能、(8)MFCコマンド・エラー・レジスタ、(9)MFCデータ記憶割り込みポインタ・レジスタ、(10)MFC制御レジスタ、(11)MFCアトミック・フラッシュ・レジスタ、(12)SPUアウトバウンド割り込みメールボックス・レジスタ、(13)SPU特権機能、(14)SPU特権制御レジスタ、(15)SPUローカル記憶制限レジスタ、(16)SPU構成レジスタ、および(17)SPEコンテキスト保存復元を含む。   The MFC register unit 250 houses most of the MFC functions. Some functions are housed in a direct memory access controller (DMAC) 260. A list of functions in the MFC 200 is as follows. User mode environment functions, ie, environment functions accessible from non-privileged applications include (1) mailbox function, (2) SPU signal notification function, (3) proxy tag group completion function, and (4) MFC. Includes multi-source synchronization function, (5) SPU control and status function, and (6) SPU separation function. Privileged mode environment functions, that is, functions accessible only by privileged software such as an operating system include (1) MFC status register 1, (2) MFC logical partition ID register, (3) MFC storage description register, (4 ) MFC data address register, (5) MFC data storage interrupt status register, (6) MFC address comparison control register, (7) MFC local storage address comparison function, (8) MFC command error register, (9) MFC data storage interrupt pointer register, (10) MFC control register, (11) MFC atomic flash register, (12) SPU outbound interrupt mailbox register, (13) SPU privilege function, (14) SPU privilege control register , (15) PU local memory limit registers, including (16) SPU Configuration Register, and (17) SPE context save restore.

本発明のメカニズムにとって特に重要な機能、すなわち、メールボックス機能、SPU信号通知機能、プロキシ・タグ・グループ完了機能、MFCマルチソース同期機能、SPUチャネル・アクセス機能、SPUイベント機能、および割り込み機能について、以下により詳細に説明する。   For functions of particular importance to the mechanism of the present invention, namely mailbox function, SPU signal notification function, proxy tag group completion function, MFC multi-source synchronization function, SPU channel access function, SPU event function, and interrupt function, This will be described in more detail below.

データの同期および転送は、一般に、MFC200内のDMAC260の役割である。DMAC260は、SPUのローカル記憶装置と主記憶域との間でデータを移動することができる。任意選択で、データをSL1キャッシュに入れることができる。   Data synchronization and transfer is generally the role of the DMAC 260 within the MFC 200. The DMAC 260 can move data between the SPU's local storage and main storage. Optionally, data can be placed in the SL1 cache.

SPEおよびPPEは、コマンド・キュー270および280のうちの一方によりMFCへのDMAコマンド要求をキューイングすることにより、これらのDMA動作を実行するようMFC200に命令する。SPEによって発行されたコマンドは、MFC SPUコマンド・キュー280にキューイングされる。PPEによって発行されたコマンドは、MFCプロキシ・コマンド・キュー270にキューイングされる。MFCは、DMA転送に必要なすべてのMFCアドレス変換およびMFCアクセス保護チェックを実行するためにメモリ・マッピング・ユニット(MMU)290を使用する。   The SPE and PPE instruct the MFC 200 to perform these DMA operations by queuing DMA command requests to the MFC by one of the command queues 270 and 280. Commands issued by the SPE are queued in the MFC SPU command queue 280. Commands issued by the PPE are queued in the MFC proxy command queue 270. The MFC uses a memory mapping unit (MMU) 290 to perform all MFC address translation and MFC access protection checks necessary for DMA transfers.

MFCコマンドは、SPU内で実行されるコードが主記憶装置にアクセスし、システム内の他のプロセッサおよび装置との同期を維持できるようにする主要な方法を提供する。また、任意選択のキャッシュを管理するためのコマンドも提供される。MFCコマンドは、SPU上で実行されるコードによるかまたはPPEなどの他のプロセッサまたは装置上で実行されるコードによって発行することができる。関連SPU上で実行されるコードは、MFCコマンドを発行するための一連のチャネル命令を実行する。他のプロセッサまたは装置上で実行されるコードは、SPEに対してMFCコマンドを発行するための一連のメモリ・マップ入出力(MMIO)転送を実行する。発行されたコマンドは、コマンド・キュー270および280のうちの一方にキューイングされる。   MFC commands provide a primary method that allows code executed in the SPU to access main memory and maintain synchronization with other processors and devices in the system. Commands are also provided for managing optional caches. MFC commands can be issued by code executing on the SPU or by code executing on other processors or devices such as PPE. The code executed on the associated SPU executes a series of channel instructions for issuing MFC commands. Code executed on other processors or devices performs a series of memory mapped input / output (MMIO) transfers to issue MFC commands to the SPE. Issued commands are queued in one of command queues 270 and 280.

一般に、コマンドは、MMIOレジスタを使用して、または関連SPUによって実行されたチャネル命令により、キューイングすることができる。MMIO方法は、SPEに代わって主記憶装置と関連ローカル記憶装置との間のデータの転送を制御するためにPPEが使用するためのものである。データを転送するMFCコマンドは、MFC DMAコマンドと呼ばれる。MFC DMAコマンドに関するデータ転送方向は必ずSPEの観点から参照される。したがって、SPEに(主記憶装置からローカル記憶装置に)データを転送するコマンドは取得(get)コマンドと見なされ、SPEから(ローカル記憶装置から主記憶装置に)データを転送するコマンドはプット(put)コマンドと見なされる。   In general, commands can be queued using MMIO registers or by channel instructions executed by the associated SPU. The MMIO method is for use by the PPE to control the transfer of data between main storage and associated local storage on behalf of the SPE. An MFC command for transferring data is called an MFC DMA command. The data transfer direction related to the MFC DMA command is always referred from the viewpoint of SPE. Therefore, a command that transfers data to the SPE (from the main storage device to the local storage device) is regarded as a get command, and a command that transfers data from the SPE (from the local storage device to the main storage device) is put (put). ) Is considered a command.

MFCコマンドは、そのコマンドの動作に影響する複数のパラメータを利用する。図3は、本発明の模範的な一実施形態によるMFCコマンドに関するパラメータ・ニーモニックを例示する模範的な図である。すべてのパラメータがすべてのコマンドによって使用されるわけではない。たとえば、EAHパラメータは任意選択である。任意選択のパラメータがコマンドに指定されない場合、その任意選択のパラメータはハードウェアによって「0」に設定される。   An MFC command uses a plurality of parameters that affect the operation of the command. FIG. 3 is an exemplary diagram illustrating parameter mnemonics for MFC commands according to an exemplary embodiment of the present invention. Not all parameters are used by all commands. For example, the EAH parameter is optional. If an optional parameter is not specified in the command, the optional parameter is set to “0” by the hardware.

MFCコマンドは、定義済みコマンド、違法コマンド、および予約済みコマンドという3つのクラスにカテゴリ化することができる。あるコマンドのクラスは、命令コードと、存在する場合は拡張命令コードとを検査することによって決定される。コマンド命令コードまたは命令コードと拡張命令コードとの組み合わせが定義済みコマンドまたは予約済みコマンドのものではない場合、そのコマンドは違法である。   MFC commands can be categorized into three classes: predefined commands, illegal commands, and reserved commands. The class of a command is determined by examining the instruction code and, if present, the extended instruction code. A command is illegal if the command instruction code or combination of instruction code and extended instruction code is not for a predefined command or a reserved command.

定義済みコマンドは、データ転送コマンド、SL1キャッシュ管理コマンド、および同期コマンドという3つのカテゴリの1つに分類される。データ転送コマンドは、データ移動の方向(すなわち、ローカル記憶装置へまたはローカル記憶装置から)を定義するサブカテゴリにさらに分割される。プット・コマンドは、ローカル・ストアから主記憶装置にデータを移動するデータ転送コマンドである。取得コマンドは、主記憶装置からローカル・ストアにデータを移動するデータ転送コマンドである。アプリケーションは、データ転送コマンドをMFCプロキシ・コマンド・キュー270に入れることができる。特に留意されない限り、これらのコマンドは任意の順序で(非同期で)実行することができる。   Predefined commands fall into one of three categories: data transfer commands, SL1 cache management commands, and synchronization commands. Data transfer commands are further divided into sub-categories that define the direction of data movement (ie, to or from local storage). The put command is a data transfer command for moving data from the local store to the main storage device. The acquisition command is a data transfer command for moving data from the main storage device to the local store. The application can place data transfer commands in the MFC proxy command queue 270. Unless otherwise noted, these commands can be executed in any order (asynchronously).

「違法」クラスのコマンドは、定義済みクラスまたは予約済みクラスに入らないコマンドを対象とする。「予約済み」クラスのコマンドは実装依存の使用のためのものである。   “Illegal” class commands target commands that do not fall into a defined or reserved class. “Reserved” class commands are for implementation-dependent use.

SL1記憶制御コマンドは、SL1キャッシュに関する動作を制御するためのコマンドである。これらの記憶制御コマンドとしては、たとえば、取得またはプット・コマンド、アドレス範囲操作コマンド、およびフラッシュ・コマンドなど、特定のタイプのデータ転送コマンドがおそらく発行されることをSL1キャッシュに通知するための「ヒント(hint)」コマンドを含む。   The SL1 storage control command is a command for controlling operations related to the SL1 cache. These storage control commands include, for example, a “hint” to notify the SL1 cache that a particular type of data transfer command is probably issued, such as a get or put command, an address range manipulation command, and a flush command. (Hint) "command.

MFC同期コマンドは、他のMFC、プロセッサ、および他の装置に対して記憶アクセスが実行される順序を制御するために使用される。MFC同期コマンドとしては、適正順序実行(in-order execution)を施行するためのコマンド、DMAコマンド・キュー内のバリア・コマンド以前のすべてのコマンドに対するすべての後続コマンドを順序付けるためのバリア・コマンド、ターゲットにされた信号通知レジスタ内の信号ビットを論理的に設定するための送信信号コマンドなどを含む。   The MFC synchronization command is used to control the order in which storage accesses are performed for other MFCs, processors, and other devices. MFC synchronization commands include commands for enforcing in-order execution, barrier commands for ordering all subsequent commands for all commands prior to the barrier command in the DMA command queue, This includes a transmission signal command for logically setting signal bits in the targeted signal notification register.

MFCコマンドは、個別のDMAコマンドである場合もあれば、DMAリスト・コマンドである場合もある。本発明の模範的な一実施形態によるDMAリスト・コマンドの詳細は図4に示されている。DMAリスト・コマンドは、DMA転送用のパラメータとして、ローカル記憶装置に保管された有効アドレスおよび転送サイズ対またはリスト・エレメントのリストを使用する。これらのパラメータは、MFCプロキシ・コマンド・キュー上でサポートされない、SPU開始DMAリスト・コマンドに使用される。各リスト・エレメントの第1のワードは転送サイズと停止通知(stall-and-notify)フラグを含む。第2のワードは有効アドレスの下位32ビットを含む。開始有効アドレスはリスト内の各転送エレメントごとに指定され、転送に関わるローカル記憶アドレスは1次リスト・コマンドのみに指定される(「1次」という用語は図3に示されているパラメータによって指定されたリスト・コマンドを指す)。   The MFC command may be an individual DMA command or a DMA list command. Details of the DMA list command according to an exemplary embodiment of the invention are shown in FIG. The DMA list command uses a valid address and transfer size pair stored in local storage or a list of list elements as parameters for DMA transfer. These parameters are used for SPU start DMA list commands that are not supported on the MFC proxy command queue. The first word of each list element contains the transfer size and a stall-and-notify flag. The second word contains the lower 32 bits of the effective address. The starting effective address is specified for each transfer element in the list, and the local storage address involved in the transfer is specified only for the primary list command (the term “primary” is specified by the parameters shown in FIG. 3). Pointed list command).

ローカル記憶アドレスは、リスト内の各エレメントによって転送されたデータの量に基づいて内部で増分される。しかし、位置合わせの制約により、ローカル記憶アドレスがリスト・エレメント転送用の16バイト境界から始まらない場合、ハードウェアは次の16バイト境界までローカル記憶アドレスを自動的に増分する。これは、16バイト未満の転送サイズが使用される場合にのみ行われる。16バイト未満の転送サイズを有するリスト・エレメントは、有効アドレスの最下位4ビットによって定義された現行4倍長ワード(16バイト)内のローカル記憶オフセットを使用する。   The local storage address is incremented internally based on the amount of data transferred by each element in the list. However, due to alignment constraints, if the local storage address does not start on a 16-byte boundary for list element transfer, the hardware automatically increments the local storage address until the next 16-byte boundary. This is done only if a transfer size of less than 16 bytes is used. List elements with a transfer size of less than 16 bytes use the local storage offset within the current quadword (16 bytes) defined by the least significant 4 bits of the effective address.

リスト・エレメントに指定された有効アドレスは、ベースDMAリスト・コマンドに指定された有効アドレスの上位32ビットによって定義された4GBの領域に対して相対的なものである。DMAリスト開始アドレスは単一4GB領域に対して相対的なものであり、1つのリスト・エレメント内の転送は4GB境界を横切る可能性がある。   The effective address specified in the list element is relative to the 4 GB area defined by the upper 32 bits of the effective address specified in the base DMA list command. The DMA list start address is relative to a single 4GB region, and transfers within one list element can cross a 4GB boundary.

「S」(停止通知)ビットを設定すると、DMA動作により、現行リスト・エレメントが処理されたあとにこのリストの実行が中断され、そのSPUに関して停止通知イベント状況が設定される。停止されたリストの実行は、MFCがSPUプログラムから停止通知確認応答を受信するまで再開しない。停止通知イベントは、関連コマンド・タグ・グループIDを使用してSPUプログラムに通知される。停止通知エレメントを有する同じタグ・グループ内に複数のDMAリスト・コマンドが存在する場合、ソフトウェアは、曖昧さを回避するようDMAリスト・コマンドの順序付き実行を強制するために、タグ固有のバリアまたはグローバル・バリアが使用されることを保証する。   Setting the "S" (stop notification) bit causes the DMA operation to suspend execution of this list after the current list element has been processed and sets the stop notification event status for that SPU. Execution of the stopped list does not resume until the MFC receives a stop notification confirmation response from the SPU program. The stop notification event is notified to the SPU program using the related command tag group ID. If there are multiple DMA list commands in the same tag group with a stop notification element, the software can use tag-specific barriers or to force ordered execution of the DMA list commands to avoid ambiguity. Ensure that global barriers are used.

DMAリスト・コマンド内のすべてのDMAリスト・エレメントは、順に開始され発行されることが保証される。DMAリスト・コマンド内のすべてのエレメントは固有のローカル順序付けを有する。単一のDMAリスト・コマンドは、最高2048個のエレメントを含み、ローカル記憶装置のうちの16KBを占有する可能性がある。   All DMA list elements in a DMA list command are guaranteed to be started and issued in sequence. Every element in the DMA list command has a unique local ordering. A single DMA list command contains up to 2048 elements and can occupy 16 KB of local storage.

チャネル・インターフェース
BPAでは、チャネルは、協同処理装置(SPU)とメモリ・フロー制御(MFC)ユニットとの間の1次インターフェースとして使用される。SPUチャネル・アクセス機能は、SPUチャネルを構成し、保存し、復元するために使用される。SPU命令セット・アーキテクチャ(ISA:Instruction Set Architecture)は、チャネル・インターフェース(またはSPUチャネル)により外部装置と通信するための1組のチャネル命令を提供する。表1は、これらの命令をリストで示したものである。

Figure 0005558713
Channel Interface In BPA, the channel is used as the primary interface between the cooperative processing unit (SPU) and the memory flow control (MFC) unit. The SPU channel access function is used to configure, save and restore the SPU channel. The SPU Instruction Set Architecture (ISA) provides a set of channel instructions for communicating with external devices via a channel interface (or SPU channel). Table 1 lists these instructions.
Figure 0005558713

アーキテクチャ上、SPUチャネルは、読み取り専用または書き込み専用というアクセス・タイプを有するように構成することができる。チャネルは、読み取りおよび書き込みとして構成することはできない。アクセス・タイプに加えて、各チャネルは、非ブロッキングまたはブロッキングとして構成することができる。ブロッキングとして構成されたチャネルにより、「0」というチャネル・カウントを有するチャネルを読み取るときまたはフルチャネル(すなわち、「0」というチャネル・カウントを有するチャネル)に書き込むときに、SPUを停止させる。「読み取り」チャネルとは、このチャネルに対して読み取りチャネル命令(rdch)のみを発行することができ、データは必ず返されることを意味する。「書き込み」チャネルとは、このチャネルに対して書き込みチャネル命令(wrch)のみを発行することができ、データは必ずそのチャネルによって受諾されることを意味する。   Architecturally, an SPU channel can be configured to have an access type of read-only or write-only. Channels cannot be configured as reads and writes. In addition to the access type, each channel can be configured as non-blocking or blocking. A channel configured as blocking causes the SPU to stop when reading a channel with a channel count of “0” or writing to a full channel (ie, a channel with a channel count of “0”). A “read” channel means that only a read channel command (rdch) can be issued to this channel, and data is always returned. A “write” channel means that only a write channel command (wrch) can be issued to this channel, and data is always accepted by that channel.

「読み取りブロッキング」チャネルとは、このチャネルに対して読み取りチャネル命令(rdch)のみを発行することができることを意味する。読み取りブロッキング・チャネルに送信された読み取りチャネル命令(rdch)は、チャネル・カウントがゼロではない場合にのみ完了する。「0」というチャネル・カウントは、そのチャネルが空であることを示す。「0」というカウントを有する読み取りブロッキング・チャネルに対してチャネル読み取り(rdch)を実行すると、データがそのチャネル内で使用可能になるまで、SPUが停止される。   A “read blocking” channel means that only read channel commands (rdch) can be issued to this channel. A read channel command (rdch) sent to the read blocking channel is completed only if the channel count is not zero. A channel count of “0” indicates that the channel is empty. Performing a channel read (rdch) on a read blocking channel with a count of “0” stops the SPU until data is available in that channel.

「書き込みブロッキング」チャネルとは、このチャネルに対して書き込みチャネル命令(wrch)のみを発行することができることを意味する。書き込みブロッキング・チャネルに送信された書き込みチャネル命令(wrch)は、チャネル・カウントがゼロではない場合にのみ完了する。「0」というチャネル・カウントは、そのチャネルが満杯であることを示す。「0」というカウントを有する書き込みブロッキング・チャネルに対して書き込みチャネル(wrch)を実行すると、アドレス指定されたチャネル内の項目が使用可能になるまで、SPUが停止される。   A “write blocking” channel means that only a write channel command (wrch) can be issued to this channel. A write channel instruction (wrch) sent to the write blocking channel is completed only if the channel count is not zero. A channel count of “0” indicates that the channel is full. Performing a write channel (wrch) on a write blocking channel with a count of “0” stops the SPU until items in the addressed channel are available.

チャネルの構成に対して不適切なチャネル命令を発行すると、無効チャネル命令割り込みが発生することに留意されたい。たとえば、書き込みチャネルまたは書き込みブロッキング・チャネルとして構成されたチャネルに対して読み取りチャネル命令(rdch)を発行すると、無効チャネル命令割り込みが発生する。   Note that an invalid channel instruction interrupt is generated if a channel instruction inappropriate for the channel configuration is issued. For example, issuing a read channel instruction (rdch) to a channel configured as a write channel or a write blocking channel causes an invalid channel instruction interrupt.

各チャネルは対応するカウント(すなわち、項目数(depth))を有し、そのカウントはそのチャネルについて発行可能な未解決動作の数を示す。チャネル項目数(channeldepth)(すなわち、未解決転送の最大数)は実装依存である。ソフトウェアは、SPU内に新しいコンテキストを確立するときまたはそれが既存のコンテキストを再開するときに、チャネル・カウントを初期設定しなければならない。   Each channel has a corresponding count (ie, depth), which indicates the number of outstanding operations that can be issued for that channel. The channel depth (ie, the maximum number of outstanding transfers) is implementation dependent. The software must initialize the channel count when establishing a new context in the SPU or when it resumes an existing context.

チャネルおよびチャネル・インターフェースの動作は、2003年6月26日に出願され、「External Message Passing Method and Apparatus」という名称で、同時係属で本出願人に譲渡された米国特許出願公開第2004/0264445号に記載されており、同特許出願は参照により本明細書に組み込まれる。図5は、米国特許出願公開第2004/0264445号に記載されているメカニズムによる1対のチャネルのためのチャネル回路に関するSPU発行制御ロジックおよびデータ・フローの配置を例示する模範的な図である。次に、チャネル・インターフェースの動作について、図5に描写されている様々なブロックに関連して説明する。   The operation of the channel and channel interface was filed on June 26, 2003 and is co-pending and assigned to the present applicant under the name “External Message Passing Method and Apparatus” US 2004/0264445. Which is incorporated herein by reference. FIG. 5 is an exemplary diagram illustrating the placement of SPU issue control logic and data flow for a channel circuit for a pair of channels in accordance with the mechanism described in US Patent Application Publication No. 2004/0264445. The operation of the channel interface will now be described with respect to the various blocks depicted in FIG.

図5に示されている通り、ブロック430は、SPUの外部装置命令発行制御ブロックを表している。ブロック432は、SPUとの間のデータ・フローを表している。既知の通り、プロセッサは、同時に多くの異なる外部装置と通信状態にある可能性がある。このプロセッサでは、通信はチャネル・レジスタを介して実施される。各チャネルは、1方向にのみ動作し、SPUによってそのチャネル上で実行可能な動作に応じて、読み取りチャネルまたは書き込みチャネルと呼ばれる。ブロック434は、ブロック435によって表された単一外部装置のための1組のチャネル用のチャネル・ロジックを表している。以下により詳細に論ずる通り、この外部装置435は、MFC200などのMFC、マシン状況レジスタ、またな任意のその他のタイプの外部装置にすることができる。特に、MFC、マシン状況レジスタ、イベント機能、メールボックス機能、および信号通知機能と通信するためのチャネル・インターフェースの使用については、チャネル・インターフェースに関するこの一般的な説明に続いて、以下に説明する。   As shown in FIG. 5, block 430 represents an external device instruction issue control block of the SPU. Block 432 represents the data flow to and from the SPU. As is known, a processor can be in communication with many different external devices at the same time. In this processor, communication is performed via a channel register. Each channel operates in only one direction and is referred to as a read channel or a write channel, depending on the operations that can be performed on that channel by the SPU. Block 434 represents channel logic for a set of channels for a single external device represented by block 435. As discussed in more detail below, this external device 435 can be an MFC, such as MFC 200, a machine status register, or any other type of external device. In particular, the use of the channel interface to communicate with the MFC, machine status register, event function, mailbox function, and signal notification function is described below following this general description of the channel interface.

ブロック434内には、読み取りチャネル・カウンタ436、読み取りレジスタ438、書き込みチャネル・カウンタ440、書き込みレジスタ442、MUX(マルチプレクサ)444、およびMUX446が示されている。チャネル命令は、バス448上のSPU発行制御ロジック430から読み取りおよび書き込みカウンタ436および440ならびにMUX444および446のゲート入力に送達される。これらの命令は、チャネルOUTリード450上で435などの適切な外部装置にも供給される。データINリード452は、外部装置435から読み取りレジスタ438にデータを提供する。チャネル・カウントIN信号は、チャネルINリード454上で外部装置435からカウンタ436に供給され、データがレジスタに入力されたことを示し、カウンタ436内のカウントを1つの値または数字だけ変更するよう動作する。   Within block 434, a read channel counter 436, a read register 438, a write channel counter 440, a write register 442, a MUX (multiplexer) 444, and a MUX 446 are shown. Channel instructions are delivered from the SPU issue control logic 430 on bus 448 to read and write counters 436 and 440 and the gate inputs of MUX 444 and 446. These instructions are also supplied to a suitable external device such as 435 on channel OUT lead 450. The data IN lead 452 provides data from the external device 435 to the read register 438. The channel count IN signal is provided on the channel IN lead 454 from the external device 435 to the counter 436 to indicate that data has been entered into the register and operates to change the count in the counter 436 by one value or number. To do.

書き込みレジスタ442から外部装置435に出力中のデータはデータOUTリード456上で供給される。外部装置435がそのデータの満足のいく受信を完了し、カウンタ440内のカウントを1つの値単位または数字だけ変更するよう動作すると、チャネルACKリード458上で外部装置435から書き込みチャネル・カウンタ440にチャネル確認応答信号が返される。本発明の好ましい一実施形態では、バス448上の信号により適切な読み取りまたは書き込みカウンタが減分され、いずれか一方のリード454または458上の信号により適切な読み取りまたは書き込みカウンタが増分される。   Data being output from the write register 442 to the external device 435 is supplied on the data OUT lead 456. When the external device 435 completes satisfactory reception of the data and operates to change the count in the counter 440 by one value unit or number, the external device 435 to the write channel counter 440 on the channel ACK read 458. A channel acknowledgment signal is returned. In a preferred embodiment of the present invention, the appropriate read or write counter is decremented by a signal on bus 448 and the appropriate read or write counter is incremented by a signal on either lead 454 or 458.

図示の通り、両方のカウンタ436および440のカウントは、MUX444を通ってチャネル停止リード460上でSPU発行制御ロジック430に供給される。チャネル書き込みデータは、SPUデータ・フロー・ブロック432からチャネル書き込みデータ・リード462上で書き込みレジスタ442に供給される。ブロック436、438、および440からの出力はバス464上でデータ・フロー・ブロック432に返される。非チャネル命令は、バス466を介してブロック430と432との間で伝達される。   As shown, the counts of both counters 436 and 440 are provided to SPU issue control logic 430 on channel stop lead 460 through MUX 444. Channel write data is provided to write register 442 on channel write data lead 462 from SPU data flow block 432. Outputs from blocks 436, 438, and 440 are returned on bus 464 to data flow block 432. Non-channel instructions are communicated between blocks 430 and 432 via bus 466.

図6は、本発明の模範的な一実施形態によるチャネル・インターフェースの模範的な動作の概要を示す流れ図を示している。図6の流れ図ならびに以下に記載する後続図の流れ図の各ブロックおよび複数ブロックの組み合わせはコンピュータ・プログラム命令によって実装できることが理解されるであろう。これらのコンピュータ・プログラム命令は、プロセッサまたはその他のプログラマブル・データ処理装置上で実行される命令が流れ図の1つまたは複数のブロック内に指定された機能を実装するための手段を作成するようなマシンを生産するためにプロセッサまたはその他のプログラマブル・データ処理装置に提供することができる。また、これらのコンピュータ・プログラム命令は、コンピュータ可読メモリまたは記憶媒体に保管された命令が流れ図の1つまたは複数のブロック内に指定された機能を実装する命令手段を含む装置(article of manufacture)を生産するような特定の方法で機能するようプロセッサまたはその他のプログラマブル・データ処理装置に指示できるコンピュータ可読メモリまたは記憶媒体に保管することもできる。   FIG. 6 shows a flowchart outlining an exemplary operation of the channel interface according to an exemplary embodiment of the present invention. It will be understood that each block and combination of blocks in the flowchart of FIG. 6 and the flowchart of subsequent figures described below can be implemented by computer program instructions. These computer program instructions are such that instructions executed on a processor or other programmable data processing device create a means for implementing the functions specified in one or more blocks of the flowchart. Can be provided to a processor or other programmable data processing device for production. These computer program instructions also comprise an apparatus (article of manufacture) that includes instruction means for instructions stored in a computer readable memory or storage medium to implement functions specified in one or more blocks of the flowchart. It can also be stored in a computer readable memory or storage medium that can instruct a processor or other programmable data processing device to function in a particular manner as it is produced.

したがって、流れ図のブロックは、指定の機能を実行するための手段の組み合わせ、指定の機能を実行するためのステップの組み合わせ、および指定の機能を実行するためのプログラム命令手段をサポートする。また、流れ図の各ブロックおよび流れ図の複数ブロックの組み合わせは、指定の機能またはステップを実行する特殊目的ハードウェアベースのコンピュータ・システムによるかまたは特殊目的ハードウェアおよびコンピュータ命令の組み合わせにより実装できることも理解されるであろう。   Thus, the flowchart blocks support a combination of means for performing the specified function, a combination of steps for performing the specified function, and a program instruction means for performing the specified function. It is also understood that each block of the flowchart and combinations of multiple blocks of the flowchart can be implemented by a special purpose hardware-based computer system that performs a specified function or step, or by a combination of special purpose hardware and computer instructions. It will be.

図6に示されている通り、チャネル読み取りまたは書き込み命令が発行されると、指定されたチャネルが、上記の制御メカニズムが実装されたものであるかどうかについて判別が行われる(ステップ576)。実装されたものではない場合、チャネル・エラー・ロジックが使用可能であるかどうかについて判別が行われる(ステップ578)。使用可能である場合、プロセッサが停止される(ステップ580)。使用可能ではない場合、コマンドが読み取りであるか書き込みであるかについて判別が行われる(ステップ582)。   As shown in FIG. 6, when a channel read or write command is issued, a determination is made as to whether the specified channel is one that implements the above control mechanism (step 576). If not, a determination is made as to whether channel error logic is available (step 578). If so, the processor is stopped (step 580). If not, a determination is made as to whether the command is read or write (step 582).

非実装コマンドが書き込みである場合、そのコマンドについてはそれ以上何も行われない(ステップ584)。これに反して、非実装コマンドが読み取りである場合、データ・プロセッサ・データ・フローにゼロが返される(ステップ586)。いずれの場合でも、プロセスは、次の読み取りまたは書き込み命令を待つという状況に戻る。図示の好ましい実施形態では、すべての有効な読み取り命令は値を返さなければならない。本明細書で定義した通り、非実装チャネルへのチャネル読み取り命令はすべてゼロという値を返す。   If the non-implemented command is a write, nothing is done about that command (step 584). On the other hand, if the unimplemented command is a read, zero is returned in the data processor data flow (step 586). In either case, the process returns to waiting for the next read or write instruction. In the preferred embodiment shown, all valid read instructions must return a value. As defined herein, channel read instructions to unimplemented channels all return a value of zero.

特定の実装例の場合、すべてのチャネルを定義しなければならないわけではないことに留意できるであろう。各チャネルは、固有の数値IDを有することになる。好ましい一実施形態では、このチャネルIDは0〜127の範囲である。しかし、すべてのチャネルを定義する必要があるわけではないので、すべてのIDを使用できるわけではない。したがって、未定義チャネルへの命令が存在する場合、プロセスは、上記で参照した非実装パスに沿って進む。いくつかの実装例では、非実装チャネルへのチャネル読み取りまたは書き込みコマンドが違法動作と見なされることが望ましい可能性もある。その後のアクションは、おそらく、前述のステップ580に示されている通り、プロセッサを強制的に停止することになる可能性がある。   It can be noted that for a specific implementation, not all channels have to be defined. Each channel will have a unique numeric ID. In a preferred embodiment, this channel ID is in the range of 0-127. However, not all IDs can be used because not all channels need to be defined. Thus, if there are instructions for undefined channels, the process proceeds along the unimplemented path referenced above. In some implementations, it may be desirable for a channel read or write command to an unimplemented channel to be considered an illegal operation. Subsequent actions may likely force the processor to stop, as shown in step 580 above.

図6に戻ると、ステップ576で、指定されたチャネルが実装されていると判別された場合、指定のチャネルがブロッキング・チャネルであるかどうかを確認するためのチェックが行われる(ステップ588)。ブロッキング・チャネルではない場合、そのチャネルに関するカウントは減分されるが、ゼロ未満になる可能性はない(ステップ590)。チャネルがブロッキングであると判別された場合、そのチャネルに関するカウントがゼロより大きいかどうかを判別するためのチェックが行われる(ステップ592)。ゼロより大きい場合、プロセスはステップ590に戻る。   Returning to FIG. 6, if it is determined in step 576 that the specified channel is implemented, a check is made to see if the specified channel is a blocking channel (step 588). If not, the count for that channel is decremented but cannot be less than zero (step 590). If it is determined that the channel is blocking, a check is made to determine if the count for that channel is greater than zero (step 592). If greater than zero, the process returns to step 590.

ステップ592で判別された通り、カウントがすでにゼロである場合、外部装置がこのチャネルに関連する入力を提供し、その結果、カウントをゼロから変更するまで、SPUは停止する(ステップ594および595)。したがって、このチャネルに関するカウントに変化が生じるまで、ステップ594および595のループが定期的に処理される。カウントが変更されると、プロセスはステップ595からステップ590に進む。   As determined in step 592, if the count is already zero, the external device provides input associated with this channel, so that the SPU stops until the count is changed from zero (steps 594 and 595). . Therefore, the loop of steps 594 and 595 is periodically processed until the count for this channel changes. If the count is changed, the process proceeds from step 595 to step 590.

その後、そのチャネルがアクティブであるかパッシブであるかが判別される(ステップ596)。そのチャネルがパッシブである場合、コマンドが書き込み命令であるか読み取り命令であるかを確認するためのチェックが行われる(ステップ598)。コマンドが書き込み命令である場合、データは外部読み取りのためにローカルに保管される(ステップ600)。コマンドが読み取り命令である場合、データは図5のSPUデータ・フロー432を介してSPUに返される(ステップ602)。   Thereafter, it is determined whether the channel is active or passive (step 596). If the channel is passive, a check is made to see if the command is a write command or a read command (step 598). If the command is a write command, the data is stored locally for external reading (step 600). If the command is a read instruction, the data is returned to the SPU via the SPU data flow 432 of FIG. 5 (step 602).

パッシブ・チャネルの状況では、SPUは、動作を完了するために外部プロセスに依存することに留意されたい。一例として、読み取りチャネルは、データをロードするために外部装置に依存する可能性がある。これに反して、アクティブ・チャネルでは、SPUは、読み取りまたは書き込み動作を実行する動作を積極的に完了する。このタイプの動作の一例は、接続されたハードウェアがアクティブ読み取りチャネルからデータを求める外部要求を行う場合である。   Note that in the passive channel situation, the SPU relies on an external process to complete the operation. As an example, a read channel may rely on an external device to load data. On the other hand, in the active channel, the SPU actively completes operations that perform read or write operations. An example of this type of operation is when the attached hardware makes an external request for data from the active read channel.

ステップ596で、そのチャネルがアクティブ・チャネルであると判別されると、コマンドが読み取りコマンドであるか書き込みコマンドであるかを確認するためのチェックが行われる(ステップ604)。コマンドが書き込みである場合、書き込みデータはSPUの外部にまたは内部レジスタに出力される(ステップ606)。コマンドが読み取りである場合、読み取り要求が適切な外部装置に送信される(ステップ608)。   If it is determined in step 596 that the channel is an active channel, a check is made to see if the command is a read command or a write command (step 604). If the command is a write, the write data is output outside the SPU or to an internal register (step 606). If the command is read, a read request is sent to the appropriate external device (step 608).

要求されたデータの入力を待つ(ステップ610)。定期的に、読み取りデータが受信されたかどうかについて判別が行われる(ステップ612)。受信されていない場合、次のチェックのための時間が発生するまで、プロセスはステップ610に戻る。データが受信されると、プロセスは完了する(ステップ602)。   Waiting for input of the requested data (step 610). Periodically, a determination is made as to whether read data has been received (step 612). If not, the process returns to step 610 until time for the next check occurs. Once the data is received, the process is complete (step 602).

上記により、命令にチャネル番号が指定された特定のチャネル読み取りまたは書き込み命令を使用して、各チャネルがアクセスされることが明らかになるであろう。各チャネルは、それによって指定されたカウントを有する。このカウントは、命令に関心のあるチャネルが指定された読み取りチャネル・カウント命令を使用して読み取られる。チャネル・コマンドは、推論的なものではなく、外部インターフェースで順不同に処理することはできない。このチャネル・アーキテクチャでは、SPUの外部の装置が適正順序でチャネル・コマンドを処理することを要求していないが、プロセッサおよび外部装置の実装次第でそのようにすることができる。このカウント・レジスタ内の値は、このレジスタに対して行われた外部確認応答の数に対するこのレジスタへのアクセス数を追跡するものである。   From the above, it will be apparent that each channel is accessed using a specific channel read or write command with the channel number specified in the command. Each channel has a count specified thereby. This count is read using a read channel count instruction in which the channel of interest for the instruction is specified. Channel commands are not speculative and cannot be processed out of order at the external interface. This channel architecture does not require devices external to the SPU to process channel commands in the proper order, but can do so depending on the implementation of the processor and external devices. The value in this count register keeps track of the number of accesses to this register against the number of external acknowledgments made to this register.

動作時に、外部インターフェース(複数も可)によるアクセスを介してチャネル・カウントを変更する方法は実装例に基づくものである。好ましい一実施形態では、レジスタとの間の正常データ転送ごとに1ずつ、カウントが増分される。各チャネルごとに、SPUアクセスを読み取りまたは書き込みチャネルとして定義することができる。さらに、この好ましい実施形態では、チャネルが「ブロッキング」チャネルとして定義または実装されたときにその後の動作を停止するために「0」カウントが使用される。チャネル・レジスタが「1」というキュー項目数(queue depth)を有するものとして定義されると、そのチャネル内のデータが有効ではないことを示すために「0」カウントを使用することができる。また、カウントが「0」である場合、カウントがもはや「0」ではなくなるときまで読み取りまたは書き込みチャネル・コマンドに対するSPU動作を停止するよう、そのコマンド上でチャネルを定義することもできる。   In operation, the method of changing the channel count via access by external interface (s) is based on an implementation. In a preferred embodiment, the count is incremented by 1 for each normal data transfer to and from the register. For each channel, SPU access can be defined as a read or write channel. Furthermore, in this preferred embodiment, a “0” count is used to stop further operations when the channel is defined or implemented as a “blocking” channel. If a channel register is defined as having a queue depth of “1”, a “0” count can be used to indicate that the data in that channel is not valid. If the count is “0”, the channel can also be defined on that command to stop SPU operations for read or write channel commands until the count is no longer “0”.

好ましい一実施形態では、カウンタ値は、すべてのSPU開始読み取りまたは書き込みチャネル・コマンドについて減分され、各外部開始読み取りまたは書き込みアクセス(データの有無を問わない)ごとに増分される。換言すれば、カウンタは、入力対出力の表示を維持する。したがって、「0」という値またはカウントは、書き込みの場合、それ以上外部書き込みスロットが使用可能ではないことを示す。これに反して、読み取りの場合の「0」というカウント値は、有効データがまったく存在しないことを示す。カウントがゼロであるときに、追加のSPU読み取りまたは書き込みチャネル・コマンドが発行され、チャネルが非ブロッキングとして定義された場合、カウントは「0」のまま存続し、レジスタ内のデータは消失する。好ましい実施形態で実装される通り、そのレジスタ内の前の最新データは消失する。カウントがそのチャネル・レジスタ実装例のビット数の最大値であり、カウントを範囲外に増分させるような追加のトランザクションが行われた場合、カウントはその最大値にとどまることになる。   In a preferred embodiment, the counter value is decremented for every SPU start read or write channel command and incremented for each external start read or write access (with or without data). In other words, the counter maintains an input-to-output display. Thus, a value or count of “0” indicates that no more external write slots are available for writing. On the other hand, a count value of “0” in the case of reading indicates that there is no valid data. If an additional SPU read or write channel command is issued when the count is zero and the channel is defined as non-blocking, the count remains “0” and the data in the register is lost. As implemented in the preferred embodiment, the previous most recent data in that register is lost. If the count is the maximum number of bits for that channel register implementation and an additional transaction is made to increment the count out of range, the count will remain at that maximum.

カウント値を初期設定する方法は実装依存であり、1つの方法は外部インターフェースによる初期設定である。このカウントは、書き込みキューのためのフロー制御に使用することができる。このカウントは、外部キューの項目数に事前設定することができる。カウント・レジスタ内のゼロという値は、この外部キュー内にそれ以上空間が存在しないことを意味する。「1」という外部キュー項目数の場合、カウントは「1」に事前設定しなければならない。SPUがこのチャネルに書き込みと、カウントは「0」になる。外部装置がこのチャネルから読み取ると、カウントは「1」に増分され、それにより、そのチャネルが他の書き込み動作のための準備ができていることを示す。   The method of initializing the count value is implementation-dependent, and one method is initial setting by an external interface. This count can be used for flow control for the write queue. This count can be preset to the number of items in the external queue. A value of zero in the count register means that there is no more space in this external queue. For an external queue item number of “1”, the count must be preset to “1”. When the SPU writes to this channel, the count is “0”. When the external device reads from this channel, the count is incremented to “1”, thereby indicating that the channel is ready for another write operation.

上述の通り、チャネル・レジスタの読み取りの場合、これによりカウントは有効データを示すことができる。カウント・レジスタが「0」に事前設定された場合、これは、データが有効ではないことを示す。外部装置がこのチャネルに書き込むと、カウントは「1」に増分し、データがSPU読み取りのために有効であることを示す。SPUがこのチャネルから読み取ると、カウントは減分して「0」に戻り、他の外部書き込みを行えることを示す。   As described above, in the case of a channel register read, this allows the count to indicate valid data. If the count register is preset to “0”, this indicates that the data is not valid. When the external device writes to this channel, the count increments to “1”, indicating that the data is valid for SPU reading. When the SPU reads from this channel, the count decrements and returns to “0”, indicating that another external write can be performed.

本発明の好ましい一実施形態では、読み取りチャネルと書き込みチャネルの両方についてカウントを確認するために、コンピュータ・コード・チャネル・カウント読み取り命令がカウンタに送信される。外部装置がマルチプロセッサ環境内の他のSPUまたはコンピューティング・デバイスなどのインテリジェント装置である場合、カウントを確認するために、外部装置がチャネル・カウント読み取り命令をカウンタに送信することもできる。このように、外部装置は、そのチャネルが読み取りチャネルまたは書き込みチャネルのいずれかに未読データを含む時期または読み取りチャネルを含むプロセッサに追加のデータを送信することが適切である時期あるいはその両方を判別することができる。   In a preferred embodiment of the invention, a computer code channel count read instruction is sent to the counter to verify the count for both the read channel and the write channel. If the external device is an intelligent device, such as another SPU or computing device in a multiprocessor environment, the external device can also send a channel count read instruction to the counter to confirm the count. In this way, the external device determines when the channel contains unread data on either the read channel or the write channel and / or when it is appropriate to send additional data to the processor containing the read channel. be able to.

本発明による使用では、読み取りチャネルおよび書き込みチャネルは非累積または累積のいずれかにすることができる。累積チャネルは、複数の書き込みを累積するチャネルである。すなわち、着信データは、そのチャネルが読み取られるまで、レジスタまたは他の記憶手段にすでに収容されているデータに論理的に追加される。そのチャネルを読み取ると、累積レジスタは、典型的には「0」にリセットされ、チャネルは再び累積を始める。このアクションは、読み取りチャネルと書き込みチャネルの両方について行うことができる。   For use in accordance with the present invention, the read and write channels can be either non-cumulative or cumulative. The accumulation channel is a channel that accumulates a plurality of writes. That is, incoming data is logically added to data already contained in a register or other storage means until the channel is read. When reading that channel, the accumulation register is typically reset to "0" and the channel begins to accumulate again. This action can be performed for both read and write channels.

さらに、累積チャネルはブロッキングまたは非ブロッキングにすることができる。典型的には、非累積チャネルがそのチャネルへの各書き込みをカウントするように動作できることとは対照的に、累積チャネルは「1」というカウント項目数(count depth)のみを有することになる。   Further, the cumulative channel can be blocking or non-blocking. Typically, a cumulative channel will only have a count depth of “1”, in contrast to a non-cumulative channel that can operate to count each write to that channel.

要約すると、チャネル・インターフェースは、メモリを解放するために定義済みチャネルを使用するが、レジスタ内のデータが有効である時期、換言すれば、レジスタ内のデータが前に読み取られていない時期について依然として容易にアクセス可能な情報を提供する。この情報は、カウンティング・メカニズムにチャネル・カウント読み取り命令を送信することによって入手される。インテリジェント外部装置が所与のチャネルに接続されると、所与のチャネルとの間でデータを送信または受信する際に外部装置が同様の命令を使用することができる。チャネル・インターフェースは、チャネル・カウント読み取り命令を使用することにより、指定のチャネルが非ブロッキング・チャネルとして定義されたときにレジスタ内のデータを偶発的に上書きするのをさらに防止する。   In summary, the channel interface uses a predefined channel to free memory, but still remains when the data in the register is valid, i.e. when the data in the register has not been read previously. Provide easily accessible information. This information is obtained by sending a channel count read command to the counting mechanism. When an intelligent external device is connected to a given channel, the external device can use similar instructions when sending or receiving data to or from the given channel. The channel interface further prevents accidental overwriting of the data in the register when the specified channel is defined as a non-blocking channel by using a channel count read instruction.

本発明は、種々のタイプの外部装置およびこのような外部装置によって提供される機能との間で命令およびデータを伝達するためにチャネル・インターフェースおよび定義済みチャネルを利用する。たとえば、本発明は、MFC、マシン状況レジスタ、および割り込み機能と命令およびデータを伝達するためにSPUのチャネル・インターフェースを使用するためのメカニズムを提供する。その上、チャネル・インターフェースは、BPAのイベント機能、メールボックス機能、マルチソース同期機能、プロキシ・タグ・グループ完了機能、信号通知機能などと命令およびデータを伝達するために使用される。   The present invention utilizes channel interfaces and predefined channels to communicate commands and data between various types of external devices and functions provided by such external devices. For example, the present invention provides a mechanism for using the SFC's channel interface to communicate MFC, machine status registers, and interrupt functions and instructions and data. In addition, the channel interface is used to communicate commands and data with BPA event functions, mailbox functions, multi-source synchronization functions, proxy tag group completion functions, signal notification functions, and the like.

図7は、本発明の一実施形態によってチャネルが使用される方法を例示する模範的な図である。図7に示されている通り、チャネル・インターフェース620は、それを介してSPU622がMFC624、マシン状況レジスタ634、および割り込み機能636と通信できる複数のチャネルを提供する。各チャネルは、図5に関して上述したものと同様のエレメントから構成することができ、その動作は図6に記載されているものと同様のものである。本発明の模範的な一実施形態では、チャネル・インターフェース620は、図5のブロック434によって表されたすべてのチャネル対の集合体に対応することができる。SPU622は、図5のブロック430および432の組み合わせに対応することができ、たとえば、図6の他のすべてのブロックは図5のブロック435に対応する。   FIG. 7 is an exemplary diagram illustrating the manner in which channels are used according to one embodiment of the present invention. As shown in FIG. 7, channel interface 620 provides a plurality of channels through which SPU 622 can communicate with MFC 624, machine status register 634, and interrupt function 636. Each channel can be composed of elements similar to those described above with respect to FIG. 5, and the operation is similar to that described in FIG. In an exemplary embodiment of the invention, the channel interface 620 may correspond to a collection of all channel pairs represented by block 434 in FIG. SPU 622 may correspond to a combination of blocks 430 and 432 in FIG. 5, for example, all other blocks in FIG. 6 correspond to block 435 in FIG.

図7に示されている通り、チャネル631、633、および635は、SPU622に関連する通信パスを提供し、それによりSPUイベント機能630およびデクリメンタ632はMFC624と通信することができる。SPUイベント機能630は、BPA内で生成されたイベントを処理するためのメカニズムを提供する。チャネル633は、以下により詳細に論ずるように、関心のあるイベントを識別し、関心のあるこれらのイベントに関する情報を入手するためのメカニズムを提供する。デクリメンタ632は、それによりSPU上で実行されるソフトウェアが時間の進行を測定できるかまたは所与の尺度の時間の経過をそのソフトウェアに通知できるメカニズムを提供する。デクリメンタ632は、チャネル631を介してその値が設定され、状況が読み取られる可能性がある。   As shown in FIG. 7, channels 631, 633, and 635 provide a communication path associated with SPU 622 so that SPU event function 630 and decrementer 632 can communicate with MFC 624. The SPU event function 630 provides a mechanism for handling events generated within the BPA. Channel 633 provides a mechanism for identifying events of interest and obtaining information about those events of interest, as discussed in more detail below. The decrementer 632 provides a mechanism by which software running on the SPU can measure the progress of time or notify the software of the passage of time on a given scale. The decrementer 632 may have its value set via the channel 631 and the status read.

SPU(発行制御ロジック、プロセッサ・データ・フロー)622は、外部装置と通信するための命令、データ、および機能を提供する。たとえば、SPU622は、SPUチャネルを初期設定し、保存し、復元する特権機能であるSPUチャネル・アクセス機能を提供する。この機能は、SPUチャネル・インデックス・レジスタ、SPUチャネル・カウント・レジスタ、およびSPUチャネル・データ・レジスタという3つのMMIOレジスタから構成される。SPUチャネル・インデックス・レジスタは、そのカウントおよびデータがそれぞれSPUチャネル・カウント・レジスタおよびSPUチャネル・データ・レジスタによってアクセスされるチャネルを指すポインタである。SPUチャネル・インデックス・レジスタは、どのSPUチャネルがSPUチャネル・カウント・レジスタまたはSPUチャネル・データ・レジスタを使用してアクセスされるかを選択する。SPUチャネル・データ・レジスタは、SPUチャネル・インデックス・レジスタによって選択されたSPUチャネル・データを読み取るためまたは初期設定するために使用される。   SPU (Issue Control Logic, Processor Data Flow) 622 provides instructions, data, and functions for communicating with external devices. For example, the SPU 622 provides an SPU channel access function that is a privileged function to initialize, save and restore SPU channels. This function consists of three MMIO registers: SPU channel index register, SPU channel count register, and SPU channel data register. The SPU channel index register is a pointer to the channel whose count and data are accessed by the SPU channel count register and SPU channel data register, respectively. The SPU channel index register selects which SPU channel is accessed using the SPU channel count register or the SPU channel data register. The SPU channel data register is used to read or initialize the SPU channel data selected by the SPU channel index register.

SPU622の機能と通信するためのチャネル631、633、および635に加えて、チャネル637は、マシン状況レジスタ634に関連する通信パスを提供する。マシン状況レジスタ634は、現行マシンの分離状況および割り込み状況を収容する。分離状況は、SPUが分離されているかどうかを示す。BPAの分離機能により、特権ソフトウェアおよびアプリケーションは、コード・イメージを分離し、それを1つまたは複数のSPUにロードすることができる。SPU分離機能は、SPUの関連ローカル記憶装置にロードされたコード・イメージがまったく変更されていないことを保証する。割り込み状況関連マシン状況レジスタは、ネストされた割り込みがサポートされるときに割り込み状態情報を保存し復元するために使用される。   In addition to channels 631, 633, and 635 for communicating with the functions of SPU 622, channel 637 provides a communication path associated with machine status register 634. Machine status register 634 contains the separation status and interrupt status of the current machine. The separation status indicates whether the SPU is separated. The BPA separation feature allows privileged software and applications to separate code images and load them into one or more SPUs. The SPU separation function ensures that the code image loaded into the SPU's associated local storage has not been altered at all. The interrupt status related machine status register is used to save and restore interrupt status information when nested interrupts are supported.

さらに、チャネル639は、割り込み機能636に関連する通信パスを提供する。割り込み機能636は、割り込みおよ9び割り込み状況情報をPPEまたは外部装置に経路指定し、PPEに提示された割り込みに優先順位を付け、プロセッサ間割り込みを生成するために使用される。   In addition, channel 639 provides a communication path associated with interrupt function 636. The interrupt function 636 is used to route interrupts and interrupt status information to the PPE or external device, prioritize interrupts presented to the PPE, and generate interprocessor interrupts.

さらに、チャネル641は、メールボックス機能638に関連する通信パスを提供する。メールボックス機能638は、他のSPUなどの外部装置、PPEなどに情報を送信し、そこから情報を受信するために使用される。   Further, channel 641 provides a communication path associated with mailbox function 638. Mailbox function 638 is used to send information to and receive information from other external devices such as SPUs, PPE, and the like.

チャネル643は、SPU信号通知機能640に関連する通信パスを提供する。SPU信号通知機能640は、システム内の他のプロセッサおよび装置からSPUにバッファ完了フラグなどの信号を送信するために使用される。   Channel 643 provides a communication path associated with SPU signal notification function 640. The SPU signal notification function 640 is used to transmit a signal such as a buffer completion flag from other processors and devices in the system to the SPU.

チャネル645は、プロキシ・タグ・グループ完了機能642に関連する通信パスを提供する。プロキシ・タグ・グループ完了機能642は、同様にタグが付いた命令のグループの処理が完了した時期を判別するための機能である。   Channel 645 provides a communication path associated with proxy tag group completion function 642. Similarly, the proxy tag group completion function 642 is a function for determining when processing of a group of instructions with a tag is completed.

チャネル647は、MFCマルチソース同期機能644に関連する通信パスを提供する。MFCマルチソース同期機能644は、ローカル記憶装置および主記憶装置のアドレス・ドメイン間の累積順序付けを達成する。他のプロセッサまたはユニットに対して複数のソース(すなわち、2つまたはそれ以上のプロセッサまたはユニット)によって実行された記憶アクセスの順序付けは累積順序付けと呼ばれる。   Channel 647 provides a communication path associated with MFC multi-source synchronization function 644. The MFC multi-source synchronization function 644 achieves cumulative ordering between the local storage and main storage address domains. The ordering of storage accesses performed by multiple sources (ie, two or more processors or units) relative to other processors or units is called cumulative ordering.

図8および図9は、本発明の模範的な一実施形態によるSPUチャネル・マップをリストする模範的な図である。図6に示されている通り、SPUチャネル・インターフェースは、命令およびデータを伝達するために様々なタイプのチャネルをサポートする。これらのチャネルとしては、SPUイベント・チャネル650、SPU信号通知チャネル652、SPUデクリメンタ・チャネル654、MFCマルチソース同期チャネル656、SPU予約済みチャネル658、マスク読み取りチャネル660、SPU状態管理チャネル662、MFCコマンド・パラメータ・チャネル664、MFCタグ状況チャネル666、およびSPUメールボックス・チャネル668を含む。これらの「チャネル」は本質的に、メモリ・マップ・レジスタと、これらのレジスタに書き込むための対応する回路である。したがって、「チャネル」という用語は、指定の「チャネル」に対応するデータ値を保管するための1つまたは複数のレジスタを指すために本明細書で使用することもできる。それぞれのチャネルの動作について、以下に説明する。PPE、SPU、およびMFCには、これらのチャネルを使用するための様々な機能が提供される。これらのタイプのチャネルのそれぞれについては、MFCと通信するために使用されるチャネルから始めて、以下に詳細に説明する。   8 and 9 are exemplary diagrams listing SPU channel maps according to an exemplary embodiment of the present invention. As shown in FIG. 6, the SPU channel interface supports various types of channels for conveying instructions and data. These channels include SPU event channel 650, SPU signal notification channel 652, SPU decrementer channel 654, MFC multi-source synchronization channel 656, SPU reserved channel 658, mask read channel 660, SPU state management channel 662, MFC command Includes parameter channel 664, MFC tag status channel 666, and SPU mailbox channel 668. These “channels” are essentially memory mapped registers and corresponding circuitry for writing to these registers. Thus, the term “channel” can also be used herein to refer to one or more registers for storing data values corresponding to a specified “channel”. The operation of each channel will be described below. PPE, SPU, and MFC are provided with various functions for using these channels. Each of these types of channels is described in detail below, starting with the channel used to communicate with the MFC.

MFCコマンド・パラメータ・チャネル
MFCコマンド・パラメータ・チャネル664は、MFC SPUコマンド・キューのMFCコマンド・パラメータ・レジスタにデータを書き込むために使用されるチャネルである(図2および上記の表1を参照)。MFCコマンド・パラメータ・チャネル664は、非ブロッキングであり、それに関連するチャネル・カウントを備えていない。したがって、これらのチャネルのいずれかに送信された読み取りチャネル・カウント(rchcnt)命令を実行すると、「1」というカウントが返される。
MFC Command Parameter Channel MFC command parameter channel 664 is the channel used to write data to the MFC command parameter register of the MFC SPU command queue (see FIG. 2 and Table 1 above). . The MFC command parameter channel 664 is non-blocking and does not have a channel count associated with it. Thus, executing a read channel count (rchcnt) instruction sent to any of these channels returns a count of “1”.

MFCコマンド・パラメータ・チャネル664は、MFCローカル記憶アドレス・チャネル、MFC有効アドレス・ハイ・チャネル、MFC有効アドレス・ローまたはリスト・アドレス・チャネル、MFC転送サイズまたはリスト・サイズ・チャネル、MFCコマンド・タグ識別チャネル、MFCコマンド命令コード・チャネル、およびMFCクラスIDチャネルを含む。これらのチャネルのそれぞれについて、以下に詳細に説明する。   MFC command parameter channel 664 includes MFC local storage address channel, MFC valid address high channel, MFC valid address low or list address channel, MFC transfer size or list size channel, MFC command tag Includes an identification channel, an MFC command instruction code channel, and an MFC class ID channel. Each of these channels is described in detail below.

MFCコマンド命令コード・チャネル
MFCコマンド命令コード・チャネルの詳細は、本発明の模範的な一実施形態により図10に示されている。MFCコマンド命令コード・チャネルは、命令コードに基づいて実行すべき動作を識別する。この命令コードの妥当性は、命令ストリームに対して非同期的にチェックされる。MFCコマンドまたはコマンド・パラメータのいずれかが無効である場合、MFCコマンド・キュー処理は中断され、無効なMFCコマンド割り込みが生成される。
MFC Command Instruction Code Channel Details of the MFC command instruction code channel are shown in FIG. 10 according to an exemplary embodiment of the present invention. The MFC command instruction code channel identifies the operation to be performed based on the instruction code. The validity of this instruction code is checked asynchronously with respect to the instruction stream. If either the MFC command or command parameter is invalid, MFC command queue processing is interrupted and an invalid MFC command interrupt is generated.

MFCコマンドおよびクラスIDパラメータは単一チャネル命令を使用してMFC SPUコマンド・キューに書き込まれる。図10に示されている通り、好ましい一実施形態では、MFCコマンド命令コード・パラメータは32ビット・ワードの下位16ビットである。このフィールドの上位8ビットは予約済みであり、下位8ビットはMFCコマンド命令コードを識別する。   The MFC command and class ID parameters are written to the MFC SPU command queue using a single channel instruction. As shown in FIG. 10, in a preferred embodiment, the MFC command instruction code parameter is the lower 16 bits of a 32-bit word. The upper 8 bits of this field are reserved, and the lower 8 bits identify the MFC command instruction code.

MFCクラスIDチャネル
MFCクラスIDチャネルは、図11に示されている通り、各MFCコマンドごとに置換クラスIDおよび転送クラスIDを指定するために使用される。これらのIDは、システムの全体的なパフォーマンスを改善するためにSPUおよびソフトウェアによって使用される。特に、置換クラスID(RclassID)は、キャッシュ置換を制御するために置換管理テーブル(RMT:replacement management table)とともに使用される。置換クラスIDは、たとえば、PPE動作のためのロード保管(load-and-store)アドレスから生成することができる(PPEは、PPEロードおよび保管ならびに命令取り出しに関する有効アドレスまたは実アドレスをキャッシュ置換管理機能のためのクラスIDにマッピングするための方法を提供するアドレス範囲機能を含む)。
MFC Class ID Channel The MFC class ID channel is used to specify a replacement class ID and a transfer class ID for each MFC command, as shown in FIG. These IDs are used by the SPU and software to improve the overall performance of the system. In particular, a replacement class ID (RclassID) is used with a replacement management table (RMT) to control cache replacement. The replacement class ID can be generated from, for example, a load-and-store address for PPE operation (the PPE cache effective management or real address for PPE load and store and instruction fetching) Including an address range function that provides a method for mapping to class IDs for).

RclassIDは、特権ソフトウェア管理テーブル、すなわち、置換ポリシーを制御するために使用される置換管理テーブル(RMT)に対するインデックスを生成するために使用される。RMTのフォーマットは実装依存である。RMTは実装依存数の項目から構成され、その項目は、設定使用可能(set-enable)ビット、有効ビット、およびその他の制御情報を含まなければならない。任意選択で、実装例により、キャッシュ・バイパス・ビットとアルゴリズム・ビットを提供することもできる。RMTテーブル内の項目数および各項目のサイズは実装依存である。   RclassID is used to generate an index to the privileged software management table, ie, the replacement management table (RMT) used to control the replacement policy. The format of RMT is implementation dependent. The RMT is composed of an implementation-dependent number of items, which must include a set-enable bit, a valid bit, and other control information. Optionally, the implementation may provide cache bypass bits and algorithm bits. The number of items in the RMT table and the size of each item are implementation dependent.

図12は、8Wayセット連想キャッシュに関する典型的なRMT項目を描写している。RMTテーブルは、システムの実アドレス空間内に位置する。特権ソフトウェアは、これらのRMTテーブルを特権ページとしてマッピングしなければならない。1つの実装例では、各主要キャッシュ構造について1つのRMTを提供しなければならない。   FIG. 12 depicts a typical RMT entry for an 8-way set associative cache. The RMT table is located in the real address space of the system. Privileged software must map these RMT tables as privileged pages. In one implementation, one RMT must be provided for each primary cache structure.

図11に戻ると、転送クラスID(TclassID)は、種々の特性を有する記憶域へのアクセスを識別するために使用される。TclassIDは、ある実装例が記憶位置の特性に基づいてMFCコマンドに対応する転送を最適化できるようにするために使用するものである。TclassIDのセットアップおよび使用は実装依存である。   Returning to FIG. 11, the transfer class ID (TclassID) is used to identify access to storage with various characteristics. TclassID is used to allow an implementation to optimize transfers corresponding to MFC commands based on storage location characteristics. The setup and use of TclassID is implementation dependent.

RclassIDおよびTclassIDの内容は、本明細書で以下、「クラスIDパラメータ」と呼ばれるが、永続的なものではなく、各MFCコマンド・エンキュー・シーケンスごとに書き込まなければならない。クラスIDパラメータは、SPUコマンド・キューのPPE側またはSPU側のいずれから発行されたコマンドとともに使用される場合でも、同じ機能を実行する。クラスIDパラメータは、SPEに関連するリソースを制御するために使用され、他のSPEまたはPPEに関連するリソースに対する効果がまったくない。クラスIDパラメータの妥当性は検証されない。サポートされるクラスIDパラメータの数は実装依存である。   The contents of RclassID and TclassID are referred to hereinafter as “class ID parameters”, but are not permanent and must be written for each MFC command enqueue sequence. The class ID parameter performs the same function when used with commands issued from either the PPE side or the SPU side of the SPU command queue. The class ID parameter is used to control resources associated with the SPE and has no effect on resources associated with other SPEs or PPEs. The validity of the class ID parameter is not verified. The number of class ID parameters supported is implementation dependent.

MFCコマンド・タグ識別チャネル
MFCコマンド・タグ識別チャネルは、各コマンドまたはコマンド・グループごとに1つのIDを指定するために使用される。MFCコマンド・タグ識別チャネルの詳細は図13に描写されている。この識別タグは、たとえば、x‘0’とx‘1F’の間の任意の値である。識別タグは、ハードウェア内で純粋にローカルの範囲を有する。したがって、同じタグを異なるSPEまたはPPEで使用することができる。
MFC Command Tag Identification Channel The MFC command tag identification channel is used to specify one ID for each command or command group. Details of the MFC command tag identification channel are depicted in FIG. This identification tag is, for example, an arbitrary value between x′0 ′ and x′1F ′. The identification tag has a pure local scope in the hardware. Thus, the same tag can be used with different SPEs or PPEs.

任意の数のMFCコマンドは、同じ識別コードでタグを付けることができる。同じ識別コードでタグを付けたMFCコマンドはタグ・グループと呼ばれる。タグは、特定のキューに書き込まれたコマンドに関連付けられる。MFC SPUコマンド・キューに供給されるタグは、MFCプロキシ・コマンド・キューに供給されるタグとは無関係である。MFCコマンド・タグ識別パラメータの内容は、永続的なものではなく、各MFCコマンド・エンキュー・シーケンスごとに書き込まなければならない。このパラメータの妥当性は、命令ストリームに対して非同期的にチェックされる。上位ビット(たとえば、ビット0〜10)が0に設定されない場合、MFCコマンド・キュー処理は中断され、割り込みが生成される。   Any number of MFC commands can be tagged with the same identification code. MFC commands tagged with the same identification code are called tag groups. Tags are associated with commands written to a specific queue. The tags supplied to the MFC SPU command queue are independent of the tags supplied to the MFC proxy command queue. The contents of the MFC command tag identification parameter are not permanent and must be written for each MFC command enqueue sequence. The validity of this parameter is checked asynchronously with respect to the instruction stream. If the upper bits (eg, bits 0-10) are not set to 0, MFC command queue processing is interrupted and an interrupt is generated.

MFC転送サイズまたはリスト・サイズ・チャネル
MFC転送サイズまたはリスト・サイズ・チャネルは、MFC転送のサイズ、またはMFC DMA転送リストのサイズ、すなわち、一連のDMA転送コマンドのリストを指定するために使用される。MFC転送サイズまたはリスト・サイズ・チャネルの詳細は図14に示されている。一般的な一実施形態では、転送サイズは1、2、4、8、16、または16バイトの倍数から最大16KBの値を有することができる。MFC DMA転送リスト・サイズは8または8の倍数から最大16KBの値を有することができる。MFC転送サイズまたはリスト・サイズ・チャネルの内容は、永続的なものではなく、各MFCコマンド・エンキュー・シーケンスごとに書き込まなければならない。このパラメータの妥当性は、命令ストリームに対して非同期的にチェックされる。サイズが無効である場合、MFCコマンド・キュー処理は中断され、MFC DMA位置合わせ割り込みが生成される。
MFC transfer size or list size channel The MFC transfer size or list size channel is used to specify the size of the MFC transfer, or the size of the MFC DMA transfer list, ie, a list of DMA transfer commands. . Details of the MFC transfer size or list size channel are shown in FIG. In one general embodiment, the transfer size can have a value from 1, 2, 4, 8, 16, or multiples of 16 bytes up to a maximum of 16 KB. The MFC DMA transfer list size can have a value of 8 or multiples of 8 up to a maximum of 16 KB. The contents of the MFC transfer size or list size channel are not persistent and must be written for each MFC command enqueue sequence. The validity of this parameter is checked asynchronously with respect to the instruction stream. If the size is invalid, MFC command queue processing is interrupted and an MFC DMA alignment interrupt is generated.

MFCローカル記憶アドレス・チャネル
MFCローカル記憶アドレス・チャネルは、キューイングすべきMFCコマンドに関連するSPUローカル記憶アドレスを供給するために使用される。MFCローカル記憶アドレスは、MFCコマンドに定義されるMFC転送のソースまたは宛先として使用される。MFCローカル記憶アドレス・チャネルの詳細は図15に示されている。
MFC local storage address channel The MFC local storage address channel is used to provide the SPU local storage address associated with the MFC command to be queued. The MFC local storage address is used as the source or destination of the MFC transfer defined in the MFC command. Details of the MFC local storage address channel are shown in FIG.

MFCローカル記憶アドレス・チャネルの内容は、永続的なものではなく、各MFCコマンド・エンキュー・シーケンスごとに書き込まなければならない。MFCローカル記憶アドレス・パラメータの妥当性は、命令ストリームに対して非同期的にチェックされる。アドレスが位置合わせされていない場合、MFCコマンド・キュー処理は中断され、MFC DMA位置合わせ例外が生成される。位置合わせ済みと見なすためには、たとえば、ローカル記憶アドレスの最下位4ビットが有効アドレスの最下位4ビットと一致しなければならない。   The contents of the MFC local storage address channel are not persistent and must be written for each MFC command enqueue sequence. The validity of the MFC local storage address parameter is checked asynchronously against the instruction stream. If the address is not aligned, MFC command queue processing is interrupted and an MFC DMA alignment exception is generated. To be considered aligned, for example, the least significant 4 bits of the local storage address must match the least significant 4 bits of the effective address.

MFC有効アドレス・ローまたはリスト・アドレス・チャネル
MFC有効アドレス・ローまたはリスト・アドレス・チャネルは、MFCコマンド用の下位有効アドレスまたはMFC DMAリスト・コマンド用のリスト・エレメントを指すローカル記憶ポインタを指定するために使用される。MFC状態レジスタ内で変換が使用可能である場合、有効アドレスは、PPEのアドレス変換機能によって実アドレスに変換される。図16は、MFC有効アドレス・ローまたはリスト・アドレス・チャネルの詳細を示している。
MFC effective address row or list address channel The MFC effective address row or list address channel specifies a lower effective address for an MFC command or a local storage pointer that points to a list element for an MFC DMA list command Used for. If translation is enabled in the MFC status register, the effective address is translated to a real address by the PPE address translation function. FIG. 16 shows details of the MFC effective address row or list address channel.

MFC有効アドレス・ローまたはリスト・アドレス・チャネルの内容は、永続的なものではなく、各MFCコマンド・エンキュー・シーケンスごとに書き込まなければならない。16バイト未満の転送サイズの場合、このパラメータのビット28〜31は転送サイズに基づいて自然位置合わせを提供しなければならない。16バイト以上の転送サイズの場合、ビット28〜31は「0」でなければならない。変換が使用不可である場合、このパラメータは、主記憶装置ドメインの実アドレス空間の限度内でなければならない。MFCリスト・コマンドの場合、リスト・アドレスのビット29〜31は「0」でなければならない。これらの条件のいずれかが満足されない場合、パラメータは無効であり、位置合わせされていないと見なされる。   The contents of the MFC effective address row or list address channel are not persistent and must be written for each MFC command enqueue sequence. For transfer sizes less than 16 bytes, bits 28-31 of this parameter must provide natural alignment based on the transfer size. For a transfer size of 16 bytes or more, bits 28-31 must be "0". If translation is not available, this parameter must be within the limits of the real address space of the main storage domain. For MFC list commands, bits 29-31 of the list address must be "0". If any of these conditions are not met, the parameter is invalid and considered unaligned.

MFC有効アドレス・ローまたはリスト・アドレス・パラメータの妥当性は、命令ストリームに対して非同期的にチェックされる。たとえば、セグメント障害、マッピング障害、保護違反によるか、アドレスが位置合わせされていないので、アドレスが無効である場合、MFCコマンド・キュー処理は中断され、割り込みが生成される。生成される可能性のある割り込みのタイプは、MFCデータセグメント割り込み、MFCデータ記憶割り込み、およびDMA位置合わせ割り込みである。   The validity of the MFC effective address row or list address parameter is checked asynchronously against the instruction stream. For example, if the address is invalid because of a segment failure, mapping failure, protection violation, or if the address is invalid, MFC command queue processing is interrupted and an interrupt is generated. The types of interrupts that can be generated are MFC data segment interrupts, MFC data store interrupts, and DMA alignment interrupts.

MFC有効アドレス・ハイ・チャネル
MFC有効アドレス・ハイ・チャネルは、MFCコマンド用の有効アドレスを指定するために使用される。MFC状態レジスタ内で変換が使用可能である場合、有効アドレスは、アドレス変換機能によって実アドレスに変換される。MFC有効アドレス・ハイ・チャネルの詳細は図17に示されている。
MFC effective address high channel The MFC effective address high channel is used to specify an effective address for MFC commands. If translation is enabled in the MFC status register, the effective address is converted to a real address by the address translation function. Details of the MFC effective address high channel are shown in FIG.

MFC有効アドレス・ハイ・チャネルの内容は、永続的なものではなく、各MFCコマンド・エンキュー・シーケンスごとに書き込まなければならない。上位32ビットが書き込まれない場合、ハードウェアはEAHを設定し、上位アドレス・ビットは0に設定され、すなわち、アドレスは0〜4GBの間になる。このパラメータの妥当性は、命令ストリームに対して非同期的にチェックされる。たとえば、セグメント障害、マッピング障害、または保護違反により、アドレスが無効である場合、MFCコマンド・キュー処理は中断され、割り込みが生成される。生成される可能性のある割り込みのタイプとしては、MFCデータセグメント割り込みおよびMFCデータ記憶割り込みを含む。有効アドレスの妥当性は転送中にチェックされることに留意されたい。無効アドレスが検出され、例外が生成される前に、部分転送を実行することができる。   The contents of the MFC effective address high channel are not persistent and must be written for each MFC command enqueue sequence. If the upper 32 bits are not written, the hardware sets EAH and the upper address bits are set to 0, ie the address is between 0 and 4 GB. The validity of this parameter is checked asynchronously with respect to the instruction stream. For example, if the address is invalid due to a segment failure, mapping failure, or protection violation, MFC command queue processing is interrupted and an interrupt is generated. The types of interrupts that may be generated include MFC data segment interrupts and MFC data store interrupts. Note that the validity of the effective address is checked during the transfer. A partial transfer can be performed before an invalid address is detected and an exception is generated.

上述のMFCコマンド・パラメータ・チャネルを使用すると、SPUからMFCコマンドをキューイングするために、MFCコマンド・パラメータはまず、MFCコマンド・パラメータ・チャネルに書き込まなければならない。これは、MFCコマンド命令コードおよびクラスIDパラメータを最後に書き込まなければならないことを除き、任意の順序で実行することができる。したがって、MFCコマンド・パラメータを書き込むために、図18に概要を示した動作に従う。   Using the MFC command parameter channel described above, in order to queue MFC commands from the SPU, the MFC command parameters must first be written to the MFC command parameter channel. This can be done in any order except that the MFC command instruction code and class ID parameter must be written last. Therefore, the operation outlined in FIG. 18 is followed to write the MFC command parameters.

図18に示されている通り、動作は、ローカル記憶アドレス・パラメータをMFCローカル記憶アドレス・チャネルに書き込むことを含む(ステップ810)。有効アドレス・ハイ・パラメータはMFC有効アドレス・ハイ・チャネルに書き込まれる(ステップ820)。有効アドレス・ローまたはリスト・アドレス・パラメータは、MFC有効ローまたはリスト・アドレス・チャネルに書き込まれる(ステップ830)。MFC転送またはリスト・サイズ・パラメータはMFC転送サイズまたはリスト・サイズ・チャネルに書き込まれる(ステップ840)。MFCコマンド・タグ・パラメータはMFCコマンド・タグIDチャネルに書き込まれる(ステップ850)。上記のパラメータのすべてがそれぞれのチャネルに書き込まれた後、MFCコマンド命令コードおよびクラスIDパラメータがMFC命令コードおよびMFCクラスIDチャネルに書き込まれ(ステップ860)、動作が終了する。ステップ810〜850は任意の順序で実行することができ、ステップ860はそれぞれのチャネルへの他のパラメータの書き込みに続いて行われることを理解されたい。   As shown in FIG. 18, the operation includes writing the local storage address parameter to the MFC local storage address channel (step 810). The effective address high parameter is written to the MFC effective address high channel (step 820). The effective address row or list address parameter is written to the MFC effective row or list address channel (step 830). The MFC transfer or list size parameter is written to the MFC transfer size or list size channel (step 840). The MFC command tag parameter is written to the MFC command tag ID channel (step 850). After all of the above parameters are written to the respective channels, the MFC command instruction code and class ID parameters are written to the MFC instruction code and MFC class ID channel (step 860), and the operation ends. It should be understood that steps 810-850 can be performed in any order, and step 860 occurs following the writing of other parameters to the respective channel.

MFCコマンド・パラメータは、MFCコマンド命令コードおよびクラスIDパラメータの書き込みがMFCによって処理されるまで、MFCコマンド・パラメータ・チャネル内に保持される。MFCコマンド命令コード・チャネルおよびMFCクラスIDチャネルへの書き込みチャネル(wrch)命令により、MFCコマンド・パラメータ・チャネル内に保持されているパラメータがMFCコマンド・キューに送信される。MFCコマンド・パラメータは、MFCコマンド・キューに対するMFCコマンド自体の発行前に、任意の順序で書き込むことができる。MFCコマンド・パラメータ・チャネルに書き込まれた最後のパラメータの値は、エンキュー動作で使用される。   The MFC command parameters are held in the MFC command parameter channel until the writing of the MFC command instruction code and class ID parameter is processed by the MFC. A write channel (wrch) instruction to the MFC command instruction code channel and MFC class ID channel causes the parameters held in the MFC command parameter channel to be sent to the MFC command queue. The MFC command parameters can be written in any order before issuing the MFC command itself to the MFC command queue. The value of the last parameter written to the MFC command parameter channel is used in the enqueue operation.

MFCコマンドがキューイングされた後、MFCパラメータの値は無効になり、次のMFCコマンド・キューイング要求のために再指定しなければならない。必要なMFCパラメータのすべて(すなわち、任意選択のEAHを除く、すべてのパラメータ)を指定しないと、MFCコマンド・キューの動作が不適切なものになる可能性がある。   After the MFC command is queued, the value of the MFC parameter becomes invalid and must be re-specified for the next MFC command queuing request. Failure to specify all of the required MFC parameters (ie, all parameters except the optional EAH) can lead to improper operation of the MFC command queue.

MFCコマンド命令コード・チャネルおよびMFCクラスIDチャネルは、ハードウェアによってサポートされるMFCキュー・コマンドの数に応じてハードウェアによって構成された最大カウントを有する。ソフトウェアは、MFCコマンド命令コード・チャネルのチャネル・カウントを、電源投入後およびMFCプロキシ・コマンド・キューのパージ後に実装例によってサポートされる空のMFCプロキシ・コマンド・キュー・スロットの数に初期設定しなければならない。また、MFCコマンド命令コード・チャネルのチャネル・カウントは、SPEプリエンプティブ・コンテキスト・スイッチ上で保存および復元しなければならない。   The MFC command instruction code channel and the MFC class ID channel have a maximum count configured by the hardware depending on the number of MFC queue commands supported by the hardware. The software initializes the channel count for the MFC command opcode channel to the number of empty MFC proxy command queue slots supported by the implementation after power up and after purging the MFC proxy command queue. There must be. Also, the channel count of the MFC command instruction code channel must be saved and restored on the SPE preemptive context switch.

MFCタグ・グループ状況チャネル
前述の通り、各コマンドは、MFCコマンド・タグと呼ばれるID、たとえば、5ビットのIDでタグを付けることができる。同じIDを複数のMFCコマンドに使用することができる。同じIDを有する1組のコマンドはタグ・グループとして定義される。ソフトウェアは、MFCコマンド・タグを使用して、各タグ・グループに関するすべての待機コマンドの完了をチェックするかまたは待つことができる。加えて、MFCコマンド・タグは、MFC DMAリスト・コマンドをチェックするかまたは待つため、停止通知フラグが設定されたエレメントに到達するため、ならびにMFC DMAリスト・コマンドを再開するためにリスト・エレメントを確認するために、ソフトウェアによって使用される。
MFC Tag Group Status Channel As described above, each command can be tagged with an ID called an MFC command tag, for example, a 5-bit ID. The same ID can be used for multiple MFC commands. A set of commands with the same ID is defined as a tag group. The software can use the MFC command tag to check or wait for the completion of all wait commands for each tag group. In addition, the MFC command tag checks the list element to check or wait for the MFC DMA list command, to reach the element with the stop notification flag set, and to resume the MFC DMA list command. Used by software to confirm.

まず、MFCタグ・グループ状況チャネルについて説明し、次に、タグ・グループの状況を判別し、MFC DMAリスト・コマンド完了を判別するための手順の説明を示す。   First, the MFC tag group status channel will be described, and then the procedure for determining the status of the tag group and determining completion of the MFC DMA list command will be described.

MFCタグ・グループ状況チャネルとしては、MFC書き込みタグ・グループ照会マスク・チャネル、MFC読み取りタグ・グループ照会マスク・チャネル、MFC書き込みタグ状況更新要求チャネル、MFC読み取りタグ・グループ状況チャネル、MFC読み取りリスト停止通知タグ状況チャネル、MFC書き込みリスト停止通知タグ確認応答チャネル、およびMFC読み取りアトミック・コマンド状況チャネルを含む。これらのチャネルのそれぞれについて、以下に詳細に説明する。   MFC tag group status channel includes MFC write tag group query mask channel, MFC read tag group query mask channel, MFC write tag status update request channel, MFC read tag group status channel, MFC read list stop notification Includes a tag status channel, an MFC write list stop notification tag acknowledge channel, and an MFC read atomic command status channel. Each of these channels is described in detail below.

MFC書き込みタグ・グループ照会マスク・チャネル
MFC書き込みタグ・グループ照会マスク・チャネルは、照会または待機動作に含めるべきタグ・グループを選択するために使用される。MFC書き込みタグ・グループ照会マスク・チャネルの詳細は図19に示されている。
MFC write tag group query mask channel The MFC write tag group query mask channel is used to select a tag group to be included in a query or wait operation. Details of the MFC write tag group query mask channel are shown in FIG.

このチャネルによって提供されるデータは、このチャネルに対して発行された後続書き込みチャネル(wrch)命令によって変更されるまで、MFCによって保持される。したがって、データは、各状況照会または待機ごとに再指定する必要はない。MFCタグ状況更新要求が保留中であるときにこのマスクがソフトウェアによって変更された場合、結果の意味は曖昧になる。保留MFCタグ状況更新要求は、このマスクの変更前に必ず取り消さなければならない。MFCタグ状況更新要求は、MFC書き込みタグ状況更新要求チャネルに「0」という値(すなわち、即時更新)を書き込むことにより、取り消すことができる。このチャネルの現行内容は、MFC読み取りタグ・グループ照会マスク・チャネルを読み取ること(rdch)によりアクセスすることができる。このチャネルは非ブロッキングであり、関連カウントを備えていない。読み取りチャネル・カウント(rchcnt)命令がこのチャネルに送信された場合、カウントは必ず「1」として返される。   The data provided by this channel is held by the MFC until changed by a subsequent write channel (wrch) instruction issued for this channel. Thus, the data need not be respecified for each status query or wait. If this mask is changed by software when an MFC tag status update request is pending, the meaning of the result is ambiguous. The pending MFC tag status update request must be canceled before changing this mask. The MFC tag status update request can be canceled by writing a value of “0” (that is, immediate update) to the MFC write tag status update request channel. The current contents of this channel can be accessed by reading (rdch) the MFC read tag group query mask channel. This channel is non-blocking and has no associated count. If a read channel count (rchcnt) instruction is sent on this channel, the count is always returned as "1".

MFC読み取りタグ・グループ照会マスク・チャネル
MFC読み取りタグ・グループ照会マスク・チャネルは、プロキシ・タグ・グループ照会マスク・レジスタの現行値を読み取るために使用される。MFC読み取りタグ・グループ照会マスク・チャネルの詳細は図20に示されている。このチャネルを読み取ると、必ず、MFC書き込みタグ・グループ照会マスク・チャネルに最後に書き込まれたデータが返される。このチャネルは、プロキシ・タグ・グループ照会マスクのソフトウェア・シャドー・コピーを回避するため、ならびにSPEコンテキスト保存および復元動作のために使用することができる。このチャネルは非ブロッキングであり、関連カウントを備えていない。したがって、読み取りチャネル・カウント(rchcnt)命令がこのチャネルに送信された場合、カウントは必ず「1」として返される。
MFC read tag group query mask channel The MFC read tag group query mask channel is used to read the current value of the proxy tag group query mask register. Details of the MFC read tag group query mask channel are shown in FIG. Reading this channel always returns the data that was last written to the MFC Write Tag Group Query Mask channel. This channel can be used to avoid software shadow copies of proxy tag group query masks and for SPE context save and restore operations. This channel is non-blocking and has no associated count. Thus, if a read channel count (rchcnt) instruction is sent on this channel, the count is always returned as “1”.

MFC書き込みタグ状況更新要求チャネル
MFC書き込みタグ状況更新要求チャネルは、MFCタグ・グループ状況がMFC読み取りタグ・グループ状況チャネルで更新される時期を制御する。MFC書き込みタグ状況更新要求チャネルの詳細は図21に示されている。
MFC write tag status update request channel The MFC write tag status update request channel controls when the MFC tag group status is updated in the MFC read tag group status channel. Details of the MFC write tag status update request channel are shown in FIG.

MFC書き込みタグ状況更新要求チャネルは、状況が即時または条件の発生時に更新されること、たとえば、任意の使用可能なMFCタグ・グループ完了が「未解決動作なし(no operation outstanding)」状況を有するときに更新されるかまたはすべての使用可能なMFCタグ・グループが「未解決動作なし」状況を有するときにのみ更新されることを指定することができる。このチャネルに対する書き込みチャネル(wrch)命令は、MFC読み取りタグ・グループ状況チャネルからの読み取りチャネル(rdch)が発生する前に発生しなければならない。   MFC write tag status update request channel is updated immediately or when a condition occurs, eg, when any available MFC tag group completion has a "no operation outstanding" status Or all available MFC tag groups can be specified to be updated only when they have a “no outstanding behavior” status. A write channel (wrch) instruction for this channel must occur before a read channel (rdch) from the MFC read tag group status channel occurs.

MFC書き込みタグ状況更新要求は、タグ・グループ・マスクを設定した後および関心のあるタグ・グループに関するコマンドを発行した後に実行しなければならない。MFC書き込みタグ状況更新要求を発行する前に、あるタグ・グループに関するコマンドが完了し、それにより更新状況条件を満足した場合、待たずにその状況が返される。MFC書き込みタグ状況更新要求チャネルに書き込むことにより、まず状況更新を要求せずにMFC読み取りタグ・グループ状況チャネルから読み取ると、ソフトウェアにより誘導されたデッドロックが発生する。   The MFC write tag status update request must be executed after setting the tag group mask and after issuing a command for the tag group of interest. If a command for a tag group is completed before issuing an MFC write tag status update request, thereby satisfying the update status condition, the status is returned without waiting. Writing to the MFC write tag status update request channel causes a software-induced deadlock when first reading from the MFC read tag group status channel without requesting a status update.

前のMFCタグ状況更新要求は、MFC書き込みタグ状況更新要求チャネルに対して即時更新状況要求を発行し、「1」という値が返されるまでMFC書き込みタグ状況更新要求チャネルに関連するカウントを読み取り、次にMFC読み取りタグ・グループ状況チャネルから読み取って不要な結果を判別し廃棄することにより、取り消すことができる。   The previous MFC tag status update request issues an immediate update status request to the MFC write tag status update request channel and reads the count associated with the MFC write tag status update request channel until a value of “1” is returned; It can then be canceled by reading from the MFC read tag group status channel to determine and discard unwanted results.

介入状況読み取り要求なしに条件付き更新要求を2回行うと、予測不能タグ状況が返される。予測不能結果を回避するために、即時更新要求を介して要求取り消しが実行されない限り、ソフトウェアは、タグ状況への読み取りとタグ状況更新の要求を対にする。   If a conditional update request is made twice without an intervention status read request, an unpredictable tag status is returned. To avoid unpredictable results, the software pairs the tag status read with the tag status update request unless a request cancellation is performed via an immediate update request.

特権ソフトウェアは、このチャネルに関するカウントを「1」に初期設定する。書き込みチャネル(wrch)命令がこのチャネルに対して発行されると、このチャネルに関するカウントが「0」に設定される。MFCがタグ状況更新要求を受信すると、このカウントが「1」に設定される。このチャネルは書き込みブロッキング使用可能であり、最大カウントは「1」である。   The privileged software initializes the count for this channel to “1”. When a write channel (wrch) instruction is issued for this channel, the count for this channel is set to "0". When the MFC receives the tag status update request, this count is set to “1”. This channel is write blocking enabled and has a maximum count of “1”.

MFC読み取りタグ・グループ状況チャネル
MFC読み取りタグ・グループ状況チャネルは、最後のタグ・グループ状況更新要求からのタグ・グループの状況を含む。MFC読み取りタグ・グループ状況チャネルの詳細は図22に示されている。
MFC read tag group status channel The MFC read tag group status channel contains the status of the tag group from the last tag group status update request. Details of the MFC read tag group status channel are shown in FIG.

タグ・グループ状況更新の時点で使用可能なタグ・グループの状況のみが有効である。タグ・グループ状況更新の時点で使用不可であるタグ・グループに対応するビット位置は「0」に設定される。   Only the status of tag groups available at the time of tag group status update is valid. The bit position corresponding to the tag group that cannot be used at the time of updating the tag group status is set to “0”.

このチャネルから読み取る前に、MFC書き込みタグ状況更新要求チャネルを要求しなければならない。これを実行し損なうと、ソフトウェアにより誘導されたデッドロック条件が発生する。これはプログラミング・エラーと見なされ、デッドロック条件を除去するために特権ソフトウェアが必要になる。   Before reading from this channel, the MFC Write Tag Status Update Request channel must be requested. Failure to do so will result in software induced deadlock conditions. This is considered a programming error and requires privileged software to remove the deadlock condition.

MFC読み取りタグ・グループ状況チャネルに送信された読み取りチャネル・カウント(rchcnt)命令は、その状況がまだ使用可能ではない場合に「0」を返し、その状況が使用可能である場合に「1」を返す。この命令は、MFC読み取りタグ・グループ状況チャネルが読み取られたときにSPUの停止を回避するために使用することができる。ソフトウェアは、このチャネルに関するカウントを「0」という値に初期設定する。このチャネルは、読み取りブロッキング使用可能であり、最大カウントは「1」である。   A read channel count (rchcnt) instruction sent to the MFC read tag group status channel returns “0” if the status is not yet available, and “1” if the status is available. return. This instruction can be used to avoid stopping the SPU when the MFC read tag group status channel is read. The software initializes the count for this channel to a value of “0”. This channel is enabled for read blocking and has a maximum count of “1”.

MFC読み取りリスト停止通知タグ状況チャネル
MFC読み取りリスト停止通知タグ状況チャネルの詳細は図23に示されている。前述の通り、MFCリスト・コマンドに関するリスト・エレメントは停止通知フラグを含む。フラグがリスト・エレメント上で設定されている場合、MFCは、MFCリスト・コマンド、すなわち、DMAリスト・コマンドの実行を停止し、このチャネル内のMFCリスト・コマンドのタグ・グループに対応するビットを設定する。このチャネルに関連するカウントも「1」に設定される。MFC書き込みリスト停止通知タグ確認応答チャネルにタグ値を書き込むことによって確認されるまで、MFCリスト・コマンドは停止したままになる。
MFC Read List Stop Notification Tag Status Channel Details of the MFC read list stop notification tag status channel are shown in FIG. As described above, the list element for the MFC list command includes a stop notification flag. If the flag is set on the list element, the MFC stops executing the MFC list command, ie, the DMA list command, and sets the bit corresponding to the tag group of the MFC list command in this channel. Set. The count associated with this channel is also set to “1”. The MFC list command remains stopped until confirmed by writing the tag value to the MFC write list stop notification tag acknowledge channel.

MFCリスト停止通知機能は、DMAリスト実行が特定のポイントに到達した時期をプログラムに通知する必要があるときに有用である。また、これは、停止されたリスト・エレメントに従うリスト・エレメント(転送サイズまたは有効アドレス)をアプリケーションが動的に変更する必要があるときにも有用である。また、その転送サイズを「0」に設定することにより、リスト・エレメントをスキップすることもできる。ハードウェアは、停止通知エレメントを越えてリスト・エレメントを事前取り出しすることはできない。   The MFC list stop notification function is useful when it is necessary to notify the program when the DMA list execution has reached a specific point. This is also useful when the application needs to dynamically change the list element (transfer size or effective address) that follows the stopped list element. Further, the list element can be skipped by setting the transfer size to “0”. The hardware cannot prefetch list elements beyond the stop notification element.

特権ソフトウェアは、MFC読み取りリスト停止通知タグ状況チャネルのカウントを0に初期設定しなければならない。ソフトウェアは、このチャネルの内容をもう一度読み取ることにより、このチャネルの最後の読み取り以来停止しているコマンドをどのタグ・グループが備えているかを判別することができる。このチャネルに対して読み取りチャネル(rdch)命令を発行すると、すべてのビットが0にリセットされ、このチャネルに対応するカウントが「0」に設定される。したがって、「1」に設定された停止通知フラグを含む未解決リスト・エレメントならびに停止されたコマンドをまったく含まない読み取りチャネル(rdch)命令を発行すると、ソフトウェアにより誘導されたデッドロックが発生する。   The privileged software must initialize the MFC read list stop notification tag status channel count to zero. The software can determine which tag group has a command that has been stopped since the last read of this channel by reading the contents of this channel again. When a read channel (rdch) instruction is issued for this channel, all bits are reset to 0 and the count corresponding to this channel is set to “0”. Thus, issuing an unresolved list element that includes a stop notification flag set to “1” as well as a read channel (rdch) instruction that does not include any stopped commands causes a software-induced deadlock.

どのタグ・グループも停止されていないときにこのチャネル上で読み取りチャネル(rdch)命令を発行すると、停止通知フラグが設定されたリスト・エレメントが検出されるまでSPU実行停止が発生する。また、ソフトウェアは、停止通知フラグが設定されたMFCリスト・エレメントが検出される時期を判別するためにSPUイベント機能とともに使用するためにこのチャネルに関連するカウントを読み取る(rchcnt)こともできる。MFC読み取りリスト停止通知タグ状況チャネルに送信された読み取りチャネル・カウント(rchcnt)命令は、このチャネルの最後の読み取り以来、新しい停止MFCリスト・コマンドがまったく存在しない場合に「0」を返す。このチャネルは、読み取りブロッキングであり、「1」という最大カウントを有する。   Issuing a read channel (rdch) instruction on this channel when no tag group is stopped will cause SPU execution to stop until a list element with the stop notification flag set is detected. The software can also read (rchcnt) the count associated with this channel for use with the SPU event function to determine when an MFC list element with a stop notification flag set is detected. The read channel count (rchcnt) instruction sent to the MFC read list stop notification tag status channel returns “0” if no new stop MFC list command has been present since the last read of this channel. This channel is read blocking and has a maximum count of “1”.

MFC書き込みリスト停止通知タグ確認応答チャネル
MFC書き込みリスト停止通知タグ確認応答チャネルの詳細は図24に示されている。MFC書き込みリスト停止通知タグ確認応答チャネルは、停止通知フラグが設定されたリスト・エレメント上で停止したMFCリスト・コマンドを含むタグ・グループを確認するために使用される。タグ・グループは、このチャネルにMFCタグ・グループを書き込むことによって確認される。書き込み後、このチャネルに書き込まれた値に一致するタグ・グループのすべての停止MFCリスト・コマンドが再始動される。
MFC Write List Stop Notification Tag Confirmation Response Channel Details of the MFC write list stop notification tag confirmation response channel are shown in FIG. The MFC Write List Stop Notification Tag Acknowledgment Channel is used to identify a tag group that contains a stopped MFC list command on a list element that has a stop notification flag set. The tag group is confirmed by writing the MFC tag group to this channel. After writing, all stop MFC list commands in the tag group that match the value written to this channel are restarted.

MFCリスト停止通知機能は、DMAリスト実行が特定のポイントに到達した時期をプログラムに通知する必要があるときに有用である。また、これは、停止されたリスト・エレメントに従うリスト・エレメント(転送サイズまたは有効アドレス)をアプリケーションが動的に変更する必要があるときにも有用である。また、その転送サイズを0に設定することにより、リスト・エレメントをスキップすることもできる。ハードウェアは、停止通知エレメントを越えてリスト・エレメントを事前取り出しすることはできない。   The MFC list stop notification function is useful when it is necessary to notify the program when the DMA list execution has reached a specific point. This is also useful when the application needs to dynamically change the list element (transfer size or effective address) that follows the stopped list element. Also, list elements can be skipped by setting the transfer size to zero. The hardware cannot prefetch list elements beyond the stop notification element.

停止通知条件により現在停止されていないタグ・グループを確認することは定義されていない。このように実行すると、MFC読み取りリスト停止通知タグ状況チャネルに無効状況が発生する。一貫性のため、この条件はノーオペレーション(no-op)として処理される。   Checking tag groups that are not currently stopped by the stop notification condition is not defined. When executed in this way, an invalid status occurs in the MFC read list stop notification tag status channel. For consistency, this condition is treated as a no-op.

このチャネルは、非ブロッキング・チャネルであり、関連カウントを備えていない。読み取りチャネル・カウント(rchcnt)命令がこのチャネルに送信された場合、カウントは必ず「1」として返される。   This channel is a non-blocking channel and does not have an associated count. If a read channel count (rchcnt) instruction is sent on this channel, the count is always returned as "1".

MFC読み取りアトミック・コマンド状況チャネル
MFC読み取りアトミック・コマンド状況チャネルの詳細は図25に示されている。MFC読み取りアトミック・コマンド状況チャネルは、最後に完了した即時MFCアトミック更新コマンドの状況を含む。アトミック・コマンドとは、MFC SPUキュー内の他のコマンドを待たずに実行され、MFC SPUキュー内の他のコマンドとは無関係に実行されるコマンドである。MFCによってサポートされるアトミック・コマンドとしては、getllar(ロック・ライン予約取得)、putllc(ロック・ライン条件付きプット)、putlluc(ロック・ライン無条件プット)、およびputqlluc(待機ロック・ライン無条件プット)の4通りがある。これらのコマンドは、従来、「ロック」を解除するためにソフトウェアによって使用されるキャッシュ可能な保管命令と同様の機能を実行する。putllucコマンドとputqllucコマンドとの違いは、putqllucコマンドはタグが付けられ、MFC SPUコマンド・キュー内の他のMFCコマンドの裏側でキューイングされ、putllucコマンドは即時実行されることである。
MFC Read Atomic Command Status Channel Details of the MFC read atomic command status channel are shown in FIG. The MFC read atomic command status channel contains the status of the last completed immediate MFC atomic update command. An atomic command is a command that is executed without waiting for other commands in the MFC SPU queue and executed independently of other commands in the MFC SPU queue. Atomic commands supported by MFC include getllar (get lock line reservation), putllc (lock line conditional put), putlluc (lock line unconditional put), and putqlluc (standby lock line unconditional put) There are four ways. These commands conventionally perform functions similar to cacheable store instructions used by software to release "locks". The difference between the putluc command and the putqluc command is that the putqluc command is tagged, queued behind other MFC commands in the MFC SPU command queue, and the putluc command is executed immediately.

putqllucコマンドはタグが付けられ、暗黙のタグ固有のフェンスを有するので、すでにMFC SPUコマンド・キュー内にある同じタグ・グループ内の他のすべてのコマンドに対して順序付けされる。getllarコマンド、putllcコマンド、およびputllucコマンドはタグが付けられず、したがって、即時実行される。getllarコマンド、putllcコマンド、およびputllucコマンドが即時実行されても、これらのコマンドは依然として、MFC SPUコマンド・キュー内の使用可能なスロットを必要とする。MFC SPUコマンド・キュー内の他のコマンドによる順序付けはまったく想定する必要はない。各getllarコマンド、putllcコマンド、またはputllucコマンドを発行した後、ソフトウェアは、そのコマンドの完了を検証するためにMFC読み取りアトミック・コマンド状況チャネルからの読み取りを発行しなければならない。即時アトミック・コマンドを発行する前にこのチャネルに対してチャネル読み取り(rdch)命令を発行すると、ソフトウェアにより誘導されたデッドロックが発生する。   Since the putqlluc command is tagged and has an implicit tag-specific fence, it is ordered with respect to all other commands in the same tag group that are already in the MFC SPU command queue. The getllar, putllc, and putlluc commands are not tagged and are therefore executed immediately. Even if the getlar, putllc, and putlluc commands are executed immediately, these commands still require an available slot in the MFC SPU command queue. No ordering by other commands in the MFC SPU command queue need be assumed. After issuing each getllar command, putllc command, or putlluc command, the software must issue a read from the MFC read atomic command status channel to verify the completion of the command. Issuing a channel read (rdch) instruction for this channel before issuing an immediate atomic command causes a software induced deadlock.

ソフトウェアは、即時アトミックMFCコマンドが完了したかどうかを判別するために、このチャネルに関連するチャネル・カウント(rchcnt)を読み取ることができる。「0」という値が返される場合、即時アトミックMFCコマンドは完了していない。「1」という値が返される場合、即時アトミックMFCコマンドは完了しており、このチャネルを読み取る(rdch)ことにより、その状況が使用可能になる。   The software can read the channel count (rchcnt) associated with this channel to determine if the immediate atomic MFC command is complete. If a value of “0” is returned, the immediate atomic MFC command is not complete. If a value of “1” is returned, the immediate atomic MFC command is complete and the status becomes available by reading (rdch) this channel.

MFC読み取りアトミック・コマンド状況チャネルからの読み取り(rdch)は、必ず即時アトミックMFCコマンドに従わなければならない。MFC読み取りアトミック・コマンド状況チャネルからの介入読み取りなしに複数のアトミックMFCコマンドを実行すると、誤った状況が発生する。   A read (rdch) from the MFC read atomic command status channel must always follow an immediate atomic MFC command. Executing multiple atomic MFC commands without intervening reads from the MFC read atomic command status channel results in an incorrect status.

特権ソフトウェアはこのチャネルのカウントを「0」に初期設定する。このチャネルは読み取りブロッキングであり、最大カウントは「1」である。このチャネルの内容は、読み取られたときにクリアされる。後続の即時MFCアトミック更新コマンドが完了すると、それ以前のMFCコマンドの状況が上書きされる。   The privileged software initializes the count of this channel to “0”. This channel is read blocking and the maximum count is “1”. The contents of this channel are cleared when read. When the subsequent immediate MFC atomic update command is completed, the status of the previous MFC command is overwritten.

上述のMFCタグ・グループ状況チャネルは、タグ・グループの状況の判別を容易にするため、ならびにMFC DMAリスト・コマンドの完了を判別するために使用される。タグ・グループの状況を判別するために、MFC読み取りタグ・グループ状況チャネルのポーリング、タグ・グループ更新の待機またはイベントの待機、およびタグ・グループ状況更新イベントの割り込みという3通りの基本的手順がサポートされている。MFCコマンドの完了またはMFCコマンド・グループの完了についてポーリングするための基本的手順は図26に示されている通りである。   The MFC tag group status channel described above is used to facilitate the determination of the status of the tag group, as well as to determine the completion of the MFC DMA list command. Three basic procedures are supported to determine tag group status: MFC read tag group status channel polling, tag group update wait or event wait, and tag group status update event interrupt Has been. The basic procedure for polling for MFC command completion or MFC command group completion is as shown in FIG.

図26に示されている通り、任意の保留タグ状況更新要求はクリアされる(ステップ1010)。これは、たとえば、MFC書き込みタグ状況更新要求チャネルに「0」を書き込み、「1」という値が返されるまでMFC書き込みタグ状況更新要求チャネルに関連するチャネル・カウントを読み取り、MFC読み取りタグ・グループ状況チャネルを読み取り、タグ状況データを廃棄することにより、実施することができる。   As shown in FIG. 26, any pending tag status update request is cleared (step 1010). This can be done, for example, by writing “0” to the MFC write tag status update request channel, reading the channel count associated with the MFC write tag status update request channel until a value of “1” is returned, and the MFC read tag group status. This can be done by reading the channel and discarding the tag status data.

次に、適切なマスク・データを有するMFC書き込みタグ・グループ照会マスク・チャネルに書き込むことにより、関心のあるタグ・グループが使用可能になる(ステップ1020)。次に、たとえば、「0」という値でMFC書き込みタグ状況更新要求チャネルに書き込むことにより、即時タグ状況更新が要求される(ステップ1030)。   The tag group of interest is then made available by writing to the MFC write tag group query mask channel with the appropriate mask data (step 1020). Next, an immediate tag status update is requested, for example, by writing to the MFC write tag status update request channel with a value of “0” (step 1030).

次に、MFC読み取りタグ・グループ状況チャネルの読み取りが実行される(ステップ1040)。返されるデータは、タグ・グループ・マスクが適用された各タグ・グループの現行状況である。関心のある追加のタグ・グループが存在するかどうかについて判別が行われる(ステップ1050)。存在する場合、動作はステップ1030に戻る。存在しない場合、動作は終了する。   Next, a read of the MFC read tag group status channel is performed (step 1040). The data returned is the current status of each tag group with a tag group mask applied. A determination is made as to whether there are additional tag groups of interest (step 1050). If so, operation returns to step 1030. If it does not exist, the operation ends.

タグ・グループ更新を待つかまたはイベント(1つまたは複数のタグ・グループ完了)を待つための基本的手順は図27に示されている通りである。図示の通り、動作は、任意の保留タグ状況更新要求をクリアすることから始まる(ステップ1110)。これは、たとえば、MFC書き込みタグ状況更新要求チャネルに「0」を書き込み、「1」という値が返されるまでMFC書き込みタグ状況更新要求チャネルに関連するチャネル・カウントを読み取り、MFC読み取りタグ・グループ状況チャネルを読み取り、タグ状況データを廃棄することにより、実施することができる。   The basic procedure for waiting for a tag group update or waiting for an event (one or more tag group completions) is as shown in FIG. As shown, the operation begins with clearing any pending tag status update request (step 1110). This can be done, for example, by writing “0” to the MFC write tag status update request channel, reading the channel count associated with the MFC write tag status update request channel until a value of “1” is returned, and the MFC read tag group status. This can be done by reading the channel and discarding the tag status data.

「01」または「10」という値でMFC書き込みタグ状況更新要求チャネルに書き込むことにより、条件付きタグ状況更新が要求される(ステップ1120)。「01」という値は、任意の使用可能なタグ・グループが完了するとタグ・グループ更新が行われることを指定する。「10」という値は、結果的にSPUタグ・グループ状況更新が行われるようにすべての使用可能なタグ・グループが完了しなければならないことを指定する。   A conditional tag status update is requested by writing to the MFC write tag status update request channel with a value of “01” or “10” (step 1120). A value of “01” specifies that a tag group update is performed when any available tag group is completed. A value of “10” specifies that all available tag groups must be completed so that an SPU tag group status update will result.

その後、ステップ1120で指定された特定のタグ・イベントを待つためにMFC読み取りタグ・グループ状況チャネルが読み取られる(ステップ1130)。この読み取りにより、ステップ1120で指定された条件が満たされるまで、SPUの実行が停止される。代わって、特定のタグ・イベントをポーリングするかまたは待つためにMFC読み取りタグ・グループ状況チャネルに関連するカウントの読み取りを実行することもできる(ステップ1132)。   The MFC read tag group status channel is then read to wait for the specific tag event specified in step 1120 (step 1130). By this reading, the execution of the SPU is stopped until the condition specified in step 1120 is satisfied. Alternatively, a count read associated with the MFC read tag group status channel may be performed to poll or wait for a specific tag event (step 1132).

返されるカウントが「1」という値を有するかどうかについて判別が行われる(ステップ1140)。有していない場合、動作はステップ1132に戻る。カウントが「1」である場合、1つまたは複数のどのタグ・グループが完了したかを判別するためにMFC読み取りタグ・グループ状況チャネルが読み取られる(ステップ1150)。次に動作は終了する。   A determination is made as to whether the returned count has a value of “1” (step 1140). If not, operation returns to step 1132. If the count is “1”, the MFC read tag group status channel is read to determine which one or more tag groups are complete (step 1150). Next, the operation ends.

条件付きタグ・イベントを待つかまたは条件付きタグ・イベントについてポーリングすることに対する代替策は、SPUイベント機能を使用することである。この手順は、典型的には、複数のイベントの1つが発生するのをアプリケーションが待っているとき、またはコマンド完了を待ちながらアプリケーションが他の作業を実行できるときに使用される。この手順は図28に示されている通りである。   An alternative to waiting for conditional tag events or polling for conditional tag events is to use the SPU event function. This procedure is typically used when the application is waiting for one of multiple events to occur or when the application can perform other work while waiting for command completion. This procedure is as shown in FIG.

図28に示されている通り、任意の保留タグ状況更新要求はクリアされる(ステップ1210)。前述の通り、これは、たとえば、MFC書き込みタグ状況更新要求チャネルに「0」を書き込み、「1」という値が返されるまでMFC書き込みタグ状況更新要求チャネルに関連するチャネル・カウントを読み取り、MFC読み取りタグ・グループ状況チャネルを読み取り、タグ状況データを廃棄することにより、実施することができる。   As shown in FIG. 28, any pending tag status update request is cleared (step 1210). As described above, this can be done, for example, by writing “0” to the MFC Write Tag Status Update Request channel, reading the channel count associated with the MFC Write Tag Status Update Request channel until a value of “1” is returned, This can be done by reading the tag group status channel and discarding the tag status data.

1つまたは複数のタグ・グループが選択される(ステップ1220)。「1」という値でSPU書き込みイベント確認応答チャネルに書き込む(wrch)ことにより、任意の保留タグ状況更新イベントがクリアされる(ステップ1230)。SPU書き込みイベント・マスク・チャネルに「1」を書き込むことにより、MFCタグ・グループ状況更新イベントがアンマスクされる(ステップ1240)。次に、使用可能なイベントが発生するのを待つためにSPU読み取りイベント状況チャネルが読み取られる(ステップ1250)。この読み取りにより、使用可能なイベントが発生するまで、SPUの実行が停止される。代わって、カウントが「1」として返されるまで特定のタグ・イベントをポーリングするかまたは待つために、SPU読み取りイベント状況チャネルに関連するカウントを読み取ることもできる。   One or more tag groups are selected (step 1220). Any pending tag status update event is cleared by writing to the SPU write event acknowledgment channel with a value of “1” (step 1230). By writing “1” to the SPU write event mask channel, the MFC tag group status update event is unmasked (step 1240). Next, the SPU read event status channel is read to wait for an available event to occur (step 1250). This reading stops the execution of the SPU until a usable event occurs. Alternatively, the count associated with the SPU read event status channel can be read to poll or wait for a particular tag event until the count is returned as “1”.

SPU読み取りイベント状況チャネルが読み取られ、使用可能なイベントが発生したかどうかについて判別が行われる(ステップ1260)。発生していない場合、動作はステップ1250に戻る。使用可能なイベントが発生した場合、どのタグまたはタグ・グループがそのイベントを引き起こしたかを判別するためにMFC読み取りタグ・グループ状況チャネルが読み取られる(ステップ1270)。次に動作は終了する。   The SPU read event status channel is read and a determination is made as to whether an available event has occurred (step 1260). If not, operation returns to step 1250. If an available event occurs, the MFC read tag group status channel is read to determine which tag or tag group caused the event (step 1270). Next, the operation ends.

MFC DMAリスト・コマンドが停止通知フラグが設定されたリスト・エレメントに到達したかどうかを判別するために、MFC読み取りリスト停止通知タグ状況チャネルのポーリング、MFC DMAリスト・コマンド停止通知イベントの待機、およびMFC DMAリスト・コマンド停止通知イベントの割り込みという3通りの基本的手順がサポートされている。MFC DMAリスト・コマンドが停止通知フラグが設定されたリスト・エレメントに到達したかどうかを判別するためにポーリングするための基本的手順は図29に示されている通りである。   Polling the MFC read list stop notification tag status channel, waiting for an MFC DMA list command stop notification event, and determining whether the MFC DMA list command has reached the list element with the stop notification flag set, and Three basic procedures are supported: interrupting an MFC DMA list command stop notification event. The basic procedure for polling to determine if the MFC DMA list command has reached the list element with the stop notification flag set is as shown in FIG.

図29に示されている通り、動作は、停止通知フラグが設定されたリスト・エレメントを有するMFC DMAリスト・コマンドが発行されることから始まる(ステップ1310)。「1」という値が返されるまで、MFC読み取りリスト停止通知タグ状況チャネルに関連するカウントが読み取られる(rchcnt)(ステップ1320)。「1」という値が返された場合(ステップ1330)、MFC読み取りリスト停止通知タグ状況チャネルが読み取られる(rdch)(ステップ1340)。返されるデータは各タグ・グループの現行状況であり、それは、このチャネルの最後の読み取り以来、停止通知フラグが設定されたリスト・エレメントに到達している。   As shown in FIG. 29, operation begins with an MFC DMA list command having a list element with a stop notification flag set (step 1310). The count associated with the MFC read list stop notification tag status channel is read (rchcnt) until a value of “1” is returned (step 1320). If a value of “1” is returned (step 1330), the MFC read list stop notification tag status channel is read (rdch) (step 1340). The data returned is the current status of each tag group, which has reached the list element with the stop notification flag set since the last read of this channel.

関心のある1つまたは複数のタグ・グループが停止通知フラグが設定されたリスト・エレメントに到達しているかどうかについて判別が行われる(ステップ1350)。到達していない場合、関心のある1つまたは複数のタグ・グループが停止通知フラグが設定されたリスト・エレメントに到達するまで、動作はステップ1340に戻る。   A determination is made as to whether one or more tag groups of interest have reached the list element with the stop notification flag set (step 1350). If not, operation returns to step 1340 until one or more tag groups of interest reach the list element with the stop notification flag set.

関心のある1つまたは複数のタグ・グループが停止通知フラグが設定されたリスト・エレメントに到達している場合、MFC DMAリスト・コマンドを再開するために、停止されたタグ・グループに対応するタグ・グループ番号でMFC書き込みリスト停止通知タグ確認応答チャネルに書き込まれる(wrch)(ステップ1360)。次に動作は終了する。   If one or more tag groups of interest have reached a list element with the stop notification flag set, the tag corresponding to the stopped tag group to resume the MFC DMA list command Write to the MFC write list stop notification tag confirmation response channel using the group number (wrch) (step 1360). Next, the operation ends.

停止通知フラグが設定されたリスト・エレメントに到達するためのMFC DMAリスト・コマンドを待つための基本的手順は図30に示されている通りである。図示の通り、動作は、停止通知フラグが設定されたリスト・エレメントを有するMFC DMAリスト・コマンドが発行されることから始まる(ステップ1410)。MFC読み取りリスト停止通知タグ状況チャネルの読み取り(rdch)が実行される(ステップ1420)。返されるデータは、このチャネルの最後の読み取り以来、停止通知フラグが設定されたリスト・エレメントに到達している各タグ・グループの現行状況である。この読み取りにより、MFC DMAリスト・コマンドが停止通知フラグが設定されたリスト・エレメントに到達するまで、SPUが停止される。   The basic procedure for waiting for an MFC DMA list command to reach a list element with a stop notification flag set is as shown in FIG. As shown, operation begins with an MFC DMA list command having a list element with a stop notification flag set (step 1410). The reading (rdch) of the MFC reading list stop notification tag status channel is executed (step 1420). The data returned is the current status of each tag group that has reached the list element with the stop notification flag set since the last read of this channel. This reading stops the SPU until the MFC DMA list command reaches the list element with the stop notification flag set.

関心のある1つまたは複数のタグ・グループが停止通知フラグが設定されたリスト・エレメントに到達したかどうかについて判別が行われる(ステップ1430)。対応するビットは戻りデータに設定される。読み取りごとにビットがリセットされるので、ソフトウェアは、複数のタグ・グループが停止するのを待つ間、タグ・グループの累積を実行しなければならない。   A determination is made as to whether one or more tag groups of interest have reached the list element with the stop notification flag set (step 1430). The corresponding bit is set in the return data. Because the bit is reset with each read, the software must perform tag group accumulation while waiting for multiple tag groups to stop.

到達していない場合、関心のある1つまたは複数のタグ・グループが停止通知フラグが設定されたリスト・エレメントに到達するまで、動作はステップ1420に戻る。到達した場合、MFC DMAリスト・コマンドを再始動するために、停止されたタグ・グループに対応するタグ・グループ番号で、MFC書き込みリスト停止通知タグ確認応答チャネルに対して書き込み(wrch)が実行される(ステップ1440)。   If not, operation returns to step 1420 until one or more tag groups of interest reach the list element with the stop notification flag set. If so, a write (wrch) is performed on the MFC write list stop notification tag acknowledge channel with the tag group number corresponding to the stopped tag group to restart the MFC DMA list command. (Step 1440).

リスト停止通知タグ・グループ状況を待つかまたはリスト停止通知タグ・グループ状況についてポーリングすることに対する代替策は、SPUイベント機能を使用することである。この手順は、典型的には、MFC DMAリスト・コマンドが実行されている間にSPUプログラムによって他の作業を実行できるときに使用される。この手順は、たとえば、図31に概要が示されている通りである。   An alternative to waiting for list stop notification tag group status or polling for list stop notification tag group status is to use the SPU event function. This procedure is typically used when other work can be performed by the SPU program while the MFC DMA list command is being executed. This procedure is, for example, as outlined in FIG.

図31に示されている通り、この手順は、任意の保留MFC DMAリスト・コマンド停止通知イベントをクリアすることから始まる(ステップ1510)。これは、たとえば、「1」という値でSPU書き込みイベント確認応答チャネルに書き込む(wrch)ことにより、実施できることである。MFC DMAリスト・コマンド停止通知イベントは、SPU書き込みイベント・マスク・チャネルのSnビットに「1」を書き込むことにより使用可能になる(ステップ1520)。停止通知フラグが設定されたリスト・エレメントを有するMFC DMAリスト・コマンドが発行される(ステップ1530)。   As shown in FIG. 31, the procedure begins with clearing any pending MFC DMA list command stop notification event (step 1510). This can be done, for example, by writing to the SPU write event acknowledgment channel with a value of “1”. The MFC DMA list command stop notification event is enabled by writing “1” to the Sn bit of the SPU write event mask channel (step 1520). An MFC DMA list command having a list element with a stop notification flag set is issued (step 1530).

使用可能なイベントが発生するのを待つために、SPU読み取りイベント状況チャネルからの読み取り(rdch)を実行することができる(ステップ1540)。この読み取りにより、使用可能なイベントが発生するまで、SPUの実行が停止される。代わって、カウントが「1」として返されるまで特定のタグ・イベントについてポーリングするために、SPU読み取りイベント状況チャネルに関連するカウントの読み取り(rchcht)のカウントが除去される。   To wait for an available event to occur, a read (rdch) from the SPU read event status channel may be performed (step 1540). This reading stops the execution of the SPU until a usable event occurs. Instead, the count read count (rchcht) associated with the SPU read event status channel is removed to poll for a specific tag event until the count is returned as "1".

使用可能なイベントが発生したかどうかについて判別が行われる(ステップ1550)。発生していない場合、動作はステップ1540に戻る。使用可能なイベントが発生した場合、DMAリスト停止通知イベントが発生したかどうかについて判別が行われる(ステップ1560)。DMAリスト停止通知イベントが発生していない場合、動作はステップ1540に戻る。   A determination is made as to whether a usable event has occurred (step 1550). If not, operation returns to step 1540. If an available event has occurred, a determination is made as to whether a DMA list stop notification event has occurred (step 1560). If no DMA list stop notification event has occurred, operation returns to step 1540.

DMAリスト停止通知イベントが発生した場合、1つまたは複数のどのタグ・グループがそのイベントを引き起こしたかを判別するためにMFC読み取りリスト停止通知タグ状況チャネルからの読み取り(rdch)が実行される(ステップ1570)。次に、MFC DMAリスト・コマンドを再開するために、停止されたタグ・グループに対応するタグ・グループ番号でMFC書き込みリスト停止通知タグ確認応答チャネルへの書き込み(wrch)が行われる(ステップ1580)。   If a DMA list stop notification event has occurred, a read (rdch) from the MFC read list stop notification tag status channel is performed to determine which tag group or groups caused the event (step rdch). 1570). Next, in order to restart the MFC DMA list command, writing to the MFC write list stop notification tag confirmation response channel (wrch) is performed with the tag group number corresponding to the stopped tag group (step 1580). .

MFC書き込みマルチソース同期要求チャネル
MFC書き込みマルチソース同期要求チャネルの詳細は図32に示されている。MFC書き込みマルチソース同期要求チャネルは、MFCマルチソース同期機能の一部であり、関連MFCに送信された未解決転送の追跡をMFCに開始させる。MFCマルチソース同期機能は、プロセッサまたは装置が主記憶装置アドレス・ドメインからの同期を制御できるようにするMFCマルチソース同期レジスタと、SPUがローカル記憶アドレス・ドメインからの同期を制御できるようにするMFC書き込みマルチソース同期要求チャネル(MFC_WrMSSyncReq)とを含む。
MFC Write Multi-Source Synchronization Request Channel Details of the MFC Write Multi-Source Synchronization Request Channel are shown in FIG. The MFC write multi-source synchronization request channel is part of the MFC multi-source synchronization function and causes the MFC to start tracking outstanding transfers sent to the associated MFC. The MFC multi-source synchronization function includes an MFC multi-source synchronization register that allows the processor or device to control synchronization from the main storage address domain, and an MFC that allows the SPU to control synchronization from the local storage address domain. And a write multi-source synchronization request channel (MFC_WrMSSyncReq).

MFC書き込みマルチソース同期要求チャネルへの書き込みによって、同期を要求することができる。要求された同期が完了すると、チャネル・カウントは元の「1」に設定され、このチャネルに書き込まれたデータは無視される。このチャネルに対して2回目の書き込みを行うと、1回目の書き込みによって追跡されている未解決転送が完了するまで、SPUは停止される。   Synchronization can be requested by writing to the MFC write multi-source synchronization request channel. When the requested synchronization is complete, the channel count is set to the original “1” and data written to this channel is ignored. When the second write is performed on this channel, the SPU is stopped until the outstanding transfer tracked by the first write is completed.

MFC書き込みマルチソース同期要求チャネルを使用するために、プログラムはMFC書き込みマルチソース同期要求チャネルに書き込み、次にMFC書き込みマルチソース同期要求チャネルが使用可能になるのを待つ、すなわち、チャネル・カウントが元の「1」に設定される時期を待つ。ソフトウェアは、このチャネルに関するカウントを「1」という値に初期設定する。このチャネルは、書き込みブロッキング使用可能であり、最大カウントは「1」である。   To use the MFC write multi-source sync request channel, the program writes to the MFC write multi-source sync request channel and then waits for the MFC write multi-source sync request channel to be available, i.e. the channel count is original Wait for the time set to “1”. The software initializes the count for this channel to a value of “1”. This channel is write blocking enabled and has a maximum count of “1”.

メールボックス機能
MFCと通信するためのチャネルに加えて、本発明のチャネル・インターフェースは、SPU内に設けられたメールボックス機能と通信するためのチャネルをさらに提供する。MFCは、SPUとその他のプロセッサおよび装置との間に1組のメールボックス・キューを提供する。各メールボックス・キューには、SPUチャネルならびに対応するMMIOレジスタが割り当てられている。SPUソフトウェアは、SPUチャネル命令を使用することにより、メールボックス・キューにアクセスする。その他のプロセッサおよび装置は、MMIOレジスタの1つを使用することにより、メールボックス・キューにアクセスする。キューに加えて、MFCは、メールボックスに関するキュー状況、メールボックス割り込み、およびSPUイベント通知を提供する。MMIOレジスタ、チャネル、状況、割り込み、メールボックス・キュー、およびイベントは、ひとまとめにして「メールボックス機能」と呼ばれる。前述の通り、メールボックス機能は、図2のMFCレジスタ・ユニット250内に設けられる。
Mailbox Function In addition to the channel for communicating with the MFC, the channel interface of the present invention further provides a channel for communicating with the mailbox function provided in the SPU. The MFC provides a set of mailbox queues between the SPU and other processors and devices. Each mailbox queue is assigned an SPU channel as well as a corresponding MMIO register. SPU software accesses the mailbox queue by using SPU channel instructions. Other processors and devices access the mailbox queue by using one of the MMIO registers. In addition to queues, the MFC provides queue status, mailbox interrupts, and SPU event notifications for mailboxes. MMIO registers, channels, status, interrupts, mailbox queues, and events are collectively referred to as “mailbox functions”. As described above, the mailbox function is provided in the MFC register unit 250 of FIG.

SPUから他のプロセッサまたは他の装置に情報を送信するために、SPUアウトバウンド・メールボックス・キューおよびSPUアウトバウンド割り込みメールボックス・キューという2つのメールボックス・キューがMFCによって提供される。これらのメールボックス・キューは、PPEにショート・メッセージ(たとえば、戻りコードまたは状況)を送信するためのものである。書き込みチャネル(wrch)命令を使用してSPUによってこれらのキューの1つに書き込まれたデータは、対応するMMIOレジスタを読み取ることにより、どのプロセッサまたは装置にとっても使用可能である。   To send information from the SPU to other processors or other devices, two mailbox queues are provided by the MFC: the SPU outbound mailbox queue and the SPU outbound interrupt mailbox queue. These mailbox queues are for sending short messages (eg, return codes or status) to the PPE. Data written to one of these queues by the SPU using a write channel (wrch) instruction is available to any processor or device by reading the corresponding MMIO register.

SPU書き込みアウトバウンド割り込みメールボックス・チャネルに送信された書き込みチャネル(wrch)命令により、システム内のプロセッサまたは他の装置に割り込みを送信することもできる。これらのキューのいずれか一方(SPUアウトバウンド・メールボックスまたはSPUアウトバウンド割り込みメールボックス・レジスタ)から読み取られたMMIOはSPUイベントを設定することができ、次にこれがSPU割り込みを引き起こす。   An interrupt can also be sent to a processor or other device in the system by a write channel (wrch) instruction sent to the SPU write outbound interrupt mailbox channel. An MMIO read from either one of these queues (SPU outbound mailbox or SPU outbound interrupt mailbox register) can set an SPU event, which in turn causes an SPU interrupt.

外部プロセッサまたはその他の装置のいずれか一方がSPUに情報を送信するために、1つのメールボックス・キュー、すなわち、SPUインバウンド・メールボックス・キューが提供される。このメールボックス・キューは、PPEによって書き込まれるためのものである。しかし、他のプロセッサ、SPU、または他の装置もこのメールボックス・キューを使用することができる。MMIO書き込みを使用してプロセッサまたは他の装置によってこのキューに書き込まれたデータは、SPU読み取りインバウンド・メールボックス・チャネルを使用することにより、SPUにとって使用可能である。SPUインバウンド・メールボックス・レジスタへのMMIO書き込みはSPUイベントを設定することができ、次にこれがSPU割り込みを引き起こすことができる。   One mailbox queue, ie, the SPU inbound mailbox queue, is provided for either the external processor or other device to send information to the SPU. This mailbox queue is for writing by the PPE. However, other mailboxes, SPUs, or other devices can also use this mailbox queue. Data written to this queue by a processor or other device using MMIO writes is available to the SPU by using the SPU read inbound mailbox channel. An MMIO write to the SPU inbound mailbox register can set an SPU event, which in turn can trigger an SPU interrupt.

SPUアウトバウンド・メールボックス・レジスタは、対応するSPUアウトバウンド・メールボックス・キューから32ビットのデータを読み取るために使用される。SPUアウトバウンド・メールボックス・レジスタは、SPUアウトバウンド・メールボックス・キューにデータを書き込むために対応するSPU書き込みアウトバウンド・メールボックス・チャネルを有する。SPUアウトバウンド・メールボックス・キューに送信された書き込みチャネル(wrch)命令は、他のプロセッサまたは他の装置が読み取るために、その命令内に指定された32ビットの命令をSPUアウトバウンド・メールボックス・キューにロードする。SPUアウトバウンド・メールボックス・キューが満杯である場合、このメールボックス・レジスタから読み取られたMMIOが発生するまで、このキューに送信された書き込みチャネル(wrch)命令上でSPUが停止する。   The SPU outbound mailbox register is used to read 32 bits of data from the corresponding SPU outbound mailbox queue. The SPU outbound mailbox register has a corresponding SPU write outbound mailbox channel for writing data to the SPU outbound mailbox queue. A write channel (wrch) instruction sent to the SPU outbound mailbox queue reads the 32-bit instruction specified in that instruction for reading by other processors or other devices. To load. If the SPU outbound mailbox queue is full, the SPU stops on the write channel (wrch) instruction sent to this queue until an MMIO read from this mailbox register occurs.

このレジスタのMMIO読み取りは必ず、それがSPUによって書き込まれた順序で情報を返す。空のSPUアウトバウンド・メールボックス・キューからの読み取り時に返される情報は未定義である。SPUアウトバウンド・メールボックス・キュー内の項目の数(またはキュー項目数)は実装依存である。   An MMIO read of this register always returns information in the order in which it was written by the SPU. The information returned when reading from an empty SPU outbound mailbox queue is undefined. The number of items (or the number of queue items) in the SPU outbound mailbox queue is implementation dependent.

SPUメールボックス状況レジスタのMMIO読み取りは、メールボックス・キューの状況を返す。SPUアウトバウンド・メールボックス・キュー内の有効キュー項目の数は、SPUメールボックス状況レジスタのSPU_Out_Mbox_Countフィールドに示される。SPUアウトバウンド・メールボックス・レジスタのMMIO読み取りは、保留SPUアウトバウンド・メールボックス使用可能イベントを設定する。メールボックス・キュー内に残っているデータの量が実装依存しきい値未満であり、この条件が使用可能である(すなわち、SPU_WrEventMask[Le]が「1」に設定される)場合、SPU読み取りイベント状況チャネルが更新され(すなわち、SPU_RdEventStat[Le]が「1」に設定される)、そのチャネル・カウントが「1」に設定される。これにより、SPUアウトバウンド割り込みメールボックス使用可能イベントが引き起こされる。   A MMIO read of the SPU mailbox status register returns the status of the mailbox queue. The number of valid queue items in the SPU outbound mailbox queue is indicated in the SPU_Out_Mbox_Count field of the SPU mailbox status register. A MMIO read of the SPU outbound mailbox register sets a pending SPU outbound mailbox available event. SPU read event if the amount of data remaining in the mailbox queue is less than the implementation dependent threshold and this condition is available (ie, SPU_WrEventMask [Le] is set to “1”) The status channel is updated (ie, SPU_RdEventStat [Le] is set to “1”) and its channel count is set to “1”. This causes an SPU outbound interrupt mailbox available event.

SPUインバウンド・メールボックス・レジスタは、対応するSPUインバウンド・メールボックス・キューに32ビットのデータを書き込むために使用される。SPUインバウンド・メールボックス・キューは、このキューからデータを読み取るために対応するSPU読み取りインバウンド・メールボックス・チャネルを有する。SPU読み取りインバウンド・メールボックス・チャネルの読み取りチャネル(rdch)命令は、SPUインバウンド・メールボックス・キューから読み取りチャネル(rdch)命令によって指定されたSPUレジスタに32ビットのデータをロードする。SPUは空のメールボックスから読み取ることはできない。SPUインバウンド・メールボックス・キューが空である場合、データがこのメールボックスに書き込まれるまで、このチャネルに対する読み取りチャネル(rdch)命令上でSPUが停止する。このチャネルに対する読み取りチャネル(rdch)命令は必ず、それがPPEまたは他のプロセッサおよび装置によって書き込まれた順序で情報を返す。   The SPU inbound mailbox register is used to write 32-bit data to the corresponding SPU inbound mailbox queue. The SPU inbound mailbox queue has a corresponding SPU read inbound mailbox channel to read data from this queue. The read channel (rdch) instruction for the SPU read inbound mailbox channel loads 32-bit data from the SPU inbound mailbox queue into the SPU register specified by the read channel (rdch) instruction. The SPU cannot read from an empty mailbox. If the SPU inbound mailbox queue is empty, the SPU stops on a read channel (rdch) instruction for this channel until data is written to this mailbox. A read channel (rdch) instruction for this channel always returns information in the order in which it was written by the PPE or other processor and device.

このキュー内の項目の数(またはキュー項目数)は実装依存である。SPUメールボックス状況レジスタのMMIO読み取りは、メールボックス・キューの状態を返す。SPUメールボックス・キュー内の使用可能キュー位置の数は、SPUメールボックス状況レジスタのSPU_In_Mbox_Countフィールド(すなわち、SPU_Mbox_Stat[SPU_In_Mbox_Count])に示される。   The number of items in this queue (or the number of queue items) is implementation dependent. A MMIO read of the SPU mailbox status register returns the status of the mailbox queue. The number of available queue positions in the SPU mailbox queue is indicated in the SPU_In_Mbox_Count field of the SPU mailbox status register (ie, SPU_Mbox_Stat [SPU_In_Mbox_Count]).

ソフトウェアは、SPUメールボックスのオーバーランを回避するために、SPU_In_Mboxに書き込む前に、SPUメールボックス状況レジスタをチェックする。SPUインバウンド・メールボックス・レジスタのMMIO書き込みは、保留SPUメールボックス・イベントを設定する。使用可能(すなわち、SPU_WrEventMask[Mbox]=「1」)である場合、SPU読み取りイベント状況チャネルが更新され、そのチャネル・カウントが「1」に設定され、これはSPUインバウンド・メールボックス使用可能イベントを引き起こす。   The software checks the SPU mailbox status register before writing to SPU_In_Mbox to avoid SPU mailbox overruns. A MMIO write to the SPU inbound mailbox register sets a pending SPU mailbox event. If enabled (ie, SPU_WrEventMask [Mbox] = “1”), the SPU read event status channel is updated and its channel count is set to “1”, which sets the SPU inbound mailbox available event cause.

SPUメールボックス状況レジスタは、SPUと対応するSPE内のPPEとの間のメールボックス・キューの現行状態を含む。このレジスタの読み取りは、メールボックス・キューの状態に対する効果がまったくない。   The SPU mailbox status register contains the current state of the mailbox queue between the SPU and the PPE in the corresponding SPE. Reading this register has no effect on mailbox queue status.

SPUメールボックス・チャネル
上述の通り、MFCによって提供されるメールボックス機能は、SPU書き込みアウトバウンド・メールボックス・チャネル、SPU書き込みアウトバウンド割り込みメールボックス・チャネル、およびSPU読み取りインバウンド・メールボックス・チャネルを含む、複数のSPUメールボックス・チャネルを含む。これらのSPUメールボックス・チャネルはブロッキングとして定義され、すなわち、チャネルが満杯であるとき(書き込みブロッキング)またはデータが使用不能であるとき(読み取りブロッキング)にSPUを停止する。チャネルのブロッキング方法は、アプリケーションが実行すべき他の作業をまったく持たないときに省力化のために非常に有益である。本質的に、空間が解放されるかまたはデータが使用可能になるまで、プロセッサを低電力状態に置くことができる。
SPU Mailbox Channel As noted above, the mailbox functions provided by MFC include multiple, including SPU write outbound mailbox channels, SPU write outbound interrupt mailbox channels, and SPU read inbound mailbox channels. Includes SPU mailbox channels. These SPU mailbox channels are defined as blocking, that is, stop the SPU when the channel is full (write blocking) or when data is unavailable (read blocking). Channel blocking methods are very useful for labor saving when the application has no other work to do. In essence, the processor can be placed in a low power state until space is freed or data is available.

これらのチャネルはブロッキングであり、したがって、電力を節約するという恩恵を得るが、これらのチャネルにアクセスすると、不明確な期間の間、SPUを停止させる可能性がある。ソフトウェアは、以下に論ずるようにSPUイベント機能を使用することによるかまたはメールボックス・チャネルに関連するチャネル・カウントを読み取ることにより、SPUの停止を回避することができる。   These channels are blocking and thus benefit from saving power, but accessing these channels may cause the SPU to stop for an indefinite period of time. The software can avoid SPU outages by using the SPU event function as discussed below or by reading the channel count associated with the mailbox channel.

SPU書き込みアウトバウンド・メールボックス・チャネル
図33は、本発明の模範的な一実施形態によるSPU書き込みアウトバウンド・メールボックス・チャネルの詳細を示している。このチャネルに送信された書き込みチャネル命令(wrch)は、SPU書き込みアウトバウンド・メールボックス・キューにデータを書き込む。SPUによりこのチャネルに書き込まれたデータは、SPUアウトバウンド・メールボックス・レジスタのMMIO読み取りのために使用可能である。また、このチャネルへの書き込みチャネル(wrch)により、関連チャネル・カウントが「1」だけ減分される。満杯のSPU書き込みアウトバウンド・メールボックス・キューに書き込むと、SPUアウトバウンド・メールボックス・レジスタが読み取られ、SPU書き込みアウトバウンド・メールボックス・キュー内の位置が解放されるまで、SPU実行が停止される。
SPU Write Outbound Mailbox Channel FIG. 33 shows details of an SPU write outbound mailbox channel according to an exemplary embodiment of the invention. A write channel instruction (wrch) sent to this channel writes data to the SPU write outbound mailbox queue. Data written to this channel by the SPU is available for MMIO reading of the SPU outbound mailbox register. The write channel (wrch) to this channel also decrements the associated channel count by “1”. When writing to a full SPU write outbound mailbox queue, the SPU execution is stopped until the SPU outbound mailbox register is read and the position in the SPU write outbound mailbox queue is released.

停止条件を回避するために、チャネル書き込みを発行する前に、SPU書き込みアウトバウンド・メールボックス・キュー内にスロットが存在することを保証するためにこのチャネルに関連するチャネル・カウントを読み取ることができる。代わって、満杯であると判別された場合、SPU書き込みアウトバウンド・メールボックス・キュー内のスロットの可用性を通知するためにSPUアウトバウンド・メールボックス使用可能イベントを使用することができる。   To avoid a stop condition, before issuing a channel write, the channel count associated with this channel can be read to ensure that a slot exists in the SPU write outbound mailbox queue. Alternatively, if it is determined that it is full, the SPU outbound mailbox availability event can be used to signal the availability of slots in the SPU write outbound mailbox queue.

SPU書き込みアウトバウンド・メールボックス・キューが満杯であるときに、このチャネルに関連するチャネル・カウントを読み取ると、「0」という値が返される。ゼロ以外の値は、SPU書き込みアウトバウンド・メールボックス・キュー内で自由な32ビット・ワードの数を示す。   Reading the channel count associated with this channel when the SPU write outbound mailbox queue is full returns a value of "0". A non-zero value indicates the number of free 32-bit words in the SPU write outbound mailbox queue.

特権ソフトウェアは、SPU書き込みアウトバウンド・メールボックス・チャネルのカウントをSPU書き込みアウトバウンド・メールボックス・キューの項目数に初期設定する。このチャネルは書き込みブロッキングである。このチャネルに関する最大カウントは実装依存であり、SPU書き込みアウトバウンド・メールボックス・キューの項目数(すなわち、使用可能なスロットの数)でなければならない。   The privileged software initializes the SPU write outbound mailbox channel count to the number of entries in the SPU write outbound mailbox queue. This channel is write blocking. The maximum count for this channel is implementation dependent and must be the number of entries in the SPU write outbound mailbox queue (ie, the number of available slots).

SPU書き込みアウトバウンド割り込みメールボックス・チャネル
図34は、本発明の模範的な一実施形態によるSPU書き込みアウトバウンド割り込みメールボックス・チャネルの詳細を示している。このチャネルへの書き込みチャネル(wrch)命令は、SPU書き込みアウトバウンド割り込みメールボックス・キューにデータを書き込む。SPUによってこのチャネルに書き込まれたデータは、SPUアウトバウンド割り込みメールボックス・レジスタのMMIO読み取りにとって使用可能なものになる。
SPU Write Outbound Interrupt Mailbox Channel FIG. 34 shows details of an SPU write outbound interrupt mailbox channel according to an exemplary embodiment of the invention. A write channel (wrch) instruction to this channel writes data to the SPU write outbound interrupt mailbox queue. Data written to this channel by the SPU will be available for MMIO reads of the SPU outbound interrupt mailbox register.

また、このSPU書き込みアウトバウンド・メールボックス・チャネルへの書き込みチャネル(wrch)命令により、関連カウントが「1」だけ減分される。満杯のSPU書き込みアウトバウンド割り込みメールボックス・キューに書き込むと、SPUアウトバウンド割り込みメールボックス・レジスタが読み取られ、SPU書き込みアウトバウンド割り込みメールボックス・キュー内の位置が解放されるまで、SPU実行が停止される。   Also, the write channel (wrch) command to the SPU write outbound mailbox channel decrements the associated count by “1”. When writing to a full SPU write outbound interrupt mailbox queue, the SPU outbound interrupt mailbox register is read and SPU execution is stopped until the position in the SPU write outbound interrupt mailbox queue is released.

停止条件を回避するために、チャネル書き込みを発行する前に、SPU書き込みアウトバウンド割り込みメールボックス・キュー内にスロットが存在することを保証するためにこのチャネルに関連するチャネル・カウントを読み取ることができる。代わって、前に満杯であった場合、SPU書き込みアウトバウンド割り込みメールボックス・キュー内のスロットの可用性を通知するためにSPUアウトバウンド割り込みメールボックス使用可能イベントを使用することができる。また、SPU書き込みアウトバウンド割り込みメールボックス・チャネルへの書き込みチャネル(wrch)命令により、プロセッサまたはその他の装置に割り込みが送信される。割り込みおよび前に発行されたMFCコマンドの順序付けはまったく行われない。   To avoid a stop condition, before issuing a channel write, the channel count associated with this channel can be read to ensure that there is a slot in the SPU write outbound interrupt mailbox queue. Alternatively, if it was previously full, the SPU Outbound Interrupt Mailbox Enable event can be used to signal the availability of slots in the SPU Write Outbound Interrupt Mailbox queue. An interrupt is also sent to the processor or other device by a write channel (wrch) instruction to the SPU write outbound interrupt mailbox channel. There is no ordering of interrupts and previously issued MFC commands.

SPU書き込みアウトバウンド割り込みメールボックス・キューが満杯であるときに、このチャネルに関連するチャネル・カウントを読み取ると、「0」という値が返される。ゼロ以外のカウント値は、このキュー内で自由な32ビット・ワードの数を有する。   Reading the channel count associated with this channel when the SPU write outbound interrupt mailbox queue is full returns a value of "0". A non-zero count value has the number of free 32-bit words in this queue.

特権ソフトウェアは、このチャネルのカウントをSPU書き込みアウトバウンド割り込みメールボックス・キューの項目数に初期設定する。このチャネルは書き込みブロッキングである。このチャネルに関する最大カウントは実装依存であり、SPU書き込みアウトバウンド割り込みメールボックス・キューの項目数(すなわち、使用可能なスロットの数)でなければならない。   The privileged software initializes this channel count to the number of entries in the SPU write outbound interrupt mailbox queue. This channel is write blocking. The maximum count for this channel is implementation dependent and must be the number of entries in the SPU write outbound interrupt mailbox queue (ie, the number of available slots).

SPU読み取りインバウンド・メールボックス・チャネル
図35は、本発明の模範的な一実施形態によるSPU読み取りインバウンド・メールボックス・チャネルの詳細を示している。このチャネルから読み取ると、SPU読み取りインバウンド・メールボックス・キュー内の次のデータが返される。データは、SPUインバウンド・メールボックス・レジスタへの書き込みを発行するプロセッサまたは装置によってSPU読み取りインバウンド・メールボックス・キュー内に置かれる。
SPU Read Inbound Mailbox Channel FIG. 35 shows details of an SPU read inbound mailbox channel according to an exemplary embodiment of the invention. Reading from this channel returns the next data in the SPU read inbound mailbox queue. Data is placed in the SPU read inbound mailbox queue by a processor or device that issues a write to the SPU inbound mailbox register.

このSPU読み取りインバウンド・メールボックス・チャネルから読み取ると、関連カウントが「1」だけ減分される。空のメールボックスから読み取ると、SPUインバウンド・メールボックス・レジスタが書き込まれ、SPU読み取りインバウンド・メールボックス・キュー内にデータ項目が配置されるまで、SPU実行が停止される。停止条件を回避するために、チャネル読み取りを発行する前に、SPU読み取りインバウンド・メールボックス・キュー内にデータが存在することを保証するためにこのチャネルに関連するチャネル・カウントを読み取ることができる。代わって、SPU読み取りインバウンド・メールボックス・キュー内のデータの可用性を通知するためにSPUインバウンド・メールボックス使用可能イベントを使用することができる。   Reading from this SPU read inbound mailbox channel decrements the associated count by “1”. When reading from an empty mailbox, the SPU inbound mailbox register is written and SPU execution is stopped until a data item is placed in the SPU read inbound mailbox queue. To avoid a stop condition, before issuing a channel read, the channel count associated with this channel can be read to ensure that data is present in the SPU read inbound mailbox queue. Alternatively, the SPU inbound mailbox availability event can be used to signal the availability of data in the SPU read inbound mailbox queue.

メールボックスが空である場合、チャネル・カウントを読み取ると(rchcnt)、「0」という値が返される。rchcntの結果がゼロ以外である場合、メールボックスは、PPEによって書き込まれたが、SPUによって読み取られていない情報を含む。   If the mailbox is empty, reading the channel count (rchcnt) returns a value of “0”. If the rchcnt result is non-zero, the mailbox contains information that was written by the PPE but not read by the SPU.

SPU読み取りインバウンド・メールボックス・チャネルのチャネル・カウントは特権ソフトウェアによって「0」に初期設定される。最大カウントは実装依存である。このチャネルは読み取りブロッキングである。   The channel count of the SPU read inbound mailbox channel is initialized to “0” by privileged software. The maximum count is implementation dependent. This channel is read blocking.

SPU信号通知機能
MFCは、システム内の他のプロセッサおよび装置からSPUにバッファ完了フラグなどの信号を送信するために使用されるSPU信号通知機能を提供する。この信号通知機能は、たとえば、図2のMFCレジスタ・ユニット250内に設けることができる。
SPU Signal Notification Function The MFC provides an SPU signal notification function that is used to send signals such as buffer completion flags from other processors and devices in the system to the SPU. This signal notification function can be provided, for example, in the MFC register unit 250 of FIG.

BPAは、SPU信号通知1およびSPU信号通知2という2つの独立信号通知機能を提供する。各機能は、SPU信号通知1レジスタとSPU信号通知1チャネル、SPU信号通知2レジスタとSPU信号通知2チャネルという1つのレジスタと1つのチャネルから構成される。   BPA provides two independent signal notification functions, SPU signal notification 1 and SPU signal notification 2. Each function is composed of one register and one channel, an SPU signal notification 1 register and an SPU signal notification 1 channel, an SPU signal notification 2 register and an SPU signal notification 2 channel.

信号が送信されるSPUに関連する信号通知レジスタの有効アドレスを有する1組の送信信号コマンドを使用して、SPUによって信号が発行される。送信信号コマンドをサポートしないPPEおよびその他の装置は、信号が送信される予定のSPUに関連するSPU信号通知レジスタへのMMIO書き込みを実行することにより、信号コマンドの送信をシミュレートする。   A signal is issued by the SPU using a set of transmit signal commands having the effective address of the signal notification register associated with the SPU to which the signal is transmitted. PPE and other devices that do not support transmit signal commands simulate the transmission of signal commands by performing an MMIO write to the SPU signal notification register associated with the SPU to which the signal is to be transmitted.

信号通知機能のそれぞれは、1対1シグナリング環境で有用な上書きモードまたは多対1シグナリング環境で有用な論理和モードのいずれか一方に応じてプログラミングすることができる。各チャネルごとのモードはSPU構成レジスタに設定される。   Each of the signaling functions can be programmed according to either an overwrite mode useful in a one-to-one signaling environment or an OR mode useful in a many-to-one signaling environment. The mode for each channel is set in the SPU configuration register.

上書きモードに応じてプログラミングされたシグナリング・レジスタをターゲットとする送信信号コマンドまたはMMIOのいずれか一方を実行すると、関連チャネルの内容をシグナリング動作のデータに設定する。また、これは、対応するチャネル・カウントを「1」に設定する。論理和モードでは、シグナリング動作のデータはチャネルの現行内容との論理和が取られ、対応するカウントは「1」という値に設定される。   Executing either a transmit signal command or MMIO targeting a signaling register programmed according to the overwrite mode sets the contents of the associated channel to the data of the signaling operation. It also sets the corresponding channel count to “1”. In the OR mode, the signaling operation data is ORed with the current contents of the channel, and the corresponding count is set to a value of “1”.

加えて、信号通知レジスタは、分離ロードを実行するときに、イメージの有効アドレスとして使用される。これらの場合、SPU信号通知1レジスタは64ビットの有効アドレスの上位32ビットを含み、SPU信号通知2レジスタは最下位32ビットを含む。ソフトウェアは、分離ロード要求の適切な動作のために有効アドレスを設定する前に上書きモードのSPU信号通知機能を備えていなければならない。   In addition, the signal notification register is used as the effective address of the image when performing an isolated load. In these cases, the SPU signal notification 1 register contains the upper 32 bits of the 64-bit effective address, and the SPU signal notification 2 register contains the least significant 32 bits. The software must have an SPU signal notification function in overwrite mode before setting the effective address for proper operation of the separate load request.

SPUシグナリング・チャネル
SPUシグナリング・チャネルは、SPU信号通知機能のPPE部分である。このチャネルは、システム内の他のプロセッサおよび他の装置からの信号を読み取るために使用される。シグナリング・チャネルは、読み取りブロッキングとして構成され、最大カウントは「1」である。読み取りチャネル(rdch)命令がこれらのチャネルの1つに送信され、関連チャネル・カウントが「1」であるとき、そのチャネルおよび関連カウントの現行内容は「0」にリセットされる。読み取りチャネル(rdch)命令がこれらのチャネルの1つに送信され、チャネル・カウントが「0」であるとき、プロセッサまたは装置が関連レジスタへのMMIO書き込みを実行するまでSPUは停止する。
SPU signaling channel The SPU signaling channel is the PPE part of the SPU signaling function. This channel is used to read signals from other processors and other devices in the system. The signaling channel is configured as read blocking with a maximum count of “1”. When a read channel (rdch) instruction is sent to one of these channels and the associated channel count is “1”, the current contents of that channel and associated count are reset to “0”. When a read channel (rdch) instruction is sent to one of these channels and the channel count is “0”, the SPU stops until the processor or device performs an MMIO write to the associated register.

SPU信号通知チャネル
図36は、本発明の模範的な一実施形態によるSPU信号通知チャネルの詳細を示している。信号通知チャネルは、SPU信号通知1または2チャネルにすることができる。SPU信号通知チャネルに送信された読み取りチャネル(rdch)命令は、信号制御ワード1の32ビット値を返し、読み取られたときに設定された任意のビットをアトミック式にリセットする。いかなる信号も保留中ではない場合、信号が発行されるまで、このチャネルからの読み取りによってSPUが停止する。いかなる信号も保留中ではない場合、このチャネルに送信された読み取りチャネル・カウント(rchcnt)命令は「0」を返す。未読信号が保留中である場合、それは「1」を返す。
SPU Signal Notification Channel FIG. 36 shows details of an SPU signal notification channel according to an exemplary embodiment of the present invention. The signaling channel can be SPU signaling 1 or 2 channels. A read channel (rdch) instruction sent to the SPU signaling channel returns the 32-bit value of signal control word 1 and resets any bits set when read to an atomic expression. If no signal is pending, reading from this channel stops the SPU until a signal is issued. If no signal is pending, the read channel count (rchcnt) instruction sent to this channel returns “0”. If an unread signal is pending, it returns “1”.

特権ソフトウェアは、このチャネルに関するカウントを「0」という値に初期設定する。このチャネルは読み取りブロッキング使用可能であり、最大カウントは「1」である。   The privileged software initializes the count for this channel to a value of “0”. This channel is enabled for read blocking and the maximum count is “1”.

SPUデクリメンタ
各SPUは、32ビットのデクリメンタを含む。MFC制御レジスタ内で使用可能である場合、MFC_CNTL[Dh]が「0」に設定されて書き込まれる。書き込みチャネル(wrch)命令がSPU書き込みデクリメンタ・チャネルに対して発行されると、SPUデクリメンタが始動する。以下に記載するプログラム・シーケンスに従うか、またはMFC_CNTL[Dh]が「1」に設定されてMFC制御レジスタが書き込まれると、デクリメンタが停止する。デクリメンタの現行実行状況は、MFC制御レジスタ(すなわち、MFC_CNTL[Ds])で入手可能である。デクリメンタを停止するために、デクリメンタ・イベントが保留中である必要はない。
SPU decrementer Each SPU includes a 32-bit decrementer. If available in the MFC control register, MFC_CNTL [Dh] is set to “0” and written. The SPU decrementer is started when a write channel (wrch) instruction is issued to the SPU write decrementer channel. The decrementer stops when the program sequence described below is followed or when the MFC_CNTL [Dh] is set to “1” and the MFC control register is written. The current execution status of the decrementer is available in the MFC control register (ie, MFC_CNTL [Ds]). A decrementer event need not be pending to stop the decrementer.

デクリメンタを管理するために2つのチャネルが割り当てられ、1つはデクリメンタ値を設定するためのものであり、1つはデクリメンタの現行内容を読み取るためのものである。最上位ビット(ビット0)が「0」から「1」に変化すると、デクリメンタ・イベントが発生する。   Two channels are allocated to manage the decrementer, one for setting the decrementer value and one for reading the current contents of the decrementer. When the most significant bit (bit 0) changes from “0” to “1”, a decrementer event occurs.

SPU書き込みデクリメンタ・チャネル
図37は、本発明の模範的な一実施形態によるSPU書き込みデクリメンタ・チャネルの詳細を示している。SPU書き込みデクリメンタ・チャネルは、32ビット値をデクリメンタにロードするために使用される。デクリメンタにロードされた値は、書き込みチャネル(wrch)命令とデクリメンタ・イベントとの間の経過時間を決定する。デクリメンタの最上位ビット(msb)が「0」から「1」に変化すると、イベントが発生する。デクリメンタにロードされた値によってmsbにおいて「0」から「1」への変化が起こった場合、イベントが直ちに通知される。デクリメンタを「0」という値に設定すると、単一デクリメンタ間隔後にイベントが発生する。
SPU Write Decrementer Channel FIG. 37 shows details of an SPU write decrementer channel according to an exemplary embodiment of the invention. The SPU write decrementer channel is used to load a 32-bit value into the decrementer. The value loaded into the decrementer determines the elapsed time between the write channel (wrch) instruction and the decrementer event. When the most significant bit (msb) of the decrementer changes from “0” to “1”, an event occurs. If the value loaded into the decrementer causes a change from “0” to “1” in msb, the event is notified immediately. Setting the decrementer to a value of “0” causes an event to occur after a single decrementer interval.

デクリメンタの状態を適切に保存し復元するために、デクリメンタは、デクリメンタ値を変更する前に停止しなければならない。以下のシーケンスは、新しいデクリメンタ値を設定するための手順の概要を示している。
1.デクリメンタ・イベントを使用不可にするために、SPU書き込みイベント・マスク・チャネルに書き込む。
2.任意の保留イベントを確認し、デクリメンタを停止するために、SPU書き込みイベント確認応答チャネルに書き込む。ステップ1でデクリメンタ・イベントが使用不可になっているので、デクリメンタは停止する。
3.新しいデクリメンタ・カウント値を設定するために、SPU書き込みデクリメンタ・チャネルに書き込む。(注:ステップ2でデクリメンタを停止したので、デクリメンタは始動される。)
4.デクリメンタ・イベントを使用可能にするために、SPU書き込みイベント・マスク・チャネルに書き込む。
5.タイマが期限切れになるのを待つ。
To properly save and restore the decrementer state, the decrementer must stop before changing the decrementer value. The following sequence outlines the procedure for setting a new decrementer value.
1. Write to the SPU write event mask channel to disable the decrementer event.
2. Write to the SPU Write Event Acknowledgment channel to acknowledge any pending events and stop the decrementer. Since the decrementer event is disabled in step 1, the decrementer stops.
3. Write to the SPU write decrementer channel to set a new decrementer count value. (Note: Since the decrementer was stopped in step 2, the decrementer is started.)
4). Write to the SPU write event mask channel to enable the decrementer event.
5. Wait for the timer to expire.

このチャネルは非ブロッキングであり、関連カウントを備えていない。読み取りチャネル・カウント(rchcnt)命令がこのチャネルに送信されると、カウントは必ず「1」として返される。   This channel is non-blocking and has no associated count. When a read channel count (rchcnt) instruction is sent to this channel, the count is always returned as "1".

SPU読み取りデクリメンタ・チャネル
図38は、本発明の模範的な一実施形態によるSPU読み取りデクリメンタ・チャネルの詳細を示している。SPU読み取りデクリメンタ・チャネルは、32ビット・デクリメンタの現行値を読み取るために使用される。デクリメンタ・カウントの読み取りは、デクリメンタの正確さに対する効果がまったくない。デクリメンタを連続読み取りすると、同じ値が返される。
SPU Read Decrementer Channel FIG. 38 shows details of an SPU read decrementer channel according to an exemplary embodiment of the invention. The SPU read decrementer channel is used to read the current value of the 32-bit decrementer. Reading the decrementer count has no effect on the accuracy of the decrementer. Reading the decrementer continuously returns the same value.

このチャネルは非ブロッキングであり、関連カウントを備えていない。読み取りチャネル・カウント(rchcnt)命令がこのチャネルに送信されると、カウントは必ず「1」として返される。   This channel is non-blocking and has no associated count. When a read channel count (rchcnt) instruction is sent to this channel, the count is always returned as "1".

SPU状態管理チャネル
上記に加えて、SPU状態管理チャネルが提供される。これらのSPU状態管理チャネルとしては、1つのSPU読み取りマシン状況チャネルと、2つの割り込み関連状態チャネルとを含む。割り込み関連状態チャネルとしては、SPU書き込み状態保存復元チャネルと、SPU読み取り状態保存復元チャネルとを含む。
SPU state management channel In addition to the above, an SPU state management channel is provided. These SPU state management channels include one SPU read machine status channel and two interrupt related status channels. The interrupt-related state channels include an SPU write state storage / restoration channel and an SPU read state storage / restoration channel.

SPU読み取りマシン状況チャネル
図39は、本発明の模範的な一実施形態によるSPU読み取りマシン状況チャネルの詳細を示している。SPU読み取りマシン状況チャネルは現行SPUマシン状況情報を含む。このチャネルは、分離状況とSPU割り込み状況という2つの状況ビットを含む。この分離状況は、分離または非分離というSPUの現行動作状態を反映する。
SPU Read Machine Status Channel FIG. 39 shows details of the SPU read machine status channel according to an exemplary embodiment of the invention. The SPU read machine status channel contains current SPU machine status information. This channel contains two status bits: isolation status and SPU interrupt status. This separation situation reflects the current operating state of the SPU, separated or non-isolated.

SPU割り込み使用可能状況は、SPU割り込み使用可能の現行状態を反映する。使用可能である場合、任意の使用可能なSPUイベントが存在する場合にSPU割り込みが生成される。   The SPU interrupt enable status reflects the current state of SPU interrupt enable. If available, an SPU interrupt is generated if there are any available SPU events.

このチャネルは非ブロッキングであり、関連カウントを備えていない。読み取りチャネル・カウント(rchcnt)命令がこのチャネルに送信されると、カウントは必ず「1」として返される。   This channel is non-blocking and has no associated count. When a read channel count (rchcnt) instruction is sent to this channel, the count is always returned as "1".

SPU書き込み状態保存復元チャネル
図40は、本発明の模範的な一実施形態によるSPU書き込み状態保存復元チャネルの詳細を示している。このチャネルへの書き込みにより、SPU内の状態保存復元レジスタ0(SRR0)の内容が更新される。このチャネルへの書き込みは、典型的には、ネストされた割り込みがサポートされるときに割り込み状態情報を復元するために使用される。
SPU Write State Save / Restore Channel FIG. 40 shows details of an SPU write state save / restore channel according to an exemplary embodiment of the invention. By writing to this channel, the contents of the state save / restore register 0 (SRR0) in the SPU are updated. This channel write is typically used to restore interrupt state information when nested interrupts are supported.

SPU割り込みが使用可能であるときに、このチャネルには書き込みを行ってはならない。このように実行すると、SRR0の内容が不確定なものになる。同期命令のチャネル・フォームは、このチャネルの書き込み後、SRR0の内容に依存する命令の実行前に、発行しなければならない。   Do not write to this channel when SPU interrupts are enabled. When executed in this way, the contents of SRR0 become indeterminate. The channel form of the synchronous instruction must be issued after writing this channel and before executing instructions that depend on the contents of SRR0.

このチャネルは非ブロッキングであり、関連カウントを備えていない。読み取りチャネル・カウント(rchcnt)命令がこのチャネルに送信されると、カウントは必ず「1」として返される。   This channel is non-blocking and has no associated count. When a read channel count (rchcnt) instruction is sent to this channel, the count is always returned as "1".

SPU読み取り状態保存復元チャネル
図41は、SPU読み取り状態保存復元チャネルの詳細を示している。このチャネルを読み取ると、SPU内の状態保存復元レジスタ0(SRR0)の内容が返される。このチャネルの読み取りは、典型的には、ネストされた割り込みがサポートされるときに割り込み状態情報を保存するために使用される。
SPU Read State Save / Restore Channel FIG. 41 shows details of the SPU read state save / restore channel. Reading this channel returns the contents of state save / restore register 0 (SRR0) in the SPU. This channel read is typically used to store interrupt state information when nested interrupts are supported.

このチャネルは非ブロッキングであり、関連カウントを備えていない。読み取りチャネル・カウント(rchcnt)命令がこのチャネルに送信されると、カウントは必ず「1」として返される。   This channel is non-blocking and has no associated count. When a read channel count (rchcnt) instruction is sent to this channel, the count is always returned as "1".

SPUイベント機能
図42は、SPUイベント機能の論理表現を例示する模範的なブロック図である。図42に示されている通り、エッジ起動型(edge-triggered)イベントは、SPU保留イベント・レジスタ2110内の対応するビットを「1」に設定する。チャネル命令を使用してSPU書き込みイベント確認応答チャネル2120内の対応するビットに「1」を書き込むことにより、SPU保留イベント・レジスタ2110内のイベントが確認される
SPU Event Function FIG. 42 is an exemplary block diagram illustrating a logical representation of the SPU event function. As shown in FIG. 42, an edge-triggered event sets the corresponding bit in the SPU pending event register 2110 to “1”. The event in the SPU pending event register 2110 is acknowledged by writing a “1” to the corresponding bit in the SPU write event acknowledge channel 2120 using the channel instruction.

SPU保留イベント・レジスタ(Pend_Event)2110は内部レジスタである。SPU保留イベント・レジスタ2110は、SPUチャネル・アクセス機能を使用して読み取ることができる。   The SPU pending event register (Pend_Event) 2110 is an internal register. The SPU pending event register 2110 can be read using the SPU channel access function.

チャネル読み取り(rdch)命令によりSPU読み取りイベント状況チャネル2130を読み取ると、SPU書き込みイベント・マスク・チャネル2140内の値とローカルで論理積が取られたSPU保留イベント・レジスタの値が返される。この機能は、使用可能イベントの状況のみをSPUプログラムに提供し、SPU保留イベント・レジスタ2110により特権ソフトウェアは、発生したときにすべてのイベントを確認することができる。SPUコンテキスト保存復元動作のためには、すべてのイベントへのアクセスが必要である。   Reading the SPU read event status channel 2130 with a read channel (rdch) instruction returns the value in the SPU pending event register that is logically ANDed with the value in the SPU write event mask channel 2140. This feature provides only the status of available events to the SPU program, and the SPU pending event register 2110 allows privileged software to acknowledge all events as they occur. Access to all events is required for the SPU context save and restore operation.

SPU書き込みイベント・マスク・チャネル2140に新しい値が書き込まれるかまたはSPU保留イベント・レジスタ2110に新しいイベントが記録されたときに、SPU読み取りイベント状況チャネル2130の内容が変化する。SPU読み取りイベント状況チャネル2130内のビットが「0」から「1」に変化すると、SPU読み取りイベント状況チャネル・カウントが「1」だけ増分される。また、このカウントは、SPU書き込みイベント確認応答チャネル2120に書き込みが送信された後、SPU読み取りイベント状況チャネル2130内に依然としてイベントが設定されている場合にも増分される。チャネル読み取り(rdch)命令を使用してSPU読み取りイベント状況チャネル2130が読み取られると、このカウントは「1」だけ減分される。このカウントは、「1」という値で飽和し、「0」という値未満に減分されない。SPU読み取りイベント状況チャネル・カウントがゼロ以外である場合、使用可能であれば、割り込み条件がSPUに送信される。   The contents of the SPU read event status channel 2130 change when a new value is written to the SPU write event mask channel 2140 or when a new event is recorded in the SPU pending event register 2110. When the bit in SPU read event status channel 2130 changes from “0” to “1”, the SPU read event status channel count is incremented by “1”. This count is also incremented if an event is still set in the SPU read event status channel 2130 after a write is sent to the SPU write event acknowledgment channel 2120. This count is decremented by “1” when the SPU read event status channel 2130 is read using a channel read (rdch) instruction. This count is saturated at a value of “1” and is not decremented below a value of “0”. If the SPU read event status channel count is non-zero, an interrupt condition is sent to the SPU if available.

SPUイベント・チャネル
SPUプログラムは、いくつかのSPUイベント・チャネルを使用してイベントをモニターすることができる。これらのSPUイベント・チャネルとしては、SPU読み取りイベント状況チャネル、SPU書き込みイベント・マスク・チャネル、SPU読み取りイベント・マスク・チャネル、およびSPU書き込みイベント確認応答チャネルを含む。SPU読み取りイベント状況チャネルは、SPU書き込みイベント・マスク・チャネルで使用可能なすべてのイベントの状況を含む。SPU書き込みイベント確認応答チャネルは、イベントの状況をリセットするために使用され、これは、通常、そのイベントがSPUプログラムによって処理または記録されたという表示である。使用可能なイベントがまったく存在しない場合、SPU読み取りイベント状況チャネルから読み取ると、SPUプログラムが停止する。
SPU Event Channel An SPU program can monitor events using several SPU event channels. These SPU event channels include an SPU read event status channel, an SPU write event mask channel, an SPU read event mask channel, and an SPU write event acknowledge channel. The SPU read event status channel contains the status of all events available in the SPU write event mask channel. The SPU write event acknowledgment channel is used to reset the status of the event, which is usually an indication that the event has been processed or recorded by the SPU program. If there are no events available, reading from the SPU read event status channel stops the SPU program.

個々のイベントがSPUプログラムを停止するために同様の方法を備えているときに、イベントが発生しなかった場合、SPUイベント機能は、複数のイベントを探し、SPUプログラムの割り込みを発生させるための方法をソフトウェアに提供する。   If an event does not occur when an individual event has a similar method for stopping the SPU program, the SPU event function looks for multiple events and a method for generating an interrupt for the SPU program To the software.

SPU読み取りイベント状況チャネル
図43は、本発明の模範的な一実施形態によるSPU読み取りイベント状況チャネルの詳細を示している。SPU読み取りイベント状況チャネルは、このチャネルが読み取られた時点でSPU書き込みイベント・マスク・チャネルによって使用可能なすべてのイベントの現行状況を含む。あるイベントが照会の一部ではないとSPU書き込みイベント・マスク・チャネルが指定する場合、それに対応する位置は、報告された状況で「0」になる。
SPU Read Event Status Channel FIG. 43 shows details of an SPU read event status channel according to an exemplary embodiment of the invention. The SPU read event status channel contains the current status of all events available by the SPU write event mask channel when this channel is read. If the SPU write event mask channel specifies that an event is not part of the query, the corresponding position will be “0” in the reported situation.

「0」というチャネル・カウントを有するSPU読み取りイベント状況チャネルから読み取ると、SPU停止が発生し、それにより、「イベント待機」機能が提供される。チャネル・カウントが「1」であるこのチャネルから読み取ると、任意の使用可能で保留中のイベントの状況が返され、チャネル・カウントが「0」に設定される。以下の条件の場合にチャネル・カウントは「1」に設定される。
●イベントが発生し、対応するマスクがSPU書き込みイベント・マスク・チャネル内で「1」である。
●SPU保留イベント・レジスタ内の「1」に対応するビット位置の「1」がSPU書き込みイベント・マスク・チャネルに書き込まれる。
●SPU書き込みイベント確認応答チャネルの書き込み後、使用可能なイベントが保留中である。
●SPUチャネル・アクセス機能を使用して、特権ソフトウェアがチャネル・カウントを「1」に設定する。
Reading from an SPU read event status channel with a channel count of “0” causes an SPU stop, thereby providing an “event wait” function. Reading from this channel with a channel count of “1” returns the status of any available and pending events and sets the channel count to “0”. The channel count is set to “1” under the following conditions.
An event occurs and the corresponding mask is “1” in the SPU write event mask channel.
• A “1” in the bit position corresponding to “1” in the SPU pending event register is written to the SPU write event mask channel.
• An available event is pending after writing the SPU Write Event Acknowledgment channel.
• The privileged software sets the channel count to “1” using the SPU channel access function.

使用可能なイベントがまったく発生しなかった場合、SPU読み取りイベント状況チャネルの読み取りチャネル・カウント(rchcnt)命令がゼロを返す。SPU読み取りイベント状況チャネルからイベント状況を読み取るときにSPUの停止を回避するために、読み取りチャネル・カウント(rchcnt)命令を使用することができる。   If no event has occurred, the read channel count (rchcnt) instruction of the SPU read event status channel returns zero. A read channel count (rchcnt) instruction can be used to avoid stopping the SPU when reading event status from the SPU read event status channel.

特権ソフトウェアは、SPU読み取りイベント状況チャネルのカウント値を「0」に初期設定しなければならない。チャネル・カウントは、SPUチャネル・アクセス機能内のSPUチャネル・カウント・レジスタを使用して初期設定される。SPU割り込みが使用可能である(SPU_RdMachStat[IE]が「1」に設定されている)場合、SPU読み取りイベント状況チャネル・カウントがゼロ以外であると、SPUに対して割り込みが発行される。   The privileged software must initialize the count value of the SPU read event status channel to “0”. The channel count is initialized using the SPU channel count register in the SPU channel access function. If SPU interrupts are enabled (SPU_RdMachStat [IE] is set to “1”), an interrupt is issued to the SPU if the SPU read event status channel count is non-zero.

以下の2通りの事例ではソフトウェアがファントム・イベントを引き起こす可能性があることに留意されたい。
1.SPU読み取りイベント状況チャネルからイベント状況を読み取る前に、イベントがSPU読み取りイベント状況チャネル・カウントを増分した後でソフトウェアがイベントを確認またはマスクする場合。この場合、SPU読み取りイベント状況チャネルを読み取ると、そのイベントがもはや存在しないかまたは使用不可であることを示すデータが返される。
2.SPU読み取りイベント状況チャネルを読み取る前であって、イベントを確認する前に、使用可能なイベント(メールボックスからの読み取りなど)の割り込み条件をソフトウェアがリセットした場合。この場合、イベント状況レジスタを読み取ると、イベントを生成した条件がもはや存在しない場合でも、イベントが依然として保留中であることを示すデータが返される。この場合、イベントは依然として確認しなければならない。
Note that in the following two cases the software can trigger a phantom event.
1. If the software acknowledges or masks the event after the event increments the SPU read event status channel count before reading the event status from the SPU read event status channel. In this case, reading the SPU read event status channel returns data indicating that the event no longer exists or is unavailable.
2. The software resets an interrupt condition for an available event (such as a read from a mailbox) before reading the SPU read event status channel and before confirming the event. In this case, reading the event status register returns data indicating that the event is still pending, even if the condition that generated the event no longer exists. In this case, the event must still be acknowledged.

ファントム・イベントの生成を回避するために、イベントは以下のように処理しなければならない。
●SPU読み取りイベント状況チャネルを読み取る。
●処理すべきすべてのイベントについて、対応するビットをSPU書き込みイベント確認応答チャネルに書き込むことにより、イベントを確認する。
●イベントを処理する(たとえば、メールボックスを読み取るか、タイマをリセットまたは停止するか、あるいは信号通知レジスタを読み取る)。
To avoid generating phantom events, events must be handled as follows:
Read the SPU read event status channel.
For all events to be processed, acknowledge the event by writing the corresponding bit into the SPU write event acknowledge channel.
Process the event (eg, read the mailbox, reset or stop the timer, or read the signal notification register).

SPU書き込みイベント・マスク・チャネル
図44は、本発明の模範的な一実施形態によるSPU書き込みイベント・マスク・チャネルの詳細を示している。SPU書き込みイベント・マスク・チャネルは、どの保留イベントがSPU読み取りイベント状況チャネルの状態に影響するかを選択する。このチャネルの内容は、後続のチャネル書き込みまたはSPUチャネル・アクセスが発生するまで保存される。このチャネルの現行内容は、SPU読み取りイベント・マスク・チャネルを読み取ることによってアクセスすることができる。
SPU Write Event Mask Channel FIG. 44 shows details of an SPU write event mask channel according to an exemplary embodiment of the invention. The SPU write event mask channel selects which pending events affect the state of the SPU read event status channel. The contents of this channel are preserved until a subsequent channel write or SPU channel access occurs. The current contents of this channel can be accessed by reading the SPU read event mask channel.

SPUイベント・マスク設定にかかわらず、すべてのイベントはSPU保留イベント・レジストに記録される。SPU書き込みイベント確認応答チャネルに対する書き込みチャネル(wrch)命令によってクリアされるまでイベントは保留中のままになるか、または特権ソフトウェアはSPUチャネル・アクセス機能を使用して新しい値をSPU保留イベント・レジスタにロードする。保留イベントは、それが使用不可である場合でもクリアされる。   Regardless of the SPU event mask setting, all events are recorded in the SPU pending event registry. The event remains pending until cleared by a write channel (wrch) instruction to the SPU Write Event Acknowledgment Channel, or the privileged software uses the SPU channel access function to put a new value in the SPU Pending Event Register Load it. A pending event is cleared even if it is unavailable.

使用不可であり、その後、クリアされる保留イベントは、SPU読み取りイベント状況チャネル内に反映されない。保留イベントを使用可能にすると、SPU読み取りイベント状況チャネルが更新され、使用可能である場合には、SPU割り込みが発生する。   Pending events that are disabled and subsequently cleared are not reflected in the SPU read event status channel. Enabling the pending event updates the SPU read event status channel, and if it is enabled, an SPU interrupt is generated.

このチャネルは非ブロッキングであり、関連カウントを備えていない。このチャネルの読み取りチャネル・カウント(rchcnt)命令は、必ず「1」を返す。   This channel is non-blocking and has no associated count. The read channel count (rchcnt) instruction for this channel always returns “1”.

SPU読み取りイベント・マスク・チャネル
図45は、本発明の模範的な一実施形態によるSPU読み取りイベント・マスク・チャネルの詳細を示している。SPU読み取りイベント・マスク・チャネルは、イベント状況マスクの現行値を読み取るために使用される。このチャネルを読み取ると、必ず、SPU書き込みイベント・マスク・チャネルによって書き込まれた最後のデータが返される。このチャネルは、イベント状況マスクのソフトウェア・シャドー・コピーを回避するため、ならびにSPUコンテキスト保存復元動作のために使用することができる。このチャネルは非ブロッキングであり、関連カウントを備えていない。読み取りチャネル・カウント(rchcnt)命令がこのチャネルに送信されると、カウントは必ず「1」として返される。
SPU Read Event Mask Channel FIG. 45 shows details of an SPU read event mask channel according to an exemplary embodiment of the invention. The SPU read event mask channel is used to read the current value of the event status mask. Reading this channel always returns the last data written by the SPU write event mask channel. This channel can be used to avoid software shadow copying of event status masks, as well as for SPU context save and restore operations. This channel is non-blocking and has no associated count. When a read channel count (rchcnt) instruction is sent to this channel, the count is always returned as "1".

SPU書き込みイベント確認応答チャネル
図46は、本発明の模範的な一実施形態によるSPU書き込みイベント確認応答チャネルの詳細を示している。特定のイベント・ビットが設定されたSPU書き込みイベント確認応答チャネルへの書き込みにより、対応するイベントがソフトウェアによって処理されていることが確認される。確認されたイベントはリセットされ、再抽出される。報告されたが確認されていないイベントは、確認されるまで、またはSPUチャネル・アクセス機能を使用して特権ソフトウェアによってクリアされるまで、引き続き報告される。
SPU Write Event Acknowledgment Channel FIG. 46 shows details of an SPU write event acknowledgment channel according to an exemplary embodiment of the invention. Writing to the SPU Write Event Acknowledgment channel with a specific event bit set confirms that the corresponding event is being processed by software. Confirmed events are reset and re-extracted. Events that are reported but not acknowledged continue to be reported until acknowledged or cleared by privileged software using the SPU channel access function.

使用不可イベントは、SPU読み取りイベント状況チャネルで報告されないが、SPU書き込みイベント確認応答チャネル内の対応するビットに「1」を書き込むことによってクリアされるまで、保留中として保持される。使用不可イベントを確認すると、報告されていない場合でも、イベントがクリアされる。発生する前にイベントをクリアすると、ソフトウェアにより誘導されたデッドロックが発生する。   The unavailable event is not reported on the SPU read event status channel, but is held as pending until cleared by writing a “1” to the corresponding bit in the SPU write event acknowledgment channel. Acknowledging an unusable event clears the event even if it has not been reported. Clearing the event before it occurs causes a software-induced deadlock.

このチャネルは非ブロッキングであり、関連カウントを備えていない。読み取りチャネル・カウント(rchcnt)命令がこのチャネルに送信されると、カウントは必ず「1」として返される。   This channel is non-blocking and has no associated count. When a read channel count (rchcnt) instruction is sent to this channel, the count is always returned as "1".

SPUイベント
ハードウェアは、適切なチャネル・カウント、デクリメンタ・カウント、またはSPUチャネル・アクセス動作を検出することにより、イベントを判別する。いくつかの異なるタイプのイベントが上述のBPAによってサポートされる。たとえば、MFCタグ・グループ状況更新イベントは、MFC読み取りタグ・グループ状況チャネルに関するカウントが0からゼロ以外の値に変化したときに設定される。MFC DMAリスト・コマンド停止通知イベントは、MFC読み取りリスト停止通知タグ状況チャネルに関するカウントが0からゼロ以外の値に変化したときに設定される。MFC SPUコマンド・キュー使用可能イベントは、待機MFCコマンド命令コード・レジスタに関するカウントが0(満杯)からゼロ以外の値(満杯ではない)に変化したときに設定される。SPUインバウンド・メールボックス使用可能イベントは、SPU読み取りインバウンド・メールボックス・チャネルに関するカウントが0からゼロ以外の値に変化したときに設定される。
SPU event The hardware determines the event by detecting the appropriate channel count, decrementer count, or SPU channel access operation. Several different types of events are supported by the BPA described above. For example, an MFC tag group status update event is set when the count for an MFC read tag group status channel changes from 0 to a non-zero value. The MFC DMA list command stop notification event is set when the count for the MFC read list stop notification tag status channel changes from 0 to a non-zero value. The MFC SPU command queue enable event is set when the count for the standby MFC command instruction code register changes from 0 (full) to a non-zero value (not full). The SPU inbound mailbox enable event is set when the count for the SPU read inbound mailbox channel changes from 0 to a non-zero value.

同様に、SPUデクリメンタ・イベントは、デクリメンタ・カウントの最上位ビットが0から1に変化したときに設定される。デクリメンタにロードされた値により最上位ビットが0から1に変化した場合、イベントが直ちに通知される。デクリメンタ値を0に設定すると、単一デクリメンタ間隔後にイベントが発生する。   Similarly, the SPU decrementer event is set when the most significant bit of the decrementer count changes from 0 to 1. If the most significant bit changes from 0 to 1 due to the value loaded into the decrementer, the event is notified immediately. Setting the decrementer value to 0 causes an event to occur after a single decrementer interval.

さらに、SPUアウトバウンド・メールボックス使用可能イベントは、SPU書き込みアウトバウンド割り込みメールボックス・チャネル・カウントが0からゼロ以外の値に変化したときに設定される。SPU信号通知1または2使用可能イベントは、対応するSPU信号通知チャネルに関するカウントが0からゼロ以外の値に変化したときに設定される。ロック・ライン予約イベントは、アトミック予約が消失したときに設定される(以下の「ロック・ライン予約消失イベント」のセクションを参照)。特権アテンション・イベントは、アテンション・イベント要求ビットが1に設定されてSPU特権制御レジスタに書き込まれたときに設定される(以下の「特権アテンション・イベント」のセクションを参照)。マルチソース同期イベントは、MFC書き込みマルチソース同期要求チャネル・カウントが0という値から1という値に変化したときに設定される。次に、これらのイベントについて、より詳細に説明する。   In addition, the SPU Outbound Mailbox Enable event is set when the SPU Write Outbound Interrupt Mailbox Channel Count changes from 0 to a non-zero value. The SPU signal notification 1 or 2 availability event is set when the count for the corresponding SPU signal notification channel changes from 0 to a non-zero value. A lock line reservation event is set when an atomic reservation disappears (see the section "Lock Line Reservation Lost Event" below). A privileged attention event is set when the attention event request bit is set to 1 and written to the SPU privilege control register (see “Privileged Attention Event” section below). A multi-source sync event is set when the MFC write multi-source sync request channel count changes from a value of 0 to a value of 1. Next, these events will be described in more detail.

MFCタグ・グループ状況更新イベント
MFCタグ・グループ状況更新イベントは、1つまたは複数のタグ・グループが完了しており、MFC読み取りタグ・グループ状況チャネルが更新されており、SPUを停止せずに読み取ることができることをSPUプログラムに通知するために使用される(上記の「MFCタグ・グループ状況チャネル」というセクションを参照)。このイベントは、MFC読み取りタグ・グループ状況チャネルに関するチャネル・カウントが「0」から「1」に変化したときに発生する。このイベントが発生すると、Pend_Event[Tg]が「1」に設定される。このイベントが使用可能である(すなわち、SPU_RdEventStat[Tg]が「1」に設定されている)場合、SPUイベント状況チャネルに関するカウントが「1」に設定される。
MFC tag group status update event An MFC tag group status update event is read without stopping the SPU when one or more tag groups are complete, the MFC read tag group status channel is updated. It is used to notify the SPU program that it can (see the section on “MFC Tag Group Status Channel” above). This event occurs when the channel count for the MFC read tag group status channel changes from “0” to “1”. When this event occurs, Pend_Event [Tg] is set to “1”. If this event is available (ie, SPU_RdEventStat [Tg] is set to “1”), the count for the SPU event status channel is set to “1”.

Pend_Event[Tg]ビットは、チャネル書き込み(wrch)がSPU保留イベント・レジスタに対して発行されたとき、または対応するビットが「0」に設定されたSPUチャネル・アクセス機能を使用して、特権ソフトウェアがSPU保留イベント・レジスタを更新したときに、「0」に設定される。このイベントは、1つまたは複数のタグ・グループに関する任意のコマンドを発行する前にクリアしなければならない。   The Pend_Event [Tg] bit is used when privileged software is used when a channel write (wrch) is issued to the SPU pending event register or using the SPU channel access function with the corresponding bit set to '0'. Set to "0" when the SPU pending event register is updated. This event must be cleared before issuing any command for one or more tag groups.

MFC DMAリスト・コマンド停止通知イベント
MFC DMAリスト・コマンド停止通知イベントは、MFC DMAリスト・コマンド内のリスト・エレメントが完了しており、MFC読み取りリスト停止通知タグ状況チャネルが更新されており、SPUを停止せずに読み取ることができることをSPUプログラムに通知するために使用される。このイベントは、MFC読み取りリスト停止通知タグ状況チャネルに関するチャネル・カウントが「0」から「1」に変化したときに発生する。
MFC DMA list command stop notification event The MFC DMA list command stop notification event indicates that the list element in the MFC DMA list command has been completed, the MFC read list stop notification tag status channel has been updated, and the SPU Used to notify the SPU program that it can read without stopping. This event occurs when the channel count for the MFC read list stop notification tag status channel changes from “0” to “1”.

このカウントは、停止通知フラグが設定されたリスト・エレメントのすべての転送ならびにMFC DMAリスト・コマンド内のすべての前のリスト・エレメントに関する転送が関連SPUに関して完了しているときに「1」に設定される。このイベントが発生すると、Pend_Event[Sn]が「1」に設定される。このイベントが使用可能である(すなわち、SPU_RdEventStat[Sn]が「1」に設定されている)場合、SPU読み取りイベント状況チャネルに関するカウントが「1」に設定される。Pend_Event[Sn]ビットは、タグ・ビットが「1」に設定された(SPU_WrEventAck[Sn])SPU書き込みイベント確認応答チャネルに対してチャネル書き込み(wrch)が発行されたとき、または対応するビットが「0」に設定されたSPUチャネル・アクセス機能を使用して、特権ソフトウェアがSPU保留イベント・レジスタを更新したときに、「0」に設定される。   This count is set to “1” when all transfers of list elements with the stop notification flag set as well as transfers for all previous list elements in the MFC DMA list command have been completed for the associated SPU. Is done. When this event occurs, Pend_Event [Sn] is set to “1”. If this event is available (ie, SPU_RdEventStat [Sn] is set to “1”), the count for the SPU read event status channel is set to “1”. The Pend_Event [Sn] bit is set when a channel write (wrch) is issued to the SPU write event acknowledgment channel with the tag bit set to “1” (SPU_WrEventAck [Sn]) or the corresponding bit is “ Set to “0” when privileged software updates the SPU pending event register using the SPU channel access function set to “0”.

MFC DMAリスト・コマンド停止通知イベントを処理するための手順の概要は図47に示されている。図47に示されている通り、この手順は、SPU読み取りイベント・マスク・チャネルに対する読み取りチャネル(rdch)命令を実行し、データを「マスク」に保存することから始まる(ステップ2310)。SPU_WrEvent Mask[Sn]が「0」に設定されたSPU書き込みイベント・マスク・チャネルに対して書き込みチャネル命令を発行することにより、イベントがマスクされる(ステップ2320)。SPU_WrEventAck[Sn]が1に設定されたSPU書き込みイベント確認応答チャネルへの書き込みチャネル(wrch)命令を実行することにより、イベントが確認される(ステップ2330)。   An overview of the procedure for processing an MFC DMA list command stop notification event is shown in FIG. As shown in FIG. 47, the procedure begins by executing a read channel (rdch) instruction for the SPU read event mask channel and storing the data in a “mask” (step 2310). The event is masked by issuing a write channel instruction to the SPU write event mask channel with SPU_WrEvent Mask [Sn] set to “0” (step 2320). The event is confirmed by executing a write channel (wrch) command to the SPU write event acknowledge channel with SPU_WrEventAck [Sn] set to 1 (step 2330).

次に、MFC読み取りリスト停止通知タグ状況チャネルMFC_StallStat[gn]に読み取りチャネル(rdch)命令が送信される(ステップ2340)。返される情報は、1つまたは複数のどのタグ・グループが停止通知状態のDMAリスト・エレメントを有するかを判別するために使用される(ステップ2350)。次に、停止DMAリスト・エレメントを有する各タグ・グループに関して、アプリケーション固有のアクションが実行される(ステップ2360)。   Next, a read channel (rdch) command is transmitted to the MFC read list stop notification tag status channel MFC_StallStat [gn] (step 2340). The returned information is used to determine which tag group or groups have the DMA list element in the stop notification state (step 2350). Next, application-specific actions are performed for each tag group having a stop DMA list element (step 2360).

供給されたMFCタグが再開すべきタグ・グループのコード化タグIDであるリスト停止通知タグ確認応答チャネルMFC_StallAck[MFC Tag]に対して書き込みチャネル(wrch)命令を発行することにより、各停止DMAリスト・コマンドが確認され再開される(ステップ2370)。次に、DMAリスト停止通知ハンドラが終了する(ステップ2380)。アプリケーション・ソフトウェアがMFC_StallStat[gn]チャネル内に示されたすべての停止タグ・グループを確認するわけではない場合、未確認タグ・グループについて第2の停止通知イベントが発生しないことに留意されたい。   Each stopped DMA list is issued by issuing a write channel (wrch) command to the list stop notification tag confirmation response channel MFC_StallAck [MFC Tag], which is the coded tag ID of the tag group to be restarted by the supplied MFC tag. The command is confirmed and resumed (step 2370). Next, the DMA list stop notification handler ends (step 2380). Note that if the application software does not verify all stop tag groups indicated in the MFC_StallStat [gn] channel, a second stop notification event will not occur for the unconfirmed tag group.

SPU_WrEventMask[mask]によりSPU書き込みイベント・マスク・チャネルに対して書き込みチャネル(wrch)命令を発行することにより、「マスク」が復元される(ステップ2390)。次に、一般イベント・ハンドラが終了する(ステップ2395)。   The “mask” is restored by issuing a write channel (wrch) instruction to the SPU write event mask channel with SPU_WrEventMask [mask] (step 2390). Next, the general event handler ends (step 2395).

停止通知フラグが設定された複数のリスト・エレメントをDMAリストが含む場合または停止通知フラグが設定されたエレメントとともにキューイングされた複数のDMAリスト・コマンドを1つのタグ・グループが有する場合あるいはその両方の場合、DMAリスト・コマンドがそのタグ・グループについてキューイングされる前に、アプリケーション・ソフトウェアがタグ・グループ固有停止カウンタを0に初期設定することに留意されたい。加えて、停止通知エレメントを有するタグ・グループについて複数のDMAリスト・コマンドがキューイングされる場合、タグ固有のフェンス、バリア、またはコマンド・バリアにより順序付けが実施される。タグ・グループについて停止通知状況が示されるたびに、対応するカウンタを増分しなければならない。次に、アプリケーション・ソフトウェアは、このカウンタを使用して、リスト内のどのポイントで停止が発生したかを判別することができる。   When a DMA list includes a plurality of list elements with a stop notification flag set and / or when a tag group has a plurality of DMA list commands queued with an element with a stop notification flag set Note that the application software initializes the tag group specific stop counter to 0 before the DMA list command is queued for that tag group. In addition, when multiple DMA list commands are queued for a tag group with a stop notification element, ordering is performed by tag-specific fences, barriers, or command barriers. Each time a stop notification status is indicated for a tag group, the corresponding counter must be incremented. The application software can then use this counter to determine at which point in the list the outage occurred.

アプリケーション・ソフトウェアは、動的に変化する条件のために停止したリスト・エレメントに従うリスト・エレメント・アドレスおよび転送サイズを更新するために停止通知を使用する。停止リスト・エレメント後のリスト・エレメントは、その転送サイズを0に設定することによってスキップすることができる。しかし、待機DMAリスト・コマンド内のリスト・エレメントの数は変更することができない。   The application software uses the stop notification to update the list element address and transfer size according to the list element that has stopped due to dynamically changing conditions. A list element after a stop list element can be skipped by setting its transfer size to zero. However, the number of list elements in the waiting DMA list command cannot be changed.

MFC SPUコマンド・キュー使用可能イベント
MFC SPUコマンド・キュー使用可能イベントは、MFC SPUコマンド・キュー内の項目が使用可能であり、SPUを停止せずにMFCコマンド命令コード・チャネルに書き込むことができることをSPUプログラムに通知するために使用される。このイベントは、MFCコマンド命令コード・チャネルに関するチャネル・カウントが「0」(満杯)からゼロ以外の(満杯ではない)値に変化したときに発生する。
MFC SPU command queue enable event The MFC SPU command queue enable event indicates that an entry in the MFC SPU command queue is available and can be written to the MFC command opcode channel without stopping the SPU. Used to notify the SPU program. This event occurs when the channel count for the MFC command instruction code channel changes from “0” (full) to a non-zero (not full) value.

このカウントは、MFC SPUコマンド・キュー内の1つまたは複数のMFC DMAコマンドが完了したときに「1」に設定される。このイベントが発生すると、Pend_Event[Qv]が「1」に設定される。このイベントが使用可能である(すなわち、SPU_RdEventMask[Qv]が「1」に設定されている)場合、SPU_RdEventStat[Qv]が「1」に設定され、SPU読み取りイベント状況チャネルに関するカウントが「1」に設定される。Pend_Event[Qv]ビットは、チャネル書き込み(wrch)がSPU書き込みイベント確認応答チャネルに対して発行されたとき(すなわち、SPU_WrEventAck[Qv]が「1」に設定される)、または対応するビットが「0」に設定されたSPUチャネル・アクセス機能を使用して、特権ソフトウェアがSPU保留イベント・レジスタを更新したときに、「0」に設定される。   This count is set to “1” when one or more MFC DMA commands in the MFC SPU command queue are completed. When this event occurs, Pend_Event [Qv] is set to “1”. If this event is enabled (ie, SPU_RdEventMask [Qv] is set to “1”), SPU_RdEventStat [Qv] is set to “1” and the count for the SPU read event status channel is set to “1”. Is set. The Pend_Event [Qv] bit is set when a channel write (wrch) is issued to the SPU write event acknowledgment channel (ie, SPU_WrEventAck [Qv] is set to “1”) or the corresponding bit is “0”. Set to "0" when privileged software updates the SPU pending event register using the SPU channel access function set to "".

MFC SPUコマンド・キュー使用可能イベントを処理するための手順の概要は図48に示されている。図48に示されている通り、この手順は、SPU読み取りイベント・マスク・チャネルに読み取りチャネル(rdch)命令を送信することから始まり、「マスク」内のデータが保存される(ステップ2410)。SPU_WrEventMask[Qv]が「0」に設定されたSPU書き込みイベント・マスク・チャネルに対して書き込みチャネル命令を発行することにより、イベントがマスクされる(ステップ2420)。SPU_WrEventAck[Qv]が1に設定されたSPU書き込みイベント確認応答チャネルへの書き込みチャネル(wrch)命令を実行することにより、イベントが確認される(ステップ2430)。   An overview of the procedure for handling MFC SPU command queue available events is shown in FIG. As shown in FIG. 48, the procedure begins by sending a read channel (rdch) command to the SPU read event mask channel and the data in the “mask” is saved (step 2410). The event is masked by issuing a write channel instruction to the SPU write event mask channel with SPU_WrEventMask [Qv] set to “0” (step 2420). The event is confirmed by executing a write channel (wrch) command to the SPU write event acknowledge channel with SPU_WrEventAck [Qv] set to 1 (step 2430).

MFCコマンド命令コード・チャネル(MFC_CMD)に対して読み取りチャネル・カウント(rchcnt)命令を発行することにより、チャネル・カウントが入手される(ステップ2440)。チャネル・カウントが「0」であるかどうかについて判別が行われる(ステップ2450)。「0」ではない場合、DMAコマンドはMFCコマンド・キューにエンキューされる(ステップ2460)。次に、追加のコマンドがキュー内に残っているかどうかについて判別が行われる(ステップ2470)。残っている場合、手順はステップ2430に戻る。追加のコマンドがまったく残っていない場合またはチャネル・カウントが「0」である場合、SPUコマンド・キュー・ハンドラが終了する(ステップ2480)。次に、SPU書き込みイベント・マスク・チャネルに対して書き込みチャネル(wrch)命令を発行することにより、マスクが復元される(ステップ2490)。次に、一般イベント・ハンドラが終了する(ステップ2495)。   A channel count is obtained by issuing a read channel count (rchcnt) instruction to the MFC command instruction code channel (MFC_CMD) (step 2440). A determination is made as to whether the channel count is “0” (step 2450). If not "0", the DMA command is enqueued into the MFC command queue (step 2460). Next, a determination is made as to whether additional commands remain in the queue (step 2470). If so, the procedure returns to step 2430. If there are no additional commands left or the channel count is “0”, the SPU command queue handler ends (step 2480). Next, the mask is restored by issuing a write channel (wrch) instruction to the SPU write event mask channel (step 2490). Next, the general event handler ends (step 2495).

SPUインバウンド・メールボックス使用可能イベント
SPUインバウンド・メールボックス使用可能イベントは、PPEまたはその他の装置が空のSPUメールボックスに書き込み、SPUを停止せずにSPU読み取りインバウンド・メールボックス・チャネル(124ページを参照)を読み取れることをSPUプログラムに通知するために使用される。このイベントが使用可能である(すなわち、SPU_RdEventStat[Mb]が「1」である)場合、SPU読み取りイベント状況チャネルに関するカウントが「1」に設定される。
SPU Inbound Mailbox Enable Event The SPU Inbound Mailbox Enable Event is a PPE or other device that writes to an empty SPU mailbox and reads the SPU read inbound mailbox channel (page 124) without stopping the SPU. Used to notify the SPU program that it can be read. If this event is available (ie, SPU_RdEventStat [Mb] is “1”), the count for the SPU read event status channel is set to “1”.

このイベントは、SPU読み取りインバウンド・メールボックス・チャネルに関するチャネル・カウントが「0」(空)からゼロ以外の(空ではない)値に変化したときに発生する。このイベントが発生すると、Pend_Event[Mb]が「1」に設定される。Pend_Event[Mb]ビットは、SPU書き込みイベント確認応答チャネルに対してチャネル書き込み(wrch)が発行された(すなわち、SPU_WrEventAck[Mb]が「1」に設定されている)とき、または対応するビットが「0」に設定されたSPUチャネル・アクセス機能を使用して、特権ソフトウェアがSPU保留イベント・レジスタを更新したときに、「0」に設定される。   This event occurs when the channel count for the SPU read inbound mailbox channel changes from “0” (empty) to a non-zero (non-empty) value. When this event occurs, Pend_Event [Mb] is set to “1”. The Pend_Event [Mb] bit is used when a channel write (wrch) is issued to the SPU write event acknowledgment channel (that is, SPU_WrEventAck [Mb] is set to “1”) or the corresponding bit is “ Set to “0” when privileged software updates the SPU pending event register using the SPU channel access function set to “0”.

SPUインバウンド・メールボックス使用可能イベントを処理するための手順の概要は図49に示されている。図49に示されている通り、この手順は、SPU読み取りイベント・マスク・チャネルに読み取りチャネル(rdch)命令を送信し、データを「マスク」に保存することから始まる(ステップ2510)。次に、SPU_WrEvent[Masking]が「0」に設定されたSPU書き込みイベント・マスク・チャネルに対して書き込みチャネル命令を発行することにより、イベントがマスクされる(ステップ2520)。SPU_WrEventAck[Sn]が1に設定されたSPU書き込みイベント確認応答チャネルへの書き込みチャネル(wrch)命令を実行することにより、イベントが確認される(ステップ2530)。   An overview of the procedure for handling SPU inbound mailbox availability events is shown in FIG. As shown in FIG. 49, the procedure begins by sending a read channel (rdch) instruction to the SPU read event mask channel and storing the data in a “mask” (step 2510). Next, the event is masked by issuing a write channel instruction to the SPU write event mask channel with SPU_WrEvent [Masking] set to “0” (step 2520). The event is confirmed by executing a write channel (wrch) command to the SPU write event acknowledge channel with SPU_WrEventAck [Sn] set to 1 (step 2530).

SPU読み取りインバウンド・メールボックス・チャネルに対して読み取りチャネル・カウント(rchcnt)命令を発行することにより、チャネル・カウントが入手される(ステップ2540)。チャネル・カウントが「0」であるかどうかについて判別が行われる(ステップ2550)。「0」ではない場合、SPU読み取りインバウンド・メールボックス・チャネル(SPU_RdInMbox)に対して読み取りチャネル(rdch)命令を発行することにより、次のメールボックス・データ項目が読み取られる(ステップ2560)。次に、手順はステップ2530に戻る。   The channel count is obtained by issuing a read channel count (rchcnt) instruction to the SPU read inbound mailbox channel (step 2540). A determination is made as to whether the channel count is “0” (step 2550). If not "0", the next mailbox data item is read by issuing a read channel (rdch) instruction to the SPU read inbound mailbox channel (SPU_RdInMbox) (step 2560). The procedure then returns to step 2530.

チャネル・カウントが「0」である場合、SPUインバウンド・メールボックス・ハンドラが終了する(ステップ2570)。SPU_WrEventMask[mask]によりSPU書き込みイベント・マスク・チャネルに対して書き込みチャネル(wrch)命令を発行することにより、「マスク」が復元される(ステップ2580)。次に、一般イベント・ハンドラが終了する(ステップ2590)。   If the channel count is “0”, the SPU inbound mailbox handler ends (step 2570). The “mask” is restored by issuing a write channel (wrch) instruction to the SPU write event mask channel with SPU_WrEventMask [mask] (step 2580). Next, the general event handler ends (step 2590).

SPUデクリメンタ・イベント
SPUデクリメンタ・イベントは、デクリメンタが「0」に到達したことをSPUプログラムに通知するために使用される。このイベントが使用可能であり(すなわち、SPU_RdEventStat[Tm]が「1」に設定され)、SPU読み取りイベント状況チャネルに関するカウントが「1」に設定されている場合、デクリメンタの最上位ビットが「0」から「1」(否定)値に変化すると、このイベントが発生する。このイベントが発生すると、Pend_Event[Tm]が「1」に設定される。Pend_Event[Tm]ビットは、チャネル書き込み(wrch)がSPU書き込みイベント確認応答チャネルに対して発行されたとき(SPU_WrEventAck[Tm]が「1」に設定される)、または対応するビットが「0」に設定されたSPUチャネル・アクセス機能を使用して、特権ソフトウェアがSPU保留イベント・レジスタを更新したときに、「0」に設定される。
SPU decrementer event The SPU decrementer event is used to notify the SPU program that the decrementer has reached "0". If this event is enabled (ie, SPU_RdEventStat [Tm] is set to “1”) and the count for the SPU read event status channel is set to “1”, the most significant bit of the decrementer is “0”. This event occurs when the value changes from “1” (negative) value. When this event occurs, Pend_Event [Tm] is set to “1”. The Pend_Event [Tm] bit is set when the channel write (wrch) is issued to the SPU write event acknowledgment channel (SPU_WrEventAck [Tm] is set to “1”) or the corresponding bit is set to “0”. Set to “0” when privileged software updates the SPU pending event register using the configured SPU channel access function.

SPUデクリメンタ・イベントを処理するための手順の概要は図50に示されている。図50に示されている通り、この手順は、SPU読み取りイベント・マスク・チャネルに対する読み取りチャネル(rdch)命令を実行し、データを「マスク」に保存することから始まる(ステップ2610)。SPU_WrEventMask[Tm]が「0」に設定されたSPU書き込みイベント・マスク・チャネルに対して書き込みチャネル(wrch)命令を発行することにより、イベントがマスクされる(ステップ2620)。SPU書き込みイベント確認応答チャネルに対して書き込みチャネル(wrch)命令を発行する(SPU_WrEventAck[Tm]が1に設定される)ことにより、イベントが確認される(ステップ2630)。   An overview of the procedure for handling SPU decrementer events is shown in FIG. As shown in FIG. 50, the procedure begins by executing a read channel (rdch) instruction for the SPU read event mask channel and storing the data in a “mask” (step 2610). The event is masked by issuing a write channel (wrch) instruction to the SPU write event mask channel with SPU_WrEventMask [Tm] set to “0” (step 2620). An event is confirmed by issuing a write channel (wrch) command to the SPU write event confirmation response channel (SPU_WrEventAck [Tm] is set to 1) (step 2630).

SPU読み取りデクリメンタ・チャネルに対して読み取りチャネル(rdch)命令を発行することにより、デクリメンタ値が読み取られる(ステップ2640)。この値が否定である場合、これは、所望の間隔からどのくらいの長さの追加時間が経過したかを判別するために使用することができる。新しいタイマ・イベントが所望であるかどうかについて判別が行われる(ステップ2650)。新しいタイマ・イベントが所望である場合、SPU書き込みデクリメンタ・チャネルに新しいデクリメンタ値が書き込まれる(wrch)(ステップ2660)。その後、または新しいタイマ・イベントが所望ではない場合、SPUデクリメンタ・イベント・ハンドラが終了する(ステップ2670)。SPU_WrEventMask[mask]によりSPU書き込みイベント・マスク・チャネルに対して書き込みチャネル(wrch)命令を発行することにより、「マスク」が復元される(ステップ2680)。次に、一般イベント・ハンドラが終了する(ステップ2690)。   The decrementer value is read by issuing a read channel (rdch) instruction to the SPU read decrementer channel (step 2640). If this value is negative, this can be used to determine how much additional time has elapsed since the desired interval. A determination is made as to whether a new timer event is desired (step 2650). If a new timer event is desired, a new decrementer value is written (wrch) to the SPU write decrementer channel (step 2660). Thereafter, or if a new timer event is not desired, the SPU decrementer event handler ends (step 2670). The “mask” is restored by issuing a write channel (wrch) instruction to the SPU write event mask channel with SPU_WrEventMask [mask] (step 2680). Next, the general event handler ends (step 2690).

SPUアウトバウンド割り込みメールボックス使用可能イベント
SPUアウトバウンド割り込みメールボックス使用可能イベントは、PPEまたは他の装置が満杯のSPUアウトバウンド割り込みメールボックス・レジスタから読み取り、SPUを停止せずにSPU書き込みアウトバウンド割り込みメールボックス・チャネルに書き込めることをSPUプログラムに通知するために使用される。このイベントが使用可能であり(すなわち、SPU_RdEventStat[Me]が「1」に設定され)、SPU読み取りイベント状況チャネルに関するカウントが「1」に設定されている場合、SPU書き込みアウトバウンド割り込みメールボックス・チャネルに関するチャネル・カウントが「0」(満杯)からゼロ以外の(満杯ではない)値に変化すると、このイベントが発生する。このイベントにより、Pend_Event[Me]が「1」に設定される。Pend_Event[Me]ビットは、Meビットが「1」に設定されたSPU書き込みイベント確認応答チャネルに対してチャネル書き込み(wrch)が発行されたとき(すなわち、SPU_WrEventAck[Me]が「1」に設定される)、または対応するビットが「0」に設定されたSPUチャネル・アクセス機能を使用して、特権ソフトウェアがSPU保留イベント・レジスタを更新したときに、「0」に設定される。
SPU Outbound Interrupt Mailbox Enable Event The SPU Outbound Interrupt Mailbox Enable event is read from the SPU Outbound Interrupt Mailbox Register that is full by the PPE or other device, and the SPU Write Outbound Interrupt Mailbox Channel without stopping the SPU Used to notify the SPU program that it can be written to. If this event is enabled (ie, SPU_RdEventStat [Me] is set to “1”) and the count for the SPU read event status channel is set to “1”, then the SPU write outbound interrupt mailbox channel This event occurs when the channel count changes from “0” (full) to a non-zero (not full) value. With this event, Pend_Event [Me] is set to “1”. The Pend_Event [Me] bit is set when a channel write (wrch) is issued to the SPU write event acknowledgment channel with the Me bit set to “1” (ie, SPU_WrEventAck [Me] is set to “1”). Or set to “0” when privileged software updates the SPU pending event register using an SPU channel access function with the corresponding bit set to “0”.

SPUアウトバウンド割り込みメールボックス使用可能イベントを処理するための手順の概要は図51に示されている。図51に示されている通り、この手順は、SPU読み取りイベント・マスク・チャネルに読み取りチャネル(rdch)命令を送信し、データを「マスク」に保存することから始まる(ステップ2710)。SPU_WrEventMask[Me]が「0」に設定されたSPU書き込みイベント・マスク・チャネルに対して書き込みチャネル(wrch)命令を発行することにより、イベントがマスクされる(ステップ2720)。SPU_WrEventAck[Me]が1に設定されたSPU書き込みイベント確認応答チャネルに対する書き込みチャネル(wrch)命令を実行することにより、イベントが確認される(ステップ2730)。   An overview of the procedure for handling SPU outbound interrupt mailbox available events is shown in FIG. As shown in FIG. 51, the procedure begins by sending a read channel (rdch) command to the SPU read event mask channel and storing the data in a “mask” (step 2710). An event is masked by issuing a write channel (wrch) instruction to an SPU write event mask channel with SPU_WrEventMask [Me] set to “0” (step 2720). The event is confirmed by executing a write channel (wrch) command for the SPU write event acknowledgment channel with SPU_WrEventAck [Me] set to 1 (step 2730).

SPU書き込みアウトバウンド割り込みメールボックス・チャネルに対して読み取りチャネル(rchcnt)命令を発行することにより、チャネル・カウントが入手される(ステップ2740)。チャネル・カウントが「0」であるかどうかについて判別が行われる(ステップ2750)。チャネル・カウントが「0」ではない場合、SPU書き込みアウトバウンド割り込みメールボックス・チャネルに対して書き込みチャネル(wrch)命令を発行することにより、新しいメールボックス・データ項目が書き込まれる(ステップ2760)。チャネル・カウントが「0」である場合、チャネル・カウントがもう一度読み取られる(ステップ2740)。その後、SPUアウトバウンド割り込みメールボックス使用可能ハンドラが終了する(ステップ2770)。SPU_WrEventMask[mask]によりSPU書き込みイベント・マスク・チャネルに対して書き込みチャネル(wrch)命令を発行することにより、「マスク」が復元される(ステップ2780)。次に、一般イベント・ハンドラが終了する(ステップ2790)。   The channel count is obtained by issuing a read channel (rchcnt) instruction to the SPU write outbound interrupt mailbox channel (step 2740). A determination is made as to whether the channel count is “0” (step 2750). If the channel count is not “0”, a new mailbox data item is written by issuing a write channel (wrch) instruction to the SPU write outbound interrupt mailbox channel (step 2760). If the channel count is “0”, the channel count is read again (step 2740). Thereafter, the SPU outbound interrupt mailbox available handler ends (step 2770). The “mask” is restored by issuing a write channel (wrch) instruction to the SPU write event mask channel with SPU_WrEventMask [mask] (step 2780). Next, the general event handler ends (step 2790).

SPUアウトバウンド・メールボックス使用可能イベント
SPUアウトバウンド・メールボックス使用可能イベントは、プロセッサまたは他の装置のいずれか一方が満杯のSPUアウトバウンド・メールボックス・レジスタから読み取り、SPUを停止せずにSPU書き込みアウトバウンド・メールボックス・チャネルに書き込めることをSPUプログラムに通知するために使用される。SPU書き込みアウトバウンド・メールボックス・チャネルに関するチャネル・カウントが「0」(満杯)からゼロ以外の(満杯ではない)値に変化すると、このイベントが発生する。このイベントが発生すると、Pend_Event[Le]が「1」に設定される。このイベントが使用可能である(すなわち、SPU_RdEventStat[Le]が「1」に設定されている)場合、SPU読み取りイベント状況チャネルに関するカウントが「1」に設定される。Pend_Event[Le]ビットは、Leビットが「1」に設定されたSPU書き込みイベント確認応答チャネル(144ページを参照)に対してチャネル書き込み(wrch)が発行されたとき(すなわち、SPU_WrEventAck[Le]が「1」に設定される)、または対応するビットが「0」に設定されたSPUチャネル・アクセス機能を使用して、特権ソフトウェアがSPU保留イベント・レジスタを更新したときに、「0」に設定される。
SPU Outbound Mailbox Enable Event The SPU Outbound Mailbox Enable event is read from either a processor or other device's full SPU Outbound Mailbox register and SPU write outbound without stopping the SPU. Used to notify the SPU program that it can write to the mailbox channel. This event occurs when the channel count for the SPU write outbound mailbox channel changes from “0” (full) to a non-zero (not full) value. When this event occurs, Pend_Event [Le] is set to “1”. If this event is available (ie, SPU_RdEventStat [Le] is set to “1”), the count for the SPU read event status channel is set to “1”. The Pend_Event [Le] bit is set when a channel write (wrch) is issued to an SPU write event acknowledgment channel (see page 144) with the Le bit set to “1” (ie, SPU_WrEventAck [Le]). Set to “0” when privileged software updates the SPU pending event register using an SPU channel access function with the corresponding bit set to “0” Is done.

SPUアウトバウンド・メールボックス使用可能イベントを処理するための手順の概要は図52に示されている。図52に示されている通り、この手順は、SPU読み取りイベント・マスク・チャネルに読み取りチャネル(rdch)命令を送信し、データを「マスク」に保存することから始まる(ステップ2810)。SPU_WrEventMask[Le]が「0」に設定されたSPU書き込みイベント・マスク・チャネルに対して書き込みチャネル命令を発行することにより、イベントがマスクされる。SPU_WrEventAck[Le]が1に設定されたSPU書き込みイベント確認応答チャネルに対する書き込みチャネル(wrch)命令を実行することにより、イベントが確認される(ステップ2830)。   An overview of the procedure for handling SPU outbound mailbox availability events is shown in FIG. As shown in FIG. 52, the procedure begins by sending a read channel (rdch) instruction to the SPU read event mask channel and storing the data in a “mask” (step 2810). By issuing a write channel instruction to an SPU write event mask channel with SPU_WrEventMask [Le] set to “0”, the event is masked. The event is confirmed by executing a write channel (wrch) command for the SPU write event acknowledge channel with SPU_WrEventAck [Le] set to 1 (step 2830).

SPU書き込みアウトバウンド・メールボックス・チャネルに対して読み取りチャネル・カウント(rchcnt)命令を発行することにより、チャネル・カウントが入手される(ステップ2840)。次にチャネル・カウントが「0」であるかどうかについて判別が行われる(ステップ2850)。チャネル・カウントが「0」ではない場合、SPU書き込みアウトバウンド・メールボックス・チャネルに対して書き込みチャネル(wrch)命令を発行することにより、新しいメールボックス・データ項目が書き込まれる(ステップ2860)。チャネル・カウントが「0」である場合、チャネル・カウントがもう一度読み取られる(ステップ2840)。その後、SPUアウトバウンド・メールボックス・ハンドラが終了する(ステップ2870)。SPU_WrEventMask[mask]によりSPU書き込みイベント・マスク・チャネルに対して書き込みチャネル(wrch)命令を発行することにより、「マスク」が復元される(ステップ2880)。次に、一般イベント・ハンドラが終了する(ステップ2890)。   The channel count is obtained by issuing a read channel count (rchcnt) instruction to the SPU write outbound mailbox channel (step 2840). Next, a determination is made as to whether the channel count is “0” (step 2850). If the channel count is not “0”, a new mailbox data item is written by issuing a write channel (wrch) instruction to the SPU write outbound mailbox channel (step 2860). If the channel count is “0”, the channel count is read again (step 2840). Thereafter, the SPU outbound mailbox handler ends (step 2870). The “mask” is restored by issuing a write channel (wrch) instruction to the SPU write event mask channel with SPU_WrEventMask [mask] (step 2880). Next, the general event handler ends (step 2890).

SPU信号通知2使用可能イベント
SPU信号通知2使用可能イベントは、他のプロセッサまたは装置が空のSPU信号通知2レジスタに書き込み、SPUを停止せずにSPU信号通知2チャネルを読み取れることをSPUプログラムに通知するために使用される。SPU信号通知2チャネルに関するチャネル・カウントが「0」(空)から「1」(有効)値に変化すると、このイベントが発生する。このイベントが使用可能であり(すなわち、SPU_RdEventStat[S2]が「1」である)、SPU読み取りイベント状況チャネルに関するカウントが「1」に設定されている場合、このイベントによりPend_Event[S2]が「1」に設定される。Pend_Event[S2]ビットは、S2ビットが「1」に設定されたSPU書き込みイベント確認応答チャネルに対してチャネル書き込み(wrch)が発行されたとき(SPU_WrEventAck[S2])、または対応するビットが「0」に設定されたSPUチャネル・アクセス機能を使用して、特権ソフトウェアがSPU保留イベント・レジスタを更新したときに、「0」に設定される。
SPU signal notification 2 enabled event The SPU signal notification 2 enabled event tells the SPU program that another processor or device can write to an empty SPU signal notification 2 register and read the SPU signal notification 2 channel without stopping the SPU. Used for notification. This event occurs when the channel count for the SPU signal notification 2 channel changes from “0” (empty) to “1” (valid) value. If this event is available (ie, SPU_RdEventStat [S2] is “1”) and the count for the SPU read event status channel is set to “1”, this event causes Pend_Event [S2] to be “1”. "Is set. The Pend_Event [S2] bit is set when the channel write (wrch) is issued to the SPU write event acknowledgment channel with the S2 bit set to “1” (SPU_WrEventAck [S2]) or the corresponding bit is “0”. Set to "0" when privileged software updates the SPU pending event register using the SPU channel access function set to "".

SPU信号通知2使用可能イベントを処理するための手順の概要は図53に示されている。図53に示されている通り、この手順は、SPU読み取りイベント・マスク・チャネルに読み取りチャネル(rdch)命令を送信し、データを「マスク」に保存することから始まる(ステップ2910)。SPU_WrEventMask[S2]が「0」に設定されたSPU書き込みイベント・マスク・チャネルに対して書き込みチャネル命令を発行することにより、イベントがマスクされる(ステップ2920)。SPU_WrEventAck[S2]が1に設定されたSPU書き込みイベント確認応答チャネルに対する書き込みチャネル(wrch)命令を実行することにより、イベントが確認される(ステップ2930)。   An overview of the procedure for processing the SPU signal notification 2 enabled event is shown in FIG. As shown in FIG. 53, the procedure begins by sending a read channel (rdch) command to the SPU read event mask channel and storing the data in a “mask” (step 2910). The event is masked by issuing a write channel instruction to the SPU write event mask channel with SPU_WrEventMask [S2] set to “0” (step 2920). The event is confirmed by executing a write channel (wrch) instruction for the SPU write event acknowledge channel with SPU_WrEventAck [S2] set to 1 (step 2930).

SPU信号通知2チャネルに対して読み取りチャネル・カウント(rchcnt)命令を発行することにより、チャネル・カウントが入手される(ステップ2940)。チャネル・カウントが「0」であるかどうかについて判別が行われる(ステップ2950)。チャネル・カウントが「0」ではない場合、SPU信号通知2チャネルに対して読み取りチャネル命令を発行することにより、信号データが読み取られる(ステップ2960)。その後、またはチャネル・カウントが「0」である場合、信号通知2ハンドラが終了する(ステップ2970)。SPU_WrEventMask[mask]によりSPU書き込みイベント・マスク・チャネルに対して書き込みチャネル(wrch)命令を発行することにより、「マスク」が復元される(ステップ2980)。次に、一般イベント・ハンドラが終了する(ステップ2990)。   The channel count is obtained by issuing a read channel count (rchcnt) instruction to the SPU signaling 2 channel (step 2940). A determination is made as to whether the channel count is “0” (step 2950). If the channel count is not “0”, the signal data is read by issuing a read channel command to the SPU signal notification 2 channel (step 2960). Thereafter, or when the channel count is “0”, the signal notification 2 handler ends (step 2970). The “mask” is restored by issuing a write channel (wrch) instruction to the SPU write event mask channel with SPU_WrEventMask [mask] (step 2980). Next, the general event handler ends (step 2990).

SPU信号通知1使用可能イベント
SPU信号通知1使用可能イベントは、他のプロセッサまたは装置が空のSPU信号通知1レジスタに書き込み、SPUを停止せずにSPU信号通知1チャネルを読み取れることをSPUプログラムに通知するために使用される。SPU信号通知1チャネルに関するチャネル・カウントが「0」(空)から「1」(有効)値に変化すると、このイベントが発生する。このイベントが使用可能であり(すなわち、SPU_RdEventStat[S1]が「1」である)、SPU読み取りイベント状況チャネルに関するカウントが「1」に設定されている場合、このイベントによりPend_Event[S1]が「1」に設定される。Pend_Event[S1]ビットは、S1ビットが「1」に設定されたSPU書き込みイベント確認応答チャネルに対してチャネル書き込み(wrch)が発行されたとき(SPU_WrEventAck[S1])、または対応するビットが「0」に設定されたSPUチャネル・アクセス機能を使用して、特権ソフトウェアがSPU保留イベント・レジスタを更新したときに、「0」に設定される。
SPU signal notification 1 enable event The SPU signal notification 1 enable event tells the SPU program that another processor or device can write to an empty SPU signal notification 1 register and read the SPU signal notification 1 channel without stopping the SPU. Used for notification. This event occurs when the channel count for the SPU signal notification 1 channel changes from “0” (empty) to “1” (valid) value. If this event is available (ie, SPU_RdEventStat [S1] is “1”) and the count for the SPU read event status channel is set to “1”, this event causes Pend_Event [S1] to be “1”. "Is set. The Pend_Event [S1] bit is set when the channel write (wrch) is issued to the SPU write event acknowledgment channel with the S1 bit set to “1” (SPU_WrEventAck [S1]) or the corresponding bit is “0”. Set to "0" when privileged software updates the SPU pending event register using the SPU channel access function set to "".

SPU信号通知1使用可能イベントを処理するための手順の概要は図54に示されている。図54に示されている通り、この手順は、SPU読み取りイベント・マスク・チャネルに読み取りチャネル(rdch)命令を送信し、データを「マスク」に保存することから始まる(ステップ3010)。SPU_WrEventMask[S1]が「0」に設定されたSPU書き込みイベント・マスク・チャネルに対して書き込みチャネル命令を発行することにより、イベントがマスクされる(ステップ3020)。SPU_WrEventAck[S1]が1に設定されたSPU書き込みイベント確認応答チャネルに対する書き込みチャネル(wrch)命令を実行することにより、イベントが確認される(ステップ3030)。   An overview of the procedure for processing the SPU signal notification 1 enabled event is shown in FIG. As shown in FIG. 54, the procedure begins by sending a read channel (rdch) instruction to the SPU read event mask channel and storing the data in a “mask” (step 3010). The event is masked by issuing a write channel instruction to the SPU write event mask channel with SPU_WrEventMask [S1] set to “0” (step 3020). The event is confirmed by executing a write channel (wrch) command for the SPU write event acknowledgment channel with SPU_WrEventAck [S1] set to 1 (step 3030).

SPU信号通知1チャネルに対して読み取りチャネル・カウント(rchcnt)命令を発行することにより、チャネル・カウントが入手される(ステップ3040)。チャネル・カウントが「0」であるかどうかについて判別が行われる(ステップ3050)。   A channel count is obtained by issuing a read channel count (rchcnt) instruction to the SPU signal notification 1 channel (step 3040). A determination is made as to whether the channel count is “0” (step 3050).

チャネル・カウントが「0」ではない場合、SPU信号通知1チャネルに対して読み取りチャネル命令を発行することにより、信号データが読み取られる(ステップ3060)。その後、またはチャネル・カウントが「0」である場合、信号通知1ハンドラが終了する(ステップ3070)。SPU_WrEventMask[mask]によりSPU書き込みイベント・マスク・チャネルに対して書き込みチャネル(wrch)命令を発行することにより、「マスク」が復元される(ステップ3080)。次に、一般イベント・ハンドラが終了する(ステップ3090)。   If the channel count is not “0”, the signal data is read by issuing a read channel command to the SPU signal notification 1 channel (step 3060). Thereafter, or when the channel count is “0”, the signal notification 1 handler ends (step 3070). The “mask” is restored by issuing a write channel (wrch) instruction to the SPU write event mask channel with SPU_WrEventMask [mask] (step 3080). Next, the general event handler ends (step 3090).

ロック・ライン予約消失イベント
ロック・ライン予約消失イベントは、結果的にキャッシュ・ライン上の予約の消失になるバス・アクションについてSPUプログラムに通知するために使用される。ロック・ライン予約取得(getllar)コマンドを発行することにより、SPUプログラムによって予約が取得される。他のプロセッサまたは装置が予約付きのキャッシュ・ラインを変更すると、予約が消失する。
Lock Line Reservation Lost Event The Lock Line Reservation Lost Event is used to notify the SPU program about bus actions that result in the loss of reservation on the cache line. A reservation is acquired by the SPU program by issuing a lock line reservation acquisition (getllar) command. If another processor or device changes a reserved cache line, the reservation is lost.

また、特権ソフトウェアがMFCアトミック・フラッシュ・レジスタ内にフラッシュ・ビットを書き込んだ(MFC_Atomic_Flush[F]が「1」に設定される)場合も予約を消失することができる。予約が消失すると、このイベントが発生する。このイベントが発生すると、Pend_Event[Lr]が「1」に設定される。このイベントが使用可能である(すなわち、SPU_RdEventStat[Lr]が「1」に設定されている)場合、SPU読み取りイベント状況チャネルに関するカウントが「1」に設定される。Pend_Event[Lr]ビットは、Lrビットが「1」に設定されたSPU書き込みイベント確認応答チャネルに対してチャネル書き込み(wrch)が発行されたとき(SPU_WrEventAck[Lr])、または対応するビットが「0」に設定されたSPUチャネル・アクセス機能を使用して、特権ソフトウェアがSPU保留イベント・レジスタを更新したときに、「0」に設定される。   The reservation can also be lost when privileged software writes a flash bit into the MFC atomic flash register (MFC_Atomic_Flush [F] is set to “1”). This event occurs when the reservation is lost. When this event occurs, Pend_Event [Lr] is set to “1”. If this event is available (ie, SPU_RdEventStat [Lr] is set to “1”), the count for the SPU read event status channel is set to “1”. The Pend_Event [Lr] bit is set when the channel write (wrch) is issued to the SPU write event acknowledgment channel with the Lr bit set to “1” (SPU_WrEventAck [Lr]) or the corresponding bit is “0”. Set to "0" when privileged software updates the SPU pending event register using the SPU channel access function set to "".

ロック・ライン予約消失イベントを処理するための手順の概要は図55に示されている。図55に示されている通り、この動作は、SPU読み取りイベント・マスク・チャネルに対して読み取りチャネル(rdch)命令を発行し、データを「マスク」に保存することから始まる(ステップ3110)。SPU_WrEventMask[Lr]が「0」に設定されたSPU書き込みイベント・マスク・チャネルに対して書き込みチャネル(wrch)命令を発行することにより、イベントがマスクされる(ステップ3120)。SPU_WrEventAck[Lr]が1に設定されたSPU書き込みイベント確認応答チャネルに対する書き込みチャネル(wrch)命令を実行することにより、イベントが確認される(ステップ3130)。   An overview of the procedure for handling a lock line reservation lost event is shown in FIG. As shown in FIG. 55, this operation begins by issuing a read channel (rdch) instruction to the SPU read event mask channel and storing the data in a “mask” (step 3110). The event is masked by issuing a write channel (wrch) instruction to the SPU write event mask channel with SPU_WrEventMask [Lr] set to “0” (step 3120). The event is confirmed by executing a write channel (wrch) instruction for the SPU write event acknowledge channel with SPU_WrEventAck [Lr] set to 1 (step 3130).

ロック・ライン・エリア内のデータをシステム変更したことに応答して、アプリケーション固有の機能が実行される(ステップ3140)。これは、通常、ロック・ラインが依然としてモニターされているかどうかを判別するためにメモリ内のソフトウェア構造をチェックすることによって開始される。依然として、それを「待っている」場合、次のステップは、通常、新しいデータを入手し、次にそのデータに作用するために変更された同じロック・ライン・エリアに対してgetllarコマンドを発行することから構成されるであろう。   In response to the system change of data in the lock line area, application specific functions are performed (step 3140). This is usually initiated by checking the software structure in memory to determine if the lock line is still being monitored. If still "waiting" for it, the next step is usually to get new data and then issue a getllar command to the same lock line area that has been modified to act on that data Will be composed of.

次に、ロック・ライン予約消失イベント・ハンドラが終了する(ステップ3150)。SPU_WrEventMask[mask]によりSPU書き込みイベント・マスク・チャネルに対して書き込みチャネル(wrch)命令を発行することにより、「マスク」が復元される(ステップ3160)。次に、一般イベント・ハンドラが終了し(ステップ3170)、手順が終了する。   Next, the lock line reservation disappearance event handler ends (step 3150). The “mask” is restored by issuing a write channel (wrch) instruction to the SPU write event mask channel with SPU_WrEventMask [mask] (step 3160). Next, the general event handler ends (step 3170) and the procedure ends.

特権アテンション・イベント
特権アテンション・イベントは、特権ソフトウェアがSPUプログラムからアテンションを要求していることをSPUプログラムに通知するために使用される。特権ソフトウェアは、SPU特権制御レジスタ内のアテンション・イベント要求ビットに「1」を書き込む(すなわち、SPU_PrivCntl[A]が「1」に設定される)ことにより、アテンションを要求する。このイベントが使用可能であり(すなわち、SPU_RdEventStat[A]が「1」である)、SPU読み取りイベント状況チャネルに関するカウントが「1」に設定されている場合、このイベントによりPend_Event[A]が「1」に設定される。Pend_Event[A]ビットは、Aビットが設定されたSPU書き込みイベント確認応答チャネルに対してチャネル書き込み(wrch)が発行されたとき(すなわち、SPU_WrEventAck[A]が「1」である)、または対応するビットが「0」に設定されたSPUチャネル・アクセス機能を使用して、特権ソフトウェアがSPU保留イベント・レジスタを更新したときに、「0」に設定される。
Privileged attention event The privileged attention event is used to notify the SPU program that the privileged software is requesting attention from the SPU program. The privileged software requests attention by writing “1” to the attention event request bit in the SPU privilege control register (that is, SPU_PrivCntl [A] is set to “1”). If this event is available (ie, SPU_RdEventStat [A] is “1”) and the count for the SPU read event status channel is set to “1”, this event causes Pend_Event [A] to be “1”. "Is set. The Pend_Event [A] bit corresponds when a channel write (wrch) is issued to the SPU write event acknowledgment channel with the A bit set (ie, SPU_WrEventAck [A] is “1”) or Set to "0" when privileged software updates the SPU pending event register using the SPU channel access function with the bit set to "0".

特権アテンション・イベントを処理するための手順の概要は図56に示されている。図56に示されている通り、この手順は、SPU読み取りイベント・マスク・チャネルに読み取りチャネル(rdch)命令を発行し、データを「マスク」に保存することから始まる(ステップ3210)。SPU_WrEventMask[A]が「0」に設定されたSPU書き込みイベント・マスク・チャネルに対して書き込みチャネル命令を発行することにより、イベントがマスクされる(ステップ3220)。SPU_WrEventAck[A]が1に設定されたSPU書き込みイベント確認応答チャネルに対する書き込みチャネル(wrch)命令を実行することにより、イベントが確認される(ステップ3230)。   An overview of the procedure for handling privileged attention events is shown in FIG. As shown in FIG. 56, the procedure begins by issuing a read channel (rdch) instruction to the SPU read event mask channel and storing the data in a “mask” (step 3210). The event is masked by issuing a write channel instruction to the SPU write event mask channel with SPU_WrEventMask [A] set to “0” (step 3220). The event is confirmed by executing a write channel (wrch) instruction for the SPU write event acknowledge channel with SPU_WrEventAck [A] set to 1 (step 3230).

特権アテンション・イベントに応答して、アプリケーション固有の機能が実行される(ステップ3240)。これは、たとえば、SPUの歩留まりが要求されていることを通知するため、またはその他の何らかのアクションのために使用することができる。特権アテンション・イベントに対するアプリケーションまたはオペレーティング・システム固有の応答は、停止通知(stop and signal)、SPUインバウンド・メールボックス書き込み、SPUアウトバウンド割り込みメールボックス書き込み、あるいはシステムまたは入出力メモリ空間内の状況の更新などとして発行しなければならない。   In response to the privileged attention event, application specific functions are performed (step 3240). This can be used, for example, to notify that the SPU yield is required or for some other action. Application or operating system specific responses to privileged attention events include stop and signal, SPU inbound mailbox write, SPU outbound interrupt mailbox write, or status update in system or I / O memory space Must be issued as

特権アテンション・イベント・ハンドラが終了する(ステップ3250)。SPU_WrEventMask[mask]によりSPU書き込みイベント・マスク・チャネルに対して書き込みチャネル(wrch)命令を発行することにより、「マスク」が復元される(ステップ3260)。次に、一般イベント・ハンドラが終了する(ステップ3270)。   The privileged attention event handler ends (step 3250). The “mask” is restored by issuing a write channel (wrch) instruction to the SPU write event mask channel with SPU_WrEventMask [mask] (step 3260). Next, the general event handler ends (step 3270).

マルチソース同期イベント
マルチソース同期イベントは、マルチソース同期要求が完了したことをSPUプログラムに通知するために使用される。マルチソース同期は、MFC書き込みマルチソース同期要求チャネル(MFC_WrMSSyncReq)に書き込む(wrch)ことにより要求される。このイベントは、MFC書き込みマルチソース同期要求チャネル(MFC_WrMSSyncReq)に関するチャネル・カウントが「0」から「1」に変化すると発生する。このイベントが使用可能であり(すなわち、SPU_RdEventStat[Ms]が「1」である)、SPU読み取りイベント状況チャネルに関するカウントが「1」に設定されている場合、このイベントによりPend_Event[Ms]が「1」に設定される。Pend_Event[Ms]ビットは、Msビットが設定されたSPU書き込みイベント確認応答チャネルに対してチャネル書き込み(wrch)が発行されたとき(すなわち、SPU_WrEventAck[Ms]が「1」に設定されている)、または対応するビットが「0」に設定されたSPUチャネル・アクセス機能を使用して、特権ソフトウェアがSPU保留イベント・レジスタを更新したときに、「0」に設定される。マルチソース同期イベントは、マルチソース同期要求を発行する前にクリアしなければならない。
Multi-source synchronization event The multi-source synchronization event is used to notify the SPU program that a multi-source synchronization request has been completed. Multi-source synchronization is requested by writing to the MFC write multi-source synchronization request channel (MFC_WrMSSyncReq). This event occurs when the channel count for the MFC write multi-source synchronization request channel (MFC_WrMSSyncReq) changes from “0” to “1”. If this event is available (ie, SPU_RdEventStat [Ms] is “1”) and the count for the SPU read event status channel is set to “1”, this event causes Pend_Event [Ms] to be “1”. "Is set. The Pend_Event [Ms] bit is used when a channel write (wrch) is issued to the SPU write event acknowledgment channel with the Ms bit set (ie, SPU_WrEventAck [Ms] is set to “1”). Or set to “0” when privileged software updates the SPU pending event register using the SPU channel access function with the corresponding bit set to “0”. Multi-source synchronization events must be cleared before issuing a multi-source synchronization request.

マルチソース同期イベントを処理するための手順の概要は図57に示されている。図57に示されている通り、この手順は、SPU読み取りイベント・マスク・チャネルに読み取りチャネル(rdch)命令を送信し、データを「マスク」に保存することから始まる(ステップ3310)。SPU_WrEventMask[Tm]が「0」に設定されたSPU書き込みイベント・マスク・チャネルに対して書き込みチャネル命令を発行することにより、イベントがマスクされる(ステップ3320)。SPU_WrEventAck[Ms]が1に設定されたSPU書き込みイベント確認応答チャネルに対する書き込みチャネル(wrch)命令を実行することにより、イベントが確認される(ステップ3330)。   An overview of the procedure for handling multi-source synchronization events is shown in FIG. As shown in FIG. 57, the procedure begins by sending a read channel (rdch) command to the SPU read event mask channel and storing the data in a “mask” (step 3310). The event is masked by issuing a write channel instruction to the SPU write event mask channel with SPU_WrEventMask [Tm] set to “0” (step 3320). The event is confirmed by executing a write channel (wrch) instruction for the SPU write event acknowledgment channel with SPU_WrEventAck [Ms] set to 1 (step 3330).

保留中のマルチソース同期動作の完了に応答して、アプリケーション固有の機能が実行される(ステップ3340)。これは、典型的には、たとえば、特定のバッファ内のデータが完全に更新されたか、またはバッファ・エリアがもはや使用されていないという表示になるであろう。マルチソース同期イベント・ハンドラが終了する(ステップ3350)。SPU_WrEventMask[mask]によりSPU書き込みイベント・マスク・チャネルに対して書き込みチャネル(wrch)命令を発行することにより、「マスク」が復元される(ステップ3360)。次に、一般イベント・ハンドラが終了する(ステップ3370)。   In response to completing the pending multi-source synchronization operation, application-specific functions are performed (step 3340). This will typically be an indication, for example, that the data in a particular buffer has been completely updated or that the buffer area is no longer in use. The multi-source synchronous event handler ends (step 3350). The “mask” is restored by issuing a write channel (wrch) instruction to the SPU write event mask channel with SPU_WrEventMask [mask] (step 3360). Next, the general event handler ends (step 3370).

要約すると、本発明は、ローカル記憶装置にかかる負担を低減し、データ、自由空間、またはイベントが発生するのを待っているときにプロセッサが低電力状態のままでいることができるようにする、プロセッサと外部装置との間の通信を容易にするためのメカニズムを提供する。本発明のメカニズムは、プロセッサ、メモリ・フロー・コントローラ、マシン状態レジスタ、および外部プロセッサ割り込み機能の様々な機能と通信するための複数のチャネルを提供する。これらのチャネルは、命令、命令パラメータ、プロセッサ間情報、信号通知、マシン分離情報、マシン割り込み状態情報、生成されたイベントを提供し、イベント処理を実行するために使用することができる。   In summary, the present invention reduces the burden on local storage and allows the processor to remain in a low power state when waiting for data, free space, or events to occur. A mechanism is provided for facilitating communication between the processor and an external device. The mechanism of the present invention provides multiple channels to communicate with various functions of the processor, memory flow controller, machine state register, and external processor interrupt function. These channels provide instructions, instruction parameters, interprocessor information, signal notification, machine isolation information, machine interrupt status information, generated events, and can be used to perform event processing.

本発明は完全に機能するデータ処理システムに関連して説明されているが、当業者であれば、本発明のプロセスが複数命令からなるコンピュータ可読媒体の形式および様々な形式で配布可能であり、その配布を実行するために実際に使用される信号伝送媒体の特定のタイプにかかわらず、本発明が等しく適用されることは留意すべき重要なことである。コンピュータ可読媒体の例としては、フレキシブル・ディスク、ハード・ディスク、RAM、CD−ROM、DVD−ROMなどの記録可能タイプの媒体と、たとえば、電波および光波伝送などの伝送形式を使用する、デジタルおよびアナログ通信リンク、有線または無線通信リンクなどの伝送タイプの媒体とを含む。コンピュータ可読媒体は、特定のデータ処理システムで実際に使用するためにデコードされたコード化フォーマットの形を取ることができる。   Although the present invention has been described in the context of a fully functional data processing system, one of ordinary skill in the art can distribute the processes of the present invention in the form of a computer readable medium consisting of multiple instructions and in various formats, It is important to note that the present invention applies equally regardless of the particular type of signal transmission medium actually used to perform the distribution. Examples of computer readable media include recordable type media such as flexible disk, hard disk, RAM, CD-ROM, DVD-ROM, and digital and digital formats that use transmission formats such as radio wave and light wave transmission, for example. Transmission type media such as analog communication links, wired or wireless communication links. The computer readable medium may take the form of a coded format that is decoded for actual use in a particular data processing system.

本発明の説明は、例示および解説のために提示されたものであり、網羅するためまたは開示された形式の本発明に限定するためのものではない。多くの変更および変形は当業者には明白なものになるであろう。本発明の原理、実用的な応用例を最も良く説明するため、ならびに企図された特定の使用に適した様々な変更を含む様々な実施形態に関して本発明を他の当業者が理解できるようにするために、実施形態は選択され記載されている。   The description of the present invention has been presented for purposes of illustration and description, and is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to practitioners skilled in this art. In order to best illustrate the principles of the invention, practical applications, and to enable others skilled in the art to understand the invention with respect to various embodiments, including various modifications suitable for the particular intended use. For this reason, embodiments have been selected and described.

本発明の模範的な一実施形態によるブロードバンド・プロセッサ・アーキテクチャ(BPA)の模範的なブロック図である。FIG. 2 is an exemplary block diagram of a broadband processor architecture (BPA) according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態による典型的なMFC200の模範的なブロック図である。FIG. 3 is an exemplary block diagram of an exemplary MFC 200 according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるMFCコマンドに関するパラメータ・ニーモニックを例示する模範的な図である。FIG. 4 is an exemplary diagram illustrating parameter mnemonics for MFC commands according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるDMAリスト・コマンドの詳細を例示する模範的な図である。FIG. 6 is an exemplary diagram illustrating details of a DMA list command according to an exemplary embodiment of the present invention. 米国特許出願公開第2004/0264445号に記載されているメカニズムによる1対のチャネルのためのチャネル回路に関するSPU発行制御ロジックおよびデータ・フローの配置を例示する模範的な図である。FIG. 2 is an exemplary diagram illustrating the placement of SPU issue control logic and data flow for a channel circuit for a pair of channels in accordance with the mechanism described in US Patent Application Publication No. 2004/0264445. 本発明の模範的な一実施形態によるチャネル・インターフェースの模範的な動作の概要を示す流れ図である。5 is a flow diagram illustrating an exemplary operation overview of a channel interface according to an exemplary embodiment of the present invention. 本発明の一実施形態によってチャネルが使用される方法を例示する模範的な図である。FIG. 4 is an exemplary diagram illustrating a method in which channels are used according to one embodiment of the present invention. 本発明の模範的な一実施形態によるSPUチャネル・マップをリストする模範的な図である。FIG. 4 is an exemplary diagram listing an SPU channel map according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるSPUチャネル・マップをリストする模範的な図である。FIG. 4 is an exemplary diagram listing an SPU channel map according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるMFCコマンド命令コード・チャネルの詳細を例示する模範的な図である。FIG. 4 is an exemplary diagram illustrating details of an MFC command instruction code channel according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるMFCクラスIDチャネルの詳細を例示する模範的な図である。FIG. 4 is an exemplary diagram illustrating details of an MFC class ID channel according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態による8Wayセット連想キャッシュのための典型的なRMT項目を描写する図である。FIG. 6 depicts an exemplary RMT entry for an 8-Way set associative cache according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるMFCコマンド・タグ識別チャネルの詳細を例示する模範的な図である。FIG. 4 is an exemplary diagram illustrating details of an MFC command tag identification channel according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるMFC転送サイズまたはリスト・サイズ・チャネルの詳細を例示する模範的な図である。FIG. 6 is an exemplary diagram illustrating details of an MFC transfer size or list size channel according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるMFCローカル記憶アドレス・チャネルの詳細を例示する模範的な図である。FIG. 4 is an exemplary diagram illustrating details of an MFC local storage address channel according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるMFC有効アドレス・ローまたはリスト・アドレス・チャネルの詳細を例示する模範的な図である。FIG. 4 is an exemplary diagram illustrating details of an MFC effective address row or list address channel according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるMFC有効アドレス・ハイ・チャネルの詳細を例示する模範的な図である。FIG. 4 is an exemplary diagram illustrating details of an MFC effective address high channel according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるMFCコマンド・パラメータを書き込むための模範的な動作の概要を示す流れ図である。3 is a flowchart illustrating an exemplary operation overview for writing MFC command parameters according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるMFC書き込みタグ・グループ照会マスク・チャネルの詳細を例示する模範的な図である。FIG. 4 is an exemplary diagram illustrating details of an MFC write tag group query mask channel according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるMFC読み取りタグ・グループ照会マスク・チャネルの詳細を例示する模範的な図である。FIG. 6 is an exemplary diagram illustrating details of an MFC read tag group query mask channel according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるMFC書き込みタグ状況更新要求チャネルの詳細を例示する模範的な図である。FIG. 6 is an exemplary diagram illustrating details of an MFC write tag status update request channel according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるMFC読み取りタグ・グループ状況チャネルの詳細を例示する模範的な図である。FIG. 6 is an exemplary diagram illustrating details of an MFC read tag group status channel according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるMFC読み取りリスト停止通知タグ状況チャネルの詳細を例示する模範的な図である。FIG. 6 is an exemplary diagram illustrating details of an MFC read list stop notification tag status channel according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるMFC書き込みリスト停止通知タグ確認応答チャネルの詳細を例示する模範的な図である。FIG. 6 is an exemplary diagram illustrating details of an MFC write list stop notification tag acknowledgment channel according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるMFC読み取りアトミック・コマンド状況チャネルの詳細を例示する模範的な図である。FIG. 4 is an exemplary diagram illustrating details of an MFC read atomic command status channel according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるMFCコマンドの完了またはMFCコマンド・グループの完了についてポーリングするための模範的な動作の概要を示す流れ図である。6 is a flow diagram illustrating an overview of an exemplary operation for polling for MFC command completion or MFC command group completion, according to an exemplary embodiment of the invention. 本発明の模範的な一実施形態によりタグ・グループ更新を待つかまたはイベント(1つまたは複数のタグ・グループ完了)を待つための模範的な動作の概要を示す流れ図である。6 is a flow diagram illustrating an overview of an exemplary operation for waiting for a tag group update or waiting for an event (one or more tag group completions) according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態により条件付きタグ・イベントを待つかまたは条件付きタグ・イベントについてポーリングすることに対する代替策としてSPUイベント機能を使用するための模範的な動作の概要を示す流れ図である。FIG. 6 is a flow diagram illustrating an exemplary operation for using the SPU event function as an alternative to waiting for a conditional tag event or polling for a conditional tag event according to an exemplary embodiment of the present invention. is there. 本発明の模範的な一実施形態によりMFC DMAリスト・コマンドが停止通知フラグが設定されたリスト・エレメントに到達したかどうかを判別するためにポーリングするための模範的な動作の概要を示す流れ図である。FIG. 5 is a flow diagram illustrating an overview of exemplary operations for polling to determine if an MFC DMA list command has reached a list element with a stop notification flag set according to an exemplary embodiment of the present invention. is there. 本発明の模範的な一実施形態により停止通知フラグが設定されたリスト・エレメントに到達するためのMFC DMAリスト・コマンドを待つための模範的な動作の概要を示す流れ図である。6 is a flow diagram outlining an exemplary operation for waiting for an MFC DMA list command to reach a list element with a stop notification flag set according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によりリスト停止通知タグ・グループ状況を待つかまたはリスト停止通知タグ・グループ状況についてポーリングすることに対する代替策としてSPUイベント機能を使用するための模範的な動作の概要を示す流れ図である。Exemplary Operational Overview for Using SPU Event Function as an Alternative to Waiting for List Stop Notification Tag Group Status or Polling for List Stop Notification Tag Group Status In accordance with an exemplary embodiment of the present invention It is a flowchart which shows. 本発明の模範的な一実施形態によるMFC書き込みマルチソース同期要求チャネルの詳細を例示する模範的な図である。FIG. 6 is an exemplary diagram illustrating details of an MFC write multi-source synchronization request channel according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるSPU書き込みアウトバウンド・メールボックス・チャネルの詳細を例示する模範的な図である。FIG. 4 is an exemplary diagram illustrating details of an SPU write outbound mailbox channel according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるSPU書き込みアウトバウンド割り込みメールボックス・チャネルの詳細を例示する模範的な図である。FIG. 4 is an exemplary diagram illustrating details of an SPU write outbound interrupt mailbox channel according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるSPU読み取りインバウンド・メールボックス・チャネルの詳細を例示する模範的な図である。FIG. 4 is an exemplary diagram illustrating details of an SPU read inbound mailbox channel according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるSPU信号通知チャネルの詳細を例示する模範的な図である。FIG. 4 is an exemplary diagram illustrating details of an SPU signaling channel according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるSPU書き込みデクリメンタ・チャネルの詳細を例示する模範的な図である。FIG. 6 is an exemplary diagram illustrating details of an SPU write decrementer channel according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるSPU読み取りデクリメンタ・チャネルの詳細を例示する模範的な図である。FIG. 6 is an exemplary diagram illustrating details of an SPU read decrementer channel according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるSPU読み取りマシン状況チャネルの詳細を例示する模範的な図である。FIG. 4 is an exemplary diagram illustrating details of an SPU read machine status channel according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるSPU書き込み状態保存復元チャネルの詳細を例示する模範的な図である。FIG. 4 is an exemplary diagram illustrating details of an SPU write state save and restore channel according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるSPU読み取り状態保存復元チャネルの詳細を例示する模範的な図である。FIG. 6 is an exemplary diagram illustrating details of an SPU read state save and restore channel according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるSPUイベント機能の論理表現を例示する模範的なブロック図である。FIG. 6 is an exemplary block diagram illustrating a logical representation of SPU event functionality according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるSPU読み取りイベント状況チャネルの詳細を例示する模範的な図である。FIG. 4 is an exemplary diagram illustrating details of an SPU read event status channel according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるSPU書き込みイベント・マスク・チャネルの詳細を例示する模範的な図である。FIG. 4 is an exemplary diagram illustrating details of an SPU write event mask channel according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるSPU読み取りイベント・マスク・チャネルの詳細を例示する模範的な図である。FIG. 6 is an exemplary diagram illustrating details of an SPU read event mask channel according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態によるSPU書き込みイベント確認応答チャネルの詳細を例示する模範的な図である。FIG. 4 is an exemplary diagram illustrating details of an SPU write event acknowledgment channel according to an exemplary embodiment of the present invention. 本発明の一実施形態によるMFC DMAリスト・コマンド停止通知イベントを処理するための模範的な動作の概要を示す流れ図である。6 is a flow diagram illustrating an overview of an exemplary operation for processing an MFC DMA list command stop notification event according to an embodiment of the present invention. 本発明の一実施形態によるMFC SPUコマンド・キュー使用可能イベントを処理するための模範的な動作の概要を示す流れ図である。4 is a flowchart illustrating an overview of an exemplary operation for processing an MFC SPU command queue available event according to an embodiment of the present invention. 本発明の一実施形態によるSPUインバウンド・メールボックス使用可能イベントを処理するための模範的な動作の概要を示す流れ図である。6 is a flowchart illustrating an overview of an exemplary operation for processing an SPU inbound mailbox availability event according to an embodiment of the present invention. 本発明の一実施形態によるSPUデクリメンタ・イベントを処理するための模範的な動作の概要を示す流れ図である。4 is a flowchart illustrating an overview of an exemplary operation for processing an SPU decrementer event according to an embodiment of the present invention. 本発明の一実施形態によるSPUアウトバウンド割り込みメールボックス使用可能イベントを処理するための模範的な動作の概要を示す流れ図である。4 is a flow diagram illustrating an overview of an exemplary operation for handling an SPU outbound interrupt mailbox enable event according to an embodiment of the present invention. 本発明の一実施形態によるSPUアウトバウンド・メールボックス使用可能イベントを処理するための模範的な動作の概要を示す流れ図である。6 is a flow diagram illustrating an overview of an exemplary operation for processing an SPU outbound mailbox availability event according to an embodiment of the present invention. 本発明の一実施形態によるSPU信号通知2使用可能イベントを処理するための模範的な動作の概要を示す流れ図である。4 is a flow diagram illustrating an overview of an exemplary operation for processing an SPU signal notification 2 enabled event according to an embodiment of the present invention. 本発明の一実施形態によるSPU信号通知1使用可能イベントを処理するための模範的な動作の概要を示す流れ図である。4 is a flow diagram illustrating an overview of an exemplary operation for processing an SPU signal notification 1 enable event according to an embodiment of the present invention. 本発明の模範的な一実施形態によるロック・ライン予約消失イベントを処理するための模範的な動作の概要を示す流れ図である。6 is a flow diagram illustrating an overview of an exemplary operation for processing a lock line reservation loss event according to an exemplary embodiment of the present invention. 本発明の模範的な一実施形態による特権アテンション・イベントを処理するための模範的な動作の概要を示す流れ図である。5 is a flow diagram illustrating an overview of an exemplary operation for handling privileged attention events according to an exemplary embodiment of the present invention. 本発明の一実施形態によるマルチソース同期イベントを処理するための模範的な動作の概要を示す流れ図である。4 is a flow diagram illustrating an overview of an exemplary operation for processing a multi-source synchronization event according to an embodiment of the present invention.

Claims (16)

データ処理システム内で、プロセッサ内のイベントに関連する命令およびデータを伝達するための方法であって、
イベント・データを伝達するために前記プロセッサのイベント機能を有する1つまたは複数のチャネルを確立するステップであって、チャネル・マップ・リスト中のチャネルIDにより前記1つまたは複数のチャネルを指定することを含む、ステップと、
前記1つまたは複数のチャネルを介してデータを受信するステップと、
前記1つまたは複数のチャネルに関連する1つまたは複数のレジスタに前記データを保管するステップと、
前記1つまたは複数のレジスタに保管された前記データに基づいて1つまたは複数のイベントを処理するステップと、を含み、
前記イベント機能が保留イベント・レジスタを含み、エッジ起動型イベントが前記エッジ起動型イベントに対応する前記保留イベント・レジスタ内のビットを設定し、
書き込みイベント確認応答チャネル・ハードウェア内の対応ビットに値を書き込むことにより、前記保留イベント・レジスタ内のビットによってイベントが確認され、
読み取りイベント状況チャネル・ハードウェアに対して読み取りチャネル命令を発行することにより、書き込みイベント・マスク・チャネル・ハードウェア内の値と論理積が取られた前記保留イベント・レジスタ内の値が返され、それにより、前記書き込みイベント・マスク・チャネル・ハードウェア内で識別された使用可能イベントのみに関するイベント状況情報を提供し、
新しい値が前記書き込みイベント・マスク・チャネル・ハードウェアに書き込まれたときまたは新しいイベントが前記保留イベント・レジスタに記録されたときに、前記読み取りイベント状況チャネル・ハードウェアの内容が変更され、
前記読み取りイベント状況チャネル・ハードウェア内のビットを変更することにより、前記読み取りイベント状況チャネル・ハードウェア内に保管された読み取りイベント状況チャネル・カウント値が1だけ増分され、
書き込みチャネル命令が書き込みイベント確認応答チャネル・ハードウェアに送信された後、前記読み取りイベント状況チャネル・ハードウェア内にイベントが設定されたときに、前記読み取りイベント状況チャネル・カウント値が1だけ増分され、
チャネル読み取り命令を使用して前記読み取りイベント状況チャネル・ハードウェア内のデータが読み取られたときに、前記読み取りイベント状況チャネル・カウント値が1だけ減分され
前記読み取りイベント状況チャネル・カウント値がゼロ以外であるときに、前記プロセッサに割り込みが送信される、方法。
A method for communicating instructions and data related to events in a processor within a data processing system comprising:
Establishing one or more channels having the event function of the processor to convey event data, wherein the one or more channels are specified by a channel ID in a channel map list. Including steps, and
Receiving a data through the one or more channels,
Storing the data in one or more registers associated with the one or more channels;
Look including the steps of: processing one or more events based on the data stored in said one or more registers,
The event function includes a pending event register, an edge triggered event sets a bit in the pending event register corresponding to the edge triggered event;
The event is acknowledged by a bit in the pending event register by writing a value to the corresponding bit in the write event acknowledge channel hardware,
Issuing a read channel instruction to the read event status channel hardware returns the value in the pending event register that is ANDed with the value in the write event mask channel hardware, Thereby providing event status information relating only to available events identified within the write event mask channel hardware;
When a new value is written to the write event mask channel hardware or when a new event is recorded in the pending event register, the content of the read event status channel hardware is changed,
By changing a bit in the read event status channel hardware, the read event status channel count value stored in the read event status channel hardware is incremented by one;
After a write channel instruction is sent to the write event acknowledge channel hardware, when an event is set in the read event status channel hardware, the read event status channel count value is incremented by one;
The read event status channel count value is decremented by one when data in the read event status channel hardware is read using a channel read instruction ;
The method wherein an interrupt is sent to the processor when the read event status channel count value is non-zero .
前記1つまたは複数のチャネルがプロセッサ読み取りイベント状況チャネル・ハードウェアを含み、前記プロセッサ読み取りイベント状況チャネル・ハードウェアが、プロセッサ書き込みイベント・マスク・チャネル・ハードウェア中に保管された値によって使用可能になったすべてのイベントの現行状況を特定するビットを含む、請求項1に記載の方法。   The one or more channels include processor read event status channel hardware, and the processor read event status channel hardware is enabled by a value stored in the processor write event mask channel hardware The method of claim 1 including a bit identifying the current status of all events that have become. 前記プロセッサ読み取りイベント状況チャネル・ハードウェアに関連するチャネル・カウント値がゼロである場合、前記プロセッサ読み取りイベント状況チャネル・ハードウェアに対して読み取りチャネル命令を発行することにより、前記プロセッサが停止する、請求項に記載の方法。 The processor halts by issuing a read channel instruction to the processor read event status channel hardware if a channel count value associated with the processor read event status channel hardware is zero. Item 3. The method according to Item 2 . イベントが発生し、プロセッサ書き込みイベント・マスク・チャネル・ハードウェア内の前記イベントに関する対応ビットが1である場合、プロセッサ保留イベント・レジスタ内の1に対応するビット位置の1がプロセッサ書き込みイベント・マスク・チャネル・ハードウェアに書き込まれた場合、プロセッサ書き込みイベント確認応答チャネル・ハードウェアに書き込みチャネル命令が送信された後、使用可能イベントが保留中である場合、またはプロセッサ・チャネル・アクセス機能を使用して、特権ソフトウェアが前記チャネル・カウントを1に設定した場合、前記プロセッサ読み取りイベント状況チャネル・ハードウェアに関連するチャネル・カウントが1に設定される、請求項に記載の方法。 If an event occurs and the corresponding bit for the event in the processor write event mask channel hardware is 1, the 1 in the bit position corresponding to 1 in the processor pending event register is the processor write event mask When written to channel hardware, after a write channel instruction is sent to the processor write event acknowledge channel hardware, an available event is pending, or using the processor channel access function The method of claim 2 , wherein if privileged software sets the channel count to 1, the channel count associated with the processor read event status channel hardware is set to 1. 1つまたは複数のイベントを処理する前記ステップが、
発生したイベントを識別するために、前記プロセッサ読み取りイベント状況チャネル・ハードウェアに対して読み取りチャネル命令を発行するステップと、
処理すべきすべてのイベントについてプロセッサ書き込みイベント確認応答チャネル・ハードウェア内の対応ビットを書き込むために書き込みチャネル命令を発行するステップと、
前記イベントを処理するステップと、を含む、請求項に記載の方法。
Said step of processing one or more events comprises:
Issuing a read channel instruction to the processor read event status channel hardware to identify an event that has occurred;
Issuing a write channel instruction to write corresponding bits in the processor write event acknowledge channel hardware for all events to be processed;
Comprising the steps of: processing said event The method of claim 2.
前記1つまたは複数のチャネルがプロセッサ書き込みイベント・マスク・チャネル・ハードウェアを含み、
プロセッサ書き込みイベント・マスク・チャネル・ハードウェアが、プロセッサ読み取りイベント状況チャネルの状態に影響するイベントを識別するプロセッサ・イベント・マスクを含み、
前記プロセッサ書き込みイベント・マスク・チャネル・ハードウェアに対して発行された書き込みチャネル命令により、前記プロセッサ・イベント・マスク内の対応イベントが使用可能になり、プロセッサ読み取りイベント状況チャネル・ハードウェアの状況が更新される、請求項1に記載の方法。
The one or more channels include processor write event mask channel hardware;
The processor write event mask channel hardware includes a processor event mask that identifies events that affect the state of the processor read event status channel;
A write channel instruction issued to the processor write event mask channel hardware enables the corresponding event in the processor event mask and updates the processor read event status channel hardware status. The method of claim 1, wherein:
前記1つまたは複数のチャネルが、イベント状況マスクの現行値を読み取るために使用されるプロセッサ読み取りイベント・マスク・チャネル・ハードウェアを含み、
前記プロセッサ読み取りイベント・マスク・チャネル・ハードウェアに対して発行された読み取りチャネル命令により、プロセッサ書き込みイベント・マスク・チャネル・ハードウェアに最後に書き込まれたデータが返される、請求項1に記載の方法。
The one or more channels comprise processor read event mask channel hardware used to read the current value of the event status mask;
The method of claim 1, wherein a read channel instruction issued to the processor read event mask channel hardware returns data last written to processor write event mask channel hardware. .
前記1つまたは複数のチャネルが、発生したイベントを確認するために使用されるプロセッサ書き込みイベント確認応答チャネル・ハードウェアを含み、
特定のイベント・ビットが設定された前記プロセッサ書き込みイベント確認応答チャネル・ハードウェアに対して書き込みチャネル命令を発行することにより、ソフトウェアによって処理中のものとして前記対応イベントが確認される、請求項1に記載の方法。
The one or more channels comprise processor write event acknowledge channel hardware used to acknowledge the event that occurred;
The corresponding event is confirmed as being processed by software by issuing a write channel instruction to the processor write event acknowledge channel hardware with a particular event bit set. The method described.
前記1つまたは複数のレジスタに保管された前記データに基づいて1つまたは複数のイベントを処理する前記ステップが、
前記1つまたは複数のチャネルに関連するチャネル・カウントの検出、前記プロセッサのデクリメンタに関連するデクリメンタ・カウント、またはプロセッサ・チャネル・アクセス動作のうちの少なくとも1つによりイベントを識別するステップを含む、請求項1に記載の方法。
Processing the one or more events based on the data stored in the one or more registers;
Identifying an event by at least one of detecting a channel count associated with the one or more channels, a decrementer count associated with a decrementer of the processor, or a processor channel access operation. Item 2. The method according to Item 1.
メモリ・フロー・コントローラ(MFC)読み取りタグ・グループ状況チャネル・ハードウェアに関するチャネル・カウントが0からゼロ以外の値に変化したときにMFCタグ・グループ状況更新イベントが設定され、タグ・グループが処理を完了したことと、前記プロセッサを停止せずにMFC読み取りタグ・グループ状況チャネル・ハードウェアを読み取れるように前記MFC読み取りタグ・グループ状況チャネル・ハードウェアが更新されたことを前記MFCタグ・グループ状況更新イベントが前記プロセッサ上で実行中のプログラムに通知する、請求項に記載の方法。 MFC tag group status update event is set when the channel count for memory flow controller (MFC) read tag group status channel hardware changes from 0 to a non-zero value, and the tag group processes The MFC tag group status update that has been completed and the MFC read tag group status channel hardware has been updated so that the MFC read tag group status channel hardware can be read without stopping the processor The method of claim 9 , wherein an event notifies a program running on the processor. メモリ・フロー・コントローラ(MFC)読み取りリスト停止通知タグ状況チャネル・ハードウェアに関するチャネル・カウントが0からゼロ以外の値に変化したときに、MFC直接メモリ・アクセス(DMA)リスト・コマンド停止通知イベントが設定され、MFC DMAリスト・コマンド内のリスト・エレメントが完了したことと、前記プロセッサを停止せずにMFC読み取りリスト停止通知タグ状況チャネル・ハードウェアを読み取れるように前記MFC読み取りリスト停止通知タグ状況チャネル・ハードウェアが更新されたことを前記MFC DMAリスト・コマンド停止通知イベントが前記プロセッサ上で実行中のプログラムに通知する、請求項に記載の方法。 Memory flow controller (MFC) read list stop notification tag status When the channel count for channel hardware changes from 0 to a non-zero value, an MFC direct memory access (DMA) list command stop notification event The MFC read list stop notification tag status channel that is set and the list element in the MFC DMA list command is complete and the MFC read list stop notification tag status channel hardware can be read without stopping the processor 10. The method of claim 9 , wherein the MFC DMA list command stop notification event notifies a program running on the processor that hardware has been updated. 待機メモリ・フロー制御(MFC)コマンド命令コード・レジスタに関するチャネル・カウントが0からゼロ以外の値に変化したときに、MFCプロセッサ・コマンド・キュー使用可能イベントが設定され、MFCプロセッサ・コマンド・キュー内の項目が使用可能であることと、前記MFCコマンド命令コード・チャネル・ハードウェアに送信された書き込みチャネル命令によって前記プロセッサが停止しないことを前記MFCプロセッサ・コマンド・キュー使用可能イベントが前記プロセッサ上で実行中のプログラムに通知する、請求項に記載の方法。 When the channel count for the standby memory flow control (MFC) command instruction code register changes from 0 to a non-zero value, an MFC processor command queue available event is set and in the MFC processor command queue The MFC processor command queue enable event on the processor, indicating that the processor is not stopped by a write channel instruction sent to the MFC command instruction code channel hardware. The method of claim 9 , wherein a notification is made to a running program. プロセッサ読み取りインバウンド・メールボックス・チャネル・ハードウェアに関するチャネル・カウントが0からゼロ以外の値に変化したときに、プロセッサ・インバウンド・メールボックス使用可能イベントが設定され、
外部装置が空のプロセッサ・メールボックス・レジスタに書き込んだことと、プロセッサ読み取りインバウンド・メールボックス・チャネル・ハードウェアに対して発行された読み取りチャネル命令によって前記プロセッサが停止しないことを前記プロセッサ・インバウンド・メールボックス使用可能イベントが前記プロセッサ上で実行中のプログラムに通知し、
プロセッサ書き込みアウトバウンド割り込みメールボックス・チャネル・カウントが0からゼロ以外の値に変化したときにプロセッサ・アウトバウンド割り込みメールボックス使用可能イベントが設定され、
外部装置が満杯のプロセッサ・アウトバウンド割り込みメールボックス・レジスタから読み取ったことと、プロセッサ書き込みアウトバウンド割り込みメールボックス・チャネル・ハードウェアに送信された書き込みチャネル命令によって前記プロセッサが停止しないことを前記プロセッサ・アウトバウンド割り込みメールボックス・イベントが前記プロセッサ上で実行中のプログラムに通知する、請求項に記載の方法。
A processor inbound mailbox enable event is set when the channel count for processor read inbound mailbox channel hardware changes from 0 to a non-zero value,
The processor inbound state that the external device has written to an empty processor mailbox register and that the processor is not stopped by a read channel instruction issued to the processor read inbound mailbox channel hardware. A mailbox availability event notifies a program running on the processor;
A processor outbound interrupt mailbox enable event is set when the processor write outbound interrupt mailbox channel count changes from 0 to a non-zero value,
The processor outbound interrupt that the external device has read from a full processor outbound interrupt mailbox register and that the processor does not stop due to a write channel instruction sent to the processor write outbound interrupt mailbox channel hardware The method of claim 9 , wherein a mailbox event notifies a program running on the processor.
対応するプロセッサ信号通知チャネル・ハードウェアに関するチャネル・カウントが0からゼロ以外の値に変化したときにプロセッサ信号通知使用可能イベントが設定され、外部装置が空のプロセッサ信号通知レジスタに書き込んだことと、プロセッサ信号通知チャネル・ハードウェアに対して発行された読み取りチャネル命令によって前記プロセッサが停止しないことを前記プロセッサ信号通知使用可能イベントが前記プロセッサ上で実行中のプログラムに通知する、請求項に記載の方法。 A processor signal notification enable event is set when the channel count for the corresponding processor signal notification channel hardware changes from 0 to a non-zero value, and the external device writes to an empty processor signal notification register; the processor signaling the available event notifies a program running on the processor that the processor by a read channel instruction issued to the processor signaling channel hardware does not stop, according to claim 9 Method. アトミック予約が消失したときにロック・ライン予約イベントが設定され、バス・アクションの結果としてキャッシュ・ライン上の予約が消失したことを前記ロック・ライン予約イベントが前記プロセッサ上で実行中のプログラムに通知する、請求項に記載の方法。 A lock line reservation event is set when an atomic reservation is lost, and the lock line reservation event notifies the program running on the processor that the reservation on the cache line has been lost as a result of a bus action. The method according to claim 9 . プロセッサ書き込みアウトバウンド・メールボックス・チャネル・カウントが0からゼロ以外の値に変化したときに、プロセッサ・アウトバウンド・メールボックス使用可能イベントが設定され、
外部装置が満杯のプロセッサ・アウトバウンド・メールボックス・レジスタから読み取ったことと、プロセッサ書き込みアウトバウンド・メールボックス・チャネル・ハードウェアに送信された書き込みチャネル命令によって前記プロセッサが停止しないことを前記プロセッサ・アウトバウンド・メールボックス・イベントが前記プロセッサ上で実行中のプログラムに通知する、請求項に記載の方法。
A processor outbound mailbox enable event is set when the processor write outbound mailbox channel count changes from 0 to a non-zero value,
The processor outbound--that the external device has read from the full processor outbound mailbox register and that the processor does not stop due to a write channel instruction sent to the processor write outbound mailbox channel hardware. The method of claim 9 , wherein a mailbox event notifies a program running on the processor.
JP2008526500A 2005-08-19 2006-08-16 Method for communicating instructions and data related to events in a processor within a data processing system Active JP5558713B2 (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US11/207,971 2005-08-19
US11/207,970 2005-08-19
US11/207,971 US7500039B2 (en) 2005-08-19 2005-08-19 Method for communicating with a processor event facility
US11/207,970 US7778271B2 (en) 2005-08-19 2005-08-19 Method for communicating instructions and data between a processor and external devices
PCT/EP2006/065372 WO2007020274A2 (en) 2005-08-19 2006-08-16 System and method for communicating instructions and data between a processor and external devices

Publications (2)

Publication Number Publication Date
JP2009505258A JP2009505258A (en) 2009-02-05
JP5558713B2 true JP5558713B2 (en) 2014-07-23

Family

ID=37308797

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008526500A Active JP5558713B2 (en) 2005-08-19 2006-08-16 Method for communicating instructions and data related to events in a processor within a data processing system

Country Status (3)

Country Link
EP (1) EP1917600A2 (en)
JP (1) JP5558713B2 (en)
WO (1) WO2007020274A2 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101291348B (en) * 2008-06-12 2011-11-30 巴别塔(北京)科技有限公司 Prompt method for wireless channel awaking
JP5293165B2 (en) * 2008-12-25 2013-09-18 富士通セミコンダクター株式会社 Simulation support program, simulation apparatus, and simulation support method
CN105511320A (en) * 2015-12-11 2016-04-20 中国航空工业集团公司西安航空计算技术研究所 Method for realizing communication control inside FC recorder

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870627A (en) * 1995-12-20 1999-02-09 Cirrus Logic, Inc. System for managing direct memory access transfer in a multi-channel system using circular descriptor queue, descriptor FIFO, and receive status queue
US6453365B1 (en) * 1998-02-11 2002-09-17 Globespanvirata, Inc. Direct memory access controller having decode circuit for compact instruction format
JP2000003285A (en) * 1998-06-11 2000-01-07 Nec Saitama Ltd Method for processing interruption and circuit therefor
US6363438B1 (en) * 1999-02-03 2002-03-26 Sun Microsystems, Inc. Method of controlling DMA command buffer for holding sequence of DMA commands with head and tail pointers
US20040193754A1 (en) * 2003-03-27 2004-09-30 International Business Machines Corporation DMA prefetch
US7409483B2 (en) * 2003-12-19 2008-08-05 Intel Corporation Methods and apparatuses to provide message signaled interrupts to level-sensitive drivers

Also Published As

Publication number Publication date
EP1917600A2 (en) 2008-05-07
WO2007020274A2 (en) 2007-02-22
JP2009505258A (en) 2009-02-05
WO2007020274A3 (en) 2007-04-19

Similar Documents

Publication Publication Date Title
JP4516941B2 (en) System, method, computer program, and apparatus for communicating command parameters between a processor and a memory flow controller
US7930457B2 (en) Channel mechanisms for communicating with a processor event facility
US7869459B2 (en) Communicating instructions and data between a processor and external devices
US10579524B1 (en) Computing in parallel processing environments
US11275590B2 (en) Device and processing architecture for resolving execution pipeline dependencies without requiring no operation instructions in the instruction memory
US7533197B2 (en) System and method for remote direct memory access without page locking by the operating system
US7769923B2 (en) Interrupt management for multiple event queues
US7620749B2 (en) Descriptor prefetch mechanism for high latency and out of order DMA device
JP3697831B2 (en) Computer system
US7562366B2 (en) Transmit completion event batching
JP4977159B2 (en) Technology for executing atomic compare and swap instructions using a specific processor
JP4104746B2 (en) Computer system with automatic direct memory access
US20080109573A1 (en) RDMA systems and methods for sending commands from a source node to a target node for local execution of commands at the target node
JP4317365B2 (en) Method and apparatus for transferring interrupts from a peripheral device to a host computer system
US8707332B2 (en) Method and message handling hardware structure for virtualization and isolation of partitions
US20080109604A1 (en) Systems and methods for remote direct memory access to processor caches for RDMA reads and writes
US20130138930A1 (en) Computer systems and methods for register-based message passing
JP5558713B2 (en) Method for communicating instructions and data related to events in a processor within a data processing system
JP2007157146A (en) Technique for executing atomic processing for processor with different memory transfer processing sizes
WO2008057833A2 (en) System and method for remote direct memory access without page locking by the operating system
JPH0340169A (en) Multiple processor system and method of controlling plurality of processor
Kubiatowiz Users Manual for the Alewife 1000 Controller Version 0.69

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090430

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110705

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110906

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20110906

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110908

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111213

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120310

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120424

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131229

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20140513

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140605

R150 Certificate of patent or registration of utility model

Ref document number: 5558713

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150