JP5598554B2 - システム、およびデータロード方法 - Google Patents

システム、およびデータロード方法 Download PDF

Info

Publication number
JP5598554B2
JP5598554B2 JP2012554533A JP2012554533A JP5598554B2 JP 5598554 B2 JP5598554 B2 JP 5598554B2 JP 2012554533 A JP2012554533 A JP 2012554533A JP 2012554533 A JP2012554533 A JP 2012554533A JP 5598554 B2 JP5598554 B2 JP 5598554B2
Authority
JP
Japan
Prior art keywords
application
area
program
preload
fragment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012554533A
Other languages
English (en)
Other versions
JPWO2012101761A1 (ja
Inventor
康志 栗原
浩一郎 山下
貴久 鈴木
宏真 山内
文彦 早川
尚記 大舘
哲夫 平木
俊也 大友
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2012101761A1 publication Critical patent/JPWO2012101761A1/ja
Application granted granted Critical
Publication of JP5598554B2 publication Critical patent/JP5598554B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • 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/445Program loading or initiating
    • G06F9/44557Code layout in executable memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Description

本発明は、アプリケーションを実行するシステム、およびデータロード方法に関する。
従来、ユーザが対象アプリケーションを起動させたときに対象アプリケーションのプログラムをストレージからメモリへロードするため、実行開始するまでに時間がかかってしまい、ユーザの応答性が非常に悪くなる場合がある。
そこで、対象アプリケーションの実行履歴に基づいて起動時刻を予測し、予測した起動時刻の前に、対象アプリケーションをロードする技術が知られている(たとえば、下記特許文献1参照。)。対象アプリケーションがロードされると、対象アプリケーションのコンテキスト情報が生成される。コンテキスト情報とは、たとえば、アプリケーションの実行コード、アプリケーションの実行状態、該アプリケーション内の変数などが含まれる情報である。
特開2005−275707号公報
しかしながら、対象アプリケーションの起動指示前にアプリケーションをロードすると、実行中のアプリケーションのデータをスワップしてしまう恐れがある。また、実行中のアプリケーションの処理によっては、対象アプリケーションのロード先を使用する場合がある。この場合、ロードした対象アプリケーションのコンテキスト情報はストレージへスワップされる。すなわち、起動時の開始を早めるために、起動開始前にRAMへロードしているにも関わらず、スワップされてしまい、起動開始時に再度ストレージからRAMへコンテキスト情報を格納しなければならない問題点があった。また、あらかじめロードしたアプリケーションがスワップされないようにロードした領域を保護すると、実行中のアプリケーションの使用可能メモリ領域を制限してしまうことになり、性能が低下してしまう問題点があった。
本発明は、上述した従来技術による問題点を解消するため、アプリケーションの起動時の処理を高速化でき、応答性を向上させることができるシステム、およびデータロード方法を提供することを目的とする。
本発明の一観点によれば、メモリのメモリ領域にロードされたプログラムを実行し、前記プログラム以外の対象プログラムを前記メモリの複数のフラグメント領域にプリロードし、複数のフラグメント領域に格納される対象プログラムを結合して前記メモリ領域に展開し、対象プログラムを実行するシステム、およびデータロード方法が提供される。
本システム、およびデータロード方法によれば、アプリケーションの起動時の処理を高速化でき、応答性を向上させることができるという効果を奏する。
図1は、本発明の一例を示す説明図である。 図2は、マルチコアプロセッサシステムのハードウェアを示すブロック図である。 図3は、マルチコアプロセッサシステム200の機能ブロック図を示す説明図である。 図4は、トリガテーブルの一例を示す説明図である。 図5は、RAM211の空き領域の一例を示す説明図である。 図6は、フラグメント領域管理テーブルの一例を示す説明図である。 図7は、プリロードアプリ管理テーブルの一例を示す説明図である。 図8は、並列プリローダの割当例を示す説明図である。 図9は、アプリ#Aの実行例を示す説明図である。 図10は、アプリ#Aを実行後のRAM211の空き領域を示す説明図である。 図11は、空き領域変化に伴うフラグメント領域管理テーブル600の更新例を示す説明図である。 図12は、アプリ#Bのプリロード例を示す説明図である。 図13は、アプリ#Bのプリロード先の確保例を示す説明図である。 図14は、プリロードアプリ管理テーブル700の更新例を示す説明図である。 図15は、アプリ#Bをプリロード後のRAM211の領域例を示す説明図である。 図16は、アプリ#Bの実行を示す説明図である。 図17は、例1におけるアプリ#Bのコンテキスト生成後のRAM211の領域を示す説明図である。 図18は、例1におけるアプリ#Bのコンテキスト生成後のフラグメント領域管理テーブル600を示す説明図である。 図19は、プリロードアプリ管理テーブル700の更新例を示す説明図である。 図20は、アプリ#Aのコンテキストの領域が動的に広がる例を示す説明図である。 図21は、フラグメント領域管理テーブル600の更新例を示す説明図である。 図22は、プリロードアプリ管理テーブル700の更新例を示す説明図である。 図23は、アプリ#Bの実行を示す説明図である。 図24は、例2におけるアプリ#Bのコンテキスト生成後のRAM211の領域を示す説明図である。 図25は、例2におけるアプリ#Bのコンテキスト生成後のフラグメント領域管理テーブル600を示す説明図である。 図26は、マスタOSによるロード制御処理手順の一例を示すフローチャートである。 図27は、各OSによるロード制御処理手順の一例を示すフローチャートである。 図28は、並列プリローダによるプリロード処理手順の一例を示すフローチャートである。
以下に添付図面を参照して、本発明にかかるシステム、およびデータロード方法の好適な実施の形態を詳細に説明する。
図1は、本発明の一例を示す説明図である。CPU(Central Processing Unit)が実行するOS(Operating System)が、第1の記憶装置(たとえば、ストレージ)に記憶された対象アプリケーションのプログラムを複数のコードに分割する。OSが、ストレージよりもアクセス速度が速い第2の記憶装置(たとえば、RAM)内の空き領域群から、合計サイズが対象アプリケーションのプログラムのサイズより大きい2以上の空き領域を特定する。ここで、たとえば、1BYTEに格納可能領域がy[KB]であるとし、領域のサイズはアドレスに基づいて算出される。OSが、特定された2以上の空き領域に分割された複数の部分コードを分散して格納する。
OSが、対象アプリケーションの起動指示を受け付けると、格納された複数の部分コードを結合して、対象アプリケーションのコンテキストをRAM内に生成する。また、OSが、RAM内の空き領域群のうちの所定サイズ以下の空き領域から、合計サイズが対象アプリケーションのプログラムのサイズより大きい2以上の空き領域を特定してもよい。図1では、対象アプリケーションのプログラムを分割した部分コードがすべてRAMに格納されているが、部分コード群のうちの一部の部分コードであってもよい。
本システムはシングルコアシステムであってもマルチコアプロセッサシステムであってもよいが、本実施の形態ではマルチコアプロセッサシステムを例に挙げて説明する。ここで、マルチコアプロセッサシステムにおいて、マルチコアプロセッサとは、コアが複数搭載されたプロセッサである。コアが複数搭載されていれば、複数のコアが搭載された単一のプロセッサでもよく、シングルコアのプロセッサが並列されているプロセッサ群でもよい。なお、本実施の形態では、説明を単純化するため、シングルコアのプロセッサが並列されているプロセッサ群を例に挙げて説明する。
(マルチコアプロセッサシステムのハードウェア)
図2は、マルチコアプロセッサシステムのハードウェアを示すブロック図である。図2において、マルチコアプロセッサシステム200は、CPU#0と、CPU#1と、ディスプレイ201と、キーボード202と、I/F(InterFace)203と、アービター204と、共有メモリ205と、クロック供給回路207と、を有している。CPU#0と、CPU#1と、ディスプレイ201と、キーボード202と、I/F203と、アービター204とは、バス206を介して接続されている。
ここで、CPU#0とCPU#1は、それぞれレジスタとコアとキャッシュ(キャッシュ240,241)とMMU(Memory Management Unit)(MMU230,231)を有している。コアは、演算機能を有している。各CPU内のレジスタは、PC(Program Counter)やリセットレジスタを有している。
各CPU内のキャッシュ(キャッシュ240,241)は、共有メモリ205よりも動作が速く、容量が小さいメモリである。各CPU内のキャッシュは、たとえば、共有メモリ205から読み出されたデータを一時的に記憶する。各CPU内のキャッシュは、たとえば、共有メモリ205への書き込みデータを一時的に記憶する。各CPU内のキャッシュは、他のCPUとスヌープコントローラ208を介して接続されている。
さらに、各CPU内のキャッシュはプリロード用のフラグを有し、該フラグがONに設定されると、後述する並列プリローダがアプリケーションのプリロードを開始する。並列プリローダが実行中には他のアプリケーションのプログラムは実行待機状態となる。スヌープコントローラ208は、キャッシュ間で共有するデータがいずれかのキャッシュで更新された場合、該更新を検出し、他のキャッシュ内の該データも更新する機能を有している。各CPU内のMMU(MMU230,231)は、論理アドレスから物理アドレスへの変換やRAM211領域に関する空き領域の空き領域リストの管理を行う。
CPU#0はマスタCPUであり、マルチコアプロセッサシステム200の全体の制御を司り、OS220を実行する。OS220はマスタOSであり、CPU#0に割り当てられたスレッドを実行する。OS220はスケジューラを有し、スケジューラは起動指示を受け付けたアプリケーションをマルチコアプロセッサのうちのいずれのCPUに割り当てるかを制御する機能を有している。スケジューラはCPU#0に割り当てられたアプリケーションの実行順序を制御する機能を有する。
CPU#1はスレーブCPUであり、OS221を実行する。OS221はスレーブOSであり、CPU#1に割り当てられたスレッドを実行する。OS221はスケジューラを有し、スケジューラはCPU#1に割り当てられたアプリケーションの実行順序を制御する機能を有する。
ディスプレイ201は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。ディスプレイ201は、たとえば、TFT液晶ディスプレイなどを採用することができる。キーボード202は、数字、各種指示などの入力のためのキーを有し、データの入力を行う。また、キーボード202は、タッチパネル式の入力パッドやテンキーなどであってもよい。
I/F203は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワークに接続され、ネットワークを介して他の装置に接続される。そして、I/F203は、ネットワークと内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F203には、たとえばモデムやLANアダプタなどを採用することができる。本実施の形態では、後述するフラッシュROM(Read Only Memory)213からRAM(Random Access Memory)211へアプリケーションのプログラムをプリロードしているが、I/Fを介してインターネットなどのネットワークからRAM211へアプリケーションのプログラムをプリロードしてもよい。
共有メモリ205は、CPU#0とCPU#1に共有されるメモリであり、具体的には、たとえば、RAM211と、ROM212と、フラッシュROM213と、フラッシュROMコントローラ214と、フラッシュROM215と、などを有している。アービター204は、各CPUから共有メモリ205へのアクセス要求を調停する。
ROM212は、ブートプログラムなどのプログラムを記憶している。RAM211は、各CPUのワークエリアとして使用される。フラッシュROM213は、OS220やOS221などのシステムソフトウェアやアプリケーションのプログラムを記憶している。RAM211はフラッシュROM213よりも各CPUからのアクセス速度が速い。各OSがアプリケーションのプログラムをフラッシュROM213からRAM211へロードすることにより、該アプリケーションのコンテキスト情報がRAM211内に展開される。
フラッシュROMコントローラ214は、各CPUの制御に従ってフラッシュROM215に対するデータのリード/ライトを制御する。フラッシュROM215は、フラッシュROMコントローラ214の制御で書き込まれたデータを記憶する。データの具体例としては、マルチコアプロセッサシステム200を使用するユーザがI/F203を通して取得した画像データ、映像データなどである。フラッシュROM215は、たとえば、メモリカード、SDカードなどを採用することができる。
クロック供給回路207は、CPUなど各部へクロックを供給する。ここでは、クロック供給回路207が供給可能なクロックの周波数は100[MHz]と200[MHz]とする。クロック供給回路207は、レジスタ209とレジスタ210を有する。レジスタ209は、CPU#0へ与えるクロックの周波数を設定可能であり、レジスタ210は、CPU#1へ与えるクロックの周波数を設定可能である。
レジスタの値209が0であれば、CPU#0へ与えるクロックの周波数が100[MHz]であり、レジスタ209の値が1であれば、CPU#0へ与えるクロックの周波数が200[MHz]である。レジスタ210の値が0であれば、CPU#1へ与えるクロックの周波数が100[MHz]であり、レジスタ210の値が1であれば、CPU#1へ与えるクロックの周波数が200[MHz]である。本実施の形態では、アプリケーションのプリロード時に各CPUへ与えるクロックの周波数を200[MHz]とし、通常のアプリケーションの実行中に各CPUへ与えるクロックの周波数を100[MHz]とする。
(マルチコアプロセッサシステム200の機能ブロック図)
図3は、マルチコアプロセッサシステム200の機能ブロック図を示す説明図である。マルチコアプロセッサシステム200は、プリロード部301と、展開部302と、実行部303と、制御部304と、を有する。具体的には、たとえば、プリロード部301〜制御部304を有するプログラムがフラッシュROM213などのストレージに記憶されている。CPU#0やCPU#1が該記憶装置にアクセスして該プログラムを読み出し、該プログラム内にコーディングされている処理を実行することにより、該プリロード部301〜制御部304の処理が実行される。
プリロード部301は、対象アプリケーションのプログラムをRAM211の複数のフラグメント領域にプリロードする。ここで、フラグメント領域とは、RAM211の空き領域のうち、格納可能なデータのサイズが所定サイズ以下である空き領域である。本実施の形態では、各アプリケーションのサイズの中で最も小さいサイズ(Min(アプリケーションのサイズ))≧所定サイズとする。プリロード部301は、対象アプリケーションのプログラムが実行されるまでの予測時刻と対象アプリケーションのプログラムをプリロードするための時間とが所定の関係を満たすときに、プリロ−ドを開始する。また、プリロード部301は、プロセッサが他のアプリケーションを実行していないときに、対象アプリケーションのプログラムをプリロードしてもよい。
プリロード部301は、分割部311と、特定部312と、格納部313と、を有している。分割部311は、フラッシュROM213などのストレージに記憶された対象アプリケーションのプログラムを複数のコードに分割する。特定部312は、フラッシュROM213よりもアクセス速度が速いRAM211内の空き領域群から、合計サイズが対象アプリケーションのプログラムのサイズより大きい2以上の空き領域を特定する。格納部313は、特定部312により特定された2以上の空き領域に分割部311により分割された複数のコードを分散して格納する。
制御部304は、対象アプリケーションのプログラムをプリロードするときの動作クロックの周波数を、プログラムを実行するときの動作クロックの周波数より高くする。
展開部302は、複数のフラグメント領域に格納されている対象アプリケーションのプログラムを結合してRAM211の領域に展開する。実行部303は、展開することにより得られる対象アプリケーションのコンテキスト情報に基づいて対象アプリケーションのプログラムを実行する。また、展開部302は、対象アプリケーションのプログラムの一部がフラグメント領域に格納されているとき、対象アプリケーションのプログラムの一部以外のプログラムをプリロードする。そして、展開部302は、フラグメント領域に格納される対象プログラムの一部と結合して、RAM211の領域に展開する。
実行部303は、展開部302により展開された対象アプリケーションのプログラムのコンテキストを用いて対象アプリケーションのプログラムを実行する。
以下に例1,2を用いて詳細に説明する。例1では、アプリ#Bのプログラムをプリロードし、アプリ#Bの起動指示を受け付けると、各フラグメント領域にプリロードした部分コードを結合してアプリ#Bのコンテキスト情報を生成する例を示す。例2では、各フラグメント領域にアプリ#Bのプログラムの一部がプリロードされている場合、アプリ#Bのプログラムの残りのコードをロードし、プリロード済のコードと残りのコードを結合してアプリ#Bのコンテキスト情報を生成する例を示す。
(例1)
図4は、トリガテーブルの一例を示す説明図である。トリガテーブル400は、アプリケーションのIDの項目401と、サイズの項目402と、プリロード時間の項目403と、起動予測時刻の項目404と、を有している。アプリケーションのIDの項目401には、アプリケーションの識別情報が登録される。サイズの項目402には、アプリケーションのIDの項目401に識別情報が登録されたアプリケーションのサイズが登録される。
プリロード時間の項目403には、アプリケーションのIDの項目401に識別情報が登録されたアプリケーションのプログラムをプリロードするのに要するプリロード時間が登録される。プリロード時間については、アプリケーションの設計者がESLツール(Electronic System Level)などで計測してもよいし、OS220が複数回プリロード時間を計測して更新してもよい。起動予測時刻の項目404には、アプリケーションのIDの項目401に識別情報が登録されたアプリケーションの起動予測時刻が登録される。アプリケーションの起動予測については、公知(たとえば、上述の引用文献1を参照。)であるため、詳細な説明を省略する。
たとえば、アプリ#Bであれば、アプリ#Bのサイズは100[KB]であり、プリロード時間は500[ms]であり、起動予測時刻は8時15分00秒である。プリロードの開始が8時15分00秒の500[ms]前であれば、起動予測時刻までにアプリ#Bのプリロードが完了する。ここでは、Min(アプリケーションのサイズ)はアプリ#Cのサイズであるため、フラグメント領域は、空き領域群のうちサイズが80[KB]以下の空き領域である。
図5は、RAM211の空き領域の一例を示す説明図である。図5では、RAM211の領域と空き領域リスト500を示している。RAM211の領域では、使用領域と空き領域とが示されている。空き領域リスト500は、RAM211領域のうちの空き領域に関する物理アドレスの情報をデータとするノード501〜ノード50xを有している。空き領域リスト500では、物理アドレスの値が小さい順にノードが接続されている。
図6は、フラグメント領域管理テーブルの一例を示す説明図である。フラグメント領域管理テーブル600は、フラグメント領域の項目601と、フラグメントサイズの項目602と、状態の項目603と、を有している。フラグメント領域の項目601には、図5で示した空き領域のうち所定サイズ以下であるフラグメント領域のノード番号が登録される。フラグメント領域の項目601に登録されるノード番号と、空き領域リスト500のノード番号とは、関連付けられていることとする。フラグメントサイズの項目602には、フラグメント領域の項目601にノード番号が登録されたフラグメント領域に格納可能なデータのサイズが登録される。
状態の項目603は、フラグメント領域の項目601にアドレスが登録されたフラグメント領域にプリロードされたデータが格納されていれば、使用が登録され、プリロードされたデータが格納されていなければ、未使用が登録される。ここでは、図6で示すフラグメント領域管理テーブル600では、いずれのフラグメント領域も使用されていないため、すべて未使用が登録されている。
図7は、プリロードアプリ管理テーブルの一例を示す説明図である。プリロードアプリ管理テーブル700は、アプリケーションのIDの項目701と、利用フラグメントの項目702と、プリロード領域の項目703と、プリロード状態の項目704と、アプリケーション全体のプリロード状態の項目705と、を有している。アプリケーションのIDの項目701には、プリロードされたアプリケーションの識別情報が登録される。アプリケーションのIDの項目701に登録される識別情報と、図4のアプリケーションのIDの項目401に登録される識別情報と、は関連付けられていることとする。利用フラグメントの項目702は、プリロード先であるフラグメント領域のノード番号を登録する。利用フラグメントの項目702に登録されるノード番号と、フラグメント領域管理テーブル600内のフラグメント領域の項目601に登録されるノード番号とは、関連付けられていることとする。
プリロード領域の項目703には、アプリケーションのIDの項目701に識別情報が登録されたアプリケーションのプログラムのうち、利用フラグメントの項目702に登録されたノードが示すフラグメント領域に格納された部分コードの論理アドレスが登録される。プリロード状態の項目704には、該部分コードをフラグメント領域へ格納する処理が完了しているか未完了であるかが登録される。本実施の形態では、フラグメント領域に部分コードを格納後にプリロード状態の項目704には完了が登録される。そして、本実施の形態では、該フラグメント領域に実行中のアプリケーションの実行に関する情報が登録されると、部分コードが消されてしまうため、プリロード状態の項目704には未完了が登録される。アプリケーション全体のプリロード状態の項目705には、アプリケーション全体をフラグメント領域へ格納する処理が完了しているか未完了であるかが登録される。本実施の形態では、フラグメント領域にアプリケーション全体を格納後にアプリケーション全体のプリロード状態の項目705には完了が登録される。そして、本実施の形態では、該フラグメント領域に実行中のアプリケーションの実行に関する情報が登録されると、部分コードが消されてしまうため、アプリケーション全体のプリロード状態の項目705には未完了が登録される。
図8は、並列プリローダの割当例を示す説明図である。並列プリローダとは、アプリケーションのプログラムをプリロードする機能を有する。OS220が、並列プリローダ(並列プリローダ801,802)を各CPUに割り当てる。各OSは、割り当てられた並列プリローダをスリープ状態に設定する。
図9は、アプリ#Aの実行例を示す説明図である。OS220が、アプリ#Aの起動指示を受け付けると、プリロードアプリ管理テーブル700のアプリケーションのIDの項目701にアプリ#Aの識別情報が登録されているか否かを判断する。図7で示したようにプリロードアプリ管理テーブル700のアプリケーションのIDの項目701にアプリ#Aの識別情報は登録されていない。OS220が、アプリ#AのプログラムをフラッシュROM213からRAM211へロードすることにより、アプリ#Aのコンテキスト情報を生成する。OS220が、アプリ#Aの割当先をCPU#0に決定し、生成したアプリ#Aのコンテキストを用いてアプリ#Aを実行する。
図10は、アプリ#Aを実行後のRAM211の空き領域を示す説明図である。RAM211の領域は、アプリ#Aのコンテキストの領域が加わったため、空き領域が変化したので、MMU230が空き領域リスト500を更新する。OS220が、空き領域リスト500から更新されたノード502を特定する。OS220が、該特定したノード502のデータである物理アドレスが示す空き領域のサイズが、所定サイズ以下であるか否かを判断する。そして、OS220が、ノード502が示す空き領域をフラグメント領域に特定する。
図11は、空き領域変化に伴うフラグメント領域管理テーブル600の更新例を示す説明図である。OS220が、フラグメント領域管理テーブル600に特定したノード502と、特定したノード502が示すフラグメント領域のサイズと、該フラグメント領域の状態とを登録する。図11で示すフラグメント領域管理テーブル600には、ノード502に関する情報が追加されている。
図12は、アプリ#Bのプリロード例を示す説明図である。トリガテーブル400に基づいてアプリ#Bの起動時刻からアプリ#Bのプリロード時間を引いた時刻となるとOS220がアプリ#Bのプリロードのトリガを発生させる。時刻については、OS220がソフトウェアタイマを実行することによりカウントしていることとする。OS220が、プリロードアプリ管理テーブル700のアプリケーションのIDの項目701にアプリ#Bの識別情報を登録し、プリロード状態の項目704を未完了に設定する。OS220が、キャッシュ240内のフラグをONに設定し、並列プリローダ801のスリープを解除する。スヌープコントローラ208は、キャッシュ内のフラグの変化を検出すると、キャッシュ241内のフラグをONに設定する。
そして、キャッシュ241内のフラグがONになると、OS221が並列プリローダ802のスリープを解除する。並列プリローダ801または並列プリローダ802が、プリロードアプリ管理テーブル700のアプリケーション全体のプリロード状態の項目705に未完了が登録されているアプリケーションを特定する。並列プリローダ801または並列プリローダ802が、アプリ#Bのアプリケーション全体のプリロード状態の項目705が未完了となっているため、レジスタ209またはレジスタ210の値を1に設定する。並列プリローダ801または並列プリローダ802が、トリガテーブル400のサイズの項目402に基づいてアプリ#Bのサイズを特定する。
図13は、アプリ#Bのプリロード先の確保例を示す説明図である。並列プリローダ801または並列プリローダ802が、フラグメント領域管理テーブル600の各フラグメント領域のサイズの項目に基づいてアプリ#Bのサイズ分のフラグメント領域を確保する。ここでは、ノード501と、ノード502とが示すフラグメント領域がアプリ#Bのプリロード先の領域として確保されることとする。並列プリローダ801または並列プリローダ802が、フラグメント領域管理テーブル600内のノード501とノード502に関する状態の項目603を使用に更新する。
並列プリローダ801または並列プリローダ802が、プリロードアプリ管理テーブル700に確保したフラグメント領域のアドレスを登録する。並列プリローダ801または並列プリローダ802が、プリロードアプリ管理テーブル700のプリロード領域の項目703に確保した各フラグメント領域に格納するアプリ#Bのプログラムのうちの部分コードの論理アドレスを登録する。
並列プリローダ801または並列プリローダ802が、フラッシュROM213から各フラグメント領域へ部分コードを格納する。たとえば、並列プリローダ801が、アプリ#Bの部分コード1201をRAM211へ格納し、並列プリローダ802が、アプリ#Bの部分コード1202をRAM211へ格納する。そして、各並列プリローダが、プリロードアプリ管理テーブル700のプリロード領域の項目703ごとにプリロードが完了したら、プリロード状態の項目704を完了に変更する。アプリ#Bのプリロードが完了したら、アプリケーション全体のプリロード状態の項目705を完了に変更する。
図14は、プリロードアプリ管理テーブル700の更新例を示す説明図である。図14のプリロードアプリ管理テーブル700では、アプリ#Bに関する利用フラグメントの項目702にノード501とノード502が登録されている。図14のプリロードアプリ管理テーブル700では、アプリ#Bに関するプリロード領域の項目703に0xAA〜0xBと0xBC〜0xCCが登録されている。図14のプリロードアプリ管理テーブル700のアプリ#Bに関するプリロード状態の項目704と、アプリケーション全体のプリロード状態の項目705には、すべて完了が登録されている。
図15は、アプリ#Bをプリロード後のRAM211の領域例を示す説明図である。RAM211の領域には2個所にアプリ#Bの部分コードの領域がある。アプリ#Bはプリロード時に実行されるわけではないため、空き領域リスト500は更新されない。すなわち、RAM211にはアプリ#Bの部分コードが格納されているが、他のアプリケーションはアプリ#Bの部分コードに該他のアプリケーションの情報を格納することができる。
つぎに、プリロードアプリ管理テーブル700内のすべてのアプリケーションのアプリケーション全体のプリロード状態の項目705が完了であれば、並列プリローダ801と並列プリローダ802は、それぞれレジスタ209とレジスタ210の値を0に設定する。並列プリローダ801と並列プリローダ802は、それぞれ起動フラグをOFFし、スリープ状態に移行する。
図16は、アプリ#Bの実行を示す説明図である。OS220がアプリ#Bの起動指示を受け付けると、アプリ#Bの部分コード1201とアプリ#Bの部分コード1202とを結合することにより、アプリ#Bのコードを生成する。結合については、プリロードアプリ管理テーブル700のプリロード領域に記述されている論理アドレス順に結合する。OS220が、生成したアプリ#Bのコードを展開することにより、アプリ#Bのコンテキストを生成する。アプリ#Bのコードからアプリ#Bのコンテキストへの展開処理については、従来のコンテキストへの展開処理と同一であるため、詳細な説明は省略する。OS220がアプリ#BをCPU#1に割り当て、OS221がアプリ#Bを実行する。
図17は、例1におけるアプリ#Bのコンテキスト生成後のRAM211の領域を示す説明図である。RAM211の領域では、アプリ#Bのコンテキストの領域があるが、アプリBの部分コードの領域がなくなる。そして、アプリ#Bのコンテキストが生成されたため、MMU230が、空き領域リスト500のノード505のアドレスを更新する。
図18は、例1におけるアプリ#Bのコンテキスト生成後のフラグメント領域管理テーブル600を示す説明図である。OS220が、ノード501とノード502に関する状態の項目603を未使用に更新する。空き領域リスト500が更新されると、OS220が、空き領域リスト500内で更新されたノード505を特定する。OS220が、特定したノード505のデータに基づいて該ノード505が示す空き領域のサイズが所定サイズ以下であるか否かを判断する。ここでは、該ノード505が示す空き領域のサイズが所定サイズ以下であると判断されることにより、ノード505が示す空き領域がフラグメント領域であると特定される。OS220が、フラグメント領域管理テーブル600へあらたに特定したノード505に関する情報を追加する。
図19は、プリロードアプリ管理テーブル700の更新例を示す説明図である。アプリ#Bが起動されたため、OS220がプリロードアプリ管理テーブル700からアプリ#Bに関する情報を削除する。
(例2)
つぎに、例2では、アプリ#Bのプリロードされたフラグメント領域が他のアプリケーションの処理で使用された場合について説明する。例2では、例1のアプリ#Bがプリロードされる処理(図4〜図15)までは同一であるため、プリロード後の処理について説明する。
図20は、アプリ#Aのコンテキストの領域が動的に広がる例を示す説明図である。アプリ#Aの実行中に格納するデータが増加した場合などに、アプリ#Aはアプリ#Aのコンテキストの領域を動的に確保する。RAM211へのアクセスを効率的に行うために、連続して領域を確保する方がよいため、アプリ#Aはアプリ#Aのコンテキストの領域を動的に広げる。アプリ#Bの部分コードが格納されたフラグメント領域がアプリ#Aのコンテキストの領域になってしまうため、MMU230が空き領域リスト500のノードのデータを更新する。
図21は、フラグメント領域管理テーブル600の更新例を示す説明図である。OS220が、空き領域リスト500内で更新されたノードを特定する。OS220が、特定したノード502のデータが示す領域のサイズが所定サイズ以下であるか否かを判断することにより、特定したノード502のデータが示す領域がフラグメント領域であるか否かを判断する。
OS220が、特定したノード502のデータが示す領域がフラグメント領域であると判断すると、フラグメント領域管理テーブル600のフラグメント領域の項目601に登録されているノード番号から特定したノード502を検索する。OS220が、検索したノード番号に関するフラグメントサイズの項目602を該特定したノード502が示すフラグメント領域のサイズに更新する。
図22は、プリロードアプリ管理テーブル700の更新例を示す説明図である。更新されたノード502の状態が使用状態であり、かつ更新されたノード502が示すフラグメント領域が削減されたため、OS220が、プリロードアプリ管理テーブル700でノード502に関するプリロード状態の項目704を未完了に更新し、アプリケーション全体のプリロード状態の項目705を未完了に更新する。
図23は、アプリ#Bの実行を示す説明図である。OS220が、アプリ#Bの起動指示を受け付けると、プリロードアプリ管理テーブル700を参照し、アプリケーション全体のプリロード状態の項目705が未完了であるので、プリロード状態の項目704が未完了となっているアプリ#Bの部分コードを特定する。論理アドレスが0xBC〜0xCCである部分コードのプリロードが未完了であるため、アプリ#Bの部分コードをRAM211へロードする。OS220が、ロードしたアプリ#Bの部分コードと、プリロード済のアプリ#Bの部分コードとを結合し、アプリ#Bのコンテキストを生成する。そして、OS220が、アプリ#Bの割当先をCPU#1に決定すると、アプリ#BがCPU#1に割り当てられ、OS221がアプリ#Bを実行する。
図24は、例2におけるアプリ#Bのコンテキスト生成後のRAM211の領域を示す説明図である。RAM211の領域では、アプリ#Bのコンテキストの領域があるが、アプリBの部分コードの領域がなくなる。そして、アプリ#Bのコンテキストが生成されたため、MMU230が、空き領域リスト500のノードのデータを更新する。
図25は、例2におけるアプリ#Bのコンテキスト生成後のフラグメント領域管理テーブル600を示す説明図である。OS220が、ノード番号501とノード番号502に関する状態の項目603を未使用に更新する。空き領域リスト500が更新されると、OS220が、空き領域リスト500内で変化があるノードのデータに基づいて該ノードが示す空き領域のサイズが所定サイズ以下であるか否かを判断することにより、あらたなフラグメント領域を特定する。ここでは、該ノード505が示す空き領域のサイズが所定サイズ以下であると判断され、OS220が、フラグメント領域管理テーブル600へあらたにノード505に関する情報を追加する。
(マスタOSによるロード制御処理手順)
図26は、マスタOSによるロード制御処理手順の一例を示すフローチャートである。まず、マスタOSが、RAM211の空き領域の変化、プリロードトリガの発生、または全アプリケーションの終了を検出したか否かを判断する(ステップS2601)。マスタOSが、RAM211の空き領域の変化、プリロードトリガの発生、および全アプリケーションの終了を検出していない場合(ステップS2601:No)、ステップS2601へ戻る。マスタOSが、RAM211の空き領域の変化を検出した場合(ステップS2601:空き領域の変化)、空き領域群からフラグメント領域を特定する(ステップS2602)。
マスタOSが、フラグメント領域に変化があるか否かを判断し(ステップS2603)、フラグメント領域に変化がないと判断した場合(ステップS2603:No)、ステップS2601へ戻る。マスタOSが、フラグメント領域に変化があると判断した場合(ステップS2603:Yes)、フラグメント領域が削減されているか否かを判断する(ステップS2604)。
マスタOSが、フラグメント領域が削減されていると判断した場合(ステップS2604:Yes)、フラグメント領域管理テーブル600とプリロードアプリ管理テーブル700を更新し(ステップS2605)、ステップS2601へ戻る。マスタOSが、フラグメント領域が削減されていないと判断した場合(ステップS2604:No)、フラグメント領域管理テーブル600を更新し(ステップS2606)、ステップS2601へ戻る。
ステップS2601において、マスタOSが、プリロードトリガの発生を検出した場合(ステップS2601:プリロードトリガ)、発生が検出されたアプリケーションがRAM211上にあるか否かを判断する(ステップS2607)。本実施の形態では、プリロードトリガの発生によって対象アプリケーションのプリロードを開始するが、他のアプリケーションが実行してないときにプリロードの必要がある対象アプリケーションのプリロードを開始してもよい。マスタOSが、発生が検出されたアプリケーションがRAM211上にあると判断した場合(ステップS2607:Yes)、ステップS2601へ戻る。
マスタOSが、発生が検出されたアプリケーションがRAM211上にないと判断した場合(ステップS2607:No)、プリロードするアプリをプリロードアプリ管理テーブル700に登録する(ステップS2608)。マスタOSが、並列プリローダの起動フラグをONに設定し(ステップS2609)、ステップS2601へ戻る。ステップS2601において、マスタOSが、全アプリケーションの終了を検出したと判断した場合(ステップS2601:処理終了)、一連の処理を終了する。
(各OSによるロード制御処理手順)
図27は、各OSによるロード制御処理手順の一例を示すフローチャートである。マスタOSとスレーブOSとの各OSの処理について説明する。まず、OSが、並列プリローダをディスパッチする(ステップS2701)。OSが、タスクディスパッチ、起動フラグのON設定、または全アプリケーションの処理終了を検出したか否かを判断する(ステップS2702)。OSが、タスクディスパッチ、起動フラグのON設定、および全アプリケーションの処理終了を検出していないと判断した場合(ステップS2702:No)、ステップS2702へ戻る。
OSが、タスクディスパッチを検出したと判断した場合(ステップS2702:タスクディスパッチ)、ディスパッチされたアプリケーションのIDがプリロードアプリ管理テーブル700に存在するか否かを判断する(ステップS2703)。OSが、ディスパッチされたアプリケーションのIDがプリロードアプリ管理テーブル700に存在しないと判断した場合(ステップS2703:No)、ディスパッチされたアプリケーションをRAM211にロードする(ステップS2704)。そして、OSが、ディスパッチされたアプリケーションを実行する(ステップS2705)。
OSが、ディスパッチされたアプリケーションのIDがプリロードアプリ管理テーブル700に存在すると判断した場合(ステップS2703:Yes)、ディスパッチされたアプリケーションのプリロードが完了したか否かを判断する(ステップS2706)。OSが、ディスパッチされたアプリケーションのプリロードが完了したと判断した場合(ステップS2706:Yes)、ステップS2709へ移行する。
OSが、ディスパッチされたアプリケーションのプリロードが完了していないと判断した場合(ステップS2706:No)、未プリロード部分をRAM211にロードする(ステップS2707)。OSが、ロードした各部分コードを結合し、RAM211に展開することにより、ディスパッチされたアプリケーションのコンテキストを生成する(ステップS2708)。OSが、ディスパッチされたアプリケーションを実行する(ステップS2709)。OSが、フラグメント領域管理テーブル600とプリロードアプリテーブルを更新する(ステップS2710)。
OSが、起動フラグのON設定を検出した場合(ステップS2702:ONに設定)、並列プリローダのスリープを解除し(ステップS2703)、ステップS2702へ戻る。OSが、全アプリケーションの処理終了を検出した場合(ステップS2702:処理終了)、一連の処理を終了する。
(並列プリローダによるプリロード処理手順)
図28は、並列プリローダによるプリロード処理手順の一例を示すフローチャートである。並列プリローダが、起動フラグをチェックする(ステップS2801)。並列プリローダが、起動フラグがOFFの場合(ステップS2801:OFF)、ステップS2804へ移行する。並列プリローダが、起動フラグがONの場合(ステップS2801:ON)、プリロードアプリ管理テーブル700を参照し、アプリケーション全体のプリロード状態の項目705が未完了のアプリケーションが存在するかを判断する(ステップS2802)。
並列プリローダが、アプリケーション全体のプリロード状態の項目705が未完了のアプリケーションが存在しないと判断した場合(ステップS2802:No)、起動フラグをOFFに設定する(ステップS2803)。並列プリローダが、クロック周波数を下げる(ステップS2804)。具体的には、並列プリローダが、クロック供給回路207に並列プリローダを実行するCPUへ供給されるクロックの周波数を変更可能なレジスタの値を変更する。並列プリローダを実行するCPUへ供給されるクロックの周波数が100[MHz]に設定される。並列プリローダが、スリープ状態に移行し(ステップS2805)、一連の処理を終了する。
ステップS2802において、並列プリローダが、アプリケーション全体のプリロード状態の項目705に未完了のアプリケーションが存在すると判断した場合(ステップS2802:Yes)、クロック周波数を上げる(ステップS2706)。具体的には、並列プリローダが、クロック供給回路207に並列プリローダを実行するCPUへ供給されるクロックの周波数を変更可能なレジスタの値を変更する。並列プリローダを実行するCPUへ供給されるクロックの周波数が200[MHz]に設定される。
並列プリローダが、複数のフラグメント領域から、プリロードするアプリケーションのフラグメント領域を特定し(ステップS2807)、特定が成功したか否かを判断する(ステップS2808)。並列プリローダが、特定が成功したと判断した場合(ステップS2808:Yes)、フラグメント領域管理テーブル600を更新する(ステップS2809)。並列プリローダが、プリロードアプリ管理テーブル700にプリロードする部分コードのアドレスを登録し、特定したフラグメント領域へ部分コードを格納する(ステップS2810)。
並列プリローダが、アプリケーションのプリロードが完了したか否かを判断する(ステップS2811)。並列プリローダが、アプリケーションのプリロードが完了したと判断した場合(ステップS2811:Yes)、プリロードアプリ管理テーブル700のアプリケーション全体のプリロード状態の項目705を完了に変更し(ステップS2812)、ステップS2801へ戻る。並列プリローダが、アプリケーションのプリロードが完了していないと判断した場合(ステップS2811:No)、ステップS2801へ戻る。
以上説明したように、システム、およびデータロード方法によれば、複数のプロセッサで実行されているプログラム以外の対象アプリケーションのプログラムをメモリのフラグメント領域にプリロードする。これにより、スワップさせることなく、上書きされるリスクを分散できる。したがって、アプリケーションの起動時の処理を高速化することができ、応答性を向上させることができる。
また、プリローダがプリロードするプログラムがないときにはスリープモードに設定される。これにより、プリローダを常時実行させないことで、低消費電力化を図ることができる。
また、対象アプリケーションが実行されるまでの予測時間と対象アプリケーションをプリロードするための時間とが所定の関係を満たすときに、スリープモードの設定が解除される。これにより、対象アプリケーションの起動指示を受け付ける前に、対象アプリケーションをプリロードすることができ、アプリケーションの起動時の処理を高速化することができる。
また、フラグメント領域を管理する第1テーブルを含み、第1テーブルにフラグメントの使用状況が格納される。これにより、プリロード先が重なることを防止することができ、フラグメント領域を効率よく使用することができる。
また、各アプリケーションのプログラムを管理する第2テーブルを含み、第2テーブルに各アプリケーションのプログラムをプリロードするための時間が格納される。これにより、対象アプリケーションの起動指示を受け付ける前に、対象アプリケーションをプリロードすることができ、アプリケーションの起動時の処理を高速化することができる。
また、対象プログラムをプリロードするときの動作クロックの周波数を、プログラムを実行するときの動作クロックの周波数より高くする。これにより、プリロードを高速化することができる。
なお、データロード方法は、予め用意されたプログラムをマルチコアプロセッサのうちのいずれかのCPUで実行することにより実現することができる。また、該プログラムは、フラッシュROM213などのマルチコアプロセッサのいずれかのCPUが読み取り可能な記録媒体に記録され、マルチコアプロセッサのいずれかのCPUによって記録媒体から読み出されることによって実行されてもよい。また、該プログラムは、インターネット等のネットワークを介して配布されてもよい。
200 マルチコアプロセッサシステム
211 RAM
213 フラッシュROM
207 クロック供給回路
CPU#0,CPU#1
801,802 並列プリローダ

Claims (10)

  1. 複数のプロセッサと、
    前記複数のプロセッサで実行されているプログラムを格納するメモリと、
    前記複数のプロセッサで実行されているプログラム以外の対象プログラムを前記メモリのフラグメント領域にプリロードするプリローダと、
    を含むことを特徴とするシステム。
  2. 前記プリローダは、プリロードするプログラムがないときにはスリープモードに設定されること
    を特徴とする請求項1に記載のシステム。
  3. 前記対象プログラムが実行されるまでの予測時間と前記対象プログラムをプリロードするための時間とが所定の関係を満たすときに、前記スリープモードの設定が解除されること
    を特徴とする請求項2に記載のシステム。
  4. 前記フラグメント領域を管理する第1テーブルを含み、
    前記第1テーブルに前記フラグメントの使用状況が格納されること
    を特徴とする請求項1乃至請求項3の何れか一に記載のシステム。
  5. 前記プログラムを管理する第2テーブルを含み、
    前記第2テーブルに前記プログラムをプリロードするための時間が格納されること
    を特徴とする請求項1乃至請求項3の何れか一に記載のシステム。
  6. プロセッサが、
    メモリのメモリ領域にロードされたプログラムを実行し、
    前記プログラム以外の対象プログラムを前記メモリの複数のフラグメント領域にプリロードし、
    前記複数のフラグメント領域に格納される対象プログラムを結合して前記メモリ領域に展開し、
    前記対象プログラムを実行すること
    を特徴とするデータロード方法。
  7. 前記対象プログラムが実行されるまでの予測時間と前記対象プログラムをプリロードするための時間とが所定の関係を満たすときに、前記プリロ−ドを開始すること
    を特徴とする請求項6に記載のデータロード方法。
  8. 前記対象プログラムの一部が前記フラグメント領域に格納されているとき、前記対象プログラムの一部以外のプログラムをプリロードして、前記フラグメント領域に格納される前記対象プログラムの一部と結合して、前記メモリ領域に展開すること
    を特徴とする請求項6または請求項7に記載のデータロード方法。
  9. 前記プロセッサが前記プログラムを実行していないときに、前記対象プログラムをプリロードすること
    を特徴とする請求項6乃至請求項8の何れか一に記載のデータロード方法。
  10. 前記対象プログラムをプリロードするときの動作クロックの周波数を、前記プログラムを実行するときの動作クロックの周波数より高くすること
    を特徴とする請求項6乃至請求項9の何れか一に記載のデータロード方法。
JP2012554533A 2011-01-25 2011-01-25 システム、およびデータロード方法 Expired - Fee Related JP5598554B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/051355 WO2012101761A1 (ja) 2011-01-25 2011-01-25 システム、およびデータロード方法

Publications (2)

Publication Number Publication Date
JPWO2012101761A1 JPWO2012101761A1 (ja) 2014-06-30
JP5598554B2 true JP5598554B2 (ja) 2014-10-01

Family

ID=46580368

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012554533A Expired - Fee Related JP5598554B2 (ja) 2011-01-25 2011-01-25 システム、およびデータロード方法

Country Status (3)

Country Link
US (1) US20130311751A1 (ja)
JP (1) JP5598554B2 (ja)
WO (1) WO2012101761A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9936209B2 (en) * 2011-08-11 2018-04-03 The Quantum Group, Inc. System and method for slice processing computer-related tasks
JP5840525B2 (ja) * 2012-02-16 2016-01-06 シャープ株式会社 情報処理装置
US9633233B2 (en) * 2014-05-07 2017-04-25 Sandisk Technologies Llc Method and computing device for encrypting data stored in swap memory
US9928169B2 (en) 2014-05-07 2018-03-27 Sandisk Technologies Llc Method and system for improving swap performance
US9665296B2 (en) * 2014-05-07 2017-05-30 Sandisk Technologies Llc Method and computing device for using both volatile memory and non-volatile swap memory to pre-load a plurality of applications
US9710198B2 (en) 2014-05-07 2017-07-18 Sandisk Technologies Llc Method and computing device for controlling bandwidth of swap operations
CN106095499A (zh) * 2016-06-07 2016-11-09 青岛海信电器股份有限公司 嵌入式系统启动优化方法及装置
KR20210060213A (ko) * 2019-11-18 2021-05-26 삼성전자주식회사 어플리케이션을 프리로드하는 방법 및 이를 지원하는 전자 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04256024A (ja) * 1991-02-08 1992-09-10 Nec Corp プログラムの分割ロード方式
JPH10293689A (ja) * 1997-04-18 1998-11-04 Kobe Nippon Denki Software Kk ウィンドウシステムのオブジェクトプログラムプリロー ド方法およびその方法のためのプログラムを記録した記 録媒体
JP2005275707A (ja) * 2004-03-24 2005-10-06 Hitachi Ltd 情報処理装置、情報処理装置の制御方法、及びプログラム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0436341B1 (en) * 1990-01-02 1997-05-07 Motorola, Inc. Sequential prefetch method for 1, 2 or 3 word instructions
EP0612013A1 (en) * 1993-01-21 1994-08-24 Advanced Micro Devices, Inc. Combination prefetch buffer and instruction cache cross references to related applications
US20040172631A1 (en) * 2001-06-20 2004-09-02 Howard James E Concurrent-multitasking processor
US20030061383A1 (en) * 2001-09-25 2003-03-27 Zilka Anthony M. Predicting processor inactivity for a controlled transition of power states
US20050097533A1 (en) * 2003-10-31 2005-05-05 Chakrabarti Dhruva R. Run-time performance with call site inline specialization
EP1624372A1 (en) * 2004-08-05 2006-02-08 Sony Ericsson Mobile Communications AB Compact storage of program code on mobile terminals
US7711966B2 (en) * 2004-08-31 2010-05-04 Qualcomm Incorporated Dynamic clock frequency adjustment based on processor load
US7487297B2 (en) * 2006-06-06 2009-02-03 International Business Machines Corporation Dynamically adjusting a pre-fetch distance to enable just-in-time prefetching within a processing system
US7711927B2 (en) * 2007-03-14 2010-05-04 Qualcomm Incorporated System, method and software to preload instructions from an instruction set other than one currently executing
US8417880B2 (en) * 2010-11-01 2013-04-09 Hong Kong Applied Science and Technology Research Institute Company Limited System for NAND flash parameter auto-detection

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04256024A (ja) * 1991-02-08 1992-09-10 Nec Corp プログラムの分割ロード方式
JPH10293689A (ja) * 1997-04-18 1998-11-04 Kobe Nippon Denki Software Kk ウィンドウシステムのオブジェクトプログラムプリロー ド方法およびその方法のためのプログラムを記録した記 録媒体
JP2005275707A (ja) * 2004-03-24 2005-10-06 Hitachi Ltd 情報処理装置、情報処理装置の制御方法、及びプログラム

Also Published As

Publication number Publication date
US20130311751A1 (en) 2013-11-21
JPWO2012101761A1 (ja) 2014-06-30
WO2012101761A1 (ja) 2012-08-02

Similar Documents

Publication Publication Date Title
JP5598554B2 (ja) システム、およびデータロード方法
US5892944A (en) Program execution and operation right management system suitable for single virtual memory scheme
US9442851B2 (en) Multi-core processor system, control program, and control method
US5867703A (en) Common reset ROM
JP4220469B2 (ja) ブートコード実行用のram化されたプロセッサキャッシュメモリ
TWI603223B (zh) 記憶體保護電路、處理裝置、及記憶體保護方法
US8234430B2 (en) Apparatus and method with controlled switch method
US20130179666A1 (en) Multi-core processor system, synchronization control system, synchronization control apparatus, information generating method, and computer product
US7647490B2 (en) Method and apparatus for providing updated system locality information during runtime
WO2014139177A1 (en) Booting method for computer system with multiple central processing units
TWI564802B (zh) 初始化週邊裝置之方法與使用此方法之電子裝置
KR20150018041A (ko) 웨이크-업 시간을 줄일 수 있는 시스템 온 칩, 이의 동작 방법, 및 상기 시스템 온 칩을 포함하는 컴퓨터 시스템
JP5445669B2 (ja) マルチコアシステムおよび起動方法
WO2011061948A1 (ja) プログラム、制御方法、並びに制御装置
JP5045163B2 (ja) 演算処理装置および演算処理装置の制御方法
JP5725040B2 (ja) マルチコアプロセッサシステム、およびスケジューリング方法
JP5999216B2 (ja) データ処理装置
US6862675B1 (en) Microprocessor and device including memory units with different physical addresses
CN111694787A (zh) 一种芯片启动的方法、网络设备和机器可读存储介质
JP2002032264A (ja) キャッシュメモリ装置及びそれを用いた中央演算処理装置
JP4594889B2 (ja) 複数の処理装置を備えたシステム上で実行されるプログラムのトレース方法、および、複数の処理装置を備えたシステム
JPWO2006001051A1 (ja) マルチプロセッサ装置及びその制御方法
US20140013148A1 (en) Barrier synchronization method, barrier synchronization apparatus and arithmetic processing unit
JP2010108381A (ja) 集積回路、集積回路の制御方法および半導体デバイス
CN118733365A (en) Multi-threaded memory testing method, system, electronic device and storage medium

Legal Events

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140715

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140728

R150 Certificate of patent or registration of utility model

Ref document number: 5598554

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees