JP2009545079A - 効率的な割込み復帰アドレス保存メカニズム - Google Patents

効率的な割込み復帰アドレス保存メカニズム Download PDF

Info

Publication number
JP2009545079A
JP2009545079A JP2009521965A JP2009521965A JP2009545079A JP 2009545079 A JP2009545079 A JP 2009545079A JP 2009521965 A JP2009521965 A JP 2009521965A JP 2009521965 A JP2009521965 A JP 2009521965A JP 2009545079 A JP2009545079 A JP 2009545079A
Authority
JP
Japan
Prior art keywords
instruction
pseudo
stage
register file
interrupt
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
JP2009521965A
Other languages
English (en)
Other versions
JP5528804B2 (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 JP2009545079A publication Critical patent/JP2009545079A/ja
Application granted granted Critical
Publication of JP5528804B2 publication Critical patent/JP5528804B2/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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • 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
    • 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/3017Runtime instruction translation, e.g. macros
    • 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/30181Instruction operation extension or modification
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Image Processing (AREA)

Abstract

パイプライン化されたプロセッサにおいて、汎用レジスタを用いて割込みを効率的に処理するシステム、装置、及び方法が開示される。本開示によると、レジスタファイルは、割込み復帰アドレスを効率的に保存するために更新することができる。システムのプロセッサによって割込み要求が受け取られた場合、又はプログラムの実行中に割込み要求が発行された場合、疑似命令が生成される。この疑似命令は、他の命令と同様にパイプラインを下へ進み、処理が未完了である最後の命令の復帰アドレスをレジスタファイルへ書き込ませることによって、レジスタファイルを更新する。

Description

本開示は、一般にプロセッサに関し、特に、割込み復帰アドレスを効率的に保存する、パイプライン化されたプロセッサに関する。
より速いコンピュータ処理速度を達成することは、製造者及び利用者の双方にとって長い間の目標である。高速処理という目標を促進するために、いくつかのコンピュータプロセッサは、パイプライン化された処理として知られる技術を用いる。パイプライン化されたアーキテクチャを組み込むプロセッサは、多くの命令が様々な実行ステージにおいて同時に存在することを可能とする。
パイプライン化されたアーキテクチャにおいて、単一の命令サイクルは、5つのステージを含むことができる。これらのステージは、(1)フェッチ、(2)復号、(3)レジスタファイルへのアクセス、(4)実行、及び(5)レジスタファイルへの書込み、というように連続して説明することができる。パイプライン化された処理において、これらステージの各々における処理は、高速処理を達成するために並行して達成される。パイプライン化は、期間にわたって完了した命令の数を増加することによって、プロセッサ速度を加速するために用いることができる。
このようなプロセッサにおいて、一度に、様々な処理ステージ内のパイプラインに5つの命令が同時に存在することが可能である。例えば、最初のいくつかの処理クロックサイクルで、1から5までの命令が、様々な実行ステージに同時に存在することができる。単一の命令の5つのステージでの処理の完了は、次の命令の処理が開始する前に完了する必要はない。
例えば1つの時点において、命令5がフェッチされ、命令4が復号し、命令3がレジスタファイルへアクセスし、命令2が実行し、命令1がレジスタファイルへ書き込まれることが可能である。パイプライン化された処理において、各命令は一般に、連続するステージで、連続してフェッチされ、連続して処理される。
パイプライン化されたプロセッサはまた、割込みの制御を要する。このような割込みは、周辺デバイスから、あるいはコンピュータプログラムの実行中に、割込み要求信号が発行された場合特に起こりうる。割込み要求が発生した場合、実行中のプログラムは中断される。プロセッサはその後、実行中のプログラムの状態を一時的に保存し、割込み要求に応答して他の処理が発生する。割込み処理が完了すると、プロセッサは、プログラムが中断された時点から、プログラムの実行を再開する。
従って、中断されたプログラム状態の、保存されなければならないキー要素は、割込み処理が完了した時プログラムの実行が再開するべきである命令のアドレスである。このアドレスは、「復帰アドレス」と称される。いくつかのアーキテクチャにおいて、この復帰アドレスを、汎用レジスタファイルの一部である特定のレジスタ内に保存することが必要条件である。解決すべき問題は、復帰アドレスを保存するために、レジスタファイルへのアクセスを用いた割込みメカニズムを如何に提供するかである。
ある者は、レジスタファイルへの専用ポートを用いることによって復帰アドレスを保存することを試みた。しかし、プロセッサのレジスタファイルの管理は一般に、特に高周波数で深くパイプラインされたスーパースカラプロセッサにおいて、非常に複雑であり設計の性能を決定付ける局面である。追加のレジスタファイルポートは、タイミング、領域、及び電力の点からコストがかかりうるので、プロセッサの効率を低減する。更に、多くの高性能設計は、レジスタの再命名、予約局、及び命令順序のための完了バッファを含む更に複雑なレジスタファイル管理をも要求しうる順不同命令処理を実行する。これら複雑さの全てが、割込み復帰アドレスを保存するために単にレジスタファイルへの追加ポートを提供することや、既存のレジスタファイルポートを共有する特別制御経路を提供することさえも複雑にしている。
本開示は、汎用レジスタファイルにおいて、割込み復帰アドレスを効率的に保存するシステム、装置、及び方法を提供する。本開示は、割込みが発生した時点で未だパイプラインを出ていない命令のプログラムカウンタ値又は割込み復帰アドレスを保存するメカニズムを提供する。割込みが発生した時、パイプライン内で最も進んでいるが処理が未完了であるプログラム命令は、本明細書でしばしば、パイプライン内の先頭の命令と称される。
本開示の1つの実施形態によると、パイプライン化されたプロセッサの汎用レジスタファイルにおいて、割込み復帰アドレスを効率的に保存するデータ処理システムが提供される。このシステムは、割込み要求に応答して疑似命令を生成するように構成された制御論理を備える。疑似命令は、パイプライン内の先頭の命令の割込み復帰アドレスを汎用レジスタファイルへ書き込ませるように構成される。疑似命令は更に、パイプライン内へ挿入され、他の命令と実質的に同様に、パイプライン化されたプロセッサのパイプラインを下へ進めるように構成される。
本開示の別の実施形態によると、汎用レジスタファイルにおいて、割込み復帰アドレスを効率的に保存する装置が提供される。この装置は、割込み要求に応答して疑似命令を生成するように構成された疑似命令生成器を有するパイプライン化されたプロセッサを備える。疑似命令は、パイプライン内の先頭の命令の割込み復帰アドレスを汎用レジスタファイルへ書き込ませるように構成される。疑似命令は更に、パイプライン内へ挿入され、他の命令と実質的に同様に、パイプラインされたプロセッサのパイプラインを下へ進めるように構成される。
本開示のまた別の実施形態によると、汎用レジスタファイルにおいて、割込み復帰アドレスを効率的に保存する方法が提供される。この方法は、パイプライン内の先頭の命令の復帰アドレスをパイプラインされたプロセッサ内の汎用レジスタファイルへ書き込ませるように構成された疑似命令を生成することを備える。疑似命令は更に、パイプライン内に挿入され、他の命令と実質的に同様に、パイプラインされたプロセッサのパイプラインを下へ進めるように構成される。
本開示のまた別の実施形態によると、汎用レジスタファイルにおいて、割込み復帰アドレスを効率的に保存する装置が提供される。この装置は、割込み処理を実行するように構成された、マルチステージのパイプライン化されたプロセッサを含む。ステージは、命令を受け取るように構成された少なくとも1つのステージと、汎用レジスタファイルへ結果を書き込むように構成された少なくとも1つのステージとを含む。プロセッサは更に、プログラムからの命令データを処理するように構成される。
この装置は更に、割込み要求に応答して疑似命令を生成するように構成された制御論理を含む。疑似命令は、パイプライン内の先頭の命令の割込み復帰アドレスを汎用レジスタファイルへ書き込ませるように構成される。疑似命令は更に、パイプライン内へ挿入され、他の命令と実質的に同様に、パイプラインされたプロセッサのパイプラインを下へ進めるように構成される。この装置は更に、制御論理からの疑似命令と、プログラムからの命令データとの両方を受け取るように構成されたマルチプレクサを含む。マルチプレクサは更に、疑似命令と命令データとのうちの少なくとも1つを選択し、選択した疑似命令又は命令データを、命令を受け取るように構成された少なくとも1つのパイプラインステージへ入力するように構成される。この装置において、割込み処理の発生後、プロセッサは更に、汎用レジスタファイルへ書き込まれた先頭の命令の割込み復帰アドレスにおいて、命令データの処理を再開するように構成される。
本発明の様々な実施形態のみが例示によって示され説明される以下の詳細な説明から、当業者には、本発明の他の実施形態も容易に明らかになるであろう。理解されるように、本発明は、他の異なる実施形態にも適用可能であって、いくつかの詳細は、全て本発明の精神及び範囲を逸脱することなく他の様々な点において修正可能である。従って、図面及び詳細な説明は、本質的に例示的であり、限定的ではないと見なされるべきである。
他の目的と同様に、これら特徴及び利益は、例示的な実施形態の詳細な説明および図面を閲覧することによって明らかになるであろう。
図1は、本開示の1つの実施形態に従って、パイプライン化されたプロセッサ制御及びデータモデルを示すブロック図である。 図2は、本開示の1つの実施形態に従って、様々なパイプラインステージにおける割込み処理をクロックサイクルと関連付けて示す表である。 図3は、本開示の1つの実施形態に従って、汎用レジスタファイルにおいて割込み復帰アドレスを効率的に保存する方法を示すフローチャートである。
発明を実施する形態
本開示は、汎用レジスタファイルにおいて、割込み復帰アドレスを効率的に保存するシステム、装置、及び方法を提供する。汎用レジスタファイルは、パイプラインの制御下にある。本開示によると、汎用レジスタファイルは、割込み要求の時点でパイプライン内の先頭にある命令の復帰アドレスやプログラムカウンタ値を効率的に保存するために、更新することができる。
システムプロセッサによって割込み要求信号が受け取られると、プロセッサによって疑似命令が生成される。この疑似命令は、その他の命令とほぼ同様に処理される。疑似命令はパイプラインを下へ進み、復帰アドレスをレジスタファイルへ書き込ませることによって、レジスタファイルを更新する。この疑似命令は正規命令のようにパイプラインを下へ進むので、レジスタのみではなく関連するリソースも更新する。割込み復帰アドレスを保存するためのレジスタファイルに関連する専用ハードウェアは必要ではない。本明細書で説明するシステム、装置、及び方法は、汎用レジスタを用いて実現することができ、そのため、レジスタファイルへの専用ポートは必要ではない。
図1に関して、本開示の1つの実施形態に従って、パイプライン化されたデータプロセッサモデル100が示される。5ステージのパイプラインモデルが例示のために示される。5ステージは、(1)フェッチ、(2)復号、(3)レジスタファイルへのアクセス、(4)実行、及び(5)レジスタファイルへの書込み、として説明することができる。プロセッサモデル100のいくつかのステージは、汎用レジスタを含むことができる。もちろん、これら汎用レジスタは、データが実際のデータとは対照的に格納されるメモリ場所を含むことができる。特別なレジスタは存在せず必要でもない。
本明細書で説明するシステム、装置、及び方法は、5ステージのパイプライン化されたプロセッサとして説明される。しかし、本明細書で説明されるシステム、装置、及び方法は、より少ない又はより多いステージを有するパイプライン化されたプロセッサにおいて実現することもできることが理解されるべきである。更に、本明細書に開示する方法及びシステムは、プロセッサを特定のパイプラインステージのセットに区切る必要がない。
例えば、開示されたステージは、2つ又はそれ以上のステージへ更に分割することができる。この分割は、タイミング発行に対処したり、より高速なプロセッサクロック速度を促進するために実行される。あるいは、2つ又はそれ以上のステージは、単一のステージに結合することができる。プロセッサは単に、命令を受け入れる第1のステージと、レジスタファイルへ結果を書き込む第2のステージとを含むことができる。開示されたパイプラインは、プロセッサ内で処理がいかに本開示に適切に区切られるかの単に1つの例を提供する。
図1に示すように、プロセッサ制御モジュール110は、一般のパイプライン動作及び割込み処理のフローを制御する。フェッチステージ120は、フェッチ命令を担当することができる。正規命令は、組込みキャッシュメモリや、メモリ管理ユニットによって調整される外部メモリからを含む様々な場所からフェッチすることができる。
疑似命令生成器117は、制御モジュール110内に存在しうる制御論理でありうる。疑似命令生成器117は、復帰アドレスを汎用レジスタファイルへ書き込ませるように構成された疑似命令を生成するように構成される。疑似命令は、一般に、パイプラインへ入力されることによって正規命令と区別することができる。更に、疑似命令は一般に、レジスタファイルを割込み復帰アドレスとともに書き込ませるように設計された特別機能を実行する。しかし、疑似命令は、一度パイプラインへ入力されると、メモリやその他からフェッチされた正規命令と同様にパイプラインを下へ進む。疑似命令の利用は、以下でより詳しく説明されるであろう。マルチプレクサ115は、フェッチステージ120と復号ステージ130との間に位置することができる。マルチプレクサ115は、復号ステージ130への入力を、フェッチステージ120での命令か、制御モジュール110内の疑似命令生成器117によって生成された疑似命令かの何れかとして決定することができる。マルチプレクサ115は、選択ライン119を介して、復号ステージへの望まれる入力を選択することができる。
復号ステージ130は、フェッチステージ120中にフェッチされた命令を受け取り、復号することができる。あるいは、制御モジュール110の疑似命令生成器117で生成された疑似命令を受け取り、復号することができる。割込み処理が呼び出されないとすれば、各命令は一般に、連続した順序で、あるいは例えば実行中のコンピュータプログラムによって決定された順序で、フェッチステージ120から復号ステージ130へ到着するであろう。
次の命令のアドレスを決定するために、データの復号が必要であるだろう。アドレスは例えば、連続した次の命令としてバッファ内にあることができる。いくつかの例において、アドレスは、例えばもし現在の命令が分岐であれば、メモリ又はキャッシュからフェッチされることが必要でありうる。復号ステージは、何処で命令が終了するかを判定するために命令を復号することができる、パイプラインの第1のステージである。
割込みを提供すると、問題に遭遇する。これらの問題は、レジスタファイルに復帰アドレスを書き込むことに関連しうる。
本開示は、レジスタファイルがパイプラインの直接制御下にあるという事実を活用する。本開示のプロセッサアーキテクチャは、汎用レジスタファイルにおいて割込み復帰アドレスを効率的に保存するためにレジスタファイルを用いる。
割込み要求信号118が制御モジュール110で受け取られると、制御モジュール110は、選択ライン119を介してサービス割込みを実行するかを判定する。もしサービス割込みが実行されるべきであると判定されれば、疑似命令生成器117は、疑似命令を生成し、経路113を介してマルチプレクサ115へ入力する。疑似命令は、実行中のプログラム内に実際に存在していないために、「疑似命令」と呼ばれる。疑似命令は、割込み復帰アドレスを汎用レジスタファイルへ書き込ませるように構成される。割込み復帰アドレスは、制御モジュール110の疑似命令生成器117へ入力されている。
疑似命令生成器117は、例えば様々なゲート及びトランジスタを有する制御論理を含む。疑似命令は、レジスタファイルへ復帰アドレスを書き込むように設計される。復帰アドレス又はプログラムカウンタ値は、もし割込みが発生しなければ次に処理を完了したであろう、先頭の命令の場所を特定する。従って、復帰アドレスは、先頭の命令のアドレスである。当業者には周知であるように、プロセッサマイクロアーキテクチャは、パイプラインを通して命令アドレスを追跡する制御論理を制御モジュール内に含む。この制御論理は、パイプライン内で追跡したアドレスから、命令復帰アドレスを決定することができる。命令復帰アドレスはその後、疑似命令の一部としてマルチプレクサ115へ提供され、復号パイプラインステージ130へ提供される。
マルチプレクサ115及び/又は疑似命令生成器117は、復号ステージ130への入力される以外に、ステージにおいてパイプライン内に挿入されることもできることが理解されるべきである。しかし、レジスタファイル管理機能が、デフォルト又は通常の制御及びデータ経路を用いることができるように、パイプラインにおける十分に初期のステージに疑似命令を挿入することが望ましいことも理解されるべきである。レジスタファイル管理機能は、ハザード検出、アドレス復号、及び読取/書込み制御を含むことができる。このようにして、特別な機能は、レジスタファイルへの専用ポートと同様に回避されうる。
復号ステージ130の後、疑似命令(又は疑似命令が現在入力されていない場合は他の命令)は、レジスタファイルへのアクセスステージ135へ進むことができる。プロセッサ制御モジュール110は、いくつかの理由によってレジスタファイルへアクセスすることができる。例えば、もし「追加」命令がステージ130で復号されれば、追加するソースオペランドを読み取るために、レジスタファイルがアクセスされうる。複数の汎用レジスタは、レジスタファイルへのアクセスステージ135内に含まれる。これら汎用レジスタの出力は、後のクロックサイクルで用いることができる。
ステージ135でレジスタファイルがアクセスされた後、命令は、命令実行ステージ140で受け取られることができる。命令はその後実行されることができる。複数の汎用レジスタが、命令実行ステージ140内に含まれうる。これら汎用レジスタの出力は、書込みステージ145へ送られることができる。書込みステージ145で、プロセッサ100は、結果をレジスタファイル180へ書き込むであろう。
図1に示すように、パイプラインの初期ステージにおいて、1つ又は複数の命令がメモリ又はキャッシュからフェッチされる。一般に、命令は、連続的な順序でパイプラインを通して流れることができる。しかし、割込み操作は、割込みが発生した時に実行処理にあったプログラムへプロセッサが復帰することを必要としうる。従って、処理されていない命令の最後へ復帰することが、プロセッサにとって望ましい。
図2に関して、命令がクロックサイクルに関連して処理されうる様々なパイプラインステージを示すテーブルが示される。例示目的のために、単一のクロックサイクル中に単一のステージが完了すると仮定する。しかし、いくつかの変形例が起こりうることが留意されるべきである。
パイプライン化されたアーキテクチャにおいて、命令の実行はオーバラップすることができる。そのため、各命令を実行するために5つのクロックサイクルがかかっても、5つの命令が様々な実行ステージに同時にあることができる。従って、第1の命令が、レジスタファイルへ書き込まれるステージへパイプラインを下った後、1つの命令は、同時に全てのクロックサイクルを完了する。
図2において例示目的のために、8番目と9番目のクロックサイクル間で、周辺デバイスによって割込み処理が要求されると仮定する。命令は、命令を意味する「I」と、それに続く命令番号とで表される。例示目的のために、割込み処理が要求された時、命令8はフェッチステージにあると更に仮定する。もちろん、割込み処理は、任意の命令番号の時点で要求することができるということが理解されるべきである。
この例示において、割込み操作は、プロセッサが命令100へ進むことを要求した。この例では、命令100は、割込み処理に関連する命令が見つかった場所にある。もちろん、割込み処理は、プログラムによって指定された任意の命令において発生することができる。
割込み処理を操作するために命令100がフェッチされた後、全ての未完処理命令が放棄されるであろう。この例示において、連続的な順序(又は通常動作中プログラムによって決定されたような順序)での処理が割り込まれたために、命令5乃至命令8が放棄されうる。
処理が未完了である命令の中で先頭の命令は、命令5である。割込みの時点で、命令5は実行ステージにある。最も古い未完処理命令であるこの命令は、まだパイプラインを出ていない。従って、プロセッサがプログラム実行を再開すべきプログラム値は命令5であることが理解されるべきである。本開示によると、疑似命令は、復帰アドレスを先頭の命令として書き込むように構成される。これは、処理の完了を経験していない最も古い命令であるが、割込み要求の時点においてパイプライン内で最も進んだ命令である。この疑似命令は、他の全ての命令と同様に、パイプラインを下へ進む。
図2のサイクル12で、疑似命令は、先頭の命令のアドレスをレジスタファイルへ書き込む。割込み処理が後に完了すると、プロセッサは、レジスタファイル内に保存された値を用いて、命令5におけるプログラムの実行へ復帰するであろう。
図3に関して、汎用レジスタファイルにおいて割込み復帰アドレスを効率的に保存する方法300が示される。ステップ310で、割込み要求が受け取られる。割込み要求は、周辺デバイスから、又は要求の時点で実行されているプログラムからであるか、あるいは割込み要求が行われるその他任意の方法でなされる。
ステップ320で、疑似命令が生成される。疑似命令は、プロセッサの制御モジュール内の制御論理によって生成することができる。疑似命令は、その他任意の手段によって生成することもできる。疑似命令は、汎用レジスタファイルにおいて割込み復帰アドレスを効率的に保存するように構成される。割込み復帰アドレスは、制御モジュール内に入力されているために、知られている。疑似命令は、その他の命令と同様にパイプラインを下へ進む。
ステップ330で、次の未処理命令の値が汎用レジスタ(GPR)ファイルへ書き込まれる。レジスタファイル及び関連するリソースは、通常の方法で更新される。この処理には、汎用レジスタのみが必要である。レジスタファイルへの専用ポートは必要でなく、そのため、プロセッサにおけるエリアをセーブし、専用ポートや特別なレジスタに関連する複雑さを回避する。
ステップ340で、プロセッサは、汎用レジスタファイルへ書き込まれたプログラムカウンタ値で処理を再開する。プロセッサはその後、実行中のプログラムによって示されたような順序で命令を実行することができる。
本明細書に開示された実施形態に関連して示された、実例となる様々な論理ブロック、モジュール、及び回路は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)やその他のプログラマブル論理デバイス、ディスクリートゲートやトランジスタロジック、ディスクリートハードウェア部品、又は本明細書に示す機能を実行するように設計されたこれら任意の組み合わせを用いて実現又は実行されうる。汎用プロセッサとしてマイクロプロセッサを用いることが可能であるが、代わりに、従来技術によるプロセッサ、コントローラ、マイクロコントローラ、又は状態機器を用いることも可能である。プロセッサは、例えばDSPとマイクロプロセッサとの組み合わせ、複数のマイクロプロセッサ、DSPコアに接続された1つ又は複数のマイクロプロセッサ、又はこのような任意の構成である計算デバイスの組み合わせとして実現することも可能である。
本明細書に開示した実施形態に関連して説明した方法及びアルゴリズムは、ハードウェアによって直接的に、プロセッサによって実行されるソフトウェアモジュールによって、又はこれらの組み合わせによって具現化されうる。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD−ROM、あるいは当該技術分野で知られているその他任意の形式の記憶媒体に収納されうる。記憶媒体は、プロセッサがそこから情報を読み取り、またそこに情報を書き込むことができるようにプロセッサに結合される。プロセッサと記憶媒体とは、ASIC内に存在することもできる。ASICは、端末又はその他何処かに存在することもできる。あるいはプロセッサと記憶媒体とは、端末内のディスクリート部品として、又はその他何処かに存在することができる。
開示された実施形態における上記記載は、当業者をして、本発明の製造又は利用を可能とするために提供される。これらの実施形態への様々な変形例もまた、当業者に対しては明らかであって、本明細書で定義された一般原理は、本発明の精神又は範囲を逸脱することなくその他の実施形態にも適用されうる。従って、本発明は、本明細書に示す実施形態に限定することは意図されておらず、本明細書に開示した原理及び新規特徴と整合が取れた最も広い範囲と一致するように意図されている。

