JP5716824B2 - マルチコアプロセッサシステム - Google Patents

マルチコアプロセッサシステム Download PDF

Info

Publication number
JP5716824B2
JP5716824B2 JP2013506906A JP2013506906A JP5716824B2 JP 5716824 B2 JP5716824 B2 JP 5716824B2 JP 2013506906 A JP2013506906 A JP 2013506906A JP 2013506906 A JP2013506906 A JP 2013506906A JP 5716824 B2 JP5716824 B2 JP 5716824B2
Authority
JP
Japan
Prior art keywords
application
processor system
core processor
memory
access
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.)
Expired - Fee Related
Application number
JP2013506906A
Other languages
English (en)
Other versions
JPWO2012131884A1 (ja
Inventor
浩一郎 山下
浩一郎 山下
宏真 山内
宏真 山内
鈴木 貴久
貴久 鈴木
康志 栗原
康志 栗原
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2012131884A1 publication Critical patent/JPWO2012131884A1/ja
Application granted granted Critical
Publication of JP5716824B2 publication Critical patent/JP5716824B2/ja
Expired - Fee Related 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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • G06F11/167Error detection by comparing the memory output
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • 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/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings

Description

本発明は、ソフトウェアを保護するマルチコアプロセッサシステムに関する。
近年、1つのシステム内に、複数のコアを有するマルチコアプロセッサシステムの形態を採用する機器が増加している。1つのシステム内に1つのコアを有するシングルコアプロセッサシステム用のアプリケーションソフトウェア(以下、「アプリ」と称する)をマルチコアプロセッサシステムで動作させた場合、多くの障害が発生する可能性が存在する。また、新たにマルチコアプロセッサシステム向けに開発されたソフトウェアであっても、複数のコアが同時に動作する並列動作状態での検証について、試験者が全てのタイミングを検証することは困難であった。次に、マルチコアプロセッサシステムでどのような障害が起きるかということを図10、図11を参照して説明する。
図10は、シングルコアプロセッサシステム向けのソフトウェアをマルチコアプロセッサシステム上で動作する場合の動作例を示す説明図である。符号1001で示す説明図では、アプリ1003をシングルコアプロセッサシステムで動作する場合について説明し、符号1002で示す説明図では、アプリ1003をマルチコアプロセッサシステムで動作する場合について説明する。
初めに、符号1001で示す説明図にて、アプリ1003内のメインスレッド1004は、関数f(x)を呼び出し、f(x)の結果を利用する。そこで、メインスレッド1004は、f(x)を実行するオフロード処理用のスレッド1005を起動し、スレッド1005の終了後、f(x)の結果を利用し、処理を続行する。なお、スレッドとはCPUで行う処理を管理するための基本単位である。
アプリ1003がシングルコアプロセッサシステムで動作する場合、メインスレッド1004は、時刻t1でスレッド1005を起動する。続けて、スレッド1005が時刻t2にてf(x)の処理を終了した後、時刻t3にて、メインスレッド1004は、結果を利用する。
次に、符号1002で示す説明図にて、アプリ1003がマルチコアプロセッサシステムで動作する場合について説明する。アプリ1003が、マルチコアプロセッサシステム環境で動作検証されておらず安全でない場合、符号1006で示す動作となり、マルチコアプロセッサシステム環境で動作検証されており安全である場合、符号1007で示す動作となる。なお、以下の説明にて、マルチコアプロセッサシステム環境で動作検証されておらず安全でないアプリを低信頼アプリと呼称し、マルチコアプロセッサシステム環境で動作検証されており安全であるアプリを高信頼アプリと呼称する。なお、マルチコアプロセッサシステムで対象のアプリに信頼性があるか否かを検証する方法としては、様々なタイミングに対して検証を行う方法が存在する。
アプリ1003が低信頼アプリである場合、CPU(Central Processing Unit)#1で実行するメインスレッド1004は、時刻t1でスレッド1005をCPU#2上で起動する。CPU#2は、スレッド1005と他スレッドが割り当てられている状態を想定している。スレッド1005は、時刻t3にてf(x)の処理を終了する。
また、CPU#1はメインスレッド1004のみを実行しているため、メインスレッド1004の割当時間がシングルコアプロセッサシステム時より多くなる。結果、時刻t3より早い時刻t2にて、メインスレッド1004は、f(x)の結果を利用する。時刻t2では、まだf(x)の処理が終了していないため、メインスレッド1004は、予期せぬ値を読み込むことになり、障害が発生する。
アプリ1003が高信頼アプリである場合、メインスレッド1004は、f(x)の結果を利用する前に同期処理が挿入されている。これにより、メインスレッド1004は、時刻t2にて、スレッドf(x)の結果を利用する前で同期処理を実行する。同期処理が実行されたメインスレッド1004は、スレッド1005が処理終了するまで待機し、安全に処理を実行することができる。
図11は、シングルコアプロセッサシステム上で呼び出されていたライブラリがマルチコアプロセッサシステム上で呼び出される場合の説明図である。符号1101で示す説明図は、ライブラリAがシングルコアプロセッサシステム上で動作する場合を示しており、符号1102で示す説明図は、ライブラリAがマルチコアプロセッサシステム上で動作する場合を示している。
符号1101で示す説明図にて、アプリXは、ライブラリAを呼び出している。また、アプリYは、ライブラリAとライブラリBを呼び出している。このように、シングルコアプロセッサシステム上で呼び出されるライブラリAは、特別な管理を行わなくてよい。
符号1102で示す説明図にて、アプリXはCPU#1で実行されており、アプリYはCPU#2で実行されている。ライブラリAが共有リソースを有する場合、ライブラリAは、ライブラリAのコンテキスト1103に対して排他制御を行うといった対策が取られる。具体的な対策として、CPU#1上のライブラリAは、インターフェース1104#1を通じ、IPC(Inter−Processor Communication)1105#1、IPC1105#2を用いてCPU#2のライブラリAと排他制御を行う。このような対策が行われているライブラリは高信頼のライブラリとなり、対策が行われていないライブラリは低信頼のライブラリとなる。
このような、高信頼アプリ、低信頼アプリを実行する場合の技術として、たとえば、システムを、ドメイン分割し、安全な動作をする高信頼アプリ群となる安全ドメインと、安全な動作をする保証がない低信頼アプリ群となる非安全ドメインとに分割する。安全ドメインは、メモリ内の非安全ドメインがアクセスできない安全データにアクセスする技術が開示されている(たとえば、下記特許文献1、2を参照。)。
また、データを保護する技術として、たとえば、フラッシュメモリの例として、未使用の予備ブロックを探し出し、保護領域用のエラーブロックとする技術が開示されている。また、データを保護する他の技術として、たとえば、メモリを2重化する領域を設け、重要なプログラムやデータの破壊を防ぐ技術が開示されている(たとえば、下記特許文献3、4を参照。)。
特表2006−506754号公報 特開2004−171563号公報 特開2004−310770号公報 特開平5−108493号公報
上述した従来技術を適用し、高信頼アプリ、低信頼アプリを実行する場合、マルチコアプロセッサシステムは、高信頼アプリ、低信頼アプリを分割して運用することになる。したがって、従来技術を適用したマルチコアプロセッサシステムは、高信頼アプリと低信頼アプリを混載して運用することが困難であるという問題があった。
本発明は、上述した従来技術による問題点を解消するため、高信頼アプリと低信頼アプリを混載して運用できるマルチコアプロセッサシステムを提供することを目的とする。
上述した課題を解決し、目的を達成するため、本発明の一側面によれば、複数のCPUと、メモリと、複数のCPUとメモリとの間に配置されるメモリプロテクトコントローラと、を含み、メモリプロテクトコントローラは、アプリケーション実行時に複数のCPUのアクセス要求によって第1メモリ領域にアクセスするとともに、システムブート時に確保された第2メモリ領域にアクセスするマルチコアプロセッサシステムが提案される。
本発明の一側面によれば、高信頼アプリと低信頼アプリを混載して運用できるという効果を奏する。
図1は、本実施の形態にかかるマルチコアプロセッサシステム100の障害発生時の動作例と復元処理の動作例を示す説明図である。 図2は、マルチコアプロセッサシステム100のハードウェア例を示すブロック図である。 図3は、マルチコアプロセッサシステム100の機能例を示すブロック図である。 図4は、メモリプロテクトコントローラ106の内部の機能例を示す説明図である。 図5は、メモリプロテクトコントローラ106の登録例を示す説明図である。 図6は、マルチコアプロセッサシステム100の起動時の処理手順の一例を示すフローチャートである。 図7は、マルチコアプロセッサシステム100のアプリ切替時の処理手順の一例を示すフローチャート(その1)である。 図8は、マルチコアプロセッサシステム100のアプリ切替時の処理手順の一例を示すフローチャート(その2)である。 図9は、マルチコアプロセッサシステム100のエラー時の処理手順の一例を示すフローチャートである。 図10は、シングルコアプロセッサシステム向けのソフトウェアをマルチコアプロセッサシステム上で動作する場合の動作例を示す説明図である。 図11は、シングルコアプロセッサシステム上で呼び出されていたライブラリがマルチコアプロセッサシステム上で呼び出される場合の説明図である。
以下に添付図面を参照して、開示のマルチコアプロセッサシステムの実施の形態を詳細に説明する。
図1は、本実施の形態にかかるマルチコアプロセッサシステム100の障害発生時の動作例と復元処理の動作例を示す説明図である。図1では、符号101で示す説明図にて、マルチコアプロセッサシステム100の障害発生時の動作例を示し、符号102で示す説明図にて、マルチコアプロセッサシステム100の復元処理の動作例を示す。
図1におけるマルチコアプロセッサシステム100は、複数のコアとなるCPUs103と、メモリ104とを含む。マルチコアプロセッサシステム100は、携帯電話といった携帯端末を想定している。CPUs103には、CPU#1とCPU#2が含まれる。以下、接尾記号“#n”が付随された記号は、n番目のCPUに対応する記号であることを示している。CPUs103とメモリ104は、バス105で接続されている。また、CPU#1、CPU#2は、それぞれ、メモリプロテクトコントローラ106#1、メモリプロテクトコントローラ106#2と通信可能である。
メモリプロテクトコントローラ106は、2重アクセス形態とアクセススルー形態という、2つの形態のうち指示された形態に応じた動作をする装置である。2重アクセス形態の指示がある場合、メモリプロテクトコントローラ106は、アプリ本来の要求先アドレスにアクセスしつつ、保護されたメモリ領域内のアドレスにアクセスする機能を有している。また、アクセススルー形態の指示がある場合、メモリプロテクトコントローラ106は、アプリ本来の要求先アドレスにアクセスする。
また、マルチコアプロセッサシステム100は、低信頼アプリ111と高信頼アプリ112を実行する。具体的には、CPU#1が低信頼アプリ111を実行し、CPU#2が高信頼アプリ112を実行する。また、マルチコアプロセッサシステム100は、低信頼アプリ111のコンテキストが格納される領域として、ユーザ領域121内に、低信頼アプリメモリ領域122を確保する。同様に、マルチコアプロセッサシステム100は、高信頼アプリ112のコンテキストが格納される領域として、ユーザ領域121内に、高信頼アプリメモリ領域123を確保する。なお、コンテキストとは、CPUのレジスタの値となるプログラムカウンタ、スタックポインタなどといったアプリが使用するデータである。
さらに、マルチコアプロセッサシステム100は、ユーザ領域121とは別の領域となるプロテクト領域124を確保し、プロテクト領域124内に、高信頼アプリメモリ領域125を確保する。高信頼アプリメモリ領域125は、高信頼アプリメモリ領域123と同一のデータが格納される。同一のデータの格納方法として、CPU#2は、高信頼アプリ112が実行するタイミングで、メモリプロテクトコントローラ106#2に2重アクセス形態の登録を行う。2重アクセス形態となっているメモリプロテクトコントローラ106#2は、ライトアクセスが発生した場合、書き込み内容を高信頼アプリメモリ領域123に書き込みつつ、同内容を高信頼アプリメモリ領域125にも書き込む。
符号101で示す説明図では、このように高信頼アプリメモリ領域123が保護されている状態で、低信頼アプリ111が不正書込を行い、高信頼アプリメモリ領域123のデータを破壊した場合を想定している。CPU#2は、高信頼アプリ112を実行する際に、高信頼アプリメモリ領域123を読み込んで実行しようとするが、高信頼アプリメモリ領域123のデータは正しい値を示しておらず、高信頼アプリ112が強制終了する。たとえば、高信頼アプリメモリ領域123のプログラムカウンタが不正なアドレスに書き換えられた場合、CPU#2は、不正なアドレスの値を実行コードとして実行しようとし、高信頼アプリ112が強制終了する。
なお、不正書込が行われることによって高信頼アプリ112が強制終了する場合以外に、OSがハングする場合もある。OSがハングする場合の動作については、図9にて説明する。
次に、符号102で示す説明図では、データ破壊後の復元処理を示している。CPU#2は、高信頼アプリ112に対してエラーが発生したことを検出すると、高信頼アプリ112が実行中であったか否かを判定する。高信頼アプリ112が実行中であった場合、CPU#2は、高信頼アプリメモリ領域123と高信頼アプリメモリ領域125を比較し、差分が存在する場合、高信頼アプリメモリ領域123を高信頼アプリメモリ領域125で上書きする。これにより、不正書込が行われたデータが正常なデータに復元し、CPU#2は、高信頼アプリ112を続行することができるため、高信頼アプリ112を保護することができる。
(マルチコアプロセッサシステム100のハードウェア)
図2は、マルチコアプロセッサシステム100のハードウェア例を示すブロック図である。図2において、マルチコアプロセッサシステム100は、CPUを複数搭載するCPUs103と、ROM(Read‐Only Memory)201と、RAM(Random Access Memory)202と、を含む。また、マルチコアプロセッサシステム100は、フラッシュROM203と、フラッシュROMコントローラ204と、フラッシュROM205と、を含む。なお、メモリ104は、RAM202の全てであってもよいし、または一部であってもよい。さらに、メモリ104は、ROM201、フラッシュROM203、フラッシュROM205を含んでいてもよい。
また、マルチコアプロセッサシステム100は、ユーザやその他の機器との入出力装置として、ディスプレイ206と、I/F(Interface)207と、キーボード208と、を含む。また、各部はバス105によってそれぞれ接続されている。
ここで、CPUs103は、マルチコアプロセッサシステム100の全体の制御を司る。CPUs103は、シングルコアのプロセッサを並列して接続した全てのCPUを指している。CPUs103は、CPU#1〜CPU#xを含む。なお、xは2以上の整数である。また、マルチコアプロセッサシステムとは、コアが複数搭載されたプロセッサを含むコンピュータのシステムである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、シングルコアのプロセッサであるCPUが並列されている形態を例にあげて説明する。
また、CPU#1〜CPU#xは、それぞれ、メモリプロテクトコントローラ106と通信可能である。さらに、CPU#1〜CPU#xは、それぞれ専用のキャッシュメモリを有してもよい。
ROM201は、ブートプログラムなどのプログラムを記憶している。RAM202は、CPUs103のワークエリアとして使用される。フラッシュROM203は、OS(Operating System)などのシステムソフトウェアやアプリケーションソフトウェアなどを記憶している。たとえば、OSを更新する場合、マルチコアプロセッサシステム100は、I/F207によって新しいOSを受信し、フラッシュROM203に格納されている古いOSを、受信した新しいOSに更新する。
フラッシュROMコントローラ204は、CPUs103の制御にしたがってフラッシュROM205に対するデータのリード/ライトを制御する。フラッシュROM205は、フラッシュROMコントローラ204の制御で書き込まれたデータを記憶する。データの具体例としては、マルチコアプロセッサシステム100を使用するユーザがI/F207を通して取得した画像データ、映像データや、本実施の形態にかかるソフトウェア保護方法を実行するプログラムが格納されていてもよい。フラッシュROM205は、たとえば、メモリカード、SDカードなどを採用することができる。
ディスプレイ206は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。たとえば、ディスプレイ206は、TFT液晶ディスプレイなどを採用することができる。
I/F207は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク209に接続され、ネットワーク209を介して他の装置に接続される。そして、I/F207は、ネットワーク209と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F207には、たとえばモデムやLANアダプタなどを採用することができる。
キーボード208は、数字、各種指示などの入力のためのキーを有し、データの入力を行う。また、キーボード208は、タッチパネル式の入力パッドやテンキーなどであってもよい。
(マルチコアプロセッサシステム100の機能例)
次に、マルチコアプロセッサシステム100の機能例について説明する。図3は、マルチコアプロセッサシステム100の機能例を示すブロック図である。なお、マルチコアプロセッサシステム100は、各機能からアクセスされる記憶領域として、高信頼ホワイトリスト301にアクセス可能である。
マルチコアプロセッサシステム100は、確保部311と検出部312と比較部313と、通知部314と、登録部315と、検出部316と、検出部317と、比較部318と、復元部319と、を含む。この制御部となる機能(確保部311〜復元部319)は、記憶装置に記憶されたプログラムをCPU#1〜CPU#xが実行することにより、その機能を実現する。記憶装置とは、具体的には、たとえば、図2に示したROM201、RAM202、フラッシュROM203、フラッシュROM205などである。または、I/F207を経由して他のCPUが実行することにより、その機能を実現してもよい。
また、図3では、確保部311は、高信頼アプリ112を実行するCPU#2の機能となっているが、CPU#1、CPU#3〜CPU#xのうちいずれか一つのCPUの機能であってもよい。また、検出部312〜復元部319は、CPU#1〜CPU#xの全てのCPUに含まれる機能であってもよい。
なお、CPU#2は、ハイパーバイザ#2、OS#2、カーネル#2を実行する。ハイパーバイザ#2は、CPU#2などのハードウェア上で直接動作するプログラムである。ハイパーバイザ#2は、CPU#2内のレジスタを直接参照したり、CPU#2内のレジスタの情報を読み出したり、CPU#2内のレジスタの情報を書き換えたりする特権命令を実行することができるプログラムである。カーネル#2は、OS#2の中核の機能であり、たとえば、マルチコアプロセッサシステム100のリソースを管理し、スレッドなどのソフトウェアがハードウェアにアクセスできるようにする。
また、図示していないが、OS#2は、CPU#2を制御するプログラムである。たとえば、マルチコアプロセッサシステム100内のリソースにアクセスするライブラリ、API(Application Programming Interface)等をアプリに提供する。
なお、図示していないが、CPU#1、CPU#3〜CPU#xも、ハイパーバイザ、OS、カーネルを実行する。確保部311〜通知部314、検出部316は、カーネル#2の機能に含まれ、登録部315、検出部317〜復元部319はハイパーバイザ#2の機能に含まれる。
高信頼ホワイトリスト301は、所定のアプリを登録するリストである。登録される所定のアプリとは、マルチコアプロセッサシステム100での動作検証が行われた高信頼アプリ112である。たとえば、高信頼アプリ112は、マルチコアプロセッサシステム100に予めプリインストールされているアプリである。また、マルチコアプロセッサシステム100を製造するメーカ、ネットワーク209を提供する通信キャリア等が提供するアプリを高信頼アプリとして登録してもよい。たとえば、マルチコアプロセッサシステム100は、ネットワーク209からアプリをダウンロードした際に、メーカまたは通信キャリアが提供することを示す識別情報が付随していた場合、ダウンロードしたアプリを高信頼ホワイトリスト301に登録してもよい。
なお、高信頼ホワイトリスト301に登録される内容は、たとえば、アプリの名称であってもよいし、またファイルシステムが存在する場合、アプリのプログラムが格納されたファイルパスであってもよい。
確保部311は、システムブート時に、アプリ実行時に複数のCPUがアクセスする第1メモリ領域に対応するとともに、複数のCPUが第1メモリ領域にアクセスするときに同様にアクセスされる第2メモリ領域を確保する機能を有する。なお、第1メモリ領域は、実行中アプリのアクセス先となるメモリ領域であり、図3で示すユーザ領域121となる。また、第2メモリ領域は、ユーザ領域121のデータを保護する領域となるプロテクト領域124となる。また、第2メモリが確保されるタイミングとしては、システムブート時であってもよいし、アプリが起動されるときであってもよい。
また、確保部311は、マルチコアプロセッサシステム100での同時に実行するアプリの数がNであり、アプリ実行時にて割り当てられるメモリ領域がM[バイト]である場合、第2メモリ領域の大きさをN×M[バイト]で確保してもよい。たとえば、確保部311は、N=5、M=1[Mバイト]である場合、N×M=5×1=5[Mバイト]の領域をユーザ領域121として確保する。
また、Nの値として、本実施の形態にかかるマルチコアプロセッサシステム100は、携帯電話等を想定しており、多数のアプリを同時起動することを想定していない。Nの最大値としては、たとえば、8、16といった値になる。また、Nは、CPUs103の数であってもよい。なお、確保された領域のアドレスは、CPU#2のレジスタ、キャッシュメモリ、RAM202等の記憶領域に記憶される。
検出部312は、アプリが起動したというイベント、アプリが終了したというイベント、またはアプリが切り替えられたというイベントのうち、いずれかのイベントを検出する機能を有する。たとえば、検出部312は、高信頼アプリ112が起動されたというイベントを検出する。なお、検出したイベントは、CPU#2のレジスタ、キャッシュメモリ、RAM202等の記憶領域に記憶される。
比較部313は、検出部312によってイベントが検出された場合、実行されるアプリと所定のアプリのリストに登録されたアプリとを比較する機能を有する。たとえば、比較部313は、実行される高信頼アプリ112と高信頼ホワイトリスト301に登録されたアプリを比較する。なお、比較結果は、CPU#2のレジスタ、キャッシュメモリ、RAM202等の記憶領域に記憶される。
通知部314は、比較部313による比較結果が一致を示すとき、実行されるアプリからのアクセスについて、メモリプロテクトコントローラ106#2が第1メモリ領域と第2メモリ領域とにアクセスする指示をハイパーバイザ#2に通知する機能を有する。たとえば、高信頼アプリ112と高信頼ホワイトリスト301に登録されたアプリが一致を示す場合を想定する。このとき、通知部314は、高信頼アプリ112からのアクセスについて、メモリプロテクトコントローラ106#2が高信頼アプリメモリ領域123と高信頼アプリメモリ領域125とにアクセスする指示をハイパーバイザ#2に通知する。
また、通知部314は、比較部313による比較結果が不一致を示すとき、実行されるアプリからのアクセスについて、メモリプロテクトコントローラ106#2が第1メモリ領域にアクセスする指示をハイパーバイザ#2に通知してもよい。
また、通知部314は、アプリが起動され、起動されたアプリの比較部313による比較結果が一致を示すとき、第2メモリ領域内に起動されたアプリ用の領域を追加する指示を通知してもよい。また、通知部314は、アプリが終了し、終了したアプリの比較部313による比較結果が一致を示すとき、第2メモリ領域内の終了したアプリ用の領域を解放する指示を通知してもよい。なお、通知された内容は、CPU#2のレジスタ、キャッシュメモリ、RAM202等の記憶領域に記憶されてもよい。
登録部315は、通知部314によって通知された指示をメモリプロテクトコントローラ106#2に登録する機能を有する。たとえば、登録部315は、第1アクセス形態である2重アクセス形態の指示が通知された場合、メモリプロテクトコントローラ106#2に2重アクセス形態を登録する。具体的に、登録部315は、メモリプロテクトコントローラ106#2内のレジスタに登録する。
また、登録部315は、第2アクセス形態であるアクセススルー形態の指示が通知された場合、メモリプロテクトコントローラ106#2にアクセススルー形態を登録する。なお、具体的な登録内容は、図4にて説明する。なお、登録を行ったという情報は、CPU#2のレジスタ、キャッシュメモリ、RAM202等の記憶領域に記憶されてもよい。
検出部316は、自CPU内のアプリが強制終了したことを検出する機能を有する。たとえば、検出部316は、アクセス不可能なメモリにアクセスしたことを示すセグメントエラー等が発生し、高信頼アプリ112が強制終了したことを検出する。なお、アプリが強制終了したという情報は、CPU#2のレジスタ、キャッシュメモリ、RAM202等の記憶領域に記憶される。
検出部317は、OS#2がハングしたことを検出する機能を有する。たとえば、検出部317は、OS#2を周期監視し、OS#2からの応答がない場合、OS#2がハングしたことを検出する。なお、ハング中にあるOSは、異常状態となり、要求に対する応答が行えない状態である。OSのハング状態は、カーネルパニックとも呼ばれる。なお、OS#2がハングしたという情報は、CPU#2のレジスタ、キャッシュメモリ、RAM202等の記憶領域に記憶される。
比較部318は、検出部316によるアプリの強制終了が検出された場合、または検出部317によるOS#2のハングが検出された場合、第1メモリ領域と第2メモリ領域とを比較する機能を有する。たとえば、比較部318は、高信頼アプリメモリ領域123と高信頼アプリメモリ領域125のデータを比較する。また、比較部318は、実行中のアプリが高信頼ホワイトリスト301に登録されている場合に、第1メモリ領域と第2メモリ領域とを比較してもよい。なお、比較結果は、CPU#2のレジスタ、キャッシュメモリ、RAM202等の記憶領域に記憶される。
復元部319は、比較部318による比較結果に基づいて、第1メモリ領域を復元する機能を有する。たとえば、復元部319は、比較部318による比較結果が不一致を示すとき、比較結果の差分を第1メモリ領域に上書きすることで、第1メモリ領域を復元する。なお、復元を行ったという結果は、CPU#2のレジスタ、キャッシュメモリ、RAM202等の記憶領域に記憶されてもよい。
図4は、メモリプロテクトコントローラ106の内部の機能例を示す説明図である。図4では、メモリプロテクトコントローラ106#1を例にして説明を行うが、メモリプロテクトコントローラ106#2〜メモリプロテクトコントローラ106#xも、メモリプロテクトコントローラ106#1と同様の機能を含む。メモリプロテクトコントローラ106#1は、記憶部401#1、判定部402#1、変換部403#1を含む。
記憶部401は、メモリプロテクトコントローラ106のアクセス形態とアプリに対応するプロテクト領域を記憶する。具体的に、記憶部401#1は、制御レジスタ404#1と格納レジスタ405#1_1〜格納レジスタ405#1_yを含む。yは1以上の整数である。
なお、具体的なyの値としては、CPU#1が同時実行可能なアプリの数の最大値でよい。本実施の形態にかかるマルチコアプロセッサシステム100は、携帯電話等を想定しており、パーソナル・コンピュータのように多数のアプリを同時実行することを想定していない。したがって、各CPUで同時に起動される際の最大のアプリ数も、多数のアプリを同時起動することを想定していない数となる。さらに、yは、N以下の値となる。たとえば、yは4、または8といった値となる。
制御レジスタ404#1は、アクセス形態フラグ、プロテクト領域管理番号という2つのフィールドを含む。アクセス形態フラグフィールドには、2箇所のアドレスにアクセスを行う2重アクセス形態、または通常のアクセスを行うアクセススルー形態、のうちいずれかのアクセス形態情報を示す識別子が格納される。たとえば、具体的な識別子として、“1”が2重アクセス形態を意味してもよい。プロテクト領域管理番号フィールドには、2箇所のアドレスにアクセスを行う場合、格納レジスタ405#1_1〜格納レジスタ405#1_yのうち、どの格納レジスタ405#1を適用するかを示す値が格納される。たとえば、プロテクト領域管理番号フィールドに“1”が格納された場合、変換部403#1は、格納レジスタ405#1_1の設定を用いて変換を行う。
格納レジスタ405#1_1〜格納レジスタ405#1_yは、プロテクト領域をアプリごとに格納するレジスタである。また、格納レジスタ405#1_1〜格納レジスタ405#1_yは、それぞれ、管理番号_1〜管理番号_yに対応している。続けて、格納レジスタ405#1の各フィールドについて説明を行う。格納レジスタ405#1は、使用中ビット、アプリID、マスクアドレス、プロテクトアドレスという4つのフィールドを含む。
使用中ビットフィールドには、該当の格納レジスタ405#1が使用中か否かを示すビットが格納される。アプリIDフィールドには、CPU#1にて実行中のアプリの識別情報が格納される。マスクアドレスフィールドには、アプリのアクセスするメモリ範囲を示すアドレスが格納される。具体的なメモリ範囲の大きさは、OSが有するメモリ管理機構によって決定される。プロテクトアドレスフィールドには、CPU#1にて実行中のアプリのプロテクト領域へのアドレスが格納される。なお、制御レジスタ404#1、格納レジスタ405#1の具体的な設定例は、図5にて後述する。
判定部402#1は、記憶部401#1に記憶されたアクセス形態情報に応じてアドレス変換を行うか否かを判定する機能を有する。具体的には、判定部402#1は、アクセス形態フラグフィールドが2重アクセス形態であれば、2箇所のアドレスにアクセスを行い、アクセス形態フラグフィールドがアクセススルー形態であればアドレス変換を行わず、アドレススルーする。
変換部403#1は、判定部402#1により2重アクセス形態であると判定された場合、一方のアクセス先についてアドレス変換を行う機能を有する。具体的には、変換部403#1は、プロテクト領域管理番号フィールドに設定された管理番号に対応する格納レジスタ405#1のマスクアドレスフィールドと、プロテクトアドレスフィールドとを参照してアドレス変換を行う。たとえば、変換部403は、変換後のアドレスを、下記(1)式によって変換する。
変換後のアドレス=変換前のアドレス&マスクアドレス+プロテクトアドレス…(1)
具体的に、変換前のアドレスとなるアプリからのアクセス先が、0x05000100であり、マスクアドレスフィールドが0x0000ffffであり、プロテクトアドレスフィールドが0x01000000である場合を想定する。このとき、変換部403は、(1)にしたがって、以下のように変換する。
変換後のアドレス=0x05000100&0x0000ffff+0x01000000
⇔変換後のアドレス=0x01000100
なお、メモリプロテクトコントローラ106#1は、CPU#1からのリードリクエストアクセスとライトリクエストアクセスのうち、ライトリクエストアクセスについて2重アクセス形態を行ってもよい。理由として、エラーが発生していない状態で、リードリクエストアクセスに関する2重アクセス形態を行っても同一の値が返ってくるので、変換を行わないアドレスに対するリードアクセスで十分なためである。
図5は、メモリプロテクトコントローラ106の登録例を示す説明図である。図5で示すマルチコアプロセッサシステム100は、高信頼ホワイトリスト301に登録されており、高信頼アプリとなるアプリA、アプリCと、高信頼ホワイトリスト301に登録されておらず低信頼アプリとなるアプリB、アプリD、アプリEを実行している。アプリAとアプリBは、CPU#1に割り当てられており、アプリC〜アプリEは、CPU#2に割り当てられている。さらに、CPU#1はアプリAを実行しており、CPU#2はアプリDを実行している。なお、アプリA〜アプリEのアプリIDは、それぞれ、0x0001、0x0002、0x0003、0x0004、0x0005となる。
カーネル#1は、OSがブートする際に、0x00000000〜0x00500000となるメモリ領域をカーネル占有領域501として確保する。続けて、カーネル#1は、アプリの動作空間となるユーザ領域121を確保する前に、プロテクト領域124を確保する。たとえば、マルチコアプロセッサシステム100のアプリ同時実行数N=5であり、1つのアプリに対して許容するメモリサイズMを1[Mバイト]と想定する。
このとき、カーネル#1は、N×M=5×1=5[Mバイト]となる0x01000000〜0x0104ffffをプロテクト領域124として確保する。続けて、カーネル#1は、0x05000000〜0xffffffffをユーザ領域121として確保する。また、カーネル#1は、ユーザ領域121からプロテクト領域124へのオフセットアドレスとして、0x05000000−0x01000000=0x04000000を記憶する。なお、M=1[Mバイト]であるため、1つのアプリがアクセスするアドレス範囲となるマスクアドレスは、0x0000ffffとなる。本実施の形態では、1つのアプリがアクセスするアドレス範囲は、説明の簡略化のため、常に固定であることを想定する。
このとき、プロテクト領域124は、アプリからはアクセスできない領域となる。このため、たとえば、アプリA、アプリBがOS#1を通じてプロテクト領域124にアクセスしようとした場合、カーネル#1は、OS#1の管理外領域にアクセスすることを示すセグメントエラーを発行することになる。このように、マルチコアプロセッサシステム100は、プロテクト領域124をユーザ領域121以外の領域とすることで、低信頼アプリによってプロテクト領域124の不正書込を防ぐことができる。
なお、プロテクト領域124となる領域は、連続範囲かつ固定でなくてもよく、メモリプロテクトコントローラ106が管理可能であれば、分散して確保されてもよいし、マルチコアプロセッサシステム100の実行中にダイナミックに変化してもよい。本実施の形態では、説明を簡略化するため、プロテクト領域124となる領域が連続範囲かつ固定で説明する。
また、マルチコアプロセッサシステム100は、アプリA〜アプリEが起動される際に、各アプリのコンテキストを格納する領域をユーザ領域121内に確保する。具体的に、カーネル#1は、アプリAの起動時にアプリAメモリ領域502を確保し、アプリBの起動時にアプリBメモリ領域503を確保する。また、カーネル#2は、アプリCの起動時にアプリCメモリ領域504を確保し、アプリDの起動時にアプリDメモリ領域505を確保し、アプリEの起動時にアプリEメモリ領域506を確保する。アプリAメモリ領域502〜アプリEメモリ領域506の先頭アドレスは、それぞれ、0x05000000、0x05010000、0x05020000、0x05030000、0x05040000となる。
また、マルチコアプロセッサシステム100は、高信頼アプリが起動する場合、プロテクト領域124内にもメモリ領域を確保する。具体的に、カーネル#1から指示を受けたハイパーバイザ#1が、アプリAの起動時にアプリAメモリ領域507を確保する。
アプリAメモリ領域507のアドレスの設定方法として、たとえば、ハイパーバイザ#1は、アプリAメモリ領域502の先頭アドレスから、ユーザ領域121へのオフセットアドレスを減じたアドレスをアプリAメモリ領域507の先頭アドレスに設定する。具体的に、ハイパーバイザ#1は、アプリAメモリ領域502の先頭アドレス0x05000000−オフセットアドレス0x04000000=0x01000000をアプリAメモリ領域507の先頭アドレスに設定する。
続けて、ハイパーバイザ#1は、格納レジスタ405#1_1に値を設定する。具体的に、ハイパーバイザ#1は、使用中ビットフィールドに使用中を設定し、アプリIDフィールドにアプリAのアプリIDである0x0001を設定する。続けて、ハイパーバイザ#1は、マスクアドレスフィールドに0x0000ffffを設定し、プロテクトアドレスフィールドにアプリAメモリ領域507の先頭アドレスである0x01000000を設定する。
同様に、ハイパーバイザ#2は、アプリCの起動時にアプリCメモリ領域508を確保する。さらに、ハイパーバイザ#2は、格納レジスタ405#2_1に値を設定する。具体的に、ハイパーバイザ#2は、使用中ビットフィールドに使用中を設定し、アプリIDフィールドにアプリCのアプリIDである0x0003を設定する。続けて、ハイパーバイザ#2は、マスクアドレスフィールドに0x0000ffffを設定し、プロテクトアドレスフィールドにアプリCメモリ領域508の先頭アドレスである0x01020000を設定する。
上述の段階で、マルチコアプロセッサシステム100はアプリの起動の段階を終え、実際に動作する状態に遷移する。CPU#1は、アプリA、アプリB、アプリA、…、の順でアプリを実行する。アプリ切替イベントが発生し、CPU#1がアプリAを実行するときに、アプリAは高信頼ホワイトリスト301に登録されているため、カーネル#1は、アクセス形態を2重アクセス形態に設定するようにハイパーバイザ#1に指示する。このとき、カーネル#1は、切替後のアプリIDも指示内容に含める。
指示を受けたハイパーバイザ#1は、メモリプロテクトコントローラ106#1に2重アクセス形態を登録する。具体的に、ハイパーバイザ#1は、メモリプロテクトコントローラ106#1のアクセス形態フラグを2重アクセス形態に設定する。また、ハイパーバイザ#1は、指示されたアプリIDと一致する格納レジスタ405#1の管理番号を、プロテクト領域管理番号フィールドに設定する。このような動作により、マルチコアプロセッサシステム100は、OS#1にてアプリA、アプリB、…、と切り替えられる動作と同期して、メモリプロテクトコントローラ106#1にて2重アクセス形態、アクセススルー形態、…、と動作する。
なお、この動作により、アプリAが実行中の場合、マルチコアプロセッサシステム100は、0x05000000および0x01000000の2つのアドレス空間にアクセスを行うことになる。2重アクセスによって、バスアクセスのパフォーマンスが劣化する可能性があるが、一般的に、64[ビット]系のCPUに対し、128[ビット]帯域のバス設定が行われるなど、CPUアクセスの帯域はバスの帯域を全て使用しない粗の状態である。したがって、バス105内にて、2つの64[ビット]のアクセスを1つの128[ビット]にまとめるデータパッキング機能と連動することにより、バスアクセスのパフォーマンスの劣化を避けることができる。
同様に、CPU#2は、アプリC、アプリD、アプリE、アプリC、…、の順でアプリを実行する。たとえば、CPU#2がアプリDを実行するとき、アプリDは高信頼ホワイトリスト301に登録されていないため、カーネル#2は、アプリ切替イベントが発生し、アクセス形態をアクセススルー形態に設定するようにハイパーバイザ#2に指示する。このとき、カーネル#2は、切替後のアプリIDも指示内容に含める。指示を受けたハイパーバイザ#2は、メモリプロテクトコントローラ106#2にアクセススルー形態を登録する。具体的に、ハイパーバイザ#2は、メモリプロテクトコントローラ106#2のアクセス形態フラグをアクセススルー形態に設定する。
次に、図5で説明した動作を行うフローチャートを図6〜図9にて説明する。なお、図6で示す起動時の処理手順の一例を実行する実行主体は、CPU#1〜CPU#xのうちいずれのCPUであってもよいが、説明の簡略化のため、CPU#1が実行する場合を想定して説明を行う。また、図7〜図9で示すアプリ切替時の処理手順とエラー時の処理手順を実行する実行主体は、CPU#1〜CPU#xの全てのCPUで実行されるが、説明の簡略化のため、CPU#1が実行する場合を想定して説明を行う。
図6は、マルチコアプロセッサシステム100の起動時の処理手順の一例を示すフローチャートである。カーネル#1は、ブート開始する(ステップS601)と、メモリ管理機構を起動する(ステップS602)。カーネル#1は、メモリ管理機構により、N×M[バイト]のアドレス空間を確保する(ステップS603)。
確保後、カーネル#1は、確保されたアドレス空間をハイパーバイザ#1に通知し(ステップS604)、通常運用を行い(ステップS605)、起動時の処理を終了する。なお、通常運用としては、ユーザ領域121の確保を行ったり、ブートの初めに起動されるアプリを起動したりする。アドレス空間の通知を受けたハイパーバイザ#1は、通知されたアドレス空間をプロテクト領域124として設定し(ステップS606)、起動時の処理を終了する。これにより、マルチコアプロセッサシステム100は、高信頼アプリのメモリ保護領域を確保することができる。
図7、図8では、マルチコアプロセッサシステム100のアプリ切替時の処理手順の一例を示す。図7では、カーネル#1の処理手順の一例を示し、図8では、ハイパーバイザ#1の処理手順の一例を示す。
図7は、マルチコアプロセッサシステム100のアプリ切替時の処理手順の一例を示すフローチャート(その1)である。カーネル#1は、イベントが発生したか否かを判断する(ステップS701)。イベントが発生していない場合(ステップS701:イベント発生なし)、カーネル#1は、一定時間後に、ステップS701を再度実行する。なお、カーネル#1は、一定時間にカーネル#1の他の処理を実行してもよい。
アプリ起動イベントが発生した場合(ステップS701:アプリ起動イベント)、カーネル#1は、起動したアプリが高信頼ホワイトリスト301に登録されているか否かを判断する(ステップS702)。登録されている場合(ステップS702:Yes)、カーネル#1は、ハイパーバイザ#1に管理番号の追加指示を通知する(ステップS704)。なお、ステップS704の処理にて、カーネル#1は、起動したアプリのアプリIDを指示内容に含める。
通知後、カーネル#1は、通常時の処理を実行し(ステップS703)、ステップS701の処理に移行する。登録されていない場合(ステップS702:No)、カーネル#1は、ステップS703の処理に移行する。なお、アプリ起動イベントの通常時の処理としては、たとえば、起動したアプリのコンテキストを格納する領域をユーザ領域121内に確保する処理等である。
アプリ終了イベントが発生した場合(ステップS701:アプリ終了イベント)、カーネル#1は、終了したアプリが高信頼ホワイトリスト301に登録されているか否かを判断する(ステップS705)。登録されている場合(ステップS705:Yes)、カーネル#1は、ハイパーバイザ#1に管理番号の解放指示を通知する(ステップS706)。なお、ステップS706の処理にて、カーネル#1は、終了したアプリのアプリIDを指示内容に含める。
通知後、または、登録されていない場合(ステップS705:No)、カーネル#1は、ステップS703の処理に移行する。なお、アプリ終了イベントの通常時の処理としては、たとえば、ユーザ領域121内に確保されている、終了したアプリのコンテキストを格納する領域を解放する処理等である。
アプリ切替イベントが発生した場合(ステップS701:アプリ切替イベント)、カーネル#1は、切替後のアプリが高信頼ホワイトリスト301に登録されているか否かを判断する(ステップS707)。登録されている場合(ステップS707:Yes)、カーネル#1は、ハイパーバイザ#1に2重アクセス形態指示を通知する(ステップS708)。なお、ステップS708の処理にて、カーネル#1は、切替後のアプリのアプリIDを指示内容に含める。通知後、カーネル#1は、ステップS703の処理に移行する。登録されていない場合(ステップS707:No)、カーネル#1は、ハイパーバイザ#1にアクセススルー形態指示を通知する(ステップS709)。通知後、カーネル#1は、ステップS703の処理に移行する。
なお、アプリ切替イベントの通常時の処理としては、たとえば、ディスパッチ処理がある。ディスパッチ処理とは、CPUのレジスタ等を切替前のアプリのコンテキストを格納する領域に退避し、切替後のアプリのコンテキストを格納する領域に退避されていたレジスタの値をCPUのレジスタに設定する。
これにより、マルチコアプロセッサシステム100は、アプリの起動、終了、切替といったイベントに対して、メモリプロテクトコントローラ106への設定変更を指示することができる。
図8は、マルチコアプロセッサシステム100のアプリ切替時の処理手順の一例を示すフローチャート(その2)である。なお、図8では、ハイパーバイザ#1がメモリプロテクトコントローラ106#1内の制御レジスタ404#1、格納レジスタ405#1を設定することを想定している。したがって、各ステップの説明において、説明の簡略化のため、設定先のレジスタがメモリプロテクトコントローラ106#1内のレジスタであるという記述を省略する。
ハイパーバイザ#1は、指示内容を確認する(ステップS801)。指示内容が管理番号の追加指示である場合(ステップS801:管理番号の追加指示)、ハイパーバイザ#1は、格納レジスタ405#1_1〜格納レジスタ405#1_yのうち、未使用の格納レジスタ405#1が存在するか否かを判断する(ステップS802)。
未使用の格納レジスタ405#1が存在する場合(ステップS802:Yes)、ハイパーバイザ#1は、発見された格納レジスタ405#1の使用中ビットフィールドを使用中に設定する(ステップS803)。続けて、ハイパーバイザ#1は、発見された格納レジスタ405#1のアプリIDフィールドを指示内容に含まれていたアプリIDに設定する(ステップS804)。さらに、ハイパーバイザ#1は、発見された格納レジスタ405#1のプロテクトアドレスフィールドに未割当のアドレスを設定し(ステップS805)、ステップS801の処理に移行する。格納レジスタ405#1が存在しない場合(ステップS802:No)、ハイパーバイザ#1は、ステップS801の処理に移行する。
なお、ステップS805の処理での未割当のアドレスとは、プロテクト領域124内で、他の高信頼アプリのメモリ領域として割り当てられていないメモリ領域のアドレスである。また、ステップS803〜ステップS805の処理にて、マスクアドレスフィールドの記述がないが、本実施の形態におけるマスクアドレスは常に固定値であることを想定している。したがって、マスクアドレスフィールドの設定箇所として、たとえば、前述のステップS606にて、ハイパーバイザ#1は、格納レジスタ405#1_1〜格納レジスタ405#1_yのマスクアドレスフィールドに0x0000ffffを設定する。
指示内容が管理番号の解放指示である場合(ステップS801:管理番号の解放指示)、ハイパーバイザ#1は、格納レジスタ405#1_1〜格納レジスタ405#1_yのうち、アプリIDフィールドが指示内容に含まれていたアプリIDと一致する格納レジスタ405#1を選択する(ステップS806)。選択後、ハイパーバイザ#1は、選択された格納レジスタ405#1のプロテクトアドレスフィールドの値を未割当のアドレスに設定する(ステップS807)。続けて、ハイパーバイザ#1は、選択された格納レジスタ405#1の使用中ビットフィールドを未使用に設定し(ステップS808)、ステップS801の処理に移行する。
指示内容が2重アクセス形態指示である場合(ステップS801:2重アクセス形態指示)、ハイパーバイザ#1は、アプリIDフィールドが指示内容に含まれていたアプリIDと一致する格納レジスタ405#1の管理番号を、プロテクト管理番号フィールドに設定する(ステップS809)。続けて、ハイパーバイザ#1は、アクセス形態フラグを2重アクセス形態に設定し(ステップS810)、ステップS801の処理に移行する。
指示内容がアクセススルー形態指示である場合(ステップS801:アクセススルー形態指示)、ハイパーバイザ#1は、アクセス形態フラグをアクセススルー形態に設定し(ステップS811)、ステップS801の処理に移行する。このように、マルチコアプロセッサシステム100は、アプリの起動、終了、切替といったイベントに対応してメモリプロテクトコントローラ106への設定を変更するため、アプリの各イベントに同期してアクセス形態を変更することができる。
続けて、図9では、エラー時の処理手順の一例を説明する。図9で示すフローチャートでは、CPU#2で実行している低信頼アプリの動作検証が不十分であったため、低信頼アプリが他のメモリ領域へ書き込んだ結果、障害が発生した場合を想定している。不具合によって引き起こされる状態には2種類ある。
1つ目の状態は、単純なプログラムエラーで高信頼アプリが終了する状態である。たとえば、OS#1で実行している高信頼アプリに対してエラーが発生した場合、OS#1はエラーの発生を検出し、ハイパーバイザ#1に通知することが可能である。2つ目の状態は、OS#1がハングする場合である。OS#1がハングすると高信頼アプリの障害状態を検出できない。したがって、OS#1と独立で動作しているハイパーバイザ#1が、周期監視によりOS#1がハングしているかどうかを検出する。
図9は、マルチコアプロセッサシステム100のエラー時の処理手順の一例を示すフローチャートである。カーネル#2は、低信頼アプリを実行する(ステップS901)。この実行により、ユーザ領域121に不正書込が行われ、障害が発生した場合を想定する。
不正書込により、アプリが強制終了するなどの軽微な障害が発生した場合、カーネル#1は、セグメントエラーを検出する(ステップS902)。検出後、カーネル#1は、マルチコアプロセッサシステム100を一時停止し(ステップS903)、ハイパーバイザ#1へリカバリ通知を指示する(ステップS904)。
OSハング等の重大な障害が発生し、周期監視より検出した場合、または、リカバリ通知を指示された場合、ハイパーバイザ#1は、実行中アプリが高信頼ホワイトリスト301に登録されているか否かを判断する(ステップS905)。登録されている場合(ステップS905:Yes)、ハイパーバイザ#1は、プロテクト領域124内の実行中アプリのメモリ領域とユーザ領域121内の実行中アプリのメモリ領域のデータを比較する(ステップS906)。
続けて、ハイパーバイザ#1は、比較結果が一致したか否かを判断する(ステップS907)。一致しない場合(ステップS907:No)、ハイパーバイザ#1は、ユーザ領域121内の実行中アプリのデータを復元する(ステップS908)。具体的に、ハイパーバイザ#1は、比較結果の差分をユーザ領域121内の実行中アプリのメモリ領域に上書きする。これにより、不正書込が行われたデータが正常なデータに復元することになる。
高信頼ホワイトリスト301に登録されていない場合(ステップS905:No)、比較結果が一致した場合(ステップS907:Yes)、または、データ復元後、ハイパーバイザ#1は、OS#1がハング中か否かを判断する(ステップS909)。ハング中である場合(ステップS909:Yes)、ハイパーバイザ#1は、OS#1のウォームスタートを実行し(ステップS910)、エラー時の処理を終了する。具体的なウォームスタートの方法としては、チェックポイントリスタート技術や、ハイバネーション技術を適用することができる。
ハング中でない場合(ステップS909:No)、ハイパーバイザ#1は、カーネル#1にマルチコアプロセッサシステム100の一時停止解除を通知し(ステップS911)、エラー時の処理を終了する。一時停止解除を受け付けたカーネル#1は、マルチコアプロセッサシステム100の一時停止を解除し(ステップS912)、エラー時の処理を終了する。このように、マルチコアプロセッサシステム100は、不正書込によるメモリ破壊が原因で高信頼アプリにエラーが発生した場合、データを復元し動作を続行することができる。
以上説明したように、マルチコアプロセッサシステムによれば、高信頼アプリがアクセスする第1メモリ領域とは異なる第2メモリ領域を確保し、同一の内容を書き込む。これにより、マルチコアプロセッサシステムは、低信頼アプリが第1メモリ領域を破壊し障害が発生しても第2メモリ領域を使用してリカバリできるため、高信頼アプリと低信頼アプリを混載して実行できる。
また、本実施の形態にかかるマルチコアプロセッサシステムが実行するソフトウェア保護方法は、シングルコアプロセッサシステムでのソフトウェア資産を、安全にマルチコアプロセッサシステム環境に継承することができる。また、本実施の形態にかかるマルチコアプロセッサシステムは、通常動作状態において、たとえば、高信頼アプリ実行中に低信頼アプリを実行させないなどといった、バイアスのかかった不利なスケジューリングが発生することなく運用することができる。また、本実施の形態にかかるマルチコアプロセッサシステムは、障害が発生した場合にリカバリ処理が発生し、通常動作状態では負荷のかかる処理を実行しないため、全体のパフォーマンスが劣化することはない。
また、マルチコアプロセッサシステムは、所定のアプリを格納するリストにアクセス可能であり、実行されるアプリとリストに格納されたアプリとを比較してもよい。これにより、マルチコアプロセッサシステムは、実行されるアプリが高信頼アプリか否かを判断することができる。
また、マルチコアプロセッサシステムは、実行されるアプリとリストに格納されたアプリが一致する場合、第1メモリ領域と第2メモリ領域とにアクセスするようにアプリを実行するCPUに対応するメモリプロテクトコントローラに登録してもよい。これにより、マルチコアプロセッサシステムは、高信頼アプリのデータを保護することができる。
また、マルチコアプロセッサシステムは、実行されるアプリとリストに格納されたアプリが一致しない場合、第1メモリ領域にアクセスするようにアプリを実行するCPUに対応するメモリプロテクトコントローラに登録してもよい。これにより、マルチコアプロセッサシステムは、データの保護を行わなくてよい低信頼アプリについてはデータを保護せず、データ保護用に確保したプロテクト領域を有効に使用することができる。
また、マルチコアプロセッサシステムは、自システムの異常検出に応答して、第1メモリ領域と第2メモリ領域との比較結果に基づいて第1メモリ領域を復元してもよい。これにより、マルチコアプロセッサシステムは、障害があったアプリをリカバリすることができる。
また、マルチコアプロセッサシステムは、マルチコアプロセッサシステム環境での動作検証が行われたアプリを高信頼アプリとして保護してもよい。低信頼のアプリは、第1メモリ領域を自ら破壊してしまう場合があり、このとき、メモリプロテクトコントローラによって第2メモリ領域にデータを保護していても、第2メモリ領域も破壊する結果となる。この状態で、第1メモリ領域のデータを復元しても、破壊されたデータで上書きされてしまい、マルチコアプロセッサシステムは、リカバリすることができない。したがって、マルチコアプロセッサシステムは、不具合がないと検証された高信頼アプリを対象とすることで、低信頼アプリの動作によって発生した高信頼アプリの障害をリカバリすることができる。
なお、本実施の形態で説明したマルチコアプロセッサシステムが実行するソフトウェア保護方法では、対象がアプリである場合に対して説明していたが、対象がライブラリであっても本実施の形態を適用することができる。
なお、本実施の形態で説明したマルチコアプロセッサシステムが実行するソフトウェア保護方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。また、ソフトウェア保護方法を実行するソフトウェア保護プログラムは、ハードディスク、CD−ROM、DVD、メモリカード等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またソフトウェア保護プログラムは、インターネット等のネットワークを介して配布してもよい。
また、本実施の形態で説明したメモリプロテクトコントローラ106は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けIC(以下、単に「ASIC」と称す。)やFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。具体的には、たとえば、上述したメモリプロテクトコントローラ106の機能(記憶部401〜変換部403)をHDL記述によって機能定義し、そのHDL記述を論理合成してASICやPLDに与えることにより、メモリプロテクトコントローラ106を製造することができる。
#1、#2 CPU
100 マルチコアプロセッサシステム
104 メモリ
105 バス
106 メモリプロテクトコントローラ
111 低信頼アプリ
112 高信頼アプリ
121 ユーザ領域
122 低信頼アプリメモリ領域
123 高信頼アプリメモリ領域
124 プロテクト領域
125 高信頼アプリメモリ領域
301 高信頼ホワイトリスト
311 確保部
312 検出部
313 比較部
314 通知部
315 登録部
316 検出部
317 検出部
318 比較部
319 復元部

Claims (10)

  1. 複数のCPUと、
    メモリと、
    前記複数のCPUと前記メモリとの間に配置されるメモリプロテクトコントローラと、
    を含み、
    前記メモリプロテクトコントローラは、
    前記複数のCPUで実行される複数のアプリケーションのうち、マルチコアプロセッサシステム環境で正常動作することを示す情報に関連付けされた高信頼なアプリケーション実行時に前記複数のCPUのアクセス要求に応じて第1メモリ領域にアクセスするとともに、システムブート時に確保された第2メモリ領域に前記アクセス要求のアクセス先を前記第2メモリ領域に変換したアクセス要求に応じてアクセスすること
    を特徴とするマルチコアプロセッサシステム。
  2. 前記高信頼なアプリケーションのリストを格納するテーブルと、
    実行されるアプリケーションと前記リストのアプリケーションとを比較する比較部と、
    を含むことを特徴とする請求項1に記載のマルチコアプロセッサシステム。
  3. 比較結果が一致を示すとき、前記実行されるアプリケーションについて、前記第1メモリ領域と前記第2メモリ領域とをアクセスする指示を登録すること
    を特徴とする請求項2に記載のマルチコアプロセッサシステム。
  4. 比較結果が不一致を示すとき、前記実行されるアプリケーションについて、前記第1メモリ領域のみをアクセスする指示を登録すること
    を特徴とする請求項2に記載のマルチコアプロセッサシステム。
  5. 自システムの異常の検出に応答して、実行されるアプリケーションが実行中であるときに前記第1メモリ領域と前記第2メモリ領域との比較結果に基づいて前記第1メモリ領域を復元すること
    を特徴とする請求項1乃至請求項4の何れか一に記載のマルチコアプロセッサシステム。
  6. 前記高信頼なアプリケーションは、マルチコアプロセッサシステム環境での動作検証が行われたアプリケーションであること
    を特徴とする請求項1乃至請求項5の何れか一に記載のマルチコアプロセッサシステム。
  7. 前記複数のCPUの数がN(Nは2以上の整数)であり、アプリケーション実行時に割り当てられる前記メモリのメモリ領域がM(Mは1以上の整数)バイトであるとき、前記第2メモリ領域の大きさはN×Mであること
    を特徴とする請求項1乃至請求項6の何れか一に記載のマルチコアプロセッサシステム。
  8. 複数のCPUと、
    メモリと、
    前記複数のCPUと前記メモリとの間に配置されるメモリプロテクトコントローラと、
    を含み、
    前記メモリプロテクトコントローラは、
    アクセス形態情報が前記複数のCPUで実行される複数のアプリケーションのうち、マルチコアプロセッサシステム環境で正常動作することを示す情報に関連付けされた高信頼なアプリケーションからのアクセスを示す第1アクセス形態である場合には、アプリケーション実行において前記複数のCPUのアクセス要求に応じて第1メモリ領域にアクセスするとともに、第2メモリ領域に前記アクセス要求のアクセス先を前記第2メモリ領域に変換したアクセス要求に応じてアクセスし、
    アクセス形態情報が前記複数のアプリケーションのうち、マルチコアプロセッサシステム環境で正常動作することを示す情報が関連付けされていない低信頼なアプリケーションからのアクセスを示す第2アクセス形態である場合には、アプリケーション実行において前記複数のCPUのアクセス要求に応じて前記第1メモリ領域のみをアクセスすること
    を特徴とするマルチコアプロセッサシステム。
  9. 前記アプリケーションとリストに登録されるアプリケーションとの比較結果に基づいて前記アクセス形態情報が設定されること
    を特徴とする請求項8に記載のマルチコアプロセッサシステム。
  10. 前記比較結果が一致を示すとき、前記アクセス形態情報が第1アクセス形態に設定され、
    前記比較結果が不一致を示すとき、前記アクセス形態情報が第2アクセス形態に設定されること
    を特徴とする請求項9に記載のマルチコアプロセッサシステム。
JP2013506906A 2011-03-28 2011-03-28 マルチコアプロセッサシステム Expired - Fee Related JP5716824B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/057715 WO2012131884A1 (ja) 2011-03-28 2011-03-28 マルチコアプロセッサシステム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2015056987A Division JP5920509B2 (ja) 2015-03-19 2015-03-19 コントローラの制御プログラム、およびコントローラの制御方法

Publications (2)

Publication Number Publication Date
JPWO2012131884A1 JPWO2012131884A1 (ja) 2014-07-24
JP5716824B2 true JP5716824B2 (ja) 2015-05-13

Family

ID=46929719

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013506906A Expired - Fee Related JP5716824B2 (ja) 2011-03-28 2011-03-28 マルチコアプロセッサシステム

Country Status (4)

Country Link
US (1) US20140025903A1 (ja)
JP (1) JP5716824B2 (ja)
CN (1) CN103493022B (ja)
WO (1) WO2012131884A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9760712B2 (en) * 2014-05-23 2017-09-12 Vmware, Inc. Application whitelisting using user identification
US10387668B2 (en) 2014-07-08 2019-08-20 International Business Machines Corporation Data protected process cores
JP6360387B2 (ja) * 2014-08-19 2018-07-18 ルネサスエレクトロニクス株式会社 プロセッサシステム、エンジン制御システム及び制御方法
CN104199777B (zh) * 2014-09-11 2017-10-03 福州瑞芯微电子股份有限公司 一种中央处理器系统验证方法及装置
CN112462926B (zh) * 2020-12-09 2021-07-30 北京元心科技有限公司 移动终端中的电源管理方法、装置、电子设备及计算机存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05108493A (ja) * 1991-10-17 1993-04-30 Shikoku Nippon Denki Software Kk メモリ制御方式
JPH05143467A (ja) * 1991-11-22 1993-06-11 Mitsubishi Electric Corp 冗長構成切替方法および冗長構成切替装置
JP2003114878A (ja) * 2001-10-05 2003-04-18 Japan Telecom Co Ltd 情報処理方法および情報処理装置
JP2003316752A (ja) * 2002-04-25 2003-11-07 Nec Corp マルチプロセッサシステムおよびリソース割り当て方法
JP2009251967A (ja) * 2008-04-07 2009-10-29 Toyota Motor Corp マルチコアシステム
JP2009271597A (ja) * 2008-04-30 2009-11-19 Toshiba Corp プロセッサ
JP2010118010A (ja) * 2008-11-14 2010-05-27 Nomura Research Institute Ltd 情報取得仲介プログラム、オペレーティングシステム、情報取得仲介方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6449699B2 (en) * 1999-03-29 2002-09-10 International Business Machines Corporation Apparatus and method for partitioned memory protection in cache coherent symmetric multiprocessor systems
US7149862B2 (en) * 2002-11-18 2006-12-12 Arm Limited Access control in a data processing apparatus
US20050080999A1 (en) * 2003-10-08 2005-04-14 Fredrik Angsmark Memory interface for systems with multiple processors and one memory system
US7546956B2 (en) * 2004-04-30 2009-06-16 Research In Motion Limited System and method of operation control on an electronic device
US7406711B2 (en) * 2005-09-02 2008-07-29 Motorola, Inc. Method and apparatus for enforcing independence of processors on a single IC
US7953914B2 (en) * 2008-06-03 2011-05-31 International Business Machines Corporation Clearing interrupts raised while performing operating system critical tasks
US8296526B2 (en) * 2009-06-17 2012-10-23 Mediatek, Inc. Shared memory having multiple access configurations
CN201716716U (zh) * 2009-12-15 2011-01-19 深圳市杰和科技发展有限公司 一种基本输入输出系统只读存储器数据的备份系统
US8438338B2 (en) * 2010-08-15 2013-05-07 International Business Machines Corporation Flexible use of extended cache using a partition cache footprint

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05108493A (ja) * 1991-10-17 1993-04-30 Shikoku Nippon Denki Software Kk メモリ制御方式
JPH05143467A (ja) * 1991-11-22 1993-06-11 Mitsubishi Electric Corp 冗長構成切替方法および冗長構成切替装置
JP2003114878A (ja) * 2001-10-05 2003-04-18 Japan Telecom Co Ltd 情報処理方法および情報処理装置
JP2003316752A (ja) * 2002-04-25 2003-11-07 Nec Corp マルチプロセッサシステムおよびリソース割り当て方法
JP2009251967A (ja) * 2008-04-07 2009-10-29 Toyota Motor Corp マルチコアシステム
JP2009271597A (ja) * 2008-04-30 2009-11-19 Toshiba Corp プロセッサ
JP2010118010A (ja) * 2008-11-14 2010-05-27 Nomura Research Institute Ltd 情報取得仲介プログラム、オペレーティングシステム、情報取得仲介方法

Also Published As

Publication number Publication date
CN103493022A (zh) 2014-01-01
CN103493022B (zh) 2016-05-04
US20140025903A1 (en) 2014-01-23
JPWO2012131884A1 (ja) 2014-07-24
WO2012131884A1 (ja) 2012-10-04

Similar Documents

Publication Publication Date Title
EP2989579B1 (en) Redundant system boot code in a secondary non-volatile memory
JP4916576B2 (ja) マルチオペレーティングシステム(os)起動装置及びマルチos起動プログラム及び記録媒体及びマルチos起動方法
US9880908B2 (en) Recovering from compromised system boot code
JP6736456B2 (ja) 情報処理装置およびプログラム
US8146150B2 (en) Security management in multi-node, multi-processor platforms
JP5716824B2 (ja) マルチコアプロセッサシステム
JP6370098B2 (ja) 情報処理装置、情報処理監視方法、プログラム、及び記録媒体
CN101373441A (zh) 一种基于固件的虚拟化平台系统
US8930894B2 (en) Method and system for executing an executable file
JP6984710B2 (ja) コンピュータ装置およびメモリ管理方法
JP2009157542A (ja) 情報処理装置及びそのスタックポインタ更新方法
JP5392263B2 (ja) 情報処理装置及びそのメモリ保護方法
WO2007022687A1 (fr) Système et procédé de contrôle de sécurité de système d’exploitation
JP5920509B2 (ja) コントローラの制御プログラム、およびコントローラの制御方法
CN112463287A (zh) 基于插桩的访问请求处理方法及系统
JP6462540B2 (ja) ドライバ装置、情報処理システム、プログラムおよび方法
JP5565187B2 (ja) 情報処理装置および割込み制御プログラム
JP2020140689A (ja) 計算機、オペレーティングシステム及び方法
JP5454686B2 (ja) マルチコアプロセッサシステム、復元プログラム、および復元方法
JP2009271597A (ja) プロセッサ
JP2018036695A (ja) 情報処理監視装置、情報処理監視方法、監視プログラム、記録媒体及び情報処理装置
JP2016076152A (ja) エラー検出システム、エラー検出方法およびエラー検出プログラム
JP2002091826A (ja) 情報処理装置
JP2003330800A (ja) 半導体集積回路
JPH05265864A (ja) メモリ管理回路及びメモリ管理回路付きのプロセッサユニット

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140902

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141104

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141125

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150126

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: 20150217

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150302

R150 Certificate of patent or registration of utility model

Ref document number: 5716824

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees