JP6679570B2 - データ処理装置 - Google Patents

データ処理装置 Download PDF

Info

Publication number
JP6679570B2
JP6679570B2 JP2017511034A JP2017511034A JP6679570B2 JP 6679570 B2 JP6679570 B2 JP 6679570B2 JP 2017511034 A JP2017511034 A JP 2017511034A JP 2017511034 A JP2017511034 A JP 2017511034A JP 6679570 B2 JP6679570 B2 JP 6679570B2
Authority
JP
Japan
Prior art keywords
memory
memory block
data
basic unit
stage
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
JP2017511034A
Other languages
English (en)
Other versions
JPWO2016163421A1 (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.)
Nara Institute of Science and Technology NUC
Original Assignee
Nara Institute of Science and Technology NUC
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 Nara Institute of Science and Technology NUC filed Critical Nara Institute of Science and Technology NUC
Publication of JPWO2016163421A1 publication Critical patent/JPWO2016163421A1/ja
Application granted granted Critical
Publication of JP6679570B2 publication Critical patent/JP6679570B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • 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
    • 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
    • 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, look ahead

Description

本発明は、コンピュータシステムに用いられるデータ処理装置に関する。
従来、コンピュータシステムにおけるアクセラレータの構成方法として、外部キャッシュ共有型のSIMD(single instruction stream, multiple data stream)方式及び主記憶共有型の外部アクセラレータ方式が知られている。
汎用CPU(central processing unit)がアクセラレータにデータを渡す場合、外部キャッシュ共有型であれば内蔵キャッシュメモリを外部キャッシュに書き戻す(フラッシュする)だけでよいものの、外部キャッシュメモリのデータ幅は一般にSIMD程度の幅であるため、SIMD幅を超える多くのデータを一度に参照することができない。また、主記憶共有型であれば内蔵キャッシュおよび外部キャッシュの両方を主記憶に書き戻す(フラッシュする)必要があり、キャッシュフラッシュ時間が大きなオーバヘッドとなる。
このため、コアから見ればキャッシュメモリとなり、アクセラレータから見ればそれらのローカルメモリとなる、バッファメモリを配置する構成が提案されている(非特許文献1(Fig.1b)を参照)。
この構成によれば、キャッシュメモリとアクセラレータのローカルメモリとが共有化されているので、上述したようなオーバヘッドが緩和される。
Carlos Flores Fajardo, Zhen Fang, Ravi Iyer, German Fabila Garcia, Seung Eun Lee, Li Zhao, Buffer-Integrated-Cache: A Cost-Effective SRAM Architecture for Handheld and Embedded Platforms, Design Automation Conference (DAC), 2011 48th ACM/EDAC/IEEE Date of Conference: 5-9 June 2011 Page(s):966 - 971
しかし、非特許文献1の構成であっても、キャッシュメモリはアクセラレータの外部に配置されているので、アクセラレータとキャッシュメモリとの間のデータ転送が依然として必要であり、それゆえ、オーバヘッドの緩和にも限界があった。
上記の課題に鑑み、本発明は、キャッシュメモリをアクセラレータの内部に配置することによりアクセラレータとキャッシュメモリとの間のデータ転送を不要とし、それにより、オーバヘッドの緩和を大きくすることができるデータ処理装置を提供することを目的とする。
上記の課題を解決するために、本発明に係るデータ処理装置は、複数ポートを有するメモリブロックと、上記メモリブロックの各ポートのアドレス生成器と、演算器と、を含む基本ユニットを水平方向にウェイ数分配置したステージを垂直方向に複数配置した二次元構造を備え、各上記基本ユニットは、同一ステージに属する上記メモリブロックからウェイ数分×複数ワードを同時に取り出すデータバスと、複数ワードを同一ステージの上記演算器に同時に供給する演算バス及びスイッチ群と、上記演算器の出力を同一ステージに属する上記メモリブロックに書き込むメモリバス及びスイッチ群と、をさらに含み、同一ウェイに属する上記メモリブロックへの書き込みバスと読み出しバスは、同一バスを経由して外部メモリに接続され、外部メモリから上記メモリブロックへの書き込みと上記メモリブロックから上記演算器への読み出しとを同時に行い、または、上記演算器から上記メモリブロックへの書き込みと上記メモリブロックから上記外部メモリへの読み出しとを同時に行い、上記アドレス生成器により上記メモリブロックを読み出す際には、複数ワードを同時に読み出し、上記基本ユニット終端のレジスタに同時に値を書き込む。
本発明は、オーバヘッドの緩和を大きくすることができるという効果を奏する。
従来型のコンピュータシステムの構成を示すブロック図である。 本発明に係るコンピュータシステムの構成を示すブロック図である。 (a)、(b)及び(c)は、本発明が実現する機能要件1を説明する図である。 (a)、(b)及び(c)は、本発明が実現する機能要件2を説明する図である。 (a)、(b)及び(c)は、本発明が実現する機能要件3を説明する図である。 本発明に係るデータ処理装置を構成する基本ユニットの回路図である。 図6に示した基本ユニットの機能ブロック図である。 上記データ処理装置の概略構成を示すブロック図である。 上記データ処理装置で用いられるアドレスの構造を示す模式図である。 上記データ処理装置の概略構成を示すブロック図である。 上記データ処理装置の概略構成を示すブロック図である。 上記データ処理装置の概略構成を示すブロック図である。 本発明に係るデータ処理装置を構成する他の基本ユニットの回路図である。
以下、本発明の実施の形態について、詳細に説明する。まず、本発明の基礎となる技術及びその課題などの基本説明を行った後、図面を参照して本発明の好適な実施形態について説明する。
〔基本説明〕
一般に、計算アクセラレータは、単独でOS(operating system)や複雑なプログラムを走行させることが困難であるため、実用的システムの構築には汎用CPUとの連携が欠かせない。計算アクセラレータを汎用CPUに接続する際には、キャッシュメモリとの連携が重要であり、キャッシュラインをそのまま利用できるショートベクトル(SIMD)方式が一般に採用される。より大規模なアクセラレータが必要な場合、同様にSIMDを基本とする演算機構を二次キャッシュ(L2キャッシュ)に接続する。さらにロングベクトル方式を採用して大規模化する場合、主記憶(メインメモリ)に接続したり、主記憶とDMA(direct memory access)転送が可能な別のメモリ空間に接続したりする。
さて、グラフ処理に代表される非定型処理では、均一なデータ幅を確保できないため、SIMDの効果は限定的である。かわりに、データ依存関係が多いことを利用すれば、CGRA(coarse-grained reconfigurable array)の効果が期待できる。ただし、CGRAは、複数の内蔵メモリブロックの各々にアドレス範囲を設定し、各々を連続参照する利用が一般的であり、アドレスによりブロック位置が一意に決まる従来型キャッシュと共存させることは困難である。また、内蔵メモリに収容できない大規模グラフ処理のためには、CGRAと主記憶とのシームレスな接続及び一体的なパイプライン化が重要であるものの、毎サイクル一斉演算を行うCGRAと長大な主記憶レイテンシとの共存も困難である。
このような困難から、グラフ処理の高速化を図るアクセラレータと汎用CPUとは、一般に、主記憶を介して接続する方法しかなく、本明細書の背景技術で述べたとおり、アクセラレータを使用する度に、キャッシュフラッシュなどのオーバヘッドが発生する。
そこで、本発明者らは、ステンシル計算などの高性能計算やグラフ処理などのビッグデータを処理可能な高効率な計算機を実現すべく、鋭意検討を重ねた結果、CGRA内蔵メモリブロックを、(1)SIMDバッファ、(2)ステンシルメモリ、(3)キャッシュ、及び(4)主記憶レイテンシ隠蔽バッファの全てに利用可能とすることにより、これまで到底達し得なかった超高速の処理が得られることを見出し、発明を完成させるに至った。
図1は、従来型のコンピュータシステムの構成を示すブロック図、図2は、本発明に係るコンピュータシステムの構成を示すブロック図である。図1に示すように、従来型のコンピュータシステムの構成であれば、二次キャッシュ(L2キャッシュ)101はCGRA内蔵メモリブロック(アクセラレータ)102の外部に配置されており、CGRA内蔵メモリブロック102の全ての内蔵メモリは、汎用CPUの主記憶103とは別空間である。このため、プログラマは、CGRA内蔵メモリブロック102の全ての内蔵メモリと二次キャッシュ101との間の値の整合性を保つために、キャッシュフラッシュを多用する必要がある。
これに対し、図2に示すように、本発明に係るコンピュータシステムの構成では、二次キャッシュをCGRA内蔵メモリブロック201の内部に配置する。二次キャッシュは、汎用CPUから見れば二次キャッシュであり、CGRA内蔵メモリブロック201から見れば内蔵メモリである。つまり、二次キャッシュは、汎用CPUとCGRA内蔵メモリブロック201との間で共有されることになる。これにより、プログラマは、CGRA内蔵メモリブロック201の内蔵メモリと主記憶202との間の明示的なデータ転送を意識する必要はなくなる。このため、内蔵キャッシュをフラッシュする際、CGRA内蔵メモリブロック201へのフラッシュのみで済むこととなり、主記憶202への書き戻しが無くなる。さらに、多数の、CGRA内蔵メモリブロックに対する同時データ参照が可能となるため、外部キャッシュ共有型従来システムのように、演算能力が外部キャッシュのバス幅で抑えられる制約もなくなる。
このように、本発明は、全面的なキャッシュフラッシュを不要とする、汎用CPUとのデータ共有機能を備える、コンピュータシステムにおけるアクセラレータの構成方法に関するものである。このようなデータ共有機能を備えるため、本発明には、次に述べる機能要件1、機能要件2、機能要件3及び機能要件4の実現が要求される。
(機能要件1)
図3は、本発明が実現する機能要件1を説明する図である。機能要件1は、複数ブロックから、連続する複数ワードを毎サイクル、同時読み出し可能であることである。図3の(a)において、連続領域301が1つのブロックに対応する。アドレス302は、毎サイクル、4ワード分増加する。連続領域301から、毎サイクル、4ワードのデータ303、304、305、306を同時に読み出す。
図3の(b)は、図3の(a)に示した1つのブロックを複数連結し、容量を増加させた構成である。ブロック(連続領域)311、312、313が連結され、アドレス314は、毎サイクル、4ワード分増加し、ブロック311から、毎サイクル、4ワードのデータ315、316、317、318を同時に読み出す。ブロック312からの読み出し、ブロック313からの読み出しも、ブロック311と同様に行われる。
図3の(c)は、図3の(b)に示した複数のブロックから構成される1つのステージを複数連結した構成である。それぞれ複数のブロックが連結された、ステージ321、322、323が連結されている。アドレス324は、毎サイクル、4ワード分増加し、ステージ321の各ブロックから、毎サイクル、4ワードのデータを同時に読み出す。アドレス325、326も同様に、毎サイクル、4ワード分増加し、ステージ322、323の各ブロックから、毎サイクル、4ワードのデータを同時に読み出す。この構成の場合、ステージ数分の異なるアドレスを供給して、ステージ数分の複数ワード、毎サイクル、読み出しが可能である。
図3に示した構成は、SIMDやグラフ処理の並列実行により高性能化を図るのに適している。
なお、SIMDの場合は4ワードが配列の連続4要素に対応しており、読み出しデータは後続のSIMD命令により一斉演算されるのに対し、グラフ処理の場合は4ワードが構造体配列の各メンバに対応しており、読み出しデータの扱いは各ワードによって異なる。すなわち後続命令が条件判断等を伴う複雑な命令となる点がSIMDとは異なる。
機能要件1により、SIMD計算時において、次のデータ供給能力が実現される。
アドレス数:全ステージ数
各データ幅:4ワード
なお、図3の(b)に示した各ブロック311、312、313が、後述する図8に示す各wayに相当するものである。
(機能要件2)
図4は、本発明が実現する機能要件2を説明する図である。機能要件2は、複数ブロックから、連続する単一ワードを毎サイクル、同時読み出し可能であることである。図4の(a)において、連続領域401が1つのブロックに対応する。アドレス402は、毎サイクル、1ワード分増加する。連続領域401から、毎サイクル、1ワードのデータ403を読み出す。
図4の(b)は、図4の(a)に示した1つのブロックを複数配置し、同時に読み出し可能な空間数を増加させた構成である。機能要件1では、連続アドレスから複数ワードを同時に読み出すのに対して、機能要件2では異なる連続アドレスから各々1ワードを同時に読み出す点が異なる。ブロック(連続領域)411、412、413が配置されており、アドレス414が毎サイクル、1ワード分増加し、ブロック411から、毎サイクル、1ワードのデータ417を読み出す。アドレス415が毎サイクル、1ワード分増加し、ブロック412から、毎サイクル、1ワードのデータ418を読み出す。アドレス416が毎サイクル、1ワード分増加し、ブロック413から、毎サイクル、1ワードのデータ419を読み出す。
図4の(c)は、図4の(b)に示した複数のブロックから構成される1つのステージを複数連結した構成である。この構成の場合、ステージ内ブロック数×ステージ数分の異なるアドレスを供給して、全ブロック数分の単一ワード毎サイクル読み出しが可能である。本構成は、次数の高いステンシル計算の並列実行により高性能化を図るのに適している。
それぞれ複数のブロックが配置された、ステージ421、422、423が連結されている。ステージ421には複数のブロックが配置されており、アドレス群424の各アドレスが毎サイクル、1ワード分増加し、各ブロックから、毎サイクル、1ワードのデータを読み出す。ステージ422には複数のブロックが配置されており、アドレス群425の各アドレスが毎サイクル、1ワード分増加し、各ブロックから、毎サイクル、1ワードのデータを読み出す。ステージ423には複数のブロックが配置されており、アドレス群426の各アドレスが毎サイクル、1ワード分増加し、各ブロックから、毎サイクル、1ワードのデータを読み出す。
機能要件2により、ステンシル計算時において、次のデータ供給能力が実現される。
アドレス数:全ブロック数(ステージ数×各ステージに含まれるブロック数)
各データ幅:1ワード
なお、図4の(b)に示した各ブロック411、412、413が、後述する図8に示す各wayに相当するものである。
(機能要件3)
図5は、本発明が実現する機能要件3を説明する図である。機能要件3は、全ブロックのパイプライン探索及び該当行の読み出し・伝搬可能であることである。図5の(a)において、連続領域501が1つのブロックに対応する。連続領域501は複数のキャッシュラインを包含する構成であり、キャッシュラインの先頭に該当するアドレス502が供給される。機能要件1及び機能要件2とは異なり、機能要件3は、アドレスの一部によりキャッシュラインを特定した後、キャッシュライン毎に設けられた個別tag情報503とアドレスの上位ビットとを比較し、内容が一致したキャッシュラインのみデータ504、505、506、507を読み出す。
図5の(b)は、一般的なキャッシュと同様に、キャッシュラインの衝突を抑制するための複数way(ウェイ)構成である。図5の(a)に示した1つのブロックを複数配置し、全てのwayを同時に探索し、個別tagが一致したキャッシュラインのみを読み出す。ブロック511、512が配置されており、アドレス513、514の一部によりwayのキャッシュラインを特定した後、キャッシュライン毎に設けられた個別tag情報515、516とアドレスの上位ビットとを比較し、内容が一致したキャッシュラインのみデータ517、518、519、520を読み出す。
図5の(c)は、図5の(b)に示した複数のブロック(複数のway)から構成される1つのステージを複数連結した構成である。この構成の場合、ステージ内ブロック数×ステージ数分の空間を4wayセットアソシアティブのキャッシュとして使用できる。
それぞれ複数のブロックが配置された、ステージ521、522、523が連結されている。ステージ521では、アドレス524の一部によりwayのキャッシュラインを特定した後、キャッシュライン毎に設けられた個別tag情報527とアドレスの上位ビットとを比較し、内容が一致したキャッシュラインのみデータを読み出す。ステージ522では、アドレス525の一部によりwayのキャッシュラインを特定した後、キャッシュライン毎に設けられた個別tag情報528とアドレスの上位ビットとを比較し、内容が一致したキャッシュラインのみデータを読み出す。ステージ523では、アドレス526の一部によりwayのキャッシュラインを特定した後、キャッシュライン毎に設けられた個別tag情報529とアドレスの上位ビットとを比較し、内容が一致したキャッシュラインのみデータを読み出す。
機能要件3により、キャッシュ利用時において、次のデータ供給能力がある。
アドレス数:1(パイプライン動作)
各データ幅:4ワード(パイプライン動作)
なお、図5の(b)に示した各ブロック511、512が、後述する図8に示す各wayに相当するものである。
(機能要件4)
上述したグラフ処理のためには、機能要件1に加えて、主記憶参照時の遅延時間隠蔽のために各ブロックを利用できる必要がある。この遅延時間吸収機構が機能要件4となる。機能要件4については、後述の実施形態4で説明する。
(機能要件1〜4のまとめ)
本発明は、アクセラレータ(データ処理装置)に適するメモリ構成である機能要件1及び2と、キャッシュに適するメモリ構成である機能要件3を1つのハードウェア上で効率良く一度に実現することである。
性能及び機能を落すことなく、機能要件1、2、3の全てを実現するためには、ステージ位置の管理方法が重要である。機能要件1及び2では、あらかじめ、ソフトウェアが指定したステージに必要なデータを配置し、ステージ内に閉じたメモリ空間に対して読み書きできればよい。
しかし、機能要件3では、アドレスの一部を用いて、メモリブロックの位置を特定し、さらにアドレスの別の一部を用いて、メモリブロック内の相対位置を特定し、当該キャッシュラインが参照アドレスと正しく対応しているかを個別tag比較により検証する必要がある。フルアソシアティブ構成とすれば、任意のステージ位置にキャッシュラインを対応付けることが論理的には可能であるものの、内蔵するメモリの総量は二次キャッシュ程度以上であるため、キャッシュライン数の多さから、従来型フルアソシアティブ方式の採用は現実的ではない。
そこで、機能要件1及び2のために、ソフトウェアがメモリブロック位置を明示的に指定可能とするとともに、機能要件3のために、パイプライン処理による実質的なフルアソシアティブキャッシュを実現可能とする。汎用CPUがデータの前処理を行い、CGRA型アクセラレータにデータを渡す場合、また、CGRA型アクセラレータの処理結果を汎用CPUが引き続き利用する場合に必要となるデータ共有を広範囲のキャッシュフラッシュを必要とすることなく可能とすることにより、処理の高速化が可能となる。
〔本発明の基本構成〕
図6、図7及び図8を用いて、本発明の基本構成について説明する。
図6は、本発明に係るデータ処理装置を構成する基本ユニットの回路図、図7は、図6に示した基本ユニットの機能ブロック図、図8は、本発明に係るデータ処理装置の概略構成を示すブロック図である。
図6及び図7に示すように、本発明に係るデータ処理装置を構成する基本ユニット600は、レジスタ601と、演算バス及びスイッチ群602と、演算器603と、ストアユニット604a及びロードユニット604bを含むアドレス生成器604と、メモリバス及びスイッチ群605と、メモリブロック606と、マルチプレクサ607と、メモリバス及びスイッチ群608と、FIFO(first in, first out)609と、を備えている。なお、演算バス及びスイッチ群602、メモリバス及びスイッチ群605、並びに、メモリバス及びスイッチ群608は、水平方向に隣接する、同一のステージに含まれる基本ユニット600を互いに接続するものである。本明細書では、便宜上、演算バス及びスイッチ群602等の、各基本ユニット600と接続している部分を各基本ユニット600に含まれるものとする。
レジスタ601(終端レジスタ)は、前ステージの基本ユニットから出力されるデータが書き込まれるレジスタである。なお、図6及び図7では、レジスタ601を基本ユニット600の入力側に配置したが、基本ユニット600の出力側に配置しても構わない。要は、レジスタ601は、垂直方向に前後する、異なる2つの基本ユニット(前ステージの基本ユニット及び後ステージの基本ユニット)のうちの、前ステージの基本ユニットの出力側に配置されるレジスタ及び後ステージの基本ユニットの入力側に配置されるレジスタを兼ねるものである。本発明では、図6及び図7に示した通り、レジスタ601を、その入力側に配置したものを基本ユニットと呼ぶ。
演算バス及びスイッチ群602は、メモリブロック606から読み出されるワードを演算器603に供給する。演算器603は、演算バス及びスイッチ群602から供給されるワードを用いて演算する。
アドレス生成器604は、メモリブロック606からの読み出し及びメモリブロック606への書き込みを行うためのアドレスを生成する。メモリバス及びスイッチ群605は、アドレス生成器604により生成されたアドレスに基づき、演算器603の演算結果をメモリブロック606に書き込む。
メモリブロック606は、上述した通り、キャッシュメモリとアクセラレータのローカルメモリとを兼ねるものである。マルチプレクサ607は、メモリブロック606から読み出されたワードを集約する。メモリバス及びスイッチ群608は、マルチプレクサ607により集約されたワードをFIFO609に供給する。FIFO609は、書き込まれた時点が古いものから順に追い出す。
なお、図6に示すように、メモリブロック606及びメインメモリ(図示省略)から読み出されるデータ、並びに、メモリブロック606及びメインメモリへ書き込まれるデータを、転送するデータバス610が配置されている。
図8に示すように、本発明に係るデータ処理装置800においては、図6及び図7に示した基本ユニット600がマトリクス状に配置され、水平方向にway数分配置したステージが、垂直方向に複数配置された二次元構造をなしている。
なお、図8においては、各基本ユニット600が属するway及びステージは、各基本ユニットに付された符号を用いて表されている。例えば、基本ユニット600−01は、その符号「600−01」の「01」のうち、「0」がway0に属することを表わし、「1」がステージ1に属することを表わしている。同様に、基本ユニット600−12であれば、その符号「600−12」の「12」のうち、「1」がway1に属することを表わし、「2」がステージ2に属することを表わしている。
データ処理装置800は、汎用CPUがキャッシュミスした際、データ処理装置800内のキャッシュ(L2キャッシュ)であるメモリブロック606の参照を要求するインタフェースを最上部に備え、さらにメモリブロック606にも存在しない場合にさらに下位の記憶装置(メインメモリ)へ参照を要求するインタフェースを最下部に備える。
基本ユニット600は、上述した通り、Write専用のストアユニット604a及びRead専用のロードユニット604bを含むアドレス生成器604を備えており、ReadとWriteを同時に行うことができる。メモリブロック606では、右から左方向へアドレスが増加する順にワード(例では8バイト)が配置され、連続8ワードにより1キャッシュラインが構成されている。512組のキャッシュラインから構成される場合、容量は32KBとなる。
各ステージは、4つの基本ユニットから構成され、右から順にway0、way1、way2、way3を構成する。各wayに対して主記憶(メインメモリ)が接続されており、異なるwayに対して同時に主記憶間転送が可能である。
メモリブロック606からの読み出し方法は2通りあり、4ワードを同時読み出して、次ステージの基本ユニット600のレジスタ601に格納するか、または、1ワードを読み出して上述のレジスタ601に格納すると同時に同一ステージのFIFO609に書き込むかのいずれかを選択する。前者が機能要件1に対応し、後者が機能要件2に対応する。
以下、上述した機能要件1〜4に対応する、(1)SIMD計算、(2)ステンシル計算、(3)大容量キャッシュ、(4)グラフ処理、の4種類の計算における挙動を説明する。本発明の特徴は、4種類の参照方法それぞれに対して最適化が可能であるとともに、切替えのデータ移動が最小限で済む点にある。
以下、図9〜図12を用いて、データ処理装置800の動作を説明する。図9は、データ処理装置800で用いられるアドレス900の構造を示す模式図である。図9に示すように、アドレス900は、Tag901と、Stageindex902と、Loffs903と、Lbyte904とから構成されている。また、図10〜図12は、図8の拡大図である。
(実施形態1):SIMD計算時
図9〜図12を用いて、SIMD計算時における、データ処理装置800の動作を説明する。
図10において、ステージ1では、way2の基本ユニット600−21に配列B、way1の基本ユニット600−11に配列C、way0の基本ユニット600−01に配列Dが写像される。基本ユニット600−21のロードユニット604b、基本ユニット600−11のロードユニット604b及び基本ユニット600−01のロードユニット604bにより、3つの4倍幅ロード命令が連続実行される。
このようなロード命令の連続実行による、4組のB、C、D要素は、ステージ2では、way3の基本ユニット600−32の演算器603、way2の基本ユニット600−22の演算器603、way1の基本ユニット600−12の演算器603、way0の基本ユニット600−02の演算器603に入力され、演算結果が、way3の基本ユニット600−32のメモリブロック606に格納される。
同時に、次の連続実行に備えて、ステージ2では、way2の基本ユニット600−22のメモリブロック606、way1の基本ユニット600−12のメモリブロック606、way0の基本ユニット600−02のメモリブロック606に主記憶(メインメモリ)からプリフェッチをするとともに、ステージ1では、way3の基本ユニット600−31のメモリブロック606に格納された前回の実行結果を主記憶へ書き戻す。
本実行モデルでは、命令写像を1ステージずつ下方にシフトし、プリフェッチしたデータを次ステージで使用する。メモリブロックの容量制約により連続実行が分断される欠点があるが、実行中に、メモリブロックへの書き込みと読み出しの速度差を調整する必要がない。
一方、図11及び図12を用いて、ステージ4及びステージ5にて、命令写像のシフトが不要な使用方法を示す。ステージ4では、主記憶から、way2の基本ユニット600−24のメモリブロック606、way1の基本ユニット600−14のメモリブロック606、way0の基本ユニット600−04のメモリブロック606に供給しつつ、各メモリブロック606から読み出しを行う。また、ステージ5では、way3の基本ユニット600−35の演算器603、way2の基本ユニット600−25の演算器603、way1の基本ユニット600−15の演算器603、way0の基本ユニット600−05の演算器603の各演算結果を、way3の基本ユニット600−35のメモリブロック606に格納しつつ、このメモリブロック606から主記憶へ書き戻す。
各wayに接続されるデータバス610が全て稼働する理想的状態である。各メモリブロック606への書き込みと読み出しの速度差を調整する必要があるものの、連続実行が分断される欠点がない。
(実施形態2):ステンシル計算時
図9〜図12を用いて、ステンシル計算時における、データ処理装置800の動作を説明する。ステージ1では、way0の基本ユニット600−01のメモリブロック606から読み出した各1ワードデータが、way2の基本ユニット600−21のFIFO609、way1の基本ユニット600−11のFIFO609に送信される。ステージ2では、6ワードのデータがway2の基本ユニット600−22の演算器603、way1の基本ユニット600−12の演算器603に供給される。
同様に、ステージ2では、way0の基本ユニット600−02のメモリブロック606から読み出した各1ワードデータが、way2の基本ユニット600−22のFIFO609、way1の基本ユニット600−12のFIFO609に送信される。ステージ3では、6ワードのデータがway2の基本ユニット600−23の演算器603、way1の基本ユニット600−13の演算器603に供給される。
同様に、ステージ3では、way0の基本ユニット600−03のメモリブロック606から読み出した各1ワードデータが、way2の基本ユニット600−23のFIFO609、way1の基本ユニット600−13のFIFO609に送信される。ステージ4では、6ワードのデータがway2の基本ユニット600−24の演算器603、way1の基本ユニット600−14の演算器603に供給される。
このように、ステージ1、2、3の各way0のメモリブロック606から読み出した各1ワードデータが同一ステージのFIFO609に送信され、ステージ毎に同時に6ワードのデータを次ステージの演算器603に供給する。ステンシル計算の場合、メモリブロックを最大限に再利用するために、前述した命令写像のシフト機能を併用する。
(実施形態3):キャッシュ機能時
図9〜図12を用いて、キャッシュ機能時における、データ処理装置800の動作を説明する。汎用CPUによりデータ処理装置800の最上部のインタフェースに格納された、データ処理装置800内の各基本ユニット600のメモリブロック606の参照を要求する参照要求から、アドレスを連続的に取り出し、way3−0のアドレスバスを使用してtag比較を行う。参照要求はステージ1から順にステージ2、ステージ3と、各ステージに設けられたバッファを介して、下方へ伝搬され、全ステージをパイプライン的に参照する。Tagが一致したwayからは、4ワード分のデータを読み出して下方へ伝搬する。
なお、各ステージにおいては、一般的なセットアソシアティブキャッシュと同様、全てのwayは同時動作する。ヒットした場合、キャッシュライン全体の読み出しが必要であるため、一度にキャッシュライン全体を読み出すだけのバス幅がない場合、複数サイクルを用いて読み出す。本実施形態の場合は2サイクル連続で読み出しを行うため、参照要求の受け付けは2サイクルに1回となる。また、参照要求を受け付けてから当該キャッシュにヒットした場合のレイテンシは、ステージ数分となる。
なお、L1キャッシュはL2キャッシュ(メモリブロック606)に対してinclusiveなので、L1キャッシュのフラッシュ動作は、必ずL2キャッシュにヒットする。このため、L1キャッシュを全フラッシュに要する時間は一定である。
(実施形態4):グラフ計算時
図9〜図12を用いて、キャッシュ機能時における、データ処理装置800の動作を説明する。ステージ1にて、Way0に接続された主記憶(メインメモリ)から隣接頂点データがway0の基本ユニット600−01のメモリブロック606に供給されている。なお、前述のように、必ずしも命令写像をシフトする必要がないグラフ計算の場合、ステージ1に主記憶から隣接頂点データを供給しつつ、ステージ1にて同時に隣接頂点データを読み出してもよい。
ステージ2において条件判断及び主記憶直接参照要求を行う。ステージ1からステージ2を経由してステージ3にデータを伝搬させる場合、主記憶直接参照要求のレイテンシに合わせた遅延挿入が必要である。このために、ステージ2にて、way3の基本ユニット600−32のメモリブロック606、way2の基本ユニット600−22のメモリブロック606、をFIFOとして使用し、レイテンシを吸収している。ステージ1からway3の基本ユニット600−32、way2の基本ユニット600−22に供給されるデータと、主記憶からway1の基本ユニット600−12に読み込まれたデータの出力タイミングを揃えて、ステージ3に供給している。
また、ステージ3からは、さらに主記憶へトランザクションを発行している。
本実施形態では、隣接頂点データの読み出しにway0、主記憶直接参照要求にway1、トランザクション発行にway2、メモリブロックへの書き戻しにway3のバスを各々使用しており、主記憶参照のトラフィックが互いに干渉しないようスケジューリングできている。
(実施形態5)
図13は、本発明の実施形態5に係るデータ処理装置を構成する基本ユニット600Aの回路図である。本実施形態5に係るデータ処理装置を構成する基本ユニット600Aと上述の実施形態1〜4に係るデータ処理装置を構成する基本ユニット600とで異なる点は、基本ユニット600Aにおいて、基本ユニット600のメモリバス及びスイッチ群608と、FIFO609とに代えて、メモリ書き込み放送用バス611を備えた点である。
基本ユニット600においては、メモリバス及びスイッチ群608が、マルチプレクサ607により集約されたワードを自ユニットおよび水平方向に隣接する他ユニットのFIFO609に供給し、各ユニットのFIFO609が、書き込まれた時点が古いものから順に追い出す構成であった。
基本ユニット600においては、マルチプレクサ607により集約されたワードは自ユニットおよび水平方向に隣接する他ユニットのFIFO609に書きためられ、必要なデータが揃った時点で次ステージに一斉供給される。このことは、次ステージへのデータ供給の遅延を招くことになる。また、FIFO609の初期化は次ステージへのデータ供給のオーバヘッドであり、上述と同様、データ供給の遅延を招くことにつながる。
これに対し、基本ユニット600Aにおいては、FIFO609、及び、FIFO609に集約されたワードを供給するメモリバス及びスイッチ群608を不要とし、その代わりに、メモリ書き込み放送用バス611を設け、メモリ書き込み放送用バス611を用いて、水平方向に隣接する複数ユニットのメモリブロック606へ同一内容を書き込む。これにより、水平方向に隣接する複数ユニットは、FIFOが充填されるのを待つことなく、各メモリブロックから直ちにデータを読み出し、次ステージへのデータ供給を行うことができる。
例えば、上述の実施形態2における基本ユニット600においては、ステージ1では、way0の基本ユニット600−01のメモリブロック606から読み出した各1ワードデータが、way2の基本ユニット600−21のFIFO609、way1の基本ユニット600−11のFIFO609に送信される。各FIFO609への送信は、メモリブロック606から1ワードごと読み出されることにより、実行される。そして、FIFO609に6ワードのデータが揃うと、6ワードのデータが次ステージに供給される。
これに対し、基本ユニット600Aにおいては、基本ユニット600とは異なり、メモリ書き込み放送用バス611により、way0の基本ユニット600−01、way1の基本ユニット600−11、way2の基本ユニット600−21の全てのメモリブロック606に対して同一内容を書き込み、各々のメモリブロックから各2ワードのデータが同時に読み出され、合計6ワードのデータが次ステージのレジスタ601に送信されることになる。
ステージ2、ステージ3においても同様である。
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
なお、本発明は、以下のようにも表現することができる。すなわち、本発明に係るデータ処理装置は、複数ポートを有するメモリブロックと、上記メモリブロックの各ポートのアドレス生成器と、演算器と、を含む基本ユニットを水平方向にウェイ数分配置したステージを垂直方向に複数配置した二次元構造を備え、各上記基本ユニットは、同一ステージに属する上記メモリブロックからウェイ数分×複数ワードを同時に取り出すデータバスと、複数ワードを同一ステージの上記演算器に同時に供給する演算バス及びスイッチ群と、上記演算器の出力を同一ステージに属する上記メモリブロックに書き込むメモリバス及びスイッチ群と、をさらに含み、同一ウェイに属する上記メモリブロックへの書き込みバスと読み出しバスは、同一バスを経由して外部メモリに接続され、外部メモリから上記メモリブロックへの書き込みと上記メモリブロックから上記演算器への読み出しとを同時に行い、または、上記演算器から上記メモリブロックへの書き込みと上記メモリブロックから上記外部メモリへの読み出しとを同時に行い、上記アドレス生成器により上記メモリブロックを読み出す際には、複数ワードを同時に読み出し、上記基本ユニット終端のレジスタに同時に値を書き込む。
各上記基本ユニットは、各上記メモリブロックから取り出した複数ワードを1ワードに集約するマルチプレクサと、集約した1ワードを同一ステージのFIFOに同時に供給するメモリバス及びスイッチ群と、上記アドレス生成器により上記メモリブロックを読み出す際には、単一ワードを読み出し、同一ステージの上記基本ユニットに含まれるFIFO及び当該基本ユニット終端のレジスタに同時に値を書き込むデータパスと、をさらに含み、上記FIFOに格納されたデータの位置を上記アドレス生成器により特定し、上記FIFOを読み出し、上記基本ユニット終端のレジスタに格納することが好ましい。
外部からのメモリ参照要求をキューイングするバッファと、アドレス情報を各ステージの全ての上記メモリブロックに供給するデータバスと、をさらに備え、上記メモリブロックからの読み出しの際には、各ウェイにおいてアドレスの一部フィールドにより特定された個別tagとの一致比較を行い、一致したtagの上記メモリブロックから複数ワードを読み出し、上記基本ユニット終端のレジスタに同時に値を書き込み、上記メモリブロックへの書き込みの際には、各ウェイにおいてアドレスの一部フィールドにより特定された個別tagとの一致比較を行い、一致したtagの上記メモリブロックへの書き込みを行うことが好ましい。
各上記基本ユニットは、上記アドレス生成器から各ウェイに接続された外部メモリにアドレス情報を送出するアドレスバスをさらに含み、上記外部メモリからのデータが到着するまでの間、同一ステージに属する上記基本ユニットの上記アドレス生成器を用いて上記演算器の出力及び前ステージの終端レジスタを当該基本ユニット内の上記メモリブロックに格納するとともに、上記外部メモリからのデータ到着と同時に、上記アドレス生成器を用いて当該基本ユニット内の上記メモリブロックから読み出しを行い、上記外部メモリからの到着データと上記演算器の出力とを、上記基本ユニット終端のレジスタに同時に書き込むことが好ましい。
上記基本ユニット終端のレジスタから次ステージに属する上記演算器または上記メモリブロックにデータを伝搬させることが好ましい。
外部からのメモリ参照要求をキューイングする上記バッファがステージ毎に設けられており、各ステージに対して、アドレス情報を全ての上記メモリブロックに供給するデータバスをさらに備え、複数のステージが、パイプライン動作することにより、外部からのメモリ参照要求を連続的に受理することが好ましい。
上記構成によれば、汎用CPUがデータの前処理を行い、データ処理装置にデータを渡す場合及び、データ処理装置の処理結果を汎用CPUが引き続き利用する場合に必要となるデータ共有を広範囲のキャッシュフラッシュを必要とすることなく可能とすることにより、処理の高速化が可能となる。
各上記基本ユニットは、各上記メモリブロックに同時に書き込むデータを放送するメモリ書き込み放送用バスと、各上記メモリブロックから取り出した複数ワードを1ワードに集約するマルチプレクサと、上記アドレス生成器により上記メモリブロックを読み出す際には、複数ワードを読み出し、上記マルチプレクサを経由して同一ステージの上記基本ユニットに含まれる当該基本ユニットの終端レジスタに値を書き込むデータパスと、をさらに含むことが好ましい。
本発明は、コンピュータシステムにおけるアクセラレータに利用することができる。
600、600A 基本ユニット
601 レジスタ
603 演算器
604 アドレス生成器
606 メモリブロック
607 マルチプレクサ
609 FIFO
610 データバス
611 メモリ書き込み放送用バス
800 データ処理装置