Claims (22)

  1. 汎用レジスタファイルにおいて割込み復帰アドレスを効率的に保存するデータ処理システムであって、
    割込み要求に応答して疑似命令を生成するように構成された制御論理を備え、
    前記疑似命令は、パイプライン内の先頭の命令の割込み復帰アドレスを前記汎用レジスタファイルへ書き込ませるように構成され、
    前記疑似命令は更に、前記パイプライン内に挿入され、他の命令と実質的に同様に、パイプライン化されたプロセッサの前記パイプラインを下へ進むように構成されたデータ処理システム。
  2. 請求項1に記載のデータ処理システムにおいて、
    書込みステージと、前記疑似命令を復号するように構成された復号ステージとを更に備え、
    前記書込みステージは、前記先頭の命令の割込み復帰アドレスを含む、前記疑似命令の結果を、前記汎用レジスタファイルへ書き込むように構成されたデータ処理システム。
  3. 請求項2に記載のデータ処理システムにおいて、
    前記疑似命令を受け取り、前記疑似命令を前記復号ステージへ入力するように構成されたマルチプレクサを更に備えるデータ処理システム。
  4. 請求項3に記載のデータ処理システムにおいて、
    命令をフェッチするように構成されたフェッチステージを更に備え、
    前記マルチプレクサは更に、前記フェッチステージからの命令と前記疑似命令とを受け取り、前記復号ステージへ入力するために、フェッチされた命令と前記疑似命令とのうちの1つを選択するように構成されたデータ処理システム。
  5. 複数の汎用レジスタを更に備える請求項1に記載のデータ処理システム。
  6. 請求項1に記載のデータ処理システムにおいて、
    疑似命令生成器が、プロセッサ制御モジュール内に存在するデータ処理システム。
  7. 請求項4に記載のデータ処理システムにおいて、
    前記プロセッサによって処理される命令データを格納するように構成され、前記フェッチステージに接続されたメモリモジュールを更に備えるデータ処理システム。
  8. 汎用レジスタファイルにおいて割込み復帰アドレスを効率的に保存する装置であって、
    割込み要求に応答して疑似命令を生成するように構成された疑似命令生成器を有するパイプライン化されたプロセッサを備え、
    前記疑似命令は、前記パイプライン内の先頭の命令の割込み復帰アドレスを前記汎用レジスタファイルへ書き込ませるように構成され、前記プロセッサは複数の汎用レジスタを含み、
    前記疑似命令は更に、前記パイプライン内へ挿入され、他の命令と実質的に同様に、パイプラインされたプロセッサの前記パイプラインを下へ進むように構成された装置。
  9. 請求項8に記載の装置において、
    前記疑似命令を復号するように構成された復号ステージと、書込みステージとを更に備え、
    前記書込みステージは、最後の未完処理命令の前記割込み復帰アドレスを含む、前記疑似命令の結果を、前記汎用レジスタファイルへ書き込むように構成され、
    前記疑似命令は、前記復号ステージへ入力される装置。
  10. 請求項9に記載の装置において、
    前記疑似命令を受け取り、前記疑似命令を前記復号ステージへ入力するように構成されたマルチプレクサを更に備える装置。
  11. 請求項10に記載の装置において、
    命令をフェッチするように構成されたフェッチステージを更に備え、
    前記マルチプレクサは更に、前記フェッチステージからの命令と前記疑似命令とを受け取り、前記復号ステージへ入力するために、フェッチされた命令と前記疑似命令とのうちの1つを選択するように構成された装置。
  12. 請求項10に記載の装置において、
    前記プロセッサは更に、前記割込み要求に応答して割込み処理を実行し、前記最後の未完処理命令の割込み復帰アドレスを汎用レジスタファイルへ書き込むように構成された装置。
  13. 請求項12に記載の装置において、
    前記プロセッサは更に、前記汎用レジスタファイルへ書き込まれた割込み復帰アドレスにおいて処理を再開するように構成された装置。
  14. パイプライン化されたプロセッサ内の汎用レジスタファイルにおいて、割込み復帰アドレスを効率的に保存する方法であって、
    パイプライン内の先頭の命令の割込み復帰アドレスを前記汎用レジスタファイルへ書き込ませるように構成された疑似命令を、割込み要求に応答して生成するステップを備え、
    前記疑似命令は更に、前記パイプライン内に挿入され、他の命令と実質的に同様に、前記パイプラインされたプロセッサのパイプラインを下へ進むように構成された方法。
  15. 請求項14に記載の方法において、
    前記割込み要求に応答して、割込み処理を実行することと、
    最後の未完処理命令の前記割込み復帰アドレスを、前記汎用レジスタファイルへ書き込むことと
    を更に備える方法。
  16. 請求項15に記載の方法において、
    前記汎用レジスタファイルへ書き込まれた前記割込み復帰アドレスにおいて処理を再開することを更に備える方法。
  17. 請求項14に記載の方法において、
    前記疑似命令は、前記プロセッサ内の制御論理によって生成される方法。
  18. 請求項14に記載の方法において、
    前記パイプライン化されたプロセッサは、
    書込みステージと、前記疑似命令を復号するように構成された復号ステージとを備え、
    前記書込みステージは、前記先頭の命令の割込み復帰アドレスを含む、前記疑似命令の結果を、前記汎用レジスタファイルへ書き込むように構成され、
    前記疑似命令は、前記復号ステージへ入力される
    方法。
  19. 請求項18に記載の方法において、
    前記プロセッサは更に、前記疑似命令を受け取り、前記疑似命令を前記復号ステージへ入力するように構成されたマルチプレクサを備える方法。
  20. 請求項19に記載の方法において、
    前記プロセッサは更に、命令をフェッチするように構成されたフェッチステージを備え、
    前記マルチプレクサは更に、前記フェッチステージからの命令と、前記疑似命令との両方を受け取り、前記復号ステージへ入力するために、フェッチされた命令と前記疑似命令とのうちの1つを選択するように構成された方法。
  21. 請求項14に記載の方法において、
    前記プロセッサは更に、複数の汎用レジスタを備える方法。
  22. 汎用レジスタファイルにおいて、割込み復帰アドレスを効率的に保存する装置であって、
    割込み処理を実行するように構成されたマルチステージのパイプライン化されたプロセッサであって、前記ステージは、命令を受け取るように構成された少なくとも1つのステージと、前記汎用レジスタファイルへ結果を書き込むように構成された少なくとも1つのステージとを備え、前記プロセッサは更に、プログラムからの命令データを処理するように構成されたプロセッサと、
    割込み要求に応答して疑似命令を生成するように構成された制御論理であって、前記疑似命令は、パイプライン内の先頭の命令の割込み復帰アドレスを前記汎用レジスタファイルへ書き込ませるように構成され、前記疑似命令は更に、前記パイプライン内へ挿入され、他の命令と実質的に同様に、前記パイプラインを下へ進むように構成された制御論理と、
    前記制御論理からの疑似命令と、前記プログラムからの命令データとの両方を受け取るように構成されたマルチプレクサであって、前記疑似命令と前記命令データとのうちの少なくとも1つを選択し、選択された前記疑似命令又は前記命令データを、命令を受け取るように構成された前記少なくとも1つのパイプラインステージへ入力するように更に構成されたマルチプレクサと
    を備える装置であって、
    割込み処理の発生後、前記プロセッサは更に、前記汎用レジスタファイルへ書き込まれた前記先頭の命令の割込み復帰アドレスにおいて、命令データの処理を再開するように構成された装置。
