(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0012】
[第1の実施形態]
本発明の第1の実施形態を
図1乃至
図9を参照して説明する。
図1は、システム1の構成の一例を示すブロック図である。
図2は、プロセッサ21が有する構成の一例である。
図3、
図4は、DMAディスクリプタ312の構成の一例を示す図である。
図5は、一般的なシステムがDMA転送を行う際の動作の一例を示す図である。
図6は、本発明の第1の実施形態に係るシステム1が実行順序を保障してDMA転送を行う際の動作の一例を示す図である。
図7は、システム1の動作の一例を示すシーケンス図である。
図8、
図9は、一般的なシステムの動作の一例を示すシーケンス図である。
【0013】
本発明の第1の実施形態では、DMA(Direct Memory Access)転送を行うシステム1について説明する。本実施形態におけるシステム1のプロセッサ21は、DMA転送を行う場合、DMAディスクリプタ312の設定を行う。後述するように、本実施形態におけるDMAディスクリプタ312には、当該DMAディスクリプタ312に従ってDMA転送を実行したDMAエンジン311が次のDMA転送を行うまで待機する時間を示すライトリクエスト完了時間を含むことが出来る。DMAエンジン311は、DMAディスクリプタ312にライトリクエスト完了時間が含まれる場合、当該DMAディスクリプタ312に基づいてDMA転送を実行した後、ライトリクエスト完了時間分待機した後、次のDMA転送を実行する。
【0014】
図1を参照すると、本実施形態におけるシステム1(データ転送装置)は、ホストPC(Personal Computer)2と、アクセラレーションプロセッサ3と、を有している。また、ホストPC2とアクセラレーションプロセッサ3とは、通信ネットワーク4を介して互いに通信可能なよう接続されている。
【0015】
ホストPC2は、演算処理を実行するプロセッサ21(制御手段)と情報を格納するホストメモリ22とを有している。
【0016】
本実施形態におけるプロセッサ21は、
図2で示すように、DMAディスクリプタ設定手段211を有している。DMAディスクリプタ設定手段211は、図示しない記憶装置に格納されたプログラムをプロセッサ21が実行することで実現される。
【0017】
DMAディスクリプタ設定手段211は、DMA転送(データ転送)を実行する場合に後述するDMAディスクリプタ312(転送情報)の設定を行う。例えば、DMAディスクリプタ設定手段211は、
図3、
図4で示すようなDMAディスクリプタ312の設定を行う。
【0018】
図3を参照すると、DMAディスクリプタ設定手段211は、例えば、ライトデータや転送元アドレス、転送先アドレス、転送長、転送リクエストなどの情報を含むDMAディスクリプタ312の設定を行う。
【0019】
また、
図4を参照すると、DMAディスクリプタ設定手段211は、DMA転送を実行する際の転送元アドレス(転送元)と転送先アドレス(転送先)が所定の条件を満たす場合に、上記構成に追加してライトリクエスト完了時間有効とライトリクエスト完了時間との項目を含むDMAディスクリプタ312の設定を行う。
【0020】
例えば、DMAディスクリプタ設定手段211は、転送元アドレス及び転送先アドレスが予め定められた範囲内に存在し、かつ、先行のDMA転送の転送先アドレスが後続の転送元アドレスに含まれる場合に、先行のDMA転送を行うためのDMAディスクリプタ312を
図4で示すよう設定する。換言すると、DMAディスクリプタ設定手段211は、データの転送が固定時間内に完了することが保障されているアドレス空間に対するDMA転送を行う場合であって、実行順序の保障を行う場合に、
図4で示すようなDMAディスクリプタ312の設定を行う。
【0021】
また、DMAディスクリプタ設定手段211は、転送元アドレス及び転送先アドレスに基づいて、実行順序の保証を行うことが必要となる一連のDMA転送であると判断される場合に、当該一連のDMA転送を同一のDMAエンジン311が行うよう、同一のDMAディスクリプタ312に必要な設定を行う。例えば、DMAディスクリプタ設定手段211は、実行順序を保障したDMA転送を行わせる場合、同一のDMAディスクリプタ312に対して、エントリnの設定を行った後、エントリn+1の設定を行う。なお、nは任意の値となる。
【0022】
このように、DMAディスクリプタ設定手段211は、転送元アドレス及び転送先アドレスに基づいて、実行順序の保証を行うか否かを決定する。例えば、DMAディスクリプタ設定手段211は、先行のDMA転送の転送先アドレスが(先行のDMA転送から所定時間以内の)後続の転送元アドレスに含まれる場合などDMA転送間のアドレス競合が生じている場合に、実行順序の保証を行うことが必要であると判断する。
【0023】
なお、ライトリクエスト完了時間有効の項目は、DMA転送を行った後、次のDMA転送を行うまで所定時間待機するか否かを示している。DMAディスクリプタ312にライトリクエスト完了時間有効が設定されている場合、DMAエンジン311は、当該DMAディスクリプタ312に基づいてDMA転送を行った後、所定時間待機して、次のDMA転送を行うことになる。一方、DMAディスクリプタ312にライトリクエスト完了時間有効が設定されていない場合、DMAエンジン311は、DMA転送とDMA転送との間に待機することなくDMA転送を実行する。また、ライトリクエスト完了時間は、DMA転送を実行した後、次のDMA転送を実行するまでの待機時間を示している。ライトリクエスト完了時間は、例えば、転送元アドレスから転送先アドレスまでデータの転送を行う際の、データの転送が完了するまでに必要な時間に基づいて予め定められている。
【0024】
アクセラレーションプロセッサ3は、ホストPC2のプロセッサ21により設定されたDMAディスクリプタ312に基づいて、プロセッサ21を介さずにメモリ・メモリ間、レジスタ・メモリ間、レジスタ・レジスタ間などのDMA転送を実行する。つまり、アクセラレーションプロセッサ3は、DMAディスクリプタ312に基づいて、ホストメモリ22とメモリ33の間やレジスタ321の間、ホストメモリ22やメモリ33とレジスタ321の間のデータ転送を実行する。
【0025】
図1を参照すると、アクセラレーションプロセッサ3は、DMA転送を実行するDMAユニット31と、複数のコア32と、メモリ33と、を有している。
図1で示すように、DMAユニット31とコア32、コア32とメモリ33、コア32と別のコア32、メモリ33とDMAユニット31とは、それぞれ、互いに通信可能なよう接続されている。
【0026】
DMAユニット31は、複数のDMAエンジン311(転送実行手段)と、複数のDMAディスクリプタ312と、を有している。DMAユニット31は、複数のDMAエンジン311と複数のDMAディスクリプタ312とにより、複数のDMA転送を並列して処理することが出来る。
【0027】
DMAエンジン311は、DMAディスクリプタ312に基づいて、DMA転送を実行する。また、DMAディスクリプタ312にライトリクエスト完了時間が含まれる場合、DMAエンジン311は、当該DMAディスクリプタ312に基づいてDMA転送を行った後、ライトリクエスト完了時間分待機して、次のDMA転送を行う。
【0028】
DMAディスクリプタ312は、DMA転送を実行する際の転送情報を示している。上述したように、DMAディスクリプタ312には、ライトデータと、転送先アドレスと、転送元アドレスと、転送リクエストと、転送長と、が含まれている(
図3参照)。また、DMAディスクリプタ312には、ライトリクエスト完了時間有効(待機情報)と、ライトリクエスト完了時間(待機時間情報)と、を含むことが出来る(
図4参照)。
【0029】
DMAディスクリプタ312は、上述したように、プロセッサ21のDMAディスクリプタ設定手段211により設定される。また、DMAディスクリプタ312は、DMAエンジン311により参照される。
【0030】
コア32は、アドレスマップされたレジスタ321と、演算器322と、を有する。レジスタ321へのアクセスパスは2種類存在し、ホストPC2からのアクセスパスとコア32内に有する演算器322からのアクセスパスとを含んでいる。
【0031】
メモリ33は、RAM(Random Access Memory)などの記憶装置である。メモリ33は、DMR転送などの際に利用される。
【0032】
システム1は、例えば、上記のような構成を有している。
【0033】
なお、上述したシステム1では、コア32が有するレジスタ321はDMA転送可能なメモリアドレス空間にマッピングされているものとする。また、DMAエンジン311からレジスタ321へのアクセスなど転送元アドレスと転送先アドレスが予め定められた範囲内の場合には、固定時間内に処理が完了するものとする。
【0034】
また、DMAディスクリプタ312に設定された順番にDMA転送が行われるとする。一方で、複数のDMAエンジン311により複数のDMAディスクリプタ312が並列して処理されるため、実行順序は保障されないものとする。また、同一のDMAディスクリプタ312を用いたDMA転送であっても、2つのDMA転送間でアドレス競合が存在する場合、原則として、実行順序は保障されないものとする。
【0035】
本実施形態におけるシステム1は、上記のようなライトリクエスト完了時間などを含むDMAディスクリプタ312を設定することで、同一のDMAディスクリプタ312を用いたDMA転送において、実行順序を保障することが出来ることになる。
【0036】
次に、
図5及び
図6を参照して、一般的なシステム及び本実施形態で説明するシステム1が同一のDMAディスクリプタ312を用いたDMA転送を行う場合の動作の一例について説明する。
【0037】
図5及び
図6では、先行のDMA転送がアドレス「0x1000」からアドレス「0x2000」にデータの転送を行った後、後続のDMA転送がアドレス「0x2000」からアドレス「0x3000」にデータの転送を行う場合の一例を示している。
【0038】
図5を参照すると、一般的なシステムの場合、アドレス「0x2000」に対するWrite処理が完了する前に、後続のDMA転送によるアドレス「0x2000」からのRead処理が開始される。そのため、後続のDMA転送は、先行のDMA転送のデータを反映したデータを読み込むことが出来ないおそれがある。このように、一般的なシステムにおいては、2つのDMA転送間でデータ転送を確実に保障することが出来なかった。
【0039】
一方で、
図6を参照すると、先行のDMAディスクリプタ312には、ライトリクエスト完了時間有効を示す「0x1」と、ライトリクエスト完了時間「0x100」と、が含まれている。そのため、
図6の場合、DMMエンジン311は、先行のDMA転送を実行した後、ライトリクエスト完了時間分待機して、後続のDMA転送を実行することになる。従って、
図6で示すように、先行のDMA転送によるアドレス「0x2000」に対するWrite処理が完了した後に、後続のDMA転送によるアドレス「0x2000」からのRead処理を開始することになる。このように、システム1においては、2つのDMA転送間でデータ転送を確実に保障することが出来ることが分かる。
【0040】
続いて、
図7を参照して、システム1の動作の一例について説明する。
図7においては、実行順序を保障したい2つのDMA転送を行う場合について説明する。
【0041】
図7を参照すると、プロセッサ21のDMAディスクリプタ設定手段211は、同一のDMAディスクリプタ312に対して、必要な設定を行う。具体的には、DMAディスクリプタ設定手段211は、先行のDMA転送を指示する設定を行う(ステップS101)とともに、後続のDMA転送を指示する設定を行う(ステップS102)。なお、DMAディスクリプタ設定手段211は、先行の設定を行う際に、ライトリクエスト完了時間有効とライトリクエスト完了時間を含む設定を行う。
【0042】
アクセラレーションプロセッサ3のDMAエンジン311は、DMAディスクリプタ312が設定されると、先行のDMA転送を指示するDMAディスクリプタ312に基づいて、DMA転送を実行する(ステップS201)。DMA転送は、DMAリクエストを発行してDMAディスクリプタ312が示す転送元から転送先にデータの転送を行うことで行われる。そして、データの転送が完了した後。DMA転送は完了する。
【0043】
また、DMAエンジン311は、先行のDMA転送を指示するDMAディスクリプタ312にライトリクエスト完了時間が含まれるため、上記DMA転送を実行した後、ライトリクエスト完了時間が経過するまで待機する。そして、ライトリクエスト完了時間経過後、後続のDMA転送を指示するDMAディスクリプタ312を実行する(ステップS202)。
【0044】
このように、本実施形態におけるDMAエンジン311は、DMAディスクリプタ312にライトリクエスト完了時間が含まれる場合、ライトリクエスト完了時間分待機した後に、別のDMA転送を実行する。
【0045】
なお、2つのDMA転送の実行順序を保障する方法としては、本実施形態で説明した他に、ポーリングによる確認方法(
図8参照)とDMA転送完了割込みによる確認方法(
図9参照)とがある。
【0046】
図8で示すように、ポーリングによる確認方法の場合、プロセッサ21は、先行のDMA転送の終了を確認するためにポーリングを実施することになる。そのため、1つ目のDMA転送開始から2つ目のDMA転送開始までの間、DMA転送の完了確認のためにプロセッサ21は占有されることになる。
【0047】
また、
図9で示すように、DMA転送完了割込みによる確認方法の場合、DMA転送が完了するとアクセラレーションプロセッサ3からホストPC2にDMA転送完了割込みが通知される。ホストPC2では、DMA転送完了割込みを検知するとプロセッサ21が割込みハンドラのプロセスを起動する。その際、プロセッサ21は割込み検出前までに行っていたプロセスの退避や新規プロセスの起動を行う必要がある。そのため、DMA転送完了通知、ホストPCの割込み検出、後続のDMA転送開始までのレイテンシが悪くなる傾向にある。また、DMA転送完了割込みは、DMAエンジン311からDMA転送のリクエスト発行が完了したことを知ることができるだけであり情報量が少ないため、別途どのDMAディスクリプタ312が完了したか、データ転送は成功したかなど確認する必要がある。このように、DMA転送完了割込みによる確認方法であっても、レイテンシが悪くなるなどの問題が生じることになる。
【0048】
以上のように、ポーリングによる確認方法やDMA転送完了割込みによる確認方法の場合、プロセッサ21の占有時間が長くなる等の問題が生じることになる。一方で、
図7で示すように、本実施形態で説明したシステム1の場合、プロセッサ21の占有時間が必要以上に生じることなく、DMA転送の実行順序を保障することが出来る。つまり、プロセッサリソースを効率的に使用することが出来る。
【0049】
このように、本実施形態におけるシステム1は、ライトリクエスト完了時間を含むDMAディスクリプタ312とDMAエンジン311とを有している。このような構成により、DMAエンジン311は、DMAディスクリプタ312にライトリクエスト完了時間が含まれる場合、当該DMAディスクリプタ312に基づいてDMA転送を行った後、ライトリクエスト完了時間分待機して、次のDMA転送を行うことが出来る。その結果、先行のDMA転送が完了した後に、後続のDMA転送を実行することが出来る。これにより、アクセラレーションプロセッサ3が実行順序の保証を行うことが可能となり、その結果、プロセッサ21が待つ必要がなくなりプロセッサリソースを効率的に使用することが可能となる。
【0050】
なお、本実施形態においては、2つのDMA転送の実行順序を保障する場合について説明した。しかしながら、システム1が実行順序を保障するDMA転送は2つに限定されない。システム1は、3つ以上の複数のDMA転送の実行順序を保障するよう構成することが出来る。
【0051】
また、本実施形態においては、ソフトウェアがDMA転送間のアドレス競合など実行順序を保障すべきDMA転送であるか否かを判断する例について説明した。しかしながら、ハードウェアでDMA転送間のアドレスを比較するよう構成しても構わない。
【0052】
また、本実施形態においては、2つのDMA転送の実行順序を保障する場合、先行のDMAディスクリプタ312にライトリクエスト完了時間を含めるとした。しかしながら、後続のDMAディスクリプタ312にライトリクエスト完了時間に相当する構成を含めるよう構成しても構わない。この場合、DMAエンジン311は、後続のDMAディスクリプタ312に基づいてDMA転送を行おうとする際に、所定時間待機してからDMA転送を行うことになる。
【0053】
また、
図1で示すシステム1は、あくまで一例である。システム1は、複数のプロセッサ21を有していても構わないし、4つ以外のコア32を有していても構わない。また、複数のメモリ33を有していても構わない。また、DMAユニット31が有するDMAエンジン311の数やDMAディスクリプタ312の数は、特に限定されない。
【0054】
[第2の実施形態]
次に、
図10を参照して、第2の実施形態について説明する。第2の実施形態では、データ転送装置5の構成の概要について説明する。
【0055】
図10を参照すると、本実施形態におけるデータ転送装置5は、転送実行手段51を有している。
【0056】
転送実行手段51は、DMA転送を行うための転送情報が設定され、設定された転送情報に基づいてDMA転送を行う。転送実行手段51は、転送情報に基づいてDMA転送を行った後、所定時間待機した後に、別の転送情報に基づくDMA転送を行う。
【0057】
このように、本実施形態におけるデータ転送装置5は、転送実行手段51を有している。このような構成により、転送実行手段51は、設定された転送情報に基づいてDMA転送を行った後、所定時間待機した後に、別の転送情報に基づくDMA転送を行うことが出来る。その結果、先行のDMA転送が完了した後に、後続のDMA転送を実行することが出来る。つまり、容易な構成でDMA転送の実行順序を保障することが出来る。
【0058】
なお、上記データ転送装置5は、当該データ転送装置5に所定のプログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、データ転送装置に、DMA(Direct Memory Access)転送を行うための転送情報が設定され、設定された転送情報に基づいてDMA転送を行う転送実行手段を実現させ、転送実行手段は、転送情報に基づいてDMA転送を行った後、所定時間待機した後に、別の転送情報に基づくDMA転送を行うプログラムである。
【0059】
また、上述したデータ転送装置5が作動することにより実行されるデータ転送方法は、データ転送装置により行われるデータ転送方法であって、DMA(Direct Memory Access)転送を行うための転送情報が設定され、設定された転送情報に基づいてDMA転送を行い、転送情報に基づいてDMA転送を行った後、所定時間待機した後に、別の転送情報に基づくDMA転送を行う、という方法である。
【0060】
上述した構成を有する、プログラム、又は、データ転送方法、の発明であっても、上記データ転送装置5と同様の作用を有するために、上述した本発明の目的を達成することが出来る。
【0061】
<付記>
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるデータ転送装置などの概略を説明する。但し、本発明は、以下の構成に限定されない。
【0062】
(付記1)
DMA(Direct Memory Access)転送を行うための転送情報が設定され、設定された前記転送情報に基づいてDMA転送を行う転送実行手段を備え、
前記転送実行手段は、前記転送情報に基づいてDMA転送を行った後、所定時間待機した後に、別の前記転送情報に基づくDMA転送を行う
データ転送装置。
【0063】
(付記2)
付記1に記載のデータ転送装置であって、
前記転送実行手段は、次のDMA転送の実行を所定時間待機させるための待機情報を含む前記転送情報が設定されている場合に、前記転送情報に基づいてDMA転送を行った後、所定時間待機して、別の前記転送情報に基づくDMA転送を行う
データ転送装置。
【0064】
(付記3)
付記1又は2に記載のデータ転送装置であって、
前記転送実行手段は、次のDMA転送を実行するまでの待機時間を示す待機時間情報を含む前記転送情報が設定されている場合、前記転送情報に基づいてDMA転送を行った後、当該転送情報に含まれる前記待機時間情報が示す時間分待機して、別の前記転送情報に基づくDMA転送を行う
データ転送装置。
【0065】
(付記4)
付記3に記載のデータ転送装置であって、
前記待機時間情報は、DMA転送により実行される、転送元から転送先までのデータの転送が完了するまでに必要となる時間を示している
データ転送装置。
【0066】
(付記5)
付記1乃至4のいずれかに記載のデータ転送装置であって、
前記転送情報を設定する制御手段を有する
データ転送装置。
【0067】
(付記6)
付記5に記載のデータ転送装置であって、
前記制御手段は、DMA転送を実行する際の転送元及び転送先が所定の条件を満たす場合に、次のDMA転送を実行するまでの待機時間を示す待機時間情報を含む前記転送情報を設定する
データ転送装置。
【0068】
(付記7)
付記6に記載のデータ転送装置であって、
前記制御手段は、転送元及び転送先が予め定められた範囲内に存在し、かつ、先行のDMA転送の転送先が後続のDMA転送の転送元に含まれる場合に、先行のDMA転送を行うための前記転送情報に前記待機時間情報を含める
データ転送装置。
【0069】
(付記8)
付記5乃至7のいずれかに記載のデータ転送装置であって、
複数の転送実行手段を有しており、
前記制御手段は、転送元及び転送先に基づいて一連のDMA転送であると判断される場合に、一連のDMA転送を行うための複数の前記転送情報を同一の転送実行手段が実行するよう設定する
データ転送装置。
【0070】
(付記9)
データ転送装置により行われるデータ転送方法であって、
DMA(Direct Memory Access)転送を行うための転送情報が設定され、設定された前記転送情報に基づいてDMA転送を行い、
前記転送情報に基づいてDMA転送を行った後、所定時間待機した後に、別の前記転送情報に基づくDMA転送を行う
データ転送方法。
【0071】
(付記9−1)
付記9に記載のデータ転送方法であって、
次のDMA転送の実行を所定時間待機させるための待機情報を含む前記転送情報が設定されている場合に、前記転送情報に基づいてデータ転送を行った後、所定時間待機して、別の前記転送情報に基づくDMA転送を行う
データ転送方法。
【0072】
(付記9−2)
付記9又は付記9−1に記載のデータ転送方法であって、
次のDMA転送を実行するまでの待機時間を示す待機時間情報を含む前記転送情報が設定されている場合、前記転送情報に基づいてDMA転送を行った後、当該転送情報に含まれる前記待機時間情報が示す時間分待機して、別の前記転送情報に基づくDMA転送を行う
データ転送方法。
【0073】
(付記10)
データ転送装置に、
DMA(Direct Memory Access)転送を行うための転送情報が設定され、設定された前記転送情報に基づいてDMA転送を行う転送実行手段を実現させ、
前記転送実行手段は、前記転送情報に基づいてDMA転送を行った後、所定時間待機した後に、別の前記転送情報に基づくDMA転送を行う
プログラム。
【0074】
(付記10−1)
付記10に記載のプログラムであって、
前記転送実行手段は、DMA転送を行った後、次のDMA転送の実行を所定時間待機させるための待機情報を含む前記転送情報が設定されている場合に、前記転送情報に基づいてデータ転送を行った後、所定時間待機して、別の前記転送情報に基づくDMA転送を行う
プログラム。
【0075】
(付記10−2)
付記10又は付記10−1に記載のプログラムであって、
前記転送実行手段は、次のDMA転送を実行するまでの待機時間を示す待機時間情報を含む前記転送情報が設定されている場合、前記転送情報に基づいてDMA転送を行った後、当該転送情報に含まれる前記待機時間情報が示す時間分待機して、別の前記転送情報に基づくDMA転送を行う
プログラム。
【0076】
なお、上記各実施形態及び付記において記載したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されていたりする。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【0077】
以上、上記各実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることが出来る。