説明

データプロセッサ

【課題】必要とするリソースを最小限にしながら共有リソースへのアクセス管理及び共有リソースの物理アドレス空間の増大にも対応できるデータプロセッサを提供する。
【解決手段】データプロセッサ(1、2、3)は、プログラムを実行する中央処理装置(101)と当該中央処理装置のアドレス空間をアクセスするためのアドレス情報を出力する内部モジュール(105、102)とを有し、前記内部モジュールはメモリ保護に利用される識別子を前記アドレス情報に付加しない第1の動作モードと、前記識別子を前記アドレス情報に付加する第2の動作モードを有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データプロセッサに関し、特に、中央処理装置のアドレス空間をアクセスするためのアドレス情報を出力する機能を備えるデータプロセッサに適用して、有効な技術に関する。
【背景技術】
【0002】
近年、半導体デバイスの高集積化により、単一の中央演算処理装置を搭載したマイクロプロセッサを、複数搭載したマイクロプロセッサシステムが集積化されている。
【0003】
前記マイクロプロセッサシステムにおいては、主にLSIの面積に対する端子数の制約によって、各中央演算処理装置が利用する主記憶装置や入出力装置などのリソースについては、システム内で共有化されることが一般的である。このようにリソースを複数の中央演算処理装置が供用する場合、例えば、制御ソフトウェアのバグ等による不正アクセスが発生し、リソースである主記憶装置のメモリ部の衝突が起こることによりデータが正しく処理されない等の問題が発生する可能性がある。そこで、リソースを供用する場合には、不正アクセスを回避するためのリソースのアクセス管理が重要になる。
【0004】
複数の中央演算処理装置を搭載したマイクロプロセッサシステム上でプログラムを動作させる場合には、それに対応したオペレーティングシステムが必要となる。複数の中央演算処理装置を搭載したマイクロプロセッサシステムに対応するオペレーティングシステムの方式は、大きく2つに分類される。
【0005】
一つは、単一のオペレーティングシステムが複数の中央演算処理装置、単一の主記憶装置、及び入出力装置の全てを管理する対称型マルチプロセッサ方式であり、もう一つは、複数の中央演算処理装置にそれぞれオペレーティングシステムを搭載する非対称型マルチプロセッサ方式である。特に組み込み機器向けのマイクロプロセッサにおいては、非対称型マルチプロセッサ方式が用いられることが多い。その理由としては、ソフトウェア資産の移行が容易であることと、近年の組み込みシステムにおいて非対称のマルチプロセッサによれば特性の異なるサブシステムを容易に取り扱うことが可能となることが挙げられる。非対称型マルチプロセッサ方式を適用したマイクロプロセッサシステムの一例として、自動車用のマイクロプロセッサシステムがある。当該マイクロプロセッサシステムでは、カーナビゲーションシステムのように比較的大規模なデータを演算する情報系の処理と、ブレーキ制御のようにデータ規模は小さいがより信頼性の高い処理が要求される制御系の処理とを連携させ、1つのシステムとして共存・融合させている。近年、このようなマルチプロセッサの需要は急速に拡大している。
【0006】
非対称型マルチプロセッサ方式における共有リソース管理の従来の方法として、例えば、特許文献1に記載がある。特許文献1では、オペレーティングシステムとその制御下で動作するユーザプログラムを仮想マシンとして扱い、仮想マシンを識別するための仮想マシンID(VMID)を設定する。そして、物理的に実装されたメモリマネージメントユニット(MMU)やキャッシュメモリのエントリ毎にVMIDを記憶し、それらがどの保護ドメインに属するかを物理アドレス管理モジュール(PAM)で判定することにより、共有リソースへのアクセスを管理する方法が示されている。
【0007】
一方、近年のマイクロプロセッサシステムによる応用システムにおいて、動画像データ、又は音声データ等を用いた認識システム等で用いるデータベース等、より大規模なデータを扱うようになってきている。また、半導体デバイスの微細化とメモリ技術の向上により、安価なメモリデバイスが普及したことから、システムに搭載する主記憶容量は急速に増加してきている。特に、前述した非対称型のマルチプロセッサでは、供用される代表的なリソースである主記憶装置に、全てのオペレーティングシステムとユーザプログラムのコード、及び処理結果等のデータを記憶することが必要となるから、必然的に要求される主記憶容量の大幅な増加が求められる。これにより、マイクロプロセッサシステムにおける中央演算処理装置が取り扱うことが可能な物理アドレス空間の増加が必要となる。そこで、一般的に、主記憶を配置する物理アドレス空間を増大させるために、アドレス幅のより広い物理アドレスバスを設け、付随する物理アドレスを記憶するキャッシュのタグアレイや、MMUに格納するページ番号の幅を増加させる解決方法が採られている。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2008−97173号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
前述した異なるオペレーティングシステムの管理下で共有リソースを用いたプログラムの実行が可能な複数の中央演算処理装置を搭載したマイクロプロセッサシステムでは、以下に示す問題がある。
【0010】
第1の問題は、マイクロプロセッサシステムにおける共有リソース管理に伴うハードウェア規模の増大の問題である。例えば、特許文献1の方法により共有リソースの管理を行う場合、複数のオペレーティングシステムを区別するために前述のようにVMIDを用いる。そして、VMIDを記憶するためのメモリ部を、キャッシュメモリ等の連想メモリに設ける必要がある。例えばマイクロプロセッサシステム上に200個の保護ドメインが存在した場合には8ビットのVMIDが必要となるが、この8ビットの付加情報を記憶するためのメモリ部をマイクロプロセッサの連想メモリの全エントリに持たなければならない。汎用的に用いられるマイクロプロセッサシステムの場合には応用システムが異なるため、マイクロプロセッサのハードウェアが予め備えておくリソースを予め決めることは困難である。そこで非対称な構成で利用されるマルチプロセッサシステムでは、夫々のマイクロプロセッサの連想メモリが前記VMIDを記憶するためのメモリ部は必然的に余裕を持って大きめに設計されることになる。例えば2つのマイクロプロセッサを搭載したマルチプロセッサシステムにおいて、1個の保護ドメインを扱う第1のプロセッサと16個の保護ドメインを扱う第2のプロセッサが存在する場合、第1のプロセッサには前記VMIDは1ビットあれば良いが、第2のプロセッサは4ビットの前記VMIDが必要である。このような非対称な構成で利用されるマルチプロセッサシステムの場合、夫々のマイクロプロセッサが最大の保護ドメイン(4ビット)が扱えるように連想メモリが設計され、結果的に過大な仕様を定義することになる。このことは、特に低コストであることを重視する組込みプロセッサにとっては問題となる。
【0011】
第2の問題は、主記憶装置の物理アドレス空間の増大に伴うハードウェア規模の増大の問題である。前述のように主記憶の物理アドレス空間が増大すればそれに比例してMMUやキャッシュ等の連想メモリに記憶する物理アドレスのビット数を増やす必要があり、システム全体としてハードウェア規模が増大する。しかしながら、大規模な物理アドレス空間が要求される非対称型のマルチプロセッサシステムであっても、単一のオペレーティングシステムとその制御下にあるアプリケーションで見た場合には、それぞれが要求するメモリ容量は比較的小規模であり、またオペレーティングシステム毎にばらつきがある。例えば、一つのオペレーティングシステム及びその制御下で動作するサブシステムは4ギガバイトもの大きなメモリ空間を要求するが、別のサブシステムは小さなメモリ空間しか要求しない場合がある。このような場合、マルチプロセッサシステム全体としては4ギガバイトを超えるメモリ空間が必要となるが、個々の保護ドメインに属するサブシステムは4ギガバイト以下のメモリ空間で足りることが多い。しかし、複数のオペレーティングシステムを用いるマイクロプロセッサシステムにおいては、第1の問題と同様に、応用システムが異なる場合にマイクロプロセッサのハードウェアが備えるべきリソースを予め決めることは困難であるため、必然的に余裕を持って大きめに設計されることになる。このため、マイクロプロセッサは本来必要としない過大な仕様を備えることになり、第1の問題と同様に、特に組込みプロセッサの分野においてはコストの問題となり得る。
【0012】
本発明の目的は、必要とするリソースを最小限にしながら、共有リソースへのアクセス管理及び共有リソースの物理アドレス空間の増大にも対応できる、データプロセッサを提供することにある。
【0013】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【0014】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【0015】
すなわち、プログラムを実行する中央処理装置と当該中央処理装置のアドレス空間をアクセスするためのアドレス情報を出力する内部モジュールとを有するデータプロセッサにおいて、前記内部モジュールはメモリ保護に利用される識別子を前記アドレス情報に付加しない第1の動作モードと、前記識別子を前記アドレス情報に付加する第2の動作モードを有する。
【発明の効果】
【0016】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【0017】
すなわち、データプロセッサは、必要とするリソースを最小限にしながら、共有リソースへのアクセス管理及び共有リソースの物理アドレス空間の増大にも対応できる。
【図面の簡単な説明】
【0018】
【図1】図1は、実施の形態1に係るデータプロセッサのブロック図である。
【図2】図2は、CPU101が実行するプログラムの動作モードの説明図である。
【図3】図3は、実施の形態1に係るデータプロセッサの詳細なブロック図である。
【図4】図4は、DMCR104の設定値と拡張データの対応関係の一例である。
【図5】図5は、比較部1025のブロック図の一例である。
【図6】図6は、DMCR104の設定値と拡張アレイ1022に格納されるデータとの対応関係の一例である。
【図7】図7は、実施の形態2に係るデータプロセッサのブロック図である。
【図8】図8は、プロセッサコア20_A〜20_Cに係るDMIDとアドレス空間の設定例である。
【図9】図9は、実施の形態2に係るデータプロセッサ2の詳細なブロック図である。
【図10】図10は、バスインターフェース206が補完する情報の一例である。
【図11】図11は、実施の形態3に係るデータプロセッサ3のブロック図である。
【図12】図12は、DMCR304の設定値と拡張データの対応関係の一例である。
【図13】図13は、比較部3025のブロック図の一例である。
【図14】図14は、エラー訂正論理部3027のブロック図の一例である。
【図15】図15は、拡張データ生成部3030のブロック図の一例である。
【発明を実施するための形態】
【0019】
1.実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【0020】
〔1〕(2つの動作モード)
本発明の代表的な実施の形態に係るデータプロセッサ(1、2)は、プログラムを実行する中央処理装置(101)と、前記中央処理装置のアドレス空間上のデータの一部を保持する連想メモリ(102)と、メモリ保護に利用される識別子を保持する第1レジスタ(103)と、を有する。前記連想メモリは、タグを格納するタグ部(1022、1023)と、データを格納するデータ部(1024)とから構成される複数の連想エントリと、前記中央処理装置のアクセスに際し、前記中央処理装置から供給される情報とインデックスされたタグとを比較する比較部(1025)とを有する。また前記連想メモリは、前記供給される情報をアドレス情報とする第1の動作モードと、前記供給される情報をアドレス情報及び前記識別子とする第2の動作モードとを有する。これによれば、前記データプロセッサは、前記識別子を用いたメモリ保護と前記連想メモリに記憶する物理アドレスのビット数拡張とに対応することが可能となる。
【0021】
〔2〕(拡張部の切り換え)
項1のデータプロセッサは、前記連想メモリの前記動作モードを決定するための情報が保持される第2レジスタ(104)を更に有し、前記タグ部はアドレス情報を格納するアドレス部(1023)と拡張部(1022)とを有する。また、前記連想メモリは、前記第2レジスタの値に基づいて前記動作モードを決定し、前記拡張部は、前記第1の動作モードではアドレス情報が格納され、前記第2の動作モードでは前記識別子が格納される。これによれば、前記拡張部を供用するから2つの動作モードに対応することが容易となる。
【0022】
〔3〕(第1の動作モードにおける詳細動作)
項1又は項2のデータプロセッサにおいて、前記第1の動作モードでは、前記比較部は、前記供給されたアドレス情報と当該アドレス情報に対応する前記連想エントリにおける前記アドレス部及び前記拡張部に保持されたアドレス情報とを比較する。その結果、一致する場合には、前記連想メモリは当該連想エントリにおける前記データ部のデータを出力し、一致しない場合には、前記供給されたアドレス情報とそれに対応するデータとを、前記対応する前記連想エントリに格納する。
【0023】
〔4〕(第2の動作モードにおける詳細動作)
項1乃至3の何れかのデータプロセッサにおいて、前記第2の動作モードでは、前記比較部は、前記供給されたアドレス情報と当該アドレス情報に対応する前記連想エントリにおける前記アドレス部に保持された情報とを比較するとともに、前記供給された前記識別子と当該連想エントリにおける前記拡張部に保持された情報とを比較する。その結果、共に一致する場合には、前記連想メモリは、当該連想エントリにおける前記データ部のデータを出力し、一方又は双方が一致しない場合には、前記供給されたアドレス情報とそれに対応するデータとを、前記対応する前記連想エントリに格納する。
【0024】
〔5〕(ドメイン識別子)
項1乃至4の何れかのデータプロセッサにおいて、前記メモリ保護に利用される識別子は、前記プログラムの実行を管理する上位ソフトウェアを識別するためのドメイン識別子である。これによれば、前記上位ソフトウェア毎のメモリ保護が可能となる。
【0025】
〔6〕(複数のデータ処理部)
項1乃至5の何れかのデータプロセッサは、前記中央処理装置と、前記連想メモリと、前記第1レジスタと、前記第2レジスタと、を一組とするデータ処理部(20_A〜20_C)を複数組有し、前記第2レジスタは、前記データ処理部毎に設定可能とされる。
【0026】
〔7〕(アドレス空間のビット数補完)
項6のデータプロセッサは、夫々の前記データ処理部によって共通利用されるバス(20、21)を更に有し、前記データ処理部は、前記中央処理装置のアクセス要求に応じて、前記中央処理装置が供給するアドレス情報を出力するための制御を行うアクセス制御部(206)と、アドレス情報を補完するための情報が格納される第3レジスタ(107、107A〜107C)とを有する。また、前記バスは、複数の前記データ処理部のうち、最大となるアドレス空間に応じたバス幅以上のバス幅を有する。さらに、前記アクセス制御部は、前記中央処理装置がアクセス要求を行う際、前記中央処理装置が供給するアドレス情報に基づくアドレス幅が前記バス幅に対して小さいと判断した場合には、前記第3レジスタの値に基づいて、当該アドレス情報に所定の情報を補完した新たなアドレス情報を前記バスに出力する。これによれば、前記データ処理部のアドレス空間のビット数と前記バスのビット数が一致しない場合であっても、前記データ処理部を適用することができる。
【0027】
〔8〕(識別子のビット数補完)
項7のデータプロセッサにおいて、前記アクセス制御部は更に、前記中央処理装置のアクセス要求に応じて、前記第1レジスタの値を出力する制御を行う。
【0028】
〔9〕項8のデータプロセッサにおいて、前記第3レジスタは更に、前記第1レジスタの値を補完するための情報が格納され、前記バスは更に、複数の前記データ処理部のうち、前記メモリ保護に利用される識別子の最大となるデータ量に応じたバス幅以上のバス幅を有する。また、前記アクセス制御部は、前記中央処理装置がアクセス要求を行う際、前記第1レジスタの値が前記バス幅に対して小さいと判断した場合には、前記第3レジスタの値に基づいて、当該第1レジスタの値に所定の情報を補完した新たな情報を前記バスに出力する。これによれば、前記データ処理部の識別子のビット数と前記バスのビット数が一致しない場合であっても、前記データ処理部を適用することができる。
【0029】
〔10〕(補完の具体的方法)
項7乃至9の何れかのデータプロセッサにおいて、前記アクセス制御部は、前記第2レジスタの値を参照して補完すべきビット数を決定する。これによれば、前記第2レジスタの値を参照することで前記データ処理部の前記動作モードがわかるから、補完すべきビット数を決定することが容易となる。
【0030】
〔11〕(2つの動作モード(ECC))
本発明の代表的な別の実施の形態に係るデータプロセッサ(1、2、3)は、プログラムを実行する中央処理装置(101)と、前記中央処理装置のアドレス空間上のデータの一部を保持する連想メモリ(302)と、を有する。前記連想メモリは、タグを格納するタグ部(1022、1023、3022)と、データを格納するデータ部(1024)とから構成される複数の連想エントリと、前記中央処理装置のアクセスに際し、前記中央処理装置から供給される情報とインデックスされたタグとを比較する比較部(1025、3025)とを有する。また、前記連想メモリは、前記供給される情報をアドレス情報とする第1の動作モードと、前記供給される情報をアドレス情報及び誤り訂正のための情報とする第2の動作モードとを有する。これによれば、前記データプロセッサは、ソフトエラー対策と前記連想メモリに記憶する物理アドレスのビット数拡張とに対応することが可能となる。
【0031】
〔12〕(拡張部の切り換え)
項11のデータプロセッサは、前記連想メモリの前記動作モードを決定するための情報が保持される第1レジスタ(103)を更に有し、前記タグ部は、アドレス情報を格納するアドレス部(1023)と、拡張部(1022、3022)とを有する。前記連想メモリは、前記第1レジスタの値に基づいて前記動作モードを決定し、前記拡張部は、前記第1の動作モードではアドレス情報が格納され、前記第2の動作モードでは前記誤り訂正のための情報が格納される。これによれば、前記拡張部を供用するから、2つの動作モードに対応することが容易となる。
【0032】
〔13〕(キャッシュメモリ)
項2乃至12の何れかのデータプロセッサにおいて、前記連想メモリは、キャッシュメモリである。
【0033】
〔14〕(アドレス変換バッファ)
項2乃至12の何れかのデータプロセッサにおいて、前記連想メモリは、前記中央処理装置の仮想アドレス空間における仮想アドレスを物理アドレスへアドレス変換するためのアドレス変換対を記憶するアドレス変換バッファである。
【0034】
〔15〕(内部モジュール)
本発明の代表的な別の実施の形態に係るデータプロセッサ(1、2、3)は、プログラムを実行する中央処理装置(101)と、前記中央処理装置によるデータ処理に基づいて、前記中央処理装置のアドレス空間をアクセスするためのアドレス情報を出力する内部モジュール(105、102、302)と、メモリ保護に利用される識別子を保持する第1レジスタ(103)と、を有する。前記内部モジュールは、前記アドレス情報に前記識別子を付加しない第1の動作モードと、前記アドレス情報に前記識別子を付加する第2の動作モードとを有する。これによれば、前記データプロセッサは、前記内部モジュールのアクセスに対するメモリ保護と物理アドレスのビット数の拡張とに対応することが可能となる。
【0035】
〔16〕(動作モードの切り換え)
項15のデータプロセッサは、前記動作モードを決定するための情報が保持される第2レジスタ(104、304)を更に有し、前記内部モジュールは、前記第2レジスタの値に基づいて前記動作モードを決定する。また、前記メモリ保護に利用される識別子は、前記プログラムの実行を管理する上位ソフトウェアを識別するためのドメイン識別子である。これによれば、2つの動作モードの切り換えが容易となり、また、前記上位ソフトウェア毎のメモリ保護が可能となる。
【0036】
2.実施の形態の詳細
実施の形態について更に詳述する。
【0037】
≪実施の形態1≫
図1は、実施の形態1に係るデータプロセッサの一例である。
【0038】
図1に示されるデータプロセッサ1は、データ処理を行うプロセッサコア(PRO_CORE)10と主記憶装置(MEM)40のアクセスを管理する物理アドレス管理モジュール(PAM)30とを有し、それらはバス50に共通接続される。また、前記PAM30には前記プロセッサコア10等の共有リソースである前記主記憶装置40が接続される。なお、前記バス50には、図示を省略するI/O回路、及びその他の周辺回路も接続される。
【0039】
前記プロセッサコア10は、中央処理装置(以下、「CPU」という。)101、メモリ管理ユニット(MMU)105、キャッシュメモリ(CACHE)102、ドメインIDレジスタ(DMID)103、ドメイン制御レジスタ(DMCR)104、及びバスインターフェース(BIF)106を有する。なお、図1には本実施の形態の説明に必要な構成要素のみ示している。
【0040】
前記CPU101は、前記主記憶装置40に格納された命令をフェッチし、フェッチした命令をデコードし、デコードされた命令に従ってデータ処理を行う。また、前記CPU101における前記主記憶装置40に対するアクセスは、32ビットの論理アドレスと、後述する8ビットの保護ドメインID(ドメインID)によって指定される。論理アドレスは前記MMU105によって物理アドレスに変換され、前記バスインターフェース106を介して前記バス50上に物理アドレスと前記ドメインIDを出力することによりアクセスが実行される。
【0041】
前記キャッシュメモリ102は、特に制限されないが、物理キャッシュである。前記キャッシュメモリ102の詳細については、後述する。
【0042】
前記ドメイン制御レジスタ(DMCR)104は、詳細は後述するが、前記キャッシュメモリ102の拡張アレイ1022に記憶される情報の種類を決定するための値が格納される。
【0043】
前記ドメインIDレジスタ103には、ドメインID(DMID)が格納される。
【0044】
前記ドメインIDについて、詳細に説明する。
【0045】
前記CPU101は複数のプログラムを実行する。それらのプログラムはアクセス可能なアドレス範囲が異なり、複数の動作モードで動作する。
【0046】
図2は、前記CPU101が実行するプログラムの動作モードの説明図である。
【0047】
図2に示すように、上位ソフトウェアであるオペレーティングシステムのプログラムは特権モード(PRIV mode)で表され、ユーザアプリケーションを実行するためのプログラムはユーザモード(USER mode)で表される。本実施の形態に係るデータプロセッサ1では、さらに上位の複数のオペレーティングシステムを管理統括する動作モード(以下、「XVSモード(XVS mode)」という。)を有する。前記XVSモードは最も権限が高い動作モードであり、オペレーティングシステム間の干渉防止や通信を実現するドメイン管理ソフトウェア(DMGR)が実行される。前記XVSモードでは、前記ドメインIDレジスタ103、及び前記ドメイン制御レジスタ104や前記PAM30の設定の書き換えを行うことが可能である。一方、前記XVSモード以外の動作モード(特権モード及びユーザモード)では上記設定の書き換えがモードレジスタ等のハードウェアで禁止され、ソフトウェアの不具合や悪意のあるプログラムからの保護が保障される。
【0048】
前記ドメインIDは、前記プログラムの実行を管理する上位ソフトウェアを識別するものであり、オペレーティングシステム毎に番号が割り振られている。前記ドメインIDは、複数のオペレーティングシステムが動作する場合に夫々のオペレーティングシステムを区別するために用いられる。前記CPU101は、前記XVSモードにおいて、実行されるオペレーティングシステムのドメインIDを前記ドメインIDレジスタに記憶する。本実施の形態では、前記ドメインIDをメモリ保護に用いる。例えば、オペレーティングシステムの管理下で動作するアプリケーションプログラムの前記主記憶装置40に対するアクセスが前記PAM30により管理される。
【0049】
前記PAM30による前記主記憶装置40のアクセス管理の具体的な方法は以下である。
【0050】
前記PAM30は、前記主記憶装置40のアドレスと当該アドレスにアクセス可能な保護ドメインID(DMID)とのデータ対を、エントリテーブルに複数記憶する。そして、前記プロセッサコア10が前記主記憶装置40に対してアクセスを要求するとき、前記PAM30は前記バス50に出力された物理アドレス(PADR)及び前記ドメインIDを受け取って、当該前記エントリテーブルのデータ対と比較することで、アクセス権限の確認を行う。なお、前記エントリテーブルは前記XVSモードで設定可能であり、例えば、システム起動時に、前記ドメイン管理ソフトウェアがオペレーティングシステムの起動に先立って設定を行う。
【0051】
図3は、実施の形態1に係るデータプロセッサの詳細なブロック図である。
【0052】
前記CPU101の論理アドレス空間は、特に制限されないが、32ビットのアドレス信号で管理される空間である。前記MMU105で生成される物理アドレス空間は最大で40ビット、最低32ビットのアドレス信号で管理される空間である。前述のように、ここでは理解を容易化するために、前記MMU105は32ビットの論理アドレスを上位物理アドレス(UPADR)[39:32]と下位物理アドレス(LPADR)[31:0]併せて一律40ビットの物理アドレスに変換し、32ビットの論理アドレスは32ビットのLPADRに等しくされる。
【0053】
上述のように前記CPU101の物理アドレス空間は最低32ビットのアドレス空間を更に8ビット拡張でき、また、前記PAM30による前記主記憶装置40のメモリ保護には最大8ビットのDMIDを用いることができる。前記キャッシュメモリ102は、最大8ビットのアドレス拡張と最大8ビットのDMIDを用いたメモリ保護に整合する連想記憶を行うことができるように考慮されている。以下その内容について詳述する。
【0054】
前記キャッシュメモリ102は、SRAMで構成されたメモリ部1022〜1024と、タグアドレスの比較などを行ってキャッシュヒットかキャッシュミスかの判定等を行う比較部1025と、判定結果に基づいてデータを選択して出力する選択部1029と、前記メモリ部1022〜1024と前記比較部1025を制御する制御ロジック部1021とを有する。
【0055】
前記メモリ部1022〜1024は、特に制限されないが、4ウェイセットアソシアティブ構成を備え、セット毎に、拡張アレイ1022、タグアレイ1023及び、データアレイ1024を有する。夫々のアレイはインデックスアドレスによってインデックス可能にされるデータ行を有し、各アレイの対応するデータ行を併せてキャッシュラインと称し、キャッシュラインは、前記拡張アレイ1022における拡張データ、前記タグアレイ1023におけるタグ情報、前記データアレイ1024における複数アクセス単位分のデータ情報、及び有効ビットをキャッシュエントリとして保持する。
【0056】
前記拡張データは、例えば最大8ビットの拡張アドレス情報又は最大8ビットのDMIDであり、前記CPU101がメモリアクセスに際して出力する論理アドレスは便宜上、タグアドレスTAG、インデックスアドレスINDEX、及びオフセットアドレスOFSTとして図示する。ここでは32ビットの下位物理アドレス(LPADR)もこれと同じであると理解された。
【0057】
前記CPU101のアクセスに際して前記メモリ部1022〜1024はインデックスアドレスINDEXで指定されるキャッシュラインの情報を前記比較部1025に与え、前記比較部1025はそのときの物理アドレス情報と前記DMCR104及び前記ドメインIDレジスタ103の値を参照してキャッシュヒット又はミスを判別する。前記CPU101のリードアクセスにおいてキャッシュヒットであればヒットに係るウェイのキャッシュラインの前記データアレイ1024のデータが前記選択部1029で選択され、オフセットアドレスOFSTで指定される必要なデータだけが前記CPU101に返される。リードアクセスにおいてキャッシュミスであれば前記制御ロジック部1021はそのときにアクセスアドレスを利用してバスサイクルを起動し、キャッシュミスに係るデータを読込んで前記CPU101に返すと共に読込んだデータなどに基づいてキャッシュエントリを生成する。ライトアクセスにおいてキャッシュヒットであればヒットに係るウェイのキャッシュラインの前記データアレイ1024に前記制御ロジック部1021が書込みデータを書込む。ライトアクセスにおいてキャッシュミスであれば前記制御ロジック部1021はそのときにアクセスアドレスを利用してバスサイクルを起動し、キャッシュミスに係るデータを読込んでキャッシュエントリを生成し、生成したキャッシュエントリの該当する前記データアレイ1024にキャッシュミスに係る書込みデータを格納する。
【0058】
前記拡張アレイ1022における拡張データは、前記DMCR104の設定によって決定される。
【0059】
図4は、前記DMCR104の設定値と前記拡張データの一例である。
【0060】
前記DMCR104の設定は当該データプロセッサ1の応用システムにおいて必要な保護ドメインの数と、保護ドメイン内で利用する最大の主記憶容量値から決定される。例えば、オペレーティングシステムの数が10種類あり、その中で要求される最大の主記憶容量値が64GBである場合には、保護ドメインとして4ビットが必要となり、物理アドレスとして32ビットの下位物理アドレスに4ビットの上位物理アドレスを加えた36ビットが必要となる。そこで、前記拡張アレイ1022の8ビットの記憶容量を4ビットずつに分割し、一方の4ビットにDMIDを記憶し、他方の4ビットに上位物理アドレスを記憶できるようにする。この場合、図4に示すように、前記DMCR104の設定値を“01”とすることで、前記拡張アレイ1022[7:4]に上位物理アドレス[35:32]が記憶され、前記拡張アレイ1022[3:0]にDMID[3:0]が記憶される。一方、物理アドレスを拡張せず保護ドメインとして8ビットが必要な場合には前記DMCRの値を“00”に設定することで前記拡張アレイ1022[7:0]にDMID[7:0]が記憶され、物理アドレスを8ビット拡張する場合には前記DMCRの値を“10”に設定することで前記拡張アレイ1022[7:0]にUPADR[39:32]が記憶される。なお、前記DMCR104の設定値と前記拡張データの対応は上記の例に限定されず、前記拡張アレイ1022の用途に応じて変更可能である。
【0061】
次にリードアクセスにおける前記キャッシュメモリ102の動作について詳細に説明する。
【0062】
前記CPU101のリードアクセスに際して前記メモリ部1022〜1024はインデックスアドレスINDEXで指定されるキャッシュラインの情報を前記比較部1025及び前記選択部1029に与える。すなわち、ウェイ毎の前記タグ情報、前記有効ビット、及び前記拡張データが前記比較部1025に与えられ、夫々のウェイの前記データ情報が前記選択部1029に与えられる。更に、前記比較部1025は、UPADRとLPADRを入力する。前記比較部1025の動作について、図5を用いて詳細に説明する。
【0063】
図5は前記比較部1025のブロック図の一例である。
【0064】
前記比較部1025は、拡張機能セレクタ1027、及び比較器1030、1031を有する。
【0065】
前記拡張機能セレクタ1027は、前記DMCR104の値と、前記ドメインIDレジスタ103の値(DMID)とUPADRとを入力し、前記DMCR104の値に基づいてUPADR若しくはDMID、又はそれらの双方を選択して出力する。例えば図4の場合において、前記DMCRの値が“00”の場合にはDMID[7:0]を選択して出力する。また、前記DMCRの値が“11”の場合には上位物理アドレス[39:32]を選択して出力し、前記DMCRの値が“01”の場合にはDMID[3:0]と上位物理アドレス[35:32]を選択して夫々出力する。
【0066】
前記比較器1031は、前記拡張機能セレクタ1027によって選択されたデータと前記拡張アレイ1022の情報とをウェイ毎に比較し、比較結果が一致している場合に比較結果一致を、そうでない場合には比較結果不一致を、ウェイ毎に出力する。例えば前記DMCR104の値が“00”の場合には、前記拡張データはDMID[7:0]であるので、前記比較器1031はDMIDの比較を行う。前記比較器1030は前記タグ情報[31:0]とLPADR[31:0]とをウェイ毎に比較し、比較結果が一致で且つ有効ビットが有効を示している場合に比較結果一致を、そうでない場合には比較結果不一致を、ウェイ毎に出力する。そして、前記比較器1030と前記比較器1031が共に比較結果一致となったウェイがあった場合は、前記比較部1025はキャッシュヒットをウェイ毎の信号HITにて出力する。一方、何れのウェイにおいても比較結果不一致であった場合は、キャッシュミスを前記信号HITにて出力する。前記HIT信号は前記制御ロジック部1021と前記選択部1029に与えられる。
【0067】
前記比較部1025による比較によりキャッシュヒットとなった場合には、前記選択部1029が前記信号HITに基づいて、4つのウェイのうちヒットした1つのウェイのデータを選択して出力する。一方、キャッシュミスとなった場合には、前記制御ロジック部1021がそのときの物理アドレスを利用してバスサイクルを起動し、キャッシュミスに係るデータを読込むための指令を前記バスインターフェース106に与える。前記バスインターフェース106は、前記PAM30に物理アドレスともにDMIDを与えることで前記主記憶装置40からのデータの転送を指示する。このとき、前記バスインターフェース106は前記DMCR104の値を参照し、管理されるアドレス空間のビット数に応じた物理アドレスを前記PAM30に与える。例えば図4の場合において、前記DMCR103の値が“00”のとき、管理されるアドレス空間は32ビットであるから、LPADR[31:0]を出力する。一方、前記DMCR103の値が“11”のとき、管理されるアドレス空間は40ビットであるから、UPADR[39:32]とLPADR[31:0]を出力する。
【0068】
上記指示により前記主記憶装置40から得られたデータは、前記バスインターフェース106を介して前記制御ロジック部1021に与えられる。そして、前記制御ロジック部1021は、読み込んだデータのうち前記オフセットアドレスOFSTで指定される必要なデータだけを前記CPU101に返すとともに、読み込んだデータに基づいてキャッシュエントリを生成する。キャッシュエントリの生成方法を以下に記す。
【0069】
前記制御ロジック部1021は、読み込んだデータをインデックスされたキャッシュラインに対応する前記データアレイ1024に格納する。また、前記制御ロジック部1021の内部に備えられた書込み制御部1026が、インデックスされたキャッシュラインに対応する前記タグアレイ1023にアクセスアドレスのLPADRのタグ情報を記憶するとともに有効ビットを有効にする。更に前記書込み制御部1026は、前記DMCR104の値に基づいて、当該キャッシュラインに対応する前記拡張アレイ1022に前記拡張データを記憶する。
【0070】
図6に、前記DMCR104の設定値と前記拡張アレイ1022に格納されるデータとの対応関係の一例を示す。
【0071】
前記書込み制御部1026は、例えば図6に示すように、前記DMCR104の値が“00”の場合にはDMID[7:0]を前記拡張データとして前記拡張アレイ1022に格納し、前記DMCR104の値が“11”の場合にはUPADR[39:32]を前記拡張データとして格納する。さらに、前記DMCRの値が“01”の場合には、DMID[3:0]とUPADR[35:32]を併せた8ビットを前記拡張データとして格納する。
【0072】
以上の方法によりインデックスされたキャッシュラインに対応する前記メモリ部1022〜1024に前記タグ情報、前記拡張データ、及びデータ情報が格納される。
【0073】
次にライトアクセスにおける前記キャッシュメモリ102の動作について説明する。
【0074】
前記CPU101のライトアクセスに際して、前述のリードアクセス時と同様に、前記比較部1025に対しインデックスアドレスINDEXで指定されるキャッシュラインのウェイ毎の前記タグ情報及び前記有効ビットが与えられる。そして、リードアクセス時と同様の方法により前記拡張機能セレクタ1027が選択したデータと前記拡張データとの比較を前記比較器1031が行うとともに、前記比較器1030が前記タグ情報とLPADRとの比較を行うことによりキャッシュヒット又はミスを判別する。比較した結果、キャッシュヒットであればヒットに係るウェイのキャッシュラインに対応する前記データアレイ1024のオフセットアドレスOFSTによってインデックスされるデータアレイに対し、前記制御ロジック部1021がデータを書込む。一方キャッシュミスであれば、リードアクセス時と同様の方法で前記制御ロジック部1021はそのときにアクセスアドレスを利用してバスサイクルを起動し、キャッシュミスに係るデータを読込んでキャッシュエントリを生成する。そして、当該エントリに係る前記データアレイ1024のオフセットアドレスOFSTによってインデックスされるデータアレイに対し、キャッシュミスに係る書込みデータを格納する。
【0075】
以上実施の形態1に係るデータプロセッサによれば、前記キャッシュメモリ102は、前記拡張アレイ1022と前記DMCR104を備えることで、応用システムに応じて保護ドメイン数と物理アドレス空間の大きさを段階的に選択することが可能となる。これにより、8ビットの保護ドメインと8ビットの上位物理アドレスを別個に記憶する従来方式と比較して、前記プロセッサコア10の面積を大きく占めるキャッシュメモリアレイの規模を小さく抑えることができる。
【0076】
≪実施の形態2≫
図7は、実施の形態2に係るデータプロセッサのブロック図である。
【0077】
図7に示されるデータプロセッサ2は、プロセッサコアを複数有し、夫々のプロセッサコア20_A〜20_Cはバス51に共通接続され、物理アドレス管理モジュール(PAM)31を介して主記憶装置41を供用する。前記PAM31は、前記PAM30と同様の方法により前記主記憶装置41のアクセスを管理する。また、前記プロセッサコア20_A〜20_Cは、実施の形態1に係るプロセッサコア10と同様の機能を有し、夫々独立したDMIDとアドレス空間を設定することが可能である。
【0078】
図8に前記プロセッサコア20_A〜20_Cに係るDMIDとアドレス空間の設定例を示す。
【0079】
図8において、前記プロセッサコア20_Aは1つの保護ドメインと40ビット(1TB)の物理アドレス空間が設定される。また、前記プロセッサコア20_Bは16個(4ビット)の保護ドメインと36ビット(64GB)の物理アドレス空間が設定され、そして前記プロセッサコア20_Cは256個(8ビット)の保護ドメインと32ビット(4GB)の物理アドレス空間が設定される。このとき、前記バス51は前記プロセッサコア20_A〜20_Cにおける最大のアドレス空間40ビットと最大の保護ドメイン数8ビット(256個)のバス幅を含み、前記PAM31及び前記主記憶装置41は、とり得る最大の物理アドレス空間40ビットで特定される空間に対し、256個の保護ドメインに分割して対応できるようになっている。このように異なる保護ドメイン数と物理アドレス空間が設定された複数のプロセッサコアがバスアクセスする場合に以下のような問題が生じる。
【0080】
例えば、図8に示すように設定された前記プロセッサコア20_Bに係るキャッシュメモリ102_Bがキャッシュミスに係るデータを読込むための指令をバスインターフェースに与える場合において、前記バスインターフェースは前記PAM31に物理アドレスと共に保護ドメイン(DMID)を与えることで前記主記憶装置41からのデータの転送を指示する。このとき、前記プロセッサコア20_Bにおいて管理される物理アドレス空間は36ビット、保護ドメインは4ビットであるから、8ビットの保護ドメインと40ビットのアドレス空間が設定されたアクセス対象にバスアクセスを行うためには情報が不足するという問題が生じる。そこで、実施の形態2に係る前記プロセッサコア20_A〜20_Cは、実施の形態1に係るプロセッサコア10の前記バスインターフェース106に代えて、バスアクセスのためのアドレスビット数と保護ドメインに情報を補完する機能を有するバスインターフェース206を有し、更に前記補完のための情報が格納される補完レジスタ(EXTID)107を有する。
【0081】
図9に前記データプロセッサ2の詳細なブロック図を示す。ここでは説明を容易にするため、前記プロセッサコア20_A〜20_Cのうち一つのプロセッサコアと前記バス51との接続関係のみ示す。
【0082】
図9において、前記バスインターフェース206と前記EXTID107以外の構成要素は前記プロセッサコア10と同様である。前記バスインターフェース206は、上位物理アドレス(UPADR)、下位物理アドレス(LPADR)、前記ドメインIDレジスタ103及び前記DMCR104の値を入力すると共に前記EXTID107の値を入力する。
【0083】
前記EXTID107には、前記DMCR104の値に応じた補完ビットの情報が格納される。特に限定されないが、ここでは前記拡張アレイ1022と同一に8ビットの記憶容量を備える。例えば前述した図4の場合において、前記DMCR104の値が“00”のとき、物理アドレスは32ビット、DMIDは8ビットであるから、バスアクセスを行うためには物理アドレスが8ビット不足する。そこで、前記EXTID107には8ビット分の物理アドレスの補完ビットが格納される。また、前記DMCR104の値が“01”であるとき、物理アドレスは36ビット、DMIDは4ビットであるから、前記EXTID107には物理アドレスとDMIDの夫々につき4ビット分の補完ビットが格納される。更に、前記DMCR104の値が“10”であるとき、物理アドレスは40ビット、DMIDは0ビットであるから、前記EXTID107には8ビット分のDMIDの補完ビットが格納される。
【0084】
前記バスインターフェース206によるビットの補完に係る具体的な処理内容は以下である。
【0085】
例えば前記キャッシュメモリ102がキャッシュミスに係るデータを読込む場合において、前記バスインターフェース206がデータを読み込むための指令を前記キャッシュメモリ102から受け取ると、前記バスインターフェース206は前記DMCR104の値を参照する。そして、前記バスインターフェース206は前記DMCR104の値に基づいて、入力された物理アドレスとDMIDの情報に前記補完ビットを補完して、新たな物理アドレスPADR2とDMID2を前記PAM31に与えることで前記主記憶装置41からのデータの転送を指示する。
【0086】
図10は、前記バスインターフェース206が補完する情報の一例である。
【0087】
例えば前記DMCRの値が“00”であるとき、前記バスインターフェース206は前記EXTID107に格納された前記補完ビット[7:0]を上位物理アドレス(UPDR2)とし、当該UPADR2[7:0]とLPADR[31:0]とを併せた新たな物理アドレスPADR2[39:0]を出力する。また前記バスインターフェース206は、前記DMID[7:0]を前記DMID2[7:0]として出力する。前記DMCRの値が“01”であるとき前記バスインターフェース206は、前記EXTID107に格納された前記補完ビット[7:4]を上位物理アドレス(UPDR2)とし、当該UPADR2[7:4]とLPADR[31:0]とを併せた物理アドレスPADR2[35:0]を出力する。また、前記バスインターフェース206は、前記EXTID107に格納された前記補完ビット[3:0]と前記DMID[7:4]とを併せたDMID2[7:0]を出力する。このとき、前記DMID2[7:0]のうち上位側のDMID2[7:4]の値のみが意味をなす。前記DMCRの値が“00”であるとき、前記バスインターフェース206は、前記EXTID107に格納された前記補完ビット[7:0]をDMID2[7:0]として出力する。このとき、前記DMID2[7:0]の値は意味をなさない。また、前記バスインターフェース206は、前記UPADR[38:32]をUPADR2[38:32]として出力される。
【0088】
以上実施の形態2によれば、前記キャッシュメモリ102のバスアクセスに際し、プロセッサコアのバスインターフェースから出力するアドレス等のビット数とアクセスの対象のアドレス等のビット数とが相違する場合であってもバスアクセスが可能となるから、前記キャッシュメモリ102を適用した複数のプロセッサコアを共通バスに接続することができる。
【0089】
実施の形態2に係るデータプロセッサの構成を適用しない従来のデータプロセッサでは、複数のプロセッサコアが要求する物理アドレス空間及び保護ドメインが異なる場合、最大の物理アドレス空間及び最大の保護ドメイン数を兼ね備えたキャッシュメモリを採用しなければならなかった。しかし本実施の形態によれば、プロセッサコアの面積を小さく抑えつつも、多様なドメインに対応した保護と物理アドレス空間の拡張に対応することができる。
【0090】
≪実施の形態3≫
図11に実施の形態3に係るデータプロセッサ3を示す。
【0091】
実施の形態1に係るデータプロセッサ1では、前記キャッシュメモリ102の前記拡張アレイ1022に前記物理アドレスと前記保護ドメイン(DMID)が切り換え可能に格納されたが、前記データプロセッサ3に係る前記拡張アレイには、前記保護ドメイン(DMID)と誤り訂正符号(以下、「ECC(Error Checking and Correction)コード」という。)が切り換え可能に格納される。ここで、ECCとは、RAM(Random Access Memory)を構成する記憶素子の情報が放射線や中性子線の影響で反転するソフトエラーを回避するために誤りを検出して訂正する機能である。以下の説明では、32ビットのデータに対して4ビットの冗長ビットを用いるECCを一例として説明する。
【0092】
実施の形態3に係る前記データプロセッサ3は、実施の形態1に係るデータプロセッサ10の前記キャッシュメモリ102と前記DMCR104に代えて、キャッシュメモリ302とドメイン制御レジスタ(DMCR)103を有する。
【0093】
前記キャッシュメモリ302は、データのエラーを検出し訂正するエラー訂正論理部(ECR(Error Corrector))3027を更に有し、また前記拡張アレイ1022、前記制御ロジック部1021、及び前記比較部1025に代えて、拡張アレイ3022、制御ロジック部3021、及び比較部3025を有する。その他の構成要素は前記キャッシュメモリ102と同様とすることで、その詳細な説明を省略する。
【0094】
前記拡張アレイ3022は、特に制限されないが、ここでは8ビットの記憶容量を持つ。前記拡張データは、例えば最大8ビットの保護ドメイン(DMID)又は最大4ビットのECCコードであり、それは前記DMCR304の設定値によって決定される。
【0095】
図12に、前記DMCR304の設定値と拡張データの対応関係の一例を示す。
【0096】
この場合、前記DMCR304の値を“0”に設定することで、前記拡張アレイ3022[7:0]にDMID[7:0]が記憶される。一方、前記DMCR304の値を“0”に設定することで、前記拡張アレイ3022[3:0]にDMID[3:0]が記憶されると共に前記拡張アレイ3022[7:4]にECCコード[3:0]が記憶され、前記キャッシュメモリ302は、4ビットの保護ドメイン(DMID)と4ビットの冗長符号を備えたECCメモリに対応するキャッシュメモリとなる。
【0097】
前記比較部3025は、前記CPU101のリードアクセスに際して、前記比較部1025と同様にキャッシュヒット又はミスを判別する。このとき、前記比較部1025は、前記拡張データEXT[7:0]とDMID[7:0]の比較を実行するが、当該比較は、DMIDの上位側DMID[7:4]と前記拡張データの上位側拡張データEXT[7:4]の比較と、DMIDの下位側DMID[3:0]と前記拡張データの下位側拡張データEXT[3:0]の比較に分割されて実行される。
【0098】
前記比較部3025は、前記CPU101のリードアクセスに際して、前記拡張アレイ3022と前記タグアレイ1023からウェイ毎の前記タグ情報TAG、前記有効ビット、及び前記拡張データEXTが与えられる。また、前記比較部3025は、UPADR、LPADR、前記DMID、及びDMCR304の値を入力する。
【0099】
図13は前記比較部3025のブロック図の一例である。
【0100】
前記比較部3025は、比較器3031〜3033、及びロジック部3034を有する。
【0101】
前記比較器3031は、LPADRと前記タグ情報TAGとをウェイ毎に比較し、比較結果が一致している場合に比較結果一致を、そうでない場合には比較結果不一致を、ウェイ毎に出力する。また、前記比較器3032は、前記下位側DMID[3:0]と前記下位側拡張データEXT[3:0]をウェイ毎に比較し、比較結果が一致している場合に比較結果一致を、そうでない場合には比較結果不一致を、ウェイ毎に出力する。更に、前記比較器3033は、前記上位側DMID[7:4]と前記上位側拡張データEXT[7:4]をウェイ毎に比較し、比較結果が一致している場合に比較結果一致を、そうでない場合には比較結果不一致を、ウェイ毎に出力する。
【0102】
前記ロジック部3034は前記比較器3031〜3033の比較結果を入力し、キャッシュヒット・キャッシュミスをウェイ毎の信号HITにて出力する。このとき前記ロジック部3034は、前記DMCR304の値を入力し、前記DMCR304の値に応じて前記比較器3033の比較結果の有効と無効を判断する。すなわち、図12の場合において前記DMCR304の値が“0”のとき、前記上位側拡張データEXT[7:4]と前記下位側拡張データEXT[3:0]は共にDMIDであるので、前記比較部3033の比較結果を有効とし、全ての前記比較器3031〜3033の比較結果に基づいてキャッシュヒット・ミスを判断する。一方、前記DMCR304の値が“1”のとき、前記上位側拡張データEXT[7:4]はECCコードであり、下位側拡張データEXT[3:0]はDMIDである。すなわち、前記比較部3033はECCコードとDMIDを比較していることから、前記ロジック部3034は当該比較結果を無効とし、前記比較器3031と前記比較器3032の比較結果に基づいてキャッシュヒット・ミスを判断する。前記比較部3033の比較結果の有効・無効を判断するには、例えば図13に示すように、前記比較部3033の比較結果と前記DMCR304の値の論理和をウェイ毎にとればよい。
【0103】
前記エラー訂正論理部(ECR)3027は、前記CPU101のリードアクセスに際して、前記データアレイ1024から与えられたデータDATAのエラーを検出し訂正する。また、前記ECR3027は、前記DMCR304の値に基づいて、エラー訂正を施したデータ又は前記データDATAの何れかを選択して出力する。
【0104】
図14に前記ECR3027のブロック図の一例を示す。
【0105】
前記ECR3027は、前記CPU101のリードアクセスに際して、前記拡張アレイ3022と前記データアレイ1024から、インデックスアドレスINDEXで指定されるキャッシュラインの情報としてウェイ毎の前記拡張データEXTとデータDATAを受け取る。受け取った前記拡張データのうち前記上位側拡張データEXT[7:4]と、データDATAが、ECCデコード部(ECCDEC)3028_0〜3028_3にウェイ毎に入力される。前記ECCデコード部3028_0〜3028_3は、必要に応じて前記上位側拡張データEXT[7:4]を用いて前記データDATAにエラー訂正を施し、エラー訂正されたデータを選択回路3029_0〜3029_3に与える。前記選択回路3029_0〜3029_3は、前記DMCR304の値を入力し、当該値に基づいて、エラー訂正されたデータと前記データDATAの何れかのデータを選択して出力する。例えば、図12の場合において、前記DMCR304の値が“0”の場合には、ECC機能は無効とし、データDATA0〜3をそのまま前記選択部1029に与える。一方、前記DMCR104の値が“1”の場合には、ECC機能を有効とし、ECCデコード部3028_0〜3028_3からの出力データを選択して前記選択部1029に与える。
【0106】
前記制御ロジック部3021は書込み制御部3026を有し、前記書込み制御部3026は前記書込み制御部1026の機能に加え、拡張データ生成部(EXTGEN)3030を有する。
【0107】
前記EXTGEN3030は、キャッシュミスに係るキャッシュエントリ生成時、及びライトアクセスの際のキャッシュエントリ生成時に前記拡張データを前記拡張アレイ3022に格納するが、このとき前記ECCコードも生成する。
【0108】
図15は、前記拡張データ生成部(EXTGEN)3030のブロック図の一例である。ここでは、前記拡張データ[7:0]のうち上位側拡張データ[7:4]を生成する機能を実現する回路ブロックのみを図示する。
【0109】
例えばキャッシュミスに係るデータを読み込んでキャッシュエントリを生成する際に、前記主記憶装置40から読み出されたデータWDATAがECCコード生成部(ECCGEN)3035に入力される。前記ECCGEN3035は、当該データWDATAのECCコードを生成して選択回路3036に与える。前記選択回路3036は、前記DMCR304の値に基づいてDMIDと生成されたECCコードの何れかを選択して前記拡張アレイ3022に与える。例えば、図12の場合において、前記DMCR304の値が“0”のときはECC機能を無効とし、DMID[7:4]を上位側拡張データ[7:4]として前記拡張アレイ3022に与える。一方、前記DMCR304の値が“1”のときはECC機能を有効とし、生成されたECCコードを上位側拡張データEXT[7:4]として前記拡張アレイ3022に与える。なお、図12の場合において、下位側拡張データEXT[3:0]は、前記DMIDの値に関わらず、DMID[3:0]の値となる。
【0110】
以上実施の形態3に係るデータプロセッサ3によれば、前記キャッシュメモリ302は応用システムに応じてキャッシュメモリの信頼性向上のための手段を選択することが可能となる。すなわち、前記キャッシュメモリ302の前記拡張アレイの用途を耐ソフトエラー性の向上のために用いるか、ソフトウェアの観点で保護ドメイン数を多く割り当てるために用いるか、を選択することが可能となる。
【0111】
なお、実施の形態3において、ソフトエラーの訂正の方法として32ビットのデータに対して4ビットの冗長ビットを用いるECCを一例として説明したが、これに限られず1ビットの冗長ビットでエラー検出のみを行うパリティ方式にも適用することが可能である。
【0112】
また、実施の形態3では前記データアレイ1024の読み出し内容にエラー訂正を施す場合を一例として示したが、これに限られず、前記タグアレイ1023のタグ情報にエラー訂正を施すことも可能である。この場合には例えば、前記タグアレイ1023と前記比較部3025の間にエラー訂正のための回路等を配置すればよい。
【0113】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【0114】
例えば、実施形態1乃至3のデータプロセッサでは、前記主記憶装置40、41へのアクセスを一例として説明しているが、これに限られず、前記バス50、21には前記主記憶装置40、41以外の周辺デバイスや入出力装置などの共有リソースを配置することが可能であり、それらのリソースへのアクセス管理は夫々のリソース毎に設置された前記PAM30、31により、前記主記憶装置40、41と同様に管理し、保護することが可能である。
【0115】
また、実施形態1乃至3のデータプロセッサでは、前記DMIDと上位物理アドレス、及び前記DMIDと前記ECCコードを前記拡張データとして切り換え可能とする例を示したが、これに限られず、上記3つのデータを切り換え可能とすることが可能である。例えば、実施の形態2において前記拡張アレイに格納されるデータを保護ドメインとECCコードとし、これらを切り換え可能にしてもよいし、実施の形態3において前記拡張アレイに格納されるデータを上位物理アドレスとECCコードとし、これらを切り換え可能にしてもよい。
【0116】
更に、実施形態1乃至3のデータプロセッサでは、キャッシュメモリに前記拡張アレイを適用する場合を示したが、これに限られず、前記CPUのアクセスに際して、そのアクセスアドレスを用いて動作するモジュールにも適用可能である。例えば一つの例として、メモリ管理ユニット(MMU)の代表的な構成例であるTLB(Translation Look−aside Buffer)に適用することができる。仮想記憶をサポートするデータプロセッサでは、前記MMUは仮想アドレスから物理アドレスへの変換機能を備えるのが一般的であり、前記TLBはオペレーティングシステムの仮想記憶サブシステムを構成するアドレス変換テーブルの一部を高速な連想メモリに保持し、仮想アドレスを検索キーとして物理アドレスの検索を行う。そして複数のオペレーティングシステムの実行が可能なドメイン保護機能を備えるデータプロセッサでは、前記TLBに保持される仮想アドレスから物理アドレスへの変換対が、どの保護ドメインに属するかを判定し、不正なメモリアクセスを遮断しなくてはならない。そのため、前述したキャッシュメモリと同様に、前記TLBに保護ドメイン(DMID)を付加して記憶する必要がある。そこで、前記DMCRをデータプロセッサに設けると共に前記拡張アレイを前記TLBに設けることで、保護ドメインによるメモリ保護機能と、キャッシュのタグに相当する仮想アドレス空間の拡張と、前記TLBを構成するRAMのエラー訂正機能とを容易に切り換えることが可能となり、上記と同様の作用効果を奏する。
【0117】
また、他の例として、データ転送をCPUに代わって行うDMAC(Direct Memory Access Controller)を備えるデータプロセッサにも前記拡張アレイ等は適用可能である。例えば、CPUが前記DMACに対し転送を要求する際に転送条件を設定するレジスタに、前記拡張アレイと同様の機能を持たせる。これにより、前記DMACが保護ドメインによるメモリ保護機能やアドレス空間の拡張等を容易に切り換えることが可能となり、上記と同様の作用効果を奏する。
【符号の説明】
【0118】
1〜3 データプロセッサ
10、20_A〜20_C プロセッサコア
30、31 物理アドレス管理モジュール
40、41 主記憶装置
50、51 バス
101 CPU
102、302 キャッシュメモリ
103 ドメインIDレジスタ
104、304 ドメイン制御レジスタ
105 MMU
106、206 バスインターフェース
107、107A〜107C 補完レジスタ
1021、3021 制御ロジック部
1022、3022 拡張アレイ
1023 タグアレイ
1024 データアレイ
1025、3025 比較部
1026、3026 書込み制御部
1027 拡張機能セレクタ
1030、1031 比較器
3027 エラー訂正論理部
3028_0〜3028_3 ECCデコード部
3029_0〜3029_3 選択回路
3030 拡張データ生成部
3031〜3033 比較器
3034 ロジック部
3035 ECCコード生成部
3036 選択回路

