JP5907099B2 - I / O processing device, address validity verification method, and address validity verification program - Google Patents
I / O processing device, address validity verification method, and address validity verification program Download PDFInfo
- Publication number
- JP5907099B2 JP5907099B2 JP2013057551A JP2013057551A JP5907099B2 JP 5907099 B2 JP5907099 B2 JP 5907099B2 JP 2013057551 A JP2013057551 A JP 2013057551A JP 2013057551 A JP2013057551 A JP 2013057551A JP 5907099 B2 JP5907099 B2 JP 5907099B2
- Authority
- JP
- Japan
- Prior art keywords
- address
- transfer
- verification
- received data
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000012545 processing Methods 0.000 title claims description 154
- 238000000034 method Methods 0.000 title claims description 77
- 238000012795 verification Methods 0.000 title claims description 68
- 238000012546 transfer Methods 0.000 claims description 264
- 230000005856 abnormality Effects 0.000 claims description 61
- 125000004122 cyclic group Chemical group 0.000 claims description 29
- 238000012937 correction Methods 0.000 claims description 17
- 238000001514 detection method Methods 0.000 claims description 6
- 230000002093 peripheral effect Effects 0.000 description 37
- 238000006243 chemical reaction Methods 0.000 description 20
- 238000010586 diagram Methods 0.000 description 19
- 230000010365 information processing Effects 0.000 description 15
- 230000002159 abnormal effect Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 5
- 238000013519 translation Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000007429 general method Methods 0.000 description 3
- 101100426589 Neurospora crassa (strain ATCC 24698 / 74-OR23-1A / CBS 708.71 / DSM 1257 / FGSC 987) trp-3 gene Proteins 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 101100208128 Arabidopsis thaliana TSA1 gene Proteins 0.000 description 1
- 206010009944 Colon cancer Diseases 0.000 description 1
- 102000003629 TRPC3 Human genes 0.000 description 1
- 101150037542 Trpc3 gene Proteins 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000009432 framing Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 101150026818 trp3 gene Proteins 0.000 description 1
Images
Landscapes
- Detection And Correction Of Errors (AREA)
- Debugging And Monitoring (AREA)
- Information Transfer Systems (AREA)
Description
本発明は、データ入出力に伴う転送先アドレスの正当性を検証する入出力処理装置、アドレス正当性検証方法およびアドレス正当性検証用プログラムに関する。 The present invention relates to an input / output processing apparatus, an address validity verification method, and an address validity verification program for verifying the validity of a transfer destination address accompanying data input / output.
今日において、入出力処理装置を介して周辺処理装置から中央処理装置へデータを送信するような情報処理装置は、社会基盤の一部になっており、情報処理装置の障害による各種機能の停止は、社会生活に影響を与える可能性がある。 Today, information processing devices that transmit data from a peripheral processing device to a central processing device via an input / output processing device are part of the social infrastructure, and various functions are stopped due to a failure of the information processing device. May affect social life.
また、近年のLSI(Large Scale Integration )微細化により、アルファ線等を原因としたデータ化けの発生確率が高くなってきている。そこで、データ化けが発生した場合であっても、そのデータを訂正したりリトライしたりすることによってデータ誤りを救済し、情報処理装置を継続動作させることが求められている。 Also, with the recent miniaturization of LSI (Large Scale Integration), the probability of data corruption due to alpha rays and the like is increasing. Therefore, even when data corruption occurs, it is required to remedy the data error by correcting or retrying the data and to continuously operate the information processing apparatus.
特許文献1には、中継デバイスから送信されるデータのエラーを検出するPCI(Peripheral Component Interconnect ) ExpressのTLP(Transaction Layer Packet)処理回路が記載されている。なお、PCI Expressは、登録商標である。以下の説明では、PCI ExpressをPCIeと記すこともある。
特許文献1に記載された処理回路は、トランザクションレイヤーパケット(以下、TLPと記すこともある。)を受信すると、デバイスの中継回路で生じるエラーを検出するための検出コードを生成し、TLPに付加するとともに、バッファに記憶する。そして、特許文献1に記載された処理回路は、パケットの送信時に再度TLPの検出コードと、バッファに記憶させた検出コードとを比較して、送信される信号が正常か否かを判断する。また、特許文献1に記載された処理回路は、信号を異常と判断した場合、NAK DLLP(Not Acknowledge Data Link Layer Packet)信号を送信側装置に返信する。
When the processing circuit described in
まず、PCIeを利用した一般的な情報処理装置の動作を説明する。図14は、情報処理装置の例を示す説明図である。図14に例示する情報処理装置1000は、サーバやメインフレームと呼ばれるコンピュータシステムである。情報処理装置1000は、中央処理装置100と、入出力処理装置200と、周辺処理装置2000,3000とを備えている。
First, the operation of a general information processing apparatus using PCIe will be described. FIG. 14 is an explanatory diagram illustrating an example of the information processing apparatus. An
中央処理装置100は、メインメモリ(MM)130と、演算処理装置(EPU:Energy Processing Unit)110〜113と、メモリコントローラ(MC)120とを含む。メインメモリ130は、ソフトウェアの命令やソフトウェアが処理するデータを格納する。演算処理装置110〜113は、メインメモリ130よりソフトウェアの命令やデータを読み出して各処理を実行する。メモリコントローラ120は、演算処理装置110〜113と、メインメモリ130と、後述する入出力処理装置200のIOコントローラ210とを接続し、相互のアクセスを制御する。
The
演算処理装置110〜113とメモリコントローラ120は、バス140で接続され、メインメモリ130とメモリコントローラ120は、バス150で接続され、IOコントローラ210とメモリコントローラ120は、バス160で接続される。
The
入出力処理装置200は、演算処理装置110〜113の指示により、メインメモリ130と周辺処理装置2000,3000との間でデータ転送を行う装置である。入出力処理装置200は、周辺処理装置2000,3000と接続するためのPCIeカード280〜283と、PCIeカード280〜283を接続するためのPCIeスイッチ240を含む。PCIeスイッチ240とPCIeカード280〜283は、それぞれPCIeインタフェース(I/F)260〜263で接続される。
The input /
また、入出力処理装置200は、PCIeカード280〜283を介して周辺処理装置2000,3000とメインメモリ130との間のデータ転送を制御するIOコントローラ(IOC)210を含む。IOコントローラ210とメモリコントローラ120は、バス160で接続される。IOコントローラ210とPCIeスイッチ240は、ポート210−1,240−1を介して、PCIe I/F252で接続される。
Further, the input /
さらに、入出力処理装置200は、プロセッサ(PROC)220と、ローカルメモリ(LM)230を含む。プロセッサ220は、演算処理装置110〜113からメインメモリ130と周辺処理装置2000,3000の間のデータ転送指示を受け取り、IOコントローラ210とPCIeカード280〜283を制御してデータ転送を行う。
Further, the input /
プロセッサ220は、例えば、ファームウェアに従って動作する。以下、ファームウェアに従ってプロセッサ220が動作することを、ファームウェアが各種処理を行うと記すこともある。ローカルメモリ230は、ファームウェアやファームウェアが使用するデータを格納する。
The
プロセッサ220とローカルメモリ230は、バス270で接続される。プロセッサ220とIOコントローラ210は、ポート220−1,210−2を介して、PCIe I/F250で接続される。プロセッサ220とPCIeスイッチ240は、ポート220−2,240−2を介して、PCIe I/F251で接続される。なお、プロセッサ220のPCIeポート220−1とPCIeポート220−2がそれぞれルートコンプレックスになっているとする。
The
周辺処理装置2000、3000は、磁気ディスク装置等であり、PCIeカード280〜283とはファイバーチャネルなどの各種I/Fによって接続されている。メインメモリ130と周辺処理装置2000,3000の間では、以下の経路でデータ転送が行われる。まず、データは、中央処理装置100のメインメモリ130から、バス150、メモリコントローラ120、バス160を経由して、入出力処理装置200に送信される。さらに、データは、入出力処理装置200のIOコントローラ210、PCIe I/F252、PCIeスイッチ240、PCIe I/F260〜263、PCIeカード280〜283、周辺I/F2001,2002,3001,3002を経由して、周辺処理装置2000,3000に送信される。逆方向も同様である。
The
入出力処理装置200において、プロセッサ220とIOコントローラ210、PCIeスイッチ240、PCIeカード280〜283は、全てPCIe I/Fで接続されている。プロセッサ220のPCIeポート220−1とPCIeポート220−2は、それぞれルートコンプレックスであるので、プロセッサ220およびPCIeカード280〜283からはローカルメモリ230も含めて同一のメモリ空間としてアクセスできる。
In the input /
IOコントローラ210とメモリコントローラ120は、バス160によって接続されている。ただし、通常は、バスの種類およびメモリ空間が異なっているため、PCIeカード280〜283からメインメモリ130へアクセスする際、IOコントローラ210の変換機構211(図14において図示せず)によってアドレス変換とI/F変換が行われる。
The IO
図15は、アドレス変換の方法例を示す説明図である。図15に示すように、メインメモリ130のアドレス空間131とベースアドレスの異なった写しのアドレス空間が、IOコントローラ210のPCIeポート210−1のMMIO(Memory Mapped Input/Output)空間301に設定される。この状況で、MMIO空間301にアクセスされたとき、IOコントローラ210は、変換機構211によって、入力されたアドレスを、アドレス変換マスクレジスタ213の値でマスクする。IOコントローラ210は、マスクした結果にアドレス変換ベースレジスタ212の値を加算することで、入力時のアドレス302をメインメモリ131のアドレス空間のアドレス132に変換する。
FIG. 15 is an explanatory diagram illustrating an example of an address conversion method. As shown in FIG. 15, an address space having a different base address from the
例えば、図15に示す例では、メインメモリ130のアドレス空間131を0x0〜0xFFFFFFFFFFとし、その写しとしてIOコントローラ210のPCIeポート210−1に0x800000000000〜0x80FFFFFFFFFFのMMIO空間301を割り当てる。さらに、アドレス変換ベースレジスタ212に0x0を設定し、アドレス変換マスクレジスタ213に0x00FFFFFFFFFFを設定する。
For example, in the example illustrated in FIG. 15, the
PCIeカード280〜283がメインメモリ130のアドレス0x8000FF00にデータを書き込むとき、PCIeカード280〜283は、MMIO空間301のアドレス0x80008000FF00にアクセスする。IOC210は、MMIO空間301へのアクセスを受けると、変換機構211は、要求されたアドレス0x80008000FF00をアドレス変換マスクレジスタ213の値と論理積を取って0x00008000FF00と算出する。さらに、変換機構211は、算出した値にアドレス変換ベースレジスタ212の値を加算して0x00008000FF00を得る。IOコントローラ210は、得られたアドレスを利用してメインメモリ130のアドレス空間131にアクセスする。
When the
情報処理装置1000において、周辺処理装置2000,3000からメインメモリ130にデータ転送するとき、演算処理装置110〜113は、周辺処理装置2000,3000からメインメモリ130にデータ転送するためのチャネルプログラムを作成する。演算処理装置110〜113は、作成したチャネルプログラムをメインメモリ130に格納し、入出力処理装置200にチャネルプログラムの格納アドレスを指定してチャネルプログラムの実行を指示する。そして、演算処理装置110〜113は、入出力処理装置200からのチャネルプログラムの終了通知を待ち合わせる。演算処理装置110〜113が終了通知を受信することでデータ転送が完了する。
In the
演算処理装置110〜113から入出力処理装置200へのチャネルプログラムの実行指示は、演算処理装置110〜113がIOコントローラ210へメモリアクセスすることで行われる。これにより、IOコントローラ210がプロセッサ220のPCIeポート220−1に割込を行うことで、プロセッサ220上で動作するファームウェアにチャネルプログラムの実行が指示される。なお、これは一般的な方法であり、詳細な説明は省略する。
The execution instruction of the channel program from the
図16は、チャネルプログラムの例を示す説明図である。また、図17は、チャネルプログラムヘッダの例を示す説明図である。図16に例示するように、チャネルプログラム20は、チャネルプログラムヘッダ(CPH)20−0と複数のチャネルコマンドエントリ(CCE)20−1〜nを有する。また、図17に例示するように、チャネルプログラムヘッダ20−0は、チャネルプログラム20を実行するチャネル番号20−0−1を有する。
FIG. 16 is an explanatory diagram showing an example of a channel program. FIG. 17 is an explanatory diagram showing an example of the channel program header. As illustrated in FIG. 16, the
チャネル番号20−0−1は、入出力処理装置200に接続された周辺処理装置2000,3000および接続経路を区別するための番号である。例えば、PCIeカード280に接続された周辺処理装置2000,3000にチャネル番号の0〜15が割り当てられ、PCIeカード281に接続された周辺処理装置2000,3000にチャネル番号の16〜31が割り当てられる。また、PCIeカード282に接続された周辺処理装置2000,3000にチャネル番号の32〜47が割り当てられ、PCIeカード283に接続された周辺処理装置2000,3000にチャネル番号の48〜63が割り当てられる。
The channel number 20-0-1 is a number for distinguishing the
図18は、チャネルコマンドエントリの例を示す説明図である。図18に例示するように、チャネルコマンドエントリ20−nは、コマンド20−n−1とコマンド20−n−1を修飾するフラグ20−n−2、データ転送する場合の転送カウントを格納するカウント20−n−3、および、メインメモリ130上のデータ転送先またはデータ転送元のアドレス20−n−4を有する。
FIG. 18 is an explanatory diagram of an example of a channel command entry. As illustrated in FIG. 18, the channel command entry 20-n includes a command 20-n-1 and a flag 20-n-2 that modifies the command 20-n-1, and a count that stores a transfer count when data is transferred. 20-n-3 and a data transfer destination or data transfer source address 20-n-4 on the
プロセッサ220上で動作するファームウェアは、演算処理装置110〜113よりチャネルプログラム20の実行を指示されると、指示されたアドレスより読み出したチャネルプログラム20を実行する。ファームウェアは、最初に指示されたアドレスよりチャネルプログラムヘッダ20−0を読み出し、チャネル番号20−0−1より対象となる周辺処理装置2000,3000とPCIeカード280〜283を特定する。
When the firmware that runs on the
続いて、プロセッサ220は、チャネルコマンドエントリ20−1を読み出して、コマンド20−1−1とフラグ20−1−2に対応した処理を行う。ファームウェアは、1つのチャネルコマンドエントリ20−n−1に対応する処理が完了したら次のチャネルコマンドエントリ20−nを読み出して、対応する処理を実行する。全てのチャネルコマンドエントリ20−nを処理したら、プロセッサ220は、演算処理装置110〜113にチャネルプログラム20が終了したことを通知する。
Subsequently, the
入出力処理装置200から演算処理装置110〜113へのチャネルプログラム20の終了通知は、プロセッサ220上で動作するファームウェアがIOコントローラ210にメモリアクセスすることで行われる。具体的には、IOコントローラ210がメモリコントローラ120を通して演算処理装置110〜113に割込を通知することで、終了通知が行われる。なお、これは一般的な方法であり、詳細な説明は省略する。
The end notification of the
チャネルコマンドエントリ20−nが周辺処理装置2000,3000からメインメモリ130へのデータ転送の指示を示しているとする。この場合、チャネルコマンドエントリ20−nのカウント20−n−3には、転送カウントが格納され、アドレス20−n−4には、転送先のメインメモリ130上のアドレスが格納される。
It is assumed that the channel command entry 20-n indicates an instruction for data transfer from the
このとき、プロセッサ220は、アドレス20−n−4に対応したIOコントローラ210のMMIO空間301にカウント20−n−3の分だけデータ転送することを、チャネル番号20−0−1に対応したPCIeカード280〜283にそれぞれ設定する。プロセッサ220は、データ転送の完了をPCIeカード280〜283からの割込があるまで待ち合わせる。
At this time, the
例えば、図15においてチャネル番号が0でアドレス20−n−4が0x8000FF00だった場合、プロセッサ220は、PCIeカード280に、0x80008000FF00のアドレスにデータ転送するよう設定する。
For example, in FIG. 15, when the channel number is 0 and the address 20-n-4 is 0x8000FF00, the
演算処理装置110〜113と入出力処理装置200は、複数のチャネルプログラム20を同時に実行することが可能である。演算処理装置110〜113は、入出力処理装置200にチャネルプログラム20の実行を指示した後、チャネルプログラム20の完了を待ち合わせている間に他の命令や他のチャネルプログラム20の実行指示を行うことが可能である。また、入出力処理装置200は、PCIeカード280〜283にデータ転送指示を行った後、データ転送の終了を待ち合わせている間に他のチャネルプログラム20のチャネルコマンドエントリ20−nを実行することが可能である。なお、これらの実行方法は、本発明についての主要部分ではないため、詳細な説明は省略する。
The
図19は、送受信されるパケットの例を示す説明図である。PCIe I/Fでデータ転送を行う場合、図19に例示するパケット1(物理層パケット)がPCIe I/F間で送受信される。PCIeのパケットは、処理するレイヤ毎に格納する内容が決められている。トランザクションレイヤーパケット(TLP)3は、Header3−1と、送受信するData3−2と、Header3−1およびData3−2の正当性を確認するためのECRC3−3とを有する。すなわち、送受信されるパケットにはECRCが付与されていると言える。 FIG. 19 is an explanatory diagram illustrating an example of packets transmitted and received. When data transfer is performed using the PCIe I / F, a packet 1 (physical layer packet) illustrated in FIG. 19 is transmitted and received between the PCIe I / Fs. The contents of the PCIe packet are determined for each layer to be processed. The transaction layer packet (TLP) 3 includes Header 3-1, Data 3-2 to be transmitted / received, and ECRC 3-3 for confirming the validity of Header 3-1 and Data 3-2. That is, it can be said that ECRC is given to the transmitted and received packets.
なお、パケット2は、データリンク層パケットを示し、TLP3に含まれる情報に加え、Sequence Number2−1およびLCRC2−2を含む。また、パケット1は、パケット2に含まれる情報に加え、Framing1−1,1−2を含む。
図20は、PCIeカード280〜283からメインメモリ130にデータ転送する場合の、Header3−1の例を示す説明図である。Header3−1は、トランザクションレイヤーパケット3の形式やリクエスト内容を示すFormat3−1−1と、Type3−1−2と、リクエストの要求元を示すRequester ID3−1−3と、リクエスト内容に対応したAddress3−1−4とを含む。
FIG. 20 is an explanatory diagram illustrating an example of the Header 3-1 when data is transferred from the
例えば、図15に示す例では、データ付きのメモリライトリクエストの場合、Format3−1−1に011b、Type3−1−2に00000bが設定される。また、Requester ID3−1−3には、データ送信元であるPCIeカード280〜283のバス番号とデバイス番号が設定され、Address3−1−4には、0x80008000FF00が設定される。
For example, in the example shown in FIG. 15, in the case of a memory write request with data, 011b is set to Format3-1-1, and 00000b is set to Type3-1-2. In addition, the bus number and device number of the
ECRC3−3は、トランザクションレイヤにおいて終端間(エンド・ツー・エンド)でデータ完全性を保証するための32ビットのCRC(Cyclic Redundancy Code)を格納する。このCRCは、Transaction Layer end to end 32 bit CRC と記される。また、このCRCのことを、終端間巡回冗長検査符号(ECRC)と記すこともある。TRP3の送信元でHeader3−1とData3−2についてCRCが作成され、TRP3のECRC3−3に付加される。付加されたCRCは、TRP3の受信先で、Header3−1とData3−2の正当性を検証するために使用される。以下、ECRC3−3に格納されたCRCを利用することを、単にECRC3−3を利用する(用いる)と記すこともある。
The ECRC 3-3 stores a 32-bit CRC (Cyclic Redundancy Code) for guaranteeing data integrity between ends (end-to-end) in the transaction layer. This CRC is written as Transaction Layer end to end 32 bit CRC. Further, this CRC may be referred to as an end-to-end cyclic redundancy check code (ECRC). CRCs are created for Header 3-1 and Data 3-2 at the transmission source of
例えば、PCIeカード280〜283からメインメモリ130にデータ転送するとき、PCIeカード280〜283は、トランザクションレイヤーパケット3のCRCを作成してECRC3−3に付加する。PCIe I/F上の送信先となるIOコントローラ210のPCIeポート210−1では、トランザクションレイヤーパケット3のECRC3−3を用いて受信したパケットの正当性が検証される。
For example, when data is transferred from the
例えば、PCIeカード280〜283からメインメモリ130へのデータ転送において、PCIeスイッチ240の内部でトランザクションレイヤーパケット3のデータ化けが発生したとする。この場合でも、IOコントローラ210のPCIeポート210−1でECRC3−3を用いてトランザクションレイヤーパケット3を検証することで、データ化けを検出できる。
For example, it is assumed that data corruption of the
PCIeでは、ECRC3−3で異常を検出したときに、その異常をルートコンプレックスに割込で通知する機能を有する。図14に示す入出力処理装置では、IOコントローラ210のPCIeポート210−1でECRC3−3の異常を検出したとき、プロセッサ220のPCIeポート220−2に割込が通知される。
The PCIe has a function of notifying the root complex of an abnormality when an abnormality is detected by the ECRC 3-3. In the input / output processing device illustrated in FIG. 14, when an abnormality of the ECRC 3-3 is detected at the PCIe port 210-1 of the
図21は、PCIeポートのコンフィグレーション空間の例を示す説明図である。PCIeでは、PCIeポートのコンフィグレーション空間10に割込で通知した異常内容を示すAdvanced Error Reporting Extended Capability Structure11を有する。
FIG. 21 is an explanatory diagram of an example of the configuration space of the PCIe port. The PCIe has an Advanced Error Reporting
図22は、Advanced Error Reporting Extended Capability Structureの内容を示す説明図である。ECRC3−3で異常が検出されると、図22に示すUncorrectable Error Status Register11−1にECRC異常が設定され、Header Log Register11−4に、ECRC異常が検知されたトランザクションレイヤーパケット3のHeader3−1が格納される。なお、これらの事項は、PCIeの仕様で詳しく説明されているため、詳細な説明は省略する。
FIG. 22 is an explanatory diagram showing the contents of the Advanced Error Reporting Extended Capability Structure. When an abnormality is detected in the ECRC 3-3, an ECRC abnormality is set in the Uncorrectable Error Status Register 11-1 shown in FIG. 22, and the Header 3-1 of the
ここで、チャネルコマンドエントリ20−nの指示により、周辺処理装置2000,3000からメインメモリ130へデータ転送を行っているときにPCIeスイッチ240内でトランザクションレイヤーパケット3のデータ化けが発生した場合を考える。PCIeカード280〜283でトランザクションレイヤーパケット3を送信する際にECRC3−3を付加していた場合、IOコントローラ210のPCIeポート210−1で、トランザクションレイヤーパケット3の正当性がECRC3−3によって検証され、ECRC異常が検出される。
Here, a case where data corruption of the
PCIeポート210−1は、ECRC異常を検出すると、異常が検出されたトランザクションレイヤーパケット3のヘッダ3−1をHeader Log Register11−4に格納する。また、PCIeポート210−1は、図22に示すUncorrectable Error Status Register11−1に、ECRC異常を設定して、プロセッサ220に割込を通知する。
When the PCIe port 210-1 detects an ECRC abnormality, the PCIe port 210-1 stores the header 3-1 of the
ECRC異常が検出されたトランザクションレイヤーパケット3は破棄され、データ化けしたデータはメインメモリ130に転送されない。しかし、PCIeカード280〜283からメインメモリ130へのデータ転送は、Postedのトランザクションである。そのため、PCIeカード280〜283から見ると、データ転送は正常に終了するため、ファームウェア(プロセッサ220)に転送が終了したことが通知される。そのため、ファームウェアから見ると、データ転送が正常に終了したように見えてしまう。
The
一方、プロセッサ220上で動作するファームウェアは、ECRC異常に対応した割込を受信したとき、Header Log Register11−4の内容を確認することで、ECRC異常が検出されたトランザクションレイヤーパケット3のHeader3−1を確認できる。しかし、ECRC異常とは、Header3−1およびData3−2にデータ化けが発生していることを示しているため、Header Log Register11−4に格納された内容の正当性は保証できない。そのため、Header3−1のAddress3−1−4からは、ECRC異常が検出されたデータ転送を行っているチャネルコマンドエントリ20−nを特定できない。
On the other hand, when the firmware operating on the
情報処理装置1000の正当性を保証するために周辺処理装置2000,3000からメインメモリ130にデータ転送する際にECRC異常を検出した場合、このような理由から、情報処理装置1000全体の障害として処理されてしまうという問題がある。
When an ECRC abnormality is detected when data is transferred from the
また、PCIeでは、エンド・ツー・エンドのデータ完全性を保証するため、一般にECRCが用いられる。特許文献1に記載された処理回路では、ECRCを用いずに信号の異常を検出しているが、ECRCはPCIeで一般的に用いられるコードであるため、このECRCを利用しつつ、データの完全性を保証できることが望ましい。
Also, in PCIe, ECRC is generally used to ensure end-to-end data integrity. In the processing circuit described in
そこで、本発明は、パケット転送時に終端間巡回冗長検査符号の異常(すなわち、ECRC異常)が検出された場合であっても、障害の影響を局所的な範囲に抑制できる入出力処理装置、アドレス正当性検証方法およびアドレス正当性検証用プログラムを提供することを目的とする。 Therefore, the present invention provides an input / output processing apparatus and address that can suppress the influence of a failure within a local range even when an abnormal end-to-end cyclic redundancy check code (that is, an ECRC abnormality) is detected during packet transfer. It is an object to provide a validity verification method and an address validity verification program.
本発明による入出力処理装置は、PCI Expressを利用した入出力処理装置であって、データ転送処理を実行する転送プログラムに対してそのデータ転送処理に使用する領域として割り当てられる転送領域を有する処理記憶手段と、転送領域を示すアドレスにそのアドレスの誤り訂正符号を付加したアドレス検証情報で特定されるアドレス空間である検証領域を有するアドレス記憶手段と、検証領域を示すアドレスを、終端間巡回冗長検査符号が付与された受信データの転送先アドレスに設定するアドレス設定手段と、受信データにより検証領域へアクセスがあったときに、その受信データに設定された検証領域を示すアドレスから誤り訂正符号を削除して転送領域を特定し、特定した転送領域が割り当てられた転送プログラムを使用して、受信データのデータ転送処理を実行するデータ転送制御手段と、受信データに付与された終端間巡回冗長検査符号の異常を検出する異常検出手段とを備え、データ転送制御手段が、受信データの終端間巡回冗長検査符号に異常が検出されたときに、その受信データに設定された検証領域を示すアドレスから特定されるアドレス検証情報から、転送領域のアドレスの正当性を検証することを特徴とする。 An input / output processing device according to the present invention is an input / output processing device using PCI Express, and a processing storage having a transfer area assigned as an area used for the data transfer process to a transfer program for executing the data transfer process Means, an address storage means having a verification area which is an address space specified by address verification information obtained by adding an error correction code of the address to an address indicating a transfer area, and an end-point cyclic redundancy check and address setting means for setting the transfer destination address of the received data parts have been given, when there is access to the verification region by the received data, address or et erroneous Ri correction code of a verification area set in the received data remove and identify the transfer area, use the transfer program is specified transfer area allocated To a data transfer control means for executing data transfer processing of the received data, and a failure detecting means for detecting an abnormality of the attached to the received data end-to-end cyclic redundancy check code, the data transfer control unit, the received data When an abnormality is detected in the end-to-end cyclic redundancy check code, the validity of the transfer area address is verified from the address verification information specified from the address indicating the verification area set in the received data. And
本発明によるアドレス正当性検証方法は、PCI Expressを利用したアドレス正当性検証方法であって、データ転送処理を実行する転送プログラムに対してそのデータ転送処理に使用する領域として割り当てられる転送領域を示す第1のアドレスに、その第1のアドレスの誤り訂正符号を付加して生成されるアドレス検証情報で特定されるアドレス空間である検証領域を示す第2のアドレスを、終端間巡回冗長検査符号が付与された受信データの転送先アドレスに設定し、受信データにより検証領域へアクセスがあったときに、その受信データに設定された第2のアドレスから誤り訂正符号を削除して転送領域を特定し、特定した転送領域が割り当てられた転送プログラムを使用して、受信データのデータ転送処理を実行し、受信データに付与された終端間巡回冗長検査符号の異常を検出し、受信データの終端間巡回冗長検査符号に異常が検出されたときに、その受信データに設定された第2のアドレスから特定されるアドレス検証情報から、第1のアドレスの正当性を検証することを特徴とする。 The address validity verification method according to the present invention is an address validity verification method using PCI Express, and indicates a transfer area allocated as an area used for the data transfer process for a transfer program that executes the data transfer process. A second address indicating a verification area which is an address space specified by address verification information generated by adding the error correction code of the first address to the first address is an end-to-end cyclic redundancy check code. set granted destination address of the received data, when there is access to the verification region by receiving data, the transfer area by deleting the second address or et erroneous Ri correction code that has been set in the received data identified, using the transfer program is specified transfer area allocated, performs a data transfer process of the received data, the receiving de Is detected from the second address set in the received data when an abnormality is detected in the end-to-end cyclic redundancy check code assigned to the received data. The validity of the first address is verified from the address verification information.
本発明によるアドレス正当性検証用プログラムは、PCI Expressを利用したコンピュータに適用されるアドレス正当性検証用プログラムであって、コンピュータに、データ転送処理を実行する転送プログラムに対してそのデータ転送処理に使用する領域として割り当てられる転送領域を示す第1のアドレスに、その第1のアドレスの誤り訂正符号を付加して生成されるアドレス検証情報で特定されるアドレス空間である検証領域を示す第2のアドレスを、終端間巡回冗長検査符号が付与された受信データの転送先アドレスに設定するアドレス設定処理、受信データにより検証領域へアクセスがあったときに、その受信データに設定された第2のアドレスから誤り訂正符号を削除して転送領域を特定し、特定した転送領域が割り当てられた転送プログラムを使用して、受信データのデータ転送処理を実行するデータ転送制御処理、および、受信データに付与された終端間巡回冗長検査符号の異常を検出する異常検出処理を実行させ、データ転送制御処理で、受信データの終端間巡回冗長検査符号に異常が検出されたときに、その受信データに設定された第2のアドレスから特定されるアドレス検証情報から、第1のアドレスの正当性を検証させることを特徴とする。 An address correctness verification program according to the present invention is an address correctness verification program applied to a computer using PCI Express, and the computer transfers the data transfer process to the transfer program for executing the data transfer process. The second address indicating the verification area which is the address space specified by the address verification information generated by adding the error correction code of the first address to the first address indicating the transfer area allocated as the area to be used Address setting processing for setting the address as the transfer destination address of the received data to which the end-to-end cyclic redundancy check code is assigned. When the verification area is accessed by the received data, the second address set in the received data remove the pressurized et erroneous Ri correction code identifies the transfer area, the specified transfer area is assigned The using transfer program, the data transfer control processing for executing data transfer processing of the received data, and, to execute the abnormality detection processing for detecting an abnormality of the attached to the received data end-to-end cyclic redundancy check code, data When an abnormality is detected in the end-to-end cyclic redundancy check code of the received data in the transfer control process, the validity of the first address is determined from the address verification information specified from the second address set in the received data. It is characterized by making it verify.
本発明によれば、パケット転送時にECRC異常が検出された場合であっても、障害の影響を局所的な範囲に抑制できる。 According to the present invention, even when an ECRC abnormality is detected during packet transfer, the influence of a failure can be suppressed to a local range.
まず、本発明による入出力処理装置の一実施形態を図14に例示する情報処理装置を参照して説明する。本実施形態の入出力処理装置200は、上述するように、PCIeカード280〜283と、PCIeスイッチ240と、IOコントローラ210と、プロセッサ220とを備え、チャネルプログラム方式で処理を実行する装置である。なお、図14を参照してすでに説明した部分については、適宜説明を省略する。
First, an embodiment of an input / output processing apparatus according to the present invention will be described with reference to an information processing apparatus illustrated in FIG. As described above, the input /
PCIeカード280〜283は、周辺処理装置2000,3000とデータ転送するためのインタフェースである。PCIeスイッチ240は、各PCIeカード280〜283を接続する。具体的には、PCIeスイッチ240が有するポート240−3〜6と、PCIeカード280〜283が有するポート280−1〜283−1が、バス260〜263を介して接続される。
The
IOコントローラ210は、PCIeカード280〜283を介して周辺処理装置2000,3000と中央処理装置100のメインメモリ130との間のデータ転送を制御する。プロセッサ220は、IOコントローラ210とPCIeカード280〜283を制御する。プロセッサ220は、例えば、ファームウェアに従って各処理を実行する。
The
IOコントローラ210は、周辺処理装置2000,3000からメインメモリ130にデータ転送する。IOコントローラ210は、データ転送の際に、PCIeカード280〜283からのMMIOアクセスを受け付けて、メインメモリ130へデータ転送を行うための固定長の複数の転送空間400(図14において図示せず)を内部に有する。以下、転送空間400に割り当てられるp個の空間を識別するため、割り当てられた各転送空間を転送空間400−pとりする。転送空間400は、例えば、各転送空間を記憶する領域を有するメモリ等により実現される。
The
また、IOコントローラ210は、転送空間400−p毎に入出力処理装置200とメインメモリ130の間のアドレス変換を行う変換機構(図14において図示せず)を有する。また、IOコントローラ210は、転送空間400−pのアドレスに8ビットのECCを付加したMMIO空間300(図14において図示せず)を有する。また、IOコントローラ210(より具体的には、変換機構)は、PCIeカード280〜283よりMMIO空間300にアクセスされたとき、そのアクセスを、付加されたECC(Error Correction Code )を削除して特定される転送空間400−pへのアクセスとして処理する機能を有する。
Further, the
入出力処理装置200は、周辺処理装置2000,3000からメインメモリ130へのデータ転送を行うチャネルプログラム20を実行するとき、複数の転送空間400のうち1つの転送空間400−pをそのチャネルプログラム20に割り当てる。
When the input /
入出力処理装置200は、データ転送を行うときに、転送空間400−pのアドレスに、そのアドレスに対するECCを付加してMMIO空間300のアドレスにする。入出力処理装置200は、転送先アドレスとしてMMIO空間300のアドレスをPCIeカード280〜283に設定してデータ転送を行う。
When performing the data transfer, the input /
これらの処理は、例えば、ファームウェアに記載され、プロセッサ220がそのファームウェアに従って動作する。また、MMIO空間300は、例えば、転送空間400−pのアドレスとECCとを付加した情報(以下、アドレス検証情報と記すこともある。)を記憶する領域を有するメモリ等により実現される。
These processes are described in, for example, firmware, and the
また、入出力処理装置200は、転送空間400−pを使用して、データ転送を行うチャネルプログラム20を特定する。
Further, the input /
IOコントローラ210は、周辺処理装置2000,3000からメインメモリ130へのデータ転送の際にECRC異常の有無を検出する。ECRC異常が検出されたとき、プロセッサ220は、IOコントローラ210のPCI Config空間のHeader Log Register11−4より転送先Address3−1−4を読み出す。Address3−1−4がMMIO空間300の範囲内ならば、プロセッサ220は、Address3−1−4よりECCを取り出してAddress3−1−4の正当性を検証する。正当性を検証できた場合、プロセッサ220は、Address3−1−4より転送空間400−pを求めて、転送空間400−pを使用しているチャネルプログラムを特定する。そして、プロセッサ220は、そのチャネルプログラムを再実行する。これらの処理は、例えば、ファームウェアに記載され、プロセッサ220がそのファームウェアに従って動作する。
The
以下、各構成の具体的な内容を説明する。図1は、転送空間400の例を示す説明図である。以下の説明では、本発明の入出力処理装置が図1に例示する転送空間を利用するものとする。
Hereinafter, specific contents of each component will be described. FIG. 1 is an explanatory diagram showing an example of the
図1に例示するように、IOコントローラ210がPCIeポート210−1のデータ転送で使用する転送空間400は、複数の固定長の転送空間400−pに分割される。図1に示す例では、転送空間400を64個に分割している。ファームウェアは、それぞれの転送空間400−pに対して1つのチャネルプログラム20を割り当てる制御を行う。なお、図1に示す例では、転送空間400−pのサイズは4MBである。
As illustrated in FIG. 1, the
図2は、転送空間400のアドレス形式の例を示す説明図である。転送空間400を複数の固定長の転送空間400−pに分割することにより、転送空間400のアドレス形式410は、図2に例示する形式で表わされる。Base Address410−1は、転送空間400のベースアドレスである。転送空間番号410−3は、転送空間400−pに対応する番号pを示す。Offset410−4は、転送空間400−p内のオフセットを示す。図1に示す例では、Base Address410−1を0x800000000000としている。
FIG. 2 is an explanatory diagram showing an example of the address format of the
図1に例示する転送空間400は、IOコントローラ210内部のアドレス空間である。図3は、MMIO空間の例を示す説明図である。また、図4は、MMIO空間のアドレス形式の例を示す説明図である。図3に示す例は、IOコントローラ210のPCIeポート210−1におけるMMIO空間300を示している。
A
MMIO空間のアドレス形式310は、転送空間のアドレス形式410にECC310−2を付加した形式になっている。ファームウェアは、転送空間のアドレス形式410で表わされたアドレスからECC310−2を計算し、MMIO空間のアドレス形式310になるよう、計算したECC310−2を転送空間のアドレス形式410の3バイト目に設定する。
The
ECC310−2の値は、元の転送空間アドレスに応じて変化するため、例えば、図1に例示する転送空間400に対して、MMIO空間300は、0x800000000000から0x80FFFFFFFFFFまでの範囲になる。
Since the value of the ECC 310-2 changes according to the original transfer space address, for example, the
図5は、本実施形態のIOコントローラ210の構成例を示す説明図である。IOコントローラ210は、周辺処理装置2000,3000からメインメモリ130へデータ転送を行う際、バス160とPCIe I/F252のアドレス空間、および、バスI/Fを変換する変換機構500を有する。
FIG. 5 is an explanatory diagram illustrating a configuration example of the
また、図6は、転送制御レジスタの例を示す説明図である。変換機構500は、図6に例示する転送制御レジスタ510を含む。転送制御レジスタ510には、複数の転送空間400−pに対応してデータ転送を行うために、転送空間400−pごとに対応した転送制御レジスタが設けられる。以下、各転送空間400−pに対応した転送制御レジスタを転送制御レジスタ510−pと記す。
FIG. 6 is an explanatory diagram showing an example of the transfer control register. The conversion mechanism 500 includes a transfer control register 510 illustrated in FIG. The
転送制御レジスタ510−pには、転送先のメインメモリ130上のベースアドレスを格納するAddress510−p−1と、転送するカウントを格納するCount510−p−2と、転送を制御するFlag510−p−3とが設けられる。図5では、0番目の転送制御レジスタ510−0の例を示している。
The transfer control register 510-p includes an address 510-p-1 for storing a base address on the
図5を参照して、周辺処理装置2000,3000からメインメモリ130にデータ転送するときの、IOコントローラ210のMMIO空間300,転送空間400,変換機構510および転送制御レジスタ510の関係を説明する。
The relationship among the
PCIe I/F252は、MMIO空間300のアドレス303に対してデータを転送する。IOコントローラ210は、MMIO空間300にアクセスされると、MMIO空間のアドレス形式310で表わされたアドレス303からECC310−2を取り除き、転送空間のアドレス形式410に変換したアドレス304を生成する。
The PCIe I /
そして、IOコントローラ210は、アドレス304から対応する転送空間400−pのアドレスを求める。変換機構500は、転送空間400−pに対応する転送制御レジスタ510−pの値を読み出す。変換機構500は、アドレス304のオフセット410−4とAddress510−p−1を加算した値をメインメモリ空間131のアドレスとする。そして、変換機構500は、このアドレスを使用して、メインメモリ130にアクセスする。
Then, the
図5に示す例において、アドレス303を0x80xx000zzzzzとすると、ECC310−2が取り除かれたアドレス304は、0x8000000zzzzzになり、転送空間番号は0になる。この場合、転送空間番号400−0が選択され、変換機構510は、転送制御レジスタ510−0を選択し、Address510−0−1とアドレス304のOffset410−4を加算したアドレス133をメインメモリ130へアクセスするアドレスとして使用する。
In the example shown in FIG. 5, if the
プロセッサ220上で動作するファームウェアは、チャネル番号毎にチャネルプログラム20の実行を管理するチャネルプログラム管理表をローカルメモリ230に有する。図7は、チャネルプログラム管理表の例を示す説明図である。ファームウェアは、例えば、図7に例示するチャネルプログラム管理表30を用いて、チャネルプログラム20の実行を管理する。
The firmware operating on the
図7に例示するチャネルプログラム管理表30には、チャネル番号mで実行しているチャネルプログラムヘッダのアドレス30−m−1と、現在実行しているチャネルコマンドエントリのアドレス30−m−2と、データ転送で使用している転送空間番号30−m−3と、チャネルプログラム20の実行状態を格納するFlag30−m−4が格納される。なお、図7に例示するチャネルプログラム管理表30は、64個のチャネルを想定している。
The channel program management table 30 illustrated in FIG. 7 includes an address 30-m-1 of the channel program header being executed with the channel number m, an address 30-m-2 of the channel command entry being currently executed, A transfer space number 30-m-3 used for data transfer and a Flag 30-m-4 for storing the execution state of the
また、ファームウェアは、チャネルプログラム20のチャネル番号mを管理する転送空間−チャネル番号対応表をローカルメモリ230に有する。図8は、転送空間−チャネル番号対応表の例を示す説明図である。図8に例示する転送空間−チャネル番号対応表40は、転送空間400−p毎に転送空間400−pを使用してデータ転送を行っているチャネルプログラム20のチャネル番号mを管理する。ファームウェアは、例えば、図8に例示する転送空間−チャネル番号対応表を用いて、チャネルプログラム20のチャネル番号mを管理する。
The firmware also has a transfer space-channel number correspondence table for managing the channel number m of the
図8に例示する転送空間−チャネル番号対応表40は、転送空間400−pの使用状態を格納するFlag40−p−1と、転送空間400−pを使用してデータ転送を行っているチャネルプログラム20に対応するチャネル番号mを格納するチャネル番号40−p−2を含む。なお、図8に例示する転送空間−チャネル番号対応表40も、64個のチャネルを想定している。 The transfer space-channel number correspondence table 40 illustrated in FIG. 8 includes a flag 40-p-1 for storing the use state of the transfer space 400-p and a channel program that performs data transfer using the transfer space 400-p. 20 includes a channel number 40-p-2 for storing a channel number m corresponding to 20. Note that the transfer space-channel number correspondence table 40 illustrated in FIG. 8 also assumes 64 channels.
図9及び図10は、チャネルプログラムを実行する処理の例を示すフローチャートである。ここでは、本発明における特徴の一部を説明することとし、詳細な説明は後述される。 9 and 10 are flowcharts showing an example of processing for executing a channel program. Here, some of the features of the present invention will be described, and a detailed description will be given later.
ファームウェア(プロセッサ220)は、演算処理装置110〜113の指示によりチャネルプログラム20を実行する。なお、以下の説明では、図9および図10に例示する処理をチャネルプログラム実行処理と記すこともある。
The firmware (processor 220) executes the
プロセッサ220は、チャネルコマンドエントリ20−nのAddress20−n−4とCount20−n−3を、転送空間400−pに対応する転送制御レジスタ510−pのAddress510−p−1とCount510−p−2に設定する。また、プロセッサ220は、Flag510−p−3を転送有効に設定する。この処理は、図9のステップS60−10に記されている。
The
また、プロセッサ220は、転送空間のアドレス形式410で表わされるアドレスを用いて転送空間400−pのアドレスaを求める。さらに、プロセッサ220は、求めたアドレスaに対してSECDED(single‐error‐correcting and double‐error‐detecting code )符号を用いてECCを求める。プロセッサ220は、アドレスaの3バイト目に求めたECCを付加し、MMIO空間のアドレス形式310であるアドレスcに変換する。この処理は、図9のステップS60−10に記されている。
Further, the
また、プロセッサ220は、チャネル番号20−0−1に対応するPCIeカード280〜283に、転送アドレスとしてアドレスcを設定し、データ転送を起動する。この処理は、図9のステップS60−11に記されている。
Further, the
また、チャネルプログラム実行処理では、プロセッサ220は、データ転送終了後に転送制御レジスタ510−pのFlag510−p−2と、転送空間−チャネル番号対応表40−pのFlag40−p−1を未使用に設定する。この処理は、図10のステップS60−13に記されている。
Further, in the channel program execution process, the
また、プロセッサ220は、チャネルプログラム管理表30−mのFlag30−m−4を読み出して障害が発生しているか確認する。障害が発生していた場合、プロセッサ220は、チャネルプログラムヘッダアドレス30−m−1に16を加算して最初のチャネルコマンドエントリ20−1のアドレスを求める。プロセッサ220は、そのアドレスを実行中チャネルコマンドエントリアドレス30−m−2に格納し、Flag30−m−4をリセットしてチャネルプログラムをリトライさせる。これらの処理は、図10のステップS60−14〜16に記されている。
Further, the
また、チャネルプログラム実行処理では、プロセッサ220は、チャネルコマンドエントリ20−nに従って、周辺処理装置2000,3000からメインメモリ130にデータ転送するときに、転送制御レジスタ510のFlag510−p−2を確認する。プロセッサ220は、未使用の転送空間pを求め、Flag510−p−2を使用中に設定する。この処理は、図9のステップS60−6に記されている。
In the channel program execution process, the
また、プロセッサ220は、転送空間に対応する転送空間−チャネル番号対応表40−pのチャネル番号40−p−2に、チャネルプログラム20のチャネル番号20−0−1を格納し、Flag40−p−1を使用中に設定する。この処理は、図9のステップ60−7に記されている。
Further, the
なお、ここでは、図9及び図10を参照して本発明の特徴の一部を説明した。なお、図9及び図10に例示する処理全体についての説明は、後述される。 Here, some of the features of the present invention have been described with reference to FIGS. 9 and 10. A description of the entire processing illustrated in FIGS. 9 and 10 will be described later.
また、図11及び図12は、割込み発生時の動作例を示すフローチャートである。以下の説明では、図11及び図12に例示する処理を割込処理と記すこともある。 11 and 12 are flowcharts showing an operation example when an interrupt occurs. In the following description, the process illustrated in FIGS. 11 and 12 may be referred to as an interrupt process.
割込処理70において、プロセッサ220は、IOコントローラ210からの割込がPCIeポート210−1のECRC異常検出か否かを判断する。ECRC異常検出であった場合、プロセッサ220は、Header Log Register11−4を読み出して、Format3−1−1とType3−1−2を確認して、ECRC異常になったリクエストがMemory Writeかどうか確認する。この処理は、図12のステップS70−8,9に記されている。
In the interrupt process 70, the
ECRC異常になったリクエストがMemory Writeだった場合、プロセッサ220は、Header Log Register11−4のAddress3−1−4がIOコントローラ210のMMIO空間300の範囲内かどうか確認する。この処理は、図12のステップS70−10,11に記されている。
If the ECRC error request is Memory Write, the
ここで、Address3−1−4がMMIO空間300の範囲内だった場合、プロセッサ220は、Address3−1−4がMMIO空間アドレス形式310のアドレスと判断して、ECC310−2と転送空間アドレス形式410のアドレスcに分離する。そして、プロセッサ220は、ECC310−2を用いてアドレスcに誤りが無いか確認する。この処理は、図12のステップS70−12,13に記されている。
When the address 3-1-4 is within the range of the
また、プロセッサ220は、アドレスcに誤りがなかった場合、アドレスcが転送空間のアドレス形式であると判断して、転送空間400−pを求め、転送空間400−pに対応する転送空間−チャネル番号対応表40−pよりチャネル番号40−p−2を読み出す。この処理は、図12のステップS70−14に記されている。
If there is no error in the address c, the
そして、プロセッサ220は、チャネル番号40−p−2に対応するチャネルプログラム管理表30−mのFlag30−m−4に、障害状態を設定する。この処理は、図12のステップS70−15に記されている。
Then, the
なお、ここでは、図11及び図12を参照して本発明の特徴の一部を説明した。なお、図11及び図12に例示する処理全体についての説明は、後述される。 Here, some of the features of the present invention have been described with reference to FIGS. 11 and 12. The description of the entire process illustrated in FIGS. 11 and 12 will be described later.
次に、本発明による入出力処理装置の動作例を、図9、図10、図11および図12を参照して説明する。まず、図9及び図10を参照して、周辺処理装置2000,3000からメインメモリ130へデータ転送をする指示を、演算処理装置110〜113が入出力処理装置200に行ったときの動作を説明する。
Next, an operation example of the input / output processing apparatus according to the present invention will be described with reference to FIGS. 9, 10, 11 and 12. FIG. First, with reference to FIG. 9 and FIG. 10, an operation when the
なお、図9に例示する処理の前に、演算処理装置110〜113は、周辺処理装置2000,3000からメインメモリ130にデータ転送するためのチャネルプログラム20を作成して、メインメモリ130に格納する。演算処理装置110〜113は、チャネルプログラム20を格納したアドレスを指定して入出力処理装置200にチャネルプログラム20の実行を指示する。
Prior to the processing illustrated in FIG. 9, the
そして、入出力処理装置200が演算処理装置110〜113よりチャネルプログラムの実行を指示されると、プロセッサ220上で動作するファームウェアが、図9及び図10に例示するチャネルプログラム実行処理を実行する。
When the input /
チャネルプログラム実行処理において、まず、プロセッサ220は、演算処理装置110〜113より通知されたアドレスよりチャネルプログラム20のチャネルプログラムヘッダ20−0を読み出す(ステップS60−1)。プロセッサ220は、チャネルプログラムヘッダ20−0からチャネル番号20−0−1を取り出し、対応するチャネルプログラム管理表30−mのチャネルプログラムヘッダアドレス30−m−1に演算処理装置110〜113から通知されたアドレスを格納する(ステップS60−2)。
In the channel program execution process, first, the
プロセッサ220は、チャネルプログラムヘッダアドレス30−m−1に16を加算してチャネルコマンドエントリ20−1のアドレスを求め、実行中チャネルコマンドエントリアドレス30−m−2に格納する(ステップS60−3)。
The
プロセッサ220は、実行中チャネルコマンドエントリ30−m−2の示すアドレスより、チャネルコマンドエントリ20−nを読み出し、Command20−n−1の内容を確認する(ステップS60−4)。
The
Command20−n−1の内容が周辺処理装置2000,3000からメインメモリ130へのデータ転送指示だった場合(ステップS60−5におけるYes)、プロセッサ220は、以下の処理を行う。プロセッサ220は、データ転送を行うためにIOコントローラ210の転送制御レジスタ510−pのFlag510−p−2を確認し、未使用の転送空間400−pを求める。プロセッサ220は、その転送空間400−pのFlag510−p−2を使用中に設定する(ステップS60−6)。
When the content of Command 20-n-1 is a data transfer instruction from the
プロセッサ220は、転送空間400−pに対応する転送空間−チャネル番号管理表40−pのチャネル番号40−p−2に、チャネル番号20−0−1を設定し、Flag40−p−1を使用中に設定する(ステップS60−7)。そして、プロセッサ220は、チャネルプログラム管理表30−mの転送空間番号30−m−2に、転送空間番号pを格納する(ステップS60−8)。
The
また、プロセッサ220は、メインメモリ130にデータ転送するために、チャネルコマンドエントリ20−nのAddress20−n−4とCount20−n−3を、それぞれ転送空間400−pに対応する転送制御レジスタ510−pのAddress510−p−1とCount510−p−2に格納する。そして、プロセッサ220は、Flag510−p−3を転送有効に設定して、データ転送できるようにする(ステップS60−9)。
Further, the
プロセッサ220は、転送空間のアドレス形式410で転送空間400−pの先頭アドレスaを求める。また、プロセッサ220は、アドレスaに対する8bit ECC bをSECDED符号で求める。プロセッサ220は、IOコントローラ210のMMIO空間アドレス形式310のアドレスになるよう、アドレスaにECC bを付加してアドレスcを求める(ステップS60−10)。
The
プロセッサ220は、チャネル番号20−m−1に対応するPCIeカード280〜283にデータ転送先アドレスとしてアドレスcを設定し、データ転送処理を起動する(ステップS60−11)。
The
以上の処理により、周辺処理装置2000、3000からメインメモリ130に対するデータ転送が、PCIeカード280〜283によって開始される。
With the above processing, data transfer from the
PCIeカード280〜283は、データ転送が終了すると、ファームウェアに従って実行するプロセッサ220に対し、データ転送が終了したことを割込通知する。チャネルプログラム実行処理では、プロセッサ220(ファームウェア)が、その割込を待ち合わせる。すなわち、プロセッサ220は、データ転送の終了を待ち合わせる(ステップS60−12)。
When the data transfer is completed, the
データ転送が終了すると、チャネルプログラム実行処理において、プロセッサ220は、IOコントローラ210の転送制御レジスタ510−pにおけるFlag510−p−2と、転送空間−チャネル番号管理表40−mにおけるFlag40−m−1を未使用状態に設定する(ステップS60−13)。
When the data transfer is completed, in the channel program execution process, the
プロセッサ220は、チャネルプログラム管理表30−mにおけるFlag30−m−4を読み出し、障害が発生しているか否かを確認する(ステップS60−14)。ここでは、障害が発生しておらず、Flag30−m−4には障害状態が設定されていないとする(ステップS60−15におけるNo)。この場合、プロセッサ220は、チャネルコマンドエントリ20−nのFlag20−n−2を確認して、チャネルプログラム20が終了したかどうかを確認する(ステップS60−18)。
The
チャネルプログラム20が終了していない場合(ステップS60−19におけるNo)、プロセッサ220は、チャネルプログラム管理表30−mの実行中チャネルコマンドエントリアドレス30−m−2に16を加算した値を格納する(ステップS60−20)。そして、プロセッサ220は、ステップS60−4の処理に戻り、チャネルコマンドエントリ20−nを処理する。
If the
一方、チャネルプログラム20が終了している場合(ステップS60−19におけるYes)、プロセッサ220は、演算処理装置110〜113にチャネルプログラム20の終了を報告する(ステップS60−21)。
On the other hand, when the
次に、図11及び図12を参照して、周辺処理装置2000,3000からメインメモリ130にデータ転送している時に、PCIeスイッチ240でデータ化けが発生し、IOコントローラ210のPCIeポート210−1でECRC異常を検出した場合の動作を説明する。
Next, referring to FIG. 11 and FIG. 12, when data is transferred from the
なお、図11に例示する処理の前に、IOコントローラ210のPCIeポート210−1でECRC異常を検出したとき、IOコントローラ210は、割込でそれをプロセッサ220(ファームウェア)に、ECRC異常を検出したことを通知する。割込が通知されると、プロセッサ220は、ファームウェアに従って、割込処理を実行する。
When the ECRC abnormality is detected at the PCIe port 210-1 of the
まず、プロセッサ220は、PCIeポート220−2のConfig空間より割込要因を読み出し、その割込要因がIOコントローラ210のPCIeポート210−1からの障害通知かどうか確認する(ステップS70−1)。これは、Root Error RegisterとError Source Identification Registerの値を確認することで判断できる。
First, the
割込要因がIOコントローラ210のPCIeポート210−1からの障害通知だった場合(ステップS70−2におけるYes)、プロセッサ220は、PCIeポート220−2の障害要因をクリアする(ステップS70−3)。プロセッサ220は、IOコントローラ210のPCIeポート210−1のConfig空間よりUncorrectable Error Status Register11−1の値を読み出し、障害要因bxがECRC異常かどうか確認する(ステップS70−4)。
When the interrupt factor is a failure notification from the PCIe port 210-1 of the IO controller 210 (Yes in step S70-2), the
障害要因bxがECRC異常だった場合(ステップS70−5におけるYes)、プロセッサ220は、IOコントローラ210のPCIeポート210−1のUncorrectable Error Status Register11−1のECRC異常要因をクリアする(ステップS70−6)。
If the failure factor bx is an ECRC abnormality (Yes in step S70-5), the
プロセッサ220は、Header Log Register11−4からFormat3−1−1とType3−1−2とAddress3−1−4を読み出し(ステップS70−7)、ECRC異常となったリクエストがMemory Writeかどうか確認する(ステップS70−8)。
The
ECRC異常となったリクエストがMemory Writeだった場合(ステップS70−9におけるYes)、プロセッサ220は、Address3−1−4がIOコントローラ210のMMIO空間300の範囲内か確認する(ステップS70−10)。
If the ECRC request is a Memory Write (Yes in step S70-9), the
Address3−1−4がMMIO空間300の範囲内だった場合(ステップS70−11におけるYes)、プロセッサ220は、IOコントローラ210のMMIO空間アドレス形式310にするため、Address3−1−4をECC310−2と転送空間アドレス形式410のアドレスcに分離する。そして、プロセッサ220は、ECC310−2をもとにアドレスcに誤りがないか確認する(ステップS70−12)。
When the address 3-1-4 is within the range of the MMIO space 300 (Yes in step S70-11), the
アドレスcに誤りがない場合(ステップS70−13におけるYes)、プロセッサ220は、アドレスcから転送空間400−pを求め、その転送空間に対応する転送空間−チャネル番号管理表40−pのチャネル番号40−p−2から、ECRC異常が検出されたチャネルプログラム20を実行しているチャネル番号mを読み出す(ステップS70−14)。
If there is no error in the address c (Yes in step S70-13), the
そして、プロセッサ220は、チャネル番号mに対応するチャネルプログラム管理表30−mのFlag30−m−4に、障害状態を設定する(ステップS70−15)。プロセッサ220は、ステップS70−4に戻る。ここで、障害要因bxがECRC異常でない場合(ステップS70−5におけるNo)、プロセッサ220は、他の障害要因bxを確認し、対応する処理を行う(ステップS70−17)。以後、障害要因が無い場合には、プロセッサ220は、割込処理を終了する。
Then, the
一方、ステップS70−2において、割込要因がIOコントローラ210のPCIeポート210−1からの障害通知でなかったとする。この場合(ステップS70−2におけるNo)、プロセッサ220は、割込要因axに従って、対応する処理を行う(ステップS70−16)。以後、障害要因が無い場合には、プロセッサ220は、割込処理を終了する。
On the other hand, assume that the interrupt factor is not a failure notification from the PCIe port 210-1 of the
また、ステップS70−5において、障害要因bxがECRC異常でなかった場合(ステップS70−5におけるNo)、上述するように、プロセッサ220は、障害要因bxに従って対応する処理を行う(ステップS70−17)。以後、障害要因が無い場合には、プロセッサ220は、割込処理を終了する。
In step S70-5, if the failure factor bx is not an ECRC abnormality (No in step S70-5), as described above, the
また、ステップS70−9において、ECRC異常となったリクエストがMemory Writeでなく(ステップS70−9におけるNo)、または、ステップS70−11において、Address3−1−4がMMIO空間300の範囲内でなく(ステップS70−11におけるNo)、または、ステップS17−13においてアドレスcに誤りがあった(ステップS70−13におけるNo)とする。この場合、プロセッサ220は、いずれも、入出力処理装置200の障害として処理する(ステップS70−18,70−19,70−20)。
In step S70-9, the request in which the ECRC is abnormal is not Memory Write (No in step S70-9), or in step S70-11, Address 3-1-4 is not within the range of the
チャネルプログラム実行処理において、PCIeカード280〜283によるデータ転送の完了後、プロセッサ220が、チャネルプログラム管理表30−mのFlag30−m−4を確認して、障害が発生したかどうか確認する処理が行われる(ステップS60−14参照)。
In the channel program execution processing, after completion of data transfer by the
障害が発生した場合、割込処理によって、ECRC異常となったトランザクションレイヤーパケット3に対応するチャネルプログラム20の実行を管理するチャネルプログラム管理表30−mのFlag30−m−4に障害状態が設定されている。そのため、プロセッサ220は、障害発生を認識できる(ステップS60−15参照)。
When a failure occurs, a failure state is set in Flag 30-m-4 of the channel program management table 30-m that manages the execution of the
プロセッサ220は、チャネルプログラム管理表30−mのチャネルプログラムヘッダアドレス30−m−1に16を加算したアドレスを実行中チャネルコマンドエントリアドレス30−m−2に格納してFlag30−m−4をクリアする。その後、ステップ60−4に戻って、プロセッサ220が、チャネルプログラム20を再実行することで、パケット転送時にECRC異常が検出された場合であっても、障害の影響を局所的な範囲に抑制できる。
The
以上のように、本実施形態によれば、入出力処理装置は、転送空間400−pと、MMIO空間300とを備える。転送空間400−pは、データ転送処理を実行するチャネルプログラムが割り当てられる領域を有する。また、MMIO空間300は、転送空間400−pのアドレスにECCを付加した情報(アドレス検証情報)を記憶する領域を有する。
As described above, according to the present embodiment, the input / output processing device includes the transfer space 400-p and the
そして、プロセッサ220は、PCIeカード280〜283に対し、MMIO空間300のアドレスを、ECRCが付与された受信データのトランザクションレイヤーパケット3におけるAddress3−1−4に設定させる。具体的には、プロセッサ220は、転送空間400−pのアドレスに、そのアドレスに対するECCを付加してMMIO空間300のアドレスにする。このアドレスをPCIeカード280〜283に設定してデータ転送を行うことになる。
Then, the
プロセッサ220は、受信データに設定されたMMIO空間300のアドレスからアドレス検証情報(すなわち、転送空間400−pのアドレスとECC)を特定する。プロセッサは、そのアドレス検証情報からECCを削除して、転送空間400−pのプログラムを特定することにより、受信データのデータ転送処理を実行する。
The
ここで、プロセッサ220(具体的には、IOコントローラ210)が、受信データのECRC異常を検出したとき、その受信データに設定されたMMIO空間300のアドレスから特定されるアドレス検証情報から、転送空間400−pのアドレスの正当性を検証する。
Here, when the processor 220 (specifically, the IO controller 210) detects an ECRC abnormality of the received data, the transfer space is determined from the address verification information specified from the address of the
以上のような構成により、パケット転送時にECRC異常が検出された場合であっても、障害の影響を局所的な範囲に抑制できる。 With the above configuration, even when an ECRC abnormality is detected during packet transfer, the influence of the failure can be suppressed to a local range.
すなわち、本実施形態では、周辺処理装置2000,3000からメインメモリ130へデータ転送する際、プロセッサ220が、PCIeカード280〜283で設定する転送アドレスにECCを付加する。そのため、IOコントローラ210のPCIeポート210−1でECRC異常となったとしても、Header Log Register11−4に格納されたAddress3−1−4のECCを確認することでAddress3−1−4の正当性を検証できる。
That is, in this embodiment, when data is transferred from the
また、例えば、一般的な方法を用いた場合、仮にAddress3−1−4が正常であったとしても、複数のチャネルプログラム20がメインメモリ130の同一アドレスにデータ転送を行っていた場合、Address3−1−4に対応したチャネルプログラム20を特定できない。そのため、プログラムのリトライ処理で救済することもできない。
Further, for example, when a general method is used, even if Address 3-1-4 is normal, if a plurality of
しかし、本実施形態では、IOコントローラ210の転送空間400を複数の転送空間410−pに分割し、チャネルプログラムごとに転送空間410−pを割り当てる。そのため、正常なAddress3−1−4をもとにECRC異常となったチャネルプログラム20を特定できるようになる。よって、ECRC異常が検知されても、チャネルプログラム20を再実行できるため、情報処理装置1000全体の障害とせずにデータ転送処理を救済できる。
However, in this embodiment, the
次に、本発明の概要を説明する。図13は、本発明による入出力処理装置の概要を示すブロック図である。本発明による入出力処理装置は、データ転送処理を実行するプログラム(例えば、チャネルプログラム20)が割り当てられる転送領域を有する処理記憶手段81(例えば、転送空間400)と、転送領域を示すアドレス(例えば、アドレス形式410)にそのアドレスの誤り訂正符号(例えば、ECC310−2)を付加したアドレス検証情報を記憶する検証領域を有するアドレス記憶手段82(例えば、MIMO空間300)と、検証領域を示すアドレスを、終端間巡回冗長検査符号(ECRC)が付与された受信データの転送先アドレス(例えば、Address3−1−4)に設定するアドレス設定手段83(例えば、プロセッサ220,PCIeカード280〜283)と、受信データに設定された検証領域を示すアドレスからアドレス検証情報を特定し、そのアドレス検証情報から誤り訂正符号を削除して転送領域のプログラムを特定することにより、受信データのデータ転送処理を実行するデータ転送制御手段84(例えば、プロセッサ220)と、受信データに付与された終端間巡回冗長検査符号(ECRC)の異常を検出する異常検出手段85(例えば、IOコントローラ210)とを備えている。
Next, the outline of the present invention will be described. FIG. 13 is a block diagram showing an outline of the input / output processing apparatus according to the present invention. The input / output processing device according to the present invention has a processing storage means 81 (for example, transfer space 400) having a transfer area to which a program for executing data transfer processing (for example, channel program 20) is assigned, and an address (for example, transfer area) Address storage means 82 (for example, MIMO space 300) having a verification area for storing address verification information obtained by adding an error correction code (for example, ECC 310-2) of the address to address format 410), and an address indicating the verification area And address setting means 83 (for example,
データ転送制御手段84は、受信データの終端間巡回冗長検査符号に異常が検出されたときに、その受信データに設定された検証領域を示すアドレスから特定されるアドレス検証情報から、転送領域のアドレスの正当性を検証する。 When an abnormality is detected in the end-to-end cyclic redundancy check code of the received data, the data transfer control means 84 determines the address of the transfer area from the address verification information specified from the address indicating the verification area set in the received data. Verify the validity of.
そのような構成により、パケット転送時にECRC異常が検出された場合であっても、障害の影響を局所的な範囲に抑制できる。 With such a configuration, even if an ECRC abnormality is detected during packet transfer, the influence of the failure can be suppressed to a local range.
具体的には、データ転送制御手段84は、受信データの終端間巡回冗長検査符号に異常が検出されたときに、その受信データに設定された検証領域を示すアドレスが検証領域を示す所定の範囲内であった場合に、その検証領域を示すアドレスからアドレス検証情報を特定してもよい。 Specifically, the data transfer control means 84, when an abnormality is detected in the end-to-end cyclic redundancy check code of the received data, the address indicating the verification area set in the received data is a predetermined range indicating the verification area. The address verification information may be specified from the address indicating the verification area.
そして、データ転送制御手段84は、特定したアドレス検証情報に含まれる誤り訂正符号を用いて転送領域のアドレスの正当性を検証してもよい。
The data
また、処理記憶手段81は、転送プログラムごとに割り当てられた転送領域を有していてもよい。そして、データ転送制御手段84は、正当性が検証された転送領域のアドレスから特定される転送プログラムに従って、受信データのデータ転送処理を再実行してもよい。
Further, the
このような構成によれば、正常と判断された転送領域のアドレスをもとにECRC異常となった転送プログラム(チャネルプログラム)を特定できる。そして、ECRC異常が検知されても転送プログラム(チャネルプログラム)を再実行できるため、情報処理装置全体の障害とせずにデータ転送処理を救済できる。 According to such a configuration, it is possible to identify a transfer program (channel program) in which an ECRC abnormality occurred based on the address of the transfer area determined to be normal. Since the transfer program (channel program) can be re-executed even when an ECRC abnormality is detected, the data transfer process can be remedied without causing a failure of the entire information processing apparatus.
また、入出力処理装置は、受信データに終端間巡回冗長検査符号を付与する符号付与手段(例えば、PCIeカード280〜283)を備えていてもよい。
Further, the input / output processing device may include code adding means (for example,
100 中央処理装置
110〜113 演算処理装置
120 メモリコントローラ
130 メインメモリ
200 入出力処理装置
210 IOコントローラ
220 プロセッサ
230 ローカルメモリ
240 PCIeスイッチ
280〜283 PCIeカード
300 MMIO空間
400 転送空間
1000 情報処理装置
2000,3000 周辺処理装置
DESCRIPTION OF
Claims (9)
データ転送処理を実行する転送プログラムに対して当該データ転送処理に使用する領域として割り当てられる転送領域を有する処理記憶手段と、
前記転送領域を示すアドレスに当該アドレスの誤り訂正符号を付加したアドレス検証情報で特定されるアドレス空間である検証領域を有するアドレス記憶手段と、
前記検証領域を示すアドレスを、終端間巡回冗長検査符号が付与された受信データの転送先アドレスに設定するアドレス設定手段と、
前記受信データにより前記検証領域へアクセスがあったときに、当該受信データに設定された検証領域を示すアドレスから前記誤り訂正符号を削除して前記転送領域を特定し、特定した転送領域が割り当てられた前記転送プログラムを使用して、受信データのデータ転送処理を実行するデータ転送制御手段と、
前記受信データに付与された終端間巡回冗長検査符号の異常を検出する異常検出手段とを備え、
前記データ転送制御手段は、前記受信データの終端間巡回冗長検査符号に異常が検出されたときに、当該受信データに設定された前記検証領域を示すアドレスから特定されるアドレス検証情報から、前記転送領域のアドレスの正当性を検証する
ことを特徴とする入出力処理装置。 An input / output processing device using PCI Express,
A process storage means having a transfer area assigned as an area to be used for the data transfer process for the transfer program for executing the data transfer process ;
Address storage means having a verification area which is an address space specified by address verification information obtained by adding an error correction code of the address to an address indicating the transfer area;
An address setting means for setting an address indicating the verification area as a transfer destination address of received data to which an end-to-end cyclic redundancy check code is assigned;
When there is access to the verification region by said received data, address of a verification area set in the received data or et previous SL to remove the error correction code to identify the transfer region, the identified transfer region Data transfer control means for executing data transfer processing of received data using the assigned transfer program ;
An abnormality detecting means for detecting an abnormality of the end-to-end cyclic redundancy check code given to the received data;
The data transfer control means, when an abnormality is detected in the end-to-end cyclic redundancy check code of the received data, from the address verification information specified from the address indicating the verification area set in the received data, the transfer An input / output processing device characterized by verifying the validity of an area address.
請求項1記載の入出力処理装置。 The data transfer control means, when an abnormality is detected in the end-to-end cyclic redundancy check code of the received data, when the address indicating the verification area set in the received data is within a predetermined range indicating the verification area The input / output processing device according to claim 1, wherein address verification information is specified from an address indicating the verification area.
請求項2記載の入出力処理装置。 The input / output processing apparatus according to claim 2, wherein the data transfer control means verifies the validity of the address in the transfer area using an error correction code included in the specified address verification information.
データ転送制御手段は、正当性が検証された転送領域のアドレスから特定される転送プログラムに従って、受信データのデータ転送処理を再実行する
請求項1から請求項3のうちのいずれか1項に記載の入出力処理装置。 The processing storage means has a transfer area allocated for each transfer program,
The data transfer control means re-executes the data transfer processing of the received data according to a transfer program specified from the address of the transfer area whose validity is verified. I / O processing unit.
請求項1から請求項4のうちのいずれか1項に記載の入出力処理装置。 The input / output processing device according to any one of claims 1 to 4, further comprising: a code adding unit that adds an end-to-end cyclic redundancy check code to the received data.
データ転送処理を実行する転送プログラムに対して当該データ転送処理に使用する領域として割り当てられる転送領域を示す第1のアドレスに、当該第1のアドレスの誤り訂正符号を付加して生成されるアドレス検証情報で特定されるアドレス空間である検証領域を示す第2のアドレスを、終端間巡回冗長検査符号が付与された受信データの転送先アドレスに設定し、
前記受信データにより前記検証領域へアクセスがあったときに、当該受信データに設定された前記第2のアドレスから前記誤り訂正符号を削除して前記転送領域を特定し、特定した転送領域が割り当てられた前記転送プログラムを使用して、受信データのデータ転送処理を実行し、
前記受信データに付与された終端間巡回冗長検査符号の異常を検出し、
前記受信データの終端間巡回冗長検査符号に異常が検出されたときに、当該受信データに設定された前記第2のアドレスから特定されるアドレス検証情報から、前記第1のアドレスの正当性を検証する
ことを特徴とするアドレス正当性検証方法。 An address validity verification method using PCI Express,
Address verification generated by adding an error correction code of the first address to a first address indicating a transfer area allocated as an area used for the data transfer process for a transfer program that executes the data transfer process A second address indicating a verification area which is an address space specified by the information is set as a transfer destination address of the received data to which the end-to-end cyclic redundancy check code is assigned;
When there is access to the verification region by said received data, said set in the received data a second address or found before Symbol remove the error correction code to identify the transfer region, the identified transfer region Using the assigned transfer program , execute the data transfer process of the received data,
Detecting an abnormality of the end-to-end cyclic redundancy check code attached to the received data;
When an abnormality is detected in the end-to-end cyclic redundancy check code of the received data, the validity of the first address is verified from the address verification information specified from the second address set in the received data An address validity verification method characterized by:
請求項6記載のアドレス正当性検証方法。 When an error is detected in the end-to-end cyclic redundancy check code of received data, the verification area is indicated when the address indicating the verification area set in the received data is within a predetermined range indicating the verification area The address validity verification method according to claim 6, wherein address verification information is specified from an address.
前記コンピュータに、
データ転送処理を実行する転送プログラムに対して当該データ転送処理に使用する領域として割り当てられる転送領域を示す第1のアドレスに、当該第1のアドレスの誤り訂正符号を付加して生成されるアドレス検証情報で特定されるアドレス空間である検証領域を示す第2のアドレスを、終端間巡回冗長検査符号が付与された受信データの転送先アドレスに設定するアドレス設定処理、
前記受信データにより前記検証領域へアクセスがあったときに、当該受信データに設定された前記第2のアドレスから前記誤り訂正符号を削除して前記転送領域を特定し、特定した転送領域が割り当てられた前記転送プログラムを使用して、受信データのデータ転送処理を実行するデータ転送制御処理、および、
前記受信データに付与された終端間巡回冗長検査符号の異常を検出する異常検出処理を実行させ、
前記データ転送制御処理で、前記受信データの終端間巡回冗長検査符号に異常が検出されたときに、当該受信データに設定された前記第2のアドレスから特定されるアドレス検証情報から、前記第1のアドレスの正当性を検証させる
ためのアドレス正当性検証用プログラム。 An address validity verification program applied to a computer using PCI Express,
In the computer,
Address verification generated by adding an error correction code of the first address to a first address indicating a transfer area allocated as an area used for the data transfer process for a transfer program that executes the data transfer process An address setting process for setting a second address indicating a verification area, which is an address space specified by information , to a transfer destination address of received data to which an end-to-end cyclic redundancy check code is assigned;
When there is access to the verification region by said received data, said set in the received data a second address or found before Symbol remove the error correction code to identify the transfer region, the identified transfer region A data transfer control process for executing a data transfer process of received data using the assigned transfer program ; and
An abnormality detection process for detecting an abnormality of the end-to-end cyclic redundancy check code attached to the received data is performed,
When an abnormality is detected in the end-to-end cyclic redundancy check code of the received data in the data transfer control process, from the address verification information specified from the second address set in the received data, the first Address validity verification program to verify the validity of the address.
データ転送制御処理で、受信データの終端間巡回冗長検査符号に異常が検出されたときに、当該受信データに設定された検証領域を示すアドレスが検証領域を示す所定の範囲内であった場合に、当該検証領域を示すアドレスからアドレス検証情報を特定させる
請求項8記載のアドレス正当性検証用プログラム。 On the computer,
When an error is detected in the end-to-end cyclic redundancy check code of the received data in the data transfer control process, and the address indicating the verification area set in the received data is within a predetermined range indicating the verification area The address validity verification program according to claim 8, wherein address verification information is specified from an address indicating the verification area.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013057551A JP5907099B2 (en) | 2013-03-21 | 2013-03-21 | I / O processing device, address validity verification method, and address validity verification program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013057551A JP5907099B2 (en) | 2013-03-21 | 2013-03-21 | I / O processing device, address validity verification method, and address validity verification program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2014182675A JP2014182675A (en) | 2014-09-29 |
JP5907099B2 true JP5907099B2 (en) | 2016-04-20 |
Family
ID=51701305
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013057551A Expired - Fee Related JP5907099B2 (en) | 2013-03-21 | 2013-03-21 | I / O processing device, address validity verification method, and address validity verification program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5907099B2 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114584411B (en) * | 2022-02-25 | 2024-04-02 | 山东云海国创云计算装备产业创新中心有限公司 | PCIe multicast verification method and device, electronic equipment and storage medium |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11282751A (en) * | 1998-03-27 | 1999-10-15 | Nec Eng Ltd | System and method for data processing |
JP2000066962A (en) * | 1998-08-25 | 2000-03-03 | Hitachi Ltd | Storage device |
US6381713B1 (en) * | 1999-05-11 | 2002-04-30 | Ericsson Inc. | Method for responding to transmission errors in a digital communication system according to characteristics of flawed information fields |
JP3584789B2 (en) * | 1999-07-15 | 2004-11-04 | セイコーエプソン株式会社 | Data transfer control device and electronic equipment |
US20070271495A1 (en) * | 2006-05-18 | 2007-11-22 | Ian Shaeffer | System to detect and identify errors in control information, read data and/or write data |
JP5142819B2 (en) * | 2008-05-21 | 2013-02-13 | 株式会社日立製作所 | Virtual computer system |
-
2013
- 2013-03-21 JP JP2013057551A patent/JP5907099B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2014182675A (en) | 2014-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8656228B2 (en) | Memory error isolation and recovery in a multiprocessor computer system | |
US8918573B2 (en) | Input/output (I/O) expansion response processing in a peripheral component interconnect express (PCIe) environment | |
EP2585933B1 (en) | Routing i/o expansion requests and responses in a pcie architecture | |
US9244829B2 (en) | Method and system for efficient memory region deallocation | |
US8645767B2 (en) | Scalable I/O adapter function level error detection, isolation, and reporting | |
JP5107880B2 (en) | Data transfer processing apparatus and method | |
US9665456B2 (en) | Apparatus and method for identifying a cause of an error occurring in a network connecting devices within an information processing apparatus | |
EP2380085B1 (en) | Detecting lost and out of order posted write packets in a peripheral component interconnect (pci) express network | |
TW201633121A (en) | Header parity error handling | |
JP6340962B2 (en) | Bus control device, data transfer system, and bus control method | |
US9473273B2 (en) | Memory system capable of increasing data transfer efficiency | |
US7143206B2 (en) | Method for controlling data transfer unit having channel control unit, storage device control unit, and DMA processor | |
JP5907099B2 (en) | I / O processing device, address validity verification method, and address validity verification program | |
JP2020021313A (en) | Data processing device and diagnostic method | |
US20180060273A1 (en) | Disk access operation recovery techniques | |
JP4218538B2 (en) | Computer system, bus controller, and bus fault processing method used therefor | |
JP6537510B2 (en) | Method and controller for implementation of hardware automatic device operation initiator | |
JP5440673B1 (en) | Programmable logic device, information processing apparatus, suspected part indication method and program | |
JP5145860B2 (en) | Redundant memory system and information processing apparatus | |
JP3141948B2 (en) | Computer system | |
JP2012128520A (en) | Data processing device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20140707 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20150427 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20150602 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20150728 |
|
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: 20160223 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160307 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5907099 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |