JP2018092325A - 演算処理装置 - Google Patents
演算処理装置 Download PDFInfo
- Publication number
- JP2018092325A JP2018092325A JP2016234353A JP2016234353A JP2018092325A JP 2018092325 A JP2018092325 A JP 2018092325A JP 2016234353 A JP2016234353 A JP 2016234353A JP 2016234353 A JP2016234353 A JP 2016234353A JP 2018092325 A JP2018092325 A JP 2018092325A
- Authority
- JP
- Japan
- Prior art keywords
- arithmetic
- calculation
- units
- unit
- circuit
- 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.)
- Pending
Links
Images
Landscapes
- Information Transfer Systems (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
- Bus Control (AREA)
Abstract
【課題】各々が複数のプロセッサを備える複数の演算ユニット間でメモリに記憶されるデータの共有を可能にする演算処理装置を提供する。【解決手段】本発明の一実施形態に係る演算処理装置は、互いに接続された複数の演算ユニットを備え、前記複数の演算ユニットの各々は、複数の算術論理演算器をそれぞれ含む、複数のプロセッサと、前記複数のプロセッサの演算結果を受信して保持するメモリと、を備え、前記メモリは、別の演算ユニット演算結果を受信して保持し、前記複数のプロセッサは、同一の演算ユニットのメモリに保持された前記演算結果を取得する。【選択図】図1
Description
本発明は、演算処理装置に関する。
従来、複数のプロセッサで単一の共有メモリにアクセスし、書き込み及び読み出しを実行する技術がある。(例えば、特許文献1)
しかしながら、従来の技術では、各々が複数のプロセッサを備える複数の演算ユニット間ではメモリの共有ができないという問題がある。また、複数のプロセッサに含まれる算術論理演算器(ALU:Arithmetic Logic Unit)のうち、任意のALUの演算結果を共有メモリに書き込めないという問題がある、また、演算ユニットに含まれるプロセッサの演算結果を効率よく共有メモリに書き込めないという問題がある。
本発明は、各々が複数のプロセッサを備える複数の演算ユニット間ではメモリの共有を可能にする演算処理装置を提供することを目的の一つとする。
また、本発明は、複数のプロセッサに含まれるALUのうち、任意のALUの演算結果を共有メモリに書き込むことができる演算処理装置を提供することを目的の一つとする。
また、本発明は、演算ユニットに含まれる任意のプロセッサの演算結果を共有メモリに書き込むことができる演算処理装置を提供することを目的の一つとする。
本発明の一実施形態によれば、互いに接続された複数の演算ユニットを備え、前記複数の演算ユニットの各々は、複数の算術論理演算器をそれぞれ含む、複数のプロセッサと、前記複数のプロセッサの演算結果を受信して保持するメモリと、を備え、前記メモリは、別の演算ユニットの演算結果を受信して保持し、前記複数のプロセッサは、同一の演算ユニットのメモリに保持された前記演算結果を取得する、演算処理装置が提供される。
前記複数の演算ユニットの各々は、前記複数のプロセッサの演算結果を受信し、受信した前記複数のプロセッサの演算結果を前記同一の演算ユニットのメモリに順次送信する第1の調停回路をさらに備えてもよい。
前記複数のプロセッサの各々は、前記複数の算術論理演算器の演算結果を縮約する第1の縮約回路をさらに備えてもよい。
前記複数の演算ユニットの各々は、前記複数のプロセッサの演算結果を縮約する第2の縮約回路をさらに備えてもよい。
前記複数の演算ユニットの各々は、前記別の演算ユニットの演算結果を取得し、取得した前記別の演算ユニットの演算結果を前記同一の演算ユニットのメモリに順次送信する第2の調停回路をさらに備えてもよい。
前記複数の演算ユニットの各々は、前記第2の調停回路から、前記別の演算ユニットの演算結果を順次受信し、受信した前記別の演算ユニットの演算結果を縮約して前記同一の演算ユニットのメモリに送信する第3の縮約回路をさらに備えてもよい。
前記第1の調停回路は、前記同一の演算ユニットのメモリに保持された前記演算結果を取得し、取得した前記演算結果を順次前記複数のプロセッサに送信してもよい。
本発明によれば、各々が複数のプロセッサを備える複数の演算ユニット間で、メモリに記憶されるデータの共有を可能にする演算処理装置を提供することができる。
本発明によれば、複数のプロセッサに含まれるALUのうち、任意のALUの演算結果を共有メモリに書き込むことができる演算処理装置を提供することができる。
本発明によれば、演算ユニットに含まれる任意のプロセッサの演算結果を共有メモリに書き込むことができる演算処理装置を提供することができる。
以下、本発明の一実施形態について、図面を参照しながら詳細に説明する。以下に示す実施形態は本発明の実施形態の一例であって、本発明はこれらの実施形態に限定されるものではない。なお、本実施形態で参照する図面において、同一部分または同様な機能を有する部分には同一の符号または類似の符号(数字の後にA、Bなどを付しただけの符号)を付し、その繰り返しの説明は省略する場合がある。また、図面の寸法比率は説明の都合上実際の比率とは異なったり、構成の一部が図面から省略されたりする場合がある。
図1は、本発明の一実施形態に係る演算処理装置100の概略構成を示すブロック図である。演算処理装置100は、CPU101と複数の演算ユニット103とを備える。尚、図1では、一例として4つの演算ユニット103a〜103dを示しているが、本発明に係る演算処理装置に含まれる演算ユニットの数は4つに限定されるわけではない。
CPU101は、各演算ユニット103a〜103dに対し、処理手順を含むプログラム及びデータをロードし、実行するよう指示を行う。複数の演算ユニット103a〜103dは、CPU101からロードしたプログラムに基づき、取得したデータの処理を実行する。また、演算ユニット103a〜103dは、取得したデータの処理を実行中にCPU101から新たなプログラム及びデータを順次ロードし、取得したデータの処理を実行する。複数の演算ユニット103a〜103dは、互いに接続されており、DMAによるデータの送受信が可能である。
図2は、演算ユニット103の概略構成の一例を示すブロック図である。演算ユニット103は、CPUインターフェース201、複数の演算部(プロセッサ)203−0〜203−7、共有メモリ部205を備える。尚、図2では、一例として8つの演算部203−0〜203−7を示しているが、演算ユニット103に含まれる演算部の数は8つに限定されるわけではない。演算ユニット103は、縮約部(後述する第2の縮約回路401に対応する)207を備えてもよい。図1における各演算ユニット103a〜103dは、図2に示す演算ユニット103の構成をそれぞれ有する。
CPUインターフェース201は、CPU101と演算部203−0〜203−7との接続を制御する。具体的には、CPUインターフェース201は、CPU101と演算部203−0〜203−7間のデータの送受信を行う。
演算部203−0〜203−7は、CPUインターフェース201を介したCPU101から取得したプログラム及びデータに基づき、演算を行う。演算部203−0〜203−7の構成については、後述する。
共有メモリ部205は、レジスタ、後述する第1の調停回路509及び第2の調停回路511を含む複数の調停回路、縮約回路(後述する第3の縮約回路513に対応する)、及びメモリ(後述するメモリ515に対応する)を備える。メモリは、RAMから構成され、演算部203−0〜203−7の演算結果を保持する。共有メモリ部205は、同一の演算ユニットにおける演算部203−0〜203−7の演算結果だけではなく、他の演算ユニットにおける演算部の演算結果を取得して保持することができる。つまり、共有メモリ部205のメモリは、演算処理装置100の演算ユニット103a〜103dで共有されるメモリである。メモリに保持された演算結果は、同一の演算ユニットにおける演算部203−0〜203−7に送信されてもよい。
縮約部207は、縮約回路(後述する第2の縮約回路401に対応する)を備え、縮約回路は加算器を備える。縮約回路は、シフタ、丸め器及び飽和器を備えていてもよい。縮約部207は、演算部203−0〜203−7の演算結果を一度に加算する。加算された演算結果は、共有メモリ部205に送信される。
図3は、演算部の概略構成の一例を示すブロック図である。図3に示す演算部301は、図2における演算部203−0〜203−7の各々に対応する。演算部301は、a(複数)個のALUと、a個のALUに対応する第1の縮約回路303と、を備える。一例として、演算部301は、ALUを64個備えてもよい。尚、演算部301に含まれるALUの数は、64個に限定されるわけではない。
a個のALUの各々は、乗算器、加算器、レジスタ、シフタ、飽和器などを備え、算術演算及び/又は論理演算を行う。以下では、a個のALUのうち、ALU#0を初段のALUと呼び、ALU#a−1を最終段のALUと呼ぶ。a個のALUは、互いに並列動作し、各々による演算結果をクロック信号に同期して同時に出力する。
第1の縮約回路303は、a個のALUから出力された演算結果を縮約する。第1の縮約回路303は、a個のALUから同時並行して出力された演算結果を一度に加算する加算器305(以下、第1の加算器305と呼ぶ)を備える。つまり、第1の加算器305は、a個のALUから同時並行して出力されたa個の演算結果をパイプライン処理にて加算する。
第1の縮約回路303は、第1の加算器305の演算結果をシフトするシフタ307(以下、第1のシフタ307と呼ぶ)と、シフトした演算結果を端数処理する丸め器309(以下、第1の丸め器309と呼ぶ)と、端数処理された演算結果を飽和処理する飽和器311(以下、第1の飽和器311と呼ぶ)と、を備えてもよい。
第1のシフタ307は、第1の加算器305から出力された演算結果を受信し、受信された第1の加算器305からの演算結果に対してシフト演算を行う。第1のシフタ307でシフトされた演算結果は、第1の丸め器309に送信されてもよい。
第1の丸め器309は、第1のシフタ307によってシフトされた演算結果に対して、最近接丸め、0方向への丸め、+∞への丸め、−∞への丸めなどの端数処理を行う。第1の丸め器309によって端数処理された演算結果は、第1の飽和器311に送信されてもよい。第1の飽和器311は、受信した端数処理された演算結果を飽和処理する。
演算部301での演算結果は、図2に示した共有メモリ部205又は縮約部207に送信される。演算部301での演算結果は、第1の縮約回路303において第1のシフタ307、第1の丸め器309及び第1の飽和器311が省略される場合は、第1の加算器305での演算結果であってもよい。第1の縮約回路303において第1のシフタ307、第1の丸め器309及び/又は第1の飽和器311が備えられる場合は、第1のシフタ307、第1の丸め器309又は第1の飽和器311での演算結果が演算部301の演算結果として出力されてもよい。
また、第1の縮約回路303での演算結果は、必要に応じて対応する演算部301のALUに送信されてもよい。図3においては、第1の飽和器311でのALU#0に送信される様子を示している。図3では、第1の飽和器311での演算結果が対応するALU#0にのみ送信される様子を示しているが全てのALU#0〜ALU#a−1に送信されてもよく、任意の複数のALUに送信されてもよい。尚、ALUに送信される第1の縮約回路303での演算結果は、第1のシフタ307、第1の丸め器309及び第1の飽和器311が省略される場合は、第1の加算器305での演算結果であってもよい。また、ALUに送信される第1の縮約回路303での演算結果は、第1のシフタ307又は第1の丸め器309での演算結果であってもよい。
図4は、1つの演算ユニット103aにおいて、演算部203−0〜203−7から出力された演算結果が、第2の縮約回路401又は共有メモリ部403に送信される構成を示したブロック図である。各演算部203−0〜203−7は、図3に示した演算部301と同じ構成を有する。図4における第2の縮約回路401は図2に示した縮約部207に対応し、共有メモリ部403は図2に示した共有メモリ部205に対応する。また、図4において、演算ユニット103b〜103dの内部構成は、演算ユニット103aと同じであるため省略している。
図4に示すように、1つの演算ユニット103aにおいて、演算部203−0〜203−7の演算結果は、第2の縮約回路401に送信される。演算部203−0〜203−7の演算結果は、第2の縮約回路401において互いに加算され、加算された演算結果が共有メモリ部403に送信されて記憶、保持されてもよい。また、演算部203−0〜203−7の演算結果は、共有メモリ部205に直接送信されて記憶、保持されてもよい。
図示はしていないが、演算ユニット103b〜103dも演算ユニット103aと同じ構成を有する。各演算ユニット103b〜103dの共有メモリ部403は、同一の演算ユニット内の演算部203−0〜203−7の演算結果だけではなく、他の演算ユニットにおける共有メモリ部と接続し、他の演算ユニットの演算部の演算結果を取得して保持することができる。つまり、演算ユニット103aの共有メモリ部403は、他の演算ユニット103b〜103dの図示していない共有メモリ部と接続し、他の演算ユニット103b〜103dにおける演算結果を取得し、保持することができる。また、共有メモリ部403のメモリに保持された演算結果は、同じ演算ユニットの演算部203−0〜203−7に送信されることができる。つまり、演算ユニット103aの共有メモリ部403のメモリに保持された演算結果は、演算ユニット103aの演算部203−0〜203−7に送信されることができる。
図5は、演算ユニット103aの第2の縮約回路401及び共有メモリ部403の概略構成を示したブロック図である。図5において、演算ユニット103aの演算部203−0〜203−7の内部構成は、省略して示している。また、図5において、演算ユニット103b〜103dの内部構成は、演算ユニット103aと同じであるため省略している。
演算ユニット103aにおいて、第2の縮約回路401は、演算部203−0〜203−7から出力された演算結果を縮約する。第2の縮約回路401は、演算部203−0〜203−7から同時並行して出力された演算結果を一度に加算する加算器501(以下、第2の加算器501と呼ぶ)を備える。つまり、第2の加算器501は、演算部203−0〜203−7から同時並行して出力された8個の演算結果をパイプライン処理にて加算する。
第2の縮約回路401は、第2の加算器501の演算結果をシフトするシフタ503(以下、第2のシフタ503と呼ぶ)と、シフトした演算結果を端数処理する丸め器505(以下、第2の丸め器505と呼ぶ)と、端数処理された演算結果を飽和処理する飽和器507(以下、第2の飽和器507と呼ぶ)と、を備えてもよい。
第2のシフタ503は、第2の加算器501から出力された演算結果を受信し、受信された第2の加算器501からの演算結果に対してシフト演算を行う。第2のシフタ503でシフトされた演算結果は、第2の丸め器505に送信されてもよい。
第2の丸め器505は、第2のシフタ503によってシフトされた演算結果に対して、最近接丸め、0方向への丸め、+∞への丸め、−∞への丸めなどの端数処理を行う。第2の丸め器505によって端数処理された演算結果は、第2の飽和器507に送信されてもよい。第2の飽和器507は、受信した端数処理された演算結果を飽和処理する。
第2の縮約回路401での演算結果は、共有メモリ部403に送信される。第2の縮約回路401での演算結果は、第2の縮約回路401において第2のシフタ503、第2の丸め器505及び第2の飽和器507が省略される場合は、第2の加算器501での演算結果であってもよい。第2の縮約回路401において第2のシフタ503、第2の丸め器505及び/又は第2の飽和器507が備えられる場合は、第2のシフタ503、第2の丸め器505又は第2の飽和器507での演算結果が第2の縮約回路401の演算結果として出力されてもよい。
尚、演算部203−0〜203−7からの演算結果は、第2の縮約回路401において縮約されずに、そのまま、共有メモリ部403のメモリ515に書き込まれてもよい。この場合、演算部203−0〜203−7からの演算結果は、第2の縮約回路401を介さずに、そのまま共有メモリ部403に送信される。
演算ユニット103aにおいて、共有メモリ部403は、第1の調停回路509、第2の調停回路511、第3の縮約回路513及びメモリ515を備える。
第1の調停回路509は、演算部203−0〜203−7から出力された演算結果を第2の調停回路511に送信する。演算部203−0〜203−7から出力された演算結果は、第2の縮約回路401から出力された縮約された演算結果であってもよく、演算部203−0〜203−7からそれぞれ出力された演算結果であってもよい。第1の調停回路509は、演算部203−0〜203−7からそれぞれ出力された演算結果を受信する場合、受信した演算結果を第2の調停回路511に順次送信する。また、第1の調停回路509は、メモリ515に保持された演算結果を取得し、取得した演算結果を演算部203−0〜203−7に順次送信する。
第2の調停回路511は、第1の調停回路509から受信した演算結果を第3の縮約回路513に送信する。また、第2の調停回路511は、他の演算ユニット103b〜103dの演算結果を受信し、第3の縮約回路513に送信する。具体的には、第2の調停回路511は、他の演算ユニット103b〜104へ/から演算結果を送受信する、共有メモリ部403の送受信部(図示せず)を介して他の演算ユニット103b〜103dから送信された演算結果を受信し、第3の縮約回路513に送信する。
後述する第3の縮約回路513において、演算ユニット103a〜103dの演算結果を縮約する場合、第2の調停回路511は、第1の調停回路509から受信した演算ユニット103aの演算結果と他の演算ユニット103b〜103dの演算結果を同時に第3の縮約回路513に送信する。また、第3の縮約回路513において、演算ユニット103a〜103dの演算結果を縮約しない場合、第2の調停回路511は、受信した演算ユニット103a〜103dの演算結果を優先度に基づき、第3の縮約回路513に順次送信する。当該優先度は、固定されていてもよく、可変であってもよい。
また、第2の調停回路511は、演算ユニット103aの演算部203−0〜203−7から出力された演算結果を送受信部に送信する。送受信部に送信された演算結果は、他の演算ユニット103b〜103dの共有メモリ部に送信される。
第3の縮約回路513は、第2の調停回路511から受信した演算結果を縮約する。即ち、第3の縮約回路513は、受信した演算結果を加算する加算器を備える。また、第3の縮約回路513は、加算器によって加算された演算結果をシフトするシフタ、シフトされた演算結果を端数処理する丸め器、及び/又は受信した端数処理された演算結果を飽和処理する飽和器を備えてもよい。第3の縮約回路513の構成は、上述した第1の縮約回路303及び第2の縮約回路401と略同じであるため、詳細な説明は省略する。第3の縮約回路513は、演算結果をメモリ515に送信する。メモリ515は、第3の縮約回路513から送信された演算結果を記憶し、保持する。以下、図6〜図11を参照して、本発明の一実施形態に係る演算処理装置の構成について詳しく説明する。
図6は、演算ユニット103aにおいて、演算ユニット103aの演算部203−0〜203−7から出力されたそれぞれの演算結果rc203−0〜rc203−7をメモリ515に書き込む構成を示したブロック図である。図6において、演算ユニット103aの演算部203−0〜203−7の内部構成は、省略して示している。また、図6において、演算ユニット103b〜103dの内部構成は、演算ユニット103aと同じであるため省略している。
図6に示すように、演算部203−0〜203−7から出力されたそれぞれの演算結果rc203−0〜rc203−7は、共有メモリ部403の第1の調停回路509に送信される。第1の調停回路509は、演算結果rc203−0〜rc203−7を第2の調停回路511に順次送信する。つまり、第1の調停回路509は、演算結果rc203−0〜rc203−7の優先度を決定し、優先度の高い順に第2の調停回路511に順次送信する。演算結果rc203−0〜rc203−7の優先度は、固定されていてもよく、可変であってもよい。
第2の調停回路511は、受信した演算結果rc203−0〜rc203−7を第3の縮約回路513に順次送信する。第3の縮約回路513は、受信した演算結果rc203−0〜rc203−7の各々に0(ゼロ)を加算し、メモリ51に送信する。第3の縮約回路513では、加算器によって演算結果rc203−0〜rc203−7の各々に0(ゼロ)を加算するため、実質的に演算結果rc203−0〜rc203−7がそのままメモリ515に送信され、メモリ515に記憶され、保持される。第3の縮約回路513では、必要に応じて、演算結果rc203−0〜rc203−7が、飽和器によって飽和されてもよい。ここでは、演算結果rc203−0〜rc203−7の各々が加算器によって0(ゼロ)を加算された後に、飽和器によって飽和処理された場合の演算結果も演算結果rc203−0〜rc203−7として記載する。
また、演算結果rc203−0〜rc203−7を他の演算ユニット103b〜104dの共有メモリ部のメモリに書き込む場合、第2の調停回路511は、第1の調停回路509から順次送信されてくる演算結果rc203−0〜rc203−7を送受信部を介して他の演算ユニット103b〜104dの共有メモリ部の送受信部に送信する。
図示はしていないが、演算ユニット103b〜104dの各々において、演算ユニット103aから送信された演算結果rc203−0〜rc203−7は、演算ユニット103b〜104dのそれぞれの共有メモリ部の送受信部から演算ユニット103b〜104dの共有メモリ部の第2の調停回路に送信される。第2の調停回路に送信された演算ユニット103aの演算結果rc203−0〜rc203−7は、演算ユニット103b〜104dそれぞれの共有メモリ部の第3の縮約回路に送信され、第3の縮約回路において0(ゼロ)加算される。第3の縮約回路から出力された演算結果rc203−0〜rc203−7は、演算ユニット103b〜104dのそれぞれの共有メモリ部のメモリに送信されて記憶、保持される。
以上では、演算ユニット103aにおける全ての演算部203−0〜203−7の演算結果rc203−0〜rc203−7を共有メモリ部403のメモリ515に書き込む例について説明したが、演算ユニット103aにおける演算部203−0〜203−7のうち、任意の演算部の演算結果がメモリ515に書き込まれてもよい。
図7は、演算ユニット103aにおける演算部203−0のALU#0の演算結果rc203−0をメモリ515に書き込む構成を示すブロック図である。図7において、第1の縮約回路303及び第2の縮約回路401の内部構成は省略して示している。また、図7において、演算ユニット103b〜103dの内部構成は、演算ユニット103aと同じであるため省略している。
図7に示すように、演算部203−0のALU#0から出力された演算結果rc203−0は、第1の縮約回路303に送信される。演算部のALU#0を除くALU#1〜ALU#a−1からは、0(ゼロ)が演算結果rc203−1〜rc203a−1として出力される。第1の縮約回路303は、受信した演算結果rc203−0〜rc203a−1を第1の加算器305によって加算し、第2の縮約回路401に送信する。第1の縮約回路303では、演算結果rc203−0に演算結果rc203−1〜rc203a−1である0(ゼロ)を加算するため、実質的にALU#0の演算結果rc203−0がそのまま第2の縮約回路401に送信される。この際、第1の縮約回路303では、必要に応じて、0が加算された演算結果rc203−0が、第1のシフタ305によってシフトされてもよく、第1の丸め器309によって端数処理されてもよく、第1の飽和器311によって飽和されてもよい。ここでは、演算結果rc203−0が第1の加算器305によって0(ゼロ)を加算された後に、第1のシフタ307、第1の丸め器309及び/又は第1の飽和器311によってシフト、丸め(端数処理)及び/又は飽和された場合の演算結果も演算結果rc203として記載する。
尚、演算ユニット103aにおける、演算部203−1〜203−7の第1の縮約回路からは、0(ゼロ)が演算部203−1〜203−7の演算結果として、第2の縮約回路401に出力される。
第2の縮約回路401は、演算部203−0〜203−7の第1の縮約回路から受信した演算結果を加算する。具体的には、第2の縮約回路401は、演算部203−0の第1の縮約回路303から出力された、演算結果rc203−0に演算部203−1〜203−7から出力された演算結果である0(ゼロ)を第2の加算器501によって加算し、加算された演算結果を共有メモリ部403の第1の調停回路509に送信する。第2の縮約回路401では、第1の縮約回路303から受信した演算結果rc203−0に0(ゼロ)を加算するため、実質的にALU#0の演算結果rc203−0がそのまま第1の調停回路509に送信される。第2の縮約回路401では、必要に応じて、第2の加算器501による演算結果rc203−0が、第2のシフタ503によってシフトされてもよく、第2の丸め器505によって端数処理されてもよく、第2の飽和器507によって飽和されてもよい。ここでは、演算部203−0の演算結果rc203−0が第2の加算器501によって0(ゼロ)を加算された後に、第2のシフタ503、第2の丸め器505及び/又は第2の飽和器507によってシフト、丸め(端数処理)及び/又は飽和された場合の演算結果も演算結果rc203として記載する。
第1の調停回路509は、第2の縮約回路401から受信した演算結果rc203−0を第2の調停回路511に送信する。第2の調停回路511は、第1の調停回路509から受信した演算結果rc203−0を第3の縮約回路513に送信する。第3の縮約回路509は、受信した演算結果rc203−0に0(ゼロ)を加算し、加算した演算結果をメモリ51に送信する。第3の縮約回路513では、第2の調停回路511から受信した演算結果rc203−0に0(ゼロ)を加算するため、実質的にALU#0の演算結果rc203−0がそのままメモリ515に送信され、メモリ515に記憶され、保持される。
また、演算ユニット103aの演算部203−0のALU#0の演算結果rc203−0を他の演算ユニット103b〜104dの共有メモリ部のメモリに書き込む場合、第2の調停回路511は、第1の調停回路509から送信された演算結果rc203−0を送受信部を介して、他の演算ユニット103b〜104dの共有メモリ部の送受信部に送信する。
図示はしていないが、演算ユニット103aから送信された演算結果rc203−0は、送信先の演算ユニット103b〜104dのそれぞれの共有メモリ部の送受信部から演算ユニット103b〜104dの共有メモリ部の第2の調停回路に送信される。演算ユニット103b〜104dの第2の調停回路に送信された演算結果rc203−0は、演算ユニット103b〜104dそれぞれの共有メモリ部の第3の縮約回路に送信され、第3の縮約回路において0(ゼロ)が加算される。第3の縮約回路から出力された演算結果rc203−0は、演算ユニット103b〜104dのそれぞれの共有メモリ部のメモリに送信され、該メモリに記憶され、保持される。
以上に述べたように、本発明の一実施形態に係る演算処理装置100では、演算ユニットにおける、任意の演算部の任意のALUの演算結果だけをメモリに書き込み、保持することができる。
また、以上では、演算ユニット103aにおける任意の演算部の任意のALUの演算結果を共有メモリ部403のメモリ515に書き込む例について説明したが、図7に示した本発明の一実施形態に係る演算処理装置100の構成によると、演算ユニット103aにおける任意の演算部の任意の複数のALUの演算結果を縮約し、縮約された演算結果を共有メモリ部403のメモリ515に書き込むことができる。また、任意の複数の演算部の演算結果を縮約し、縮約された演算結果を共有メモリ部403のメモリ515に書き込むことができる。
例えば、演算ユニット103aにおける演算部203−0の任意の複数のALUの演算結果を縮約し、縮約された演算結果を共有メモリ部403のメモリ515に書き込む場合、メモリ515に書き込む複数のALUの演算結果が第1の縮約回路303において加算処理され、加算された演算結果が第2の縮約回路401に送信される。第2の縮約回路401以降の処理は、図7を参照して説明したとおりである。
また、例えば、任意の複数の演算部の演算結果を縮約し、縮約された演算結果を共有メモリ部403のメモリ515に書き込む場合、メモリ515に書き込む複数の演算部の演算結果が第2の縮約回路401において加算処理され、加算された演算結果が共有メモリ部403の第1の調停回路509に出力される。第1の調停回路509以降の処理は、図7を参照して説明したとおりである。
図8は、演算ユニット103b〜103dでの演算結果を演算ユニット103aの共有メモリ部403のメモリ515に書き込む構成を示すブロック図である。図8において、演算ユニット103aにおける演算部203−0〜203−7及び第1の縮約回路303の内部構成は省略して示している。また、図8において、演算ユニット103b〜103dの内部構成は、演算ユニット103aと同じであるため省略している。
図8に示すように、各演算ユニット103b〜103dの演算結果rc103b〜rc103dは、演算ユニット103b〜103dの各々の共有メモリ部における第2の調停回路から送受信部を介して演算ユニット103aの共有メモリ部403に送信される。演算結果rc103b〜rc103dは、各演算ユニット103b〜103dにおいて、図6及び図7を参照して説明した演算ユニット103aでの処理と同様の処理が行われることにより生成された演算結果である。
演算ユニット103b〜103dの各々から送信された演算結果rc103b〜rc103dは、演算ユニット103aの共有メモリ部403の送受信部によって受信され、送受信部から第2の調停回路511に送信される。
第2の調停回路511によって受信された、演算結果rc103b〜rc103dは、第2の調停回路511から、第3の縮約回路513に順次送信される。即ち、第2の調停回路511は、演算結果rc103b〜rc103dを優先度に基づいて第3の縮約回路513に順次送信する。当該優先度は、固定されていてもよく、可変であってもよい。
第3の縮約回路513は、受信した演算結果rc103b〜rc103dのそれぞれに0(ゼロ)を加算し、加算した演算結果をそれぞれメモリ515に送信する。第3の縮約回路513では、第2の調停回路511から受信した各演算結果rc103b〜rc103dに0(ゼロ)を加算するため、実質的に演算結果rc103b〜rc103dがそのままメモリ515に送信されて記憶され、保持される。
以上に述べたように、本発明の一実施形態に係る演算処理装置100では、他の演算ユニットにおける演算結果を取得し、取得した演算結果を対応するメモリに書き込み、保持することができる。
尚、図8では、演算ユニット103aが、他の演算ユニット103b〜103dの演算結果を取得する例を説明したが、演算ユニット103aは、他の演算ユニット103b〜103dのうち、任意演算ユニットの演算結果を取得し、取得した演算結果を対応するメモリに書き込み、保持することができる。
図9は、演算ユニット103a〜103dの各々における演算結果を全て縮約し、各演算ユニット103〜103dのメモリに記憶、保持する構成を示すブロック図である。図9において、第2の縮約回路401の内部構成は省略して示している。また、図9において、演算ユニット103b〜103dの内部構成は、演算ユニット103aと同じであるため省略している。
まず、各演算ユニット103a〜103dの各々において、全ての演算部の演算結果が縮約される。つまり、各演算ユニット103a〜103dの各々において、各演算部に含まれる全てのALUの演算結果が縮約された後、演算部単位で縮約された演算結果が演算ユニット単位で縮約される。次に、演算ユニット単位で縮約された演算結果は、各演算ユニットから他の演算ユニットに送信される。他の演算ユニットからの演算結果は、送信先の演算ユニットの演算結果と縮約されて、送信先のメモリに記憶され、保持される。
各演算ユニット103a〜103dの各々における、演算部単位での演算結果の縮約について説明する。図9に示すように、演算ユニット103aの演算部203−0〜203−7の各ALU#0〜ALU#a−1から出力された演算結果は、対応する演算部の第1の縮約回路303に送信され、第1の縮約回路303によって縮約される。第1の縮約回路303は、a個のALU(ALU#0〜ALU#a−1)から出力された演算結果を縮約する。具体的には、第1の縮約回路303は、a個のALUから同時並行して出力された演算結果を第1の加算器305によってパイプライン処理にて加算する。加算された演算結果は、第1の縮約回路303における第1のシフタ307〜第1の飽和器311によって、シフト、端数処理(丸め)及び/又は飽和されてもよい。各演算部203−0〜203−7の演算結果rc203−0〜rc203−7は、第2の縮約回路401に出力される。
以上に述べた演算ユニット103aにおける演算部単位での演算結果の縮約と同様に、演算ユニット103b〜103dにおいても、演算部単位で演算結果が縮約され、縮約された演算結果は、演算ユニット103b〜103dそれぞれの第2の縮約回路に出力される。
次に、演算ユニット単位での演算結果の縮約について説明する。上述したように、演算部単位で縮約された演算結果は、演算ユニット103a〜103dそれぞれの第2の縮約回路に送信され、縮約される。例えば、図9に示すように、演算ユニット103aにおいて、各演算部203−0〜203−7の演算結果rc203−0〜rc203−7は、各演算部203−0〜203−7の第1の縮約回路303から、第2の縮約回路401に同時並行に出力される。第2の縮約回路401は、演算部203−0〜203−7から出力された演算結果rc203−0〜rc203−7を縮約する。具体的には、第2の縮約回路401は、演算部203−0〜203−7から同時並行して出力された演算結果rc203−0〜rc203−7を加算器501によってパイプライン処理にて加算する。加算された演算結果は、第2の縮約回路401における第2のシフタ503〜第2の飽和器507によって、シフト、端数処理(丸め)及び/又は飽和されてもよい。第2の縮約回路401は、各演算部203−0〜203−7の演算結果を縮約した演算結果rc103を共有メモリ部403の第1の調停回路509に出力する。
以上に述べた演算ユニット103aにおける各演算部203−0〜203−7の演算結果rc203−0〜rc203−7の縮約と同様に、演算ユニット103b〜103dにおいても、各演算部の演算結果が縮約され、演算ユニット単位で縮約された演算結果rc103b〜rc103dは、演算ユニット103b〜103dそれぞれの共有メモリ部の第1の調停回路に出力される。
各演算ユニット103a〜103dにおいて、第1の調停回路は、第2の縮約回路から出力された演算結果を第2の調停回路に送信する。具体的には、図9に示すように、演算ユニット103aにおいて、第1の調停回路509は、第2の縮約回路401から出力された演算結果rc103aを第2の調停回路511に送信する。演算ユニット103b〜103dにおいても、同様に、第2の縮約回路から出力された演算結果rc103b〜rc103dは、第1の調停回路から第2の調停回路に送信される。
第2の調停回路は、第1の調停回路から受信した演算結果を第3の縮約回路に送信する。また、第2の調停回路は、第1の調停回路から受信した演算結果を送受信部を介して他の演算ユニットに送信する。また、第2の調停回路は、他の演算ユニットから該他の演算ユニットの第2の調停回路から出力された演算結果を送受信部を介して受信し、第3の縮約回路に送信する。つまり、演算ユニット103a〜103dは、演算ユニット単位での演算結果を、互いに送受する。
具体的には、図9に示すように、演算ユニット103aにおいて、第2の調停回路511は、第1の調停回路509から受信した演算結果rc103aを第3の縮約回路513に送信する。また、図10に示すように、第2の調停回路511は、演算結果rc103aを送受信部を介して他の演算ユニット103b〜103dに送信する。演算ユニット103aから送信された演算結果rc103aは、送信先の演算ユニット103b〜103dにおける共有メモリ部の送受信部によって受信され、送信先の演算ユニット103b〜103dの第2の調停回路に送信される。同様に、演算ユニット103b〜103dから送信された、演算ユニット103b〜103dでの演算結果rc103−b〜rc103dは、演算ユニット103aの共有メモリ403の送受信部を介して第2の調停回路511に送信される。
演算ユニット103aにおいて、第2の調停回路511は、演算ユニット103b〜103dから送信された演算結果rc103b〜rc103dを受信し、第1の調停回路509から受信した演算結果rc103aとともに第3の縮約回路513に同時に送信する。同様に、演算ユニット103b〜103dにおいても、各演算ユニット103b〜103dに送信された他の演算ユニットの演算結果は、各演算ユニット103b〜103dの第2の調停回路から第3の縮約回路に送信される。
演算ユニット103aの第3の縮約回路513は、演算ユニット103aの演算結果rc103aと演算ユニット103b〜103dから送信された演算結果rc103b〜rc103dとを縮約する。具体的には、第3の縮約回路513は、演算結果rc103a〜rc103dを加算器によって加算する。加算された演算結果rc103(a+b+c+d)は、第3の縮約回路515におけるシフタ、丸め器及び/又は飽和器によって、シフト、端数処理(丸め)及び/又は飽和されてもよい。ここでは、第3の縮約回路513の加算器による演算結果rc103(a+b+c+d)が、シフタ、丸め器及び/又は飽和器によってシフト、丸め(端数処理)及び/又は飽和された場合の演算結果も演算結果rc103(a+b+c+d)として記載する。第3の縮約回路513は、演算結果rc103(a+b+c+d)をメモリ515に出力する。演算結果rc103(a+b+c+d)は、メモリ515に記憶され、保持される。
同様に、各演算ユニット103b〜103dにおいても、各演算ユニットにおける演算結果と、他の演算ユニットから送信された演算結果とが、各演算ユニットの第3の縮約回路において縮約されて、第3の縮約回路からメモリに送信され、該メモリに記憶され、保持される。即ち、各演算ユニット103a〜103dのメモリには、各演算ユニット103a〜103dの演算結果が全て加算された演算結果rc103(a+b+c+d)が記憶され、保持される。
以上に述べたように、本発明の一実施形態に係る演算処理装置100では、他の演算ユニットにおける演算結果を取得し、取得した演算結果と、他の演算ユニットにおける演算結果を取得した側の演算ユニットの演算結果とを縮約して、縮約された演算結果をメモリに書き込み、保持することができる。
尚、図9では、演算ユニット103aが、他の演算ユニット103b〜103dの演算結果を取得して演算ユニット103a〜103dの演算結果を縮約して、縮約された演算結果をメモリに書き込む例を説明したが、演算ユニット103aは、他の演算ユニット103b〜103dのうち、任意演算ユニットの演算結果を取得し、取得した演算結果と演算ユニット103aの演算結果と縮約して、縮約された演算結果を対応するメモリに書き込み、保持することができる。
図11は、メモリに記憶されたデータ(演算結果)を読み出す構成を示すブロック図である。図11において、各演算部203−0〜203−7及び第2の縮約回路401の内部構成は省略して示している。また、図11において、演算ユニット103b〜103dの内部構成は、演算ユニット103aと同じであるため省略している。
演算ユニット103aにおいて、各演算部203−0〜203−7から共有メモリ部403にメモリ515に記憶されたデータの読み出し指示がある場合、第1の調停回路509がメモリ515からデータを取得する。第1に調停回路509は取得したデータを優先度に基づいて、各演算部203−0〜203−7に順次送信する。当該優先度は、固定されていてもよく、可変であってもよい。各演算部203−0〜203−7において、送信されたデータは、各演算部203−0〜203−7のメモリに保存される。
また、演算ユニット103aにおいて、各演算部203−0〜203−7から共有メモリ部403にメモリ515に記憶されたデータのDMA転送指示がある場合、第1の調停回路509は、メモリ515と各演算部203−0〜203−7間のDMA転送を制御してもよい。
各演算ユニット103b〜103dにおいて、メモリに記憶されたデータを読み出す場合、上述した演算ユニット103aにおけるメモリ515のデータの読み出しと同様にデータの読み出しが行われる。
尚、図11では、メモリ515に記憶されたデータが、演算ユニット103aの全演算部203−0〜203−7に送信される構成を示しているが、メモリ515に記憶されたデータは、演算ユニット103aの任意の演算部に送信されてもよい。
以上に述べたように、本発明の一実施形態に係る演算処理装置100では、メモリに保持されたデータを読み出し、該メモリに対応する演算ユニットにおける演算部が該メモリに保持されたデータを取得することができる。
なお、本発明は上記の実施形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
100:演算処理装置、101:CPU、103(103a〜103d):演算ユニット、201、CPUインターフェース、203,301:演算部、205,403:共有メモリ部、303:第1の縮約回路、401:第2の縮約回路、509:第1の調停回路、511:第2の調停回路、513:第3の縮約回路、515:メモリ
Claims (7)
- 互いに接続された複数の演算ユニットを備え、
前記複数の演算ユニットの各々は、
複数の算術論理演算器をそれぞれ含む、複数のプロセッサと、
前記複数のプロセッサの演算結果を受信して保持するメモリと、を備え、
前記メモリは、別の演算ユニット演算結果を受信して保持し、
前記複数のプロセッサは、同一の演算ユニットのメモリに保持された前記演算結果を取得する、演算処理装置。 - 前記複数の演算ユニットの各々は、前記複数のプロセッサの演算結果を受信し、受信した前記複数のプロセッサの演算結果を前記同一の演算ユニットのメモリに順次送信する第1の調停回路をさらに備える、請求項1に記載の演算処理装置。
- 前記複数のプロセッサの各々は、前記複数の算術論理演算器の演算結果を縮約する第1の縮約回路をさらに備える、請求項1又は2に記載の演算処理装置。
- 前記複数の演算ユニットの各々は、前記複数のプロセッサの演算結果を縮約する第2の縮約回路をさらに備える、請求項1乃至3の何れか一項に記載の演算処理装置。
- 前記複数の演算ユニットの各々は、前記別の演算ユニットの演算結果を取得し、取得した前記別の演算ユニットの演算結果を前記同一の演算ユニットのメモリに順次送信する第2の調停回路をさらに備える、請求項1乃至4の何れか一項に記載の演算処理装置。
- 前記複数の演算ユニットの各々は、前記第2の調停回路から、前記別の演算ユニットの演算結果を順次受信し、受信した前記別の演算ユニットの演算結果を縮約して前記同一の演算ユニットのメモリに送信する第3の縮約回路をさらに備える、請求項5に記載の演算処理装置。
- 前記第1の調停回路は、前記同一の演算ユニットのメモリに保持された前記演算結果を取得し、取得した前記演算結果を順次前記複数のプロセッサに送信する、請求項2に記載の演算処理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016234353A JP2018092325A (ja) | 2016-12-01 | 2016-12-01 | 演算処理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016234353A JP2018092325A (ja) | 2016-12-01 | 2016-12-01 | 演算処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018092325A true JP2018092325A (ja) | 2018-06-14 |
Family
ID=62566227
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016234353A Pending JP2018092325A (ja) | 2016-12-01 | 2016-12-01 | 演算処理装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2018092325A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021166739A1 (ja) | 2020-02-20 | 2021-08-26 | Cyberdyne株式会社 | 装着式動作補助装置 |
-
2016
- 2016-12-01 JP JP2016234353A patent/JP2018092325A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021166739A1 (ja) | 2020-02-20 | 2021-08-26 | Cyberdyne株式会社 | 装着式動作補助装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10817260B1 (en) | Reducing dynamic power consumption in arrays | |
EP3631622B1 (en) | Tensor register files | |
CN107341547B (zh) | 一种用于执行卷积神经网络训练的装置和方法 | |
CN107729990B (zh) | 支持离散数据表示的用于执行正向运算的装置及方法 | |
CN110135581B (zh) | 用于执行人工神经网络反向运算的装置和方法 | |
CN111860813B (zh) | 一种用于执行卷积神经网络正向运算的装置和方法 | |
CN109993285B (zh) | 用于执行人工神经网络正向运算的装置和方法 | |
CN107229463B (zh) | 计算设备和相应计算方法 | |
US20150170021A1 (en) | Reconfigurable processing unit | |
JP2006012182A (ja) | データ処理システムとその方法 | |
JPS63192153A (ja) | 並列デ−タ処理装置 | |
WO2017185336A1 (zh) | 用于执行pooling运算的装置和方法 | |
CN107315717B (zh) | 一种用于执行向量四则运算的装置和方法 | |
JP7387017B2 (ja) | アドレス生成方法及びユニット、深層学習処理器、チップ、電子機器並びにコンピュータプログラム | |
JP2014102683A (ja) | 情報処理装置の制御プログラム、情報処理装置の制御方法および情報処理装置 | |
US20190108152A1 (en) | Configurable hardware accelerators | |
JP2018092325A (ja) | 演算処理装置 | |
US20190129718A1 (en) | Packed 16 bits instruction pipeline | |
JP2021108104A (ja) | 部分的読み取り/書き込みが可能な再構成可能なシストリックアレイのシステム及び方法 | |
CN110008436B (zh) | 基于数据流架构的快速傅里叶变换方法、系统和存储介质 | |
CN111078286B (zh) | 数据通信方法、计算系统和存储介质 | |
US20070198811A1 (en) | Data-driven information processor performing operations between data sets included in data packet | |
JP2010117806A (ja) | 半導体装置、および、半導体装置によるデータ処理方法 | |
JP7250953B2 (ja) | データ処理装置、及び人工知能チップ | |
US9798547B2 (en) | VLIW processor including a state register for inter-slot data transfer and extended bits operations |