JP6260429B2 - シフト回路及び演算装置 - Google Patents

シフト回路及び演算装置 Download PDF

Info

Publication number
JP6260429B2
JP6260429B2 JP2014088260A JP2014088260A JP6260429B2 JP 6260429 B2 JP6260429 B2 JP 6260429B2 JP 2014088260 A JP2014088260 A JP 2014088260A JP 2014088260 A JP2014088260 A JP 2014088260A JP 6260429 B2 JP6260429 B2 JP 6260429B2
Authority
JP
Japan
Prior art keywords
shift
bit
selector
data
output
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.)
Expired - Fee Related
Application number
JP2014088260A
Other languages
English (en)
Other versions
JP2015207203A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014088260A priority Critical patent/JP6260429B2/ja
Publication of JP2015207203A publication Critical patent/JP2015207203A/ja
Application granted granted Critical
Publication of JP6260429B2 publication Critical patent/JP6260429B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)

Description

本発明は、シフト回路及び演算装置に関する。
演算装置が処理するデータのデータ量が増加すると共に、演算装置が処理するデータのデータフォーマットの種類が多様化している。種々のフォーマットのデータを高速で処理にするために、データを形成するビット列に含まれる複数のビット群をビット群単位で並び替えると共に、複数のビット群をビット単位で双方向にシフトさせるシフト回路を演算装置に搭載することが知られている。
一例では、シフト回路は、第1レジスタと、第2レジスタと、複数のバイトシフトマルチプレクサと、複数のビットシフトマルチプレクサとを有する。第1レジスタはシフトさせる入力データの上位側ビット列を記憶し、第2レジスタはシフトさせる入力データの下位側ビット列を記憶する。各バイトシフトマルチプレクサは、出力ビット位置に対応して設けられ、第1レジスタ及び第2レジスタから並列に入力されるビット群の指定された何れか1つを選択することにより、バイトシフトを行う。各ビットシフトマルチプレクサは、バイトシフトマルチプレクサに対応して設けられ、バイトシフトされたビット群を更にビットシフトする。
特開平8−212053号公報 特開平10−55262号公報 特開2008−108220号公報 特開平8−76972号公報
しかしながら、上記のシフト回路では、各ビットシフトマルチプレクサは、2個のバイトシフトマルチプレクサから出力された2つのビット群を2方向にビットシフトする。したがって、上記のシフト回路は、回路規模が大きいという課題を有する。
実施形態によれば、ビット列に含まれる複数のビット群をビット群毎に並び替えると共にシフトするときに、シフトを行う回路部分を簡素化し、回路規模の小さいシフト回路を提供することを目的とする。
1つの態様のシフト回路は、所定ビット数の入力ビット列に含まれる複数の入力ビット群を、ビット群単位で並び替えて、所定ビット数の出力ビット列に含まれる複数の出力ビット群として出力するシフト回路である。シフト回路は、複数の出力ビット群の出力ビット位置に対応して設けられた複数のシフト部を有する。複数のシフト部のそれぞれは、第1セレクタと、第2セレクタと、を有する。第1セレクタは、入力ビット列から、シフト部の出力ビット位置から出力する対象入力ビット群及び対象入力ビット群に隣接する隣接ビット群を含むサブビット列を、サブビット列の一方の端がシフト部の出力ビット位置の一方の端に一致するように選択する。第2セレクタは、第1セレクタが選択したサブビット列に含まれる対象入力ビット群を、対象入力ビット群の一方の端がシフト部の出力ビット位置の一方の端に一致するように、第1方向に1ビット単位でシフトする。
実施形態では、ビット列に含まれる複数のビット群をビット群毎に並び替えると共にシフトするときに、シフトを行う回路部分を簡素化し、回路規模の小さいシフト回路を提供することができる。
関連するシフト回路の一例の回路ブロック図である。 図1に示すシフト回路の第5シフト回路の回路ブロック図である。 (a)は図2に示す第5シフト回路の第1左シフトセレクタの内部回路ブロック図であり、(b)は(a)に示す第1左シフトセレクタの入力データの分割状態を示す図であり、(c)は(a)に示す第1左シフトセレクタの第1左デジットセレクタの内部ブロック図である。 図2に示す第5シフト回路の第2左シフトセレクタの内部回路ブロック図である。 (a)は図2に示す第5シフト回路の左シフト部の処理の一例を示す図であり、(b)は図2に示す第5シフト回路の左シフト部の処理の他の例を示す図である。 (a)は図2に示す第5シフト回路の右シフト部の処理の一例を示す図であり、(b)は図2に示す第5シフト回路の右シフト部の処理の他の例を示す図である。 図2に示す第5シフト回路の処理フローを示すフローチャートである。 図1に示すシフト回路によるシフトの一例を示す図である。 第1実施形態に係るシフト回路の回路ブロック図である。 図9に示すシフト回路の第5シフト回路の回路ブロック図である。 (a)は図10に示す第5シフト回路の第1シフトセレクタの内部回路ブロック図であり、(b)は(a)に示す第1シフトセレクタの入力データの分割状態を示す図であり、(c)は(a)に示す第1シフトセレクタの第1デジットセレクタの内部ブロック図である。 図10に示す第5シフト回路の第2シフトセレクタの内部回路ブロック図である。 図10に示す第5シフト回路のシフト制御部による第2シフトセレクタのビットシフトを示す図であり、(a)は左シフトを示す図であり、(b)は右シフトを示す図である。 図10に示す第5シフト回路の処理フローを示すフローチャートである。 左シフトと右シフトでのデジットの選択とビットシフトの違いを説明する図である。 (a)は図10に示す第5シフト回路のシフト部による左シフト処理の一例を示す図であり、(b)は図10に示す第5シフト回路のシフト部による左シフト処理の他の例を示す図である。 (a)は図10に示す第5シフト回路のシフト部による右シフト処理の一例を示す図であり、(b)は図10に示す第5シフト回路のシフト部による右シフト処理の他の例を示す図である。 第2実施形態に係るシフト回路の回路ブロック図である。 図18に示すシフト回路の第5シフト回路の回路ブロック図である。 (a)は図19に示す第5シフト回路の第1シフトセレクタの内部回路ブロック図であり、(b)は(a)に示す第1シフトセレクタの第1デジットセレクタの内部ブロック図である。 図19示す第5シフト回路のパリティ選択回路の内部回路ブロック図である。 図9に示すシフト回路を搭載した演算装置の一例の内部回路ブロック図である。
以下図面を参照して、シフト回路及び演算装置について説明する。但し、本発明の技術的範囲はそれらの実施の形態に限定されず、特許請求の範囲に記載された発明との均等物に及ぶ点に留意されたい。
実施形態に係るシフト回路について説明する前に、実施形態に係るシフト回路の技術的特徴をより明確にするために、実施形態に係るシフト回路に関連するシフト回路について説明する。関連するシフト回路は、64ビットのビット列である入力データD[63:0]に含まれるそれぞれが1バイトの8つのビット群をビット群毎に並び替えると共に、上位ビット方向又は下位ビット方向にシフトするものである。例えば、関連するシフト回路は、入力データD[63:0]に含まれる1バイトのビット群D[48:41]を下位ビット方向に17ビットシフトして、出力データR[31:24]として出力する。また、関連するシフト回路は、64ビットのビット列である入力データD[63:0]に含まれる1バイトのビット群D[12:5]を上位ビット方向に43ビットシフトして、出力データR[55:48]として出力する。関連するシフト回路は、1バイトのビット群のそれぞれをビット群毎に並び替えると同時にビット群を上位ビット方向又は下位ビット方向にシフトする8つのシフト部により形成される。
図1は、関連するシフト回路の回路ブロック図である。
シフト回路900は、第1シフト回路901〜第8シフト回路908を有する。第1〜第8シフト回路のそれぞれは、64ビットの入力データD[63:0]が入力され、入力データD[63:0]の何れか1バイトの一連のビット群を上位ビット方向又は下位ビット方向にシフトしたビット群を、出力データとしてそれぞれ出力する。本明細書では、上位ビット方向へのシフトを左シフトと称し、下位ビット方向へのシフトを右シフトと称する。
第1シフト回路901は、第1シフト量制御信号sa0[5:0]及び第1シフト方向制御信号dir0に基づいて入力データD[63:0]の何れか1バイトのビット群をシフトして出力データR[7:0]として出力する。第2シフト回路902は、第2シフト量制御信号sa1[5:0]及び第2シフト方向制御信号dir1に基づいて入力データD[63:0]の何れか1バイトのビット群をシフトして出力データR[15:8]として出力する。第3シフト回路903は、第3シフト量制御信号sa2[5:0]及び第3シフト方向制御信号dir2に基づいて入力データD[63:0]の何れか1バイトのビット群をシフトして出力データR[23:16]として出力する。第4シフト回路904は、第4シフト量制御信号sa3[5:0]及び第4シフト方向制御信号dir3に基づいて入力データD[63:0]の何れか1バイトのビット群をシフトして出力データR[31:24]として出力する。第5シフト回路905は、第5シフト量制御信号sa4[5:0]及び第5シフト方向制御信号dir4に基づいて入力データD[63:0]の何れか1バイトのビット群をシフトして出力データR[39:32]として出力する。第6シフト回路906は、第6シフト量制御信号sa5[5:0]及び第6シフト方向制御信号dir5に基づいて入力データD[63:0]の何れか1バイトのビット群をシフトして出力データR[47:40]として出力する。第7シフト回路907は、第7シフト量制御信号sa6[5:0]及び第7シフト方向制御信号dir6に基づいて入力データD[63:0]の何れか1バイトのビット群をシフトして出力データR[55:48]として出力する。第8シフト回路908は、第8シフト量制御信号sa7[5:0]及び第8シフト方向制御信号dir7に基づいて入力データD[63:0]の何れか1バイトのビット群をシフトして出力データR[63:56]として出力する。言い換えれば、第1〜第8シフト回路は、出力データR[63:0]の1バイト毎の出力ビット位置に対応づけられている。
以下、第5シフト回路905を例として、第1シフト回路901〜第8シフト回路908の構成及び機能について説明する。
図2は、第5シフト回路905の内部回路ブロック図である。
第5シフト回路905は、左シフト部910と、右シフト部920と、左右シフトセレクタ930と、シフト制御部940と、を有する。
左シフト部910は、第1左シフトセレクタ911と、第2左シフトセレクタ912とを有する。第1左シフトセレクタ911は、デジットシフト信号sel4a[15:0]に基づいて、デジット単位、すなわち4ビット単位で左シフトした3デジットのサブビット列である第1左シフトデータDsl1[11:0]を入力データD[63:0]から生成する。サブビット列である第1左シフトデータDsl1[11:0]は、出力データとして選択されるビット群と、ビット群に隣接するビットである隣接ビット群とを含む。第2左シフトセレクタ912は、第1左シフトセレクタ911が生成した第1左シフトデータDsl1[11:0]に含まれる1バイトのビット群をビット単位で左シフトして第2左シフトデータDsl2[7:0]を生成する。
右シフト部920は、第1右シフトセレクタ921と、第2右シフトセレクタ922とを有する。第1右シフトセレクタ921は、デジットシフト信号sel4a[15:0]に基づいて、入力データD[63:0]をデジット単位で右シフトした3デジットのサブビット列である第1右シフトデータDsr1[11:0]を生成する。サブビット列である第1右シフトデータDsr1[11:0]は、出力データとして選択されるビット群と、ビット群に隣接するビットである隣接ビット群とを含む。第2右シフトセレクタ922は、第1右シフトセレクタ921が生成した第1右シフトデータDsr1[11:0]に含まれる1バイトのビット群をビット単位で右シフトした第2右シフトデータDsr2[7:0]を生成する。
左右シフトセレクタ930は、第5シフト方向制御信号dir4が「0」のとき第2左シフトデータDsl2[7:0]を、第5シフト方向制御信号dir4が「1」のとき第2右シフトデータDsr2[7:0]を、出力データR[39:32]として出力する。
シフト制御部940は、第5シフト量制御信号sa4[5:2]からデジットシフト信号sel4a[15:0]を生成し、第5シフト量制御信号sa4[1:0]からビットシフト信号sel4b[3:0]を生成する。
図3(a)は第1左シフトセレクタ911の内部回路ブロック図であり、図3(b)は入力データの分割状態を示す図であり、図3(c)は第1左デジットセレクタの内部ブロック図である。
第1左シフトセレクタ911は、第1左デジットセレクタ914と、第2左デジットセレクタ915と、第3左デジットセレクタ916とを有する。
図3(b)に示すように、入力データD[63:0]は、16個のデジットデータである第1デジットD[3:0]〜第16デジットD[63:60]に分割される。16個のデジットデータのそれぞれの最上位ビット、最上位ビットの1ビット下位のビット、最上位ビットの2ビット下位のビット及び最下位ビットのそれぞれが、16ビットの一群のデータとなる。すなわち、入力データD[63、59、・・・、3]が1つの16ビットのデータとなり、入力データD[62、58、・・・、2]が1つの16ビットのデータとなる。また、入力データD[61、57、・・・、1]が1つの16ビットのデータとなり、入力データD[60、56、・・・、0]が1つの16ビットのデータとなる。以下、本明細書では、最上位ビットをMSB(Most Significant Bit)とも称し、最下位ビットをLSB(Least Significant Bit)とも称する。
図3(c)に示すように、第1左デジットセレクタ914は、第1セレクタ9141〜第4セレクタ9144を有する。第1セレクタ9141〜第4セレクタ9144のそれぞれは、17:1セレクタである。第1セレクタ9141は、デジットシフト信号sel4a[15:0]に基づいて、第1デジットD[3:0]〜第16デジットD[63:60]のMSBのデータ又は「0」を第1左シフトデータDsl1[11]として選択し、出力する。第2セレクタ9142は、デジットシフト信号sel4a[15:0]に基づいて、第1デジットD[3:0]〜第16デジットD[63:60]のMSBの1ビット下位のビットのデータ又は「0」を第1左シフトデータDsl1[10]として選択し、出力する。第3セレクタ9143は、デジットシフト信号sel4a[15:0]に基づいて、第1デジットD[3:0]〜第16デジットD[63:60]のMSBの2ビット下位のビットのデータ又は「0」を第1左シフトデータDsl1[9]として選択し、出力する。第4セレクタ9144は、デジットシフト信号sel4a[15:0]に基づいて、第1デジットD[3:0]〜第16デジットD[63:60]のLSBのデータ又は「0」を第1左シフトデータDsl1[8]として選択し、出力する。
第1左デジットセレクタ914は、デジットシフト信号sel4a[15:0]に基づいて、第1左シフトデータDsl1[11:0]の上位デジットである第1左シフトデータDsl1[11:8]を選択し、出力する。デジットシフト信号sel4a[15:0]が示す左シフトが大きく、第1左デジットセレクタ914が選択するデジットがない場合、第1左デジットセレクタ914は「0000」を第1左シフトデータDsl1[11:8]として出力する。
第2左デジットセレクタ915は、第1左デジットセレクタ914と同一の構成を有する。第2左デジットセレクタ915は、デジットシフト信号sel4a[15:0]に基づいて、第1左デジットセレクタ914が選択したデジットの1デジット下位のデジットを選択し、第1左シフトデータDsl1[7:4]として出力する。デジットシフト信号sel4a[15:0]が示す左シフトが大きく、第2左デジットセレクタ915が選択するデジットがない場合は、第2左デジットセレクタ915は、「0000」を第1左シフトデータDsl1[7:4]として出力する。
第3左デジットセレクタ916は、第1左デジットセレクタ914と同一の構成を有する。第3左デジットセレクタ916は、デジットシフト信号sel4a[15:0]に基づいて、第1左デジットセレクタ914が選択したデジットの2デジット下位のデジットを選択し、第1左シフトデータDsl1[3:0]として出力する。デジットシフト信号sel4a[15:0]が示す左シフトが大きく、第3左デジットセレクタ916が選択するデジットがない場合は、第2左デジットセレクタ915は、「0000」を第1左シフトデータDsl1[3:0]として出力する。
右シフト部920の第1右シフトセレクタ921は、第1左シフトセレクタ911と同様の構成を有し、デジットシフト信号sel4a[15:0]に応じて選択するデジットが異なる。
表1に、第5シフト量制御信号sa4[5:2]、デジットシフト信号sel4a[15:0]、第1左シフトデータDsl1[11:0]、第1右シフトデータDsr1[11:0]の関係を示す真理値表を示す。
Figure 0006260429
表1において、「L」が第1左シフトデータDsl1[11:0]を、「R」が第1右シフトデータDsr1[11:0]を示す。Dsl1[11:8]が第1左デジットセレクタ914の出力であり、Dsl1[7:4]が第2左デジットセレクタ915の出力であり、Dsl1[3:0]が第3左デジットセレクタ916の出力である。
表1に示すように、左シフト時、sa4[5:2]が「0000」の時、デジットシフト信号sel4a[0]が「1」で、Dsl1[11:8]〜Dsl1[3:0]は、第10デジットD[39:36]〜第8デジットD[31:28]となる。また、左シフト時、sa4[5:2]が「0000」の時、デジットシフト信号sel4a[1]が「1」で、Dsl1[11:8]〜Dsl1[3:0]は、第9デジットD[35:32]〜第7デジットD[27:24]となる。これに対して、右シフト時、sa4[5:2]が「0000」の時、デジットシフト信号sel4a[0]が「1」で、Dsr1[11:8]〜Dsr1[3:0]は、第11デジットD[43:40]〜第9デジットD[35:32]となる。また、右シフト時、sa4[5:2]が「0001」の時、デジットシフト信号sel4a[1]が「1」で、Dsr1[11:8]〜Dsr1[3:0]は、第12デジットD[47:44]〜第10デジットD[39:36]となる。
図4は、第2左シフトセレクタ912の内部回路ブロック図である。
第2左シフトセレクタ912は、それぞれが4:1セレクタである第1セレクタ9121〜第8セレクタ9128を有する。第1セレクタ9121〜第8セレクタ9128のそれぞれは、ビットシフト信号sel4b[3:0]に応じて4つのデータから1つのデータを選択する。第1セレクタ9121は、第1左シフトデータDsl1[11:8]から何れか1つを選択する。第2セレクタ9122は、第1左シフトデータDsl1[10:7]から何れか1つを選択する。第3セレクタ9123は、第1左シフトデータDsl1[9:6]から何れか1つを選択する。第4セレクタ9124は、第1左シフトデータDsl1[8:5]から何れか1つを選択する。第5セレクタ9125は、第1左シフトデータDsl1[7:4]から何れか1つを選択する。第6セレクタ9126は、第1左シフトデータDsl1[6:3]から何れか1つを選択する。第7セレクタ9127は、第1左シフトデータDsl1[5:2]から何れか1つを選択する。第8セレクタ9128は、第1左シフトデータDsl1[4:1]から何れか1つを選択する。
第2右シフトセレクタ922は、第2左シフトセレクタ912と同じ構成を有し、入力が異なるのみである。
表2に、第5シフト方向制御信号dir4、第5シフト量制御信号sa4[1:0]、ビットシフト信号sel4b[3:0]、及び左右シフトセレクタ930が選択するデータとの関係を示す真理値表を示す。
Figure 0006260429
表2において、「L」が左シフトの場合を、「R」が右シフトの場合を示す。
次に、処理例を具体的に説明する。
図5(a)は左シフト部910の処理の一例を示す図であり、図5(b)は左シフト部910の処理の他の例を示す図である。図5(a)は、ビット群D[13:6]を26ビット左シフトして第2左シフトデータDsl2[7:0]として左シフト部910が出力する処理を示す図である。図5(b)は、ビット群D[7:0]を35ビット左シフトして第2左シフトデータDsl2[7:0]として左シフト部910が出力する処理を示す図である。
26ビット左シフトする場合、第1左シフトセレクタ911が6デジット左シフトした後に、第2左シフトセレクタ912が2ビット左シフトする。第1左シフトセレクタ911は、[6]が「1」であり他のビットのデータが「0」であるデジットシフト信号sel4[15:0]が入力され、第1左シフトデータDsl1[11:0]として入力データD[15:4]を選択する。すなわち、第1左デジットセレクタ914はD[15:12]を選択し、第2左デジットセレクタ915はD[11:8]を選択し、第1左デジットセレクタ914はD[7:4]を選択する。次いで、第2左シフトセレクタ912は、[2]が「1」であり他のビットのデータが「0」であるビットシフト信号sel4[3:0]が入力され、入力データD[13:6]を第2左シフトデータDsl2[7:0]として選択する。
35ビット左シフトする場合、第1左シフトセレクタ911が8デジット左シフトした後に、第2左シフトセレクタ912が3ビット左シフトする。第1左シフトセレクタ911は、[8]が「1」であり他のビットのデータが「0」であるデジットシフト信号sel4[15:0]が入力され、第1左シフトデータDsl1[11:4]として入力データD[7:0]を選択する。すなわち、第1左デジットセレクタ914はD[7:4]を選択し、第2左デジットセレクタ915はD[3:0]を選択する。第1左シフトデータDsl1[11:0]の中間デジットとして最下位デジットである第1デジットD[3:0]を選択したので、第1左シフトデータDsl1[11:0]の下位デジットは空欄になる。このとき、第3左デジットセレクタ916は、「0000」を第1左シフトデータDsl1[11:0]の下位デジットDsl1[3:0]として出力する。次いで、第2左シフトセレクタ912は、[3]が「1」であり他のビットのデータが「0」であるビットシフト信号sel4[3:0]が入力され、第2左シフトデータDsl2[7:3]として入力データD[4:0]を選択する。また、第2左シフトセレクタ912は、第2左シフトデータDsl2[2:0]のそれぞれのデータとして「0」を選択する。
図6(a)は右シフト部920の処理の一例を示す図であり、図6(b)は右シフト部920の処理の他の例を示す図である。図6(a)は、ビット群D[61:54]を22ビット右シフトして第2右シフトデータDsr2[8:0]として右シフト部920が生成する処理を示す図である。図6(b)は、ビット群D[63:56]を25ビット右シフトして第2右シフトデータDsr2[8:0]として右シフト部920が生成する処理を示す図である。
22ビット右シフトする場合、第1右シフトセレクタ921が5デジット右シフトした後に、第2右シフトセレクタ922が2ビット右シフトする。第1右シフトセレクタ921は、[5]が「1」であり他のビットのデータが「0」であるデジットシフト信号sel4[15:0]が入力され、第1右シフトデータDsr1[11:0]として入力データD[63:52]を選択する。すなわち、第1右デジットセレクタ924はD[63:60]を選択し、第2右デジットセレクタ925はD[59:56]を選択し、第1右デジットセレクタ924はD[55:52]を選択する。次いで、第2右シフトセレクタ922は、[2]が「1」であり他のビットのデータが「0」であるビットシフト信号sel4[3:0]が入力され、入力データD[61:54]を第2右シフトデータDsr2[7:0]として選択する。
25ビット右シフトする場合、第1右シフトセレクタ921が6デジット右シフトした後に、第2右シフトセレクタ922が1ビット右シフトする。第1右シフトセレクタ921は、[6]が「1」であり他のビットのデータが「0」であるデジットシフト信号sel4[15:0]が入力され、第1右シフトデータDsr1[7:0]として入力データD[63:56]を選択する。すなわち、第2右デジットセレクタ925はD[63:56]を選択し、第3右デジットセレクタ926はD[55:52]を選択する。第1右シフトデータDsr1[11:0]の中間デジットとして最上位デジットである第16デジットD[63:60]を選択したので、第1右シフトデータDsr1[11:0]の上位デジットDsr1[11:8]は空欄になる。このとき、第1右デジットセレクタ924は、「0000」を第1右シフトデータDsr1[11:0]の上位デジットDsr1[11:8]として出力する。次いで、第2右シフトセレクタ922は、[1]が「1」であり他のビットのデータが「0」であるビットシフト信号sel4[3:0]が入力され、第2右シフトデータDsr2[6:0]として入力データD[63:57]を選択する。また、第2右シフトセレクタ922は、第2右シフトデータDsr2[7]のMSBのデータとして「0」を選択する。
図7は、第5シフト回路905の処理フローを示すフローチャートである。
まず、ステップS101において、第5シフト量制御信号sa4[5:0]がシフト制御部940に入力されると共に、第5シフト方向制御信号dir4が左右シフトセレクタ930に入力される。シフト制御部940は、第5シフト量制御信号sa4[5:0]が入力されると、第5シフト量制御信号sa4[5:2]に応じたデジットシフト信号sel4a[15:0]を生成し、第1左シフトセレクタ911及び第1右シフトセレクタ921に出力する。また、シフト制御部940は、第5シフト量制御信号sa4[1:0]に応じたビットシフト信号sel4b[3:0]を生成し、第2左シフトセレクタ912及び第2右シフトセレクタ922に出力する。
次いで、ステップS102において、64ビットのビット列である入力データD[63:0]が第1左シフトセレクタ911及び第1右シフトセレクタ921に入力される。
次いで、ステップS103及びS104において、第1左シフトセレクタ911及び第1右シフトセレクタ921は、入力されたデジットシフト信号sel4a[15:0]に応じてデジット単位でシフトした3デジットのサブビット列を生成し、出力する。第1左シフトセレクタ911は、左シフトした3デジットのサブビット列を生成し、第1左シフトデータDsl1[11:0]として出力する。また、ステップS104において、第1右シフトセレクタ921は、右シフトした3デジットのサブビット列を生成し、第1右シフトデータDsr1[11:0]として出力する。
次いで、ステップS105及びS106において、第2左シフトセレクタ912及び第2右シフトセレクタ922は、入力されたビットシフト信号sel4b[3:0]に応じてビット単位でシフトした1バイトのビット群を生成し、出力する。ステップS105において、第2左シフトセレクタ912は、第1左シフトデータDsl1[11:0]から1バイトのビット群を生成し、第2左シフトデータDsl2[7:0]として出力する。また、ステップS106において、第2右シフトセレクタ922は、第1右シフトデータDsr1[11:0]から1バイトのビット群を生成し、第2右シフトデータDsr2[7:0]として出力する。
そして、ステップS107において、左右シフトセレクタ930は、入力された第5シフト方向制御信号dir4に応じて第2左シフトデータDsl2[7:0]又は第2右シフトデータDsr2[7:0]を選択し、出力データR[39:32]として出力する。
第1シフト回路901〜第4シフト回路904及び第6シフト回路906〜第8シフト回路908のそれぞれは第5シフト回路905と対応する構成を有するため、構成及び機能の詳細な説明は省略する。
第1シフト回路901〜第8シフト回路908のそれぞれは、第1シフト量制御信号sa0[5:2]〜第8シフト量制御信号sa7[5:2]に応じて入力データD[63:0]に含まれるサブビット列をデジット単位でシフトする。第1シフト回路901〜第8シフト回路908のそれぞれは、第1シフト量制御信号sa0[1:0]〜第8シフト量制御信号sa7[1:0]に応じて入力データD[63:0]に含まれるビット群をビット単位でシフトする。第1シフト回路901〜第8シフト回路908のそれぞれは、第1シフト方向制御信号dir1〜第8シフト方向制御信号dir7に応じて入力データD[63:0]に含まれるビット群をシフトするシフト方向を選択する。シフト回路900は、入力データD[63:0]に含まれるビット群を左シフト又は右シフトすることができる。
図8は、シフト回路900によるデータシフトの一例を示す図である。
図8では、入力データD[63:0]の最上位バイトがビット群「A0」であり、最上位バイトから2バイト目がビット群「B0」であり、最上位バイトから3バイト目がビット群「A1」であり、最上位バイトから4バイト目がビット群「B1」である。また、入力データD[63:0]の最上位バイトから5バイト目がビット群「A2」であり、最上位バイトから6バイト目がビット群「B2」であり、最上位バイトから7バイト目がビット群「A3」であり、最下位バイトがビット群「B3」である。第1シフト回路901は入力データD[7:0]に位置するビット群「B3」をシフトせずに出力データR[7:0]として出力する。第2シフト回路902〜第8シフト回路908についても同様である。
シフト回路900は、64ビットのビット列である入力データD[63:0]を3段のシフト回路により双方向にシフト可能である。シフト回路900は、同一の構成を有するシフト回路である第1シフト回路901〜第8シフト回路908により形成されるので、構成素子間の配線が比較的簡明になる。しかしながら、シフト回路900は、左シフト用の左シフト部910及び右シフト用の右シフト部920の2つのシフト回路を有しているため、回路面積が大きくなる。また、シフト回路900は、入力データD[63:0]を入力するための配線が左シフト部910及び右シフト部920の双方に分かれて配線されるため配線面積も大きくなるので、自動配置配線ツールで配置配線したときに集積度が低くなるおそれがある。
シフト回路では、上記問題を解決し、シフト回路900よりも回路面積が小さく且つ自動配置配線ツールで配置配線したときに集積度を比較的高くすることが好ましい。
実施形態に係るシフト回路では、第2シフトセレクタは、第1シフトセレクタがシフトしたサブビット列に含まれる対象入力ビット群を、対象入力ビット群の一方の端がシフト部の出力ビット位置の一方の端に一致するように、一方向に1ビット単位でシフトする。実施形態に係るシフト回路では、一方向のビットシフト回路で双方向シフトを実現しているため、左シフト部と右シフト部の2つのシフト回路を有する関連するシフト回路900と比較して回路面積を小さくすることができる。
図9は、第1実施形態に係るシフト回路の回路ブロック図である。
シフト回路1は、第1シフト回路11〜第8シフト回路18を有する。第1シフト回路11〜第8シフト回路18のそれぞれは、64ビットの入力データD[63:0]が入力され、入力データD[63:0]の何れか1バイトの一連のビット群を上位方向又は下位方向にシフトしたビット群を出力データとしてそれぞれ出力する。
第1シフト回路11は、第1シフト量制御信号sa0[5:0]及び第1シフト方向制御信号dir0に基づいて入力データD[63:0]の何れか1バイトのビット群をシフトして出力データR[7:0]として出力する。第2シフト回路12は、第2シフト量制御信号sa1[5:0]及び第2シフト方向制御信号dir1に基づいて入力データD[63:0]の何れか1バイトのビット群をシフトして出力データR[15:8]として出力する。第3シフト回路13は、第3シフト量制御信号sa2[5:0]及び第3シフト方向制御信号dir2に基づいて入力データD[63:0]の何れか1バイトのビット群をシフトして出力データR[23:16]として出力する。第4シフト回路14は、第4シフト量制御信号sa3[5:0]及び第4シフト方向制御信号dir3に基づいて入力データD[63:0]の何れか1バイトのビット群をシフトして出力データR[31:24]として出力する。第5シフト回路15は、第5シフト量制御信号sa4[5:0]及び第5シフト方向制御信号dir4に基づいて入力データD[63:0]の何れか1バイトのビット群をシフトして出力データR[39:32]として出力する。第6シフト回路16は、第6シフト量制御信号sa5[5:0]及び第6シフト方向制御信号dir5に基づいて入力データD[63:0]の何れか1バイトのビット群をシフトして出力データR[47:40]として出力する。第7シフト回路17は、第7シフト量制御信号sa6[5:0]及び第7シフト方向制御信号dir6に基づいて入力データD[63:0]の何れか1バイトのビット群をシフトして出力データR[55:48]として出力する。第8シフト回路18は、第8シフト量制御信号sa7[5:0]及び第8シフト方向制御信号dir7に基づいて入力データD[63:0]の何れか1バイトのビット群をシフトして出力データR[63:56]として出力する。
以下、第5シフト回路15を例として、第1シフト回路11〜第8シフト回路18の構成及び機能について説明する。
図10は、第5シフト回路15の内部回路ブロック図である。
第5シフト回路15は、シフト部20と、シフト制御部30とを有する。
シフト部20は、第1シフトセレクタ21と、第2シフトセレクタ22とを有する。第1シフトセレクタ21は、デジットシフト信号sel4a[17:0]に基づいて、入力データD[63:0]の何れか3デジットのサブビット列をデジット単位で左シフト又は右シフトした3デジットの第1シフトデータDs1[11:0]を生成する。サブビット列である第1シフトデータDs1[11:0]は、出力データとして選択されるビット群と、ビット群に隣接するビットである隣接ビット群とを含む。第2シフトセレクタ22は、第1シフトセレクタ21が生成した第1シフトデータDs1[11:0]に含まれる1バイトのビット群をビット単位で左シフトして出力データR[39:32]を生成する。
シフト制御部30は、第5シフト方向制御信号dir4と、第5シフト量制御信号sa4[5:0]とに応じて、デジットシフト信号sel4a[17:0]及びビットシフト信号sel4b[4:0]を生成する。シフト制御部30は、第5シフト方向制御信号dir4が「0」のとき、第1シフトセレクタ21が入力データD[63:0]の何れかのサブビット列を左シフトして第1シフトデータとして出力するデジットシフト信号sel4a[17:0]を生成する。シフト制御部30は、第5シフト方向制御信号dir4が「1」のとき、第1シフトセレクタ21が入力データD[63:0]の何れかのサブビット列を右シフトして第1シフトデータとして出力するデジットシフト信号sel4a[17:0]を生成する。
シフト制御部30は、第5シフト方向制御信号dir4が「0」のとき、第1シフトデータに含まれるビット群を第5シフト量制御信号sa4[1:0]に応じて左シフトして出力データとして生成するビットシフト信号sel4b[4:0]を生成する。例えば、第5シフト量制御信号sa4[1:0]が「01」のとき、シフト制御部30は、第2シフトセレクタ22がビット群を1ビット左シフトする信号を生成する。
シフト制御部30は、第5シフト方向制御信号dir4が「1」のとき、第1シフトデータに含まれるビット群を第5シフト量制御信号sa4[1:0]の2の補数に応じて左シフトして出力データとして生成するビットシフト信号sel4b[4:0]を生成する。例えば、第5シフト量制御信号sa4[1:0]が「10」のとき、シフト制御部30は、第2シフトセレクタ22が「10」の2の補数である「10」に対応する2ビット、ビット群を左シフトする信号を生成する。
シフト制御部30が生成するデジットシフト信号sel4a[17:0]及びビットシフト信号sel4b[4:0]と、ビッド群のシフトについては後述する。
図11(a)は第1シフトセレクタ21の内部回路ブロック図であり、図11(b)はデジットデータを示す図であり、図11(c)は図11(a)に示す第1デジットセレクタの内部ブロック図である。
第1シフトセレクタ21は、第1デジットセレクタ24と、第2デジットセレクタ25と、第3デジットセレクタ26と、を有する。
図11(b)に示すように、入力データD[63:0]は、16個のデジットデータである第1デジットD[3:0]〜第16デジットD[63:60]に分割され、4つの16ビットのデータとなる。これは、図3(b)で説明したものと同様である。
図11(c)に示すように、第1デジットセレクタ24は、第1セレクタ241と、第2セレクタ242と、第3セレクタ243と、第4セレクタ244とを有する。第1セレクタ241、第2セレクタ242、第3セレクタ243及び第4セレクタ244のそれぞれは、17:1セレクタであり、第5シフト方向制御信号dir4及びデジットシフト信号sel4a[15:0]が入力される。第1セレクタ241は、これらの信号に基づいて、第1デジットD[3:0]〜第16デジットD[63:60]のMSBのデータ又は「0」を第1シフトデータDs1[11]として選択し、出力する。第2セレクタ242は、第1デジットD[3:0]〜第16デジットD[63:60]のMSBの1ビット下位のビットのデータ又は「0」を第1シフトデータDs1[10]として選択し、出力する。第3セレクタ243は、第1デジットD[3:0]〜第16デジットD[63:60]のMSBの2ビット下位のビットのデータ又は「0」を第1シフトデータDs1[9]として選択し、出力する。第4セレクタ244は、第1デジットD[3:0]〜第16デジットD[63:60]のLSBのデータ又は「0」を第1シフトデータDs1[8]として選択し、出力する。
第1デジットセレクタ24は、第5シフト方向制御信号dir4及びデジットシフト信号sel4a[15:0]に基づいて、第1シフトデータDs1[11:0]の上位デジットである第1シフトデータDs1[11:8]を選択し、出力する。デジットシフト信号sel4a[15:0]が示すシフトが大きく、第1デジットセレクタ24が選択するデジットがない場合、第1デジットセレクタ24は、「0000」を第1シフトデータDs1[11:8]として出力する。
第2デジットセレクタ25は、第1デジットセレクタ24と同一の構成を有する。第2デジットセレクタ25には、第5シフト方向制御信号dir4及びデジットシフト信号sel4a[16:1]が入力される。第2デジットセレクタ25は、これらの信号に基づいて、第1デジットセレクタ24が選択したデジットの1デジット下位のデジットを選択し、第1シフトデータDs1[7:4]として出力する。デジットシフト信号sel4a[16:1]が示すシフトが大きく、第2デジットセレクタ25が選択するデジットがない場合、第2デジットセレクタ25は、「0000」を第1シフトデータDs1[7:4]として出力する。後述するように、デジットシフト信号sel4a[17:0]は、何れか1ビットが「1」で、他が「0」の信号であり、第1デジットセレクタ24に入力される信号に対して1ビットずれた信号であり、これにより、選択するデジットの位置が異なる。これは、第3デジットセレクタ26についても同様である。
第3デジットセレクタ26は、第1デジットセレクタ24と同一の構成を有する。第3デジットセレクタ26には、第5シフト方向制御信号dir4及びデジットシフト信号sel4a[17:2]が入力される。第3デジットセレクタ26は、これらの信号に基づいて、第1デジットセレクタ24が選択したデジットの2デジット下位のデジットを選択し、第1シフトデータDs1[3:0]として出力する。デジットシフト信号sel4a[17:2]が示すシフトが大きく、第3デジットセレクタ26が選択するデジットがない場合、第3デジットセレクタ26は「0000」を第1シフトデータDs1[3:0]として出力する。
表3に、第5シフト方向制御信号dir4、第5シフト量制御信号sa4[5:2]、デジットシフト信号sel4a[17:0]、第1シフトデータDs1[11:0]の関係を示す真理値表を示す。
Figure 0006260429
表3において、「L」が左シフト時を、「R」が右シフト時を示す。Ds1[11:8]が第1デジットセレクタ24の出力であり、Ds1[7:4]が第2デジットセレクタ25の出力であり、Ds1[3:0]が第3デジットセレクタ26の出力である。
表3に示すように、第5シフト方向制御信号dir4が「0」、sa4[5:2]が「0000」の時、デジットシフト信号sel4a[9]が「1」で、それ以外のsel4a[17]−[10]及び[8]−[0]は「0」となる。これに応じて、第1デジットセレクタ24−26は、第10デジットD[39:36]〜第8デジットD[31:28]を選択して、Dsl1[11:8]〜Dsl1[3:0]として出力する。また、sa4[5:2]が「0001」の時、デジットシフト信号sel4a[8]が「1」で、Dsl1[11:8]〜Dsl1[3:0]は、第9デジットD[35:32]〜第7デジットD[27:24]となる。これに対して、第5シフト方向制御信号dir4が「1」、sa4[5:2]が「0000」の時、デジットシフト信号sel4a[10]が「1」で、それ以外のsel4a[17]−[11]及び[9]−[0]は「0」となる。これに応じて、第1デジットセレクタ24−26は、第11デジットD[43:40]〜第9デジットD[35:32]を選択して、Dsl1[11:8]〜Dsl1[3:0]として出力する。このように、デジットシフト量が同じであっても、左シフトと右シフトで、選択するデジットが異なる。
図12は、第2シフトセレクタ22の内部回路ブロック図である。
第2シフトセレクタ22は、5:1セレクタである第1セレクタ221〜第8セレクタ228を有する。第1セレクタ221〜第8セレクタ228のそれぞれは、ビットシフト信号sel4b[4:0]に応じて5つのデータから1つのデータを選択する。第1セレクタ221は、第1シフトデータDs1[11:7]から何れか1つを選択して出力データR[39]として出力する。第2セレクタ222は、第1シフトデータDs1[10:6]から何れか1つを選択して出力データR[38]として出力する。第3セレクタ223は、第1シフトデータDs1[9:5]から何れか1つを選択して出力データR[37]として出力する。第4セレクタ224は、第1シフトデータDs1[8:4]から何れか1つを選択して出力データR[36]として出力する。第5セレクタ225は、第1シフトデータDs1[7:3]から何れか1つを選択して出力データR[35]として出力する。第6セレクタ226は、第1シフトデータDs1[6:2]から何れか1つを選択して出力データR[34]として出力する。第7セレクタ227は、第1シフトデータDs1[5:1]から何れか1つを選択して出力データR[33]として出力する。第8セレクタ228は、第1シフトデータDs1[4:0]から何れか1つを選択して出力データR[32]として出力する。表4に、ビットシフト信号sel4b[4:0]と第1セレクタ221〜第8セレクタ228が選択するデータとの関係を示す真理値表を示す。
Figure 0006260429
図13は、シフト制御部30の生成したビットシフト信号sel4b[4:0]による第2シフトセレクタ22におけるビットシフトを示す図である。図13(a)は第5シフト方向制御信号dir4が「0」である左シフトを示す図であり、図13(b)は第5シフト方向制御信号dir4が「1」である右シフトを示す図である。図13(a)では、説明を簡単にするため、第1シフトセレクタ21におけるデジットシフト量は0としている。すなわち、第5シフト量制御信号sa4[5:2]は「0000」であり、左シフトのときはデジットシフト信号sel4a[9]が「1」であり、右シフトのときはデジットシフト信号sel4a[10]が「1」である。左シフトのときは、サブビット列D[39:28]が第1データシフトデータ[11:0]として出力され、右シフトのときは、サブビット列D[40:32]が第1データシフトデータ[11:0]として出力される。
第5シフト方向制御信号dir4が左シフトを示すとき、シフト制御部30は、第5シフト量制御信号sa4[1:0]に応じて第1データシフトデータ[11:0]に含まれるビット群を左シフトするビットシフト信号sel4b[4:0]を生成する。第5シフト方向制御信号dir4が右シフトを示すとき、シフト制御部30は、第5シフト量制御信号sa4[1:0]の2の補数に応じて第2シフトセレクタ22がビット群を左シフトするようなビットシフト信号sel4b[4:0]を生成する。
図14は第5シフト回路15の処理フローを示すフローチャートである。
まず、ステップS301において、シフト制御部30は、入力される第5シフト量制御信号sa4[5:0]及び第5シフト方向制御信号dir4に応じたデジットシフト量及びビットシフト量を決定する。シフト制御部30は、決定したデジットシフト量に対応するデジットシフト信号sel4a[17:0]を第1シフトセレクタ21に、決定したビットシフト量に対応するビットシフト信号sel4b[4:0]を第2シフトセレクタ22に出力する。
次いで、ステップS302において、第1シフトセレクタ21は、デジットシフト信号sel4a[17:0]に応じてデジット単位でシフトしたサブビット列である第1シフトデータDs1[11:0]を生成し、第2シフトセレクタ22に出力する。
そして、ステップS303において、第2シフトセレクタ22は、ビットシフト信号sel4b[4:0]に応じてビット単位でシフトした1バイトのビット群を出力データR[39:32]として生成し、出力する。
図15は、左シフトと右シフトでのデジットの選択とビットシフトの違いを説明する図である。
図15では、例えば、入力データ列のビット群[39:32]を選択し、出力データR[39:32]として出力される。言い換えれば、デジットシフト量及びビットシフト量が共に「0」の場合であるが、左シフトまたは右シフトされる場合も同様である。図15において、(1)は、対象となる入力データの範囲を示す。また、(2)は左シフトのときに第1シフトデータDs1[11:0]として選択される入力データの範囲を示し、(3)は右シフトのときに第1シフトデータDs1[11:0]として選択される入力データの範囲を示す。
図15において、(4)は第1シフトデータDs1[11:0]のビットと選択される入力データD[63:0]との対応関係を示す。左シフトで且つデジットシフト量が「0」のとき、第1シフトデータDs1[11:0]としてサブビット列D[39:28]が選択される。一方、右シフトで且つデジットシフト量が「0」のとき、第1シフトデータDs1[11:0]としてサブビット列D[43:32]が選択される。このように、第10デジットD[39:36]が上位デジットになるように選択する場合でも、左シフトの場合は、第10デジットD[39:36]は上位デジットで、右シフトの場合は、第10デジットD[39:36]は中間デジットで選択される。なお、ビット群[38:31]〜[36:29]を選択する場合も、サブビット列D[39:28]が選択される。また、ビット群[42:35]〜[40:33]を選択する場合も、サブビット列D[43:32]が選択される。
図15において、(5)〜(8)のそれぞれは、左シフトのときの第2シフトセレクタ22におけるビットシフトを示す。左シフトのとき、第2シフトセレクタ22は、シフトさせるビット数に応じたビットシフト量で第1シフトデータDs1[11:0]に含まれるビット群を左シフトして出力データR[39:32]として出力する。
図15において、(9)〜(12)のそれぞれは、右シフトのときの第2シフトセレクタ22におけるビットシフトを示す。右シフトのとき、第2シフトセレクタ22は、シフトさせるビット数の2の補数に応じたビットシフト量で第1シフトデータDs1[11:0]に含まれるビット群を左シフトする。
図15において、(13)〜(16)は、第2シフトセレクタ22における左シフト及び右シフトをまとめて示す。まず、左シフト時について説明する。第2シフトセレクタ22は、第1シフトデータDs1[11:0]に含まれるビット群[39:32]を0ビット左シフトして出力データR[39:32]として出力するとき、第1シフトデータDs1[11:0]をビットシフトしない。以下同様に、ビット群[38:31]を出力データR[39:32]として出力するとき、第1シフトデータDs1[11:0]を1ビット左シフトする。ビット群[37:30]を出力データR[39:32]として出力するとき、第1シフトデータDs1[11:0]を2ビット左シフトする。ビット群[36:29]を出力データR[39:32]として出力するとき、第1シフトデータDs1[11:0]を3ビット左シフトする。
次に、右シフト時について説明する。第2シフトセレクタ22は、第1シフトデータDs1[11:0]に含まれるビット群[39:32]を0ビット右シフトして出力データR[39:32]として出力するとき、第1シフトデータDs1[11:0]を4ビット左シフトする。第2シフトセレクタ22がビット群[39:32]左シフトするビット数である4ビットは、「00」の2の補数に対応する。以下同様に、ビット群[40:33]を出力データR[39:32]として出力するとき、第1シフトデータDs1[11:0]を「01」の2の補数に対応する3ビット左シフトする。ビット群[41:34]を出力データR[39:32]として出力するとき、第1シフトデータDs1[11:0]を「10」の2の補数に対応する2ビット左シフトする。ビット群[42:35]を出力データR[39:32]として出力するとき、第1シフトデータDs1[11:0]を「11」の2の補数に対応する1ビット左シフトする。
図16(a)は第5シフト回路15の左シフト処理の一例を示す図であり、図16(b)は第5シフト回路15の左シフト処理の他の例を示す図である。図16(a)は、ビット群D[13:6]を26ビット左シフトして出力データR[39:32]として第5シフト回路15が出力する処理を示す図である。図16(b)は、ビット群D[4:0]を35ビット左シフトして出力データR[39:32]として第5シフト回路15が出力する処理を示す図である。
26ビット左シフトする場合、6デジット左シフトし2ビット左シフトするので、シフト制御部30は、第5シフト量制御信号sa4[5:0]として「011010」が入力されると共に第5シフト方向制御信号dir4として「0」が入力される。シフト制御部30は、[3]が「1」であり他のビットが「0」であるデジットシフト信号sel4a[17:0]を生成し、第1シフトセレクタ21に出力する。シフト制御部30は、[2]が「1」であり他のビットが「0」であるビットシフト信号sel4b4[4:0]を生成し、第2シフトセレクタ22に出力する。第1シフトセレクタ21は、第1左シフトデータDs1[11:0]として入力データD[15:4]を選択する。次いで、第2シフトセレクタ22は、入力データD[13:6]を出力データR[39:32]として選択する。
35ビット左シフトする場合、8デジット左シフトし3ビット左シフトするので、シフト制御部30は、第5シフト量制御信号sa4[5:0]として「100011」が入力されると共に第5シフト方向制御信号dir4として「0」が入力される。シフト制御部30は、[1]が「1」であり他のビットが「0」であるデジットシフト信号sel4a[17:0]を生成し、第1シフトセレクタ21に出力する。シフト制御部30は、[3]が「1」であり他のビットが「0」であるビットシフト信号sel4b4[4:0]を生成し、第2シフトセレクタ22に出力する。第1シフトセレクタ21は、第1左シフトデータDs1[11:4]として入力データD[7:0]を選択し、第1左シフトデータDs[3:0]のそれぞれのデータとして「0」を選択する。次いで、第2左シフトセレクタ22は、第2シフトデータ出力データR[39:35]として入力データD[4:0]を選択し、出力データR[34:32]のそれぞれのデータとして「0」を選択する。
図17(a)は第5シフト回路15の右シフト処理の一例を示す図であり、図17(b)は第5シフト回路15の右シフト処理の他の例を示す図である。図17(a)は、ビット群D[61:54]を22ビット右シフトビット群出力データR[39:32]として第5シフト回路15が出力する処理を示す図である。図17(b)は、ビット群D[63:57]を25ビット右シフトして出力データR[39:32]として第5シフト回路15が出力する処理を示す図である。
22ビット右シフトする場合、5デジット右シフトし2ビット右シフトするので、シフト制御部30は、第5シフト量制御信号sa4[5:0]として「010110」が入力されると共に第5シフト方向制御信号dir4として「1」が入力される。シフト制御部30は、[15]が「1」であり他のビットが「0」であるデジットシフト信号sel4a[17:0]を生成し、第1シフトセレクタ21に出力する。シフト制御部30は、[2]が「1」であり他のビットが「0」であるビットシフト信号sel4b4[4:0]を生成し、第2シフトセレクタ22に出力する。第1シフトセレクタ21は、第1シフトデータDs1[11:0]として入力データD[63:52]を選択する。次いで、第2シフトセレクタ22は、入力データD[61:54]を出力データR[34:32]として選択する。
25ビット右シフトする場合、4デジット右シフトし1ビット右シフトするので、シフト制御部30は、第5シフト量制御信号sa4[5:0]として「011001」が入力されると共に第5シフト方向制御信号dir4として「1」が入力される。シフト制御部30は、[16]が「1」であり他のビットが「0」であるデジットシフト信号sel4a[17:0]を生成し、第1シフトセレクタ21に出力する。シフト制御部30は、[3]が「1」であり他のビットが「0」であるビットシフト信号sel4b4[4:0]を生成し、第2シフトセレクタ22に出力する。第1シフトセレクタ21は、第1シフトデータDs1[7:0]として入力データD[63:56]を選択し、第1シフトデータDs1[11:8]のそれぞれのデータとして「0」を選択する。次いで、第2シフトセレクタ22は、出力データR[38:32]として入力データD[63:57]を選択し、出力データR[39]のデータとして「0」を選択する。
第1シフト回路11〜第4シフト回路14及び第6シフト回路16〜第8シフト回路18のそれぞれは第5シフト回路15と対応する構成を有するため、構成及び機能の詳細な説明は省略する。
以上説明したように、シフト回路1は、入力データD[63:0]に含まれるバイト長を跨ぐビット群を左シフト又は右シフトすることができるので、ビット群単位で並び替えが可能である。
さらに、シフト回路1は、一方向のビットシフト回路で双方向シフトを実現しているため、左シフト部と右シフト部の2つのシフト回路を有する関連するシフト回路900と比較して回路面積を小さくすることができる。特許文献1に記載されたシフト回路も同様に、左ビットシフトと右ビットシフトを別々の行っていると考えられるので、シフト回路1は、特許文献1に記載されたシフト回路に比べて回路面積を小さくすることができる。
また、シフト部20は、2段のシフト回路で形成されるので、3段のシフト回路で形成される関連するシフト回路900よりも高速で双方向シフトを実現できる。また、シフト回路1では、第1シフト回路11〜第8シフト回路18は、同じ回路構成で実現できるため、回路設計が容易である。このため、シフト回路1は、2つのシフト回路を有する関連するシフト回路900と比較して自動配置配線ツールで配置配線したときに集積度が高くなる。
図18は、第2実施形態に係るシフト回路の回路ブロック図である。
第2実施形態のシフト回路は、64ビットの入力データ列に4ビットごとに1ビットのパリティが追加された80ビットのデータ列が入力される。第2実施形態のシフト回路では、各シフト回路が8ビットのビット群および対応する2ビットのパリティビットを選択し、選択した8ビットのビット群にパリティプリディクションの結果を付加して出力することが第1実施形態と相違する。
第2実施形態のシフト回路2は、第1シフト回路31〜第8シフト回路38を有する。第1〜第8シフト回路31〜38のそれぞれは、入力パリティデータD[15:0]が入力され、出力する8ビットのデータに対応する2ビットのパリティビットを選択する。したがって、シフト回路2は、並び替えた出力データR[63:0]及び出力パリティデータRDP[15:0]を出力する。
以下、第5シフト回路35を例として、第1シフト回路31〜第8シフト回路38の構成及び機能について説明する。
図19は、第5シフト回路35の内部回路ブロック図である。
第5シフト回路35は、シフト部40と、シフト制御部30と、を有する。シフト制御部30は、第1実施形態のものと同じである。シフト部40は、第1シフトセレクタ41と、第2シフトセレクタ22と、パリティ回路43と、パリティ選択回路47と、を有する。第2シフトセレクタ22は、第1実施形態のものと同じである。第1シフトセレクタ41は、第1実施形態と同様に3デジットのデータ群を選択すると共に、選択するデータ群に対応する3ビットのパリティビットを入力パリティデータD[15:0]から選択する。第1シフトセレクタ41は、選択した3デジットのデータ群および3ビットのパリティビットを、第1シフトデータDs1「11:0」及び第1シフトパリティデータDsp[2:0]として出力する。パリティ回路43は、第1シフトデータDs1「11:0」、第1シフトパリティデータDsp[2:0]及び第5シフト方向制御信号dir4とを使用してパリティプリディクションを実行する。パリティ回路43は、第20シフトパリティDsp0[1:0]〜第24シフトパリティDsp4[1:0]を実行したパリティプリディクションの結果として生成する。パリティ選択回路47は、第5シフト方向制御信号dir4に基づいて第20シフトパリティDsp0[1:0]〜第24シフトパリティDsp4[1:0]の1つを選択して出力パリティデータRDP[9:8]を出力する。
図20(a)は第1シフトセレクタ41の内部回路ブロック図であり、図20(b)は図20(a)に示す第1デジットセレクタの内部ブロック図である。
第1シフトセレクタ41は、第1デジットセレクタ44〜第3デジットセレクタ46を有する。第1デジットセレクタ44〜第3デジットセレクタ46は、3デジットのデータ群と共に、入力パリティデータD[15:0]から3ビットのパリティビットを選択する。
第1デジットセレクタ44は、デジットシフト信号sel4a[15:0]に基づいて第1デジットD[3:0]〜第16デジットD[63:60]の何れか、及び対応するパリティ用データ又は「0」を選択する。第1デジットセレクタ44は、選択したデジットを第1シフトデータDs1[11:8]として、選択したパリティ用データ又は「0」をシフトパリティデータDsp[2]として出力する。例えば、第1デジットセレクタ44は、デジットシフト信号sel4a[15:0]が第1デジットD[3:0]を選択することを示すとき、第1デジットD[3:0]のパリティプリディクション用データを選択する。第1デジットセレクタ44が選択するデジットがなく第1シフトデータDs1[11:8]として「0000」が出力される場合、第1デジットセレクタ44は、「0」をシフトパリティデータDsp[2]として出力する。
第2デジットセレクタ45は、第1デジットセレクタ44と同一の構成を有する。第2デジットセレクタ45は、デジットシフト信号sel4a[16:1]に基づいて第1デジットD[3:0]〜第16デジットD[63:60]の何れか、及び対応するパリティ用データ又は「0」を選択する。第2デジットセレクタ45は、選択したデジットを第1シフトデータDs1[7:4]として、選択したパリティ用データ又は「0」をシフトパリティデータDsp[1]として出力する。
第3デジットセレクタ46は、第1デジットセレクタ44と同一の構成を有する。第3デジットセレクタ46は、デジットシフト信号sel4a[17:2]に基づいて第1デジットD[3:0]〜第16デジットD[63:60]の何れか、及び対応するパリティ用データ又は「0」を選択する。第3デジットセレクタ46は、選択したデジットを第1シフトデータDs1[3:0]として、選択したパリティ用データ又は「0」をシフトパリティデータDsp[0]として出力する。
以上の通り、第1シフトセレクタ41は、第1シフトデータDs1[11:0]の上位デジットDs1[11:8]、中間デジットDs1[7:8]及び下位デジットDs1[3:0]のパリティプリディクションの結果としてシフトパリティデータDsp[2:0]を出力する。
前述のように、パリティ回路43は、第1シフトセレクタ41から入力される第1シフトデータDs1[11:0]と、シフトパリティデータDsp[2:0]と、第5シフト方向制御信号dir4とを使用してパリティプリディクションを実行する。パリティ回路43は、第2シフトセレクタ22におけるビットシフトに応じて5つのパリティプリディクション結果である第20シフトパリティデータDsp0[1:0]〜第24シフトパリティDsp4[1:0]を生成する。
第20シフトパリティDsp0[1:0]は、第2シフトセレクタ22においてビットシフトしなかったときの出力データR[39:32]の上位デジット及び下位デジットそれぞれのパリティプリディクションの結果を示す。第21シフトパリティデータDsp1[1:0]は、第2シフトセレクタ22において1ビット左シフトしたときの出力データR[39:32]の上位デジット及び下位デジットそれぞれのパリティプリディクションの結果を示す。第22シフトパリティDsp2[1:0]は、第2シフトセレクタ22において2ビット左シフトしたときの出力データR[39:32]の上位デジット及び下位デジットそれぞれのパリティプリディクションの結果を示す。第23シフトパリティDsp3[1:0]は、第2シフトセレクタ22において3ビット左シフトしたときの出力データR[39:32]の上位デジット及び下位デジットそれぞれのパリティプリディクションの結果を示す。第24シフトパリティDsp4[1:0]は、第2シフトセレクタ22において4ビット左シフトしたときの出力データR[39:32]の上位デジット及び下位デジットそれぞれのパリティプリディクションの結果を示す。
図21は、パリティ選択回路47の内部回路ブロック図である。
パリティ選択回路47は、第1セレクタ471と、第2セレクタ472とを有する。第1セレクタ471及び第2セレクタ472のそれぞれは、ビットシフト信号sel4b[4:0]に応じて5つのデータから1つのデータを選択する。ビットシフト信号sel4b[4:0]がビットシフトしないことを示すとき、第1セレクタ471及び第2セレクタ472のそれぞれは、第20シフトパリティDsp0[1:0]を出力パリティデータRDP[9:8]として出力する。ビットシフト信号sel4b[4:0]が1ビット左シフトを示すとき、第1セレクタ471及び第2セレクタ472のそれぞれは、第21シフトパリティDsp1[1:0]を出力パリティデータRDP[9:8]として出力する。ビットシフト信号sel4b[4:0]が2ビット左シフトを示すとき、第1セレクタ471及び第2セレクタ472のそれぞれは、第22シフトパリティDsp2[1:0]を出力パリティデータRDP[9:8]として出力する。ビットシフト信号sel4b[4:0]が3ビット左シフトを示すとき、第1セレクタ471及び第2セレクタ472のそれぞれは、第23シフトパリティDsp3[1:0]を出力パリティデータRDP[9:8]として出力する。ビットシフト信号sel4b[4:0]が4ビット左シフトを示すとき、第1セレクタ471及び第2セレクタ472のそれぞれは、第24シフトパリティDsp4[1:0]を出力パリティデータRDP[9:8]として出力する。
シフト回路2では、シフト部40の第1シフトセレクタ41でシフトされた第1シフトデータDs1[11:0]に対応する第1シフトパリティDsp[2:0]を使用して、パリティ回路43がパリティプリディクションを実行する。シフト回路2では、入力データD[63:0]から選択可能な1バイトのシフト信号の全てについてパリティプリディクションを実行するのではなく、第1シフトデータDs1[11:0]から選択可能な1バイトのシフト信号についてのみパリティプリディクションを実行する。シフト回路2では、パリティプリディクションを実行する1バイトのシフト信号の数を少なくすることができるので、パリティ回路43の回路規模を削減できる。
以上、第1実施形態のシフト回路1及び第2実施形態のシフト回路について説明した。実施形態のシフト回路は、64ビットのビット列である入力データD[63:0]に含まれる1バイトのビット群をシフトさせている。しかしながら、実施形態のシフト回路は、64ビットより大きいビット列又は64ビットよりも小さいビット列に含まれるビット群をシフトさせる構成としてもよい。
シフト回路1及び2では、第1シフトセレクタ21でシフトされるサブビット列である第1シフトデータDs1[11:0]のビット量は、出力データとして出力される1バイトのビット群に1デジットの隣接ビット群を付加して生成される。しかしながら、サブビット列で付加される隣接ビット群のビット量は、ビット群のビット量に応じて、1デジットよりも多くてもよく、1デジットよりも少なくてもよい。例えば、実施形態のシフト回路は、64ビットのビット列を1バイトよりも大きいビット群ごと又は1バイトよりも小さいビット群ごとにシフトさせる構成としてもよい。実施形態のシフト回路1は、第1シフトセレクタが選択するサブビット列として3デジットの第1シフトデータDs1[11:0]が使用されるが、3デジットよりも長いサブビット列又は3デジットよりも短いサブビット列が選択される構成としてもよい。例えば、64ビットのビット列に含まれる2バイトのビット群をシフトさせる場合、第1シフトセレクタが3バイトのサブビット列を選択する構成とすることができる。
また、シフト回路1は、左方向にビット単位でビット群をシフトさせるシフト回路として第2シフトセレクタ22が配置されるが、第2シフトセレクタが右方向にビット単位でビット群をシフトさせる構成としてもよい。第2シフトセレクタが右方向にビット単位でビット群をシフトさせる場合、右シフトするときはシフトさせたい量に応じてビット群をシフトさせるが、左シフトするときはシフトさせたい量の2の補数に応じてビット群をシフトさせる構成となる。
また、シフト回路1は、第1シフト回路11〜第8シフト回路18のそれぞれがシフト制御部30を有するが、第1シフト回路11〜第8シフト回路18のそれぞれにシフト量制御信号を出力する単一のシフト制御部を有する構成としてもよい。
シフト回路1及び2は、CPU(Central Processing Unit、中央演算処理装置)等の演算装置に搭載することができる。シフト回路1及び2を搭載する演算装置は、種々のデータフォーマットのデータを高速に演算するためにデータの配列を並び替えることが可能になる。
図22は、シフト回路1を搭載した演算装置の一例を示す図である。
図22の例では、データは、2バイト単位で処理される。
演算装置50は、シフト回路1と、ラッチ回路51と、演算回路52と、制御回路53とを有する。
シフト回路1は、第1〜第8シフト量制御信号及び第1〜第8シフト方向制御信号に応じて、入力データD[63:0]内の2バイトデータをシフトすると共に2バイト毎にビットを並び替えて出力データR[63:0]として出力する。
ラッチ回路51は、第1ラッチ部511と、第2ラッチ部512と、第3ラッチ部513と、第4ラッチ部514とを有する。第1ラッチ部511はシフト回路1の出力信号R[15:0]をラッチし、第2ラッチ部512はシフト回路1の出力信号R[31:16]をラッチする。第3ラッチ部513はシフト回路1の出力信号R[47:32]をラッチし、第4ラッチ部514はシフト回路1の出力信号R[63:48]をラッチする。
演算回路52は、第1演算部521と、第2演算部522と、第3演算部523と、第4演算部524とを有する。第1演算部521は、第1ラッチ部511でラッチされた出力信号R[15:0]に所定の演算処理を実行する。第2演算部522は、第2ラッチ部512でラッチされた出力信号R[31:16]に所定の演算処理を実行する。第3演算部523は、第3ラッチ部513でラッチされた出力信号R[47:32]に所定の演算処理を実行する。第4演算部524は、第4ラッチ部514でラッチされた出力信号R[63:48]に所定の演算処理を実行する。
制御回路53は、演算回路52で実行される演算処理に応じて、シフト回路1の入力データD[63:0]を2バイトのビット群毎にビット群を並び替えると共にシフトするように第1〜第8シフト量制御信号及び第1〜第8シフト方向制御信号を出力する。
演算装置50では、シフト回路1は、8バイトの入力データD[63:0]を2バイトのビット群毎にビット群を並び替えると共にビット群毎にシフトして、第1演算部521〜第4演算部524に演算処理用のデータとしてそれぞれ出力する。
1、2 シフト回路
11〜18、31〜38 第1シフト回路〜第8シフト回路
20 シフト部
21、41 第1シフトセレクタ(第1セレクタ)
22 第2シフトセレクタ(第2セレクタ)
30 シフト制御部

Claims (6)

  1. 所定ビット数の入力ビット列に含まれる複数の入力ビット群を、ビット群単位で並び替えて、前記所定ビット数の出力ビット列に含まれる複数の出力ビット群として出力するシフト回路であって、
    前記複数の出力ビット群の出力ビット位置に対応して設けられた複数のシフト部を有し、
    前記複数のシフト部のそれぞれは、
    前記入力ビット列から、該シフト部の前記出力ビット位置から出力する対象入力ビット群及び前記対象入力ビット群に隣接する隣接ビット群を含むサブビット列を、前記サブビット列の一方の端が該シフト部の前記出力ビット位置の一方の端に一致するように選択する第1セレクタと、
    前記第1セレクタが選択した前記サブビット列に含まれる前記対象入力ビット群を、前記対象入力ビット群の一方の端が該シフト部の前記出力ビット位置の一方の端に一致するように、第1方向に1ビット単位でシフトする第2セレクタと、を有する、ことを特徴とするシフト回路。
  2. 前記第1セレクタは、
    シフト方向を示すシフト方向信号が、前記シフト部の前記出力ビット位置に対して上位ビット側と下位ビット側の何れか一方の側に位置する前記対象入力ビット群を前記第1方向にシフトすること示す第1方向シフト時には、前記対象入力ビット群及び前記隣接ビット群を含む前記サブビット列を、前記第1方向にシフトし、
    前記シフト方向信号が、前記対象入力ビット群を前記第1方向と逆の第2方向にシフトすること示す第2方向シフト時には、前記対象入力ビット群及び前記隣接ビット群を含む前記サブビット列を、前記第2方向にシフトし、
    前記第1方向シフト時に、前記シフト部により前記第1方向にシフトされた前記対象入力ビット群の一方の端が前記シフト部の前記出力ビット位置の一方の端に一致する場合に、前記隣接ビット群は、前記対象入力ビット群の前記第2方向側に位置し、
    前記第2方向シフト時に、前記シフト部により前記第2方向にシフトされた前記対象入力ビット群の一方の端が前記シフト部の前記出力ビット位置の一方の端に一致する場合に、前記隣接ビット群は、前記対象入力ビット群の前記第1方向側に位置する、
    ように前記サブビット列を選択する、請求項1に記載のシフト回路。
  3. 前記第2セレクタは、
    前記第1方向シフト時に、前記対象入力ビット群の位置と前記シフト部の前記出力ビット位置の差を、前記入力ビット群のビット数の1/2で除算した剰余ビット数分前記入力ビット群を前記第1方向にシフトし、
    前記第2方向シフト時に、前記対象入力ビット群の位置と前記シフト部の前記出力ビット位置の差を、前記入力ビット群のビット数の1/2で除算した剰余ビット数の2の補数分前記入力ビット群をシフトする、請求項2に記載のシフト回路。
  4. 前記入力ビット群及び前記出力ビット群は、連続した偶数ビットを含み、
    前記隣接ビット群のビット数は、前記入力ビット群及び前記出力ビット群のビット数の半分である、請求項1〜3の何れか1項に記載のシフト回路。
  5. 前記第1セレクタは、前記入力ビット列からN/2ビット分を選択する3個の第1シフトセレクタを有し、合わせて3N/2ビット分を選択し、
    前記第2セレクタは、前記第1セレクタの出力する3N/2ビットからNビットを選択する第2シフトセレクタを有する、請求項4に記載のシフト回路。
  6. 所定ビット数の入力ビット列に含まれる複数のデータを並び替えて前記所定ビット数の出力ビット列として出力するシフト回路と、
    前記シフト回路の出力する前記出力ビット列に含まれる並び替えられた前記複数のデータを処理する演算回路と、を有する演算装置であって、
    前記シフト回路は、前記複数のデータに対応する複数の入力ビット群を、ビット群単位で並び替えて、前記出力ビット列に含まれる複数の出力ビット群として出力し、
    前記シフト回路は、前記複数の出力ビット群の出力ビット位置に対応して設けられた複数のシフト部を有し、
    前記複数のシフト部のそれぞれは、
    前記入力ビット列から、該シフト部の前記出力ビット位置から出力する対象入力ビット群及び前記対象入力ビット群に隣接する隣接ビット群を含むサブビット列を、前記サブビット列の一方の端が該シフト部の前記出力ビット位置の一方の端に一致するように選択する第1セレクタと、
    前記第1セレクタが選択した前記サブビット列に含まれる前記対象入力ビット群を、前記対象入力ビット群の一方の端が該シフト部の前記出力ビット位置の一方の端に一致するように、第1方向に1ビット単位でシフトする第2セレクタと、を有する、ことを特徴とする演算装置。
JP2014088260A 2014-04-22 2014-04-22 シフト回路及び演算装置 Expired - Fee Related JP6260429B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014088260A JP6260429B2 (ja) 2014-04-22 2014-04-22 シフト回路及び演算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014088260A JP6260429B2 (ja) 2014-04-22 2014-04-22 シフト回路及び演算装置

Publications (2)

Publication Number Publication Date
JP2015207203A JP2015207203A (ja) 2015-11-19
JP6260429B2 true JP6260429B2 (ja) 2018-01-17

Family

ID=54603947

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014088260A Expired - Fee Related JP6260429B2 (ja) 2014-04-22 2014-04-22 シフト回路及び演算装置

Country Status (1)

Country Link
JP (1) JP6260429B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101975576B1 (ko) * 2017-07-24 2019-05-07 주식회사 리베르곤 복수의 제어 대상을 제어하는 제어 장치
GB2608107B (en) 2021-06-18 2023-06-14 Imagination Tech Ltd Mapping multi-dimensional coordinates to a 1D space
CN114217857B (zh) * 2022-02-21 2022-06-07 深圳云豹智能有限公司 一种数据处理电路、系统及数据处理方法
CN114217858B (zh) * 2022-02-21 2022-06-07 深圳云豹智能有限公司 一种数据处理电路、系统及数据处理方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59195741A (ja) * 1983-04-22 1984-11-06 Nec Corp シフタ回路
JPS63244227A (ja) * 1987-03-31 1988-10-11 Toshiba Corp 演算装置

Also Published As

Publication number Publication date
JP2015207203A (ja) 2015-11-19

Similar Documents

Publication Publication Date Title
JP6260429B2 (ja) シフト回路及び演算装置
US4085447A (en) Right justified mask transfer apparatus
KR100818011B1 (ko) 연산 처리 장치, 정보 처리 장치, 및 연산 처리 방법
EP1983434B1 (en) Parity generating circuit, arrangement circuit for parity generating circuit, information processing apparatus, and encoder
US8661072B2 (en) Shared parallel adder tree for executing multiple different population count operations
CN1826580A (zh) 具有初步饱和检测的加法或者减法运算单元
WO1999066423A1 (fr) Dispositif pour calcul de donnees
WO2018057111A1 (en) Distributed double-precision floating-point multiplication
CN110688094A (zh) 一种基于并行循环压缩的余数运算电路及方法
CN103856211B (zh) 计数器、计数方法和分频器
JP4567753B2 (ja) パリティ生成回路、計数回路および計数方法
JPH0697431B2 (ja) バレルシフタ
EP0849662A2 (en) Arithmetic operation and rounding system
US8892623B2 (en) Data processing apparatus and method
KR100513160B1 (ko) 감소된 면적을 갖는 캐리 예측 가산기
Jaberipur et al. $(4+ 2\log n)\Delta G $ Parallel Prefix Modulo-$(2^ n-3) $ Adder via Double Representation of Residues in [0, 2]
KR102182299B1 (ko) 시프트 연산 장치 및 그의 동작 방법
CN109977701B (zh) 一种定浮点运算装置
JP2015026341A (ja) 論理演算装置
US8933731B2 (en) Binary adder and multiplier circuit
JP4057876B2 (ja) ガロア体掛け算器の制御方法
EP3528107B1 (en) Increment/decrement apparatus and method
KR100506470B1 (ko) 평방근의 역수 계산 방법, 계산 회로, 및 기록매체
CN114895868B (zh) 基于两位商计算的除法运算单元及除法器
JP5116499B2 (ja) 演算処理回路

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

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171017

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171031

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171127

R150 Certificate of patent or registration of utility model

Ref document number: 6260429

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees