(57)【要約】  指数演算および対数演算を処理する第１の処理部と、除算および開平演算を処理する第２の処理部とを有し、第１の処理部と第２の処理部とで共用される共用部を備えるように構成することにより、指数演算および対数演算と除算および開平演算とを共通の演算回路で実現できるようにする。
2020090024.tif 000002
【特許請求の範囲】
【請求項１】
指数演算および対数演算を処理する第１の処理部と、
除算および開平演算を処理する第２の処理部と
を有し、
前記第１の処理部と前記第２の処理部とで共用される共用部を備える
ことを特徴とする、演算処理装置。
【請求項２】
前記第１の処理部において、前記指数演算における指数変数または前記対数演算における真数変数の演算を実行する桁上げ保存加算器と、前記第２の処理部において、前記除算における部分剰余または前記開平演算における部分剰余の演算を実行する桁上げ保存加算器とが、前記共用部である
ことを特徴とする、請求項１記載の演算処理装置。
【請求項３】
前記第１の処理部および前記第２の処理部に対して演算を実行させる制御部を備え、
前記制御部が、前記第１の処理部および前記第２の処理部に備えられた複数の回路の中から演算種類に応じた回路を選択して処理を実行させる
ことを特徴とする、請求項１または２記載の演算処理装置。
【請求項４】
前記指数演算，前記対数演算，前記除算および前記開平演算のいずれかの処理過程において生成される値を格納する格納部が、前記共用部であり、
前記制御部が、演算種類に応じた初期値を前記格納部に設定する
ことを特徴とする、請求項３記載の演算処理装置。
【請求項５】
前記第２の処理部において、
複数の出力値が設定される設定部と、
前記設定部の中から第１の出力値を選択して出力する第１選択部と、
前記設定部の中から第２の出力値を選択して出力する第２選択部と、
前記第１選択部および前記第２選択部からの出力が入力される加算器と
を備えることを特徴とする、請求項１〜４のいずれか１項に記載の演算処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置に関する。
【背景技術】
【０００２】
情報処理装置のプロセッサには、演算を実現する演算回路（演算器）が備えられている。演算回路としては、例えば、加算を行なう加算回路や、乗算を行なう乗算回路、開平演算を行なう開平演算回路、指数演算を行なう指数演算回路、対数演算を行なう対数演算回路等が知られている。【０００３】
また、指数演算および対数演算を共通の演算回路で実現することや、除算と開平演算とを共通の演算回路で実現することも知られている。複数種類の演算を共通の演算回路で実現することで、省スペース化や製造コストの低減等を実現することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−９２３７２号公報
【特許文献２】特開２００６−１７２０３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
このようなプロセッサにおいて、更なる演算回路の小型化が求められている。【０００６】
本発明は、このような課題に鑑み創案されたもので、指数演算および対数演算と、除算および開平演算とを共通の演算回路で実現できるようにすることを目的とする。
【課題を解決するための手段】
【０００７】
上記の目的を達成するために、この演算処理装置は、指数演算および対数演算を処理する第１の処理部と、除算および開平演算を処理する第２の処理部とを有し、前記第１の処理部と前記第２の処理部とで共用される共用部を備える。
【発明の効果】
【０００８】
開示の演算処理装置によれば、指数演算および対数演算と、除算および開平演算とを共通の演算回路で実現することができる。
【図面の簡単な説明】
【０００９】
【図１】第１実施形態の一例としての演算処理回路の構成を例示する図である。
【図２】第１実施形態の一例としての演算処理回路のＣＳＡの構成を例示する図である。
【図３】第１実施形態の一例としての演算処理回路の処理を説明するためのフローチャートである。
【図４】第１実施形態の一例としての演算処理回路の処理を説明するためのフローチャートである。
【図５】第１実施形態の一例としての演算処理回路の処理を説明するためのフローチャートである。
【図６】第１実施形態の一例としての演算処理回路の処理を説明するためのフローチャートである。
【図７】第２実施形態の一例としての演算処理回路の構成を例示する図である。
【図８】第２実施形態の一例としての演算処理回路のqi選択結果に対する各セレクタのセレクト対象を示す図である。
【図９】第３実施形態の一例としての演算処理回路の構成を例示する図である。
【図１０】第３実施形態の一例としての演算処理回路のqi選択結果に対する各セレクタのセレクト対象および符号を示す図である。
【図１１】各実施形態の一例としての演算処理回路をディープラーニング等の用途のプロセッサに実装する構成例を示す図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照して本演算処理装置にかかる実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形（実施形態および各変形例を組み合わせる等）して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【００１１】
（Ｉ）第１実施形態の説明
図１は第１実施形態の一例としての演算処理回路１ａの構成を例示する図である。
【００１２】
演算処理回路（演算器）１ａは、例えば情報処理装置のプロセッサ（演算処理装置）に備えられ、演算を実現する。図１に示す演算処理回路１ａは、指数（ＥＸＰ）演算、対数（ＬＯＧ）演算、除算（ＤＩＶ）演算および開平（ＳＱＲＴ）演算の４種類の演算を実現する演算処理回路である。すなわち、本演算処理回路１ａは、指数演算、対数演算、除算演算および開平演算のいずれかを選択的に実現する。
【００１３】
［指数演算］
演算処理回路１ａにおいては、指数演算にradix-4のＳＴＬ（Sequential Table Lookup）法（第１のアルゴリズム）を用いる。
【００１４】
指数演算において、ｘを入力とし、exp(x)を求める。
Lはべき数の空間の変数であり、Eは指数の空間の変数である。また、iは演算の繰り返し回数である。
【００１５】
初期値をL1 = x，E1 = exp(0) = 1とし、x = log(Ei) + Liを満たしつつ、演算を繰り返してLiを少しずつ0に近づけることで、Eiがexp(x)に近づく（Li=x→0、Ei =exp(0)→exp(x)）。
【００１６】
Liの算出（Li演算）には、以下の式（１）を用いる。
Li+1= Li - log(1 + n × 2^-2i)      ・・・（１）
【００１７】
また、Eiの算出（Ei演算）には、以下の式（２）を用いる。
Ei+1= Ei × (1 + n × 2^-2i)
= Ei + Ei × n × 2^-2i    ・・・（２）
ただし、n = -2, -1, 0, +1, +2であり、Liと0との大小関係および差分を判定し、Liが0に一番近づくようにnを選ぶ。
【００１８】
［対数演算］
本演算処理回路１ａにおいては、対数演算にradix-4のＳＴＬ法を用いる。
対数演算において、ｘを入力とし、log(x)を求める。
Lは対数の空間の変数であり、Eは真数の空間の変数である。またiは繰り返し演算の回数である。
【００１９】
初期値をL1 = log(1) = 0，E1 = xとし、x = Ei× exp(Li)を満たしつつ、演算を繰り返してEiを少しずつ1に近づけることで、Liがlog(x)に近づく（Ei =x→1、Li =log(1)→log(x)）。
【００２０】
対数演算におけるLiおよびEiの演算方法（Li演算，Ei演算）は概ね指数演算と同様であるが、nの選び方は異なる。すなわち、Eiと1との大小関係および差分を判定し、Eiが1に一番近づくようにnを選ぶ。
【００２１】
上述の如く、本演算処理回路１ａにおいては、指数演算および対数演算にＳＴＬ（Sequential Table Lookup）法（第１のアルゴリズム）を用いる。
【００２２】
［除算］
本演算処理回路１ａにおいては、除算に、演算1回で商2bitを求めるradix-4のＳＲＴ（Sweeney, Robertson, Tocher）法（第２のアルゴリズム）を用いる。
除算において、ｘ,yを入力とし、y/xを求める。
Qは部分商（繰り返し演算中の途中までの商）であり、Dは除数である。Rは部分剰余であり、iは演算の繰り返し回数である。
【００２３】
初期値をQ0= 0，R0 = y，D = x（Dは変化しない）とし、y = Qi× D + Ri  を満たしつつ、演算を繰り返してRiを0に近づけることで、Qiがy/xに近づく（Ri=y→0、Qi×D=0→yつまりQ=0→y/x）。
【００２４】
Riの算出（Ri演算）には以下の式（３）を用いる。
Ri+1= Ri - D × qi   ・・・（３）
ただし、qi= (-2 or -1 or 0 or +1 or +2) × 2^-2iとする。
【００２５】
また、Qiの算出（Qi演算）には以下の式（４）を用いる。
Qi+1 = Qi + qi        ・・・（４）
Riと0との大小関係および差分を判定し、Riが0に一番近づくようにqiを選ぶ。
Rはsum+carryの形式で保持する。後述するレジスタ１０３のレジスタ値RSとレジスタ１０４のレジスタ値RCとが、sumとcarryとに相当する。
【００２６】
［開平演算］
本演算処理回路１ａにおいては、開平演算に、radix-4のＳＲＴ法（第２のアルゴリズム）を用いる。
開平演算において、yを入力とし、sqrt(y)を求める。
Qは部分商であり、Rは部分剰余であり、iは演算の繰り返し回数である。
初期値をQ0= 0，R0 = yとし、y = Qi^2 + Riを満たしつつ、演算を繰り返してRiを0に近づけることで、Qiがsqrt(y)に近づく(Ri=y→0、Qi^2=0→yつまりQ=0→sqrt(y))。
【００２７】
Riの算出（Ri演算）には以下の式（５）を用いる。
Ri+1 = Ri-2Qi × qi-qi^2      ・・・（５）
ただしqi=(-2 or -1 or 0 or +1 or +2)×2^-2iとする。
【００２８】
Qiの算出（Qi演算）には以下の式（６）を用いる。
Qi+1= Qi+qi      ・・・（６）
このように、開平演算においてRiおよびQiの演算方法は除算演算と概ね同様であるが、厳密にはRiの演算において相違がある。
Riと0との大小関係および差分を判定し、Riが0に一番近づくようにqiを選ぶ。
【００２９】
（Ａ）構成
本第１実施形態の演算処理回路１ａは、図１に示すように、レジスタ１０１〜１０４，判定回路１０５，１０６，ＣＳＡ（Carry-Save Adder：桁上げ保存加算器）１０７，１０８，Log Table回路１０９，右シフト回路（ＲＳＦＴ）１１０，１１１，処理回路１１２，演算回路１１３〜１１９，１３０，１３１およびセレクタ１２０〜１２６を備える。
【００３０】
以下、レジスタ１０１をレジスタＬＳ／Ｑと表す場合がある。同様に、レジスタ１０２をレジスタＬＣ／Ｄと表す場合があり、レジスタ１０３をレジスタＥＳ／ＲＳと表す場合があり、レジスタ１０４をレジスタＥＣ／ＲＣと表す場合がある。
【００３１】
レジスタ１０１は、判定回路１０５，１０６，演算回路１１５，１１９およびＣＳＡ１０７にそれぞれ接続されている。
【００３２】
本演算処理回路１ａが指数演算または対数演算を行なう場合には、このレジスタ１０１に後述するＣＳＡ１０７によるLi演算の結果（sum）がセレクタ１２４を介して格納される。
【００３３】
また、本演算処理回路１ａが指数演算または対数演算を行なう場合には、レジスタ１０１から読み出されたレジスタ値Liは、判定回路１０５およびＣＳＡ１０７にそれぞれ入力される。
【００３４】
一方、本演算処理回路１ａが除算または開平演算を行なう場合には、後述する演算回路１１９による（Q+q）の演算結果Qがセレクタ１２４により選択され、レジスタ１０１に格納される。
【００３５】
本演算処理回路１ａが除算または開平演算を行なう場合には、レジスタ１０１から読み出されたレジスタ値Qは判定回路１０６および演算回路１１５，１１９にそれぞれ入力される。
【００３６】
レジスタ１０２は、判定回路１０５，１０６およびＣＳＡ１０７にそれぞれ接続されている。また、レジスタ１０２はセレクタ１２０を介して処理回路１１２にも接続されている。さらに、レジスタ１０２の出力はセレクタ１２３にも入力される。
【００３７】
本演算処理回路１ａが指数演算または対数演算を行なう場合には、レジスタ１０２にＣＳＡ１０７によるLi演算の結果（carry）がセレクタ１２３を介して格納される。
【００３８】
また、本演算処理回路１ａが指数演算または対数演算を行なう場合には、レジスタ１０２から読み出されたレジスタ値Liは、判定回路１０５およびＣＳＡ１０７にそれぞれ入力される。
【００３９】
一方、本演算処理回路１ａが除算を行なう場合には、レジスタ値Dがセレクタ１２３により選択され、レジスタ１０２に格納される。本演算処理回路１ａが開平演算を行なう場合には、レジスタ１０２は使用しない。
【００４０】
本演算処理回路１ａが除算を行なう場合には、レジスタ１０２から読み出されたレジスタ値Dは、判定回路１０６に入力される。また、レジスタ１０２から読み出されたレジスタ値Dはセレクタ１２０を介して処理回路１１２にも入力される。
【００４１】
本演算処理回路１ａが指数演算または対数演算を行なう場合には、Log Table回路１０９およびＣＳＡ１０７が、指数演算または対数演算におけるLi演算を実現する。右シフト回路１１０，１１１，演算回路１１３，１１４，１１６，１１７およびＣＳＡ１０８が、指数演算または対数演算におけるEi演算を実現する。
【００４２】
一方、本演算処理回路１ａが除算を行なう場合には、処理回路１１２，演算回路１１６，１１７，１３０，１３１およびＣＳＡ１０８が、Ri演算を実現する。また、本演算処理回路１ａが開平演算を行なう場合には、処理回路１１２，演算回路１１６〜１１８，１３０，１３１およびＣＳＡ１０８が、Ri演算を実現する。ただし、上記式（３），（５）ではqiの桁がサイクルごとに2bitずつ小さくなるところを、式（３），（５）の両辺をサイクルごとに4倍することでqiの桁が一定になるようにする。また、除算および開平演算におけるQi演算は演算回路１１９によって実現される。
【００４３】
判定回路１０５は、指数演算または対数演算に用いられる。判定回路１０５は、指数演算を行なう場合には、Liに基づき、nを選択する。例えば、判定回路１０５は、Liと0との大小関係および差分を判定し、Liが0に一番近づくnの値を選択する。また、対数演算を行なう場合には、判定回路１０５は、Eiと1との大小関係および差分を判定し、Eiが1に一番近づくnの値を選択する。なお、この判定回路１０５による処理は既知の手法を用いて実現してもよく、その詳細な説明は省略する。
【００４４】
判定回路１０５によって決定されたnの値は、演算回路１１３，１１４，１１６，１１７およびLog Table回路１０９に入力される。
【００４５】
Log Table回路１０９およびＣＳＡ１０７は、Liの演算を実施する。
Log Table回路１０９は、指数演算または対数演算に用いられる。Log Table回路１０９は、log(1+n*2^-2i)を出力する。Log Table回路１０９には、予め変数i, nに対応するlog(1+n*2^-2i)の値が設定されており、判定回路１０５に入力されるnとiに応じたlog(1+n*2^-2i)の値を出力する。
【００４６】
ＣＳＡ１０７は、３入力−２出力（3 in - 2 out）の桁上げ保存加算器（全加算器）であり、レジスタ１０１，１０２およびLog Table回路１０９から各出力が入力される。また、このＣＳＡ１０７の出力（演算結果）のうち、部分和ビットの列は、セレクタ１２４に出力され、このセレクタ１２４を介してレジスタ１０１に入力される。一方、ＣＳＡ１０７の出力（演算結果）のうち、桁上げビットの列は、セレクタ１２３に出力され、このセレクタ１２３を介してレジスタ１０２に入力される。
【００４７】
ＣＳＡ１０７は、指数演算または対数演算に用いられる。ＣＳＡ１０７は、Li+1の演算を行なう。ＣＳＡ１０７は、Log Table回路１０９から出力されたlog(1+n*2^-2i)の値を用いて、上記式（１）に基づきLiを算出する。
【００４８】
ＣＳＡ１０７により算出されたLi+1の値は、セレクタ１２４に入力される。
【００４９】
判定回路１０６は、除算または開平演算に用いられる。判定回路１０６は、除算時はRiとDとに基づいてqiを選択し、開平演算時はRiとQiとに基づいてqiを選択する。具体的には、判定回路１０６は、Riと0との大小関係及び差分とDもしくはQiを判定し、Riが0に一番近づくようにqiを選択する。上記式（３），（５）に示すように、qi = (-2 or -1 or 0 or +1 or +2) × 2^-2iであり、radix-4であるので、判定回路１０６は2bitずつqiを選択する。
【００５０】
演算回路１１９は、除算または開平演算に用いられる。演算回路１１９は、上記式（４），（６）に基づきQi演算を行なう。すなわち、演算回路１１９は、Qi+1 = Qi + qiを算出する。Qとqとは有効bitがほぼ重複しないので、演算回路１１９は簡易的な加算回路として構成されてよい。
【００５１】
演算回路１１５は開平演算に用いられる。演算回路１１５は、入力された値を2倍して出力する2倍回路である。演算回路１１５は、レジスタ１０１から読み出されたレジスタ値Qiに対して2倍（×２）演算を行なう。なお、演算回路１１５は、入力されたレジスタ値をbit左シフトすることで2倍を実現する。この演算回路１１５による演算結果はセレクタ１２０を介して処理回路１１２に入力される。セレクタ１２０は開平演算時に演算回路１１５の出力を選択して出力する。また、セレクタ１２０は除算時にレジスタ１０２のレジスタ値Dを選択して出力する。
【００５２】
レジスタ１０３は、判定回路１０５，１０６，右シフト回路１１０および演算回路１１８にそれぞれ接続されている。
【００５３】
本演算処理回路１ａが指数演算または対数演算を行なう場合には、このレジスタ１０３に後述するセレクタ１２５，１２６が出力するEi演算の結果（sum）が格納される。
【００５４】
また、本演算処理回路１ａが指数演算または対数演算を行なう場合には、レジスタ１０３から読み出されたレジスタ値Eiは、判定回路１０５および右シフト回路１１０にそれぞれ入力される。
【００５５】
一方、本演算処理回路１ａが除算または開平演算を行なう場合には、レジスタ１０３にセレクタ１２５，１２６が出力するRi演算の結果（sum）が格納される。
【００５６】
本演算処理回路１ａが除算または開平演算を行なう場合には、レジスタ１０３から読み出されたレジスタ値Riは、判定回路１０６および演算回路１１８にそれぞれ入力される。
【００５７】
レジスタ１０４は、判定回路１０５，１０６，右シフト回路１１１およびＣＳＡ１０８にそれぞれ接続されている。
【００５８】
本演算処理回路１ａが指数演算または対数演算を行なう場合には、このレジスタ１０４にセレクタ１２５，１２６が出力するEi演算の結果（carry）が格納される。
【００５９】
また、本演算処理回路１ａが指数演算または対数演算を行なう場合には、レジスタ１０４から読み出されたレジスタ値Eiは、判定回路１０５および右シフト回路１１１にそれぞれ入力される。また、レジスタ１０４から読み出されたレジスタ値EiはＣＳＡ１０８にも入力される。
【００６０】
一方、本演算処理回路１ａが除算または開平演算を行なう場合には、レジスタ１０４にセレクタ１２５，１２６が出力するRi演算の結果（carry）が格納される。
【００６１】
本演算処理回路１ａが除算または開平演算を行なう場合には、レジスタ１０４から読み出されたレジスタ値Riは、判定回路１０６およびＣＳＡ１０８にそれぞれ入力される。
【００６２】
ＣＳＡ１０８は、４入力−２出力（4 in - 2 out）の桁上げ保存加算器（全加算器）であり、演算回路１１６，１１７，１１８およびレジスタ１０４からの各出力が入力される。また、このＣＳＡ１０８の出力（演算結果）のうち部分和ビットの列は、演算回路１３０およびセレクタ１２５に入力される。一方、ＣＳＡ１０８の出力（演算結果）のうち桁上げビットの列は演算回路１３１およびセレクタ１２６に入力される。
【００６３】
図２は第１実施形態の一例としての演算処理回路１ａのＣＳＡ１０８の構成を例示する図である。
【００６４】
ＣＳＡ１０８は、２つの３入力−２出力（3 in -2 out）の全加算器を組み合わせた多段構成を有する。すなわち、一つの３入力−２出力の桁上げ保存加算器の出力（Ｓ，Ｃ）を、他の３入力−２出力の桁上げ保存加算器の入力とすることで、ＣＳＡ１０８は４入力を実現している。
【００６５】
また、このＣＳＡ１０８の出力（演算結果）のうち、部分和ビットの列は、演算回路１３０やセレクタ１２５を介してレジスタ１０３に入力される。一方、ＣＳＡ１０８の出力（演算結果）のうち、桁上げビットの列は、演算回路１３１やセレクタ１２６を介してレジスタ１０４に入力される。
【００６６】
演算回路１３０，１３１は、それぞれ入力された値に対して4倍演算（×4）演算を行なう。4倍演算は、入力された値を2bit左シフトすることで実現する。セレクタ１２５，１２６は、それぞれ本演算処理回路１ａが指数演算または対数演算を行なう場合には、ＣＳＡ１０８の出力を選択して出力する。一方、演算処理回路１ａが除算または開平演算を行なう場合には、セレクタ１２５は演算回路１３０の出力を、また、セレクタ１２６は演算回路１３１の出力を、それぞれ選択して出力する。演算回路１３０，１３１によりqiの2^-2iの部分の辻褄合わせが行なわれる。
【００６７】
処理回路１１２は、×0,×1,×2の3信号を生成する。除算時には、セレクタ１２０はレジスタ値Dを出力する。処理回路１１２と演算回路１１６とがDを0倍/±1倍/±2倍することにより、式（３）のD×qiの演算が実現される。
【００６８】
一方、開平演算時には、演算回路１１５がレジスタ値Qの2倍（2Q）を出力し、セレクタ１２０が2Qを出力する。処理回路１１２と演算回路１１６とが2Qを0倍/±1倍/±2倍することにより、式（５）の2Qi×qiの部分が生成される。
【００６９】
演算回路１１５は、レジスタ１０１の出力Qに対して、1bit左シフトすることで2倍算を実現する。演算回路１１５の出力はセレクタ１２０に入力される。
【００７０】
セレクタ１２０にはレジスタ１０２の出力Dと演算回路１１５の出力とが入力される。除算を行なう場合には、セレクタ１２０はレジスタ１０２の出力Dを選択し、処理回路１１２に出力する。開平演算を行なう場合には、セレクタ１２０は演算回路１１５の出力を選択し、処理回路１１２に出力する。
【００７１】
処理回路１１２は、固定値0（×0）と、入力値をスルー出力した値（×1）、入力値を1bit左シフトした値（×2）を生成し出力する。
【００７２】
これにより、処理回路１１２は、×0，×1および×2の各値を出力可能に構成されている。処理回路１１２に設定されるこれらの値は、判定回路１０６により選択される選択肢に相当する。
【００７３】
セレクタ１２１は、処理回路１１２から出力される×0，×1および×2のいずれかの出力値を選択してセレクタ１２２に出力する。セレクタ１２１は、処理回路１１２が出力する複数種類の選択肢（×0，×1，×2）の中から、判定回路１０６によって決定されたqiに対応する出力値を選択して出力する。
【００７４】
なお、判定回路１０６により決定されたqiが負値である場合には、セレクタ１２１はqiの絶対値に相当する選択肢を選択する。なお、qiが負値である場合には、セレクタ１２１の出力値（正値）に対して演算回路１１６が符号反転を行なうことで負値にする。
【００７５】
右シフト回路１１０，１１１は、それぞれレジスタ値ES，ECを2i bit右シフトすることで、式（２）のEi×2^-2iの部分を生成する。
【００７６】
すなわち、右シフト回路１１０は、本演算処理回路１ａが指数演算または対数演算を行なう場合に、レジスタ１０３のレジスタ出力ESに対して、2iビットの右シフト演算を行なうことで2^-2i倍算を実現する。右シフト回路１１０の出力は演算回路１１３に入力される。
【００７７】
右シフト回路１１１は、本演算処理回路１ａが指数演算または対数演算を行なう場合に、レジスタ１０４のレジスタ出力ECに対して、2iビットの右シフト演算を行なうことで2^-2i倍算を実現する。右シフト回路１１１の出力は演算回路１１４に入力される。
【００７８】
なお、右シフト回路１１０，１１１の後段において演算回路１１３,１１６によりEi×n×2^-2iが生成される。
【００７９】
演算回路１１３，１１４は、本演算処理回路１ａが指数演算または対数演算を行なう場合に、入力された値に対して、1倍（×1）演算または2倍（×2）演算を行なう。なお、演算回路１１３，１１４は、入力された値をスルーすることで1倍（×1）演算を実現する。また、演算回路１１３，１１４は、入力されたレジスタ値を1bit左シフトすることで2倍演算を実現する。この演算回路１１５による演算結果はセレクタ１２０を介して処理回路１１２に入力される。
【００８０】
セレクタ１２２は、セレクタ１２１からの出力（×0，×1，×2）と演算回路１１３からの出力とのいずれかを選択して、演算回路１１６に入力する。
【００８１】
演算回路１１６，１１７は、入力された値をスルー（+）または符号反転（-）して出力する。演算回路１１６には、判定回路１０５からの出力と、判定回路１０６からの出力が入力される。演算回路１１６は、指数演算時または対数演算時はnの符号に応じた処理を行ない、除算または開平演算時はqiの符号に応じた処理を行なう。
演算回路１１７は、指数演算時または対数演算時はnの符号に応じた処理を行なう。なお、除算時または開平演算時は演算回路１１７は使用されない。演算回路１１６には、セレクタ１２２によって選択された出力が入力される。
【００８２】
演算回路１１８は、レジスタ値RSからqi^2を減算し、結果を出力する。演算回路１１８の出力はＣＳＡ１０８に入力される。
【００８３】
本演算処理回路１ａにおいて、レジスタ１０１〜１０４，判定回路１０５，右シフト回路１１０，１１１，演算回路１１３，１１４，１１６，１１７，Log Table回路１０９およびＣＳＡ１０７，１０８が、指数演算および対数演算を処理する第１の処理部を構成する。
【００８４】
また、レジスタ１０１〜１０４，判定回路１０６，演算回路１１５，１１７，１１８，１１９，１３０，１３１，処理回路１１２，セレクタ１２０，１２１およびＣＳＡ１０８が、除算および開平演算を処理する第２の処理部を構成する。
【００８５】
制御ユニット１０は本演算処理回路１ａにおける演算処理を制御する。制御ユニット１０はプログラムからの指示で動作する。
【００８６】
制御ユニット１０は、命令デコーダとしての機能を備え、図示しない命令レジスタに読み込まれた命令の内容を解読し、本演算処理回路１ａを制御する。
【００８７】
メモリ１１は、例えばＲＡＭ（Random Access Memory）である。メモリ１１には、例えば、各レジスタ１０１〜１０４の初期値が格納されている。初期値は演算処理の種類（指数演算，対数演算，除算および開平演算）に応じて、それぞれ備えられている。
【００８８】
制御ユニット１０は、本演算処理回路１ａにおける演算処理の開始時に、各レジスタ１０１〜１０４の初期化を行なう。制御ユニット１０は本演算処理回路１ａにおいて実行する演算種類に応じた初期値をメモリ１１から読み出し、各レジスタ１０１〜１０４に格納することで初期化を行なう。
【００８９】
また、制御ユニット１０は、演算処理の結果を格納するレジスタ１０１〜１０４から演算結果を読み出し、出力させる。
【００９０】
制御ユニット１０は、判定回路１０５，１０６の選択も行なう。すなわち、実行を指示された演算種類に応じて、判定回路１０５，１０６を選択し、機能させる。
【００９１】
制御ユニット１０は、各セレクタ１２０〜１２６の切り替え制御を行なってもよい。また、制御ユニット１０は、本演算処理回路１ａにおける演算処理の開始指示を行なってもよい。
【００９２】
制御ユニット１０は、本演算処理回路１ａにおける演算の繰り返し（ループ）回数を示すｉを管理してもよい。制御ユニット１０は、iのカウントを行ない、このiの値と予め設定された閾値（imax）とを比較することでループが終わったという判断を行なってもよい。
【００９３】
（Ｂ）動作
上述の如く構成された第１実施形態の一例としての演算処理回路１ａの処理を、図３〜図６に示すフローチャート（ステップＳ１〜Ｓ３４）に従って説明する。なお、図３はステップＳ１〜ステップＳ９の処理を、図４はステップＳ１０〜Ｓ１７の処理を、図５はステップＳ１８〜Ｓ２５の処理を、図６はステップＳ２６〜Ｓ３４の処理を、それぞれ示す。
【００９４】
演算処理の開始に際して、ｘ，ｙが入力される。図３のステップＳ１において、制御ユニット１０は演算種類の確認を行なう。演算種類が指数演算である場合には（ステップＳ１のEXPルート参照）、図３のステップＳ２に移行する。
【００９５】
ステップＳ２において、レジスタ１０１〜１０４の初期化が行なわれる。レジスタの初期化は、例えば、制御ユニット１０によって行なわれる。例えば、レジスタ１０１〜１０４に対して、L1=x，E1=1となるように初期化が行なわれる。なお、LS + LC = L1であり、例えば、LSとLCとのいずれか一方にxを設定し、他方に0を設定する。同様に、ES + EC =E1であり、ESとECとのいずれか一方に1を設定し、他方に0を設定する。
【００９６】
図３のステップＳ３では、処理対象の指数演算においてiが予め規定された最大値（imax）に到達するまで、ステップＳ８までの制御を繰り返し実施するループ処理を開始する。
【００９７】
図３のステップＳ４では、判定回路１０５が、Liに基づきnを決定しLog Table回路１０９および演算回路１１３，１１４，１１６，１１７に出力する。
【００９８】
図３のステップＳ５において、Log Table回路１０９が、log(1+n×2^-2i)の値を出力する。図３のステップＳ６において、ＣＳＡ１０７は、Li演算（上記式（１）参照）を行なう。
【００９９】
また、図３のステップＳ７において、右シフト回路１１０，１１１，演算回路１１３，１１４，１１６，１１７およびＣＳＡ１０８が、指数演算におけるEi演算（上記式（２）参照）を実現する。
【０１００】
その後、制御が図３のステップＳ８に進む。ステップＳ８では、ステップＳ３に対応するループ端処理が実施される。ここで、iがimaxに到達すると（i = imax）、図３のステップＳ９に演算処理が移行する。
【０１０１】
図３のステップＳ９において、Eiは後段の処理部（例えば、他の演算回路等）に出力され、処理を終了する。
【０１０２】
一方、図３のステップＳ１における演算種類の確認の結果、演算種類が対数演算である場合には（ステップＳ１のLOGルート参照）、図４のステップＳ１０に移行する。
【０１０３】
ステップＳ１０において、レジスタ１０１〜１０４の初期化が行なわれる。レジスタの初期化は、例えば、制御ユニット１０によって行なわれる。例えば、レジスタ１０１〜１０４に対して、L1=0，E1=xとなるように初期化が行なわれる。
【０１０４】
図４のステップＳ１１では、処理対象の対数演算においてiが予め規定された最大値（imax）に到達するまで、ステップＳ１６までの制御を繰り返し実施するループ処理を開始する。
【０１０５】
図４のステップＳ１２では、判定回路１０５が、Eiに基づきnを決定しLog Table回路１０９および演算回路１１３，１１４，１１６，１１７に出力する。
【０１０６】
図４のステップＳ１３において、Log Table回路１０９が、log(1+n×2^-2i)の値を出力する。図４のステップＳ１４において、ＣＳＡ１０７は、Li演算（上記式（１）参照）を行なう。
【０１０７】
また、図４のステップＳ１５において、右シフト回路１１０，１１１，演算回路１１３，１１４，１１６，１１７およびＣＳＡ１０８が、対数演算におけるEi演算（上記式（２）参照）を実現する。
【０１０８】
その後、制御が図４のステップＳ１６に進む。ステップＳ１６では、ステップＳ１１に対応するループ端処理が実施される。ここで、iがimaxに到達すると（i = imax）、図４のステップＳ１７に演算処理が移行する。
【０１０９】
図４のステップＳ１７において、Liは後段の処理部（例えば、他の演算回路等）に出力され、処理を終了する。
【０１１０】
一方、図３のステップＳ１における演算種類の確認の結果、演算種類が除算である場合には（ステップＳ１のDIVルート参照）、図５のステップＳ１８に移行する。
【０１１１】
ステップＳ１８において、レジスタ１０１〜１０４の初期化が行なわれる。レジスタの初期化は、例えば、制御ユニット１０によって行なわれる。例えば、レジスタ１０１〜１０４に対して、Q0=0，R0=y，D=xとなるように初期化が行なわれる。なお、RS + RC = R0である。
【０１１２】
図５のステップＳ１９では、処理対象の除算においてiが予め規定された値（imax-1）に到達するまで、ステップＳ２４までの制御を繰り返し実施するループ処理を開始する。
【０１１３】
図５のステップＳ２０では、判定回路１０６が、RiおよびDに基づきqiを選択し出力する。図５のステップＳ２１において、演算回路１１９が、Qi+1 = Qi + qiを演算し出力する。
【０１１４】
図５のステップＳ２２において、処理回路１１２および演算回路１１６がD × qiを生成し出力する。また、図５のステップＳ２３において、ＣＳＡ１０８がRi+1= Ri -D × qiを算出する。
【０１１５】
その後、制御が図５のステップＳ２４に進む。ステップＳ２４では、ステップＳ１９に対応するループ端処理が実施される。ここで、iがimax-1に到達すると（i = imax-1）、図５のステップＳ２５に演算処理が移行する。
【０１１６】
ステップＳ２５において、Qiは後段の処理部（例えば、他の演算回路等）に出力され、処理を終了する。
【０１１７】
図３のステップＳ１における演算種類の確認の結果、演算種類が開平演算である場合には（ステップＳ１のSQRTルート参照）、図６のステップＳ２６に移行する。
【０１１８】
ステップＳ２６において、レジスタ１０１〜１０４の初期化が行なわれる。レジスタの初期化は、例えば、制御ユニット１０によって行なわれる。例えば、レジスタ１０１〜１０４に対して、Q0=0，R0=yとなるように初期化が行なわれる。
【０１１９】
図６のステップＳ２７では、処理対象の除算においてiが予め規定された値（imax-1）に到達するまで、ステップＳ３３までの制御を繰り返し実施するループ処理を開始する。
【０１２０】
図６のステップＳ２８では、判定回路１０６が、RiおよびQiに基づきqiを選択し出力する。図６のステップＳ２９において、演算回路１１９が、Qi+1 = Qi + qiを演算し出力する。
【０１２１】
図６のステップＳ３０において、演算回路１１５および処理回路１１２が2Qi × qiを生成する。また、図６のステップＳ３１において、演算回路１１８がRi - qi ^2を生成する。
【０１２２】
図６のステップＳ３２において、ＣＳＡ１０８が、上記式（５）に基づき、Ri+1 = Ri-2Qi × qi-qi^2を算出する。
【０１２３】
その後、制御が図６のステップＳ３３に進む。ステップＳ３３では、ステップＳ２７に対応するループ端処理が実施される。ここで、iがimax-1に到達すると（i = imax-1）、図６のステップＳ３４に演算処理が移行する。
【０１２４】
ステップＳ３４において、Qiは後段の処理部（例えば、他の演算回路等）に出力され、処理を終了する。
【０１２５】
（Ｃ）効果
このように、第１実施形態の一例としての演算処理回路１ａによれば、レジスタ１０１〜１０４，演算回路１１６およびＣＳＡ１０８を、指数・対数演算回路と除算・開平演算回路とで共用することで、指数・対数演算回路と除算・開平演算回路とを一つの演算処理回路１ａとして構成することができる。
【０１２６】
これにより、回路規模を削減し、回路サイズの小型化および製造コストの削減を実現することができる。
【０１２７】
（ＩＩ）第２実施形態の説明
図１に例示した第１実施形態の演算処理回路１ａにおいては、4in-2outのＣＳＡ１０８を用いているが、除算および開平演算において、このＣＳＡ１０８の入力が１つ未使用となっている。
【０１２８】
本第２実施形態においては、ＣＳＡ１０８の入力を全て使用することで有効に利用することができる。
【０１２９】
図７は第２実施形態の一例としての演算処理回路１ｂの構成を例示する図である。
【０１３０】
この図７に示すように、第２実施形態の演算処理回路１ｂは、第１実施形態の演算処理回路１ａの処理回路１１２に代えて処理回路２１２を備えるとともに、セレクタ１２１に代えてセレクタ２２１，２２２，２２３を備える。そして、その他の部分は第１実施形態の演算処理回路１ａと同様に構成されている。
【０１３１】
なお、図中、既述の符号と同一の符号は同様の部分を示しているので、その説明は省略する。また、図７においては、便宜上、制御ユニット１０およびメモリ１１の図示を省略している。
【０１３２】
処理回路２１２には、レジスタ１０２の出力値と、演算回路１１５からの出力値とがセレクタ１２０を介して入力される。また、処理回路２１２は４つの出力（×0，×2，×0，×1）を可能に構成されており、セレクタ２２１およびセレクタ２２２に対して、それぞれ２つの出力を行なう。
【０１３３】
処理回路２１２は、×0,×1,×2の3信号を生成する。除算時には、セレクタ１２０はレジスタ値Dを出力する。処理回路２１２と演算回路１１６，１１７とがDを0倍/±1倍/±2倍することにより、式（３）のD×qiの部分が生成される。
【０１３４】
一方、開平演算時には、演算回路１１５がレジスタ値Qの2倍（2Q）を出力し、セレクタ１２０が2Qを出力する。処理回路２１２と演算回路１１６，１１７とが2Qを0倍/±1倍/±2倍することにより、式（５）の2Qi×qiの部分が生成される。
【０１３５】
処理回路２１２は、固定値0（×0）と、入力値をスルー出力した値（×1）、入力値を1bit左シフトした値（×2）を生成し出力する。
【０１３６】
処理回路２１２に設定されるこれらの値は、判定回路１０６により選択される選択肢に相当する。
【０１３７】
処理回路２１２には予め規定された固定値（×0）が２つ設定されている。そして、これらの２つの固定値（×0）のうち一つは、出力値×1（スルー）とペアを成してセレクタ２２２に入力される。また、２つの固定値（×0）のうち他の一つは、演算回路１１５からの出力値×2（左シフト）とペアを成してセレクタ２２１に入力される。
【０１３８】
すなわち、本第２実施形態の演算処理回路１ｂにおいては、セレクタ２２２には、処理回路２１２から×0または×1（×0/×1）が入力され、セレクタ２２１には、処理回路２１２から×0または×2（×0/×2）が入力される。
【０１３９】
このように、本第２実施形態においては、セレクタ１２０の出力が、×0/×2と、×0/×1との２つの２択セレクタ２２１，２２２に入力されるように構成されている。
【０１４０】
各セレクタ２２１，２２２は、判定回路１０６によって選択されたqiの値に応じてセレクト対象を選択して出力する。
【０１４１】
本第２実施形態の演算処理回路１ｂにおいては、処理回路２１２の複数の出力値の中から、２つのセレクタ２２１，２２２がそれぞれ１つの出力値を選択して出力する。これにより、ＣＳＡ１０８には、セレクタ２２１からの出力と、セレクタ２２２からの出力が入力され、ＣＳＡ１０８の入力信号線を余さず使用することができる。すなわち、ＣＳＡ１０８を効率的に使用することができる。
【０１４２】
なお、セレクタ２２１，２２２の各出力値を組み合わせることで、判定回路１０６により選択されたqiを再現することができる。
【０１４３】
図８は第２実施形態の一例としての演算処理回路１ｂのqi選択結果に対する各セレクタのセレクト対象を示す図である。なお、この図８において、“×0/×1セレクタ”はセレクタ２２２を示し、“×0/×2セレクタ”はセレクタ２２１を示す。
【０１４４】
この図８に示すセレクト対象は、判定回路１０６によって選択されたqiを再現するためにセレクタ２２１，２２２が選択すべき出力を示している。
【０１４５】
例えば、判定回路１０６によって選択されたqiが“-1×2^-2i”である場合には、セレクタ２２２（×0/×1セレクタ）は“×1（スルー）”を選択してその値を出力させ、セレクタ２２１（×0/×2セレクタ）は“×0（固定値）”を選択してその値を出力させる。
【０１４６】
制御ユニット１０は、この図８に例示するような参照情報を予めメモリ１１に記憶しておき、この参照情報を参照してセレクタ２２１，２２２の切り替え制御を行なってもよい。
【０１４７】
セレクタ２２１からの出力はセレクタ２２３に入力される。また、セレクタ２２３には、演算回路１１４の出力も入力される。セレクタ２２３によって選択された出力は演算回路１１７に入力され、この演算回路１１７において符号反転された後、ＣＳＡ１０８に入力される。
【０１４８】
セレクタ２２３は、除算または開平演算を行なう場合にはセレクタ２２１からの入力を選択して出力させる。一方、セレクタ２２３は、指数演算または対数演算を行なう場合には演算回路１１４からの入力を選択して出力させる。
【０１４９】
ＣＳＡ１０８には、演算回路１１６，１１７，１１８からの各出力およびレジスタ１０４の出力が入力される。
【０１５０】
本発明の第２実施形態としての演算処理回路１ｂによれば、上述した第１実施形態と同様の作用効果を得ることができる他、除算または開平演算を行なうに際して、qiを±3×2^-2iの中から選ぶことが可能となる。すなわち、qiの選択肢を増やすことができる。
【０１５１】
また、 qiの選択肢を増やすことにより、判定回路１０６における判定論理の簡略化が可能となり、判定回路１０６の論理段数を減らすことができ、これにより判定回路１０６におけるディレイを削減することができる。
【０１５２】
（ＩＩＩ）第３実施形態の説明
図９は第３実施形態の一例としての演算処理回路１ｃの構成を例示する図である。
【０１５３】
この図９示すように、第３実施形態の演算処理回路１ｃは、図７に示した第２実施形態の演算処理回路１ｂの処理回路２１２に代えて処理回路３１２を備えるとともに、セレクタ２２１，２２２に代えてセレクタ３２１，３２２を備える。そして、その他の部分は第２実施形態の演算処理回路１ｂと同様に構成されている。
【０１５４】
なお、図中、既述の符号と同一の符号は同様の部分を示しているので、その説明は省略する。また、図９においては、便宜上、制御ユニット１０およびメモリ１１の図示を省略している。
【０１５５】
また、本第３実施形態の演算処理回路１ｃにおいて、演算回路１１６を“＋ｏｒ−（Ａ）”と表すことがある。また、演算回路１１７を“＋ｏｒ−（Ｂ）”と表すことがある。
【０１５６】
処理回路３１２には、レジスタ１０２の出力値と、演算回路１１５からの出力値とがセレクタ１２０を介して入力される。
【０１５７】
また、処理回路３１２は、６つの出力（×0，×4，×8，×0，×1，×2）を可能に構成されており、セレクタ３２１およびセレクタ３２２に対して、それぞれ３つの出力を行なう。
【０１５８】
すなわち、処理回路３１２において、６つの出力のうち、×0（固定値），×4（左シフト）および×8（左シフト）が、セレクタ３２１に入力される。また、６つの出力のうち、×0（固定値），×1（スルー）および×2（左シフト）が、セレクタ３２２に入力される。
【０１５９】
すなわち、本第３実施形態の演算処理回路１ｃにおいては、セレクタ３２１には、処理回路３１２から×0，×4および×8（×0/×4/×8）のいずれかが入力され、セレクタ３２２には、処理回路３１２から×0，×1および×2（×0/×1/×2）のいずれかが入力される。
【０１６０】
このように、本第３実施形態においては、セレクタ１２０の出力が、×0/×4/×8と、×0/×1/×2との２つの３択セレクタ３２１，３２２に入力されるように構成されている。
【０１６１】
これにより、qi=(-10 or -9 or -8 or -7 or -6 or -5 or -4 or -3 or -2 or -1 or 0 or +1 or +2 or +3 or +4 or +5 or +6 or +7 or +8 or +9 or +10 )×2^-2iとなる。
【０１６２】
各セレクタ３２１，３２２は、判定回路１０６によって選択されたqiの値に応じてセレクト対象を選択して出力する。
【０１６３】
本第３実施形態の演算処理回路１ｃにおいては、処理回路３１２に設定された複数の出力値の中から、２つのセレクタ３２１，３２２がそれぞれ１つの出力値を選択して出力する。これにより、ＣＳＡ１０８には、セレクタ３２１からの出力と、セレクタ３２２からの出力が入力され、ＣＳＡ１０８の入力信号線を余さず使用することができる。すなわち、ＣＳＡ１０８を効率的に使用することができる。
【０１６４】
なお、×0，×1，×2，×4，×8の各演算は実質的には回路不要で実現できる。すなわち、×0演算は固定値0を出力することで実現可能であり、×1演算は入力値をスルー出力することで実現可能である。また、×2，×4，×8は、1bit左シフト，2bit左シフト，3bit左シフトでそれぞれ実現可能である。これに対して、×3，×5，×6，×7，×9, ×10の各演算は乗算回路が必要となり回路規模およびディレイが増大するため、使用しないことが望ましい。
【０１６５】
図１０は第３実施形態の一例としての演算処理回路１ｃのqi選択結果に対する各セレクタのセレクト対象および符号を示す図である。なお、この図１０において、“×0/×1/×2セレクタ”はセレクタ３２２を示し、“×0/×4/×8セレクタ”はセレクタ３２１を示す。また、“＋ｏｒ−（Ａ）”は演算回路１１６を示し、“＋ｏｒ−（Ｂ）”は演算回路１１７を示す。
【０１６６】
この図１０に示すセレクト対象および符号は、判定回路１０６によって選択されたqiを再現するために、セレクタ３２１，３２２が選択すべき出力および演算回路１１６，１１７が設定すべき符号を示している。
【０１６７】
例えば、判定回路１０６によって選択されたqiが“＋1×2^-2i”である場合には、セレクタ３２２（×0/×1/×2セレクタ）は“×1（スルー）”を選択してその値を出力させ、演算回路１１６において符号“＋”を設定させる。また、セレクタ３２１（×0/×4/×8セレクタ）は“×0（固定値）”を選択してその値を出力させ、演算回路１１７において符号“＋”を設定させる。
【０１６８】
制御ユニット１０は、この図１０に例示するような参照情報を予めメモリ１１に記憶しておき、この参照情報を参照してセレクタ３２１，３２２の切り替え制御を行なってもよい。
【０１６９】
このように、第３実施形態の一例としての演算処理回路１ｃによれば、除算または開平演算において、第２実施形態の演算処理回路１ｂに比べてqiの選択肢を増やすことができる。qiの選択肢が増えることで、判定回路１０６における判定論理の簡略化が可能となり、判定回路１０６の論理段数を減らすことができ、これにより判定回路１０６におけるディレイを削減することができる。
【０１７０】
また、繰り返し演算１回毎に求めるbit数を増加させる高radix化を実現することができる。
【０１７１】
（ＩＶ）その他
図１１は上述した各実施形態の一例としての演算処理回路１ａ，１ｂ，１ｃを、例えば、ディープラーニング等の用途のプロセッサに実装する構成例を示す図である。
【０１７２】
図１１に例示するプロセッサは、命令ユニットと、複数のレジスタファイル＃１〜＃ｍと、複数の実行ユニット＃１〜＃ｍを備える。
【０１７３】
各実行ユニットは複数（ｎ個）の演算器＃１〜＃ｎを備え、これらの演算器に演算処理回路１ａ，１ｂ，１ｃが備えられる。
【０１７４】
この図１１に例示するプロセッサシステムは、全体に対する演算器の占有率が大きいものであるが、このような各演算器に本演算処理回路１ａ，１ｂ，１ｃを適用することで、演算器の回路規模削減の効果を奏することができる。
【０１７５】
そして、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
【０１７６】
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
【符号の説明】
【０１７７】
１ａ，１ｂ    演算処理回路
１０    制御ユニット
１１    メモリ
１０１〜１０４    レジスタ
１０５，１０６    判定回路
１０７，１０８    ＣＳＡ
１０９    Log Table回路
１１０，１１１    右シフト回路
１１２，２１２，３１２    処理回路
１１３〜１１９，１３０，１３１    演算回路
１２０〜１２６，２２１〜２２３，３２１，３２２    セレクタ
【図１】
2020090024.tif 000003
【図２】
2020090024.tif 000004
【図３】
2020090024.tif 000005
【図４】
2020090024.tif 000006
【図５】
2020090024.tif 000007
【図６】
2020090024.tif 000008
【図７】
2020090024.tif 000009
【図８】
2020090024.tif 000010
【図９】
2020090024.tif 000011
【図１０】
2020090024.tif 000012
【図１１】
2020090024.tif 000013
【国際調査報告】
2020090024.tif 000014
2020090024.tif 000015
2020090024.tif 000016