JP2009521965A 2006-07-25 2007-07-24 効率的な割込み復帰アドレス保存メカニズム Expired - Fee Related JP5528804B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/459,695 US7681022B2 (en) 2006-07-25 2006-07-25 Efficient interrupt return address save mechanism
US11/459,695 2006-07-25
PCT/US2007/074263 WO2008014287A1 (en) 2006-07-25 2007-07-24 Efficient interrupt return address save mechanism

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2013272652A Division JP5837033B2 (ja) 2006-07-25 2013-12-27 効率的な割込み復帰アドレス保存メカニズム

Publications (2)

Publication Number Publication Date
JP2009545079A true JP2009545079A (ja) 2009-12-17
JP5528804B2 JP5528804B2 (ja) 2014-06-25

Family

ID=38667151

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2009521965A Expired - Fee Related JP5528804B2 (ja) 2006-07-25 2007-07-24 効率的な割込み復帰アドレス保存メカニズム
JP2013272652A Expired - Fee Related JP5837033B2 (ja) 2006-07-25 2013-12-27 効率的な割込み復帰アドレス保存メカニズム

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2013272652A Expired - Fee Related JP5837033B2 (ja) 2006-07-25 2013-12-27 効率的な割込み復帰アドレス保存メカニズム

Country Status (10)

Country Link
US (1) US7681022B2 (ja)
EP (1) EP2044508A1 (ja)
JP (2) JP5528804B2 (ja)
KR (1) KR101077425B1 (ja)
CN (1) CN101495960B (ja)
BR (1) BRPI0714128A2 (ja)
CA (1) CA2657168C (ja)
MX (1) MX2009000728A (ja)
RU (1) RU2450329C2 (ja)
WO (1) WO2008014287A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7681022B2 (en) * 2006-07-25 2010-03-16 Qualcomm Incorporated Efficient interrupt return address save mechanism
CN102364432B (zh) * 2011-10-25 2013-12-18 中国科学院苏州纳米技术与纳米仿生研究所 使用双程序计数器计算待处理指令地址的系统
US10360593B2 (en) * 2012-04-24 2019-07-23 Qualcomm Incorporated Retail proximity marketing
KR20170065845A (ko) 2015-12-04 2017-06-14 삼성전자주식회사 프로세서 및 제어 방법
US11003457B2 (en) * 2019-01-23 2021-05-11 Mediatek Inc. Power-saving mechanism for memory sub-system in pipelined processor
CN112883370B (zh) * 2019-11-29 2022-12-20 北京三快在线科技有限公司 应用程序状态检测方法和装置、存储介质和电子设备

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS564844A (en) * 1979-06-26 1981-01-19 Nec Corp Information processor
JPS6472238A (en) * 1987-09-14 1989-03-17 Fujitsu Ltd Branch instruction processor
JPH076037A (ja) * 1993-06-16 1995-01-10 Matsushita Electric Ind Co Ltd 命令解読装置
JPH09198257A (ja) * 1996-01-19 1997-07-31 Sanyo Electric Co Ltd プログラム実行方法およびこの方法を用いたプログラム実行装置
JP2000207202A (ja) * 1998-10-29 2000-07-28 Pacific Design Kk 制御装置およびデ―タ処理装置
JP2001516918A (ja) * 1997-09-12 2001-10-02 インフィニオン テクノロジーズ ノース アメリカ コーポレイション データプロセッサ
JP2004054585A (ja) * 2002-07-19 2004-02-19 Renesas Technology Corp データ処理装置
JP2004523040A (ja) * 2001-02-06 2004-07-29 アデランテ テクノロジーズ ベスローテン フェンノートシャップ プロセッサのパイプライン内における命令のフローを操作するための方法、システム及びコンピュータプログラム製品

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5440703A (en) * 1993-09-20 1995-08-08 International Business Machines Corporation System and method for saving state information in a multi-execution unit processor when interruptable instructions are identified
US5701493A (en) * 1995-08-03 1997-12-23 Advanced Risc Machines Limited Exception handling method and apparatus in data processing systems
WO1999004334A1 (en) * 1997-07-16 1999-01-28 California Institute Of Technology Improved devices and methods for asynchronous processing
TW436693B (en) * 1998-08-18 2001-05-28 Ind Tech Res Inst Interrupt control device and method for pipeline processor
US6301650B1 (en) * 1998-10-29 2001-10-09 Pacific Design, Inc. Control unit and data processing system
US6789184B1 (en) * 2000-09-29 2004-09-07 Intel Corporation Instruction address generation and tracking in a pipelined processor
GB2369464B (en) * 2000-11-27 2005-01-05 Advanced Risc Mach Ltd A data processing apparatus and method for saving return state
US7765388B2 (en) * 2003-09-17 2010-07-27 Broadcom Corporation Interrupt verification support mechanism
US20050010577A1 (en) 2003-07-11 2005-01-13 Microsoft Corporation Method and apparatus for generating Web content
CN101299185B (zh) * 2003-08-18 2010-10-06 上海海尔集成电路有限公司 一种基于cisc结构的微处理器结构
US20050273776A1 (en) * 2004-06-08 2005-12-08 Intel Corporation Assembler supporting pseudo registers to resolve return address ambiguity
US7681022B2 (en) * 2006-07-25 2010-03-16 Qualcomm Incorporated Efficient interrupt return address save mechanism

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS564844A (en) * 1979-06-26 1981-01-19 Nec Corp Information processor
JPS6472238A (en) * 1987-09-14 1989-03-17 Fujitsu Ltd Branch instruction processor
JPH076037A (ja) * 1993-06-16 1995-01-10 Matsushita Electric Ind Co Ltd 命令解読装置
JPH09198257A (ja) * 1996-01-19 1997-07-31 Sanyo Electric Co Ltd プログラム実行方法およびこの方法を用いたプログラム実行装置
JP2001516918A (ja) * 1997-09-12 2001-10-02 インフィニオン テクノロジーズ ノース アメリカ コーポレイション データプロセッサ
JP2000207202A (ja) * 1998-10-29 2000-07-28 Pacific Design Kk 制御装置およびデ―タ処理装置
JP2004523040A (ja) * 2001-02-06 2004-07-29 アデランテ テクノロジーズ ベスローテン フェンノートシャップ プロセッサのパイプライン内における命令のフローを操作するための方法、システム及びコンピュータプログラム製品
JP2004054585A (ja) * 2002-07-19 2004-02-19 Renesas Technology Corp データ処理装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JPN6013042382; Ben J. CATANZARO: "The SPARC Technical Papers" , 1991, pages:143-144,181-182, Springer-Verlag *

Also Published As

Publication number Publication date
CA2657168A1 (en) 2008-01-31
BRPI0714128A2 (pt) 2012-12-25
JP2014099192A (ja) 2014-05-29
RU2450329C2 (ru) 2012-05-10
CN101495960A (zh) 2009-07-29
MX2009000728A (es) 2009-02-04
CN101495960B (zh) 2012-08-29
JP5837033B2 (ja) 2015-12-24
KR101077425B1 (ko) 2011-10-26
CA2657168C (en) 2010-12-07
KR20090042283A (ko) 2009-04-29
US20080028194A1 (en) 2008-01-31
RU2009106463A (ru) 2010-08-27
JP5528804B2 (ja) 2014-06-25
EP2044508A1 (en) 2009-04-08
US7681022B2 (en) 2010-03-16
WO2008014287A1 (en) 2008-01-31

Similar Documents

Publication Publication Date Title
JP5837033B2 (ja) 効率的な割込み復帰アドレス保存メカニズム
JP5431308B2 (ja) システムおよびパイプラインプロセッサにおける条件命令実行の加速のためのローカル条件コードレジスタの使用方法
JP3688270B2 (ja) プロセッサの停止
US7444501B2 (en) Methods and apparatus for recognizing a subroutine call
US20070022277A1 (en) Method and system for an enhanced microprocessor
EP2269134A1 (en) System and method of selectively committing a result of an executed instruction
JP2010532063A (ja) 条件命令を無条件命令および選択命令へと拡張する方法およびシステム
JP2003523573A (ja) プロセッサにおける書き込みトラヒックを減少するシステム及び方法
US11789742B2 (en) Pipeline protection for CPUs with save and restore of intermediate results
US8447961B2 (en) Mechanism for efficient implementation of software pipelined loops in VLIW processors
JP2007528549A (ja) 電子回路
US7539847B2 (en) Stalling processor pipeline for synchronization with coprocessor reconfigured to accommodate higher frequency operation resulting in additional number of pipeline stages
US6587940B1 (en) Local stall/hazard detect in superscalar, pipelined microprocessor to avoid re-read of register file
US20060200654A1 (en) Stop waiting for source operand when conditional instruction will not execute
US9213547B2 (en) Processor and method for processing instructions using at least one processing pipeline
US6591360B1 (en) Local stall/hazard detect in superscalar, pipelined microprocessor
CN116841614B (zh) 乱序访存机制下的顺序向量调度方法
JP3199035B2 (ja) プロセッサ及びその実行制御方法
JP2009054032A (ja) 並列プロセッサ
JP3743155B2 (ja) パイプライン制御型計算機
JP2001243066A (ja) パイプライン処理方法並びにその方法を利用するパイプライン処理装置
WO2000065452A1 (en) Pipelined access to single ported cache
WO2007004323A1 (ja) 情報処理装置
JP2002351658A (ja) 演算処理装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120327

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120626

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120703

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120719

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130129

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130426

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130827

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131227

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20140109

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140416

R150 Certificate of patent or registration of utility model

Ref document number: 5528804

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

LAPS Cancellation because of no payment of annual fees