JP2017004522A - メモリ保護ユニット、メモリ管理ユニット、及びマイクロコントローラ - Google Patents

メモリ保護ユニット、メモリ管理ユニット、及びマイクロコントローラ Download PDF

Info

Publication number
JP2017004522A
JP2017004522A JP2016114279A JP2016114279A JP2017004522A JP 2017004522 A JP2017004522 A JP 2017004522A JP 2016114279 A JP2016114279 A JP 2016114279A JP 2016114279 A JP2016114279 A JP 2016114279A JP 2017004522 A JP2017004522 A JP 2017004522A
Authority
JP
Japan
Prior art keywords
memory
memory protection
protection unit
unit
hardware
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016114279A
Other languages
English (en)
Other versions
JP6679419B2 (ja
Inventor
ピール、グナー
Gonor Peel
バナウ、ニコ
Bannow Nico
ホーフナーゲル、ジモン
Hufnagel Simon
グラディガウ、イェンス
Gladigau Jens
アマルナス、ラクシット
Amarnath Rakshith
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Robert Bosch GmbH filed Critical Robert Bosch GmbH
Publication of JP2017004522A publication Critical patent/JP2017004522A/ja
Application granted granted Critical
Publication of JP6679419B2 publication Critical patent/JP6679419B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)
  • Memory System (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】メモリ保護ユニット、メモリ管理ユニット、及びマイクロコントローラを提供する。
【解決手段】マイクロコントローラ15は、アドレステーブルを登録するためのハードウェアレジスタと、アドレステーブルを格納するための設定メモリ28と、設定メモリ28を管理するための事前設定されたメモリ保護ユニット29l、29gに含まれるハードウェアロジック部29eと、ハードウェアレジスタをロードするための、設定メモリ28とメモリ保護ユニット29l、29gとの間のデータ接続と、演算コア23、24によりロードを制御するための第1のインタフェースと、演算コア23、24により設定メモリ28に書き込むための第2のインタフェースとを有する。
【選択図】図2

Description

本発明は、メモリ保護ユニットに関する。本発明は、さらに、対応するメモリ管理ユニット、及び、対応するマイクロコントローラに関する。
ハイパーバイザ(VMM:virtual machine monitor、仮想マシンモニタ)は、仮想化の重要な基本コンセプトである。ソフトウェアの観点から、VMMは、様々な独立したソフトウェアエンティティが完全に互いに分けられることを保証する。この所謂無干渉(freedom from interference)は、セーフティクリティカルな適用の場合(use case、ユースケース)に特に有用である。比較的大きなソフトウェアエンティティ、例えば、オペレーションシステムを含むアプリケーションは、以下では仮想マシン(VM:virtual machine)と呼ばれる。比較的小さなソフトウェアエンティティ(SWE:software entity)は、例えば、VM内のオペレーションシステムのタスク、応用ソフトのソフトウェアスレッド(Software−Thread)又は構成要素である。VMとSWEの階層的な細分化は、実装においては、実際に階層的に実現され、又は、VMに対して論理的に対応付けて複数のSWEを均等に分散することよって実現されうる。効率的な仮想化のために、従来技術によるマイクロコントローラ又はマイクロプロセッサは、VMが互いに分けられるために特別なハードウェア機能を有する。
マイクロコントローラ又はマイクロプロセッサ(μP)(以下ではさらに纏めてμCと呼ぶ)内の仮想化の中心的構成要素は、メモリ保護ユニット(MPU:memory protection unit)である。汎用のMPUは、スタンドアローンであってもよく、又は、メモリ管理ユニット(MMU:memory management unit)に組み込まれてもよい。主演算コア−MPUは、μCの主演算コア(core)によるメモリアクセスの、起こりうるアクセスエラーについて検査する。IO−MMUは、μCのDMA(Direct Memory Access、直接メモリアクセス)対応又はマスタ機能(Master)対応の周辺ユニットによるメモリアクセスの、起こりうるアクセスエラーについて検査する。主演算コア−MPUとIO−MPUをまとめて、以下ではMPUと呼ぶことにする。DMA対応又はマスタ機能対応の周辺ユニットは、以下では主演算コアとまとめて、演算コアと呼ぶことにする。アクセスエラーとして、例えば、1のVMによる、他のVMに割り当てられたメモリアドレスへの書込みアクセスが上げられる。これに関して、許可された範囲内に個々のアクセスと関連付けられたアドレスが存在するかどうかが、アドレステーブルを用いて検査される。典型的に、様々なVMのために様々なアドレス範囲が設定される。例えば、5個のVM、及び、VMごとに10個のアドレス範囲のために、合計5×10=50個のアドレス範囲が定義される。典型的な演算システムは、1つ以上の演算コアと、例えば、フラッシュメモリ又はRAMメモリと、で構成され、この1つ以上の演算コア及びフラッシュメモリ又はRAMメモリは、バス又はスイッチングマトリクス(crossbar switch、クロスバースイッチ)を介して互いに接続されている。MPUは、例えば演算コアとバス又はスイッチングマトリクスとの間に存在するハードウェアユニットである。MPUはアドレス範囲を格納し、かつ比較ユニットを備える。この比較ユニットは、バス又はスイッチングマトリクスを介したメモリへの演算コアの各アクセスが許可されているかについて、当該アクセスが実行される前に検査する。アクセスが許可されている場合にはアクセスが行われる。アクセスが許可されるべきではない場合にはアクセスは妨げられ、従ってバスに到達せず、例えば割り込みによって演算コアに適切に報知される。
独国特許出願公開第19828056号明細書は、プログラムシーケンスにおけるメモリへの書込み中にメモリのメモリ領域を監視する構成に関する。
メモリのメモリ領域の設定中に以下のように構造化される補助メモリが、メモリに割り当てられ、即ち、メモリの保護すべきメモリ領域を標示する、補助メモリのメモリ領域が割り当てられるように、かつ、プログラムの進行中にメモリのメモリ領域と、補助メモリの上記標示するメモリ領域と、に同時に問い合わせが出来るように、かつ、補助メモリの上記標示するメモリ領域への問い合わせが許可されない際には、プログラムの進行に影響が及ぶように構造化される補助メモリが、メモリに割り当てられることが構想される。
本発明は、独立請求項に係るメモリ保護ユニット、対応するメモリ管理ユニット、及び、対応するマイクロコントローラを提供する。
本発明の根底には、仮想化のためのμCの特別なハードウェア機能に頻繁にアクセスされるほど、その効率が、実行速度に関してより重要になるという認識がある。最悪の場合にはVMMの利用によって、全計算能力ががくんと落ちるほど実行時間の追加コストが大きくなる。従って、本発明の一実施形態は、仮想化のためのハードウェアサポートであって、頻繁に利用しても当該ハードウェアサポートに必要な性能が最小限である上記ハードウェアサポートを提供する。
本解決策の利点は、無干渉を目的としてそのメモリ領域が互いに分けられているVM及びSWEの実行のために、MPUの必要な切り替えが加速化されることにある。このアプローチの目的は、特に、MPUの保護すべきアドレス範囲をロードするために必要な時間を最小限にすることである。このより迅速な切り替えは、例えば仮想化の効率のために役立ち、特にVMMによるVMの切り替えによって役立つ。より迅速な切り替えは、個々のスレッドが互いに分かれている通常のオペレーションシステム又はアプリケーションのためにも役に立ち、特に個々のSWEの切り替えによって役立つ。
演算コアはもはや、MPUレジスタを、自身が部分的に又は完全に(再)設定する必要がないため、演算コアは、MPU内部の再設定の間、これと並行してローカルメモリで演算を実行することが可能である。
さらに、本発明の一実施形態は、ハードウェアサポートによって、ソフトウェア同士の保護のためのアドレス範囲の管理を柔軟なものにする。
従属請求項及び以下の明細書において記載される処置によって、独立請求項で示される基本思想の有利な発展形態及び改良が可能である。従って、メモリ保護ユニットのアドレステーブルを格納するための設定メモリが、スタティックRAM(SRAM:static random−access memory)を含むことが構想されうる。クロック周波数が技術的に制限されているため、設定メモリの大きな伝送帯域幅の実現のためには、アドレス範囲の迅速な再設定を可能とするために大きなデータワード幅を利用することも可能である。その際に、MMUに直接接続されたチップ内部のメモリによって、256ビット以上のデータ幅も限界ではない(unkritisch)。
更なる別の観点によれば、シャドーレジスタが設けられてもよい。2つ以上のこのようなMPUレジスタセットであって、明示的にソフトウェアによって、又はハードウェア予測ロジック部によっても予めロードされうる上記MPUレジスタセットの使用によって、レジスタの切り替えがバッファリングされ、従ってさらに迅速に行われうる。
更なる別の観点によれば、ハードウェアロジック部は、一意のソフトウェア識別子に基づいて同じ実行レベル又は様々な実行レベルのソフトウェアエンティティを区別できるよう構成されてもよい。このようなID又はアクセスレベルを用いて、適切な周辺ユニットの転送が有効であるかがメモリ保護ユニットによって検査されうる。
更なる別の観点によれば、このようにして、ハードウェアロジック部は、ハードウェアレジスタの自動的又は部分的に自動的なロードが、各アクティブなソフトウェアに基づき当該ソフトウェアのソフトウェア識別子を用いて行われるように構成され、従って、演算コア(23)によるアクションは必要ではなく、又は限定されたアクションのみ必要である。従って、メモリ保護ユニットは、ソフトウェア識別子によって、自動的(かつ迅速)に、適切なアドレス範囲を自身のレジスタにロードすることが可能である。本処置は、しばしば、レジスタが非常に制限されており、メモリが比較的安価で、ソフトウェア識別子の変更は、バスを介した演算コアによるアクセスほど頻繁には明らかに行われないという状況を考慮したものである。提案されるアプローチは、可能な設定されるメモリ領域が、ソフトウェアにとってトランスペアレント(transparent)に、低コストで、明らかに増大することを意味している。
本発明の実施例が図面に示され、以下の明細書において詳細に解説される。
利用される概念をソフトウェアとハードウェアに概略的に整理したものを示す。 一実施形態に係るローカルのMPU設定メモリを備えたμCの構造を示す。 本発明の一実施形態の例示的な利用を示す。
例示的な利用のシナリオには、ソフトウェア10を実行するマイクロプロセッサ又はマイクロコントロ―ラ15の形態によるハードウェア11が含まれている。ソフトウェア10自身は、複数のVM12を監視することが可能なVMM14を含み、VM12自身は、複数のSWE13を有することが可能である。このような関連性が、図1に纏められている。
図2は、マイクロコントローラ15の構造をさらに詳細に示している。マイクロコントローラ15は、特に、グローバルアドレス空間22からの作業ファイルの読出し及びグローバルアドレス空間22への書込みのための、スイッチングマトリクスを備えたバス21であって、グローバルアドレス空間22は、当該グローバルアドレス空間22を介してアクセス可能なグローバルメモリ22aとグローバルアクセス可能な周辺ユニット22bとで構成される、上記バス21と、バス21と間接的に接続された演算コア23、24であって、符号23は、作業ファイルを処理するための主演算コアを示し、符号24は、作業ファイルを処理するための、DMA対応の周辺ユニットを示す、上記演算コア23、24と、ローカルの作業ファイルを格納するための、主演算コア23の各一方と間接的に接続された2つのローカルの作業メモリ25と、当該ローカルの作業メモリ25を保護するための2つの第1のメモリ保護ユニット29lであって、2つの主演算コア23の各一方と各ローカルの作業メモリ25lとの間に接続された上記メモリ保護ユニット29lとグローバルメモリ22a及びグローバル周辺ユニット22bを含むグローバルアドレス空間22を保護するための3つの第2のメモリ保護ユニット29gであって、3つの演算コア23、24のうちの1つとバス21との間に接続された上記メモリ保護ユニット29gと、各メモリ保護ユニット29g、29lに接続された設定メモリ28であって、保護すべきメモリ領域の設定が格納される上記設定メモリ28と、当該設定メモリ28にアクセス出来るためのアクセスインタフェース分のメモリ保護ユニット29l、29gの拡張部29eであって、符号20は、29eと28をまとめたものとして本発明に係る新規な要素を示す、上記拡張部29eと、を備える。
その際に、メモリ保護ユニット29l、29gの切り替えのためのハードウェアレジスタの内容は、例えば、マイクロコントローラ15のメインメモリには格納されない。その代わりに、メモリ保護ユニット29l、29gは各々、好適にスタティックRAMの形態による固有のローカルの設定メモリ28と、当該設定メモリ28を管理するための、メモリ保護ユニット29l、29gに含まれるハードウェアロジック部29eと、性能の良いデータ線と、設定メモリ28とハードウェアロジック部29l、29gとの間、特に、設定メモリ28とハードウェアロジック部29l、29gのハードウェアレジスタとの間の制御ロジック部であって、設定メモリ28とハードウェアレジスタとの間のデータ交換のために、検査すべきアドレス範囲を保持する上記制御ロジック部と、メモリ保護ユニット29l、29gと各演算コア23、24との間のインタフェースであって、設定メモリ28とハードウェアレジスタとの間の比較を制御するための上記インタフェースと、メモリ保護ユニット29l、29gと各演算コア23、24との間のインタフェースであって、直接的なデータ転送の途中に又はメモリ保護ユニット29l、29gによる前処理の後に、演算コア2、24により設定メモリ28に書き込むための上記インタフェースと、有する。
任意に、メモリ保護ユニット29l、29gは、様々なアクセスレベルを階層的に分けるためのロジック部を、例えばVMM14、VM12、又はSWE13の区別のために有し、正に実行されるソフトウェア10のアクセスレベル又は識別子(identification、ID)に基づいて、例えば、VMの場合はVM−IDに基づいて、SWEの場合はスレッドIDに基づいて、所望のMPU設定の自動的なロードを統制する。
アクティブなVMを定期的に実行する間、各メモリ保護ユニット29l、29gは、従来の形態で動作する。即ち、特定数のアドレス範囲を含む最新のアドレステーブルが、メモリ保護ユニット29l、29gのハードウェアレジスタ内に存在する。各演算コア23、24による各アドレスアクセスのアクセス権は、該当するアドレスがメモリ保護ユニット29l、29gのアドレステーブルの各アドレス範囲に対して検査されることで、検査される。迅速な検査を可能とするために、全ての検査が好適にパラレルなハードウェア構造により実行され、例えば、アドレス範囲ごとに、下限についての比較器及び上限についての比較器が設けられることで、全ての検査が好適にパラレルなハードウェア構造により実行される。
しかしながら、ソフトウェアエンティティ、例えばVMが切り替えられる場合には、本発明によれば、ソフトウェア10はもはや、アドレス範囲の書込みのための各ハードウェアレジスタを個々に又はブロック単位で、メモリ保護ユニット29l、29gに明示的に新たにロードする必要がない。その代わりに、アドレス範囲が、ハードウェアロジック部29eによって、メモリ保護ユニット29l、29gのローカルの設定メモリ28から読み出される。設定メモリ28は、好適に高速のSRAMである。上記切り替えのために、ソフトウェア10は、メモリ保護ユニット29l、29gに指示するだけでよい。このことは、例えば、設定メモリ28内でのアドレスの表示によって、又は、新しい設定データがそれに対して格納されるIDの伝達によって行うことが可能である。上記指示は、各演算コア23、24によって明示的に行われてもよく、又は、一意のID又はアクセスレベルが割り当てられる特定のVMM/VM/SWEによるメモリアクセスによって暗黙的に行われてもよい。
初期に又は実行時間にアドレス範囲を設定するためには、実現に応じて、各演算ユニット23、24、又は、演算ユニット23、24のうちの1つのみが、直接的又は間接的にメモリ保護ユニット29l、29gのハードウェアレジスタを介して、メモリ保護ユニット29l、29gの固有の設定メモリ28又は全ての設定メモリ28に、即ち、保護すべきアドレス範囲にアクセスすることが可能である。
後の作業フローにおいて、DMA対応の周辺ユニット24によるメモリアクセスが設定される場合には、好適に、主演算コア23の、設定するVMM/VM/SWEの、場合により暗黙的に伝達されたID若しくはアクセスレベル、又は明示的に伝達すべきID若しくはアクセスレベルも、DMA対応の周辺ユニット24に格納されるが、設定メモリ28には格納されない。後のフローにおいて、DMA対応の周辺ユニット24による各メモリアクセスには、対応するID又はアクセスレベルを付けることが可能である。このID又はアクセスレベルは、演算コア23、24のどのVMM/VM/SWEが各転送を設定したのかに従っている。ID又はアクセスレベルによって、DMA対応の周辺ユニット24の転送が有効であるかが、メモリ保護ユニット29gによって、ここでも再び設定メモリ28のアドレスデータを用いて検査されうる。
アクティブなソフトウェア10の実行レベルに従って、実行する主演算コア23による、メモリ保護ユニット29l、29gの設定へのアクセスが許可され、又は禁止されうる。
メモリ保護ユニット29l、29eは、明示的及び/又は暗黙的に/自動的に、SW ID又は特権レベルに基づいて、以下のオプションに従ってアドレステーブルをロードすることが可能である。
特に、該当するメモリ保護ユニット29l、29gが「均等(flach)」であり、VM間でのみ区別される場合:即ち、ソフトウェア10は、メモリ保護ユニット29l、29で、VMのためのアドレステーブルの始まりを明示的に設定する。このために、メモリ保護ユニット29l、29gのメモリ領域内では、インデックス(Index)ごと又はアドレスごとに、直接的又は間接的にオフセット(Offset)ごとに、最初のエントリ及び最終エントリが示される。
特に、該当するメモリ保護ユニット29l、29eが階層的であり、VM間及びSWE間で区別される場合:即ち、ソフトウェア10は、直接的又は間接的にオフセットごとに、関連するSWEのエントリをインデックスごと又はアドレスごとに示すことが出来る。
該当するメモリ保護ユニット29l、29eの設定メモリ28又はハードウェアレジスタに格納された上記情報から、各実行されるVM又はSWEに許されるアドレス空間へのジャンプが導出されうる。
任意の安全性特徴(safety feature、安全機能)に従って、起動段階(start−up phase)で、メモリ保護ユニット29l、29gのための想定される全ての設定を書き込み、駆動中には他の変更の可能性を禁止することが構想される。その場合、メモリ保護ユニット29l、29gは設定モードにあり、引き続いて、他の相互作用が起こることなく、自立的に動作する。
好適に、VM内でのSWEの数は設定されておらず、フレキシブルに選択されうる。対応する実施形態において、限られた数のハードウェア比較器によって、同時に検査することが可能なアドレス範囲の最大数も制限することが可能であろう。
階層を考慮する一実施形態において、メモリ保護ユニット29l、29gによって、1の実行レベルのソフトウェア10が、同じ実行レベル又は特権的な実行レベルの他のソフトウェア10の設定を修正せず又は読み出さないことが保証される。これにより、VMMと、様々なVM及びSWEと、の設定されたアドレス範囲は或る程度まで見えない。この場合には、上位のソフトウェア10に、全ての下位のソフトウェアエンティティ10のアドレス範囲の設定へのフルアクセスが認められ、特に、VMM14には、VM12及びSWE13へのフルアクセスが認められ、VM12には、SWE13へのフルアクセスが認められる。
2つ以上のハードウェアレジタセットを使用することによって、かつ対応して、従来技術で公知のシャドーレジスタ又はシャドー設定レジスタであって、明示的にソフトウェア10又はハードウェア11の予測ロジック部によってヒューリスティックに(heuristisch)予めロード(prefetching、先読み)されうる上記シャドーレジスタ又はシャドー設定レジスタを使用することによって、ハードウェアレジスタの切り替えがバッファリングされ、従ってさらに迅速に行われうる。
設定メモリ28が、全てのVM及びSWEのためには十分ではない場合には、演算コア23のローカルメモリ25又はグローバルメモリ領域22aにも上記設定を格納し、必要に応じて、これらのメモリと、メモリ保護ユニット29l、29gに接続された設定メモリ28と、の間で双方向に複写することが可能である。グローバルメモリ領域22aへのアクセスのために、演算コア23、24若しくはDMAコントローラを利用することが可能であり、又は、メモリ保護ユニット29l、29gは、対応するアクセスロジック部が存在する場合には、バス21を用いて上記メモリ22aに直接的にアクセスすることが可能である。
階層が考慮される場合には、階層レベルの設定時に、より深い階層レベルにおけるエントリの最大数を設定出来るであるべきであろう。例えば、VM12では、SWE13の実際の数を実行時間に自由に設定できるべきであろう。このことは動的にも行われ、即ち、場合によってはハードウェア11の限定されたリソースにより上限が設定されて、動的にも行われうる。
図3は、本発明の一実施形態の利用の一例を図示している。第1の工程は、起動時に行われる初期化であって、動的に実行時間にも行われる上記初期化によって構成される。本工程では、演算コア23が、メモリ保護ユニット29gに1つ以上のアドレス範囲を送信する。メモリ保護ユニット29gは当該アドレス範囲を、インタフェース29eを介して、接続された設定メモリ28に格納する。
本適用の第2の工程は、稼働中の活動化である。本工程では、演算コア23は、メモリ保護ユニット29gに、活動化すべきアドレス範囲を明示的又は暗黙的に報知する。この報知は、インデックス、ソフトウェアID、特権レベル、又は、設定メモリ28へのポインタを用いて行うことが可能であり、1つ以上のアドレス範囲を含みうる。メモリ保護ユニット29gは、演算ユニット23によって起動されて又は独立的に、古いアドレス範囲の一部を、当該アドレス範囲がもはや有効ではない場合には破棄し、当該アドレス範囲が引き続き有効なままである場合には格納することが可能である。メモリ保護領域29gは、新しい有効なアドレス範囲を、むしろ設定メモリ28からローカルのハードウェアレジスタへとロードする。
第3の工程では、メモリ保護ユニット29gは通常駆動に移行する。その際に、演算コア23は、アドレス指定によってメモリ領域にアクセスし、メモリ保護ユニット29gは、演算コア23により利用されるアドレスが許可されているかについて検査する。許可されている場合には、上記アクセスはバス21に転送され、それ以外の場合にはブロックされる。
マイクロコントローラ又はマイクロプロセッサ(μP)(以下ではさらに纏めてμCと呼ぶ)内の仮想化の中心的構成要素は、メモリ保護ユニット(MPU:memory protection unit)である。汎用のMPUは、スタンドアローンであってもよく、又は、メモリ管理ユニット(MMU:memory management unit)に組み込まれてもよい。主演算コア−MPUは、μCの主演算コア(core)によるメモリアクセスの、起こりうるアクセス違反について検査する。IO−MMUは、μCのDMA(Direct Memory Access、直接メモリアクセス)対応又はマスタ機能(Master)対応の周辺ユニットによるメモリアクセスの、起こりうるアクセス違反について検査する。主演算コア−MPUとIO−MMUをまとめて、以下ではMPUと呼ぶことにする。DMA対応又はマスタ機能対応の周辺ユニットは、以下では主演算コアとまとめて、演算コアと呼ぶことにする。アクセス違反として、例えば、1のVMによる、他のVMに割り当てられたメモリアドレスへの書込みアクセスが上げられる。これに関して、許可された範囲内に個々のアクセスと関連付けられたアドレスが存在するかどうかが、アドレステーブルを用いて検査される。典型的に、様々なVMのために様々なアドレス範囲が設定される。例えば、5個のVM、及び、VMごとに10個のアドレス範囲のために、合計5×10=50個のアドレス範囲が定義される。典型的な演算システムは、1つ以上の演算コアと、例えば、フラッシュメモリ又はRAMメモリと、で構成され、この1つ以上の演算コア及びフラッシュメモリ又はRAMメモリは、バス又はマトリクススイッチ(crossbar switch、クロスバースイッチ)を介して互いに接続されている。MPUは、例えば演算コアとバス又はマトリクススイッチとの間に存在するハードウェアユニットである。MPUはアドレス範囲を格納し、かつ比較ユニットを備える。この比較ユニットは、バス又はマトリクススイッチを介したメモリへの演算コアの各アクセスが許可されているかについて、当該アクセスが実行される前に検査する。アクセスが許可されている場合にはアクセスが行われる。アクセスが許可されるべきではない場合にはアクセスは妨げられ、従ってバスに到達せず、例えば割り込みによって演算コアに適切に報知される。
本発明の根底には、仮想化のためのμCの特別なハードウェア機能に頻繁にアクセスされるほど、仮想化の効率が、実行速度に関してより重要になるという認識がある。最悪の場合にはVMMの利用によって、全計算能力ががくんと落ちるほど実行時間の追加コストが大きくなる。従って、本発明の一実施形態は、仮想化のためのハードウェアサポートであって、頻繁に利用しても当該ハードウェアサポートに必要な性能が最小限である上記ハードウェアサポートを提供する。
更なる別の観点によれば、このようにして、ハードウェアロジック部は、ハードウェアレジスタの自動的又は部分的に自動的なロードが、各アクティブなソフトウェアに基づき当該ソフトウェアのソフトウェア識別子を用いて行われるように構成され、従って、演算コアによるアクションは必要ではなく、又は限定されたアクションのみ必要である。従って、メモリ保護ユニットは、ソフトウェア識別子によって、自動的(かつ迅速)に、適切なアドレス範囲を自身のレジスタにロードすることが可能である。本処置は、しばしば、レジスタが非常に制限されており、メモリが比較的安価で、ソフトウェア識別子の変更は、バスを介した演算コアによるアクセスほど頻繁には明らかに行われないという状況を考慮したものである。提案されるアプローチは、可能な設定されるメモリ領域が、ソフトウェアにとってトランスペアレント(transparent)に、低コストで、明らかに増大することを意味している。
その際に、メモリ保護ユニット29l、29gの切り替えのためのハードウェアレジスタの内容は、例えば、マイクロコントローラ15のメインメモリには格納されない。その代わりに、メモリ保護ユニット29l、29gは各々、好適にスタティックRAMの形態による固有のローカル設定メモリ28と、当該設定メモリ28を管理するための、メモリ保護ユニット29l、29gに含まれるハードウェアロジック部29eと、性能の良いデータ線と、設定メモリ28とハードウェアロジック部29l、29gとの間、特に、設定メモリ28とハードウェアロジック部29l、29gのハードウェアレジスタとの間の制御ロジック部であって、設定メモリ28とハードウェアレジスタとの間のデータ交換のために、検査すべきアドレス範囲を保持する上記制御ロジック部と、メモリ保護ユニット29l、29gと各演算コア23、24との間のインタフェースであって、設定メモリ28とハードウェアレジスタとの間の比較を制御するための上記インタフェース(第1のインタフェース)と、メモリ保護ユニット29l、29gと各演算コア23、24との間のインタフェースであって、直接的なデータ転送の途中に又はメモリ保護ユニット29l、29gによる前処理の後に、演算コア2、24により設定メモリ28に書き込むための上記インタフェース(第2のインタフェース)と、を有する。
後の作業フローにおいて、DMA対応の周辺ユニット24によるメモリアクセスが設定される場合には、好適に、主演算コア23の、当該DMA対応の周辺ユニット24によるメモリアクセスを設定するVMM/VM/SWEの、場合により暗黙的に伝達されたID若しくはアクセスレベル、又は明示的に伝達すべきID若しくはアクセスレベルも、DMA対応の周辺ユニット24に格納されるが、設定メモリ28には格納されない。後のフローにおいて、DMA対応の周辺ユニット24による各メモリアクセスには、対応するID又はアクセスレベルを付けることが可能である。このID又はアクセスレベルは、演算コア23、24のどのVMM/VM/SWEが各転送を設定したのかに従っている。ID又はアクセスレベルによって、DMA対応の周辺ユニット24の転送が有効であるかが、メモリ保護ユニット29gによって、ここでも再び設定メモリ28のアドレスデータを用いて検査されうる。
アクティブなソフトウェア10の実行レベルに従って、当該ソフトウェア10を実行する主演算コア23による、メモリ保護ユニット29l、29gの設定へのアクセスが許可され、又は禁止されうる。

Claims (10)

  1. メモリ保護ユニット(29l、29g)であって、以下の特徴、即ち、
    −アドレステーブルを登録するためのハードウェアレジスタと、
    −前記アドレステーブルを格納するための設定メモリ(28)と、
    −前記設定メモリ(28)を管理するための事前設定されたハードウェアロジック部(29l、29g)と、
    −前記ハードウェアレジスタをロードするための、前記設定メモリ(28)と前記ハードウェアロジック部(29l、29g)との間のデータ接続と、
    −演算コア(23、24)により前記ロードを制御するための第1のインタフェースと、
    −前記演算コア(23、24)により前記設定メモリ(28)に書き込むための第2のインタフェースと、
    いう特徴を有することを特徴とする、メモリ保護ユニット(29l、29g)。
  2. 前記ハードウェアロジック部(29l、29g)は、前記ハードウェアレジスタの前記ロードの際のアクセスを監視するよう構成されることを特徴とする、請求項1に記載のメモリ保護ユニット(29l、29g)。
  3. 前記ハードウェアロジック部(29l、29g)は、前記ロードがアクセス階層の実行レベルに従って行われるよう構成されることを特徴とする、請求項2に記載のメモリ保護ユニット(29l、29g)。
  4. 前記ハードウェアロジック部(29l、29g)は、前記実行レベルがソフトウェア識別子に従って決定されるよう構成されることを特徴とする、請求項3に記載のメモリ保護ユニット(29l、29g)。
  5. 前記ハードウェアロジック部(29l、29g)は、前記ソフトウェア識別子が選択的に、VMM(14)、VM(12)、又はSWE(13)を示すよう構成されることを特徴とする、請求項4に記載のメモリ保護ユニット(29l、29g)。
  6. 前記ハードウェアロジック部(29l、29g)は、前記ソフトウェア識別子を用いて、同じ実行レベル及び様々な実行レベルのVM(12)、及び、同じ実行レベル及び様々な実行レベルのSWE(13)を区別できるよう構成されることを特徴とする、請求項4又は5に記載のメモリ保護ユニット(29l、29g)。
  7. 前記ハードウェアロジック部(29l、29g)は、前記ハードウェアレジスタの自動的又は部分的に自動的なロードが、各アクティブなソフトウェア(12、13、14)に基づいて、当該ソフトウェア(12、13、14)を示す前記ソフトウェア識別子を用いて行われるよう構成されることを特徴とする、請求項6に記載のメモリ保護ユニット(29l、29g)。
  8. 請求項1〜7のいずれか1項に記載のメモリ保護ユニット(29l、29g)を備えたメモリ管理ユニット。
  9. 請求項1〜7のいずれか1項に記載のメモリ保護ユニット(29l、29g)を備えたマイクロコントローラ(15)。
  10. 前記マイクロコントローラ(15)は、以下の特徴、即ち、
    −グローバルアドレス空間(22)と作業ファイルを交換するための、好適にスイッチングマトリクスを備えたバス(21)と、
    −前記作業ファイルを処理するための、前記バス(21)と間接的に接続された演算コア(23、24)と、
    −前記グローバルアドレス空間(22)を保護するための、前記演算コア(23、24)のうちの1つと前記バス(21)との間に接続されたメモリ保護ユニット(29l、29g)と、
    を有することを特徴とする、請求項9に記載のマイクロコントローラ(15)。
JP2016114279A 2015-06-09 2016-06-08 メモリ保護ユニット、メモリ管理ユニット、及びマイクロコントローラ Active JP6679419B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102015210539.3 2015-06-09
DE102015210539.3A DE102015210539A1 (de) 2015-06-09 2015-06-09 Speicherschutzeinheit, Speicherverwaltungseinheit und Mikrocontroller

Publications (2)

Publication Number Publication Date
JP2017004522A true JP2017004522A (ja) 2017-01-05
JP6679419B2 JP6679419B2 (ja) 2020-04-15

Family

ID=57394834

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016114279A Active JP6679419B2 (ja) 2015-06-09 2016-06-08 メモリ保護ユニット、メモリ管理ユニット、及びマイクロコントローラ

Country Status (4)

Country Link
US (1) US10031862B2 (ja)
JP (1) JP6679419B2 (ja)
CN (1) CN106250328B (ja)
DE (1) DE102015210539A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7498181B2 (ja) 2019-02-01 2024-06-11 アーム・リミテッド セキュア及びノンセキュア・ストレージのためのルックアップ回路

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6990150B2 (ja) * 2018-06-18 2022-01-12 ルネサスエレクトロニクス株式会社 データ処理装置及びメモリ保護方法
EP3792800A1 (en) 2019-09-12 2021-03-17 Nxp B.V. Managing equally sized virtual memory regions and physical memory regions in an electronic device

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009523280A (ja) * 2006-01-13 2009-06-18 フリースケール セミコンダクター インコーポレイテッド プロテクションシステム及びその動作方法
WO2012117465A1 (ja) * 2011-03-02 2012-09-07 パナソニック株式会社 仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、及び半導体集積回路
JP2013232151A (ja) * 2012-05-01 2013-11-14 Renesas Electronics Corp メモリ保護回路、処理装置、およびメモリ保護方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1065346C (zh) * 1994-10-20 2001-05-02 联华电子股份有限公司 软件保护方法及装置
DE19828056A1 (de) 1998-06-24 1999-12-30 Bosch Gmbh Robert Speicherüberwachungssystem
US6820177B2 (en) * 2002-06-12 2004-11-16 Intel Corporation Protected configuration space in a protected environment
US7475209B2 (en) * 2004-05-13 2009-01-06 International Business Machines Corporation Moving hardware context structures in memory while maintaining system operation
CN1306357C (zh) * 2004-12-15 2007-03-21 中国长城计算机深圳股份有限公司 一种保证信息安全的计算机系统
JP4818793B2 (ja) * 2006-04-20 2011-11-16 ルネサスエレクトロニクス株式会社 マイクロコンピュータ及びメモリアクセスの制御方法
US7817799B2 (en) * 2006-09-07 2010-10-19 International Business Machines Corporation Maintaining encryption key integrity
KR101724590B1 (ko) * 2011-01-31 2017-04-11 삼성전자주식회사 멀티 프로세서 시스템에서의 메모리 보호 장치 및 방법
WO2013101248A1 (en) * 2011-12-31 2013-07-04 Intel Corporation Hardware protection of virtual machine monitor runtime integrity watcher
JP2014081819A (ja) * 2012-10-17 2014-05-08 Renesas Electronics Corp 情報処理装置
US9836318B2 (en) * 2014-02-21 2017-12-05 Infineon Technologies Ag Safety hypervisor function
US9389793B2 (en) * 2014-03-06 2016-07-12 Freescale Semiconductor, Inc. Trusted execution and access protection for embedded memory
FR3020160B1 (fr) * 2014-04-16 2017-08-11 Commissariat Energie Atomique Systeme d'execution de code avec mecanisme d'hypervision en aveugle
GB2525596B (en) * 2014-04-28 2021-05-26 Arm Ip Ltd Access control and code scheduling

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009523280A (ja) * 2006-01-13 2009-06-18 フリースケール セミコンダクター インコーポレイテッド プロテクションシステム及びその動作方法
WO2012117465A1 (ja) * 2011-03-02 2012-09-07 パナソニック株式会社 仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、及び半導体集積回路
JP2013232151A (ja) * 2012-05-01 2013-11-14 Renesas Electronics Corp メモリ保護回路、処理装置、およびメモリ保護方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7498181B2 (ja) 2019-02-01 2024-06-11 アーム・リミテッド セキュア及びノンセキュア・ストレージのためのルックアップ回路

Also Published As

Publication number Publication date
US20160364342A1 (en) 2016-12-15
JP6679419B2 (ja) 2020-04-15
DE102015210539A1 (de) 2016-12-15
CN106250328B (zh) 2022-01-18
US10031862B2 (en) 2018-07-24
CN106250328A (zh) 2016-12-21

Similar Documents

Publication Publication Date Title
US10901772B2 (en) Virtualization exceptions
US10409597B2 (en) Memory management in secure enclaves
EP2889777B1 (en) Modifying memory permissions in a secure processing environment
US10318407B2 (en) Allocating a debug instruction set based on the current operating state in a multi-instruction-set data processing apparatus
JP5969550B2 (ja) パフォーマンスカウンタの仮想化
US9298639B2 (en) Controlling access to groups of memory pages in a virtualized environment
JP4668166B2 (ja) ゲストがメモリ変換されたデバイスにアクセスする方法及び装置
EP2955634B1 (en) Paravirtualization-based interface for memory management in virtual machines
JP2013232151A (ja) メモリ保護回路、処理装置、およびメモリ保護方法
US20140068792A1 (en) Information processing apparatus and control method
US20160188354A1 (en) Efficient enabling of extended page tables
CN103778099B (zh) 信息处理设备
WO2017105758A1 (en) Monitoring the operation of a processor
US9436495B2 (en) Protection against interrupts in virtual machine functions
JP6679419B2 (ja) メモリ保護ユニット、メモリ管理ユニット、及びマイクロコントローラ
US9558364B2 (en) Computing machine, access management method, and access management program
EP1901171A1 (en) Apparatus and method for handling interrupt disabled section and page pinning apparatus and method
JP2019535093A (ja) ワーキングメモリを保護する方法および装置
GB2536005A (en) Initialising control data for a device

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160608

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20190208

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20190214

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20190222

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20190318

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20190319

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190529

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20200219

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200225

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200311

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200318

R150 Certificate of patent or registration of utility model

Ref document number: 6679419

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250