(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-07
(45)【発行日】2024-10-16
(54)【発明の名称】ニューラルネットワーク処理回路を含むメモリ装置
(51)【国際特許分類】
G06N 3/063 20230101AFI20241008BHJP
G06F 12/00 20060101ALI20241008BHJP
【FI】
G06N3/063
G06F12/00 560B
G06F12/00 560F
(21)【出願番号】P 2020119606
(22)【出願日】2020-07-13
【審査請求日】2023-06-12
(31)【優先権主張番号】10-2019-0147555
(32)【優先日】2019-11-18
(33)【優先権主張国・地域又は機関】KR
(73)【特許権者】
【識別番号】310024033
【氏名又は名称】エスケーハイニックス株式会社
【氏名又は名称原語表記】SK hynix Inc.
【住所又は居所原語表記】2091, Gyeongchung-daero,Bubal-eub,Icheon-si,Gyeonggi-do,Korea
(74)【代理人】
【識別番号】110000796
【氏名又は名称】弁理士法人三枝国際特許事務所
(72)【発明者】
【氏名】郭 昌敏
【審査官】千葉 久博
(56)【参考文献】
【文献】特開2019-139300(JP,A)
【文献】特開2019-121370(JP,A)
【文献】特開2019-36298(JP,A)
【文献】特開2017-111807(JP,A)
【文献】特開2012-195478(JP,A)
【文献】米国特許出願公開第2019/0266219(US,A1)
【文献】国際公開第2019/049686(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/063
G06F 12/00
(57)【特許請求の範囲】
【請求項1】
N個のセルアレイ領域と、
演算モードのうち、演算区間の間、N個のセルアレイ領域からN個のニューラルネットワーク処理情報を並列に読み込んで(loading)、N個のニューラルネットワーク演算を並列に行う第1動作をループ形態でM回繰り返した第2動作を入力データに対して行って演算完了データを生成する演算処理部と、
前記演算モードのうち、入力区間でデータ伝達バッファを介して入力される前記入力データ及びM×N個のニューラルネットワーク処理情報をN個のセルアレイ領域に格納し、前記演算モードのうち、出力区間で前記演算完了データを前記データ伝達バッファを介して出力するデータ動作部と、
入力バッファを介して入力されるコマンド及びアドレスに応答して前記入力区間と前記演算区間、及び前記出力区間のそれぞれの進入/脱出と前記演算処理部及び前記データ動作部を制御するための動作制御部と、
を備え、
NとMは、各々2以上の自然数であるメモリ装置。
【請求項2】
前記データ動作部は、
前記演算モードと動作区間が互いに重ならないノーマルモードで書き込み動作時、前記データ伝達バッファを介して入力されたデータをN個のセルアレイ領域に格納し、読み出し動作時、N個のセルアレイ領域のデータを読み出し、前記データ伝達バッファを介して出力し、
前記動作制御部は、前記入力バッファを介して入力されるコマンド及びアドレスに応答して前記ノーマルモードの進入/脱出と前記データ動作部を制御する請求項1に記載のメモリ装置。
【請求項3】
M×N個のニューラルネットワーク処理情報は、M×N個の重み付け情報及び
N個のニューラルネットワーク演算の各々を数学的にモデリングするためのM×N個の演算情報を含み、
前記動作制御部は、前記入力区間でN個のセルアレイ領域の各々にM個の重み付け情報及びM個の演算情報が格納されるように前記データ動作部を制御する請求項1に記載のメモリ装置。
【請求項4】
前記動作制御部は、
前記入力バッファを介して入力される演算入力コマンドに応答して前記入力区間に進入した後、前記入力バッファを介して入力されたアドレスに応答してN個のセルアレイ領域の各々に前記入力データとM個の重み付け情報、及びM個の演算情報が格納されるように前記データ動作部を制御する請求項3に記載のメモリ装置。
【請求項5】
前記動作制御部は、
前記入力バッファを介して入力される演算開始コマンドに応答して前記入力区間から脱出した後、前記演算区間に進入し、前記入力バッファを介して入力されたアドレスに応答して前記第1及び第2動作を制御し、前記演算処理部から伝達された演算完了信号に応答して前記演算完了データをN個のセルアレイ領域に格納するように前記データ動作部を制御する請求項4に記載のメモリ装置。
【請求項6】
前記動作制御部は、
前記入力バッファを介して入力される演算完了コマンドに応答して前記演算区間から脱出した後、前記出力区間に進入し、前記入力バッファを介して入力されたアドレスに応答してN個のセルアレイ領域から前記演算完了データを読み出し、読み出された前記演算完了データを前記データ伝達バッファを介して出力するように前記データ動作部を制御する請求項5に記載のメモリ装置。
【請求項7】
前記動作制御部は、
前記演算区間に進入した後、N個のセルアレイ領域に格納されたM×N個の重み付け情報及びM×N個の演算情報のうち、前記第1動作に対応するようにN個のセルアレイ領域からN個の重み付け情報及びN個の演算情報を並列に読み出した後、読み出された情報を前記演算処理部に読み込むように前記データ動作部を制御する第3動作を前記第2動作に対応するようにM回繰り返す請求項6に記載のメモリ装置。
【請求項8】
前記動作制御部は、
前記演算区間の進入によって1番目の前記第3動作を行い、2番目からM番目までの前記第3動作の各々は、前記演算処理部から中間完了信号が伝達されたことに応答して行う請求項7に記載のメモリ装置。
【請求項9】
前記入力データは、N個の第1の入力データを備え、前記演算完了データは、N個の第1の演算完了データを備え、
前記動作制御部は、
前記入力区間に進入した後、N個のセルアレイ領域の各々に1個ずつの第1の入力データが格納されるように前記データ動作部を制御する請求項8に記載のメモリ装置。
【請求項10】
前記動作制御部は、
前記演算区間に進入することによってN個のセルアレイ領域から並列に読み出したN個の第1の入力データが前記演算処理部に読み込まれるように前記データ動作部を制御し、前記演算処理部から前記演算完了信号及びN個の第1の演算完了データが出力されるとき、N個のセルアレイ領域の各々に1個ずつの第1の演算完了データが格納されるように前記データ動作部を制御する請求項9に記載のメモリ装置。
【請求項11】
前記動作制御部は、
前記出力区間に進入することによってN個のセルアレイ領域からN個の第1の演算完了データを並列に読み出し、読み出されたN個の第1の演算完了データを前記データ伝達バッファを介して出力するように前記データ動作部を制御する請求項10に記載のメモリ装置。
【請求項12】
前記演算処理部は、
前記演算区間に進入することによって読み込んだN個の第1の入力データに対して1番目の前記第1動作に含まれたN個のニューラルネットワーク演算を並列に行ってN個のデータを生成し、
2番目からM番目までの前記第1動作の各々は、先の動作の実行結果として生成されたN個のデータを後の動作で読み込んでN個のニューラルネットワーク演算を並列に行い、 M番目の前記第1動作の実行結果として生成されたN個のデータを前記第2動作の実行結果であるN個の第1の演算完了データとして前記データ動作部に出力する請求項10に記載のメモリ装置。
【請求項13】
前記演算処理部は、
前記第1動作の実行完了回数をカウントし、
カウント値がM-1になるまでは、カウント値が1つずつ増加するたびに前記中間完了信号を生成して前記動作制御部に出力し、
カウント値がMになるとき、前記演算完了信号を生成して前記動作制御部に出力する請求項12に記載のメモリ装置。
【請求項14】
前記入力データは、K×N個の第2の入力データを備え、前記演算完了データは、K×N個の第2の演算完了データを備え、
前記動作制御部は、前記入力区間に進入した後、N個のセルアレイ領域の各々にK個ずつの第2の入力データが格納されるように前記データ動作部を制御し、
前記演算処理部は、K×N個の第2の入力データのうち、N個に対して1回の前記第2動作を行ってK×N個の第2の演算完了データのうち、N個を生成でき、前記演算区間の間、前記第2動作をK回連続で行う第4動作をK×N個の第2の入力データに対して行ってK×N個の第2の演算完了データを生成し、Kは、2以上の自然数である請求項8に記載のメモリ装置。
【請求項15】
前記動作制御部は、
前記演算区間に進入した後、前記第2動作に対応するようにN個のセルアレイ領域から並列に読み出したN個の第2の入力データが前記演算処理部に読み込まれるように前記データ動作部を制御する第5動作を前記第4動作に対応するようにK回繰り返し、
前記演算処理部から前記第2動作に対応して前記演算完了信号及びK×N個の第2の演算完了データのうち、N個が出力されるとき、N個のセルアレイ領域の各々に1個ずつの第2の演算完了データが格納されるように前記データ動作部を制御する第6動作を前記第4動作に対応するようにK回繰り返す請求項14に記載のメモリ装置。
【請求項16】
前記動作制御部は、
前記出力区間に進入することによってN個のセルアレイ領域からN個の第2の演算完了データを並列に読み出す第7動作をK回繰り返し、前記第7動作によって読み出されたN個の第2の演算完了データを前記データ伝達バッファを介して出力するように前記データ動作部を制御する第8動作をK回繰り返す請求項15に記載のメモリ装置。
【請求項17】
前記演算処理部は、
前記演算区間に進入した後、K×N個の第2の入力データのうち、読み込んだN個に対して1番目の前記第1動作に含まれたN個のニューラルネットワーク演算を並列に行ってN個のデータを生成し、
2番目からM番目までの前記第1動作の各々は、先の動作の実行結果として生成されたN個のデータを後の動作で読み込んでN個のニューラルネットワーク演算を並列に行い、 M番目の前記第1動作の実行結果として生成されたN個のデータを前記第2動作の実行結果であるN個の第2の演算完了データとして前記データ動作部に出力する請求項14に記載のメモリ装置。
【請求項18】
前記演算処理部は、
前記第1動作の実行完了回数をカウントし、
カウント値がM-1になるまでは、カウント値が1つずつ増加するたびに前記中間完了信号を生成して前記動作制御部に出力し、
カウント値がMになるとき、前記演算完了信号を生成して前記動作制御部に出力した後、カウント値を初期化する請求項17に記載のメモリ装置。
【請求項19】
前記演算処理部は、N個のセルアレイ領域の各々に対応するN個の演算処理ユニットを備え、
N個の演算処理ユニットの各々は、
前記データ動作部を介して入力されたデータと内部でフィードバック(feedback)されたループデータのうち、いずれか1つのデータ及び前記データ動作部を介して入力された重み付け情報と演算情報を読み込むためのデータ読み込み部と、
重み付け情報及び演算情報を使用して前記データ読み込み部から読み込まれたデータ及び自らを除いた残りのN-1個の演算処理ユニットの各々から伝達されたデータに対してニューラルネットワーク演算を行い、実行結果として結果データを生成する演算実行部と、
前記結果データの値が基準値以上であるとき、前記結果データを前記ループデータとして前記データ読み込み部にフィードバックし、以下であるとき、特定値に固定された前記ループデータを生成して前記データ読み込み部にフィードバックする選択伝達部と、
前記選択伝達部で前記データ読み込み部に前記ループデータが伝達される回数をカウントし、カウント値に応じて前記中間完了信号または前記演算完了信号を生成して前記動作制御部に出力するカウント部と、
を備える請求項8に記載のメモリ装置。
【請求項20】
前記データ動作部は、N個のセルアレイ領域の各々に対応するN個のデータ伝達ユニットを備え、
N個のデータ伝達ユニットの各々は、
前記動作制御部から入力される第1の制御信号に応答してセルアレイ領域にデータを書き込むか、セルアレイ領域からデータを読み出すための読み出し/書き込み動作部と、
前記動作制御部から入力される第2の制御信号に応答して前記読み出し/書き込み動作部と前記データ伝達バッファ、及び前記演算処理部の間で伝達されるデータの経路を選択するための経路選択部と、
を備える請求項1に記載のメモリ装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリシステムに関し、具体的に、内部にニューラルネットワーク処理回路を含むメモリ装置に関する。
【背景技術】
【0002】
ニューラルネットワーク(Neural network)は、人間の脳のニューロン(Neuron)をモデリングして摸倣したネットワークをいい、実際のニューロンでないことを強調して、人工ニューラルネットワーク(Artificial Neural network、ANN)ともいう。
【0003】
ニューラルネットワーク処理(Neural network processing)動作は、マシンラーニング(machine learning)技法のうち、ディープラーニング(deep learning)技術である畳み込みニューラルネットワーク(Convolutional Neural network、CNN)、再帰型ニューラルネットワーク(Recurrent Neural network、RNN)などに活用される基本技術であって、多層パーセプトロン(Multiple Layer Perception、MLP)を処理するのに活用されることができる。
【0004】
図1に示すように、多層パーセプトロンを処理するためのニューラルネットワークには、複数の層(1、2、3、4、5)が含まれ、1つの層(1、2、3、4、または5)には、複数のニューロン(Neuron)が含まれることができる。すなわち、複数のニューロンの各々は、数学的にモデリングされており、複数のニューロンを所望のアルゴリズムに合うようにグループ化して1つの層(1、2、3、4、または5)で構成することができ、複数の層(1、2、3、4、5)を所望のアルゴリズムに合うようにグループ化してニューラルネットワークを構成できる。
【0005】
一般的に始めにある層(1)を「入力層(Input Layer)」といい、最後にある層(5)を「出力層(Output Layer)」といい、入力層(1)と出力層(5)との間にある少なくとも1つ以上の層(2、3、4)を「隠れ層(Hidden Layer)」ということができる。
【0006】
このとき、互いに異なる隣接した層に各々含まれた複数のニューロンは、シナプス(Synapse)を介して様々に連結され、それぞれのシナプスには、重み付け(Weight)が与えられ得る。また、入力層(1)に含まれた複数のニューロンは、入力データによってその値が決められ得る。また、隠れ層(2、3、4)と出力層(5)とに含まれたニューロンの値は、それ以前の層に含まれたニューロンとシナプスによって値が演算され得る。
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明の実施形態は、内部にニューラルネットワーク演算を行うことができるニューラルネットワーク処理回路を含むメモリ装置を提供する。
【課題を解決するための手段】
【0008】
本発明の実施形態に係るメモリ装置は、N個のセルアレイ領域と、演算モードのうち、演算区間の間、N個のセルアレイ領域からN個のニューラルネットワーク処理情報を並列に読み込んで(loading)、N個のニューラルネットワーク演算を並列に行う第1動作をループ形態でM回繰り返した第2動作を入力データに対して行って演算完了データを生成する演算処理部と、前記演算モードのうち、入力区間でデータ伝達バッファを介して入力される前記入力データ及びM×N個のニューラルネットワーク処理情報をN個のセルアレイ領域に格納し、前記演算モードのうち、出力区間で前記演算完了データを前記データ伝達バッファを介して出力するデータ動作部と、入力バッファを介して入力されるコマンド及びアドレスに応答して前記入力区間と前記演算区間、及び前記出力区間のそれぞれの進入/脱出と前記演算処理部及び前記データ動作部を制御するための動作制御部とを備え、NとMは、各々2以上の自然数でありうる。
【0009】
また、前記データ動作部は、ノーマルモードで書き込み動作時、前記データ伝達バッファを介して入力されたデータをN個のセルアレイ領域に格納し、読み出し動作時、N個のセルアレイ領域のデータを読み出し、前記データ伝達バッファを介して出力し、前記動作制御部は、前記入力バッファを介して入力されるコマンド及びアドレスに応答して前記ノーマルモードの進入/脱出と前記データ動作部を制御できる。
【0010】
また、M×N個のニューラルネットワーク処理情報は、M×N個の重み付け情報及びM×N個の演算情報を含み、前記動作制御部は、前記入力区間でN個のセルアレイ領域の各々にM個の重み付け情報及びM個の演算情報が格納されるように前記データ動作部を制御できる。
【0011】
また、前記動作制御部は、前記入力バッファを介して入力される演算入力コマンドに応答して前記入力区間に進入した後、前記入力バッファを介して入力されたアドレスに応答してN個のセルアレイ領域の各々に前記入力データとM個の重み付け情報、及びM個の演算情報が格納されるように前記データ動作部を制御できる。
【0012】
また、前記動作制御部は、前記入力バッファを介して入力される演算開始コマンドに応答して前記入力区間から脱出した後、前記演算区間に進入し、前記入力バッファを介して入力されたアドレスに応答して前記第1及び第2動作を制御し、前記演算処理部から伝達された演算完了信号に応答して前記演算完了データをN個のセルアレイ領域に格納するように前記データ動作部を制御できる。
【0013】
また、前記動作制御部は、前記入力バッファを介して入力される演算完了コマンドに応答して前記演算区間から脱出した後、前記出力区間に進入し、前記入力バッファを介して入力されたアドレスに応答してN個のセルアレイ領域から前記演算完了データを読み出し、読み出された前記演算完了データを前記データ伝達バッファを介して出力するように前記データ動作部を制御できる。
【0014】
また、前記動作制御部は、前記演算区間に進入した後、N個のセルアレイ領域に格納されたM×N個の重み付け情報及びM×N個の演算情報のうち、前記第1動作に対応するようにN個のセルアレイ領域からN個の重み付け情報及びN個の演算情報を並列に読み出した後、読み出された情報を前記演算処理部に読み込むように前記データ動作部を制御する第3動作を前記第2動作に対応するようにM回繰り返すことができる。
【0015】
また、前記動作制御部は、前記演算区間に進入することによって1番目の前記第3動作を行い、2番目からM番目までの前記第3動作の各々は、前記演算処理部から中間完了信号が伝達されたことに応答して行うことができる。
【0016】
また、前記入力データは、N個の第1の入力データを備え、前記演算完了データは、N個の第1の演算完了データを備え、前記動作制御部は、前記入力区間に進入した後、N個のセルアレイ領域の各々に1個ずつの第1の入力データが格納されるように前記データ動作部を制御できる。
【0017】
また、前記動作制御部は、前記演算区間に進入することによってN個のセルアレイ領域から並列に読み出したN個の第1の入力データが前記演算処理部に読み込まれるように前記データ動作部を制御し、前記演算処理部から前記演算完了信号及びN個の第1の演算完了データが出力されるとき、N個のセルアレイ領域の各々に1個ずつの第1の演算完了データが格納されるように前記データ動作部を制御できる。
【0018】
また、前記動作制御部は、前記出力区間に進入することによってN個のセルアレイ領域からN個の第1の演算完了データを並列に読み出し、読み出されたN個の第1の演算完了データを前記データ伝達バッファを介して出力するように前記データ動作部を制御できる。
【0019】
また、前記演算処理部は、前記演算区間に進入することによって読み込んだN個の第1の入力データに対して1番目の前記第1動作に含まれたN個のニューラルネットワーク演算を並列に行ってN個のデータを生成し、2番目からM番目までの前記第1動作の各々は、先の動作の実行結果として生成されたN個のデータを後の動作で読み込んでN個のニューラルネットワーク演算を並列に行い、M番目の前記第1動作の実行結果として生成されたN個のデータを前記第2動作の実行結果であるN個の第1の演算完了データとして前記データ動作部に出力することができる。
【0020】
また、前記演算処理部は、前記第1動作の実行完了回数をカウントし、カウント値がM-1になるまでは、カウント値が1つずつ増加するたびに前記中間完了信号を生成して前記動作制御部に出力し、カウント値がMになるとき、前記演算完了信号を生成して前記動作制御部に出力することができる。
【0021】
また、前記入力データは、K×N個の第2の入力データを備え、前記演算完了データは、K×N個の第2の演算完了データを備え、前記動作制御部は、前記入力区間に進入した後、N個のセルアレイ領域の各々にK個ずつの第2の入力データが格納されるように前記データ動作部を制御し、前記演算処理部は、K×N個の第2の入力データのうち、N個に対して1回の前記第2動作を行ってK×N個の第2の演算完了データのうち、N個を生成でき、前記演算区間の間、前記第2動作をK回連続で行う第4動作をK×N個の第2の入力データに対して行ってK×N個の第2の演算完了データを生成し、Kは、2以上の自然数でありうる。
【0022】
また、前記動作制御部は、前記演算区間に進入した後、前記第2動作に対応するようにN個のセルアレイ領域から並列に読み出したN個の第2の入力データが前記演算処理部に読み込まれるように前記データ動作部を制御する第5動作を前記第4動作に対応するようにK回繰り返し、前記演算処理部から前記第2動作に対応して前記演算完了信号及びK×N個の第2の演算完了データのうち、N個が出力されるとき、N個のセルアレイ領域の各々に1個ずつの第2の演算完了データが格納されるように前記データ動作部を制御する第6動作を前記第4動作に対応するようにK回繰り返すことができる。
【0023】
また、前記動作制御部は、前記出力区間に進入することによってN個のセルアレイ領域からN個の第2の演算完了データを並列に読み出す第7動作をK回繰り返し、前記第7動作によって読み出されたN個の第2の演算完了データを前記データ伝達バッファを介して出力するように前記データ動作部を制御する第8動作をK回繰り返すことができる。
【0024】
また、前記演算処理部は、前記演算区間に進入した後、K×N個の第2の入力データのうち、読み込んだN個に対して1番目の前記第1動作に含まれたN個のニューラルネットワーク演算を並列に行ってN個のデータを生成し、2番目からM番目までの前記第1動作の各々は、先の動作の実行結果として生成されたN個のデータを後の動作で読み込んでN個のニューラルネットワーク演算を並列に行い、M番目の前記第1動作の実行結果として生成されたN個のデータを前記第2動作の実行結果であるN個の第2の演算完了データとして前記データ動作部に出力することができる。
【0025】
また、前記演算処理部は、前記第1動作の実行完了回数をカウントし、カウント値がM-1になるまでは、カウント値が1つずつ増加するたびに前記中間完了信号を生成して前記動作制御部に出力し、カウント値がMになるとき、前記演算完了信号を生成して前記動作制御部に出力した後、カウント値を初期化できる。
【0026】
また、前記演算処理部は、N個のセルアレイ領域の各々に対応するN個の演算処理ユニットを備え、N個の演算処理ユニットの各々は、前記データ動作部を介して入力されたデータと内部でフィードバック(feedback)されたループデータのうち、いずれか1つのデータ及び前記データ動作部を介して入力された重み付け情報と演算情報を読み込むためのデータ読み込み部と、重み付け情報及び演算情報を使用して前記データ読み込み部から読み込まれたデータ及び自らを除いた残りのN-1個の演算処理ユニットの各々から伝達されたデータに対してニューラルネットワーク演算を行い、実行結果として結果データを生成する演算実行部と、前記結果データの値が基準値以上であるとき、前記結果データを前記ループデータとして前記データ読み込み部にフィードバックし、以下であるとき、特定値に固定された前記ループデータを生成して前記データ読み込み部にフィードバックする選択伝達部と、前記選択伝達部で前記データ読み込み部に前記ループデータが伝達される回数をカウントし、カウント値に応じて前記中間完了信号または前記演算完了信号を生成して前記動作制御部に出力するカウント部とを備えることができる。
【0027】
また、前記データ動作部は、N個のセルアレイ領域の各々に対応するN個のデータ伝達ユニットを備え、N個のデータ伝達ユニットの各々は、前記動作制御部から入力される第1の制御信号に応答してセルアレイ領域にデータを書き込むか、セルアレイ領域からデータを読み出すための読み出し/書き込み動作部と、前記動作制御部から入力される第2の制御信号に応答して前記読み出し/書き込み動作部と前記データ伝達バッファ、及び前記演算処理部の間で伝達されるデータの経路を選択するための経路選択部とを備えることができる。
【発明の効果】
【0028】
本技術は、メモリ装置内部にニューラルネットワーク処理回路を含めることにより、演算モードに進入した後には、メモリ装置自体がニューラルネットワーク演算を行うようにすることができる。
【0029】
また、メモリ装置内部に含まれたメモリバンク(複数のメモリセルを含む)とニューラルネットワーク処理回路がデータ入出力バッファを共有でき、ニューラルネットワーク処理回路の活性化可否を制御することによってメモリ装置の使用用途を選択できる。
【図面の簡単な説明】
【0030】
【
図1】ニューラルネットワーク処理を説明するために示した図。
【
図2】本発明の実施形態に係るメモリ装置のブロック図。
【
図3】本発明の実施形態に係るニューラルネットワーク処理で使用されるニューラルネットワーク処理情報を説明するために示した図。
【
図4】
図2に示されたメモリ装置の詳細なブロック図。
【
図5A】本発明の実施形態に係るメモリ装置の演算モード動作の一例を説明するために示した図。
【
図5B】本発明の実施形態に係るメモリ装置の演算モード動作の一例を説明するために示した図。
【
図5C】本発明の実施形態に係るメモリ装置の演算モード動作の一例を説明するために示した図。
【
図5D】本発明の実施形態に係るメモリ装置の演算モード動作の一例を説明するために示した図。
【
図5E】本発明の実施形態に係るメモリ装置の演算モード動作の一例を説明するために示した図。
【
図5F】本発明の実施形態に係るメモリ装置の演算モード動作の一例を説明するために示した図。
【
図6A】本発明の実施形態に係るメモリ装置の演算モード動作の他の例を説明するために示した図。
【
図6B】本発明の実施形態に係るメモリ装置の演算モード動作の他の例を説明するために示した図。
【
図6C】本発明の実施形態に係るメモリ装置の演算モード動作の他の例を説明するために示した図。
【
図7】本発明の実施形態に係るメモリ装置のノーマルモード動作を説明するために示した図。
【発明を実施するための形態】
【0031】
以下、添付された図面を参照して本発明の望ましい実施形態を説明する。しかしながら、本発明は、以下において開示される実施形態に限定されるものではなく、互いに異なる様々な形態で構成されることができ、ただし、本実施形態は、本発明の開示が完全なようにし、通常の知識をが有する者に本発明の範疇を完全に知らせるために提供されるものである。
【0032】
図2は、本発明の実施形態に係るメモリ装置のブロック図である。
【0033】
図3は、本発明の実施形態に係るニューラルネットワーク処理で使用されるニューラルネットワーク処理情報を説明するために示した図である。
【0034】
まず、
図2に示すように、本発明の実施形態に係るメモリ装置10は、N個のメモリバンク101、102、...、10Nと、演算処理部20<1:N>と、データ動作部30<1:N>と、動作制御部40<1:N>と、コマンド入力バッファ11と、アドレス入力バッファ12と、データ伝達バッファ13とを備えることができる。
【0035】
具体的に、メモリ装置10は、DRAM(Dynamic Random Access Memory)、SRAM(Static RAM)などのような揮発性メモリ装置と、ROM(Read Only Memory)、MROM(Mask ROM)、PROM(Programmable ROM)、EPROM(Erasable ROM)、EEPROM(Electrically Erasable ROM)、FRAM(登録商標)(Ferromagnetic ROM)、PRAM(Phase change RAM)、MRAM(Magnetic RAM)、RRAM(登録商標)(Resistive RAM)、フラッシュメモリなどのような不揮発性メモリ装置で実現されることができる。
【0036】
演算処理部20<1:N>は、演算モードのうち、演算区間の間、N個のメモリバンク101、102、...、10NからN個のニューラルネットワーク処理情報を並列に読み込んで(loading)、N個のニューラルネットワーク演算を並列に行う「第1動作」をループ(loop)形態でM回繰り返した「第2動作」を入力データに対して行って演算完了データを生成できる。すなわち、演算処理部20<1:N>は、入力データに対して「第2動作」を行って演算完了データを生成でき、「第2動作」は、「第1動作」がループ形態でM回繰り返されることを意味する。そして、演算処理部20<1:N>は、ノーマルモードで不活性化されて何らの動作も行わないことがある。
【0037】
図1及び
図2に共に示すように、演算処理部20<1:N>で行われる「第1動作」に含まれたN個のニューラルネットワーク演算の各々は、1つのニューロン(Neuron)に対応することができる。また、演算処理部20<1:N>で行う「第1動作」は、1つの層(1、2、3、4、または5)に対応する動作でありうる。したがって、演算処理部20<1:N>で「第1動作」を行うことは、N個のニューロンを含む1個の層(1、2、3、4、または5)に対するニューラルネットワーク演算動作を行うことでありうる。同様に、演算処理部20<1:N>で「第2動作」を行うことは、「第2動作」に含まれた「第1動作」をループ形態でM回繰り返して行うことであり、M個の層を含むニューラルネットワーク演算動作を行うことでありうる。すなわち、
図1のように、5個の層(1、2、3、4、5)を含むニューラルネットワーク演算動作を例示する場合、Mは、5になることができる。ここで、NとMは、各々2より大きい自然数でありうる。
【0038】
そして、データ動作部30<1:N>は、演算モードのうち、入力区間でデータ伝達バッファ13を介して入力される入力データ及びM×N個のニューラルネットワーク処理情報をN個のメモリバンク101、102、...、10Nに格納することができる。また、データ動作部30<1:N>は、演算モードのうち、出力区間で演算処理部20<1:N>で生成された演算完了データをデータ伝達バッファ13を介して出力することができる。
【0039】
このとき、演算モードのうち、入力区間は、演算モードより先に行われることができる。すなわち、前述した演算処理部20<1:N>の動作は、データ動作部30<1:N>を介して入力データ及びM×N個のニューラルネットワーク処理情報がN個のメモリバンク101、102、...、10Nに格納された後に行われることができる。参考として、前述した説明において、「第1動作」が行われるたびにN個のニューラルネットワーク処理情報が読み込まれ、「第1動作」がループ形態でM回繰り返された「第2動作」が入力データに対して行われるときに演算完了データが生成されることを仮定したことがある。したがって、演算処理部20<1:N>で入力データに対して「第2動作」を行って演算完了データを生成するためには、M×N個のニューラルネットワーク処理情報が必要でありうる。
【0040】
そして、データ動作部30<1:N>は、ノーマルモードで書き込み動作時、データ伝達バッファ13を介して入力されたデータをN個のメモリバンク101、102、...、10Nに格納することができる。また、データ動作部30<1:N>は、ノーマルモードで読み出し動作時、N個のメモリバンク101、102、...、10Nのデータを読み出してデータ伝達バッファ13を介して出力することができる。
【0041】
そして、動作制御部40<1:N>は、メモリレジスタセット(Memory Register Set、MRS)を備えることができる。したがって、動作制御部40<1:N>は、コマンド入力バッファ11を介して入力されるコマンド及びアドレス入力バッファ12を介して入力されるアドレスに応答して演算モードの入力区間と演算区間と出力区間、及びノーマルモードのそれぞれの進入/脱出を制御でき、演算処理部20<1:N>及びデータ動作部30<1:N>を制御できる。このとき、演算モードとノーマルモードとは、完全に区分される動作モードであって、互いに重なることができない。
【0042】
図2及び
図3に共に示すように、M×N個のニューラルネットワーク処理情報は、M×N個の重み付け情報W#<1:N/L1:LM>及びM×N個の演算情報S#<1:N/L1:LM>を含むことができる。すなわち、1つのニューラルネットワーク処理情報は、1個の重み付け情報及び1個の演算情報を含むことができる。
【0043】
図1~
図3に共に示すように、ニューラルネットワーク処理情報に重み付け情報が含まれることは、互いに異なる隣接した層に各々含まれた複数のニューロンを連結するために使用するシナプス(Synapse)に重み付け(Weight)が与えられることに対応することができる。また、ニューラルネットワーク処理情報に演算情報が含まれることは、複数のニューロンの各々が数学的にモデリングされることに対応することができる。
【0044】
具体的に、動作制御部40<1:N>は、演算モードのうち、入力区間でN個のメモリバンク101、102、...、10Nの各々にM個の重み付け情報及びM個の演算情報が格納されるようにデータ動作部30<1:N>を制御できる。
【0045】
例えば、動作制御部40<1:N>は、演算モードのうち、入力区間でN個のメモリバンク101、102、...、10Nのうち、1番目のメモリバンク101に1番目のM個の重み付け情報W<L1:LM>#1及び1番目のM個の演算情報S<L1:LM>#1を格納し、2番目のメモリバンク102に2番目のM個の重み付け情報W<L1:LM>#2及び2番目のM個の演算情報S<L1:LM>#2を格納するように、N個のメモリバンク101、102、...、10Nの各々にM個の重み付け情報及びM個の演算情報が格納されるようにデータ動作部30<1:N>を制御できる。
【0046】
そして、動作制御部40<1:N>は、演算モードのうち、演算区間でM個の重み付け情報及びM個の演算情報をN個のメモリバンク101、102、...、10Nの各々から読み出して演算処理部20<1:N>に伝達するようにデータ動作部30<1:N>を制御できる。
【0047】
例えば、動作制御部40<1:N>は、演算モードのうち、演算区間でN個のメモリバンク101、102、...、10Nのうち、1番目のメモリバンク101に格納された1番目のM個の重み付け情報W<L1:LM>#1及び1番目のM個の演算情報S<L1:LM>#1を読み出し、2番目のメモリバンク102に格納された2番目のM個の重み付け情報W<L1:LM>#2及び2番目のM個の演算情報S<L1:LM>#2を読み出すように、N個のメモリバンク101、102、...、10Nの各々に格納されたM個の重み付け情報及びM個の演算情報を読み出して演算処理部20<1:N>に伝達するようにデータ動作部30<1:N>を制御できる。
【0048】
そして、動作制御部40<1:N>は、演算モードのうち、演算区間で演算処理部20<1:N>がニューラルネットワーク演算の実行を完了した後、演算処理部20<1:N>から演算完了信号が伝達されることに応答して、演算処理部20<1:N>から伝達される演算完了データをN個のメモリバンク101、102、...、10Nに格納するようにデータ動作部30<1:N>を制御できる。
【0049】
そして、動作制御部40<1:N>は、演算モードのうち、出力区間で演算完了データをN個のメモリバンク101、102、...、10Nから読み出してデータ伝達バッファ13を介して出力するようにデータ動作部30<1:N>を制御できる。
【0050】
図4は、
図2に示されたメモリ装置の詳細なブロック図である。
【0051】
図4に示すように、
図2に示されたメモリ装置10の構成要素のうち、動作制御部40<1:N>とデータ動作部30<1:N>、及び演算処理部20<1:N>の構成が詳細に図示されたことが分かる。このとき、
図3に示された図面は、メモリ装置10がDRAMであることを仮定し、メモリ装置10が他の種類のメモリ装置である場合、詳細構成が変更されることができる。
【0052】
具体的に、N個のメモリバンク101、102、...、10Nの各々には、複数のワードライン(Wordline、図示せず)と複数のビットライン(Bitline、図示せず)にアレイ(Array)形態で接続された複数のメモリセル(Cell、図示せず)を含むことができ、メモリセルの各々は、少なくとも1ビットのデータを格納することができる。すなわち、N個のメモリバンク101、102、...、10Nの各々は、複数のメモリセルがアレイ形態で含まれた「セルアレイ領域」と見ることができる。したがって、「N個のメモリバンク」という表現は、メモリ装置10がDRAMであることを仮定したものであり、他の種類のメモリ装置の場合、「N個のセルアレイ領域」という表現に代替され得るであろう。
【0053】
そして、演算処理部20<1:N>は、N個のメモリバンク101、102、...、10Nの各々に対応するN個の演算処理ユニット201、202、...、20Nを備えることができる。また、動作制御部40<1:N>は、N個のメモリバンク101、102、...、10Nの各々に対応するN個の動作制御ユニット401、402、...、40N及びメモリレジスタセット(Memory Register Set、MRS、
図2参照)を備えることができる。また、データ動作部30<1:N>は、N個のメモリバンク101、102、...、10Nの各々に対応するN個のデータ動作ユニット301、302、...、30Nを備えることができる。このとき、動作制御部40<1:N>に備えられるメモリレジスタセット(MRS、
図2参照)は、N個の動作制御ユニット401、402、...、40Nとは区分されて含まれることができる構成要素であるから、
図3には図示されていない。
【0054】
ここで、N個の動作制御ユニット401、402、...、40Nの各々は、全て類似した形態で動作する回路として実現されることができる。また、N個のデータ動作ユニット301、302、...、30Nは、全て類似した形態で動作する回路として実現されることができる。また、N個の演算処理ユニット201、202、...、20Nの各々は、全て類似した形態で動作する回路として実現されることができる。
【0055】
したがって、N個の動作制御ユニット401、402、...、40Nのうち、1番目の動作制御ユニット401と、N個のデータ動作ユニット301、302、...、30Nのうち、1番目のデータ動作ユニット301、及びN個の演算処理ユニット201、202、...、20Nのうち、1番目の演算処理ユニット201を代表として選択して、その詳細な構成を説明すれば、次のとおりである。
【0056】
まず、1番目の動作制御ユニット401は、アドレス制御部(Address Control)、及びアドレス/データ伝達制御部(Address/Data a Flow Control)を備えることができる。具体的に、1番目の動作制御ユニット401は、コマンド入力バッファ11及びアドレス入力バッファ12を介して入力されるコマンド及びアドレスと、1番目の演算処理ユニット201から入力される演算処理に関連した信号(CF or MF)に応答して1番目のデータ動作ユニット301を制御するための種々の制御信号を生成できる。
【0057】
例えば、1番目の動作制御ユニット401に含まれたアドレス制御部(Address Control)は、アドレス入力バッファ12を介して入力されるアドレスに応答してローアドレスとコラムアドレスとを生成できる。また、1番目の動作制御ユニット401に含まれたアドレス/データ伝達制御部(Address/Data a Flow Control)は、コマンド入力バッファ11及びアドレス入力バッファ12を介して入力されるコマンド及びアドレスに応答して読み出し動作信号と書き込み動作信号、及び経路選択信号を生成できる。
【0058】
そして、1番目のデータ動作ユニット301は、ローデコーダ(Row Decoder)と、コラムデコーダ(Column Decoder)と、センスアンプ(Sense Amp)と、書き込みドライバ(Write Driver)と、データパス選択部(Data Path Select)とを備えることができる。このとき、1番目のデータ動作ユニット301に備えられたローデコーダ(Row Decoder)と、コラムデコーダ(Column Decoder)と、センスアンプ(Sense Amp)、及び書き込みドライバ(Write Driver)は、1番目のメモリバンク101にデータを書き込むか、1番目のメモリバンク101からデータを読み出すための構成要素、すなわち、読み出し/書き込み動作部でありうる。例えば、1番目のデータ動作ユニット301に備えられた読み出し/書き込み動作部は、1番目の動作制御ユニット401から入力される第1の制御信号、例えば、ローアドレスとコラムアドレスと読み出し動作信号及び書き込み動作信号に応答して1番目のメモリバンク101に含まれた複数のメモリセルのうち、少なくとも1つ以上のセルを選択した後、選択されたセルからデータを読み出すか、選択されたセルにデータを書き込むことができる。
【0059】
また、1番目のデータ動作ユニット301に備えられたデータパス選択部(Data Path Select)は、読み出し/書き込み動作部とデータ伝達バッファ13、及び1番目の演算処理ユニット201の間で伝達されるデータの経路を選択するための構成要素、すなわち、経路選択部でありうる。例えば、1番目のデータ動作ユニット301に含まれた経路選択部は、1番目の動作制御ユニット401から入力される第2の制御信号、例えば、経路選択信号に応答して読み出し/書き込み動作部と1番目の演算処理ユニット201、及びデータ伝達バッファ13の間で伝達されるデータの経路を選択できる。
【0060】
そして、1番目の演算処理ユニット201は、データ読み込み部211と、演算実行部221と、選択伝達部231と、カウント部241とを備えることができる。
【0061】
1番目の演算処理ユニット201に備えられたデータ読み込み部211は、1番目のデータ動作ユニット301を介して入力された入力データIDT#1と内部でフィードバック(feedback)されたループデータLDT#1のうち、いずれか1つのデータIDT#1またはLDT#1及び1番目のデータ動作ユニット301を介して入力された重み付け情報W#1と演算情報S#1を読み込むことができる。
【0062】
1番目の演算処理ユニット201に備えられた演算実行部221は、重み付け情報W#1及び演算情報S#1を使用してデータ読み込み部211で読み込まれたデータIDT#1またはLDT#1及び2番目ないしN番目の演算処理ユニット20<2:N>から伝達されたデータTDT#<2:N>に対してニューラルネットワーク演算を行い、実行結果として結果データRDT#1を生成できる。例えば、演算実行部221は、データ読み込み部211で読み込まれたデータIDT#1またはLDT#1に重み付け情報W#1の値を乗算した値と2番目ないしN番目の演算処理ユニット20<2:N>から伝達されたデータTDT#<2:N>の値とを演算情報S#1に対応する形態で合算して結果データRDT#1を生成できる。
【0063】
前述した1番目の演算処理ユニット201に備えられた演算実行部221で2番目ないしN番目の演算処理ユニット20<2:N>から伝達されたデータTDT#<2:N>を使用してニューラルネットワーク演算を行う動作をN個の演算処理ユニット201、202、...、20Nの各々の動作として一般化させる場合、N個の演算処理ユニット201、202、...、20Nの各々は、自らを除いた残りのN-1個の演算処理ユニットから伝達されたデータを使用してニューラルネットワーク演算を行う動作になることができる。例えば、2番目の演算処理ユニット202に備えられた演算実行部(図示せず)は、1番目と3番目ないしN番目の演算処理ユニット20<1、3:N>から伝達されたデータTDT#<1、3:N>を使用してニューラルネットワーク演算を行うことができる。同様に、N番目の演算処理ユニット20Nに備えられた演算実行部(図示せず)は、1番目ないしN-1番目の演算処理ユニット20<1:N-1>から伝達されたデータTDT#<1:N-1>を使用してニューラルネットワーク演算を行うことができる。
【0064】
図1及び
図4に共に示すように、N個の演算処理ユニット201、202、...、20Nの各々は、自らを除いた残りのN-1個の演算処理ユニットから伝達されたデータを使用してニューラルネットワーク演算を行う動作が、複数のニューロンがシナプス(Synapse)を介して様々に連結される動作に対応することができる。
【0065】
そして、1番目の演算処理ユニット201に備えられた選択伝達部231は、演算実行部221で生成された結果データRDT#1の値が基準値以上であるとき、当該結果データRDT#1をループデータLDT#1としてデータ読み込み部211にフィードバックすることができる。また、選択伝達部231は、演算実行部221で生成された結果データRDT#1の値が基準値以下であるとき、当該結果データRDT#1を無視し、特定値に固定されたループデータLDT#1を生成してデータ読み込み部211にフィードバックすることができる。ここで、N個の演算処理ユニット201、202、...、20Nの各々に備えられた選択伝達部231の動作基準として使用されるN個の「基準値」の各々は、ニューラルネットワーク演算の目的に応じて動作制御部40<1:N>に備えられたメモリレジスタセット(MRS)により予め設定されることができ、ニューラルネットワーク演算を行うたびにユーザにより変更されることができる。
【0066】
そして、1番目の演算処理ユニット201に備えられたカウント部241は、選択伝達部231でデータ読み込み部211にループデータLDT#1が伝達される回数をカウントし、カウント回数によって中間完了信号MF#1または演算完了信号CF#1を生成して演算処理に関連した信号CF#1またはMF#1として1番目の動作制御ユニット401に出力することができる。例えば、1番目の演算処理ユニット201に備えられたカウント部241は、選択伝達部231でデータ読み込み部211にループデータLDT#1が伝達される回数をカウントした値が予定された値になるまでは、中間完了信号MF#1を生成して1番目の動作制御ユニット401に出力し、予定された値になる時点で演算完了信号CF#1を生成して1番目の動作制御ユニット401に出力することができる。
【0067】
参考として、前述した説明では、演算処理ユニットの各々がメモリバンクに一対一に対応するように設定されて、メモリバンクの個数と演算処理ユニットの個数とが同じであることを例示として説明したが、これは、設計者の選択によって異なるように実現されることもできる。
【0068】
例えば、メモリバンクのうち、一部のメモリバンクには演算処理ユニットが対応されるが、残りのメモリバンクは、演算処理ユニットが対応されないように設定されて、メモリバンクの個数より演算処理ユニットの個数がさらに小さいものもいくらでも可能である。このような場合、演算処理ユニットに対応しない残りのメモリバンクは、ノーマルモードでのみ動作可能なように設定されることができる。このとき、ノーマルモードでのみ動作可能なように設定されたメモリバンクに対応するデータ動作部には、データの伝達経路を選択するための構成要素(Data Path Select)が必要でないことがある。同様に、ノーマルモードでのみ動作可能なように設定されたメモリバンクに対応する動作制御部は、データの伝達経路を選択するための制御動作を行う必要がないことがある。
【0069】
さらに他の例を挙げれば、1つのメモリバンクに少なくとも2個以上の演算処理ユニットが対応しうる。これは、1つのメモリバンクで一度に読み出されることができるデータの大きさ、すなわち、重み付け情報と演算情報の大きさが1つの演算処理ユニットで処理できるデータの大きさより大きい場合でありうる。このとき、1つのメモリバンクに対応する少なくとも2個以上の演算処理ユニットは、1つのメモリバンクで一度に読み出されることができるデータを少なくとも2個以上に分割して並列に処理することができる。すなわち、1つのメモリバンクに対応する少なくとも2個以上の演算処理ユニットは、物理的には分離されるが、その動作は、前述した1つの演算処理ユニットのように動作することができる。
【0070】
図5A~
図5Fは、本発明の実施形態に係るメモリ装置の演算モード動作の一例を説明するために示した図である。
【0071】
図2~
図5Fに示すように、N個の入力データIDT#1、IDT#2、...、IDT#Nがメモリ装置10に入力されてN個のメモリバンク101、102、...、10Nの各々に1個ずつ格納されることを仮定できる。また、N個のメモリバンク101、102、...、10Nの各々に1個ずつ格納されたN個の入力データIDT#1、IDT#2、...、IDT#Nに対して演算処理部20<1:N>でM回の「第1動作」をループ形態で繰り返し実行、すなわち、1回の「第2動作」を行ってN個の演算完了データCDT#1、CDT#2、...、CDT#Nを生成することを仮定できる。
【0072】
図2~
図5Aに示すように、動作制御部40<1:N>に備えられたメモリレジスタセット(MRS)は、コマンド入力バッファ11を介して入力される演算入力コマンド(図示せず)に応答して演算モードの入力区間に進入することができる。
【0073】
また、動作制御部40<1:N>は、演算モードの入力区間でアドレス入力バッファ12を介して入力されたアドレスに応答してN個のメモリバンク101、102、...、10Nにデータ伝達バッファ13を介して入力されるN個の入力データIDT#1、IDT#2、...、IDT#NとN×M個の重み付け情報W<L1:LM>#1、W<L1:LM>#2、...、W<L1:LM>#N、及びN×M個の演算情報S<L1:LM>#1、S<L1:LM>#2、...、S<L1:LM>#Nが格納されるようにデータ動作部30<1:N>を制御できる。
【0074】
具体的に、1番目の動作制御ユニット401は、演算モードのうち、入力区間でデータ伝達バッファ13を介して入力される1番目の入力データIDT#1と1番目のM個の重み付け情報W<L1:LM>#1、及び1番目のM個の演算情報S<L1:LM>#1が1番目のメモリバンク101に格納されるように1番目のデータ動作ユニット301を制御できる。同様に、2番目の動作制御ユニット402は、演算モードのうち、入力区間でデータ伝達バッファ13を介して入力される2番目の入力データIDT#2と2番目のM個の重み付け情報W<L1:LM>#2、及び2番目のM個の演算情報S<L1:LM>#2が2番目のメモリバンク102に格納されるように2番目のデータ動作ユニット302を制御できる。このような方式にて、3番目ないしN番目の動作制御ユニット403、...、40Nの各々は、演算モードのうち、入力区間でデータ伝達バッファ13を介して入力される3番目ないしN番目の入力データIDT#3、...、IDT#Nの各々と3番目ないしN番目のM個の重み付け情報W<L1:LM>#3、...、W<L1:LM>#Nの各々及び3番目ないしN番目のM個の演算情報S<L1:LM>#3、...、S<L1:LM>#Nの各々が3番目ないしN番目のメモリバンク103、...、10Nの各々に格納されるように3番目ないしN番目のデータ動作ユニット303、...、30Nの各々を制御できる。
【0075】
図2~
図5Bに示すように、動作制御部40<1:N>に備えられたメモリレジスタセット(MRS)は、コマンド入力バッファ11を介して入力される演算開始コマンド(図示せず)に応答して演算モードの入力区間から脱出した後、演算区間に進入することができる。
【0076】
また、動作制御部40<1:N>は、演算モードの演算区間でアドレス入力バッファ12を介して入力されたアドレスに応答してN個のメモリバンク101、102、...、10Nに格納されたN個の入力データIDT#1、IDT#2、...、IDT#NとN×M個の重み付け情報W<L1:LM>#1、W<L1:LM>#2、...、W<L1:LM>#N、及びN×M個の演算情報S<L1:LM>#1、S<L1:LM>#2、...、S<L1:LM>#Nを読み出して演算処理部20<1:N>に伝達するようにデータ動作部30<1:N>を制御できる。
【0077】
具体的に、動作制御部40<1:N>は、演算モードの演算区間に進入した後、N個のメモリバンク101、102、...、10Nに格納されたN×M個の重み付け情報W<L1:LM>#1、W<L1:LM>#2、...、W<L1:LM>#N及びN×M個の演算情報S<L1:LM>#1、S<L1:LM>#2、...、S<L1:LM>#Nのうち、演算処理部20<1:N>の「第1動作」に対応するようにN個のメモリバンク101、102、...、10NでN個の重み付け情報(W<Lx>#1、W<Lx>#2、...、W<Lx>#N/xは、1~Mのうち、いずれか1つの数である)及びN個の演算情報S<Lx>#1、S<Lx>#2、...、S<Lx>#Nを並列に読み出した後、読み出された情報W<Lx>#1、W<Lx>#2、...、W<Lx>#N/S<Lx>#1、S<Lx>#2、...、S<Lx>#Nが演算処理部20<1:N>に読み込まれるようにデータ動作部30<1:N>を制御する「第3動作」を演算処理部20<1:N>の「第2動作」に対応するようにM回繰り返すことができる。
【0078】
また、動作制御部40<1:N>は、N個のメモリバンク101、102、...、10Nに格納されたN個の入力データIDT#1、IDT#2、...、IDT#Nを演算モードの演算区間に進入することによってN個のメモリバンク101、102、...、10Nの各々で並列に読み出した後、読み出されたN個の入力データIDT#1、IDT#2、...、IDT#Nが演算処理部20<1:N>に読み込まれるようにデータ動作部30<1:N>を制御できる。
【0079】
また、動作制御部40<1:N>は、演算処理部20<1:N>の「第2動作」に対応するようにM回繰り返される「第3動作」のうち、1番目の「第3動作」を演算モードの演算区間に進入することに応答して行うことができる。また、動作制御部40<1:N>は、演算処理部20<1:N>の「第2動作」に対応するようにM回繰り返される「第3動作」のうち、2番目ないしM番目までの「第3動作」の各々を演算処理部20<1:N>から中間完了信号MF#<1:N>が伝達されることに応答して行うことができる。
【0080】
また、動作制御部40<1:N>は、演算処理部20<1:N>で「第2動作」の実行を完了した結果として演算完了信号CF#<1:N>及びN個の演算完了データCDT#1、CDT#2、...、CDT#Nが出力されるとき、N個の演算完了データCDT#1、CDT#2、...、CDT#NがN個のメモリバンク101、102、...、10Nの各々に1個ずつ格納されるようにデータ動作部30<1:N>を制御できる。
【0081】
より具体的に、1番目の動作制御ユニット401は、演算モードの演算区間進入によって1番目のメモリバンク101に格納された1番目の入力データIDT#1と1番目の第1の重み付け情報W<L1>#1、及び1番目の第1の演算情報S<L1>#1を読み出して1番目の演算処理ユニット201に伝達するように1番目のデータ動作ユニット301を制御できる。同様に、2番目の動作制御ユニット402は、演算モードの演算区間進入によって2番目のメモリバンク102に格納された2番目の入力データIDT#2と2番目の第1の重み付け情報W<L1>#2、及び2番目の第1の演算情報S<L1>#2を読み出して2番目の演算処理ユニット202に伝達するように2番目のデータ動作ユニット302を制御できる。このような方式にて、3番目ないしN番目の動作制御ユニット403、...、40Nの各々は、演算モードの演算区間進入によって3番目ないしN番目のメモリバンク103、...、10Nの各々に格納された3番目ないしN番目の入力データIDT#3、...、IDT#Nの各々と3番目ないしN番目の第1の重み付け情報W<L1>#3、...、W<L1>#Nの各々及び3番目ないしN番目の第1の演算情報S<L1>#3、...、S<L1>#Nの各々を読み出して3番目ないしN番目の演算処理ユニット203、...、20Nに伝達するように3番目ないしN番目のデータ動作ユニット303、...、30Nの各々を制御できる。前述した説明のように、動作制御部40<1:N>は、演算処理部20<1:N>の「第2動作」に対応するようにM回繰り返される「第3動作」のうち、1番目の「第3動作」を演算モードの演算区間に進入することに応答してN個の入力データIDT#1、IDT#2、...、IDT#Nに対して行うことができる。
【0082】
次いで、1番目の動作制御ユニット401は、1番目の演算処理ユニット201から中間完了信号MF#1が伝達されることによって1番目のメモリバンク101に格納された1番目の第2の重み付け情報W<L2>#1及び1番目の第2の演算情報S<L2>#1を読み出して1番目の演算処理ユニット201に伝達するように1番目のデータ動作ユニット301を制御できる。同様に、2番目の動作制御ユニット402は、2番目の演算処理ユニット202から中間完了信号MF#2が伝達されることによって2番目のメモリバンク102に格納された2番目の第2の重み付け情報W<L2>#2及び2番目の第2の演算情報S<L2>#2を読み出して2番目の演算処理ユニット202に伝達するように2番目のデータ動作ユニット302を制御できる。このような方式にて、3番目ないしN番目の動作制御ユニット403、...、40Nの各々は、3番目ないしN番目の演算処理ユニット203、...、20Nから中間完了信号MF#<3:N>の各々が伝達されることによって3番目ないしN番目のメモリバンク103、...、10Nの各々に格納された3番目ないしN番目の第2の重み付け情報W<L2>#3、...、W<L2>#Nの各々及び3番目ないしN番目の第2の演算情報S<L2>#3、...、S<L2>#Nの各々を読み出して3番目ないしN番目の演算処理ユニット203、...、20Nに伝達するように3番目ないしN番目のデータ動作ユニット303、...、30Nの各々を制御できる。前述した説明のように、動作制御部40<1:N>は、演算処理部20<1:N>の「第2動作」に対応するようにM回繰り返される「第3動作」のうち、2番目の「第3動作」を演算処理部20<1:N>から中間完了信号MF#<1:N>が伝達されることに応答して行うことができる。このとき、3番目ないしM番目の「第3動作」は、2番目の「第3動作」と同様な方式にて行われることができる。
【0083】
次いで、1番目の動作制御ユニット401は、1番目の演算処理ユニット201から演算完了信号CF#1及び1番目の演算完了データCDT#1が出力されるとき、1番目の演算完了データCDT#1を1番目のメモリバンク101に格納するように1番目のデータ動作ユニット301を制御できる。同様に、2番目の動作制御ユニット402は、2番目の演算処理ユニット202から演算完了信号CF#2及び2番目の演算完了データCDT#2が出力されるとき、2番目の演算完了データCDT#2を2番目のメモリバンク102に格納するように2番目のデータ動作ユニット302を制御できる。このような方式にて、3番目ないしN番目の動作制御ユニット403、...、40Nの各々は、3番目ないしN番目の演算処理ユニット203、...、20Nから演算完了信号CF#<3:N>の各々及び3番目ないしN番目の演算完了データCDT#3、...、CDT#Nが出力されるとき、3番目ないしN番目の演算完了データCDT#3、...、CDT#Nの各々を3番目ないしN番目のメモリバンク103、...、10Nの各々に格納するように3番目ないしN番目のデータ動作ユニット303、...、30Nの各々を制御できる。前述した説明のように、動作制御部40<1:N>は、演算処理部20<1:N>で「第2動作」の実行を完了した結果として演算完了信号CF#<1:N>及びN個の演算完了データCDT#1、CDT#2、...、CDT#Nが出力されるとき、N個の演算完了データCDT#1、CDT#2、...、CDT#NをN個のメモリバンク101、102、...、10Nの各々に1個ずつ格納されるようにデータ動作部30<1:N>を制御できる。
【0084】
図2~
図5Eに示すように、
図5Bにおいて説明された演算モードの演算区間で演算処理部20<1:N>の動作をより詳細に分かることができる。
【0085】
図5Cに示すように、演算処理部20<1:N>に備えられた1番目の演算処理ユニット201の動作が詳細に図示されたことが分かり、図面に図示されていないが、2番目ないしN番目の演算処理ユニット202、...、20Nも1番目の演算処理ユニット201と同様に動作することが分かる。
【0086】
具体的に、1番目の演算処理ユニット201に備えられたデータ読み込み部211は、演算モードの演算区間進入によって1番目のデータ動作ユニット301から入力された1番目の入力データIDT#1と1番目の第1の重み付け情報W<L1>#1、及び1番目の第1の演算情報S<L1>#1を読み込むことができる。
【0087】
次いで、1番目の演算処理ユニット201に備えられた演算実行部221は、1番目の第1の重み付け情報W<L1>#1及び1番目の第1の演算情報S<L1>#1を使用して1番目の入力データIDT#1に対してニューラルネットワーク演算を行い、実行結果として1番目の第1の結果データRDT<L1>#1を生成できる。例えば、1番目の演算実行部221は、1番目の入力データIDT#1と1番目の第1の重み付け情報W<L1>#1とを乗算した値と2番目ないしN番目の演算処理ユニット20<2:N>から伝達されたデータTDT#<2:N>の値とを1番目の第1の演算情報S<L1>#1に対応する形態で合算して1番目の第1の結果データRDT<L1>#1を生成できる。このとき、演算処理部20<1:N>がN個の入力データIDT#1、IDT#2、...、IDT#Nに対して1番目の「第1動作」に含まれたN個のニューラルネットワーク演算を並列に行う場合であるから、1番目の演算処理ユニット201でニューラルネットワーク演算に使用するために、2番目ないしN番目の演算処理ユニット20<2:N>から伝達されたデータTDT#<2:N>は、2番目ないしN番目の入力データIDT#Nでありうる。
【0088】
次いで、1番目の演算処理ユニット201に備えられた選択伝達部231は、1番目の演算実行部221で生成された1番目の第1の結果データRDT<L1>#1の値が基準値以上であるとき、1番目の第1の結果データRDT<L1>#1を1番目の第1のループデータLDT<L1>#1として1番目のデータ読み込み部211にフィードバックすることができる。また、1番目の選択伝達部231は、1番目の演算実行部221で生成された1番目の第1の結果データRDT<L1>#1の値が基準値以下であるとき、1番目の第1の結果データRDT<L1>#1の値を無視し、特定値に固定された1番目の第1のループデータLDT<L1>#1を生成して1番目のデータ読み込み部211にフィードバックすることができる。
【0089】
そして、1番目の演算処理ユニット201に備えられたカウント部241は、1番目の選択伝達部231で1番目のデータ読み込み部211にループデータLDT<L1>#1が伝達される回数をカウントし、カウント回数がMより小さい場合、中間完了信号MF#1を生成して1番目の動作制御ユニット401に出力し、カウント回数がMになる場合、演算完了信号CF#1を1番目の動作制御ユニット401に出力することができる。このとき、演算処理部20<1:N>が1番目の「第1動作」に含まれたN個のニューラルネットワーク演算を並列に行う場合であるから、カウント値は「1」であり、Mより小さい状態でありうる。それにより、1番目のカウント部241は、中間完了信号MF#1を生成して1番目の動作制御ユニット401に出力することができる。
【0090】
前述した説明のように、1番目の演算処理ユニット201の動作を2番目ないしN番目の演算処理ユニット202、...、20Nの動作として適用することができる。したがって、演算処理部20<1:N>は、演算モードが演算区間に進入することによって読み込まれたN個の第1の入力データIDT#1、IDT#2、...、IDT#Nに対してN個の第1の重み付け情報W<L1>#<1:N>及びN個の第1の演算情報S<L1>#<1:N>を使用してN個のニューラルネットワーク演算を並列に行った後、その結果としてN個のデータLDT<L1>#<1:N>を生成できる。すなわち、演算処理部20<1:N>は、演算モードが演算区間に進入することによって読み込まれたN個の第1の入力データIDT#1、IDT#2、...、IDT#Nに対して1番目の「第1動作」に含まれたN個のニューラルネットワーク演算を並列に行った後、その結果としてN個のデータLDT<L1>#<1:N>を生成できる。
【0091】
図5Dに示すように、演算処理部20<1:N>に備えられた1番目の演算処理ユニット201の動作が詳細に図示されたことが分かり、図面に図示されていないが、2番目ないしN番目の演算処理ユニット202、...、20Nも1番目の演算処理ユニット201と同様に動作することが分かる。
【0092】
具体的に、1番目の演算処理ユニット201に備えられたデータ読み込み部211は、1番目のデータ動作ユニット301から入力された1番目の第2の重み付け情報W<L2>#1及び1番目の第2の演算情報S<L2>#1を読み込むことができる。
【0093】
次いで、1番目の演算処理ユニット201に備えられた演算実行部221は、1番目の第2の重み付け情報W<L2>#1及び1番目の第2の演算情報S<L2>#1を使用して、1番目の第1のループデータLDT<L1>#1に対してニューラルネットワーク演算を行い、実行結果として、1番目の第2の結果データRDT<L2>#1を生成できる。例えば、1番目の演算実行部221は、1番目の第1のループデータLDT<L1>#1と1番目の第2の重み付け情報W<L2>#1とを乗算した値と2番目ないしN番目の演算処理ユニット20<2:N>から伝達されたデータTDT#<2:N>の値とを1番目の第2の演算情報S<L2>#1に対応する形態で合算して1番目の第2の結果データRDT<L2>#1を生成できる。このとき、演算処理部20<1:N>が1番目の「第1動作」に含まれたN個のニューラルネットワーク演算を並列に行った後、その結果として生成されたN個のデータLDT<L1>#<1:N>に対して2番目の「第1動作」に含まれたN個のニューラルネットワーク演算を並列に行う場合であるから、1番目の演算処理ユニット201でニューラルネットワーク演算に使用するために、2番目ないしN番目の演算処理ユニット20<2:N>から伝達されたデータTDT#<2:N>は、2番目ないしN番目の第1のループデータLDT<L1>#<2:N>でありうる。
【0094】
次いで、1番目の演算処理ユニット201に備えられた選択伝達部231は、1番目の演算実行部221で生成された1番目の第2の結果データRDT<L2>#1の値が基準値以上であるとき、1番目の第2の結果データRDT<L2>#1を1番目の第2のループデータLDT<L2>#1として1番目のデータ読み込み部211にフィードバックすることができる。また、1番目の選択伝達部231は、1番目の演算実行部221で生成された1番目の第2の結果データRDT<L2>#1の値が基準値以下であるとき、1番目の第2の結果データRDT<L2>#1の値を無視し、特定値に固定された1番目の第2ループデータLDT<L2>#1を生成して1番目のデータ読み込み部211にフィードバックすることができる。
【0095】
そして、1番目の演算処理ユニット201に備えられたカウント部241は、1番目の選択伝達部231で1番目のデータ読み込み部211にループデータLDT<L2>#1が伝達される回数をカウントし、カウント回数がMより小さい場合、中間完了信号MF#1を生成して1番目の動作制御ユニット401に出力し、カウント回数がMになる場合、演算完了信号CF#1を1番目の動作制御ユニット401に出力することができる。このとき、演算処理部20<1:N>が2番目の「第1動作」に含まれたN個のニューラルネットワーク演算を並列に行う場合であるから、カウント値は「2」であり、Mより小さい状態でありうる。それにより、1番目のカウント部241は、中間完了信号MF#1を生成して1番目の動作制御ユニット401に出力することができる。
【0096】
前述した説明のように、1番目の演算処理ユニット201の動作を2番目ないしN番目の演算処理ユニット202、...、20Nの動作として適用することができる。したがって、演算処理部20<1:N>は、先の「第1動作」の実行結果として生成されたN個のデータLDT<L1>#1に対してN個の第2の重み付け情報W<L2>#<1:N>及びN個の第2の演算情報S<L2>#<1:N>を使用してN個のニューラルネットワーク演算を並列に行った後、その結果としてN個のデータLDT<L2>#<1:N>を生成できる。すなわち、演算処理部20<1:N>は、1番目の「第1動作」の実行結果として生成されたN個のデータLDT<L1>#1に対して2番目の「第1動作」に含まれたN個のニューラルネットワーク演算を並列に行った後、その結果としてN個のデータLDT<L1>#<1:N>を生成できる。
【0097】
図5Dにおいて説明されたような方式にて、演算処理部20<1:N>は、3番目からM番目までの「第1動作」に含まれたN個のニューラルネットワーク演算を並列に行った後、その結果としてN個のデータLDT<L1>#<1:N>を生成できる。まとめると、演算処理部20<1:N>は、1番目からM番目までの「第1動作」の各々を行うとき、先の「第1動作」の実行結果として生成されたN個のデータを後の「第1動作」で読み込んでN個のニューラルネットワーク演算を並列に行うのに使用することができる。
【0098】
図5Eに示すように、演算処理部20<1:N>に備えられた1番目の演算処理ユニット201の動作が詳細に図示されたことが分かり、図面に図示されていないが、2番目ないしN番目の演算処理ユニット202、...、20Nも1番目の演算処理ユニット201と同様に動作することが分かる。
【0099】
具体的に、1番目の演算処理ユニット201に備えられたデータ読み込み部211は、1番目のデータ動作ユニット301から入力された1番目の第Mの重み付け情報W<LM>#1及び1番目の第Mの演算情報S<LM>#1を読み込むことができる。
【0100】
次いで、1番目の演算処理ユニット201に備えられた演算実行部221は、1番目の第Mの重み付け情報W<LM>#1及び1番目の第2の演算情報S<LM>#1を使用して1番目の第M-1のループデータLDT<LM-1>#1に対してニューラルネットワーク演算を行い、実行結果として1番目の第Mの結果データRDT<LM>#1を生成できる。例えば、1番目の演算実行部221は、1番目の第M-1のループデータLDT<LM-1>#1と1番目の第Mの重み付け情報W<LM>#1とを乗算した値と2番目ないしN番目の演算処理ユニット20<2:N>から伝達されたデータTDT#<2:N>の値とを1番目の第Mの演算情報S<LM>#1に対応する形態で合算して1番目の第Mの結果データRDT<LM>#1を生成できる。このとき、演算処理部20<1:N>がM-1番目の「第1動作」に含まれたN個のニューラルネットワーク演算を並列に行った後、その結果として生成されたN個のデータLDT<LM-1>#<1:N>に対してM番目の「第1動作」に含まれたN個のニューラルネットワーク演算を並列に行う場合であるから、1番目の演算処理ユニット201でニューラルネットワーク演算に使用するために、2番目ないしN番目の演算処理ユニット20<2:N>から伝達されたデータTDT#<2:N>は、2番目ないしN番目の第M-1のループデータLDT<LM-1>#<2:N>でありうる。
【0101】
次いで、1番目の演算処理ユニット201に備えられた選択伝達部231は、1番目の演算実行部221で生成された1番目の第Mの結果データRDT<LM>#1の値が基準値以上であるとき、1番目の第Mの結果データRDT<LM>#1を1番目の第MのループデータLDT<LM>#1として1番目のデータ読み込み部211にフィードバックすることができる。また、1番目の選択伝達部231は、1番目の演算実行部221で生成された1番目の第Mの結果データRDT<LM>#1の値が基準値以下であるとき、1番目の第Mの結果データRDT<LM>#1の値を無視し、特定値に固定された1番目の第MのループデータLDT<LM>#1を生成して1番目のデータ読み込み部211にフィードバックすることができる。
【0102】
そして、1番目の演算処理ユニット201に備えられたカウント部241は、1番目の選択伝達部231で1番目のデータ読み込み部211にループデータLDT<LM>#1が伝達される回数をカウントし、カウント回数がMより小さい場合、中間完了信号MF#1を生成して1番目の動作制御ユニット401に出力し、カウント回数がMになる場合、演算完了信号CF#1を1番目の動作制御ユニット401に出力することができる。このとき、演算処理部20<1:N>がM番目の「第1動作」に含まれたN個のニューラルネットワーク演算を並列に行う場合であるから、カウント値は「M」になることができる。それにより、1番目のカウント部241は、演算完了信号CF#1を生成して1番目の動作制御ユニット401に出力することができる。
【0103】
このように、1番目のカウント部241で演算完了信号CF#1を生成して1番目の動作制御ユニット401に出力したので、1番目の動作制御ユニット401は、1番目のデータ読み込み部211にフィードバックされたデータLDT<LM>#1が1番目の演算完了データCDT#1であることが分かる。したがって、1番目の動作制御ユニット401は、1番目のデータ読み込み部211にフィードバックされたデータLDT<LM>#1を1番目の演算完了データCDT#1として伝達されることができる。
【0104】
前述した説明のように、1番目の演算処理ユニット201の動作を2番目ないしN番目の演算処理ユニット202、...、20Nの動作として適用することができる。したがって、演算処理部20<1:N>は、M-1番目の「第1動作」の実行結果として生成されたN個のデータLDT<LM-1>#1に対してN個の第Mの重み付け情報W<LM>#<1:N>及びN個の第Mの演算情報S<LM>#<1:N>を使用してN個のニューラルネットワーク演算を並列に行った後、その結果としてN個のデータLDT<LM>#<1:N>を生成できる。また、演算処理部20<1:N>は、演算完了信号CF#1を生成して動作制御部40<1:N>に出力することにより、演算処理部20<1:N>で生成されたN個のデータLDT<LM>#<1:N>を動作制御部40<1:N>がN個の演算完了データCDT#1、CDT#2、...、CDT#Nとして有するようにすることができる。すなわち、演算処理部20<1:N>は、M-1番目の「第1動作」の実行結果として生成されたN個のデータLDT<LM-1>#1に対してM番目の「第1動作」に含まれたN個のニューラルネットワーク演算を並列に行った後、その結果として生成されたN個のデータLDT<L1>#<1:N>をN個の演算完了データCDT#1、CDT#2、...、CDT#Nとして出力することができる。
【0105】
まとめると、演算処理部20<1:N>は、N個の入力データIDT#1、IDT#2、...、IDT#Nに対してM回の「第1動作」をループ形態で繰り返し実行、すなわち、1回の「第2動作」を行った後、その結果としてN個の演算完了データCDT#1、CDT#2、...、CDT#Nを出力できる。
【0106】
したがって、動作制御部40<1:N>は、アドレス入力バッファ12を介して入力されたアドレス及び演算処理部20<1:N>から演算完了信号CF#<1:N>が伝達されることに応答して、演算処理部20<1:N>から伝達されるN個の演算完了データCDT#1、CDT#2、...、CDT#NをN個のメモリバンク101、102、...、10Nに格納するようにデータ動作部30<1:N>を制御できる。
【0107】
図2~
図5Fに示すように、動作制御部40<1:N>に備えられたメモリレジスタセット(MRS)は、コマンド入力バッファ11を介して入力される演算完了コマンド(図示せず)に応答して演算モードの演算区間から脱出した後、出力区間に進入することができる。
【0108】
具体的に、動作制御部40<1:N>は、演算モードの出力区間でアドレス入力バッファ12を介して入力されたアドレスに応答して、N個のメモリバンク101、102、...、10Nに格納されたN個の演算完了データCDT#1、CDT#2、...、CDT#Nを読み出してデータ伝達バッファ13を介して出力するようにデータ動作部30<1:N>を制御できる。
【0109】
図6A~
図6Cは、本発明の実施形態に係るメモリ装置の演算モード動作の他の例を説明するために示した図である。
【0110】
図2~
図4及び
図6A~
図6Cに示すように、K×N個の入力データIDT<1:K>#1、IDT<1:K>#2、...、IDT<1:K>#Nがメモリ装置10に入力されてN個のメモリバンク101、102、...、10Nの各々にK個ずつ格納されることを仮定できる。また、N個のメモリバンク101、102、...、10Nの各々にK個ずつ格納されたN個の入力データIDT<1:K>#1、IDT<1:K>#2、...、IDT<1:K>#NをN個ずつK回(IDT<1>#1、IDT<1>#2、...、IDT<1>#N、...、IDT<2>#1、IDT<2>#2、...、IDT<2>#N、...、IDT<1>#1、IDT<K>#2、...、IDT<K>#N)繰り返し的に並列に読み出すものの、入力データがN個読み出されるたびに演算処理部20<1:N>でM回の「第1動作」をループ形態で繰り返し実行、すなわち、1回の「第2動作」を行ってN個の演算完了データを生成し、演算処理部20<1:N>で「第2動作」を連続にK回行う「第4動作」を行ってK×N個の演算完了データCDT<1:K>#1、CDT<1:K>#2、...、CDT<1:K>#Nを生成することを仮定できる。
【0111】
図2~
図4及び
図6Aに示すように、動作制御部40<1:N>に備えられたメモリレジスタセット(MRS)は、コマンド入力バッファ11を介して入力される演算入力コマンド(図示せず)に応答して演算モードの入力区間に進入することができる。
【0112】
また、動作制御部40<1:N>は、演算モードの入力区間でアドレス入力バッファ12を介して入力されたアドレスに応答して、N個のメモリバンク101、102、...、10Nにデータ伝達バッファ13を介して入力されるK×N個の入力データIDT<1:K>#1、IDT<1:K>#2、...、IDT<1:K>#NとN×M個の重み付け情報W<L1:LM>#1、W<L1:LM>#2、...、W<L1:LM>#N、及びN×M個の演算情報S<L1:LM>#1、S<L1:LM>#2、...、S<L1:LM>#Nが格納されるようにデータ動作部30<1:N>を制御できる。
【0113】
具体的に、1番目の動作制御ユニット401は、演算モードのうち、入力区間でデータ伝達バッファ13を介して入力される1番目のK個の入力データIDT<1:K>#1と1番目のM個の重み付け情報W<L1:LM>#1、及び1番目のM個の演算情報S<L1:LM>#1が1番目のメモリバンク101に格納されるように1番目のデータ動作ユニット301を制御できる。同様に、2番目の動作制御ユニット402は、演算モードのうち、入力区間でデータ伝達バッファ13を介して入力される2番目のK個の入力データIDT<1:K>#2と2番目のM個の重み付け情報W<L1:LM>#2、及び2番目のM個の演算情報S<L1:LM>#2が2番目のメモリバンク102に格納されるように2番目のデータ動作ユニット302を制御できる。このような方式にて、3番目ないしN番目の動作制御ユニット403、...、40Nの各々は、演算モードのうち、入力区間でデータ伝達バッファ13を介して入力される3番目ないしN番目のK個の入力データIDT<1:K>#3、...、IDT<1:K>#Nの各々と3番目ないしN番目のM個の重み付け情報W<L1:LM>#3、...、W<L1:LM>#Nの各々、及び3番目ないしN番目のM個の演算情報S<L1:LM>#3、...、S<L1:LM>#Nの各々が3番目ないしN番目のメモリバンク103、...、10Nの各々に格納されるように3番目ないしN番目のデータ動作ユニット303、...、30Nの各々を制御できる。
【0114】
図2~
図4及び
図6Bに示すように、動作制御部40<1:N>に備えられたメモリレジスタセット(MRS)は、コマンド入力バッファ11を介して入力される演算開始コマンド(図示せず)に応答して演算モードの入力区間から脱出した後、演算区間に進入することができる。
【0115】
また、動作制御部40<1:N>は、演算モードの演算区間でアドレス入力バッファ12を介して入力されたアドレスに応答して、N個のメモリバンク101、102、...、10Nに格納されたK×N個の入力データIDT<1:K>#1、IDT<1:K>#2、...、IDT<1:K>#NとN×M個の重み付け情報W<L1:LM>#1、W<L1:LM>#2、...、W<L1:LM>#N、及びN×M個の演算情報S<L1:LM>#1、S<L1:LM>#2、...、S<L1:LM>#Nを読み出して演算処理部20<1:N>に伝達するようにデータ動作部30<1:N>を制御できる。
【0116】
具体的に、動作制御部40<1:N>は、演算モードの演算区間に進入した後、N個のメモリバンク101、102、...、10Nに格納されたN×M個の重み付け情報W<L1:LM>#1、W<L1:LM>#2、...、W<L1:LM>#N及びN×M個の演算情報S<L1:LM>#1、S<L1:LM>#2、...、S<L1:LM>#Nのうち、演算処理部20<1:N>の「第1動作」に対応するようにN個のメモリバンク101、102、...、10NでN個の重み付け情報(W<Lx>#1、W<Lx>#2、...、W<Lx>#N/xは、1~Mのうち、いずれか1つの数である)及びN個の演算情報S<Lx>#1、S<Lx>#2、...、S<Lx>#Nを並列に読み出した後、読み出された情報W<Lx>#1、W<Lx>#2、...、W<Lx>#N/S<Lx>#1、S<Lx>#2、...、S<Lx>#Nが演算処理部20<1:N>に読み込まれるようにデータ動作部30<1:N>を制御する「第3動作」を演算処理部20<1:N>の「第2動作」に対応するようにM回繰り返すことができる。
【0117】
また、動作制御部40<1:N>は、演算モードの演算区間に進入した後、N個のメモリバンク101、102、...、10Nに格納されたK×N個の入力データIDT<1:K>#1、IDT<1:K>#2、...、IDT<1:K>#Nのうち、演算処理部20<1:N>の「第2動作」に対応するようにN個のメモリバンク101、102、...、10Nの各々で並列に読み出したN個の入力データIDT<x>#1、IDT<x>#2、...、IDT<x>#Nが演算処理部20<1:N>に読み込まれるようにデータ動作部30<1:N>を制御する「第5動作」を演算処理部20<1:N>の「第4動作」に対応するようにK回繰り返すことができる。
【0118】
また、動作制御部40<1:N>は、演算処理部20<1:N>の「第2動作」に対応するようにM回繰り返される「第3動作」のうち、1番目の「第3動作」をN個のメモリバンク101、102、...、10Nの各々でN個の入力データIDT<x>#1、IDT<x>#2、...、IDT<x>#Nを並列に読み出すことに応答して行うことができる。また、動作制御部40<1:N>は、演算処理部20<1:N>の「第2動作」に対応するようにM回繰り返される「第3動作」のうち、2番目ないしM番目までの「第3動作」の各々を演算処理部20<1:N>から中間完了信号MF#<1:N>が伝達されることに応答して行うことができる。
【0119】
また、動作制御部40<1:N>は、演算処理部20<1:N>で「第2動作」の実行を完了した結果として演算完了信号CF#<1:N>及びN個の演算完了データCDT<x>#1、CDT<x>#2、...、CDT<x>#Nが出力されるとき、N個の演算完了データCDT<x>#1、CDT<x>#2、...、CDT<x>#NをN個のメモリバンク101、102、...、10Nの各々に1個ずつ格納されるようにデータ動作部30<1:N>を制御する「第6動作」を「第4動作」に対応するようにK回繰り返して行うことができる。これにより、動作制御部40<1:N>は、演算処理部20<1:N>で「第2動作」がK回繰り返し的に実行を完了した結果、すなわち、1回の「第4動作」の実行を完了した結果であるK×N個の演算完了データCDT<1:K>#1、CDT<1:K>#2、...、CDT<1:K>#NがN個のメモリバンク101、102、...、10Nの各々にK個ずつ格納されるようにデータ動作部30<1:N>を制御できる。
【0120】
より具体的に、1番目の動作制御ユニット401は、演算モードの演算区間に進入した後、1番目のメモリバンク101に格納された1番目の第1の入力データIDT<1>#1と1番目の第1の重み付け情報W<L1>#1、及び1番目の第1の演算情報S<L1>#1を読み出して1番目の演算処理ユニット201に伝達するように1番目のデータ動作ユニット301を制御できる。同様に、2番目の動作制御ユニット402は、演算モードの演算区間進入によって2番目のメモリバンク102に格納された2番目の第1の入力データIDT<1>#2と2番目の第1の重み付け情報W<L1>#2、及び2番目の第1の演算情報S<L1>#2を読み出して2番目の演算処理ユニット202に伝達するように2番目のデータ動作ユニット302を制御できる。このような方式にて、3番目ないしN番目の動作制御ユニット403、...、40Nの各々は、演算モードの演算区間進入によって3番目ないしN番目のメモリバンク103、...、10Nの各々に格納された3番目ないしN番目の第1の入力データIDT<1>#3、...、IDT<1>#Nの各々と3番目ないしN番目の第1の重み付け情報W<L1>#3、...、W<L1>#Nの各々、及び3番目ないしN番目の第1の演算情報S<L1>#3、...、S<L1>#Nの各々を読み出して3番目ないしN番目の演算処理ユニット203、...、20Nに伝達するように3番目ないしN番目のデータ動作ユニット303、...、30Nの各々を制御できる。前述した説明のように、動作制御部40<1:N>は、演算処理部20<1:N>の「第2動作」に対応するようにM回繰り返される「第3動作」のうち、1番目の「第3動作」を演算モードの演算区間に進入することに応答してN個の第1の入力データ(IDT<1>#1、IDT<1>#2、...、IDT<1>#N)に対して行うことができる。
【0121】
次いで、1番目の動作制御ユニット401は、1番目の演算処理ユニット201から中間完了信号MF#1が伝達されることにより、1番目のメモリバンク101に格納された1番目の第2の重み付け情報W<L2>#1及び1番目の第2の演算情報S<L2>#1を読み出して1番目の演算処理ユニット201に伝達するように1番目のデータ動作ユニット301を制御できる。同様に、2番目の動作制御ユニット402は、2番目の演算処理ユニット202から中間完了信号MF#2が伝達されることにより、2番目のメモリバンク102に格納された2番目の第2の重み付け情報W<L2>#2及び2番目の第2の演算情報S<L2>#2を読み出して2番目の演算処理ユニット202に伝達するように2番目のデータ動作ユニット302を制御できる。このような方式にて、3番目ないしN番目の動作制御ユニット403、...、40Nの各々は、3番目ないしN番目の演算処理ユニット203、...、20Nから中間完了信号MF#<3:N>の各々が伝達されることにより、3番目ないしN番目のメモリバンク103、...、10Nの各々に格納された3番目ないしN番目の第2の重み付け情報W<L2>#3、...、W<L2>#Nの各々及び3番目ないしN番目の第2の演算情報S<L2>#3、...、S<L2>#Nの各々を読み出して3番目ないしN番目の演算処理ユニット203、...、20Nに伝達するように3番目ないしN番目のデータ動作ユニット303、...、30Nの各々を制御できる。前述した説明のように、動作制御部40<1:N>は、演算処理部20<1:N>の「第2動作」に対応するようにM回繰り返される「第3動作」のうち、2番目の「第3動作」を演算処理部20<1:N>から中間完了信号MF#<1:N>が伝達されることに応答して行うことができる。このとき、3番目ないしM番目の「第3動作」は、2番目の「第3動作」と同じ方式にて行われることができる。
【0122】
次いで、1番目の動作制御ユニット401は、1番目の演算処理ユニット201から演算完了信号CF#1及び1番目の第1の演算完了データCDT<1>#1が出力されるとき、1番目の第1の演算完了データCDT<1>#1を1番目のメモリバンク101に格納するように1番目のデータ動作ユニット301を制御できる。同様に、2番目の動作制御ユニット402は、2番目の演算処理ユニット202から演算完了信号CF#2及び2番目の第1の演算完了データCDT<1>#2が出力されるとき、2番目の第1の演算完了データCDT<1>#2を2番目のメモリバンク102に格納するように2番目のデータ動作ユニット302を制御できる。このような方式にて、3番目ないしN番目の動作制御ユニット403、...、40Nの各々は、3番目ないしN番目の演算処理ユニット203、...、20Nから演算完了信号CF#<3:N>の各々及び3番目ないしN番目の第1の演算完了データCDT<1>#3、...、CDT<1>#Nが出力されるとき、3番目ないしN番目の第1の演算完了データCDT<1>#3、...、CDT<1>#Nの各々を3番目ないしN番目のメモリバンク103、...、10Nの各々に格納するように3番目ないしN番目のデータ動作ユニット303、...、30Nの各々を制御できる。前述した説明のように、動作制御部40<1:N>は、演算処理部20<1:N>で「第2動作」の実行を完了した結果として演算完了信号CF#<1:N>及びN個の第1の演算完了データCDT<1>#1、CDT<1>#2、...、CDT<1>#Nが出力されるとき、N個の第1の演算完了データCDT<1>#1、CDT<1>#2、...、CDT<1>#NをN個のメモリバンク101、102、...、10Nの各々に1個ずつ格納されるようにデータ動作部30<1:N>を制御できる。
【0123】
前述した演算処理部20<1:N>の「第2動作」は、動作制御部40<1:N>でN個のメモリバンク101、102、...、10Nに格納されたK×N個の入力データIDT<1:K>#1、IDT<1:K>#2、...、IDT<1:K>#Nのうち、N個のメモリバンク101、102、...、10Nの各々でN個の入力データIDT<x>#1、IDT<x>#2、...、IDT<x>#Nを並列に読み出す「第5動作」を行うたびに繰り返されてK回行われることができる。すなわち、演算処理部20<1:N>は、「第2動作」をK回繰り返し実行して1回の「第4動作」を行うことができる。このとき、演算処理部20<1:N>は、K回繰り返される「第2動作」の各々でN×M個の重み付け情報W<L1:LM>#1、W<L1:LM>#2、...、W<L1:LM>#N及びN×M個の演算情報S<L1:LM>#1、S<L1:LM>#2、...、S<L1:LM>#Nを重ねて使用することができる。例えば、演算処理部20<1:N>は、1番目の「第2動作」でN×M個の重み付け情報W<L1:LM>#1、W<L1:LM>#2、...、W<L1:LM>#N及びN×M個の演算情報S<L1:LM>#1、S<L1:LM>#2、...、S<L1:LM>#Nを使用してニューラルネットワーク演算を行った後、続く2番目の「第2動作」でもN×M個の重み付け情報W<L1:LM>#1、W<L1:LM>#2、...、W<L1:LM>#N及びN×M個の演算情報S<L1:LM>#1、S<L1:LM>#2、...、S<L1:LM>#Nを重ねて使用することができる。このような方式にて、演算処理部20<1:N>は、K番目の「第2動作」まで全てN×M個の重み付け情報W<L1:LM>#1、W<L1:LM>#2、...、W<L1:LM>#N及びN×M個の演算情報S<L1:LM>#1、S<L1:LM>#2、...、S<L1:LM>#Nを重ねて使用してニューラルネットワーク演算を行うことができる。
【0124】
図2~
図4及び
図6Cに示すように、動作制御部40<1:N>に備えられたメモリレジスタセット(MRS)は、コマンド入力バッファ11を介して入力される演算完了コマンド(図示せず)に応答して演算モードの演算区間から脱出した後、出力区間に進入することができる。
【0125】
具体的に、動作制御部40<1:N>は、演算モードの出力区間でアドレス入力バッファ12を介して入力されたアドレスに応答してN個のメモリバンク101、102、...、10Nに格納されたK×N個の演算完了データCDT<1:K>#1、CDT<1:K>#2、...、CDT<1:K>#NをN個ずつ並列に読み出す「第7動作」をK回繰り返し(CDT<1>#1、CDT<1>#2、...、CDT<1>#N、...、CDT<2>#1、CDT<2>#2、...、CDT<2>#N、...、CDT<1>#1、CDT<K>#2、...、CDT<K>#N)、「第7動作」によって読み出されたN個の演算完了データCDT<x>#1、CDT<x>#2、...、CDT<x>#Nをデータ伝達バッファ13を介して出力するようにデータ動作部30<1:N>を制御する「第8動作」をK回繰り返す(CDT<1>#1、CDT<1>#2、...、CDT<1>#N、...、CDT<2>#1、CDT<2>#2、...、CDT<2>#N、...、CDT<1>#1、CDT<K>#2、...、CDT<K>#N)ことができる。
【0126】
図7は、本発明の実施形態に係るメモリ装置のノーマルモード動作を説明するために示した図である。
【0127】
図7に示すように、動作制御部40<1:N>に備えられたメモリレジスタセット(MRS)は、コマンド入力バッファ11を介して入力されるノーマル開始コマンド(図示せず)に応答して演算モードから脱出した後、ノーマルモードに進入することができる。
【0128】
具体的に、動作制御部40<1:N>は、ノーマルモードでコマンド入力バッファ11を介して書き込みコマンドが入力され、アドレス入力バッファ12を介して入力された書き込みアドレスが入力され、データ伝達バッファ13を介して書き込みデータNDT#<1:N>が入力される場合、N個のメモリバンク101、102、...、10Nのうち、書き込みアドレスに対応するメモリセルに書き込みデータNDT#<1:N>を格納する書き込み動作を行うようにデータ動作部30<1:N>を制御できる。
【0129】
また、動作制御部40<1:N>は、ノーマルモードでコマンド入力バッファ11を介して読み出しコマンドが入力され、アドレス入力バッファ12を介して入力された読み出しアドレスが入力される場合、N個のメモリバンク101、102、...、10Nのうち、読み出しアドレスに対応するメモリセルに格納されたデータNDT#<1:N>を読み出してデータ伝達バッファ13を介して出力するようにデータ動作部30<1:N>を制御できる。
【0130】
一方、動作制御部40<1:N>は、ノーマルモードで演算処理部20<1:N>にいかなるデータ入出力も行われないようにデータ動作部30<1:N>を制御できる。これにより、演算処理部20<1:N>は、ノーマルモードで不活性化されて何らの動作も行わないことができる。
【0131】
以上で説明したように、本発明の実施形態を適用すれば、メモリ装置内部にニューラルネットワーク処理回路を含めることにより、演算モードに進入した後には、ホストまたはメモリコントローラの介入なしでもメモリ装置自体がニューラルネットワーク演算を行うようにすることができる。
【0132】
また、メモリ装置内部に含まれたメモリバンク(複数のメモリセルを含む)とニューラルネットワーク処理回路がデータ入出力バッファを共有するので、ニューラルネットワーク処理回路の活性化可否を制御する動作を介してメモリ装置の使用用途を選択できる。
【0133】
以上で説明した本発明は、前述した実施形態及び添付された図面により限定されるものではなく、本発明の技術的思想を逸脱しない範囲内で様々な置換、変形、及び変更が可能であるということが本発明の属した技術分野における通常の知識を有する者にとって明らかであろう。