JP6791540B2 - 畳み込み演算処理装置および畳み込み演算処理方法 - Google Patents

畳み込み演算処理装置および畳み込み演算処理方法 Download PDF

Info

Publication number
JP6791540B2
JP6791540B2 JP2019036288A JP2019036288A JP6791540B2 JP 6791540 B2 JP6791540 B2 JP 6791540B2 JP 2019036288 A JP2019036288 A JP 2019036288A JP 2019036288 A JP2019036288 A JP 2019036288A JP 6791540 B2 JP6791540 B2 JP 6791540B2
Authority
JP
Japan
Prior art keywords
arithmetic units
convolution
channel
arithmetic
convolution operation
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
JP2019036288A
Other languages
English (en)
Other versions
JP2020140507A (ja
Inventor
知子 中村
知子 中村
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Platforms Ltd
Original Assignee
NEC Platforms Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Platforms Ltd filed Critical NEC Platforms Ltd
Priority to JP2019036288A priority Critical patent/JP6791540B2/ja
Publication of JP2020140507A publication Critical patent/JP2020140507A/ja
Application granted granted Critical
Publication of JP6791540B2 publication Critical patent/JP6791540B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Complex Calculations (AREA)

Description

本発明は、畳み込みニューラルネットワークに適用される畳み込み演算処理装置および畳み込み演算処理方法に関する。
画像認識を初めとする種々の分野において、畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)が使用されている。CNNを用いる場合、演算量が膨大になる。その結果、処理速度が低下する。
複数の演算器が設けられ、各々の演算器が畳み込み演算等を並列に実行する畳み込み演算処理装置がある(例えば、特許文献1参照)。また、特許文献2にも、複数の演算器が設けられ、各々の演算器が畳み込み演算等を並列に実行するニューラルネットワークが記載されている。
特開2018−73102号公報 特開2018−92561号公報
しかし、特許文献1に記載されているように、演算器が参照するデータの入力がボトルネックになり、並列演算の性能が活用されないという課題がある。
特に、CNNでは、各畳み込み層での演算が完了する度に、フィルタ係数である重みデータが変更される。重みデータの更新に時間がかかると、演算処理が中断される時間が長くなる。また、処理がCNNにおける深い層(出力層に近い層)に進むほど、特徴量データの量に対して、相対的に、重みデータの量の割合が高くなる。その結果、演算器の稼働率はさらに低下する。
また、例えば、演算器における演算に必要な特徴量データと重みデータとを揃えて、直接、メモリから演算器に入力するように構成された場合には、冗長に同じ特徴量データと重みデータとが演算器に転送されことがある。そのような場合には、結果として、メモリ帯域が狭くなる。
本発明は、メモリを有し、複数の演算器が設けられた畳み込み演算処理装置において、演算器の稼働率を向上させることを目的とする。
本発明による畳み込み演算処理装置は、それぞれが畳み込み層における出力チャネルの1チャネルの畳み込み演算を行う複数の演算器と、複数の演算器が使用する重みデータを格納する2つの第1の記憶手段とを含み、演算器の数は、出力チャネル数よりも少なく、複数の演算器が畳み込み演算を行っているときに、複数の演算器が使用している重みデータが格納されている第1の記憶手段とは異なる方の第1の記憶手段に、複数の演算器が次に実行する畳み込み演算で使用する重みデータを転送するデータ転送機構み、複数の演算器が出力チャネルの1チャネル分の畳み込み演算を行っているときに第1の記憶手段の参照回数を計数し、計数値が出力チャネルの1チャネル分の畳み込み演算の総参照回数に達したら、複数の演算器が使用する重みデータの読み出し先の第1の記憶手段を切り替える切替機構をさらに含み、複数の演算器の各々は複数の演算部を有し、総参照回数は、[入力チャネル数×特徴量データサイズ÷前記演算部の数]である
本発明による畳み込み演算処理方法は、それぞれが畳み込み層における出力チャネルの1チャネルの畳み込み演算を行い出力チャネル数よりも少ない数の複数の演算器が1チャネル分の畳み込み演算を行っているときに、複数の演算器が使用している重みデータが格納されている記憶手段とは異なる記憶手段に、複数の演算器が次に実行する畳み込み演算で使用する重みデータを転送し、複数の演算器が出力チャネルの1チャネル分の畳み込み演算を行っているときに使用している重みデータを記憶している記憶手段の参照回数を計数し、計数値が出力チャネルの1チャネル分の畳み込み演算の総参照回数である[入力チャネル数×特徴量データサイズ÷前記演算部の数]に達したら、複数の演算器が使用する重みデータの読み出し先の記憶手段を切り替える
本発明によれば、CNNにおいて、演算器の稼働率が向上する。
畳み込み演算処理装置の構成例を示すブロック図である。 CNNの演算例を示す説明図である。 畳み込み演算処理装置の処理例を説明するための説明図である。 畳み込み演算処理装置の処理例を説明するためのブロック図である。 畳み込み演算処理装置の処理の流れの一例を示す説明図である。 畳み込み演算処理装置の概要を示すブロック図である。
以下、本発明の実施形態を図面を参照して説明する。
図1は、畳み込み演算処理装置(以下、演算処理装置という。)の構成例を示すブロック図である。なお、図1には、メモリ100,300も示されている。
メモリ100には、演算処理装置200に入力されるデータが記憶される。メモリ100に記憶されるデータとして、入力特徴量データ101と重みデータ102とがある。なお、メモリ100に、CNNへの入力データが保存されることもある(演算処理装置が第1層の畳み込み層に相当する場合)。
演算処理装置200は、それぞれが畳み込み演算を行う複数の畳み込み演算器203A,203B,203C,・・・,203Nを有する。畳み込み演算器203A,203B,203C,・・・,203Nの数N(N:2以上の自然数)は、出力チャネルの総数よりも少なく、並列演算の対象である出力チャネル数に相当する。各々の畳み込み演算器203A,203B,203C,・・・,203Nは、複数の出力チャネルにおける1チャネルの畳み込み演算を実行する。例えば、演算器203Aがチャネル#1の畳み込み演算を実行し、演算器203Bがチャネル#2の畳み込み演算を実行し、演算器203Cがチャネル#3の畳み込み演算を実行し、演算器203Nがチャネル#Nの畳み込み演算を実行する。
各々の畳み込み演算器203A,203B,203C,・・・,203Nは、複数の演算部211を含む。演算部211の数は、一例として、1チャネルの重みの数(フィルタの行数×列数)である。なお、演算処理装置200には、演算器の出力の和を演算する加算器も存在するが、加算器は、図1において記載省略されている。
メモリ100に保存されている入力特徴量データ101は、DMA(Direct Memory Access)機能を有するDMAモジュール(DMAコントローラ)201によって、ラインバッファ202に転送される。畳み込み演算器203A,203B,203C,・・・,203Nは、ラインバッファ202から特徴量データを入力する。
メモリ100に保存されている重みデータ102は、DMAモジュール203によって、データキャッシュ(キャッシュメモリ)204に転送される。畳み込み演算器203A,203B,203C,・・・,203Nは、データキャッシュ204から重みデータを入力する。
なお、CNNの特徴の一つとして、重み共有がある。すなわち、重みデータは、チャネル毎に、複数の特徴量データで共有される。したがって、データキャッシュ204に重みデータが設定されたら、処理対象のチャネルの処理が完了するまで、重みデータは、データキャッシュ204に保存される。
畳み込み演算器203A,203B,203C,・・・,203Nの演算結果は、次層への特徴量データ(出力特徴量データ)としてメモリ300に保存される。
図2は、CNNの演算例を示す説明図である。図2に示す例では、2×2×(128チャネル)の重みフィルタ(以下、フィルタという。)が使用されている(図2(B)参照)。図2には、入力された特徴量データは4×4×(128チャネル)であり(図2(A)参照)、ストライドが1である。畳み込み演算が実行された結果、3×3×(1チャネル)の出力特徴量データが得られた例が示されている(図2(C)参照)。なお、図2(A),(C)における各数値は特徴量を示し、図2(B)における各数値は重みを示す。
図3は、演算処理装置200の処理例を説明するための説明図である。図3には、多層のCNNのうちの浅い層401における2層と、深い層402における1層とが模式的に示されている。浅い層401は入力層に近い層である。図3には、第1層と第2層とが例示されている。また、深い層402における第M層が例示されている。
上述したように、処理がCNNにおける深い層402に進むほど、入出力の特徴量データサイズが小さくなり、相対的に、フィルタサイズ403が大きくなる。
以下の説明では、フィルタサイズ403が大きい第M層を対象とする。
本実施形態では、図3に示すように、Nチャネル(N<総出力チャネル数)分の畳み込み演算が並列実行される。なお、Nチャネルにおける各々のチャネルの特徴量データについて畳み込み演算が実行されている間、フィルタにおける各重みは不変である。以下、チャネル#1〜#Nを第1チャネル群といい、チャネル#(N+1)〜#2Nを第2チャネル群という。
図4および図5を参照して、本実施形態の演算処理装置200の第M層の処理を説明する。図4は、演算処理装置200の処理例を説明するためのブロック図である。図5は、演算処理装置200の処理の流れの一例を示す説明図である。
図4に示すように、メモリ100に、第M層の入力特徴量データ101が格納されている。入力特徴量データ101には、第1チャネル群用の特徴量データ101Aと第2チャネル群用の特徴量データ101Bとが含まれている。また、メモリ100には、第M層の各チャネル用の重みデータ102も格納されている。重みデータ102には、第1チャネル群用の重みデータ102Aと第2チャネル群用の重みデータ102Bとが含まれている。
図4に示す例では、データキャッシュ204は、2つのキャッシュメモリ204A,204Bを含む。キャッシュメモリ204Aは、第1チャネル群用の重みデータ102Aを一時記憶する。キャッシュメモリ204Bは、第2チャネル群用の重みデータ102Bを一時記憶する。なお、一般的に表現すると、演算装置210が第L(L:自然数)チャネル群についての演算を行っているときに、キャッシュメモリ204Aに、第Lチャネル群用の重みデータが記憶され、キャッシュメモリ204Bに、第(L+1)チャネル群用の重みデータが転送される。
なお、畳み込み演算器203A,203B,203C,・・・,203Nが含まれるブロックを演算装置210とする。
前層での処理が完了すると、メモリ100に、第M層の入力特徴量データ101が用意されている。また、メモリ100に、第M層で使用される重みデータ102Aが用意されている。DMAモジュール203は、DMAで、図5(A)に示すように、重みデータ102Aをキャッシュメモリ204Aに転送する(ステップS1)。
なお、演算処理装置200において、メモリ100、演算処理装置200、およびメモリ300の制御を司る制御器(図示せず)が設けられ、制御器が、演算処理装置200における各ブロックに処理開始のトリガを与えるようにしてもよい。
DMAモジュール201は、図5(C)に示すように、第1チャネル群用の特徴量データ101Aをラインバッファ202に転送する(ステップS2)。また、各々の畳み込み演算器203A,203B,203C,・・・,203Nは、図5(B),(D)に示すように、キャッシュメモリ204Aから、自身が担当するチャネルの重みデータすなわちフィルタを読み出しつつ(ステップS3)、ラインバッファ202から第1チャネル群用の特徴量データ101Aを順次読み出して、畳み込み演算をパイプライン処理で実行する(ステップS4)。演算結果は、メモリ300に転送される。
畳み込み演算器203A,203B,203C,・・・,203Nが、第1チャネル群に関する演算を実行しているときに、DMAモジュール203は、DMAで、第2チャネル群用の重みデータ102Bをキャッシュメモリ204Bに転送する(ステップS5)。
図5(C)に示すように、第1チャネル群用の特徴量データ101Aがラインバッファ202に転送された後、DMAモジュール201は、第2チャネル群用の特徴量データ101Bをラインバッファ202に転送する(ステップS6)。また、各々の畳み込み演算器203A,203B,203C,・・・,203Nは、キャッシュメモリ204Bから、自身が担当するチャネルの重みデータすなわちフィルタを読み出しつつ(ステップS7)、ラインバッファ202から第1チャネル群用の特徴量データ101Aを順次読み出して、第2チャネル群に関する畳み込み演算をパイプライン処理で実行する(ステップS8)。
その後、演算処理装置200は、第M層における全ての出力チャネルに関する畳み込み演算処理が完了するまで、上記の処理を繰り返し実行する(ステップS9)。
本実施形態では、演算装置210が第Lチャネル群について、キャッシュメモリ204Aに記憶されている重みデータを使用して畳み込み演算処理を実行しているときに、次チャネル群(第(L+1)チャネル群)で使用される重みデータがキャッシュメモリ204Bに用意される。したがって、演算処理対象のチャネルが代わるときに、重みデータの更新に要する時間が短縮される。
また、演算装置210が第Lチャネル群について畳み込み演算処理を完了したときに、直ちに、使用するキャッシュメモリを切り替えることができる。
演算装置210が処理開始から処理終了までにキャッシュメモリ204Aの内容(重みデータ)を参照する回数(総参照回数)は、[入力チャネル数×特徴量データサイズ(縦)×特徴量データサイズ(横)÷演算部211の数](入力チャネル数、特徴量データサイズ(縦)および特徴量データサイズ(横)に関して図3参照:演算部211の数に関して図4参照)である。
例えば、演算処理装置200に参照回数を計数する計数機構を設け、参照回数が総参照回数に達したら、例えば制御器(制御器が設けられている場合)が、演算装置210に対してキャッシュメモリの切り替えを指示することによって、使用するキャッシュメモリは、直ちに切り替えられる(ステップS10)。
また、演算処理装置200は、Nチャネル分の畳み込み演算処理を並列実行するので、第1チャネル群用の重みデータ102Aを使用した処理の次の処理で使用される第2チャネル群用の重みデータ102Bの、メモリ100における格納位置は容易に特定可能である。したがって、制御器(制御器が設けられている場合)は、DMAモジュール203に対して、迅速に、次の処理で使用される第2チャネル群用の重みデータ102Bの転送開始指示を行うことができる。
さらに、キャッシュメモリ204Aに記憶されるN個のチャネルの各々に対応する重みデータおよびキャッシュメモリ204Bに記憶されるN個の各々に対応する重みデータは、それぞれ、1つのチャネル群に対する畳み込み演算処理が完了するまで変更されることはない。したがって、データキャッシュ204が設けられたことによってメモリ100のメモリ帯域を狭めることができる効果に加えて、さらに、その効果を高めることができる。
また、キャッシュメモリ204A,204Bには全チャネル数分の重みデータが同時に存在せず、Nチャネル数分の重みデータが存在すればよいので、キャッシュメモリ204A,204Bのサイズが節約される。
上記の実施形態では、演算器数が限られ、かつ、メモリ帯域が広くない場合でも、演算器の稼働率を高くすることができる。換言すれば、限られた演算器数とメモリ容量およびメモリ帯域とで、演算器の稼働率を高くすることができる。
上記の実施形態では、特徴量データの量に対して相対的に重みデータの量の割合が高くなる深い層402が演算処理装置200の処理対象とされたが、浅い層401を対象として上記の実施形態を適用することも可能である。
なお、演算装置210は、例えば、GPU(Graphics Processing Unit)、FPGA(Field-Programmable Gate Array )、またはASIC(Application Specific Integrated Circuit )で構築可能である。
図6は、畳み込み演算処理装置の概要を示すブロック図である。畳み込み演算処理装置10は、それぞれが畳み込み層における出力チャネルの1チャネルの畳み込み演算を行う複数の演算器11(実施形態では、演算器203A〜203Nで実現される。)と、複数の演算器11が使用する重みデータを格納する2つの第1の記憶手段12(実施形態では、キャッシュメモリ204A,204Bで実現される。)とを備え、演算器11の数は、出力チャネル数よりも少なく、複数の演算器11が畳み込み演算を行っているときに、複数の演算器11が使用している重みデータが格納されている第1の記憶手段12とは異なる方の第1の記憶手段12に、複数の演算器11が次に実行する畳み込み演算で使用する重みデータを転送するデータ転送機構13(実施形態では、DMAモジュール203)をさらに備える。
畳み込み演算処理装置10は、複数の演算器11が使用する特徴量データを格納する第2の記憶手段(実施形態では、ラインバッファ202で実現される。)を備えていてもよい。
畳み込み演算処理装置10は、複数の演算器11が1チャネル分の畳み込み演算を行っているときに第1の記憶手段12の参照回数を計数し、計数値が1チャネル分の畳み込み演算の総参照回数に達したら、複数の演算器11が使用する重みデータの読み出し先の第1の記憶手段12を切り替える切替機構(実施形態では、計数機構および制御器で実現される。)を備えていてもよい。
10 畳み込み演算処理装置
11 演算器
12 第1の記憶手段
13 データ転送機構
100 メモリ
101 入力特徴量データ
101A 第1チャネル群用の特徴量データ
101B 第2チャネル群用の特徴量データ
102 重みデータ
102A 第1チャネル群用の重みデータ
102B 第2チャネル群用の重みデータ
200 演算処理装置
201,203 DMAモジュール
202 ラインバッファ
204 データキャッシュ
204A キャッシュメモリ
204B キャッシュメモリ
210 演算装置
203A〜203N 演算器
211 演算部
300 メモリ
401 浅い層
402 深い層
403 フィルタサイズ

