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 PDF

Info

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
Application number
JP2013057551A
Other languages
Japanese (ja)
Other versions
JP2014182675A (en
Inventor
妙嶋 慎二郎
慎二郎 妙嶋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2013057551A priority Critical patent/JP5907099B2/en
Publication of JP2014182675A publication Critical patent/JP2014182675A/en
Application granted granted Critical
Publication of JP5907099B2 publication Critical patent/JP5907099B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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と記すこともある。   Patent Document 1 describes a PCI (Peripheral Component Interconnect) Express TLP (Transaction Layer Packet) processing circuit that detects an error in data transmitted from a relay device. PCI Express is a registered trademark. In the following description, PCI Express may be referred to as PCIe.

特許文献1に記載された処理回路は、トランザクションレイヤーパケット(以下、TLPと記すこともある。)を受信すると、デバイスの中継回路で生じるエラーを検出するための検出コードを生成し、TLPに付加するとともに、バッファに記憶する。そして、特許文献1に記載された処理回路は、パケットの送信時に再度TLPの検出コードと、バッファに記憶させた検出コードとを比較して、送信される信号が正常か否かを判断する。また、特許文献1に記載された処理回路は、信号を異常と判断した場合、NAK DLLP(Not Acknowledge Data Link Layer Packet)信号を送信側装置に返信する。   When the processing circuit described in Patent Document 1 receives a transaction layer packet (hereinafter also referred to as TLP), it generates a detection code for detecting an error occurring in the relay circuit of the device and adds it to the TLP. And store it in the buffer. Then, the processing circuit described in Patent Document 1 compares the TLP detection code again with the detection code stored in the buffer at the time of packet transmission to determine whether or not the transmitted signal is normal. When the processing circuit described in Patent Document 1 determines that the signal is abnormal, the processing circuit returns a NAK DLLLP (Not Acknowledge Data Link Layer Packet) signal to the transmission side device.

特開2010−250665号公報JP 2010-250665 A

まず、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 information processing apparatus 1000 illustrated in FIG. 14 is a computer system called a server or a mainframe. The information processing apparatus 1000 includes a central processing unit 100, an input / output processing unit 200, and peripheral processing units 2000 and 3000.

中央処理装置100は、メインメモリ(MM)130と、演算処理装置(EPU:Energy Processing Unit)110〜113と、メモリコントローラ(MC)120とを含む。メインメモリ130は、ソフトウェアの命令やソフトウェアが処理するデータを格納する。演算処理装置110〜113は、メインメモリ130よりソフトウェアの命令やデータを読み出して各処理を実行する。メモリコントローラ120は、演算処理装置110〜113と、メインメモリ130と、後述する入出力処理装置200のIOコントローラ210とを接続し、相互のアクセスを制御する。   The central processing unit 100 includes a main memory (MM) 130, arithmetic processing units (EPU) 110 to 113, and a memory controller (MC) 120. The main memory 130 stores software instructions and data processed by the software. The arithmetic processing devices 110 to 113 read software instructions and data from the main memory 130 and execute each processing. The memory controller 120 connects the arithmetic processing devices 110 to 113, the main memory 130, and an IO controller 210 of the input / output processing device 200 described later, and controls mutual access.

演算処理装置110〜113とメモリコントローラ120は、バス140で接続され、メインメモリ130とメモリコントローラ120は、バス150で接続され、IOコントローラ210とメモリコントローラ120は、バス160で接続される。   The arithmetic processing units 110 to 113 and the memory controller 120 are connected via a bus 140, the main memory 130 and the memory controller 120 are connected via a bus 150, and the IO controller 210 and the memory controller 120 are connected via a bus 160.

入出力処理装置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 / output processing device 200 is a device that transfers data between the main memory 130 and the peripheral processing devices 2000 and 3000 in accordance with instructions from the arithmetic processing devices 110 to 113. The input / output processing device 200 includes PCIe cards 280 to 283 for connecting to the peripheral processing devices 2000 and 3000, and a PCIe switch 240 for connecting the PCIe cards 280 to 283. The PCIe switch 240 and the PCIe cards 280 to 283 are connected by PCIe interfaces (I / F) 260 to 263, respectively.

また、入出力処理装置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 / output processing device 200 includes an IO controller (IOC) 210 that controls data transfer between the peripheral processing devices 2000 and 3000 and the main memory 130 via the PCIe cards 280 to 283. The IO controller 210 and the memory controller 120 are connected by a bus 160. The IO controller 210 and the PCIe switch 240 are connected by a PCIe I / F 252 via ports 210-1 and 240-1.

さらに、入出力処理装置200は、プロセッサ(PROC)220と、ローカルメモリ(LM)230を含む。プロセッサ220は、演算処理装置110〜113からメインメモリ130と周辺処理装置2000,3000の間のデータ転送指示を受け取り、IOコントローラ210とPCIeカード280〜283を制御してデータ転送を行う。   Further, the input / output processing device 200 includes a processor (PROC) 220 and a local memory (LM) 230. The processor 220 receives a data transfer instruction between the main memory 130 and the peripheral processing devices 2000 and 3000 from the arithmetic processing devices 110 to 113, and controls the IO controller 210 and the PCIe cards 280 to 283 to perform data transfer.

プロセッサ220は、例えば、ファームウェアに従って動作する。以下、ファームウェアに従ってプロセッサ220が動作することを、ファームウェアが各種処理を行うと記すこともある。ローカルメモリ230は、ファームウェアやファームウェアが使用するデータを格納する。   The processor 220 operates according to firmware, for example. Hereinafter, the operation of the processor 220 according to the firmware may be described as the firmware performing various processes. The local memory 230 stores firmware and data used by the firmware.

プロセッサ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 processor 220 and the local memory 230 are connected by a bus 270. The processor 220 and the IO controller 210 are connected by a PCIe I / F 250 via ports 220-1 and 210-2. The processor 220 and the PCIe switch 240 are connected by a PCIe I / F 251 via ports 220-2 and 240-2. It is assumed that the PCIe port 220-1 and the PCIe port 220-2 of the processor 220 are respectively root complexes.

周辺処理装置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 peripheral processing devices 2000 and 3000 are magnetic disk devices or the like, and are connected to the PCIe cards 280 to 283 by various I / Fs such as fiber channels. Data transfer is performed between the main memory 130 and the peripheral processing devices 2000 and 3000 through the following route. First, data is transmitted from the main memory 130 of the central processing unit 100 to the input / output processing device 200 via the bus 150, the memory controller 120, and the bus 160. Further, the data passes through the IO controller 210, PCIe I / F 252, PCIe switch 240, PCIe I / F 260-263, PCIe card 280-283, peripheral I / F 2001, 2002, 3001, 3002 of the input / output processing device 200. And transmitted to the peripheral processing devices 2000 and 3000. The same applies to the reverse direction.

入出力処理装置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 / output processing device 200, the processor 220, the IO controller 210, the PCIe switch 240, and the PCIe cards 280 to 283 are all connected by a PCIe I / F. Since the PCIe port 220-1 and the PCIe port 220-2 of the processor 220 are each a root complex, they can be accessed as the same memory space including the local memory 230 from the processor 220 and the PCIe cards 280 to 283.

IOコントローラ210とメモリコントローラ120は、バス160によって接続されている。ただし、通常は、バスの種類およびメモリ空間が異なっているため、PCIeカード280〜283からメインメモリ130へアクセスする際、IOコントローラ210の変換機構211(図14において図示せず)によってアドレス変換とI/F変換が行われる。   The IO controller 210 and the memory controller 120 are connected by a bus 160. However, since the bus type and the memory space are usually different, when the main memory 130 is accessed from the PCIe card 280-283, the address conversion is performed by the conversion mechanism 211 (not shown in FIG. 14) of the IO controller 210. I / F conversion is performed.

図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 address space 131 of the main memory 130 is set in an MMIO (Memory Mapped Input / Output) space 301 of the PCIe port 210-1 of the IO controller 210. . In this situation, when the MMIO space 301 is accessed, the IO controller 210 masks the input address with the value of the address translation mask register 213 by the translation mechanism 211. The IO controller 210 converts the address 302 at the time of input into the address 132 in the address space of the main memory 131 by adding the value of the address conversion base register 212 to the masked result.

例えば、図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 address space 131 of the main memory 130 is set to 0x0 to 0xFFFFFFFFFF, and the MMIO space 301 of 0x800000000 to 0x80FFFFFFFFFF is allocated to the PCIe port 210-1 of the IO controller 210 as a copy. Further, 0x0 is set in the address translation base register 212, and 0x00FFFFFFFFFF is set in the address translation mask register 213.

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 PCIe cards 280 to 283 write data to the address 0x8000FF00 of the main memory 130, the PCIe cards 280 to 283 access the address 0x8008000FF00 of the MMIO space 301. When the IOC 210 receives an access to the MMIO space 301, the conversion mechanism 211 calculates the calculated address 0x80000000FF00 by taking the logical product of the requested address 0x8008000FF00 and the value of the address conversion mask register 213. Further, the conversion mechanism 211 adds the value of the address conversion base register 212 to the calculated value to obtain 0x00008000FF00. The IO controller 210 accesses the address space 131 of the main memory 130 using the obtained address.

情報処理装置1000において、周辺処理装置2000,3000からメインメモリ130にデータ転送するとき、演算処理装置110〜113は、周辺処理装置2000,3000からメインメモリ130にデータ転送するためのチャネルプログラムを作成する。演算処理装置110〜113は、作成したチャネルプログラムをメインメモリ130に格納し、入出力処理装置200にチャネルプログラムの格納アドレスを指定してチャネルプログラムの実行を指示する。そして、演算処理装置110〜113は、入出力処理装置200からのチャネルプログラムの終了通知を待ち合わせる。演算処理装置110〜113が終了通知を受信することでデータ転送が完了する。   In the information processing apparatus 1000, when data is transferred from the peripheral processing devices 2000 and 3000 to the main memory 130, the arithmetic processing devices 110 to 113 create a channel program for transferring data from the peripheral processing devices 2000 and 3000 to the main memory 130. To do. The arithmetic processing units 110 to 113 store the created channel program in the main memory 130, and specify the channel program storage address to the input / output processing unit 200 to instruct the execution of the channel program. Then, the arithmetic processing devices 110 to 113 wait for a channel program end notification from the input / output processing device 200. The data processing is completed when the arithmetic processing units 110 to 113 receive the end notification.

演算処理装置110〜113から入出力処理装置200へのチャネルプログラムの実行指示は、演算処理装置110〜113がIOコントローラ210へメモリアクセスすることで行われる。これにより、IOコントローラ210がプロセッサ220のPCIeポート220−1に割込を行うことで、プロセッサ220上で動作するファームウェアにチャネルプログラムの実行が指示される。なお、これは一般的な方法であり、詳細な説明は省略する。   The execution instruction of the channel program from the arithmetic processing devices 110 to 113 to the input / output processing device 200 is performed by the arithmetic processing devices 110 to 113 accessing the IO controller 210 in memory. As a result, the IO controller 210 interrupts the PCIe port 220-1 of the processor 220, thereby instructing the firmware operating on the processor 220 to execute the channel program. This is a general method and will not be described in detail.

図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 channel program 20 includes a channel program header (CPH) 20-0 and a plurality of channel command entries (CCE) 20-1 to n. Also, as illustrated in FIG. 17, the channel program header 20-0 has a channel number 20-0-1 for executing the channel program 20.

チャネル番号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 peripheral processing devices 2000 and 3000 connected to the input / output processing device 200 and the connection path. For example, channel numbers 0 to 15 are assigned to the peripheral processing devices 2000 and 3000 connected to the PCIe card 280, and channel numbers 16 to 31 are assigned to the peripheral processing devices 2000 and 3000 connected to the PCIe card 281. Further, channel numbers 32-47 are assigned to the peripheral processing devices 2000, 3000 connected to the PCIe card 282, and channel numbers 48-63 are assigned to the peripheral processing devices 2000, 3000 connected to the PCIe card 283.

図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 main memory 130.

プロセッサ220上で動作するファームウェアは、演算処理装置110〜113よりチャネルプログラム20の実行を指示されると、指示されたアドレスより読み出したチャネルプログラム20を実行する。ファームウェアは、最初に指示されたアドレスよりチャネルプログラムヘッダ20−0を読み出し、チャネル番号20−0−1より対象となる周辺処理装置2000,3000とPCIeカード280〜283を特定する。   When the firmware that runs on the processor 220 is instructed to execute the channel program 20 from the arithmetic processing units 110 to 113, the firmware that has been read from the instructed address is executed. The firmware reads the channel program header 20-0 from the address designated first, and identifies the target peripheral processing devices 2000 and 3000 and the PCIe cards 280 to 283 from the channel number 20-0-1.

続いて、プロセッサ220は、チャネルコマンドエントリ20−1を読み出して、コマンド20−1−1とフラグ20−1−2に対応した処理を行う。ファームウェアは、1つのチャネルコマンドエントリ20−n−1に対応する処理が完了したら次のチャネルコマンドエントリ20−nを読み出して、対応する処理を実行する。全てのチャネルコマンドエントリ20−nを処理したら、プロセッサ220は、演算処理装置110〜113にチャネルプログラム20が終了したことを通知する。   Subsequently, the processor 220 reads the channel command entry 20-1 and performs processing corresponding to the command 20-1-1 and the flag 20-1-2. When the process corresponding to one channel command entry 20-n-1 is completed, the firmware reads the next channel command entry 20-n and executes the corresponding process. When all the channel command entries 20-n have been processed, the processor 220 notifies the arithmetic processing units 110 to 113 that the channel program 20 has ended.

入出力処理装置200から演算処理装置110〜113へのチャネルプログラム20の終了通知は、プロセッサ220上で動作するファームウェアがIOコントローラ210にメモリアクセスすることで行われる。具体的には、IOコントローラ210がメモリコントローラ120を通して演算処理装置110〜113に割込を通知することで、終了通知が行われる。なお、これは一般的な方法であり、詳細な説明は省略する。   The end notification of the channel program 20 from the input / output processing device 200 to the arithmetic processing devices 110 to 113 is performed when the firmware operating on the processor 220 accesses the IO controller 210 in memory. Specifically, the IO controller 210 notifies the arithmetic processing devices 110 to 113 through the memory controller 120 of the interrupt, thereby giving the end notification. This is a general method and will not be described in detail.

チャネルコマンドエントリ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 peripheral processing devices 2000 and 3000 to the main memory 130. In this case, the transfer count is stored in the count 20-n-3 of the channel command entry 20-n, and the address on the main memory 130 of the transfer destination is stored in the address 20-n-4.

このとき、プロセッサ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 processor 220 transfers the data by the count of 20-n-3 to the MMIO space 301 of the IO controller 210 corresponding to the address 20-n-4, and the PCIe corresponding to the channel number 20-0-1. Set to cards 280 to 283, respectively. The processor 220 waits for the completion of the data transfer until there is an interrupt from the PCIe card 280-283.

例えば、図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 processor 220 sets the PCIe card 280 to transfer data to the address of 0x8008000FF00.

演算処理装置110〜113と入出力処理装置200は、複数のチャネルプログラム20を同時に実行することが可能である。演算処理装置110〜113は、入出力処理装置200にチャネルプログラム20の実行を指示した後、チャネルプログラム20の完了を待ち合わせている間に他の命令や他のチャネルプログラム20の実行指示を行うことが可能である。また、入出力処理装置200は、PCIeカード280〜283にデータ転送指示を行った後、データ転送の終了を待ち合わせている間に他のチャネルプログラム20のチャネルコマンドエントリ20−nを実行することが可能である。なお、これらの実行方法は、本発明についての主要部分ではないため、詳細な説明は省略する。   The arithmetic processing devices 110 to 113 and the input / output processing device 200 can simultaneously execute a plurality of channel programs 20. The arithmetic processing units 110 to 113 issue instructions to execute other instructions and other channel programs 20 while waiting for the completion of the channel program 20 after instructing the input / output processing unit 200 to execute the channel program 20. Is possible. The input / output processing device 200 may execute the channel command entry 20-n of the other channel program 20 while waiting for the end of the data transfer after giving the data transfer instruction to the PCIe cards 280 to 283. Is possible. In addition, since these execution methods are not the main parts about this invention, detailed description is abbreviate | omitted.

図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を含む。   Packet 2 represents a data link layer packet, and includes Sequence Number 2-1 and LCRC 2-2 in addition to the information included in TLP 3. Packet 1 includes Framing 1-1 and 1-2 in addition to the information included in packet 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 PCIe card 280 to 283 to the main memory 130. The header 3-1 includes a format 3-1-1 indicating the format of the transaction layer packet 3 and request contents, a type 3-1-2, a requester ID 3-1-3 indicating a request source, and an address 3 corresponding to the request contents. -1-4.

例えば、図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 PCIe card 280 to 283 as a data transmission source are set in the Requester ID 3-1-3, and 0x8008000FF00 is set in the Address 3-1-4.

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 TRP 3, and added to ECRC 3-3 of TRP 3. The added CRC is used to verify the validity of Header 3-1 and Data 3-2 at the reception destination of TRP3. Hereinafter, using the CRC stored in the ECRC 3-3 may be simply referred to as using (using) the ECRC 3-3.

例えば、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 card 280 to 283 to the main memory 130, the PCIe card 280 to 283 creates a CRC of the transaction layer packet 3 and adds it to the ECRC 3-3. The PCIe port 210-1 of the IO controller 210 that is the transmission destination on the PCIe I / F verifies the validity of the packet received using the ECRC 3-3 of the transaction layer packet 3.

例えば、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 transaction layer packet 3 occurs in the PCIe switch 240 during data transfer from the PCIe card 280 to 283 to the main memory 130. Even in this case, data corruption can be detected by verifying the transaction layer packet 3 using the ECRC 3-3 on the PCIe port 210-1 of the IO controller 210.

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 IO controller 210, an interrupt is notified to the PCIe port 220-2 of the processor 220.

図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 Extended Capability Structure 11 that indicates an abnormal content notified by interruption to the configuration space 10 of the PCIe port.

図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 transaction layer packet 3 in which the ECRC abnormality is detected is set in the Header Log Register 11-4. Stored. Since these items are described in detail in the PCIe specification, detailed description is omitted.

ここで、チャネルコマンドエントリ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 transaction layer packet 3 occurs in the PCIe switch 240 when data is transferred from the peripheral processing devices 2000 and 3000 to the main memory 130 according to the instruction of the channel command entry 20-n. . When ECRC3-3 is added when the transaction layer packet 3 is transmitted by the PCIe card 280 to 283, the validity of the transaction layer packet 3 is verified by the ECRC3-3 at the PCIe port 210-1 of the IO controller 210. An ECRC abnormality is detected.

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 transaction layer packet 3 in which the abnormality is detected in the Header Log Register 11-4. In addition, the PCIe port 210-1 sets an ECRC abnormality in the Uncorrectable Error Status Register 11-1 illustrated in FIG. 22 and notifies the processor 220 of the interrupt.

ECRC異常が検出されたトランザクションレイヤーパケット3は破棄され、データ化けしたデータはメインメモリ130に転送されない。しかし、PCIeカード280〜283からメインメモリ130へのデータ転送は、Postedのトランザクションである。そのため、PCIeカード280〜283から見ると、データ転送は正常に終了するため、ファームウェア(プロセッサ220)に転送が終了したことが通知される。そのため、ファームウェアから見ると、データ転送が正常に終了したように見えてしまう。   The transaction layer packet 3 in which the ECRC abnormality is detected is discarded, and the garbled data is not transferred to the main memory 130. However, data transfer from the PCIe cards 280 to 283 to the main memory 130 is a posted transaction. Therefore, when viewed from the PCIe cards 280 to 283, the data transfer ends normally, so the firmware (processor 220) is notified that the transfer has ended. Therefore, when viewed from the firmware, it appears that the data transfer has been completed normally.

一方、プロセッサ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 processor 220 receives an interrupt corresponding to the ECRC abnormality, the content of the Header Log Register 11-4 is checked to check the header 3-1 of the transaction layer packet 3 in which the ECRC abnormality is detected. Can be confirmed. However, the ECRC abnormality indicates that data corruption has occurred in Header 3-1 and Data 3-2, and therefore the correctness of the contents stored in Header Log Register 11-4 cannot be guaranteed. For this reason, the address command 3-1-4 of the Header 3-1 cannot identify the channel command entry 20-n performing the data transfer in which the ECRC abnormality is detected.

情報処理装置1000の正当性を保証するために周辺処理装置2000,3000からメインメモリ130にデータ転送する際にECRC異常を検出した場合、このような理由から、情報処理装置1000全体の障害として処理されてしまうという問題がある。   When an ECRC abnormality is detected when data is transferred from the peripheral processing devices 2000 and 3000 to the main memory 130 in order to guarantee the validity of the information processing device 1000, it is treated as a failure of the information processing device 1000 for this reason. There is a problem of being done.

また、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 Patent Document 1, an abnormality of a signal is detected without using ECRC. However, since ECRC is a code generally used in PCIe, the complete data can be obtained while using this ECRC. It is desirable to be able to guarantee the sex.

そこで、本発明は、パケット転送時に終端間巡回冗長検査符号の異常(すなわち、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.

転送空間の例を示す説明図である。It is explanatory drawing which shows the example of transfer space. 転送空間のアドレス形式の例を示す説明図である。It is explanatory drawing which shows the example of the address format of transfer space. MMIO空間の例を示す説明図である。It is explanatory drawing which shows the example of MMIO space. MMIO空間のアドレス形式の例を示す説明図である。It is explanatory drawing which shows the example of the address format of MMIO space. IOコントローラの構成例を示す説明図である。It is explanatory drawing which shows the structural example of IO controller. 転送制御レジスタの例を示す説明図である。It is explanatory drawing which shows the example of a transfer control register. チャネルプログラム管理表の例を示す説明図である。It is explanatory drawing which shows the example of a channel program management table. 転送空間−チャネル番号対応表の例を示す説明図である。It is explanatory drawing which shows the example of a transfer space-channel number correspondence table. チャネルプログラムを実行する処理の例を示す第1のフローチャートである。It is a 1st flowchart which shows the example of the process which performs a channel program. チャネルプログラムを実行する処理の例を示す第2のフローチャートである。It is a 2nd flowchart which shows the example of the process which performs a channel program. 割込み発生時の動作例を示す第1のフローチャートである。It is a 1st flowchart which shows the operation example at the time of interruption generation | occurrence | production. 割込み発生時の動作例を示す第2のフローチャートである。It is a 2nd flowchart which shows the operation example at the time of interruption generation | occurrence | production. 本発明による入出力処理装置の概要を示すブロック図である。It is a block diagram which shows the outline | summary of the input-output processing apparatus by this invention. 情報処理装置の例を示す説明図である。It is explanatory drawing which shows the example of information processing apparatus. アドレス変換の方法例を示す説明図である。It is explanatory drawing which shows the example of a method of address conversion. チャネルプログラムの例を示す説明図である。It is explanatory drawing which shows the example of a channel program. チャネルプログラムヘッダの例を示す説明図である。It is explanatory drawing which shows the example of a channel program header. チャネルコマンドエントリの例を示す説明図である。It is explanatory drawing which shows the example of a channel command entry. 送受信されるパケットの例を示す説明図である。It is explanatory drawing which shows the example of the packet transmitted / received. Headerの例を示す説明図である。It is explanatory drawing which shows the example of Header. PCIeポートのコンフィグレーション空間の例を示す説明図である。It is explanatory drawing which shows the example of the configuration space of a PCIe port. Advanced Error Reporting Extended Capability Structureの内容を示す説明図である。It is explanatory drawing which shows the content of Advanced Error Reporting Extended Capability Structure.

まず、本発明による入出力処理装置の一実施形態を図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 / output processing device 200 according to the present embodiment is a device that includes the PCIe cards 280 to 283, the PCIe switch 240, the IO controller 210, and the processor 220, and executes processing in the channel program method. . In addition, about the part already demonstrated with reference to FIG. 14, description is abbreviate | omitted suitably.

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 PCIe cards 280 to 283 are interfaces for data transfer with the peripheral processing devices 2000 and 3000. The PCIe switch 240 connects the PCIe cards 280 to 283. Specifically, the ports 240-3 to 6 included in the PCIe switch 240 and the ports 280-1 to 283-1 included in the PCIe cards 280 to 283 are connected via the buses 260 to 263.

IOコントローラ210は、PCIeカード280〜283を介して周辺処理装置2000,3000と中央処理装置100のメインメモリ130との間のデータ転送を制御する。プロセッサ220は、IOコントローラ210とPCIeカード280〜283を制御する。プロセッサ220は、例えば、ファームウェアに従って各処理を実行する。   The IO controller 210 controls data transfer between the peripheral processing devices 2000 and 3000 and the main memory 130 of the central processing unit 100 via the PCIe cards 280 to 283. The processor 220 controls the IO controller 210 and the PCIe cards 280 to 283. For example, the processor 220 executes each process according to the firmware.

IOコントローラ210は、周辺処理装置2000,3000からメインメモリ130にデータ転送する。IOコントローラ210は、データ転送の際に、PCIeカード280〜283からのMMIOアクセスを受け付けて、メインメモリ130へデータ転送を行うための固定長の複数の転送空間400(図14において図示せず)を内部に有する。以下、転送空間400に割り当てられるp個の空間を識別するため、割り当てられた各転送空間を転送空間400−pとりする。転送空間400は、例えば、各転送空間を記憶する領域を有するメモリ等により実現される。   The IO controller 210 transfers data from the peripheral processing devices 2000 and 3000 to the main memory 130. The IO controller 210 receives a MMIO access from the PCIe cards 280 to 283 during data transfer, and a plurality of fixed-length transfer spaces 400 (not shown in FIG. 14) for transferring data to the main memory 130. Inside. Hereinafter, in order to identify p spaces assigned to the transfer space 400, each assigned transfer space is taken as the transfer space 400-p. The transfer space 400 is realized by, for example, a memory having an area for storing each transfer space.

また、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 IO controller 210 has a conversion mechanism (not shown in FIG. 14) that performs address conversion between the input / output processing device 200 and the main memory 130 for each transfer space 400-p. The IO controller 210 has an MMIO space 300 (not shown in FIG. 14) in which 8-bit ECC is added to the address of the transfer space 400-p. In addition, when the IO controller 210 (more specifically, the conversion mechanism) accesses the MMIO space 300 from the PCIe card 280 to 283, the access is specified by deleting the added ECC (Error Correction Code). Has a function of processing as an access to the transfer space 400-p.

入出力処理装置200は、周辺処理装置2000,3000からメインメモリ130へのデータ転送を行うチャネルプログラム20を実行するとき、複数の転送空間400のうち1つの転送空間400−pをそのチャネルプログラム20に割り当てる。   When the input / output processing device 200 executes the channel program 20 for transferring data from the peripheral processing devices 2000 and 3000 to the main memory 130, one of the transfer spaces 400 -p is transferred to the channel program 20. Assign to.

入出力処理装置200は、データ転送を行うときに、転送空間400−pのアドレスに、そのアドレスに対するECCを付加してMMIO空間300のアドレスにする。入出力処理装置200は、転送先アドレスとしてMMIO空間300のアドレスをPCIeカード280〜283に設定してデータ転送を行う。   When performing the data transfer, the input / output processing device 200 adds an ECC for the address to the address of the transfer space 400-p to make the address of the MMIO space 300. The input / output processing device 200 sets the address of the MMIO space 300 as a transfer destination address in the PCIe card 280 to 283 and performs data transfer.

これらの処理は、例えば、ファームウェアに記載され、プロセッサ220がそのファームウェアに従って動作する。また、MMIO空間300は、例えば、転送空間400−pのアドレスとECCとを付加した情報(以下、アドレス検証情報と記すこともある。)を記憶する領域を有するメモリ等により実現される。   These processes are described in, for example, firmware, and the processor 220 operates according to the firmware. The MMIO space 300 is realized by, for example, a memory having an area for storing information (hereinafter also referred to as address verification information) to which the address and ECC of the transfer space 400-p are added.

また、入出力処理装置200は、転送空間400−pを使用して、データ転送を行うチャネルプログラム20を特定する。   Further, the input / output processing device 200 identifies the channel program 20 that performs data transfer using the transfer space 400-p.

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 IO controller 210 detects the presence or absence of an ECRC abnormality when data is transferred from the peripheral processing devices 2000 and 3000 to the main memory 130. When the ECRC abnormality is detected, the processor 220 reads the transfer destination Address 3-1-4 from the Header Log Register 11-4 in the PCI config space of the IO controller 210. If the address 3-1-4 is within the range of the MMIO space 300, the processor 220 extracts the ECC from the address 3-1-4 and verifies the validity of the address 3-1-4. If the validity can be verified, the processor 220 obtains the transfer space 400-p from the address 3-1-4, and specifies the channel program using the transfer space 400-p. Then, the processor 220 re-executes the channel program. These processes are described in, for example, firmware, and the processor 220 operates according to the firmware.

以下、各構成の具体的な内容を説明する。図1は、転送空間400の例を示す説明図である。以下の説明では、本発明の入出力処理装置が図1に例示する転送空間を利用するものとする。   Hereinafter, specific contents of each component will be described. FIG. 1 is an explanatory diagram showing an example of the transfer space 400. In the following description, it is assumed that the input / output processing apparatus of the present invention uses the transfer space illustrated in FIG.

図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 transfer space 400 used by the IO controller 210 for data transfer of the PCIe port 210-1 is divided into a plurality of fixed-length transfer spaces 400-p. In the example shown in FIG. 1, the transfer space 400 is divided into 64 pieces. The firmware performs control to allocate one channel program 20 to each transfer space 400-p. In the example shown in FIG. 1, the size of the transfer space 400-p is 4 MB.

図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 transfer space 400. By dividing the transfer space 400 into a plurality of fixed-length transfer spaces 400-p, the address format 410 of the transfer space 400 is represented in the format illustrated in FIG. Base Address 410-1 is a base address of the transfer space 400. The transfer space number 410-3 indicates the number p corresponding to the transfer space 400-p. Offset 410-4 indicates an offset within the transfer space 400-p. In the example shown in FIG. 1, Base Address 410-1 is set to 0x800000000000000.

図1に例示する転送空間400は、IOコントローラ210内部のアドレス空間である。図3は、MMIO空間の例を示す説明図である。また、図4は、MMIO空間のアドレス形式の例を示す説明図である。図3に示す例は、IOコントローラ210のPCIeポート210−1におけるMMIO空間300を示している。   A transfer space 400 illustrated in FIG. 1 is an address space inside the IO controller 210. FIG. 3 is an explanatory diagram showing an example of the MMIO space. FIG. 4 is an explanatory diagram showing an example of the address format of the MMIO space. The example shown in FIG. 3 shows the MMIO space 300 in the PCIe port 210-1 of the IO controller 210.

MMIO空間のアドレス形式310は、転送空間のアドレス形式410にECC310−2を付加した形式になっている。ファームウェアは、転送空間のアドレス形式410で表わされたアドレスからECC310−2を計算し、MMIO空間のアドレス形式310になるよう、計算したECC310−2を転送空間のアドレス形式410の3バイト目に設定する。   The address format 310 of the MMIO space is a format in which ECC 310-2 is added to the address format 410 of the transfer space. The firmware calculates the ECC 310-2 from the address expressed in the transfer space address format 410, and stores the calculated ECC 310-2 in the third byte of the transfer space address format 410 so as to be the MMIO space address format 310. Set.

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 MMIO space 300 has a range from 0x800000000000000 to 0x80FFFFFFFFFF with respect to the transfer space 400 illustrated in FIG.

図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 IO controller 210 of the present embodiment. The IO controller 210 includes a conversion mechanism 500 that converts the address space of the bus 160 and the PCIe I / F 252 and the bus I / F when data is transferred from the peripheral processing devices 2000 and 3000 to the main memory 130.

また、図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 transfer control register 510 is provided with a transfer control register corresponding to each transfer space 400-p in order to perform data transfer corresponding to the plurality of transfer spaces 400-p. Hereinafter, a transfer control register corresponding to each transfer space 400-p is referred to as a transfer control register 510-p.

転送制御レジスタ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 main memory 130 as a transfer destination, a count 510-p-2 for storing a count to be transferred, and a flag 510-p- for controlling transfer. 3 is provided. FIG. 5 shows an example of the 0th transfer control register 510-0.

図5を参照して、周辺処理装置2000,3000からメインメモリ130にデータ転送するときの、IOコントローラ210のMMIO空間300,転送空間400,変換機構510および転送制御レジスタ510の関係を説明する。   The relationship among the MMIO space 300, the transfer space 400, the conversion mechanism 510, and the transfer control register 510 of the IO controller 210 when data is transferred from the peripheral processing devices 2000 and 3000 to the main memory 130 will be described with reference to FIG.

PCIe I/F252は、MMIO空間300のアドレス303に対してデータを転送する。IOコントローラ210は、MMIO空間300にアクセスされると、MMIO空間のアドレス形式310で表わされたアドレス303からECC310−2を取り除き、転送空間のアドレス形式410に変換したアドレス304を生成する。   The PCIe I / F 252 transfers data to the address 303 in the MMIO space 300. When accessed to the MMIO space 300, the IO controller 210 removes the ECC 310-2 from the address 303 expressed in the address format 310 of the MMIO space and generates an address 304 converted into the address format 410 of the transfer space.

そして、IOコントローラ210は、アドレス304から対応する転送空間400−pのアドレスを求める。変換機構500は、転送空間400−pに対応する転送制御レジスタ510−pの値を読み出す。変換機構500は、アドレス304のオフセット410−4とAddress510−p−1を加算した値をメインメモリ空間131のアドレスとする。そして、変換機構500は、このアドレスを使用して、メインメモリ130にアクセスする。   Then, the IO controller 210 obtains the address of the corresponding transfer space 400-p from the address 304. The conversion mechanism 500 reads the value of the transfer control register 510-p corresponding to the transfer space 400-p. The conversion mechanism 500 sets a value obtained by adding the offset 410-4 of the address 304 and the address 510-p-1 as the address of the main memory space 131. Then, the conversion mechanism 500 accesses the main memory 130 using this address.

図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 address 303 is 0x80xxx000zzzz, the address 304 with the ECC 310-2 removed is 0x8000000zzzz, and the transfer space number is 0. In this case, the transfer space number 400-0 is selected, and the conversion mechanism 510 selects the transfer control register 510-0, and adds the address 133-0-1 and the offset 410-4 of the address 304 to the main memory 130. Use as an address to access.

プロセッサ220上で動作するファームウェアは、チャネル番号毎にチャネルプログラム20の実行を管理するチャネルプログラム管理表をローカルメモリ230に有する。図7は、チャネルプログラム管理表の例を示す説明図である。ファームウェアは、例えば、図7に例示するチャネルプログラム管理表30を用いて、チャネルプログラム20の実行を管理する。   The firmware operating on the processor 220 has a channel program management table for managing the execution of the channel program 20 for each channel number in the local memory 230. FIG. 7 is an explanatory diagram showing an example of the channel program management table. For example, the firmware manages the execution of the channel program 20 using the channel program management table 30 illustrated in FIG.

図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 channel program 20 are stored. Note that the channel program management table 30 illustrated in FIG. 7 assumes 64 channels.

また、ファームウェアは、チャネルプログラム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 channel program 20 in the local memory 230. FIG. 8 is an explanatory diagram showing an example of a transfer space-channel number correspondence table. The transfer space-channel number correspondence table 40 illustrated in FIG. 8 manages the channel number m of the channel program 20 performing data transfer using the transfer space 400-p for each transfer space 400-p. For example, the firmware manages the channel number m of the channel program 20 using the transfer space-channel number correspondence table illustrated in FIG.

図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 channel program 20 according to instructions from the arithmetic processing units 110 to 113. In the following description, the processing illustrated in FIGS. 9 and 10 may be referred to as channel program execution processing.

プロセッサ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 processor 220 reads the addresses 20-n-4 and counts 20-n-3 of the channel command entry 20-n, and addresses 510-p-1 and counts 510-p-2 of the transfer control register 510-p corresponding to the transfer space 400-p. Set to. Further, the processor 220 sets Flag 510-p-3 to transfer-enabled. This process is described in step S60-10 in FIG.

また、プロセッサ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 processor 220 obtains the address a of the transfer space 400-p using the address represented by the address format 410 of the transfer space. Further, the processor 220 obtains an ECC using a SECDED (single-error-correcting and double-error-detecting code) code for the obtained address a. The processor 220 adds the obtained ECC to the third byte of the address a, and converts it to the address c which is the address format 310 of the MMIO space. This process is described in step S60-10 in FIG.

また、プロセッサ220は、チャネル番号20−0−1に対応するPCIeカード280〜283に、転送アドレスとしてアドレスcを設定し、データ転送を起動する。この処理は、図9のステップS60−11に記されている。   Further, the processor 220 sets the address c as a transfer address to the PCIe cards 280 to 283 corresponding to the channel number 20-0-1, and starts data transfer. This process is described in step S60-11 in FIG.

また、チャネルプログラム実行処理では、プロセッサ220は、データ転送終了後に転送制御レジスタ510−pのFlag510−p−2と、転送空間−チャネル番号対応表40−pのFlag40−p−1を未使用に設定する。この処理は、図10のステップS60−13に記されている。   Further, in the channel program execution process, the processor 220 makes unused Flag 510-p-2 of the transfer control register 510-p and Flag 40-p-1 of the transfer space-channel number correspondence table 40-p after the data transfer ends. Set. This process is described in step S60-13 in FIG.

また、プロセッサ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 processor 220 reads out Flag30-m-4 of the channel program management table 30-m and checks whether a failure has occurred. If a failure has occurred, the processor 220 adds 16 to the channel program header address 30-m-1 to determine the address of the first channel command entry 20-1. The processor 220 stores the address in the executing channel command entry address 30-m-2 and resets Flag 30-m-4 to retry the channel program. These processes are described in steps S60-14 to 16 in FIG.

また、チャネルプログラム実行処理では、プロセッサ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 processor 220 checks Flag 510-p-2 of the transfer control register 510 when data is transferred from the peripheral processing devices 2000 and 3000 to the main memory 130 according to the channel command entry 20-n. . The processor 220 obtains an unused transfer space p and sets Flag 510-p-2 in use. This process is described in step S60-6 in FIG.

また、プロセッサ220は、転送空間に対応する転送空間−チャネル番号対応表40−pのチャネル番号40−p−2に、チャネルプログラム20のチャネル番号20−0−1を格納し、Flag40−p−1を使用中に設定する。この処理は、図9のステップ60−7に記されている。   Further, the processor 220 stores the channel number 20-0-1 of the channel program 20 in the channel number 40-p-2 of the transfer space-channel number correspondence table 40-p corresponding to the transfer space, and Flag 40-p- Set 1 during use. This process is described in step 60-7 in FIG.

なお、ここでは、図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 processor 220 determines whether or not the interrupt from the IO controller 210 is an ECRC abnormality detection of the PCIe port 210-1. When the ECRC abnormality is detected, the processor 220 reads out the Header Log Register 11-4, confirms the Format 3-1-1 and Type 3-1-2, and confirms whether the request in which the ECRC abnormality has occurred is the Memory Write. . This process is described in steps S70-8 and 9 in FIG.

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 processor 220 confirms whether the Address 3-1-4 of the Header Log Register 11-4 is within the range of the MMIO space 300 of the IO controller 210. This process is described in steps S70-10 and 11 in FIG.

ここで、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 MMIO space 300, the processor 220 determines that the address 3-1-4 is an address of the MMIO space address format 310, and the ECC 310-2 and the transfer space address format 410. To address c. Then, the processor 220 checks whether there is an error in the address c using the ECC 310-2. This process is described in steps S70-12 and 13 in FIG.

また、プロセッサ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 processor 220 determines that the address c is in the transfer space address format, obtains the transfer space 400-p, and transfers the transfer space-channel corresponding to the transfer space 400-p. The channel number 40-p-2 is read from the number correspondence table 40-p. This process is described in step S70-14 in FIG.

そして、プロセッサ220は、チャネル番号40−p−2に対応するチャネルプログラム管理表30−mのFlag30−m−4に、障害状態を設定する。この処理は、図12のステップS70−15に記されている。   Then, the processor 220 sets a failure state in Flag 30-m-4 of the channel program management table 30-m corresponding to the channel number 40-p-2. This process is described in step S70-15 in FIG.

なお、ここでは、図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 arithmetic processing devices 110 to 113 give an instruction to transfer data from the peripheral processing devices 2000 and 3000 to the main memory 130 to the input / output processing device 200 will be described. To do.

なお、図9に例示する処理の前に、演算処理装置110〜113は、周辺処理装置2000,3000からメインメモリ130にデータ転送するためのチャネルプログラム20を作成して、メインメモリ130に格納する。演算処理装置110〜113は、チャネルプログラム20を格納したアドレスを指定して入出力処理装置200にチャネルプログラム20の実行を指示する。   Prior to the processing illustrated in FIG. 9, the arithmetic processing devices 110 to 113 create a channel program 20 for transferring data from the peripheral processing devices 2000 and 3000 to the main memory 130 and store the channel program 20 in the main memory 130. . The arithmetic processing devices 110 to 113 specify the address where the channel program 20 is stored and instruct the input / output processing device 200 to execute the channel program 20.

そして、入出力処理装置200が演算処理装置110〜113よりチャネルプログラムの実行を指示されると、プロセッサ220上で動作するファームウェアが、図9及び図10に例示するチャネルプログラム実行処理を実行する。   When the input / output processing device 200 is instructed to execute the channel program by the arithmetic processing devices 110 to 113, the firmware operating on the processor 220 executes the channel program execution processing illustrated in FIG. 9 and FIG.

チャネルプログラム実行処理において、まず、プロセッサ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 processor 220 reads the channel program header 20-0 of the channel program 20 from the address notified from the arithmetic processing units 110 to 113 (step S60-1). The processor 220 extracts the channel number 20-0-1 from the channel program header 20-0, and is notified from the arithmetic processing units 110 to 113 to the channel program header address 30-m-1 of the corresponding channel program management table 30-m. The stored address is stored (step S60-2).

プロセッサ220は、チャネルプログラムヘッダアドレス30−m−1に16を加算してチャネルコマンドエントリ20−1のアドレスを求め、実行中チャネルコマンドエントリアドレス30−m−2に格納する(ステップS60−3)。   The processor 220 adds 16 to the channel program header address 30-m-1 to obtain the address of the channel command entry 20-1, and stores it in the executing channel command entry address 30-m-2 (step S60-3). .

プロセッサ220は、実行中チャネルコマンドエントリ30−m−2の示すアドレスより、チャネルコマンドエントリ20−nを読み出し、Command20−n−1の内容を確認する(ステップS60−4)。   The processor 220 reads the channel command entry 20-n from the address indicated by the channel command entry 30-m-2 being executed, and checks the contents of the Command 20-n-1 (step S60-4).

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 peripheral processing devices 2000 and 3000 to the main memory 130 (Yes in step S60-5), the processor 220 performs the following processing. The processor 220 confirms Flag 510-p-2 of the transfer control register 510-p of the IO controller 210 to perform data transfer, and obtains an unused transfer space 400-p. The processor 220 sets the flag 510-p-2 of the transfer space 400-p to be in use (step S60-6).

プロセッサ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 processor 220 sets the channel number 20-0-1 to the channel number 40-p-2 of the transfer space-channel number management table 40-p corresponding to the transfer space 400-p, and uses the Flag 40-p-1. (Step S60-7). Then, the processor 220 stores the transfer space number p in the transfer space number 30-m-2 of the channel program management table 30-m (step S60-8).

また、プロセッサ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 processor 220 transfers the address 20-n-4 and the count 20-n-3 of the channel command entry 20-n to the transfer control register 510-p corresponding to the transfer space 400-p in order to transfer data to the main memory 130. p is stored in Address 510-p-1 and Count 510-p-2. Then, the processor 220 sets the flag 510-p-3 to transfer valid so that data can be transferred (step S60-9).

プロセッサ220は、転送空間のアドレス形式410で転送空間400−pの先頭アドレスaを求める。また、プロセッサ220は、アドレスaに対する8bit ECC bをSECDED符号で求める。プロセッサ220は、IOコントローラ210のMMIO空間アドレス形式310のアドレスになるよう、アドレスaにECC bを付加してアドレスcを求める(ステップS60−10)。   The processor 220 obtains the head address a of the transfer space 400-p in the transfer space address format 410. Further, the processor 220 obtains an 8-bit ECC b for the address a using a SECDED code. The processor 220 obtains an address c by adding ECC b to the address a so as to be an address in the MMIO space address format 310 of the IO controller 210 (step S60-10).

プロセッサ220は、チャネル番号20−m−1に対応するPCIeカード280〜283にデータ転送先アドレスとしてアドレスcを設定し、データ転送処理を起動する(ステップS60−11)。   The processor 220 sets an address c as a data transfer destination address to the PCIe cards 280 to 283 corresponding to the channel number 20-m−1, and starts data transfer processing (step S60-11).

以上の処理により、周辺処理装置2000、3000からメインメモリ130に対するデータ転送が、PCIeカード280〜283によって開始される。   With the above processing, data transfer from the peripheral processing devices 2000 and 3000 to the main memory 130 is started by the PCIe cards 280 to 283.

PCIeカード280〜283は、データ転送が終了すると、ファームウェアに従って実行するプロセッサ220に対し、データ転送が終了したことを割込通知する。チャネルプログラム実行処理では、プロセッサ220(ファームウェア)が、その割込を待ち合わせる。すなわち、プロセッサ220は、データ転送の終了を待ち合わせる(ステップS60−12)。   When the data transfer is completed, the PCIe cards 280 to 283 notify the processor 220 that is executed according to the firmware that the data transfer has been completed. In the channel program execution process, the processor 220 (firmware) waits for the interrupt. That is, the processor 220 waits for the end of data transfer (step S60-12).

データ転送が終了すると、チャネルプログラム実行処理において、プロセッサ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 processor 220 executes Flag 510-p-2 in the transfer control register 510-p of the IO controller 210 and Flag 40-m-1 in the transfer space-channel number management table 40-m. Is set to an unused state (step S60-13).

プロセッサ220は、チャネルプログラム管理表30−mにおけるFlag30−m−4を読み出し、障害が発生しているか否かを確認する(ステップS60−14)。ここでは、障害が発生しておらず、Flag30−m−4には障害状態が設定されていないとする(ステップS60−15におけるNo)。この場合、プロセッサ220は、チャネルコマンドエントリ20−nのFlag20−n−2を確認して、チャネルプログラム20が終了したかどうかを確認する(ステップS60−18)。   The processor 220 reads Flag30-m-4 in the channel program management table 30-m and checks whether or not a failure has occurred (step S60-14). Here, it is assumed that no failure has occurred and no failure state is set in Flag 30-m-4 (No in step S60-15). In this case, the processor 220 confirms Flag 20-n-2 of the channel command entry 20-n, and confirms whether or not the channel program 20 has ended (step S60-18).

チャネルプログラム20が終了していない場合(ステップS60−19におけるNo)、プロセッサ220は、チャネルプログラム管理表30−mの実行中チャネルコマンドエントリアドレス30−m−2に16を加算した値を格納する(ステップS60−20)。そして、プロセッサ220は、ステップS60−4の処理に戻り、チャネルコマンドエントリ20−nを処理する。   If the channel program 20 has not ended (No in step S60-19), the processor 220 stores a value obtained by adding 16 to the channel command entry address 30-m-2 being executed in the channel program management table 30-m. (Step S60-20). Then, the processor 220 returns to the process of step S60-4 and processes the channel command entry 20-n.

一方、チャネルプログラム20が終了している場合(ステップS60−19におけるYes)、プロセッサ220は、演算処理装置110〜113にチャネルプログラム20の終了を報告する(ステップS60−21)。   On the other hand, when the channel program 20 has ended (Yes in step S60-19), the processor 220 reports the end of the channel program 20 to the arithmetic processing units 110 to 113 (step S60-21).

次に、図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 peripheral processing devices 2000 and 3000 to the main memory 130, data corruption occurs in the PCIe switch 240, and the PCIe port 210-1 of the IO controller 210. The operation when an ECRC abnormality is detected will be described.

なお、図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 IO controller 210 before the processing illustrated in FIG. 11, the IO controller 210 detects the ECRC abnormality by interrupting it to the processor 220 (firmware). Notify you. When the interrupt is notified, the processor 220 executes an interrupt process according to the firmware.

まず、プロセッサ220は、PCIeポート220−2のConfig空間より割込要因を読み出し、その割込要因がIOコントローラ210のPCIeポート210−1からの障害通知かどうか確認する(ステップS70−1)。これは、Root Error RegisterとError Source Identification Registerの値を確認することで判断できる。   First, the processor 220 reads the interrupt factor from the Config space of the PCIe port 220-2, and checks whether the interrupt factor is a failure notification from the PCIe port 210-1 of the IO controller 210 (step S70-1). This can be determined by checking the values of the Root Error Register and Error Source Identification Register.

割込要因が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 processor 220 clears the failure factor of the PCIe port 220-2 (step S70-3). . The processor 220 reads the value of the Uncorrectable Error Status Register 11-1 from the Config space of the PCIe port 210-1 of the IO controller 210, and confirms whether the failure factor bx is an ECRC abnormality (step S70-4).

障害要因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 processor 220 clears the ECRC abnormality factor of the Uncorrectable Error Status Register 11-1 of the PCIe port 210-1 of the IO controller 210 (step S70-6). ).

プロセッサ220は、Header Log Register11−4からFormat3−1−1とType3−1−2とAddress3−1−4を読み出し(ステップS70−7)、ECRC異常となったリクエストがMemory Writeかどうか確認する(ステップS70−8)。   The processor 220 reads Format3-1-1, Type3-1-2 and Address3-1-4 from the Header Log Register 11-4 (step S70-7), and confirms whether the request having an ECRC error is a Memory Write ( Step S70-8).

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 processor 220 confirms that the address 3-1-4 is within the range of the MMIO space 300 of the IO controller 210 (step S70-10). .

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 processor 220 changes the address 3-1-4 to the ECC 310-2 in order to make the MMIO space address format 310 of the IO controller 210. And the address c of the transfer space address format 410. Then, the processor 220 checks whether there is an error in the address c based on the ECC 310-2 (step S70-12).

アドレス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 processor 220 obtains the transfer space 400-p from the address c, and the channel number of the transfer space-channel number management table 40-p corresponding to the transfer space. The channel number m executing the channel program 20 in which the ECRC abnormality is detected is read from 40-p-2 (step S70-14).

そして、プロセッサ220は、チャネル番号mに対応するチャネルプログラム管理表30−mのFlag30−m−4に、障害状態を設定する(ステップS70−15)。プロセッサ220は、ステップS70−4に戻る。ここで、障害要因bxがECRC異常でない場合(ステップS70−5におけるNo)、プロセッサ220は、他の障害要因bxを確認し、対応する処理を行う(ステップS70−17)。以後、障害要因が無い場合には、プロセッサ220は、割込処理を終了する。   Then, the processor 220 sets a failure state in Flag 30-m-4 of the channel program management table 30-m corresponding to the channel number m (step S70-15). The processor 220 returns to step S70-4. Here, when the failure factor bx is not an ECRC abnormality (No in step S70-5), the processor 220 confirms another failure factor bx and performs a corresponding process (step S70-17). Thereafter, when there is no failure factor, the processor 220 ends the interrupt process.

一方、ステップ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 IO controller 210 in step S70-2. In this case (No in step S70-2), the processor 220 performs corresponding processing according to the interrupt factor ax (step S70-16). Thereafter, when there is no failure factor, the processor 220 ends the interrupt process.

また、ステップ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 processor 220 performs corresponding processing according to the failure factor bx (step S70-17). ). Thereafter, when there is no failure factor, the processor 220 ends the interrupt process.

