(57)【要約】【課題】必要とするリソースを最小限にしながら共有リソースへのアクセス管理及び共有リソースの物理アドレス空間の増大にも対応できるデータプロセッサを提供する。【解決手段】データプロセッサ（１、２、３）は、プログラムを実行する中央処理装置（１０１）と当該中央処理装置のアドレス空間をアクセスするためのアドレス情報を出力する内部モジュール（１０５、１０２）とを有し、前記内部モジュールはメモリ保護に利用される識別子を前記アドレス情報に付加しない第１の動作モードと、前記識別子を前記アドレス情報に付加する第２の動作モードを有する。【選択図】図１
2011180969.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを実行する中央処理装置と、
前記中央処理装置のアドレス空間上のデータの一部を保持する連想メモリと、
メモリ保護に利用される識別子を保持する第１レジスタと、を有するデータプロセッサであって、
前記連想メモリは、タグを格納するタグ部と、データを格納するデータ部とから構成される複数の連想エントリと、前記中央処理装置のアクセスに際し、前記中央処理装置から供給される情報とインデックスされたタグとを比較する比較部と、を有し、
前記連想メモリは、前記供給される情報をアドレス情報とする第１の動作モードと、前記供給される情報をアドレス情報及び前記識別子とする第２の動作モードとを有する、データプロセッサ。
【請求項２】
前記連想メモリの前記動作モードを決定するための情報が保持される第２レジスタを更に有し、
前記タグ部は、アドレス情報を格納するアドレス部と、拡張部とを有し、
前記連想メモリは、前記第２レジスタの値に基づいて前記動作モードを決定し、
前記拡張部は、前記第１の動作モードではアドレス情報が格納され、前記第２の動作モードでは前記識別子が格納される、請求項１記載のデータプロセッサ。
【請求項３】
前記第１の動作モードにおいて、前記比較部は、前記供給されたアドレス情報と当該アドレス情報に対応する前記連想エントリにおける前記アドレス部及び前記拡張部に保持されたアドレス情報とを比較し、一致する場合には、前記連想メモリは当該連想エントリにおける前記データ部のデータを出力し、一致しない場合には、前記供給されたアドレス情報とそれに対応するデータとを、前記対応する前記連想エントリに格納する、請求項２記載のデータプロセッサ。
【請求項４】
前記第２の動作モードにおいて、前記比較部は、前記供給されたアドレス情報と当該アドレス情報に対応する前記連想エントリにおける前記アドレス部に保持された情報とを比較するとともに、前記供給された前記識別子と当該連想エントリにおける前記拡張部に保持された情報とを比較し、ともに一致する場合には、前記連想メモリは、当該連想エントリにおける前記データ部のデータを出力し、一方又は双方が一致しない場合には、前記供給されたアドレス情報とそれに対応するデータとを、前記対応する前記連想エントリに格納する、請求項２記載のデータプロセッサ。
【請求項５】
前記メモリ保護に利用される識別子は、前記プログラムの実行を管理する上位ソフトウェアを識別するためのドメイン識別子である、請求項２記載のデータプロセッサ。
【請求項６】
前記中央処理装置と、前記連想メモリと、前記第１レジスタと、前記第２レジスタと、を一組とするデータ処理部を複数組有し、
前記第２レジスタは、前記データ処理部毎に設定可能とされる、請求項２記載のデータプロセッサ。
【請求項７】
夫々の前記データ処理部によって共通利用されるバスを更に有し、
前記データ処理部は、前記中央処理装置のアクセス要求に応じて、前記中央処理装置が供給するアドレス情報を出力するための制御を行うアクセス制御部と、アドレス情報を補完するための情報が格納される第３レジスタとを有し、
前記バスは、複数の前記データ処理部のうち、最大となるアドレス空間に応じたバス幅以上のバス幅を有し、
前記アクセス制御部は、前記中央処理装置がアクセス要求を行う際、前記中央処理装置が供給するアドレス情報に基づくアドレス幅が前記バス幅に対して小さいと判断した場合には、前記第３レジスタの値に基づいて、当該アドレス情報に所定の情報を補完した新たなアドレス情報を前記バスに出力する、請求項６記載のデータプロセッサ。
【請求項８】
前記アクセス制御部は更に、前記中央処理装置のアクセス要求に応じて、前記第１レジスタの値を出力する制御を行う、請求項７記載のデータプロセッサ。
【請求項９】
前記第３レジスタは更に、前記第１レジスタの値を補完するための情報が格納され、
前記バスは更に、複数の前記データ処理部のうち、前記メモリ保護に利用される識別子の最大となるデータ量に応じたバス幅以上のバス幅を有し、
前記アクセス制御部は、前記中央処理装置がアクセス要求を行う際、前記第１レジスタの値が前記バス幅に対して小さいと判断した場合には、前記第３レジスタの値に基づいて、当該第１レジスタの値に所定の情報を補完した新たな情報を前記バスに出力する、請求項８記載のデータプロセッサ。
【請求項１０】
前記アクセス制御部は、前記第２レジスタの値を参照して補完すべきビット数を決定する、請求項７又は９記載のデータプロセッサ。
【請求項１１】
プログラムを実行する中央処理装置と、
前記中央処理装置のアドレス空間上のデータの一部を保持する連想メモリと、を有するデータプロセッサであって、
前記連想メモリは、タグを格納するタグ部と、データを格納するデータ部とから構成される複数の連想エントリと、前記中央処理装置のアクセスに際し、前記中央処理装置から供給される情報とインデックスされたタグとを比較する比較部と、を有し、
前記連想メモリは、前記供給される情報をアドレス情報とする第１の動作モードと、前記供給される情報をアドレス情報及び誤り訂正のための情報とする第２の動作モードと、を有する、データプロセッサ。
【請求項１２】
前記連想メモリの前記動作モードを決定するための情報が保持される第１レジスタを更に有し、
前記タグ部は、アドレス情報を格納するアドレス部と、拡張部とを有し、
前記連想メモリは、前記第１レジスタの値に基づいて前記動作モードを決定し、
前記拡張部は、前記第１の動作モードではアドレス情報が格納され、前記第２の動作モードでは前記誤り訂正のための情報が格納される、請求項１１記載のデータプロセッサ。
【請求項１３】
前記連想メモリは、キャッシュメモリである、請求項２又は１２記載のデータプロセッサ。
【請求項１４】
前記連想メモリは、前記中央処理装置の仮想アドレス空間における仮想アドレスを物理アドレスへアドレス変換するためのアドレス変換対を記憶するアドレス変換バッファである、請求項２又は１２記載のデータプロセッサ。
【請求項１５】
プログラムを実行する中央処理装置と、
前記中央処理装置によるデータ処理に基づいて、前記中央処理装置のアドレス空間をアクセスするためのアドレス情報を出力する内部モジュールと、
メモリ保護に利用される識別子を保持する第１レジスタと、を有するデータプロセッサであって、
前記内部モジュールは、前記アドレス情報に前記識別子を付加しない第１の動作モードと、前記アドレス情報に前記識別子を付加する第２の動作モードとを有する、データプロセッサ。
【請求項１６】
前記動作モードを決定するための情報が保持される第２レジスタを更に有し、
前記内部モジュールは、前記第２レジスタの値に基づいて前記動作モードを決定し、
前記メモリ保護に利用される識別子は、前記プログラムの実行を管理する上位ソフトウェアを識別するためのドメイン識別子である、請求項１５記載のデータプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データプロセッサに関し、特に、中央処理装置のアドレス空間をアクセスするためのアドレス情報を出力する機能を備えるデータプロセッサに適用して、有効な技術に関する。
【背景技術】
【０００２】
近年、半導体デバイスの高集積化により、単一の中央演算処理装置を搭載したマイクロプロセッサを、複数搭載したマイクロプロセッサシステムが集積化されている。
【０００３】
前記マイクロプロセッサシステムにおいては、主にＬＳＩの面積に対する端子数の制約によって、各中央演算処理装置が利用する主記憶装置や入出力装置などのリソースについては、システム内で共有化されることが一般的である。このようにリソースを複数の中央演算処理装置が供用する場合、例えば、制御ソフトウェアのバグ等による不正アクセスが発生し、リソースである主記憶装置のメモリ部の衝突が起こることによりデータが正しく処理されない等の問題が発生する可能性がある。そこで、リソースを供用する場合には、不正アクセスを回避するためのリソースのアクセス管理が重要になる。
【０００４】
複数の中央演算処理装置を搭載したマイクロプロセッサシステム上でプログラムを動作させる場合には、それに対応したオペレーティングシステムが必要となる。複数の中央演算処理装置を搭載したマイクロプロセッサシステムに対応するオペレーティングシステムの方式は、大きく２つに分類される。
【０００５】
一つは、単一のオペレーティングシステムが複数の中央演算処理装置、単一の主記憶装置、及び入出力装置の全てを管理する対称型マルチプロセッサ方式であり、もう一つは、複数の中央演算処理装置にそれぞれオペレーティングシステムを搭載する非対称型マルチプロセッサ方式である。特に組み込み機器向けのマイクロプロセッサにおいては、非対称型マルチプロセッサ方式が用いられることが多い。その理由としては、ソフトウェア資産の移行が容易であることと、近年の組み込みシステムにおいて非対称のマルチプロセッサによれば特性の異なるサブシステムを容易に取り扱うことが可能となることが挙げられる。非対称型マルチプロセッサ方式を適用したマイクロプロセッサシステムの一例として、自動車用のマイクロプロセッサシステムがある。当該マイクロプロセッサシステムでは、カーナビゲーションシステムのように比較的大規模なデータを演算する情報系の処理と、ブレーキ制御のようにデータ規模は小さいがより信頼性の高い処理が要求される制御系の処理とを連携させ、１つのシステムとして共存・融合させている。近年、このようなマルチプロセッサの需要は急速に拡大している。
【０００６】
非対称型マルチプロセッサ方式における共有リソース管理の従来の方法として、例えば、特許文献１に記載がある。特許文献１では、オペレーティングシステムとその制御下で動作するユーザプログラムを仮想マシンとして扱い、仮想マシンを識別するための仮想マシンＩＤ（ＶＭＩＤ）を設定する。そして、物理的に実装されたメモリマネージメントユニット（ＭＭＵ）やキャッシュメモリのエントリ毎にＶＭＩＤを記憶し、それらがどの保護ドメインに属するかを物理アドレス管理モジュール（ＰＡＭ）で判定することにより、共有リソースへのアクセスを管理する方法が示されている。
【０００７】
一方、近年のマイクロプロセッサシステムによる応用システムにおいて、動画像データ、又は音声データ等を用いた認識システム等で用いるデータベース等、より大規模なデータを扱うようになってきている。また、半導体デバイスの微細化とメモリ技術の向上により、安価なメモリデバイスが普及したことから、システムに搭載する主記憶容量は急速に増加してきている。特に、前述した非対称型のマルチプロセッサでは、供用される代表的なリソースである主記憶装置に、全てのオペレーティングシステムとユーザプログラムのコード、及び処理結果等のデータを記憶することが必要となるから、必然的に要求される主記憶容量の大幅な増加が求められる。これにより、マイクロプロセッサシステムにおける中央演算処理装置が取り扱うことが可能な物理アドレス空間の増加が必要となる。そこで、一般的に、主記憶を配置する物理アドレス空間を増大させるために、アドレス幅のより広い物理アドレスバスを設け、付随する物理アドレスを記憶するキャッシュのタグアレイや、ＭＭＵに格納するページ番号の幅を増加させる解決方法が採られている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００８−９７１７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
前述した異なるオペレーティングシステムの管理下で共有リソースを用いたプログラムの実行が可能な複数の中央演算処理装置を搭載したマイクロプロセッサシステムでは、以下に示す問題がある。
【００１０】
第１の問題は、マイクロプロセッサシステムにおける共有リソース管理に伴うハードウェア規模の増大の問題である。例えば、特許文献１の方法により共有リソースの管理を行う場合、複数のオペレーティングシステムを区別するために前述のようにＶＭＩＤを用いる。そして、ＶＭＩＤを記憶するためのメモリ部を、キャッシュメモリ等の連想メモリに設ける必要がある。例えばマイクロプロセッサシステム上に２００個の保護ドメインが存在した場合には８ビットのＶＭＩＤが必要となるが、この８ビットの付加情報を記憶するためのメモリ部をマイクロプロセッサの連想メモリの全エントリに持たなければならない。汎用的に用いられるマイクロプロセッサシステムの場合には応用システムが異なるため、マイクロプロセッサのハードウェアが予め備えておくリソースを予め決めることは困難である。そこで非対称な構成で利用されるマルチプロセッサシステムでは、夫々のマイクロプロセッサの連想メモリが前記ＶＭＩＤを記憶するためのメモリ部は必然的に余裕を持って大きめに設計されることになる。例えば２つのマイクロプロセッサを搭載したマルチプロセッサシステムにおいて、１個の保護ドメインを扱う第１のプロセッサと１６個の保護ドメインを扱う第２のプロセッサが存在する場合、第１のプロセッサには前記ＶＭＩＤは１ビットあれば良いが、第２のプロセッサは４ビットの前記ＶＭＩＤが必要である。このような非対称な構成で利用されるマルチプロセッサシステムの場合、夫々のマイクロプロセッサが最大の保護ドメイン（４ビット）が扱えるように連想メモリが設計され、結果的に過大な仕様を定義することになる。このことは、特に低コストであることを重視する組込みプロセッサにとっては問題となる。
【００１１】
第２の問題は、主記憶装置の物理アドレス空間の増大に伴うハードウェア規模の増大の問題である。前述のように主記憶の物理アドレス空間が増大すればそれに比例してＭＭＵやキャッシュ等の連想メモリに記憶する物理アドレスのビット数を増やす必要があり、システム全体としてハードウェア規模が増大する。しかしながら、大規模な物理アドレス空間が要求される非対称型のマルチプロセッサシステムであっても、単一のオペレーティングシステムとその制御下にあるアプリケーションで見た場合には、それぞれが要求するメモリ容量は比較的小規模であり、またオペレーティングシステム毎にばらつきがある。例えば、一つのオペレーティングシステム及びその制御下で動作するサブシステムは４ギガバイトもの大きなメモリ空間を要求するが、別のサブシステムは小さなメモリ空間しか要求しない場合がある。このような場合、マルチプロセッサシステム全体としては４ギガバイトを超えるメモリ空間が必要となるが、個々の保護ドメインに属するサブシステムは４ギガバイト以下のメモリ空間で足りることが多い。しかし、複数のオペレーティングシステムを用いるマイクロプロセッサシステムにおいては、第１の問題と同様に、応用システムが異なる場合にマイクロプロセッサのハードウェアが備えるべきリソースを予め決めることは困難であるため、必然的に余裕を持って大きめに設計されることになる。このため、マイクロプロセッサは本来必要としない過大な仕様を備えることになり、第１の問題と同様に、特に組込みプロセッサの分野においてはコストの問題となり得る。
【００１２】
本発明の目的は、必要とするリソースを最小限にしながら、共有リソースへのアクセス管理及び共有リソースの物理アドレス空間の増大にも対応できる、データプロセッサを提供することにある。
【００１３】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１４】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１５】
すなわち、プログラムを実行する中央処理装置と当該中央処理装置のアドレス空間をアクセスするためのアドレス情報を出力する内部モジュールとを有するデータプロセッサにおいて、前記内部モジュールはメモリ保護に利用される識別子を前記アドレス情報に付加しない第１の動作モードと、前記識別子を前記アドレス情報に付加する第２の動作モードを有する。
【発明の効果】
【００１６】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００１７】
すなわち、データプロセッサは、必要とするリソースを最小限にしながら、共有リソースへのアクセス管理及び共有リソースの物理アドレス空間の増大にも対応できる。
【図面の簡単な説明】
【００１８】
【図１】図１は、実施の形態１に係るデータプロセッサのブロック図である。
【図２】図２は、ＣＰＵ１０１が実行するプログラムの動作モードの説明図である。
【図３】図３は、実施の形態１に係るデータプロセッサの詳細なブロック図である。
【図４】図４は、ＤＭＣＲ１０４の設定値と拡張データの対応関係の一例である。
【図５】図５は、比較部１０２５のブロック図の一例である。
【図６】図６は、ＤＭＣＲ１０４の設定値と拡張アレイ１０２２に格納されるデータとの対応関係の一例である。
【図７】図７は、実施の形態２に係るデータプロセッサのブロック図である。
【図８】図８は、プロセッサコア２０＿Ａ〜２０＿Ｃに係るＤＭＩＤとアドレス空間の設定例である。
【図９】図９は、実施の形態２に係るデータプロセッサ２の詳細なブロック図である。
【図１０】図１０は、バスインターフェース２０６が補完する情報の一例である。
【図１１】図１１は、実施の形態３に係るデータプロセッサ３のブロック図である。
【図１２】図１２は、ＤＭＣＲ３０４の設定値と拡張データの対応関係の一例である。
【図１３】図１３は、比較部３０２５のブロック図の一例である。
【図１４】図１４は、エラー訂正論理部３０２７のブロック図の一例である。
【図１５】図１５は、拡張データ生成部３０３０のブロック図の一例である。
【発明を実施するための形態】
【００１９】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００２０】
〔１〕（２つの動作モード）
本発明の代表的な実施の形態に係るデータプロセッサ（１、２）は、プログラムを実行する中央処理装置（１０１）と、前記中央処理装置のアドレス空間上のデータの一部を保持する連想メモリ（１０２）と、メモリ保護に利用される識別子を保持する第１レジスタ（１０３）と、を有する。前記連想メモリは、タグを格納するタグ部（１０２２、１０２３）と、データを格納するデータ部（１０２４）とから構成される複数の連想エントリと、前記中央処理装置のアクセスに際し、前記中央処理装置から供給される情報とインデックスされたタグとを比較する比較部（１０２５）とを有する。また前記連想メモリは、前記供給される情報をアドレス情報とする第１の動作モードと、前記供給される情報をアドレス情報及び前記識別子とする第２の動作モードとを有する。これによれば、前記データプロセッサは、前記識別子を用いたメモリ保護と前記連想メモリに記憶する物理アドレスのビット数拡張とに対応することが可能となる。
【００２１】
〔２〕（拡張部の切り換え）
項１のデータプロセッサは、前記連想メモリの前記動作モードを決定するための情報が保持される第２レジスタ（１０４）を更に有し、前記タグ部はアドレス情報を格納するアドレス部（１０２３）と拡張部（１０２２）とを有する。また、前記連想メモリは、前記第２レジスタの値に基づいて前記動作モードを決定し、前記拡張部は、前記第１の動作モードではアドレス情報が格納され、前記第２の動作モードでは前記識別子が格納される。これによれば、前記拡張部を供用するから２つの動作モードに対応することが容易となる。
【００２２】
〔３〕（第１の動作モードにおける詳細動作）
項１又は項２のデータプロセッサにおいて、前記第１の動作モードでは、前記比較部は、前記供給されたアドレス情報と当該アドレス情報に対応する前記連想エントリにおける前記アドレス部及び前記拡張部に保持されたアドレス情報とを比較する。その結果、一致する場合には、前記連想メモリは当該連想エントリにおける前記データ部のデータを出力し、一致しない場合には、前記供給されたアドレス情報とそれに対応するデータとを、前記対応する前記連想エントリに格納する。
【００２３】
〔４〕（第２の動作モードにおける詳細動作）
項１乃至３の何れかのデータプロセッサにおいて、前記第２の動作モードでは、前記比較部は、前記供給されたアドレス情報と当該アドレス情報に対応する前記連想エントリにおける前記アドレス部に保持された情報とを比較するとともに、前記供給された前記識別子と当該連想エントリにおける前記拡張部に保持された情報とを比較する。その結果、共に一致する場合には、前記連想メモリは、当該連想エントリにおける前記データ部のデータを出力し、一方又は双方が一致しない場合には、前記供給されたアドレス情報とそれに対応するデータとを、前記対応する前記連想エントリに格納する。
【００２４】
〔５〕（ドメイン識別子）
項１乃至４の何れかのデータプロセッサにおいて、前記メモリ保護に利用される識別子は、前記プログラムの実行を管理する上位ソフトウェアを識別するためのドメイン識別子である。これによれば、前記上位ソフトウェア毎のメモリ保護が可能となる。
【００２５】
〔６〕（複数のデータ処理部）
項１乃至５の何れかのデータプロセッサは、前記中央処理装置と、前記連想メモリと、前記第１レジスタと、前記第２レジスタと、を一組とするデータ処理部（２０＿Ａ〜２０＿Ｃ）を複数組有し、前記第２レジスタは、前記データ処理部毎に設定可能とされる。
【００２６】
〔７〕（アドレス空間のビット数補完）
項６のデータプロセッサは、夫々の前記データ処理部によって共通利用されるバス（２０、２１）を更に有し、前記データ処理部は、前記中央処理装置のアクセス要求に応じて、前記中央処理装置が供給するアドレス情報を出力するための制御を行うアクセス制御部（２０６）と、アドレス情報を補完するための情報が格納される第３レジスタ（１０７、１０７Ａ〜１０７Ｃ）とを有する。また、前記バスは、複数の前記データ処理部のうち、最大となるアドレス空間に応じたバス幅以上のバス幅を有する。さらに、前記アクセス制御部は、前記中央処理装置がアクセス要求を行う際、前記中央処理装置が供給するアドレス情報に基づくアドレス幅が前記バス幅に対して小さいと判断した場合には、前記第３レジスタの値に基づいて、当該アドレス情報に所定の情報を補完した新たなアドレス情報を前記バスに出力する。これによれば、前記データ処理部のアドレス空間のビット数と前記バスのビット数が一致しない場合であっても、前記データ処理部を適用することができる。
【００２７】
〔８〕（識別子のビット数補完）
項７のデータプロセッサにおいて、前記アクセス制御部は更に、前記中央処理装置のアクセス要求に応じて、前記第１レジスタの値を出力する制御を行う。
【００２８】
〔９〕項８のデータプロセッサにおいて、前記第３レジスタは更に、前記第１レジスタの値を補完するための情報が格納され、前記バスは更に、複数の前記データ処理部のうち、前記メモリ保護に利用される識別子の最大となるデータ量に応じたバス幅以上のバス幅を有する。また、前記アクセス制御部は、前記中央処理装置がアクセス要求を行う際、前記第１レジスタの値が前記バス幅に対して小さいと判断した場合には、前記第３レジスタの値に基づいて、当該第１レジスタの値に所定の情報を補完した新たな情報を前記バスに出力する。これによれば、前記データ処理部の識別子のビット数と前記バスのビット数が一致しない場合であっても、前記データ処理部を適用することができる。
【００２９】
〔１０〕（補完の具体的方法）
項７乃至９の何れかのデータプロセッサにおいて、前記アクセス制御部は、前記第２レジスタの値を参照して補完すべきビット数を決定する。これによれば、前記第２レジスタの値を参照することで前記データ処理部の前記動作モードがわかるから、補完すべきビット数を決定することが容易となる。
【００３０】
〔１１〕（２つの動作モード（ＥＣＣ））
本発明の代表的な別の実施の形態に係るデータプロセッサ（１、２、３）は、プログラムを実行する中央処理装置（１０１）と、前記中央処理装置のアドレス空間上のデータの一部を保持する連想メモリ（３０２）と、を有する。前記連想メモリは、タグを格納するタグ部（１０２２、１０２３、３０２２）と、データを格納するデータ部（１０２４）とから構成される複数の連想エントリと、前記中央処理装置のアクセスに際し、前記中央処理装置から供給される情報とインデックスされたタグとを比較する比較部（１０２５、３０２５）とを有する。また、前記連想メモリは、前記供給される情報をアドレス情報とする第１の動作モードと、前記供給される情報をアドレス情報及び誤り訂正のための情報とする第２の動作モードとを有する。これによれば、前記データプロセッサは、ソフトエラー対策と前記連想メモリに記憶する物理アドレスのビット数拡張とに対応することが可能となる。
【００３１】
〔１２〕（拡張部の切り換え）
項１１のデータプロセッサは、前記連想メモリの前記動作モードを決定するための情報が保持される第１レジスタ（１０３）を更に有し、前記タグ部は、アドレス情報を格納するアドレス部（１０２３）と、拡張部（１０２２、３０２２）とを有する。前記連想メモリは、前記第１レジスタの値に基づいて前記動作モードを決定し、前記拡張部は、前記第１の動作モードではアドレス情報が格納され、前記第２の動作モードでは前記誤り訂正のための情報が格納される。これによれば、前記拡張部を供用するから、２つの動作モードに対応することが容易となる。
【００３２】
〔１３〕（キャッシュメモリ）
項２乃至１２の何れかのデータプロセッサにおいて、前記連想メモリは、キャッシュメモリである。
【００３３】
〔１４〕（アドレス変換バッファ）
項２乃至１２の何れかのデータプロセッサにおいて、前記連想メモリは、前記中央処理装置の仮想アドレス空間における仮想アドレスを物理アドレスへアドレス変換するためのアドレス変換対を記憶するアドレス変換バッファである。
【００３４】
〔１５〕（内部モジュール）
本発明の代表的な別の実施の形態に係るデータプロセッサ（１、２、３）は、プログラムを実行する中央処理装置（１０１）と、前記中央処理装置によるデータ処理に基づいて、前記中央処理装置のアドレス空間をアクセスするためのアドレス情報を出力する内部モジュール（１０５、１０２、３０２）と、メモリ保護に利用される識別子を保持する第１レジスタ（１０３）と、を有する。前記内部モジュールは、前記アドレス情報に前記識別子を付加しない第１の動作モードと、前記アドレス情報に前記識別子を付加する第２の動作モードとを有する。これによれば、前記データプロセッサは、前記内部モジュールのアクセスに対するメモリ保護と物理アドレスのビット数の拡張とに対応することが可能となる。
【００３５】
〔１６〕（動作モードの切り換え）
項１５のデータプロセッサは、前記動作モードを決定するための情報が保持される第２レジスタ（１０４、３０４）を更に有し、前記内部モジュールは、前記第２レジスタの値に基づいて前記動作モードを決定する。また、前記メモリ保護に利用される識別子は、前記プログラムの実行を管理する上位ソフトウェアを識別するためのドメイン識別子である。これによれば、２つの動作モードの切り換えが容易となり、また、前記上位ソフトウェア毎のメモリ保護が可能となる。
【００３６】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００３７】
≪実施の形態１≫
図１は、実施の形態１に係るデータプロセッサの一例である。
【００３８】
図１に示されるデータプロセッサ１は、データ処理を行うプロセッサコア（ＰＲＯ＿ＣＯＲＥ）１０と主記憶装置（ＭＥＭ）４０のアクセスを管理する物理アドレス管理モジュール（ＰＡＭ）３０とを有し、それらはバス５０に共通接続される。また、前記ＰＡＭ３０には前記プロセッサコア１０等の共有リソースである前記主記憶装置４０が接続される。なお、前記バス５０には、図示を省略するＩ／Ｏ回路、及びその他の周辺回路も接続される。
【００３９】
前記プロセッサコア１０は、中央処理装置（以下、「ＣＰＵ」という。）１０１、メモリ管理ユニット（ＭＭＵ）１０５、キャッシュメモリ（ＣＡＣＨＥ）１０２、ドメインＩＤレジスタ（ＤＭＩＤ）１０３、ドメイン制御レジスタ（ＤＭＣＲ）１０４、及びバスインターフェース（ＢＩＦ）１０６を有する。なお、図１には本実施の形態の説明に必要な構成要素のみ示している。
【００４０】
前記ＣＰＵ１０１は、前記主記憶装置４０に格納された命令をフェッチし、フェッチした命令をデコードし、デコードされた命令に従ってデータ処理を行う。また、前記ＣＰＵ１０１における前記主記憶装置４０に対するアクセスは、３２ビットの論理アドレスと、後述する８ビットの保護ドメインＩＤ（ドメインＩＤ）によって指定される。論理アドレスは前記ＭＭＵ１０５によって物理アドレスに変換され、前記バスインターフェース１０６を介して前記バス５０上に物理アドレスと前記ドメインＩＤを出力することによりアクセスが実行される。
【００４１】
前記キャッシュメモリ１０２は、特に制限されないが、物理キャッシュである。前記キャッシュメモリ１０２の詳細については、後述する。
【００４２】
前記ドメイン制御レジスタ（ＤＭＣＲ）１０４は、詳細は後述するが、前記キャッシュメモリ１０２の拡張アレイ１０２２に記憶される情報の種類を決定するための値が格納される。
【００４３】
前記ドメインＩＤレジスタ１０３には、ドメインＩＤ（ＤＭＩＤ）が格納される。
【００４４】
前記ドメインＩＤについて、詳細に説明する。
【００４５】
前記ＣＰＵ１０１は複数のプログラムを実行する。それらのプログラムはアクセス可能なアドレス範囲が異なり、複数の動作モードで動作する。
【００４６】
図２は、前記ＣＰＵ１０１が実行するプログラムの動作モードの説明図である。
【００４７】
図２に示すように、上位ソフトウェアであるオペレーティングシステムのプログラムは特権モード（ＰＲＩＶ  ｍｏｄｅ）で表され、ユーザアプリケーションを実行するためのプログラムはユーザモード（ＵＳＥＲ  ｍｏｄｅ）で表される。本実施の形態に係るデータプロセッサ１では、さらに上位の複数のオペレーティングシステムを管理統括する動作モード（以下、「ＸＶＳモード（ＸＶＳ  ｍｏｄｅ）」という。）を有する。前記ＸＶＳモードは最も権限が高い動作モードであり、オペレーティングシステム間の干渉防止や通信を実現するドメイン管理ソフトウェア（ＤＭＧＲ）が実行される。前記ＸＶＳモードでは、前記ドメインＩＤレジスタ１０３、及び前記ドメイン制御レジスタ１０４や前記ＰＡＭ３０の設定の書き換えを行うことが可能である。一方、前記ＸＶＳモード以外の動作モード（特権モード及びユーザモード）では上記設定の書き換えがモードレジスタ等のハードウェアで禁止され、ソフトウェアの不具合や悪意のあるプログラムからの保護が保障される。
【００４８】
前記ドメインＩＤは、前記プログラムの実行を管理する上位ソフトウェアを識別するものであり、オペレーティングシステム毎に番号が割り振られている。前記ドメインＩＤは、複数のオペレーティングシステムが動作する場合に夫々のオペレーティングシステムを区別するために用いられる。前記ＣＰＵ１０１は、前記ＸＶＳモードにおいて、実行されるオペレーティングシステムのドメインＩＤを前記ドメインＩＤレジスタに記憶する。本実施の形態では、前記ドメインＩＤをメモリ保護に用いる。例えば、オペレーティングシステムの管理下で動作するアプリケーションプログラムの前記主記憶装置４０に対するアクセスが前記ＰＡＭ３０により管理される。
【００４９】
前記ＰＡＭ３０による前記主記憶装置４０のアクセス管理の具体的な方法は以下である。
【００５０】
前記ＰＡＭ３０は、前記主記憶装置４０のアドレスと当該アドレスにアクセス可能な保護ドメインＩＤ（ＤＭＩＤ）とのデータ対を、エントリテーブルに複数記憶する。そして、前記プロセッサコア１０が前記主記憶装置４０に対してアクセスを要求するとき、前記ＰＡＭ３０は前記バス５０に出力された物理アドレス（ＰＡＤＲ）及び前記ドメインＩＤを受け取って、当該前記エントリテーブルのデータ対と比較することで、アクセス権限の確認を行う。なお、前記エントリテーブルは前記ＸＶＳモードで設定可能であり、例えば、システム起動時に、前記ドメイン管理ソフトウェアがオペレーティングシステムの起動に先立って設定を行う。
【００５１】
図３は、実施の形態１に係るデータプロセッサの詳細なブロック図である。
【００５２】
前記ＣＰＵ１０１の論理アドレス空間は、特に制限されないが、３２ビットのアドレス信号で管理される空間である。前記ＭＭＵ１０５で生成される物理アドレス空間は最大で４０ビット、最低３２ビットのアドレス信号で管理される空間である。前述のように、ここでは理解を容易化するために、前記ＭＭＵ１０５は３２ビットの論理アドレスを上位物理アドレス（ＵＰＡＤＲ）［３９：３２］と下位物理アドレス（ＬＰＡＤＲ）［３１：０］併せて一律４０ビットの物理アドレスに変換し、３２ビットの論理アドレスは３２ビットのＬＰＡＤＲに等しくされる。
【００５３】
上述のように前記ＣＰＵ１０１の物理アドレス空間は最低３２ビットのアドレス空間を更に８ビット拡張でき、また、前記ＰＡＭ３０による前記主記憶装置４０のメモリ保護には最大８ビットのＤＭＩＤを用いることができる。前記キャッシュメモリ１０２は、最大８ビットのアドレス拡張と最大８ビットのＤＭＩＤを用いたメモリ保護に整合する連想記憶を行うことができるように考慮されている。以下その内容について詳述する。
【００５４】
前記キャッシュメモリ１０２は、ＳＲＡＭで構成されたメモリ部１０２２〜１０２４と、タグアドレスの比較などを行ってキャッシュヒットかキャッシュミスかの判定等を行う比較部１０２５と、判定結果に基づいてデータを選択して出力する選択部１０２９と、前記メモリ部１０２２〜１０２４と前記比較部１０２５を制御する制御ロジック部１０２１とを有する。
【００５５】
前記メモリ部１０２２〜１０２４は、特に制限されないが、４ウェイセットアソシアティブ構成を備え、セット毎に、拡張アレイ１０２２、タグアレイ１０２３及び、データアレイ１０２４を有する。夫々のアレイはインデックスアドレスによってインデックス可能にされるデータ行を有し、各アレイの対応するデータ行を併せてキャッシュラインと称し、キャッシュラインは、前記拡張アレイ１０２２における拡張データ、前記タグアレイ１０２３におけるタグ情報、前記データアレイ１０２４における複数アクセス単位分のデータ情報、及び有効ビットをキャッシュエントリとして保持する。
【００５６】
前記拡張データは、例えば最大８ビットの拡張アドレス情報又は最大８ビットのＤＭＩＤであり、前記ＣＰＵ１０１がメモリアクセスに際して出力する論理アドレスは便宜上、タグアドレスＴＡＧ、インデックスアドレスＩＮＤＥＸ、及びオフセットアドレスＯＦＳＴとして図示する。ここでは３２ビットの下位物理アドレス（ＬＰＡＤＲ）もこれと同じであると理解された。
【００５７】
前記ＣＰＵ１０１のアクセスに際して前記メモリ部１０２２〜１０２４はインデックスアドレスＩＮＤＥＸで指定されるキャッシュラインの情報を前記比較部１０２５に与え、前記比較部１０２５はそのときの物理アドレス情報と前記ＤＭＣＲ１０４及び前記ドメインＩＤレジスタ１０３の値を参照してキャッシュヒット又はミスを判別する。前記ＣＰＵ１０１のリードアクセスにおいてキャッシュヒットであればヒットに係るウェイのキャッシュラインの前記データアレイ１０２４のデータが前記選択部１０２９で選択され、オフセットアドレスＯＦＳＴで指定される必要なデータだけが前記ＣＰＵ１０１に返される。リードアクセスにおいてキャッシュミスであれば前記制御ロジック部１０２１はそのときにアクセスアドレスを利用してバスサイクルを起動し、キャッシュミスに係るデータを読込んで前記ＣＰＵ１０１に返すと共に読込んだデータなどに基づいてキャッシュエントリを生成する。ライトアクセスにおいてキャッシュヒットであればヒットに係るウェイのキャッシュラインの前記データアレイ１０２４に前記制御ロジック部１０２１が書込みデータを書込む。ライトアクセスにおいてキャッシュミスであれば前記制御ロジック部１０２１はそのときにアクセスアドレスを利用してバスサイクルを起動し、キャッシュミスに係るデータを読込んでキャッシュエントリを生成し、生成したキャッシュエントリの該当する前記データアレイ１０２４にキャッシュミスに係る書込みデータを格納する。
【００５８】
前記拡張アレイ１０２２における拡張データは、前記ＤＭＣＲ１０４の設定によって決定される。
【００５９】
図４は、前記ＤＭＣＲ１０４の設定値と前記拡張データの一例である。
【００６０】
前記ＤＭＣＲ１０４の設定は当該データプロセッサ１の応用システムにおいて必要な保護ドメインの数と、保護ドメイン内で利用する最大の主記憶容量値から決定される。例えば、オペレーティングシステムの数が１０種類あり、その中で要求される最大の主記憶容量値が６４ＧＢである場合には、保護ドメインとして４ビットが必要となり、物理アドレスとして３２ビットの下位物理アドレスに４ビットの上位物理アドレスを加えた３６ビットが必要となる。そこで、前記拡張アレイ１０２２の８ビットの記憶容量を４ビットずつに分割し、一方の４ビットにＤＭＩＤを記憶し、他方の４ビットに上位物理アドレスを記憶できるようにする。この場合、図４に示すように、前記ＤＭＣＲ１０４の設定値を“０１”とすることで、前記拡張アレイ１０２２［７：４］に上位物理アドレス［３５：３２］が記憶され、前記拡張アレイ１０２２［３：０］にＤＭＩＤ［３：０］が記憶される。一方、物理アドレスを拡張せず保護ドメインとして８ビットが必要な場合には前記ＤＭＣＲの値を“００”に設定することで前記拡張アレイ１０２２［７：０］にＤＭＩＤ［７：０］が記憶され、物理アドレスを８ビット拡張する場合には前記ＤＭＣＲの値を“１０”に設定することで前記拡張アレイ１０２２［７：０］にＵＰＡＤＲ［３９：３２］が記憶される。なお、前記ＤＭＣＲ１０４の設定値と前記拡張データの対応は上記の例に限定されず、前記拡張アレイ１０２２の用途に応じて変更可能である。
【００６１】
次にリードアクセスにおける前記キャッシュメモリ１０２の動作について詳細に説明する。
【００６２】
前記ＣＰＵ１０１のリードアクセスに際して前記メモリ部１０２２〜１０２４はインデックスアドレスＩＮＤＥＸで指定されるキャッシュラインの情報を前記比較部１０２５及び前記選択部１０２９に与える。すなわち、ウェイ毎の前記タグ情報、前記有効ビット、及び前記拡張データが前記比較部１０２５に与えられ、夫々のウェイの前記データ情報が前記選択部１０２９に与えられる。更に、前記比較部１０２５は、ＵＰＡＤＲとＬＰＡＤＲを入力する。前記比較部１０２５の動作について、図５を用いて詳細に説明する。
【００６３】
図５は前記比較部１０２５のブロック図の一例である。
【００６４】
前記比較部１０２５は、拡張機能セレクタ１０２７、及び比較器１０３０、１０３１を有する。
【００６５】
前記拡張機能セレクタ１０２７は、前記ＤＭＣＲ１０４の値と、前記ドメインＩＤレジスタ１０３の値（ＤＭＩＤ）とＵＰＡＤＲとを入力し、前記ＤＭＣＲ１０４の値に基づいてＵＰＡＤＲ若しくはＤＭＩＤ、又はそれらの双方を選択して出力する。例えば図４の場合において、前記ＤＭＣＲの値が“００”の場合にはＤＭＩＤ［７：０］を選択して出力する。また、前記ＤＭＣＲの値が“１１”の場合には上位物理アドレス［３９：３２］を選択して出力し、前記ＤＭＣＲの値が“０１”の場合にはＤＭＩＤ［３：０］と上位物理アドレス［３５：３２］を選択して夫々出力する。
【００６６】
前記比較器１０３１は、前記拡張機能セレクタ１０２７によって選択されたデータと前記拡張アレイ１０２２の情報とをウェイ毎に比較し、比較結果が一致している場合に比較結果一致を、そうでない場合には比較結果不一致を、ウェイ毎に出力する。例えば前記ＤＭＣＲ１０４の値が“００”の場合には、前記拡張データはＤＭＩＤ［７：０］であるので、前記比較器１０３１はＤＭＩＤの比較を行う。前記比較器１０３０は前記タグ情報［３１：０］とＬＰＡＤＲ［３１：０］とをウェイ毎に比較し、比較結果が一致で且つ有効ビットが有効を示している場合に比較結果一致を、そうでない場合には比較結果不一致を、ウェイ毎に出力する。そして、前記比較器１０３０と前記比較器１０３１が共に比較結果一致となったウェイがあった場合は、前記比較部１０２５はキャッシュヒットをウェイ毎の信号ＨＩＴにて出力する。一方、何れのウェイにおいても比較結果不一致であった場合は、キャッシュミスを前記信号ＨＩＴにて出力する。前記ＨＩＴ信号は前記制御ロジック部１０２１と前記選択部１０２９に与えられる。
【００６７】
前記比較部１０２５による比較によりキャッシュヒットとなった場合には、前記選択部１０２９が前記信号ＨＩＴに基づいて、４つのウェイのうちヒットした１つのウェイのデータを選択して出力する。一方、キャッシュミスとなった場合には、前記制御ロジック部１０２１がそのときの物理アドレスを利用してバスサイクルを起動し、キャッシュミスに係るデータを読込むための指令を前記バスインターフェース１０６に与える。前記バスインターフェース１０６は、前記ＰＡＭ３０に物理アドレスともにＤＭＩＤを与えることで前記主記憶装置４０からのデータの転送を指示する。このとき、前記バスインターフェース１０６は前記ＤＭＣＲ１０４の値を参照し、管理されるアドレス空間のビット数に応じた物理アドレスを前記ＰＡＭ３０に与える。例えば図４の場合において、前記ＤＭＣＲ１０３の値が“００”のとき、管理されるアドレス空間は３２ビットであるから、ＬＰＡＤＲ［３１：０］を出力する。一方、前記ＤＭＣＲ１０３の値が“１１”のとき、管理されるアドレス空間は４０ビットであるから、ＵＰＡＤＲ［３９：３２］とＬＰＡＤＲ［３１：０］を出力する。
【００６８】
上記指示により前記主記憶装置４０から得られたデータは、前記バスインターフェース１０６を介して前記制御ロジック部１０２１に与えられる。そして、前記制御ロジック部１０２１は、読み込んだデータのうち前記オフセットアドレスＯＦＳＴで指定される必要なデータだけを前記ＣＰＵ１０１に返すとともに、読み込んだデータに基づいてキャッシュエントリを生成する。キャッシュエントリの生成方法を以下に記す。
【００６９】
前記制御ロジック部１０２１は、読み込んだデータをインデックスされたキャッシュラインに対応する前記データアレイ１０２４に格納する。また、前記制御ロジック部１０２１の内部に備えられた書込み制御部１０２６が、インデックスされたキャッシュラインに対応する前記タグアレイ１０２３にアクセスアドレスのＬＰＡＤＲのタグ情報を記憶するとともに有効ビットを有効にする。更に前記書込み制御部１０２６は、前記ＤＭＣＲ１０４の値に基づいて、当該キャッシュラインに対応する前記拡張アレイ１０２２に前記拡張データを記憶する。
【００７０】
図６に、前記ＤＭＣＲ１０４の設定値と前記拡張アレイ１０２２に格納されるデータとの対応関係の一例を示す。
【００７１】
前記書込み制御部１０２６は、例えば図６に示すように、前記ＤＭＣＲ１０４の値が“００”の場合にはＤＭＩＤ［７：０］を前記拡張データとして前記拡張アレイ１０２２に格納し、前記ＤＭＣＲ１０４の値が“１１”の場合にはＵＰＡＤＲ［３９：３２］を前記拡張データとして格納する。さらに、前記ＤＭＣＲの値が“０１”の場合には、ＤＭＩＤ［３：０］とＵＰＡＤＲ［３５：３２］を併せた８ビットを前記拡張データとして格納する。
【００７２】
以上の方法によりインデックスされたキャッシュラインに対応する前記メモリ部１０２２〜１０２４に前記タグ情報、前記拡張データ、及びデータ情報が格納される。
【００７３】
次にライトアクセスにおける前記キャッシュメモリ１０２の動作について説明する。
【００７４】
前記ＣＰＵ１０１のライトアクセスに際して、前述のリードアクセス時と同様に、前記比較部１０２５に対しインデックスアドレスＩＮＤＥＸで指定されるキャッシュラインのウェイ毎の前記タグ情報及び前記有効ビットが与えられる。そして、リードアクセス時と同様の方法により前記拡張機能セレクタ１０２７が選択したデータと前記拡張データとの比較を前記比較器１０３１が行うとともに、前記比較器１０３０が前記タグ情報とＬＰＡＤＲとの比較を行うことによりキャッシュヒット又はミスを判別する。比較した結果、キャッシュヒットであればヒットに係るウェイのキャッシュラインに対応する前記データアレイ１０２４のオフセットアドレスＯＦＳＴによってインデックスされるデータアレイに対し、前記制御ロジック部１０２１がデータを書込む。一方キャッシュミスであれば、リードアクセス時と同様の方法で前記制御ロジック部１０２１はそのときにアクセスアドレスを利用してバスサイクルを起動し、キャッシュミスに係るデータを読込んでキャッシュエントリを生成する。そして、当該エントリに係る前記データアレイ１０２４のオフセットアドレスＯＦＳＴによってインデックスされるデータアレイに対し、キャッシュミスに係る書込みデータを格納する。
【００７５】
以上実施の形態１に係るデータプロセッサによれば、前記キャッシュメモリ１０２は、前記拡張アレイ１０２２と前記ＤＭＣＲ１０４を備えることで、応用システムに応じて保護ドメイン数と物理アドレス空間の大きさを段階的に選択することが可能となる。これにより、８ビットの保護ドメインと８ビットの上位物理アドレスを別個に記憶する従来方式と比較して、前記プロセッサコア１０の面積を大きく占めるキャッシュメモリアレイの規模を小さく抑えることができる。
【００７６】
≪実施の形態２≫
図７は、実施の形態２に係るデータプロセッサのブロック図である。
【００７７】
図７に示されるデータプロセッサ２は、プロセッサコアを複数有し、夫々のプロセッサコア２０＿Ａ〜２０＿Ｃはバス５１に共通接続され、物理アドレス管理モジュール（ＰＡＭ）３１を介して主記憶装置４１を供用する。前記ＰＡＭ３１は、前記ＰＡＭ３０と同様の方法により前記主記憶装置４１のアクセスを管理する。また、前記プロセッサコア２０＿Ａ〜２０＿Ｃは、実施の形態１に係るプロセッサコア１０と同様の機能を有し、夫々独立したＤＭＩＤとアドレス空間を設定することが可能である。
【００７８】
図８に前記プロセッサコア２０＿Ａ〜２０＿Ｃに係るＤＭＩＤとアドレス空間の設定例を示す。
【００７９】
図８において、前記プロセッサコア２０＿Ａは１つの保護ドメインと４０ビット（１ＴＢ）の物理アドレス空間が設定される。また、前記プロセッサコア２０＿Ｂは１６個（４ビット）の保護ドメインと３６ビット（６４ＧＢ）の物理アドレス空間が設定され、そして前記プロセッサコア２０＿Ｃは２５６個（８ビット）の保護ドメインと３２ビット（４ＧＢ）の物理アドレス空間が設定される。このとき、前記バス５１は前記プロセッサコア２０＿Ａ〜２０＿Ｃにおける最大のアドレス空間４０ビットと最大の保護ドメイン数８ビット（２５６個）のバス幅を含み、前記ＰＡＭ３１及び前記主記憶装置４１は、とり得る最大の物理アドレス空間４０ビットで特定される空間に対し、２５６個の保護ドメインに分割して対応できるようになっている。このように異なる保護ドメイン数と物理アドレス空間が設定された複数のプロセッサコアがバスアクセスする場合に以下のような問題が生じる。
【００８０】
例えば、図８に示すように設定された前記プロセッサコア２０＿Ｂに係るキャッシュメモリ１０２＿Ｂがキャッシュミスに係るデータを読込むための指令をバスインターフェースに与える場合において、前記バスインターフェースは前記ＰＡＭ３１に物理アドレスと共に保護ドメイン（ＤＭＩＤ）を与えることで前記主記憶装置４１からのデータの転送を指示する。このとき、前記プロセッサコア２０＿Ｂにおいて管理される物理アドレス空間は３６ビット、保護ドメインは４ビットであるから、８ビットの保護ドメインと４０ビットのアドレス空間が設定されたアクセス対象にバスアクセスを行うためには情報が不足するという問題が生じる。そこで、実施の形態２に係る前記プロセッサコア２０＿Ａ〜２０＿Ｃは、実施の形態１に係るプロセッサコア１０の前記バスインターフェース１０６に代えて、バスアクセスのためのアドレスビット数と保護ドメインに情報を補完する機能を有するバスインターフェース２０６を有し、更に前記補完のための情報が格納される補完レジスタ（ＥＸＴＩＤ）１０７を有する。
【００８１】
図９に前記データプロセッサ２の詳細なブロック図を示す。ここでは説明を容易にするため、前記プロセッサコア２０＿Ａ〜２０＿Ｃのうち一つのプロセッサコアと前記バス５１との接続関係のみ示す。
【００８２】
図９において、前記バスインターフェース２０６と前記ＥＸＴＩＤ１０７以外の構成要素は前記プロセッサコア１０と同様である。前記バスインターフェース２０６は、上位物理アドレス（ＵＰＡＤＲ）、下位物理アドレス（ＬＰＡＤＲ）、前記ドメインＩＤレジスタ１０３及び前記ＤＭＣＲ１０４の値を入力すると共に前記ＥＸＴＩＤ１０７の値を入力する。
【００８３】
前記ＥＸＴＩＤ１０７には、前記ＤＭＣＲ１０４の値に応じた補完ビットの情報が格納される。特に限定されないが、ここでは前記拡張アレイ１０２２と同一に８ビットの記憶容量を備える。例えば前述した図４の場合において、前記ＤＭＣＲ１０４の値が“００”のとき、物理アドレスは３２ビット、ＤＭＩＤは８ビットであるから、バスアクセスを行うためには物理アドレスが８ビット不足する。そこで、前記ＥＸＴＩＤ１０７には８ビット分の物理アドレスの補完ビットが格納される。また、前記ＤＭＣＲ１０４の値が“０１”であるとき、物理アドレスは３６ビット、ＤＭＩＤは４ビットであるから、前記ＥＸＴＩＤ１０７には物理アドレスとＤＭＩＤの夫々につき４ビット分の補完ビットが格納される。更に、前記ＤＭＣＲ１０４の値が“１０”であるとき、物理アドレスは４０ビット、ＤＭＩＤは０ビットであるから、前記ＥＸＴＩＤ１０７には８ビット分のＤＭＩＤの補完ビットが格納される。
【００８４】
前記バスインターフェース２０６によるビットの補完に係る具体的な処理内容は以下である。
【００８５】
例えば前記キャッシュメモリ１０２がキャッシュミスに係るデータを読込む場合において、前記バスインターフェース２０６がデータを読み込むための指令を前記キャッシュメモリ１０２から受け取ると、前記バスインターフェース２０６は前記ＤＭＣＲ１０４の値を参照する。そして、前記バスインターフェース２０６は前記ＤＭＣＲ１０４の値に基づいて、入力された物理アドレスとＤＭＩＤの情報に前記補完ビットを補完して、新たな物理アドレスＰＡＤＲ２とＤＭＩＤ２を前記ＰＡＭ３１に与えることで前記主記憶装置４１からのデータの転送を指示する。
【００８６】
図１０は、前記バスインターフェース２０６が補完する情報の一例である。
【００８７】
例えば前記ＤＭＣＲの値が“００”であるとき、前記バスインターフェース２０６は前記ＥＸＴＩＤ１０７に格納された前記補完ビット［７：０］を上位物理アドレス（ＵＰＤＲ２）とし、当該ＵＰＡＤＲ２［７：０］とＬＰＡＤＲ［３１：０］とを併せた新たな物理アドレスＰＡＤＲ２［３９：０］を出力する。また前記バスインターフェース２０６は、前記ＤＭＩＤ［７：０］を前記ＤＭＩＤ２［７：０］として出力する。前記ＤＭＣＲの値が“０１”であるとき前記バスインターフェース２０６は、前記ＥＸＴＩＤ１０７に格納された前記補完ビット［７：４］を上位物理アドレス（ＵＰＤＲ２）とし、当該ＵＰＡＤＲ２［７：４］とＬＰＡＤＲ［３１：０］とを併せた物理アドレスＰＡＤＲ２［３５：０］を出力する。また、前記バスインターフェース２０６は、前記ＥＸＴＩＤ１０７に格納された前記補完ビット［３：０］と前記ＤＭＩＤ［７：４］とを併せたＤＭＩＤ２［７：０］を出力する。このとき、前記ＤＭＩＤ２［７：０］のうち上位側のＤＭＩＤ２［７：４］の値のみが意味をなす。前記ＤＭＣＲの値が“００”であるとき、前記バスインターフェース２０６は、前記ＥＸＴＩＤ１０７に格納された前記補完ビット［７：０］をＤＭＩＤ２［７：０］として出力する。このとき、前記ＤＭＩＤ２［７：０］の値は意味をなさない。また、前記バスインターフェース２０６は、前記ＵＰＡＤＲ［３８：３２］をＵＰＡＤＲ２［３８：３２］として出力される。
【００８８】
以上実施の形態２によれば、前記キャッシュメモリ１０２のバスアクセスに際し、プロセッサコアのバスインターフェースから出力するアドレス等のビット数とアクセスの対象のアドレス等のビット数とが相違する場合であってもバスアクセスが可能となるから、前記キャッシュメモリ１０２を適用した複数のプロセッサコアを共通バスに接続することができる。
【００８９】
実施の形態２に係るデータプロセッサの構成を適用しない従来のデータプロセッサでは、複数のプロセッサコアが要求する物理アドレス空間及び保護ドメインが異なる場合、最大の物理アドレス空間及び最大の保護ドメイン数を兼ね備えたキャッシュメモリを採用しなければならなかった。しかし本実施の形態によれば、プロセッサコアの面積を小さく抑えつつも、多様なドメインに対応した保護と物理アドレス空間の拡張に対応することができる。
【００９０】
≪実施の形態３≫
図１１に実施の形態３に係るデータプロセッサ３を示す。
【００９１】
実施の形態１に係るデータプロセッサ１では、前記キャッシュメモリ１０２の前記拡張アレイ１０２２に前記物理アドレスと前記保護ドメイン（ＤＭＩＤ）が切り換え可能に格納されたが、前記データプロセッサ３に係る前記拡張アレイには、前記保護ドメイン（ＤＭＩＤ）と誤り訂正符号（以下、「ＥＣＣ（Ｅｒｒｏｒ  Ｃｈｅｃｋｉｎｇ  ａｎｄ  Ｃｏｒｒｅｃｔｉｏｎ）コード」という。）が切り換え可能に格納される。ここで、ＥＣＣとは、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を構成する記憶素子の情報が放射線や中性子線の影響で反転するソフトエラーを回避するために誤りを検出して訂正する機能である。以下の説明では、３２ビットのデータに対して４ビットの冗長ビットを用いるＥＣＣを一例として説明する。
【００９２】
実施の形態３に係る前記データプロセッサ３は、実施の形態１に係るデータプロセッサ１０の前記キャッシュメモリ１０２と前記ＤＭＣＲ１０４に代えて、キャッシュメモリ３０２とドメイン制御レジスタ（ＤＭＣＲ）１０３を有する。
【００９３】
前記キャッシュメモリ３０２は、データのエラーを検出し訂正するエラー訂正論理部（ＥＣＲ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｏｒ））３０２７を更に有し、また前記拡張アレイ１０２２、前記制御ロジック部１０２１、及び前記比較部１０２５に代えて、拡張アレイ３０２２、制御ロジック部３０２１、及び比較部３０２５を有する。その他の構成要素は前記キャッシュメモリ１０２と同様とすることで、その詳細な説明を省略する。
【００９４】
前記拡張アレイ３０２２は、特に制限されないが、ここでは８ビットの記憶容量を持つ。前記拡張データは、例えば最大８ビットの保護ドメイン（ＤＭＩＤ）又は最大４ビットのＥＣＣコードであり、それは前記ＤＭＣＲ３０４の設定値によって決定される。
【００９５】
図１２に、前記ＤＭＣＲ３０４の設定値と拡張データの対応関係の一例を示す。
【００９６】
この場合、前記ＤＭＣＲ３０４の値を“０”に設定することで、前記拡張アレイ３０２２［７：０］にＤＭＩＤ［７：０］が記憶される。一方、前記ＤＭＣＲ３０４の値を“０”に設定することで、前記拡張アレイ３０２２［３：０］にＤＭＩＤ［３：０］が記憶されると共に前記拡張アレイ３０２２［７：４］にＥＣＣコード［３：０］が記憶され、前記キャッシュメモリ３０２は、４ビットの保護ドメイン（ＤＭＩＤ）と４ビットの冗長符号を備えたＥＣＣメモリに対応するキャッシュメモリとなる。
【００９７】
前記比較部３０２５は、前記ＣＰＵ１０１のリードアクセスに際して、前記比較部１０２５と同様にキャッシュヒット又はミスを判別する。このとき、前記比較部１０２５は、前記拡張データＥＸＴ［７：０］とＤＭＩＤ［７：０］の比較を実行するが、当該比較は、ＤＭＩＤの上位側ＤＭＩＤ［７：４］と前記拡張データの上位側拡張データＥＸＴ［７：４］の比較と、ＤＭＩＤの下位側ＤＭＩＤ［３：０］と前記拡張データの下位側拡張データＥＸＴ［３：０］の比較に分割されて実行される。
【００９８】
前記比較部３０２５は、前記ＣＰＵ１０１のリードアクセスに際して、前記拡張アレイ３０２２と前記タグアレイ１０２３からウェイ毎の前記タグ情報ＴＡＧ、前記有効ビット、及び前記拡張データＥＸＴが与えられる。また、前記比較部３０２５は、ＵＰＡＤＲ、ＬＰＡＤＲ、前記ＤＭＩＤ、及びＤＭＣＲ３０４の値を入力する。
【００９９】
図１３は前記比較部３０２５のブロック図の一例である。
【０１００】
前記比較部３０２５は、比較器３０３１〜３０３３、及びロジック部３０３４を有する。
【０１０１】
前記比較器３０３１は、ＬＰＡＤＲと前記タグ情報ＴＡＧとをウェイ毎に比較し、比較結果が一致している場合に比較結果一致を、そうでない場合には比較結果不一致を、ウェイ毎に出力する。また、前記比較器３０３２は、前記下位側ＤＭＩＤ［３：０］と前記下位側拡張データＥＸＴ［３：０］をウェイ毎に比較し、比較結果が一致している場合に比較結果一致を、そうでない場合には比較結果不一致を、ウェイ毎に出力する。更に、前記比較器３０３３は、前記上位側ＤＭＩＤ［７：４］と前記上位側拡張データＥＸＴ［７：４］をウェイ毎に比較し、比較結果が一致している場合に比較結果一致を、そうでない場合には比較結果不一致を、ウェイ毎に出力する。
【０１０２】
前記ロジック部３０３４は前記比較器３０３１〜３０３３の比較結果を入力し、キャッシュヒット・キャッシュミスをウェイ毎の信号ＨＩＴにて出力する。このとき前記ロジック部３０３４は、前記ＤＭＣＲ３０４の値を入力し、前記ＤＭＣＲ３０４の値に応じて前記比較器３０３３の比較結果の有効と無効を判断する。すなわち、図１２の場合において前記ＤＭＣＲ３０４の値が“０”のとき、前記上位側拡張データＥＸＴ［７：４］と前記下位側拡張データＥＸＴ［３：０］は共にＤＭＩＤであるので、前記比較部３０３３の比較結果を有効とし、全ての前記比較器３０３１〜３０３３の比較結果に基づいてキャッシュヒット・ミスを判断する。一方、前記ＤＭＣＲ３０４の値が“１”のとき、前記上位側拡張データＥＸＴ［７：４］はＥＣＣコードであり、下位側拡張データＥＸＴ［３：０］はＤＭＩＤである。すなわち、前記比較部３０３３はＥＣＣコードとＤＭＩＤを比較していることから、前記ロジック部３０３４は当該比較結果を無効とし、前記比較器３０３１と前記比較器３０３２の比較結果に基づいてキャッシュヒット・ミスを判断する。前記比較部３０３３の比較結果の有効・無効を判断するには、例えば図１３に示すように、前記比較部３０３３の比較結果と前記ＤＭＣＲ３０４の値の論理和をウェイ毎にとればよい。
【０１０３】
前記エラー訂正論理部（ＥＣＲ）３０２７は、前記ＣＰＵ１０１のリードアクセスに際して、前記データアレイ１０２４から与えられたデータＤＡＴＡのエラーを検出し訂正する。また、前記ＥＣＲ３０２７は、前記ＤＭＣＲ３０４の値に基づいて、エラー訂正を施したデータ又は前記データＤＡＴＡの何れかを選択して出力する。
【０１０４】
図１４に前記ＥＣＲ３０２７のブロック図の一例を示す。
【０１０５】
前記ＥＣＲ３０２７は、前記ＣＰＵ１０１のリードアクセスに際して、前記拡張アレイ３０２２と前記データアレイ１０２４から、インデックスアドレスＩＮＤＥＸで指定されるキャッシュラインの情報としてウェイ毎の前記拡張データＥＸＴとデータＤＡＴＡを受け取る。受け取った前記拡張データのうち前記上位側拡張データＥＸＴ［７：４］と、データＤＡＴＡが、ＥＣＣデコード部（ＥＣＣＤＥＣ）３０２８＿０〜３０２８＿３にウェイ毎に入力される。前記ＥＣＣデコード部３０２８＿０〜３０２８＿３は、必要に応じて前記上位側拡張データＥＸＴ［７：４］を用いて前記データＤＡＴＡにエラー訂正を施し、エラー訂正されたデータを選択回路３０２９＿０〜３０２９＿３に与える。前記選択回路３０２９＿０〜３０２９＿３は、前記ＤＭＣＲ３０４の値を入力し、当該値に基づいて、エラー訂正されたデータと前記データＤＡＴＡの何れかのデータを選択して出力する。例えば、図１２の場合において、前記ＤＭＣＲ３０４の値が“０”の場合には、ＥＣＣ機能は無効とし、データＤＡＴＡ０〜３をそのまま前記選択部１０２９に与える。一方、前記ＤＭＣＲ１０４の値が“１”の場合には、ＥＣＣ機能を有効とし、ＥＣＣデコード部３０２８＿０〜３０２８＿３からの出力データを選択して前記選択部１０２９に与える。
【０１０６】
前記制御ロジック部３０２１は書込み制御部３０２６を有し、前記書込み制御部３０２６は前記書込み制御部１０２６の機能に加え、拡張データ生成部（ＥＸＴＧＥＮ）３０３０を有する。
【０１０７】
前記ＥＸＴＧＥＮ３０３０は、キャッシュミスに係るキャッシュエントリ生成時、及びライトアクセスの際のキャッシュエントリ生成時に前記拡張データを前記拡張アレイ３０２２に格納するが、このとき前記ＥＣＣコードも生成する。
【０１０８】
図１５は、前記拡張データ生成部（ＥＸＴＧＥＮ）３０３０のブロック図の一例である。ここでは、前記拡張データ［７：０］のうち上位側拡張データ［７：４］を生成する機能を実現する回路ブロックのみを図示する。
【０１０９】
例えばキャッシュミスに係るデータを読み込んでキャッシュエントリを生成する際に、前記主記憶装置４０から読み出されたデータＷＤＡＴＡがＥＣＣコード生成部（ＥＣＣＧＥＮ）３０３５に入力される。前記ＥＣＣＧＥＮ３０３５は、当該データＷＤＡＴＡのＥＣＣコードを生成して選択回路３０３６に与える。前記選択回路３０３６は、前記ＤＭＣＲ３０４の値に基づいてＤＭＩＤと生成されたＥＣＣコードの何れかを選択して前記拡張アレイ３０２２に与える。例えば、図１２の場合において、前記ＤＭＣＲ３０４の値が“０”のときはＥＣＣ機能を無効とし、ＤＭＩＤ［７：４］を上位側拡張データ［７：４］として前記拡張アレイ３０２２に与える。一方、前記ＤＭＣＲ３０４の値が“１”のときはＥＣＣ機能を有効とし、生成されたＥＣＣコードを上位側拡張データＥＸＴ［７：４］として前記拡張アレイ３０２２に与える。なお、図１２の場合において、下位側拡張データＥＸＴ［３：０］は、前記ＤＭＩＤの値に関わらず、ＤＭＩＤ［３：０］の値となる。
【０１１０】
以上実施の形態３に係るデータプロセッサ３によれば、前記キャッシュメモリ３０２は応用システムに応じてキャッシュメモリの信頼性向上のための手段を選択することが可能となる。すなわち、前記キャッシュメモリ３０２の前記拡張アレイの用途を耐ソフトエラー性の向上のために用いるか、ソフトウェアの観点で保護ドメイン数を多く割り当てるために用いるか、を選択することが可能となる。
【０１１１】
なお、実施の形態３において、ソフトエラーの訂正の方法として３２ビットのデータに対して４ビットの冗長ビットを用いるＥＣＣを一例として説明したが、これに限られず１ビットの冗長ビットでエラー検出のみを行うパリティ方式にも適用することが可能である。
【０１１２】
また、実施の形態３では前記データアレイ１０２４の読み出し内容にエラー訂正を施す場合を一例として示したが、これに限られず、前記タグアレイ１０２３のタグ情報にエラー訂正を施すことも可能である。この場合には例えば、前記タグアレイ１０２３と前記比較部３０２５の間にエラー訂正のための回路等を配置すればよい。
【０１１３】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【０１１４】
例えば、実施形態１乃至３のデータプロセッサでは、前記主記憶装置４０、４１へのアクセスを一例として説明しているが、これに限られず、前記バス５０、２１には前記主記憶装置４０、４１以外の周辺デバイスや入出力装置などの共有リソースを配置することが可能であり、それらのリソースへのアクセス管理は夫々のリソース毎に設置された前記ＰＡＭ３０、３１により、前記主記憶装置４０、４１と同様に管理し、保護することが可能である。
【０１１５】
また、実施形態１乃至３のデータプロセッサでは、前記ＤＭＩＤと上位物理アドレス、及び前記ＤＭＩＤと前記ＥＣＣコードを前記拡張データとして切り換え可能とする例を示したが、これに限られず、上記３つのデータを切り換え可能とすることが可能である。例えば、実施の形態２において前記拡張アレイに格納されるデータを保護ドメインとＥＣＣコードとし、これらを切り換え可能にしてもよいし、実施の形態３において前記拡張アレイに格納されるデータを上位物理アドレスとＥＣＣコードとし、これらを切り換え可能にしてもよい。
【０１１６】
更に、実施形態１乃至３のデータプロセッサでは、キャッシュメモリに前記拡張アレイを適用する場合を示したが、これに限られず、前記ＣＰＵのアクセスに際して、そのアクセスアドレスを用いて動作するモジュールにも適用可能である。例えば一つの例として、メモリ管理ユニット（ＭＭＵ）の代表的な構成例であるＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋ−ａｓｉｄｅ  Ｂｕｆｆｅｒ）に適用することができる。仮想記憶をサポートするデータプロセッサでは、前記ＭＭＵは仮想アドレスから物理アドレスへの変換機能を備えるのが一般的であり、前記ＴＬＢはオペレーティングシステムの仮想記憶サブシステムを構成するアドレス変換テーブルの一部を高速な連想メモリに保持し、仮想アドレスを検索キーとして物理アドレスの検索を行う。そして複数のオペレーティングシステムの実行が可能なドメイン保護機能を備えるデータプロセッサでは、前記ＴＬＢに保持される仮想アドレスから物理アドレスへの変換対が、どの保護ドメインに属するかを判定し、不正なメモリアクセスを遮断しなくてはならない。そのため、前述したキャッシュメモリと同様に、前記ＴＬＢに保護ドメイン（ＤＭＩＤ）を付加して記憶する必要がある。そこで、前記ＤＭＣＲをデータプロセッサに設けると共に前記拡張アレイを前記ＴＬＢに設けることで、保護ドメインによるメモリ保護機能と、キャッシュのタグに相当する仮想アドレス空間の拡張と、前記ＴＬＢを構成するＲＡＭのエラー訂正機能とを容易に切り換えることが可能となり、上記と同様の作用効果を奏する。
【０１１７】
また、他の例として、データ転送をＣＰＵに代わって行うＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）を備えるデータプロセッサにも前記拡張アレイ等は適用可能である。例えば、ＣＰＵが前記ＤＭＡＣに対し転送を要求する際に転送条件を設定するレジスタに、前記拡張アレイと同様の機能を持たせる。これにより、前記ＤＭＡＣが保護ドメインによるメモリ保護機能やアドレス空間の拡張等を容易に切り換えることが可能となり、上記と同様の作用効果を奏する。
【符号の説明】
【０１１８】
１〜３  データプロセッサ
１０、２０＿Ａ〜２０＿Ｃ  プロセッサコア
３０、３１  物理アドレス管理モジュール
４０、４１  主記憶装置
５０、５１  バス
１０１  ＣＰＵ
１０２、３０２  キャッシュメモリ
１０３  ドメインＩＤレジスタ
１０４、３０４  ドメイン制御レジスタ
１０５  ＭＭＵ
１０６、２０６  バスインターフェース
１０７、１０７Ａ〜１０７Ｃ  補完レジスタ
１０２１、３０２１  制御ロジック部
１０２２、３０２２  拡張アレイ
１０２３  タグアレイ
１０２４  データアレイ
１０２５、３０２５  比較部
１０２６、３０２６  書込み制御部
１０２７  拡張機能セレクタ
１０３０、１０３１  比較器
３０２７  エラー訂正論理部
３０２８＿０〜３０２８＿３  ＥＣＣデコード部
３０２９＿０〜３０２９＿３  選択回路
３０３０  拡張データ生成部
３０３１〜３０３３  比較器
３０３４  ロジック部
３０３５  ＥＣＣコード生成部
３０３６  選択回路
【図１】
2011180969.tif 000003
【図２】
2011180969.tif 000004
【図３】
2011180969.tif 000005
【図４】
2011180969.tif 000006
【図５】
2011180969.tif 000007
【図６】
2011180969.tif 000008
【図７】
2011180969.tif 000009
【図８】
2011180969.tif 000010
【図９】
2011180969.tif 000011
【図１０】
2011180969.tif 000012
【図１１】
2011180969.tif 000013
【図１２】
2011180969.tif 000014
【図１３】
2011180969.tif 000015
【図１４】
2011180969.tif 000016
【図１５】
2011180969.tif 000017