説明

データプロセッサ

【課題】データプロセッサにおいて、CPUからの転送条件の設定に従ったデータ転送制御に際し、信頼性の高い記憶保護を行う。
【解決手段】データプロセッサ(10)において、データの転送制御を行う転送制御装置(105)は中央処理装置(101)の転送制御を行うメモリ管理部(115)で記憶保護に利用される識別情報を保持する。前記転送制御装置は前記中央処理装置の設定にしたがって転送用のアドレスを生成するとき、転送用のアドレスに対応した識別情報と転送条件等設定時の中央処理装置の識別情報との一致を条件に転送開始を開始する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データプロセッサに係り、特にデータプロセッサに内蔵されるDMAC(Direct Memory Access Controller)による記憶保護機能に関し、例えばシングルチップのマイクロコンピュータユニットに適用して有効な技術に関する。
【背景技術】
【0002】
今日のデータプロセッサ、特に組み込み機器用途のマイコンでは、汎用的処理を行う中央処理装置(以下、「CPU」という。)と、特定処理向けの複数の周辺IPコアを1チップに構成し、これらによって複数のアプリケーションソフトウェアが動作するようなシステムを構成する手法が用いられている。このようなシステムでは、複数のプログラムが一つのメインメモリ上の領域を分割して利用することとなる。
【0003】
データプロセッサ内のCPUにおいて、ソフトウェアバグ、ハードウェアバグ、一時的なハード障害(α線によるソフトエラー等)及び悪意あるソフトウェア等によって本来意図しないアクセスが、他のプログラムが利用しているメモリ領域に対して発生することがある(以下、「不正アドレスアクセス」という)。特に組み込み機器用途では、ソフトウェアバグによる製品の不良が問題となることが多い。
【0004】
前述の不正アドレスアクセスによる他のプログラムに対する悪影響を防止するために、プログラム毎にアクセス可能なアドレス範囲を設定し、不正アドレスアクセスの遮断を行う装置が必要となる。一般に、CPUが実行するプログラムは、MMU(Memory Management Unit)が、仮想記憶によるメモリ管理を行い、プロセス空間上の仮想アドレスとメインメモリの物理アドレスのアドレス変換を行うとともに、不正アドレスアクセスの遮断(以下、「記憶保護」という。)を行う。前記記憶保護は、仮想アドレスと、それに対応するCPUの動作モードやCPUが実行するプログラムによる処理を識別するプロセス識別子(以下、「プロセスID」という。)、及び前記プログラムの実行を管理する上位ソフトウェアを識別するドメイン識別子(以下、「ドメインID」という。)等の識別情報に基づいて行われる。
【0005】
しかしながら、DMACを有するシステムにおいては、DMACは、CPUやMMU等を含むプロセッサコアの外部に存在し、CPU等からのアクセス要求に基づいてアドレス設定等がされ、それに基づいてアクセスを実行するので、そのアクセスに対しMMUの記憶保護が働かない。DMACのアクセスに対して記憶保護を行う技術として例えば、下記の特許文献1乃至特許文献3において開示がある。
【0006】
特許文献1では、CPUやDMAC等のバスマスタデバイスとメインメモリ等のスレーブデバイスとの間のバス上にある制御回路部、又はバスマスタデバイスとバスの間のアドレス線及び制御線上に、不正アドレスアクセス遮断機構を設置する。前記不正アドレスアクセス遮断機構は、バスマスタデバイスのスレーブデバイスに対するアクセスが許可されるアドレス範囲が予め設定され、バスマスタデバイスによるアクセスに際し、当該バスマスタが出力するアドレスが、上記のアドレス範囲に含まれるかを判定することにより、不正アドレスアクセスの遮断を行う。
【0007】
特許文献2は、CPUとMMUと、CPUの実行するプログラムの処理の一部を代替して処理する外部デバイスを有し、前記外部デバイスがDMACを有するシステムに関するものである。外部デバイスが、前述のプログラムの処理の一部を代替して処理する場合において、その処理に必要なデータの読み出しと処理を行ったデータの書き込みにDMACを用いる。前記外部デバイスは、前記DMACに転送条件を設定するとき、転送元と転送先の仮想アドレスに対応する物理アドレスと権限情報を取得し、アクセスの権限があるか否かを判定する。
【0008】
特許文献3では、CPU、MMU及びDMACからなるシステムにおいて、DMACにはデータ転送可能な転送元と転送先との組合せの態様がリソースセレクト情報として予め設定される。DMACは、データの転送に際し、CPUからのデータ転送要求に係る転送元及び転送先のアドレス情報と、上記リソースセレクト情報とが整合するか否かを判定することで記憶保護を行う。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2004−334410号公報
【特許文献2】特開2008−102850号公報
【特許文献3】特開平10−289194号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
しかしながら、特許文献1では、前記不正アドレスアクセス遮断機構は前記アドレス範囲に基づいて記憶保護を行っており、CPUの動作モードやプロセスID、及びドメインID等の識別情報に基づいた、より信頼性の高い記憶保護ではない。また、特許文献2では、DMACがCPUの動作モードやプロセスID、及びドメインID等の識別情報を持たないため、DMACに設定された、すべてのアドレス範囲おいて記憶保護が実行される保証はない。すなわち、DMACに対し直接設定するアドレスに対して記憶保護を行い、範囲が指定されたアドレスの全範囲に対して記憶保護が行われる訳ではない。更に、特許文献3では、MMUとは別に記憶保護の設定をする必要があり、ソフトウェアのコストが大きくなってしまう。
【0011】
本発明の目的は、CPUからの転送条件の設定に従ったデータ転送制御に際し、信頼性の高い記憶保護を行うデータプロセッサを提供することにある。
【0012】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【0013】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【0014】
すなわち、データの転送制御を行う転送制御装置はメモリ管理部で記憶保護に利用される識別情報を保持する。前記転送制御装置はCPUの設定にしたがって転送用のアドレスを生成するとき、転送用のアドレスに対応した識別情報と転送条件設定時のCPUの識別情報との一致を条件に転送開始を開始する。
【発明の効果】
【0015】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【0016】
すなわち、CPUからの転送条件の設定にしたがったデータ転送制御に際し、信頼性の高い記憶保護を行うことができる。
【図面の簡単な説明】
【0017】
【図1】本発明の実施の形態1に係るデータプロセッサ10のブロック図である。
【図2】本発明の実施の形態1に係るCPU101が実行するプログラムと、そのプログラムの動作モード、プロセスID、及びドメインIDの対応関係を例示した説明図である。
【図3】本発明の実施の形態1に係るTLB103に格納される変換エントリデータを例示した説明図である。
【図4】本発明の実施の形態1に係るCPU101がメインメモリ106へアクセスする際のフローチャートである。
【図5】本発明の実施の形態1に係るDMAC105の内部構成を示すブロック図である。
【図6】本発明の実施の形態1に係るDMAC105によるデータ転送の際のフローチャートである。
【図7】本発明の実施の形態2に係るデータプロセッサ20のブロック図である。
【図8】本発明の実施の形態3に係るデータプロセッサ30のブロック図である。
【図9】本発明の実施の形態4に係るデータプロセッサ40のブロック図である。
【図10】本発明の実施の形態4に係るプロセッサコア500からメインメモリ106にアクセスする際のフローチャートである。
【図11】本発明の実施の形態4に係るDMAC501がメインメモリ106にアクセスする際のフローチャートである。
【発明を実施するための形態】
【0018】
1.実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【0019】
〔1〕本発明の代表的な実施の形態に係るデータプロセッサ(10、20、30)は、プログラムを実行する中央処理装置(101)と、前記中央処理装置の仮想アドレス空間における仮想アドレスを物理アドレスへアドレス変換すると共に記憶保護を行うためのメモリ管理部(115)と、前記中央処理装置のアクセスによって設定された転送制御情報に従ってデータ転送制御を行う転送制御装置(105、105A、105B、700)と、を有するデータプロセッサであって、前記メモリ管理部は、前記アドレス変換に用いるアドレス変換データ対と、当該アドレス変換データ対に対応する仮想アドレスを用いるプログラム処理を識別するための識別情報と、を有する変換エントリデータ(300)を、複数保持するためのアドレス変換バッファ(103)を有し、前記転送制御装置は、前記転送制御情報を設定するときにおける前記中央処理装置のプログラム処理を識別するための識別情報を保持するための識別情報記憶部(404)を有し、前記転送制御情報に従って転送対象の物理アドレスを生成するとき、当該物理アドレスに対応する識別情報が前記識別情報記憶部の識別情報に一致することを転送開始の条件とする。これによれば、前記転送制御装置が物理アドレスを生成する毎に、当該物理アドレスに対応する前記識別情報と転送条件設定時における前記中央処理装置の識別情報の一致を確認するから、信頼性の高い記憶保護、すなわち設定された転送条件に従ったすべての転送アドレスに対する記憶保護を行うことができる。
【0020】
〔2〕項1のデータプロセッサにおいて、前記識別情報は、前記中央処理装置が実行するプログラムによる処理を識別するプロセス識別子を含む。これによれば、プロセス毎の識別情報に基づいた記憶保護を行うから、より信頼性の高い記憶保護を行うことができる。
【0021】
〔3〕項2のデータプロセッサにおいて、前記識別情報は、前記プログラムの実行を管理する上位ソフトウェアを識別するドメイン識別子を含む。これによれば、プロセス毎の識別情報とドメイン毎の識別情報に基づいた記憶保護を行うから、より信頼性の高い記憶保護を行うことができる。
【0022】
〔4〕項2又は項3のデータプロセッサにおいて、前記識別情報は、前記中央処理装置の動作モードが、特権モードかユーザモードかを示す動作モード識別子を更に含む。これによれば、プロセス毎の識別情報とドメイン毎の識別情報に加え、動作モードに基づいた記憶保護を行うから、より信頼性の高い記憶保護を行うことができる。
【0023】
〔5〕項1のデータプロセッサにおいて、前記転送制御装置は、前記転送制御情報に従って転送対象の物理アドレスを生成するときに用いるアドレス変換サブバッファ(405)を有し、前記アドレス変換サブバッファは、前記アドレス変換バッファが保持する情報のサブセットを保持する。これによれば、前記転送制御装置は、前記メモリ管理部が記憶保護に用いる前記識別情報のサブセットを用いて記憶保護を行うから、前記メモリ管理部と同様の信頼性の高い記憶保護を行うことができる。
【0024】
〔6〕項5のデータプロセッサにおいて、前記転送制御装置が前記転送制御情報に従って転送対象の物理アドレスを生成するとき、必要な前記変換エントリデータが前記アドレス変換サブバッファに保持されていない場合には、前記転送制御装置は当該必要な前記変換エントリデータを前記メモリ管理部に要求し、前記メモリ管理部は前記要求に応答する前記変換エントリデータを前記転送制御装置に与える。これにより、前記識別情報のサブセットを、前記アドレス変換サブバッファに容易に設定することができる。
【0025】
〔7〕項1のデータプロセッサにおいて、前記中央処理装置と、前記メモリ管理部と、前記転送制御装置と、を一組とするセットを複数セット有し、前記転送制御装置に対する前記転送制御情報の設定は、前記セット内の前記中央処理装置のみ可能とされる。これによれば、複数の前記セットを有するシステムにおいても、項1と同様の作用を奏する。
【0026】
〔8〕項6のデータプロセッサにおいて、前記中央処理装置と前記メモリ管理部を一組とするセット(100A、100B)を複数セット有し、前記転送制御装置は、前記各セットに共通利用され、前記転送制御情報に従って転送対象の物理アドレスを生成するときに、前記転送制御装置に対し前記転送制御情報の設定を行った前記中央処理装置の種別を保持し、前記アドレス変換サブバッファに必要な前記変換エントリデータが保持されていない場合には、当該必要な前記変換エントリデータを前記種別に応ずる前記中央処理装置が属するセットの前記メモリ管理部に要求する。これによれば、複数の前記セットが一つの転送制御装置を共通利用するシステムにおいても、項6と同様の効果を奏する。
【0027】
〔9〕本発明の代表的な実施の形態に係るデータプロセッサ(40)は、プログラムを実行する中央処理装置と、前記中央処理装置のアクセスによって設定された転送制御情報に従ってデータ転送制御を行う転送制御装置(501)と、前記中央処理装置のアドレス空間に配置されてアクセス対象にされる回路(106)が接続されるアクセス保護装置(504)と、を有するデータプロセッサであって、前記アクセス保護装置は、アドレスと当該アドレスを用いるプログラム処理を識別する識別情報との情報対を複数対保持するための変換バッファ(502)を有し、前記転送制御情報に従って前記転送制御装置から出力されたアドレスに対応する情報対の識別情報が当該アドレスに伴って出力された識別情報に一致することを条件にアクセス対象回路(106)に対するアクセスを許容する。これによれば、アクセス保護装置が前記識別情報に基づいてアクセス制御を行うから、前記転送制御装置に記憶保護機能を持たせることなしに信頼性の高いアクセス制御が可能となる。
【0028】
〔10〕項9のデータプロセッサにおいて、前記識別情報は、前記中央処理装置が実行するプログラムによる処理を識別するプロセス識別子を含む。これによれば、プロセス毎の識別情報に基づいたアクセス制御を行うから、より信頼性の高いアクセス制御を行うことができる。
【0029】
〔11〕項10のデータプロセッサにおいて、前記識別情報は、前記プログラムの実行を管理する上位ソフトウェアを識別するドメイン識別子を含む。これによれば、プロセス毎の識別情報とドメイン毎の識別情報に基づいたアクセス制御を行うから、より信頼性の高いアクセス制御を行うことができる。
【0030】
〔12〕項10又は項11のデータプロセッサにおいて、前記識別情報は、前記中央処理装置の動作モードが、特権モードかユーザモードかを示す動作モード識別子を更に含む。これによれば、プロセス毎の識別情報とドメイン毎の識別情報に加え、動作モードに基づいたアクセス制御を行うから、より信頼性の高いアクセス制御を行うことができる。
【0031】
2.実施の形態の詳細
実施の形態について更に詳述する。
【0032】
《実施の形態1》
図1は、シングルチップのマイクロコンピュータに係るデータプロセッサを示す。同図に示されるデータプロセッサ10は、特に制限されないが、公知のCMOS集積回路の製造技術によって1個の単結晶シリコンのような半導体基板に形成されている。
【0033】
データプロセッサ10は、プロセッサコア100、転送制御装置(以下、「DMAC」という。)105、割り込みコントローラ104、メインメモリ106、及びシステムバス107から構成され、夫々のブロックはシステムバス107に接続されている。なお、図示はしないが、例えば、前記システムバス107には、I/O回路、及びその他の周辺回路も接続されている。
【0034】
前記プロセッサコア100は、中央処理装置(以下、「CPU」という。)101と、メモリ管理部115から構成され、メモリ管理部115は、MMU102とアドレス変換バッファ(以下、「TLB(Translation Lookaside Buffer)」という。)103を有する。
【0035】
前記CPU101は複数のプログラムを実行する。夫々のプログラムはアクセス可能なアドレス範囲が異なり、夫々のプログラムは、動作モード、プロセスID、及びドメインIDの組み合わせを持っている。動作モードとは、上位ソフトウェアによるプログラムとユーザプログラムを区別するために用いられるものであり、例えば、上位ソフトウェアであるオペレーティングシステムのプログラムは特権モードで表され、ユーザプログラムはユーザモードで表される。ドメインIDは、前記プログラムの実行を管理する上位ソフトウェアを識別するものであり、複数のオペレーティングシステムが動作する場合に、夫々のオペレーティングシステムを区別するために用いられ、それぞれのオペレーティングシステムに番号が割り振られている。プロセスIDは、同じオペレーティングシステム上で動作するユーザプログラムを区別するために用いられ、それぞれのプログラムに番号が割り振られている。これらの情報を、CPU101のプログラム処理を識別するための識別情報とする。
【0036】
図2は、前記CPU101が実行するプログラムと、そのプログラムの動作モード、プロセスID、及びドメインIDの対応関係を例示したものである。例えば、図2に示される前記プログラムとの対応関係を示す204の部分において、プログラム0は動作モードが特権モード、プロセスIDが“0”、ドメインIDが“0”であることを示し、プログラム1は動作モードがユーザモード、プロセスIDが“1”ドメインIDが“0”であることを示している。図2において、前記CPU101が前記識別情報を格納するレジスタを有しており、例えば、前記CPU101が参照符号205で示されるプログラム0を実行するときには、レジスタ201、レジスタ202及びレジスタ203に動作モード、プロセスID及びドメインIDを格納する。
【0037】
前記TLB103は、仮想アドレスから物理アドレスへのアドレス変換に用いるアドレス変換データ対と、当該アドレス変換データ対に対応する仮想ページの管理情報を含んだ情報(以下、「変換エントリデータ」という。)を保持し、連想メモリとして構成される。前記仮想ページの管理情報には、前記識別情報が含まれる。
【0038】
図3は、前記TLB103に格納される変換エントリデータを例示したものである。図3では、例えば、前記アドレス変換データ対となる仮想アドレスと物理アドレス、及びそれらに対応する仮想ページ管理情報301が、変換エントリデータ300として格納されている。前記仮想ページ管理情報301は、仮想ページのページサイズ、キャッシュを有効にするかどうかを示すキャッシュ属性等の他に、前記識別情報である動作モード、プロセスID、ドメインIDを含んでいる。
【0039】
前記MMU102は、前記CPU101の前記メインメモリ106に対するアクセス要求を受け、そのアクセスを制御する。前記MMU102の動作概要について図4を用いて詳細に説明する。
【0040】
図4は、CPU101がメインメモリ106にアクセスする際のフローチャートである。
【0041】
まず、CPU101がメインメモリ106へのアクセスを要求する(S101)。MMU102は、前記CPU101からそのアクセス要求に応答する仮想アドレスを受け取る。前記MMU102は、その仮想アドレスの一部をインデックスとして、TLB103に格納されている当該仮想アドレスに対応する仮想ページの変換エントリデータを検索する(S102)。前記TLB103に必要な変換エントリデータがない場合には、前記MMU102はTLBミス例外を発生させるために、割り込みコントローラ104に割り込み要求116を与え、前記割り込みコントローラ104は前記CPU101に対して割り込み信号114により割り込みをかける(S103)。なお、割り込みの際には、前記CPU101に対して割り込み要因も併せて通知される。前記割り込み信号114を受け取った前記CPU101は、例えば前記メインメモリ106へアクセスして必要な仮想ページの変換エントリデータを前記TLB103に格納する(S104)。前記TLB103に必要な変換エントリデータがある場合には、前記MMU102は当該変換エントリデータを用いて仮想アドレスを物理アドレスに変換する(S105)。また、前記MMU102は前記アドレス変換の際に、当該物理アドレスに対応する前記識別情報と前記CPU101のレジスタ201、レジスタ202及びレジスタ203に格納されている識別情報を比較してアクセス権限の有無を確認する(S106)。このとき、アクセス権限に違反していなければ、前記MMU102は変換された物理アドレスと識別情報等をシステムバス107に出力する(S107)。一方、アクセス権限に違反している場合には、前記MMU102はTLB保護違反例外を発生させるために、割り込みコントローラ104に割り込み要求117を与える。前記割り込み要求117を受け取った前記割り込みコントローラ104は前記CPU101に対して割り込み信号114を与えることで、アクセス権限違反が発生したことを通知するとともに、前記CPU101に所定の例外を実行させて前記アクセスを停止させる(S108)。
【0042】
次にDMAC105について説明する。
【0043】
図5はDMAC105の内部構成を示すブロック図である。DMAC105は、転送設定レジスタ401、転送用バッファ402、制御部403、識別情報レジスタ404、及びマイクロTLB405を有する。また、前記転送設定レジスタ401は、アドレスレジスタ406、権限変更設定レジスタ407、DMACイネーブルレジスタ408等から構成される。
【0044】
CPU101はDMAC105による転送を要求する際、システムバス107を介して転送条件の情報である転送制御情報をDMAC105に与え、転送設定レジスタ401内のアドレスレジスタ406に転送条件を設定する。前記転送制御情報は、例えば転送元・転送先アドレス、転送データ語長等である。このとき、前記制御部403は、権限変更設定レジスタ407に前記DMAC105の転送権限の変更の有無を設定する。例えば、ユーザプログラムがオペレーティングシステムプログラムに代替させて、DMAC105の転送条件の設定と起動を行う場合には、後述する前記識別情報レジスタ404に取り込んだ前記識別情報に含まれる動作モードを特権モードからユーザモードに変更することを示すイネーブルビットを前記権限変更設定レジスタ407に設定する。
【0045】
前記転送条件の設定後に、前記CPU101が前記DMAC105の転送開始を表す起動ビットを前記DMACイネーブルレジスタ408に設定することによって前記DMAC105を起動する。このとき前記制御部403は、前記起動ビットが設定されたときの前記CPU101の前記識別情報を前記識別情報レジスタ404に格納する。この際、前記権限変更設定レジスタ407にイネーブルビットが設定されている場合には、前記識別情報レジスタ404に取り込んだ前記識別情報に含まれる動作モードが特権モードからユーザモードに変更される。すなわち、前記DMAC105の転送条件の設定はオペレーティングシステムプログラムにより特権モードで行われ、この状態が前記識別情報レジスタ404に設定されてしまうので、動作モードを特権モードからユーザモードに変更する必要がある。
【0046】
前記マイクロTLB405は、前記TLB103が格納する前記変換エントリデータのサブセットを保持し、連想メモリを構成する。
【0047】
前述のように前記起動ビットが前記DMACイネーブルレジスタ408に設定されると、DMAC105によるデータ転送が開始される。前記制御部403は、前記CPU101に条件設定された仮想アドレスに基づいてマイクロTLB405に格納されている当該仮想アドレスに対応する変換エントリデータを検索してアドレス変換を行うと共に、当該アドレスに対応する前記識別情報と前記識別情報レジスタ404に格納された識別情報を比較することで記憶保護を行う。この記憶保護機能について図6を用いて詳細に説明する。
【0048】
図6は、DMAC105によるデータ転送の際のフローチャートである。
【0049】
まず、CPU101は、DMAC105への転送要求に際し、前記転送制御情報109を与え、DMAC105の設定を行う(S201)。このとき、ユーザプログラムがオペレーティングシステムプログラムに代替させて、前記DMAC105の転送条件の設定と起動を行う場合であるか否かを前記制御部403が判別する(S202)。そうである場合には、前記制御部403は前記権限変更レジスタ407にイネーブルビットを設定して、転送権限を特権モードからユーザモードに変更する設定を行う(S203)。その後、CPU101が前記起動ビットを前記DMACイネーブルレジスタ408に設定することによってDMAC105を起動させる(S204)。一方、ユーザプログラムがDMAC105の設定を直接行う場合には、前記権限変更レジスタ407に設定することなく、ステップ204に進む。
【0050】
ステップ204の際、前記制御部403は前記起動ビットを設定したときの前記CPU101の識別情報を前記識別情報レジスタ404に格納する(S205)。このとき、前記権限変更レジスタ407にイネーブルビットが設定されていれば、動作モードを特権モードからユーザモードに変更する。次に前記制御部403は、前記CPU101に条件設定された仮想アドレスの一部をインデックスとし、マイクロTLB405に格納されている当該仮想アドレスに対応する仮想ページの変換エントリデータを検索する(S206)。このとき前記マイクロTLB405に必要な変換エントリデータがない場合には、前記制御部403は、前記MMU102に対し当該変換エントリデータを要求する信号110を与える(S207)。前記要求信号110を受け取った前記MMU102は、TLB103内を検索し(S208)、該当する変換エントリデータがあれば前記TLB103から前記マイクロTLB405に当該変換エントリデータ111をコピーする(S211)。該当する変換エントリデータがなかった場合には、前述と同様にTLBミス例外を発生させて(S209)、必要な仮想ページの変換エントリデータを、前記TLB103に登録する(S210)。その後、登録された当該変換エントリデータについて、前記MMU102が前記TLB103内を再度検索し(S208)、当該変換エントリデータ111を前記TLB103から前記マイクロTLB405にコピーする(S211)。
【0051】
前記マイクロTLB405に必要な変換エントリデータがあった場合、またはステップ211において前記TLB103から前記マイクロTLB405に必要な変換エントリデータがコピーされた場合には、前記制御部403は当該変換エントリデータを用いて仮想アドレスを物理アドレスに変換する(S212)。このとき、前記制御部403は当該物理アドレスに対応する前記識別情報と前記識別情報レジスタ404に格納されている前記起動ビット設定時の前記CPU101の識別情報とを比較する(S213)。このとき、前記識別情報が一致していれば転送を開始し(S214)、前記DMAC105は対応する物理アドレス等をシステムバス107に出力する。一方、前記識別情報が一致しなかった場合には、前記制御部403はデータ転送を停止し、TLB保護違反例外を発生させるため、割り込みコントローラ104に割り込み要求113を与える。前記割り込み要求113を受け取った前記割り込みコントローラ104は前記CPU101に対して割り込み信号114を与えることで、アクセス権限違反が発生したことを通知する(S215)。
【0052】
以上より、実施の形態1によれば、前記DMAC105が物理アドレスを生成する毎に、当該物理アドレスに対応する前記識別情報と転送条件設定時における前記CPU101の識別情報の一致を確認するから、設定された転送条件に従ったすべての転送アドレスに対する記憶保護といった、信頼性の高い記憶保護を行うことができる。また、前記識別情報として、動作モード、プロセスID、ドメインIDを利用することで、より信頼性の高い記憶保護が実現できる。さらに、前記DMAC105は前記MMU102で記憶保護に利用される識別情報のサブセットを利用し、前記MMU102の機能を流用するから、ソフトウェアコストを低く抑えることができる。
【0053】
《実施の形態2》
図7は本発明に係るデータプロセッサの別の実施の形態として、シングルチップのマイクロコンピュータに係るデータプロセッサを示す。同図に示されるデータプロセッサ20は特に制限されないが、公知のCMOS集積回路の製造技術によって1個の単結晶シリコンのような半導体基板に形成されている。
【0054】
図7に示すデータプロセッサ20における構成要素について、実施の形態1と同様の機能を有するものには同一の符号を付して、その詳細な説明を省略する。
【0055】
前記データプロセッサ20は、プロセッサコア100A及びDMAC105Aと、プロセッサコア100B及びDMAC105Bを夫々一組としたセットを有し、夫々のセットがシステムバス107に接続されている。図7では2個の前記セットを代表的に明示しており、これらのセットの数には特に制限はない。
【0056】
前記プロセッサコア100A、100Bは実施の形態1に係るプロセッサコア100と同様の構成要素を含んでいる。また、前記DMAC105A,105Bは実施の形態1に係るDMAC105と同様の構成要素を含んでいる。
【0057】
前記データプロセッサ20において、前記DMAC105Aの転送条件の設定、及び起動指示は同一セット内のCPU101Aによってのみ行われる。また、前記DMAC105A内のマイクロTLB405には同一セット内の前記TLB103に格納される前記変換エントリデータのサブセットが格納される。
【0058】
前記プロセッサコア100Aは同一セット内の前記DMAC105Aにデータ転送の要求をし、当該DMAC105Aは当該プロセッサコア100Aの設定に基づいてアドレス変換と記憶保護によるデータの転送を行う。前記プロセッサコア100Bと前記DMAC105Bについても上記と同様である。
【0059】
前記DMAC105A、105Bに対する転送条件等の具体的な設定方法、及び前記DMAC105A、105Bによるデータ転送の一連の処理は実施の形態1と同様である。
【0060】
以上実施の形態2によれば、プロセッサコアとDMACのセットが複数ある場合においても、実施の形態1と同様の作用を奏する。
【0061】
《実施の形態3》
図8は、本発明に係るデータプロセッサの別の実施の形態として、シングルチップのマイクロコンピュータに係るデータプロセッサを示す。同図に示されるデータプロセッサ30は、特に制限されないが、公知のCMOS集積回路の製造技術によって1個の単結晶シリコンのような半導体基板に形成されている。
【0062】
図8に示すデータプロセッサ30における構成要素について、実施の形態1と同様の機能を有するものには同一の符号を付して、その詳細な説明を省略する。
【0063】
前記データプロセッサ30はプロセッサコア100C、100Dを有し、夫々の前記プロセッサコア100C、100Dが1つのDMAC700を共通利用している。夫々のブロックはシステムバス107に接続されている。図8では2個のプロセッサコア100C、100Dを代表的に明示しており、プロセッサコアの数には特に制限はない。
【0064】
前記プロセッサコア100C、100Dは実施の形態1に係るプロセッサコア100と同様の構成要素を含んでいる。
【0065】
前記DMAC700は実施の形態1に係るDMAC105の構成要素に加え、CPU識別情報レジスタ701とセレクタ702を更に有する。
【0066】
いずれかの前記プロセッサコア100C、100DにおけるCPU101が、前記DMAC700に転送要求をし、前記DMACイネーブルレジスタ408に起動ビットが設定されたとき、前記制御部403は当該CPU101の識別情報を前記識別情報レジスタ404に格納するとともに、いずれのCPU101によって前記DMAC700が起動されたのかを示すCPU識別情報を前記CPU識別情報レジスタ701に格納する。
【0067】
前記マイクロTLB405には、前記TLB103に格納されている前記変換エントリデータのサブセットに加え、いずれのプロセッサコア100C、100Dに対応する前記TLB103の変換エントリデータのサブセットであるのかを示すCPU識別情報も格納される。
【0068】
前記DMAC700が起動すると、前述のように、前記制御部403は前記CPU101からの転送要求に係る仮想アドレスの一部をインデックスとし、前記マイクロTLB405に格納されている当該仮想アドレスに対応する仮想ページの変換エントリデータを検索する。この際、前記制御部403は前記CPU識別情報レジスタ701に格納されているCPU識別情報に一致する変換エントリデータを検索する。このとき、必要とする変換エントリデータがマイクロTLB405にない場合には、セレクタ702が前記CPU識別情報レジスタ701に格納されているCPU識別情報に該当するプロセッサコア100C、100Dを選択して、当該選択したプロセッサコア100C、100D内のMMU102に対し、必要な変換エントリデータを要求する信号704C、704Dを与える。当該信号が与えられた前記MMU102は、必要な変換エントリデータをマイクロTLB405に与える。例えば、前記プロセッサコア100Dが前記DMAC700に転送要求をした場合に、必要とする変換エントリデータが前記マイクロTLB405になかった場合は、前記セレクタ702が、前記プロセッサコア100Dの前記MMU102に対し、必要な変換エントリデータを要求する信号704Dを与え、当該信号を受けとったプロセッサコア100Dの前記MMU102は、必要な変換エントリデータを前記マイクロTLB405に与える。
【0069】
その他の前記DMAC700によるデータ転送の処理は、実施の形態1と同様である。
【0070】
以上実施の形態3によれば、複数のプロセッサコアを有する場合においても実施の形態1と同様の作用を奏する。
【0071】
《実施の形態4》
図9は、本発明に係るデータプロセッサの別の実施の形態として、シングルチップのマイクロコンピュータに係るデータプロセッサを示す。同図に示されるデータプロセッサ40は、特に制限されないが、公知のCMOS集積回路の製造技術によって1個の単結晶シリコンのような半導体基板に形成されている。
【0072】
図9に示すデータプロセッサ40における構成要素について、実施の形態1と同様の機能を有するものには同一の符号を付して、その詳細な説明を省略する。
【0073】
データプロセッサ40は、プロセッサコア500、DMAC501、アクセス保護装置504を有し、夫々のブロックはシステムバス107に接続され、メインメモリ106はアクセス保護装置504を介してシステムバス107に接続されている。なお、図示はしないが、例えば、前記システムバス107には、I/O回路、及びその他の周辺回路も接続されている。
【0074】
図9に示されるデータプロセッサ40において、プロセッサコア500は実施の形態1乃至3とは異なり、MMUによる記憶保護を採用していない。前記アクセス保護装置504が、前記プロセッサコア500及び前記DMAC501等による前記メインメモリ106へのアクセスを制御する。
【0075】
前記プロセッサコア500は、実施の形態1に係るプロセッサコア100の構成要素からメモリ管理部115を除いた構成であり、前記プロセッサコア500が前記メインメモリ106にアクセスリクエストを出すとき、転送用のアドレスや転送対象のデータ等とともに、そのときの前記プロセッサコア500内の前記CPU101の動作モード、ドメインID及びプロセスIDを含む識別情報を前記システムバス107上に出力する。
【0076】
前記DMAC501は、実施の形態1に係るDMAC105の構成要素からマイクロTLB405を除いた構成である。前記DMAC501は、実施の形態1と同様に前記CPU101からの前記起動ビットの設定時に、そのときの当該CPU101の前記識別情報を取り込む。そして、前記メインメモリ106にアクセスリクエストを出すとき、転送用のアドレスや転送対象のデータ等とともに、前記取り込んだCPU101の識別情報を前記システムバス107上に出力する。
【0077】
前記アクセス保護装置504は、変換バッファ502と保護制御部503を有する。
【0078】
前記変換バッファ502は、転送用のアドレスと当該アドレスに対応する前記識別情報との情報対を複数対保持する。前記変換バッファ502への前記情報対の設定は、例えばパワーオンリセット時に行われる。
【0079】
前記保護制御部503は、前記プロセッサコア500及び前記DMAC501からアクセスリクエストを受け取ると、当該リクエストに係る転送用アドレスに対応する前記情報対の識別情報と、当該リクエストに含まれる前記識別情報が一致したときに、当該アクセスを許可する。このアクセス制御について、図10及び図11を用いて詳細に説明する。
【0080】
図10は、プロセッサコア500からメインメモリ106にアクセスする際のフローチャートである。
【0081】
前記プロセッサコア500のCPU101が前記メインメモリ106にアクセスを開始すると(S301)、前記CPU101はシステムバス107上に、アクセスリクエストとして転送用のアドレスや転送対象のデータ等とともに、そのときの前記CPU101の前記識別情報を出力する(S302)。そして、アクセス保護装置504が、システムバス107上に出力された当該リクエストを受け取る(S303)。当該リクエストを受け取った前記アクセス保護装置504内の保護制御部503は、当該リクエストに係る転送用アドレスに対応する前記情報対の識別情報と、当該リクエストに含まれる前記識別情報を比較する(S304)。比較した結果、前記識別情報が一致した場合には、前記保護制御部503は、当該リクエストをメインメモリ106に対して出力し(S305)、当該リクエストに対しての前記メインメモリ106からのレスポンスを前記プロセッサコア500に出力する(S306)。前記識別情報が一致しなかった場合には、前記保護制御部503は当該リクエストを前記メインメモリ106に対して出力せず、アクセス権限違反が発生したことを示すエラーのレスポンスを前記プロセッサコア500に対して出力する(S307)。
【0082】
次に、プロセッサコア500がDMAC501を起動して、DMAC501がメインメモリ106にアクセスする場合について図11を用いて説明する。
【0083】
図11は、DMAC501がメインメモリ106にアクセスする際のフローチャートである。
【0084】
プロセッサコア500内のCPU101がDMAC501の転送条件を設定し、前記DMAC501を起動して、前記CPU101の前記識別情報を取り込む処理の流れ(S201〜S205)は、実施の形態1に係る図6のフローチャートと同様である。
【0085】
前記DMAC501が前記識別情報を取り込んだ後、前記DMAC501は設定された転送条件に従ってメインメモリ106にアクセスを開始する。前記DMAC501は、アクセスリクエストとして転送用のアドレスや転送対象のデータ等と起動時に取り込んだ前記CPU101の前記識別情報をシステムバス107上に出力する(S404)。そして、アクセス保護装置504が、前記システムバス107上に出力された当該リクエストを受け取る(S405)。当該リクエストを受け取った前記アクセス保護装置504内の保護制御部503は、当該リクエストに係る転送用アドレスに対応する前記情報対の識別情報と、当該リクエストに含まれる前記識別情報を比較する(S406)。比較した結果、前記識別情報が一致した場合には、前記保護制御部503は、当該リクエストを前記メインメモリ106に対して出力し(S407)、当該リクエストに対しての前記メインメモリ106からのレスポンスを前記DMAC501に出力する(S408)。前記識別情報が一致しなかった場合には、前記保護制御部503は当該リクエストを前記メインメモリ106に対して出力せず、アクセス権限違反が発生したことを示すエラーのレスポンスを前記DMAC501に対して出力する(S409)。エラーのレスポンスを受けとった前記DMAC501はデータ転送を中止し、割り込みコントローラ104に割り込み要求510を与える。前記割り込み要求510を受け取った前記割り込みコントローラ104は前記プロセッサコア500に対して割り込み信号511を与えることで、アクセス権限違反が発生したことを通知する(S410)。
【0086】
以上実施の形態4によれば、前記アクセス保護装置504が前記識別情報に基づいてアクセス制御を行うから、前記DMAC501に記憶保護機能を持たせることなしに信頼性の高いアクセス制御が可能となる。
【0087】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【0088】
例えば、実施の形態1乃至4はマルチオペレーティングシステムに適用することに限定するものではなく、単一のオペレーティングシステムや上位ソフトウェアで管理されないソフトウェアにも適用することができ、その場合は識別情報としてのドメインIDは不要となる。
【0089】
実施の形態1乃至4では、シングルチップのデータプロセッサに適用することを例に説明したが、外部メモリを利用したマルチチップのデータプロセッサに適用することもできる。また、アクセス対象はメインメモリに限定されず、他の周辺回路のレジスタやその他のメモリであってもよい。
【0090】
実施の形態4において、プロセッサコアがMMUによる記憶保護機能を備えるか否かは必須の条件ではない。
【符号の説明】
【0091】
10 データプロセッサ
20 データプロセッサ
30 データプロセッサ
40 データプロセッサ
100 プロセッサコア
100A プロセッサコア
100B プロセッサコア
100C プロセッサコア
100D プロセッサコア
101 CPU
102 MMU
103 TLB
104 割り込みコントローラ
105 DMAC
105A DMAC
105B DMAC
106 メインメモリ
107 システムバス
108 CPUからメインメモリへのアクセスリクエスト、レスポンス
109 DMACの転送条件、起動指示、識別情報
110 仮想ページの変換エントリデータの要求
111 仮想ページの変換エントリデータ
112 DMACからメインメモリへのアクセスリクエスト、レスポンス
113 TLB保護違反例外のための割り込み要求
114 割り込み信号
115 メモリ管理部
116 TLBミス例外のための割り込み要求
117 TLB保護違反例外のための割り込み要求
201 動作モードレジスタ
202 プロセスIDレジスタ
203 ドメインIDレジスタ
204 プログラムとそのプログラムの動作モード、プロセスID、及びドメインIDの対応関係
205 CPU101で動作しているプログラム
300 変換エントリデータ
301 仮想ページ管理情報
401 転送設定レジスタ
402 転送用バッファ
403 制御部
404 識別情報レジスタ
405 マイクロTLB
406 アドレスレジスタ
407 権限変更設定レジスタ
408 DMACイネーブルレジスタ
500 プロセッサコア
501 DMAC
502 変換バッファ
503 保護制御部
504 アクセス保護装置
506 CPUメインメモリへのアクセスリクエスト及びそれに対するレスポンス、識別情報
507 DMACの転送条件、起動指示、識別情報
508 DMACからメインメモリへのアクセスリクエスト及びそれに対するレスポンス
509 アクセス保護装置からメインメモリへのアクセスリクエスト及びそれに対するレスポンス
510 割り込み要求
511 割り込み信号
700 DMAC
701 CPU識別情報レジスタ
702 セレクタ
703 DMACの転送条件、起動指示、識別情報
704C プロセッサ100Cに対する仮想ページの変換エントリデータの要求
704D プロセッサ100Dに対する仮想ページの変換エントリデータの要求