また、ステップ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 MMIO space 300. (No in step S70-11) or it is assumed that there is an error in address c in step S17-13 (No in step S70-13). In this case, each of the processors 220 processes as a failure of the input / output processing device 200 (steps S70-18, 70-19, 70-20).

チャネルプログラム実行処理において、PCIeカード280〜283によるデータ転送の完了後、プロセッサ220が、チャネルプログラム管理表30−mのFlag30−m−4を確認して、障害が発生したかどうか確認する処理が行われる(ステップS60−14参照)。   In the channel program execution processing, after completion of data transfer by the PCIe cards 280 to 283, the processor 220 checks the Flag 30-m-4 in the channel program management table 30-m to check whether a failure has occurred. Is performed (see step S60-14).

障害が発生した場合、割込処理によって、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 channel program 20 corresponding to the transaction layer packet 3 in which the ECRC abnormality occurred by the interrupt process. ing. Therefore, the processor 220 can recognize the occurrence of the failure (see step S60-15).

プロセッサ220は、チャネルプログラム管理表30−mのチャネルプログラムヘッダアドレス30−m−1に16を加算したアドレスを実行中チャネルコマンドエントリアドレス30−m−2に格納してFlag30−m−4をクリアする。その後、ステップ60−4に戻って、プロセッサ220が、チャネルプログラム20を再実行することで、パケット転送時にECRC異常が検出された場合であっても、障害の影響を局所的な範囲に抑制できる。   The processor 220 stores the address obtained by adding 16 to the channel program header address 30-m-1 of the channel program management table 30-m in the executing channel command entry address 30-m-2 and clears Flag 30-m-4. To do. Thereafter, returning to step 60-4, the processor 220 re-executes the channel program 20, so that the influence of the failure can be suppressed to a local range even when an ECRC abnormality is detected during packet transfer. .

以上のように、本実施形態によれば、入出力処理装置は、転送空間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 MMIO space 300. The transfer space 400-p has an area to which a channel program for executing data transfer processing is assigned. The MMIO space 300 has an area for storing information (address verification information) obtained by adding ECC to the address of the transfer space 400-p.

そして、プロセッサ220は、PCIeカード280〜283に対し、MMIO空間300のアドレスを、ECRCが付与された受信データのトランザクションレイヤーパケット3におけるAddress3−1−4に設定させる。具体的には、プロセッサ220は、転送空間400−pのアドレスに、そのアドレスに対するECCを付加してMMIO空間300のアドレスにする。このアドレスをPCIeカード280〜283に設定してデータ転送を行うことになる。   Then, the processor 220 causes the PCIe cards 280 to 283 to set the address of the MMIO space 300 to Address 3-1-4 in the transaction layer packet 3 of the received data to which ECRC is assigned. Specifically, the processor 220 adds an ECC for the address to the address of the transfer space 400-p to make the address of the MMIO space 300. This address is set in the PCIe cards 280 to 283 to perform data transfer.

プロセッサ220は、受信データに設定されたMMIO空間300のアドレスからアドレス検証情報(すなわち、転送空間400−pのアドレスとECC)を特定する。プロセッサは、そのアドレス検証情報からECCを削除して、転送空間400−pのプログラムを特定することにより、受信データのデータ転送処理を実行する。   The processor 220 identifies address verification information (that is, the address and ECC of the transfer space 400-p) from the address of the MMIO space 300 set in the received data. The processor executes the data transfer process of the received data by deleting the ECC from the address verification information and specifying the program in the transfer space 400-p.

