(57)【特許請求の範囲】
【請求項１】
ソースデータを受信することと、
中間データを生成するために前記ソースデータと基準データとに対してビット単位論理演算を実行することと、
前記中間データのパリティを判断することと、
前記ソースデータをシフトすることと、
結果データを生成するために前記中間データの前記パリティに対応する値を前記シフトされたソースデータのデータフィールドに入力することと、
前記結果データを出力することと
によって、プロセッサにおいて単一のリニアフィードバックシフト命令を実行することを備える、データを処理する方法。
【請求項２】
前記ビット単位論理演算がＡＮＤ演算であり、前記結果データを記憶することをさらに備える、請求項１に記載の方法。
【請求項３】
前記データフィールドが前記シフトされたソースデータの最上位ビット（ＭＳＢ）を含む、請求項１に記載の方法。
【請求項４】
前記ソースデータがソースレジスタから受信される、請求項１に記載の方法。
【請求項５】
前記単一のリニアフィードバックシフト命令を実行することは、前記プロセッサの単一のプロセッサスレッドサイクル中に行われ、
前記単一のリニアフィードバックシフト命令を復号するための復号ステージと、
前記ビット単位論理演算を実行し、前記パリティを判断し、前記ソースデータをシフトするための実行ステージと、
前記結果データを出力するためのライトバックステージと
を含む、請求項１に記載の方法。
【請求項６】
ソースデータを与えるように動作可能なソースレジスタと、
基準データを与えるように動作可能な基準レジスタと、
中間データを生成するために前記ソースデータと前記基準データとに対してビット単位論理演算を実行することと、
前記中間データのパリティを判断することと、
シフトされたソースデータを生成するために、前記ビット単位論理演算を実行した後に前記ソースデータをシフトすることと、
結果データを生成するために前記中間データの前記パリティに対応する値を前記シフトされたソースデータのデータフィールドに入力することと、
前記結果データを出力することと、
を行うための単一のリニアフィードバックシフト命令を実行するように動作可能な実行ユニットと、
を備えるプロセッサを備えるシステム。
【請求項７】
前記ソースデータが前記ソースレジスタから取り出され、前記基準データが前記基準レジスタから取り出される、請求項６に記載のシステム。
【請求項８】
前記中間データの前記パリティに対応する値が、前記シフトされたソースデータの最上位ビットデータフィールドに入力される、請求項６に記載のシステム。
【請求項９】
ワイヤレストランシーバをさらに備え、前記ワイヤレストランシーバは、アンテナを介してワイヤレスデータを受信するためのものであり、また、前記ワイヤレストランシーバは、前記ワイヤレスデータを前記プロセッサに供給するためのものである、請求項６に記載のシステム。
【請求項１０】
実行されると、プロセッサに、
ソースデータを受信することと、
中間データを生成するために前記ソースデータと基準データとに対してビット単位論理演算を実行することと、
前記中間データのパリティを判断することと、
シフトされたソースデータを生成するために前記ソースデータをシフトすることと、
結果を生成するために前記中間データの前記パリティに対応する値を前記シフトされたソースデータのデータフィールドに入力することと、
を行わせる単一のリニアフィードバックシフト命令
を備えるコンピュータ可読媒体。
【請求項１１】
前記シフトが右シフトである、請求項１０に記載のコンピュータ可読媒体。
【請求項１２】
前記中間データの前記パリティに対応する前記値が、前記シフトされたソースデータの空の位置に入力される、請求項１０に記載のコンピュータ可読媒体。
【請求項１３】
プロセッサによって実行可能な単一のリニアフィードバックシフトプロセッサ命令であって、
命令名と、
ソースデータを識別する第１のフィールドと、
基準データを識別する第２のフィールドと、
を備え、
プロセッサ命令の実行中、前記プロセッサが、中間データを生成するために前記ソースデータと前記基準データとに対してビット単位論理演算を実行し、前記中間データのパリティを判断し、前記ソースデータをシフトし、結果を生成するために前記中間データの前記パリティに対応する値を前記シフトされたソースデータのフィールドに入力する、単一のリニアフィードバックシフトプロセッサ命令。
【請求項１４】
前記ビット単位論理演算がＡＮＤ演算である、請求項１３に記載の単一のリニアフィードバックシフトプロセッサ命令。
【請求項１５】
前記ビット単位論理演算がＮＡＮＤ演算である、請求項１３に記載の単一のリニアフィードバックシフトプロセッサ命令。
【請求項１６】
前記プロセッサ命令の実行中に、前記プロセッサが前記結果を出力する、請求項１３に記載の単一のリニアフィードバックシフトプロセッサ命令。
【請求項１７】
単一のリニアフィードバックシフト命令を実行するためのプロセッサであって、
中間データを生成するためにソースデータと基準データとに対してビット単位論理演算を実行するための論理回路と、
前記中間データのパリティ値を判断するためのパリティ回路と、
前記ソースデータをシフトするためのビットシフタ回路と、
結果データを生成するために前記中間データの前記パリティ値を前記シフトされたソースデータ中に配置するための配置回路と、
前記結果データを出力するための手段と、
を備え、
前記論理回路、前記パリティ回路、前記ビットシフタ回路、前記配置回路、および前記結果データを出力するための手段は、前記単一のリニアフィードバックシフト命令に応答する、プロセッサ。
【請求項１８】
前記基準データが多項式データである、請求項１７に記載のプロセッサ。
【請求項１９】
前記結果データが巡回冗長検査値である、請求項１８に記載のプロセッサ。
【請求項２０】
前記結果データが擬似ランダムデータである、請求項１７に記載のプロセッサ。
【請求項２１】
前記プロセッサがインターリーブ型マルチスレッドプロセッサである、請求項１７に記載のプロセッサ。
【請求項２２】
前記プロセッサがプロセッサスレッドサイクルを有し、前記中間データを生成することと、前記中間データの前記パリティ値を判断することと、前記ソースデータをシフトすることと、前記結果データを生成することとが、前記プロセッサスレッドサイクルを超えないように処理時間期間中に実行される、請求項１７に記載のプロセッサ。
【請求項２３】
前記プロセッサがワイヤレスデバイス中に含まれ、前記ワイヤレスデバイスが、
前記プロセッサに結合されたメモリと、
前記プロセッサに結合されたディスプレイコントローラと、
前記プロセッサに結合されたコーダ／デコーダと、
を備える、請求項１７に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般に、リニアフィードバックシフト命令を実行するためのシステムおよび方法に関する。
【背景技術】
【０００２】
技術の進歩により、コンピューティングデバイスは、より小型でより強力になった。たとえば、現在、小型で軽量な、ユーザが容易に持ち運べるポータブルワイヤレス電話、携帯情報端末（ＰＤＡ）、ページングデバイスなどのワイヤレスコンピューティングデバイスを含む様々なポータブルパーソナルコンピューティングデバイスが存在する。より具体的には、セルラー電話やインターネットプロトコル（ＩＰ）電話などのポータブルワイヤレス電話は、ボイスおよびデータパケットをワイヤレスネットワークを介して伝達することができる。さらに、多くのそのようなワイヤレス電話は、その中に組み込まれた他のタイプのデバイスを含む。たとえば、ワイヤレス電話は、デジタルスチルカメラ、デジタルビデオカメラ、デジタルレコーダ、およびオーディオファイルプレーヤをも含むことができる。また、そのようなワイヤレス電話は、インターネットにアクセスするために使用できるウェブブラウザアプリケーションなどのソフトウェアアプリケーションを含む実行可能な命令を処理することができる。したがって、これらのワイヤレス電話はかなりの計算能力を含むことができる。
【０００３】
ワイヤレス電話におよびそれからデータを送信する際、巡回冗長検査(cycle redundancy check)（ＣＲＣ）などの計算量が、データの完全性を検証するのに役立つことがある。巡回冗長検査（ＣＲＣ）などの量の計算は、処理時間集約的であることがある複数の算術命令を含むことがある。そのような計算を時間効率的な方法で実行するために、専用ハードウェアを採用することができる。しかしながら、そのような専用ハードウェアは費用がかかることがあり、追加の電力を消費することがある。既存の処理ハードウェアを使用して時間効率的でエネルギー効率の良い方法でＣＲＣなどの量を計算することが可能であることが有利であろう。
【発明の概要】
【０００４】
データを処理する方法を開示する。入力データと基準データとに対して論理ビット単位演算を実行して中間データを生成し、中間データのパリティ値を判断し、パリティ値とソースデータの選択されたデータビットとから結果データを形成することによって、結果データを判断することができる。結果データは有用な性質を示すことがある。特定の例では、結果データを使用して、擬似乱数シーケンスを作成することができる。別の特定の例では、結果データは、巡回冗長検査（ＣＲＣ）など、いくつかの誤り検出符号の計算を可能にすることができる。
【０００５】
特定の一実施形態では、データを処理する方法を開示する。本方法は、プロセッサにおいて単一のリニアフィードバックシフト命令を実行することを含む。本方法は、ソースデータを受信することと、中間データを生成するためにソースデータと基準データとに対してビット単位(bitwise)論理演算を実行することと、中間データのパリティを判断することと、ソースデータをシフトすることと、結果データを生成するために中間データのパリティに対応するデータ値をシフトされたソースデータのデータフィールドに入力することとを含む。本方法は、結果データを出力することをさらに含む。
【０００６】
別の特定の実施形態では、システムを開示する。本システムは、単一のリニアフィードバックシフト命令を実行するためのプロセッサを含む。本システムは、ソースデータを与えるように動作可能なソースレジスタと、基準データを与えるように動作可能な基準レジスタとを含む。本システムは、中間データを生成するためにソースデータと基準データとに対してビット単位論理演算を実行することと、中間データのパリティを判断することと、シフトされたソースデータを生成するために、ビット単位論理演算を実行した後にソースデータをシフトすることと、結果データを生成するために中間データのパリティに対応するデータ値をシフトされたソースデータのデータフィールドに入力することと、結果データを出力することとを行うように動作可能な実行ユニットをさらに含む。
【０００７】
別の特定の実施形態では、コンピュータ可読媒体を開示する。本コンピュータ可読媒体は、実行されると、プロセッサに、ソースデータを受信させ、中間データを生成するためにソースデータと基準データとに対してビット単位論理演算を実行させ、中間データのパリティを判断させ、シフトされたソースデータを生成するためにソースデータをシフトさせ、結果を生成するために中間データのパリティに対応するデータ値をシフトされた第１のデータのデータフィールドに入力させる、実行可能なリニアフィードバックシフト命令を記憶する。
【０００８】
別の特定の実施形態では、プロセッサによって実行可能なプロセッサ命令を開示する。本プロセッサ命令は、命令名と、ソースデータを識別する第１のフィールドと、基準データを識別する第２のフィールドとを含む。本プロセッサ命令の実行中、プロセッサは、中間データを生成するためにソースデータと基準データとに対してビット単位論理演算を実行し、中間データのパリティを判断し、ソースデータをシフトし、結果を生成するために中間データのパリティに対応するデータ値をシフトされたソースデータのデータフィールドに入力する。
【０００９】
別の特定の実施形態では、プロセッサを開示する。本プロセッサは、中間データを生成するためにソースデータと基準データとに対してビット単位論理演算を実行するための論理回路と、中間データのパリティを判断するためのパリティ回路と、ソースデータをシフトするためのビットシフタ回路と、結果データを生成するために中間データのパリティに対応するデータ値をシフトされたソースデータ中に配置する配置回路と、結果データを出力するための手段とを含む。
【００１０】
リニアフィードバックシフト命令を与えるためのシステムおよび方法の開示する実施形態のうちの少なくとも１つによって提供される１つの特定の利点は、リニアフィードバックシフト命令の複数のステップを並列にまたは単一の命令で実行することによる時間効率の増加である。リニアフィードバックシフト命令をインターリーブ型マルチスレッドプロセッサによって実行される単一の命令として実行することの利点は、インターリーブ型マルチスレッドプロセッサは複素算術命令に適応する比較的長い実行パイプラインを可能にするので、実行中に追加の待ち時間が実質的に導入されないことである。
【００１１】
本開示の他の態様、利点、および特徴は、図面の簡単な説明、詳細な説明、および特許請求の範囲を含む、本出願全体の検討の後に明らかになろう。
【図面の簡単な説明】
【００１２】
【図１】リニアフィードバックシフト命令を実行するように構成されたインターリーブ型マルチスレッドプロセッサの特定の例示的な実施形態のブロック図。
【図２】リニアフィードバックシフト命令を実行するための命令を処理するように構成されたプロセッサの特定の例示的な実施形態のブロック図。
【図３】リニアフィードバックシフト命令の特定の例示的な実施形態のデータフロー図。
【図４】リニアフィードバックシフト命令を実行する方法の特定の例示的な実施形態のフローチャート。
【図５】リニアフィードバックシフト命令を実行するように構成されたプロセッサを含むワイヤレスデバイスのブロック図。
【発明を実施するための形態】
【００１３】
図１を参照すると、リニアフィードバックシフト命令を実行するように構成されたインターリーブ型マルチスレッドプロセッサの特定の例示的な実施形態のブロック図が示され、全体的に１００と称される。インターリーブ型マルチスレッドプロセッサ１００は、第１のスレッド１０４、第２のスレッド１０６、および第３のスレッド１０８など、複数のスレッドによって命令を実行することができる。各スレッド１０４、１０６、および１０８は、スレッドサイクルとしても知られる実行サイクル１１０内で実行される複数のパイプラインステージを含むことができる。図示の特定の例示的な例では、スレッド１０４、１０６、および１０８の各々は、スレッドサイクル中に６つのパイプラインステージを含む。たとえば、第１のパイプラインステージＡ1１１２は、処理すべき命令をフェッチするフェッチステージとすることができる。第２のパイプラインステージＡ2１１４は、フェッチされた命令を復号する復号ステージとすることができる。パイプラインステージＡ3１１６、Ａ4１１８、およびＡ5１２０は実行ステージとすることができる。パイプラインステージＡ6１２２はライトバックステージとすることができる。マルチスレッドプロセッサ１００のスレッド１０４、１０６、および１０８の各々は同様のパイプラインステージを有し、複数のフェッチされた命令の同時処理を可能にすることができる。
【００１４】
特定の例示的な実施形態では、リニアフィードバックシフト命令１０２は、インターリーブ型マルチスレッドプロセッサ１００によってフェッチされて、第１のスレッド１０４中で処理される。リニアフィードバックシフト命令１０２は、マルチスレッドプロセッサ１００の他のスレッド中の他の命令の実行と同時にインターリーブ様式で処理できる単一の命令であり、したがってプロセッサ計算効率を利用する。
【００１５】
図２を参照すると、リニアフィードバックシフト命令を実行するための命令を実行するように構成されたプロセッサ２１４を含むシステム２００の特定の例示的な実施形態のブロック図が示されている。たとえば、プロセッサ２１４はパイプラインプロセッサとすることができる。プロセッサ２１４は、第１の実行ユニット２２４と第２の実行ユニット２２６とに結合されたレジスタファイル２１６を含む。第２の実行ユニット２２６は、ビット単位ＡＮＤ回路２２８と、パリティ回路２３０と、シフタ２３２と、パリティ値配置および充填回路２３４とを含む。第２の実行ユニット２２６からの出力はレジスタファイル２１６中のレジスタに入力される。たとえば、パリティ計算の結果はパリティレジスタ２２２に入力される。説明しやすいように２つの実行ユニット２２４、２２６を図２に示しているが、プロセッサ２１４は２つ以上の実行ユニットを含むことができる。
【００１６】
プロセッサ２１４は、命令キャッシュまたはレジスタなどのコンピュータ可読媒体２０２からリニアフィードバックシフト命令２０４をフェッチするように適合される。プロセッサ２１４は計算の結果をメモリ２４０に出力することができ、その結果はメモリ２４０に記憶できる。プロセッサ２１４は、出力バス２３８など、プロセッサ２１４からの計算結果をメモリ２４０に出力するための出力手段を使用することができる。別の例示的な実施形態では、プロセッサ２１４からのデータを出力するための別の手段が採用できる。
【００１７】
リニアフィードバックシフト命令２０４は、命令名２０８と、ソースデータ（Ｒss）２１０を識別する第１のフィールドと、基準データ（Ｒref）２１２を識別する第２のフィールドとを含むことができ、出力データ（Ｒout）２０６を生成することができる。リニアフィードバックシフト命令２０４は、実行されると、コンピュータに、中間データを生成するためにソースデータ（Ｒss）２１０と基準データ（Ｒref）２１２とのビット単位ＡＮＤを実行させ、中間データのパリティ値（Ｙ）を判断させ、ソースデータをシフトさせ、出力データ（Ｒout）２０６を生成するためにパリティ値（Ｙ）を空のデータフィールドに挿入させることができる。出力データ（Ｒout）２０６は、メモリ２４０内の結果データ２４４としてメモリに書き込まれ得る。結果データ２４４は、擬似ランダムデータ、巡回冗長検査（ＣＲＣ）データ、または別のタイプのデータとすることができる。特定の例示的な実施形態では、擬似ランダムデータは暗号符号化または復号において使用される。別の特定の例示的な実施形態では、擬似ランダムデータは統計アプリケーションにおいて使用される。特定の例示的な実施形態では、ＣＲＣデータは、データ伝送またはデータ記憶中にデータの改変または誤りを検出するためのチェックサムとして使用できる。
【００１８】
動作中、プロセッサ２１４は、コンピュータ可読媒体２０２からリニアフィードバックシフト命令２０４をフェッチすることができる。プロセッサ２１４は、メモリ２４０から、Ｒｓｓ２１０によって識別されるソースデータ２４６と、Ｒｒｅｆ２１２によって識別される基準データ２４８とを取り出すことができる。（データビットＳ１〜Ｓ８として示される）ソースデータ２４６はレジスタファイル２１６のソースレジスタ２１８中に配置され得、（データビットＲ１〜Ｒ８として示される）基準データ２４８はレジスタファイル２１６の基準データレジスタ２２０中に配置され得る。
【００１９】
特定の例示的な実施形態では、プロセッサ２１４は、単一のリニアフィードバックシフト命令２０４をパイプラインプロセッサ中の単一の命令として次のように実行する。ビット単位ＡＮＤ回路２２８は、中間データ２２７を生成するために、基準データレジスタ２２０の内容を用いてソースレジスタ２１８の内容のビット単位ＡＮＤを実行する。プロセッサ２１４は、パリティ回路２３０によって中間データ２２７のパリティ値（Ｙ）２３１を判断する。パリティ値（Ｙ）２３１は、中間データ２２７のパリティに対応するデータ値である。パリティ回路２３０によって判断されたパリティ値（Ｙ）２３１はパリティレジスタ２２２に一時的に記憶される。プロセッサ２１４は、シフタ２３２を使用して、ソースレジスタ２１８からソースデータを１ビットだけ右シフトし、最下位ビット(Last Significant Bit)を削除する。プロセッサ２１４は、パリティ値配置および充填(fill)回路２３４によってパリティ値（Ｙ）２３１を最上位ビット(Most Significant Bit)（ＭＳＢ）フィールド２５０に入力する。プロセッサ２１４は出力バス２３８を介して出力データ（Ｒｏｕｔ）２０６を出力し、出力データ（Ｒｏｕｔ）２０６は結果データ２４４としてメモリ２４０に記憶される。結果データ２４４は、右シフトされたソースデータ２４２と、ソースデータを右シフトした結果として空にされたＭＳＢフィールド２５０に配置されたパリティ値（Ｙ）２３１とを含む。特定の例示的な実施形態では、結果データ２４４は擬似ランダムデータを含む。たとえば、擬似ランダムデータは、乱数の性質を近似する数のシーケンスのうちの１つとすることができる。擬似乱数は、暗号符号化または復号において、または統計アプリケーションにおいて使用できる。別の特定の例示的な実施形態では、結果データ２４４はＣＲＣデータを含む。たとえば、ＣＲＣデータは、データ伝送またはデータ記憶中にデータの改変または誤りを検出するためのチェックサムとして使用できる。
【００２０】
プロセッサ２１４などのインターリーブ型マルチスレッドプロセッサ中でリニアフィードバックシフト命令２０４を単一の命令として実行することの利点は、プロセッサが、一般に、比較的長い実行パイプラインに起因する追加の計算オーバーヘッドを導入することなしに複素算術演算を単一の命令で実行することを可能にすることである。したがって、インターリーブ型マルチスレッドプロセッサを使用することによって、リニアフィードバックシフト命令２０４の多重演算を単一の命令で実行した結果として、プロセッサ実行時間に追加の待ち時間が導入されることがなくなる。
【００２１】
特定の例示的な実施形態では、出力データ（Ｒout）２０６を出力し、結果データ２４４として記憶する前に、リニアフィードバックシフト命令２０４を複数回反復することができる。特定の例示的な例では、第２の反復は、第１の反復中に発生され、一時的にソースデータレジスタ２１８に記憶された出力データ２０６で開始し、第２の反復のための中間データ２２７を生成するために基準データ２４８を用いてビット単位ＡＮＤ演算を実行し、中間データ２２７のパリティ（Ｙ）２３１を判断し、ＭＳＢフィールドを空にするためにソースデータレジスタ２１８の現在の内容を右シフトし、空のＭＳＢフィールドをパリティ（Ｙ）２３１で埋め戻し、第２の反復のための出力Ｒout２０６を生成して実行される。上記の反復プロセスは複数回反復できる。
【００２２】
特定の例示的な実施形態では、プロセッサ２１４は、図１中に示すようにインターリーブ型マルチスレッドプロセッサである。プロセッサ２１４は、プロセッサスレッドサイクルを有することができ、ソースデータを入力し、中間データを生成し、中間データのパリティ値を判断し、ソースデータをシフトし、結果データを生成するように構成でき、プロセッサスレッドサイクルを超えないように、処理時間期間中にこれらのステップのすべてを実行する。図５に関して説明するように、ワイヤレスデータをプロセッサ２１４に供給するためにワイヤレストランシーバが結合できる。特定の例示的な実施形態では、ワイヤレスデータはソースデータ２４６および／または基準データ２４８とすることができ、ワイヤレストランシーバは、アンテナを介してワイヤレスデータを受信するために結合できる。
【００２３】
図３を参照すると、パイプラインプロセッサ中で単一の命令として実装されたリニアフィードバックシフト命令を実行する方法の特定の例示的な実施形態のデータフロー図が示され、全体的に３００と称される。特定の例では、方法３００は、図２に示すプロセッサ２１４によって実装できる。方法３００は、中間データ３０８を生成するためにソースデータ３０２と基準データ３０４とに対してビット単位ＡＮＤ演算３０６を実行することを含む。ソースデータ３０２は複数のデータビットを含むことができる。例示的な例では、ソースデータはデータビットａ1〜ａ8を含む。基準データ３０４は、ソースデータ３０２と同じ数のデータビットを含む。例示的な例では、基準データはデータビットｂ1〜ｂ8を含む。例示的な例では、中間データはデータビットｃ1〜ｃ8を含む。ソースデータ３０２および基準データ３０４は、レジスタまたはコンピュータメモリから与えることができ、またワイヤレスアンテナを介してワイヤレスデータを受信するために結合され得るワイヤレストランシーバによって受信することができる。別の特定の例示的な実施形態（図示せず）では、ビット単位ＡＮＤ演算３０６の代わりにＮＡＮＤ演算を実行することができる。
【００２４】
中間データ３０８を計算した後、パリティ計算３１０を実行して、中間データ３０８のパリティに対応する値であるパリティ値（Ｙ）３１２を得る。パリティ計算３１０は、中間データ３０８のデータビット値の算術和を判断することと、算術和が奇数であるときはパリティ値（Ｙ）３１２に論理１値を割り当て、算術和が偶数であるときはパリティ値（Ｙ）３１２に論理０値を割り当てることとを含む。
【００２５】
図１のインターリーブ型マルチスレッドプロセッサ１００などのパイプラインプロセッサ中で単一の命令として実装されたリニアフィードバックシフト命令を実行する方法のデータフロー図３００は、図２に示すシフタ２３２などによってソースデータ３０２に対してシフト演算３１５を実行して、シフトされたソースデータ３１４を得、ソースデータ３０２のデータフィールド３１６を空にすることによって進む。図２のパリティ回路２２２などのパリティ回路によって計算されたパリティ値（Ｙ）３１２を、シフト演算３１５の結果として空にされた、シフトされたソースデータ３１４のデータフィールド３１６に入力する。シフトされたソースデータと、データフィールド３１６を占めるパリティ値（Ｙ）３１２とを含む結果データ３１８を生成する。特定の例示的な実施形態では、シフト演算３１５はソースデータ３０２を右シフトし、データフィールド３１６は最上位ビット（ＭＳＢ）である。
【００２６】
特定の例示的な実施形態では、パイプラインプロセッサ中で単一の命令として実装されたリニアフィードバックシフト命令を実行する方法を複数回実行することができる。リニアフィードバックシフト命令が呼び出されるたびに、リニアフィードバックシフト命令の前回の実行から出力された結果データからソースデータを入力する。したがって、いくつかの反復の過程にわたって、元のソースデータを複数回右シフトし、最新のパリティ計算３１０によって判断された現在のパリティ値３１２によって現在空の最上位ビットを埋め戻すことができる。
【００２７】
図４を参照すると、パイプラインプロセッサ中でリニアフィードバックシフト命令を単一の命令として実行する方法の別の特定の例示的な実施形態のフローチャートが全体的に４００と称される。ブロック４０２において、ソースデータを受信する。ブロック４０４に進むと、基準データを受信する。特定の例示的な実施形態では、基準データは多項式データを含むことができる。ブロック４０６に進むと、中間データを生成するためにソースデータと基準データとに対してＡＮＤ演算またはＮＡＮＤ演算などのビット単位論理演算を実行する。ブロック４０８に進むと、中間データのパリティ値を判断する。ブロック４１０に進むと、ソースデータを１ビットだけシフトして、１つのビットを空にする。特定の例示的な実施形態では、ソースデータを１ビットだけ右シフトして、最上位ビット（ＭＳＢ）を空にする。ブロック４１２に進むと、中間データのパリティ値、すなわち、奇数パリティまたは偶数パリティを示す単一のビットをシフトされたソースデータの空のビットに入力して、結果データを生成する。ブロック４１４に進むと、結果データを記憶する。
【００２８】
決定ブロック４１６に進むと、別の反復を実行すべきかどうかの判断を行う。別の反復を実行する場合、本方法はブロック４０２に戻り、本方法は、命令の前回の反復からの結果データを用いてリニアフィードバックシフト命令を再び実行し、現在の中間データを生成するために基準データを用いてビット単位論理演算を実行し、現在の中間データのパリティ値を判断し、現在のシフトされた中間データを生成するために現在の中間データをシフトし、現在の出力データを生成するために現在の中間データのパリティ値を現在のシフトされたデータの空のデータフィールドに入力し、現在の出力データを記憶する。別の反復を実行すべきでない場合、本方法はブロック４１８に進み、出力データを結果データとして出力する。本方法は４２０において終了する。結果データは受信した基準データに依存する。特定の例示的な例では、結果データは、暗号符号化または復号化において、または統計アプリケーションにおいて使用できる擬似ランダムデータを含む。別の特定の例示的な例では、結果データは、データ伝送誤りを検出する際に使用できるＣＲＣデータを含む。
【００２９】
図５を参照すると、リニアフィードバックシフト命令を単一の命令として実行するように構成されたパイプラインプロセッサを含むワイヤレスデバイスのブロック図が示され、全体的に５００と称される。デバイス５００は、デジタル信号プロセッサ（ＤＳＰ）５１０など、リニアフィードバックシフト命令５９０を実行するように構成されたプロセッサを含む。ＤＳＰ５１０はメモリ５３２に結合される。特定の一実施形態では、リニアフィードバックシフト命令５９０は、ＤＳＰ５１０およびメモリ５３２において実行可能であり、上記で図１〜図４に関して説明したシステムおよび方法を使用して実装できる。
【００３０】
図５はまた、デジタル信号プロセッサ５１０とディスプレイ５２８とに結合されたディスプレイコントローラ５２６を示す。コーダ／デコーダ（コーデック）５３４はまたデジタル信号プロセッサ（ＤＳＰ）５１０に結合できる。スピーカー５３６およびマイクロフォン５３８はコーデック５３４に結合できる。
【００３１】
図５はまた、モデム５４０を、デジタル信号プロセッサ５１０と、ワイヤレスアンテナ５４２に結合されたトランシーバ５４６とに結合することができることを示す。特定の例示的な実施形態では、（本明細書では「ワイヤレストランシーバ」とも呼ばれる）トランシーバ５４６は、ワイヤレスアンテナ５４２を介してワイヤレスデータを受信するために結合でき、トランシーバ５４６は、モデム５４０を介してワイヤレスデータをＤＳＰ５１０に供給するためにさらに結合できる。特定の一実施形態では、ＤＳＰ５１０、ディスプレイコントローラ５２６、メモリ５３２、コーデック５３４、およびモデム５４０は、システムインパッケージまたはシステムオンチップデバイス５２２中に含まれる。特定の一実施形態では、入力デバイス５３０および電源５４４はシステムオンチップデバイス５２２に結合される。その上、特定の一実施形態では、図５に示すように、ディスプレイ５２８、入力デバイス５３０、スピーカー５３６、マイクロフォン５３８、ワイヤレスアンテナ５４２、および電源５４４は、システムオンチップデバイス５２２の外部にある。しかしながら、ディスプレイ５２８、入力デバイス５３０、スピーカー５３６、マイクロフォン５３８、ワイヤレスアンテナ５４２、および電源５４４の各々は、インターフェースまたはコントローラなど、システムオンチップデバイス５２２の構成要素に結合できる。
【００３２】
さらに、本明細書で開示した実施形態に関して説明した様々な例示的な論理ブロック、構成、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装できることを、当業者は諒解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、構成、モジュール、回路、およびステップを、上記では概して、それらの機能に関して説明した。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課せられた設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装することができるが、そのような実装の決定は、本開示の範囲からの逸脱を生じるものと解釈すべきではない。
【００３３】
本明細書で開示した実施形態に関して説明した方法またはアルゴリズムのステップは、直接ハードウェアで実施するか、プロセッサによって実行されるソフトウェアモジュールで実施するか、またはその２つの組合せで実施できる。ソフトウェアモジュールは、ランダムアクセスメモリ（ＲＡＭ）、フラッシュメモリ、読取り専用メモリ（ＲＯＭ）、プログラマブル読取り専用メモリ（ＰＲＯＭ）、消去可能プログラマブル読取り専用メモリ（ＥＰＲＯＭ）、電気消去可能プログラマブル読取り専用メモリ（ＥＥＰＲＯＭ）、レジスタ、ハードディスク、リムーバブルディスク、コンパクトディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、または当技術分野で知られている他の形態の記憶媒体中に常駐することができる。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサと一体とすることができる。プロセッサおよび記憶媒体は特定用途向け集積回路（ＡＳＩＣ）中に常駐することができる。ＡＳＩＣはコンピューティングデバイスまたはユーザ端末中に常駐することができる。代替として、プロセッサおよび記憶媒体は、コンピューティングデバイスまたはユーザ端末中に個別構成要素として常駐することができる。
【００３４】
開示した実施形態の前述の説明は、当業者が開示した実施形態を製作または使用できるように提供したものである。これらの実施形態への様々な変更は当業者には容易に明らかになり、本明細書で定義された原理は本開示の範囲から逸脱することなく他の実施形態に適用できる。したがって、本開示は、本明細書に示した実施形態に限定されるものではなく、特許請求の範囲によって定義される原理および新規の特徴と一致する可能な最も広い範囲を与えられるべきである。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］  ソースデータを受信することと、
中間データを生成するために前記ソースデータと基準データとに対してビット単位論理演算を実行することと、
前記中間データのパリティを判断することと、
前記ソースデータをシフトすることと、
結果データを生成するために前記中間データの前記パリティに対応する値を前記シフトされたソースデータのデータフィールドに入力することと、
前記結果データを出力することと、
によって、プロセッサにおいて命令を実行することを備える、データを処理する方法。
［Ｃ２］  前記論理演算がＡＮＤ演算であり、前記結果データを記憶することをさらに備える、Ｃ１に記載の方法。
［Ｃ３］  前記データフィールドが前記シフトされたソースデータの最上位ビット（ＭＳＢ）を含む、Ｃ１に記載の方法。
［Ｃ４］  前記ソースデータがソースレジスタから受信される、Ｃ１に記載の方法。
［Ｃ５］  ソースデータを与えるように動作可能なソースレジスタと、
基準データを与えるように動作可能な基準レジスタと、
中間データを生成するために前記ソースデータと前記基準データとに対してビット単位論理演算を実行することと、
前記中間データのパリティを判断することと、
シフトされたソースデータを生成するために、前記ビット単位論理演算を実行した後に前記ソースデータをシフトすることと、
結果データを生成するために前記中間データの前記パリティに対応する値を前記シフトされたソースデータのデータフィールドに入力することと、
前記結果データを出力することと、
を行うための命令を実行するように動作可能な実行ユニットと、
を備えるプロセッサを備えるシステム。
［Ｃ６］  前記ソースデータが前記ソースレジスタから取り出され、前記基準データが前記基準レジスタから取り出される、Ｃ５に記載のシステム。
［Ｃ７］  前記中間データの前記パリティに対応する値が、前記シフトされたソースデータの最上位ビットデータフィールドに入力される、Ｃ５に記載のシステム。
［Ｃ８］  アンテナを介してワイヤレスデータを受信するために結合されたワイヤレストランシーバをさらに備え、前記ワイヤレストランシーバが、前記ワイヤレスデータを前記プロセッサに供給するためにさらに結合された、Ｃ５に記載のシステム。
［Ｃ９］  実行されると、プロセッサに、
ソースデータを受信することと、
中間データを生成するために前記ソースデータと基準データとに対してビット単位論理演算を実行することと、
前記中間データのパリティを判断することと、
シフトされたソースデータを生成するために前記ソースデータをシフトすることと、  結果を生成するために前記中間データのパリティに対応する値を前記シフトされたソースデータのデータフィールドに入力することと、
を行わせる実行可能命令を記憶したコンピュータ可読媒体。
［Ｃ１０］  前記シフトが右シフトである、Ｃ９に記載のコンピュータ可読媒体。
［Ｃ１１］  前記中間データのパリティに対応する前記値が、前記シフトされたソースデータの空の位置に入力される、Ｃ９に記載のコンピュータ可読媒体。
［Ｃ１２］  プロセッサによって実行可能なプロセッサ命令であって、
命令名と、
ソースデータを識別する第１のフィールドと、
基準データを識別する第２のフィールドと、
を備え、
プロセッサ命令の実行中、前記プロセッサが、中間データを生成するために前記ソースデータと前記基準データとに対してビット単位論理演算を実行し、前記中間データのパリティを判断し、前記ソースデータをシフトし、結果を生成するために前記中間データのパリティに対応する値を前記シフトされたソースデータのフィールドに入力する、プロセッサ命令。
［Ｃ１３］  前記論理演算がＡＮＤ演算である、Ｃ１２に記載のプロセッサ命令。
［Ｃ１４］  前記論理演算がＮＡＮＤ演算である、Ｃ１２に記載のプロセッサ命令。
［Ｃ１５］  前記プロセッサ命令の実行中に、前記プロセッサが前記結果を出力する、Ｃ１２に記載のプロセッサ命令。
［Ｃ１６］  命令を実行するためのプロセッサであって、
中間データを生成するためにソースデータと基準データとに対してビット単位論理演算を実行するための論理回路と、
前記中間データのパリティ値を判断するためのパリティ回路と、
前記ソースデータをシフトするためのビットシフタ回路と、
結果データを生成するために前記中間データのパリティ値を前記シフトされたソースデータ中に配置するための配置回路と、
前記結果データを出力するための手段と、
を備えるプロセッサ。
［Ｃ１７］  前記基準データが多項式データを備える、Ｃ１６に記載のプロセッサ。
［Ｃ１８］  前記結果データが巡回冗長検査値を備える、Ｃ１７に記載のプロセッサ。
［Ｃ１９］  前記結果データが擬似ランダムデータを備える、Ｃ１６に記載のプロセッサ。
［Ｃ２０］  前記プロセッサがインターリーブ型マルチスレッドプロセッサを備える、Ｃ１６に記載のプロセッサ。
［Ｃ２１］  前記プロセッサがプロセッサスレッドサイクルを有し、前記中間データを発生することと、前記中間データのパリティ値を判断することと、前記ソースデータをシフトすることと、前記結果データを生成することとが、前記プロセッサスレッドサイクルを超えないように処理時間期間中に実行される、Ｃ１６に記載のプロセッサ。
［Ｃ２２］  前記プロセッサがワイヤレスデバイス中に含まれ、前記ワイヤレスデバイスが、
前記プロセッサに結合されたメモリと、
前記プロセッサに結合されたディスプレイコントローラと、
前記プロセッサに結合されたコーダ／デコーダと、
を備える、Ｃ１６に記載のプロセッサ。
【図１】
0005341194.tif 000002
【図２】
0005341194.tif 000003
【図３】
0005341194.tif 000004
【図４】
0005341194.tif 000005
【図５】
0005341194.tif 000006