Claims (7)

  1. 複数ポートを有するメモリブロックと、上記メモリブロックの各ポートのアドレス生成器と、演算器と、を含む基本ユニットを水平方向にウェイ数分配置したステージを垂直方向に複数配置した二次元構造を備え、
    各上記基本ユニットは、
    同一ステージに属する上記メモリブロックからウェイ数分×複数ワードを同時に取り出すデータバスと、
    複数ワードを同一ステージの上記演算器に同時に供給する演算バス及びスイッチ群と、
    上記演算器の出力を同一ステージに属する上記メモリブロックに書き込むメモリバス及びスイッチ群と、をさらに含み、
    同一ウェイに属する上記メモリブロックへの書き込みバスと読み出しバスは、同一バスを経由して外部メモリに接続され、
    外部メモリから上記メモリブロックへの書き込みと上記メモリブロックから上記演算器への読み出しとを同時に行い、または、上記演算器から上記メモリブロックへの書き込みと上記メモリブロックから上記外部メモリへの読み出しとを同時に行い、
    上記アドレス生成器により上記メモリブロックを読み出す際には、複数ワードを同時に読み出し、上記基本ユニットの終端レジスタに同時に値を書き込むことを特徴とするデータ処理装置。
  2. 各上記基本ユニットは、
    各上記メモリブロックから取り出した複数ワードを1ワードに集約するマルチプレクサと、
    集約した1ワードを同一ステージのFIFOに同時に供給するメモリバス及びスイッチ群と、
    上記アドレス生成器により上記メモリブロックを読み出す際には、単一ワードを読み出し、同一ステージの上記基本ユニットに含まれるFIFO及び当該基本ユニットの終端レジスタに同時に値を書き込むデータパスと、をさらに含み、
    上記FIFOに格納されたデータの位置を上記アドレス生成器により特定し、上記FIFOを読み出し、上記基本ユニットの終端レジスタに格納することを特徴とする請求項1に記載のデータ処理装置。
  3. 外部からのメモリ参照要求をキューイングするバッファと、
    アドレス情報を各ステージの全ての上記メモリブロックに供給するデータバスと、をさらに備え、
    上記メモリブロックからの読み出しの際には、各ウェイにおいてアドレスの一部フィールドにより特定された個別tagとの一致比較を行い、一致したtagの上記メモリブロックから複数ワードを読み出し、上記基本ユニットの終端レジスタに同時に値を書き込み、
    上記メモリブロックへの書き込みの際には、各ウェイにおいてアドレスの一部フィールドにより特定された個別tagとの一致比較を行い、一致したtagの上記メモリブロックへの書き込みを行うことを特徴とする請求項1に記載のデータ処理装置。
  4. 各上記基本ユニットは、
    上記アドレス生成器から各ウェイに接続された外部メモリにアドレス情報を送出するアドレスバスをさらに含み、
    上記外部メモリからのデータが到着するまでの間、同一ステージに属する上記基本ユニットの上記アドレス生成器を用いて上記演算器の出力及び前ステージの上記終端レジスタに格納されたデータを当該基本ユニット内の上記メモリブロックに格納するとともに、
    上記外部メモリからのデータ到着と同時に、上記アドレス生成器を用いて当該基本ユニット内の上記メモリブロックから読み出しを行い、
    上記外部メモリからの到着データと上記演算器の出力とを、上記基本ユニットの終端レジスタに同時に書き込むことを特徴とする請求項1に記載のデータ処理装置。
  5. 上記基本ユニットの終端レジスタから次ステージに属する上記演算器または上記メモリブロックにデータを伝搬させることを特徴とする請求項1、2、4のいずれか1項に記載のデータ処理装置。
  6. 外部からのメモリ参照要求をキューイングする上記バッファがステージ毎に設けられており、
    各ステージに対して、アドレス情報を全ての上記メモリブロックに供給するデータバスをさらに備え、
    複数のステージが、パイプライン動作することにより、外部からのメモリ参照要求を連続的に受理することを特徴とする請求項3に記載のデータ処理装置。
  7. 各上記基本ユニットは、
    各上記メモリブロックに同時に書き込むデータを放送するメモリ書き込み放送用バスと、
    各上記メモリブロックから取り出した複数ワードを1ワードに集約するマルチプレクサと、
    上記アドレス生成器により上記メモリブロックを読み出す際には、複数ワードを読み出し、上記マルチプレクサを経由して同一ステージの上記基本ユニットに含まれる当該基本ユニットの終端レジスタに値を書き込むデータパスと、をさらに含むことを特徴とする請求項1に記載のデータ処理装置。
JP2017511034A 2015-04-08 2016-04-06 データ処理装置 Active JP6679570B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2015079552 2015-04-08
JP2015079552 2015-04-08
PCT/JP2016/061302 WO2016163421A1 (ja) 2015-04-08 2016-04-06 データ処理装置

Publications (2)

Publication Number Publication Date
JPWO2016163421A1 JPWO2016163421A1 (ja) 2018-02-08
JP6679570B2 true JP6679570B2 (ja) 2020-04-15

Family

ID=57073109

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017511034A Active JP6679570B2 (ja) 2015-04-08 2016-04-06 データ処理装置

Country Status (4)

Country Link
US (1) US10275392B2 (ja)
JP (1) JP6679570B2 (ja)
CN (1) CN107408076B (ja)
WO (1) WO2016163421A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10275392B2 (en) * 2015-04-08 2019-04-30 National University Corporation NARA Institute of Science and Technology Data processing device
WO2018207883A1 (ja) * 2017-05-12 2018-11-15 国立大学法人 奈良先端科学技術大学院大学 データ処理装置
US11601531B2 (en) * 2018-12-03 2023-03-07 Intel Corporation Sketch table for traffic profiling and measurement
US20220067536A1 (en) 2020-08-28 2022-03-03 Deep Vision Inc. Processor system and method for increasing data-transfer bandwidth during execution of a scheduled parallel process

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5179530A (en) * 1989-11-03 1993-01-12 Zoran Corporation Architecture for integrated concurrent vector signal processor
TW377935U (en) * 1994-08-10 1999-12-21 Gen Instrument Corp Dram mapping for a digital video decompression processor
US6173388B1 (en) * 1998-04-09 2001-01-09 Teranex Inc. Directly accessing local memories of array processors for improved real-time corner turning processing
JP4317296B2 (ja) * 1999-09-17 2009-08-19 株式会社ターボデータラボラトリー 並列コンピュータのアーキテクチャおよびこのアーキテクチャを利用した情報処理ユニット
US6728862B1 (en) * 2000-05-22 2004-04-27 Gazelle Technology Corporation Processor array and parallel data processing methods
US6912626B1 (en) * 2000-08-31 2005-06-28 Micron Technology, Inc. Method and apparatus for connecting a massively parallel processor array to a memory array in a bit serial manner
US7379422B2 (en) * 2002-12-20 2008-05-27 Lsi Logic Corporation Flow control enhancement
CN1595379A (zh) * 2003-09-10 2005-03-16 矽创电子股份有限公司 供多个数据处理装置共用的存储器装置及其方法
US7143238B2 (en) * 2003-09-30 2006-11-28 Intel Corporation Mechanism to compress data in a cache
GB2470675B (en) * 2008-06-09 2011-05-11 Gnodal Ltd Method of data delivery across a network
CN101334766B (zh) * 2008-06-30 2011-05-11 东软飞利浦医疗设备系统有限责任公司 一种并行微处理器及其实现方法
CN102103558B (zh) * 2009-12-18 2013-09-18 上海华虹集成电路有限责任公司 一种带有写重传功能的多通道NANDflash控制器
WO2013137459A1 (ja) * 2012-03-16 2013-09-19 国立大学法人奈良先端科学技術大学院大学 データ供給装置及びデータ処理装置
CN104391820B (zh) * 2014-11-25 2017-06-23 清华大学 基于fpga的通用浮点矩阵处理器硬件结构
US10275392B2 (en) * 2015-04-08 2019-04-30 National University Corporation NARA Institute of Science and Technology Data processing device