ここで、プロセッサ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 MMIO space 300 set in the received data. Validate the 400-p address.

以上のような構成により、パケット転送時に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 peripheral processing devices 2000 and 3000 to the main memory 130, the processor 220 adds ECC to the transfer address set by the PCIe card 280 to 283. Therefore, even if an ECRC abnormality occurs in the PCIe port 210-1 of the IO controller 210, the validity of the Address 3-1-4 can be confirmed by checking the ECC of the Address 3-1-4 stored in the Header Log Register 11-4. Can be verified.

また、例えば、一般的な方法を用いた場合、仮に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 channel programs 20 are transferring data to the same address in main memory 130, Address 3- The channel program 20 corresponding to 1-4 cannot be specified. Therefore, the program cannot be relieved by a retry process.

しかし、本実施形態では、IOコントローラ210の転送空間400を複数の転送空間410−pに分割し、チャネルプログラムごとに転送空間410−pを割り当てる。そのため、正常なAddress3−1−4をもとにECRC異常となったチャネルプログラム20を特定できるようになる。よって、ECRC異常が検知されても、チャネルプログラム20を再実行できるため、情報処理装置1000全体の障害とせずにデータ転送処理を救済できる。   However, in this embodiment, the transfer space 400 of the IO controller 210 is divided into a plurality of transfer spaces 410-p, and the transfer space 410-p is assigned to each channel program. Therefore, it becomes possible to identify the channel program 20 in which the ECRC has become abnormal based on the normal Address 3-1-4. Therefore, even if an ECRC abnormality is detected, the channel program 20 can be re-executed, so that the data transfer process can be remedied without causing a failure of the information processing apparatus 1000 as a whole.

