(57)【要約】【課題】  ＤＭＡにおいて、アドレスを指定するための処理に起因して、高速なデータ転送の実現に足かせとなることがある。【解決手段】  メモリ制御装置１０は、バースト転送機能を有するＳＤＲＡＭ２４とバッファレジスタ１８または光ディスク２２との間におけるデータの転送を制御する。ＤＭＡコントローラ１４は、ＣＰＵ１２からの指示によりＳＤＲＡＭ２４を制御する。ＳＤＲＡＭ２４は、１回のバースト転送の対象となるデータの転送単位の数に対応したアドレス数で構成されたセグメントに区切られている。シーケンサ１６は、バースト転送によってＳＤＲＡＭ２４にデータを書き込むと、そのデータが第１のセグメントと第２のセグメントにまたがって書き込まれることとなる場合、第２のセグメントに書き込まれるべきデータの書込を禁止する制御を行う。【選択図】  図１
2007052681.tif 000002
【特許請求の範囲】
【請求項１】
バースト転送機能を有するメモリとの間におけるデータの転送を制御する方法であって、
前記メモリは、１回のバースト転送の対象となるデータの転送単位の数に対応したアドレス数で構成されたセグメントに区切られており、
前記バースト転送によって前記メモリにデータを書き込むと、そのデータが第１のセグメントと第２のセグメントにまたがって書き込まれることとなる場合、第２のセグメントに書き込まれるべきデータの書込を禁止することを特徴とするメモリ制御方法。
【請求項２】
バースト転送機能を有するメモリとの間におけるデータの転送を制御する方法であって、
前記メモリは、１回のバースト転送の対象となるデータの転送単位の数に対応したアドレス数で構成されたセグメントに区切られているとともに、
１回のバースト転送の対象となるデータの転送単位のすべてについてアクセスが実行されるよう構成され、
前記バースト転送によって前記メモリに書き込まれるべきデータの転送単位の数が前記セグメントを構成するアドレス数に満たないとき、その満たない分のデータの書込を禁止することを特徴とするメモリ制御方法。
【請求項３】
バースト転送機能を有するメモリとの間におけるデータの転送を制御する方法であって、
前記メモリは、１回のバースト転送の対象となるデータの転送単位の数に対応したアドレス数で構成されたセグメントに区切られており、
前記バースト転送によって前記メモリからデータを読み出すと、そのデータが第１のセグメントと第２のセグメントとから読み出されることとなる場合、第２のセグメントから読み出したデータを無効とすることを特徴とするメモリ制御方法。
【請求項４】
バースト転送機能を有するメモリとデータ転送対象との間におけるデータの転送を制御する装置であって、
メインプロセッサと、
前記メインプロセッサからの指示により前記メモリを制御するメモリアクセス制御部と、
を備え、
前記メモリアクセス制御部は、前記メモリが、１回のバースト転送の対象となるデータの転送単位の数に対応したアドレス数で構成されたセグメントに区切られており、前記バースト転送によって前記メモリにデータを書き込むと、そのデータが第１のセグメントと第２のセグメントにまたがって書き込まれることとなる場合、第２のセグメントに書き込まれるべきデータの書込を禁止する制御を行うシーケンサを備えることを特徴とするメモリ制御装置。
【請求項５】
バースト転送機能を有するメモリとデータ転送対象との間におけるデータの転送を制御する装置であって、
メインプロセッサと、
前記メインプロセッサからの指示により前記メモリを制御するメモリアクセス制御部と、
を備え、
前記メモリアクセス制御部は、前記メモリが、１回のバースト転送の対象となるデータの転送単位の数に対応したアドレス数で構成されたセグメントに区切られているとともに、
１回のバースト転送の対象となるデータの転送単位のすべてについてアクセスが実行されるよう構成され、前記バースト転送によって前記メモリに書き込まれるべきデータの転送単位の数が前記セグメントを構成するアドレス数に満たないとき、その満たない分のデータの書込を禁止する制御を行うシーケンサを備えることを特徴とするメモリ制御装置。
【請求項６】
バースト転送機能を有するメモリとデータ転送対象との間におけるデータの転送を制御する装置であって、
メインプロセッサと、
前記メインプロセッサからの指示により前記メモリを制御するメモリアクセス制御部と、
を備え、
前記メモリアクセス制御部は、
前記メモリが、１回のバースト転送の対象となるデータの転送単位の数に対応したアドレス数で構成されたセグメントに区切られており、前記バースト転送によって前記メモリからデータを読み出すと、そのデータが第１のセグメントと第２のセグメントとから読み出されることとなる場合、第２のセグメントから読み出したデータを無効とする制御を行うシーケンサを備えることを特徴とするメモリ制御装置。
【請求項７】
前記シーケンサは、前記セグメント内の最終アドレスを認識するための第１のカウンタを備え、
前記第１のカウンタの所定数の下位ビットには、各バースト転送の開始に際して、前記セグメント内において書き込むべきアドレスの所定数の下位ビットが設定され、
前記第１のカウンタは、前記セグメント内のアドレスにデータが書き込まれる毎にカウント動作を実行することを特徴とする請求項４または５に記載のメモリ制御装置。
【請求項８】
データの書込の許否を指示するためのイネーブル信号を生成するイネーブル信号生成部を備え、
前記第１のカウンタの前記所定数の下位ビットにおいて、１回目のバースト転送の対象となるデータの転送単位の数に対応したアドレス数のカウント動作が実行されると、結果的に前記第１のカウンタのビットの位が繰り上がって最上位ビットが１となっているように所定数の上位ビットが設定され、
前記イネーブル信号生成部は、前記第１のカウンタの最上位ビットが１となったときに、前記イネーブル信号を書込禁止の状態にすることを請求項７に記載のメモリ制御装置。
【請求項９】
前記シーケンサは、メモリに書き込まれたデータの転送単位の数をカウントアップする第２のカウンタを備え、
実際に書き込まれたされたデータの転送単位の数が所定の目標値に到達したとき、前記イネーブル信号生成部は、前記イネーブル信号を書込禁止の状態にすることを特徴とする請求項８に記載のメモリ制御装置。
【請求項１０】
１回のバースト転送において実際にメモリに転送されたデータの転送単位の数をカウントアップする第３のカウンタを備え、
実際に転送されたデータの転送単位の数が、１回のバースト転送の対象となるデータの転送単位の数に到達したとき、前記イネーブル信号生成部は、前記イネーブル信号を書込許可の状態にすることを特徴とする請求項８または９に記載のメモリ制御装置。
【請求項１１】
前記シーケンサは、前記セグメント内の最終アドレスを認識するための第１のカウンタを備え、
前記第１のカウンタの所定数の下位ビットには、各バースト転送の開始に際して、前記セグメント内において読み出すべきアドレスの所定数の下位ビットが設定され、
前記第１のカウンタは、前記セグメント内のアドレスからデータが読み出される毎にカウント動作を実行することを特徴とする請求項６に記載のメモリ制御装置。
【請求項１２】
データの読込の許否を指示するためのイネーブル信号を生成するイネーブル信号生成部を備え、
前記第１のカウンタの前記所定数の下位ビットにおいて、１回のバースト転送の対象となるデータの転送単位の数に対応したアドレス数のカウント動作が実行されると、結果的に前記第１のカウンタのビットの位が繰り上がって最上位ビットが１となっているように所定数の上位ビットが設定され、
前記イネーブル信号生成部は、前記第１のカウンタの最上位ビットが１となったときに、イネーブル信号を読込禁止の状態にすることを請求項１１に記載のメモリ制御装置。
【請求項１３】
１回のバースト転送の対象となるデータの転送単位の数をカウントアップする第３のカウンタを備え、
実際に転送されたデータの転送単位の数が、１回のバースト転送の対象となるデータの転送単位の数に到達したとき、前記イネーブル信号生成部は、前記イネーブル信号を読込許可の状態にすることを特徴とする請求項１２に記載のメモリ制御装置。
【請求項１４】
前記メモリ制御装置が、１つの半導体基板上に一体集積化されたことを特徴とする請求項４から１３のいずれかに記載のメモリ制御装置。
【請求項１５】
バースト転送機能を有するメモリと、
前記メモリを制御する請求項４から１４のいずれかに記載のメモリ制御装置と、
を備えることを特徴とするメモリ制御システム。
【請求項１６】
バースト転送に対応したメモリと、
外部記憶装置と、
前記メモリと前記外部記憶装置とのデータ転送とを制御する請求項４から１４のいずれかに記載のメモリ制御装置と、
を備えることを特徴とするメモリ制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリとデータ転送対象との間におけるデータの転送を制御する技術に関する。
【背景技術】
【０００２】
一般に、中央演算処理装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ。以下、「ＣＰＵ」と表記する）を介さずに外部記憶装置とメモリとの間で直接データ転送を行うデータ転送方式であるＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）において、データ転送の制御を行うＤＭＡコントローラに含まれるバッファレジスタと外部のメモリとの間でデータの転送をする際、一般に、メモリへのデータの書込またはメモリからのデータの読出を行う度に、書き込む先のアドレスまたは読み出す元のアドレスを指定する必要がある。
【特許文献１】特開２００３−２７１５４０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、このようなデータ転送方法では、アドレスを頻繁に指定するための処理が必要となり、高速なデータ転送の実現に足かせとなることがある。
【０００４】
本発明は、上述の事情を鑑みてなされたものであり、その目的は、高速なデータ転送の実現することにある。
【課題を解決するための手段】
【０００５】
本発明の一態様は、メモリ制御方法に関する。このメモリ制御方法は、バースト転送機能を有するメモリとの間におけるデータの転送を制御する方法であって、メモリは、１回のバースト転送の対象となるデータの転送単位の数に対応したアドレス数で構成されたセグメントに区切られており、バースト転送によってメモリにデータを書き込むと、そのデータが第１のセグメントと第２のセグメントにまたがって書き込まれることとなる場合、第２のセグメントに書き込まれるべきデータの書込を禁止する。
【０００６】
この態様によれば、最初のバースト転送における最後の書込は第１のセグメント内の最終アドレスにおいて実行される。これによって、２回目以降のバースト転送における書込は、セグメント内の最初のアドレスから開始されるので、メモリのバースト転送機能を利用することにより、１回のアドレス指定でセグメント内のすべてのアドレスへの書込が可能となる。この結果、データ転送の高速化が実現される。「転送単位」とは、例えば、１ワードであってもよい。
【０００７】
本発明の別の態様もメモリ制御方法に関する。このメモリ制御方法は、バースト転送機能を有するメモリとの間におけるデータの転送を制御する方法であって、メモリは、１回のバースト転送の対象となるデータの転送単位の数に対応したアドレス数で構成されたセグメントに区切られているとともに、１回のバースト転送の対象となるデータの転送単位のすべてについてアクセスが実行されるよう構成され、バースト転送によってメモリに書き込まれるべきデータの転送単位の数がセグメントを構成するアドレス数に満たないとき、その満たない分のデータの書込を禁止する。
【０００８】
１回のバースト転送では、１回のアドレス指定による複数回のデータ転送が可能となり、これによってデータ転送の高速化が図られる。しかし、１回のバースト転送においては、複数回のデータ転送が実行されるため、本来書き込むべきでないデータまで転送されるおそれがある。この態様によれば、書き込むべきでないデータの書込を禁止することにより、そのデータの書込を回避しつつバースト転送機能による高速化を図ることができる。
【０００９】
本発明の別の態様もメモリ制御方法に関する。このメモリ制御方法は、バースト転送機能を有するメモリとの間におけるデータの転送を制御する方法であって、メモリは、１回のバースト転送の対象となるデータの転送単位の数に対応したアドレス数で構成されたセグメントに区切られており、バースト転送によってメモリからデータを読み出すと、そのデータが第１のセグメントと第２のセグメントとから読み出されることとなる場合、第２のセグメントから読み出したデータを無効とする。
【００１０】
この態様によれば、最初のバースト転送におけるメモリからの最後の読出は、第１のセグメント内の最終アドレスにおいて実行される。これによって、２回目以降のバースト転送における読出は、セグメント内の最初のアドレスから開始されるので、メモリのバースト転送機能を利用することにより、１回のアドレス指定でセグメント内のすべてのアドレスからの読出が可能となる。この結果、データ転送の高速化が実現される。「無効」とは、読み出したデータの転送対象への読込を禁止することであってもよい。
【００１１】
本発明の別の態様はメモリ制御装置に関する。このメモリ制御装置は、バースト転送機能を有するメモリとデータ転送対象との間におけるデータの転送を制御する装置であって、メインプロセッサと、メインプロセッサからの指示によりメモリを制御するメモリアクセス制御部とを備え、メモリアクセス制御部は、メモリが、１回のバースト転送の対象となるデータの転送単位の数に対応したアドレス数で構成されたセグメントに区切られており、バースト転送によってメモリにデータを書き込むと、そのデータが第１のセグメントと第２のセグメントにまたがって書き込まれることとなる場合、第２のセグメントに書き込まれるべきデータの書込を禁止する制御を行うシーケンサを備える。
【００１２】
この態様によれば、シーケンサの制御により、最初のバースト転送における最後の書込は第１のセグメント内の最終アドレスにおいて実行される。これによって、２回目以降のバースト転送における書込は、セグメント内の最初のアドレスから開始されるので、メモリのバースト転送機能を利用することにより、１回のアドレス指定でセグメント内のすべてのアドレスへの書込が可能となる。この結果、データ転送の高速化が実現される。
【００１３】
本発明の別の態様もメモリ制御装置に関する。このメモリ制御装置は、バースト転送機能を有するメモリとデータ転送対象との間におけるデータの転送を制御する装置であって、メインプロセッサと、メインプロセッサからの指示により前記メモリを制御するメモリアクセス制御部とを備え、メモリアクセス制御部は、メモリが、１回のバースト転送の対象となるデータの転送単位の数に対応したアドレス数で構成されたセグメントに区切られているとともに、１回のバースト転送の対象となるデータの転送単位のすべてについてアクセスが実行されるよう構成され、バースト転送によって前記メモリに書き込まれるべきデータの転送単位の数がセグメントを構成するアドレス数に満たないとき、その満たない分のデータの書込を禁止する制御を行うシーケンサを備える。
【００１４】
この態様によれば、１回のバースト転送における複数回のデータ転送において、本来書き込むべきでないデータまで転送が実行されるおそれがあるとき、シーケンサの制御により、その書き込むべきでないデータの書込が禁止される。これによって、そのデータの書込を回避しつつバースト転送機能による高速化を図ることができる。
【００１５】
本発明の別の態様もメモリ制御装置に関する。このメモリ制御装置は、バースト転送機能を有するメモリとデータ転送対象との間におけるデータの転送を制御する装置であって、メインプロセッサと、メインプロセッサからの指示により前記メモリを制御するメモリアクセス制御部とを備え、メモリアクセス制御部は、メモリが、１回のバースト転送の対象となるデータの転送単位の数に対応したアドレス数で構成されたセグメントに区切られており、バースト転送によってメモリからデータを読み出すと、そのデータが第１のセグメントと第２のセグメントとから読み出されることとなる場合、第２のセグメントから読み出したデータを無効とする制御を行うシーケンサを備える。
【００１６】
この態様によれば、シーケンサの制御により、最初のバースト転送におけるメモリからの最後の読出は、第１のセグメント内の最終アドレスにおいて実行される。これによって、２回目以降のバースト転送における読出は、セグメント内の最初のアドレスから開始されるので、メモリのバースト転送機能を利用することにより、１回のアドレス指定でセグメント内のすべてのアドレスからの読出が可能となる。この結果、データ転送の高速化が実現される。「無効」とは、読み出したデータの転送対象への読込を禁止することであってもよい。
【００１７】
シーケンサは、セグメント内の最終アドレスを認識するための第１のカウンタを備え、第１のカウンタの所定数の下位ビットには、各バースト転送の開始に際して、セグメント内において書き込むべきアドレスの所定数の下位ビットが設定され、第１のカウンタは、セグメント内のアドレスにデータが書き込まれる毎にカウント動作を実行してもよい。
【００１８】
この態様によれば、シーケンサは、第１カウンタのカウント動作により最終アドレスを認識するので、１回目のバースト転送における最後の書込が第１のセグメント内の最終アドレスにおいて実行されるように制御を行うことができる。
【００１９】
メモリ制御装置は、データの書込の許否を指示するためのイネーブル信号を生成するイネーブル信号生成部を備え、前記第１のカウンタの前記所定数の下位ビットにおいて、１回目のバースト転送の対象となるデータの転送単位の数に対応したアドレス数のカウント動作が実行されると、結果的に前記第１のカウンタのビットの位が繰り上がって最上位ビットが１となっているように所定数の上位ビットが設定され、イネーブル信号生成部は、第１のカウンタの最上位ビットが１となったときに、イネーブル信号を書込禁止の状態にしてもよい。
【００２０】
この態様によれば、１回目のバースト転送において、書き込まれるべきでないデータの書込が実行されることとなるとき、第１のカウンタの最上位ビットが１となり書込が禁止されるので、その書込を回避できる。１回目のバースト転送は、あるセグメント内の途中のアドレスから開始されてもよい。
【００２１】
シーケンサは、メモリに書き込まれたデータの転送単位の数をカウントアップする第２のカウンタを備え、実際に書き込まれたされたデータの転送単位の数が所定の目標値に到達したとき、イネーブル信号生成部は、イネーブル信号を書込禁止の状態にしてもよい。
【００２２】
この態様によれば、例えば、書き込まれるべきデータの転送単位の総数を所定の目標値として設定しておくことにより、実際に書き込まれたデータの転送単位の数がこの目標値に到達すると、その後転送されたデータの書込は禁止される。これによって、書き込まれるべきでないデータの書込を回避できる。
【００２３】
メモリ制御装置は、１回のバースト転送において実際にメモリに転送されたデータの転送単位の数をカウントアップする第３のカウンタを備え、実際に転送されたデータの転送単位の数が、１回のバースト転送の対象となるデータの転送単位の数に到達したとき、イネーブル信号生成部は、イネーブル信号を書込許可の状態にしてもよい。
【００２４】
この態様によれば、ある回のバースト転送においてイネーブル信号が書込禁止の状態になった場合でも、次回のバースト転送についてはイネーブル信号が書込許可の状態となることによりデータの書込が可能となる。
【００２５】
シーケンサは、前記セグメント内の最終アドレスを認識するための第１のカウンタを備え、第１のカウンタの所定数の下位ビットには、各バースト転送の開始に際して、セグメント内において読み出すべきアドレスの所定数の下位ビットが設定され、第１のカウンタは、セグメント内のアドレスからデータが読み出される毎にカウント動作を実行してもよい。
【００２６】
この態様によれば、シーケンサは、第１カウンタのカウント動作により最終アドレスを認識するので、１回目のバースト転送における最後の読出が第１のセグメント内の最終アドレスにおいて実行されるように制御を行うことができる。
【００２７】
メモリ制御装置は、データの読込の許否を指示するためのイネーブル信号を生成するイネーブル信号生成部を備え、第１のカウンタの所定数の下位ビットにおいて、１回のバースト転送の対象となるデータの転送単位の数に対応したアドレス数のカウント動作が実行されると、結果的に第１のカウンタのビットの位が繰り上がって最上位ビットが１となっているように所定数の上位ビットが設定され、イネーブル信号生成部は、第１のカウンタの最上位ビットが１となったときに、イネーブル信号を読込禁止の状態にしてもよい。
【００２８】
この態様によれば、１回目のバースト転送において、読み込まれるべきでないデータの読込が実行されることとなるとき、第１のカウンタの最上位ビットが１となり読込が禁止されるので、その読込を回避できる。１回目のバースト転送は、あるセグメント内の途中のアドレスから開始されてもよい。
【００２９】
メモリ制御装置は、１回のバースト転送の対象となるデータの転送単位の数をカウントアップする第３のカウンタを備え、実際に転送されたデータの転送単位の数が、１回のバースト転送の対象となるデータの転送単位の数に到達したとき、イネーブル信号生成部は、イネーブル信号を読込許可の状態にしてもよい。
【００３０】
この態様によれば、ある回のバースト転送においてイネーブル信号が読込禁止の状態になった場合でも、次回のバースト転送についてはイネーブル信号が読込許可の状態となることによりデータの読込が可能となる。
【００３１】
メモリ制御装置は、１つの半導体基板上に一体集積化されてもよい。これによって、メモリ制御装置の設置スペースの削減を実現できる。
【００３２】
本発明の別の態様はメモリ制御システムに関する。このメモリ制御システムは、バースト転送機能を有するメモリと、メモリを制御するメモリ制御装置とを備える。これによって、メモリとの間におけるデータ転送の高速化を実現できる。
【００３３】
本発明の別の態様もメモリ制御システムに関する。このメモリ制御システムは、バースト転送に対応したメモリと、外部記憶装置と、メモリと外部記憶装置とのデータ転送とを制御するメモリ制御装置とを備える。これによって、メモリと外部記憶装置とのデータ転送の高速化を実現できる。
【００３４】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【００３５】
本発明のメモリ制御装置によれば、データ転送の高速化を実現できる。
【発明を実施するための最良の形態】
【００３６】
本実施の形態では、ＤＭＡコントローラとＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）との間でデータ転送を行う例について説明する。ＳＤＲＡＭは、複数のセグメントに区切られているものとする。ここで、「セグメント」とは、１回のバースト転送の対象となるデータの転送単位の数と等しい数の連続した単位領域で構成される記憶領域である。本実施の形態では、ＳＤＲＡＭへデータを書き込むときに、バースト転送されたデータに書き込むべきでない部分があるときは、その部分については書込を禁止して書き込まれないようにする。また、ＳＤＲＡＭからデータを読み出すときに、バースト転送されたデータに読み込まれるべきでない部分があるときは、その部分については読込を禁止して読み込まれないようにする。データ転送の対象はＳＤＲＡＭに限られず、例えば、ＥＤＯ−ＤＲＡＭ（Ｅｘｔｅｎｄｅｄ  Ｄａｔａ  Ｏｕｔ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等、バースト転送機能を有するメモリであればよい。
【００３７】
図１は、メモリ制御システム１００の構成を示す図である。メモリ制御システム１００は、メモリ制御装置１０、光ディスク２２およびＳＤＲＡＭ２４を含む。メモリ制御装置１０は、光ディスク２２とＳＤＲＡＭ２４との間におけるデータ転送を制御する。メモリ制御装置１０は、中央演算処理装置１２（「ＣＰＵ１２」と表記する）、ＤＭＡコントローラ１４を含む。ＣＰＵ１２は、ＤＭＡコントローラ１４に対してデータ転送の命令およびデータ転送を開始するアドレスを与える。
【００３８】
ＤＭＡコントローラ１４は、シーケンサ１６、バッファレジスタ１８およびイネーブル信号生成部２０を含む。シーケンサ１６は、所定の数値についてカウント動作を実行する複数のカウンタ等を含み、それらの数値を用いてデータ転送を制御する。シーケンサの構成については、図２を用いて後述する。バッファレジスタ１８は、光ディスク２２およびＳＤＲＡＭ２４の間で転送されるデータを一時保持する。イネーブル信号生成部２０は、データ転送の許否を支持するためのイネーブル信号を生成するとともにバッファレジスタ１８およびＳＤＲＡＭ２４に通知する。ＣＰＵ１２およびＤＭＡコントローラ１４は、一つの半導体基板上に一体集積化される。本実施の形態では、バッファレジスタ１８とＳＤＲＡＭ２４との間におけるデータ転送について説明する。
【００３９】
図２は、ＤＭＡコントローラ１４の構成を示す図である。ＤＭＡコントローラ１４は、データ転送アドレスカウンタ２６、データ転送進行カウンタ３２、アドレス保持部４０、スキップカウンタ４２、バーストサイズ設定部４４およびデータ転送サイズ設定部４５を含む。アドレス保持部４０は、ＣＰＵ１２に指定されたＳＤＲＡＭ２４におけるデータの書込および読出を開始するアドレス、およびバッファレジスタ１８におけるデータの読込および読出を開始するアドレスを保持する。スキップカウンタ４２は、アドレス保持部４０にアドレスに基づいた数値に初期設定される。スキップカウンタ４２のカウントする数値は、後述する複数のカウンタがカウント動作を実行および停止する際に参照される。バーストサイズ設定部４４は、一回のバースト転送により転送される転送単位の数を設定する。ここで、「バースト転送」とは、ＳＤＲＡＭ２４内の１つのアドレスの指定により、その指定されたアドレスからバーストサイズ分連続したアドレスへの書込またはそれらのアドレスからの読出のためにバーストサイズ分のデータを転送することをいう。この実施形態では、「転送単位」は１ワードとし、以下、転送単位を「ワード」とも表記する。
【００４０】
データ転送アドレスカウンタ２６は、ポインタ２８およびメモリアドレスカウンタ３０を含む。ポインタ２８は、バッファレジスタ１８におけるデータが転送されるアドレスをカウントアップする。メモリアドレスカウンタ３０は、ＳＤＲＡＭ２４におけるデータが転送されるアドレスをカウントアップする。なお、ポインタ２８およびメモリアドレスカウンタ３０は、データ転送がされるアドレスの順序によっては、アドレスをカウントダウンしてもよい。
【００４１】
データ転送進行カウンタ３２は、書込進行カウンタ３４、読込進行カウンタ３６およびバースト転送進行カウンタ３８を含む。書込進行カウンタ３４は、バッファレジスタ１８に保持されるデータをＳＤＲＡＭ２４に書き込む際に、実際に書き込まれたワード数をカウントアップする。読込進行カウンタ３６は、ＳＤＲＡＭ２４が保持するデータをバッファレジスタ１８に読み込む際に、実際に読み込まれたワード数をカウントアップする。バースト転送進行カウンタ３８は、１回のバースト転送において転送されたワード数をカウントアップする。つまり、例えば、バーストサイズが４に設定された場合、バースト転送進行カウンタ３８は、１回目のバースト転送で１から４までを順にカウントした後、２回目のバースト転送で再び１から４までを順にカウントする。
【００４２】
ここで、「読出」とは、バッファレジスタ１８またはＳＤＲＡＭ２４からデータを読み出すことをいう。また、「書込」とは、バッファレジスタ１８から読み出したＳＤＲＡＭ２４にデータを書き込むこと、「読込」とは、ＳＤＲＡＭ２４から読み出したデータをバッファレジスタ１８へ書き込むことをいう。なお、図３を用いて後述するように、バッファレジスタ１８内にはレジスタアドレス領域４８が、ＳＤＲＡＭ２４内にはメモリアドレス領域５２が含まれており、実際にはこれらの記憶領域が、読出、書込および読込の処理の対象となる。以下、特にこれらの処理を具体的に説明するときは、レジスタアドレス領域４８およびメモリアドレス領域５２を処理の対象として記述する。
【００４３】
バーストサイズ設定部４４は、１回のバースト転送で転送されるワード数を設定する。バーストサイズとして、２、４、８等の数値が設定でき、ユーザによりバーストサイズが選択される。本実施の形態では、バーストサイズを４に設定する。データ転送サイズ設定部４５は、データ転送されるべきワード数を設定する。
【００４４】
図３は、バッファレジスタ１８およびＳＤＲＡＭ２４の構成を示す図である。バッファレジスタ１８は、読込マスク部４６およびレジスタアドレス領域４８を含む。読込マスク部４６は、イネーブル信号生成部２０からイネーブル信号を受信するとＳＤＲＡＭ２４から読み出されたデータの読込を禁止する。
【００４５】
レジスタアドレス領域４８は、１列に配列された複数の単位記憶領域から構成されており、各単位記憶領域に１ワードずつデータが保持される。同図に示すように、これらの各単位領域には、それぞれ「００００」から順に４ビットで表されるアドレスが割り当てられている。レジスタアドレス領域４８へのデータの書込およびレジスタアドレス領域４８からのデータの読出の際の書込先および読出先のアドレスは、ポインタ２８によって示される。
【００４６】
ＳＤＲＡＭ２４は、書込マスク部５０およびメモリアドレス領域５２を含む。書込マスク部５０は、イネーブル信号生成部２０からイネーブル信号を受信するとバッファレジスタ１８から読み出されたデータの書込を禁止する。以下、読込マスク部４６または書込マスク部５０によってデータの読込または書込を禁止する処理を「マスク処理」という。
【００４７】
メモリアドレス領域５２は、格子状に配列された複数の単位記憶領域から構成されており、各単位記憶領域に１ワードずつデータが保持される。つまり、例えば、同図に示すように、メモリアドレス領域５２の左右方向および上下方向のそれぞれの各単位領域に対して「００００」から順に４ビットで表されるアドレスが割り当てられている。同図における左右方向のアドレスがロウアドレス、上下方向のアドレスがカラムアドレスである。メモリアドレス領域５２における各単位記憶領域の位置は、ロウアドレスおよびカラムアドレスを指定することにより識別できる。メモリアドレス領域５２へのデータの書込およびメモリアドレス領域５２からのデータの読出の際の書込先および読出先のアドレスは、メモリアドレスカウンタ３０によって示される。メモリアドレス領域５２において、４つの単位記憶領域によって１つのセグメントが構成されている。同図において、メモリアドレス領域５２内のセグメントの区切りが太線で示されている。つまり、例えば、ロウアドレス「００００」におけるカラムアドレス「００００」〜「００１１」は、１つのセグメントを構成する。
【００４８】
図４は、バッファレジスタ１８とＳＤＲＡＭ２４との間のデータ転送の概念図である。データの書込および読込のみに着目すべく、同図にはレジスタアドレス領域４８とメモリアドレス領域５２のみを示す。
まず、同図に示すようにレジスタアドレス領域４８のアドレス「００００」〜「１０００」の９個の単位記憶領域に保持されたワードｗ１〜ｗ９を、メモリアドレス領域５２のロウアドレス「００００」におけるカラムアドレス「０００１」〜「１００１」の９個の単位領域のそれぞれに書き込む場合を説明する。以下では、メモリアドレス領域５２については、ロウアドレス「００００」について説明するものとし、メモリアドレス領域５２のアドレスはカラムアドレスのみによって表記する。また、以下ではレジスタアドレス領域４８におけるアドレスを「レジスタアドレス」、メモリアドレス領域５２におけるアドレスを「メモリアドレス」とも表記する。なお、同図において、太線は、メモリアドレス領域５２内のセグメントの区切りを示す。
【００４９】
図５は、データの書込処理を説明するための図である。同図では複数回にわたるバースト転送において、書き込まれるべきワード、スキップカウンタ４２、ポインタ２８、メモリアドレスカウンタ３０、バースト転送進行カウンタ３８、書込進行カウンタ３４が示す数値およびイネーブル信号に基づいて書込が禁止されるタイミングが示されている。同図において点線で示されたワードは、後述するように書込が禁止されることにより実際には書き込まれない。また、同図には矢印が示されており、これは、矢印の引出元の数値に基づいて引出先の数値が決定されることを表している。
【００５０】
上述のように、本実施形態ではバーストサイズが４に設定されているので、１回のバースト転送は４回の書込サイクルによって成立する。ここで、「書込サイクル」とは、１つのワードの書込を一単位とした、書込処理および各カウンタのカウント動作からなるサイクルをいう。ここでいう「書込」は、書込が許可された場合と禁止された場合の双方の書込を含む。
【００５１】
イネーブル信号は、ローアクティブとする。つまり、イネーブル信号がローのときに書込が許可され、ハイのときに書込が禁止される。例えば、同図においては、１回目のバースト転送における４回目の書込サイクル、３回目のバースト転送における３および４回目の書込サイクルにおいて、イネーブル信号がハイとなっている。イネーブル信号は、スキップカウンタ４２の最上位ビットが「０」であるときはロー、「１」であるときにハイとなる。つまり、スキップカウンタ４２の最上位ビットが「０」のときは書込が許可され、「１」のときは書込が禁止される。また、ポインタ２８およびメモリアドレスカウンタ３０のカウントアップが停止された場合であって、書込進行カウンタ３４の数値が書き込むべき全ワードの数「９」を意味する「１０００」であるときには、イネーブル信号がハイとなり書込が禁止される。
【００５２】
各カウンタのカウント動作を説明する。バースト転送進行カウンタ３８は、１回のバースト転送中にレジスタアドレス領域４８から１ワードが読み出される毎に「００」から１ずつカウントアップする。そして、１回のバースト転送が終了して「１１」となったとき、次回のバースト転送の最初の書込サイクルにおいて「００」にリセットされる。スキップカウンタ４２は、最上位ビットが「０」であるときに、書込サイクル毎に１ずつカウントアップし、最上位ビットが「１」となるとカウントアップを停止する。また、スキップカウンタ４２の数値は、バースト転送進行カウンタ３８が「１１」となったとき、次回のバースト転送の最初の書込サイクルのおいて再度設定される。
【００５３】
ポインタ２８、メモリアドレスカウンタ３０および書込進行カウンタ３４は、以下のすべての条件を満足するとき、書込サイクル毎に１ずつカウントアップし、満足しないとき、カウントアップを停止する。
【００５４】
イネーブル条件１：  （Ａ）”スキップカウンタ４２の数値が「０１１１」より小さい。”または（Ｂ）”バースト転送進行カウンタ３８の数値が「１１」。”
イネーブル条件２：  ”書込進行カウンタ３４の数値が「１０００」でない。”
【００５５】
つまり、各書込サイクルにおいて、ポインタ２８、メモリアドレスカウンタ３０および書込進行カウンタ３４は、スキップカウンタ４２およびバースト転送進行カウンタ３８の数値に基づいてカウントアップを実行または停止する。図５において、ポインタ２８、メモリアドレスカウンタ３０および書込進行カウンタ３４のカウント動作は以下の通りである。イネーブル条件１および２が満足されるとカウントアップする（矢印ａ〜ｅ）。図の煩雑を避けるため、例として１回目のバースト転送における１回目の書込サイクルから２回目の書込サイクルでのカウントアップの様子のみを矢印で示す。イネーブル条件１（Ａ）および（Ｂ）の条件が満足されない結果、イネーブル条件１が満足されない場合、カウントアップが停止する（矢印ｆ〜ｋ）。イネーブル条件１（Ａ）の条件が満足されないが、（Ｂ）の条件が満足された結果、イネーブル条件１が満足された場合、カウントアップが再開する（矢印ｌ〜ｓ）。イネーブル条件２が満足されない場合、カウントアップが停止する（矢印ｔ〜ｗ）。
【００５６】
また、バースト転送進行カウンタ３８がカウントアップされる。スキップカウンタ４２は、自己の数値の最上位ビットが「０」であるか否かに基づいてカウントアップを実行または停止する。次いで、スキップカウンタ４２の最上位ビットが「０」であるか否かに基づいて、１ワードの実際の書込が実行または中止される。これらの動作を一単位として書込サイクルが構成される。
【００５７】
書込処理における各カウンタは以下のように設定される。スキップカウンタ４２では、上位に２ビットを「０１」、下位２ビットを各ワードの書込先のアドレスの下位２ビットとした４ビットの数値が設定される。つまり、上位２ビットを「０１」、下位２ビットをワードｗ１の書込先のアドレス「０００１」の下位にビットである「０１」とした「０１０１」を設定する。ポインタ２８は、レジスタアドレス領域４８においてワードｗ１が保持されているアドレス「００００」、メモリアドレスカウンタ３０は、ワードｗ１の書込先のアドレス「０００１」に設定される。また、バースト転送進行カウンタ３８は、「００」、書込進行カウンタ３４は、「００００」に設定される。スキップカウンタ４２の数値「０１０１」の最上位ビットは「０」であり、イネーブル信号はローであるので、ワードｗ１がメモリアドレス「０００１」に書き込まれる。
【００５８】
２回目の書込サイクルにおいて、スキップカウンタ４２の数値はまだ「０１１１」に到達していないので、ポインタ２８、メモリアドレスカウンタ３０および書込進行カウンタ３４は、カウントアップしてそれぞれ「０００１」、「００１０」、「０００１」となる。バースト転送進行カウンタ３８は、カウントアップして「０１」となる。また、スキップカウンタ４２の数値「０１０１」の最上位ビットは「０」であるので、スキップカウンタ４２もカウントアップして「０１１０」となる。スキップカウンタ４２の数値「０１１０」の最上位ビットは「０」であり、イネーブル信号はローであるので、ワードｗ２がメモリアドレス「００１０」に書き込まれる。
【００５９】
３回目の書込みサイクルにおいて、スキップカウンタ４２の数値はまだ「０１１１」に到達していないので、ポインタ２８、メモリアドレスカウンタ３０および書込進行カウンタ３４は、カウントアップしてそれぞれ「００１０」、「００１１」、「００１０」となる。バースト転送進行カウンタ３８は、カウントアップして「１０」となる。また、スキップカウンタ４２の数値「０１１０」の最上位ビットは「０」であるので、スキップカウンタ４２もカウントアップして「０１１１」となる。スキップカウンタ４２の数値「０１１１」の最上位ビットは「０」であり、イネーブル信号はローであるので、ワードｗ３がメモリアドレス「００１１」に書き込まれる。
【００６０】
４回目の書込みサイクルにおいて、スキップカウンタ４２の数値は「０１１１」に到達し、かつ、バースト転送進行カウンタ３８の数値は「１０」である。つまり、上述のイネーブル条件１は満足されない。従って、ポインタ２８、メモリアドレスカウンタ３０および書込進行カウンタ３４は、カウントアップされず、「００１０」、「００１１」、「００１０」を示した状態を維持する。バースト転送進行カウンタ３８は、カウントアップして「１１」となる。また、スキップカウンタ４２の数値「０１１１」の最上位ビットは「０」であるので、スキップカウンタ４２は、カウントアップして「１０００」となる。
【００６１】
スキップカウンタ４２の数値「１０００」の最上位ビットは「１」であり、イネーブル信号はハイとなる。ポインタ２８の数値は「００１０」を示したままであるので、レジスタアドレス「００１０」に保持されているワードｗ３が読み出される。しかし、イネーブル信号はハイであり書込禁止の状態であるので、書込マスク部５０によってワードｗ３についてマスク処理がなされる。その結果、読み出されたワードｗ３がメモリアドレス「００１１」へ書き込まれることはない。以上が、１回目のバースト転送である。
【００６２】
スキップカウンタ４２を設けて、数値を上述のように設定することにより、１回のバースト転送中に書込先のアドレスがセグメント内の最終アドレスに到達したことを認識できる。これにより、１回のバースト転送において読み出された最後のワードが、セグメント内の最終アドレスの単位記憶領域に書き込まれるように制御することが可能となる。
【００６３】
次いで、２回目のバースト転送が開始される。スキップカウンタ４２の数値は「１０００」であるが、バースト転送進行カウンタ３８の数値は「１１」であるので、上述のイネーブル条件１は満足される。また、書込進行カウンタ３４の数値は「００１０」であり、イネーブル条件２も満足される。従って、ポインタ２８、メモリアドレスカウンタ３０および書込進行カウンタ３４のカウントアップが再開され、それぞれ「００１１」、「０１００」、「００１１」となる。また、バースト転送進行カウンタ３８の数値が「１１」であるので、スキップカウンタ４２の数値は再度設定される。つまり、スキップカウンタ４２の数値は、上位２ビットを「０１」、下位２ビットを、次にワードが書き込まれるメモリアドレスカウンタ３０の数値「０１００」の下位２ビットである「００」とした「０１００」に設定される。１回目のバースト転送が終了して、バースト転送進行カウンタ３８の数値は「１１」となっているので、この数値は「００」にリセットされる。
【００６４】
本実施の形態では、バースト転送進行カウンタ３８が１回のバースト転送の転送単位の数である４をカウントして「１１」となると、スキップカウンタ４２の数値が上述のように再度設定される。これにより、スキップカウンタ４２の数値は「１０００」から「０１００」へ、つまり、最上位ビットが「１」から「０」へ変わるので、イネーブル信号が書込許可の状態へ変わる。つまり、バースト転送進行カウンタ３８は、イネーブル信号を書込禁止の状態から書込許可の状態にする役割を担う。
【００６５】
２回目のバースト転送におけるワードｗ４、５、６の書込について、１回目のバースト転送について上述した動作と同様の動作が実行される。この結果、ｗ４、ｗ５、ｗ６がメモリアドレス「０１００」、「０１０１」、「０１１０」のそれぞれに書き込まれる。ワードｗ６の書込が終了した時点で、スキップカウンタ４２は「０１１０」、ポインタ２８は「０１０１」、メモリアドレスカウンタ３０は「０１１０」、書込進行カウンタ３４は「０１０１」、バースト転送進行カウンタ３８は「１０」を示している。
【００６６】
２回目のバースト転送の最後の書込サイクルにおいて、スキップカウンタ４２の数値はまだ「０１１１」に到達していないので、ポインタ２８、メモリアドレスカウンタ３０および書込進行カウンタ３４は、カウントアップしてそれぞれ「０１１０」、「０１１１」、「０１１０」となる。バースト転送進行カウンタ３８は、カウントアップして「１１」となる。また、スキップカウンタ４２の数値「０１１０」の最上位ビットは「０」であるので、スキップカウンタ４２もカウントアップして「０１１１」となる。このスキップカウンタ４２の数値「０１１１」の最上位ビットは「０」であり、イネーブル信号はローであるので、ワードｗ７がメモリアドレス「０１１１」に書き込まれる。以上が２回目のバースト転送である。
【００６７】
１回目のバースト転送では、レジスタアドレス領域４８から読み出されたのはワードｗ１、ｗ２、ｗ３、ｗ３であり、ワードｗ３が２回読み出されている。これに対して２回目のバースト転送では、ワードｗ４、ｗ５、ｗ６、ｗ７が読み出されており、重複して読み出されたワードはない。これは、スキップカウンタ４２の上位２ビットを「０１」、下位２ビットを最初の書込先のアドレスの下位２ビットの数値に設定したことにより、書込先がセグメント内の最終アドレスに到達すると、スキップカウンタ４２の数値が「０１１１」となることに起因する。
【００６８】
つまり、スキップカウンタ４２の数値「０１１１」に基づいてポインタ２８およびメモリアドレスカウンタ３０のカウントアップを停止させると、重複するワードが読み出される。さらに、スキップカウンタ４２の数値の最上位ビットが「１」となったときに書込が禁止されるので、その重複するワードは書き込まれない。これによって、１回目のバースト転送においてセグメント内の途中のアドレスから書込が開始される場合でも、１回目のバースト転送はセグメント内の最終アドレスで終了する。２回目以降のバースト転送では、セグメント内の最初のアドレスから書込を開始させることができる。これにより、２回目以降のバースト転送では、１回のバースト転送において転送できる最大ワード数である４ワードすべてを書き込むことができ、データ転送の高速化を実現できる。
【００６９】
本実施の形態では、最初の書込先のメモリアドレスが「０００１」であるため、同じワードが２回、レジスタアドレス領域４８から読み出されたが、最初の書込先のアドレスが「００１０」の場合は３回、「００１１」の場合は４回、同一のワードが読み出される。
【００７０】
次いで、３回目のバースト転送が開始される。スキップカウンタ４２の数値は「０１１１」であるが、バースト転送進行カウンタ３８の数値が「１１」であるため、ポインタ２８、メモリアドレスカウンタ３０および書込進行カウンタ３４は、カウントアップしてそれぞれ「０１１１」、「１０００」、「０１１１」となる。また、バースト転送進行カウンタ３８の数値が「１１」であるので、スキップカウンタ４２の数値は再度設定される。つまり、スキップカウンタ４２の数値は、上位２ビットを「０１」、下位２ビットをメモリアドレスカウンタ３０の数値「０１００」の下位２ビットである「００」とした「０１００」に設定される。バースト転送進行カウンタ３８の数値は「００」にリセットされる。スキップカウンタ４２の数値「０１１１」の最上位ビットは「０」であり、イネーブル信号はローであるので、ワードｗ８がメモリアドレス「１０００」に書き込まれる。
【００７１】
スキップカウンタ４２の数値は「０１００」であり、「０１１１」に到達していないので、ポインタ２８、メモリアドレスカウンタ３０および書込進行カウンタ３４は、カウントアップしてそれぞれ「１０００」、「１００１」、「１０００」となる。バースト転送進行カウンタ３８は、カウントアップして「０１」となる。また、スキップカウンタ４２の数値「０１００」の最上位ビットは「０」であるので、スキップカウンタ４２もカウントアップして「０１０１」となる。スキップカウンタ４２の数値「０１００」の最上位ビットは「０」であり、イネーブル信号はローであるので、ワードｗ９がメモリアドレス「１００１」に書き込まれる。この時点で、書込進行カウンタ３４の数値は「１０００」であり、書き込むべき９個のワードｗ１〜ｗ９はすべて書き込まれたことになる。しかし、まだ、３回目のバースト転送のすべては終了しておらず、引き続き３回目および４回目の書込サイクルにおける処理が実行される。
【００７２】
３回目のバースト転送における３回目の書込サイクルにおいて、スキップカウンタ４２の数値は「０１０１」であり、「０１１１」に到達していない。しかし、書込進行カウンタ３４の数値は「１０００」は書き込むべきすべてのワードの個数「９」に到達したことを示している。つまり、イネーブル条件２が満足されない。従って、ポインタ２８、メモリアドレスカウンタ３０および書込進行カウンタ３４におけるカウントアップは停止され、それぞれ「１０００」、「１００１」、「１０００」のままの数値を維持する。バースト転送進行カウンタ３８の数値は、カウントアップされて「１０」となる。スキップカウンタ４２の数値「０１０１」の最上位ビットは「０」であるので、スキップカウンタ４２もカウントアップして「０１１０」となる。書込進行カウンタ３４の数値は「１０００」であり、イネーブル信号はハイとなる。ポインタ２８によって示されるレジスタアドレス「１０００」からワードｗ９が再び読み出される。しかし、イネーブル信号はハイであり書込禁止の状態であるので、書込マスク部５０によってワードｗ９についてマスク処理がなされる。その結果、読み出されたワードｗ９がメモリアドレス「１００１」へ書き込まれることはない。
【００７３】
３回目のバースト転送における４回目の書込サイクルにおいても、同様の処理がなされる。スキップカウンタ４２の数値は「０１１０」であり、「０１１１」に到達していないが、書込進行カウンタ３４の数値は「１０００」であり、イネーブル条件２が満足されない。従って、ポインタ２８、メモリアドレスカウンタ３０および書込進行カウンタ３４におけるカウントアップは停止されたまま、それぞれ「１０００」、「１００１」、「１０００」の数値の表示した状態を維持する。バースト転送進行カウンタ３８は、カウントアップして「１１」となる。スキップカウンタ４２の数値「０１１０」の最上位ビットは「０」であるので、スキップカウンタ４２もカウントアップして「０１１１」となる。書込進行カウンタ３４の数値は「１０００」であり、イネーブル信号はハイである。ポインタ２８によって示される数値のレジスタアドレス「１０００」からワードｗ９が再び読み出される。しかし、イネーブル信号はハイであり書込禁止の状態であるので、書込マスク部５０によってワードｗ９についてマスク処理がなされる。その結果、読み出されたワードｗ９は、メモリアドレス「１００１」へ書き込まれない。以上が３回目のバースト転送であり、このバースト転送が終了することにより、書込処理も終了する。
【００７４】
本実施の形態によれば、書込進行カウンタ３４の数値が書き込むべきすべてのワード数の値に到達したとき、ポインタ２８およびメモリアドレスカウンタ３０のカウントアップが停止するので、書き込むべきワードのみをレジスタアドレス領域４８から読み出すことができる。また、ポインタ２８の停止により、レジスタアドレス領域４８の同一のアドレスから重複したワードが読み出されるが、その重複したワードの書込は禁止されるので、書き込まれるべきワードが余計に書き込まれることを回避できる。これによって、書き込むべきワードのみを書き込みつつ、バースト転送機能による高速化を図ることができる。
【００７５】
書込処理ではデータが図４における左から右へ転送されたが、読込処理では、同図のおける右から左へデータが転送される。つまり、本実施の形態では、読込処理において、メモリアドレス領域５２のロウアドレス「００００」におけるカラムアドレス「０００１」〜「１００１」の９個の単位記憶領域に保持されたワードｗ１〜ｗ９が読み出され、レジスタアドレス領域４８のアドレス「００００」〜「１０００」の９個の単位記憶領域のそれぞれに書き込まれる。
【００７６】
また、図５は、書込処理について用いたが、図中の「書込進行カウンタ３４」を「読込進行カウンタ３６」と読み替えることにより、読込処理についても用いることができる。読込処理については、上述の書込処理についての説明中の「書込」を「読込」、「書込進行カウンタ３４」を「読込進行カウンタ３６」、「書込マスク部５０」を「読込マスク部４６」と読み替えて説明することが可能である。
【００７７】
以上の構成による動作を以下で説明する。ここでは、メモリ制御装置１０を用いたフィル処理、コピー処理およびディスク欠陥サーチ処理（以下「サーチ処理」とも表記する）を説明する。フィル処理とは、バッファレジスタ１８に記憶されている保持されたデータをＳＤＲＡＭ２４に書き込む処理である。すなわち、フィル処理においては、上述した書込処理が実行される。
【００７８】
図６は、フィル処理の過程を示すフローチャートである。まず、バーストサイズ設定部４４がバーストサイズを設定し、データ転送サイズ設定部４５が、ＳＤＲＡＭ２４に書き込まれるべきワード数を設定する（Ｓ１０）。これは本実施の形態における、バーストサイズを４、書き込まれるべきワード数を９とする設定である。以下、この設定を「第１初期設定」という。次に、スキップカウンタ４２、ポインタ２８、メモリアドレスカウンタ３０、書込進行カウンタ３４、バースト転送進行カウンタ３８の数値を設定する（Ｓ１２）。これは本実施の形態における、スキップカウンタ４２を「０１０１」、ポインタ２８を「００００」、メモリアドレスカウンタ３０を「０００１」、書込進行カウンタ３４を「００００」、バースト転送進行カウンタ３８を「００」とする設定である。以下、この設定を「第２初期設定」という。これらの初期設定が完了すると、ＳＤＲＡＭ２４にデータを書き込む書込処理が実行される（Ｓ１４）。書込処理の過程については図７を用いて後述する。１回のバースト転送が終了したときは（Ｓ１６のＹ）、後述のクリア処理が実行される（Ｓ１８）。一方、バースト転送が終了していない場合には（Ｓ１６のＮ）、再度書込処理が実行される（Ｓ１４）。
【００７９】
クリア処理が実行された後、ロウアドレスが変更するか否かが判定される（Ｓ２０）。書込処理において、あるロウアドレスの最終のカラムアドレスまでワードが書き込まれた場合であって、まだ全ワードの書込が終了していないときは、次のロウアドレスにおいて書込が続行される。つまり、書込の対象となるロウアドレスが変更したときには、各種のカウンタの数値を再度設定する必要があるため、Ｓ１８においてロウアドレスの変更の有無が判定される。その判定の結果、ロウアドレスに変更がないとき（Ｓ２０のＹ）、転送の対象となったデータにおけるすべてのワードについて書込が終了したか否かが判定される（Ｓ２２）。ロウアドレスに変更があるとき（Ｓ２０のＮ）、Ｓ１２にて、再度第２初期設定がなされる。すべてのワードについて書込が終了したときは（Ｓ２２のＹ）、フィル処理が終了する。一方、すべてのワードについて書込が終了していないときは（Ｓ２２のＮ）、再度第２初期設定がなされる（Ｓ１２）。
【００８０】
図７は、図６のＳ１４における書込処理の過程を示すフローチャートである。スキップカウンタ４２の数値の最上位ビットが「０」であるとき（Ｓ３０のＹ）、１ワードがメモリアドレス領域５２に書き込まれる（Ｓ３２）。一方、最上位ビットが「０」でないときは（Ｓ３０のＮ）、書込は禁止されており、ワードは書き込まれない。次に、スキップカウンタ４２の数値が、最上位ビットのみが「０」である数値より小さいとき（Ｓ３４のＹ）、ポインタ２８、メモリアドレスカウンタ３０および書込進行カウンタ３４をカウントアップする（Ｓ３６）。最上位ビットのみが「０」である数値とは、例えば、スキップカウンタ４２の数値が４ビットで表される場合の「０１１１」等の数値を意味する。一方、スキップカウンタ４２の数値が、最上位ビットのみ「０」である数値以上であるときは（Ｓ３４のＮ）、スキップカウンタ４２は、ポインタ２８、メモリアドレスカウンタ３０および書込進行カウンタ３４をカウントアップされない。すなわち、カウントアップが停止する。
【００８１】
次に、バースト転送進行カウンタ３８がカウントアップされる（Ｓ３７）。スキップカウンタ４２の数値の最上位ビットが「０」であるとき（Ｓ３８のＹ）、スキップカウンタ４２をカウントアップする（Ｓ４０）。一方、スキップカウンタ４２の数値の最上位ビットが「０」でないとき（Ｓ３８のＮ）、スキップカウンタ４２はカウントアップされない。すなわち、カウントアップが停止する。
【００８２】
図８は、図６のＳ１８におけるクリア処理の過程を示すフローチャートである。１回のバースト転送が終了した場合であって（図６におけるＳ１６のＹ）、スキップカウンタ４２、ポインタ２８、メモリアドレスカウンタ３０および書込進行カウンタ３４のカウントアップが停止されていたとき（Ｓ５０のＹ）、それらのカウントアップを再開する（Ｓ５２）。一方、カウントアップが停止されていない場合は（Ｓ５０のＮ）、カウントアップ再開の処理は実行されない。次に、スキップカウンタ４２の数値が、例えば、上述のような、上位２ビットを「０１」、下位２ビットを「００」とする数値に再設定される（Ｓ５４）。そして、１回のバースト転送が終了したことにより、例えば、「１１」となっている数値を「００」にクリアする（Ｓ５６）。
【００８３】
次に、コピー処理について説明する。コピー処理とは、ＳＤＲＡＭ２４に保持されたデータをバッファレジスタ１８に読み出し、さらに、その読み出したデータを、ＳＤＲＡＭ２４における読み出したアドレスとは異なるアドレスへ書き込む処理である。つまり、コピー処理においては上述した読込処理がなされた後、書込処理が実行される。
図９は、コピー処理の過程を示すフローチャートである。上述したように、コピー処理は、読込過程（Ｓ６０）および書込過程（Ｓ６１）の２つの過程から成り立つ。
【００８４】
図１０は、Ｓ６０における読込過程を説明するためのフローチャートである。同図において、図６におけるステップと同一の番号を付したステップでは、図６におけるそのステップと同様の処理が実行される。
まず、第１初期設定（Ｓ１０）および第２初期設定（Ｓ１２）がなされる。ここで、Ｓ１２において、上述のフィル処理では、第２初期設定としてスキップカウンタ４２、ポインタ２８、メモリアドレスカウンタ３０、書込進行カウンタ３４、バースト転送進行カウンタ３８の数値が設定されたが、コピー処理においては、書込進行カウンタ３４ではなく、読込進行カウンタ３６の数値が設定される。これらの初期設定が完了すると、ＳＤＲＡＭ２４からバッファレジスタ１８へデータを読み込む読込処理が実行される（Ｓ６２）。読込処理の過程については図１１を用いて後述する。
【００８５】
１回のバースト転送が終了したときは（Ｓ１６のＹ）、クリア処理が実行される（Ｓ１８）。クリア処理については図８を用いて上述されたが、コピー処理におけるクリア処理では、図８のカウントアップ停止の判定（Ｓ５０）およびカウントアップの再開（Ｓ５２）においては、書込進行カウンタ３４ではなく読込進行カウンタ３６が処理の実行の対象となる。バースト転送が終了していない場合には（Ｓ１６のＮ）、再度読込処理が実行される（Ｓ６２）。
【００８６】
クリア処理が実行された後、ロウアドレスが変更するか否かが判定される（Ｓ２０）。読出処理において、あるロウアドレスの最終のカラムアドレスまでワードが読み出された場合であって、まだ全ワードの読出が終了していないときは、次のロウアドレスにおいて読出が続行される。つまり、読出の対象となるロウアドレスが変更したときには（Ｓ２０のＮ）、各種のカウンタの数値を再度設定する必要があるため、Ｓ１８においてロウアドレスの変更の有無が判定される。
【００８７】
その判定の結果、ロウアドレスに変更がなく（Ｓ２０のＹ）、レジスタアドレス領域４８に読み込まれたワード数が、１回のバースト転送で書込可能なワード数に到達しているときには（Ｓ６４のＹ）、書込過程（Ｓ６１）に移行する。例として、コピー処理において、読込のために１回でバースト転送されるワード数が２であり、書込のために１回でバースト転送されるワード数が４であるときについて説明する。この場合、読込のためのバースト転送が２回実行されて合計４ワードが読み込まれない限り、書込のためのバースト転送は実行できない。つまり、読込のためのバースト転送が２回実行されることにより、Ｓ６４において、読み込まれたワード数が、書込可能なワード数に到達したと判定されると（Ｓ６４のＹ）、書込過程に移行する。一方、バッファレジスタ１８のレジスタアドレス領域４８に読み込まれたワード数が、１回のバースト転送で書込可能なワード数に到達していないときには（Ｓ６４のＮ）、再度第２書込処理がなされる（Ｓ１２）。
【００８８】
なお、コピー処理において、読込処理と書込処理を同時に実行するためには、レジスタアドレス領域４８は、読込および書込のそれぞれにおいて１回のバースト転送で転送可能なワード数の合計に相当する数の単位記憶領域を有する必要がある。例えば、１回でバースト転送できるワード数が読込および書込の双方において４であるとき、レジスタアドレス領域４８は、読込処理と書込処理を同時に実行するために、８個の単位記憶領域を有する必要がある。
書込過程（Ｓ６１）においては、上述のフィル処理と同様の処理が実行される。
【００８９】
図１１は、図１０のＳ６２における読込処理の過程を示すフローチャートである。スキップカウンタ４２の数値の最上位ビットが「０」であるとき（Ｓ３０のＹ）、１ワードがレジスタアドレス領域４８に読み込まれる（Ｓ６６）。一方、最上位ビットが「０」でないときは（Ｓ３０のＮ）、読込は禁止されており、ワードは読み込まれない。次に、スキップカウンタ４２の数値が、最上位ビットのみが「０」である数値より小さいとき（Ｓ３４のＹ）、ポインタ２８、メモリアドレスカウンタ３０および読込進行カウンタ３６をカウントアップする（Ｓ６７）。一方、スキップカウンタ４２の数値が、最上位ビットのみが「０」である数値以上であるときは（Ｓ３４のＮ）、Ｓ６７の処理をスキップする。
以下、Ｓ３７、Ｓ３８およびＳ４０においては、図７の同一番号のステップと同様の処理が実行される。
【００９０】
次に、サーチ処理を説明する。サーチ処理とは、ＳＤＲＡＭ２４が光ディスク２２から読み出して保持するディスクに関する欠陥情報を、バッファレジスタ１８に読み出し、その欠陥情報を参照してディスクの欠陥を検索する処理である。つまり、サーチ処理では、上述した読込処理が実行され、その後にディスクの欠陥が検索される。
【００９１】
図１２は、サーチ処理の過程を示すフローチャートである。Ｓ１０、Ｓ１２、Ｓ６２、Ｓ１６、Ｓ１８およびＳ２０においては、図６の同一番号を付したステップと同様の処理が実行される。Ｓ２０において、ロウアドレスに変更がないと判定されたとき（Ｓ２０のＹ）、サーチ処理に必要なデータがすべて読み込まれたか否かが判定される（Ｓ７０）。例えば、１回のバースト転送で読み込むことができるのが２ワード、サーチ処理に必要なのは３ワードであるとすると、２回のバースト転送が実行されたときに、必要なデータが読み込まれたといえる。必要なデータがすべて読み込まれたとき（Ｓ７０のＹ）、ディスクの欠陥が検索される（Ｓ７２）。一方、必要なデータがすべて読み込まれていないとき（Ｓ７０のＮ）、再度第２初期設定がなされる（Ｓ１２）。検索条件が成立したとき、または検索範囲における検索がすべて終了したときは（Ｓ７４のＹ）、サーチ処理が終了する。一方、検索条件が成立しないか、検索範囲における検索が終了していないときは（Ｓ７４のＮ）、再度第２初期設定がなされる（Ｓ１２）。
【図面の簡単な説明】
【００９２】
【図１】実施の形態のメモリ制御システムの構成を示す図である。
【図２】実施の形態のＤＭＡコントローラの構成を示す図である。
【図３】実施の形態のるバッファレジスタおよびＳＤＲＡＭの構成を示す図である。
【図４】実施の形態のバッファレジスタとＳＤＲＡＭとの間のデータ転送の概念図である。
【図５】実施の形態のデータの書込処理および読込処理を説明するための図である。
【図６】実施の形態のフィル処理の過程を示すフローチャートである。
【図７】実施の形態のフィル処理における書込処理の過程を示すフローチャートである。
【図８】実施の形態のフィル処理におけるクリア処理の過程を示すフローチャートである。
【図９】実施の形態のコピー処理の過程を示すフローチャートである。
【図１０】実施の形態のコピー処理における読込過程を説明するためのフローチャートである。
【図１１】実施の形態の読込過程における読込処理の過程を示すフローチャートである。
【図１２】実施の形態のサーチ処理の過程を示すフローチャートである。
【符号の説明】
【００９３】
１０  メモリ制御装置、  １２  ＣＰＵ、  １４  ＤＭＡコントローラ、  １６  シーケンサ、  １８  バッファレジスタ、  ２０  イネーブル信号生成部、  ２２  光ディスク、  ２４  ＳＤＲＡＭ、  ２６  データ転送アドレスカウンタ、  ２８  ポインタ、  ３０  メモリアドレスカウンタ、  ３２  データ転送進行カウンタ、  ３４  書込進行カウンタ、  ３６  読込進行カウンタ、  ３８  バースト転送進行カウンタ、  ４０  アドレス保持部、  ４２  スキップカウンタ、  ４４  バーストサイズ設定部、  ４５  データ転送サイズ設定部、  ４６  読込マスク部、  ４８  レジスタアドレス領域、  ５０  書込マスク部、  ５２  メモリアドレス領域、  １００  メモリ制御システム。
【図１】
2007052681.tif 000003
【図２】
2007052681.tif 000004
【図３】
2007052681.tif 000005
【図４】
2007052681.tif 000006
【図５】
2007052681.tif 000007
【図６】
2007052681.tif 000008
【図７】
2007052681.tif 000009
【図８】
2007052681.tif 000010
【図９】
2007052681.tif 000011
【図１０】
2007052681.tif 000012
【図１１】
2007052681.tif 000013
【図１２】
2007052681.tif 000014