(57)【要約】  命令の誤り検査のシステムおよび方法は、1つまたは複数の命令を有する命令パケットを作成し、命令パケットのパリティがあらかじめ指定されたパリティと一致するかどうかを判定し、命令パケットのパリティがあらかじめ指定されたパリティと一致しない場合、命令パケットのビットを使用して、あらかじめ指定されたパリティと一致するように命令パケットのパリティを変更するためのアセンブラを含む。あらかじめ指定されたパリティを有する命令パケットはメモリに記憶され、最終的には、実行のためにプロセッサによって取り出され得る。メモリから取り出された命令パケット内に誤りがある場合、誤りは、命令パケットのパリティをあらかじめ指定されたパリティと比較することに基づいて検出される。
2019519858.tif 000002
【特許請求の範囲】
【請求項１】
命令の誤り検査の方法であって、
1つまたは複数の命令を有する命令パケットを作成するステップと、
前記命令パケットのパリティがあらかじめ指定されたパリティと一致するかどうかを判定するステップと、
前記命令パケットの前記パリティが前記あらかじめ指定されたパリティと一致しない場合、前記命令パケットのビットを使用して、前記あらかじめ指定されたパリティと一致するように前記命令パケットのパリティを変更するステップと、
前記あらかじめ指定されたパリティを有する前記命令パケットをメモリに記憶するステップと
を含む方法。
【請求項２】
前記命令パケットの前記パリティを前記あらかじめ指定されたパリティと比較することに基づいて、前記メモリから取り出された前記命令パケット内に誤りがあるかどうかを判定するステップをさらに含む、請求項1に記載の方法。
【請求項３】
前記命令パケット内に誤りがあると判定するステップと、例外を生成するステップとをさらに含む、請求項2に記載の方法。
【請求項４】
前記命令パケット内に誤りがあると判定するステップと、デバッガにおける解析用に前記誤りを記録するステップとをさらに含む、請求項2に記載の方法。
【請求項５】
プロセッサにおける前記命令パケットの実行中に、前記命令パケット内に誤りがあると判定するステップをさらに含む、請求項2に記載の方法。
【請求項６】
前記命令パケットが、超長命令語(VLIW)パケットである、請求項1に記載の方法。
【請求項７】
前記VLIWパケットが最大可能数未満の命令を含むと判定するステップと、前記VLIWパケットにノーオペレーション(NOP)フィールドを挿入するステップと、前記NOPフィールドのビットを前記命令パケットの前記ビットとして使用して、前記命令パケットのパリティを変更するステップとをさらに含む、請求項6に記載の方法。
【請求項８】
前記ビットが、前記VLIWパケットのフィールドに属し、前記フィールドが、前記VLIWパケットの命令に関する情報を伝達するために使用される、請求項1に記載の方法。
【請求項９】
前記ビットが、前記命令パケットの未使用ビットである、請求項1に記載の方法。
【請求項１０】
前記あらかじめ指定されたパリティが、奇数パリティまたは偶数パリティのうちの1つである、請求項1に記載の方法。
【請求項１１】
装置であって、
1つまたは複数の命令を有する命令パケットを作成し、
前記命令パケットのパリティがあらかじめ指定されたパリティと一致するかどうかを判定し、
前記命令パケットの前記パリティが前記あらかじめ指定されたパリティと一致しない場合、前記命令パケットのビットを使用して、前記あらかじめ指定されたパリティと一致するように前記命令パケットのパリティを変更する
ように構成されたプロセッサと、
前記あらかじめ指定されたパリティを有する前記命令パケットを記憶するように構成されたメモリと
を備える装置。
【請求項１２】
前記プロセッサのパリティ検査ブロックが、前記命令パケットの前記パリティと前記あらかじめ指定されたパリティとの比較に基づいて、前記メモリから取り出された前記命令パケット内に誤りがあるかどうかを判定するように構成される、請求項11に記載の装置。
【請求項１３】
前記プロセッサが、誤りが検出された場合に例外を生成するようにさらに構成される、請求項12に記載の装置。
【請求項１４】
前記プロセッサが、誤りが検出された場合にデバッガにおける将来の解析用に前記命令パケットを記録するようにさらに構成される、請求項12に記載の装置。
【請求項１５】
前記命令パケットが、超長命令語(VLIW)パケットである、請求項11に記載の装置。
【請求項１６】
前記アセンブラが、前記VLIWパケットが最大可能数未満の命令を含むと判定し、前記VLIWパケットにノーオペレーション(NOP)フィールドを挿入するように構成され、前記NOPフィールドのビットが、前記あらかじめ指定されたパリティと一致させるために前記命令パケットの前記ビットとして使用される、請求項15に記載の装置。
【請求項１７】
前記パリティビットが、前記VLIWパケットのフィールドに属し、前記フィールドが、前記VLIWパケットの命令に関する情報を伝達するために使用される、請求項11に記載の装置。
【請求項１８】
前記パリティビットが、前記命令パケットの未使用ビットである、請求項11に記載の装置。
【請求項１９】
前記あらかじめ指定されたパリティが、奇数パリティまたは偶数パリティのうちの1つである、請求項11に記載の装置。
【請求項２０】
セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、携帯情報端末(PDA)、固定ロケーションデータユニット、およびコンピュータからなるグループから選択されるデバイスに組み込まれる、請求項11に記載の装置。
【請求項２１】
1つまたは複数の命令を有する命令パケットを作成するための手段と、
前記命令パケットのパリティがあらかじめ指定されたパリティと一致するかどうかを判定するための手段と、
前記命令パケットの前記パリティが前記あらかじめ指定されたパリティと一致しない場合、前記命令パケットのビットを使用して、前記あらかじめ指定されたパリティと一致するように前記命令パケットのパリティを変更するための手段と、
前記あらかじめ指定されたパリティを有する前記命令パケットを記憶するための手段と
を備える装置。
【請求項２２】
前記命令パケットの前記パリティと前記あらかじめ指定されたパリティとの比較に基づいて、前記記憶するための手段から取り出された前記命令パケット内に誤りがあるかどうかを判定するための手段をさらに備える、請求項21に記載の装置。
【請求項２３】
誤りが検出された場合に例外を生成するための手段をさらに備える、請求項22に記載の装置。
【請求項２４】
前記あらかじめ指定されたパリティが、奇数パリティまたは偶数パリティのうちの1つである、請求項21に記載の装置。
【請求項２５】
プロセッサによって実行されると、命令の誤り検査の方法を前記プロセッサに実行させるコードを記憶した非一時的コンピュータ可読記憶媒体であって、
1つまたは複数の命令を有する命令パケットを作成するためのコードと、
前記命令パケットのパリティがあらかじめ指定されたパリティと一致するかどうかを判定するためのコードと、
前記命令パケットの前記パリティが前記あらかじめ指定されたパリティと一致しない場合、前記命令パケットのビットを使用して、前記あらかじめ指定されたパリティと一致するように前記命令パケットのパリティを変更するためのコードと、
前記あらかじめ指定されたパリティを有する前記命令パケットをメモリに記憶するためのコードと
を記憶した非一時的コンピュータ可読記憶媒体。
【請求項２６】
前記命令パケットの前記パリティを前記あらかじめ指定されたパリティと比較することに基づいて、前記メモリから取り出された前記命令パケット内に誤りがあるかどうかを判定するためのコードをさらに記憶した、請求項25に記載の非一時的コンピュータ可読記憶媒体。
【請求項２７】
前記命令パケット内に誤りがあると判定するためのコードと、例外を生成するためのコードとをさらに記憶した、請求項26に記載の非一時的コンピュータ可読記憶媒体。
【請求項２８】
前記命令パケット内に誤りがあると判定するためのコードと、デバッガにおける解析用に前記誤りを記録するためのコードとをさらに記憶した、請求項26に記載の非一時的コンピュータ可読記憶媒体。
【請求項２９】
前記ビットが、前記命令パケットの未使用ビットである、請求項25に記載の非一時的コンピュータ可読記憶媒体。
【請求項３０】
前記あらかじめ指定されたパリティが、奇数パリティまたは偶数パリティのうちの1つである、請求項25に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
開示する態様は、処理システムにおける命令処理に関する。より詳細には、例示的な態様は、命令パケット内の誤りを検出するためのパリティビットの使用に関する。
【背景技術】
【０００２】
プロセッサの従来のアーキテクチャでは、プロセッサは、処理サイクルにおいて、命令キャッシュまたはメインメモリなどの記憶ロケーションから1つまたは複数の命令を受け取ることができる。各処理サイクルでは、プロセッサは、1つまたは複数の実行ユニットにおいて1つまたは複数の命令を並列して実行することができる。ビット反転またはビット誤りは、命令の記憶、転送、実行などの命令のライフサイクルに関与する段階または構成要素のいずれかにおいて、1つまたは複数の命令のうちのいずれの命令にも生じる可能性がある。
【０００３】
たとえば、キャッシュまたはメインメモリなどの記憶ロケーションは、誤りを起こしやすいことがある、スタティックランダムアクセスメモリ(SRAM)、ダブルデータレート(DDR)メモリなどの技術を使用して実装され得る。ビット反転は、命令を記憶ロケーションからプロセッサの実行ユニットに転送することに関与する様々なネットワークバスおよびワイヤにもたらされる可能性もある。さらに、実行ユニットは、命令に基づいて動作する間にロジック誤り一因となることもある。
【０００４】
命令のライフサイクルの各段階において誤り検査を追加することは、費用がかかり、場合によっては、実行不可能であることがある。たとえば、パリティ情報を命令キャッシュの各キャッシュラインまたはメインメモリ/DDR内の各記憶ロケーションに追加することは、費用がかかることがあり、記憶ロケーション内の誤りを検出する(場合によっては、訂正する)ことができる場合でも、ビット反転がダウンストリームで命令の処理にもたらされることがある。さらに、命令をトランスポートするバスの各々に対して、または命令に基づいて動作する各実行ユニットに対して、誤り検査機構を追加することが可能ではないことがある。したがって、誤りの原因を突き止めることは困難であることがあり、誤りが検査されていないままである場合、誤りは様々な例外またはシステム障害を引き起こす可能性がある。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
したがって、命令のライフサイクルの任意の段階に、および任意の構成要素記憶ロケーションまたは命令の記憶ロケーション間でのトランスポートにもたらされる誤りに対するエンドツーエンドの解決策を提供することができる、効果的な誤り検査機構に関して対応する必要性がある。
【課題を解決するための手段】
【０００６】
本発明の例示的な態様は、命令の誤り検査のためのシステムおよび方法を対象とする。アセンブラは、1つまたは複数の命令を有する命令パケットを作成し、命令パケットのパリティがあらかじめ指定されたパリティと一致するかどうかを判定し、命令パケットのパリティがあらかじめ指定されたパリティと一致しない場合、命令パケットのビットを使用して、あらかじめ指定されたパリティと一致するように命令パケットのパリティを変更する。あらかじめ指定されたパリティを有する命令パケットはメモリに記憶され、最終的には、実行のためにプロセッサによって取り出され得る。メモリから取り出された命令パケット内に誤りがある場合、誤りは、命令パケットのパリティをあらかじめ指定されたパリティと比較することに基づいて検出される。このようにして、エンドツーエンドの誤り検査能力が命令パケットに提供される。
【０００７】
したがって、例示的な態様は、命令の誤り検査の方法であって、1つまたは複数の命令を有する命令パケットを作成するステップと、命令パケットのパリティがあらかじめ指定されたパリティと一致するかどうかを判定するステップと、命令パケットのパリティがあらかじめ指定されたパリティと一致しない場合、命令パケットのビットを使用して、あらかじめ指定されたパリティと一致するように命令パケットのパリティを変更するステップとを含む方法を対象とする。あらかじめ指定されたパリティを有する命令パケットはメモリに記憶され、メモリから取り出された命令パケット内に誤りがある場合、誤りは、命令パケットのパリティをあらかじめ指定されたパリティと比較することに基づいて判定される。
【０００８】
別の例示的な態様は、1つまたは複数の命令を有する命令パケットを作成し、命令パケットのパリティがあらかじめ指定されたパリティと一致するかどうかを判定し、命令パケットのパリティがあらかじめ指定されたパリティと一致しない場合、命令パケットのビットを使用して、あらかじめ指定されたパリティと一致するように命令パケットのパリティを変更するように構成されたプロセッサを備える装置を対象とする。メモリは、あらかじめ指定されたパリティを有する命令パケットを記憶するように構成され、メモリから取り出された命令パケット内に誤りがある場合、誤りは、プロセッサのパリティ検査ブロックにおいて命令パケットのパリティをあらかじめ指定されたパリティと比較することに基づいて判定される。
【０００９】
また別の例示的な態様は、1つまたは複数の命令を有する命令パケットを作成するための手段と、命令パケットのパリティがあらかじめ指定されたパリティと一致するかどうかを判定するための手段と、命令パケットのパリティがあらかじめ指定されたパリティと一致しない場合、命令パケットのビットを使用して、あらかじめ指定されたパリティと一致するように命令パケットのパリティを変更するための手段とを備える装置を対象とする。装置は、あらかじめ指定されたパリティを有する命令パケットを記憶するための手段と、メモリから取り出された命令パケット内に誤りがある場合、命令パケットのパリティとあらかじめ指定されたパリティとの比較に基づいて、誤りを判定するための手段とをさらに備える。
【００１０】
また別の例示的な態様は、プロセッサによって実行されると、命令の誤り検査の方法をプロセッサに実行させるコードを備える非一時的コンピュータ可読記憶媒体であって、1つまたは複数の命令を有する命令パケットを作成するためのコードと、命令パケットのパリティがあらかじめ指定されたパリティと一致するかどうかを判定するためのコードと、命令パケットのパリティがあらかじめ指定されたパリティと一致しない場合、命令パケットのビットを使用して、あらかじめ指定されたパリティと一致するように命令パケットのパリティを変更するためのコードと、あらかじめ指定されたパリティを有する命令パケットをメモリに記憶するためのコードとを備える非一時的コンピュータ可読記憶媒体を対象とする。非一時的コンピュータ可読記憶媒体は、命令パケットのパリティをあらかじめ指定されたパリティと比較することに基づいて、メモリから取り出された命令パケット内に誤りがあるかどうかを判定するためのコードをさらに備える。
【００１１】
添付の図面は、本発明の態様の説明を助けるために提示され、態様の限定ではなく、態様の例示のためのみに提供される。
【図面の簡単な説明】
【００１２】
【図１】本開示の一態様による処理システムを示す図である。
【図２】本開示の態様による例示的な命令パケットを示す図である。
【図３】本開示の一態様による命令の誤り訂正の方法を示す図である。
【図４】本開示の一態様が有利に用いられ得る例示的なコンピューティングデバイスを示す図である。
【発明を実施するための形態】
【００１３】
本発明の態様は、本発明の特定の態様を対象とする以下の説明および関連する図面において開示される。本発明の範囲から逸脱することなく、代替態様が考案され得る。加えて、本発明の関連する詳細を不明瞭にしないように、本発明のよく知られている要素は、詳細に説明されないか、または省略される。
【００１４】
「例示的」という語は、本明細書では「例、事例、または例示としての役割を果たすこと」を意味するために使用される。「例示的」として本明細書で説明するいずれの態様も、必ずしも他の態様よりも好ましいか、または有利であると解釈されるべきではない。同様に、「本発明の態様」という用語は、本発明のすべての態様が、説明する特徴、利点または動作モードを含むことを必要としない。
【００１５】
本明細書で使用する用語は、特定の態様のみについて説明することを目的とし、本発明の態様を限定するものではない。本明細書で使用する単数形「a」、「an」および「the」は、文脈が別段に明確に示さない限り、複数形も含むものとする。「備える(comprises)」、「備えている(comprising)」、「含む(includes)」および/または「含んでいる(including)」という用語は、本明細書で使用するとき、述べられた特徴、整数、ステップ、動作、要素、および/または構成要素の存在を明示するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、および/またはそれらのグループの存在または追加を排除しないことをさらに理解されたい。
【００１６】
さらに、多くの態様について、たとえば、コンピューティングデバイスの要素によって実行されるべきアクションのシーケンスに関して説明する。本明細書で説明する様々なアクションは、特定の回路(たとえば、特定用途向け集積回路(ASIC))によって、1つもしくは複数のプロセッサによって実行されるプログラム命令によって、または両方の組合せによって実行され得ることが認識されよう。加えて、本明細書で説明するこれらのアクションのシーケンスは、実行されると、関連するプロセッサに本明細書で説明する機能を実行させるコンピュータ命令の対応するセットを記憶した、任意の形態のコンピュータ可読記憶媒体内で完全に具現化されるものと見なされ得る。したがって、本発明の様々な態様は、いくつかの異なる形態で具現化されてもよく、それらのすべてが、請求する主題の範囲内に入ることが企図されている。加えて、本明細書で説明する態様の各々について、任意のそのような態様の対応する形態は、たとえば、説明するアクションを実行する「ように構成されたロジック」として本明細書で説明される場合がある。
【００１７】
本開示の例示的な態様では、命令の誤り検査のための機構は、命令自体に組み込まれる場合がある(ただし、従来の命令は、命令に組み込まれるまたは命令内で符号化されるパリティビットなどの誤り検査能力を有しないことを認識されたい)。たとえば、1つまたは複数の命令のグループまたはブロックを含む命令パケットを考慮すると、命令パケット内にいくつかの未使用ビットがある可能性が高い。未使用ビットは、アーキテクチャ上の予約済みビット、命令のブロックによって使い果たされない命令語またはキャッシュラインの部分内の未使用ビット、ハードウェア/実行ユニットによって無視される場合があるビットパターンなどであってもよい。命令パケット内の未使用ビットのうちの1つまたは複数は、例示的な態様における誤り検出の目的で使用され得る。たとえば、未使用ビットは、(たとえば、アセンブラによって)パリティビットとして再利用される、すなわち、あらかじめ指定されたパリティ、たとえば、奇数または偶数と一致するように命令パケットのパリティを構成するために変更される場合がある。次いで、命令パケットは、メモリ(たとえば、DDR、フラッシュメモリ、ランダムアクセスメモリ(RAM)などのメインメモリ)に記憶され、続いて、命令キャッシュに供給されてもよく、たとえば、その命令キャッシュから、命令パケットが実行のためにプロセッサによって取り出されてもよい。上記のプロセスにおける任意の時点で(たとえば、ハードウェアによって検出されたときに)命令パケットのパリティがあらかじめ指定されたパリティと一致しない場合、命令パケットが誤りを有すると判定され得る。
【００１８】
上記の方法で未使用ビットから作成されたパリティに基づいて、命令パケット内に誤りが検出された(すなわち、命令パケットのパリティがあらかじめ指定されたパリティと一致しない)場合、様々な一連のアクションが可能である。場合によっては、命令パケットは、誤りを有するものとしてマークされ、将来の解析または復元のために記録され得る。
【００１９】
場合によっては、命令パケットが未使用ビットを有しない場合でも、例示的な態様に従ってパリティビットを命令パケットに組み込むことが依然として可能であり得る。たとえば、命令パケットは、当技術分野で知られている超長命令語(VLIW)の形態の命令を含んでもよく、ただし、2つ以上の命令がVLIWパケットとして一緒に与えられる。VLIWパケット内の2つ以上の命令は、並列して実行されるように設計される。VLIWパケット内に1つまたは複数の未使用ビットがある場合、1つまたは複数の未使用ビットのうちの未使用ビットは、VLIWパケットのパリティをあらかじめ指定されたパリティまたは予想されるパリティ(たとえば、奇数または偶数)に変更するために使用され得る。しかしながら、未使用ビットがない場合、ただし、単一のVLIWパケットにグループ化されることが可能である最大数未満の命令がある場合、ノーオペレーション(NOP)フィールド(すなわち、実行されないダミー命令)がVLIWパケットに追加され得、NOPフィールドのビットがパリティビットとして使用され得る。たとえば、VLIWパケットの終わりを指定することができるビットパターンなどの、他のアーキテクチャ上の予約済みフィールドは、未使用ビットフィールドがすぐに利用可能ではない場合にパリティビットを作成するためにも使用され得る。
【００２０】
次に、上記のおよび他の例示的な態様について、以下の図を参照しながら説明する。VLIWパケットの例は、いくつかの例示的な態様を説明するために使用されるが、本開示の態様は、1つまたは複数の命令を含む命令パケットのための任意の他の命令フォーマットに容易に拡張され得ることが理解されよう。
【００２１】
次に図1を参照すると、例示的な処理システム100の概略表現が示されている。図示のように、処理システム100は、本開示の態様に従って命令パケット内でパリティを作成するために使用されるアセンブラ152を備えることができるプロセッサ150を含むことができる。アセンブラ152は、ソフトウェアにおいて実装され、プロセッサ110などのプロセッサによって実行されるべき命令をアセンブルするために使用され得る。プロセッサ150およびプロセッサ110は別々に示されているが、これは例示のためであるにすぎず、様々な実装形態では、プロセッサ150および110は、アセンブラを実行するだけでなく、アセンブラによって生成された命令のダウンストリーム実行のための実行ユニットを含む、同じプロセッサまたは処理ユニットであってもよい。
【００２２】
図示のように、アセンブラ152によって生成された命令および/または命令パケットは、(参照番号154によって概略的に識別される)中間ネットワーク/記憶媒体を通過し、メインメモリ(たとえば、DDR)、フラッシュメモリ、RAMなどであり得るメモリ156に記憶され得る。メモリ156から、命令は(たとえば、当技術分野で知られている様々なデマンドベースのフェッチ、プリフェッチ、またはそれらの組合せに基づいて)命令キャッシュ108に与えられ得る。
【００２３】
プロセッサ110は、命令キャッシュ108に結合されることが示されている。プロセッサ110は、命令キャッシュ108から命令を受け取り、たとえば、実行パイプライン112を使用して命令を実行するように構成され得る。当技術分野で知られているデータキャッシュ、レベル2(L2)キャッシュなどの1つまたは複数の他のキャッシュも処理システム100内に存在し得るが、簡潔にするために、これらも示されていない。
【００２４】
プロセッサ110内には、実行パイプライン112が示されており、実行パイプライン112は、命令フェッチ(IF:instruction fetch)段階、命令デコード(ID:instruction decode)段階、1つまたは複数の実行(EX1、EX2など)段階、およびライトバック(WB:write back)段階として代表的に示される、1つまたは複数のパイプライン段階を含み得る。当業者は、当技術分野で知られている、実行パイプライン112に対する多数の修正および追加を認識されよう。
【００２５】
一態様では、命令キャッシュ108は、いくつかのキャッシュラインを含むことができ、そのうちのキャッシュライン102が代表的に示されている。キャッシュライン102は、1つもしくは複数の命令、または1つもしくは複数の命令によって形成された命令パケットを含むことができる。2つ以上の命令もしくは命令パケット、またはそれらの組合せが単一のキャッシュライン内に含まれ得ること、さらに、命令または命令パケットが2つ以上のキャッシュラインにまたがり得ることが理解されよう。しかしながら、開示を簡潔にするために、1つまたは複数のキャッシュラインにおける命令および/または命令パケットの様々な構成は網羅的に説明されておらず、開示する態様は、1つまたは複数のキャッシュラインにおける命令および/または命令パケットの様々な可能な構成に適用可能であることに留意されたい。図示のように、キャッシュライン102は、VLIW命令とすることができる命令102a〜dのセットを含む。命令102a〜dは、それぞれレーンA〜Dを占めることができ、ただし、実行パイプライン112は、一度に1つの命令を実行するか、またはVLIW命令の場合は、2つ以上のレーンA〜Dにおいて同時にまたは並列して2つ以上の命令に作用するように構成され得る。命令102a〜dは、図1ではバス104としてまとめて表される様々な相互接続およびバスを介して、実行パイプライン112に与えられ得る。
【００２６】
諒解され得るように、ビット誤りまたはビット反転は、命令102a〜dのうちのいずれの命令にも生じる可能性があり、ただし、これらの誤りは、それらの記憶ロケーションにおいて、たとえば、命令キャッシュ108において、それらのトランスポートにおいて、たとえば、バス104上で、または実行パイプライン112におけるそれらの実行中に生じる場合がある。命令102a〜dを含むVLIWパケットの共同パリティは、あらかじめ指定されたパリティ(たとえば、奇数パリティまたは偶数パリティ)と一致することが期待される。例示的な態様では、命令102a〜dを含むVLIWパケットの共同パリティがあらかじめ指定されたパリティと最初に一致しなかった場合、VLIWパケットのパリティは、未使用ビットを使用することによって、あらかじめ指定されたパリティ(たとえば、奇数パリティまたは偶数パリティ)と一致するように(たとえば、アセンブラ152または他のソフトウェアによって)変更されている場合がある。このようにしてあらかじめ指定されたパリティと一致するようにVLIWパケットのパリティを変更するために使用され得るそのような未使用ビットの様々な例は、図2を参照しながら説明される。
【００２７】
図1では、パリティ検査114として指定されたブロックは、VLIWパケットのパリティがあらかじめ指定されたパリティから外れるかどうかを検査するために提供され得る。図示のように、VLIWパケットの命令102a〜dは、様々な実装形態のために、実行ユニットの段階のうちのいずれか1つからパリティ検査114に供給され得る。VLIWパケットのパリティがあらかじめ指定されたパリティから外れる場合、パリティ検査114は誤りをトリガし得る。当業者によって理解され得るように、パリティにシングルビットを使用すると、シングルビット誤りが検出され得る。したがって、パリティ検査114は、たとえば、実行パイプライン112から供給された命令のパリティに基づいてシングルビット誤りを検出するためのロジックを含み得る。命令102a〜dなどの命令のライフサイクルにおける任意の時点で、パリティおよび(もしあれば)誤りを検査するために、同様のパリティ検査ロジックが処理システム100の任意の他の構成要素または段階に追加され得る。本明細書では詳細に説明しないが、シングルビット誤りに対する誤り検査の上記の態様を、より複雑な誤り検出および、場合によっては、(たとえば、誤り訂正コード(ECC)を実装することによって)2つ以上のビット内の誤りを検出し、場合によっては、誤りを訂正することもできる誤り訂正に拡張することが可能である。そのような複雑な誤り検出および訂正技法は、複数の未使用ビットが命令パケット内に見出され、たとえば、ECCビットを作成するためにアセンブラ152によって使用される場合に適用可能であり得る。
【００２８】
次に図2を参照すると、参照番号200によって指定された命令パケットは、キャッシュライン102の命令102a〜dを含むことが示されている。命令パケット200は、いくつかの例では、上記で説明したようにVLIWパケットとすることができる。図2は、命令パケット200のビット(たとえば、パリティビットとして再利用される未使用ビットまたは予約済みビット)がパリティに使用され得る例を示す。命令パケット200の場合、アセンブラ152は、命令パケット200のパリティがすでにあらかじめ指定されたパリティ(たとえば、偶数または奇数)であるかどうかを判定し、そうである場合、たとえば、パリティに対するさらなる修正なしに、命令パケット200をメモリ156に記憶し得る。命令パケット200のパリティがあらかじめ指定されたパリティではない場合、アセンブラ152は、命令パケット200のビット(たとえば、パリティを指定するために再利用される未使用ビットまたは予約済みフィールド)をパリティビットとして使用して、あらかじめ指定されたパリティと一致するように命令パケット200のパリティを構成し、予想されるパリティを有する命令パケット200をメモリ156に記憶し得る。ダウンストリームで(たとえば、パリティ検査114において)誤り正当性について命令パケット200が試験される任意の時点で、命令パケット200のパリティがあらかじめ指定されたパリティと一致しない場合、命令パケット200は誤りを有すると判定される。
【００２９】
このようにして誤りが判定された場合、その誤りは将来の解析のためにログされ得るか、または例外が生成され得る。そのような誤り判定に続く是正アクションは本開示では詳細に説明されず、任意の適切なアクションが追求され得る。パリティに使用される命令パケット200の未使用ビットは(使用されないので)いずれにせよ無視される場合があり、したがって、命令パケット200のパリティを構成するための、これらの未使用ビットに対するいかなる修正も、命令パケット200の命令102a〜dの通常の動作/実行に影響を及ぼさないことが諒解されよう。
【００３０】
次に、パリティに使用され得る命令パケット200のビットのいくつかの例について説明する。一例では、命令のうちの1つ、たとえば、命令102aは、1つまたは複数の未使用ビットを有し得る。たとえば、命令102aは、命令102aが利用可能な命令空間において利用可能なすべてのビット(たとえば、16ビットまたは32ビット)を必要としないエンコーディングを有し得る。ビット202は、命令102a内のそのような未使用ビットであり得る。アセンブラ152は、命令パケット200のパリティがまだあらかじめ指定されたパリティと一致していない場合、命令パケット200のパリティをあらかじめ指定されたパリティと一致させるように未使用ビットを修正し得る。
【００３１】
別の例では、アセンブラ152は、パリティビットとして使用するために予約済みフィールドを利用することが可能であり得る。この点について、命令の未使用エンコーディングは、パリティビットとして使用するために再利用され得る。たとえば、3つの種類の命令、たとえば、論理右シフト、算術右シフト、および左シフトなどの3つの種類のシフト命令がある場合、これらの3つの種類は、3つの異なるエンコーディング(たとえば、シフト命令の演算コードにおける2ビットフィールドの「00」、「01」、および「10」)に基づいて区別され得るが、これらのエンコーディングのうちの1つのみが2ビットフィールドの左または最上位ビット位置において「1」を有し、このことは、最上位ビット位置が「1」であるとき、パリティで使用するために2ビットフィールドの右または最下位ビット位置が再利用され得ることを意味する。
【００３２】
別の例では、アセンブラは、命令パケットを形成するために選択された命令のいずれも、パリティに使用され得る未使用ビットを有しない場合があることを了解し得る。そのような場合、アセンブラは、命令のうちの1つとしてノーオペレーション(NOP)を導入し得る。NOPは、実行されないダミー命令であり得る。図示のように、命令102cは、一例ではNOP204として作成されてもよく、命令102cのすべてのビットは基本的に使用されない。したがって、この場合、命令102cのビットのいずれもパリティに使用され得る。
【００３３】
いくつかの例では、たとえば、VLIWパケットの命令の、命令のサイズ、命令の数、命令境界などを指定するためのVLIWパケットフォーマットに固有のエンコーディングは、パリティビットを作成するためにアセンブラ152によって使用され得る。図2のVLIWパケット200aとして指定された命令パケット200の表現を考慮すると、命令102a用のフィールドには、命令に関する情報を含むプレフィックスがあってもよく、その後に、たとえば、命令102b〜d用のフィールド内の命令1〜3が続く。プレフィックスは、VLIWパケット200a内の後続の命令の数、命令1〜3の対応する命令長などを伝達する情報を含み得るが、命令102aのすべての利用可能なビットがこの情報を伝達することを必要としない場合がある。したがって、アセンブラ152は、VLIWパケット200aのパリティ指定のために、プレフィックスの1つまたは複数のビットを使用することが可能であり得る。
【００３４】
VLIWパケット200bとしての命令パケット200の表現では、異なるスタイルのエンコーディングが示されており、ここにおいて、対応する命令102a〜dのフィールド204a〜dは、VLIWパケット200bが進み続けるかどうか(フィールド204a〜cの「K」)、すなわち、VLIWパケット200bの命令が対応する命令の後に続くかどうか、またはVLIWパケット200bが止まるかどうか(フィールド204dの「S」)を示すために使用される。これらのフィールド204a〜dの各々について2つのビットが利用可能である場合、ただし、上記の例では、一方のビットは、2つの可能性(たとえば、「K」または「S」)を区別するのに十分であることがあり、フィールド204a〜dのうちの1つまたは複数の他方のビットは、VLIWパケット200bのパリティ指定のためにアセンブラ152によって使用されることがある。
【００３５】
したがって、アセンブラ152は、命令パケット200のパリティを指定するために未使用ビットからパリティビットを作成するかまたは命令パケット200のビットを再利用するための、上記の選択肢またはそれらの組合せもしくは変形のうちのいずれか1つまたは複数を使用してもよいことがわかる。したがって、態様は、本明細書で開示するプロセス、機能および/またはアルゴリズムを実行するための様々な方法を含むことが諒解されよう。たとえば、図3に示すように、一態様は、(たとえば、プロセッサ110における命令の実行のためにアセンブラ152によって実行される)命令の誤り検査の方法300を含むことができる。
【００３６】
図示のように、ブロック302は、1つまたは複数の命令を有する命令パケットを作成すること(たとえば、アセンブラ152において命令102a〜dを含む命令パケット200を作成すること、ただし、アセンブラ152は、限定はしないが、同じプロセッサ110によってまたは異なるプロセッサ150によって実行されてもよく、命令パケット200はVLIWパケットであってもよい)を含むことができる。
【００３７】
ブロック304において、方法300は、命令パケットのパリティがあらかじめ指定されたパリティと一致するかどうかを判定することを含むことができる(たとえば、アセンブラ152は、命令パケット200のパリティがあらかじめ指定された偶数パリティまたは奇数パリティと一致するかどうかを判定することができる)。
【００３８】
ブロック304において、命令パケットのパリティがあらかじめ指定されたパリティと一致しないと判定された場合、ブロック306において、命令パケットのビットを使用して、あらかじめ指定されたパリティと一致するように命令パケットのパリティを変更する。たとえば、アセンブラ152は、命令パケット200のビット(たとえば、未使用ビット、NOPフィールドのビット、予約済みビットなど)をパリティビットとして使用して、あらかじめ指定されたパリティと一致するように命令パケットのパリティを変更してもよい。
【００３９】
ブロック308において、命令パケットは、たとえば、(ブロック306におけるステップを実行した後で、または、命令パケットのパリティがすでにあらかじめ指定されたパリティと一致すると判定された場合、ブロック306をスキップし、ブロック304からブロック308に到達することによってのいずれかで)あらかじめ指定されたパリティと一致するパリティとともにメモリ156に記憶される。
【００４０】
ブロック308から、方法300は、たとえば、命令パケット200を命令キャッシュ108に記憶する後続の段階を伴い、たとえば、そこから命令パケット200がフェッチされ、デコードされ、プロセッサ110の実行パイプライン112において実行される場合がある。これらの段階のいずれかにおいて、(たとえば、プロセッサ110の実行パイプライン112のIF段階、ID段階、EX1段階、EX2段階、WB段階などに対するパリティ検査114によって)命令パケット200のパリティが検査され得る。パリティがあらかじめ指定されたパリティと一致しない場合、将来の解析のためにログされ得る誤りが判定されるか、または例外が生成され得る。誤りが判定された場合、(本開示の範囲を超える)任意の適切な是正アクションも実装され得る。
【００４１】
次に図4を参照すると、例示的な態様に従って構成されたコンピューティングデバイスのブロック図が描かれており、全体が400で示されている。コンピューティングデバイス400は、図1のプロセッサ110を含む。例示的な態様では、プロセッサ110は、アセンブラ152などのアセンブラを実行し、図3の方法300を実行するように構成され得る。プロセッサ110は、メモリ156に通信可能に結合されてもよく、図1を参照しながら説明したように、メモリ156とプロセッサ110の中間に命令キャッシュ108が代表的に示されている。実行パイプライン112およびパリティ検査114もプロセッサ110内に示されているが、明瞭にするために、図1に示す実行パイプライン112の詳細はこの図から省略されている。命令パケット200は命令キャッシュ内に示されており、キャッシュライン102に属してもよい。簡潔にするために、プロセッサ110とメモリ156との間に存在し得る1つまたは複数のキャッシュおよび他の相互接続などの様々な他の詳細も図4には示されていない。
【００４２】
いくつかの態様では、図4のコンピューティングデバイス400は、モバイルデバイスまたはユーザ端末などのワイヤレス通信デバイスとして構成され得る。したがって、いくつかの態様では、図4は、破線で示されたいくつかの任意選択のブロックを含み得る。たとえば、コンピューティングデバイス400は、ディスプレイ428および、プロセッサ110とディスプレイ428とに結合されたディスプレイコントローラ426、プロセッサ110に結合されたコーダ/デコーダ(コーデック)434(たとえば、オーディオおよび/または音声コーデック)、コーデック434に結合されたスピーカー436およびマイクロフォン438、ならびにワイヤレスアンテナ442とプロセッサ110とに結合された(モデムを含み得る)ワイヤレスコントローラ440を任意選択で含み得る。
【００４３】
これらの任意選択のブロックのうちの1つまたは複数が存在する特定の態様では、プロセッサ110、ディスプレイコントローラ426、メモリ156、コーデック434、およびワイヤレスコントローラ440は、システムインパッケージデバイスまたはシステムオンチップデバイス422に含まれ得る。ディスプレイ428、入力デバイス430、スピーカー436、マイクロフォン438、ワイヤレスアンテナ442、および電源444は、システムオンチップデバイス422の外部にあってもよく、インターフェースまたはコントローラなどのシステムオンチップデバイス422の構成要素に結合されてもよい。
【００４４】
図4は(上述のように、いくつかの態様ではワイヤレス通信に使用され得る)コンピューティングデバイスを描いているが、プロセッサ110およびメモリ156は、セットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、ナビゲーションデバイス、携帯情報端末(PDA)、固定ロケーションデータユニット、コンピュータ、ラップトップ、タブレット、通信デバイス、モバイルフォン、サーバ、または他の同様のデバイスに組み込まれる場合もあることに留意されたい。
【００４５】
当業者は、情報および信号が、様々な異なる技術および技法のいずれかを使用して表され得ることを諒解されよう。たとえば、上記の説明全体にわたって参照される場合があるデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場もしくは光学粒子、またはそれらの任意の組合せによって表され得る。
【００４６】
さらに、当業者は、本明細書で開示する態様に関して説明する様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップが、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得ることを諒解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、上記では概してそれらの機能に関して説明した。そのような機能がハードウェアとして実装されるか、ソフトウェアとして実装されるかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装決定は、本発明の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【００４７】
本明細書で開示する態様に関して説明する方法、シーケンスおよび/またはアルゴリズムは、直接ハードウェアにおいて、プロセッサによって実行されるソフトウェアモジュールにおいて、またはその2つの組合せにおいて具現化されてもよい。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態の記憶媒体内に存在してもよい。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサと一体であってもよい。
【００４８】
したがって、本発明の一態様は、パリティビットを使用した命令パケットにおける誤り検出のための方法を具現化するコンピュータ可読媒体を含むことができる。したがって、本発明は図示の例に限定されず、本明細書で説明する機能を実行するためのいかなる手段も本発明の態様に含まれる。
【００４９】
上記の開示は本発明の例示的な態様を示すが、添付の特許請求の範囲によって定義される本発明の範囲から逸脱することなく、様々な変更および修正が本明細書において行われ得ることに留意されたい。本明細書で説明する本発明の態様による方法クレームの機能、ステップおよび/またはアクションは、任意の特定の順序で実行される必要はない。さらに、本発明の要素は、単数形で説明または特許請求される場合があるが、単数形への限定が明示的に述べられていない限り、複数形が企図される。
【符号の説明】
【００５０】
100  処理システム
102  キャッシュライン
102a〜d  命令
104  バス
108  命令キャッシュ
110  プロセッサ
112  実行パイプライン
114  パリティ検査
150  プロセッサ
152  アセンブラ
154  中間ネットワーク/記憶媒体
156  メモリ
200  命令パケット
200a  VLIWパケット
200b  VLIWパケット
202  ビット
204  NOP
204a〜d  フィールド
300  方法
400  コンピューティングデバイス
422  システムオンチップデバイス
426  ディスプレイコントローラ
428  ディスプレイ
430  入力デバイス
434  コーダ/デコーダ(コーデック)、コーデック
436  スピーカー
438  マイクロフォン
440  ワイヤレスコントローラ
442  ワイヤレスアンテナ
444  電源
【図１】
2019519858.tif 000003
【図２】
2019519858.tif 000004
【図３】
2019519858.tif 000005
【図４】
2019519858.tif 000006
【手続補正書】
【提出日】平成30年12月26日(2018.12.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
命令の誤り検査の方法であって、
1つまたは複数の命令を有する命令パケットを作成するステップと、
前記命令パケットのパリティがあらかじめ指定されたパリティと一致するかどうかを判定するステップと、
前記命令パケットの前記パリティが前記あらかじめ指定されたパリティと一致しない場合、前記命令パケットのビットを使用して、前記あらかじめ指定されたパリティと一致するように前記命令パケットの前記パリティを変更するステップと、
前記あらかじめ指定されたパリティを有する前記命令パケットをメモリに記憶するステップと
を含む方法。
【請求項２】
前記命令パケットの前記パリティを前記あらかじめ指定されたパリティと比較することに基づいて、前記メモリから取り出された前記命令パケット内に誤りがあるかどうかを判定するステップをさらに含む、請求項1に記載の方法。
【請求項３】
前記命令パケット内に誤りがあると判定するステップと、例外を生成するステップとをさらに含む、請求項2に記載の方法。
【請求項４】
前記命令パケット内に誤りがあると判定するステップと、デバッガにおける解析用に前記誤りを記録するステップとをさらに含む、請求項2に記載の方法。
【請求項５】
プロセッサにおける前記命令パケットのフェッチ段階、デコード段階、1つもしくは複数の実行段階、またはライトバック段階を含む1つまたは複数のパイプライン段階の間に、前記命令パケット内に誤りがあると判定するステップをさらに含む、請求項2に記載の方法。
【請求項６】
前記命令パケットが、超長命令語(VLIW)パケットである、請求項1に記載の方法。
【請求項７】
前記VLIWパケットが最大可能数未満の命令を含むと判定するステップと、前記VLIWパケットにノーオペレーション(NOP)フィールドを挿入するステップと、前記NOPフィールドのビットを前記命令パケットの前記ビットとして使用して、前記命令パケットのパリティを変更するステップとをさらに含む、請求項6に記載の方法。
【請求項８】
前記ビットが、前記VLIWパケットのフィールドに属し、前記フィールドが、前記VLIWパケットの命令に関する情報を伝達するために使用される、請求項6に記載の方法。
【請求項９】
前記ビットが、前記命令パケットの未使用ビットである、請求項1に記載の方法。
【請求項１０】
前記あらかじめ指定されたパリティが、奇数パリティまたは偶数パリティのうちの1つである、請求項1に記載の方法。
【請求項１１】
装置であって、
1つまたは複数の命令を有する命令パケットを作成し、
前記命令パケットのパリティがあらかじめ指定されたパリティと一致するかどうかを判定し、
前記命令パケットの前記パリティが前記あらかじめ指定されたパリティと一致しない場合、前記命令パケットのビットを使用して、前記あらかじめ指定されたパリティと一致するように前記命令パケットの前記パリティを変更する
ように構成されたプロセッサと、
前記あらかじめ指定されたパリティを有する前記命令パケットを記憶するように構成されたメモリと
を備える装置。
【請求項１２】
前記プロセッサのパリティ検査ブロックが、前記命令パケットの前記パリティと前記あらかじめ指定されたパリティとの比較に基づいて、前記メモリから取り出された前記命令パケット内に誤りがあるかどうかを判定するように構成される、請求項11に記載の装置。
【請求項１３】
前記プロセッサが、誤りが検出された場合に例外を生成するようにさらに構成される、請求項12に記載の装置。
【請求項１４】
請求項1から10のいずれか一項に記載の方法を実行するための手段を備える装置。
【請求項１５】
プロセッサによって実行されると、請求項1から10のいずれか一項に記載の方法を前記プロセッサに実行させるコードを記憶した非一時的コンピュータ可読記憶媒体。
【国際調査報告】
2019519858.tif 000007
2019519858.tif 000008