次に、本発明の概要を説明する。図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, processor 220, PCIe card 280 to 283) for setting the received data transfer destination address (for example, Address 3-1-4) to which end-to-end cyclic redundancy check code (ECRC) is assigned, From the address indicating the verification area set in the received data. Data transfer control means 84 (for example, processor 220) that executes data transfer processing of received data by specifying address verification information, deleting an error correction code from the address verification information, and specifying a transfer area program; And an abnormality detecting means 85 (for example, an IO controller 210) for detecting an abnormality of the end-to-end cyclic redundancy check code (ECRC) given to the received data.

データ転送制御手段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 transfer control unit 84 may verify the validity of the address in the transfer area using the error correction code included in the specified address verification information.

また、処理記憶手段81は、転送プログラムごとに割り当てられた転送領域を有していてもよい。そして、データ転送制御手段84は、正当性が検証された転送領域のアドレスから特定される転送プログラムに従って、受信データのデータ転送処理を再実行してもよい。   Further, the process storage unit 81 may have a transfer area assigned for each transfer program. Then, the data transfer control means 84 may re-execute the data transfer process of the received data according to the transfer program specified from the address of the transfer area whose validity has been verified.

このような構成によれば、正常と判断された転送領域のアドレスをもとに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, PCIe cards 280 to 283) for adding an end-to-end cyclic redundancy check code to the received data.

