JP2011516970A - オペレーティング・システム高速実行コマンド - Google Patents

オペレーティング・システム高速実行コマンド Download PDF

Info

Publication number
JP2011516970A
JP2011516970A JP2011503016A JP2011503016A JP2011516970A JP 2011516970 A JP2011516970 A JP 2011516970A JP 2011503016 A JP2011503016 A JP 2011503016A JP 2011503016 A JP2011503016 A JP 2011503016A JP 2011516970 A JP2011516970 A JP 2011516970A
Authority
JP
Japan
Prior art keywords
subprocess
instruction
internal memory
sub
execution
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.)
Granted
Application number
JP2011503016A
Other languages
English (en)
Other versions
JP5389899B2 (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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2011516970A publication Critical patent/JP2011516970A/ja
Application granted granted Critical
Publication of JP5389899B2 publication Critical patent/JP5389899B2/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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4208Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a system bus, e.g. VME bus, Futurebus, Multibus
    • G06F13/4217Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a system bus, e.g. VME bus, Futurebus, Multibus with synchronous protocol
    • 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/451Execution arrangements for user interfaces
    • 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/461Saving or restoring of program or task context

Landscapes

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

Abstract

高速サブプロセスは、デジタル・シグナル・プロセッサ(DSP)におけるオペレーティング・システムに提供される。高速サブプロセスは、ある条件が満たされれば、サブプロセスが内部メモリに存在するか否かをカーネルが最初に判断することなく、サブプロセスを実行する。条件の1つは、サブプロセスが以前に内部メモリにロードされおよび実行されたとプログラマが判断することである。他の条件は、最後の実行と現在の実行リクエストの間に、サブプロセスをコールするプロセスが任意の他のサブプロセスをコールしていないことをプログラマが保証したことである。さらに他の条件は、最後の実行と現在の実行リクエストの間に、システムが他のオーバーラップするサブプロセスをコールしていないことをプログラマが保証することである。
【選択図】 図1

Description

本開示は、コンピュータ・オペレーティング・システムに関する。より具体的には、本開示は、オペレーティング・システムによるメモリ管理に関する。
背景
マイクロプロセッサは、マイクロプロセッサによる実行のための命令およびデータを記憶するための内部メモリを持っている。マイクロプロセッサは、ある場合において外部メモリを使用することができる。しかし、マイクロプロセッサによって外部メモリにアクセスすることは、内部メモリにアクセスすることより、より多くの時間消費となる。内部メモリは、より速いが、利用可能な内部メモリの量は、通常、マイクロプロセッサに利用可能な外部メモリの量よりはるかに小さい。ある場合には、マイクロプロセッサは、外部メモリから実行することを許可されない。
マイクロプロセッサの内部メモリが、実行される命令を含むソフトウェア・イメージのサイズより小さい場合、メモリ管理サポートは望ましい。そのようなメモリ管理は、必要な場合には、プロセスユニット(必要なソフトウェア・イメージの)が内部メモリに属し、ほかの時は、それほど高価でないメモリに属することを保証するべきである。例えば、コールされた時、プロセスユニットは、実行に使用することができないメモリスペースから、実行に使用することができる内部メモリスペースに、移動されるべきである。
同じことはオペランドに対して該当する。別のプロセスがその内部メモリスペースで実行されているならば、タスクを実行するために必要とされるオペランドのための内部メモリスペースには、十分な空間がないかもしれない。したがって、これらのような内部メモリスペース限界が生じる場合、オペランドは、別のアクセス可能なメモリ領域にしばしば移動される。しかしながら、ある程度の後の時に、より速い内部メモリをオペランドに対して使用することは、望ましいかもしれない。
ソフトウェア・イメージ全体を記憶するために十分なメモリに関連する2レベルのメモリキャッシュは、メモリ管理を援助すること(またはメモリ管理に対する必要を除去すること)ができたが、例えばデジタルシグナルプロセッサ(DSP)のようないくつかのマイクロプロセッサは、必ずしも、そのような2レベルのメモリキャッシュ・アーキテクチャを含むとは限らない。利用可能なメモリの量がソフトウェア・イメージ全体をロードするのに不十分な場合、メモリ管理は必要である。
ハードウェア・メモリ管理ソリューションは利用可能であるが、いくつかのアーキテクチャはそのようなハードウェアの使用を許可しない。ハードウェアが利用可能でない場合、あるタイプのメモリ管理は、オペレーティング・システムに、直ちに全体のメモリ領域を移動させる。全体のメモリスペースを移動させることに関する問題は、メモリーバス帯域幅が拘束として作用するであろうということである。追加の欠点は、ソフトウェアにおける待ち時間とより高い電源消費とを含む。
別のメモリ管理ソリューションは、あるタイプのメモリから別のものに実際に移動されるメモリの量を最小化する。このソリューションでは、実行するプロセスは、部分または「bin(ビン)」に分けられる。したがって、いくつかのbinだけおよび全体ではないプロセスは、新しい実行プロセスに対するスペースを作成するために、スワップアウトされることができる。
このbinningの概念を使用する既知のオペレーティング・システムは、プロセスがサブプロセスをコールした場合にはいつも、典型的には2つのオペレーションを使用する。2つのオペレーションは、1)ロードサブプロセス、2)実行サブプロセス、である。既知の実行サブプロセス・オペレーションで、オペレーティング・システムのカーネル部分は、コールされたサブプロセスの全てのbinが現在駐在することを保証するために、メモリをチェックする。ロードされたサブプロセスのbinがスワップアウトされた可能性があるため、そのチェックは、サブプロセスをロードすることと、サブプロセスの実行を要求することとの間で、発生する。もし、呼び出されたサブプロセスのすべてのbinが駐在でない場合、対象のアドレスに他がなければ直ちに、また、対象のアドレスに現時点で駐在する任意のbinをスワップアウトした後に、カーネルは、内部メモリへそれぞれの非駐在のbinをスワップする。binがすでにメモリにあるかチェックするために必要とされる時間とリソースおよびその後の必要時のスワッピングは、システム・パフォーマンスを減少させる。サブプロセスが1行で2度コールされる場合、そのようなチェックはリソースの浪費である。
概要
システムと方法は、ある条件が満たされた場合に、サブプロセスが内部メモリに存在するか否かをカーネルが最初に判断する必要がなく、サブプロセスを実行する。ある実施形態において、条件のうちの1つは、サブプロセスが以前に内部メモリにロードされおよび実行されたとプログラマが判断することである。他の実施形態において、条件は、最後の実行と現在の実行リクエストとの間に、サブプロセスをコールするプロセスが任意の他のサブプロセスをコールしていないことをプログラマが保証したことである。さらに他の実施形態は、最後の実行と現在の実行リクエストの間に、システムが他のオーバーラップするサブプロセスをコールしていないことをプログラマが保証することである。
ある局面において、コンピュータ読み取り可能媒体は、サブプロセスの実行のためにコンピュータ・プログラムを記憶する。媒体は、オペレーティング・システム・カーネルが実行対象のサブプロセスが内部メモリに実際に存在するか否かを最初に判断することなく、サブプロセスを実行する高速実行サブプロセスコマンドを含む。
また、他の局面において、方法は、オペレーティング・システムにおいてサブプロセスを実行する場合にメモリを管理するために提供される。方法は、カーネルに、プロセッサの内部メモリに第1のサブプロセスをロードすることを命令することを含む。方法は、また、カーネルに、内部メモリにロードされた後に第1のサブプロセスを実行することを命令することを含む。カーネルは、第1のサブプロセスの実行前に第1のサブプロセスのbinの実在について内部メモリをチェックする。他のサブプロセスが第1のサブプロセスの実行終了後から実行されていない場合に、方法は、また、第1のサブプロセスのbinの実在について内部メモリをチェックすることなく、第1のサブプロセスを再実行するために高速サブプロセスをコールすることを含む。
また、他の局面において、デジタル・シグナル・プロセッサ(DSP)は、ソフトウェア・イメージを記憶するための十分なメモリを欠いている。DSPは、内部メモリと、プロセッシング・ユニットを含む。プロセッシング・ユニットは、最初にサブプロセス命令が内部メモリに存在するか否かをチェックすることなく、プロセスによって呼び出されたサブプロセス命令を実行する。
さらなる局面において、コンピュータ読み取り可能媒体は、プロセスユニットを実行するためのコンピュータ・プログラム・コードを記憶する。媒体は、コールするプロセスによって呼び出されることに応じて、プロセスユニットを実行する高速実行コマンドを含む。媒体は、また、すべてのプロセスユニットが内部メモリにロードされたおよび実行されたときを書き留めるプロセスユニット追跡コードセグメントを含む。高速実行コマンドは、呼び出されるプロセスユニットが以前に内部メモリにロードされおよび以前に実行されたとプロセスユニット追跡コードセグメントが判断した場合に、使用される。
上記のものは、以下の発明の詳細な記述が一層よく理解されるように、本発明の特徴および技術的利点をやや広く概説した。本発明の追加の特徴および効果は、本発明の請求項の主題を形成する以下に記述されるだろう。開示された概念と特定の実施形態が、本発明の同じ目的を実行するための修正または他の構造の設計に対する根拠として、容易に利用されることは、当業者によって評価されるべきである。さらに、そのような等価な構造が、添付された請求項で示すような発明の趣旨および範囲からそれないことは、当業者によって理解されるべきである。本発明の特徴として考えられる新しい特徴は、その構成およびオペレーションの方法の双方に関して、さらなる目的および利点とともに、付随している図面と連結して検討された場合に、以下の記述からよりよく理解されるだろう。しかしながら、そのそれぞれの図面はただ例示および説明の目的で提供され、本発明の限定の定義として意図されない。
本発明のより完全な理解のために、添付の図面に関連して得られる以下の記述が今参考にされる。
図1は、発明の実施形態が有利に使用されることができる例示的な無線通信システムを示すブロック図である。 図2は、高速サブプロセスの実行のための例示的なロジック・フローを示すフローチャートである。
詳細な説明
図1は、発明の実施形態が有利に使用されることができる例示的な無線通信システム100を示す。例示の目的として、図1は、3つのリモートユニット120,130,150および2つの基地局140を示す。典型的な無線通信システムが多くのさらなるリモートユニットおよび基地局を持つとしてもよいことが認識されるだろう。リモートユニット120,130,150は、それぞれ、以下で議論されるような本発明の実施形態に係る、リアルタイム・オペレーティング・システム(RTOS)を実行する改良されたマイクロプロセッサ125A,125B,125Cを含む。図1は、基地局140とリモートユニット120,130,150からのフォワードリンク信号180と、リモートユニット120,130,150から基地局140へのリバースリンク信号190を示す。
図1において、リモートユニット120は、モバイル電話として示される。リモートユニット130は、ポータブルコンピュータとして示される。また、リモートユニット150は、無線ローカルループシステムにおける固定位置リモートユニットとして示される。
例えば、リモートユニットは、携帯電話、携帯型のパーソナル通信システム(PCS)ユニット、パーソナルデータアシスタントのようなポータブルデータユニット、またはメータ読み取り設備のような固定位置データユニットでもよい。図1は、本発明の教えに係るリモートユニットを例示するが、本発明はこれらの典型的な例示されるユニットに限定されない。本発明は、マイクロプロセッサを含むあらゆるデバイスに適切に使用されてもよい。
マイクロプロセッサ125A,125B,125Cは、実行されることが可能な命令のセットを含むことができ、これによりマイクロプロセッサ125A,125B,125Cに、以下で説明される任意の1以上の方法またはコンピュータベースの機能を実行させることができる。
図1に例示されるように、リモートユニット120,130,150は、例えば、それぞれ、中央処理装置(CPU)、グラフィックプロセッサユニット(GPU)、またはデジタルシグナルプロセッサ(DSP)のような、マイクロプロセッサ125A,125B,125Cを含む。さらに、リモートユニット120,130,150は、バスを介して互いに通信可能な内部メモリおよび外部メモリを含むことができる。リモートユニット120,130,150は、液晶ディスプレイ(LCD)、有機発光ダイオード(OLED)、フラットパネル・ディスプレイ、ソリッドステート・ディスプレイ、または陰極線管(CRT)のようなビデオディスプレイユニットをさらに含むとしてもよい。さらに、リモートユニット120,130,150は、キーボードのような入力装置、およびトラックボールのようなカーソル制御装置を含むとしてもよい。リモートユニット120,130,150は、また、ディスクドライブユニット、スピーカまたはリモートコントロールのような信号発生装置、および例えば無線トランシーバのようなネットワーク・インタフェース装置を含むことができる。
特定の実施形態において、図1に示されるように、ディスクドライブユニットは、命令の1以上のセット(例えばソフトウェア)が埋め込まれることができるコンピュータ読み取り可能媒体を含んでいてもよい。さらに、命令は、ここで説明されるような方法またはロジックのうちの1以上を具体化するとしてもよい。特定の実施形態において、命令は、マイクロプロセッサ125A,125B,125Cによる実行の間、完全に、または少なくとも部分的に、内部メモリおよび/または外部メモリ内に属するとしてもよい。メモリは、コンピュータ読み込み可能媒体を含むとしてもよい。
プロセッサ125A,125B,125Cのいずれかのような、マイクロプロセッサが、ソフトウェア・イメージを記憶するために、あまりにも小さい内部メモリを持つ場合、メモリ管理は、プログラマによって確立されたときのオペレーションの適切なシーケンスによってコントロールされる。例えば、ファームウエア・イメージがマイクロプロセッサの内部メモリより大きい場合、そのようなメモリ管理が発生する。プログラマは、本開示のメモリ管理特徴を含めるために、リアルタイム・オペレーティング・システム(RTOS)のような、コンピュータ・プログラムを設計する。メモリの管理の結果、コンピュータ・プログラムは、プログラムの実行のスリム化により、より効率的に実行することができる。トラッキングメモリ割り当てによって、プログラマは、コールされたサブプロセスがメモリに属するか否かを確認することが必要なときを決定し、適切なときに最適化されたサブプロセスコールを許可する。スリム化された実行は、高速サブプロセスとして言及されるだろう。ある実施形態において、マイクロプロセッサ125A,125B,125Cは、デジタルシグナルプロセッサ(DSP)である。
複数のプロセスは、独立してマルチタスキング環境で複数のプログラムを実行している。複数のプロセスは、別個のアプリケーションまたは単一アプリケーションのマルチインスタンスを表すことができる。それぞれのプロセスは、それ自身の個別の仮想アドレス空間を持ち、1以上のサブプロセスを含むことができる。
サブプロセスは、ユーザアプリケーションによってダイナミックにロードされ実行されるプロセスユニットである。サブプロセスは、ファンクションコールのように実行するが、それ自身のコンテキストを持ち、それ自身のメモリ空間でランする。概して言えば、プロセスレベル機能性は、1つのサブプロセス以上に分割される。
一旦ロードされると、サブプロセスは、そのコールするプロセスが実行しているときに、内部メモリに存在する必要がある。もし、サブプロセスが別のプロセスによってスワップアウトされる場合、カーネルは、コールするプロセスが起こされたときにそれを再ロードする。したがって、上で注記されたように、既存のサブプロセス実行では、カーネルは、サブプロセスを実行する前に、内部メモリに既に駐在であるか否かを、チェックする。
より具体的には、カーネルは、コールされるサブプロセスのセグメント(bin)がすべて内部メモリにロードされているか否か、チェックする。
本開示によれば、高速実行コマンド(すなわち、高速実行サブプロセス)は、binがメモリに存在するか否かチェックすることなく、コールされるサブプロセスを実行するために提供されることができる。換言すれば、実行コマンド処理は、スリム化されることができる。高速サブプロセス(すなわち、高速実行コマンドで実行されたサブプロセス)は、いくつかの条件が満たされたことを保証するために、アプリケーションまたはプログラマに依存する。したがって、一度コールされると、高速実行サブプロセスコマンドは、binチェックを実行することなく、コールされたサブプロセスを実行し、それにより実行時間パフォーマンスとサイクルオーバーヘッドを改善する。
高速サブプロセスのコール前に、プログラマは、サブプロセスの必要なbinが既にメモリにロードされるように、プログラムが設計されていることを保証する。ある実施形態において、プログラマの責任は、高速サブプロセスをコールする時点で、そのサブプロセスが以前にロードされおよび実行されたことを保証することである。プログラムは、また、実行するプロセスが他のサブプロセスをコールしていないことを保証するために書かれている。最後に、プログラマは、高速サブプロセスとオーバーレイされる他のサブプロセスが、全実行(実行するプロセスの内部からだけに限らず)の間に呼び出されないことを、保証する。もし、3つの条件がすべて満たされている場合、プログラムは、標準のサブプロセスよりもむしろ、高速サブプロセスを使用するために設計されることができる。
プログラマは、プロセスの使用モデルおよび全面的な実行プロファイルに基づいて、コールされるサブプロセスがロードされるか否か認識する。全面的な実行プロファイルから、プログラマは、他のサブプロセス(プロセスの外からの)が高速サブプロセスとオーバーレイするだろうか否か認識する。プログラマは、何がそれぞれのメモリ位置にあるか知るために、ローカルメモリマップを使用する。プロセスの使用モデルは、プログラマに、潜在的な高速サブプロセスの最後のローディングおよび実行から、プロセスがコールされる他のサブプロセスを持つか否か通知する。したがって、プロセス内で、プログラマは、さらにメモリマップを使用して、メモリにあるものの跡を追う。プログラマは、高速サブプロセスを使用してプログラムを設計する場合に、このすべてを考慮に入れる。
上に注記されるように、プログラマは、サブプロセスがメモリ中でどのように重複するか知っている。したがって、サブプロセスが最近ロードされたサブプロセスのbinをスワップアウトした場合のシナリオにプログラマが遭遇する場合、プログラマは、binがすべてメモリにあることを保証するためのノーマルのサブプロセス実行を要求する。しかし、プログラマがコールされたサブプロセスのbinがプッシュアウトされないことを知っている使用モデルでは、プログラマは高速サブプロセスを使用することができる。
明細書は条件が満たされたことを保証するプログラマについて論述するが、同様の決定は、プログラムの実行の間に発生可能である。この場合、サブプロセスが内部メモリにロードされおよび実行されるときに、オペレーティング・システムは追跡可能である。オペレーティング・システムが、呼び出されたサブプロセスが以前に内部メモリにロードされ、以前に実行されたと判断した場合、高速実行コマンドは、使用される。現在の高速実行コマンドの使用と、呼び出されたサブプロセスの以前のロード及び以前の実行との間に、他のサブプロセスが内部メモリにロードされておらずまたは実行されていないことが判断された場合、オペレーティング・システムは、高速サブプロセスを実行可能である。高速実行コマンドを使用するために、オペレーティング・システムは、また、以前に呼び出されたサブプロセスが、呼び出されるサブプロセスとオーバーラップしないことを保証するべきである。さらに別の実施形態では、コンパイラは解析を行なう。
ある実施形態において、高速サブプロセスは、複数のプロセスにわたって相互の排他を強制しない。すなわち、別のプロセスからの別のサブプロセスが、コールされるサブプロセスを持つメモリ中でオーバーラップするだろうか否かに関わらず、もし別のサブプロセスがコールされると、高速サブプロセスは使用されるべきでない。述べられる別の方法では、一旦高速サブプロセスがロードされれば、他のサブプロセスのいずれもがロードされるべきでない。別のサブプロセスが、高速サブプロセスを備えたベース及び長さレジスタとオーバーラップしてもしなくても、このことは真実である。
この実施形態において、カーネルは、すべてのロードされるサブプロセスのための複数のデータ構造の1セットを保守する。もし、あるサブプロセスがロードされ、次にカーネルが別のサブプロセスをロードすると、より後のサブプロセスはそれらの複数のデータ構造をオーバーライドする。この実施形態において、一旦データ構造が居住されると、それらは触れられることがなく、カーネルは、それらが正確であることを保証する必要はない。したがって、この実施形態において、他のサブプロセスがコールされていないことを保証することは、プログラマの責任である。
代替の実施形態において、他の相互の排他のサブプロセスは、高速サブプロセスを実行する前にコールされることができる。すなわち、もし、別のサブプロセスがコールされたが、その別のサブプロセスが高速サブプロセスのbinをスワップアウトしないであろう場合には、高速サブプロセスは、今までどおり使用されることが可能である。
ある実施形態において、高速サブプロセスは、サブプロセスのすべてを実行する。別の実施形態において、高速サブプロセスは、サブプロセスのうちのいくつかだけを実行する。換言すれば、あるサブプロセスは高速サブプロセスとすることができ、別のサブプロセスはノーマルのサブプロセスとすることができる。
今、図2を参照すると、プロセス200が高速サブプロセスを実行するための例示のロジック・フローであることが記述されるだろう。最初に、プロセス201は、現在実行するプロセスの位置を記憶する。ある実施形態において、プログラムカウンタ(アドレス)は、実行するプロセスに対するプロセス制御ブロック内に保存される。位置ストレージは、サブプロセスが実行を終えた後、正しい位置に対するリターンを可能にするだろう。
プロセス202は、現在実行するプロセスのサブプロセスのリストを格納する。換言すれば、現在のサブプロセスは、システムにおける複数の実行するサブプロセスのうちの1つとしてセットされる。リストのストレージは、スケジューラが、必要ならば、サブプロセスに属するbinをスワップアウトすべきか否か決定することを可能にする。もし、スケジューラがコールされると、スケジューラは、サブプロセスによって所有されるbinがすべて内部メモリにあるかチェックすることができる。そうでなければ、スケジューラは、外部メモリからの適切なbinをスワップインすることができる。
より高い優先度のサブプロセスが呼び出される場合、または優先権を比較することができるように別のサブプロセスがコールされる場合、リストは使用されることができる。さらに、もし、あるデータまたはタイマが期待される間にサブプロセスが待ち状態に入ると、異なるプロセスまたはサブプロセスが実行可能である。スケジューラは、オリジナルのプロセスに返る場合に、もしそれがサブプロセスを実行している場合、サブプロセスのbinがスワップインされるべきであることを保証する。
プロセス203は、他のプロセスとともにサブプロセスの共有を許可するサブプロセスの親として、現在の実行するプロセスをセットする。プロセス203は図2に描かれるが、そのようなプロセスは、プロセス200の全体の機能性に影響することなく、容易に省略させることができた。別の実施形態においては、プロセス203を実行するか否かに関する決定が、ダイナミックに発生する。すなわち、共有が発生する場合、プロセス203は実行する。共有が発生しない場合、プロセス203は省略される。
プロセス204は、サブプロセスに対するベースおよび長さレジスタの値を、現在実行するプロセスのプロセス制御ブロックにコピーする。ベースおよび長さレジスタの値は、例えば、外部メモリのような、それらのストレージ位置からコピーされる。プロセス制御ブロック内のこれらの値は、その後、サブプロセスのコンテキストをセット・アップするために使用される。ベースおよび長さレジスタの値は、メモリ管理とプロテクションのためにマイクロプロセッサ内にセットされる。
プロセス205は、ベースおよび長さレジスタの値にしたがってマイクロプロセッサレジスタをセットする。これらの値は次に実行されるプロセスのプロセス制御ブロックから得られる。
最後に、プロセス206は、サブプロセス・エントリポイントに対する制御を通過する。ある実施形態において、その制御は、サブプロセスのエントリポイントがプロセス203においてプッシュされたスタックのトップへのRTI(割り込みからのリターン)とともに通過される。本開示によれば、スケジューラへのジャンプはこの時点で発生しない。したがって、チェックもbinのスワッピングも、サブプロセスの実際の実行に先立って発生しない。
ある実施形態では、高速サブプロセスおよび標準のサブプロセスは、共通コードを含む。高速サブプロセスが呼び出される場合、フラグは同じことを示す設定である。異なるコードは、フラグがセットされるか否かに基づいて実行される。例えば、プロセス206は、直接サブプロセスにむけて、高速サブプロセスをジャンプする。その時の標準のサブプロセスでは、スケジューラはコールされるだろう。したがって、チェックは、(フラグに基づいて)高速サブプロセスが呼び出されたか否か確かめるために行われる。もしそうであれば、プロセス206が実行する。もしそうでなければ、標準のサブプロセスが実行する。
したがって、本開示は、不必要なオーバヘッドを引き起こすことなく、サブプロセスを実行するために効率的な解決策を提供する。
代替的な実施形態において、特定用途向け集積回路、プログラマブル・ロジック・アレイおよび他のハードウェアデバイスのような専用ハードウェア実装は、ここに記述された方法の1以上を実装するために構築されることができる。
様々な実施形態の装置およびシステムを含むとしてもよいアプリケーションは、広く様々な電子およびコンピュータ・システムを含むことができる。ここで記述された1以上の実施形態は、複数のモジュールの間および通過で通信されることが可能な関連される制御およびデータ信号を備えた2以上の特定の相互に連結されたハードウェア・モジュールまたはデバイスを使用して、または、アプリケーション特定の集積回路の部分として、機能を実行してもよい。したがって、本システムは、ソフトウェア、ファームウェア、およびハードウェア実装を包含する。
本開示の様々な実施形態にしたがって、ここで記述された方法は、コンピュータ・システムによって実行可能なソフトウエアプログラムによって実現されてもよい。さらに、例示において、制限しない実施形態では、実行は、分散処理、コンポーネント/オブジェクト分散処理、および並行処理を含むことができる。あるいは、仮想コンピュータ・システム処理は、ここで記述されるような方法または機能性の1以上を実行するために構築されることができる。
本開示は、命令を含むコンピュータ読み取り可能媒体を熟考し、または、ネットワークに接続された装置がネットワークを越えてボイス、ビデオまたはデータを通信することができるように、指示を受信および実行する。さらに、命令は、ネットワークを通して、ネットワーク・インタフェース装置経由で、送信または受信されてもよい。
コンピュータ読み取り可能媒体が単一の媒体として示されている場合、用語「コンピュータ読み取り可能媒体」は、集中型または分散データベースのような単一の媒体または複数の媒体、および/または、結合されているキャッシュ、および、命令の1以上のセットを記憶するサーバを含む。用語「コンピュータ読み取り可能媒体」は、また、プロセッサによる実行のための命令のセットを記憶、エンコーディング、または運搬することが可能な、または、コンピュータ・システムに、ここで説明された任意の1以上の方法またはオペレーションを実行させる、任意の媒体を含むだろう。
特定の非限定において、例示の実施形態では、コンピュータ読み取り可能媒体は、メモリーカード、または1以上の不揮発性リード・オンリー・メモリを収容する他のパッケージのような、ソリッドステートメモリを含むことができる。さらに、コンピュータ読み取り可能媒体は、ランダム・アクセス・メモリまたは他の揮発性の再書き込み可能メモリであることができる。さらに、コンピュータ読み取り可能媒体は、送信媒体上を通じて通信されたデータを捕らえるためのディスクまたはテープまたは他の記憶装置のような、マグネト光学または光学媒体を含むことができる。電子メールまたは他の自己に含まれている情報アーカイブまたはアーカイブのセットのディジタルファイル添付は、具体的な記憶媒体と等価な分布媒体と考えられてもよい。したがって、本開示は、データまたは命令が記憶されることができるコンピュータ読み取り可能媒体または分布媒体および他の同等および後継の媒体のうちの任意の1以上を含むと考えられる。
本発明とその利点は詳細に記述されたが、添付された請求項によって定義されるような発明の趣旨および範囲から外れることなく、様々な変更、代用および代替は、ここで行なうことができることは理解されるべきである。例えば、ロジックはサブプロセスの呼び出しに関して記述されたが、ロジックはプロセスの呼び出しに関して適用を持つことは想像される。さらに、本出願の範囲は、明細書に記述されたプロセス、マシン、製造、合成物、手段、方法およびステップの特定の実施形態に制限されることは意図されない。当業者の一人が本発明、プロセス、マシン、製造、合成物、手段、方法あるいはステップの開示から容易に認識する場合、ここで記述された対応する実施形態と実質的に同じ機能を実行しまたは実質的に同じ結果を達成する現存在または開発された後のものは、本発明にしたがって利用されてもよい。したがって、添付された請求項は、それらの範囲内にそのようなプロセス、マシン、製造、合成物、手段、方法あるいはステップを含むように意図される。

