Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP7681348B2 - Pipeline operation in neural networks - Google Patents
[go: Go Back, main page]

JP7681348B2 - Pipeline operation in neural networks - Google Patents

Pipeline operation in neural networks Download PDF

Info

Publication number
JP7681348B2
JP7681348B2 JP2023563294A JP2023563294A JP7681348B2 JP 7681348 B2 JP7681348 B2 JP 7681348B2 JP 2023563294 A JP2023563294 A JP 2023563294A JP 2023563294 A JP2023563294 A JP 2023563294A JP 7681348 B2 JP7681348 B2 JP 7681348B2
Authority
JP
Japan
Prior art keywords
input
combiner
array
output
value
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
JP2023563294A
Other languages
Japanese (ja)
Other versions
JP2024514659A (en
Inventor
マシューズ,マーク・アシュリー
Original Assignee
ジャイガンター・テクノロジーズ・インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US17/231,711 external-priority patent/US11099854B1/en
Application filed by ジャイガンター・テクノロジーズ・インコーポレイテッド filed Critical ジャイガンター・テクノロジーズ・インコーポレイテッド
Publication of JP2024514659A publication Critical patent/JP2024514659A/en
Application granted granted Critical
Publication of JP7681348B2 publication Critical patent/JP7681348B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3875Pipelining a single stage, e.g. superpipelining
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Algebra (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Description

本出願は、2020年10月15日に出願された同時係属出願第17/071,875号の一部係属出願である。親出願の全開示が、少なくとも引用により組み込まれる。 This application is a continuation-in-part of co-pending application Ser. No. 17/071,875, filed Oct. 15, 2020. The entire disclosure of the parent application is incorporated at least by reference.

本発明は、行列の入力および出力に関係するコンピュータ演算の技術分野に属しており、より具体的には、行列演算における大規模な乗算のために設計された回路に関する。 The present invention is in the technical field of computer operations related to input and output of matrices, and more specifically, to circuits designed for large scale multiplication in matrix operations.

行列演算におけるコンピュータの利用は、当該技術で広く知られており、具体的な例は、画像処理とニューラルネットワークの開発および使用である。ニューラルネットワークは、人工知能の重要部分であり、そのようなものとして、本特許出願の出願時点において、知的財産権の開発において非常に人気のある主題である。一般論として、この種類のコンピュータ演算では、かなりの数の入力値が規則的なパターンで処理され、このパターンは、ほとんどの場合、行列である。入力値の処理は、バイアシングと、個々の入力値が乗算され得る重みを適用することとを含み得る。 The use of computers in matrix operations is widely known in the art, with specific examples being image processing and the development and use of neural networks. Neural networks are an important part of artificial intelligence and as such are a very popular subject in intellectual property development at the time of filing this patent application. Generally speaking, in this type of computer operation, a significant number of input values are processed in a regular pattern, which is most often a matrix. The processing of the input values may include biasing and applying weights by which individual input values may be multiplied.

本発明者は、入来値が複数の重み値のそれぞれと乗算されるニューラルネットワーク技術における高度で計算機負荷の重い演算が、当該技術において明確な利点を提供するために、技術革新に開かれたステップであると信じている。発明者はまた、適用される数学的処理の順序を修正することで得られる利点が存在すると信じている。 The inventors believe that the sophisticated and computationally intensive operations in neural network technology, where an incoming value is multiplied by each of a number of weight values, are a step open to innovation to provide distinct advantages in the art. The inventors also believe that there are advantages to be gained by modifying the order in which the mathematical operations are applied.

本発明者は、発明者がそのような適用で実装される数学的処理の順序および様態における一般的な変更を決定したと信じており、この変更は、そのような演算の時間および費用の極めて著しい低減を生じさせることがあり得る。 The inventors believe that they have determined general changes in the order and manner of mathematical operations implemented in such applications, which changes can result in very significant reductions in the time and cost of such operations.

本発明のある実施形態では、R×Cの目的アレイを生成するために、R×Cのソースアレイの上にM×Nの開口関数を実装する集積回路(IC)が提供され、このICは、独立な入力値の順序付けられたストリームをソースアレイから受け取る入力ポートと、出力値の順序付けられた出力ストリームを目的アレイの中に生成する出力ポートと、入力ポートに結合された大規模乗算器回路であって、各入力値に順に開口関数によって要求されるすべの重みを並列に乗算し、IC上の並列な導電性積経路のセット上に積のストリームを生成し、各積経路が入力の重み値による単一の積に専用である、大規模乗算器回路と、IC上の合成器回路のM×Nのアレイであって、各合成器回路が(m,n)位置における開口関数のサブ関数と関連しており、専用の経路によって、サブ関数と関連する重み値から生成された積を運ぶ積経路のセットのそれぞれに結合されている、合成器回路のM×Nのアレイと、合成器の間の単一の専用経路と、合成器から専用の経路上の値を受け取り、後の時点において他の下流の合成器への専用の経路上に遅延した値を提供する、IC上の遅延回路と、最終化回路と、カウンタを実行し、合成器と遅延回路と最終化回路とに結合される制御信号を生成する制御回路とを備えている。各ソース間隔において、合成器が、専用の接続から受け取られた値を並列な導電性経路に組み合わせ、さらに、その結果を、その合成器のための初期値、または隣接する上流の合成器からの専用の経路上の値、または遅延回路から受け取られた値に組み合わせ、その組み合わされた結果を、隣接する下流の合成器への専用の経路に結合されたレジスタ、または遅延回路、またはそれら両方にポストし、最後の下流の合成器が、入力のR×Cのアレイの特定の位置における開口関数の出力のために値の完全な合成を生成すると、その合成された値が最終化回路に渡され、最終化回路は、値を処理し、結果を、出力ストリームの1つの値として出力ポートにポストする。 In one embodiment of the invention, an integrated circuit (IC) is provided that implements an M×N aperture function on an R×C source array to generate an R×C destination array, the IC having an input port that receives an ordered stream of independent input values from the source array, an output port that generates an ordered output stream of output values into the destination array, and a large scale multiplier circuit coupled to the input port that multiplies each input value in turn by all weights required by the aperture function in parallel to generate a stream of products on a set of parallel conductive product paths on the IC, each product path being dedicated to a single multiplication by an input weight value. The system includes a multiplier circuit, an M×N array of combiner circuits on the IC, each combiner circuit associated with a subfunction of the aperture function at an (m,n) location and coupled by a dedicated path to each of a set of product paths carrying products generated from weight values associated with the subfunctions, a single dedicated path between the combiners, a delay circuit on the IC that receives values on the dedicated path from the combiners and provides a delayed value on the dedicated path to another downstream combiner at a later time, a finalization circuit, and a control circuit that implements a counter and generates control signals that are coupled to the combiners, the delay circuits, and the finalization circuit. At each source interval, a combiner combines values received from the dedicated connections into parallel conductive paths, and further combines the result with an initial value for that combiner, or a value on a dedicated path from an adjacent upstream combiner, or a value received from a delay circuit, and posts the combined result to a register coupled to a dedicated path to an adjacent downstream combiner, or a delay circuit, or both, and when the last downstream combiner has produced a complete combination of values for the output of the aperture function at a particular location of the input R×C array, the combined value is passed to a finalization circuit, which processes the value and posts the result to an output port as one value in the output stream.

ある実施形態では、開口関数が畳み込みニューラルノードに対するものであり、各ソース間隔において、合成器が、重みの入力との積を加算し、積のその和を初期バイアス、または隣接する上流の合成器からの専用の経路上の値、または遅延回路から受け取られた値に加算し、その総和を出力レジスタにポストする。また、ある実施形態では、開口関数が、M×Nの入力パッチをR×Cの入力アレイの左右のエッジと重ねる開口の位置については切り捨てられた結果を生成し、ソース入力位置がR×Cの入力アレイの最初または最後の列を表す特定のソース間隔に対しては、切り捨てられたパッチの結果が遅延され、合成器によってアクセスされ、完全な内部パッチのフローと統合される。そして、ある実施形態では、開口関数が、M×Nの入力パッチをR×Cの入力アレイの一番上のエッジと重ねるそれらの特定の位置については切り捨てられた結果を生成し、ソース入力位置がR×Cの入力アレイの最初の行を表す特定のソース間隔に対しては、切り捨てられたパッチの結果が遅延され、合成器によってアクセスされ、完全な内部パッチのフローと統合される。 In one embodiment, the aperture function is for a convolutional neural node, and at each source interval, the combiner adds the products of the weights with the inputs, adds the sum of the products to an initial bias, or a value on a dedicated path from an adjacent upstream combiner, or a value received from a delay circuit, and posts the sum to an output register. Also, in one embodiment, the aperture function produces truncated results for aperture positions where the M×N input patch overlaps the left and right edges of the R×C input array, and for certain source intervals where the source input position represents the first or last column of the R×C input array, the truncated patch results are delayed and accessed by the combiner and integrated with the complete interior patch flow. And, in one embodiment, the aperture function produces truncated results for those certain positions where the M×N input patch overlaps the top edge of the R×C input array, and for certain source intervals where the source input position represents the first row of the R×C input array, the truncated patch results are delayed and accessed by the combiner and integrated with the complete interior patch flow.

ある実施形態では、開口関数が、M×Nの入力パッチをR×Cの入力アレイの一番下のエッジと重ねるそれらの特定の位置については切り捨てられた結果を生成し、ソース入力位置がR×Cの入力アレイの最初の行を表す特定のソース間隔に対しては、切り捨てられたパッチの結果が遅延され、完全な内部パッチのフローと統合される。そして、このICのある実施形態では、開口関数の特定の出力が、固定されたまたは可変のステッピングパターンで、出力ストリームから除外される。 In one embodiment, the aperture function produces truncated results for those particular locations where the MxN input patch overlaps the bottom edge of the RxC input array, and for particular source intervals where the source input location represents the first row of the RxC input array, the truncated patch results are delayed and merged with the flow of the full interior patch. And in one embodiment of this IC, certain outputs of the aperture function are excluded from the output stream in a fixed or variable stepping pattern.

本発明の別の態様では、R×Cのソースアレイの上にM×Nの開口関数を実装し、R×Cの目的アレイを生成する方法が提供され、この方法は、独立な入力値の順序付けられたストリームを、ソースアレイから集積回路(IC)の入力ポートに提供するステップ、入力ポートに結合されたIC上の大規模乗算器回路によって、各入力値に順に開口関数によって要求されるすべての重み値を並列に乗算するステップ、大規模乗算器によって、IC上の並列な導電性積経路のセット上に積のストリームを生成するステップであって、各積経路が入力の重み値による単一の積に専用である、ステップ、それぞれが開口関数のサブ関数と関連している、IC上の合成器回路のM×Nのアレイのそれぞれに、積のストリームから各合成器回路への専用の接続によって、サブ関数と関連する重み値から生成されたそれらの積を提供するステップ、カウンタを実行し制御信号を生成する制御回路によって、制御信号を、合成器と複数の遅延回路と最終化回路とに提供するステップ、合成器によって、各ソースサイクルで、専用の接続から積のストリームに受け取られた値を、その合成器のための初期値と、または隣接する上流の合成器への専用の経路上の値に、または複数の遅延回路のうちの1つから受け取られた値にと組み合わせ、その結果を、隣接する下流の合成器への専用の経路に結合されたレジスタ、または複数の遅延回路のうちの1つにポストするステップを含む。最後の下流の合成器が入力のR×Cのアレイでの特定の位置における開口関数の出力のための値の完全な組合せを生成すると、その完全な組合せを最終化回路に提供するステップと、最終化回路によって完全な組合せを処理し、結果を、順序付けられた出力ストリーム内の1つの値として出力ポートにポストするステップと、すべての入力要素が受け取られ、最後の出力値が出力ストリームに生成されるまで、ICの動作を継続するステップとを含む。 In another aspect of the invention, a method is provided for implementing an M×N aperture function on an R×C source array to generate an R×C destination array, the method comprising the steps of: providing an ordered stream of independent input values from the source array to an input port of an integrated circuit (IC); multiplying, in parallel, each input value in turn by all weight values required by the aperture function by a large scale multiplier circuit on the IC coupled to the input port; generating, by the large scale multiplier, a stream of products on a set of parallel conductive product paths on the IC, each product path being dedicated to a single product by an input weight value; and an M×N array of combiner circuits on the IC, each associated with a subfunction of the aperture function. providing the products generated from the sub-functions and associated weight values to each of the combiner circuits through a dedicated connection from the product stream; providing control signals to the combiner, the delay circuits, and the finalization circuit through a control circuit that executes a counter and generates control signals; combining, at each source cycle, the value received in the product stream from the dedicated connection with an initial value for that combiner, or with a value on a dedicated path to an adjacent upstream combiner, or with a value received from one of the delay circuits, and posting the result to a register coupled to a dedicated path to an adjacent downstream combiner, or to one of the delay circuits. When the last downstream combiner generates a complete combination of values for the output of the aperture function at a particular position in the R×C array of inputs, providing the complete combination to the finalization circuit; processing the complete combination by the finalization circuit and posting the result to an output port as one value in an ordered output stream; and continuing operation of the IC until all input elements have been received and the last output value has been generated in the output stream.

この方法のある実施形態では、開口関数が畳み込みニューラルノードに対するものであり、各ソース間隔において、合成器が、重みの入力との積を加算し、積のその和を、初期バイアス、または隣接する上流の合成器からの専用の経路上の値、または遅延回路から受け取られた値に加算し、その総和を出力レジスタにポストする。また、ある実施形態では、開口関数が、M×Nの入力パッチをR×Cの入力アレイの左右のエッジと重ねる開口の位置については切り捨てられた結果を生成し、ソース入力位置がR×Cの入力アレイの最初または最後の列を表す特定のソース間隔に対しては、切り捨てられたパッチの結果が遅延され、合成器によってアクセスされ、完全な内部パッチのフローと統合される。 In one embodiment of the method, the aperture function is for a convolutional neural node, and at each source interval, the combiner adds the products of the weights with the inputs, adds the sum of the products to an initial bias, or a value on a dedicated path from an adjacent upstream combiner, or a value received from a delay circuit, and posts the sum to an output register. Also, in one embodiment, the aperture function produces truncated results for aperture positions that overlap the M×N input patch with the left and right edges of the R×C input array, and for certain source intervals where the source input position represents the first or last column of the R×C input array, the truncated patch results are delayed and accessed by the combiner and integrated with the full internal patch flow.

この方法のある実施形態では、開口関数が、M×Nの入力パッチをR×Cの入力アレイの一番上のエッジと重ねる特定の位置については切り捨てられた結果を生成し、ソース入力位置がR×Cの入力アレイの最初の行を表す特定のソース間隔に対しては、切り捨てられたパッチの結果が遅延され、合成器によってアクセスされ、完全な内部パッチのフローと統合される。ある実施形態では、開口関数が、M×Nの入力パッチをR×Cの入力アレイの一番下のエッジと重ねる特定の位置については切り捨てられた結果を生成し、ソース入力位置がR×Cの入力アレイの最初の行を表す特定のソース間隔に対しては、切り捨てられたパッチの結果が遅延され、完全な内部パッチのフローと統合される。そしてある実施形態では、開口関数の特定の出力が、固定されたまたは可変のステッピングパターンで、出力ストリームから除外される。 In one embodiment of the method, the aperture function produces truncated results for certain locations where the M×N input patch overlaps the top edge of the R×C input array, and for certain source intervals where the source input position represents the first row of the R×C input array, the truncated patch results are delayed, accessed by the compositor, and merged with the full interior patch flow. In one embodiment, the aperture function produces truncated results for certain locations where the M×N input patch overlaps the bottom edge of the R×C input array, and for certain source intervals where the source input position represents the first row of the R×C input array, the truncated patch results are delayed and merged with the full interior patch flow. And in one embodiment, certain outputs of the aperture function are excluded from the output stream with a fixed or variable stepping pattern.

各共通ソースに適用される大規模乗算器が固定され、処理回路に直接に配線されている、実施形態の図解である。1 is an illustration of an embodiment in which the large multipliers applied to each common source are fixed and wired directly to the processing circuitry. 各共通ソースに適用される大規模乗算器が動的であり、マルチプレクサを通して処理回路にルーティングされている、実施形態の図解である。13 is an illustration of an embodiment in which the large multipliers applied to each common source are dynamic and routed through multiplexers to processing circuits. 各大規模乗算器において設定されたビットに対応するシフトされた項が積を形成するように加算されている、単純な実施形態の図解である。13 illustrates a simple embodiment in which shifted terms corresponding to set bits in each large multiplier are summed to form a product. シフトされた項の加算と相互からの減算とがより低い複雑性の等価なソリューションを形成するように混合されている、強化された実施形態の図解である。13 is an illustration of an enhanced embodiment in which additions of shifted terms and subtractions from each other are mixed to form an equivalent solution of lower complexity. ペアごとの演算のみからサブ合成を構築することによってクロック周波数を最大化する、パイプライン化された実施形態の図解である。1 is an illustration of a pipelined embodiment that maximizes clock frequency by building sub-synthesis from pairwise operations only. 倍数が、標準的な算術演算への参照なしで、固定されたセットの場合によって直接的に形成されている、実施形態の図解である。1 is an illustration of an embodiment in which multiples are formed directly by a fixed set of cases, without reference to standard arithmetic operations. 4つごとの演算までからサブ合成を構築することによって回路密度を最大化する、パイプライン化された実施形態の図解である。1 is an illustration of a pipelined embodiment that maximizes circuit density by building sub-compositions out of up to every fourth operation. 入力ストリームを受け取り、入力ストリームを前処理し、結果を独特のデジタルデバイスを通して供給して出力ストリームを生成する、本発明の一実施形態における構造および接続性を図解している図である。FIG. 1 illustrates the structure and connectivity in one embodiment of the present invention that receives an input stream, pre-processes the input stream, and feeds the results through a unique digital device to generate an output stream. ソースチャネル積を生成する構造および接続性を図解している図である。FIG. 1 illustrates the structure and connectivity for generating a source-channel product. 本発明の一実施形態における制御装置および関数の追加的な詳細を図解している図である。FIG. 2 illustrates additional details of the controllers and functions in one embodiment of the present invention. 本発明の一実施形態におけるパイプライン化された動作の一般的な場合の部分的図解である。1 is a partial diagram of a general case of pipelined operation in one embodiment of the present invention. 本発明の一実施形態におけるパイプライン化された動作の一般的な場合の別の部分的図解である。4 is another partial diagram of a general case of pipelined operation in one embodiment of the present invention. 本発明の一実施形態におけるパイプライン化された動作の一般的な場合の別の部分的図解である。4 is another partial diagram of a general case of pipelined operation in one embodiment of the present invention. 本発明の一実施形態における図9Aおよび図9Bの合成器905a、905b、および905cの内部構造を図解している図である。FIG. 9C illustrates the internal structure of combiners 905a, 905b, and 905c of FIGS. 9A and 9B in one embodiment of the present invention. 本発明の一実施形態における図9Aおよび図9Bの合成器902a、902b、および902cの内部構造を図解している図である。FIG. 9C illustrates the internal structure of combiners 902a, 902b, and 902c of FIGS. 9A and 9B in one embodiment of the present invention. 本発明の一実施形態における図9Aの合成器904の内部構造を図解している図である。FIG. 9B illustrates the internal structure of the combiner 904 of FIG. 9A in one embodiment of the present invention. 本発明の一実施形態における図9Aの合成器901の内部構造を図解している図である。FIG. 9B illustrates the internal structure of the combiner 901 of FIG. 9A in one embodiment of the present invention. 本発明の一実施形態における図9Bおよび図9Cの合成器903a、903b、および903cの内部構造を図解している図である。FIG. 9C illustrates the internal structure of combiners 903a, 903b, and 903c of FIGS. 9B and 9C in one embodiment of the present invention. 本発明の一実施形態における図9Aおよび図9Bの合成器907a、907b、および907cの内部構造を図解している図である。FIG. 9C illustrates the internal structure of combiners 907a, 907b, and 907c of FIGS. 9A and 9B in one embodiment of the present invention. 本発明の一実施形態における図9Aの合成器906の内部構造を図解している図である。FIG. 9B illustrates the internal structure of the combiner 906 of FIG. 9A in one embodiment of the present invention. 本発明の一実施形態における図9Cの遅延段908a、908b、908c、908d、908e、および908fの内部構造および動作を説明している図である。9C in one embodiment of the present invention. FIG. 9D illustrates the internal structure and operation of delay stages 908a, 908b, 908c, 908d, 908e, and 908f of FIG. 本発明の一実施形態における図9Cの遅延段909の動作を図解している図である。9D illustrates the operation of delay stage 909 of FIG. 9C in one embodiment of the present invention. 本発明の一実施形態における図9Cの遅延段910aおよび910bの動作を図解している図である。9D illustrates the operation of delay stages 910a and 910b of FIG. 9C in one embodiment of the present invention. 図9Cにおける最終化ステップ911の動作を図解している図である。FIG. 9D illustrates the operation of the finalization step 911 in FIG. 9C. 5×5の畳み込みノードを実装する本発明の一実装形態においてパイプライン化された動作の特定の場合を図解している図である。FIG. 1 illustrates a specific case of pipelined operations in one implementation of the invention implementing a 5×5 convolution node. 本発明の一実施形態における4×4の開口関数のためのICの図解である。1 is an illustration of an IC for a 4×4 aperture function in one embodiment of the present invention.

多様な画像およびデータアルゴリズムが、命題を証明することと結果を算出することとの両方のために、線形代数の行列という形式を広範囲に利用する。本出願では、「アルゴリズム」によって、特にコンピュータによる計算または他の問題解決のための演算において従われるべきプロセスまたは規則のセットが意味される。アルゴリズムは、本出願では、例外なくソフトウェアとして解釈されるべきではない。本出願で説明されているアルゴリズムは、典型的におよび好ましくは、ハードウェアに実装され得る。 A wide variety of image and data algorithms make extensive use of the matrix form of linear algebra, both to prove propositions and to compute results. In this application, by "algorithm" is meant a process or set of rules to be followed, especially in a computational or other problem-solving operation. An algorithm, in this application, should not be construed as software without exception. The algorithms described in this application may typically and preferably be implemented in hardware.

行列演算は、1以上の次元の直交する集まりとして定義され、一般的に、各与えられた次元のすべての反復において同じ数の要素を有するものとして考えられる。例として、M×N行列は、しばしば:

Figure 0007681348000001
のような値のアレイによって示される。 Matrix operations are defined as orthogonal collections of one or more dimensions, and are generally thought of as having the same number of elements in all iterations of each given dimension. As an example, an M×N matrix is often written as:
Figure 0007681348000001
The array is represented by an array of values such as:

概念的には、行列は任意の数の次元を有することができ、行列は、各次元に対する値を示す表のセットとして表され得る。 Conceptually, a matrix can have any number of dimensions, and it can be represented as a set of tables that give the values for each dimension.

M×1または1×Nという形式の行列のサブセットは、ベクトルと称されることがあり、ベクトルは、それら自体の特定の性質および演算が定義されており、2Dおよび3Dのグラフィックシミュレーションにおいて広範に用いられる。 Subsets of matrices of the form Mx1 or 1xN are sometimes called vectors; vectors have their own defined properties and operations and are used extensively in 2D and 3D graphic simulations.

1×1という形式の行列の縮退サブセットは、スカラと称されることがあり、当業者にとってごくなじみのある数を構成する。 Degenerate subsets of matrices of the form 1x1 are sometimes called scalars, and constitute numbers that are very familiar to those skilled in the art.

行列の値が定数であり、行列が適合する次元であるときには、乗算などいくらかの演算が適切に定義される。3×4行列Aは、4×5行列Bと乗算されることができ、多くの場合:
A×B=C

Figure 0007681348000002
のように書かれ得る3×5行列Cを形成する。 Some operations, such as multiplication, are well defined when the matrix values are constants and the matrices are of suitable dimensions. A 3x4 matrix A can be multiplied with a 4x5 matrix B, often as follows:
A x B = C
Figure 0007681348000002
Form a 3×5 matrix C that can be written as:

しかし、演算B×Aは適切に定義されず、その理由は、内側の次元が一致せず(5≠3)、kがBおよびAのインデックスと適合する単一の範囲を有し得ないからである。 However, the operation B × A is not well-defined because the inner dimensions do not match (5 ≠ 3) and k cannot have a single range that is compatible with the indices of B and A.

要素がベクトルまたは他の行列である行列は、テンソルとして知られている(そこから、TensorFlowという名称が導かれている)。テンソルのなじみのある形式としては、RGB画像があり得る。RGB画像の1つの形式は、その各ピクセルが色成分の3×1ベクトルである、RGB値の1080×1920行列としてのHDMIフレームである。ピクセルは、真のベクトルと考えられ、その理由は、赤成分の線形演算が緑または青に影響せず、その逆も真であるからである。 Matrices whose elements are vectors or other matrices are known as tensors (hence the name TensorFlow). A familiar form of a tensor may be an RGB image. One form of an RGB image is an HDMI frame as a 1080x1920 matrix of RGB values, where each pixel is a 3x1 vector of color components. A pixel is considered a true vector, since a linear operation on the red component does not affect the green or blue, and vice versa.

HDMIフレームは、一般的には、5次元の行列とは考えられず、その理由は、画像におけるピクセルの位置の処理が色の処置と関係しないからである。関心対象ではない画像の部分を廃棄することによって画像をトリミングすることは、有効であり極めて意味があるが、色成分をトリミングするための対応する演算は存在しない。同様に、色に対しては、含んでいるアレイの要素に適用されたとしても意味がないであろう容易に理解可能な効果を伴う多くの演算が存在し得る。したがって、HDMIフレームは、明らかに2、3テンソルであって、5Dアレイではない。 An HDMI frame is not generally considered to be a 5-dimensional matrix, because the processing of pixel positions in an image is not related to the processing of color. Cropping an image by discarding parts of the image that are not of interest is valid and quite meaningful, but there is no corresponding operation for cropping color components. Similarly, there may be many operations on color with easily understood effects that would not make sense if applied to the elements of the containing array. Thus, an HDMI frame is clearly a few tensors, not a 5D array.

行列演算として表現され得る多くの画像処理アルゴリズムが知られている。行列演算は、反復的な演算を表現する簡明な方法であり、行列数学の規則は、特定の命題を証明する際に役立つ。 Many image processing algorithms are known that can be expressed as matrix operations. Matrix operations are a concise way of expressing repetitive operations, and the rules of matrix mathematics are useful in proving certain statements.

汎用コンピュータのプロセッサにおける行列ベースのアルゴリズムの実行は、一般的に、ループ機構によって達成され、コンピュータ言語とハードウェアCPUとの両方が、そのようなループを効率的にする特徴を有し得る。しかし、行列定義の数学において、正しい結果を計算するために、特定の方法または計画によって演算が実行されることを要求する固有なものは存在しない。 The execution of matrix-based algorithms in a general-purpose computer processor is typically accomplished by a loop mechanism, and both computer languages and hardware CPUs may have features that make such loops efficient. However, there is nothing inherent in the mathematics of matrix definitions that requires operations to be performed in a particular way or scheme in order to compute a correct result.

画像処理と認識との現代のハイブリッドは、畳み込みニューラルネットワーク(CNN)である。そのようなネットワークを訓練することは長年にわたり極めてチャレンジングであったが、訓練されたネットワークを実際に実行することは、比較的些末なことである。 A modern hybrid of image processing and recognition is the convolutional neural network (CNN). Training such networks has been extremely challenging for many years, but actually running a trained network is relatively trivial.

CNNでは、各畳み込みの出力要素は、独立なカーネルを入力テンソルに対して通過させることによって動作して、出力テンソルの各成分を生成する。典型的には、ニューラルネットワークが画像を処理するのに用いられるときには、ネットワークの第1の層が、画像のRGBピクセルの入力アレイに対して演算し、入力成分のRGBベクトルとは構造的に無関係な出力成分の任意のベクトルを含む、関係するサイズの出力アレイを生成する。出力ベクトルの成分は、一般的に、特徴または活性化として記述され、各カーネルの応答強度(認識の度合い)を表す。CNNにおける以後の層は、先行する層からの出力をそれらの入力として取り込むため、一番最初の層だけがピクセル値に作用し;残りのすべては、特徴に作用してより多くの特徴を生成する。畳み込みの各出力の特徴は、色成分が相互に別個であるのとまったく同じように、どの他の特徴とも無関係であり、別個である。 In a CNN, the output element of each convolution operates by passing an independent kernel on the input tensor to generate each component of the output tensor. Typically, when a neural network is used to process an image, the first layer of the network operates on an input array of RGB pixels of the image and generates an output array of related size that contains an arbitrary vector of output components that are structurally unrelated to the RGB vectors of the input components. The components of the output vector are generally described as features or activations, and represent the response strength (degree of recognition) of each kernel. Subsequent layers in a CNN take the output from the previous layer as their input, so only the very first layer operates on pixel values; all the rest operate on features to generate more features. The features of each output of a convolution are independent and separate from any other features, just as color components are separate from each other.

CNN層の一般的な形式は、3×3の畳み込みである。演算においては、一定の重みの3×3カーネルが、要素ごとに、入力テンソル(すなわち、画像)の各特定の位置に適用され、すなわち、重みのそれぞれが、画像における同じ相対位置におけるピクセル成分により乗算され、積が加算されて、その位置に対する出力の単一の成分を生成する。バイアス定数(ゼロでもあり得る)は、最適な重み値に到達するようにモデルを解くことを容易にするための初期値を提供する。 The common form of a CNN layer is a 3x3 convolution. In operation, a 3x3 kernel of constant weights is applied element-wise to each particular location of the input tensor (i.e., the image); that is, each of the weights is multiplied by the pixel component at the same relative location in the image, and the products are summed to produce a single component of the output for that location. A bias constant (which can be zero) provides an initial value to make it easier to solve the model to arrive at optimal weight values.

RGB画像に存在するように3つの入力成分(第1の層の場合には、色である)が存在する場合には、各成分値に適用される3×3個の重みの3つの別個のセットが存在するが、初期バイアスは1つだけ存在する。3×3×3個の重みの各畳み込みにバイアスを加算すると、ピクセルの3×3パッチの中心における位置に対応する単一の出力成分値を形成する。各出力チャネルは、次に、それ自体の27個の重み値を、与えられたパッチ(出力位置と同じ位置における、およびカーネル重みの相対位置に対応する、入力成分のサブセット)に対するすべての出力成分が計算されるまで、適用する。畳み込みが64個から256個までの間の出力成分を有することは通常であり、これらの出力成分のそれぞれは、27の重みに1つのバイアスを加えた一意的な特定のセットを有する。 If there are three input components (which in the case of the first layer are colors), as there are in an RGB image, then there are three separate sets of 3x3 weights applied to each component value, but only one initial bias. Adding the bias to each convolution of the 3x3x3 weights forms a single output component value that corresponds to the pixel's position in the center of the 3x3 patch. Each output channel then applies its own 27 weight values until all output components for a given patch (a subset of input components at the same location as the output location, and corresponding to the relative location of the kernel weights) have been calculated. It is typical for a convolution to have between 64 and 256 output components, each of which has a unique, specific set of 27 weights plus a bias.

この例では、各カーネルは、その27個の重みを、3つのRGB成分の9つのピクセルの同じパッチと乗算している。64個の出力成分という比較的小さいセットの場合、個々の入力成分は、64個の任意で無関係の重みと乗算される。各パッチに対する出力成分が計算された後で、隣接するパッチが画像からロードされ、カーネルの重みのフルセットが再び適用される。このプロセスは、画像の右側のエッジに到達するまで継続し、次に、パッチは1つ下の行に降下して、左側のエッジからやり直す。 In this example, each kernel multiplies its 27 weights with the same patch of 9 pixels in the 3 RGB components. For a relatively small set of 64 output components, each input component is multiplied with 64 arbitrary and unrelated weights. After the output components for each patch are calculated, the neighboring patch is loaded from the image and the full set of kernel weights is applied again. This process continues until the right edge of the image is reached, then the patch drops down one row and starts over with the left edge.

第1の層が処理された後では、次の畳み込み層が、第1の層の出力を、第2の層への入力として処理する。よって、3×3の畳み込みは、ここでは、パッチの3×3×64個の入力成分に適用される3×3×64の重みを有する。この層が256個の出力を有する場合には、3×3×64×256=147,456回の乗算が、各出力位置のために行われなければならない。当業者であれば、これが、40個よりも多くの層を含み得るディープニューラルネットワークにおける単一の層を指していることを理解するであろう。 After the first layer is processed, the next convolutional layer processes the output of the first layer as input to the second layer. Thus, a 3x3 convolution now has 3x3x64 weights applied to the 3x3x64 input components of the patch. If this layer has 256 outputs, then 3x3x64x256=147,456 multiplications must be performed for each output position. Those skilled in the art will understand that this refers to a single layer in a deep neural network, which may contain more than 40 layers.

パッチの各要素に適用される乗算の回数は、層におけるチャネルの数と等しい。標準的なCPUでは、これらは、必ず、あるシーケンスで行われなければならない。多くの現代のCPUは、特に、データフォーマットが小さい(すなわち、8ビットの)場合には、乗算のセットを同時に実行する能力を有する。GPUまたはTPUでは、利用可能な乗算器の個数ははるかに多いが、各乗算器は、2つの別個で無制限の因子からの積を生成するように設計されている。 The number of multiplications applied to each element of a patch is equal to the number of channels in the layer. In a standard CPU, these must necessarily be done in some sequence. Many modern CPUs have the ability to perform a set of multiplications simultaneously, especially when the data format is small (i.e., 8-bit). In a GPU or TPU, the number of multipliers available is much larger, but each multiplier is designed to generate a product from two separate and unlimited factors.

現行技術によるプロセッサでは、CPU、TPU、またはGPUは、CNNの実装例では、乗算のための因子のうちの1つが、あるパッチのための処理の間に入力チャネルに適用されるすべての重みに対して共通である、という単純な事実を利用しない。 In current state-of-the-art processors, the CPU, TPU, or GPU do not take advantage of the simple fact that in a CNN implementation, one of the factors for multiplication is common to all weights applied to an input channel during processing for a patch.

本出願の発明者は、すべての乗算を、単一のステップで行う大規模乗算器を提案するが、従来すべての乗算は、そうではなくてシーケンシャルに行われている。乗算のセットの重みがすべてある小さな精度(TPUに対しては、8ビットが典型的)であるときには、限定された(2=256)個数の別個の重みが存在しており、共通の入力の別個の倍数の個数も対応する個数だけ存在する(これは、任意のサイズであり得、共通の因子の精度がどのようなものであっても、8ビットの重みが適用されるときには、依然として、わずかに256個だけの可能な倍数が存在する)。この場合、同じ個数の無制限の乗算器よりもはるかに少ない要素を用いて、要求される全部の出力を一度に生成する回路を実装することには、明確な利点が存在する。 The inventors of this application propose a large scale multiplier that performs all multiplications in a single step, whereas conventionally all multiplications are performed sequentially instead. When the weights of a set of multiplications are all of some small precision (8 bits is typical for a TPU), there is a limited (2 8 = 256) number of distinct weights, and a corresponding number of distinct multiples of a common input (which can be of any size, and no matter what the precision of the common factor is, when 8-bit weights are applied there are still only 256 possible multiples). In this case, there is a clear advantage to implementing a circuit that generates all the required outputs at once using many fewer elements than the same number of unlimited multipliers.

本発明の一実施形態では、同等の大規模乗算器は、単一の入力チャネルの専用であり、常に共有されるとは限らない。よって、動作は、いくつかのクロックサイクルと複数のレジスタ段とを用いるという選択肢を有する。これにより、システムの全体的なスループットに影響することなく、動作が、非常に単純で効率的な形式を取ることが可能になる。 In one embodiment of the present invention, an equivalent large multiplier is dedicated to a single input channel and is not always shared. Thus, the operation has the option of using several clock cycles and multiple register stages. This allows the operation to take a very simple and efficient form without affecting the overall throughput of the system.

単一の動的な値が多くの定数により乗算される一般的な場合には、独立な単一段の乗算器回路の同等なセットの代わりに、本発明の実施形態のような単一で多段の大規模乗算器回路を用いることの結果として、同じ計算を、実質的により高いスループット、および実質的により低い電力およびフットプリントで行うシステムが得られる。出力のセットが、用いられる実際の倍数の個数より少ない場合であっても、電力および空間に関し、依然として著しい節約が可能であり得る。 In the general case where a single dynamic value is multiplied by many constants, using a single, multi-stage, large-scale multiplier circuit, as in embodiments of the present invention, instead of an equivalent set of independent, single-stage multiplier circuits, results in a system that performs the same calculation with substantially higher throughput and substantially lower power and footprint. Even if the set of outputs is smaller than the number of actual multiples used, significant savings in power and space can still be possible.

独立の乗算器に対して、本発明の一実装形態では、独自の大規模乗算器の明確な利点を確立したのであるが、演算のシーケンスの順序を変更することで、この利点をさらに増加させることが可能である。 In one implementation of the present invention, we have established a clear advantage of the unique large scale multiplier over an independent multiplier, but this advantage can be further increased by changing the order of the sequence of operations.

ニューラルネットワーク(または、他の類似の画像処理)におけるアルゴリズムの数学には、いかなる特定の一連の演算を要求するものも存在しない。同じ演算がいかなる順序で行われた場合でも、同じ正しい計算がなされることになる。発明者は、CPU、GPU、またはTPUベースの設計上で実行するソフトウェアにとっての通常の順序は、重みに入力を乗算してそれらを直ちに加算することによって、与えられた位置に対する全部の出力チャネルを同時に生成するためのものである、と観察している。重みに入力を乗算し、それらを直ちに加算することによって、与えられた位置に対する全部の出力チャネルを同時に生成することは、入力がRAMから読み出されなければならない回数を最小化すると共に、重みが、やはりRAMから読み出されなければならない回数も制限する。それは、入力を複数回読み出すことを排除することはなく、その理由は、下段にある次の行を処理するときにそれらの入力を保持しておく場所は、RAMの他に存在しないからである。 There is nothing in the mathematics of algorithms in neural networks (or other similar image processing) that requires any particular sequence of operations. The same operations can be done in any order and will produce the same correct calculation. The inventors have observed that the usual order for software running on a CPU, GPU, or TPU based design is to generate all output channels for a given position simultaneously by multiplying the weights by the inputs and adding them immediately. Generating all output channels for a given position simultaneously by multiplying the weights by the inputs and adding them immediately minimizes the number of times the inputs must be read from RAM, and also limits the number of times the weights must be read from RAM. It does not preclude reading the inputs multiple times, since there is no place other than RAM to keep them when processing the next row below.

しかし、本発明の一実施形態において、アレイ入力のM×Nパッチに対して演算するように定義されたカーネルまたは他の開口関数の演算の順序が反転される、すなわち、有効に引っ繰り返される場合には、各入力値は、ただ一度だけ利用され、RAMのバッファは要求されない。開口関数が各行の上を通過する際に入力を冗長に読み出すことにより出力を一度に1つ生成する代わりに、この独特の演算は、最初に与えられるときにだけ、入力を一度に処理し、すべての不完全な出力についての部分和を保持するのである。部分和は、ハードウェアであるシフトレジスタまたは標準的なハードウェアである先入れ先出しレジスタ(FIFO)に保持され得るのであって、保持される値を保つために要求されるレジスタの個数は、カーネルの高さと入力行の幅とに比例する。 However, in one embodiment of the present invention, if the order of operation of a kernel or other aperture function defined to operate on an MxN patch of array inputs is reversed, i.e., effectively flipped, then each input value is used only once and no RAM buffering is required. Instead of generating outputs one at a time by redundantly reading the inputs as the aperture function passes over each row, this unique operation processes the inputs one at a time only when they are first presented, and keeps partial sums for all incomplete outputs. The partial sums can be kept in hardware shift registers or standard hardware first-in-first-out registers (FIFOs), with the number of registers required to hold the held values proportional to the height of the kernel and the width of the input row.

開口関数を実装する関数は、一連のサブ関数に分解されることが可能であり、これらのサブ関数のそれぞれは、直前のサブ関数の結果に対して演算するため、カーネルの実装は、受け取られるデータに対してそれぞれが直ちに演算し理論的にはカーネルを適用するのと同一の一連の演算が結果として生じるように、サブ関数を経時的にシーケンシャルに合成することによって達成され得る。我々は、この再合成された関数を任意の初期化も含めて開口関数と称し、個々のステップをサブ関数と称する。本明細書で用いられる開口関数とは、入力のより大きなR×CのアレイのうちのM×Nの入力のスライドするウィンドウまたはパッチ上の複数の位置において実装される、任意のM×Nの算出を指す。開口関数は、完全なCNNカーネルの実装の場合のように、初期化および最終化演算も含み得る。CNNの場合には、初期化は、バイアス値をアキュムレータの中に予めロードし、最終化は、カーネルの生の出力を、任意の活性化関数を介して変換する。 Because the function implementing the aperture function can be decomposed into a series of subfunctions, each of which operates on the results of the previous subfunction, the implementation of the kernel can be achieved by sequentially composing the subfunctions over time, resulting in a series of operations each of which operates immediately on the received data and is theoretically identical to applying the kernel. We refer to this recomposed function, including any initialization, as the aperture function, and the individual steps as subfunctions. An aperture function, as used herein, refers to any M×N computation implemented at multiple positions over a sliding window or patch of M×N inputs of a larger R×C array of inputs. The aperture function may also include initialization and finalization operations, as in the implementation of a full CNN kernel. In the case of a CNN, initialization preloads bias values into accumulators, and finalization transforms the raw output of the kernel through any activation function.

本発明のこの例では、各新たな入力位置の成分が与えられると、その位置における成分は、下方および右側へのパッチの第1の要素と、同時に、上方および左側へのパッチの最後の要素と、現在の位置と交差するすべての他のパッチの中間の要素とを表す。これにより、本発明の一実施形態として、常に固定された個数の進行中の要素を有し(入力のエッジの近くではいくらかの可能な例外があり得る)、入力を受け入れるのと同じ速度で出力を生成する、計算回路が開発されることが可能になる。 In this example of the invention, given the components of each new input position, the components at that position represent the first elements of the patches below and to the right, as well as the last elements of the patches above and to the left, and the middle elements of all other patches that intersect with the current position. This allows a computational circuit to be developed that, as one embodiment of the invention, always has a fixed number of ongoing elements (with some possible exceptions near the edges of the input) and produces output as fast as it accepts inputs.

ガイディングアルゴリズムが、入力アレイのエッジを超えて延長するパッチ上の開口関数の評価を要求する場合には、多くの特殊事例および課題が生じるが、それらは、克服不可能ではない。特殊事例のロジックが、重なるパッチの部分的な結果が全体的なスループットに影響することなく通常の場合と適合するように、追加され得る。 When the guiding algorithm requires evaluation of the aperture function on patches that extend beyond the edges of the input array, a number of special cases and challenges arise, but they are not insurmountable. Special case logic can be added so that partial results for overlapping patches fit the general case without affecting overall throughput.

本発明の実装形態では、この反転された形式の開口関数の演算が、ストリームとして入力を受け入れ、ストリームとして出力を生成する。入力はRAMにバッファされる必要がなく、その理由は、入力は、それぞれ、ただ一度だけ参照されるからである。出力もまたストリームに存在するため、出力が、RAMによるバッファリングなしで、以後の層によって処理されることが可能であり、これは、RAMとの間での必要な読出しおよび書込み動作が必要なそれ以外の多くのものに対して、処理スピードを実質的に増加させる本発明に帰すことができる結果である。 In an implementation of the present invention, the operation of this inverted form of the aperture function accepts inputs as a stream and produces outputs as a stream. The inputs do not need to be buffered in RAM because they are each referenced only once. Because the outputs are also in a stream, they can be processed by subsequent layers without being buffered by RAM, a result that can be attributed to the present invention that substantially increases processing speed over many other things that require necessary read and write operations to and from RAM.

本発明の一実施形態では、動作し記憶しそして次の層をシーケンシャルに処理するために結果を再び読み出す独立な乗算器の単一のセットを多くの層が共有する代わりに、どの層も完全になることを待機することなく全部の層を同時に処理して各層の出力ストリームを次の層の入力に供給する専用の大規模乗算器を用いて、パイプラインが生成され得る。 In one embodiment of the present invention, instead of many layers sharing a single set of independent multipliers that operate, store, and then read the results back out to process the next layer sequentially, a pipeline can be created using dedicated large multipliers that process all layers simultaneously without waiting for any layer to be complete, feeding the output stream of each layer into the input of the next layer.

本発明の一実施形態における完全に実装されたパイプラインは、このように、従来型の出力中心(output-centric)の順序付けプロセスよりも2桁優れたオーダで測定される有効なスループットに到達することができ、RAMに対する競合を排除する(RAMを用いることがないため)。GPUおよびTPUベースの処理の場合の主たるボトルネックを形成しているのは、RAMに対するこの競合である。 A fully implemented pipeline in one embodiment of the present invention can thus reach an effective throughput measured two orders of magnitude better than a traditional output-centric ordering process, eliminating contention for RAM (since no RAM is used). It is this contention for RAM that forms the main bottleneck in the case of GPU and TPU-based processing.

本発明の一実施形態でのそのようなシステムのレイテンシは、最後のピクセルの入力から最後の結果の出力までの時間にまで低減される。画像の最後のピクセルは、アルゴリズムの定義によると、必ず、すべての層のための最終的な計算の全部を完了させるために要求される最後のデータでなければならないため、システムのレイテンシは、厳密に、最終的な出力を含むパイプラインにおける別個のクロック段の個数のクロック速度倍である。 The latency of such a system in one embodiment of the present invention is reduced to the time from the input of the last pixel to the output of the final result. Since the last pixel of the image must, by definition of the algorithm, be the last data required to complete all of the final computations for all layers, the latency of the system is exactly the clock rate times the number of distinct clock stages in the pipeline that contain the final output.

(再度用いられなければならず動的に割り当てられなければならない、独立の乗算器の限定されたセットの代わりに)各入力チャネルのために単一の専用の大規模乗算器を本発明の一実施形態におけるニューラルネットワークの全体で用いることにより、ピクセル同期式のパイプラインを構築することが可能になり、このパイプラインでは、適用される任意の数の重みを処理するために1つの大規模乗算器が必要となるだけなので、すべての乗算が並列に実行される。 The use of a single dedicated large scale multiplier for each input channel throughout the neural network in one embodiment of the present invention (instead of a limited set of independent multipliers that must be reused and dynamically allocated) makes it possible to build a pixel-synchronous pipeline in which all multiplications are performed in parallel since only one large scale multiplier is needed to handle any number of weights that are applied.

大規模乗算器の技術革新に関する本質的な特徴を、そしてまた反転の利点も説明してきたが、発明者は、以下では、特定の例を呈示する:
図1は、本発明の一実装形態を図解している図であり、この実施形態では、1つ以上のソースチャネル1からNのうちの複数のそれぞれは、101aから101dとラベル付けされており、専用の大規模乗算器102aから102dが割り当てられている。この例における各ソースチャネルは、そのチャネルの値の倍数のセットを作り出す専用の大規模乗算器回路を有しているため、ソースチャネルのフォーマットは、ハードウェアに実装されている処理アルゴリズムのために便利な任意の精度における、符号付き、符号なし、固定、または浮動小数点の間で変わり得る。大規模乗算器回路102cなど、各大規模乗算器回路の特定の出力は、ソースチャネルのいずれかまたは全部の倍数を要求する算出を行い得る1つ以上の計算ユニット103aから103dの中に直接に供給され得る。これらの計算ユニットは、同じソースチャネル上で計算される単一のアルゴリズムまたは無関係のアルゴリズムの独立の出力チャネルを実装するのに用いられ得る。計算の出力は、ハードウェアに実装された1つ以上のアルゴリズムによって要求され得る104に示されているさらなる処理のために、転送され得る。この状況は、たとえば、フィールドプログラマブルゲートアレイ(FPGA)にニューラルネットワークを実装するときに生じ、その場合被乗数として適用される重み値は変化しない。
Having described the essential features of the large scale multiplier innovation, and also the advantages of inversion, the inventors now present a specific example:
FIG. 1 illustrates one implementation of the present invention, in which each of a plurality of one or more source channels 1 to N are labeled 101a to 101d and assigned a dedicated large-scale multiplier 102a to 102d. Since each source channel in this example has a dedicated large-scale multiplier circuit that produces a set of multiples of the channel's value, the format of the source channels can vary between signed, unsigned, fixed, or floating point, in any precision convenient for the processing algorithm implemented in the hardware. The specific output of each large-scale multiplier circuit, such as large-scale multiplier circuit 102c, can be fed directly into one or more computation units 103a to 103d that can perform calculations requiring multiples of any or all of the source channels. These computation units can be used to implement independent output channels of a single algorithm or unrelated algorithms that are calculated on the same source channel. The output of the computation can be forwarded for further processing, shown at 104, that may be required by one or more algorithms implemented in the hardware. This situation arises, for example, when implementing a neural network in a field programmable gate array (FPGA), where the weight values applied as multiplicands do not change.

図2は、本発明の一実施形態を図解しており、図1の大規模乗算器102aなど、各大規模乗算器の出力が、選択される倍数がシステムの初期化のときに選ばれるまたはシステムが動作する際に動的に選ばれるように、マルチプレクサのセット201aから201dを通して計算ユニット203a-203dの中に供給される。計算の出力は、次に、前述したように、204におけるさらなる処理のために転送され得る。この状況は、特定用途向け集積回路(ASIC)としてニューラルネットワークを実装するときに生じ、その場合、計算の構造はコミットされるが用いられる重み値は変更される必要がある。 Figure 2 illustrates one embodiment of the present invention in which the output of each large scale multiplier, such as large scale multiplier 102a of Figure 1, is fed into computation units 203a-203d through a set of multiplexers 201a-201d such that the selected multiplier is chosen at system initialization or dynamically chosen as the system operates. The output of the computation may then be forwarded for further processing in 204 as previously described. This situation arises when implementing a neural network as an application specific integrated circuit (ASIC), where the structure of the computation is committed but the weight values used need to be changed.

図3は、ある実施形態において、図1および図2の大規模乗算器102aの内部構造を図解している。この構造は、大規模乗算器102b、102c、および102dに共通であり得ると共に、本発明の他の実施形態における他の大規模乗算器にも共通であり得る。この構造では、Aビットであるソースチャネルの被乗数101aとBビットであるすべての可能な乗数との積303aから303fが、並列に生成され、倍数304に送達される。この例では、ソース被乗数101aのAビットが、0からB-1までのすべての要求されたシフトされた値のフルセットがA+Bビットの項302aから302dのベクトルの形式で利用可能となるように、複製され、0ビットを一番下の位置に付加することによって上にシフトされ、0ビットを一番上の位置の先頭に追加することによってパッディングされる。これらの項は、単に、回路接続をルーティングすることによって形成され得るのであって、レジスタやロジック回路は必要とされない。A+BビットのうちのB項の最大値が単一の周期で合成されることを可能にするためにクロック周期が十分である場合には、レジスタやサブ合成は、必要とされないことがあり得る。加算された項の個別の積303aから303fは、ローカルに記録されるか、または組合せロジックとしてのさらなる処理のために転送され得る。各乗数において1ビットが生じるときには常に、ソース被乗数101aの1から2-1倍の各積は、Bの対応する項302aから302dのいずれかまたは全部を加算することによって、形成され得る。あらゆるソースの倍数0は、全部が0ビットの定数であり、マルチプレクサを用いるときは完全性のために倍数304に含まれ得るが、それ以外には回路を要求しない。いかなる使われない積303aから303fも、それらを回路仕様から除くことによって統合ツールがそれらを削除することを可能にするか、または任意の他の方法によるかのいずれかによって、除外され得る。使われない項302aから302dもまた除外され得るが、それらはロジックを占有しないため、これは一般的に効果を生じない。このようにして、ソース被乗数101のすべての要求される倍数304は、単一段のパイプラインとして、または組合せロジックとして形成され得る。 3 illustrates the internal structure of the large-scale multiplier 102a of FIG. 1 and FIG. 2 in one embodiment. This structure may be common to the large-scale multipliers 102b, 102c, and 102d, as well as other large-scale multipliers in other embodiments of the present invention. In this structure, products 303a to 303f of the source channel multiplicand 101a of A bits and all possible multipliers of B bits are generated in parallel and delivered to a multiple 304. In this example, the A bits of the source multiplicand 101a are duplicated, shifted up by appending a 0 bit to the bottom position, and padded by prepending a 0 bit to the top position, so that a full set of all requested shifted values from 0 to B-1 is available in the form of a vector of A+B bit terms 302a to 302d. These terms can be formed simply by routing circuit connections, no registers or logic circuits are required. If the clock period is sufficient to allow the maximum value of B terms of A+B bits to be synthesized in a single period, registers or sub-synthesis may not be required. The individual products of the summed terms 303a to 303f may be stored locally or forwarded for further processing as combinatorial logic. Whenever a 1 bit occurs in each multiplier, each product of 1 to 2 B −1 times the source multiplicand 101a may be formed by adding any or all of the corresponding terms 302a to 302d of B. Any source multiple 0 is an all-0 bit constant that may be included in the multiple 304 for completeness when using multiplexers, but does not otherwise require circuitry. Any unused products 303a to 303f may be excluded, either by removing them from the circuit specification, allowing the synthesis tool to delete them, or by any other method. Unused terms 302a to 302d may also be excluded, but this generally has no effect since they do not occupy logic. In this manner, all required multiples 304 of the source multiplicand 101 can be implemented as a single stage pipeline or as combinational logic.

図4は、最適化された一実施形態を示しており、この実施形態では、項のセット401が、A+B+1ビットで形成された0からBまでを含む、すべての要求される個々の項302aから302eで構成されている。これにより、積402aから402fが、より小さな項の加算の代わりにより大きな項からの減算を含むことが可能になり、やはり最大の可能なクロック周波数を増加させる可能性がある回路の全体的なサイズを低減するのに、用いられ得る。たとえば、任意の与えられた入力aと乗数15とに対して、8a+4a+2a+1a=15aは、4つの成分を組み合わせているが、他方で、16a-1a=15aは、ただ2つを組み合わせており、一般的に、よりコンパクトで効率的であると期待される。各積402aから402fは、正しい結果を生じる、項302aから302eの加算および減算から構成され得るのであり、各特定の変形は、特定の実装技術のための最適なトレードオフに基づいて選ばれ得る。たとえば、2つのNビットの量の減算は、2つのNビットの量の加算よりも多くのロジックを要求し得るが、一般的に、3つのNビットの量の加算は、2つの減算よりも、常により多くのロジックを要求することになる。要求される倍数304の処理は、個々の積402aから402fを合成する詳細によって、変更されることはない。 Figure 4 shows an optimized embodiment in which the set of terms 401 is composed of all required individual terms 302a to 302e, including 0 to B formed by A+B+1 bits. This allows the products 402a to 402f to include subtractions from larger terms instead of additions of smaller terms, which can be used to reduce the overall size of the circuitry, which may also increase the maximum possible clock frequency. For example, for any given input a and multiplier 15, 8a+4a+2a+1a=15a combines four components, while 16a-1a=15a combines only two, which is generally expected to be more compact and efficient. Each product 402a to 402f may be composed of additions and subtractions of terms 302a to 302e that produce the correct result, and each particular variant may be chosen based on the optimal tradeoff for a particular implementation technology. For example, subtracting two N-bit quantities may require more logic than adding two N-bit quantities, but in general, adding three N-bit quantities will always require more logic than subtracting two. The processing of the required multiple 304 is not altered by the details of combining the individual products 402a through 402f.

図5Aは、大規模乗算器の一実施形態を図解しているが、この実施形態では、クロック周期は、A+Bビットの値(または、減算が用いられる場合には、A+B+1)の単一の加算だけが1周期当たりで可能であるようになっている。この場合には、2つより多くの項が利用される倍数に適応するために、要求される要素を多段のパイプラインに構成することが必要である。項401は、前述のように各ソースチャネル101から形成されているが、後の参照のために、1回以上、パイプラインレジスタ501aおよび501bに保持される。加算された2つの項のペア502は、計算され記録されて、次に、必要に応じて保存503される。トリプル504は、ペア502と保持されている項501との和として形成される。項の値クオッド505は、ペア502の和として形成される。使用されない要素はすべて除外されてよく、重なりを増加させるために、加数の下降するシーケンスだけが特定され得る。これにより、たとえばa+bおよびb+aなどの冗長な和の両方は利用されず、最終回路に保持されないことが保証される。積506aから506fは、タイミングの制約を満足する記録されているサブ合成の任意のペアの任意の加算または減算演算を利用することができる。利用可能な最大の要素を首尾一貫して用いることにより、全体的なサイズを、したがって電力を低減することができるが、正しい結果を生じる演算の任意の組合せが受け入れ可能である。 5A illustrates an embodiment of a large scale multiplier where the clock cycle is such that only a single addition of A+B bit values (or A+B+1 if subtraction is used) is possible per cycle. In this case, it is necessary to arrange the required elements into a multi-stage pipeline to accommodate multiples where more than two terms are used. A term 401 is formed from each source channel 101 as described above, but is held one or more times in pipeline registers 501a and 501b for future reference. Pairs 502 of two added terms are calculated and recorded, then saved 503 as needed. Triples 504 are formed as the sum of pairs 502 and the held terms 501. Term value quads 505 are formed as the sum of pairs 502. Any unused elements may be omitted, and only descending sequences of addends may be specified to increase overlap. This ensures that redundant sums, e.g. a+b and b+a, are not both used and are not held in the final circuit. The products 506a through 506f can utilize any addition or subtraction operation of any pair of recorded subcomposites that meets the timing constraints. By consistently using the largest elements available, the overall size, and therefore the power, can be reduced, but any combination of operations that produces a correct result is acceptable.

図5Aの実施形態は、B=8の場合のすべての要求される倍数を生成するのに十分である。それよりも大きな倍数のセットの場合には、示されているサブ合成が、Bの任意の値に対するすべての要求される倍数506a-506fが、先に開示され保持されていた項501bと、保持されていたペア503と、トリプル504と、クオッド505とを、単一クロックの演算によって倍数506a-506fを形成するのに十分な項のセットを形成するのに要求される他のサブ合成と共に含む、サブ合成の拡張されたセットにおける単一クロックの演算から合成されるように、さらなるパイプライン段において再び組み合わせられ得る。 The embodiment of FIG. 5A is sufficient to generate all required multiples for B=8. For larger sets of multiples, the sub-compositions shown can be recombined in further pipeline stages such that all required multiples 506a-506f for any value of B are composed from single-clock operations in an expanded set of sub-compositions that include the previously disclosed and retained term 501b, the retained pair 503, the triple 504, and the quad 505, along with other sub-compositions required to form a set of terms sufficient to form multiples 506a-506f by single-clock operations.

図5Bは、倍数が、標準的な算術演算を参照することなく固定されたセットの場合によって直接に形成される実施形態を図解している。要求される倍数のそれぞれに対して、出力値a*bのセットが、各ソースチャネルの値aに対して列挙される。これにより、ハードウェア回路合成ツールが、要求される倍数のフルセットを生成するために最適なロジック回路507を決定することが可能になる。任意の与えられた入力値に対する要求される出力値の仕様は、典型的には、Verilogの「case」または「casex」ステートメントにおける列挙によって、作成される。これは、出力値が記憶されていて、入力から形成されるインデクスを介してアクセスされるルックアップテーブルとはまったく別であり、その理由は、出力値のフルセットを生成するのに要求される演算の最小のサブセットを実装するのにロジックゲートが用いられ、関係するサブ表現を生成するのに用いられる冗長ロジックが組み合わせられるからである。 Figure 5B illustrates an embodiment where multiples are formed directly by a fixed set of cases without reference to standard arithmetic operations. For each required multiple, a set of output values a*b is enumerated for each source channel value a. This allows a hardware circuit synthesis tool to determine the optimal logic circuit 507 to generate the full set of required multiples. The specification of the required output values for any given input value is typically created by enumeration in a Verilog "case" or "casex" statement. This is quite distinct from a lookup table where the output values are stored and accessed via an index formed from the inputs, because logic gates are used to implement the smallest subset of operations required to generate the full set of output values, and redundant logic used to generate the relevant sub-expressions is combined.

方法5Aと5Bとのどちらが、空間、周波数、および電力に関して最も効率的であるかは、AおよびBの特定の値、ならびに算術演算と任意のロジックとの間でのコア効率性にも依存する。どちらの方法を用いるのかの選定は、直接的な観察、シミュレーション、または他の基準に基づき得る。 Whether method 5A or 5B is the most efficient in terms of space, frequency, and power also depends on the particular values of A and B, as well as the core efficiency between arithmetic operations and arbitrary logic. The choice of which method to use may be based on direct observation, simulation, or other criteria.

図6は、クロック周期が、ロジックの十分なレベルによって、各単一のクロック周期の間に4つの要素の加算および/または減算の合成が可能であるような一実施形態を図解している。サブ合成のセットから選択することによって、各積605aから605fが、4つ以下の記録された要素を組み合わせることによって、生成され得る。前述のように、項はレジスタ501aおよび501bに保持されているが、602に保持されるトリプル601は項401から直接に合成され、ペアは用いられない。セプテット603とオクテット604とは、トリプル601と保持されている項501aとから形成される。 Figure 6 illustrates an embodiment where the clock cycle allows, with sufficient levels of logic, the composition of additions and/or subtractions of four elements during each single clock cycle. By selecting from a set of sub-combinations, each product 605a-605f can be generated by combining four or fewer stored elements. As before, terms are stored in registers 501a and 501b, but triple 601 stored in 602 is composed directly from term 401, without using pairs. Septet 603 and octet 604 are formed from triple 601 and stored term 501a.

図6の例示的な実施形態は、B=32の場合のすべての要求される倍数を生成するのに十分である。より大きな乗数の場合、示されているサブ合成は、Bの任意の値のためのすべての要求される倍数を生成するために、さらなるパイプライン段において、一度に4つが再び組み合わされる。示されている要素のサブ合成は、B=32の場合のすべての積を生成するために必要であり十分であるが、(おそらくは、Bの異なる値にわたって一貫性のために選ばれる)他のサブ合成も受け入れ可能である。 The exemplary embodiment of FIG. 6 is sufficient to generate all required multiples for B=32. For larger multipliers, the sub-combinations shown are recombined four at a time in further pipeline stages to generate all required multiples for any value of B. While the sub-combinations of elements shown are necessary and sufficient to generate all products for B=32, other sub-combinations (possibly chosen for consistency across different values of B) are acceptable.

FPGAの用途に対して一般的であるように、乗算器のセットが固定されているときには、共通の要素がマージされて、使用されない要素は除外され得るから、乗算器の大きな粗のセットでさえも効率的に実装され得る。合成ツールがこの機能を自動的に行うときには、回路の表現は、どの倍数が用いられるかを明示的に宣言することなく、すべての可能な要素を含み得る。 When the set of multipliers is fixed, as is typical for FPGA applications, even a large coarse set of multipliers can be implemented efficiently because common elements can be merged and unused elements can be omitted. When a synthesis tool performs this function automatically, the representation of the circuit can include all possible elements without explicitly declaring which multipliers are used.

A+BまたはA+B+1ビットの値に対する演算が単一のクロックサイクルで完了されることが不可能である場合、すべてのパスが同数のクロック周期を有するように、必要に応じて追加のパイプラインレジスタが挿入されれば、多段のパイプライン加算器が、任意の単一段の合成ロジックのために挿入され得る。パイプライン段の周期は、単一のエッジ間でのクロック遷移の、またはスループットの制約が許容する場合には複数サイクルのクロックのインスタンスであり得る。演算ごとの複数クロック段と複数サイクルのクロック動作の使用とのいずれも、直前で言及した課題以外には、どの実施形態に対しても構造的な変更を要求することはない。 If operations on A+B or A+B+1 bit values cannot be completed in a single clock cycle, a multi-stage pipeline adder can be inserted for any single stage of composition logic, with additional pipeline registers inserted as necessary so that all paths have the same number of clock periods. A pipeline stage period can be an instance of a single edge-to-edge clock transition, or a multi-cycle clock if throughput constraints permit. Neither the use of multiple clock stages per operation nor a multi-cycle clock operation requires structural changes to any of the embodiments, other than the issues just mentioned.

本発明の重要な目的は、当産業に、多様な用途において用いられ集積回路に実装される大規模乗算器を提供することである。この目的のために、発明者は、一実施形態において、集積回路に実装される大規模乗算器を提供し、この集積回路は、離散的な値のストリームを受け取るポートと、そのポートにおいて受け取られる各値に複数の重み値を同時に乗算する回路と、生成された大規模乗算器の積を提供する出力チャネルとを有する。 An important object of the present invention is to provide the industry with a large scale multiplier implemented in an integrated circuit for use in a variety of applications. To this end, the inventors provide, in one embodiment, a large scale multiplier implemented in an integrated circuit having a port for receiving a stream of discrete values, circuitry for simultaneously multiplying each value received at the port by a number of weighting values, and an output channel for providing the generated large scale multiplier product.

あるバージョンでは、受け取られる離散的な値は、固定された幅を有する符号なしのバイナリ値であり得るし、重み値は、2またはそれより大きなビットの固定された幅を有する符号なしのバイナリであり得、各倍数は、入力のビットシフトされた複製の和として合成され得る。別のバージョンでは、シフトされた複製のセットが、回路を低減するまたはさもなければ最適化するために減算演算の使用を可能にするように増加され得る。そのセットのうちの使用されない出力は、明示的または非明示的に、除外され得る。 In one version, the received discrete values may be unsigned binary values with a fixed width, the weight values may be unsigned binary with a fixed width of 2 or more bits, and each multiple may be synthesized as a sum of bit-shifted replicas of the input. In another version, the set of shifted replicas may be increased to allow the use of subtraction operations to reduce or otherwise optimize the circuit. Unused outputs from the set may be excluded, either explicitly or implicitly.

ある実施形態では、出力される積のセットは、組合せロジックによって、生成され得る。別の実施形態では、出力されるセットの組は、単一段のパイプラインによって、単一または複数のクロックサイクルを用いて、生成され得る。別の実施形態では、出力される倍数のセットは、多段のパイプラインによって、1段当たり2つ以下の加数を組み合わせることによって、生成され得る。中間のサブ合成の使われない要素は、明示的または非明示的に、回路から排除され得る。 In one embodiment, the set of output products may be generated by combinational logic. In another embodiment, the set of output sets may be generated by a single stage pipeline using a single or multiple clock cycles. In another embodiment, the set of output multiples may be generated by a multi-stage pipeline by combining no more than two addends per stage. Unused elements of intermediate sub-compositions may be explicitly or implicitly excluded from the circuit.

ある実施形態では、出力される積のセットは、多段のパイプラインによって、1段当たり3つ以上の加数を組み合わせることによって生成され得るのであり、サブ合成は、それに従って調整される。中間のサブ合成の使われない要素は、明示的または非明示的に、回路から排除され得る。 In some embodiments, the set of output products may be generated by a multi-stage pipeline combining three or more addends per stage, and the sub-compositions are adjusted accordingly. Unused elements of intermediate sub-compositions may be explicitly or implicitly excluded from the circuit.

本発明の別の目的は、深層学習および人工知能の進行中の進展における、実質的に改善された畳み込みニューラルネットワークを実装するために、大規模乗算を集積回路において提供することである。発明者は、この努力において、集積回路として実装された第1の畳み込みニューラルネットワーク(CNN)ノードを提供しているが、これは、アレイの要素の第1の成分の離散的な値のストリームとして定義された、第1の入力チャネルを有する。 Another object of the present invention is to provide large scale multiplication in an integrated circuit to implement substantially improved convolutional neural networks in the ongoing advancement of deep learning and artificial intelligence. In this end, the inventors provide a first convolutional neural network (CNN) node implemented as an integrated circuit having a first input channel defined as a stream of discrete values of a first component of an array of elements.

この説明では、発明者は、アレイの要素という命名を、単一の成分または複数の成分を有し得る要素を意味するものとして、意図している。適切な例は画像であって、画像は要素としてピクセルを有し得、画像が単色である場合、各ピクセルは単一の要素を有し得、または、画像がRGBカラーである場合、1例において3色の値を有し得る。この例における各色値は、ピクセルである要素の成分である。 In this description, the inventors intend the nomenclature of an array element to mean an element that may have a single component or multiple components. A good example is an image, where an image may have pixels as elements, and each pixel may have a single element if the image is monochrome, or may have three color values in one example if the image is RGB color. Each color value in this example is a component of the element, which is a pixel.

アレイの要素の最初の成分の離散的値のストリームとして定義される第1の入力チャネルを用いた集積回路に実装されている、第1の畳み込みニューラルネットワーク(CNN)ノードに関する上述の説明を続けるが、このCNNには、受け取られた第1の成分の離散的値に複数の重み値を同時に乗算する第1の大規模乗算器回路がさらに存在する。出力チャネルは、離散的値の出力ストリームを提供する。 Continuing with the above description of a first convolutional neural network (CNN) node implemented in an integrated circuit with a first input channel defined as a stream of discrete values of a first component of an array of elements, the CNN further includes a first large scale multiplier circuit that simultaneously multiplies the received discrete value of the first component by multiple weight values. The output channel provides an output stream of discrete values.

CNNノードのある実施形態では、第1の出力ストリームは、第1の大規模乗算器回路の積から、いくつかの状況では積を定数と組み合わせることによって、そしていくつかの状況では活性化関数を適用することによって、形成される。 In some embodiments of the CNN node, the first output stream is formed from the products of the first large scale multiplier circuit, in some circumstances by combining the products with a constant, and in some circumstances by applying an activation function.

別の実施形態では、CNNノードは、アレイの要素の第2の成分の離散的値のストリームとして定義された第2の入力チャネルと、受け取られた第2の成分の離散的値に複数の重み値を同時に乗算する第2の大規模乗算器回路とをさらに備えている。別の実施形態では、アレイの要素の第3の成分の離散的値のストリームとして定義された第3の入力チャネルと、受け取られた第3の成分の離散的値に複数の重み値を同時に乗算する第3の大規模乗算器回路とが存在し得る。 In another embodiment, the CNN node further comprises a second input channel defined as a stream of discrete values of the second component of the elements of the array, and a second large scale multiplier circuit that simultaneously multiplies the received discrete values of the second component by multiple weight values. In another embodiment, there may be a third input channel defined as a stream of discrete values of a third component of the elements of the array, and a third large scale multiplier circuit that simultaneously multiplies the received discrete values of the third component by multiple weight values.

1つ、2つ、または3つの入力成分ストリームと専用の大規模乗算器とを有するCNNノードについて説明したが、発明者は、アレイの要素の成分の離散的値のストリームとして定義された入力チャネルと、個々の入力チャネルの専用であって受け取られた成分の離散的値に複数の重み値を同時に乗算する大規模乗算器回路と、離散的値の出力ストリームを提供する出力チャネルとを備えた集積回路として実装された第1の畳み込みニューラルネットワーク(CNN)ノード、および、第1のノードの出力に少なくとも部分的に依存する入力を有する第2のCNNノードを有する畳み込みニューラルネットワーク(CNN)をさらに提供する。このCNNは、連続的なノードを有し得るのであって、深層ニューラルネットワーク(DNN)として動作し得る。第1のノードの後の連続的なノードがCNNノードであることは、要求されない。 While a CNN node having one, two, or three input component streams and a dedicated large scale multiplier has been described, the inventors further provide a convolutional neural network (CNN) having a first convolutional neural network (CNN) node implemented as an integrated circuit with input channels defined as streams of discrete values of the components of the elements of the array, large scale multiplier circuits dedicated to each input channel for simultaneously multiplying the discrete values of the received components by multiple weight values, and output channels providing an output stream of discrete values, and a second CNN node having an input that is at least partially dependent on the output of the first node. This CNN may have successive nodes and may operate as a deep neural network (DNN). It is not required that successive nodes after the first node be CNN nodes.

パイプライン化された開口関数の動作
ここで、正味の結果を生成するために入力のアレイに対して計算サブ関数のアレイを通過させるCNNまたは他の同様に選ばれた開口関数を処理する際の演算の順序について論じた、本明細書における先の説明に戻って参照するが、ストリームとして入力を受け入れ、ストリームとして出力を生成するという、本発明の一実施形態における開口関数の動作の反転された形式に関する特定の説明がここで提供される。本発明のこの実施形態では、RAMに入力がバッファされることはないし、バッファされることは必要ないのであって、その理由は、各入力は、ただ一度だけ参照されるからである。出力もまたストリームとして生成されるため、出力ストリームは、RAMによるバッファリングを伴うことなく、後の層によって処理され得る。発明者は、この技術革新が、他の処理システムにおけるRAMに対する読出しおよび書込み動作が必要なそれ以外の多くとの比較において、処理スピードを実質的に増加させると信じる。
Pipelined Aperture Function Operation Referring back to the earlier description herein that discussed the order of operations in processing a CNN or other similarly chosen aperture function that passes an array of computational subfunctions over an array of inputs to generate a net result, a specific description is now provided of an inverted form of aperture function operation in one embodiment of the present invention that accepts inputs as a stream and produces outputs as a stream. In this embodiment of the present invention, the inputs are not and do not need to be buffered in RAM because each input is referenced only once. Because the outputs are also generated as a stream, the output stream can be processed by subsequent layers without buffering by RAM. The inventors believe that this innovation substantially increases processing speed in comparison to many other processing systems that require read and write operations to RAM.

本発明の一実施形態において装置および方法が提供されるが、すべての入力が直ちに処理され、部分的に完了した計算が、すべての要求される入力が受け入れられ処理されるまで保持され、出力が、典型的には入力ストリームと同一のまたはそれよりも低いデータ速度を有する整合的なストリームとして生成されるように、二次元の開口関数を二次元のアレイ上を通過させる作用が、入力の入来ストリーム上に作用することによって達成される。すべての入力は、提供される速度で受け入れられ処理されるのであって、与えられた順序以外のいかなる順序も記憶されるまたはアクセスされることは要求されない。入力よりも多くの出力が生成されるように開口関数の適用が定義されている場合であっても、この回路は、システムが与えられた入力を受け取らず処理しないということが決してないように、処理クロック速度を十分な増加を伴うように選択することによって、依然として入来データのスピードで動作することができる。 In one embodiment of the present invention, an apparatus and method is provided in which the act of passing a two-dimensional aperture function over a two-dimensional array operates on the incoming stream of inputs such that all inputs are processed immediately, partially completed calculations are held until all required inputs have been accepted and processed, and outputs are generated as a coherent stream, typically having the same or a lower data rate than the input stream. All inputs are accepted and processed at the rate at which they are provided, and are not required to be stored or accessed in any order other than the order given. Even if the application of the aperture function is defined to generate more outputs than inputs, the circuitry can still operate at the speed of the incoming data by selecting the processing clock rate with a sufficient increase so that the system never does not accept and process a given input.

より大きな入力アレイに対してカーネルまたはより一般的な開口関数の畳み込みを実装するための従来型の方法は、要求される入力パッチを収集し、関数を入力に適用して、結果を出力するというものである。開口が入力アレイに対して通過されるとき、続く各パッチは、ちょうど処理されたものと重なり合うため、いくつかの入力が保持され再利用され得る。パッチが各新たな行に進む際にソースストレージから入力を冗長に読み出すことを回避するためには、FIFOなど、様々な機構が用いられ得るが、入力パッチが各特定のデータ入力位置と重なる各出力を順に生成するために、ソースデータは、依然として、カーネルにおける各位置に適用されることになる。 The traditional way to implement the convolution of a kernel, or a more general aperture function, over a larger input array is to collect the required input patches, apply the function to the input, and output the result. As the aperture is passed over the input array, each successive patch overlaps with the one just processed, so some input can be retained and reused. Various mechanisms, such as FIFOs, can be used to avoid redundantly reading inputs from source storage as the patch advances to each new row, but the source data will still be applied to each location in the kernel to generate each output in turn where the input patch overlaps each particular data input location.

多くの出力チャネルと計算されるべき多くの独立の開口関数とが存在する場合には、開口関数のすべてに、考慮中の入力値のパッチの積を並列に提供するために、大規模乗算器が用いられ得る。しかし、この構成と演算の順序では、ソースデータの各位置は、カーネルにおける各位置に対して積のセットを要求することになり、その理由は、重なり合う様々な出力位置にそれが組み合わされるからである。 When there are many output channels and many independent aperture functions to be computed, a large multiplier can be used to provide all of the aperture functions with products of the patch of input values under consideration in parallel. However, with this organization and order of operations, each location of the source data will require a set of products for each location in the kernel as it is combined with the various overlapping output locations.

本発明の機構は、与えられた入力値に適用される単一の大規模乗算器を入力チャネルごとに一度だけ用いるという特別な利点のために、演算の順序を反転させる、すなわち、引っ繰り返す、ということである。後で積を計算するという形式によって後で用いるためにソース値を保持するまたは再度読み出すのではなく、本発明の一実施形態におけるプロセスは、与えられたときに各入力の全部の要求される積を計算し、現在の入力が現れる時点までにおいて完全である、開口関数の各要素に対する現在までの合計を保持する。 The mechanism of the present invention is to invert or flip the order of operations for the special advantage of using a single large multiplier applied to a given input value only once per input channel. Rather than retaining or re-reading source values for later use in the form of later product computations, the process in one embodiment of the present invention computes all required products of each input as they are presented, and keeps running sums for each element of the aperture function that are complete up to the point in time when the current input appears.

シーケンシャルに適用される一連のサブ関数に数学的に分解されることが可能な任意の開口関数が、このようにして実装できる。CNNカーネルは、重み倍した入力の一連の和に過ぎず、演算の順序は左から右、上から下によって取られるソース入力の順序と適合しているため、この機構が容易に適用されることが可能である。 Any aperture function that can be mathematically decomposed into a series of subfunctions applied sequentially can be implemented in this way. This mechanism can be easily applied because the CNN kernel is nothing more than a series of sums of weight-multiplied inputs, and the order of operations matches the order of the source inputs, which are taken from left to right and top to bottom.

本発明の一実施形態では、開口関数のサブ関数要素に対応する合成器のアレイがIC上に実装され、それぞれが、入力ストリーム上を進むにつれて、開口関数の値のその時点までの合計を保つ。アレイにおける最終の合成器は、関数の完全な値を出力し、すべての他の合成器は、関数の部分的な値を出力する。 In one embodiment of the present invention, an array of combiners corresponding to subfunction elements of the aperture function is implemented on the IC, each keeping a running total of the aperture function's values as it moves along the input stream. The final combiner in the array outputs the complete value of the function, and all other combiners output partial values of the function.

3×3のカーネルの適用という単純な場合、左上の合成器の出力は、現在の入力に適用されたカーネルの最初の要素と任意の初期化定数との和を反映し、真ん中の上の合成器の出力は、最初の2つのステップを反映し、右上の合成器の出力は、最初の3つのステップを反映する。右上の合成器の出力は、それが次の行によって再び用いられることができるまで遅延される必要がある。合成器の次の行は、部分的に完了した関数値を受け入れ、各新たな入力の寄与を加算して、それを前方に通過させる、というパターンを継続する。合成器の最後の行は、関数の最後のステップを完了させて、完了した値を任意のさらなる処理のために出力する。 In the simple case of applying a 3x3 kernel, the output of the top-left compositor reflects the first element of the kernel applied to the current input plus any initialization constants, the output of the top-middle compositor reflects the first two steps, and the output of the top-right compositor reflects the first three steps. The output of the top-right compositor needs to be delayed until it can be used again by the next line. The next line of compositors continues the pattern of accepting the partially completed function value, adding the contribution of each new input, and passing it forward. The last line of compositors completes the last step of the function and outputs the completed value for any further processing.

合成器の間での関数の部分的な値の進行は、一般的に、第1の行では左から右であり、次いで続く行でも、最終的に最後の行における最後の合成器まで左から右であることに注意すると、部分的な値のフローはストリームであると考えて、合成器とフローとを上流または下流と称することができる。 Noting that the progression of partial values of a function between compositors is generally left-to-right in the first row, then in subsequent rows, and finally to the final compositor in the last row, the flow of partial values can be thought of as a stream, and the compositors and flows can be referred to as upstream or downstream.

すべての時間において、各合成器は、現在のソース入力を含めその現在のソース入力までの開口関数の部分和を維持する。各合成器は、常に、出力の異なるパッチ位置に対して、特に、開口サブ関数アレイにおける合成器の相対位置に現在の入力が現れるそのパッチの位置に対して、作用している。 At all times, each combiner maintains a partial sum of the aperture functions up to and including the current source input. Each combiner is always operating on a different patch position in the output, specifically, on that patch position where the current input appears relative to the combiner's position in the aperture subfunction array.

3×3のカーネルWが入力Aの関数として、

Figure 0007681348000003
と表される場合には、このカーネルを実装する関数は、下記のような同等のサブ関数に分解されることが可能である。
(a11)=k+a1111
(t,a12)=t+a1212
(t,a13)=t+a1313
(t,a21)=t+a2121
(t,a22)=t+a2122
(t,a23)=t+a2123
(t,a31)=t+a3121
(t,a32)=t+a3132
(t,a33)=t+a3133
u=v(v(v(v(v(v(v(v(v(a11),a12),a13),a21),a22),a23),a31),a32),a33
u=(((((((((k+a1111)+a1212)+a1313)+a2121)+a2222)+a2323)+a3131)+a3232)+a3333
u=k+a1111+a1212+a1313+a2121+a2222+a2323+a3131+a3232+a3333=u(A,W) The 3x3 kernel W is a function of the input A,
Figure 0007681348000003
Then, the function implementing this kernel can be decomposed into equivalent subfunctions as follows:
v 0 (a 11 )=k+a 11 w 11
v 1 (t, a 12 )=t+a 12 w 12
v 2 (t, a 13 )=t+a 13 w 13
v 3 (t, a 21 )=t+a 21 w 21
v 4 (t, a 22 )=t+a 21 w 22
v 5 (t, a 23 )=t+a 21 w 23
v 6 (t, a 31 )=t+a 31 w 21
v 7 (t, a 32 )=t+a 31 w 32
v 8 (t, a 33 )=t+a 31 w 33
u=v 8 (v 7 (v 6 (v 5 (v 4 ) (v 3 (v 2 (v 1 ( v 0 ( a 11 ), a 12 ), a 13 ), a 21 ), a 22 ), a 23 ), a 31 ), a 32 ), a 33 )
u=((((((k+a 11 w 11 )+a 12 w 12 )+a 13 w 13 )+a 21 w 21 )+a 22 w 22 )+a 23 w 23 )+a 31 w 31 )+a 32 w 32 )+a 33 w 33 )
u=k+a 11 w 11 +a 12 w 12 +a 13 w 13 +a 21 w 21 +a 22 w 22 +a 23 w 23 +a 31 w 31 +a 32 w 32 +a 33 w 33 =u (A, W)

次に、これらのサブ関数を計算するのに要求される回路は、下記の合成器の対応するアレイ

Figure 0007681348000004
として構成され、部分的に完了した和が、合成器の出力値
Figure 0007681348000005
として、維持される。 The circuitry required to compute these subfunctions then consists of a corresponding array of combiners:
Figure 0007681348000004
and the partially completed sum is the output value of the combiner
Figure 0007681348000005
It is maintained as such.

ここで、aは、入力ストリームからの現在値であり、ai-1からai-8までは、各場合において、aが個々の合成器の出力に対する位置に現れる特定のパッチに対して以前に処理された入力である。各合成器は、開口関数の値を、開口アレイにおいてその合成器が対応する位置を含めてその位置まで、計算することになる。各合成器は、入力ストリームの現在値を取り込み、それを以前の値と組み合わせて、入力アレイにおける部分的に処理されたパッチに対応する異なる部分和を生成し、その場合、現在の入力値は、開口関数における各合成器の位置に対応するそのパッチの相対位置に現れる。 where a i is the current value from the input stream, and a i-1 through a i-8 are in each case the previously processed inputs for the particular patch where a i appears in the position relative to the output of an individual combiner. Each combiner will calculate the value of the aperture function up to and including its corresponding position in the aperture array. Each combiner takes the current value of the input stream and combines it with previous values to generate different partial sums corresponding to partially processed patches in the input array, where the current input value appears in the relative position of that patch corresponding to each combiner's position in the aperture function.

このように、標準的な順序および精度で計算された開口関数の部分的な値は、完了した値が出力される準備ができるまで、経時的に、入力ストリームに維持されることになる。 In this way, partial values of the aperture function, calculated with standard order and precision, are kept in the input stream over time until the complete value is ready to be output.

この技法は、入力アレイの内部では極めて単純明快であるものの、入力アレイのエッジと重なるパッチに適用されるときに複雑化が生じ、その理由は、すべての入力が利用可能であるとは限らないときには、開口関数が異なって定義されるからである。CNNカーネルの場合には、追加的な演算が略され、入力としてゼロを用いることと等価である。本発明は、後述されるように、そのような例外を処理している間、合成器を通る部分和の定常フローを維持することに、関心を有している。 While this technique is quite straightforward within the input array, complications arise when applied to patches that overlap the edges of the input array, because the aperture function is defined differently when not all inputs are available. In the case of the CNN kernel, an additional operation is omitted, which is equivalent to using zero as the input. The present invention is interested in maintaining a steady flow of partial sums through the combiner while handling such exceptions, as will be described later.

図7は、入力ストリームを受け取り、入力ストリームを前処理し、結果を独特なデジタルデバイスを通して与えて、出力ストリームを生成する、本発明の一実施形態における構造と接続とを図解している図である。 Figure 7 illustrates the structure and connections of one embodiment of the present invention that receives an input stream, pre-processes the input stream, and presents the results through a unique digital device to generate an output stream.

入力チャネルセット701と関連する制御信号702とが共通の回路703によって用いられ、以後のサブ関数のための重みと入力チャネルセットとのあらゆる積を生成する。ソースチャネルの積は、次に、サブ関数計算回路704a、704b、および704cのバンクに分散され、これらの回路のそれぞれが、出力チャネルセット705の単一のチャネルを生成する。任意の個数の独立な出力チャネルが、共通回路703によってサポートされ得る。 The input channel set 701 and associated control signals 702 are used by common circuitry 703 to generate any products of the input channel set with weights for subsequent subfunctions. The products of the source channels are then distributed to a bank of subfunction computation circuits 704a, 704b, and 704c, each of which generates a single channel of the output channel set 705. Any number of independent output channels can be supported by the common circuitry 703.

図8Aは、図7の共通回路703における大規模乗算器801a、801b、および801cを図解している図であり、これらは、入力チャネルセット701の各チャネルを取り込み、定義されているサブ関数により要求される、倍数の粗なセットまたは完全なセットのいずれかを生成する。この図解は、RGB画像を処理する際の赤、緑、および青のピクセル値に対する場合のように、入力チャネルセットにおいて3つのチャネルを想定していることが注意されるべきである。他の実施形態では、1つ、2つ、または3つより多くのチャネルが存在することもあり得る。積802(大規模乗算器によって構築されたソース入力アレイ値の倍数)のうちの任意のものまたは全部が、以下の可能な詳細で説明される図9A、図9B、および図9Cに示されている合成器に対して利用可能にされ得る。合成器は、図8Aの大規模乗算器によって生成されるソースチャネルの積に対してサブ関数を行う本発明の独特なデバイスにおけるハードワイアード回路の例である。 Figure 8A is a diagram illustrating the large-scale multipliers 801a, 801b, and 801c in the common circuit 703 of Figure 7, which take each channel of the input channel set 701 and generate either a coarse or complete set of multiples as required by the sub-functions defined. It should be noted that this illustration assumes three channels in the input channel set, such as for red, green, and blue pixel values when processing an RGB image. In other embodiments, there may be one, two, or more than three channels. Any or all of the products 802 (multiples of the source input array values constructed by the large-scale multipliers) may be made available to the combiners shown in Figures 9A, 9B, and 9C, which are described in possible detail below. The combiners are examples of hardwired circuits in the unique device of the present invention that perform sub-functions on the products of the source channels generated by the large-scale multipliers of Figure 8A.

