JP2019530091A - 連続するメモリアドレスにおけるデータ記憶 - Google Patents

連続するメモリアドレスにおけるデータ記憶 Download PDF

Info

Publication number
JP2019530091A
JP2019530091A JP2019515353A JP2019515353A JP2019530091A JP 2019530091 A JP2019530091 A JP 2019530091A JP 2019515353 A JP2019515353 A JP 2019515353A JP 2019515353 A JP2019515353 A JP 2019515353A JP 2019530091 A JP2019530091 A JP 2019530091A
Authority
JP
Japan
Prior art keywords
data
valid
offset
memory
memory address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2019515353A
Other languages
English (en)
Other versions
JP2019530091A5 (ja
JP6985377B2 (ja
Inventor
エリック・マフリン
デイヴィッド・ホイル
Original Assignee
クアルコム,インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2019530091A publication Critical patent/JP2019530091A/ja
Publication of JP2019530091A5 publication Critical patent/JP2019530091A5/ja
Application granted granted Critical
Publication of JP6985377B2 publication Critical patent/JP6985377B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6011Encoder aspects
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6017Methods or arrangements to increase the throughput
    • H03M7/6023Parallelization

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)
  • Communication Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

連続するメモリアドレスにデータを記憶するための方法が、第1のデータベクトルの第1のオフセットを判定し、有効データと無効データとを含む第2のデータベクトルの第2のオフセットを判定するために単一命令複数データ(SIMD)プロセッサにおいて、並列プレフィックス有効カウント命令を実行することを含む。第2のオフセットは、第1のオフセットと、有効データに関連する第1のデータベクトルにおける位置の数とに基づく。本方法はまた、第1のデータベクトルからの第1の有効データをメモリの第1のメモリアドレスに記憶することと、第2のデータベクトルからの第2の有効データをメモリの特定のメモリアドレスに記憶することとを含む。第1のメモリアドレスは、第1のオフセットに基づき、特定のメモリアドレスは、第2のオフセットに基づく。

Description

関連出願の相互参照
本出願は、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 命令

Claims (30)

  1. 単一命令複数データ(SIMD)プロセッサにおいて、
    有効データと無効データとを含むデータ要素のシーケンスにおける第1の有効位置に関連する第1のオフセットを判定することと、
    前記データ要素のシーケンスにおける第2の有効位置に関連する第2のオフセットを判定することであって、前記第2のオフセットが、前記第1のオフセットと、有効データに関連する前記データ要素のシーケンスにおける位置の数とに基づく、判定することと
    のために並列プレフィックス有効カウント命令を実行するステップ
    を含む、方法。
  2. 前記第1のオフセットは、前記第2のオフセットと並列に判定される、請求項1に記載の方法。
  3. 前記第2のオフセットを算出するために、有効データに関連する前記第1の有効位置と前記第2の有効位置との間の前記位置の数を前記第1のオフセットに加算するステップをさらに含む、請求項1に記載の方法。
  4. 前記データ要素のシーケンスに関連する第1のデータベクトルからの第1の有効データをメモリの第1のメモリアドレスに記憶するステップであって、前記第1のメモリアドレスが前記第1のオフセットに基づく、ステップと、
    前記データ要素のシーケンスに関連する第2のデータベクトルからの第2の有効データを前記メモリの特定のメモリアドレスに記憶するステップであって、前記特定のメモリアドレスが前記第2のオフセットに基づく、ステップと
    をさらに含む、請求項1に記載の方法。
  5. 前記メモリの前記第1のメモリアドレスに連続する追加順次メモリアドレスに、前記第1のデータベクトルからの追加有効データを記憶するステップをさらに含む、請求項4に記載の方法。
  6. 前記特定のメモリアドレスは、前記追加順次メモリアドレスの最後のメモリアドレスに連続する、請求項5に記載の方法。
  7. 前記第1の有効データと前記第2の有効データは、並列に記憶される、請求項4に記載の方法。
  8. 前記第2の有効データを前記第1の有効データに並列に記憶するステップは、
    第1の期間の間前記第1の有効データを記憶するステップと、
    前記第1の期間の間前記第2の有効データを並行して記憶するステップと
    を含む、請求項7に記載の方法。
  9. 前記第1のメモリアドレスおよび前記特定のメモリアドレスは、圧縮メモリデータベクトルのメモリアドレスである、請求項4に記載の方法。
  10. 前記圧縮メモリデータベクトルに記憶されたデータをフェッチするステップをさらに含む、請求項9に記載の方法。
  11. 前記圧縮メモリデータベクトルに記憶された前記データをフェッチしたことに応じて前記圧縮メモリデータベクトルに記憶された前記データを処理するステップをさらに含む、請求項10に記載の方法。
  12. 前記圧縮メモリデータベクトルに記憶された前記データを処理した後、
    連続するメモリにおける処理済みのデータの位置をデータの疎なシーケンスにおける有効データの位置にマップするオフセットを判定するために前記並列プレフィックス有効カウント命令を実行するステップと、
    前記連続するメモリからの前記処理済みのデータを前記データの疎なシーケンスにおける前記有効データの位置にロードするステップと
    をさらに含む、請求項1に記載の方法。
  13. メモリと、
    単一命令複数データ(SIMD)プロセッサであって、
    並列プレフィックス有効カウント命令を実行するように構成される、前記並列プレフィックス有効カウント命令を実行することが、前記SIMDプロセッサに、
    有効データと無効データとを含むデータ要素のシーケンスにおける第1の有効位置に関連する第1のオフセットを判定することと、
    前記データ要素のシーケンスにおける第2の有効位置に関連する第2のオフセットを判定することであって、前記第2のオフセットが、前記第1のオフセットと、有効データに関連する前記データ要素のシーケンスにおける位置の数とに基づく、判定することと
    を行わせる、SIMDプロセッサと
    を備える、装置。
  14. 前記第1のオフセットは、前記第2のオフセットと並列に判定される、請求項13に記載の装置。
  15. 前記SIMDプロセッサは、前記第2のオフセットを算出するために、有効データに関連する前記第1の有効位置と前記第2の有効位置との間の前記位置の数を前記第1のオフセットに加算するように構成される、請求項13に記載の装置。
  16. 前記SIMDプロセッサは、
    前記データ要素のシーケンスに関連する第1のデータベクトルからの第1の有効データを前記メモリの第1のメモリアドレスに記憶することであって、前記第1のメモリアドレスが前記第1のオフセットに基づく、記憶することと、
    前記データ要素のシーケンスに関連する第2のデータベクトルからの第2の有効データを前記メモリの特定のメモリアドレスに記憶することであって、前記特定のメモリアドレスが前記第2のオフセットに基づく、記憶することと
    を行うようにさらに構成される、請求項13に記載の装置。
  17. 前記SIMDプロセッサは、前記メモリの前記第1のメモリアドレスに連続する追加順次メモリアドレスに、前記第1のデータベクトルからの追加有効データを記憶するように構成される、請求項16に記載の装置。
  18. 前記特定のメモリアドレスは、前記追加順次メモリアドレスの最後のメモリアドレスに連続する、請求項17に記載の装置。
  19. 前記第1の有効データと前記第2の有効データは、並列に記憶される、請求項16に記載の装置。
  20. 前記第1のメモリアドレスおよび前記特定のメモリアドレスは、圧縮メモリデータベクトルのメモリアドレスである、請求項16に記載の装置。
  21. 前記SIMDプロセッサは、前記圧縮メモリデータベクトルに記憶されたデータをフェッチするように構成される、請求項20に記載の装置。
  22. 前記SIMDプロセッサは、前記圧縮メモリデータベクトルに記憶された前記データをフェッチしたことに応じて前記圧縮メモリデータベクトルに記憶された前記データを処理するように構成される、請求項21に記載の装置。
  23. 少なくとも1つの命令を含む非一時的コンピュータ可読記憶媒体であって、前記少なくとも1つの命令が、単一命令複数データ(SIMD)プロセッサによって実行されたときに、前記SIMDプロセッサに、
    並列プレフィックス有効カウント命令を実行することによって、有効データと無効データとを含むデータ要素のシーケンスにおける第1の有効位置に関連する第1のオフセットを判定することと、
    並列プレフィックス有効カウント命令を実行することによって、前記データ要素のシーケンスにおける第2の有効位置に関連する第2のオフセットを判定することであって、前記第2のオフセットが、前記第1のオフセットと、有効データに関連する前記データ要素のシーケンスにおける位置の数とに基づく、判定することと
    を含む動作を実行させる、非一時的コンピュータ可読記憶媒体。
  24. 前記第1のオフセットは、前記第2のオフセットと並列に判定される、請求項23に記載の非一時的コンピュータ可読記憶媒体。
  25. 前記動作は、前記第2のオフセットを算出するために有効データに関連する前記第1の有効位置と前記第2の有効位置との間の前記位置の数を前記第1のオフセットに加算することをさらに含む、請求項23に記載の非一時的コンピュータ可読記憶媒体。
  26. 前記動作は、
    前記データ要素のシーケンスに関連する第1のデータベクトルからの第1の有効データをメモリの第1のメモリアドレスに記憶することであって、前記第1のメモリアドレスが前記第1のオフセットに基づく、記憶することと、
    前記データ要素のシーケンスに関連する第2のデータベクトルからの第2の有効データを前記メモリの特定のメモリアドレスに記憶することであって、前記特定のメモリアドレスが前記第2のオフセットに基づく、記憶することと
    をさらに含む、請求項23に記載の非一時的コンピュータ可読記憶媒体。
  27. 前記動作は、前記メモリの前記第1のメモリアドレスに連続する追加順次メモリアドレスに、前記第1のデータベクトルからの追加有効データを記憶することをさらに含む、請求項26に記載の非一時的コンピュータ可読記憶媒体。
  28. 並列プレフィックス有効カウント命令を実行することを介して、データ要素のシーケンスにおける第1の有効位置に関連する第1のオフセットを判定するための手段であって、前記データ要素のシーケンスが有効データと無効データとを含む、手段と、
    前記並列プレフィックス有効カウント命令を実行することを介して、前記データ要素のシーケンスにおける第2の有効位置に関連する第2のオフセットを判定するための手段であって、前記第2のオフセットが、前記第1のオフセットと、有効データに関連する前記データ要素のシーケンスにおける位置の数とに基づく、手段と
    を備える、装置。
  29. 前記第1のオフセットは、前記第2のオフセットと並列に判定される、請求項28に記載の装置。
  30. 前記第2のオフセットは、有効データに関連する前記第1の有効位置と前記第2の有効位置との間の前記位置の数を前記第1のオフセットに加算することによって算出される、請求項28に記載の装置。
JP2019515353A 2016-09-22 2017-07-27 連続するメモリアドレスにおけるデータ記憶 Active JP6985377B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/273,366 2016-09-22
US15/273,366 US10162752B2 (en) 2016-09-22 2016-09-22 Data storage at contiguous memory addresses
PCT/US2017/044227 WO2018057115A1 (en) 2016-09-22 2017-07-27 Data storage at contiguous memory addresses

Publications (3)

Publication Number Publication Date
JP2019530091A true JP2019530091A (ja) 2019-10-17
JP2019530091A5 JP2019530091A5 (ja) 2020-08-20
JP6985377B2 JP6985377B2 (ja) 2021-12-22

Family

ID=59558510

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019515353A Active JP6985377B2 (ja) 2016-09-22 2017-07-27 連続するメモリアドレスにおけるデータ記憶

Country Status (9)

Country Link
US (1) US10162752B2 (ja)
EP (1) EP3516774B1 (ja)
JP (1) JP6985377B2 (ja)
KR (1) KR102561619B1 (ja)
CN (1) CN109690956B (ja)
BR (1) BR112019005612A2 (ja)
CA (1) CA3033960A1 (ja)
ES (1) ES2967320T3 (ja)
WO (1) WO2018057115A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111158757B (zh) * 2019-12-31 2021-11-30 中昊芯英(杭州)科技有限公司 并行存取装置和方法以及芯片

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0731669B2 (ja) * 1986-04-04 1995-04-10 株式会社日立製作所 ベクトル・プロセツサ
JP2000022707A (ja) 1998-07-03 2000-01-21 Fujitsu Ltd データ伝送方法、およびデータ伝送システム
CN1400754A (zh) 2001-05-28 2003-03-05 松下电器产业株式会社 数据传送装置
US7889765B2 (en) 2005-11-30 2011-02-15 Time Warner Cable Inc. Apparatus and methods for utilizing variable rate program streams in a network
CN101689130A (zh) 2006-12-06 2010-03-31 弗森多系统公司(dba弗森-艾奥) 采用渐进raid存储数据的装置、系统和方法
US9280342B2 (en) * 2011-07-20 2016-03-08 Oracle International Corporation Vector operations for compressing selected vector elements
US9792117B2 (en) * 2011-12-08 2017-10-17 Oracle International Corporation Loading values from a value vector into subregisters of a single instruction multiple data register
US9697174B2 (en) * 2011-12-08 2017-07-04 Oracle International Corporation Efficient hardware instructions for processing bit vectors for single instruction multiple data processors
US9274937B2 (en) 2011-12-22 2016-03-01 Longitude Enterprise Flash S.A.R.L. Systems, methods, and interfaces for vector input/output operations
CN107729018A (zh) * 2012-09-28 2018-02-23 英特尔公司 循环向量化方法和设备
US9268571B2 (en) * 2012-10-18 2016-02-23 Qualcomm Incorporated Selective coupling of an address line to an element bank of a vector register file
US9606961B2 (en) * 2012-10-30 2017-03-28 Intel Corporation Instruction and logic to provide vector compress and rotate functionality
US11113054B2 (en) * 2013-09-10 2021-09-07 Oracle International Corporation Efficient hardware instructions for single instruction multiple data processors: fast fixed-length value compression
US10133570B2 (en) * 2014-09-19 2018-11-20 Intel Corporation Processors, methods, systems, and instructions to select and consolidate active data elements in a register under mask into a least significant portion of result, and to indicate a number of data elements consolidated

Also Published As

Publication number Publication date
US20180081803A1 (en) 2018-03-22
KR20190056365A (ko) 2019-05-24
EP3516774A1 (en) 2019-07-31
WO2018057115A1 (en) 2018-03-29
CN109690956A (zh) 2019-04-26
KR102561619B1 (ko) 2023-07-28
CN109690956B (zh) 2024-02-13
BR112019005612A2 (pt) 2019-10-08
EP3516774B1 (en) 2023-11-29
CA3033960A1 (en) 2018-03-29
ES2967320T3 (es) 2024-04-29
JP6985377B2 (ja) 2021-12-22
US10162752B2 (en) 2018-12-25

Similar Documents

Publication Publication Date Title
JP6243000B2 (ja) マルチモードベクトル処理を提供するためのプログラム可能データ経路構成を有するベクトル処理エンジン、ならびに関連ベクトルプロセッサ、システム、および方法
EP3910503A1 (en) Device and method for executing matrix addition/subtraction operation
EP3033670B1 (en) Vector accumulation method and apparatus
JP6293795B2 (ja) スカラーレジスタデータ値に基づいたベクトルレジスタアドレス指定および関数
CN107315717B (zh) 一种用于执行向量四则运算的装置和方法
CN107315566B (zh) 一种用于执行向量循环移位运算的装置和方法
CN107315575B (zh) 一种用于执行向量合并运算的装置和方法
TWI803634B (zh) 子向量數值之加載及複製之處理器、操作一處理器之方法、處理設備及包含指令的非暫時性電腦可讀媒體
WO2017185405A1 (zh) 一种用于执行向量外积运算的装置和方法
TW201702886A (zh) 記憶體裝置、包括該記憶體裝置的記憶體系統及記憶體裝置的操作方法
JP6985377B2 (ja) 連続するメモリアドレスにおけるデータ記憶
US10706316B2 (en) System and method of feature descriptor processing
CN109478199B (zh) 分段线性逼近的系统及方法
JP2018521422A (ja) ベクトル長クエリ命令
TWI752068B (zh) 一種運算裝置及其操作方法
US20150154144A1 (en) Method and apparatus for performing single instruction multiple data (simd) operation using pairing of registers
CN115437603A (zh) 用于生成随机数的方法及其相关产品

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200708

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200708

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210630

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210719

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211019

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20211101

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211125

R150 Certificate of patent or registration of utility model

Ref document number: 6985377

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150