【特許請求の範囲】
【請求項1】
プログラムを実行する中央処理装置と、
前記中央処理装置のアドレス空間上のデータの一部を保持する連想メモリと、
メモリ保護に利用される識別子を保持する第1レジスタと、を有するデータプロセッサであって、
前記連想メモリは、タグを格納するタグ部と、データを格納するデータ部とから構成される複数の連想エントリと、前記中央処理装置のアクセスに際し、前記中央処理装置から供給される情報とインデックスされたタグとを比較する比較部と、を有し、
前記連想メモリは、前記供給される情報をアドレス情報とする第1の動作モードと、前記供給される情報をアドレス情報及び前記識別子とする第2の動作モードとを有する、データプロセッサ。
【請求項2】
前記連想メモリの前記動作モードを決定するための情報が保持される第2レジスタを更に有し、
前記タグ部は、アドレス情報を格納するアドレス部と、拡張部とを有し、
前記連想メモリは、前記第2レジスタの値に基づいて前記動作モードを決定し、
前記拡張部は、前記第1の動作モードではアドレス情報が格納され、前記第2の動作モードでは前記識別子が格納される、請求項1記載のデータプロセッサ。
【請求項3】
前記第1の動作モードにおいて、前記比較部は、前記供給されたアドレス情報と当該アドレス情報に対応する前記連想エントリにおける前記アドレス部及び前記拡張部に保持されたアドレス情報とを比較し、一致する場合には、前記連想メモリは当該連想エントリにおける前記データ部のデータを出力し、一致しない場合には、前記供給されたアドレス情報とそれに対応するデータとを、前記対応する前記連想エントリに格納する、請求項2記載のデータプロセッサ。
【請求項4】
前記第2の動作モードにおいて、前記比較部は、前記供給されたアドレス情報と当該アドレス情報に対応する前記連想エントリにおける前記アドレス部に保持された情報とを比較するとともに、前記供給された前記識別子と当該連想エントリにおける前記拡張部に保持された情報とを比較し、ともに一致する場合には、前記連想メモリは、当該連想エントリにおける前記データ部のデータを出力し、一方又は双方が一致しない場合には、前記供給されたアドレス情報とそれに対応するデータとを、前記対応する前記連想エントリに格納する、請求項2記載のデータプロセッサ。
【請求項5】
前記メモリ保護に利用される識別子は、前記プログラムの実行を管理する上位ソフトウェアを識別するためのドメイン識別子である、請求項2記載のデータプロセッサ。
【請求項6】
前記中央処理装置と、前記連想メモリと、前記第1レジスタと、前記第2レジスタと、を一組とするデータ処理部を複数組有し、
前記第2レジスタは、前記データ処理部毎に設定可能とされる、請求項2記載のデータプロセッサ。
【請求項7】
夫々の前記データ処理部によって共通利用されるバスを更に有し、
前記データ処理部は、前記中央処理装置のアクセス要求に応じて、前記中央処理装置が供給するアドレス情報を出力するための制御を行うアクセス制御部と、アドレス情報を補完するための情報が格納される第3レジスタとを有し、
前記バスは、複数の前記データ処理部のうち、最大となるアドレス空間に応じたバス幅以上のバス幅を有し、
前記アクセス制御部は、前記中央処理装置がアクセス要求を行う際、前記中央処理装置が供給するアドレス情報に基づくアドレス幅が前記バス幅に対して小さいと判断した場合には、前記第3レジスタの値に基づいて、当該アドレス情報に所定の情報を補完した新たなアドレス情報を前記バスに出力する、請求項6記載のデータプロセッサ。
【請求項8】
前記アクセス制御部は更に、前記中央処理装置のアクセス要求に応じて、前記第1レジスタの値を出力する制御を行う、請求項7記載のデータプロセッサ。
【請求項9】
前記第3レジスタは更に、前記第1レジスタの値を補完するための情報が格納され、
前記バスは更に、複数の前記データ処理部のうち、前記メモリ保護に利用される識別子の最大となるデータ量に応じたバス幅以上のバス幅を有し、
前記アクセス制御部は、前記中央処理装置がアクセス要求を行う際、前記第1レジスタの値が前記バス幅に対して小さいと判断した場合には、前記第3レジスタの値に基づいて、当該第1レジスタの値に所定の情報を補完した新たな情報を前記バスに出力する、請求項8記載のデータプロセッサ。
【請求項10】
前記アクセス制御部は、前記第2レジスタの値を参照して補完すべきビット数を決定する、請求項7又は9記載のデータプロセッサ。
【請求項11】
プログラムを実行する中央処理装置と、
前記中央処理装置のアドレス空間上のデータの一部を保持する連想メモリと、を有するデータプロセッサであって、
前記連想メモリは、タグを格納するタグ部と、データを格納するデータ部とから構成される複数の連想エントリと、前記中央処理装置のアクセスに際し、前記中央処理装置から供給される情報とインデックスされたタグとを比較する比較部と、を有し、
前記連想メモリは、前記供給される情報をアドレス情報とする第1の動作モードと、前記供給される情報をアドレス情報及び誤り訂正のための情報とする第2の動作モードと、を有する、データプロセッサ。
【請求項12】
前記連想メモリの前記動作モードを決定するための情報が保持される第1レジスタを更に有し、
前記タグ部は、アドレス情報を格納するアドレス部と、拡張部とを有し、
前記連想メモリは、前記第1レジスタの値に基づいて前記動作モードを決定し、
前記拡張部は、前記第1の動作モードではアドレス情報が格納され、前記第2の動作モードでは前記誤り訂正のための情報が格納される、請求項11記載のデータプロセッサ。
【請求項13】
前記連想メモリは、キャッシュメモリである、請求項2又は12記載のデータプロセッサ。
【請求項14】
前記連想メモリは、前記中央処理装置の仮想アドレス空間における仮想アドレスを物理アドレスへアドレス変換するためのアドレス変換対を記憶するアドレス変換バッファである、請求項2又は12記載のデータプロセッサ。
【請求項15】
プログラムを実行する中央処理装置と、
前記中央処理装置によるデータ処理に基づいて、前記中央処理装置のアドレス空間をアクセスするためのアドレス情報を出力する内部モジュールと、
メモリ保護に利用される識別子を保持する第1レジスタと、を有するデータプロセッサであって、
前記内部モジュールは、前記アドレス情報に前記識別子を付加しない第1の動作モードと、前記アドレス情報に前記識別子を付加する第2の動作モードとを有する、データプロセッサ。
【請求項16】
前記動作モードを決定するための情報が保持される第2レジスタを更に有し、
前記内部モジュールは、前記第2レジスタの値に基づいて前記動作モードを決定し、
前記メモリ保護に利用される識別子は、前記プログラムの実行を管理する上位ソフトウェアを識別するためのドメイン識別子である、請求項15記載のデータプロセッサ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate