(57)【特許請求の範囲】
【請求項１】
少なくとも第１および第２動作モードでプロセッサを動作する段階と、
前記第１動作モードを終了したときに前記プロセッサに関連するハードウェア・ループ動作を不能にする段階と、
前記第１動作モードで前記ハードウェア・ループ動作を初期化する段階と、
前記第１動作モードからの出口を検出する段階と、
第１レジスタ内に偶数に配列されたトップ命令アドレスをロードする段階と、
第２レジスタ内に偶数に配列されたボトム命令アドレスをロードする段階と、
を含む方法であって、
前記ハードウェア・ループ動作を不能にする段階は、前記第２レジスタ内の前記ボトム命令アドレスの最下位ビットを１にセットする段階を含むことを特徴とする方法。
【請求項２】
少なくとも第１および第２動作モードでプロセッサを動作する段階と、
前記第１動作モードを終了したときに前記プロセッサに関連するハードウェア・ループ動作を不能にする段階と、
前記第１動作モードに入るときにハードウェア・ループ動作を可能にする段階と、
第１レジスタ内に偶数に配列されたトップ命令アドレスをロードする段階と、
第２レジスタ内に偶数に配列されたボトム命令アドレスをロードする段階と、
前記第１動作モードへの入口を検出する段階と、
前記第２レジスタ内の前記ボトム命令アドレスの最下位ビットを０にセットする段階と、
を含むことを特徴とする方法。
【請求項３】
プロセッサにセキュリティを提供するために、前記プロセッサに、
少なくとも第１および第２動作モードで前記プロセッサを動作させ、
第１動作モードが終了するときにハードウェア・ループ動作を不能にさせ、
前記第１動作モードで前記ハードウェア・ループ動作を初期化させ、
前記第１動作モードからの出口を検出させ、
第１レジスタ内に偶数に配列されたトップ命令アドレスをロードさせ、
第２レジスタ内に偶数に配列されたボトム命令アドレスをロードさせ、
るためのプログラムであって、
前記プロセッサに前記ハードウェア・ループ動作を不能にさせる命令は、前記プロセッサに、前記第２レジスタ内の前記ボトム命令アドレスの最下位ビットを１にセットさせる命令を含むことを特徴とするプログラム。
【請求項４】
プロセッサにセキュリティを提供するために、前記プロセッサに、
少なくとも第１および第２動作モードで前記プロセッサを動作させ、
第１動作モードが終了するときにハードウェア・ループ動作を不能にさせ、
前記第１動作モードに入るときにハードウェア・ループ動作を可能にさせ、
第１レジスタ内に偶数に配列されたトップ命令アドレスをロードさせ、
第２レジスタ内に偶数に配列されたボトム命令アドレスをロードさせ、
前記第１動作モードへの入口を検出させ、
前記第２レジスタ内の前記ボトム命令アドレスの最下位ビットを０にセットさせ、
るためのプログラム。
【請求項５】
ハードウェア・ループ内のトップ命令のアドレスを格納するための第１レジスタと、
前記ハードウェア・ループ内のボトム命令のアドレスを格納するための第２レジスタと、
前記第１および第２レジスタに結合されたハードウェア・ループ制御装置であって、前記制御装置は前記ハードウェア・ループ動作を実行するために作用する、制御装置と、
第１動作モードを終了する前記プロセッサに応答して前記ハードウェア・ループ制御装置を不能にするために作用するモード検出器と、
を含むプロセッサであって、
ここで、前記ボトム命令のアドレスは偶数に配列され、
前記モード検出器は、前記第１モードを終了する前記プロセッサに応答して、前記第２レジスタ内の前記アドレスの最下位ビットを１にセットするために作用することを特徴とするプロセッサ。
【請求項６】
ハードウェア・ループ内のトップ命令のアドレスを格納するための第１レジスタと、
前記ハードウェア・ループ内のボトム命令のアドレスを格納するための第２レジスタと、
前記第１および第２レジスタに結合されたハードウェア・ループ制御装置であって、前記制御装置は前記ハードウェア・ループ動作を実行するために作用する、制御装置と、
前記第１動作モードを終了する前記プロセッサに応答して前記ハードウェア・ループ制御装置を不能にするために作用するモード検出器と、
を含むプロセッサであって、
ここで、前記ボトム命令のアドレスは偶数に配列され、
前記モード検出器は、前記第１モードに入る前記プロセッサに応答して、前記第２レジスタ内の前記アドレスの最下位ビットを０にセットするために作用することを特徴とするプロセッサ。
【請求項７】
スタティック・ランダム・アクセス・メモリと、
前記スタティック・ランダム・アクセス・メモリに結合されたプロセッサと、を含むシステムであって、前記プロセッサは、
ハードウェア・ループ内のトップ命令のアドレスを格納するための第１レジスタ、
前記ハードウェア・ループ内のボトム命令のアドレスを格納する第２レジスタ、
前記第１および第２レジスタに結合されたハードウェア・ループ制御装置であって、前記制御装置が前記ハードウェア・ループ動作を実行するために作用する、制御装置、および、
第１動作モードを終了する前記プロセッサに応答して前記ハードウェア・ループ制御装置を不能にするために作用するモード検出器、
を含み、
ここで、前記ボトム命令のアドレスは偶数に配列され、
前記モード検出器は、前記第１モードを終了する前記プロセッサに応答して、前記第２レジスタ内で前記アドレスの最下位ビットを１にセットするために作用することを特徴とするプロセッサ。
【請求項８】
スタティック・ランダム・アクセス・メモリと、
前記スタティック・ランダム・アクセス・メモリに結合されたプロセッサと、を含むシステムであって、前記プロセッサは、
ハードウェア・ループ内のトップ命令のアドレスを格納するための第１レジスタ、
前記ハードウェア・ループ内のボトム命令のアドレスを格納する第２レジスタ、
前記第１および第２レジスタに結合されたハードウェア・ループ制御装置であって、前記制御装置が前記ハードウェア・ループ動作を実行するために作用する、制御装置、および、
第１動作モードを終了する前記プロセッサに応答して前記ハードウェア・ループ制御装置を不能にするために作用するモード検出器、
を含み、
ここで、前記ボトム命令のアドレスは偶数に配列され、
前記モード検出器は、前記第１モードに入る前記プロセッサに応答して、前記第２レジスタ内で前記アドレスの最下位ビットを０にセットするために作用することを特徴とするプロセッサ。
【発明の詳細な説明】
【背景技術】
【０００１】
デジタル信号処理（ＤＳＰ）システムのようなプログラム可能なプロセッサを設計する際に、処理速度と電力消費はトレード・オフの関係にある。従来のプロセッサは、ソフトウェア命令の実行速度を増加させるために設計された多様なハードウェアを含む。しかしながら、ハードウェアの追加によって、典型的には、プロセッサの電力消費が増加する。
【０００２】
「ハードウェア・ループ」は、プログラム可能なプロセッサの速度を増加することができる。それは、ループ構成内でソフトウェア命令の実行を促進させるために設計された専用ハードウェアを使用して実行される。ハードウェア・ループは、ローカル・レジスタに命令をキャッシュすることによりソフトウェア・ループを実行するために使用されるクロック・サイクルの数を減少し、それによって、メモリ装置または命令キャッシュから同じ命令を複数回フェッチする必要性を低減することができる。
【０００３】
ハードウェア・ループは、いくつかの課題をもたらす。これらの課題には、セットアップ・ペナルティまたは分岐ペナルティのようなペナルティの回避が含まれる。セットアップ・ペナルティには、ハードウェア・ループのセットアップに関連するパフォーマンスのロス（通常は処理時間の増加）が含まれる。同様に、分岐ペナルティには、分岐に関連するパフォーマンスのロス（再び、通常は処理時間の増加）が含まれる。
【発明の開示】
【０００４】
図１は、電力消費を著しく増加させることなく、ハードウェア・ループの操作時において、ハードウェア・ループおよびセキュリティをサポートするためにアレンジされたプログラム可能なプロセッサ１００を図示するブロック図である。
【０００５】
プロセッサ１００は、スーパバイザ・モードおよびユーザ・モードで操作可能である。プロセッサ１００は、オペレーティング・システムのようなスーパバイザ・プログラムによって使用されるときにはスーパバイザ・モードで動作する。プロセッサ１００は、アプリケーションのようなユーザ・プログラムによって使用されるときにはユーザ・モードで動作する。
【０００６】
スーパバイザ・モードにおいて、プロセッサ１００は一定の特権を有する。これらの特権は、一定の命令の使用、一定の資源、例えばレジスタへのアクセス、およびメモリへの読取り／書込みアクセスを含む。これらの特権によって、スーパバイザ・プログラムは、システムの全般的な状態をコントロールすることができ、例えば、システムを「スリープ」にすることによって、構成レジスタへの書き込みや、重大なシステム動作のために使用される記憶場所への読取り／書込み動作を実行する。
【０００７】
ユーザ・モードにおいては、プロセッサ１００はかかる特権を持たない。この制限は、ユーザ・プログラムが偶然または故意にシステム・レベル動作の影響を受けることを防止するために、セキュリティ対策として提供される。例えば、ウィルスのような悪意のあるユーザ・プログラムは、オペレーティング・システム・ファイルを損傷または消去し、あるいは適切なアクセス権を有するシステムを不能にすることがある。
【０００８】
プロセッサ１００は、ユーザ・モードでハードウェア・ループを使用する。ハードウェア・ループ動作のインプリメンテーションは、ユーザ・プログラムに、スーパバイザ・モードへのバックドアを提供することがあり、そのためにセキュリティ・ハザードを生じることがある。ある実施例では、ハードウェア・ループ動作はセキュリティ機能を含み、それが、このセキュリティ・ハザードを除去するハードウェア内で実行される。
【０００９】
ハードウェア・ループをサポートするために、プロセッサ１００は、ループのために入口および出口条件を設定することによりハードウェアを初期化するループ・セットアップ命令をサポートする。入口および出口条件は、ループ条件、すなわち、トップ、ボトム、およびカウント、によって定義される。トップ条件は、ループの最初の命令（あるいはトップ）を定義する。ボトム条件は、ループの最後の命令（あるいはボトム）を定義する。カウント条件は、ループの繰り返しの数を定義する。
【００１０】
プロセッサ１００によって実行されているプログラム・コード内の命令は、その命令のメモリ中の場所を指す関連する命令アドレスまたはプログラム・カウント（ＰＣ）を有する。ある実施例では、例えば、命令は偶数アドレスで配列され、命令アドレスは２バイト（１６ビット）または４バイト（３２ビット）である。
【００１１】
プログラム・カウンタを異なる場所へ分岐させる、成立した分岐または割込みのようなイベントが発生しない限り、プログラム・コードは連続して実行される。したがって、プログラム・フローの変化がないとき、続く命令のＰＣは、命令アドレス・スペース内の後続命令のアドレスである。例えば、現在の命令のＰＣが２００２（１６進数において）で、命令が１６ビット（２バイト）幅ならば、後続命令のＰＣは２００４となる。
【００１２】
ハードウェア・ループの入口が最初の「トップ・マッチ」で生じる。トップ・マッチは、ＰＣがループのトップ命令を指すときに生じる。ハードウェア・ループの出口は、最後の「ボトム・マッチ」で生じる。ボトム・マッチは、ＰＣがループのボトム命令を指すときに生じる。
【００１３】
最初のトップ・マッチでカウントを初期化すること、および各ボトム・マッチでカウントをディクリメントすることによって、ハードウェアは、それがいつ最後のボトム・マッチに遭遇したかを追跡する。このようにして、ループ条件であるトップ、ボトムおよびカウントは、ハードウェア・ループの入口および出口条件を定義する。
【００１４】
プロセッサ１００は、実行パイプライン１０２および制御ユニット１０４を含む。制御ユニット１０４は、クロック・サイクル中にパイプライン１０２を通って命令および／またはデータのフローを制御する。例えば、命令の処理中に、制御ユニット１０４は、パイプラインの多様なコンポーネントに命令し、命令をデコードし、例えばメモリに結果をライト・バックすることを含む対応する動作を正確に実行する。
【００１５】
命令は、パイプライン１０２の第１ステージにロードされ、後続ステージを通って処理される。ステージは他のステージと同時に処理される。データは、システムのサイクル中にパイプライン１０２内のステージ間を通過する。命令の結果は、間断なくパイプライン１０２の終端に出現する。
【００１６】
制御ユニット１０４はハードウェア・ループ・ユニット１０８を含み、後述のように、プロセッサ１００の電力消費を著しく増加させることなく、高速のハードウェア・ループを促進する。
【００１７】
図２は、パイプライン２００の一例を図示するブロック図である。パイプライン２００は、単一のクロック・サイクル中にマルチプル命令の実行を促進するマルチプル・ステージを有する。パイプライン２００において、命令は最初のクロック・サイクル中に命令フェッチ（ＩＦ）ステージ２０２に入る。そして、その命令は、後続のクロック・サイクル中にパイプラインを下流へ送られる。前の命令が出ていった後、他の命令がＩＦステージ２０２に入る。したがって、典型的には、他の命令が後続のクロック・サイクル中にＩＦステージ２０２に入り、そして、後続のクロック・サイクル中にパイプラインを下流へ送られる。同様に、追加の命令が、後続クロック・サイクル中にそれぞれＩＦステージ２０２に入る。パイプラインのステージ数は、パイプラインが同時に処理できる命令の数を定義する。
【００１８】
パイプラインの異なるステージは、以下のように動作する。命令はフェッチ・ユニット２０４によってＩＦステージ２０２でフェッチされ、デコード（ＤＥＣ）ステージ２０８で命令レジスタ２０６からでデコードされる。アドレス計算（ＡＣ）ステージ２１０中に、データ・アドレス生成器２１２が、動作を実行するために使用されるあらゆるメモリ・アドレスを計算する。
【００１９】
実行ステージ（ＥＸ１からＥＸｎ）２１４，２２０中に、実行ユニット２２２，２２４は、例えば２つの数を加算または乗算するような指定された動作を実行する。実行ユニット１５は、例えば、１以上の算術論理演算ユニット（ＡＬＵ）、浮動小数点ユニット（ＦＰＵ）およびバレル・シフタを含む、動作を実行するための特殊なハードウェアを含む。
【００２０】
多種多様のデータ、例えばデータ・アドレス生成器によって生成されたアドレス、メモリから取り出されたデータ、またはデータ・レジスタから取り出されたデータが実行ユニットに適用される。ライト・バック・ステージ（ＷＢ）２３０中に、その結果が、パイプラインの外部にある記憶場所またはデータ・レジスタ、または構成レジスタ２３２のようなパイプライン中のデータ・レジスタに書き込まれる。パイプライン２００のステージは、データの格納のためにフリップ・フロップのような１つ以上の記憶回路を含む。
【００２１】
図３は、図１のループ・ユニット１０８のブロック図である。ハードウェア・ループ・ユニット１０８は、ＬＯＯＰ＿ＴＯＰレジスタ３０２、ＬＯＯＰ＿ＢＯＴレジスタ３０４、ＬＯＯＰ＿ＣＮＴレジスタ３０６、およびループ制御ユニット３１２を含む。ハードウェア・ループ・ユニットは、ＬＯＯＰ＿ＴＯＰレジスタ３０２内のループのトップ命令のアドレス、ＬＯＯＰ＿ＢＯＴレジスタ３０４内のループのボトム命令のアドレス、およびＬＯＯＰ＿ＣＮＴレジスタ３０６内でループが完了した回数を示すカウントをロードすることによりループを初期化する。ループ制御ユニットは、ＬＯＯＰ＿ＴＯＰレジスタ３０２およびＬＯＯＰ＿ＢＯＴレジスタ３０４内の値を現在のＰＣと比較する。トップ・マッチを検出したときに、ループ制御ユニットがハードウェア・ループ動作を始める。ボトム・マッチが生じるとき、ループ制御ユニット３１２がＬＯＯＰ＿ＣＮＴレジスタ３０６内の値をディクリメントし、トップ命令のアドレスへＰＣを分岐して戻す。ハードウェア・ループは、ループの出口条件が満たされるまで、例えばボトム・マッチが０に等しいカウントになるまで、パイプライン内で動作する。
【００２２】
ユーザ・プログラムが、スーパバイザ・プログラムのアドレス・スペース、例えばイベント・ベクトル・テーブル（ＥＶＴ）１２０（図１）内の命令アドレス、内の命令アドレスを獲得する場合、セキュリティ・ハザードが現れる。ＥＶＴは、イベント・サービス・ルーチンのためのターゲット・アドレスを含む。イベントは、プログラム・フローの中断を引き起こす例外的な条件を含む。Ｉ／Ｏデバイス割込み、誤配列されたメモリ・アクセス、ハードウェア誤動作などのようなイベントは、対応するイベント・サービス・ルーチンによってプロセッサ１００内で処理される。特定のイベントが生じるとき、プロセッサ１００は、ＥＶＴ１２０内でそのイベントに対するイベント・サービス・ルーチンの適切なターゲット・アドレスを調べて、イベントを処理するためにイベント・サービス・ルーチンへＰＣを分岐する。プロセッサ１００がイベントを処理するとき、それがスーパバイザ・モードを入力して対応する特権を獲得する。イベントが処理された後、プロセッサ１００はユーザ・モードに戻り、中断されたプログラム・フローを継続する。
【００２３】
例えば、ＥＶＴ１２０内のターゲット・アドレスを獲得したユーザ・プログラムは、一般のＩ／Ｏデバイス割込みを処理するためのイベント・サービス・ルーチンのために、ＬＯＯＰ＿ＢＯＴレジスタ３０４にイベント・サービス・ルーチンのアドレスをロードし、ＬＯＯＰ＿ＴＯＰレジスタ３０２にユーザ・プログラムのアドレス・スペース内の命令のアドレスをロードする。
【００２４】
スーパバイザ・コードが１６進法のアドレス１０００から２０００で位置付けされる状況を考慮すると、ユーザ・コードは１６進法のアドレス１００００から２００００で位置付けされる。この例において、Ｉ／Ｏデバイス割込みに対するイベント・サービス・ルーチンのためのターゲット・アドレスは、命令アドレス１００４であり、ユーザ・プログラムはＬＯＯＰ＿ＢＯＴレジスタに１００４をロードし、ＬＯＯＰ＿ＴＯＰレジスタに１００００をロードする。そのＩ／Ｏデバイス割込みが生じるとき、スーパバイザ・プログラムはＥＶＴ１２０をチェックし、ＰＣを命令１００４へ分岐する。これがボトム・マッチを引き起こす。ボトム・マッチに応答して、ハードウェア・ループ・ユニット１０８は、ＰＣを、ユーザ・コードのアドレス・スペースに存在する、ＬＯＯＰ＿ＴＯＰレジスタ３０２内の命令アドレス、１０２００、へ暗黙のうちに分岐させる。ＰＣがユーザ・コード内の命令に分岐するとき、ユーザ・プログラムはプロセッサの制御を獲得する。しかしながら、プロセッサ１００はスーパバイザ・モードのままである。従って、ユーザ・プログラムは、それが通常与えられないスーパバイズ特権を得る。悪意あるユーザ・プログラムは、それらの特権を、システムを破壊または不能にするために使用する可能性がある。
【００２５】
図４は、一実施例に従った動作４００のフローチャートである。以下の記述は、動作４００を実行するための一実施例である。他の実施例では、これらのブロックはスキップされたり、異なる順で実行されることがある。
【００２６】
図３で示されるように、モード検出器３２０はＬＯＯＰ＿ＢＯＴレジスタ３０４に結合される。ブロック４０２で、モード検出器３２０は、プロセッサがいつユーザ・モードを終了するかを検出する。プロセッサ１００がユーザ・モードを終了するとき、ブロック４０４で、モード検出器３２０は、ＬＯＯＰ＿ＢＯＴレジスタ内の命令アドレスの最下位ビット（ＬＳＢ）を１にセットする。
【００２７】
命令アドレスが偶数アドレス上に配列されるので、ループ制御ユニット３１０は奇数のアドレスに遭遇しない、すなわちＬＳＢは常に０である。従って、プロセッサがスーパバイザ・モードであるときは、ボトム・マッチは生じない。上述の例について考えてみる。ユーザ・プログラムは、ユーザ・モードでＬＯＯＰ＿ＢＯＴレジスタ３０４に命令アドレス１００４（２進法の「００００  ００１１  １１１０  １１００」）をロードする。プロセッサがユーザ・モードを終了するとき、モード検出器３２０がアドレスのＬＳＢを１にセットすると、ＬＯＯＰ＿ＢＯＴレジスタ内の値が１００５（「００００  ００１１  １１１０  １１０１」）になる。
【００２８】
命令アドレスがすべて偶数に配列されているので、ブロック４０６において、ＰＣがプログラム・フロー内で奇数のアドレスに遭遇する場合、ブロック４０８でプロセッサ１００が例外を受け取る。一実施例では、例外はボトム・マッチよりも高い優先順位を有する。したがって、たとえボトム・マッチが生じたとしても、プロセッサ１００は、ＬＯＯＰ＿ＴＯＰレジスタ３０２内のアドレスへ分岐するのではなく、例外を処理するためにイベント・サービス・ルーチンに分岐し、それによって、セキュリティ・ハザードを回避する。
【００２９】
ブロック４１０で、プロセッサがユーザ・モードに再び入るとき、ブロック４１２において、モード検出器３２０がＬＯＯＰ＿ＢＯＴレジスタ３０６内の値のＬＳＢを０にセットし、それによって、ハードウェア・ループ・アーキテクチャが再び処理可能になる。
【００３０】
そのようなプロセッサ１００は、ビデオ・キャムコーダ、テレカンファレンス、ＰＣビデオ・カード、およびハイビジョンテレビ（ＨＤＴＶ）において使用されることが期待される。さらに、プロセッサ１００はまた、モバイル電話、音声認識、および他のアプリケーションの中で使用される音声処理のようなデジタル信号処理を利用する他の技術に関連して使用することが期待される。
【００３１】
例えば、図５は、実施例に従ってプロセッサ１００を含むモバイル・ビデオ装置５００を図示する。モバイル・ビデオ装置５００は、アンテナ５０２またはデジタル・ビデオ記憶媒体５０４、例えばデジタル・ビデオ・ディスク（ＤＶＤ）またはメモリ・カード、から受信したエンコードされたビデオ信号から生成されたビデオ画像を表示する携帯端末である。プロセッサ１００は、キャッシュ・メモリ５０６と通信し、プロセッサ動作および他の装置、例えばＳＲＡＭ５０８、のために命令とデータを格納する。
【００３２】
プロセッサ１００は、マイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、スレーブＤＳＰを制御するマイクロプロセッサ、またはハイブリッド・マイクロプロセッサ／ＤＳＰアーキテクチャを備えたプロセッサでもよい。プロセッサ１００は、エンコードされたビデオ信号上で、例えば、アナログ／デジタル変換、復調、フィルタリング、データ・リカバリ、およびデコーディングを含む多様な動作を実行する。プロセッサ１００は、標準規格のＭＰＥＧファミリーおよびＨ．２６３標準規格のような多様なデジタル・ビデオ圧縮標準規格のうちの１つに従って圧縮されたデジタル・ビデオ信号をデコードする。そして、デコードされたビデオ信号はディスプレイ・ドライバ５１０へ入力され、ディスプレイ５１２上にビデオ画像を生成する。
【００３３】
本発明の多様な実施例が記述された。しかしながら、多様な修正が、本発明の精神および範囲から逸脱することなく行われ得ることが理解されるであろう。従って、他の実施例は添付の請求項の範囲内である。
【図面の簡単な説明】
【００３４】
【図１】本発明の実施例に従ったパイプライン方式のプログラム可能なプロセッサの一例を図示するブロック図である。
【図２】本発明の実施例に従ってプログラム可能なプロセッサのための実行パイプラインの一例を図示するブロック図である。
【図３】一実施例に従ってハードウェア・ループ制御アーキテクチャを図示するブロック図である。
【図４】一実施例に従ってハードウェア・ループ上にセキュリティを提供するための動作を図示するフローチャートである。
【図５】一実施例に従ったプロセッサを含むモバイル・ビデオ・ユニットのブロック図である。
【図１】
0003720807.tif 000002
【図２】
0003720807.tif 000003
【図３】
0003720807.tif 000004
【図４】
0003720807.tif 000005
【図５】
0003720807.tif 000006