(57)【特許請求の範囲】
【請求項１】
中央処理装置（ＣＰＵ）からの命令に少なくとも部分的に基づいて、第１のシーケンスで順序付けられた複数の部分を含むデータを取得する取得回路と、
前記第１のシーケンスとは異なる第２のシーケンスと、開始列アドレス、バーストタイプの指標、および追加のビットとを対応付けるテーブルを用いて、前記命令に含まれる前記開始列アドレスおよび前記バーストタイプの前記指標と、前記命令と共に送信される前記追加のビットとに対応付けられる前記第２のシーケンスで前記複数の部分が順序付けられるように前記データを並べ替える、前記取得回路に連結された並べ替え回路と、
前記複数の部分を、ベクトルレジスタファイルのそれぞれの複数の場所に前記第２のシーケンスで格納する格納回路と、を備える、メモリコントローラ。
【請求項２】
前記バーストタイプの前記指標は、前記バーストタイプがシーケンシャルバーストタイプであるか、またはインターリーブバーストタイプであるかの指標である、請求項１に記載のメモリコントローラ。
【請求項３】
前記追加のビットは、前記データの追加の転置を可能にする、請求項２に記載のメモリコントローラ。
【請求項４】
前記メモリコントローラは、前記データを格納するダイナミックランダムアクセスメモリ（ＤＲＡＭ）に連結される、請求項１から３のいずれか一項に記載のメモリコントローラ。
【請求項５】
前記データは６４バイト長である、請求項１から４のいずれか一項に記載のメモリコントローラ。
【請求項６】
前記複数の部分の各部分は、８バイト長である、請求項１から５のいずれか一項に記載のメモリコントローラ。
【請求項７】
メモリコントローラによって、中央処理装置（ＣＰＵ）から受信された命令に少なくとも部分的に基づいて、第１のシーケンスのシーケンシャルデータの第１の部分および前記シーケンシャルデータの第２の部分を取得する段階と、
前記メモリコントローラによって、前記第１のシーケンスとは異なる第２のシーケンスと開始列アドレス、バーストタイプの指標、および追加のビットとを対応付けるテーブルを用いて、前記命令に含まれる前記開始列アドレスおよび前記バーストタイプの前記指標と、前記命令と共に送信される前記追加のビットとに対応付けられる前記第２のシーケンスに基づいて、ベクトルレジスタファイルの複数の場所から前記ベクトルレジスタファイルの非シーケンシャルな場所を選択する段階と、
前記メモリコントローラによって、前記第１の部分を前記ベクトルレジスタファイルの第１の非シーケンシャルな場所に配置する段階と、
前記メモリコントローラによって、前記第２の部分を前記ベクトルレジスタファイルの第２の非シーケンシャルな場所に配置する段階と、を備え、
前記第１の部分および前記第２の部分は、前記シーケンシャルデータ内で互いに隣接している、方法。
【請求項８】
前記メモリコントローラは、前記メモリコントローラに連結された第１のベクトル処理ユニットによる処理のために、前記ベクトルレジスタファイルの前記第１の非シーケンシャルな場所に前記第１の部分をさらに配置し、
前記メモリコントローラは、前記メモリコントローラに連結された第２のベクトル処理ユニットによる処理のために、前記ベクトルレジスタファイルの前記第２の非シーケンシャルな場所に前記第２の部分をさらに配置する、請求項７に記載の方法。
【請求項９】
前記バーストタイプの前記指標は、前記バーストタイプがシーケンシャルバーストタイプであるか、またはインターリーブバーストタイプであるかの指標である、請求項７または８に記載の方法。
【請求項１０】
前記追加のビットは、前記シーケンシャルデータの追加の転置を可能にする、請求項９に記載の方法。
【請求項１１】
前記シーケンシャルデータは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）に格納される、請求項７から１０のいずれか一項に記載の方法。
【請求項１２】
前記シーケンシャルデータの前記第１の部分は、８バイトのデータである、請求項７から１１のいずれか一項に記載の方法。
【請求項１３】
前記シーケンシャルデータは、６４バイトのデータである、請求項７から１２のいずれか一項に記載の方法。
【請求項１４】
メモリコントローラに連結された、第１のシーケンスのシーケンシャルデータを格納するダイナミックランダムアクセスメモリ（ＤＲＡＭ）と、
メモリコントローラに連結された中央処理装置（ＣＰＵ）と、を備え、
前記ＣＰＵは、命令をメモリコントローラに送信し、
前記メモリコントローラは、
前記シーケンシャルデータの第１の部分および前記シーケンシャルデータの第２の部分を取得し、
前記第１のシーケンスとは異なる第２のシーケンスと、開始列アドレス、バーストタイプの指標、および追加のビットとを対応付けるテーブルを用いて、前記命令に含まれる前記開始列アドレスおよび前記バーストタイプの前記指標と、前記命令と共に送信される前記追加のビットとに対応付けられる前記第２のシーケンスに基づいて、ベクトルレジスタファイルの複数の場所から前記ベクトルレジスタファイルの非シーケンシャルな場所を選択し、
前記第１の部分を前記ベクトルレジスタファイルの第１の非シーケンシャルな場所に配置し、
前記第２の部分を前記ベクトルレジスタファイルの第２の非シーケンシャルな場所に配置し、
前記第１の部分および前記第２の部分は、前記シーケンシャルデータ内で互いに隣接している、装置。
【請求項１５】
前記メモリコントローラに連結された第１のプロセッサおよび第２のプロセッサをさらに備え、
前記第１のプロセッサは、前記第１の非シーケンシャルな場所における前記第１の部分を処理し、
前記第２のプロセッサは、前記第１のプロセッサと同時に、前記第２の非シーケンシャルな場所における前記第２の部分を処理する、請求項１４に記載の装置。
【請求項１６】
前記バーストタイプの前記指標は、前記バーストタイプがシーケンシャルバーストタイプであるか、またはインターリーブバーストタイプであるかの指標である、請求項１４または１５に記載の装置。
【請求項１７】
前記追加のビットは、前記シーケンシャルデータの追加の転置を可能にする、請求項１６に記載の装置。
【請求項１８】
前記シーケンシャルデータの前記第１の部分は、８バイトのデータである、請求項１４から１７のいずれか一項に記載の装置。
【請求項１９】
前記シーケンシャルデータは、６４バイトのデータである、請求項１４から１８のいずれか一項に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の複数の実施形態は概して、メモリアクセスの技術分野に関する。
【背景技術】
【０００２】
本明細書に提供される背景技術の記載は、概して本開示の文脈を示す目的のためである。この背景技術の項で説明される程度において、現在名を連ねている発明者らの研究は、および、出願時における従来技術として認定されないであろう本記載の態様は、本開示に対する従来技術として明示的にも暗示的にも認められるものではない。本明細書において別途示されない限り、この項において記載されるアプローチは、本開示の特許請求の範囲に対する従来技術ではなく、この項に含まれることによって従来技術として認められるものでもない。
【０００３】
多くのアプリケーション、および集中的な計算を必要とし得るグラフィックのような、特に高性能なコンピューティングアプリケーションは、ベクトルと共に動作する可能性がある。例えば、データがベクトルレジスタファイルにロードされ、次に、互いに並列に動作する複数のベクトル処理ユニットによって処理され得る。特に、当該データはベクトルレジスタファイルの複数のベクトルレジスタ間で分割され得、次に、ベクトル処理ユニットが当該データを特定のベクトルレジスタ内で処理し得る。
【０００４】
複数の実施形態において、複数のメモリアドレスからデータを取得し、当該データをベクトルレジスタ内に書き込む処理は、「ギャザー」操作と称されることがある。対照的に、ベクトルレジスタからのデータを複数のメモリアドレス場所に書き込む処理は、「スキャッター」操作と称されることがある。
【０００５】
複数の実施形態は、添付図面と共に、以下の詳細な説明によって、容易に理解されるであろう。記載の容易化のために、同じ参照符号は、同じ構造要素を示す。複数の実施形態は、添付図面において、例示的なものとして示されており、限定的なものとして示されるものではない。
【図面の簡単な説明】
【０００６】
【図１】様々な実施形態に従う、メモリコントローラを含む例示的なシステムを図示する。
【図２】様々な実施形態に従う、メモリ並べ替え処理の例示的なテーブルを図示する。
【図３】様々な実施形態に従う、メモリ並べ替え処理の代替の例示的なテーブルを図示する。
【図４】様々な実施形態に従う、メモリから読み取られたデータを並べ替えるための例示的な処理を図示する。
【図５】様々な実施形態に従う、本明細書に記載された複数の処理を実行するよう構成された例示的なシステムを図示する。
【発明を実施するための形態】
【０００７】
以下の詳細な説明中、本明細書の一部を形成する添付図面に対する参照がなされる。添付図面を通して、同様の参照符号は同様の部材を指し、そこでは実施され得る複数の実施形態が例示で示される。複数の他の実施形態が利用されてよく、本開示の範囲を逸脱することなく、構造的または論理的変更がなされ得ることが理解されるであろう。従って、以下の詳細な説明は限定的意味に解釈されるべきではなく、複数の実施形態の範囲は、添付の特許請求の範囲およびそれらの均等技術によって画される。
【０００８】
シーケンシャルデータの処理に関連付けられる装置、方法、およびストレージ媒体が本明細書に記載される。具体的には、レガシシステムにおいては、ベクトルレジスタファイルは、複数のベクトルレジスタを含んでよく、複数のベクトル処理結合ユニットは、当該複数のそれぞれのベクトルレジスタの各々のデータを処理するよう構成されてよい。例えば、シーケンシャルデータは、一連のデータの「チャンク」に分割されてよく、各チャンクは、異なるベクトル処理ユニットによって処理されてよい。
【０００９】
いくつかの実施形態においては、特定のベクトル処理ユニットが、別のデータチャンクではなく、特定のデータチャンクを処理することが所望されてよい。既存のレガシシステムにおいては、シーケンシャルデータはメモリから読み取られてよく、シーケンシャルデータの各チャンクは、ベクトルレジスタファイルのベクトルレジスタに配置されてよい。次に、所望のデータチャンクがベクトルレジスタファイルの所望のベクトルレジスタ内にあるよう、様々なベクトルレジスタ内のデータの順序がシャッフルされてよい。最後に、当該データは、様々なベクトル処理ユニットによって処理されてよい。
【００１０】
しかしながら、本明細書のいくつかの実施形態は、ベクトル処理ユニットにデータをロードし、当該データを処理する効率を高め得る処理を提供する。具体的には、本明細書に記載の複数の実施形態において、中央処理装置（ＣＰＵ）は、データが格納されるダイナミックランダムアクセスメモリ（ＤＲＡＭ）のようなメモリに連結されるメモリコントローラにコマンドを送信してよい。当該コマンドに基づいて、メモリコントローラは、データをＤＲＡＭから取得（ｒｅｔｒｉｅｖｅ）し、当該データがベクトルレジスタファイルの１または複数のベクトルレジスタにロードされる前に、当該データを並べ替えてよい。次に、メモリコントローラは、当該並べ替えにより、並べ替えられたデータをベクトルレジスタファイルの１または複数のベクトルレジスタにロードしてよい。データのベクトルレジスタファイルへのロード後ではなく、取得処理中にデータを並べ替えることによって、様々な利点が実現されてよい。例えば、ＣＰＵから送信される必要のある信号数が減少されてよい。また、ロードおよび処理の時間、従ってシステムのレイテンシが低減されてよい。追加的または代替的な利点も実現されてよい。
【００１１】
様々な動作が、特許請求の範囲の主題の理解に最も有用な態様で、複数の別個のアクションまたは動作として順番に記載されてよい。しかしながら、記載の順序は、これらの動作が必ず順序に依存することを示唆するものとして解釈されてはならない。特に、これらの動作は、提示の順序で実行されなくてもよい。記載される動作は、記載された実施形態とは異なる順序で実行されてよい。様々な追加の動作が実行されてよく、および／または記載の動作は、追加の実施形態において省略されてよい。
【００１２】
本開示の目的において、「Ａおよび／またはＢ」および「ＡまたはＢ」という文言は、（Ａ）、（Ｂ）または（ＡおよびＢ）を意味する。本開示の目的において、「Ａ、Ｂおよび／またはＣ」という文言は、（Ａ）、（Ｂ）、（Ｃ）、（ＡおよびＢ）、（ＡおよびＣ）、（ＢおよびＣ）または（Ａ、ＢおよびＣ）を意味する。
【００１３】
詳細な説明は、「実施形態において」または「複数の実施形態において」という文言を用いることがあるが、これらはそれぞれ、同一または異なる実施形態のうちの１または複数を指してよい。さらに、「備える」、「含む」、「有する」等の用語は、本開示の複数の実施形態に関して使用されるように、同義語である。
【００１４】
本明細書で使用される通り、用語「回路」は、１または複数のソフトウェア若しくはファームウェアプログラムを実行する特定用途向け集積回路（ＡＳＩＣ）、電子回路、プロセッサ（共有、専用、またはグループ）および／またはメモリ（共有、専用、またはグループ）、組み合わせロジック回路、および／または所望の機能を提供する複数の他の好適なハードウェアコンポーネントを指してよく、またはそれらの一部であってよく、あるいはそれらを含んでよい。本明細書で使用される通り、「コンピュータ実装される方法」は、１または複数のプロセッサ、１または複数のプロセッサを有するコンピュータシステム、（１または複数のプロセッサを含み得る）スマートフォンのようなモバイルデバイス、タブレット、ラップトップコンピュータ、セットトップボックス、ゲーム機等によって実行される任意の方法を指してよい。
【００１５】
図１は、データのベクトルレジスタファイルへのより効率的なギャザーを可能にし得るシステム１００の例を示す。複数の実施形態において、ＣＰＵ１０５、および特に、後述のベクトルレジスタファイル１３０のようなＣＰＵ１０５の複数の要素が、１または複数のバスを介してメモリコントローラ１１０に連結されてよい。複数の実施形態において、メモリコントローラ１１０が追加的にＤＲＡＭ１２０に連結されてよい。本明細書に記載の複数の実施形態において、ＤＲＡＭ１２０は、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、第２世代（ＤＤＲ２）、第３世代（ＤＤＲ３）、または第４世代（ＤＤＲ４）ＤＲＡＭのようなダブルデータレート（ＤＤＲ）ＤＲＡＭ、または何らかの他のタイプのＤＲＡＭであってよい。いくつかの実施形態において、メモリコントローラ１１０は、ＤＤＲ通信リンク１２５を介してＤＲＡＭ１２０に連結されてよい。
【００１６】
複数の実施形態において、メモリコントローラ１１０はまた、複数のベクトルレジスタ１３５ａ、１３５ｂおよび１３５ｃを含み得るＣＰＵ１０５のベクトルレジスタファイル１３０に連結されてよい。いくつかの実施形態において、ベクトルレジスタファイル１３０は、単一命令多重データ（ＳＩＭＤ）レジスタファイルと呼ばれ得る。複数のベクトルレジスタの各々は、メモリコントローラ１１０によって、ＤＲＡＭ１２０から取得されたデータの一部を格納するよう構成されてよい。複数の実施形態において、ベクトルレジスタファイル１３０は、ＣＰＵ１０５の複数のベクトル処理ユニット１４０ａ、１４０ｂおよび１４０ｃに連結されてよい。ベクトル処理ユニット１４０ａ、１４０ｂおよび１４０ｃは、ベクトルレジスタファイル１３０のベクトルレジスタ１３５ａ、１３５ｂまたは１３５ｃのうちの１または複数内のデータの一部を、ベクトルレジスタファイル１３０の異なる１または複数のベクトルレジスタ１３５ａ、１３５ｂまたは１３５ｃ内のデータの別の部分を処理するベクトル処理ユニット１４０ａ、１４０ｂまたは１４０ｃのうちの別のものと並列に処理するよう構成されてよい。例えば、ベクトル処理ユニット１４０ａは、ベクトルレジスタ１３５ａのデータを、ベクトルレジスタ１３５ｂのデータを処理するベクトル処理ユニット１４０ｂと並列に処理してよい。図１は、ベクトルレジスタファイル１３０が３つのベクトルレジスタ１３５ａ、１３５ｂおよび１３５ｃのみを有するように示すが、複数の他の実施形態において、ベクトルレジスタファイル１３０はそれより多いまたは少ない数のベクトルレジスタを有してよい。また、システム１００は、図１に示される３つのベクトル処理ユニット１４０ａ、１４０ｂおよび１４０ｃよりも、多いまたは少ない数のベクトル処理ユニットを含んでよい。
【００１７】
複数の特定の要素は、互いの要素または互いに連結される要素として示されるが、複数の他の実施形態において、当該要素のうちの１または複数は、システムオンチップ（ＳｏＣ）若しくはシステムインパッケージ（ＳｉＰ）構成内の同一チップ若しくはパッケージ上に存在してよく、または互いに別個であってよい。例えば、ベクトルレジスタファイル１３０および／またはベクトル処理ユニット１４０ａ、１４０ｂおよび１４０ｃのうちの１または複数は、ＣＰＵ１０５と別個であってよい。あるいは、単一チップが、ＣＰＵ１０５、メモリコントローラ１１０、ベクトルレジスタファイル１３０、およびベクトル処理ユニット１４０ａ、１４０ｂまたは１４０ｃのうちの１または複数を含んでよい。
【００１８】
いくつかの実施形態において、メモリコントローラ１１０は、メモリ取得回路１４５、並べ替え回路１５０、および格納回路１５５のような１または複数のモジュールまたは回路を含んでよい。複数の実施形態において、メモリ取得回路１４５は、ＤＲＡＭ１２０からデータの１または複数の部分を取得するよう構成されてよい。並べ替え回路１５０はさらに詳細に後述されるように、メモリ取得回路１４５によって取得されたデータを並べ替えるよう構成されてよい。格納回路１５５は、並べ替えられたデータをベクトルレジスタファイル１３０に配置するよう構成されてよい。
【００１９】
複数の実施形態において、ＣＰＵ１０５は、命令をメモリコントローラ１１０に送信するよう構成されてよい。ＳＩＭＤ命令であり得る当該命令は、例えば、「ＡＣＴＩＶＥ」コマンドを生成するためのメモリコントローラ１１０の命令を含んでよい。いくつかの実施形態において、当該命令は、ＤＲＡＭ１２０における所望のデータの場所の指標を含み得るＣＰＵ１０５からの「ＬＯＡＤ」若しくは「ＭＯＶ」命令であってよく、またはそれを含んでよい。ＡＣＴＩＶＥコマンドによって、メモリコントローラ１１０は、データが格納若しくは取得され得る先のＤＲＡＭ１２０内のメモリ場所、すなわち「ページ」をアクティブ化（オープン）してよい。いくつかの実施形態において、ＡＣＴＩＶＥコマンドによってオープンされる当該場所は、数千バイトのデータを含んでよい。それに続く当該メモリへのアクセスが、オープンされたページ範囲内である場合、当該ページ内のデータを選択するため、アドレスのサブセットのみが、供給される必要があってよい。複数の実施形態において、ＡＣＴＩＶＥコマンドはまた、データが格納される先のＤＲＡＭ１２０の行アドレスを識別してよい。
【００２０】
ＡＣＴＩＶＥコマンドの後、メモリコントローラ１１０は「ＲＥＡＤ」または「ＷＲＩＴＥ」コマンドを生成してよい。いくつかの実施形態において、ＡＣＴＩＶＥコマンドを生成した同一の命令に応答して、ＲＥＡＤまたはＷＲＩＴＥコマンドが生成されてよく、複数の他の実施形態において、ＲＥＡＤまたはＷＲＩＴＥコマンドは、ＣＰＵ１０５からの別の命令に応答して生成されてよい。いくつかの実施形態において、ＡＣＴＩＶＥ、ＲＥＡＤ、またはＷＲＩＴＥコマンドのうちの１つまたはすべては、ＤＲＡＭ１２０における場所の列アドレス若しくは行アドレスのような、ＤＲＡＭ１２０のメモリアドレスを含んでよい。具体的には、ＣＰＵ１０５からの命令は、ＤＲＡＭ１２０内の特定の行および列アドレスに変換され得る１または複数のメモリアドレスを含んでよい。この変換は、メモリコントローラ１１０によってなされてよく、ＤＲＡＭ１２０へのアクセスを均等に分散するといった他の目的を実現することに独自的（ｐｒｏｐｒｉｅｔａｒｙ）であってよい。ＤＲＡＭ１２０は、２Ｄアレイとして編成され得るので、ＡＣＴＩＶＥ、ＲＥＡＤ、またはＷＲＩＴＥコマンドにおける行アドレスは、所望のデータが格納される先のＤＲＡＭ１２０の行を選択してよく、ＡＣＴＩＶＥ、ＲＥＡＤ、またはＷＲＩＴＥコマンドの列アドレスは、アクセスされているＤＲＡＭ１２０の列を選択してよい。いくつかの実施形態において、行および列アドレスは、いくつかのＤＲＡＭにおいてラッチされてよい。
【００２１】
ＣＰＵ１０５は、多数のクロックサイクル後に、当該命令をメモリコントローラ１１０に送信してよい。あるいは、ＣＰＵ１０５は当該命令をメモリコントローラ１１０に送信してよく、メモリコントローラ１１０は、多数のクロックサイクル後に、当該命令を実施してよい。例えば、いくつかの実施形態において、メモリコントローラ１１０は、メモリコントローラ１１０の１または複数のプリセットパラメータに従い、特定のコマンド間でクロックサイクル数をトラッキング可能であってよい。複数の実施形態において、当該数は、ＩＲＣＤサイクルで測定されてよく、それは行アドレスストローブ（ＲＡＳ）を発行するメモリコントローラ１１０と、列アドレスストローブ（ＣＡＳ）を発行するメモリコントローラ１１０との間の時間に対応してよい。
【００２２】
いくつかの実施形態において、ＣＰＵからの当該命令により、メモリコントローラ１１０はＲＥＡＤコマンドを介して、ベクトルレジスタ１３５ａ、１３５ｂまたは１３５ｃの１または複数内にデータを読み込んでよい。当該データのこの読み込みは、データの格納先であるＤＲＡＭ１２０のメモリ場所の列アドレスまたは行アドレスのような、コマンドの一部に対応するＤＲＡＭ１２０のピンをアサートすることによって実現されてよい。ＤＲＡＭ１２０の１または複数のピンは、ＲＥＡＤコマンドの列アドレスに対応してよい。後により詳細に記載されるように、これらのピンのアサートを介して、データはＤＲＡＭ１２０からメモリコントローラ１１０に「バースト」で配信されてよい。
【００２３】
具体的には、ＤＲＡＭ１２０は、複数のピンを有してよく、それらを介してＤＲＡＭ１２０はメモリコントローラ１１０から特定の信号を送信または受信し得る。特定のピンで受信されたコマンドにより、ＤＲＡＭ１２０は、例えば、上述のようにデータを読み取る、または後述のようにデータを書き込むといった特定の機能を実行してよい。
【００２４】
対照的に、ＷＲＩＴＥコマンドは、メモリコントローラ１１０に、ベクトルレジスタ１３５ａ、１３５ｂおよび１３５ｃからのデータをＷＲＩＴＥコマンドによって指定されたＤＲＡＭ１２０のメモリ場所へ書き込ませてよい。
【００２５】
いくつかの実施形態において、ＤＲＡＭ１２０内に格納されたデータは、シーケンシャルデータであってよい。シーケンシャルデータの一例として、データは６４バイト長で、８つの８バイトチャンクで編成されてよい。６４バイトの第１の８バイトチャンクは、０番目のチャンクと称されてよく、６４バイトの第２の８バイトチャンクは、１番目のチャンクと称されてよい、といった具合である。全部で、シーケンシャルデータは、チャンク０、１、２、３、４、５、６および７で構成されてよい。
【００２６】
いくつかの実施形態において、ＣＰＵ１０５は、キャッシュ１１５を含んでよい。図１に示される通り、いくつかの実施形態において、キャッシュ１１５は、メモリコントローラ１１０および／またはベクトルレジスタファイル１３０に連結され、並びにそれらの間に配置されてよい。いくつかの実施形態において、キャッシュ１１５はまた、ベクトル処理ユニット１４０ａ、１４０ｂおよび１４０ｃのうちの１または複数に連結されてよい。いくつかの実施形態において、ベクトル処理ユニット１４０ａ、１４０ｂおよび１４０ｃ並びに／またはベクトルレジスタファイル１３０のうちの１または複数は、メモリコントローラ１１０を用いてＤＲＡＭ１２０からのデータにアクセスを試行する前に、キャッシュ１１５からのデータにアクセスするよう構成されてよい。
【００２７】
具体的には、ＣＰＵ１０５のような多くの現行のマイクロプロセッサは、システムの平均レイテンシを低減すべく、キャッシュを採用する。キャッシュ１１５は、Ｌ１層、Ｌ２層、Ｌ３層等のような１または複数の層を含んでよい。複数の実施形態において、システム１００のＤＲＡＭ１２０内のデータへのアクセスは、メモリコントローラ１１０のキャッシュラインのサイズに基づいてよい。例えば、いくつかの実施形態において、キャッシュラインサイズは、６４バイトであってよい。この実施形態において、ＤＲＡＭ１２０からの６４バイトキャッシュラインのベクトルレジスタファイル１３０への転送には、８つの連続した８バイトのデータチャンクが必要とされてよい。
【００２８】
本実施形態のベクトルレジスタファイル１３０に対し、ここでは図示しないが、スカラレジスタおよびスカラレジスタファイルが使用されるいくつかのレガシの実施形態においては、本明細書において優先的なチャンクと称され得る、シーケンシャルデータ内で第１番目でないチャンクが、他のチャンクより前に、スカラレジスタファイルに入力されることが望ましい可能性があり、その結果、シーケンシャルデータの残りのデータがＤＲＡＭ１２０のようなＤＲＡＭから読み取られる間に、当該スカラレジスタに関連付けられた、例えばＣＰＵ１０５等のプロセッサが当該データを即座に操作できる。スカラレジスタは、一度に単一のデータチャンクのみを処理可能であり得るので、優先的なチャンクをスカラレジスタに提供することが望ましい可能性がある。対照的に、ベクトルレジスタファイル１３０のようなベクトルレジスタファイルは、互いに並列にシーケンシャルデータの複数のチャンクを処理するよう構成された１または複数のベクトル処理ユニット１４０ａ、１４０ｂおよび１４０ｃに連結されてよい。いくつかの実施形態において、ＲＥＡＤコマンドは、ＲＥＡＤコマンドの開始列アドレス並びに、ＲＥＡＤコマンドが、バーストタイプがシーケンシャルまたはインターリーブのいずれであるかの指標を含むかどうかに少なくとも部分的に基づいて、ＤＲＡＭ１２０からの優先的なチャンクにアクセスするよう構成されてよく、これについてはさらに詳細に後述する。
【００２９】
本開示の複数の実施形態において、ＤＲＡＭ１２０のシーケンシャルデータにアクセスするために、類似のＲＥＡＤコマンドが使用されてよい。しかしながら、本開示の複数の実施形態において、ＲＥＡＤコマンドはまた、どのデータチャンクが、ベクトルレジスタファイル１３０のベクトルレジスタ１３５ａ、１３５ｂおよび１３５ｃ等、ベクトルレジスタファイルのどのベクトルレジスタに配置されるかを決定するために使用されてよい。特定のベクトル処理ユニットが特定のデータチャンクを処理できるよう、特定のベクトルレジスタにそのデータチャンクを配置することが望ましい可能性がある。例えば、いくつかの実施形態においては、ベクトル処理ユニット１４０ａが、シーケンシャルデータの第２のチャンクを処理する一方、ベクトル処理ユニット１４０ｂがシーケンシャルデータの第４のチャンクを処理することが望ましい可能性がある。特定のベクトル処理ユニットにより、データチャンクを処理することは、特定のアルゴリズム、処理の要件、または何らかの他の要件に基づいてよい。
【００３０】
具体的には、いくつかの実施形態において、ベクトル操作は、ＳＩＭＤコマンドと称されてよい。複数の実施形態において、ベクトルレジスタファイル１３０のベクトルレジスタ１３５ａ、１３５ｂおよび１３５ｃに特定のデータチャンクを入力することは、１または複数のＳＩＭＤコマンドを使用して実現されてよい。具体的には、ＳＩＭＤ命令がベクトルレジスタファイル１３０またはメモリオペランドのようなベクトルレジスタファイルをセレクタとして用いて、シーケンシャルデータの３２ビットまたは６４ビットのベクトル要素をシャッフルするために使用されてよい。
【００３１】
図２は、ベクトルレジスタファイル内のシーケンシャルデータの複数のチャンクを並べ替えるために使用され得るテーブルの例を示す。上記の通り、ＣＰＵ１０５は、ＲＥＡＤコマンドをメモリコントローラ１１０に送信してよい。ＲＥＡＤコマンドは、開始列アドレスを含んでよい。追加的または代替的に、ＲＥＡＤコマンドは、ＤＲＡＭ１２０からのシーケンシャルデータの取得がシーケンシャルか、またはインターリーブであるかの指標を含んでよい。シーケンシャルバーストモードでは、シーケンシャルデータの複数のチャンクは、アドレスの昇順にアクセスされてよく、その最後に到達したら、ブロックの始めまで戻る（ｗｒａｐ  ｂａｃｋ）。対照的に、インターリーブバーストモード（ｉｎｔｅｒｌｅａｖｅｄ  ｂｕｒｓｔ  ｍｏｄｅ）は、開始アドレスおよびそのカウンタ値に基づき、「排他的ＯＲ」（ＸＯＲ）操作を使用して、チャンクを識別する。いくつかの実施形態において、シーケンシャルバーストモードに使用され得る「加算」演算より、ＸＯＲ操作はロジックゲートに対し実施することがより簡易であり得るので、インターリーブバーストモードは、より簡易またはより計算効率が良い可能性がある。
【００３２】
図２に図示の通り、開始列アドレスおよびＣＰＵ１０５から受信した命令内、例えば、上記の「ＬＯＡＤ」または「ＭＯＶ」命令内のバーストタイプの指標に基づいて、メモリコントローラ１１０は、シーケンシャルデータにアクセスし、シーケンシャルデータを並べ替えて、次に、ベクトルレジスタファイル１３０のベクトルレジスタ１３５ａ、１３５ｂおよび１３５ｃ内に並べ替えられたデータを格納してよい。具体的には、メモリコントローラ１１０のメモリ取得回路１４５が、ＤＲＡＭ１２０内に格納されたシーケンシャルデータにアクセスしてよい。当該データへのアクセスは、ＤＲＡＭ１２０のデータの列および／または行アドレスのＲＥＡＤコマンド内の指標に少なくとも部分的に基づいてよい。
【００３３】
次に、メモリコントローラ１１０、および特にメモリコントローラ１１０の並べ替え回路１５０は、メモリ取得回路１４５によって、ＤＲＡＭ１２０から取得されたシーケンシャルデータを並べ替えてよい。具体的には、シーケンシャルデータの複数のチャンクは、バーストタイプの指標およびＲＥＡＤコマンドの開始列アドレスに従い、並べ替えられてよい。一例として、シーケンシャルデータは、８バイトの８つのシーケンシャルチャンクにそれぞれ編成された６４バイトで構成され、チャンク０、１、２、３、４、５、６および７とラベル付けされていると想定する。この例においては、ＲＥＡＤコマンドは、「１，０，０」の開始列アドレスを有してよい。図２に示される通り、この開始列アドレスは、シーケンシャルデータはチャンク４、５、６、７、０、１、２および３として並べ替えられるべきであることを示してよい。換言すれば、「１，０，０」の開始列アドレスは、シーケンシャルデータの第１の３２バイトおよびシーケンシャルデータの第２の３２バイトは、スワッピングされるべきであることを示してよい。この例においては、バーストタイプがシーケンシャルかインターリーブであるかどうかのＲＥＡＤコマンド内の指標は、並べ替えに影響しなくてもよい。
【００３４】
次にメモリコントローラ１１０の格納回路１５５は、ＲＥＡＤコマンドによって指示される並べ替えに従い、並べ替えられたデータをベクトルレジスタファイルのベクトルレジスタ１３５ａ、１３５ｂおよび１３５ｃに格納してよい。例えば、上記の例で続けると、チャンク４が、ベクトル処理ユニット１４０ａによる処理のためにベクトルレジスタ１３５ａに格納されてよく、チャンク５が、ベクトル処理ユニット１４０ｂによる処理のためにベクトルレジスタ１３５ｂに格納されてよく、チャンク６が、ベクトル処理ユニット１４０ｃによる処理のためにベクトルレジスタ１３５ｃに格納されてよいといった具合である。
【００３５】
複数の他の実施形態において、図２に示されるシーケンスを超えて、他の複数のデータ転置を含むべく、１または複数の追加のインタフェースおよび／またはロジックが追加されてよい。図３は、追加のインタフェースを使用するデータの並べ替えを示し得るテーブルの例を示す。具体的には、データの追加のビットが、ＲＥＡＤコマンドと共にメモリコントローラ１１０に送信され得るように、追加のピンがＣＰＵ１０５に追加されてよい。図３の実施形態に示される通り、追加のピンは、並べ替えられたシーケンシャルデータの最大８つの追加の転置を可能にする。
【００３６】
図４は、上記の通り、メモリコントローラ１１０によって実行されてよい例示的な処理を示す。最初に、４００において、メモリコントローラ１１０は、ＣＰＵ１０５等のＣＰＵから命令を受信してよい。当該命令は、例えば、上記のＲＥＡＤコマンドであってよい。
【００３７】
次に、４０５において、メモリコントローラ１１０はＤＲＡＭ１２０等のＤＲＡＭからシーケンシャルデータを取得してよい。具体的には、メモリコントローラ１１０のメモリ取得回路１４５が、ＤＲＡＭ１２０からシーケンシャルデータを取得してよい。
【００３８】
４１０において、ＤＲＡＭからシーケンシャルデータを取得後、メモリコントローラ１１０、具体的にはメモリコントローラ１１０の並べ替え回路１５０は、ＣＰＵ１０５からの当該命令に従い、シーケンシャルデータを並べ替えてよい。例えば、メモリコントローラ１１０は、開始列アドレス、バーストタイプの指標、またはＣＰＵ１０５のピンのような１または複数の追加のインタフェース若しくはロジック要素上で受信された指標のうちの１または複数に従い、データを並べ替えてよい。
【００３９】
データを並べ替え後、４１５において、メモリコントローラ１１０、具体的にはメモリコントローラ１１０の格納回路１５５は、当該並べ替えに従い、シーケンシャルデータの第１の部分を、ベクトルレジスタファイルの第１の非シーケンシャルな場所に配置してよい。具体的には、メモリコントローラ１１０は、データのチャンクをベクトルレジスタファイル１３０のベクトルレジスタ１３５ａのような、ベクトルレジスタファイルのベクトルレジスタに配置してよい。当該データチャンクは、シーケンシャルデータの第１のチャンクであってよい。次に、４２０において、メモリコントローラ１１０、具体的にはメモリコントローラ１１０の格納回路１５５は、当該並べ替えに従い、シーケンシャルデータの第２の部分を、ベクトルレジスタファイルの第２の非シーケンシャルな場所に配置してよい。例えば、メモリコントローラ１１０は、シーケンシャルデータの第２のチャンクをベクトルレジスタファイル１３０のベクトルレジスタ１３５ｃのような、ベクトルレジスタファイルのベクトルレジスタに配置してよい。次に、処理は４２５において終了してよい。
【００４０】
上記のチャンクおよびベクトルレジスタは、ＤＲＡＭ１２０のようなＤＲＡＭから取得されたシーケンシャルデータを並べ替え、および並べ替えられたデータをベクトルレジスタファイル１３０のベクトルレジスタ１３５ａ、１３５ｂおよび１３５ｃのようなベクトルレジスタファイルのベクトルレジスタに格納すべくメモリコントローラによって使用され得る処理の単なる例にすぎないことが理解されるであろう。「第１」および「第２」の記載は、本明細書において、シーケンシャルデータの２つの異なるチャンク間を区別するために使用されており、当該記載がシーケンシャルデータの最初の２つのチャンクのみに限定されるものとして解釈されるべきではない。同様に、複数のベクトルレジスタに関し本明細書で使用される「第１および第２」の記載は、説明であり、限定的なものとして意図されていない。
【００４１】
上記の複数の例は、６４バイトのデータに関し記載されているが、当該データ並べ替え処理はさらに、より大きな範囲に拡張され得る。例えば、バースト順序は８チャンクを含むのみとして記載されているものの、複数の他の実施形態においては、より多数またはより少数のチャンクが使用されてよい。また、各チャンクは、より多いまたはより少ないバイトのデータを含んでよい。いくつかの実施形態において、ＤＲＡＭ１２０のようなＤＲＡＭは、約数千ビットの順序に関するデータを含み得、シーケンシャルデータのチャンクおよび／または長さは、増加されたデータ量を含むべく、拡張されてよい。上記の処理に従い並べ替えられ得るデータ量を拡張する１つの方法は、ＲＥＡＤコマンドにおいて追加の複数の列アドレスを使用すること、または図３で上記した複数の追加のピンを使用してＣＰＵからの追加のデータをメモリコントローラに送信することであってよい。複数の他の実施形態において、データ並べ替え処理は、データの「ストライド」に拡張されてよく、そこにおいては、連続チャンク｛０，１，２，３，４，５，６，７｝を含むシーケンシャルデータの代わりに、シーケンシャルは、非連続チャンク｛０，２，４，６，８，１０，１２，１４｝または何らかの他のシーケンシャルな非連続インクリメントを含んでよい。いくつかの実施形態において、メモリコントローラまたはＲＥＡＤコマンドの列アドレスに送信されたデータ量を変更することは、ＤＲＡＭ内の追加のロジックが、追加のコマンドまたはデータを処理することを必要としてよい。また、上記複数の処理は、ベクトルレジスタファイル１３０に関し記載されているが、いくつかの実施形態において、データをスカラレジスタに供給すべく、シーケンシャルデータをＤＲＡＭから取得し、当該データを並べ替え、および次に当該データをレジスタに供給する処理が使用されてよい。その場合、データの優先的なチャンクのみにとどまらず、データチャンクの特定の順序が望ましい。
【００４２】
図５は、様々な実施形態に従う、前述のＣＰＵ１０５、メモリコントローラ１１０および／またはＤＲＡＭ１２０のようなシステムが組み込まれ得る、コンピューティングデバイス５００の例を図示する。コンピューティングデバイス５００は、多数のコンポーネント、１または複数の追加のプロセッサ５０４、および少なくとも１つの通信チップ５０６を含んでよい。
【００４３】
様々な実施形態において、当該１または複数のプロセッサ５０４またはＣＰＵ１０５はそれぞれ、１または複数のプロセッサコアを含んでよい。様々な実施形態において、当該少なくとも１つの通信チップ５０６は、当該１または複数のプロセッサ５０４またはＣＰＵ１０５に物理的および電気的に連結されてよい。複数のさらなる実装において、通信チップ５０６は、当該１または複数のプロセッサ５０４またはＣＰＵ１０５の一部であってよい。様々な実施形態において、コンピューティングデバイス５００は、プリント回路基板（ＰＣＢ）５０２を含んでよい。これらの実施形態について、１または複数のプロセッサ５０４、ＣＰＵ１０５、および通信チップ５０６がＰＣＢ上に配置されてよい。複数の代替的な実施形態において、ＰＣＢ５０２を採用することなく、様々なコンポーネントが連結されてよい。
【００４４】
その用途に応じ、コンピューティングデバイス５００は、ＰＣＢ５０２に物理的および電気的に連結されてもされなくてもよい複数の他のコンポーネントを含んでよい。これらの他のコンポーネントは限定されないが、揮発性メモリ（例えば、ＤＲＡＭ１２０）、ＲＯＭ５０８のような不揮発性メモリ、Ｉ／Ｏコントローラ５１４、デジタル信号プロセッサ（不図示）、暗号プロセッサ（不図示）、グラフィックプロセッサ５１６、１または複数のアンテナ５１８、ディスプレイ（不図示）、タッチスクリーンディスプレイ５２０、タッチスクリーンコントローラ５２２、バッテリ５２４、オーディオコーデック（不図示）、ビデオコーデック（不図示）、全地球測位システム（ＧＰＳ）デバイス５２８、コンパス５３０、加速度計（不図示）、ジャイロスコープ（不図示）、スピーカ５３２、カメラ５３４、および大量ストレージデバイス（ハードディスクドライブ、ソリッドステートドライブ、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）（不図示））等を含む。様々な実施形態において、ＣＰＵ１０５は、同一ダイ上で複数の他のコンポーネントと統合され、図１に示されるようなシステムオンチップ（ＳｏＣ）を形成してよい。複数の実施形態において、ＤＲＡＭ１２０および／またはＲＯＭ５０８のうちの１つまたは両方は、クロスポイント型不揮発性メモリであってよく、またはそれを含んでよい。
【００４５】
様々な実施形態において、コンピューティングデバイス５００は、例えばフラッシュメモリ５１２のような常駐する永続的または不揮発性のメモリを含んでよい。いくつかの実施形態において、１または複数のプロセッサ５０４、ＣＰＵ１０５、および／またはフラッシュメモリ５１２は、プログラミング命令を格納する関連ファームウェア（不図示）を含んでよく、当該命令は、コンピューティングデバイス５００が、１または複数のプロセッサ５０４、ＣＰＵ１０５、またはメモリコントローラ１１０によるプログラミング命令の実行に応答して、図４に関し上記したブロックのうちのすべてまたは選択された態様を実行することを可能にするよう構成されている。様々な実施形態において、これらの態様は、１または複数のプロセッサ５０４、ＣＰＵ１０５、メモリコントローラ１１０、またはフラッシュメモリ５１２とは別個のハードウェアを使用して、追加的または代替的に実装されてよい。
【００４６】
通信チップ５０６は、コンピューティングデバイス５００との間でデータを転送するために有線および／または無線通信を有効にしてよい。「無線」という用語およびその派生語は、非固体媒体を通る変調電磁放射を用いることによってデータ通信を行うことができる回路、デバイス、システム、方法、技術、通信チャネル等を説明するために使用されてよい。当該用語は、関連デバイスがいかなる有線をも含まないことを示唆するものではないが、いくつかの実施形態においては含まなくてもよい。通信チップ５０６は、３Ｇ、４Ｇ、５Ｇおよびこれら以降のものとして指定された任意の他の無線プロトコルだけでなく、限定されないが、ＩＥＥＥ８０２．２０、汎用パケット無線サービス（ＧＰＲＳ）、Ｅｖｏｌｕｔｉｏｎ Ｄａｔａ Ｏｐｔｉｍｉｚｅｄ（Ｅｖ−ＤＯ）、Ｅｖｏｌｖｅｄ  Ｈｉｇｈ  Ｓｐｅｅｄ  Ｐａｃｋｅｔ  Ａｃｃｅｓｓ（ＨＳＰＡ＋）、Ｅｖｏｌｖｅｄ  Ｈｉｇｈ  Ｓｐｅｅｄ  Ｄｏｗｎｌｉｎｋ  Ｐａｃｋｅｔ  Ａｃｃｅｓｓ（ＨＳＤＰＡ＋）、Ｅｖｏｌｖｅｄ  Ｈｉｇｈ  Ｓｐｅｅｄ  Ｕｐｌｉｎｋ  Ｐａｃｋｅｔ  Ａｃｃｅｓｓ（ＨＳＵＰＡ＋）、グローバルシステムフォーモバイルコミュニケーションズ（ＧＳＭ（登録商標））、ＧＳＭ（登録商標）進化型高速データレート（ＥＤＧＥ）、符号分割多重アクセス（ＣＤＭＡ）、時分割多重アクセス（ＴＤＭＡ）、Ｄｉｇｉｔａｌ Ｅｎｈａｎｃｅｄ Ｃｏｒｄｌｅｓｓ Ｔｅｌｅｃｏｍｍｕｎｉｃａｔｉｏｎｓ（ＤＥＣＴ）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、およびそれらの派生物を含む多数の無線規格またはプロトコルのいずれかを実装してよい。コンピューティングデバイス５００は、複数の通信チップ５０６を含んでよい。例えば、第１の通信チップ５０６は、Ｗｉ−Ｆｉ（登録商標）およびＢｌｕｅｔｏｏｔｈ（登録商標）のような短距離無線通信に専用化されてよく、第２の通信チップ５０６は、ＧＰＳ、ＥＤＧＥ、ＧＰＲＳ、ＣＤＭＡ、ＷｉＭＡＸ（登録商標）、ＬＴＥ、Ｅｖ−ＤＯ、およびその他のような長距離無線通信に専用化されてよい。
【００４７】
様々な実装において、コンピューティングデバイス５００は、ラップトップ、ネットブック、ノートブック、ウルトラブック、スマートフォン、コンピューティングタブレット、パーソナルデジタルアシスタント（ＰＤＡ）、ウルトラモバイルＰＣ、モバイルフォン、デスクトップコンピュータ、サーバ、プリンタ、スキャナ、モニタ、セットトップボックス、エンターテインメント制御ユニット（例えば、ゲーム機）、デジタルカメラ、ポータブル音楽プレーヤ、またはデジタルビデオレコーダであってよい。さらなる実装において、コンピューティングデバイス５００は、データを処理する任意の他の電子デバイスであってよい。
【００４８】
複数の実施形態において、本開示の第１の例は、中央処理装置（ＣＰＵ）からの命令に少なくとも部分的に基づいて、第１のシーケンスで順序付けられた複数の部分を含むデータを取得するよう構成された取得回路と、上記複数の部分が、上記第１のシーケンスとは異なる第２のシーケンスで順序付けられるように、受信された上記命令に少なくとも部分的に基づいて、上記データを並べ替えるよう構成された、上記取得回路に連結された並べ替え回路と、受信された上記命令に少なくとも部分的に基づいて、上記複数の部分を、ベクトルレジスタファイルのそれぞれの複数の場所に上記第２のシーケンスで格納するよう構成された格納回路と、を備える、メモリコントローラを含んでよい。
【００４９】
例２は、上記第２のシーケンスは、上記命令の開始列アドレスに少なくとも部分的に基づく、例１のメモリコントローラを含んでよい。
【００５０】
例３は、上記第２のシーケンスは、上記命令内のバーストタイプの指標に少なくとも部分的に基づく、例１のメモリコントローラを含んでよい。
【００５１】
例４は、上記バーストタイプの上記指標は、上記バーストタイプがシーケンシャルバーストタイプか、またはインターリーブバーストタイプのいずれであるかの指標である、例３のメモリコントローラを含んでよい。
【００５２】
例５は、上記第２のシーケンスは、上記ＣＰＵのピン設定に少なくとも部分的に基づく、例１のメモリコントローラを含んでよい。
【００５３】
例６は、上記メモリコントローラは、上記データを格納するよう構成されたダイナミックランダムアクセスメモリ（ＤＲＡＭ）に連結される、例１から５のいずれかに係るメモリコントローラを含んでよい。
【００５４】
例７は、上記データは６４バイト長である、例１から５のいずれかに係るメモリコントローラを含んでよい。
【００５５】
例８は、上記複数の部分の各部分は、８バイト長である、例７のメモリコントローラを含んでよい。
【００５６】
例９は、メモリコントローラによって、中央処理装置（ＣＰＵ）から受信された命令に少なくとも部分的に基づいて、シーケンシャルデータの第１の部分および上記シーケンシャルデータの第２の部分を取得する段階と、上記メモリコントローラによって、上記第１の部分をベクトルレジスタファイルの第１の非シーケンシャルな場所に配置する段階と、上記メモリコントローラによって、上記第２の部分を上記ベクトルレジスタファイルの第２の非シーケンシャルな場所に配置する段階と、を備え、上記第１の部分および上記第２の部分は、上記シーケンシャルデータ内で互いに隣接している、方法を含んでよい。
【００５７】
例１０は、上記メモリコントローラは、上記メモリコントローラに連結された第１のベクトル処理ユニットによる処理のために、ベクトルレジスタファイルの上記第１の非シーケンシャルな場所に上記第１の部分を配置するようさらに構成されており、上記メモリコントローラは、上記メモリコントローラに連結された第２のベクトル処理ユニットによる処理のために、上記ベクトルレジスタファイルの上記第２の非シーケンシャルな場所に上記第２の部分を配置するようさらに構成されている、例９の方法を含んでよい。
【００５８】
例１１は、上記メモリコントローラによって、上記命令内の開始列アドレスに少なくとも部分的に基づいて、上記ベクトルレジスタファイルの複数の場所から、上記ベクトルレジスタファイルの上記第１の非シーケンシャルな場所を選択する段階をさらに備える、例９の方法を含んでよい。
【００５９】
例１２は、上記メモリコントローラによって、上記取得する段階がシーケンシャルバーストタイプか、またはインターリーブバーストタイプのいずれによるかに基づいて、上記ベクトルレジスタファイルの複数の場所から、上記ベクトルレジスタファイルの上記第１の非シーケンシャルな場所を選択する段階をさらに備える、例９の方法を含んでよい。
【００６０】
例１３は、上記シーケンシャルデータは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）に格納される、例９から１２のいずれかに係る方法を含んでよい。
【００６１】
例１４は、上記シーケンシャルデータの上記第１の部分は、８バイトのデータである、例９から１２のいずれかに係る方法を含んでよい。例１５は、上記シーケンシャルデータは、６４バイトのデータである、例１４の方法を含んでよい。
【００６２】
例１６は、メモリコントローラに連結された、シーケンシャルデータを格納するよう構成されたダイナミックランダムアクセスメモリ（ＤＲＡＭ）と、メモリコントローラに連結された中央処理装置（ＣＰＵ）と、を備え、上記ＣＰＵは、命令をメモリコントローラに送信するよう構成されており、上記メモリコントローラは、上記メモリコントローラによって、上記ＣＰＵから受信された上記命令に少なくとも部分的に基づいて、上記シーケンシャルデータの第１の部分および上記シーケンシャルデータの第２の部分を取得し、上記第１の部分をベクトルレジスタファイルの第１の非シーケンシャルな場所に配置し、上記第２の部分を上記ベクトルレジスタファイルの第２の非シーケンシャルな場所に配置するよう構成されており、上記第１の部分および上記第２の部分は、上記シーケンシャルデータ内で互いに隣接している、装置を含んでよい。
【００６３】
例１７は、上記メモリコントローラに連結された第１のプロセッサおよび第２のプロセッサをさらに備え、上記第１のプロセッサは、上記第１の非シーケンシャルな場所における上記第１の部分を処理するよう構成され、上記第２のプロセッサは、上記第１のプロセッサと同時に、上記第２の非シーケンシャルな場所における上記第２の部分を処理するよう構成されている、例１６の装置を含んでよい。
【００６４】
例１８は、上記ベクトルレジスタファイルの上記第１の非シーケンシャルな場所は、上記命令内の開始列アドレスに少なくとも部分的に基づいて、上記ベクトルレジスタファイルの複数の場所から選択される、例１６の装置を含んでよい。
【００６５】
例１９は、上記ベクトルレジスタファイルの上記第１の非シーケンシャルな場所は、上記メモリコントローラによって、上記命令が上記第１の部分および上記第２の部分をシーケンシャルバーストタイプか、またはインターリーブされたバーストタイプのいずれにより取得するかに少なくとも部分的に基づいて、上記ベクトルレジスタファイルの複数の場所から選択される、例１６の装置を含んでよい。
【００６６】
例２０は、上記ベクトルレジスタファイルの上記第１の非シーケンシャルな場所は、上記ＣＰＵのピン設定に少なくとも部分的に基づいて、上記ベクトルレジスタファイルの複数の場所から選択される、例１６の装置を含んでよい。
【００６７】
例２１は、上記シーケンシャルデータの上記第１の部分は、８バイトのデータである、例１６から２０のいずれかに係る装置を含んでよい。
【００６８】
例２２は、上記シーケンシャルデータは、６４バイトのデータである、例２１の装置を含んでよい。
【００６９】
例２３は、メモリコントロ―ラによる命令の実行時、上記メモリコントローラに、中央処理装置（ＣＰＵ）から受信された命令に少なくとも部分的に基づいて、シーケンシャルデータの第１の部分および上記シーケンシャルデータの第２の部分を取得させ、上記第１の部分をベクトルレジスタファイルの第１の非シーケンシャルな場所に配置させ、上記第２の部分を上記ベクトルレジスタファイルの第２の非シーケンシャルな場所に配置させるよう構成された複数の命令を備え、上記第１の部分および上記第２の部分は、上記シーケンシャルデータ内で互いに隣接している、１または複数のコンピュータ可読媒体を含んでよい。
【００７０】
例２４は、上記複数の命令は、上記メモリコントローラに、上記メモリコントローラに連結された第１のベクトル処理ユニットによる処理のために、ベクトルレジスタファイルの上記第１の非シーケンシャルな場所に上記第１の部分を配置させ、上記メモリコントローラに連結された第２のベクトル処理ユニットによる処理のために、上記ベクトルレジスタファイルの上記第２の非シーケンシャルな場所に上記第２の部分を配置させるようさらに構成されている、例２３の１または複数のコンピュータ可読媒体を含んでよい。
【００７１】
例２５は、上記複数の命令は、上記メモリコントローラに、上記命令内の開始列アドレスに少なくとも部分的に基づいて、上記ベクトルレジスタファイルの複数の場所から、上記ベクトルレジスタファイルの上記第１の非シーケンシャルな場所を選択させるようさらに構成されている、例２３の１または複数のコンピュータ可読媒体を含んでよい。
【００７２】
例２６は、上記複数の命令は、上記メモリコントローラに、上記取得がシーケンシャルバーストタイプか、またはインターリーブされたバーストタイプのいずれによるかに基づいて、上記ベクトルレジスタファイルの複数の場所から、上記ベクトルレジスタファイルの上記第１の非シーケンシャルな場所を選択させるようさらに構成されている、例２３の１または複数のコンピュータ可読媒体を含んでよい。
【００７３】
例２７は、上記シーケンシャルデータは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）に格納される、例２３から２６のいずれかに係る１または複数のコンピュータ可読媒体を含んでよい。
【００７４】
例２８は、上記シーケンシャルデータの上記第１の部分は、８バイトのデータである、例２３から２６のいずれかに係る１または複数のコンピュータ可読媒体を含んでよい。
【００７５】
例２９は、上記シーケンシャルデータは、６４バイトのデータである、例２８の１または複数のコンピュータ可読媒体を含んでよい。
【００７６】
例３０は、中央処理装置（ＣＰＵ）から受信された命令に少なくとも部分的に基づいて、シーケンシャルデータの第１の部分および上記シーケンシャルデータの第２の部分を取得するための手段と、上記第１の部分をベクトルレジスタファイルの第１の非シーケンシャルな場所に配置するための手段と、上記第２の部分を上記ベクトルレジスタファイルの第２の非シーケンシャルな場所に配置するための手段と、を備え、上記第１の部分および上記第２の部分は、上記シーケンシャルデータ内で互いに隣接している、装置を含んでよい。
【００７７】
例３１は、第１のベクトル処理ユニットによる処理のために、ベクトルレジスタファイルの上記第１の非シーケンシャルな場所に上記第１の部分を配置するための手段と、第２のベクトル処理ユニットによる処理のために、上記ベクトルレジスタファイルの上記第２の非シーケンシャルな場所に上記第２の部分を配置するための手段と、をさらに備える、例３０の装置を含んでよい。
【００７８】
例３２は、上記命令内の開始列アドレスに少なくとも部分的に基づいて、上記ベクトルレジスタファイルの複数の場所から上記ベクトルレジスタファイルの上記第１の非シーケンシャルな場所を選択するための手段をさらに備える、例３０の装置を含んでよい。
【００７９】
例３３は、上記取得がシーケンシャルバーストタイプか、またはインターリーブバーストタイプのいずれによるかに基づいて、上記ベクトルレジスタファイルの複数の場所から、上記ベクトルレジスタファイルの上記第１の非シーケンシャルな場所を選択するための手段をさらに備える、例３０の装置を含んでよい。
【００８０】
例３４は、上記シーケンシャルデータは、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）に格納される、例３０から３３のいずれかに係る装置を含んでよい。
【００８１】
例３５は、上記シーケンシャルデータの上記第１の部分は、８バイトのデータである、例３０から３３のいずれかに係る装置を含んでよい。
【００８２】
例３６は、上記シーケンシャルデータは、６４バイトのデータである、例３５の装置を含んでよい。
【００８３】
複数の特定の実施形態が図示され、本明細書に説明目的のため記載されたが、本願は、本明細書に記載された当該実施形態のあらゆる応用または変形を包含する意図である。従って、本明細書に記載の複数の実施形態は、特許請求の範囲によってのみ限定されることが明白な意図である。
【００８４】
本開示が、「１つ」若しくは「１つの第１の」要素またはそれらの均等物を挙げる場合、そのような開示は、１または複数のそのような要素を含み、２または２より多いそのような要素を必要としたり、排除したりしない。さらに、識別された要素に関する序数標識（例えば、第１の、第２の、または第３の）が使用され、それら要素間を区別するが、別途明示されない限り、そのような要素の必要数若しくは限定数を示す、または示唆するものではなく、またそのような要素の特定の位置若しくは順序を示すものでもない。
【図１】
0006388654.tif 000002
【図２】
0006388654.tif 000003
【図３】
0006388654.tif 000004
【図４】
0006388654.tif 000005
【図５】
0006388654.tif 000006