(57)【要約】  連続するメモリアドレスにデータを記憶するための方法が、第1のデータベクトルの第1のオフセットを判定し、有効データと無効データとを含む第2のデータベクトルの第2のオフセットを判定するために単一命令複数データ(SIMD)プロセッサにおいて、並列プレフィックス有効カウント命令を実行することを含む。第2のオフセットは、第1のオフセットと、有効データに関連する第1のデータベクトルにおける位置の数とに基づく。本方法はまた、第1のデータベクトルからの第1の有効データをメモリの第1のメモリアドレスに記憶することと、第2のデータベクトルからの第2の有効データをメモリの特定のメモリアドレスに記憶することとを含む。第1のメモリアドレスは、第1のオフセットに基づき、特定のメモリアドレスは、第2のオフセットに基づく。
2019530091.tif 000002
【特許請求の範囲】
【請求項１】
単一命令複数データ(SIMD)プロセッサにおいて、
有効データと無効データとを含むデータ要素のシーケンスにおける第1の有効位置に関連する第1のオフセットを判定することと、
前記データ要素のシーケンスにおける第2の有効位置に関連する第2のオフセットを判定することであって、前記第2のオフセットが、前記第1のオフセットと、有効データに関連する前記データ要素のシーケンスにおける位置の数とに基づく、判定することと
のために並列プレフィックス有効カウント命令を実行するステップ
を含む、方法。
【請求項２】
前記第1のオフセットは、前記第2のオフセットと並列に判定される、請求項1に記載の方法。
【請求項３】
前記第2のオフセットを算出するために、有効データに関連する前記第1の有効位置と前記第2の有効位置との間の前記位置の数を前記第1のオフセットに加算するステップをさらに含む、請求項1に記載の方法。
【請求項４】
前記データ要素のシーケンスに関連する第1のデータベクトルからの第1の有効データをメモリの第1のメモリアドレスに記憶するステップであって、前記第1のメモリアドレスが前記第1のオフセットに基づく、ステップと、
前記データ要素のシーケンスに関連する第2のデータベクトルからの第2の有効データを前記メモリの特定のメモリアドレスに記憶するステップであって、前記特定のメモリアドレスが前記第2のオフセットに基づく、ステップと
をさらに含む、請求項1に記載の方法。
【請求項５】
前記メモリの前記第1のメモリアドレスに連続する追加順次メモリアドレスに、前記第1のデータベクトルからの追加有効データを記憶するステップをさらに含む、請求項4に記載の方法。
【請求項６】
前記特定のメモリアドレスは、前記追加順次メモリアドレスの最後のメモリアドレスに連続する、請求項5に記載の方法。
【請求項７】
前記第1の有効データと前記第2の有効データは、並列に記憶される、請求項4に記載の方法。
【請求項８】
前記第2の有効データを前記第1の有効データに並列に記憶するステップは、
第1の期間の間前記第1の有効データを記憶するステップと、
前記第1の期間の間前記第2の有効データを並行して記憶するステップと
を含む、請求項7に記載の方法。
【請求項９】
前記第1のメモリアドレスおよび前記特定のメモリアドレスは、圧縮メモリデータベクトルのメモリアドレスである、請求項4に記載の方法。
【請求項１０】
前記圧縮メモリデータベクトルに記憶されたデータをフェッチするステップをさらに含む、請求項9に記載の方法。
【請求項１１】
前記圧縮メモリデータベクトルに記憶された前記データをフェッチしたことに応じて前記圧縮メモリデータベクトルに記憶された前記データを処理するステップをさらに含む、請求項10に記載の方法。
【請求項１２】
前記圧縮メモリデータベクトルに記憶された前記データを処理した後、
連続するメモリにおける処理済みのデータの位置をデータの疎なシーケンスにおける有効データの位置にマップするオフセットを判定するために前記並列プレフィックス有効カウント命令を実行するステップと、
前記連続するメモリからの前記処理済みのデータを前記データの疎なシーケンスにおける前記有効データの位置にロードするステップと
をさらに含む、請求項1に記載の方法。
【請求項１３】
メモリと、
単一命令複数データ(SIMD)プロセッサであって、
並列プレフィックス有効カウント命令を実行するように構成される、前記並列プレフィックス有効カウント命令を実行することが、前記SIMDプロセッサに、
有効データと無効データとを含むデータ要素のシーケンスにおける第1の有効位置に関連する第1のオフセットを判定することと、
前記データ要素のシーケンスにおける第2の有効位置に関連する第2のオフセットを判定することであって、前記第2のオフセットが、前記第1のオフセットと、有効データに関連する前記データ要素のシーケンスにおける位置の数とに基づく、判定することと
を行わせる、SIMDプロセッサと
を備える、装置。
【請求項１４】
前記第1のオフセットは、前記第2のオフセットと並列に判定される、請求項13に記載の装置。
【請求項１５】
前記SIMDプロセッサは、前記第2のオフセットを算出するために、有効データに関連する前記第1の有効位置と前記第2の有効位置との間の前記位置の数を前記第1のオフセットに加算するように構成される、請求項13に記載の装置。
【請求項１６】
前記SIMDプロセッサは、
前記データ要素のシーケンスに関連する第1のデータベクトルからの第1の有効データを前記メモリの第1のメモリアドレスに記憶することであって、前記第1のメモリアドレスが前記第1のオフセットに基づく、記憶することと、
前記データ要素のシーケンスに関連する第2のデータベクトルからの第2の有効データを前記メモリの特定のメモリアドレスに記憶することであって、前記特定のメモリアドレスが前記第2のオフセットに基づく、記憶することと
を行うようにさらに構成される、請求項13に記載の装置。
【請求項１７】
前記SIMDプロセッサは、前記メモリの前記第1のメモリアドレスに連続する追加順次メモリアドレスに、前記第1のデータベクトルからの追加有効データを記憶するように構成される、請求項16に記載の装置。
【請求項１８】
前記特定のメモリアドレスは、前記追加順次メモリアドレスの最後のメモリアドレスに連続する、請求項17に記載の装置。
【請求項１９】
前記第1の有効データと前記第2の有効データは、並列に記憶される、請求項16に記載の装置。
【請求項２０】
前記第1のメモリアドレスおよび前記特定のメモリアドレスは、圧縮メモリデータベクトルのメモリアドレスである、請求項16に記載の装置。
【請求項２１】
前記SIMDプロセッサは、前記圧縮メモリデータベクトルに記憶されたデータをフェッチするように構成される、請求項20に記載の装置。
【請求項２２】
前記SIMDプロセッサは、前記圧縮メモリデータベクトルに記憶された前記データをフェッチしたことに応じて前記圧縮メモリデータベクトルに記憶された前記データを処理するように構成される、請求項21に記載の装置。
【請求項２３】
少なくとも1つの命令を含む非一時的コンピュータ可読記憶媒体であって、前記少なくとも1つの命令が、単一命令複数データ(SIMD)プロセッサによって実行されたときに、前記SIMDプロセッサに、
並列プレフィックス有効カウント命令を実行することによって、有効データと無効データとを含むデータ要素のシーケンスにおける第1の有効位置に関連する第1のオフセットを判定することと、
並列プレフィックス有効カウント命令を実行することによって、前記データ要素のシーケンスにおける第2の有効位置に関連する第2のオフセットを判定することであって、前記第2のオフセットが、前記第1のオフセットと、有効データに関連する前記データ要素のシーケンスにおける位置の数とに基づく、判定することと
を含む動作を実行させる、非一時的コンピュータ可読記憶媒体。
【請求項２４】
前記第1のオフセットは、前記第2のオフセットと並列に判定される、請求項23に記載の非一時的コンピュータ可読記憶媒体。
【請求項２５】
前記動作は、前記第2のオフセットを算出するために有効データに関連する前記第1の有効位置と前記第2の有効位置との間の前記位置の数を前記第1のオフセットに加算することをさらに含む、請求項23に記載の非一時的コンピュータ可読記憶媒体。
【請求項２６】
前記動作は、
前記データ要素のシーケンスに関連する第1のデータベクトルからの第1の有効データをメモリの第1のメモリアドレスに記憶することであって、前記第1のメモリアドレスが前記第1のオフセットに基づく、記憶することと、
前記データ要素のシーケンスに関連する第2のデータベクトルからの第2の有効データを前記メモリの特定のメモリアドレスに記憶することであって、前記特定のメモリアドレスが前記第2のオフセットに基づく、記憶することと
をさらに含む、請求項23に記載の非一時的コンピュータ可読記憶媒体。
【請求項２７】
前記動作は、前記メモリの前記第1のメモリアドレスに連続する追加順次メモリアドレスに、前記第1のデータベクトルからの追加有効データを記憶することをさらに含む、請求項26に記載の非一時的コンピュータ可読記憶媒体。
【請求項２８】
並列プレフィックス有効カウント命令を実行することを介して、データ要素のシーケンスにおける第1の有効位置に関連する第1のオフセットを判定するための手段であって、前記データ要素のシーケンスが有効データと無効データとを含む、手段と、
前記並列プレフィックス有効カウント命令を実行することを介して、前記データ要素のシーケンスにおける第2の有効位置に関連する第2のオフセットを判定するための手段であって、前記第2のオフセットが、前記第1のオフセットと、有効データに関連する前記データ要素のシーケンスにおける位置の数とに基づく、手段と
を備える、装置。
【請求項２９】
前記第1のオフセットは、前記第2のオフセットと並列に判定される、請求項28に記載の装置。
【請求項３０】
前記第2のオフセットは、有効データに関連する前記第1の有効位置と前記第2の有効位置との間の前記位置の数を前記第1のオフセットに加算することによって算出される、請求項28に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、2016年9月22日に出願された米国特許出願第15/273366号の優先権を主張する。米国特許出願第15/273366号の内容全体が参照により本明細書に組み込まれる。
【０００２】
本開示は、概してデータ記憶に関する。
【背景技術】
【０００３】
技術の進歩によって、より強力なコンピューティングデバイスが実現されている。たとえば、ラップトップコンピュータおよびデスクトップコンピュータおよびサーバなどのコンピューティングデバイス、ならびにポータブルワイヤレス電話、携帯情報端末(PDA)、およびページングデバイスなどのワイヤレスコンピューティングデバイスは、改良された計算能力を有し、ますます複雑になる動作を実行することができる。計算能力が向上することによって、様々な他のアプリケーションにおけるデバイス能力もまた拡張されている。たとえば、車両が処理デバイスを含み、全地球測位システム動作、または他の位置特定動作、自動運転動作、対話型通信動作およびエンターテインメント動作などを有効化することがある。他の例には、モノのインターネットを使用する通信などの拡張機能を有効化するためにコンピューティングデバイスもまた組み込んだ家庭用器具、防犯カメラ、計量機器などが含まれる。
【０００４】
コンピューティングデバイスが、1つまたは複数の疎なデータベクトルを処理するように動作可能なプロセッサを含むことがある。本明細書では、「疎なデータベクトル」は、無効データ(たとえば、「ドントケア」データ値、デフォルトデータ値、ヌルデータ値、またはゼロデータ値)を有するデータ要素と有効データ(たとえば、「注目する」データ値)を有するデータ要素とを含むデータのベクトルである。データベクトルに無効データがあると、計算および記憶は非効率的になる。たとえば、疎なデータベクトルは、処理する必要のない無効なデータ項目を有するデータ要素を含むので、プロセッサに含まれる構成要素(たとえば、ハードウェア)は、無効データを処理することによって非効率的に使用されることがある。
【０００５】
ハードウェア使用効率を向上させるための1つの技法は、プロセッサの処理パイプライン内で疎なデータベクトルを圧縮して圧縮データベクトルを生成することを含む。プロセッサは、圧縮データベクトルを生成するために、有効データを有するデータ要素が互いに隣接し、無効データを有するデータ要素が互いに隣接するように(プロセッサの処理パイプライン内で)データをシフトさせることがある。しかし、処理パイプライン内に圧縮データベクトルを生成すると、複雑なアドレス指定方式を有する比較的多数のデータベクトルが生じることがある。さらに、処理パイプライン内に圧縮データベクトルを生成すると、ハードウェアコストが増大することがある。
【発明の概要】
【課題を解決するための手段】
【０００６】
本明細書で開示する技法の一実装形態によれば、本方法は、単一命令複数データ(SIMD)プロセッサにおいて、有効データと無効データとを含むデータ要素のシーケンスにおける第1の有効位置に関連する第1のオフセットを判定するために並列プレフィックス有効カウント命令を実行することを含む。並列プレフィックス有効カウント命令を実行することはまた、SIMDプロセッサに、データ要素のシーケンスにおける第2の有効位置に関連する第2のオフセットを判定させる。第2のオフセットは、第1のオフセットと、有効データに関連するデータ要素のシーケンスにおける位置の数とに基づく。
【０００７】
本明細書で開示する技法の別の実装形態によれば、本装置は、メモリと、並列プレフィックス有効カウント命令を実行するように構成される単一命令複数データ(SIMD)とを含む。並列プレフィックス有効カウント命令を実行することは、SIMDプロセッサに、有効データと無効データとを含むデータ要素のシーケンスにおける第1の有効位置に関連する第1のオフセットを判定させ、データ要素のシーケンスにおける第2の有効位置に関連する第2のオフセットを判定させることができる。第2のオフセットは、第1のオフセットと、有効データに関連するデータ要素のシーケンスにおける位置の数とに基づく。
【０００８】
本明細書で開示する技法の一実装形態によれば、非一時的コンピュータ可読媒体は、単一命令複数データ(SIMD)プロセッサによって実行されたときに、SIMDプロセッサに、並列プレフィックス有効カウント命令を実行することによって、有効データと無効データとを含むデータ要素のシーケンスにおける第1の有効位置に関連する第1のオフセットを判定することを含む動作を実行させる少なくとも1つの命令を含む。本動作はまた、並列プレフィックス有効カウント命令を実行することによって、データ要素のシーケンスにおける第2の有効位置に関連する第2のオフセットを判定することを含む。第2のオフセットは、第1のオフセットと、有効データに関連するデータ要素のシーケンスにおける位置の数とに基づく。
【０００９】
本明細書で開示する技法の別の実装形態によれば、本装置は、有効データと無効データとを含むデータ要素のシーケンスにおける第1の有効位置に関連する第1のオフセットを判定するための手段を含む。本装置はまた、データ要素のシーケンスにおける第2の有効位置に関連する第2のオフセットを判定するための手段を含む。第2のオフセットは、第1のオフセットと、有効データに関連するデータ要素のシーケンスにおける位置の数とに基づく。
【図面の簡単な説明】
【００１０】
【図１】連続するメモリアドレスにデータを記憶するように動作可能なシステムの図である。
【図２】有効データと無効データとを含む疎なデータベクトルを示す図である。
【図３】圧縮メモリデータベクトルを示す図である。
【図４】圧縮メモリデータベクトルにおける有効データ値のオフセットを特定するためのチャートである。
【図５】連続するメモリアドレスにデータを記憶するための方法を示す図である。
【図６】連続するメモリアドレスにデータを記憶するように動作可能な構成要素を含む電子デバイスの図である。
【発明を実施するための形態】
【００１１】
図1を参照すると、連続するメモリアドレスにデータを記憶するように動作可能であるシステム100が示される。システム100は、モバイル電話、携帯情報端末(PDA)、エンターテインメントユニット、ナビゲーションデバイス、音楽プレーヤ、ビデオプレーヤ、デジタルビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、または任意の他のデバイス内に実装されてもよい。
【００１２】
システム100は、プロセッサ104に結合されたメモリ102を含む。一実装形態によれば、プロセッサ104は、単一命令複数データ(SIMD)プロセッサを含んでもよい。メモリ102は、プロセッサ104によって実行可能な命令を含む非一時的コンピュータ可読媒体であってもよい。たとえば、メモリ102は、プロセッサ104によって実行可能なスキャッタ命令106と、プロセッサ104によって実行可能な並列プレフィックス有効カウント命令108とを含む。
【００１３】
メモリ102はまた、圧縮メモリデータベクトル110を含む。後述のように、様々な疎なデータベクトルからの(無効データに対する)有効データが圧縮メモリデータベクトル110に記憶されてメモリ102内に「圧縮データベクトル」を生成してもよい。圧縮メモリデータベクトル110は、複数の連続するメモリアドレスを含む。例示のために、圧縮メモリデータベクトル110は、第1のメモリアドレス111、第1のメモリアドレス111に連続する第2のメモリアドレス112、第2のメモリアドレス112に連続する第3のメモリアドレス113、第3のメモリアドレス113に連続する第4のメモリアドレス114、第4のメモリアドレス114に連続する第5のメモリアドレス115、第5のメモリアドレス115に連続する第6のメモリアドレス116、第6のメモリアドレス116に連続する第7のメモリアドレス117、第7のメモリアドレス117に連続する第8のメモリアドレス118、第8のメモリアドレス118に連続する第9のメモリアドレス119、第9のメモリアドレス119に連続する第10のメモリアドレス120などを含む。
【００１４】
図1において、圧縮メモリデータベクトル110は16個のメモリアドレスを含む。たとえば、圧縮メモリデータベクトル110は、第15のメモリアドレス(図示せず)に連続する第16のメモリアドレス122を含む。しかし、他の実装形態では、圧縮メモリデータベクトル110はさらなる(またはより少ない)連続するメモリアドレスを含んでもよい。非限定的な例として、圧縮メモリデータベクトル110は32個の連続するメモリアドレスを含んでもよい。
【００１５】
プロセッサ104は、1つまたは複数のレジスタ130と、メモリストレージ回路140と、フェッチ回路150と、SIMD処理パイプライン152とを含む。1つまたは複数のレジスタ130は、プロセッサ104に含まれるように示されるが、他の実装形態では、1つまたは複数のレジスタ130はプロセッサ104から分離されてもよい(プロセッサ104にアクセス可能であってもよい)。他の実装形態によれば、プロセッサ104はさらなる(またはより少ない)構成要素を含んでもよい。非限定的な例として、他の実装形態では、プロセッサ104はまた、1つまたは複数の算術論理ユニット(ALU)、1つまたは複数の特定用途向け実行ユニットなどを含んでもよい。プロセッサ104は、メモリストレージ回路140と、フェッチ回路150と、SIMD処理パイプライン152とを含むように示されるが、他の実装形態では、各構成要素140、150、152の動作は単一の処理構成要素によって実行されてもよい。
【００１６】
1つまたは複数のレジスタ130は、第1のデータベクトル132、第2のデータベクトル134、および第3のデータベクトル136を記憶してもよい。「データ要素のシーケンス」は、データベクトル132、134、136に記憶されたデータ要素を含んでもよい。1つまたは複数のレジスタ130内に3つのデータベクトル132、134、136が含まれるように示されるが、他の実装形態では、1つまたは複数のレジスタ130はさらなる(またはより少ない)データベクトルを含んでもよい。各データベクトル132、134、136は「疎なデータベクトル」または「疎なデータアレイ」であってもよい。たとえば、各データベクトル132、134、136は、有効データ(たとえば、注目するデータ値)と無効データ(たとえば、ドントケアデータ値、デフォルトデータ値、またはゼロデータ値)とを含んでもよい。一実装形態によれば、データベクトル132、134、136は、(1つまたは複数のレジスタ130に記憶されるのではなく)メモリ102に記憶されてもよい。
【００１７】
図2を参照すると、データベクトル132、134、136がより詳細に示される。各データベクトル132、134、136は8つの位置(たとえば、「位置0」〜「位置7」)を含む。一実装形態によれば、各位置は「アレイ位置」に対応してもよい。各データベクトル132、134、136は8つの位置を含むように示されるが、他の実装形態では、各データベクトル132、134、136はさらなる(またはより少ない)位置を含んでもよい。非限定的な例として、各データベクトル132、134、136は16個の位置を含んでもよい。別の実装形態によれば、様々なデータベクトルがそれぞれに異なる数の位置を含んでもよい。非限定的な例として、1つのデータベクトルが8つの位置を含み、別のデータベクトルが16個の位置を含んでもよい。
【００１８】
図2によれば、第1のデータベクトル132は、3つの有効データ値と5つの無効データ値とを含む。たとえば、第1のデータベクトル132の「位置1」は有効データ値"A"を記憶し、第1のデータベクトル132の「位置3」は有効データ値"B"を記憶し、第1のデータベクトル132の「位置6」は有効データ値"C"を記憶する。第1のデータベクトル132の他の位置は無効データ値を記憶する。第2のデータベクトル134も、3つの有効データ値と5つの無効データ値とを含む。たとえば、第2のデータベクトル134の「位置2」は有効データ値"D"を記憶し、第2のデータベクトル134の「位置3」は有効データ値"E"を記憶し、第2のデータベクトル134の「位置6」は有効データ値"F"を記憶する。第2のデータベクトル134の他の位置は無効データ値を記憶する。第3のデータベクトル136は、4つの有効データ値と4つの無効データ値とを含む。たとえば、第3のデータベクトル136の「位置0」は有効データ値"G"を記憶し、第3のデータベクトル136の「位置4」は有効データ値"H"を記憶し、第3のデータベクトル136の「位置5」は有効データ値"I"を記憶し、第3のデータベクトル136の「位置7」は有効データ値"J"を記憶する。第3のデータベクトル136の他の位置は無効データ値を記憶する。
【００１９】
再び図1を参照すると、メモリストレージ回路140はデータベクトル解析回路142と、書込み回路144と、オフセット判定回路146とを含む。データベクトル解析回路142は、第1のデータベクトル132が有効データを有する位置を含むかどうかを判定するように構成されてもよい。たとえば、データベクトル解析回路142は、第1のデータベクトル132の「位置1」に有効データ値"A"が位置する(たとえば、第1の順序位置が有効データを有する)と判定してもよい。書込み回路144は、圧縮メモリデータベクトル110の連続するメモリアドレスに有効データ値を(並列に)書き込む(たとえば、記憶する)ように構成されてもよい。たとえば、第1のデータベクトル132の「位置1」に有効データ値"A"が位置すると判定されたことに応じて、メモリストレージ回路140が書込み回路144を有効化してもよい。書込み回路144は、有効化されたことに応じて第1のメモリアドレス111に有効データ値"A"を記憶してもよい。たとえば、書込み回路144はスキャッタ命令106(たとえば、ベクトルストア命令)を実行して、第1のメモリアドレス111に有効データ値"A"を記憶してもよい。
【００２０】
第1のメモリアドレス111に有効データ値"A"が記憶された後、データベクトル解析回路142は、第1のデータベクトル132が有効データを有する別の位置を含むかどうかを判定してもよい。たとえば、データベクトル解析回路142は、第1のデータベクトル132の「位置3」に有効データ値"B"が位置する(たとえば、次の順序位置が有効データを有する)と判定してもよい。第1のデータベクトル132の「位置3」に有効データ値"B"が位置すると判定されたことに応じて、メモリストレージ回路140が書込み回路144を有効化してもよい。書込み回路144は、有効化されたことに応じて第2のメモリアドレス112(たとえば、第1のメモリアドレス111の連続するメモリアドレス)に有効データ値"B"を記憶してもよい。たとえば、書込み回路144は、スキャッタ命令106を実行して、第2のメモリアドレス112に有効データ値"B"を記憶してもよい。
【００２１】
第2のメモリアドレス112に有効データ値"B"が記憶された後、データベクトル解析回路142は、第1のデータベクトル132が有効データを有する別の位置を含むかどうかを判定してもよい。たとえば、データベクトル解析回路142は、第1のデータベクトル132の「位置6」に有効データ値"C"が位置する(たとえば、次の順序位置が有効データを有する)と判定してもよい。第1のデータベクトル132の「位置6」に有効データ値"C"が位置すると判定されたことに応じて、メモリストレージ回路140が書込み回路144を有効化してもよい。書込み回路144は、有効化されたことに応じて第3のメモリアドレス113(たとえば、第2のメモリアドレス112の連続するメモリアドレス)に有効データ値"C"を記憶してもよい。たとえば、書込み回路144は、スキャッタ命令106を実行して、第3のメモリアドレス113に有効データ値"C"を記憶してもよい。したがって、第1のデータベクトル132の無効データ値がバイパスされてもよく、第1のデータベクトル132の有効データ値がメモリ102内の連続するメモリアドレスに記憶されてもよい。
【００２２】
第3のメモリアドレス113に有効データ値"C"が記憶された後、データベクトル解析回路142は、第1のデータベクトル132が有効データを有する別の位置を含むかどうかを判定してもよい。データベクトル解析回路142は、第1のデータベクトル132が有効データを有する別の位置を含まないと判定したことに応じて、第2のデータベクトル134が有効データを有する位置を含むかどうかを判定してもよい。たとえば、データベクトル解析回路142は、第2のデータベクトル134の「位置2」に有効データ値"D"が位置する(たとえば、第1の順序位置が有効データを有する)と判定してもよい。第2のデータベクトル134の「位置2」に有効データ値"D"が位置すると判定されたことに応じて、メモリストレージ回路140が書込み回路144を有効化してもよい。書込み回路144は、有効化されたことに応じて第4のメモリアドレス114(たとえば、第3のメモリアドレス113の連続するメモリアドレス)に有効データ値"D"を記憶してもよい。たとえば、書込み回路144は、スキャッタ命令106を実行して、第4のメモリアドレス114に有効データ値"D"を記憶してもよい。
【００２３】
第4のメモリアドレス114に有効データ値"D"が記憶された後、データベクトル解析回路142は、第2のデータベクトル134が有効データを有する別の位置を含むかどうかを判定してもよい。たとえば、データベクトル解析回路142は、第2のデータベクトル134の「位置3」に有効データ値"E"が位置する(たとえば、次の順序位置が有効データを有する)と判定してもよい。第2のデータベクトル134の「位置3」に有効データ値"E"が位置すると判定されたことに応じて、メモリストレージ回路140が書込み回路144を有効化してもよい。書込み回路144は、有効化されたことに応じて第5のメモリアドレス115(たとえば、第4のメモリアドレス114の連続するメモリアドレス)に有効データ値"E"を記憶してもよい。たとえば、書込み回路144は、スキャッタ命令106を実行して、第5のメモリアドレス115に有効データ値"E"を記憶してもよい。
【００２４】
第5のメモリアドレス115に有効データ値"E"が記憶された後、データベクトル解析回路142は、第2のデータベクトル134が有効データを有する別の位置を含むかどうかを判定してもよい。たとえば、データベクトル解析回路142は、第2のデータベクトル134の「位置6」に有効データ値"F"が位置する(たとえば、次の順序位置が有効データを有する)と判定してもよい。第2のデータベクトル134の「位置6」に有効データ値"F"が位置すると判定されたことに応じて、メモリストレージ回路140が書込み回路144を有効化してもよい。書込み回路144は、有効化されたことに応じて第6のメモリアドレス116(たとえば、第5のメモリアドレス115の連続するメモリアドレス)に有効データ値"F"を記憶してもよい。たとえば、書込み回路144は、スキャッタ命令106を実行して、第6のメモリアドレス116に有効データ値"F"を記憶してもよい。したがって、第2のデータベクトル134の無効データ値がバイパスされてもよく、第2のデータベクトル134の有効データ値がメモリ102内の連続するメモリアドレスに記憶されてもよい。
【００２５】
第6のメモリアドレス116に有効データ値"F"が記憶された後、データベクトル解析回路142は、第2のデータベクトル134が有効データを有する別の位置を含むかどうかを判定してもよい。データベクトル解析回路142は、第2のデータベクトル134が有効データを有する別の位置を含まないと判定したことに応じて、第3のデータベクトル136が有効データを有する位置を含むかどうかを判定してもよい。たとえば、データベクトル解析回路142は、第3のデータベクトル136の「位置1」に有効データ値"G"が位置する(たとえば、第1の順序位置が有効データを有する)と判定してもよい。第3のデータベクトル136の「位置1」に有効データ値"G"が位置すると判定されたことに応じて、メモリストレージ回路140が書込み回路144を有効化してもよい。書込み回路144は、有効化されたことに応じて第7のメモリアドレス117(たとえば、第6のメモリアドレス116の連続するメモリアドレス)に有効データ値"G"を記憶してもよい。たとえば、書込み回路144は、スキャッタ命令106を実行して、第7のメモリアドレス117に有効データ値"G"を記憶してもよい。
【００２６】
第7のメモリアドレス117に有効データ値"G"が記憶された後、データベクトル解析回路142は、第3のデータベクトル136が有効データを有する別の位置を含むかどうかを判定してもよい。たとえば、データベクトル解析回路142は、第3のデータベクトル136の「位置4」に有効データ値"H"が位置する(たとえば、次の順序位置が有効データを有する)と判定してもよい。第3のデータベクトル136の「位置4」に有効データ値"H"が位置すると判定されたことに応じて、メモリストレージ回路140が書込み回路144を有効化してもよい。書込み回路144は、有効化されたことに応じて第8のメモリアドレス118(たとえば、第7のメモリアドレス117の連続するメモリアドレス)に有効データ値"H"を記憶してもよい。たとえば、書込み回路144は、スキャッタ命令106を実行して、第8のメモリアドレス118に有効データ値"H"を記憶してもよい。
【００２７】
第8のメモリアドレス118に有効データ値"H"が記憶された後、データベクトル解析回路142は、第3のデータベクトル136が有効データを有する別の位置を含むかどうかを判定してもよい。たとえば、データベクトル解析回路142は、第3のデータベクトル136の「位置5」に有効データ値"I"が位置する(たとえば、次の順序位置が有効データを有する)と判定してもよい。第3のデータベクトル136の「位置5」に有効データ値"I"が位置すると判定されたことに応じて、メモリストレージ回路140が書込み回路144を有効化してもよい。書込み回路144は、有効化されたことに応じて第9のメモリアドレス119(たとえば、第8のメモリアドレス118の連続するメモリアドレス)に有効データ値"I"を記憶してもよい。たとえば、書込み回路144は、スキャッタ命令106を実行して、第9のメモリアドレス119に有効データ値"I"を記憶してもよい。
【００２８】
第9のメモリアドレス119に有効データ値"J"が記憶された後、データベクトル解析回路142は、第3のデータベクトル136が有効データを有する別の位置を含むかどうかを判定してもよい。たとえば、データベクトル解析回路142は、第3のデータベクトル136の「位置7」に有効データ値"J"が位置する(たとえば、次の順序位置が有効データを有する)と判定してもよい。第3のデータベクトル136の「位置7」に有効データ値"J"が位置すると判定されたことに応じて、メモリストレージ回路140が書込み回路144を有効化してもよい。書込み回路144は、有効化されたことに応じて第10のメモリアドレス120(たとえば、第9のメモリアドレス119の連続するメモリアドレス)に有効データ値"J"を記憶してもよい。たとえば、書込み回路144は、スキャッタ命令106を実行して、第10のメモリアドレス120に有効データ値"J"を記憶してもよい。したがって、第3のデータベクトル136の無効データ値がバイパスされてもよく、第3のデータベクトル136の有効データ値がメモリ102内の連続するメモリアドレスに記憶されてもよい。
【００２９】
同様の動作を実行して、メモリ102の圧縮メモリデータベクトル110に追加有効データ値を記憶してもよい。図3を参照すると、上述の記憶動作が完了した後の圧縮メモリデータベクトル110が示される。データベクトル132、134、136の各有効データ値が圧縮メモリデータベクトル110の連続するメモリアドレスに記憶されてもよい。したがって、疎なデータベクトル132、134、136から無効データを分離して、各メモリアドレスに有効データを有する圧縮メモリデータベクトル110を生成してもよい。後述のように、プロセッサ150は、メモリ102から圧縮メモリデータベクトル110をフェッチして、有効データと無効データとを処理するのではなく有効データを処理してもよい。有効データと無効データとを処理すると、プロセッサ104の使用が非効率的になることがある。
【００３０】
再び図1を参照するとわかるように、オフセット判定回路146は、圧縮メモリデータベクトル110に対するデータベクトル132、134、136ごとのオフセットを判定する(たとえば、カウントする)ように構成されてもよい。たとえば、オフセット判定回路146は、各データベクトル132、134、136について書込みイネーブルのカウント(たとえば、並列プレフィックス有効カウント)を判定してもよい。データベクトル132、134、136ごとのオフセットは、並列プレフィックス有効カウントに基づいてもよい。特定のデータベクトルに関する「オフセット」は、その特定のデータベクトルに関連する有効データが記憶される圧縮メモリデータベクトル110の第1の順次メモリアドレスである。オフセット判定回路146は、第1のデータベクトル132の第1のオフセット162、第2のデータベクトル134の第2のオフセット164、第3のデータベクトル136の第3のオフセット166を含む、データベクトル132〜136に対応する複数のオフセット160を生成してもよい。たとえば、図4を参照しながらさらに説明するように、第1のオフセット162は、第1のデータベクトル132の有効データが圧縮メモリデータベクトル110の第1のメモリアドレス111から始まることを示すための値"1"を有してもよく、第2のオフセット164は、第2のデータベクトル134の有効データが第4のメモリアドレス114から始まることを示すための値"4"を有してもよく、第3のオフセット166は、第3のデータベクトル136の有効データが圧縮メモリデータベクトル110の第7のメモリアドレス117から始まることを示すための値"7"を有してもよい。一実装形態によれば、プロセッサ104は、並列プレフィックス有効カウント命令108を実行してオフセットを判定してもよい。
【００３１】
例示のために、データベクトル132、134、136ごとのオフセットを特定するためのチャート400が図4に示される。チャート400によれば、メモリアドレス"0"は第1のデータベクトル132のベースアドレスとして使用されてもよい。第1のデータベクトル132の並列プレフィックスカウントは、圧縮メモリデータベクトル110に有効データ値「A」を記憶することに関連するイネーブル(たとえば、書込みイネーブル)に応じて(0から1に)増加してもよい。並列プレフィックスカウントが増加するたびに、メモリアドレスも大きくなる。したがって、チャート400内の「位置1」列において、メモリアドレスはメモリアドレス"0"からメモリアドレス"1"(たとえば、第1のメモリアドレス111)へと大きくなる。したがって、圧縮メモリデータベクトル110に対する第1のデータベクトル132のオフセット162は、第1のメモリアドレス111であり、第1のメモリアドレス111を示すためのオフセット値"1"を有するように記憶されてもよい。他の実装形態では、オフセット162は、ゼロベースのインデックス付け実装形態におけるオフセット値"0"のように、第1のメモリアドレス111を示す別のオフセット値を有するように記憶されてもよい。
【００３２】
並列プレフィックスカウントは、圧縮メモリデータベクトル110の第2のメモリアドレス112に有効データ値"B"を記憶することに関連するイネーブルに応じて(1から2に)増加してもよい。並列プレフィックスカウントはまた、圧縮メモリデータベクトル110の第3のメモリアドレス113に有効データ値"C"を記憶することに関連するイネーブルに応じて(2から3に)増加してもよい。上記で説明したように、直前に記憶された有効データ値のアドレスが新しいデータベクトルのベースとして使用されてもよい。メモリアドレス"3"(たとえば、第3のメモリアドレス113)は直前に記憶されたデータ値(たとえば、有効データ値"C")のアドレスであるので、第3のメモリアドレス113は、第2のデータベクトル134のベースとして使用されてもよい。第2のデータベクトル134の並列プレフィックスカウントが(0から1に)増加したときに、対応するメモリアドレスは、第2のデータベクトル134のオフセット164であってもよい。したがって、圧縮メモリデータベクトル110に対する第2のデータベクトル134のオフセット164は、第4のメモリアドレス114であり、オフセット値"4"(またはゼロベースのインデックス付け実装形態では"3")を有するように表されてもよい。同様に、チャート400によれば、圧縮メモリデータベクトル110に対する第3のデータベクトル136のオフセット166は、第7のメモリアドレス117であり、オフセット値"7"(またはゼロベースのインデックス付け実装形態では"6")を有するように表されてもよい。
【００３３】
再び図1を参照すると、(オフセット判定回路146によって判定される)オフセットは、メモリ102内のデータをデータベクトル132、134、136にマップするために使用されてもよい。たとえば、プロセッサ104は、第1のデータベクトル132のオフセット162が第1のメモリアドレス111であり、第2のデータベクトル134のオフセット164が第4のメモリアドレス114である場合、第1、第2、および第3のメモリアドレス111、112、113が第1のデータベクトル132に関連するデータを含むと判定してもよい。同様に、プロセッサ104は、第2のデータベクトル134のオフセット164が第4のメモリアドレス114であり、第3のデータベクトル136のオフセット166が第7のメモリアドレス117である場合、第4、第5、および第6のメモリアドレス114、115、116が第2のデータベクトル134に関連するデータを含むと判定してもよい。
【００３４】
データ値が圧縮メモリデータベクトル110に記憶された後、フェッチ回路150は、圧縮メモリデータベクトル110に記憶されたデータをフェッチするように構成されてもよい。フェッチ回路150は、圧縮メモリデータベクトル110をSIMD処理パイプライン152に供給してもよい。圧縮メモリデータベクトル110の各メモリアドレスは有効データ値を含むので、SIMD処理パイプライン152内の処理構成要素およびハードウェアは効率的に使用されることがある。たとえば、SIMD処理パイプライン152内の処理構成要素は、無効データ値に使用されるのではなく有効データ値に対して使用されてもよい。
【００３５】
図1〜図4に関して説明した技法は、SIMD処理パイプライン152によって処理される無効データ値の量を減らすことによって処理効率を向上させることがある。有効データ値をメモリ102内の連続するアドレスに記憶することによって、フェッチ回路150はSIMD処理パイプライン152に(有効データ値と無効データ値とではなく)有効データ値を供給してもよい。さらに、記憶プロセスの間各データベクトル132、134、136について並列プレフィックス有効カウントを追跡することによって、比較的単純なアドレス指定方式が実現されてもよい。たとえば、プロセッサ104は、並列プレフィックス有効カウントに基づいて、どのデータ値および/またはメモリアドレスが各データベクトル132、134、136に対応するかを特定してもよい。
【００３６】
図1〜図4を参照しながら説明したように、並列プレフィックス有効カウント命令108は、複数のデータベクトル132〜136からの疎なデータを圧縮メモリデータベクトル110内の密なデータ配列として圧縮する間に使用されてもよい。代替的に、または追加として、並列プレフィックス有効カウント命令108は、圧縮メモリデータベクトル110からのデータをデータベクトル-132〜136内の疎なデータ配列として展開する間に使用されてもよい。たとえば、データを圧縮メモリデータベクトル110として圧縮した後、圧縮メモリデータベクトル110内のデータが、圧縮メモリデータベクトル110内に修正データを生成するようにSIMD処理パイプライン152によって処理されてもよい。この修正データをデータベクトル132〜136の対応する位置に書き戻して元の有効データに修正データを上書きしてもよい。展開動作では、図4において説明したように、前のベクトルの最後のカウントにおける累積値を含む並列プレフィックス有効カウント命令108を使用して、データベクトル132〜136内の有効位置ごとの連続するオフセットまたはアドレスが算出されてもよい。並列プレフィックス有効カウント命令108の結果に基づいて、データを圧縮メモリデータベクトル110における各アドレスまたはオフセットからデータベクトル132〜136の有効データ位置にロードするためにロード/ギャザーが実行されてもよい。したがって、並列プレフィックス有効カウント命令108は、データ圧縮動作時に使用されるとともに、データ展開動作時にも使用されてもよい。
【００３７】
図5を参照すると、連続するメモリアドレスにデータを記憶するための方法500のフローチャートが示される。方法500は図1のシステム100によって実施されてもよい。
【００３８】
方法500は、502において、並列プレフィックス有効カウント命令を実行することによって、有効データと無効データとを含むデータ要素のシーケンスにおける第1の有効位置に関連する第1のオフセットを判定することを含む。たとえば、図1を参照すると、SIMDプロセッサ104は、並列プレフィックス有効カウント命令108を実行して第1のデータベクトル132の第1のオフセット162を判定してもよい。
【００３９】
方法500はまた、504において、並列プレフィックス有効カウント命令を実行することによって、データ要素のシーケンスにおける第2の有効位置に関連する第2のオフセットを判定することを含む。第2のオフセットは、第1のオフセットと、有効データに関連するデータ要素のシーケンスにおける位置の数とに基づいてもよい。たとえば、図1を参照すると、SIMDプロセッサ104は、並列プレフィックス有効カウント命令108を実行して第2のデータベクトル134の第2のオフセット164を判定してもよい。一実装形態によれば、第2のオフセットは、有効データに関連する第1のデータベクトル132における位置の数を第1のオフセット162に加算することによって算出されてもよい。
【００４０】
方法500はまた、506において、第1のデータベクトルからの第1の有効データをメモリの第1のメモリアドレスに記憶することを含む。第1のメモリアドレスは、第1のオフセットに基づいてもよい。たとえば、図1を参照すると、第1のデータベクトル132の「位置1」に有効データ値「A」が位置すると判定されたことに応じて、メモリストレージ回路140が書込み回路144を有効化してもよい。書込み回路144は、有効化されたことに応じて第1のメモリアドレス111に有効データ値「A」を記憶してもよい。たとえば、書込み回路144は、スキャッタ命令106を実行して、第1のメモリアドレス111に有効データ値「A」を記憶してもよい。
【００４１】
方法500はまた、508において、第2のデータベクトルからの第2の有効データをメモリの特定のメモリアドレスに記憶することを含む。特定のメモリアドレスは、第2のオフセットに基づいてもよい。たとえば、図1を参照すると、メモリストレージ回路140は、書込み回路144を有効化してもよい。書込み回路144は、有効化されたことに応じて第4のメモリアドレス114(たとえば、方法500による「第2のメモリアドレス」)に有効データ値"D"を記憶してもよい。たとえば、書込み回路144は、スキャッタ命令106を実行して、第4のメモリアドレス114に有効データ値"D"を記憶してもよい。
【００４２】
一実装形態によれば、方法500は、メモリの第1のメモリアドレスに連続する追加順次メモリアドレスに、第1のデータベクトルからの追加有効データを記憶することを含んでもよい。(第2の有効データが記憶された)特定のメモリアドレスは、追加順次メモリアドレスの最後のメモリアドレスに連続してもよい。方法500の一実装形態によれば、第1の有効データと第2の有効データは並列に記憶されてもよい。たとえば、第2の有効データを第1の有効データに並列に記憶することは、第1の期間の間(たとえば、SIMDプロセッサ104の単一のクロックサイクルの間)第1の有効データを記憶し、並行して第1の期間の間第2の有効データを記憶することを含む。
【００４３】
本方法500の一実装形態によれば、第1のメモリアドレスおよび特定のメモリアドレスは、圧縮メモリデータベクトル(たとえば、圧縮メモリデータベクトル110)のメモリアドレスであってもよい。方法500はまた、圧縮メモリデータベクトルに記憶されたデータをフェッチし、圧縮メモリデータベクトルに記憶されたデータをフェッチしたことに応じて圧縮メモリデータベクトルに記憶されたデータを処理することを含んでもよい。
【００４４】
方法500の一実装形態によれば、圧縮メモリデータベクトルに記憶されたデータを処理した後、「展開」動作が実行されてもよい。連続するメモリにおける処理済みのデータの位置をデータの疎なシーケンスにおける有効データの位置にマップするオフセットを判定するために並列プレフィックス有効カウント命令が実行されてもよい。処理済みのデータは次いで、連続するメモリからデータの疎なシーケンスにおける有効データの位置にロードされてもよい。したがって、連続するメモリにおける処理済みのデータの圧縮された配列が、データベクトル132〜136における有効データの位置に基づいて処理済みのデータの疎な配列に展開されてもよい。
【００４５】
図5の方法500は、SIMD処理パイプライン152によって処理される無効データ値の量を減らすことによって処理効率を向上させることがある。有効データ値をメモリ102内の連続するアドレスに記憶することによって、フェッチ回路150はSIMD処理パイプライン152に(有効データ値と無効データ値とではなく)有効データ値を供給してもよい。さらに、記憶プロセスの間データベクトル132、134、136ごとに並列プレフィックス有効カウントを追跡することによって、比較的単純なアドレス指定方式が実現されてもよい。たとえば、プロセッサ104は、並列プレフィックス有効カウントに基づいて、どのデータ値および/またはメモリアドレスが各データベクトル132、134、136に対応するかを特定してもよい。
【００４６】
図6を参照すると、電子デバイス600のブロック図が示される。電子デバイス600は、説明的な例として、モバイルデバイス(たとえば、携帯電話)に対応してもよい。他の実装形態では、電子デバイス600は、コンピュータ(たとえば、サーバ、ラップトップコンピュータ、タブレットコンピュータ、またはデスクトップコンピュータ)、ウェアラブル電子デバイス(たとえば、パーソナルカメラ、ヘッドマウントディスプレイ、または時計)、車両制御システムもしくはコンソール、家電製品、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、携帯情報端末(PDA)、テレビジョン、モニタ、チューナ、ラジオ(たとえば、衛星ラジオ)、音楽プレーヤ(たとえば、デジタル音楽プレーヤまたはポータブル音楽プレーヤ)、ビデオプレーヤ(たとえば、デジタルビデオディスク(DVD)プレーヤまたはポータブルデジタルビデオプレーヤなどのデジタルビデオプレーヤ)、ロボット、ヘルスケアデバイス、別の電子デバイス、またはそれらの組合せに対応する場合がある。
【００４７】
電子デバイス600は、デジタル信号プロセッサ(DSP)、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、別の処理デバイス、またはそれらの組合せなどのプロセッサ104を含む。プロセッサ104は、1つまたは複数のレジスタ130と、メモリストレージ回路140と、フェッチ回路150と、SIMD処理パイプライン152とを含む。1つまたは複数のレジスタ110は、第1のデータベクトル132、第2のデータベクトル134、および第3のデータベクトル136を記憶する。メモリストレージ回路140は、データベクトル解析回路142と、書込み回路144と、オフセット判定回路146とを含む。プロセッサ104は、図1に関して説明したのと実質的に同様に動作してもよい。
【００４８】
電子デバイス600は、メモリ102をさらに含んでもよい。メモリ102は、プロセッサ104に結合されてもよくあるいはプロセッサ104内に組み込まれてもよい。メモリ102は、ランダムアクセスメモリ(RAM)、磁気抵抗ランダムアクセスメモリ(MRAM)、フラッシュメモリ、読取り専用メモリ(ROM)、プログラマブル読取り専用メモリ(PROM)、消去可能プログラマブル読取り専用メモリ(EPROM)、電気的消去可能プログラマブル読取り専用メモリ(EEPROM)、1つまたは複数のレジスタ、ハードディスク、リムーバブルディスク、コンパクトディスク読取り専用メモリ(CD-ROM)、別のストレージデバイス、またはそれらの組合せを含んでもよい。メモリ102は、スキャッタ命令106、並列プレフィックス有効カウント命令108、およびプロセッサ610によって実行可能な1つまたは複数の他の命令668を記憶してもよい。たとえば、プロセッサ104は、スキャッタ命令106を実行して圧縮メモリデータベクトル110に(データベクトル132、134、136の)有効データ値を記憶してもよい。プロセッサ104はまた、並列プレフィックス有効カウント命令108を実行して圧縮メモリデータベクトル110に対する各データベクトル132、134、136のオフセットを判定してもよい。プロセッサ104はまた、1つまたは複数の他の命令668を実行して図5の方法500を実行してもよい。
【００４９】
図6はまた、プロセッサ104およびディスプレイ628に結合されたディスプレイコントローラ626を示す。符号器/復号器(コーデック)634をプロセッサ104に結合することも可能である。スピーカ636およびマイクロフォン638をコーデック634に結合することができる。図6はまた、ワイヤレスコントローラおよび/またはトランシーバのようなワイヤレスインターフェース640をプロセッサ104とアンテナ642とに結合できることを示す。
【００５０】
特定の例では、プロセッサ104、ディスプレイコントローラ626、メモリ102、コーデック634、およびワイヤレスインターフェース640が、システムインパッケージまたはシステムオンチップデバイス622内に含まれる。さらに、入力デバイス630および電源644が、システムオンチップデバイス622に結合されてもよい。その上、特定の例では、図6に示されるように、ディスプレイ628、入力デバイス630、スピーカ636、マイクロフォン638、アンテナ642、および電源644が、システムオンチップデバイス622の外部にある。しかしながら、ディスプレイ628、入力デバイス630、スピーカ636、マイクロフォン638、アンテナ642、および電源644は、インターフェースまたはコントローラなどのシステムオンチップデバイス622の構成要素に結合することができる。
【００５１】
開示した例に関連して、コンピュータ可読媒体(たとえば、メモリ102)は、プロセッサ(たとえば、プロセッサ104)によって実行可能である命令を記憶して動作を実行する。動作には、メモリの第1のメモリアドレスに第1の有効データを記憶することが含まれる。第1の有効データは、有効データと無効データとを含む第1のデータベクトルの第1の特定の位置に位置してもよい。第1の特定の位置は、有効データに関連付けられてもよい。動作にはまた、第1のデータベクトルが有効データに関連する別の位置を含むかどうかを判定することが含まれる。第1のデータベクトルが有効データに関連する別の位置を含む場合、動作には、他の位置に位置する有効データを第1のメモリアドレスに連続する第2のメモリアドレスに記憶することが含まれる。動作には、第1のデータベクトルが有効データに関連する別の位置を含まない場合に第2のメモリアドレスに第2の有効データを記憶することが含まれる。第2のデータは、有効データと無効データとを含む第2のデータベクトルの第2の特定の位置に位置してもよい。第2の特定の位置は、有効データに関連付けられてもよい。
【００５２】
説明した技法に関連して、装置が、並列プレフィックス有効カウント命令を実行することを介して、データ要素のシーケンスにおける第1の有効位置に関連する第1のオフセットを判定するための手段を含む。データ要素のシーケンスは、有効データと無効データとを含んでもよい。たとえば、第1のオフセットを判定するための手段は、図1および図6のメモリストレージ回路140と、図1および図6のデータベクトル解析回路142と、図1および図6のオフセット判定回路146と、図1および図6のプロセッサ104と、1つもしくは複数の他のデバイス、回路、モジュール、またはそれらの任意の組合せとを含んでもよい。
【００５３】
本装置は、並列プレフィックス有効カウント命令を実行することを介して、データ要素のシーケンスにおける第2の有効位置に関連する第2のオフセットを判定するための手段を含む。第2のオフセットは、第1のオフセットと、有効データに関連するデータ要素のシーケンスにおける位置の数とに基づいてもよい。たとえば、第2のオフセットを判定するための手段は、図1および図6のメモリストレージ回路140と、図1および図6のデータベクトル解析回路142と、図1および図6のオフセット判定回路146と、図1および図6のプロセッサ104と、1つもしくは複数の他のデバイス、回路、モジュール、またはそれらの任意の組合せとを含んでもよい。
【００５４】
上記で開示したデバイスおよび機能は、コンピュータファイル(たとえば、RTL、GDSII、GERBERなど)を使用して設計され表されてもよい。コンピュータファイルはコンピュータ可読媒体に記憶されてもよい。そのようなファイルの一部または全部が、そのようなファイルに基づいてデバイスを製造する製造者に提供されてもよい。得られる生成物は、次いで、ダイに切断され、集積回路(または「チップ」)にパッケージされるウエハを含む。次いで、チップは、図6の電子デバイス600などの電子デバイスにおいて使用される。
【００５５】
当業者には、本明細書で開示する実装形態に関して説明する様々な例示的な論理ブロック、構成、モジュール、回路、およびアルゴリズムステップが電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装されてもよいことがさらに諒解されよう。上記では、様々な例示的な構成要素、ブロック、構成、モジュール、回路、およびステップについて、それらの機能の観点から概括的に説明した。そのような機能がハードウェアとして実装されるか、またはソフトウェアとして実装されるかは、特定の適用例およびシステム全体に課される設計制約に依存する。当業者は説明された機能を具体的な適用例ごとに様々な方法で実装してもよいが、そのような実装の決定は、本開示の範囲からの逸脱を引き起こすものと解釈されるべきでない。
【００５６】
本明細書で開示した実装形態に関して説明した方法またはアルゴリズムのステップは、直接ハードウェアにおいて、プロセッサによって実行されるソフトウェアモジュールにおいて、またはその2つの組合せにおいて具現化されてもよい。ソフトウェアモジュールは、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、プログラマブル読取り専用メモリ(PROM)、消去可能プログラマブル読取り専用メモリ(EPROM)、電気的消去可能プログラマブル読取り専用メモリ(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、コンパクトディスク読取り専用メモリ(CD-ROM)、または当技術分野で知られている任意の他の形態の記憶媒体の中に存在してもよい。例示的な非一時的(たとえば、有形)記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサに一体化される場合がある。プロセッサおよび記憶媒体は特定用途向け集積回路(ASIC)内に存在してもよい。ASICは、コンピューティングデバイスまたはユーザ端末に存在してもよい。代替として、プロセッサおよび記憶媒体は、コンピューティングデバイスまたはユーザ端末の中に個別の構成要素として存在してもよい。
【００５７】
開示された実装形態のこれまでの説明は、開示した実装形態を当業者が作成または使用することを可能にするために提供される。これらの実装形態に対する様々な修正は当業者には容易に明らかであり、本明細書で定義された原理は、本開示の範囲から逸脱することなく他の実装形態に適用されてもよい。したがって、本開示は、本明細書に示された実装形態に限定されるものではなく、以下の特許請求の範囲によって定義される原理および新規の特徴と一致する、考えられる最も広い範囲を与えられるべきである。
【符号の説明】
【００５８】
100  システム
102  メモリ
104  プロセッサ
106  スキャッタ命令
108  並列プレフィックス有効カウント命令
110  圧縮メモリデータベクトル
111  第1のメモリアドレス
112  第2のメモリアドレス
113  第3のメモリアドレス
114  第4のメモリアドレス
115  第5のメモリアドレス
116  第6のメモリアドレス
117  第7のメモリアドレス
118  第8のメモリアドレス
119  第9のメモリアドレス
120  第10のメモリアドレス
122  第16のメモリアドレス
130  レジスタ
132  第1のデータベクトル
134  第2のデータベクトル
136  第3のデータベクトル
140  メモリストレージ回路
142  データベクトル解析回路
144  書込み回路
146  オフセット判定回路
150  フェッチ回路
152  SIMD処理パイプライン
160  オフセット
162  第1のオフセット
164  第2のオフセット
166  第3のオフセット
600  電子デバイス
610  プロセッサ
622  システムオンチップデバイス
626  ディスプレイコントローラ
628  ディスプレイ
630  入力デバイス
634  符号器/復号器、コーデック
636  スピーカ
638  マイクロフォン
640  ワイヤレスインターフェース
642  アンテナ
644  電源
668  命令
【図１】
2019530091.tif 000003
【図２】
2019530091.tif 000004
【図３】
2019530091.tif 000005
【図４】
2019530091.tif 000006
【図５】
2019530091.tif 000007
【図６】
2019530091.tif 000008
【国際調査報告】
2019530091.tif 000009