100 中央処理装置
110〜113 演算処理装置
120 メモリコントローラ
130 メインメモリ
200 入出力処理装置
210 IOコントローラ
220 プロセッサ
230 ローカルメモリ
240 PCIeスイッチ
280〜283 PCIeカード
300 MMIO空間
400 転送空間
1000 情報処理装置
2000,3000 周辺処理装置
DESCRIPTION OF SYMBOLS 100 Central processing unit 110-113 Arithmetic processing unit 120 Memory controller 130 Main memory 200 Input / output processing unit 210 IO controller 220 Processor 230 Local memory 240 PCIe switch 280-283 PCIe card 300 MMIO space 400 Transfer space 1000 Information processing device 2000, 3000 Peripheral processing equipment

Claims (9)

PCI Expressを利用した入出力処理装置であって、
データ転送処理を実行する転送プログラムに対して当該データ転送処理に使用する領域として割り当てられる転送領域を有する処理記憶手段と、
前記転送領域を示すアドレスに当該アドレスの誤り訂正符号を付加したアドレス検証情報で特定されるアドレス空間である検証領域を有するアドレス記憶手段と、
前記検証領域を示すアドレスを、終端間巡回冗長検査符号が付与された受信データの転送先アドレスに設定するアドレス設定手段と、
前記受信データにより前記検証領域へアクセスがあったときに、当該受信データに設定された検証領域を示すアドレスから前記誤り訂正符号を削除して前記転送領域を特定し、特定した転送領域が割り当てられた前記転送プログラムを使用して、受信データのデータ転送処理を実行するデータ転送制御手段と、
前記受信データに付与された終端間巡回冗長検査符号の異常を検出する異常検出手段とを備え、
前記データ転送制御手段は、前記受信データの終端間巡回冗長検査符号に異常が検出されたときに、当該受信データに設定された前記検証領域を示すアドレスから特定されるアドレス検証情報から、前記転送領域のアドレスの正当性を検証する
ことを特徴とする入出力処理装置。
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.
PCI Expressを利用したアドレス正当性検証方法であって、
データ転送処理を実行する転送プログラムに対して当該データ転送処理に使用する領域として割り当てられる転送領域を示す第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.
PCI Expressを利用したコンピュータに適用されるアドレス正当性検証用プログラムであって、
前記コンピュータに、
データ転送処理を実行する転送プログラムに対して当該データ転送処理に使用する領域として割り当てられる転送領域を示す第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.
JP2013057551A 2013-03-21 2013-03-21 I / O processing device, address validity verification method, and address validity verification program Expired - Fee Related JP5907099B2 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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