Claims (25)

  1. サブプロセスを実行するためのコンピュータ・プログラム・コードを記憶するコンピュータ読み取り可能媒体において、
    オペレーティング・システム・カーネルが最初に実行対象の前記サブプロセスが内部メモリに存在するか判断することなく、前記サブプロセスを実行する、高速実行サブプロセス命令を具備する、媒体。
  2. 前記高速実行サブプロセス命令は、前記サブプロセスが以前に前記内部メモリにロードされおよび以前に実行された場合に、実行する、請求項1の媒体。
  3. 前記高速実行サブプロセス命令は、前記高速サブプロセス命令のコールと前記サブプロセスの前のローディングおよび前の実行との間に、他のサブプロセスが前記内部メモリにロードされていないまたはコールするプロセスによって実行されていない場合に、実行する、請求項1の媒体。
  4. 前記高速実行サブプロセス命令は、システムが、前記サブプロセスを実行してから、オーバーラップするサブプロセスをコールしていない場合にのみ、実行する、請求項1の媒体。
  5. 前記カーネルが内部メモリに前記サブプロセスをロードし前記サブプロセスを実行する実行サブプロセス命令をさらに具備し、
    前記カーネルは、前記カーネルが前記サブプロセスが前記内部メモリに存在することを確認した後に、前記サブプロセスを実行する、請求項1の媒体。
  6. 前記カーネルは、リアルタイム・オペレーティング・システム(RTOS)カーネルである、請求項5の媒体。
  7. 前記カーネルは、前記サブプロセスの実行前に、内部メモリに存在しない前記サブプロセスのセグメントをスワップインする、請求項5の媒体。
  8. 前記高速実行サブプロセス命令は、システム全体の中の実行するサブプロセスとして前記サブプロセスを指し示す、請求項1の媒体。
  9. 前記高速実行サブプロセス命令は、前記サブプロセスを呼び出すプロセスのプロセス制御ブロックに、ベースおよび長さレジスタの値をコピーする、請求項1の媒体。
  10. 前記高速実行サブプロセスコードセグメントが呼び出された場合に、フラグをセットするためのコードをさらに具備し、
    前記フラグは、特定の高速実行サブプロセス命令、またはノーマルの実行サブプロセス命令が実行されるかを示す、請求項1の媒体。
  11. オペレーティング・システムにおいてサブプロセスを実行する場合にメモリを管理するための方法において、
    カーネルに、プロセッサの内部メモリに第1のサブプロセスをロードすることを命令すること、
    前記カーネルに、前記内部メモリにロードされた後に前記第1のサブプロセスを実行することを命令し、前記カーネルは、前記第1のサブプロセスの実行前に前記第1のサブプロセスのbinの実在について前記内部メモリをチェックすること、
    他のサブプロセスが、前記第1のサブプロセスの実行終了後から、コールするプロセスによって実行されていない場合に、前記第1のサブプロセスのbinの実在について前記内部メモリをチェックすることなく、前記第1のサブプロセスを再実行するために高速サブプロセスをコールすること
    を具備する、方法。
  12. 前記プロセッサは、デジタル・シグナル・プロセッサ(DSP)である、請求項11の方法。
  13. 前記DSPは、少なくとも一つのファームウェアより小さいメモリの量を持つ、請求項12の方法。
  14. 前記高速サブプロセスをコールすることは、前記高速サブプロセスをコールするプロセスが、前記第1のサブプロセスの最後の実行から、他のサブプロセスをコールしていない場合にのみ、前記高速サブプロセスをコールすることをさらに具備する、請求項11の方法。
  15. 前記高速サブプロセスをコールすることは、システムが、前記第1のサブプロセスを実行してから、オーバーラップするサブプロセスをコールしていない場合にのみ、前記高速サブプロセスをコールすることをさらに具備する、請求項11の方法。
  16. 前記高速サブプロセスをコールすることは、他のサブブロセスが、前記第1のサブプロセスを実行して以来、ロードされなかったまたは実行されなかった場合にのみ、前記高速サブプロセスをコールすることをさらに具備する、請求項11の方法。
  17. 内部メモリと、
    最初に第1のサブプロセスの命令が前記内部メモリに存在するか否かをチェックすることなく、プロセスによってコールされた前記第1のサブプロセス命令を実行するプロセッシング・ユニットと
    を具備する、デジタル・シグナル・プロセッサ(DSP)。
  18. 前記プロセッサは、前記内部メモリに前記第1のサブプロセス命令をロードするカーネル命令を実行し、前記第1のサブプロセス命令が前記内部メモリに存在することを確認した後、前記第1のサブプロセスを実行する、請求項17のデジタル・シグナル・プロセッサ(DSP)。
  19. 前記プロセッサは、前記カーネルが以前に内部メモリに前記サブプロセス命令をロードしており、以前に前記サブプロセス命令を実行した場合にのみ、最初に前記第1のサブプロセス命令が前記内部メモリに存在するか否かをチェックすることなく、前記第1のサブプロセス命令を続いて実行する、請求項18のデジタル・シグナル・プロセッサ(DSP)。
  20. 前記プロセッサは、前記サブプロセス命令の以前の実行と前記サブプロセス命令の現在の実行との間に、他のサブプロセス命令が、コールするプロセスによって前記内部メモリにロードされず、実行されなかった場合にのみ、最初に前記第1のサブプロセス命令が前記内部メモリに存在するか否かをチェックすることなく、前記第1のサブプロセス命令を実行する、請求項17のデジタル・シグナル・プロセッサ(DSP)。
  21. 前記プロセッサは、前記第1のサブプロセス命令の以前の実行と前記第1のサブプロセス命令の現在の実行との間に、オーバーラップするサブプロセス命令が、前記内部メモリにロードされなかった場合にのみ、最初に前記第1のサブプロセス命令が前記内部メモリに存在するか否かをチェックすることなく、前記第1のサブプロセス命令を実行する、請求項17のデジタル・シグナル・プロセッサ(DSP)。
  22. プロセスユニットを実行するためのコンピュータ・プログラム・コードを記憶するコンピュータ読み取り可能媒体において、
    コールするプロセスによって呼び出されることに応じて、前記プロセスユニットを実行する高速実行コマンドと、
    すべてのプロセスユニットが内部メモリにロードされた、および実行されたときを書き留めるプロセスユニット追跡コードセグメントと、
    を具備し、前記高速実行コマンドは、前記呼び出されるプロセスユニットが以前に前記内部メモリにロードされおよび以前に実行されたと前記プロセスユニット追跡コードセグメントが判断した場合に、使用される、媒体。
  23. 前記高速実行コマンドは、前記プロセスユニット追跡コードセグメントが、他のプロセスユニットが、前記高速実行コマンドの現在の使用と前記呼び出されるプロセスユニットの以前の実行との間に、前記内部メモリにロードされまたは実行されなかったと判断した場合に、使用される、媒体。
  24. 前記高速実行コマンドは、前記プロセスユニット追跡コードセグメントが、他の以前に呼び出されたプロセスユニットが前記呼び出されるプロセスユニットとオーバーラップしないと判断した場合に、使用される、媒体。
  25. 前記高速実行コマンドおよび前記プロセスユニット追跡コードセグメントオペレーティング・システムの一部である、請求項22の媒体。
JP2011503016A 2008-03-31 2009-03-13 オペレーティング・システム高速実行コマンド Expired - Fee Related JP5389899B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/059,311 2008-03-31
US12/059,311 US8151266B2 (en) 2008-03-31 2008-03-31 Operating system fast run command
PCT/US2009/037042 WO2009123842A1 (en) 2008-03-31 2009-03-13 Operating system fast run command

Publications (2)

Publication Number Publication Date
JP2011516970A true JP2011516970A (ja) 2011-05-26
JP5389899B2 JP5389899B2 (ja) 2014-01-15

Family

ID=40638182

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011503016A Expired - Fee Related JP5389899B2 (ja) 2008-03-31 2009-03-13 オペレーティング・システム高速実行コマンド

Country Status (7)

Country Link
US (1) US8151266B2 (ja)
EP (1) EP2277109B1 (ja)
JP (1) JP5389899B2 (ja)
KR (1) KR101250892B1 (ja)
CN (1) CN102016803B (ja)
TW (1) TW201005649A (ja)
WO (1) WO2009123842A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140298245A1 (en) * 2013-03-28 2014-10-02 Microsoft Corporation Display Instance Management
WO2018147164A1 (ja) * 2017-02-09 2018-08-16 株式会社新川 ワイヤボンディング装置
CN110633223B (zh) * 2019-09-18 2021-07-13 北京机电工程研究所 面向高速信号平台的多级内存管理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63200257A (ja) * 1987-02-16 1988-08-18 Mitsubishi Electric Corp コンピユ−タのプログラムロ−ド方式
JPH096623A (ja) * 1995-06-20 1997-01-10 Nippon Denki Ido Tsushin Kk プログラムのオーバーレイ制御方法
JP2003529809A (ja) * 1999-02-08 2003-10-07 クゥアルコム・インコーポレイテッド マイクロプロセッサあるいはdspにおける複数アプリケーション用データ配置
JP2005301801A (ja) * 2004-04-14 2005-10-27 Nec Corp 情報処理装置、メモリ管理装置、およびプログラム

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03188528A (ja) * 1989-09-27 1991-08-16 Hitachi Ltd ジョブ実行管理方法およびシステム
US5159678A (en) * 1990-06-11 1992-10-27 Supercomputer Systems Limited Partnership Method for efficient non-virtual main memory management
JP3448068B2 (ja) * 1991-12-24 2003-09-16 富士通株式会社 データ処理システムおよびストレージ管理方法
JP2723068B2 (ja) * 1995-02-20 1998-03-09 日本電気株式会社 ジョブ再実行方式
SE515737C2 (sv) * 1995-03-22 2001-10-01 Ericsson Telefon Ab L M Anordning och förfarande avseende hantering av digitala signaler och en behandlingsanordning omfattande en dylik
JP3614625B2 (ja) * 1997-10-27 2005-01-26 株式会社日立製作所 管理マネージャ計算機、記録媒体、および、計算機運用管理方法
US6952827B1 (en) * 1998-11-13 2005-10-04 Cray Inc. User program and operating system interface in a multithreaded environment
US6643731B2 (en) * 1999-12-31 2003-11-04 Texas Instruments Incorporated Low cost memory management that resists power interruption
US6532538B1 (en) * 2000-02-17 2003-03-11 International Business Machines Corporation Method and system for supporting multiple operating systems on the same disk running on different computers at the same time
US6832367B1 (en) * 2000-03-06 2004-12-14 International Business Machines Corporation Method and system for recording and replaying the execution of distributed java programs
US7337443B2 (en) * 2003-06-30 2008-02-26 Microsoft Corporation Method and apparatus for processing program threads
US7376866B1 (en) * 2004-10-22 2008-05-20 Network Appliance, Inc. Method and an apparatus to perform fast log replay
US20060225060A1 (en) * 2005-01-19 2006-10-05 Khalid Goyan Code swapping in embedded DSP systems
US7587625B2 (en) * 2006-02-16 2009-09-08 Intel Corporation Memory replay mechanism
JP4364220B2 (ja) * 2006-06-23 2009-11-11 シャープ株式会社 画像処理システム

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63200257A (ja) * 1987-02-16 1988-08-18 Mitsubishi Electric Corp コンピユ−タのプログラムロ−ド方式
JPH096623A (ja) * 1995-06-20 1997-01-10 Nippon Denki Ido Tsushin Kk プログラムのオーバーレイ制御方法
JP2003529809A (ja) * 1999-02-08 2003-10-07 クゥアルコム・インコーポレイテッド マイクロプロセッサあるいはdspにおける複数アプリケーション用データ配置
JP2005301801A (ja) * 2004-04-14 2005-10-27 Nec Corp 情報処理装置、メモリ管理装置、およびプログラム

