(57)【特許請求の範囲】
【請求項１】
プロセッサによって実行される安全保護方法であって、
第１命令の命令セキュリティ属性（ＩＳＡ）および操作イベント（ＯＥ）のセキュリティ属性（ＳＡ）に基づいて、前記第１命令を実行する前または後に第１セキュリティチェックを行い、前記ＯＥが、前記第１命令を実行する前に、前記プロセッサが前記第１命令をフェッチした時の副作用として生成される、または、前記第１命令を実行した後に、前記プロセッサが前記第１命令を実行した時の副作用として生成される、または、前記第１命令の監視結果として生成される、または、前記プロセッサの外部入力に応答して生成されるステップと、
前記第１セキュリティチェックが失敗した時に、前記ＯＥを無視する、または、前記ＯＥを延期する、または、セキュリティ例外を起こすステップと
を含む安全保護方法。
【請求項２】
第２セキュリティチェック、第３セキュリティチェックおよび第４セキュリティチェックのうちの少なくとも１つを行うステップと、
前記第２セキュリティチェックが、前記第１命令の前記ＩＳＡおよび前記第１命令によってアクセスされた操作リソースのＳＡに基づいて行われ、
前記第３セキュリティチェックが、前記第１命令がセキュリティサービス命令である時に行われるとともに、前記第３セキュリティチェックが、前記第１命令の前記ＩＳＡおよびコードＳＡに基づいて行われ、
前記第４セキュリティチェックが、前記第１命令の前記ＩＳＡおよび第２命令のＩＳＡに基づいて行われ、前記プロセッサが、前記プロセッサが前記第１命令をフェッチした後すぐに前記第２命令をフェッチし、
前記第２セキュリティチェック、前記第３セキュリティチェックおよび前記第４セキュリティチェックのうちのいずれかが失敗した時に、前記セキュリティ例外を起こすステップと
をさらに含む請求項１に記載の安全保護方法。
【請求項３】
前記第１命令の前記ＩＳＡが前記ＯＥの前記ＳＡよりも安全である時、前記第１セキュリティチェックが失敗し、
前記第１命令の前記ＩＳＡが前記操作リソースの前記ＳＡよりも安全ではない時、または、前記第１命令の前記ＩＳＡが前記操作リソースの前記ＳＡと同等に安全であり、且つ前記第１命令の前記ＩＳＡに関連するグループＩＤが前記操作リソースの前記ＳＡに関連するグループＩＤと異なる時に、前記第２セキュリティチェックが失敗し、
前記第１命令の前記ＩＳＡが前記第１命令の前記コードＳＡよりも安全ではない時に、前記第３セキュリティチェックが失敗し、
前記第１命令の前記ＩＳＡが前記第２命令の前記ＩＳＡよりも安全ではない時、または、前記第１命令の前記ＩＳＡが前記第２命令の前記ＩＳＡと同等に安全であり、且つ前記第１命令の前記ＩＳＡに関連する前記グループＩＤが前記第２命令の前記ＩＳＡに関連するグループＩＤと異なる時に、前記第４セキュリティチェックが失敗する請求項２に記載の安全保護方法。
【請求項４】
前記操作リソースが、前記プロセッサの内部記憶装置または外部インターフェースにマッピングされ、前記第１命令がデータの読み出しまたは書き込みを行うロード／保存アドレス空間（ＬＳＡＳ）にアドレス指定されたデータ、前記プロセッサのレジスター、または、前記プロセッサによって保存またはアクセスされた複数のセキュリティルックアップ項目（ＳＬＥ）のうちの１つであり、前記各ＳＬＥが、前記ＬＳＡＳまたは命令フェッチアドレス空間（ＩＦＡＳ）の領域を記録して、前記プロセッサが前記ＩＦＡＳから前記第１命令および前記第２命令をフェッチするとともに、前記各ＳＬＥが、さらに、前記領域に関連するＳＡを記録する請求項２に記載の安全保護方法。
【請求項５】
前記第１命令のフェッチアドレスをカバーする領域を有する前記ＳＬＥの１つから前記第１命令の前記ＩＳＡを取得するステップと、
前記第２命令のフェッチアドレスをカバーする領域を有する前記ＳＬＥの１つから前記第２命令の前記ＩＳＡを取得するステップと、
前記データのアドレスをカバーする領域を有する前記ＳＬＥの１つから前記ＬＳＡＳにおいてアドレス指定された前記データの前記ＳＡを取得するステップと
をさらに含む請求項４に記載の安全保護方法。
【請求項６】
ホストデバッグモードにおいて前記プロセッサによってフェッチされた命令が、前記ＳＬＥのうちの特殊ＳＬＥの前記ＳＡを用いてタグ付けされ、前記特殊ＳＬＥが、前記ホストデバッグモードに単独で使用される請求項４に記載の安全保護方法。
【請求項７】
前記プロセッサが、複数のＳＬＥを保存またはアクセスし、前記各ＳＬＥが、ＳＡを含むとともに、前記各ＳＬＥが、インデックスに関連し、前記安全保護方法が、さらに、
前記ＯＥのインデックスと一致するインデックスを有する前記ＳＬＥのうちの１つから前記ＯＥの前記ＳＡを取得するステップと、
前記操作リソースのインデックスと一致するインデックスを有する前記ＳＬＥのうちの１つから前記操作リソースの前記ＳＡを取得するステップと、
前記第１命令のインデックスと一致するインデックスを有する前記ＳＬＥのうちの１つから前記第１命令の前記コードＳＡを取得するステップと
を含み、前記第１命令の前記インデックスが、前記第１命令の命令コード、前記第１命令のオペランドおよび前記第１命令の前記ＩＳＡに関連するグループＩＤのうちの少なくとも１つから引き出される請求項２に記載の安全保護方法。
【請求項８】
前記セキュリティ例外に応答して、前記プロセッサをリセットする、または、前記プロセッサを停止する、または、トラップを送信して前記プロセッサが前記セキュリティ例外を処理するステップをさらに含む請求項１に記載の安全保護方法。
【請求項９】
ＩＦＡＳから第１命令をフェッチする命令フェッチユニットと、
前記命令フェッチユニットに連結され、前記第１命令を実行する命令操作ユニットと、
前記命令フェッチユニットおよび前記命令操作ユニットに連結され、前記第１命令を実行する前に、前記命令フェッチユニットが前記第１命令をフェッチした時の副作用として、または、前記第１命令を実行した後に、前記命令操作ユニットが前記第１命令を実行した時の副作用として、あるいは、前記第１命令の監視結果として、あるいは、プロセッサの外部入力に応答して、ＯＥを生成するＯＥ発生器と、
前記命令フェッチユニット、前記命令操作ユニットおよび前記ＯＥ発生器に連結され、前記命令操作ユニットが前記第１命令のＩＳＡおよび前記ＯＥのＳＡに基づいて前記第１命令を実行する前または後に第１セキュリティチェックを行うセキュリティチェックユニットと
を含み、前記ＯＥ発生器が、前記第１セキュリティチェックが失敗した時に、前記ＯＥを無視する、または、前記ＯＥを延期する、または、セキュリティ例外を起こすプロセッサ。
【請求項１０】
前記命令フェッチユニットに連結され、前記第１命令および第２命令のフェッチアドレスを生成し、前記命令フェッチユニットが、前記命令フェッチユニットが前記第１命令をフェッチした後すぐに前記第２命令をフェッチする命令フェッチアドレス発生器と、
前記命令フェッチユニットおよび前記命令操作ユニットに連結され、前記第１命令によってアクセスされた操作リソースに関連するデータアドレスまたはインデックスを生成し、前記セキュリティチェックユニットが、さらに、第２セキュリティチェック、第３セキュリティチェックおよび／または第４セキュリティチェックを行う操作リソースアドレス発生器と
をさらに含み、前記第２セキュリティチェックが、前記第１命令の前記ＩＳＡおよび前記データアドレスまたは前記インデックスに基づいて得られる前記操作リソースのＳＡに基づいて行われ、
前記第３セキュリティチェックが、前記第１命令がセキュリティサービス命令である時に行われるとともに、前記第３セキュリティチェックが、前記第１命令の前記ＩＳＡおよびコードＳＡに基づいて行われ、
前記第４セキュリティチェックが、前記第１命令の前記ＩＳＡおよび前記第２命令のＩＳＡに基づいて行われ、
前記セキュリティチェックユニットが、前記第２セキュリティチェック、前記第３セキュリティチェックおよび前記第４セキュリティチェックのうちのいずれかが失敗した時に、前記セキュリティ例外を起こす請求項９に記載のプロセッサ。
【請求項１１】
前記第１命令の前記ＩＳＡが前記ＯＥの前記ＳＡよりも安全である時、前記第１セキュリティチェックが失敗し、
前記第１命令の前記ＩＳＡが前記操作リソースの前記ＳＡよりも安全ではない時、または、前記第１命令の前記ＩＳＡが前記操作リソースの前記ＳＡと同等に安全であり、且つ前記第１命令の前記ＩＳＡに関連するグループＩＤが前記操作リソースの前記ＳＡに関連するグループＩＤと異なる時に、前記第２セキュリティチェックが失敗し、
前記第１命令の前記ＩＳＡが前記第１命令の前記コードＳＡよりも安全ではない時に、前記第３セキュリティチェックが失敗し、
前記第１命令の前記ＩＳＡが前記第２命令の前記ＩＳＡよりも安全ではない時、または、前記第１命令の前記ＩＳＡが前記第２命令の前記ＩＳＡと同等に安全であり、且つ前記第１命令の前記ＩＳＡに関連する前記グループＩＤが前記第２命令の前記ＩＳＡに関連するグループＩＤと異なる時に、前記第４セキュリティチェックが失敗する請求項１０に記載のプロセッサ。
【請求項１２】
前記操作リソースが、前記プロセッサの内部記憶装置または外部インターフェースにマッピングされ、前記第１命令がデータの読み出しまたは書き込みを行うＬＳＡＳにアドレス指定されたデータ、前記プロセッサのレジスター、または複数のＳＬＥのうちの１つであり、前記プロセッサが、さらに、
前記命令フェッチアドレス発生器、前記命令フェッチユニット、前記操作リソースアドレス発生器、前記ＯＥ発生器および前記セキュリティチェックユニットに連結され、前記複数のＳＬＥを提供するＳＬＥユニットを含み、前記各ＳＬＥが、前記ＬＳＡＳまたは前記ＩＦＡＳの領域を記録して、前記プロセッサが前記ＩＦＡＳから前記第１命令および前記第２命令をフェッチするとともに、前記各ＳＬＥが、さらに、前記領域に関連するＳＡを記録する請求項１０に記載のプロセッサ。
【請求項１３】
前記命令フェッチユニットが、前記第１命令の前記フェッチアドレスをカバーする領域を有する前記ＳＬＥの１つから前記第１命令の前記ＩＳＡを取得し、前記命令フェッチユニットが、前記第２命令の前記フェッチアドレスをカバーする領域を有する前記ＳＬＥの１つから前記第２命令の前記ＩＳＡを取得し、前記セキュリティチェックユニットが、前記データのアドレスをカバーする領域を有する前記ＳＬＥの１つから前記ＬＳＡＳにおいてアドレス指定された前記データの前記ＳＡを取得する請求項１２に記載のプロセッサ。
【請求項１４】
ホストデバッグモードにおいて前記命令フェッチユニットによってフェッチされた命令が、前記ＳＬＥのうちの特殊ＳＬＥの前記ＳＡを用いてタグ付けされ、前記特殊ＳＬＥが、前記ホストデバッグモードに単独で使用される請求項１２に記載のプロセッサ。
【請求項１５】
前記命令フェッチアドレス発生器、前記命令フェッチユニット、前記操作リソースアドレス発生器、前記ＯＥ発生器および前記セキュリティチェックユニットに連結され、複数のＳＬＥを提供するＳＬＥユニットをさらに含み、前記各ＳＬＥが、ＳＡを含むとともに、前記各ＳＬＥが、インデックスに関連し、前記セキュリティチェックユニットが、前記ＯＥのインデックスと一致するインデックスを有する前記ＳＬＥのうちの１つから前記ＯＥの前記ＳＡを取得し、および、前記操作リソースのインデックスと一致するインデックスを有する前記ＳＬＥのうちの１つから前記操作リソースの前記ＳＡを取得し、および、前記第１命令のインデックスと一致するインデックスを有する前記ＳＬＥのうちの１つから前記第１命令の前記コードＳＡを取得し、前記第１命令の前記インデックスが、前記第１命令の命令コード、前記第１命令のオペランドおよび前記第１命令の前記ＩＳＡに関連するグループＩＤのうちの少なくとも１つから引き出される請求項１０に記載のプロセッサ。
【請求項１６】
前記セキュリティチェックユニットに連結され、前記セキュリティ例外に応答して、前記プロセッサをリセットする、または、前記プロセッサを停止する、または、トラップを送信して前記プロセッサが前記セキュリティ例外を処理するセキュリティ例外ユニット
をさらに含む請求項９に記載のプロセッサ。
【請求項１７】
プロセッサによって実行される安全保護方法であって、
第１命令のＩＳＡおよびＯＥのＳＡに基づいて、前記第１命令を実行する前または後に第１セキュリティチェックを行い、前記ＯＥが、前記第１命令を実行する前に、前記プロセッサが前記第１命令をフェッチした時の副作用として生成される、または、前記第１命令を実行した後に、前記プロセッサが前記第１命令を実行した時の副作用として生成される、または、前記第１命令の監視結果として生成される、または、前記プロセッサの外部入力に応答して生成されるステップと、
前記第１セキュリティチェックが失敗した時に、前記ＯＥを無視する、または、前記ＯＥを延期する、または、セキュリティ例外を起こすステップと、
前記第１命令がセキュリティサービス命令である時に、前記第１命令の前記ＩＳＡおよびコードＳＡに基づいて、第２セキュリティチェックを行うステップと、
前記第２セキュリティチェックが失敗した時に、前記セキュリティ例外を起こすステップと
を含む安全保護方法。
【請求項１８】
ＩＦＡＳから第１命令をフェッチする命令フェッチユニットと、
前記命令フェッチユニットに連結され、前記第１命令を実行する命令操作ユニットと、
前記命令フェッチユニットおよび前記命令操作ユニットに連結され、前記第１命令を実行する前に、前記命令フェッチユニットが前記第１命令をフェッチした時の副作用として、または、前記第１命令を実行した後に、前記命令操作ユニットが前記第１命令を実行した時の副作用として、あるいは、前記第１命令の監視結果として、あるいは、プロセッサの外部入力に応答して、ＯＥを生成するＯＥ発生器と、
前記命令フェッチユニット、前記命令操作ユニットおよび前記ＯＥ発生器に連結され、前記命令操作ユニットが前記第１命令のＩＳＡおよび前記ＯＥのＳＡに基づいて前記第１命令を実行する前または後に第１セキュリティチェックを行うとともに、前記第１命令がセキュリティサービス命令である時に前記第１命令の前記ＩＳＡおよびコードＳＡに基づいて第２セキュリティチェックを行うセキュリティチェックユニットと
を含み、前記ＯＥ発生器が、前記第１セキュリティチェックが失敗した時に、前記ＯＥを無視する、または、前記ＯＥを延期する、または、セキュリティ例外を起こし、前記セキュリティチェックユニットが、前記第２セキュリティチェックが失敗した時に、前記セキュリティ例外を起こすプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、安全保護方法およびプロセッサに関するものであり、特に、安全保護方法およびコンピューティングセキュリティを実施するプロセッサに関するものである。
【背景技術】
【０００２】
コンピューティングセキュリティ（computing security）の分野において、プログラムの実行およびアクセスは、通常、一組の厳しい規則によって個別の実行環境に制限される。これらの規則は、意図的でない、または権限のないアクセスから実行環境を保護するために、プロセッサによって実行された全プログラムの全命令が有効且つ安全であることを確保する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
したがって、本発明は、安全保護方法、および、プログラムビューアドレス空間でコンピューティングセキュリティを実施して、ソフトウェア実行に確実なセキュリティ境界を提供するプロセッサを提供する。
【課題を解決するための手段】
【０００４】
本発明は、安全保護方法、および、命令、操作リソースおよびＯＥに対してセキュリティチェックを行うことによってコンピューティングセキュリティを実施するプロセッサを提供する。
【０００５】
本発明の１つの実施形態において、プロセッサによって実行される安全保護方法を提供する。この安全保護方法は、以下のステップを含む。命令の命令セキュリティ属性（instruction security attribute, ISA）および操作イベント（operational event, OE）のセキュリティ属性（security attribute, SA）に基づいて、命令を実行する前または後に、セキュリティチェックを行う。セキュリティチェックが失敗（fail）した時に、ＯＥを無視する、または、ＯＥを延期する、または、セキュリティ例外（security exception）を起こす。ＯＥは、プロセッサが命令をフェッチ（fetch）または実行した時の副作用として生成される、または、命令の監視結果として生成される、または、プロセッサの外部入力に応答して生成される。
【０００６】
本発明の別の実施形態において、プロセッサを提供する。このプロセッサは、命令フェッチユニットと、命令操作ユニットと、ＯＥ発生器と、セキュリティチェックユニットとを含む。命令操作ユニットは、命令フェッチユニットに連結される。ＯＥ発生器は、命令フェッチユニットおよび命令操作ユニットに連結される。セキュリティチェックユニットは、命令フェッチユニット、命令操作ユニットおよびＯＥ発生器に連結される。命令フェッチユニットは、命令フェッチアドレス空間から命令をフェッチする。命令操作ユニットは、命令を実行する。ＯＥ発生器は、命令フェッチユニットが命令をフェッチした時、または、命令操作ユニットが命令を実行した時の副作用として、あるいは、命令の監視結果として、あるいは、プロセッサの外部入力に応答して、ＯＥを生成する。セキュリティチェックユニットは、命令操作ユニットが命令のＩＳＡおよびＯＥのＳＡに基づいて命令を実行する前または後に、セキュリティチェックを行う。ＯＥ発生器は、セキュリティチェックが失敗した時に、ＯＥを無視する、または、ＯＥを延期する、または、セキュリティ例外を起こす。
【０００７】
本発明の別の実施形態において、別の安全保護方法を提供する。この安全保護方法は、プロセッサによって実行され、以下のステップを含む。第１命令がセキュリティサービス命令である時に、第１命令のＳＡおよびコードＳＡに基づいて、第１セキュリティチェックを行う。第１セキュリティチェックが失敗した時に、セキュリティ例外を起こす。
【０００８】
本発明の別の実施形態において、別のプロセッサを提供する。このプロセッサは、命令フェッチユニットと、命令操作ユニットと、セキュリティチェックユニットとを含む。命令フェッチユニットは、命令フェッチアドレス空間（instruction fetch address space, IFAS）から第１命令をフェッチする。命令操作ユニットは、命令フェッチユニットに連結され、第１命令を実行する。セキュリティチェックユニットは、命令フェッチユニットおよび命令操作ユニットに連結される。セキュリティチェックユニットは、第１命令がセキュリティサービス命令である時に、第１命令のＩＳＡおよびコードＳＡに基づいて、第１セキュリティチェックを行う。セキュリティチェックユニットは、第１セキュリティチェックが失敗した時に、セキュリティ例外を起こす。
【０００９】
本発明の別の実施形態において、別の安全保護方法を提供する。この安全保護方法は、本発明が提供する上記２つの安全保護方法を組み合わせたものである。
【００１０】
本発明の別の実施形態において、別のプロセッサを提供する。このプロセッサは、本発明が提供する上記２つのプロセッサを組み合わせたものである。
【発明の効果】
【００１１】
上述した命令、操作リソースおよびＯＥに対するセキュリティチェックを行うことによって、ソフトウェア実行に確実なセキュリティ境界を提供する。
【００１２】
本発明の上記および他の目的、特徴、および利点をより分かり易くするため、図面と併せた幾つかの実施形態を以下に説明する。
【図面の簡単な説明】
【００１３】
【図１】本発明の１つの実施形態に係るプロセッサの一部を示す概略図である。
【図２】本発明の１つの実施形態に係るＳＬＥおよびアドレス空間内のこれらの関連領域を示す概略図である。
【図３】本発明の１つの実施形態に係る安全保護方法を示すフローチャートである。
【図４】本発明の１つの実施形態に係る安全保護方法を示すフローチャートである。
【図５】本発明の１つの実施形態に係る安全保護方法を示すフローチャートである。
【図６】本発明の１つの実施形態に係る安全保護方法を示すフローチャートである。
【図７】本発明の１つの実施形態に係る安全保護方法を示すフローチャートである。
【図８】本発明の１つの実施形態に係る安全保護方法を示すフローチャートである。
【図９】本発明の１つの実施形態に係る安全保護方法を示すフローチャートである。
【発明を実施するための形態】
【００１４】
図１は、本発明の１つの実施形態に係るプロセッサ１００の一部を示す概略図である。プロセッサ１００は、命令フェッチアドレス発生器１１０と、命令フェッチユニット１２０と、操作リソースアドレス発生器１３０と、命令操作ユニット１４０と、操作イベント（operational event, OE）発生器１５０と、セキュリティチェックユニット１６０と、セキュリティルックアップ項目（security lookup entry, SLE）ユニット１７０と、セキュリティ例外ユニット１８０とを含む。命令フェッチユニット１２０は、命令フェッチアドレス発生器１１０に連結される。操作リソースアドレス発生器１３０は、命令フェッチユニット１２０に連結される。命令操作ユニット１４０は、操作リソースアドレス発生器１３０に連結される。ＯＥ発生器１５０は、命令フェッチユニット１２０および命令操作ユニット１４０に連結される。セキュリティチェックユニット１６０は、命令フェッチユニット１２０、命令操作ユニット１４０およびＯＥ発生器１５０に連結される。ＳＬＥユニット１７０は、命令フェッチアドレス発生器１１０、命令フェッチユニット１２０、操作リソースアドレス発生器１３０、ＯＥ発生器１５０およびセキュリティチェックユニット１６０に連結される。セキュリティ例外ユニット１８０は、命令フェッチアドレス発生器１１０およびセキュリティチェックユニット１６０に連結される。本発明のいくつかの別の実施形態において、セキュリティ例外ユニット１８０は、プロセッサ１００の他のいくつかの構成要素、例えば、命令フェッチユニット１２０、操作リソースアドレス発生器１３０、命令操作ユニット１４０またはＯＥ発生器１５０等にさらに連結して、例外処理中にこれらの操作を制御してもよい。
【００１５】
プロセッサ１００は、セキュリティチェックを行うことによってコンピュータセキュリティを実施するものであり、セキュリティチェックの核心は、命令のセキュリティ属性（ＳＡ）、命令によってアクセスされた操作リソースおよびＯＥを比較することである。ＯＥは、命令フェッチユニット１２０が命令をフェッチした時、または、命令操作ユニット１４０が命令を実行した時の副作用（例えば、例外（exception））として、あるいは、命令の監視結果（例えば、デバッグイベント（debugging event）、つまり、命令ブレークポイント（breakpoint）、データウォッチポイント（watchpoint）、シングルステップ（single-stepping）または命令トレース（trace））として、あるいは、プロセッサの外部入力（例えば、中断（interrupt））に応答して、ＯＥ発生器１５０によって生成される。ＳＡは、ＳＬＥユニット１７０によって提供された複数のＳＬＥから取得することができる。
【００１６】
ＳＬＥは、ＳＬＥユニット１７０のルックアップテーブルに保存された項目であり、命令、操作リソースおよびＯＥのＳＡを決定する。ＳＬＥユニット１７０は、プロセッサ１００の外部入力からいくつかまたは全てのＳＬＥを取得することができる。ＳＬＥは、１つまたはそれ以上のセキュリティ要素を含むことができる。セキュリティ要素は、これらがＳＬＥの一部である時、または、これらが命令、操作リソースまたはＯＥにタグ付けされている時に、ＳＡと称することができる。ＳＬＥのセキュリティ要素の全てまたは一部を使用して、命令、操作リソースまたはＯＥにタグ付けするＳＡが形成された時、ＳＡは、それぞれ命令ＳＡ（instruction SA, ISA）またはデータＳＡ（data SA, DSA）と称することができる。
【００１７】
また、命令フェッチアドレス空間（instruction fetch address space, IFAS）からの命令またはロード／保存アドレス空間（load/store address space, LSAS）からのデータによってルックアップ（lookup）を行うＳＬＥは、ＩＦＡＳまたはＬＳＡＳのいずれか、または、両方のアドレス空間の領域を特定するタグを含むことができる。タグを有さないＳＬＥがあってもよいが、このようなＳＬＥは、インデックスと関連する。実際には、これらはレジスター、ＳＬＥまたはＯＥのＳＡを取得するためにルックアップされるＳＬＥであり、これらのレジスターおよびＳＬＥは、いくつかの特殊命令の操作リソースである。
【００１８】
上述したように、ＳＬＥは、アドレス空間の領域を特定するタグおよびその領域に関連するＳＡを記録することができる。領域は、プロセッサ１００がその中から命令をフェッチしたＩＦＡＳの一部、または、プロセッサ１００の外部インターフェースにマッピングされたＬＳＡＳの一部であってもよく、ＬＯＡＤ命令は、ＬＳＡＳの中からデータを読み出し、および／または、ＳＴＯＲＥ命令は、ＬＳＡＳの中にデータを書き込む。プロセッサ１００によってアクセスされるＩＦＡＳおよびＬＳＡＳは、１つまたはそれ以上あってもよい。各ＩＦＡＳおよびＬＳＡＳは、１つまたはそれ以上の領域を含むことができる。これらの領域は、同じＳＡまたは異なるＳＡに関連してもよい。上述したタグは、領域のベースアドレスおよびサイズを記録する、または、領域の最初のアドレスと最後のアドレスを記録することによって、それ自身の領域を特定することができる。
【００１９】
１つのＳＡは、セキュリティを制御するために使用可能なセキュリティ要素を１つまたはそれ以上含むことができる。例えば、セキュリティ要素のうちの１つは、セキュリティ特権レベル（security privilege level, SPL）であってもよい。ＳＰＬは、数字で特権のレベルを定義して、セキュリティチェックを行う。セキュリティチェックは、２つのＳＡを比較して、どちらのＳＡがより安全であるかを判断する。比較は、２つのＳＡのセキュリティ要素に基づいて行われる。例えば、各ＳＡがＳＰＬセキュリティ要素を含む時、２つのＳＰＬを比較することができる。ＳＰＬの数が少ないＳＡが、より安全である。本発明のいくつかの別の実施形態において、ＳＰＬの数が多いＳＡが、より安全である。
【００２０】
図２は、本発明の１つの実施形態に係る４つのＳＬＥおよびアドレス空間２００におけるこれらの関連領域を示す概略図である。ＳＬＥユニット１７０によって提供された４つのＳＬＥをＳＬＥ０〜ＳＬＥ３として表記し、これらは、それぞれ領域０〜３に関連する。アドレス空間２００は、ＩＦＡＳまたはＬＳＡＳであってもよい。領域０は、アドレスＡ２で始まり、アドレスＡ４で終わる。領域１は、アドレスＡ５で始まり、アドレスＡ６で終わる。領域２は、アドレスＡ３で始まり、アドレスＡ７で終わる。領域３は、アドレスＡ０で始まり、アドレスＡ１で終わる。領域２は、領域０および領域１とオーバーラップする。
【００２１】
全ての命令は、それ自身のフェッチアドレスからフェッチされる。命令は、それ自身の実行を行うために、操作リソースにアクセスすることができる。命令によってアクセスされた操作リソースは、ＬＳＡＳにおいてアドレス指定されたデータ、プロセッサ１００のレジスター、またはＳＬＥユニット１７０によって提供されたＳＬＥであってもよい。データのアドレスは、プロセッサ１００の内部記憶装置または外部インターフェースにマッピングされ、命令がデータの読み出しまたは書き込みを行うＬＳＡＳのアドレスである。
【００２２】
ＳＬＥユニット１７０が命令のフェッチアドレスまたは命令によってアクセスされた操作リソースのデータアドレスを受信した時、ＳＬＥユニット１７０は、受信したアドレスに基づいて、ＳＬＥ内の領域をルックアップすることができる。受信したアドレスをカバーする領域を有するＳＬＥが１つしかなく、受信したアドレスが命令のフェッチアドレスである時、ＳＬＥユニット１７０は、そのＳＬＥのＳＡのセキュリティ要素の全てまたは一部をその命令にタグ付けすることができる。タグ付けされたセキュリティ要素は、その命令のＳＡになる。命令のＳＡは、命令ＳＡ（ＩＳＡ）とも称される。
【００２３】
受信したアドレスをカバーする領域を有するＳＬＥが１つしかなく、受信したアドレスが命令によってアクセスされた操作リソースのデータアドレスである時、ＳＬＥユニット１７０は、そのＳＬＥのＳＡのセキュリティ要素の全てまたは一部をその操作リソースにタグ付けすることができる。タグ付けされたセキュリティ要素は、その操作リソースのＳＡになる。操作リソースのＳＡは、データＳＡ（ＤＳＡ）とも称される。
【００２４】
受信したアドレスをカバーする領域を有するＳＬＥが１つよりも多い時、ＳＬＥユニット１７０は、任意の優先方式に基づいて、それらのＳＬＥのうちの１つを選択し、選択したＳＬＥのＳＡのセキュリティ要素の全てまたは一部をその命令または操作リソースにタグ付けすることができる。例えば、ＳＬＥユニット１７０は、最も安全なＳＡを有するＳＬＥを選択することができる。
【００２５】
図２に示した領域を例に挙げて説明する。ＳＬＥユニット１７０が領域３にある命令のフェッチアドレスを受信した時、ＳＬＥユニット１７０は、ＳＬＥ３のＳＡを用いて命令をタグ付けすることができる。同様に、ＳＬＥユニット１７０が領域３にある命令によってアクセスされた操作リソースのデータアドレスを受信した時、ＳＬＥユニット１７０は、ＳＬＥ３のＳＡを用いて操作リソースをタグ付けすることができる。ＳＬＥユニット１７０が領域１にある命令のフェッチアドレスを受信した時、ＳＬＥユニット１７０は、ＳＬＥ１またはＳＬＥ２を選択して、選択したＳＬＥのＳＡを用いて命令をタグ付けすることができるが、これは、領域１と領域２がオーバーラップし、ＳＬＥ１とＳＬＥ２のフェッチアドレスが一致しているからである。同様に、ＳＬＥユニット１７０が領域１にある命令によってアクセスされた操作リソースのデータアドレスを受信した時、ＳＬＥユニット１７０は、ＳＬＥ１またはＳＬＥ２を選択して、選択したＳＬＥのＳＡを用いて操作リソースをタグ付けすることができる。
【００２６】
上述したように、ＳＬＥは、インデックスと関連してもよい。いくつかの命令は、領域に直接アクセスすることができ、いくつかの命令は、ＳＬＥに直接アクセスすることができる。命令によってアクセスされた操作リソースがプロセッサ１００のレジスターまたはＳＬＥである時、レジスターまたはＳＬＥは、対応するインデックスを有する。いくつかのＯＥもまた、対応する内部インデックスを有する。ＳＬＥユニット１７０がそのようなインデックスを受信した時、ＳＬＥユニット１７０は、受信したインデックスと一致するインデックスを有するＳＬＥのＳＡのセキュリティ要素の全てまたは一部をレジスター、ＳＬＥまたはＯＥにタグ付けすることができる。タグ付けされたセキュリティ要素は、レジスター、ＳＬＥまたはＯＥのＳＡになる。あるいは、本発明のいくつかの別の実施形態において、レジスター、ＳＬＥまたはＯＥの一部または全ては、ＳＬＥユニット１７０に記録されたＳＡの代わりに、ハードコーディングされたＳＡに関連してもよい。
【００２７】
セキュリティサービス命令（security service instruction, SSI）と称される特殊な命令が存在する。ＳＳＩは、より安全な領域にある命令、または、正規の命令を介してサービスの提供を請求することのできない領域にある命令によって提供されたサービスを請求するために使用される。例えば、ＳＰＬの数が少なければ少ないほど、ＳＰＬの数が多い場合よりも安全であると仮定する。通常、ＳＰＬ３を有する関数呼出し（function-call）命令がＳＰＬ２を有するサブルーチン（subroutine）によって提供されたサービスを請求すると、セキュリティチェック違反（violation）をトリガー（trigger）する。しかしながら、ＳＰＬ３に対して定義されたＳＳＩを使用することによって、ＳＰＬ３を有する命令流（instruction flow）は、セキュリティチェック違反をトリガーせずに、ＳＰＬ２を有する別の命令流によって提供されたサービスを請求することができる。異なるＩＳＡに対して異なるＳＳＩを定義して、各ＩＳＡからサービスを請求してもよい。例えば、ＳＰＬ３に対してＳＳＩを定義してＳＰＬ２からサービスを請求してもよく、ＳＰＬ３に対してＳＳＩを定義してＳＰＬ１からサービスを請求してもよく、ＳＰＬ２に対して別のＳＳＩを定義してＳＰＬ１からサービスを請求してもよい。ＳＳＩの不正使用は、セキュリティチェック違反である。例えば、ＳＰＬ３を有する命令流がＳＰＬ２に対して定義されたＳＳＩを実行するのは、不正である。
【００２８】
ＳＳＩは、２つのＳＡに関連する。２つのＳＡのうちの１つは、ＳＳＩのフェッチアドレスに関連するＩＳＡである。２つのＳＡのうちのもう１つは、ＳＳＩの命令コードおよび／またはオペランド（operand）に関連するコードＳＡである。ＳＳＩのコードＳＡは、ＳＳＩのインデックスに基づいて取得することができ、インデックスは、ＳＳＩの命令コードおよび／またはオペランドから引き出すことができる。本発明のいくつかの実施形態において、ＳＳＩのＩＳＡに関連するグループＩＤ（identification）（下記に詳細を説明する）は、ＳＳＩのインデックスの生成にも使用することができる。ＳＬＥユニット１７０がＳＳＩのインデックスを受信した時、ＳＬＥユニット１７０は、受信したインデックスと一致するインデックスを有するＳＬＥのＳＡのセキュリティ要素の全てまたは一部をＳＳＩにタグ付けすることができる。タグ付けされたセキュリティ要素は、ＳＳＩのコードＳＡになる。
【００２９】
本発明のいくつかの実施形態において、ＳＬＥに記録された各ＳＡは、グループＩＤに関連してもよい。グループＩＤは、ＳＬＥに保存されてもよく、または、その他の場所に保存されてもよい。本発明のいくつかの実施形態において、グループＩＤチェックは、現在の命令対次の命令のセキュリティチェック、または、現在の命令対現在の命令によってアクセスされた操作リソースのセキュリティチェックに含まれてもよい。
【００３０】
現在の命令対次の命令のセキュリティチェックについては、次の命令のＩＳＡが現在の命令のＩＳＡよりも安全である時に、セキュリティ違反が発生する。現在の命令対その操作リソースのセキュリティチェックについては、操作リソースのＤＳＡが現在の命令のＩＳＡよりも安全である時に、セキュリティ違反が発生する。しかしながら、本発明のいくつかの実施形態は、上述したＳＡのセキュリティチェックにおいてセキュリティ違反がない時に、グループＩＤを用いてさらなるチェックを行うよう選択的に要求してもよい。
【００３１】
上述したＳＡチェックにおいてセキュリティ違反がない状況で、グループＩＤチェックが要求された時、現在の命令のＩＳＡに関連するグループＩＤが操作リソースのＤＳＡ（または次の命令のＩＳＡ）に関連するグループＩＤと同じであれば、セキュリティチェックは通過（pass）するが、２つのグループＩＤが異なる場合、セキュリティチェックは失敗する。このようなグループＩＤチェックについて、２つの例を図４および図６に示す。グループＩＤチェックが要求されなかった時、２つのＳＡが同等に安全である時にセキュリティチェックは通過とみなされる。
【００３２】
また、各ＳＬＥは、さらに、１つまたはそれ以上のＩＤチェック属性ビット（attribute bit）に関連してもよく、チェックされた２つのＳＡが同じ時、または２つのＳＡが異なる時（ＳＡセキュリティチェックにおいてセキュリティ違反がない時）にグループＩＤチェックが行われたかどうかを決定することができる。ＩＤチェック属性ビットは、それらの関連ＳＬＥに保存されてもよく、または、その他の場所に保存されてもよい。
【００３３】
本発明のいくつかの実施形態において、ホストデバッグモード（host debugging mode）が実施される。デバッグイベント（ＯＥ）がホストデバッグモードで起きた時、プロセッサ１００は、その命令流を特殊ポートまたは特殊アドレス空間にリダイレクト（redirect）することができ、デバッグ処理を行うためのさらなる命令は、プロセッサ１００の物理的デバッグインターフェース（通常、インサーキットデバッグポート（in-circuit debugging port）と呼ばれる）を介して、外部ホストからポートまたはアドレス空間に供給される。外部命令は、セキュリティ上の問題（security concern）を起こすため、このような命令は、事実上、単独領域として取り扱われる。つまり、ＳＬＥユニット１７０は、ホストデバッグモードに単独で使用される特殊ＳＬＥを提供することができる。命令フェッチアドレス発生器１１０がホストデバッグモードにおいて外部命令のＩＳＡをルックアップした時は、外部命令のフェッチアドレスに関わらず、ＳＬＥユニット１７０が常に、この特殊ＳＬＥから得られたＳＡおよびグループＩＤを外部命令にタグ付けする。特殊ＳＬＥは、他のどの目的にも使用されない。
【００３４】
図３は、本発明の１つの実施形態に係るプロセッサ１００によって実行される安全保護方法を示すフローチャートである。ステップ３１０において、命令フェッチアドレス発生器１１０は、命令のフェッチアドレスを生成し、命令フェッチユニット１２０は、ＩＦＡＳからのフェッチアドレスに基づいて命令をフェッチし、セキュリティチェックユニット１６０は、命令フェッチセキュリティチェックを行う（詳細は図４に示す）。このセキュリティチェックに対して、命令フェッチアドレス発生器１１０は、ＳＬＥユニット１７０にフェッチアドレスを提供する。ＳＬＥユニット１７０は、ステップ３２０において、フェッチアドレスに基づいてＳＬＥをルックアップしてＳＡを取得し、命令フェッチユニット１２０にＳＡを提供して、フェッチアドレスからフェッチされた新しい命令にタグ付けする。その結果、命令フェッチユニット１２０は、命令のフェッチアドレスをカバーする領域を有するＳＬＥの１つから命令のＩＳＡを取得する。命令のＩＳＡは、命令フェッチセキュリティチェックにおいて使用される。
【００３５】
ステップ３３０において、セキュリティチェックユニット１６０は、命令実行の前にＯＥセキュリティチェックを行う（詳細は図５に示す）。このセキュリティチェックに関わるＯＥは、それ自身の命令とは関連がない。例えば、ＯＥは、中断、または命令ブレークポイント等のハードウェアデバッグイベントであってもよい。このセキュリティチェックに対して、ＯＥ発生器は、ＳＬＥユニット１７０にＯＥのインデックスを提供する。ＳＬＥユニット１７０は、インデックスに基づいてＳＬＥをルックアップしてＳＡを取得し、そのＳＡを用いてＯＥをタグ付けする。その結果、セキュリティチェックユニット１６０は、ＯＥのインデックスと一致するインデックスを有するＳＬＥの１つからＯＥのＳＡを取得する。ＯＥのＳＡは、ＯＥセキュリティチェックにおいて使用される。
【００３６】
ステップ３４０において、操作リソースアドレス発生器１３０は、命令をデコード（decode）し、命令によってアクセスされる操作リソースを決定して、命令によってアクセスされる操作リソースに関連するデータアドレスまたはインデックスを生成する。ステップ３５０において、セキュリティチェックユニット１６０は、ＳＳＩセキュリティチェックまたはリソースアクセスセキュリティチェックを行う（詳細はそれぞれ図７および図６に示す）。
【００３７】
命令がＳＳＩである時、操作リソースアドレス発生器１３０は、ＳＳＩの命令コードおよび／またはオペランドに基づいてＳＳＩのインデックスを生成し、ＳＬＥユニット１７０にインデックスを提供する。例えば、操作リソースアドレス発生器１３０は、ＳＳＩの命令コードを直接ＳＳＩのインデックスとして使用してもよく、または、ＳＳＩの命令コードおよびいくつかのオペランド値をＳＳＩのインデックスにエンコード（encode）してもよい。いくつかの実施形態において、操作リソースアドレス発生器１３０は、さらに、ＳＳＩのフェッチアドレスに関連するグループＩＤに基づいてインデックスを生成してもよい。ＳＬＥユニット１７０は、インデックスに基づいてＳＬＥをルックアップしてＳＡを取得し、そのＳＡを用いてＳＳＩをタグ付けする。その結果、セキュリティチェックユニット１６０は、ＳＳＩのインデックスと一致するインデックスを有するＳＬＥの１つからＳＳＩのコードＳＡを取得する。ＳＳＩのコードＳＡは、ＳＳＩセキュリティチェックにおいて使用される。
【００３８】
リソースアクセスセキュリティチェックに対して、操作リソースアドレス発生器１３０は、ＳＬＥユニット１７０に操作リソースに関連するデータアドレスまたはインデックスを提供する。ＳＬＥユニット１７０は、データアドレスまたはインデックスに基づいてＳＬＥをルックアップしてＳＡを取得し、そのＳＡを用いて操作リソースをタグ付けする。その結果、セキュリティチェックユニット１６０は、データアドレスをカバーする領域を有するＳＬＥ、または、操作リソースのインデックスと一致するインデックスを有するＳＬＥから操作リソースのＳＡを取得する。操作リソースのＳＡは、リソースアクセスセキュリティチェックにおいて使用される。
【００３９】
ステップ３６０において、命令操作ユニット１４０は、命令を平常通り実行する。ステップ３７０において、セキュリティチェックユニット１６０は、命令実行の後に別のＯＥセキュリティチェックを行う（詳細は図８に示す）。このセキュリティチェックに関わるＯＥは、それ自身の命令と関連がある。例えば、ＯＥは、命令の実行中に起きた例外であってもよい。このセキュリティチェックに対して、ＯＥ発生器は、ＳＬＥユニット１７０にＯＥのインデックスを提供する。ＳＬＥユニット１７０は、インデックスに基づいてＳＬＥをルックアップしてＳＡを取得し、そのＳＡを用いてＯＥをタグ付けする。その結果、セキュリティチェックユニット１６０は、ＯＥのインデックスと一致するインデックスを有するＳＬＥの１つからＯＥのＳＡを取得する。ＯＥのＳＡは、ＯＥセキュリティチェックにおいて使用される。ステップ３８０において、命令操作ユニット１４０は、命令をコミット（commit）して、命令によって修正されたデータをライトバック（write back）する。
【００４０】
セキュリティチェックユニット１６０は、命令フェッチセキュリティチェックが失敗した時に、セキュリティ例外を起こす。セキュリティチェックユニット１６０は、また、ＯＥセキュリティチェック、ＳＳＩセキュリティチェックまたはリソースアクセスセキュリティチェックのうちのいずれかが失敗した時にも、セキュリティ例外を起こす。セキュリティ例外は、セキュリティ例外ユニット１８０によって処理される。セキュリティ例外の処理の詳細は、図９に示した通りである。
【００４１】
図４は、本発明の１つの実施形態に係るステップ３１０において実行される命令フェッチセキュリティチェックの詳細フローである。まず、現在の命令（current instruction, CI）および次の命令（next instruction, NI）の用語について説明する必要がある。現在の命令および次の命令は、プロセッサ１００のフェッチ順における２つの命令である。命令フェッチユニット１２０は、命令フェッチユニット１２０が現在の命令をフェッチした後すぐに次の命令をフェッチする。ステップ４１０の直前では、現在の命令が既にフェッチされていて、プロセッサ１００の実行パイプラインのいくつかの段階（例えば、ステップ３３０、３４０、３５０、３６０、３７０または３８０に対応する段階）にあり、次の命令は、今まさにフェッチされようとしているところである。本発明のいくつかの別の実施形態において、現在の命令および次の命令は、両方の命令がそれらの対応する命令フェッチセキュリティチェックを通過した後に、両方同時にフェッチされてもよい。
【００４２】
ステップ４１０において、命令フェッチアドレス発生器１１０は、次の命令のフェッチアドレスを生成する。ステップ４２０において、命令フェッチアドレス発生器１１０は、ＳＬＥユニット１７０にフェッチアドレスを提供し、ＳＬＥをルックアップして次の命令のＩＳＡを取得し、そのＩＳＡを用いて次の命令をタグ付けする。ステップ４３０において、セキュリティチェックユニット１６０は、ルックアップが失敗したかどうかをチェックする。
【００４３】
ルックアップの失敗とは、提供されたアドレスをカバーする領域を有するＳＬＥ、または、提供されたインデックスと一致するインデックスを有するＳＬＥをＳＬＥユニット１７０が見つけられなかったことを意味する。ルックアップが失敗した時は、セキュリティ違反であるため、セキュリティチェックユニット１６０は、ステップ４９０において、セキュリティ例外を起こす。ルックアップが通過した時、セキュリティチェックユニット１６０は、ステップ４４０において、次の命令がＯＥ処理ルーチン（handler routine）またはＳＳＩ処理ルーチンを実行するためにフェッチされる第１命令であるかどうかをチェックする。次の命令がＯＥ処理ルーチンまたはＳＳＩ処理ルーチンを実行するためにフェッチされる第１命令である時、これ以上セキュリティチェックを行う必要がないため、フローは、ステップ４７０に進む。
【００４４】
あるいは、次の命令がＯＥ処理ルーチンまたはＳＳＩ処理ルーチンを実行するためにフェッチされる第１命令でない時、セキュリティチェックユニット１６０は、ステップ４５０において、次の命令のＩＳＡ（ＮＩＳＡ）が現在の命令のＩＳＡ（ＣＩＳＡ）よりも安全であるかどうかをチェックする。
【００４５】
ステップ４５０において、次の命令のＩＳＡが現在の命令のＩＳＡよりも安全である時は、セキュリティ違反であるため、セキュリティチェックユニット１６０は、ステップ４９０において、セキュリティ例外を起こす。
【００４６】
ステップ４５０において、次の命令のＩＳＡが現在の命令のＩＳＡよりも安全ではない時、セキュリティチェックユニット１６０は、ステップ４７０において、グループＩＤチェックが必要であるかどうか、および、現在の命令のＩＳＡに関連するグループＩＤが次の命令のＩＳＡに関連するグループＩＤと異なるかどうかをチェックする。グループＩＤチェックが必要であるかどうかは、プロセッサ１００の設計的事項である。ステップ４７０においてチェックされた条件が真（true）である場合は、セキュリティ違反であるため、セキュリティチェックユニット１６０は、ステップ４９０において、セキュリティ例外を起こす。そうでなければ、セキュリティチェックは通過し、次の命令は、この後、現在の命令になる。次に、ステップ４８０において、命令フェッチユニット１２０は、命令フェッチアドレス発生器１１０によって前に生成されたフェッチアドレスから現在の命令をフェッチする。
【００４７】
図４に示した命令フェッチセキュリティチェックのいくつかの例について、図２および図４を参照されたい。図２の４つのＳＬＥのセキュリティのソート順がＳＬＥ０、ＳＬＥ１、ＳＬＥ２およびＳＬＥ３であり、４つのＳＬＥの中でＳＬＥ０のＳＡが最も安全であると仮定し、且つ、グループＩＤチェックが必要ないと仮定する。プロセッサ１００の実行フローが領域３から領域０にジャンプした（jump）時、この移動はセキュリティ違反であるため、セキュリティ例外が起こる。プロセッサ１００の実行フローが領域０から他の任意の領域にジャンプした時、領域０は最も安全であるため、この移動は許可される。図４の命令フェッチセキュリティチェックは、分岐命令（brunch instruction）、飛び越し命令（jump instruction）および呼び出し命令（call instruction）に対してだけでなく、順次実行（sequential execution）に対しても実行される。例えば、セキュリティ違反は、プロセッサ１００の実行フローが前のアドレス（領域２）からアドレスＡ５（領域１）に入った時に起こる。
【００４８】
図５は、本発明の１つの実施形態に係るステップ３３０において実行されるＯＥセキュリティチェックの詳細フローである。ステップ５１０において、ＯＥ発生器１５０は、承認待ちの有効なＯＥがあるかどうかをチェックする。そのようなＯＥがある時、ＯＥ発生器１５０は、ステップ５２０において、ＳＬＥユニット１７０にＯＥのインデックスを提供し、ＳＬＥをルックアップしてＯＥのＳＡを取得する。ステップ５３０において、セキュリティチェックユニット１６０は、ルックアップが失敗したかどうかをチェックする。ルックアップが失敗した時は、ＯＥに関連するＳＡがなく、セキュリティチェックが必要ないことを意味する。その結果、フローはステップ５６０に進み、ＯＥを処理する。
【００４９】
ルックアップが通過した時、セキュリティチェックユニット１６０は、ステップ５４０において、現在の命令のＩＳＡおよびＯＥのＳＡに基づいてＯＥセキュリティチェックを行う。現在の命令のＩＳＡがＯＥのＳＡよりも安全である時、ＯＥセキュリティチェックは失敗する。ステップ５４０においてセキュリティチェックが失敗した時、ＯＥ発生器１５０は、ステップ５５０において、ＯＥを延期または無視することができる。延期されたＯＥは、ステップ３３０の次のイテレーション（iteration）で再度処理されるが、無視されたＯＥは、削除され、二度と見られない。例えば、ＯＥが中断である時、その中断処理は、関連するセキュリティチェックが通過するＩＦＡＳ領域に実行フローが入るまで、延期される。別の例では、ＯＥセキュリティチェックが失敗した命令に対し、対応するトレースデータ出力（ＯＥ）が無視される。
【００５０】
ステップ５４０においてセキュリティチェックが通過した時、ＯＥ発生器１５０は、ステップ５６０において、トラップ（trap）を送信してプロセッサ１００がＯＥを処理する必要があるかどうかをチェックする。トラップが必要である時、ＯＥ発生器１５０は、ステップ５７０において、トラップを送信してプロセッサ１００がＯＥを処理する。例えば、ＯＥが中断または例外である時、トラップを送信してプロセッサ１００が実行フロー（execution flow）を所定の処理ルーチンにリダイレクトする必要がある。また、ＯＥ発生器１５０は、いくつかの外部ホストに対して適切な情報を外部に出力して、ＯＥに応答してもよい。トラップが必要ない時、ＯＥ発生器１５０は、ステップ５８０において、適切な情報を外部に出力する。例えば、ＯＥ発生器１５０は、ＯＥが命令トレースである時に、ポートを介して対応するデバッグ情報を単に出力してもよい。
【００５１】
図６は、本発明の１つの実施形態に係るステップ３５０において実行されるリソースアクセスセキュリティチェックの詳細フローである。ステップ６０５において、操作リソースアドレス発生器１３０は、現在の命令がＳＳＩであるかどうかをチェックする。現在の命令がＳＳＩである時、フローはステップ６１０に進み、ＳＳＩセキュリティチェックを行う。ＳＳＩセキュリティチェックの詳細は、図７に示した通りである。
【００５２】
現在の命令がＳＳＩでない時、操作リソースアドレス発生器１３０は、ステップ６１５において、ＳＬＥユニット１７０に操作リソースのアドレスまたはインデックスを提供し、ＳＬＥをルックアップして現在の命令に必要な操作リソースのＳＡを取得する。セキュリティチェックユニット１６０は、ステップ６２０において、ルックアップが失敗したかどうかをチェックする。ルックアップが失敗した時は、セキュリティ違反であるため、セキュリティチェックユニット１６０は、ステップ６２５において、セキュリティ例外を起こす。
【００５３】
ルックアップが通過した時、セキュリティチェックユニット１６０は、ステップ６３０において、操作リソースのＳＡ（ＤＳＡ）が現在の命令のＩＳＡよりも安全であるかどうかをチェックする。ステップ６３０においてチェックした条件が真である場合は、セキュリティ違反であるため、セキュリティチェックユニット１６０は、ステップ６２５において、セキュリティ例外を起こす。
【００５４】
ステップ６３０においてチェックした条件が偽（false）である場合、セキュリティチェックユニット１６０は、ステップ６４０において、グループＩＤチェックが必要であるかどうか、および、現在の命令のＩＳＡに関連するグループＩＤが操作リソースのＳＡに関連するグループＩＤと異なるかどうかをチェックする。ステップ６４０においてチェックした条件が真である場合は、セキュリティ違反であるため、セキュリティチェックユニット１６０は、ステップ６４５において、セキュリティ例外を起こす。そうでなければ、セキュリティチェックは通過するため、命令操作ユニット１４０は、ステップ６５０において、命令操作の操作リソースにアクセスすることができる。
【００５５】
図７は、発明の１つの実施形態に係るステップ３５０において実行されるＳＳＩセキュリティチェックの詳細フローである。ステップ７１０において、操作リソースアドレス発生器１３０は、ＳＬＥユニット１７０にＳＳＩのインデックスを提供し、ＳＬＥをルックアップしてＳＳＩのコードＳＡを取得する。ステップ７２０において、セキュリティチェックユニット１６０は、ルックアップが失敗したかどうかをチェックする。ルックアップが失敗した時は、セキュリティ違反であるため、セキュリティチェックユニット１６０は、ステップ７５０において、セキュリティ例外を起こす。
【００５６】
ルックアップが通過した時、セキュリティチェックユニット１６０は、ステップ７３０において、ＳＳＩセキュリティチェックを行う。ＳＳＩ命令のＩＳＡがＳＳＩ命令のコードＳＡよりも安全でない時、ＳＳＩセキュリティチェックは失敗する。ＳＳＩセキュリティチェックが失敗した時、セキュリティチェックユニット１６０は、ステップ７５０において、セキュリティ例外を起こす。ＳＳＩセキュリティチェックが通過した時、セキュリティチェックユニット１６０は、ステップ７４０において、トラップを送信してプロセッサ１００がＳＳＩを処理する。
【００５７】
図８は、発明の１つの実施形態に係るステップ３７０において実行されるＯＥセキュリティチェックの詳細フローである。ステップ８０５において、ＯＥ発生器１５０は、現在の命令の実行がＯＥをトリガーしたかどうかをチェックする。そのようなＯＥが存在する時、ＯＥ発生器１５０は、ステップ８１０において、ＳＬＥユニット１７０にＯＥのインデックスを提供し、ＳＬＥをルックアップしてＯＥのＳＡを取得する。ステップ８１５において、セキュリティチェックユニット１６０は、ルックアップが失敗したかどうかをチェックする。ルックアップが失敗した時は、ＯＥに関連するＳＡがなく、セキュリティチェックが必要ないことを意味する。その結果、フローはステップ８４０に進み、ＯＥを処理する。
【００５８】
ルックアップが通過した時、セキュリティチェックユニット１６０は、ステップ８２０において、ＯＥセキュリティチェックを行う。現在の命令のＩＳＡがＯＥのＳＡよりも安全である時、ＯＥセキュリティチェックは失敗する。ステップ８２０においてセキュリティチェックが失敗した時、セキュリティチェックユニット１６０は、ＯＥが致命的例外（fatal exception）であるかどうかをチェックする。致命的例外は、現在の命令が適切に終了されず、プロセッサ１００の状態または一貫性を危険にさらした時にトリガーされる。ＯＥが致命的例外である時、セキュリティチェックユニット１６０は、ステップ８３０において、セキュリティ例外を起こす。そうでなければ、ＯＥ発生器１５０は、ステップ８３５において、ＯＥを無視することができる。
【００５９】
ステップ８２０においてセキュリティチェックが通過した時、ＯＥ発生器１５０は、ステップ８４０において、トラップを送信してプロセッサ１００がＯＥを処理する必要があるかどうかをチェックする。トラップが必要である時、ＯＥ発生器１５０は、ステップ８４５において、トラップを送信してプロセッサ１００がＯＥを処理する。また、ＯＥ発生器１５０は、いくつかの外部ホストに対して適切な情報を外部に出力して、ＯＥに応答してもよい。トラップが必要ない時、図３に示したメインフローに戻る。また、ＯＥ発生器１５０は、ステップ８５０において、適切な情報を外部に出力してもよい。
【００６０】
図９は、発明の１つの実施形態に係るセキュリティ例外が起きた時にセキュリティ例外ユニット１８０によって実行されるセキュリティ例外処理の詳細フローである。ステップ９１０において、セキュリティ例外ユニット１８０は、指示信号を出力する必要があるかどうかをチェックする。セキュリティ例外に応答して指示信号を出力するかどうかは、予め設定してもよい。出力が必要な時、セキュリティ例外ユニット１８０は、ステップ９２０において指示信号をアサート（asset）するため、セキュリティ例外は、外部装置によって処理される。そうでなければ、フローはステップ９３０に進む。
【００６１】
ステップ９３０において、セキュリティ例外ユニット１８０は、プロセッサ１００の実行を停止する必要があるかどうかをチェックする。実行を停止する必要がない時、セキュリティ例外ユニット１８０は、ステップ９４０において、トラップを送信してプロセッサ１００がセキュリティ例外（security exception, SE）を処理する。セキュリティ例外の処理ルーチンが最も安全な領域に存在することによって、ＩＦＡＳとＬＳＡＳは、同じオリジナル画像（original view）を維持することができる。あるいは、セキュリティ例外の処理ルーチンは、プロセッサ１００にセキュリティ例外がトラップされた時にプロセッサ１００によってのみ見ることのできるＩＦＡＳ／ＬＳＡＳにおいて存在してもよい。実行を停止する必要がある時、セキュリティ例外ユニット１８０は、ステップ９５０において、リセット信号をアサートすることによって、プロセッサ１００をリセットまたは停止してもよく、あるいは、プロセッサ１００へのクロック信号の入力を停止する、または、プロセッサ１００のパイプライン（pipeline）をフラッシュ（flush）してプロセッサ１００の命令フェッチを停止することによって、プロセッサ１００を完全に停止してもよい。
【００６２】
以上のように、本発明は、安全保護方法、および命令、操作リソースおよびＯＥに対してセキュリティチェックを行うことによってコンピューティングセキュリティを実施し、ソフトウェア実行に確実なセキュリティ境界を提供するプロセッサを提供する。
【００６３】
以上のごとく、この発明を実施形態により開示したが、もとより、この発明を限定するためのものではなく、当業者であれば容易に理解できるように、この発明の技術思想の範囲内において、適当な変更ならびに修正が当然なされうるものであるから、その特許権保護の範囲は、特許請求の範囲および、それと均等な領域を基準として定めなければならない。
【産業上の利用可能性】
【００６４】
本発明は、プロセッサおよびコンピュータシステム等のコンピューティングセキュリティ分野に応用することができる。
【符号の説明】
【００６５】
１００  プロセッサ
１１０  命令フェッチアドレス発生器
１２０  命令フェッチユニット
１３０  操作リソースアドレス発生器
１４０  命令操作ユニット
１５０  操作イベント発生器
１６０  セキュリティチェックユニット
１７０  セキュリティルックアップ項目ユニット
１８０  セキュリティ例外ユニット
２００  アドレス空間
３１０〜９５０  ステップ
Ａ０〜Ａ７  アドレス
ＩＳＡ  命令セキュリティ属性
ＳＡ  セキュリティ属性
ＳＬＥ０〜ＳＬＥ３  セキュリティルックアップ項目
【図１】
0005841199.tif 000002
【図２】
0005841199.tif 000003
【図３】
0005841199.tif 000004
【図４】
0005841199.tif 000005
【図５】
0005841199.tif 000006
【図６】
0005841199.tif 000007
【図７】
0005841199.tif 000008
【図８】
0005841199.tif 000009
【図９】
0005841199.tif 000010