(57)【要約】【課題】  互いに非同期に動作する複数のＣＰＵからメモリアクセスを行う装置では、メモリと非同期に動作するＣＰＵとメモリの間のメモリアクセス信号の伝達を行うにあたり、伝達先のクロックに同期化させる制御が必要となるため、メモリアクセス時間が増加してしまう。【解決手段】  メモリ１４０と、互いに非同期に動作するＣＰＵ１、２と、ＣＰＵ１と同期に動作するメモリＩ／Ｆ１３０と、ＣＰＵ２と同期に動作するメモリＩ／Ｆ２３０と、ＣＰＵ１、２からアクセス可能で、ＣＰＵ１とＣＰＵ２のいずれによるメモリアクセスかを示す値を保持する切り替えレジスタ３０４と、切り替えレジスタ３０４の値に従ってメモリＩ／Ｆ１３０とメモリＩ／Ｆ１３０のメモリアクセス信号のうち一方を選択するセレクタ３１０と、切り替えレジスタ３０４の値に従ってクロックＣＬＫ１０１，１０２からメモリ１４０のクロックを選択するセレクタ３２０とを備える。【選択図】  図１
2005157929.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、
第１のクロックに同期して動作する第１の論理回路と、
前記第１のクロックと非同期の第２のクロックに同期して動作する第２の論理回路と、
前記第１の論理回路と前記第２の論理回路からアクセス可能で、前記第１の論理回路によるメモリアクセスと前記第２の論理回路によるメモリアクセスとのうちいずれかのメモリアクセスを示す値を保持する切り替えレジスタと、
前記切り替えレジスタの値が前記第１の論理回路によるメモリアクセスを示すとき前記第１の論理回路のメモリアクセス信号を選択し、前記切り替えレジスタの値が前記第２の論理回路によるメモリアクセスを示すとき前記第２の論理回路のメモリアクセス信号を選択し、前記メモリへ出力する第１のセレクタと、
前記第１のクロックと前記第２のクロックを入力し、前記切り替えレジスタの値が前記第１の論理回路によるメモリアクセスを示すとき前記第１のクロックを選択し、前記切り替えレジスタの値が前記第２の論理回路によるメモリアクセスを示すとき前記第２のクロックを選択し、前記メモリのクロックとして出力する第２のセレクタとを備えた半導体装置。
【請求項２】
メモリと、
第１のクロックに同期して動作する第１のＣＰＵと、
前記第１のクロックと非同期の第２のクロックに同期して動作する第２のＣＰＵと、
前記第１のクロックに同期して動作する第１のメモリＩ／Ｆと、
前記第２のクロックに同期して動作する第２のメモリＩ／Ｆと、
前記第１のＣＰＵと前記第２のＣＰＵからアクセス可能で、前記第１のＣＰＵによるメモリアクセスと前記第２のＣＰＵによるメモリアクセスとのうちいずれかのメモリアクセスを示す値を保持する切り替えレジスタと、
前記切り替えレジスタの値が前記第１のＣＰＵによるメモリアクセスを示すとき前記第１のメモリＩ／Ｆから入力される前記第１のＣＰＵのメモリアクセス信号を選択し、前記切り替えレジスタの値が前記第２のＣＰＵによるメモリアクセスを示すとき前記第２のメモリＩ／Ｆから入力される前記第２のＣＰＵのメモリアクセス信号を選択し、前記メモリへ出力する第１のセレクタと、
前記第１のクロックと前記第２のクロックを入力し、前記切り替えレジスタの値が前記第１のＣＰＵによるメモリアクセスを示すとき前記第１のクロックを選択し、前記切り替えレジスタの値が前記第２のＣＰＵによるメモリアクセスを示すとき前記第２のクロックを選択し、前記メモリのクロックとして出力する第２のセレクタとを備えた半導体装置。
【請求項３】
メモリと、
第１のクロックに同期して動作する第１のＣＰＵと、
前記第１のクロックと非同期の第２のクロックに同期して動作する第２のＣＰＵと、
前記第１のＣＰＵと前記第２のＣＰＵからアクセス可能で、前記第１のＣＰＵによるメモリアクセスと前記第２のＣＰＵによるメモリアクセスとのうちいずれかのメモリアクセスを示す値を保持する切り替えレジスタと、
前記第１のクロックに同期して動作し、前記切り替えレジスタの値が前記第１のＣＰＵによるメモリアクセスを示すとき前記第１のＣＰＵのメモリアクセス信号を選択し、前記切り替えレジスタの値が前記第２のＣＰＵによるメモリアクセスを示すとき前記第２のＣＰＵのメモリアクセス信号を選択して出力する第１のメモリアクセス回路と、
前記第２のクロックに同期して動作し、前記切り替えレジスタの値が前記第１のＣＰＵによるメモリアクセスを示すとき前記第１のＣＰＵのメモリアクセス信号を選択し、前記切り替えレジスタの値が前記第２のＣＰＵによるメモリアクセスを示すとき前記第２のＣＰＵのメモリアクセス信号を選択して出力する第２のメモリアクセス回路と、
前記第１のメモリアクセス回路と前記第２のメモリアクセス回路の出力を入力し、前記切り替えレジスタの値が前記第１のＣＰＵによるメモリアクセスを示すとき前記第１のメモリアクセス回路の出力を選択し、前記切り替えレジスタの値が前記第２のＣＰＵによるメモリアクセスを示すとき前記第２のメモリアクセス回路の出力を選択し、前記メモリへ出力する第１のセレクタと、
前記第１のクロックと前記第２のクロックを入力し、前記切り替えレジスタの値が前記第１のＣＰＵによるメモリアクセスを示すとき前記第１のクロックを選択し、前記切り替えレジスタの値が前記第２のＣＰＵによるメモリアクセスを示すとき前記第２のクロックを選択し、前記メモリのクロックとして出力する第２のセレクタと備えた半導体装置。
【請求項４】
メモリアクセスのアドレス値と設定された所定のアドレス値とを比較し、両者の一致を検出した場合に前記切り替えレジスタの値を変更する切り替えレジスタ更新回路を設けたことを特徴とする、請求項２または３記載の半導体装置。
【請求項５】
前記第１および第２のＣＰＵのそれぞれに、所定の数のアドレスとデータが保存された場合にメモリアクセス要求信号を発生する書き込みバッファ回路を設けるとともに、
前記メモリアクセス要求信号を発生した書き込みバッファ回路に保存された書き込みデータのメモリアクセスを実行するように前記切り替えレジスタの値を変更する切り替えレジスタ更新回路を設けたことを特徴とする、請求項２または３記載の半導体装置。
【請求項６】
前記第１および第２のＣＰＵのそれぞれに、保存された書き込みデータ数を出力する書き込みバッファ回路を設けるとともに、
それぞれの前記書き込みバッファ回路からの保存された書き込みデータ数を入力し、保存された書き込みデータ数が多い方の書き込みバッファ回路に保存された書き込みデータのメモリアクセスを実行するように前記切り替えレジスタの値を変更する切り替えレジスタ更新回路を設けたことを特徴とする、請求項２または３記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、互いに非同期に動作する複数のＣＰＵとこれら複数のＣＰＵがアクセスする共有メモリとを備えた半導体装置に関するものである。
【背景技術】
【０００２】
従来、複数のＣＰＵから共有メモリにアクセスする場合、複数のＣＰＵ間のメモリアクセス調停を行うことが行われている（例えば、特許文献１参照。）。
【０００３】
さらに、互いに非同期に動作する複数のＣＰＵから、一のＣＰＵと同期動作する共有メモリにアクセスする場合、共有メモリと同期動作しないＣＰＵのメモリアクセス信号を共有メモリのクロックに同期化させた後、複数のＣＰＵ間のメモリアクセス調停を行うことが行われている。
【０００４】
互いに非同期に動作する複数のＣＰＵと共有メモリとを備えた従来の半導体装置の構成を図２０に示す。
【０００５】
図２０において、１と２はＣＰＵ、１１０はアービタ、１２０はセレクタ、１３０はメモリＩ／Ｆ（インターフェース）、１４０はメモリ、１５０と１６０はＡＣＫ許可回路、２１０はＣＳ同期化回路、２２０はＡＣＫ同期化回路である。また、図２０の信号線について、１０１と２０１はクロック信号（ＣＬＫ）、１０２と２０２と２１１と１１２はチップセレクト信号（ＣＳ）、１０３と２０３と１２１はリード／ライト制御信号（ＲＷ）、１０４と２０４と１２２はアドレス信号（ＡＤ）、１０５と２０５と１２３は書き込みデータ信号（ＤＩ）、１３１はメモリアクセスのチップイネーブル信号（ＣＥ）、１３２と１３３は読み込みデータ信号（ＤＯ）、１３４と１５１と１６１と２２１はアクノリッジ信号（ＡＣＫ）、１１１はセレクタ信号（Ｓ）である。
【０００６】
ＣＰＵ１の動作クロックはＣＬＫ１０１であり、ＣＰＵ２の動作クロックはＣＬＫ２０１である。
【０００７】
アービタ１１０、メモリＩ／Ｆ１３０、メモリ１４０は、ＣＬＫ１０１に同期して動作しているとする。
【０００８】
ＣＳ同期化回路２１０は、ＣＰＵ２のメモリアクセス開始を表す信号ＣＳ２０２を入力し、ＣＬＫ１０１に同期するように遅延させられたＣＳ２１１を出力する。
【０００９】
アービタ１１０は、ＣＰＵ１のメモリアクセス開始を表す信号ＣＳ１０２とＣＳ２１１を入力し、先にＣＳがイネーブルとなったＣＰＵのＲＷ，ＡＤ，ＤＩ信号を選択するためのセレクタ信号Ｓ１１１と選択されたＣＰＵのＣＳ１１２を出力する。
【００１０】
ＣＰＵ１のメモリアクセス信号ＲＷ１０３，ＡＤ１０４，ＤＩ１０５と、ＣＰＵ２のメモリアクセス信号ＲＷ２０３，ＡＤ２０４，ＤＩ２０５は、セレクタ１２０により選択され、ＲＷ１２１，ＡＤ１２２，ＤＩ１２３として出力される。
【００１１】
メモリＩ／Ｆ１３０は、ＣＳ１１２，ＲＷ１２１，ＡＤ１２２を入力し、メモリ１４０へのアクセスタイミングを計算し、メモリ１４０へメモリをアクセスするサイクルを表す信号であるＣＥ１３１を出力する。
【００１２】
さらに、メモリＩ／Ｆ１３０は、メモリ１４０からのリードデータＤＯ１３２を保持し、リードデータＤＯ１３３とアクセス終了を表すＡＣＫ１３４を出力する。
【００１３】
ＡＣＫ許可回路１５０は、Ｓ１１１がＣＰＵ１選択を示す場合にのみ、ＡＣＫ１３４の信号をＡＣＫ１５１として出力し、それ以外の場合は、ＡＣＫ１５１をネゲートする。
【００１４】
ＡＣＫ許可回路１６０は、Ｓ１１１がＣＰＵ２選択を示す場合にのみ、ＡＣＫ１３４の信号をＡＣＫ１６１として出力し、それ以外の場合は、ＡＣＫ１６１をネゲートする。
【００１５】
ＡＣＫ同期化回路２２０は、ＡＣＫ１６１を入力し、ＣＬＫ２０１に同期するように遅延させられたＡＣＫ２２１を出力する。
【００１６】
ＣＳ１０２、ＲＷ１０３、ＡＤ１０４、ＤＩ１０５は、ＣＬＫ１０１に同期した信号であり、互いに非同期なクロック間で信号を伝えることはない。
【００１７】
また、メモリＩ／Ｆ１３０のリードデータ出力であるＤＯ１３３とＡＣＫ許可回路１５０の出力ＡＣＫ１５１もＣＬＫ１０１に同期した信号であり、ＣＰＵ１に対しては、互いに非同期なクロック間で信号を伝えることはない。
【００１８】
ところが、ＣＰＵ２の出力信号である、ＣＳ２０２、ＲＷ２０３、ＡＤ２０４、ＤＩ２０５は、ＣＬＫ２０１に同期した信号であり、ＣＬＫ１０１に同期させる必要がある。
【００１９】
メモリ１４０は、アクセスのサイクルを決定する信号ＣＥ１３１がアサートされている期間、すなわちＣＥ１３１がアクセスを表す信号値の期間だけ、入力信号であるＲＷ１２１，ＡＤ１２２，ＤＩ１２３をＣＬＫ１０１でラッチするので、ＲＷ１２１，ＡＤ１２２，ＤＩ１２３はＣＬＫ２０１に同期している場合であっても、ＣＥ１３１がイネーブルの期間、信号を変化させないことにより、ＣＬＫ１０１への同期化は省くことが出来る。
【００２０】
よって、ＣＰＵ２のメモリアクセス信号の中では、ＣＳ２０２をＣＬＫ１０１に同期化させ、ＡＣＫ１６１をＣＬＫ２０１に同期化させる必要がある。
【００２１】
ＣＬＫ１０２がＣＬＫ１０１の約半分の周波数で、互いに非同期である場合のＣＰＵ２のメモリアクセスタイミングを図２１に示す。
【００２２】
ＣＳ２１１は、ＣＬＫ１０１に同期させたため、ＣＳ２０２と比べて遅延している。ＡＣＫ２２１も、ＣＬＫ２０１に同期させたため、ＡＣＫ１６１と比べて遅延している。ＣＰＵ２がライト・リード連続動作をした場合、１アクセスにつき8サイクル以上の時間が必要となる。
【特許文献１】特開昭５５−７２２２９号公報（第５頁、第１図）
【発明の開示】
【発明が解決しようとする課題】
【００２３】
上記従来の構成では以下の問題がある。
【００２４】
共有メモリと非同期に動作するＣＰＵのメモリアクセス信号を共有メモリのクロックに同期化させる制御のため、共有メモリと同期動作するＣＰＵと比べて、メモリアクセス時間が増加するという問題がある。
【００２５】
また、共有メモリから共有メモリと非同期に動作するＣＰＵへアクセス終了信号を通知する場合においても、共有メモリと同期したアクセス終了信号を共有メモリと非同期に動作するＣＰＵに同期化させる制御のため、共有メモリと同期動作するＣＰＵと比べて、メモリアクセス時間が増加する。
【００２６】
以上の問題点に鑑み、本発明は、共有メモリに対するメモリアクセス時間を短縮可能な半導体装置を提供することを目的とする。
【課題を解決するための手段】
【００２７】
本発明の半導体装置は、メモリと、第１のクロックに同期して動作する第１の論理回路と、第１のクロックと非同期の第２のクロックに同期して動作する第２の論理回路と、第１の論理回路と第２の論理回路からアクセス可能で、第１の論理回路によるメモリアクセスと第２の論理回路によるメモリアクセスとのうちいずれかのメモリアクセスを示す値を保持する切り替えレジスタと、切り替えレジスタの値が第１の論理回路によるメモリアクセスを示すとき第１の論理回路のメモリアクセス信号を選択し、切り替えレジスタの値が第２の論理回路によるメモリアクセスを示すとき第２の論理回路のメモリアクセス信号を選択し、メモリへ出力する第１のセレクタと、第１のクロックと第２のクロックを入力し、切り替えレジスタの値が第１の論理回路によるメモリアクセスを示すとき第１のクロックを選択し、切り替えレジスタの値が第２の論理回路によるメモリアクセスを示すとき第２のクロックを選択し、メモリのクロックとして出力する第２のセレクタとを備えている。
【００２８】
この構成によれば、互いに非同期で動作する第１、第２の論理回路のいずれかが連続してメモリアクセスを行う場合、ＣＳ信号等のメモリアクセス信号の同期化処理を必要とせず、アクセスサイクルを短縮することができ、メモリアクセス時間を短縮できる。
【００２９】
また、本発明の半導体装置は、メモリと、第１のクロックに同期して動作する第１のＣＰＵと、第１のクロックと非同期の第２のクロックに同期して動作する第２のＣＰＵと、第１のクロックに同期して動作する第１のメモリＩ／Ｆと、第２のクロックに同期して動作する第２のメモリＩ／Ｆと、第１のＣＰＵと第２のＣＰＵからアクセス可能で、第１のＣＰＵによるメモリアクセスと第２のＣＰＵによるメモリアクセスとのうちいずれかのメモリアクセスを示す値を保持する切り替えレジスタと、切り替えレジスタの値が第１のＣＰＵによるメモリアクセスを示すとき第１のメモリＩ／Ｆから入力される第１のＣＰＵのメモリアクセス信号を選択し、切り替えレジスタの値が第２のＣＰＵによるメモリアクセスを示すとき第２のメモリＩ／Ｆから入力される第２のＣＰＵのメモリアクセス信号を選択し、メモリへ出力する第１のセレクタと、第１のクロックと第２のクロックを入力し、切り替えレジスタの値が第１のＣＰＵによるメモリアクセスを示すとき第１のクロックを選択し、切り替えレジスタの値が第２のＣＰＵによるメモリアクセスを示すとき第２のクロックを選択し、メモリのクロックとして出力する第２のセレクタとを備えている。
【００３０】
この構成によれば、互いに非同期で動作する第１、第２のＣＰＵのいずれかが連続してメモリアクセスを行う場合、ＣＳ信号等のメモリアクセス信号の同期化処理を必要とせず、アクセスサイクルを短縮することができ、メモリアクセス時間を短縮できる。
【００３１】
また、本発明の半導体装置は、メモリと、第１のクロックに同期して動作する第１のＣＰＵと、第１のクロックと非同期の第２のクロックに同期して動作する第２のＣＰＵと、第１のＣＰＵと第２のＣＰＵからアクセス可能で、第１のＣＰＵによるメモリアクセスと第２のＣＰＵによるメモリアクセスとのうちいずれかのメモリアクセスを示す値を保持する切り替えレジスタと、第１のクロックに同期して動作し、切り替えレジスタの値が第１のＣＰＵによるメモリアクセスを示すとき第１のＣＰＵのメモリアクセス信号を選択し、切り替えレジスタの値が第２のＣＰＵによるメモリアクセスを示すとき第２のＣＰＵのメモリアクセス信号を選択して出力する第１のメモリアクセス回路と、第２のクロックに同期して動作し、切り替えレジスタの値が第１のＣＰＵによるメモリアクセスを示すとき第１のＣＰＵのメモリアクセス信号を選択し、切り替えレジスタの値が第２のＣＰＵによるメモリアクセスを示すとき第２のＣＰＵのメモリアクセス信号を選択して出力する第２のメモリアクセス回路と、第１のメモリアクセス回路と第２のメモリアクセス回路の出力を入力し、切り替えレジスタの値が第１のＣＰＵによるメモリアクセスを示すとき第１のメモリアクセス回路の出力を選択し、切り替えレジスタの値が第２のＣＰＵによるメモリアクセスを示すとき第２のメモリアクセス回路の出力を選択し、メモリへ出力する第１のセレクタと、第１のクロックと第２のクロックを入力し、切り替えレジスタの値が第１のＣＰＵによるメモリアクセスを示すとき第１のクロックを選択し、切り替えレジスタの値が第２のＣＰＵによるメモリアクセスを示すとき第２のクロックを選択し、メモリのクロックとして出力する第２のセレクタと備えている。
【００３２】
この構成によれば、互いに非同期で動作する第１、第２のＣＰＵのうちいずれかの選択されたＣＰＵの連続アクセス中に、もう一方のＣＰＵのアクセスが発生しても、切り替えレジスタの値を変更しないので、切り替えレジスタをアクセスするサイクルが削減でき、メモリアクセス時間を短縮できる。
【００３３】
また、本発明において、メモリアクセスのアドレス値と設定された所定のアドレス値とを比較し、両者の一致を検出した場合に切り替えレジスタの値を変更する切り替えレジスタ更新回路を設けることが好ましい。
【００３４】
これにより、一定量のデータを一方のＣＰＵから他方のＣＰＵへ繰り返し転送する場合、メモリアクセスするＣＰＵの交替に合わせて、自動的に切り替えレジスタを変更することができ、ＣＰＵによる切り替えレジスタのアクセスを削減することができる。
【００３５】
また、本発明において、第１および第２のＣＰＵのそれぞれに、所定の数のアドレスとデータが保存された場合にメモリアクセス要求信号を発生する書き込みバッファ回路を設けるとともに、メモリアクセス要求信号を発生した書き込みバッファ回路に保存された書き込みデータのメモリアクセスを実行するように切り替えレジスタの値を変更する切り替えレジスタ更新回路を設けることが好ましい。
【００３６】
これにより、ＣＰＵ毎に書き込みバッファ回路を持った構成において、書き込みバッファ回路が所定の数のアドレスとデータが保存され、例えばＦＵＬＬになった場合、自動的に切り替えレジスタの値を変更することができ、書き込みバッファ回路で保持されたデータのメモリアクセスを始める前にＣＰＵによる切り替えレジスタのアクセスを削減することができる。
【００３７】
また、本発明において、第１および第２のＣＰＵのそれぞれに、保存された書き込みデータ数を出力する書き込みバッファ回路を設けるとともに、それぞれの書き込みバッファ回路からの保存された書き込みデータ数を入力し、保存された書き込みデータ数が多い方の書き込みバッファ回路に保存された書き込みデータのメモリアクセスを実行するように切り替えレジスタの値を変更する切り替えレジスタ更新回路を設けることが好ましい。
【００３８】
これにより、ＣＰＵ毎に書き込みバッファ回路を持った構成において、複数のＣＰＵの書き込みバッファ回路の残りデータ数に応じて、最も残りデータが多いＣＰＵが動作できるように、自動的に切り替えレジスタの値を変更し、メモリアクセスを開始させることができる。
【発明の効果】
【００３９】
本発明によれば、互いに非同期で動作する第１、第２のＣＰＵのいずれかが連続してメモリアクセスを行う場合、ＣＳ信号等のメモリアクセス信号の同期化処理を必要とせず、アクセスサイクルを短縮することができ、メモリアクセス時間を短縮できる。
【００４０】
また、本発明によれば、互いに非同期で動作する第１、第２のＣＰＵのうちいずれかの選択されたＣＰＵの連続アクセス中に、もう一方のＣＰＵのアクセスが発生しても、切り替えレジスタの値を変更しないので、切り替えレジスタをアクセスするサイクルが削減でき、メモリアクセス時間を短縮できる。
【発明を実施するための最良の形態】
【００４１】
（実施の形態１）
図１は、本発明の実施の形態１における半導体装置の共有メモリアクセス構成を示す図である。
【００４２】
図１は、メモリの動作クロックをレジスタにより切り替えられるようにし、レジスタを操作することにより、互いに非同期に動作する２つのＣＰＵのどちらからでも、同期化回路を用いないメモリアクセスが可能となることを示すものである。
【００４３】
図１において、１は第１のＣＰＵ、２は第２のＣＰＵ、１２０と３１０と３２０と１７０と２７０はセレクタ、１３０と２３０はメモリＩ／Ｆ（インターフェース）、１４０はメモリ、３００はレジスタアクセス回路、３０４は切替レジスタである。
【００４４】
図１の信号線について、１０１は第１のクロック、２０１は第２のクロック、１０２と２０２はチップセレクト信号、１０３と２０３と１２１はリード／ライト制御信号、１０４と２０４と１２２はアドレス信号、１０５と２０５と１２３は書き込みデータ信号、１３１と２３１と３１１はメモリアクセスのチップイネーブル信号、１３２と１３３と２３３は読み込みデータ信号、１３４と２３４はアクノリッジ信号である。
【００４５】
以後、クロック信号をＣＬＫ，チップセレクト信号をＣＳ，リード／ライト制御信号をＲＷ，アドレス信号をＡＤ，書き込みデータ信号をＤＩ、チップイネーブル信号をＣＥ，読み込みデータ信号をＤＯ、アクノリッジ信号をＡＣＫと表記する。
【００４６】
ＣＰＵ１の動作クロックはＣＬＫ１０１であり、ＣＰＵ２の動作クロックはＣＬＫ２０１である。
【００４７】
メモリＩ／Ｆ１３０は、ＣＬＫ１０１に同期して動作し、メモリＩ／Ｆ２３０は、ＣＬＫ２０１に同期して動作する。
【００４８】
切り替えレジスタ３０４は、レジスタアクセス回路３００によりＣＰＵ１とＣＰＵ２から書き換えられる。
【００４９】
切り替えレジスタ３０４の値は、セレクタ１２０、セレクタ３１０、セレクタ３２０において、出力する信号を決定するセレクト信号Ｓ３０５となる。
【００５０】
セレクタ１２０は、ＣＰＵ１のメモリアクセス信号のＲＷ１０３，ＡＤ１０４，ＤＩ１０５と、ＣＰＵ２のメモリアクセス信号のＲＷ２０３，ＡＤ２０４，ＤＩ２０５を入力し、切り替えレジスタ３０４の値に従ってＣＰＵ１とＣＰＵ２から１つを選択し、選択したＣＰＵのメモリアクセス信号をＲＷ１２１，ＡＤ１２２，ＤＩ１２３として出力する。
【００５１】
メモリＩ／Ｆ１３０は、ＣＳ１０２，ＲＷ１０３，ＡＤ１０４を入力し、メモリ１４０へのアクセスタイミングを計算し、ＣＥ１３１を出力する。
【００５２】
メモリＩ／Ｆ２３０は、ＣＳ２０２，ＲＷ２０３，ＡＤ２０４を入力し、メモリ１４０へのアクセスタイミングを計算し、ＣＥ２３１を出力する。
【００５３】
セレクタ３１０は、ＣＰＵ１のメモリアクセスを実行するＣＥ１３１とＣＰＵ２のメモリアクセスを実行するＣＥ２３１を入力し、切り替えレジスタ３０４の値に従ってＣＰＵ１とＣＰＵ２から１つを選択し、選択したＣＰＵのＣＥ信号をＣＥ３１１として出力する。
【００５４】
セレクタ３２０は、ＣＰＵ１のクロックＣＬＫ１０１とＣＰＵ２のクロックＣＬＫ２０１を入力し、切り替えレジスタ３０４の値に従ってＣＰＵ１とＣＰＵ２から１つを選択し、選択したＣＰＵのクロックをＣＬＫ３２１として、メモリ１４０に出力する。
【００５５】
セレクタ１２０、セレクタ３１０、セレクタ３２０において、ＣＰＵ１の信号とＣＰＵ２の信号のどちらを選択するかは、3つのセレクタが同時にＣＰＵ１かＣＰＵ２の一方を選択するようにする。
【００５６】
メモリＩ／Ｆ１３０は、メモリ１４０からのリードデータＤＯ１３２を保持し、リードデータＤＯ１３３とアクセス終了を表すＡＣＫ１３４を出力する。
【００５７】
メモリＩ／Ｆ２３０は、メモリ１４０からのリードデータＤＯ１３２を保持し、リードデータＤＯ２３３とアクセス終了を表すＡＣＫ２３４を出力する。
【００５８】
セレクタ１７０は、メモリアクセス信号であるＤＯ１３３及びＡＣＫ１３４と、レジスタアクセス回路３００のＤＯ３６３及びＡＣＫ３７１と、レジスタアクセスが行われていることを表す信号Ｓ３６５を入力し、レジスタアクセスの場合は、ＤＯ３６３及びＡＣＫ３７１の信号をＤＯ１７１及びＡＣＫ１７２として出力し、メモリアクセスの場合は、ＤＯ１３３及びＡＣＫ１３４の信号をＤＯ１７１及びＡＣＫ１７２として出力する。
【００５９】
セレクタ２７０は、メモリアクセス信号であるＤＯ２３３及びＡＣＫ２３４と、レジスタアクセス回路３００のＤＯ３６３及びＡＣＫ３９１と、レジスタアクセスが行われていることを表す信号Ｓ３６５を入力し、レジスタアクセスの場合は、ＤＯ３６３及びＡＣＫ３９１の信号をＤＯ２７１及びＡＣＫ２７２として出力し、メモリアクセスの場合は、ＤＯ２３３及びＡＣＫ２３４の信号をＤＯ２７１及びＡＣＫ２７２として出力する。
【００６０】
図２は、レジスタアクセス回路３００の構成を示す図である。
【００６１】
図２は、ＣＰＵ１とＣＰＵ２の両方からのレジスタアクセスを、同期化回路を用いた従来の回路で実現したものである。
【００６２】
図２において、３３０はＣＳ同期化回路、３４０はアービタ、３５０はセレクタ、３６０はレジスタＩ／Ｆ、３７０と３８０はＡＣＫ許可回路、３９０はＡＣＫ同期化回路、３０４は切替レジスタである。
【００６３】
アービタ３４０、レジスタＩ／Ｆ３６０、切り替えレジスタ３０４は、ＣＬＫ１０１に同期して動作しているとする。
【００６４】
ＣＳ同期化回路３３０は、ＣＰＵ２のアクセス開始を表す信号ＣＳ２０２を入力し、ＣＬＫ１０１に同期するように遅延させられたＣＳ３３１を出力する。
【００６５】
アービタ３４０は、ＣＰＵ１のアクセス開始を表す信号ＣＳ１０２とＣＳ３３１を入力し、先にＣＳがイネーブルとなったＣＰＵのＲＷ，ＡＤ，ＤＩ信号を選択するためのセレクタ信号Ｓ３４１と選択されたＣＰＵのＣＳ信号としてＣＳ３４２を出力する。
【００６６】
ＣＰＵ１のアクセス信号ＲＷ１０３，ＡＤ１０４，ＤＩ１０５と、ＣＰＵ２のアクセス信号ＲＷ２０３，ＡＤ２０４，ＤＩ２０５は、セレクタ３５０により選択され、ＲＷ３５１，ＡＤ３５２，ＤＩ３５３として出力される。
【００６７】
レジスタＩ／Ｆ３６０は、ＣＳ３４２，ＲＷ３５１，ＡＤ３５２を入力し、切り替えレジスタ３０４へのアクセスタイミングを計算し、アクセスするサイクルを表す信号であるＣＥ３６１を出力する。
【００６８】
さらに、レジスタＩ／Ｆ３６０は、切り替えレジスタ３０４からのリードデータＤＯ３６２を保持し、リードデータＤＯ３６３とアクセス終了を表すＡＣＫ３６４を出力する。
【００６９】
ＡＣＫ許可回路３７０は、Ｓ３４１がＣＰＵ１選択を示す場合にのみ、ＡＣＫ３６４の信号をＡＣＫ３７１として出力し、それ以外の場合は、ＡＣＫ３７１をネゲートする。
【００７０】
ＡＣＫ許可回路３８０は、Ｓ３４１がＣＰＵ２選択を示す場合にのみ、ＡＣＫ３６４の信号をＡＣＫ３８１として出力し、それ以外の場合は、ＡＣＫ３８１をネゲートする。
【００７１】
ＡＣＫ同期化回路３９０は、ＡＣＫ３８１を入力し、ＣＬＫ２０１に同期するように遅延させられたＡＣＫ３９１を出力する。
【００７２】
図３は、ＣＰＵ２が切り替えレジスタ３０４へ書き込みを行うアクセスタイミング図である。
【００７３】
ＣＳ２０２を１から０へ変化させることにより、アサ−トし、同時にＲＷ２０３には書き込みを表す値Ｗを設定し、ＡＤ２０４には切り替えレジスタのアドレス値Ａ０を設定し、ＤＩ２０５にはＣＰＵ２を選択する値Ｄ０を設定する。
【００７４】
ＣＳ２０２を同期化させると、ＣＳ信号が遅延して、ＣＳ３３１となる。
【００７５】
アービタ３４０は、ＣＳ３３１とＣＳ１０２を入力し、ＣＰＵ２のアクセスを許可する。
【００７６】
よって、Ｓ３４１はＣＰＵ２を選択する値となり、ＣＳ３４２はＣＳ３３１と同じサイクルでアサートされる。
【００７７】
セレクタ３５０により、ＲＷ３５１，ＡＤ３５２、ＤＩ３５３は、それぞれ、値Ｗ，値Ａ０、値Ｄ０となり、レジスタＩ／Ｆ３６０により、ＣＳ３４２がアサートされた最初のサイクルで、ＣＥ３６１がアサートされ、切り替えレジスタ３０４の値が変化する。
【００７８】
ＡＣＫ２７２をＣＰＵ２に伝えて、レジスタアクセスが完了するが、従来のメモリアクセスと同様に、レジスタアクセス1回で8サイクル以上の時間が必要である。
【００７９】
図４は、本発明の実施の形態１における、切り替えレジスタ３０４がＣＰＵ２を選択する場合のＣＰＵ２のメモリアクセスタイミング図である。
【００８０】
図４では、ＣＰＵ２のメモリライト1回、メモリリード1回のアクセスを実行している。
【００８１】
ＣＳ２０２をアサートし、同時にＲＷ２０３，ＡＤ２０４，ＤＩ２０５には、それぞれ、ライトを表す値Ｗ，メモリのアドレス値Ａ１、書き込みデータ値Ｄ１を設定する。
【００８２】
セレクタ１２０では、切り替えレジスタ３０４の値Ｓ３０５がＣＰＵ２を選択する値になっているので、メモリに入力されるＲＷ１２１，ＡＤ１２２，ＤＩ１２３は、値Ｗ，値Ａ１、値Ｄ１となる。
【００８３】
また、セレクタ３１０においても、ＣＥ３１１の出力信号として、ＣＰＵ２のメモリアクセスのＣＥ２３１が選択される。
【００８４】
ＣＳ２０２の同期化処理がないため、ＣＳ２０２がアサートした最初のサイクルで、ＣＥ３１１がアサートとなりメモリへの書き込みが実行され、次のサイクルで、ＡＣＫ２７２がアサートとなりメモリアクセスが完了する。
【００８５】
次のメモリアクセスでは、ＣＳ２０２をアサートし、同時にＲＷ２０３，ＡＤ２０４には、それぞれ、リードを表す値Ｒ，メモリのアドレス値Ａ１を設定し、ＤＩ２０５は使用しない。
【００８６】
セレクタ１２０では、切り替えレジスタ３０４の値Ｓ３０５がＣＰＵ２を選択する値になっているので、メモリに入力されるＲＷ１２１，ＡＤ１２２は、値Ｒ，値Ａ１となる。
【００８７】
また、セレクタ３１０においても、ＣＥ３１１の出力信号として、ＣＰＵ２のメモリアクセスのＣＥ２３１が選択される。
【００８８】
ＣＳ２０２の同期化処理がないため、ＣＳ２０２がアサートした最初のサイクルで、ＣＥ３１１がアサートとなりメモリからの読み出しが実行され、次のサイクルで、ＤＯ１３２のデータをメモリＩ／Ｆ２３０で保持できる。
【００８９】
メモリＩ／Ｆ２３０の読み出しデータ出力ＤＯ２３３は、ＣＥ３１１がアサートとなった２サイクル後に有効になり、同サイクルで、ＡＣＫ２７２がアサートとなりメモリアクセスが完了する。
【００９０】
上記では、切り替えレジスタ３０４がＣＰＵ２を選択する場合のメモリアクセスについて述べたが、ＣＰＵ１のメモリアクセスの場合も同様である。この場合、切り替えレジスタ３０４の設定値が異なる。
【００９１】
図５は、ＣＳ同期化回路３３０の構成である。
【００９２】
図５において、４００と４１０はフリップフロップ（ＦＦ）、４０１と４１１はフリップフロップのクロック端子、４０２と４１２はフリップフロップのデータ入力端子、４０３と４１３はフリップフロップのデータ出力端子である。
【００９３】
ＣＳ同期化回路３３０では、ＣＬＫ２０１に同期しているＣＳ２０２を入力し、ＣＬＫ１０１に同期するＣＳ３３１を出力する。
【００９４】
ＦＦ４００では、ＣＳ２０２とＣＬＫ１０１を入力し、ＣＬＫ１０１の立ち上がり時刻のＣＳ２０２の信号値をＱ４０３端子から信号Ｓ４０４として出力し、次のＣＬＫ１０１の立ち上がり時刻まで保持する。
【００９５】
ＦＦ４１０では、Ｓ４０４とＣＬＫ１０１を入力し、ＣＬＫ１０１の立ち上がり時刻のＳ４０４の信号値をＱ４１３端子から信号ＣＳ３３１として出力し、次のＣＬＫ１０１の立ち上がり時刻まで保持する。
【００９６】
ＣＳ同期化回路３３０には、フリップフロップを２つ用いて、2回ＣＬＫ１０１によるラッチを行っている。
【００９７】
図６は、ＣＳ同期化回路３３０の動作タイミング図である。
【００９８】
ＣＬＫ１０１の立ち上がり時刻に、ＣＳ２０２が変化中である場合、Ｓ４０４は一定期間、不定となる。
【００９９】
Ｓ４０４の不定期間がＣＬＫ１０１の1サイクル未満であれば、Ｓ４０４をもう一度、ＣＬＫ１０１によりラッチすることにより、不定期間がない信号ＣＳ３３１を得ることが出来る。
【０１００】
また、ＡＣＫ同期化回路３９０も、ＣＳ同期化回路３３０と同様の構成である。
【０１０１】
図７は、本発明の実施の形態１におけるＣＰＵ２のメモリアクセス例を示す。比較のため、従来技術による例も示している。
【０１０２】
メモリアクセスのサイクル数として、ＣＬＫ２０１を基準とした書き込みアクセスのサイクル数を用いた場合を説明する。
【０１０３】
従来技術を用いた場合、ＣＰＵ２のメモリアクセスを3回行うと、２４サイクル以上必要である。
【０１０４】
本発明の実施の形態１によれば、切り替えレジスタ３０４を書き換えるサイクルとＣＰＵ２がメモリアクセスを3回行うサイクルを合わせると、１７サイクルとなる。
【０１０５】
ＣＰＵ２の連続書き込みアクセス数をＮとすると、従来のアクセスサイクル数は８Ｎサイクル以上必要であるが、本発明の実施の形態１においては、８＋３Ｎサイクルとなる。
【０１０６】
よって、連続２回以上のアクセスでは、本発明の実施の形態１のアクセスサイクル数が、従来技術を用いた場合のアクセスサイクル数より小さくなる。
【０１０７】
以上説明したように、互いに非同期で動作するＣＰＵ１、２のいずれかが連続してメモリアクセスを行う場合、ＣＳ信号、ＡＣＫ信号の同期化処理を必要とせず、アクセスサイクルを短縮することができ、メモリアクセス時間を短縮できる。
【０１０８】
（実施の形態２）
図８は、本発明の実施の形態２における半導体装置の共有メモリアクセス構成を示す図である。
【０１０９】
図８は、本発明の実施の形態２において、メモリアクセスを許可するＣＰＵとして、一方のＣＰＵが選択されている期間においても、他のＣＰＵからのメモリアクセスが可能となる構成を示すものである。
【０１１０】
図８において、１は第１のＣＰＵ、２は第２のＣＰＵ、３２０と４５０と５３０と６３０はセレクタ、５００と６００はメモリアクセス回路、５１０と６１０はＣＳ許可回路、５２０と５４０と６２０と６４０は同期化回路、５４２と６４２はＯＲ回路、１４０はメモリ、３０４は切り替えレジスタである。
【０１１１】
図９は、メモリアクセス回路５００の構成を示す図である。図９において、５５０はアービタ、５６０はセレクタ、５７０はメモリＩ／Ｆ、５８０と５９０はＡＣＫ許可回路である。
【０１１２】
図１０は、メモリアクセス回路６００の構成を示す図である。図１０において、６５０はアービタ、６６０はセレクタ、６７０はメモリＩ／Ｆ、６８０と６９０はＡＣＫ許可回路である。
【０１１３】
図８において、同期化回路５２０と同期化回路６４０とメモリアクセス回路５００を合わせた構成は、図２０の従来の装置のアービタ１１０とセレクタ１２０とメモリＩ／Ｆ１３０とＡＣＫ許可回路１５０とＡＣＫ許可回路１６０とＣＳ同期化回路２１０とＡＣＫ同期化回路２２０を合わせた構成と同じ構成になっている。
【０１１４】
また、同期化回路６２０と同期化回路５４０とメモリアクセス回路６００は、それぞれ、同期化回路５２０と同期化回路６４０とメモリアクセス回路５００において、ＣＬＫ１０１をＣＬＫ２０１に、ＣＬＫ２０１をＣＬＫ１０１に変更したものである。
【０１１５】
切り替えレジスタ３０４は、メモリアクセス回路５００とメモリアクセス回路６００のどちらを動作させるかを決定する値、すなわちＣＰＵ１と２のうちメモリアクセスを行うＣＰＵを決定する値を保持する。
【０１１６】
メモリアクセス回路５００を動作させる場合、ＣＳ許可回路５１０は、ＣＳ１０２の信号値をＣＳ５１１に伝え、ＣＳ５１２をネゲートし、ＣＳ許可回路６１０は、ＣＳ２０２の信号値をＣＳ６１２に伝え、ＣＳ６１１をネゲートする。
【０１１７】
メモリアクセス回路５００はＣＬＫ１０１で動作するため、ＣＰＵ１のメモリアクセスは、ＣＳ信号、ＡＣＫ信号の同期化による遅延の影響を受けず、ＣＰＵ２のメモリアクセスは、ＣＳ信号、ＡＣＫ信号の同期化による遅延の影響を受ける。
【０１１８】
メモリアクセス回路６００を動作させる場合、ＣＳ許可回路５１０は、ＣＳ１０２の信号値をＣＳ５１２に伝え、ＣＳ５１１をネゲートし、ＣＳ許可回路６１０は、ＣＳ２０２の信号値をＣＳ６１１に伝え、ＣＳ６１２をネゲートする。
【０１１９】
メモリアクセス回路６００はＣＬＫ２０１で動作するため、ＣＰＵ２のメモリアクセスは、ＣＳ信号、ＡＣＫ信号の同期化による遅延の影響を受けず、ＣＰＵ１のメモリアクセスは、ＣＳ信号、ＡＣＫ信号の同期化による遅延の影響を受ける。
【０１２０】
セレクタ４５０は、メモリアクセス回路５００の出力ＣＥ５７１、ＲＷ５６１，ＡＤ５６２，ＤＩ５６３と、メモリアクセス回路６００の出力ＣＥ６７１、ＲＷ６６１，ＡＤ６６２，ＤＩ６６３と切り替えレジスタ３０４の値Ｓ３０５を入力し、切り替えレジスタ３０４の値Ｓ３０５に基づいてメモリアクセス回路５００とメモリアクセス回路６００で動作させている方のＣＥ，ＲＷ，ＡＤ，ＤＩ信号をＣＥ４５４、ＲＷ４５１，ＡＤ４５２，ＤＩ４５３としてメモリ１４０へ出力する。すなわち、切り替えレジスタ３０４の値をＣＰＵ１によるメモリアクセスを示す値に設定すると、セレクタ４５０により、メモリアクセス回路６００の出力信号は、メモリ１４０に入力されず、メモリアクセス回路５００の出力信号が、メモリ１４０に入力される。このようにメモリアクセス回路５００が有効である場合、ＣＰＵ１のメモリアクセスは、ＣＳ信号、ＡＣＫ信号の同期化による遅延の影響を受けない。さらに、ＣＰＵ２のメモリアクセスは、ＣＳ信号、ＡＣＫ信号の同期化による遅延の影響を受けるが、メモリアクセスは可能となる。同様に、切り替えレジスタ３０４の値をＣＰＵ２によるメモリアクセスを示す値に設定すると、セレクタ４５０により、メモリアクセス回路５００の出力信号は、メモリ１４０に入力されず、メモリアクセス回路６００の出力信号が、メモリ１４０に入力される。このようにメモリアクセス回路６００が有効である場合、ＣＰＵ２のメモリアクセスは、ＣＳ信号、ＡＣＫ信号の同期化による遅延の影響を受けない。さらに、ＣＰＵ１のメモリアクセスは、ＣＳ信号、ＡＣＫ信号の同期化による遅延の影響を受けるが、メモリアクセスは可能となる。
【０１２１】
セレクタ３２０は、ＣＬＫ１０１とＣＬＫ２０１と切り替えレジスタ３０４の値Ｓ３０５を入力し、メモリアクセス回路５００とメモリアクセス回路６００で動作させている方のクロックを選択し、ＣＬＫ３２１として出力する。
【０１２２】
セレクタ５３０とセレクタ６３０は、メモリアクセス回路５００のリードデータＤＯ５７３とメモリアクセス回路６００のリードデータＤＯ６７３から、動作しているメモリアクセス回路のリードデータをＣＰＵ１及びＣＰＵ２へ出力する。
【０１２３】
ＯＲ回路５４２とＯＲ回路６４２により、ＣＰＵ１とＣＰＵ２それぞれが、メモリアクセス回路５００とメモリアクセス回路６００の両方のＡＣＫ信号を認識できるようになっている。
【０１２４】
また、図９、図１０に示すように、メモリアクセス回路５００、６００は同様の回路であるので、ここでは、メモリアクセス回路５００についてその動作を詳しく説明し、メモリアクセス回路６００の詳細は省略する。
【０１２５】
メモリアクセス回路５００では、ＣＰＵ１のメモリアクセス信号のＣＳ信号５１１と、ＣＰＵ２のメモリアクセス信号のＣＳ信号をＣＬＫ１０１に同期化した信号５２１をアービタ５５０に入力し、アービタ５５０では先にＣＳがイネーブルとなったＣＰＵのＲＷ，ＡＤ，ＤＩ信号を選択するためのセレクタ信号Ｓ５５１と、選択されたＣＰＵのＣＳ５５２を出力する。
【０１２６】
セレクタ５６０では、セレクタ信号Ｓ５５１に基づいて、ＣＰＵ１のメモリアクセス信号ＲＷ１０３，ＡＤ１０４，ＤＩ１０５と、ＣＰＵ２のメモリアクセス信号ＲＷ２０３，ＡＤ２０４，ＤＩ２０５とのいずれか一方を選択して、ＲＷ５６１，ＡＤ５６２，ＤＩ５６３として出力する。
【０１２７】
メモリＩ／Ｆ５７０は、ＣＳ５５２，ＲＷ５６１，ＡＤ５６２を入力し、メモリ１４０へのアクセスタイミングを計算し、メモリ１４０へメモリをアクセスするサイクルを表す信号であるＣＥ５７１を出力する。さらに、メモリＩ／Ｆ５７０は、メモリのリードデータＤＯ１４１を保持し、リードデータＤＯ５７３とアクセス終了を表すＡＣＫ５７４を出力する。
【０１２８】
ＡＣＫ許可回路５８０では、メモリアクセス終了を表すＡＣＫ５７４と、どのＣＰＵがメモリアクセスを行なっているかを示すセレクタ信号Ｓ５５１を入力し、ＣＰＵ１のメモリアクセスの場合だけ、ＡＣＫ５７４をＡＣＫ５８１として出力する。
【０１２９】
ＡＣＫ許可回路５９０では、ＡＣＫ許可回路５８０と同様に、ＣＰＵ２のメモリアクセスの場合だけ、ＡＣＫ５７４をＡＣＫ５９１として出力する。
【０１３０】
図１１は、本発明の実施の形態２における、切り替えレジスタ３０４がメモリアクセス回路６００を選択する場合のＣＰＵ２のメモリアクセスタイミング図である。
【０１３１】
図１１では、ＣＰＵ２のメモリライト1回、メモリリード1回のアクセスを実行している。
【０１３２】
ＣＳ２０２をアサートし、同時にＲＷ２０３，ＡＤ２０４，ＤＩ２０５には、それぞれ、ライトを表す値Ｗ，メモリのアドレス値Ａ１、書き込みデータ値Ｄ１を設定する。
【０１３３】
切り替えレジスタ３０４の値Ｓ３０５は、メモリアクセス回路６００を選択する値になっているので、セレクタ４５０によって、メモリに入力されるＲＷ４５１，ＡＤ４５２，ＤＩ４５３は、値Ｗ，値Ａ１、値Ｄ１となる。
【０１３４】
同様に、セレクタ４５０によって、メモリアクセス回路５００のＣＥ５７１とメモリアクセス回路６００のＣＥ６７１のうち、メモリアクセス回路６００のＣＥ６７１の値が選択され、ＣＥ４５４として、メモリ１４０へ出力される。
【０１３５】
ＣＳ２０２は、メモリアクセス回路６００と同期しているので、同期化処理は行われず、ＣＳ２０２がアサートした最初のサイクルで、ＣＥ６７１がアサートとなりメモリ１４０への書き込みが実行され、次のサイクルで、ＡＣＫ６４３がアサートとなりメモリアクセスが完了する。
【０１３６】
次のメモリアクセスでは、ＣＳ２０２をアサートし、同時にＲＷ２０３，ＡＤ２０４には、それぞれ、リードを表す値Ｒ，メモリのアドレス値Ａ１を設定し、ＤＩ２０５は使用しない。
【０１３７】
切り替えレジスタ３０４の値Ｓ３０５は、メモリアクセス回路６００を選択する値になっているので、セレクタ４５０によって、メモリに入力されるＲＷ４５１，ＡＤ４５２は、値Ｒ，値Ａ１となる。
【０１３８】
同様に、セレクタ４５０によって、メモリアクセス回路５００のＣＥ５７１とメモリアクセス回路６００のＣＥ６７１のうち、メモリアクセス回路６００のＣＥ６７１の値が選択され、ＣＥ４５４として、メモリ１４０へ出力される。
【０１３９】
ＣＳ２０２は、メモリアクセス回路６００と同期しているので、同期化処理は行われず、ＣＳ２０２がアサートした最初のサイクルで、ＣＥ６７１がアサートとなりメモリ１４０からの読み出しが実行され、次のサイクルで、ＤＯ１４１のデータをメモリＩ／Ｆ６７０で保持できる。
【０１４０】
メモリＩ／Ｆ６７０の読み出しデータ出力ＤＯ６７３とＣＰＵ２の読み出しデータ入力ＤＯ６３１は、ＣＥ６７１がアサートとなった２サイクル後に有効になり、同サイクルで、ＡＣＫ６８１とＡＣＫ６４３がアサートとなりメモリアクセスが完了する。
【０１４１】
上記では、切り替えレジスタ３０４がＣＰＵ２を選択する場合のメモリアクセスについて述べたが、ＣＰＵ１のメモリアクセスの場合も同様である。この場合、切り替えレジスタ３０４の設定値が異なる。
【０１４２】
図１２は、本発明の実施の形態２におけるメモリアクセス例を示す。比較のため、従来技術による例も示している。
【０１４３】
メモリアクセスのサイクル数として、ＣＬＫ２０１を基準とした書き込みアクセスのサイクル数を用いた場合を説明する。
【０１４４】
従来技術を用いた場合、ＣＰＵ２のメモリアクセスを４回行い、途中でＣＰＵ１のメモリアクセスを１回行うと、３４サイクル以上必要である。
【０１４５】
本発明の実施の形態２によれば、切り替えレジスタ３０４を書き換えるサイクルとＣＰＵ２がメモリアクセスを４回とＣＰＵ１がメモリアクセスを１回行うサイクルを合わせると、２８サイクルとなる。
【０１４６】
よって、ＣＰＵ２の連続アクセス中に、１回ＣＰＵ１のアクセスを行いたい場合、本発明の実施の形態２のアクセスサイクル数が、従来技術を用いた場合のアクセスサイクル数より小さくなる。
【０１４７】
以上説明したように、選択されたＣＰＵの連続アクセス中に、もう一方のＣＰＵのアクセスが発生しても、切り替えレジスタ３０４の値を変更しないので、切り替えレジスタ３０４をアクセスするサイクルが削減でき、メモリアクセス時間を短縮できる。
【０１４８】
なお、切り替えレジスタ３０４の値の設定は、レジスタアクセス回路３００（図１）のように、ＣＰＵ１またはＣＰＵ２から、レジスタアクセスして、値を設定する。例えば、ＣＰＵ１から連続メモリアクセスを行う場合、メモリアクセス前に、切り替えレジスタ３０４の値を、セレクタ４５０によりメモリアクセス回路５００のアクセスが有効となるように設定することにより、同期化による遅延のないメモリアクセスが可能となる。
【０１４９】
（実施の形態３）
図１３は、本発明の実施の形態３における半導体装置の共有メモリアクセス構成を示す図である。
【０１５０】
図１３は、図１に示した本発明の実施の形態１における共有メモリアクセス装置に、切り替えレジスタ更新回路７００を付加し、ＣＥ３１１とＡＤ１２２の信号を用いて、切り替えレジスタ３０４の値を変更させる切り替えレジスタ反転信号Ｓ７３１を出力させるものである。図１３中のレジスタアクセス回路３００は、切り替えレジスタ３０４に切替レジスタ反転信号Ｓ７５１が入力される以外は、図２の構成と同様である。なお、図１３では、図１のセレクタ１７０とセレクタ２７０の図示を省略しているが、図１と同様に存在している。
【０１５１】
図１４は、切り替えレジスタ更新回路７００の構成を示す図である。図１４において、７１０は比較アドレス、７２０は一致比較回路、７３０は保持回路、７４０は同期化回路、７５０はレジスタ変更タイミング調整回路である。なお、比較アドレス７１０はアドレス設定レジスタ（図示せず）に設定されたアドレス値である。この比較アドレス７１０は、メモリアクセス前に、レジスタアクセス回路３００と同様にアドレス設定レジスタにアクセスし、連続アクセスする最後のメモリアドレス値を設定する。
【０１５２】
一致比較回路７２０は、比較アドレス７１０とＡＤ１２２を入力し、一致比較を行い、その結果をアドレス一致信号Ｓ７２１として出力する。
【０１５３】
保持回路７３０は、Ｓ７２１とＡＣＫ２３４とＣＬＫ２０１を入力し、ＡＤ１２２と比較アドレス７１０が一致する場合のみ、ＡＣＫ２３４の値を保持し、ＡＣＫ７３１として出力する。
【０１５４】
同期化回路７４０は、ＡＣＫ７３１とＣＬＫ１０１を入力し、ＡＣＫ７３１の信号をＣＬＫ１０１に同期化させ、ＡＣＫ７４１として出力する。
【０１５５】
レジスタ変更タイミング調整回路７５０は、アドレス一致信号Ｓ７２１とＡＣＫ１３４とＡＣＫ７４１を入力し、ＡＤ１２２と比較アドレス７１０が一致し、かつＡＣＫ１３４がアサ−トされた場合と、ＡＣＫ７４１がアサ−トされた場合に、切り替えレジスタ反転信号Ｓ７５１を出力する。
【０１５６】
切り替えレジスタ３０４は、切り替えレジスタ反転信号Ｓ７５１を入力し、保持している値が０の場合は1に変更し、保持している値が１の場合は０に変更する。
【０１５７】
図１５は、本発明の実施の形態３におけるメモリアクセス例を示す。比較のため、従来技術および実施の形態１による例も示している。
【０１５８】
メモリアクセスのサイクル数として、ＣＬＫ２０１を基準とした書き込みアクセスのサイクル数を用いた場合を説明する。
【０１５９】
ＣＰＵ２のメモリアクセスを４回行い、その後ＣＰＵ２のメモリアクセスと同じアドレスに対して、ＣＰＵ１がメモリアクセスを４回行う場合、本発明の実施の形態１では、ＣＰＵ２のメモリアクセスの後に、ＣＰＵ１がメモリアクセスを開始してもよいかを調整し、切り替えレジスタ３０４をＣＰＵ１選択に書き換え、ＣＰＵ１のメモリアクセスが開始される。
【０１６０】
本発明の実施の形態３では、ＣＰＵ２が最後にメモリアクセスするアドレスを比較アドレス７１０に書いておけば、ＣＰＵ２が4回目のメモリアドレスを行った後、自動的に切り替えレジスタ３０４に反転値が書き込まれ、ＣＰＵ１がメモリアクセスを開始してもよいかを調整した後、すぐにＣＰＵ１はメモリアクセスを開始することができる。
【０１６１】
このように本発明の実施の形態３では、メモリアクセス前に、比較アドレス７１０に、連続アクセスする最後のメモリアドレス値を設定し、これによりＣＰＵ１とＣＰＵ２のメモリの連続アクセスする領域を固定し、例えばＣＰＵ２のメモリの連続アクセス終了後、ＣＰＵ１のメモリの連続アクセスを行うように、ＣＰＵ１とＣＰＵ２で交互にアクセスを行う場合、ＣＰＵ１とＣＰＵ２でメモリアクセスを切り替えるために、切り替えレジスタ３０４のレジスタアクセスを行う必要がなくなる。
【０１６２】
よって、ＣＰＵ２からＣＰＵ１へ一定量のデータを引き渡す処理において、レジスタアクセスの回数を削減することができる。
【０１６３】
以上説明したように、一定量のデータを一方のＣＰＵから他方のＣＰＵへ繰り返し転送する場合、メモリアクセスするＣＰＵの交替に合わせて、自動的に切り替えレジスタ３０４の値を変更することにより、ＣＰＵによる切り替えレジスタ３０４のアクセスを削減することができ、メモリアクセス時間を短縮できる。
【０１６４】
なお、実施の形態２（図８）の構成にも、同様にして切り替えレジスタ更新回路７００を付加することができる。
【０１６５】
（実施の形態４）
図１６は、本発明の実施の形態４における半導体装置の共有メモリアクセス構成を示す図である。
【０１６６】
図１６は、図１に示した本発明の実施の形態１における共有メモリアクセス装置に、切り替えレジスタ更新回路８００とＣＰＵ１用にライトバッファ回路８１０とＣＰＵ２用にライトバッファ回路８２０を付加し、一方のライトバッファ回路に所定の数のアドレスやデータが保存され例えばＦＵＬＬになると、自動的に切り替えレジスタ３０４を変更し、ＦＵＬＬになったライトバッファ回路のメモリアクセスが実行されるものである。図１６中のレジスタアクセス回路３００は、切り替えレジスタ３０４に切替レジスタ変更信号Ｓ８５１が入力される以外は、図２の構成と同様である。なお、図１６では、図１のセレクタ１７０とセレクタ２７０の図示を省略しているが、図１と同様に存在している。
【０１６７】
図１７は、切り替えレジスタ更新回路８００の構成を示す図である。図１７において、８３０は同期化回路、８４０はアービタ、８５０はレジスタ変更タイミング調整回路である。
【０１６８】
同期化回路８３０は、ＣＰＵ２用のライトバッファ回路８２０がＦＵＬＬの状態で出力される、ＣＰＵ２のメモリアクセスの要求信号Ｓ８２６とＣＬＫ１０１を入力し、Ｓ８２６の信号をＣＬＫ１０１で同期化し、Ｓ８３１として出力する。
【０１６９】
アービタ８４０は、Ｓ８３１と、ＣＰＵ１用のライトバッファ回路８１０がＦＵＬＬの状態で出力される、ＣＰＵ１のメモリアクセスの要求信号Ｓ８１６とＣＬＫ１０１を入力し、先にライトバッファがＦＵＬＬになった方のＣＰＵを決定（選択）し、どちらのＣＰＵを選択するかを表すＣＰＵの選択信号Ｓ８４１と切り替えレジスタの変更の有無を表す変更信号Ｓ８４２を出力する。
【０１７０】
レジスタ変更タイミング調整回路８５０は、Ｓ８４１とＳ８４２と切り替えレジスタ３０４の出力信号Ｓ３０５とＣＬＫ１０１を入力し、Ｓ８４２によりレジスタの変更要求があると、変更したい切り替えレジスタの値を示すＳ８４１と現在の切り替えレジスタの値を示すＳ３０５を比較し、一致しない場合は、切り替えレジスタ３０４の値を変更させる信号を切り替えレジスタ変更信号Ｓ８５１として出力する。
【０１７１】
図１８は、本発明の実施の形態４におけるメモリアクセス例を示す。比較のため、従来技術による例も示している。
【０１７２】
メモリアクセスのサイクル数として、ＣＬＫ２０１を基準とした書き込みアクセスのサイクル数を用いた場合を説明する。
【０１７３】
ＣＰＵ２のメモリライトアクセスと、ＣＰＵ１のメモリライトアクセスを交互に4回行うを場合、本発明の実施の形態４では、ＣＰＵ２のメモリライトアクセス4回分がＣＰＵ２用のライトバッファ回路８２０に保持され、ＣＰＵ１のメモリライトアクセス４回分がＣＰＵ１用のライトバッファ回路８１０に保持される。
【０１７４】
メモリバッファの容量をアクセス4回分とすると、ＣＰＵ２のメモリライトアクセスＷ２４終了後、ＣＰＵ２のメモリアクセスの要求信号Ｓ８２６がアサ−トされる。
【０１７５】
ＣＰＵ１のメモリライトアクセスに対しては、Ｗ１４終了後、ＣＰＵ１のメモリアクセスの要求信号Ｓ８１６がアサ−トされる。
【０１７６】
ＣＰＵ２のメモリアクセスの要求信号Ｓ８２６の方が、ＣＰＵ１のメモリアクセスの要求信号Ｓ８１６より、早くアサ−トされるので、Ｗ２４終了後、ＣＰＵ２がメモリアクセスできるように、切り替えレジスタ３０４の値が自動的に変更される。
【０１７７】
切り替えレジスタ３０４が自動的に変更されると同時に、ＣＰＵ２のライトバッファ回路８２０が保持しているメモリライトアクセスを実行する。
【０１７８】
ＣＰＵ２のライトバッファ回路８２０が保持しているメモリライトアクセスがなくなると、ＣＰＵ２のメモリアクセスの要求信号Ｓ８２６がネゲートされ、ＣＰＵ１のメモリアクセスの要求信号Ｓ８１６のアサ−トを検出して、ＣＰＵ１がメモリアクセスできるように、切り替えレジスタ３０４の値が自動的に変更される。
【０１７９】
以上説明したように、ＣＰＵ毎にライトバッファ回路を持つ共有メモリアクセス装置において、ライトバッファ回路がＦＵＬＬになった場合、自動的に切り替えレジスタ３０４の値を変更されるため、ライトバッファ回路で保持されたデータのメモリアクセスを始める前にＣＰＵによる切り替えレジスタ３０４のアクセスを削減することができる。
【０１８０】
なお、実施の形態２（図８）の構成にも、同様にしてライトバッファ回路８１０および８２０と切り替えレジスタ更新回路８００を付加することができる。
【０１８１】
（実施の形態５）
図１９は、本発明の実施の形態５における切り替えレジスタ更新回路９００の構成を示す図である。
【０１８２】
本発明の実施の形態５は、図１６において、切り替えレジスタ更新回路８００の替わりに、図１９に示す切り替えレジスタ更新回路９００を設けた構成であり、一方のライトバッファ回路に保存された書き込みデータ数と、もう一方のライトバッファ回路に保存された書き込みデータ数を比較し、ライトバッファ回路の保存データがＦＵＬＬでない場合においても、自動的に切り替えレジスタ３０４の値を変更し、保存データ数が多い方のライトバッファ回路のメモリアクセスが実行されるものである。なお、図１９の切り替えレジスタ更新回路９００には、ＣＰＵ１のメモリアクセス要求信号Ｓ８１６の替わりに、ライトバッファ回路８１０からその保存データ数Ｓ９０２が入力され、ＣＰＵ２のメモリアクセス要求信号Ｓ８２６の替わりに、ライトバッファ回路８２０からその保存データ数Ｓ９０１が入力される。
【０１８３】
図１９において、９１０は同期化回路、９２０はデータ数の比較回路、９３０はレジスタ変更タイミング調整回路である。
【０１８４】
同期化回路９１０は、ＣＰＵ２用のライトバッファ回路８２０の保存データ数Ｓ９０１とＣＬＫ１０１を入力し、Ｓ９０１の信号をＣＬＫ１０１で同期化し、Ｓ９１１として出力する。
【０１８５】
データ数の比較回路９２０は、Ｓ９１１と、ＣＰＵ１用のライトバッファ回路８１０の保存データ数Ｓ９０２とＣＬＫ１０１を入力し、ライトバッファの保存データ数が多い方のＣＰＵを決定（選択）し、どちらのＣＰＵを選択するかを表すＣＰＵの選択信号Ｓ９２１と切り替えレジスタの変更の有無を表す変更信号Ｓ９２２を出力する。
【０１８６】
レジスタ変更タイミング調整回路９３０は、Ｓ９２１とＳ９２２と切り替えレジスタ３０４の出力信号Ｓ３０５とＣＬＫ１０１を入力し、Ｓ９２２によりレジスタの変更要求があると、変更したい切り替えレジスタの値を示すＳ９２１と現在の切り替えレジスタの値を示すＳ３０５を比較し、一致しない場合は、切り替えレジスタ３０４の値を変更させる信号を切り替えレジスタ変更信号Ｓ９３１として出力する。
【０１８７】
さらに、選択したＣＰＵに対応して、ＣＰＵ１のライトバッファ回路８１０の書き込み実行信号Ｓ９２３またはＣＰＵ２のライトバッファ回路８２０の書き込み実行信号Ｓ９２４をアサ−トし、書き込みを実行させる。
【０１８８】
以上の構成を用いれば、ＣＰＵ毎にライトバッファ回路を持つ共有メモリアクセス装置において、自動的に切り替えレジスタ３０４の値を変更し、ＣＰＵ１とＣＰＵ２のそれぞれのライトバッファ回路のうち、より残りデータ数が多いＣＰＵを選択して、メモリアクセスを実施させることが出来る。
【０１８９】
なお、実施の形態２（図８）の構成に、ライトバッファ回路８１０および８２０と切り替えレジスタ更新回路８００を付加する場合と同様にして、実施の形態２の構成に、ライトバッファ回路８１０および８２０と切り替えレジスタ更新回路９００を付加することができる。
【産業上の利用可能性】
【０１９０】
本発明にかかる半導体装置は、複数のＣＰＵの共有メモリアクセスの高速化を可能にする半導体装置等として有用である。
【図面の簡単な説明】
【０１９１】
【図１】本発明の実施の形態１における半導体装置の共有メモリアクセス構成を示す図である。
【図２】レジスタアクセス回路３００の構成を示す図である。
【図３】本発明の実施の形態１における切り替えレジスタ変更タイミングを示す図である。
【図４】本発明の実施の形態１におけるメモリアクセスタイミングを示す図である。
【図５】ＣＳ同期化回路３３０の構成を示す図である。
【図６】ＣＳ同期化回路３３０の動作タイミングを示す図である。
【図７】本発明の実施の形態１におけるメモリアクセス例を示す図である。
【図８】本発明の実施の形態２における半導体装置の共有メモリアクセス構成を示す図である。
【図９】メモリアクセス回路５００の構成を示す図である。
【図１０】メモリアクセス回路６００の構成を示す図である。
【図１１】本発明の実施の形態２におけるメモリアクセスタイミングを示す図である。
【図１２】本発明の実施の形態２におけるメモリアクセス例を示す図である。
【図１３】本発明の実施の形態３における半導体装置の共有メモリアクセス構成を示す図である。
【図１４】レジスタ更新回路７００の構成を示す図である。
【図１５】本発明の実施の形態３におけるメモリアクセス例を示す図である。
【図１６】本発明の実施の形態４における半導体装置の共有メモリアクセス構成を示す図である。
【図１７】レジスタ更新回路８００の構成を示す図である。
【図１８】本発明の実施の形態４におけるメモリアクセス例を示す図である。
【図１９】本発明の実施の形態５におけるレジスタ更新回路９００の構成を示す図である。
【図２０】従来技術における半導体装置の共有メモリアクセス構成を示す図である。
【図２１】従来技術におけるメモリアクセス例を示す図である。
【符号の説明】
【０１９２】
１，２  ホストＣＰＵ
１０１，１０２，３２１  クロック信号
１２０，３１０，３２０，１７０，２７０  セレクタ
１３０，２３０，５７０，６７０  メモリＩ／Ｆ
１５０，１６０，５８０，５９０，６８０，６９０  ＡＣＫ許可回路
１１０，５５０，６５０，８４０  アービタ
３００  レジスタアクセス回路
３０４  切り替えレジスタ
３３０，３９０，５２０，５４０，６２０，６４０，７４０，８３０  同期化回路
４００，４１０  フリップフロップ
５００，６００  メモリアクセス回路
５１０，６１０  ＣＳ許可回路
７００，８００，９００  切り替えレジスタ更新回路
【図１】
2005157929.tif 000003
【図２】
2005157929.tif 000004
【図３】
2005157929.tif 000005
【図４】
2005157929.tif 000006
【図５】
2005157929.tif 000007
【図６】
2005157929.tif 000008
【図７】
2005157929.tif 000009
【図８】
2005157929.tif 000010
【図９】
2005157929.tif 000011
【図１０】
2005157929.tif 000012
【図１１】
2005157929.tif 000013
【図１２】
2005157929.tif 000014
【図１３】
2005157929.tif 000015
【図１４】
2005157929.tif 000016
【図１５】
2005157929.tif 000017
【図１６】
2005157929.tif 000018
【図１７】
2005157929.tif 000019
【図１８】
2005157929.tif 000020
【図１９】
2005157929.tif 000021
【図２０】
2005157929.tif 000022
【図２１】
2005157929.tif 000023