(57)【要約】【課題】１つのメモリコントローラに対して複数のコントロールマスタを設けたデータ転送システムにおいて、リードコマンドに対する処理効率を向上させる。【解決手段】メモリコントローラを介して接続された複数のコントロールマスタとメモリとの間でデータリード処理を行なうデータ転送システムであって、メモリコントローラは、リードコマンドを受け付けると、そのリードコマンドに係るコントロールマスタの識別子をＦＩＦＯ形式で格納するルートセレクタと、メモリから読み出したリードデータをＦＩＦＯ形式で格納するリードデータバッファとを備え、コントロールマスタは、ルートセレクタに格納されている識別子のうち、最先に格納された識別子が自身の識別子であって、リードデータバッファにリードデータが格納されている場合に、リードデータバッファからリードデータを読み出す。【選択図】図１
2011118501.tif 000002
【特許請求の範囲】
【請求項１】
メモリコントローラを介して接続された複数のコントロールマスタとメモリとの間でデータリード処理を行なうデータ転送システムであって、
前記メモリコントローラは、
いずれかの前記コントロールマスタからリードコマンドを受け付けると、そのリードコマンドに係るコントロールマスタの識別子をＦＩＦＯ形式で格納するルートセレクタと、
前記リードコマンドに従って前記メモリから読み出したリードデータをＦＩＦＯ形式で格納するリードデータバッファと、を備え、
前記コントロールマスタは、
前記ルートセレクタに格納されている識別子のうち、最先に格納された識別子が自身の識別子であって、前記リードデータバッファにリードデータが格納されている場合に、前記リードデータバッファからリードデータを読み出すことを特徴とするデータ転送システム。
【請求項２】
前記ルートセレクタは、前記リードデータバッファからリードデータが読み出されると、前記最先に格納された識別子を消去することを特徴とする請求項１に記載のデータ転送システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラを介して接続されたコントロールマスタとメモリとの間でデータリード処理／データライト処理を行なうデータ転送システムに係り、特に、１つのメモリコントローラに対して複数のコントロールマスタが設けられたデータ転送システムにおけるデータリード処理に関する。
【背景技術】
【０００２】
図７に示すように、メモリコントローラ５００を介して接続されたコントロールマスタ７００とＤＲＡＭ６００との間でデータをリード／ライトするデータ転送システムが広く用いられている。このようなデータ転送システムでは、メモリコントローラ５００が、コントロールマスタ７００からのリードコマンド／ライトコマンドを受取り、ＤＲＡＭ６００にアクセスする。
【０００３】
図８は、コントロールマスタ７００からメモリコントローラ５００に送られるライトコマンドおよびリードコマンドのパラメータを示している。本図に示すように、ライトコマンドを送る場合には、ライトであることを示すＷ／Ｒ識別子と、書き込むアドレスを示すwrite addressと、書き込みデータであるwrite dataと、write dataの１部をマスクするときに用いるdata maskとをパラメータとして指定する。また、リードコマンドを送る場合には、リードであることを示すＷ／Ｒ識別子と、読み出しアドレスを示すread addressとをパラメータとして指定する。
【０００４】
図７に示すように、メモリコントローラ５００は、ＤＲＡＭ６００に対するアクセス処理を行なうメモリインタフェース５１０と、コントロールマスタ７００から送られたコマンドを格納するコマンドバッファ５２０と、ＤＲＡＭ６００から読み出したリードデータを格納するリードデータバッファ５３０とを備えている。
【０００５】
コントロールマスタ７００からリードコマンドが送られた場合、メモリコントローラ５００は、ＤＲＡＭ６００の指定されたアドレスからデータを読み出すと、リードデータバッファ５３０にリードデータとして格納し、コントロールマスタ７００に対して、リードデータが読み出し可能であることを通知する。
【０００６】
リードコマンドを送ったコントロールマスタ７００は、メモリコントローラ５００から、リードデータが読み出し可能である通知を受けると、リードデータバッファ５３０からリードデータを取得する。
【０００７】
一般に、データ転送システムにおいて、コントロールマスタ７００と、メモリコントローラ５００とは、本図のように１対１で対応して構成される。また、リードコマンドの順でＤＲＡＭ６００からのデータ読み出しが行なわれるため、コントロールマスタ７００が、リードコマンドを連続してコントロールマスタ７００に送った場合でも、リードデータが読み出し可能となった通知に従ってリードデータバッファ５３０からリードデータを順次取得することで、送ったリードコマンドに対応した順序でリードデータを取得することができる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００３−１２２６２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
データ転送システムは種々の処理装置に適用することができるが、特に半導体試験装置等に適用した場合には、単位時間当りの処理量が非常に重要になる。このため、図９に示すように、１つのメモリコントローラ５００に対して複数のコントロールマスタ７００を設けることが考えられる。本図の例では、コントロールマスタ（１）７００ａ〜コントロールマスタ（４）７００ｄの４つのコントロールマスタ７００を設けた例を示している。
【００１０】
このような構成において、メモリコントローラ５００が、異なるコントロールマスタ７００からライトコマンドを連続的に受け付けた場合には、コマンドバッファ５２０に格納された順にライトコマンドを処理すれば問題は生じない。
【００１１】
ところが、異なるコントロールマスタ７００からリードコマンドを連続的に受け付けた場合には、ＤＲＡＭ６００から読み出されコマンドバッファ５２０に格納されたリードデータがどのコントロールマスタ７００からのリードコマンドに対応するかを、それぞれのコントロールマスタ７００が判断することができない。
【００１２】
このため、従来の技術をそのまま適用しただけでは、同時に処理できるリードコマンドは１つに限られることになり、他のリードコマンドが待たされてしまうためコントロールマスタ７００を複数個設けた効果が十分発揮できない。
【００１３】
そこで、本発明は、１つのメモリコントローラに対して複数のコントロールマスタを設けたデータ転送システムにおいて、リードコマンドに対する処理効率を向上させることを目的とする。
【課題を解決するための手段】
【００１４】
上記課題を解決するため、本発明のデータ転送システムは、メモリコントローラを介して接続された複数のコントロールマスタとメモリとの間でデータリード処理を行なうデータ転送システムであって、前記メモリコントローラは、いずれかの前記コントロールマスタからリードコマンドを受け付けると、そのリードコマンドに係るコントロールマスタの識別子をＦＩＦＯ形式で格納するルートセレクタと、前記リードコマンドに従って前記メモリから読み出したリードデータをＦＩＦＯ形式で格納するリードデータバッファと、を備え、前記コントロールマスタは、前記ルートセレクタに格納されている識別子のうち、最先に格納された識別子が自身の識別子であって、前記リードデータバッファにリードデータが格納されている場合に、前記リードデータバッファからリードデータを読み出すことを特徴とする。
【００１５】
本発明のデータ転送システムでは、コントロールマスタから受け付けたリードコマンドの順番と、リードデータバッファに格納されるリードデータの順番とが対応する。さらに、ルートセレクタに格納されるコントロールマスタの識別子の順番は、コマンドバッファに格納されるリードコマンドを送ったコントロールマスタの順番に対応する。このため、リードデータバッファから読み出されるリードデータは、ルートセレクタに格納されている識別子のうち、最先に格納された識別子が示すコントロールマスタからのリードコマンドに係るリードデータとなる。
【００１６】
したがって、各コントロールマスタからのリードコマンドを複数受け付けて順序通りに処理することができるようになる。このため、データ転送システムにおいて、リードコマンドに対する処理効率が向上することになる。
【００１７】
ここで、前記ルートセレクタは、コントロールマスタの識別子をＦＩＦＯ形式で格納するため、前記リードデータバッファからリードデータが読み出されると、前記最先に格納された識別子を消去する。
【発明の効果】
【００１８】
本発明によれば、１つのメモリコントローラに対して複数のコントロールマスタを設けたデータ転送システムにおいて、リードコマンドに対する処理効率を向上させることができる。
【図面の簡単な説明】
【００１９】
【図１】本実施形態に係るデータ転送システムの構成を示すブロック図である。
【図２】データ有効フラグの更新処理について説明するフローチャートである。
【図３】ルートセレクタの構成を示す図である。
【図４】メモリコントローラのルートセレクタの更新処理について説明するフローチャートである。
【図５】各コントロールマスタ３００のリードデータ読み出し処理について説明するフローチャートである。
【図６】本実施形態の具体的な処理例について説明するタイミングチャートである。
【図７】従来のデータ転送システムの構成を示すブロック図である。
【図８】ライトコマンドおよびリードコマンドのパラメータを説明する図である。
【図９】１つのメモリコントローラに対して複数のコントロールマスタを設けた場合の構成を示すブロック図である。
【発明を実施するための形態】
【００２０】
本発明の実施の形態について図面を参照して説明する。図１は、本実施形態に係るデータ転送システムの構成を示すブロック図である。本図に示すように、データ転送システム１０は、メモリコントローラ１００と、ＤＲＡＭ２００と、複数個のコントロールマスタ３００とを備えている。データ転送システム１０では、複数個のコントロールマスタ３００を備えることで、並列処理が行なえるようにしている。本図の例では、コントロールマスタ（１）３００ａ〜コントロールマスタ（４）３００ｄの４つのコントロールマスタ３００を設けた例を示しているが、コントロールマスタ３００の数は４つに限られず、データ転送システム１０の規模等に応じた個数とすることができる。
【００２１】
本実施形態において、それぞれのコントロールマスタ３００は独立して動作し、メモリコントローラ１００を介して、ＤＲＡＭ２００に対してデータをリード／ライトする。メモリコントローラ１００は、それぞれのコントロールマスタ３００からのリードコマンド／ライトコマンドを受取り、コマンドに従ってＤＲＡＭ１００にアクセスする。
【００２２】
メモリコントローラ１００は、ＤＲＡＭ２００に対するアクセス処理を行なうメモリインタフェース１１０と、各コントロールマスタ３００から送られたコマンドをＦＩＦＯ（First In First Out）形式で格納するコマンドバッファ１２０と、ＤＲＡＭ２００から読み出したリードデータを格納するリードデータバッファ１３０と、ルートセレクタ１４０とを備えている。
【００２３】
リードデータバッファ１３０は、リードデータバッファ１３０内に、コントロールマスタ３００によって読み出されていないリードデータがあるかどうかを示すデータ有効フラグ１３１を備えている。
【００２４】
本実施形態では、データ有効フラグ１３１が１（ＯＮ）の場合に、コントロールマスタ３００によって読み出されていないリードデータがあることを示し、データ有効フラグ１３１が０（ＯＦＦ）の場合に、コントロールマスタ３００によって読み出されていないリードデータがないこと、すなわち、リードデータバッファ１３０が空であることを示すものとする。
【００２５】
具体的には、リードデータバッファ１３０は、図２に示すフローチャートにしたがって、データ有効フラグ１３１の更新を行なう。本図に示すように、リードデータバッファ１３０にまだ読み出されていないリードデータがあるかどうかを判定し（Ｓ１０１）、リードデータがある場合（Ｓ１０１：Ｙｅｓ）には、データ有効フラグ１３１をＯＮにする（Ｓ１０２）。一方、リードデータバッファ１３０にリードデータがない場合（Ｓ１０１：Ｎｏ）には、データ有効フラグ１３１をＯＦＦにする（Ｓ１０３）。以上の判定を、データ転送処理が終了する（Ｓ１０４：Ｙｅｓ）まで、繰り返す。
【００２６】
ルートセレクタ１４０は、メモリコントローラ１００がいずれかのコントロールマスタ３００からリードコマンドを受け付けた場合に、どのコントロールマスタ３００からのリードコマンドであるかを示す情報をＦＩＦＯ形式で格納するバッファであり、例えば、図３に示すような構成とすることができる。
【００２７】
本図の例では、コントロールマスタ３００の識別子を格納する領域を０〜７の８段の深さで設けている。ただし、ルートセレクタ１４０の深さは８に限られず、データ転送システムの規模等に対応させることができる。
【００２８】
ここで、ルートセレクタ１４０における最も深い格納領域、すなわち、最先に格納され、次に取り出される識別子を格納する領域をカレントルート１４１と称するものとする。
【００２９】
図４のフローチャートを参照して、メモリコントローラ１００のルートセレクタ１４０の更新処理について説明する。本図に示すように、メモリコントローラ１００は、いずれかのコントロールマスタ３００からリードコマンドを受け付けると（Ｓ２０１：Ｙｅｓ）、そのコントロールマスタ３００の識別子をルートセレクタ１４０にＦＩＦＯ形式で追加する（Ｓ２０２）。このため、ルートセレクタ１４０には、リードコマンドを受け付けた順に、コントロールマスタ３００の識別子が格納されていくことになる。
【００３０】
また、メモリコントローラ１００は、いずれかのコントロールマスタ３００によって、リードデータバッファ１３０からリードデータが読み出されると（Ｓ２０３：Ｙｅｓ）、ルートセレクタ１４０を更新する（Ｓ２０４）。すなわち、カレントルート１４１に格納されている識別子を破棄し、残りの格納領域に格納されている識別子の深さをそれぞれ１段深い方の格納領域にずらす。この結果、カレントルート１４１も更新される。以上の処理を、データ転送処理が終了する（Ｓ２０５：Ｙｅｓ）まで、繰り返す。
【００３１】
本実施形態において、コマンドバッファ１２０に格納されるリードコマンドの順番と、リードデータバッファ１３０に格納されるリードデータの順番とが対応する。さらに、ルートセレクタ１４０に格納されるコントロールマスタ３００の識別子の順番は、コマンドバッファ１２０に格納されるリードコマンドを送ったコントロールマスタ３００の順番に対応する。このため、リードデータバッファ１３０から読み出されるリードデータは、カレントルート１４１に格納されていた識別子が示すコントロールマスタ３００からのリードコマンドに係るリードデータとなる。
【００３２】
次に、図５のフローチャートを参照して、各コントロールマスタ３００のリードデータ読み出し処理について説明する。
【００３３】
各コントロールマスタ３００は、ルートセレクタ１４０のカレントルート１４１を参照して、カレントルート１４１が自身を示しているかどうかを判定する（Ｓ３０１）。これは、リードコマンドを送ったコントロールマスタ３００が定期的／非定期的にカレントルート１４１を参照するようにしてもよいし、ルートセレクタ１４０が、カレントルート１４１が示すコントロールマスタ３００に通知するようにしてもよい。
【００３４】
カレントルート１４１が自身を示している場合は、先行するリードコマンドの処理が完了しており、次にリードデータバッファ１３０から読み出されるリードデータが自身のリードコマンドに対応したものであることを意味する。ただし、そのリードデータが既にＤＲＡＭ２００から読み出されてリードデータバッファ１３０に格納されているかどうかは分からない。
【００３５】
そこで、カレントルート１４１が自身を示している場合（Ｓ３０１：Ｙｅｓ）には、リードデータバッファ１３０のデータ有効フラグ１３１を参照して、データ有効フラグ１３１がＯＮになっているかどうかを判定する（Ｓ３０２）。
【００３６】
データ有効フラグ１３１がＯＦＦの場合（Ｓ３０２：Ｎｏ）は、まだ、ＤＲＡＭ２００からのデータ読み出しが完了していないことを意味するため、データ有効フラグ１３１がＯＮになるまで待つ。
【００３７】
データ有効フラグ１３１がＯＮの場合（Ｓ３０２：Ｙｅｓ）は、自身のリードコマンドに係るリードデータが読み出し可能となったことを意味するため（Ｓ３０３）、コントロールマスタ３００が読み出せる状況になるとリードデータバッファ１３０からリードデータを読み出す（Ｓ３０４）。これにより、他のコントロールマスタ３００のリードデータと取り違えることなく、自身のリードコマンドに係るリードデータを取得することができる。
【００３８】
次に、図６のタイミングチャートを参照して、本実施形態におけるデータ転送システム１０の具体的な処理例について説明する。本例では、上記と同様に、ルートセレクタ１４０の深さを８とし、コントロールマスタ３００の数を４とする。
【００３９】
初期状態のｔ１においてルートセレクタ１４０は空で、データ有効フラグ１３１は０（ＯＦＦ）であるとする。
【００４０】
まず、ｔ２で、コントロールマスタ（１）３００ａから、リードコマンドＲ１が送られたとする。リードコマンドであるため、リードコマンドＲ１が、コマンドバッファ１２０に格納されるとともに、リードコマンドＲ１を送ったコントロールマスタ（１）３００ａの識別子Ｃ１が、ルートセレクタ１４０に格納される。ルートセレクタ１４０において最先に格納されることになるため、Ｃ１がカレントルート１４１となる。
【００４１】
このため、コントロールマスタ（１）３００ａは、次にリードデータバッファ１３０から読み出されるリードデータが自身のリードコマンドに対応したものであると判断することができる。しかし、データ有効フラグ１３１がＯＦＦ（０）であり、リードデータがまだ準備されていないため、データの読み出しは行なわない。
【００４２】
ｔ３で、コントロールマスタ（１）３００ａから、ライトコマンドＷ１が送られたとする。ライトコマンドであるため、ライトコマンドＷ１が、コマンドバッファ１２０に格納されるだけであり、ルートセレクタ１４０には格納されない。
【００４３】
ｔ４で、コントロールマスタ（２）３００ｂから、リードコマンドＲ２が送られたとする。リードコマンドであるため、リードコマンドＲ２が、コマンドバッファ１２０に格納されるとともに、リードコマンドＲ２を送ったコントロールマスタ（２）３００ｂの識別子Ｃ２が、ルートセレクタ１４０に格納される。
【００４４】
ｔ５で、コントロールマスタ（２）３００ｂから、ライトコマンドＷ２が送られたとする。ライトコマンドであるため、ライトコマンドＷ２が、コマンドバッファ１２０に格納されるだけであり、ルートセレクタ１４０には格納されない。
【００４５】
ｔ６で、コントロールマスタ（３）３００ｃから、リードコマンドＲ３が送られ、ｔ７で、コントロールマスタ（３）３００ｃから、ライトコマンドＷ３が送られ、ｔ８で、コントロールマスタ（４）３００ｄから、リードコマンドＲ４が送られ、ｔ９で、コントロールマスタ（４）３００ｄから、ライトコマンドＷ４が送られたとする。この結果、それぞれのコマンドがコマンドバッファ１２０に格納されるとともに、リードコマンドＲ３を送ったコントロールマスタ（３）３００ｃの識別子Ｃ３と、リードコマンドＲ４を送ったコントロールマスタ（４）３００ｄの識別子Ｃ４とが、ルートセレクタ１４０に格納される。
【００４６】
ｔ９において、ｔ２のリードコマンドＲ１に対応するリードデータＲＤ１がＤＲＡＭ２００から読み出されて、リードデータバッファ１３０に格納されたとする。これにより、データ有効フラグ１３１がＯＮ（１）となり、コントロールマスタ（１）３００ａが、リードデータが準備されたことを知ることができる。そこで、コントロールマスタ（１）３００ａ（図中下段のＣＭ１）が、リードデータバッファ１３０からＲＤ１を読み出す。
【００４７】
リードデータバッファ１３０からＲＤ１が読み出されると、リードデータバッファ１３０は空となるため、データ有効フラグ１３１がＯＦＦ（０）となる。また、ルートセレクタ１４０が更新され、カレントルート１４１がＣ１からＣ２に更新される。
【００４８】
これにより、コントロールマスタ（２）３００ｂは、次にリードデータバッファ１３０から読み出されるリードデータが自身のリードコマンドに対応したものであると判断することができる。しかし、データ有効フラグ１３１がＯＦＦ（０）であり、リードデータがまだ準備されていないため、データの読み出しは行なわない。
【００４９】
その後、ｔ１０、ｔ１１、ｔ１２、ｔ１３で、コントロールマスタ（１）３００ａから、リードコマンドＲ１が送られたとする。この結果、それぞれのコマンドが、コマンドバッファ１２０に格納されるとともに、コントロールマスタ（１）３００ａの識別子Ｃ１が、４回続けてルートセレクタ１４０に格納される。
【００５０】
この間、ｔ１２において、ｔ４のリードコマンドＲ２に対応するリードデータＲＤ２がＤＲＡＭ２００から読み出されて、リードデータバッファ１３０に格納されたとする。これにより、データ有効フラグ１３１がＯＮ（１）となり、コントロールマスタ（２）３００ｂが、リードデータが準備されたことを知ることができる。ただし、ここでは、コントロールマスタ（２）３００ｂの処理の関係上、即座には読み出さず、ｔ１４で読み出すものとする。
【００５１】
このため、ｔ１３において、ｔ６のリードコマンドＲ３に対応するリードデータＲＤ３がＤＲＡＭ２００から読み出されて、リードデータバッファ１３０に格納されたとしても、カレントルート１４１がＣ２を示しているため、コントロールマスタ（３）３００ｃは、リードデータＲＤ３を読み出すことができない。すなわち、リードデータの読み出し順序が保たれることになる。
【００５２】
同様に、ｔ１４において、ｔ８のリードコマンドＲ４に対応するリードデータＲＤ４がＤＲＡＭ２００から読み出されて、リードデータバッファ１３０に格納されたとしても、コントロールマスタ（４）３００ｄは、リードデータＲＤ４を読み出すことができない。すなわち、リードデータの読み出し順序が保たれることになる。
【００５３】
そして、ｔ１４でコントロールマスタ（２）３００ｂ（ＣＭ２）がリードデータＲＤ２を読み出すと、カレントルート１４１がＣ２からＣ３に更新されるため、コントロールマスタ（３）３００ｃ（ＣＭ３）が、リードデータバッファ１３０からＲＤ３を読み出すことができる。
【００５４】
これにより、カレントルート１４１がＣ３からＣ４に更新されるため、コントロールマスタ（４）３００ｄが、リードデータが準備されたことを知ることができる。この間、リードデータバッファ１３０には、リードデータが存在し続けているため、データ有効フラグ１３１はＯＮ（１）状態を保っている。
【００５５】
その後、ｔ１４、ｔ１５においてコントロールマスタ（１）３００ａから、ライトコマンドＷ１が送られ、ｔ１６において、コントロールマスタ（２）３００ａから、リードコマンドＲ２が送られたとする。この結果、それぞれのコマンドが、コマンドバッファ１２０に格納されるとともに、リードコマンドＲ２を送ったコントロールマスタ（２）３００ｂの識別子Ｃ２が、ルートセレクタ１４０に格納される。
【００５６】
以上のような処理により、データ転送システム１０は、各コントロールマスタ３００からのリードコマンドを複数受け付けて順序通りに処理することができるようになるため、リードコマンドに対する処理効率が向上することになる。
【００５７】
このため、本実施形態のデータ転送システム１０は、Read modify writeなどリード／ライト処理が頻繁に混在する装置に適用することで特に有効となる。より具体的には、メモリ検査装置においてFAIL Dataをカウントする場合等に有効である。
【００５８】
なお、図６におけるｔ１３の時点で、ルートセレクタ１４０の格納領域がいっぱいになりかけている。このような場合に、バッファが溢れることを防ぐために、メモリコントローラ１００から各コントロールマスタ３００に対して、オールモストフル信号を送り、リードコマンドの発行を待たせるようにすることができる。コマンドバッファ１２０、リードデータバッファ１３０がいっぱいになりかけている場合にも、同様にオールモストフル信号を各コントロールマスタ３００に送り、対応する処理を待たせるようにしてもよい。
【符号の説明】
【００５９】
１０…データ転送システム、１００…メモリコントローラ、１１０…メモリインタフェース、１２０…コマンドバッファ、１３０…リードデータバッファ、１３１…データ有効フラグ、１４０…ルートセレクタ、１４１…カレントルート、２００…ＤＲＡＭ、３００…コントロールマスタ、５００…メモリコントローラ、５１０…メモリインタフェース、５２０…コマンドバッファ、５３０…リードデータバッファ、６００…ＤＲＡＭ、７００…コントロールマスタ
【図１】
2011118501.tif 000003
【図２】
2011118501.tif 000004
【図３】
2011118501.tif 000005
【図４】
2011118501.tif 000006
【図５】
2011118501.tif 000007
【図６】
2011118501.tif 000008
【図７】
2011118501.tif 000009
【図８】
2011118501.tif 000010
【図９】
2011118501.tif 000011