Claims (4)

  1. それぞれが畳み込み層における出力チャネルの1チャネルの畳み込み演算を行う複数の演算器と、
    前記複数の演算器が使用する重みデータを格納する2つの第1の記憶手段とを備え、
    前記演算器の数は、出力チャネル数よりも少なく、
    前記複数の演算器が畳み込み演算を行っているときに、前記複数の演算器が使用している重みデータが格納されている前記第1の記憶手段とは異なる方の前記第1の記憶手段に、前記複数の演算器が次に実行する畳み込み演算で使用する重みデータを転送するデータ転送機構備える畳み込み演算処理装置であって、
    前記複数の演算器が出力チャネルの1チャネル分の畳み込み演算を行っているときに前記第1の記憶手段の参照回数を計数し、計数値が出力チャネルの1チャネル分の畳み込み演算の総参照回数に達したら、前記複数の演算器が使用する重みデータの読み出し先の前記第1の記憶手段を切り替える切替機構をさらに備え、
    前記複数の演算器の各々は複数の演算部を含み、
    前記総参照回数は、[入力チャネル数×特徴量データサイズ÷前記演算部の数]である
    ことを特徴とする畳み込み演算処理装置。
  2. 前記複数の演算器が使用する特徴量データを格納する第2の記憶手段を備える
    請求項1記載の畳み込み演算処理装置。
  3. データ転送機構は、DMA転送の制御を行うDMAモジュールである
    請求項1または請求項記載の畳み込み演算処理装置。
  4. それぞれが畳み込み層における出力チャネルの1チャネルの畳み込み演算を行い出力チャネル数よりも少ない数の複数の演算器が1チャネル分の畳み込み演算を行っているときに、前記複数の演算器が使用している重みデータが格納されている記憶手段とは異なる記憶手段に、前記複数の演算器が次に実行する畳み込み演算で使用する重みデータを転送する畳み込み演算処理方法であって、
    前記複数の演算器が出力チャネルの1チャネル分の畳み込み演算を行っているときに使用している重みデータを記憶している前記記憶手段の参照回数を計数し、計数値が出力チャネルの1チャネル分の畳み込み演算の総参照回数である[入力チャネル数×特徴量データサイズ÷前記演算部の数]に達したら、前記複数の演算器が使用する重みデータの読み出し先の前記記憶手段を切り替える
    ことを特徴とする畳み込み演算処理方法。
