(57)【要約】    【課題】      コストおよびデータ転送ドライバの処理負荷を軽減させることができる通信制御装置を提供すること。    【解決手段】  通信制御装置１００は、送信側ＣＰＵ１０２と受信側ＣＰＵ１０８との間でのデータの通信を制御する制御装置と転送レジスタ１０６とを具備している。前記制御装置は、送信側ＤＭＡ１０３、転送制御回路１１２及び受信側ＤＭＡ１０９を具備している。前記制御装置は、送信側ＣＰＵ１０２からのデータストリームを分割して分割単位データを生成し、転送レジスタ１０６に書き込み、転送レジスタ１０６に書き込まれた分割単位データを読み出して受信側ＣＰＵ１０８に転送する。  【選択図】      図１
2005136686.tif 000002
【特許請求の範囲】
【請求項１】
送信装置と受信装置との間でのデータの通信を制御する制御手段と転送記憶装置とを具備し、
前記制御手段は、前記送信装置からのデータストリームを分割して分割単位データを生成するデータ分割手段と、前記データ分割手段により生成された前記分割単位データを前記転送記憶装置に書き込むデータ書き込み手段と、前記転送記憶装置に書き込まれた前記分割単位データを読み出して前記受信装置に転送するデータ読み出し転送手段と、を具備することを特徴とする通信制御装置。
【請求項２】
前記送信装置は、データストリームを記憶するためのデータストリーム記憶手段において送信データ格納領域を確保する送信データ格納領域確保手段と、確保された前記送信データ格納領域に前記データストリームを記憶させる手段と、前記データ格納領域に前記データストリームを記憶させた時に前記制御手段に対して通知する通知手段と、を具備し、
前記受信装置は、データストリームを記憶するための他のデータストリーム記憶手段において他の前記データ格納領域を確保する受信データ格納領域確保手段と、前記他のデータ格納領域を確保することができた時に前記制御手段に対して他の通知をする他の通知手段と、を具備し、
前記制御手段は、前記送信装置からの前記通知を受けた後に前記分割単位データの前記転送記憶装置への書き込みを開始し、前記受信装置からの前記他の通知を受けた後に前記転送記憶装置に書き込まれた前記分割単位データの前記受信装置への転送を開始し、前記転送記憶装置への前記分割単位データの書き込みと前記受信装置への前記分割単位データの転送とを交互に行うことを特徴とする請求項１記載の通信制御装置。
【請求項３】
前記転送記憶装置の容量が１語長であり、かつ、前記分割単位データのサイズも１語長であることを特徴とする請求項１及び請求項２のいずれかに記載の通信制御装置。
【請求項４】
送信装置と受信装置との間でのデータの通信を制御する通信制御方法であって、
前記送信装置からのデータストリームを分割して分割単位データを生成するステップと、生成された前記分割単位データを転送記憶装置に書き込むステップと、前記転送記憶装置に書き込まれた前記分割単位データを読み出して前記受信装置に転送するステップと、を具備することを特徴とする通信制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信データの転送を効率良く行う通信制御装置に関するものである。
【背景技術】
【０００２】
従来の通信制御装置としては、図８に示すものが知られている（特許文献１参照）。この従来の通信制御装置は、データ送信時には、データを一時的に格納するデュアルポートメモリ装置１５の空き領域にデータを書き込むとともに、このデータが書き込まれたデュアルポートメモリ装置１５の領域の書き込みアドレスをライトポインタ２１に格納する。また、従来の通信制御装置は、データ受信時には、ライトポインタ２１に格納された書き込みアドレスに基づいてデュアルポートメモリ装置１５からデータを読み出すとともに、このデータが読み出されたデュアルポートメモリ装置１５の領域の読み出しアドレスをリードポインタ２３に格納する。そして、従来の通信制御装置は、データ送信時にデュアルポートメモリ装置１５に前記データを書き込む前に、リードポインタ２３に格納された読み出しアドレスに基づいてデュアルポートメモリ装置１５の空き領域を認識する構成を有しており、デュアルポートメモリ装置１５を使用して２つのＣＰＵ１１、１３間でデータ転送を行うことができる。
【特許文献１】特開２００２−２０７７１３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、従来の通信制御装置においては、ＣＰＵ間の転送デバイスとしてデュアルポートメモリ装置のような大容量の共有メモリ装置が必要なため、コスト上昇およびデータ転送ドライバのソフトウェア処理負荷が高くなる問題がある。また、従来の通信制御装置においては、デュアルポートメモリ装置の容量より大きなサイズの通信データを転送する場合には、通信データを幾つかのブロックに分割して転送し、受信側で通信データを再結合するという必要があるため、処理が複雑になる問題がある。
【０００４】
本発明は、かかる点に鑑みてなされたものであり、コストおよびデータ転送ドライバの処理負荷を軽減させることができる通信制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
請求項１に係る通信制御装置は、送信装置と受信装置との間でのデータの通信を制御する制御手段と転送記憶装置とを具備し、前記制御手段は、前記送信装置からのデータストリームを分割して分割単位データを生成するデータ分割手段と、前記データ分割手段により生成された前記分割単位データを前記転送記憶装置に書き込むデータ書き込み手段と、前記転送記憶装置に書き込まれた前記分割単位データを読み出して前記受信装置に転送するデータ読み出し転送手段と、を具備する構成を採る。
【０００６】
この構成によれば、コストおよびデータ転送ドライバの処理負荷を軽減させることができる。
【０００７】
請求項２に係る通信制御装置は、請求項１記載の通信制御装置において、前記送信装置は、データストリームを記憶するためのデータストリーム記憶手段において送信データ格納領域を確保する送信データ格納領域確保手段と、確保された前記送信データ格納領域に前記データストリームを記憶させる手段と、前記データ格納領域に前記データストリームを記憶させた時に前記制御手段に対して通知する通知手段と、を具備し、前記受信装置は、データストリームを記憶するための他のデータストリーム記憶手段において他の前記データ格納領域を確保する受信データ格納領域確保手段と、前記他のデータ格納領域を確保することができた時に前記制御手段に対して他の通知をする他の通知手段と、を具備し、前記制御手段は、前記送信装置からの前記通知を受けた後に前記分割単位データの前記転送記憶装置への書き込みを開始し、前記受信装置からの前記他の通知を受けた後に前記転送記憶装置に書き込まれた前記分割単位データの前記受信装置への転送を開始し、前記転送記憶装置への前記分割単位データの書き込みと前記受信装置への前記分割単位データの転送とを交互に行う構成を採る。
【０００８】
この構成によれば、請求項１の効果に加えて、受信装置からの通知を受けた後に転送記憶装置に書き込まれた分割単位データの受信装置への転送を開始し、転送記憶装置への分割単位データの書き込みと受信装置への分割単位データの転送とを交互に行うことで、データの受け渡しを確実に行うことができる。
【０００９】
請求項３に係る通信制御装置は、請求項１及び請求項２のいずれかに記載の通信制御装置において、前記転送記憶装置の容量が１語長であり、かつ、前記分割単位データのサイズも１語長である構成を採る。
【００１０】
この構成によれば、請求項１及び請求項２のいずれかの効果に加えて、転送記憶装置のデータ記憶サイズを１ワード長とすることで、送信装置と受信装置の間に配置する通信用デバイス及び前記デバイスの周辺回路を簡略化することができる。
【００１１】
請求項４に係る通信制御方法は、送信装置と受信装置との間でのデータの通信を制御する通信制御方法であって、前記送信装置からのデータストリームを分割して分割単位データを生成するステップと、生成された前記分割単位データを転送記憶装置に書き込むステップと、前記転送記憶装置に書き込まれた前記分割単位データを読み出して前記受信装置に転送するステップと、を具備するようにした。
【００１２】
この方法によれば、コストおよびデータ転送ドライバの処理負荷を軽減させることができる。
【発明の効果】
【００１３】
本発明によれば、コストおよびデータ転送ドライバの処理負荷を軽減させることができる。
【発明を実施するための最良の形態】
【００１４】
本発明の骨子は、送信装置から受信装置へ少容量の転送メモリ装置を介してデータの転送を行う時に、送信装置が送信データを転送メモリ装置の容量に合わせてデータを分割した分割単位データを生成し、送信装置が転送メモリ装置に分割単位データを書き込む動作と、受信装置が転送メモリ装置から分割単位データを読み込む動作とを交互に行うことである。
【００１５】
以下、本発明の実施の形態について図面を参照して詳細に説明する。
【００１６】
（一実施の形態）
図１は、本発明の一実施の形態に係る通信制御装置１００の構成を示す図である。通信制御装置１００は、送信側ＣＰＵユニット１０１、送信側ローカルメモリ装置１０４、転送レジスタ１０６、受信側ＣＰＵユニット１０７、受信側ローカルメモリ装置１１０、転送制御回路１１２、送信側ＣＰＵデータバス１１９、送信側ＣＰＵアドレスバス１２０、受信側ＣＰＵアドレスバス１２１、受信側ＣＰＵデータバス１２２、通信データ受信要求ライン１２３、通信データ送信要求ライン１２４、送信側ＤＭＡ（Direct Memory Access）転送要求ライン１２５、送信側ＤＭＡ転送応答ライン１２６、受信側ＤＭＡ転送要求ライン１２７及び受信側ＤＭＡ転送応答ライン１２８を具備する。
【００１７】
送信側ＣＰＵユニット１０１は、送信側ＣＰＵ１０２及び送信側ＤＭＡ１０３を有する。送信側ローカルメモリ装置１０４は、送信側メモリプール１０５を有する。受信側ＣＰＵユニット１０７は、受信側ＣＰＵ１０８及び受信側ＤＭＡ１０９を有する。転送制御回路１１２は、送信側ＤＭＡリクエスト制御フリップフロップ１１３、受信側ＤＭＡリクエスト制御フリップフロップ１１４、ＯＲゲート１１５、ＯＲゲート１１６、ＮＯＴゲート１１７及びＮＯＴゲート１１８を有する。
【００１８】
送信側ＣＰＵデータバス１１９は、送信側ＣＰＵ１０２、送信側ＤＭＡ１０３、送信側ローカルメモリ装置１０４及び転送レジスタ１０６を接続している。送信側ＣＰＵアドレスバス１２０は、送信側ＣＰＵ１０２、送信側ＤＭＡ１０３、送信側ローカルメモリ装置１０４及び転送レジスタ１０６を接続している。受信側ＣＰＵアドレスバス１２１は、受信側ＣＰＵ１０８、受信側ＤＭＡ１０９、受信側ローカルメモリ装置１１０及び転送レジスタ１０６を接続している。受信側ＣＰＵデータバス１２２は、受信側ＣＰＵ１０８、受信側ＤＭＡ１０９、受信側ローカルメモリ装置１１０及び転送レジスタ１０６を接続している。
【００１９】
通信データ受信要求ライン１２３は、送信側ＣＰＵ１０２の出力端子と受信側ＣＰＵ１０８及びＯＲゲート１１６の入力端子とを接続している。通信データ送信要求ライン１２４は、受信側ＣＰＵ１０８の出力端子とＯＲゲート１１５の入力とを接続している。送信側ＤＭＡ転送要求ライン１２５は、送信側ＤＭＡ１０３の入力端子と送信側ＤＭＡリクエスト制御フリップフロップ１１３のＱ出力端子とを接続している。送信側ＤＭＡ転送応答ライン１２６は、送信側ＤＭＡ１０３の出力端子とＯＲゲート１１６及びＮＯＴゲート１１８の入力端子とを接続している。受信側ＤＭＡ転送要求ライン１２７は、受信側ＤＭＡ１０９の入力端子と受信側ＤＭＡリクエスト制御フリップフロップ１１４のＱ出力端子とを接続している。受信側ＤＭＡ転送応答ライン１２８は、受信側ＤＭＡ１０９の出力端子とＯＲゲート１１５の入力端子とを接続している。
【００２０】
送信側ＣＰＵ１０２は、送信側の制御処理の全般を行う。送信側ＤＭＡ１０３は、送信側メモリプール１０５から転送レジスタ１０６へ分割単位データのＤＭＡ転送を行う。送信側ローカルメモリ装置１０４は、送信側ＣＰＵユニット１０１により制御される。受信側ＣＰＵ１０８は、受信側の制御処理の全般を行う。受信側ＤＭＡ１０９は、転送レジスタ１０６から受信側メモリプール１１１へ分割単位データのＤＭＡ転送を行う。受信側ローカルメモリ装置１１０は、受信側ＣＰＵ１０８により使用される。転送レジスタ１０６は、１ワード長の容量を持っており、送信側ＣＰＵユニット１０１から送られる転送サイズデータ及び分割単位データを一時的に保存する。転送制御回路１１２は、ＤＭＡ転送動作を制御する。なお、分割単位データは、データストリームが転送レジスタ１０６の容量に応じた大きさに分割されたものであり、ここでは１ワード長の大きさを持っている。
【００２１】
次に、この通信制御装置１００における送信側ＣＰＵユニット１０１から受信側ＣＰＵユニット１０７へのデータの送信について説明する。
【００２２】
送信側ＣＰＵユニット１０１側から転送レジスタ１０６を介して受信側ＣＰＵユニット１０７側へデータの送信行う時には、送信側ＣＰＵ１０２は、データストリームを生成するための送信データ領域を送信側ローカルメモリ装置１０４が有する送信側メモリプール１０５から獲得する。送信側ＣＰＵ１０２は、生成するデータストリームの転送サイズ分の送信データ領域の獲得に成功した時には、送信データ領域上に通信データ用のヘッダと通信データメッセージとを有するデータストリームを生成する。
【００２３】
次に、データストリームの転送サイズを転送レジスタ１０６に書き込む。続いて、送信側ＣＰＵ１０２は、通信データ受信要求ライン１２３をＬＯＷの状態から一度ＨＩＧＨに遷移させ再びＬＯＷに遷移させてワンショットパルスを生成する。送信側ＣＰＵ１０２は、そのワンショットパルスにより送信側ＤＭＡリクエスト制御フリップフロップ１１３をＲＥＳＥＴしてＱ出力端子をＬＯＷ状態に遷移させると共に受信側ＣＰＵ１０８に割込みを発生させて通信データ受信要求を通知する。
【００２４】
続いて、送信側ＣＰＵ１０２は送信側ＤＭＡ１０３を設定する。具体的には、送信側ＣＰＵ１０２は、転送元アドレスを初期値は送信データ領域の先頭アドレスとし１ワード転送毎に転送元アドレスをインクリメントする設定とし、かつ、転送先アドレスを転送レジスタ１０６のアドレスとして固定アドレス転送設定とする。また、送信側ＣＰＵ１０２は、転送データサイズに送信データストリームの転送サイズを設定してＤＭＡ転送を許可し、送信側ＤＭＡ転送要求ライン１２５にＨＩＧＨが入力されると送信側ＤＭＡ転送が開始される状態にする。
【００２５】
一方、通信データ受信要求ライン１２３にワンショットパルスが入力されて割込み発生を検出した時には、受信側ＣＰＵ１０８は、転送レジスタ１０６を読み出してデータストリームの転送サイズを取得する。そして、受信側ＣＰＵ１０８は、これから転送されるデータストリームを格納するために受信データ領域を受信側ローカルメモリ装置１１０が有する受信側メモリプール１１１から獲得する。
【００２６】
データストリームの転送サイズ分の受信データ領域の獲得に成功した時には、受信側ＣＰＵ１０８は、受信側ＤＭＡ１０９を設定する。具体的には、受信側ＣＰＵ１０８は、転送元アドレスを転送レジスタ１０６のアドレスとして固定アドレス転送設定とし、かつ、転送先アドレスを初期値は受信データ領域の先頭アドレスとし１ワード転送毎に転送元アドレスをインクリメントする設定とする。また、受信側ＣＰＵ１０８は、転送データサイズにデータストリームの転送サイズを設定してＤＭＡ転送を許可し、受信側ＤＭＡ転送要求ライン１２７にＨＩＧＨが入力されると受信側ＤＭＡ転送が開始される状態にする。
【００２７】
転送制御回路１１２のＯＲゲート１１５の入力は初期状態では通信データ送信要求ライン１２４及び受信側ＤＭＡ転送応答ライン１２８がＬＯＷの状態であり、ＮＯＴゲート１１７で反転され送信側ＤＭＡリクエスト制御フリップフロップ１１３のＣＫ入力端子には、ＨＩＧＨが入力されている。また、このフリップフロップのＤＡＴＡ入力はＨＩＧＨ入力で固定であり、Ｑ出力端子の初期状態はＬＯＷとなっている。ここで、受信側ＣＰＵ１０８は、通信データ送信要求ライン１２４をＬＯＷの状態から一度ＨＩＧＨにして再びＬＯＷに遷移させてワンショットパルスを生成し、通信データ送信要求を通知する。これが送信側ＤＭＡ１０３の転送開始のトリガとなり、送信側ＤＭＡ１０３は、連続的に通信データの転送を行う状態に遷移する。
【００２８】
具体的には、送信側ＤＭＡリクエスト制御フリップフロップ１１３のＣＫ入力に立上りパルスが入力され、フリップフロップのＱ出力端子はＬＯＷからＨＩＧＨに遷移する。その結果、送信側ＤＭＡ転送要求ライン１２５は、ＨＩＧＨに遷移して送信側ＤＭＡ１０３へＤＭＡ転送がリクエストされる。そして、送信側ＤＭＡ１０３のＤＭＡ転送が開始するまでこの出力状態が持続される。
【００２９】
続いて、送信側ＤＭＡ１０３は、ＤＭＡ転送を開始し、送信データ領域から１ワード分の分割単位データを転送レジスタ１０６へＤＭＡ転送する。送信側ＤＭＡ１０３は、送信データ領域からＲＥＡＤ動作を開始すると、送信側ＤＭＡ転送応答ライン１２６をＨＩＧＨに遷移させ、転送レジスタ１０６へのＷＲＩＴＥ動作を完了後にＬＯＷに遷移させる。送信側ＤＭＡ転送応答ライン１２６は、ＬＯＷ状態の通信データ受信要求ライン１２３とＯＲゲート１１６でＯＲ演算されて送信側ＤＭＡリクエスト制御フリップフロップ１１３のＣＬＲ端子に入力されている。送信側ＤＭＡ１０３の転送動作開始と共に送信側ＤＭＡリクエスト制御フリップフロップ１１３のＱ出力端子はＬＯＷに遷移して、送信側ＤＭＡリクエスト制御フリップフロップ１１３は、次の送信側ＤＭＡ転送要求ライン１２５の要求が受付可能な状態に遷移する。
【００３０】
次に、送信側ＤＭＡ転送応答ライン１２６は、ＮＯＴゲート１１８で反転されて受信側ＤＭＡリクエスト制御フリップフロップ１１４のＣＫ端子に入力されており、送信側ＤＭＡ１０３の転送レジスタ１０６へのＷＲＩＴＥ動作の完了をトリガとして受信側ＤＭＡリクエスト制御フリップフロップ１１４のＣＫ入力端子に立上りパルスが入力され、受信側ＤＭＡリクエスト制御フリップフロップ１１４のＱ出力端子はＬＯＷからＨＩＧＨに遷移する。その結果、受信側ＤＭＡ転送要求ライン１２７はＨＩＧＨに遷移し、受信側ＤＭＡ１０９へＤＭＡ転送がリクエストされ、受信ＤＭＡ１０９のＤＭＡ転送が開始するまでこの出力状態が持続される。
【００３１】
続いて、受信側ＤＭＡ１０９は、受信側ＤＭＡ転送を開始し、転送レジスタ１０６から受信データ領域へ１ワード長分の分割単位データをＤＭＡ転送する。受信側ＤＭＡ１０９は、転送レジスタ１０６からのＲＥＡＤ動作を開始すると、受信側ＤＭＡ転送応答ライン１２８をＨＩＧＨに遷移させ、受信データ領域へのＷＲＩＴＥ動作の完了後にＬＯＷに遷移させる。受信側ＤＭＡ転送応答ライン１２８は、ＬＯＷ状態の通信データ送信要求ライン１２４とＯＲゲート１１５でＯＲ演算されて受信側ＤＭＡリクエスト制御フリップフロップ１１４のＣＬＲ端子に入力されているため、受信側ＤＭＡ１０９の転送動作開始と共に受信側ＤＭＡリクエスト制御フリップフロップ１１４のＱ出力端子はＬＯＷに遷移する。その結果、受信側ＤＭＡリクエスト制御フリップフロップ１１４は、次の受信側ＤＭＡ転送要求ライン１２７の要求が受付可能な状態に遷移する。また、送信側ＤＭＡリクエスト制御フリップフロップ１１３のＣＫ入力端子に立上りパルスが入力され、そのパルスが送信側ＤＭＡ１０３の転送開始のトリガとなり、送信側ＤＭＡ転送と受信側ＤＭＡ転送が交互にかつ連続的に繰り返される。
【００３２】
次に、送信側ＤＭＡ１０３に予め設定した転送サイズ分のＤＭＡ転送が完了した時には、送信側ＤＭＡ１０３は、送信側ＣＰＵ１０２に対しＤＭＡ転送完了割込みを通知して送信側ＤＭＡ転送動作を終了する。以後、送信側ＤＭＡ転送要求ライン１２５がＨＩＧＨに遷移してもＤＭＡ転送は禁止される。同様に、受信側ＤＭＡ１０９に予め設定した転送サイズ分のＤＭＡ転送が完了した時には、受信側ＤＭＡ１０９は、受信側ＣＰＵ１０８に対しＤＭＡ転送完了割込みを通知して、受信側ＤＭＡ転送動作を終了する。以後、受信側ＤＭＡ転送要求ライン１２７がＨＩＧＨに遷移しても、ＤＭＡ転送は禁止される。受信側ＣＰＵ１０８は、受信側ＤＭＡ１０９からのＤＭＡ転送完了割込みを受けて、受信データ領域に転送された通信データを上位タスクに通知することができる。なお、転送制御回路１１２、送信側ＣＰＵユニット１０１の一部及び受信側ＣＰＵユニットの一部が、制御手段を構成する。
【００３３】
このように、デュアルポートメモリ装置のような大容量の共有メモリを用いなくても、転送するデータストリームのサイズとデータストリームを１ワード長に分割した分割単位データとを同じ１ワード長の容量を持つ転送レジスタを用いて転送することができる。また、ＤＭＡ転送を用いてＣＰＵ間通信制御を行うことで送信側ＣＰＵおよび受信側ＣＰＵのソフトウェア処理負荷を軽減することができる。また、受信側ＣＰＵから通信データ転送動作開始要求が通知されるまで送信側ＤＭＡの分割転送データの転送動作を待機させて、受信側のデータ受信準備が完了した後で送信側ＤＭＡが転送レジスタへの送信側の分割転送データの転送動作を開始することで、データの受け渡しを確実に行うことができる。また、送信側ＤＭＡの分割単位データの転送動作が実行されるまで受信側ＤＭＡの分割単位データの転送動作を待機させて、送信側ＤＭＡが転送レジスタに分割単位データの転送を完了した後に受信側ＤＭＡが転送レジスタから分割単位データを取得することで、データの受け渡しを確実に行うことができる。また、受信側ＤＭＡの分割単位データの転送動作が実行されるまで送信側ＤＭＡの次の分割単位データの転送動作を待機させて、受信側ＤＭＡが転送レジスタからの分割単位データの転送を完了した後に送信側ＤＭＡが転送レジスタへ分割単位データの転送動作を行うことで、データの受け渡しを確実に行うことができる。
【００３４】
図２は、送信側ＣＰＵ１０２のソフトウェア構造の概要を示す図である。送信側ＣＰＵ１０２のソフトウェアは、イニシャル処理及びリアルタイムＯＳ起動処理２０１、送信タスク２０２、上位タスク２０３、アイドルタスク２０４、ハードウェア割込み２０５及び割込みハンドラ２０６から構成される。
【００３５】
送信側ＣＰＵ１０２のソフトウェアは、ＲＥＳＥＴ解除後イニシャル処理およびリアルタイムＯＳ起動処理２０１を実行してリアルタイムＯＳを起動する。そして、送信側ＣＰＵ１０２のソフトウェアは、ＣＰＵ間通信制御を行う送信タスク２０２、ＣＰＵ間通信制御を依頼する上位タスク２０３及び何もジョブが無いときに実行されるアイドルタスク２０４を生成し、ＤＭＡ転送完了割込み入力を処理する割込みハンドラ２０６を初期化してハードウェア割込み２０５の割込みの入力を許可する。
【００３６】
送信側ＣＰＵ１０２のソフトウェアは、タスク実行や割込み処理のような処理すべきジョブが存在しない場合にはアイドルタスク２０４に留まって待機している。また、上位タスク２０３からの要求で受信側ＣＰＵへデータを転送する場合には、まず送信側ＣＰＵ１０２のソフトウェアは、上位タスク２０３から送信タスク２０２へタスク間メッセージ通知によりデータの転送要求を行い、続いて、送信タスク２０２は、ＤＭＡ転送のセットアップを行う。その結果、送信側ＤＭＡ１０３は、ソフトウェア処理が関与しないＤＭＡ転送動作を開始する。
【００３７】
ＤＭＡ転送動作が完了してハードウェア割込み２０５で送信側ＤＭＡ１０３からＤＭＡ転送完了割込みが通知されると、割込みハンドラ２０６が起動して、ＤＭＡ転送完了通知イベントフラグを送信タスク２０２へ通知する。その結果、送信タスク２０２は、ＤＭＡ転送を停止させる。
【００３８】
図３は、受信側ＣＰＵ１０８のソフトウェア構造の概要を示したものである。受信側ＣＰＵ１０８のソフトウェアは、イニシャル処理及びリアルタイムＯＳ起動処理３０１、受信タスク３０２、上位タスク３０３、アイドルタスク３０４、ハードウェア割込み３０５及び割込みハンドラ３０６から構成される。
【００３９】
受信側ＣＰＵ１０８のソフトウェアは、ＲＥＳＥＴ解除後にイニシャル処理及びリアルタイムＯＳ起動処理３０１を実行してリアルタイムＯＳを起動する。そして、受信側ＣＰＵ１０８のソフトウェアは、ＣＰＵ間通信制御を行う受信タスク３０２、ＣＰＵ間通信制御を依頼する上位タスク３０３及び何もジョブが無いときに実行されるアイドルタスク３０４を生成し、通信データ転送受信要求割込み及びＤＭＡ転送完了割込みの入力を処理する割込みハンドラ３０６を初期化して、ハードウェア割込み３０５の割込みの入力を許可する。
【００４０】
受信側ＣＰＵ１０８のソフトウェアは、タスク実行や割込み処理のような処理すべきジョブが存在しない場合にはアイドルタスク３０４に留まって待機する。また、割込みハンドラ３０６から通信データ転送受信要求イベントフラグ通知を受けて受信側ＣＰＵへデータを転送する場合には、受信側ＣＰＵ１０８のソフトウェアの受信タスク３０２は、受信領域の確保及びＤＭＡ転送のセットアップを行う。その結果、受信側ＤＭＡ１０９は、ソフトウェア処理が関与しないＤＭＡ転送動作を開始する。
【００４１】
ＤＭＡ転送動作が完了してハードウェア割込み３０５でＤＭＡ転送完了割込みが通知されると、割込みハンドラ３０６は起動してＤＭＡ転送完了通知イベントフラグを受信タスク３０２へ通知する。その結果、受信タスク３０２は、ＤＭＡ転送を停止させると共に上位タスク３０３へ、データをメッセージに編集しタスク間メッセージとして通知する。
【００４２】
このように、リアルタイムＯＳ実行環境下で送信タスク及び受信タスクの通信制御タスクと割込みハンドラとを組み合わせることにより、ＣＰＵ間通信制御において、ソフトウェア処理は、通信制御のセットアップのみを行い、かつ、データの転送動作はソフトウェア処理が関与せずにＤＭＡが行う。このため、ソフトウェア構成を単純化してＣＰＵ間通信制御を行うことができるので、送信側ＣＰＵ及び受信側ＣＰＵのソフトウェア処理の負荷を軽減することができる。
【００４３】
上述のリアルタイムＯＳ制御下のＣＰＵ間通信制御における送信側および受信側の詳細な実行フローを図４から図７を用いて説明する。
【００４４】
図４は、リアルタイムＯＳ制御下のＣＰＵ間通信制御の送信タスク２０２の実行フローを示したものである。図５は、リアルタイムＯＳ制御下のＣＰＵ間通信制御の割込みハンドラ２０６の実行フローを示したものである。
【００４５】
送信側ＣＰＵ１０２のＲＥＳＥＴを解除された直後に、ＲＥＳＥＴスタートを行うイニシャル処理、装置の初期化並びにリアルタイムＯＳの起動を行う初期化／ＯＳ起動処理、タスクの起動を行うタスク起動処理、リアルタイムＯＳに割込み処理を登録する割込みハンドラ登録処理、及び、割込みの設定並びに許可を行う割込み設定処理が実行されて、送信タスクが起動される（ステップＳＴ４０１）。送信タスク２０２は、送信タスクで必要な初期化を行う初期化処理を行う（ステップＳＴ４０２）。次に、送信タスク２０２は、他のタスクからのメッセージの通知を待つメッセージ受信待ち状態となり、実行権をＯＳに移してメッセージが通知されるまで待機している（ステップＳＴ４０３）。アイドルタスク２０４及びその他のタスクも同様に起動され、システムは、アイドルタスク２０４で処理が待機している状態に遷移する。
【００４６】
ここで上位タスク２０３が通信データ転送を要求した時には、送信タスク２０２は、メッセージ受信待ち状態から復帰し、通知されたメッセージ種別を判定する（ステップＳＴ４０４）。他のタスクから通信データ送信要求以外の場合には、送信タスク２０２は、それぞれのメッセージに対応した該当処理の実行を行い（ステップＳＴ４１４）、再びメッセージ通知を待つ（ステップＳＴ４０３）。
【００４７】
通信データ送信要求の場合には、送信タスク２０２は、通知メッセージに含まれる通信データサイズを取得する（ステップＳＴ４０５）。送信タスク２０２は、送信データ領域の確保及び通信データフォーマットの編集を行う。通信データフォーマットの編集が済んだ後には、送信タスク２０２は、他のタスクから通知されたメッセージ領域を解放する（ステップＳＴ４０６）。続いて、送信タスク２０２は、通信データ転送サイズを転送レジスタ１０６に書き込む（ステップＳＴ４０７）。送信タスク２０２は、受信側へ通信データ転送サイズの通知し、ＤＭＡ転送動作の開始を要求する（ステップＳＴ４０８）。送信タスク２０２は、通信データ転送開始のために送信側ＤＭＡ１０３の設定を行い、送信側ＤＭＡの転送が開始される（ステップＳＴ４０９）。送信側ＣＰＵのソフトウェアは、割込みハンドラからのイベントフラグ通知（ＤＭＡ転送完了）を待ち、実行権をＯＳに移す（ステップＳＴ４１０）。
【００４８】
ＤＭＡ転送が完了すると、割込みハンドラ２０６が起動される（ステップＳＴ５０１）。そして、割込みハンドラ２０６は、割込み種別を判定する（ステップＳＴ５０２）。ＣＰＵ間通信動作以外の割込みの場合には、割込みハンドラ２０６は、それに対応した処理を行うためのメッセージ発行を実行する（ステップＳＴ５０４）。ＤＭＡ転送完了イベントフラグの場合には、割込みハンドラ２０６は、送信タスクへ通知するＤＭＡ転送完了イベントフラグの発行を実行する（ステップＳＴ５０３）。処理実行後には、割込みハンドラ２０６は、割込み要因を初期化する（ステップＳＴ５０５）。そして、送信側ＣＰＵのソフトウェアは、割込み処理から復帰する（ステップＳＴ５０６）。
【００４９】
イベントフラグが通知された場合には、送信タスク２０２は、受信したイベントフラグの種別を判定する（ステップＳＴ４１１）。ＤＭＡ転送完了イベントフラグ以外の場合には、送信タスク２０２は、それぞれのイベントフラグ通知に対応した処理の実行を行い（ステップＳＴ４１５）、再びイベントフラグ通知を待つ（ステップＳＴ４１０）。ＤＭＡ転送完了イベントフラグの場合には、送信タスク２０２は、通信データ転送停止のために送信ＤＭＡ設定を行う（ステップＳＴ４１２）。そして、送信タスク２０２は、通信データフォーマット生成に使用した通信データ格納領域を解放して（ステップＳＴ４１３）、メッセージ受信待ち状態（ステップＳＴ４０３）に戻る。
【００５０】
図６は、リアルタイムＯＳ制御下のＣＰＵ間通信制御の受信タスク３０２の実行フローを示したものである。図７は、リアルタイムＯＳ制御下のＣＰＵ間通信制御の割込みハンドラ３０６の実行フローを示したものである。
【００５１】
受信側ＣＰＵ１０８のＲＥＳＥＴを解除された直後に、ＲＥＳＥＴスタートを行うイニシャル処理、装置の初期化並びにリアルタイムＯＳの起動を行う初期化／ＯＳ起動処理、タスクの起動を行うタスク起動処理、リアルタイムＯＳに割込み処理を登録する割込みハンドラ登録処理、及び、割込みの設定並びに許可を行う割込み設定処理が実行されて、受信タスク３０２が起動される（ステップＳＴ６０１）。受信タスク３０２は、受信タスクで必要な初期化を行う初期化処理を行う（ステップＳＴ６０２）。次に、受信タスク３０２は、他のタスクからのメッセージの通知を待つメッセージ受信待ちとなり、実行権をＯＳに移してメッセージが通知されるまで待機している（ステップＳＴ６０３）。アイドルタスク３０４及びその他の上位タスクも同様に起動され、システムは、アイドルタスク３０４で処理が待機している状態に遷移する。
【００５２】
ここで、送信側ＣＰＵ１０２の送信タスク２０２からデータ転送を開始した場合には、送信側からの通信データ受信開始要求割込みで割込みハンドラ３０６が起動する（ステップＳＴ７０１）。割込みハンドラ３０６は、割込み種別を判定する（ステップＳＴ７０２）。ＣＰＵ間通信動作以外の割込みの場合には、割込みハンドラ３０６は、それに対応した処理を行うためのメッセージ発行を実行する（ステップＳＴ７０５）。割込み種別が通信データ受信開始要求割込みの場合には、割込みハンドラ３０６は、通信データ受信開始要求通知メッセージを発行し受信タスクへ通知する（ステップＳＴ７０３）。処理実行後には、割込みハンドラ３０６は、割込み要因を初期化する（ステップＳＴ７０６）。そして、受信側ＣＰＵのソフトウェアは、割込み処理から復帰する（ステップＳＴ７０７）。
【００５３】
続いて、受信タスク３０２は、メッセージ受信待ち状態に戻る（ステップＳＴ６０３）。メッセージを受信すると、受信タスク３０２は、メッセージ種別を判定する（ステップＳＴ６０４）。ＣＰＵ間通信以外のメッセージの場合には、受信タスク３０２は、それぞれのメッセージに対応した処理の実行を行い（ステップＳＴ６１２）、再びメッセージ通知を待つ（ステップＳＴ６０３）。
【００５４】
通知されたメッセージが通信データ受信開始要求メッセージの場合には、受信タスク３０２は、転送レジスタ１０６から通信データ転送サイズを取得する（ステップＳＴ６０５）。受信タスク３０２は、取得した通信データ転送サイズで転送データの格納領域を確保する（ステップＳＴ６０６）。続いて、受信タスク３０２は、通信データ転送開始のために受信ＤＭＡを設定する（ステップＳＴ６０７）。そして、受信タスク３０２は、送信側へＤＭＡ転送の開始を要求し（ステップＳＴ６０８）、ＤＭＡの転送が開始される。受信タスク３０２は、メッセージ受信待ち状態に戻り（ステップＳＴ６０３）、割込みハンドラからのＤＭＡ転送完了メッセージを待ち、実行権をＯＳに移す。
【００５５】
ＤＭＡ転送が完了すると、ＤＭＡ転送完了割込みで割込みハンドラ３０６が起動され（ステップＳＴ７０１）、割込みハンドラ３０６は、割込み種別を判定する（ステップＳＴ７０２）。ＣＰＵ間通信動作以外の割込みの場合には、割込みハンドラ３０６は、それに対応した処理を行うためのメッセージの発行を実行する（ステップＳＴ７０５）。ＤＭＡ転送完了イベントフラグの場合には、割込みハンドラ３０６は、受信タスク３０２へ通知するＤＭＡ転送完了メッセージの発行を実行し、ＤＭＡ転送完了メッセージを受信タスク３０２へ通知する（ステップＳＴ７０４）。処理実行後には、割込みハンドラ３０６は、割込み要因を初期化する（ステップＳＴ７０６）。そして、受信側ＣＰＵのソフトウェアは、割込み処理から復帰する（ステップＳＴ７０７）。
【００５６】
受信タスク３０２は、メッセージを受信してメッセージ種別を判定する（ステップＳＴ６０４）。ＣＰＵ間通信以外のメッセージの場合には、受信タスク３０２は、それぞれのメッセージに対応した処理の実行を行い（ステップＳＴ６１２）、再びメッセージ通知を待つ（ステップＳＴ６０３）。
【００５７】
通知されたメッセージがＤＭＡ転送完了メッセージの場合には、受信タスク３０２は、通信データ転送停止のために受信ＤＭＡ設定を行う（ステップＳＴ６０９）。そして、受信タスク３０２は、受信した通信データを上位タスクへ通知するための編集を行う（ステップＳＴ６１０）。受信タスク３０２は、上位タスクへ通知する（ステップＳＴ６１１）。
【００５８】
このように、リアルタイムＯＳ実行環境下で送信タスク及び送信側割込みハンドラを組み合わせて、ＣＰＵ間通信制御において、ソフトウェア処理は、通信制御のセットアップのみを行い、かつ、データの転送動作はソフトウェア処理が関与せずにＤＭＡが行う。このため、ソフトウェア構成を単純化してＣＰＵ間通信制御を行うことができるので、送信側ＣＰＵ及び受信側ＣＰＵのソフトウェア処理の負荷を軽減することができる。
【００５９】
以上のように、本発明の一実施の形態に係る通信制御装置によれば、通信を行うＣＰＵ間に１ワード長の転送レジスタを設けて、データストリームサイズの受け渡し及びデータ転送を行う。初めに送信側から受信側へソフトウェア転送によりデータストリームのサイズを通知し、受信側からの転送開始要求によりＤＭＡ転送を開始する。一方のＤＭＡによる１ワードの転送完了をトリガとして、もう一方のＤＭＡへ転送要求を行うというＤＭＡ転送制御回路を設けることで転送レジスタを介してＤＭＡ転送動作を連続的に行うことにより、送信側ＣＰＵおよび受信側ＣＰＵのソフトウェア処理負荷を軽減することができる。また、転送レジスタのデータ記憶サイズを１ワード長とすることで、送信側ＣＰＵと受信側ＣＰＵの間に配置する通信用デバイス及び前記デバイスの周辺回路を簡略化できる。
【００６０】
なお、これまで説明した通信制御装置は単一方向の通信を行う装置であるが、２つのＣＰＵの間に、この通信制御装置を上り通信用および下り通信用として２組設けて使用することで双方向通信を行うこともできる。
【産業上の利用可能性】
【００６１】
本発明の通信制御装置は、高速なＣＰＵ間通信が要求されるマルチＣＰＵシステムにおいて、コストおよびデータ転送ドライバの処理負荷を軽減させるとともに、通信データの転送を効率良く行うものとして有用である。
【図面の簡単な説明】
【００６２】
【図１】本発明の一実施の形態に係る通信制御装置の構成を示す図
【図２】一実施の形態に係る通信制御装置の送信側ＣＰＵのソフトウェア構造の概要を示す図
【図３】一実施の形態に係る通信制御装置の受信側ＣＰＵのソフトウェア構造の概要を示す図
【図４】一実施の形態に係る通信制御装置の送信側ＣＰＵのソフトウェアの送信タスクの実行フローを示した図
【図５】一実施の形態に係る通信制御装置の送信側ＣＰＵのソフトウェアの割込みハンドラの実行フローを示した図
【図６】一実施の形態に係る通信制御装置の受信側ＣＰＵのソフトウェアの受信タスクの実行フローを示した図
【図７】一実施の形態に係る通信制御装置の受信側ＣＰＵのソフトウェアの割込みハンドラの実行フローを示した図
【図８】従来の通信制御装置の構成を示したブロック図
【符号の説明】
【００６３】
１００  通信制御装置
１０１  送信側ＣＰＵユニット
１０２  送信側ＣＰＵ
１０３  送信側ＤＭＡ
１０４  送信側ローカルメモリ装置
１０５  送信側メモリプール
１０６  転送レジスタ
１０７  受信側ＣＰＵユニット
１０８  受信側ＣＰＵ
１０９  受信側ＤＭＡ
１１０  受信側ローカルメモリ装置
１１１  受信側メモリプール
１１２  転送制御回路
１１３  送信側ＤＭＡリクエスト制御フリップフロップ
１１４  受信側ＤＭＡリクエスト制御フリップフロップ
１１５、１１６  ＯＲゲート
１１７、１１８  ＮＯＴゲート
１１９  送信側ＣＰＵデータバス
１２０  送信側ＣＰＵアドレスバス
１２１  受信側ＣＰＵアドレスバス
１２２  受信側ＣＰＵデータバス
１２３  通信データ受信要求ライン
１２４  通信データ送信要求ライン
１２５  送信側ＤＭＡ転送要求ライン
１２６  送信側ＤＭＡ転送応答ライン
１２７  受信側ＤＭＡ転送要求ライン
１２８  受信側ＤＭＡ転送応答ライン
２０１、３０１  イニシャル処理およびリアルタイムＯＳ起動処理
２０２  送信タスク
２０３、３０３  上位タスク
２０４、３０４  アイドルタスク
２０５、３０５  ハードウェア割込み
２０６、３０６  割込みハンドラ
３０２  受信タスク
【図１】
2005136686.tif 000003
【図２】
2005136686.tif 000004
【図３】
2005136686.tif 000005
【図４】
2005136686.tif 000006
【図５】
2005136686.tif 000007
【図６】
2005136686.tif 000008
【図７】
2005136686.tif 000009
【図８】
2005136686.tif 000010