〔第1実施形態〕
本発明の第1実施形態によるマルチプロセッサシステムについて図1から図6を用いて説明する。本実施形態によるマルチプロセッサシステムは、例えば産業用機器に適用され、例えばデュアルポートメモリを用いて2つの処理装置の間でデータ交換できる。
[マルチプロセッサシステムの概略構成]
図1に示すように、マルチプロセッサシステム1は、第1データが入出力される第1入出力ポート131と、第1入出力ポート131とは独立して設けられて第2データが入出力される第2入出力ポート132と、第1及び第2データを記憶する記憶部133とを備えたデュアルポートメモリ13を有している。後述する第1書込データL_DT1及び第1読出データL_DT2が第1データに対応し、後述する第2書込データR_DT1及び第2読出データR_DT2が第2データに対応する。なお、図1では、第1入出力ポートは「第1I/Oポート」として図示され、第2入出力ポートは「第2I/Oポート」として図示され、デュアルポートメモリ(Dual Port Random Access Memory)は、「DP−RAM」として図示されている。
デュアルポートメモリ13に備えられた記憶部133は、アレイ構造のメモリセルを有している。デュアルポートメモリ13は、第1入出力ポート131を介して入力される第1データ書込指示信号L_WR1及び第1アドレス信号L_ADRに応じて、これらの信号とともに入力される第1書込データL_DT1を記憶部133に備えられたメモリセルに書き込むようになっている。また、デュアルポートメモリ13は、第2入出力ポート132を介して入力される第2データ書込信号R_WR2及び第2アドレス信号R_ADRに応じて、これらの信号とともに入力される第2書込データR_DT1を記憶部133に備えられたメモリセルに書き込むようになっている。また、デュアルポートメモリ13は、第1入出力ポート131を介して入力される第1データ読出信号L_RD2及び第1アドレス信号L_ADRに応じて、記憶部133に備えられたメモリセルから第1読出データL_DT2を読出すようになっている。さらに、デュアルポートメモリ13は、第2入出力ポート132を介して入力される第2データ読出信号R_RD2及び第2アドレス信号R_ADRに応じて、記憶部133に備えられたメモリセルから第2読出データR_DT2を読出すようになっている。
第1入出力ポート131には、第1アドレス信号L_ADR、第1データ書込信号L_WR2、第1データ読出信号L_RD2が入力される入力端子(不図示)が設けられている。また、第1入出力ポート131には、第1書込データL_DT1が入力され第1読出データL_DT2が出力される入出力端子(不図示)が設けられている。第2入出力ポート132には、第2アドレス信号R_ADR、第2データ書込信号R_WR2、第2データ読出信号R_RD2が入力される入力端子(不図示)が設けられている。また、第2入出力ポート132には、第2書込データR_DT1が入力され第2読出データR_DT2が出力される入出力端子(不図示)が設けられている。
また、マルチプロセッサシステム1は、デュアルポートメモリ13において入出力される第1データを処理する第1CPU(第1処理装置の一例)11と、デュアルポートメモリ13において入出力される第2データを処理する第2CPU(第2処理装置の一例)12とを有している。
また、マルチプロセッサシステム1は、クロック信号CLKを発信するクロック信号発信器14と、クロック信号CLKに同期して動作する第1メモリアクセスコントローラ15及び第2メモリアクセスコントローラ16とを有している。第1メモリアクセスコントローラ15は、デュアルポートメモリ13に対する第1CPU11のアクセスを制御するようになっている。第2メモリアクセスコントローラ16は、デュアルポートメモリ13に対する第2CPU12のアクセスを制御するようになっている。
第1CPU11は、デュアルポートメモリ13及び第1メモリアクセスコントローラ15と接続されている。第1CPU11は、第1書込データL_DT1を書き込む対象のメモリセル又は第1読出データL_DT2の読出し対象のメモリセルのアドレスを指定するための第1アドレス信号L_ADRをデュアルポートメモリ13に出力する。第1アドレス信号L_ADRは、第1入出力ポート131を介して記憶部133に入力される。また、第1アドレス信号L_ADRは第1メモリアクセスコントローラ15にも入力される。第1アドレス信号L_ADRは、第1CPU11とデュアルポートメモリ13との間及び第1CPU11と第1メモリアクセスコントローラ15との間に設けられた第1アドレスバスライン21を通してデュアルポートメモリ13及び第1メモリアクセスコントローラ15にそれぞれ送信される。
また、第1CPU11は、データ書込みを指示するための第1データ書込指示信号L_WR1と、データ読出しを指示するための第1データ読出指示信号L_RD1とを第1メモリアクセスコントローラ15に出力する。また、第1CPU11は、デュアルポートメモリ13に書き込むための第1書込データL_DT1を第1メモリアクセスコントローラ15に出力する。さらに、第1CPU11には、デュアルポートメモリ13から読み出されて第1メモリアクセスコントローラ15から出力された第1読出データL_DT2が入力されるようになっている。
第1CPU11と第1メモリアクセスコントローラ15との間には、CPU側第1データバスライン22が設けられている。マルチプロセッサシステム1は、第1メモリアクセスコントローラ15とデュアルポートメモリ13との間に設けられ、デュアルポートメモリ13に書込まれる第1データと、デュアルポートメモリから読出される第1データとを送信可能なメモリ側第1データバスライン(第1データバスラインの一例)23を有している。メモリ側第1データバスライン23は、第1メモリアクセスコントローラ15と第1入出力ポート131との間に設けられている。第1書込データL_DT1は、CPU側第1データバスライン22を通して第1メモリアクセスコントローラ15に送信される。第1メモリアクセスコントローラ15に送信された第1書込データL_DT1は、メモリ側第1データバスライン23を通してデュアルポートメモリ13に送信され、第1入出力ポート131を介してデュアルポートメモリ13に入力される。第1読出データL_DT2は、第1入出力ポート131を介してメモリ側第1データバスライン23に出力され、メモリ側第1データバスライン23を通して第1メモリアクセスコントローラ15に入力される。第1メモリアクセスコントローラ15に入力された第1読出データL_DT2は、CPU側第1データバスライン22を通して第1CPU11に送信される。メモリ側第1データバスライン23は、第1データを双方向に送信可能になっている。
第1メモリアクセスコントローラ15は、デュアルポートメモリ13と接続されている。第1メモリアクセスコントローラ15は、第1CPU11から入力される第1データ書込指示信号L_WR1に基づいて、第1データ書込信号L_WR2をデュアルポートメモリ13に出力する。また、第1メモリアクセスコントローラ15は、第1CPU11から入力される第1データ読出指示信号L_RD1に基づいて、第1データ読込信号の1つである第1データ読出信号L_RD2をデュアルポートメモリ13に出力する。第1メモリアクセスコントローラ15は、クロック信号発信器14から出力されるクロック信号CLKに同期させて第1データ書込信号L_WR2や第1データ読出信号L_RD2をデュアルポートメモリ13に出力するようになっている。なお、第1メモリアクセスコントローラ15の内部構成については後述する。
第2CPU12は、デュアルポートメモリ13及び第2メモリアクセスコントローラ16と接続されている。第2CPU12は、第2書込データR_DT1を書き込む対象のメモリセル又は第2読出データR_DT2の読出し対象のメモリセルのアドレスを指定するための第2アドレス信号R_ADRをデュアルポートメモリ13に出力する。第2アドレス信号R_ADRは、第2入出力ポート132を介して記憶部133に入力される。また、第2アドレス信号L_ADRは第2メモリアクセスコントローラ16にも入力される。第2アドレス信号R_ADRは、第2CPU12とデュアルポートメモリ13との間及び第2CPU12と第2メモリアクセスコントローラ16との間に設けられた第2アドレスバスライン31を通してデュアルポートメモリ13及び第2メモリアクセスコントローラ16にそれぞれ送信される。
また、第2CPU12は、データ書込みを指示するための第2データ書込指示信号R_WR1と、データ読出しを指示するための第2データ読出指示信号R_RD1とを第2メモリアクセスコントローラ16に出力する。また、第2CPU12は、デュアルポートメモリ13に書き込むための第2書込データR_DT1を第2メモリアクセスコントローラ16に出力する。さらに、第2CPU12には、デュアルポートメモリ13から読み出されて第2メモリアクセスコントローラ16から出力された第2読出データR_DT2が入力されるようになっている。
第2CPU12と第2メモリアクセスコントローラ16との間には、CPU側第2データバスライン32が設けられている。マルチプロセッサシステム1は、第2メモリアクセスコントローラ16とデュアルポートメモリ13との間に設けられ、デュアルポートメモリ13に書込まれる第2データと、デュアルポートメモリ13から読出される第2データとを送信可能なメモリ側第2データバスライン(第2データバスラインの一例)33を有している。メモリ側第2データバスライン33は、第2メモリアクセスコントローラ16と第2入出力ポート132との間に設けられている。第2書込データR_DT1は、CPU側第2データバスライン32を通して第2メモリアクセスコントローラ16に送信される。第2メモリアクセスコントローラ16に送信された第2書込データR_DT1は、メモリ側第2データバスライン33を通してデュアルポートメモリ13に送信され、第2入出力ポート132を介してデュアルポートメモリ13に入力される。第2読出データR_DT2は、第2入出力ポート132を介してメモリ側第2データバスライン33に出力され、メモリ側第2データバスライン33を通して第2メモリアクセスコントローラ16に入力される。第2メモリアクセスコントローラ16に入力された第2読出データR_DT2は、CPU側第2データバスライン32を通して第2CPU12に送信される。メモリ側第2データバスライン33は、第2データを双方向に送信可能になっている。
第2メモリアクセスコントローラ16は、デュアルポートメモリ13と接続されている。第2メモリアクセスコントローラ16は、第2CPU12から入力される第2データ書込指示信号R_WR1に基づいて、第2データ書込信号R_WR2をデュアルポートメモリ13に出力する。また、第2メモリアクセスコントローラ16は、第2CPU12から入力される第2データ読出指示信号R_RD1に基づいて、第2データ読込信号の1つである第2データ読出信号R_RD2をデュアルポートメモリ13に出力する。第2メモリアクセスコントローラ16は、クロック信号発信器14から出力されるクロック信号CLKに同期させて第2データ書込信号R_WR2や第2データ読出信号R_RD2をデュアルポートメモリ13に出力するようになっている。なお、第2メモリアクセスコントローラ16の内部構成については後述する。
マルチプロセッサシステム1を適用した産業用機器において、例えば第1CPU11は主処理用の処理装置として用いられ、第2CPU12は外部機器との外部通信用の処理装置として用いられる。第1CPU11は多量のデータをデュアルポートメモリ13に送信して記憶させておく。第2CPU12はデュアルポートメモリ13に記憶されたデータを読み出すとともに外部機器に送信する。第2CPU12が外部機器にデータを送信してからこの外部機器から所定の結果を受信するまでにはある程度の時間を要する。このため、第1CPU11は、第2CPU12が外部機器から受信した結果に基づくデータをデュアルポートメモリ13に送信するまでの間に、別のデータ処理を継続することができる。これにより、マルチプロセッサシステム1を適用した産業用機器は、高速処理を実現できる。
また、デュアルポートメモリ13は、第1及び第2入出力ポート131,132という互いに独立した2つの入出力ポートを有している。このため、第1及び第2CPU11,12が互いに異なるアドレスに対応する記憶部133のメモリセルに第1及び第2入出力ポート131,132からアクセスする限りは、データの衝突が生じないようになっている。さらに、マルチプロセッサシステム1では、第1メモリアクセスコントローラ15がデュアルポートメモリ13に第1書込データL_DT1を書込む第1データ書込タイミング、第1メモリアクセスコントローラ15がデュアルポートメモリ13から第1読出データL_DT2を読込む第1データ読込タイミング、第2メモリアクセスコントローラ16がデュアルポートメモリ13に第2書込データR_DT1を書込む第2データ書込タイミング、及び第2メモリアクセスコントローラ16がデュアルポートメモリ13から第2読出データR_DT2を読込む第2データ読込タイミングは、クロック信号発信器14が発信するクロック信号CLKに同期している。このため、デュアルポートメモリ13に対して同一のアドレスに対応する記憶部133のメモリセルに対し、第1CPU11からの書込み(又は読出し)と第2CPU12からの読出し(又は書込み)の指示が競合しても、デュアルポートメモリ13におけるデータの衝突や第1CPU11(又は第2CPU12)への不定値データ(詳細は後述)の送信を防止できる。これにより、マルチプロセッサシステム1は、適用される産業用機器の誤動作を防止できる。
[第1及び第2メモリアクセスコントローラの内部構成]
次に、第1及び第2メモリアクセスコントローラ15,16の内部構成について図2を用いて説明する。
図2に示すように、第1メモリアクセスコントローラ15は、デュアルポートメモリ13に第1書込データ(第1データの一例)L_DT1を書込むための第1データ書込信号L_WR2と、デュアルポートメモリ13から第1読出データ(第1データの一例)L_DT2を読込むための、第1データ読込信号に含まれる第1データ読出信号L_RD2とを発生する第1アクセス信号発生部151を備えている。第1アクセス信号発生部151には、第1アドレス信号L_ADR、第1データ書込指示信号L_WR1、第1データ読出指示信号L_RD1及びクロック信号CLKが入力される。ところで、図1には、第1CPU11のアクセス先として、デュアルポートメモリ13が図示されている。実際には、第1CPU11のアクセス先は、図示しない他の部品(例えば通信回路など)も存在する。第1アドレス信号L_ADRが第1メモリアクセスコントローラ15に入力され、デュアルポートメモリ13にアクセスする場合のみ第1メモリアクセスコントローラ15は動作するように構成されている。
第1アクセス信号発生部151は、非アクセス状態時に、信号状態が無効状態すなわちネゲート状態にある第1データ書込信号L_WR2及び第1データ読出信号L_RD2をデュアルポートメモリ13の第1入出力ポート131に対して出力している。第1アクセス信号発生部151は、第1データ書込指示信号L_WR1が有効状態すなわちアサート状態になると、クロック信号CLKに同期させて第1データ書込信号L_WR2を少なくともクロック信号CLKの1周期分アサート状態とする。また、第1アクセス信号発生部151は、第1データ読出指示信号L_RD1がアサート状態になると、クロック信号CLKに同期させて第1データ読出信号L_RD2を少なくともクロック信号CLKの1周期分アサート状態とする。
また、第1アクセス信号発生部151は、第1データ書込制御信号WOE、第1データ読出制御信号ROE及び第1データ保持信号RDLを発生する。第1アクセス信号発生部151は、発生した第1データ書込制御信号WOEを第1書込ゲート部152(詳細は後述)に出力し、発生した第1データ読出制御信号ROE及び第1データ保持信号RDLを第1保持部153(詳細は後述)に出力する。
第1メモリアクセスコントローラ15は、第1アクセス信号発生部151から入力されて第1データ読込信号の1つである第1データ保持信号RDLが有効状態から無効状態に切り替わる時に、デュアルポートメモリ13から読出された第1読出データ(第1データの一例)L_DT2を保持する第1保持部153を備えている。第1データ保持信号RDLは、第1保持部153に設けられた保持信号入力端子LTに入力される。
第1保持部153は、第1アクセス信号発生部151から入力される第1データ読出制御信号ROEが有効状態の時にデュアルポートメモリ13から読出され保持している第1読出データL_DT2を第1CPU11に出力する。また、第1保持部153は、第1データ読出制御信号ROEが無効状態の時に出力部である出力端子OUTをハイインピーダンス状態とするようになっている。第1データ読出制御信号ROEは、第1保持部153に設けられた制御信号入力端子OEに入力される。
第1保持部153の入力端子INは、メモリ側第1データバスライン23に接続されている。デュアルポートメモリ13の記憶部133から読出された第1読出データL_DT2は、第1入出力ポート131及びメモリ側第1データバスライン23を介して第1保持部153の入力端子INに入力される。第1保持部153の出力端子OUTは、CPU側第1データバスライン22に接続されている。第1保持部153に保持されている第1読出データL_DT2は、出力端子OUT及びCPU側第1データバスライン22を介して第1CPU11に送信される。
第1メモリアクセスコントローラ15は、第1CPU11から入力される第1書込データL_DT1をデュアルポートメモリ13に出力可能な状態と、第1書込データL_DT1の入出力が不可能なハイインピーダンス状態とに可逆的に切り替わる第1書込ゲート部152を備えている。
第1書込ゲート部152は、アクセス信号発生部151から入力される第1データ書込制御信号WOEの信号状態が有効状態の時に第1書込データL_DT1を入出力可能な状態となる。一方、第1書込ゲート部152は、第1データ書込制御信号WOEの信号状態が無効状態の時に入力端子IN及び出力端子OUTがハイインピーダンス状態となる。第1データ書込制御信号WOEは、第1書込ゲート部152に設けられた制御信号入力端子OEに入力される。
第1書込ゲート部152の入力端子INは、CPU側第1データバスライン22に接続されている。第1書込ゲート部152の出力端子OUTは、メモリ側第1データバスライン23に接続されている。第1CPU11から出力された第1書込データL_DT1は、第1書込ゲート部152の入力端子IN及び出力端子OUTを介してメモリ側第1データバスライン23に出力され、第1入出力ポート131を介してデュアルポートメモリ13の記憶部133に記憶される。第1書込ゲート部152は、保持機能を有していないため、入力端子INから入力された第1書込データL_DT1は、第1書込ゲート部152内に留まることなく出力端子OUTから出力される。
第1書込ゲート部152の入力端子INは第1保持部153の出力端子OUTにも接続されており、第1書込ゲート部152の出力端子OUTは第1保持部153の入力端子INにも接続されている。アクセス信号発生部151は、第1アドレス信号L_ADRが入力され、かつ入力される第1データ書込指示信号L_WR1がアサート状態になることによって第1データ書込制御信号WOEをアサート状態とする。また、アクセス信号発生部151は、第1アドレス信号L_ADRが入力され、かつ入力される第1データ読出指示信号L_RD1がアサート状態になることによって第1データ読出制御信号ROEをアサート状態とする。第1CPU11は、第1データ書込指示信号L_WR1と第1データ読出指示信号L_RD1とを同時期にアサート状態にしない。このため、第1データ書込制御信号WOEと第1データ読出制御信号ROE及び第1データ保持信号RDLとは同時期にアサート状態にならない。その結果、第1書込ゲート部152がデータを入出力可能な状態になる時と、第1保持部153が保持可能状態になる時とは時間的に重ならない。これにより、第1書込ゲート部152の出力端子OUTから出力された第1書込データL_DT1が第1保持部153に保持されることはない。また、第1保持部153がデータを保持及び出力可能な状態にある時は、第1保持部153の出力端子OUTから出力された第1読出データL_DT2が第1書込ゲート部152の出力端子OUTから出力されることはない。
次に、第2メモリアクセスコントローラ16の内部構成について、図1及び図2を参照しつつ説明する。図示は省略するが、第2メモリアクセスコントローラ16は、第1メモリアクセスコントローラ15と同一の構成を有し、同一の機能を発揮するようになっている。すなわち、第2メモリアクセスコントローラ16は、デュアルポートメモリ13に第2書込データ(第2データの一例)R_DT1を書込むための第2データ書込信号R_WR2と、デュアルポートメモリ13から第2読出データ(第2データの一例)R_DT2を読込むための、第2データ読込信号の1つである第2データ読出信号R_RD2とを発生する第2アクセス信号発生部を備えている。第2アクセス信号発生部には、第2データ書込指示信号R_WR1、第2データ読出指示信号R_RD1及びクロック信号CLKが入力される。
第2アクセス信号発生部は、非アクセス状態時に、信号状態が無効状態すなわちネゲート状態にある第2データ書込信号R_WR2及び第2データ読出信号R_RD2をデュアルポートメモリ13の第2入出力ポート132に対して出力している。第2アクセス信号発生部は、第2データ書込指示信号R_WR1が有効状態すなわちアサート状態になると、クロック信号CLKに同期させて第2データ書込信号R_WR2を少なくともクロック信号CLKの1周期分アサート状態とする。また、第2アクセス信号発生部は、第2データ読出指示信号R_RD1がアサート状態になると、クロック信号CLKに同期させて第2データ読出信号R_RD2を少なくともクロック信号CLKの1周期分アサート状態とする。
また、第2アクセス信号発生部は、第2データ書込制御信号、第2データ読出制御信号及び第2データ保持信号を発生する。第2アクセス信号発生部は、発生した第2データ書込制御信号を第2書込ゲート部(詳細は後述)に出力し、発生した第2データ読出制御信号及び第2データ保持信号を第2保持部(詳細は後述)に出力する。
第2メモリアクセスコントローラ16は、第2アクセス信号発生部から入力されて第2データ読込信号の1つである第2データ保持信号が有効状態から無効状態に切り替わる時に、デュアルポートメモリ13から読出された第2読出データ(第2データの一例)R_DT2を保持する第2保持部を備えている。第2保持部は、第1保持部153と同一の構成を有し、同一の機能を発揮するようになっている。第2データ保持信号(第1データ保持信号RDLに対応する)は、第2保持部に設けられた保持信号入力端子(保持信号入力端子LTに対応する)に入力される。
第2保持部は、第2アクセス信号発生部から入力される第2データ読出制御信号(第1データ読出制御信号ROEに対応する)が有効状態の時にデュアルポートメモリ13から読出され保持している第2読出データR_DT2を第2CPU12に出力する。また、第2保持部は、第2データ読出制御信号が無効状態の時に出力部である出力端子(出力端子OUTに対応する)をハイインピーダンス状態とするようになっている。第2データ読出制御信号は、第2保持部に設けられた制御信号入力端子(制御信号入力端子OEに対応する)に入力される。
第2保持部の入力端子は、メモリ側第2データバスライン33に接続されている。デュアルポートメモリ13の記憶部133から読出された第2読出データR_DT2が第2CPU12に入力される信号の流れは、記憶部133から読出された第1読出データL_DT2が第1CPU11に入力される流れと同様である。すなわち、記憶部133から読出された第2読出データL_DT2が第2CPU12に入力される信号の流れは、上述の第1読出データR_DT2の流れにおいて、「第1」を「第2」に読み替えたのと同様である。
第2メモリアクセスコントローラ16は、第2CPU12から入力される第2書込データR_DT1をデュアルポートメモリ13に出力可能な状態と、第2書込データR_DT1の入出力が不可能なハイインピーダンス状態とに可逆的に切り替わる第2書込ゲート部を備えている。
第2書込ゲート部は、第1書込ゲート部152と同一の構成を有し、同一の機能を発揮するようになっている。第2書込ゲート部は、第2アクセス信号発生部から入力される第2データ書込制御信号(第1データ書込制御信号WOEに対応する)の信号状態が有効状態の時に第2書込データR_DT1を出力可能な状態となる。一方、第2書込ゲート部は、第2データ書込制御信号の信号状態が無効状態の時に出力端子(出力端子OUTに対応する)がハイインピーダンス状態となる。第2データ書込制御信号は、第2書込ゲート部に設けられた制御信号入力端子(第1書込ゲート部152に設けられた制御信号入力端子OEに対応する)に入力される。
第2書込ゲート部の入力端子は、CPU側第2データバスライン32に接続されている。第2書込ゲート部の出力端子は、メモリ側第2データバスライン33に接続されている。第2CPU12から出力された第2書込データR_DT1がデュアルポートメモリ13に書込まれる信号の流れは、第1CPU11から出力された第1書込データL_DT1がデュアルポートメモリ13に書込まれる流れと同様である。すなわち、第2CPU12から出力された第2書込データR_DT1がデュアルポートメモリ13に書込まれる信号の流れは、上述の第1書込データL_DT1の流れにおいて、「第1」を「第2」に読み替えたのと同様である。
第2書込ゲート部の入力端子は第2保持部の出力端子にも接続されており、第2書込ゲート部の出力端子は第2保持部の入力端子にも接続されている。しかしながら、第2メモリアクセスコントローラ16は、第1メモリアクセスコントローラ15と同様に動作し、かつ第2CPU12は第2データ書込指示信号R_WR1と第2データ読出指示信号R_RD1とを同時期にアサート状態にしない。このため、第2メモリアクセスコントローラ16においても、第2書込ゲート部がデータを入出力可能な状態になる時と、第2保持部が保持可能状態になる時とは時間的に重ならない。これにより、第2書込ゲート部の出力端子から出力された第2書込データR_DT1が第2保持部に保持されることはない。さらに、第2保持部の出力端子から出力された第2読出データR_DT2が第2書込ゲート部の出力端子から出力されることはない。
[マルチプロセッサシステムの動作]
次に、本実施形態によるマルチプロセッサシステム1の動作について、図1及び図2を参照しつつ図3から図6を用いて説明する。まず、マルチプロセッサシステム1における第1メモリアクセスコントローラ15のデータ書込み動作について説明する。図3に示すデータ書込み動作のタイミングチャートにおいて、図3中に示す「L_DT1(22)」はCPU側第1データバスライン22に入力された第1書込データL_DT1を示し、「L_WR1」は第1データ書込指示信号L_WR1を示し、「WOE」は第1データ書込制御信号WOEを示し、「L_DT1(23)はメモリ側第1データバスライン23に入力された第1書込データL_DT1を示し、「CLK」はクロック信号発信器14から出力されたクロック信号CLKを示し、「L_WR2」は第1データ書込信号L_WR2を示している。図3において、左から右に向かって時の経過が表されている。
デュアルポートメモリ13は、第1CPU11及び第2CPU12のメモリ空間にマッピングされている。第1CPU11は、第1書込データL_DT1をデュアルポートメモリ13に書込む際に、記憶部133の書込み対象のメモリセルの情報を含む第1アドレス信号L_ADRをデュアルポートメモリ13及び第1メモリアクセスコントローラ15に出力する。
図3に示すように、第1アドレス信号L_ADRが出力される際に、デュアルポートメモリ13に書込むための第1書込データL_DT1が第1CPU11からCPU側第1データバスライン22に出力される。図3では、値「0x1234」の第1書込データL_DT1が出力された状態が図示されている。なお、値「0x1234」は、C言語における言語仕様で表されている。後述する図4、図5、図9及び図10に示す各データの値の表記方法も同様にC言語における言語仕様で表されている。したがって、値「0x1234」は、10進数の「4660」に相当する。
さらに、図3に示すように、値「0x1234」の第1アドレス信号L_ADRが出力された後に、信号レベルが高レベルから低レベルへの切り替えが開始され、時刻t1において低レベルとなる第1データ書込指示信号L_WR1が第1CPU11から第1メモリアクセスコントローラ15に出力される。第1データ書込指示信号L_WR1は、信号レベルが低レベル時にアサート状態となり高レベル時にネゲート状態となる信号である。したがって、第1データ書込指示信号L_WR1は時刻t1においてアサート状態になる。
また、第1データ書込指示信号L_WR1がアサート状態となったことを受けて時刻t1において、信号レベルが高レベルから低レベルへの切り替えが開始される第1データ書込制御信号WOEが第1CPU11から第1メモリアクセスコントローラ15に出力される。第1データ書込制御信号WOEは、信号レベルが低レベル時にアサート状態となり高レベル時にネゲート状態となる。第1データ書込制御信号WOEがアサート状態の期間では、第1書込ゲート部152は第1書込データL_DT1の出力が可能な状態すなわち出力イネーブルとなる。一方、図示は省略するが、第1データ書込制御信号WOEがアサート状態にあると、第1データ読出制御信号ROEはネゲート状態となるので、第1保持部153の出力端子OUTはハイインピーダンス状態となる。第1データ書込制御信号WOEがアサート状態になると、CPU側第1データバスライン22に入力された値「0x1234」の第1書込データL_DT1は、第1書込ゲート部152の出力端子OUTからメモリ側第1データバスライン23への出力が開始される。
第1データ書込制御信号WOEがアサート状態に切り替わった後の、クロック信号CLKが立ち上がる時刻t2において、クロック信号CLKのこの立ち上がりエッジに同期して信号レベルが高レベルから低レベルに切り替わる第1データ書込信号L_WR2が第1アクセス信号発生部151からデュアルポートメモリ13に出力される。第1データ書込信号L_WR2は、信号レベルが低レベル時にアサート状態となり高レベル時にネゲート状態となる。したがって、図3に示すように、第1データ書込信号L_WR2は、第1データ書込制御信号WOEがアサート状態になった後のクロック信号CLKの最初の立ち上がりエッジに同期してネゲート状態からアサート状態に切り替えられる。
図3に示すように、時刻t2の後の時刻t3において、クロック信号CLKが再び立ち上がる。時刻t3でのクロック信号のこの立ち上がりエッジに同期して、第1アクセス信号発生部151からデュアルポートメモリ13に出力される第1データ書込信号L_WR2は、アサート状態からネゲート状態に切り替えられる。これにより、第1データ書込信号L_WR2は、時刻t2から時刻t3というクロック信号CLKの1周期の期間だけ信号レベルが低レベルになるパルス信号となる。なお、図3では、第1データ書込信号L_WR2はクロック信号CLKの1周期だけ低レベルになるパルス信号であるが、クロック信号CLKの複数周期の間で低レベルとなるパルス信号でもよい。また、第1データ書込信号L_WR2はクロック信号CLKの立下りエッジに同期する信号でもよい。
図示は省略するが、第1データ書込信号L_WR2がアサート状態からネゲート状態に切り替わることにより、メモリ側第1データバスライン23に出力されている第1書込データL_DT1の値(図3では、「0x1234」)が、第1アドレス信号L_ADRにおいて指定された記憶部133のメモリセルに記憶される。
このように、第1データ書込信号L_WR2がアサート状態(有効状態)からネゲート状態(無効状態)に切り替わるタイミングは、第1データ書込信号L_WR2における第1書込データL_DT1を書込むタイミングである。また、第1データ書込信号L_WR2における第1書込データL_DT1を書込むこのタイミングは、第1メモリアクセスコントローラ15がデュアルポートメモリ13に第1書込データL_DT1を書込む第1データ書込タイミングである。第1データ書込信号L_WR2がアサート状態からネゲート状態に切り替わるタイミングは、クロック信号CLKに同期しているので、第1データ書込タイミングもクロック信号CLKに同期する。
その後、第1データ書込指示信号L_WR1がアサート状態からネゲート状態への切り替えが開始され、時刻t4においてネゲート状態となる。また、時刻t4において、第1データ書込指示信号L_WR1がネゲート状態に切り替わることによって、第1データ書込制御信号WOEがアサート状態からネゲート状態への切り替えが開始され、その後ネゲート状態となる。このように、第1データ書込指示信号L_WR1は、時刻t1から時刻t4の間に信号レベルが低レベルとなるパルス信号となる。また、第1データ書込制御信号WOEは、ほぼ時刻t1から時刻t4の間に信号レベルが低レベルとなるパルス信号となる。
時刻T4で、第1データ書込制御信号WOEがネゲート状態となることにより、第1書込ゲート部152の出力端子OUTはハイインピーダンス状態となる。
以上で、マルチプロセッサシステム1における第1メモリアクセスコントローラ15での1つの第1書込データのデータ書込み動作が終了する。
第2メモリアクセスコントローラ16のデータ書込み動作は、第1メモリアクセスコントローラ15の動作の「第1」を「第2」に読み替えたのと同様である。したがって、第2データ書込信号R_WR2がアサート状態(有効状態)からネゲート状態(無効状態)に切り替わるタイミングは、第2データ書込信号R_WR2における第2書込データR_DT1を書込むタイミングである。また、第2データ書込信号R_WR2における第2書込データR_DT1を書込むこのタイミングは、第2メモリアクセスコントローラ16がデュアルポートメモリ13に第2書込データR_DT1を書込む第2データ書込タイミングである。第2データ書込信号R_WR2がアサート状態からネゲート状態に切り替わるタイミングは、クロック信号CLKに同期しているので、第2データ書込タイミングもクロック信号CLKに同期する。
次に、マルチプロセッサシステム1における第1メモリアクセスコントローラ15のデータ読出し動作について説明する。図4に示すデータ読出し動作のタイミングチャートにおいて、図4中に示す「L_RD1」は第1データ読出指示信号L_RD1を示し、「CLK」はクロック信号発信器14から出力されたクロック信号CLKを示し、「L_RD2」は第1データ読出信号L_RD2を示し、「L_DT2(23)」はデュアルポートメモリ13から読み出されメモリ側第1データバスライン23に入力された第1読出データL_DT2を示し、「RDL」は第1データ保持信号RDLを示し、「REG」は第1保持部153に保持された第1読出データL_DT2を示し、「ROE」は第1データ読出制御信号ROEを示し、「L_DT2(22)」はCPU側第1データバスライン22に入力された第1読出データL_DT2を示している。図4において、左から右に向かって時の経過が表されている。
デュアルポートメモリ13は、第1CPU11及び第2CPU12のメモリ空間にマッピングされている。第1CPU11は、第1読出データL_DT2をデュアルポートメモリ13から読出す際に、記憶部133の読出し対象のメモリセルの情報を含む第1アドレス信号L_ADRをデュアルポートメモリ13及び第1メモリアクセスコントローラ15に出力する。
第1アドレス信号L_ADRの出力後、図4に示すように、第1データ読出指示信号L_RD1が第1CPU11から第1メモリアクセスコントローラ15に出力される。例えば、第1データ読出指示信号L_RD1は、信号レベルが高レベルから低レベルへの切り替えが開始され、時刻t1において低レベルとなる。第1データ読出指示信号L_RD1は、信号レベルが低レベル時にアサート状態となり高レベル時にネゲート状態となる。
第1アドレス信号L_ADRが入力され、かつ入力される第1データ読出指示信号L_RD1がアサート状態となった時刻t1において、信号レベルが高レベルから低レベルへの切り替えが開始されて第1データ読出制御信号ROEが第1アクセス信号発生部151から第1保持部153に出力される。第1データ読出制御信号ROEは、信号レベルが低レベル時にアサート状態となり高レベル時にネゲート状態となる。第1データ読出制御信号ROEが低レベルであってアサート状態の期間では、第1保持部153は、保持している第1読出データL_DT2を出力可能な状態すなわち出力イネーブルとなる。一方、図示は省略するが、第1データ読出制御信号ROEがアサート状態であると、第1データ書込制御信号WOEはネゲート状態となるので、第1書込ゲート部152の出力端子OUTはハイインピーダンス状態となる。これにより、図4に示すように、第1保持部153に保持されている第1読出データL_DT2(本例では値「0x1234」)がCPU側第1データバスライン22に出力される。
また、第1データ読出指示信号L_RD1がアサート状態に切り替わった後の時刻t2におけるクロック信号CLKの最初の立ち上がりに同期して、図4に示すように、信号レベルが高レベルから低レベルに切り替わる第1データ読出信号L_RD2が第1アクセス信号発生部151からデュアルポートメモリ13に出力される。第1データ読出信号L_RD2は、信号レベルが低レベル時にアサート状態となり高レベル時にネゲート状態となる。第1データ読出信号L_RD2がアサート状態になると、デュアルポートメモリ13に入力されている第1アドレス信号L_ADRによって指定された記憶部133に記憶されているデータが第1読出データL_DT2として読出される。このため、図4に示すように、時刻t2において、例えば値「0x5678」の第1読出データL_DT2がデュアルポートメモリ13からメモリ側第1データバスライン23に出力される。
また、第1データ読出指示信号L_RD1がアサート状態に切り替わった後の時刻t2におけるクロック信号CLKの最初の立ち上がり同期して、図4に示すように、信号レベルが高レベルから低レベルに切り替わる第1データ保持信号RDLが第1アクセス信号発生部151から第1保持部153に出力される。第1データ保持信号RDLは、信号レベルが低レベル時にアサート状態となり高レベル時にネゲート状態となる。
図4に示すように、時刻t3において、クロック信号CLKが再び立ち上がる。時刻t3でのクロック信号のこの立ち上がりエッジに同期して、第1アクセス信号発生部151からデュアルポートメモリ13に出力される第1データ読出信号L_RD2がアサート状態からネゲート状態に切り替えられる。これにより、第1データ読出信号L_RD2は、時刻t2から時刻t3というクロック信号CLKの1周期の期間だけ信号レベルが低レベルになるパルス信号となる。なお、図4では、第1データ読出信号L_RD2はクロック信号CLKの1周期だけ低レベルになるパルス信号であるが、クロック信号CLKの複数周期の間で低レベルとなるパルス信号でもよい。また、第1データ読出信号L_RD2はクロック信号CLKの立下りエッジに同期する信号でもよい。
第1データ読出信号L_RD2がアサート状態からネゲート状態に切り替わることにより、デュアルポートメモリ13は、メモリ側第1データバスライン23への第1読出データL_DT2の出力を終了する。
このように、第1データ読出信号L_RD2がアサート状態(有効状態)からネゲート状態(無効状態)に切り替わるタイミングは、第1読出データL_DT2の読出しが終了するタイミングである。また、第1データ読出信号L_RD2における第1読出データL_DT2の読出しが終了するこのタイミングは、第1メモリアクセスコントローラ15がデュアルポートメモリ13から第1読出データL_DT2を読込む第1データ読込タイミングの1つである。第1データ読出信号L_RD2がアサート状態からネゲート状態に切り替わるタイミングは、クロック信号CLKに同期しているので、第1データ読込タイミングもクロック信号CLKに同期する。
第1データ読出信号L_RD2及び第1データ保持信号RDLのアサート状態からネゲート状態への切り替わりのタイミングはクロック信号CLKに同期しているので、第1保持部153が第1読出データL_DT2に保持されるタイミングもクロック信号CLKに同期する。
また、図4に示すように、時刻t3でのクロック信号のこの立ち上がりエッジに同期して、第1アクセス信号発生部151から第1保持部153に出力される第1データ保持信号RDLがアサート状態からネゲート状態に切り替えられる。これにより、第1データ保持信号RDLは、時刻t2から時刻t3というクロック信号CLKの1周期の期間だけ信号レベルが低レベルになるパルス信号となる。なお、図4では、第1データ保持信号RDLはクロック信号CLKの1周期だけ低レベルになるパルス信号であるが、クロック信号CLKの複数周期の間で低レベルとなるパルス信号でもよい。また、第1データ保持信号RDLはクロック信号CLKの立下りエッジに同期する信号でもよい。
第1保持部153は、第1データ保持信号RDLがアサート状態からネゲート状態に切り替わる時にメモリ側第1データバスライン23に出力されている第1読出データL_DT2を入力端子INを介して保持する。このため、図4に示すように、第1データ保持信号RDLがアサート状態からネゲート状態に切り替わる時刻t3において、第1保持部153に保持されるデータの値は、値「0x1234」から、メモリ側第1データバスライン23に出力されている第1読出データL_DT2の値「0x5678」に変更される。値「0x5678」の第1読出データL_DT2は、時刻t3以降、第1データ読出制御信号ROEがネゲート状態に切り替わるまで第1保持部153からCPU側第1データバスライン22に出力される。
このように、第1データ保持信号RDLがアサート状態(有効状態)からネゲート状態(無効状態)に切り替わるタイミングは、第1読出データL_DT2を保持するタイミングである。また、第1データ保持信号RDLにおける第1読出データL_DT2を保持するこのタイミングは、第1メモリアクセスコントローラ15がデュアルポートメモリ13から第1読出データL_DT2を読込む第1データ読込タイミングの1つである。第1データ保持信号RDLがアサート状態からネゲート状態に切り替わるタイミングは、クロック信号CLKに同期しているので、第1データ第1保持部153が第1読出データL_DT2に保持されるタイミングもクロック信号CLKに同期する。
図4に示すように、その後、第1データ読出指示信号L_RD1は、アサート状態からネゲート状態への切り替えが開始され、時刻t4においてネゲート状態となる。また、時刻t4において、第1データ読出制御信号ROEは、アサート状態からネゲート状態への切り替えが開始され、その後ネゲート状態となる。このように、第1データ読出指示信号L_RD1は、時刻t1から時刻t4の間に信号レベルが低レベルとなるパルス信号となる。また、第1データ読出制御信号ROEは、ほぼ時刻t1から時刻t4の間に信号レベルが低レベルとなるパルス信号となる。
また、第1データ読出制御信号ROEがネゲート状態となることにより、第1保持部153の出力端子OUTはハイインピーダンス状態となる。第1データ読出制御信号ROEがアサート状態からネゲート状態に切り替わることにより、第1保持部153は、CPU側第1データバスライン22への第1読出データL_DT2の出力を終了する。第1データ保持信号RDLがネゲート状態である限りは、第1保持部153は値「0x5678」の第1読出データR_DT2を保持し続ける。本例では、CPU側第1データバスライン22に出力されている第1読出データL_DT2の値は、時刻t3で切り替わっているが、第1CPU11が第1読出データL_DT2を取り込む時刻は、第1データ読出指示信号L_RD1がアサート状態からネゲート状態に切り替わる時刻t4である。時刻t4では、CPU側第1データバスライン22に出力されている第1読出データL_DT2の値は、所望の値「0x5678」であるため問題は生じない。
以上で、マルチプロセッサシステム1における第1メモリアクセスコントローラ15での1つのデータのデータ読込み動作が終了する。
第2メモリアクセスコントローラ16のデータ読出し動作は、第1メモリアクセスコントローラ15の動作の「第1」を「第2」に読み替えたのと同様である。すなわち、第2データ読出信号R_RD2がアサート状態(有効状態)からネゲート状態(無効状態)に切り替わるタイミングは、第2読出データR_DT2の読出しが終了するタイミングである。また、第2データ読出信号R_RD2における第2読出データR_DT2の読出しが終了する。このタイミングは、第2メモリアクセスコントローラ16がデュアルポートメモリ13から第2読出データR_DT2を読込む第2データ読込タイミングの1つである。第2データ読出信号R_RD2がアサート状態からネゲート状態に切り替わるタイミングは、クロック信号CLKに同期しているので、第2データ読込タイミングもクロック信号CLKに同期する。
また、第2データ保持信号がアサート状態(有効状態)からネゲート状態(無効状態)に切り替わるタイミングは、第2読出データR_DT2を保持するタイミングである。また、第2データ保持信号における第2読出データR_DT2を保持するこのタイミングは、第2メモリアクセスコントローラ16がデュアルポートメモリ13から第2読出データR_DT2を読込む第2データ読込タイミングの1つである。第2データ保持信号がアサート状態からネゲート状態に切り替わるタイミングは、クロック信号CLKに同期しているので、第2データ読込タイミングもクロック信号CLKに同期する。
次に、同一のアドレスのメモリセルに対して第1CPU11及び第2CPU12からのアクセスが競合した場合について図1及び図2を参照しつつ図5及び図6を用いて説明する。図5では、第2CPU12のデータ書込み動作と、第1CPU11のデータ読出し動作がクロック信号CLKの1クロック差まで近接した状態のタイミングチャートが図示されている。図5中に示す「CLK」はクロック信号発信器14から出力されたクロック信号CLKを示し、「R_DT1(33)」はメモリ側第2データバスライン33に出力された第2書込データR_DT1を示し、「R_WR2」は第2データ書込信号R_WR2を示し、「L_DT2(23)」はメモリ側第1データバスライン23に出力された第1読出データL_DT2を示し、「L_RD2」は第1データ読出信号L_RD2を示し、「RDL」は第1データ保持信号RDLを示している。また、図5において、左から右に向かって時の経過が表されている。
図5に示すように、時刻t1において、第2データ書込信号R_WR2がクロック信号CLKの立ち上がりエッジに同期してアサート状態からネゲート状態に切り替えられる。上述のとおり、第2データ書込信号R_WR2がアサート状態からネゲート状態に切り替わるタイミングは、第2書込データR_DT1がデュアルポートメモリ13に書き込まれる第2書込みタイミングである。このため、第2データ書込信号R_WR2がアサート状態からネゲート状態に切り替わる時刻t1において、メモリ側第2データバスライン33に出力されている第2書込データR_DT1がメモリセルに記憶される。図5では、値「0x5678」の第2書込データR_DT1が記憶部133のメモリセルに記憶される。値「0x5678」は、第2CPU12からデュアルポートメモリ13に入力された第2アドレス信号R_ADRによって指定されたメモリセルに記憶される。
ところで、第2書込データR_DT1及び第1読出データL_DT2は多ビットのデータである。デュアルポートメモリ13を構成するトランジスタには特性ばらつきがある。このトランジスタの特性バラつきにより、第2書込データR_DT1を構成する各ビットのデータは、デュアルポートメモリ13の記憶部133への書込み開始から書込み終了までの期間では過渡状態となる。ここで、第2書込データR_DT1の書込み終了とは、第2書込データR_DT1を構成する各ビットのデータの全てが記憶部133において書込むべき値で安定した状態になることをいう。また、デュアルポートメモリ13を構成するトランジスタの特性ばらつきにより、デュアルポートメモリ13からメモリ側第1データバスライン23に読出された第1読出データL_DT2が正規のデータの値になるには、第1読出データL_DT2の読出し開始から出力遅延が生じる。ここで、正規のデータの値は、デュアルポートメモリ13の記憶部133に記憶された読出し対象のデータと同じ値である。この出力遅延は、第1読出データL_DT2を構成する各ビットのデータ毎に異なる場合がある。さらに、第2書込データR_DT1を構成する各ビットにおいて、第2CPU12からデュアルポートメモリ13までの配線の長さは相違している場合がある。この場合、デュアルポートメモリ13からメモリ側第1データバスライン23に読出された第1読出データL_DT2が正規のデータの値になるには配線遅延が生じる。また、この配線遅延は、第1読出データL_DT2を構成する各ビットのデータ毎に異なる場合がある。
このため、図5に示すように、時刻t1において、第2データ書込信号R_WR2がアサート状態からネゲート状態に切り替って第2メモリアクセスコントローラ16によるデータ書込動作が終了し、第1メモリアクセスコントローラ13によって第1読出データL_DT2の各ビットのデータの読出しが同時に開始されたする。この場合であっても、メモリ側第1データバスライン23に出力された第1読出データL_DT2を構成する全てのビットのデータが正規のデータの値になるタイミングは、同時にならない場合がある。このため、図5に示すように、第1書込データL_DT2のメモリセルからの読出し動作の開始からメモリ側第1データバスライン23に出力される第1読出データL_DT2が正規のデータの値になるまでに、読出遅延時間Tdelay(以下、「読出遅延時間」を「遅延時間」と、「Tdelay」を「Td」と略記する)が生じる。遅延時間Tdの期間では、第1書込データL_DT2が正規のデータに変化する過渡状態にある。この過渡状態では、第1書込データL_DT2の値は、それまで(図5では時刻t1の直前)記憶部133に記憶されていた値(以下、「前回値」と称する場合がある)でもなく、時刻t1において記憶部133に書込みが終了された値(以下、「今回値」と称する場合がある)でもない不定値となる。この不定値が読出されて第1CPU11又は第2CPU12に送信されてしまうと、マルチプロセッサシステム1を適用した産業用機器は、予期しない制御がなされて誤動作してしまう可能性がある。
このため、マルチプロセッサシステム1では、デュアルポートメモリ13から第1メモリアクセスコントローラ15にデータを読込む第1データ読込タイミングは、遅延時間Tdよりも後のタイミングとなるように規定されている。すなわち、マルチプロセッサシステム1では、デュアルポートメモリ13から第1メモリアクセスコントローラ15にデータを読込むためのデータ読込信号である第1データ読出信号L_RD2及び第1データ保持信号RDLは、メモリ側第1データバスライン23に出力された第1読出データL_DT2の値が正規のデータの値となる遅延時間Tdよりも後にアサート状態からネゲート状態に切り替わるように規定される。
また、デュアルポートメモリ13の記憶部133からメモリ側第1データバスライン23に出力された正規のデータを第1メモリアクセスコントローラ13に読込むためには、メモリ側第1データバスライン23に出力された第1読出データL_DT2の値が正規のデータの値となってから所定の時間、すなわちデータ・セットアップ時間Tsetup(以下、「データ・セットアップ時間」を「セットアップ時間」と、「Tsetup」を「Ts」と略記する)を確保する必要がある。つまり、第1データ読込タイミングの前、すなわち第1データ読出信号L_RD2がアサート状態からネゲート状態に切り替わる前に、セットアップ時間Tsを確保する必要がある。同様に、第1データ保持信号RDLがアサート状態からネゲート状態に切り替わる前に、セットアップ時間Tsを確保する必要がある。
さらに、第1データ読出信号L_RD2及び第1データ保持信号RDLを発生する第1アクセス信号発生部151は、クロック信号CLKに同期して動作する。このため、第2データ書込タイミング及び第1データ読込タイミングはいずれもクロック信号に同期する。また、第2データ書込信号R_WR2を発生する、第2メモリアクセスコントローラ16に備えられた第2アクセス信号発生部は、第1アクセス信号発生部151が同期して動作するのと同じクロック信号CLKに同期して動作する。このため、第2データ書込信号R_WR2もクロック信号に同期する。
第2データ書込信号R_WR2、第1データ読出信号L_RD2及び第1データ保持信号RDLは、クロック信号CLKのクロック周期によって規定される。その結果、マルチプロセッサシステム1では、第2データ書込タイミングと、この第2データ書込タイミングの直後の第1データ読込タイミングとの時間差は、クロック信号CLKのクロック周期の倍数となる。上述のとおり、本実施形態によるマルチプロセッサシステム1では、第2データ書込タイミング(例えば第2データ書込信号R_WR2)と、この第2データ書込タイミングの直後の第1データ読込タイミング(例えば第1データ読出信号L_RD2及び第1データ保持信号RDLの少なくとも一方)との時間差の最小値は、クロック信号CLKのクロック周期と同じになる。
そこで、本実施形態によるマルチプロセッサシステム1では、クロック信号発信器14が発信するクロック信号CLKのクロック周期Tpriod(以下、「Tpriod」を「Tp」と略記する)は、デュアルポートメモリ13のデータ書込みの遅延時間Tdと、デュアルポートメモリ13からデータを読込むためのセットアップ時間Tsとに基づいて設定される。クロック信号CLKのクロック周期Tpは、遅延時間Tdとセットアップ時間とを加算した時間よりも長くなる(Tp>Td+Ts)ように設定される。
より具体的に、図5に示すように、第1データ読込信号の1つである第1データ読出信号L_RD2は、時刻t2におけるクロック信号CLKの立ち上がりエッジに同期してアサート状態からネゲート状態に切り替えられる。時刻t2は、時刻t1からクロック周期Tp経過後の時刻である。時刻t2では、メモリ側第1データバスライン23には今回値である「0x5678」が安定して出力され、かつセットアップ時間Tsも満たされている。つまり、第1メモリアクセスコントローラ11がデュアルポートメモリ13からのデータ読出しを終了するタイミングで、メモリ側第1データバスライン23には今回値である「0x5678」が安定して出力されている。このため、第1メモリアクセスコントローラ15は、デュアルポートメモリ13の記憶部133から所望の(すなわち正規の)第1読出データL_DT2を読込むことができる。また、第1データ読出信号L_RD2がアサート状態からネゲート状態に切り替わるタイミングは、第1データ読込タイミングの1つである。第2データ書込信号R_WR2がアサート状態からネゲート状態に切り替わるタイミングは、第2データ書込タイミングである。したがって、第2データ書込タイミングと、この第2データ書込タイミングの直後の第1データ読込タイミングとの時間差の最小値がクロック信号CLKの1周期と同じであれば、第1メモリアクセスコントローラ15は、デュアルポートメモリ13の記憶部133から正規のデータの第1読出データL_DT2を読出すことができる。
また、図5に示すように、第1データ読込信号の1つである第1データ保持信号RDLは、時刻t2におけるクロック信号CLKの立ち上がりエッジに同期してアサート状態からネゲート状態に切り替えられる。時刻t2では、メモリ側第1データバスライン23には今回値である「0x5678」が安定して出力され、かつセットアップ時間Tsも満たされている。このため、第1保持部153は、所望の(すなわち正規の)第1読出データL_DT2を保持することができる。また、第1データ保持信号RDLがアサート状態からネゲート状態に切り替わるタイミングは、第1データ読込タイミングの1つである。したがって、第2データ書込タイミングと、この第2データ書込タイミングの直後の第1データ読込タイミングとの時間差の最小値がクロック信号CLKの1周期と同じであれば、第1メモリアクセスコントローラ15に備えられた第1保持部153は、正規のデータの第1読出データL_DT2を保持することができる。
ここで、第2CPU12のデータ書込み動作と、第1CPU11のデータ読出し動作とが同時、すなわち第2データ書込信号R_WR2と、第1データ読出信号L_RD2及び第1データ保持信号RDLとが同時にアサート状態からネゲート状態に切り替わったとする。この場合、第1メモリアクセスコントローラ15がデュアルポートメモリ13からデータを読み出す値は「前回値」であるものの安定した値であって不定値ではない。また、第1保持部153が保持するデータは、「前回値」であるものの安定した値であって不定値ではない。このため、マルチプロセッサシステム1は、適用された産業用機器が予期しない誤動作をしてしまうのを防止できる。
図5では、第1メモリアクセスコントローラ15を中心に説明したが、第2メモリアクセスコントローラ16も第1メモリアクセスコントローラ15と同様に構成されている。このため、クロック信号CLKのクロック周期Tpは、遅延時間Tdとセットアップ時間Tsとに基づいて設定されている。すなわち、クロック信号CLKのクロック周期Tpは、第1書込データL_DT1のメモリセルへの書込み動作の終了タイミングからメモリ側第2データバスライン33に正規のデータの出力が完了するまでの遅延時間Tdと、第2データ読込タイミングの前にメモリ側第2データバスライン33に正規のデータが安定して出力されたセットアップ時間Tsとを加算した時間よりも長くなっている。これにより、第1データ書込タイミングと、この第1データ書込タイミングの直後の第2データ読込タイミングとの時間差の最小値は、クロック信号CLKのクロック周期Tpと同じになる。その結果、第2メモリアクセスコントローラ16は、デュアルポートメモリ13の記憶部から所望の(正規の)第2読出データR_DT2を読込むことができる。また、第2データ保持信号がこのセットアップ時間Tsを満たすタイミングでアサート状態からネゲート状態に切り替わえられることにより、第2メモリアクセスコントローラ16に備えられた第2保持部は、正規のデータの第2読出データR_DT2を保持することができる。
次に、同一のアドレスのメモリセルに対して第1CPU11及び第2CPU12から同時にデータ書込み動作が実行された場合について図6を用いて説明する。図6中に示す「CLK」はクロック信号発信器14から出力されたクロック信号CLKを示し、「L_WR2」は第1データ書込信号L_WR2を示し、「R_WR2」は第2データ書込信号R_WR2を示している。また、図6において、左から右に向かって時の経過が表されている。
デュアルポートメモリ13は、第1データ書込信号L_WR2及び第2データ書込信号R_WR2のいずれを優先するのかが設定されている。このため、図6に示すように、クロック信号CLKの同じエッジタイミンクで第1データ書込信号L_WR2と第2データ書込信号R_WR2とが発生した場合には、デュアルポートメモリ13の設定に従って、第1入出力ポート131及び第2入出力ポート132に入力されたデータのいずれかが優先して記憶部133に書き込まれる。
以上説明したように、本実施形態によるマルチプロセッサシステム1は、デュアルポートメモリ13と、第1及び第2CPU11,12と、クロック信号発信器14と、第1及び第2メモリアクセスコントローラ15,16とを有し、第1メモリアクセスコントローラ15がデュアルポートメモリ13に第1データを書込む第1データ書込タイミング、第1メモリアクセスコントローラ15がデュアルポートメモリ13から第1データを読込む第1データ読込タイミング、第2メモリアクセスコントローラ16がデュアルポートメモリ13に第2データを書込む第2データ書込タイミング、及び第2メモリアクセスコントローラ16がデュアルポートメモリ13から第2データを読込む第2データ読込タイミングは、クロック信号発信器14が発信するクロック信号CLKに同期している。
これにより、マルチプロセッサシステム1は、デュアルポートメモリ13から不定値を読み出すことを防止できるので、マルチプロセッサシステム1が適用された産業用機器の予期せぬ誤動作を防止できる。また、マルチプロセッサシステム1は、BUSY信号やウエイト信号を用いずに、メモリアクセス競合時の第1及び第2CPU11,12のタイミング協調を図ることができる。これにより、デュアルポートメモリ13の記憶部133の同一アドレスに対して第1及び第2CPU11,12からメモリアクセスの競合が生じても、第1及び第2CPU11,12のいずれかを動作停止状態とせずに第1及び第2CPU11,12のタイミング協調を図ることができる。
クロック信号CLKのクロック周期Tpは、遅延時間Tdとセットアップ時間Tsとを加算した時間よりも長く設定される。例えばクロック信号CLKのクロック周期Tpを調整することによって、セットアップ時間Ts、クロック周期Tp及び遅延時間Tdがこの関係を満たすように容易に設定することができる。
マルチプロセッサシステム1は、第1及び第2メモリアクセスコントローラ15,16に第1及び第2保持部を備えている。第1保持部153は第1読出データL_DT2を保持した状態でハイインピーダンス状態となることができ、第2保持部は、第2読出データR_DT2を保持した状態でハイインピーダンス状態となることができる。すなわち、マルチプロセッサシステム1は、第1保持部153や第2保持部をCPU側第1データバスライン22やCPU側第2データバスライン32と電気的に切り離すことができる。
〔第2実施形態〕
本発明の第2実施形態によるマルチプロセッサシステムについて図7から図10を用いて説明する。本実施形態によるマルチプロセッサシステムは、例えば産業用機器に適用され、例えばデュアルポートメモリを用いて2つの処理装置の間でデータ交換できる。また、本実施形態によるマルチプロセッサシステムは、上記第1実施形態によるマルチプロセッサシステムと比較して、第1及び第2書込ゲート部を備えていない代わりに書込み用及び読出し用のメモリ側第1及び第2データバスラインを備えている点に特徴を有している。また、本実施形態によるマルチプロセッサシステムは、上記第1実施形態によるマルチプロセッサシステムと比較して、第1及び第2データ読出信号を発生しない点に特徴を有している。以下、上記第1実施形態によるマルチプロセッサシステムと同一の機能、作用を奏する構成要素には同一の符号を付してその説明を省略する。
[マルチプロセッサシステムの概略構成]
図7に示すように、本実施形態によるマルチプロセッサシステム2は、第1データが入出力される第1入出力ポート131と、第1入出力ポート131とは独立して設けられて第2データが入出力される第2入出力ポート132と、第1及び第2データを記憶する記憶部133とを備えたデュアルポートメモリ13を有している。本実施形態における第1入出力ポート131は、第1データ読出信号が入力される入力端子を有していない点において上記第1実施形態における第1入出力ポート131と異なっている。また、本実施形態における第1入出力ポート131は、第1書込データL_DT1及び第1読出データL_DT2が入出力される入出力端子に代えて、第1書込データL_DT1が入力される入力端子と、第1読出データR_DT1が出力される出力端子とを有している点において上記第1実施形態における第1入出力ポート131と異なっている。同様に、本実施形態における第2入出力ポート132は、第2データ読出信号が入力される入力端子を有していない点において上記第1実施形態における第1入出力ポート131と異なっている。さらに、本実施形態における第2入出力ポート132は、第2書込データR_DT1及び第2読出データR_DT2が入出力される入出力端子に代えて、第2書込データR_DT1が入力される入力端子と、第2読出データR_DT2が出力される出力端子とを有している点において上記第1実施形態における第2入出力ポート132と異なっている。
また、マルチプロセッサシステム2は、デュアルポートメモリ13において入出力される第1データを処理する第1CPU(第1処理装置の一例)11と、デュアルポートメモリ13において入出力される第2データを処理する第2CPU(第2処理装置の一例)12とを有している。
また、マルチプロセッサシステム1は、クロック信号CLKを発信するクロック信号発信器14と、クロック信号CLKに同期して動作する第1メモリアクセスコントローラ17及び第2メモリアクセスコントローラ18とを有している。第1メモリアクセスコントローラ17は、デュアルポートメモリ13に対する第1CPU11のアクセスを制御するようになっている。第2メモリアクセスコントローラ18は、デュアルポートメモリ13に対する第2CPU12のアクセスを制御するようになっている。
第1メモリアクセスコントローラ17は、デュアルポートメモリ13と接続されている。第1メモリアクセスコントローラ17は、第1CPU11から入力される第1データ書込指示信号L_WR1に基づいて、第1データ書込信号L_WR2をデュアルポートメモリ13に出力する。第1メモリアクセスコントローラ17は、クロック信号発信器14から出力されるクロック信号CLKに同期させて第1データ書込信号L_WR2をデュアルポートメモリ13に出力するようになっている。
マルチプロセッサシステム2は、第1メモリアクセスコントローラ17とデュアルポートメモリ13との間に設けられ、デュアルポートメモリ13に書込まれる第1データを送信可能な書込用メモリ側第1データバスライン(書込用第1データバスラインの一例)23wを有している。書込用メモリ側第1データバスライン23wは、第1メモリアクセスコントローラ17と第1入出力ポート131との間に設けられている。マルチプロセッサシステム2は、第1メモリアクセスコントローラ17とデュアルポートメモリ13との間に設けられ、デュアルポートメモリ13から読出される第1データを送信可能な読出用メモリ側第1データバスライン(読出用第1データバスライン)23rを有している。読出用メモリ側第1データバスライン23rは、第1メモリアクセスコントローラ17と第1入出力ポート131との間に設けられている。書込用メモリ側第1データバスライン23wには、CPU側第1データバスライン22に入力された第1書込データL_DT1が第1メモリアクセスコントローラ17を介して入力される。読出用メモリ側第1データバスライン23rには、記憶部133から読み出された第1読出データL_DT2が第1入出力ポート131を介して出力される。書込用メモリ側第1データバスライン23wには、第1読出データL_DT2は入力されず、読出用メモリ側第1データバスライン23rには、第1書込データL_DT1は入力されないようになっている。第1メモリアクセスコントローラ17の内部構成については後述する。
第2メモリアクセスコントローラ18は、デュアルポートメモリ13と接続されている。第2メモリアクセスコントローラ18は、第2CPU12から入力される第2データ書込指示信号R_WR1に基づいて、第2データ書込信号R_WR2をデュアルポートメモリ13に出力する。第2メモリアクセスコントローラ18は、クロック信号発信器14から出力されるクロック信号CLKに同期させて第2データ書込信号R_WR2をデュアルポートメモリ13に出力するようになっている。
マルチプロセッサシステム2は、第2メモリアクセスコントローラ18とデュアルポートメモリ13との間に設けられ、デュアルポートメモリ13に書込まれる第2データを送信可能な書込用メモリ側第2データバスライン(書込用第2データバスラインの一例)33wを有している。書込用メモリ側第2データバスライン33wは、第2メモリアクセスコントローラ18と第2入出力ポート132との間に設けられている。マルチプロセッサシステム2は、第2メモリアクセスコントローラ18とデュアルポートメモリ13との間に設けられ、デュアルポートメモリ13から読出される第2データを送信可能な読出用メモリ側第2データバスライン(読出用第2データバスラインの一例)33rを有している。読出用メモリ側第2データバスライン33rは、第2メモリアクセスコントローラ18と第2入出力ポート132との間に設けられている。書込用メモリ側第2データバスライン23wには、CPU側第2データバスライン32に入力された第2書込データR_DT1が第2メモリアクセスコントローラ18を介して入力される。読出用メモリ側第2データバスライン33rには、記憶部133から読み出された第2読出データR_DT2が第2入出力ポート132を介して出力される。書込用メモリ側第2データバスライン33wには、第2読出データR_DT2は入力されず、読出用メモリ側第2データバスライン33rには、第2書込データR_DT1は入力されないようになっている。第2メモリアクセスコントローラ18の内部構成については後述する。
[第1及び第2メモリアクセスコントローラの内部構成]
次に、第1及び第2メモリアクセスコントローラ17,18の内部構成について図8を用いて説明する。
図8に示すように、第1メモリアクセスコントローラ17は、デュアルポートメモリ13に第1書込データ(第1データの一例)L_DT1を書込むための第1データ書込信号L_WR2と、デュアルポートメモリ13から第1読出データ(第1データの一例)L_DT2を読込むための第1データ読込信号の1つである第1データ保持信号RDLとを発生する第1アクセス信号発生部171を備えている。また、第1メモリアクセスコントローラ17は、第1データ読出制御信号ROEを発生する。第1アクセス信号発生部171は、第1データ読出制御信号ROE及び第1データ保持信号RDLを第1保持部173(詳細は後述)に出力する。第1アクセス信号発生部171には、第1アドレス信号L_ADR、第1データ書込指示信号L_WR1、第1データ読出指示信号L_RD1及びクロック信号CLKが入力される。
第1アクセス信号発生部171は、非アクセス状態時に、信号状態が無効状態すなわちネゲート状態にある第1データ書込信号L_WR2をデュアルポートメモリ13の第1入出力ポート131に対して出力している。第1アクセス信号発生部171は、第1データ書込指示信号L_WR1が有効状態すなわちアサート状態になると、クロック信号CLKに同期させて第1データ書込信号L_WR2を少なくともクロック信号CLKの1周期分アサート状態とする。
第1アクセス信号発生部171は、非アクセス状態時に、信号状態が無効状態すなわちネゲート状態にある第1データ保持信号RDLを第1保持部173に設けられた保持信号入力端子LTに出力している。第1アクセス信号発生部171は、第1データ読出指示信号L_RD1がアサート状態になると、クロック信号CLKに同期させて第1データ保持信号RDLを少なくともクロック信号CLKの1周期分アサート状態とする。
第1保持部173の入力端子INは、読出用メモリ側第1データバスライン23rに接続されている。デュアルポートメモリ13の記憶部133から読出された第1読出データL_DT2は、第1入出力ポート131及び読出用メモリ側第1データバスライン23rを介して第1保持部173の入力端子INに入力される。第1保持部173の出力端子OUTは、CPU側第1データバスライン22に接続されている。第1保持部173に保持されている第1読出データL_DT2は、出力端子OUT及びCPU側第1データバスライン22を介して第1CPU11に送信される。
CPU側第1データバスライン22は、第1メモリアクセスコントローラ17を介して書込用メモリ側第1データバスライン23wに直結されている。また、CPU側第1データバスライン22は、第1保持部173の出力端子OUTにも接続されている。アクセス信号発生部171は、第1データ読出指示信号L_RD1がアサート状態になることによって第1データ読出制御信号ROEをアサート状態とする。第1CPU11は、第1データ書込指示信号L_WR1と第1データ読出指示信号L_RD1とを同時期にアサート状態にしない。このため、第1アクセス信号発生部171は、入力される第1データ書込指示信号L_WR1がアサート状態である時期と同時期に、アサート状態の第1データ保持信号RDLを発生しない。これにより、第1データ書込指示信号L_WR1がアサート状態となってCPU側第1データバスライン22に入力された第1書込データL_DT1をメモリ側第1データバスライン23wを介してデュアルポートメモリ13に書込む時には、第1データ読出制御信号ROE及び第1データ保持信号RDLはネゲート状態になる。これにより、CPU側第1データバスライン22に入力された第1書込データL_DT1が第1保持部173に保持されることはない。また、第1保持部173がデータを保持及び出力可能な状態にある時は、第1データ書込指示信号L_WR1はネゲート状態であるため第1データ書込信号L_WR2もネゲート状態となる。これにより、第1保持部173の出力端子OUTから出力された第1読出データL_DT2は、メモリ側第1データバスライン23wに入力されるものの第1入出力ポート131を介して記憶部133に書き込まれることはない。
次に、第2メモリアクセスコントローラ18の内部構成について、図7及び図8を参照しつつ説明する。図示は省略するが、第2メモリアクセスコントローラ18は、第1メモリアクセスコントローラ17と同一の構成を有し、同一の機能を発揮するようになっている。すなわち、第2メモリアクセスコントローラ18は、デュアルポートメモリ13に第2書込データ(第2データの一例)R_DT1を書込むための第2データ書込信号R_WR2と、デュアルポートメモリ13から第2読出データ(第2データの一例)R_DT2を読込むための、第2データ読込信号の1つである第2データ保持信号(第1データ保持信号RDLに対応する)とを発生する第2アクセス信号発生部を備えている。また、第2メモリアクセスコントローラ18は、第2データ読出制御信号(第1データ読出制御信号ROEに対応する)を発生するようになっている。第1アクセス信号発生部は、第2データ読出制御信号及び第2データ保持信号を第2保持部(詳細は後述)に出力する。第2アクセス信号発生部には、第2アドレス信号R_ADR、第2データ書込指示信号R_WR1、第2データ読出指示信号R_RD1及びクロック信号CLKが入力される。
第2アクセス信号発生部は、非アクセス状態時に、信号状態が無効状態すなわちネゲート状態にある第2データ書込信号R_WR2をデュアルポートメモリ13の第2入出力ポート132に対して出力している。第2アクセス信号発生部は、第2データ書込指示信号R_WR1が有効状態すなわちアサート状態になると、クロック信号CLKに同期させて第2データ書込信号R_WR2を少なくともクロック信号CLKの1周期分アサート状態とする。また、第2アクセス信号発生部は、第2データ読出指示信号R_RD1がアサート状態になると、クロック信号CLKに同期させて第2データ保持信号を少なくともクロック信号CLKの1周期分アサート状態とする。
第2メモリアクセスコントローラ18は、第1メモリアクセスコントローラ17に備えられた第1保持部173に対応する第2保持部を備えている。第2保持部は、第1保持部173と同一の構成を有し、同一の機能を発揮するようになっている。第2データ保持信号(第1データ保持信号RDLに対応する)は、第2保持部に設けられた保持信号入力端子(保持信号入力端子LTに対応する)に入力される。
第2保持部の入力端子(入力端子INに対応する)は、読出用メモリ側第2データバスライン33rに接続されている。デュアルポートメモリ13の記憶部133から読出された第2読出データR_DT2は、第2入出力ポート132及び読出用メモリ側第2データバスライン33rを介して第2保持部の入力端子に入力される。第2保持部の出力端子(出力端子OUTに対応する)は、CPU側第2データバスライン32に接続されている。第2保持部に保持されている第2読出データR_DT2は、この出力端子及びCPU側第2データバスライン32を介して第2CPU12に送信される。
CPU側第2データバスライン32は第2保持部の出力端子にも接続されている。しかしながら、第2メモリアクセスコントローラ18は、第1メモリアクセスコントローラ17と同様に動作し、かつ第2CPU12は第2データ書込指示信号R_WR1と第2データ読出指示信号R_RD1とを同時期にアサート状態にしない。このため、第2アクセス信号発生部は、入力される第2データ書込指示信号R_WR1がアサート状態である時期と同時期に、アサート状態の第2データ保持信号を発生しない。このため、CPU側第2データバスライン32に入力された第2書込データR_DT1が第2保持部に保持されることはない。さらに、第2保持部の出力端子から出力された第2読出データR_DT2は、書込用メモリ側第2データバスライン33wに入力されるものの第2入出力ポート132を介して記憶部133に書き込まれることはない。
[マルチプロセッサシステムの動作]
次に、本実施形態によるマルチプロセッサシステム2の動作について、図7及び図8を参照しつつ図9及び図10を用いて説明する。まず、マルチプロセッサシステム2における第1メモリアクセスコントローラ17のデータ書込み動作について説明する。図9に示すデータ書込み動作のタイミングチャートにおいて、図9中に示す「L_DT1(22)」はCPU側第1データバスライン22に入力された第1書込データL_DT1を示し、「L_WR1」は第1データ書込指示信号L_WR1を示し、「L_DT1(23w)」は書込用メモリ側第1データバスライン23wに入力された第1書込データL_DT1を示し、「CLK」はクロック信号発信器14から出力されたクロック信号CLKを示し、「L_WR2」は第1データ書込信号L_WR2を示している。図9において、左から右に向かって時の経過が表されている。
デュアルポートメモリ13は、第1CPU11及び第2CPU12のメモリ空間にマッピングされている。第1CPU11は、第1書込データL_DT1をデュアルポートメモリ13に書込む際に、記憶部133の書込み対象のメモリセルの情報を含む第1アドレス信号L_ADRをデュアルポートメモリ13及び第1メモリアクセスコントローラ17に出力する。
図9に示すように、第1アドレス信号L_ADRが出力される際に、デュアルポートメモリ13に書込むための第1書込データL_DT1が第1CPU11からCPU側第1データバスライン22に出力される。図9では、値「0x1234」の第1書込データL_DT1が例えばCPU側第1データバスライン22に出力された状態が図示されている。
書込用メモリ側第1データバスライン23wは、CPU側第1データバスライン22に直結されている。このため、図9に示すように、書込用メモリ側第1データバスライン23wには、CPU側第1データバスライン22に入力されたのと同様の値「0x1234」の第1書込データL_DT1が入力される。第1書込データL_DT1が書込用メモリ側第1データバスライン23wに入力されるタイミングは、第1書込データL_DT1がCPU側第1データバスライン22に入力されるタイミングとほぼ同じである。
図9に示すように、値「0x1234」の第1アドレス信号L_ADRが出力された後に、第1データ書込指示信号L_WR1の信号レベルが高レベルから低レベルへの切り替えが開始され、時刻t1において低レベルとなる第1データ書込指示信号L_WR1が第1CPU11から第1メモリアクセスコントローラ17に出力される。1データ書込指示信号L_WR1は、時刻t1においてアサート状態となる。
第1データ書込指示信号L_WR1がアサート状態に切り替わった後の時刻t2において、クロック信号CLKが立ち上がる。クロック信号CLKのこの立ち上がりエッジに同期して信号レベルが高レベルから低レベルに切り替わる第1データ書込信号L_WR2が第1アクセス信号発生部171からデュアルポートメモリ13に出力される。図9に示すように、第1データ書込信号L_WR2は、第1データ書込指示信号L_WR1がアサート状態になった後のクロック信号CLKの最初の立ち上がりエッジに同期してネゲート状態からアサート状態に切り替えられる。
図9に示すように、時刻t2の後の時刻t3において、クロック信号CLKが再び立ち上がる。時刻t3でのクロック信号のこの立ち上がりエッジに同期して、第1アクセス信号発生部171からデュアルポートメモリ13に出力される第1データ書込信号L_WR2がアサート状態からネゲート状態に切り替えられる。これにより、第1データ書込信号L_WR2は、時刻t2から時刻t3というクロック信号CLKの1周期の期間だけ信号レベルが低レベルになるパルス信号となる。なお、図9では、第1データ書込信号L_WR2はクロック信号CLKの1周期だけ低レベルになるパルス信号であるが、クロック信号CLKの複数周期の間で低レベルとなるパルス信号でもよい。また、第1データ書込信号L_WR2はクロック信号CLKの立下りエッジに同期する信号でもよい。
図示は省略するが、第1データ書込信号L_WR2がアサート状態からネゲート状態に切り替わることにより、書込用メモリ側第1データバスライン23wに出力されている第1書込データL_DT1の値(図9では、「0x1234」)が、第1アドレス信号L_ADRにおいて指定された記憶部133のメモリセルに記憶される。
このように、第1データ書込信号L_WR2がアサート状態(有効状態)からネゲート状態(無効状態)に切り替わるタイミングは、第1データ書込信号L_WR2における第1書込データL_DT1を書込むタイミングである。また、第1データ書込信号L_WR2における第1書込データL_DT1を書込むこのタイミングは、第1メモリアクセスコントローラ15がデュアルポートメモリ13に第1書込データL_DT1を書込む第1データ書込タイミングである。第1データ書込信号L_WR2がアサート状態からネゲート状態に切り替わるタイミングは、クロック信号CLKに同期しているので、第1データ書込タイミングもクロック信号CLKに同期する。
図9に示すように、その後、第1データ書込指示信号L_WR1は、アサート状態からネゲート状態への切り替えが開始され、時刻t4においてネゲート状態となる。このように、第1データ書込指示信号L_WR1は、時刻t1から時刻t4の間に信号レベルが低レベルとなるパルス信号となる。
また、第1データ書込指示信号L_WR1がネゲート状態になっても、CPU側第1データバスライン22と書込用メモリ側第1データバスライン23wとは直結されたままなので、CPU側第1データバスライン22に入力された値「0x1234」の第1書込データL_DT1は書込用メモリ側第1データバスライン23wに入力され続ける。
以上で、マルチプロセッサシステム2における第1メモリアクセスコントローラ17での1つの第1書込データのデータ書込み動作が終了する。
第2メモリアクセスコントローラ18のデータ書込み動作は、第1メモリアクセスコントローラ17の動作の「第1」を「第2」に読み替えたのと同様である。したがって、第2データ書込信号R_WR2がアサート状態(有効状態)からネゲート状態(無効状態)に切り替わるタイミングは、第2データ書込信号R_WR2における第2書込データR_DT1を書込むタイミングである。また、第2データ書込信号R_WR2における第2書込データR_DT1を書込むこのタイミングは、第2メモリアクセスコントローラ18がデュアルポートメモリ13に第2書込データR_DT1を書込む第2データ書込タイミングである。第2データ書込信号R_WR2がアサート状態からネゲート状態に切り替わるタイミングは、クロック信号CLKに同期しているので、第2データ書込タイミングもクロック信号CLKに同期する。。
次に、マルチプロセッサシステム2における第1メモリアクセスコントローラ17のデータ読出し動作について説明する。図10に示すデータ読出し動作のタイミングチャートにおいて、図10中に示す「L_ADR」は第1アドレス信号L_ADRを示し、「L_RD1」は第1データ読出指示信号L_RD1を示し、「CLK」はクロック信号発信器14から出力されたクロック信号CLKを示し、「L_DT2(23r)」はデュアルポートメモリ13から読み出され読出用メモリ側第1データバスライン23rに入力された第1読出データL_DT2を示し、「RDL」は第1データ保持信号RDLを示し、「REG」は第1保持部173に保持された第1読出データL_DT2を示し、「ROE」は第1データ読出制御信号ROEを示し、「L_DT2(22)」はCPU側第1データバスライン22に入力された第1読出データL_DT2を示している。図10において、左から右に向かって時の経過が表されている。
デュアルポートメモリ13は、第1CPU11及び第2CPU12のメモリ空間にマッピングされている。図10に示すように、第1CPU11は、第1読出データL_DT2をデュアルポートメモリ13から読出す際に、記憶部133の読出し対象のメモリセルの情報を含む第1アドレス信号L_ADRをデュアルポートメモリ13及び第1メモリアクセスコントローラ17に出力する。第1CPU11は、例えば時刻t1において記憶部133の読出し対象のメモリセルの情報を含む第1アドレス信号L_ADRをデュアルポートメモリ13などに出力する。
また、デュアルポートメモリ13は、時刻t1から時刻t6においてチップセレクトされる。デュアルポートメモリ13は、チップセレクトされると、入力された第1アドレス信号L_ADRの値によって指定された記憶部133のメモリセルからデータを読出す。さらに、デュアルポートメモリ13は、メモリセルから読出したデータを第1入出力ポート131を介して読出用メモリ側第1データバスライン23rに出力する。図10では、時刻t1直後に例えば値「0x5678」の第1読出データL_DT2が読出用メモリ側第1データバスライン23rに出力される。
図10に示すように、時刻t1の後の時刻t2において、ネゲート状態からアサート状態に切り替わる第1データ読出指示信号L_RD1が第1CPU11から第1メモリアクセスコントローラ17に出力される。
第1データ読出指示信号L_RD1がアサート状態となったことを受けて時刻t2において、信号レベルが高レベルから低レベルへの切り替り替えが開始されて時刻t2の直後に低レベルとなる第1データ読出制御信号ROEが第1メモリアクセスコントローラ17から第1保持部173に出力される。第1データ読出制御信号ROEが低レベルであってアサート状態の期間では、第1保持部173は、保持している第1読出データL_DT2を出力可能な状態すなわち出力イネーブルとなる。このため、第1保持部173に保持されている前回値(0x1234)の第1読出データがCPU側第1データバスライン22に出力される。
時刻t2の後の時刻t3において、クロック信号CLKの立ち上がりエッジに同期して信号レベルが高レベルから低レベルに切り替わる第1データ保持信号RDLが第1アクセス信号発生部171から第1保持部173に出力される。すなわち、第1データ保持信号RDLは、第1データ読出指示信号L_RD1がアサート状態に切り替わった後のクロック信号CLKの最初の立ち上がりエッジに同期してネゲート状態からアサート状態に切り替わる。
図10に示すように、時刻t3の後の時刻t4において、クロック信号CLKが再び立ち上がる。時刻t4でのクロック信号のこの立ち上がりエッジに同期して第1アクセス信号発生部171から第1保持部173に出力される第1データ保持信号RDLは、アサート状態からネゲート状態に切り替えられる。これにより、第1データ保持信号RDLは、時刻t3から時刻t4というクロック信号CLKの1周期の期間だけ信号レベルが低レベルになるパルス信号となる。なお、図10では、第1データ保持信号RDLはクロック信号CLKの1周期だけ低レベルになるパルス信号であるが、クロック信号CLKの複数周期の間で低レベルとなるパルス信号でもよい。また、第1データ保持信号RDLはクロック信号CLKの立下りエッジに同期する信号でもよい。
第1保持部173は、第1データ保持信号RDLがアサート状態からネゲート状態に切り替わる時に、読出用メモリ側第1データバスライン23rに出力されている第1読出データL_DT2を入力端子INを介して保持する。このため、図10に示すように、第1データ保持信号RDLがアサート状態からネゲート状態に切り替わる時刻t4において、第1保持部173に保持されるデータの値は、値「0x1234」から、読出用メモリ側第1データバスライン23rに出力されている第1読出データL_DT2の値「0x5678」に変更される。
このように、第1データ保持信号RDLがアサート状態(有効状態)からネゲート状態(無効状態)に切り替わるタイミングは、第1読出データL_DT2を保持するタイミングである。また、第1データ保持信号RDLにおける第1読出データL_DT2を保持するこのタイミングは、第1メモリアクセスコントローラ17がデュアルポートメモリ13から第1読出データL_DT2を読込む第1データ読込タイミングの1つである。第1データ保持信号RDLがアサート状態からネゲート状態に切り替わるタイミングは、クロック信号CLKに同期しているので、第1データ読込タイミングもクロック信号CLKに同期する。
図10に示すように、その後、第1データ読出指示信号L_RD1は、アサート状態からネゲート状態への切り替えが開始され、時刻t5においてネゲート状態となる。また、第1データ読出指示信号L_RD1がネゲート状態になったことを受けて時刻t5において、第1データ読出制御信号ROEは、アサート状態からネゲート状態への切り替えが開始され、時刻t5の直後にネゲート状態となる。このように、第1データ読出指示信号L_RD1は、時刻t2から時刻t5の間に信号レベルが低レベルとなるパルス信号となる。また、第1データ読出制御信号ROEは、ほぼ時刻t2から時刻t5の間に信号レベルが低レベルとなるパルス信号となる。
また、第1データ読出制御信号ROEがネゲート状態となることにより、第1保持部173の出力端子OUTはハイインピーダンス状態となる。本例では、CPU側第1データバスライン22に出力されている第1読出データL_DT2の値は、時刻t4で切り替わっているが、第1CPU11が第1読出データL_DT2を取り込む時刻は、第1データ読出制御信号ROEがネゲート状態となる時刻t5の直後である。時刻t5の直後では、CPU側第1データバスライン22に出力されている第1読出データL_DT2の値は、所望の値「0x5678」であるため問題は生じない。
図10に示すように、時刻t5の後の時刻t6において、第1メモリアクセスコントローラ17へのアドレス信号L_ADRの入力が終了すると、デュアルポートメモリ13がチップセレクトされている期間は終了する。なお、時刻t6において、アドレス信号L_ADRの値が切り替えられた場合には、チップセレクトは連続でアサート状態となる。
以上で、マルチプロセッサシステム2における第1メモリアクセスコントローラ17での1つのデータのデータ読込み動作が終了する。
第2メモリアクセスコントローラ16のデータ読出し動作は、第1メモリアクセスコントローラ15の動作の「第1」を「第2」に読み替えたのと同様である。すなわち、第2データ保持信号がアサート状態(有効状態)からネゲート状態(無効状態)に切り替わるタイミングは、第2読出データR_DT2を保持するタイミングである。また、第2データ保持信号における第2読出データR_DT2を保持するこのタイミングは、第2メモリアクセスコントローラ18がデュアルポートメモリ13から第2読出データR_DT2を読込む第2データ読込タイミングの1つである。第2データ保持信号がアサート状態からネゲート状態に切り替わるタイミングは、クロック信号CLKに同期しているので、第2データ読込タイミングもクロック信号CLKに同期する。
マルチプロセッサシステム2では、上記第1実施形態によるマルチプロセッサシステム1と同様に、クロック信号発信器14が発信するクロック信号CLKのクロック周期Tpは、遅延時間Tdと、セットアップ時間Tsとに基づいて設定されている。ここで、遅延時間Tdは、第1CPU11(又は第2CPU12)からデュアルポートメモリ13へのデータ書込みの終了タイミングから第1メモリアクセスコントローラ17(又は第2メモリアクセスコントローラ18)の第1保持部173(又は第2保持部)の入力で第1読出データL_DT2(又は第2読出データR_DT2)の値が安定化するまでの期間である。また、セットアップ時間Tsは、メモリ側第1データバスライン23r(又はメモリ側第2データバスライン33r)に出力された第1読出データL_DT2(又は第2読出データR_DT2)の値が正規のデータの値となってから所定の時間が経過するまでの期間である。
図5に示すのと同様に、マルチプロセッサシステム2におけるクロック信号CLKのクロック周期Tpは、遅延時間Tdとセットアップ時間Tsとを加算した時間よりも長くなる(Tp>Td+Ts)ように設定されている。遅延時間Tdやセットアップ時間Tsは、デュアルポートメモリ13を構成するトランジスタの特性や、第1メモリアクセスコントローラ17又は第2メモリアクセスコントローラ18とデュアルポートメモリ13とを接続する配線の配線長などによって決定される。このため、クロック信号CLKのクロック周期Tpを調整することにより、「Tp>Td+Ts」の関係を満たすように容易に設定できる。
したがって、本実施形態によるマルチプロセッサシステム2は、同一のアドレスのメモリセルに対して第1CPU11及び第2CPU12からのアクセスが競合した場合には、上記第1実施形態によるマルチプロセッサシステム1と同様に動作できる。これにより、マルチプロセッサシステム2は、データが切り替わる過渡状態における不定値が第1CPU11又は第2CPU12に出力されない。このため、マルチプロセッサシステム1は、適用された産業用機器が予期しない誤動作をしてしまうのを防止できる。
以上説明したように、本実施形態によるマルチプロセッサシステム2は、デュアルポートメモリ13と、第1及び第2CPU11,12と、クロック信号発信器14と、第1及び第2メモリアクセスコントローラ17,18とを有し、第1メモリアクセスコントローラ16がデュアルポートメモリ13に第1データを書込む第1データ書込タイミング、第1メモリアクセスコントローラ16がデュアルポートメモリ13から第1データを読込む第1データ読込タイミング、第2メモリアクセスコントローラ18がデュアルポートメモリ13に第2データを書込む第2データ書込タイミング、及び第2メモリアクセスコントローラ18がデュアルポートメモリ13から第2データを読込む第2データ読込タイミングは、クロック信号発信器14が発信するクロック信号CLKに同期している。これにより、マルチプロセッサシステム2は、上記第1実施形態によるマルチプロセッサシステム1と同様の効果が得られる。
また、マルチプロセッサシステム2は、第1及び第2メモリアクセスコントローラ17,18とデュアルポートメモリ13との間に、書込専用及び読出専用のデータバスラインをそれぞれ有している。一般に、デュアルポートメモリを内蔵している特定用途向け集積回路(Application Specific Integrated Circuit:ASIC)やFPGA(Field−Programmable Gate Array)では、このデュアルポートメモリには書込専用及び読出専用のデータバスラインが接続されている。このため、マルチプロセッサシステム2は、ASICやFPGAに容易に組み込むことができる。
本発明の技術的範囲は、図示され記載された例示的な実施形態に限定されるものではなく、本発明が目的とするものと均等な効果をもたらす全ての実施形態をも含む。さらに、本発明の技術的範囲は、請求項により画される発明の特徴の組み合わせに限定されるものではなく、全ての開示されたそれぞれの特徴のうち特定の特徴のあらゆる所望する組み合わせによって画されうる。