(57)【要約】【課題】ＦＩＦＯ装置において、受け付ける転送要求が結合できる場合、複数の転送要求を取りまとめた転送要求を保持し、ＦＩＦＯバッファへ格納するＦＩＦＯ装置を提供する。【解決手段】ＦＩＦＯ装置２１は、バス１４から転送される、ライトアドレス、データサイズ及びライトデータを含む転送要求を保持し、バス１５へ出力するＦＩＦＯバッファ１〜３と、第１の転送要求と、第１の転送要求より後に第２の転送要求を、バス１４から受け付け、第１の転送要求のライトアドレス及びデータサイズと、第２の転送要求のライトアドレス及びデータサイズとを用いて第２の転送要求を第１の転送要求に結合できるか否かを判定し、結合できると判定した場合、第１の転送要求と第２の転送要求とを結合した結合転送要求を保持し、ＦＩＦＯバッファ１〜３へ格納する転送要求生成部２０を備える。【選択図】図１
2010027032.tif 000002
【特許請求の範囲】
【請求項１】
第一バスから転送される、ライトアドレス、データサイズ及びライトデータを含む転送要求を保持し、第二バスへ出力するＦＩＦＯ（First-In First-Out）装置であって、
第１の転送要求と、前記第１の転送要求に後続する第２の転送要求を、前記第一バスから受け付け、前記第１の転送要求のライトアドレス及びデータサイズと、前記第２の転送要求のライトアドレス及びデータサイズとに基づいて第１の転送要求と前記第２の転送要求とを結合できるか否かを判定し、結合できると判定した場合、前記第１の転送要求と前記第２の転送要求とを結合した結合転送要求を前記第１の転送要求に置き換えて保持し、出力する転送要求生成部と、
前記転送要求生成部が出力する転送要求を保持し、前記第二バスへ転送するＦＩＦＯバッファと、を備えるＦＩＦＯ装置。
【請求項２】
前記転送要求生成部は、前記第１の転送要求と前記第２の転送要求とが、前記ＦＩＦＯバッファが１回に転送するバッファ領域に収まる場合、前記判定において結合できると判定することを特徴とする請求項１記載のＦＩＦＯ装置。
【請求項３】
前記転送要求生成部は、前記第１の転送要求のライトデータと前記第２の転送要求のライトデータとが前記１回に転送するバッファ領域に収まる場合に、前記判定において結合できると判定することを特徴とする請求項２記載のＦＩＦＯ装置。
【請求項４】
前記転送要求生成部は、データサイズがライトデータストローブである転送要求を受け付け、前記第１の転送要求と前記第２の転送要求とがライトデータを前記１回に転送するバッファの領域に収まる範囲内であり、かつ、前記第２の転送要求のライトデータストローブが指定する領域を前記第１の転送要求で使用していない場合に、前記判定において結合できると判定することを特徴とする請求項２記載のＦＩＦＯ装置。
【請求項５】
前記転送要求生成部は、前記第１の転送要求と前記第２の転送要求が結合できないと判定した場合に、前記第１の転送要求を前記ＦＩＦＯバッファに格納することを特徴とする請求項１または２に記載のＦＩＦＯ装置。
【請求項６】
前記転送要求生成部は、
前記第１の転送要求と前記第２の転送要求とを用いて、前記結合転送要求のライトアドレス、データサイズ及びライトデータを演算する複数の演算器と、
前記第２の転送要求と、前記結合転送要求とのいずれか一方を選択する選択信号に基づいて、前記第２の転送要求と、前記結合転送要求との一方に含まれるライトアドレス、データサイズ及びライトデータを出力する複数のマルチプレクサと、
前記複数のマルチプレクサから出力された情報をそれぞれ保持する複数のレジスタと、
前記第１の転送要求と前記第２の転送要求とが結合可能であるかを判定し、前記判定結果に基づいて、前記選択信号を前記複数のマルチプレクサに出力し、前記第２の転送要求を選択する選択信号を出力するときに、前記複数のレジスタが保持する情報を前記ＦＩＦＯバッファへ格納することを指示する書き込み信号を出力する制御信号生成部と、を備えることを特徴とする請求項１乃至５のいずれか一項に記載のＦＩＦＯ装置。
【請求項７】
前記複数のレジスタは、ライトアドレス用レジスタ、データサイズ用レジスタ及びライトデータ用レジスタであり、各レジスタは、前記ＦＩＦＯバッファにおいて、ライトアドレス、データサイズ及びライトデータそれぞれを格納する、前記１回に転送するバッファ領域と大きさであり、
前記制御信号生成部は、前記第２の転送要求のライトアドレスが、第１の転送要求のライトデータと合わせて前記ライトデータ用レジスタに格納できる範囲を示すアドレスであり、前記第２の転送要求のデータサイズが前記ライドデータ用レジスタに第１の転送要求のライトデータが格納されていない空き領域の範囲内に収まる値である場合、前記判定において結合できると判定することを特徴とする請求項６記載のＦＩＦＯ装置。
【請求項８】
前記制御信号生成部は、前記判定において結合できると判定した場合、前記結合転送要求を出力する選択信号を前記複数のマルチプレクサへ出力し、結合できないと判定した場合、前記第２の転送要求を選択する選択信号を前記複数のマルチプレクサへ出力することを特徴とする請求項６または７記載のＦＩＦＯ装置。
【請求項９】
前記転送要求生成部を、複数備え、
前記複数の転送要求生成部から出力される転送要求のいずれかを選択し、ＦＩＦＯバッファへ出力する選択部と、
前記複数の転送要求生成部から前記判定において結合できるか否かを通知され、結合できる転送要求生成部がない場合、一つの転送要求生成部を選択し、前記選択部を用いて前記選択した転送要求生成部が保持する転送要求を前記ＦＩＦＯバッファへ出力させるとともに、前記選択した転送要求生成部へ新たな転送要求の受け入れを要求する制御部と、をさらに備えることを特徴とする請求項１乃至４のいずれか一項に記載のＦＩＦＯ装置。
【請求項１０】
前記複数の転送要求生成部は、前記判定において結合できないことを通知したとき、前回保持した転送要求をそのまま保持し、前記制御部が前記第一バスから転送される新たな転送要求の受け入れを要求した場合、前記新たな転送要求を現在保持している転送要求と置き換えることを特徴とする請求項９記載のＦＩＦＯ装置。
【請求項１１】
前記第１の転送要求と前記第２の転送要求とを用いて、前記結合転送要求のライトアドレス、データサイズ及びライトデータを演算する複数の演算器と、
前記第２の転送要求と、前記演算器が出力する前記結合転送要求とのいずれか一方に含まれるライトアドレス、データサイズ及びライトデータを出力する複数のマルチプレクサと、
前記複数のマルチプレクサから出力された前記第２の転送要求と前記結合転送要求とのいずれかを前記第１の転送要求として保持するとともに、前記選択部へ出力する複数のレジスタと、
前記第１の転送要求と前記第２の転送要求とが結合可能であるか否かを判定し、判定結果を前記制御部へ通知するとともに、前記判定結果が結合可能の場合、前記演算器に前記結合転送要求を出力させ、前記判定結果が結合不可の場合、前記演算器に前記結合転送要求に替えて複数のレジスタが保持する前記第一の転送要求を出力させ、前記複数のマルチプレクサに前記演算器からの出力を選択させる選択信号を出力し、前記制御部から前記第一バスから転送される新たな転送要求の受け入を要求された場合、前記複数のマルチプレクサに前記第２の転送要求を選択させる選択信号を出力する制御信号生成部と、を備えることを特徴とする請求項９または１０記載のＦＩＦＯ装置。
【請求項１２】
前記制御部は、前記第１の転送要求と前記第２の転送要求が結合できると通知した転送要求生成部がない場合に、一つの転送要求生成部を選択し、選択した転送要求生成部が保持する転送要求を前記ＦＩＦＯバッファに格納することを特徴とする請求項９乃至１１のいずれか一項に記載のＦＩＦＯ装置。
【請求項１３】
ライトアドレス、データサイズ及びライトデータを含み、第二バスへ転送させる第１の転送要求を第一バスから受け付けて保持し、
第２の転送要求をさらに前記第一バスから受け付け、
前記第１の転送要求のライトアドレス及びデータサイズと、前記第２の転送要求のライトアドレス及びデータサイズとに基づいて前記第１の転送要求と前記第２の転送要求とを結合できるか否かを判定し、
前記判定結果が結合できるという判定であった場合、前記第１の転送要求と前記第２の転送要求とを結合した結合転送要求を前記第１の転送要求と置き換えて保持し、
前記判定結果が結合できないという判定であった場合、前記第１の転送要求をＦＩＦＯバッファに格納するＦＩＦＯバッファへのデータ格納方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バス間のデータを転送するＦＩＦＯ（First-In First-Out）バッファに関する。
【背景技術】
【０００２】
バス間のデータを転送する際に、ＦＩＦＯバッファが用いられている。ＦＩＦＯバッファでは、要求を受け付けた順番に、データ転送要求を格納する。データ転送要求は、各処理装置によって実行される。このため、一つの転送要求のデータサイズは、必ずしもバス幅に適応しているわけではなかった。また、ＦＩＦＯバッファにおいて、一つにまとめられる転送要求をまとめていなかった。従って、転送要求の数が増えると、バスへのアクセス回数が増えるため、転送効率の向上を妨げていた。
【０００３】
図１１にＦＩＦＯ装置の構成例を示す。図１１のＦＩＦＯ装置９０は、ライトアドレスを格納するＦＩＦＯバッファ９１と、ライトデータのストローブを格納するＦＩＦＯバッファ９２と、ライトデータを格納するＦＩＦＯバッファ９３とを備える。ＦＩＦＯ装置９０は、バス１４から転送要求として、ライトアドレス、ライトデータのストローブ、ライトデータを受け付け、それぞれＦＩＦＯバッファ９１〜９３に格納する。ＦＩＦＯ装置９０は、格納された転送要求を受け付けた順にバス１５に出力する。
【０００４】
図１１に示すＦＩＦＯ装置９０では、バス１４からの転送要求を逐次バス１５に転送している。このため、連続してバス１５への転送が実行される場合、バスに負荷がかかりやすい状態となっていた。
【０００５】
特許文献１には、データ読取転送およびデータ書込転送に関してバス使用量を最適化する技術が開示されている。特許文献１では、データ転送のタイプを決定し、データを、決定された転送のタイプに応じてデバイスのバスの間でＦＩＦＯを使用して非同期に転送している。しかし、この技術は、ＦＩＦＯに格納するデータを結合するものではなかった。
【０００６】
また、特許文献２から４には、ダイレクトメモリアクセス（ＤＭＡ）のデータ転送においては、データ転送回数を少なくして転送時間を短縮する技術が開示されている。ＤＭＡの技術では、連続したデータを取り扱うことが前提であり、ＦＩＦＯ装置が受け付ける複数の転送要求に適用することができなかった。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００２−１４９５９１号公報
【特許文献２】特開２００６−４３４０号公報
【特許文献３】特開２０００−１３２４９７号公報
【特許文献４】特開昭６３−２９２３５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述したように、ＦＩＦＯ装置において、一つのバスから受け付ける転送要求を逐次他のバスへ転送していたため、転送の効率の低下を招いているという問題があった。
【課題を解決するための手段】
【０００９】
本発明に係るＦＩＦＯ装置の一態様は、第一バスから転送される、ライトアドレス、データサイズ及びライトデータを含む転送要求を保持し、第二バスへ出力するＦＩＦＯ（First-In First-Out）装置であって、第１の転送要求と、前記第１の転送要求に後続する第２の転送要求を、前記第一バスから受け付け、前記第１の転送要求のライトアドレス及びデータサイズと、前記第２の転送要求のライトアドレス及びデータサイズとに基づいて第１の転送要求と前記第２の転送要求とを結合できるか否かを判定し、結合できると判定した場合、前記第１の転送要求と前記第２の転送要求とを結合した結合転送要求を前記第１の転送要求に置き換えて保持し、出力する転送要求生成部と、前記転送要求生成部が出力する転送要求を保持し、前記第二バスへ出力するＦＩＦＯバッファと、を備える。複数の転送要求を結合させて転送することにより、ＦＩＦＯバッファへ格納する転送要求数を削減することができる。
【００１０】
また、本発明に係るＦＩＦＯバッファへのデータ格納方法は、ライトアドレス、データサイズ及びライトデータを含み、第二バスへ転送させる第１の転送要求を第一バスから受け付けて保持し、第２の転送要求をさらに前記第一バスから受け付け、前記第１の転送要求のライトアドレス及びデータサイズと、前記第２の転送要求のライトアドレス及びデータサイズとに基づいて前記第１の転送要求と前記第２の転送要求とを結合できるか否かを判定し、前記判定結果が結合できるという判定であった場合、前記第１の転送要求と前記第２の転送要求とを結合した結合転送要求を前記第１の転送要求と置き換えて保持し、前記判定結果が結合できないという判定であった場合、前記第１の転送要求をＦＩＦＯバッファに格納する。
【発明の効果】
【００１１】
本発明によれば、ＦＩＦＯ装置において、受け付ける転送要求が結合できる場合、複数の転送要求を取りまとめた転送要求を保持するＦＩＦＯ装置を提供することが可能となる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態1に係るＦＩＦＯ装置の構成例を示す図である。
【図２】ライトデータを格納するレジスタの構成例を示す図である。
【図３】ライトアドレスが連続する場合、転送要求を結合する例を示すタイミングチャートである。
【図４】ライトアドレスが連続する場合、転送要求を結合する例を示すタイミングチャートである。
【図５】転送要求がレジスタで使用していない領域に収まる場合、転送要求を結合する例を示すタイミングチャートである。
【図６】転送要求がレジスタで使用していない領域に収まる場合、転送要求を結合可能な例を示すタイミングチャートである。
【図７】本発明の実施形態２に係るＦＩＦＯ装置の構成例を示す図である。
【図８】実施形態２のＦＩＦＯ装置の転送要求生成部と制御部との関係を示す図である。
【図９】実施形態２のＦＩＦＯ装置において、転送要求を結合する例を示すタイミングチャートである。
【図１０】実施形態２のＦＩＦＯ装置において、転送要求を結合する例を示すタイミングチャートである。
【図１１】ＦＩＦＯ装置の構成例を示す図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態について、図面を参照しながら説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡略化がなされている。各図面において同一の構成または機能を有する構成要素および相当部分には、同一の符号を付し、その説明は省略する。
また、本発明では、データの書き込みを要求する転送要求は、情報として、少なくともライトアドレス、データサイズ及びライトデータを含むことを前提とする。データサイズは、ライトデータの大きさを示す情報であればよく、ライトデータをバッファに格納する位置を示すライトデータのストローブ（適宜、「ライトストローブ」ともいう）であってもよい。
【００１４】
（実施形態１）
実施形態１では、転送要求として、ライトアドレス、ライトデータのストローブ及びライトデータを含む転送要求を受け付ける場合を一例として説明する。図１は、本発明の実施形態1に係るＦＩＦＯ装置の構成例を示す図である。ＦＩＦＯ装置２１は、ＦＩＦＯバッファ１〜３と転送要求生成部２０とを備える。ＦＩＦＯ装置２１は、バス１４（第一バス）から転送要求を受け付け、転送要求生成部２０によってＦＩＦＯバッファ１〜３に格納し、バス１５（第二バス）へ出力する。
【００１５】
ＦＩＦＯバッファ１は、ライトアドレスを格納する。ＦＩＦＯバッファ２は、データサイズ（本実施形態では、ライトストローブ）を格納する。ＦＩＦＯバッファ３は、ライトデータを格納する。
【００１６】
転送要求生成部２０の機能の概略は次の通りである。はじめに転送要求生成部２０が、バス１４から転送要求（第１の転送要求とする）を受け付け、保持し、続いて第１の転送要求より後にバス１４から転送要求（第２の転送要求とする）を受け付ける場合を考える。転送要求生成部２０は、第１の転送要求のライトアドレス及びライトストローブと、第２の転送要求のライトアドレス及びライトデータのストローブとを用いて第２の転送要求を第１の転送要求に結合できるかを判定する（判定方法は図２を用いて後述する）。
【００１７】
転送要求生成部２０は、判定結果に基づいて、第１の転送要求と第２の転送要求とを合わせた結合転送要求を保持する。新たに受け付ける転送要求（第３の転送要求とする）について、同様の判定を繰り返し、第３の転送要求が結合転送要求に結合可能な場合に二つの転送要求を結合させる。転送要求生成部２０は、新たに受け付ける転送要求が、既に保持している転送要求と結合できない場合、保持している転送要求をＦＩＦＯバッファへ格納する。上記では、転送要求生成部２０が、最初に第１の転送要求を保持している場合を説明したが、新たな転送要求を受け付ける度に保持している転送要求と結合可能か否かを判定する。転送要求生成部２０は、その判定結果に応じて、結合可能である場合、結合転送要求を保持し、結合不可能である場合、既に保持している転送要求と結合することなく、新たな転送要求（例えば、第２の転送要求、第３の転送要求）を保持することになる。
【００１８】
以降の説明では、転送要求生成部２０を図１に示す構成要素によって実現する例を説明する。転送要求生成部２０は、レジスタ４〜６、マルチプレクサ７〜９、演算器１０〜１２、及び、制御信号生成部１３を備える。レジスタ、マルチプレクサ、及び、演算器それぞれの数は、転送要求に含まれる情報の種類の数に一致する。例えば、本実施形態では、転送要求に、ライトアドレス、データサイズ、ライトデータの３種類が含まれるため、レジスタ、マルチプレクサ、演算器をそれぞれ３つずつ備えている。
【００１９】
レジスタ４、マルチプレクサ７、及び、演算器１０は、ライトアドレスに関する回路である。レジスタ４に保持する値が、ライトアドレスとしてＦＩＦＯバッファ１に格納される。同様に、レジスタ５、マルチプレクサ８、及び、演算器１１は、ライトストローブに関する回路である。レジスタ５に保持する値が、ライトストローブとしてＦＩＦＯバッファ２に格納される。レジスタ６、マルチプレクサ９、及び、演算器１２は、ライトデータに関する回路である。レジスタ６に保持する値が、ライトデータとしてＦＩＦＯバッファ３に格納される。
【００２０】
レジスタ４〜６は、それぞれＦＩＦＯ１〜３に接続する。レジスタ４〜６は、マルチプレクサ７〜９から出力される値を保持する。具体的には、一つ前の転送要求に含まれる値、あるいは、演算器１０〜１２が演算した値のいずれかを保持する。また、レジスタ４〜６それぞれは、ＦＩＦＯバッファ１〜３の一つの格納領域のサイズ（１レコード）と同じサイズである。
【００２１】
マルチプレクサ７〜９は、それぞれのレジスタ４〜６に接続する。マルチプレクサ７〜９は、バス１４から入力する転送要求の値と、演算器１０〜１２が演算した値とを入力し、制御信号生成部１３が出力する制御信号に基づいて、いずれかの値をレジスタ４〜６へ出力する。
【００２２】
演算器１０は、レジスタ４の出力とバス１４からのライトアドレスを演算してマルチプレクサ７に出力する。演算器１１は、レジスタ５の出力とバス１４からのライトストローブを演算してマルチプレクサ８に出力する。演算器１２は、レジスタ６の出力とバス１４からのライトデータを結合する。演算器１２は、ライトデータを結合する場合、レジスタ５のライトストローブに基づいて、結合する位置を特定し、ライトデータを結合する。演算器１０〜１２は、転送要求を結合できないと判定した場合、演算した結果として、使用していないことを示す値を挿入してもよいし、演算結果を出力してもよい。
【００２３】
制御信号生成部１３は、バス１４から出力されるライトアドレス及びライトストローブ、レジスタ４の出力のライトアドレス、レジスタ５の出力のライトストローブを用いて、２種類の制御信号を生成する。具体的には、選択信号と書き込み信号とを生成する。選択信号は、マルチプレクサ７〜９から出力する値を選択する信号であり、マルチプレクサ７〜９それぞれに出力される。書き込み信号は、レジスタ４〜６の出力をＦＩＦＯバッファ１〜３へ書き込むことを指示する信号であり、ＦＩＦＯバッファ１〜３それぞれに出力される。
【００２４】
図１においては、第１の転送要求に含まれるライトアドレス及びライトストローブがレジスタ４、５に格納され、第１の転送要求に後続する第２の転送要求に含まれるライトアドレス及びライトストローブがバス１４から出力することに対応して、制御信号生成部１３は、次の動作を行う。
【００２５】
制御信号生成部１３は、上述したライトアドレスとライトストローブに基づいて、転送要求を結合できるか否か判定する。より具体的には、制御信号生成部１３は、レジスタ４〜６の出力（以前受け付け、既に保持している転送要求）と現在の転送要求（バス１４から転送される転送要求）がレジスタ６で使用していない領域に収まるか否かに基づいて、転送要求を結合できるか否か判定する。制御信号生成部１３は、転送要求を結合可能と判定した場合、演算器１０〜１２から入力する信号をマルチプレクサに選択させる選択信号を生成する。一方、制御信号生成部１３は、転送要求を結合できないと判定した場合、バス１４から入力する信号をマルチプレクサに選択させる選択信号を生成する。
【００２６】
図２に示すレジスタ６の領域を用いて説明する。レジスタ６が１バイトのＡ〜Ｄ領域で示す４バイトから構成されているとする。既にライトアドレス１００番地で右端のＡ領域にライトデータを保持したとする。具体的には、レジスタ４へライトアドレスとして１００番地が保持され、レジスタ６のＡ領域にライトデータが保持されている場合を想定する。この場合、後から受け付ける転送要求が次の場合に、二つの転送要求を結合することが可能になる。レジスタ６のＡ領域に１００番地に書き込むライトデータが保持されているため、レジスタ６が使用していない範囲に収まるライトアドレスが１０２〜１０６番地までとなる。また、データサイズとして、ライトアドレスが１０２番地でデータサイズが３バイト、２バイト、及び１バイトのいずれかの場合、ライトアドレスが１０４番地でデータサイズが２バイトと１バイトのいずれかの場合、１０６番地でデータサイズが１バイトのいずれかの場合となる。
【００２７】
また、制御信号生成部１３は、転送要求を結合しない場合、書き込み信号を生成し、ＦＩＦＯバッファ１〜３へ出力する。ＦＩＦＯバッファ１〜３は、書き込み信号に基づいて、レジスタ４〜６が保持する値を格納する。なお、制御信号生成部１３は、レジスタ４〜６が保持する値が各レジスタを使用していないことを示す値（以降、説明を簡単にするため「初期値」という）の場合、転送要求を結合しないと判定した場合であっても書き込み信号を生成しない。
【００２８】
続いて、本実施形態のＦＩＦＯ装置２１の動作をタイミングチャートを用いて説明する。図３，４は、ライトアドレスが連続する場合、転送要求を結合する例を示すタイミングチャートである。また、図５，６は、新たに届いた転送要求がレジスタ６で使用していない領域に収まる場合、転送要求を結合する例を示すタイミングチャートである。図３〜６では、クロックとして時刻Ｔ０からＴ５までを示している。また、レジスタにおいて、アドレスの値Ｘ、ライトストローブの値４'ｂｘｘｘｘ、データの値３２'ｈＸＸＸＸ＿ＸＸＸＸは、初期値であることを前提とする。
【００２９】
まず、ライトアドレスが連続する場合に、転送要求を結合する例を説明する。図３において、クロックＴ０のとき、バス１４にライトアドレス０ｘ１０、ライトストローブ４'ｂ０００１、データ３２'ｈＸＸＸＸ＿ＸＸ５５が転送されると、マルチプレクサ７〜９と演算器１０〜１２にそれぞれ入力される。また、ライトアドレス０ｘ１０は、制御信号生成部１３へ入力され、ライトストローブ４'ｂ０００１は、演算器１２及び制御信号生成部１３に入力される。
【００３０】
演算器１０は、レジスタ４のライトアドレスとバス１４のライトアドレスとを用いて、転送要求を連結する場合のライトアドレスを演算する。このとき、演算器１０は、転送要求を連結できるかを判定し、連結しないときには初期値を設定してもよいし、連結できるかの判定をすることなく演算した結果を設定する場合であってもよい。演算器１０から出力されるライトアドレスが使用できない値（不正な値）であっても、制御信号生成部１３から出力される選択信号によって、バス１４のライトアドレスが選択されることになる。演算器１１及び演算器１２も同様に演算した結果を出力する。本実施形態では、一例として演算器１０並びに演算器１１、１２は、初期値を設定する場合を示している。
【００３１】
制御信号生成部１３は、バス１４から入力されたライトアドレス及びライトストローブと、レジスタ４が保持するライトアドレス及びレジスタ５が保持するライトストローブとを比較し、転送要求が結合可能であるか否かを判定する。図３において、制御信号生成部１３の項目の矢印は、ライトアドレス及びライトストローブに基づいて、結合可能か否かを判定する期間を示している。具体的には、制御信号生成部１３は、レジスタ４のアドレスＸとバス１４から入力されたアドレス０ｘ１０とを比較する。この場合、アドレスがレジスタ６で使用していない領域に収まる範囲でないため、新たにバス１４から受け付けた転送要求をレジスタ６で使用していない領域に収めることができない。制御信号生成部１３は、転送要求の結合が不可能であると判定し、バス１４からの出力をレジスタ４〜６それぞれに出力する選択信号、図３では、Ｌ（ゼロ）を生成し、マルチプレクサ７〜９に出力する。Ｔ０からＴ１の間で、マルチプレクサ７〜９はバス１４から出力されたデータを選択し、クロックＴ１の立ち上がりのタイミングで、レジスタ４〜６はバス１４から出力されたデータを保持する。
【００３２】
また、制御信号生成部１３は、レジスタ４〜６が保持する値が初期値であるため、書き込み信号をＬ（ゼロ）のままとする。ここでは、Ｈ（１）の場合、書き込み信号によってＦＩＦＯバッファ１〜３にレジスタ４〜６の値を書き込むこと前提とする。
【００３３】
クロックＴ１のとき、バス１４にライトアドレス０ｘ１２、ライトストローブ４'ｂ００１０、データ３２'ｈＸＸＸＸ＿ＡＡＸＸが転送されると、マルチプレクサ７〜９と演算器１０〜１２にそれぞれ入力される。また、ライトアドレス０ｘ１２は、制御信号生成部１３へ入力され、ライトストローブ４'ｂ００１０は、演算器１２及び制御信号生成部１３に入力される。
【００３４】
制御信号生成部１３は、レジスタ４のライトアドレス０ｘ１０とバス１４から入力されたライトアドレス０ｘ１２及びバス１４から入力されたライトストローブ４'ｂ００１０とレジスタ５のライトストローブ４'ｂ０００１とをそれぞれ比較する。この場合、ライトアドレスがレジスタ６で使用していない領域に収まる範囲内の値であり、かつ、バスから入力されたライトストローブ４'ｂ００１０が、レジスタ５のライトストローブ４'ｂ０００１が使用する領域と重ならないため、新たにバス１４から受け付けた転送要求をレジスタ６で使用していない領域に収めることができる。図３では、データサイズをライトストローブで判定する。制御信号生成部１３は、転送要求の結合が可能であると判定し、演算器１０〜１２からの出力をレジスタ４〜６それぞれに出力する選択信号、図３では、Ｈ（１）を生成し、マルチプレクサ７〜９に出力する。Ｔ１からＴ２の間で、マルチプレクサ７〜９は演算器１０〜１２から出力されたデータを選択し、クロックＴ２の立ち上がりのタイミングで、レジスタ４〜６は演算器１０〜１２から出力されたデータを保持する。
また、制御信号生成部１３は、転送要求を結合するため、書き込み信号をＬ（ゼロ）のままとする。
【００３５】
クロックＴ２のとき、バス１４にライトアドレス０ｘ４０、ライトストローブ４'ｂ０００１、データ３２'ｈＸＸＸＸ＿ＸＸＦＦが転送されると、マルチプレクサ７〜９と演算器１０〜１２にそれぞれ入力される。また、ライトアドレス０ｘ４０は、制御信号生成部１３へ入力され、ライトストローブ４'ｂ０００１は、演算器１２及び制御信号生成部１３に入力される。
【００３６】
制御信号生成部１３は、レジスタ４のライトアドレス０ｘ１０とバス１４から入力されたライトアドレス０ｘ４０とを比較する。この場合、ライトアドレスがレジスタ６で使用していない領域に収まる範囲でないため、新たにバス１４から受け付けた転送要求をレジスタ６で使用していない領域に収めることができない。制御信号生成部１３は、転送要求の結合が不可能であると判定し、バス１４からの出力をレジスタ４〜６それぞれに出力する選択信号を生成し、マルチプレクサ７〜９に出力する。Ｔ２からＴ３の間で、マルチプレクサ７〜９はバス１４から出力されたデータを選択し、クロックＴ３の立ち上がりのタイミングで、レジスタ４〜６はバス１４から出力されたデータを保持する。
【００３７】
また、制御信号生成部１３は、転送要求を結合しないため、書き込み信号をＨ（１）に変更する。ＦＩＦＯバッファ１〜３は、クロックＴ３の立ち上がりのタイミングにおいて、レジスタ４〜６が保持するデータそれぞれを格納する。
【００３８】
クロックＴ３のとき、バス１４にライトアドレス０ｘ８０、ライトストローブ４'ｂ０００１、データ３２'ｈＸＸＸＸ＿ＸＸ１１が転送されると、マルチプレクサ７〜９と演算器１０〜１２にそれぞれ入力される。また、ライトアドレス０ｘ８０は、制御信号生成部１３へ入力され、ライトストローブ４'ｂ０００１は、演算器１２及び制御信号生成部１３に入力される。
【００３９】
制御信号生成部１３は、レジスタ４のライトアドレス０ｘ４０とバス１４から入力されたライトアドレス０ｘ８０とを比較する。この場合、ライトアドレスがレジスタ６で使用していない領域に収まる範囲でないため、新たにバス１４から受け付けた転送要求をレジスタ６で使用していない領域に収めることができない。制御信号生成部１３は、転送要求の結合が不可能であると判定し、バス１４からの出力をレジスタ４〜６それぞれに出力する選択信号を生成し、マルチプレクサ７〜９に出力する。Ｔ３からＴ４の間で、マルチプレクサ７〜９はバス１４から出力されたデータを選択し、クロックＴ４の立ち上がりのタイミングで、レジスタ４〜６はバス１４から出力されたデータを保持する。
【００４０】
また、制御信号生成部１３は、転送要求を結合しないため、書き込み信号をＨ（１）を維持する。ＦＩＦＯバッファ１〜３は、クロックＴ４の立ち上がりのタイミングにおいて、レジスタ４〜６が保持するデータそれぞれを格納する。
【００４１】
次に、新たに届いた転送要求がレジスタ６で使用していない領域に収まる場合に、転送要求を結合する例を説明する。図５において、クロックＴ０のとき、バス１４にライトアドレス０ｘ１０、ライトストローブ４'ｂ０００１、データ３２'ｈＸＸＸＸ＿ＸＸ５５が転送されると、マルチプレクサ７〜９と演算器１０〜１２にそれぞれ入力される。また、ライトアドレス０ｘ１０は、制御信号生成部１３へ入力され、ライトストローブ４'ｂ０００１は、演算器１２及び制御信号生成部１３に入力される。制御信号生成部１３は、バス１４から入力されたライトアドレス及びライトストローブと、レジスタ４、５が保持するライトアドレス及びライトストローブとを比較し、転送要求が結合可能であるか否かを判定する。図５において、制御信号生成部１３の項目の矢印の意味は、図３と同様である。
【００４２】
制御信号生成部１３は、レジスタ４のライトアドレスＸとバス１４から入力されたライトアドレス０ｘ１０とを比較する。この場合、ライトアドレスがレジスタ６で使用していない領域に収まる範囲でないため、新たにバス１４から受け付けた転送要求をレジスタ６で使用していない領域に収めることができない。制御信号生成部１３は、転送要求の結合が不可能であると判定し、バス１４からの出力をレジスタ４〜６それぞれに出力する選択信号、図５では、Ｌ（ゼロ）を生成し、マルチプレクサ７〜９に出力する。Ｔ０からＴ１の間で、マルチプレクサ７〜９はバス１４から出力されたデータを選択し、クロックＴ１の立ち上がりのタイミングで、レジスタ４〜６はバス１４から出力されたデータを保持する。
また、制御信号生成部１３は、レジスタ４〜６が保持する値が初期値であるため、書き込み信号をＬ（ゼロ）のままとする。
【００４３】
クロックＴ１のとき、バス１４にライトアドレス０ｘ１４、ライトストローブ４'ｂ０１００、データ３２'ｈＸＸＡＡ＿ＸＸＸＸが転送されると、マルチプレクサ７〜９と演算器１０〜１２にそれぞれ入力される。また、ライトアドレス０ｘ１４は、制御信号生成部１３へ入力され、ライトストローブ４'ｂ０１００は、演算器１２及び制御信号生成部１３に入力される。
【００４４】
制御信号生成部１３は、レジスタ４のライトアドレス０ｘ１０とバス１４から入力されたライトアドレス０ｘ１４とを比較する。この場合、ライトアドレスがレジスタ６で使用していない領域に収まる範囲であり、かつ、バスから入力されたライトストローブ４'ｂ０１００は、レジスタ５のライトストローブ４'ｂ０００１が使用する領域と重ならないため、新たにバス１４から受け付けた転送要求をレジスタ６で使用していない領域に収めることができる。制御信号生成部１３は、転送要求の結合が可能であると判定し、バス１４からの出力をレジスタ４〜６それぞれに出力する選択信号、図５では、Ｈ（１）を生成し、マルチプレクサ７〜９に出力する。Ｔ１からＴ２の間で、マルチプレクサ７〜９は演算器１０〜１２から出力されたデータを選択し、クロックＴ２の立ち上がりのタイミングで、レジスタ４〜６は演算器１０〜１２から出力されたデータを保持する。
また、制御信号生成部１３は、転送要求を結合するため、書き込み信号をＬ（ゼロ）のままとする。
【００４５】
クロックＴ２のとき、バス１４にライトアドレス０ｘ４０、ライトストローブ４'ｂ０００１、データ３２'ｈＸＸＸＸ＿ＸＸＦＦが転送されると、マルチプレクサ７〜９と演算器１０〜１２にそれぞれ入力される。また、ライトアドレス０ｘ４０は、制御信号生成部１３へ入力され、ライトストローブ４'ｂ０００１は、演算器１２及び制御信号生成部１３に入力される。
【００４６】
制御信号生成部１３は、レジスタ４のライトアドレス０ｘ１０とバス１４から入力されたライトアドレス０ｘ４０とを比較する。この場合、ライトアドレスがレジスタ６で使用していない領域に収まる範囲でないため、新たにバス１４から受け付けた転送要求をレジスタ６で使用していない領域に収めることができない。制御信号生成部１３は、転送要求の結合が不可能であると判定し、バス１４からの出力をレジスタ４〜６それぞれに出力する選択信号を生成し、マルチプレクサ７〜９に出力する。Ｔ２からＴ３の間で、マルチプレクサ７〜９はバス１４から出力されたデータを選択し、クロックＴ３の立ち上がりのタイミングで、レジスタ４〜６はバス１４から出力されたデータを保持する。
【００４７】
また、制御信号生成部１３は、転送要求を結合しないため、書き込み信号をＨ（１）に変更する。ＦＩＦＯバッファ１〜３は、クロックＴ３の立ち上がりのタイミングにおいて、レジスタ４〜６が保持するデータそれぞれを格納する。
【００４８】
クロックＴ３のとき、バス１４にライトアドレス０ｘ８０、ライトストローブ４'ｂ０００１、データ３２'ｈＸＸＸＸ＿ＸＸ１１が転送されると、マルチプレクサ７〜９と演算器１０〜１２にそれぞれ入力される。また、ライトアドレス０ｘ８０は、制御信号生成部１３へ入力され、ライトストローブ４'ｂ０００１は、演算器１２及び制御信号生成部１３に入力される。
【００４９】
制御信号生成部１３は、レジスタ４のライトアドレス０ｘ４０とバス１４から入力されたライトアドレス０ｘ８０とを比較する。この場合、ライトアドレスがレジスタ６で使用していない領域に収まる範囲でないため、新たにバス１４から受け付けた転送要求をレジスタ６で使用していない領域に収めることができない。制御信号生成部１３は、転送要求の結合が不可能であると判定し、バス１４からの出力をレジスタ４〜６それぞれに出力する選択信号を生成し、マルチプレクサ７〜９に出力する。Ｔ３からＴ４の間で、マルチプレクサ７〜９はバス１４から出力されたデータを選択し、クロックＴ４の立ち上がりのタイミングで、レジスタ４〜６はバス１４から出力されたデータを保持する。
【００５０】
また、制御信号生成部１３は、転送要求を結合しないため、書き込み信号をＨ（１）を維持する。ＦＩＦＯバッファ１〜３は、クロックＴ４の立ち上がりのタイミングにおいて、レジスタ４〜６が保持するデータそれぞれを格納する。
【００５１】
図３〜６では、二つの転送要求を結合する場合を説明したが、レジスタ６の使用していない領域にライトデータが収まる場合、３以上の転送要求を結合することも可能である。例えば、図４では、Ｔ３において、レジスタ６は、図２に示したＡ、Ｂ領域にライトデータを格納している。もし、Ｔ２において、転送要求が図２に示したＣ、Ｄ領域に格納できるライトデータを転送する場合、結合可能である。同様に、図６では、Ｔ３において、レジスタ６は、図２に示したＡ、Ｃ領域にライトデータを格納している。もし、Ｔ２において、転送要求が図２に示したＢ、Ｄ領域に格納できるライトデータを転送する場合、結合可能である。なお、本実施形態では、ライトストローブを用いて、データサイズ、データ格納位置を特定しているため、図２に示したＢ、Ｄ領域に格納できるライトデータを結合することが可能になっている。
【００５２】
このように、本実施形態では、結合可能な転送要求を複数結合して結合転送要求を生成し、バス１５へアクセスすることにより、バスへアクセス回数を減らすことができる。これにより、バスへの負荷を低減することができる。
【００５３】
（実施形態２）
実施形態２では、図１の転送要求生成部２０を複数備え、結合させた転送要求（結合転送要求）を複数保持する場合を説明する。図７は、本発明の実施形態２に係るＦＩＦＯ装置の構成例を示す図である。また、図８は、実施形態２のＦＩＦＯ装置の転送要求生成部と制御部との関係を示す図である。以下、実施形態１と異なる構成及び動作を中心に説明する。
【００５４】
図７に示すＦＩＦＯ装置３０は、ＦＩＦＯバッファ１〜３、複数のマルチプレクサ（選択部）３１〜３３、制御部３４及び複数の転送要求生成部４０、４１を備える。図７において、転送要求生成部４０の入出力を実線で示し、転送要求生成部４１の入出力を点線で示している。なお、マルチプレクサ３１〜３３から転送要求生成部４１への入力の矢印は、転送要求生成部４０と重なるため示されていない。
【００５５】
マルチプレクサ３１〜３３は、制御部３４から出力される制御信号（選択信号）に応じて、転送要求生成部４０、４１から出力される転送要求のいずれかを選択する。
【００５６】
制御部３４は、転送要求を受け入れることを複数の転送要求生成部４０、４１へ指示する機能と、転送要求生成部４０、４１が保持する転送要求をＦＩＦＯバッファ１〜３へ書き込む機能とを実現する。
【００５７】
まず、転送要求を受け入れることを複数の転送要求生成部４０、４１へ指示する機能について説明する。制御部３４は、複数の転送要求生成部４０、４１のうちの少なくとも一つを選択し、選択した転送要求生成部へ、バス１４から転送される転送要求の受け入れ開始を指示する。また、制御部３４は、転送要求生成部から、バス１４が新たに転送する転送要求を、既に保持している転送要求と結合できるか否かを判定した判定結果を受け取る。当該新たな転送要求が受け入れられない場合、当該新たな転送要求を受け入れる転送要求生成部を選択し、当該新たな転送要求の受け入れを指示する。
【００５８】
具体的には、他の転送要求生成部が転送要求の受け入れを開始していない場合、制御部３４は、当該他の転送要求生成部へ転送要求の受け入れ開始を指示する。
また、新たな転送要求を結合できる転送要求生成部がない場合、具体的には複数の転送要求生成部のいずれも当該新たな転送要求を結合できない場合、制御部３４は、複数の転送要求生成部のうちのいずれかを選択する。
【００５９】
そして、選択した転送要求生成部が当該新たな転送要求を結合できないという判定結果を通知していた場合、制御部３４は、選択した転送要求生成部が保持する転送要求をＦＩＦＯバッファ１〜３へ書き込む機能を実施する。具体的には、制御部３４は、マルチプレクサ３１〜３３へ選択した転送要求生成部が保持する転送要求を選択させ、選択した転送要求を、書き込み信号を用いて前記ＦＩＦＯバッファ１〜３へ書き込む。これと同時に、制御部３４は、選択した転送要求生成部へ当該新たな転送要求の受け入れを指示する。
【００６０】
転送要求生成部４０、４１は、既に保持している転送要求と、新たな転送要求とを結合できるか否かを判定する。既に保持している転送要求は、前回保持した転送要求であり、具体的には、最初に受け入れた転送要求（第１の転送要求とする）、または、第１の転送要求と置き換えられた結合転送要求のいずれかである。結合転送要求は、実施形態１と同様であるため説明を省略する。
【００６１】
転送要求生成部４０、４１は、判定結果を制御部３４へ通知する。そして、結合可能と判定した場合、新たに生成した結合転送要求を保持する。また、結合不可と判定した場合、既に保持している転送要求を保持し続ける。その後、制御部３４がバス１４から転送される新たな転送要求の受け入れを要求した場合、転送要求生成部４０、４１は、新たな転送要求を次の転送要求として保持する。
【００６２】
図８を用いて転送要求生成部４０の構成例を詳細に説明する。転送要求生成部４０、４１は、同様の構成、動作であるため、ここでは転送要求生成部４０を用いて説明する。また、図１と同じ符号の構成要素は同様であるため説明を省略する。
【００６３】
制御信号生成部３５は、制御部３４から転送要求の受け入れ開始を指示している間、例えば、転送要求生成部４０のステータスを示す信号がアクティブ（例えば、Ｈ）の間、転送要求の受け入れを制御する。制御信号生成部３５は、バス１４から新たに転送される転送要求が、既に保持している転送要求と結合できるか否かを判定し、判定結果を制御部３４へ通知する。
【００６４】
結合可能と判定した場合、制御信号生成部３５は、演算器３６〜３８に、結合転送要求を出力させる。これに対して、結合不可と判定した場合、制御信号生成部３５は、演算器３６〜３８にレジスタ４〜６が保持する前回演算した結合転送要求を出力させる。例えば、演算器３６は、制御信号生成部３５から演算器３６へ出力される制御信号がＨ（１）のときレジスタ４の値とバス１４からのアドレスを演算して出力する。演算器３６は、当該制御信号がＬ（０）のとき、レジスタ４の値を出力する。同時に、制御信号生成部３５は、マルチプレクサ７〜９に結合転送要求（すなわち、演算器３６〜３８の出力）を選択させる選択信号を出力する。
【００６５】
また、制御信号生成部３５は、制御部３４から新たな転送要求の受け入れを指示された場合、マルチプレクサ７〜９に新たな転送要求（すなわち、バス１４の出力）を選択させる選択信号を出力する。新たな転送要求の受け入れを指示される場合には、転送要求の受け入れ開始を指示された場合と、結合不可の判定結果を通知した後、新たな転送要求の受け入れを指示された場合とが含まれる。また、実施形態１と異なり、制御信号生成部３５は、ＦＩＦＯバッファ１〜３へ書き込み信号を出力しない。
【００６６】
続いて、本実施形態のＦＩＦＯ装置３０の動作をタイミングチャートを用いて説明する。図９、１０は、実施形態２の転送要求を結合する例を示すタイミングチャートである。図９にバス１４から転送される転送要求と転送要求生成部４０の出力、図１０に転送要求生成部４１の出力とＦＩＦＯバッファへの書き込みを示す。ここでは、実施形態１と異なる動作を中心に説明し、同様の動作については説明を省略する。図９、１０では、クロックとして時刻Ｔ０からＴ６までを示している。また、レジスタ４〜６において、アドレスの値Ｘ、ライトストローブの値４'ｂｘｘｘｘ、データの値３２'ｈＸＸＸＸ＿ＸＸＸＸは、初期値であることを前提とする。
【００６７】
また、使用状態は、転送要求生成部４０、４１が転送要求の受け入れている間と、受け入れ開始前あるいは受け入れ中止している間とを示す。具体的には、転送要求を受け入れている間は、制御部３４から転送要求生成部４０、４１それぞれの制御信号生成部３５へ入力される制御信号（以降、この制御信号をステータス信号とする）がＨ（１）であることに応じて、転送要求を受け入れる期間である。また、受け入れ開始前あるいは受け入れ中止している間は、ステータス信号がＬ（０）であることに応じて転送要求を受け入れない期間である。
【００６８】
また、制御部３４は、バス１４に転送要求が転送されたときに、どちらの転送要求生成部に転送要求を受け入れるかを予め選択しておく。ここでは、始に転送要求生成部４０に転送要求を受け入れるように選択されていることを前提とする。図９、１０において、制御部３４の処理の点線の矢印は、制御部３４が転送要求を受け入れる転送要求生成部を選択する期間を示し、制御信号生成部３５、３６の処理の実線の矢印は、ライトアドレス及びライトストローブに基づいて、結合可能か否かを判定する期間を示している。
【００６９】
クロックＴ０のとき、制御部３４は、バス１４から転送要求が転送されたことを検出し、制御部３４は転送要求生成部４０を選択する。バス１４から転送される転送要求が転送要求生成部４０、４１に入力される動作、及び、転送要求を結合可能か否かの判断は実施の形態と同様である。ここでは、転送要求生成部４０の制御信号生成部３５は、転送要求の結合が不可能であると判定する。
【００７０】
転送要求生成部４０において、制御信号生成部３５は、バス１４からの出力をレジスタ４〜６それぞれに出力する選択信号をマルチプレクサ７〜９に出力する。Ｔ０からＴ１の間で、マルチプレクサ７〜９はバス１４から出力されたデータを選択し、クロックＴ１の立ち上がりのタイミングで、レジスタ４〜６はバス１４から出力されたデータを保持する。これと同時に、レジスタ４〜６が保持するデータがマルチプレクサ３１〜３３へ出力される。
【００７１】
クロックＴ１のとき、制御部３４は、クロックＴ０での処理結果から、転送要求生成部４０のステータス信号をＨに設定する。制御信号生成部３５は、新たにバス１４から受け付けた転送要求をレジスタ６で使用していない領域に収めることができるため、転送要求の結合が可能であると判定する。制御信号生成部３５は、結合可能（すなわち転送要求受け入れ可能）の判定結果を制御部３４へ通知する。またこのとき、制御信号生成部３５は、演算器３６〜３８へ演算結果（すなわち、結合転送要求）を出力する制御信号を出力し、かつ、マルチプレクサ７〜９へ演算器３６〜３８の出力を選択する選択信号を出力する。Ｔ１からＴ２の間で、マルチプレクサ７〜９は演算器３６〜３８から出力されたデータを選択し、クロックＴ２の立ち上がりのタイミングで、レジスタ４〜６は演算器３６〜３８から出力されたデータを保持する。
【００７２】
クロックＴ２のとき、転送要求生成部４０において、制御信号生成部３５は、ライトアドレスがレジスタ６で使用していない領域に収まる範囲でないため、転送要求の結合ができないと判断する。制御信号生成部３５は、結合不可（すなわち転送要求受け入れ不可）の判定結果を制御部３４へ通知する。またこのとき、制御信号生成部３５は、演算器３６〜３８へレジスタ４〜６が保持する値（すなわち、前回保持した結合転送要求）を出力する制御信号を出力し、かつ、マルチプレクサ７〜９へ演算器３６〜３８の出力を選択する選択信号を出力する。Ｔ２からＴ３の間で、マルチプレクサ７〜９は演算器３６〜３８から出力されたデータを選択し、クロックＴ３の立ち上がりのタイミングで、レジスタ４〜６は演算器３６〜３８から出力されたデータを保持する。
【００７３】
制御部３４は、転送要求生成部４０から結合不可の判定結果を受け取ると、他の転送要求生成部４１の状態を確認する。ここでは、未使用であるため、制御部３４は、転送要求生成部４１へ新たな転送要求を受け入れることを指示する。このとき、制御部３４は、転送要求生成部４１を選択する。
【００７４】
クロックＴ３のとき、制御部３４は、クロックＴ２での処理結果から、転送要求生成部４１のステータス信号をＨに設定する。転送要求生成部４０の制御信号生成部３５は、新たにバス１４から受け付けた転送要求をレジスタ６で使用していない領域に収めることができるため、転送要求の結合が可能であると判定する。一方、転送要求生成部４１の制御信号生成部３５は、新たにバス１４から受け付けた転送要求をレジスタ６で使用していない領域に収めることができないため、転送要求の結合ができないと判定する。以降の動作は、判定結果に応じて同様に実施される。
【００７５】
クロックＴ４のとき、転送要求生成部４０の制御信号生成部３５は、新たにバス１４から受け付けた転送要求をレジスタ６で使用していない領域に収めることができないため、転送要求の結合ができないと判定する。一方、転送要求生成部４１の制御信号生成部３５は、新たにバス１４から受け付けた転送要求をレジスタ６で使用していない領域に収めることができるため、転送要求の結合が可能であると判定する。以降の動作は、判定結果に応じて上記と同様に実施される。
【００７６】
クロックＴ５のとき、転送要求生成部４０の制御信号生成部３５は、新たにバス１４から受け付けた転送要求をレジスタ６で使用していない領域に収めることができないため、転送要求の結合ができないと判定する。同様に、転送要求生成部４１の制御信号生成部３５は、新たにバス１４から受け付けた転送要求をレジスタ６で使用していない領域に収めることができないため、転送要求の結合ができないと判定する。
【００７７】
制御部３４は、両方の転送要求生成部４０、４１から結合不可の判定結果を受け取ると、いずれか一方を受け入れ先として選択する。制御部３４は、単純に交互に選択する、結合回数が多い方を選択する、など任意のルールに基づいて選択する。ここでは、制御部３４は、転送要求生成部４０を選択し、転送要求生成部４０へ新たな転送要求の受け入れを指示する。同時に、制御部３４は、マルチプレクサ３１〜３３へ転送要求生成部４０が保持する転送要求を選択させ、選択した転送要求を、書き込み信号を用いて前記ＦＩＦＯバッファ１〜３へ書き込む。
【００７８】
図９において、制御部３４は、新たな転送要求受け入れの指示を、ステータス信号を用いて行っている。具体的には、制御部３４は、転送要求生成部４０のデータを書き込み中の為、転送要求生成部４０の使用状態ステータスをＬにする。同時に、制御部３４は、次の転送要求を受け入れる転送要求生成部を転送要求生成部４０に選択する。
【００７９】
転送要求生成部４０の制御信号生成部３５は、制御部３４からの指示に応じて、バス１４からの出力を選択する選択信号をマルチプレクサ７〜９に出力する。Ｔ５からＴ６の間で、マルチプレクサ７〜９はバス１４から出力されたデータを選択し、クロックＴ６の立ち上がりのタイミングで、レジスタ４〜６はバス１４から出力されたデータを保持する。
【００８０】
クロックＴ６において、制御部３４は、転送要求生成部４１のデータを書き込み中の為、転送要求生成部４１の使用状態ステータスをＬにする。同時に、制御部３４は、次の転送要求を受け入れる転送要求生成部を転送要求生成部４１に選択する。転送要求生成部４１の制御信号生成部３５は、新たにバス１４から受け付けた転送要求をレジスタ６で使用していない領域に収めることができないため、転送要求の結合ができないと判定する。
図１０では、制御部３４は、他の転送要求生成部４０が使用開始しているため、新たな転送要求を受け入れさせるため、転送要求生成部４１が出力する転送要求をＦＩＦＯバッファ１〜３へ書き込む場合を示している。
【００８１】
以上説明したように、本実施の形態では、複数の転送要求生成部を用いることにより、実施の形態１に比べ、より多くの転送要求を結合させることができる。これにより、ＦＩＦＯ装置３０からバス１５へ転送する転送要求の数を抑制し、転送効率を向上させることを可能とする。
なお、本実施形態では、ＦＩＦＯ装置３０が二つの転送要求生成部４０、４１を備える場合を一例として説明したが、３以上の転送要求生成部を備える場合であってもよい。
【００８２】
（その他の実施形態）
実施形態１では、データサイズをライトストローブによって取得する場合を説明したが、データサイズとしてデータ部分の長さを示す値を用いてもよい。この場合、制御信号生成部１３は、ライトアドレスとデータサイズとによって、転送要求が結合可能であるか否かを判定する。具体的には、レジスタ内において、既に保持しているデータが占める領域を除いた領域に新たな転送要求として受け取ったデータが書き込めるか否かを判定する。
【００８３】
図２を用いて説明する。Ａ領域とＢ領域にライトデータが格納されている場合、書込み可能なレジスタ領域は、Ｃ領域とＤ領域であり、ライトアドレスとして、Ｃ領域の先頭アドレスが与えられる。この時、データサイズが２バイト以内であれば、レジスタの空き領域への書込みが可能であるため、結合可能と判定する。逆にデータサイズが３バイト以上であった場合は、結合不可能と判定する。
上記では、実施形態１を用いて説明したが、実施形態２も同様にデータサイズとしてデータ部分の長さを示す値を用いてもよい。
【００８４】
以上説明したように、上記各実施形態によれば、データを書き込む連続した転送要求があった時に、以前の転送領域と比較し、結合可能な場合に、それらを結合してＦＩＦＯバッファに格納することができることにより、１回の転送処理で済ますことができる。具体的には、ＦＩＦＯバッファへの領域へ、ライトデータを結合して格納可能かどうか判定する比較手段（例えば、制御信号生成部１３）と、その比較した結果により、結合して格納可能なライトデータの場合、ライトデータを結合し、ＦＩＦＯバッファに格納する格納手段（例えば、マルチプレクサ７〜９、演算器１０〜１２、制御信号生成部１３など）を備える。これにより、外部バスへの転送数を削減することが可能になる。従って、バスへの負荷を低減するとともに、転送効率の低下を抑制することができる。
【００８５】
なお、本発明は上記に示す実施形態に限定されるものではない。本発明の範囲において、上記実施形態の各要素を、当業者であれば容易に考えうる内容に変更、追加、変換することが可能である。
【符号の説明】
【００８６】
１〜３  ＦＩＦＯバッファ
４〜６  レジスタ
７〜９、３１〜３３  マルチプレクサ
１０〜１２、３６〜３８  演算器
１３、３５  制御信号生成部
２０、４０、４１  転送要求生成部
２１、３０  ＦＩＦＯ装置
１４、１５  バス
３４  制御部
【図１】
2010027032.tif 000003
【図２】
2010027032.tif 000004
【図３】
2010027032.tif 000005
【図４】
2010027032.tif 000006
【図５】
2010027032.tif 000007
【図６】
2010027032.tif 000008
【図７】
2010027032.tif 000009
【図８】
2010027032.tif 000010
【図９】
2010027032.tif 000011
【図１０】
2010027032.tif 000012
【図１１】
2010027032.tif 000013