JP7461693B2 - 入出力ストア命令をハンドリングする方法、システム、およびプログラム - Google Patents

入出力ストア命令をハンドリングする方法、システム、およびプログラム Download PDF

Info

Publication number
JP7461693B2
JP7461693B2 JP2021532167A JP2021532167A JP7461693B2 JP 7461693 B2 JP7461693 B2 JP 7461693B2 JP 2021532167 A JP2021532167 A JP 2021532167A JP 2021532167 A JP2021532167 A JP 2021532167A JP 7461693 B2 JP7461693 B2 JP 7461693B2
Authority
JP
Japan
Prior art keywords
data processing
data
asynchronous
processing unit
store instruction
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
JP2021532167A
Other languages
English (en)
Other versions
JPWO2020156796A5 (ja
JP2022518340A (ja
Inventor
レイッシュ、クリストフ
クレマー、マルコ
レーナルト、フランク
クライン、マティアス
ブラッドベリー、ジョナサン
ジャコビ、クリスチャン
ベルマー、ブレントン
ドリーバー、ピーター
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2022518340A publication Critical patent/JP2022518340A/ja
Publication of JPWO2020156796A5 publication Critical patent/JPWO2020156796A5/ja
Application granted granted Critical
Publication of JP7461693B2 publication Critical patent/JP7461693B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • G06F9/3871Asynchronous instruction pipeline, e.g. using handshake signals between stages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Transfer Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Advance Control (AREA)
  • Confectionery (AREA)
  • Input From Keyboards Or The Like (AREA)

Description

本発明は、一般に、データ処理システムに関し、詳細には、外部デバイスに対する入出力ストア命令をハンドリングする方法、コンピュータ・プログラムおよびデータ処理システムに関する。
コンピューティング環境は、様々なタイプのアダプタを含む1つまたは複数のタイプの入出力デバイスを含むことがある。アダプタの1つのタイプは、ペリフェラル・コンポーネント・インターコネクト(PCI:Peripheral Component Interconnect)、またはペリフェラル・コンポーネント・インターコネクト・エクスプレス(PCIe:Peripheral Component Interconnect Express)アダプタである。このアダプタは、アダプタと、アダプタが取り付けられたシステムとの間でデータを通信するのに使用される1つまたは複数のアドレス空間を含む。
いくつかのシステムでは、アダプタに連結された中央処理装置(CPU:central processing unit)のアドレス空間の一部がアダプタのアドレス空間にマッピングされ、ストレージにアクセスするCPU命令が、アダプタのアドレス空間にあるデータを直接操作するのを可能にする。
PCIまたはPCIeアダプタなどのアダプタとの通信は、アダプタとの間でデータを通信するために特に設計され、通信のために使用される制御命令によって容易にすることができる。
最先端技術では、アダプタにデータをストアするためのストア命令は、例えば、実行のための機械語命令を取得することを含み、機械語命令は、コンピュータ・アーキテクチャに応じたコンピュータ実行のために定義され、機械語命令は、例えば、アダプタへのストア命令(a store to adapter instruction)を識別するオペコード・フィールドを含む。第1のフィールドは、アダプタにストアされることになるデータを含む第1の位置を識別する。第2のフィールドは、内容にアダプタを識別する機能ハンドルを含む第2の位置、データがストアされることになるアダプタ内のアドレス空間の指名、および、アドレス空間内のオフセットを識別する。機械語命令は実行され、実行することは、機能ハンドルを使用して、アダプタに関連付けられた機能テーブル・エントリを取得することを含む。アダプタのデータ・アドレスは、機能テーブル・エントリ内の情報、およびオフセットのうちの少なくとも1つを使用して取得される。データは、アドレス空間の指名によって識別されたアドレス空間における特定の位置における第1の位置からストアされ、特定の位置は、アダプタのデータ・アドレスによって識別される。
大規模マルチプロセッサ・システムにおける既存の特徴は、ターゲット・ゾーン内の全てのプロセッサを休止させる能力である。休止機能は、プロセッサまたはプロセッサのグループの状態を、例えば、システム更新またはバックアップを実施するために、一時的に停止または変化させる働きをする。いくつかの事例では、システム・リソースのサブセットだけに、休止割込が適用可能である。このような事例では、システムは、異なるゾーンに分割することができる。1つのゾーン(ターゲット・ゾーン)に適用可能な休止動作について、ターゲット・ゾーンの外側にあるプロセッサは、実行し続けることを許可されるが、新しい変換はブロックされることがある。典型的には、少なくとも1つのシステム・コントローラまたは他のメカニズムが、システム内の全ての物理的なプロセッサに休止をブロードキャストし、休止状態情報の収集をハンドリングし、いつ全てのプロセッサがスタートしたか、または、休止リクエストを無視しているか(フィルタリングしているか)をリクエストしたプロセッサに示す。
休止コントローラは、マルチプロセッサ・システムにおけるプロセッサ、および、休止リクエストを受信するように構成された休止状態マシンに通信連結することができる。コンピュータ・システムは、リクエストしたプロセッサから、休止コントローラで休止リクエストを受信することを含む方法を実施するように構成され、リクエストしたプロセッサは、マルチプロセッサ・システムにおける複数のプロセッサのうちの1つであり、休止状態マシンの状態に基づいて休止リクエストを受け入れないことを決定する。また、方法は、リクエストを受け入れないことに基づいて、休止リクエストを拒絶したことを示すように構成された拒絶メッセージを生成することと、マルチプロセッサ・システムに休止コマンドがブロードキャストされるまで拒絶メッセージを保持することであって、休止コマンドが異なる休止リクエストに基づく、保持することと、休止コマンドのブロードキャストが休止コントローラによって検出されたことに基づいて、リクエストしたプロセッサに拒絶メッセージを送信することとを含む。
入出力ストア命令をハンドリングするためのデータ処理システムを提案し、データ処理システムは、入出力バス・コントローラによって少なくとも1つの入出力バスに通信連結されたシステム・ネストを備える。データ処理システムは、コア、システム・ファームウェア、および非同期コア・ネスト・インターフェースを備えるデータ処理ユニットを少なくともさらに備える。データ処理ユニットは、集約バッファを介してシステム・ネストに通信連結される。システム・ネストは、入出力バスに通信連結された少なくとも1つの外部デバイスからデータを非同期的にロードすること、または少なくとも1つの外部デバイスにデータを非同期的にストアすること、あるいはその両方を行うように構成される。
データ処理システムは、(i)データ処理システム上で動くオペレーティング・システムが、アドレスを通じたオフセットを伴う入出力機能、移送されることになるデータ、または移送されることになるデータへのポインタ、あるいはその両方、およびデータの長さを少なくとも指定する入出力ストア命令を発行すること、(ii)データ処理ユニットが、入出力ストア命令で指定されたアドレスによって入出力機能を識別するように構成されること、(iii)データ処理ユニットが、アドレス空間およびゲスト・インスタンス・レベルで入出力機能へのアクセスが許可されるかどうかを検証するように構成され、ゲストがデータ処理システム上で動くこと、(iv)データ処理ユニットが、システム・ネストにおける入出力ストア命令の実行が完了する前に、入出力ストア命令を完了させるように構成されること、および(v)システム・ファームウェアが、入出力ストア命令の非同期実行中にデータ処理ユニットによってエラーが検出された場合、失敗した非同期実行のデータを伝送することを、割込みを通じてオペレーティング・システムに通知するように構成されることを実施するように構成される。
好ましくは、高信頼非同期送信命令およびメカニズムで同期PCI命令を置き替えることによって、命令あたりのサイクルの数を改善することができる。PCIeストア効果の非同期実行、および非同期ステータス・ハンドリングによるPCIストア命令を実施することができる。非同期高信頼実行は、マイクロアーキテクチャにおける高信頼転送メカニズムに基づく。
本発明の第1の実施形態によるデータ処理システムは、データ処理システムの少なくとも1つの外部デバイスとの間で入出力バスを介して命令がロードおよびストアを行うことを含む。非同期命令は、外部デバイスにデータがストアされる前に完了し、一方で、同期命令は、外部デバイスにデータがストアされた後に完了する。本明細書で説明される実施形態の中で、PCIが、他の任意の入出力技術と交換可能なように使用されることになり、したがって、本発明の実施形態をPCIに限定しない。
本発明の実施形態は、アーキテクチャ境界の上から観察できるように、厳密に順序付けられた方式で入出力ストア命令の実行を説明するが、実際の実行は、データ処理ユニット(CPU)のハードウェア内で順序が異なっていてもよい。
本発明の実施形態によれば、PCIストア命令は、PCIeストア効果の非同期実行、および非同期ステータス・ハンドリングにより実行することができる。非同期高信頼実行は、本発明のデータ処理システムのマイクロアーキテクチャにおける高信頼転送メカニズムに基づく。
既存のPCIストアおよびストア・ブロック命令は、通常、PCIストア・データがPCIeインターフェースに配信され、完了が処理ユニットに返されるポイントまで同期的である。
PCI規格は、非同期送出によりデータを集約するプロセッサにおけるストア・キューを通じて典型的に実装されるPCI情報の非同期送信コマンドしか必要としない。
都合のよいことに、本発明の実施形態によれば、命令あたりのサイクルに関する改善は、入出力ストア命令の高信頼非同期送信処理に、同期PCI命令を置き替えることによって達成することができる。
移送されることになるデータの代替または追加として、本発明の1つの実施形態によるストア命令は、データを直接含むのではなく、データをフェッチするために使用されるはずのメイン・メモリへのポインタを指定することもできる。
ゲスト・インスタンス・レベルは、単一のゲストまたはホストがデータ処理システム上で動いていることができることを意味することもできる。
入出力機能自体のオフセットのアドレスは、仮想アドレス、物理アドレス、論理アドレスであってもよい。仮想アドレスおよび論理アドレスは、典型的には、メモリ管理ユニット(MMU)を通じて物理アドレスに変換され、したがって、どの機能およびオフセットを意味するかを物理アドレスが識別することを可能にする。
この文脈での物理アドレスは、「ゲスト/オペレーティング・システム内からアクセス可能なアドレス変換階層における最低アドレス」を意味する。
本発明のデータ処理システムの好ましい実施形態によれば、集約バッファは、非同期コア・ネスト・インターフェースに通信連結することができる。したがって、集約バッファは、外部デバイスに移送されることになる全てのデータが集約バッファにストアされるまで、非同期コア・ネスト・インターフェースによって連続して送信されたデータを直接ハンドリングすることができる。
本発明のデータ処理システムの好ましい実施形態によれば、データは、ソース・データの長さが8バイトを超える場合、非同期伝送メカニズムを通じて入出力ストア命令によって、早期完了メッセージとともに複数のデータ・パケットで集約バッファに移送することができ、そうでなければ、データは、1つのデータ・パケットで移送することができる。送信デバイスは早期の方の状態では再使用のための空きがあるので、非同期伝送メカニズムが好ましい。
本発明のデータ処理システムの好ましい実施形態によれば、システム・ファームウェアは、入出力ストア命令をハンドリングするための非同期入出力ドライバ・コードを含むことができる。したがって、非同期伝送メカニズムは、データ処理ユニットから外部デバイスにデータを移送するために使用することができる。
本発明のデータ処理システムの好ましい実施形態によれば、コアは、非同期入出力ドライバ・コードのステータス情報のためのメモリ要件をハンドリングするための非同期セットアップ・コードを備えることができる。この非同期セットアップ・コードは、システム・ネストおよび入出力バス・コントローラへの集約バッファを通じた非同期伝送メカニズムをさらに容易にすることができる。
本発明のデータ処理システムの好ましい実施形態によれば、非同期コア・ネスト・インターフェースは、ローカル完了(local completion)に伴いデータを転送するための非同期コア・ネスト・インターフェース転送構成要素を備えることができる。この構成要素は、非同期コア・ネスト・インターフェース内のハードウェアに実装することができる。したがって、データ・パケットでデータを集約バッファに送信するための好ましい非同期伝送モードをサポートすることができる。
本発明のデータ処理システムの好ましい実施形態によれば、集約バッファは、リクエストを送信した後、再使用のための空きがあるというメッセージ(free for reuse message)を配信するための早期完了ロジックを備えることができる。これは、システム・ネストおよび入出力バス・コントローラへの集約バッファを介したデータの伝送処理の早期継続を可能にする。
本発明のデータ処理システムの好ましい実施形態によれば、集約バッファは、非同期コア・ネスト・インターフェースに非同期バスを介して連結することができる。このようにして、非同期コア・ネスト・インターフェースからのデータ転送のための非同期伝送メカニズムをサポートできることが好ましい。
好ましい実施形態によれば、本発明のデータ処理システムは、システム・ネストから、または入出力バス・コントローラから、あるいはその両方から返された状態を、具体的には、システム・ネストから完了メッセージを収集する入出力ステータス・バッファをさらに備えることができる。この入出力ステータス・バッファは、返された状態を収集し、非同期伝送処理をサポートする非同期システム・メッセージ・バッファとして機能する。
本発明のデータ処理システムの好ましい実施形態によれば、非同期コア・ネスト・インターフェースは、入出力ステータス・バッファを備えることができる。都合のよいことに、入出力ステータス・バッファは、クイック・レスポンスのために、非同期コア・ネスト・インターフェースに直接統合される。
本発明のデータ処理システムの好ましい実施形態によれば、システム・メッセージは階層型物理ターゲット・アドレスSMT(同時マルチスレッド:simultaneous multithreading)スレッドもしくは集約バッファ識別子の発生源データの長さ入出力バス・アドレス、また回復アルゴリズムのためのシーケンス番号のうちの1つを含むことができる。したがって、データ処理システムを通じた関係情報の有利な受け渡しを保証することができる。
さらに、データ処理システムの少なくとも1つの外部デバイスへの入出力ストア命令をハンドリングするための方法を提案し、データ処理システムは、入出力バス・コントローラによって少なくとも1つの入出力バスに通信連結されたシステム・ネストを備える。データ処理システムは、コア、システム・ファームウェア、および非同期コア・ネスト・インターフェースを備えるデータ処理ユニットを少なくともさらに備える。データ処理ユニットは、集約バッファを介してシステム・ネストに通信連結される。外部デバイスは、入出力バスに通信連結される。
方法は、(i)データ処理システム上で動くオペレーティング・システムが、アドレスを通じたオフセットを伴う入出力機能、移送されることになるデータ、または移送されることになるデータへのポインタ、あるいはその両方、およびデータの長さを少なくとも指定する入出力ストア命令を発行すること、(ii)データ処理ユニットが、入出力ストア命令で指定されたアドレスによって入出力機能を識別するように構成されること、(iii)データ処理ユニットが、アドレス空間およびゲスト・インスタンス・レベルで入出力機能へのアクセスが許可されるかどうかを検証するように構成され、ゲストがデータ処理システム上で動くこと、(iv)データ処理ユニットが、システム・ネストにおける入出力ストア命令の実行が完了する前に、入出力ストア命令を完了させるように構成されること、および(v)システム・ファームウェアが、入出力ストア命令の非同期実行中にデータ処理ユニットによってエラーが検出された場合、失敗した非同期実行のデータを伝送することを、割込みを通じてオペレーティング・システムに通知するように構成されることを含む。
好ましくは、高信頼非同期送信命令およびメカニズムで同期PCI命令を置き替えることによって、命令あたりのサイクルの数を改善することができる。PCIeストア効果の非同期実行、および非同期ステータス・ハンドリングによるPCIストア命令を実施することができる。非同期高信頼実行は、マイクロアーキテクチャにおける高信頼転送メカニズムに基づく。
本発明のさらなる実施形態による方法は、データ処理システムの少なくとも1つの外部デバイスとの間で入出力バスを介して命令がロードおよびストアを行うことを含む。非同期命令は、外部デバイスにデータがストアされる前に完了し、一方で、同期命令は、外部デバイスにデータがストアされた後に完了する。本明細書で説明される実施形態の中で、PCIが、他の任意の入出力技術と交換可能なように使用されることになり、したがって、本発明の実施形態をPCIに限定しない。
本発明の方法の実施形態は、アーキテクチャ境界の上から観察できるように、厳密に順序付けられた方式で入出力ストア命令の実行を説明するが、実際の実行は、データ処理ユニット(CPU)のハードウェア内で順序が異なっていてもよい。
本発明の方法の実施形態によれば、PCIストア命令は、PCIeストア効果の非同期実行、および非同期ステータス・ハンドリングにより実行することができる。非同期高信頼実行は、本発明のデータ処理システムのマイクロアーキテクチャにおける高信頼転送メカニズムに基づく。
既存のPCIストアおよびストア・ブロック命令は、通常、PCIストア・データがPCIeインターフェースに配信され、完了が処理ユニットに返されるポイントまで同期的である。
PCI規格は、非同期送出によりデータを集約するプロセッサにおけるストア・キューを通じて典型的に実装されるPCI情報の非同期送信コマンドしか必要としない。
都合のよいことに、本発明の方法の実施形態によれば、命令あたりのサイクルに関する改善は、入出力ストア命令の高信頼非同期送信処理に、同期PCI命令を置き替えることによって達成することができる。
移送されることになるデータの代替または追加として、本発明の1つの実施形態によるストア命令は、データを直接含むのではなく、データをフェッチするために使用されるはずのメイン・メモリへのポインタを指定することもできる。
ゲスト・インスタンス・レベルは、単一のゲストまたはホストがデータ処理システム上で動いていることができることを意味することもできる。
入出力機能自体のオフセットのアドレスは、仮想アドレス、物理アドレス、論理アドレスであることが可能である。仮想アドレスおよび論理アドレスは、典型的には、メモリ管理ユニット(MMU)を通じて物理アドレスに変換され、したがって、どの機能およびオフセットを意味するかを物理アドレスが識別することを可能にする。
この文脈での物理アドレスは、「ゲスト/オペレーティング・システム内からアクセス可能なアドレス変換階層における最低アドレス」を意味する。
好ましい実施形態によれば、方法は、(i)オペレーティング・システムが、入出力ストア命令を発行すること、(ii)データの長さに応じて、データの長さが8バイトを超える場合、システム・メッセージによってデータが送信されるまでシステム・ファームウェアが待つ間、ストア・ブロックの全てのデータが集約バッファに転送されるまで集約バッファにデータ・パケットを送信するために、システム・ファームウェアがシステム・メッセージを繰り返し発行し、そうでなければ、データの長さにかかわらず、集約バッファにデータを送信するために、システム・ファームウェアがシステム・メッセージを発行すること、(iii)集約バッファが完了メッセージを送信するのを待つ間、単一のネスト・メッセージとしてデータを非同期的に入出力バス・コントローラに転送するために、システム・ファームウェアが、集約バッファへのシステム・メッセージを発行すること、(iv)集約バッファが、システム・ネストにネスト・メッセージを投入することであって、集約バッファが、送信動作の直後、再使用のための空きがある、投入すること、システム・ファームウェアにシグナリングを返すこと、次に、集約バッファが、再使用のための空きがあるというメッセージを送信すること、(v)システム・ネストが、ターゲット位置にメッセージを転送すること、(vi)入出力バス・コントローラが、メッセージを受信し、データ・フレーム内のデータを入出力バスに転送すること、(vii)入出力バス・コントローラが、システム・ネストに完了メッセージを送信すること、(viii)システム・ネストが、発信元の集約バッファに完了メッセージを転送すること、(ix)集約バッファが、非同期コア・ネスト・インターフェースに完了を転送すること、(x)非同期コア・ネスト・インターフェースが、システム・ファームウェアに動作の完了をシグナリングすること、および(xi)エラーの場合、システム・ファームウェアが、オペレーティング・システムに欠陥を非同期的にシグナリングすることをさらに含むことができる。
ステップ(ii)だけが、データの長さに依存し、データの長さが8バイトを超えることと、データの長さが8バイトを超えないことが異なる。
本発明の方法の実施形態によれば、データは、ストア・ブロックの全てのデータが集約バッファに転送されるまで、スライスで集約バッファに伝送され、システム・ファームウェアは、非同期コア・ネスト・インターフェースによってデータが送信されるまで待っている。
したがって、データが8バイトより小さい場合、データ・パケットをスライスで集約バッファに満たす処理は、スキップすることができ、外部デバイスにデータを伝送する処理は、単一のステップで完了させることができる。
本発明の方法の好ましい実施形態によれば、データは、データの長さが8バイトを超える場合、非同期伝送メカニズムを通じて入出力ストア命令によって、早期完了メッセージとともに複数のデータ・パケットで集約バッファに移送することができる。送信デバイスは早期の方の状態では再使用のための空きがあるので、非同期伝送メカニズムが好ましい。
本発明の方法の好ましい実施形態によれば、システム・ファームウェアは、入出力ストア命令をハンドリングするための非同期入出力ドライバ・コードを使用することができる。したがって、非同期伝送メカニズムは、データ処理ユニットから外部デバイスにデータを移送するために使用することができる。
本発明の方法の好ましい実施形態によれば、コアは、非同期入出力ドライバ・コードのステータス情報のためのメモリ要件をハンドリングするための非同期セットアップ・コードを使用することができる。この非同期セットアップ・コードは、システム・ネストおよび入出力バス・コントローラへの集約バッファを通じた非同期伝送メカニズムをさらに容易にすることができる。
本発明の方法の好ましい実施形態によれば、非同期コア・ネスト・インターフェースは、ローカル完了に伴いデータを転送するための非同期コア・ネスト・インターフェース転送構成要素を使用することができる。したがって、データ・パケットでデータを集約バッファに送信するための好ましい非同期伝送モードをサポートすることができる。
本発明の方法の好ましい実施形態によれば、集約バッファは、リクエストを送信した後、再使用のための空きがあるというメッセージを配信するための早期完了ロジックを使用することができる。これは、システム・ネストおよび入出力バス・コントローラへの集約バッファを介したデータの伝送処理の早期継続を可能にする。
本発明の方法の好ましい実施形態によれば、入出力ステータス・バッファは、システム・ネストから、または入出力バス・コントローラから、あるいはその両方から返された状態を、具体的には、システム・ネストから完了メッセージを収集することができる。この入出力ステータス・バッファは、返された状態を収集し、非同期伝送処理をサポートする非同期システム・メッセージ・バッファとして機能する。
本発明の方法の好ましい実施形態によれば、システム・メッセージは階層型物理ターゲット・アドレスSMTスレッドもしくは集約バッファ識別子の発生源データの長さ入出力バス・アドレス、また回復アルゴリズムのためのシーケンス番号のうちの1つを含むことができる。したがって、データ処理システムを通じた関係情報の有利な受け渡しを保証することができる。
さらに、データ処理システムの少なくとも1つの外部デバイスへの入出力ストア命令をハンドリングするための好都合なコンピュータ・プログラム製品を提案し、データ処理システムは、入出力バス・コントローラによって少なくとも1つの入出力バスに通信連結されたシステム・ネストを備える。データ処理システムは、コア、システム・ファームウェア、および非同期コア・ネスト・インターフェースを備えるデータ処理ユニットを少なくともさらに備える。データ処理ユニットは、集約バッファを介してシステム・ネストに通信連結される。外部デバイスは、入出力バスに通信連結される。
コンピュータ・プログラム製品は、プログラム命令を含むコンピュータ可読ストレージ媒体を備え、プログラム命令は、(i)データ処理システム上で動くオペレーティング・システムが、アドレスを通じたオフセットを伴う入出力機能、移送されることになるデータ、または移送されることになるデータへのポインタ、あるいはその両方、およびデータの長さを少なくとも指定する入出力ストア命令を発行すること、(ii)データ処理ユニットが、入出力ストア命令で指定されたアドレスによって入出力機能を識別するように構成されること、(iii)データ処理ユニットが、アドレス空間およびゲスト・インスタンス・レベルで入出力機能へのアクセスが許可されるかどうかを検証するように構成され、ゲストがデータ処理システム上で動くこと、(iv)データ処理ユニットが、システム・ネストにおける入出力ストア命令の実行が完了する前に、入出力ストア命令を完了させるように構成されること、および(v)システム・ファームウェアが、入出力ストア命令の非同期実行中にデータ処理ユニットによってエラーが検出された場合、失敗した非同期実行のデータを伝送することを、割込みを通じてオペレーティング・システムに通知するように構成されることを含む方法をコンピュータ・システムに実施させるようにコンピュータ・システムによって実行可能である。
さらに、上記で説明した方法を実施するためのコンピュータ可読プログラム命令を含むデータ処理プログラムの実行のためのデータ処理システムを提案する。
上述および他の目的および長所とともに本発明は、実施形態の以下の詳細な説明から最も良く理解することができるが、実施形態に限定されない。
本発明の1つの実施形態による、外部デバイスへの入出力ストア命令をハンドリングするためのデータ処理システムのブロック図である。 本発明の1つの実施形態による、外部デバイスへの入出力ストア命令をハンドリングするための方法のメッセージ・シーケンス図である。 本発明の1つの実施形態による、外部デバイスへの入出力ストア命令をハンドリングするための流れ図である。 本発明による方法を実行するためのデータ処理システムの実施形態の例を示す図である。
図面では、同様の要素は、等しい参照番号で参照される。図面は、概略図にすぎず、本発明の特定の範囲を表現することを意図するものではない。その上、図面は、本発明の典型的な実施形態だけを描写することを意図し、したがって、本発明の範囲を限定するものとみなされるべきではない。
本明細書で説明される例証的実施形態は、入出力ストア命令をハンドリングするためのデータ処理システムおよび方法を提供し、入出力バス・コントローラによって少なくとも1つの入出力バスに通信連結されたシステム・ネストを備える。データ処理システムは、コア、システム・ファームウェア、および非同期コア・ネスト・インターフェースを備えるデータ処理ユニットを少なくともさらに備える。データ処理ユニットは、集約バッファを介してシステム・ネストに通信連結される。システム・ネストは、入出力バスに通信連結された少なくとも1つの外部デバイスからデータを非同期的にロードすること、または少なくとも1つの外部デバイスにデータを非同期的にストアすること、あるいはその両方を行うように構成される。
例証的実施形態は、(i)データ処理システム上で動くオペレーティング・システムが、アドレスを通じたオフセットを伴う入出力機能、移送されることになるデータ、または移送されることになるデータへのポインタ、あるいはその両方、およびデータの長さを少なくとも指定する入出力ストア命令を発行すること、(ii)データ処理ユニットが、入出力ストア命令で指定されたアドレスによって入出力機能を識別するように構成されること、(iii)データ処理ユニットが、アドレス空間およびゲスト・インスタンス・レベルで入出力機能へのアクセスが許可されるかどうかを検証するように構成され、ゲストがデータ処理システム上で動くこと、(iv)データ処理ユニットが、システム・ネストにおける入出力ストア命令の実行が完了する前に、入出力ストア命令を完了させるように構成されること、および(v)システム・ファームウェアが、入出力ストア命令の非同期実行中にデータ処理ユニットによってエラーが検出された場合、失敗した非同期実行のデータを伝送することを、割込みを通じてオペレーティング・システムに通知するように構成されることを含む方法のために使用することができる。
移送されることになるデータの代替または追加として、本発明の1つの実施形態によるストア命令は、データを直接含むのではなく、データをフェッチするために使用されるはずのメイン・メモリへのポインタを指定することもできる。
ゲスト・インスタンス・レベルは、単一のゲストまたはホストがデータ処理システム上で動いていることができることを意味することもできる。
入出力機能自体のオフセットのアドレスは、仮想アドレス、物理アドレス、論理アドレスであることが可能である。仮想アドレスおよび論理アドレスは、典型的には、メモリ管理ユニット(MMU)を通じて物理アドレスに変換され、したがって、どの機能およびオフセットを意味するかを物理アドレスが識別することを可能にする。
この文脈での物理アドレスは、「ゲスト/オペレーティング・システム内からアクセス可能なアドレス変換階層における最低アドレス」を意味する。
図1は、本発明の1つの実施形態による、少なくとも1つの外部デバイス214への入出力ストア命令30をハンドリングするためのデータ処理システム210のブロック図を描写する。データ処理システム210は、入出力バス・コントローラ20によって入出力バス22に通信連結されたシステム・ネスト18を備え、データ処理ユニット216は、コア12、システム・ファームウェア10、および非同期コア・ネスト・インターフェース14を備える。
データ処理ユニット216は、集約バッファ16を介してシステム・ネスト18に通信可能に接続される。システム・ネスト18は、システム・ネスト18の一部としてのバッファ入出力バス・コントローラ・インターフェース28、および入出力バス・コントローラ20を介して入出力バス22に通信連結された外部デバイス214からデータを非同期的にロードすること、または、外部デバイス214にデータを非同期的にストアすること、あるいはその両方を行うように構成される。
集約バッファ16は、非同期コア・ネスト・インターフェース14に通信可能に連結される。システム・ファームウェア10は、入出力ストア命令30をハンドリングするための非同期入出力ドライバ・コード32を備える。コア12は、非同期入出力ドライバ・コード32のステータス情報のためのメモリ要件をハンドリングするための非同期セットアップ・コード34を備える。非同期コア・ネスト・インターフェース14は、ローカル完了に伴いデータを転送するための非同期コア・ネスト・インターフェース転送構成要素36を備える。集約バッファ16は、リクエストを送信した後、再使用のための空きがあるというメッセージを配信するための早期完了ロジック26を備える。集約バッファ16は、非同期コア・ネスト・インターフェース14に非同期バス38を介して連結される。システム・ネスト18および/または入出力バス・コントローラ20から、特にシステム・ネスト18からの完了メッセージから返された状態を収集する。入出力ステータス・バッファ24は、非同期コア・ネスト・インターフェース14に直接統合される。
発明の方法の1つの実施形態によれば、データ処理システム210上で動くオペレーティング・システムは、アドレスを通じたオフセットを伴う入出力機能、移送されることになるデータ、または移送されることになるデータへのポインタ、あるいはその両方、およびデータの長さを少なくとも指定する入出力ストア命令30を発行する。データ処理ユニット216は、このようにして、入出力ストア命令30によって指定されたアドレスによって入出力機能を識別するように構成される。データ処理ユニット216は、アドレス空間およびゲスト・インスタンス・レベルで入出力機能へのアクセスが許可されるかどうかを検証するように構成され、ゲストは、データ処理システム210上で動く。データ処理ユニット216は、システム・ネスト18における入出力ストア命令30の実行が完了する前に、入出力ストア命令30を完了させるように構成される。システム・ファームウェア10は、入出力ストア命令30の非同期実行中にデータ処理ユニット216によってエラーが検出された場合、失敗した非同期実行のデータを伝送することを、割込みを通じてオペレーティング・システムに通知するように構成される。
入出力ストア命令30は、システム・ハードウェア/ファームウェア50をユーザ側40と分離するアーキテクチャ境界を横切ったユーザ・インターフェース40の側のデータ処理システム210内にある。
したがって、データは、ソース・データの長さが8バイトを超える場合、非同期伝送メカニズムを通じて入出力ストア命令30によって、早期完了メッセージとともに複数のデータ・パケットで集約バッファ16に移送され、そうでなければ、データは、1つのデータ・パケットで移送される。
本発明のデータ処理システムの1つの実施形態によるシステム・メッセージは、階層型物理ターゲット・アドレス、SMTスレッドもしくは集約バッファ識別子の発生源データの長さ、入出力バス・アドレス、または回復アルゴリズムのためのシーケンス番号のうちの1つを含む。
図2は、本発明の1つの実施形態による、外部デバイス214への入出力ストア命令30をハンドリングするための方法のメッセージ・シーケンス図を描写する。
図2に示したように、方法は、オペレーティング・システムが入出力ストア命令30を発行することで開始する。次に、ステップS100およびS104において示したように、システム・ファームウェア10は、データの長さが8バイトを超える場合、ストア・ブロックの全てのデータが集約バッファ16に転送されるまで、集約バッファ16にデータ・パケットを送信するためにシステム・メッセージを繰り返し発行し、一方で、システム・ファームウェア10は、システム・メッセージでデータが送信されるまで待つ。ステップS102およびS106において、ローカル完了メッセージが、システム・ファームウェア10に送り返される。
次に、ステップS108において、システム・ファームウェア10は、単一のネスト・メッセージとしてデータを非同期的に入出力バス・コントローラ20に転送するために、集約バッファ16にシステム・メッセージを発行し、一方で、集約バッファ16が完了メッセージを送信するのを待つ。
次に、ステップS110において、集約バッファ16は、システム・ネスト18にネスト・メッセージを投入し、送信動作の直後、集約バッファ16は再使用のための空きがあり、システム・ファームウェア10にシグナリングを返す。次に、集約バッファ16は、再使用のための空きがあるというメッセージを送信する。
ステップS112において、システム・ネスト18は、ターゲット位置にメッセージを転送し、その後、ステップS114が続き、入出力バス・コントローラ20がメッセージを受信し、データ・フレーム内のデータを入出力バスに転送し、その後、ステップS116において、入出力バス・コントローラ20が、システム・ネスト18に完了メッセージを送信する。
次に、ステップS118において、システム・ネスト18は、発信元の集約バッファ16に完了メッセージを転送し、その後、ステップS120において、集約バッファ16が、非同期コア・ネスト・インターフェース14に完了を転送する。次に、ステップS122において、非同期コア・ネスト・インターフェース14は、システム・ファームウェア10に動作の完了をシグナリングする。
データ転送中にエラーが発生した場合、システム・ファームウェア10は、オペレーティング・システムに欠陥を非同期的にシグナリングする。
念のため、移送されることになるデータは8バイトより小さく、集約バッファ16を繰り返し満たすことはスキップされる。
図3は、本発明の1つの実施形態による、外部デバイス214への入出力ストア命令30をハンドリングするための流れ図を描写する。
データ処理ユニットのシステム・ファームウェアは、ステップS200において開始する。ステップS202において、システム・ファームウェアは、入出力ストア・ブロック命令を受信する。
次に、ステップS204において、9バイト以上が移送されることになるかチェックする。この場合、コア・ネスト・インターフェースは、ステップS206において、16バイトまでのメッセージで集約バッファを満たす。システム・ファームウェアは、ステップS210においてローカル完了のメッセージが送信されるまで待ち(ステップS208)、ステップS204に戻る。ステップS204のチェックで8バイト未満が残っている場合、フローは、コア・ネスト・インターフェースが非同期入出力メッセージを送信するステップS212に続き、その後、ステップS214において、ステップS216におけるバッファ・レスポンスを待つ。次に、ステップS218において、終了ストア・ブロック命令を実行し、フローは、ステップS220において終わり、システム・ファームウェアを終える。
ステップS228において、非同期コア・ネスト・インターフェース・ロジックは、アウトバウンド処理ループを開始し、その後、ステップS222において、集約バッファ完了メッセージを受信し、ステップS224において、集約バッファにデータ・メッセージを転送し、その後、ステップS226において、システム・ファームウェアに完了メッセージを送り返す。ステップS230において、非同期入出力送信メッセージを受信し、その後、集約バッファに入出力送信メッセージを転送する。
ステップS238において、集約バッファ・ロジックは、アウトバウンド処理ループを開始し、その後、ステップS234においてデータを受信し、ステップS236において、集約バッファにデータを集約する。集約バッファは、ステップS240でも入出力送信メッセージを受信し、その後、ステップS242において、入出力送信メッセージとともに集約バッファからデータを転送する。次に、ステップS244において、集約バッファからの応答メッセージを、コア・ネスト・インターフェースを介してシステム・ファームウェアに送信する。
次に、図4を参照すると、データ処理システム210の例の概略図を示す。データ処理システム210は、適切なデータ処理システムの1つの例にすぎず、本明細書で説明される本発明の実施形態の用途または機能の範囲について何らかの限定を提案することを意図するものではない。いずれにしても、データ処理システム210は、本明細書で上記に示した機能のいずれかの実装または実施あるいはその両方を行うことができる。
データ処理システム210には、コンピュータ・システム/サーバ212があり、コンピュータ・システム/サーバ212は、非常に多くの他の汎用または専用コンピューティング・システム環境または構成で動作するものである。コンピュータ・システム/サーバ212とともに使用するのに適していることがある、よく知られたコンピューティング・システム、環境、または構成、あるいはその組合せの例は、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、セット・トップ・ボックス、プログラム可能家庭用電化製品、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および、上記のシステムまたはデバイスのいずれかを含む分散型クラウド・コンピューティング環境、等を含むがこれらに限定されない。
コンピュータ・システム/サーバ212は、コンピュータ・システムによって実行されるプログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的な背景で説明することができる。一般に、プログラム・モジュールは、特定のタスクを実施するか、特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含むことができる。コンピュータ・システム/サーバ212は、通信ネットワークを通じてリンクされたリモート処理デバイスによってタスクが実施される分散型クラウド・コンピューティング環境において実践することができる。分散型クラウド・コンピューティング環境では、プログラム・モジュールは、メモリ・ストレージ・デバイスを含むローカルとリモート両方のコンピュータ・システム・ストレージ媒体に置くことができる。
図4に示したように、データ処理システム210におけるコンピュータ・システム/サーバ212を、汎用コンピューティング・デバイスの形で示す。コンピュータ・システム/サーバ212の構成要素は、1つまたは複数のプロセッサまたは処理ユニット216、システム・メモリ228、および、システム・メモリ228を含む様々なシステム構成要素をプロセッサ216に連結するバス218を含むことができるがこれらに限定されない。
バス218は、メモリ・バスまたはメモリ・コントローラ、周辺機器バス、アクセラレイティッド・グラフィックス・ポート、および、様々なバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含むいくつかのタイプのバス構造のいずれかの1つまたは複数を表す。限定ではなく例として、このようなアーキテクチャは、インダストリ・スタンダード・アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、エンハンストISA(EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(VESA)ローカル・バス、およびペリフェラル・コンポーネント・インターコネクト(PCI)バスを含む。
コンピュータ・システム/サーバ212は、典型的には、様々なコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム/サーバ212によってアクセス可能な任意の利用可能な媒体であってもよく、揮発性媒体および不揮発性媒体の両方、取外し可能媒体および取外し不能媒体を含む。
システム・メモリ228は、ランダム・アクセス・メモリ(RAM)230、またはキャッシュ・メモリ232、あるいはその両方など、揮発性メモリの形のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ212は、他の取外し可能/取外し不能な、揮発性/不揮発性のコンピュータ・システム・ストレージ媒体をさらに含むことができる。ほんの一例として、(図示していないが、典型的には「ハード・ドライブ」と呼ばれる)取外し不能な不揮発性磁気媒体を読み書きするために、ストレージ・システム234を設置することができる。図示していないが、取外し可能な不揮発性磁気ディスク(例えば「フロッピー(R)・ディスク」)を読み書きするための磁気ディスク・ドライブ、および、CD-ROM、DVD-ROM、または他の光媒体などの取外し可能な不揮発性光ディスクを読み書きするための光ディスク・ドライブを設置することができる。このような事例では、それぞれを、1つまたは複数のデータ媒体インターフェースでバス218に接続することができる。下記でさらに描写し説明するように、メモリ228は、本発明の実施形態の機能を実行するように構成されたプログラム・モジュールのセット(例えば、少なくとも1つ)を有する少なくとも1つのプログラム製品を含むことができる。
プログラム/ユーティリティ240は、プログラム・モジュール242のセット(少なくとも1つ)を有し、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データと同様に、限定ではなく例として、メモリ228に格納することができる。オペレーティング・システム、1つもしくは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データのそれぞれ、またはそのいくつかの組合せは、ネットワーキング環境の実装形態を含むことができる。プログラム・モジュール242は、一般に、本明細書で説明されるような本発明の実施形態の機能または方法あるいはその両方を実行する。
コンピュータ・システム/サーバ212は、キーボード、ポインティング・デバイス、ディスプレイ224等などの1つもしくは複数の外部デバイス214、コンピュータ・システム/サーバ212とユーザが対話することを可能にする1つもしくは複数のデバイス、または、1つもしくは複数の他のコンピューティング・デバイスとコンピュータ・システム/サーバ212が通信することを可能にする任意のデバイス(例えば、ネットワーク・カード、モデム、等)、あるいはその組合せとも通信することができる。このような通信は、入出力(I/O)インターフェース222を介して発生することができる。さらに、コンピュータ・システム/サーバ212は、ローカル・エリア・ネットワーク(LAN)、一般的な広域ネットワーク(WAN)、またはパブリック・ネットワーク(例えばインターネット)、あるいはその組合せなどの1つまたは複数のネットワークとネットワーク・アダプタ220を介して通信することができる。描写したように、ネットワーク・アダプタ220は、コンピュータ・システム/サーバ212の他の構成要素とバス218を介して通信する。図示していないが、他のハードウェアまたはソフトウェア構成要素あるいはその両方を、コンピュータ・システム/サーバ212とともに使用できることを理解されたい。例は、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・ストレージ・システム等を含むがこれらに限定されない。
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組合せであってもよい。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体(または複数の媒体)を含むことができる。
コンピュータ可読ストレージ媒体は、命令実行デバイスによる使用のための命令を保持し格納することができる有形デバイスであってもよい。コンピュータ可読ストレージ媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、または前述の任意の適切な組合せであってもよいがこれらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例の完全に網羅されていないリストは、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、消去可能プログラマブル・リード・オンリ・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、命令が記録されたパンチ・カードまたは溝内隆起構造などの機械的にエンコードされたデバイス、および前述の任意の適切な組合せを含む。コンピュータ可読ストレージ媒体は、本明細書で使用されるように、電波もしくは他の自由に伝搬する電磁波、導波路もしくは他の伝送媒体を通じて伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通じて伝送される電気信号などの一過性の信号であると本質的に解釈されるべきではない。
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれの計算/処理デバイスに、あるいは、例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、もしくはワイヤレス・ネットワーク、またはその組合せといったネットワークを介して外部コンピュータまたは外部ストレージ・デバイスに、ダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せを備えることができる。各計算/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受信し、それぞれの計算/処理デバイス内のコンピュータ可読ストレージ媒体に格納するためにコンピュータ可読プログラム命令を転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、インストラクション・セット・アーキテクチャ(ISA)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、Smalltalk(R)、C++、もしくは同様のものなどのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む1つもしくは複数のプログラミング言語の任意の組合せで書かれたソース・コードもしくはオブジェクト・コードであってもよい。コンピュータ可読プログラム命令は、スタンド・アロンのソフトウェア・パッケージとして、全面的にユーザのコンピュータ上か、部分的にユーザのコンピュータ上で実行することができ、または、部分的にユーザのコンピュータ上かつ部分的にリモート・コンピュータ上か、全面的にリモート・コンピュータもしくはサーバ上で実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくは広域ネットワーク(WAN)を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続することができ、または、接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて)外部コンピュータに対して行われてもよい。いくつかの実施形態では、例えば、プログラム可能ロジック回路機器、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路機器は、本発明の態様を実施するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路機器を個別化することによって、コンピュータ可読プログラム命令を実行することができる。
本発明の態様は、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品の流れ図またはブロック図あるいはその両方を参照しながら本明細書で説明される。流れ図またはブロック図あるいはその両方の各ブロック、および流れ図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令によって実装できることが理解されよう。
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサによって実行する命令が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/行為を実装するための手段を作り出すべく、機械を生み出すために、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供することができる。これらのコンピュータ可読プログラム命令も、コンピュータ可読ストレージ媒体に格納することができ、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/行為の態様を実装する命令を含む製品を、命令を格納したコンピュータ可読ストレージ媒体が含むべく、特定の手法で機能するように、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはその組合せに指図することができる。
コンピュータ可読プログラム命令も、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行する命令が、流れ図またはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/行為を実装するべく、コンピュータ、他のプログラム可能装置、または他のデバイス上で一連の動作ステップを実施してコンピュータ実行処理を生み出すために、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードすることができる。
図中の流れ図およびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装形態のアーキテクチャ、機能、および動作を示す。この点に関して、流れ図またはブロック図の中の各ブロックは、指定のロジック機能を実現するための1つまたは複数の実行可能命令を含む命令のモジュール、セグメント、または一部を表すことができる。いくつかの代替実装形態では、ブロックに記された機能は、図に記された順序とは異なる順序で発生してもよい。例えば、連続して示された2つのブロックは、実際には、実質的に同時に実行されてもよく、または、ブロックは、時には、含まれる機能に応じて逆の順序で実行されてもよい。ブロック図または流れ図あるいはその両方の各ブロック、および、ブロック図または流れ図あるいはその両方におけるブロックの組合せは、指定の機能または行為を実施するか、専用ハードウェアとコンピュータ命令との組合せを実行する、専用ハードウェア・ベースのシステムによって実装できることにも留意されたい。
本発明の様々な実施形態の説明を例証のために提示してきたが、網羅的であること、または、開示した実施形態に限定することを意図するものではない。説明した実施形態の範囲および思想から逸脱することなく、多くの変更形態および変形形態が当業者には明らかであろう。本明細書で使用した専門用語は、実施形態の原理、実用的用途、もしくは市場で見つかる技術に対する技術的改善を最も良く説明するように、または、本明細書で開示した実施形態を当業者が理解できるように選ばれた。
10 システム・ファームウェア(FW)
12 コア
14 非同期コア・ネスト・インターフェース(IF)
16 集約バッファ
18 システム・ネスト
20 I/Oバス・コントローラ
22 I/Oバス
24 I/Oステータス・バッファ
26 早期完了ロジック
28 バッファI/Oバス・コントローラ・インターフェース
30 I/Oストア命令
32 非同期I/Oドライバ・コード
34 I/Oセットアップ・コード
36 非同期転送
38 非同期バス
40 ユーザ・インターフェース
50 システム・ハードウェア(HW)/ファームウェア(FW)
210 データ処理システム
212 コンピュータ・システム/サーバ
214 外部デバイス
216 CPU/データ処理ユニット
218 I/Oバス
220 ネットワーク・アダプタ
222 I/Oインターフェース
224 ディスプレイ
228 メモリ
230 RAM
232 キャッシュ
234 ストレージ・システム
240 プログラム/ユーティリティ
242 プログラム・モジュール

Claims (6)

  1. データ処理システム(210)の少なくとも1つの外部デバイス(214)への入出力ストア命令(30)をハンドリングするための方法であって、
    前記データ処理システム(210)が、入出力バス・コントローラ(20)によって少なくとも1つの入出力バス(22)に通信連結されたシステム・ネスト(18)を備え、
    前記データ処理システム(210)が、コア(12)、システム・ファームウェア(10)、および非同期コア・ネスト・インターフェース(14)を備えるデータ処理ユニット(216)を少なくともさらに備え、
    前記データ処理ユニット(216)が、集約バッファ(16)を介して前記システム・ネスト(18)に通信連結され、
    前記外部デバイス(214)が、前記入出力バス(22)に通信連結され、
    前記方法が、
    (i)前記データ処理システム(210)上で動くオペレーティング・システムが、(a)アドレスを通じたオフセットを伴う入出力機能;(b)移送されることになるデータ、若しくは移送されることになるデータへのポインタ、又は、移送されることになるデータと移送されることになるデータへのポインタ;および、(c)データの長さ、を少なくとも指定する前記入出力ストア命令(30)を発行すること、
    (ii)前記データ処理ユニット(216)が、前記入出力ストア命令(30)で指定された前記アドレスによって前記入出力機能を識別すること、
    (iii)前記データ処理ユニット(216)が、アドレス空間およびゲスト・インスタンス・レベルで前記入出力機能へのアクセスが許可されるかどうかを検証し、ゲストが前記データ処理システム(210)上で動くこと、
    (iv)前記データ処理ユニット(216)が、前記システム・ネスト(18)における前記入出力ストア命令(30)の実行が完了する前に、前記入出力ストア命令(30)を完了させること、
    (v)前記システム・ファームウェア(10)が、前記入出力ストア命令(30)の非同期実行中に前記データ処理ユニット(216)によってエラーが検出された場合、失敗した前記非同期実行の前記データを伝送することを、割込みを通じて前記オペレーティング・システムに通知すること
    を含み、
    さらに、前記集約バッファ(16)が、リクエストを送信した後、再使用のための空きがあるというメッセージを配信するための早期完了ロジック(26)を使用する、
    前記方法。
  2. データ処理システム(210)の少なくとも1つの外部デバイス(214)への入出力ストア命令(30)をハンドリングするための方法であって、
    前記データ処理システム(210)が、入出力バス・コントローラ(20)によって少なくとも1つの入出力バス(22)に通信連結されたシステム・ネスト(18)を備え、
    前記データ処理システム(210)が、コア(12)、システム・ファームウェア(10)、および非同期コア・ネスト・インターフェース(14)を備えるデータ処理ユニット(216)を少なくともさらに備え、
    前記データ処理ユニット(216)が、集約バッファ(16)を介して前記システム・ネスト(18)に通信連結され、
    前記外部デバイス(214)が、前記入出力バス(22)に通信連結され、
    前記方法が、
    (i)前記データ処理システム(210)上で動くオペレーティング・システムが、(a)アドレスを通じたオフセットを伴う入出力機能;(b)移送されることになるデータ、若しくは移送されることになるデータへのポインタ、又は、移送されることになるデータと移送されることになるデータへのポインタ;および、(c)データの長さ、を少なくとも指定する前記入出力ストア命令(30)を発行すること、
    (ii)前記データ処理ユニット(216)が、前記入出力ストア命令(30)で指定された前記アドレスによって前記入出力機能を識別すること、
    (iii)前記データ処理ユニット(216)が、アドレス空間およびゲスト・インスタンス・レベルで前記入出力機能へのアクセスが許可されるかどうかを検証し、ゲストが前記データ処理システム(210)上で動くこと、
    (iv)前記データ処理ユニット(216)が、前記システム・ネスト(18)における前記入出力ストア命令(30)の実行が完了する前に、前記入出力ストア命令(30)を完了させること、
    (v)前記システム・ファームウェア(10)が、前記入出力ストア命令(30)の非同期実行中に前記データ処理ユニット(216)によってエラーが検出された場合、失敗した前記非同期実行の前記データを伝送することを、割込みを通じて前記オペレーティング・システムに通知すること
    を含み、
    前記集約バッファ(16)が、前記非同期コア・ネスト・インターフェース(14)に非同期バス(38)を介して連結される、
    前記方法。
  3. 前記データの前記長さが8バイトを超える場合、前記データ処理ユニット(216)から前記外部デバイス(214)にデータを移送するために使用することができる非同期伝送メカニズムを通じて前記入出力ストア命令(30)によって、早期完了メッセージとともに複数のデータ・パケットで前記集約バッファ(16)に前記データをさらに移送する、請求項1又は2に記載の方法。
  4. さらに、入出力ステータス・バッファ(24)が、前記システム・ネスト(18)から、若しくは前記入出力バス・コントローラ(20)から、又はその両方から返された状態を収集する、請求項に記載の方法。
  5. 請求項ないしのいずれか一項に記載の方法をコンピュータに実行させる、コンピュータ・プログラム。
  6. 請求項に記載の前記コンピュータ・プログラムをコンピュータ可読ストレージ媒体に記録した、ストレージ媒体。
JP2021532167A 2019-01-31 2020-01-14 入出力ストア命令をハンドリングする方法、システム、およびプログラム Active JP7461693B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP19154733.0 2019-01-31
EP19154733 2019-01-31
PCT/EP2020/050755 WO2020156796A1 (en) 2019-01-31 2020-01-14 Handling an input/output store instruction

Publications (3)

Publication Number Publication Date
JP2022518340A JP2022518340A (ja) 2022-03-15
JPWO2020156796A5 JPWO2020156796A5 (ja) 2022-06-22
JP7461693B2 true JP7461693B2 (ja) 2024-04-04

Family

ID=65275982

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021532167A Active JP7461693B2 (ja) 2019-01-31 2020-01-14 入出力ストア命令をハンドリングする方法、システム、およびプログラム

Country Status (10)

Country Link
US (2) US11163566B2 (ja)
EP (1) EP3918466A1 (ja)
JP (1) JP7461693B2 (ja)
CN (1) CN113366433A (ja)
AU (1) AU2020214661B2 (ja)
BR (1) BR112021015075A2 (ja)
CA (1) CA3127852A1 (ja)
IL (1) IL284334B2 (ja)
TW (1) TWI773959B (ja)
WO (1) WO2020156796A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SG11202104428PA (en) 2019-01-31 2021-05-28 Ibm Handling an input/output store instruction
TWI767175B (zh) 2019-01-31 2022-06-11 美商萬國商業機器公司 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品
WO2020157594A1 (en) 2019-01-31 2020-08-06 International Business Machines Corporation Handling an input/output store instruction
TWI773959B (zh) 2019-01-31 2022-08-11 美商萬國商業機器公司 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品
CN112286466B (zh) * 2020-11-18 2024-05-07 合肥沛睿微电子股份有限公司 电子装置及空间复用方法
US11640270B2 (en) * 2021-07-27 2023-05-02 Beijing Tenafe Electronic Technology Co., Ltd. Firmware-controlled and table-based conditioning for flexible storage controller

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013538378A (ja) 2010-06-23 2013-10-10 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピューティング環境におけるリソース使用を測定するコンピュータ・システム、方法、およびコンピュータ・プログラム

Family Cites Families (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US1052278A (en) 1910-11-03 1913-02-04 George I Rockwood Pipe-hanger.
FR2273317B1 (ja) 1974-05-28 1976-10-15 Philips Electrologica
US4947316A (en) 1983-12-29 1990-08-07 International Business Machines Corporation Internal bus architecture employing a simplified rapidly executable instruction set
US5131081A (en) * 1989-03-23 1992-07-14 North American Philips Corp., Signetics Div. System having a host independent input/output processor for controlling data transfer between a memory and a plurality of i/o controllers
JPH03288934A (ja) * 1990-04-05 1991-12-19 Fujitsu Ltd 仮想計算機システムにおけるデータ転送制御方式
JPH04195418A (ja) * 1990-11-28 1992-07-15 Hitachi Ltd 磁気テープ記憶装置
US5317739A (en) * 1992-03-30 1994-05-31 International Business Machines Corp. Method and apparatus for coupling data processing systems
US5548735A (en) * 1993-09-15 1996-08-20 International Business Machines Corporation System and method for asynchronously processing store instructions to I/O space
US5553302A (en) 1993-12-30 1996-09-03 Unisys Corporation Serial I/O channel having independent and asynchronous facilities with sequence recognition, frame recognition, and frame receiving mechanism for receiving control and user defined data
JPH07302200A (ja) 1994-04-28 1995-11-14 Hewlett Packard Co <Hp> 順次付けロード動作および順序付け記憶動作を強制する命令を有するコンピュータのロード命令方法。
US5548788A (en) 1994-10-27 1996-08-20 Emc Corporation Disk controller having host processor controls the time for transferring data to disk drive by modifying contents of the memory to indicate data is stored in the memory
DE19631289A1 (de) 1996-08-02 1998-02-05 Ibm Verfahren zum Testen eines Protokollumsetzers und Protokollumsetzer
US6072781A (en) * 1996-10-22 2000-06-06 International Business Machines Corporation Multi-tasking adapter for parallel network applications
US6085277A (en) * 1997-10-15 2000-07-04 International Business Machines Corporation Interrupt and message batching apparatus and method
US6038646A (en) 1998-01-23 2000-03-14 Sun Microsystems, Inc. Method and apparatus for enforcing ordered execution of reads and writes across a memory interface
US6247097B1 (en) * 1999-01-22 2001-06-12 International Business Machines Corporation Aligned instruction cache handling of instruction fetches across multiple predicted branch instructions
US6189088B1 (en) * 1999-02-03 2001-02-13 International Business Machines Corporation Forwarding stored dara fetched for out-of-order load/read operation to over-taken operation read-accessing same memory location
US6496277B1 (en) * 1999-07-23 2002-12-17 Xerox Corporation Data flow control and storage facility for an image reproduction system
US6725348B1 (en) 1999-10-13 2004-04-20 International Business Machines Corporation Data storage device and method for reducing write misses by completing transfer to a dual-port cache before initiating a disk write of the data from the cache
US6490647B1 (en) * 2000-04-04 2002-12-03 International Business Machines Corporation Flushing stale data from a PCI bus system read prefetch buffer
US6578102B1 (en) * 2000-04-18 2003-06-10 International Business Machines Corporation Tracking and control of prefetch data in a PCI bus system
US7042881B1 (en) 2001-06-29 2006-05-09 Cisco Technology, Inc. Asynchronous transfer mode system and method to verify a connection
US7178019B2 (en) 2003-11-13 2007-02-13 Hewlett-Packard Development Company, L.P. Networked basic input output system read only memory
US7234004B2 (en) 2003-12-19 2007-06-19 International Business Machines Corporation Method, apparatus and program product for low latency I/O adapter queuing in a computer system
US7200626B1 (en) 2004-01-22 2007-04-03 Unisys Corporation System and method for verification of a quiesced database copy
US7079978B2 (en) 2004-05-24 2006-07-18 International Business Machines Corporation Apparatus, system, and method for abbreviated library calibration
US7467325B2 (en) 2005-02-10 2008-12-16 International Business Machines Corporation Processor instruction retry recovery
US7631097B2 (en) 2005-07-21 2009-12-08 National Instruments Corporation Method and apparatus for optimizing the responsiveness and throughput of a system performing packetized data transfers using a transfer count mark
US7827433B1 (en) 2007-05-16 2010-11-02 Altera Corporation Time-multiplexed routing for reducing pipelining registers
US7870351B2 (en) 2007-11-15 2011-01-11 Micron Technology, Inc. System, apparatus, and method for modifying the order of memory accesses
US7991981B2 (en) 2008-02-01 2011-08-02 International Business Machines Corporation Completion of asynchronous memory move in the presence of a barrier operation
US7941627B2 (en) 2008-02-01 2011-05-10 International Business Machines Corporation Specialized memory move barrier operations
JP4623126B2 (ja) 2008-04-14 2011-02-02 株式会社日立製作所 データ処理システム
US8867344B2 (en) * 2008-07-21 2014-10-21 Mediatek Inc. Methods for bus data transmission and systems utilizing the same
US8566480B2 (en) * 2010-06-23 2013-10-22 International Business Machines Corporation Load instruction for communicating with adapters
JP5680466B2 (ja) 2011-03-29 2015-03-04 三菱重工業株式会社 並列処理システム及び並列処理システムの動作方法
US9652230B2 (en) 2013-10-15 2017-05-16 Mill Computing, Inc. Computer processor employing dedicated hardware mechanism controlling the initialization and invalidation of cache lines
US20150261535A1 (en) 2014-03-11 2015-09-17 Cavium, Inc. Method and apparatus for low latency exchange of data between a processor and coprocessor
US10120681B2 (en) 2014-03-14 2018-11-06 International Business Machines Corporation Compare and delay instructions
US9588914B2 (en) 2014-04-09 2017-03-07 International Business Machines Corporation Broadcast and unicast communication between non-coherent processors using coherent address operations
US9460019B2 (en) * 2014-06-26 2016-10-04 Intel Corporation Sending packets using optimized PIO write sequences without SFENCEs
US9477481B2 (en) 2014-06-27 2016-10-25 International Business Machines Corporation Accurate tracking of transactional read and write sets with speculation
US10489158B2 (en) 2014-09-26 2019-11-26 Intel Corporation Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores
GB2531011A (en) 2014-10-07 2016-04-13 Ibm Initializing I/O Devices
US9542201B2 (en) 2015-02-25 2017-01-10 Quanta Computer, Inc. Network bios management
JP6493088B2 (ja) * 2015-08-24 2019-04-03 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US9965187B2 (en) * 2016-02-18 2018-05-08 Lawrence Livermore National Security, Llc Near-memory data reorganization engine
US9971545B1 (en) 2016-03-23 2018-05-15 Crossbar, Inc. Non-volatile write and read cache for storage media
US10248509B2 (en) 2016-11-16 2019-04-02 International Business Machines Corporation Executing computer instruction including asynchronous operation
EP3812900B1 (en) 2016-12-31 2023-11-29 Intel Corporation Systems, methods, and apparatuses for heterogeneous computing
US10452278B2 (en) * 2017-03-24 2019-10-22 Western Digital Technologies, Inc. System and method for adaptive early completion posting using controller memory buffer
US10606591B2 (en) 2017-10-06 2020-03-31 International Business Machines Corporation Handling effective address synonyms in a load-store unit that operates without address translation
WO2020157594A1 (en) 2019-01-31 2020-08-06 International Business Machines Corporation Handling an input/output store instruction
TWI767175B (zh) 2019-01-31 2022-06-11 美商萬國商業機器公司 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品
SG11202104428PA (en) 2019-01-31 2021-05-28 Ibm Handling an input/output store instruction
TWI773959B (zh) 2019-01-31 2022-08-11 美商萬國商業機器公司 用於處理輸入輸出儲存指令之資料處理系統、方法及電腦程式產品
US11748101B2 (en) * 2021-07-13 2023-09-05 Arm Limited Handling of single-copy-atomic load/store instruction with a memory access request shared by micro-operations

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013538378A (ja) 2010-06-23 2013-10-10 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピューティング環境におけるリソース使用を測定するコンピュータ・システム、方法、およびコンピュータ・プログラム

Also Published As

Publication number Publication date
TWI773959B (zh) 2022-08-11
US11762659B2 (en) 2023-09-19
IL284334A (en) 2021-08-31
AU2020214661B2 (en) 2022-09-22
BR112021015075A2 (pt) 2021-09-28
WO2020156796A1 (en) 2020-08-06
US20220004387A1 (en) 2022-01-06
TW202032378A (zh) 2020-09-01
AU2020214661A1 (en) 2021-06-10
CN113366433A (zh) 2021-09-07
EP3918466A1 (en) 2021-12-08
IL284334B1 (en) 2023-11-01
JP2022518340A (ja) 2022-03-15
US20200249943A1 (en) 2020-08-06
US11163566B2 (en) 2021-11-02
CA3127852A1 (en) 2020-08-06
IL284334B2 (en) 2024-03-01

Similar Documents

Publication Publication Date Title
JP7461693B2 (ja) 入出力ストア命令をハンドリングする方法、システム、およびプログラム
JP7479373B2 (ja) 入出力ストア命令をハンドリングする方法、システム、およびプログラム
US11593107B2 (en) Handling an input/output store instruction
JP7379491B2 (ja) 入出力ストア命令をハンドリングする方法、システム、およびプログラム
US20170315863A1 (en) Hardware-assisted protection for synchronous input/output
US20120317316A1 (en) System to manage input/output performance and/or deadlock in network attached storage gateway connected to a storage area network environment

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20220512

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220613

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220622

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230704

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230711

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231003

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20231003

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20231005

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20231227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240119

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20240119

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20240119

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20240213

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240305

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20240307

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240319

R150 Certificate of patent or registration of utility model

Ref document number: 7461693

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150