(57)【要約】    【課題】  ソフトウェアから特定のバス幅より小さなサイズの読出し要求を受けた場合でも、ソフトウェアでの複雑なレジスタ設定を行うことなく、ターゲットデバイスからソフトウェアの要求したバス幅のデータ転送を行うことを目的とする。    【解決手段】  アドレスの任意のビット１４５にソフトウェアが要求するデータ転送バス幅を指定し、アドレスの所定の下位ビット１４４の値から要求されたデータのアドレスを認識することにより、ソフトウェアから特定のバス幅より小さなサイズの読出し要求を受けた場合でも、ソフトウェアでの複雑なレジスタ設定を行うことなく、ターゲットデバイス１１０からソフトウェアの要求したバス幅のデータ転送を行うことができる。【選択図】    図１
2005107756.tif 000002
【特許請求の範囲】
【請求項１】
データ読み出し要求時に要求されたバス幅に関わらず特定のバス幅分の読み出し要求にしか対応できないＣＰＵで構成された装置におけるデータ制御装置であって、
前記データ読み出し要求されたアドレスの１または２以上の任意のビットにより読み出し要求されたデータのバス幅を認識し、前記アドレスの１または２以上の任意の下位ビットにより前記要求されたデータが何ビット目であるかを認識し、それらに対応するバイトイネーブル信号をＣＰＵから出力されたＣＰＵバイトイネーブル信号のうちから選択して出力することにより、前記バイトイネーブル信号により転送するデータのバス幅とアドレスを指定し、要求のあったバス幅でターゲットデバイスがテータ転送できるようにすることを特徴とするデータ制御装置。
【請求項２】
前記ＣＰＵは３２ビットの外部バスを備え、前記アドレスの任意の２ビットにより読み出し要求されたデータのバス幅を認識し、前記アドレスの最下位の２ビットにより前記要求されたデータが何ビット目であるかを認識することを特徴とする請求項１記載のデータ制御装置。
【請求項３】
前記読み出し要求されたデータのバス幅を認識するアドレスの任意の２ビットがアドレスの最上位の２ビットとすることを特徴とする請求項２記載のデータ制御装置。
【請求項４】
前記ＣＰＵは６４ビット以上の外部バスを備え、前記アドレスの任意の３または４以上のビットにより読み出し要求されたデータのバス幅を認識し、前記アドレスの最下位の３または４以上のビットにより前記データが何ビット目であるかを認識することを特徴とする請求項１記載のデータ制御装置。
【請求項５】
データ読み出し要求時に要求されたバス幅に関わらず特定のバス幅分の読み出し要求にしか対応できないＣＰＵとで構成された装置におけるデータ制御装置であって、
前記ＣＰＵバスの使用しないアドレスビットを用いて転送するデータのバス幅を設定するバイトイネーブル制御用アドレスビット設定レジスタと、
前記ＣＰＵバスアドレスの下位２ビットを用いて転送するアドレスを設定するバイトイネーブル制御用アドレスビット選択部と、
前記転送するデータのバス幅と前記転送するアドレスよりバイトイネーブル信号を生成して出力するバイトイネーブル出力部と
を有し、前記バイトイネーブル信号により転送するデータのバス幅とアドレスを指定することにより、要求のあったバス幅でターゲットデバイスがテータ転送できるようにすることを特徴とするデータ制御装置。
【請求項６】
データ読み出し要求時に要求されたバス幅に関わらず特定のバス幅分の読み出し要求にしか対応できないＣＰＵで構成された装置に用いるデータ制御装置において、
前記データ読み出し要求されたアドレスの１または２以上の任意のビットにより読み出し要求されたデータのバス幅を認識する工程と、
前記アドレスの１または２以上の任意の下位ビットにより前記要求されたデータが何ビット目であるかを認識する工程と、
前記読み出し要求されたデータのバス幅および前記データのビット数に対応するバイトイネーブル信号をＣＰＵから出力されたＣＰＵバイトイネーブル信号のうちから選択して出力する工程と
を有することにより、前記バイトイネーブル信号により転送するデータのバス幅とアドレスを指定し、要求のあったバス幅でターゲットデバイスがテータ転送できるようにすることを特徴とするデータ制御方法。
【請求項７】
前記ＣＰＵは３２ビットの外部バスを備え、前記アドレスの任意の２ビットにより読み出し要求されたデータのバス幅を認識し、前記アドレスの最下位の２ビットにより前記要求されたデータが何ビット目であるかを認識することを特徴とする請求項６記載のデータ制御方法。
【請求項８】
前記ＣＰＵは６４ビット以上の外部バスを備え、前記アドレスの任意の３または４以上のビットにより読み出し要求されたデータのバス幅を認識し、前記アドレスの最下位の３または４以上のビットにより前記要求されたデータが何ビット目であるかを認識することを特徴とする請求項６記載のデータ制御方法。
【請求項９】
データ読み出し要求時に要求されたバス幅に関わらず特定のバス幅分の読み出し要求にしか対応できないＣＰＵとで構成された装置に用いるデータ制御装置において、
前記ＣＰＵバスの使用しないアドレスビットを用いて転送するデータのバス幅を設定する工程と、
前記ＣＰＵバスアドレスの下位２ビットを用いて転送するアドレスを設定する工程と、
前記転送するデータのバス幅と前記転送するアドレスよりバイトイネーブル信号を生成して出力する工程と
を有し、前記バイトイネーブル信号により転送するデータのバス幅とアドレスを指定することにより、要求のあったバス幅でターゲットデバイスがテータ転送できるようにすることを特徴とするデータ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
読み出し時に要求されたバス幅に関わらず最大バス幅分の読み出し要求にしか対応できないＣＰＵで構成された装置におけるデータ制御装置、およびデータ制御方法に関する。
【背景技術】
【０００２】
データリードアクセス時にソフトウェアの指定アクセスサイズに無関係に最大バス幅分の読み出し要求を行うＣＰＵを用いたコンピュータシステムにおいて、１又は２バイトのデータの読み出し要求にしか応答できないデバイスからのデータ読み出しを可能にするために、従来では、１バイトアクセスか２バイトアクセスかを判定するアクセス単位設定レジスタと、上限アドレス設定レジスタおよび下限アドレス設定レジスタと、前記上限アドレス設定および下限アドレス設定レジスタとＣＰＵのアクセスアドレス領域とを比較するコンパレータと、前記アクセスアドレス単位設定レジスタにより判定されたアクセス単位とアドレスの下位２ビットからバイトイネーブルを生成する回路と、前記コンパレータによる比較結果から、ＣＰＵのアクセスアドレス領域が前記上限アドレス設定レジスタおよび下限アドレス設定レジスタに設定されたアドレス領域内であれば、前記バイトイネーブル生成回路から生成されたバイトイネーブル信号を選択してターゲットデバイスへ出力するセレクタを備えたデータ制御装置が必要であった（例えば、特許文献１参照）。
【０００３】
以上のようなコンピュータシステムを構成する従来のデータ制御装置について、図６，図７を用いて以下に詳しく説明する。
図６は従来のデータ制御装置とそれを含むコンピュータシステムの概念を示すブロック図であり、ここでは、ターゲットデバイスとターゲットメモリが各１つずつ搭載された構成を例として示している。図７は従来のデータ制御装置の動作フローチャートである。
【０００４】
図６に示すように、６００はＣＰＵ，６１０はターゲットデバイス，６２０はターゲットメモリ，６３０はデータ制御装置である。
データ制御装置６３０において、６３１は上限アドレス設定レジスタ，６３２は下限アドレス設定レジスタ，６３３は上限アドレスコンパレータであり、ＣＰＵ６００がアクセスするアドレスが上限アドレス設定レジスタ６３１で設定されたアドレス領域か比較する。６３４は下限アドレスコンパレータであり、ＣＰＵ６００がアクセスするアドレスが下限アドレス設定レジスタ６３２で設定されたアドレス領域であるか比較する。６３５はＡＮＤ回路であり、上限アドレスコンパレータ６３３と下限アドレスコンパレータ６３４から出力された信号のＡＮＤ論理を出力する。６３６はバイトリードアクセス単位設定レジスタであり、バイトリードアクセス単位を設定する。６３７はバイトイネーブル生成回路であり、バイトイネーブル信号を生成してバイトイネーブルセレクタ６３９へ出力する。６３８はバイトリードアクセスイネーブルレジスタであり、バイトリードアクセスをイネーブルとするときはこのレジスタをイネーブルに設定する。バイトイネーブルセレクタで６３９はＡＮＤ回路６３５とバイトイネーブル生成回路６３７とバイトリードアクセスイネーブルレジスタ６３８とＣＰＵからのＣＰＵバイトイネーブル信号６４１からバイトイネーブル信号６４５を出力する。
【０００５】
また、６４２はＣＰＵ６００の外部バスのバイトイネーブル信号以外の制御信号，６４３はＣＰＵ６００の外部バスのデータ信号，６４４はＣＰＵ６００の外部バスのアドレス信号，６４５はデータ制御装置６３０で生成されるターゲットデバイス６１０とターゲットメモリ６２０に対するバイトイネーブル信号である。
【０００６】
図７を用いて上記図６に示した回路における動作フローを説明する。
図７において、まず、ＣＰＵ６００はステップ７０１で上限アドレス設定レジスタ６３１と下限アドレス設定レジスタ６３２に対象アドレス領域を設定し、バイトリードアクセス単位設定レジスタ６３６にバイトリードアクセス単位を設定する。次に、ＣＰＵ６００はステップ７０２で、バイトリードアクセスイネーブルレジスタ６３８をイネーブルとする。
【０００７】
ＣＰＵ６００がデバイス６１０やメモリ６２０へアクセスを行った場合にはステップ７０３で、上限アドレスコンパレータ６３３と下限アドレスコンパレータ６３４を用いて、ＣＰＵ６００のアクセスアドレスがステップ７０１で設定されたアドレス領域か判定を行う。もし、上限アドレスコンパレータ６３３と下限アドレスコンパレータ６３４の比較結果がステップ７０１で設定されたアドレス領域の場合にはステップ７０４に進み、上限アドレスコンパレータ６３３と下限アドレスコンパレータ６３４の比較結果がステップ７０１で設定されたアドレス領域ではなかった場合にはステップ７０７に進む。
【０００８】
ステップ７０４では、バイトリードアクセスイネーブルレジスタの値を判定し、バイトリードアクセスがイネーブルであった場合はステップ７０５に進み、バイトリードアクセスがディゼーブルであった場合にはステップ７０７に進む。
【０００９】
ステップ７０５では、ＣＰＵ６００からターゲットデバイス６１０やターゲットメモリ６２０へのアクセスがリードアクセスであるか判定し、リードアクセスであった場合には、ステップ７０６に進み、リードアクセスでなかった場合にはステップ７０７に進む。
【００１０】
ステップ７０６では、バイトイネーブルアクセス単位設定レジスタ６３５で設定されたアクセス単位でバイトイネーブル信号６４５を出力し、ターゲットデバイス６１０やターゲットメモリ６２０はバイトイネーブル信号６４５が要求するバス幅でデータ転送を行う。
ステップ７０７では、ＣＰＵバイトイネーブル６４１をバイトイネーブル信号６４５として出力し、ターゲットデバイスは４バイトのバス幅でデータ転送を行う。
【特許文献１】特開平１０−７８９３３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
図８はソフトウェア指定のアクセスサイズに関わらず最大バスサイズ分のデータを読み出すＣＰＵの動作を説明する概念図である。
図８において、８００はソフトウェア，８０１はＣＰＵ，８０２はデバイスを表す。
【００１２】
ここで、ソフトウェアがＣＰＵに１バイトデータの読み出し要求を出したときに、アクセスサイズに関係なく４バイトの読み出し要求を出すＣＰＵであった場合、デバイスは４バイト分の読み出し要求だと認識してしまう。
【００１３】
例えばソフトウェアがＣという１バイトデータの読み出し要求を出したときに、ＣＰＵはＡ、Ｂ、Ｃ、Ｄという４バイトのデータの読み出し要求を出してしまう。
ここで、デバイスがＦＩＦＯ形式のレジスタを持っていると４バイトの読み出し要求に対応して４バイト分ポインタをインクリメントしてしまいソフトウェアが意図通りに動かないという現象が発生する。
【００１４】
そのため、従来の技術では、上述のように上限アドレス設定レジスタ、下限アドレス設定レジスタ、バイトリードアクセス単位設定レジスタ、バイトリードアクセスイネーブルレジスタなどで設定を行っていた。ところが、アクセスサイズを変更するときには、これらのレジスタ設定を変更する手続きが必要であり、ソフトウェアが複雑になり、さらに、レジスタ設定変更のために余分なアクセス時間がかかってしまうという問題点があった。
【００１５】
以上の問題点を解決するために、本発明のデータ制御装置は、読み出し時に特定のバス幅分の読み出し要求にしか対応できないＣＰＵで構成された装置において、ソフトウェアから特定のバス幅より小さなサイズの読出し要求を受けた場合でも、ソフトウェアでの複雑なレジスタ設定を行うことなく、ターゲットデバイスからソフトウェアの要求したバス幅のデータ転送を行うことを目的とする。
【課題を解決するための手段】
【００１６】
上記目的を達成するために、本発明の請求項１記載のデータ制御装置は、データ読み出し要求時に要求されたバス幅に関わらず特定のバス幅分の読み出し要求にしか対応できないＣＰＵで構成された装置におけるデータ制御装置であって、前記データ読み出し要求されたアドレスの１または２以上の任意のビットにより読み出し要求されたデータのバス幅を認識し、前記アドレスの１または２以上の任意の下位ビットにより前記要求されたデータが何ビット目であるかを認識し、それらに対応するバイトイネーブル信号をＣＰＵから出力されたＣＰＵバイトイネーブル信号のうちから選択して出力することにより、前記バイトイネーブル信号により転送するデータのバス幅とアドレスを指定し、要求のあったバス幅でターゲットデバイスがテータ転送できるようにすることを特徴とする。
【００１７】
請求項２記載のデータ制御装置は、請求項１記載のデータ制御装置において、前記ＣＰＵは３２ビットの外部バスを備え、前記アドレスの任意の２ビットにより読み出し要求されたデータのバス幅を認識し、前記アドレスの最下位の２ビットにより前記要求されたデータが何ビット目であるかを認識することを特徴とする。
【００１８】
請求項３記載のデータ制御装置は、請求項２記載のデータ制御装置において、前記読み出し要求されたデータのバス幅を認識するアドレスの任意の２ビットがアドレスの最上位の２ビットとすることを特徴とする。
【００１９】
請求項４記載のデータ制御装置は、請求項１記載のデータ制御装置において、前記ＣＰＵは６４ビット以上の外部バスを備え、前記アドレスの任意の３または４以上のビットにより読み出し要求されたデータのバス幅を認識し、前記アドレスの最下位の３または４以上のビットにより前記データが何ビット目であるかを認識することを特徴とする。
【００２０】
請求項５記載のデータ制御装置は、データ読み出し要求時に要求されたバス幅に関わらず特定のバス幅分の読み出し要求にしか対応できないＣＰＵで構成された装置におけるデータ制御装置であって、前記ＣＰＵバスの使用しないアドレスビットを用いて転送するデータのバス幅を設定するバイトイネーブル制御用アドレスビット設定レジスタと、前記ＣＰＵバスアドレスの下位２ビットを用いて転送するアドレスを設定するバイトイネーブル制御用アドレスビット選択部と、前記転送するデータのバス幅と前記転送するアドレスよりバイトイネーブル信号を生成して出力するバイトイネーブル出力部とを有し、前記バイトイネーブル信号により転送するデータのバス幅とアドレスを指定することにより、要求のあったバス幅でターゲットデバイスがテータ転送できるようにすることを特徴とする。
【００２１】
請求項６記載のデータ制御方法は、データ読み出し要求時に要求されたバス幅に関わらず特定のバス幅分の読み出し要求にしか対応できないＣＰＵで構成された装置に用いるデータ制御装置において、前記データ読み出し要求されたアドレスの１または２以上の任意のビットにより読み出し要求されたデータのバス幅を認識する工程と、前記アドレスの１または２以上の任意の下位ビットにより前記要求されたデータが何ビット目であるかを認識する工程と、前記読み出し要求されたデータのバス幅および前記データのビット数に対応するバイトイネーブル信号をＣＰＵから出力されたＣＰＵバイトイネーブル信号のうちから選択して出力する工程とを有することにより、前記バイトイネーブル信号により転送するデータのバス幅とアドレスを指定し、要求のあったバス幅でターゲットデバイスがテータ転送できるようにすることを特徴とする。
【００２２】
請求項７記載のデータ制御方法は、請求項６記載のデータ制御方法において、前記ＣＰＵは３２ビットの外部バスを備え、前記アドレスの任意の２ビットにより読み出し要求されたデータのバス幅を認識し、前記アドレスの最下位の２ビットにより前記要求されたデータが何ビット目であるかを認識することを特徴とする。
【００２３】
請求項８記載のデータ制御方法は、請求項６記載のデータ制御方法において、前記ＣＰＵは６４ビット以上の外部バスを備え、前記アドレスの任意の３または４以上のビットにより読み出し要求されたデータのバス幅を認識し、前記アドレスの最下位の３または４以上のビットにより前記要求されたデータが何ビット目であるかを認識することを特徴とする。
【００２４】
請求項９記載のデータ制御方法は、データ読み出し要求時に要求されたバス幅に関わらず特定のバス幅分の読み出し要求にしか対応できないＣＰＵで構成された装置に用いるデータ制御装置において、前記ＣＰＵバスの使用しないアドレスビットを用いて転送するデータのバス幅を設定する工程と、前記ＣＰＵバスアドレスの下位２ビットを用いて転送するアドレスを設定する工程と、前記転送するデータのバス幅と前記転送するアドレスよりバイトイネーブル信号を生成して出力する工程とを有し、前記バイトイネーブル信号により転送するデータのバス幅とアドレスを指定することにより、要求のあったバス幅でターゲットデバイスがテータ転送できるようにすることを特徴とする。
【００２５】
以上により、読み出し時に要求されたバス幅に関わらず特定のバス幅分の読み出し要求にしか対応できないＣＰＵで構成された装置において、ソフトウェアから特定のバス幅より小さなサイズの読出し要求を受けた場合でも、ソフトウェアでの複雑なレジスタ設定を行うことなく、ターゲットデバイスからソフトウェアの要求したバス幅のデータ転送を行うことができる。
【発明の効果】
【００２６】
以上に説明したように本発明のデータ制御装置は、アドレスの任意のビットにソフトウェアが要求するデータ転送バス幅を指定し、アドレスの所定の下位ビットの値から要求されたデータのアドレスを認識することにより、読み出し時に要求されたバス幅に関わらず特定のバス幅分の読み出し要求にしか対応できないＣＰＵで構成された装置において、ソフトウェアから特定のバス幅より小さなサイズの読出し要求を受けた場合でも、ソフトウェアでの複雑なレジスタ設定を行うことなく、ターゲットデバイスからソフトウェアの要求したバス幅のデータ転送を行うことができる。
【００２７】
また、使用しないアドレスビットによりバイトイネーブル制御用アドレスビット設定レジスタを設定し、そのアドレスビットの状態でターゲットデバイスへのアクセスサイズを変更することができるため、読み出し時に要求されたバス幅に関わらず特定のバス幅分の読み出し要求にしか対応できないＣＰＵで構成された装置において、ソフトウェアから特定のバス幅より小さなサイズの読出し要求を受けた場合でも、ソフトウェアでの複雑なレジスタ設定を行うことなく、アクセスサイズを変更するためにレジスタ設定を変更する必要もなくなり、ＣＰＵへの負担を小さくしながら、ターゲットデバイスからソフトウェアの要求したバス幅のデータ転送を行うことができる。
【発明を実施するための最良の形態】
【００２８】
以下、本発明の実施の形態を示すデータ制御装置について、図面を参照しながら具体的に説明する。
（実施の形態１）
本発明の実施の形態１におけるデータ制御装置を図１，図３，図４，図５，図９を用いて説明する。
【００２９】
図１は本実施の形態１におけるデータ制御装置を含むコンピュータシステムの概略構成を示すブロック図であり、ここでは、ターゲットデバイスとターゲットメモリが各１つずつ搭載された構成を例として示している。図３はＣＰＵのリードアクセス時におけるバイトイネーブル信号生成条件を表で例示する図，図４はＣＰＵのライトアクセス時におけるバイトイネーブル信号生成条件を表で例示する図，図５は本発明の実施の形態１におけるデータ制御装置の動作を示すフローチャートである。また、図９は本発明の実施の形態１におけるデータ制御装置を含むコンピュータシステムのソフトウェアを例示した図であり、ここではデータ制御装置はアドレスの３１ビット目および３０ビットでアクセスサイズを制御することとする。
【００３０】
図１に示すように、１００は３２ビットの外部バスを持つＣＰＵ，１１０はＣＰＵ１００の外部バスに接続されたターゲットデバイス，１２０はＣＰＵ１００の外部バスに接続されたターゲットメモリ，１３０はデータ制御装置である。また、１４０はＣＰＵ１００の外部バスのＣＰＵバイトイネーブル信号，１４１はＣＰＵ１００の外部バスのバイトイネーブル信号以外の制御信号，１４２はＣＰＵ１００の外部バスのデータ信号，１４３はＣＰＵ１００の外部バスのアドレス信号，１４４はＣＰＵ１００の外部バスのアドレス信号の下位２ビット，１４５はＣＰＵ１００の外部バスのアドレス信号の任意の２ビット，１４６はデータ制御装置１３０で生成されるターゲットデバイス１１０とターゲットメモリ１２０に対するバイトイネーブル信号である。
【００３１】
データ制御装置１３０には、ＣＰＵバイトイネーブル信号１４０と、アドレス信号の下位２ビット１４４と、アドレス信号の任意の２ビット１４５が入力され、ターゲットデバイス１１０とターゲットメモリ１２０へのバイトイネーブル信号１４６が出力される。
【００３２】
以下、上記構成の装置における動作を説明する。
ここで、ＣＰＵは読み出し時に４ビットのバス幅分の読み出し要求にしか対応しないものとする。
【００３３】
図３、図４および図５において、まず、データ制御装置１３０はステップ５０１でアドレス信号の任意の２ビット１４５が４バイトアクセスを示す“００”となっているか判定し、“００”だった場合には４バイトアクセスなのでステップ５０２へ進み、“００”でなかった場合はステップ５０３へ進む。
【００３４】
ステップ５０２では、ＣＰＵバイトイネーブル信号１４０をそのままバイトイネーブル信号１４６として出力して、ターゲットデバイスは４バイト幅のデータ転送を行う。
ステップ５０３では、アドレス信号の任意の２ビット１４５が２バイトアクセスを示す“０１”となっているか判定する。“０１”だった場合には２バイトアクセスであるのでステップ５０４へ進み、“０１”でなかった場合にはステップ５０７へ進む。
【００３５】
ステップ５０４では、アドレス信号の下位２ビット１４４が下位２バイトへのアクセスを示す“０Ｘ”となっているか判定し、“０Ｘ”だった場合にはステップ５０５へ進み、“１Ｘ”だった場合には５０６へ進む。
【００３６】
ステップ５０５では、ＣＰＵバイトイネーブル信号１４０の下位２ビットをバイトイネーブル信号１４６として出力し、ターゲットデバイスは下位２ビット分のデータ転送を行う。
【００３７】
ステップ５０６では、ＣＰＵバイトイネーブル信号１４０の上位２ビットをバイトイネーブル信号１４６として出力し、ターゲットデバイスは上位２ビットのデータ転送を行う。
【００３８】
ステップ５０７では、アドレス信号の任意の２ビット１４５が１バイトアクセスを示す“１０”となっているか判定する。“１０”だった場合にはステップ５０８へ進み“１０”でなかった場合には要求されている転送幅が不明のため４ビット幅のデータ転送を行う。
【００３９】
ステップ５０８では、アドレス信号の下位２ビット１４４が１バイト目へのアクセスを示す“００”となっているか判定し、“００”だった場合にはステップ５０９へ進み、“００”でなかった場合にはステップ５１０へ進む。
【００４０】
ステップ５０９では、ＣＰＵバイトイネーブル信号１４０の１ビット目をバイトイネーブル信号１４６として出力し、ターゲットデバイスは１ビット目のデータ転送を行う。
ステップ５１０では、アドレス信号の下位２ビット１４４が２バイト目へのアクセスを示す“０１”となっているか判定し、“０１”だった場合にはステップ５１１へ進み、“０１”でなかった場合にはステップ５１２へ進む。
【００４１】
ステップ５１１では、ＣＰＵバイトイネーブル信号１４０の２ビット目をバイトイネーブル信号１４６として出力し、ターゲットデバイスは２ビット目のデータ転送を行う。
ステップ５１２では、アドレス信号の下位２ビット１４４が３バイト目へのアクセスを示す“１０”となっているか判定し、“１０”だった場合にはステップ５１３へ進み、“１０”でなかった場合にはステップ５１４へ進む。
【００４２】
ステップ５１３では、ＣＰＵバイトイネーブル信号１４０の３ビット目をバイトイネーブル信号１４６として出力し、ターゲットデバイスは３ビット目のデータ転送を行う。
ステップ５１４では、ＣＰＵバイトイネーブル信号１４０の４ビット目をバイトイネーブル信号１４６として出力し、ターゲットデバイスは４ビット目のデータ転送を行う。
【００４３】
ここで図３にリードアクセス時の例を示す。図３に示すようにＣＰＵバイトイネーブル信号１４０は、アクセスサイズに関わらず全てのバイトがイネーブルであることを表す”００００”となる。ターゲットデバイス１１０へ２バイトのリードアクセスを行いたい場合には、ＣＰＵ１００のアクセスアドレスの任意の２ビットが”０１”となるようにする。アドレス信号１４３が３２ビットで、任意のアドレスが上位の２ビットの場合、”０１ＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸ１０”というアドレスにアクセスを行った場合にはバイトイネーブル信号１４６は”００１１”となり、”０１ＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸ００”というアドレスにアクセスを行った場合にはバイトイネーブル信号１４６は”１１００”となる。ターゲットデバイス１１０へ１バイトのリードアクセスを行いたい場合も同様である。
【００４４】
次に図４にライトアクセス時の例を示す。図４に示すようにＣＰＵバイトイネーブル信号１４０はアクセスサイズに応じて、有効なバイトレーンを示す。図４においても図３と同様にアドレス信号１４３が３２ビットで、任意のアドレスが上位の２ビットの場合、”０１ＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸ１０”というアドレスにアクセスを行った場合にはバイトイネーブル信号１４６は”００１１”となり、”０１ＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸＸ００”というアドレスにアクセスを行った場合にはバイトイネーブル信号１４６は”１１００”となる。ターゲットデバイス１１０へ１バイトのリードアクセスを行いたい場合も同様である。
【００４５】
このように、アドレスの任意のビットにソフトウェアが要求するデータ転送バス幅を指定し、アドレスの所定の下位ビットの値から要求されたデータのアドレスを認識することにより、読み出し時に要求されたバス幅に関わらず特定のバス幅分の読み出し要求にしか対応できないＣＰＵで構成された装置において、ソフトウェアから特定のバス幅より小さなサイズの読出し要求を受けた場合でも、ソフトウェアでの複雑なレジスタ設定を行うことなく、ターゲットデバイスからソフトウェアの要求したバス幅のデータ転送を行うことができる。
【００４６】
ここでは、ＣＰＵの転送バス幅を４ビットとして説明したが、ＣＰＵのバス幅と転送可能なバス幅の組み合わせは任意に設定可能である。
このときのソフトウェアの例を示す。
【００４７】
図９において、９１０はワードアクセスレジスタ宣言部であり、ワードアクセスを行うレジスタを宣言する部分である。ここではアドレスの３１ビットと３０ビット目の状態がそれぞれ０と０となって、ワードアクセスとなるアドレス領域であるとレジスタ宣言している。９２０はハーフワードアクセスレジスタ宣言部であり、ハーフワードアクセスを行うレジスタを宣言する部分である。ここではアドレスの３１ビットと３０ビット目の状態がそれぞれ０と１なって、ハーフワードアクセスとなるアドレス領域であるとレジスタ宣言している。９３０はバイトアクセスレジスタ宣言部であり、バイトアクセスを行うレジスタを宣言する部分である。ここではアドレスの３１ビットと３０ビット目の状態がそれぞれ１と０なって、バイトアクセスとなるアドレス領域であるとレジスタ宣言している。９４０はプログラムのメインルーチンであり、レジスタアクセスはワードアクセスレジスタ９１０、ハーフワードアクセスレジスタ９２０、バイトアクセスレジスタ９３０で宣言されたレジスタ名でアクセスを行う。９００はプログラムであり、ワードアクセスレジスタ宣言部９１０，ハーフワードアクセスレジスタ宣言部９２０，バイトアクセスレジスタ宣言部９３０，プログラムのメインルーチン９４０を格納している。
【００４８】
このように、あらかじめアクセスサイズをレジスタに格納しておくことで、ソフトウェアの構造がより簡単になる。
なお、ここでは、３２ビットの外部バスを持つＣＰＵを例にしたが、６４ビット以上の外部バスを持つＣＰＵでも、データ制御装置に入力するバイトイネーブル信号、下位のアドレスビット、任意のアドレスビットをそれぞれ増やせば同様に制御可能である。例えば、外部バス幅６４ビット，転送バス幅が８バイト固定のＣＰＵでは、アドレス３ビットで転送バス幅を指定でき、アドレスの下位３ビットで転送アドレスを特定することができる。
（実施の形態２）
本発明の実施の形態２におけるデータ制御装置について図２を用いて説明する。
【００４９】
図２は本実施の形態２のデータ制御装置を含むコンピュータシステムの概略構成を示すブロック図である。ここでは、ターゲットデバイスとターゲットメモリが各１つずつの構成例としている。
【００５０】
２００は３２ビットの外部バスを持つＣＰＵ，２１０はＣＰＵ２００の外部バスに接続されたターゲットデバイス，２２０はＣＰＵ２００の外部バスに接続されたターゲットメモリ，２３０はデータ制御装置である。
【００５１】
データ制御装置２３０において、２３１はバイトイネーブル制御用アドレスビット設定レジスタであり、アクセスサイズ識別制御のためのＣＰＵ２００の外部バスのアドレスのビットを設定する。２３２はバイトイネーブル制御用アドレスビット選択部であり、バイトイネーブル制御用アドレスビット設定レジスタ２３１で設定されたビットを示す信号とアドレスの下位２ビットを入力して転送するデータのアドレスとバス幅を示す信号をバイトイネーブル出力部２３３へ出力する。２３３はバイトイネーブル出力部であり、バイトイネーブル制御用アドレスビット選択部２３２からの信号に対応してＣＰＵバイトイネーブル信号２４１からバイトイネーブル信号２４５を生成し、このバイトイネーブル信号２４５により、転送するバス幅と転送アドレスを制御して転送している。
【００５２】
また、２４２はＣＰＵ２００の外部バスのバイトイネーブル以外の制御信号，２４３はＣＰＵ２００の外部バスのデータ信号，２４４はＣＰＵ２００の外部バスのアドレス信号であり、ＣＰＵ２００とターゲットデバイス２１０、ターゲットメモリ２２０を接続している。このアドレス信号２４４は、コンピュータシステム仕様により、使われないビットがあることが多い。バイトイネーブル信号２４５はデータ制御装置２３０で生成されるターゲットデバイス２１０とターゲットメモリ２２０に対するバイトイネーブル信号である。
【００５３】
すなわち、以上の構成により、コンピュータシステムにおいて、使用しないアドレスビットをバイトイネーブル制御用アドレスビット設定レジスタ２３１へ設定し、そのアドレスビットの状態でターゲットデバイスへのアクセスサイズを変更することができるため、読み出し時に要求されたバス幅に関わらず特定のバス幅分の読み出し要求にしか対応できないＣＰＵで構成された装置において、ソフトウェアから特定のバス幅より小さなサイズの読出し要求を受けた場合でも、ソフトウェアでの複雑なレジスタ設定を行うことなく、ターゲットデバイスからソフトウェアの要求したバス幅のデータ転送を行うことができる。
【００５４】
なお、３２ビットの外部バスを持つＣＰＵを例にしたが、６４ビット以上の外部バスを持つＣＰＵでも、データ制御装置に入力するバイトイネーブル信号、下位のアドレスビット、任意のアドレスビットをそれぞれ増やせば同様に制御可能である。例えば、外部バス幅６４ビット，転送バス幅が８バイト固定のＣＰＵでは、アドレス３ビットで転送バス幅を指定でき、アドレスの下位３ビットで転送アドレスを特定することができる。
【図面の簡単な説明】
【００５５】
【図１】本実施の形態１におけるデータ制御装置を含むコンピュータシステムの概略構成を示すブロック図
【図２】本実施の形態２のデータ制御装置を含むコンピュータシステムの概略構成を示すブロック図
【図３】ＣＰＵのリードアクセス時におけるバイトイネーブル信号生成条件を表で例示する図
【図４】ＣＰＵのライトアクセス時におけるバイトイネーブル信号生成条件を表で例示する図
【図５】本発明の実施の形態１におけるデータ制御装置の動作を示すフローチャート
【図６】従来のデータ制御装置とそれを含むコンピュータシステムの概念を示すブロック図
【図７】従来のデータ制御装置の動作フローチャート
【図８】ソフトウェア指定のアクセスサイズに関わらず最大バスサイズ分のデータを読み出すＣＰＵの動作を説明する概念図
【図９】本発明の実施の形態１におけるデータ制御装置を含むコンピュータシステムのソフトウェアを例示した図
【符号の説明】
【００５６】
１００    ＣＰＵ
１１０    ターゲットデバイス
１２０    ターゲットメモリ
１３０    データ制御装置
１４０    ＣＰＵバイトイネーブル信号
１４１    バイトイネーブル信号以外の制御信号
１４２    データ信号
１４３    アドレス信号
１４４    アドレス信号の下位２ビット
１４５    アドレス信号の任意の２ビット
１４６    バイトイネーブル信号
２００    ＣＰＵ
２１０    ターゲットデバイス
２２０    ターゲットメモリ
２３０    データ制御装置
２３１    バイトイネーブル制御用アドレスビット設定レジスタ
２３２    バイトイネーブル制御用アドレスビット選択部
２３３    バイトイネーブル出力部
２４１    ＣＰＵバイトイネーブル信号
２４２    バイトイネーブル以外の制御信号
２４３    データ信号
２４４    アドレス信号
２４５    バイトイネーブル信号
６００    ＣＰＵ
６１０    ターゲットデバイス
６２０    ターゲットメモリ
６３０    データ制御装置
６３１    上限アドレス設定レジスタ
６３２    下限アドレス設定レジスタ
６３３    上限アドレスコンパレータ
６３４    下限アドレスコンパレータ
６３５    ＡＮＤ回路
６３６    バイトリードアクセス単位設定レジスタ
６３７    バイトイネーブル生成回路
６３８    バイトリードアクセスイネーブルレジスタ
６３９    バイトイネーブルセレクタ
６４１    ＣＰＵＣＰＵバイトイネーブル信号
６４２    バイトイネーブル信号以外の制御信号
６４３    データ信号
６４４    アドレス信号
６４５    バイトイネーブル信号
８００    ソフトウェア
８０１    ＣＰＵ
８０２    デバイス
９００    プログラムの
９１０    ワードアクセスレジスタ宣言部
９２０    ハーフワードアクセスレジスタ宣言部
９３０    バイトアクセスレジスタ宣言部
９４０    プログラムのメインルーチン
【図１】
2005107756.tif 000003
【図２】
2005107756.tif 000004
【図３】
2005107756.tif 000005
【図４】
2005107756.tif 000006
【図５】
2005107756.tif 000007
【図６】
2005107756.tif 000008
【図７】
2005107756.tif 000009
【図８】
2005107756.tif 000010
【図９】
2005107756.tif 000011