(57)【要約】【課題】ＦＩＦＯバッファに転送情報を書き込む際に介在するレジスタを除いた構成を実現し、転送時のレイテンシを削減するＦＩＦＯ装置を提供する。【解決手段】ＦＩＦＯ装置３０は、転送データをバス１１からバス１２へ転送する装置であって、ＦＩＦＯバッファ１〜３と結合部２０とを備える。ＦＩＦＯバッファ１〜３は、バス１１から入力された転送データを保持し、バス１２へ出力する。結合部２０は、ＦＩＦＯバッファ１〜３が保持する転送データを、以前の転送データとして参照し、以前の転送データと、以前の転送データの後に新たにバス１１から受信する現在の転送データとを比較する。そして、以前の転送データへ現在の転送データを結合できる場合、結合部２０は、以前の転送データへ現在の転送データを結合させた、結合した転送データによって、ＦＩＦＯバッファ１〜３が保持する以前の転送データを更新する。【選択図】図１
2012053818.tif 000002
【特許請求の範囲】
【請求項１】
転送データを第１バスから第２バスへ転送するＦＩＦＯ（First-In First-Out）装置であって、
第１バスから入力された転送データを保持し、第２バスへ出力するＦＩＦＯバッファと、
前記ＦＩＦＯバッファが保持する転送データを、以前の転送データとして参照し、前記以前の転送データと、前記以前の転送データの後に新たに前記第１バスから受信する現在の転送データとを比較し、前記以前の転送データへ前記現在の転送データを結合できる場合、結合した転送データによって、前記ＦＩＦＯバッファが保持する前記以前の転送データを更新する結合部と、を備えるＦＩＦＯ装置。
【請求項２】
前記結合部は、ＦＩＦＯバッファから更新された前記以前の転送データを取得し、前記以前の転送データと、前記現在の転送データに続いて受信する後続の転送データとを比較し、前記以前の転送データへ前記後続の転送データを結合できる場合、結合した転送データによって、前記ＦＩＦＯバッファが保持する前記以前の転送データを更新することを繰り返し、前記後続の転送データが前記以前の転送データへ結合できない場合、前記後続の転送データを、前記ＦＩＦＯバッファの前記以前の転送データとは異なる領域へ書き込むことを特徴とする請求項１記載のＦＩＦＯ装置。
【請求項３】
前記結合部は、前記後続の転送データが前記以前の転送データへ結合できない場合、前記以前の転送データを前記第２バスに出力させるようにＦＩＦＯバッファを制御し、
前記ＦＩＦＯバッファは、前記結合部からの制御に基づいて、前記以前の転送データを前記第２バスへ出力することを特徴とする請求項２記載のＦＩＦＯ装置。
【請求項４】
前記結合部は、
前記現在の転送データまたは前記後続の転送データを前記以前の転送データへ結合可能か否かを判定し、判定結果に基づいて選択信号を生成する制御部と、
前記以前の転送データと前記現在の転送データまたは前記後続の転送データとを結合して、結合した転送データを出力する演算部と、
入力端子の一方から前記以前の転送データが入力され、入力端子の他方から前記結合した転送データが入力され、前記選択信号に応じて前記以前の転送データと前記結合した転送データとのいずれかを選択し、選択した転送データをＦＩＦＯバッファへ出力する選択部と、を備えることを特徴とする請求項２または３記載のＦＩＦＯ装置。
【請求項５】
前記ＦＩＦＯバッファは、複数の領域から構成され、一つの領域に前記第２バスへ出力する１回分の転送データを格納し、前記選択部が選択した転送データを書き込む領域を指定するインプットポインタと、前記第２バスへ出力する転送データが格納された領域を指定するアウトプットポインタとによって制御され、
前記制御部は、前記後続の転送データが前記以前の転送データへ結合できない場合、前記インプットポインタと前記アウトプットポインタとを更新することを特徴とする請求項４記載のＦＩＦＯ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バス間のデータを転送するＦＩＦＯ（First-In First-Out）装置に関し、特に、二つのバス間で書き込み要求を転送するＦＩＦＯ装置に関する。
【背景技術】
【０００２】
バス間のデータを転送する際に、ＦＩＦＯバッファが用いられている。ＦＩＦＯバッファでは、要求を受け付けた順番に、転送データを格納する。転送データは、仕様の異なる複数の処理装置によって実行されるため、一つの転送データのサイズは、必ずしもバス幅に適応しているわけではなかった。また、ＦＩＦＯバッファでは、転送データを順次受け付けていたため、一つにまとめられる転送データをまとめることがなかった。従って、各処理装置から要求される転送データの数が増えると、バスへのアクセス回数が増えるため、転送効率の向上を妨げていた。
【０００３】
特許文献１には、この問題を解決する技術の一例が開示されている。図３は、特許文献１に開示されたＦＩＦＯ装置の構成例を示す図である。
【０００４】
図３のＦＩＦＯ装置では、ライト時に、バス１４ｐから、アドレス、ライトストローブ、データをマルチプレクサ７ｐ〜９ｐに入力する。同時に、演算器１０ｐ及び演算器１１ｐでは、既に入力されている、以前のアドレス、ライトストローブと、今回入力された、現在のアドレス、ライトストローブとを比較して、両者が結合可能であるかを判定する。結合可能な場合、演算器１０ｐ及び演算器１１ｐは、結合したアドレス、ライトストローブを演算して、マルチプレクサ７ｐ、８ｐに出力する。同時に、現在のアドレス、ライトストローブと、以前のアドレス、ライトストローブとが結合可能な場合、制御信号生成部１３ｐは、マルチプレクサ７ｐ〜９ｐを、演算器１０ｐ〜１２ｐの出力を出力するように、マルチプレクサ７ｐ〜９ｐの制御信号を出力する。
特許文献１の技術では、ライト時に、以前の転送領域と、現在の転送領域とを比較し、結合可能な場合に、１回の転送としてＦＩＦＯバッファ１ｐ〜３ｐに格納する。このようにして、バス１５ｐへの転送回数を軽減する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−０２７０３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１の技術では、ＦＩＦＯバッファ１ｐ〜３ｐの前段にレジスタ４ｐ〜６ｐが介在していた。このため、転送時のレイテンシがレジスタ１つ分遅くなる。近年、装置の高速化に伴い、このようなレイテンシを削減することが望まれている。
このように、特許文献１の技術では、ＦＩＦＯ装置内で、レジスタが介在することにより、転送時のレイテンシが発生するという問題があった。
【課題を解決するための手段】
【０００７】
本発明に係るＦＩＦＯ装置の一態様は、転送データを第１バスから第２バスへ転送するＦＩＦＯ装置であって、ＦＩＦＯバッファと結合部とを備える。ＦＩＦＯバッファは、第１バスから入力された転送データを保持し、第２バスへ出力する。結合部は、前記ＦＩＦＯバッファが保持する転送データを、以前の転送データとして参照し、前記以前の転送データと、前記以前の転送データの後に新たに前記第１バスから受信する現在の転送データとを比較する。そして、前記以前の転送データへ前記現在の転送データを結合できる場合、結合部は、前記以前の転送データへ前記現在の転送データを結合させた、結合した転送データによって、前記ＦＩＦＯバッファが保持する前記以前の転送データを更新する。
結合部がＦＯＦＯバッファに格納した転送データを、既に受信している以前の転送データとして参照することにより、結合部内においてレジスタを一段削減する。レジスタを一段削減することによって、以前の転送データを取り込む工程を削減する。
【発明の効果】
【０００８】
本発明によれば、ＦＩＦＯバッファに転送情報を書き込む際に介在するレジスタを除いた構成を実現する。これにより、転送時のレイテンシを削減することが可能となる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態１に係るＦＩＦＯ装置の構成例を示す図である。
【図２】アドレスが連続する場合、転送データを結合する例を示すタイミングチャートである。
【図３】特許文献１に開示されたＦＩＦＯ装置の構成例を示す図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態について、図面を参照しながら説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。各図面において同一の構成または機能を有する構成要素および相当部分には、同一の符号を付し、その説明は省略する。
【００１１】
本発明のＦＩＦＯ装置は、二つのバスの間に配置され、一方のバスから他方のバスへデータ転送する機能を実現する。従って、本発明のＦＩＦＯ装置は、バスブリッジとして機能する。以下の説明では、転送データを時系列に示す場合、一方のバスから転送され、ＦＩＦＯ装置が既に保持するデータを、「以前の転送データ」とする。また、以前の転送データに続いて、一方のバスから新たに転送されるデータを、「現在の転送データ」とする。さらに、現在の転送データに続いて一方のバスから新たに転送される場データを、「後続の転送データ」とする。以前の転送データ、現在の転送データ、後続の転送データの順に転送されることを示す。
【００１２】
（実施形態１）
実施形態１では、転送データの一例として、データの書き込みを要求する、書き込み要求をバス間で転送する場合を一例として説明する。書き込み要求は、少なくともアドレス、データサイズ及びライトデータを含むことを前提とする。データサイズは、ライトデータの大きさを示す情報であればよい。ここでは、ライトデータのストローブ（適宜、「ライトストローブ」ともいう）を用いて説明する。ライトストローブは、ライトデータをバッファに格納する位置を示す情報である。
図１は、本発明の実施形態1に係るＦＩＦＯ装置の構成例を示す図である。ＦＩＦＯ装置３０は、ＦＩＦＯバッファ１〜３と結合部２０とを備える。ＦＩＦＯ装置３０は、バス１１（第１バス）から書き込み要求を受け付け、結合部２０によって書き込み要求をＦＩＦＯバッファ１〜３に格納し、バス１２（第２バス）へ出力する。
【００１３】
ＦＩＦＯバッファ１〜３は、バス１１から入力された書き込み要求を保持し、バス１２へ出力する。ＦＩＦＯバッファ１〜３は、複数の領域から構成され、一つの領域にバス１２へ出力する１回分の書き込み要求を格納する。ＦＩＦＯバッファ１は、アドレスを格納する。ＦＩＦＯバッファ２は、データサイズ（本実施形態では、ライトストローブ）を格納する。ＦＩＦＯバッファ３は、ライトデータを格納する。
【００１４】
ＦＩＦＯバッファ１〜３は、インプットポインタ、アウトプットポインタ、及びイネーブル信号とによって制御される。インプットポインタ、アウトプットポインタ、及びイネーブル信号は、結合部２０（より具体的には制御部１０）によって生成・更新される。インプットポインタは、結合部２０から書き込み要求を書き込むＦＩＦＯバッファ１〜３領域を示す。アウトプットポインタは、ＦＩＦＯバッファ１〜３が保持する書き込み要求をバス１２へ出力する領域を示す。イネーブル信号は、ＦＩＦＯバッファ１〜３の領域のうち、アクセス可能な領域、具体的には、結合部２０からの書き込みが可能な領域、または、ＦＩＦＯバッファ１〜３がバス１２へ書き込み要求を出力可能な領域を示す。
【００１５】
結合部２０の機能の概略は次の通りである。
バス１１から新たに書き込み要求（現在の書き込み要求）がＦＩＦＯ装置３０へ入力されると、結合部２０は、ＦＩＦＯバッファ１〜３が保持する書き込み要求を、以前の書き込み要求として参照し、以前の書き込み要求と、現在の書き込み要求とを比較する。以前の書き込み要求へ現在の書き込み要求を結合できる場合、結合部２０は、以前の書き込み要求へ現在の書き込み要求を結合させた、結合した書き込み要求によって、ＦＩＦＯバッファ１〜３を更新する。具体的には、結合した書き込み要求をＦＩＦＯバッファ１〜３のインプットポインタの領域に書き込むことにより、既に保持していた以前の書き込み要求を更新する。
【００１６】
現在の書き込み要求に続いて、バス１１から新たな書き込み要求（後続の書き込み要求）がＦＩＦＯ装置３０へ入力されると、結合部２０は、ＦＩＦＯバッファ１〜３から更新された以前の書き込み要求を取得し、以前の書き込み要求と、後続の書き込み要求とを比較する。以前の書き込み要求へ後続の書き込み要求を結合できる場合、ＦＩＦＯバッファ１〜３のインプットポインタの領域に結合した書き込み要求を書き込む。後続の転送データが以前の転送データへ結合できなくなるまで、この処理を繰り返す。このとき、結合できない場合には、ＦＩＦＯバッファ１〜３の一つの領域を超えるサイズのデータとなる場合を含む。
【００１７】
結合部２０は、複数の書き込み要求を結合できない場合、インプットポインタ、アウトプットポインタを更新する。結合部２０は、ＦＩＦＯバッファ１〜３が、新たに入力された書き込み要求（現在の書き込み要求または後続の書き込み要求）を、以前の書き込み要求とは異なる領域へ書き込むようにインプットポインタ及びイネーブル信号を制御する。また、ＦＩＦＯバッファ１〜３が、以前の書き込み要求をバス１２へ出力するように、アウトプットポインタ及びイネーブル信号を制御する。
【００１８】
本実施形態では、結合部２０を図１に示す構成要素によって実現する例を説明する。結合部２０は、マルチプレクサ（選択部）４〜６、演算器（演算部）７〜９、及び、制御部１０を備える。マルチプレクサ及び演算器の数は、転送データに含まれる情報の種類の数に一致する。例えば、本実施形態では、転送データに、アドレス、データサイズ、ライトデータの３種類が含まれるため、マルチプレクサ、演算器をそれぞれ３つずつ備えている。
マルチプレクサ４及び演算器７は、アドレスに関する回路である。同様に、マルチプレクサ５及び演算器８は、ライトストローブに関する回路である。マルチプレクサ６及び演算器９は、ライトデータに関する回路である。
【００１９】
マルチプレクサ４は、入力端子の一方をバス１１と、他方を演算器７の出力と接続し、出力端子をＦＩＦＯバッファ１と接続する。マルチプレクサ４は、制御部１０から出力される選択信号に応じて、バス１１からの入力と、演算器７からの入力とのいずれか一方を出力する。マルチプレクサ４の出力が、書き込み要求のアドレスとしてＦＩＦＯバッファ１に格納される。同様に、マルチプレクサ５は、入力端子の一方をバス１１と、他方を演算器８の出力と接続し、出力端子をＦＩＦＯバッファ２と接続する。マルチプレクサ５の出力が、ライトストローブとしてＦＩＦＯバッファ２に格納される。マルチプレクサ６は、入力端子の一方をバス１１と、他方を演算器９の出力と接続し、出力端子をＦＩＦＯバッファ３と接続する。マルチプレクサ６の出力が、ライトデータとしてＦＩＦＯバッファ３に格納される。
【００２０】
演算器７は、ＦＩＦＯバッファ１に格納された、以前のアドレスとバス１１から入力された、現在のアドレスとを演算して以前のアドレスと現在のアドレスとを結合したアドレス（連結アドレス）をマルチプレクサ４に出力する。演算器７は、ＦＩＦＯバッファ１のインプットポインタが示す領域に格納されたアドレスデータを取得し、バス１１から現在のアドレスを受信するように構成されている。同様に、演算器８は、ＦＩＦＯバッファ２に格納された、以前のデータストローブとバス１１から入力された、現在のデータストローブとを演算して、結合したライトストローブをマルチプレクサ５に出力する。演算器９は、ＦＩＦＯバッファ３に格納された、以前のライトデータとバス１１から入力された、現在のライトデータとを演算して、結合したライトデータをマルチプレクサ６に出力する。
【００２１】
制御部１０は、バス１１から入力された、現在のアドレス、ライトストローブ、ＦＩＦＯバッファ１に格納された以前のアドレス、ＦＩＦＯバッファ２に格納されたライトストローブを使用して、マルチプレクサ４〜６の選択信号を生成する。また、制御部１０は、インプットポインタ、アウトプットポインタ、及びイネーブル信号を生成・更新する。制御部１０は、ＦＩＦＯ装置３０が起動されたときに、インプットポインタ、アウトプットポインタ、及びイネーブル信号に初期値を設定する。
【００２２】
続いて、ＦＩＦＯ装置３０の動作について説明する。ＦＩＦＯ装置３０が書き込み要求を受信する場合、バス１１から、アドレス、ライトストローブ、及びデータがマルチプレクサ４〜６、演算器７〜９へ入力され、アドレス、及びライトストローブが制御部１０へ入力される。書き込み要求が入力されると、演算器７〜９は、バス１１から入力された、アドレス、ライトストローブ、及びデータ（現在の書き込み要求）と、ＦＩＦＯバッファ１〜３が保持するアドレス、ライトストローブ、及びデータ（以前の書き込み要求）を演算して、結合した書き込み要求をマルチプレクサ４〜６に出力する。同時に、制御部１０は、現在のアドレス、ライトストローブ、ＦＩＦＯバッファ１，２が保持するアドレス、ライトストローブから、現在の書き込み要求と以前の書き込み要求とが結合可能であるか否かを判定する。結合可能であると判定した場合、制御部１０は、演算器７〜９から演算結果を出力するように、マルチプレクサ４〜６の選択信号を制御する。結合できないと判定した場合、制御部１０は、バス１１から入力した現在の書き込み要求を出力するように、マルチプレクサ４〜６の選択信号を制御する。
【００２３】
具体的には、制御部１０は、現在のアドレス、ライトストローブと、以前のアドレス、ライトストローブとを比較し、ＦＩＦＯバッファ１〜３の一つの領域（転送データを格納する一つの領域）に収まるか否かに基づいて、書き込み要求を結合できるか否かを判定する。そして、判定結果に応じて選択信号を生成する。結合可能である場合、制御部１０は、結合した書き込み要求（演算器７〜９の出力）を、マルチプレクサ４〜６に選択させる選択信号を生成する。一方、結合できない場合、制御部１０は、インプットポインタ、アウトプットポインタ、及びイネーブル信号を更新するとともに、現在の書き込み要求（バス１１からの入力されたデータ）を、マルチプレクサ４〜６に選択させる選択信号を生成する。制御部１０は、生成したインプットポインタ、アウトプットポインタ、及びイネーブル信号を、ＦＩＦＯバッファ１〜３へ出力する。同時に、制御部１０は、生成した選択信号を、マルチプレクサ４〜６へ出力する。
【００２４】
ＦＩＦＯバッファ１〜３は、クロック信号に応じて、マルチプレクサ４〜６が選択した書き込み要求を、インプットポインタの領域に取り込み、アウトプットポインタの領域に格納された転送データを第２バスへ出力する。
なお、ここでは、書き込み要求の結合の可否を判断する処理の詳細についての説明は省略する。例えば、特許文献１に説明されている方法を採用することが可能である。
【００２５】
上述したように、ライト転送実行時に、バス１１からＦＩＦＯ装置３０に入力された複数の書き込み要求が結合可能な場合に、バス１１から入力された複数の書き込み要求を結合し、ＦＩＦＯ装置３０から結合した書き込み要求を１回の転送によってバス１２上に出力する。このとき、ＦＩＦＯ装置３０内において、レジスタを削減することによって特許文献１の技術に比べ、バス１２への転送レイテンシを削減する。図２を用いて具体的に説明する。図２は、アドレスが連続する場合、転送データを結合する例を示すタイミングチャートである。図２では、アドレスが、Ａ１、Ｂ１〜Ｂ３、Ｃ１〜Ｃ２の書き込み要求がバス１１から入力される場合を示す。図２では、ライトストローブについては表示を省略し、アドレスが結合される状況を示す。Ｂ１〜Ｂ３は結合可能な書き込み要求であり、同様に、Ｃ１〜Ｃ２も結合可能であることを前提とする。
【００２６】
アドレスＡ１の書き込み要求をＦＩＦＯバッファ１〜３の領域０（ＦＩＦＯ  ＃０）に格納される。その後、アドレスＢ１の書き込み要求がＦＩＦＯ装置３０に入力されると、アドレスＡ１の書き込み要求とアドレスＢ１の書き込み要求とは結合できないため、バス１２のクロック周期Ｔ１のタイミングでＦＩＦＯ  ＃０に格納された書き込み要求がバス１２へ出力される。このとき、アドレスＢ１の書き込み要求は、ＦＩＦＯバッファ１〜３の領域１（ＦＩＦＯ  ＃１）に格納される。アドレスＢ２，Ｂ３の書き込み要求は、アドレスＢ１の書き込み要求と結合可能であるため、ＦＩＦＯ  ＃１に格納される。アドレスＣ１の書き込み要求は、アドレスＢ１〜Ｂ３の書き込み要求（結合された書き込み要求）と結合できないため、バス１２のクロック周期Ｔ２のタイミングでＦＩＦＯ  ＃１に格納された書き込み要求がバス１２へ出力される。このとき、アドレスＣ１の書き込み要求は、ＦＩＦＯバッファ１〜３の領域２（ＦＩＦＯ  ＃２）に格納される。アドレスＣ２の書き込み要求は、アドレスＣ１の書き込み要求と結合可能であるため、ＦＩＦＯ  ＃２に格納される。その後新たに入力される書き込み要求がないため、バス１２のクロック周期Ｔ３のタイミングでＦＩＦＯ  ＃２に格納された書き込み要求がバス１２へ出力される。
【００２７】
制御部１０は、インプットポインタ、アウトプットポインタ、及びイネーブル信号（enable）を上述した動作が実現できるように制御する。
図２には、特許文献１の技術で書き込み要求を転送する場合に、図３に示すＦＩＦＯバッファ１ｐからバス１５ｐに出力されるアドレスのタイミングを示している。図３の構成例では、アドレスＢ１〜Ｂ３の書き込み要求を結合した、アドレスＢ１２３の書き込み要求が出力されるタイミングは、レジスタ４ｐ〜６ｐに取り込まれた後、ＦＩＦＯバッファ１ｐ〜３ｐへ出力されるため、クロック周期１回分の遅れが発生する。
従って、本実施形態のＦＩＦＯ装置３０は、特許文献１の技術に比べレジスタを１段削減することにより転送レイテンシを削減するとともに、回路面積を削減することができる。
【００２８】
（その他の実施形態）
上記実施形態では、演算器７〜９は、書き込み要求の結合の可否を判断しないで、結合した書き込み要求を演算して出力する例を説明したが、結合可能な場合に結合した書き込み要求を出力するように構成してもよい。
【００２９】
上述した説明では、書き込み要求をバス間で転送する場合を一例として説明したが、これに限られるわけではない。例えば、以前の転送データと現在の転送データとが結合可能であるか否かを判定し、かつ、以前の転送データと現在の転送データとを結合した転送データをＦＩＦＯバッファへ格納することができる情報であれば、本発明のＦＩＦＯ装置を、適用することができる。
【００３０】
以上のように、本発明に係る好適な実施形態によれば、転送に伴うレイテンシを削減することができる。また、レジスタを１段削減することを可能にする構成としたため、回路面積を削減することができる。
【００３１】
なお、本発明は上記に示す実施形態に限定されるものではない。本発明の範囲において、上記実施形態の各要素を、当業者であれば容易に考えうる内容に変更、追加、変換することが可能である。
【符号の説明】
【００３２】
１１、１２  バス
１〜３  ＦＩＦＯバッファ
４〜６  マルチプレクサ（選択部）
７〜９  演算器（演算部）
１０  制御部
２０  結合部
３０  ＦＩＦＯ装置
【図１】
2012053818.tif 000003
【図２】
2012053818.tif 000004
【図３】
2012053818.tif 000005