JP2021103387A - デバイスアクセス装置、演算装置、デバイスアクセスシステム及びデバイスアクセス方法 - Google Patents

デバイスアクセス装置、演算装置、デバイスアクセスシステム及びデバイスアクセス方法 Download PDF

Info

Publication number
JP2021103387A
JP2021103387A JP2019233656A JP2019233656A JP2021103387A JP 2021103387 A JP2021103387 A JP 2021103387A JP 2019233656 A JP2019233656 A JP 2019233656A JP 2019233656 A JP2019233656 A JP 2019233656A JP 2021103387 A JP2021103387 A JP 2021103387A
Authority
JP
Japan
Prior art keywords
instruction set
processor
access
address
pcie
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.)
Granted
Application number
JP2019233656A
Other languages
English (en)
Other versions
JP6885627B1 (ja
Inventor
貴裕 三崎
Takahiro Misaki
貴裕 三崎
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 Platforms Ltd
Original Assignee
NEC Platforms Ltd
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 Platforms Ltd filed Critical NEC Platforms Ltd
Priority to JP2019233656A priority Critical patent/JP6885627B1/ja
Application granted granted Critical
Publication of JP6885627B1 publication Critical patent/JP6885627B1/ja
Publication of JP2021103387A publication Critical patent/JP2021103387A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Bus Control (AREA)
  • Memory System (AREA)

Abstract

【課題】プロセッサのアドレス空間に余裕が無くても複数のデバイスにアクセスすることができるデバイスアクセス装置を提供する。【解決手段】デバイスアクセス装置は、プロセッサに代わってデバイスへMMIO方式でのアクセスを行うデバイスアクセス装置であって、前記プロセッサの指示に基づいて、前記デバイスへの命令セットを発行し、前記命令セットの発行が完了すると、前記プロセッサへ前記命令セットの発行の完了を通知する制御手段、を備える。【選択図】図1

Description

本発明は、デバイスアクセス装置、演算装置、デバイスアクセスシステム及びデバイスアクセス方法に関する。
演算装置に対する性能要求は年々向上しており、これに伴い装置が搭載するメモリの容量は増大している。また、MMIO(Memory-mapped I/O)方式でアクセス(以下、MMIOアクセスと記載する場合がある。)され、制御される各種デバイスも同様に高機能・高性能化が進み、MMIOアクセスが必要な内部レジスタ、メモリが増加し、MMIOアクセスに必要なアドレス空間が増大している。このため、演算装置で扱えるアドレス空間が不足する事態が発生している。
特許文献1には、MMIO方式でマッピングされるアドレス空間(以下、MMIO空間と記載することがある。)に限界があることを課題として、周辺デバイスが使用するメモリ空間を論理的に拡大したアドレス空間に変換し、周辺デバイスに割り当てるアドレス空間を拡大する変換装置が開示されている。
特開2013−114650号公報
特許文献1に記載の方法やTLB(Translation Lookaside Buffer)を用いると、アドレス変換を行うことによって、限られたアドレス空間から多くのMMIO空間へ割り当てることができる。しかし、既存のアドレス空間で、多くのデバイスにMMIOアクセスする場合、同一のアドレスに複数のデバイスを割り当てることになる。すなわち、プロセッサからみたアクセス先のアドレスは同じで、実際にアクセスされるデバイスを切り替える方式をとる。この方式の場合、1つのデバイスにアクセスする間、他のデバイスへのアクセスが不可能となり、パフォーマンスが低下する可能性がある。
そこでこの発明は、上述の課題を解決するデバイスアクセス装置、演算装置、デバイスアクセスシステム及びデバイスアクセス方法を提供することを目的としている。
本発明の一態様によれば、プロセッサに代わってデバイスへMMIO方式でのアクセスを行うデバイスアクセス装置であって、前記プロセッサの指示に基づいて、前記デバイスへ命令セットを発行し、前記命令セットの発行が完了すると、前記プロセッサへ前記命令セットの完了を通知する制御手段、を備えるデバイスアクセス装置である。
本発明の一態様によれば、プロセッサと、メインメモリと、上記のデバイスアクセス装置と、を備える演算装置である。
本発明の一態様によれば、プロセッサと、メインメモリと、上記のデバイスアクセス装置と、前記デバイスアクセス装置がアクセスするデバイスと、を備えるデバイスアクセスシステムである。
本発明の一態様によれば、プロセッサに代わってデバイスへMMIO方式でのアクセスを行うデバイスアクセス方法であって、前記プロセッサの指示に基づいて、前記デバイスへ命令セットを発行し、前記命令セットの発行が完了すると、前記プロセッサへ前記命令セットの完了を通知する、デバイスアクセス方法である。
本発明のデバイスアクセス装置によれば、プロセッサのアドレス空間における同一のアドレスに、複数のデバイスを切り替えて割り当てる必要が無い。
本発明の一実施形態によるデバイスアクセスシステムの概要を示す図である。 本発明の一実施形態によるデバイスアクセスシステムの構成例を示す図である。 本発明の一実施形態によるデバイスアクセスシステムの要部の構成例を示す図である。 本発明の一実施形態によるアドレス変換の一例を示す図である。 本発明の一実施形態によるメモリの区画の一例を示す図である。 本発明の一実施形態によるデバイスアクセス部の構成例を示す図である。 本発明の一実施形態によるアクセス指示データのデータ構造の一例を示す図である。 本発明の一実施形態によるデバイスアクセスの動作例を示す図である。 一般的なデバイスアクセスの動作例を示す図である。 本発明の一実施形態によるデバイスアクセス装置の最小構成を示す図である。
<実施形態>
以下、本発明の一実施形態によるデバイスアクセスシステムについて図1〜図10を参照して説明する。
図1は、本発明の一実施形態によるデバイスアクセスシステムの概要を示す図である。
図1に示すようにデバイスアクセスシステム100Aは、プロセッサ(Processor)1Aと、デバイスアクセス部2Aと、PCIeSW(Peripheral Component Interconnect Express Switch)3Aと、PCIeで接続されるデバイスであるPCIeデバイス(PCIe device)30A〜33Aと、を含む。本実施形態に係るデバイスアクセスシステム100Aは、一般的なデバイスアクセスシステムと比較して、デバイスアクセス部2Aを備える点で異なる。一般的なデバイスアクセスシステムでは、プロセッサ1Aが備えるプロセッサコアが、PCIeSW3Aを経由してPCIeデバイス30A〜33Aにアクセスするが、デバイスアクセスシステム100Aでは、デバイスアクセス部2Aが代行して、PCIeデバイス30A〜33Aへのアクセスを行う。
デバイスアクセス部2Aは、その内部にPCIeデバイス30A〜33Aへのアクセスのためのアクセス命令セットを備える。命令セットは、プロセッサ1AのプロセッサコアがPCIeデバイス30A〜33Aにアクセスする際に発行するアクセス命令群と同じものであり、デバイスアクセス部2Aは、プロセッサ1Aに代わって、任意の命令セットを実行することができる。プロセッサ1Aは、デバイスアクセス部2Aに対し、アクセス対象のデバイスの識別情報とある命令セットの実行を指示し、デバイスアクセス部2Aは、プロセッサ1Aから指定された命令セットを実行して、アクセス対象のデバイスに対してアクセスする。デバイスアクセス部2Aは、必要に応じてアクセスの結果を図示しないメインメモリに格納し、割り込み等によりプロセッサ1Aにアクセス完了を通知する。
(構成)
次にFPGA(field-programmable gate array)を用いて図1のデバイスアクセス部2Aを構成する例を用いて、本実施形態のデバイスアクセス方法についてさらに詳しく説明する。
図2は、本発明の一実施形態によるデバイスアクセスシステムの構成例を示す図である。
図2に示すように演算装置10は、プロセッサ(Processor)1と、FPGA(デバイスアクセス部)2と、PCIeSW3と、RAM(Random Access Memory)4と、を備える。また、演算装置10は、PCIeSW3を介してPCIeデバイス(PCIe device)30〜33と接続されている。
FPGA2は、図1のデバイスアクセス部2Aを構成する。つまり、FPGA2は、プロセッサ1の指示に基づいて、プロセッサ1の代わりにMMIO方式でPCIeデバイス31等にアクセスする機能を有している。FPGA2がMMIOアクセスを行うと、PCIeSW3を介してPCIeデバイス31等にアクセスが行われる。
PCIeSW3は、プロセッサ1やFPGA2とデバイス群、つまりPCIeデバイス(PCIe device)30〜33を接続する。PCIeSW3に接続されるPCIeデバイスは、例えば、NIC(Network Interface Card)やHBA(host bus adapter)などである。
PCIeSW3は64bitのアドレス空間を扱うことができ、任意のアドレスに配下のPCIeデバイス30〜33を割り当て、MMIOアクセスを行う。図2に示す構成例では、PCIeデバイス30〜33はそれぞれ1GBのリソース(レジスタ又は内部RAM)を有する。例えば、PCIeデバイス30にアドレス0x00000010_00000000〜0x00000010_3FFFFFFFを割り当て、PCIeデバイス31に0x00000010_40000000〜0x00000010_7FFFFFFFを割り当て、PCIeデバイス32に0x00000010_80000000〜0x00000010_BFFFFFFFを割り当て、PCIeデバイス33に0x00000010_C0000000-0x00000010_FFFFFFFFを割り当てる。PCIeSW3に対してMMIO方式によるアクセスが発行された場合、PCIeSW3は、発行されたアドレスに該当するPCIeデバイスへ、アクセスを振り分ける。
図3は、本発明の一実施形態によるデバイスアクセスシステムの要部の構成例を示す図である。
図3に示すようにプロセッサ1は、プロセッサコア(Processor Core)11と、PCIeコントローラ(PCIe Controller)12,13と、メモリコントローラ(Memory Controller)14と、割り込みコントローラ(Programmable interrupt controller)16と、を備える。プロセッサコア11、PCIeコントローラ12、PCIeコントローラ13、メモリコントローラ14、割り込みコントローラ16は、内部バス15で接続されている。
プロセッサコア11は、32bitアーキテクチャのプロセッサである。プロセッサコア11が、扱うことができるアドレス空間は、0x00000000〜0xFFFFFFFFの232bytes、つまり4GBである。内部バス15のアドレス幅は、40bitまで拡張されていて、0x00_00000000〜0xFF_FFFFFFFFの240bytes、つまり1024GBまで扱うことができる。
プロセッサコア11内部の32bitのアドレスから、内部バス15で扱う40bitアドレスへは、プロセッサコア11が備えるTLB(translation lookaside buffer)によって任意に変換される。これにより、図4に示すようにプロセッサコア11が扱える32bitのアドレス空間を、40bitのアドレス空間の一部を割り当てることができる。
例えば、図4の例では、32bitアドレス空間における0x00000000〜0x7FFFFFFFの2GBにRAM4を割り当て、0x80000000〜0xBFFFFFFFの1GBにPCIeデバイス30を割り当て、0xF0000000〜0xF000000FにFPGA2(デバイスアクセス部2A)を割り当てている。図4の例ように32bitのアドレス空間に割り当てた場合、残りのアドレス空間(図の「未使用」)は1GBを切る。このため、同時に割り当てることができるPCIeデバイスは、PCIeデバイス30の1つのみである。一般的なデバイスアクセス制御では、PCIeデバイス31にアクセスする場合、0x80000000〜0xBFFFFFFFに割り当てるデバイスをPCIeデバイス30からPCIeデバイス31に切り替えてアクセスを行う。これに対し、本実施形態では、デバイスの切り替えを行うことなく、FPGA2を介して、PCIeデバイス31にアクセスすることが可能である。同様にPCIeデバイス32〜33についても、FPGA2を介して、アクセスすることが可能である。また、FPGA2を介して、PCIeデバイス31〜33に並行して(同時に)アクセスすることも可能である。
図3に戻る。PCIeコントローラ12には、FPGA2が接続されている。PCIeコントローラ12は、プロセッサコア11とFPGA2の通信を仲介する。例えば、プロセッサコア11がFPGA2に割り当てられたアドレスに向けてMMIOアクセス命令を発行すると、PCIeコントローラ12はそのアクセス命令をFPGA2へ伝える。これにより、プロセッサコア11は、FPGA2の動作を制御することができる。また、FPGA2もMMIOアクセス命令を発行することができる。例えば、アクセス命令の発行先がプロセッサ1に割り当てられたアドレスだった場合、プロセッサ1内のPCIeコントローラ12は、そのアクセス命令を内部アドレスへ変換し、内部バス15経由でその内部アドレスが割り当てられたプロセッサ1内部のモジュールにアクセスする。これにより、FPGA2は、PCIeコントローラ12を経由して、プロセッサ1内部の割り込みコントローラ(PIC)16やメモリコントローラ14を制御することができる。例えば、FPGA2は、PCIeコントローラ12を経由してメモリコントローラ14を制御することによってRAM4にデータをRead、Witeすることができる。
PCIeコントローラ13にはPCIeSW3が接続される。例えば、プロセッサコア11は、PCIeデバイス30にアクセスする場合、FPGA2を介さずに直接PCIeSW3を経由して、PCIeデバイス30にMMIOアクセスする。このアクセス方法は、デバイスへの一般的なMMIOアクセス方法である。
メモリコントローラ14にはRAM4が接続される。ここで、図5を参照する。図5にRAM4におけるメモリ区画の一例を示す。図5に示すように、RAM4は、演算装置10が実行するプログラムを格納するプログラムコード領域、プログラムの動作に必要なデータを格納する制御データ領域、FPGA2とプロセッサ1の間の通信に使用するデバイスアクセス部使用領域に分割され、それぞれのアドレス・サイズはあらかじめ規定されている。デバイスアクセス部使用領域は、さらにプロセッサ1起因で発行されるアクセスで使用されるデータを格納するデバイスアクセス部使用領域1と、PCIeデバイス起因で実行されるアクセスで使用されるデータを格納するデバイスアクセス部使用領域2に分割されている。
さらにデバイスアクセス部使用領域1は、FPGA Entry 0〜FPGA Entry nに分割され、それぞれにはエントリ毎のデータが格納される。
同様にデバイスアクセス部使用領域2は、Processor Entry 0〜Processor Entry nに分割され、それぞれにはエントリ毎のデータが格納される。
図3に戻る。割り込みコントローラ16は、割り込みを発生させるモジュールである。割り込みコントローラ16の所定のエリアにデータを書き込むことでプロセッサコア11に割り込みを発生させることができる。
次に図6を参照して、FPGA2(デバイスアクセス部2A)の構成について説明する。
図6は、本発明の一実施形態によるデバイスアクセス部の構成例を示す図である。
図6に示すように、FPGA2は、PCIeインタフェース20A、20Bと、PCIeアクセス制御回路21と、メモリアドレス生成回路22と、命令セット回路23と、デバイスアドレス生成回路24と、を備える。
PCIeインタフェース20Aは、プロセッサ1接続用のインタフェースである。FPGA2は、PCIeインタフェース20Aを介してプロセッサ1と接続されている。
PCIeインタフェース20Bは、PCIeSW3接続用のインタフェースである。FPGA2は、PCIeインタフェース20Bを介してPCIeSW3と接続されている。
命令セット回路23は、PCIeアクセスの命令セットを実行するための回路である。命令セット回路23は、命令セット回路00〜命令セット回路XXを含む。命令セット回路00〜命令セット回路XXのそれぞれは、プロセッサコア11がPCIeデバイス31等へ発行し得る各命令セット(命令群)に対応する。
メモリアドレス生成回路22は、RAM4へアクセスするアドレスを生成する回路である。メモリアドレス生成回路22は、RAMアドレス生成回路00〜RAMアドレス生成回路XXを含む。RAMアドレス生成回路00〜RAMアドレス生成回路XXのそれぞれは、図5に例示したFPGA Entry 0〜FPGA Entry n、Processor Entry 0〜Processor Entry nの何れかのアドレスを生成する。
デバイスアドレス生成回路24は、PCIeデバイス31〜33へアクセスするアドレスを生成する回路である。デバイスアドレス生成回路24は、PCIeDevアドレス生成回路00〜PCIeDevアドレス生成回路XXを含む。PCIeDevアドレス生成回路00〜PCIeDevアドレス生成回路XXのそれぞれは、FPGA2(デバイスアクセス部2A)に接続されるPCIeデバイス31等の何れかのアドレスを生成する。
デバイスアクセス部2Aを実現するFPGA2は、64bitアーキテクチャで設計され、最大で0x00000000_00000000〜0xFFFFFFFF_FFFFFFFFの264bytesのアドレス空間を扱うことができる。
PCIeアクセス制御回路21は、デバイスアクセス部2Aの動作を制御する。例えば、PCIeアクセス制御回路21は、PCIeデバイス31等へのアクセス開始を指示するためのアクセス指示データを書き込むための命令アドレスを有し、これを0x00000010_F0000000に割り当てる。プロセッサコア11は、0xF0000000に対してアクセスを発行し、プロセッサコア11が備えるTLBによって、0x10_F0000000にアドレスが変換されてFPGA2にアクセスする。このアドレス0x10_F0000000に対して予め定めた書式に従った4byteのアクセス指示データを書き込むと、FPGA2は、このアクセス指示データにおいて指定された命令セットを実行する命令セット回路N(Nは00〜XXの何れか)を動作させる。
ここで、図7を参照し、アクセス指示データについて説明する。
図7は、本発明の一実施形態によるアクセス指示データのデータ構造の一例を示す図である。
図示するようにアクセス指示データは4byteで構成される。4byteのうちの先頭から3byteに値が設定され、4byte目は予備の領域である。
先頭のByte0には、Commandデータが設定される。Commandデータには、どの命令セットを実行するかを指定する値が設定される。PCIeアクセス制御回路21は、命令セット回路00〜命令セット回路XXの中から、Byte0に設定された値に対応する回路を起動する。
次のByte1には、Deviceデータが設定される。Deviceデータにはアクセス命令の発行先を指定する。具体的には、Byte1には、PCIeSW3に接続されたPCIeデバイス31〜33のうち、どのデバイスかを指定するデバイス番号が設定される。図2に示すようにPCIeデバイス30〜33毎に、固有のアドレスが割り当てられるため、PCIeデバイスの識別番号であるDevice番号が分かれば、対象のPCIeデバイスにアクセスするためのアドレスを特定することが出来る。デバイスアドレス生成回路24は、このDevice番号に基づいてMMIO方式でのアクセスに用いるアクセス先のアドレスを生成する。
次のByte2には、EntryNumberデータが設定される。EntryNumberデータには、アクセスに必要なデータを格納するエリアのエントリ番号を指定する。図5を参照して説明したように、デバイスアクセス部使用領域1、2は、エントリごとに使用エリアが定められているため、エントリ番号を元に命令回路Nが使用するエリアのRAM4上のアドレスを特定することが出来る。メモリアドレス生成回路22は、このエントリ番号に基づいてRAM4上のアドレスを生成する。
図5を参照して説明したようにRAM4のデバイスアクセス部使用領域は、PCIeデバイスからの割り込みをトリガーにFPGA2が実行を開始する場合に使用するデバイスアクセス部使用領域1(FPGA Entry)と、プロセッサ1の要求で実行される命令セットで使用するデバイスアクセス部使用領域2(Processor Entry)と、に分かれる。
プロセッサ1起因でアクセスを開始する場合、命令セットで使用するデータ(WriteデータやReadデータとの比較値)があれば、プロセッサコア11は、デバイスアクセス部使用領域2のProcessor Entry 0〜Processor Entry nの何れかのエントリに予めデータを格納してから、そのエントリ番号(Processor Entry 0に書き込んだのであればエントリ番号は“0”)をアクセス指示データのByte2に設定し、命令セットをByte0に設定し、アクセス先のDevice番号をByte1に設定してFPGA2のアドレス(0x10_F0000000)にアクセス指示データを書き込む。
なお、アクセスに必要なデータは、RAM4のデバイスアクセス部使用領域1に書き込んで書き込んだエントリのエントリ番号を通知するほかに、直接、FPGA2にMMIOアクセスにより書き込む方法でもよい。
プロセッサ1起因のアクセスにおいて、4byteのアクセス指示データが0x10_F0000000に書き込まれると、PCIeアクセス制御回路21は、命令セット回路00〜命令セット回路XXの中から、先頭のByte0に設定されたCommandデータに応じた回路を起動する。また、PCIeアクセス制御回路21は、デバイスアドレス生成回路24にDevice番号を通知する。デバイスアドレス生成回路24は、Device番号に基づいて、命令セット回路23が発行するアクセスの発行先のアドレスを生成する。また、PCIeアクセス制御回路21は、メモリアドレス生成回路22にエントリ番号を通知する。メモリアドレス生成回路22は、エントリ番号に基づいて、命令セット回路23が使用するデータが格納されたRAM4のアドレスを生成する。PCIeアクセス制御回路21は、生成されたアドレスに基づいて、PCIeインタフェース20Aを介して、RAM4から命令セットで使用するデータを読み出して、起動した命令セット回路00〜XXの何れかへ渡す。起動された命令セット回路23は、デバイスアドレス生成回路24が生成したアドレスに対し、MMIOアクセスを発行する。
PCIeデバイス31等の割り込みによるPCIeデバイス起因のアクセスの場合、PCIeアクセス制御回路21は、命令セット回路00〜命令セット回路XXの中から、割り込みに伴って必要となる処理の命令セットを実行する命令セット回路を起動する。一般的に割り込みが発生した場合、割り込み要因を読み出し、割り込みをクリアする。PCIeアクセス制御回路21によって起動された命令セット回路は、読みだした割り込み要因をデバイスアクセス部使用領域1のFPGA Entry 0〜FPGA Entry nの何れかに格納して、MSIによってプロセッサ1に通知する。
(動作)
図8は、本発明の一実施形態によるデバイスアクセスの動作例を示す図である。
プロセッサ1が、PCIeデバイス31に対し、複数の命令を含む命令セットαを発行するとする。例えば、プロセッサ1は、RAM4のデバイスアクセス部使用領域2にWriteするデータを格納し(S1)、データを格納したデバイスアクセス部使用領域2のエントリ番号、アクセス先のPCIeデバイス31のデバイス番号、命令セットαを指定して、4byteのアクセス指示データを作成する。プロセッサ1は、アクセス指示データを0x10_F0000000に書き込む。これがFPGA2へのデバイスアクセス指示である(S2)。
デバイスアクセス指示を受けたFPGA2では、PCIeアクセス制御回路21が、命令セットα(この例では、PCIeデバイスに対しRead、Write、Readを実行する)に対応する命令セット回路(この例では命令セット回路00とする。命令セット回路00はアドレス生成回路22のRAMアドレス生成回路00と、アドレス生成回路24のPCIeDevアドレス生成回路00を使用する。)を起動する。また、命令セット回路00は、エントリ番号に基づいてメモリアドレス生成回路22(RAMアドレス生成回路00)が生成したWriteするデータが格納されたアドレスからデータを取得する。また、命令セット回路00は、デバイスアドレス生成回路24(PCIeDevアドレス生成回路00)がDevice番号に基づいて生成したアクセス先のアドレスに対して、PCIeSW3を介して、PCIeデバイス31へのアクセスを開始する。
ここで、命令セット回路00は、アクセス先のデバイス(今回の例では、PCIeデバイス31)へ“Read request”を発行し、アクセス先のデバイスから“Read reply”が返ってくると、アクセス先のデバイスへ“Write request”を発行し、続いて、アクセス先のデバイスへ“Read request”を発行して、アクセス先のデバイスからの“Read reply”を受信し、さらにアクセス先のデバイスで読み取ったデータをRAM4に格納し、命令セットの実行完了をプロセッサへ通知するように構成されている。つまり、命令セット回路00は、プロセッサ1の介在を必要としない一連の処理を実行するように構成されている。命令セット回路00の起動後は、命令セット回路00が主体的にこれらの処理を行う。
命令セット回路00は、“Read request”の発行(S3)、“Read reply”の受信(S4)、“Write request”の発行(S5)、“Read request”の発行(S6)、“Read reply”の受信(S7)を順次行う。
次に命令セット回路00は、RAM4へデータを格納する。また、命令セット回路00は、メモリコントローラ14へ“Read data Write”を発行する(S8)。これにより、RAM4の当該エントリにPCIeデバイス31からReadしたデータが格納される。
次に命令セット回路00は、MSIを使用してプロセッサ1に命令セットαの完了、データが格納されたエントリ番号を通知する(S9)。
比較の為、図9に一般的なデバイスアクセスの動作例を示す。
デバイスアクセス部2Aを有しない演算装置では、命令セットαをPCIeデバイス31へ発行する場合、プロセッサ1が、PCIeSW3を介して、PCIeデバイス31へ一連の命令セット(S3´〜S7´)を発行する。図9の方法の場合、S3´〜S4´の期間、S6´〜S7´の期間でプロセッサ1が待ち状態となり、処理が滞る可能性がある。
これに対し、本実施形態に係る演算装置10では、図8に例示するようにS2〜S9の期間は、他の処理を実行することができる。
また、図8の例では、PCIeデバイス31のみにアクセスする例を挙げたが、プロセッサ1は、FPGA2を使用して、PCIeデバイス31へのアクセスと並行して、PCIeデバイス32、33へのアクセスを実行することができる。この場合、プロセッサ1は、PCIeデバイス31へのアクセス指示データを0x10_F0000000に書き込み、続いて、PCIeデバイス32、33へのアクセス指示データを0x10_F0000000に順次書き込む。FPGA2では、PCIeアクセス制御回路21が、0x10_F0000000に書き込まれたアクセス指示データを順次処理する。これにより、一般的なデバイスアクセスでは、例えば、0x10_00000000(図4)に割り当てるデバイスをPCIeデバイス30〜33の間で次々と切り替えてこれらのデバイスにアクセスしなければならないところ、FPGA2を使用することにより、デバイスの切り替えを行うことなく、PCIeデバイス30〜33へ並行してアクセスを行うことができる。従って、本実施形態によれば、1つのデバイスにアクセスする間、他のデバイスへのアクセスが不可能となり、演算装置10のパフォーマンスが低下するという問題が生じることは無い。
上記説明したように、本実施形態のデバイスアクセス部2A(FPGA2)によれば、プロセッサのアドレス空間の所定のアドレスにデバイスアクセス部2Aを割り当てる。これにより、PCIeデバイス毎に個別に割り当てていたアドレスを削減し、限られたアドレス空間で複数のPCIeデバイスに対しMMIOアクセスすることが可能となる。例えば、図4に示す例では、一般的なデバイスアクセスでは、アドレス空間が不足し、PCIeデバイスを1つしか割り当てることができない。その為、複数のデバイスにアクセスする場合、同じアドレスに割り当てるPCIeデバイスを切り替えて使用する排他制御が必要であった。本実施形態では、デバイスアクセス部2AがPCIeデバイスへのアクセスを代行するため、プロセッサ1のアドレス空間にアクセス先のPCIeデバイスを割り当てる必要がなくなる。その為、排他制御を行わずに同時に複数のPCIeデバイスへアクセスすることができ、パフォーマンスの低下を防ぐことができる。
さらに、図9を用いて説明したように、PCIeデバイス31へのReadアクセスを行った場合には、Replyを待つ必要があり、この間、プロセッサ1は処理を実行できず性能が低下する。これに対し、本実施形態によれば、Reply待ちは、デバイスアクセス部2Aが代行するため、プロセッサ1はPCIeデバイス31へのアクセス中にもデバイスの応答を待つ必要が無く、この間に他の処理を実行することができる。つまり、プロセッサ1からデバイスアクセス部2Aへ命令セットをオフロードすることにより、プロセッサ1の待ち時間を削減して、プロセッサ1の性能を向上することができる。
以上により、パフォーマンス悪化を抑えつつ、デバイスへのアクセスのために必要となるアドレス空間を削減することが可能となる。
図10は、本発明の一実施形態によるデバイスアクセス装置の最小構成を示す図である。
デバイスアクセス装置40は、少なくとも制御手段41を備えている。
デバイスアクセス装置40は、プロセッサに代わってMMIO方式でデバイスへのアクセスを行う。制御手段41は、プロセッサの指示に基づいて、アクセス対象のデバイスへの命令セットを発行し、前記命令セットの発行が完了すると、プロセッサへ命令セットの発行完了を通知する。
なお、デバイスアクセス装置40は、実施形態のFPGA2(デバイスアクセス部2A)に対応し、制御手段41は、PCIeアクセス制御回路21に対応する。
なお、デバイスアクセス部2Aの各手段による各処理の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムを、プロセッサ1Aが読み出して実行することによって、上記処理が行われてもよい。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、CD−ROM、DVD−ROM、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしてもよい。また、上記プログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。
その他、本発明の趣旨を逸脱しない範囲で、上記した実施の形態における構成要素を周知の構成要素に置き換えることは適宜可能である。また、この発明の技術範囲は上記の実施形態に限られるものではなく、本発明の趣旨を逸脱しない範囲において種々の変更を加えることが可能である。
100、100A・・・デバイスアクセスシステム
10・・・演算装置
1、1A・・・プロセッサ
11・・・プロセッサコア
12,13・・・PCIeコントローラ
14・・・メモリコントローラ
15・・・内部バス
16・・・割り込みコントローラ
2・・・FPGA(デバイスアクセス部)
2A・・・デバイスアクセス部
20A、20B・・・PCIeインタフェース
21・・・PCIeアクセス制御回路
22・・・メモリアドレス生成回路
23・・・命令セット回路
24・・・デバイスアドレス生成回路
3、3A・・・PCIeSW
30、31、32、33、30A、31A、32A、33A・・・PCIeデバイス
4・・・RAM
本発明の一態様によれば、プロセッサに代わってデバイスへMMIO方式でのアクセスを行うデバイスアクセス装置であって、前記プロセッサの指示に基づいて、前記デバイスへ命令セットを発行し、前記命令セットの発行が完了すると、前記プロセッサへ前記命令セットの完了を通知する制御手段、前記デバイスの識別情報に基づいて、アクセス先の前記デバイスのアドレスを生成するデバイスアドレス生成手段と、前記プロセッサが前記デバイスへ発行し得る命令セットと等しい命令セットを発行する命令セット回路と、を備え、前記制御手段は、前記プロセッサから前記デバイスの識別情報と、前記デバイスへ発行する命令セットを指定するコマンド情報とを取得し、前記デバイスアドレス生成手段は、取得された前記識別情報に基づいてアドレスを生成し、前記制御手段は、前記コマンド情報に対応する命令セットを発行する前記命令セット回路を起動し、生成された前記アドレスに対して前記命令セットを実行するデバイスアクセス装置である。
本発明の一態様によれば、プロセッサに代わってデバイスへMMIO方式でのアクセスを行うデバイスアクセス方法であって、前記プロセッサの指示に基づいて、前記デバイスへ命令セットを発行するステップと、前記命令セットの発行が完了すると、前記プロセッサへ前記命令セットの完了を通知するステップと、を有し、前記命令セットを発行するステップでは、前記プロセッサから前記デバイスの識別情報と、前記デバイスへ発行する命令セットを指定するコマンド情報とを取得し、取得された前記識別情報に基づいてアクセス先の前記デバイスのアドレスを生成し、前記プロセッサが前記デバイスへ発行し得る命令セットと等しい命令セットを発行する命令セット回路の中から前記コマンド情報に対応する命令セットを発行する前記命令セット回路を起動し、生成された前記アドレスに対して前記命令セットを実行するデバイスアクセス方法である。

Claims (8)

  1. プロセッサに代わってデバイスへMMIO方式でのアクセスを行うデバイスアクセス装置であって、
    前記プロセッサの指示に基づいて、前記デバイスへ命令セットを発行し、前記命令セットの発行が完了すると、前記プロセッサへ前記命令セットの完了を通知する制御手段、
    を備えるデバイスアクセス装置。
  2. 前記デバイスの識別情報に基づいて、アクセス先の前記デバイスのアドレスを生成するデバイスアドレス生成手段と、
    前記プロセッサが前記デバイスへ発行し得る命令セットと等しい命令セットを発行する命令セット回路と、
    を備え、
    前記制御手段は、前記プロセッサから前記デバイスの識別情報と、前記デバイスへ発行する命令セットを指定するコマンド情報とを取得し、
    前記デバイスアドレス生成手段は、取得された前記識別情報に基づいてアドレスを生成し、
    前記制御手段は、前記コマンド情報に対応する命令セットを発行する前記命令セット回路を起動し、生成された前記アドレスに対して前記命令セットを実行する、
    請求項1に記載のデバイスアクセス装置。
  3. 前記命令セット回路は、前記命令セットの実行が完了すると、前記命令セットの実行完了を前記プロセッサに通知する、
    請求項2に記載のデバイスアクセス装置。
  4. 前記デバイスへのアクセスに必要なデータを格納するメモリ領域のアドレスを生成する第1メモリアドレス生成手段、
    をさらに備え、
    前記第1メモリアドレス生成手段は、前記プロセッサから前記データを格納した前記メモリ領域のエントリ情報を取得し、前記エントリ情報に基づいてアドレスを生成し、
    前記命令セット回路は、前記メモリ領域における生成された前記アドレスから前記データを取得して、前記命令セットを実行する、
    請求項2又は請求項3に記載のデバイスアクセス装置。
  5. 前記命令セット回路は、前記デバイスから読み出したデータを取得し、該データをメインメモリへ格納する命令をメモリコントローラへ発行する、
    請求項2から請求項4の何れか1項に記載のデバイスアクセス装置。
  6. プロセッサと、
    メインメモリと、
    請求項1から請求項5の何れか1項に記載のデバイスアクセス装置と、
    を備える演算装置。
  7. プロセッサと、
    メインメモリと、
    請求項1から請求項5の何れか1項に記載のデバイスアクセス装置と、
    前記デバイスアクセス装置がアクセスするデバイスと、
    を備えるデバイスアクセスシステム。
  8. プロセッサに代わってデバイスへMMIO方式でのアクセスを行うデバイスアクセス方法であって、
    前記プロセッサの指示に基づいて、前記デバイスへ命令セットを発行し、
    前記命令セットの発行が完了すると、前記プロセッサへ前記命令セットの完了を通知する、
    デバイスアクセス方法。
JP2019233656A 2019-12-25 2019-12-25 デバイスアクセス装置、演算装置、デバイスアクセスシステム及びデバイスアクセス方法 Active JP6885627B1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019233656A JP6885627B1 (ja) 2019-12-25 2019-12-25 デバイスアクセス装置、演算装置、デバイスアクセスシステム及びデバイスアクセス方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019233656A JP6885627B1 (ja) 2019-12-25 2019-12-25 デバイスアクセス装置、演算装置、デバイスアクセスシステム及びデバイスアクセス方法

Publications (2)

Publication Number Publication Date
JP6885627B1 JP6885627B1 (ja) 2021-06-16
JP2021103387A true JP2021103387A (ja) 2021-07-15

Family

ID=76310152

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019233656A Active JP6885627B1 (ja) 2019-12-25 2019-12-25 デバイスアクセス装置、演算装置、デバイスアクセスシステム及びデバイスアクセス方法

Country Status (1)

Country Link
JP (1) JP6885627B1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002099498A (ja) * 2000-09-25 2002-04-05 Mitsubishi Electric Corp プログラム実行装置およびプログラム開発支援装置
JP2007233534A (ja) * 2006-02-28 2007-09-13 Toshiba Corp 情報処理装置およびメモリアドレス空間割り当て方法
JP2012212360A (ja) * 2011-03-31 2012-11-01 Nec Corp 入出力制御装置、コンピュータ、及び制御方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002099498A (ja) * 2000-09-25 2002-04-05 Mitsubishi Electric Corp プログラム実行装置およびプログラム開発支援装置
JP2007233534A (ja) * 2006-02-28 2007-09-13 Toshiba Corp 情報処理装置およびメモリアドレス空間割り当て方法
JP2012212360A (ja) * 2011-03-31 2012-11-01 Nec Corp 入出力制御装置、コンピュータ、及び制御方法

Also Published As

Publication number Publication date
JP6885627B1 (ja) 2021-06-16

Similar Documents

Publication Publication Date Title
US8151275B2 (en) Accessing copy information of MMIO register by guest OS in both active and inactive state of a designated logical processor corresponding to the guest OS
JP5783809B2 (ja) 情報処理装置、起動方法およびプログラム
JPS6122825B2 (ja)
KR100515229B1 (ko) 멀티프로세서 시스템에서 가상화된 물리적 메모리를관리하는 방법 및 시스템
US20110087836A1 (en) Storage unit and memory system
US8738890B2 (en) Coupled symbiotic operating system
JPH04246745A (ja) 情報処理装置及びその方法
CN112783600A (zh) 中断处理方法、中断管理器、电子设备、计算机可读介质
JP5466768B2 (ja) メモリ・アクセスを制御する装置およびコンピュータ
US20150268985A1 (en) Low Latency Data Delivery
WO2021055908A1 (en) Providing interrupts from an input-output memory management unit to guest operating systems
JP7470685B2 (ja) 集積回路中の算出ユニットをプログラムおよび制御すること
US9697123B2 (en) Information processing device, control method of information processing device and control program of information processing device
WO2008031678A1 (en) Dmac address translation miss handling mechanism
JP5131269B2 (ja) マルチプロセッシングシステム
US20180011636A1 (en) Information processing apparatus and method of accessing a memory
JP6885627B1 (ja) デバイスアクセス装置、演算装置、デバイスアクセスシステム及びデバイスアクセス方法
CN116107697B (zh) 一种不同操作系统之间互相通信的方法及系统
JP5334048B2 (ja) メモリ装置および計算機
JPH11232213A (ja) 入出力装置におけるデータ転送方式
JPH01145770A (ja) ベクトル処理装置
US11003474B2 (en) Semiconductor device for providing a virtualization technique
JP2007265143A (ja) 情報処理方法、情報処理システム、情報処理装置、マルチプロセッサ、情報処理プログラム及び情報処理プログラムを記憶したコンピュータ読み取り可能な記憶媒体
JP5949330B2 (ja) 情報処理装置、情報処理方法
JPH05250263A (ja) 仮想プロセッサ方式及び不揮発化記憶方式

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210202

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210309

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: 20210413

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210506

R150 Certificate of patent or registration of utility model

Ref document number: 6885627

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150