JP2014106819A - メモリ共有システム - Google Patents
メモリ共有システム Download PDFInfo
- Publication number
- JP2014106819A JP2014106819A JP2012260369A JP2012260369A JP2014106819A JP 2014106819 A JP2014106819 A JP 2014106819A JP 2012260369 A JP2012260369 A JP 2012260369A JP 2012260369 A JP2012260369 A JP 2012260369A JP 2014106819 A JP2014106819 A JP 2014106819A
- Authority
- JP
- Japan
- Prior art keywords
- program
- memory
- instruction
- shared
- usage information
- 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
Links
Images
Abstract
【課題】システムのリアルタイム性を保つことが可能なメモリ共有システムを提供する。
【解決手段】メモリ共有システムはプロセッサ214、217と命令メモリ208、209と制御部220とを具備する。命令メモリ208、209はプロセッサ214、217に対応する。制御部220は、メモリ利用情報テーブル213と処理負荷計測回路207とを備え、プロセッサ214、217が実行するプログラムを命令メモリ208、209へロードする。メモリ利用情報テーブル213はプロセッサ214、217が実行するプログラムを命令メモリ208、209のいずれかに共有/非共有で保持するための共有情報400を有する。処理負荷計測回路207は命令メモリ208、209のいずれかにロードされたプログラムへのプロセッサ214、217のアクセス頻度を計測する。プログラムの共有/非共有はその頻度に基づき選択される。
【選択図】図1
【解決手段】メモリ共有システムはプロセッサ214、217と命令メモリ208、209と制御部220とを具備する。命令メモリ208、209はプロセッサ214、217に対応する。制御部220は、メモリ利用情報テーブル213と処理負荷計測回路207とを備え、プロセッサ214、217が実行するプログラムを命令メモリ208、209へロードする。メモリ利用情報テーブル213はプロセッサ214、217が実行するプログラムを命令メモリ208、209のいずれかに共有/非共有で保持するための共有情報400を有する。処理負荷計測回路207は命令メモリ208、209のいずれかにロードされたプログラムへのプロセッサ214、217のアクセス頻度を計測する。プログラムの共有/非共有はその頻度に基づき選択される。
【選択図】図1
Description
本発明は、メモリ共有システムに関し、特に複数のコプロセッサを搭載するシステムに好適に利用できるものである。
小規模の組み込みシステムやシステムLSIでは、単一のプロセッサで全ての処理を行っている。しかし、近年、システムに求められるアプリケーション処理は、多様化し、複雑化している。そのため、単一プロセッサでは十分な速度でアプリケーション処理を実行することが困難となっている。このような事態を解決する方法の一つとして、プロセッサ内に複数のコプロセッサを設けて一つのシステムとする方法が知られている。
そのような複数のコプロセッサを備えたシステムでは、ある共通の処理を複数のコプロセッサで分散して処理する場合もある。その場合には、各コプロセッサが同一のプログラム処理を行うことになる。しかし、各コプロセッサが使用する命令メモリ領域は各コプロセッサへ別々に割り当てられる。そのため、同じ内容のコプログラムが複数のメモリ領域に多重にロードされることになり、使用されるメモリ領域が増大することになる。その結果、システムLSIのサイズが増加して、コストの増加に直接的に結びつくことになる。
それを解決する技術として特開2008−225620号公報(US2008222366(A1))にメモリ共有システム、方法、および、プログラムが開示されている。このメモリ共有システムは、使用すべきメモリ領域が計算機ごとに分割されたメモリにロードされたプログラムを、複数の計算機間で共有する。このメモリ共有システムは、メモリ利用情報検索手段と、メモリ確保手段とを備えている。メモリ利用情報検索手段は、一の計算機から、メモリへロードすべきプログラムを特定する情報を含むメモリ確保要求が発生すると、次の動作を行う。メモリにロード済みのプログラムについて、プログラムを一意に識別するためのプログラムIDを記憶するメモリ利用情報記憶部を参照して、メモリ確保要求が発生したプログラムに対応するプログラムIDと一致するプログラムIDが記憶されているか否かを判断する。メモリ確保手段は、メモリ利用情報検索手段にて一致するプログラムIDが記憶されていると判断されると、プログラムがロードされたメモリ領域を複数の計算機間で共有化する処理を行う。このメモリ共有システムでは、メモリ利用情報検索手段により、プログラムID、要求元メモリアドレスおよび要求メモリサイズを検索キーとしてメモリ利用情報記憶部を検索する。そして、メモリ利用情報記憶部に該当するエントリがあった場合、メモリ確保手段が、既に確保されているメモリ領域の共有処理を行う。このようにすることで、複数の仮想計算機間で同じプログラムファイルを実行したときに、メモリにロードされるプログラムファイルを共有することができる。
上記特許文献1の技術では、第1の仮想計算機用として確保された第1の記憶部内の共有すべきメモリ領域に対するアクセス権限を変更して、第2の仮想計算機からもアクセス可能とし、第2の仮想計算機のアクセスアドレスと実計算機でのメモリアドレスとの対応付けを行う。それにより、第1の記憶部内にロード済みの第1のプログラムファイルに、第2の仮想計算機からアクセスできるようにする。同様に、第2の仮想計算機用として確保された第2の記憶部内の共有すべきメモリ領域に対するアクセス権限を変更して、第1の仮想計算機からもアクセス可能とし、第1の仮想計算機のアクセスアドレスと実計算機でのメモリアドレスとの対応付けを行う。それにより、第2の記憶部内にロード済みの第2プログラムファイルに、第1の仮想計算機からアクセスできるようにする。
その結果、第1のプログラムファイルおよび第2のプログラムファイルは、第1の仮想計算機と第2の仮想計算機の両仮想計算機からアクセス可能な状態になっている。その場合、第2の仮想計算機が、第2のプログラムファイルにアクセスしている状態で、第1の仮想計算機からも第2のプログラムファイルへのアクセス要求が発生した場合、第1の仮想計算機のアクセス要求は、第2の仮想計算機のアクセス終了まで待たされることになる。それは第1の仮想計算機の処理能力の低下につながる。同様に、第1の仮想計算機が、第1のプログラムファイルにアクセスしている状態で、第2の仮想計算機からも第1のプログラムファイルへのアクセス要求が発生した場合、第2の仮想計算機のアクセス要求は、第1の仮想計算機のアクセス終了まで待たされることになる。それは第2の仮想計算機の処理能力の低下につながる。
特に、OS(Operating System)などのような第1の仮想計算機および第2の仮想計算機が共通して実行し、更にリアルタイム性が求められるプログラムファイルが両仮想計算機によりアクセスされる場合は、その傾向は顕著になる。すなわち、待たされる側の仮想計算機では、プログラムファイルの実行の遅れにより、リアルタイム性を保つことが困難となる。また、このような仮想計算機処理能力の低下やリアルタイム性の低下は、搭載される仮想計算機数が多くなる程、顕著に現れることとなる。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
一実施の形態によれば、メモリ共有システムは、命令メモリにロードされた共有プログラムの使用頻度を監視して、使用頻度が高い共有プログラムを非共有に変更し、そのプログラムを別の命令メモリへも新たにロードする。
前記一実施の形態によれば、メモリ共有システムは、システムのリアルタイム性を保つことができる。
(第1の実施の形態)
以下、本実施の形態に係るメモリ共有システムおよびメモリ共有方法に関して、添付図面を参照して説明する。
以下、本実施の形態に係るメモリ共有システムおよびメモリ共有方法に関して、添付図面を参照して説明する。
メモリ共有システム(200)は、複数のプロセッサ(214、217)と、複数の命令メモリ(208、209)と、制御部(220)とを具備している。複数のプロセッサ(214、217)は、いずれもコプロセッサとして機能する。複数の命令メモリ(208、209)は、複数のプロセッサ(214、217)に対応して設けられている。制御部(220)は、複数のプロセッサ(214、217)が実行するプログラムを(大容量メモリから)複数の命令メモリ(208、209)へロードする。制御部(220)は、メモリ利用情報テーブル(213)と、処理負荷計測回路(207)とを備えている。メモリ利用情報テーブル(213)は、複数のプロセッサ(214、217)が実行するプログラムを、複数の命令メモリ(208、209)のいずれかに、共有又は非共有として保持するための共有情報(400)を有する。処理負荷計測回路(207)は、複数の命令メモリ(208、209)のいずれかにロードされたプログラムに複数のプロセッサ(214、217)がアクセスする頻度を計測する。命令メモリ(208、209)にロードされたプログラムの共有/非共有は、処理負荷計測回路(207)の計測結果に基づいて選択され、共有情報(400)として記録される。
このような構成を有する本実施の形態のメモリ共有システム(200)は、一つの命令メモリ(208)にロードされた共有のプログラムの使用頻度が高い場合、その共有のプログラムを非共有に変更することができる。それにより、その命令メモリ(208)に対応するプロセッサ(214)は、そのプログラムの実行を待たされることが無くなる。その結果、そのプロセッサ(214)のリアルタイム性を保つことができる。また、非共有への変更に伴って、他のプロセッサ(217)は、対応する他の命令メモリ(209)に別途新たにそのプログラムをロードすることになる。それにより、他のプロセッサ(217)は、そのプログラムの実行を待たされることが無くなる。その結果、他のプロセッサ(217)のリアルタイム性を保つことができる。以上のようにして、これらのプロセッサ(214、217)を含むプロセッサシステムのリアルタイム性を保つことができ、処理能力の低下を防止することができる。
また、命令メモリ(208)にロードされたプログラムの使用頻度が低い場合、プログラムを共有可能に変更することができる。それにより、命令メモリ(208)を効率的に使用することが可能となる。
また、複数の命令メモリ(208、209)にロードされたプログラムの使用頻度が低い場合、プログラムを共有に変更することができる。それにより、複数の命令メモリ(208)を効率的に使用することが可能となる。
また、命令メモリ(208)にロードされたプログラムの使用頻度が低い場合、プログラムを共有可能に変更することができる。それにより、命令メモリ(208)を効率的に使用することが可能となる。
また、複数の命令メモリ(208、209)にロードされたプログラムの使用頻度が低い場合、プログラムを共有に変更することができる。それにより、複数の命令メモリ(208)を効率的に使用することが可能となる。
以下、本実施の形態に係るメモリ共有システム200について詳細に説明する。
図1は、本実施の形態に係るメモリ共有システムの構成を示すブロック図である。メモリ共有システム200は、大容量メモリ201と、プロセッサ218とを具備している。なお、本実施の形態では、プロセッサ218中のコプロセッサの数が2個(後述)である場合を例として説明するが、本実施の形態はその例に限定されるものではなく、更に多くのコプロセッサを有していても良い。
図1は、本実施の形態に係るメモリ共有システムの構成を示すブロック図である。メモリ共有システム200は、大容量メモリ201と、プロセッサ218とを具備している。なお、本実施の形態では、プロセッサ218中のコプロセッサの数が2個(後述)である場合を例として説明するが、本実施の形態はその例に限定されるものではなく、更に多くのコプロセッサを有していても良い。
大容量メモリ201は、処理プログラム群202を格納している。処理プログラム群202は、プロセッサ218に搭載されるコプロセッサが実行する複数のプログラムである。ここでは、処理プログラム群202は、例として、プログラム203、プログラム204、プログラム205およびプログラム206を含んでいる。プロセッサ218は、処理プログラム群202のプログラムを実行する。プロセッサ218は、メインプロセッサ212と、コプロセッサA214と、コプロセッサB217と、制御部220と、命令メモリA208と、命令メモリB209とを備えている。
メインプロセッサ212は、情報処理回路である。メインプロセッサ212は、コプロセッサA214およびコプロセッサB217を含むプロセッサ218全体を制御する。コプロセッサA214およびコプロセッサB217は、情報処理回路である。コプロセッサA214およびコプロセッサB217は、プロセッサ218の分割処理を行うものである。プログラムアクセスのとき、共有化制御回路215に対してアクセス先を示すプログラムアドレスを出力する。そして、共有化制御回路215により取得されたプログラム203、プログラム204、プログラム205およびプログラム206のいずれかを実行する。
命令メモリA208は、コプロセッサA214が実行するプログラムを格納する。命令メモリB209は、コプロセッサB217が実行するプログラムを格納する。制御部220は、コプロセッサA214、B217が実行するプログラムを大容量メモリ201から命令メモリ208および命令メモリ209へロードする。制御部220は、命令メモリA208および命令メモリB209のいずれかにロードされたプログラムにコプロセッサA214、B217がアクセスする頻度を計測する。そして、その計測結果に基づいて、命令メモリA208および命令メモリB209にロードされたプログラムの共有/非共有を選択する。制御部220は、共有化制御回路215と、プログラム転送回路211と、メモリアクセス制御回路210と、メモリ利用情報検索・書き込み回路216と、コプロセッサ処理負荷計測回路207と、メモリ利用情報テーブル213とを備えている。
共有化制御回路215は、コプロセッサA214およびコプロセッサB217からのプログラムアクセスを受け、命令メモリA208および命令メモリB209に対するプログラム転送要求をプログラム転送回路211へ出力する。また、共有化制御回路215は、メモリ利用情報テーブル213に基づいてコプロセッサA214とコプロセッサB217との間のプログラム共有を行う。
具体的には、共有化制御回路215は、コプロセッサA214のプログラムアクセスのとき、メモリ利用情報検索・書き込み回路216に対してメモリ利用情報検索要求を出力してメモリ利用情報検索を行う。メモリ利用情報検索では、コプロセッサより出力されるプログラムアドレスで示されるプログラム領域が、命令メモリA208又は命令メモリB209に既にロードされているかをメモリ利用情報テーブル213で検索する。対象となるプログラムコードを含むプログラムが命令メモリA208および命令メモリB209にロードされていない場合、プログラム転送回路211に対してプログラム転送要求を出力する。そして、そのプログラムを、命令メモリA208へ、メモリアクセス制御回路210を経由してロードする。それと共に、メモリ利用情報検索・書き込み回路216に対してメモリ利用情報書き込み要求を出力する。そして、そのプログラムのプログラム先頭アドレス、そのプログラムがロードされた命令メモリA208の物理先頭アドレス402およびプログラムサイズ403をメモリ利用情報テーブル213へ登録する。
共有化制御回路215は、同様に、コプロセッサB217のプログラムアクセスのとき、メモリ利用情報検索・書き込み回路216に対してメモリ利用情報検索要求を出力することでメモリ利用情報検索を行う。対象となるプログラムコードを含むプログラムが命令メモリA208および命令メモリB209にロードされていない場合、プログラム転送回路211に対してプログラム転送要求を出力する。そして、そのプログラムを、命令メモリB209へ、メモリアクセス制御回路210を経由してロードする。それと共に、メモリ利用情報検索・書き込み回路216に対してメモリ利用情報書き込み要求を出力する。そして、そのプログラムのプログラム先頭アドレス、そのプログラムがロードされた命令メモリB209の物理先頭アドレス402およびプログラムサイズ403をメモリ利用情報テーブル213へ登録する。
また、上記のメモリ利用情報検索時において、対象のプログラムが命令メモリA208又は命令メモリB209にロードされている場合、以下の所定の条件を満たすときは、共有化制御回路215は、メモリ利用情報検索・書き込み回路216へメモリ利用情報書き込み要求を出力する。メモリ利用情報書き込み要求では、メモリ利用情報テーブル213において、そのプログラムがロードされている領域を共有されたプログラム領域として、共有情報ステータス401を更新させることで、プログラム共有制御を行う。ただし、上記の所定の条件は、目的のプログラムが他のコプロセッサにより既にロードされ、そのプログラムの情報がメモリ利用情報テーブル213に既に登録され、且つ、共有情報ステータス401が共有可能なプログラムを示すことである。
プログラム転送回路211は、共有化制御回路215からプログラム転送要求を受け、コプロセッサA214又はコプロセッサB217が実行するプログラムとして、大容量メモリ201内のプログラム203〜206のいずれかを読み出す。そして、メモリアクセス制御回路210を介して、命令メモリA208又は命令メモリB209へ転送する。
メモリアクセス制御回路210は、共有化制御回路215からの命令メモリ又は命令メモリB209へのアクセス要求に基づいて、命令メモリアクセス制御信号を生成し、命令メモリA208および命令メモリB209へ出力する。また、プログラム転送回路211からのプログラム203〜206のいずれかを命令メモリA208又は命令メモリB209へ転送する。
命令メモリA208および命令メモリB209は、それぞれコプロセッサA214およびコプロセッサB217に割り当てられた命令メモリであり、各コプロセッサが実行するプログラムを格納される。命令メモリA208および命令メモリB209へのプログラム書き込みは、以下のように行う。プログラム転送回路211が大容量メモリ201内のプログラム203〜206のいずれかを読み出す。次に、メモリアクセス制御回路210が転送先の命令メモリA208又は命令メモリB209を決定する。それにより、プログラム転送回路211が読み出されたプログラム203〜206を命令メモリA208又は命令メモリB209へ書き込む。また、コプロセッサA214およびコプロセッサB217のプログラム実行は、以下のように行う。コプロセッサA214およびコプロセッサB217より出力されるアドレスをもとに、共有化制御回路215にてアドレス変換を行い、メモリアクセス制御回路210において、読み出すプログラムが格納された命令メモリA208又は命令メモリB209が決定される。
メモリ利用情報検索・書き込み回路216は、メモリ利用情報テーブル213に対して、命令メモリA208および命令メモリB209へ格納されるプログラムに関する情報を書き込む。また、メモリ利用情報検索・書き込み回路216は、命令メモリA208および命令メモリB209へ格納されたプログラムに関する情報の検索および書き換えを行う。
具体的には、メモリ利用情報検索・書き込み回路216は、共有化制御回路215、コプロセッサ処理負荷計測回路207およびメインプロセッサ212のいずれかからのメモリ利用情報書き込み要求を受け取る。そして、メモリ利用情報テーブル213に対するプログラム情報の新規書き込み・更新を行う。特に、メモリ利用情報検索・書き込み回路216は、命令メモリA208又は命令メモリB209へのプログラム転送時に、メモリ利用情報テーブル213の情報を共有化制御回路215から受け取り、メモリ利用情報テーブル213に登録する。
また、メモリ利用情報検索・書き込み回路216は、共有化制御回路215、コプロセッサ処理負荷計測回路207およびメインプロセッサ212のいずれかからのメモリ利用情報検索要求を受け、該当するプログラム情報の検索を行う。そして、検索要求を行った共有化制御回路215、コプロセッサ処理負荷計測回路207およびメインプロセッサ212のいずかに対し、メモリ利用情報テーブル213に登録されている情報を検索結果として出力する。特に、メモリ利用情報検索・書き込み回路216は、コプロセッサA214又はコプロセッサB217のプログラムアクセス時に、メモリ利用情報テーブル213の情報検索を行い、アクセス対象のプログラムが格納された命令メモリA208又は命令メモリB209の領域を特定する。
メモリ利用情報テーブル213は、命令メモリA208および命令メモリB209へ格納されたプログラムに関する情報が登録される。具体的には、メモリ利用情報テーブル213は、命令メモリA208および命令メモリB209へ格納されたプログラムに関する情報として、共有情報ステータス401と、プログラム先頭アドレス404と、物理先頭アドレス402と、プログラムサイズ403とを含んでいる。共有情報ステータス401は、命令メモリA208又は命令メモリB209に転送されたプログラムのコプロセッサ間における共有状態を示す。プログラム先頭アドレス404は、処理プログラム群202に格納されたプログラムを、コプロセッサプログラムメモリ空間にアドレッシングした仮想メモリ空間であり、プログラム203〜206の先頭アドレスを示す。物理先頭アドレス402は、命令メモリA208又は命令メモリB209の物理空間アドレスであり、各プログラムがロードされた命令メモリ領域の先頭アドレスを示す。プログラムサイズ403は、命令メモリA208又は命令メモリB209に転送されたプログラム203〜206のサイズを示す。この共有情報ステータス401のフィールドでは、プログラム(領域)の共有の有無等の確認およびその書き換えができる。それにより、プログラム(領域)へのアクセス回数の多寡により共有/非共有の設定を容易に変更できる。
コプロセッサ処理負荷計測回路207は、命令メモリA208および命令メモリB209に格納されたプログラムに対する各プロセッサのアクセス頻度を計測する。コプロセッサ処理負荷計測回路207は、その計測結果に基づいて、命令メモリA208および命令メモリB209にロードされたプログラムの共有/非共有を選択する。例えば、共有プログラムに対するアクセス回数が多い場合、その共有プログラムを非共有に設定し直す信号を出力する。それにより、アプリケーションの処理速度の低下やリアルタイム性の低下を回避することができる。
具体的には、コプロセッサ処理負荷計測回路207は、命令メモリA208および命令メモリB209内のプログラム情報をメモリ利用情報検索・書き込み回路216を介してメモリ利用情報テーブル213より取得する。そして、所定の時間内において、共有されたメモリ領域の任意時間のアクセス頻度を計測する。そして、計測結果が閾値レベルを超えた場合は、メモリ利用情報検索・書き込み回路216に対してメモリ利用情報書き込み要求を出力し、該当領域の共有情報ステータスを共有不可の領域として再設定を行う。閾値レベルはメインプロセッサ212によって設定され、任意時間におけるコプロセッサのアクセス回数が設定される。最適な閾値レベルの特定には、システム評価等により、アクセス競合による処理能力の低下が発生しないアクセス回数を特定し、設定するなどの方法を取る。
次に、コプロセッサ処理負荷計測回路207の構成について更に説明する。図2は、本実施の形態に係るメモリ共有システム200のコプロセッサ処理負荷計測回路207の構成を示すブロック図である。この図の例では、図1においてプロセッサが2個であることに対応して、アクセス回数を検出する構成(メモリ利用情報レジスタ、カウンタ、比較回路)を2組設けている。コプロセッサ処理負荷計測回路207は、メモリ利用情報検索要求制御回路300と、レジスタ群301とを備えている。コプロセッサ処理負荷計測回路207は、更に、メモリ利用情報レジスタA302と、メモリ利用情報レジスタB303と、カウンタ回路A304と、カウンタ回路B305と、比較回路306と、比較回路307と、メモリ利用情報書き込み要求制御回路308とを備えている。
レジスタ群301は、メインプロセッサ212により設定が行われる。レジスタ群301は、閾値設定309用のレジスタと、カウンタA起動310用のレジスタと、カウンタB起動311用のレジスタと、カウンタAエントリーナンバー312用のレジスタと、カウンタBエントリーナンバー313用のレジスタとを含んでいる。
閾値設定309用のレジスタは、閾値レベルを設定する値を格納する。詳細には、閾値設定309用のレジスタは、メモリ利用情報テーブル213へ登録された各プログラム領域に対する、コプロセッサアクセス回数の閾値を設定するレジスタである。閾値設定309用のレジスタへ設定された値は、カウンタ回路A304、カウンタ回路B305の閾値として使用される。
カウンタA起動310用のレジスタは、カウンタ回路A304の起動要求を行う命令を格納する。詳細には、カウンタA起動310用のレジスタは、コプロセッサA214の処理の負荷計測の開始要求を発行するためのレジスタである。カウンタB起動311用のレジスタは、カウンタ回路B305の起動要求を行う命令を格納する。詳細には、カウンタB起動311用のレジスタは、コプロセッサB217の処理の負荷計測の開始要求を発行するためのレジスタである。
カウンタAエントリーナンバー312用のレジスタは、コプロセッサ処理負荷計測を行うプログラム領域を指定する。詳細には、カウンタAエントリーナンバー312用のレジスタには、カウンタ回路A304により実行されるコプロセッサA214の処理負荷計測の対象となるプログラム領域のエントリーナンバー400が設定される。カウンタBエントリーナンバー313用のレジスタは、コプロセッサ処理負荷計測を行うプログラム領域を指定する。詳細には、カウンタBエントリーナンバー313用のレジスタには、カウンタ回路B305により実行されるコプロセッサB217の処理負荷計測の対象となるプログラム領域のエントリーナンバー400が設定される。
メモリ利用情報検索要求制御回路300は、メモリ利用情報検索・書き込み回路216に対してメモリ利用情報検索要求を出力し、メモリ利用情報検索結果を取得する。
具体的には、メモリ利用情報検索要求制御回路300は、メインプロセッサ212がカウンタA起動310用のレジスタへ負荷計測開始要求を発行したとき、メモリ利用情報検索要求信号を出力する。メモリ利用情報検索要求信号は、カウンタAエントリーナンバー312で指定されるプログラム情報をメモリ利用情報テーブル213内で検索する要求を示す。そして、メモリ利用情報テーブル213内の検索結果を、メモリ利用情報検索・書き込み回路216からメモリ利用情報検索結果信号として取得し、メモリ利用情報レジスタA302へ出力する。メモリ利用情報検索結果信号は、エントリーナンバー400、物理先頭アドレス402およびサイズ403を含む。そして、メモリ利用情報検索要求制御回路300は、カウンタAエントリーナンバー312に設定された値に一致するプログラム情報(エントリーナンバー400、物理先頭アドレス402、サイズ403)をメモリ利用情報レジスタA302へ設定する。その設定により、カウンタ回路A304が起動される。
また、メモリ利用情報検索要求制御回路300は、メインプロセッサ212がカウンタB起動311用のレジスタへ負荷計測開始要求を発行したとき、メモリ利用情報検索要求信号を出力する。メモリ利用情報検索要求信号は、カウンタBエントリーナンバー313で指定されるプログラム情報をメモリ利用情報テーブル213内で検索する要求を示す。そして、メモリ利用情報テーブル213内の検索結果を、メモリ利用情報検索・書き込み回路216からメモリ利用情報検索結果信号として取得し、メモリ利用情報レジスタB303へ出力する。メモリ利用情報検索結果信号は、エントリーナンバー400、物理先頭アドレス402およびサイズ403を含む。そして、メモリ利用情報検索要求制御回路300は、カウンタBエントリーナンバー313に設定された値に一致するプログラム情報(エントリーナンバー400、物理先頭アドレス402、サイズ403)をメモリ利用情報レジスタB303へ設定する。その設定により、カウンタ回路B305が起動される。
メモリ利用情報レジスタA302は、コプロセッサA214の処理負荷計測対象となるプログラム情報を格納する。メモリ利用情報レジスタA302は、エントリーナンバー314用のレジスタと、物理先頭アドレス315用のレジスタと、プログラムサイズ316用のレジスタとを含んでいる。メモリ利用情報レジスタA302は、メモリ利用情報検索要求制御回路300よりカウンタAエントリーナンバー312およびプログラム情報(物理先頭アドレス402、サイズ403)を取得する。そして、エントリーナンバー314、物理先頭アドレス315、プログラムサイズ316として保持する。それと共に、保持した物理先頭アドレス315およびプログラムサイズ316をカウンタ回路A304へ、エントリーナンバー314をメモリ利用情報書き込み要求制御回路308へ出力する。
メモリ利用情報レジスタB303は、コプロセッサB217の処理負荷計測対象となるプログラム情報を格納する。メモリ利用情報レジスタB303は、エントリーナンバー317用のレジスタと、物理先頭アドレス318用のレジスタと、プログラムサイズ319用のレジスタとを含んでいる。メモリ利用情報レジスタB303は、メモリ利用情報検索要求制御回路300よりカウンタBエントリーナンバー313およびプログラム情報(物理先頭アドレス402、サイズ403)を取得する。そして、エントリーナンバー317、物理先頭アドレス318、プログラムサイズ319として保持する。それと共に、保持した物理先頭アドレス318およびプログラムサイズ319をカウンタ回路B305へ、エントリーナンバー317をメモリ利用情報書き込み要求制御回路308へ出力する。
カウンタ回路A304は、コプロセッサA214がメモリ利用情報レジスタA302領域で指定される領域にアクセスした回数をカウントする。具体的には、カウンタ回路A304は、メモリ利用情報レジスタA302から物理先頭アドレス315およびプログラムサイズ316を取得し、それらのデータに基づいて、コプロセッサA214によるコプロセッサAメモリアクセス信号を監視する。それにより、メモリ利用情報レジスタA302で指定される領域に対してコプロセッサA214によるアクセスが発生した回数をカウントし、カウント結果を比較回路306に出力する。ただし、コプロセッサAメモリアクセス信号は、コプロセッサA214によるプログラムアドレスや命令メモリに対するアクセス要求信号に例示される。
カウンタ回路B305は、コプロセッサB217がメモリ利用情報レジスタB303領域で指定される領域にアクセスした回数をカウントする。具体的には、カウンタ回路B305は、メモリ利用情報レジスタB303から物理先頭アドレス318およびプログラムサイズ319を取得し、それらのデータに基づいて、コプロセッサB217によるコプロセッサBメモリアクセス信号を監視する。それにより、メモリ利用情報レジスタB303で指定される領域に対してコプロセッサB217によるアクセスが発生した回数をカウントし、カウント結果を比較回路307に出力する。ただし、コプロセッサBメモリアクセス信号は、コプロセッサB217によるプログラムアドレスや命令メモリに対するアクセス要求信号に例示される。
比較回路306は、カウンタ回路A304のカウント結果とレジスタ群301の閾値設定309用のレジスタで指定された閾値との比較を行う。その比較結果は、メモリ利用情報レジスタA302で指定される領域に対するコプロセッサA214のアクセス回数が、閾値設定309用のレジスタに設定された値に達したか否かを示している。比較回路306は、その比較結果をメモリ利用情報書き込み要求制御回路308へ出力する。
比較回路307は、カウンタ回路B305のカウント結果とレジスタ群301の閾値設定309用のレジスタで指定された閾値との比較を行う。その比較結果は、メモリ利用情報レジスタB303で指定される領域に対するコプロセッサB217のアクセス回数と、閾値設定309用のレジスタに設定された値に達したか否かを示している。比較回路307は、その比較結果をメモリ利用情報書き込み要求制御回路308へ出力する。
メモリ利用情報書き込み要求制御回路308は、比較回路306および比較回路307の比較結果に基づいて、メモリ利用情報テーブル213内の情報を更新する。詳細には、メモリ利用情報書き込み要求制御回路308は、比較回路306や比較回路307の結果に基づき、命令メモリA208や命令メモリB209の所定の領域へのコプロセッサA214やコプロセッサB217のアクセス回数が所定の閾値を上回ったか否かを判定する。すなわち、メモリ利用情報書き込み要求制御回路308は、メモリ利用情報レジスタA302やメモリ利用情報レジスタB303の情報で指定される領域へのコプロセッサA214やコプロセッサB217のアクセス回数が、閾値設定309用レジスタの閾値を超えたか否かを判定する。アクセス回数が閾値設定309用レジスタの閾値を上回った場合、メモリ利用情報書き込み要求制御回路308は、メモリ利用情報検索・書き込み回路216に対し、非共有化設定要求を出力する。非共有化設定要求は、メモリ利用情報テーブル213内の共有設定情報405をOFFに設定する要求である。メモリ利用情報検索・書き込み回路216は、その非共有化設定要求に基づいて、メモリ利用情報テーブル213を更新する。それにより、アプリケーションの処理速度の低下やリアルタイム性の低下を回避することができる。
また、所定の期間、エントリに対するコプロセッサA214とコプロセッサB217のアクセスが全く発生しない場合、すなわちアクセス回数がゼロの場合、メモリ利用情報書き込み要求制御回路308は、メモリ利用情報検索・書き込み回路216へ、エントリ破棄要求を出力する。メモリ利用情報検索・書き込み回路216は、そのエントリ破棄要求に基づいて、対象となるエントリのエントリ情報を破棄する。それにより、破棄されたエントリに新たなプログラム情報を登録することが可能となり、メモリ資源を有効に活用することが可能となる。
上記のコプロセッサ処理負荷計測回路207において、メモリ利用情報レジスタとカウンタと比較回路とを組み合わせた構成は検出部と見ることもできる。その検出部により、所望のプログラム(領域)へのアクセス回数が閾値を上回ったか否かを検出することができる。その場合、図2のコプロセッサ処理負荷計測回路207は、少なくとも2つの検出部を備えていると見ることができる。また、レジスタ群301とメモリ利用情報検索要求制御回路300とは設定部と見ることもできる。その設定部により、アクセス回数を計測する対象プログラム(領域)を設定することができる。
図3は、本実施の形態に係るメモリ共有システム200のメモリ利用情報テーブル213の構成を示す表である。
メモリ利用情報テーブル213は、エントリーナンバー400のフィールドと、共有情報ステータス401のフィールドと、物理先頭アドレス402のフィールドと、サイズ403のフィールドと、プログラム先頭アドレス404のフィールドとを備えている。共有情報ステータス401のフィールドは、共有設定情報405のフィールドと、コプロセッサA利用情報406のフィールドと、コプロセッサB利用情報407のフィールドとを含んでいる。
エントリーナンバー400は、命令メモリA208又は命令メモリB209へロードされたプログラムに対して割り振られた番号を示す。共有設定情報405は、各プログラムがロードされたメモリ領域が共有可能であるか否かを示す。コプロセッサA利用情報406は、コプロセッサA214が利用している領域であるか否かを示す。コプロセッサB利用情報407は、コプロセッサB217が利用している領域であるか否かを示す。物理先頭アドレス402は、各プログラムがロードされたメモリ領域の先頭アドレスを示す。サイズ403は、ロードされたプログラムのサイズを示す。プログラム先頭アドレス404は、コプロセッサA214又はコプロセッサB217のプログラム空間において、ロードされたプログラムがアドレッシングされている領域のプログラム先頭アドレスを示す。
エントリーナンバー400は、命令メモリA208や命令メモリB209にロードされたプログラムに対して割り振られる番号であり、それぞれのプログラムに対してユニークな番号となる。共有設定情報405は、プログラムがロードされた命令メモリ領域が、コプロセッサ間において共有可能な領域か否かを示しており、共有可能な領域である場合は「ON」を、共有不可な領域である場合は「OFF」をそれぞれ設定される。コプロセッサA利用情報406は、登録されたプログラムがロードされているメモリ領域をコプロセッサA214が使用しているか否かを示しており、使用している場合は「ON」が、使用していない場合は「OFF」がそれぞれ設定される。コプロセッサB利用情報407は、登録されたプログラムがロードされているメモリ領域をコプロセッサB217が使用しているか否かを示しており、使用している場合は「ON」が、使用していない場合は「OFF」がそれぞれ設定される。このメモリ利用情報テーブル213は、この共有情報ステータス401のフィールドにより、プログラム(領域)の共有の有無等の確認およびその書き換えが可能である。それにより、プログラム(領域)へのアクセス回数に基づいて、共有/非共有の設定を容易に変更できる。
次に、本実施の形態に係るメモリ共有システム200の動作(メモリ共有方法)について説明する。
本実施の形態に係るメモリ共有方法は、第1ステップから第4ステップを具備している。第1ステップは、第1プロセッサ(214)からのプログラム(205)の呼び出しに応答して、その第1プロセッサ(214)に対応する第1命令メモリ(208)へそのプログラム(205)をロードするステップである。ただし、第1プロセッサ(214)は、複数のプロセッサ(214、217)のうちの一つである。第1命令メモリ(208)は、複数のプロセッサ(214、217)に対応して設けられた複数の命令メモリ(208、209)のうちの第1プロセッサ(214)に対応するものである。第2のステップは、第1プログラム(205)を複数のプロセッサ(214、217)間で共有に設定するステップである。第3のステップは、第1命令メモリ(208)にロードされたそのプログラム(205)に複数のプロセッサ(214、217)がアクセスする頻度を計測するステップである。第4のステップは、その頻度が予め設定された閾値を上回ったとき、第1命令メモリ(208)にロードされたそのプログラム(205)を非共有に設定するステップである。
このような構成を有する本実施の形態のメモリ共有方法は、一つの命令メモリ(208)にロードされた共有のプログラムの使用頻度が高い場合、その共有のプログラムを非共有に変更することができる。それにより、その命令メモリ(208)に対応するプロセッサ(214)は、そのプログラムの実行を待たされることが無くなる。その結果、そのプロセッサ(214)のリアルタイム性を保つことができる。また、非共有への変更に伴って、他のプロセッサ(217)は、対応する他の命令メモリ(209)に別途新たにそのプログラムをロードすることになる。それにより、他のプロセッサ(217)は、そのプログラムの実行を待たされることが無くなる。その結果、他のプロセッサ(217)のリアルタイム性を保つことができる。以上のようにして、これらのプロセッサ(214、217)を含むプロセッサシステムのリアルタイム性を保つことができ、処理能力の低下を防止することができる。
以下、本実施の形態に係るメモリ共有システム200の動作について、図4A、図4B、図5A、図5B、図6A、図6B、図7を用いて説明する。ここでは、メモリ共有システム200において、一つの命令メモリ内で共有されたプログラムを非共有にし、各コプロセッサが、その各プロセッサに対応する命令メモリに対して、独立してアクセスを行う動作について説明する。
図7は、本実施の形態に係るメモリ共有システム200の動作を示すフロー図である。
(1)ステップS01
メモリ共有システム200において、メインプロセッサ212によりコプロセッサA214とコプロセッサB217が起動され、プログラムが実行される。例えば、コプロセッサA214の命令により、制御部220は、大容量メモリ201内のプログラム203〜206のうちの該当するプログラムを命令メモリA208に格納する。そのとき、メモリ利用情報テーブル213を使用して命令メモリA208内のプログラムが共有化される(共有設定情報405が「ON」になる)。その結果、コプロセッサA214からだけでなく、コプロセッサB217からも命令メモリA208へのアクセスが可能となる。あるいは、コプロセッサB217の命令により、制御部220は、大容量メモリ201内のプログラム203〜206のうちの該当するプログラムを命令メモリB209に格納する。そのとき、メモリ利用情報テーブル213を使用して命令メモリB209内のプログラムが共有化される(共有設定情報405が「ON」になる)。その結果、コプロセッサB217からだけでなく、コプロセッサA214からも命令メモリB209内のプログラムへのアクセスが可能となる。
(1)ステップS01
メモリ共有システム200において、メインプロセッサ212によりコプロセッサA214とコプロセッサB217が起動され、プログラムが実行される。例えば、コプロセッサA214の命令により、制御部220は、大容量メモリ201内のプログラム203〜206のうちの該当するプログラムを命令メモリA208に格納する。そのとき、メモリ利用情報テーブル213を使用して命令メモリA208内のプログラムが共有化される(共有設定情報405が「ON」になる)。その結果、コプロセッサA214からだけでなく、コプロセッサB217からも命令メモリA208へのアクセスが可能となる。あるいは、コプロセッサB217の命令により、制御部220は、大容量メモリ201内のプログラム203〜206のうちの該当するプログラムを命令メモリB209に格納する。そのとき、メモリ利用情報テーブル213を使用して命令メモリB209内のプログラムが共有化される(共有設定情報405が「ON」になる)。その結果、コプロセッサB217からだけでなく、コプロセッサA214からも命令メモリB209内のプログラムへのアクセスが可能となる。
具体的には、共有化制御回路215は、コプロセッサA214のプログラムアクセス(プログラムアドレスを含む)の命令により、メモリ利用情報検索・書き込み回路216へメモリ利用情報検索要求を出力する。メモリ利用情報検索・書き込み回路216は、メモリ利用情報検索要求を受け、プログラムアドレスで示されるプログラム領域が命令メモリA208又は命令メモリB209に既にロードされているかをメモリ利用情報テーブル213で検索する。メモリ利用情報検索・書き込み回路216は、プログラム領域が命令メモリにロードされていないことを共有化制御回路215へ返答する。共有化制御回路215は、その返答を受け、プログラム転送回路211に対してプログラム転送要求を出力する。プログラム転送回路211は、共有化制御回路215からプログラム転送要求を受け、コプロセッサA214が実行するプログラムを大容量メモリ201から読み出す。プログラム転送回路211は、読み出したプログラムを、メモリアクセス制御回路210を介して命令メモリA208へ転送する。それと共に、共有化制御回路215は、メモリ利用情報検索・書き込み回路216に対してメモリ利用情報書き込み要求を出力する。メモリ利用情報検索・書き込み回路216は、共有化制御回路215からのメモリ利用情報書き込み要求を受け、メモリ利用情報テーブル213に対するプログラム情報の新規書き込みを行う。プログラム情報は、共有情報ステータス401、物理先頭アドレス402、プログラムサイズ403、プログラム先頭アドレス404である。
あるいは、共有化制御回路215は、コプロセッサB217のプログラムアクセスの命令により、メモリ利用情報検索・書き込み回路216へメモリ利用情報検索要求を出力する。メモリ利用情報検索・書き込み回路216は、メモリ利用情報検索要求を受け、プログラムアドレスで示されるプログラム領域が命令メモリA208又は命令メモリB209に既にロードされているかをメモリ利用情報テーブル213で検索する。メモリ利用情報検索・書き込み回路216は、プログラム領域が命令メモリにロードされていないことを共有化制御回路215へ返答する。共有化制御回路215は、その返答を受け、プログラム転送回路211に対してプログラム転送要求を出力する。プログラム転送回路211は、共有化制御回路215からプログラム転送要求を受け、コプロセッサB217が実行するプログラムを大容量メモリ201から読み出す。プログラム転送回路211は、読み出したプログラムを、メモリアクセス制御回路210を介して命令メモリB209へ転送する。それと共に、共有化制御回路215は、メモリ利用情報検索・書き込み回路216に対してメモリ利用情報書き込み要求を出力する。メモリ利用情報検索・書き込み回路216は、共有化制御回路215からのメモリ利用情報書き込み要求を受け、メモリ利用情報テーブル213に対するプログラム情報の新規書き込みを行う。プログラム情報は、共有情報ステータス401、物理先頭アドレス402、プログラムサイズ403、プログラム先頭アドレス404である。
このとき、大容量メモリ201内のどのプログラムを初期状態で「共有」に設定(共有設定:「ON」)するかは予め設定されている。例えば、初期状態では全てのプログラムで「共有」に設定するようにしても良い。あるいは、プログラムと「共有」/「非共有」の設定(共有設定:「ON」/「OFF」)とを関連づけたテーブルを記憶しておき、それに準じてプログラムの初期状態を設定するようにしても良い。これらの情報は、例えば、メインプロセッサ212により大容量メモリ201に格納されても良い。
図4Aは、命令メモリA208にロードされたプログラム205が共有状態の場合でのメモリ利用情報テーブル213の設定例を示す表である。図4Bは、メモリ利用情報テーブル213が図4Aのように設定された状態における命令メモリA208および命令メモリB209へのプログラムのロード状態を示している。これらの図は、コプロセッサA214およびコプロセッサB217が、プログラム203(エントリーナンバー「0」)およびプログラム205(エントリーナンバー「2」)を共に使用している状態を示している。なお、プログラム204(エントリーナンバー「1」)は共有設定が「ON」であるが、コプロセッサBのみが使用している。
図4Aにおいて、命令メモリA208へロードされたプログラム205について見てみると、エントリーナンバー400として「2」の番号が設定され、エントリ2のプログラムとして登録されている。そのプログラム205のプログラム情報408として、共有設定情報405は「ON」に、コプロセッサA利用情報406は「ON」に、コプロセッサB利用情報407は「ON」に設定されている。すなわち、そのプログラム205は、共有可能であり、コプロセッサA214およびコプロセッサB217が共に利用している。更に、そのプログラム205のプログラム情報408として、物理先頭アドレス402は「0x4000」、サイズ403は「0x2000」、プログラム先頭アドレス404は「0x6000」に設定されている。すなわち、プログラム205がコプロセッサA214およびコプロセッサB217のプログラム空間の「0x6000」番地から「0x2000」ワードサイズの空間にアドレッシングされている。そして、命令メモリAの「0x4000」から「0x2000」ワードサイズの空間にロードされている。
(2)ステップS02
この状態において、コプロセッサ処理負荷計測回路207は、例えば、プログラム205が格納されている命令メモリA208の「0x4000」番地から「0x2000」ワードサイズの空間に対するコプロセッサB217の処理負荷計測を実行する。
この状態において、コプロセッサ処理負荷計測回路207は、例えば、プログラム205が格納されている命令メモリA208の「0x4000」番地から「0x2000」ワードサイズの空間に対するコプロセッサB217の処理負荷計測を実行する。
詳細には、メインプロセッサ212により、レジスタ群301において、閾値設定309用レジスタに閾値が格納され、カウンタA起動310用レジスタにカウンタ回路A304の起動要求が格納され、カウンタB起動311用レジスタにカウンタ回路B305の起動要求が格納される。カウンタAエントリーナンバー312用レジスタにプログラム205のエントリーナンバー「2」が格納される。カウンタBエントリーナンバー313用レジスタにプログラム205のエントリーナンバー「2」が格納される。これらにより、プログラム205について、コプロセッサA214の処理およびコプロセッサB217の処理の負荷計測が開始される。
メモリ利用情報検索要求制御回路300は、メモリ利用情報検索・書き込み回路216へメモリ利用情報検索要求信号(カウンタAエントリーナンバー312およびカウンタBエントリーナンバー313を含む)を出力する。メモリ利用情報検索・書き込み回路216は、メモリ利用情報検索要求を受け、カウンタAエントリーナンバー312およびカウンタBエントリーナンバー313のプログラム情報をメモリ利用情報テーブル213で検索する。メモリ利用情報検索・書き込み回路216は、検索されたプログラム情報(エントリーナンバー400、物理先頭アドレス402、サイズ403)をメモリ利用情報検索結果として、メモリ利用情報検索要求制御回路300へ返答する。メモリ利用情報検索要求制御回路300は、カウンタAエントリーナンバー312に設定された値に一致するプログラム情報(エントリーナンバー400、物理先頭アドレス402、サイズ403)をメモリ利用情報レジスタA302へ設定する。その設定により、カウンタ回路A304が起動される。例えば、プログラム205の場合、エントリーナンバー400は「2」、物理先頭アドレス402は「0x4000」、サイズ403は「0x2000」である。また、メモリ利用情報検索要求制御回路300は、カウンタBエントリーナンバー313に設定された値に一致するプログラム情報(エントリーナンバー400、物理先頭アドレス402、サイズ403)をメモリ利用情報レジスタB303へ設定する。その設定により、カウンタ回路B305が起動される。例えば、プログラム205の場合、エントリーナンバー400は「2」、物理先頭アドレス402は「0x4000」、サイズ403は「0x2000」である。
カウンタ回路A304は、メモリ利用情報レジスタA302から物理先頭アドレス315およびプログラムサイズ316を取得し、それらのデータに基づいて、コプロセッサA214によるコプロセッサAメモリアクセス信号を監視する。例えば、プログラム205に対してコプロセッサA214によるアクセスが発生した回数をカウントし、カウント結果を比較回路306に出力する。また、カウンタ回路B305は、メモリ利用情報レジスタB303から物理先頭アドレス318およびプログラムサイズ319を取得し、それらのデータに基づいて、コプロセッサB217によるコプロセッサBメモリアクセス信号を監視する。例えば、プログラム205に対してコプロセッサB217によるアクセスが発生した回数をカウントし、カウント結果を比較回路307に出力する。
(3)ステップS03
コプロセッサ処理負荷計測回路207は、処理負荷計測の結果に基づいて、命令メモリA208のプログラム205の領域へのコプロセッサB217のアクセスが多発しているか否かを判断する。すなわちアクセス回数が閾値を上回ったか否かを判断する(ステップS03)。ただし、アクセス回数は、予め設定された所定の時間内での回数とする。そのような時間は、メインプロセッサ212で設定される。
コプロセッサ処理負荷計測回路207は、処理負荷計測の結果に基づいて、命令メモリA208のプログラム205の領域へのコプロセッサB217のアクセスが多発しているか否かを判断する。すなわちアクセス回数が閾値を上回ったか否かを判断する(ステップS03)。ただし、アクセス回数は、予め設定された所定の時間内での回数とする。そのような時間は、メインプロセッサ212で設定される。
具体的には、比較回路306は、カウンタ回路A304のカウント結果とレジスタ群301の閾値設定309用のレジスタで指定された閾値との比較を行う。比較回路306は、その比較結果をメモリ利用情報書き込み要求制御回路308へ出力する。例えば、プログラム205に対してコプロセッサA214のアクセス回数が、閾値を上回ったか否かを出力する。また、比較回路307は、カウンタ回路B305のカウント結果とレジスタ群301の閾値設定309用のレジスタで指定された閾値との比較を行う。比較回路307は、その比較結果をメモリ利用情報書き込み要求制御回路308へ出力する。例えば、プログラム205に対して、コプロセッサB217のアクセス回数が、閾値を上回ったか否かを出力する。
(4)ステップS04
メモリ利用情報書き込み要求制御回路308は、アクセス回数が閾値を上回ったと判断したとき(ステップS03:Yes)、メモリ利用情報検索・書き込み回路216に対して、プログラム205の領域の非共有化設定要求を出力する。
メモリ利用情報書き込み要求制御回路308は、アクセス回数が閾値を上回ったと判断したとき(ステップS03:Yes)、メモリ利用情報検索・書き込み回路216に対して、プログラム205の領域の非共有化設定要求を出力する。
具体的には、メモリ利用情報書き込み要求制御回路308は、比較回路306および比較回路307の比較結果に基づいて、アクセス回数が閾値を上回ったと判断する。この例の場合では、比較回路306(プロセッサA側)および比較回路307(プロセッサB側)の両方で、同じプログラム205に対するアクセス回数を見ている。したがって、比較回路306および比較回路307のうちの、いずれか一方が閾値を上回ったときにアクセス回数が閾値を上回ったと判断してもよい。いずれか一方が閾値を上回れば、少なくともアクセス回数が少ないプロセッサにおいて処理速度が落ちていると判断できるからである。あるいは、両方が閾値を上回ったときにアクセス回数が閾値を上回ったと判断してもよい。両方が閾値を上回れば、一時的ではなく確実に両プロセッサにおいて処理速度が落ちていと判断できるからである。あるいは、プログラム205がロードされた命令メモリA208に対応するコプロセッサA214ではない方のコプロセッサB217のアクセス回数(比較回路307)が閾値を上回ったときにアクセス回数が閾値を上回ったと判断してもよい。コプロセッサB217のアクセス回数の多い場合には、コプロセッサB217に対応した命令メモリB209にプログラム205をロードしておいた方が効率的だからである。
これらのいずれの判断基準でアクセス回数が閾値を上回ったと判断するかは、例えば、メインプロセッサ212がその判断基準をメモリ利用情報書き込み要求制御回路308に書き込むことで実現できる。
これらのいずれの判断基準でアクセス回数が閾値を上回ったと判断するかは、例えば、メインプロセッサ212がその判断基準をメモリ利用情報書き込み要求制御回路308に書き込むことで実現できる。
アクセス回数が閾値を上回った場合、メモリ利用情報書き込み要求制御回路308は、メモリ利用情報検索・書き込み回路216に対し、非共有化設定要求を出力する。非共有化設定要求は、メモリ利用情報テーブル213内の共有設定情報405をOFFに設定する要求である。メモリ利用情報検索・書き込み回路216は、メモリ利用情報書き込み要求制御回路308からの非共有化設定要求(エントリーナンバーを含む)を受け取る。そして、メモリ利用情報テーブル213内の該当するエントリーナンバーの共有情報ステータス401を書き換える(非共有化設定を行う)。
図5Aは、命令メモリA208にロードされたプログラム205が非共有設定に変更された場合でのメモリ利用情報テーブル213の設定例を示す表である。図5Bは、メモリ利用情報テーブル213が図5Aのように設定された状態における命令メモリA208および命令メモリB209へのプログラムのロード状態を示している。これらの図は、プログラム205のロードされた命令メモリA208の「0x4000」番地から「0x2000」ワードサイズの領域に対し、コプロセッサB217(又はコプロセッサA214)のアクセスが多発したことによる対応を示している。すなわち、その領域について、共有設定から非共有化設定に変更が行われたときのメモリ利用情報テーブル213を示している。
命令メモリA208のプログラム205の領域に対して非共有化設定が行われた場合、プログラム情報408の共有設定情報405を「OFF」、コプロセッサB利用情報407を「OFF」に再設定を行う。それにより、プログラム205の領域がコプロセッサ間で共有することの出来ない領域であり、コプロセッサB217が使用していない領域として再登録されることとなる。
図6Aは、プログラム205が新たに命令メモリA209にロードされた場合でのメモリ利用情報テーブル213の設定例を示す表である。この図は、プログラム205がロードされている命令メモリA208の「0x4000」番地から「0x2000」ワードサイズの領域が非共有化設定された後、別途プログラム205が命令メモリB209にロードされた場合でのメモリ利用情報テーブル213の設定例を示している。図6Bは、メモリ利用情報テーブル213が図6Aのように設定された状態における命令メモリA208および命令メモリB209へのプログラムのロード状態を示している。
図6Bに示すように、命令メモリB209の「0xA000」番地から「0x2000」ワードサイズの領域に対して、既に命令メモリA208へロードされているプログラム205が、別途新たにロードされる。図6Aに示すように、新たにロードされたプログラム205のプログラム情報409は、メモリ利用情報テーブル213へ新規に登録される。このとき、プログラム情報409のエントリーナンバー400としては、命令メモリA208へロードされたプログラム205のプログラム情報408とは別のエントリーナンバーが振り分けられる。プログラム情報409としては、共有設定情報405は「OFF」、コプロセッサA利用情報406は「OFF」、コプロセッサB利用情報は「ON」に設定される。それにより、新たにプログラム205がロードされた命令メモリB209の領域は、コプロセッサ間で共有することの出来ない領域であり、コプロセッサB217のみが使用する領域として設定される。また、物理先頭アドレス402は命令メモリB209の「0xA000」番地、プログラムサイズ403は「0x2000」ワードサイズ、プログラム先頭アドレス404は「0x6000」番地が設定される。それにより、コプロセッサB217がプログラムアドレス空間の「0x6000」番地から「0x2000」ワードサイズの領域へプログラムアクセスを実行する場合、命令メモリB209の「0xA000」番地から「0x2000」ワードサイズのメモリ空間へアクセスする。
以上のようにして、本実施の形態に係るメモリ共有システム200は動作する。このような動作は、メモリ共有システム200の動作が終了するまで継続的に行われる。
このように、本実施の形態によれば、メモリ共有システムは、命令メモリにロードされた共有プログラムの使用頻度を監視して、使用頻度が高い共有プログラムを非共有に変更する。それにより、メモリ共有システムは、システムのリアルタイム性を保つことができる。
上記各実施の形態の係るメモリ共有システム200の動作では、2つの検出部(メモリ利用情報レジスタ、カウンタ回路、比較回路)が同じエントリーナンバーのプログラム(領域)に対して検出動作を行っている。この場合、例えば、プロセッサAに対応した命令メモリAにロードされたプログラムについて、プロセッサBによるアクセス回数が多い場合だけでなく、プロセッサAによるアクセス回数が多い場合にも、そのプログラムの非共有化を行うことができる。逆に、プロセッサBに対応した命令メモリBにロードされたプログラムについて、プロセッサAによるアクセス回数が多い場合だけでなく、プロセッサBによるアクセス回数が多い場合にも、そのプログラムの非共有化を行うことができる。これらにより、メモリ共有システム200全体として、コプロセッサ処理能力の低下やリアルタイム性の低下を回避することが可能となる。
上記各実施の形態の動作では、2つの検出部が同じタイミングでアクセス回数の監視動作を開始している。ただし、本実施の形態はその例に限定されるものではない。例えば、カウンタB起動311用のレジスタへの入力時期を遅らせることで、プロセッサB側の検出部の動作開始タイミングを遅らせることができる。それにより、各検出部を所望のタイミングで動作させることが可能となる。
上記各実施の形態の動作において、プロセッサA側の検出部(メモリ利用情報レジスタ302、カウンタ回路304、比較回路306)が、プロセッサBに対応する命令メモリB209にロードされたプログラム(領域)に対するプロセッサAのアクセス回数を監視してもよい。その場合、プロセッサB側の検出部が、プロセッサAに対応する命令メモリA208にロードされたプログラム(領域)に対するプロセッサBのアクセス回数を監視してもよい。このような構成にすることで、アクセス回数が増加している場合には、プロセッサがアクセスする命令メモリを、そのプロセッサに対応した命令メモリに集約することができる。
上記各実施の形態の動作において、メモリ利用情報書き込み要求制御回路308が非共有化設定要求を出力している。ただし、本実施の形態はこの例に限定されるものではない。例えば、メモリ利用情報書き込み要求制御回路308がアクセス回数の増加をメインプロセッサ212へ通知し、メインプロセッサ212がメモリ利用情報検索・書き込み回路216にメモリ利用情報テーブル213を非共有に変更するように指示しても良い。それにより、非共有に設定する条件を自在に変更することができる。
上記各実施の形態では、コプロセッサ処理負荷計測回路207において、メモリ利用情報レジスタとカウンタと比較回路とを組み合わせた検出部が2つである場合について説明している。ただし、本実施の形態はこの例に限定されるものではなく、更に多くの検出部(メモリ利用情報レジスタ、カウンタ、比較回路)が存在していても良い。その場合、その検出部の数に応じてレジスタ群301のカウンタ起動用のレジスタおよびカウンタエントリーナンバーを設ければよい。それにより、複数の種類の共有プログラム(領域)に対して、アクセス回数の監視を行うことができる。
上記実施の形態では、コプロセッサ処理負荷計測回路207において、命令メモリにロードされた共有プログラムの使用頻度を監視して、使用頻度が高い共有プログラムを非共有に変更している。ただし、本実施の形態は、その例に限定されるものではなく、その逆、すなわち、1つの命令メモリにロードされた非共有プログラムの使用頻度を監視して、所定の時間内で、使用頻度が低い非共有プログラムを共有可能に変更することも可能である。あるいは、複数の命令メモリの各々にロードされた同じ非共有プログラムの使用頻度を監視して、所定の時間内で、使用頻度が低い非共有プログラムを共有可能に変更することも可能である。例えば、使用頻度の低いプログラムの検出用に、新たに検出部(メモリ利用情報レジスタ、カウンタ、比較回路)を設け、更に、その検出部に応じてレジスタ群301のカウンタ起動用のレジスタおよびカウンタエントリーナンバーを設ける方法が考えられる。それにより、命令メモリを有効に利用することができる。
(第2の実施の形態)
上記第1の実施の形態のメモリ共有システム200は、コプロセッサを用いて情報処理を行う様々な装置に適用することが可能である。そのような装置としては、ブロードバンドルータ用の組み込みプロセッサ(以下、「ネットワークプロセッサ」ともいう)が例示される。以下では、上記第1の実施の形態のメモリ共有システムをそのようなネットワークプロセッサに適用した例について説明する。
上記第1の実施の形態のメモリ共有システム200は、コプロセッサを用いて情報処理を行う様々な装置に適用することが可能である。そのような装置としては、ブロードバンドルータ用の組み込みプロセッサ(以下、「ネットワークプロセッサ」ともいう)が例示される。以下では、上記第1の実施の形態のメモリ共有システムをそのようなネットワークプロセッサに適用した例について説明する。
ブロードバンドルータなどのインターネット接続用端末向けの機能を取り込んだネットワークプロセッサは、高スループット、低消費電力が求められている。このようなネットワークプロセッサは、メインCPU、ネットワーク処理用のコプロセッサ、各種I/O機能および付加機能を一つのチップにまとめたものである。チップ内部に実装されているネットワーク処理用コプロセッサは、10M/100M/1000MbpsのEthernetに対応している。ここで使われるネットワーク処理用コプロセッサは、単なるMAC(Media Access Control)機能を実現しているだけではなく、メインCPUの負荷を低減させるためのアプリケーション処理機能を持っている。最近では、TCP/IPアクセラレート機能、DESやAESなどの暗号化・復号化アルゴリズム処理のアクセラレータ機能を有し、セキュリティを維持したまま高速に通信できるものが増えている。ただし、TCPはTransport Control Protocol、IPはInternet protocolの略である。DESはdata encryption standard、AESはadvanced encryption standardの略である。ネットワークプロセッサとしては、IntelIXP425が例示される。
そのようなネットワークプロセッサは、メインCPUコア、2個のEthernet用コプロセッサ、音声処理用コプロセッサ、暗号化・復号化用コプロセッサ、汎用I/Oを具備しており、多数のコプロセッサで構成されている。図8は、第1の実施の形態に係るメモリ共有システムを、そのようなネットワークプロセッサを含むネットワークルータに適用した構成例を示すブロック図である。ネットワークルータは、大容量メモリ501とネットワークプロセッサ518とを具備している。ネットワークプロセッサ518は、メインCPU512と、Ethernet用コプロセッサA514と、Ethernet用コプロセッサB517と、制御部520と、命令メモリA508と、命令メモリB509とを備えている。ネットワークプロセッサ518は、更に、キュー管理部525と、PCIコントローラ521と、拡張バスコントローラ522と、SDRAMコントローラ523と、周辺回路24とを備えている。制御部520は、共有化制御回路515と、プログラム転送回路(DMAコントローラ)511と、メモリアクセス制御回路510と、メモリ利用情報検索・書き込み回路516と、コプロセッサ処理負荷計測回路507と、メモリ利用情報テーブル513とを含んでいる。ただし、音声処理用コプロセッサや暗号化・復号化用コプロセッサについては記載を省略している。
図1のメモリ共有システム200のプロセッサ518と図8のネットワークプロセッサ518との対応関係は以下のとおりである。メインCPU512、コプロセッサA514、コプロセッサB517、制御部520、命令メモリA508、命令メモリB509は、メインプロセッサ212、コプロセッサA214、コプロセッサB217、制御部220、命令メモリA208、命令メモリB209に対応する。また、制御部520の共有化制御回路515、プログラム転送回路(DMAコントローラ)511、メモリアクセス制御回路510は、制御部220の共有化制御回路215、プログラム転送回路211、メモリアクセス制御回路210に対応する。制御部520のメモリ利用情報検索・書き込み回路516、コプロセッサ処理負荷計測回路507、メモリ利用情報テーブル513は、メモリ利用情報検索・書き込み回路216、コプロセッサ処理負荷計測回路207、メモリ利用情報テーブル213に対応する。
Ethernetコントローラとして、一方の側のネットワーク(例示:網側のWAN)および他方の側のネットワーク(例示:端末側のLAN)用に、2個のEthernet用コプロセッサが搭載されている。この図では、例えば、Ethernet用コプロセッサA514とWANとが接続され、Ethernet用コプロセッサB517とが接続される。両コプロセッサA514、B517は、Ethernetプロトコルで定義されたMAC処理およびTCP/IPで定義されたアプリケーション処理を行う。両コプロセッサ514、518は、Ethernetパケットヘッダ処理が異なる程度で、ほとんど同じ処理を行う。
従来のネットワークプロセッサを備えるシステムにおいて、コプロセッサのプログラムを共有メモリにおいた場合、TCP/IPで定義されたアプリケーション処理実行の度に、共有メモリへのアクセスが、両コプロセッサより発生することになる。この場合、一方のコプロセッサが共有メモリにアクセスをしている間は、他方のコプロセッサは共有メモリにアクセス出来ず、アクセス待ち状態となる。これにより、コプロセッサはアプリケーション処理が行えず、パケット処理速度が低下する。
しかし、本実施の形態に係るネットワークプロセッサ518(図8)を備えるシステムには、上記第1の実施の形態に係るメモリ共有システムが適用されている。そのため、コプロセッサのプログラムを共有メモリにおいた場合であっても、アクセスが多発するプログラムをコプロセッサ個別のメモリに格納し直すことが出来る。その結果としてアクセス待ち状態が解消されるので、アプリケーションの処理速度の低下を抑制することが出来る。その結果、このネットワークプロセッサ518は、高スループットとなり、相対的に電力消費を低減できる。
以上説明されるように、上記各実施の形態では、例えばコプロセッサA214およびコプロセッサB217のうちのいずれか一方のコプロセッサがプログラムアクセスを行うとき、メモリ利用情報テーブル213へ登録されているプログラム情報を検索する。そして、目的とするプログラムが他方のコプロセッサによって既にロードされ、そのプログラムの情報がメモリ利用情報テーブル213に既に登録されており、且つ、共有情報ステータスが共有可能なプログラムを示している場合、以下のようにしてプログラムを共有する。すなわち、メモリ利用情報検索・書き込み回路216へメモリ利用情報書き込み要求を出力し、共有されたプログラム領域として共有情報ステータスを更新する。それにより、コプロセッサA214およびコプロセッサB217間におけるプログラム共有を行うことが可能である。
また、上記各実施の形態では、アクセス頻度の高いプログラムがコプロセッサ間で共有され、コプロセッサA214およびコプロセッサB217が同一の命令メモリに対して同時にアクセスを行うことでコプロセッサ処理能力が低下する場合、当該プログラムを非共有にする。具体的には、コプロセッサ処理負荷計測回路207が、メモリ利用情報テーブル213へ登録された共有のプログラム領域へのコプロセッサのアクセス回数を計測する。そして、アクセス回数が閾値設定309の閾値を超えた場合、計測対象のプログラム領域をコプロセッサ間で共有出来ない領域として非共有設定とする。
このとき、非共有設定されたプログラム領域は、一方のコプロセッサからのみアクセス可能な領域である。そのため、他方のコプロセッサが、そのプログラム領域内にロードされているプログラムを実行する場合、大容量メモリ201より同一のプログラムを新たに読み出し、自身の命令メモリへロードする。このため、それぞれのコプロセッサはそのプログラムをアクセスするとき、別々の命令メモリにロードされた同一のプログラムファイルをアクセスすることとなる。その結果、コプロセッサA214およびコプロセッサB217が同一の命令メモリをアクセスすることにより引き起こされるコプロセッサ処理能力の低下を回避することが可能となる。
このように、上記各実施の形態によれば、メモリ共有システムおよびネットワークプロセッサは、命令メモリにロードされた共有プログラムの使用頻度を監視して、使用頻度が高い共有プログラムを非共有に変更する。それにより、メモリ共有システムおよびネットワークプロセッサは、アプリケーションの処理速度の低下を抑制でき、システムのリアルタイム性を保つことができる。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
200:メモリ共有システム
201:大容量メモリ
202:処理プログラム群
203、204、205、206:プログラム
207:プロセッサ処理負荷計測回路
208、209:命令メモリ
210:メモリアクセス制御回路
211:プログラム転送回路
212:メインプロセッサ
213:メモリ利用情報テーブル
215:共有化制御回路
216:メモリ利用情報検索・書き込み回路
218:プロセッサ
220:制御部
300:メモリ利用情報検索要求制御回路
301:レジスタ群
302:メモリ利用情報レジスタA
303:メモリ利用情報レジスタB
304:カウンタ回路A
305:カウンタ回路B
306、307:比較回路
308:メモリ利用情報書き込み要求制御回路
309:アクセス回数が閾値設定
312:カウンタAエントリーナンバー
313:カウンタBエントリーナンバー
314:エントリーナンバー
315:物理先頭アドレス
316:プログラムサイズ
317:エントリーナンバー
318:物理先頭アドレス
319:プログラムサイズ
400:エントリーナンバー
401:共有情報ステータス
402:物理先頭アドレス
403:サイズ
404:プログラム先頭アドレス
405:共有設定情報
406:コプロセッサA利用情報
407:コプロセッサB利用情報
408:プログラム情報
409:プログラム情報
201:大容量メモリ
202:処理プログラム群
203、204、205、206:プログラム
207:プロセッサ処理負荷計測回路
208、209:命令メモリ
210:メモリアクセス制御回路
211:プログラム転送回路
212:メインプロセッサ
213:メモリ利用情報テーブル
215:共有化制御回路
216:メモリ利用情報検索・書き込み回路
218:プロセッサ
220:制御部
300:メモリ利用情報検索要求制御回路
301:レジスタ群
302:メモリ利用情報レジスタA
303:メモリ利用情報レジスタB
304:カウンタ回路A
305:カウンタ回路B
306、307:比較回路
308:メモリ利用情報書き込み要求制御回路
309:アクセス回数が閾値設定
312:カウンタAエントリーナンバー
313:カウンタBエントリーナンバー
314:エントリーナンバー
315:物理先頭アドレス
316:プログラムサイズ
317:エントリーナンバー
318:物理先頭アドレス
319:プログラムサイズ
400:エントリーナンバー
401:共有情報ステータス
402:物理先頭アドレス
403:サイズ
404:プログラム先頭アドレス
405:共有設定情報
406:コプロセッサA利用情報
407:コプロセッサB利用情報
408:プログラム情報
409:プログラム情報
Claims (13)
- 複数のプロセッサと、
前記複数のプロセッサに対応して設けられた複数の命令メモリと、
前記複数のプロセッサが実行するプログラムを前記複数の命令メモリへロードする制御部と
を具備し、
前記制御部は、
前記複数のプロセッサが実行するプログラムを、前記複数の命令メモリのいずれかに、共有又は非共有として保持するための共有情報を有するメモリ利用情報テーブルと、
前記複数の命令メモリのいずれかにロードされたプログラムに前記複数のプロセッサがアクセスする頻度を計測する処理負荷計測回路と
を備え、
前記命令メモリにロードされたプログラムの共有/非共有は、前記処理負荷計測回路の計測結果に基づいて選択され、前記共有情報として記録される
メモリ共有システム。 - 請求項1に記載のメモリ共有システムにおいて、
前記命令メモリにロードされたプログラムの前記共有情報は、前記頻度が予め設定された閾値を上回ったとき、非共有に設定される
メモリ共有システム。 - 請求項1に記載のメモリ共有システムにおいて、
前記メモリ利用情報テーブルが有する前記共有情報は、
前記複数の命令メモリのいずれかに保持されているプログラムを前記複数のプロセッサがアクセスすることを示す共有設定情報フィールドと、
前記複数の命令メモリのいずれかにロードされたプログラムの、当該命令メモリの領域の先頭アドレスを示す物理先頭アドレスフィールドと、
前記複数の命令メモリのいずれかにロードされたプログラムがアドレッシングされている領域のプログラム先頭アドレスを示すプログラム先頭アドレスフィールドと、
前記複数の命令メモリのいずれかにロードされたプログラムのサイズを示すサイズフィールドと
を有する
メモリ共有システム。 - 請求項1に記載のメモリ共有システムにおいて、
前記処理負荷計測回路は、
前記複数の命令メモリのうちの第1命令メモリにロードされた第1プログラムを特定する情報を格納する第1メモリ利用情報レジスタ群と、
前記特定する情報に基づいて、前記第1プログラムに、前記複数のプロセッサのうちの第1プロセッサがアクセスする第1頻度を計測する第1カウンタ回路と、
前記第1頻度を基準値と比較する第1比較回路と、
前記第1頻度が前記基準値を上回った場合、前記メモリ利用情報テーブルにおいて、前記第1プログラムが非共有となるように共有情報を書き換えることを要求する書き換え要求制御回路と
を備える
メモリ共有システム。 - 請求項4に記載のメモリ共有システムにおいて、
前記処理負荷計測回路は、
前記基準値と、前記第1頻度の計測開始を示す命令と、前記第1プログラムを示す情報とを格納する第1レジスタ群と、
前記第1プログラムを示す情報に基づいて、前記メモリ利用情報テーブルから前記第1プログラムを特定する情報を取得して、メモリ利用情報レジスタ群へ出力するメモリ利用情報検索要求制御回路と
を更に備える
メモリ共有システム。 - 請求項4に記載のメモリ共有システムにおいて、
前記処理負荷計測回路は、
前記第1プログラムを特定する情報を格納する第2メモリ利用情報レジスタ群と、
前記特定する情報に基づいて、前記第1命令メモリにロードされた前記第1プログラムに前記複数のプロセッサのうちの第2プロセッサがアクセスする第2頻度を計測する第2カウンタ回路と、
前記第2頻度を基準値と比較する第2比較回路と
を更に備え、
前記書き換え要求制御回路は、前記第1頻度および前記第2頻度の少なくとも一方が前記基準値を上回った場合、前記メモリ利用情報テーブルにおいて、前記第1プログラムが非共有となるように前記共有情報の書き換えを指示する
メモリ共有システム。 - 請求項1に記載のメモリ共有システムにおいて、
前記制御部は、
前記複数のプロセッサのうちの第1プロセッサからのプログラムの呼び出しに応答して、前記複数の命令メモリのうちの前記第1プロセッサに対応する第1命令メモリへ前記プログラムをロードし、
前記メモリ利用情報テーブルにおいて、前記第1プログラムを前記複数のプロセッサ間で共有となるように前記共有情報を設定し、
前記処理負荷計測回路は、
前記第1命令メモリにロードされた前記プログラムに前記複数のプロセッサがアクセスする頻度を計測する
メモリ共有システム。 - 請求項7に記載のメモリ共有システムにおいて、
前記制御部は、
前記第1命令メモリにロードされた前記プログラムが非共有に再設定されたとき、前記複数のプロセッサのうちの第2プロセッサからの前記プログラムの呼び出しに応答して、前記複数の命令メモリのうちの前記第2プロセッサに対応する第2命令メモリへ前記プログラムをロードする
メモリ共有システム。 - 請求項4に記載のメモリ共有システムにおいて、
前記制御部は、
前記複数のプロセッサのいずれかによるプログラムの実行の指示に応答して、前記メモリ利用情報テーブルを参照して、前記複数の命令メモリのいずれかに当該プログラムがロードされているか否かを検索する共有化制御回路と、
当該プログラムがロードされていない場合、前記共有化制御回路の命令に基づいて、当該プログラムを記憶部から取得して、前記複数の命令メモリのうちの対応するものへロードする転送回路と、
前記共有化制御回路の命令に基づいて、前記ロードされたプログラムに関する共有情報を前記メモリ利用情報テーブルに書き込むメモリ利用情報検索書き込み回路と
更に備える
メモリ共有システム。 - 請求項9に記載のメモリ共有システムにおいて、
前記共有化制御回路は、当該プログラムがロードされている場合、当該プログラムの共有情報の書き換えを命令し、
前記メモリ利用情報検索書き込み回路は、前記書き換え命令に基づいて、前記メモリ利用情報テーブルの当該プログラムの共有情報を共有に書き換える
メモリ共有システム。 - 請求項1に記載のメモリ共有システムを具備し、
前記メモリ共有システムは、
複数のプロセッサの一つとして、一方のネットワークに接続される第1Ethernet用コプロセッサと、
前記複数のプロセッサの他の一つとして、他方のネットワークに接続される第2Ethernet用コプロセッサと
を備える
ネットワークルータ。 - 複数のプロセッサのうちの第1プロセッサからのプログラムの呼び出しに応答して、前記複数のプロセッサに対応して設けられた複数の命令メモリのうちの前記第1プロセッサに対応する第1命令メモリへ前記プログラムをロードするステップと、
前記第1プログラムを前記複数のプロセッサ間で共有に設定するステップと、
前記第1命令メモリにロードされた前記プログラムに前記複数のプロセッサがアクセスする頻度を計測するステップと、
前記頻度が予め設定された閾値を上回ったとき、前記第1命令メモリにロードされた前記プログラムを非共有に設定するステップと
を具備する
メモリ共有方法。 - 請求項12に記載のメモリ共有方法において、
前記第1命令メモリにロードされた前記プログラムが非共有に再設定されたとき、前記複数のプロセッサのうちの第2プロセッサからの前記プログラムの呼び出しに応答して、前記複数の命令メモリのうちの前記第2プロセッサに対応する第2命令メモリへ前記プログラムをロードするステップを更に具備する
メモリ共有方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012260369A JP2014106819A (ja) | 2012-11-28 | 2012-11-28 | メモリ共有システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012260369A JP2014106819A (ja) | 2012-11-28 | 2012-11-28 | メモリ共有システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014106819A true JP2014106819A (ja) | 2014-06-09 |
Family
ID=51028233
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012260369A Pending JP2014106819A (ja) | 2012-11-28 | 2012-11-28 | メモリ共有システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2014106819A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018022319A (ja) * | 2016-08-03 | 2018-02-08 | ルネサスエレクトロニクス株式会社 | 半導体装置、割り当て方法及び表示システム |
CN114063917A (zh) * | 2021-11-11 | 2022-02-18 | 天津兆讯电子技术有限公司 | 快速读取程序数据的方法和微控制器 |
-
2012
- 2012-11-28 JP JP2012260369A patent/JP2014106819A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018022319A (ja) * | 2016-08-03 | 2018-02-08 | ルネサスエレクトロニクス株式会社 | 半導体装置、割り当て方法及び表示システム |
CN114063917A (zh) * | 2021-11-11 | 2022-02-18 | 天津兆讯电子技术有限公司 | 快速读取程序数据的方法和微控制器 |
CN114063917B (zh) * | 2021-11-11 | 2024-01-30 | 天津兆讯电子技术有限公司 | 快速读取程序数据的方法和微控制器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3057272B1 (en) | Technologies for concurrency of cuckoo hashing flow lookup | |
KR101455899B1 (ko) | 다수의 가상 서버들 사이에 공유 자원들의 할당을 통한 소프트웨어 제어기능을 갖는 마이크로 프로세서 | |
US9037810B2 (en) | Pre-fetching of data packets | |
US20130132503A1 (en) | Computer system and network interface supporting class of service queues | |
US11409506B2 (en) | Data plane semantics for software virtual switches | |
US9336153B2 (en) | Computer system, cache management method, and computer | |
US7650488B2 (en) | Communication between processor core partitions with exclusive read or write to descriptor queues for shared memory space | |
US9632958B2 (en) | System for migrating stash transactions | |
US9092275B2 (en) | Store operation with conditional push of a tag value to a queue | |
US10932202B2 (en) | Technologies for dynamic multi-core network packet processing distribution | |
US11960945B2 (en) | Message passing circuitry and method | |
US10810133B1 (en) | Address translation and address translation memory for storage class memory | |
WO2016000470A1 (zh) | 一种内存控制方法和装置 | |
US8671232B1 (en) | System and method for dynamically migrating stash transactions | |
US20200028930A1 (en) | Network interface device and host processing device | |
WO2010024071A1 (ja) | キャッシュメモリ、そのシステム、その利用方法及びその利用プログラム | |
JP2005209206A (ja) | マルチプロセッサシステムにおけるデータ転送方法、マルチプロセッサシステム、及び、この方法を実施するプロセッサ | |
US11429438B2 (en) | Network interface device and host processing device | |
JP2014106819A (ja) | メモリ共有システム | |
JP5254710B2 (ja) | データ転送装置、データ転送方法およびプロセッサ | |
JP4504134B2 (ja) | システム制御装置、投機フェッチ方法および情報処理装置 | |
US10754789B1 (en) | Address translation for storage class memory in a system that includes virtual machines | |
CN116132369A (zh) | 云网关服务器中多网口的流量分发方法及相关设备 | |
US20220417216A1 (en) | Host firewall interfaces for controllers | |
US20130212124A1 (en) | Information processing apparatus and control method thereof |