Also Published As

Publication number Publication date
US8151266B2 (en) 2012-04-03
US20090249345A1 (en) 2009-10-01
EP2277109B1 (en) 2017-11-01
CN102016803A (zh) 2011-04-13
WO2009123842A1 (en) 2009-10-08
JP5389899B2 (ja) 2014-01-15
CN102016803B (zh) 2015-06-03
KR20100135874A (ko) 2010-12-27
EP2277109A1 (en) 2011-01-26
TW201005649A (en) 2010-02-01
KR101250892B1 (ko) 2013-04-04

Similar Documents

Publication Publication Date Title
CN105074666B (zh) 执行在具有不同指令集架构的处理器上的操作系统
US8489864B2 (en) Performing escape actions in transactions
CN101950259B (zh) 用于执行事务的装置、系统及方法
EP2284703B1 (en) Scheduling of tasks in a parallel computer system according to defined policies
US20100312977A1 (en) Method of managing memory in multiprocessor system on chip
JP2012104140A (ja) 待機状態にあるプロセッサ実行リソースの共有
US20100083261A1 (en) Intelligent context migration for user mode scheduling
US11630798B1 (en) Virtualized multicore systems with extended instruction heterogeneity
US20170206035A1 (en) Random-Access Disjoint Concurrent Sparse Writes to Heterogeneous Buffers
US8954969B2 (en) File system object node management
JP5678133B2 (ja) 複数のタスクにわたる複数のオペレーティングシステム・サブプロセスの共有
US20060149940A1 (en) Implementation to save and restore processor registers on a context switch
JP5389899B2 (ja) オペレーティング・システム高速実行コマンド
US8869172B2 (en) Method and system method and system for exception-less system calls for event driven programs
US9329893B2 (en) Method for resuming an APD wavefront in which a subset of elements have faulted
US20090320036A1 (en) File System Object Node Management
TWI760756B (zh) 共用代碼之系統與代碼共用方法
US20130042235A1 (en) Dynamic bootstrap literal processing within a managed runtime environment
CN118035131A (zh) 数据预取方法及装置、处理器和计算机可读存储介质

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121003

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121009

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130109

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130117

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130402

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130702

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130709

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130802

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130809

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130816

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131009

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees