JP2014081819A - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP2014081819A
JP2014081819A JP2012229907A JP2012229907A JP2014081819A JP 2014081819 A JP2014081819 A JP 2014081819A JP 2012229907 A JP2012229907 A JP 2012229907A JP 2012229907 A JP2012229907 A JP 2012229907A JP 2014081819 A JP2014081819 A JP 2014081819A
Authority
JP
Japan
Prior art keywords
memory
access
information
protection area
shared
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.)
Pending
Application number
JP2012229907A
Other languages
English (en)
Inventor
Masayuki Ito
雅之 伊藤
Hideki Sugimoto
英樹 杉本
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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2012229907A priority Critical patent/JP2014081819A/ja
Priority to US14/052,138 priority patent/US9318167B2/en
Priority to CN201310487396.2A priority patent/CN103778099B/zh
Publication of JP2014081819A publication Critical patent/JP2014081819A/ja
Priority to US15/064,066 priority patent/US9740636B2/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1015Read-write modes for single port memories, i.e. having either a random port or a serial port
    • G11C7/1036Read-write modes for single port memories, i.e. having either a random port or a serial port using data shift registers
    • 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/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • 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
    • 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Storage Device Security (AREA)
  • Multi Processors (AREA)

Abstract

【課題】マルチコアシステムを構成するコアの数が増加した場合であってもハードウェアリソースの増加を抑制することができる情報処理装置を提供することである。
【解決手段】一実施の形態によれば、情報処理装置1は、複数のコア10、20と、複数のコア10、20で共有可能な共有リソース30と、複数のコア10、20の各々に固有の設定情報が格納されたローカルレジスタ14、24と、を備える。共有リソース30は複数のコア10、20とは独立に設けられており、ローカルレジスタ14、24は複数のコア10、20の各々に設けられている。
【選択図】図1

Description

