(57)【要約】【課題】ダイレクトメモリアクセスによるデータ転送機能のあるプロセッサシステムにおいて、入出力装置でデータ受信エラーを検出した際でも、入出力装置からのデータ転送を停止したり、プロセッサで割り込み処理を行ったりせずに、エラーの発生したデータのみ破棄可能なダイレクトメモリアクセスデータ転送機能を提供する。【解決手段】ダイレクトメモリアクセスによる入出力装置とメモリ間のデータ転送時に、入出力装置あるいはダイレクトメモリアクセス制御装置において、入出力装置の受信したデータと入出力装置の状態を組にした後に、メモリへ転送する。【効果】入出力処理機能の低下を抑制しながら、プロセッサから割り込み処理を排除することを可能となる。【選択図】  図１
2004178122.tif 000002
【特許請求の範囲】
【請求項１】
ダイレクトメモリアクセス転送機能を持つプロセッサシステムにおいて、ダイレクトメモリアクセスによる入出力装置からメモリへの転送を行う際に、前記入出力装置が受信したデータと前記入出力装置のステータスを組にしてメモリへ書き込む手段を持つプロセッサシステム。
【請求項２】
ダイレクトメモリアクセス機能を持つプロセッサシステムにおいて、前記ダイレクトメモリアクセス機能を制御する装置が入出力装置にアクセスした際に、前記入出力装置が受信したデータと前記データ受信時のステータスを組したデータを読み出す手段を持つ入出力装置。
【請求項３】
ダイレクトメモリアクセス機能を持つプロセッサシステムにおいて、入出力装置に前記ダイレクトメモリアクセス機能を制御する装置がアクセスする際に、前記入出力装置の複数の箇所からデータを読み出す手段を持ち、前記複数の箇所から読み出したデータを組にする手段を持ち、かつメモリへ書き込む手段を持つダイレクトメモリアクセス機能制御装置。
【請求項４】
請求項３記載のダイレクトメモリアクセス機能制御装置で、入出力装置の受信データを保持する場所及び前記入出力装置の状態を保持する場所からデータを読み出し、読み出したデータを組にしてメモリへ書き込むことが可能なダイレクトメモリアクセス機能制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ダイレクトメモリアクセス転送機能付プロセッサシステムに関する。
【０００２】
【従来の技術】
入出力装置とデータ転送を行う場合、入出力装置のデータ転送速度に対応する為や、プロセッサ処理能力の消費を抑制する為に、ダイレクトメモリアクセス（ＤＭＡ）制御装置を用いたデータ転送が各種プロセッサシステムで利用されている。このような従来技術の例として特許文献１に示された装置がある。この例では、通信用チップがデータを受信した際に、ＤＭＡ転送を用いている。
【０００３】
【特許文献１】
特開平９−１１４７７１号公報
【０００４】
【発明が解決しようとする課題】
ＤＭＡ転送により入出力装置からデータを入力する際に、入出力装置内でエラーを検出した場合、エラーを適切に処理するために、割り込み処理やデータ入力中止が必要となることがある。特許文献１に示された装置では、エラーが発生した場合には、割り込み処理を用いている。割り込み処理やデータ入力中止を行わない場合には、プロセッサが入出力装置のエラー検出情報を確認しエラーを検出した時点で、基本的には最後にプロセッサがエラー発生状況を確認し、エラーが無いことを確認した以降に入力したデータ全てを破棄する必要がある。
【０００５】
したがって、エラー発生時に破棄する入力データ量を極力抑える為には、割り込み処理を用いるか、入出力装置でのデータ受信を停止するか、あるいはプロセッサが頻繁に入出力装置のエラー検出情報を確認する必要がある。
【０００６】
しかしデータ受信を停止する方法では、プロセッサがエラーを検出し転送を再開するまでデータ送信側から入出力装置への通信が途絶え、データ送信側の制御が困難である場合は、データ送信側からのデータを取りこぼすことになる。プロセッサが頻繁に入出力装置を確認する方法では、プロセッサへの負担が大きい。割り込み処理を用いる方法は、プロセッサでリアルタイム処理を行っている場合に、実行時間に対する影響の予測が難しく、極力避けたい場合がある。特に、命令キャッシュメモリを持つプロセッサでは、割り込み発生時に割り込み処理プログラムにより命令キャッシュメモリの内容が一部置き換えられることから、本来実行しているプログラムの実行時間に与える影響も大きくなり、この要求も大きくなる。
【０００７】
入出力装置でのデータ受信を停止せず、プロセッサへの負担も抑えながら、エラーの発生したデータのみ、あるいはエラーの発生したデータとその周辺のデータのみ破棄可能なＤＭＡ転送手段を持つシステムを提供するのが、この発明が解決しようとする課題である。
【０００８】
【課題を解決するための手段】
ＤＭＡ転送により入出力装置の受信データをメモリへ転送する際、入出力装置側で受信データと入出力装置のステータスを組で準備し、この組をＤＭＡ転送する。あるいは、ＤＭＡ制御装置が入出力装置からデータを読み出す際に、入出力装置の受信データとステータスを個別に読み出し、ＤＭＡ制御装置がそれらを組み合わせてから、メモリへ書き込む。
【０００９】
プロセッサは、ＤＭＡ転送により入出力装置からメモリに書き込まれた受信データを処理する際に、その受信データと組になる入出力装置のステータスを確認し、エラーを検出した場合には、エラーに関係するデータについて、エラー回復処理を行う。
【００１０】
【発明の実施の形態】
図１を用いて、第１の実施の形態を説明する。バス６００には入出力装置１００、ＤＭＡ制御装置２００、プロセッサ３００、メモリインタフェース４００が接続してある。メモリ５００はメモリインタフェース４００を介してバス６００に接続されており、データの格納やプロセッサ３００が実行するプログラムコードの格納に利用する。ＤＭＡ転送により入出力装置１００から転送するデータも、メモリ５００に格納する。
【００１１】
入出力装置１００の内部には、バス６００に接続する為のバスインタフェース１１０、ＤＭＡ転送するデータを一時格納しておくデータバッファ１２０、入出力装置の制御を行う制御装置１３０、入出力装置１００の受信データを内部形式データに変換する受信側フォーマット変換装置１４０、内部形式データを入出力装置１００からの送信データに変換する送信側フォーマット変換装置１５０がある。例えば入出力装置１００がシリアルインタフェースである場合、受信側フォーマット変換装置１４０はシリアル−パラレル変換器、送信側フォーマット変換装置１５０はパラレル−シリアル変換器である。
【００１２】
データバッファ１２０には入出力装置１００の制御装置１３０が検出したエラー情報等のステータス１２１と受信側フォーマット変換装置１４０経由で入力したデータ１２２を格納する。データバッファ１２０が複数のエントリを持つ場合には、各エントリがステータス１２１とデータ１２２を組にして保持する。
【００１３】
ＤＭＡ転送で入出力装置１００から受信データをメモリ５００に転送する場合、まず入出力装置１００及びＤＭＡ制御装置２００をプロセッサ３００により初期設定する。外部装置９００より入出力装置１００にデータが受信され、データバッファ１２０にデータ１２２を格納すると、その時点での制御装置１３０のステータス１２１もデータバッファ１２０に格納する。一度データバッファ１２０に格納した後は、データ１２２とステータス１２１を組にして取り扱う。
【００１４】
バスインタフェース１１０はデータバッファ１２０にデータ１２２とステータス１２１の組が格納されたことを検出すると、ＤＭＡ制御装置２００にＤＭＡ転送要求を出す。ＤＭＡ制御装置２００はＤＭＡ転送要求を入出力装置１００より受け取ると、バス６００経由で入出力装置１００のアクセスを行い、データバッファ１２０に格納されているデータ１２０とステータス１２１の組を読み出す。この後、ＤＭＡ制御装置２００はメモリインタフェース４００に対して、バス６００経由で読み出したデータとステータスの組を１個のデータとしてメモリに書き込む要求を出す。この際、ＤＭＡ制御装置２００はデータを書き込むアドレスもメモリインタフェース４００に指示する。
【００１５】
ＤＭＡ制御装置２００はメモリ５００へのデータ書き込み指示をメモリインタフェース４００に出した後、データを書き込むアドレスを更新する。
【００１６】
入出力装置１００がシリアルインタフェースであると仮定し、図２で示すフレーム構造を単位とした通信を外部装置９００と行うことを例としてＤＭＡ転送動作を説明する。
【００１７】
図２に示すフレームの先頭には１６進数でＡ５Ｈが３バイトスタートコード１２００として存在し、その後にデータ０（１４０１）からデータ３１（１４３２）まで合計３２バイトのデータが続く。さらに１バイトのＣＲＣ１２１１コードが付加してある。また、フレーム内のデータでＡ５Ｈが３バイト以上連続する場合、２連続毎に１６進数で００Ｈが挿入し、データ部分とスタートコード１２００の識別を可能とする。ＣＲＣ１２１１の値についても、Ａ５Ｈとなる場合には、最上位ビットを反転し、２５Ｈとする。
【００１８】
入出力装置１００が図２に示すフレームを受信すると、バイト毎に受信側フォーマット変換装置１４０でシリアル−パラレル変換が行われ、変換結果をデータバッファ１２０に格納する。同時に受信側フォーマット変換装置１４０は通信エラー検出を行い、検出結果は制御装置１３０経由でデータバッファ１２０にステータス１２１として格納する。データバッファ１２０に１バイト分のデータ１２２及びステータス１２１が格納されると、バスインタフェース１１０はＤＭＡ制御装置２００にＤＭＡ転送要求を出す。
【００１９】
ＤＭＡ制御装置２００はＤＭＡ転送要求を受け取ると、バス６００及びバスインタフェース１１０経由でデータバッファ１２０より、ステータス１２１とデータ１２２の組を読み出す。
【００２０】
ＤＭＡ制御装置２００はステータス１２１とデータ１２２の組を読み出すと、次にその組をバス６００及びメモリインタフェース４００経由でメモリ５００に書き込む。
【００２１】
あるフレーム全体の入力が完了し、メモリ５００へのＤＭＡ転送が完了した際のメモリ５００内のデータ書き込み状態を、図３を用いて説明する。
【００２２】
オフセットアドレス＋００から＋０５までの６バイトには、フレームのスタートコード１２００の１バイト目（１２０１）とそれに対応するステータスＳ０（１３０１）、２バイト目（１２０２）とそれに対応するステータスＳ１（１３０２）、３バイト目（１２０３）とそれに対応するステータスＳ２（１３０３）が格納される。
【００２３】
オフセットアドレス＋０６から＋６９までの６４バイトには、フレームのデータ１４００が、データ０（１４０１）とそれに対応するステータス０（１５０１）から順にデータ３１（１４３２）とそれに対応するステータス３１（１５３２）まで格納される。
【００２４】
オフセットアドレス＋７０から＋７１までの２バイトには、データ０からデータ３１までのＣＲＣ（１２１１）とそのステータス（１３１１）が格納される。
【００２５】
図４に示すような複数のフレームを入出力装置１００が受信した場合、各フレームは図５に示すようにメモリ５００に格納される。すなわち、入出力装置１００がフレームを受信した順に従って、メモリ５００に連続して格納される。但し、ＤＭＡ転送領域はリングバッファとして取り扱うため、入出力装置１００からのＤＭＡ転送領域として割り当てたメモリ領域を超えた場合には、ＤＭＡ転送領域の先頭に戻ってデータの格納を継続する。
【００２６】
プロセッサ３００は、入出力装置１００が受信したデータを処理する際には、メモリ５００に入出力装置１００からのＤＭＡ転送用として用意した領域が溢れない頻度で、メモリ５００に格納されたデータの処理を行う。例えば、メモリ５００に１０フレーム分の格納領域を用意した場合、８フレーム程度の入力に要する時間間隔で、メモリ５００に格納されたデータの処理を行う。
【００２７】
プロセッサ３００はメモリ５００に格納された受信データ処理を行う際に、その受信データに対応するステータスの確認を行い、エラー検出する。
【００２８】
プロセッサ３００はエラーを検出した場合、現在処理中のフレームを破棄し、外部装置９００にデータ再送要求を出す等のエラー処理を行うとともに、次のフレームの開始を検索する。
【００２９】
次のフレームの開始位置検索はスタートコード１２００のバイト列を発見することにより行う。したがって、入力データを失ってフレームのバイト長が正常なフレームと異なっても、次のフレームを検出可能である。
【００３０】
次のフレームの開始位置検索を行う際、現在処理中のフレームのスタートコード１２００内にエラーを検出した場合には、スタートコード１２００の先頭からスタートコード１２００の長さ分だけ跳ばしたところから検索を行う。データ１４００またはＣＲＣ１２１１にエラーが存在する場合には、その次のバイトから検索を行う。
【００３１】
以上の方法を用いることで、複数のフレームデータがメモリ５００に格納された段階で、プロセッサ３００がまとめて処理を行う場合に、あるフレームにエラーが存在しても、正常なフレームについては通常処理が可能である。すなわち、ＤＭＡ転送時にも入力時にエラーを起こしたフレームやデータの位置を特定できる為、エラー処理を行う際に、エラーを起こした個所のみ破棄することが可能となる。
【００３２】
第２の実施の形態として、図１に示したＤＭＡ制御装置２００の代わりに図７に示す別のＤＭＡ制御装置２２００を用い、図１に示した入出力装置１００の代わりに図６に示す別の入出力装置２１００を用いる方法を、図６及び図７を用いて説明する。第２の実施の形態でも、ＤＭＡ制御装置と入出力装置が異なる以外は、図１と同じシステムの構成をとる。
【００３３】
図６に示す入出力装置２１００は、入出力装置１００とは異なり、ステータス１２１とデータ１２２を組にするデータバッファ１２０が存在しない。
【００３４】
図７のＤＭＡ制御装置２２００には、転送先アドレスを保持する１個の転送先アドレスレジスタ２２２０に対して、転送元アドレスを保持する転送元アドレスレジスタＡ２２２５と転送元アドレスレジスタＢ２２２６が存在する。
【００３５】
ＤＭＡ制御装置２２００がＤＭＡ転送を行う際には、予めプロセッサ３００により転送元アドレスレジスタＡに入出力装置２１００のステータスを読み出す為のアドレスを設定し、転送元アドレスレジスタＢに入出力装置２１００から受信データを読み出す為のアドレスを設定する。転送先アドレスレジスタ２２２０には、ＤＭＡ転送したデータの格納に割り当てた領域の開始アドレスを設定する。
【００３６】
ＤＭＡ制御装置２２００は入出力装置２１００よりＤＭＡ転送要求信号を受け取ると、制御装置２２４０は選択器２２３０を制御して、転送元アドレスレジスタＡ２２２５が保持するアドレスをバスインタフェース２２６０に供給する。バスインタフェースは制御装置２２４０の指示に従い、バス６００を介して転送元アドレスレジスタＡ２２２５が保持するアドレスからデータを読み出し、バッファＡ２２５５に格納する。すなわち、入出力装置２１００のステータスをバッファＡ２２５５に格納する。
【００３７】
次に制御装置２２４０は選択器２２３０を制御して、転送元アドレスレジスタＢ２２２６が保持するアドレスをバスインタフェース２２６０に供給する。バスインタフェースは制御装置２２４０の指示に従い、バス６００を介して転送元アドレスレジスタＢ２２２６が保持するアドレスからデータを読み出し、バッファＢ２２５６に格納する。すなわち、入出力装置２１００の受信データをバッファＢ２２５６に格納する。
【００３８】
以上の過程により、バッファ２２５０には入出力装置２１００のステータスと受信データの組が格納される。
【００３９】
次に制御装置２２４０は選択器２２３０を制御して、転送先アドレスレジスタ２２２０が保持するアドレスをバスインタフェース２２６０に供給する。バスインタフェースは制御装置２２４０の指示に従い、バス６００を介してバッファ２２５０において組となったデータを転送先アドレスレジスタ２２２０が保持するアドレスへ書き込む。すなわち、入出力装置２１００のステータスと受信データが組となる状態でメモリ５００に書き込む。
【００４０】
最後に、次アドレス生成器２２１０で次にメモリ５００にバッファ２２５０の内容を書き込むアドレスを算出し、算出結果を転送先アドレスレジスタ２２２０に書き込む。
【００４１】
以上の処理により、第２の実施の形態でも第１の実施の形態と同様の内容をメモリ５００に格納することが可能である。したがって、エラー処理では第１の実施の形態と同じ方法が利用可能である。
【００４２】
第１及び第２の実施の形態で、入出力装置には外部装置が接続してあるが、システムが複数のブロックにより構成される場合、各ブロックに入出力装置に相当する機能が存在し、ブロック間で入出力装置に相当する機能を介して通信を行うことも考えられる。
【００４３】
【発明の効果】
ＤＭＡ転送時にも入出力装置で入力時にエラーを起こしたフレームやデータの位置を特定できる。この結果、ＤＭＡ転送時に入出力装置で入力エラーを検出した際に、入出力装置の入力動作を停止したり、プロセッサによる割り込み処理を行ったりすること無しに、エラーを起こした個所のみ破棄することが可能となる。したがって、入出力処理機能の低下を抑制しながら、プロセッサから割り込み処理を排除することを可能とする。特に命令キャッシュを持つプロセッサでは、割り込み処理による命令キャッシュの汚染が避けられるため、実行速度の向上が望め、かつリアルタイム処理における実行時間の予測が容易になる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態に係るブロック図である。
【図２】入出力装置に入力する信号のフレーム構成例を示す図である。
【図３】図２に示すフレーム構成例を入出力装置が受信しＤＭＡ転送が行われた際のメモリへのデータ格納状態を示す図である。
【図４】図２に示すフレームを連続して入出力装置に入力する例である。
【図５】図４に示すフレームの連続を入出力装置が受信しＤＭＡ転送が行われた際のメモリへのデータ格納状態を示す図である。
【図６】本発明の第２の実施の形態に係る入出力装置のブロック図である。
【図７】本発明の第２の実施の形態に係るＤＭＡ制御装置のブロック図である。
【符号の説明】
１００…第１の実施の形態で用いる入出力装置、１１０…第１の入出力装置のバスインタフェース、１２０…第１の入出力装置のデータバッファ、１２１…受信データに対応する第１の入出力装置のステータス、１２２…第１の入出力装置の受信データ、１３０…第１の入出力装置の制御装置、１４０…第１の入出力装置の受信側フォーマット変換装置、１５０…第１の入出力装置の送信側フォーマット変換装置、２００…第１の実施の形態で用いるダイレクトメモリアクセス（ＤＭＡ）制御装置、３００…プロセッサ、４００…メモリインタフェース、５００…メモリ、６００…バス、９００…外部装置、１２００…フレームの例を構成するスタートコード、１２０１、１２０２、１２０３…スタートコードの構成バイト、１２１１…フレームの例を構成するＣＲＣバイト、１４００…フレームの例を構成するデータ、１４０１、１４０２、１４３２…データの構成バイト、１３０１、１３０２、１３０３…スタートコードの構成バイトに対応するステータス、１３１１…ＣＲＣバイトに対応するステータス、１５０１、１５０２、１５３２…データの構成バイトに対応するステータス、１６００、１６０１、１６０２、１６０５、１６０６、１６０７…フレーム列の例の構成フレーム、２１００…第２の実施の形態で用いる入出力装置、２１１０…第２の入出力装置のバスインタフェース、２１３０…第２の入出力装置の制御装置、２１４０…第２の入出力装置の受信側フォーマット変換装置、２１５０…第２の入出力装置の送信側フォーマット変換装置、２２００…第２の実施の形態で用いるダイレクトメモリアクセス（ＤＭＡ）制御装置、２２１０…第２のＤＭＡ制御装置の次アドレス生成器、２２２０…第２のＤＭＡ制御装置の転送先アドレスレジスタ、２２２５…第２のＤＭＡ制御装置の転送元アドレスレジスタＡ、２２２６…第２のＤＭＡ制御装置の転送元アドレスレジスタＢ、２２３０…第２のＤＭＡ制御装置の選択器、２２４０…第２のＤＭＡ制御装置の制御装置、２２５０…第２のＤＭＡ制御装置のバッファ、２２５５…第２のＤＭＡ制御装置のバッファＡ、２２５６…第２のＤＭＡ制御装置のバッファＢ、２２６０…第２のＤＭＡ制御装置のバスインタフェース。
【図１】
2004178122.tif 000003
【図２】
2004178122.tif 000004
【図３】
2004178122.tif 000005
【図４】
2004178122.tif 000006
【図５】
2004178122.tif 000007
【図６】
2004178122.tif 000008
【図７】
2004178122.tif 000009