JP6679570B2 - データ処理装置 - Google Patents
データ処理装置 Download PDFInfo
- 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
Links
- 238000012545 processing Methods 0.000 title claims description 51
- 230000015654 memory Effects 0.000 claims description 218
- 239000000872 buffer Substances 0.000 claims description 8
- 230000000644 propagated effect Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 20
- 238000000034 method Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000012546 transfer Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- LMDZBCPBFSXMTL-UHFFFAOYSA-N 1-ethyl-3-(3-dimethylaminopropyl)carbodiimide Chemical compound CCN=C=NCCCN(C)C LMDZBCPBFSXMTL-UHFFFAOYSA-N 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000007430 reference method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
Description
一般に、計算アクセラレータは、単独でOS(operating system)や複雑なプログラムを走行させることが困難であるため、実用的システムの構築には汎用CPUとの連携が欠かせない。計算アクセラレータを汎用CPUに接続する際には、キャッシュメモリとの連携が重要であり、キャッシュラインをそのまま利用できるショートベクトル(SIMD)方式が一般に採用される。より大規模なアクセラレータが必要な場合、同様にSIMDを基本とする演算機構を二次キャッシュ(L2キャッシュ)に接続する。さらにロングベクトル方式を採用して大規模化する場合、主記憶(メインメモリ)に接続したり、主記憶とDMA(direct memory access)転送が可能な別のメモリ空間に接続したりする。
図3は、本発明が実現する機能要件1を説明する図である。機能要件1は、複数ブロックから、連続する複数ワードを毎サイクル、同時読み出し可能であることである。図3の(a)において、連続領域301が1つのブロックに対応する。アドレス302は、毎サイクル、4ワード分増加する。連続領域301から、毎サイクル、4ワードのデータ303、304、305、306を同時に読み出す。
各データ幅:4ワード
なお、図3の(b)に示した各ブロック311、312、313が、後述する図8に示す各wayに相当するものである。
図4は、本発明が実現する機能要件2を説明する図である。機能要件2は、複数ブロックから、連続する単一ワードを毎サイクル、同時読み出し可能であることである。図4の(a)において、連続領域401が1つのブロックに対応する。アドレス402は、毎サイクル、1ワード分増加する。連続領域401から、毎サイクル、1ワードのデータ403を読み出す。
各データ幅:1ワード
なお、図4の(b)に示した各ブロック411、412、413が、後述する図8に示す各wayに相当するものである。
図5は、本発明が実現する機能要件3を説明する図である。機能要件3は、全ブロックのパイプライン探索及び該当行の読み出し・伝搬可能であることである。図5の(a)において、連続領域501が1つのブロックに対応する。連続領域501は複数のキャッシュラインを包含する構成であり、キャッシュラインの先頭に該当するアドレス502が供給される。機能要件1及び機能要件2とは異なり、機能要件3は、アドレスの一部によりキャッシュラインを特定した後、キャッシュライン毎に設けられた個別tag情報503とアドレスの上位ビットとを比較し、内容が一致したキャッシュラインのみデータ504、505、506、507を読み出す。
各データ幅:4ワード(パイプライン動作)
なお、図5の(b)に示した各ブロック511、512が、後述する図8に示す各wayに相当するものである。
上述したグラフ処理のためには、機能要件1に加えて、主記憶参照時の遅延時間隠蔽のために各ブロックを利用できる必要がある。この遅延時間吸収機構が機能要件4となる。機能要件4については、後述の実施形態4で説明する。
本発明は、アクセラレータ(データ処理装置)に適するメモリ構成である機能要件1及び2と、キャッシュに適するメモリ構成である機能要件3を1つのハードウェア上で効率良く一度に実現することである。
図6、図7及び図8を用いて、本発明の基本構成について説明する。
図9〜図12を用いて、SIMD計算時における、データ処理装置800の動作を説明する。
図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に供給される。
図9〜図12を用いて、キャッシュ機能時における、データ処理装置800の動作を説明する。汎用CPUによりデータ処理装置800の最上部のインタフェースに格納された、データ処理装置800内の各基本ユニット600のメモリブロック606の参照を要求する参照要求から、アドレスを連続的に取り出し、way3−0のアドレスバスを使用してtag比較を行う。参照要求はステージ1から順にステージ2、ステージ3と、各ステージに設けられたバッファを介して、下方へ伝搬され、全ステージをパイプライン的に参照する。Tagが一致したwayからは、4ワード分のデータを読み出して下方へ伝搬する。
図9〜図12を用いて、キャッシュ機能時における、データ処理装置800の動作を説明する。ステージ1にて、Way0に接続された主記憶(メインメモリ)から隣接頂点データがway0の基本ユニット600−01のメモリブロック606に供給されている。なお、前述のように、必ずしも命令写像をシフトする必要がないグラフ計算の場合、ステージ1に主記憶から隣接頂点データを供給しつつ、ステージ1にて同時に隣接頂点データを読み出してもよい。
図13は、本発明の実施形態5に係るデータ処理装置を構成する基本ユニット600Aの回路図である。本実施形態5に係るデータ処理装置を構成する基本ユニット600Aと上述の実施形態1〜4に係るデータ処理装置を構成する基本ユニット600とで異なる点は、基本ユニット600Aにおいて、基本ユニット600のメモリバス及びスイッチ群608と、FIFO609とに代えて、メモリ書き込み放送用バス611を備えた点である。
601 レジスタ
603 演算器
604 アドレス生成器
606 メモリブロック
607 マルチプレクサ
609 FIFO
610 データバス
611 メモリ書き込み放送用バス
800 データ処理装置
Claims (7)
- 複数ポートを有するメモリブロックと、上記メモリブロックの各ポートのアドレス生成器と、演算器と、を含む基本ユニットを水平方向にウェイ数分配置したステージを垂直方向に複数配置した二次元構造を備え、
各上記基本ユニットは、
同一ステージに属する上記メモリブロックからウェイ数分×複数ワードを同時に取り出すデータバスと、
複数ワードを同一ステージの上記演算器に同時に供給する演算バス及びスイッチ群と、
上記演算器の出力を同一ステージに属する上記メモリブロックに書き込むメモリバス及びスイッチ群と、をさらに含み、
同一ウェイに属する上記メモリブロックへの書き込みバスと読み出しバスは、同一バスを経由して外部メモリに接続され、
外部メモリから上記メモリブロックへの書き込みと上記メモリブロックから上記演算器への読み出しとを同時に行い、または、上記演算器から上記メモリブロックへの書き込みと上記メモリブロックから上記外部メモリへの読み出しとを同時に行い、
上記アドレス生成器により上記メモリブロックを読み出す際には、複数ワードを同時に読み出し、上記基本ユニットの終端レジスタに同時に値を書き込むことを特徴とするデータ処理装置。 - 各上記基本ユニットは、
各上記メモリブロックから取り出した複数ワードを1ワードに集約するマルチプレクサと、
集約した1ワードを同一ステージのFIFOに同時に供給するメモリバス及びスイッチ群と、
上記アドレス生成器により上記メモリブロックを読み出す際には、単一ワードを読み出し、同一ステージの上記基本ユニットに含まれるFIFO及び当該基本ユニットの終端レジスタに同時に値を書き込むデータパスと、をさらに含み、
上記FIFOに格納されたデータの位置を上記アドレス生成器により特定し、上記FIFOを読み出し、上記基本ユニットの終端レジスタに格納することを特徴とする請求項1に記載のデータ処理装置。 - 外部からのメモリ参照要求をキューイングするバッファと、
アドレス情報を各ステージの全ての上記メモリブロックに供給するデータバスと、をさらに備え、
上記メモリブロックからの読み出しの際には、各ウェイにおいてアドレスの一部フィールドにより特定された個別tagとの一致比較を行い、一致したtagの上記メモリブロックから複数ワードを読み出し、上記基本ユニットの終端レジスタに同時に値を書き込み、
上記メモリブロックへの書き込みの際には、各ウェイにおいてアドレスの一部フィールドにより特定された個別tagとの一致比較を行い、一致したtagの上記メモリブロックへの書き込みを行うことを特徴とする請求項1に記載のデータ処理装置。 - 各上記基本ユニットは、
上記アドレス生成器から各ウェイに接続された外部メモリにアドレス情報を送出するアドレスバスをさらに含み、
上記外部メモリからのデータが到着するまでの間、同一ステージに属する上記基本ユニットの上記アドレス生成器を用いて上記演算器の出力及び前ステージの上記終端レジスタに格納されたデータを当該基本ユニット内の上記メモリブロックに格納するとともに、
上記外部メモリからのデータ到着と同時に、上記アドレス生成器を用いて当該基本ユニット内の上記メモリブロックから読み出しを行い、
上記外部メモリからの到着データと上記演算器の出力とを、上記基本ユニットの終端レジスタに同時に書き込むことを特徴とする請求項1に記載のデータ処理装置。 - 上記基本ユニットの終端レジスタから次ステージに属する上記演算器または上記メモリブロックにデータを伝搬させることを特徴とする請求項1、2、4のいずれか1項に記載のデータ処理装置。
- 外部からのメモリ参照要求をキューイングする上記バッファがステージ毎に設けられており、
各ステージに対して、アドレス情報を全ての上記メモリブロックに供給するデータバスをさらに備え、
複数のステージが、パイプライン動作することにより、外部からのメモリ参照要求を連続的に受理することを特徴とする請求項3に記載のデータ処理装置。 - 各上記基本ユニットは、
各上記メモリブロックに同時に書き込むデータを放送するメモリ書き込み放送用バスと、
各上記メモリブロックから取り出した複数ワードを1ワードに集約するマルチプレクサと、
上記アドレス生成器により上記メモリブロックを読み出す際には、複数ワードを読み出し、上記マルチプレクサを経由して同一ステージの上記基本ユニットに含まれる当該基本ユニットの終端レジスタに値を書き込むデータパスと、をさらに含むことを特徴とする請求項1に記載のデータ処理装置。
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)
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)
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 |
-
2016
- 2016-04-06 US US15/564,039 patent/US10275392B2/en active Active
- 2016-04-06 CN CN201680019602.9A patent/CN107408076B/zh active Active
- 2016-04-06 JP JP2017511034A patent/JP6679570B2/ja active Active
- 2016-04-06 WO PCT/JP2016/061302 patent/WO2016163421A1/ja active Application Filing
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 |