(57)【要約】【課題】データ転送制御装置において、エンディアンの異なるアクセス先へ転送バス幅よりも小さいデータ幅でバースト転送を行う場合に、アドレスが変換されることで昇順アクセスではなくなるためバースト転送できなくなる。【解決手段】エンディアンの異なるアクセス先へデータ転送する際には、転送開始アドレスを転送バス幅でアライメントし、転送サイズを転送バス幅と転送アドレスに応じて調整することで、アクセス先でのバースト転送を可能とする。【選択図】図２
2008033722.tif 000002
【特許請求の範囲】
【請求項１】
エンディアン変換回路を備えたデータ転送制御装置であって、
転送開始アドレス調整回路を備えており、エンディアンの異なる装置へデータ転送する際は、前記転送開始アドレス調整回路において、転送開始アドレスを転送バス幅でアライメントすることを特徴とするデータ転送制御装置。
【請求項２】
請求項１記載のデータ転送制御装置において、
転送サイズ調整回路を備えており、エンディアンの異なる装置へデータ転送する際は、前記転送サイズ調整回路において、転送サイズを前記転送バス幅と前記転送開始アドレスとに応じて調整することを特徴とするデータ転送制御装置。
【請求項３】
請求項１記載のデータ転送制御装置において、
転送終了アドレス調整回路を備えており、エンディアンの異なる装置へデータ転送する際は、前記転送終了アドレス調整回路において、転送終了アドレスを前記転送バス幅でアライメントすることを特徴とするデータ転送制御装置。
【請求項４】
請求項１記載のデータ転送制御装置において、
ライトデータの有効なバイトを示すライトストローブ信号作成回路を備えており、前記ライトストローブ信号作成回路において作成したライトストローブ信号を付加したライトデータを、前記エンディアン変換回路に入力することを特徴とするデータ転送制御装置。
【請求項５】
請求項２又は３に記載のデータ転送制御装置において、
シングル転送の場合では、前記転送開始アドレスの調整と、前記転送サイズ又は前記転送終了アドレスの調整とを行わないことを特徴とするデータ転送制御装置。
【請求項６】
請求項１〜５のいずれか１項に記載のデータ転送制御装置を含む集積回路と、外部記憶装置とを備え、前記データ転送制御装置の転送元又は転送先として前記外部記憶装置を用いるように構成されたことを特徴とする装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・システムのバス間でのデータ転送に関する。詳細には、エンディアンの異なる装置間でのダイレクトメモリアクセス（ＤＭＡ）転送制御装置や、バス間でデータを転送するためのバスアダプタ装置、かかるＤＭＡ転送制御装置やバスアダプタ装置あるいはその両方を組み込んだコンピュータ・システム、及びバス間でデータを転送する方法に関する。
【背景技術】
【０００２】
プロセッサ等の装置における基本語長が複数バイトである場合に、２バイト以上のデータをメモリに格納するバイトの順番として、ビッグエンディアン方式とリトルエンディアン方式の２つがある。ビッグエンディアン方式では、データはアドレス昇順にメモリに格納され、リトルエンディアン方式では、アドレス降順に格納される。また例えば、２バイトのビッグエンディアンと、４バイトのビッグエンディアンのように、データの大きさに応じても格納する順番は異なる。例えば、４バイトのデータを格納するバイトのデータ列が、リトルエンディアンでは（ｄａｔａ３，ｄａｔａ２，ｄａｔａ１，ｄａｔａ０）となる場合に、４バイトのビッグエンディアンでは、（ｄａｔａ０，ｄａｔａ１，ｄａｔａ２，ｄａｔａ３）となり、２バイトのビッグエンディアンでは、（ｄａｔａ２，ｄａｔａ３，ｄａｔａ０，ｄａｔａ１）となる。
【０００３】
このように、データの格納順序については様々な方式が用いられる。これらの方式が混在するシステムにおいては、共有データの同一性を確保するために、エンディアンの違いを吸収するためのエンディアン変換を行う機構が必要である。
【０００４】
アクセス先のエンディアンが異なる場合のメモリアクセスでは、データの順番が異なることを考慮する必要がある。一般的な手法としては、転送先のエンディアンに合わせてデータの位置をスワップすることで、対応をとることができる。
【０００５】
転送バス幅とデータ幅が同じ、又はデータ幅の方が大きい場合では、データの位置の変換のみでよく、発行するアドレスを変える必要はない。しかし、転送バス幅よりもデータ幅の方が小さい場合では、データの位置の変換だけでなく、転送先のエンディアンに合わせて発行するアドレスも変える必要がある。
【０００６】
ある従来技術によれば、図１０に示すように、エンディアンの異なるプロセッサから共有メモリへの転送バス幅よりもデータ幅の方が小さい場合に、転送バス幅における当該データの位置を変換した後の位置を指すように、アドレスの下位ビットを変換し前記共有メモリに出力するようなアドレス変換部を備えることで、転送バス幅よりもデータ幅の方が小さい場合に対応することができる（特許文献１参照）。
【特許文献１】特開２００４−２８７４８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記従来技術においては、エンディアンの異なるアクセス先へ転送バス幅よりも小さいデータ幅でバースト転送しようとした場合に、アドレスが変換されることで昇順アクセスではなくなるためバースト転送できなくなり、複数回のシングル転送に分割する必要があった。
【０００８】
具体的に、データ転送制御装置からエンディアンの異なる転送元デバイスへリード命令を発行する場合の例を図１１に示す。データ転送制御装置はリトルエンディアン、転送元デバイスはビッグエンディアンとする。リードの設定は、転送バス幅が４バイトに対して、リードデータ幅が１バイトと小さくなっている。また、リード開始アドレスが０ｘ０１、リードサイズが０ｘ０５である。このとき、転送元デバイスから取得すべきデータは、エンディアンの違いにより場所が入れ替わり、連続でなくなってしまう。このためバースト転送することができないので、シングル転送に分割してデータリードを行う。各シングルリードでは、エンディアン変換先に合わせてアドレス変換を行って、１つずつデータを取得する。ライトの場合でも同様である。
【０００９】
このため、従来はアクセス命令の発行回数が増加してしまい、特にレイテンシの大きなメモリへのアクセスに対しては、アクセス性能が悪くなるという問題があった。
【００１０】
本発明は、上記のようにエンディアンの異なるアクセス先へ転送バス幅よりも小さいデータ幅でバースト転送を行う場合においても、アクセス性能を悪くせずに転送先のエンディアンに対応したアクセスを行うことが可能な、データ転送制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明のデータ転送制御装置は、エンディアンの異なる装置へデータ転送する際は、転送開始アドレスを転送バス幅でアライメントすることを特徴とする。
【００１２】
また本発明のデータ転送制御装置は、エンディアンの異なる装置へデータ転送する際は、転送サイズを前記転送バス幅と前記転送アドレスとに応じて調整することを特徴とする。
【００１３】
また本発明のデータ転送制御装置は、エンディアンの異なる装置へデータ転送する際は、転送終了アドレスを前記転送バス幅でアライメントすることを特徴とする。
【００１４】
本発明のデータ転送制御装置によれば、エンディアンの異なるアクセス先へ転送バス幅よりも小さいデータ幅でバースト転送する場合に、アドレスの変換によるシングル転送への分割を避けてバースト転送を行うことで、アクセス性能の低下を防いでエンディアン変換に対応したデータアクセスを行うことが可能となる。
【００１５】
また本発明のデータ転送制御装置は、ライトデータの有効なバイトを示すライトストローブ信号作成回路を備え、作成したライトストローブ信号を付加したライトデータを、エンディアン変換回路に入力することを特徴とする。
【００１６】
本発明のデータ転送制御装置によれば、転送開始アドレス等からライトストローブ信号を作成してエンディアン変換前のデータに付加することで、エンディアン変換後ライトデータの有効バイトの位置決定を容易に行うことが可能となる。
【００１７】
また本発明のデータ転送制御装置は、シングル転送の場合では、前記転送開始アドレスの調整と、前記転送サイズ又は前記転送終了アドレスの調整とを行わないことを特徴とする。
【００１８】
本発明のデータ転送制御装置によれば、エンディアンの異なるアクセス先へ転送バス幅よりも小さいデータ幅でシングル転送する場合に、不要な調整によってバースト転送になることを防ぐので、アクセス性能の低下を防ぐことが可能となる。
【００１９】
また上記本発明のデータ転送制御装置のいずれかを含む集積回路と、外部記憶装置とを有する本発明の装置は、前記データ転送制御装置の転送元又は転送先として前記外部記憶装置を用いるように構成されたことを特徴とする。
【００２０】
本発明の装置によれば、ＳＤＲＡＭ等のアクセスレイテンシの大きな外部記憶装置へ、エンディアンの異なるデータに対して転送バス幅よりも小さいデータ幅でアクセスする場合でも、アクセス性能の低下を防ぐことが可能である。
【００２１】
なお本発明については、特許請求の範囲の独立項及び従属項で詳細に説明されているが、従属項の特徴の組み合わせを独立項の特徴と適切に組み合わせることが可能であり、特許請求の範囲で明示的に説明されているものに限らない。
【発明を実施するための最良の形態】
【００２２】
以下、本発明におけるデータ転送制御装置の実施の形態を図面に基づいて詳細に説明する。なお、本発明の実施の形態において使用される手法・構成は一例であり、本発明はこれらに限定されるものでない。
【００２３】
《実施の形態１》
図１は、本発明の実施の形態１におけるデータ転送制御装置１００の概略構成を示すブロック図である。本実施形態のデータ転送制御装置１００は、転送元デバイス又は転送元デバイスが接続されているバスが、バスインタフェースＡ１２０と接続されており、転送先デバイス又は転送先デバイスが接続されているバスが、バスインタフェースＢ１３０と接続されている。１２１はリード転送コマンド、１２２はリードデータ、１３１はライト転送コマンド、１３１はライトデータである。なお、前記両バスが同一のバスでも構わない。
【００２４】
データ転送制御装置１００は、上記のバスインタフェースＡ１２０、バスインタフェースＡ１２０から出力されるリードデータを入力とするエンディアンデータ変換回路１４０、エンディアンデータ変換回路１４０から出力されるデータを入力とするバスインタフェースＢ１３０を有している。またデータ転送制御装置１００は、リード開始アドレス１５１を入力して調整後リード開始アドレス１５２を出力するリード開始アドレス調整回路１５０、リードサイズ１７１を入力して調整後リードサイズ１７２を出力するリードサイズ調整回路１７０を有し、それぞれ出力がバスインタフェースＡ１２０に入力されている。またライト開始アドレス１６１を入力して調整後ライト開始アドレス１６２を出力するライト開始アドレス調整回路１６０、ライトサイズ１８１を入力して調整後ライトサイズ１８２を出力するライトサイズ調整回路１８０を有し、それぞれ出力がバスインタフェースＢ１３０に入力されている。また設定レジスタ１１０を有しており、転送サイズ１１１、リードアドレス１１２、ライトアドレス１１３、リード側エンディアン１１４、ライト側エンディアン１１５、リードデータ幅１１６、ライトデータ幅１１７が設定されている。
【００２５】
なお、転送に必要な情報を格納している設定レジスタについては、これに限らず、例えば外部端子より転送情報が入力される等、異なる方法により転送情報を与えても構わない。
【００２６】
次に、本データ転送制御装置１００において、リード側デバイスとライト側デバイスでエンディアンが異なる場合に、転送バス幅よりも小さいデータ幅でリードバースト転送する場合の動作を、具体例を用いて説明する。
【００２７】
図２に示す例において、データ転送制御装置１００の設定レジスタやデータ制御等はリトルエンディアンで設定・制御しており、転送元デバイスはビッグエンディアンである。また、転送バス幅は４バイトであるが、リードデータ幅が１バイトと、小さい値が設定されている。また、リード開始アドレス１５１は０ｘ０１、リードサイズ１７１は０ｘ０５である。このとき、リード開始アドレス調整回路１５０では、入力されるリード開始アドレス１５１を転送バス幅でアライメントする。つまりリード開始アドレス１５１を、４バイトで切り下げる方向にアライメントを行い、０ｘ００に変換する。これを調整後リード開始アドレス１５２として出力し、バスインタフェースＡ１２０に入力される。
【００２８】
またリードサイズ調整回路１７０では、入力されるリードサイズ１７１を、転送バス幅とリード開始アドレスに応じて調整する。まずリード開始アドレス１５１をアライメントすることによって増加するアクセス分を加算する。ここでは、０ｘ００へのアクセス分として１を足して６となる。次に、６を転送バス幅の４で切り上げる方向にアライメントして、８に変換する。これを調整後リードサイズ１７２として出力し、バスインタフェースＡ１２０に入力される。
【００２９】
このようにして調整された、調整後リード開始アドレス１５２と調整後リードサイズ１７２をリード転送コマンド１２１に用いて、転送元デバイスにアクセスしリードデータ１２２を取得する。この例では、アドレス０ｘ００から０ｘ０７まで、１バイトずつの８バーストでデータを取得する。この際に、データ転送制御装置のアドレスで０ｘ００，０ｘ０６，０ｘ０７のように、不要なリードデータも取得することになるが、これらのデータは無視してライト転送に用いないようにする。
【００３０】
このようにリード開始アドレスとリードサイズを調整することで、転送バス幅よりも小さいデータ幅でリードバースト転送する場合に、リード側デバイスとライト側デバイスでエンディアンが異なっていても、シングル転送に分割する必要がなく、バースト転送でリードデータを取得することができる。
【００３１】
次に、本データ転送制御装置１００において、リード側デバイスとライト側デバイスでエンディアンが異なる場合に、転送バス幅よりも小さいデータ幅でライトバースト転送する場合の動作を説明する。
【００３２】
図３に示す例において、ライト開始アドレス調整回路１６０とライトサイズ調整回路１８０では、リードバーストの場合と同様の手法により、ライト開始アドレスとライトサイズの調整を行い、調整後の出力をバスインタフェースＢ１３０に出力する。これと同時に、調整前のライト開始アドレス１６１とライトサイズ１８１から、ライトデータの有効なバイトが判別できるので、このバイトストローブ信号を１にセットする。図３の設定において、バイトストローブ信号はアドレス０ｘ０１から０ｘ０５までが１となる。この後、エンディアンデータ変換回路１４０において、バイトストローブ信号もライトデータと同様にエンディアン変換を実施する。エンディアンデータ変換回路１４０より出力されたライトデータとバイトストローブ信号は、バスインタフェースＢ１３０を通ってアクセス先デバイスに出力される。出力されるバイトストローブ信号は、エンディアン変換されて、アドレス０ｘ００から０ｘ０３と０ｘ０６，０ｘ０７が１となる。アドレス０ｘ００から０ｘ０７まで、１バイトずつの８バーストで、このバイトストローブ信号と一緒にデータを書き込む。
【００３３】
このようにライト開始アドレスとライトサイズを調整し、バイトストローブ信号を生成することで、転送バス幅よりも小さいデータ幅でライトバースト転送する場合に、リード側デバイスとライト側デバイスでエンディアンが異なっていても、シングル転送に分割する必要がなく、バースト転送でライトデータを書き込むことができる。
【００３４】
また、本データ転送制御装置１００において、転送バス幅よりも転送データ幅が小さくても、転送サイズによってシングル転送の設定をされた場合には、上記のような開始アドレスとサイズの調整は行わない。仮に調整を実施すると、冗長なデータへのアクセスが増えるのみで、余計にアクセス性能が低下してしまう。このような場合は、従来手法どおりエンディアンに応じたアドレスに変換する。具体例を図４に示す。リード開始アドレス調整回路１５０に、リード開始アドレス１５１として０ｘ０１が入力されたら、エンディアン変換後のアドレス０ｘ０２に変換する。これを調整後リード開始アドレス１５２として出力し、バスインタフェースＡ１２０に入力される。リードサイズ調整回路１７０においてはリードサイズの変更は行わない。ライト転送の場合も同様である。
【００３５】
なお、転送開始アドレス、転送終了アドレスをアライメントする単位は転送バス幅で説明しているが、転送バス幅に限る必要はない。例えば、転送バス幅が８バイトで、エンディアン変換を行うデータの単位が４バイトと異なる場合では、４バイトの単位でアライメントを行うことも可能である。
【００３６】
なお、本実施の形態での動作例では、データ転送制御装置における転送レジスタの設定はリトルエンディアンで行われているが、これに限らず、ビッグエンディアン等他のエンディアン方式であっても可能なことは明らかである。
【００３７】
《実施の形態２》
図５は、本発明の実施の形態２におけるデータ転送制御装置２００の概略構成を示すブロック図である。本実施形態のデータ転送制御装置２００は、転送元デバイス又は転送元デバイスが接続されているバスが、バスインタフェースＡ２２０と接続されており、転送先デバイス又は転送先デバイスが接続されているバスが、バスインタフェースＢ２３０と接続されている。２２１はリード転送コマンド、２２２はリードデータ、２３１はライト転送コマンド、２３１はライトデータである。なお、前記両バスが同一のバスでも構わない。
【００３８】
データ転送制御装置２００は、上記のバスインタフェースＡ２２０、バスインタフェースＡ２２０から出力されるリードデータを入力とするエンディアンデータ変換回路２４０、エンディアンデータ変換回路２４０から出力されるデータを入力とするバスインタフェースＢ２３０を有している。またデータ転送制御装置２００は、リード開始アドレス２５１を入力して調整後リード開始アドレス２５２を出力するリード開始アドレス調整回路２５０、リード終了アドレス２７１を入力して調整後リード終了アドレス２７２を出力するリード終了アドレス調整回路２７０を有し、それぞれ出力がバスインタフェースＡ２２０に入力されている。またライト開始アドレス２６１を入力して調整後ライト開始アドレス２６２を出力するライト開始アドレス調整回路２６０、ライト終了アドレス２８１を入力して調整後ライト終了アドレス２８２を出力するライト終了アドレス調整回路２８０を有し、それぞれ出力がバスインタフェースＢ２３０に入力されている。また設定レジスタ２１０を有しており、転送サイズ２１１、リードアドレス２１２、ライトアドレス２１３、リード側エンディアン２１４、ライト側エンディアン２１５、リードデータ幅２１６、ライトデータ幅２１７が設定されている。
【００３９】
なお、転送情報を格納している設定レジスタについては、これに限らず、例えば外部端子より転送情報が入力される等、異なる方法により転送情報を与えても構わない。
【００４０】
次に、本データ転送制御装置２００において、リード側デバイスとライト側デバイスでエンディアンが異なる場合に、転送バス幅よりも小さいデータ幅でリードバースト転送する場合の動作を、具体例を用いて説明する。
【００４１】
図６に示す例において、データ転送制御装置２００の設定レジスタやデータ制御等はリトルエンディアンで設定・制御しており、転送元デバイスはビッグエンディアンである。また、転送バス幅は４バイトであるが、リードデータ幅が１バイトと、小さい値が設定されている。また、リード開始アドレス２５１は０ｘ０１、リード終了アドレス２７１は０ｘ０５である。このとき、リード開始アドレス調整回路２５０では、入力されるリード開始アドレス２５１を転送バス幅でアライメントする。つまりリード開始アドレス２５１を、４バイトで切り下げる方向にアライメントを行い、０ｘ００に変換する。これを調整後リード開始アドレス２５２として出力し、バスインタフェースＡ２２０に入力される。またリード終了アドレス調整回路２７０では、入力されるリード終了アドレス２７１を、転送バス幅に応じて調整する。０ｘ０５を転送バス幅の４で切り上げる方向にアライメントして、０ｘ０７に変換する。これを調整後リード終了アドレス２７２として出力し、バスインタフェースＡ２２０に入力される。
【００４２】
このようにして調整された、調整後リード開始アドレス２５２と調整後リード終了アドレス２７２をリード転送コマンド２２１に用いて、転送元デバイスにアクセスしリードデータ２２２を取得する。この際に、データ転送制御装置のアドレスで０ｘ００，０ｘ０６，０ｘ０７のように、不要なリードデータも取得することになるが、これらのデータは無視してライト転送に用いないようにする。
【００４３】
このようにリード開始アドレスとリード終了アドレスを調整することで、転送バス幅よりも小さいデータ幅でリードバースト転送する場合に、リード側デバイスとライト側デバイスでエンディアンが異なっていても、シングル転送に分割する必要がなく、バースト転送でリードデータを取得することができる。
【００４４】
次に、本データ転送制御装置２００において、リード側デバイスとライト側デバイスでエンディアンが異なる場合に、転送バス幅よりも小さいデータ幅でライトバースト転送する場合の動作を説明する。
【００４５】
リードバーストの場合と同様の手法によって、ライト開始アドレス調整回路２６０、ライト終了アドレス調整回路２８０において、ライト開始アドレスとライト終了アドレスの調整を行い、バスインタフェースＢ２３０に出力される。またライトストローブ信号については、調整前のライト開始アドレスとライト終了アドレスより適切に生成する以外は、実施の形態１と同様である。
【００４６】
このようにライト開始アドレスとライト終了アドレスを調整し、バイトストローブ信号を生成することで、転送バス幅よりも小さいデータ幅でライトバースト転送する場合に、リード側デバイスとライト側デバイスでエンディアンが異なっていても、シングル転送に分割する必要がなく、バースト転送でライトデータを書き込むことができる。
【００４７】
また、本データ転送制御装置２００において、転送バス幅よりも転送データ幅が小さくても、転送開始アドレスと転送終了アドレスによってシングル転送の設定をされた場合には、上記のような開始アドレスとサイズの調整は行わない。この詳細については、実施の形態１と同様である。
【００４８】
なお、転送開始アドレス、転送終了アドレスをアライメントする単位は転送バス幅で説明しているが、転送バス幅に限る必要はない。例えば、転送バス幅が８バイトで、エンディアン変換を行うデータの単位が４バイトと異なる場合では、４バイトの単位でアライメントを行うことも可能である。
【００４９】
なお、本実施の形態での動作例では、データ転送制御装置の転送レジスタの設定はリトルエンディアンで行われているが、これに限らず、ビッグエンディアン等他のエンディアン方式であっても可能なことは明らかである。
【００５０】
《実施の形態３》
図７は、本発明の実施の形態３におけるバスアダプタ３００の概略構成を示すブロック図である。本実施形態のバスアダプタ３００は、転送の制御信号を発行するマスタ又はマスタが接続されたバスが、バスインタフェースＡ３２０と接続されており、スレーブ又はスレーブが接続されたバスが、バスインタフェースＢ３３０と接続されている。
【００５１】
バスアダプタ３００は、上記のバスインタフェースＡ３２０、バスインタフェースＢ３３０、バスインタフェースＡ３２０から転送コマンドや転送データをスレーブ側のバス規格に準じさせるための転送変換回路３１０、転送変換回路３１０からバスインタフェースＢ３３０に出力される転送制御信号３９１、スレーブからのリードデータ又はマスタからのライトデータを入力として、転送制御信号３９１に含まれるマスタとスレーブのエンディアン情報に応じてバイト位置を調整するエンディアンデータ変換回路３４０、転送開始アドレス３５１を入力して転送制御信号３９１の値に応じて調整し、調整後転送開始アドレス３５２を出力する転送開始アドレス調整回路３５０、転送サイズ３７１を入力して転送制御信号３９１の値に応じて調整し、調整後転送サイズ３７２を出力する転送サイズ調整回路３７０を有し、それぞれ出力がバスインタフェースＢ３３０に入力されている。
【００５２】
次に、本バスアダプタ３００において、マスタ側とスレーブ側でエンディアンが異なる場合に、転送バス幅よりも小さいデータ幅でバースト転送する場合の動作を、具体例を用いて説明する。
【００５３】
図８に示す例において、マスタはリトルエンディアンで動作しており、スレーブはビッグエンディアンで動作している。また、転送バス幅は４バイトであるが、転送データ幅が１バイトと、小さい値が設定されている。また、転送開始アドレス３５１は０ｘ０１、転送サイズ３７１は０ｘ０５である。このとき、転送開始アドレス調整回路３５０では、入力される転送開始アドレス３５１を転送バス幅でアライメントする。つまり転送開始アドレス３５１を、４バイトで切り下げる方向にアライメントを行い、０ｘ００に変換する。これを調整後転送開始アドレス３５２として出力し、バスインタフェースＢ３３０に入力される。
【００５４】
また転送サイズ調整回路３７０では、入力される転送サイズ３７１を、転送バス幅と転送開始アドレスに応じて調整する。まず転送開始アドレス３５１をアライメントすることによって増加するアクセス分を加算する。ここでは、０ｘ００へのアクセス分として１を足して６となる。次に、６を転送バス幅の４で切り上げる方向にアライメントして、８に変換する。これを調整後転送サイズ３７２として出力し、バスインタフェースＢ３３０に入力される。
【００５５】
この際に、マスタ側のアドレスで０ｘ００，０ｘ０６，０ｘ０７のように、不要な転送データへもアクセスすることになるが、リードの場合であればこれらのデータは無視し、ライトの場合であれば下記のようにライトストローブ信号で制御を行う。ライトの場合では、調整前の転送開始アドレス３５１と転送サイズ３７１から、ライトデータの有効なバイトが判別できるので、このバイトストローブ信号を１にセットする。この後、エンディアンデータ変換回路３４０において、バイトストローブ信号もライトデータと同様にエンディアン変換を実施する。エンディアンデータ変換回路３４０より出力されたライトデータとバイトストローブ信号は、バスインタフェースＢ３３０を通ってスレーブに出力される。この例では、アドレス０ｘ００から０ｘ０７まで、１バイトずつの８バーストで、スレーブのデータをアクセスする。
【００５６】
このように転送開始アドレスと転送サイズ等の調整を行うことで、転送バス幅よりも小さいデータ幅でバースト転送する場合に、マスタとスレーブでエンディアンが異なっていても、シングル転送に分割する必要がなく、バースト転送でアクセスすることが可能となる。
【００５７】
また、本バスアダプタ３００において、転送バス幅よりも転送データ幅が小さくても、転送サイズ３７１でシングル転送の設定をされた場合には、上記のような開始アドレスとサイズの調整は行わない。この詳細については、実施の形態１と同様である。
【００５８】
なお本バスアダプタ３００では、転送開始アドレスと転送サイズでアクセス位置を指定できるスレーブを想定してアクセス位置を調整しているが、転送開始アドレスと転送終了アドレスでアクセス位置を指定できるスレーブなど、異なる規格のスレーブへ転送を行う場合でも、同様の手法により本発明を適用できることは明らかである。
【００５９】
なお、転送開始アドレス、転送サイズをアライメントする単位は転送バス幅で説明しているが、転送バス幅に限る必要はない。例えば、転送バス幅が８バイトで、エンディアン変換を行うデータの単位が４バイトと異なる場合では、４バイトの単位でアライメントを行うことも可能である。
【００６０】
なお、本実施の形態での動作例では、バスアダプタの転送レジスタの設定はリトルエンディアンで行われているが、これに限らず、ビッグエンディアン等他のエンディアン方式であっても可能なことは明らかである。
【００６１】
《実施の形態４》
図９は、本発明の実施の形態４における装置４００の概略構成を示すブロック図である。本実施形態の装置４００は、集積回路４１０、ＳＤＲＡＭ４２０、周辺デバイス４３０を有する。集積回路４１０は、ＣＰＵ４１１、データ転送制御装置４１２、メモリコントローラ４１３、周辺コントローラ４１４を有しており、それぞれがバスにより相互接続されている。メモリコントローラ４１３はＳＤＲＡＭ４２０と接続されており、周辺コントローラ４１４は周辺デバイス４３０と接続されている。またデータ転送制御装置４１２は、実施の形態１又は２で説明した、本発明のアクセス先を調整する機能を含んでいる。
【００６２】
装置４００において、データ転送制御装置４１２を用いて周辺デバイス４３０からＳＤＲＡＭ４２０にバーストでデータを移す場合を考える。この際、周辺デバイス４３０がリトルエンディアン方式であり、ＳＤＲＡＭ４２０には４バイトビッグエンディアン方式の形でデータを格納する。データ転送制御装置４１２の設定レジスタはリトルエンディアン方式で設定され、転送データ幅は転送元・転送先共に１バイトとする。
【００６３】
まず、データ転送制御装置４１２から周辺デバイス４３０へリード命令を発行し、周辺デバイス４３０からのリードデータがデータ転送制御装置４１２に送られると、ＳＤＲＡＭ４２０へのライト命令を発行するが、データ幅が１バイトでエンディアンが異なるため、実施の形態１又は２で説明した本発明のアクセス先を調整する機能によってアドレス等を調整し、これを発行する。この調整により、本来エンディアンの違いによって複数のシングルライト命令が発行されるところを、バーストライト命令を発行することが可能となり、アクセス性能の低下を防ぐ。また、ＳＤＲＡＭ４２０から周辺デバイス４３０にデータを移す場合も同様である。このように、アクセスレイテンシの大きな外部記憶装置にアクセスする場合において有効となる。
【００６４】
また、ＳＤＲＡＭのような外部記憶装置だけではなく、例えばレイテンシの大きな周辺デバイスであっても本発明は有効であり、外部記憶装置に限らないことは明らかである。この例として、装置４００において、データ転送制御装置４１２を用いてＳＤＲＡＭ４２０から周辺デバイス４３０にバーストでデータを移す場合を考える。この際、ＳＤＲＡＭ４２０がリトルエンディアン方式でデータ幅が４バイト、周辺デバイス４３０が４バイトビッグエンディアン方式でデータ幅が１バイトであり、データ転送制御装置４１２の設定レジスタはリトルエンディアン方式で設定されるとする。データ転送制御装置４１２からＳＤＲＡＭ４２０へリード命令を発行し、ＳＤＲＡＭ４２０からのリードデータがデータ転送制御装置４１２に送られると、周辺デバイス４３０へのライト命令を発行するが、実施の形態１又は２で説明した本発明のアクセス先を調整する機能によって、アドレス等を調整した後に発行する。これにより、本来エンディアンの違いによって複数のシングルライト命令が発行されるところを、バーストライト命令を発行することが可能となり、アクセス性能の低下を防ぐ。また、周辺デバイス４３０からＳＤＲＡＭ４２０にデータを移す場合も同様である。このように、ＳＤＲＡＭのような外部記憶装置だけではなく、レイテンシの大きな周辺デバイスにアクセスする場合であっても本発明は有効であり、外部記憶装置に限らないことは明らかである。また、集積回路４１０の外部でなく、レイテンシの大きな内部の機能ブロックにアクセスする場合にも有効である。
【００６５】
なお、本実施の形態での動作例では、データ転送制御装置の転送レジスタの設定はリトルエンディアンで行われているが、これに限らず、ビッグエンディアン等他のエンディアン方式であっても可能なことは明らかである。
【００６６】
また、実施の形態３で説明したようなバスアダプタを搭載した集積回路であっても、同様にアクセス性能の低下を防ぐことが可能であり、これらの構成に限らないことは明らかである。
【産業上の利用可能性】
【００６７】
本発明に係るデータ転送制御装置は、エンディアンの異なるアクセス先へ転送バス幅よりも小さいデータ幅でバースト転送する場合でも、シングル転送に分割せずにバースト転送を行うことができるので、アクセス性能を悪くせずにエンディアン変換に対応したアクセスを行うことができる。特にＳＤＲＡＭのような、アクセスレイテンシが比較的大きなデバイスでは、アクセス性能の大きな低下を防ぐことができ、特に有効である。
【００６８】
本データ転送制御装置は、ＤＭＡ転送制御回路、バスアダプタ、ＤＭＡ転送制御機能を含むバスアダプタ等、データ転送に関わる回路において幅広く使用することができる。
【図面の簡単な説明】
【００６９】
【図１】本発明の実施の形態１におけるデータ転送制御装置の概略構成を示すブロック図である。
【図２】本発明の実施の形態１における、エンディアンの異なるアクセス先へ転送バス幅よりも小さいデータ幅でリード転送する場合の、転送動作例の説明図である。
【図３】本発明の実施の形態１における、エンディアンの異なるアクセス先へ転送バス幅よりも小さいデータ幅でライト転送する場合の、転送動作例の説明図である。
【図４】本発明の実施の形態１における、エンディアンの異なるアクセス先へ転送バス幅よりも小さいデータ幅でシングル転送する場合の、転送動作例の説明図である。
【図５】本発明の実施の形態２におけるデータ転送制御装置の概略構成を示すブロック図である。
【図６】本発明の実施の形態２における、エンディアンの異なるアクセス先へ転送バス幅よりも小さいデータ幅でリード転送する場合の、転送動作例の説明図である。
【図７】本発明の実施の形態３におけるバスアダプタの概略構成を示すブロック図である。
【図８】本発明の実施の形態３における、エンディアンの異なるスレーブへ転送バス幅よりも小さいデータ幅で転送する場合の、転送動作例の説明図である。
【図９】本発明の実施の形態４における装置の概略構成を示すブロック図である。
【図１０】従来における、エンディアンの異なるアクセス先へ転送バス幅よりも小さいデータ幅で転送する場合の概略構成図を示すブロック図である。
【図１１】従来における、エンディアンの異なるアクセス先へ転送バス幅よりも小さいデータ幅でリード転送する場合の、転送動作例の説明図である。
【符号の説明】
【００７０】
１００，２００  データ転送制御装置
１１０，２１０  設定レジスタ
１１１，２１１  転送サイズ
１１２，２１２  リードアドレス
１１３，２１３  ライトアドレス
１１４，２１４  リード側エンディアン
１１５，２１５  ライト側エンディアン
１１６，２１６  リードデータ幅
１１７，２１７  ライトデータ幅
１２０，２２０  バスインタフェースＡ
１２１，２２１  リード転送コマンド
１２２，２２２  リードデータ
１３０，２３０  バスインタフェースＢ
１３１，２３１  ライト転送コマンド
１３１，２３２  ライトデータ
１４０，２４０  エンディアンデータ変換回路
１５０，２５０  リード開始アドレス調整回路
１５１，２５１  リード開始アドレス
１５２，２５２  調整後リード開始アドレス
１６０，２６０  ライト開始アドレス調整回路
１６１，２６１  ライト開始アドレス
１６２，２６２  調整後ライト開始アドレス
１７０  リードサイズ調整回路
１７１  リードサイズ
１７２  調整後リードサイズ
１８０  ライトサイズ調整回路
１８１  ライトサイズ
１８２  調整後ライトサイズ
２７０  リード終了アドレス調整回路
２７１  リード終了アドレス
２７２  調整後リード終了アドレス
２８０  ライト終了アドレス調整回路
２８１  ライト終了アドレス
２８２  調整後ライト終了アドレス
３００  バスアダプタ
３１０  転送変換回路
３２０  バスインタフェースＡ
３３０  バスインタフェースＢ
３４０  エンディアンデータ変換回路
３５０  転送サイズ調整回路
３５１  転送サイズ
３５２  調整後転送サイズ
３７０  転送開始アドレス調整回路
３７１  転送開始アドレス
３７２  調整後開始アドレス
３９１  転送制御信号
４００  装置
４１０  集積回路
４１１  ＣＰＵ
４１２  データ転送制御装置
４１３  メモリコントローラ
４１４  周辺コントローラ
４２０  ＳＤＲＡＭ
４３０  周辺デバイス
【図１】
2008033722.tif 000003
【図２】
2008033722.tif 000004
【図３】
2008033722.tif 000005
【図４】
2008033722.tif 000006
【図５】
2008033722.tif 000007
【図６】
2008033722.tif 000008
【図７】
2008033722.tif 000009
【図８】
2008033722.tif 000010
【図９】
2008033722.tif 000011
【図１０】
2008033722.tif 000012
【図１１】
2008033722.tif 000013