(57)【要約】  ＣＰＵ等のメモリへアクセスを行うデバイスを使用する機器において、キャッシュを使用することなく、また高速アクセスモードを備えていないメモリに対しても高速なメモリアクセスを実現するメモリアクセス装置を提供する。この目的を達成するため、本発明に係るメモリアクセス装置は、書き込み部２１１がＣＰＵ１から第１の書き込み命令を受け取ると、シングルバッファ２２から第１の書き込みアドレス及び第１の書き込みデータを受け取り、リアルタイムで書き込み処理を実施しつつ、書き込み処理が完了したか否かに関わらずＣＰＵ１に書き込み完了信号２ａを送り、読み出し部２１２がＣＰＵ１から第１の読み出し命令を受け取ると、ＣＰＵ１から第１の読み出しアドレスを受け取り、リアルタイムで読み出し処理を実施し、メモリ３から第１の読み出しデータを受け取って、これをＣＰＵ１へ送るとともに読み出し完了信号２ｂを送る。【特許請求の範囲】
【請求項１】
デバイスから書き込みアドレス及び書き込みデータを受け取りメモリへ書き込みデータを書き込み処理し、デバイスから読み出しアドレスを受け取りメモリから読み出しデータを読み出し処理してデバイスに読み出しデータを送るメモリアクセス装置において、デバイスから受け取った書き込みアドレス及び書き込みデータを蓄積する蓄積手段と、メモリへ書き込みデータを書き込み処理するための第１の制御信号とメモリからの読み出しデータを読み出し処理するための第２の制御信号を作成する制御信号作成手段と、デバイスから第１の書き込み命令を受け取ると前記蓄積手段から第１の書き込みアドレス及び第１の書き込みデータを受け取り、前記制御信号作成手段へ前記第１の制御信号を作成する指示を与え、リアルタイムで前記第１の制御信号によりメモリへ前記第１の書き込みデータを書き込み処理するとともにデバイスへ書き込み完了信号を送る書き込み制御部と、デバイスから第１の読み出し命令を受け取るとデバイスから第１の読み出しアドレスを受け取り、前記制御信号作成手段へ前記第２の制御信号を作成する指示を与え、前記第２の制御信号によりリアルタイムでメモリから第１の読み出しデータを読み出し処理しデバイスへ送るとともにデバイスへ読み出し完了信号を送る読み出し制御部とを備えることを特徴とするメモリアクセス装置。
【請求項２】
書き込み制御部は、デバイスから第２の書き込み命令を受け取ると、第１の書き込みデータの書き込み処理を完了した後に、前記蓄積手段から第２の書き込みアドレス及び第２の書き込みデータを受け取り、前記制御信号作成手段へ前記第１の制御信号を作成する指示を与え、前記第１の制御信号によりメモリへ前記第２の書き込みデータを書き込み処理するとともにデバイスへ書き込み完了信号を送り、読み出し制御部は、デバイスから第２の読み出し命令を受け取ると、第１の書き込みデータの書き込み処理を完了した後に、デバイスから第２の読み出しアドレスを受け取り、前記制御信号作成手段へ前記第２の制御信号を作成する指示を与え、前記第２の制御信号によりリアルタイムでメモリから第２の読み出しデータを読み出し処理しデバイスへ送るとともにデバイスへ読み出し完了信号を送ることを特徴とする、請求項１に記載のメモリアクセス装置。
【請求項３】
蓄積手段は、複数の書き込みアドレス及び書き込みデータを蓄積し、蓄積容量未満の場合はデバイスから書き込みアドレス及び書き込みデータを受け取って蓄積し、蓄積容量に達している場合は蓄積容量未満となるのを待ってデバイスから書き込みアドレス及び書き込みデータを受け取って蓄積し、書き込み制御部は、デバイスから第１または第２の書き込み命令を受け取ると、前記蓄積手段が第１または第２の書き込みアドレス及び第１または第２の書き込みデータを受け取った後に、前記第１または第２の書き込みデータの書き込み処理が完了したか否かに関わらずデバイスへ書き込み完了信号を送る一方、前記蓄積手段から前記書き込みアドレス及び書き込みデータを書き込み命令の順番に受け取り、制御信号作成手段へ第１の制御信号を作成する指示を与え、書き込み命令の順番にメモリへ前記書き込みデータを書き込み処理し、読み出し制御部は、デバイスから読み出し命令を受け取ると、前記蓄積手段に蓄積された全ての書き込みアドレス及び書き込みデータに関する書き込み処理が完了した後にデバイスから読み出しアドレスを受け取り、制御信号作成手段へ第２の制御信号を作成する指示を与え、リアルタイムでメモリから読み出しデータを読み出し処理しデバイスへ送るとともにデバイスへ読み出し完了信号を送ることを特徴とする、請求項２に記載のメモリアクセス装置。
【請求項４】
蓄積手段に蓄積された書き込みアドレスの連続性または不連続性を監視する監視手段を備え、監視手段の監視結果に基づき、連続した書き込みアドレスに対して高速アクセスモードにより一括して書き込みデータを書き込み処理することを特徴とする、請求項３に記載のメモリアクセス装置。
【請求項５】
読み出し制御部は、デバイスから読み出し命令を受け取ると、デバイスから読み出しアドレスを受け取り、前記読み出しアドレスと蓄積手段に蓄積された全ての書き込みアドレスとを比較し、前記読み出しアドレスと一致する書き込みアドレスが存在する場合は、当該一致する書き込みアドレスに対応する書き込みデータをデバイスへ送る指示を蓄積手段に与えるとともにデバイスへ読み出し完了信号を送り、蓄積手段は、前記読み出し制御部からの指示に従いデバイスへ書き込みデータを出力することを特徴とする、請求項３に記載のメモリアクセス装置。
【請求項６】
メモリへのアクセスを発生する複数のデバイスと、複数のデバイスとメモリアクセス装置との間に挿入され複数のデバイスからのアクセスを１つ選択してメモリアクセス装置に渡す調停器と、請求項１に記載のメモリアクセス装置とを備えることを特徴とするメモリアクセス機構。
【請求項７】
メモリへのアクセスを発生するデバイスと、デバイスによるアクセス対象となるメモリと、請求項１に記載のメモリアクセス装置とを備えることを特徴とする携帯電話端末。
【請求項８】
デバイスから第１の書き込み命令を受け取った場合は、デバイスから受け取った第１の書き込みアドレス及び第１の書き込みデータを蓄積するステップと、メモリへ書き込みデータを書き込み処理するための第１の制御信号を作成するステップと、リアルタイムで前記第１の制御信号によりメモリへ前記第１の書き込みデータを書き込み処理するとともにデバイスへ書き込み完了信号を送るステップとを備え、デバイスから第１の読み出し命令を受け取った場合は、デバイスから第１の読み出しアドレスを受け取るステップと、メモリから読み出しデータを読み出し処理するための第２の制御信号を作成するステップと、前記第２の制御信号によりリアルタイムでメモリから第１の読み出しデータを読み出し処理しデバイスへ送るとともにデバイスへ読み出し完了信号を送るステップとを備えることを特徴とするメモリアクセス方法。
【請求項９】
デバイスから第２の書き込み命令を受け取った場合は、デバイスから受け取った第２の書き込みアドレス及び第２の書き込みデータを蓄積するステップと、第１の書き込みデータの書き込み処理を完了した後に、メモリへ書き込みデータを書き込み処理するための第１の制御信号を作成するステップと、前記第１の制御信号によりメモリへ前記第２の書き込みデータを書き込み処理するとともに当該書き込み処理が完了したか否かに関わらずデバイスへ書き込み完了信号を送るステップとを備え、デバイスから第２の読み出し命令を受け取った場合は、第１の書き込みデータの書き込み処理を完了した後に、デバイスから第２の読み出しアドレスを受け取るステップと、メモリから読み出しデータを読み出し処理するための第２の制御信号を作成するステップと、前記第２の制御信号によりリアルタイムでメモリから第２の読み出しデータを読み出し処理しデバイスへ送るとともにデバイスへ読み出し完了信号を送るステップとを備えることを特徴とするメモリアクセス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、中央処理装置（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、以下、ＣＰＵ）等のメモリへの書き込み及び読み出しを行うデバイスを搭載した携帯電話やパーソナルコンピュータ等の機器における、メモリへの書き込み処理及び読み出し処理を行うメモリアクセス装置、メモリアクセス機構、携帯電話端末及びメモリアクセス方法に関するものである。
【背景技術】
【０００２】
携帯電話、パーソナルコンピュータ、その他通信、制御など多くの分野の機器においては、その内部にＣＰＵ等のようなメモリへの書き込み及び読み出しを行うデバイスが使用されている。例えばＣＰＵの場合、演算処理に伴うデータの記憶素子としてＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等のメモリが必須であるが、演算処理の高度化・複雑化に伴い、必要なメモリの容量は増大しつつある。ここで、一般にメモリは容量が大きいものほどデータの読み書き（以下、アクセス）速度が遅いという欠点を有する。従って機器の全体性能を向上するためには、大きなメモリ容量を保ちつつ、アクセスを高速化することが必要となる。【０００３】
メモリのアクセスを高速化する従来手段として、次の２つの方法が知られている。まず、通常のアクセス対象のメモリは大容量だが低速アクセスしかできないことから、これ以外に高速にアクセスできる小容量のメモリ（以下、内部メモリ）を併用する方法（従来方法１）がある。従来方法１では、ＣＰＵは内部メモリへ優先的にアクセスすることで高速化を図ることができる。例えば、内部メモリの一種であるキャッシュメモリ（以下、キャッシュ）を使用し、キャッシュコントローラで動作を制御する方法がある。具体的にはＣＰＵからメモリに書き込む際にはデータを一時的にキャッシュに保存し、キャッシュコントローラがアクセス対象のメモリをキャッシュのデータで更新する。反対にＣＰＵがデータを読み込む際には優先的にキャッシュにアクセスすることで低速なメモリへ直接アクセスしないで済むため、高速なメモリアクセスが可能となる。【０００４】
一方、メモリ自体に高速アクセスが可能な動作モードを備え、これを優先的に利用する方法（従来方法２）も知られている。従来方法の具体例としては特許文献１に開示されており、ＲＡＭ自体が元々具備している高速ページモード等の高速アクセスモードを効率的に利用する。高速アクセスモードを利用するためにはアクセスするメモリアドレスが連続している必要がある。特許文献１では、ＣＰＵがアクセスするアドレスをメモリアクセス装置のバッファに蓄積し、蓄積されたアドレスの連続性が損なわれた等の所定の条件下で高速アクセスモードを使用することとしている。これにより、総合的に高速なメモリアクセスが可能となる。【０００５】
【特許文献１】特開平９−１０６３７２号公報（第４頁、第１図）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来方法１では、アクセス対象のメモリにキャッシュが対応しない領域がある場合、当該領域に対する高速アクセスを行うことはできない。またキャッシュはＣＰＵからのアクセスに対してのみ有効であるため、ＣＰＵ以外のデバイスからのアクセス時には使用できない。またキャッシュ方式のうちライトバック方式では、キャッシュにのみデータを書き込み、特定条件によってメモリにデータを書き込むため、キャッシュとメモリ間のデータの整合性を確保するための制御が複雑となり、キャッシュコントローラの回路規模が大きくなる。またライトスルー方式では、キャッシュとメモリ双方に対する書き込み処理を完了しないと次処理に移行できないため、書き込み処理を高速化できないという課題があった。【０００７】
一方、従来方法２において高速アクセスモードを使用するためには、アクセスするアドレスが連続であることが必要であるが、アドレスの連続性はプログラムに依存して異なる。すなわち従来方法２では常に高速アクセスモードを使用できるとは限らないため、常に効果を期待できるわけではない。またメモリが高速アクセスモードを備えている必要があるため、高速アクセスモードを備えていないメモリには適用できないという課題があった。
【課題を解決するための手段】
【０００８】
この発明に係るメモリアクセス装置は、デバイスから書き込みアドレス及び書き込みデータを受け取りメモリへ書き込みデータを書き込み処理し、デバイスから読み出しアドレスを受け取りメモリから読み出しデータを読み出し処理してデバイスに読み出しデータを送るメモリアクセス装置において、デバイスから受け取った書き込みアドレス及び書き込みデータを蓄積する蓄積手段と、メモリへ書き込みデータを書き込み処理するための第１の制御信号とメモリからの読み出しデータを読み出し処理するための第２の制御信号を作成する制御信号作成手段と、デバイスから第１の書き込み命令を受け取ると前記蓄積手段から第１の書き込みアドレス及び第１の書き込みデータを受け取り、前記制御信号作成手段へ前記第１の制御信号を作成する指示を与え、リアルタイムで前記第１の制御信号によりメモリへ前記第１の書き込みデータを書き込み処理するとともにデバイスへ書き込み完了信号を送る書き込み制御部と、デバイスから第１の読み出し命令を受け取るとデバイスから第１の読み出しアドレスを受け取り、前記制御信号作成手段へ前記第２の制御信号を作成する指示を与え、前記第２の制御信号によりリアルタイムでメモリから第１の読み出しデータを読み出し処理しデバイスへ送るとともにデバイスへ読み出し完了信号を送る読み出し制御部とを備えたものである。【０００９】
また、この発明に係るメモリアクセス方法は、デバイスから第１の書き込み命令を受け取った場合は、デバイスから受け取った第１の書き込みアドレス及び第１の書き込みデータを蓄積するステップと、メモリへ書き込みデータを書き込み処理するための第１の制御信号を作成するステップと、リアルタイムで前記第１の制御信号によりメモリへ前記第１の書き込みデータを書き込み処理するとともにデバイスへ書き込み完了信号を送るステップとを備え、デバイスから第１の読み出し命令を受け取った場合は、デバイスから第１の読み出しアドレスを受け取るステップと、メモリから読み出しデータを読み出し処理するための第２の制御信号を作成するステップと、前記第２の制御信号によりリアルタイムでメモリから第１の読み出しデータを読み出し処理しデバイスへ送るとともにデバイスへ読み出し完了信号を送るステップとを備えたものである。【００１０】
また、この発明に係るメモリアクセス方法は、デバイスから第２の書き込み命令を受け取った場合は、デバイスから受け取った第２の書き込みアドレス及び第２の書き込みデータを蓄積するステップと、第１の書き込みデータの書き込み処理を完了した後に、メモリへ書き込みデータを書き込み処理するための第１の制御信号を作成するステップと、前記第１の制御信号によりメモリへ前記第２の書き込みデータを書き込み処理するとともに当該書き込み処理が完了したか否かに関わらずデバイスへ書き込み完了信号を送るステップとを備え、デバイスから第２の読み出し命令を受け取った場合は、第１の書き込みデータの書き込み処理を完了した後に、デバイスから第２の読み出しアドレスを受け取るステップと、メモリから読み出しデータを読み出し処理するための第２の制御信号を作成するステップと、前記第２の制御信号によりリアルタイムでメモリから第２の読み出しデータを読み出し処理しデバイスへ送るとともにデバイスへ読み出し完了信号を送るステップとを備えたものである。
【発明の効果】
【００１１】
この発明によれば、いずれのメモリ領域へのアクセスであるかまたはどのようなメモリであるかに関わらず、ＣＰＵ以外のデバイスからのアクセスであっても、プログラムに依存したり回路規模を増大したりすることなく、データの整合性を保ったまま高速アクセスが可能なメモリアクセス装置を実現できる。【００１２】
また、この発明によれば、いずれのメモリ領域へのアクセスであるかまたはどのようなメモリであるかに関わらず、ＣＰＵ以外のデバイスからのアクセスであっても、プログラムに依存したり回路規模を増大したりすることなく、高速アクセスが可能なメモリアクセス方法を実現できる。【００１３】
また、この発明によれば、いずれのメモリ領域へのアクセスであるかに関わらず、ＣＰＵ以外のデバイスからのアクセスであっても、データの整合性を保ったまま高速アクセスが可能なメモリアクセス方法を実現できる。
【図面の簡単な説明】
【００１４】
【図１】この発明の実施の形態１ないし５に用いられるメモリアクセス装置を適用した機器の一部を示すブロック図である。
【図２】この発明の実施の形態１及び２に用いられるメモリアクセス装置を示すブロック図である。
【図３】この発明の実施の形態１に用いられるメモリアクセス装置の書き込み処理に関する動作を示すフローチャートである。
【図４】この発明の実施の形態１に用いられるメモリアクセス装置の読み出し処理に関する動作を示すフローチャートである。
【図５】この発明の実施の形態２に用いられるメモリアクセス装置の書き込み処理に関する動作を示すフローチャートである。
【図６】この発明の実施の形態２に用いられるメモリアクセス装置の読み出し処理に関する動作を示すフローチャートである。
【図７】この発明の実施の形態３に用いられるメモリアクセス装置を示すブロック図である。
【図８】この発明の実施の形態３に用いられるメモリアクセス装置の書き込み処理に関する動作を示すフローチャートである。
【図９】この発明の実施の形態４に用いられるメモリアクセス装置を示すブロック図である。
【図１０】この発明の実施の形態４に用いられる多段バッファとアドレス監視部の関係を示す図である。
【図１１】この発明の実施の形態５に用いられるメモリアクセス装置を示すブロック図である。
【図１２】この発明の実施の形態６に用いられるメモリアクセス機構を示すブロック図である。
【符号の説明】
【００１５】
１  デバイスであるＣＰＵ
２  メモリアクセス装置
２１  バス制御部
２１１  書き込み制御部である書き込み部
２１２  読み出し制御部である読み出し部
２２  蓄積手段であるシングルバッファ
２４  制御信号作成手段である制御信号作成部
２５  多段バッファ
２６  監視手段であるアドレス監視部
３  メモリ
４  デバイスであるバスマスタ
５  調停器
【発明を実施するための最良の形態】
【００１６】
以下この発明を、その実施の形態を示す図面に基づいて具体的に説明する。なお実施の形態１では、この発明に係るメモリアクセス装置を携帯電話端末等のＣＰＵを搭載した機器へ適用した場合を例にとり説明する。
実施の形態１．
図１はこの発明に係るメモリアクセス装置を適用した機器の一部を示すブロック図である。デバイスであるＣＰＵ１からメモリ３に対するアクセスは、すべてメモリアクセス装置２を経由して行われる。ＣＰＵ１とメモリアクセス装置２は、ＣＰＵアドレスバス１ａ及びＣＰＵデータバス１ｂによって接続されている。またＣＰＵ１からは書き込み命令である書き込み信号１ｃまたは読み出し命令である読み出し信号１ｄがメモリアクセス装置２に送られる。これに対してメモリアクセス装置２からは書き込み完了信号２ａまたは読み出し完了信号２ｂがＣＰＵ１へ送られる。一方、メモリアクセス装置２とメモリ３は、メモリアドレスバス２ｃ及びメモリデータバス２ｄによって接続されている。さらにメモリアクセス装置２からはメモリ制御信号２ｅがメモリ３に送られる。【００１７】
次にメモリアクセス装置２の動作を２つの場合に分けて説明する。第１の場合として、初期状態すなわちメモリアクセス装置２が書き込み処理も読み出し処理も行っていない状態で、ＣＰＵ１からメモリ３にデータを書き込む場合の動作を説明する。この場合、図１においてＣＰＵ１は第１の書き込み命令である書き込み信号１ｃをメモリアクセス装置２に送るとともに、第１の書き込みアドレスである書き込みアドレス及び第１の書き込みデータである書き込みデータを、それぞれＣＰＵアドレスバス１ａ及びＣＰＵデータバス１ｂを介してメモリアクセス装置２に出力する。このとき、ＣＰＵ１は書き込み信号１ｃと読み出し信号１ｄを同時に送ることがないように制御する。すなわちメモリアクセス装置２に対して、ＣＰＵ１から書き込みと読み出しの命令が同時に行われることはない。【００１８】
図２はメモリアクセス装置２を示すブロック図であり、ＣＰＵアドレスバス１ａ及びＣＰＵデータバス１ｂは、バス制御部２１の読み出し制御部である読み出し部２１２と蓄積手段であるシングルバッファ２２の双方と接続される。またシングルバッファ２２とバス制御部２１の書き込み制御部である書き込み部２１１は、バッファアドレスバス２２ａ及びバッファデータバス２２ｂで接続される。さらに読み出し部２１２とインタフェース部２３は、読み出しアドレスバス２１ａ及び読み出しデータバス２１ｂで、また書き込み部２１１とインタフェース部２３は、書き込みアドレスバス２１ｃ及び書き込みデータバス２１ｄで接続される。なお制御信号作成手段である制御信号作成部２４は、バス制御部２１からの信号に基づき第１の制御信号である書き込み制御信号２４ａまたは第２の制御信号である読み出し制御信号２４ｂを作成する。【００１９】
図２において、ＣＰＵ１から送られた書き込み信号１ｃは、バス制御部２１の書き込み部２１１に渡される。書き込み部２１１は書き込み信号１ｃを受け取ると、シングルバッファ２２に書き込みアドレス及び書き込みデータが蓄積されているか否かを、バッファ状態信号２２ｃに基づき判断する。シングルバッファ２２は書き込みアドレスと書き込みデータをそれぞれ１個ずつ保持することができ、例えば１段のファイフォ（ＦＩＦＯ：Ｆｉｒｓｔ−ｉｎ  Ｆｉｒｓｔ−ｏｕｔ）で構成される。ファイフォはデータの蓄積量を表す信号としてフルフラグを出力し、蓄積量が一杯（Ｆｕｌｌ）であればフルフラグがＨ論理となるが、それ以外ではＬ論理となる。従ってバッファ状態信号２２ｃとしてフルフラグを用いれば、書き込み部２１１からファイフォへ特に要求をしなくても、ファイフォの蓄積状況を判断できる。【００２０】
すなわち１段のファイフォの場合、フルフラグがＬ論理であれば書き込みアドレス及び書き込みデータが蓄積されていないが、フルフラグがＨ論理であれば書き込みアドレス及び書き込みデータが蓄積されていると判断できる。初期状態では未だ書き込み処理は行われていないため、書き込みアドレス及び書き込みデータは蓄積されておらず、フルフラグはＬ論理である。すると書き込み部２１１は以前の書き込み処理は完了していると判断し、ＣＰＵ１から送られた書き込みアドレス及び書き込みデータを蓄積する蓄積命令をバッファ制御信号２１ｅによりシングルバッファ２２へ送る。この蓄積命令に基づき、シングルバッファ２２はＣＰＵ１から送られた書き込みアドレス及び書き込みデータを蓄積する。シングルバッファがファイフォの場合、書き込みアドレスと書き込みデータが蓄積されたことでフルフラグはＨ論理に変化する。【００２１】
書き込み部２１１は、書き込みアドレス及び書き込みデータをシングルバッファ２２に蓄積すると、メモリ３への書き込み処理の完了を待たずにＣＰＵ１へ書き込み完了信号２ａを送る。ＣＰＵ１は書き込み完了信号２ａを受け取ると、メモリ３への書き込みが完了したと判断するので、次処理に移行することができる。【００２２】
一方、書き込み部２１１は制御信号作成部２４に対して、書き込み制御信号２４ａの生成信号２１ｆを送る。制御信号作成部２４は書き込み制御信号２４ａの生成信号２１ｆを受け取ると、チップセレクトやライトイネーブル等、メモリ３への書き込み処理に必要な書き込み制御信号２４ａを作成し、インタフェース部２３に送る。書き込み制御信号２４ａは、アクセス対象のメモリの種類等により異なるため、制御信号作成部２４では対象のメモリに応じた所定の信号が作成される。【００２３】
さらに書き込み部２１１は、書き込みアドレス及び書き込みデータを出力する命令をバッファ制御信号２１ｅによりシングルバッファ２２へ送る。この出力命令に基づき、シングルバッファ２２はバッファアドレスバス２２ａ及びバッファデータバス２２ｂを介して、それぞれ書き込みアドレス及び書き込みデータを書き込み部２１１に渡す。アドレス及びデータを受取ると、書き込み部２１１は書き込みアドレスバス２１ｃ及び書き込みデータバス２１ｄを介して、書き込みアドレス及び書き込みデータをインタフェース部２３に送る。また同時に、書き込み制御信号２４ａの生成信号２１ｆもインタフェース部２３に送る。インタフェース部２３は書き込み制御信号２４ａの生成信号２１ｆを受け取ると、書き込みアドレスバス２１ｃ及び書き込みデータバス２１ｄを、それぞれメモリアドレスバス２ｃ及びメモリデータバス２ｄと接続する。換言すれば読み出しアドレスバス２１ａ及び読み出しデータバス２１ｂは、メモリアドレスバス２ｃ及びメモリデータバス２ｄとは接続されない。さらに書き込み制御信号２４ａをメモリ制御信号２ｅへ接続する。【００２４】
インタフェース部２３は、書き込み部２１１から送られた書き込みアドレス及び書き込みデータを、メモリアドレスバス２ｃ及びメモリデータバス２ｄを介してメモリ３へ送るとともに、メモリ制御信号２ｅとして書き込み制御信号２４ａをメモリ３へ送る。メモリ３はメモリ制御信号２ｅに基づき、与えられた書き込みアドレスに書き込みデータを記憶し、データの書き込みが完了する。【００２５】
以上のように、書き込み処理はシングルバッファ２２にデータが蓄積されるとすぐに、すなわちリアルタイムに実施される。なお、シングルバッファ２２がファイフォの場合、蓄積していた書き込みアドレス及び書き込みデータを出力することで、フルフラグはＬ論理に変化し、初期状態に戻る。また、メモリ３に対するメモリ制御信号２ｅと書き込みアドレス及び書き込みデータとのタイミングの関係は、一般に使用するメモリの種類等により異なる。そこで、あらかじめ書き込み部２１１からの書き込みアドレス及び書き込みデータの出力タイミングと、メモリ制御信号２ｅの出力タイミングとの関係がメモリ毎に適した所定の関係となるよう、書き込み部２１１が出力する書き込みアドレス及び書き込みデータの出力タイミングを調整するものとする。【００２６】
図３に、以上で説明した第１の場合におけるメモリアクセス装置２の動作を表すフローチャートを示す。初期状態ではフルフラグはＬ論理であり、ステップＳ３１で書き込み信号１ｃが書き込み部２１１へ入力される。次に書き込み部２１１ではステップＳ３２でフルフラグがＬ論理であることを判別する。次にステップＳ３３で書き込みアドレス及び書き込みデータをシングルバッファ２２に蓄積するとフルフラグはＨ論理に変化する。次にステップＳ３４で書き込み完了信号２ａを出力する。次にステップＳ３５でシングルバッファ２２からアドレス及びデータを出力し、ステップＳ３６でタイミング調整のうえ、これらをメモリアクセス装置２から出力する。同時にステップＳ３７で書き込み制御信号２４ａを作成し、ステップＳ３８でメモリ制御信号２ｅとしてメモリアクセス装置２から出力する。このとき、インタフェース部２３はステップＳ３９で書き込みアドレスバス２１ｃ及び書き込みデータバス２１ｄを選択しておく。最後にメモリ３への書き込み処理をステップＳ３ａで実行する。【００２７】
次に、第２の場合として、初期状態すなわちメモリアクセス装置２が書き込み処理も読み出し処理も行っていない状態で、ＣＰＵ１がメモリ３からデータを読み出す場合の動作を説明する。この場合、図１においてＣＰＵ１は第１の読み出し命令である読み出し信号１ｄをメモリアクセス装置２に送るとともに、ＣＰＵアドレスバス１ａを介して第１の読み出しアドレスである読み出しアドレスをメモリアクセス装置２に送る。データ書き込み時と同様に、ＣＰＵ１は書き込み信号１ｃと読み出し信号１ｄを同時に送ることはない。【００２８】
ＣＰＵ１から送られた読み出し信号１ｄは、図２においてバス制御部２１の読み出し部２１２に渡される。読み出し部２１２は読み出し信号１ｄを受け取ると、シングルバッファ２２に書き込みアドレス及び書き込みデータが蓄積されているか否かを、バッファ状態信号２２ｃに基づき判断する。すなわち、もしシングルバッファ２２に書き込みアドレス及び書き込みデータが蓄積されていれば、以前の書き込み処理が完了していないと判断する。上述のようにシングルバッファ２２に１段のファイフォを適用する場合、読み出し処理におけるバッファ状態信号２２ｃとしてエンプティフラグを用いることができる。エンプティフラグはファイフォのデータの蓄積量を表す信号として出力され、蓄積量が空（Ｅｍｐｔｙ）であればエンプティフラグがＨ論理となるが、それ以外ではＬ論理となる。従ってバッファ状態信号２２ｃとしてエンプティフラグを用いれば、読み出し部２１２からファイフォへ特に要求をしなくても、ファイフォの蓄積状況を判断できる。１段のファイフォでは、空（Ｅｍｐｔｙ）か一杯（Ｆｕｌｌ）の２つの状態しかありえないため、エンプティフラグとフルフラグは相補的な信号となる。【００２９】
すなわちエンプティフラグがＬ論理であれば書き込みアドレス及び書き込みデータが蓄積されているが、エンプティフラグがＨ論理であれば書き込みアドレス及び書き込みデータが蓄積されていないと判断できる。初期状態では上述のように書き込みアドレス及び書き込みデータは蓄積されておらず、エンプティフラグはＨ論理となる。すると読み出し部２１２は以前の書き込み処理は完了していると判断し、ＣＰＵ１から送られた読み出しアドレスを受け取る。【００３０】
アドレスを受け取ると、読み出し部２１２は制御信号作成部２４に対して、読み出し制御信号２４ｂの生成信号２１ｇを送る。制御信号作成部２４は読み出し制御信号２４ｂの生成信号２１ｇを受け取ると、チップセレクトやリードイネーブル等、メモリ３からの読み出し処理に必要な読み出し制御信号２４ｂを作成し、インタフェース部２３に送る。書き込み処理時と同様に、読み出し制御信号２４ｂは、アクセス対象のメモリの種類等により異なるため、制御信号作成部２４では対象のメモリに応じた所定の信号が作成される。【００３１】
一方、読み出し部２１２は、読み出しアドレスバス２１ａを介して、読み出しアドレスをインタフェース部２３に送り、同時に読み出し制御信号２４ｂの生成信号２１ｇもインタフェース部２３に送る。インタフェース部２３は読み出し制御信号２４ｂの生成信号２１ｇを受け取ると、読み出しアドレスバス２１ａ及び読み出しデータバス２１ｂを、それぞれメモリアドレスバス２ｃ及びメモリデータバス２ｄと接続する。換言すれば書き込みアドレスバス２１ｃ及び書き込みデータバス２１ｄは、メモリアドレスバス２ｃ及びメモリデータバス２ｄとは接続されない。さらに読み出し制御信号２４ｂをメモリ制御信号２ｅへ接続する。【００３２】
インタフェース部２３は、読み出し部２１２から送られた読み出しアドレスを、メモリアドレスバス２ｃを介してメモリ３へ送るとともに、メモリ制御信号２ｅとして読み出し制御信号２４ｂをメモリ３へ送る。メモリ３はメモリ制御信号２ｅに基づき、与えられた読み出しアドレスに記憶されている第１の読み出しデータである読み出しデータをメモリデータバス２ｄに出力する。出力された読み出しデータはインタフェース部２３に送られ、さらに読み出しデータバス２１ｂを介して読み出し部２１２へ渡される。読み出し部２１２はＣＰＵデータバス１ｂを介して読み出しデータをＣＰＵ１へ渡すとともに、読み出し完了信号２ｂをＣＰＵ１へ出力する。ＣＰＵ１は読み出し完了信号２ｂを受け取ることで、読み出しデータの読み出しが完了したと判断するので、次処理に移行することができる。【００３３】
以上のように、読み出し処理は読み出し信号１ｄが入力されるとすぐに、すなわちリアルタイムに実施される。なお書き込み処理時と同様、メモリ３に対するメモリ制御信号２ｅと読み出しアドレスとのタイミングの関係は、一般に使用するメモリの種類等により異なるため、あらかじめ読み出しアドレスとメモリ制御信号２ｅの出力タイミングの関係がメモリ毎に適した所定の関係となるよう、読み出し部２１２が出力する読み出しアドレスの出力タイミングを調整するものとする。一方、書き込み処理時と異なり読み出し処理時は、読み出し処理が完了するまで読み出し完了信号２ｂがＣＰＵ１へ出力されないので、読み出し処理の完了前にＣＰＵが次処理に移行することはない。【００３４】
図４に、以上で説明した実施の形態１の第２の場合におけるメモリアクセス装置２の動作を表すフローチャートを示す。初期状態ではエンプティフラグはＨ論理であり、ステップＳ４１で読み出し信号１ｄが読み出し部２１２へ入力される。次に読み出し部２１２ではステップＳ４２でエンプティフラグがＨ論理であることを判別する。次にステップＳ４３で読み出しアドレスを受け取り、ステップＳ４４でタイミング調整のうえ、これをメモリアクセス装置２から出力する。同時にステップＳ４５で読み出し制御信号２４ｂを作成し、ステップＳ４６でメモリ制御信号２ｅとしてメモリアクセス装置２から出力する。このとき、インタフェース部２３はステップＳ４７で読み出しアドレスバス２１ａ及び読み出しデータバス２１ｂを選択しておく。メモリ３へ読み出しアドレスを送ると、ステップＳ４８で読み出しデータを受け取る。受け取った読み出しデータはステップＳ４９でＣＰＵ１へ出力されると共に、読み出し完了信号２ｂが出力される。【００３５】
以上のように、実施の形態１に係るメモリアクセス装置２はメモリ３への書き込み処理が完了する前に書き込み完了信号２ａをＣＰＵ１に出力するので、ＣＰＵ１は次処理に移ることができる。このためライトスルー方式と異なり書き込み処理を高速化でき、高速アクセスを実現できる。また、書き込み処理をリアルタイムで実施するため制御が簡単ですみ、ライトバック方式と比べて回路規模を小さくできる。また実施の形態１ではキャッシュを使用しないため、メモリ３の全ての領域に対して上述のような高速アクセスを実現できる。また高速モードを持たないメモリであっても、さらにアクセスするアドレスが連続でない場合であっても、上述のような高速アクセスを実現できる。【００３６】
なお、上記実施の形態１においてはメモリアクセス装置２にアクセスするのはＣＰＵ１であるとして説明したが、アクセス元は必ずしもＣＰＵである必要はなく、バスの制御主体（以下、バスマスタ）となるデバイスであればよく、例えばＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）などであってもよい。すなわち、メモリアクセス装置２はＣＰＵ１から独立しているため、メモリアクセス装置２を経由してメモリ３にアクセスする全てのバスマスタに対して適用できる。【００３７】
なお、上記実施の形態１ではシングルバッファ２２としてファイフォを適用するものとして説明をしたが、これは必ずしもファイフォでなくても良い。すなわち１個のアドレスとデータを保持することができる素子であればよく、ＲＡＭ等やフリップフロップ等であってもよい。【００３８】
なお、上記実施の形態１ではメモリ３からの読み出し処理においてシングルバッファ２２がファイフォの場合、エンプティフラグに基づき制御をするものとしたが、これは必ずしもエンプティフラグでなくても良い。上述のようにシングルバッファ２２ではエンプティフラグとフルフラグが相補的な関係となるため、フルフラグに基づき制御をするものとしてもよい。なお反対に、メモリ３への書き込み処理においてはフルフラグに基づき制御をするものとしたが、同様の論理でエンプティフラグに基づいても制御できることは言うまでもない。【００３９】
実施の形態２．
実施の形態１では、初期状態すなわちメモリアクセス装置２がメモリ３へ書き込み処理も読み出し処理も行っていない状態で、書き込み命令または読み出し命令がなされた場合について説明した。実施の形態２では、メモリアクセス装置２がメモリ３への書き込み処理を実行中に、ＣＰＵ１が重ねて書き込み命令または読み出し命令をメモリアクセス装置２に対して行った場合について説明する。例えばＣＰＵ１がメモリ３への書き込み命令をメモリアクセス装置２へ送り、メモリアクセス装置２から書き込み完了信号２ａを受け取った後、次処理で再び同じメモリ３へのアクセスが生じた場合がこれにあたる。なお図面については実施の形態１と同様に図１及び図２を使用する。また動作も、実施の形態１と同様に２つの場合に分けて説明する。【００４０】
第１の場合として、初期状態でないとき、すなわちメモリアクセス装置２がメモリ３へ第１の書き込み処理を実行している状態で、ＣＰＵ１からメモリアクセス装置２に対して書き込み命令が重ねてなされた場合について説明する。実施の形態１と同様に、ＣＰＵ１は第２の書き込み命令である書き込み信号１ｃをメモリアクセス装置２に送るとともに、第２の書き込みアドレスである新たな書き込みアドレス及び第２の書き込みデータである新たな書き込みデータをメモリアクセス装置２に出力する。書き込み信号１ｃはバス制御部２１の書き込み部２１１に渡され、書き込み部２１１はシングルバッファ２２に書き込みアドレス及び書き込みデータが蓄積されているか否かをバッファ状態信号２２ｃに基づき判断する。【００４１】
ここでメモリアクセス装置２はメモリ３への第１の書き込み処理を実行中であるため、シングルバッファ２２には第１の書き込みアドレスである以前の書き込みアドレス及び第１の書き込みデータである以前の書き込みデータがまだ蓄積されたままである。すると例えばシングルバッファ２２としてファイフォを適用した場合、そのフルフラグはＨ論理のままである。従って書き込み部２１１は、書き込みアドレス及び書き込みデータがシングルバッファ２２に蓄積されていると判断し、実行中であるメモリ３への第１の書き込み処理を継続する。一方、書き込み部２１１はシングルバッファ２２に対してＣＰＵ１から送られた新たな書き込みアドレス及び新たな書き込みデータを蓄積する命令を行わず、またＣＰＵ１へ書き込み完了信号２ａを送らない。この場合、ＣＰＵ１は書き込み完了信号２ａを受け取らないためメモリ３への書き込みが完了したと判断できない。すなわちＣＰＵ１は次処理へ移行することができず、そのまま新たな書き込みアドレス及び新たな書き込みデータをメモリアクセス装置２へ出力し続ける。【００４２】
メモリアクセス装置２がメモリ３への第１の書き込み処理を継続した結果、この処理が完了すると、実施の形態１で述べたようにシングルバッファ２２に蓄積されていた以前の書き込みアドレス及び書き込みデータがなくなり、フルフラグはＬ論理に変化する。すると書き込み部２１１は以前の書き込み処理は完了していると判断し、ＣＰＵ１から送られた新たな書き込みアドレス及び新たな書き込みデータを蓄積する命令をシングルバッファ２２へ送る。この蓄積命令に基づき、シングルバッファ２２は新たな書き込みアドレス及び新たな書き込みデータを蓄積する。シングルバッファがファイフォの場合、書き込みアドレスと書き込みデータが蓄積されるのでフルフラグは再びＨ論理に変化する。書き込み部２１１は上述のように、メモリ３への第２の書き込み処理の完了を待たずにＣＰＵ１へ書き込み完了信号２ａを送り、ＣＰＵ１はメモリ３への書き込みが完了したと判断するので次処理に移行することができる。なお新たな書き込みアドレスへのデータの書き込み処理については実施の形態１と同じであるため、以後の処理についての説明は省略する。【００４３】
図５に、以上で説明した実施の形態２の第１の場合におけるメモリアクセス装置２の動作を表すフローチャートを示す。なお図３と同一のフローについては、同一の符号を付して説明を省略し、異なるフローであるステップＳ５１ないしステップＳ５３について説明する。まずステップＳ５１で書き込み信号１ｃが書き込み部２１１へ入力されるが、初期状態ではないため、フルフラグはＬ論理とは限らない。次に書き込み部２１１ではステップＳ５２でフルフラグの論理を判別する。そしてフルフラグがＬ論理であれば実施の形態１と同様の動作となるが、Ｈ論理であれば、フルフラグがＬ論理となるまで判別処理を繰り返す。一方、フルフラグがＨ論理の場合、以前の書き込み処理はステップＳ３３以降のフローを継続して行い、ステップＳ３ａで書き込み処理を実行する。実施の形態２では、ステップＳ３ａで書き込み処理を実行後、次処理があるか否かをステップＳ５２で判別し、次処理があればステップＳ５２まで戻るものとする。このときステップＳ３５でフルフラグはＬ論理となっているため、ステップＳ５２で判別処理を繰り返していた書き込み命令についても、以前の書き込み処理に引き続いてステップＳ３３以降の書き込み処理を実行することとなる。【００４４】
次に第２の場合として、初期状態でないとき、すなわちメモリアクセス装置２がメモリ３へ書き込み処理を実行している状態で、ＣＰＵ１からメモリアクセス装置２に対して読み出し命令がなされた場合について説明する。実施の形態１と同様に、ＣＰＵ１は第２の読み出し命令である読み出し信号１ｄをメモリアクセス装置２に送るとともに、第２の読み出しアドレスである読み出しアドレスをメモリアクセス装置２に出力する。読み出し信号１ｄはバス制御部２１の読み出し部２１２に渡され、読み出し部２１２はシングルバッファ２２に書き込みアドレス及び書き込みデータが蓄積されているか否かをバッファ状態信号２２ｃに基づき判断する。【００４５】
ここでメモリアクセス装置２はメモリ３への第１の書き込み処理を実行中であるため、シングルバッファ２２には第１の書き込みアドレスである以前の書き込みアドレス及び第１の書き込みデータである以前の書き込みデータがまだ蓄積されたままである。すると例えばシングルバッファ２２としてファイフォを適用した場合、そのエンプティフラグはＬ論理のままである。従って読み出し部２１２は、書き込みアドレス及び書き込みデータがシングルバッファ２２に蓄積されていると判断し、実行中であるメモリ３への第１の書き込み処理を継続する。一方、読み出し部２１２はＣＰＵ１が出力する第２の読み出しアドレスを受け取らず、またＣＰＵ１へ読み出し完了信号２ｂを送らない。この場合、ＣＰＵ１は読み出し完了信号２ｂを受け取らないためメモリ３からの読み出し処理が完了したと判断できない。すなわちＣＰＵ１は次処理へ移行することができず、そのまま読み出しアドレスをメモリアクセス装置２へ出力し続ける。【００４６】
メモリアクセス装置２がメモリ３への第１の書き込み処理を継続した結果、この処理が完了すると、実施の形態１で述べたようにシングルバッファ２２に蓄積されていた以前の書き込みアドレス及び書き込みデータがなくなり、エンプティフラグはＨ論理に変化する。すると読み出し部２１２は以前の書き込み処理は完了していると判断し、ＣＰＵ１から送られた読み出しアドレスを受け取る。なお以降の読み出し処理については実施の形態１と同様であるため、説明は省略する。【００４７】
図６に、以上で説明した実施の形態２の第２の場合におけるメモリアクセス装置２の動作を表すフローチャートを示す。なお図４と同一のフローについては、同一の符号を付して説明を省略し、異なるフローであるステップＳ６１ないしステップＳ６４について説明する。まずステップＳ６１で読み出し信号１ｄが読み出し部２１２へ入力されるが、初期状態ではないため、エンプティフラグはＨ論理とは限らない。次に読み出し部２１２ではステップＳ６２でエンプティフラグの論理を判別する。そしてエンプティフラグがＨ論理であれば実施の形態１と同様の動作となるが、Ｌ論理であれば、ステップＳ６３で全ての書き込み処理が完了したか否かを判別する。書き込み処理の継続中は、シングルバッファ２２に書き込みアドレス及び書き込みデータが蓄積されているので、エンプティフラグはＬ論理のままであり、ステップＳ６３での判別処理を繰り返す。そして全ての書き込み処理が完了すれば、ステップＳ６４でエンプティフラグがＨ論理となり、ステップＳ６２まで戻る。このときエンプティフラグはＨ論理となっているため、読み出し命令について、ステップＳ４３以降の読み出し処理を実行することとなる。【００４８】
以上のように、実施の形態２に係るメモリアクセス装置２は、ＣＰＵ１がメモリアクセス装置２から書き込み完了信号２ａを受信した後、重ねてメモリ３への第２の書き込み命令が発生した場合、メモリアクセス装置２は実行中の第１の書き込み処理の完了後に第２の書き込み処理を開始するとともにＣＰＵ１に対し書き込み完了信号２ａを送る。このように、ＣＰＵ１からの第２の書き込み命令が実行されるのは、必ずメモリアクセス装置２が第１の書き込み処理を完了した後となるため、書き込み処理が消失することがない。【００４９】
さらに、ＣＰＵ１がメモリアクセス装置２から書き込み完了信号２ａを受信した後、第２の読み出し命令が発生した場合、メモリアクセス装置２は実行中の第１の書き込み処理の完了後に第２の読み出し処理を開始する。すなわち、ＣＰＵ１による第２の読み出し処理が行われるのは必ずメモリアクセス装置２が第１の書き込み処理を完了した後となるため、複雑な制御を行わなくてもメモリ３上のデータの整合性を保つことができる。【００５０】
なお、上記実施の形態２においてはメモリアクセス装置２がメモリ３への書き込み処理を実行中に、重ねてＣＰＵ１から書き込み命令または読み出し命令があった場合について説明した。これに対してメモリ３からの読み出し処理を実行している場合には、ＣＰＵ１がメモリ３からデータを読み出さなければ読み出し完了信号２ｂがＣＰＵ１へ出力されないため、重ねてＣＰＵ１から書き込み命令または読み出し命令がなされることはない。【００５１】
実施の形態３．
実施の形態２では、メモリアクセス装置２がメモリ３への第１の書き込み処理を実行中に、ＣＰＵ１が重ねて書き込み命令または読み出し命令を行った場合に、メモリアクセス装置２は実行中の第１の書き込み処理を完了した後に新たな書き込み処理または読み出し処理を開始するものとした。すなわち新たな書き込み命令がなされた場合は、第１の書き込み処理が完了して新たな書き込みアドレス及び新たな書き込みデータが書き込み部２１１に渡されるまでは、ＣＰＵ１は新たな書き込み命令に対応する書き込み完了信号２ａを受け取らない。したがってＣＰＵ１が次処理に移行するまでに、無用な待ち時間が発生する。実施の形態３では、当該無用な待ち時間を短縮するメモリアクセス装置２について説明する。【００５２】
実施の形態３では、メモリアクセス装置２内のバッファを、有限長の多段バッファ２５とする。図７は実施の形態３におけるメモリアクセス装置２のブロック図である。図２におけるシングルバッファ２２を、図７では多段バッファ２５に置き換えている点で相違する。また、メモリアクセス装置２を適用した機器の一部を示すブロック図としては図１を兼用する。次にメモリアクセス装置２の動作を説明する。初期状態での動作は実施の形態１と同様であるため説明を省略し、初期状態でない場合の動作を実施の形態２と同様に２つの場合に分けて説明する。第１の場合として、メモリアクセス装置２がメモリ３へ書き込み処理を実行している状態で、ＣＰＵ１からメモリアクセス装置２に対して書き込み命令が重ねてなされた場合について説明する。実施の形態２と同様に、ＣＰＵ１は書き込み信号１ｃをメモリアクセス装置２に送るとともに、新たな書き込みアドレス及び新たな書き込みデータをメモリアクセス装置２に出力する。【００５３】
図７において書き込み信号１ｃがバス制御部２１の書き込み部２１１に渡されると、書き込み部２１１は多段バッファ２５に蓄積された書き込みアドレス及び書き込みデータが一杯であるか否かを、バッファ状態信号２５ｃに基づき判断する。多段バッファ２５は書き込みアドレスと書き込みデータをそれぞれ蓄積容量であるＮ個ずつ保持することができ、例えばＮ段（Ｎ：２以上の整数）のファイフォで構成される。ファイフォを適用した場合、実施の形態２と同様にバッファ状態信号２５ｃとしてフルフラグを用いることができる。すなわちフルフラグがＬ論理であればアドレス及びデータの蓄積量がＮ個未満であり一杯ではないが、フルフラグがＨ論理であればアドレス及びデータの蓄積量がＮ個に達しており一杯であると判断できる。実施の形態１または２では、書き込みアドレス及び書き込みデータを１つずつ蓄積するとフルフラグがＨ論理に変化するが、実施の形態３では書き込みアドレス及び書き込みデータをＮ個ずつ蓄積するまではフルフラグがＬ論理を保つ点で相違する。【００５４】
ここでメモリアクセス装置２はメモリ３への以前の書き込み処理を実行中であり、多段バッファ２５には以前の書き込みアドレス及び書き込みデータがまだ蓄積されている。すると例えば多段バッファ２５としてＮ段のファイフォを適用した場合、書き込みアドレス及び書き込みデータの蓄積量がＮ個未満であればフルフラグはＬ論理であるが、書き込みアドレス及び書き込みデータの蓄積量がＮ個に達していれば、フルフラグはＨ論理である。実施の形態３では、もしフルフラグがＬ論理であれば、多段バッファ２５に新たな書き込みアドレス及び書き込みデータを蓄積することができると判断する。しかし、もしフルフラグがＨ論理であれば、多段バッファ２５に新たな書き込みアドレス及び書き込みデータを蓄積することはできないと判断する。【００５５】
従ってフルフラグがＬ論理であれば、書き込み部２１１は新たな書き込みアドレス及び書き込みデータを多段バッファ２５に蓄積する蓄積命令を行う。この蓄積により多段バッファ２５の蓄積量がＮ個に達すればフルフラグはＨ論理に変化するが、Ｎ個未満のままであればフルフラグはＬ論理のままである。そして書き込み部２１１は新たな書き込みアドレス及び書き込みデータによるメモリ３への書き込み処理の完了を待たずに、ＣＰＵ１へ書き込み完了信号２ａを送り、ＣＰＵ１はメモリ３への書き込みが完了したと判断するので、次処理に移行することができる。【００５６】
一方フルフラグがＨ論理であれば、書き込み部２１１は実行中の書き込み処理を継続するものの、新たな書き込みアドレス及び書き込みデータを多段バッファ２５に蓄積せず、またＣＰＵ１へ書き込み完了信号２ａを送らない。ＣＰＵ１は書き込み完了信号２ａを受け取らないためメモリ３への書き込み処理が完了したと判断できない。すなわちＣＰＵ１は次処理へ移行することができず、そのまま新たな書き込みアドレス及び書き込みデータをメモリアクセス装置２へ出力し続ける。そしてメモリアクセス装置２がメモリ３への書き込み処理を１個完了すると、多段バッファ２５に蓄積された書き込みアドレス及び書き込みデータの数がＮ−１個になる。すなわち多段バッファ２５の蓄積量が一杯ではなくなるため、フルフラグはＬ論理に変化する。従って書き込み部２１１は、書き込みアドレス及び書き込みデータを蓄積することができると判断し、多段バッファ２５に新たな書き込みアドレス及び書き込みデータを蓄積する蓄積命令を行う。すると多段バッファ２５の蓄積量は再びＮ個に達して一杯になるため、フルフラグはＨ論理に変化する。書き込み部２１１は上述のように、メモリ３への書き込み処理の完了を待たずにＣＰＵ１へ書き込み完了信号２ａを送り、ＣＰＵ１はメモリ３への書き込みが完了したと判断するので次処理に移行することができる。【００５７】
メモリアクセス装置２は、多段バッファ２５に蓄積された書き込みアドレス及び書き込みデータに関して、ＣＰＵ１から受け取った順にメモリ３へ書き込み処理を実行する。そして蓄積量が０個になるまで、すなわち全ての書き込み処理を完了するまで継続する。なお、メモリ３への書き込み処理については実施の形態２と同様であるため説明を省略する。【００５８】
図８に、以上で説明した実施の形態３の第１の場合におけるメモリアクセス装置２の動作を表すフローチャートを示す。なお図３及び図５と同一のフローについては、同一の符号を付して説明を省略し、異なるフローであるステップＳ８１ないしステップＳ８６について説明する。図８においてステップＳ５１で書き込み信号１ｃが入力されると、ステップＳ５２でフルフラグの論理を判別した結果、フルフラグがＬ論理であれば、ステップＳ８１で多段バッファ２５に書き込みアドレス及び書き込みデータが蓄積される。次に、この蓄積により多段バッファ２５が一杯になったか否かをステップＳ８２で判断する。もし一杯であればステップＳ８３でフルフラグがＨ論理に変化した後、書き込み処理を行うが、一杯にならなければ、フルフラグがＬ論理のまま書き込み処理を行うとともにステップＳ５２に戻る。ステップＳ５２まで戻るのは、次処理でＣＰＵ１から書き込み命令があった場合、書き込みアドレス及び書き込みデータを蓄積できるようにするためである。図５では、このフローが存在しないが、これは実施の形態２ではシングルバッファ２２のフルフラグが必ずＨ論理に変化するため不要だからである。【００５９】
また図８において、ステップＳ８４で多段バッファ２５から書き込みアドレスと書き込みデータを出力するので、多段バッファ２５は一杯ではなくなる。そこで、フルフラグの論理をステップＳ８５で判断し、Ｈ論理であればステップＳ８６でＬ論理に変化して処理を継続することとしている。【００６０】
第２の場合として、メモリアクセス装置２がメモリ３へ書き込み処理を実行している状態で、ＣＰＵ１からメモリアクセス装置２に対して読み出し命令が重ねてなされた場合について説明する。実施の形態２と同様に、ＣＰＵ１は読み出し信号１ｄをメモリアクセス装置２に送るとともに、読み出しアドレスをメモリアクセス装置２に出力する。【００６１】
図７において読み出し信号１ｄがバス制御部２１の読み出し部２１２に渡されると、読み出し部２１２は多段バッファ２５に書き込みアドレス及び書き込みデータが１つでも蓄積されているか否かを、バッファ状態信号２５ｃに基づき判断する。上述のように多段バッファ２５をＮ段のファイフォとすれば、読み出し処理の場合はバッファ状態信号２５ｃとしてエンプティフラグを用いることができる。すなわちエンプティフラグがＬ論理であれば書き込みアドレス及び書き込みデータが１個以上蓄積されているが、エンプティフラグがＨであれば書き込みアドレス及び書き込みデータが１個も蓄積されていないと判断できる。【００６２】
ここでメモリアクセス装置２はメモリ３への以前の書き込み処理を実行中であり、多段バッファ２５には以前の書き込みアドレス及び書き込みデータがまだ蓄積されている。すると例えば多段バッファ２５としてＮ段のファイフォを適用した場合、エンプティフラグは必ずＬ論理となる。するとバス制御部２１１の書き込み部２１１はメモリ３への書き込み処理を継続するものの、読み出し部２１２は読み出しアドレスをＣＰＵ１から受け取らず、またＣＰＵ１へ読み出し完了信号２ｂを送らない。この場合、ＣＰＵ１は読み出し完了信号２ｂを受け取らないためメモリ３からの読み出し処理が完了したと判断できない。すなわちＣＰＵ１は次処理へ移行することができず、そのまま読み出しアドレスをメモリアクセス装置２へ出力し続ける。【００６３】
そしてメモリアクセス装置２がメモリ３への書き込み処理を全て完了すると、多段バッファ２５に蓄積されたアドレス及びデータの数が０個になる。すなわち多段バッファ２５の蓄積量が０となるため、エンプティフラグはＨ論理に変化する。従って読み出し部２１２は、読み出し処理が可能と判断し、ＣＰＵ１から読み出しアドレスを受け取る。なお、メモリアクセス装置２が読み出しアドレスを受け取った以降の動作は実施の形態２と同様なため説明を省略する。また、実施の形態３における第２の場合のメモリアクセス装置２の動作を表すフローは、エンプティフラグがＨ論理になった場合のみ読み出し処理を行うという点で実施の形態２と同じであり、図６と同一となるため、フローチャートを省略する。【００６４】
以上のように、実施の形態３では、メモリアクセス装置２内のバッファを多段バッファ２５とすることにより、メモリアクセス装置２がメモリ３への書き込み処理を実行中に、ＣＰＵ１が重ねて書き込み命令を行った場合であっても、以前の書き込み処理が完了するまで待つことなく書き込みアドレス及び書き込みデータをメモリアクセス装置２へ渡すことができるので、ＣＰＵ１が待機状態に陥る無用な待ち時間を減少させることができるという効果がある。【００６５】
実施の形態４．
実施の形態３では、多段バッファ２５に蓄積された書き込みアドレスの連続性を考慮せず、ＣＰＵ１から受け取った順に、常に１つずつメモリ３へ書き込み処理を行うものとしたが、必ずしも１つずつ処理を行う必要はない。実施の形態４では、多段バッファ２５に蓄積された書き込みアドレスが、直前の書き込み処理においてアクセスするアドレスと連続していた場合、メモリアクセス装置２がメモリ３に対してページアクセスやバーストアクセス等の高速アクセスモードを使用して書き込み処理を行うものとする。なお実施の形態４では、メモリ３は高速アクセスモードに対応可能なメモリであるとして説明する。【００６６】
図９は実施の形態４におけるメモリアクセス装置２のブロック図である。図７との主な相違は、多段バッファ２５に蓄積された書き込みアドレスを監視する監視手段であるアドレス監視部２６を備える点である。また、メモリアクセス装置２を適用した機器の一部を示すブロック図としては図１を兼用する。次にメモリアクセス装置２の動作について説明する。初期状態において書き込み命令または読み出し命令があった場合は実施の形態１と同様の動作であるため説明を省略する。次に初期状態でないとき、すなわちメモリアクセス装置２がメモリ３へ書き込み処理を実行している場合に、ＣＰＵ１からメモリアクセス装置２に対して書き込み命令が重ねてなされた場合について説明する。実施の形態３と同様に、ＣＰＵ１は書き込み信号１ｃをメモリアクセス装置２に送るとともに、新たな書き込みアドレス及び書き込みデータをメモリアクセス装置２に出力する。書き込み信号１ｃはバス制御部２１の書き込み部２１２に渡され、書き込み部２１２は多段バッファ２５に蓄積された書き込みアドレス及び書き込みデータが一杯であるか否かを、バッファ状態信号２５ｃに基づき判断する。【００６７】
実施の形態３と同様に、バッファ状態信号２５ｃのフルフラグがＬ論理であれば、書き込み部２１２は新たな書き込みアドレス及び書き込みデータを多段バッファ２５に蓄積する。一方フルフラグがＨ論理であれば、バス制御部２１は実行中であるメモリ３への書き込み処理を継続し、処理を完了すると、多段バッファ２５に新たな書き込みアドレス及び書き込みデータを蓄積する。【００６８】
実施の形態４では、アドレス監視部２６が多段バッファ２５に蓄積された複数の書き込みアドレスを監視する。多段バッファ２５に蓄積された書き込みアドレスとアドレス監視部２６との関係の一例を図１０に示す。図１０では、Ｎ個の記憶素子１０１ないし１０ＮにＮ個の書き込みアドレスが蓄積され、別のＮ個の記憶素子１１１ないし１１ＮにＮ個の書き込みアドレスに対応するＮ個の書き込みデータが蓄積される。なお、記憶素子１０１及び１０２の２個は書き込みアドレスが連続しているものとする。アドレス監視部２６は記憶素子１０１ないし１０Ｎに蓄積された書き込みアドレスを監視し、記憶素子１０１及び１０２の書き込みアドレスが連続していると判断すると、これらの書き込みアドレスに対する書き込み処理が行われるタイミングで、書き込み部２１１にモード指示信号２６ａを出力する。【００６９】
書き込み部２１１は、アドレス監視部２６からモード指示信号２６ａを受け取ると、制御信号作成部２４にモード切替指示信号２１ｈを出力する。制御信号作成部２４はモード切替指示信号２１ｈを受け取ると、チップセレクトやリードイネーブル等、通常の書き込み処理に必要な信号の他、メモリ３の高速アクセスモードに必要な信号を書き込み制御信号２４ａとして作成し、インタフェース部２３に送る。書き込み部２１１は高速アクセスモードにおける書き込み制御に合致するタイミングで、連続する２つの書き込みアドレス及び対応する２つの書き込みデータを出力する。メモリ３はメモリ制御信号２ｅとして送られた書き込み制御信号２４ａに基づき、与えられた２つの書き込みアドレスにそれぞれの書き込みデータを高速アクセスモードで記憶する。【００７０】
なお、メモリアクセス装置２がメモリ３へ書き込み処理を実行している場合に、ＣＰＵ１からメモリアクセス装置２に対して読み出し命令がなされた場合については、実施の形態３と同様の動作であるため説明を省略する。【００７１】
以上のように実施の形態４によれば、アドレス監視部２６が多段バッファ２５に蓄積された書き込みアドレスを監視し、アドレスの連続した書き込み処理を行う場合には書き込み部２１１にモード指示信号２６ａを出力して、メモリ３の高速アクセスモードを使用して書き込み処理を行うものとした。高速アクセスモードの使用によりメモリアクセス装置２によるメモリ３への書き込み処理に要する時間を減少することができるため、ＣＰＵ１がメモリアクセス装置２による書き込み処理の完了を待つ時間を総合的に減少させることができる。【００７２】
なお、上記実施の形態４では、アドレス監視部２６が記憶素子１０１及び１０２における書き込みアドレスの連続のみを判断したが、連続部分が複数個存在する場合にこれを判断するものとしてもよい。例えば図１０の記憶素子１０Ｋ及び１０Ｋ＋１についても書き込みアドレスが連続していれば、これらの書き込みアドレスに対する書き込み処理時にも高速アクセスモードを使用するものとしてもよい。【００７３】
なお、上記実施の形態４では、アドレス監視部２６が高速アクセスモードの適用を判断するための書き込みアドレスの連続個数を２個としたが、これは必ずしも２個とは限らない。例えば記憶素子１０１ないし１０３の３個の書き込みアドレスが連続した場合に高速アクセスモードを適用するものとしてもよく、一般に任意のＭ個（Ｍ：２以上の整数）の書き込みアドレスが連続した場合に高速アクセスモードを適用するとしてもよい。Ｍが大きくなるほど、アドレス１個ずつを処理する場合に比べて書き込み処理に要する時間を短くすることができるため、高速アクセスモードを使用する効果が大きくなる。【００７４】
なお、上記実施の形態４では、アドレス監視部２６が高速アクセスモードの適用を判断するために書き込みアドレスの連続性を基準としたが、必ずしも書き込みアドレスの連続性を判断の基準とする必要はない。例えば連続している書き込みアドレスが不連続となる場合に、それまで連続した書き込みアドレスについて高速アクセスモードを適用するものとしてもよい。すなわち記憶素子１０Ｋないし１０２までの書き込みアドレスが連続している場合に、記憶素子１０１で連続性が途切れたとすると、記憶素子１０Ｋないし１０２までの書き込みアドレスに対して高速アクセスモードを使用してもよい。この場合、書き込みアドレスの連続性を基準とする方法と比べて連続する個数をカウントする必要がなく、また連続数が多くても常に高速アクセスモードの適用が期待できる。【００７５】
実施の形態５．
実施の形態３では、メモリアクセス装置２がメモリ３への書き込み処理を実行中に、ＣＰＵ１が読み出し命令を行った場合には、蓄積された書き込み処理が全て完了してから読み出し処理を行うこととした。このため多段バッファ２５の蓄積容量が大きく、多くの書き込みアドレス及び書き込みデータが蓄積されている場合は、読み出し処理の実行が後回しにされてＣＰＵ１には長い待ち時間が発生する。実施の形態５では当該長い待ち時間を短縮するメモリアクセス装置２について説明する。【００７６】
実施の形態５では、多段バッファ２５内に読み出しアドレスと同一の書き込みアドレスが存在する場合に、読み出し処理を割り込んで実行することで、読み出し処理の高速化を図る。図１１は、実施の形態５におけるメモリアクセス装置２のブロック図である。また、メモリアクセス装置２を適用した機器の一部を示すブロック図としては図１を兼用する。次にメモリアクセス装置２の動作を説明する。初期状態での動作及び初期状態以外の第１の場合の動作は実施の形態３と同様であるため説明を省略する。実施の形態５では初期状態以外の第２の場合、すなわちメモリアクセス装置２がメモリ３へ書き込み処理を実行している状態で、ＣＰＵ１からメモリアクセス装置２に対して読み出し命令が重ねてなされた場合について説明する。【００７７】
図１１において読み出し信号１ｄがバス制御部２１の読み出し部２１２に渡されると、読み出し部２１２は多段バッファ２５に書き込みアドレス及び書き込みデータが１つでも蓄積されているか否かを、バッファ状態信号２５ｃに基づき判断する。メモリアクセス装置２はメモリ３への以前の書き込み処理を実行中であり、多段バッファ２５には以前の書き込みアドレス及び書き込みデータがまだ蓄積されているため、エンプティフラグは必ずＬ論理となる。【００７８】
エンプティフラグがＬ論理の場合、実施の形態５における読み出し部２１２はＣＰＵ１が出力する読み出しアドレスを受け取るとともに、第２バッファ制御信号２１ｉによりアドレス走査命令を多段バッファ２５に送る。多段バッファ２５はアドレス走査命令を受け取ると、蓄積している書き込みアドレスをバッファ状態信号２５ｃにより逐次的に読み出し部２１２へ出力する。読み出し部２１２は多段バッファ２５に蓄積されている書き込みアドレスと、ＣＰＵ１から受け取った読み出しアドレスを比較する。そして比較した結果、読み出しアドレスと一致する書き込みアドレスが多段バッファ２５に存在しなかった場合は、読み出し部２１２は実施の形態３と同様に、全ての書き込み処理が完了するまで読み出し処理を行わない。【００７９】
一方アドレスを比較した結果、読み出しアドレスと一致する書き込みアドレスが多段バッファ２５に存在した場合は、読み出し部２１２は第２バッファ制御信号２１ｉにより該当する書き込みアドレスに対応する書き込みデータを出力するデータ出力命令を行う。多段バッファ２５はデータ出力命令を受けると、ＣＰＵデータバス１ｂに、該当する書き込みデータを読み出しデータとして出力する。また同時に、読み出し部２１２は読み出し完了信号２ｂをＣＰＵ１に出力する。ＣＰＵ１は多段バッファ２５が出力する読み出しデータを受け取るとともに読み出し完了信号２ｂを受け取ると、読み出し処理が完了したと判断して次処理に移行することができる。【００８０】
なお多段バッファ２５からＣＰＵデータバス１ｂへの出力は、書き込み部２１１に対する動作とは反対方向のデータの流れであり、書き込み処理とは独立して行われるものとする。【００８１】
実施の形態６．
実施の形態１ないし５では、ＣＰＵ１のみからメモリ３へのアクセスがなされる場合について説明した。実施の形態６では、ＣＰＵ１以外のアクセス元のデバイスとして、別のバスマスタが存在する場合について説明する。この場合メモリ３は、ＣＰＵ１及び当該別のバスマスタから共通にアクセスされ得る。そして同時にメモリ３へのアクセス命令が発生する可能性がある。しかしメモリ３へ同時に複数のアクセスを行うと、アドレスが衝突してしまう等により正常なメモリアクセスを確保することが難しい。実施の形態６では、各アクセス元が調停器を経由してメモリアクセス装置２にアクセスするものとする。【００８２】
図１２は実施の形態６におけるメモリアクセス装置２を適用したメモリアクセス機構を示すブロック図であり、実施の形態１ないし５における図１に相当する。ＣＰＵ１の他にメモリ３へのアクセス命令を発生するバスマスタ４がある。バスマスタ４はバスマスタアドレスバス４ａ及びバスマスタデータバス４ｂを介して調停器５と接続されるとともに、書き込み信号４ｃ及び読み出し信号４ｄを調停器５へ送る。調停器５は調停器アドレスバス５ａ及び調停器データバス５ｂを介してメモリアクセス装置２と接続される。また調停器５は書き込み信号５ｃまたは読み出し信号５ｄをメモリアクセス装置２へ送る一方、書き込み完了信号５ｅもしくは読み出し完了信号５ｆをＣＰＵ１へ送るか、または書き込み完了信号５ｇもしくは読み出し完了信号５ｈをバスマスタ４へ送る。【００８３】
次に動作について説明する。ＣＰＵ１またはバスマスタ４のいずれか一方のアクセス元のみからメモリ３へのアクセスが発生した場合、調停器５は当該アクセスが発生したアクセス元からのバスを調停器アドレスバス５ａ及び調停器データバス５ｂと接続する。すなわち、例えばＣＰＵ１のみからアクセスが発生した場合、書き込み信号１ｃまたは読み出し信号１ｄが調停器５に送られる。すると調停器５はＣＰＵアドレスバス１ａ及びＣＰＵデータバス１ｂを、それぞれ調停器アドレスバス５ａ及び調停器データバス５ｂに接続し、書き込み信号５ｃまたは読み出し信号５ｄをメモリアクセス装置２へ送る。そして調停器５がメモリアクセス装置２から書き込み完了信号２ａまたは読み出し完了信号２ｂを受け取ると、書き込み完了信号５ｅまたは読み出し完了信号５ｆをＣＰＵ１へ送る。【００８４】
同様に、バスマスタ４のみからアクセスが発生した場合、書き込み信号４ｃまたは読み出し信号４ｄが調停器５に送られる。すると調停器５はバスマスタアドレスバス４ａ及びバスマスタデータバス４ｂを、それぞれ調停器アドレスバス５ａ及び調停器データバス５ｂに接続し、書き込み信号５ｃまたは読み出し信号５ｄをメモリアクセス装置２へ送る。そして調停器５がメモリアクセス装置２から書き込み完了信号２ａまたは読み出し完了信号２ｂを受け取ると、書き込み完了信号５ｇまたは読み出し完了信号５ｈをバスマスタ４へ送る。【００８５】
このように調停器５を設けたことで、ＣＰＵ１またはバスマスタ４のいずれかのアクセス元からアクセスがあった場合には、調停器５及びメモリアクセス装置２を介してメモリ３へのアクセスを確保することができる。なお、以降の処理は実施の形態３及び実施の形態４と同様であるため説明を省略する。【００８６】
次に、ＣＰＵ１及びバスマスタ４の双方のアクセス元から同時にアクセスが発生した場合について説明する。この場合、調停器５はＣＰＵ１からのアクセスのみを許可して上述のようにメモリアクセス装置２との接続を行う。一方、バスマスタ４からのアクセスは許可しない。すなわち書き込み完了信号５ｇまたは読み出し完了信号５ｈはバスマスタ４へ送られず、バスマスタ４は処理を待機する。【００８７】
ＣＰＵ１からのアクセスが完了した場合、メモリアクセス装置２は書き込み完了信号２ａまたは読み出し完了信号２ｂを出力するので、調停器５はこれを受け取るとＣＰＵ１からのアクセスが完了したと判断し、書き込み完了信号５ｅまたは読み出し完了信号５ｆをＣＰＵ１へ送る。そしてＣＰＵアドレスバス１ａ及びＣＰＵデータバス１ｂと調停器アドレスバス５ａ及び調停器データバス５ｂとの接続を切り、引き続きバスマスタ４からのアクセスを許可する。すなわち上述と同様にバスマスタ４からのアクセスを許可してメモリアクセス装置２との接続を行う。【００８８】
以上のように、調停器５が複数のアクセス元からのアクセスを制御することで、メモリアクセス装置２へのアクセス元を常に１つだけにすることができる。従って、ＣＰＵ１以外のアクセス元としてバスマスタ４が存在する場合であっても、メモリ３へ同時に複数のアクセスがなされてアドレスが衝突する等の不都合は生じず、正常なメモリアクセスを確保することができるという効果を奏する。【００８９】
なお、上記実施の形態６では、ＣＰＵ１以外のバスマスタ４を１個備えるものとしたが、これは２個以上でもよい。また、上記実施の形態６では、調停器５はＣＰＵ１とバスマスタ４から同時にアクセスが発生した場合、ＣＰＵ１からのアクセスを優先してメモリアクセス装置２へ接続するものとして説明したが、これは必ずしも必要ではない。例えばバスマスタ４からのアクセスを優先してメモリアクセス装置２へ接続するものとしてもよい。
【産業上の利用可能性】
【００９０】
この発明は携帯電話やパソコン、その他通信、制御などの分野においてＣＰＵ等のようにメモリへの書き込み及び読み出しを行うデバイスを用いて制御を行う機器に利用できる。
【図１】
2006046272.tif 000002
【図２】
2006046272.tif 000003
【図３】
2006046272.tif 000004
【図４】
2006046272.tif 000005
【図５】
2006046272.tif 000006
【図６】
2006046272.tif 000007
【図７】
2006046272.tif 000008
【図８】
2006046272.tif 000009
【図９】
2006046272.tif 000010
【図１０】
2006046272.tif 000011
【図１１】
2006046272.tif 000012
【図１２】
2006046272.tif 000013
【国際調査報告】
2006046272.tif 000014
2006046272.tif 000015
2006046272.tif 000016
2006046272.tif 000017