JP6388654B2 - メモリアクセス中のデータ並べ替え - Google Patents

メモリアクセス中のデータ並べ替え Download PDF

Info

Publication number
JP6388654B2
JP6388654B2 JP2016529467A JP2016529467A JP6388654B2 JP 6388654 B2 JP6388654 B2 JP 6388654B2 JP 2016529467 A JP2016529467 A JP 2016529467A JP 2016529467 A JP2016529467 A JP 2016529467A JP 6388654 B2 JP6388654 B2 JP 6388654B2
Authority
JP
Japan
Prior art keywords
data
sequential
memory controller
register file
vector register
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.)
Active
Application number
JP2016529467A
Other languages
English (en)
Other versions
JP2016538636A (ja
Inventor
ル、シー−リエン、エル
シアー、チュン
ロング、ボルドーウ
シェイファー、アンドレ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JP2016538636A publication Critical patent/JP2016538636A/ja
Application granted granted Critical
Publication of JP6388654B2 publication Critical patent/JP6388654B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Description

本発明の複数の実施形態は概して、メモリアクセスの技術分野に関する。
本明細書に提供される背景技術の記載は、概して本開示の文脈を示す目的のためである。この背景技術の項で説明される程度において、現在名を連ねている発明者らの研究は、および、出願時における従来技術として認定されないであろう本記載の態様は、本開示に対する従来技術として明示的にも暗示的にも認められるものではない。本明細書において別途示されない限り、この項において記載されるアプローチは、本開示の特許請求の範囲に対する従来技術ではなく、この項に含まれることによって従来技術として認められるものでもない。
多くのアプリケーション、および集中的な計算を必要とし得るグラフィックのような、特に高性能なコンピューティングアプリケーションは、ベクトルと共に動作する可能性がある。例えば、データがベクトルレジスタファイルにロードされ、次に、互いに並列に動作する複数のベクトル処理ユニットによって処理され得る。特に、当該データはベクトルレジスタファイルの複数のベクトルレジスタ間で分割され得、次に、ベクトル処理ユニットが当該データを特定のベクトルレジスタ内で処理し得る。
複数の実施形態において、複数のメモリアドレスからデータを取得し、当該データをベクトルレジスタ内に書き込む処理は、「ギャザー」操作と称されることがある。対照的に、ベクトルレジスタからのデータを複数のメモリアドレス場所に書き込む処理は、「スキャッター」操作と称されることがある。
複数の実施形態は、添付図面と共に、以下の詳細な説明によって、容易に理解されるであろう。記載の容易化のために、同じ参照符号は、同じ構造要素を示す。複数の実施形態は、添付図面において、例示的なものとして示されており、限定的なものとして示されるものではない。
様々な実施形態に従う、メモリコントローラを含む例示的なシステムを図示する。 様々な実施形態に従う、メモリ並べ替え処理の例示的なテーブルを図示する。 様々な実施形態に従う、メモリ並べ替え処理の代替の例示的なテーブルを図示する。 様々な実施形態に従う、メモリから読み取られたデータを並べ替えるための例示的な処理を図示する。 様々な実施形態に従う、本明細書に記載された複数の処理を実行するよう構成された例示的なシステムを図示する。
以下の詳細な説明中、本明細書の一部を形成する添付図面に対する参照がなされる。添付図面を通して、同様の参照符号は同様の部材を指し、そこでは実施され得る複数の実施形態が例示で示される。複数の他の実施形態が利用されてよく、本開示の範囲を逸脱することなく、構造的または論理的変更がなされ得ることが理解されるであろう。従って、以下の詳細な説明は限定的意味に解釈されるべきではなく、複数の実施形態の範囲は、添付の特許請求の範囲およびそれらの均等技術によって画される。
シーケンシャルデータの処理に関連付けられる装置、方法、およびストレージ媒体が本明細書に記載される。具体的には、レガシシステムにおいては、ベクトルレジスタファイルは、複数のベクトルレジスタを含んでよく、複数のベクトル処理結合ユニットは、当該複数のそれぞれのベクトルレジスタの各々のデータを処理するよう構成されてよい。例えば、シーケンシャルデータは、一連のデータの「チャンク」に分割されてよく、各チャンクは、異なるベクトル処理ユニットによって処理されてよい。
いくつかの実施形態においては、特定のベクトル処理ユニットが、別のデータチャンクではなく、特定のデータチャンクを処理することが所望されてよい。既存のレガシシステムにおいては、シーケンシャルデータはメモリから読み取られてよく、シーケンシャルデータの各チャンクは、ベクトルレジスタファイルのベクトルレジスタに配置されてよい。次に、所望のデータチャンクがベクトルレジスタファイルの所望のベクトルレジスタ内にあるよう、様々なベクトルレジスタ内のデータの順序がシャッフルされてよい。最後に、当該データは、様々なベクトル処理ユニットによって処理されてよい。
しかしながら、本明細書のいくつかの実施形態は、ベクトル処理ユニットにデータをロードし、当該データを処理する効率を高め得る処理を提供する。具体的には、本明細書に記載の複数の実施形態において、中央処理装置(CPU)は、データが格納されるダイナミックランダムアクセスメモリ(DRAM)のようなメモリに連結されるメモリコントローラにコマンドを送信してよい。当該コマンドに基づいて、メモリコントローラは、データをDRAMから取得(retrieve)し、当該データがベクトルレジスタファイルの1または複数のベクトルレジスタにロードされる前に、当該データを並べ替えてよい。次に、メモリコントローラは、当該並べ替えにより、並べ替えられたデータをベクトルレジスタファイルの1または複数のベクトルレジスタにロードしてよい。データのベクトルレジスタファイルへのロード後ではなく、取得処理中にデータを並べ替えることによって、様々な利点が実現されてよい。例えば、CPUから送信される必要のある信号数が減少されてよい。また、ロードおよび処理の時間、従ってシステムのレイテンシが低減されてよい。追加的または代替的な利点も実現されてよい。
様々な動作が、特許請求の範囲の主題の理解に最も有用な態様で、複数の別個のアクションまたは動作として順番に記載されてよい。しかしながら、記載の順序は、これらの動作が必ず順序に依存することを示唆するものとして解釈されてはならない。特に、これらの動作は、提示の順序で実行されなくてもよい。記載される動作は、記載された実施形態とは異なる順序で実行されてよい。様々な追加の動作が実行されてよく、および/または記載の動作は、追加の実施形態において省略されてよい。
本開示の目的において、「Aおよび/またはB」および「AまたはB」という文言は、(A)、(B)または(AおよびB)を意味する。本開示の目的において、「A、Bおよび/またはC」という文言は、(A)、(B)、(C)、(AおよびB)、(AおよびC)、(BおよびC)または(A、BおよびC)を意味する。
詳細な説明は、「実施形態において」または「複数の実施形態において」という文言を用いることがあるが、これらはそれぞれ、同一または異なる実施形態のうちの1または複数を指してよい。さらに、「備える」、「含む」、「有する」等の用語は、本開示の複数の実施形態に関して使用されるように、同義語である。
本明細書で使用される通り、用語「回路」は、1または複数のソフトウェア若しくはファームウェアプログラムを実行する特定用途向け集積回路(ASIC)、電子回路、プロセッサ(共有、専用、またはグループ)および/またはメモリ(共有、専用、またはグループ)、組み合わせロジック回路、および/または所望の機能を提供する複数の他の好適なハードウェアコンポーネントを指してよく、またはそれらの一部であってよく、あるいはそれらを含んでよい。本明細書で使用される通り、「コンピュータ実装される方法」は、1または複数のプロセッサ、1または複数のプロセッサを有するコンピュータシステム、(1または複数のプロセッサを含み得る)スマートフォンのようなモバイルデバイス、タブレット、ラップトップコンピュータ、セットトップボックス、ゲーム機等によって実行される任意の方法を指してよい。
図1は、データのベクトルレジスタファイルへのより効率的なギャザーを可能にし得るシステム100の例を示す。複数の実施形態において、CPU105、および特に、後述のベクトルレジスタファイル130のようなCPU105の複数の要素が、1または複数のバスを介してメモリコントローラ110に連結されてよい。複数の実施形態において、メモリコントローラ110が追加的にDRAM120に連結されてよい。本明細書に記載の複数の実施形態において、DRAM120は、シンクロナスDRAM(SDRAM)、第2世代(DDR2)、第3世代(DDR3)、または第4世代(DDR4)DRAMのようなダブルデータレート(DDR)DRAM、または何らかの他のタイプのDRAMであってよい。いくつかの実施形態において、メモリコントローラ110は、DDR通信リンク125を介してDRAM120に連結されてよい。
複数の実施形態において、メモリコントローラ110はまた、複数のベクトルレジスタ135a、135bおよび135cを含み得るCPU105のベクトルレジスタファイル130に連結されてよい。いくつかの実施形態において、ベクトルレジスタファイル130は、単一命令多重データ(SIMD)レジスタファイルと呼ばれ得る。複数のベクトルレジスタの各々は、メモリコントローラ110によって、DRAM120から取得されたデータの一部を格納するよう構成されてよい。複数の実施形態において、ベクトルレジスタファイル130は、CPU105の複数のベクトル処理ユニット140a、140bおよび140cに連結されてよい。ベクトル処理ユニット140a、140bおよび140cは、ベクトルレジスタファイル130のベクトルレジスタ135a、135bまたは135cのうちの1または複数内のデータの一部を、ベクトルレジスタファイル130の異なる1または複数のベクトルレジスタ135a、135bまたは135c内のデータの別の部分を処理するベクトル処理ユニット140a、140bまたは140cのうちの別のものと並列に処理するよう構成されてよい。例えば、ベクトル処理ユニット140aは、ベクトルレジスタ135aのデータを、ベクトルレジスタ135bのデータを処理するベクトル処理ユニット140bと並列に処理してよい。図1は、ベクトルレジスタファイル130が3つのベクトルレジスタ135a、135bおよび135cのみを有するように示すが、複数の他の実施形態において、ベクトルレジスタファイル130はそれより多いまたは少ない数のベクトルレジスタを有してよい。また、システム100は、図1に示される3つのベクトル処理ユニット140a、140bおよび140cよりも、多いまたは少ない数のベクトル処理ユニットを含んでよい。
複数の特定の要素は、互いの要素または互いに連結される要素として示されるが、複数の他の実施形態において、当該要素のうちの1または複数は、システムオンチップ(SoC)若しくはシステムインパッケージ(SiP)構成内の同一チップ若しくはパッケージ上に存在してよく、または互いに別個であってよい。例えば、ベクトルレジスタファイル130および/またはベクトル処理ユニット140a、140bおよび140cのうちの1または複数は、CPU105と別個であってよい。あるいは、単一チップが、CPU105、メモリコントローラ110、ベクトルレジスタファイル130、およびベクトル処理ユニット140a、140bまたは140cのうちの1または複数を含んでよい。
いくつかの実施形態において、メモリコントローラ110は、メモリ取得回路145、並べ替え回路150、および格納回路155のような1または複数のモジュールまたは回路を含んでよい。複数の実施形態において、メモリ取得回路145は、DRAM120からデータの1または複数の部分を取得するよう構成されてよい。並べ替え回路150はさらに詳細に後述されるように、メモリ取得回路145によって取得されたデータを並べ替えるよう構成されてよい。格納回路155は、並べ替えられたデータをベクトルレジスタファイル130に配置するよう構成されてよい。
複数の実施形態において、CPU105は、命令をメモリコントローラ110に送信するよう構成されてよい。SIMD命令であり得る当該命令は、例えば、「ACTIVE」コマンドを生成するためのメモリコントローラ110の命令を含んでよい。いくつかの実施形態において、当該命令は、DRAM120における所望のデータの場所の指標を含み得るCPU105からの「LOAD」若しくは「MOV」命令であってよく、またはそれを含んでよい。ACTIVEコマンドによって、メモリコントローラ110は、データが格納若しくは取得され得る先のDRAM120内のメモリ場所、すなわち「ページ」をアクティブ化(オープン)してよい。いくつかの実施形態において、ACTIVEコマンドによってオープンされる当該場所は、数千バイトのデータを含んでよい。それに続く当該メモリへのアクセスが、オープンされたページ範囲内である場合、当該ページ内のデータを選択するため、アドレスのサブセットのみが、供給される必要があってよい。複数の実施形態において、ACTIVEコマンドはまた、データが格納される先のDRAM120の行アドレスを識別してよい。
ACTIVEコマンドの後、メモリコントローラ110は「READ」または「WRITE」コマンドを生成してよい。いくつかの実施形態において、ACTIVEコマンドを生成した同一の命令に応答して、READまたはWRITEコマンドが生成されてよく、複数の他の実施形態において、READまたはWRITEコマンドは、CPU105からの別の命令に応答して生成されてよい。いくつかの実施形態において、ACTIVE、READ、またはWRITEコマンドのうちの1つまたはすべては、DRAM120における場所の列アドレス若しくは行アドレスのような、DRAM120のメモリアドレスを含んでよい。具体的には、CPU105からの命令は、DRAM120内の特定の行および列アドレスに変換され得る1または複数のメモリアドレスを含んでよい。この変換は、メモリコントローラ110によってなされてよく、DRAM120へのアクセスを均等に分散するといった他の目的を実現することに独自的(proprietary)であってよい。DRAM120は、2Dアレイとして編成され得るので、ACTIVE、READ、またはWRITEコマンドにおける行アドレスは、所望のデータが格納される先のDRAM120の行を選択してよく、ACTIVE、READ、またはWRITEコマンドの列アドレスは、アクセスされているDRAM120の列を選択してよい。いくつかの実施形態において、行および列アドレスは、いくつかのDRAMにおいてラッチされてよい。
CPU105は、多数のクロックサイクル後に、当該命令をメモリコントローラ110に送信してよい。あるいは、CPU105は当該命令をメモリコントローラ110に送信してよく、メモリコントローラ110は、多数のクロックサイクル後に、当該命令を実施してよい。例えば、いくつかの実施形態において、メモリコントローラ110は、メモリコントローラ110の1または複数のプリセットパラメータに従い、特定のコマンド間でクロックサイクル数をトラッキング可能であってよい。複数の実施形態において、当該数は、IRCDサイクルで測定されてよく、それは行アドレスストローブ(RAS)を発行するメモリコントローラ110と、列アドレスストローブ(CAS)を発行するメモリコントローラ110との間の時間に対応してよい。
いくつかの実施形態において、CPUからの当該命令により、メモリコントローラ110はREADコマンドを介して、ベクトルレジスタ135a、135bまたは135cの1または複数内にデータを読み込んでよい。当該データのこの読み込みは、データの格納先であるDRAM120のメモリ場所の列アドレスまたは行アドレスのような、コマンドの一部に対応するDRAM120のピンをアサートすることによって実現されてよい。DRAM120の1または複数のピンは、READコマンドの列アドレスに対応してよい。後により詳細に記載されるように、これらのピンのアサートを介して、データはDRAM120からメモリコントローラ110に「バースト」で配信されてよい。
具体的には、DRAM120は、複数のピンを有してよく、それらを介してDRAM120はメモリコントローラ110から特定の信号を送信または受信し得る。特定のピンで受信されたコマンドにより、DRAM120は、例えば、上述のようにデータを読み取る、または後述のようにデータを書き込むといった特定の機能を実行してよい。
対照的に、WRITEコマンドは、メモリコントローラ110に、ベクトルレジスタ135a、135bおよび135cからのデータをWRITEコマンドによって指定されたDRAM120のメモリ場所へ書き込ませてよい。
いくつかの実施形態において、DRAM120内に格納されたデータは、シーケンシャルデータであってよい。シーケンシャルデータの一例として、データは64バイト長で、8つの8バイトチャンクで編成されてよい。64バイトの第1の8バイトチャンクは、0番目のチャンクと称されてよく、64バイトの第2の8バイトチャンクは、1番目のチャンクと称されてよい、といった具合である。全部で、シーケンシャルデータは、チャンク0、1、2、3、4、5、6および7で構成されてよい。
いくつかの実施形態において、CPU105は、キャッシュ115を含んでよい。図1に示される通り、いくつかの実施形態において、キャッシュ115は、メモリコントローラ110および/またはベクトルレジスタファイル130に連結され、並びにそれらの間に配置されてよい。いくつかの実施形態において、キャッシュ115はまた、ベクトル処理ユニット140a、140bおよび140cのうちの1または複数に連結されてよい。いくつかの実施形態において、ベクトル処理ユニット140a、140bおよび140c並びに/またはベクトルレジスタファイル130のうちの1または複数は、メモリコントローラ110を用いてDRAM120からのデータにアクセスを試行する前に、キャッシュ115からのデータにアクセスするよう構成されてよい。
具体的には、CPU105のような多くの現行のマイクロプロセッサは、システムの平均レイテンシを低減すべく、キャッシュを採用する。キャッシュ115は、L1層、L2層、L3層等のような1または複数の層を含んでよい。複数の実施形態において、システム100のDRAM120内のデータへのアクセスは、メモリコントローラ110のキャッシュラインのサイズに基づいてよい。例えば、いくつかの実施形態において、キャッシュラインサイズは、64バイトであってよい。この実施形態において、DRAM120からの64バイトキャッシュラインのベクトルレジスタファイル130への転送には、8つの連続した8バイトのデータチャンクが必要とされてよい。
本実施形態のベクトルレジスタファイル130に対し、ここでは図示しないが、スカラレジスタおよびスカラレジスタファイルが使用されるいくつかのレガシの実施形態においては、本明細書において優先的なチャンクと称され得る、シーケンシャルデータ内で第1番目でないチャンクが、他のチャンクより前に、スカラレジスタファイルに入力されることが望ましい可能性があり、その結果、シーケンシャルデータの残りのデータがDRAM120のようなDRAMから読み取られる間に、当該スカラレジスタに関連付けられた、例えばCPU105等のプロセッサが当該データを即座に操作できる。スカラレジスタは、一度に単一のデータチャンクのみを処理可能であり得るので、優先的なチャンクをスカラレジスタに提供することが望ましい可能性がある。対照的に、ベクトルレジスタファイル130のようなベクトルレジスタファイルは、互いに並列にシーケンシャルデータの複数のチャンクを処理するよう構成された1または複数のベクトル処理ユニット140a、140bおよび140cに連結されてよい。いくつかの実施形態において、READコマンドは、READコマンドの開始列アドレス並びに、READコマンドが、バーストタイプがシーケンシャルまたはインターリーブのいずれであるかの指標を含むかどうかに少なくとも部分的に基づいて、DRAM120からの優先的なチャンクにアクセスするよう構成されてよく、これについてはさらに詳細に後述する。
本開示の複数の実施形態において、DRAM120のシーケンシャルデータにアクセスするために、類似のREADコマンドが使用されてよい。しかしながら、本開示の複数の実施形態において、READコマンドはまた、どのデータチャンクが、ベクトルレジスタファイル130のベクトルレジスタ135a、135bおよび135c等、ベクトルレジスタファイルのどのベクトルレジスタに配置されるかを決定するために使用されてよい。特定のベクトル処理ユニットが特定のデータチャンクを処理できるよう、特定のベクトルレジスタにそのデータチャンクを配置することが望ましい可能性がある。例えば、いくつかの実施形態においては、ベクトル処理ユニット140aが、シーケンシャルデータの第2のチャンクを処理する一方、ベクトル処理ユニット140bがシーケンシャルデータの第4のチャンクを処理することが望ましい可能性がある。特定のベクトル処理ユニットにより、データチャンクを処理することは、特定のアルゴリズム、処理の要件、または何らかの他の要件に基づいてよい。
具体的には、いくつかの実施形態において、ベクトル操作は、SIMDコマンドと称されてよい。複数の実施形態において、ベクトルレジスタファイル130のベクトルレジスタ135a、135bおよび135cに特定のデータチャンクを入力することは、1または複数のSIMDコマンドを使用して実現されてよい。具体的には、SIMD命令がベクトルレジスタファイル130またはメモリオペランドのようなベクトルレジスタファイルをセレクタとして用いて、シーケンシャルデータの32ビットまたは64ビットのベクトル要素をシャッフルするために使用されてよい。
図2は、ベクトルレジスタファイル内のシーケンシャルデータの複数のチャンクを並べ替えるために使用され得るテーブルの例を示す。上記の通り、CPU105は、READコマンドをメモリコントローラ110に送信してよい。READコマンドは、開始列アドレスを含んでよい。追加的または代替的に、READコマンドは、DRAM120からのシーケンシャルデータの取得がシーケンシャルか、またはインターリーブであるかの指標を含んでよい。シーケンシャルバーストモードでは、シーケンシャルデータの複数のチャンクは、アドレスの昇順にアクセスされてよく、その最後に到達したら、ブロックの始めまで戻る(wrap back)。対照的に、インターリーブバーストモード(interleaved burst mode)は、開始アドレスおよびそのカウンタ値に基づき、「排他的OR」(XOR)操作を使用して、チャンクを識別する。いくつかの実施形態において、シーケンシャルバーストモードに使用され得る「加算」演算より、XOR操作はロジックゲートに対し実施することがより簡易であり得るので、インターリーブバーストモードは、より簡易またはより計算効率が良い可能性がある。
図2に図示の通り、開始列アドレスおよびCPU105から受信した命令内、例えば、上記の「LOAD」または「MOV」命令内のバーストタイプの指標に基づいて、メモリコントローラ110は、シーケンシャルデータにアクセスし、シーケンシャルデータを並べ替えて、次に、ベクトルレジスタファイル130のベクトルレジスタ135a、135bおよび135c内に並べ替えられたデータを格納してよい。具体的には、メモリコントローラ110のメモリ取得回路145が、DRAM120内に格納されたシーケンシャルデータにアクセスしてよい。当該データへのアクセスは、DRAM120のデータの列および/または行アドレスのREADコマンド内の指標に少なくとも部分的に基づいてよい。
次に、メモリコントローラ110、および特にメモリコントローラ110の並べ替え回路150は、メモリ取得回路145によって、DRAM120から取得されたシーケンシャルデータを並べ替えてよい。具体的には、シーケンシャルデータの複数のチャンクは、バーストタイプの指標およびREADコマンドの開始列アドレスに従い、並べ替えられてよい。一例として、シーケンシャルデータは、8バイトの8つのシーケンシャルチャンクにそれぞれ編成された64バイトで構成され、チャンク0、1、2、3、4、5、6および7とラベル付けされていると想定する。この例においては、READコマンドは、「1,0,0」の開始列アドレスを有してよい。図2に示される通り、この開始列アドレスは、シーケンシャルデータはチャンク4、5、6、7、0、1、2および3として並べ替えられるべきであることを示してよい。換言すれば、「1,0,0」の開始列アドレスは、シーケンシャルデータの第1の32バイトおよびシーケンシャルデータの第2の32バイトは、スワッピングされるべきであることを示してよい。この例においては、バーストタイプがシーケンシャルかインターリーブであるかどうかのREADコマンド内の指標は、並べ替えに影響しなくてもよい。
次にメモリコントローラ110の格納回路155は、READコマンドによって指示される並べ替えに従い、並べ替えられたデータをベクトルレジスタファイルのベクトルレジスタ135a、135bおよび135cに格納してよい。例えば、上記の例で続けると、チャンク4が、ベクトル処理ユニット140aによる処理のためにベクトルレジスタ135aに格納されてよく、チャンク5が、ベクトル処理ユニット140bによる処理のためにベクトルレジスタ135bに格納されてよく、チャンク6が、ベクトル処理ユニット140cによる処理のためにベクトルレジスタ135cに格納されてよいといった具合である。
複数の他の実施形態において、図2に示されるシーケンスを超えて、他の複数のデータ転置を含むべく、1または複数の追加のインタフェースおよび/またはロジックが追加されてよい。図3は、追加のインタフェースを使用するデータの並べ替えを示し得るテーブルの例を示す。具体的には、データの追加のビットが、READコマンドと共にメモリコントローラ110に送信され得るように、追加のピンがCPU105に追加されてよい。図3の実施形態に示される通り、追加のピンは、並べ替えられたシーケンシャルデータの最大8つの追加の転置を可能にする。
図4は、上記の通り、メモリコントローラ110によって実行されてよい例示的な処理を示す。最初に、400において、メモリコントローラ110は、CPU105等のCPUから命令を受信してよい。当該命令は、例えば、上記のREADコマンドであってよい。
次に、405において、メモリコントローラ110はDRAM120等のDRAMからシーケンシャルデータを取得してよい。具体的には、メモリコントローラ110のメモリ取得回路145が、DRAM120からシーケンシャルデータを取得してよい。
410において、DRAMからシーケンシャルデータを取得後、メモリコントローラ110、具体的にはメモリコントローラ110の並べ替え回路150は、CPU105からの当該命令に従い、シーケンシャルデータを並べ替えてよい。例えば、メモリコントローラ110は、開始列アドレス、バーストタイプの指標、またはCPU105のピンのような1または複数の追加のインタフェース若しくはロジック要素上で受信された指標のうちの1または複数に従い、データを並べ替えてよい。
データを並べ替え後、415において、メモリコントローラ110、具体的にはメモリコントローラ110の格納回路155は、当該並べ替えに従い、シーケンシャルデータの第1の部分を、ベクトルレジスタファイルの第1の非シーケンシャルな場所に配置してよい。具体的には、メモリコントローラ110は、データのチャンクをベクトルレジスタファイル130のベクトルレジスタ135aのような、ベクトルレジスタファイルのベクトルレジスタに配置してよい。当該データチャンクは、シーケンシャルデータの第1のチャンクであってよい。次に、420において、メモリコントローラ110、具体的にはメモリコントローラ110の格納回路155は、当該並べ替えに従い、シーケンシャルデータの第2の部分を、ベクトルレジスタファイルの第2の非シーケンシャルな場所に配置してよい。例えば、メモリコントローラ110は、シーケンシャルデータの第2のチャンクをベクトルレジスタファイル130のベクトルレジスタ135cのような、ベクトルレジスタファイルのベクトルレジスタに配置してよい。次に、処理は425において終了してよい。
上記のチャンクおよびベクトルレジスタは、DRAM120のようなDRAMから取得されたシーケンシャルデータを並べ替え、および並べ替えられたデータをベクトルレジスタファイル130のベクトルレジスタ135a、135bおよび135cのようなベクトルレジスタファイルのベクトルレジスタに格納すべくメモリコントローラによって使用され得る処理の単なる例にすぎないことが理解されるであろう。「第1」および「第2」の記載は、本明細書において、シーケンシャルデータの2つの異なるチャンク間を区別するために使用されており、当該記載がシーケンシャルデータの最初の2つのチャンクのみに限定されるものとして解釈されるべきではない。同様に、複数のベクトルレジスタに関し本明細書で使用される「第1および第2」の記載は、説明であり、限定的なものとして意図されていない。
上記の複数の例は、64バイトのデータに関し記載されているが、当該データ並べ替え処理はさらに、より大きな範囲に拡張され得る。例えば、バースト順序は8チャンクを含むのみとして記載されているものの、複数の他の実施形態においては、より多数またはより少数のチャンクが使用されてよい。また、各チャンクは、より多いまたはより少ないバイトのデータを含んでよい。いくつかの実施形態において、DRAM120のようなDRAMは、約数千ビットの順序に関するデータを含み得、シーケンシャルデータのチャンクおよび/または長さは、増加されたデータ量を含むべく、拡張されてよい。上記の処理に従い並べ替えられ得るデータ量を拡張する1つの方法は、READコマンドにおいて追加の複数の列アドレスを使用すること、または図3で上記した複数の追加のピンを使用してCPUからの追加のデータをメモリコントローラに送信することであってよい。複数の他の実施形態において、データ並べ替え処理は、データの「ストライド」に拡張されてよく、そこにおいては、連続チャンク{0,1,2,3,4,5,6,7}を含むシーケンシャルデータの代わりに、シーケンシャルは、非連続チャンク{0,2,4,6,8,10,12,14}または何らかの他のシーケンシャルな非連続インクリメントを含んでよい。いくつかの実施形態において、メモリコントローラまたはREADコマンドの列アドレスに送信されたデータ量を変更することは、DRAM内の追加のロジックが、追加のコマンドまたはデータを処理することを必要としてよい。また、上記複数の処理は、ベクトルレジスタファイル130に関し記載されているが、いくつかの実施形態において、データをスカラレジスタに供給すべく、シーケンシャルデータをDRAMから取得し、当該データを並べ替え、および次に当該データをレジスタに供給する処理が使用されてよい。その場合、データの優先的なチャンクのみにとどまらず、データチャンクの特定の順序が望ましい。
図5は、様々な実施形態に従う、前述のCPU105、メモリコントローラ110および/またはDRAM120のようなシステムが組み込まれ得る、コンピューティングデバイス500の例を図示する。コンピューティングデバイス500は、多数のコンポーネント、1または複数の追加のプロセッサ504、および少なくとも1つの通信チップ506を含んでよい。
様々な実施形態において、当該1または複数のプロセッサ504またはCPU105はそれぞれ、1または複数のプロセッサコアを含んでよい。様々な実施形態において、当該少なくとも1つの通信チップ506は、当該1または複数のプロセッサ504またはCPU105に物理的および電気的に連結されてよい。複数のさらなる実装において、通信チップ506は、当該1または複数のプロセッサ504またはCPU105の一部であってよい。様々な実施形態において、コンピューティングデバイス500は、プリント回路基板(PCB)502を含んでよい。これらの実施形態について、1または複数のプロセッサ504、CPU105、および通信チップ506がPCB上に配置されてよい。複数の代替的な実施形態において、PCB502を採用することなく、様々なコンポーネントが連結されてよい。
その用途に応じ、コンピューティングデバイス500は、PCB502に物理的および電気的に連結されてもされなくてもよい複数の他のコンポーネントを含んでよい。これらの他のコンポーネントは限定されないが、揮発性メモリ(例えば、DRAM120)、ROM508のような不揮発性メモリ、I/Oコントローラ514、デジタル信号プロセッサ(不図示)、暗号プロセッサ(不図示)、グラフィックプロセッサ516、1または複数のアンテナ518、ディスプレイ(不図示)、タッチスクリーンディスプレイ520、タッチスクリーンコントローラ522、バッテリ524、オーディオコーデック(不図示)、ビデオコーデック(不図示)、全地球測位システム(GPS)デバイス528、コンパス530、加速度計(不図示)、ジャイロスコープ(不図示)、スピーカ532、カメラ534、および大量ストレージデバイス(ハードディスクドライブ、ソリッドステートドライブ、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)(不図示))等を含む。様々な実施形態において、CPU105は、同一ダイ上で複数の他のコンポーネントと統合され、図1に示されるようなシステムオンチップ(SoC)を形成してよい。複数の実施形態において、DRAM120および/またはROM508のうちの1つまたは両方は、クロスポイント型不揮発性メモリであってよく、またはそれを含んでよい。
様々な実施形態において、コンピューティングデバイス500は、例えばフラッシュメモリ512のような常駐する永続的または不揮発性のメモリを含んでよい。いくつかの実施形態において、1または複数のプロセッサ504、CPU105、および/またはフラッシュメモリ512は、プログラミング命令を格納する関連ファームウェア(不図示)を含んでよく、当該命令は、コンピューティングデバイス500が、1または複数のプロセッサ504、CPU105、またはメモリコントローラ110によるプログラミング命令の実行に応答して、図4に関し上記したブロックのうちのすべてまたは選択された態様を実行することを可能にするよう構成されている。様々な実施形態において、これらの態様は、1または複数のプロセッサ504、CPU105、メモリコントローラ110、またはフラッシュメモリ512とは別個のハードウェアを使用して、追加的または代替的に実装されてよい。
通信チップ506は、コンピューティングデバイス500との間でデータを転送するために有線および/または無線通信を有効にしてよい。「無線」という用語およびその派生語は、非固体媒体を通る変調電磁放射を用いることによってデータ通信を行うことができる回路、デバイス、システム、方法、技術、通信チャネル等を説明するために使用されてよい。当該用語は、関連デバイスがいかなる有線をも含まないことを示唆するものではないが、いくつかの実施形態においては含まなくてもよい。通信チップ506は、3G、4G、5Gおよびこれら以降のものとして指定された任意の他の無線プロトコルだけでなく、限定されないが、IEEE802.20、汎用パケット無線サービス(GPRS)、Evolution Data Optimized(Ev−DO)、Evolved High Speed Packet Access(HSPA+)、Evolved High Speed Downlink Packet Access(HSDPA+)、Evolved High Speed Uplink Packet Access(HSUPA+)、グローバルシステムフォーモバイルコミュニケーションズ(GSM(登録商標))、GSM(登録商標)進化型高速データレート(EDGE)、符号分割多重アクセス(CDMA)、時分割多重アクセス(TDMA)、Digital Enhanced Cordless Telecommunications(DECT)、Bluetooth(登録商標)、およびそれらの派生物を含む多数の無線規格またはプロトコルのいずれかを実装してよい。コンピューティングデバイス500は、複数の通信チップ506を含んでよい。例えば、第1の通信チップ506は、Wi−Fi(登録商標)およびBluetooth(登録商標)のような短距離無線通信に専用化されてよく、第2の通信チップ506は、GPS、EDGE、GPRS、CDMA、WiMAX(登録商標)、LTE、Ev−DO、およびその他のような長距離無線通信に専用化されてよい。
様々な実装において、コンピューティングデバイス500は、ラップトップ、ネットブック、ノートブック、ウルトラブック、スマートフォン、コンピューティングタブレット、パーソナルデジタルアシスタント(PDA)、ウルトラモバイルPC、モバイルフォン、デスクトップコンピュータ、サーバ、プリンタ、スキャナ、モニタ、セットトップボックス、エンターテインメント制御ユニット(例えば、ゲーム機)、デジタルカメラ、ポータブル音楽プレーヤ、またはデジタルビデオレコーダであってよい。さらなる実装において、コンピューティングデバイス500は、データを処理する任意の他の電子デバイスであってよい。
複数の実施形態において、本開示の第1の例は、中央処理装置(CPU)からの命令に少なくとも部分的に基づいて、第1のシーケンスで順序付けられた複数の部分を含むデータを取得するよう構成された取得回路と、上記複数の部分が、上記第1のシーケンスとは異なる第2のシーケンスで順序付けられるように、受信された上記命令に少なくとも部分的に基づいて、上記データを並べ替えるよう構成された、上記取得回路に連結された並べ替え回路と、受信された上記命令に少なくとも部分的に基づいて、上記複数の部分を、ベクトルレジスタファイルのそれぞれの複数の場所に上記第2のシーケンスで格納するよう構成された格納回路と、を備える、メモリコントローラを含んでよい。
例2は、上記第2のシーケンスは、上記命令の開始列アドレスに少なくとも部分的に基づく、例1のメモリコントローラを含んでよい。
例3は、上記第2のシーケンスは、上記命令内のバーストタイプの指標に少なくとも部分的に基づく、例1のメモリコントローラを含んでよい。
例4は、上記バーストタイプの上記指標は、上記バーストタイプがシーケンシャルバーストタイプか、またはインターリーブバーストタイプのいずれであるかの指標である、例3のメモリコントローラを含んでよい。
例5は、上記第2のシーケンスは、上記CPUのピン設定に少なくとも部分的に基づく、例1のメモリコントローラを含んでよい。
例6は、上記メモリコントローラは、上記データを格納するよう構成されたダイナミックランダムアクセスメモリ(DRAM)に連結される、例1から5のいずれかに係るメモリコントローラを含んでよい。
例7は、上記データは64バイト長である、例1から5のいずれかに係るメモリコントローラを含んでよい。
例8は、上記複数の部分の各部分は、8バイト長である、例7のメモリコントローラを含んでよい。
例9は、メモリコントローラによって、中央処理装置(CPU)から受信された命令に少なくとも部分的に基づいて、シーケンシャルデータの第1の部分および上記シーケンシャルデータの第2の部分を取得する段階と、上記メモリコントローラによって、上記第1の部分をベクトルレジスタファイルの第1の非シーケンシャルな場所に配置する段階と、上記メモリコントローラによって、上記第2の部分を上記ベクトルレジスタファイルの第2の非シーケンシャルな場所に配置する段階と、を備え、上記第1の部分および上記第2の部分は、上記シーケンシャルデータ内で互いに隣接している、方法を含んでよい。
例10は、上記メモリコントローラは、上記メモリコントローラに連結された第1のベクトル処理ユニットによる処理のために、ベクトルレジスタファイルの上記第1の非シーケンシャルな場所に上記第1の部分を配置するようさらに構成されており、上記メモリコントローラは、上記メモリコントローラに連結された第2のベクトル処理ユニットによる処理のために、上記ベクトルレジスタファイルの上記第2の非シーケンシャルな場所に上記第2の部分を配置するようさらに構成されている、例9の方法を含んでよい。
例11は、上記メモリコントローラによって、上記命令内の開始列アドレスに少なくとも部分的に基づいて、上記ベクトルレジスタファイルの複数の場所から、上記ベクトルレジスタファイルの上記第1の非シーケンシャルな場所を選択する段階をさらに備える、例9の方法を含んでよい。
例12は、上記メモリコントローラによって、上記取得する段階がシーケンシャルバーストタイプか、またはインターリーブバーストタイプのいずれによるかに基づいて、上記ベクトルレジスタファイルの複数の場所から、上記ベクトルレジスタファイルの上記第1の非シーケンシャルな場所を選択する段階をさらに備える、例9の方法を含んでよい。
例13は、上記シーケンシャルデータは、ダイナミックランダムアクセスメモリ(DRAM)に格納される、例9から12のいずれかに係る方法を含んでよい。
例14は、上記シーケンシャルデータの上記第1の部分は、8バイトのデータである、例9から12のいずれかに係る方法を含んでよい。例15は、上記シーケンシャルデータは、64バイトのデータである、例14の方法を含んでよい。
例16は、メモリコントローラに連結された、シーケンシャルデータを格納するよう構成されたダイナミックランダムアクセスメモリ(DRAM)と、メモリコントローラに連結された中央処理装置(CPU)と、を備え、上記CPUは、命令をメモリコントローラに送信するよう構成されており、上記メモリコントローラは、上記メモリコントローラによって、上記CPUから受信された上記命令に少なくとも部分的に基づいて、上記シーケンシャルデータの第1の部分および上記シーケンシャルデータの第2の部分を取得し、上記第1の部分をベクトルレジスタファイルの第1の非シーケンシャルな場所に配置し、上記第2の部分を上記ベクトルレジスタファイルの第2の非シーケンシャルな場所に配置するよう構成されており、上記第1の部分および上記第2の部分は、上記シーケンシャルデータ内で互いに隣接している、装置を含んでよい。
例17は、上記メモリコントローラに連結された第1のプロセッサおよび第2のプロセッサをさらに備え、上記第1のプロセッサは、上記第1の非シーケンシャルな場所における上記第1の部分を処理するよう構成され、上記第2のプロセッサは、上記第1のプロセッサと同時に、上記第2の非シーケンシャルな場所における上記第2の部分を処理するよう構成されている、例16の装置を含んでよい。
例18は、上記ベクトルレジスタファイルの上記第1の非シーケンシャルな場所は、上記命令内の開始列アドレスに少なくとも部分的に基づいて、上記ベクトルレジスタファイルの複数の場所から選択される、例16の装置を含んでよい。
例19は、上記ベクトルレジスタファイルの上記第1の非シーケンシャルな場所は、上記メモリコントローラによって、上記命令が上記第1の部分および上記第2の部分をシーケンシャルバーストタイプか、またはインターリーブされたバーストタイプのいずれにより取得するかに少なくとも部分的に基づいて、上記ベクトルレジスタファイルの複数の場所から選択される、例16の装置を含んでよい。
例20は、上記ベクトルレジスタファイルの上記第1の非シーケンシャルな場所は、上記CPUのピン設定に少なくとも部分的に基づいて、上記ベクトルレジスタファイルの複数の場所から選択される、例16の装置を含んでよい。
例21は、上記シーケンシャルデータの上記第1の部分は、8バイトのデータである、例16から20のいずれかに係る装置を含んでよい。
例22は、上記シーケンシャルデータは、64バイトのデータである、例21の装置を含んでよい。
例23は、メモリコントロ―ラによる命令の実行時、上記メモリコントローラに、中央処理装置(CPU)から受信された命令に少なくとも部分的に基づいて、シーケンシャルデータの第1の部分および上記シーケンシャルデータの第2の部分を取得させ、上記第1の部分をベクトルレジスタファイルの第1の非シーケンシャルな場所に配置させ、上記第2の部分を上記ベクトルレジスタファイルの第2の非シーケンシャルな場所に配置させるよう構成された複数の命令を備え、上記第1の部分および上記第2の部分は、上記シーケンシャルデータ内で互いに隣接している、1または複数のコンピュータ可読媒体を含んでよい。
例24は、上記複数の命令は、上記メモリコントローラに、上記メモリコントローラに連結された第1のベクトル処理ユニットによる処理のために、ベクトルレジスタファイルの上記第1の非シーケンシャルな場所に上記第1の部分を配置させ、上記メモリコントローラに連結された第2のベクトル処理ユニットによる処理のために、上記ベクトルレジスタファイルの上記第2の非シーケンシャルな場所に上記第2の部分を配置させるようさらに構成されている、例23の1または複数のコンピュータ可読媒体を含んでよい。
例25は、上記複数の命令は、上記メモリコントローラに、上記命令内の開始列アドレスに少なくとも部分的に基づいて、上記ベクトルレジスタファイルの複数の場所から、上記ベクトルレジスタファイルの上記第1の非シーケンシャルな場所を選択させるようさらに構成されている、例23の1または複数のコンピュータ可読媒体を含んでよい。
例26は、上記複数の命令は、上記メモリコントローラに、上記取得がシーケンシャルバーストタイプか、またはインターリーブされたバーストタイプのいずれによるかに基づいて、上記ベクトルレジスタファイルの複数の場所から、上記ベクトルレジスタファイルの上記第1の非シーケンシャルな場所を選択させるようさらに構成されている、例23の1または複数のコンピュータ可読媒体を含んでよい。
例27は、上記シーケンシャルデータは、ダイナミックランダムアクセスメモリ(DRAM)に格納される、例23から26のいずれかに係る1または複数のコンピュータ可読媒体を含んでよい。
例28は、上記シーケンシャルデータの上記第1の部分は、8バイトのデータである、例23から26のいずれかに係る1または複数のコンピュータ可読媒体を含んでよい。
例29は、上記シーケンシャルデータは、64バイトのデータである、例28の1または複数のコンピュータ可読媒体を含んでよい。
例30は、中央処理装置(CPU)から受信された命令に少なくとも部分的に基づいて、シーケンシャルデータの第1の部分および上記シーケンシャルデータの第2の部分を取得するための手段と、上記第1の部分をベクトルレジスタファイルの第1の非シーケンシャルな場所に配置するための手段と、上記第2の部分を上記ベクトルレジスタファイルの第2の非シーケンシャルな場所に配置するための手段と、を備え、上記第1の部分および上記第2の部分は、上記シーケンシャルデータ内で互いに隣接している、装置を含んでよい。
例31は、第1のベクトル処理ユニットによる処理のために、ベクトルレジスタファイルの上記第1の非シーケンシャルな場所に上記第1の部分を配置するための手段と、第2のベクトル処理ユニットによる処理のために、上記ベクトルレジスタファイルの上記第2の非シーケンシャルな場所に上記第2の部分を配置するための手段と、をさらに備える、例30の装置を含んでよい。
例32は、上記命令内の開始列アドレスに少なくとも部分的に基づいて、上記ベクトルレジスタファイルの複数の場所から上記ベクトルレジスタファイルの上記第1の非シーケンシャルな場所を選択するための手段をさらに備える、例30の装置を含んでよい。
例33は、上記取得がシーケンシャルバーストタイプか、またはインターリーブバーストタイプのいずれによるかに基づいて、上記ベクトルレジスタファイルの複数の場所から、上記ベクトルレジスタファイルの上記第1の非シーケンシャルな場所を選択するための手段をさらに備える、例30の装置を含んでよい。
例34は、上記シーケンシャルデータは、ダイナミックランダムアクセスメモリ(DRAM)に格納される、例30から33のいずれかに係る装置を含んでよい。
例35は、上記シーケンシャルデータの上記第1の部分は、8バイトのデータである、例30から33のいずれかに係る装置を含んでよい。
例36は、上記シーケンシャルデータは、64バイトのデータである、例35の装置を含んでよい。
複数の特定の実施形態が図示され、本明細書に説明目的のため記載されたが、本願は、本明細書に記載された当該実施形態のあらゆる応用または変形を包含する意図である。従って、本明細書に記載の複数の実施形態は、特許請求の範囲によってのみ限定されることが明白な意図である。
本開示が、「1つ」若しくは「1つの第1の」要素またはそれらの均等物を挙げる場合、そのような開示は、1または複数のそのような要素を含み、2または2より多いそのような要素を必要としたり、排除したりしない。さらに、識別された要素に関する序数標識(例えば、第1の、第2の、または第3の)が使用され、それら要素間を区別するが、別途明示されない限り、そのような要素の必要数若しくは限定数を示す、または示唆するものではなく、またそのような要素の特定の位置若しくは順序を示すものでもない。

Claims (19)

  1. 中央処理装置(CPU)からの命令に少なくとも部分的に基づいて、第1のシーケンスで順序付けられた複数の部分を含むデータを取得する取得回路と、
    前記第1のシーケンスとは異なる第2のシーケンスと、開始列アドレス、バーストタイプの指標、および追加のビットとを対応付けるテーブルを用いて、前記命令に含まれる前記開始列アドレスおよび前記バーストタイプの前記指標と、前記命令と共に送信される前記追加のビットとに対応付けられる前記第2のシーケンスで前記複数の部分が順序付けられるように前記データを並べ替える、前記取得回路に連結された並べ替え回路と、
    前記複数の部分を、ベクトルレジスタファイルのそれぞれの複数の場所に前記第2のシーケンスで格納する格納回路と、を備える、メモリコントローラ。
  2. 前記バーストタイプの前記指標は、前記バーストタイプがシーケンシャルバーストタイプであるか、またはインターリーブバーストタイプであるかの指標である、請求項1に記載のメモリコントローラ。
  3. 前記追加のビットは、前記データの追加の転置を可能にする、請求項2に記載のメモリコントローラ。
  4. 前記メモリコントローラは、前記データを格納するダイナミックランダムアクセスメモリ(DRAM)に連結される、請求項1から3のいずれか一項に記載のメモリコントローラ。
  5. 前記データは64バイト長である、請求項1から4のいずれか一項に記載のメモリコントローラ。
  6. 前記複数の部分の各部分は、8バイト長である、請求項1から5のいずれか一項に記載のメモリコントローラ。
  7. メモリコントローラによって、中央処理装置(CPU)から受信された命令に少なくとも部分的に基づいて、第1のシーケンスのシーケンシャルデータの第1の部分および前記シーケンシャルデータの第2の部分を取得する段階と、
    前記メモリコントローラによって、前記第1のシーケンスとは異なる第2のシーケンスと開始列アドレス、バーストタイプの指標、および追加のビットとを対応付けるテーブルを用いて、前記命令に含まれる前記開始列アドレスおよび前記バーストタイプの前記指標と、前記命令と共に送信される前記追加のビットとに対応付けられる前記第2のシーケンスに基づいて、ベクトルレジスタファイルの複数の場所から前記ベクトルレジスタファイルの非シーケンシャルな場所を選択する段階と、
    前記メモリコントローラによって、前記第1の部分を前記ベクトルレジスタファイルの第1の非シーケンシャルな場所に配置する段階と、
    前記メモリコントローラによって、前記第2の部分を前記ベクトルレジスタファイルの第2の非シーケンシャルな場所に配置する段階と、を備え、
    前記第1の部分および前記第2の部分は、前記シーケンシャルデータ内で互いに隣接している、方法。
  8. 前記メモリコントローラは、前記メモリコントローラに連結された第1のベクトル処理ユニットによる処理のために、前記ベクトルレジスタファイルの前記第1の非シーケンシャルな場所に前記第1の部分をさらに配置し、
    前記メモリコントローラは、前記メモリコントローラに連結された第2のベクトル処理ユニットによる処理のために、前記ベクトルレジスタファイルの前記第2の非シーケンシャルな場所に前記第2の部分をさらに配置する、請求項7に記載の方法。
  9. 前記バーストタイプの前記指標は、前記バーストタイプがシーケンシャルバーストタイプであるか、またはインターリーブバーストタイプであるかの指標である、請求項7または8に記載の方法。
  10. 前記追加のビットは、前記シーケンシャルデータの追加の転置を可能にする、請求項9に記載の方法。
  11. 前記シーケンシャルデータは、ダイナミックランダムアクセスメモリ(DRAM)に格納される、請求項7から10のいずれか一項に記載の方法。
  12. 前記シーケンシャルデータの前記第1の部分は、8バイトのデータである、請求項7から11のいずれか一項に記載の方法。
  13. 前記シーケンシャルデータは、64バイトのデータである、請求項7から12のいずれか一項に記載の方法。
  14. メモリコントローラに連結された、第1のシーケンスのシーケンシャルデータを格納するダイナミックランダムアクセスメモリ(DRAM)と、
    メモリコントローラに連結された中央処理装置(CPU)と、を備え、
    前記CPUは、命令をメモリコントローラに送信し、
    前記メモリコントローラは、
    前記シーケンシャルデータの第1の部分および前記シーケンシャルデータの第2の部分を取得し、
    前記第1のシーケンスとは異なる第2のシーケンスと、開始列アドレス、バーストタイプの指標、および追加のビットとを対応付けるテーブルを用いて、前記命令に含まれる前記開始列アドレスおよび前記バーストタイプの前記指標と、前記命令と共に送信される前記追加のビットとに対応付けられる前記第2のシーケンスに基づいて、ベクトルレジスタファイルの複数の場所から前記ベクトルレジスタファイルの非シーケンシャルな場所を選択し、
    前記第1の部分を前記ベクトルレジスタファイルの第1の非シーケンシャルな場所に配置し、
    前記第2の部分を前記ベクトルレジスタファイルの第2の非シーケンシャルな場所に配置し、
    前記第1の部分および前記第2の部分は、前記シーケンシャルデータ内で互いに隣接している、装置。
  15. 前記メモリコントローラに連結された第1のプロセッサおよび第2のプロセッサをさらに備え、
    前記第1のプロセッサは、前記第1の非シーケンシャルな場所における前記第1の部分を処理し、
    前記第2のプロセッサは、前記第1のプロセッサと同時に、前記第2の非シーケンシャルな場所における前記第2の部分を処理する、請求項14に記載の装置。
  16. 前記バーストタイプの前記指標は、前記バーストタイプがシーケンシャルバーストタイプであるか、またはインターリーブバーストタイプであるかの指標である、請求項14または15に記載の装置。
  17. 前記追加のビットは、前記シーケンシャルデータの追加の転置を可能にする、請求項16に記載の装置。
  18. 前記シーケンシャルデータの前記第1の部分は、8バイトのデータである、請求項14から17のいずれか一項に記載の装置。
  19. 前記シーケンシャルデータは、64バイトのデータである、請求項14から18のいずれか一項に記載の装置。
JP2016529467A 2013-12-26 2013-12-26 メモリアクセス中のデータ並べ替え Active JP6388654B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/077878 WO2015099746A1 (en) 2013-12-26 2013-12-26 Data reorder during memory access

Publications (2)

Publication Number Publication Date
JP2016538636A JP2016538636A (ja) 2016-12-08
JP6388654B2 true JP6388654B2 (ja) 2018-09-12

Family

ID=53479408

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016529467A Active JP6388654B2 (ja) 2013-12-26 2013-12-26 メモリアクセス中のデータ並べ替え

Country Status (6)

Country Link
US (1) US20160306566A1 (ja)
EP (1) EP3087489A4 (ja)
JP (1) JP6388654B2 (ja)
KR (1) KR101937544B1 (ja)
CN (1) CN105940381B (ja)
WO (1) WO2015099746A1 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105183568B (zh) * 2015-08-19 2018-08-07 山东超越数控电子有限公司 一种存储双控制器间scsi命令同步方法
US10152237B2 (en) 2016-05-05 2018-12-11 Micron Technology, Inc. Non-deterministic memory protocol
US10534540B2 (en) 2016-06-06 2020-01-14 Micron Technology, Inc. Memory protocol
US10776118B2 (en) * 2016-09-09 2020-09-15 International Business Machines Corporation Index based memory access using single instruction multiple data unit
US10585624B2 (en) * 2016-12-01 2020-03-10 Micron Technology, Inc. Memory protocol
US20180217838A1 (en) * 2017-02-01 2018-08-02 Futurewei Technologies, Inc. Ultra lean vector processor
US10380034B2 (en) * 2017-07-14 2019-08-13 International Business Machines Corporation Cache return order optimization
US11099779B2 (en) 2018-09-24 2021-08-24 Micron Technology, Inc. Addressing in memory with a read identification (RID) number
US11226816B2 (en) * 2020-02-12 2022-01-18 Samsung Electronics Co., Ltd. Systems and methods for data placement for in-memory-compute
US10942878B1 (en) * 2020-03-26 2021-03-09 Arm Limited Chunking for burst read transactions
WO2021207919A1 (zh) * 2020-04-14 2021-10-21 深圳市大疆创新科技有限公司 控制器、存储器件访问系统、电子设备和数据传输方法
CN112799599B (zh) * 2021-02-08 2022-07-15 清华大学 一种数据存储方法、计算核、芯片和电子设备

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3594260B2 (ja) * 1995-05-11 2004-11-24 富士通株式会社 ベクトルデータ処理装置
US6163839A (en) * 1998-09-30 2000-12-19 Intel Corporation Non-stalling circular counterflow pipeline processor with reorder buffer
US6487640B1 (en) * 1999-01-19 2002-11-26 International Business Machines Corporation Memory access request reordering to reduce memory access latency
US20110087859A1 (en) * 2002-02-04 2011-04-14 Mimar Tibet System cycle loading and storing of misaligned vector elements in a simd processor
GB2399900B (en) * 2003-03-27 2005-10-05 Micron Technology Inc Data reording processor and method for use in an active memory device
US8200945B2 (en) * 2003-11-07 2012-06-12 International Business Machines Corporation Vector unit in a processor enabled to replicate data on a first portion of a data bus to primary and secondary registers
US20060171234A1 (en) * 2005-01-18 2006-08-03 Liu Skip S DDR II DRAM data path
US20060259658A1 (en) * 2005-05-13 2006-11-16 Connor Patrick L DMA reordering for DCA
US20070226469A1 (en) * 2006-03-06 2007-09-27 James Wilson Permutable address processor and method
US7450588B2 (en) * 2006-08-24 2008-11-11 Intel Corporation Storage network out of order packet reordering mechanism
JP2009223758A (ja) * 2008-03-18 2009-10-01 Ricoh Co Ltd 画像処理装置
TW201022935A (en) * 2008-12-12 2010-06-16 Sunplus Technology Co Ltd Control system for accessing memory and method of the same
GB2470780B (en) * 2009-06-05 2014-03-26 Advanced Risc Mach Ltd A data processing apparatus and method for performing a predetermined rearrangement operation
US8688957B2 (en) * 2010-12-21 2014-04-01 Intel Corporation Mechanism for conflict detection using SIMD
JP5658556B2 (ja) * 2010-12-24 2015-01-28 富士通株式会社 メモリ制御装置、及びメモリ制御方法
US20130339649A1 (en) * 2012-06-15 2013-12-19 Intel Corporation Single instruction multiple data (simd) reconfigurable vector register file and permutation unit
CN103092785B (zh) * 2013-02-08 2016-03-02 豪威科技(上海)有限公司 Ddr2 sdram控制器