本発明は情報処理装置に関し、例えば複数のコアを備える情報処理装置に関する。
単一の情報処理装置内に複数のコアを設け、情報処理装置全体の処理能力を向上させるマルチコアシステムが知られている。例えば、マルチコアシステムでは、一つのプログラムを複数のスレッドに分割し、この複数のスレッドを複数のコアでそれぞれ実行することで、プログラムの処理速度を向上させることができる。
特許文献1には、高いセキュリティ性を維持しつつメモリ保護領域への各コアのアクセス権限を動的に変化させることを可能とする技術が開示されている。
特開2009−251967号公報
単一の情報処理装置内に複数のコアを設けたマルチコアシステムでは、マシン設定や仮想化設定を行うレジスタやメモリ保護回路(MPU:Memory Protection Unit)等のハードウェアリソースを各々のコアに設ける必要がある。このため、マルチコアシステムを構成するコアの数が多くなるほど、マルチコアシステム内のハードウェアリソースが増加し、チップ面積やコストが増加するという問題がある。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
一実施の形態によれば、情報処理装置は、複数のコアと、複数のコアで共有可能な共有リソースと、複数のコアの各々に固有の設定情報が格納されたローカルレジスタと、を備える。共有リソースは複数のコアとは独立に設けられており、ローカルレジスタは複数のコアの各々に設けられている。
前記一実施の形態によれば、マルチコアシステムを構成するコアの数が増加した場合であってもハードウェアリソースの増加を抑制することができる情報処理装置を提供することができる。
実施の形態1にかかる情報処理装置を示すブロック図である。 実施の形態1にかかる情報処理装置が備える共有レジスタ制御部#1〜#2と共有レジスタ#0とを示すブロック図である。 実施の形態2にかかる情報処理装置が備えるMPU制御部#1〜#2とメモリ保護回路MPU#0とを示すブロック図である。 メモリ保護回路MPU#0が備える保護領域設定レジスタの一例を示す図である。 実施の形態2にかかる情報処理装置の動作を説明するためのフローチャートである。 実施の形態2にかかる情報処理装置の動作を説明するためのフローチャートである。 実施の形態3にかかる情報処理装置が備えるMPU制御部#1〜#2とメモリ保護回路MPU#0とを示すブロック図である。 実施の形態3にかかる情報処理装置の動作を説明するためのフローチャートである。 実施の形態3にかかる情報処理装置の動作を説明するためのフローチャートである。 実施の形態4にかかる情報処理装置が備えるMPU制御部#1〜#2とメモリ保護回路MPU#0とを示すブロック図である。 実施の形態4にかかる情報処理装置の動作を説明するためのフローチャートである。 実施の形態4にかかる情報処理装置の動作を説明するためのフローチャートである。
<実施の形態1>
図1は、実施の形態1にかかる情報処理装置を示すブロック図である。図1に示す情報処理装置1は、コア#1(10)と、コア#2(20)と、共有リソース#0(30)と、共有メモリ32と、排他制御部34と、周辺モジュール35と、を備える。
コア#1(10)は、コア#1(10)における演算処理を実行する演算部#1(11)を備える。演算部#1(11)は、CPU(Central Processing Unit)#1、共有レジスタ制御部#1(12)、MPU制御部#1(13)、およびレジスタ#1(ローカルレジスタ)14を備える。演算部#1には内部バスA_#1が設けられており、CPU#1、共有レジスタ制御部#1(12)、MPU制御部#1(13)、およびレジスタ#1(14)のそれぞれは、内部バスA_#1を介して互いに接続されている。
なお、コア#2(20)の構成についても、コア#1(10)の構成と基本的に同様であるので重複した説明は省略する。例えばコア#1(10)の演算部#1(11)のCPU#1、共有レジスタ制御部#1(12)、MPU制御部#1(13)およびレジスタ#1(14)はそれぞれ、コア#2(20)の演算部#2(21)のCPU#2、共有レジスタ制御部#2(22)、MPU制御部#1(23)およびレジスタ#1(ローカルレジスタ)24に対応している。
CPU#1は所定のプログラムを実行する回路であり、演算部#1(11)においてメインプロセッサとして動作する演算回路である。
CPU#1は割り込みコントローラINTC#1と接続されている。割り込みコントローラINTC#1は、情報処理装置1の外部に設けられている周辺回路からの割り込み要求を割り込みインタフェース(IF)#1を介して受信して、CPU#1に割り込み信号を出力する。
また、CPU#1はキャッシュメモリ#1と接続されている。キャッシュメモリ#1にはCPU#1において高い頻度で使用されるデータが蓄積されている。よって、CPU#1がキャッシュメモリ#1にアクセスしてデータを読み出すことで、コア#1(10)の動作を高速化することができる。
また、演算部#1(11)の内部バスA_#1は、バスB_#1を介してシステムバスインタフェース(IF)#1に接続されている。システムバスIF#1は、コア#1(10)の外部に設けられているシステムバス31と接続されている。同様に、コア#2(20)において、演算部#2(21)の内部バスA_#2は、バスB_#2を介してシステムバスIF#2に接続されている。システムバスIF#2は、コア#2(20)の外部に設けられているシステムバス31と接続されている。システムバス31には、例えば共有メモリ32が接続されており、コア#1(10)とコア#2(20)は共有メモリ32を共有している。
CPU#1は、内部バスA_#1、バスB_#1、システムバスIF#1、およびシステムバス31を介して、共有メモリ32からデータを読み出し、共有メモリ32にデータを書き込むことができる。同様に、CPU#2は、内部バスA_#2、バスB_#2、システムバスIF#2、およびシステムバス31を介して、共有メモリ32からデータを読み出し、共有メモリ32にデータを書き込むことができる。
また、演算部#1(11)の内部バスA_#1は、バスB_#1を介して周辺インタフェース(IF)#1に接続されている。周辺IF#1は、コア#1(10)の外部に設けられている周辺バス33と接続されている。同様に、コア#2(20)において、演算部#2(21)の内部バスA_#2は、バスB_#2を介して周辺IF#2に接続されている。周辺IF#2は、コア#2(20)の外部に設けられている周辺バス33と接続されている。周辺バス33には、例えば排他制御部34や周辺モジュール35が接続されている。
ここで、排他制御部34は、コア#1(10)およびコア#2(20)のうちのいずれか一方が共有リソース#0や共有メモリ32にアクセスしている場合に、他方のコアが共有リソース#0や共有メモリ32にアクセスすることを制限するための回路である。例えば、コア#1(10)が共有リソース#0にアクセスしている場合、排他制御部34はコア#2(20)による共有リソース#0へのアクセスを禁止する。
共有リソース#0(30)は、コア#1(10)とコア#2(20)とで共有可能なリソースであり、例えば共有レジスタ#0(50)およびメモリ保護回路MPU#0(60)を備える。ここで、共有リソース#0(30)は、コア#1(10)およびコア#2(20)とは独立に設けられている。
共有レジスタ#0(50)は、コア#1(10)とコア#2(20)とで共有可能な設定情報を格納するレジスタであり、例えば図2に示すように、マシン設定レジスタ#0(51)や仮想化設定レジスタ#0(52)を備える。マシン設定レジスタ#0(51)には、コア#1(10)とコア#2(20)とを含むマシン全体が従うアーキテクチャ情報が格納されている。アーキテクチャ情報とは、マシンID、互換モード設定、例外発生設定などに関する情報である。また、仮想化設定レジスタ#0(52)には、コア#1(10)とコア#2(20)とを含むマシンを仮想マシンとして用いる場合の設定情報が格納されている。ここで仮想マシンとして用いる場合の設定情報とは、例えばハイパーバイザコール分岐先アドレスやハイパーバイザコールテーブルサイズ等のハイパーバイザ特権に関する設定情報である。
コア#1(10)の演算部#1(11)には、コア#1(10)による共有レジスタ#0(50)への書き込み及び読み出しを制御する共有レジスタ制御部#1(12)が設けられている。同様に、コア#2(10)の演算部#2(21)には、コア#2(20)による共有レジスタ#0(50)への書き込み及び読み出しを制御する共有レジスタ制御部#2(22)が設けられている。
図2に示すように、例えばコア#1(10)のCPU#1が共有レジスタ#0(50)に設定値を書き込む場合、CPU#1は内部バスA_#1を経由して共有レジスタ制御部#1(12)に書き込み命令を出力する。書き込み命令を受けた共有レジスタ制御部#1(12)は、共有レジスタ#0(50)に書き込み制御信号と書き込み値(設定値)を出力する。書き込み制御信号が供給されると、共有レジスタ#0(50)は所定のレジスタに書き込み値(設定値)を格納する。
また、例えばコア#1(10)のCPU#1が共有レジスタ#0(50)から設定値を読み出す場合、CPU#1は内部バスA_#1を経由して共有レジスタ制御部#1(12)に読み出し命令を出力する。読み出し命令を受けた共有レジスタ制御部#1(12)は、共有レジスタ#0(50)に読み出し制御信号を出力する。読み出し制御信号が供給されると、共有レジスタ#0(50)は所定のレジスタから読み出し値(設定値)を読み出し、共有レジスタ制御部#1(12)に出力する。そして、共有レジスタ制御部#1(12)は内部バスA_#1を経由してCPU#1に読み出し値(設定値)を出力する。
なお、コア#2(20)においてCPU#2が共有レジスタ#0(50)に設定値を書き込む場合や、共有レジスタ#0(50)から設定値を読み出す場合についても同様である。また、例えば共有レジスタ#0(50)に格納されている重要な情報については、マスタ権限のあるコア(例えば、コア#1(10))のみが書き込むように構成してもよい。
図1に示すメモリ保護回路MPU#0(60)は、コア#1(10)およびコア#2(20)による共有メモリ32への不正なアクセスから共有メモリ32を保護するための回路である。例えば、CPU#1が共有メモリ32にアクセスする場合、メモリ保護回路MPU#0(60)は、CPU#1から出力されたメモリアドレスを含むメモリアクセス情報に基づいて、CPU#1による共有メモリ32へのアクセスの可否を判定する。そして、CPU#1はメモリ保護回路MPU#0(60)においてアクセス可能と判定された場合に、共有メモリ32にアクセスする。
ここで、メモリ保護回路MPU#0(60)は、コア#1(10)およびコア#2(20)による共有メモリ32へのアクセス以外にも、例えば、コア#1(10)およびコア#2(20)が周辺モジュール35にアクセスする場合等、コア#1(10)およびコア#2(20)が他の任意の共有回路にアクセスする場合にも用いることができる。なお、以下では、メモリ保護回路MPU#0(60)が共有メモリ32を保護する場合を例として説明する。
また、図1では共有メモリ32がシステムバス31に接続されている場合を例として示したが、例えば、CPU#1に接続されたメモリ(例えば、SRAMやフラッシュメモリ)を共有メモリとして用いてもよく、また、CPU#2に接続されたメモリ(例えば、SRAMやフラッシュメモリ)を共有メモリとして用いてもよい。
コア#1(10)の演算部#1(11)には、コア#1(10)によるメモリ保護回路MPU#0(60)へのアクセスを制御するMPU制御部#1(13)が設けられている。また、コア#2(20)の演算部#2(21)には、コア#2(20)によるメモリ保護回路MPU#0(60)へのアクセスを制御するMPU制御部#2(23)が設けられている。なお、MPU制御部#1(13)、MPU制御部#2(23)、およびメモリ保護回路MPU#0(60)については、実施の形態2で詳細に説明する。
また、コア#1(10)の演算部#1(11)には、コア#1(10)に固有の設定情報が格納されたレジスタ#1(14)が設けられている。ここでコア#1(10)に固有の設定情報とは、例えばCPU#1のID情報やキャッシュメモリ#1の設定情報等である。同様に、コア#2(20)の演算部#2(21)には、コア#2(20)に固有の設定情報が格納されたレジスタ#2(24)が設けられている。
従来、単一の情報処理装置内に複数のコアを設けたマルチコアシステムでは、マシン設定や仮想化設定を行うレジスタやメモリ保護回路等のハードウェアリソースを各々のコアに設ける必要があった。このため、マルチコアシステムを構成するコアの数が多くなるほど、マルチコアシステム内のハードウェアリソースが増加し、チップ面積やコストが増加するという問題があった。
そこで本実施の形態にかかる情報処理装置1では、マルチコアシステムを構成するコア#1(10)とコア#2(20)とで共有可能な共有リソース#0(30)を、コア#1(10)およびコア#2(20)とは独立に設けている。また、コア#1(10)に固有の設定情報が格納されたレジスタ#1(14)をコア#1(10)に設け、コア#2(20)に固有の設定情報が格納されたレジスタ#2(24)をコア#2(20)に設けている。
このように本実施の形態にかかる情報処理装置1では、各コアに固有の設定情報が格納されたレジスタについては各コアの内部に残し、各コアで共有できる共有リソースについては各コアの外部に設けて共有している。このような構成とすることで、各コアの回路構成を簡素化することができ、マルチコアシステムを構成するコアの数が増加した場合であってもハードウェアリソースの増加を抑制することができる。よって、情報処理装置のチップ面積やコストの増加を抑制することができる。
<実施の形態2>
次に、実施の形態2について説明する。本実施の形態では、実施の形態1で説明した情報処理装置が備えるMPU制御部#1(13)、MPU制御部#2(23)、およびメモリ保護回路MPU#0(60)について詳細に説明する。なお、これ以外の構成については実施の形態1で説明した情報処理装置と同様であるので、同一の構成要素には同一の符号を付し重複した説明は省略する。
図3は、本実施の形態にかかる情報処理装置が備えるMPU制御部#1(13)、MPU制御部#2(23)、およびメモリ保護回路MPU#0(60)を示すブロック図である。メモリ保護回路MPU#0(60)は、アービタ61、保護領域設定レジスタ#1〜#m(第1の保護領域設定レジスタ)、アクセス判定回路#1〜#m(第1のアクセス判定回路)、および判定信号生成回路#0を備える。ここで、mは2以上の整数である。
コア#1(10)が備えるMPU制御部#1(13)は、例えばCPU#1が共有メモリ32にアクセスする際にCPU#1から出力されたメモリアクセス情報ACC_M_1をメモリ保護回路MPU#0(60)のアービタ61に出力する。また、MPU制御部#1(13)はCPU#1に通知信号ACK_1を出力する。
同様に、コア#2(20)が備えるMPU制御部#2(23)は、例えばCPU#2が共有メモリ32にアクセスする際にCPU#2から出力されたメモリアクセス情報ACC_M_2をメモリ保護回路MPU#0(60)のアービタ61に出力する。また、MPU制御部#2(23)はCPU#2に通知信号ACK_2を出力する。
メモリ保護回路MPU#0(60)が備えるアービタ61は、コア#1(10)が共有メモリ32にアクセス可能であるか否かの判定と、コア#2(20)が共有メモリ32にアクセス可能であるか否かの判定とを調停する。つまり、MPU制御部#1(13)からの判定要求とMPU制御部#2(23)からの判定要求とが競合した場合、これらの判定要求を調停する。
具体的には、アービタ61は、MPU制御部#1(13)から出力されたメモリアクセス情報ACC_M_1と、MPU制御部#2(23)から出力されたメモリアクセス情報ACC_M_2とが競合した場合、これらのメモリアクセス情報ACC_M_1、ACC_M_2を調停し、いずれか一方のメモリアクセス情報ACC_M_n(n=1または2)をアクセス判定回路#1〜#mに出力する。また、アービタ61は、MPU制御部13、23のうち、選択しているメモリアクセス情報ACC_M_nに対応しているMPU制御部に判定信号OUT_nを出力する。つまり、アービタ61は、メモリアクセス情報ACC_M_1を選択している場合、判定信号生成回路#0から出力された判定信号OUT_1をMPU制御部#1(13)に出力する。また、アービタ61は、メモリアクセス情報ACC_M_2を選択している場合、判定信号生成回路#0から出力された判定信号OUT_2をMPU制御部#2(23)に出力する。
ここで、メモリアクセス情報ACC_M_nには、例えばメモリメモリアドレス、共有メモリ32へのアクセスの種類(書き込みアクセス/読み出しアクセス)に関する情報やアクセス幅(バイト/ハーフワード/ロングワード)に関する情報が含まれている。
保護領域設定レジスタ#1〜#mは、共有メモリ32の保護領域に関する保護領域情報を格納している。つまり、保護領域設定レジスタ#1〜#mは、共有メモリ32のメモリ領域に対応するアドレス情報と、各々のコアが共有メモリ32のメモリ領域にアクセスする際の権限に関する権限情報(属性情報)とを格納している。
図4は、メモリ保護回路MPU#0(60)が備える保護領域設定レジスタ#1〜#mの一例を示す図である。図4に示すように、各々の保護領域設定レジスタ#1〜#mは、上限アドレスレジスタ(MPUA1〜MPUAm)、下限アドレスレジスタ(MPLA1〜MPLAm)、および属性レジスタ(MPAT1〜MPATm)を備える。
上限アドレスレジスタ(MPUA1〜MPUAm)は、各々のメモリ領域#1〜#mの上限アドレスを格納するレジスタである。下限アドレスレジスタ(MPLA1〜MPLAm)は、各々のメモリ領域#1〜#mの下限アドレスを格納するレジスタである。ここでメモリ領域#1〜#mのそれぞれは、エントリ#1〜#mのメモリ領域に対応している。例えば、エントリ#1のメモリ領域としてメモリ領域#1を設定する場合、保護領域設定レジスタ#1の上限アドレスレジスタMPUA1にはメモリ領域#1の上限アドレスを、下限アドレスレジスタMPLA1にはメモリ領域#1の下限アドレスを格納する。このとき、共有メモリ32のメモリ領域#1〜#m、つまりエントリ#1〜#mのメモリ領域は互いに重ならないように設定してもよく、また互いに重なるように設定してもよい。
なお、メモリ領域#1〜#mは、上記のように上限アドレスと下限アドレスとを用いて規定する代わりに、下限アドレスとメモリ領域のサイズとを用いて規定してもよい。この場合は、例えば下限アドレスレジスタと領域サイズレジスタを設ける。
属性レジスタ(MPAT1〜MPATm)は、各々のメモリ領域#1〜#m(エントリ#1〜#m)の属性(例えば、書き込みの許可/禁止、読み出しの許可/禁止、実行の許可/禁止)を格納するレジスタである。また、属性レジスタ(MPAT1〜MPATm)には、ID情報が格納されていてもよい。例えば、ID情報は各々のコアに対応するコアID情報、複数のコアをグループ化したグループID情報等である。例えば、属性レジスタにコアID情報が格納されている場合は、コア毎に共有メモリ32へのアクセス判定を実施することができる。
図3に示すように、アクセス判定回路#1〜#mは、保護領域設定レジスタ#1〜#mに対応するように設けられている。換言すると、各々のエントリ#1〜#mに対応するように、保護領域設定レジスタ#1〜#mとアクセス判定回路#1〜#mとが設けられている。アクセス判定回路#1〜#mは、コア#1(10)およびコア#2(20)からそれぞれ出力されたメモリアクセス情報ACC_M_nと、保護領域設定レジスタ#1〜#mに格納されている保護領域情報とに基づいて、コア#1(10)およびコア#2(20)による共有メモリ32へのアクセスの可否を判定する。
つまり、アクセス判定回路#1〜#mは、メモリアクセス情報ACC_M_nに含まれているメモリアドレスが保護領域設定レジスタ#1〜#mに格納されているメモリ領域に含まれており、且つ、コア#1(10)、コア#2(20)にメモリ領域32へのアクセス権限がある場合に、コア#1(10)、コア#2(20)が共有メモリ32にアクセス可能であると判定する。
例えば、コア#1(10)から出力されたメモリアクセス情報ACC_M_1に含まれるメモリアドレスADD_M_1が、保護領域設定レジスタ#1に格納されているメモリ領域#1に含まれている場合、アクセス判定回路#1はメモリアドレスADD_M_1がエントリ#1に含まれていると判定する。つまり、メモリアドレスADD_M_1が上限アドレスレジスタ(MPUA1)と下限アドレスレジスタ(MPLA1)の範囲内にある場合、アクセス判定回路#1はメモリアドレスADD_M_1がエントリ#1に含まれていると判定する。
更に、コア#1(10)による共有メモリ32へのアクセスの内容(つまり、書き込み、読み出し、実行など)が許可されている場合、アクセス判定回路#1はコア#1(10)による共有メモリ32へのアクセスを許可する。ここで、アクセスの内容が許可されている場合とは、コア#1(10)による共有メモリ32へのアクセスの内容が属性レジスタ(MPAT1)にて許可されている場合である。
判定信号生成回路#0は、アクセス判定回路#1〜#mから出力された判定結果に基づいて判定信号OUT_nを生成し、生成した判定信号OUT_nをアービタ61に出力する。つまり、判定信号生成回路#0は各々のアクセス判定回路#1〜#mのいずれかにおいて共有メモリ32へのアクセスを許可すると判定された場合、共有メモリ32へのアクセスを許可する判定信号OUT_nを出力する。一方、判定信号生成回路#0は各々のアクセス判定回路#1〜#mの全てにおいて共有メモリ32へのアクセスを禁止すると判定された場合、共有メモリ32へのアクセスを禁止する判定信号OUT_nを出力する。なお、エントリ#1〜#mのメモリ領域が互いに重なるように設定されている場合は、複数のアクセス判定回路#1〜#mにおいてアクセスを許可すると判定される場合もある。
MPU制御部#1(13)は、アービタ61から出力された判定信号OUT_1がアクセス許可を示す場合、CPU#1に通知信号ACK_1としてアクセス許可通知信号を出力する。その後、CPU#1は共有メモリ32にアクセスする。一方、MPU制御部#1(13)は、判定信号OUT_1がアクセス不可を示す場合、CPU#1に通知信号ACK_1として例外通知信号を出力する。この場合は、CPU#1による共有メモリ32へのアクセスが禁止される。なお、MPU制御部#2(23)についても同様である。
次に、図5、図6に示すフローチャートを用いて、本実施の形態にかかる情報処理装置の動作について説明する。以下では、一例としてコア#1(10)が備えるCPU#1が共有メモリ32にアクセスする場合について説明する。
CPU#1が共有メモリ32にアクセスする場合、CPU#1はMPU制御部#1(13)にメモリアクセス情報ACC_M_1を出力する(ステップS1)。そして、MPU制御部#1(13)は、アービタ61にメモリアクセス情報ACC_M_1を出力する(ステップS2)。アービタ61は、コア#1(10)が共有メモリ32にアクセス可能であるか否かの判定と、コア#2(20)が共有メモリ32にアクセス可能であるか否かの判定とが競合している場合は、これらの判定要求を調停する。そして、アービタ61による調停後、アービタ61からアクセス判定回路#1〜#mにメモリアクセス情報ACC_M_1が出力される(ステップS3)。その後、各々のアクセス判定回路#1〜#mはアクセス判定を実施し、各々のアクセス判定回路#1〜#mにおける判定結果を判定信号生成回路#0に出力する(ステップS4)。
図6に示すフローチャートを用いて、アクセス判定について詳細に説明する。アクセス判定を行う際、アクセス判定回路#1〜#mは保護領域設定レジスタ#1〜#mとメモリアクセス情報ACC_M_1とに基づきアクセス判定を行う(ステップS11)。つまり、メモリアクセス情報ACC_M_1に含まれるメモリアドレスADD_M_1が、各エントリ#1〜#m(つまり、保護領域設定レジスタ#1〜#mに格納されているメモリ領域#1〜#m)に含まれているか判定する。そして、メモリアドレスADD_M_1が、エントリ#1〜#mに含まれていない場合(ステップS12:No)、アクセス判定回路#1〜#mはアクセス不可を示す判定結果を判定信号生成回路#0に出力する(ステップS15)。
一方、メモリアドレスADD_M_1がエントリ#1〜#mに含まれており(ステップS12:Yes)、更に、CPU#1による共有メモリ32へのアクセスの内容が許可されている場合(ステップS13:Yes)、アクセス判定回路#1〜#mはアクセス許可を示す判定結果を判定信号生成回路#0に出力する(ステップS14)。ここで、CPU#1による共有メモリ32へのアクセスの内容が許可されている場合とは、例えばCPU#1による共有メモリ32へのアクセスの内容が保護領域設定レジスタ#1〜#mの属性レジスタにて許可されている場合である。
また、メモリアドレスADD_M_1が、エントリ#1〜#mに含まれており(ステップS12:Yes)、更に、CPU#1による共有メモリ32へのアクセスの内容が許可されていない場合(ステップS13:No)、アクセス判定回路#1〜#mはアクセス不可を示す判定結果を判定信号生成回路#0に出力する(ステップS15)。
このようにして各々のアクセス判定回路#1〜#mはアクセス判定を実施する。そしてアクセス判定後、判定信号生成回路#0はアービタ61に判定信号OUT_1を出力する(ステップS5)。アービタ61はMPU制御部#1(13)に判定信号OUT_1を出力する(ステップS6)。そして、判定信号OUT_1がアクセス許可を示す場合(ステップS7:Yes)、MPU制御部#1(13)はCPU#1に通知信号ACK_1としてアクセス許可通知信号を出力する。その後、CPU#1は共有メモリ32にアクセスする(ステップS8)。一方、判定信号OUT_1がアクセス不可を示す場合(ステップS8:No)、MPU制御部#1(13)はCPU#1に通知信号ACK_1として例外通知信号を出力する(ステップS9)。この場合は、CPU#1による共有メモリ32へのアクセスが禁止される。
メモリ保護回路は、各々のコアが備える回路の中でも回路面積が大きい回路である。特に、エントリ数が多い場合(例えば、m=16等)は、各々のコアに占める回路面積が大きくなると共に、アクセス判定時の消費電力も増加する。つまり、メモリ保護判定はメモリアクセスごとに行う必要があるため、エントリ数が多くなるとその分だけ消費電力が増加する。このため、マルチコアシステムを構成するコアの数が増加した場合は、その分だけ回路面積や消費電力が増加するという問題があり、メモリ保護回路ではこの問題が特に顕著にあらわれていた。
本実施の形態にかかる情報処理装置では、コア#1(10)とコア#2(20)とでメモリ保護回路MPU#0(60)を共有している。このような構成とすることで、各コアの回路構成を簡素化することができ、マルチコアシステムを構成するコアの数が増加した場合であってもハードウェアリソースの増加を抑制することができる。
つまり、メモリ保護回路を共有することで、情報処理装置全体でのメモリ保護回路が備えるエントリ数を少なくすることができるので、情報処理装置全体での消費電力を低減することができる。例えば、マルチコアシステムを構成するコアの数が2つであり、メモリ保護回路のエントリ数mがm=16である場合、各々のコアにメモリ保護回路を設けると情報処理装置全体でのエントリ数は32(=16+16)となる。しかし、各々のコアでメモリ保護回路を共有した場合は、情報処理装置全体でのエントリ数は16となるので、消費電力を約1/2にすることができる。
また、例えば、情報処理装置には、パーソナルコンピュータ等に用いられるマイクロプロセッサと、搭載される電子機器の制御に機能が特化されているマイクロコントローラとがある。マイクロプロセッサは大容量のメモリを扱うため、メモリ保護機構としてメモリ保護機能とアドレス変換機能とを備えるメモリ管理ユニット(MMU)を搭載する場合が多い。
一方、マイクロコントローラは搭載される電子機器の制御に機能が特化されているため、大容量のメモリを搭載する必要がなく、また仮想アドレスを物理アドレスに変換するアドレス変換機能も不要である。また、マイクロコントローラでは省電力、小面積が求められている。このため、マイクロコントローラのメモリ保護機構として、メモリ管理ユニット(MMU)を搭載するとハードウェア資源のオーバーヘッドが大きくなる。
また、マイクロコントローラは電子機器の制御に用いられるため、リアルタイム性が重要となる。しかし、マイクロコントローラのメモリ保護機構としてメモリ管理ユニット(MMU)を搭載すると、TLBミスヒット時にテーブルウォークが発生し、処理に時間がかかるためリアルタイム性が損なわれる。
よって、マイクロコントローラのメモリ保護機構としては、アドレス変換機能を備えないメモリ保護ユニット(MPU)を用いるほうが、アドレス変換機能を備えるMMUを用いるよりも好ましい。このため、本実施の形態にかかる情報処理装置は、省電力、小面積、リアルタイム性が重視されるマイクロコントローラに特に適しているといえる。
なお、本実施の形態にかかる情報処理装置は、アドレス変換機能を備えたメモリ保護回路を有する情報処理装置への適用を妨げるものではなく、例えばアドレス変換機能を備えるメモリ管理ユニット(MMU)を搭載したマイクロプロセッサにも適用することができる。更に、本実施の形態にかかる情報処理装置は、例えばアドレス変換機能が不要なマイクロプロセッサにも適用することができる。
<実施の形態3>
次に、実施の形態3について説明する。図7は、本実施の形態にかかる情報処理装置が備えるMPU制御部#1(13')、MPU制御部#2(23')、およびメモリ保護回路MPU#0(60')を示すブロック図である。本実施の形態では、図7に示すようにMPU制御部#1(13')およびMPU制御部#1(23')がそれぞれ、ローカルMPU#1(71)およびローカルMPU#2(72)を備える点が実施の形態2で説明した情報処理装置と異なる。これ以外は実施の形態1および2で説明した情報処理装置と同様である。
図7に示すように、MPU制御部#1(13')はローカルMPU#1(71)を備える。ローカルMPU#1(71)は、アドレスレジスタ#1、保護領域設定レジスタ#1_1〜#1_p(第2の保護領域設定レジスタ)、アクセス判定回路#1_1〜#1_p(第2のアクセス判定回路)、判定信号生成回路#1、および書換制御回路#1を備える。ここで、pは1≦p<mの整数である。アドレスレジスタ#1は、MPU制御部#1(13')に供給されたメモリアクセス情報ACC_M_1を一時的に保持するレジスタである。
保護領域設定レジスタ#1_1〜#1_pは、共有メモリ32の保護領域に関する保護領域情報を格納している。つまり、保護領域設定レジスタ#1_1〜#1_pは、共有メモリ32のメモリ領域に対応するアドレス情報と、コア#1(10)が共有メモリ32のメモリ領域にアクセスする際の権限に関する権限情報とを格納している。なお、保護領域設定レジスタ#1_1〜#1_pについては、実施の形態2で説明した保護領域設定レジスタ#1〜#m(図4参照)と同様であるので、重複した説明は省略する。
アクセス判定回路#1_1〜#1_pは、保護領域設定レジスタ#1_1〜#1_pに対応するように設けられている。換言すると、各々のエントリ#1_1〜#1_pに対応するように、保護領域設定レジスタ#1_1〜#1_pとアクセス判定回路#1_1〜#1_pとが設けられている。アクセス判定回路#1_1〜#1_pは、アドレスレジスタ#1から出力された(つまり、CPU#1から出力された)メモリアクセス情報ACC_M_1と、保護領域設定レジスタ#1_1〜#1_pに格納されている保護領域情報とに基づいて、コア#1(10)による共有メモリ32へのアクセスの可否を判定する。
つまり、アクセス判定回路#1_1〜#1_pは、メモリアクセス情報ACC_M_1に含まれているメモリアドレスが保護領域設定レジスタ#1_1〜#1_pに格納されているメモリ領域に含まれており、且つ、コア#1(10)にメモリ領域32へのアクセス権限がある場合に、コア#1(10)が共有メモリ32にアクセス可能であると判定する。
判定信号生成回路#1は、判定信号OUT_M_1をMPU制御部#1(13')に、または、メモリアドレスADD_M_1をアービタ61'に出力する。
つまり、判定信号生成回路#1は、メモリアドレスADD_M_1がヒットし、且つ、コア#1(10)にメモリ領域32へのアクセス権限があると判定された場合に、アクセスを許可する判定信号OUT_M_1を生成し、生成した判定信号OUT_M_1をMPU制御部#1(13')に出力する。ここで、メモリアドレスADD_M_1がヒットした場合とは、アクセス判定回路#1_1〜#1_pのいずれかにおいて、メモリアクセス情報ACC_M_1に含まれているメモリアドレスADD_M_1が保護領域設定レジスタ#1_1〜#1_pに格納されているメモリ領域に含まれていると判定された場合である。
また、判定信号生成回路#1は、メモリアドレスADD_M_1がヒットし、且つ、コア#1(10)にメモリ領域32へのアクセス権限がないと判定された場合に、アクセスを不可とする判定信号OUT_M_1を生成し、生成した判定信号OUT_M_1をMPU制御部#1(13')に出力する。なお、各々のエントリ#1_1〜#1_pにメモリ領域のオーバーラップを許している場合は、メモリ保護回路MPU#0(60')の他のエントリにおいてアクセス判定をする必要があるため、判定信号OUT_M_1をMPU制御部#1(13')に出力することなくアービタ61'にメモリアドレスADD_M_1を出力する。
一方、判定信号生成回路#1は、メモリアドレスADD_M_1がヒットしなかった場合、アービタ61'にメモリアドレスADD_M_1を出力する。ここで、メモリアドレスADD_M_1がヒットしなかった場合とは、全てのアクセス判定回路#1_1〜#1_pにおいて、メモリアクセス情報ACC_M_1に含まれているメモリアドレスADD_M_1が保護領域設定レジスタ#1_1〜#1_pに格納されているメモリ領域に含まれていないと判定された場合である。
書換制御回路#1は、アクセス判定回路#1_1〜#1_pから出力された判定結果に基づいて、各々のアクセス判定回路#1_1〜#1_pにおけるアドレスヒット率を求める。ここで、アドレスヒット率とは、メモリアクセス情報ACC_M_1に含まれているメモリアドレスADD_M_1が保護領域設定レジスタ#1_1〜#1_pに格納されているメモリ領域に含まれていると判定された確率である。そして、書換制御回路#1は、アドレスヒット率が最も低いアクセス判定回路#1_1〜#1_pに対応した保護領域設定レジスタ#1_1〜#1_pの保護領域情報を、アービタ61'から供給されたレジスタ書き換え情報SET_REG_1を用いて書き換える。
なお、MPU制御部#2(23')が備えるローカルMPU#2(72)の構成についても、上記で説明したMPU制御部#1(13')が備えるローカルMPU#1(71)の構成と同様であるので、重複した説明は省略する。
メモリ保護回路MPU#0(60')は、ローカルMPU71、72においてメモリアドレスADD_M_nがヒットしなかった場合に、メモリ保護回路MPU#0(60')が備える保護領域設定レジスタ#1〜#mに格納されているメモリ領域にメモリアドレスADD_M_nが含まれているか否かを判定する。
メモリ保護回路MPU#0(60')が備えるアービタ61'は、ローカルMPU#1(71)の判定信号生成回路#1から出力されたメモリアドレスADD_M_1と、ローカルMPU#2(72)の判定信号生成回路#2から出力されたメモリアドレスADD_M_2とが競合した場合、メモリアドレスADD_M_1とメモリアドレスADD_M_2を調停する。つまり、アービタ61'はメモリアドレスADD_M_1またはメモリアドレスADD_M_2を領域判定回路#1〜#mに出力する。
保護領域設定レジスタ#1〜#mは、共有メモリ32の保護領域に関する保護領域情報を格納している。つまり、保護領域設定レジスタ#1〜#mは、共有メモリ32のメモリ領域に対応するアドレス情報と、各々のコアが共有メモリ32のメモリ領域にアクセスする際の権限に関する権限情報とを格納している。なお、保護領域設定レジスタ#1〜#mについては、実施の形態2で説明した保護領域設定レジスタ#1〜#m(図4参照)と同様であるので、重複した説明は省略する。
領域判定回路#1〜#mは、保護領域設定レジスタ#1〜#mに対応するように設けられている。換言すると、各々のエントリ#1〜#mに対応するように、保護領域設定レジスタ#1〜#mと領域判定回路#1〜#mとが設けられている。領域判定回路#1〜#mは、メモリアドレスADD_M_nと、保護領域設定レジスタ#1〜#mに格納されている保護領域情報とに基づいて、メモリアドレスADD_M_nが保護領域設定レジスタ#1〜#mに格納されているメモリ領域に含まれているか否かを判定する。
例えば、メモリアドレスADD_M_1が、保護領域設定レジスタ#1に格納されているメモリ領域#1に含まれている場合、つまり、メモリアドレスADD_M_1が上限アドレスレジスタ(MPUA1)と下限アドレスレジスタ(MPLA1)の範囲内にある場合、領域判定回路#1は、メモリアドレスADD_M_1がエントリ#1の保護領域に含まれていると判定する。
判定信号生成回路#0は、領域判定回路#1〜#mから出力された判定結果に基づいて判定信号HIT_nを生成し、生成すた判定信号HIT_n、およびレジスタ書き換え情報SET_REG_nをアービタ61'に出力する。つまり、判定信号生成回路#0は各々の領域判定回路#1〜#mのいずれかにおいて、メモリアドレスADD_M_nが保護領域設定レジスタ#1〜#mに格納されているメモリ領域に含まれていると判定された場合、メモリアドレスADD_M_nがヒットしたことを示す判定信号HIT_nをアービタ61'に出力する。このとき、判定信号生成回路#0はヒットしたメモリアドレスADD_M_nに対応する保護領域情報(つまり、保護領域設定レジスタ#1〜#mに格納されている情報)をレジスタ書き換え情報SET_REG_nとしてアービタ61'に出力する。
例えば、アービタ61'は、メモリアドレスADD_M_1を選択した場合、ローカルMPU#1(71)に判定信号HIT_1を出力する。また、アービタ61'は、レジスタ書き換え情報SET_REG_1を書換制御回路#1に出力する。書換制御回路#1は、レジスタ書き換え情報SET_REG_1が供給されると、アドレスヒット率が最も低いアクセス判定回路#1_1〜#1_pに対応した保護領域設定レジスタ#1_1〜#1_pの保護領域情報を、アービタ61'から供給されたレジスタ書き換え情報SET_REG_1を用いて書き換える。
次に、図8、図9に示すフローチャートを用いて、本実施の形態にかかる情報処理装置の動作について説明する。以下では、一例としてコア#1(10)が備えるCPU#1が共有メモリ32にアクセスする場合について説明する。
CPU#1が共有メモリ32にアクセスする場合、CPU#1はローカルMPU#1(71)にメモリアクセス情報ACC_M_1を出力する(ステップS21)。つまり、CPU#1から出力されたメモリアクセス情報ACC_M_1は、アドレスレジスタ#1に一時的に保持されると共に、ローカルMPU#1(71)に供給される。ローカルMPU#1(71)は、メモリアクセス情報ACC_M_1に基づいてアクセス判定を行う(ステップS22)。
アクセス判定回路#1_1〜#1_pのいずれかにおいて、メモリアクセス情報ACC_M_1に含まれるメモリアドレスが保護領域設定レジスタ#1_1〜#1_pに格納されているメモリ領域に含まれていると判定された場合(つまり、メモリアドレスADD_M_1がヒットした場合)、ローカルMPU#1(71)においてアクセス判定可能と判定される(ステップS23:Yes)。そして、メモリアドレスADD_M_1がヒットし、且つ、コア#1(10)にメモリ領域32へのアクセス権限があると判定された場合(ステップS24:Yes)、判定信号生成回路#1はアクセスを許可する判定信号OUT_M_1をMPU制御部#1(13')に出力する。この場合、MPU制御部#1(13')はCPU#1に通知信号ACK_1としてアクセス許可通知信号を出力する。その後、CPU#1は共有メモリ32にアクセスする(ステップS25)。
一方、メモリアドレスADD_M_1がヒットしたが、コア#1(10)にメモリ領域32へのアクセス権限がない場合はアクセス不可と判定される(ステップS24:No)。そして、各々のエントリ#1_1〜#1_pにメモリ領域のオーバーラップを許している場合(ステップS26:Yes)、図9のフローチャートへと進む。つまり、各々のエントリ#1_1〜#1_pにメモリ領域のオーバーラップを許している場合は、メモリ保護回路MPU#0(60')の他のエントリにおいてアクセス判定をする必要がある。一方、各々のエントリ#1_1〜#1_pにメモリ領域のオーバーラップを許していない場合(ステップS26:No)、アクセスを不可とする判定信号OUT_M_1をMPU制御部#1(13')に出力する。そして、MPU制御部#1(13')はCPU#1に通知信号ACK_1として例外通知信号を出力する。この場合は、CPU#1による共有メモリ32へのアクセスが禁止される(ステップS27)。
また、ローカルMPU#1(71)においてアクセス判定ができない場合(ステップS23:No)、つまり、メモリアドレスADD_M_1がヒットしなかった場合、判定信号生成回路#1は、アービタ61'にメモリアドレスADD_M_1を出力する(図9のステップS31)。メモリアドレスADD_M_1がヒットしなかった場合とは、全てのアクセス判定回路#1_1〜#1_pにおいて、メモリアクセス情報ACC_M_1に含まれているメモリアドレスADD_M_1が保護領域設定レジスタ#1_1〜#1_pに格納されているメモリ領域に含まれていないと判定された場合である。
図9のフローチャートに示すように、判定信号生成回路#1がアービタ61'にメモリアドレスADD_M_1を出力した場合(ステップS31)、アービタ61'は、メモリアドレスADD_M_1とメモリアドレスADD_M_2を調停後、領域判定回路#1〜#mにメモリアドレスADD_M_1を出力する。その後、領域判定回路#1〜#mはメモリアドレスADD_M_1がエントリ#1〜#mに含まれているか判定する(ステップS33)。換言すると、領域判定回路#1〜#mは、メモリアドレスADD_M_1が保護領域設定レジスタ#1〜#mに格納されているメモリ領域に含まれているか否かを判定する(つまり、メモリアドレスADD_M_1がヒットするか否かを判定する)。
そして、全ての領域判定回路#1〜#mにおいてメモリアドレスADD_M_1がエントリ#1〜#mに含まれていないと判定された場合(ステップS34:No)、判定信号生成回路#0はミスヒットを通知する判定信号HIT_1をアービタ61'を介してMPU制御部#1(13')に出力する。MPU制御部#1(13')は、アービタ61'からミスヒットを通知する判定信号HIT_1が供給されると、CPU#1に通知信号ACK_1として例外通知信号を出力する(ステップS36)。この場合は、CPU#1による共有メモリ32へのアクセスが禁止される。
一方、領域判定回路#1〜#mにおいてメモリアドレスADD_M_1がエントリ#1〜#mに含まれていると判定された場合(ステップS34:Yes)、判定信号生成回路#0はメモリアドレスADD_M_1がヒットしたことを示す判定信号HIT_1を、アービタ61'を介してローカルMPU#1(71)に出力する。このとき、判定信号生成回路#0は、レジスタ書き換え情報SET_REG_nとして、ヒットしたメモリアドレスADD_M_1に対応する保護領域情報を、アービタ61'を介して書換制御回路#1に出力する。書換制御回路#1は、アクセス判定回路#1_1〜#1_pのうちアドレスヒット率が最も低いアクセス判定回路に対応した保護領域設定レジスタ#1_1〜#1_pの保護領域情報を、レジスタ書き換え情報SET_REG_1を用いて書き換える(ステップS35)。
保護領域設定レジスタの書き換え後、ローカルMPU#1(71)は、再度、メモリアクセス情報ACC_M_1に基づいてアクセス判定を行う(ステップS37)。このとき、メモリアクセス情報ACC_M_1は、アドレスレジスタ#1から供給される。そしてアクセス判定後、判定信号生成回路#1はMPU制御部#1(13')に判定信号OUT_M_1を出力する。そして、判定信号OUT_M_1がアクセス許可を示す場合(ステップS38:Yes)、MPU制御部#1(13')はCPU#1に通知信号ACK_1としてアクセス許可通知信号を出力する。その後、CPU#1は共有メモリ32にアクセスする(ステップS39)。一方、判定信号OUT_M_1がアクセス不可を示す場合(ステップS38:No)、MPU制御部#1(13')はCPU#1に通知信号ACK_1として例外通知信号を出力する(ステップS40)。この場合は、CPU#1による共有メモリ32へのアクセスが禁止される。
以上で説明したように、本実施の形態にかかる情報処理装置ではコア#1(10)にローカルMPU#1(71)を設け、コア#2(20)にローカルMPU#2(72)を設けている。そして、共有のメモリ保護回路MPU#0(60')における判定の前に、各々のローカルMPU71、72を用いて、各々のコア10、20が共有メモリ32にアクセス可能であるか否かを判定している。このとき、ローカルMPU71、72には、アドレスヒット率の高いエントリに対応した保護領域情報(共有メモリ32の保護領域に関する情報)が優先的に格納されている。
よって、共有のメモリ保護回路MPU#0(60')における判定の前に、アドレスヒット率が高いローカルMPU71、72において、各々のコア10、20による共有メモリ32へのアクセス判定を実施することができるので、情報処理装置の処理速度を高速化することができる。
このとき、ローカルMPU#1(71)の保護領域設定レジスタ#1_1〜#1_pおよびローカルMPU#2(72)の保護領域設定レジスタ#2_1〜#2_pのそれぞれに格納されているメモリ領域の数は、メモリ保護回路MPU#0(60')の保護領域設定レジスタ#1〜#mに格納されているメモリ領域の数よりも少ない。換言すると、メモリ保護回路MPU#0(60')のエントリ数mは、各々のローカルMPU71、72のエントリ数pよりも少ない(p<m)。
つまり、各々のコア10、20による共有メモリ32へのアクセスはタイミングクリティカルパスになる傾向があるため、各々のローカルMPU71、72のエントリ数は、メモリ保護回路MPU#0(60')のエントリ数よりも少なくすることができる。よって、アドレスヒット率の高いローカルMPU71、72において先にアクセス判定を実施することで、情報処理装置の消費電力を低減させつつ、処理速度を高速化することができる。
メモリ保護回路は、例えば、プログラムの暴走によってリソースが破壊されることを抑制し、また、ユーザ・プログラムが許可されていない実行やデータ操作を行うことを抑制するために設けている。通常アクセスするメモリ領域については、エントリ数の少ないメモリ保護回路を用いることができるので、通常のプログラムを実行している場合は、ローカルMPU71、72を用いたアクセス判定においてミスが起きる回数は少ない。
一方、メモリ保護違反を起こすようなアクセスでは、ローカルMPU71、72を用いたアクセス判定においてミスが発生する。この場合は、共有のメモリ保護回路MPU#0(60')における判定が必要となるが、メモリ保護回路MPU#0(60')における判定は、例えば1〜2クロックと時間が短いため、この影響はほとんど無視することができる。
なお、通常のアクセスで、ローカルMPU71、72のアドレスヒット率が99.9%であれば、ローカルMPU71、72においてミスが起きた際のオーバーヘッドが1クロックである場合、ローカルMPU71、72によるクロック数のオーバーヘッドは、(0.999×1+0.001×2)=1.001であり、0.1%の性能劣化となる。
<実施の形態4>
次に、実施の形態4について説明する。図10は、本実施の形態にかかる情報処理装置が備えるMPU制御部#1(13'')、MPU制御部#2(23'')、およびメモリ保護回路MPU#0(60'')を示すブロック図である。本実施の形態では、ローカルMPU81、82においてメモリアドレスがヒットしなかった際、メモリ保護回路MPU#0(60'')においてアクセス判定を実施している点が、実施の形態3で説明した情報処理装置と異なる。これ以外は実施の形態3で説明した情報処理装置と同様である。
図10に示すように、MPU制御部#1(13'')はローカルMPU#1(81)を備える。ローカルMPU#1(81)は、保護領域設定レジスタ#1_1〜#1_p、アクセス判定回路#1_1〜#1_p、判定信号生成回路#1、および書換制御回路#1を備える。ここで、pは1≦p<mの整数である。
保護領域設定レジスタ#1_1〜#1_pは、共有メモリ32の保護領域に関する保護領域情報を格納している。つまり、保護領域設定レジスタ#1_1〜#1_pは、共有メモリ32のメモリ領域に対応するアドレス情報と、コア#1(10)が共有メモリ32のメモリ領域にアクセスする際の権限に関する権限情報とを格納している。なお、保護領域設定レジスタ#1_1〜#1_pについては、実施の形態2で説明した保護領域設定レジスタ#1〜#m(図4参照)と同様であるので、重複した説明は省略する。
アクセス判定回路#1_1〜#1_pは、保護領域設定レジスタ#1_1〜#1_pに対応するように設けられている。換言すると、各々のエントリ#1_1〜#1_pに対応するように、保護領域設定レジスタ#1_1〜#1_pとアクセス判定回路#1_1〜#1_pとが設けられている。アクセス判定回路#1_1〜#1_pは、コア#1(10)から出力されたメモリアクセス情報ACC_M_1と、保護領域設定レジスタ#1_1〜#1_pに格納されている保護領域情報とに基づいて、コア#1(10)による共有メモリ32へのアクセスの可否を判定する。
つまり、アクセス判定回路#1_1〜#1_pは、メモリアクセス情報ACC_M_1に含まれているメモリアドレスが保護領域設定レジスタ#1_1〜#1_pに格納されているメモリ領域に含まれており、且つ、コア#1(10)にメモリ領域32へのアクセス権限がある場合に、コア#1(10)が共有メモリ32にアクセス可能であると判定する。
判定信号生成回路#1は、判定信号OUT_M_1をMPU制御部#1(13'')に、または、メモリアドレスADD_M_1をアービタ61''に出力する。
つまり、判定信号生成回路#1は、メモリアドレスADD_M_1がヒットし、且つ、コア#1(10)にメモリ領域32へのアクセス権限があると判定された場合に、アクセスを許可する判定信号OUT_M_1を生成し、生成した判定信号OUT_M_1をMPU制御部#1(13'')に出力する。ここで、メモリアドレスADD_M_1がヒットした場合とは、アクセス判定回路#1_1〜#1_pのいずれかにおいて、メモリアクセス情報ACC_M_1に含まれているメモリアドレスADD_M_1が保護領域設定レジスタ#1_1〜#1_pに格納されているメモリ領域に含まれていると判定された場合である。
また、判定信号生成回路#1は、メモリアドレスADD_M_1がヒットし、且つ、コア#1(10)にメモリ領域32へのアクセス権限がないと判定された場合に、アクセスを不可とする判定信号OUT_M_1を生成し、生成した判定信号OUT_M_1をMPU制御部#1(13'')に出力する。なお、各々のエントリ#1_1〜#1_pにメモリ領域のオーバーラップを許している場合は、メモリ保護回路MPU#0(60'')の他のエントリにおいてアクセス判定をする必要があるため、判定信号OUT_M_1をMPU制御部#1(13'')に出力することなくアービタ61''にメモリアクセス情報ACC_M_1を出力する。
一方、判定信号生成回路#1は、メモリアドレスADD_M_1がヒットしなかった場合、アービタ61''にメモリアクセス情報ACC_M_1を出力する。ここで、メモリアドレスADD_M_1がヒットしなかった場合とは、全てのアクセス判定回路#1_1〜#1_pにおいて、メモリアクセス情報ACC_M_1に含まれているメモリアドレスADD_M_1が保護領域設定レジスタ#1_1〜#1_pに格納されているメモリ領域に含まれていないと判定された場合である。
書換制御回路#1は、アクセス判定回路#1_1〜#1_pから出力された判定結果に基づいて、各々のアクセス判定回路#1_1〜#1_pにおけるアドレスヒット率を求める。ここで、アドレスヒット率とは、メモリアクセス情報ACC_M_1に含まれているメモリアドレスADD_M_1が保護領域設定レジスタ#1_1〜#1_pに格納されているメモリ領域に含まれていると判定された確率である。そして、書換制御回路#1は、アドレスヒット率が最も低いアクセス判定回路#1_1〜#1_pに対応した保護領域設定レジスタ#1_1〜#1_pの保護領域情報を、アービタ61''から供給されたレジスタ書き換え情報SET_REG_1を用いて書き換える。
なお、MPU制御部#2(23'')が備えるローカルMPU#2(82)の構成についても、上記で説明したMPU制御部#1(13'')が備えるローカルMPU#1(81)の構成と同様であるので、重複した説明は省略する。
メモリ保護回路MPU#0(60'')は、ローカルMPU81、82においてメモリアドレスADD_M_nがヒットしなかった場合に、メモリアクセス情報ACC_M_nに基づいてアクセス判定を実施する。
メモリ保護回路MPU#0(60'')が備えるアービタ61''は、ローカルMPU#1(81)の判定信号生成回路#1から出力されたメモリアクセス情報ACC_M_1と、ローカルMPU#2(82)の判定信号生成回路#2から出力されたメモリアクセス情報ACC_M_2とが競合した場合、メモリアクセス情報ACC_M_1とメモリアクセス情報ACC_M_2を調停する。つまり、アービタ61''はメモリアクセス情報ACC_M_1またはメモリアクセス情報ACC_M_2をアクセス判定回路#1〜#mに出力する。
保護領域設定レジスタ#1〜#mは、共有メモリ32の保護領域に関する保護領域情報を格納している。つまり、保護領域設定レジスタ#1〜#mは、共有メモリ32のメモリ領域に対応するアドレス情報と、各々のコアが共有メモリ32のメモリ領域にアクセスする際の権限に関する権限情報とを格納している。なお、保護領域設定レジスタ#1〜#mについては、実施の形態2で説明した保護領域設定レジスタ#1〜#m(図4参照)と同様であるので、重複した説明は省略する。
アクセス判定回路#1〜#mは、保護領域設定レジスタ#1〜#mに対応するように設けられている。換言すると、各々のエントリ#1〜#mに対応するように、保護領域設定レジスタ#1〜#mとアクセス判定回路#1〜#mとが設けられている。アクセス判定回路#1〜#mは、メモリアクセス情報ACC_M_nと、保護領域設定レジスタ#1〜#mに格納されている保護領域情報とに基づいて、コア#1(10)およびコア#2(20)による共有メモリ32へのアクセスの可否を判定する。
つまり、アクセス判定回路#1〜#mは、メモリアクセス情報ACC_M_nに含まれているメモリアドレスが保護領域設定レジスタ#1〜#mに格納されているメモリ領域に含まれており、且つ、コア#1(10)、コア#2(20)にメモリ領域32へのアクセス権限がある場合に、コア#1(10)、コア#2(20)が共有メモリ32にアクセス可能であると判定する。
例えば、メモリアクセス情報ACC_M_1に含まれるメモリアドレスが、保護領域設定レジスタ#1に格納されているメモリ領域#1に含まれている場合、つまり、メモリアドレスが上限アドレスレジスタ(MPUA1)と下限アドレスレジスタ(MPLA1)の範囲内にある場合、アクセス判定回路#1は、メモリアドレスADD_M_1がエントリ#1に含まれていると判定する。更に、コア#1(10)による共有メモリ32へのアクセスの内容(つまり、書き込み、読み出し、実行など)が許可されている場合、アクセス判定回路#1はコア#1(10)による共有メモリ32へのアクセスを許可する。ここで、アクセスの内容が許可されている場合とは、コア#1(10)による共有メモリ32へのアクセスの内容が属性レジスタ(MPAT1)にて許可されている場合である。
判定信号生成回路#0は、アクセス判定回路#1〜#mから出力された判定結果に基づいて判定信号OUT_nを生成し、生成した判定信号OUT_n、およびレジスタ書き換え情報SET_REG_nをアービタ61''に出力する。つまり、判定信号生成回路#0は各々のアクセス判定回路#1〜#mのいずれかにおいて共有メモリ32へのアクセスを許可すると判定された場合、共有メモリ32へのアクセスを許可する判定信号OUT_nを生成し、生成した判定信号OUT_nをアービタ61''に出力する。一方、判定信号生成回路#0は各々のアクセス判定回路#1〜#mの全てにおいて共有メモリ32へのアクセスを許可すると判定されなかった場合、共有メモリ32へのアクセスを禁止する判定信号OUT_nを生成し、生成した判定信号OUT_nをアービタ61''に出力する。
このとき、判定信号生成回路#0は、ヒットしたメモリアドレスADD_M_nに対応する保護領域情報(つまり、保護領域設定レジスタ#1〜#mに格納されている情報)をレジスタ書き換え情報SET_REG_nとしてアービタ61''に出力する。なお、エントリ#1〜#mのメモリ領域が互いに重なるように設定されている場合は、複数のアクセス判定回路#1〜#mにおいてアクセスを許可すると判定される場合もある。
例えば、アービタ61''は、メモリアドレスADD_M_1を選択した場合、ローカルMPU#1(81)に判定信号OUT_1を出力する。また、アービタ61''は、レジスタ書き換え情報SET_REG_1を書換制御回路#1に出力する。書換制御回路#1は、レジスタ書き換え情報SET_REG_1が供給されると、アドレスヒット率が最も低いアクセス判定回路#1_1〜#1_pに対応した保護領域設定レジスタ#1_1〜#1_pの保護領域情報を、アービタ61''から供給されたレジスタ書き換え情報SET_REG_1を用いて書き換える。
次に、図11、図12に示すフローチャートを用いて、本実施の形態にかかる情報処理装置の動作について説明する。以下では、一例としてコア#1(10)が備えるCPU#1が共有メモリ32にアクセスする場合について説明する。
CPU#1が共有メモリ32にアクセスする場合、CPU#1はローカルMPU#1(81)にメモリアクセス情報ACC_M_1を出力する(ステップS51)。ローカルMPU#1(81)は、メモリアクセス情報ACC_M_1に基づいてアクセス判定を行う(ステップS52)。
アクセス判定回路#1_1〜#1_pのいずれかにおいて、メモリアクセス情報ACC_M_1に含まれるメモリアドレスが保護領域設定レジスタ#1_1〜#1_pに格納されているメモリ領域に含まれると判定された場合(つまり、メモリアドレスADD_M_1がヒットした場合)、ローカルMPU#1(81)においてアクセス判定可能であると判定される(ステップS53:Yes)。そして、メモリアドレスADD_M_1がヒットし、且つ、コア#1(10)にメモリ領域32へのアクセス権限があると判定された場合(ステップS54:Yes)、判定信号生成回路#1はアクセスを許可する判定信号OUT_M_1をMPU制御部#1(13'')に出力する。この場合、MPU制御部#1(13'')はCPU#1に通知信号ACK_1としてアクセス許可通知信号を出力する。その後、CPU#1は共有メモリ32にアクセスする(ステップS55)。
一方、メモリアドレスADD_M_1がヒットしたが、コア#1(10)にメモリ領域32へのアクセス権限がない場合はアクセス不可と判定される(ステップS54:No)。そして、各々のエントリ#1_1〜#1_pにメモリ領域のオーバーラップを許している場合(ステップS56:Yes)、図12のフローチャートへと進む。つまり、各々のエントリ#1_1〜#1_pにメモリ領域のオーバーラップを許している場合は、メモリ保護回路MPU#0(60'')の他のエントリにおいてアクセス判定をする必要がある。一方、各々のエントリ#1_1〜#1_pにメモリ領域のオーバーラップを許していない場合(ステップS56:No)、アクセスを不可とする判定信号OUT_M_1をMPU制御部#1(13'')に出力する。そして、MPU制御部#1(13'')はCPU#1に通知信号ACK_1として例外通知信号を出力する。この場合は、CPU#1による共有メモリ32へのアクセスが禁止される(ステップS57)。
また、ローカルMPU#1(81)においてアクセス判定ができない場合(ステップS53:No)、つまり、メモリアドレスADD_M_1がヒットしなかった場合、判定信号生成回路#1は、アービタ61''にメモリアクセス情報ACC_M_1を出力する(図12のステップS61)。メモリアドレスADD_M_1がヒットしなかった場合とは、全てのアクセス判定回路#1_1〜#1_pにおいて、メモリアクセス情報ACC_M_1に含まれているメモリアドレスADD_M_1が保護領域設定レジスタ#1_1〜#1_pに格納されているメモリ領域に含まれていないと判定された場合である。
図12のフローチャートに示すように、判定信号生成回路#1がアービタ61''にメモリアクセス情報ACC_M_1を出力した場合(ステップS61)、アービタ61''は、メモリアクセス情報ACC_M_1とメモリアクセス情報ACC_M_2を調停後、アクセス判定回路#1〜#mにメモリアクセス情報ACC_M_1を出力する(ステップS62)。
その後、アクセス判定回路#1〜#mは保護領域設定レジスタ#1〜#mとメモリアクセス情報ACC_M_1とに基づきアクセス判定を行う(ステップS63)。つまり、メモリアクセス情報ACC_M_1に含まれるメモリアドレスADD_M_1が、各エントリ#1〜#m(つまり、保護領域設定レジスタ#1〜#mに格納されているメモリ領域#1〜#m)に含まれているか判定する。そして、メモリアドレスADD_M_1が、エントリ#1〜#mに含まれていない場合(ステップS64:No)、アクセス判定回路#1〜#mはアクセス不可を示す判定結果を出力する。このとき、判定信号生成回路#0はアクセス不可を示す判定信号OUT_1を生成してアービタ61''に出力する(ステップS66)。
一方、メモリアドレスADD_M_1が、エントリ#1〜#mに含まれており(ステップS64:Yes)、更に、CPU#1による共有メモリ32へのアクセスの内容(読み出し、書き込み、実行等)が許可されている場合(ステップS65:Yes)、アクセス判定回路#1〜#mはアクセス許可を示す判定結果を出力する。このとき、判定信号生成回路#0はアクセス許可を示す判定信号OUT_1を生成してアービタ61''に出力する(ステップS67)。ここで、CPU#1による共有メモリ32へのアクセスの内容が許可されている場合とは、例えばCPU#1による共有メモリ32へのアクセスの内容が保護領域設定レジスタ#1〜#mの属性レジスタにて許可されている場合である。また、判定信号生成回路#0は、レジスタ書き換え情報SET_REG_1として、ヒットしたメモリアドレスADD_M_1に対応する保護領域情報を、アービタ61''を介して書換制御回路#1に出力する。
また、メモリアドレスADD_M_1が、エントリ#1〜#mに含まれており(ステップS64:Yes)、更に、CPU#1による共有メモリ32へのアクセスの内容が許可されていない場合(ステップS65:No)、アクセス判定回路#1〜#mはアクセス不可を示す判定結果を出力する。このとき、判定信号生成回路#0はアクセス不可を示す判定信号OUT_1を生成してアービタ61''に出力する(ステップS68)。また、判定信号生成回路#0は、レジスタ書き換え情報SET_REG_1として、ヒットしたメモリアドレスADD_M_1に対応する保護領域情報を、アービタ61''を介して書換制御回路#1に出力する。
書換制御回路#1にレジスタ書き換え情報SET_REG_1が供給されると(ステップS67、S68)、書換制御回路#1は、アクセス判定回路#1_1〜#1_pのうちアドレスヒット率が最も低いアクセス判定回路に対応した保護領域設定レジスタ#1_1〜#1_pの保護領域情報を、レジスタ書き換え情報SET_REG_1を用いて書き換える(ステップS69)。
また、アービタ61''はMPU制御部#1(13'')に判定信号OUT_1を出力する。そして、判定信号OUT_1がアクセス許可を示す場合(ステップS70:Yes)、MPU制御部#1(13'')はCPU#1に通知信号ACK_1としてアクセス許可通知信号を出力する。その後、CPU#1は共有メモリ32にアクセスする(ステップS71)。一方、判定信号OUT_1がアクセス不可を示す場合(ステップS70:No)、MPU制御部#1(13'')はCPU#1に通知信号ACK_1として例外通知信号を出力する(ステップS72)。この場合は、CPU#1による共有メモリ32へのアクセスが禁止される。
以上で説明したように、本実施の形態にかかる情報処理装置においても実施の形態3で説明した情報処理装置と同様に、情報処理装置の消費電力を低減させつつ、処理速度を高速化することができる。
なお、例えば、上記では2つのコアを備える情報処理装置について説明したが、各実施の形態で説明した情報処理装置は3つ以上のコアを備えていてもよい。
また、実施の形態1では、情報処理装置が共有リソース#0(30)として共有レジスタ#0(50)およびメモリ保護回路MPU#0(60)を備える場合を例として説明した。しかし実施の形態1にかかる情報処理装置は、共有レジスタ#0(50)のみを備えている構成であってもよい(つまり、メモリ保護回路MPU#0(60)を備えていなくてもよい)。一方、実施の形態2乃至4にかかる情報処理装置では、共有リソース#0(30)として少なくともメモリ保護回路MPU#0(60)を備えていればよく、共有レジスタ#0(50)を備えることは必須ではない。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
1 情報処理装置
10 コア#1
11 演算部#1
12 共有レジスタ制御部#1
13 MPU制御部#1
14 レジスタ#1
20 コア#2
21 演算部#2
22 共有レジスタ制御部#2
23 MPU制御部#2
24 レジスタ#2
30 共有リソース#0
31 システムバス
32 共有メモリ
33 周辺バス
34 排他制御部
35 周辺モジュール
50 共有レジスタ#0
51 マシン設定レジスタ#0
52 仮想化設定レジスタ#0
60 メモリ保護回路
61 アービタ
71、72 ローカルメモリ保護回路

Claims (19)

  1. 複数のコアと、
    前記複数のコアで共有可能な共有リソースと、
    前記複数のコアの各々に固有の設定情報が格納されたローカルレジスタと、を備え、
    前記共有リソースは前記複数のコアとは独立に設けられており、
    前記ローカルレジスタは前記複数のコアの各々に設けられている、
    情報処理装置。
  2. 前記共有リソースは、前記複数のコアを含むマシンの設定情報が格納された共有レジスタを含む、請求項1に記載の情報処理装置。
  3. 前記複数のコアの各々は、前記各々のコアによる前記共有レジスタへの書き込み及び読み出しを制御する共有レジスタ制御部を備える、請求項2に記載の情報処理装置。
  4. 前記共有レジスタは、前記複数のコアを含むマシンが従う設定情報が格納されたマシン設定レジスタを含む、請求項3に記載の情報処理装置。
  5. 前記共有レジスタは、前記複数のコアを含むマシンを仮想マシンとして使用する場合の設定情報が格納された仮想化設定レジスタを含む、請求項3に記載の情報処理装置。
  6. 前記共有リソースは、前記各々のコアによる不正なアクセスから共有メモリを保護するメモリ保護回路を含む、請求項1に記載の情報処理装置。
  7. 前記複数のコアの各々は、前記共有メモリにアクセスする際に前記メモリ保護回路にメモリアクセス情報を出力する、請求項6に記載の情報処理装置。
  8. 前記メモリ保護回路は、
    前記共有メモリの保護領域に関する保護領域情報が格納された第1の保護領域設定レジスタと、
    前記第1の保護領域設定レジスタに対応するように設けられ、前記メモリアクセス情報と前記第1の保護領域設定レジスタに格納されている前記保護領域情報とに基づいて前記各々のコアによる前記共有メモリへのアクセスの可否を判定する第1のアクセス判定回路と、を備える、
    請求項7に記載の情報処理装置。
  9. 前記メモリ保護回路は更に、前記各々のコアによる前記共有メモリへのアクセスの可否の判定を調停するアービタを備える、請求項8に記載の情報処理装置。
  10. 前記第1の保護領域設定レジスタには、前記共有メモリのメモリ領域に対応するアドレス情報と前記各々のコアが前記メモリ領域にアクセスする際の権限に関する権限情報とが格納されている、請求項8に記載の情報処理装置。
  11. 前記アクセス判定回路は、前記メモリアクセス情報に含まれているメモリアドレスが前記第1の保護領域設定レジスタに格納されている前記メモリ領域に含まれており、且つ、前記コアに前記メモリ領域へのアクセス権限がある場合に、前記コアが前記共有メモリにアクセス可能であると判定する、請求項10に記載の情報処理装置。
  12. 前記複数のコアの各々は、前記メモリ保護回路による判定の前に前記複数のコアの各々が前記共有メモリにアクセス可能であるか否かを判定するローカルメモリ保護回路を更に備える、請求項6に記載の情報処理装置。
  13. 前記各々のローカルメモリ保護回路は、
    前記共有メモリの保護領域に関する保護領域情報が格納された第2の保護領域設定レジスタと、
    前記第2の保護領域設定レジスタに対応するように設けられ、前記メモリアクセス情報と前記第2の保護領域設定レジスタに格納されている前記保護領域情報とに基づいて前記各々のコアによる前記共有メモリへのアクセスの可否を判定する第2のアクセス判定回路と、を備える、
    請求項12に記載の情報処理装置。
  14. 前記メモリ保護回路は、
    前記共有メモリの保護領域に関する保護領域情報が格納された第1の保護領域設定レジスタと、
    前記メモリアクセス情報に含まれているメモリアドレスが前記第2の保護領域設定レジスタに格納されているメモリ領域に含まれていない場合に、前記メモリアドレスが前記第1の保護領域設定レジスタに格納されているメモリ領域に含まれているか否かを判定する領域判定回路と、を備える、
    請求項13に記載の情報処理装置。
  15. 前記ローカルメモリ保護回路は、前記領域判定回路において、前記メモリアドレスが前記第1の保護領域設定レジスタに格納されているメモリ領域に含まれていると判定された場合、前記第2の保護領域設定レジスタに格納されている保護領域情報を前記第1の保護領域設定レジスタに格納されている保護領域情報を用いて書き換える書換制御回路を更に備え、
    前記第2のアクセス判定回路は、前記第2の保護領域設定レジスタが書き換えられた後、再度、前記メモリアクセス情報と前記第2の保護領域設定レジスタに格納されている書き換え後の保護領域情報とに基づいて前記コアによる前記共有メモリへのアクセスの可否を判定する、
    請求項14に記載の情報処理装置。
  16. 前記メモリ保護回路は、
    前記共有メモリの保護領域に関する保護領域情報が格納された第1の保護領域設定レジスタと、
    前記メモリアクセス情報に含まれているメモリアドレスが前記第2の保護領域設定レジスタに格納されているメモリ領域に含まれていない場合に、前記コアによる前記共有メモリへのアクセスの可否を判定する第1のアクセス判定回路と、を備える、
    請求項13に記載の情報処理装置。
  17. 前記ローカルメモリ保護回路は、前記第2の保護領域設定レジスタに格納されている保護領域情報を前記メモリ保護回路が備える前記第1の保護領域設定レジスタに格納されている保護領域情報を用いて書き換える書換制御回路を更に備える、請求項16に記載の情報処理装置。
  18. 前記第2の保護領域設定レジスタに格納されているメモリ領域の数は、前記第1の保護領域設定レジスタに格納されているメモリ領域の数よりも少ない、請求項15または17に記載の情報処理装置。
  19. 前記書換制御回路は、前記第2のアクセス判定回路から出力された判定結果に基づいて前記第2のアクセス判定回路の各々におけるアドレスヒット率を求め、当該アドレスヒット率が最も低い第2のアクセス判定回路に対応した第2の保護領域設定レジスタに格納されている保護領域情報を前記第1の保護領域設定レジスタに格納されている保護領域情報を用いて書き換える、請求項15または17に記載の情報処理装置。
JP2012229907A 2012-10-17 2012-10-17 情報処理装置 Pending JP2014081819A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2012229907A JP2014081819A (ja) 2012-10-17 2012-10-17 情報処理装置
US14/052,138 US9318167B2 (en) 2012-10-17 2013-10-11 Information processing apparatus
CN201310487396.2A CN103778099B (zh) 2012-10-17 2013-10-17 信息处理设备
US15/064,066 US9740636B2 (en) 2012-10-17 2016-03-08 Information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012229907A JP2014081819A (ja) 2012-10-17 2012-10-17 情報処理装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2016163232A Division JP6235088B2 (ja) 2016-08-24 2016-08-24 情報処理装置

Publications (1)

Publication Number Publication Date
JP2014081819A true JP2014081819A (ja) 2014-05-08

Family

ID=50476510

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012229907A Pending JP2014081819A (ja) 2012-10-17 2012-10-17 情報処理装置

Country Status (3)

Country Link
US (2) US9318167B2 (ja)
JP (1) JP2014081819A (ja)
CN (1) CN103778099B (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018097719A (ja) * 2016-12-15 2018-06-21 ルネサスエレクトロニクス株式会社 データ処理装置、及びアクセス制御方法
JP2021531583A (ja) * 2018-07-27 2021-11-18 アーム・リミテッド メモリ・システム内に記憶されている制御テーブルのための二分探索手順
JP2022552149A (ja) * 2019-10-04 2022-12-15 ロベルト・ボッシュ・ゲゼルシャフト・ミト・ベシュレンクテル・ハフツング 共有して利用されるメモリ手段を利用するための方法、コンピュータプログラム、記憶媒体、メモリ手段、およびシステム

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160283272A1 (en) * 2015-03-25 2016-09-29 Intel Corporation Shared resource access control method and apparatus
DE102015210539A1 (de) * 2015-06-09 2016-12-15 Robert Bosch Gmbh Speicherschutzeinheit, Speicherverwaltungseinheit und Mikrocontroller
GB2543520B (en) * 2015-10-20 2019-06-19 Advanced Risc Mach Ltd Memory access instructions
DE102016222691A1 (de) * 2015-12-15 2017-06-22 Continental Teves Ag & Co. Ohg Mikrocontrollersystem und Verfahren zur Kontrolle von Speicherzugriffen in einem Mikrocontrollersystem

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07219913A (ja) * 1994-01-28 1995-08-18 Fujitsu Ltd マルチプロセッサシステムの制御方法及び装置
WO2007141849A1 (ja) * 2006-06-07 2007-12-13 Hitachi, Ltd. 半導体集積回路
JP2008097173A (ja) * 2006-10-10 2008-04-24 Renesas Technology Corp データプロセッサ
JP2008217623A (ja) * 2007-03-07 2008-09-18 Renesas Technology Corp データプロセッサ
JP2009251967A (ja) * 2008-04-07 2009-10-29 Toyota Motor Corp マルチコアシステム
US7734903B2 (en) * 2005-12-08 2010-06-08 Electronics And Telecommunications Research Institute Multi-processor system and method for controlling reset and processor ID thereof
US20120246441A1 (en) * 2011-03-25 2012-09-27 Kabushiki Kaisha Toshiba Information processor and multi-core system

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7404015B2 (en) * 2002-08-24 2008-07-22 Cisco Technology, Inc. Methods and apparatus for processing packets including accessing one or more resources shared among processing engines

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07219913A (ja) * 1994-01-28 1995-08-18 Fujitsu Ltd マルチプロセッサシステムの制御方法及び装置
US7734903B2 (en) * 2005-12-08 2010-06-08 Electronics And Telecommunications Research Institute Multi-processor system and method for controlling reset and processor ID thereof
WO2007141849A1 (ja) * 2006-06-07 2007-12-13 Hitachi, Ltd. 半導体集積回路
JP2008097173A (ja) * 2006-10-10 2008-04-24 Renesas Technology Corp データプロセッサ
JP2008217623A (ja) * 2007-03-07 2008-09-18 Renesas Technology Corp データプロセッサ
JP2009251967A (ja) * 2008-04-07 2009-10-29 Toyota Motor Corp マルチコアシステム
US20120246441A1 (en) * 2011-03-25 2012-09-27 Kabushiki Kaisha Toshiba Information processor and multi-core system
JP2012203698A (ja) * 2011-03-25 2012-10-22 Toshiba Corp 情報処理装置およびマルチコアシステム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018097719A (ja) * 2016-12-15 2018-06-21 ルネサスエレクトロニクス株式会社 データ処理装置、及びアクセス制御方法
JP2021531583A (ja) * 2018-07-27 2021-11-18 アーム・リミテッド メモリ・システム内に記憶されている制御テーブルのための二分探索手順
JP7397057B2 (ja) 2018-07-27 2023-12-12 アーム・リミテッド メモリ・システム内に記憶されている制御テーブルのための二分探索手順
US11907301B2 (en) 2018-07-27 2024-02-20 Arm Limited Binary search procedure for control table stored in memory system
JP2022552149A (ja) * 2019-10-04 2022-12-15 ロベルト・ボッシュ・ゲゼルシャフト・ミト・ベシュレンクテル・ハフツング 共有して利用されるメモリ手段を利用するための方法、コンピュータプログラム、記憶媒体、メモリ手段、およびシステム

Also Published As

Publication number Publication date
US9318167B2 (en) 2016-04-19
CN103778099B (zh) 2018-05-15
US9740636B2 (en) 2017-08-22
US20160188493A1 (en) 2016-06-30
US20140108719A1 (en) 2014-04-17
CN103778099A (zh) 2014-05-07

Similar Documents

Publication Publication Date Title
US9740636B2 (en) Information processing apparatus
JP5914145B2 (ja) メモリ保護回路、処理装置、およびメモリ保護方法
US7886098B2 (en) Memory access security management
US9465753B2 (en) Memory management unit that applies rules based on privilege identifier
JP4519738B2 (ja) メモリアクセス制御装置
KR20170031697A (ko) 이종 공유된 가상 메모리에서 온-디맨드 공유가능성 변환
US12079379B2 (en) Peripheral component interconnect express protection controller
US10073644B2 (en) Electronic apparatus including memory modules that can operate in either memory mode or storage mode
JP2008250373A (ja) マルチプロセッサシステム
JP2013161299A (ja) 情報処理装置、インタフェースアクセス方法
JPWO2010097925A1 (ja) 情報処理装置
JP5499987B2 (ja) 共有キャッシュメモリ装置
US10031862B2 (en) Memory protection unit, memory management unit, and microcontroller
JP6235088B2 (ja) 情報処理装置
JP2011070528A (ja) マルチプロセッサシステム及びメモリアクセス制御方法
US12007902B2 (en) Configurable memory system and memory managing method thereof
US20230342458A1 (en) Techniques to mitigate cache-based side-channel attacks
RU2780973C2 (ru) Ответ с идентификатором функции процессора для виртуализации
JP2002049531A (ja) メモリ領域境界検出方法及びコンピュータシステム
JP2017068806A (ja) 情報処理装置および情報処理方法
JP5324676B2 (ja) プロセッサ、バスインターフェース装置、およびコンピュータシステム
JP2011215752A (ja) 制御回路、画像形成装置および外部デバイスアクセス制御方法
JP2010244584A (ja) 半導体装置、バスインターフェース装置、およびコンピュータシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150820

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160518

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160628

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20170110