【特許請求の範囲】
【請求項1】
プログラムを実行する中央処理装置と、
前記中央処理装置の仮想アドレス空間における仮想アドレスを物理アドレスへアドレス変換すると共に記憶保護を行うためのメモリ管理部と、
前記中央処理装置のアクセスによって設定された転送制御情報に従ってデータ転送制御を行う転送制御装置と、を有するデータプロセッサであって、
前記メモリ管理部は、前記アドレス変換に用いるアドレス変換データ対と、当該アドレス変換データ対に対応する仮想アドレスを用いるプログラム処理を識別するための識別情報とを有する変換エントリデータを、複数保持するためのアドレス変換バッファを有し、
前記転送制御装置は、前記転送制御情報を設定するときにおける前記中央処理装置のプログラム処理を識別するための識別情報を保持するための識別情報記憶部を有し、前記転送制御情報に従って転送対象の物理アドレスを生成するとき、当該物理アドレスに対応する識別情報が前記識別情報記憶部の識別情報に一致することを転送開始の条件とする、データプロセッサ。
【請求項2】
前記識別情報は、前記中央処理装置が実行するプログラムによる処理を識別するプロセス識別子を含む、請求項1記載のデータプロセッサ。
【請求項3】
前記識別情報は、前記プログラムの実行を管理する上位ソフトウェアを識別するドメイン識別子を含む、請求項2記載のデータプロセッサ。
【請求項4】
前記識別情報は、前記中央処理装置の動作モードが、特権モードかユーザモードかを示す動作モード識別子を更に含む、請求項2又は請求項3に記載のデータプロセッサ。
【請求項5】
前記転送制御装置は、前記転送制御情報に従って転送対象の物理アドレスを生成するときに用いるアドレス変換サブバッファを有し、前記アドレス変換サブバッファは、前記アドレス変換バッファが保持する情報のサブセットを保持する、請求項1記載のデータプロセッサ。
【請求項6】
前記転送制御装置が前記転送制御情報に従って転送対象の物理アドレスを生成するとき、必要な前記変換エントリデータが前記アドレス変換サブバッファに保持されていない場合には、前記転送制御装置は当該必要な前記変換エントリデータを前記メモリ管理部に要求し、前記メモリ管理部は前記要求に応答する前記変換エントリデータを前記転送制御装置に与える、請求項5記載のデータプロセッサ。
【請求項7】
前記中央処理装置と、前記メモリ管理部と、前記転送制御装置と、を一組とするセットを複数セット有し、
前記転送制御装置に対する前記転送制御情報の設定は、前記セット内の前記中央処理装置のみ可能とされる、請求項1記載のデータプロセッサ。
【請求項8】
前記中央処理装置と前記メモリ管理部を一組とするセットを複数セット有し、
前記転送制御装置は、前記各セットに共通利用され、前記転送制御情報に従って転送対象の物理アドレスを生成するときに、前記転送制御装置に対し前記転送制御情報の設定を行った前記中央処理装置の種別を保持し、前記アドレス変換サブバッファに必要な前記変換エントリデータが保持されていない場合には、当該必要な前記変換エントリデータを前記種別に応ずる前記中央処理装置が属するセットの前記メモリ管理部に要求する、請求項6記載のデータプロセッサ。
【請求項9】
プログラムを実行する中央処理装置と、
前記中央処理装置のアクセスによって設定された転送制御情報に従ってデータ転送制御を行う転送制御装置と、
前記中央処理装置のアドレス空間に配置されてアクセス対象にされる回路が接続されるアクセス保護装置と、を有するデータプロセッサであって、
前記アクセス保護装置は、アドレスと当該アドレスを用いるプログラム処理を識別する識別情報との情報対を複数対保持するための変換バッファを有し、前記転送制御情報に従って前記転送制御装置から出力されたアドレスに対応する情報対の識別情報が当該アドレスに伴って出力された識別情報に一致することを条件にアクセス対象回路に対するアクセスを許容する、データプロセッサ。
【請求項10】
前記識別情報は、前記中央処理装置が実行するプログラムによる処理を識別するプロセス識別子を含む、請求項9記載のデータプロセッサ。
【請求項11】
前記識別情報は、前記プログラムの実行を管理する上位ソフトウェアを識別するドメイン識別子を含む、請求項10記載のデータプロセッサ。
【請求項12】
前記識別情報は、前記中央処理装置の動作モードが、特権モードかユーザモードかを示す動作モード識別子を更に含む、請求項10又は請求項11に記載のデータプロセッサ。

【図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


【公開番号】特開2011−48615(P2011−48615A)
【公開日】平成23年3月10日(2011.3.10)
【国際特許分類】
【出願番号】特願2009−196369(P2009−196369)
【出願日】平成21年8月27日(2009.8.27)
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【Fターム(参考)】