JP2019036288A 2019-02-28 2019-02-28 畳み込み演算処理装置および畳み込み演算処理方法 Active JP6791540B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019036288A JP6791540B2 (ja) 2019-02-28 2019-02-28 畳み込み演算処理装置および畳み込み演算処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019036288A JP6791540B2 (ja) 2019-02-28 2019-02-28 畳み込み演算処理装置および畳み込み演算処理方法

Publications (2)

Publication Number Publication Date
JP2020140507A JP2020140507A (ja) 2020-09-03
JP6791540B2 true JP6791540B2 (ja) 2020-11-25

Family

ID=72280475

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019036288A Active JP6791540B2 (ja) 2019-02-28 2019-02-28 畳み込み演算処理装置および畳み込み演算処理方法

Country Status (1)

Country Link
JP (1) JP6791540B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2023013649A1 (ja) * 2021-08-06 2023-02-09

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6776696B2 (ja) * 2016-07-26 2020-10-28 富士通株式会社 並列情報処理装置、情報処理方法、およびプログラム
JP2018067154A (ja) * 2016-10-19 2018-04-26 ソニーセミコンダクタソリューションズ株式会社 演算処理回路および認識システム

Also Published As

Publication number Publication date
JP2020140507A (ja) 2020-09-03

Similar Documents

Publication Publication Date Title
CN107862650B (zh) 加速计算二维图像cnn卷积的方法
US10445638B1 (en) Restructuring a multi-dimensional array
CN111199273B (zh) 卷积计算方法、装置、设备及存储介质
US20180189643A1 (en) Convolution circuit, application processor including the same, and operating method thereof
CN106991476A (zh) 用于执行人工神经网络正向运算的装置和方法
CN106874219B (zh) 一种卷积神经网络的数据调度方法、系统及计算机设备
US20160093343A1 (en) Low power computation architecture
US11487845B2 (en) Convolutional operation device with dimensional conversion
CN107533459A (zh) 使用电阻存储器阵列的数据处理
CN110188869B (zh) 一种基于卷积神经网络算法的集成电路加速计算的方法及系统
CN108885596A (zh) 数据处理方法、设备、dma控制器及计算机可读存储介质
CN110738308A (zh) 一种神经网络加速器
CN110796236B (zh) 多样本多通道卷积神经网络池化的向量化实现方法
CN110705703A (zh) 基于脉动阵列的稀疏神经网络处理器
JP7387017B2 (ja) アドレス生成方法及びユニット、深層学習処理器、チップ、電子機器並びにコンピュータプログラム
CN111008040A (zh) 缓存装置及缓存方法、计算装置及计算方法
CN108804973B (zh) 基于深度学习的目标检测算法的硬件架构及其执行方法
JP6791540B2 (ja) 畳み込み演算処理装置および畳み込み演算処理方法
KR102290531B1 (ko) 재조직 가능한 뉴럴 네트워크 컴퓨팅 장치
US20200160161A1 (en) Deep neural network accelerator including lookup table based bit-serial processing elements
CN109726798B (zh) 一种数据处理方法及装置
KR102349138B1 (ko) 사전 프로그래밍 된 함수를 갖는 고속 컴퓨터 가속기
WO2021232422A1 (zh) 神经网络的运算装置及其控制方法
JP7410961B2 (ja) 演算処理装置
CN109416743B (zh) 一种用于识别人为动作的三维卷积装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190228

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200128

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200326

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201029

R150 Certificate of patent or registration of utility model

Ref document number: 6791540

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150