Also Published As

Publication number Publication date
EP3087489A1 (en) 2016-11-02
US20160306566A1 (en) 2016-10-20
CN105940381A (zh) 2016-09-14
WO2015099746A1 (en) 2015-07-02
EP3087489A4 (en) 2017-09-20
KR101937544B1 (ko) 2019-01-10
KR20160075728A (ko) 2016-06-29
JP2016538636A (ja) 2016-12-08
CN105940381B (zh) 2019-11-15

Similar Documents

Publication Publication Date Title
JP6388654B2 (ja) メモリアクセス中のデータ並べ替え
US11715507B2 (en) Dynamic random access memory (DRAM) device and memory controller therefor
US20240028207A1 (en) Near-memory compute module
US10943183B2 (en) Electronics device performing software training on memory channel and memory channel training method thereof
US10372620B2 (en) Devices, systems, and methods having high data deduplication and low read latencies
KR20170034401A (ko) 메모리 데이터에 기초하여 비교 정보를 결정하기 위한 장치, 시스템 및 방법
US10719462B2 (en) Technologies for computational storage via offload kernel extensions
US10866755B2 (en) Two stage command buffers to overlap IOMMU map and second tier memory reads
TW202044043A (zh) 記憶體裝置、資料處理系統以及操作記憶體裝置的方法
JP2021111333A (ja) 不揮発性メモリの自動インクリメント書き込みカウント
US10067829B2 (en) Managing redundancy information in a non-volatile memory
US20140189226A1 (en) Memory device and memory system having the same
US20220382675A1 (en) Computing device for transceiving information via plurality of buses, and operating method of the computing device
US20150186257A1 (en) Managing a transfer buffer for a non-volatile memory
US8688891B2 (en) Memory controller, method of controlling unaligned memory access, and computing apparatus incorporating memory controller
KR102502326B1 (ko) Nand 메모리를 위한 데이터 전송 프로토콜에서의 오버헤드 감소
WO2024058840A1 (en) Ssd use of host memory buffer for improved performance
CN116738510A (zh) 有效地获得存储在地址空间中的信息的系统和方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160531

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170406

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170523

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170606

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171107

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180206

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: 20180717

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180814

R150 Certificate of patent or registration of utility model

Ref document number: 6388654

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250