図8Bは、すべての出力チャネルのすべての合成器に通常のおよび例外的なハンドリング信号を提供する同期回路の構造を図解している図である。 Figure 8B is a diagram illustrating the structure of a synchronization circuit that provides normal and exceptional handling signals to all combiners of all output channels.

制御回路803は、すべての出力および制御カウンタを、ソース入力ストリームに同期させ、RSTまたはINITがアサートされると常に、出力および制御カウンタの初期状態への設定を実現する。 The control circuit 803 synchronizes all output and control counters to the source input stream and ensures that the output and control counters are set to their initial state whenever RST or INIT is asserted.

この例のcolSrcカウンタ805は、行にわたって列ごとにアレイの内部次元を数えあげ、ソースチャネルの積の各セットが処理されると、次に進む。この例では、各行の終点で、colSrcカウンタは、最も左側の位置(0)に戻り、rowSrcカウンタ804が1だけ進む。ソースアレイストリームの終点では、rowSrcおよびcolSrcカウンタが初期状態に戻り、入力の新たなアレイを受け取るように準備される。 The colSrc counter 805 in this example counts up the internal dimensions of the array by columns across the rows, advancing as each set of source channel products is processed. At the end of each row, in this example, the colSrc counter returns to the leftmost position (0) and the rowSrc counter 804 advances by one. At the end of the source array stream, the rowSrc and colSrc counters return to their initial states, ready to receive a new array of inputs.

この例では、colDstカウンタ807とrowDstカウンタ806とが、すべての出力チャネルに対して、これらのカウンタと類似の様態で共に作用する。colDstカウンタとrowDstカウンタとは、出力イネーブル信号(DSTEN)813によってイネーブルされ、後処理イネーブル信号(POSTEN)812がいつアサートされるかを決定する。 In this example, the colDst counter 807 and rowDst counter 806 work together in a similar manner for all output channels. The colDst counter and rowDst counter are enabled by the output enable signal (DSTEN) 813, which determines when the post-processing enable signal (POSTEN) 812 is asserted.

この例に示されているシステムは、開口関数の単一の出力を生成するが、通常は、ソース入力ストリームの次元と適合するチャネル出力のストリームセットを生成するのに用いられることになる、ということが注意されるべきである。各独立な出力チャネルは、大規模乗算器と共通制御ロジックとを介して、計算回路の少なくともいくつかを共有することになる。 It should be noted that while the system shown in this example produces a single output of the aperture function, typically it would be used to produce a set of channel output streams that match the dimensions of the source input stream. Each independent output channel would share at least some of the computational circuitry via large scale multipliers and common control logic.

出力イネーブル(DSTEN)信号813は、いつ最終化関数が合成器からの結果を受け入れ処理するかを制御する。最初のいくつかの行はソース入力アレイから受け入れられるが、有効な結果は、最終化関数に与えられない(図9Cを参照)。出力イネーブル信号813(DSTEN)は、rowDstおよびcolDstカウンタが有効な結果が利用可能であると示したときか、またはその代わりに、遅延した処理が結果を切り捨てたときのいずれかで、アサートされる。POSTEN信号812は、SRCEN信号801のタイミングに一致するように、連続的または周期的に、アサートされる。これらの信号は、ソース入力ストリームアレイの最終の行を処理するときには、すべての切り捨てられた合成器の最終出力をシーケンス化するように要求される。

Figure 0007681348000006
からM-2までの合成器の各行は、最終的な完全な出力と同時に、最終的な切り捨てられた出力を生成するが、最終的な完全な出力は、アレイストリームフォーマットと一致させるために、保持され、すべての完全なパッチ出力の後でシーケンシャルに送られなければならない。 The output enable (DSTEN) signal 813 controls when the finalization function accepts and processes the results from the combiner. The first few rows are accepted from the source input arrays, but no valid results are provided to the finalization function (see FIG. 9C). The output enable signal 813 (DSTEN) is asserted either when the rowDst and colDst counters indicate that valid results are available, or alternatively, when delayed processing has truncated the results. The POSTEN signal 812 is asserted continuously or periodically to match the timing of the SRCEN signal 801. These signals are required to sequence all truncated combiner final outputs when processing the last row of the source input stream arrays.
Figure 0007681348000006
Each row of the compositor from M to M−2 generates a final truncated output simultaneously with the final complete output, but the final complete output must be retained and sent sequentially after all the complete patch outputs to be consistent with the array stream format.

この例では、POSTENおよびDSTEN信号ならびにcolDstおよびrowDstカウンタ値は、SRCEN信号ならびにcolSrcおよびrowSrcカウンタ値と独立であり、すべての遅延した結果が最終化されて出力ストリームに送られるまで、遅延した結果の処理を継続する。このシステムは、以前の出力が完了されるまで新たな入力を受け入れることができることで、このシステムは、フレームの間で一時停止することなく、ソース入力ストリームの複数のフレームを処理することが可能になる。ソースストリームデータがアレイの終点に到達しない間は、POSTENはアサートされず、最終的な結果が、合成器から取り込まれる。ソースアレイの終点に到達した直後に、POSTEN信号が、各追加的な出力に対してアサートされ、後述する図9Cに示されているように、rowDstカウンタが出力行の全部の個数に到達するまで、切り捨てられた遅延線909、910a、および910bから最終的な結果が取り込まれるが、この時点で、rowDstおよびcolDstが、データの次のフレームのための準備として、初期の状態にリセットされる。 In this example, the POSTEN and DSTEN signals and the colDst and rowDst counter values are independent of the SRCEN signal and the colSrc and rowSrc counter values, and continue to process delayed results until all delayed results are finalized and sent to the output stream. The system can accept new inputs until the previous output is completed, allowing the system to process multiple frames of the source input stream without pausing between frames. POSTEN is not asserted and final results are captured from the compositor while the source stream data has not yet reached the end of the array. Immediately after reaching the end of the source array, the POSTEN signal is asserted for each additional output and final results are captured from the truncated delay lines 909, 910a, and 910b until the rowDst counter reaches the full number of output rows, as shown in FIG. 9C below, at which point rowDst and colDst are reset to their initial states in preparation for the next frame of data.

最初の行の信号808(ROWFST)は、ストリームからのソースデータセットがアレイの最初の行を表すことをrowSrcカウンタが示すと、アサートされる。 The first row signal 808 (ROWFST) is asserted when the rowSrc counter indicates that the source data set from the stream represents the first row of the array.

最後の行の信号809(ROWLST)は、ストリームからのソースデータセットがアレイの最後の行を表すことをrowSrcカウンタが示すと、アサートされる。 The last row signal 809 (ROWLST) is asserted when the rowSrc counter indicates that the source data set from the stream represents the last row of the array.

最初の列の信号810(COLFST)は、ストリームからのソースデータセットがアレイの各行の最初の列を表すことをcolSrcカウンタが示すと、アサートされる。 The first column signal 810 (COLFST) is asserted when the colSrc counter indicates that the source data set from the stream represents the first column of each row of the array.

最後の列の信号811(COLLST)は、ストリームからのソースデータセットがアレイの各行の最後の列を表すことをcolSrcカウンタが示すと、アサートされる。 The last column signal 811 (COLLST) is asserted when the colSrc counter indicates that the source data set from the stream represents the last column of each row of the array.

図9A、図9B、および図9Cは、上述した独特なデバイスを、一般的な場合に図解しており、開口関数のM×Nのサブ関数要素が、エッジと重なるものを含めて、R×Cの入力のアレイの各重なるM×Nのパッチに適用されているが、これらの入力は、R×Cの出力の対応するストリームを生成するように、規則的または不規則的な時間間隔で、関連する成分のストリームとして与えられており、各出力は、開口関数の規則によって特定されるように入力パッチに適用されたM×Nの関数要素の集合的な効果である。アレイの各位置に適用される関数要素は、このデバイスでは、図9A、図9B、および図9Cを合成したものに示されているように、M×Nのサブ関数のそれぞれに対するハードワイアードの合成器である。 9A, 9B, and 9C illustrate the unique device described above in a general case where M×N subfunction elements of an aperture function are applied to each overlapping M×N patch of an array of R×C inputs, including those that overlap the edges, which are provided as streams of related components at regular or irregular time intervals to generate a corresponding stream of R×C outputs, each output being the collective effect of the M×N function elements applied to the input patches as specified by the aperture function rule. The function elements applied to each location of the array are, in this device, hardwired synthesizers for each of the M×N subfunctions, as shown in the composite of FIGS. 9A, 9B, and 9C.

この回路の効果は、R×Cの入力のアレイの各位置における開口関数の再合成された値を、各パッチ上の開口関数を個々に計算するのに用いられ得るのと同じ一連の演算を用いて、計算することである。出力ストリームにおいてどの位置も望まれない場合には、完全に重なるのではなく、タイル張りのまたは間隔のあいた出力を生成するように、それらを除外するための回路が追加されることが可能である。 The effect of this circuit is to calculate a recombined value of the aperture function at each location of the RxC input array, using the same sequence of operations that would be used to calculate the aperture function on each patch individually. If any locations are not desired in the output stream, circuitry can be added to filter them out, producing a tiled or spaced output rather than perfectly overlapping.

ソースチャネルの積802とソース制御信号814とは、合成器901、902a、902b、902c、903a、903b、903c、904、905a、905b、905c、906、907a、907b、および907cのそれぞれにとって利用可能にされる。ソース制御信号は、また、遅延908a、908b、908c、908d、908e、および908fにも接続される。出力チャネル制御およびカウンタ815は、遅延909、910a、および910bに利用可能にされ、ならびに最終化関数911にも利用可能にされる。演算の順序が変更されない場合、そしてその場合に限り、与えられたクロック周波数にとって回路ルーティングを適切なものにするために、追加的なパイプライン段が、手動でまたは自動化されたツールによって、挿入されることがあり得る。タイミング制御およびカウンタ信号は、回路のすべての要素にとって利用可能であり、個々には示されていない。 The source channel products 802 and source control signals 814 are made available to each of the combiners 901, 902a, 902b, 902c, 903a, 903b, 903c, 904, 905a, 905b, 905c, 906, 907a, 907b, and 907c. The source control signals are also connected to delays 908a, 908b, 908c, 908d, 908e, and 908f. The output channel controls and counters 815 are made available to delays 909, 910a, and 910b, as well as to the finalization function 911. Additional pipeline stages may be inserted, either manually or by automated tools, to make the circuit routing appropriate for a given clock frequency, if and only if the order of operations is not changed. The timing control and counter signals are available to all elements of the circuit and are not shown individually.

各合成器は、特定の入力積か、またはその代わりに、セットの中の各入力値に対して積のうちの1つを選択し回路の実行の前に事前構成されているプログラマブルなマルチプレクサかのいずれかへの専用の直接的な接続を有する。各専用の接続は、単一の入力間隔で要求される積を表わすビットを運ぶのに十分な複数の配線を備えた並列な経路である。各セットの要素に対してどの積が各合成器に送られるのかを選択する、オプションの事前構成されたマルチプレクサを用いることにより、現場での重み値のアップグレードが可能になる。重みがアップグレードされることなく、デバイスの寿命を通じて固定されたままのときには、固定された接続が用いられる。重みの選択は動作の間に変化することはないため、固定または可変という積の選択の選定が、回路の動作に影響することはない。 Each combiner has a dedicated direct connection to either a specific input product or, alternatively, a programmable multiplexer that selects one of the products for each input value in the set and is preconfigured prior to execution of the circuit. Each dedicated connection is a parallel path with enough wires to carry the bits representing the product required for a single input interval. Optional preconfigured multiplexers that select which product is sent to each combiner for each set element allow for in-field upgrade of weight values. Fixed connections are used when weights are not upgraded and remain fixed throughout the life of the device. The choice of fixed or variable product selection does not affect the operation of the circuit, since the weight selection does not change during operation.

各合成器は、サブ関数の重みに対応する積のセットを、入力チャネルごとに1つ、大規模乗算器から受け取り、典型的には単純にそれらをすべて一緒に加算するというサブ関数の計算を行って、全体的な開口関数の値に対するこの合成器の寄与を形成する。各合成器は、また、開口関数の左側の列に対応するものを除いて、すぐ左の合成器から、部分的に完了した結果を受け取る。各合成器は、また、開口関数の一番上の行に対応するものを除いて、上にある行の合成器から、遅延し部分的に完了した結果も受け取り得る。各合成器は、高々、左側からの1つの接続と、上からの1つの遅延した接続とを有しているが、これらの各接続は、その合成器への入力として部分的に完了した結果を表わすビットを運ぶのに十分な複数の導体を有する並列な経路である。入力アレイのエッジに対する現在の入力パッチの位置に関するサブ関数の定義により、各合成器は、3つの動作のうちの1つを行う:この合成器の部分的な結果ともし存在するならば初期値との組合せ、またはこの合成器の部分的な結果と左側の合成器からの部分的な結果との組合せ、またはこの合成器の部分的な結果と遅延した部分的な結果との組合せである。補正された結果はその結果を含むのに十分な複数ビットの出力レジスタの中に置かれ、それを、続く入力間隔において右側の合成器ならびに/または遅延および最終化回路に対してとって利用可能とする。この補正された結果は、開口関数における合成器の位置と入力ストリーム位置の状態とに応じて、部分的な結果、完全な結果、または切り捨てられた結果のいずれかであり得る。 Each combiner receives a set of products corresponding to the subfunction weights from the large-scale multiplier, one for each input channel, and performs the subfunction calculations, typically simply adding them all together, to form that combiner's contribution to the overall aperture function value. Each combiner also receives the partially completed result from the combiner immediately to its left, except for the one corresponding to the left column of the aperture function. Each combiner may also receive a delayed partially completed result from the combiner in the row above, except for the one corresponding to the top row of the aperture function. Each combiner has at most one connection from the left and one delayed connection from above, but each of these connections is a parallel path with enough conductors to carry a bit representing a partially completed result as input to that combiner. Depending on the definition of the subfunctions in terms of the position of the current input patch relative to the edge of the input array, each combiner performs one of three operations: combine its partial result with an initial value if present, combine its partial result with a partial result from the left combiner, or combine its partial result with a delayed partial result. The corrected result is placed in an output register of multiple bits sufficient to contain the result and make it available to the right combiner and/or delay and finalization circuitry in the following input interval. This corrected result can be either a partial result, a complete result, or a truncated result, depending on the position of the combiner in the aperture function and the state of the input stream position.

合成器(0,0)は、開口関数において左側または上側に合成器が存在しないという点で独特であり、したがって、受け取られた各入力セットを用いて計算を常に初期化する。 The combiner (0,0) is unique in that there are no combiners to its left or above it in the aperture function, and therefore always initializes the calculation with each set of inputs received.

合成器(M-1,N-1)は、生成された結果が常に最終的な結果であるという点で独特であるが、すべての他の合成器903a、903b、または903cと構造的には同一である。 The combiner (M-1, N-1) is unique in that the result it produces is always the final result, but is structurally identical to all other combiners 903a, 903b, or 903c.

いくつかの合成器の出力は、遅延または事後処理のためにタッピングされる(tapped)が、その場合に、そのような遅延または事後処理を通る経路の幅は、この部分的な、切り捨てられた、または完了した結果を表わすビットを運ぶのに十分である。いくつかの合成器の出力は、右側の合成器によってのみ用いられる。合成器にとって内部的な計算と出力データフォーマットとは、出力の使用に応じた変更を要求することはない。 The outputs of some combiners are tapped for delay or post-processing, in which case the width of the path through such delay or post-processing is sufficient to carry the bits representing the partial, truncated, or complete result. The outputs of some combiners are used only by the right-hand combiner. Calculations and output data formats internal to the combiners do not require modification depending on the use of the outputs.

最終化回路は、いくつかの可能なソースからの結果を取り込み、いずれかの間隔においてどれを処理すべきかを選択するために、それらを多重化する。もし存在する場合には、最終化関数を適用した後で、最終的な出力の幅が低減されることがあり、次の入力ストリーム、本発明を含むシステムの最終出力、またはさらなる処理に用いられ得る出力のいずれかであり得る本実施形態の出力ストリームを形成することになる。 The finalization circuit takes results from several possible sources and multiplexes them to select which one to process in any given interval. After applying the finalization function, if present, the width of the final output may be reduced, forming the output stream of this embodiment, which may be either the next input stream, the final output of the system that includes the present invention, or an output that may be used for further processing.

本発明の実装形態における独特なデバイスにおけるデータパスが、図9A、図9B、および図9Cでは、矢印によって指示された方向と共に太線によって示され、省略記号が、その範囲における最後の列または行がその全体で反復される箇所を示している。ソースチャネルの積802からのデータパス(a)は、並列な導電性の経路のセットであり、1つの経路は、入力成分の各積に専用であって、各積は、入力成分に開口関数の複数の重み値のうちの1つを乗算した値である。5×5の開口関数が各入力成分に対して25個の重み値を有することは、明らかなはずである。R、G、およびBの色ピクセルのR×Cの入力アレイに対する開口関数という状況では、75個の重み値が存在する。したがって、ライン(a)は、この状況では、75個の並列な経路を有しており、各経路は、精度のために望まれるビット数を収容する幅の並列な導体のセットである。ライン(a)は、当該技術では、バスとは対照的に、ポイントツーポイント接続のセットと称される。 The data paths in the unique device of the present implementation are shown in Figures 9A, 9B, and 9C by bold lines with the direction indicated by the arrows, and an ellipsis indicates where the last column or row in the range is repeated in its entirety. The data path (a) from the source channel products 802 is a set of parallel conductive paths, one path dedicated to each product of input components, each product being the input component multiplied by one of the aperture function's weight values. It should be clear that a 5x5 aperture function has 25 weight values for each input component. In the context of an aperture function for an RxC input array of R, G, and B color pixels, there are 75 weight values. Thus, line (a) in this context has 75 parallel paths, each path being a set of parallel conductors of a width that accommodates the number of bits desired for precision. Line (a) is referred to in the art as a set of point-to-point connections, as opposed to a bus.

図9A、図9B、および図9Cにおけるデータパス(b)は、ライン(a)の延長ではなく、ライン(a)におけるパスの特定のサブセットへの専用の接続である。ライン(b)は、図9A、図9B、および図9Cにおけるどの例でもマークが付されているとは限らないが、構成回路のうちの個々の1つへの直接的な、ライン(a)からのどの接続も、専用のライン(b)である。専用とは、各合成器が、各入力成分とその合成器によって要求される重み値との積を運ぶ経路のそのサブセットに接続されている、ということである。 Data paths (b) in Figures 9A, 9B, and 9C are not extensions of lines (a), but are dedicated connections to a particular subset of paths in lines (a). Lines (b) are not necessarily marked in every example in Figures 9A, 9B, and 9C, but every connection from line (a) directly to an individual one of the constituent circuits is a dedicated line (b). Dedication means that each combiner is connected to its subset of paths that carry the products of each input component and the weight value required by that combiner.

