(57)【特許請求の範囲】
【請求項１】
データが入出力され互いに独立した２つの入出力ポートをそれぞれ備えた複数のデュアルポートメモリと、
複数の前記デュアルポートメモリにおいて入出力されるデータを処理する処理装置と、
複数の前記デュアルポートメモリに対する前記処理装置のアクセスを制御するメモリアクセスコントローラと、
前記メモリアクセスコントローラに入力されるクロック信号を発信するクロック信号発信器と、
前記メモリアクセスコントローラに備えられ、複数の前記デュアルポートメモリのうちの一のデュアルポートメモリから読出された読出データを、前記クロック信号に順次同期させて保持データとして複数保持し、複数の前記保持データの中から前記処理装置に出力する正規のデータを決定するデータ決定部と
を有し、
前記データ決定部は、複数の前記保持データ同士の異同に基づいて、複数の前記保持データのいずれを前記正規のデータとするのかを判定する判定部を備えること
を特徴とするマルチプロセッサシステム。
【請求項２】
前記判定部は、複数の保持データ同士の異同と、正規のデータとすべき保持データとを対応付けた判定テーブルを記憶していること
を特徴とする請求項１記載のマルチプロセッサシステム。
【請求項３】
前記メモリアクセスコントローラは、複数の前記デュアルポートメモリに接続されたデータバスラインのうち前記読出データが送信された一のデータバスラインを、複数の前記デュアルポートメモリに入力されるアドレス信号に基づいて選択するライン選択部を備えること
を特徴とする請求項１又は２に記載のマルチプロセッサシステム。
【請求項４】
前記ライン選択部は、前記データ決定部に設けられていること
を特徴とする請求項３記載のマルチプロセッサシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デュアルポートメモリなどの記憶装置を備えるマルチプロセッサシステムに関する。
【背景技術】
【０００２】
特許文献１には、保護制御演算に影響を与えることなく、遠隔からの整定変更，設定変更，装置内部のデータ転送を高速に実行するに好適なディジタル保護制御装置が開示されている。このディジタル保護制御装置は、デュアルポートメモリにより密結合されたリアルタイム処理演算ブロックとネットワーク処理ブロックとを有している。リアルタイム処理演算ブロックは、リアルタイム処理演算用の演算ＣＰＵと、デュアルポートメモリの書込み制御を実行するデュアルポートメモリ制御回路とを備えている。ネットワーク処理ブロックは、ネットワーク処理用のネットワークＣＰＵと、デュアルポートメモリのネットワークＣＰＵ側からのアクセスを制御するデュアルポートメモリ制御回路とを備えている。
【０００３】
ところで、特定用途向け集積回路（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：ＡＳＩＣ）やＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）に内蔵されたデュアルポートメモリは、一般的に複数のブロックに分けて組み込まれている。使用するデュアルポートメモリのブロック数が少ない場合は、１つのデュアルポートメモリと１つのデュアルポートメモリ制御回路とを１対１として構成すればよい。しかしながら、使用するデュアルポートメモリのブロック数が多い場合、デュアルポートメモリとデュアルポートメモリ制御回路とを１対１で構成すると、ブロック数に比例してデュアルポートメモリ制御回路の個数が増えてしまう。そうすると、ＡＳＩＣやＦＰＧＡのリソースを多く消費してしまうという問題が生じる。
【０００４】
また、ＡＳＩＣやＦＰＧＡでは、複数のブロックのデュアルポートメモリからそれぞれ読出された読出データは、複数のブロックの出力側に接続された選択回路に入力され、この選択回路によって選択された読出データのみが出力データバスを介してデュアルポートメモリ制御回路に出力されるのが一般的である。このように、複数個のデュアルポートメモリから読出された読出データのうちの１つを選択回路で選択してデュアルポートメモリ制御回路に入力する方法では、デュアルポートメモリの配線が長くなる。さらに、選択回路を構成するゲート回路の段数が多くなる。その結果、データバスに出力された読出データの遅延が増大する。読出データが多ビットのデータである場合、ビット毎に遅延時間が異なると、デュアルポートメモリ制御回路が正規のデータとは異なる不定値の読出データを保持してしまうという問題が生じる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−６４８９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
デュアルポートメモリ制御回路が設けられたリアルタイム処理演算ブロックやネットワーク処理ブロックなどの処理ブロックに、送信されるべき正規のデータとは異なる不定値のデータが送信されてしまうと、処理ブロックが誤動作してしまう可能性があるという問題がある。
本発明の目的は、適用される機器の誤動作を防止できるマルチプロセッサシステムを提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明の一態様によるマルチプロセッサシステムは、データが入出力され互いに独立した２つの入出力ポートをそれぞれ備えた複数のデュアルポートメモリと、複数の前記デュアルポートメモリにおいて入出力されるデータを処理する処理装置と、複数の前記デュアルポートメモリに対する前記処理装置のアクセスを制御するメモリアクセスコントローラと、前記メモリアクセスコントローラに入力されるクロック信号を発信するクロック信号発信器と、前記メモリアクセスコントローラに備えられ、複数の前記デュアルポートメモリのうちの一のデュアルポートメモリから読出された読出データを、前記クロック信号に順次同期させて保持データとして複数保持し、複数の前記保持データの中から前記処理装置に出力する正規のデータを決定するデータ決定部とを有し、前記データ決定部は、複数の前記保持データ同士の異同に基づいて、複数の前記保持データのいずれを前記正規のデータとするのかを判定する判定部を備えることを特徴とする。
【発明の効果】
【０００８】
本発明の一態様によれば、適用される機器の誤動作を防止できる。
【図面の簡単な説明】
【０００９】
【図１】本発明の一実施形態によるマルチプロセッサシステムの概略構成を示すブロック図である。
【図２】本発明の一実施形態によるマルチプロセッサシステムに備えられた第１メモリアクセスコントローラの概略構成を示すブロック図である。
【図３】本発明の一実施形態によるマルチプロセッサシステムにおけるデータ書込み動作のタイミングチャートを示す図である。
【図４】本発明の一実施形態によるマルチプロセッサシステムにおけるデータ読出し動作のタイミングチャートを示す図である。
【図５】本発明の一実施形態によるマルチプロセッサシステムにおける読出データのビット信号間の信号遅延について説明する図である。
【図６】本発明の一実施形態によるマルチプロセッサシステムの第１メモリアクセスコントローラに備えられた判定回路が記憶している判定テーブルを示す図である。
【図７】本発明の一実施形態によるマルチプロセッサシステムによるデータ読出し動作の他の例によるタイミングチャートを示す図である。
【図８】本発明の一実施形態によるマルチプロセッサシステムであって、図７に示すデータ読出し動作に対応する判定テーブルを示す図である。
【発明を実施するための形態】
【００１０】
本発明の一実施形態によるマルチプロセッサシステムについて図１から図８を用いて説明する。本実施形態によるマルチプロセッサシステムは、例えば産業用機器に適用され、例えば複数のデュアルポートメモリを用いて２つの処理装置の間でデータ交換できる。
【００１１】
［マルチプロセッサシステムの概略構成］
図１に示すように、マルチプロセッサシステム１は、データが入出力され互いに独立した第１及び第２入出力ポート（２つの入出力ポートの一例）をそれぞれ備えた複数のデュアルポートメモリ３３−１，３３−２，・・・，３３−ｎ（ｎは、２以上の自然数）を有している。以下、「デュアルポートメモリ３３−１，３３−２，・・・，３３−ｎ」を「デュアルポートメモリ３３」と総称する場合がある。なお、図１では、第１入出力ポートは「第１Ｉ／Ｏポート」として図示され、第２入出力ポートは「第２Ｉ／Ｏポート」として図示され、デュアルポートメモリ（Ｄｕａｌ  Ｐｏｒｔ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）は、「ＤＰ−ＲＡＭ」として図示されている。
【００１２】
デュアルポートメモリ３３−１は、第１データが入出力される第１入出力ポート３３１−１、第１入出力ポート３３１−１とは独立して設けられて第２データが入出力される第２入出力ポート３３２−１、及び第１データと第２データとを記憶する記憶部３３３−１を備えている。デュアルポートメモリ３３−２は、第１データが入出力される第１入出力ポート３３１−２、第１入出力ポート３３１−２とは独立して設けられて第２データが入出力される第２入出力ポート３３２−２、及び第１データと第２データとを記憶する記憶部３３３−２を備えている。また、デュアルポートメモリ３３−ｎは、第１データが入出力される第１入出力ポート３３１−ｎ、第１入出力ポート３３１−ｎとは独立して設けられて第２データが入出力される第２入出力ポート３３２−ｎ、及び第１データと第２データとを記憶する記憶部３３３−ｎを備えている。
【００１３】
デュアルポートメモリ３３−１に備えられた記憶部３３３−１は、アレイ構造のメモリセルを有している。デュアルポートメモリ３３−１は、第１入出力ポート３３１−１を介して入力される第１データ書込信号Ｌ＿ＷＲ２及び第１アドレス信号Ｌ＿ＡＤＲに応じて、これらの信号とともに入力される第１書込データ（第１データの一例）Ｌ＿ＤＴ１を記憶部３３３−１に備えられたメモリセルに書き込むようになっている。また、デュアルポートメモリ３３−１は、第２入出力ポート３３２を介して入力される第２データ書込信号Ｒ＿ＷＲ２及び第２アドレス信号Ｒ＿ＡＤＲに応じて、これらの信号とともに入力される第２書込データ（第２データの一例）Ｒ＿ＤＴ１を記憶部３３３−１に備えられたメモリセルに書き込むようになっている。また、デュアルポートメモリ３３−１は、第１入出力ポート３３１−１を介して入力される第１アドレス信号Ｌ＿ＡＤＲに応じて、記憶部３３３−１に備えられたメモリセルから第１読出データ（第１データの一例）Ｌ＿ＤＴ２−１を読出すようになっている。さらに、デュアルポートメモリ３３−１は、第２入出力ポート３３２−１を介して入力される第２アドレス信号Ｒ＿ＡＤＲに応じて、記憶部３３３−１に備えられたメモリセルから第２読出データ（第２データの一例）Ｒ＿ＤＴ２−１を読出すようになっている。
【００１４】
第１入出力ポート３３１−１には、第１アドレス信号Ｌ＿ＡＤＲ及び第１データ書込信号Ｌ＿ＷＲ２が入力される入力端子（不図示）が設けられている。また、第１入出力ポート３３１−１には、第１書込データＬ＿ＤＴ１が入力され第１読出データＬ＿ＤＴ２−１が出力される入出力端子（不図示）が設けられている。第２入出力ポート３３２−１には、第２アドレス信号Ｒ＿ＡＤＲ及び第２データ書込信号Ｒ＿ＷＲ２が入力される入力端子（不図示）が設けられている。また、第２入出力ポート３３２−１には、第２書込データＲ＿ＤＴ１が入力され第２読出データＲ＿ＤＴ２−１が出力される入出力端子（不図示）が設けられている。
【００１５】
デュアルポートメモリ３３−２，・・・，３３−ｎに備えられた第１入出力ポート３３１−２，・・・３３１−ｎは、デュアルポートメモリ３３−１に備えられた第１入出力ポート３３１−１と同様の構成を有しているため、説明は省略する。また、デュアルポートメモリ３３−２，・・・，３３−ｎに備えられた第２入出力ポート３３２−２，・・・３３２−ｎは、デュアルポートメモリ３３−１に備えられた第２入出力ポート３３２−１と同様の構成を有しているため、説明は省略する。また、デュアルポートメモリ３３−２，・・・，３３−ｎに備えられた記憶部３３３−２，・・・，３３３−ｎは、デュアルポートメモリ３３−１に備えられた記憶部３３３−１と同様の構成を有しているため、説明は省略する。
【００１６】
マルチプロセッサシステム１は、複数のデュアルポートメモリ３３において入出力される第１データを処理する第１中央処理装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：ＣＰＵ）（処理装置の一例）１１と、複数のデュアルポートメモリ３３において入出力される第２データを処理する第２ＣＰＵ（処理装置の一例）１２とを有している。
【００１７】
また、マルチプロセッサシステム１は、第１メモリアクセスコントローラ３１及び第２メモリアクセスコントローラ３２と、第１メモリアクセスコントローラ３１及び第２メモリアクセスコントローラ３２にそれぞれ入力されるクロック信号ＣＬＫを発信するクロック信号発信器１４とを有している。第１メモリアクセスコントローラ３１は、複数のデュアルポートメモリ３３に対する第１ＣＰＵ１１のアクセスを制御するようになっている。第２メモリアクセスコントローラ３２は、複数のデュアルポートメモリ３３に対する第２ＣＰＵ１２のアクセスを制御するようになっている。
【００１８】
第１ＣＰＵ１１は、複数のデュアルポートメモリ３３及び第１メモリアクセスコントローラ３１と接続されている。第１ＣＰＵ１１は、第１書込データＬ＿ＤＴ１を書込む対象のメモリセル又は読出し対象のメモリセルのアドレスを指定するための第１アドレス信号Ｌ＿ＡＤＲを複数のデュアルポートメモリ３３のそれぞれに出力する。第１アドレス信号Ｌ＿ＡＤＲは、第１入出力ポート３３１−１，３３１−２，・・・，３３１−ｎを介して記憶部３３３−１，３３３−２，・・・，３３３−ｎにそれぞれ入力される。以下、「第１入出力ポート３３１−１，３３１−２，・・・，３３１−ｎ」を「第１入出力ポート３３１」と総称し、「記憶部３３３−１，３３３−２，・・・，３３３−ｎ」を「記憶部３３３」と総称する場合がある。
【００１９】
また、第１アドレス信号Ｌ＿ＡＤＲは第１メモリアクセスコントローラ３１にも入力される。第１アドレス信号Ｌ＿ＡＤＲは、第１ＣＰＵ１１と複数のデュアルポートメモリ３３との間及び第１ＣＰＵ１１と第１メモリアクセスコントローラ３１との間に設けられた第１アドレスバスライン２１を通して複数のデュアルポートメモリ３３及び第１メモリアクセスコントローラ３１にそれぞれ送信される。
【００２０】
また、第１ＣＰＵ１１は、データ書込みを指示するための第１データ書込指示信号Ｌ＿ＷＲ１と、データ読出しを指示するための第１データ読出指示信号Ｌ＿ＲＤ１とを第１メモリアクセスコントローラ３１に出力する。また、第１ＣＰＵ１１は、複数のデュアルポートメモリ３３のいずれか１つに書き込むための第１書込データＬ＿ＤＴ１を第１メモリアクセスコントローラ３１に出力する。さらに、第１ＣＰＵ１１には、複数のデュアルポートメモリ３３のいずれか１つから読出されて第１メモリアクセスコントローラ３１から出力された第１読出データＬ＿ＤＴ２が入力されるようになっている。
【００２１】
マルチプロセッサシステム１は、第１ＣＰＵ１１と第１メモリアクセスコントローラ３１との間に設けられたＣＰＵ側第１データバスライン２２を有している。ＣＰＵ側第１データバスライン２２には、第１ＣＰＵ１１から出力されて複数のデュアルポートメモリ３３のいずれか１つに書込まれる第１データとしての第１書込データＬ＿ＤＴ１が送信される。さらに、ＣＰＵ側第１データバスライン２２には、複数のデュアルポートメモリ３３のいずれか１つから読出されて第１ＣＰＵ１１に入力される第１データとしての第１読出データＬ＿ＤＴ２も送信される。このように、ＣＰＵ側第１データバスライン２２は、第１データを双方向に送信可能になっている。
【００２２】
マルチプロセッサシステム１は、第１メモリアクセスコントローラ３１と複数のデュアルポートメモリ３３との間に設けられて複数のデュアルポートメモリ３３のいずれか１つに書込まれる第１データを送信可能な書込用メモリ側第１データバスライン２３ｗを有している。書込用メモリ側第１データバスライン２３ｗは、第１メモリアクセスコントローラ３１と第１入出力ポート３３１との間に設けられている。第１入出力ポート３３１−１，３３１−２，・・・，３３１−ｎは書込用メモリ側第１データバスライン２３ｗを介して互いに接続されている。
【００２３】
第１書込データＬ＿ＤＴ１は、ＣＰＵ側第１データバスライン２２を通して第１メモリアクセスコントローラ３１に送信される。第１メモリアクセスコントローラ３１に送信された第１書込データＬ＿ＤＴ１は、メモリ側第１データバスライン２３ｗを通して複数のデュアルポートメモリ３３にそれぞれ送信される。第１書込データＬ＿ＤＴ１は、複数のデュアルポートメモリ３３のうちの第１アドレス信号Ｌ＿ＡＤＲの値に応じて選択された一のデュアルポートメモリの記憶部に第１入出力ポートを介して記憶される。
【００２４】
マルチプロセッサシステム１は、第１メモリアクセスコントローラ３１と複数のデュアルポートメモリ３３との間にそれぞれ設けられて複数のデュアルポートメモリ３３からそれぞれ読出される第１データを個別に送信可能な読出用メモリ側第１データバスライン２３ｒ−１，２３ｒ−２，・・・，２３ｒ−ｎを有している。読出用メモリ側第１データバスライン２３ｒ−２，２３ｒ−２，・・・，２３ｒ−ｎは、互いに独立して設けられている。
【００２５】
読出用メモリ側第１データバスライン２３ｒ−１は、第１メモリアクセスコントローラ３１と第１入出力ポート３３１−１との間に設けられている。第１入出力ポート３３１−１を介してデュアルポートメモリ３３−１から読出された第１読出データＬ＿ＤＴ２−１（第１データの一例）は、読出用メモリ側第１データバスライン２３ｒ−１を通して第１メモリアクセスコントローラ３１に入力される。
【００２６】
読出用メモリ側第１データバスライン２３ｒ−２は、第１メモリアクセスコントローラ３１と第１入出力ポート３３１−２との間に設けられている。第１入出力ポート３３１−２を介してデュアルポートメモリ３３−２から読出された第１読出データＬ＿ＤＴ２−２（第１データの一例）は、読出用メモリ側第１データバスライン２３ｒ−２を通して第１メモリアクセスコントローラ３１に入力される。
【００２７】
読出用メモリ側第１データバスライン２３ｒ−ｎは、第１メモリアクセスコントローラ３１と第１入出力ポート３３１−ｎとの間に設けられている。第１入出力ポート３３１−ｎを介してデュアルポートメモリ３３−ｎから読出された第１読出データＬ＿ＤＴ２−ｎ（第１データの一例）は、読出用メモリ側第１データバスライン２３ｒ−ｎを通して第１メモリアクセスコントローラ３１に入力される。
【００２８】
第１メモリアクセスコントローラ３１は、第１ＣＰＵ１１から入力される第１データ書込指示信号Ｌ＿ＷＲ１に基づいて、第１データ書込信号Ｌ＿ＷＲ２を複数のデュアルポートメモリ３３に出力する。また、第１メモリアクセスコントローラ３１は、第１ＣＰＵ１１から入力される第１データ読出指示信号Ｌ＿ＲＤ１に基づいて、複数のデュアルポートメモリ３３のうちの一のデュアルポートメモリから読出された読出データを、クロック信号ＣＬＫに順次同期させて保持データとして複数保持する。第１メモリアクセスコントローラ３１は、複数の保持データの中から第１ＣＰＵ１１に出力する正規のデータを決定し、正規のデータと決定された保持データを第１ＣＰＵ１１に出力するようになっている。第１メモリアクセスコントローラ３１の内部構成については後述する。
【００２９】
第２ＣＰＵ１２は、複数のデュアルポートメモリ３３及び第２メモリアクセスコントローラ３２と接続されている。第２ＣＰＵ１２は、第２書込データＲ＿ＤＴ１を書込む対象のメモリセル又は読出し対象のメモリセルのアドレスを指定するための第２アドレス信号Ｒ＿ＡＤＲを複数のデュアルポートメモリ３３のそれぞれに出力する。第２アドレス信号Ｒ＿ＡＤＲは、第２入出力ポート３３２−１，３３２−２，・・・，３３２−ｎを介して記憶部３３３−１，３３３−２，・・・，３３３−ｎにそれぞれ入力される。以下、「第２入出力ポート３３２−１，３３２−２，・・・，３３２−ｎ」を「第２入出力ポート３３２」と総称する場合がある。
【００３０】
また、第２アドレス信号Ｒ＿ＡＤＲは第２メモリアクセスコントローラ３２にも入力される。第２アドレス信号Ｒ＿ＡＤＲは、第２ＣＰＵ１２と複数のデュアルポートメモリ３３との間及び第２ＣＰＵ１２と第２メモリアクセスコントローラ３２との間に設けられた第２アドレスバスライン４１を通して複数のデュアルポートメモリ３３及び第２メモリアクセスコントローラ３２にそれぞれ送信される。
【００３１】
第２ＣＰＵ１２は、データ書込みを指示するための第２データ書込指示信号Ｒ＿ＷＲ１と、データ読出しを指示するための第２データ読出指示信号Ｒ＿ＲＤ１とを第２メモリアクセスコントローラ３２に出力する。また、第２ＣＰＵ１２は、複数のデュアルポートメモリ３３のいずれか１つに書き込むための第２書込データＲ＿ＤＴ１を第２メモリアクセスコントローラ３２に出力する。さらに、第２ＣＰＵ１２には、複数のデュアルポートメモリ３３のいずれか１つから読出されて第２メモリアクセスコントローラ３２から出力された第２読出データＲ＿ＤＴ２が入力されるようになっている。
【００３２】
マルチプロセッサシステム１は、第２ＣＰＵ１２と第２メモリアクセスコントローラ３２との間に設けられたＣＰＵ側第２データバスライン４２を有している。ＣＰＵ側第２データバスライン４２には、第２ＣＰＵ１２から出力されて複数のデュアルポートメモリ３３のいずれか１つに書込まれる第２データとしての第２書込データＲ＿ＤＴ１が送信される。さらに、ＣＰＵ側第２データバスライン４２には、複数のデュアルポートメモリ３３のいずれか１つから読出されて第２ＣＰＵ１２に入力される第２データとしての第２読出データＲ＿ＤＴ２も送信される。このように、ＣＰＵ側第２データバスライン４２は、第２データを双方向に送信可能になっている。
【００３３】
マルチプロセッサシステム１は、第２メモリアクセスコントローラ３２と複数のデュアルポートメモリ３３との間に設けられて複数のデュアルポートメモリ３３のいずれか１つに書込まれる第２データを送信可能な書込用メモリ側第２データバスライン４３ｗを有している。書込用メモリ側第２データバスライン４３ｗは、第２メモリアクセスコントローラ３２と第２入出力ポート３３２−１，３３２−２，・・・，３３２−ｎとの間に設けられている。第２入出力ポート３３２−１，３３２−２，・・・，３３２−ｎは書込用メモリ側第２データバスライン４３ｗを介して互いに接続されている。
【００３４】
第２書込データＲ＿ＤＴ１は、ＣＰＵ側第２データバスライン４２を通して第２メモリアクセスコントローラ３２に送信される。第２メモリアクセスコントローラ３２に送信された第２書込データＲ＿ＤＴ１は、メモリ側第２データバスライン４３ｗを通して複数のデュアルポートメモリ３３にそれぞれ送信される。第２書込データＲ＿ＤＴ１は、複数のデュアルポートメモリ３３のうちの第２アドレス信号Ｒ＿ＡＤＲの値に応じて選択された一のデュアルポートメモリの記憶部に第２入出力ポートを介して記憶される。
【００３５】
マルチプロセッサシステム１は、第２メモリアクセスコントローラ３２と複数のデュアルポートメモリ３３との間にそれぞれ設けられて複数のデュアルポートメモリ３３からそれぞれ読出される第２データを個別に送信可能な読出用メモリ側第２データバスライン４３ｒ−１，４３ｒ−２，・・・，４３ｒ−ｎを有している。読出用メモリ側第２データバスライン４３ｒ−２，４３ｒ−２，・・・，４３ｒ−ｎは、互いに独立して設けられている。
【００３６】
読出用メモリ側第２データバスライン４３ｒ−１は、第２メモリアクセスコントローラ３２と第２入出力ポート３３２−１との間に設けられている。第２入出力ポート３３２−１を介してデュアルポートメモリ３３−１から読出された第２読出データＲ＿ＤＴ２−１（第２データの一例）は、読出用メモリ側第２データバスライン４３ｒ−１を通して第２メモリアクセスコントローラ３２に入力される。
【００３７】
読出用メモリ側第２データバスライン４３ｒ−２は、第２メモリアクセスコントローラ３２と第２入出力ポート３３２−２との間に設けられている。第２入出力ポート３３２−２を介してデュアルポートメモリ３３−２から読出された第２読出データＲ＿ＤＴ２−２（第２データの一例）は、読出用メモリ側第２データバスライン４３ｒ−２を通して第２メモリアクセスコントローラ３２に入力される。
【００３８】
読出用メモリ側第２データバスライン４３ｒ−ｎは、第２メモリアクセスコントローラ３２と第２入出力ポート３３２−ｎとの間に設けられている。第２入出力ポート３３２−ｎを介してデュアルポートメモリ３３−ｎから読出された第２読出データＲ＿ＤＴ２−ｎ（第２データの一例）は、読出用メモリ側第２データバスライン４３ｒ−ｎを通して第２メモリアクセスコントローラ３２に入力される。
【００３９】
第２メモリアクセスコントローラ３２は、第２ＣＰＵ１２から入力される第２データ書込指示信号Ｒ＿ＷＲ１に基づいて、第２データ書込信号Ｒ＿ＷＲ２を複数のデュアルポートメモリ３３に出力する。また、第２メモリアクセスコントローラ３２は、第２ＣＰＵ１２から入力される第２データ読出指示信号Ｒ＿ＲＤ１に基づいて、複数のデュアルポートメモリ３３のうちの一のデュアルポートメモリから読出された読出データを、クロック信号ＣＬＫに順次同期させて保持データとして複数保持する。第２メモリアクセスコントローラ３２は、複数の保持データの中から第２ＣＰＵ１２に出力する正規のデータを決定し、正規のデータと決定された保持データを第２ＣＰＵ１２に出力するようになっている。第２メモリアクセスコントローラ３２の内部構成については後述する。
【００４０】
本実施形態では、第１メモリアクセスコントローラ３１、第２メモリアクセスコントローラ３２及び複数のデュアルポートメモリ３３は、図１に示すように、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）１３の内部に組み込まれている。なお、第１メモリアクセスコントローラ３１、第２メモリアクセスコントローラ３２及び複数のデュアルポートメモリ３３は、特定用途向け集積回路（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：ＡＳＩＣ）の内部に組み込まれていてもよく、あるいは独立した回路によって構成されていてもよい。さらに、第１メモリアクセスコントローラ３１、第２メモリアクセスコントローラ３２及び複数のデュアルポートメモリ３３は、これらの一部の構成（例えば、複数のデュアルポートメモリ３３）がＦＰＧＡやＡＳＩＣの内部に組み込まれ、残余の構成（例えば第１及び第２メモリアクセスコントローラ３１，３２）がＦＰＧＡやＡＳＩＣに接続された独立した回路によって構成されていてもよい。
【００４１】
マルチプロセッサシステム１を適用した産業用機器において、例えば第１ＣＰＵ１１は主処理用の処理装置として用いられ、第２ＣＰＵ１２は外部機器との外部通信用の処理装置として用いられる。第１ＣＰＵ１１は多量のデータを複数のデュアルポートメモリ３３に送信して記憶させておく。第２ＣＰＵ１２は複数のデュアルポートメモリ３３に記憶されたデータを読出すとともに外部機器に送信する。第２ＣＰＵ１２が外部機器にデータを送信してからこの外部機器から所定の結果を受信するまでにはある程度の時間を要する。このため、第１ＣＰＵ１１は、第２ＣＰＵ１２が外部機器から受信した結果に基づくデータを複数のデュアルポートメモリ３３に送信するまでの間に、別のデータ処理を継続することができる。これにより、マルチプロセッサシステム１を適用した産業用機器は、高速処理を実現できる。
【００４２】
［第１及び第２メモリアクセスコントローラの内部構成］
次に、第１及び第２メモリアクセスコントローラ３１，３２の内部構成について図２を用いて説明する。
図２に示すように、第１メモリアクセスコントローラ３１は、第１ＣＰＵ１１から入力される第１指示信号に基づいて、第１ＣＰＵ１１のアクセスを制御するためのアクセス信号を発生する第１アクセス信号発生部１３１を備えている。
【００４３】
また、第１アクセス信号発生部１３１には、第１アドレス信号Ｌ＿ＡＤＲ及びクロック信号ＣＬＫが入力される。ところで、図１には、第１ＣＰＵ１１のアクセス先として、複数のデュアルポートメモリ３３が図示されている。実際には、第１ＣＰＵ１１のアクセス先は、図示しない他の部品（例えば通信回路など）も存在する。マルチプロセッサシステム１は、複数のデュアルポートメモリ３３にアクセスする場合にのみ第１アドレス信号Ｌ＿ＡＤＲを第１メモリアクセスコントローラ３１に入力し、この場合にのみ第１メモリアクセスコントローラ３１を動作させるように構成されている。
【００４４】
第１アクセス信号発生部１３１は、非アクセス状態時に、信号状態が無効状態すなわちネゲート状態にある第１データ書込信号Ｌ＿ＷＲ２を複数のデュアルポートメモリ３３の第１入出力ポート３３１に対して出力している。第１アクセス信号発生部１３１は、第１アドレス信号Ｌ＿ＡＤＲが入力され、かつ第１データ書込指示信号Ｌ＿ＷＲ１が有効状態すなわちアサート状態になると、クロック信号ＣＬＫに同期させて少なくともクロック信号ＣＬＫの１周期分アサート状態となる第１データ書込信号Ｌ＿ＷＲ２を複数のデュアルポートメモリ３３に出力する。
【００４５】
また、第１アクセス信号発生部１３１は、複数のデュアルポートメモリ３３のうちの一のデュアルポートメモリから読出されて選択された第１選択データＬ＿ＤＴ２ｓを保持するための第１データ保持信号ＲＤＬ１，ＲＤＬ２，・・・，ＲＤＬｉ（ｉは、３以上の自然数）を発生する。さらに、第１アクセス信号発生部１３１は、第１出力バッファ回路１３２ｅ（詳細は後述）をハイインピーダンス状態か否かに切り替えるための第１データ読出制御信号ＲＯＥを発生する。第１データ読出制御信号ＲＯＥ及び第１データ保持信号ＲＤＬ１，ＲＤＬ２，・・・，ＲＤＬｉは、第１アクセス信号発生部１３１が発生するアクセス信号に対応する。
【００４６】
第１アクセス信号発生部１３１は、非アクセス状態時に、信号状態が無効状態すなわちネゲート状態にある第１データ保持信号ＲＤＬ１，ＲＤＬ２，・・・，ＲＤＬｉを第１データ決定部１３２（詳細は後述）に対して出力している。第１アクセス信号発生部１３１は、第１データ読出指示信号Ｌ＿ＲＤ１が有効状態すなわちアサート状態になると、クロック信号ＣＬＫに同期させてクロック信号ＣＬＫの１周期分アサート状態となる第１データ保持信号ＲＤＬ１，ＲＤＬ２，・・・，ＲＤＬｉを第１データ決定部１３２に順次出力する。
【００４７】
第１アクセス信号発生部１３１は、非アクセス状態時に、信号状態が無効状態すなわちネゲート状態にある第１データ読出制御信号ＲＯＥを第１出力バッファ回路１３２ｅに対して出力している。第１アクセス信号発生部１３１は、第１データ読出指示信号Ｌ＿ＲＤ１がアサート状態になると、クロック信号ＣＬＫに同期させてクロック信号ＣＬＫの少なくとも１周期分以上アサート状態となる第１データ読出制御信号ＲＯＥを第１出力バッファ回路１３２ｅに出力する。
第１データ保持信号ＲＤＬ１，ＲＤＬ２，・・・，ＲＤＬｉ及び第１データ読出制御信号ＲＯＥは、第１アクセス信号発生部１３１が発生する第１指示信号に対応する。
【００４８】
（第１データ決定部の構成）
第１メモリアクセスコントローラ３１は、複数のデュアルポートメモリ３３のうちの一のデュアルポートメモリから読出された第１読出データＬ＿ＤＴ２−ｋ（ｋは、１からｎの間の自然数）を、クロック信号ＣＬＫに順次同期させて第１保持データＬ＿ＤＴ２ｈ−１，Ｌ＿ＤＴ２ｈ−２，・・・，Ｌ＿ＤＴ２ｈ−ｉとして複数保持し、複数の第１保持データＬ＿ＤＴ２ｈ−１，Ｌ＿ＤＴ２ｈ−２，・・・，Ｌ＿ＤＴ２ｓ−ｎの中から第１ＣＰＵ１１に出力する第１読出データ（正規のデータの一例）Ｌ＿ＤＴ２を決定する第１データ決定部１３２を備えている。
【００４９】
第１メモリアクセスコントローラ３１は、複数のデュアルポートメモリ３３に接続された読出用メモリ側第１データバスライン２３ｒ−１，２３ｒ−２，・・・，２３ｒ−ｎのうち第１読出データＬ＿ＤＴ２−ｋが送信された読出用メモリ側第１データバスライン（一のデータバスラインの一例）２３ｒ−ｋ（ｋは、１からｎの間の自然数）を、複数のデュアルポートメモリ３３に入力される第１アドレス信号Ｌ＿ＡＤＲに基づいて選択する第１ライン選択回路（ライン選択部の一例）１３２ａを備えている。本実施形態では、第１ライン選択回路１３２ａは、第１データ決定部１３２に設けられている。なお、第１ライン選択回路１３２ａは、第１メモリアクセスコントローラ３１の内部であって第１データ決定部１３２から独立して設けられていてもよい。また、第１ライン選択回路１３２ａは、第１メモリアクセスコントローラ３１の外部に設けられていてもよい。
【００５０】
第１ライン選択回路１３２ａは、複数の入力端子（不図示）を備えている。この複数の入力端子は、読出用メモリ側第１データバスライン２３ｒ−１，２３ｒ−２，・・・，２３ｒ−ｎと同数設けられている。この複数の入力端子は、読出用メモリ側第１データバスライン２３ｒ−１，２３ｒ−２，・・・，２３ｒ−ｎと１対１の関係を満たすように接続されている。
【００５１】
第１ライン選択回路１３２ａには、第１アドレスバスライン２１が接続されている。第１ライン選択回路１３２ａには、第１アドレスバスライン２１を通して第１アドレス信号Ｌ＿ＡＤＲが入力されるようになっている。第１ライン選択回路１３２ａは、入力される第１アドレス信号Ｌ＿ＡＤＲの値に応じて、第１読出データＬ＿ＤＴ２−ｋが送信された読出用メモリ側第１データバスライン２３ｒ−ｋに接続された入力端子と、出力端子とを接続する。第１ライン選択回路１３２ａには、第１選択データＬ＿ＤＴ２ｓを出力するための１つの出力端子（不図示）が設けられている。第１ライン選択回路１３２ａは、この出力端子から第１読出データＬ＿ＤＴ２−ｋを第１選択データＬ＿ＤＴ２ｓとして出力する。
【００５２】
第１データ決定部１３２は、第１選択データＬ＿ＤＴ２ｓを保持する複数の第１保持回路１３２ｂ−１，１３２ｂ−２，・・・，１３２ｂ−ｉを備えている。複数の第１保持回路１３２ｂ−１，１３２ｂ−２，・・・，１３２ｂ−ｉのそれぞれの入力端子ＩＮは、第１ライン選択回路１３２ａの出力端子に接続されている。第１ライン選択回路１３２ａの出力端子から出力される第１選択データＬ＿ＤＴ２ｓは、複数の第１保持回路１３２ｂ−１，１３２ｂ−２，・・・，１３２ｂ−ｉのそれぞれの入力端子ＩＮに入力される。
【００５３】
複数の第１保持回路１３２ｂ−１，１３２ｂ−２，・・・，１３２ｂ−ｉには、保持信号入力端子ＬＴが設けられている。保持信号入力端子ＬＴには、第１データ保持信号ＲＤＬ１，ＲＤＬ２，・・・，ＲＤＬｉが入力される。第１保持回路１３２ｂ−１の保持信号入力端子ＬＴには、第１データ保持信号ＲＤＬ１が入力され、第１保持回路１３２ｂ−２の保持信号入力端子ＬＴには、第１データ保持信号ＲＤＬ２が入力され、第１保持回路１３２ｂ−ｉの保持信号入力端子ＬＴには、第１データ保持信号ＲＤＬｉが入力される。第１アクセス信号発生部１３１は、第１データ決定部１３２に設けられた第１保持回路の個数分の第１データ保持信号ＲＤＬ１，ＲＤＬ２，・・・，ＲＤＬｉを発生し、発生した第１データ保持信号ＲＤＬ１，ＲＤＬ２，・・・，ＲＤＬｉをクロック信号ＣＬＫに同期させて第１保持回路１３２ｂ−１，１３２ｂ−２，・・・，１３２ｂ−ｉに順次出力するようになっている。
【００５４】
第１保持回路１３２ｂ−１は、保持信号入力端子ＬＴに入力される第１データ保持信号ＲＤＬ１がアサート状態からネゲート状態に切り替わるのに同期して、入力端子ＩＮに入力されている第１選択データＬ＿ＤＴ２ｓを第１保持データＬ＿ＤＴ２−１として保持する。さらに、第１保持回路１３２ｂ−１は、保持した第１保持データＬ＿ＤＴ２−１を出力端子Ｑから出力するようになっている。第１保持回路１３２ｂ−２は、保持信号入力端子ＬＴに入力される第１データ保持信号ＲＤＬ２がアサート状態からネゲート状態に切り替わるのに同期して、入力端子ＩＮに入力されている第１選択データＬ＿ＤＴ２ｓを第１保持データＬ＿ＤＴ２−２として保持する。さらに、第１保持回路１３２ｂ−２は、保持した第１保持データＬ＿ＤＴ２−２を出力端子Ｑから出力するようになっている。第１保持回路１３２ｂ−ｉは、保持信号入力端子ＬＴに入力される第１データ保持信号ＲＤＬｉがアサート状態からネゲート状態に切り替わるのに同期して、入力端子ＩＮに入力されている第１選択データＬ＿ＤＴ２ｓを第１保持データＬ＿ＤＴ２−ｉとして保持する。さらに、第１保持回路１３２ｂ−ｉは、保持した第１保持データＬ＿ＤＴ２−ｉを出力端子Ｑから出力するようになっている。第１データ保持信号ＲＤＬ１，ＲＤＬ２，・・・，ＲＤＬｉは、クロック信号発信器１４が発信するクロック信号に同期してアサート状態からネゲート状態に切り替わる。このため、第１データ決定部１３２は、クロック信号に同期させて第１選択データＬ＿ＤＴ２ｓを複数の第１保持回路１３２ｂ−１，１３２ｂ−２，・・・，１３２ｂ−ｉに保持する。
【００５５】
第１データ決定部１３２は、複数の第１保持データＬ＿ＤＴ２ｈ−１，Ｌ＿ＤＴ２ｈ−２，・・・，Ｌ＿ＤＴ２ｈ−ｉ同士の異同に基づいて、複数の第１保持データＬ＿ＤＴ２ｈ−１，Ｌ＿ＤＴ２ｈ−２，・・・，Ｌ＿ＤＴ２ｈ−ｉのいずれを第１読出データＬ＿ＤＴ２（すなわち正規のデータ）とするのかを判定する第１判定回路（第１判定部の一例）１３２ｃを備えている。
【００５６】
第１判定回路１３２ｃには、第１保持回路と同数のデータ入力端子（不図示）と、１つの保持信号入力端子（不図示）とが設けれられている。このデータ入力端子は、複数の第１保持回路１３２ｂ−１，１３２ｂ−２，・・・，１３２ｂ−ｎのそれぞれの出力端子Ｑと１対１の関係を満たすように接続されている。これにより、第１判定回路１３２ｃには、第１保持回路１３２ｂ−１，１３２ｂ−２，・・・，１３２ｂ−ｎのそれぞれに保持された第１保持データＬ＿ＤＴ２ｈ−１，Ｌ＿ＤＴ２ｈ−２，・・・，Ｌ＿ＤＴ２ｈ−ｉが互いに異なる入力端子に入力される。また、第１判定回路１３２ｃの保持信号入力端子には、複数の第１データ保持信号ＲＤＬ１，ＲＤＬ２，・・・，ＲＤＬｉのうち、第１アクセス信号発生部１３１が発生する最後の第１データ保持信号、すなわちｉが最大値の第１データ保持信号ＲＤＬｉが入力される。
【００５７】
第１判定回路１３２ｃは、複数の保持データ同士の異同と、正規のデータとすべき保持データとを対応付けた判定テーブル（詳細は後述）を記憶している。第１判定回路１３２ｃは、保持信号入力端子に入力される第１データ保持信号ＲＤＬｉがアサート状態からネゲート状態に切り替わることに基づいて、入力される第１保持データＬ＿ＤＴ２ｈ−１，Ｌ＿ＤＴ２ｈ−２，・・・，Ｌ＿ＤＴ２ｈ−ｉの中から正規のデータ（すなわち第１読出データＬ＿ＤＴ２）とすべき第１保持データを、判定テーブルを参照して判定する。また、第１判定回路１３２ｃは、第１読出データＬ＿ＤＴ２とすべき第１保持データの判定結果の情報を含む選択制御信号ＯＳを出力するようになっている。
【００５８】
第１データ決定部１３２は、第１判定回路１３２ｃから入力される選択制御信号ＯＳに基づいて、正規のデータ（すなわち第１読出データＬ＿ＤＴ２）として決定された保持データを、入力される複数の第１保持データＬ＿ＤＴ２ｈ−１，Ｌ＿ＤＴ２ｈ−２，・・・，Ｌ＿ＤＴ２ｈ−ｉの中から選択する第１保持データ選択回路１３２ｄを備えている。
【００５９】
第１保持データ選択回路１３２ｄには、第１保持回路と同数のデータ入力端子（不図示）と、選択制御信号ＯＳが入力される選択信号入力端子（不図示）と、選択された第１保持データが出力される１つのデータ出力端子（不図示）とが設けれられている。このデータ入力端子は、複数の第１保持回路１３２ｂ−１，１３２ｂ−２，・・・，１３２ｂ−ｎのそれぞれの出力端子Ｑと１対１の関係を満たすように接続されている。これにより、第１保持データ選択回路１３２ｄには、第１保持回路１３２ｂ−１，１３２ｂ−２，・・・，１３２ｂ−ｎのそれぞれに保持された第１保持データＬ＿ＤＴ２ｈ−１，Ｌ＿ＤＴ２ｈ−２，・・・，Ｌ＿ＤＴ２ｈ−ｉが互いに異なる入力端子に入力される。第１保持データ選択回路１３２ｄは、選択信号入力端子に入力される選択制御信号ＯＳの値に応じて、複数のデータ入力端子のうちの一のデータ入力端子とデータ出力端子とを接続する。これにより、第１保持データ選択回路１３２ｄは、選択された保持データを第１読出データＬ＿ＤＴ２としてデータ出力端子から出力する。
【００６０】
第１データ決定部１３２は、第１保持データ選択回路１３２ｄから入力される第１読出データＬ＿ＤＴ２を第１ＣＰＵ１１に出力可能な状態と、第１保持データ選択回路１３２ｄから入力される第１読出データＬ＿ＤＴ２の出力が不可能なハイインピーダンス状態とに可逆的に切り替わる第１出力バッファ回路１３２ｅを備えている。
【００６１】
第１出力バッファ回路１３２ｅは、第１保持データ選択回路１３２ｄのデータ出力端子に接続されたデータ入力端子ＩＮと、ＣＰＵ側第１データバスライン２２に接続されたデータ出力端子ＯＵＴとを備えている。また、第１出力バッファ回路１３２ｅは、第１アクセス信号発生部１３１に接続されて第１データ読出制御信号ＲＯＥが入力される制御信号入力端子ＯＥを備えている。第１出力バッファ回路１３２ｅは、制御信号入力端子ＯＥに入力される第１データ読出制御信号ＲＯＥがアサート状態であると、第１保持データ選択回路１３２ｄから入力される第１読出データＬ＿ＤＴ２を第１ＣＰＵ１１に出力可能な状態となる。一方、第１出力バッファ回路１３２ｅは、制御信号入力端子ＯＥに入力される第１データ読出制御信号ＲＯＥがネゲート状態であると、データ出力端子ＯＵＴをハイインピーダンス状態とし、第１読出データＬ＿ＤＴ２を第１ＣＰＵ１１に出力不可能な状態となる。
【００６２】
第１ＣＰＵ１１は、第１データ読出指示信号Ｌ＿ＲＤ１のアサート状態からネゲート状態への切り替わりに同期して、第１出力バッファ回路１３２ｅのデータ出力端子ＯＵＴからＣＰＵ側第１データバスライン２２に入力された第１読出データＬ＿ＤＴ２を読込むようになっている。
【００６３】
ＣＰＵ側第１データバスライン２２は、第１メモリアクセスコントローラ３１を介して書込用メモリ側第１データバスライン２３ｗに直結されている。また、ＣＰＵ側第１データバスライン２２は、第１出力バッファ回路１３２ｅのデータ出力端子ＯＵＴにも接続されている。第１アクセス信号発生部１３１は、第１アドレス信号Ｌ＿ＡＤＲが入力され、かつ第１データ読出指示信号Ｌ＿ＲＤ１がアサート状態になることによって第１データ読出制御信号ＲＯＥをアサート状態とする。第１ＣＰＵ１１は、第１データ書込指示信号Ｌ＿ＷＲ１と第１データ読出指示信号Ｌ＿ＲＤ１とを同時期にアサート状態にしない。また、第１アクセス信号発生部１３１は、第１データ読出指示信号Ｌ＿ＲＤのアサート期間内に第１データ保持信号ＲＤＬ１，ＲＤＬ２，・・・，ＲＤＬｉを発生する。
【００６４】
これにより、ＣＰＵ側第１データバスライン２２に入力された第１書込データＬ＿ＤＴ１をデュアルポートメモリ３３に書込む時には、第１データ読出制御信号ＲＯＥ及び第１データ保持信号ＲＤＬ１，ＲＤＬ２，・・・，ＲＤＬｉはネゲート状態になる。このため、第１出力バッファ回路１３２ｅのデータ出力端子ＯＵＴはハイインピーダンス状態となる。これにより、第１書込データＬ＿ＤＴ１と、第１出力バッファ回路１３２ｅのデータ入力端子に入力される第１読出データＬ＿ＤＴ２とが同時期にＣＰＵ側第１データバスライン２２に入力されることはない。その結果、第１アドレス信号Ｌ＿ＡＤＲの値に応じた所望のデュアルポートメモリ３３に備えられた記憶部３３３の所望のメモリセルに、第１ＣＰＵ１１から出力された第１書込データＬ＿ＤＴ１が書込まれる。
【００６５】
一方、第１出力バッファ回路１３２ｅが第１読出データＬ＿ＤＴ２を出力可能な状態にある時は、第１データ書込指示信号Ｌ＿ＷＲ１はネゲート状態であるため第１データ書込信号Ｌ＿ＷＲ２もネゲート状態となる。これにより、第１出力バッファ回路１３２ｅのデータ出力端子ＯＵＴから出力された第１読出データＬ＿ＤＴ２は、メモリ側第１データバスライン２３ｗに入力されるものの第１入出力ポート３３１を介して記憶部３３３に書き込まれることはない。
【００６６】
［第２メモリアクセスコントローラの構成］
第２メモリアクセスコントローラ３２は、第１メモリアクセスコントローラ３１と同一の内部構成を有し、同一の機能を発揮するようになっている。すなわち、第２メモリアクセスコントローラ３２は、第１アクセス信号発生部１３１と同一の構成を有し同一の機能を発揮する第２アクセス信号発生部と、第１データ決定部１３２と同一の構成を有し同一の機能を発揮する第２データ決定部とを備えている。
【００６７】
［マルチプロセッサシステムの動作］
次に、本実施形態によるマルチプロセッサシステム１の動作について、図１及び図２を参照しつつ図３から図８を用いて説明する。
【００６８】
（書込み動作）
まず、マルチプロセッサシステム１における第１メモリアクセスコントローラ３１のデータ書込み動作について説明する。図３では、同時刻に同一の値の第１アドレス信号Ｌ＿ＡＤＲ及び第２アドレス信号Ｒ＿ＡＤＲがデュアルポートメモリ３３に入力された場合のマルチプロセッサシステム１の動作が図示されている。
【００６９】
図３に示すデータ書込み動作のタイミングチャートにおいて、図３中に示す「Ｌ＿ＡＤＲ」は第１アドレス信号Ｌ＿ＡＤＲを示し、「Ｌ＿ＤＴ１（２２）」はＣＰＵ側第１データバスライン２２に入力された第１書込データＬ＿ＤＴ１を示し、「Ｌ＿ＷＲ１」は第１データ書込指示信号Ｌ＿ＷＲ１を示し、「Ｌ＿ＤＴ１（２３ｗ）」は書込用メモリ側第１データバスライン２３ｗに入力された第１書込データＬ＿ＤＴ１を示し、「ＣＬＫ」はクロック信号発信器１４から出力されたクロック信号ＣＬＫを示し、「Ｌ＿ＷＲ２」は第１データ書込信号Ｌ＿ＷＲ２を示し、「Ｒ＿ＡＤＲ」は第２アドレス信号Ｒ＿ＡＤＲを示し、「Ｒ＿ＤＴ２−ｋ」は読出し対象のデュアルポートメモリ３３から読出された第２読出データを示している。図３において、左から右に向かって時の経過が表されている。
【００７０】
デュアルポートメモリ１３は、第１ＣＰＵ１１及び第２ＣＰＵ１２のメモリ空間にマッピングされている。第１ＣＰＵ１１は、第１書込データＬ＿ＤＴ１をデュアルポートメモリ３３に書込む際に、記憶部３３３の書込み対象のメモリセルの番地を含む第１アドレス信号Ｌ＿ＡＤＲを複数のデュアルポートメモリ３３及び第１メモリアクセスコントローラ３１に出力する。図３では、時刻ｔ１において、値「０ｘ０２００００ＦＥ」の第１アドレス信号Ｌ＿ＡＤＲがデュアルポートメモリ３３及び第１メモリアクセスコントローラ３１に出力されている。なお、値「０ｘ０２００００ＦＥ」は、Ｃ言語における言語仕様で表されている。後述する図４及び図７に示す各データの値の表記方法も同様にＣ言語における言語仕様で表されている。したがって、値「０ｘ０２００００ＦＥ」は、１０進数の「３３５５４６８６」に相当する。
【００７１】
図３に示すように、第１アドレスバスライン２１への第１アドレス信号Ｌ＿ＡＤＲの出力が開始される時刻ｔ１において、デュアルポートメモリ３３に書込むための第１書込データＬ＿ＤＴ１が第１ＣＰＵ１１からＣＰＵ側第１データバスライン２２に出力される。図３では、値「０ｘ１２３４」の第１書込データＬ＿ＤＴ１が例えばＣＰＵ側第１データバスライン２２に出力された状態が図示されている。
【００７２】
書込用メモリ側第１データバスライン２３ｗは、ＣＰＵ側第１データバスライン２２に直結されている。このため、時刻ｔ１において、書込用メモリ側第１データバスライン２３ｗには、ＣＰＵ側第１データバスライン２２に入力されたのと同様の値「０ｘ１２３４」の第１書込データＬ＿ＤＴ１が入力される。第１書込データＬ＿ＤＴ１が書込用メモリ側第１データバスライン２３ｗに入力されるタイミングは、第１ＣＰＵから第１書込データＬ＿ＤＴ１をＣＰＵ側第１データバスライン２２へ出力するタイミングとほぼ同じである。
【００７３】
また、時刻ｔ１において、第１アドレス信号Ｌ＿ＡＤＲと同じ値の第２アドレス信号Ｒ＿ＡＤＲが第２アドレスバスライン４１に出力されている。これにより、デュアルポートメモリ３３はチップセレクトされてデータを読出し可能な状態となる。
【００７４】
図３に示すように、値「０ｘ０２００００ＦＥ」の第１アドレス信号Ｌ＿ＡＤＲと値「０ｘ１２３４」の第１書込データＬ＿ＤＴ１が出力された後に、信号レベルが高レベルから低レベルへの切り替えが開始され、時刻ｔ２において低レベルとなる第１データ書込指示信号Ｌ＿ＷＲ１が第１ＣＰＵ１１から第１メモリアクセスコントローラ３１に出力される。第１データ書込指示信号Ｌ＿ＷＲ１は、信号レベルが高レベルのときにネゲート状態となり、信号レベルが低レベルの時にアサート状態になる。このため、第１データ書込指示信号Ｌ＿ＷＲ１は、時刻ｔ２においてアサート状態になる。
【００７５】
第１データ書込指示信号Ｌ＿ＷＲ１がアサート状態に切り替わった後の時刻ｔ３において、クロック信号ＣＬＫが立ち上がる。クロック信号ＣＬＫのこの立ち上がりエッジに同期して信号レベルが高レベルから低レベルに切り替わる第１データ書込信号Ｌ＿ＷＲ２が第１アクセス信号発生部１３１から複数のデュアルポートメモリ３３に出力される。第１データ書込信号Ｌ＿ＷＲ２は、信号レベルが高レベルのときにネゲート状態となり、信号レベルが低レベルの時にアサート状態になる。図３に示すように、第１データ書込信号Ｌ＿ＷＲ２は、第１データ書込指示信号Ｌ＿ＷＲ１がアサート状態になった後のクロック信号ＣＬＫの最初の立ち上がりエッジに同期してネゲート状態からアサート状態に切り替えられる。第１データ書込信号Ｌ＿ＷＲ２は時刻ｔ３の直後にアサート状態になる。
【００７６】
図３に示すように、時刻ｔ３の後の時刻ｔ４において、クロック信号ＣＬＫが再び立ち上がる。時刻ｔ４でのクロック信号のこの立ち上がりエッジに同期して、第１アクセス信号発生部１３１からデュアルポートメモリ３３に出力される第１データ書込信号Ｌ＿ＷＲ２がアサート状態からネゲート状態に切り替えられる。これにより、第１データ書込信号Ｌ＿ＷＲ２は、時刻ｔ３から時刻ｔ４というクロック信号ＣＬＫの１周期の期間だけ信号レベルが低レベルになるパルス信号となる。なお、図３では、第１データ書込信号Ｌ＿ＷＲ２はクロック信号ＣＬＫの１周期だけ低レベルになるパルス信号であるが、クロック信号ＣＬＫの複数周期の間で低レベルとなるパルス信号でもよい。また、第１データ書込信号Ｌ＿ＷＲ２はクロック信号ＣＬＫの立下りエッジに同期する信号でもよい。
【００７７】
図示は省略するが、第１データ書込信号Ｌ＿ＷＲ２がアサート状態からネゲート状態に切り替わることにより、書込用メモリ側第１データバスライン２３ｗに出力されている第１書込データＬ＿ＤＴ１の値（図３では、「０ｘ１２３４」）が、第１アドレス信号Ｌ＿ＡＤＲにおいて指定されたデュアルポートメモリ３３に備えられた記憶部３３３のメモリセルに記憶される。例えば、第１アドレス信号Ｌ＿ＡＤＲの上位の数ビットが複数のデュアルポートメモリ３３の番号に対応し、下位の残余のビットが記憶部３３３のメモリセルの番地に対応するようになっている。これにより、マルチプロセッサシステム１は、第１ＣＰＵ１１によって指定されるデュアルポートメモリ３３の記憶部３３３の指定されるメモリセルに第１データ書込信号Ｌ＿ＷＲ２を書込むことができる。同時に、マルチプロセッサシステム１は、第１ＣＰＵ１１が指定しないデュアルポートメモリ３３には第１データ書込信号Ｌ＿ＷＲ２を書込まないようにすることができる。
【００７８】
また、デュアルポートメモリ３３はチップセレクトされているため、時刻ｔ４において、デュアルポートメモリ３３−ｋに書込まれた値「０ｘ１２３４」の第１データ書込信号Ｌ＿ＷＲ２が第２読出データＲ＿ＤＴ２−ｋとして読出用メモリ側第２データバスライン４３ｒ−ｋに出力される。また、残余のデュアルポートメモリ３３からも記憶部３３３に記憶されているデータが読出用メモリ側第２データバスライン４３ｒに出力される。マルチプロセッサシステム１では、第１データ書込信号Ｌ＿ＷＲ２がデュアルポートメモリ３３に書込まれるタイミングと、第２読出データＲ＿ＤＴ２−ｋが読出されるタイミングとの差がクロック信号ＣＬＫの０クロック分である。しかしながら、マルチプロセッサシステム１は、第１データ書込信号Ｌ＿ＷＲ２がデュアルポートメモリ３３に書込まれてから第２読出データＲ＿ＤＴ２−ｋが読出されるまでに、クロック信号ＣＬＫの数クロック分を要するように設計されていてもよい。
【００７９】
図３に示すように、その後、第１データ書込指示信号Ｌ＿ＷＲ１は、アサート状態からネゲート状態への切り替えが開始され、時刻ｔ５においてネゲート状態となる。このように、第１データ書込指示信号Ｌ＿ＷＲ１は、時刻ｔ２から時刻ｔ５の間に信号レベルが低レベルとなるパルス信号となる。
【００８０】
また、第１データ書込指示信号Ｌ＿ＷＲ１がネゲート状態になっても、ＣＰＵ側第１データバスライン２２と書込用メモリ側第１データバスライン２３ｗとは直結されたままなので、ＣＰＵ側第１データバスライン２２に入力された値「０ｘ１２３４」の第１書込データＬ＿ＤＴ１は書込用メモリ側第１データバスライン２３ｗに入力され続ける。
以上で、マルチプロセッサシステム１における第１メモリアクセスコントローラ３１での１つの第１書込データのデータ書込み動作が終了する。
【００８１】
第２メモリアクセスコントローラ３２のデータ書込み動作は、第１メモリアクセスコントローラ３１の動作の「第１」を「第２」に読み替えたのと同様であるため、説明は省略する。
【００８２】
（データ読出し動作）
次に、マルチプロセッサシステム１における第１メモリアクセスコントローラ３１のデータ読出し動作について図１及び図２を参照しつつ図４から図６を用いて説明する。図４には、第１選択データＬ＿ＤＴ２ｓが不定値の期間（詳細は後述）がクロック信号ＣＬＫの１周期よりも短い場合であって、第１データ決定部１３２が３つの第１保持回路１３２ｂ−１，１３２ｂ−２，１３２ｂ−３（ｉ＝３）を備えている場合のデータ読出し動作のタイミングチャートが図示されている。
【００８３】
図４に示すデータ読出し動作のタイミングチャートにおいて、図４中に示す「ＣＬＫ」はクロック信号発信器１４から出力されたクロック信号ＣＬＫを示し、「Ｒ＿ＷＲ２」は第２データ書込信号Ｒ＿ＷＲ２を示し、「Ｌ＿ＤＴ２−ｋ」は読出し対象のデュアルポートメモリ３３−ｋから読出された第１読出データ（一のデュアルポートメモリから読出された読出データの一例）を示し、「Ｌ＿ＤＴ２ｓ」は第１選択データＬ＿ＤＴ２ｓを示している。また、図４中に示す「Ｌ＿ＲＤ１」は第１データ読出指示信号Ｌ＿ＲＤ１を示し、「ＲＤＬ１」は第１データ保持信号ＲＤＬ１を示し、「ＲＥＧ１」は第１保持回路１３２ｂ−１に保持された第１保持データＬ＿ＤＴ２ｈ−１を示し、「ＲＤＬ２」は第１データ保持信号ＲＤＬ２を示し、「ＲＥＧ２」は第１保持回路１３２ｂ−２に保持された第１保持データＬ＿ＤＴ２ｈ−２を示し、「ＲＤＬ３」は第１データ保持信号ＲＤＬ３を示し、「ＲＥＧ３」は第１保持回路１３２ｂ−３に保持された第１保持データＬ＿ＤＴ２ｈ−３を示し、「Ｌ＿ＤＴ２（２２）」は第１メモリアクセスコントローラ３１からＣＰＵ側第１データバスライン２２に出力された第１読出データＬ＿ＤＴ２を示している。図４において、左から右に向かって時の経過が表されている。
【００８４】
デュアルポートメモリ３３は、第１ＣＰＵ１１及び第２ＣＰＵ１２のメモリ空間にマッピングされている。第１ＣＰＵ１１は、第１読出データＬ＿ＤＴ２を複数のデュアルポートメモリ３３のいずれかから読出す際に、読出し対象のデュアルポートメモリ３３及び読出し対象の記憶部３３３のメモリセルの情報を含む第１アドレス信号Ｌ＿ＡＤＲを複数のデュアルポートメモリ３３及び第１メモリアクセスコントローラ３１に出力する。
【００８５】
また、デュアルポートメモリ３３は、第１アドレス信号Ｌ＿ＡＤＲが入力されている期間チップセレクトされる。デュアルポートメモリ３３のうち、入力された第１アドレス信号Ｌ＿ＡＤＲの値（例えば、上位数ビットの値）に応じてチップセレクトされた読出し対象のデュアルポートメモリ３３−ｋ（ｋは、１からｎの間の自然数）は、入力された第１アドレス信号Ｌ＿ＡＤＲの値（例えば、下位数ビットの値）に応じて指定された記憶部３３３のメモリセルからデータを読出す。さらに、デュアルポートメモリ３３−ｋは、メモリセルから読出した読出データを第１入出力ポート３３１−ｋを介して読出用メモリ側第１データバスライン２３ｒ−ｋに出力する。図４では、デュアルポートメモリ３３−ｋには、時刻ｔ１よりも前にチップセレクトされている。このため、デュアルポートメモリ３３−ｋに接続された読出用メモリ側第１データバスライン２３ｒ−ｋには、値「０ｘ１２３４」の第１読出データＬ＿ＤＴ２−ｋが出力される。
【００８６】
図４に示すように、クロック信号ＣＬＫの立上りに同期して時刻ｔ１の直後に第２データ書込信号Ｒ＿ＷＲ２がアサート状態になる。
第１データ読出指示信号Ｌ＿ＲＤ１は、信号レベルが高レベルのときにネゲート状態で、信号レベルが低レベルの時にアサート状態である。クロック信号ＣＬＫの立上りの時刻ｔ１と時刻ｔ２の間に、第１ＣＰＵ１１から第１メモリアクセスコントローラ３１に出力される第１データ読出指示信号Ｌ＿ＲＤ１がアサートされた場合を例に説明する。
【００８７】
第１データ読出指示信号Ｌ＿ＲＤ１がアサート状態になった後の時刻ｔ２において、クロック信号ＣＬＫの立ち上りエッジに同期して、第２アクセス信号発生部からデュアルポートメモリ３３に出力される第２データ書込信号Ｒ＿ＷＲ２がアサート状態からネゲート状態に切り替えられる。第２データ書込信号Ｒ＿ＷＲ２がアサート状態からネゲート状態に切り替わることにより、書込用メモリ側第２データバスライン４３ｗに出力されている第２書込データＲ＿ＤＴ１の値（図３では、「０ｘ５６７８」）が、第２アドレス信号Ｒ＿ＡＤＲにおいて指定されたデュアルポートメモリ３３−ｋの記憶部３３３の指定されたメモリセルに記憶される。
【００８８】
また、デュアルポートメモリ３３−ｋはチップセレクトされているため、時刻ｔ２において、デュアルポートメモリ３３−ｋの記憶部３３３から第１読出データＬ＿ＤＴ２−ｋが読出用メモリ側第１データバスライン２３ｒ−ｋに出力される。図４に示すように、書込み対象のデュアルポートメモリ３３−ｋに接続された読出用メモリ側第１データバスライン２３ｒ−ｋには、デュアルポートメモリ３３−ｋに書込まれた値「０ｘ５６７８」の第１読出データＬ＿ＤＴ２−ｋが出力される。
【００８９】
第１ライン選択回路１３２ａは、第１アドレス信号Ｌ＿ＡＤＲの値に応じて第１読出データＬ＿ＤＴ２−ｋが送信された読出用メモリ側第２データバスライン２３ｒ−ｋに接続された入力端子と、出力端子とを接続し、第１読出データＬ＿ＤＴ２−ｋを第１選択データＬ＿ＤＴ２ｓとして出力端子から出力する。
【００９０】
ここで、第１読出データ選択回路１３２ａの出力端子から出力される第１選択データＬ＿ＤＴ２ｓの遅延について、図５を用いて説明する。図４と図５の時刻ｔ２、ｔ３、ｔ５は対応する。図５に示すように、第１読出データＬ＿ＤＴ２−ｋは、多ビット（図５では４ビット）のデータである。図５中の上段に示すように、時刻ｔ２において、デュアルポートメモリ３３−ｋから読出用メモリ側第１データバスライン２３ｒ−ｋに読出される第１読出データＬ＿ＤＴ２−ｋは、時刻ｔ２以前に出力していた値（以下、「前回値」と称する）から、時刻ｔ２時点でデュアルポートメモリ３３−ｋに記憶されている値（以下、「今回値」と称する）に切り替わる。第１読出データＬ＿ＤＴ２−ｋの各ビットのデータは、時刻ｔ２において同じタイミングで前回値から今回値に切り替わる。第１ライン選択回路１３２ａは、出力端子と複数の入力端子のそれぞれと個別に接続させるために複数段に構成されたゲート回路を備えている。このため、図５中下段に示すように、第１読出データ選択回路１３２ａの入力端子に入力された第１読出データＬ＿ＤＴ２−ｋが前回値から今回値に切り替わるタイミングは、このゲート回路の段数に応じて時刻ｔ２に対して期間Ｔｄｓだけ遅延して時刻ｔ３となる。また、デュアルポートメモリ３３や第１ライン選択回路１３２ａを構成するトランジスタの特性ばらつきにより、第１ライン選択回路１３２ａに第１読出データＬ＿ＤＴ２−ｋが入力されてから第１選択データＬ＿ＤＴ２ｓが出力されるまでの出力遅延がビットデータ毎に異なる。さらに、読出用メモリ側第１データバスライン２３ｒ−ｋの配線の長さは、第１読出データＬ＿ＤＴ２−ｋのビット毎に異なるため、配線遅延がビットデータ毎に異なる。このため、図５中の下段に示すように、この出力遅延や配線遅延により、第１読出データＬ＿ＤＴ２−ｋのビットデータ毎に遅延ばらつき期間Ｔｄｂが生じる。その結果、第１ライン選択回路１３２ａから今回値の第１選択データＬ＿ＤＴ２ｓが出力されるまでには、期間Ｔｄｓ及び遅延ばらつき期間Ｔｄｂを合計した遅延時間を要する。特に、遅延ばらつき期間Ｔｄｂでの第１選択データＬ＿ＤＴ２ｓは、前回値でも今回値でもない不定値となる。この不定値が読み出されて第１ＣＰＵ１１に送信されてしまうと、マルチプロセッサシステム１を適用した産業用機器は、予期しない制御がなされて誤動作してしまう可能性がある。
【００９１】
したがって、図４に示すように、第１ライン選択回路１３２ａから出力される第１選択データＬ＿ＤＴ２ｓは、時刻ｔ３から時刻ｔ５の期間で不定値となる。
【００９２】
第１データ読出指示信号Ｌ＿ＲＤ１がアサート状態に切り替わった後の時刻ｔ２において、クロック信号ＣＬＫが立ち上がる。クロック信号ＣＬＫのこの立ち上がりエッジに同期して信号レベルが高レベルから低レベルに切り替わる第１データ保持信号ＲＤＬ１が第１アクセス信号発生部１３１から第１保持回路１３２ｂ−１に出力される。第１データ保持信号ＲＤＬ１及び後述する第１データ保持信号ＲＤＬ２，ＲＤＬ３及び第１データ保持信号ＲＤＬ４（図７参照）は、信号レベルが高レベルのときにネゲート状態となり、信号レベルが低レベルの時にアサート状態になる。図４に示すように、第１データ保持信号ＲＤＬ１は、第１データ読出指示信号Ｌ＿ＲＤ１がアサート状態になった後のクロック信号ＣＬＫの最初の立ち上がりエッジに同期してネゲート状態からアサート状態に切り替えられる。第１データ保持信号ＲＤＬ１は時刻ｔ２の直後にアサート状態になる。
【００９３】
時刻ｔ２の後の時刻ｔ３において、第１ライン選択回路１３２ａから出力される第１選択データＬ＿ＤＴ２ｓは、前回値から不定値となる。
【００９４】
時刻ｔ３の後の時刻ｔ４において、クロック信号ＣＬＫが再び立ち上がる。時刻ｔ４でのクロック信号のこの立ち上がりエッジに同期して、第１データ保持信号ＲＤＬ１がアサート状態からネゲート状態に切り替えられる。これにより、第１データ保持信号ＲＤＬ１は、時刻ｔ２から時刻ｔ４というクロック信号ＣＬＫの１周期の期間だけ信号レベルが低レベルになるパルス信号となる。第１データ保持信号ＲＤＬ１がアサート状態からネゲート状態に切り替わることにより、第１保持回路１３２ｂ−１は、第１選択データＬ＿ＤＴ２ｓを第１保持データＬ＿ＤＴ２ｈ−１として保持するともに、第１選択データＬ＿ＤＴ２ｓを出力端子Ｑから出力する。図４に示すように、時刻ｔ４における第１選択データＬ＿ＤＴ２ｓは、不定値であるため、第１保持回路１３２ｂ−１には不定値が保持される。
【００９５】
時刻ｔ４におけるクロック信号ＣＬＫの立ち上がりエッジに同期して信号レベルが高レベルから低レベルに切り替わる第１データ保持信号ＲＤＬ２が第１アクセス信号発生部１３１から第１保持回路１３２ｂ−２に出力される。第１データ保持信号ＲＤＬ２は、第１データ読出指示信号Ｌ＿ＲＤ１がアサート状態になった後のクロック信号ＣＬＫの２回目の立ち上がりエッジに同期してネゲート状態からアサート状態に切り替えられる。第１データ保持信号ＲＤＬ２は時刻ｔ４の直後にアサート状態になる。
【００９６】
時刻ｔ４の後の時刻ｔ５において、第１ライン選択回路１３２ａから出力される第１選択データＬ＿ＤＴ２ｓは、全てのビットデータが今回値となる。これにより、時刻ｔ５以降は、第１ライン選択回路１３２ａの出力端子から値「０ｘ５６７８」の第１選択データＬ＿ＤＴ２ｓが出力される。
【００９７】
時刻ｔ５の後の時刻ｔ６において、クロック信号ＣＬＫが再び立ち上がる。時刻ｔ６でのクロック信号のこの立ち上がりエッジに同期して、第１データ保持信号ＲＤＬ２がアサート状態からネゲート状態に切り替えられる。これにより、第１データ保持信号ＲＤＬ２は、時刻ｔ４から時刻ｔ６というクロック信号ＣＬＫの１周期の期間だけ信号レベルが低レベルになるパルス信号となる。第１データ保持信号ＲＤＬ２がアサート状態からネゲート状態に切り替わることにより、第１保持回路１３２ｂ−２は、第１選択データＬ＿ＤＴ２ｓを第１保持データＬ＿ＤＴ２ｈ−２として保持するともに、第１保持データＬ＿ＤＴ２ｈ−２を出力端子Ｑから出力する。図４に示すように、時刻ｔ６における第１選択データＬ＿ＤＴ２ｓは、今回値の値「０ｘ５６７８」であるため、第１保持回路１３２ｂ−２には値「０ｘ５６７８」が保持される。
【００９８】
時刻ｔ６におけるクロック信号ＣＬＫの立ち上がりエッジに同期して信号レベルが高レベルから低レベルに切り替わる第１データ保持信号ＲＤＬ３が第１アクセス信号発生部１３１から第１保持回路１３２ｂ−３に出力される。第１データ保持信号ＲＤＬ３は、第１データ読出指示信号Ｌ＿ＲＤ１がアサート状態になった後のクロック信号ＣＬＫの３回目の立ち上がりエッジに同期してネゲート状態からアサート状態に切り替えられる。第１データ保持信号ＲＤＬ３は時刻ｔ６の直後にアサート状態になる。
【００９９】
時刻ｔ６の後の時刻ｔ７において、クロック信号ＣＬＫが再び立ち上がる。時刻ｔ７でのクロック信号のこの立ち上がりエッジに同期して、第１データ保持信号ＲＤＬ３がアサート状態からネゲート状態に切り替えられる。これにより、第１データ保持信号ＲＤＬ３は、時刻ｔ６から時刻ｔ７というクロック信号ＣＬＫの１周期の期間だけ信号レベルが低レベルになるパルス信号となる。第１データ保持信号ＲＤＬ３がアサート状態からネゲート状態に切り替わることにより、第１保持回路１３２ｂ−３は、第１選択データＬ＿ＤＴ２ｓを第１保持データＬ＿ＤＴ２ｈ−３として保持するともに、第１保持データＬ＿ＤＴ２ｈ−３を出力端子Ｑから出力する。図４に示すように、時刻ｔ７における第１選択データＬ＿ＤＴ２ｓは、今回値の値「０ｘ５６７８」であるため、第１保持回路１３２ｂ−３には値「０ｘ５６７８」が保持される。
【０１００】
このように、第１データ決定部１３２は、クロック信号ＣＬＫの１クロック分ずつタイミングをずらして第１保持データＬ＿ＤＴ２−１，Ｌ−ＤＴ２−２，Ｌ＿ＤＴ２−３を順次保持する。
【０１０１】
時刻ｔ７において、第１アクセス信号発生部１３１が発生する最後の第１データ保持信号ＲＤＬ３がアサート状態からネゲート状態に切り替わることにより、第１判定回路１３２ｃは、入力される第１保持データＬ＿ＤＴ２ｈ−１，Ｌ＿ＤＴ２ｈ−２，Ｌ＿ＤＴ２ｈ−３の中から第１データすなわち第１読出データＬ＿ＤＴ２とすべき第１保持データを、判定テーブルを参照して判定する。
【０１０２】
ここで、第１判定回路１３２ｃが備えている判定テーブルについて図６を用いて説明する。図６に示すように、第１判定回路１３２ｃに記憶された判定テーブルでは、複数の保持データ同士の異同と、正規のデータとすべき保持データとが対応付けられている。判定テーブルの「［ＲＥＧ１＝ＲＥＧ２］？」及び「［ＲＥＧ２＝ＲＥＧ３］？」の欄は、複数の保持データ同士の異同を示す欄であり、「Ｌ＿ＤＴ２」の欄は、正規のデータとすべき保持データを示す欄である。「［ＲＥＧ１＝ＲＥＧ２］？」は、第１保持回路１３２ｂ−１に保持された第１保持データＬ＿ＤＴ２ｈ−１と第１保持回路１３２ｂ−２に保持された第１保持データＬ＿ＤＴ２ｈ−２とが一致しているか否かを示している。すなわち、「［ＲＥＧ１＝ＲＥＧ２］？」は、第１保持データＬ＿ＤＴ２ｈ−１及び第１保持データＬ＿ＤＴ２ｈ−２同士の異動を示している。「［ＲＥＧ２＝ＲＥＧ３］？」は、第１保持回路１３２ｂ−２に保持された第１保持データＬ＿ＤＴ２ｈ−２と、第１保持回路１３２ｂ−３に保持された第１保持データＬ＿ＤＴ２ｈ−３とが一致しているか否かを示している。すなわち、「［ＲＥＧ２＝ＲＥＧ３］？」は、第１保持データＬ＿ＤＴ２ｈ−２及び第１保持データＬ＿ＤＴ２ｈ−３同士の異動を示している。「Ｌ＿ＤＴ２」は、複数の保持データ同士の異同の結果に応じて正規のデータすなわち第１読出データＬ＿ＤＴ２とすべき保持データを示している。
【０１０３】
図６に示すように、第１保持データＬ＿ＤＴ２ｈ−１及び第１保持データＬ＿ＤＴ２ｈ−２が一致し、かつ第１保持データＬ＿ＤＴ２ｈ−２及び第１保持データＬ＿ＤＴ２ｈ−３が一致している場合には、第１読出データＬ＿ＤＴ２とすべき保持データは第１保持データＬ＿ＤＴ２ｈ−３と判定される。
第１保持データＬ＿ＤＴ２ｈ−１及び第１保持データＬ＿ＤＴ２ｈ−２が一致し、かつ第１保持データＬ＿ＤＴ２ｈ−２及び第１保持データＬ＿ＤＴ２ｈ−３が相違している場合には、第１読出データＬ＿ＤＴ２とすべき保持データは第１保持データＬ＿ＤＴ２ｈ−２と判定される。
第１保持データＬ＿ＤＴ２ｈ−１及び第１保持データＬ＿ＤＴ２ｈ−２が相違し、かつ第１保持データＬ＿ＤＴ２ｈ−２及び第１保持データＬ＿ＤＴ２ｈ−３が相違している場合には、第１読出データＬ＿ＤＴ２とすべき保持データは第１保持データＬ＿ＤＴ２ｈ−３と判定される。
第１保持データＬ＿ＤＴ２ｈ−１及び第１保持データＬ＿ＤＴ２ｈ−２が相違し、かつ第１保持データＬ＿ＤＴ２ｈ−２及び第１保持データＬ＿ＤＴ２ｈ−３が一致している場合には、第１読出データＬ＿ＤＴ２とすべき保持データは第１保持データＬ＿ＤＴ２ｈ−３と判定される。
【０１０４】
図４に戻って、第１保持回路１３２ｂ−１に保持された第１保持データＬ＿ＤＴ２ｈ−１の値は不定値であり、第１保持回路１３２ｂ−２に保持された第１保持データＬ＿ＤＴ２ｈ−２の値は「０ｘ５６７８」であり、第１保持回路１３２ｂ−３に保持された第１保持データＬ＿ＤＴ２ｈ−３の値は「０ｘ５６７８」である。すなわち、第１保持データＬ＿ＤＴ２ｈ−１と第１保持回路１３２ｂ−２とは相違し、第２保持データＬ＿ＤＴ２ｈ−２と第１保持回路１３２ｂ−３とは一致する。このため、第１判定回路１３２ｃは、時刻ｔ７で判定動作を行うので判定テーブルを参照し、第１読出データＬ＿ＤＴ２とすべき保持データを第１保持データＬ＿ＤＴ２ｈ−３と判定する。第１判定回路１３２ｃは、第１保持データＬ＿ＤＴ２ｈ−３を選択するための選択制御信号ＯＳを第１保持データ選択回路１３２ｄに出力する。
【０１０５】
第１保持データ選択回路１３２ｄは、選択制御信号ＯＳに基づいて、入力される第１保持データＬ＿ＤＴ２ｈ−１，Ｌ＿ＤＴ２ｈ−２，Ｌ＿ＤＴ２ｈ−３の中から第１保持データＬ＿ＤＴ２ｈ−３を選択して第１出力バッファ回路１３２ｅに出力する。図示は省略するが、時刻ｔ７では、第１アドレス信号Ｌ＿ＡＤＲが入力され、かつ第１データ読出制御信号ＲＯＥはアサート状態となっている。このため、図４に示すように、ＣＰＵ側第１データバスライン２２には、第１保持データＬ＿ＤＴ２ｈ−３と同一の値「０ｘ５６７８」の第１読出データＬ＿ＤＴ２が出力される。
【０１０６】
時刻ｔ７の後の時刻ｔ８において、第１データ読出指示信号Ｌ＿ＲＤ１がアサート状態からネゲート状態に切り替わる。第１ＣＰＵ１１は、第１データ読出指示信号Ｌ＿ＲＤ１のアサート状態からネゲート状態への切り替わりに同期して、ＣＰＵ側第１データバスライン２２に入力された第１読出データＬ＿ＤＴ２を読込む。
以上で、マルチプロセッサシステム１における第１メモリアクセスコントローラ３１での１つのデータのデータ読込み動作が終了する。
【０１０７】
第２メモリアクセスコントローラ３２のデータ読出し動作は、第１メモリアクセスコントローラ３１の動作の「第１」を「第２」に読み替えたのと同様であるため、説明は省略する。
【０１０８】
（データ読出し動作の他の例）
次に、マルチプロセッサシステム１における第１メモリアクセスコントローラ３１のデータ読出し動作の他の例について図１及び図２を参照しつつ図７及び図８を用いて説明する。図７には、第１選択データＬ＿ＤＴ２ｓが不定値の期間がクロック信号ＣＬＫの１周期よりも長く２周期よりも短い場合であって、第１データ決定部１３２が４つの第１保持回路１３２ｂ−１，１３２ｂ−２，１３２ｂ−３，１３２ｂ−４（ｉ＝４）を備えている場合のデータ読出し動作のタイミングチャートが図示されている。
【０１０９】
図７に示すデータ読出し動作のタイミングチャートにおいて、図７中に示す「ＣＬＫ」、「Ｌ＿ＤＴ２−ｋ」、「Ｌ＿ＤＴ２ｓ」、「Ｌ＿ＲＤ１」、「ＲＤＬ１」、「ＲＥＧ１」、「ＲＤＬ２」、「ＲＥＧ２」、「ＲＤＬ３」、「ＲＥＧ３」及び「Ｌ＿ＤＴ２（２２）」は、図４に示す「ＣＬＫ」、「Ｌ＿ＤＴ２−ｋ」、「Ｌ＿ＤＴ２ｓ」、「Ｌ＿ＲＤ１」、「ＲＤＬ１」、「ＲＥＧ１」、「ＲＤＬ２」、「ＲＥＧ２」、「ＲＤＬ３」、「ＲＥＧ３」及び「Ｌ＿ＤＴ２（２２）」と同様の内容を示している。図７中に示す「ＲＤＬ４」は、第１データ保持信号ＲＤＬ４を示し、「ＲＥＧ４」は第１保持回路１３２ｂ−４に保持された第１保持データＬ＿ＤＴ２ｈ−４を示している。図７において、左から右に向かって時の経過が表されている。
【０１１０】
図７に示す、時刻ｔ１から時刻７までの動作は、第１選択データＬ＿ＤＴ２ｓの不定値の期間が時刻ｔ３から時刻ｔ６まで（クロック信号ＣＬＫの１周期よりも長く２周期よりも短い期間）である点と、第１保持回路１３２ｂ−２に保持される第１保持データＬ＿ＤＴ２ｈ−２の値が不定値である点を除いて、図４に示す時刻ｔ１から時刻ｔ７までの動作と同様であるので、説明は省略する。
【０１１１】
時刻ｔ７におけるクロック信号ＣＬＫの立ち上がりエッジに同期して信号レベルが高レベルから低レベルに切り替わる第１データ保持信号ＲＤＬ４が第１アクセス信号発生部１３１から第１保持回路１３２ｂ−４に出力される。第１データ保持信号ＲＤＬ４は、第１データ読出指示信号Ｌ＿ＲＤ１がアサート状態になった後のクロック信号ＣＬＫの４回目の立ち上がりエッジに同期してネゲート状態からアサート状態に切り替えられる。第１データ保持信号ＲＤＬ４は時刻ｔ７の直後にアサート状態になる。
【０１１２】
時刻ｔ７の後の時刻ｔ８において、クロック信号ＣＬＫが再び立ち上がる。時刻ｔ８でのクロック信号のこの立ち上がりエッジに同期して、第１データ保持信号ＲＤＬ４がアサート状態からネゲート状態に切り替えられる。これにより、第１データ保持信号ＲＤＬ４は、時刻ｔ７から時刻ｔ８というクロック信号ＣＬＫの１周期の期間だけ信号レベルが低レベルになるパルス信号となる。第１データ保持信号ＲＤＬ４がアサート状態からネゲート状態に切り替わることにより、第１保持回路１３２ｂ−４は、第１選択データＬ＿ＤＴ２ｓを第１保持データＬ＿ＤＴ２ｈ−４として保持するとともに、第１保持データＬ＿ＤＴ２ｈ−４を出力端子Ｑから出力する。図７に示すように、時刻ｔ８における第１選択データＬ＿ＤＴ２ｓは、今回値の値「０ｘ５６７８」であるため、第１保持回路１３２ｂ−４には値「０ｘ５６７８」が保持される。
【０１１３】
このように、第１データ決定部１３２は、クロック信号ＣＬＫに同期させてクロック信号ＣＬＫの１クロック分ずつタイミングをずらして第１保持データＬ＿ＤＴ２−１，Ｌ−ＤＴ２−２，Ｌ＿ＤＴ２−３，Ｌ＿ＤＴ２−４を順次保持する。
【０１１４】
時刻ｔ８において第１データ保持信号ＲＤＬ４がアサート状態からネゲート状態に切り替わることにより、第１判定回路１３２ｃは、入力される第１保持データＬ＿ＤＴ２ｈ−１，Ｌ＿ＤＴ２ｈ−２，Ｌ＿ＤＴ２ｈ−３，Ｌ＿ＤＴ２ｈ−４の中から正規のデータすなわち第１読出データＬ＿ＤＴ２とすべき第１保持データを、判定テーブルを参照して判定する。
【０１１５】
ここで、第１判定回路１３２ｃが記憶している判定テーブルを図８を用いて説明する。図８に示すように、第１判定回路１３２ｃに記憶された判定テーブルでは、複数の保持データ同士の異同と、正規のデータとすべき保持データとが対応付けられている。判定テーブルの「［ＲＥＧ１＝ＲＥＧ２］？」、「［ＲＥＧ２＝ＲＥＧ３］？」及び「［ＲＥＧ３＝ＲＥＧ４］？」の欄は、複数の保持データ同士の異同を示す欄であり、「Ｌ＿ＤＴ２」の欄は、第１データとすべき保持データを示す欄である。図８に示す判定テーブルにおける「［ＲＥＧ１＝ＲＥＧ２］？」、「［ＲＥＧ２＝ＲＥＧ３］？」及び「Ｌ＿ＤＴ２」は、図６に示す判定テーブルにおける「［ＲＥＧ１＝ＲＥＧ２］？」、「［ＲＥＧ２＝ＲＥＧ３］？」及び「Ｌ＿ＤＴ２」と同内容であるため、説明は省略する。「［ＲＥＧ３＝ＲＥＧ４］？」は、第１保持回路１３２ｂ−３に保持された第１保持データＬ＿ＤＴ２ｈ−３と第１保持回路１３２ｂ−４に保持された第１保持データＬ＿ＤＴ２ｈ−４とが一致しているか否かを示している。すなわち、「［ＲＥＧ３＝ＲＥＧ４］？」は、第１保持データＬ＿ＤＴ２ｈ−３及び第１保持データＬ＿ＤＴ２ｈ−４同士の異動を示している。
【０１１６】
図８に示すように、第１保持データＬ＿ＤＴ２ｈ−１及び第１保持データＬ＿ＤＴ２ｈ−２が一致し、第１保持データＬ＿ＤＴ２ｈ−２及び第１保持データＬ＿ＤＴ２ｈ−３が一致し、かつ第１保持データＬ＿ＤＴ２ｈ−３及び第１保持データＬ＿ＤＴ２ｈ−４が一致している場合には、第１読出データＬ＿ＤＴ２とすべき保持データは第１保持データＬ＿ＤＴ２ｈ−４と判定される。
第１保持データＬ＿ＤＴ２ｈ−１及び第１保持データＬ＿ＤＴ２ｈ−２が一致し、第１保持データＬ＿ＤＴ２ｈ−２及び第１保持データＬ＿ＤＴ２ｈ−３が一致し、かつ第１保持データＬ＿ＤＴ２ｈ−３及び第１保持データＬ＿ＤＴ２ｈ−４が相違している場合には、第１読出データＬ＿ＤＴ２とすべき保持データは第１保持データＬ＿ＤＴ２ｈ−３と判定される。
第１保持データＬ＿ＤＴ２ｈ−１及び第１保持データＬ＿ＤＴ２ｈ−２が一致し、第１保持データＬ＿ＤＴ２ｈ−２及び第１保持データＬ＿ＤＴ２ｈ−３が相違し、かつ第１保持データＬ＿ＤＴ２ｈ−３及び第１保持データＬ＿ＤＴ２ｈ−４が相違している場合には、第１読出データＬ＿ＤＴ２とすべき保持データは第１保持データＬ＿ＤＴ２ｈ−２と判定される。
第１保持データＬ＿ＤＴ２ｈ−１及び第１保持データＬ＿ＤＴ２ｈ−２が相違し、第１保持データＬ＿ＤＴ２ｈ−２及び第１保持データＬ＿ＤＴ２ｈ−３が相違し、かつ第１保持データＬ＿ＤＴ２ｈ−３及び第１保持データＬ＿ＤＴ２ｈ−４が相違している場合には、第１読出データＬ＿ＤＴ２とすべき保持データは第１保持データＬ＿ＤＴ２ｈ−４と判定される。
第１保持データＬ＿ＤＴ２ｈ−１及び第１保持データＬ＿ＤＴ２ｈ−２が相違し、第１保持データＬ＿ＤＴ２ｈ−２及び第１保持データＬ＿ＤＴ２ｈ−３が相違し、かつ第１保持データＬ＿ＤＴ２ｈ−３及び第１保持データＬ＿ＤＴ２ｈ−４が一致している場合には、第１読出データＬ＿ＤＴ２とすべき保持データは第１保持データＬ＿ＤＴ２ｈ−４と判定される。
第１保持データＬ＿ＤＴ２ｈ−１及び第１保持データＬ＿ＤＴ２ｈ−２が相違し、第１保持データＬ＿ＤＴ２ｈ−２及び第１保持データＬ＿ＤＴ２ｈ−３が一致し、かつ第１保持データＬ＿ＤＴ２ｈ−３及び第１保持データＬ＿ＤＴ２ｈ−４が一致している場合には、第１読出データＬ＿ＤＴ２とすべき保持データは第１保持データＬ＿ＤＴ２ｈ−４と判定される。
【０１１７】
図７に戻って、第１保持回路１３２ｂ−１に保持された第１保持データＬ＿ＤＴ２ｈ−１の値は不定値であり、第１保持回路１３２ｂ−２に保持された第１保持データＬ＿ＤＴ２ｈ−２の値は不定値であり、第１保持回路１３２ｂ−３に保持された第１保持データＬ＿ＤＴ２ｈ−３の値は「０ｘ５６７８」であり、第１保持回路１３２ｂ−４に保持された第１保持データＬ＿ＤＴ２ｈ−４の値は「０ｘ５６７８」である。すなわち、第１保持データＬ＿ＤＴ２ｈ−１の値と第１保持データＬ＿ＤＴ２ｈ−２の値とは相違し、第２保持データＬ＿ＤＴ２ｈ−２の値と第３保持データＬ＿ＤＴ２ｈ−３の値とは相違し、第１保持データＬ＿ＤＴ２ｈ−３の値と第１保持データＬ＿ＤＴ２ｈ−４の値とは一致する。このため、第１判定回路１３２ｃは、判定テーブルを参照し、第１読出データＬ＿ＤＴ２とすべき保持データを第１保持データＬ＿ＤＴ２ｈ−４と判定する。第１判定回路１３２ｃは、第１保持データＬ＿ＤＴ２ｈ−４を選択するための選択制御信号ＯＳを第１保持データ選択回路１３２ｄに出力する。
【０１１８】
第１保持データ選択回路１３２ｄは、選択制御信号ＯＳに基づいて、入力される第１保持データＬ＿ＤＴ２ｈ−１，Ｌ＿ＤＴ２ｈ−２，Ｌ＿ＤＴ２ｈ−３，Ｌ＿ＤＴ２ｈ−４の中から第１保持データＬ＿ＤＴ２ｈ−４を選択して第１出力バッファ回路１３２ｅに出力する。図示は省略するが、時刻ｔ８では、第１データ読出制御信号ＲＯＥはアサート状態となっている。このため、図７に示すように、ＣＰＵ側第１データバスライン２２には、第１保持データＬ＿ＤＴ２ｈ−４と同一の値「０ｘ５６７８」の第１読出データＬ＿ＤＴ２が出力される。
【０１１９】
時刻ｔ８の後の時刻ｔ９において、第１データ読出指示信号Ｌ＿ＲＤ１がアサート状態からネゲート状態に切り替わる。第１ＣＰＵ１１は、第１データ読出指示信号Ｌ＿ＲＤ１のアサート状態からネゲート状態への切り替わりに同期して、ＣＰＵ側第１データバスライン２２に入力された第１読出データＬ＿ＤＴ２を読込む。
以上で、マルチプロセッサシステム１における第１メモリアクセスコントローラ３１での１つのデータのデータ読込み動作が終了する。
【０１２０】
以上説明したように、本実施形態によるマルチプロセッサシステム１は、複数のデュアルポートメモリ３３と、第１ＣＰＵ１１と、クロック信号発信器１４と、第１メモリアクセスコントローラ３１と、第１メモリアクセスコントローラ３１に備えられ、複数のデュアルポートメモリ３３のうちのデュアルポートメモリ３３−ｋから読出された第１読出データＬ＿ＤＴ２−ｋを、クロック信号ＣＬＫに順次同期させて第１保持データＬ＿ＤＴ２ｈ−１，Ｌ＿ＤＴ２ｈ−２，・・・，Ｌ＿ＤＴ２ｈ−ｉとして複数保持し、複数の第１保持データＬ＿ＤＴ２ｈ−１，Ｌ＿ＤＴ２ｈ−２，・・・，Ｌ＿ＤＴ２ｈ−ｉの中から第１ＣＰＵ１１に出力する正規のデータを決定するデータ決定部１３２とを有している。
【０１２１】
これにより、マルチプロセッサシステム１は、デュアルポートメモリ１３から不定値を読み出すことを防止できるので、マルチプロセッサシステム１が適用された産業用機器の予期せぬ誤動作を防止できる。
【０１２２】
本発明の技術的範囲は、図示され記載された例示的な実施形態に限定されるものではなく、本発明が目的とするものと均等な効果をもたらす全ての実施形態をも含む。さらに、本発明の技術的範囲は、請求項により画される発明の特徴の組み合わせに限定されるものではなく、全ての開示されたそれぞれの特徴のうち特定の特徴のあらゆる所望する組み合わせによって画されうる。
【符号の説明】
【０１２３】
１  マルチプロセッサシステム
１１  第１ＣＰＵ
１２  第２ＣＰＵ
１３  デュアルポートメモリ
１４  クロック信号発信器
２１  第１アドレスバスライン
２２  ＣＰＵ側第１データバスライン
２３ｒ  読出用メモリ側第１データバスライン
２３ｗ  書込用メモリ側第１データバスライン
３１  第１メモリアクセスコントローラ
３２  第２メモリアクセスコントローラ
３３  デュアルポートメモリ
４１  第２アドレスバスライン
４２  ＣＰＵ側第２データバスライン
４３ｒ  読出用メモリ側第２データバスライン
４３ｗ  書込用メモリ側第２データバスライン
１３１  アクセス信号発生部
１３２  データ決定部
１３２ａ  第１ライン選択回路
１３２ｂ−１，１３２ｂ−２，１３２ｂ−ｉ  第１保持回路
１３２ｃ  第１判定回路
１３２ｄ    第１保持データ選択回路
１３２ｅ  第１出力バッファ回路
３３１，３３１−１，３３１−２，３３１−ｎ  第１入出力ポート
３３２，３３２−１，３３２−２，３３２−ｎ  第２入出力ポート
３３３，３３３−１，３３３−２，３３３−ｎ  記憶部
ＣＬＫ  クロック信号
Ｌ＿ＡＤＲ  第１アドレス信号
Ｌ＿ＤＴ１  第１書込データ
Ｌ＿ＤＴ２  第１読出データ
Ｌ＿ＤＴ２  第１保持データ
Ｌ＿ＤＴ２ｓ  第１選択データ
Ｌ＿ＤＴ２ｈ−１，Ｌ＿ＤＴ２ｈ−２，Ｌ＿ＤＴ２ｈ−ｉ  第１保持データ
Ｌ＿ＲＤ１  第１データ読出指示信号
Ｌ＿ＷＲ１  第１データ書込指示信号
Ｌ＿ＷＲ２  第１データ書込信号
ＬＴ  保持信号入力端子
ＯＥ  制御信号入力端子
ＯＳ  選択制御信号
Ｒ＿ＡＤＲ  第２アドレス信号
Ｒ＿ＤＴ１  第２書込データ
Ｒ＿ＤＴ２  第２読出データ
Ｒ＿ＲＤ１  第２データ読出指示信号
Ｒ＿ＷＲ１  第３データ書込指示信号
Ｒ＿ＷＲ２  第２データ書込信号
ＲＤＬ１，ＲＤＬ２，ＲＤＬ３，ＲＤＬ４，ＲＤＬｉ  第１データ保持信号
ＲＯＥ  第１データ読出制御信号
Ｔｄｂ  遅延ばらつき期間
Ｔｄｓ  期間
【図１】
0006493044.tif 000002
【図２】
0006493044.tif 000003
【図３】
0006493044.tif 000004
【図４】
0006493044.tif 000005
【図５】
0006493044.tif 000006
【図６】
0006493044.tif 000007
【図７】
0006493044.tif 000008
【図８】
0006493044.tif 000009