Also Published As

Publication number Publication date
JPWO2016163421A1 (ja) 2018-02-08
US10275392B2 (en) 2019-04-30
CN107408076B (zh) 2020-12-11
US20180089141A1 (en) 2018-03-29
CN107408076A (zh) 2017-11-28
WO2016163421A1 (ja) 2016-10-13

Similar Documents

Publication Publication Date Title
US20210240634A1 (en) Highly integrated scalable, flexible dsp megamodule architecture
US11113057B2 (en) Streaming engine with cache-like stream data storage and lifetime tracking
US10203958B2 (en) Streaming engine with stream metadata saving for context switching
US6496902B1 (en) Vector and scalar data cache for a vector multiprocessor
CN102375800B (zh) 用于机器视觉算法的多处理器片上系统
EP0734553B1 (en) Split level cache
JP5688823B2 (ja) ディスプレイパイプにおけるストリーミング式翻訳
US10061675B2 (en) Streaming engine with deferred exception reporting
US10078551B2 (en) Streaming engine with error detection, correction and restart
US6813701B1 (en) Method and apparatus for transferring vector data between memory and a register file
JP6679570B2 (ja) データ処理装置
US20200159681A1 (en) Information processor with tightly coupled smart memory unit
US9164690B2 (en) System, method, and computer program product for copying data between memory locations
US9798543B2 (en) Fast mapping table register file allocation algorithm for SIMT processors
US20230367717A1 (en) Streaming engine with early and late address and loop count registers to track architectural state
WO2019223383A1 (zh) 直接内存存取方法、装置、专用计算芯片及异构计算系统
US20090300287A1 (en) Method and apparatus for controlling cache memory
CN111736900A (zh) 一种并行双通道的cache设计方法和装置
Prete RST cache memory design for a highly coupled multiprocessor system
CN107807888B (zh) 一种用于soc架构的数据预取系统及其方法
US11775452B2 (en) Non-volatile memory controller device and non-volatile memory device
US10769746B2 (en) Data alignment and formatting for graphics processing unit
US20090193227A1 (en) Multi-stream on-chip memory

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181212

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200318

R150 Certificate of patent or registration of utility model

Ref document number: 6679570

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