JP5485129B2 - コンピュータシステムにおいて割込みを処理するシステムおよび方法 - Google Patents

コンピュータシステムにおいて割込みを処理するシステムおよび方法 Download PDF

Info

Publication number
JP5485129B2
JP5485129B2 JP2010283132A JP2010283132A JP5485129B2 JP 5485129 B2 JP5485129 B2 JP 5485129B2 JP 2010283132 A JP2010283132 A JP 2010283132A JP 2010283132 A JP2010283132 A JP 2010283132A JP 5485129 B2 JP5485129 B2 JP 5485129B2
Authority
JP
Japan
Prior art keywords
instruction
interrupt
instructions
branch
processor
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.)
Active
Application number
JP2010283132A
Other languages
English (en)
Other versions
JP2011129130A (ja
JP2011129130A5 (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.)
Ceva DSP Ltd
Original Assignee
Ceva DSP 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 Ceva DSP Ltd filed Critical Ceva DSP Ltd
Publication of JP2011129130A publication Critical patent/JP2011129130A/ja
Publication of JP2011129130A5 publication Critical patent/JP2011129130A5/ja
Application granted granted Critical
Publication of JP5485129B2 publication Critical patent/JP5485129B2/ja
Active 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, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution

Description

本発明の実施形態は、コンピュータシステムにおいて割込みを処理する方法およびシステムに関する。具体的には、本発明の実施形態は、割込みの処理に関連する計算ペナルティを軽減することに関する。
割込みは、プロセッサが命令を実行する順序を変更する事象である。割込みユニットは、一つ以上の優先度の高い命令を実行するために一連の命令を実行する現行の処理を中断してもよい。割込みサブルーチンが処理される時点で、プロセッサは割込みサブルーチンから戻って初期の一連の命令処理を再開してもよい。
一連の命令は分岐命令を含んでいてもよい。分岐命令は、たとえば、分岐条件に基づいて複数の可能な方法の一つで処理を進行させてもよい。たとえば、一連の命令1、2、3、4、5において、5は分岐命令であり、命令5は、処理を命令6、7、8、...に従って順番に進行させてもよく、あるいは命令100、101、102、...にジャンプさせてもよい。分岐命令、たとえば、6または100に続く命令は、分岐命令が実行されるまで不明であってもよい。
条件付き分岐の結果を予測するために分岐予測器が使用されてもよい。分岐において予測される命令は、プログラムメモリから前もって読み出されて容易にアクセスできるようプログラムキャッシュに一時的に記憶されてもよい。分岐予測は正しくても正しくなくてもよい。分岐予測器は、分岐結果を解析して、分岐予測が一つ以上の後続の計算サイクルにわたって正しいかそれとも正しくないかを判断してもよい。分岐を解析するために使用される計算サイクルの間に割込みが発生すると、分岐結果は不明であり再計算されなければならない。
分岐命令は、一つ以上の後続の遅延スロットに関連していてもよい。割込みが分岐命令に続いて受け入れられるとき、割込みは遅延スロットの一つで処理されてもよい。予測が正しいか否かを判断するための分岐条件は、遅延スロットが処理される計算サイクルと同じ計算サイクル間に計算されてもよい。したがって、割込みが分岐命令の遅延スロットの間に発生して遅延スロットを交換することによって処理されるとき、分岐条件計算の結果は不明であるかもしれない。したがって、分岐命令および関連する遅延スロット内で処理される命令は、適切に実行することができず、割込みが対処されて初期の命令が再開した後で再処理されなければならない。
典型的に、命令がデコードされるまで、たとえば、複数の計算サイクルにわたって命令を処理した後まで、命令が分岐命令であるかどうかは不明である。現行のシステムにおいて、まだデコードされていない命令は、デコーディングに先立って、万が一に備え、しかし、命令が分岐命令であるかどうかが分かる前に、無差別に破棄される。破棄されたデータを再処理するために使用されるさらなる計算サイクルは、割込みペナルティと呼ばれることがある。結果的に、割込みを処理するときは割込みペナルティが必ず生じる。
本発明の実施形態に従ったシステムの略図である。 本発明の実施形態に従った図1Aのシステムの一部の構成要素の拡大図である。 従来のシステムにおいて割込みに対処するプロセッサ動作を示す表である。 本発明の実施形態に従って割込みに対処するプロセッサ動作を示す表である。 本発明の実施形態に従って割込みに対処するプロセッサ動作を示す表である。 本発明の実施形態に従って割込みに対処するプロセッサ動作を示す表である。 本発明の実施形態に従った方法のフローチャートである。
本発明として扱われる対象は、本明細書の結びの部分で特に指摘され、明確に主張される。しかし、本発明は、本発明の目的、特徴、および長所とともに、構成および操作方法に関して、以下の詳細な説明を参照し、添付図面を用いて読むと最もよく理解されるであろう。本発明の具体的な実施形態は、図面を参照して説明される。
説明を簡単かつ明瞭にするために、図に示される要素は必ずしも一定の縮尺で描かれていないことは理解されよう。たとえば、要素の一部の寸法は、明確にするために他の要素に比べて誇張されている場合がある。さらに、適当と考えられる場合、対応する要素または類似の要素を示すために図の中で参照番号が繰り返し使用されている場合がある。
以下の説明において、本発明の様々な態様が記載される。説明を目的として、本発明の完全な理解を与えるために特定の構成および詳細が記述される。しかし、本発明は本明細書で提示される具体的詳細なしで実施されてもよいことも当業者にとって明らかであろう。さらに、本発明が不明瞭にならないように周知の特徴が省略または単純化されている場合がある。
特に明記しない限り、以下の議論から明らかなように、本明細書を通じて、「処理する」、「算定する」、「計算する」、「判断する」などの用語を利用する議論では、コンピュータシステムのレジスタおよび/またはメモリの内部の電子的量など、物理量として表わされるデータを操作しかつ/またはコンピュータシステムのメモリ、レジスタなどの他の情報記憶装置、伝送装置、または表示装置の内部で物理量として同様に表わされる他のデータに変換するコンピュータまたはコンピュータシステム、あるいは同様の電子コンピュータデバイスの作用および/または処理に言及していると理解される。
割込みとは、実行の変更が必要であることを示す事象を指していると言えよう。割込みは、通常であれば、処理において別の命令に割り当てられるはずであるプロセッサ・パイプライン・スロットを占有してもよい。割込みは、たとえば、複数の計算サイクルまたはパイプライン段にわたってそれぞれの連続パイプラインスロットで処理される一つ以上の命令を含む、割込みサブルーチンで処理されてもよい。割込みサブルーチンを処理した後、プロセッサは、割込み時に一部が処理された処理命令あるいは待ち行列に入れられた処理命令を再開してもよい。命令が破棄、無効化、または「中止」されるとき、割込みサブルーチンから戻った後、命令はフェッチされ再び処理されて割込みペナルティを生じてもよい。
分岐命令は、処理を複数の可能な方法の一つで進行させる命令を指していると言えよう。最もふさわしい後続の命令を予測し前もって読み出すために、分岐予測器が採用されてもよい。予測が正しいときは予測された命令が処理されてもよく、または分岐予測が正しくない場合は、プロセッサが機能を停止して予測されていない正しい命令がプログラムメモリから読み出されてもよい。分岐命令は、複数の(たとえば、三つの)遅延スロットが後に続くプロセッサ・パイプライン・スロットで処理されてもよく、複数の遅延スロットはプロセッサパイプラインで読み出されて利用できる後続の命令を処理するために使用される。
割込みサブルーチン内の第1の命令が分岐の遅延スロットの一つで実行されるとき、プロセッサは割込みを処理した後に実行するための正しい一連の命令を保持していないかもしれない。これは、分岐予測と、分岐予測が正しいか正しくないかと、によって複雑化する。遅延スロットは分岐を適切に処理するために必要な場合があるので、割込みが遅延スロットの一つの間に発生するとき、分岐遅延スロット命令および分岐予測は割込みサブルーチンに続くパイプラインスロットで再処理されてもよい。
対照的に、非分岐命令は、単一のパイプラインスロットで、たとえば、後続の遅延スロットなしで独立に処理され解析されてもよい。それゆえ、割込みが非分岐命令に続いて実行されるとき、割込みは典型的に命令処理に影響を及ぼさない。
しかし、どの命令が分岐命令でどの命令が分岐命令でないかが直ちにはっきりしないかもしれない。命令が分岐命令であるかどうかの判断には、処理について複数の計算サイクルを必要とするかもしれない。一例において、命令は、これが分岐命令であるかどうかを判断するためにデコードされてもよい。
従来のシステムにおいて、予防保証のために、命令は、分岐命令であるかどうか、たとえば、まだデコードされていない部分的に処理された命令であるかどうかがまだ判断されていないとき、無差別に破棄される。したがって、従来のシステムにおいては、命令が実際にも分岐命令を含むか否かに関係なく、割込みに先立つ部分的に処理された命令を再処理および再読出しする割込みペナルティがある。
本発明の実施形態によると、割込みが一連の命令に続いて実行されるとき、命令は停止も、割込みも、破棄もされず、分岐命令が実際に検出されるまで処理されてもよい。割込みに先立つ命令は、少なくとも、命令が分岐命令を、たとえば、デコード段に含むか否かが判断されるまで処理されてもよい。命令が従来のシステムにおけるように分岐命令を含む場合、分岐命令スロットおよび分岐遅延スロットがあれば、これらは破棄されて、破棄された命令に対する割込みペナルティを生じてもよい。しかし、従来のシステムとは対照的に、分岐命令を含まない命令はいずれも引き続き処理されてよい。したがって、非分岐命令は、これらが割込み事象に受け継がれるとき計算ペナルティを生じないかもしれない。
本発明の実施形態によるシステムの標準図および拡大図の略図である図1Aおよび1Bを参照する。システムは、プロセッサ1、データ・メモリ・ユニット2、プログラム・メモリ・ユニット3、およびプログラムキャッシュ10を有するデバイス100を含んでいてもよい。
デバイス100は、コンピュータデバイス、セルラデバイス、または携帯電話、パーソナル・ディジタル・アシスタント(PDA)、ビデオ・ゲーム・コンソールなどの他の任意のディジタルデバイスを含んでいてもよい。デバイス100は、コンピュータプログラムを実行するための一連の命令を実行できる任意のデバイスを含んでいてもよい。デバイス100は、ユーザから入力を受信する(たとえば、ポインティングデバイス、クイックホイールまたはマウス、キー、タッチスクリーン、音声認識を用いるレコーダ/マイクロフォン、他の入力要素を介して)入力デバイス101を含んでいてもよい。デバイス100は、プロセッサ1によって実行される一連の命令に従ってユーザーインタフェース上にプログラムを表示する出力デバイス102(たとえば、モニタまたはスクリーン)を含んでいてもよい。
プロセッサ1は、中央処理装置(CPU)、ディジタル信号プロセッサ(DSP)、マイクロプロセッサ、コントローラ、チップ、マイクロチップ、フィールド・プログラマブル・ゲート・アレイ(FPGA)、特定用途向け集積回路(ASIC)、またはその他任意の集積回路(IC)、あるいはその他任意の適当な多目的プロセッサまたは特定プロセッサまたはコントローラを含んでいてもよい。
プロセッサ1は、データバス4を介してデータ・メモリ・ユニット2に、またプログラム・メモリ・バス5を介してプログラム・メモリ・ユニット3に結合されてもよい。
プログラム・メモリ・ユニット3は、典型的に、コンピュータプログラムを実行する一組の命令および規則を記憶し、その一方で、データ・メモリ・ユニット2は、典型的に、事前に生成された(すなわち、静的な)データおよび/またはスクラッチパッド(すなわち、動的な)データなど、プログラム命令を操作する間に生成されるデータを記憶するが、命令およびデータをメモリに記憶する他の配置が採用されてもよい。
命令がプログラム制御ユニット8によってより利用しやすいように、プログラムキャッシュ10がプログラム・メモリ・ユニット3から読み出されるプログラム命令の一時記憶装置を提供してもよい。プログラム・メモリ・ユニット3は長期メモリユニットであってもよいが、プログラムキャッシュ10は短期メモリユニットであってもよい。データ・メモリ・ユニット2、プログラム・メモリ・ユニット3、およびプログラムキャッシュ10は、たとえば、スタティック・ランダム・アクセス・メモリ(SRAM)、ダイナミックRAM(DRAM)、フラッシュメモリなどの適当なメモリユニットまたは記憶ユニットを含んでいてもよく、揮発性メモリまたは不揮発性メモリであってもよい。データ・メモリ・ユニット2、プログラム・メモリ・ユニット3、およびプログラムキャッシュ10は、独立したメモリユニットまたは集積化されたメモリユニットとして実装されてもよい。データ・メモリ・ユニット2、プログラムキャッシュ10、および/またはプログラム・メモリ・ユニット3は、集積化されてもよく(「オンチップ」)、独立していてもよい(すなわち、「オフチップ」)。階層記憶、すなわち、記憶の階層がある一実施形態において、プログラム・メモリ・ユニット3はオフチップであってもよく、プログラムキャッシュ10および/またはデータ・メモリ・ユニット2はオンチップ、たとえば、L−1キャッシュ(たとえば、プロセッサ1との一体化の程度がL−2キャッシュよりも比較的高く、典型的に、プロセッサ1のクロックレートで動作する)またはL−2キャッシュ(たとえば、プロセッサ1との一体化の程度がL−1キャッシュよりも比較的低く、典型的に、プロセッサ1のクロックレートと異なるクロックレートで動作する)であってもよい。他のまたは追加のメモリアーキテクチャが採用されてもよい。
プロセッサ1は、プログラム制御ユニット8を含んでいてもよい。プログラム制御ユニット8は、命令をプログラム・メモリ・ユニット3から要求し、読み出して、ディスパッチしてもよく、一般に、プログラム・パイプライン・フローに関与してもよい。プログラム制御ユニット8は、データ・メモリ・バス4に結合されたデータ・メモリ・コントローラ(図示せず)と、それぞれデータ・メモリ・ユニット2およびプログラム・メモリ・ユニット3からデータを読み出すためにプログラム・メモリ・バス5に結合されたプログラム・メモリ・コントローラ(図示せず)とを含んでいてもよい。
プログラム制御ユニット8は、フェッチユニット12、割込みユニット13、および分岐機構14を含んでいてもよい。フェッチユニット12は、命令をディスパッチする前に、命令をローカル待ち行列にフェッチするために使用されてもよい。分岐機構14は、分岐命令を検出してもよく、分岐命令の結果を予測してもよく、分岐命令の予測結果に基づいて、たとえば、分岐予測ミスがあるときに、フェッチユニット12を介してプログラム・メモリ・ユニット3から後続命令を要求してもよい。割込みユニット13は、割込み事象を読み出して対処してもよい。割込み信号は、関連優先順位を有していてもよい。場合によっては、たとえば、プロセッサ1が、高い優先事項、バンドル、または一連の命令、たとえば、命令ループを実行している間に、割込みユニット13は、入力割込みをマスク、先送り、またはディセーブルしてもよい。イネーブルされると、割込みユニット13は、たとえば、別のより高い優先順位の処理を開始するために現行の処理を中断してもよい。
プロセッサ1は、デコードユニット6、ロード/記憶ユニット7、一つ以上のレジスタファイル9、および実行ユニット11を含んでいてもよい。命令がプログラム制御ユニット8によってディスパッチされた時点で、デコードユニット6は命令をデコードしてもよい。プロセッサ1は、タグを実装して、たとえば、要求通りの同じ計算サイクルでデコードされた命令に効果的にアクセスするためにレジスタファイル9を使用してもよい。実行ユニット11は命令を実行してもよい。ロード/記憶ユニット7は、データ・メモリ・ユニット2から/に対してロード操作および記憶操作を実施してもよい。
プロセッサ1は、たとえば、各命令に対して以下の連続パイプライン段を実行してもよい。
● IF1−プログラム・メモリ・アドレス(プログラム制御ユニット8によって操作される)
● IF2−プログラム・メモリ・フェッチ(フェッチユニット12によって操作される)
● D1−命令ディスパッチ(プログラム制御ユニット8によって操作される)
● D2−命令デコード(デコードユニット6によって操作される)
● D3からD4−レジスタファイル読出し(レジスタファイル9を用いる)
● E1からE4−実行、データ・メモリ・アクセスおよびレジスタ・ファイル・ライトバック(実行ユニット11、ロード/記憶ユニット7、およびレジスタファイル9によって操作される)
しかし、本発明の実施形態は特定の順序に限定されるものではなく、他のあるいは追加のパイプライン段および操作デバイス構成部品が採用されてもよいことを当業者は理解されたい。
連続命令を備える処理において、将来処理される命令は事前に分かっており、プロセッサが命令をディスパッチする状態になる前に各命令がフェッチされるように、フェッチユニット12は命令を前もって読み出してもよい。フェッチされた命令は、プログラムメモリ3よりもアクセスが著しく速いプログラム・キャッシュ・メモリ10および/またはローカル待ち行列に一時的に記憶される。
しかし、条件付き分岐命令の後に続く命令は、命令がフェッチされる予定の時点でまだ分かっていない分岐条件に依存してもよい。たとえば、分岐命令は、分岐条件の結果に応じて複数の異なる命令または処理経路のいずれかに進んでよい。
分岐機構14は、たとえば、命令を処理するデコード段(D2)において命令が分岐命令であるか否かを識別してもよい。
命令が分岐命令であるとき、命令が読み出される予定の時点で見込まれる複数の後続命令の正しい一つが分かっていない場合、分岐機構14は分岐命令の後に続く可能性が最も高い命令を予測してもよい。予測された命令はプログラムメモリ3から読み出され、予測が正しければ、予測された命令は分岐遅延スロットを実行した後で処理される。
プロセッサ1は、分岐条件を判断してもよく、したがって、予測された命令が実際の分岐結果に一致していれば、たとえば、実行段(E1)で分岐条件を判断してもよい。この判断には複数のサイクル(たとえば、3サイクル)を要するかもしれない。
予測された分岐命令が実際の分岐結果に一致していれば、予測された命令は正しい命令であり採用されてもよい。
しかし、予測された分岐命令が実際の分岐結果に一致しなければ、実際の分岐命令はプログラム命令3からフェッチされてもよく、プログラムメモリ3から正しい命令をフェッチするために、たとえば、3サイクル(IF1〜D1)のさらなる計算ペナルティが生じるかもしれない。このペナルティは、プロセッサ1のパイプラインの種類によって異なるかもしれない。
割込みが分岐命令スロットに続いて遅延スロットまたは計算サイクルのいずれかの間に処理されるとき、プロセッサ1は割込みスロットの後に分岐を適切に処理するための正しい一連の命令を維持しないかもしれない。したがって、関連する遅延スロットにおいて処理される分岐命令および任意の命令は破棄されてもよい。第1の破棄または無効化された命令のプログラムアドレスは、リターンレジスタ(たとえば、レジスタファイル9内の)に書き込まれてもよく、割込みサブルーチンから戻った後にパイプラインスロットで再処理されてもよい。
しかし、命令が分岐命令でないとき、一連の後続命令は割込みの時点で既に分かっている。したがって、割込みが後に続く非分岐命令は、停止も、割込みも、破棄もされず、プロセッサ1のパイプラインによって最後まで処理されてもよい。
本発明の実施形態によると、割込みが既にプロセッサパイプライン内にある命令に続くとき、命令は、たとえば、D2段において、少なくとも分岐命令であるか否かが判断されるまで処理される。後続の遅延スロットにおいて割込みを有する分岐命令は分岐結果を適切に解析しないかもしれないので、プロセッサ1が一つ以上の命令が分岐命令でありかつ割込みが一つ以上の関連遅延スロットを占有すると判断するとき、分岐命令、分岐遅延スロット、およびこれらに関連する予測された命令が破棄または無効化される。割込みが対処された後に破棄されたデータを再処理するために、割込みペナルティが生じる。しかし、命令が単一パイプラインスロットにおいてのみ処理される非分岐命令であるとプロセッサ1が判断するとき、非分岐命令は最後まで中断することなく進行することが許可される。この場合、データが破棄されることはなく割込みペナルティが生じることはない。
本発明の実施形態は、従来のシステムより優れた長所を提供し、命令が分岐命令であるか否か分からない命令に割込みが続くとき(たとえば、命令がD2パイプライン段においてデコードされる前に)、命令は簡単に破棄され、命令の再処理に対して割込みペナルティが必ず生じる。
割込みを対処するプロセッサ動作を示す表である図2から5を参照する。図2から5において、表内の各行は独立したパイプラインスロット内の単一の命令を表わす。(列1に記載された)命令は、処理される順に、すなわち、(パイプライン段IF1において)命令が最初にプロセッサ・パイプライン・スロットに入る順に連続行または連続スロットで順序付けられる。各連続列は、各連続計算サイクルにおいて発生する命令で実行されるパイプライン段またはパイプライン動作を示す。すなわち、各行の命令が各連続列におけるプロセッサ・パイプライン・スロットに最初に入る時点で、プロセッサは、命令、たとえば、プログラム・メモリ・アドレス(IF1)、フェッチング(IF2)、ディスパッチング(D1)、デコーディング(D2)、レジスタファイル読出し(D3からD4)、実行、データ・メモリ・アクセス、およびレジスタ・ファイル・ライトバック(E1からE4)で連続した動作段を実行してもよい。しかし、割込みがパイプラインスロットで処理されるとき、命令が最後(たとえば、パイプライン段E4)まで処理させる前に、プロセッサは先行するパイプラインスロットの命令を無効化または「中止」してもよい。他のあるいは追加の動作が採用されてもよい。
図2は、従来のシステムにおいて割込みを対処するプロセッサ動作を示す。
表内の左上のセル(行1、列1)は、「A」と標記された命令を示す。命令Aは、プログラムの一連の命令、たとえば、A、A+1、A+2、A+3、...(行1および3〜5、列1)における命令であってもよい。命令Aは、第1のアドレスで記憶され、たとえば、アドレス100(行1、列2)として任意に表わされてもよく、後続の命令A+1、A+2、A+3、...は異なる連続アドレスで記憶され、たとえば、101、102、103、...(行3〜5、列2)として任意に表わされてもよい。
プログラム処理中に、命令Aは、プロセッサパイプライン、たとえば、パイプライン段IF1(行1、列3)に入ってもよい。パイプライン段IF1において、プロセッサ(たとえば、図1Aおよび1Bのプロセッサ1)は、プログラム・メモリ・アドレスにアクセスして、プログラムメモリ(たとえば、図1Aおよび1Bのプログラムメモリ3)におけるアドレス100に記憶された命令Aを検索してもよい。命令Aは、次の連続段IF2(行1、列4)、D1(行1、列5)、さらにD2(行1、列6)に進んでもよい。
パイプライン段D2(行1、列6)において、プロセッサは命令Aが分岐命令であるかどうかを判断するために命令Aをデコードしてもよい。この事例において、命令Aは分岐命令ではなく、命令は完全に処理されるまでプロセッサパイプラインの中を進行してもよい。
次の計算サイクル(列7の動作)において、割込みアドレス200(行6、列1)における割込み事象、すなわち、「割込み要求」(IRQ)(行2、列1)は、プロセッサによって検出されてもよい。割込みは、プロセッサによって実行されている現行のタスクよりも高い優先順位を有していてもよく、したがって、割込みはマスクされない。割込みの対処は、たとえば、パイプライン段IF1(行6、列7)における割込みアドレスのフェッチングを必要とする。プロセッサは、割込みを検索するためにパイプライン段IF1におけるプログラム・メモリ・アドレス200(行6、列2)にアクセスしてもよい。
割込みが最初に処理されるとき(たとえば、段IF1において:行6、列7)、命令A+1、A+2、およびA+3は、それぞれ、ディスパッチされ(D1:行3、列6)、フェッチされ(IF2:行4、列6)、アドレス指定される(IF1:行5、列6)が、命令A+1、A+2、およびA+3のいずれもデコードされていない(D2)。プロセッサは命令がデコード段(D2)において分岐命令であるかどうかを判断するので、割込みが最初に処理される時点では命令A+1、A+2、およびA+3が分岐命令であるか否かが分からない。命令A+1、A+2、およびA+3が分岐命令であれば、割込みは分岐命令を適切に処理するために必要な遅延スロットを占有することになる。従来の方法によると、命令A+1、A+2、およびA+3は、分岐命令であるかどうかが判断される前に割り込まれ、簡単に無効化され、破棄され、あるいは「中止」される(行3〜5、列7)。
リターンレジスタ(たとえば、図1Bのレジスタファイル9における)は、一連の無効化された命令の最初の命令のアドレス、たとえば、A+1をロードしてもよい。第1の無効化された命令は、命令A+1として再ロード・レジスタ・アドレス101に書き込まれてもよい。割込みサブルーチンから戻った後、または割込みサブルーチンを完了した後、プロセッサは、プロセッサパイプラインにおける次の有効なスロットで無効化された命令の処理および実行を再開してもよい。
処理は、無効化された命令で既に実行された動作を繰り返す計算ペナルティを受ける。たとえば、割込み(列4、5、および6における)に先立って命令A+1、A+2、A+3で既に実行された動作は、割込みサブルーチンから戻った後に命令で再び実行される。この場合の割込みペナルティは三計算サイクルである。
図3〜5は、本発明の実施形態に従って割込みに対処するプロセッサ動作を示す。図3〜5の動作は、たとえば、図1Aおよび1Bのデバイス100によって実行されてもよい。
図3〜5は、割込みが最初に処理されるとき(行6、列7)命令A+1、A+2、およびA+3がまだデコードされておらず、したがって、命令が分岐命令であるかどうかが分かっていないような、図2に関連して記載される同じ割込みを示す。しかし、図2とは対照的に、図3〜5の本発明の実施形態によると、割込みが最初に処理されるとき、命令A+1、A+2、およびA+3は無効化されないが、少なくともこれらの一つが分岐命令であると判断されるまで処理される。命令A+1、A+2、およびA+3の一つが分岐命令であると判断され、割込みが分岐を解析するために必要な遅延スロットの少なくとも一つを占有するとき、分岐命令自体、および分岐命令スロットと割込みスロットの間のパイプラインスロットにおける任意の命令は無効化または「中止」されてもよい。図5におけるように分岐命令が検出されなければ、命令は無効化なしで処理され、割込みペナルティはない。
図3において、プロセッサ(たとえば、図1Aおよび1Bのプロセッサ1)は、命令A+1をデコードし(行3、列7)、この命令が分岐命令でないと判断する。したがって、命令A+1は無効化されずに最後(たとえば、段E4において:行3、列11−図示せず)まで中断することなく処理される。プロセッサは、命令A+2をデコードし(行4、列8)、命令が分岐命令であると判断する。分岐命令A+2は、典型的に、適切に処理される複数の(たとえば、三つの)後続の遅延スロットを必要とする。割込みは、分岐命令A+2(たとえば、三つの遅延スロットの2番目)を適切に処理するために必要な遅延スロットの少なくとも一つを占有する。したがって、分岐命令A+2は適切に処理されることができず、たとえば、分岐を解析するには不十分な単一遅延スロットを占有している分岐命令A+2およびA+3は、無効化または「中止」される(それぞれ、行4および5、列8)。
リターンレジスタ(たとえば、図1Bのレジスタファイル9における)は、一連の無効化された命令の第1の命令、たとえば、命令A+2のアドレスをロードしてもよい。第1の無効化された命令は、命令A+1として再ロード・レジスタ・アドレス101に書き込まれてもよい。割込みサブルーチンから戻った後、または割込みサブルーチンを完了した後、プロセッサは、プロセッサパイプラインにおける次の有効なスロットで無効化された命令の処理および実行を再開してもよい。
この場合、割込みルーチンから戻った後に命令に対して再び割り込む(列5および6において)前に無効化された命令A+2およびA+3で実行された動作の繰り返しに対して割込みペナルティが生じる。本発明の実施形態を用いてこの場合に生じる割込みペナルティは、二計算サイクルであり、図2に関連して記載される従来の機構を用いる同じ割込みに対して生じる三計算サイクルよりも減少している。
図4は、命令A+2ではなく、命令A+3が分岐命令であることを除いて、図3に関連して記載される割込みと同じ割込みを示す。
プロセッサ(たとえば、図1Aおよび1Bのプロセッサ1)は命令A+1およびA+2(それぞれ、行3、列7および行4、列8)をデコードしてもよく、命令A+1およびA+2が分岐命令でないと判断する。したがって、命令A+1およびA+2は、命令が完全に処理されるまで中断することなく進行が許可される(たとえば、段E4において:行3、列11、および行4、列12、いずれも図示せず)。プロセッサは、この後、命令A+3をデコードし(行5、列9)、命令が分岐命令であると判断する。割込みは、たとえば、分岐命令A+3を適切に処理するために必要な命令A+3の後に続く遅延スロットを占有するので、命令A+3は無効化または「中止」される(行5、列9)。
リターンレジスタ(たとえば、図1Bのレジスタファイル9における)は、一連の無効化された命令における第1の命令、たとえば、命令A+3のアドレスをロードしてもよい。第1の無効化された命令は、命令A+1として再ロード・レジスタ・アドレス101に書き込まれてもよい。割込みサブルーチンから戻った後、または割込みサブルーチンを完了した後、プロセッサは、プロセッサパイプラインにおける次の有効なスロットで無効化された命令の処理および実行を再開してもよい。
この場合、命令に対して再び割り込む(行6において)前に無効化された命令A+3で既に実行された動作の繰り返しに対して割込みペナルティが生じる。本発明の実施形態を用いたこの場合に生じる割込みペナルティは、一計算サイクルであり、たとえば、図3に関連して記載されるように、命令A+3ではなく命令A+2が分岐命令であるときの同じ割込みに対して生じた二計算サイクルよりも減少している。本発明の実施形態によると、命令が分岐命令であると判断されるとき、分岐命令自体、および分岐命令スロットと割込みスロットの間のパイプラインスロットにおける任意の命令は無効化または「中止」されてもよい。図3において、分岐命令スロット(行4)と割込みスロット(行6)の間には一つの命令A+3(行5)がある。したがって、したがって、分岐命令自体A+2および介在命令A+3は、いずれも無効化されて二命令または二計算サイクルの総ペナルティをもたらす。図4において、分岐命令A+3(行5)と割込み(行6)の間には介在スロットがなく、したがって、分岐命令A+3のみが無効化されて一命令または一計算サイクルの総ペナルティをもたらす。
図5は、命令A、A+1、A+2、およびA+3のどれも分岐命令でないことを除いて、図3および4に関連して記載される割込みと同じ割込みを示す。
プロセッサ(たとえば、図1Aおよび1Bのプロセッサ1)は、命令A+1、A+2、およびA+3(それぞれ、行3、列7。行4、列8。行5、列9。)をデコードし、これら命令のいずれも分岐命令でないと判断してもよい。したがって、命令A+1、A+2、およびA+3が完全に処理されるまで(たとえば、段E4において、それぞれ、行3、列11。行4、列12。行5、列13。図示せず)、これらの命令は中断することなく進行が許可される。割込みに先立つ命令A+1、A+2、およびA+3のいずれも分岐命令ではないので、命令は無効化も「中止」もされない。
リターンレジスタ(たとえば、図1Bのレジスタファイル9における)は、一連の命令における次の命令、たとえば、命令A+4をロードしてもよく、命令A+4は命令A+1として再ロード・レジスタ・アドレス101に書き込まれる可能性がある。割込みサブルーチンから戻った後、または割込みサブルーチンを完了した後、プロセッサは、プロセッサパイプラインにおける次の有効なスロットで無効化された命令の処理および実行を再開してもよい。
この場合、命令は無効化または「中止」されないので、割込みペナルティは生じない。この場合の割込みペナルティはゼロ計算サイクルであり、たとえば、図4に関連して記載されるように、命令A+3が分岐命令であるとき同じ割込みに対して生じた一計算サイクルよりも減少している。
割込みが処理されるとき、従来の機構は、命令が実際に分岐命令であるか否かに関わらず、たとえば、まだデコードされていない分岐命令であるかどうか分からない命令を常に無効化する。図2に関連して記載される例では、三つの上記のような命令、A+1、A+2、およびA+3があり、三計算サイクルの割込みペナルティをもたらす。対照的に、本発明の実施形態に従って記載される機構は、分岐命令であると実際に判断される命令、および分岐命令スロットと割込みスロットの間のパイプラインスロットにおける任意の命令を無効化する。図3において、関連遅延スロットにおける一つの分岐命令A+2および一つの命令A+3は、中断されて、二計算サイクルの割込みペナルティをもたらす。図4において、一つの分岐命令A+3は中断されて、一計算サイクルの割込みペナルティが生じる。図5において、分岐命令は中断されることがなく、したがって、割込みペナルティが生じない。したがって、本発明の実施形態では、コンピュータシステムにおいて割込み処理に関連する割込みペナルティが減少する。
本発明の実施形態による方法のフローチャートである図6を参照する。
操作600において、プロセッサ(たとえば、図1Aおよび1Bのプロセッサ1)は、たとえば、図3〜5に関連して記載されるように、さらに、それぞれのプロセッサ・パイプライン・スロットで一連の命令処理を開始してもよい。
操作610において、プロセッサは、操作600における命令を処理するために使用される一連のスロットに続くプロセッサ・パイプライン・スロットで割込み処理を開始してもよい。
操作620において、割込み処理またはサブルーチンが開始される時点で、操作600の各連続命令は命令の一つが分岐命令であると判断されるまで処理される。操作600の命令の一つが分岐命令であれば、処理は操作630に進んでもよい。そうでなければ、処理は操作670に進んでもよい。プロセッサは、たとえば、命令がデコードされるとき(たとえば、プロセッサパイプラインのD2段において)、命令が分岐命令であるかどうかを判断してもよい。
操作630において、プロセッサは、検出された分岐命令に関連する遅延スロットで割込みが処理されるかどうかを判断してもよい。典型的に、遅延スロットは、分岐命令に続き、たとえば、どの命令が分岐命令に続くかを判断するために分岐を適切に解析する必要があるかもしれない。割込みが上記の遅延スロットの一つを占有するとき、プロセッサは分岐命令に続く命令を判断しないかもしれず、分岐は未解析のままとなるかもしれない。操作610の割込みが操作620で検出された分岐命令に関連する遅延スロットで処理されるものとプロセッサが判断すれば、処理は命令640に進んでもよい。そうでなければ、処理は操作670に進んでもよい。
操作640において、プロセッサは、操作620で検出された分岐命令を無効化または「中止」してもよく、分岐命令および割込みが処理されるパイプラインスロットの間にパイプラインスロット内で処理された命令があればこれらの命令も無効化または「中止」してよい。
操作650において、プロセッサは、たとえば、少なくとも第1の無効化された命令のアドレスをリターンレジスタ(たとえば、図1Bのレジスタファイル9における)に書き込んでもよい。
操作660において、分岐命令が検出されなくても検出されても、割込みがこれに関連する遅延スロットを占有しないとき、プロセッサは、無効化なしで、したがって、割込みペナルティなしで命令処理を完了してよい。
操作670において、割込みサブルーチンから戻った後、プロセッサは、操作610の割込みプロセッサ・パイプライン・スロットに続くプロセッサ・パイプライン・スロットでリターンレジスタからの命令を実行してもよい。
他の操作または一連の操作が採用されてもよい。
本発明の実施形態は、コンピュータまたはプロセッサ可読媒体、あるいは、プロセッサまたはコントローラ(たとえば、図1Aおよび1Bにおいてデバイス100のプロセッサ1)によって実行されるときに本明細書で開示された方法を実行する命令をエンコードし、含み、または記憶する、たとえば、メモリ、ディスクドライブ、またはUSBフラッシュメモリなどのコンピュータまたはプロセッサ記憶媒体などの品目を含んでいてもよい。
先に図示され説明された具体的な実施形態は本発明が関わる多くの分散システムにとって有用であることが分るであろうが、本発明のさらなる修正形態が当業者には思い浮かぶであろう。このようなすべての修正形態は、添付の特許請求の範囲によって規定される本発明の範囲および趣旨の範囲内にあるものと見なされる。

Claims (17)

  1. ディジタル信号を処理する方法であって、
    一連の命令に続いて割込みの処理を開始することであって、前記一連の命令は、一連のパイプラインスロットで処理されるべきものであり、前記割込みは、前記一連のパイプラインスロットに続くスロットにおいて処理されるべきものである、前記開始すること、
    デコード段において、前記一連の命令における命令が分岐命令であるかどうかを検出すること、
    前記一連の命令が分岐命令を含まない場合、割込みペナルティなしで前記一連の命令の処理を完了すること、
    分岐命令が検出され、かつ前記割込みが、検出された分岐命令に関連する遅延スロットを占有する場合、前記検出された分岐命令、及び該分岐命令と、前記割込みに関連する割込みアドレス命令との間の任意の命令を無効化し、前記検出された分岐命令に先行する前記一連の命令における任意の命令の処理を完了すること
    を備える方法。
  2. 前記遅延スロットは分岐命令を適切に処理するために必要である、請求項1に記載の方法。
  3. 割込みサブルーチンに続くそれぞれのパイプラインスロットにおいて無効化された命令を処理することを備える、請求項1に記載の方法。
  4. 前記無効化された命令をリターンレジスタに書き込むこと、前記無効化された命令を待ち行列に入れて、割込みサブルーチンに続くパイプラインスロットで順番に処理されるようにすることを備える、請求項1に記載の方法。
  5. 各無効化された命令の再処理に対して割込みペナルティを生じることを備える、請求項1に記載の方法。
  6. 少なくとも、前記命令の一つが分岐命令であると判断されるまで、連続する命令の処理を継続することを備える、請求項1に記載の方法。
  7. 前記割込みに先行し、かつ分岐命令ではなく、かつ分岐命令に関連する遅延スロットを占有しない各命令に対するパイプライン処理の全体を通じて中断することなく命令を処理することを備える、請求項1に記載の方法。
  8. ディジタル信号を処理するプロセッサであって、
    分岐検出器を備え、
    前記プロセッサは、一連の命令に続いて割込みの処理を開始し、各命令はそれぞれの連続パイプラインスロットで処理され、前記分岐検出器は、命令が分岐命令であるかどうかを検出し、分岐命令が検出され、かつ前記割込みが、検出された分岐命令に関連する遅延スロットを占有する場合、前記プロセッサは、前記分岐命令、及び該分岐命令と、前記割込みに関連する割込みアドレス命令との間の前記一連の命令における任意の命令を無効化し、前記検出された分岐命令に先行する前記一連の命令における任意の命令の処理を完了し、分岐命令が検出されない場合、前記プロセッサは、割込みペナルティなしで前記一連の命令の処理を完了する、プロセッサ。
  9. 前記プロセッサは、割込みパイプラインスロットに続くそれぞれのパイプラインスロットにおいて無効化された命令を処理する、請求項8に記載のプロセッサ。
  10. リターンレジスタを備え、無効化された命令が前記リターンレジスタに書き込まれ、待ち行列に入れられて、割込みサブルーチンに続くパイプラインスロットで前記プロセッサによって順番に処理されるようにする、請求項8に記載のプロセッサ。
  11. 割込みパイプラインスロットに続くパイプラインスロットにおいて各無効化された命令を再処理するために割込みペナルティが生じる、請求項8に記載のプロセッサ。
  12. 前記プロセッサは、少なくとも前記分岐検出器が分岐命令を検出するまで、連続する命令の処理を継続する、請求項8に記載のプロセッサ。
  13. 前記プロセッサが前記割込みに先行する命令は分岐命令ではなくかつ分岐命令に関連する遅延スロットを占有しないと判断する場合に、前記プロセッサは、パイプライン処理全体を通じて命令を中断することなく処理する、請求項8に記載のプロセッサ。
  14. ディジタル信号を処理するシステムであって、
    一連の命令に続いて割込みの処理を開始するプロセッサであって、各命令はそれぞれの連続パイプラインスロットで処理される、前記プロセッサと、
    命令が分岐命令であるかどうかを検出する分岐検出器であって、分岐命令が検出され、かつ前記割込みが、検出された分岐命令に関連する遅延スロットを占有する場合、前記プロセッサは、前記分岐命令、及び該分岐命令と、前記割込みに関連する割込みアドレス命令との間の前記一連の命令における任意の命令を無効化し、前記検出された分岐命令に先行する前記一連の命令における任意の命令の処理を完了し、分岐命令が検出されない場合、前記プロセッサは、割込みペナルティなしで前記一連の命令の処理を完了する、前記分岐検出器と、
    少なくとも前記一連の命令を実行してプログラムを実行する実行ユニットと
    を備えるシステム。
  15. 前記プロセッサは、割込みサブルーチンに続くそれぞれのパイプラインスロットにおいて無効化された命令を処理する、請求項14に記載のシステム。
  16. 前記プロセッサは、少なくとも前記分岐検出器が分岐命令を検出するまで、連続する命令の処理を継続する、請求項14に記載のシステム。
  17. 前記プロセッサが前記割込みに先行する命令は分岐命令ではなくかつ分岐命令に関連する遅延スロットを占有しないと判断する場合に、前記プロセッサは、パイプライン処理全体を通じて命令を中断することなく処理する、請求項14に記載のシステム。
JP2010283132A 2009-12-21 2010-12-20 コンピュータシステムにおいて割込みを処理するシステムおよび方法 Active JP5485129B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/642,970 2009-12-21
US12/642,970 US8473725B2 (en) 2009-12-21 2009-12-21 System and method for processing interrupts in a computing system

Publications (3)

Publication Number Publication Date
JP2011129130A JP2011129130A (ja) 2011-06-30
JP2011129130A5 JP2011129130A5 (ja) 2014-02-13
JP5485129B2 true JP5485129B2 (ja) 2014-05-07

Family

ID=43745712

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010283132A Active JP5485129B2 (ja) 2009-12-21 2010-12-20 コンピュータシステムにおいて割込みを処理するシステムおよび方法

Country Status (4)

Country Link
US (1) US8473725B2 (ja)
EP (1) EP2348399B1 (ja)
JP (1) JP5485129B2 (ja)
CA (1) CA2725906C (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9372811B2 (en) * 2012-12-13 2016-06-21 Arm Limited Retention priority based cache replacement policy
CN103577242B (zh) * 2013-11-14 2016-11-02 中国科学院声学研究所 针对已调度汇编代码的控制流图重构方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5922070A (en) * 1994-01-11 1999-07-13 Texas Instruments Incorporated Pipelined data processing including program counter recycling
US5774709A (en) * 1995-12-06 1998-06-30 Lsi Logic Corporation Enhanced branch delay slot handling with single exception program counter
JP3439033B2 (ja) * 1996-07-08 2003-08-25 株式会社日立製作所 割り込み制御装置及びプロセッサ
US6055628A (en) 1997-01-24 2000-04-25 Texas Instruments Incorporated Microprocessor with a nestable delayed branch instruction without branch related pipeline interlocks

Also Published As

Publication number Publication date
US8473725B2 (en) 2013-06-25
CA2725906A1 (en) 2011-06-21
JP2011129130A (ja) 2011-06-30
US20110154001A1 (en) 2011-06-23
EP2348399A1 (en) 2011-07-27
EP2348399B1 (en) 2013-08-07
CA2725906C (en) 2018-11-27

Similar Documents

Publication Publication Date Title
US10409605B2 (en) System and method for using a branch mis-prediction buffer
TWI521347B (zh) 用於減少由資料預擷取引起的快取汙染之方法及裝置
JP5410281B2 (ja) 非シーケンシャル命令アドレスをプリフェッチするための方法および装置
TWI396131B (zh) 排程一指令在一處理器中之執行方法及使用該方法之積體電路裝置
US8291202B2 (en) Apparatus and methods for speculative interrupt vector prefetching
TWI547803B (zh) 預取單元、資料預取方法、電腦程式產品以及微處理器
US9052910B2 (en) Efficiency of short loop instruction fetch
US20120159125A1 (en) Efficiency of short loop instruction fetch
KR101048178B1 (ko) 링크 스택 회로를 정정하는 방법 및 장치
WO2022237585A1 (zh) 处理方法及装置、处理器、电子设备及存储介质
JP5485129B2 (ja) コンピュータシステムにおいて割込みを処理するシステムおよび方法
CN111065998A (zh) 用于预执行数据相依的负载的切片结构
US9164900B1 (en) Methods and systems for expanding preload capabilities of a memory to encompass a register file

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20120123

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131218

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20131218

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20131218

TRDD Decision of grant or rejection written
A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20140117

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140128

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140219

R150 Certificate of patent or registration of utility model

Ref document number: 5485129

Country of ref document: JP

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250