(57)【要約】【課題】信頼性の高いＣＰＵ間の相互通信を可能とするメモリ装置を提供する。【解決手段】例えば個別レジスタ４０または共用ＳＲＡＭを介してＣＰＵ１００からＣＰＵ１０１にデータ転送できる。ここで、個別レジスタ４０を介したＣＰＵ１００から１０１へのデータ転送においても、ＦＩＦＯ２００を介して実行する。例えば共用ＳＲＡＭを介した第１のデータ転送後に個別レジスタ４０を介した第２のデータ転送を実行するときに、第１のデータ転送がＳＲＡＭコントローラで調停されてＦＩＦＯ２００で待たされた場合、個別レジスタ４０を介して実行される第２のデータ転送もＦＩＦＯを介すので、第２のデータ転送が第１のデータ転送に先だって完了されることがなく、適切にデータ転送を完了することができる。よってメモリ装置の信頼性を向上することができる。【選択図】図２
2008047010.tif 000002
【特許請求の範囲】
【請求項１】
複数のＣＰＵからアクセス可能なメモリ装置であって、
前記複数の前記ＣＰＵの個々に対応して設けられるＦＩＦＯと、
前記複数の前記ＣＰＵが、それぞれ対応する前記ＦＩＦＯを介して、書き込み／読み出し可能な共用記憶媒体と、
前記複数の前記ＣＰＵの個々に対応して設けられ、前記複数の前記ＣＰＵがそれぞれ対応する前記ＦＩＦＯを介して専用的に書き込み可能であり、且つ前記複数の前記ＣＰＵが、それぞれ対応する前記ＦＩＦＯを介して独立に読み出し可能な個別記憶媒体と
を備える、メモリ装置。
【請求項２】
前記個別記憶媒体の異なるアドレスに対応するデータを複数の前記ＣＰＵから同時に読み出し可能な
請求項１に記載のメモリ装置。
【請求項３】
前記個別記憶媒体の一にはその個別記憶媒体に書き込み可能な前記ＣＰＵから、前記共用記憶媒体のうち一のＣＰＵが専用的に書き込み可能である領域を示す領域情報が書き込まれ、
前記領域情報によって前記一の前記ＣＰＵが書込可能であると示された領域外への前記共用記憶媒体への書き込みを禁止する共用記憶媒体コントローラ
をさらに備える、請求項１又は請求項２に記載のメモリ装置。
【請求項４】
前記複数の前記ＣＰＵの個々に対応して設けられ、対応する一の前記ＣＰＵと通信可能なパラレルＩ／Ｆと、
前記複数の前記ＣＰＵの個々に対応して設けられ、対応する一の前記ＣＰＵと通信可能なシリアルＩ／Ｆと、
同一の前記ＣＰＵに対応する前記パラレルＩ／Ｆおよび前記シリアルＩ／Ｆを選択的に前記ＦＩＦＯと接続する選択部と
をさらに備える、請求項１又は２に記載のメモリ装置。
【請求項５】
すくなくとも一つの前記ＣＰＵに対応する前記パラレルＩ／Ｆおよび前記シリアルＩ／Ｆの選択信号を外部信号入力で定義し
それ以外の前記ＣＰＵに対応する前記パラレルＩ／Ｆおよび前記シリアルＩ／Ｆの選択を外部信号入力で選択されるＣＰＵから書き込み可能な個別記憶媒体に格納された信号によって行う、
請求項４に記載のメモリ装置。
【請求項６】
前記個別記憶媒体には、対応する一の前記ＣＰＵから、前記一の前記ＣＰＵ以外の前記ＣＰＵへの割り込み要求が書き込まれ、
前記割り込み要求をトリガとして、割り込み信号を前記一の前記ＣＰＵ以外の前記ＣＰＵへ出力する割り込み処理部
をさらに備える、請求項１又は２に記載のメモリ装置。
【請求項７】
前記割り込み処理部は、前記割り込み要求のレベル及びエッジの何れか一方を選択的にトリガとして、割り込み信号を前記一の前記ＣＰＵ以外の前記ＣＰＵへ出力する、請求項４に記載のメモリ装置。
【請求項８】
前記個別記憶媒体には、それぞれ対応する前記ＦＩＦＯの深さ情報が書き込まれ、
前記深さ情報に基づいて前記ＦＩＦＯの深さを変更するＦＩＦＯ深さ変更部
をさらに備える、請求項１又は２に記載のメモリ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ装置に関し、特に複数のＣＰＵ間の相互通信において介在する共用メモリ装置に関する。
【背景技術】
【０００２】
マルチプロセッサシステムにおける各プロセッサモジュール毎の個別メモリを、各プロセッサモジュールに共通に使用される共有メモリ内に個別領域として割り当てたマルチプロセッサシステムが特許文献１に開示されている。
【０００３】
また本発明に関連する技術として特許文献２ないし４が開示されている。
【０００４】
【特許文献１】特開２００１−１６６９６０号公報
【特許文献２】特開２０００−３４７９２７号公報
【特許文献３】特開平１０−１７１７５０号公報
【特許文献４】特開２００１−１５７０４９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
例えば、複数のＰＣ間で共用メモリを介して通信するネットワークがある。しかしながら、ＰＣ間のネットワーク通信では、機器内のＣＰＵ間通信に比べて、必要となるレスポンス速度が低い。即ち、ネットワーク通信における共用メモリをＰＣ間通信に用いるのには問題があった。
【０００６】
また、複数のＣＰＵで共用されるメモリおよびＣＰＵ毎に設けられる個別メモリを介した複数のＣＰＵ同士の相互通信に用いられるメモリ装置の信頼性向上が望まれていた。
【０００７】
そこで、本発明はＣＰＵ間の通信をハードウェアで保証する信頼性の高いメモリ装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係るメモリ装置の第１の態様は、複数のＣＰＵからアクセス可能なメモリ装置であって、前記複数の前記ＣＰＵの個々に対応して設けられるＦＩＦＯと、前記複数の前記ＣＰＵが、それぞれ対応する前記ＦＩＦＯを介して、書き込み／読み出し可能な共用記憶媒体と、前記複数の前記ＣＰＵの個々に対応して設けられ、前記複数の前記ＣＰＵがそれぞれ対応する前記ＦＩＦＯを介して専用的に書き込み可能であり、且つ前記複数の前記ＣＰＵが、それぞれ対応する前記ＦＩＦＯを介して独立に読み出し可能な個別記憶媒体とを備える。
【０００９】
本発明に係るメモリ装置の第２の態様は、第１の態様に係るメモリ装置であって、前記個別記憶媒体の異なるアドレスに対応するデータを複数の前記ＣＰＵから同時に読み出し可能である。
【００１０】
本発明に係るメモリ装置の第３の態様は、第１又は第２の態様に係るメモリ装置であって、前記個別記憶媒体の一にはその個別記憶媒体に書き込み可能な前記ＣＰＵから、前記共用記憶媒体のうち一のＣＰＵが専用的に書き込み可能である領域を示す領域情報が書き込まれ、前記領域情報によって前記一の前記ＣＰＵが書込可能であると示された領域外への前記共用記憶媒体への書き込みを禁止する共用記憶媒体コントローラをさらに備える。
【００１１】
本発明に係るメモリ装置の第４の態様は、第１又は第２の態様に係るメモリ装置であって、前記複数の前記ＣＰＵの個々に対応して設けられ、対応する一の前記ＣＰＵと通信可能なパラレルＩ／Ｆと、前記複数の前記ＣＰＵの個々に対応して設けられ、対応する一の前記ＣＰＵと通信可能なシリアルＩ／Ｆと、同一の前記ＣＰＵに対応する前記パラレルＩ／Ｆおよび前記シリアルＩ／Ｆを選択的に前記ＦＩＦＯと接続する選択部とをさらに備える。
【００１２】
本発明に係るメモリ装置の第５の態様は、第４の態様に係るメモリ装置であって、すくなくとも一つの前記ＣＰＵに対応する前記パラレルＩ／Ｆおよび前記シリアルＩ／Ｆの選択信号を外部信号入力で定義し、それ以外の前記ＣＰＵに対応する前記パラレルＩ／Ｆおよび前記シリアルＩ／Ｆの選択を外部信号入力で選択されるＣＰＵから書き込み可能な個別記憶媒体に格納された信号によって行う。
【００１３】
本発明に係るメモリ装置の第６の態様は、第１又は第２の態様に係るメモリ装置であって、前記個別記憶媒体には、対応する一の前記ＣＰＵから、前記一の前記ＣＰＵ以外の前記ＣＰＵへの割り込み要求が書き込まれ、前記割り込み要求をトリガとして、割り込み信号を前記一の前記ＣＰＵ以外の前記ＣＰＵへ出力する割り込み処理部をさらに備える。
【００１４】
本発明に係るメモリ装置の第７の態様は、第６の態様に係るメモリ装置であって、前記割り込み処理部は、前記割り込み要求のレベル及びエッジの何れか一方を選択的にトリガとして、割り込み信号を前記一の前記ＣＰＵ以外の前記ＣＰＵへ出力する。
【００１５】
本発明に係るメモリ装置の第８の態様は、第１又は第２の態様に係るメモリ装置であって、前記個別記憶媒体には、それぞれ対応する前記ＦＩＦＯの深さ情報が書き込まれ、前記深さ情報に基づいて前記ＦＩＦＯの深さを変更するＦＩＦＯ深さ変更部をさらに備える。
【発明の効果】
【００１６】
本発明に係るメモリ装置の第１の態様によると、個別記憶媒体を介した第１のデータ転送や共用記憶媒体を介した第２のデータ転送のいずれも、一旦ＦＩＦＯを通過する。よって、例えば第２のデータ転送後に第１のデータ転送を実行するときに、第２のデータ転送が調停されてＦＩＦＯで待たされた場合であっても、第１の転送が第２のデータ転送に先立って完了されることがなく、一連のデータ転送の順序が入れ替わらず、これらを不具合なく実行することができる。この点で、複数のＣＰＵ間の通信をハードウェアで保証しており、メモリ装置の信頼性を向上することができる。
【００１７】
本発明に係るメモリ装置の第２の態様によると、他のＣＰＵの個別記録媒体へのアクセス動作に関わらず、いつでも当該個別媒体からデータを読み出すことができる。ひいては、高いレスポンス速度でＣＰＵ間のデータ転送を実現できる。
【００１８】
本発明に係るメモリ装置の第３の態様によると、所定のＣＰＵが書き込んだデータを他のＣＰＵが変更または消去できないので、データを保護することができる。
【００１９】
本発明に係るメモリ装置の第４の態様によると、パラレル転送およびシリアル転送のいずれにも対応することができる。
【００２０】
本発明に係るメモリ装置の第５の態様によると、所定のＣＰＵがその他のＣＰＵの転送方式を変更できる。また、他のＣＰＵの転送方式の変更をソフトウェアで実行することができる。
【００２１】
本発明に係るメモリ装置の第６の態様によると、複数のＣＰＵから所定の第１のＣＰＵへの割り込み要求を、それぞれ複数のＣＰＵに対応する個別記憶媒体に書き込むので、複数のＣＰＵの各々が独立して第１のＣＰＵへの割り込みを実行できる。
【００２２】
本発明に係るメモリ装置の第７の態様によると、割り込み要求のレベル及びエッジのいずれか一方を選択的にトリガとして、割り込み信号を出力することができる。
【００２３】
本発明に係るメモリ装置の第８の態様によると、例えば、データ転送の容量が多いＣＰＵに対応するＦＩＦＯの深さを大きくし、データ転送の容量が小さいＣＰＵに対応するＦＩＦＯの深さを小さくできる。よって、容量の多いデータ転送を優先的に実行することができる。
【発明を実施するための最良の形態】
【００２４】
以下、図を参照して本発明に係る実施の形態を説明する。なお、同一符号は同一又は相当部分を示し重畳する説明は省略する。
【００２５】
（第１の実施の形態）
本発明に係るメモリ装置を備えるマルチプロセッサシステムの概略構成図を図１〜３に示す。図１は図２，３の連結図であり、図２および図３はマルチプロセッサシステムを示す。
【００２６】
マルチプロセッサシステムはＣＰＵ１００〜１０４と、メモリ装置１とを備える。メモリ装置１は、Ｉ／Ｆブロック１０〜１４と、ＦＩＦＯブロック２０〜２４と、レジスタコントローラ３０〜３４と、個別レジスタブロック４５と、ＳＲＡＭコントローラ５０と、ＳＲＡＭブロック６０とを備えている。なお、Ｉ／Ｆブロック１０〜１４と、ＦＩＦＯブロック２０〜２４と、レジスタコントローラ３０〜３４は、それぞれＣＰＵ１００〜１０４の個々に対応して設けられている。
【００２７】
まず、簡単にメモリ装置１の概要を説明した後、詳細を説明する。
【００２８】
個別レジスタブロック４５は個別レジスタ４０〜４４と、割り込み処理部４００〜４０４とを備えている。各個別レジスタ４０〜４４は、それぞれ対応するＣＰＵ１００〜１０４のみが専用的にデータを書き込み可能であり、また全てのＣＰＵ１００〜１０４が読み出し可能である。なお、割り込み処理部４０４については、第４の実施の形態で述べる。
【００２９】
ＳＲＡＭブロック６０は、共用ＳＲＡＭ６１を備えている。共用ＳＲＡＭ６１は、全てのＣＰＵ１００〜１０４が書き込み／読み出し可能である。
【００３０】
Ｉ／Ｆブロック１０〜１４は、それぞれＣＰＵ１００〜１０４とメモリ装置１とのデータ通信を実現する通信用のインターフェースであり、例えばパラレルＩ／Ｆである。
【００３１】
ＦＩＦＯブロック２０〜２４は、それぞれＩ／Ｆブロック１０〜１４と接続されており、後段のＳＲＡＭコントローラ５０の処理で待ちが発生してもスムーズな入力を可能とするものである。なお、ＦＩＦＯブロック２０が備えるＦＩＦＯ深さ変更部２０４については第５の実施の形態で述べる。
【００３２】
レジスタコントローラ３０〜３４は、それぞれＦＩＦＯブロック２０〜２４と接続されている。レジスタコントローラ３０は、ＣＰＵ１００からＩ／Ｆブロック１０、ＦＩＦＯブロック２０を介して書込データを受け取り、当該書込データを個別レジスタ領域４０に書き込む。また、レジスタコントローラ３０は、図４に示すメモリマップを認識し、対応する個別レジスタ４０のみに専用的に書込データを書き込む。なお、レジスタコントローラ３１〜３４も、レジスタコントローラ３０と同様に動作する。即ち、各ＣＰＵ１００〜１０４は、それぞれ専用の個別レジスタ４０〜４４にデータを書き込む。
【００３３】
また、個別レジスタ４０は、レジスタコントローラ３０を介さずにＦＩＦＯブロック２０〜２４と接続されている（図示せず）。即ち、全てのＣＰＵ１００〜１０４は、それぞれＩ／Ｆブロック１０〜１４、ＦＩＦＯブロック２０〜２４を介して、個別レジスタ４０から読出データを読み出すことができる。同様に、個別レジスタ４１〜４４のいずれもがレジスタコントローラ３１〜３４を介さずにＦＩＦＯブロック２０〜２４と接続されており、全てのＣＰＵ１００〜１０４が個別レジスタ４０〜４４の全ての領域から独立に読出データを読み出すことができる。
【００３４】
ＣＰＵ１００〜１０４は、それぞれ専用の個別レジスタ４０〜４４のみにいつでも（互いのＣＰＵの個別レジスタへのアクセス動作に関わらず）書き込み可能であり、またＣＰＵ１００〜１０４は、個別レジスタ４０〜４４の全ての領域からいつでも（互いのＣＰＵの個別レジスタへのアクセス動作に関わらず）独立に読み出し可能である。
【００３５】
ＳＲＡＭコントローラ５０は、ＦＩＦＯブロック２０〜２４からの書込データを共用ＳＲＡＭ６１に書き込み、共用ＳＲＡＭ６１から読み出した読出データをＦＩＦＯブロック２０〜２４に出力する。また、ＳＲＡＭコントローラ５０は、各ＦＩＦＯブロック２０〜２４から同時に共用ＳＲＡＭ６１へのアクセス（書き込み／読み出し）が生じると、調停してそれぞれのアクセスを実行する機能を有する。
【００３６】
従って、例えばＣＰＵ１００がＩ／Ｆブロック１０、ＦＩＦＯブロック２０、レジスタコントローラ３０を介して個別レジスタ４０にデータを書き込み、ＣＰＵ１０１がＩ／Ｆブロック１１、ＦＩＦＯブロック２１を介して、個別レジスタ４０から当該データを読み出すことで、ＣＰＵ１００からＣＰＵ１０１へデータ通信を行うことができる。  また、例えばＣＰＵ１００がＩ／Ｆブロック１０、ＦＩＦＯブロック２０、ＳＲＡＭコントローラ５０を介して共用ＳＲＡＭ６１にデータを書き込み、ＣＰＵ１０１がＩ／Ｆブロック１１、ＦＩＦＯブロック２１、ＳＲＡＭコントローラ５０を介して、共用ＳＲＡＭ６１から当該データを読み出すことで、ＣＰＵ１００からＣＰＵ１０１へデータ通信を行うことができる。
【００３７】
なお、コマンド転送等の小さい転送容量の場合は、個別レジスタ４０〜４４を介してデータ通信を行い、実データ等の大きい転送容量の場合は、共用ＳＲＡＭ６１を介してデータ通信を行う。
【００３８】
続いて、メモリ装置１の構成を詳述する。なお、代表的にＩ／Ｆブロック１０、ＦＩＦＯブロック２０、レジスタコントローラ３０、個別レジスタ４０、ＳＲＡＭコントローラ５０、共用ＳＲＡＭ６１について説明する。
【００３９】
Ｉ／Ｆブロック１０は、ＣＰＵ１００からチップセレクト信号（以下、ＣＳ信号）とアクセスイネーブル信号（以下、ＥＮ信号）とライトイネーブル信号（以下、ＷＥ信号）とアウトプットイネーブル信号（以下、ＯＥ信号）と入力データが入力される。ＣＳ信号は、ＣＰＵ１００の一連の書き込み／読み出しの開始時にＬに立ち下げられ、終了時にＨに立ち上げられる（Ａｃｔｉｖｅ  Ｌ）。
【００４０】
また、Ｉ／Ｆブロック１０は、入力されたＣＳ信号に対して、例えば非同期であれば２段のフリップフロップを介してメタステーブルを除去する処理を実行し、その後、例えば２クロック以下の短いノイズパルスを除去するノイズフィルタリング等を実行して、ＦＩＦＯブロック２０に出力する。
【００４１】
Ｉ／Ｆブロック１０は、入力されたＥＮ信号とＷＥ信号のＯＲ結果を後段のＷＥ信号としてＦＩＦＯブロック２０に出力し、入力されたＥＮ信号とＯＥ信号のＯＲ結果を後段のＯＥ信号としてＦＩＦＯブロック２０に出力する。即ち、ＣＰＵ１００は、データを書き込むときにＥＮ信号とＷＥ信号をＨとし、データを読み出すときにＥＮ信号とＯＥ信号をＨにする。なお、ＣＳ信号と同様に、非同期であればＷＥ信号、ＯＥ信号を２段のフリップフロップを介してメタステーブルを除去する処理を実行したうえで出力する。
【００４２】
入力データは、図５に示すように、初めの１６ビットがアドレスコマンドとして配置され、続いて実データである書込データのビットが配置される。１６ビットのアドレスコマンドは、最上位のビットが書き込みか読み出しかを示すビットであり、残りの１５ビットが書き込み／読み出しを開始するトップアドレスを示す。書き込みの場合、最上位ビットは”１”とする。
【００４３】
Ｉ／Ｆブロック１０は、入力されたデータから１６ビットのアドレスコマンドを抽出し、さらに当該アドレスコマンドから最上位ビットと下位１５ビットのトップアドレスを抽出する。そして、最上位ビットと、トップアドレスとをＦＩＦＯブロック２０に出力する。その後、最上位ビットが”１”の場合は、書込データをＦＩＦＯブロック２０に出力する。最上位ビットが”０”の場合は、ＦＩＦＯブロック２０から読出データを読み出してＣＰＵ１００に出力する。
【００４４】
ＦＩＦＯブロック２０は、ＦＩＦＯ２００と、ライトアドレスカウンタ２０１と、リードアドレスカウンタ２０２とを備えている。ＦＩＦＯブロック２０には、ＣＳ信号とＷＥ信号とＯＥ信号と最上位ビットとトップアドレスと書込データとが入力される。
【００４５】
まず、アドレスコマンドの最上位ビットが”１”の場合、ＦＩＦＯブロック２０は、入力された書込データを順次にＦＩＦＯ２００に記録する。
【００４６】
ライトアドレスカウンタ２０１は、例えば１バイトの書込データがＦＩＦＯ２００に書き込まれる度に、アドレス（トップアドレス）に１をインクリメントする。そして書込データがＦＩＦＯ２００の所定の深さに達すると、ＦＩＦＯブロック２０は、ＲＥＡＤＹ信号をＬに立ち下げた上で、書込データとアドレスとをレジスタコントローラ３０またはＳＲＡＭコントローラ５０に出力する。なお、ＲＥＡＤＹ信号は、ＨのときにＦＩＦＯ２００へのアクセスが可能であることを示す信号であり、ＣＰＵ１００に通信される。
【００４７】
ＦＩＦＯ２００が空になると、ＦＩＦＯブロック２０は再びＲＥＡＤＹ信号をＨに立ち上げる。以降は、同様の動作を繰り返して書込データとアドレスとをレジスタコントローラ３０またはＳＲＡＭコントローラ５０に出力する。
【００４８】
一方、アドレスコマンドの最上位ビットが”０”の場合、トップアドレスが個別レジスタ４０〜４４のいずれかを示しているときは、ＦＩＦＯブロック２０は、ＲＥＡＤＹ信号をＬに立ち下げ、当該トップアドレスから読出データを読み出してＦＩＦＯ２００に記録する。そして、ＦＩＦＯブロック２０はＲＥＡＤＹ信号を再びＨに立ち上げる。
【００４９】
リードアドレスカウンタ２０２は、１バイトの読出データがＦＩＦＯ２００に書き込まれる毎に、アドレス（トップアドレス）に順次に１をインクリメントする。ＦＩＦＯブロック２０は、インクリメント後のアドレスから順次に読出データを読み出して、ＦＩＦＯ２００の深さ分の読出データをＦＩＦＯ２００に記録する。ＦＩＦＯ２００の読出データがＣＰＵ１００によって全て読み出されるとＲｅａｄｙ信号をＬに立ち下げ、再びＦＩＦＯ２００に読出データが記録されるとＲｅａｄｙ信号をＨに立ち上げる。以降は、同様の動作を繰り返して読出データをＦＩＦＯ２００に順次に記録する。
【００５０】
また、トップアドレスが共用ＳＲＡＭ６１を示しているときは、ＦＩＦＯブロック２０は、ＲＥＡＤＹ信号をＬに立ち下げ、最上位ビットと、トップアドレスをＳＲＡＭコントローラ５０に出力する。ＳＲＡＭコントローラ５０からトップアドレスの読み出しデータがＦＩＦＯ２００に書き込まれると、ＦＩＦＯブロック２０は再びＲＥＡＤＹをＨに立ち上げる。
【００５１】
リードアドレスカウンタ２０２はアドレス（トップアドレス）に１をインクリメントする。ＦＩＦＯブロック２０は順次にインクリメント後のアドレスをＳＲＡＭコントローラ５０に出力する。そして、ＳＲＡＭコントローラ５０からの読出データがＦＩＦＯ２００に記録され、ＣＰＵ１００によって順次にＦＩＦＯ２００から読出データが読み出される。
【００５２】
なお、書き込み／読み出しに関わらずＳＲＡＭコントローラ５０から待ちの指令が入力されると、ＦＩＦＯブロック２０はデータを維持したまま動作を「待ち」状態とする。
【００５３】
レジスタコントローラ３０は、ＦＩＦＯブロック２０からＷＥ信号と、アドレスと、書込データが入力され、当該アドレスに当該書込データを書き込む。なお、レジスタコントローラ３０は、以下の処理により、ＣＰＵ１００のみが専用的に個別レジスタ４０に書き込む。
【００５４】
例えばＣＰＵ１００が個別レジスタ４１にデータを書き込もうとすると、レジスタコントローラ３０は、入力されたトップアドレスが個別レジスタ４０外であることを確認し、当該書込データを無視する。また、例えば１６バイトの書込データが個別レジスタ４０内の途中アドレスから書き込まれ、３バイトを残して個別レジスタ４０の最上位アドレスに達したときは、当該３バイトを個別レジスタ４０の最下位アドレスから書き込む。
【００５５】
ＳＲＡＭコントローラ５０は、ＦＩＦＯブロック２０からＷＥ信号とアドレスと、書込データが入力され、当該アドレス（共用ＳＲＡＭ６１内）に書込データを書き込む。またＳＲＡＭコントローラ５０は、ＦＩＦＯブロック２０からＯＥ信号と、アドレスが入力され、当該アドレス（共用ＳＲＡＭ６１内）の読出データを読み出してＦＩＦＯ２００に記録する。
【００５６】
さらに、ＳＲＡＭコントローラ５０は、ＣＰＵ１００〜１０４から共用ＳＲＡＭ６１のアクセスを調停する。具体的には、ＣＰＵ１００〜１０４から共用ＳＲＡＭ６１へのアクセスが同時に実行されると、対応するＦＩＦＯブロック２０〜２４へＳＲＡＭコントローラ５０への出力を待つように通知する。
【００５７】
続いて、本メモリ装置１の動作について説明する。メモリ装置１の動作例として、（１）ＣＰＵ１００が個別レジスタ４０にデータを書き込む場合、（２）ＣＰＵ１００が個別レジスタ４１からデータを読み出す場合、（３）ＣＰＵ１００が共用ＳＲＡＭ６１にデータを書き込む場合、（４）ＣＰＵ１０１が共用ＳＲＡＭ６１からデータを読み出す場合について説明する。
【００５８】
（１）ＣＰＵ１００が個別レジスタ４０にデータを書き込む場合
ＣＰＵ１００が個別レジスタ４０にデータを書き込む場合の動作を示すフローチャートを図６に示す。図６にはそれぞれＣＰＵ１００の動作と、当該動作に対応したメモリ装置１の動作が示されている。
【００５９】
まず、ステップＳ１にて、ＣＰＵ１００は、ＲＥＡＤＹ信号がＨであるかどうかを判断する。ＲＥＡＤＹ信号がＬであると判断したときは、ＦＩＦＯブロック２０へのアクセスができないことを示しているので、再びステップＳ１を実行する。ＲＥＡＤＹ信号がＨであると判断したときは、ステップＳ２にて、ＣＰＵ１００はＣＳ信号をＬに立ち下げる。
【００６０】
次に、ステップＳ３にて、ＣＰＵ１００は、ＥＮ信号と、ＷＥ信号をＬに立ち下げて、入力データのうち例えば上位８ビットをＩ／Ｆ部１０に出力する。そしてＣＰＵ１００はＥＮ信号と、ＷＥ信号をＨに立ち上げる。
【００６１】
次に、ステップＳ４にて、ＣＰＵ１００は、ＥＮ信号と、ＷＥ信号をＬに立ち下げて、入力データのうち次の８ビットをＩ／Ｆブロック１０に出力する。そしてＣＰＵ１００はＥＮ信号と、ＷＥ信号をＨに立ち上げる。
【００６２】
この時、メモリ装置１側では、ステップＳ９にて、入力データの上位８ビットと次の８ビットから成るアドレスコマンドを受け取ったＩ／Ｆブロック１０は、当該アドレスコマンドから最上位ビットと、トップアドレスをＦＩＦＯブロック２０に出力する。なお、ここでは最上位ビットは”１”（書き込み）であり、トップアドレスは個別レジスタ４０内のアドレス値である。
【００６３】
次に、ＣＰＵ１００側において、ステップＳ５にて、ＣＰＵ１００は、ＲＥＡＤＹ信号がＨであるかどうかを確認する。ＲＥＡＤＹ信号がＬであれば、再びステップＳ５を実行する。ＲＥＡＤＹ信号がＨであれば、ステップＳ６にて、ＣＰＵ１００は、ＥＮ信号と、ＷＥ信号をＬに立ち下げて、例えば８ビットの書込データをＩ／Ｆブロック２０に出力し、再びＥＮ信号とＷＥ信号をＨに立ち上げる。そしてＣＰＵ１００は、ステップＳ７にて書込データを全て出力したと判断するまでステップＳ５〜Ｓ７を繰り返し実行する。
【００６４】
ＣＰＵ１００が当該アドレスの書込データを全て出力すると、ステップＳ８でＣＳ信号をＨに立ち上げる。メモリ装置１側では、ステップＳ１０にて、Ｉ／Ｆブロック１０は入力された書込データをＦＩＦＯブロック２０に出力し、ＦＩＦＯブロック２０は当該書込データをＦＩＦＯ２００に書き込む。また、ライトアドレスカウンタ２０１は、例えば１バイトの書込データがＦＩＦＯ２００に書き込まれる度に、アドレス（トップアドレス）に１をインクリメントする。なお、最初の書込データに対してはインクリメントしない。
【００６５】
次に、ステップＳ１１にて、ＦＩＦＯブロック２０はＣＳ信号がＨであるかどうかを確認する。ＣＳ信号がＬであれば、まだ書込データの全てが出力されていないので、続けてＦＩＦＯブロック２０への書き込みが可能か否か、即ち、ＦＩＦＯブロック２０は、ＦＩＦＯ２００の書込データがＦＩＦＯ２００の深さ（例えば８バイト）に達しているかどうかをステップＳ１２で確認する。まだ達していなければ、ＣＰＵ１００からの書込データが入力される（ステップＳ８）のを待って再びステップＳ１０〜Ｓ１２を繰り返し実行する。
【００６６】
そして、書込データがＦＩＦＯ２００の深さに達すると、ステップＳ１３にて、ＦＩＦＯブロック２０はＲＥＡＤＹ信号をＬに立ち下げる。この時点で、まだ書込データの全てが出力されていないとき、ＣＰＵ１００は、ステップＳ５でＲＥＡＤＹ信号がＬであると判断し、ＲＥＡＤＹ信号がＨになるまでステップＳ５を繰り返し実行する。
【００６７】
次に、ＣＰＵ１００からの書込データが全て出力されてＣＳ信号がＨになるか、書込データがＦＩＦＯ深さにまで達したかの少なくともいずれかになると、ステップＳ１４にて、ＦＩＦＯブロック２０は、ＦＩＦＯ２００の書込データとアドレスとをレジスタコントローラ３０に出力する。レジスタコントローラ３０は当該アドレスが個別レジスタ４０内であれば、当該アドレスに当該書込データを順次に書き込む。なお、レジスタコントローラ３０は、トップアドレスが個別レジスタ４０外であれば書込データを無効とし、トップアドレスが個別レジスタ４０内であるが、インクリメント後のアドレスが個別レジスタ４０外となるときは、個別レジスタ４０の最下位アドレスから書込データを書き込む。
【００６８】
次に、ステップＳ１５にて、ＦＩＦＯブロック２０は、ＦＩＦＯ２００が空になると、ＲＥＡＤＹ信号をＨに立ち上げる。この時点で、ＣＰＵ１００がステップＳ５を実行し続けていた場合、再び８ビットの書込データを出力する（ステップＳ６）。そして、再びステップＳ５〜Ｓ７を繰り返し実行する。一方、メモリ装置１では、ＣＰＵ１００が８ビットの書込データを出力する（ステップＳ８）の度に、ステップＳ１０〜Ｓ１５を繰り返し実行する。
【００６９】
そして、ステップＳ７にて、ＣＰＵ１００は全ての書込データを出力したと判断すると、ステップＳ８にて、ＣＰＵ１００はＣＳ信号をＨに立ち上げる。一方、ステップＳ１１にて、ＦＩＦＯブロック２０はＣＳ信号がＨであると判断すると、ステップＳ１３〜Ｓ１５を実行して、ＦＩＦＯ２００に残っている書込データを個別レジスタ４０に書き込む。このようにしてＦＩＦＯブロック２０はＣＰＵ１００からの書込みデータを個別レジスタ４０に格納するときのバッファとして機能する。
【００７０】
（２）ＣＰＵ１００が個別レジスタ４１からデータを読み出す場合
ＣＰＵ１００が個別レジスタ４１にデータを書き込む場合の動作を図７を参照して説明する。
【００７１】
ステップＳＴ１〜ＳＴ５，ＳＴ９は、（１）で述べたステップＳ１〜Ｓ５，Ｓ９と同一の動作である。なお、入力データはアドレスコマンドのみであり、最上位ビットは”０”、トップアドレスは個別レジスタ４１内のアドレス値である。
【００７２】
ステップＳＴ９を経て、ステップＳＴ１０にて、ＦＩＦＯブロック２０はＲＥＡＤＹ信号をＬ立ち下げる。この時、ステップＳＴ５にて、ＣＰＵ１００はＲＥＡＤＹ信号がＬであると判断して、ステップＳＴ５を繰り返し実行する。
【００７３】
次にステップＳＴ１１〜ＳＴ１３にて、ＦＩＦＯブロック２０は、ＦＩＦＯ２００の深さ（８バイト）のデータを個別レジスタ４１から読み出す。具体的に、まずステップＳＴ１１にて、ＦＩＦＯブロック２０は、トップアドレスが示す個別レジスタ４１から読出データを取り出してＦＩＦＯ２００に記録する。
【００７４】
次にステップＳＴ１２にて、ＦＩＦＯブロック２０は、ＲＥＡＤＹ信号をＨに立ち上げる。この時、ステップＳＴ５にてＣＰＵ１００はＲＥＡＤＹ信号がＨであると判断して、ステップＳＴ６にて、ＣＰＵ１００はＩ／Ｆブロック１０を介してＦＩＦＯ２００に記録される８バイト（ＦＩＦＯ２００の深さ）の読出データを一気に読み出す。そして、ステップＳＴ７にて、ＣＰＵ１００が読み出しが終了したと判断するまで、ＣＰＵ１００はステップＳＴ５〜ＳＴ７を繰り返して実行する。
【００７５】
一方、ＦＩＦＯブロック２０では、ステップＳＴ１３にて、リードアドレスカウンタがアドレス（トップアドレス）に１をインクリメントし、ＦＩＦＯブロック２０はインクリメント後のアドレスから順次に読出データをＦＩＦＯ２００に記録して、ＦＩＦＯ２００の深さ（８バイト）分の読出データをＦＩＦＯ２００に記録する。なお、外部ポートのＣＰＵ１００の動作（ステップＳ８）よりもメモリ装置１の内部動作（ステップＳＴ１２）の方が早いため、ＣＰＵ１００はステップＳＴ６ではＲＥＡＤＹ信号を確認することなく８バイトの読出データをＦＩＦＯ２００から読み出すことができる。
【００７６】
そして、ステップＳＴ１４にて、ＦＩＦＯブロック２０は、ＣＳ信号がＨであるかどうかを判断する。ＣＳ信号がＬであればさらにＣＰＵ１００への読出データを与える必要がある。ステップＳＴ１５にてＦＩＦＯブロック２０はＦＩＦＯ２００の読出データが全て読み出されたかどうかを判断する。全てが読み出されていないときは、再びステップＳＴ１５を実行する。全てが読み出されたときは、ステップＳＴ１０〜ステップＳＴ１５を繰り返し実行する。
【００７７】
そして、ステップＳＴ７にて、ＣＰＵ１００が読み出しを終了したと判断したときは、ステップＳＴ８にて、ＣＰＵ１００はＣＳ信号をＨに立ち上げる。ＣＳ信号がＨになると、メモリ装置１側では、ステップＳＴ１４にて、ＦＩＦＯブロック２０はＣＳ信号がＨであると判断し、読み出し動作を停止する。
【００７８】
（３）ＣＰＵ１００が共用ＳＲＡＭ６１にデータを書き込む場合
ＣＰＵ１００が共用ＳＲＡＭ６１にデータを書き込む場合の動作は、図６におけるステップＳＴ１４が異なるだけであるので、その他のステップについては省略する。
【００７９】
ステップＳＴ１４にて、ＦＩＦＯブロック２０は、ＳＲＡＭコントローラ５０に書き込みを通知する（例えば、最上位ビットを出力する）。ＳＲＡＭコントローラ５０が他のＣＰＵのアクセス動作を実行しているときは、ＦＩＦＯブロック２０に出力を待つように通知する。通知を受けたＦＩＦＯブロック２０は書込データとアドレスを維持し、ＳＲＡＭコントローラ５０から許可を得たうえで書込データとアドレスを出力する。
【００８０】
書込データとアドレスを受け取ったＳＲＡＭコントローラ５０は、共用ＳＲＡＭ６１に当該書込データを書き込む。
【００８１】
（４）ＣＰＵ１００が共用ＳＲＡＭ６１からデータを読み出す場合
ＣＰＵ１００が共用ＳＲＡＭ６１からデータを読み出す場合の動作は、図７におけるステップＳＴ１１，ＳＴ１３が異なるだけであるので、その他のステップについては省略する。
【００８２】
ステップＳＴ１１にて、ＦＩＦＯブロック２０は、ＳＲＡＭコントローラ５０に読み出しを通知する（例えば、最上位ビットを出力する）。ＳＲＡＭコントローラ５０が他のＣＰＵのアクセス動作を実行しているときは、ＦＩＦＯブロック２０に対して読み出しを待つように通知する。通知を受けたＦＩＦＯブロック２０はアドレスを維持し、ＳＲＡＭコントローラ５０から許可を得たうえでトップアドレスを出力する。
【００８３】
トップアドレスを受け取ったＳＲＡＭコントローラ５０は、共用ＳＲＡＭ６１から読出データを取り出してＦＩＦＯブロック２０に出力する。ＦＩＦＯブロック２０は、受け取った読出データをＦＩＦＯ２００に書き込む。
【００８４】
次に、ステップＳＴ１２にて、ＲＥＡＤＹ信号をＨに立ち上げた後、ステップＳＴ１３にて、ＦＩＦＯブロック２０は、ＳＲＡＭコントローラ５０から順次に入力される読出データをＦＩＦＯ２００に記録する。
【００８５】
なお、上述した（１）〜（４）は、ＣＰＵ１００について説明したが、ＣＰＵ１０１〜１０４に関しても同様に動作する。即ち、例えばＣＰＵ１００が個別レジスタ４０にデータを書き込み、当該データをＣＰＵ１０１が読み出すことでデータを転送することができる。また個別レジスタへのアクセスはいつでも（互いのＣＰＵの個別レジスタ領域へのアクセス動作に関わらず）可能であるため、高いレスポンス速度でのデータ通信を実現できる。
【００８６】
また、同様に共用ＳＲＡＭ６１を介してデータを転送することができる。ここで、上述したように、ＳＲＡＭコントローラ５０はＦＩＦＯの深さ分を単位として各ＣＰＵのアクセスを実行する。加えて、外部ポートのＣＰＵ動作よりもメモリ装置１の内部動作の方が速い。よって、例えばＣＰＵ１００からのアクセスデータがＦＩＦＯに記録されている間に、ＳＲＡＭコントローラ６１は、高速にＣＰＵ１０１のアクセスデータを処理することができる。従って、複数のＣＰＵから共用ＳＲＡＭ６１にアクセスする場合、外部のＣＰＵは高いレスポンス速度でのデータ通信を実現できる。
【００８７】
また個別レジスタを介した転送や共用ＳＲＡＭを介した転送のいずれも、一旦ＦＩＦＯを通過する。ここで、個別レジスタへのアクセスは他のＣＰＵ動作に関わらずいつでも実行可能であるので、通常ＦＩＦＯを介することなく個別レジスタを用いてＣＰＵ間でデータ転送を実行することが可能である。しかしながら、個別でレジスタを介したデータ転送においても、ＦＩＦＯを介して実行することで以下に述べる利点を有する。
【００８８】
例えば共用ＳＲＡＭを介したデータ転送後に個別レジスタを介したコマンド転送を実行する場合について考える。データ転送がＳＲＡＭコントローラで調停されてＦＩＦＯで待たされた場合、ＦＩＦＯを介さずコマンド転送を実行すれば、コマンド転送がデータ転送よりも先に完了する。この場合、転送順序が替わり、ＣＰＵ間の通信に不具合が生じる。
【００８９】
一方、本第１の実施の形態においては、データ転送がＳＲＡＭコントローラで調停されてＦＩＦＯで待たされた場合、個別レジスタを介して実行されるコマンド転送もＦＩＦＯを介すので、データ転送に先立ってコマンド転送が完了されることがない。なぜなら、ＳＲＡＭコントローラで調停された場合、ＦＩＦＯブロックはＲＥＡＤＹ信号をＬとするため、ＣＰＵはコマンド転送を実行しないためである。従って、転送順序が変わらず、ＣＰＵ間の通信不具合を回避することができる。この点で、ＣＰＵ間の通信をハードウェアで保証しており、メモリ装置１の信頼性を向上することができる。
【００９０】
（第２の実施の形態）
本発明に係る第２の実施の形態のメモリ装置について説明する。なお、第２の実施の形態に係るメモリ装置の概略構成図は第１の実施の形態と同一である。第１の実施の形態では、共用ＳＲＡＭ６１は全てのＣＰＵ１００〜１０４が書き込み／読み出し可能であるので、例えばＣＰＵ１００が共用ＳＲＡＭ６１に書き込んだ重要なデータが他のＣＰＵ１０１〜１０４によって上書き、消去されてしまう可能性がある。そこで、第２の実施の形態では、共用ＳＲＡＭ６１のうち、それぞれＣＰＵ１００〜１０４のみが専用的に書き込み可能な領域を設定する。
【００９１】
また、ＣＰＵ１００〜１０４が共用ＳＲＡＭ６１の全ての領域を書き込み可能とする状態（書込モードと呼称する）と、共用ＳＲＡＭ６１のうち設定された領域のみにそれぞれ書き込み可能とする状態（排他的書込モードと呼称する）のいずれか一方を選択して動作させる。なお、いずれの状態でも、全てのＣＰＵ１００〜１０４が共用ＳＲＡＭ６１の全ての領域から読み出し可能である。
【００９２】
具体的に、個別レジスタ４０には、各ＣＰＵｉ（ｉ＝１００〜１０４の整数）が書込モードで動作するか、排他的書込モードで動作するかを示すＷＰＴＥＮ＿ｉと、各ＣＰＵｉのみが専用的に書き込み可能な領域ＷＰＲＴ＿ｉ（領域情報に相当）とを設定する領域が設けられている。
【００９３】
また、当該領域はＳＲＡＭコントローラ５０と繋がっている。個別レジスタ４０にＷＰＴＥＮ＿ｉと、ＷＰＲＴ＿ｉが書き込まれると、ＳＲＡＭコントローラ５０はＷＰＴＥＮ＿ｉと、ＷＰＲＴ＿ｉとに基づいて各ＣＰＵ１００〜１０４からの共用ＳＲＡＭ６１へのアクセスを制限する。
【００９４】
ＣＰＵ１００が排他的書込モードで動作する場合を例にして動作を説明する。まず、ＣＰＵ１００は、個別レジスタ４０のＷＰＴＥＮ＿１００に”１”を書き込む。なお、ここでは、ＷＰＴＥＮ＿ｉが”１”のとき排他的書込モードを示すものとする。
【００９５】
次に、ＣＰＵ１００は、個別レジスタ４０のＷＰＲＴ＿１００に、共用ＳＲＡＭ６１のうち、ＣＰＵ１００のみが書き込み可能な領域を設定する（書き込む）。
【００９６】
そして、ＳＲＡＭコントローラ５０は、ＷＰＴＥＮ＿１００とＷＰＲＴ＿１００とに基づいて、ＣＰＵ１００からの書き込みをＷＰＲＴ＿１００で示す領域のみに制限する。具体的に、例えばＣＰＵ１００からの書込データのアドレスがＷＰＲＴ＿１００で示す領域以外の領域であるとき、ＳＲＡＭコントローラ５０は当該書込データを無効とする。また、他のＣＰＵ１０１〜１０４からの書込データのアドレスがＷＰＲＴ＿１００で示す領域であるとき、ＳＲＡＭコントローラ５０は当該書込データを無効（禁止）とする。
【００９７】
一方、ＣＰＵ１００が書込モードで動作する場合について説明すると、まずＣＰＵ１００が個別レジスタ４０のＷＰＴＥＮ＿１００に”０”を書き込む。ＳＲＡＭコントローラ５０は、ＷＰＴＥＮ＿１００に基づいて、ＣＰＵ１００からの書き込みを共用ＳＲＡＭ６１の全ての領域で実行する。
【００９８】
従って、本メモリ装置１では、ＣＰＵ１００〜１０４が共用ＳＲＡＭ６１の全ての領域に書き込み可能な状態と、共用ＳＲＡＭ６１のうち、それぞれ設定された領域のみに排他的書き込み可能な状態とをＣＰＵ毎に選択して動作させることができる。よって、ＣＰＵｉが排他的書込モードの場合に、ＣＰＵｉが共用ＳＲＡＭ６１に書き込んだデータを保護することができる。
【００９９】
なお、ＷＰＴＥＮ＿ｉ、ＷＰＲＴ＿ｉは個別レジスタ４０のみに設定されているが、これは、ＣＰＵ１００のみがＷＰＴＥＮ＿ｉと、ＷＰＲＴ＿ｉの設定を変更可能であることを意味している。仮に、ＣＰＵ１０１〜１０４が自由にＷＰＴＥＮ＿ｉ、ＷＰＲＴ＿ｉの設定を変更可能であると、互いに排他的書き込み可能な領域が重複する恐れが生じるからである。
【０１００】
（第３の実施の形態）
本発明に係る第３の実施の形態のメモリ装置について説明する。なお、第３の実施の形態に係るメモリ装置の概略構成は第１の実施の形態と同一である。但し、第３の実施の形態に係るメモリ装置は、第１の実施の形態と比較して、さらにパラレル通信とシリアル通信のいずれにも対応できる態様となっている。
【０１０１】
図８はＩ／Ｆブロック１０の概略構成図である。以下、図８を参照して具体的に説明する。
【０１０２】
Ｉ／Ｆブロック１０は、パラレルＩ／Ｆ１００と、シリアルＩ／Ｆ１０１と、マルチプレクサ１０２，１０３とを備えている。なお、Ｉ／Ｆブロック１１〜１４は、Ｉ／Ｆブロック１０と同一構成であるので、以下、代表的にＩ／Ｆブロック１０について説明する。
【０１０３】
Ｉ／Ｆブロック１０には、選択信号が入力される。当該選択信号は、パラレルＩ／Ｆ１００にはイネーブル信号として、シリアルＩ／Ｆ１０１にはディゼーブル信号として入力される。従って、選択信号がＨのときはパラレルＩ／Ｆ１００が選択され、選択信号がＬのときはシリアルＩ／Ｆ１０１が選択される。
【０１０４】
またＩ／Ｆブロック１０にはＣＰＵ１００からＣＳ信号とＥＮ信号とＯＥ信号とＷＥ信号と入力データが入力される。なお、ＣＳ信号とＥＮ信号とＯＥ信号とＷＥ信号については、第１の実施の形態と同一であるので説明を省略する。
【０１０５】
入力データはパラレル転送に適するように、例えば８ビットパラレル転送に必要となる８本の入力線を介してパラレルＩ／Ｆ１００に入力される。シリアル転送の場合、入力データは８本の入力線のうち１本を介してシリアルＩ／Ｆ１０１に入力される。またシリアルＩ／Ｆ１０１に必要となるクロックは、８本の入力線のうち入力データと異なる１本を介してシリアルＩ／Ｆ１０１に入力される。
【０１０６】
そして、パラレルＩ／Ｆ１００及びシリアルＩ／Ｆ１０１は、それぞれ入力データからトップアドレスを抽出して、トップアドレスと書込データをマルチプレクサ１０２に出力する。
【０１０７】
マルチプレクサ１０２は、選択信号に基づいて、パラレルＩ／Ｆ１００及びシリアルＩ／Ｆ１０１の何れか一方とＦＩＦＯブロック２０とを選択的に接続する。そしてマルチプレクサ１０２は、選択信号がＨのときにパラレルＩ／Ｆ１００からＣＳ信号、ＷＥ信号、ＯＥ信号、トップアドレス、書込データをＦＩＦＯブロック２０に出力し、選択信号がＬのときにシリアルＩ／Ｆ１０１からＣＳ信号、ＷＥ信号、ＯＥ信号、トップアドレス、書込データＦＩＦＯブロック２０に出力する。
【０１０８】
また、ＦＩＦＯブロック２０から読出データがパラレルＩ／Ｆ１００及びシリアルＩ／Ｆ１０１に入力される。パラレルＩ／Ｆ１００及びシリアルＩ／Ｆ１０１は読出データをそれぞれパラレル転送及びシリアル転送に適したデータに変換して、マルチプレクサ１０３に出力する。
【０１０９】
マルチプレクサ１０３は、選択信号に基づいてパラレルＩ／Ｆ１００及びシリアルＩ／Ｆ１０１の何れか一方とＣＰＵ１００とを選択的に接続する。そしてマルチプレクサ１０３は、選択信号がＨのときにパラレルＩ／Ｆ１００からの読出データをＣＰＵ１００に出力し、選択信号がＬのときにシリアルＩ／Ｆ１０１からの読出データをＣＰＵ１００に出力する。ここで、パラレルＩ／Ｆ１００からＣＰＵ１００への出力データはパラレル転送に適するように、例えば８ビットパラレル転送に必要となる８本の出力線を介してＣＰＵ１００に出力される。一方、シリアルＩ／Ｆ１０１からの出力データは、８本の出力線のうち１本を介してＣＰＵ１００に出力される。
【０１１０】
パラレルＩ／Ｆ１００からＣＰＵ１００への出力データのうち７ビット（出力線のうち７本）はＣＰＵ１００に直接に接続され、シリアルＩ／Ｆ１０１からの出力データと、パラレルＩ／Ｆ１００からの出力データのうち１ビット（出力線のうちの１本）とがマルチプレクサ１０３によって選択的にＣＰＵ１００と接続される。
【０１１１】
なお、パラレル転送とシリアル転送では入力データのタイミングが異なるが、このタイミング差はＦＩＦＯブロック２０で吸収することができる。
【０１１２】
従って、ＣＰＵ１００と、Ｉ／Ｆブロック１０との接続を物理的に変更することなく、制御信号に基づいて、パラレル転送とシリアル転送に対応することができる。
【０１１３】
また、ＣＰＵ１００は、個別レジスタ４０に、ＣＰＵ１０１〜１０４の転送方式を設定することができる。ＣＰＵ１００が個別レジスタ４０に設定された値を選択信号として各Ｉ／Ｆブロック２１〜２４に接続することで、ＣＰＵ１０１〜１０４の転送方式を個別に決定できる。なお、Ｉ／Ｆブロック１０は選択信号線がピンで入力され（選択信号を外部信号入力で定義し）、ＣＰＵ１００の転送方式を予め定めている。ＣＰＵ１００の転送方式が決定していないために最初のアクセスがどちらの転送方式で行うのか不明となり、アクセスできないという不具合を回避するためである。
【０１１４】
以上のように、本第３の実施の形態に係るメモリ装置では、シリアル転送、パラレル転送のいずれにも対応することができ、いずれか一方の転送機能しか有しないシステムであっても本メモリ装置を適用することができる。また、ＣＰＵ１００が各ＣＰＵ１０１〜１０４の転送方式を個別に設定することができる。
【０１１５】
（第４の実施の形態）
本発明に係る第４の実施の形態に係るメモリ装置について図９を用いて説明する。なお、第４の実施の形態に係るメモリ装置の概略構成は第１の実施の形態と同一である。ここでは、ＣＰＵ間の割り込み処理を実行する割り込み処理部４００〜４０４について説明する。
【０１１６】
個別レジスタブロック４５は、割り込み処理部４００〜４０４を備えている。割り込み処理部４００〜４０４の出力は、それぞれＣＰＵ１００〜１０４と接続されている。ＣＰＵ１００と対応して設けられた割り込み処理部４００は、個別レジスタ４０〜４４に書き込まれる割り込み要求のパラメータ（後述する）を認識して、ＣＰＵ１００に割り込み信号（ＩＮＴ＿ＯＵＴ信号）を出力する。なお、割り込み処理部４０１〜４０４は割り込み処理部４００と同様にそれぞれＣＰＵ１０１〜１０４にＩＮＴ＿ＯＵＴ信号を出力する。
【０１１７】
ここで、個別レジスタ４０〜４４に設定される割り込み要求のパラメータを以下に説明する。例えば個別レジスタ４０には、ＩＮＴＲＱ１００＿ｉと、ＩＣＡＵＳＥｉ＿１００と、ＩＭＡＳＫｉ＿１００と、ＩＭＯＤＥｉ＿１００とが設定される。なお、個別レジスタ４１〜４４にも個別レジスタ４０と同様のパラメータが設定される。
【０１１８】
次に、各パラメータの説明を割り込み処理部４００の機能と共に述べる。図９は割り込み処理部４００の機能を模式的に示した図である。なお、実線で囲まれたパラメータは個別レジスタ４０に設定されるパラメータであり、破線で囲まれたパラメータはＣＰＵｉに対応する個別レジスタに設定されるパラメータである。
【０１１９】
ＩＮＴＲＱｉ＿１００は、ＣＰＵｉからＣＰＵ１００（ｉ＝１００〜１０４の整数）への割り込み要求を示すパラメータである。
【０１２０】
ＩＭＡＳＫｉ＿１００は、ＣＰＵ１００がＣＰＵｉからの割り込みを受け付けるかどうかを示すパラメータである。図９に示すように、割り込み処理部４００はＩＭＡＳＫｉ＿１００とＩＣＡＵＳＥｉ＿１００のアンドをＩＮＴ＿ＯＵＴ信号として出力するので、ＩＭＡＳＫｉ＿１００が”０”のとき割り込みが禁じられる。
【０１２１】
ＩＣＡＵＳＥｉ＿１００は、ＩＮＴ＿ＯＵＴ信号を出力するためのパラメータであり、”１”のときＩＮＴ＿ＯＵＴ信号を出力する。但し、ＩＭＡＳＫｉ＿１００が”０”であればＩＮＴ＿ＯＵＴ信号を出力しないのは言うまでもない。
【０１２２】
ＩＭＯＤＥｉ＿１００は、ＩＣＡＵＳＥｉ＿１００を”１”にする条件を選択するためのパラメータである。具体的に、ＩＭＯＤＥｉ＿１００は、ＩＮＴＲＱｉ＿１００の立ち上がりエッジを検出してＩＣＡＵＳＥｉ＿１００を”１”とするモード（エッジモードと呼ぶ）と、ＩＮＴＲＱｉ＿１００のレベル（”１”か”０”か）をそのままＩＣＡＵＳＥｉ＿１００とするモード（レベルモードと呼ぶ）とを選択するパラメータである。
【０１２３】
続いて、ＣＰＵ１０１からＣＰＵ１００へ割り込みを実行する場合を例にして、割り込み動作について説明する。まず、ＣＰＵ１００は自身への割り込み要求を受け付けるために、個別レジスタ４０のＩＭＡＳＫ１０１＿１００（ＣＰＵ１０１からＣＰＵ１００への割り込みマスク）に例えば”１”に書き込む。
【０１２４】
ＣＰＵ１０１からＣＰＵ１００への割り込み要求のトリガをレベルモードで受け付けるか、エッジモードで受け付けるかを設定するために、ＣＰＵ１００は個別レジスタ４０のＩＭＯＤＥ１０１＿１００に例えば”１”を書き込む。なお、ＩＭＯＤＥｉ＿１００が”０”のときにレベルモード、”１”のときにエッジモードを示すものとする。
【０１２５】
このように、まずＣＰＵ１００への割り込み処理の条件を設定する。このような状況でＣＰＵ１０１は、ＣＰＵ１００への割り込み要求を発行する。具体的には、ＣＰＵ１０１は、個別レジスタ４１のＩＮＴＲＱ１０１＿１００（ＣＰＵ１０１からＣＰＵ１００への割り込み要求）に”１”を書き込む。
【０１２６】
割り込み処理部４００は、個別レジスタ４１に設定されたＩＮＴＥＱ１０１＿１００と、個別レジスタ４０に設定されたＩＭＯＤＥ１０１＿１００とからＩＣＡＵＳＥ１０１＿１００を決定する（図９参照）。具体的に、ＩＭＯＤＥ１０１＿１００が”１”（エッジモード）であるので、割り込み処理部４００は、ＩＮＴＲＥＱ１０１＿１００の立ち上がりエッジを検出して、ＩＣＡＵＳＥ１０１＿１００を”１”にする。
【０１２７】
そして割り込み処理部４００は、ＩＣＡＵＳＥ１０１＿１００とＩＭＡＳＫ１０１＿１００のアンド結果をＩＮＴ＿ＯＵＴ信号としてＣＰＵ１００に出力する。
【０１２８】
また、エッジモードでは、割り込みを掛けるＣＰＵ１０１のＩＮＴＲＱ１＿０の立ち上がりエッジをトリガとしてＩＮＴ＿ＯＵＴ信号が出力されるため、割り込みを掛けるＣＰＵ１０１が個別レジスタ４１のＩＮＴＲＱ１０１＿１００を立ち下げても割り込みをクリアすることができない。従って、割り込みを受けたＣＰＵ１００が個別レジスタ４０のＩＣＡＵＳＥ１＿０に”０”を書き込むことで、割り込みをクリアする。
【０１２９】
一方、レベルモード（ＩＭＯＤＥ１０１＿１００が”０”）では、割り込み処理部４００は、個別レジスタ４１のＩＮＴＲＥＱ１０１＿１００をそのままＩＣＡＵＳＥ１０１＿１００とする（図９参照）。そして割り込み処理部４００は、ＩＣＡＵＳＥ１０１＿１００とＩＭＡＳＫ１０１＿１００のアンド結果をＩＮＴ＿ＯＵＴ信号としてＣＰＵ１００に出力する。また、割り込みを掛けるＣＰＵ１０１が個別レジスタ４１のＩＮＴＲＥＱ１０１＿１００を”０”にすることで、ＩＣＡＵＳＥ１０１＿１００も”０”となり（図９参照）、割り込みがクリアされる。
【０１３０】
なお、ＣＰＵ１００へのＩＮＴ＿ＯＵＴ信号は、ＩＭＡＳＫ１０１＿１００とＩＣＡＵＳＥ１０１＿１００のアンド結果であるとして説明したが、実際は図１０に示すように、ＩＭＡＳＫｉ＿１００とＩＣＡＵＳＥｉ＿１００のアンド結果の少なくともいずれか一つが”１”であれば、ＩＮＴ＿ＯＵＴ信号を”１”（Ｈ）としてＣＰＵ１００に出力する。
【０１３１】
なお、ＣＰＵ１００への割り込みを例にして説明したが、ＣＰＵ１０１〜１０４への割り込みも同様である。
【０１３２】
従って、例えばＣＰＵ１０１〜１０４が同時期にＣＰＵ１００に割り込みを掛けることができ、また逆にＣＰＵ１００がＣＰＵ１０１〜１０４に一斉に割り込みを掛けることができる。さらに、ＣＰＵからの割り込み要求は、当該ＣＰＵのみ書き込み可能な個別レジスタに記録されるため、他のＣＰＵの割り込み動作と独立して実行することができる。
【０１３３】
また、割り込み要求のトリガとしてエッジモードとレベルモードを選択できるので、何れか一方の機能しか有していないシステムであっても適用が可能である。
【０１３４】
なお、割り込み処理部４００〜４０４は個別レジスタブロック４５に設けられている必要はなく、別に設けられても良い。
【０１３５】
（第５の実施の形態）
本発明に係る第５の実施の形態のメモリ装置について説明する。なお、第５の実施の形態に係るメモリ装置の概略構成は図１と同一である。ここでは、ＦＩＦＯブロック２０〜２４がそれぞれ備えるＦＩＦＯ深さ変更部２０４，２１４，２２４，２３４，２４４（ＦＩＦＯ深さ変更部２０４のみを図示）について説明する。
【０１３６】
個別レジスタ４０〜４４には、それぞれＦＩＦＯブロック２０〜２４が備えるＦＩＦＯの深さが設定される。例えば個別レジスタ４０には、ＦＩＦＯ２００に対して、書き込み用のＦＩＦＯ深さであるＷＦＦＤＰＴＨ０と、読み出し用のＦＩＦＯ深さであるＲＦＦＤＰＴＨ０を設定する領域が設けられている。同様に、個別レジスタ４１〜４４には、ＷＦＦＤＰＴＨ１〜４，ＲＦＦＤＰＴＨ１〜４を設定する領域がそれぞれ設けられている。
【０１３７】
そしてＣＰＵ１００〜１０４は、それぞれ個別レジスタ４０〜４４の当該領域に、自身のＣＰＵに対応するＦＩＦＯの深さを書き込む。
【０１３８】
各ＦＩＦＯ深さ変更部２０４，２１４，２２４，２３４，２４４は、それぞれ個別レジスタ４０〜４４のうちＷＦＦＤＰＴＨ１〜４，ＲＦＦＤＰＴＨ１〜４が設定される領域と接続されている。そして各ＦＩＦＯ深さ変更部２０４，２１４，２２４，２３４，２４４は、それぞれＦＩＦＯブロック２０〜２４に設けられたＦＩＦＯの深さを変更する。
【０１３９】
従って、各ＣＰＵ１００〜１０４に対応するＦＩＦＯの深さを任意に設定することができる。即ち、共用ＳＲＡＭ６１へのアクセスデータ量が多いＣＰＵに対して、ＦＩＦＯの深さをより深く設定することで、優先的に当該アクセス処理を実行することができる。
【０１４０】
なお、本発明を第１〜第５の実施の形態で説明したが、各実施の形態の構成を組み合わせて実施しても構わない。その場合、複合的に各実施の形態の効果を発揮できる。
【図面の簡単な説明】
【０１４１】
【図１】図２および図３の連結図である。
【図２】第１の実施の形態に係るメモリ装置を備えるマルチプロセッサシステムの概略構成図である。
【図３】第１の実施の形態に係るメモリ装置を備えるマルチプロセッサシステムの概略構成図である。
【図４】個別レジスタと共用ＳＲＡＭを示す図である。
【図５】入力データを示す図である。
【図６】書き込み動作を示すフローチャートである。
【図７】読み出し動作を示すフローチャートである。
【図８】Ｉ／Ｆブロックの概略構成図である。
【図９】割り込み処理部の機能の一部を示す模式図である。
【図１０】割り込み処理部の機能の一部を示す模式図である。
【符号の説明】
【０１４２】
４０〜４４  個別レジスタ
５０  ＳＲＡＭコントローラ
５１  共用ＳＲＡＭ
１００  パラレルＩ／Ｆ
１０１  シリアルＩ／Ｆ
２００  ＦＩＦＯ
２０４  ＦＩＦＯ深さ変更部
４００〜４０４  割り込み処理部
【図１】
2008047010.tif 000003
【図２】
2008047010.tif 000004
【図３】
2008047010.tif 000005
【図４】
2008047010.tif 000006
【図５】
2008047010.tif 000007
【図６】
2008047010.tif 000008
【図７】
2008047010.tif 000009
【図８】
2008047010.tif 000010
【図９】
2008047010.tif 000011
【図１０】
2008047010.tif 000012