(57)【特許請求の範囲】
【請求項１】
第一のＣＰＵと、第二のＣＰＵと、前記第一および第二のＣＰＵが共有し、ワード単位でデータを格納する共有メモリと、前記第一および第二のＣＰＵによる前記共有メモリに対するアクセスを制御するバスコントロール回路とを有した情報処理装置において、
前記バスコントロール回路は、
前記第一のＣＰＵが前記共有メモリに対して書き込むべきあるいは読み出したダブルワードのうちの少なくとも一つのワードを一時格納する第一のバッファと、
前記第二のＣＰＵが前記共有メモリに対して書き込むべきあるいは読み出したダブルワードのうちの少なくとも一つのワードを一時格納する第二のバッファと、
前記第一のＣＰＵによる共有メモリへのアクセスがダブルワードアクセスであるか否かを示す情報が設定される第一のダブルワードアクセス設定レジスタと、
前記第二のＣＰＵによる共有メモリへのアクセスがダブルワードアクセスであるか否かを示す情報が設定される第二のダブルワードアクセス設定レジスタと、
前記第一のＣＰＵのダブルワードアクセス時のアドレス指定が昇順であるのか降順であるのかを示す情報が設定される第一の昇順／降順設定レジスタと、
前記第二のＣＰＵのダブルワードアクセス時のアドレス指定が昇順であるのか降順であるのかを示す情報が設定される第二の昇順／降順設定レジスタと、
前記第一および第二のダブルワードアクセス設定レジスタに設定された情報と、前記第一および第二の昇順／降順設定レジスタに設定された情報とに基づいて前記第一および第二のＣＰＵによる前記共有メモリに対するアクセスを制御するアクセスコントロール回路と、
を備え、
前記第一および第二のＣＰＵは、
前記共有メモリに対してのダブルワードアクセスを行う場合、自身に対応する第一または第二のダブルワードアクセス設定レジスタに前記共有メモリへのアクセスがダブルワードアクセスであることを示す情報を設定するとともに、自身に対応する第一または第二の昇順／降順設定レジスタにダブルワードアクセスのための２回のワードアクセス要求のアドレス指定を昇順で行うのか降順で行うのかを示す情報を設定した後に、前記共有メモリに対するダブルワードアクセスとして２回のワードアクセス要求を出力し、
前記アクセスコントロール回路は、
前記第一または第二のＣＰＵからのワードアクセス要求がリードであって、かつ当該ＣＰＵに対応する第一または第二のダブルワードアクセス設定レジスタにダブルワードアクセスであることを示す情報が設定されている場合には、前記共有メモリからワードアクセス要求されたアドレスのデータを読み出して当該ＣＰＵに出力するとともに、要求されたアドレスと当該ＣＰＵに対応する第一または第二の昇順／降順設定レジスタに設定された情報とに基づいて当該ＣＰＵが２回目に出力するワードアクセス要求のアドレスを認識し、前記共有メモリから認識したアドレスのデータを読み出して当該ＣＰＵに対応する第一または第二のバッファに格納し、当該ＣＰＵからの２回目のワードアクセス要求を受けた際に当該ＣＰＵに対応する第一または第二のバッファに格納されたデータを当該ＣＰＵに出力し、前記第一または第二のＣＰＵからのワードアクセス要求がライトであって、かつ当該ＣＰＵに対応する第一または第二のダブルワードアクセス設定レジスタにダブルワードアクセスであることを示す情報が設定されている場合には、ワードアクセス要求されたデータを当該ＣＰＵに対応する第一または第二のバッファに格納し、当該ＣＰＵからの２回目のワードアクセス要求を受けた際に２回目のワードアクセス要求のアドレスに２回目のワードアクセス要求のデータを格納するとともに、２回目のワードアクセス要求のアドレスと当該ＣＰＵに対応する第一または第二の昇順／降順設定レジスタに設定された情報に基づいて当該ＣＰＵが１回目に出力したワードアクセス要求のアドレスを認識し、前記共有メモリの該認識したアドレスに当該ＣＰＵに対応するバッファに保持されたデータを格納すること、
を特徴とする情報処理装置。
【請求項２】
前記バスコントロール回路は、
前記第一のＣＰＵからのダブルワードアクセス時における１回目のワードアクセス要求であるのか２回目のワードアクセス要求であるのかの情報が設定される第一の回数フラグと、
前記第二のＣＰＵからのダブルワードアクセス時における１回目のワードアクセス要求であるのか２回目のワードアクセス要求であるのかの情報が設定される第二の回数フラグと、
をさらに備え、
前記アクセスコントロール回路は、
前記第一または第二のＣＰＵからのワードアクセス要求がリードであって、かつ当該ＣＰＵに対応する第一または第二のダブルワードアクセス設定レジスタにダブルワードアクセスであることを示す情報が設定されている場合には、当該ＣＰＵに対応する第一または第二のバッファにデータを格納した際に当該ＣＰＵに対応する第一または第二の回数フラグに２回目のワードアクセスであることを示す情報を設定し、２回目のワードアクセス要求によって当該ＣＰＵのバッファに格納したデータを当該ＣＰＵに送信した際に当該ＣＰＵに対応する第一または第二の回数フラグに１回目のワードアクセスであることを示す情報を設定し、前記第一または第二のＣＰＵからのワードアクセス要求がライトであって、かつ当該ＣＰＵに対応する第一または第二のダブルワードアクセス設定レジスタにダブルワードアクセスであることを示す情報が設定されている場合には、当該ＣＰＵに対応する第一または第二のバッファにデータを格納した際に当該ＣＰＵに対応する第一または第二の回数フラグに２回目のワードアクセスであることを示す情報を設定し、２回目のワードアクセス要求によって１回目および２回目のワードアクセス要求によるデータを前記共有メモリに格納した際に当該ＣＰＵに対応する第一または第二の回数フラグに１回目のワードアクセスであることを示す情報を設定し、
前記第一または第二のＣＰＵからのワードアクセス要求がリードであってかつ当該ＣＰＵに対応する第一または第二のダブルワードアクセス設定レジスタにダブルワードアクセスであることを示す情報が設定されている場合には、当該ＣＰＵに対応する第一または第二の回数フラグに１回目のワードアクセスであることを示す情報が設定されている期間のみ当該ＣＰＵとは異なるＣＰＵを待機状態とし、前記第一または第二のＣＰＵからのワードアクセス要求がライトであってかつ当該ＣＰＵに対応する第一または第二のダブルワードアクセス設定レジスタにダブルワードアクセスであることを示す情報が設定されている場合には、当該ＣＰＵに対応する第一または第二の回数フラグに２回目のワードアクセスであることを示す情報が設定されている期間のみ当該ＣＰＵとは異なるＣＰＵを待機状態とすること、
を特徴とする請求項１に記載の情報処理装置。
【請求項３】
第一のＣＰＵと、第二のＣＰＵと、前記第一および第二のＣＰＵが共有し、ワード単位でデータを格納する共有メモリと、前記第一のＣＰＵが前記共有メモリに対して書き込むべきあるいは読み出したダブルワードのうちの少なくとも一つのワードを一時格納する第一のバッファ、前記第二のＣＰＵが前記共有メモリに対して書き込むべきあるいは読み出したダブルワードのうちの少なくとも一つのワードを一時格納する第二のバッファ、前記第一のＣＰＵによる共有メモリへのアクセスがダブルワードアクセスであるか否かを示す情報が設定される第一のダブルワードアクセス設定レジスタ、前記第二のＣＰＵによる共有メモリへのアクセスがダブルワードアクセスであるか否かを示す情報が設定される第二のダブルワードアクセス設定レジスタ、前記第一のＣＰＵのダブルワードアクセス時のアドレス指定が昇順であるのか降順であるのかを示す情報が設定される第一の昇順／降順設定レジスタ、前記第二のＣＰＵのダブルワードアクセス時のアドレス指定が昇順であるのか降順であるのかを示す情報が設定される第二の昇順／降順設定レジスタ、および前記第一および第二のダブルワードアクセス設定レジスタに設定された情報と前記第一および第二の昇順／降順設定レジスタに設定された情報とに基づいて前記第一および第二のＣＰＵによる前記共有メモリに対するアクセスを制御するアクセスコントロール回路を有するバスコントロール回路とを有した情報処理装置のアクセス制御方法であって、
前記第一または第二のＣＰＵが、前記共有メモリに対してダブルワードアクセスを行う場合、自身に対応する前記第一または第二のダブルワードアクセス設定レジスタに前記共有メモリへのアクセスがダブルワードであることを示す情報を設定するとともに、自身に対応する前記第一または第二の昇順／降順設定レジスタにアドレス指定を昇順で行うのか降順で行うのかを示す情報を設定するダブルワードアクセス前処理工程と、
前記第一または第二のＣＰＵが、前記ダブルワードアクセス前処理工程の後に前記共有メモリに対するダブルワードアクセスの１回目のワードアクセス要求を出力する第一のワードアクセス要求工程と、
前記アクセスコントロール回路が、前記第一または第二のＣＰＵからの１回目のワードアクセス要求がリード要求であって、かつ当該ＣＰＵに対応する第一または第二のダブルワードアクセス設定レジスタにダブルワードアクセスであることを示す情報が設定されている場合には、前記共有メモリから１回目にワードアクセス要求されたアドレスのデータを読み出して当該ＣＰＵに出力するとともに、要求されたアドレスと当該ＣＰＵに対応する第一または第二の昇順／降順設定レジスタに設定された情報に基づいて当該ＣＰＵが２回目に出力するワードアクセス要求のアドレスを認識し、前記共有メモリから認識したアドレスのデータを読み出して当該ＣＰＵに対応する第一または第二のバッファに格納し、前記第一または第二のＣＰＵからの１回目のワードアクセス要求がライト要求であって、かつ当該ＣＰＵに対応する第一または第二のダブルワードアクセス設定レジスタにダブルワードアクセスであることを示す情報が設定されている場合には、ワードアクセス要求されたデータを当該ＣＰＵに対応する第一または第二のバッファに格納する第一のアクセス工程と、
前記第一または第二のＣＰＵが、前記ダブルワードアクセス前処理工程の後に前記共有メモリに対するダブルワードアクセスの２回目のワードアクセス要求を出力する第二のワードアクセス要求工程と、
前記アクセスコントロール回路が、前記第一または第二のＣＰＵからの２回目のワードアクセス要求がリード要求であって、かつ当該ＣＰＵに対応する第一または第二のダブルワードアクセス設定レジスタにダブルワードアクセスであることを示す情報が設定されている場合には、当該ＣＰＵに対応する第一または第二のバッファに格納されたデータを当該ＣＰＵに出力し、前記第一または第二のＣＰＵからの２回目のワードアクセス要求がライトであって、かつ当該ＣＰＵに対応する第一または第二のダブルワードアクセス設定レジスタにダブルワードアクセスであることを示す情報が設定されている場合には、２回目のワードアクセス要求のアドレスに２回目のワードアクセス要求のデータを格納するとともに、２回目のワードアクセス要求のアドレスと当該ＣＰＵに対応する第一または第二の昇順／降順設定レジスタに設定された情報に基づいて当該ＣＰＵが１回目に出力したワードアクセス要求のアドレスを認識し、前記共有メモリの該認識したアドレスに当該ＣＰＵに対応するバッファに保持されたデータを格納する第二のアクセス工程と、
を含むことを特徴とする情報処理装置のアクセス制御方法。
【請求項４】
前記バスコントロール回路は、
前記第一のＣＰＵからのダブルワードアクセス時における１回目のワードアクセスであるのか２回目のワードアクセスであるのかの情報が設定される第一の回数フラグと、
前記第二のＣＰＵからのダブルワードアクセス時における１回目のワードアクセスであるのか２回目のワードアクセスであるのかの情報が設定される第二の回数フラグと、
をさらに備え、
前記アクセスコントロール回路が行う第一のアクセス工程は、
第一または第二のバッファにデータを格納した際に当該ＣＰＵに対応する第一または第二の回数フラグに２回目のワードアクセス要求であることを示す情報を設定する工程を含み、
前記アクセスコントロール回路が行う第二のアクセス工程は、
前記第一または第二のバッファに格納したデータを当該ＣＰＵに出力した場合、または前記第一または第二のバッファに格納したデータを前記共有メモリに格納した場合に、当該ＣＰＵに対応する第一または第二の回数フラグに１回目のワードアクセス要求であることを示す情報を設定する工程と、
前記第一または第二のＣＰＵからのワードアクセス要求がリードであってかつ当該ＣＰＵに対応する第一または第二のダブルワードアクセス設定レジスタにダブルワードアクセスであることを示す情報が設定されている場合に、当該ＣＰＵに対応する第一または第二の回数フラグに１回目のワードアクセス要求であることを示す情報が設定されている期間は当該ＣＰＵとは異なるＣＰＵを待機状態とし、前記第一または第二のＣＰＵからのワードアクセス要求がライトであってかつ当該ＣＰＵに対応する第一または第二のダブルワードアクセス設定レジスタにダブルワードアクセスであることを示す情報が設定されている場合に、当該ＣＰＵに対応する第一または第二の回数フラグに２回目のワードアクセス要求であることを示す情報が設定されている期間は当該ＣＰＵとは異なるＣＰＵを待機状態とする工程と、
を含むことを特徴とする請求項３に記載の情報処理装置のアクセス制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、第一のＣＰＵと、第二のＣＰＵと、前記第一および第二のＣＰＵが共有し、ワード単位でデータを格納する共有メモリと、前記第一および第二のＣＰＵによる前記共有メモリに対するアクセスを制御するバスコントロール回路とを有した情報処理装置およびそのアクセス制御方法に関し、特に、前記第一のＣＰＵ、前記第二のＣＰＵおよび前記共有メモリと、前記バスコントロール回路とが１６ビットデータバスで接続され、１６ビットのワード単位でデータ転送され、前記第一のＣＰＵおよび前記第二のＣＰＵが前記共有メモリに対して３２ビットのデータセットでアクセス（ダブルワードアクセス）を行う情報処理装置およびそのアクセス制御方法に関するものである。
【０００２】
【従来の技術】
図２１は、二つのＣＰＵがバスコントロール回路を介して一つの共有メモリを共有する情報処理装置の概要構成を示す図である。図２１において、ＣＰＵ１０１とＣＰＵ１０２とは、バスコントロール回路１０３と１６ビットデータバスで接続され、共有メモリ１０４は、バスコントロール回路１０３と１６ビットデータバスで接続される。ＣＰＵ１０１，１０２は、共有メモリ１０４に対して１６ビット単位でデータを転送し、共有メモリ１０４は、１６ビット単位でデータを格納する。すなわち、ＣＰＵ１０１，１０２は、ワード（１６ビット）単位で共有メモリ１０４をアクセスすることができる。
【０００３】
ところで、ＣＰＵ１０１，１０２は、共有メモリ１０４に対して、連続する３２ビットを一つのデータセット（ダブルワード）としてアクセスを行う場合がある。ＣＰＵ１０１，１０２が共有メモリ１０４に対してダブルワードアクセスを行う場合、転送単位は１６ビットであることから、共有メモリに対して２回のアクセスを行う必要がある。この場合、共有メモリ１０４は、ＣＰＵ１０１，１０２によって共有されるため、アクセスの競合によっては、所望のダブルワードアクセスが行われない、いわゆる「データの泣別れ」が生じることになる。
【０００４】
図２２は、この「データの泣別れ」が生じる場合を説明する図である。図２２において、共有メモリは、データを１６ビットのワード単位で格納し、ワード単位の連続するデータ「Ａ」，「Ｂ」からなるダブルワードは、アドレス「４ｎ」，「４ｎ＋２」に連続して格納される。この場合におけるアドレスは、バイトアドレスで表され、アドレス「４ｎ」および「４ｎ＋２」に示す「ｎ」は、バイト（８ビット）数を表す。なお、アドレス「４ｎ」，「４ｎ＋２」の順序で格納しているのは、アクセスの回路構成が単純になるからである。すなわち、４の倍数（４ｎ）は、ＣＰＵが出力するアドレス信号の下位２ビットを「００」として判別することができ、４の倍数＋２（４ｎ＋２）は、アドレス信号の下位２ビットを「１０」として判別することができ、これらの判別は、インバータ回路とアンド回路のみによって簡単に回路構成できるからである。
【０００５】
図２２は、ＣＰＵ１０２がデータ「Ａ」，「Ｂ」からなるダブルワードを読み出す際に、ＣＰＵ１０１がデータ「Ｘ」を書き込む処理が競合し、データの泣別れが生ずる場合を示している。図２２（ａ）において、ＣＰＵ１０２は、アドレス「４ｎ」からデータ「Ａ」を読み出し（リード）し（Ｓ１０１）、その後データ「Ｂ」を連続して読み出そうとするが、図２２（ｂ）に示すように、このデータ「Ｂ」のリード前に、ＣＰＵ１０１がデータ「Ｘ」をアドレス「４ｎ＋２」に書き込み（ライトし）（Ｓ１０２）、その後、図２２（ｃ）に示すように、ＣＰＵ１０２が、アドレス「４ｎ＋２」のデータ「Ｘ」を読み出して（Ｓ１０３）しまっている。ＣＰＵ１０２は、アドレス「４ｎ」，「４ｎ＋２」をアクセスして、データ「Ａ」，「Ｂ」をリードするはずであったが、ＣＰＵ１０１によってアドレス「４ｎ＋２」にデータ「Ｘ」がライトされて更新されてしまったため、データ「Ａ」，「Ｘ」をリードしてしまっている。このような「データの泣別れ」の発生によって、データのリード／ライトの整合性がとれなくなるという問題が生じる。
【０００６】
このような「データの泣別れ」を防止するため、図２３に示すように、バスコントロール回路１０３内には、泣別れ防止回路１１０のハードウェアを設けている。すなわち、バスコントロール回路１０３には、ダブルワードアクセスを行う旨が設定されるダブルワードアクセス設定レジスタ１１１ａ，１１１ｂが設けられるとともに、泣別れ防止回路１１０には、ダブルワードアクセスが行われた際に、ダブルワードを構成する各ワードを一時格納するバッファ１１４ａ，１１４ｂが設けられ、ダブルワードアクセス時における「データの泣別れ」を防止するようにしている。
【０００７】
図２４および図２５は、共有メモリ１０４からダブルワードをリードする際の泣別れ防止回路１１０の動作を示す図である。図２４において、まず、ＣＰＵ１０１は、ダブルワードアクセスの前に、ダブルワードアクセス設定レジスタ１１１ａに対して、ダブルワードアクセスであることを設定しておく。そして、ＣＰＵ１０１は、アドレス「４ｎ」に対するリードアクセス要求を泣別れ防止回路１１０に発行する（Ｓ２０１）と、泣別れ防止回路１１０は、このアクセスがダブルワードアクセスであることをダブルワードアクセス設定レジスタ１１１ａの設定によって知っているので、共有メモリ１０４のアドレス「４ｎ」からデータ「Ａ」をリードし（Ｓ２０２）、さらに連続してアドレス「４ｎ＋２」からデータ「Ｂ」をリードする（Ｓ２０３）。そして、泣別れ防止回路１１０は、リードしたデータ「Ａ」は、そのままＣＰＵ１０１に出力し（Ｓ２０４）、２回目にリードしたデータ「Ｂ」は、バッファ１１４ａに一時格納する（Ｓ２０５）。なお、この泣別れ防止回路１１０によるデータ「Ａ」，「Ｂ」のリードアクセス時には、他のＣＰＵ１０２に対して、ウェイト信号を送出し、ＣＰＵ１０２をウェイト状態にし（Ｓ２０６）、他のＣＰＵ１０２による共有メモリ１０４に対するアクセスを許可しない。
【０００８】
図２５において、データ「Ｂ」がバッファ１１４ａに一時格納されると、泣別れ防止回路１１０は、他のＣＰＵ１０２に対するウェイト状態を解除し（Ｓ２０７）、他のＣＰＵ１０２による共有メモリ１０４に対するアクセスを許容する。この場合、他のＣＰＵ１０２は、通常のワードアクセスのほか、ダブルワードアクセスであっても、アクセスが可能である。その後、ＣＰＵ１０１からアドレス「４ｎ＋２」に対するリードアクセス要求が泣別れ防止回路１１０に発行される（Ｓ２０８）と、泣別れ防止回路１１０は、共有メモリ１０４にリードアクセスすることなく、バッファ１１４ａに一時格納されていたデータ「Ｂ」をＣＰＵ１０１に出力する（Ｓ２０９，Ｓ２１０）。
【０００９】
一方、図２６および図２７は、共有メモリ１０４にダブルワードをライトする際の泣別れ防止回路１１０の動作を示す図である。図２６において、まず、ＣＰＵ１０１は、ダブルワードアクセスの前に、ダブルワードアクセス設定レジスタ１１１ａに対して、ダブルワードアクセスであることを設定しておく。そして、ＣＰＵ１０１は、アドレス「４ｎ」に対するライトアクセスを泣別れ防止回路１１０に対して発行し（Ｓ３０１）、データ「Ａ」を泣別れ防止回路１１０に送出する。泣別れ防止回路１１０は、このライトアクセスがダブルワードアクセスであることをダブルワードアクセス設定レジスタ１１１ａの設定によって知っているので、共有メモリ１０４のアドレス「４ｎ」に対するデータ「Ａ」のライトアクセス要求時には、共有メモリ１０４に対してはライトアクセスを行わずに、データ「Ａ」をバッファ１１４ａに一時格納する（Ｓ３０３）。なお、この泣別れ防止回路１１０によるデータ「Ａ」のライトアクセス要求時には、他のＣＰＵ１０２に対してウェイト解除状態に設定し（Ｓ３０４）、他のＣＰＵ１０２によるアクセスを許可する。
【００１０】
その後、図２７において、ＣＰＵ１０１からアドレス「４ｎ＋２」に対するライトアクセス要求が泣別れ防止回路１１０に発行され（Ｓ３０５）、データ「Ｂ」が泣別れ防止回路１１０に送出される（Ｓ３０６）と、泣別れ防止回路１１０は、バッファ１１４ａに一時格納されていたデータ「Ａ」を共有メモリ１０４のアドレス「４ｎ」に対してライトアクセスし（Ｓ３０７，Ｓ３０８）、その後、入力されたデータ「Ｂ」をそのまま、共有メモリ１０４のアドレス「４ｎ＋２」にライトアクセスする（Ｓ３０９）。なお、泣別れ防止回路１１０は、データ「Ａ」，「Ｂ」を共有メモリ１０４にライトアクセスしている際には、他のＣＰＵ１０２をウェイト状態にし（Ｓ３１０）、他のＣＰＵ１０２からのアクセスを許可しない。
【００１１】
このようにして、泣別れ防止回路１１０は、ダブルワードアクセス時におけるデータの整合性を維持できるようにしている。なお、泣別れ防止回路１１０内に、調停回路を設けておくことによって、ＣＰＵ１０１，１０２がほぼ同時あるいは全く同時に共有メモリ１０４に対して、通常のワードアクセスあるいはダブルワードアクセスを発行した場合のアクセス権を調停するようにしている。たとえば、ＣＰＵ１０１，１０２がほぼ同時に共有メモリ１０４に対してアクセスを発行した場合には、早くアクセスを発行したＣＰＵ側にアクセス権を与え、全く同時に共有メモリ１０４に対してアクセスを発行した場合には、予め設定されている優先順位の高いＣＰＵ側にアクセス権を与え、アクセス権が与えられなかったＣＰＵ側をウェイト状態に設定してアクセスを許可しないようにしている。
【００１２】
【発明が解決しようとする課題】
しかしながら、上述した泣別れ防止回路１１０を有する情報処理装置では、ＣＰＵ１０１，１０２による共有メモリ１０４に対するダブルワードアクセスの回路構成を簡単にするため、アドレスを４の倍数（４ｎ）と４の倍数＋２（４ｎ＋２）という順序で格納あるいはアクセスさせるようにしていたため、共有メモリ１０４にダブルワードを格納する場合、ダブルワードの先頭アドレスが常に４の倍数（４ｎ）となり、共有メモリ１０４上の４の倍数±２（４ｎ±２）アドレスのメモリ領域に空きがある場合であっても、このメモリ領域を有効利用することができないという問題点があった。
【００１３】
また、共有メモリ１０４に対するダブルワードアクセスのアドレス指定は、１回目が４の倍数（４ｎ）とし、２回目が４の倍数＋２（４ｎ＋２）とする制約を受けているため、メモリのアドレスが大きいメモリ領域からアドレスが小さいメモリ領域となるアクセス順でダブルワードアクセスを行う場合、たとえば、１回目：４ｎ→２回目：４ｎ＋２→３回目：４ｎ−４→４回目：４ｎ−２というように、アドレス指定処理が複雑となり、アドレス指定にかかる負荷と労力がかかるという問題点もあった。
【００１４】
一方、従来の泣別れ防止回路１１０を有する情報処理装置では、一方のＣＰＵ１０１が共有メモリ１０４に対してアクセスしている場合には、他のＣＰＵ１０２のアクセスをウェイト状態にしており、他のＣＰＵ１０２の待ち時間が長くなり、情報処理装置全体の動作処理速度が低下するという問題点があった。
【００１５】
この発明は上記に鑑みてなされたもので、ワード単位でデータ転送を行い、複数のＣＰＵが共有メモリを共有する場合におけるダブルワードアクセスをメモリ領域の有効利用を図りつつデータの泣別れを防止し、さらにダブルワードアクセス時のアドレス指定を簡易かつ柔軟に行うことができる情報処理装置およびそのアクセス制御方法を得ることを目的とする。また、ダブルワードアクセスが競合する場合が生じても、情報処理装置全体の動作処理速度の低下を防止することができる情報処理装置およびそのアクセス制御方法を得ることを目的とする。
【００１６】
【課題を解決するための手段】
上記目的を達成するため、この発明にかかる情報処理装置は、第一のＣＰＵと、第二のＣＰＵと、前記第一および第二のＣＰＵが共有し、ワード単位でデータを格納する共有メモリと、前記第一および第二のＣＰＵによる前記共有メモリに対するアクセスを制御するバスコントロール回路とを有した情報処理装置において、前記バスコントロール回路は、前記第一のＣＰＵが前記共有メモリに対して書き込むべきあるいは読み出したダブルワードのうちの少なくとも一つのワードを一時格納する第一のバッファと、前記第二のＣＰＵが前記共有メモリに対して書き込むべきあるいは読み出したダブルワードのうちの少なくとも一つのワードを一時格納する第二のバッファと、前記第一のＣＰＵによる共有メモリへのアクセスがダブルワードアクセスであるか否かを示す情報が設定される第一のダブルワードアクセス設定レジスタと、前記第二のＣＰＵによる共有メモリへのアクセスがダブルワードアクセスであるか否かを示す情報が設定される第二のダブルワードアクセス設定レジスタと、前記第一のＣＰＵのダブルワードアクセス時のアドレス指定が昇順であるのか降順であるのかを示す情報が設定される第一の昇順／降順設定レジスタと、前記第二のＣＰＵのダブルワードアクセス時のアドレス指定が昇順であるのか降順であるのかを示す情報が設定される第二の昇順／降順設定レジスタと、前記第一および第二のダブルワードアクセス設定レジスタに設定された情報と、前記第一および第二の昇順／降順設定レジスタに設定された情報とに基づいて前記第一および第二のＣＰＵによる前記共有メモリに対するアクセスを制御するアクセスコントロール回路と、を備え、前記第一および第二のＣＰＵは、前記共有メモリに対してのダブルワードアクセスを行う場合、自身に対応する第一または第二のダブルワードアクセス設定レジスタに前記共有メモリへのアクセスがダブルワードアクセスであることを示す情報を設定するとともに、自身に対応する第一または第二の昇順／降順設定レジスタにダブルワードアクセスのための２回のワードアクセス要求のアドレス指定を昇順で行うのか降順で行うのかを示す情報を設定した後に、前記共有メモリに対するダブルワードアクセスとして２回のワードアクセス要求を出力し、前記アクセスコントロール回路は、前記第一または第二のＣＰＵからのワードアクセス要求がリードであって、かつ当該ＣＰＵに対応する第一または第二のダブルワードアクセス設定レジスタにダブルワードアクセスであることを示す情報が設定されている場合には、前記共有メモリからワードアクセス要求されたアドレスのデータを読み出して当該ＣＰＵに出力するとともに、要求されたアドレスと当該ＣＰＵに対応する第一または第二の昇順／降順設定レジスタに設定された情報とに基づいて当該ＣＰＵが２回目に出力するワードアクセス要求のアドレスを認識し、前記共有メモリから認識したアドレスのデータを読み出して当該ＣＰＵに対応する第一または第二のバッファに格納し、当該ＣＰＵからの２回目のワードアクセス要求を受けた際に当該ＣＰＵに対応する第一または第二のバッファに格納されたデータを当該ＣＰＵに出力し、前記第一または第二のＣＰＵからのワードアクセス要求がライトであって、かつ当該ＣＰＵに対応する第一または第二のダブルワードアクセス設定レジスタにダブルワードアクセスであることを示す情報が設定されている場合には、ワードアクセス要求されたデータを当該ＣＰＵに対応する第一または第二のバッファに格納し、当該ＣＰＵからの２回目のワードアクセス要求を受けた際に２回目のワードアクセス要求のアドレスに２回目のワードアクセス要求のデータを格納するとともに、２回目のワードアクセス要求のアドレスと当該ＣＰＵに対応する第一または第二の昇順／降順設定レジスタに設定された情報に基づいて当該ＣＰＵが１回目に出力したワードアクセス要求のアドレスを認識し、前記共有メモリの該認識したアドレスに当該ＣＰＵに対応するバッファに保持されたデータを格納すること、を特徴とする。
【００１８】
つぎの発明にかかる情報処理装置は、上記の発明において、前記バスコントロール回路は、前記第一のＣＰＵからのダブルワードアクセス時における１回目のワードアクセス要求であるのか２回目のワードアクセス要求であるのかの情報が設定される第一の回数フラグと、前記第二のＣＰＵからのダブルワードアクセス時における１回目のワードアクセス要求であるのか２回目のワードアクセス要求であるのかの情報が設定される第二の回数フラグと、をさらに備え、前記アクセスコントロール回路は、前記第一または第二のＣＰＵからのワードアクセス要求がリードであって、かつ当該ＣＰＵに対応する第一または第二のダブルワードアクセス設定レジスタにダブルワードアクセスであることを示す情報が設定されている場合には、当該ＣＰＵに対応する第一または第二のバッファにデータを格納した際に当該ＣＰＵに対応する第一または第二の回数フラグに２回目のワードアクセスであることを示す情報を設定し、２回目のワードアクセス要求によって当該ＣＰＵのバッファに格納したデータを当該ＣＰＵに送信した際に当該ＣＰＵに対応する第一または第二の回数フラグに１回目のワードアクセスであることを示す情報を設定し、前記第一または第二のＣＰＵからのワードアクセス要求がライトであって、かつ当該ＣＰＵに対応する第一または第二のダブルワードアクセス設定レジスタにダブルワードアクセスであることを示す情報が設定されている場合には、当該ＣＰＵに対応する第一または第二のバッファにデータを格納した際に当該ＣＰＵに対応する第一または第二の回数フラグに２回目のワードアクセスであることを示す情報を設定し、２回目のワードアクセス要求によって１回目および２回目のワードアクセス要求によるデータを前記共有メモリに格納した際に当該ＣＰＵに対応する第一または第二の回数フラグに１回目のワードアクセスであることを示す情報を設定し、前記第一または第二のＣＰＵからのワードアクセス要求がリードであってかつ当該ＣＰＵに対応する第一または第二のダブルワードアクセス設定レジスタにダブルワードアクセスであることを示す情報が設定されている場合には、当該ＣＰＵに対応する第一または第二の回数フラグに１回目のワードアクセスであることを示す情報が設定されている期間のみ当該ＣＰＵとは異なるＣＰＵを待機状態とし、前記第一または第二のＣＰＵからのワードアクセス要求がライトであってかつ当該ＣＰＵに対応する第一または第二のダブルワードアクセス設定レジスタにダブルワードアクセスであることを示す情報が設定されている場合には、当該ＣＰＵに対応する第一または第二の回数フラグに２回目のワードアクセスであることを示す情報が設定されている期間のみ当該ＣＰＵとは異なるＣＰＵを待機状態とすること、を特徴とする。
【００２４】
つぎの発明にかかる情報処理装置のアクセス制御方法は、第一のＣＰＵと、第二のＣＰＵと、前記第一および第二のＣＰＵが共有し、ワード単位でデータを格納する共有メモリと、前記第一のＣＰＵが前記共有メモリに対して書き込むべきあるいは読み出したダブルワードのうちの少なくとも一つのワードを一時格納する第一のバッファ、前記第二のＣＰＵが前記共有メモリに対して書き込むべきあるいは読み出したダブルワードのうちの少なくとも一つのワードを一時格納する第二のバッファ、前記第一のＣＰＵによる共有メモリへのアクセスがダブルワードアクセスであるか否かを示す情報が設定される第一のダブルワードアクセス設定レジスタ、前記第二のＣＰＵによる共有メモリへのアクセスがダブルワードアクセスであるか否かを示す情報が設定される第二のダブルワードアクセス設定レジスタ、前記第一のＣＰＵのダブルワードアクセス時のアドレス指定が昇順であるのか降順であるのかを示す情報が設定される第一の昇順／降順設定レジスタ、前記第二のＣＰＵのダブルワードアクセス時のアドレス指定が昇順であるのか降順であるのかを示す情報が設定される第二の昇順／降順設定レジスタ、および前記第一および第二のダブルワードアクセス設定レジスタに設定された情報と前記第一および第二の昇順／降順設定レジスタに設定された情報とに基づいて前記第一および第二のＣＰＵによる前記共有メモリに対するアクセスを制御するアクセスコントロール回路を有するバスコントロール回路とを有した情報処理装置のアクセス制御方法であって、前記第一または第二のＣＰＵが、前記共有メモリに対してダブルワードアクセスを行う場合、自身に対応する前記第一または第二のダブルワードアクセス設定レジスタに前記共有メモリへのアクセスがダブルワードであることを示す情報を設定するとともに、自身に対応する前記第一または第二の昇順／降順設定レジスタにアドレス指定を昇順で行うのか降順で行うのかを示す情報を設定するダブルワードアクセス前処理工程と、前記第一または第二のＣＰＵが、前記ダブルワードアクセス前処理工程の後に前記共有メモリに対するダブルワードアクセスの１回目のワードアクセス要求を出力する第一のワードアクセス要求工程と、前記アクセスコントロール回路が、前記第一または第二のＣＰＵからの１回目のワードアクセス要求がリード要求であって、かつ当該ＣＰＵに対応する第一または第二のダブルワードアクセス設定レジスタにダブルワードアクセスであることを示す情報が設定されている場合には、前記共有メモリから１回目にワードアクセス要求されたアドレスのデータを読み出して当該ＣＰＵに出力するとともに、要求されたアドレスと当該ＣＰＵに対応する第一または第二の昇順／降順設定レジスタに設定された情報に基づいて当該ＣＰＵが２回目に出力するワードアクセス要求のアドレスを認識し、前記共有メモリから認識したアドレスのデータを読み出して当該ＣＰＵに対応する第一または第二のバッファに格納し、前記第一または第二のＣＰＵからの１回目のワードアクセス要求がライト要求であって、かつ当該ＣＰＵに対応する第一または第二のダブルワードアクセス設定レジスタにダブルワードアクセスであることを示す情報が設定されている場合には、ワードアクセス要求されたデータを当該ＣＰＵに対応する第一または第二のバッファに格納する第一のアクセス工程と、前記第一または第二のＣＰＵが、前記ダブルワードアクセス前処理工程の後に前記共有メモリに対するダブルワードアクセスの２回目のワードアクセス要求を出力する第二のワードアクセス要求工程と、前記アクセスコントロール回路が、前記第一または第二のＣＰＵからの２回目のワードアクセス要求がリード要求であって、かつ当該ＣＰＵに対応する第一または第二のダブルワードアクセス設定レジスタにダブルワードアクセスであることを示す情報が設定されている場合には、当該ＣＰＵに対応する第一または第二のバッファに格納されたデータを当該ＣＰＵに出力し、前記第一または第二のＣＰＵからの２回目のワードアクセス要求がライトであって、かつ当該ＣＰＵに対応する第一または第二のダブルワードアクセス設定レジスタにダブルワードアクセスであることを示す情報が設定されている場合には、２回目のワードアクセス要求のアドレスに２回目のワードアクセス要求のデータを格納するとともに、２回目のワードアクセス要求のアドレスと当該ＣＰＵに対応する第一または第二の昇順／降順設定レジスタに設定された情報に基づいて当該ＣＰＵが１回目に出力したワードアクセス要求のアドレスを認識し、前記共有メモリの該認識したアドレスに当該ＣＰＵに対応するバッファに保持されたデータを格納する第二のアクセス工程と、を含むことを特徴とする。
【００２６】
つぎの発明にかかる情報処理装置のアクセス制御方法は、上記の発明において、前記バスコントロール回路は、前記第一のＣＰＵからのダブルワードアクセス時における１回目のワードアクセスであるのか２回目のワードアクセスであるのかの情報が設定される第一の回数フラグと、前記第二のＣＰＵからのダブルワードアクセス時における１回目のワードアクセスであるのか２回目のワードアクセスであるのかの情報が設定される第二の回数フラグと、をさらに備え、前記アクセスコントロール回路が行う第一のアクセス工程は、第一または第二のバッファにデータを格納した際に当該ＣＰＵに対応する第一または第二の回数フラグに２回目のワードアクセス要求であることを示す情報を設定する工程を含み、前記アクセスコントロール回路が行う第二のアクセス工程は、前記第一または第二のバッファに格納したデータを当該ＣＰＵに出力した場合、または前記第一または第二のバッファに格納したデータを前記共有メモリに格納した場合に、当該ＣＰＵに対応する第一または第二の回数フラグに１回目のワードアクセス要求であることを示す情報を設定する工程と、前記第一または第二のＣＰＵからのワードアクセス要求がリードであってかつ当該ＣＰＵに対応する第一または第二のダブルワードアクセス設定レジスタにダブルワードアクセスであることを示す情報が設定されている場合に、当該ＣＰＵに対応する第一または第二の回数フラグに１回目のワードアクセス要求であることを示す情報が設定されている期間は当該ＣＰＵとは異なるＣＰＵを待機状態とし、前記第一または第二のＣＰＵからのワードアクセス要求がライトであってかつ当該ＣＰＵに対応する第一または第二のダブルワードアクセス設定レジスタにダブルワードアクセスであることを示す情報が設定されている場合に、当該ＣＰＵに対応する第一または第二の回数フラグに２回目のワードアクセス要求であることを示す情報が設定されている期間は当該ＣＰＵとは異なるＣＰＵを待機状態とする工程と、を含むことを特徴とする。
【００３４】
【発明の実施の形態】
以下に添付図面を参照して、この発明にかかる情報処理装置およびそのアクセス制御方法の好適な実施の形態を詳細に説明する。
【００３５】
実施の形態１．
まず、この発明の実施の形態１について説明する。図１は、この発明の実施の形態１である情報処理装置の構成を示すブロック図である。図１において、この情報処理装置は、二つのＣＰＵ１，２と、バスコントロール回路３と、共有メモリ４とを有する。ＣＰＵ１，２とバスコントロール回路３との間と、共有メモリ４とバスコントロール回路３との間とは、それぞれ１６ビットデータバスＢ１，Ｂ２，Ｂ４によって接続され、ＣＰＵ１，２は、共有メモリ４に対して１６ビット（ワード）単位でアクセスが可能である。共有メモリ４は、ワード単位でデータを格納する。バスコントロール回路３は、３２ビットが連続して意味をもつダブルワードのアクセス制御も行い、各ＣＰＵ１，２に対するデータの整合性をとるようにしている。
【００３６】
バスコントロール回路３は、泣別れ防止回路１０を有し、泣別れ防止回路１０は、ＣＰＵ１，２による共有メモリ４へのアクセスがダブルワードアクセスか否かを設定するダブルワードアクセス設定レジスタ１１ａ，１１ｂ、ＣＰＵ１，２によるダブルワードアクセス時のアドレス指定が昇順か降順かを設定する昇順／降順設定レジスタ１２ａ，１２ｂ、ＣＰＵ１，２によるダブルワードアクセス時のアクセスが１回目か２回目かを判別する回数フラグ１３ａ，１３ｂ、ＣＰＵ１，２によるダブルワードアクセス時における１回分の１６ビットデータを一時格納するバッファ１４ａ，１４ｂ、および泣別れ防止制御回路２０を有する。
【００３７】
つぎに、図２〜図４を参照して、ＣＰＵ１による昇順のダブルワードリードアクセスについて泣別れ防止制御回路２０の動作処理を中心に説明する。図２は、ＣＰＵ１がダブルワードリードアクセスを行う場合の前処理を説明する図である。図２において、ＣＰＵ１は、ダブルワードリードアクセスを行う場合、まずＩ／Ｏライト（Ｓ１）によってダブルワードアクセス設定レジスタ１１ａの内容を「１」に設定し、ダブルワードアクセスを行うことを設定する。また、Ｉ／Ｏライト（Ｓ２）によって、昇順／降順設定レジスタ１２ａの内容を「１」に設定し、アドレス指定を昇順によって行うことを設定する。
【００３８】
図３において、その後、ＣＰＵ１は、ダブルワードリードアクセスのうちの１回目のアクセス要求、すなわち、アドレス「２ｎ」（ｎはバイト数）のデータ「Ａ」に対するリードアクセス要求が発行される（Ｓ１１）と、泣別れ防止制御回路２０は、アドレス「２ｎ」のデータ「Ａ」をリードし（Ｓ１２）、そのままＣＰＵ１に出力する（Ｓ１３）。ダブルワードアクセス設定レジスタ１１ａが「１」に設定されていることから、残りのワードアクセスがあることを認識し、昇順／降順設定レジスタ１２ａが「１」に設定されていることから、昇順であることを認識し、アドレス「２ｎ」に「２」を付加したアドレス「２ｎ＋２」に格納されたデータ「Ｂ」をリードする（Ｓ１４）。このリードされたデータ「Ｂ」は、バッファ１４ａに格納される（Ｓ１５）。また、この時点で、回数フラグ１３ａは、「０」から「１」に設定される（Ｓ１６）。なお、この間、ＣＰＵ２に対しては、ウェイト状態に設定される（Ｓ１７）、回数フラグが「１」に設定された時点で、ウェイト解除状態に移行する（Ｓ２２）。
【００３９】
図４において、その後、ＣＰＵ１は、アドレス「２ｎ＋２」のデータ「Ｂ」に対するリードアクセス要求が発行される（Ｓ１８）と、泣別れ防止回路２０は、バッファ１４ａに一時格納されたデータ「Ｂ」を読み出し（Ｓ１９）、ＣＰＵ１に、この読み出したデータ「Ｂ」を出力する（Ｓ２０）。さらに、このデータ「Ｂ」がＣＰＵ１に出力された時点で、回数フラグ１３ａは、「１」から「０」に設定される。また、ダブルワードアクセス設定レジスタ１１ａを「０」にリセットする。
【００４０】
なお、図２〜図４において、昇順のダブルワードリードアクセスについて説明したが、降順のダブルワードリードアクセスについても同様である。ただし、図２に示す前処理において、昇順／降順設定レジスタ１２ａは、「０」に設定され、降順であることが設定される。また、２回目のアドレス指定はアドレス「２ｎ＋２」ではなく、アドレス「２ｎ−２」となる。また、ＣＰＵ２によるダブルワードリードアクセスについても、ＣＰＵ１によるダブルワードリードアクセスと同様にして行うことができる。
【００４１】
つぎに、図５および図６を参照して、ＣＰＵ１による降順のダブルワードライトアクセスについて泣別れ防止制御回路２０の動作処理を中心に説明する。まず、ＣＰＵ１は、ダブルワードライトアクセスを行う場合、まずＩ／Ｏライト（Ｓ１）によってダブルワードアクセス設定レジスタ１１ａの内容を「１」に設定し、ダブルワードアクセスを行うことを設定する。また、Ｉ／Ｏライト（Ｓ２）によって、昇順／降順設定レジスタ１２ａの内容を「０」に設定し、アドレス指定を降順によって行うことを設定する。
【００４２】
図５において、その後、ＣＰＵ１は、ダブルワードライトアクセスのうちの１回目のアクセス要求、すなわち、アドレス「２ｎ」（ｎはバイト数）に対するデータ「Ｂ」に対するライトアクセス要求が発行される（Ｓ３１）と、泣別れ防止制御回路２０は、アドレス「２ｎ」のデータ「Ｂ」をバッファ１４ａに一時格納し（Ｓ３２）、回数フラグ１３ａを「０」から「１」に設定される（Ｓ３３）。なお、この場合、他のＣＰＵ２に対しては、そのままウェイト解除状態が維持される。すなわち、この状態では、泣別れ防止制御回路２０は、共有メモリ４に対してアクセスを行っておらず、ＣＰＵ２は、共有メモリ４に対してアクセスが可能となる。
【００４３】
図６において、その後、ＣＰＵ１は、アドレス「２ｎ」の降順であるアドレス「２ｎ−２」に対するデータ「Ａ」のライトアクセス要求が発行される（Ｓ３４１８）と、泣別れ防止回路２０は、ＣＰＵ２をウェイト状態に設定し（Ｓ３８）、バッファ１４ａに一時格納されたデータ「Ｂ」を読み出し（Ｓ３７）、アドレス「２ｎ」に対してデータ「Ｂ」をライトし（Ｓ３５）、その後、ライトアクセス要求したデータ「Ａ」をそのままアドレス「２ｎ−２」にライトする（Ｓ３６）。そして、回数フラグ１３ａを「１」から「０」に戻し（Ｓ３９）、ＣＰＵ２をウェイト解除状態に設定する。
【００４４】
なお、図５および図６において、降順のダブルワードライトアクセスについて説明したが、昇順のダブルワードライトアクセスについても同様である。ただし、図２に示す前処理において、昇順／降順設定レジスタ１２ａは、「１」に設定され、昇順であることが設定される。また、２回目のアドレス指定はアドレス「２ｎ−２」ではなく、アドレス「２ｎ＋２」となる。また、ＣＰＵ２によるダブルワードライトアクセスについても、ＣＰＵ１と同様にしてダブルワードライトアクセスを行うことができる。
【００４５】
ここで、あるブロック単位でＣＰＵ１がダブルワードでライトし、このライトしたメモリ領域をＣＰＵ２によるダブルワードでリードする場合について考える。すなわち、ＣＰＵ２が昇順でダブルワードライトを行ったときに、ＣＰＵ２が昇順でダブルワードリードを行うと、先頭のメモリ領域において、ＣＰＵ１がライトした後に、ＣＰＵ２がリードすれば最新のデータをリードすることができるが、ブロックの後半において、何らかの原因、たとえばＣＰＵ１とＣＰＵ２との処理速度の違いによってＣＰＵ１によるライトとＣＰＵ２によるリードとが逆転した場合、ＣＰＵ２がリードするデータが最新のものではなくなってしまう。
【００４６】
ＣＰＵ１が昇順でダブルワードライトを行ったときに、ＣＰＵ２が降順でメモリの最後尾からダブルワードリードを行うと、最後尾が最新になっていれば、他のメモリ領域も最新になっており、古いデータを使ってしまうことはなくなる。従来のアクセス制御方法では、昇順のアクセスしか行うことができなかったため、１回目：４ｎ→２回目：４ｎ＋２→３回目：４ｎ−４→４回目：４ｎ−２というようなアドレス指定しかできず、アドレス指定のソフトウェアが複雑なものとなっていたが、この実施の形態１によれば、１回目：２ｎ→２回目：２ｎ−２→３回目：２ｎ−４→４回目：２ｎ−６となり、単にアドレスをデクリメントする処理のみでアドレス指定を行うことができる。
【００４７】
この実施の形態１によれば、回数フラグ１３ａ，１３ｂにフラグ設定をもとに、ダブルワードアクセスの１回目のアクセスか２回目のアクセスかを判別することができるので、ダブルワードアクセスの場合にもワード（「２ｎ」）単位で共有メモリに格納あるいはアクセスを行うことができ、共有メモリの有効利用を図ることができる。また、昇順／降順設定レジスタ１２ａ，１２ｂを設けて、昇順／降順のダブルワードアクセスを可能とし、柔軟なダブルワードアクセスが実現され、しかもワード単位で単にアドレスをインクリメントあるいはデクリメントするのみでアドレス指定を行うことができ、アドレス指定にかかるソフトウェアの負荷を軽減することができる。
【００４８】
実施の形態２．
つぎに、この発明の実施の形態２について説明する。実施の形態１では、ワード（「２ｎ」）単位で昇順／降順のダブルワードアクセスを可能とし、しかもメモリの有効利用を図ることができるものであったが、この実施の形態２では、ダブルワードアクセスが競合した場合に交互にアクセスさせる調停を行って、ダブルワードアクセス時における一方のＣＰＵのウェイト時間が長くなることによる情報処理装置全体の処理速度の低下を防止するようにしている。
【００４９】
図７は、この発明の実施の形態２である情報処理装置の構成を示すブロック図である。図７において、この情報処理装置は、図１に示した情報処理装置と同様に、二つのＣＰＵ１，２と、バスコントロール回路３と、共有メモリ４とを有する。ＣＰＵ１，２とバスコントロール回路３との間と、共有メモリ４とバスコントロール回路３との間とは、それぞれ１６ビットデータバスＢ１，Ｂ２，Ｂ４によって接続され、ＣＰＵ１，２は、共有メモリ４に対して１６ビット（ワード）単位でアクセスが可能である。共有メモリ４は、ワード単位でデータを格納する。バスコントロール回路３は、３２ビットが連続して意味をもつダブルワードのアクセス制御も行い、各ＣＰＵ１，２に対するデータの整合性をとるようにしている。
【００５０】
バスコントロール回路３は、各ＣＰＵ１，２からのアクセス要求Ｓ５１，Ｓ５２が競合した場合に、ＣＰＵ１，２による共有メモリ４に対するアクセスを交互に行うようにする調停部３０と、クロック発生部４０とを有する。調停部３０のタイミング調停部３１は、ＣＰＵ１，２からのアクセス要求Ｓ５１，Ｓ５２をクロックＣＫをもとに交互に検出し、検出結果をメモリアクセス信号Ｓ５３，Ｓ５４としてオア回路３２に出力する。オア回路３２は、メモリアクセス信号Ｓ５３，Ｓ５４の論理和をとり、その論理和結果を共有メモリ４に対する最終的なメモリアクセス信号として出力し、これによって、ＣＰＵ１，２によるアクセスが競合した場合に、各ＣＰＵ１，２による共有メモリ４に対するアクセスを交互に行うようにしている。
【００５１】
なお、この実施の形態２は、実施の形態１と同様にダブルワードアクセス設定レジスタ１１ａ，１１ｂおよびバッファ１４ａ，１４ｂに対応するダブルワードアクセス設定レジスタおよびバッファを有している。この場合、バッファは、少なくとも１つのダブルワードを一時格納する領域を有する。また、この実施の形態２では、ダブルワードの共有メモリの格納開始あるいはアクセス開始のアドレスは、ワードアドレスであり、偶数「２ｍ」のワードアドレスから開始し、奇数「２ｍ＋１」のワードアドレスで終了するという固定的な制御が行われる。
【００５２】
ここで、図８に示すタイミングチャートを参照して、調停部３０によるアクセス調停処理について説明する。まず、クロック発生部４０が発生するクロックＣＫの立ち上がりは、ＣＰＵ１による動作タイミングとして用い、クロックＣＫの立ち下がりは、ＣＰＵ２による動作タイミングとして用いられる。なお、共有メモリ４に対するアクセスは、クロックＣＫの１周期内に終了するものとする。図８では、ＣＰＵ１からのアクセス要求Ｓ５１の後に、ＣＰＵ２からのアクセス要求Ｓ５２があった場合を示している。図８において、クロックＣＫの立ち上がりＰ１では、ＣＰＵ１によるアクセス要求Ｓ５１がなされており、アクセス要求Ｓ５１がオン状態となっている。また、ＣＰＵ２によるアクセス要求Ｓ５２がなされており、アクセス要求Ｓ５２がオン状態となっている。ここで、ＣＰＵ２によるメモリアクセス信号Ｓ５４はオフ状態であるため、ＣＰＵ１によるメモリアクセス信号Ｓ５３をオン状態にし、最終的にＣＰＵ１によるメモリアクセス信号Ｓ５３をメモリアクセス信号Ｓ５５として共有メモリ４に出力する。なお、上述したオン／オフ状態は、各信号Ｓ５１〜Ｓ５５のＨ／Ｌに対応する。
【００５３】
その後、クロックＣＫの立ち下がりＰ２では、ＣＰＵ２によるアクセス要求Ｓ５２がなされているが、ＣＰＵ１によるメモリアクセス信号Ｓ５３がオン状態でメモリアクセス中であるため、この時点Ｐ２では、ＣＰＵ２によるメモリアクセスを行うことができない。さらに、クロックＣＫの立ち上がりＰ３では、メモリアクセス信号Ｓ５３のオン状態が１周期分経過したので、メモリアクセス信号Ｓ５３をオフ状態にする。
【００５４】
その後、クロックＣＫの立ち下がりＰ４では、ＣＰＵ１，２によるアクセス要求Ｓ５１，Ｓ５２がともにオン状態であり、しかもＣＰＵ１によるメモリアクセス信号Ｓ５３がオフ状態であるので、ＣＰＵ２によるメモリアクセス信号Ｓ５４をオン状態にする。クロックＣＫの立ち上がりＰ５では、ＣＰＵ１，２によるアクセス要求Ｓ５１，Ｓ５２がともにオン状態であるが、ＣＰＵ２によるメモリアクセス信号Ｓ５３がオン状態であるため、ＣＰＵ１によるメモリアクセスを行うことができない。
【００５５】
その後、クロックＣＫの立ち下がりＰ６では、メモリアクセス信号Ｓ５４のオン状態が１周期分経過したので、メモリアクセス信号Ｓ５４をオフ状態にする。クロックＣＫの立ち下がりＰ７では、ＣＰＵ１，２によるアクセス要求Ｓ５１，Ｓ５２がともにオン状態であり、しかもＣＰＵ２によるメモリアクセス信号Ｓ５４がオフ状態であるので、ＣＰＵ１によるメモリアクセス信号Ｓ５３をオン状態にする。
【００５６】
その後、クロックＣＫの立ち下がりＰ８では、ＣＰＵ１，２によるアクセス要求Ｓ５１，Ｓ５２がともにオン状態であるが、ＣＰＵ１によるメモリアクセス信号Ｓ５３がオン状態であるため、ＣＰＵ２によるメモリアクセスは行うことができない。さらに、クロックＣＫの立ち上がりＰ９では、ＣＰＵ１による２回目のメモリアクセスが終了し、これにより、ＣＰＵ１のアクセス要求Ｓ５１をオフ状態にする。
【００５７】
その後、クロックＣＫの立ち下がりＰ１０では、ＣＰＵ２によるアクセス要求Ｓ５２がオン状態であるが、ＣＰＵ１によるアクセス要求Ｓ５１およびメモリアクセス信号Ｓ５２がともにオフ状態であるため、ＣＰＵ２によるメモリアクセス信号Ｓ５４をオン状態にする。その後、クロックＣＫの立ち下がりＰ１１では、ＣＰＵ２によるメモリアクセスが終了し、これにより、ＣＰＵ２によるアクセス要求Ｓ２をオフ状態にする。
【００５８】
このように調停部３０は、ＣＰＵ１，２からのメモリアクセスが競合した場合、クロックＣＫの立ち上がりおよび立ち下がりをそれぞれ各ＣＰＵ１，２の動作タイミングに設定して、交互にメモリアクセスを行わせているので、ＣＰＵ１あるいはＣＰＵ２が長いウェイト時間をとることによる情報処理装置全体の処理速度低下を防止することができる。
【００５９】
ここで、ＣＰＵ１，２による共有メモリ４へのアクセスが競合する場合に、データの整合性を維持しつつ、アクセスが交互に行われ、ウェイト時間が各ＣＰＵ１，２に分散される具体例を説明する。図９〜図１２は、ＣＰＵ２によるダブルワードリードアクセスが先に行われ、このダブルワードリードアクセスとＣＰＵ１によるダブルワードライトアクセスとが競合する場合の処理を示す図である。
【００６０】
図９において、共有メモリ４のアドレス「２ｍ」，「２ｍ＋１」には、それぞれデータ「Ａ」，「Ｂ」が格納されている。ＣＰＵ２は、このデータ「Ａ」，「Ｂ」をリードするアクセスを行い、ＣＰＵ１は、アドレス「２ｍ」，「２ｍ＋１」にデータ「Ｃ」，「Ｄ」をライトするアクセスを行う。まず、ＣＰＵ２は、共有メモリ４のアドレス「２ｍ」からデータ「Ａ」をリードする。その後、図１０において、ＣＰＵ１は、共有メモリ４のアドレス「２ｍ」にデータ「Ｃ」をライトする。その後、図１１において、ＣＰＵ２は、アドレス「２ｍ＋１」のデータ「Ｂ」をリードする。その後、図１２において、ＣＰＵ１は、アドレス「２ｍ＋１」にデータ「Ｄ」をライトする。このようにして、ＣＰＵ２は、データ「Ａ」，「Ｂ」をリードすることができ、ＣＰＵ１は、データ「Ｃ」，「Ｄ」をライトすることができ、最終的にデータの整合性は保たれたことになる。
【００６１】
同様にして、図１３〜１６は、ＣＰＵ１によるダブルワードライトアクセスが先に行われ、このダブルワードライトアクセスとＣＰＵ２によるダブルリードライトアクセスとが競合する場合の処理を示す図である。共有メモリ４のアドレス「２ｍ」，「２ｍ＋１」には、それぞれデータ「Ａ」，「Ｂ」が格納されており、ＣＰＵ１は、このアドレス「２ｍ」，「２ｍ＋１」にデータ「Ｃ」，「Ｄ」をライトするアクセスを行い、ＣＰＵ２は、アドレス「２ｍ」，「２ｍ＋１」のデータをダブルワードリードする。図１３において、まず、ＣＰＵ１は、共有メモリ４のアドレス「２ｍ」にデータ「Ｃ」をライトする。その後、図１４において、ＣＰＵ２は、アドレス「２ｍ」にライトされたデータ「Ｃ」を読み込む。その後、図１５において、ＣＰＵ１は、共有メモリ４のアドレス「２ｍ＋１」にデータ「Ｄ」をライトする。その後、図１６において、ＣＰＵ２は、アドレス「２ｍ＋１」にライトされたデータ「Ｄ」をリードする。このようにして、ＣＰＵ１は、データ「Ｃ」，「Ｄ」をライトすることができ、ＣＰＵ２は、アドレス「２ｍ」，「２ｍ＋１」における最新のデータであるデータ「Ｃ」，「Ｄ」をリードすることができ、最終的にデータの整合性は保たれたことになる。
【００６２】
同様にして、図１７〜図２０は、ＣＰＵ１によるダブルワードライトアクセスが先に行われ、このダブルワードライトアクセスとＣＰＵ２によるダブルワードライトアクセスとが競合する場合の処理を示す図である。共有メモリ４のアドレス「２ｍ」，「２ｍ＋１」には、それぞれデータ「Ａ」，「Ｂ」が格納されており、ＣＰＵ１は、このアドレス「２ｍ」，「２ｍ＋１」にデータ「Ｃ」，「Ｄ」をライトするアクセスを行い、ＣＰＵ２は、このアドレス「２ｍ」，「２ｍ＋１」にデータ「Ｅ」，「Ｄ」をライトするアクセスを行う。図１７において、まず、ＣＰＵ１は、共有メモリ４のアドレス「２ｍ」にデータ「Ｃ」をライトする。その後、図１８において、ＣＰＵ２は、アドレス「２ｍ」にデータ「Ｅ」をライトする。その後、図１９において、ＣＰＵ１は、アドレス「２ｍ＋１」にデータ「Ｄ」をライトする。その後、図２０において、ＣＰＵ２は、アドレス「２ｍ＋１」にデータ「Ｆ」をライトする。このようにして、ＣＰＵ１は、データ「Ｃ」，「Ｄ」をライトすることができ、ＣＰＵ２は、データ「Ｅ」，「Ｆ」をライトし、最終的に共有メモリ４には、データ「Ｅ」，「Ｆ」がライトされ、データの整合性は保たれたことになる。なお、図９〜図２０に示した例を実施の形態１に当てはめた場合、各ＣＰＵ１，２によるダブルワードアクセスのワード単位のアクセスは、連続して行われることになる。
【００６３】
この実施の形態２によれば、各ＣＰＵ１，２によるダブルワードアクセスが競合した場合でも、調停部３０が各ＣＰＵ１，２による共有メモリ４に対するワード単位のアクセスを交互に行わせるようにしているので、一方のＣＰＵの待ち時間が長くなることがなく、情報処理装置全体の処理速度を低下を防ぐことができる。
【００６４】
なお、上述した実施の形態１，２では、共有メモリ４がワード単位でデータを格納し、ＣＰＵ１，２とバスコントロール回路３との間のデータバスおよび共有メモリ４とバスコントロール回路３とのデータバスは、１６ビット幅でワード単位でデータ転送することができる場合におけるＣＰＵ１，２による共有メモリ４に対するダブルワードアクセスを行う情報処理装置をそれぞれ一実施形態として述べたが、これに限らず、１６ビット以外のデータバスのビット幅の２倍のビット幅で意味をもつデータをアクセスする場合にも適用できるのは、明らかである。
【００６５】
【発明の効果】
以上説明したように、この発明によれば、前記バスコントロール回路のアクセスコントロール回路は、ダブルワードアクセス設定レジスタにダブルワードアクセスを行う設定がなされた場合、昇順／降順設定レジスタによって設定された昇順あるいは降順で共有メモリに対するアクセスをワード単位で行うとともに、前記共有メモリからダブルワードを読み出す場合、該ダブルワードを前記共有メモリからワード単位で連続して読み出してバッファに格納し、前記共有メモリにダブルワードを書き込む場合、該ダブルワードを前記バッファに格納し、その後該ダブルワードの残りワードのアクセス要求時に該バッファに格納されたダブルワードを連続して前記共有メモリに書き込む制御を行うようにしているので、共有メモリ上の任意のワードアドレスからダブルワードアクセスすることができ、共有メモリのメモリ領域を有効利用することができるという効果を奏する。また、昇順のみならず降順にワード単位でアクセスすることができるので、ワードアドレスのインクリメントあるいはデクリメントのみという単純なアドレス指定処理によって柔軟なアドレス指定を行うことができ、ダブルワードアドレス指定にかかる負荷が軽減されるという効果を奏する。
【００６６】
つぎの発明によれば、回数フラグが、ダブルワードアクセス時における最初のワードアクセスか残りのワードアクセスかを示すフラグを設定し、アクセスコントロール回路が、前記回数フラグに設定されたフラグをもとに共有メモリに対するダブルワードアクセス時における他のＣＰＵの待機あるいは待機解除を制御するようにしているので、ダブルワードアクセスが競合した場合でも確実にデータの整合性を保持することができるという効果を奏する。
【００６７】
つぎの発明によれば、バスコントロール回路のアクセス制御手段が、共有メモリに対するダブルワードの格納順序およびアクセス順序を偶数ワードアドレスから開始させるとともに、ダブルワードのデータを前記バッファに一時格納し、第一のＣＰＵおよび第二のＣＰＵによる前記共有メモリに対する前記ダブルワードのアクセス要求が競合した場合、所定クロックに対応させて前記第一のＣＰＵおよび前記第二のＣＰＵに対するアクセス権をワード単位で交互に割り当て、ダブルワードアクセスが競合した場合でも確実にデータの整合性を保持できるようにしているので、ダブルワードアクセスが競合した場合であっても、各ＣＰＵは、常に交互にアクセス権が与えられるため、一方のＣＰＵの待機時間が極端に長くなることがなく、各ＣＰＵに待機時間が分散され、情報処理装置全体の処理速度を低下させないという効果を奏する。
【００６８】
つぎの発明によれば、アクセス制御手段が、所定クロックの前縁および後縁を第一のＣＰＵおよび第二のＣＰＵに割り当てて制御するようにしているので、アクセス権の交互割り当てを簡易に行うことができるという効果を奏する。
【００６９】
つぎの発明によれば、昇順／降順設定工程によって、第一のＣＰＵおよび第二のＣＰＵが共有メモリに対してダブルワードアクセスを行う場合にダブルワードアクセスを昇順で行うか降順で行うかを設定し、アクセス工程によって、前記昇順／降順設定レジスタによって設定された昇順あるいは降順で前記共有メモリに対するアクセスをワード単位で行うようにしているので、共有メモリ上の任意のワードアドレスからダブルワードアクセスすることができ、共有メモリのメモリ領域を有効利用することができるという効果を奏する。また、昇順のみならず降順にワード単位でアクセスすることができるので、ワードアドレスのインクリメントあるいはデクリメントのみという単純なアドレス指定処理によって柔軟なアドレス指定を行うことができ、ダブルワードアドレス指定にかかる負荷が軽減されるという効果を奏する。
【００７０】
つぎの発明によれば、前記アクセス工程は、共有メモリからダブルワードを読み出す場合、該ダブルワードを前記共有メモリからワード単位で連続して読み出してバッファに格納し、前記共有メモリにダブルワードを書き込む場合、該ダブルワードをバッファに格納し、その後該ダブルワードの残りワードのアクセス要求時に該バッファに格納されたダブルワードを連続して前記共有メモリに書き込む制御を行うようにしているので、ダブルワードアクセスが競合した場合に各ＣＰＵの待ち時間を短縮することができるという効果を奏する。
【００７１】
つぎの発明によれば、回数フラグ設定工程が、ダブルワードアクセス時における最初のワードアクセスか残りのワードアクセスかを示すフラグを設定し、前記アクセス工程が、前記回数フラグに設定されたフラグをもとに前記共有メモリに対するダブルワードアクセス時における他のＣＰＵの待機あるいは待機解除を制御するようにしているので、ダブルワードアクセスが競合した場合でも確実にデータの整合性を保持することができるという効果を奏する。
【００７２】
つぎの発明によれば、設定工程によって、共有メモリに対するダブルワードの格納順序およびアクセス順序を偶数ワードアドレスから開始させる設定を予め行い、格納工程によって、前記共有メモリに対するダブルワードのデータをバッファに一時格納し、アクセス制御工程によって、第一のＣＰＵおよび第二のＣＰＵによる前記共有メモリに対する前記ダブルワードのアクセス要求が競合した場合、所定クロックに対応させて前記第一のＣＰＵおよび前記第二のＣＰＵに対するアクセス権をワード単位で交互に割り当てるようにしているので、ダブルワードアクセスが競合した場合であっても、各ＣＰＵは、常に交互にアクセス権が与えられるため、一方のＣＰＵの待機時間が極端に長くなることがなく、各ＣＰＵに待機時間が分散され、情報処理装置全体の処理速度を低下させないという効果を奏する。
【００７３】
つぎの発明によれば、前記アクセス制御工程が、所定クロックの前縁および後縁を第一のＣＰＵおよび第二のＣＰＵに割り当てて制御するようにしているので、アクセス権の交互割り当てを簡易に行うことができるという効果を奏する。
【図面の簡単な説明】
【図１】  この発明の実施の形態１である情報処理装置の構成を示すブロック図である。
【図２】  図１に示したＣＰＵ１がダブルワードリードアクセスを行う場合の前処理を説明する図である。
【図３】  図１に示したＣＰＵ１による昇順のダブルワードリードアクセス時における泣別れ防止制御回路２０の動作処理を説明する図である。
【図４】  図１に示したＣＰＵ１による昇順のダブルワードリードアクセス時における泣別れ防止制御回路２０の動作処理を説明する図である。
【図５】  図１に示したＣＰＵ１による降順のダブルワードライトアクセス時における泣別れ防止制御回路２０の動作処理を説明する図である。
【図６】  図１に示したＣＰＵ１による降順のダブルワードライトアクセス時における泣別れ防止制御回路２０の動作処理を説明する図である。
【図７】  この発明の実施の形態２である情報処理装置の構成を示すブロック図である。
【図８】  図７に示した調停部３０の動作処理を示すタイミングチャートである。
【図９】  図７に示したＣＰＵ２によるダブルワードリードアクセスが先に行われ、このダブルワードリードアクセスとＣＰＵ１によるダブルワードライトアクセスとが競合する場合の処理を示す図である。
【図１０】  図７に示したＣＰＵ２によるダブルワードリードアクセスが先に行われ、このダブルワードリードアクセスとＣＰＵ１によるダブルワードライトアクセスとが競合する場合の処理を示す図である。
【図１１】  図７に示したＣＰＵ２によるダブルワードリードアクセスが先に行われ、このダブルワードリードアクセスとＣＰＵ１によるダブルワードライトアクセスとが競合する場合の処理を示す図である。
【図１２】  図７に示したＣＰＵ２によるダブルワードリードアクセスが先に行われ、このダブルワードリードアクセスとＣＰＵ１によるダブルワードライトアクセスとが競合する場合の処理を示す図である。
【図１３】  図７に示したＣＰＵ１によるダブルワードライトアクセスが先に行われ、このダブルワードライトアクセスとＣＰＵ２によるダブルリードライトアクセスとが競合する場合の処理を示す図である。
【図１４】  図７に示したＣＰＵ１によるダブルワードライトアクセスが先に行われ、このダブルワードライトアクセスとＣＰＵ２によるダブルリードライトアクセスとが競合する場合の処理を示す図である。
【図１５】  図７に示したＣＰＵ１によるダブルワードライトアクセスが先に行われ、このダブルワードライトアクセスとＣＰＵ２によるダブルリードライトアクセスとが競合する場合の処理を示す図である。
【図１６】  図７に示したＣＰＵ１によるダブルワードライトアクセスが先に行われ、このダブルワードライトアクセスとＣＰＵ２によるダブルリードライトアクセスとが競合する場合の処理を示す図である。
【図１７】  図７に示したＣＰＵ１によるダブルワードライトアクセスが先に行われ、このダブルワードライトアクセスとＣＰＵ２によるダブルワードライトアクセスとが競合する場合の処理を示す図である。
【図１８】  図７に示したＣＰＵ１によるダブルワードライトアクセスが先に行われ、このダブルワードライトアクセスとＣＰＵ２によるダブルワードライトアクセスとが競合する場合の処理を示す図である。
【図１９】  図７に示したＣＰＵ１によるダブルワードライトアクセスが先に行われ、このダブルワードライトアクセスとＣＰＵ２によるダブルワードライトアクセスとが競合する場合の処理を示す図である。
【図２０】  図７に示したＣＰＵ１によるダブルワードライトアクセスが先に行われ、このダブルワードライトアクセスとＣＰＵ２によるダブルワードライトアクセスとが競合する場合の処理を示す図である。
【図２１】  二つのＣＰＵがバスコントロール回路を介して一つの共有メモリを共有する情報処理装置の概要構成を示す図である。
【図２２】  データの泣別れが生じる場合を説明する図である。
【図２３】  従来の情報処理装置の構成を示すブロック図である。
【図２４】  共有メモリ１０４からダブルワードをリードする際の泣別れ防止回路１１０の動作を示す図である。
【図２５】  共有メモリ１０４からダブルワードをリードする際の泣別れ防止回路１１０の動作を示す図である。
【図２６】  共有メモリ１０４にダブルワードをライトする際の泣別れ防止回路１１０の動作を示す図である。
【図２７】  共有メモリ１０４にダブルワードをライトする際の泣別れ防止回路１１０の動作を示す図である。
【符号の説明】
１，２  ＣＰＵ、３  バスコントロール回路、４  共有メモリ、１０  泣別れ防止回路、１１ａ，１１ｂ  ダブルワードアクセス設定レジスタ、１２ａ，１２ｂ  昇順／降順設定レジスタ、１３ａ，１３ｂ  回数フラグ、１４ａ，１４ｂ  バッファ、２０  泣別れ防止制御回路、３０  調停部、３１  タイミング調停部、３２  オア回路、４０  クロック発生部、Ｂ１，Ｂ２，Ｂ４  １６ビットデータバス。
【図１】
0003995370.tif 000002
【図２】
0003995370.tif 000003
【図３】
0003995370.tif 000004
【図４】
0003995370.tif 000005
【図５】
0003995370.tif 000006
【図６】
0003995370.tif 000007
【図７】
0003995370.tif 000008
【図８】
0003995370.tif 000009
【図９】
0003995370.tif 000010
【図１０】
0003995370.tif 000011
【図１１】
0003995370.tif 000012
【図１２】
0003995370.tif 000013
【図１３】
0003995370.tif 000014
【図１４】
0003995370.tif 000015
【図１５】
0003995370.tif 000016
【図１６】
0003995370.tif 000017
【図１７】
0003995370.tif 000018
【図１８】
0003995370.tif 000019
【図１９】
0003995370.tif 000020
【図２０】
0003995370.tif 000021
【図２１】
0003995370.tif 000022
【図２２】
0003995370.tif 000023
【図２３】
0003995370.tif 000024
【図２４】
0003995370.tif 000025
【図２５】
0003995370.tif 000026
【図２６】
0003995370.tif 000027
【図２７】
0003995370.tif 000028