JP2015210659A - Arithmetic processing unit and control method of arithmetic processing unit - Google Patents
Arithmetic processing unit and control method of arithmetic processing unit Download PDFInfo
- Publication number
- JP2015210659A JP2015210659A JP2014091683A JP2014091683A JP2015210659A JP 2015210659 A JP2015210659 A JP 2015210659A JP 2014091683 A JP2014091683 A JP 2014091683A JP 2014091683 A JP2014091683 A JP 2014091683A JP 2015210659 A JP2015210659 A JP 2015210659A
- Authority
- JP
- Japan
- Prior art keywords
- ram
- cache
- arithmetic processing
- address
- way
- 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.)
- Granted
Links
Images
Abstract
Description
本発明は、演算処理装置及び演算処理装置の制御方法に関する。 The present invention relates to an arithmetic processing device and a control method for the arithmetic processing device.
近年、演算性能向上のために、演算処理装置は、SIMD(Single Instruction Multiple Data)と呼ばれる処理を行うことがある。SIMDは、複数のデータに対する演算を1つの命令でまとめて処理する手法である。また、SIMDを用いた演算処理の性能向上のために、ロード・ストア処理も、SIMDに応じた拡張がなされることが好ましい。 In recent years, in order to improve calculation performance, an arithmetic processing apparatus sometimes performs processing called SIMD (Single Instruction Multiple Data). SIMD is a method for processing operations on a plurality of pieces of data in a single instruction. Also, in order to improve the performance of arithmetic processing using SIMD, it is preferable that the load / store processing is also expanded according to SIMD.
また、SIMDを用いたロード・ストア処理では、演算器とキャッシュとの間の高スループットが性能向上の鍵となる。SIMDを用いたロード・ストア処理では、1つのロード・ストア命令に対して1サイクルでSIMDデータ幅分のデータが演算器とキャッシュとの間で転送されることが好ましい。 Also, in load / store processing using SIMD, high throughput between the arithmetic unit and the cache is a key to performance improvement. In load / store processing using SIMD, it is preferable that data corresponding to the SIMD data width is transferred between the arithmetic unit and the cache in one cycle for one load / store instruction.
例えば、4ウェイセットアソシエイティブ方式のキャッシュ構成で、SIMDデータ幅が32Byteのロード・ストア処理を実現するには次のような構成を有すればよい。 For example, in order to realize a load / store process with a SIMD data width of 32 bytes in a 4-way set associative cache configuration, the following configuration may be used.
この場合、キャッシュは、4つのウェイから成り、ウェイ毎に4個のRAM(Random Access Memory)を有する。そして、各RAMは、例えば、読み出し幅8Byteの1 read or 1 weite RAMである。これにより、1ウェイあたりの1回の読み出し幅は8Byte×4=32Byteとなる。よって、このキャッシュRAMを用いれば、8Byte×4=32ByteのSIMDデータ幅を1サイクルで読み出すことができる。すなわち、このキャッシュRAMであればSIMDデータ幅が32Byteのロード・ストア処理を実現できる。 In this case, the cache is composed of four ways, and each way has four RAMs (Random Access Memory). Each RAM is, for example, a 1 read or 1 weight RAM with a read width of 8 bytes. As a result, the read width per one way is 8 bytes × 4 = 32 bytes. Therefore, if this cache RAM is used, the SIMD data width of 8 bytes × 4 = 32 bytes can be read in one cycle. In other words, this cache RAM can realize load / store processing with a SIMD data width of 32 bytes.
また、行列積演算などを実行する場合、特定のアドレス間隔でメモリ上にデータが配置されることが考えられる。このような、特定のアドレス間隔でメモリ上に配置されたデータの間隔をストライドと呼び、ストライドパターンで配置されたデータへのアクセスをストライドアクセスと呼ぶ場合がある。 In addition, when executing a matrix product operation or the like, it is conceivable that data is arranged on the memory at specific address intervals. Such an interval between data arranged on a memory at a specific address interval may be called a stride, and access to data arranged in a stride pattern may be called a stride access.
このようなストライドアクセスを考慮して、更なる演算性能向上の技術として、ストライドパターンの複数のデータに対して、1つの命令でSIMD演算を行う技術があり、それに伴うロード・ストア処理を、ストライドロード・ストライドストア処理と呼ぶ場合がある。 In consideration of such stride access, there is a technique for performing SIMD calculation with a single instruction for a plurality of data in a stride pattern as a technique for further improving the calculation performance. It may be called a load stride store process.
このストライドロード・ストライドストア処理を実行する場合にも、演算器とキャッシュとの間の高スループットは性能向上のために重要であり、ストライドパターンのデータを1サイクルで転送することが好ましい。 Even when this stride load / stride store process is executed, high throughput between the arithmetic unit and the cache is important for improving performance, and it is preferable to transfer stride pattern data in one cycle.
例えば、ストライドアクセスの技術として、メモリのインタリーブ構成をストライドの間隔に合わせることで複数のデータを同時にアクセスする従来技術がある。また、ストライドの間隔に合わせて、メモリのアクセス単位を変更して、スループットを向上させる従来技術がある。 For example, as a stride access technique, there is a conventional technique in which a plurality of data is accessed simultaneously by adjusting the memory interleave configuration to the stride interval. Further, there is a conventional technique for improving the throughput by changing the memory access unit in accordance with the stride interval.
しかしながら、従来のキャッシュ構成のように各ウェイに独立してRAMが割り当てられた構成のままストライドアクセスを行うと、1サイクルで全要素のデータにアクセスすることが困難である。 However, if stride access is performed in a configuration in which a RAM is independently assigned to each way as in the conventional cache configuration, it is difficult to access data of all elements in one cycle.
例えば、前述のように1ウェイに読み出し幅8Byteの1 read or 1 weite RAMが4つ割り当てられた構成で、先頭アドレスである0x0から8ByteデータをSIMDデータ幅が32Byteで且つストライド間隔が2でロードする場合で説明する。ここでは、SIMDの4つのキャッシュアクセスリクエストを、要素0〜3とする。
For example, as described above, 4 ways of 1 read or 1 weight RAM with a read width of 8 bytes are allocated to 1 way, and 8 bytes of data from 0x0, which is the top address, are loaded with a SIMD data width of 32 bytes and a stride interval of 2. The case will be described. Here, four cache access requests of SIMD are set as
この構成では32Byte毎に同じRAMに戻ってくるので、要素2のデータは、0x0から32Byte後のアドレスから始まる場所に格納されるので、要素0のデータと要素2のデータとは同じRAM上に存在する。また、同様の理由で、要素1のデータと要素3のデータとは同じRAM上に存在する。
In this configuration, the data is returned to the same RAM every 32 bytes, so the data of
このように、従来からのウェイの配置では、1サイクルで全要素のデータにアクセスすることが困難であり、スループットが低下してしまうおそれがある。 As described above, in the conventional way arrangement, it is difficult to access data of all elements in one cycle, and the throughput may be reduced.
また、メモリのインタリーブ構成をストライドの間隔に合わせる従来技術を用いても、ストライドアクセスにおいて同じRAMへのアクセスが発生してしまい、1サイクルで全要素のデータにアクセスすることが困難である。また、ストライド間隔に応じてメモリのアクセス単位を変える従来技術を用いても、1ウェイに対するRAMの構成は変わらず、ストライドアクセスにおいて同じRAMへのアクセスが発生してしまい、1サイクルで全要素のデータにアクセスすることが困難である。すなわち、いずれの従来技術を用いても、スループットが低下してしまうおそれがある。 Further, even when the conventional technique of adjusting the memory interleaved configuration to the stride interval is used, the same RAM is accessed in the stride access, and it is difficult to access the data of all elements in one cycle. In addition, even when the conventional technology that changes the memory access unit according to the stride interval is used, the RAM configuration for one way does not change, and the same RAM is accessed in the stride access. It is difficult to access the data. That is, there is a possibility that the throughput may be reduced by using any of the conventional techniques.
開示の技術は、上記に鑑みてなされたものであって、スループットを向上させた演算処理装置及び演算処理装置の制御方法を提供することを目的とする。 The disclosed technology has been made in view of the above, and an object thereof is to provide an arithmetic processing device and a control method for the arithmetic processing device that improve the throughput.
本願の開示する演算処理装置及び演算処理装置の制御方法は、一つの態様において、キャッシュメモリは、ウェイ毎に複数の記憶素子をそれぞれ有し、各ウェイに属する複数の前記記憶素子に対して連続するアドレスが割り当てられる。命令制御部は、同じウェイに含まれる所定のアドレス間隔のデータに対する処理をそれぞれ指示する複数のキャッシュアクセス要求を含む演算処理命令を取得し、取得した複数の前記キャッシュアクセス要求を送信する。キャッシュ制御部は、前記命令制御部から送信された複数の前記キャッシュアクセス要求をそれぞれ受信し、各前記キャッシュアクセス要求で指定された前記ウェイに含まれる前記所定のアドレス間隔のデータに対する複数のアクセス処理を実行する。演算制御部は、前記キャッシュ制御部による前記アクセス処理の処理結果を基に演算処理を行う。 In one aspect, the arithmetic processing device and the control method of the arithmetic processing device disclosed in the present application are such that the cache memory has a plurality of storage elements for each way, and is continuous with respect to the plurality of storage elements belonging to each way. Address to be assigned. The instruction control unit acquires an operation processing instruction including a plurality of cache access requests that respectively instruct processing on data at a predetermined address interval included in the same way, and transmits the acquired plurality of cache access requests. The cache control unit receives each of the plurality of cache access requests transmitted from the instruction control unit, and performs a plurality of access processes on the data at the predetermined address interval included in the way specified by each cache access request Execute. The arithmetic control unit performs arithmetic processing based on the processing result of the access processing by the cache control unit.
本願の開示する演算処理装置及び演算処理装置の制御方法の一つの態様によれば、所定のアドレス間隔のデータに対するデータの読み出しであってもスループットを維持することができるという効果を奏する。 According to one aspect of the arithmetic processing device and the control method of the arithmetic processing device disclosed in the present application, there is an effect that the throughput can be maintained even when data is read from data at a predetermined address interval.
以下に、本願の開示する演算処理装置及び演算処理装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する演算処理装置及び演算処理装置の制御方法が限定されるものではない。 Embodiments of an arithmetic processing device and a control method for the arithmetic processing device disclosed in the present application will be described below in detail with reference to the drawings. The following embodiments do not limit the arithmetic processing device and the control method of the arithmetic processing device disclosed in the present application.
図1は、演算処理装置のブロック図である。本実施例では、演算処理装置としてCPU(Central Processing Unit)を例に説明する。 FIG. 1 is a block diagram of an arithmetic processing unit. In this embodiment, a CPU (Central Processing Unit) will be described as an example of the arithmetic processing device.
CPU1は、命令制御部11、演算制御部12、キャッシュ制御部13、二次キャッシュ制御部14及びメモリ制御部15を有する。そして、メモリ制御部15は、メモリ2と接続する。
The
命令制御部11は、アプリケーションなどから命令を取得する。そして、命令制御部11は、取得した命令にキャッシュアクセスリクエストが含まれているか否かを判定する。キャッシュアクセスリクエストとは、例えば、メモリからキャッシュを介して演算器へのデータ読み込みや演算器からキャッシュを介してのメモリへのデータ書き込みを要求するロード・ストアリクエストなどである。
The
本実施例に係るキャッシュアクセスリクエストは、メモリ上で非連続な複数のデータをアクセスするストライドアクセスを行うリクエストである。 The cache access request according to the present embodiment is a request for performing stride access to access a plurality of non-contiguous data on the memory.
命令制御部11は、命令に含まれるキャッシュアクセスリクエストをキャッシュ制御部13へ送信する。以下では、キャッシュアクセスリクエストを、単に「リクエスト」と呼ぶ。
The
また、命令制御部11は、命令に含まれる演算処理の実行要求などを演算制御部12へ送出する。
In addition, the
キャッシュ制御部13は、一次キャッシュを有する。そして、キャッシュ制御部13は、ストライドアクセスを示すリクエストを命令制御部11から受信する。
The
受信した各リクエストがロード処理のリクエストの場合、キャッシュ制御部13は、一次キャッシュにおいてキャッシュヒットするか否かを判定する。キャッシュヒットしない場合、キャッシュ制御部13は、データ転送要求を二次キャッシュ制御部14へ通知する。その後、キャッシュ制御部13は、データ転送要求に対する応答データを二次キャッシュ制御部14から受信する。そして、キャッシュ制御部13は、応答データを一次キャッシュへ書き込む。その後、キャッシュ制御部13は、一次キャッシュにおいてキャッシュヒットするか否かを判定する。キャッシュヒットした場合、キャッシュ制御部13は、ヒットしたデータを一次キャッシュから取得し演算制御部12へ送信する。
When each received request is a request for load processing, the
受信した各リクエストがストア処理のリクエストの場合、キャッシュ制御部13は、一次キャッシュ上の格納先のデータを更新する。
If each received request is a request for store processing, the
ここで、図2を参照して、キャッシュ制御部13について詳細に説明する。図2は、キャッシュ制御部の概略構成図である。キャッシュ制御部11は、タグ判定部131、RAMアドレス生成回路132、キャッシュRAM133、ヒット判定部134及びメモリアクセス制御部135を有する。本実施例では、ストライドの幅は、1〜7まで用いられるものとし、特にストライド幅が4の場合を例に説明する。また、本実施例では、1つの命令に要素がE1〜E4の4つ含まれる場合で説明する。以下では、1つの命令に含まれるリクエストの数を「要素数」という。すなわち、本実施例では、要素数が4である。また、本実施例では、キャッシュRAM133は、4つのウェイを有する場合で説明する。
Here, the
ここで、本実施例では、一次キャッシュであるキャッシュRAM133に、RAM#0〜#15の16個の 1 read or 1 weite RAMが搭載される。ここで、RAM#0〜#15を構成する1つのRAMからのデータの読み出し幅を8Byteとする。すなわち、ストライド幅が4であるので、1つの命令により1回に読み出し可能なデータ量、すなわち1ウェイあたりの1回の読み出し幅は32Byteである。以下では、RAM#0〜#15を区別しない場合、単に「RAM」という。このRAMが、「記憶素子」の一例にあたる。
Here, in the present embodiment, 16 1 read or 1 weight RAMs of
ここで、キャッシュRAM133に含まれるRAMの数は、使用されるストライド幅に対して次の2つの条件のいずれかを満たすように設定される。第1の条件は、ストライド幅とRAMの数が素であるという条件である。第2の条件は、ストライド幅に要素数を乗算した値がRAMの数とストライド幅の最小公倍数を越えないという条件である。本実施例では、使用するストライド幅は、1〜7までである。この場合、ストライド幅が1〜4及び6の場合、第2の条件を満たす。また、ストライド幅が5又は7の場合、第1の条件を満たす。
Here, the number of RAMs included in the
キャッシュRAM133には、図3に示すように、アドレスが割り当てられる。図3は、実施例におけるキャッシュRAMへのアドレスの割り当てを示す図である。具体的には、本実施例では、1ウェイにおける連続する128Byte分のアドレスが、RAM#0〜#15の内の同じRAMにあたらないように、アドレスが割り当てられる。そして、図3におけるw0,w1,w2,w3はそれぞれ、ウェイを表す。
An address is assigned to the
さらに、ストライド幅の数のメモリを1つのメモリグループとして、そのメモリグループの各RAMにおいて、各ウェイw0〜w3同士のアドレスが連続するように割り当てられる。 Further, the memories having the number of stride widths are assigned as one memory group, and the addresses of the respective ways w0 to w3 are assigned consecutively in each RAM of the memory group.
ここで、図3では、ウェイ毎の128Byte分のアドレスの割り当て方について記載したが、実際には、図3で示す割り当て方で、RAM#0〜#15の記憶領域全てにアドレスの割り当てが繰り返されていく。
Here, FIG. 3 describes how to assign 128 bytes of addresses for each way. Actually, however, the address assignment is repeated for all the storage areas of the
例えば、ウェイw0における00〜07までの8ビットのアドレスがRAM#0に割り当てられる。また、ウェイw0における08〜0Fまでの8ビットのアドレスがRAM#1に割り当てられる。また、ウェイw0における10〜17までの8ビットのアドレスがRAM#2に割り当てられる。また、ウェイw0における18〜1Fまでの8ビットのアドレスがRAM#3に割り当てられる。また、ウェイw0における20〜27までの8ビットのアドレスがRAM#4に割り当てられる。また、ウェイw0における28〜2Fまでの8ビットのアドレスがRAM#5に割り当てられる。また、ウェイw0における30〜37までの8ビットのアドレスがRAM#6に割り当てられる。また、ウェイw0における38〜3Fまでの8ビットのアドレスがRAM#7に割り当てられる。このようなアドレスの割り当てがRAM#15まで繰り返される。
For example, an 8-bit address from 00 to 07 in the way w0 is assigned to the
また、例えば、RAM#0には、ウェイw0における00〜07までの8ビットのアドレス、ウェイw1における20〜27までの8ビットのアドレスが割り当てられる。さらに、RAM#0には、ウェイw2における40〜47までの8ビットのアドレス、ウェイw3における60〜67までの8ビットのアドレスが割り当てられる。
Further, for example, an 8-bit address from 00 to 07 in the way w0 and an 8-bit address from 20 to 27 in the way w1 are allocated to the
図2に戻って説明を続ける。命令制御部11から出力されるリクエスト200には、アドレス、SIMD及びストライドが含まれる。ここで、アドレスは、ロード・ストア処理の対象とするアドレスを示す情報である。要素番号は、何番目のリクエストかを示す情報である。ストライドは、ストライドの間隔を示す情報である。さらに、アドレスは、上位2ビットでウェイを表す。
Returning to FIG. 2, the description will be continued. The
タグ判定部131は、リクエスト200のアドレスの情報を取得する。そして、タグ判定部131は、取得したアドレスに対応するキャッシュRAM133内のキャッシュセットでキャッシュタグがヒットするか否かを判定する。キャッシュタグがヒットしない場合、タグ判定部131は、キャッシュミスと判定する。これに対して、キャッシュタグがヒットした場合、タグ判定部131は、ヒットしたウェイの情報をRAMアドレス生成回路132へ出力する。
The
RAMアドレス生成回路132は、リクエスト200からアドレス、要素番号及びストライドを取得する。さらに、RAMアドレス生成回路132は、ウェイの情報の入力をタグ判定部131から受ける。
The RAM
RAMアドレス生成回路132は、アドレス、要素番号、ストライド及びウェイの情報からストライドアクセスの各アドレスを取得する。この場合、RAMアドレス生成回路132は、要素E1の処理が対象とするアドレスを、リクエスト200に格納されていたアドレスとする。また、RAMアドレス生成回路132は、要素E2の処理が対象とするアドレスを、ストライドに8Byteを乗算した値をリクエスト200に格納されていたアドレスに加えたアドレスとする。また、RAMアドレス生成回路132は、要素E3の処理が対象とするアドレスを、ストライドに8Byteを乗算した値に2を乗算した値をリクエスト200に格納されていたアドレスに加えたアドレスとする。
The RAM
ここで、キャッシュRAM133は、RAM#0〜#15という16個のRAMを有しする。そして、ストライド幅とRAMの数が素である場合には、1回の処理で同じRAMに複数回アクセスすることはない。また、ストライド幅に要素数を乗算した値がRAMの数とストライド幅の最小公倍数を越えない場合は、1回の処理で同じRAMに複数回アクセスすることはない。以下では、1回の処理で同じRAMに複数回のアクセスが発生することを「アドレスの干渉」という。
Here, the
図4は、アドレスの干渉が発生しないことを説明するための図である。図4のグラフ201〜204は、それぞれ、ストライド幅を変えた場合の処理に用いるアドレスの位置を示す。円を16分割した各位置でRAM#0〜#15を表す。さらに、RAM#0〜15を示す位置に記載された数字がそれぞれ要素E1〜E4で用いられるアドレスが、対応するRAM上に存在することを示す。また、ここでは、要素E1のアドレスは、RAM#0上に存在する場合で示す。
FIG. 4 is a diagram for explaining that no address interference occurs.
図4に示すように、グラフ201〜207に示すように、ストライド幅が1〜7のいずれの場合でも、要素E1〜E4に対応するアドレスが干渉しないことが分かる。すなわち、本実施例に係るキャッシュRAM133が生成した各要素E1〜E4に対応するアドレスは、干渉しないことが分かる。
As shown in FIG. 4, as shown in
さらに、図2に戻って説明を続ける。RAMアドレス生成回路132は、リクエストの上位から数えて5ビット目及び6ビット目の値を取得する。そして、RAMアドレス生成回路132は、取得した値とウェイの番号からそのアドレスを有するRAMをRAM#0〜#15から特定する。
Further, returning to FIG. The RAM
例えば、RAM#0には、以下のアドレスが割り当てられる。以下では、リクエストの上位から数えてxビットからyビットの範囲を[y:x]で示す。また、ある範囲の各ビットの値を鉤括弧内の数列として「001」のように表す。RAM#0には、要素n(n=E1,E2,E3,E4)のアドレスの[6:3]が「0000」であり、且つウェイw0のアドレスが割り当てられる。また、RAM#0には、要素nのアドレスの[6:3]が「0100」であり、且つウェイw1のアドレスが割り当てられる。また、RAM#0には、要素nのアドレスの[6:3]が「1000」であり、且つウェイw2のアドレスが割り当てられる。また、RAM#0には、要素nのアドレスの[6:3]が「1100」であり、且つウェイw3のアドレスが割り当てられる。そして、要素nのアドレスの[6:3]の値は16通りの組み合わせがあり、且つウェイ毎に要素nのアドレスの[6:3]の値が各RAM#0〜#15のそれぞれに対して重ならないように割り当てられる。
For example, the following addresses are assigned to
したがって、RAMアドレス生成回路132は、要素nのアドレスの[6:3]の値とウェイの番号から使用するRAMを特定することができる。
Therefore, the RAM
ここで、図5を参照して、RAMアドレス生成回路132による読み出し時のアドレス生成について詳細に説明する。図5は、RAMアドレス生成回路の読み出し機能のブロック図である。
Here, with reference to FIG. 5, the address generation at the time of reading by the RAM
RAMアドレス生成回路132は、加算器301〜303及びセレクタ311〜314を有する。ただし、図5では、セレクタを4つしか記載していないが実際には、RAMアドレス生成回路132は、RAM#0〜#15の数分のセレクタを有する。
The RAM
加算器301〜303は、要素E1のリクエストの[13:3]にあたるアドレスの入力を受ける。さらに、加算器301〜303は、要素E1のリクエストの[2:0]にあたるストライド幅の入力を受ける。ここで、ストライド幅は、要素w1のリクエストの[2:0]の3ビットを用いて1〜7のいずれであるかが示される。
The
加算器301は、入力されたストライド幅に8を乗算した値を要素E1のリクエストの[13:3]に加算する。この加算結果が、要素E2の[13:3]で表されるアドレスにあたる。そして、加算器301は、加算結果をセレクタ311〜314へ出力する。
The
加算器302は、入力されたストライド幅に16を乗算した値を要素E1のリクエストの[13:3]に加算する。この加算結果が、要素E3の[13:3]で表されるアドレスにあたる。そして、加算器302は、加算結果をセレクタ311〜314へ出力する。
The
加算器303は、入力されたストライド幅に32を乗算した値を要素E1のリクエストの[13:3]に加算する。この加算結果が、要素E4の[13:3]で表されるアドレスにあたる。そして、加算器303は、加算結果をセレクタ311〜314へ出力する。
The
具体的には、加算器301〜303は、ストライド幅に合わせて、図6に示す値を各要素に加算する。図6は、要素毎の加算器による加算量を示す図である。
Specifically, the
セレクタ311は、RAM#0の選択を決定するセレクタである。セレクタ312は、RAM#1の選択を決定するセレクタである。セレクタ313は、RAM#2の選択を決定するセレクタである。セレクタ314は、RAM#15の選択を決定するセレクタである。
The
セレクタ311〜314は、要素E1のリクエストの[13:3]にあたるアドレスの入力を受ける。また、セレクタ311〜314は、要素E2〜E4のアドレスの入力を加算器301〜303から受ける。
The
ここで、セレクタ311を例にセレクタの動作を説明する。図7は、読み出しに対応するセレクタの詳細を表す回路図である。セレクタ311は、RAM#0読出用選択条件回路321〜324、AND回路331〜334及びOR回路340を有する。
Here, the operation of the selector will be described using the
RAM#0読出用選択条件回路321〜324は、それぞれ、要素E1〜E4の[13:3]にあたるアドレスの入力を受ける。また、RAM#0読出用選択条件回路321〜324は、ウェイIDの入力を受ける。
The
RAM#0読出用選択条件回路321〜324は、図8に示す回路構成を有する。すなわち、RAM#0読出用選択条件回路321〜324は、AND回路351〜354及びOR回路355を有する。図8は、RAM#0読出用選択条件回路の回路図である。
The
AND回路351は、入力されたアドレス内の[6:3]の各ビットの値を反転した値の入力を受ける。さらに、AND回路351は、ウェイIDを表す[1:0]の各ビットを反転させた値の入力を受ける。そして、AND回路351は、入力値の論理積を求め、結果をOR回路355へ出力する。
The AND
AND回路352は、入力されたアドレス内の[6:3]の各ビットのうち3番目及び4番目のビットを反転した値の入力を受ける。さらに、AND回路352は、ウェイIDを表す[1:0]の各ビットの1番目のビットを反転させた値の入力を受ける。そして、AND回路352は、入力値の論理積を求め、結果をOR回路355へ出力する。
The AND
AND回路353は、入力されたアドレス内の[6:3]の各ビットのうち3番目、4番目及び5番目のビットを反転した値の入力を受ける。さらに、AND回路353は、ウェイIDを表す[1:0]の0番目のビットを反転させた値の入力を受ける。そして、AND回路353は、入力値の論理積を求め、結果をOR回路355へ出力する。
The AND
AND回路354は、入力されたアドレス内の[6:3]の各ビットのうち3番目、4番目及び6番目のビットを反転した値の入力を受ける。さらに、AND回路354は、ウェイIDを表す[1:0]の各ビットの値の入力を受ける。そして、AND回路354は、入力値の論理積を求め、結果をOR回路355へ出力する。
The AND
OR回路355は、AND回路351〜354から入力された値の論理和を求め、結果を出力する。
The OR
ここで、ウェイIDを表す[1:0]及びアドレス内の[6:3]の各ビットの組み合わせに対して、図9に示す使用RAMのようにRAM#0〜#15が対応する。図9は、ウェイとアドレスによる読み出し時のRAM選択真理値表を示す図である。すなわち、RAM#0読出用選択条件回路321〜324は、この読み出し時のRAM選択真理値表の中でRAM#0に対応するウェイID及びアドレスの組み合わせが入力された場合に、1を出力する。これは、他のRAM#1〜#15についても同様である。
Here,
例えば、RAM#0の選択について説明する。読み出し時にRAM#0が選択される場合を図9から抜き出すと、図10が完成する。図10は、読み出し時にRAM#0が選択される条件を表す図である。ここで、図10に示された各場合についてAND回路353〜354の動作を確認する。ウェイIDを表す[1:0]が「00」でアドレス内の[6:3]が「0000」の場合、AND回路351は1を出力する。また、ウェイIDを表す[1:0]が「01」でアドレス内の[6:3]が「1100」の場合、AND回路352から1が出力される。ウェイIDを表す[1:0]が「10」でアドレス内の[6:3]が「1000」の場合、AND回路353から1が出力される。ウェイIDを表す[1:0]が「11」でアドレス内の[6:3]が「0100」の場合、AND回路354から1が出力される。すなわち、図10のいずれかの組み合わせの入力がRAM#0読出用選択条件回路321〜324になされれば、入力を受けたRAM#0読出用選択条件回路321〜324は、1を出力する。すなわち、RAM#0の選択条件を満たす場合、RAM#0読出用選択条件回路321〜324は1を出力し、RAM#0の選択条件を満たさない場合、RAM#0読出用選択条件回路321〜324は0を出力する。
For example, selection of
図7に戻って説明を続ける。AND回路331〜334は、RAM#0読出用選択条件回路321〜324からの出力を受ける。またAND回路331〜334は、それぞれ、要素E1〜E4の[13:5]で表されるアドレスの入力を受ける。そして、AND回路331〜344は、それぞれ、入力値の論理積を求めて、OR回路340へ出力する。具体的には、AND回路331〜344のうち、RAM#0読出用選択条件回路321〜324から1の入力を受けた回路が受信したアドレスを出力し、0の入力を受けた回路はすべて0の値を出力する。
Returning to FIG. 7, the description will be continued. AND
OR回路340は、AND回路331〜334から入力された値の論理和を求め、結果を出力する。すなわち、RAM#0読出用選択条件回路321〜324のいずれかから1が出力された場合、OR回路340は、それに対応する要素E1〜E4のいずれかの要素をRAM#0の読出アドレスとして出力する。
The OR
図5に戻って説明を続ける。セレクタ311は、OR回路340からの出力であるアドレスをヒット判定部134へ出力する。同様に、セレクタ312は、ウェイIDを表す[1:0]及びアドレス内の[6:3]の各ビットの組み合わせがRAM#1の選択条件に一致した場合、ヒット判定部134へアドレスを出力する。セレクタ313は、ウェイIDを表す[1:0]及びアドレス内の[6:3]の各ビットの組み合わせがRAM#2の選択条件に一致した場合、ヒット判定部134へアドレスを出力する。セレクタ314は、ウェイIDを表す[1:0]及びアドレス内の[6:3]の各ビットの組み合わせがRAM#15の選択条件に一致した場合、ヒット判定部134へアドレスを出力する。
Returning to FIG. The
ヒット判定部134は、各セレクタ311〜314から入力されたアドレスを用いて、対応するRAM#0〜#15におけるキャッシュヒットの判定を行う。
The
次に、図11を参照して、RAMアドレス生成回路132による書き込み時のアドレス生成について詳細に説明する。図11は、RAMアドレス生成回路の書き込み機能のブロック図である。
Next, referring to FIG. 11, address generation at the time of writing by the RAM
RAMアドレス生成回路132は、書き込み時用のセレクタ361〜364を有する。セレクタ361〜364は、それぞれ、RAM#0〜#15に対応する。
The RAM
セレクタ361〜364は、リクエストの[13:5]にあたるアドレスの入力を受ける。また、セレクタ361〜364は、リクエストの[1:0]にあたるウェイIDの入力を受ける。
The
ウェイIDを表す[1:0]及びアドレス内の[6:5]の各ビットの組み合わせは、図12の使用RAMとして表されるRAM#0〜#15に対応する。図12は、ウェイとアドレスによる書き込み時のRAM選択真理値表を示す図である。
The combination of [1: 0] representing the way ID and [6: 5] in the address corresponds to the
セレクタ361〜364は、ウェイIDを表す[1:0]及びアドレス内の[6:5]の各ビットの組み合わせに応じて、図12の対応する使用RAMを書き込みに使用するRAMとして選択する。そして、セレクタ361〜364は、選択したRAMのアドレスをヒット判定部134へ出力する。
The
ここで、図13を参照して、セレクタ361を例にセレクタ361〜364について詳細に説明する。図13は、書き込みに対応するセレクタの詳細を表す回路図である。セレクタ361は、RAM#0書込用選択条件回路371及びAND回路372を有する。
Here, with reference to FIG. 13, the
例えば、要素E1を処理する場合、RAM#0書込用選択条件回路371は、要素E1の[13:5]で表されるアドレス内の[6:5]に対応するビットの入力を受ける。また、RAM#0書込用選択条件回路371は、ウェイIDを表す[1:0]の入力を受ける。
For example, when the element E1 is processed, the
そして、RAM#0書込用選択条件回路371は、ウェイIDを表す[1:0]及びアドレス内の[6:5]の組み合わせに対応する図12における使用RAMがRAM#0に一致する場合、RAM#0の選択を表す1をAND回路372へ出力する。これに対して、ウェイIDを表す[1:0]及びアドレス内の[6:5]の組み合わせに対応する図12における使用RAMがRAM#0に一致しない場合、RAM#0書込用選択条件回路371は、0をAND回路372へ出力する。
Then, the
さらに、具体的にRAM#0書込用選択条件回路371の構成を説明する。図14は、RAM#0書込用選択条件回路の回路図である。RAM#0書込用選択条件回路371は、AND回路381〜384及びOR回路385を有する。
Further, the configuration of the
AND回路381は、アドレス内の[6:5]の各ビットを反転させた値の入力を受ける。また、AND回路381は、ウェイIDを表す[1:0]の各ビットを反転させた値の入力を受ける。そして、AND回路381は、入力された値の論理積を求め、結果をOR回路385へ出力する。
The AND
AND回路382は、入力されたアドレス内の[6:5]の各ビットの値の入力を受ける。さらに、AND回路382は、ウェイIDを表す[1:0]の各ビットの1番目のビットを反転させた値の入力を受ける。そして、AND回路382は、入力値の論理積を求め、結果をOR回路385へ出力する。
The AND
AND回路383は、入力されたアドレス内の[6:5]の各ビットのうち5番目のビットを反転した値の入力を受ける。さらに、AND回路383は、ウェイIDを表す[1:0]の0番目のビットを反転させた値の入力を受ける。そして、AND回路383は、入力値の論理積を求め、結果をOR回路385へ出力する。
The AND
AND回路384は、入力されたアドレス内の[6:5]の各ビットのうち6番目のビットを反転した値の入力を受ける。さらに、AND回路384は、ウェイIDを表す[1:0]の各ビットの値の入力を受ける。そして、AND回路384は、入力値の論理積を求め、結果をOR回路385へ出力する。
The AND
OR回路385は、AND回路381〜384から入力された値の論理和を求め、結果を出力する。
The OR
例えば、RAM#0の選択について説明する。書き込み時にRAM#0が選択される場合を図12から抜き出すと、図15のようになる。図15は、書き込み時にRAM#0が選択される条件を表す図である。ここで、図15に示された各場合についてAND回路383〜384の動作を確認する。ウェイIDを表す[1:0]が「00」でアドレス内の[6:5]が「00」の場合、AND回路381は1を出力する。また、ウェイIDを表す[1:0]が「01」でアドレス内の[6:5]が「11」の場合、AND回路382から1が出力される。ウェイIDを表す[1:0]が「10」でアドレス内の[6:5]が「10」の場合、AND回路383から1が出力される。ウェイIDを表す[1:0]が「11」でアドレス内の[6:5]が「01」の場合、AND回路384から1が出力される。すなわち、図15のいずれかの組み合わせの入力がRAM#0書込用選択条件回路371になされれば、入力を受けたRAM#0書込用選択条件回路371は、1を出力する。すなわち、RAM#0の選択条件を満たす場合、RAM#0書込用選択条件回路371は1を出力し、RAM#0の選択条件を満たさない場合、RAM#0書込用選択条件回路371は0を出力する。
For example, selection of
図13に戻って説明を続ける。AND回路372は、RAM#0書込用選択条件回路371からRAM#0の選択結果を表す値の入力を受ける。また、AND回路372は、要素E1の[13:5]で表されるアドレスの入力を受ける。
Returning to FIG. AND
そして、RAM#0書込用選択条件回路371からの入力値が1の場合、AND回路372は、要素E1の[13:5]で表されるアドレスを出力する。これに対して、RAM#0書込用選択条件回路371からの入力値が0の場合、AND回路372は、0を出力する。
When the input value from the
図11に戻って説明を続ける。セレクタ361は、AND回路372からの出力をヒット判定部134へ出力する。同様に、セレクタ362〜364は、書き込み先のRAMとして対応するRAM#1〜#15が選択された場合、アドレスをヒット判定部134へ出力する。
Returning to FIG. 11, the description will be continued. The
ヒット判定部134は各セレクタ361〜364から入力されたアドレスを用いて、対応するRAM#0〜#15におけるキャッシュヒットの判定を行う。
The
さらに、図2に戻って説明を続ける。ヒット判定部134は、RAMアドレス生成回路132からロード・ストア処理を行う対象とするRAMの情報及びアドレスの入力を受ける。そして、ヒット判定部134は、入力されたアドレスを用いて指定されたRAMに対するキャッシュヒットの判定を行う。キャッシュヒットした場合、ヒット判定部134は、キャッシュヒットしたデータを取得し、演算制御部12へ出力する。キャッシュミスが発生した場合、ヒット判定部134は、データ転送要求をメモリアクセス制御部135へ送信する。
Further, returning to FIG. The
メモリアクセス制御部135は、キャッシュミスが発生した場合、データの転送要求をヒット判定回路134から受ける。そして、メモリアクセス制御部135は、データの転送要求の送信元でヒット判定が行われたリクエストについてのデータ転送要求を二次キャッシュ制御部14へ送信する。
When a cache miss occurs, the memory
その後、メモリアクセス制御部135は、二次キャッシュ制御部14からデータ転送要求に対する応答データを受信する。そして、メモリアクセス制御部135は、受信した応答データをキャッシュRAM133に格納する。その後、メモリアクセス制御部135は、ヒット判定部134の内のデータ転送要求の送信元に対して応答データの格納を通知する。
Thereafter, the memory
図1に戻って説明を続ける。二次キャッシュ制御部14は、二次キャッシュを有する。二次キャッシュ制御部14は、データ転送要求をメモリアクセス制御部138から受信する。そして、二次キャッシュ制御部14は、自己が有する二次キャッシュにデータ転送要求で指定されたデータが格納されているか否かを判定する。格納されている場合、二次キャッシュ制御部14は、データ転送要求で指定されたデータを二次キャッシュから取得し、取得したデータを応答データとしてメモリアクセス制御部135へ送信する。
Returning to FIG. 1, the description will be continued. The secondary
これに対して、データ転送要求で指定されたデータが二次キャッシュに格納されていない場合、二次キャッシュ制御部14は、データ転送要求をメモリ制御部15に送信する。その後、二次キャッシュ制御部14は、応答データをメモリ制御部15から受信する。そして、二次キャッシュ制御部14は、受信した応答データをメモリアクセス制御部135へ送信する。
On the other hand, when the data specified by the data transfer request is not stored in the secondary cache, the secondary
演算制御部12は、演算処理の実行要求などを命令制御部11から受信する。また、演算処理12は、データをキャッシュ制御部13から受信する。そして、演算制御部12は、キャッシュ制御部13から受信したデータを用いて演算処理などを実行する。ただし、実行する処理にキャッシュデータを用いない場合など、演算制御部12は、キャッシュ制御部13からのデータの受信を行わずに、処理を実行する場合もある。
The
次に、図16を参照して、本実施例に係る演算処理装置によるロード・ストア処理の流れについて説明する。図16は、実施例に係る演算処理装置によるロード・ストア処理のフローチャートである。 Next, with reference to FIG. 16, the flow of load / store processing by the arithmetic processing unit according to the present embodiment will be described. FIG. 16 is a flowchart of the load / store process performed by the arithmetic processing apparatus according to the embodiment.
命令制御部11は、命令からリクエストを取得し、取得したリクエストをキャッシュ制御部13へ発行する(ステップS1)。
The
キャッシュ制御部13のタグ判定部131は、取得したリクエストからタグを取得して、取得したタグがキャッシュRAM133においてヒットするか否かを判定する(ステップS2)。タグがヒットしない場合(ステップS2:否定)、キャッシュ制御部13は、ステップS8へ進む。
The
これに対して、タグがヒットした場合(ステップS2:肯定)、RAMアドレス生成回路132は、読み出し処理か否かを判定する(ステップS3)。
On the other hand, when the tag hits (step S2: affirmative), the RAM
読み出し処理の場合(ステップS3:肯定)、RAMアドレス生成回路132は、要素E1のアドレスから各要素E2〜E4のアドレスを生成する(ステップS4)。
In the case of the reading process (step S3: Yes), the RAM
そして、RAMアドレス生成回路132は、各ウェイw0〜w3の連続するアドレスが全てのメモリに亘って割り振られたキャッシュRAM133の各RAM#0〜15から、ストライド幅に合わせて読み出し元となるRAMを選択する(ステップS5)。
Then, the RAM
これに対して、読み出し処理でなく書き込み処理の場合(ステップS3:否定)、RAMアドレス生成回路132は、次の処理を行う。すなわち、RAMアドレス生成回路132は、各ウェイw0〜w3の連続するアドレスが全てのメモリに亘って割り振られたキャッシュRAM133の各RAM#0〜15から、ストライド幅に合わせて書き込み先となるRAMを選択する(ステップS6)。
On the other hand, when the write process is not the read process (No at Step S3), the RAM
次に、RAMアドレス生成回路132は、選択したRAM及びそのRAM上のアドレスをヒット判定部134へ出力する。ヒット判定部134は、RAMアドレス生成回路132により選択されたRAM上の指定されたアドレスにおいてキャッシュヒットするか否かを判定する(ステップS7)。キャッシュミスの場合(ステップS7:否定)、メモリアクセス制御部135は、データ転送要求を二次キャッシュ制御部14へ送信する。その後、二次キャッシュ制御部14は、データ転送要求に対する応答データを、キャッシュRAM133へデータ転送する(ステップS8)。その後、キャッシュ制御部13は、ステップS2に戻る。
Next, the RAM
これに対して、キャッシュヒットの場合(ステップS7:肯定)、ヒット判定部134は、キャッシュヒットしたアドレスに対してロード・ストア処理を実行する(ステップS9)。
On the other hand, in the case of a cache hit (step S7: affirmative), the
以上に説明したように、本実施例に係る演算処理装置におけるキャッシュRAMは、ストライド幅とRAMの数とが互いに素又はストライド幅と要素数との乗算結果がRAMの数とストライド幅との最小公倍数よりも小さくなる。さらに、ウェイ毎の連続するアドレスが全てのRAMに亘って配置されるように割り当てられる。これにより、1つの命令でストライドアクセスを行った場合にも、同じメモリに対する複数回のアクセスを回避でき、スループットを向上させることができる。 As described above, in the cache RAM in the arithmetic processing unit according to the present embodiment, the stride width and the number of RAMs are relatively prime or the multiplication result of the stride width and the number of elements is the minimum of the number of RAMs and the stride width. It becomes smaller than the common multiple. Further, consecutive addresses for each way are assigned so as to be arranged over all the RAMs. As a result, even when stride access is performed with one instruction, multiple accesses to the same memory can be avoided and throughput can be improved.
1 CPU
2 メモリ
11 命令制御部
12 演算制御部
13 キャッシュ制御部
14 二次キャッシュ制御部
15 メモリ制御部
131 タグ判定部
132 RAMアドレス生成回路
133 キャッシュRAM
134 ヒット判定部
135 メモリアクセス制御部
301〜302 加算器
311〜314 セレクタ
321〜324 RAM#0読出用選択条件回路
331〜334 AND回路
340 OR回路
351〜354 AND回路
355 OR回路
361〜364 セレクタ
371 RAM#0書込用選択条件回路
372 AND回路
381〜384 AND回路
385 OR回路
1 CPU
2
134
Claims (5)
同じウェイに含まれる所定のアドレス間隔のデータに対する処理をそれぞれ指示する複数のキャッシュアクセス要求を含む演算処理命令を取得し、取得した複数の前記キャッシュアクセス要求を送信する命令制御部と、
前記命令制御部から送信された複数の前記キャッシュアクセス要求をそれぞれ受信し、各前記キャッシュアクセス要求で指定された前記ウェイに含まれる前記所定のアドレス間隔のデータに対する複数のアクセス処理を実行するキャッシュ制御部と、
前記キャッシュ制御部による前記アクセス処理の処理結果を基に演算処理を行う演算制御部と
を備えたことを特徴とする演算処理装置。 A cache memory having a plurality of storage elements for each way, and assigned consecutive addresses to the plurality of storage elements belonging to each way;
An instruction control unit that acquires an arithmetic processing instruction including a plurality of cache access requests that respectively instruct processing on data at a predetermined address interval included in the same way, and transmits the acquired plurality of cache access requests;
Cache control that receives each of the plurality of cache access requests transmitted from the command control unit and executes a plurality of access processes for the data of the predetermined address interval included in the way specified by each cache access request And
An arithmetic processing unit comprising: an arithmetic control unit that performs arithmetic processing based on a processing result of the access processing by the cache control unit.
同じ前記ウェイに含まれる所定のアドレス間隔のデータに対する処理をそれぞれ指示する複数のキャッシュアクセス要求を含む演算処理命令を取得し、
取得した各前記キャッシュアクセス要求で指定された前記ウェイに含まれる前記所定のアドレス間隔のデータに対する複数のアクセス処理を実行し、
前記アクセス処理の処理結果を基に演算処理を行う
ことを特徴とする演算処理装置の制御方法。 A method for controlling an arithmetic processing unit having a plurality of storage elements for each way and having a cache memory in which consecutive addresses are assigned to the plurality of storage elements belonging to each way,
Obtaining an arithmetic processing instruction including a plurality of cache access requests each instructing processing for data of a predetermined address interval included in the same way;
Executing a plurality of access processes on the data of the predetermined address interval included in the way designated by each acquired cache access request;
An arithmetic processing unit that performs arithmetic processing based on the processing result of the access processing.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014091683A JP6287545B2 (en) | 2014-04-25 | 2014-04-25 | Arithmetic processing device and control method of arithmetic processing device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014091683A JP6287545B2 (en) | 2014-04-25 | 2014-04-25 | Arithmetic processing device and control method of arithmetic processing device |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2015210659A true JP2015210659A (en) | 2015-11-24 |
JP6287545B2 JP6287545B2 (en) | 2018-03-07 |
Family
ID=54612797
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014091683A Active JP6287545B2 (en) | 2014-04-25 | 2014-04-25 | Arithmetic processing device and control method of arithmetic processing device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6287545B2 (en) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6591345B1 (en) * | 2000-11-28 | 2003-07-08 | Hewlett-Packard Development Company, L.P. | Method for ensuring maximum bandwidth on accesses to strided vectors in a bank-interleaved cache |
JP2009043282A (en) * | 2008-10-09 | 2009-02-26 | Oki Electric Ind Co Ltd | Cache memory, cache memory device and allocating method |
-
2014
- 2014-04-25 JP JP2014091683A patent/JP6287545B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6591345B1 (en) * | 2000-11-28 | 2003-07-08 | Hewlett-Packard Development Company, L.P. | Method for ensuring maximum bandwidth on accesses to strided vectors in a bank-interleaved cache |
JP2009043282A (en) * | 2008-10-09 | 2009-02-26 | Oki Electric Ind Co Ltd | Cache memory, cache memory device and allocating method |
Also Published As
Publication number | Publication date |
---|---|
JP6287545B2 (en) | 2018-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102042859B1 (en) | Semiconductor device and operating method thereof | |
JP5575997B1 (en) | Semiconductor device and entry address writing / reading method for semiconductor device | |
JP4036206B2 (en) | Set associative cache system and cache memory control method | |
US8868835B2 (en) | Cache control apparatus, and cache control method | |
JP2015149038A (en) | ARITHMETIC CONTROL DEVICE, ARITHMETIC CONTROL METHOD, PROGRAM, AND OpenCL DEVICE | |
US20140351512A1 (en) | Capacity expansion method and device | |
JP6493088B2 (en) | Arithmetic processing device and control method of arithmetic processing device | |
JP2020042479A (en) | Reconfigurable processor | |
JP2014186397A (en) | Cache memory device, information processor and cache memory control method | |
JPWO2016024508A1 (en) | Multiprocessor device | |
US9164903B2 (en) | Memory manager | |
JP2020061133A (en) | Multiple processing architecture using memory processor and method of operating the same | |
JP2015049844A (en) | Store merge processing device, store merge processing system, store merge processing method, and store merge processing program | |
JP6287545B2 (en) | Arithmetic processing device and control method of arithmetic processing device | |
US11475287B2 (en) | Managing control data | |
US20150046657A1 (en) | System and method for managing correspondence between a cache memory and a main memory | |
US9798550B2 (en) | Memory access for a vector processor | |
CN111045979A (en) | Multi-processing architecture based on memory processor and method of operation thereof | |
EP3271826B1 (en) | Interleaved access of memory | |
US10698878B2 (en) | Graph update flush to a shared memory | |
JP2021060748A (en) | Arithmetic processing device and arithmetic processing method | |
JP7144670B2 (en) | Arithmetic processing device and method of controlling arithmetic processing device | |
JP6694141B2 (en) | Array control program, array control method, array control device | |
CN104932990B (en) | The replacement method and device of data block in a kind of cache memory | |
JP6580288B2 (en) | Information processing apparatus, information processing method, and information processing program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170110 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20170831 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170912 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20171110 |
|
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: 20180109 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180122 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6287545 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |