JP2009199414A - マイクロコンピュータ - Google Patents

マイクロコンピュータ Download PDF

Info

Publication number
JP2009199414A
JP2009199414A JP2008041291A JP2008041291A JP2009199414A JP 2009199414 A JP2009199414 A JP 2009199414A JP 2008041291 A JP2008041291 A JP 2008041291A JP 2008041291 A JP2008041291 A JP 2008041291A JP 2009199414 A JP2009199414 A JP 2009199414A
Authority
JP
Japan
Prior art keywords
cpu
task
memory
address
data area
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
JP2008041291A
Other languages
English (en)
Inventor
Kenta Morishima
憲太 森島
Naoki Kato
直樹 加藤
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 Technology Corp
Original Assignee
Renesas Technology 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 Technology Corp filed Critical Renesas Technology Corp
Priority to JP2008041291A priority Critical patent/JP2009199414A/ja
Priority to US12/369,055 priority patent/US8095742B2/en
Publication of JP2009199414A publication Critical patent/JP2009199414A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0284Multiple user address space allocation, e.g. using different base addresses
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • 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/1016Performance improvement

Abstract

【課題】負荷分散のためCPU間でタスクを移行する場合の演算性能の低下を回避する。
【解決手段】マイクロコンピュータ(1)は、第1CPU(10)と、第1バス(70)と、第1メモリ(50)と、第2CPU(20)と、第2バス(80)と、第2メモリ(60)とを含む。上記第1メモリ及び上記第2メモリは、それぞれ対応する上記第1CPU及び上記第2CPUによって個別的に管理されるアドレス空間に配置される。そして、上記第1メモリ内にデータ領域を持つようにプログラムされたタスクが上記2メモリに転送されて上記第2CPUで実行される場合、上記タスクによる上記第1メモリへのアクセスが上記第2メモリへのアクセスとなるように、上記第2CPUから出力されたアドレスを変換するためのアドレス変換回路(160)を設ける。アクセスサイクル数を削減して、負荷分散のためCPU間でタスクを移行する場合の演算性能の低下を回避する。
【選択図】図1

Description

本発明は、マイクロコンピュータ、さらにはそれに含まれる複数のプロセッサが協調して処理を進める並列分散処理技術に関する。
マイクロコンピュータはマイクロプロセッサとも称される。組込み機器の分野でも処理能力の向上にともない消費電力あたりの処理性能が高いマルチコア構成のマイクロプロセッサ(「マルチコアプロセッサ」と称される)に注目が集まっている。
マルチコア構成のマイクロプロセッサは、対称型プロセッサ(SMP:Symmetric Multi Processor)と、非対称型プロセッサ(AMP:Asymmetric Multi Processor)の構成に分けられる。対称型プロセッサ(SMP)は、搭載されている複数CPU毎の用途が完全に対等に動作し、どのCPUでも同じような動作処理可能とされる。つまり、マスター動作のCPUが存在せず、オペレーティングシステム(OP)機能などをすべてのCPUが分担して動作処理するシステムである。対称型プロセッサSMPは、タスクをスレッドに分けてプロセスを振り分けてどのプロセッサでも分散実行可能であるため、タスクの実行時間や実行順序に関して確実性に乏しく、リアルタイム性にかけるところがある。
対称型プロセッサを含むシステムでは、各スレッドをCPUごとに割り当てて実行させることによって、CPU個数に比例したスレッドを同時実行ができ、それによってシステム全体の処理向上を図ることができる。これに対して非対称型プロセッサ(AMP)においては、予めCPU毎の用途が決められており、各CPUは、所定の用途以外には使用されない。
並列分散処理システムについて記載された文献の例としては、特許文献1を挙げることができる。特許文献1にかかる並列分散処理システムでは、各プロセッサのアドレス空間を、複数のスレッドが共有する空間と、スタック等のスレッド間で共有しない空間とに分割される。各プロセッサにCPUアドレス/論理アドレス変換回路を設け、後者の非共有空間へのアクセスの場合には、そのアクセス要求アドレスにベース・レジスタの値を加えてアドレス変換を行うことにより、スタック等のアドレス空間を相対化して任意に平行移動できるようにしている。
特開平9−146904号公報
非対称型プロセッサでは、事前にコア毎にタスクの割り振りを決める必要があり、その場合高負荷時には、一方のCPUに負荷がかかりCPU処理性能が不足し所定時間内にタスクが実行できなくなる可能性がある。負荷を事前に予測し完璧にタスクの振り分けを行うことは困難である。そこで、第1CPUで所定時間内に処理しきれない可能性がある場合に、第2CPUにタスクの移動を行い実行(処理)させる方式が本願発明者によって検討された。それによれば、例えば第1CPUコアで実行されていたある周期タスクを次の周期から第2CPUで実行しようとする場合、タスクの静的変数は、第1CPUのローカルメモリにあるので、第2CPUから該タスクの第1CPUのローカルメモリに毎回アクセスしに行くことになり、第1CPUで実行する場合に比べて静的変数へのアクセスレイテンシが増大することになる。さらに、第1CPUと第2CPUの間で第1ローカルメモリへのアクセス競合が発生する可能性が増大し、演算性能の低下が想定される。このようにCPU毎にローカルメモリをもつマルチコアの非対称型プロセッサにおいて、負荷分散のためCPU間でタスクを移行する場合、アクセスレイテンシの大きい他のCPUのローカルメモリに頻繁にアクセスすることや、片方のローカルメモリにアクセスが集中し競合が発生するために性能が劣化することが本願発明者によって見いだされた。
本発明の目的は、負荷分散のためCPU間でタスクを移行する場合の演算性能の低下を回避するための技術を提供することにある。
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される発明のうち代表的なものについて簡単に説明すれば下記のとおりである。
すなわち、マイクロコンピュータは、第1CPUと、第1バスと、第1メモリと、第2CPUと、第2バスと、第2メモリとを含む。上記第1メモリ及び上記第2メモリは、それぞれ対応する上記第1CPU及び上記第2CPUによって個別的に管理されるアドレス空間に配置される。そして、上記第1メモリ内にデータ領域を持つようにプログラムされたタスクが上記2メモリに転送されて上記第2CPUで実行される場合、上記タスクによる上記第1メモリへのアクセスが上記第2メモリへのアクセスとなるように、上記第2CPUから出力されたアドレスを変換するためのアドレス変換回路(160)を設ける。アクセスサイクル数を削減して、負荷分散のためCPU間でタスクを移行する場合の演算性能の低下を回避する。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
すなわち、負荷分散のためCPU間でタスクを移行する場合の演算性能の低下を回避することができる。
1.代表的な実施の形態
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
〔1〕本発明の代表的な実施の形態に係るマイクロコンピュータ(1)は、所定のタスクを処理可能な第1CPU(10)と、上記第1CPUに結合された第1バス(70)と、上記第1バスを介して上記1CPUによってアクセス可能な第1メモリ(50)と、所定のタスクを処理可能な第2CPU(20)と、上記第2CPUに結合された第2バス(80)と、上記第2バスを介して上記2CPUによってアクセス可能な第2メモリ(60)とを含む。上記第1メモリ及び上記第2メモリは、それぞれ対応する上記第1CPU及び上記第2CPUによって個別的に管理されるアドレス空間に配置される。そして、上記第1メモリ内にデータ領域を持つようにプログラムされたタスクが上記2メモリに転送されて上記第2CPUで実行される場合、上記タスクによる上記第1メモリへのアクセスが上記第2メモリへのアクセスとなるように、上記第2CPUから出力されたアドレスを変換するためのアドレス変換回路(160)を含む。
上記の構成によれば、上記第1メモリ内にデータ領域を持つようにプログラムされたタスクが上記2メモリに転送されて上記第2CPUで実行される場合、上記タスクによる上記第1メモリへのアクセスが上記第2メモリへのアクセスとなるように、上記第2CPUから出力されたアドレスが変換されるので、第1CPUと第2CPUとで共通のコードを使用しながら、第2CPUでタスク実行時も、静的変数へのアクセスは、第2メモリへのアクセスとすることができ、それによってアクセスサイクル数の削減ができる。このことが、負荷分散のためCPU間でタスクを移行する場合の演算性能の低下を回避する。
〔2〕タスク毎にデータ領域のアドレス範囲を記憶するテーブルを含み、タスク実行において上記テーブルを参照することができる。
〔3〕上記第1メモリ内にデータ領域を持つようにプログラムされたタスクが上記第2CPUで処理される場合、上記第1メモリ内のデータ領域が上記第2メモリ内に複写され、上記第2CPUで上記タスクの処理が終了された後、上記第1メモリ内のデータ領域が上記第2メモリ内のデータによって更新されるように構成することができる。
〔4〕上記タスクのデータ領域の最新の値を保持するのが第1メモリであるか第2メモリであるかを識別可能なフラグを備え、実行するCPUが自己のローカルメモリ内に有効なデータ領域を保持していない場合には、他方のCPUのローカルメモリから自己のローカルメモリへとデータ領域の値を複写し、前記タスクを実行終了後、自己のローカルメモリのデータ領域が有効であるようにフラグを変更するように構成することができる。
〔5〕上記アドレス変換回路は、上記第1メモリにおけるタスク毎の先頭アドレスを保持可能な第1レジスタ(163)と、上記タスクのサイズ情報を保持可能な第2レジスタ(164)と、上記第2メモリにおけるタスク毎の先頭アドレスを保持可能な第3レジスタ(165)と、上記第2CPUから出力されたアドレスが、上記第1レジスタの保持情報と上記第2レジスタの保持情報とによって決定されるアドレス範囲に入っているか否かの判定を行う判定部(161)と、上記第2CPUから出力されたアドレスが上記アドレス範囲に入っている場合に、上記第2CPUから出力されたアドレスに上記第3レジスタの保持情報を加算することで、アドレス変換を行う変換部(162)とを含んで構成することができる。
2.実施の形態の説明
次に、実施の形態について更に詳述する。
<実施形態1>
図1には、本発明にかかるマイクロコンピュータの構成例が示される。図1に示されるマイクロコンピュータ1は、いわゆるローカルメモリとメモリのアクセスコストが均一でないNUMA(Non-Uniform Memory Access)タイプのマイクロコンピュータとされる。このマイクロコンピュータは、特に制限されないが、CPU(中央処理装置)10,20、ROM(リードオンリーメモリ)30、I/Oポート40、URAM(ローカルメモリ)50,60、マルチプレクサ51,52、BSC(バスステートコントローラ)100,110、DMAC(ダイレクトメモリアクセスコントローラ)130、及びADT(アドレス変換回路)160を含み、公知の半導体集積回路製造技術により、単結晶シリコン基板などの一つの半導体基板に形成される。
上記CPU10,20は、それぞれ予め設定されたタスクを実行する。CPU10はCPUバス70に結合され、CPU20は、アドレス変換回路160を介してCPUバス80に結合される。アドレス変換回路160では、後に詳述するように、上記CPU20から出力されたアドレスを必要に応じて変換することができる。上記ROM30は、第1ポートと第2ポートを有し、上記CPU10,20で実行されるタスクや、後に詳述するタスク変数テーブルなどが格納されている。上記ROM30の第1ポートは上記CPUバス70に結合され、上記CPU10は、上記CPUバス70を介して上記ROM30にアクセス可能とされる。上記ROM30の第2ポートは上記CPUバス80に結合され、上記CPU20は、上記CPUバス80を介して上記ROM30にアクセス可能とされる。上記URAM50は、マルチプレクサ51を介してCPUバス70に結合され、上記URAM60は、マルチプレクサ52を介してCPUバス80に結合される。上記URAM50,60は、ランダムアクセス可能なスタティック型メモリとされる。上記URAM50は、上記CPU10によって管理されるアドレス空間に配置され、CPU10でのタスク実行に必要な各種情報の記憶領域として利用される。上記URAM60は、上記CPU20によって管理されるアドレス空間に配置され、CPU20でのタスク実行に必要な各種情報の記憶領域として利用される。また、上記URAM50,60は、それぞれ経路選択のためのマルチプレクサ51,52を介してシステムバス90に結合される。このシステムバス90には、BSC100,110、DMAC130、及びI/Oポート40が結合される。BSC100は、上記CPUバス70とシステムバス90との間でバスステートを制御する。BSC110は、上記CPUバス80とシステムバス90との間でバスステートを制御する。DMAC130は、システムバス90のバス権を獲得して、上記URAM50,60間のDMA転送を制御する。上記I/Oポート40は、このマイクロコンピュータ1の外部との間で各種データのやり取りを可能にする。
マイクロコンピュータでよく使われるプログラミング言語であるC言語では、メモリ空間がコード、データ、スタック、ヒープの4領域に分けられる。コード領域には、プログラム(タスク)が格納される。本例においてプログラム(タスク)はROM30に格納される。そして、URAM(0)50には、CPU10で実行されるプログラム(タスク)におけるデータ領域(DATA)501、スタック領域(STACK)502、ヒープ領域(HEAP)503が形成される。上記データ領域(DATA)501には、タスクnの変数504の記憶領域が含まれる。スタック領域(STACK)502には、関数の戻り先や、自動変数(サブルーチン呼び出し時に内容が不定になる)が格納され、データ領域(DATA)501には、静的変数(グローバル変数、ローカル変数)が格納され、ヒープ領域(HEAP)503には、malloc()等で確保される動的変数が格納される。尚、図示されないが、URAM(1)60には、CPU20で実行されるプログラム(タスク)におけるデータ領域(DATA)、スタック領域(STACK)、ヒープ領域(HEAP)が形成される。
図3には、タスク実行の際に参照されるタスク変数テーブル200の構成例が示される。このタスク変数テーブル200は、CPU10,20間で移行対象のタスク毎にデータ領域の静的変数の割り当てられたアドレスとサイズが示される。図3に示されるタスク変数テーブル200において、CPU10やCPU20で実行されるタスクは、A,B,C,D,…によって区別される。そしてこのタスク毎にURAM(0)50の先頭アドレス(R1)、サイズ(R2)、URAM60の先頭アドレス、及び有効URAMの識別フラグ(flag)が設定される。ここで、有効URAMの識別フラグ(flag)は、前回のタスク実行に使用されたローカルメモリを示す。例えば有効URAMの識別フラグ(flag)が論理値“0”であれば、前回のタスク実行にはURAM(0)50が使用されたことを示し、有効URAMの識別フラグ(flag)が論理値“1”であれば、前回のタスク実行にはURAM(1)60が使用されたことを示す。特に制限されないが、上記タスク変数テーブル200は、マイクロコンピュータ1の初期化によってURAM(0)50に形成される。
図4には、上記アドレス変換回路160の構成例が示される。
上記アドレス変換回路160は、図4に示されるように、判定部(JUD)161、変換部(CHG)162、及びレジスタ163〜165を含む。レジスタ163には、URAM(0)50におけるタスク毎の先頭アドレス(R1)が設定される。レジスタ164には、タスク毎のサイズ(R2)が設定される。レジスタ165には、URAM(1)60におけるタスク毎の先頭アドレス(R3)が設定される。判定部161は、上記CPU20の出力アドレス(address)が、所定のアドレス範囲に入っているか否かの判定が行われる。ここで、「所定のアドレス範囲」とは、R1とR2とによって決定されるアドレス範囲を指す。上記CPU20の出力アドレスが、上記所定のアドレス範囲に入っていない場合には、判定部161の指示により、変換部162は、上記CPU20から伝達されたアドレス(address)をそのまま出力する(address out)。これに対して、上記CPU20の出力アドレスが、上記所定のアドレス範囲に入っている場合には、判定部161の指示により、変換部162は、上記CPU20から伝達されたアドレス(address)にオフセットアドレスを加算してそれを出力する(address out)。ここで、オフセットアドレスとは、URAM(1)60におけるタスク毎の先頭アドレスR3を指す。このオフセットアドレスが加算されることによって、上記CPU20の出力アドレスがURAM(1)60の対応アドレスに変換される。
次に、上記構成の動作を説明する。
図5には、タスクスケジューラーがCPU10での実行を決定する場合の動作が示される。
タスクスケジューラーはCPU10で動いており、このタスクスケジューラーによってタスク管理が行われる。
処理300でタスクスケジューラが次に呼び出すタスクの実行をCPU10で実行させることに決定されると、処理310で図4に示されるタスク変数テーブル200が参照され、処理315で先の実行CPUがCPU10か否かの判定が行われる。CPU10で実行していた場合は、処理320へ分岐され、CPU20で実行していた場合は処理330で分岐される。処理320では、タスクの変数テーブル200に従い、該タスク静的変数のURAM50からURAM60へのDMA転送設定が行われ、それに従ってDMA転送が行われる。これにより、URAM50内のデータ領域がURAM60内に複写される。そして、タスク変数テーブル200の該タスクの有効URAMのフラグがURAM(1)60を示す値(論理値“1”)に変更される。処理330でアドレス変換回路160に、URAM50の静的変数領域をURAM60へ変換するように設定される。これは、あるアドレス範囲へのアクセスに関しては、アドレスにオフセットを加えることである。処理340でタスクが実行される。呼び出されたタスクは、CPU20で実行される。このとき、CPU10とCPU20で共通のコードが使用される。スタック領域は、URAM60のスタック領域にタスクの起動時に確保され、静的変数はROM30のコードはURAM50のコード領域を示しているが、アドレス変換回路160のURAM60にアクセスすることができる。これによりCPU20とCPU10で共通のコードを使用しながら、CPU20でタスク実行時も、静的変数(データ領域504)と自動変数(スタック領域502)は、CPU20のローカルメモリであるURAM60へのアクセスとすることができ、アクセスサイクル数の削減ができる。処理350で、タスク変数テーブル200の該タスクの有効URAMのフラグがURAM60を示す値に変更される。処理360で、タスク変数テーブル200に基づいて、URAM60からURAM50へタスクの静的変数のDMA転送が行われ、CPU移行の処理が完了する。
図6には、タスクスケジューラーがCPU20での実行を決定する場合の動作が示される。
処理400でタスクスケジューラが次に呼び出すタスクの実行をCPU20で実行させることに決定されると、処理410で図4に示すようなタスクテーブル200が参照され、処理415で先の実行CPUがCPU20か否かの判定が行われる。CPU20で実行していなかった場合は、処理420へ分岐され、CPU20で実行していた場合は処理430に分岐される。処理420では、タスクの変数テーブル200に従い、該タスク静的変数のURAM50からURAM60へのDMA転送設定が行われ、それに従ってDMA転送が行われる。処理430でアドレス変換回路160にURAM50の静的変数領域へのアドレスへのURAM60へ変換するように設定される。これは、あるアドレス範囲へのアクセスに関しては、アドレスにオフセットを加えることである。処理440でタスクが実行される。呼び出されたタスクは、CPU20で実行される。このとき、CPU10とCPU20で共通のコードが使用される。スタック領域は、URAM60のスタック領域にタスクの起動時に確保され、静的変数はROM30のコードはURAM50のコード領域を示しているが、アドレス変換回路160のURAM60にアクセスすることができる。これによりCPU20とCPU10で共通のコードを使用しながら、CPU20でタスク実行時も、静的変数(データ領域)と自動変数(スタック領域)は、CPU20のローカルメモリであるURAM60へのアクセスとすることができ、アクセスサイクル数の削減ができる。処理450で、タスク変数テーブル200の該タスクの有効URAMのフラグをURAM60を示す値に変更する。
上記例によれば、以下の作用効果を得ることができる。
CPU20とCPU10で共通のコードを使用しながら、CPU20でタスク実行時も、静的変数(データ領域504)と自動変数(スタック領域502)へのアクセスは、CPU20のローカルメモリであるURAM60へのアクセスとすることができ、それによってアクセスサイクル数の削減ができるので、負荷分散のためCPU間でタスクを移行する場合の演算性能の低下を回避することができる。
<実施形態2>
次に、実施形態2として、CPU20での実施時にURAM60からURAM50に毎回書き戻す場合について説明する。
図7に処理500でタスクスケジューラが次に呼び出すタスクの実行をCPU10で実行させることに決定すると、処理540でタスクを実行し、処理550でタスク変数テーブル200のタスク有効ビットをCPU10に設定する。
図8のフローチャートでタスクスケジューラが次に呼び出すタスクの実行をCPU20で実行させる場合について述べる。処理600でタスクスケジューラが次に呼び出すタスクの実行をCPU20で実行させることに決定すると、処理610で図4に示すようなタスク変数テーブル200が参照され、処理615で先の実行CPUがCPU20か否かの判定が行われる。CPU20で実行していなかった場合は、処理620へ分岐され、CPU20で実行していた場合は処理630へ分岐される。処理620では、タスクの変数テーブル200に従い該タスクの静的変数をURAM50からURAM60へのDMA転送設定が行われ、それに従ってDMA転送が行われる。処理630でアドレス変換回路160にURAM50の静的変数領域へのアドレスへのアクセスをURAM60の領域へ変換するように設定される。これは、あるアドレス範囲へのアクセスに関しては、アドレスにオフセットアドレスを加えることである。処理640でタスクの実行が行われる。呼び出されたタスクは、CPU20で実行される。このとき、CPU10とCPU20で共通のコードを使用する。スタック領域は、URAM60のスタック領域にタスクの起動時に確保され、静的変数はROM30のコードはURAM50のコード領域を示しているが、アドレス変換回路160のURAM60にアクセスすることができる。これによりCPU20とCPU10で共通のコードを使用しながら、CPU20でタスク実行時も、静的変数(データ領域)と自動変数(スタック領域)へのアクセスは、CPU20のローカルメモリであるURAM60へのアクセスとすることができ、アクセスサイクル数の削減ができる。処理650で、タスク変数テーブル200の該タスクの有効URAMのフラグがURAM60を示す値に変更される。処理660で、タスク変数テーブル200に基づいて、URAM60からURAM50へタスクの静的変数のDMA転送が行われる。これにより、URAM50の静的変数は常に最新の状態に更新され、またCPU20で続けてタスクを再度実行する場合にはURAM50からURAM60へタスクの静的変数のDMA転送を行う必要が無くなる。
以上本発明者によってなされた発明を具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
例えば、CPU10でタスク実行後に、URAM50からURAM60へタスクの変数が最新になるようにDMA転送を必ず行うようにし、CPU20でタスク実行後に、URAM60からURAM50へタスクの変数が最新になるようにDMA転送を必ず行うようにすることでタスク終了時に両方のCPUのローカルメモリの値を同一にしておく。これにより、次にタスクを実行するCPUがどちらであっても直ちに実行できるようになる。上記実施形態で示したように、ローカルメモリ間でタスクの演算に必要な静的変数をコピーすることで、他のCPUのローカルメモリに頻繁にアクセスする必要が無くなり、それによって処理性能が向上する。また、同一のプログラムコードが両方のCPUで使用可能なのでコードサイズの節約にもなる。
また、図3に示されるタスク変数テーブル200は、互いに異なる記憶媒体に分けて格納することができる。例えばURAM(0)50の先頭アドレスR1、サイズR2,URAM(1)の先頭アドレスR3については、変更を要しないので、ROM30内に格納し、有効URAMについては、更新の必要があるので、URAM50内に格納するようにしても良い。
本発明にかかるマイクロコンピュータの構成例ブロック図である。 上記マイクロコンピュータに含まれるURAMにおける記憶情報の説明図である。 上記マイクロコンピュータでのタスク実行の際に参照されるタスク変数テーブルの構成例説明図である。 上記マイクロコンピュータに含まれるアドレス変換回路の構成例ブロック図である。 上記マイクロコンピュータにおける主要動作のフローチャートである。 上記マイクロコンピュータにおける主要動作のフローチャートである。 上記マイクロコンピュータにおける主要動作のフローチャートである。 上記マイクロコンピュータにおける主要動作のフローチャートである。
符号の説明
10、20 CPU
30 ROM
40 I/Oポート
50,60 URAM
70、80 CPUバス
90 システムバス
100,110 BSC
130 DMAC
160 ADT
200 タスク変数テーブル

Claims (5)

  1. 所定のタスクを処理可能な第1CPUと、
    上記第1CPUに結合された第1バスと、
    上記第1バスを介して上記1CPUによってアクセス可能な第1メモリと、
    所定のタスクを処理可能な第2CPUと、
    上記第2CPUに結合された第2バスと、
    上記第2バスを介して上記2CPUによってアクセス可能な第2メモリと、を含み、
    上記第1メモリ及び上記第2メモリは、それぞれ対応する上記第1CPU及び上記第2CPUによって個別的に管理されるアドレス空間に配置されて成るマイクロコンピュータであって、
    上記第1メモリ内にデータ領域を持つようにプログラムされたタスクが上記2メモリに転送されて上記第2CPUで実行される場合、上記タスクによる上記第1メモリへのアクセスが上記第2メモリへのアクセスとなるように、上記第2CPUから出力されたアドレスを変換するためのアドレス変換回路を含むことを特徴とするマイクロコンピュータ。
  2. タスク毎にデータ領域のアドレス範囲を記憶するテーブルを含み、タスク実行において上記テーブルが参照される請求項1記載のマイクロコンピュータ。
  3. 上記第1メモリ内にデータ領域を持つようにプログラムされたタスクが上記第2CPUで処理される場合、上記第1メモリ内のデータ領域が上記第2メモリ内に複写され、上記第2CPUで上記タスクの処理が終了された後、上記第1メモリ内のデータ領域が上記第2メモリ内のデータによって更新される請求項1又は2記載のマイクロコンピュータ。
  4. 上記タスクのデータ領域の最新の値を保持するのが第1メモリであるか第2メモリであるかを識別可能なフラグを備え、実行するCPUが自己のローカルメモリ内に有効なデータ領域を保持していない場合には、他方のCPUのローカルメモリから自己のローカルメモリへとデータ領域の値を複写し、前記タスクを実行終了後、自己のローカルメモリのデータ領域が有効であるようにフラグを変更する請求項1又は2記載のマイクロコンピュータ。
  5. 上記アドレス変換回路は、上記第1メモリにおけるタスク毎の先頭アドレスを保持可能な第1レジスタと、
    上記タスクのサイズ情報を保持可能な第2レジスタと、
    上記第2メモリにおけるタスク毎の先頭アドレスを保持可能な第3レジスタと、
    上記第2CPUから出力されたアドレスが、上記第1レジスタの保持情報と上記第2レジスタの保持情報とによって決定されるアドレス範囲に入っているか否かの判定を行う判定部と、
    上記第2CPUから出力されたアドレスが上記アドレス範囲に入っている場合に、上記第2CPUから出力されたアドレスに上記第3レジスタの保持情報を加算することで、アドレス変換を行う変換部と、を含んで成る請求項1記載のマイクロコンピュータ。
JP2008041291A 2008-02-22 2008-02-22 マイクロコンピュータ Pending JP2009199414A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008041291A JP2009199414A (ja) 2008-02-22 2008-02-22 マイクロコンピュータ
US12/369,055 US8095742B2 (en) 2008-02-22 2009-02-11 Microcomputer with address translation circuit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008041291A JP2009199414A (ja) 2008-02-22 2008-02-22 マイクロコンピュータ

Publications (1)

Publication Number Publication Date
JP2009199414A true JP2009199414A (ja) 2009-09-03

Family

ID=40999458

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008041291A Pending JP2009199414A (ja) 2008-02-22 2008-02-22 マイクロコンピュータ

Country Status (2)

Country Link
US (1) US8095742B2 (ja)
JP (1) JP2009199414A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9021217B2 (en) 2010-11-16 2015-04-28 Fujitsu Limited Communication apparatus, load distribution method, and recording medium
WO2015128933A1 (ja) * 2014-02-25 2015-09-03 株式会社日立製作所 データ処理装置及びセキュア通信方法

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101516580B1 (ko) * 2009-04-22 2015-05-11 삼성전자주식회사 컨트롤러, 이를 포함하는 데이터 저장 장치 및 데이터 저장 시스템, 및 그 방법
US9954875B2 (en) 2009-06-26 2018-04-24 International Business Machines Corporation Protecting from unintentional malware download
US10628579B2 (en) * 2009-06-26 2020-04-21 International Business Machines Corporation System and method for supporting secure objects using a memory access control monitor
US8751720B2 (en) * 2010-11-08 2014-06-10 Moon J. Kim Computationally-networked unified data bus
US9489228B2 (en) * 2012-11-27 2016-11-08 Red Hat Israel, Ltd. Delivery of events from a virtual machine to a thread executable by multiple host CPUs using memory monitoring instructions
JP6580138B2 (ja) 2014-12-15 2019-09-25 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation セキュア・オブジェクトをサポートするプロセッサ、方法およびコンピュータ・プログラム
JP6645467B2 (ja) * 2017-03-28 2020-02-14 株式会社デンソー マイクロコンピュータ

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07319839A (ja) * 1994-05-23 1995-12-08 Hitachi Ltd 分散共有メモリ管理方法及びネットワーク計算機システム
JPH09146904A (ja) * 1995-11-29 1997-06-06 Fujitsu Ltd アドレス空間共有システム
JP2006221638A (ja) * 2005-02-07 2006-08-24 Sony Computer Entertainment Inc タスク変更アプリケーションプログラミングインタフェースを提供する方法及び装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4226816B2 (ja) * 2001-09-28 2009-02-18 株式会社東芝 マイクロプロセッサ

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07319839A (ja) * 1994-05-23 1995-12-08 Hitachi Ltd 分散共有メモリ管理方法及びネットワーク計算機システム
JPH09146904A (ja) * 1995-11-29 1997-06-06 Fujitsu Ltd アドレス空間共有システム
JP2006221638A (ja) * 2005-02-07 2006-08-24 Sony Computer Entertainment Inc タスク変更アプリケーションプログラミングインタフェースを提供する方法及び装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9021217B2 (en) 2010-11-16 2015-04-28 Fujitsu Limited Communication apparatus, load distribution method, and recording medium
WO2015128933A1 (ja) * 2014-02-25 2015-09-03 株式会社日立製作所 データ処理装置及びセキュア通信方法

Also Published As

Publication number Publication date
US20090216974A1 (en) 2009-08-27
US8095742B2 (en) 2012-01-10

Similar Documents

Publication Publication Date Title
JP2009199414A (ja) マイクロコンピュータ
TWI537831B (zh) 多核心處理器、用於執行處理程序切換之方法、用於保全一記憶體區塊之方法、用於致能使用一多核心裝置之異動處理之設備、以及用於執行記憶體異動處理之方法
JP5498505B2 (ja) データバースト間の競合の解決
US20120110303A1 (en) Method for Process Synchronization of Embedded Applications in Multi-Core Systems
JP2008130056A (ja) 半導体回路
US7581054B2 (en) Data processing system
JP2014075147A (ja) システム管理モードのためのプロセッサにおける状態記憶の提供
JP4874165B2 (ja) マルチプロセッサシステム及びマルチプロセッサシステムにおけるアクセス権設定方法
CN112074820B (zh) 用于多内核系统的存储器池分配
US7882327B2 (en) Communicating between partitions in a statically partitioned multiprocessing system
US20150082082A1 (en) Information processing device, information processing method, and storage medium storing program for executing information processing method
JPWO2009122694A1 (ja) キャッシュメモリ装置、キャッシュメモリシステム、プロセッサシステム
JP7246308B2 (ja) デュアルモードローカルデータストア
US20120166682A1 (en) Memory mapping apparatus and multiprocessor system on chip platform including the same
US20080022052A1 (en) Bus Coupled Multiprocessor
JP2005209206A (ja) マルチプロセッサシステムにおけるデータ転送方法、マルチプロセッサシステム、及び、この方法を実施するプロセッサ
JP2009296195A (ja) 複数のcpuコアを備えたfpgaを用いた暗号装置
WO2014165514A1 (en) Embedded memory management scheme for real-time applications
KR20140038075A (ko) 캐시 일관성 유지 장치 및 방법, 이를 이용하는 멀티프로세서 장치
JP2024500779A (ja) アドレスマッピング認識型タスク処理機構
JP2010092101A (ja) 情報処理装置
US20080209085A1 (en) Semiconductor device and dma transfer method
TW202119215A (zh) 共用代碼之系統與代碼共用方法
JP2013131139A (ja) アクセス制御装置、画像処理装置及びアクセス制御方法
JP2019179414A (ja) 情報処理装置

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20100527

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101208

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120927

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121011

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130221