図9A、図9B、および図9Cにおけるデータパス(c)は、各合成器における出力レジスタとその右側の次の合成器との間のポイントツーポイントパスである。これらは、本明細書の他の箇所で可能な詳細に説明されているように、典型的には部分和を運ぶ正確な幅の専用のパスである。どの経路(c)も図面でマークが付されているとは限らないが、この例では、ある合成器から別の合成器へのどの直接的な接続も、経路(c)であると想定され得る。出力経路(c)が代わりとなる回路に枝分かれする場合も存在するということに注意してほしい。 Data paths (c) in Figures 9A, 9B, and 9C are point-to-point paths between the output registers in each combiner and the next combiner to its right. These are dedicated paths of precise width that typically carry partial sums, as explained in possible detail elsewhere in this specification. Not every path (c) is marked in the drawing, but in this example, every direct connection from one combiner to another can be assumed to be a path (c). Note that there are cases where the output path (c) branches off to alternative circuits.

本発明の一実施形態における別の独特のデータパスには、図9A、図9B、および図9Cにおいて、(d)というマークが付されている。これらは、回路908Aから908fなどの遅延回路からの専用のデータパスであり、下の行または左側の合成器にもどるか、または直接的に他の遅延回路へのものか、のいずれかである。遅延回路は、合成器の行の右端において部分和を受け入れ、特定の数のソース間隔だけ部分和に対する通過を遅延させ、そして次にそれらの部分和を、適切な時点において他の合成器および/または他の処理に渡す、というように作られている。全体的な機能は、この明細書の他の箇所に、可能な詳細に説明されている。遅延回路の間の経路(d)は、同様に、特定のソース間隔で渡される典型的には部分和のための専用の経路である。 Another unique data path in one embodiment of the invention is marked (d) in Figures 9A, 9B, and 9C. These are dedicated data paths from delay circuits such as circuits 908A through 908f, either back to the combiner in the row below or to the left, or directly to another delay circuit. The delay circuits are designed to accept partial sums at the right end of the combiner row, delay the passage for the partial sums by a certain number of source intervals, and then pass those partial sums on to other combiners and/or other processing at the appropriate time. The overall functionality is described in possible detail elsewhere in this specification. The paths (d) between the delay circuits are likewise dedicated paths for partial sums typically passing at a certain source interval.

ある範囲の最後の行または列が要求されないようにMまたはNのいずれかが低減される場合には、最終の要素が除外され、その範囲における最初の行または列の実装は保持される。MもしくはNの一方または両方が2に低減される縮退の場合には、最初および最後の行または列は保持され、中間の行および列が除外される。MまたはNの一方が1に低減される縮退の場合には、最初および最後の合成器の実装は組み合わされ、特別な初期化は要求されない。MとNとの両方が1である特定の例では、開口関数の反転は要求されないが、大規模乗算器の使用は、依然、明確な利点を与える。 If either M or N is reduced such that the last row or column of a range is not required, the last element is dropped and the implementation of the first row or column in the range is retained. In the degenerate case where one or both of M or N are reduced to 2, the first and last row or column are retained and the intermediate rows and columns are dropped. In the degenerate case where one of M or N is reduced to 1, the implementations of the first and last combiner are combined and no special initialization is required. In the particular example where both M and N are 1, inversion of the aperture function is not required, but the use of a large scale multiplier still provides a clear advantage.

ソースチャネル積802は、R×Cアレイの、および何らかの事前定義されたシーケンスにおける特定の位置と関連して同時に与えられるバイナリ値の任意のセットであり得る。入力ストリームのソースチャネルは、開口関数の入力に対していかなる性質でも定義されている任意のフォーマットでの整数または分数値の任意の組合せであり得る。1つの例は、アレイサイズR×Cに一致するようにスケーリングされた1つ以上のビデオフレームおよび/もしくは任意の他のセンサ値からのピクセル値、ならびにCNN層の出力として生成された特徴成分値でもある。本発明を具現化する各ノードは主たるソース入力に加えてまたはその代わりに、他のノードからの出力を受け入れることができることは強調される。本発明の一実施形態では、第1のノードまたは複数のノードが、画像ピクセルをシステムの主たる入力として受け入れることは一般的であるが、R×Cアレイを表すストリームにフォーマット化されることが可能であれば、処理されるデータの性質に対する制約はまったく存在しない。 The source channel product 802 can be any set of binary values given simultaneously in relation to a particular position of the R×C array and in some predefined sequence. The source channels of the input stream can be any combination of integer or fractional values in any format defined in any nature for the input of the aperture function. One example is pixel values from one or more video frames and/or any other sensor values scaled to match the array size R×C, as well as feature component values generated as the output of a CNN layer. It is emphasized that each node embodying the invention can accept outputs from other nodes in addition to or instead of the main source input. In one embodiment of the present invention, there is no constraint on the nature of the data to be processed, as long as it can be formatted into a stream representing an R×C array, although it is common for the first node or nodes to accept image pixels as the main input of the system.

本発明のある実施形態では、ソースストリーム要素セットが、行が最初の順序(row-first order)で与えられ得、続く各列は、厳格に昇順で与えられている。本発明のいくつかの実施形態では、行および列は、水平または垂直軸に対応することは必要なく、列を上方向または下方向に、そして右から左へ走査することにおいて任意であり得る。行Rおよび列Cは、ここでは、単に、ストリームフォーマットの長軸と短軸とを指す。回路は、標準的なビデオの左から右、上から下という順序以外の向きで入力ストリームを生成する入力信号のために調整する必要はない。開口サブ関数の向きは、各入力アレイ位置に対して同一の出力を生成するように一致するようにされることが可能である。 In some embodiments of the invention, the source stream element sets may be presented in row-first order, with each subsequent column presented in strictly ascending order. In some embodiments of the invention, the rows and columns need not correspond to horizontal or vertical axes, but may be arbitrary in scanning the columns up or down and right to left. Rows R and columns C here simply refer to the major and minor axes of the stream format. The circuitry does not need to be adjusted for input signals that produce input streams in an orientation other than the standard video left-to-right, top-to-bottom order. The orientation of the aperture subfunctions can be made to match to produce identical outputs for each input array position.

この例では、開口関数によって要求されるソース値と重みとの積であるソース入力が、要素の各新たなセットが有効であるときを示す信号(SRCEN、図8Bを参照のこと)によって提示される。入力は、任意の時点で一時停止および再開され得る。いくつかの例では、入力の間の最小の間隔が定義され得るのであって、回路は、サイズおよび電力を低減するまたはさもなければ利益を得るためにマルチサイクルまたはよりハイスピードのクロックを用いることができ、出力チャネルセットは、同じ最小の間隔を用いることができる。 In this example, the source inputs, which are the products of the source values and weights required by the aperture function, are presented by a signal (SRCEN, see FIG. 8B) that indicates when each new set of elements is valid. The inputs can be paused and resumed at any time. In some examples, a minimum spacing between inputs can be defined, such that the circuit can use a multi-cycle or higher speed clock to reduce size and power or otherwise benefit, and the output channel sets can use the same minimum spacing.

共通の制御および同期回路803(図8B)が、カウンタと、R×Cアレイにおける現在の入力位置を記述する制御信号とを提供する。カウンタは、最終入力の後でも、追加の行および列のために実行を継続し得、最終化関数911(図9C)が入力の最後の行による入力列を超えて発生された累積した出力を出力することを助ける。(図12、図13、および図14ならびに以下の説明を参照のこと)制御信号は、すべての他の要素にとって利用可能であり、図9A、図9B、および図9Cには、示されていない。 A common control and synchronization circuit 803 (FIG. 8B) provides counters and control signals that describe the current input position in the R×C array. The counters may continue to run for additional rows and columns after the final input, helping the finalization function 911 (FIG. 9C) to output the accumulated output generated beyond the input column by the last row of inputs. (See FIGS. 12, 13, and 14 and the discussion below.) The control signals are available to all other elements and are not shown in FIGS. 9A, 9B, and 9C.

合成器回路901、902a、902b、902c、903a、903b、903c、904、905a、905b、905c、906、907a、907b、および907cは、各々、M×Nの関数におけるそれらの位置に割り当てられた開口関数のその部分を計算する。全部の合成器は、同じソースチャネルセットと、制御803によって提供された行および列カウンタ状態とに対して動作する。開口関数のデータハンドリングの詳細は、追加的な図面を参照しながら、後で説明される。 The combiner circuits 901, 902a, 902b, 902c, 903a, 903b, 903c, 904, 905a, 905b, 905c, 906, 907a, 907b, and 907c each calculate that portion of the aperture function assigned to their position in the MxN function. All combiners operate on the same set of source channels and row and column counter states provided by control 803. Details of the data handling of the aperture functions are described below with reference to additional figures.

ソース入力セットが入力ストリームから受け取られると、入力ストリームにおける現在位置と重なるすべてのパッチに適用される開口関数の部分的に完了した計算が、合成器のM×Nアレイの内部で、左から右へおよび上から下へ渡される。この動作は、経時的に開口関数の完全な計算を累積し、入力アレイの各パッチ上の開口関数の正しい実装を出力して、その開口関数がアレイから直接的に入力値を読み出すことによって実装された場合にそうであるのと同一の演算の順序を通して同じ結果を生成する。ランダムなアクセスを、ストリームアクセスを伴うアレイに置き換えることは、本発明の重要な特徴であり、ランダムアクセスメモリへの冗長的なアクセスへの必要性を排除する。 As a set of source inputs is received from the input stream, the partially completed computations of the aperture function to be applied to all patches that overlap the current position in the input stream are passed from left to right and top to bottom inside the MxN array of the synthesizer. This operation accumulates the complete computation of the aperture function over time and outputs the correct implementation of the aperture function on each patch of the input array, producing the same result through the same sequence of operations as if the aperture function was implemented by reading the input values directly from the array. The replacement of random access with an array with stream access is a key feature of the invention, eliminating the need for redundant accesses to random access memory.

合成器の右側の列

Figure 0007681348000007
からN-1では、一番下の行を除いて、部分的な出力が、遅延段908a、908b、908c、908d、908e、および908fに渡され、それらの遅延段では、それらの部分的な出力が、パッチのより下側の行に対応する入力が受け取られるときに同じ論理パッチ位置のさらなる計算においてそれらが利用されることが可能であるように、必要とされる個数の入力間隔の間、ホールドされる。 Right column of the synthesizer
Figure 0007681348000007
For rows N through N-1, except for the bottom row, partial outputs are passed to delay stages 908a, 908b, 908c, 908d, 908e, and 908f, where they are held for the required number of input intervals so that they can be utilized in further calculations of the same logical patch position when inputs corresponding to lower rows of the patch are received.

各入力行の最後の列C-1を処理するときには、列

Figure 0007681348000008
からN-1および行0からM-2からのすべての合成器は、また、入力アレイの最後の列を含むパッチのその行のための最後の計算も表し、それらの値は、遅延段908a、908b、908c、908d、908e、および908fに転送され、以後の入力行が受け取られるときに開口関数の計算を継続する正しい時間で、それらの値が利用可能となるように、特別の処理がシーケンスに挿入されることを要求する。図11と関連の説明とを参照のこと。 When processing the last column C-1 of each input row,
Figure 0007681348000008
All combiners from rows 1 to N-1 and 0 to M-2 also represent the final calculation for that row of the patch containing the last column of the input array, and their values are transferred to delay stages 908a, 908b, 908c, 908d, 908e, and 908f, requiring special processing to be inserted into the sequence so that they are available at the correct time to continue the aperture function calculation as subsequent input rows are received. See FIG. 11 and associated discussion.

この例では、(M-1,N-1)位置における合成器903cは、常に、M×Nのサブ関数要素の完了した累積を生成するが、さもなければその構成903cの他の合成器からは区別不可能である。上述したように、各入力行の最後の列C-1を処理するときには、列

Figure 0007681348000009
からN-1および行M-1からのすべての合成器は、また開口関数要素の完了したが切り捨てられている累積を表し、出力ストリームに挿入されるための処理のために、最終化関数911に直接に送られる。 In this example, the combiner 903c in the (M-1, N-1) position always produces a completed accumulation of M by N subfunction elements, but is otherwise indistinguishable from the other combiners in that configuration 903c. As mentioned above, when processing the last column C-1 of each input row, the column
Figure 0007681348000009
All combiners from rows N-1 to M-1 also represent completed but truncated accumulations of aperture function elements and are sent directly to a finalization function 911 for processing to be inserted into the output stream.

この例では、入力の最後の行R-1を処理している間、行

Figure 0007681348000010
からM-1までの列N-1における合成器は、また、サブ関数要素の計算の完了したが切り捨てられた累積を表し、切り捨てられた出力遅延ライン909、910a、および910bに送られて、行M-1からの主たる出力が911において最終化されるまで保持される。図8Bに示されているような制御信号を用いて、切り捨てられた出力の追加的なM-
Figure 0007681348000011
個の行が、遅延ライン909、910a、および910bから伝送され、911で最終化され、究極的には、任意の要求されるタイミング間隔で、出力ストリームシンク705に提供される。 In this example, while processing the last row of the input, R-1,
Figure 0007681348000010
The combiners in column N-1 through M-1 also represent a completed but truncated accumulation of the sub-function element calculations and are sent to truncated output delay lines 909, 910a, and 910b to be held until the main output from row M-1 is finalized at 911. Additional M-th orders of the truncated outputs can be generated using control signals such as those shown in FIG.
Figure 0007681348000011
The rows are transmitted through delay lines 909, 910a, and 910b, finalized at 911, and ultimately provided to the output stream sink 705 at any desired timing interval.

図15は、5×5の畳み込みノードを実装する本発明の一実施形態におけるパイプライン化された動作の特定の場合を図解している図である。 Figure 15 illustrates a specific case of pipelined operation in one embodiment of the present invention implementing a 5x5 convolution node.

ソースチャネル積802とソース制御信号(ここでは図示せず)とが、合成器901、902a、902b、903a、903b、904、905a、905b、906、907a、および907bのそれぞれに利用可能にされている。ソース制御信号は、また、遅延908a、908b、908c、および908dにも接続される。出力チャネル制御およびカウンタは、遅延909、910aに利用可能にされ、ならびに最終化911にも利用可能にされている。演算の順序が変更されない場合、そしてその場合に限り、与えられたクロック周波数にとって回路ルーティングを適切なものにするために、追加的なパイプライン段が、手動でまたは自動化されたツールによって、挿入されることがあり得る。タイミング制御およびカウンタ信号は、回路のすべての要素にとって利用可能であり、個々には示されていない。 Source channel products 802 and source control signals (not shown here) are made available to each of the combiners 901, 902a, 902b, 903a, 903b, 904, 905a, 905b, 906, 907a, and 907b. The source control signals are also connected to delays 908a, 908b, 908c, and 908d. Output channel controls and counters are made available to delays 909, 910a, as well as to finalization 911. If, and only if, the order of operations is not changed, additional pipeline stages may be inserted, either manually or by automated tools, to make the circuit routing appropriate for a given clock frequency. Timing control and counter signals are available to all elements of the circuit and are not shown individually.

ソースチャネル積の各セットが順に与えられると、各合成器は、開口関数における位置に対応するサブ関数を計算するために、適切な積を選択する。入力アレイにおける現在の位置と交差する各5×5のパッチは、その位置の積に基づき、計算を含むように補正される。正味の効果は、パッチに対するすべての演算が完了する各時点まで、入力の単一のソースストリームが合成器の間で渡される部分計算の5×5のストリームの並列なセットに変換されるということであり、これは、通常は合成器(4,4)で生じ、入力アレイの右側または下方のエッジを処理するときには、他の合成器で時々生じる。 Given each set of source channel products in turn, each combiner selects the appropriate product to compute the sub-function that corresponds to its position in the aperture function. Each 5x5 patch that intersects with the current position in the input array is corrected to include a computation based on the product for that position. The net effect is that a single source stream of input is transformed into a parallel set of 5x5 streams of partial computations that are passed between combiners, until each time all operations for a patch are completed, this typically occurs at combiner (4,4), and occasionally at other combiners when processing the right or lower edge of the input array.

入力アレイの幅だけが遅延要素のサイズに影響するということに注意してほしいが、この理由は、それぞれが、1つの列の入力と次の行での同じ列における入力とを受け取ることに対応するソース入力間隔の個数に対する部分的な結果を遅延させなければならないからである。 Note that only the width of the input array affects the size of the delay elements, because each one must delay the partial result for a number of source input intervals corresponding to receiving an input in one column and an input in the same column in the next row.

図16は、本発明のICの4×4の実施形態を図解している。カーネルは1つの行もしくは列に奇数個のサブ関数をまたは偶数個のサブ関数を有し得る、ということが知られている。出力処理の追加のラインが除外されているため、図9Cの一般的な場合に示され、そして図15に5×5の開口関数(行および列が奇数個)という特定の場合について示されている要素910*は、まったく生じないという意味で、この偶数個のバージョンは縮退である。 Figure 16 illustrates a 4x4 embodiment of the IC of the present invention. It is noted that the kernel can have an odd number of subfunctions or an even number of subfunctions in a row or column. This even version is degenerate in the sense that the element 910* shown in the general case of Figure 9C and shown in Figure 15 for the specific case of a 5x5 aperture function (odd number of rows and columns) does not occur at all, since an additional line of output processing is eliminated.

カーネルの奇数サイズは、両方の方向について中心の周囲で対称であるが、偶数サイズの場合には、中心がオフセットしている。本発明の実装形態におけるICは、偶数サイズに対しては、中心を、

Figure 0007681348000012
というように本来の分割よりも右側dで下方向に、置いている。本発明の代替の実施形態では、本来の分割よりも中心を上方向かつ左側に位置決めするように回路が修正されることがあり得る。 Odd sizes of kernels are symmetric around the center in both directions, but for even sizes the center is offset. In the implementation of the present invention, the IC calculates the center as
Figure 0007681348000012
In an alternative embodiment of the invention, the circuit could be modified to position the center above and to the left of the original division.

これらのコメント以外では、図16の特定のICの動作は、説明されている他のバージョンに対して説明されている通りである。 Other than these comments, the operation of the particular IC in FIG. 16 is as described for the other versions described.

図10Aは、本発明の一実施形態における図9Aおよび図9Bまたは図15の合成器905a、905b、および905cの内部構造および動作を図解している図である。チャネルセットにおけるストリーム値のソース入力セット1001は、開口関数の要求に応じて、単一またはデータタイプの混合であるが、回路1004による個々の合成器の寄与を計算するのに用いられる。 FIG. 10A illustrates the internal structure and operation of combiners 905a, 905b, and 905c of FIGS. 9A and 9B or 15 in one embodiment of the present invention. A source input set 1001 of stream values in a channel set, either single or a mix of data types as required by the aperture function, is used to calculate the individual combiner contributions by circuit 1004.

回路1005は、1004の出力を利用し、サブ関数の初期値を計算する。回路1006は、1004の出力とすぐ左の合成器によって先に計算された部分的な値1002とを利用し、サブ関数の進行中の部分的な値を計算する。回路1007は、1004の出力とすぐ上の合成器の行にある908a、908b、908c、908d、908e、および908fのうちの1つからの先に計算され遅延された部分的な値1003とを利用し、サブ関数の進行中の部分的な値を計算する。 Circuit 1005 uses the output of 1004 to calculate an initial value of the subfunction. Circuit 1006 uses the output of 1004 and a previously calculated partial value 1002 from the combiner immediately to the left to calculate an ongoing partial value of the subfunction. Circuit 1007 uses the output of 1004 and a previously calculated delayed partial value 1003 from one of 908a, 908b, 908c, 908d, 908e, and 908f in the row of combiners immediately above to calculate an ongoing partial value of the subfunction.

回路1005、1006、および1007の演算は、共有されたそれらの出力を用いて、回路1004の演算と同時に生じ得る(同じクロックサイクル)か、または同じクロックによって同期化された一連のパイプライン段によって実装され得る。 The operations of circuits 1005, 1006, and 1007 may occur simultaneously (same clock cycle) with the operations of circuit 1004, with their outputs shared, or may be implemented by a series of pipeline stages synchronized by the same clock.

マルチプレクサ1008は、部分的な結果のどのバリアントが合成器1009の出力としてのサブ関数の部分的な値として転送されるのかを選択する。COLFST811がアサートされていない場合には1006の出力が選択され、そうではなくてROWFST808がアサートされていない場合には1007の出力が選択され、それ以外の場合には、1005の出力が選択される。 Multiplexer 1008 selects which variant of the partial result is forwarded as the partial value of the subfunction as the output of combiner 1009. If COLFST 811 is not asserted then the output of 1006 is selected, otherwise if ROWFST 808 is not asserted then the output of 1007 is selected, otherwise the output of 1005 is selected.

この条件付きの処理は、R×Cのアレイの値のセットを表しているソース入力ストリームのエッジを超えてM×Nの開口関数が延長することを可能にすることの、自然な結果である。最も左側のエッジまたは最も上方のエッジにおける単一の位置は、これらのエッジと接触するまたは重なるいくつかのパッチに対する開口関数の最初の計算可能な要素となる。よって、重なっているパッチの最初の計算可能な位置における各合成器およびどの合成器も、開口関数のベース値を用いて初期化されることが要求される。さらに、そのパッチの以後の行の最初の計算可能な位置における各合成器およびどの合成器も、直前の行からの計算された同じパッチの部分的な値の先行する値と組み合わせられなければならない。このようにして、最も上方および最も左側のエッジと重なる、接触する、およびそれらの内部にあるすべてのパッチの正しい計算が、単一の回路を用いて保証される。 This conditional processing is a natural consequence of allowing the MxN aperture function to extend beyond the edges of the source input stream, which represents a set of values in an RxC array. A single location at the leftmost or topmost edge becomes the first computable element of the aperture function for some patches that touch or overlap these edges. Thus, each and every compositor at the first computable location of an overlapping patch is required to be initialized with the base value of the aperture function. Furthermore, each and every compositor at the first computable location of a subsequent row of that patch must be combined with the preceding value of the computed partial value of the same patch from the previous row. In this way, the correct computation of all patches that overlap, touch, and are within the topmost and leftmost edges is guaranteed using a single circuit.

図10Bから図10Gでは、図10Aで導入され同じ参照番号を用いているすべての要素が、図10Aを参照して説明されたものと機能的に同一である。 In Figures 10B through 10G, all elements introduced in Figure 10A and using the same reference numbers are functionally identical to those described with reference to Figure 10A.

図10Bは、本発明の一実施形態における図9Aおよび図9Bまたは図15の合成器902a、902b、および902cの内部構造および動作を図解している図である。ストリーム値のソース入力セット1001は、開口関数への合成器の寄与を計算するために、回路1004によって用いられる。 FIG. 10B illustrates the internal structure and operation of combiners 902a, 902b, and 902c of FIGS. 9A and 9B or 15 in one embodiment of the present invention. A source input set 1001 of stream values is used by circuit 1004 to calculate the combiner contribution to the aperture function.

回路1005は、1004の出力を利用し、サブ関数の初期値を計算し、回路1006は、1004の出力とすぐ左の合成器によって先に計算された部分的な値1002とを利用し、サブ関数の進行中の部分的な値を計算する。 Circuit 1005 uses the output of 1004 to calculate the initial value of the subfunction, and circuit 1006 uses the output of 1004 and the partial value 1002 previously calculated by the combiner to the immediate left to calculate the ongoing partial value of the subfunction.

マルチプレクサ1010は、部分的な結果のどのバリアントが合成器1009の出力としてのサブ関数の部分的な値として転送されるのかを選択する。COLFST811がアサートされていない場合には1006の出力が選択され、それ以外の場合には、1005の出力が選択される。 Multiplexer 1010 selects which variant of the partial result is forwarded as the partial value of the subfunction as the output of combiner 1009. If COLFST 811 is not asserted, the output of 1006 is selected, otherwise the output of 1005 is selected.

図10Cは、本発明の一実施形態における図9Aまたは図15の合成器904の内部構造および動作を図解している図である。ストリーム値のソース入力セット1001は、個々の合成器の寄与を計算するために、回路1004によって用いられる。 FIG. 10C illustrates the internal structure and operation of the combiner 904 of FIG. 9A or FIG. 15 in one embodiment of the present invention. A source input set 1001 of stream values is used by the circuit 1004 to calculate the contributions of the individual combiners.

回路1005は、1004の出力を利用し、サブ関数の初期値を計算し、回路1007は、1004の出力とすぐ上の合成器の行にある908a、908b、908c、908d、908e、および908fのうちの1つからの先に計算され遅延された部分的な値1003とを利用し、サブ関数の進行中の部分的な値を計算する。 Circuit 1005 uses the output of 1004 to calculate an initial value of the sub-function, and circuit 1007 uses the output of 1004 and a previously calculated delayed partial value 1003 from one of 908a, 908b, 908c, 908d, 908e, and 908f in the immediately above combiner row to calculate an ongoing partial value of the sub-function.

マルチプレクサ1011は、部分的な結果のどのバリアントが合成器1009の出力としてのサブ関数の部分的な値として転送されるのかを選択する。ROWFST808がアサートされていない場合には1007の出力が選択され、それ以外の場合には、1005の出力が選択される。 Multiplexer 1011 selects which variant of the partial result is forwarded as the partial value of the subfunction as the output of combiner 1009. If ROWFST 808 is not asserted, the output of 1007 is selected, otherwise the output of 1005 is selected.

図10Dは、本発明の一実施形態における図9Aまたは図15の合成器901の内部構造および動作を図解している図である。ストリーム値のソース入力セット1001は、個々の合成器の寄与を計算するために、回路1004によって用いられる。 FIG. 10D illustrates the internal structure and operation of the combiner 901 of FIG. 9A or FIG. 15 in one embodiment of the present invention. A source input set of stream values 1001 is used by circuit 1004 to calculate the contributions of the individual combiners.

回路1005は、1004の出力を用いてサブ関数の初期値を計算し、それが、合成器1009の出力としてのサブ関数の部分的な値として、転送される。 Circuit 1005 uses the output of 1004 to calculate the initial value of the subfunction, which is then forwarded as the partial value of the subfunction as the output of the combiner 1009.

セル901(図9A、図15)は、用いられる場合には、どの完全なまたは切り捨てられたパッチにおいても常に最初の値であり、よって、そのパッチに対する初期化値を常に生成する。 Cell 901 (Figures 9A, 15), if used, is always the first value in any complete or truncated patch and therefore always generates the initialization value for that patch.

図10Eは、本発明の一実施形態における図9Bおよび図9Cまたは図15の合成器903a、903b、および903cの内部構造および動作を図解している図である。ストリーム値のソース入力セット1001は、個々の合成器の寄与を計算するために、回路1004によって用いられる。 FIG. 10E illustrates the internal structure and operation of combiners 903a, 903b, and 903c of FIGS. 9B and 9C or 15 in one embodiment of the present invention. A source input set 1001 of stream values is used by circuit 1004 to calculate the contributions of the individual combiners.

回路1006は、回路1004の出力と左側に隣接する合成器によって先に計算された部分的な値1002とを用いて、サブ関数の進行中の部分的な値を計算し、これは、合成器1009の出力としてのサブ関数の部分的な値として転送される。 Circuit 1006 uses the output of circuit 1004 and the partial value 1002 previously calculated by the adjacent combiner to the left to calculate the ongoing partial value of the subfunction, which is forwarded as the partial value of the subfunction as the output of combiner 1009.

図10Fは、本発明の一実施形態における図9Aおよび図9Bまたは図15の合成器907a、907b、および907cの内部構造および動作を図解している図である。ストリーム値のソース入力セット1001は、個々の合成器1004の寄与を計算するために用いられる。 FIG. 10F illustrates the internal structure and operation of the combiners 907a, 907b, and 907c of FIGS. 9A and 9B or 15 in one embodiment of the present invention. A source input set 1001 of stream values is used to calculate the contributions of the individual combiners 1004.

回路1006は、回路1004の出力と左側に隣接する合成器によって先に計算された部分的な値1002とを用いて、サブ関数の進行中の部分的な値を計算する。回路1007は、1004の出力と上方に隣接する合成器の行における908a、908b、908c、908d、908e、および908fのうちの1つからの先に計算され遅延された部分的な値1003とを用いて、サブ関数の進行中の部分的な値を計算する。 Circuit 1006 uses the output of circuit 1004 and a previously calculated partial value 1002 from the adjacent combiner to the left to calculate the ongoing partial value of the subfunction. Circuit 1007 uses the output of 1004 and a previously calculated delayed partial value 1003 from one of 908a, 908b, 908c, 908d, 908e, and 908f in the row of the adjacent combiners above to calculate the ongoing partial value of the subfunction.

マルチプレクサ1012は、部分的な結果のどのバリアントが合成器1009の出力としてのサブ関数の部分的な値として転送されるのかを選択する。COLFST811がアサートされていない場合には1006の出力が選択され、それ以外の場合には、1007の出力が選択される。 Multiplexer 1012 selects which variant of the partial result is forwarded as the partial value of the subfunction as the output of combiner 1009. If COLFST 811 is not asserted, the output of 1006 is selected, otherwise the output of 1007 is selected.

図10Gは、本発明の一実施形態における図9Aまたは図15の合成器906の内部構造および動作を図解している図である。ストリーム値のソース入力セット1001は、個々の合成器の寄与を計算するために、回路1004によって用いられる。 FIG. 10G illustrates the internal structure and operation of the combiner 906 of FIG. 9A or FIG. 15 in one embodiment of the present invention. A source input set of stream values 1001 is used by circuit 1004 to calculate the contributions of the individual combiners.

回路1007は、1004の出力とすぐ上の合成器の行における908a、908b、908c、908d、908e、および908fのうちの1つからの先に計算され遅延された部分的な値1003とを利用し、サブ関数の進行中の部分的な値を計算する。回路1007の出力は、合成器1009の出力としてのサブ関数の部分的な値として、転送される。 Circuit 1007 uses the output of 1004 and a previously calculated delayed partial value 1003 from one of 908a, 908b, 908c, 908d, 908e, and 908f in the row of combiners immediately above to calculate the ongoing partial value of the sub-function. The output of circuit 1007 is forwarded as the partial value of the sub-function as the output of combiner 1009.

図11は、内部行遅延ライン908a、908b、908c、908d、908e、および908f(図9C)の内部構造および動作を図解している図である。遅延ラインは、次の行において用いられるために合成器の各行からの部分的に計算された結果を、保持するのに用いられる。 Figure 11 is a diagram illustrating the internal structure and operation of internal row delay lines 908a, 908b, 908c, 908d, 908e, and 908f (Figure 9C). The delay lines are used to hold the partially computed results from each row of the combiner for use in the next row.

COLLSTがアサートされたとき、ソース入力ストリームの現在位置は、最も右側のエッジにあり、行

Figure 0007681348000013
(1101)からN-2(1102)の合成器の出力は、それぞれレジスタ1104から1105によって将来の参照のために、保持される。 When COLLST is asserted, the current position of the source input stream is at the rightmost edge and
Figure 0007681348000013
The outputs of combiners 1101 through N-2 1102 are held for future reference by registers 1104 through 1105, respectively.

ソース入力ストリームの現在位置、colSrc、が

Figure 0007681348000014
よりも小さい場合には、マルチプレクサ1106は、インデクス計算(N-2)-colSrcによって定義される右から左への逆の順序で、保持された値から選択し、それ以外の場合には、行mの最後の合成器(1103)から現在値を選択する。 The current position of the source input stream, colSrc, is
Figure 0007681348000014
If N is less than 1, then multiplexer 1106 selects from the stored values in reverse right-to-left order defined by the index calculation (N-2)-colSrc, otherwise it selects the current value from the last combiner (1103) of row m.

ソース入力ストリームの列位置が

Figure 0007681348000015
より小さいときは、行の最も右側の合成器は有効データを含まないことになり、これにより、これらの時間スロットは保持されたデータを挿入するために利用可能にされることに注意してほしい。 The column position of the source input stream is
Figure 0007681348000015
Note that when it is less than 1, the rightmost combiners in the row will not contain valid data, thereby making those time slots available for inserting held data.

マルチプレクサ1106によって選択された部分的な出力は、C-N位置を有する先入れ先出し(FIFO)回路1107に供給されるが、ソース入力ストリーム位置は、厳密に1つの値が挿入されるように処理され、1つの値は挿入されたのと同じ順序で取り出されるというように、この回路は設定されている。ある位置からの部分的に完了した結果は、ソース入力ストリームが次の行における同じパッチ位置に戻るまで要求されないから、これは、ある行によって計算された部分的な結果が正確に必要とされるときに次の行に与えられるというように、遅延をもたらす。 The partial output selected by multiplexer 1106 is fed to a first-in-first-out (FIFO) circuit 1107 with C-N positions, which is arranged such that the source input stream positions are processed such that exactly one value is inserted, and the values are removed in the same order that they were inserted. Because a partially completed result from one position is not required until the source input stream returns to the same patch position in the next row, this introduces a delay such that the partial result calculated by one row is given to the next row exactly when it is needed.

マルチプレクサ1106によって選択された部分的な出力は、また、同じ値(1114)を、最終的な結果の遅延ライン909、910a、および910bの中に与える。 The partial output selected by multiplexer 1106 also provides the same value (1114) into the final result delay lines 909, 910a, and 910b.

FIFO1107から取り出された部分的な出力は、1108において、次の行における最も左側の合成器(1111)と一連の並列アクセスレジスタ1109から1110との両方にルーティングされるが、一連の並列アクセスレジスタ1109から1110は、データがこのレジスタチェーンを通過される際に、1つのソース入力ストリーム間隔だけ部分的な出力をさらに遅延させる。 The partial output removed from FIFO 1107 is routed at 1108 to both the left-most combiner in the next row (1111) and to a series of parallel access registers 1109 to 1110 which further delay the partial output by one source input stream interval as the data is passed through this register chain.

ソース入力ストリームの現在位置が最も左側のエッジにあるときには、FIFOは、1108において出力データを方向付け、遅延された結果1109から1110は、それぞれ1111、1112から1113において、次の行のセルに利用可能にされる。 When the current position of the source input stream is at the leftmost edge, the FIFO directs the output data at 1108 and the delayed results 1109 to 1110 are made available to the next row of cells at 1111, 1112 to 1113, respectively.

ソース入力アレイストリーム位置が右側のエッジに近いときには、マルチプレクサ1106によってFIFO1107に挿入されたソース入力アレイストリームの右側からの追加の値はパス1111を介してのみアクセスされ、一方、ソース入力アレイストリームが通常のようにパス1103から挿入されたデータにアクセスするために最も左側の位置にあるときには、追加的な並列パス1112から1113だけが用いられる、ということに注意してほしい。右側エッジの処理と左側エッジの処理との間の構造および要件に関する明らかな類似性は、ソース入力ストリームアレイの右および左のエッジとのサブ関数の重なりの対称性の自然な結果である。Nについての値が偶数であるときには、右および左のエッジをサポートするために処理される追加のセルの個数は、同じではない。 Note that when the source input array stream position is close to the right edge, the additional values from the right side of the source input array stream inserted into FIFO 1107 by multiplexer 1106 are accessed only via path 1111, whereas when the source input array stream is in the leftmost position to access data inserted from path 1103 as usual, only the additional parallel paths 1112 to 1113 are used. The apparent similarity in structure and requirements between processing the right edge and the left edge is a natural consequence of the symmetry of the overlap of subfunctions with the right and left edges of the source input stream array. When the value for N is even, the number of additional cells processed to support the right and left edges is not the same.

図12は、最終的な切り捨てられた結果の遅延ライン909(図9C)の内部構造および動作を図解している図である。 Figure 12 illustrates the internal structure and operation of the final truncated result delay line 909 (Figure 9C).

ソース入力ストリームアレイの最後の行を処理するときには、内部の行遅延ライン908dの補助出力1201からの部分的な結果が、切り捨てられたパッチの最終行の最終結果であると考えられ、要素の個数Cがソース入力ストリームアレイの幅と等しいFIFO1202に保持される。 When processing the last row of the source input stream array, the partial result from the auxiliary output 1201 of the internal row delay line 908d is considered to be the final result of the last row of the truncated patch and is held in a FIFO 1202 whose number of elements C is equal to the width of the source input stream array.

切り捨てられたパッチの最終結果を記録した直後に、FIFO1202の出力は、1203を介してさらなる遅延ライン910aへ伝送されるか、またはMの値がいかなる他の遅延ラインも介入しないようなものである場合には、最終処理911へ直接に伝送される。 Immediately after recording the final result of the truncated patch, the output of FIFO 1202 is transmitted to a further delay line 910a via 1203, or directly to the final processing 911 if the value of M is such that no other delay line is involved.

図13は、最終的な切り捨てられた結果の遅延ライン910aおよび910bの内部構造および動作を図解している図である。 Figure 13 illustrates the internal structure and operation of the final truncated result delay lines 910a and 910b.

ソース入力ストリームアレイの最後の行を処理するときには、内部の行遅延ライン908eから908fの補助出力からの部分的な結果1301が、切り捨てられたパッチの最終行の最終結果であると考えられ、要素の個数Cがソース入力ストリームアレイの幅と等しいFIFO1304に保持される。 When processing the last row of the source input stream array, the partial result 1301 from the auxiliary outputs of the internal row delay lines 908e to 908f is considered to be the final result of the last row of the truncated patch and is held in a FIFO 1304 whose number of elements C is equal to the width of the source input stream array.

POSTENがアサートされるときには、マルチプレクサ1303は、1302からの値を取り込むことから、上の行の最終的な切り捨てられた遅延ラインからの値を取り込むことに切り換えるが、これは、すべての先行する出力結果の順序付けと適合する、行が最初の順序で最終的な切り捨てられた結果を与える、という効果を有する。 When POSTEN is asserted, multiplexer 1303 switches from taking values from 1302 to taking values from the final truncated delay line of the row above, which has the effect of giving the final truncated result in row-original order that matches the ordering of all preceding output results.

POSTENが最初にアサートされる入力フレームのサイクルの間は、FIFO1202および1304の内容は、ソース入力ストリームアレイの最後の行と重なる切り捨てられたパッチの最終値である、ということに注意してほしい。そのサイクルの前には、FIFO1202および1304に含まれているいかなるデータも処理されないため、ソース入力ストリームアレイの最終行を処理しないという実行のいかなる抑制も、任意選択である。 Note that during the cycle of the input frame in which POSTEN is first asserted, the contents of FIFOs 1202 and 1304 are the final values of the truncated patch that overlaps the last row of the source input stream array. Any inhibition of execution in not processing the last row of the source input stream array is optional, since no data contained in FIFOs 1202 and 1304 is processed prior to that cycle.

切り捨てられたパッチの最終結果を記録した直後に、FIFO1304の出力は、1305を介してさらなる遅延ラインへ伝送されるか、またはMの値がいかなる他の遅延ラインも介入しないようなものである場合には、最終処理911へ直接に伝送される。 Immediately after recording the final result of the truncated patch, the output of FIFO 1304 is either transmitted to a further delay line via 1305, or directly to final processing 911 if the value of M is such that no other delay lines are involved.

図14は、すべての完全なおよび切り捨てられた結果の最終処理の内部構造および動作を図解している図である。 Figure 14 illustrates the internal structure and operation of the final processing of all complete and truncated results.

図11におけるように、そして同一の構成および機能を用いて、ソース入力ストリームの現在位置が最も右側のエッジにある場合には、

Figure 0007681348000016
(1101)からN-2(1102)までの行M-1のセルの出力は、それぞれレジスタ1104から1105によって将来の参照のために、保持される。 As in FIG. 11, and using the same structure and functionality, if the current position of the source input stream is at the rightmost edge,
Figure 0007681348000016
The outputs of cells in rows M-1 (1101) through N-2 (1102) are held for future reference by registers 1104 through 1105, respectively.

ソース入力ストリームの現在位置が

Figure 0007681348000017
より小さい場合には、マルチプレクサ1106は、右から左への逆の順序で保持されている値から選択し、そうでない場合には、行M-1の最後の合成器(1103)から現在値を選択する。 The current position of the source input stream is
Figure 0007681348000017
If it is, then multiplexer 1106 selects from the stored values in reverse right-to-left order, otherwise it selects the current value from the last combiner (1103) of row M-1.

ソース入力ストリームアレイを処理する間に、マルチプレクサ1402は、マルチプレクサ1106によって選択された結果を、直接最終化(1403)に供給する。切り捨てられた結果の後処理フェーズの出力におけるときに、最終化(1403)の代わりに、遅延ライン1401が選択される。 While processing the source input stream array, multiplexer 1402 feeds the result selected by multiplexer 1106 directly to finalization (1403). When at the output of the post-processing phase of the truncated result, delay line 1401 is selected instead of finalization (1403).

最終化回路1403は、いかなるものでもある場合には、すべての追加的な計算を行い、合成されたパッチ結果からの出力ストリーム(1404)の最終的な形式を生成する。これは、典型的には、正規化線形活性化(Rectified Linear Activation)(RELU)関数の形式を取り得、それにより、負の値はゼロに設定され、限度を超えた値は最大の受入可能な値に設定され、またはsigmoidやtanhなど、任意の他の望ましい条件付け関数という形式を取り得る。後処理関数は、単一のソース入力ストリームサイクル以内に完了することは要求されないが、ソース入力ストリームアレイの速度で各最終結果を受け入れることが要求される。 The finalization circuit 1403 performs all additional computations, if any, to generate the final form of the output stream (1404) from the composite patch results. This may typically take the form of a Rectified Linear Activation (RELU) function, whereby negative values are set to zero and out-of-bounds values are set to the maximum acceptable value, or any other desired conditioning function, such as sigmoid or tanh. The post-processing function is not required to complete within a single source input stream cycle, but is required to accept each final result at the rate of the source input stream array.

DSTENがアサートされるときに、最終化回路1403は、目的出力ストリームの1つの値として、最終結果を与える。DSTENがアサートされていないいかなるときも、最終化回路1403によって生成されたいかなる部分的なまたは不正確な値も無視されるから、結果が用いられないときのいかなる動作抑制も任意選択である。 When DSTEN is asserted, the finalization circuit 1403 provides the final result as one value in the destination output stream. Any partial or inaccurate values produced by the finalization circuit 1403 are ignored whenever DSTEN is not asserted, so any suppression of operations when the result is not used is optional.

ある実装形態では、目的出力ストリームアレイは、上述したものと類似の回路によって処理される。その場合には、最終的な切り捨てられた結果のタイミングがすべての先行の最終結果と同一であるのが有利である。その目的のため、FIFO1202および1304の制御は、制御回路702によって、主たる出力速度と同一の出力速度を維持するように、調整される。 In one implementation, the destination output stream array is processed by circuitry similar to that described above. In that case, it is advantageous for the timing of the final truncated result to be identical to all previous final results. To that end, the control of FIFOs 1202 and 1304 is adjusted by control circuit 702 to maintain an output rate identical to the primary output rate.

他の実装形態では、目的出力ストリームアレイは、システムの最終段であり、さらなる処理は要求されない。その場合には、最終的な切り捨てられた結果のタイミングが可能な限り迅速に完了されるのが有利である。その目的のため、FIFO1202および1304の制御は、制御回路702によって、サポートされる最大の周波数でそれらの結果を出力するように、調整される。 In other implementations, the destination output stream array is the final stage of the system and no further processing is required. In that case, it is advantageous to have the timing of the final truncated result completed as quickly as possible. To that end, the control of FIFOs 1202 and 1304 is adjusted by control circuit 702 to output their results at the maximum frequency supported.

上述された実装は入力要素のフルセットから単一の出力要素を生成する、ということに注意してほしい。入力セットから出力要素の大規模なセットを生成する完全なシステムでは、説明されている機構の全体が、出力チャネルによって共有され得る制御回路702を顕著な例外として、すべての出力チャネルのために一度複製されるが、その理由は、すべての個々のサブ関数のタイミングは全体の出力セットに対して同一であるからである。 Note that the implementation described above produces a single output element from a full set of input elements. In a complete system producing a larger set of output elements from an input set, the entire mechanism described would be replicated once for all output channels, with the notable exception of control circuitry 702, which may be shared by the output channels, since the timing of all individual subfunctions is identical for the entire output set.

発明者は、本発明の詳細および特徴を試験し確認するために、本発明の一実施形態におけるICの作業用プロトタイプを構築し、このプロトタイプの動作は、上述した説明を確認する。また、発明者は、ソフトウェアによってサポートされるシミュレータを開発しており、このシミュレータは、本出願の出願時点まで、以上の詳細および説明を試験し確認するために、用いられてきた。 The inventors have constructed a working prototype of an IC in one embodiment of the present invention to test and verify the details and features of the present invention, and the operation of the prototype confirms the above description. The inventors have also developed a software supported simulator, which has been used up until the time of filing of this application to test and verify the above details and description.

本発明の別の態様では、医療用撮像において一般的に与えられる3次元データの入力ストリームを受け入れるためのシステムが提供され、この場合には、3次元の開口関数が、最初および最後の平面に対する内部とエッジとの両方の場合を正しく実装する対応の計算を用いて、3次元入力アレイ上を通過することを可能にするように、追加的な回路およびバッファリングが含まれている。 In another aspect of the invention, a system is provided for accepting an input stream of three-dimensional data as typically provided in medical imaging, where additional circuitry and buffering is included to allow a three-dimensional aperture function to be passed over the three-dimensional input array with corresponding calculations that correctly implement both the interior and edge cases for the first and last planes.

本発明のさらに別の態様では、深層ニューラルネットワーク(DNN)を訓練する複雑なプロセスのために、ハードウェアによって支援されたニューラルネットワーク訓練システムが提供されるが、このシステムでは、前向き推論エンジンによる大量の努力が投入されてネットワーク全体のために重みとバイアスとを周期的に調整してモデルを所望の状態に収束させるために、訓練アルゴリズムは、単に、前向き推論から集められた統計を用いることだけが必要である。前向き推論プロセスが計算される際に入力状態を加算する適切なアキュムレータの追加により、本発明は、ハードウェアによって支援されたニューラルネットワーク訓練システムを形成する。 In yet another aspect of the present invention, for the complex process of training a deep neural network (DNN), a hardware-assisted neural network training system is provided in which the training algorithm simply needs to use statistics gathered from the forward inference, with the bulk of the effort put in by the forward inference engine to periodically adjust the weights and biases for the entire network to converge the model to the desired state. With the addition of appropriate accumulators that sum the input states as the forward inference process is computed, the present invention forms a hardware-assisted neural network training system.

本発明のさらに別の態様では、浮動小数点の精度の限界がDNNモデルの収束を妨害するという広く知られた問題(当該技術では、「勾配消失問題」として知られている)に関し、ビット幅の精度が限定されている単一の大規模乗算器が提供され、これが、任意に大きな精度の浮動小数点の積を生成するために、追加的な加算器とカスケード接続され得る。この技術革新は、前向き推論の計算のために一般的に要求されることはないが、計算された勾配が測定するにはあまりに小さくなるときに生じる問題を回避することは、DNNトレーナにおいて極めて重要である。 In yet another aspect of the invention, with regard to the widespread problem that limited floating-point precision hinders the convergence of DNN models (known in the art as the "vanishing gradient problem"), a single large multiplier of limited bit-width precision is provided, which can be cascaded with additional adders to generate floating-point products of arbitrarily large precision. While this innovation is not typically required for forward inference calculations, it is crucial in DNN trainers to avoid problems that arise when the computed gradient becomes too small to measure.

図面において図解され上述された実施形態はすべて例示的であり、本発明が取り得るすべての形態の詳細を尽くすものではないということを、当業者であれば、理解するだろう。本発明の範囲内で実現され得る様々な他の形態があり得る。 Those skilled in the art will appreciate that all of the embodiments illustrated in the drawings and described above are exemplary and do not detail all possible forms that the invention may take. There are various other forms that may be realized within the scope of the invention.

本発明は、特許請求の範囲によってのみ限定される。 The invention is limited only by the claims.

Claims (12)

R×Cの目的アレイを生成するために、R×Cのソースアレイの上にM×Nの開口関数を実装する集積回路(IC)であって、
独立な入力値の順序付けられたストリームをソースアレイから受け取る入力ポートと、
出力値の順序付けられた出力ストリームを目的アレイの中に生成する出力ポートと、
入力ポートに結合された大規模乗算器回路であって、各入力値に順に開口関数によって要求されるすべての重みを並列に乗算し、IC上の並列な導電性積経路のセット上に積のストリームを生成し、各積経路が入力の重み値による単一の積に専用である、大規模乗算回路と、
IC上の合成器回路のM×Nのアレイであって、各合成器回路が(m,n)位置における開口関数のサブ関数と関連しており、専用の経路によって、サブ関数と関連する重み値から生成された積を運ぶ積経路のセットのそれぞれに結合されている、合成器回路のM×Nのアレイと、
合成器の間の単一の専用経路と、
合成器から専用の経路上の値を受け取り、後の時点において他の下流の合成器への専用の経路上に遅延した値を提供する、IC上の遅延回路と、
最終化回路と、
カウンタを動作させ、合成器と遅延回路と最終化回路とに結合される制御信号を生成する制御回路とを備え、
各ソース間隔において、合成器が、専用の接続から受け取られた値を並列な導電性経路に組み合わせ、さらに、その結果を、その合成器のための初期値、または隣接する上流の合成器からの専用の経路上の値、または遅延回路から受け取られた値に組み合わせ、その組み合わされた結果を、隣接する下流の合成器への専用の経路に結合されたレジスタ、または遅延回路、またはそれら両方にポストし、最後の下流の合成器が、入力のR×Cのアレイの特定の位置における開口関数の出力のために値の完全な合成を生成すると、その合成された値が最終化回路に渡され、最終化回路は、値を処理し、結果を、出力ストリームの1つの値として出力ポートにポストすることを特徴とする、集積回路(IC)。
an integrated circuit (IC) for implementing an M×N aperture function on an R×C source array to generate an R×C destination array,
an input port that receives an ordered stream of independent input values from a source array;
an output port that produces an ordered output stream of output values into the destination array;
a large scale multiplier circuit coupled to the input port, the large scale multiplier circuit multiplying each input value in turn in parallel by all weights required by the aperture function to generate a stream of products on a set of parallel conductive product paths on the IC, each product path being dedicated to a single multiplication by an input weight value;
an M×N array of combiner circuits on the IC, each combiner circuit associated with a subfunction of the aperture function at an (m,n) location and coupled by a dedicated path to each of a set of product paths carrying products generated from weight values associated with the subfunctions;
a single dedicated path between the combiners;
a delay circuit on the IC that receives a value on a dedicated path from the combiner and provides a delayed value on a dedicated path to another downstream combiner at a later time;
A finalization circuit;
a control circuit for operating the counter and generating control signals coupled to the synthesizer, the delay circuit, and the finalization circuit;
1. An integrated circuit (IC) comprising: at each source interval, a combiner combines values received from dedicated connections into parallel conductive paths, and further combines the result with an initial value for that combiner, or a value on a dedicated path from an adjacent upstream combiner, or a value received from a delay circuit, and posts the combined result to a register coupled to a dedicated path to an adjacent downstream combiner, or a delay circuit, or both; and when the last downstream combiner has produced a complete combination of values for the output of an aperture function at a particular location of an input R×C array, the combined value is passed to a finalization circuit, which processes the value and posts the result to an output port as one value in an output stream.
開口関数が畳み込みニューラルノードに対するものであり、各ソース間隔において、合成器が重みの入力との積を加算し、積のその和を、初期バイアス、または隣接する上流の合成器からの専用の経路上の値、または遅延回路から受け取られた値に加算し、その総和を出力レジスタにポストする、請求項1に記載の集積回路(IC) 2. The integrated circuit (IC) of claim 1, wherein the aperture function is for a convolutional neural node, and at each source interval, the combiner sums the products of the weights with the inputs, adds that sum of products to an initial bias, or a value on a dedicated path from an adjacent upstream combiner, or a value received from a delay circuit, and posts the sum to an output register . 開口関数が、M×Nの入力パッチをR×Cの入力アレイの左右のエッジと重ねる開口の位置については切り捨てられた結果を生成し、ソース入力位置がR×Cの入力アレイの最初または最後の列を表す特定のソース間隔に対しては、切り捨てられたパッチの結果が遅延され、合成器によってアクセスされ、完全な内部パッチのフローと統合される、請求項1に記載の集積回路(IC) 2. The integrated circuit (IC) of claim 1, wherein the aperture function produces truncated results for aperture positions where the MxN input patch overlaps the left and right edges of the RxC input array, and for certain source intervals where the source input position represents the first or last column of the RxC input array, the truncated patch results are delayed and accessed by the combiner and merged with the flow of the complete internal patch. 開口関数が、M×Nの入力パッチをR×Cの入力アレイの一番上のエッジと重ねるそれらの特定の位置については切り捨てられた結果を生成し、ソース入力位置がR×Cの入力アレイの最初の行を表す特定のソース間隔に対しては、切り捨てられたパッチの結果が遅延され、合成器によってアクセスされ、完全な内部パッチのフローと統合される、請求項1に記載の集積回路(IC) 2. The integrated circuit (IC) of claim 1, wherein the aperture function produces truncated results for those particular locations where the M×N input patch overlaps the top edge of the R×C input array, and for particular source intervals where the source input location represents the first row of the R×C input array, the truncated patch results are delayed and accessed by the combiner and merged with the flow of the complete internal patch. 開口関数が、M×Nの入力パッチをR×Cの入力アレイの一番下のエッジと重ねるそれらの特定の位置については切り捨てられた結果を生成し、ソース入力位置がR×Cの入力アレイの最初の行を表す特定のソース間隔に対しては、切り捨てられたパッチの結果が遅延され、完全な内部パッチのフローと統合される、請求項1に記載の集積回路(IC) 2. The integrated circuit (IC) of claim 1, wherein the aperture function produces truncated results for those particular locations where the M×N input patch overlaps the bottom edge of the R×C input array, and for particular source intervals where the source input location represents the first row of the R×C input array , the truncated patch results are delayed and merged with the flow of the complete interior patch. 開口関数の特定の出力が、固定されたまたは可変のステッピングパターンで、出力ストリームから除外される、請求項1に記載の集積回路(IC) 10. The integrated circuit (IC) of claim 1, wherein certain outputs of the aperture function are excluded from the output stream in a fixed or variable stepping pattern. R×Cのソースアレイの上にM×Nの開口関数を実装し、R×Cの目的アレイを生成する方法であって、
独立な入力値の順序付けられたストリームを、ソースアレイから集積回路(IC)の入力ポートに提供することと、
入力ポートに結合されたIC上の大規模乗算器回路によって、各入力値に順に開口関数によって要求されるすべての重み値を並列に乗算することと、
大規模乗算器によって、IC上の並列な導電性積経路のセット上に積のストリームを生成することであって、各積経路が入力の重み値による単一の積に専用である、ことと、
それぞれが開口関数のサブ関数と関連している、IC上の合成器回路のM×Nのアレイのそれぞれに、積のストリームから各合成器回路への専用の接続によって、サブ関数と関連する重み値から生成されたそれらの積を提供することと、
カウンタを実行し制御信号を生成する制御回路によって、制御信号を、合成器と複数の遅延回路と最終化回路とに提供することと、
合成器によって、各ソースサイクルで、専用の接続から積のストリームに受け取られた値を、その合成器のための初期値と、または隣接する上流の合成器への専用の経路上の値に、または複数の遅延回路のうちの1つから受け取られた値に組み合わせ、その結果を、隣接する下流の合成器への専用の経路に結合されたレジスタ、または複数の遅延回路のうちの1つにポストすることと、
最後の下流の合成器が、入力のR×Cのアレイでの特定の位置における開口関数の出力のための値の完全な組合せを生成すると、その完全な組合せを最終化回路に提供することと、
最終化回路によって完全な組合せを処理し、結果を、順序付けられた出力ストリーム内の1つの値として出力ポートにポストすることと、
すべての入力要素が受け取られ、最後の出力値が出力ストリームに生成されるまで、ICの動作を継続することと
を含む、方法。
1. A method for implementing an M×N aperture function on an R×C source array to generate an R×C destination array, comprising the steps of:
providing an ordered stream of independent input values from a source array to an input port of an integrated circuit (IC);
multiplying each input value in turn in parallel by all weight values required by the aperture function by a large scale multiplier circuit on an IC coupled to the input port;
generating, by a large scale multiplier, a stream of products on a set of parallel conductive product paths on the IC, each product path being dedicated to a single product by an input weight value;
providing to each of an M×N array of combiner circuits on the IC, each associated with a sub-function of the aperture function, those products generated from weight values associated with the sub-functions by a dedicated connection from the product stream to each combiner circuit;
providing control signals to the combiner, the plurality of delay circuits, and the finalization circuit by a control circuit implementing a counter and generating control signals;
combining, by a combiner, at each source cycle, a value received in the stream of products from a dedicated connection with an initial value for that combiner, or with a value on a dedicated path to an adjacent upstream combiner, or with a value received from one of a plurality of delay circuits, and posting the result to a register coupled to a dedicated path to an adjacent downstream combiner, or to one of a plurality of delay circuits;
when the last downstream combiner has generated a complete combination of values for the output of the aperture function at a particular location in the input R×C array, providing that complete combination to a finalization circuit;
processing the complete combination through a finalization circuit and posting the result to an output port as a single value in an ordered output stream;
continuing operation of the IC until all input elements have been received and a final output value has been produced in the output stream.
開口関数が畳み込みニューラルノードに対するものであり、各ソース間隔において、合成器が、重みの入力との積を加算し、積のその和を、初期バイアス、または隣接する上流の合成器からの専用の経路上の値、または遅延回路から受け取られた値に加算し、その総和を出力レジスタにポストする、請求項7に記載の方法。 The method of claim 7, wherein the aperture function is for a convolutional neural node, and in each source interval, the combiner sums the products of the weights with the inputs, adds the sum of products to an initial bias, or a value on a dedicated path from an adjacent upstream combiner, or a value received from a delay circuit, and posts the sum to an output register. 開口関数が、M×Nの入力パッチをR×Cの入力アレイの左右のエッジと重ねる開口の位置については切り捨てられた結果を生成し、ソース入力位置がR×Cの入力アレイの最初または最後の列を表す特定のソース間隔に対しては、切り捨てられたパッチの結果が遅延され、合成器によってアクセスされ、完全な内部パッチのフローと統合される、請求項7に記載の方法。 The method of claim 7, wherein the aperture function produces truncated results for aperture positions where the MxN input patch overlaps the left and right edges of the RxC input array, and for certain source intervals where the source input position represents the first or last column of the RxC input array, the truncated patch results are delayed and accessed by the combiner and merged with the flow of the complete interior patch. 開口関数が、M×Nの入力パッチをR×Cの入力アレイの一番上のエッジと重ねる特定の位置については切り捨てられた結果を生成し、ソース入力位置がR×Cの入力アレイの最初の行を表す特定のソース間隔に対しては、切り捨てられたパッチの結果が遅延され、合成器によってアクセスされ、完全な内部パッチのフローと統合される、請求項7に記載の方法。 The method of claim 7, wherein the aperture function produces a truncated result for a particular location where the MxN input patch overlaps the top edge of the RxC input array, and for a particular source interval where the source input location represents the first row of the RxC input array, the truncated patch result is delayed and accessed by the combiner and merged with the flow of the complete interior patch. 開口関数が、M×Nの入力パッチをR×Cの入力アレイの一番下のエッジと重ねるそれらの特定の位置については切り捨てられた結果を生成し、ソース入力位置がR×Cの入力アレイの最初の行を表す特定のソース間隔に対しては、切り捨てられたパッチの結果が遅延され、完全な内部パッチのフローと統合される、請求項7に記載の方法。 The method of claim 7, wherein the aperture function produces truncated results for those particular locations where the MxN input patch overlaps the bottom edge of the RxC input array, and for particular source intervals where the source input location represents the first row of the RxC input array, the truncated patch results are delayed and merged with the flow of the complete interior patch. 開口関数の特定の出力が、固定されたまたは可変のステッピングパターンで、出力ストリームから除外される、請求項7に記載の方法。 The method of claim 7, wherein certain outputs of the aperture function are excluded from the output stream in a fixed or variable stepping pattern.
JP2023563294A 2021-04-15 2022-04-05 Pipeline operation in neural networks Active JP7681348B2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/231,711 US11099854B1 (en) 2020-10-15 2021-04-15 Pipelined operations in neural networks
US17/231,711 2021-04-15
PCT/US2022/023434 WO2022221092A1 (en) 2021-04-15 2022-04-05 Pipelined operations in neural networks

Publications (2)

Publication Number Publication Date
JP2024514659A JP2024514659A (en) 2024-04-02
JP7681348B2 true JP7681348B2 (en) 2025-05-22

Family

ID=83640568

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023563294A Active JP7681348B2 (en) 2021-04-15 2022-04-05 Pipeline operation in neural networks

Country Status (5)

Country Link
EP (1) EP4323864A4 (en)
JP (1) JP7681348B2 (en)
KR (1) KR20240024782A (en)
IL (1) IL307304A (en)
WO (1) WO2022221092A1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001222712A (en) 2000-02-08 2001-08-17 Sega Corp Image processing apparatus, convolution integration circuit and method thereof

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160328645A1 (en) * 2015-05-08 2016-11-10 Qualcomm Incorporated Reduced computational complexity for fixed point neural network
US10997496B2 (en) * 2016-08-11 2021-05-04 Nvidia Corporation Sparse convolutional neural network accelerator
US10410098B2 (en) * 2017-04-24 2019-09-10 Intel Corporation Compute optimizations for neural networks
CN108701015A (en) * 2017-11-30 2018-10-23 深圳市大疆创新科技有限公司 For the arithmetic unit of neural network, chip, equipment and correlation technique
KR102637735B1 (en) * 2018-01-09 2024-02-19 삼성전자주식회사 Neural network processing unit including approximate multiplier and system on chip including the same

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001222712A (en) 2000-02-08 2001-08-17 Sega Corp Image processing apparatus, convolution integration circuit and method thereof

Also Published As

Publication number Publication date
EP4323864A1 (en) 2024-02-21
IL307304A (en) 2023-11-01
EP4323864A4 (en) 2025-03-12
JP2024514659A (en) 2024-04-02
KR20240024782A (en) 2024-02-26
WO2022221092A1 (en) 2022-10-20

Similar Documents

Publication Publication Date Title
JP7329533B2 (en) Method and accelerator apparatus for accelerating operations
EP3513357B1 (en) Tensor operations and acceleration
US20240265234A1 (en) Digital Processing Circuits and Methods of Matrix Operations in an Artificially Intelligent Environment
US11797832B2 (en) Composing arbitrary convolutional neural network models from a fixed set of duplicate pipelined components
US20200327271A1 (en) FPGA Specialist Processing Block for Machine Learning
Kim et al. A fully pipelined fpga architecture of a factored restricted boltzmann machine artificial neural network
TWI886942B (en) Application specific integrated circuit for computing a convolutional neural network
Fan et al. Reconfigurable acceleration of 3D-CNNs for human action recognition with block floating-point representation
CN112395092B (en) Data processing method and artificial intelligence processor
Liu et al. WinoCNN: Kernel sharing Winograd systolic array for efficient convolutional neural network acceleration on FPGAs
CN112988656A (en) System and method for loading weights into tensor processing blocks
EP3093757B1 (en) Multi-dimensional sliding window operation for a vector processor
US10761806B2 (en) Transcendental calculation unit apparatus and method
US11669587B2 (en) Synthetic scaling applied to shared neural networks
JP2021531572A (en) Performing successive MAC operations on a set of data using different kernels in the MAC circuit
JP7681348B2 (en) Pipeline operation in neural networks
US11099854B1 (en) Pipelined operations in neural networks
Meng et al. How to avoid zero-spacing in fractionally-strided convolution? a hardware-algorithm co-design methodology
US11256981B1 (en) Unbounded parallel implementation of deep neural networks
US11354571B2 (en) Parallel implementation of deep neural networks applied to three-dimensional data sets
WO2023287653A1 (en) Pipelined operations in neural networks
US11748061B2 (en) Custom mass multiplication circuits
EP1936492A1 (en) SIMD processor with reduction unit
US20230244902A1 (en) Device, Method and Apparatus for Improving Processing Capabilities for Computer Visual Applications
Ryan FPGA Hardware Accelerators-Case Study on Design Methodologies and Trade-Offs

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240124

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20250131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20250218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20250319

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20250501

R150 Certificate of patent or registration of utility model

Ref document number: 7681348

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150