JP5268841B2 - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP5268841B2
JP5268841B2 JP2009209889A JP2009209889A JP5268841B2 JP 5268841 B2 JP5268841 B2 JP 5268841B2 JP 2009209889 A JP2009209889 A JP 2009209889A JP 2009209889 A JP2009209889 A JP 2009209889A JP 5268841 B2 JP5268841 B2 JP 5268841B2
Authority
JP
Japan
Prior art keywords
status information
command
data transfer
transfer
unit
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
JP2009209889A
Other languages
English (en)
Other versions
JP2011060051A (ja
Inventor
康宏 大森
康人 近江谷
茂 橋本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2009209889A priority Critical patent/JP5268841B2/ja
Publication of JP2011060051A publication Critical patent/JP2011060051A/ja
Application granted granted Critical
Publication of JP5268841B2 publication Critical patent/JP5268841B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Bus Control (AREA)

Description

本発明は、DMA(Direct Memory Access)転送等のデータ転送の状況が示されるステータス情報を集約する技術に関する。
従来のDMA転送装置に関する技術には、CPU(Central Processing Unit)からDMA転送装置に一度に複数の転送の要求を出すことで、CPUがDMA転送の起動を行う回数を減らし、転送の起動にかかるCPUの負荷を減らす技術がある。
しかしながら、転送の状態をCPUが確認するには、CPUが設定した転送の数によって複数存在する転送状態を表すステータス情報を、CPUによるポーリングやDMAからの割り込みによって確認しなければならず、転送状態の確認を行う時間が大きい。
つまり、CPUが複数の転送を設定した場合は複数のステータス情報が存在し、CPUは複数のステータス情報の各々をポーリングやDMAからの割り込みにより読み出さなければならず、転送状態の確認を行う時間が大きい。
例えば特許文献1では、特定のデータ処理に適した専用ユニットと、汎用のデータ処理に適した汎用ユニットを備えたプロセッサについて、専用ユニットからの命令に従って汎用ユニットが処理を行うことで、柔軟性が高く処理速度の速いプロセッサについての技術が開示されている。
しかし、汎用ユニットは専用ユニットからの命令に対する処理結果を全て専用ユニットに返すため、専用ユニットが処理結果を取得する時間が長くなる。
この問題を解決するために特許文献2では、DMA転送装置の機能を使用して、DMA転送装置がステータス情報をメモリに書き込むことでCPUはメモリからステータス情報を読むことができ、CPUの転送状態の確認にかかるレイテンシを小さくする技術が開示されている。
しかし、転送を複数実行した場合は、CPUはステータス情報を確認するためにメモリからステータス情報を複数回リードしなければならない。
特開2003−5957号公報 特開2004−355543号公報
従来の技術では特許文献1のように、ある処理ユニットから別の処理ユニットに処理の起動をかけ、処理を実行した結果を起動をかけた処理ユニットに返す仕組みはある。
特許文献1の処理ユニットをDMA転送装置とCPUで考えた場合に、CPUが複数の転送をDMA転送装置に要求すると、CPUは全ての転送のステータス情報を確認しなければならず、CPUの負荷が高くなるという課題がある。
特にPCIExpressなどの読み出しのレイテンシが大きいバスを使用した場合には、この課題は顕著になる。
特許文献2に関しても、複数の転送のステータス情報の確認には、CPUは複数のステータス情報の各々をメモリから読み出さなければならない。このため、CPUがステータス情報を確認するためにかかる読み出し時間は大きい。
また近年では、LSI実装時にIP(Intellectual Property)を活用して複数のDMA転送装置を併用する事も多く、転送状態を示すステータス情報の格納位置が統一されていないため、単純な回路でステータス情報を加工することが出来ないことも多い。
この発明は、上記のような課題を解決することを主な目的の一つとしており、上記のステータス情報の確認にかかるCPUのステータス情報の読み込み時間を短縮することを主な目的とする。
本発明に係る情報処理装置は、
各々にデータ転送の状況が表される複数のステータス情報を入力するステータス情報入力部と、
前記ステータス情報入力部により入力された複数のステータス情報を加工し、前記複数のステータス情報にて表わされているデータ転送の状況が集約されて表される集約ステータス情報を生成するステータス情報加工部と、
前記ステータス情報加工部により生成された集約ステータス情報を出力する集約ステータス情報出力部とを有することを特徴とする。
本発明によれば、複数のステータス情報にて表わされているデータ転送の状況が集約されて表される集約ステータス情報を生成するので、CPUがステータス情報を読み込む回数を減らすことができ、ステータス情報の読み込みにかかる時間を短縮することができる。
実施の形態1に係るDMA転送装置の構成例を示す図。 実施の形態1に係る論理チャネルの構成例を示す図。 実施の形態1に係るコマンドメモリが記憶するコマンドの例を示す図。 実施の形態2に係るDMA転送装置の構成例を示す図。 実施の形態2に係る論理チャネルの構成例を示す図。 実施の形態2に係るコマンドメモリが記憶するコマンドの例を示す図。 実施の形態3に係るコマンドメモリが記憶するコマンドの例を示す図。 実施の形態4に係る論理チャネルの構成例を示す図。 実施の形態4に係るコマンドメモリが記憶するコマンドの例を示す図。 実施の形態5に係るDMA転送装置の構成例を示す図。 実施の形態5に係るコマンドメモリが記憶するコマンドの例を示す図。 実施の形態6に係る論理チャネルの構成例を示す図。 実施の形態7に係る論理チャネルの構成例を示す図。 実施の形態7に係るコマンドメモリが記憶するコマンドの例を示す図。 実施の形態1に係る論理チャネルの動作例を示すフローチャート図。 実施の形態1に係る論理チャネルの動作例を示すフローチャート図。
実施の形態1.
本実施の形態では、DMA転送装置が複数の転送を行う場合にステータス情報を集約する技術を説明する。ステータス情報は、DMA転送装置におけるデータ転送が正常に完了したか、転送中であるか、転送時に異常が発生したかといったデータ転送の状況が表される情報である。
前述したように、DMA転送装置が複数の転送を行う場合に、転送状態を表すステータス情報も転送の数だけ存在し、CPUが転送状態の確認をするために複数回ステータス情報を読み込まねばならず、CPUの負荷が高くなる。
また、DMA転送装置がCPUから複数の転送の設定を行われた場合に、転送毎に存在する転送状況を表すステータス情報は、一つのアドレスにまとまっておらず、また転送によってステータス情報内の必要な情報のビット位置や情報のビット数が違う。そのため、CPUが転送状態を確認するための負荷が高くなる。
本実施の形態では、CPUの負荷を減らすために、複数あるステータス情報を加工して、必要な情報だけを小さいステータス情報に集約する機能を備え、CPUが転送状態の確認をする回数を減らし、ステータス情報の確認にかかる時間を短縮する。
より具体的には、CPUからDMA転送装置の各チャネルが、転送を行うための情報(転送元アドレス、転送先アドレス、転送長)と、各チャネルの転送状態のステータス情報を加工するためのステータス演算コマンドを格納するコマンドメモリを持ち、コマンドメモリに格納されているコマンドを判別し、判別した結果が転送用の転送コマンドであれば転送を実行し、ステータス情報の演算コマンドであればステータス情報中の必要な情報を加工し集約する。
複数の転送のステータス情報を集約することでCPUがステータス情報の確認行う回数が少なくなり、また、確認に要する時間も短縮することができる。
複数のI/O(Input/Output)装置を管理して処理を実行させる方法として、IBM(International Business Machine)(登録商標)社のS/370のCCW(チャネルコマンドワード)を使用するチャネル方式がある。
I/O装置はチャネルが管理し、チャネルは主記憶に書き込まれたチャネルプログラムと呼ばれる制御用のプログラムにセットされたCCW(チャネルコマンドワード)を読み込んで、CCWに従ったI/O装置の操作を行う。
CCWにはコマンドチェーンフラグがあり、読み込んだCCWのコマンドチェーンフラグがイネーブルである限り、チャネルは次のCCWを読み込んで処理を実行し続ける。この処理にはデータを転送するコマンドも含まれる。この機構により、複数のコマンドや複数の転送をまとめて行うことが出来る。
一方、単純なDMAでは1つの転送しか出来ないが、DMA転送装置にもこのチェーニングの概念をとりいれたものが近年実用化されている。
DMAでチェーニングを行う時は、IBM(登録商標) S/370のCCWに相当するデータがDMA装置が直接アクセスできるメモリに置かれるのが一般的である。
DMA転送には2種類あり、1つはDMA転送装置内部にあるデータをメモリに書き込んだり、読み込むタイプであり、もう1つはメモリ間の転送を行うものである。
後者では、I/O装置のもつ内部メモリも転送の対象となる。
本実施の形態では、一例として、このような概念に基づいたDMA装置に実装されたチャネルとCCW(チャネルコマンドワード)を使用する。
図1は、本実施の形態に係るDMA転送装置を含むシステム構成例を示す図である。
CPU10、メモリ20、DMA転送装置100は、メモリバス21、バス11で接続される。
本実施の形態の対象としているDMA転送装置100は、メモリ20又は内部バス1200あるいは外部バスによって接続されるI/Oデバイス(図示せず)のアドレスAから転送長Xのデータを、メモリ20又は前述のI/OデバイスのアドレスBに転送するための装置である。
DMA転送装置100は、データ処理システムの例である。
CPU10は転送元アドレス、転送先アドレス、転送長を1組とした転送コマンドをコマンドメモリ400、410にCCW(チャネルコマンドワード)として書き込み、DMA転送装置100はCCWに従った転送を実行する。
CPU10は複数のCCWをコマンドメモリ400、410にセットして一度にまとめて起動することができ、DMA転送装置100はセットされた複数のCCWを順次実行する。
このように、転送はCCW単位で行われ、その単位をチャネルと呼ぶ。
複数のチャネルがある場合には、それぞれのチャネルをCPUが個別に起動し、チャネル間の動作は並行して行われるがステータス情報は別々に生成され、CPUは各々のステータス情報を確認する必要がある。
複数の転送を順次実行する場合、転送の状態を表すステータス情報が、実行される転送の数によらず1個の場合も複数の場合もありうる。またチャネルが複数ある場合にはステータスは複数存在する。
CPU10は転送の完了を確認するために、全てのステータス情報を取得しなければならないが、複数あるステータス情報を加工して、必要な情報を集約することで、CPUがステータス情報を取得する回数を減らす方法について示す。
次に、DMA転送装置100の構成例について説明する。
バス制御回路200は、バス11、バス210及び内部バス1200のバス制御を行う。
起動レジスタ300はDMA転送装置100の起動指示を行う。
コマンドメモリ400及びコマンドメモリ410は、転送元アドレス、転送先アドレス、転送長からなる転送コマンドと、転送の状態を表すステータス情報をマージするための演算コマンドを格納する。
ステータスレジスタ群500は、ステータス情報を保持する。
論理チャネル0(610)は、コマンドメモリ400からCCW(チャネルコマンドワード)を読み出し転送を実行する。論理チャネル1(620)は、コマンドメモリ410からCCWを読み出し転送を実行する。
バスブリッジ1250は内部バス1200及び外部バス1260のバス制御を行う。
内部バス1200は、バス210とバスの制御を行うバス制御回路200によって、バス11と接続される。
また、内部バス1200はバスブリッジ1250を介して外部バス1260とも接続される。
なお、本実施の形態では、論理チャネルは2つであるが、論理チャネルの数は3つ以上でも良いものとする。
なお、ステータスレジスタ群500は、ステータス情報蓄積領域の例である。
また、論理チャネル0(610)及び論理チャネル1(620)は、情報処理装置及びデータ転送装置の例である。
論理チャネル0(610)を情報処理装置の例として見た場合には論理チャネル1(620)はデータ転送装置の例となり、論理チャネル1(620)を情報処理装置の例として見た場合には論理チャネル0(610)はデータ転送装置の例となる。
言い換えると、後述する図16に示すステータス情報の集約等の処理を論理チャネル0(610)が行う場合は、論理チャネル0(610)が情報処理装置の例となり、論理チャネル1(620)がデータ転送装置の例となる。逆に、図16に示すステータス情報の集約等の処理を論理チャネル1(620)が行う場合は、論理チャネル1(620)が情報処理装置の例となり、論理チャネル0(610)がデータ転送装置の例となる。
本実施の形態及び実施の形態2では、論理チャネル0(610)及び論理チャネル1(620)の両者がステータス情報の集約等の処理を行う場合もあるので、両者はともに情報処理装置として動作する場合がある。
次に、論理チャネル0(610)の構成を図2に示す。論理チャネル1(620)も論理チャネル0(610)と同じ構成である。
コマンド読み出し回路700は、コマンドメモリ400からCCWを読み出す。
コマンド判別回路810は、コマンド読み出し回路700が読み出したCCWが転送コマンドであるか、ステータス情報を加工するための演算コマンドであるかを判別する。
演算コマンド供給回路820は、演算コマンドを供給する。
ステータスアクセス回路900は、ステータスレジスタ群500に対してリード、ライトを行う。
ステータス演算回路910は、ステータス情報の加工を行う。
ワークレジスタ920は、加工時のステータス情報を格納する。
転送制御回路1000は、転送の制御を行う。
転送回路1100は、転送を実行する。
コマンド読み出し回路700は、コマンド入力部の例であり、転送コマンドと演算コマンドを入力する。演算コマンドには、複数のステータス情報の入力を指示するステータス情報入力コマンドと、ステータス情報の加工を指示するステータス情報加工コマンドと、加工後のステータス情報(集約ステータス情報)の出力を指示するステータス情報出力コマンドが含まれる。
転送回路1100は、データ転送部の例であり、コマンド読み出し回路700により読み出されたコマンドが転送コマンドである場合に、転送コマンドに従ってデータ転送元アドレスからデータ転送先アドレスにデータを転送する。
転送制御回路1000は、ステータス情報生成部の例であり、転送回路1100によりデータ転送が行われる度に、転送回路1100によるデータ転送の状況を表すステータス情報を生成し、生成したステータス情報をステータスレジスタ群500に出力する。また、転送制御回路1000は、コマンドのセットも行う。
ステータスアクセス回路900は、ステータス情報入力部及び集約ステータス情報出力部の例であり、コマンド読み出し回路700により読み出されたコマンドがステータス情報入力コマンドである場合に、ステータス情報入力コマンドに従って、ステータスレジスタ群500から複数のステータス情報を入力し、また、コマンド読み出し回路700により読み出されたコマンドがステータス情報出力コマンドである場合に、ステータス情報出力コマンドに従って、ステータス演算回路910により加工・集約されたステータス情報である集約ステータス情報をステータスレジスタ群500に出力する。
ステータス演算回路910は、ステータス情報加工部の例であり、コマンド読み出し回路700により読み出されたコマンドがステータス情報加工コマンドである場合に、ステータス情報加工コマンドに従って、ステータスアクセス回路900により入力された複数のステータス情報を加工し、複数のステータス情報にて表わされているデータ転送の状況が集約されて表される集約ステータス情報を生成する。
集約ステータス情報のデータサイズは、加工元の複数のステータス情報のデータサイズの総和よりも小さいことが望ましい。
次に、本実施の形態に係る動作を説明する。
以下では、原則として、2つある論理チャネルの代表として論理チャネル0(610)について説明する。また、コマンドメモリについても、同様に、コマンドメモリ400について説明する。
論理チャネル1(620)及びコマンドメモリ410についても、以下の説明がそのまま適用可能である。
まず、CPU10はバス11を介して、DMA転送装置100に対して実行したい転送のコマンドの書き込みを行う。
書き込むコマンドは、論理チャネル0(610)にデータ転送を行わせるために必要な、データの読み出し元のアドレスである転送元アドレス、データの書き込み先である転送先アドレス、転送するデータの大きさである転送長がセットになった転送コマンドと、各転送の転送状態を表すステータス情報を加工し、必要な情報を集約するための演算コマンドの2種類があり、コマンドメモリ400に書き込まれる。
コマンドメモリ400内にセットされている論理チャネル0(610)が実行するCCW(チャネルコマンドワード)420の例を図3に示す。
図3において、CCW0(421)及びCCW1(422)が転送コマンドであり、CCW2(423)〜CCW6(427)が演算コマンドである。
演算コマンドのうち、CCW2(423)及びCCW3(424)がステータス情報入力コマンドであり、CCW4(425)及びCCW5(426)がステータス情報加工コマンドであり、CCW6(427)がステータス情報出力コマンドである。
ステータス情報入力コマンドでは、複数のステータス情報の入力が指示され、ステータス情報加工コマンドでは複数のステータス情報の加工・集約が指示される。ステータス情報出力コマンドでは、加工後の集約ステータス情報の出力が指示される。
論理チャネル0(610)はCCW0(421)〜CCW6(427)の順番に従って、転送とステータス情報の加工を実行する。各CCWには、コマンドチェーンフラグがセットされている。
コマンド判別回路810は、CCWが転送コマンドであるか、演算コマンドであるかを判別する。コマンドチェーンフラグは、フラグがイネーブルである場合は次のCCWがあることを示し、DMA転送装置100は連続してCCWに従った処理を実行できる。また、図示は省略しているが、コマンドメモリ410には、論理チャネル1(620)が実行するCCWが存在している。
CPU10はCCWを書き込んだ後、DMA転送装置100に転送の起動をかけるため、起動レジスタ300の起動フラグをイネーブルにする。
これにより、DMA転送装置100はCCWの内容に従った転送処理を開始する。
以降は、図15のフローチャートを参照して、論理チャネル0(610)の動作を説明する。
起動レジスタ300は起動フラグがイネーブルになった事を、コマンド読み出し回路700に通知する。
コマンド読み出し回路700は起動の通知を受けると(S1501)、コマンドメモリ400に対して読み出したいCCWが格納されているアドレスを送り、そのアドレスに存在するCCWを読み込み実行を開始する(S1502)。
次にコマンド判別回路810は、読み込んだCCWのコマンドから、転送コマンドであるか、ステータス情報を加工するための演算コマンドであるか判別する(S1503)。
また、CCWにセットされているコマンドチェーンフラグの内容を、転送制御回路1000のコマンド全体制御部1010に送る。
コマンド判別回路810は、読み込まれたCCWが転送コマンドであると判別した場合(S1503でYES)に、転送コマンドを転送制御回路1000のコマンド個別制御部1020に供給する。
その後、転送制御回路1000及び転送回路1100によりデータ転送が行われる(S1504)。
具体的には、コマンド個別制御部1020は供給された転送コマンドを構成する、転送元アドレス、転送先アドレス、転送長を転送回路1100の転送要求部1110にセットする。
そして、転送要求部1110は、設定された転送元アドレス、転送長に従って、内部バス1200を経由して、転送元アドレスから転送長分のデータを読み込み、バッファ1120に格納する。
バッファ1120に読み込んだデータの格納が完了すると、転送要求部1110がバッファ1120に格納されたデータを設定された転送先アドレスに書き込む。
書き込みが完了すると、データ転送も完了する。
データ転送が完了すると転送要求部1110が転送完了の通知を、転送制御回路1000のコマンド個別制御部1020に送る。
コマンド個別制御部1020が転送完了通知を受けると、コマンド全体制御部1010にセットした転送が完了したことを通知する(S1505でNO)。
コマンド全体制御部1010が、データ転送の完了通知を受け、コマンド読み出し回路700に次のCCWを読み出すように指令を出す。
一方、コマンド判別回路810が読み出したCCWのコマンドチェーンフラグがディセーブルである場合(S1511でYES)は、論理チャネル0(610)が実行する最後のCCWであることを示すため、以降はCCWを読み込まないようにするために、コマンド読み込み回路700をアイドル状態にする。
また、コマンド全体制御部1010は、コマンド判別回路810より送られるコマンドチェーンフラグがディセーブルであれば(S1511でYES)、完了した転送のステータス情報(未集約のステータス情報)をステータスレジスタ群500に送り、ステータス情報を書き込む(S1512)。
論理チャネル0(610)は、コマンドチェーンフラグがディセーブルであるCCWを実行し終わると、コマンド読み出し回路700がアイドル状態であるため、動作を停止する。
転送回路1100において転送実行中に異常が発生した場合(S1505でYES)、転送要求部1110はコマンド個別制御部1020に対して転送完了の通知ではなく、転送異常の通知を行う。
コマンド個別制御部1020はコマンド全体制御部1010に対して、異常が発生したことを通知する。
コマンド全体制御部1010は、ステータスレジスタ群500に、エラーのステータス情報を書き込む(S1506)。
エラーのステータス情報を書き込んだ後は、DMA転送装置100は後続のCCW実行を行わず、一定の時間がたつとCPU10はタイムアウトを検出してエラーが発生したと判断し、ステータスレジスタ群500からエラーのステータス情報を取得する。
また、コマンド判別回路810の判別において、読み出されたCCWがステータス情報を加工するための演算コマンドであった場合(S1503でNO)は、次の処理を行う。
コマンド判別回路810は、演算コマンドを演算コマンド供給回路820に送る。
演算コマンド供給回路820は、送られた演算コマンドのコマンド種別を確認し(S1507)、ステータスレジスタ群500からステータス情報をリードするCCWであればステータス情報の読み出しが行われ(S1508)、集約ステータス情報をステータスレジスタ群500にライトするCCWであれば、集約ステータス情報の書き込みが行われる(S1510)。
演算コマンド供給回路820は、演算コマンドをステータスアクセス回路900に供給する。
図3の演算コマンドの例では、“read r0 ステータス1”、“read r1 ステータス2”がステータス情報をリードする演算コマンド(ステータス情報入力コマンド)であり、“write r0 ステータス1”が集約ステータス情報をライトする演算コマンド(ステータス情報出力コマンド)に相当する。
なお、ステータスアクセス回路900の動作の詳細は後述する。
一方、ステータス情報を加工する演算コマンドであった場合は、ステータス情報の加工が行われる(S1509)。
具体的には、演算コマンド供給回路820は、ステータス演算回路910に演算コマンドを供給する。
図3の演算コマンドの例では、“AND r0[0] r0[0] r1[2]”、“OR r0[3] r0[3] r1[5]”がステータス情報を加工する演算コマンド(ステータス情報加工コマンド)に相当する。
なお、ステータス演算回路910の動作の詳細は後述する。
ステータスアクセス回路900は、ステータス情報をリード又はライトする演算コマンドが供給されると、リード又はライトを行うステータス情報に相当するアドレスをステータスレジスタ群500に送り、ステータス情報のリード又はライトを実行する。
リードの場合は、ステータスアクセス回路900は、リードしたステータス情報をワークレジスタ920に送る。
ライトの場合は、ステータスアクセス回路900は、ワークレジスタ920から加工されたステータス情報(集約ステータス情報)を読み込み、ステータスレジスタ群500に書き込む。
リード又はライトが完了すると、ステータスアクセス回路900は、ステータス情報のリード又はライト完了の通知を演算コマンド供給回路820に出す。
演算コマンド供給回路820は完了の通知を受けると、コマンド読み出し回路700に、次のCCWを読み出すように指令を送る。
ステータス演算回路910は、演算コマンド供給回路820から供給された演算コマンド(ステータス情報加工コマンド)に従い、ステータスアクセス回路900が読み込み、ワークレジスタ920に格納されているステータス情報に対して演算を実行し、ステータス情報の加工を行う。
演算が完了すると、ステータス演算回路910は演算コマンド供給回路820に、演算完了の通知を行う。
演算コマンド供給回路820は、ステータスアクセス回路900から完了の通知を受けた時と同様に、コマンド読み出し回路700に、次のCCWを読み出すように指令を送る。
論理チャネル1(620)もコマンドメモリ410から論理チャネル1(620)に対応するCCW(図示せず)を読み込んで、論理チャネル0(610)と同じ動作を行う。
全ての論理チャネルの動作が停止すると、DMA転送装置100は起動レジスタ300の起動フラグをディセーブルにする。
コマンドチェーンフラグがディセーブルであるCCWの実行を完了する事で転送が完了したとみなし、ステータス情報を生成する論理チャネル(図15のフローに従って動作する論理チャネル)の場合、演算コマンドによってステータス情報を加工する段階では、CCWはディセーブルとならないため、その論理チャネルで行われたデータ転送についてのステータス情報は生成されていない。
そのため、S1509での加工の対象となるステータス情報は、ステータス情報を加工をする論理チャネル以外の論理チャネルのステータス情報が対象となる。
つまり、論理チャネル0(610)がS1509で加工するステータス情報は、S1508のステータス情報の読み出し処理時点で論理チャネル1(620)によりステータスレジスタ群500に既に書き込まれているステータス情報であり、論理チャネル0(610)がS1512又はS1506で書きこむステータス情報ではない。
一方、図16に示すように、論理チャネルが実行するCCWによるデータ転送毎にステータス情報を生成する場合は、S1509で加工する対象のステータス情報は、全ての論理チャネルで生成したステータス情報となる。
つまり、図16の場合は、論理チャネル0(610)がS1509で加工するステータス情報は、S1508のステータス情報の読み出し処理時点で論理チャネル0(610)及び論理チャネル1(620)の双方によりステータスレジスタ群500に既に書き込まれているステータス情報である。
以上の処理を経て加工されて集約されたステータス情報と、ステータス情報の加工を行った論理チャネルのステータス情報は、CPU10からのポーリングやDMA転送装置100からCPU10への割り込み通知などによって、CPU10にリードされる。
以上の動作を、図3のコマンドメモリ400に書き込まれたCCW(チャネルコマンドワード)の例を使用して具体例を示す。
CPU10によってコマンドメモリ400にCCW(チャネルコマンドワード)420が図3のように設定され、起動レジスタ300に起動設定が行われると、コマンド読み出し回路700はCCW0(421)を読み出す。
CCW0(421)はコマンド判別回路810で転送コマンドであると判別される。
CCW0(421)は、転送元アドレス(0x10000)から転送長(10Byte)のデータを、転送先アドレス(0x11000)に書き込むコマンドであり、コマンド判別回路810によってコマンド個別制御部1020に供給される。
コマンド個別制御部1020は、供給された転送コマンドである、転送元アドレス(0x10000)、転送先アドレス(0x11000)、転送長(10Byte)を転送要求部1110にセットする。
転送要求部1110が、内部バス1200を経由して転送元アドレス(0x10000)から転送長(10Byte)分のデータリード要求を出し、要求したデータを読み込んでバッファ1120に格納する。
バッファ1120が要求したデータの格納を完了すると、転送要求部1110がコマンド個別制御部1020によってセットされた転送先アドレス(0x11000)に、バッファ1120に格納されたデータを書き込む。
書き込みが完了すると、転送要求部1110がコマンド個別制御部1020に転送完了の通知を出す。
コマンド個別制御部1020は、転送完了の通知をコマンド全体制御部1010に送る。コマンド全体制御部1010は、転送完了の通知を受け、コマンド読み出し回路700に、コマンドメモリ400から次のCCWを読み出すように指令を出す。
コマンド読み出し回路700が次にコマンドメモリ400から読み出すCCW1(422)は、アドレス0x20000から20Byteのデータをアドレス0x21000に書き込む転送コマンドである。
この転送コマンドも先ほどの転送と同様に、コマンド判別回路810によってコマンド内容を判別されて転送制御回路1000に供給される。
転送制御回路1000によってセットされた転送設定に従って、転送回路1100は転送を実行する。
転送が完了すると、コマンド読み出し回路700は次のCCW2(423)を読み込む。
次にコマンド読み出し回路700が読み込むCCW2(423)は、ステータス情報を加工し、複数のステータス情報を集約するための演算コマンドである。
コマンド読み出し回路700によって読み込まれたCCW2(423)は、ステータスレジスタ群500からステータス情報1をリードするコマンドである。
コマンド判別回路810により演算コマンドであると判別される。
コマンド判別回路810はCCW2(423)を演算コマンド供給回路820に送る。
演算コマンド供給回路820は、送られたCCW2(423)のコマンド種別を確認し、ステータスレジスタ群500からステータス情報1をリードするコマンドであるCCW2(423)“read r0 ステータス1”をステータスアクセス回路900に供給する。
ステータスアクセス回路900は、コマンドに従ってステータス情報1のリード要求を出し、ステータスレジスタ群500からステータス情報1を読み込み、ワークレジスタ920の領域“r0”に格納する。
ステータスアクセス回路900は、読み込みの完了通知を演算コマンド供給回路820に出し、演算コマンド供給回路820は、コマンド読み出し回路700に次のCCW3(424)を読み出すように指令をだす。
CCW3(424)は、ステータス情報2を読み出すコマンドであり、ステータスアクセス回路900に供給する。
ステータスアクセス回路900は先ほどと同様に、ステータス情報2のリード要求をステータスレジスタ群500に出し、ステータスレジスタ群500からステータス2を読み込み、ワークレジスタ920の領域“r1”に格納する。
ステータスアクセス回路900は、読み込みの完了通知を演算コマンド供給回路820に出し、演算コマンド供給回路820はコマンド読み出し回路700に次のCCW4(425)を読み出すように指令を出す。
ここで、CCW4(425)のコマンドは、“AND r0[0] r0[0] r1[2]”であり、読み込んだステータス情報同士の加工を行うコマンドとして、演算コマンド供給回路820はステータス演算回路910にコマンドを供給する。
ステータス演算回路910は、コマンドに従ってワークレジスタ920の“r0”と“r1”に格納されたステータス情報1とステータス情報2を加工する演算(ステータス情報1の0ビット目と、ステータス情報2の2ビット目の論理積をとり、ステータス情報1の0ビット目に保存する)を実行する。
演算が完了するとステータス演算回路910は、演算完了の通知を演算コマンド供給回路820に出す。
演算コマンド供給回路820は、コマンド読み出し回路700に次のCCW5(426)を読み出すように指令を出す。
CCW5(426)は“OR r0[3] r0[3] r1[5]”であり、CCW4(425)と同様にステータス情報をマージするための演算コマンドであるため、ステータス演算回路910に供給される。
ステータス演算回路910はコマンドに従った演算(ステータス情報1の3ビット目と、ステータス情報2の5ビット目の論理和をとり、ステータス情報1の3ビット目に保存する)を実行する。
そして、ステータス演算回路910は演算が完了したことを演算コマンド供給回路820に通知する。
演算コマンド供給回路820は、コマンド読み出し回路700に次のCCW6(427)を読み出すように指令を出す。
コマンド読み出し回路700が読み出したCCW6(427)は、コマンド判別回路810で演算コマンドであると判別されると同時に、コマンドチェーンフラグがディセーブルであるため、最後のCCWである事も判定される。
コマンド判別回路810は、コマンド読み出し回路700に対して次のCCWを読み込まないように、読み込み停止通知を出し、コマンド読み出し回路700はアイドル状態となる。
コマンド読み出し回路700は、再び起動レジスタ300から起動通知を受けるまでアイドル状態のままである。
また、コマンド全体制御部1010は、コマンド判別回路810から送られるコマンドチェーンフラグがディセーブルであると、転送完了時のステータス情報をステータスレジスタ群500にライトする。
CCW6(427)の内容は、“write r0 ステータス1”であり、CCW4(425)とCCW5(426)で加工されたワークレジスタ920の“r0”に格納されている、ステータス情報1をステータスレジスタ群500にライトするコマンドである。
演算コマンド供給回路820によりステータスアクセス回路900に供給され、ステータスアクセス回路900は、ワークレジスタ920から加工されたステータス情報1を読み出し、ステータスレジスタ群500にライト要求を出し、ライトを実行する。
ライトが完了すると、ステータスアクセス回路900は、完了の通知を演算コマンド供給回路820に通知し、演算コマンド供給回路820はコマンド読み出し回路700に次のCCWを読み出すように指令を出す。
コマンド読み出し回路700はアイドル状態であるため、CCWを読み出す指令を受けても、動作を行わない。
論理チャネル1(620)も論理チャネル0(610)と同様に、コマンドメモリ410から論理チャネル1(620)に対応したCCWを読み込んで、CCWの順番に従った動作を行い、全ての論理チャネルの動作が完了すると、DMA転送装置100は起動レジスタ300の起動フラグをディセーブルにする。
CPU10は、ポーリングやDMA転送装置100からの割り込み通知を受けて、ステータスレジスタ群500から加工されたステータス情報と、ステータス情報の加工を行った論理チャネルのステータス情報を読み込む。
以上が本実施の形態の動作の具体例である。
従来技術では、CPUはコマンドメモリに書き込んだ複数の転送の完了を確認するために、複数のステータス情報をステータスレジスタ群から読み込まなければならず、転送完了の確認にかかるレイテンシが大きかった。
しかし、本実施の形態によれば、ステータス情報を集約することで、複数転送の完了確認のために、CPUがステータス情報をステータスレジスタ群まで読み込みに行く回数が減り、従来技術よりも転送完了の確認にかかる時間が短縮される。
また、本実施の形態では、複数のステータス情報のデータサイズの総計よりも小さいデータサイズのステータス情報に集約されるためデータ読み出しに要する時間を短縮化することができる。
以上、本実施の形態では、
データを読み出す転送元のアドレスとデータを書き込む転送先アドレスと転送長を指定して転送を行い、その転送に先立ち転送元アドレスと転送先アドレスと転送長の情報を転送コマンドとしたチャネルコマンドワードを1つ又は複数格納し、転送完了の状況を表すステータス情報を保持するDMA転送装置であって、
そのDMA転送装置と外部バスによりメモリ又はI/Oデバイスが内部バス又は外部バスと接続され、
前記転送コマンドの他に前記ステータス情報を加工して連続する小さなデータにするための演算コマンドをコマンドメモリに格納し、
前記コマンドメモリから前記転送コマンドあるいは前記複数の転送に係わるステータス情報を加工するための前記演算コマンドを読み出すコマンド読み出し回路が接続され、
読み出したコマンドを前記転送コマンドであるか前記演算コマンドであるかを判別するコマンド判別回路と、
複数の前記ステータス情報が格納されているステータスレジスタ群から前記ステータス情報を読み出すステータス読み出し回路と、
前記ステータス読み出し回路によって読み出された前記ステータス情報を前記演算コマンドに従った加工を実行するステータス演算回路と、を備え
複数の前記転送コマンドと複数の前記演算コマンドは前記CPUによってコマンドメモリに設定され、
前記コマンド判別回路によって前記転送コマンドであると判別されれば転送を実行し、
前記演算コマンドであると判別された時は演算コマンド供給回路が前記ステータス読み出し回路と前記ステータス演算回路に前記演算コマンドを供給し、前記ステータス情報の加工を実行する事で、正常動作を示すステータス情報を連続した小さなデータに加工することで、CPUのステータス情報の読み出し回数を減らし、転送時間を短縮するDMA転送装置を説明した。
実施の形態2.
本実施の形態は、実施の形態1と同様にステータス情報を加工してステータス情報の必要な情報を集約する。
加工されたステータス情報をDMA転送装置100のデータ転送を実行する機能を使用して、CPU10と接続されているメモリ20に転送する方法であり、実施の形態1との差分について示す。
本実施の形態に係る構成例を図4に示す。
図4の論理チャネル0(610)の構成例を、図5に示す。
論理チャネル1(620)は論理チャネル0(610)と同様の構成である。
本実施の形態では、内部バス1210を通じて、ステータスレジスタ群500から転送回路1100にステータス情報を送ることが可能となることで、転送回路1100がCPU10と接続されたメモリ20にステータス情報を転送することが出来る。
本実施の形態では、転送回路1100も集約ステータス情報出力部の例となる。
次に動作について説明する。
図6は本実施の形態におけるコマンドメモリ400の例である。
図6に示すように、本実施の形態のコマンドメモリ400には、CPU10がステータス情報を加工する演算コマンドの後に、加工されたステータス情報を転送する転送用のCCW(CCW7)が書き込まれる。
実施の形態1と同様に、CCWをコマンド読み出し回路700が読み込み、転送処理とステータス情報を加工する演算を実行する。
ステータス情報の演算が完了すると、ステータス演算回路910は演算コマンド供給回路820に演算の完了を通知する。
演算コマンド供給回路820は、演算完了の通知を受け取ると、コマンド読み出し回路700に、コマンドメモリ400から次のCCWを読み出すように指令を出す。
コマンド読み出し回路700は、次のコマンドである、CCW7(428)の集約ステータス情報の転送コマンドを読み出す。
読み出したCCW7(428)は、コマンド判別回路810で集約ステータスの転送コマンドであると判別され、転送制御回路1000のコマンド個別制御部1020に供給される。
ここで、CCW7(428)のコマンドチェーンフラグはディセーブルであるため、最後のCCWである事も判定され、コマンド読み出し回路700はアイドル状態になる。
また、コマンド全体制御部1010にコマンドチェーンフラグがディセーブルであることを通知し、コマンド全体制御部1010は転送完了のステータス情報をステータスレジスタ群500にライトする。
コマンド個別制御部1020は転送コマンドが供給されると、転送回路1100の転送要求部1110に、転送元アドレス(集約ステータス情報のアドレス)、転送長(集約ステータス情報のサイズ)、転送先アドレス(メモリ20)を設定する。
転送要求部1110は、設定された転送元アドレスと転送長の読み出しの要求を、内部バス1210を経由してステータスレジスタ群500に出し、ステータスレジスタ群500から集約ステータス情報を読み込んでバッファ1120に格納する。
転送要求部1110はバッファ1120に集約ステータス情報が格納されると、設定された転送先アドレス(メモリ20)に、格納した集約ステータス情報を書き込む指令を出す。
バッファ1120は集約ステータス情報の格納が完了すると、転送要求部1110に格納完了の通知をする。
転送が完了すると転送要求部1110は、転送完了の通知を転送制御回路1000のコマンド個別制御部1020に送る。
コマンド個別制御部1020は転送完了の通知をコマンド全体制御部1010に伝える。
コマンド全体制御部1010は転送完了の通知を受け、コマンド読み出し回路700から次のCCWを読み出すように指令を出す。
実施の形態1の場合と同様に、コマンド読み出し回路700はアイドル状態となっているため、次のCCWは読み込まない。また、コマンドチェーンフラグがディセーブルであるCCWを実行したため、コマンド全体制御部1010は、ステータスレジスタ群500にステータス情報を書き込む。
ステータス情報が書き込まれた後、DMA転送装置100は起動レジスタ300の起動フラグをディセーブルにし、CPU10が次のCCWを書き込むまで待機する。
このように、本実施の形態によれば、CPUがステータス情報を確認するためにCPUとDMA転送装置間のバス読み出しをする必要がなくなり、ステータス情報を読み込むレイテンシを小さくすることが可能となる。
以上、本実施の形態では、
ステータス演算回路によって加工された前記ステータス情報を、DMA転送装置のデータ転送を実行する機能を使用してCPUに接続されたメインメモリに転送して、CPUがDMA転送装置とCPU間のバス読み出しをせず、転送時間を短縮するDMA転送装置を説明した。
実施の形態3.
本実施の形態は、複数の転送を複数のチャネルで並列に実行する場合に、各転送が完了して完了時のステータス情報を生成する前に、ステータス情報の加工を実行しないための方法であり、実施の形態1、2との差分について説明する。
本実施の形態におけるコマンドメモリ400、410の例を図7に示す。
論理チャネル0(610)が実行するCCW430には、転送コマンド431のみがあり、論理チャネル0(610)が実行するCCW440には、転送コマンド441、442とステータス情報を加工するための演算コマンド443〜447がある。
次に本実施の形態の動作について説明する。
CPU10は、複数の転送をDMA転送装置100に並列に実行させるため、コマンドメモリ400、410に論理チャネル0(610)と論理チャネル1(620)に実行させるCCWを書き込む。
CPU10は、コマンドメモリ400、410に複数の転送コマンドを書き込む際に、最後に実行される転送を行う論理チャネルに、ステータス情報の加工を行わせるようにCCWを書き込む。
ここで、図7のコマンドメモリ400、410に書き込まれている転送の実行順序は、CCW0_0(431)が最初に実行され、次にCCW1_0(441)が実行され、最後の転送としてCCW1_1(442)が実行されるものとする。
最後に実行する転送は、CCW1_1(442)であり、論理チャネル1(620)が実行する。
従って、CPU10は、論理チャネル1(610)にステータス情報の加工を行わせるために、演算コマンド443〜447をコマンドメモリ440に書き込む。
つまり、本実施の形態では、論理チャネル0(610)をデータ転送装置の例とし、論理チャンネル1(620)が情報処理装置の例であり、情報処理装置たる論路チャネル1(620)のステータスアクセス回路(ステータス情報入力部)は、演算コマンド443〜447に従って、論理チャネル0(610)(データ転送装置)のデータ転送及びステータス情報の生成が終了し、論理チャネル1(610)の転送回路1100(データ転送部)のデータ転送及び転送制御回路1000(ステータス情報生成部)のステータス情報の生成が終了した後に、ステータスレジスタ群500に格納されている複数のステータス情報(論理チャネル0(610)で生成されたステータス情報と論路チャネル1(620)の転送制御回路1000で生成されたステータス情報)を入力し、ステータス演算回路910が、入力された複数のステータス情報を加工して集約ステータス情報とする。
以上のように、CPU10がコマンドメモリ400、410にCCWを書き込み、実施の形態1又は実施の形態2と同様に各論理チャネルが対応するCCWを読み込むことで、最後に転送コマンドを実行する論理チャネル(図7の例では論理チャネル1(620))は、他の論理チャネルが転送を完了しステータス情報を生成した後に、ステータスレジスタ群500からステータス情報を読み込んで加工を行うことが可能である。
本実施の形態によれば、全ての転送が完了したあとにステータスの加工を実行できるため、転送が完了する前にステータス情報の加工を行う障害が発生する可能性が減る。
以上、本実施の形態では、
転送コマンドに従って転送を実行するチャネルが複数あり、チャネルはチャネルコマンドワードの並びの順序に従って転送を行うものであり、実行する全ての転送の中で一番最後の転送の後に、転送用の一連のチャネルコマンドワードの後にステータス演算用のチャネルコマンドワードを配置することにより、全ての転送が完了した後のステータス情報を加工するチャネルコマンドワードのプログラム記述制御について説明した。
実施の形態4.
本実施の形態は実施の形態3と同様に、各転送が完了して完了時のステータス情報を生成する前に、ステータス情報の加工を実行しないための方法であり、実施の形態1、2との差分について説明する。
本実施の形態における論理チャネルの構成図を図8に示す。
図8の論理チャネルには、タイマ回路1300が備わっており、コマンド判別回路810においてコマンドメモリ400から読み込んだCCWがタイマ起動のコマンドであると判別されると、タイマ回路1300は起動する。
タイマ回路1300が時間をカウントし、カウントしている間は論理チャネルは後続のCCWを読み込めず、指定された時間のカウントが完了すると、コマンド読み出し回路700に次のCCWを読み出すように指令を出す。
次に本実施の形態の動作について説明する。
まず、CPU10はコマンドメモリ400、410にDMA転送装置100に実行させるCCWを書き込む。
本実施の形態のコマンドメモリ400の例を図9に示す。
CPU10は、論理チャネル0(610)が実行するCCWにタイマ起動のコマンド452を書き込む。
タイマ起動のコマンド452は、論理チャネル内に備わっているタイマ回路1300を起動するコマンドであり、CPU10がコマンドメモリ400、410に書き込む全ての転送が完了するのに必要な時間を持つ。
ここで、タイマはどの論理チャネルに実行させても良いが、必ずステータスを加工する演算コマンドの直前にCCWをセットし実行する。
論理チャネル0(610)は起動レジスタ300の起動フラグがイネーブルになるとコマンドメモリ400からCCW0(451)を読み込んで転送を実行する。
次のCCW1(452)は、コマンド判別回路810によりタイマ起動のコマンドであると判別され、タイマ回路1300が起動する。
タイマ回路1300は、タイマ起動のコマンドが持つ時間をセットされる。
タイマにセットされた時間が経過すると、タイマ回路1300はコマンド読み出し回路700に次のCCWを読み出しように指令を出し、論理チャネル0(610)は、次のCCW2(453)を読み込み、ステータス情報の加工する演算コマンドを実行する。
タイマ回路1300にセットされる時間は、コマンドメモリ400に書き込まれている全ての転送が完了するのに必要な時間であるため、タイマのカウントが完了する時には、全ての転送が完了している。
そのため、転送が完了する前にステータス情報を加工する障害が発生することがない。
このように、本実施の形態では、タイマ回路1300によるタイマ計時により、転送回路1100(データ転送部)が所定数のデータ転送を完了し転送制御回路1000(ステータス情報生成部)が当該所定数のデータ転送のステータス情報をステータスレジスタ群500(データ蓄積領域)に出力するのに十分な時間が経過するのを待って、ステータスレジスタ群500から複数のステータス情報を入力し、ステータス演算回路910が、入力された複数のステータス情報を加工して集約ステータス情報とする。
本実施の形態によれば、全ての転送が完了したあとにステータスの加工を実行できるため、転送が完了する前にステータス情報の加工を行う障害が発生する可能性が減る。
以上、本実施の形態では、
CPUによってコマンドメモリ内のチャネルコマンドワードによりタイマの起動を行うか、または他の要因により起動されるタイマを利用して、前記タイマに予め全ての転送に必要な時間を設定しその時間のカウントを終えると、ステータスを加工する演算コマンドを実行することが可能となり、全ての転送が完了した後にステータス情報を加工することが可能となることで、正確なステータス情報を提供するDMA転送装置を説明した。
実施の形態5.
本実施の形態は実施の形態3、4と同様に、各転送が完了して完了時のステータス情報を生成する前に、ステータス情報の加工を実行しないための方法であり、実施の形態1、2との差分について説明する。
本実施の形態の構成図を図10に示す。
図10のDMA転送装置100には、チャネル動作確認回路1400が備わっている。
チャネル動作確認回路1400は、各論理チャネルからの動作中を示す信号を監視し、全ての論理チャネルの転送が非動作状態になったことを各論理チャネルに伝え、ステータス情報を加工する演算コマンドを実行させる。
つまり、チャネル動作確認回路1400は各論理チャネルのデータ転送の完了及びステータス情報の出力の完了を検知する機能を有し、完了検知部の例に相当する。
なお、本実施の形態では、論理チャネル0(610)とチャネル動作確認回路1400とを組み合わせたものが情報処理装置の例に相当し、論理チャネル1(620)がデータ転送装置の例に相当する。
また、逆に、論理チャネル1(620)とチャネル動作確認回路1400とを組み合わせたものが情報処理装置の例に相当し、論理チャネル0(610)がデータ転送装置の例に相当する。
次に本実施の形態の動作について説明する。
起動レジスタ300の起動フラグがイネーブルになると、論理チャネル0(620)はコマンドメモリ400から対応するCCWを読み込み、転送を開始する。本実施の形態におけるコマンドメモリ400の例を図11に示す。
図11において、CCW1(462)はチャネル動作確認回路1400の起動を指示するコマンドである。
論理チャネル0(610)は、CCW0(461)を読み込んで、転送を開始する。
転送が完了すると、次にCCW1(462)を読み込む。
コマンド判別回路810は、CCW1(462)をチャネル動作確認回路起動のコマンドであると判別し、チャネル動作確認回路1400を起動する。
チャネル動作確認回路1400は、起動すると全てのチャネルの動作状態を監視し、全てのチャネルの転送が非動作状態になった事を確認すると、コマンド読み出し回路700に次のCCWを読み出す指令を出す。
各論理チャネルは、動作中は転送動作中であることを示す信号を出力している。
チャネル動作確認回路1400が動作中を示す信号を監視することにより、非動作状態であること(各論理チャネルでデータ転送が完了し、ステータス情報の出力が完了したこと)を確認すると、各論理チャネルのチャネル動作確認回路1400にセットされている、論理チャネル停止フラグを解除する。
論理チャネル停止フラグがセットされている間は、チャネル動作確認回路1400は、コマンド読み出し回路700に次のCCWを読み出すように指示を出せない。
論理チャネル停止フラグが解除された際、つまり、各論理チャネルでデータ転送が完了し、ステータス情報の出力が完了したことが検知された場合に、コマンド読み出し回路700は次のCCWを読み込む。この結果、コマンド読み出し回路700は、演算コマンド463以降を読み込み、ステータスアクセス回路900がステータスレジスタ群500から複数のステータス情報を入力し、ステータス演算回路910が集約ステータス情報を生成する。
このように、各論理チャネルの転送が非動作であること確認しているため、転送が完了する前にステータス情報を加工する障害が発生することがない。
ここで、論理チャネル停止フラグの解除は、必ず演算コマンドの直前に実行する事とする。
論理チャネル停止フラグの解除の後に転送コマンドを実行した場合、転送が完了する前にステータス情報を加工する可能性がある。
本実施の形態では、実施の形態3、4と同様に、全ての転送が完了した後にステータス情報の加工を実行できるため、転送が完了する前にステータス情報の加工を行う障害が発生する可能性が減る。
以上、本実施の形態では、
複数のチャネルは転送動作中を示す信号を出力し、それらの信号を常に監視するチャネル動作確認回路を備え、
全てのチャネルからの転送動作中を示す信号が非動作状態になった後に、演算コマンドに従ってステータス情報の加工を実行することで、必ず全ての転送が終了した事を確認してからステータス情報の加工を行えることで、正確なステータス情報を提供するDMA転送装置を説明した。
実施の形態6.
本実施の形態における論理チャネル0(610)の構成図を図12に示す。
本実施の形態の論理チャネルは、完了時刻記憶機構1030と演算時刻記憶機構930を設けることで、転送が完了しステータス情報を書き込む時刻と、ステータス情報の加工が実行された時刻をステータス情報に追加することが出来、障害発生時に原因の解析を容易にする。
完了時刻記憶機構1030は、転送回路1100によりデータ転送が行われ、コマンド全体制御部1010が当該データ転送のステータス情報を生成した時刻をステータス情報生成時刻として計時し、コマンド全体制御部1010により生成されたステータス情報にステータス情報生成時刻を示す情報を付加する。
演算時刻記憶機構930は、ステータス演算回路910が集約ステータス情報を生成した時刻を集約ステータス情報生成時刻として計時し、ステータス演算回路910により生成された集約ステータス情報に集約ステータス情報生成時刻を示す情報を付加する。
完了時刻記憶機構1030及び演算時刻記憶機構930は、時刻計時部の例である。
なお、論理チャネル1(620)も図12と同様の構成とする。
次に本実施の形態の動作例について説明する。
コマンド判別回路810は、コマンド読み出し回路700が読み込んだCCWのコマンドチェーンフラグを転送制御回路1000のコマンド全体制御部1010に対して通知する。
コマンド全体制御部1010は、通知されたコマンドチェーンフラグがディセーブルであれば、コマンドメモリ400に書き込まれている論理チャネル0(610)が実行する転送完了のステータス情報を生成し、ステータスレジスタ群500に書き込む。
その際に、コマンド全体制御部1010は完了時刻記憶機構1030に、転送が完了しステータス情報を生成することを通知し、完了時刻記憶機構1030はステータス情報が生成され書き込みが行われる時刻(ステータス情報生成時刻)を記憶する。
完了時刻記憶機構1030は、ステータスレジスタ群500に書き込まれるステータス情報にステータス情報が生成された時刻(ステータス情報生成時刻)を示す情報を追加する。
また、演算コマンドに従って、ステータス演算回路910がステータス情報の加工が完了したことを、演算時刻記憶機構930に通知する。
演算時刻記憶機構930は、通知を受けた時刻(集約ステータス情報生成時刻)を記憶し、ステータスアクセス回路900がステータスレジスタ群500に加工したステータス情報を書き込む際に、ステータス情報の加工が完了した時刻(集約ステータス情報生成時刻)を示す情報を追加する。
このように本実施の形態では、ステータス情報の生成時刻及び集約ステータス情報の生成時刻を管理するので、DMA転送装置100の異常動作時などに、ステータス情報の時刻を比較して確認することで、障害発生時の原因解析を容易に行うことが可能となる。
以上、本実施の形態では、
チャネルに演算コマンドに従ってステータス情報の加工を実行した時刻情報をステータス情報に付け加える演算時刻記憶機構と、
転送完了時に更新した時間をステータス情報に付け加える完了時刻記憶機構の一方又は両方を備えることにより、複数の転送の並列動作時に時刻情報を比較することにより障害解析を容易にする手段を提供するDMA転送装置を説明した。
実施の形態7.
本実施の形態における論理チャネル0(610)の構成図を図13に示す。
本実施の形態は、論理チャネルに転送異常確認回路1500を備え、転送が正常に転送が完了しなかった場合に異常を検出し、コマンドメモリ400内にセットされているエラー時の動作コマンドを実行するための方法である。
転送異常確認回路1500は、転送回路1100のデータ転送における異常を検知する。転送異常確認回路1500は、転送異常検知部の例である。
なお、論理チャネル1(620)も図13と同様の構成とする。
次に、本実施の形態におけるコマンドメモリ400の例を、図14に示す。
コマンドメモリ400内の論理チャネル0(610)が実行するCCWには、転送コマンドとステータスを加工するための演算コマンドがあり、演算コマンドは、転送が正常に完了している場合に実行するコマンド(CCW1(472)〜CCW5(476))と、転送に異常が発生した場合に実行するコマンド(CCW6(477)〜CCW9(480))に分かれる。
転送が正常に完了している場合に実行するコマンドであるCCW1(472)〜CCW5(476)は第1の加工手順の例であり、転送に異常が発生した場合に実行するコマンドであるCCW6(477)〜CCW9(480)は第2の加工手順の例である。
本実施の形態では、ステータス演算回路910は、転送異常確認回路1500により正常にデータ転送が完了した場合に第1の加工手順に従って複数のステータス情報を加工して第1の加工手順に従った集約ステータス情報を生成し、転送異常確認回路1500により転送回路1100のデータ転送において異常が検知された場合に第1の加工手順と異なる第2の加工手順に従って複数のステータス情報を加工して第2の加工手順に従った集約ステータス情報を生成する。
次に本実施の形態の動作例について説明する。
DMA転送装置100は転送の実行途中に異常が発生しなければ、CCW0(471)から順にCCWを読み込み、コマンドチェーンフラグがディセーブルであるCCW5(476)の実行を完了した段階でアイドル状態となり、CPU10から次のCCWのセットと起動されるのを待つ。
転送の実行途中に異常が発生した場合、転送要求部1110がコマンド個別制御部1020に対して、転送異常の通知を出す。
コマンド個別制御部1020は、転送異常の通知を受けると、転送異常確認回路1500に対して異常が発生したことを通知する。
転送異常確認回路1500は、転送異常発生の通知を受け、異常動作時に実行するCCWに分岐する。分岐の方法には、予め決められているアドレスに分岐する、CCWに分岐先のアドレスを記述しておきそのアドレスに分岐するなどが考えられるが、これに限定されない。
図14の例では、コマンド読み出し回路700に予め決められたエラー時用のコマンドである、CCW6(477)を読み出すように指令を出し、ステータス演算回路910はCCW6(477)からコマンドチェーンフラグがディセーブルであるコマンドのCCW9(480)までを順次実行する。CCW9(480)のコマンドチェーンフラグはディセーブルであるため、CCW9(480)を実行した論理チャネルは動作を終了する。
CCW6(477)〜CCW9(480)はエラー発生時に、エラーのステータス情報(ステータス3、ステータス4)を加工し、集約するための演算コマンドである。
このように本実施の形態では、コマンドメモリのCCWにエラーのステータス情報を加工して集約する演算コマンドをセットしておくことで、転送が正常に終了しなかった場合にCPUが行う処理を代行して行うことにより、CPUの処理時間を減らしCPU動作を高速にすることが出来る。
以上、本実施の形態では、
チャネルコマンドワード内には、転送コマンドと演算用のコマンドの他に、チャネルが正常に転送を完了出来なかった場合に実行するエラー発生時用のコマンドが格納されており、
チャネルが正常に転送を完了出来なかった場合には、正常動作時と異なるチャネルコマンドワードを実行するコマンドワードに分岐を行いエラー発生時用のコマンドの実行を開始することで、
異常発生時にCPUが行うべき処理をDMA転送装置が代行することを説明した。
なお、上記の説明では、データ転送部の例として転送回路1100を、ステータス情報生成部の例として転送制御回路1000を、コマンド入力部の例としてコマンド読み出し回路700を、ステータス情報入力部及び集約ステータス情報出力部の例としてステータスアクセス回路900を、ステータス情報加工部の例としてステータス演算回路910を説明したが、これら「〜部」は「〜回路」に限定されず、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
10 CPU、20 メモリ、100 DMA転送装置、200 バス制御回路、300 起動レジスタ、400 コマンドメモリ、410 コマンドメモリ、500 ステータスレジスタ群、610 論理チャネル0、620 論理チャネル1、700 コマンド読み出し回路、810 コマンド判別回路、820 演算コマンド供給回路、900 ステータスアクセス回路、910 ステータス演算回路、920 ワークレジスタ、930 演算時刻記憶機構、1000 転送制御回路、1010 コマンド全体制御部、1020 コマンド個別制御部、1030 完了時刻記憶機構、1100 転送回路、1110 転送要求部、1120 バッファ、1200 内部バス、1250 バスブリッジ、1260 外部バス、1300 タイマ回路、1400 チャネル動作確認回路、1500 転送異常確認回路。

Claims (6)

  1. データ転送元アドレスからデータ転送先アドレスにDMA(Direct Memory Access)によりデータを転送するデータ転送部と、
    前記データ転送部によるデータ転送が行われる度に、前記データ転送部によるデータ転送の状況を表すステータス情報を生成し、生成したステータス情報を所定のステータス情報蓄積領域に出力するステータス情報生成部と、
    前記データ転送部が所定数のデータ転送を完了し前記ステータス情報生成部が前記所定数のデータ転送のステータス情報を前記データ蓄積領域に出力するのに十分な時間が経過するのを待って、前記ステータス情報蓄積領域から複数のステータス情報を入力するステータス情報入力部と、
    前記ステータス情報入力部により入力された複数のステータス情報を論理演算し、前記複数のステータス情報にて表わされているデータ転送の状況が集約されて表される、特定のCPU(Central Processing Unit)に参照される集約ステータス情報を生成するステータス情報加工部と、
    前記ステータス情報加工部が集約ステータス情報を生成した時刻を集約ステータス情報生成時刻として計時し、前記ステータス情報加工部により生成された集約ステータス情報に集約ステータス情報生成時刻を示す情報を付加する時刻計時部と、
    前記時刻計時部により集約ステータス情報生成時刻を示す情報が付加された後の集約ステータス情報を、前記ステータス情報蓄積領域又は前記CPUに接続されているメモリに出力する集約ステータス情報出力部とを有することを特徴とする情報処理装置。
  2. 記時刻計時部は、
    前記ステータス情報生成部がステータス情報を生成した時刻をステータス情報生成時刻として計時し、前記ステータス情報生成部により生成されたステータス情報にステータス情報生成時刻を示す情報を付加することを特徴とする請求項に記載の情報処理装置。
  3. 前記情報処理装置は、更に
    記データ転送部のデータ転送における異常を検知する転送異常検知部とを有し、
    前記ステータス情報加工部は、
    前記データ転送部により正常にデータ転送が完了した場合に第1の加工手順に従って複数のステータス情報を論理演算して前記第1の加工手順に従った集約ステータス情報を生成し、前記異常検知部により前記データ転送部のデータ転送において異常が検知された場合に前記第1の加工手順と異なる第2の加工手順に従って複数のステータス情報を論理演算して前記第2の加工手順に従った集約ステータス情報を生成することを特徴とする請求項1又は2に記載の情報処理装置。
  4. 前記情報処理装置は、
    データ転送元アドレスからデータ転送先アドレスにデータを転送し、データ転送の状況を表すステータス情報を生成するデータ転送装置とともにデータ処理システムに含まれ
    記ステータス情報入力部は、
    前記データ転送装置によるデータ転送及びステータス情報の生成が終了し、前記データ転送部によるデータ転送及び前記ステータス情報生成部によるステータス情報の生成が終了した後に、前記データ転送装置によるステータス情報と、前記ステータス情報生成部によるステータス情報を入力することを特徴とする請求項1〜のいずれかに記載の情報処理装置。
  5. 前記情報処理装置は、
    データ転送元アドレスからデータ転送先アドレスにデータを転送するとともにデータ転送の状況を表すステータス情報を生成するデータ転送装置と、前記データ転送装置により生成されたステータス情報を蓄積するステータス情報蓄積領域とともにデータ処理システムに含まれ、
    前記情報処理装置は、更に
    記データ転送部によるデータ転送の完了及び前記ステータス情報生成部によるステータス情報の出力の完了と、前記データ転送装置によるデータ転送の完了及びステータス情報の出力の完了を検知する完了検知部を有し、
    前記ステータス情報入力部は、
    前記完了検知部により、前記データ転送部によるデータ転送の完了及び前記ステータス情報生成部によるステータス情報の出力の完了と、前記データ転送装置によるデータ転送の完了及びステータス情報の出力の完了が検知された後に、複数のステータス情報を入力することを特徴とする請求項1〜のいずれかに記載の情報処理装置。
  6. 前記データ転送部は、
    特定のCPUの指示に従って、データ転送元アドレスからデータ転送先アドレスにデータを転送し、
    前記情報処理装置は、更に、
    前記CPUからのコマンドであって前記データ転送部によるデータ転送を指示する転送コマンドと、前記CPUからのコマンドであって前記ステータス情報入力部による複数のステータス情報の入力を指示するステータス情報入力コマンドと、前記ステータスコマンド加工部によるステータス情報の論理演算を指示するステータス情報加工コマンドを入力するコマンド入力部を有し、
    前記データ転送部は、
    前記コマンド入力部により入力されたコマンドが転送コマンドである場合に、転送コマンドに従ってデータ転送元アドレスからデータ転送先アドレスにデータを転送し、
    前記ステータス情報入力部は、
    前記コマンド入力部により入力されたコマンドがステータス情報入力コマンドである場合に、ステータス情報入力コマンドに従って、複数のステータス情報を入力し、
    前記ステータス情報加工部は、
    前記コマンド入力部により入力されたコマンドがステータス情報加工コマンドである場合に、ステータス情報加工コマンドに従って、前記ステータス情報入力部により入力された複数のステータス情報を論理演算して集約ステータス情報を生成することを特徴とする請求項1〜のいずれかに記載の情報処理装置。
JP2009209889A 2009-09-11 2009-09-11 情報処理装置 Expired - Fee Related JP5268841B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009209889A JP5268841B2 (ja) 2009-09-11 2009-09-11 情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009209889A JP5268841B2 (ja) 2009-09-11 2009-09-11 情報処理装置

Publications (2)

Publication Number Publication Date
JP2011060051A JP2011060051A (ja) 2011-03-24
JP5268841B2 true JP5268841B2 (ja) 2013-08-21

Family

ID=43947596

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009209889A Expired - Fee Related JP5268841B2 (ja) 2009-09-11 2009-09-11 情報処理装置

Country Status (1)

Country Link
JP (1) JP5268841B2 (ja)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835788A (en) * 1996-09-18 1998-11-10 Electronics For Imaging System for transferring input/output data independently through an input/output bus interface in response to programmable instructions stored in a program memory
US7120708B2 (en) * 2003-06-30 2006-10-10 Intel Corporation Readdressable virtual DMA control and status registers
JP4589768B2 (ja) * 2005-03-17 2010-12-01 株式会社リコー 情報処理装置
JP2006277583A (ja) * 2005-03-30 2006-10-12 Hitachi Ltd データ処理システム、データ処理方法、及びプログラム
JP4839489B2 (ja) * 2008-02-06 2011-12-21 Necシステムテクノロジー株式会社 ディスクリプタ制御方法、ダイレクトメモリ転送装置およびプログラム

Also Published As

Publication number Publication date
JP2011060051A (ja) 2011-03-24

Similar Documents

Publication Publication Date Title
US10877766B2 (en) Embedded scheduling of hardware resources for hardware acceleration
US9733831B2 (en) Generation-based memory synchronization in a multiprocessor system with weakly consistent memory accesses
US6332181B1 (en) Recovery mechanism for L1 data cache parity errors
KR101231558B1 (ko) 마이크로프로세서에서의 전압 및 주파수의 신뢰성있는 설정
JP2011070655A (ja) 情報処理装置、メモリダンプシステムおよびメモリダンプ方法
TWI492040B (zh) 處理器、資訊處理設備、及電力消耗管理方法
JP2010140361A (ja) コンピュータシステム及び異常検出回路
US8522076B2 (en) Error detection and recovery in a shared pipeline
JP4992740B2 (ja) マルチプロセッサシステム、障害検出方法および障害検出プログラム
TWI596612B (zh) 記憶體管理方法、記憶體控制電路單元與記憶體儲存裝置
WO2011137833A1 (zh) 一种网络处理器和网络处理器所存程序的诊断方法
JP2006309276A (ja) デバッグ機構およびデバッグレジスタ
US8135960B2 (en) Multiprocessor electronic circuit including a plurality of processors and electronic data processing system
JP5054558B2 (ja) マルチコアlsi
US8874965B2 (en) Controlling program code execution shared among a plurality of processors
JP5268841B2 (ja) 情報処理装置
US7603489B2 (en) Direct memory access controller including first and second transfer setting registers
JPH07141176A (ja) コマンドリトライ制御方式
US7916146B1 (en) Halt context switching method and system
WO2019169582A1 (zh) 处理中断的方法和装置
US7711885B2 (en) Bus control apparatus and bus control method
WO2012101759A1 (ja) プロセッサ処理方法、およびプロセッサシステム
CN101311909A (zh) 诊断系统异样的方法
JP5844134B2 (ja) マルチプロセッサ装置及びマルチプロセッサ装置の制御方法
US11010318B2 (en) Method and apparatus for efficient and flexible direct memory access

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120201

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130205

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130312

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130507

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees