JP6682848B2 - 情報処理装置、情報処理方法、及び、プログラム - Google Patents

情報処理装置、情報処理方法、及び、プログラム Download PDF

Info

Publication number
JP6682848B2
JP6682848B2 JP2015249650A JP2015249650A JP6682848B2 JP 6682848 B2 JP6682848 B2 JP 6682848B2 JP 2015249650 A JP2015249650 A JP 2015249650A JP 2015249650 A JP2015249650 A JP 2015249650A JP 6682848 B2 JP6682848 B2 JP 6682848B2
Authority
JP
Japan
Prior art keywords
sequence number
request
reply
vector
replies
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
JP2015249650A
Other languages
English (en)
Other versions
JP2017117064A (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 Corp
Original Assignee
NEC Corp
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 Corp filed Critical NEC Corp
Priority to JP2015249650A priority Critical patent/JP6682848B2/ja
Publication of JP2017117064A publication Critical patent/JP2017117064A/ja
Application granted granted Critical
Publication of JP6682848B2 publication Critical patent/JP6682848B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Complex Calculations (AREA)

Description

本発明は、情報処理装置、情報処理方法、及び、プログラムに関し、特にベクトル命令を実行する情報処理装置、情報処理方法、及び、プログラムに関する。
1以上のコアと分割されたメモリとをメモリネットワークで接続したベクトルプロセッサが、例えば、特許文献1に開示されている。
図18は、特許文献1のベクトルプロセッサと同様のベクトルプロセッサの構成を示すブロック図である。図18のベクトルプロセッサ900は、複数のコア910、メモリネットワーク920、複数のメモリI/F(インタフェース)930を含む。コア910は、メモリネットワーク920、及び、メモリI/F930を介して、メモリ940と接続される。メモリ940は複数のメモリポート950に分割され、複数のメモリI/F930が、それぞれ、複数のメモリポート950に接続される。メモリアドレスは、各メモリポート950にインタリーブされて割り当てられる。コア910がベクトルロード命令を実行する時は、複数のベクトル要素をメモリ940からロードするためのリクエストパケットが、対応するメモリポート950に、それぞれ、発行(送信)される。
コア910は、全てのリクエストパケット(以下、単にリクエストとも記載)に対するリプライパケット(以下、単にリプライとも記載)が返ってきた後、命令を完了させることができる。ベクトルロード命令の実行時間は、当該ベクトルロード命令に対して発行されるリクエストの内、リプライを受信するまでの時間であるロードレイテンシが最も長いリクエストのレイテンシによって決定される。そのため、ベクトルロード命令の実行時間を短くするためには、メモリアクセスに係るレイテンシの平均値を小さくするだけでなく、レイテンシのばらつきを小さくする必要がある。
一方、リクエストを受信した各メモリポート950は、各ポートにおけるキャッシュメモリへのヒットの有無や、DRAM(Dynamic Random Access Memory)へのアクセス競合の影響により、各々のタイミングで、リプライを返す。このため、メモリポート950がリクエストを受信する順序と対応するリプライを返す順序は逆転することもある。また、コア910とメモリI/F930との間の距離が一様でない場合には、距離によっても、リプライが返されるタイミングが変わる。
そして、何らかの理由によりメモリネットワーク920で競合が発生すると、メモリネットワーク920中のルータ等におけるバッファ等で、リプライ間での待ち合わせが行われる。この場合、ルータ等により競合調停が行われ、優先させるリプライが決定される。競合調停には、ランダム、ラウンドロビン、転送データの種類に基づく優先制御等、様々な方式が用いられる。競合調停では、多くの場合、送信先が同じコア910であるリプライの間では、先に到着したリプライが後に到着したリプライより先に処理される。しかし、ルータ等に入力されるリプライの順序は保証されていないため、後に発行されたリクエストに対するリプライにより、先に発行されたリクエストに対するリプライが待たされるケースがある。このように、リプライの順序の逆転は、レイテンシのばらつき増加の一因である。
特許第5732953号公報
上述のように、特許文献1のようなベクトルプロセッサでは、メモリアクセスのレイテンシのばらつきにより、ベクトル命令の実行時間が増大するという問題があった。
本発明の目的は、上述の課題を解決し、ベクトル命令の実行時間を低減できる、情報処理装置、情報処理方法、及び、プログラムを提供することである。
本発明の一態様における情報処理装置は、処理手段において実行される複数のベクトル命令の各々に対して順番にシーケンス番号を割り当て、当該ベクトル命令に対して生成される複数のメモリポートのそれぞれへのリクエストに、当該割り当てたシーケンス番号を付与して、それぞれ、当該複数のメモリポートへ送信する、制御手段と、前記複数のメモリポートから前記処理手段へ送信される、各々が対応するリクエストのシーケンス番号を含む複数のリプライ間で、当該複数のリプライの各々のシーケンス番号を基に優先制御を行う、転送手段と、を備える。
本発明の一態様における情報処理方法は、処理手段において実行される複数のベクトル命令の各々に対して順番にシーケンス番号を割り当て、当該ベクトル命令に対して生成される複数のメモリポートのそれぞれへのリクエストに、当該割り当てたシーケンス番号を付与して、それぞれ、当該複数のメモリポートへ送信し、前記複数のメモリポートから前記処理手段へ送信される、各々が対応するリクエストのシーケンス番号を含む複数のリプライ間で、当該複数のリプライの各々のシーケンス番号を基に優先制御を行う。
本発明の一態様におけるプログラムは、コンピュータに、処理手段において実行される複数のベクトル命令の各々に対して順番にシーケンス番号を割り当て、当該ベクトル命令に対して生成される複数のメモリポートのそれぞれへのリクエストに、当該割り当てたシーケンス番号を付与して、それぞれ、当該複数のメモリポートへ送信し、前記複数のメモリポートから前記処理手段へ送信される、各々が対応するリクエストのシーケンス番号を含む複数のリプライ間で、当該複数のリプライの各々のシーケンス番号を基に優先制御を行う、処理を実行させる。
本発明の効果は、ベクトル命令の実行時間を低減できることである。
本発明の第1の実施形態の特徴的な構成を示すブロック図である。 本発明の第1の実施形態における、情報処理装置100の構成を示すブロック図である。 本発明の第1の実施形態における、コア200の構成の詳細を示すブロック図である。 本発明の第1の実施形態における、制御部230の構成の詳細を示すブロック図である。 本発明の第1の実施形態における、シーケンス番号表の例を示す図である。 本発明の第1の実施形態における、メモリネットワーク300の構成の詳細を示すブロック図である。 本発明の第1の実施形態における、ルータ310の構成の詳細を示すブロック図である。 本発明の第1の実施形態における、制御部230による、リクエストパケット送信処理を示すフローチャートである。 本発明の第1の実施形態における、制御部230による、リプライパケット受信処理を示すフローチャートである。 本発明の第1の実施形態における、制御部230による、シーケンス番号割り当て判断処理(ステップS101)の詳細を示すフローチャートである。 本発明の第1の実施形態における、制御部230による、シーケンス番号更新処理(送信時)(ステップS105)の詳細を示すフローチャートである。 本発明の第1の実施形態における、制御部230による、シーケンス番号更新処理(受信時)(ステップS204)の詳細を示すフローチャートである。 本発明の第1の実施形態における、ルータ310による、転送処理を示すフローチャートである。 本発明の第2の実施形態における、シーケンス番号表の例を示す図である。 本発明の第2の実施形態における、制御部230による、シーケンス番号更新処理(送信時)(ステップS105)の詳細を示すフローチャートである。 本発明の第2の実施形態における、制御部230による、シーケンス番号更新処理(受信時)(ステップS204)の詳細を示すフローチャートである。 本発明の実施の形態における、コンピュータにより実現された情報処理装置100の構成を示すブロック図である。 特許文献1のベクトルプロセッサと同様のベクトルプロセッサの構成を示すブロック図である。
発明を実施するための形態について図面を参照して詳細に説明する。なお、各図面および明細書記載の各実施形態において、同様の構成要素には同一の符号を付与し、説明を適宜省略する。
(第1の実施形態)
第1の実施形態について説明する。ここでは、情報処理装置100が、ベクトル演算を行うCPU(Central Processing Unit)である、ベクトルプロセッサの場合を例に説明する。
はじめに、本発明の第1の実施形態の構成を説明する。
図2は、本発明の第1の実施形態における、情報処理装置100の構成を示すブロック図である。
図2を参照すると、情報処理装置100は、1以上のコア200(200a〜i)(以下、処理部とも記載する)、メモリネットワーク300(以下、転送部とも記載する)、複数のメモリI/F400(400a〜f)を含む。コア200は、メモリネットワーク300、及び、メモリI/F400を介して、メモリ500と接続される。メモリ500は複数のメモリポート510(510a〜f)に分割され、複数のメモリI/F400が、それぞれ、複数のメモリポート510に接続される。メモリアドレスは、各メモリポート510にインタリーブされて割り当てられる。コア200は、ベクトルロード命令、または、ベクトルストア命令の実行時に、メモリネットワーク300を介して、メモリにアクセスするためのリクエストパケットを送信する。コア200は、複数のベクトル要素に係るリクエストを、それぞれ、対応するメモリポート510に送信する。リクエストを受信したメモリポート510は、メモリネットワーク300を介して、各ベクトル要素に係るリプライパケットをコア200に送信する。
以下、ベクトルロード命令、及び、ベクトルストア命令を、まとめて、単に、ベクトル命令とも記載する。また、リクエストパケット、及び、リプライパケットを、それぞれ、単に、リクエスト、及び、リプライとも記載する。また、リクエストパケット、及び、リプライパケットをまとめて、単に、パケットとも記載する。
図3は、本発明の第1の実施形態における、コア200の構成の詳細を示すブロック図である。図3を参照すると、コア200は、スカラプロセッシング部210、ベクトルプロセッシング部220、及び、制御部230を含む。
スカラプロセッシング部210は、命令のフェッチ、デコード、スケジューリング、及び、一部命令の実行を行う。また、スカラプロセッシング部210は、ベクトルプロセッシング部220に対して、ベクトル命令に係る所定の処理やベクトル演算等の実行を指示する。また、スカラプロセッシング部210は、制御部230に対して、ベクトル命令に係るメモリアクセス制御の実行を指示する。
ベクトルプロセッシング部220は、ベクトルデータを保持するベクトルレジスタ、及び、各種演算器を含む。ベクトルプロセッシング部220は、スカラプロセッシング部210の指示に基づいて各種演算処理を実行する。また、ベクトルプロセッシング部220は、制御部230を通じて、ベクトル命令に係るメモリアクセスを行う。
制御部230は、スカラプロセッシング部210からの指示に基づき、ベクトル命令に係るメモリアクセス制御を実行する。制御部230は、ベクトル命令に係るメモリポート510へのリクエストの送信、メモリポート510からのリプライの受信を行う。制御部230は、ベクトル命令の実行時に、ベクトルロードやベクトルストアの対象であるアドレスを算出し、当該対象アドレスの論理アドレスと物理アドレスとの間の変換を行う。また、制御部230は、各ベクトル命令の実行時に、当該命令に対してシーケンス番号を割り当て、当該命令に対するリクエストに、当該シーケンス番号を付与して送信する。さらに、制御部230は、リプライの受信時に、リプライに含まれるデータを、スカラプロセッシング部210やベクトルプロセッシング部220へ転送する。
本発明の実施の形態では、シーケンス番号をN桁(Nは正の整数)の2進整数で表す。制御部230は、使用中のシーケンス番号間の差分が2N−1未満となるように、シーケンス番号を割り当て、リクエストを送信する。
図4は、本発明の第1の実施形態における、制御部230の構成の詳細を示すブロック図である。図4を参照すると、制御部230は、命令バッファ231、アドレス変換部232、命令実行制御部233、リクエスト制御部237、及び、リプライ制御部238を含む。また、制御部230は、さらに、シーケンス番号表格納部234、最古シーケンス番号格納部235、及び、次シーケンス番号格納部236を含む。
命令バッファ231は、スカラプロセッシング部210からのベクトル命令を、一時的に格納する。
アドレス変換部232は、ベクトルロードやベクトルストアの対象であるアドレスを算出し、当該対象アドレスの論理アドレスと物理アドレスとの間の変換を行う。
命令実行制御部233は、ベクトル命令に係るリクエストの送信を制御する。
シーケンス番号表格納部234は、シーケンス番号表を格納する。シーケンス番号表は、各ベクトル命令に対して割り当てられるシーケンス番号の使用状況を示す。
図5は、本発明の第1の実施形態における、シーケンス番号表の例を示す図である。
シーケンス番号表は、シーケンス番号毎に、使用中フラグ、及び、リプライカウンタを示す。使用中フラグは、対応するシーケンス番号が使用中か否かを示す。シーケンス番号が使用中とは、当該シーケンス番号が付与されたリクエストの内、対応するリプライを受信していないリクエストがあることを示す。使用中フラグには、例えば、対応するシーケンス番号が使用中の場合「1」が、使用中でない場合「0」が設定される。リプライカウンタは、リプライを受信していないリクエストの数を示す。リプライカウンタの値が1以上の場合、使用中フラグには「1」(使用中)が設定される。
図5の例では、シーケンス番号が、8ビット(N=8)で表されている。この場合、シーケンス番号表では、図5のように、256個のシーケンス番号が管理される。
なお、シーケンス番号表の各シーケンス番号に対する使用中フラグ、及び、リプライカウンタは、初期化時に、「0」にリセットされる。
最古シーケンス番号格納部235は、最古シーケンス番号を格納する。最古シーケンス番号は、使用中のシーケンス番号の内、最も古い番号である。最古シーケンス番号は、初期化時に「0」にリセットされる。
次シーケンス番号格納部236は、次シーケンス番号を格納する。次シーケンス番号は、次のベクトル命令に対して割り当てるべきシーケンス番号である。次シーケンス番号は、初期化時に「0」にリセットされる。
リクエスト制御部237は、リクエストを生成し、メモリネットワーク300を介して、メモリポート510へ送信する。
リプライ制御部238は、メモリポート510から、メモリネットワーク300を介して、リプライを受信し、受信したリプライからリプライデータを抽出する。
図6は、本発明の第1の実施形態における、メモリネットワーク300の構成の詳細を示すブロック図である。
図6を参照すると、メモリネットワーク300は、1以上のルータ310を含む。図6の例では、15個のルータ310(310a〜310o)が、3×5の二次元メッシュ状に配置されている。各ルータ310は、隣接したルータ310と接続されている。また、左端、及び、右端に配置されたルータ310(310a〜c、及び、310m〜o)には、それぞれ、メモリI/F400(400a〜f)が接続されている。他のルータ310(310d〜l)には、それぞれ、コア200(200a〜i)が接続されている。各コア200から送信されたリクエスト、または、各メモリI/F400から送信されたリプライは、それぞれ、コア200、または、メモリI/F400に接続されたルータ310に転送される。これらのパケットは、所定のルーティングテーブルやルーティングアルゴリズムに従って、ルータ310間で転送され、送信先のメモリI/F400、または、コア200へ到達する。
図7は、本発明の第1の実施形態における、ルータ310の構成の詳細を示すブロック図である。
図7を参照すると、ルータ310は、入力ポート311(311a〜e)、出力ポート312(312a〜e)、クロスバ313、及び、転送制御部314を含む。図7の例では、ルータ310は、5つの入力ポート311、及び、5つの出力ポート312を含む。入力ポート311、及び、出力ポート312は、図6に示したように、他のルータ310やコア200、メモリI/F400と接続される。また、入力ポート311の各々と、出力ポート312の各々とは、クロスバ313によりに接続される。入力ポート311、及び、出力ポート312は、それぞれ、入力バッファ316(316a〜e)、及び、出力バッファ317(317a〜e)を含む。これらのバッファは、パケットを、一時的に、一定数保持できる。
転送制御部314は、入力バッファ316に保持されているパケットの内のどれをクロスバ313に出力するかを決定し、入力バッファ316に、当該決定したパケットの出力を指示する。また、転送制御部314は、パケットの送信先(コア200やメモリI/F400)に応じて、クロスバ313による、入力ポート311と出力ポート312との間の接続を制御する。転送制御部314は、さらに、送信先が同じコア200であるリプライ間で優先制御を行う。
次に、本発明の第1の実施形態の動作を説明する。
ここでは、ベクトルロード命令が実行される場合を例に、リクエストの送信、及び、リプライの受信の動作を説明する。
はじめに、コア200の動作を説明する。
スカラプロセッシング部210は、ベクトル命令(ベクトルロード命令、または、ベクトルストア命令)を、ベクトルプロセッシング部220、及び、制御部230に送信する。ここで、スカラプロセッシング部210は、制御部230に対して、ベクトル命令を、ベースアドレス、ディスタンス、及び、ベクトル長とともに送信する。ベースアドレス、ディスタンス、及び、ベクトル長は、それぞれ、ベクトルプロセッシング部220により操作されるデータの内の最初データが格納される論理アドレス、データ間のアドレスの差分、及び、データ数を示す。これらベースアドレス、ディスタンス、及び、ベクトル長により、ベクトル命令によりベクトルレジスタの各要素にロードされる、或いは、各要素からストアされる、各データの論理アドレスが決定される。各データの論理アドレスは、ベースアドレス、ベースアドレス+ディスタンス、…、ベースアドレス+ディスタンス×(ベクトル長−1)のように決定される。
制御部230は、ベクトル命令を受信すると、受信した命令を、一旦、命令バッファ231に格納する。
図8は、本発明の第1の実施形態における、制御部230による、リクエストパケット送信処理を示すフローチャートである。
リクエストパケット送信処理は、ベクトル命令の命令バッファ231への格納、或いは、後述する最古シーケンス番号の更新(ステップS2045)を契機に行われる。
命令実行制御部233は、命令バッファ231にベクトル命令が格納されている場合、後述する「シーケンス番号割り当て判断処理」により、シーケンス番号を割り当て可能かどうか判断する(ステップS101)。
シーケンス番号の割り当てが不可能な場合(ステップS102/N)、命令実行制御部233は、命令バッファ231のベクトル命令の実行を保留する(ステップS109)。
シーケンス番号の割り当てが可能な場合(ステップS102/Y)、命令実行制御部233は、ベクトル命令を、命令バッファ231より取り出す(ステップS103)。
命令実行制御部233は、次シーケンス番号を、当該取り出したベクトル命令に割り当てる(ステップS104)。
命令実行制御部233は、後述する「シーケンス番号更新処理(送信時)」により、シーケンス番号表、及び、次シーケンス番号を更新する(ステップS105)。
アドレス変換部232は、ベクトル命令に係るデータ数分のデータの各々について、論理アドレスを算出し、物理アドレスに変換する(ステップS106)。
例えば、アドレス変換部232は、ベクトルロード命令のベースアドレス、ディスタンス、及び、ベクトル長を基に、当該ベクトルロード命令でロードする、データ数分の論理アドレスを算出する。
リクエスト制御部237は、ベクトル命令に係るデータ数分のデータの各々について、当該データにアクセスするためのリクエストパケットを生成する(ステップS107)。ここで、生成された各リクエストには、ステップS104で割り当てられたシーケンス番号が付与される。また、各リクエストでは、当該リクエストに対応するデータの物理アドレスが指定される。さらに、各リクエストの送信先、及び、送信元には、それぞれ、当該物理アドレスに対応するメモリポート510の識別子、及び、ベクトル命令を実行するコア200の識別子が設定される。
例えば、リクエスト制御部237は、データ数分のデータの各々について、当該データをメモリ500からロードするためのリクエスト(ロードリクエスト)を生成する。
リクエスト制御部237は、生成したデータ数分のリクエストを、メモリネットワーク300に送信する(ステップS108)。
コア200から送出された各リクエストは、メモリネットワーク300を介して、送信先のメモリポート510まで転送される。
メモリポート510は、リクエストで指定された物理アドレスのデータをメモリ500から読み出し、リプライを生成する。ここで、生成されたリプライには、対応するリクエストに付与されたシーケンス番号が、そのまま付与される。また、リプライには、メモリ500からロードされたデータやストアの結果が、リプライデータとして設定される。さらに、リプライの送信先、及び、送信元には、それぞれ、対応するリクエストで指定されたコア200の識別子、及び、当該メモリポート510の識別子が設定される。メモリポート510は、生成したリプライを、メモリネットワーク300に送信する。
メモリポート510から送出されたリプライは、メモリネットワーク300を介して、送信先のコア200まで転送される。
図9は、本発明の第1の実施形態における、制御部230による、リプライパケット受信処理を示すフローチャートである。
リプライパケット受信処理は、メモリネットワーク300からのリプライパケットの受信を契機に行われる。
リプライ制御部238は、リプライを受信すると(ステップS201)、受信したリプライからリプライデータを抽出し、ベクトルレジスタの対応する要素番号等を確認する(ステップS202)。
リプライ制御部238は、抽出したリプライデータをベクトルプロセッシング部220に転送する(ステップS203)。
例えば、リプライ制御部238は、ロードリクエストに対してロードされたデータを、ベクトルプロセッシング部220に転送する。
また、リプライ制御部238は、後述する「シーケンス番号更新処理(受信時)」により、シーケンス番号表、及び、最古シーケンス番号を更新する(ステップS204)。
図10は、本発明の第1の実施形態における、制御部230による、シーケンス番号割り当て判断処理(ステップS101)の詳細を示すフローチャートである。
命令実行制御部233は、次シーケンス番号から最古シーケンス番号を減算した差分を算出し(ステップS1011)、算出した差分が2N−1未満かどうかを判定する(ステップS1012)。差分が2N−1未満の場合(ステップS1012/Y)、命令実行制御部233は、シーケンス番号を割り当て可能と判断する(ステップS1013)。差分が2N−1以上の場合(ステップS1012/N)、命令実行制御部233は、シーケンス番号を割り当て不可と判断する(ステップS1014)。ここで、差分は、N桁の2進整数として評価され、オーバーフローは無視される。
これにより、使用中のシーケンス番号間の差分は、必ず2N−1−1以下であることが保証される。
例えば、N=8の場合、命令実行制御部233は、次シーケンス番号から最古シーケンス番号を減算した差分が「128」以上の場合、シーケンス番号を割り当て不可と判断する。最古シーケンス番号、及び、次シーケンス番号がそれぞれ2進数で「11110000」、及び、「01110000」の場合、差分は「10000000」であり、命令実行制御部233は、シーケンス番号を割り当て不可と判断する。この場合、ベクトル命令の実行は保留される。
図11は、本発明の第1の実施形態における、制御部230による、シーケンス番号更新処理(送信時)(ステップS105)の詳細を示すフローチャートである。
命令実行制御部233は、シーケンス番号表において、ステップS104で割り当てた次シーケンス番号に対する使用中フラグ、及び、リプライカウンタを設定する(ステップS1051)。ここで、命令実行制御部233は、使用中フラグに「1」を設定し、リプライカウンタに、当該シーケンス番号が付与されるリクエストの数(ベクトル命令に係るデータ数)を設定する。
命令実行制御部233は、次シーケンス番号をインクリメントする(「1」を加算する)(ステップS1052)。
これにより、各コア200から送信されるリクエストには、「0」、「1」、「2」、…のように、シーケンス番号が付与される。次シーケンス番号がN桁の2進整数で表現可能な最大値(2−1)に達した後は、オーバーフローを無視してインクリメントが行われ、再度「0」からの番号が使用される。
例えば、N=8の場合、次シーケンス番号が「255」に達した後は、「0」からの番号が使用される。
図12は、本発明の第1の実施形態における、制御部230による、シーケンス番号更新処理(受信時)(ステップS204)の詳細を示すフローチャートである。
リプライ制御部238は、シーケンス番号表において、ステップS201で受信したリプライに付与されていたシーケンス番号に対するリプライカウンタをデクリメントする(1を減じる)(ステップS2041)。
リプライ制御部238は、リプライカウンタが「0」になった場合(ステップS2042/Y)、シーケンス番号表における、当該シーケンス番号に対する使用中フラグに「0」を設定する(ステップS2043)。
さらに、リプライ制御部238は、最古シーケンス番号に対する使用中フラグが「0」になった場合(ステップS2044/Y)、最古シーケンス番号をインクリメントする(1を加算する)(ステップS2045)。なお、インクリメントした結果、新たな最古シーケンス番号に対する使用中フラグが「0」の場合、リプライ制御部238は、使用中フラグ「1」の最古シーケンス番号が得られるまで、最古シーケンス番号のインクリメントを繰り返す。また、最古シーケンス番号が次シーケンス番号と一致している場合は、使用中のシーケンス番号が無いため、リプライ制御部238は、最古シーケンス番号のインクリメントを行わない。また、最古シーケンス番号がN桁の2進整数で表現可能な最大値(2−1)に達した後は、オーバーフローを無視してインクリメントが行われ、再度「0」からの番号が使用される。
例えば、N=8の場合、最古シーケンス番号が「255」に達した後は、「0」からの番号が使用される。
次に、メモリネットワーク300におけるルータ310の動作を説明する。
図13は、本発明の第1の実施形態における、ルータ310による、転送処理を示すフローチャートである。
ルータ310の入力ポート311は、パケットを受信すると、受信したパケットを、入力バッファ316に格納する(ステップS301)。
入力ポート311は、当該受信したパケットの送信先、及び、シーケンス番号等の情報を抽出し、転送制御部314に送信する(ステップS302)。
転送制御部314は、入力バッファ316に格納されているパケットのルーティング先の出力ポート312を決定する(ステップS303)。
ここで、転送制御部314は、所定のルーティングテーブルやルーティングアルゴリズムに従って、ルーティング先の出力ポート312を決定する。
送信先が同一のコア200である複数のリプライがある場合(ステップS304/Y)、同一の出力ポート312がルーティング先として決定されるため、当該リプライ間で競合が発生する。この場合、転送制御部314は、当該リプライ間で優先制御(競合調停)を行う(ステップS305)。
ここで、転送制御部314は、シーケンス番号を基に、当該複数のリプライの内、古いリクエストに対応するリプライが新しいリクエストに対応するリプライより先に転送されるように、優先制御を行う。例えば、送信先が同一のコア200であるリプライA、Bのシーケンス番号がそれぞれ、Sa、Sbであると仮定する。転送制御部314は、リプライB、Aのシーケンス番号の差分、Sb−Saを算出する。転送制御部314は、算出したSb−Saと2N−1を比較する。上述の通り、コア200におけるシーケンス番号の制御により、SbとSaの差分は必ず2N−1−1以下であることが保証されている。このため、Sb−Sa<2N−1である場合、「リプライAに対応するリクエストは、リプライBに対応するリクエストより古い」と判断できる。一方、Sb−Sa≧2N−1である場合、「リプライAに対応するリクエストは、リプライBに対応するリクエストより新しい」と判断できる。ここで、差分は、N桁の2進整数として評価され、オーバーフローは無視される。そして、転送制御部314は、古いリクエストに対応するリプライを新しいリクエストに対応するリプライに優先して転送する。
例えば、N=8の場合、転送制御部314は、Sb−Saと「128」を比較する。Sb−Sa<128である場合、転送制御部314は、「リプライAに対応するリクエストは、リプライBに対応するリクエストより古い」と判断する。一方、Sb−Sa≧128である場合、転送制御部314は、「リプライAに対応するリクエストは、リプライBに対応するリクエストより新しい」と判断する。
なお、送信先が同一のコア200であるリプライが3つ以上存在した場合、転送制御部314は、上記のような2つのリプライ間の比較を、全てのリプライの組み合わせについて繰り返す。そして、転送制御部314は、最も古いリクエストに対応するリプライを優先して転送する。
転送制御部314は、ルーティング先の決定結果に従って、入力ポート311と出力ポート312とが接続されるように、クロスバ313の接続を設定する(ステップS306)。
転送制御部314は、優先制御の結果に従って、入力ポート311に、入力バッファ316からのパケットの出力を指示する(ステップS307)。
クロスバ313は、接続設定に従って、入力ポート311から入力されたパケットを出力ポート312に転送する(ステップS308)
以上により、本発明の第1の実施形態の動作が完了する。
次に、本発明の第1の実施形態の特徴的な構成について説明する。
図1は、本発明の第1の実施の形態における、情報処理装置100の特徴的な構成を示す図である。図1を参照すると、情報処理装置100は、制御部230、及び、メモリネットワーク300(転送部)を含む。
制御部230は、コア200(処理部)において実行される複数のベクトル命令の各々に対して順番にシーケンス番号を割り当てる。制御部230は、当該ベクトル命令に対して生成される複数のメモリポート510のそれぞれへのリクエストに、当該割り当てたシーケンス番号を付与して、それぞれ、当該複数のメモリポート510へ送信する。
メモリネットワーク300(転送部)は、複数のメモリポート510からコア200へ送信される、各々が対応するリクエストのシーケンス番号を含む複数のリプライ間で、当該複数のリプライの各々のシーケンス番号を基に優先制御を行う。
次に、本発明の第1の実施形態の効果について説明する。
本発明の第1の実施形態によれば、ベクトルプロセッサの実効性能を向上できる。その理由は、制御部230がベクトル命令に対して順番にシーケンス番号を割り当て、リクエストに付与し、メモリネットワーク300が、リプライに含まれるシーケンス番号を基に、リプライ間の優先制御を行うためである。
これにより、新しいリクエストに対応するリプライによる古いリクエストに対応するリプライの転送の阻害が防止され、レイテンシのばらつきが低減する。そのため、ベクトル命令の実行時間が低減し、ベクトルプロセッサの実効性能が向上する。
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。
本発明の第2の実施形態では、1つのシーケンス番号が複数のベクトル命令で用いられる点において、本発明の第1の実施形態と異なる。
本発明の第2の実施形態では、制御部230がベクトル命令に対してシーケンス番号を割り当てる時に、複数のベクトル命令を実行する毎に次シーケンス番号をインクリメントする。すなわち、制御部230は、1つのシーケンス番号を複数のベクトル命令に係るリクエストに付与する。
図14は、本発明の第2の実施形態における、シーケンス番号表の例を示す図である。
図14の例では、シーケンス番号表は、シーケンス番号毎に、使用中フラグ、リプライカウンタに加えて、命令カウンタを示す。命令カウンタは、対応するシーケンス番号を割り当てる残ベクトル命令数を示す。各シーケンス番号に対する命令カウンタには、同じシーケンス番号を割り当てることができるベクトル命令数(以下、割り当て可能命令数と記載する)が、初期値として、当該シーケンス番号が次シーケンス番号に設定された時に設定される。割り当て可能命令数には、例えば、管理者等により、予め所定の値が設定される。また、シーケンス番号「0」に対する命令カウンタにも、初期化時に、割り当て可能命令数が設定される。
図15は、本発明の第2の実施形態における、制御部230による、シーケンス番号更新処理(送信時)(ステップS105)の詳細を示すフローチャートである。
命令実行制御部233は、シーケンス番号表において、ステップS104で割り当てた次シーケンス番号に対する使用中フラグ、及び、リプライカウンタを設定する(ステップS1051A)。ここで、命令実行制御部233は、使用中フラグを「1」に更新する。また、命令実行制御部233は、リプライカウンタに、当該シーケンス番号が付与されるリクエストの数を加える。
命令実行制御部233は、さらに、ステップS104で割り当てた次シーケンス番号に対する命令カウンタをデクリメントする(ステップS1052A)。
また、命令実行制御部233は、命令カウンタが0であれば(ステップS1053A/Y)、次シーケンス番号をインクリメントする(「1」を加算する)(ステップS1054A)。
命令実行制御部233は、インクリメントにより得られた次シーケンス番号に対応する命令カウンタに、割り当て命令数を設定する(ステップS1055A)。
図16は、本発明の第2の実施形態における、制御部230による、シーケンス番号更新処理(受信時)(ステップS204)の詳細を示すフローチャートである。
リプライ制御部238は、シーケンス番号表において、ステップS201で受信したリプライに付与されていたシーケンス番号に対するリプライカウンタをデクリメントする(1を減じる)(ステップS2041A)。
リプライ制御部238は、リプライカウンタが「0」になった場合(ステップS2042A/Y)、シーケンス番号表における、当該シーケンス番号に対する使用中フラグに「0」を設定する(ステップS2043A)。
さらに、リプライ制御部238は、最古シーケンス番号に対する使用中フラグが「0」になり、かつ、命令カウンタが「0」の場合(ステップS2044A/Y)、最古シーケンス番号をインクリメントする(1を加算する)(ステップS2045A)。なお、インクリメントした結果、新たな最古シーケンス番号に対する使用中フラグが「0」、かつ、命令カウンタが「0」の場合、リプライ制御部238は、使用中フラグ「1」、または、命令カウンタ「0以外」が得られるまで、インクリメントを繰り返す。
これらの処理により、各コア200から送信されるリクエストには、割り当て命令数のベクトル命令が実行される毎に、新たなシーケンス番号が付与される。例えば、割り当て命令数が「4」であれば、4つのベクトル命令が実行される毎に、新たなシーケンス番号が付与される。
次に、本発明の第2の実施形態の効果について説明する。
上述の本発明の第1の実施の形態では、レイテンシの最大値に対して割り当て可能な十分な数のシーケンス番号が無い場合、シーケンス番号の枯渇によってベクトル命令の実行が制限され、情報処理装置100の性能低下が発生する可能性がある。性能低下を防ぐためには、シーケンス番号のビット幅を増やすことが望ましい。しかしながら、シーケンス番号のビット幅の増加は、配線リソースを増やすと共に、ビット幅の大きなシーケンス番号比較回路を必要とするため、LSI(Large Scale Integration)の実装の難易度を増大させる。
本発明の第2の実施形態によれば、レイテンシの最大値が大きい場合でも、ハードウェアの実装の難易度を増大させることなく、ベクトルプロセッサの実効性能を向上できる。その理由は、制御部230が、1つのシーケンス番号を複数のベクトル命令に割り当てるためである。
複数のベクトル命令に対して1つのシーケンス番号を割り当てると、同じシーケンス番号が付与された、異なるベクトル命令のリクエスト間での順序制御はできなくなる。しかしながら、シーケンス番号を表すビット幅が同じでも、シーケンス番号が枯渇するまでの時間は延長される。したがって、同じレイテンシの最大値に対して、少ないハードウェアで、シーケンス番号の枯渇が発生しないように、コア200を実装することができる。
なお、上述の説明では、命令カウンタの初期値である割り当て可能命令数に、予め所定の値が設定される場合を例に説明した。しかしながら、これに限らず、割り当て可能命令数は、過去一定期間のベクトル長やレイテンシの最大値、その時点で使用中シーケンス番号の数等を基に、動的に切り替えられてもよい。例えば、命令実行制御部233は、過去一定期間のベクトル長やレイテンシの最大値、その時点で使用中シーケンス番号の数が大きい場合、小さい場合に比べて、割り当て可能命令数を増やしてもよい。これにより、情報処理装置100やメモリ500の状況に応じて、シーケンス番号の枯渇が発生しないように、シーケンス番号を割り当てることができる。
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されない。本願発明の構成や詳細に対して、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
例えば、上述の各実施形態では、メモリネットワーク300が、図6のように二次元メッシュ状に配置されたルータ310により構成される場合を例に説明した。しかしながら、これに限らず、コア200とメモリI/F400との間で、パケットを転送できれば、メモリネットワーク300のトポロジやサイズは、図6で示したトポロジやサイズ以外でもよい。また、上述の各実施形態では、ルータ310において、入力ポート311と出力ポート312との間がクロスバ313により接続される場合を例に説明した。しかしながら、これに限らず、入力ポート311と出力ポート312との間で、パケットを転送でき、パケット間の競合調停ができれば、入力ポート311と出力ポート312との間は、クロスバ313以外で接続されていてもよい。
また、上述の各実施形態では、情報処理装置100がベクトルプロセッサの場合を例に説明した。しかしながら、これに限らず、情報処理装置100が、CPUとプログラムを記憶した記憶媒体を含み、プログラムに基づく制御によって動作するコンピュータであってもよい。
図17は、本発明の実施の形態における、コンピュータにより実現された情報処理装置100の構成を示すブロック図である。
この場合、情報処理装置100は、CPU101、ハードディスクやメモリ等の記憶デバイス102(記憶媒体)、キーボード、ディスプレイ等の入出力デバイス103、及び、他の装置等と通信を行う通信デバイス104を含む。CPU101は、コア200、メモリネットワーク300、及び、複数のメモリI/F400を実現するためのプログラムを実行する。記憶デバイス102は、コア200内の制御部230に含まれる命令バッファ231、シーケンス番号表格納部234、最古シーケンス番号格納部235、及び、次シーケンス番号格納部236のデータを記憶する。また、記憶デバイス102は、メモリネットワーク300内のルータ310に含まれる入力バッファ316、及び、出力バッファ317のデータを記憶する。通信デバイス104は、メモリ500との間で、リクエストパケットやリプライパケットを送受信する。入出力デバイス103は、管理者等からの演算実行指示の入力や管理者等への演算実行結果の出力を行う。
また、情報処理装置100の各構成要素が、有線または無線で接続された複数のコンピュータに分散的に配置されていてもよい。
また、情報処理装置100のコア200、メモリネットワーク300、及び、メモリI/F400の各構成要素の一部、または、全部が、汎用、または、専用の回路(circuitry)やプロセッサ、これらの組み合わせによって実現されてもよい。
100 情報処理装置
101 CPU
102 記憶デバイス
103 入出力デバイス
104 通信デバイス
200 コア
210 スカラプロセッシング部
220 ベクトルプロセッシング部
230 制御部
231 命令バッファ
232 アドレス変換部
233 命令実行制御部
234 シーケンス番号表格納部
235 最古シーケンス番号格納部
236 次シーケンス番号格納部
237 リクエスト制御部
238 リプライ制御部
300 メモリネットワーク
310 ルータ
311 入力ポート
312 出力ポート
313 クロスバ
314 転送制御部
316 入力バッファ
317 出力バッファ
400 メモリI/F
500 メモリ
510 メモリポート
900 ベクトルプロセッサ
910 コア
920 メモリネットワーク
930 メモリI/F
940 メモリ
950 メモリポート

Claims (8)

  1. 処理手段において実行される複数のベクトル命令の各々に対して順番にシーケンス番号を割り当て、当該ベクトル命令に対して生成される複数のメモリポートのそれぞれへのリクエストに、当該割り当てたシーケンス番号を付与して、それぞれ、当該複数のメモリポートへ送信する、制御手段と、
    前記複数のメモリポートから前記処理手段へ送信される、各々が対応するリクエストのシーケンス番号を含む複数のリプライ間で、当該複数のリプライの各々のシーケンス番号を基に優先制御を行う、転送手段と、
    を備えた情報処理装置であって、
    前記転送手段は、前記複数のリプライ間で、当該複数のリプライの各々のシーケンス番号を基に、当該複数のリプライの内の一のリクエストに対するリプライを、当該一のリクエストより新しいリクエストに対するリプライより優先して転送し、
    前記シーケンス番号は、N桁(Nは正の整数)の2進整数で表され、
    前記制御手段は、使用されているシーケンス番号の差分が2 N−1 未満となるように、前記複数のベクトル命令の各々にシーケンス番号を割り当て、
    前記転送手段は、第1のリプライのシーケンス番号から第2のリプライのシーケンス番号を減じることによって得られる値が2 N−1 未満の場合、当該第1のリプライに対するリクエストが当該第2のリプライに対するリクエストより新しいリクエストであると判断する、
    情報処理装置。
  2. 前記制御手段は、同一のシーケンス番号を、前記複数のベクトル命令の内の、連続して実行される、割り当て可能命令数のベクトル命令に割り当てる、
    請求項1に記載の情報処理装置。
  3. 前記制御手段は、前記割り当て可能命令数を、所定期間におけるベクトル長、所定期間におけるレイテンシの値、及び、使用されているシーケンス番号の数、の内の少なくとも一つを基に決定する、
    請求項2に記載の情報処理装置。
  4. 処理手段において実行される複数のベクトル命令の各々に対して順番にシーケンス番号を割り当て、当該ベクトル命令に対して生成される複数のメモリポートのそれぞれへのリクエストに、当該割り当てたシーケンス番号を付与して、それぞれ、当該複数のメモリポートへ送信する、制御手段と、
    前記複数のメモリポートから前記処理手段へ送信される、各々が対応するリクエストのシーケンス番号を含む複数のリプライ間で、当該複数のリプライの各々のシーケンス番号を基に優先制御を行う、転送手段と、
    を備えた情報処理装置であって、
    前記制御手段は、同一のシーケンス番号を、前記複数のベクトル命令の内の、連続して実行される、割り当て可能命令数のベクトル命令に割り当て、前記割り当て可能命令数を、所定期間におけるベクトル長、所定期間におけるレイテンシの値、及び、使用されているシーケンス番号の数、の内の少なくとも一つを基に決定する、
    情報処理装置。
  5. 複数の前記制御手段の各々に対して、前記制御手段を備え、
    前記転送手段は、同一の前記処理手段へ送信される前記複数のリプライ間で前記優先制御を行う、
    請求項1乃至4のいずれかに記載の情報処理装置。
  6. 処理手段において実行される複数のベクトル命令の各々に対して順番にシーケンス番号を割り当て、当該ベクトル命令に対して生成される複数のメモリポートのそれぞれへのリクエストに、当該割り当てたシーケンス番号を付与して、それぞれ、当該複数のメモリポートへ送信し、
    前記複数のメモリポートから前記処理手段へ送信される、各々が対応するリクエストのシーケンス番号を含む複数のリプライ間で、当該複数のリプライの各々のシーケンス番号を基に優先制御を行う、
    情報処理方法であって、
    前記優先制御を行う場合、前記複数のリプライ間で、当該複数のリプライの各々のシーケンス番号を基に、当該複数のリプライの内の一のリクエストに対するリプライを、当該一のリクエストより新しいリクエストに対するリプライより優先して転送し、
    前記シーケンス番号は、N桁(Nは正の整数)の2進整数で表され、
    前記複数のベクトル命令の各々にシーケンス番号を割り当てる場合、使用されているシーケンス番号の差分が2 N−1 未満となるように、前記複数のベクトル命令の各々にシーケンス番号を割り当て、
    前記優先制御を行う場合、第1のリプライのシーケンス番号から第2のリプライのシーケンス番号を減じることによって得られる値が2 N−1 未満の場合、当該第1のリプライに対するリクエストが当該第2のリプライに対するリクエストより新しいリクエストであると判断する、
    情報処理方法。
  7. 処理手段において実行される複数のベクトル命令の各々に対して順番にシーケンス番号を割り当て、当該ベクトル命令に対して生成される複数のメモリポートのそれぞれへのリクエストに、当該割り当てたシーケンス番号を付与して、それぞれ、当該複数のメモリポートへ送信し、
    前記複数のメモリポートから前記処理手段へ送信される、各々が対応するリクエストのシーケンス番号を含む複数のリプライ間で、当該複数のリプライの各々のシーケンス番号を基に優先制御を行う、
    情報処理方法であって、
    前記複数のベクトル命令の各々に対してシーケンス番号を割り当てる場合、同一のシーケンス番号を、前記複数のベクトル命令の内の、連続して実行される、割り当て可能命令数のベクトル命令に割り当て、
    前記割り当て可能命令数を、所定期間におけるベクトル長、所定期間におけるレイテンシの値、及び、使用されているシーケンス番号の数、の内の少なくとも一つを基に決定する、
    情報処理方法。
  8. コンピュータに、
    処理手段において実行される複数のベクトル命令の各々に対して順番にシーケンス番号を割り当て、当該ベクトル命令に対して生成される複数のメモリポートのそれぞれへのリクエストに、当該割り当てたシーケンス番号を付与して、それぞれ、当該複数のメモリポートへ送信し、
    前記複数のメモリポートから前記処理手段へ送信される、各々が対応するリクエストのシーケンス番号を含む複数のリプライ間で、当該複数のリプライの各々のシーケンス番号を基に優先制御を行う、
    処理を実行させるプログラムであって、
    前記優先制御を行う場合、前記複数のリプライ間で、当該複数のリプライの各々のシーケンス番号を基に、当該複数のリプライの内の一のリクエストに対するリプライを、当該一のリクエストより新しいリクエストに対するリプライより優先して転送する
    処理を実行させ、
    前記シーケンス番号は、N桁(Nは正の整数)の2進整数で表され、
    前記複数のベクトル命令の各々にシーケンス番号を割り当てる場合、使用されているシーケンス番号の差分が2 N−1 未満となるように、前記複数のベクトル命令の各々にシーケンス番号を割り当て、
    前記優先制御を行う場合、第1のリプライのシーケンス番号から第2のリプライのシーケンス番号を減じることによって得られる値が2 N−1 未満の場合、当該第1のリプライに対するリクエストが当該第2のリプライに対するリクエストより新しいリクエストであると判断する、
    処理を実行させるプログラム。
JP2015249650A 2015-12-22 2015-12-22 情報処理装置、情報処理方法、及び、プログラム Active JP6682848B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015249650A JP6682848B2 (ja) 2015-12-22 2015-12-22 情報処理装置、情報処理方法、及び、プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015249650A JP6682848B2 (ja) 2015-12-22 2015-12-22 情報処理装置、情報処理方法、及び、プログラム

Publications (2)

Publication Number Publication Date
JP2017117064A JP2017117064A (ja) 2017-06-29
JP6682848B2 true JP6682848B2 (ja) 2020-04-15

Family

ID=59234715

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015249650A Active JP6682848B2 (ja) 2015-12-22 2015-12-22 情報処理装置、情報処理方法、及び、プログラム

Country Status (1)

Country Link
JP (1) JP6682848B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7225904B2 (ja) * 2019-02-27 2023-02-21 日本電気株式会社 ベクトル演算処理装置、ベクトル演算処理装置による配列変数初期化方法、及び、ベクトル演算処理装置による配列変数初期化プログラム
CN117093268B (zh) * 2023-10-19 2024-01-30 超睿科技(长沙)有限公司 一种向量处理方法、系统、设备及存储介质

Also Published As

Publication number Publication date
JP2017117064A (ja) 2017-06-29

Similar Documents

Publication Publication Date Title
US10169080B2 (en) Method for work scheduling in a multi-chip system
US11042412B2 (en) Memory allocation method and server
TWI519958B (zh) 用於多節點系統中的記憶體分配的方法和裝置
JP6263596B2 (ja) 分散キャッシュメモリにおける適応分割用のシステム及び方法
WO2014038070A1 (ja) 情報処理装置,並列計算機システム及び情報処理装置の制御方法
WO2019072162A1 (zh) 虚拟网络映射方法、设备和存储介质
JP2016195375A5 (ja)
TW201543218A (zh) 具有多節點連接的多核網路處理器互連之晶片元件與方法
US10489204B2 (en) Flexible in-order and out-of-order resource allocation
WO2011162230A1 (ja) 情報処理システム、中継装置、および情報処理方法
WO2010116431A1 (ja) キャッシュ制御装置及びキャッシュ制御方法
WO2021114768A1 (zh) 数据处理装置、方法、芯片、处理器、设备及存储介质
JP6682848B2 (ja) 情報処理装置、情報処理方法、及び、プログラム
JP2014186411A (ja) 管理装置、情報処理システム、情報処理方法、及びプログラム
JPWO2017056310A1 (ja) 計算機および計算機の制御方法
JP5704567B2 (ja) ノード装置、システム、及び、パケット処理方法
US20060153185A1 (en) Method and apparatus for dynamically changing ring size in network processing
JP6817827B2 (ja) アクセラレータ処理管理装置、ホスト装置、アクセラレータ処理実行システム、方法およびプログラム
JP2005293427A (ja) データ転送処理装置及びデータ転送処理方法
JP7217341B2 (ja) プロセッサおよびレジスタの継承方法
US20210073162A1 (en) Data processing apparatus and operation method thereof
JP6146306B2 (ja) I/oデバイス制御システムおよびi/oデバイス制御システムの制御方法
US6721858B1 (en) Parallel implementation of protocol engines based on memory partitioning
KR101797929B1 (ko) 매니코어 플랫폼에서 코어에 프로세스를 할당하는 방법 및 코어 프로세스간 통신 방법
JP6251417B2 (ja) ストレージシステム、及び、記憶制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181115

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190926

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191008

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191205

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191224

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200212

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200309

R150 Certificate of patent or registration of utility model

Ref document number: 6682848

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150