JP2017199167A - 半導体装置 - Google Patents
半導体装置 Download PDFInfo
- Publication number
- JP2017199167A JP2017199167A JP2016088679A JP2016088679A JP2017199167A JP 2017199167 A JP2017199167 A JP 2017199167A JP 2016088679 A JP2016088679 A JP 2016088679A JP 2016088679 A JP2016088679 A JP 2016088679A JP 2017199167 A JP2017199167 A JP 2017199167A
- Authority
- JP
- Japan
- Prior art keywords
- type data
- storage means
- floating point
- integer
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/485—Adding; Subtracting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
- G06F5/012—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising in floating-point computations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F5/00—Methods or arrangements for data conversion without changing the order or content of the data handled
- G06F5/01—Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
- G06F7/487—Multiplying; Dividing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/14—Conversion to or from non-weighted codes
- H03M7/24—Conversion to or from floating-point codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/28—Programmable structures, i.e. where the code converter contains apparatus which is operator-changeable to modify the conversion process
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Nonlinear Science (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Advance Control (AREA)
Abstract
【課題】浮動小数点型データと整数型データとの数型変換演算処理をソフトウェアで実施すると、CPUへの負荷が大きくなる。【解決手段】半導体装置は、メモリと、前記メモリと接続されるバスと、前記バスに接続されるバスマスタと、前記バスに接続される変換演算回路と、を備える。前記変換演算回路は浮動小数点型データの加減算器と整数型データの加減算器とシフト演算器とを備え、浮動小数点型データの乗算器および除算器を用いないで浮動小数点型データを整数型データに変換演算し、または、整数型データを浮動小数点型データに変換演算する。【選択図】図17
Description
本開示は半導体装置に関し、例えば浮動小数点演算機能を内蔵する半導体装置に適用可能である。
車載エンジンの制御等に用いられる電子制御装置においても、各種演算の実行に、整数型データ(固定小数点型データ)を用いる代わりに、浮動小数点型データを用いるタイプのものがある(例えば、米国特許出願公開第2004/186866号明細書)。この浮動小数点型データを用いることにより、整数型データを用いたものと比較して、より高精度な演算を行うことができるようになる。
浮動小数点型データと整数型データとの数型変換演算処理をソフトウェア(中央処理装置(CPU)によるプログラムの実行)で実施すると、CPUへの負荷が大きくなる。一方、専用の浮動小数点演算プロセッサを用いると回路規模が大きくなる。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
本開示のうち、代表的なものの概要を簡単に説明すれば、下記のとおりである。
すなわち、半導体装置に搭載される変換演算回路は、浮動小数点型データの加減算器と整数型データの加減算器とシフト演算器とを備え、浮動小数点型データの乗算器および除算器を用いないで浮動小数点型データを整数型データに変換演算し、または、整数型データを浮動小数点型データに変換演算する。
すなわち、半導体装置に搭載される変換演算回路は、浮動小数点型データの加減算器と整数型データの加減算器とシフト演算器とを備え、浮動小数点型データの乗算器および除算器を用いないで浮動小数点型データを整数型データに変換演算し、または、整数型データを浮動小数点型データに変換演算する。
上記半導体装置によれば、CPUの負荷を低減することができる。
以下、比較例、実施形態および実施例について、図面を用いて説明する。ただし、以下の説明において、同一構成要素には同一符号を付し繰り返しの説明を省略することがある。
アプリケーションによっては変数を浮動小数点型データで持つことが多いが、浮動小数点型データの表現可能な値に対して実際にとりうる値は限定的である。例えば温度センサは外気温を表現するのに浮動小数点型データを使用しているが、実際に取りうる値の範囲は−273℃〜1,200℃である。これをそのまま通信回路(CAN(Controller Area Network)、I2C(Inter-Integrated Circuit)、SPI(Serial Peripheral Interface)、Ethernet等)で扱うには通信レイテンシが悪い。よって、浮動小数点型データ(float)を符号なし整数型データ(uint)に変換することでデータを圧縮し、信号の精度が下がることを引き換えに通信レイテンシを向上させることを検討した。
まず、浮動小数点型データのフォーマットについて図1を用いて説明する。図1はIEEE754規格の単精度記憶形式の浮動小数点型データのフォーマットを示す図である。単精度記憶形式のデータは、4バイトからなり、1ビットの符号部(S)と、8ビットの指数部(E)と、23ビットの仮数部(M)とを有している。これにより、表される値は、
(−1)S×2(E−127)×(1+M)
である。ここで、Mは小数点以下の数である。仮数部が23ビットで構成されるため、この浮動小数点型データを用いることで、「1/223≒0.0000001」の精度、すなわち小数点以下7桁の精度で演算が実施されることとなる。
(−1)S×2(E−127)×(1+M)
である。ここで、Mは小数点以下の数である。仮数部が23ビットで構成されるため、この浮動小数点型データを用いることで、「1/223≒0.0000001」の精度、すなわち小数点以下7桁の精度で演算が実施されることとなる。
次に、本願発明者が検討した(以下、「比較例」という。)浮動小数点型データと符号なし整数型データとの数型変換演算処理(以下、「変換演算」という。)について図2〜9を用いて説明する。浮動小数点型データから符号なし整数型データへの変換を「圧縮」といい、符号なし整数型データから浮動小数点型データへの演算変換を「解凍」という。図2は比較例に係る変換演算の概念を示す図である。図3、4は圧縮演算の具体例を説明するための図である。図5、6は解凍演算の具体例を説明するための図である。
<変換演算の概念>
図1に示すように、浮動小数点型データは32ビット長である。この浮動小数点型データをfloat32とする。float32とnビット長の符号なし整数型データ(unitn)と変換演算を行う。図2ではn=8の場合が示されているが、n=1〜32の範囲で可変である。ただし、データを圧縮する観点からはnは小さいほどよく、精度の観点からはnは大きいほどよい。
図1に示すように、浮動小数点型データは32ビット長である。この浮動小数点型データをfloat32とする。float32とnビット長の符号なし整数型データ(unitn)と変換演算を行う。図2ではn=8の場合が示されているが、n=1〜32の範囲で可変である。ただし、データを圧縮する観点からはnは小さいほどよく、精度の観点からはnは大きいほどよい。
浮動小数点型データ(float32)の最大値(Signalの最大値)をSignalMAXとし、浮動小数点型データの最小値(Signalの最小値)をSignalMINとする。unitnの最大値は2n−1で、最小値は0である。
<初期定義>
まず、Signalの最小値をOffsetとする。
Offset=SignalMIN
次に、Signalの取りうる値の範囲をRangeとする。
Range=SignalMAX−SignalMIN
最後に、Rangeを2のn乗で割り、Lsbとする。
Lsb=Range/2n
例えば、重みを0〜255とするのであれば、nは8である。以下、n=8の場合について説明する。初期定義は、圧縮演算(float32のSignalをunit8のU1に変換する場合)と解凍演算(unit8のU1をfloat32のSignalに変換する場合)とで共通である。
まず、Signalの最小値をOffsetとする。
Offset=SignalMIN
次に、Signalの取りうる値の範囲をRangeとする。
Range=SignalMAX−SignalMIN
最後に、Rangeを2のn乗で割り、Lsbとする。
Lsb=Range/2n
例えば、重みを0〜255とするのであれば、nは8である。以下、n=8の場合について説明する。初期定義は、圧縮演算(float32のSignalをunit8のU1に変換する場合)と解凍演算(unit8のU1をfloat32のSignalに変換する場合)とで共通である。
float32のSignalをunit8のU1に変換する場合は、まず、SignalをOffsetで引き、Lsbで割り、これをF4とする。
F4=(Signal−Offset)/Lsb
F4は必ず0〜255の値に収まる。次に、浮動小数点数のF4を整数のU1に変換する。
U1=(unit8)F4
unit8のU1をfloat32のSignalに変換する場合は、まず、整数のU1を浮動小数点数のF4に変換する。
F4=(float)U1
次に、F4にLsbを掛け、Offsetを足すとSignalとなる。
Signal=(F4*Lsb)+Offset
<float32⇒unit8の具体例>
(OffsetとLsbの準備)
図3に示すように、Signal(float32)に関して、最小値“-273(d)”、最大値“120,000(d)”の場合、ステップS1により“最小値”を“Offset”として、ステップS2、S3により“取り得る範囲の絶対値(Range)/256”を“Lsb”として、データテーブル内に準備する。ここで、Offset=SignalMIN=-273(d)、Range=SignalMAX−SignalMIN=120,273(d)、Lsb=Range/256=469.8…である。なお、(d)はこの前の数が10進数であることを示している。
F4=(Signal−Offset)/Lsb
F4は必ず0〜255の値に収まる。次に、浮動小数点数のF4を整数のU1に変換する。
U1=(unit8)F4
unit8のU1をfloat32のSignalに変換する場合は、まず、整数のU1を浮動小数点数のF4に変換する。
F4=(float)U1
次に、F4にLsbを掛け、Offsetを足すとSignalとなる。
Signal=(F4*Lsb)+Offset
<float32⇒unit8の具体例>
(OffsetとLsbの準備)
図3に示すように、Signal(float32)に関して、最小値“-273(d)”、最大値“120,000(d)”の場合、ステップS1により“最小値”を“Offset”として、ステップS2、S3により“取り得る範囲の絶対値(Range)/256”を“Lsb”として、データテーブル内に準備する。ここで、Offset=SignalMIN=-273(d)、Range=SignalMAX−SignalMIN=120,273(d)、Lsb=Range/256=469.8…である。なお、(d)はこの前の数が10進数であることを示している。
(圧縮)
図4に示すように、浮動小数点型データ(Signal(float32))の値(Value)を“16,500.52”とすると、データテーブルからLsbおよびOffsetを取得し、ステップS111によりValueからOffsetを減算して(Sub(Value-Offset))、Sub=16,773.52を得る。ステップS112によりSubをLsbで除算して(Div(Sub/Lsb))、Div=35.7022…を得る。ステップS12によりDivの小数点以下を切り捨てて整数に変換して(Int(Div))、Int=35(unit8)を得る。
図4に示すように、浮動小数点型データ(Signal(float32))の値(Value)を“16,500.52”とすると、データテーブルからLsbおよびOffsetを取得し、ステップS111によりValueからOffsetを減算して(Sub(Value-Offset))、Sub=16,773.52を得る。ステップS112によりSubをLsbで除算して(Div(Sub/Lsb))、Div=35.7022…を得る。ステップS12によりDivの小数点以下を切り捨てて整数に変換して(Int(Div))、Int=35(unit8)を得る。
<unit8⇒float32の具体例>
(OffsetとLsbの準備)
図5に示すように、Signal(float32)に関して、最小値“3億(d)”、最大値“3億7千(d)”の場合、ステップS1により“最小値”を“Offset”として、ステップS2、S3により“取り得る範囲の絶対値(Range)/256”を“Lsb”として、データテーブル内に準備する。ここで、Offset=SignalMIN=3000,000,000(d)、Range=SignalMAX−SignalMIN=7000(d)、Lsb=Range/256=27.3…である。
(OffsetとLsbの準備)
図5に示すように、Signal(float32)に関して、最小値“3億(d)”、最大値“3億7千(d)”の場合、ステップS1により“最小値”を“Offset”として、ステップS2、S3により“取り得る範囲の絶対値(Range)/256”を“Lsb”として、データテーブル内に準備する。ここで、Offset=SignalMIN=3000,000,000(d)、Range=SignalMAX−SignalMIN=7000(d)、Lsb=Range/256=27.3…である。
(解凍)
図6に示すように、整数データ(Int(unit8))の値(Int)を“91”とすると、ステップS21により単精度浮動小数点に変換して(Cast(float32))、Cast=91を得る。ステップS221によりCastにLsbを乗算して(Mul(Cast*Lsb))、Mul=2488.28125を得る。ステップS222によりMulにOffsetを加算して(Add(Mul+Offset))、Add=300,002,488.28125を得る。これにより、単精度浮動小数点データ(Signal(float32))を得る。
図6に示すように、整数データ(Int(unit8))の値(Int)を“91”とすると、ステップS21により単精度浮動小数点に変換して(Cast(float32))、Cast=91を得る。ステップS221によりCastにLsbを乗算して(Mul(Cast*Lsb))、Mul=2488.28125を得る。ステップS222によりMulにOffsetを加算して(Add(Mul+Offset))、Add=300,002,488.28125を得る。これにより、単精度浮動小数点データ(Signal(float32))を得る。
次に、変換演算を行うマイクロコントローラの構成について図7、8を用いて説明する。図7は専用の浮動小数点演算プロセッサを有さないマイクロコントローラの構成を示すブロック図である。図8は専用の浮動小数点演算プロセッサを有するマイクロコントローラの構成を示すブロック図である。
図7のマイクロコントローラ10Rは中央処理装置(CPU)11とデータ転送装置/ダイレクトメモリアクセス制御装置(DTC/DMAC)12とランダムアクセスメモリ(RAM)13とフラッシュメモリ(FLASH)14とアナログ/デジタル変換回路(ADC)15と通信回路16とバス17とを備える。上記変換演算のプログラムやデータテーブルはFLASH14に格納される。上記変換演算はCPU11がFLASH14に格納されたプログラムを読み出して実行し、変換演算のデータはRAM13に格納される。
図8のマイクロコントローラ10Sは中央処理装置(CPU)11とデータ転送装置/ダイレクトメモリアクセス制御装置(DTC/DMAC)12とランダムアクセスメモリ(RAM)13とフラッシュメモリ(FLASH)14とアナログ/デジタル変換回路(ADC)15と通信回路16とバス17と浮動小数点演算プロセッサ(FPU)18Sを備える。上記変換演算のプログラムやデータテーブルはFLASH14に格納される。FPU17SがFLASH14に格納されたプログラムを読み出して実行し(またはCPU11がFLASH14に格納されたプログラムを読み出してFPU18Sに実行させて)、変換演算のデータはRAM13に格納される。
上述したように、比較例に係る変換演算では、浮動小数点型データの除算および乗算が必要である。この浮動小数点型データの除算および乗算をマイクロコントローラ10RのCPU11で実施すると、CPU11への負荷が大きくなる。一方、マイクロコントローラ10Sの除算器および乗算器を有するFPU18Sで実施するようにすると回路規模が大きくなる。
<実施形態>
実施形態に係る変換演算について図9〜12を用いて説明する。図9は圧縮演算のアルゴリズムを説明するための図である。図10は圧縮演算を説明するためのフローチャートである。図11は解凍演算のアルゴリズムを説明するための図である。図12は解凍演算を説明するためのフローチャートである。
実施形態に係る変換演算について図9〜12を用いて説明する。図9は圧縮演算のアルゴリズムを説明するための図である。図10は圧縮演算を説明するためのフローチャートである。図11は解凍演算のアルゴリズムを説明するための図である。図12は解凍演算を説明するためのフローチャートである。
(圧縮演算)
浮動小数点数を整数に変換する際には中間値との比較を繰り返す、二分法を用いる。
浮動小数点数を整数に変換する際には中間値との比較を繰り返す、二分法を用いる。
まず、Signalの最大値(SignalMAX)とSignalの最小値(SignalMIN)との中間値を計算する。
ステップS31:変換対象データのSignalをSigに入れ、SignalMAXをMaxに入れ、SignalMINをMinに入れる。整数のビット位置を示すn−1をiに入れる。iは繰り返し回数も表している。
ステップS32:MaxとMinの中間値を計算し、Midに入れる。中間値は浮動小数点型データの減算と指数部の減算で行うことができる。
ステップS31:変換対象データのSignalをSigに入れ、SignalMAXをMaxに入れ、SignalMINをMinに入れる。整数のビット位置を示すn−1をiに入れる。iは繰り返し回数も表している。
ステップS32:MaxとMinの中間値を計算し、Midに入れる。中間値は浮動小数点型データの減算と指数部の減算で行うことができる。
次に、Signalが中間値よりも大きければIntのビットを“1”にし、Signalが中間値よりも小さければIntのビットを“0”にする。図9では1回目はSignalが中間値よりも大きい場合、2回目はSignalが中間値よりも小さい場合が示されている。
ステップS33:SigがMidよりも大きいかどうかを判断する。YESの場合はステップS34に移動し、NOの場合はステップS36に移動する。
ステップS34:Intのn−1ビット目に“1”をセットする。2回目のときはn−2ビット目に“1”をセットする。以下、同様にして、n回目のときは0ビット目に“1”をセットする。
ステップS35:MinにMidの内容を入れる。
ステップS36:Intのn−1ビット目に“0”をセットする。2回目のときはn−2ビット目に“0”をセットする。以下、同様にして、n回目のときは0ビット目に“0”をセットする。
ステップS37:MaxにMidの内容を入れる。
ステップS38:iの内容を1つ小さくする。
ステップS33:SigがMidよりも大きいかどうかを判断する。YESの場合はステップS34に移動し、NOの場合はステップS36に移動する。
ステップS34:Intのn−1ビット目に“1”をセットする。2回目のときはn−2ビット目に“1”をセットする。以下、同様にして、n回目のときは0ビット目に“1”をセットする。
ステップS35:MinにMidの内容を入れる。
ステップS36:Intのn−1ビット目に“0”をセットする。2回目のときはn−2ビット目に“0”をセットする。以下、同様にして、n回目のときは0ビット目に“0”をセットする。
ステップS37:MaxにMidの内容を入れる。
ステップS38:iの内容を1つ小さくする。
次に、上記処理をn回繰り返してfloatをunitnに変換する。
ステップS39:所定回数(n回)繰り返したか(i<0)どうかを判断する。YESの場合は終了し、NOの場合はステップS32に移動する。
ステップS39:所定回数(n回)繰り返したか(i<0)どうかを判断する。YESの場合は終了し、NOの場合はステップS32に移動する。
(解凍演算)
整数を浮動小数点数に変換する際には中間値の加算を繰り返す、演算法を用いる。
整数を浮動小数点数に変換する際には中間値の加算を繰り返す、演算法を用いる。
まず、Signalの最大値(SignalMAX)とSignalの最小値(SignalMIN)との中間値を計算する。
ステップS41:SignalMAXをMaxに入れ、SignalMINをMinに入れる。整数のビット位置を示すn−1をiに入れる。iは繰り返し回数も表している。
ステップS42:MaxとMinの中間値を計算し、Midに入れる。中間値は浮動小数点型データの減算と指数部の減算で行うことができる。
ステップS41:SignalMAXをMaxに入れ、SignalMINをMinに入れる。整数のビット位置を示すn−1をiに入れる。iは繰り返し回数も表している。
ステップS42:MaxとMinの中間値を計算し、Midに入れる。中間値は浮動小数点型データの減算と指数部の減算で行うことができる。
次に、Intのビットが“1”であれば、Midの値をSigに加算し、Intのビットが“0”であれば、Midの値をSigに加算しない。
ステップS43:Intのn−1ビット目が“1”であるかどうかを判断する。YESの場合はステップS44に移動し、NOの場合はステップS45に移動する。
ステップS44:SigにMidの値を加算する。
ステップS45:MaxにMidの内容を入れる。
ステップS46:iの内容を1つ小さくする。
ステップS43:Intのn−1ビット目が“1”であるかどうかを判断する。YESの場合はステップS44に移動し、NOの場合はステップS45に移動する。
ステップS44:SigにMidの値を加算する。
ステップS45:MaxにMidの内容を入れる。
ステップS46:iの内容を1つ小さくする。
次に、上記処理をn回繰り返してunitnをfloatに変換する。
ステップS47:所定回数(n回)繰り返したか(i<0)どうかを判断する。YESの場合は終了し、NOの場合はステップS42に移動する。
ステップS47:所定回数(n回)繰り返したか(i<0)どうかを判断する。YESの場合は終了し、NOの場合はステップS42に移動する。
実施形態に係る変換演算では、比較例のような浮動小数点型データの除算および乗算を行う必要がない。これにより、マイクロコントローラ10RのCPU11で実施する場合、CPU11の負荷を低減することが可能となる。また、マイクロコントローラ10SのFPU18Sの代わりに除算器および乗算器を有しない変換演算回路を用いることにより、回路規模の増大を抑えることができる。
<変形形態1>
次に、変形形態1に係る変換演算について図13、14を用いて説明する。図13は圧縮演算のアルゴリズムを説明するための図である。図14は解凍演算のアルゴリズムを説明するための図である。
次に、変形形態1に係る変換演算について図13、14を用いて説明する。図13は圧縮演算のアルゴリズムを説明するための図である。図14は解凍演算のアルゴリズムを説明するための図である。
変形形態1に係る変換演算は、の実施形態の初期定義と同様なOffsetとLsbとを用いた2分法である。OffsetとLsbを以下のように定義する。
Offset=SignalMIN
Range=SignalMAX−SignalMIN=SignalMAX−Offset
Lsb=Range/2n
ここで、浮動小数点型データ(float32)の最大値(Signalの最大値)がSignalMAXであり、浮動小数点型データの最小値(Signalの最小値)がSignalMINである。
Offset=SignalMIN
Range=SignalMAX−SignalMIN=SignalMAX−Offset
Lsb=Range/2n
ここで、浮動小数点型データ(float32)の最大値(Signalの最大値)がSignalMAXであり、浮動小数点型データの最小値(Signalの最小値)がSignalMINである。
(圧縮演算)
XnをRangeとし、
Xn-1=Xn/2=Xn×2−1、
Xn-2=Xn-1/2=Xn/4=Xn×2−2、
・・・、
X1=Xn×2−(n−1) 、
X0=Xn×2−n
とする。Xn-1はXnと0との間の中間値であり、Xn-2はXn-1と0との間の中間値である。ここで、Xn=Range=Lsb×2n(Xnの指数部はLsbの指数部+n)であるので、
Xn-1=Lsb×2n−1(Xn-1の指数部はLsbの指数部+n−1)、
Xn-2=Lsb×2n−2(Xn-2の指数部はLsbの指数部+n−2)、
・・・、
X1=Lsb×21(X1の指数部はLsbの指数部+1)、
X0=Lsb×20=Lsb
となる。最初の比較に用いる中間値はXn-1=Lsb×2n−1となり、最後の比較に用いる中間値はX0=Lsbとなる。
XnをRangeとし、
Xn-1=Xn/2=Xn×2−1、
Xn-2=Xn-1/2=Xn/4=Xn×2−2、
・・・、
X1=Xn×2−(n−1) 、
X0=Xn×2−n
とする。Xn-1はXnと0との間の中間値であり、Xn-2はXn-1と0との間の中間値である。ここで、Xn=Range=Lsb×2n(Xnの指数部はLsbの指数部+n)であるので、
Xn-1=Lsb×2n−1(Xn-1の指数部はLsbの指数部+n−1)、
Xn-2=Lsb×2n−2(Xn-2の指数部はLsbの指数部+n−2)、
・・・、
X1=Lsb×21(X1の指数部はLsbの指数部+1)、
X0=Lsb×20=Lsb
となる。最初の比較に用いる中間値はXn-1=Lsb×2n−1となり、最後の比較に用いる中間値はX0=Lsbとなる。
変換対象のSignalもOffsetを引いて用いる。これをO_Signal(=Signal−Offset)とする。
i=n−1の場合:Xn-1とO_Signalとを比較し、Xn-1がO_Signal以下であるときはIntのn−1ビット目に“1”をセットし、O_SignalからXn-1を引いた値をO-Signalとする。Xn-1がO-Signalより大きいときはIntのn−1ビット目に“0”をセットする。
i=n−2の場合:Xn-2とO_Signalとを比較し、Xn-2がO_Signal以下であるときはIntのn−2ビット目に“1”をセットし、O_SignalからXn-2を引いた値をO-Signalとする。Xn-2がO_Signalより大きいときはIntのn−2ビット目に“0”をセットする。
以下、iを1つずつ引いて同様に演算する。
i=1の場合:X1とO_Signalとを比較し、X1がO_Signal以下であるときはIntの1ビット目に“1”をセットし、O_SignalからX1を引いた値をO_Signalとする。X1がO-Signalより大きいときはIntの1ビット目に“0”をセットする。
i=0の場合:X0とO_Signalとを比較し、X0がO_Signal以下であるときはIntの0ビット目に“1”をセットし、O_SignalからX0を引いた値をO_Signalとする。X0がO_Signalより大きいときはIntの0ビット目に“0”をセットする。
iが負数になったら演算を終了する。Intには変換された整数が格納される。これにより、中間値を求める演算が実施形態よりも簡単になる。
(解凍演算)
整数(unit)にLsb(float)を掛けることにより、整数型データ(unit)を浮動小数点型データ(float)に変換することができる。浮動小数点の乗算を用いないで、整数(unit8)から浮動小数点(float32)への変換を例にして以下説明する。
整数(unit)にLsb(float)を掛けることにより、整数型データ(unit)を浮動小数点型データ(float)に変換することができる。浮動小数点の乗算を用いないで、整数(unit8)から浮動小数点(float32)への変換を例にして以下説明する。
まず、Lsb(float)を指数と仮数に分解する。
signal(float32)=unit8×Lsb(float32)
signal(float32)=unit8×符号×2(指数−127)×(1.仮数)
なお、IEEE754規格の単精度記憶形式の浮動小数点型データは、
(−1)符号×2(指数−127)×(1.仮数)
である。
signal(float32)=unit8×Lsb(float32)
signal(float32)=unit8×符号×2(指数−127)×(1.仮数)
なお、IEEE754規格の単精度記憶形式の浮動小数点型データは、
(−1)符号×2(指数−127)×(1.仮数)
である。
次に、仮数を整数(仮整数)に変換する。
符号×signal(float32)=unit8×仮整数(24ビット)×2−23×2(指数−127)
これは指数のシフト演算で行うことができる。
符号×signal(float32)=unit8×仮整数(24ビット)×2−23×2(指数−127)
これは指数のシフト演算で行うことができる。
次に、整数(unit)と仮整数を掛ける。
符号×signal(float32)=unit32×2(指数−23−127)
これは整数の乗算で行うものである。
符号×signal(float32)=unit32×2(指数−23−127)
これは整数の乗算で行うものである。
次に、掛け算した値を仮数に変換する。
符号×signal(float32)=unit24×2(シフトした数)×2(指数−23−127)
ここで、unit24は最上位の1の位置までシフトしたものである。これは指数のシフト演算で行うことができる。
符号×signal(float32)=unit24×2(シフトした数)×2(指数−23−127)
ここで、unit24は最上位の1の位置までシフトしたものである。これは指数のシフト演算で行うことができる。
最後に、仮数と指数で求めたい値(float)となる。
符号×signal(float32)=(1.仮数)×2(指数−127)
signal(float32)=符号×2(指数−127)×(1.仮数)
ここで、仮数はunit24の下位23ビットである。指数は(最初の指数−23−シフトした数)である。変形形態1に係る変換演算では、実施形態と同様に、比較例のような浮動小数点型データの除算および乗算を行う必要がない。
符号×signal(float32)=(1.仮数)×2(指数−127)
signal(float32)=符号×2(指数−127)×(1.仮数)
ここで、仮数はunit24の下位23ビットである。指数は(最初の指数−23−シフトした数)である。変形形態1に係る変換演算では、実施形態と同様に、比較例のような浮動小数点型データの除算および乗算を行う必要がない。
<変形形態2>
次に、変形形態2に係る変換演算について図15を用いて説明する。図15は圧縮演算のアルゴリズムを説明するための図である。
次に、変形形態2に係る変換演算について図15を用いて説明する。図15は圧縮演算のアルゴリズムを説明するための図である。
変形形態2に係る変換演算は、Xi(i=0〜n−1)がO_Signalと一致した場合に演算を終了する点を除いて、図13の圧縮演算のアルゴリズムと同様である。
i=n−1の場合:Xn-1とO-Signalとを比較し、Xn-1がO_Signalと同じであるときはIntのn−1ビット目に“1”をセットし、n−2ビット以下をすべて“0”にして演算を終了する。Xn-1がO_Signalより小さいときはIntのn−1ビット目に“1”をセットし、O_SignalからXn-1を引いた値をO_Signalとする。Xn-1がO_Signalより大きいときはIntのn−1ビット目に“0”をセットする。
i=n−2の場合:Xn-2とO_Signalとを比較し、Xn-2がO_Signalと同じであるときはIntのn−2ビット目に“1”をセットし、n−3ビット以下をすべて“0”にして演算を終了する。Xn-2がO_Signalより小さいときはIntのn−2ビット目に“1”をセットし、O_SignalからXn-2を引いた値をO_Signalとする。Xn-2がO_Signalより大きいときはIntのn−2ビット目に“0”をセットする。
以下、iを1つずつ引いて同様に演算する。
i=1の場合:X1とO_Signalとを比較し、X1がO_Signalと同じであるときはIntの1ビット目に“1”をセットし、0ビット目に“0”をセットして演算を終了する。X1がO_Signalより小さいときはIntの1ビット目に“1”をセットし、O_SignalからX1を引いた値をO_Signalとする。X1がO_Signalより大きいときはIntの1ビット目に“0”をセットする。
i=0の場合:X0とO_Signalとを比較し、X0がO_Signalと同じであるときはIntの1ビット目に“1”をセットして演算を終了する。X0がO_Signalより小さいときはIntの0ビット目に“1”をセットし、O_SignalからX0を引いた値をO_Signalとする。X0がO_Signalより大きいときはIntの0ビット目に“0”をセットする。
iが負数になったら演算を終了する。Intには変換された整数が格納される。変形形態2に係る変換演算では、実施形態と同様に、比較例のような浮動小数点型データの除算および乗算を行う必要がない。
実施例1に係るシステムについて図16を用いて説明する。図16は実施例1に係るシステムの構成を示すブロック図である。
実施例1に係るシステム1はマイクロコントローラ10とセンサ30とマイクロコントローラ20とを備える。マイクロコントローラ10は中央処理装置(CPU)11とデータ転送装置/ダイレクトメモリアクセス制御装置(DTC/DMAC)12とランダムアクセスメモリ(RAM)13とフラッシュメモリ(FLASH)14とアナログ/デジタル変換回路(ADC)15と通信回路16とバス17とを備える。マイクロコントローラ10は1つの半導体チップ(半導体基板)に形成される半導体装置である。実施形態または変形形態1または変形形態2に係る変換演算のプログラムやデータテーブルはFLASH14に格納される。変換演算はCPU11がFLASH14に格納されたプログラムを読み出して実行し、変換演算のデータはRAM13に格納される。CPU11とFLASH14とを含むものを制御装置ともいう。ADC15には温度センサ等のセンサ30が接続される。例えば温度センサで検知した外気温はADC15を介して浮動小数点数型データでRAM12に格納される。通信回路16は、例えばCAN、I2C、SPI、Ethernet等であり、マイクロコントローラ20の通信回路と接続される。例えばCPU11は、RAM13に格納された浮動小数点数型データの外気温を整数型データに変換してRAM13に格納する。CPU11またはDTC/DMAC12はRAM12に格納された整数型データの外気温を通信回路16に送出し、通信回路16は整数型データの外気温をマイクロコントローラ20に送信する。逆に、CPU11またはDTC/DMAC12は、マイクロコントローラ20から通信回路16を介して受信した整数型データをRAM13に格納する。CPU11はRAM13に格納された整数型データの外気温を浮動小数点型データに変換しRAM13に格納する。
実施例1では、実施形態または変形形態1または変形形態2に係る変換演算は浮動小数点型データの除算および乗算が必要ないので、CPUの負荷を低減することができる。また、変換演算のための特別な回路を備えないので、半導体装置の回路規模の増大を抑制することができる。また、浮動小数点型データを符号なし整数型データに変換することでデータを圧縮することにより通信レイテンシを向上させることができる。
実施例2に係るシステムについて図17を用いて説明する。図17は実施例2に係るシステムの構成を示すブロック図である。
実施例2に係るシステム1Aはマイクロコントローラ10Aとセンサ30とマイクロコントローラ20とを備える。マイクロコントローラ10Aは中央処理装置(CPU)11とデータ転送装置/ダイレクトメモリアクセス制御装置(DTC/DMAC)12とランダムアクセスメモリ(RAM)13とフラッシュメモリ(FLASH)14とアナログ/デジタル変換回路(ADC)15と通信回路16とバス17と変換演算回路18Aを備える。マイクロコントローラ10Aは1つの半導体チップ(半導体基板)に形成される半導体装置である。実施形態または変形形態1または変形形態2に係る変換演算は変換演回路18Aで行う。
変換演算回路18Aについて図18〜20を用いて説明する。図18は実施例2に係る変換演算回路の構成を示すブロック図である。図19はディスクリプタの構成を示す図である。図20は動作フローチャートである。
変換演算回路18Aはバススレーブ181とデマルチプレクサ182とレジスタ183とマルチプレクサ184と割り込み制御回路185と演算回路186とを備える。バススレーブ181はバスマスタ112(CPU11またはDTC/DMAC12)からのアクセスのインタフェースであり、後述するディスクリプタがバススレーブ181、デマルチプレクサ182を介してレジスタ183に書き込まれる。レジスタ183の内容および演算回路186の変換演算結果はマルチプレクサ184、バススレーブ181を介して読み出される。割り込み制御回路185はレジスタ183を介して制御情報が書き込まれる。割り込み制御回路185は演算回路186からの変換終了信号および変換エラー信号に基づいてレディ割り込み信号およびエラー割り込み信号を生成する。レディ割り込み信号はDTC/DMAC12に、エラー割り込み信号はCPU11に送られる。
演算回路186はデマルチプレクサ1861と浮動小数点型データ(float)比較器(加減算器)1862と整数型データ(unit)加減算器1863と整数型データ(unit)乗算器1864とシフト演算器1865とマルチプレクサ184とを備える。演算回路186は実施形態、変形形態1および変形形態2の変換演算を行う。なお、実施形態、変形形態1および変形形態2の変換演算のいずれか一つを実施する場合に不要な演算器は備えなくてもよい。
図19に示すように、変換演算回路18Aを実行するためのディスクリプタは“signal_disclip”と“signal_type”と“signal_lsb_float”と“signal_offset_float”とを有する。“signal_disclip”はfloatとunitとの変換選択(圧縮、解凍のいずれかの選択)を指定する。“signal_type”は変換する前の信号の型(浮動小数点、整数のいずれか)とビット長を指定する。“signal_lsb_float”は変換する前のLsbを指定する。“signal_offset_float”は変換前のOffsetを指定する。
ステップS51:バスマスタ112はFLASH14に格納されているディスクリプタをレジスタ183に書き込む。
ステップS52:バスマスタ112はFLASH14に格納されている変換開始のトリガをレジスタ183に書き込む。
ステップS53:バスマスタ112はRAM13に格納されている変換前の信号をレジスタ183に書き込む。
ステップS54:演算回路186はディスクリプタの情報に基づいて変換演算を実行する。
ステップS55:変換終了割り込み要求に応答して、バスマスタ112は演算回路186が変換したデータを読み出し、RAM13に格納する。
ステップS52:バスマスタ112はFLASH14に格納されている変換開始のトリガをレジスタ183に書き込む。
ステップS53:バスマスタ112はRAM13に格納されている変換前の信号をレジスタ183に書き込む。
ステップS54:演算回路186はディスクリプタの情報に基づいて変換演算を実行する。
ステップS55:変換終了割り込み要求に応答して、バスマスタ112は演算回路186が変換したデータを読み出し、RAM13に格納する。
ADC15には温度センサ等のセンサ30が接続される。例えば温度センサで検知した外気温はADC15を介して浮動小数点数型データでRAM12に格納される。通信回路16は、マイクロコントローラ20の通信回路と接続される。例えば変換演算回路18Aは、RAM13に格納された浮動小数点数型データの外気温を整数型データに変換してRAM13に格納する。DTC/DMAC12はRAM12に格納された整数型データの外気温を通信回路16に送出し、通信回路16は整数型データの外気温をマイクロコントローラ20に送信する。逆に、DTC/DMAC12は、マイクロコントローラ20から通信回路16を介して受信した整数型データをRAM13に格納する。変換演算回路18AはRAM13に格納された整数型データの外気温を浮動小数点型データに変換しRAM13に格納する。
実施例2では、実施形態または変形形態1または変形形態2に係る変換演算には浮動小数点型データの除算器および乗算器が必要ないので、変換演算回路の回路規模の増大を抑えることができる。また、変換演算を備えるので、CPUの負荷を低減することができる。また、浮動小数点型データを符号なし整数型データに変換することでデータを圧縮することにより通信レイテンシを向上させることができる。
実施例3に係るシステムについて図21を用いて説明する。図21は実施例3に係るシステムの構成を示すブロック図である。
実施例3に係るシステム1Bはマイクロコントローラ10Bとセンサ30とマイクロコントローラ20とを備える。マイクロコントローラ10Bは中央処理装置(CPU)11とデータ転送装置/ダイレクトメモリアクセス制御装置(DTC/DMAC)12とランダムアクセスメモリ(RAM)13とフラッシュメモリ(FLASH)14とアナログ/デジタル変換回路(ADC)15と通信回路16とバス17と変換演算回路18Bを備える。マイクロコントローラ10Bは1つの半導体チップ(半導体基板)に形成される半導体装置である。実施形態または変形形態1または変形形態2に係る変換演算は変換演算回路18Bで行う。
変換演算回路18Bについて図22〜24を用いて説明する。図22は実施例3に係る変換演算回路の構成を示すブロック図である。図23はディスクリプタの構成を示す図である。図24は動作フローチャートである。
変換演算回路18Bはバススレーブ181とデマルチプレクサ182とレジスタ183とマルチプレクサ184と割り込み制御回路185Bと演算回路186とバスマスタ187とを備える。バススレーブ181はバスマスタ112(CPU11またはDTC/DMAC12)からのアクセスのインタフェースであり、後述する変換開始のトリガがバススレーブ181、デマルチプレクサ182を介してレジスタ183に書き込まれる。レジスタ183の内容および演算回路186の変換演算結果はマルチプレクサ184、バススレーブ181を介して読み出される。割り込み制御回路185Bはレジスタ183を介して制御情報が書き込まれる。割り込み制御回路185は演算回路186からの変換終了信号および変換エラー信号に基づいてレディ割り込み信号およびエラー割り込み信号を生成する。レディ割り込み信号はDTC/DMAC12に、エラー割り込み信号はCPU11に送られる。演算回路186は実施例2と同様である。
バスマスタ187はFLASH14からディスクリプタを読み出して演算回路186に送る。また、演算回路186からの変換演算の結果をディスクリプタで指定された場所(RAM13、通信回路16等)に書き込む。
図23に示すように、変換演算回路18Bを実行するためのディスクリプタは“signal_disclip”と“signal_type” と“signal_from_gram” と“signal_to_gram”と“signal_lsb_float”と“signal_offset_float”とを有する。“signal_disclip”はfloatとunitとの変換選択(圧縮、解凍のいずれかの選択)を指定する。“signal_type”は変換する前の信号の型(浮動小数点、整数のいずれか)とビット長を指定する。“signal_from_gram”は変換前の信号の格納アドレスを指定する。“signal_to_gram”は変換後の信号の格納アドレスを指定する。“signal_lsb_float”は変換する前のLsbを指定する。“signal_offset_float”は変換前のOffsetを指定する。
ステップS61:バスマスタ112はFLASH14に格納されている変換開始のトリガをレジスタ183に書き込む。
ステップS62:変換開始のトリガに基づいてバスマスタ187はFLASH14に格納されているディスクリプタを読み出して演算回路187に送る。
ステップS63:バスマスタ187は、ディスクリプタの内容に基づいた場所に格納されている変換前の信号を読み出して演算回路187に送る。
ステップS64:演算回路186はディスクリプタの情報に基づいて変換演算を実行する。
ステップS65:バスマスタ187は演算回路186が変換したデータを読み出し、ディスクリプタの情報に基づいた場所に格納する。
ステップS62:変換開始のトリガに基づいてバスマスタ187はFLASH14に格納されているディスクリプタを読み出して演算回路187に送る。
ステップS63:バスマスタ187は、ディスクリプタの内容に基づいた場所に格納されている変換前の信号を読み出して演算回路187に送る。
ステップS64:演算回路186はディスクリプタの情報に基づいて変換演算を実行する。
ステップS65:バスマスタ187は演算回路186が変換したデータを読み出し、ディスクリプタの情報に基づいた場所に格納する。
ADC15には温度センサ等のセンサ30が接続される。例えば温度センサで検知した外気温はADC15を介して浮動小数点数型データでRAM12に格納される。通信回路16は、マイクロコントローラ20の通信回路と接続される。例えば変換演算回路18Bは、RAM13に格納された浮動小数点数型データの外気温を整数型データに変換して、通信回路16に送出し、通信回路16は整数型データの外気温をマイクロコントローラ20に送信する。逆に、変換演算回路18Bは、マイクロコントローラ20から通信回路16を介して受信した整数型データを読み出し、浮動小数点型データに変換しRAM13に格納する。
実施例3では、実施形態または変形形態1または変形形態2に係る変換演算には浮動小数点型データの除算器および乗算器が必要ないので、変換演算回路の回路規模の増大を抑えることができる。また、変換演算回路にバスマスタを備えるので、CPUやDTC/DAMCのバスマスタの負荷を低減することができる。また、浮動小数点型データを符号なし整数型データに変換することでデータを圧縮することにより通信レイテンシを向上させることができる。
以上、本発明者によってなされた発明を実施形態、変形形態および実施例に基づき具体的に説明したが、本発明は、上記実施形態、変形形態および実施例に限定されるものではなく、種々変更可能であることはいうまでもない。
例えば、単精度記憶形式の浮動小数点型データについて説明したが、倍精度記憶形式の浮動小数点型データにも適用できる。
実施例3では、変換演算回路18Bはバス17を介して通信回路16とデータのやり取りを行う例について説明したが、変換演算回路18Bはバス17を介さずに通信回路16と直接データのやり取りを行ってもよい。
1・・・システム
10・・・マイクロコントローラ
11・・・CPU
12・・・DTC/DMAC
13・・・RAM
14・・・フラッシュメモリ
15・・・A/D変換回路
16・・・通信回路
17・・・バス
18A、18B・・・変換演算器
181・・・バススレーブ
182・・・デマルチプレクサ
183・・・レジスタ
184・・・マルチプレクサ
185・・・割り込み制御回路
186・・・演算回路
1861・・・デマルチプレクサ
1862・・・float比較器
1863・・・unit加減算器
1864・・・unit乗算器
1865・・・シフト演算器
1866・・・マルチプレクサ
187・・・バスマスタ
20・・・マイクロコントローラ
30・・・センサ
10・・・マイクロコントローラ
11・・・CPU
12・・・DTC/DMAC
13・・・RAM
14・・・フラッシュメモリ
15・・・A/D変換回路
16・・・通信回路
17・・・バス
18A、18B・・・変換演算器
181・・・バススレーブ
182・・・デマルチプレクサ
183・・・レジスタ
184・・・マルチプレクサ
185・・・割り込み制御回路
186・・・演算回路
1861・・・デマルチプレクサ
1862・・・float比較器
1863・・・unit加減算器
1864・・・unit乗算器
1865・・・シフト演算器
1866・・・マルチプレクサ
187・・・バスマスタ
20・・・マイクロコントローラ
30・・・センサ
Claims (20)
- 半導体装置は、
メモリと、
前記メモリと接続されるバスと、
前記バスに接続されるバスマスタと、
前記バスに接続される変換演算回路と、
を備え、
前記変換演算回路は浮動小数点型データの加減算器と整数型データの加減算器とシフト演算器とを備え、浮動小数点型データの乗算器および除算器を用いないで浮動小数点型データを整数型データに変換演算し、または、整数型データを浮動小数点型データに変換演算する。 - 請求項1の半導体装置において、
前記変換演算回路は、前記バスマスタから供給される変換演算の指示に基づいて前記バスマスタよってメモリから供給される浮動小数点型データを整数型データに変換演算を行い、
前記バスマスタは前記変換演算回路が変換演算した結果を前記メモリに格納する。 - 請求項2の半導体装置において、
さらに、通信回路を備え、
前記バスマスタは前記メモリに格納された変換演算した結果を前記通信回路に供給する。 - 請求項1の半導体装置において、
前記変換演算回路は、前記バスマスタから供給される指示に基づいて、前記メモリから浮動小数点型データを読み出して整数型データに変換演算する。 - 請求項4の半導体装置において、
さらに、通信回路を備え、
前記変換演算回路は前記変換演算した結果を前記通信回路に供給する。 - 請求項1の半導体装置において、
前記変換演算回路は、中間値との比較を繰り返す二分法を用いて浮動小数点型データを整数型データに変換演算する。 - 請求項6の半導体装置において、
前記変換演算回路は、前記浮動小数点型データがとり得る最大値と最小値から中間値を求めて変換演算を行う。 - 請求項6の半導体装置において、
前記整数型データのビット長をn、前記浮動小数点型データがとり得る範囲をRange、前記浮動小数点型データがとり得る最小値をOffsetとし、Range/2nをLsbとし、
前記変換演算回路は、前記Lsbおよび前記Offsetを用いて変換演算する。 - 請求項1の半導体装置において、
前記変換演算回路は、中間値の加算を繰り返す演算法を用いて整数型データを浮動小数点型データに変換演算する。 - 請求項1の半導体装置において、
前記変換演算回路はさらに整数型データの乗算器を備え、
前記整数型データのビット長をn、前記浮動小数点型データがとり得る範囲をRange、Range/2nをLsbとし、
前記変換演算回路は、前記Lsbを用いて整数型データから浮動小数点型データに変換演算する。 - 半導体装置はCPUとプログラムを格納するメモリとを有する制御装置を備え、
前記制御装置は(a)中間値との比較を繰り返す二分法を用いて浮動小数点型データを整数型データに変換演算する手段を備える。 - 請求項11の半導体装置において、
前記(a)手段は前記浮動小数点型データがとり得る最大値と最小値から中間値を求めて変換演算を行う。 - 請求項12の半導体装置において、
前記(a)手段は、
(a1)第1記憶手段と、
(a2)第2記憶手段と、
(a3)第3記憶手段と、
(a4)第4記憶手段と、
(a5)変換対象の浮動小数点型データがとり得る最大値を前記第1記憶手段に格納する手段と、
(a6)前記変換対象の浮動小数点型データがとり得る最小値を前記第2記憶手段に格納する手段と、
(a7)前記第1記憶手段に記憶されている値と前記第2記憶手段に格納されている値との中間値を計算し前記第3記憶手段に格納する手段と、
(a8)前記変換対象の浮動小数点型データの値が前記(a7)手段によって前記第3記憶手段に格納された中間値よりも大きい場合は前記第4記憶手段に記憶される整数型データの最上位ビットを“1”にし、前記第3記憶手段に記憶されている中間値を前記第2記憶手段に格納する手段と、
(a9)前記変換対象の浮動小数点型データが前記第3記憶手段に記憶されている中間値よりも小さい場合は前記記憶手段に記憶される整数型データの最上位ビットを“0”にし、前記第3記憶手段に記憶されている中間値を前記第1記憶手段に格納する手段と、
を備える。 - 請求項11の半導体装置において、
前記整数型データのビット長をn、前記浮動小数点型データがとり得る範囲をRange、前記浮動小数点型データがとり得る最小値をOffsetとし、Range/2nをLsbとし、
前記(a)手段は前記Lsbおよび前記Offsetを用いて変換演算する。 - 請求項14の半導体装置において、
前記(a)手段は、
(a21)第21記憶手段と、
(a22)第22記憶手段と、
(a23)第23記憶手段と、
(a24)変換対象の浮動小数点型データから前記Offsetを引いて前記第21記憶手段に格納する手段と、
(a25)前記Rangeを前記第22記憶手段に格納する手段と、
(a26)前記第22記憶手段に格納されている値を2で割って前記第22記憶手段に格納する手段と、
(a27)前記第22記憶手段に格納されている値が前記第21記憶手段に格納されている値以下の場合は前記第23記憶手段に記憶される整数型データの最上位ビットを“1”にする手段と、
(a28)前記第22記憶手段に格納されている値が前記第21記憶手段に格納されている値よりも大きい場合は前記第23記憶手段に記憶される整数型データの最上位ビットを“0”にする手段と、
を備える。 - 請求項15の半導体装置において、
前記(a27)手段は、前記第22記憶手段に格納されている値が前記第21記憶手段に格納されている値と等しい場合は前記第23記憶手段に記憶される整数型データの最上位ビットを“1”にし、他のビットを“0”にする。 - 請求項11の半導体装置において、
前記制御装置は(b)中間値の加算を繰り返す演算法を用いて整数型データを浮動小数点型データに変換演算する手段を備える。 - 請求項17の半導体装置において、
前記(b)手段は、
(b1)第31記憶手段と、
(b2)第32記憶手段と、
(b3)第33記憶手段と、
(b4)第34記憶手段と、
(b5)浮動小数点型データがとり得る最大値を前記第31記憶手段に格納する手段と、
(b6)浮動小数点型データがとり得る最小値を前記第32記憶手段に格納する手段と、
(b7)前記第31記憶手段に記憶されている値と前記第32記憶手段に格納されている値との中間値を計算し前記第3記憶手段に格納する手段と、
(b8)変換対象の整数型データの値の最上位ビットが“1”の場合は前記第34記憶手段に前記第33記憶手段の値を加算して前記第4記憶手段に格納し、前記第31記憶手段に前記第33記憶手段の値を格納する手段と、
(b9)変換対象の整数型データの値の最上位ビットが“0”の場合は前記第31記憶手段に前記第33記憶手段の値を格納する手段と、
を備える。 - 請求項15の半導体装置において、
前記整数型データのビット長をn、前記浮動小数点型データがとり得る範囲をRange、Range/2nをLsbとし、
前記制御装置は(c)前記Lsbを用いて整数型データを浮動小数点型データに変換演算する手段を備える。 - 請求項19の半導体装置において、
前記(c)手段は、
(c1)前記Lsbを指数と仮数に分解する手段と、
(c2)前記仮数を整数(仮整数)に変換し、前記指数をシフトする手段と、
(c3)変換対象の整数データと前記仮整数とを掛ける手段と、
(c4)前記(c3)手段で求めた値を仮数に変換し、前記(c2)手段でシフトした指数をシフトする手段と、
を備える。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016088679A JP2017199167A (ja) | 2016-04-27 | 2016-04-27 | 半導体装置 |
US15/471,159 US20170315778A1 (en) | 2016-04-27 | 2017-03-28 | Semiconductor device |
CN201710286489.7A CN107391082A (zh) | 2016-04-27 | 2017-04-27 | 半导体器件 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016088679A JP2017199167A (ja) | 2016-04-27 | 2016-04-27 | 半導体装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017199167A true JP2017199167A (ja) | 2017-11-02 |
Family
ID=60158305
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016088679A Pending JP2017199167A (ja) | 2016-04-27 | 2016-04-27 | 半導体装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20170315778A1 (ja) |
JP (1) | JP2017199167A (ja) |
CN (1) | CN107391082A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019073745A1 (ja) | 2017-10-13 | 2019-04-18 | 日本電気株式会社 | 生体認証装置及び生体認証方法 |
JP2022519258A (ja) * | 2019-02-06 | 2022-03-22 | アーム・リミテッド | アンカーデータ要素における特殊値の符号化 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109409515B (zh) * | 2017-04-06 | 2022-08-09 | 上海寒武纪信息科技有限公司 | 运算装置和方法 |
US11010338B2 (en) * | 2017-04-06 | 2021-05-18 | Shanghai Cambricon Information Technology Co., Ltd | Data screening device and method |
CN108762720B (zh) * | 2018-06-14 | 2021-06-29 | 北京比特大陆科技有限公司 | 数据处理方法、数据处理装置以及电子设备 |
US11640649B2 (en) | 2019-06-19 | 2023-05-02 | Samsung Electronics Co., Ltd. | Methods and apparatus for efficient range calculation |
CA3146005A1 (en) | 2019-07-25 | 2021-01-28 | Battelle Memorial Institute | Can bus protection systems and methods |
US11455368B2 (en) | 2019-10-02 | 2022-09-27 | Flex Logix Technologies, Inc. | MAC processing pipeline having conversion circuitry, and methods of operating same |
US12015428B2 (en) | 2019-11-05 | 2024-06-18 | Flex Logix Technologies, Inc. | MAC processing pipeline using filter weights having enhanced dynamic range, and methods of operating same |
US11960856B1 (en) | 2020-01-15 | 2024-04-16 | Flex Logix Technologies, Inc. | Multiplier-accumulator processing pipeline using filter weights having gaussian floating point data format |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0766365B2 (ja) * | 1985-03-08 | 1995-07-19 | 株式会社日立製作所 | コ・プロセツサ制御方式 |
US5257215A (en) * | 1992-03-31 | 1993-10-26 | Intel Corporation | Floating point and integer number conversions in a floating point adder |
US6912557B1 (en) * | 2000-06-09 | 2005-06-28 | Cirrus Logic, Inc. | Math coprocessor |
US6990505B2 (en) * | 2002-05-09 | 2006-01-24 | Sun Microsystems, Inc. | Method/apparatus for conversion of higher order bits of 64-bit integer to floating point using 53-bit adder hardware |
US7774393B1 (en) * | 2004-06-30 | 2010-08-10 | Oracle America, Inc. | Apparatus and method for integer to floating-point format conversion |
US20060101244A1 (en) * | 2004-11-10 | 2006-05-11 | Nvidia Corporation | Multipurpose functional unit with combined integer and floating-point multiply-add pipeline |
JP2009110353A (ja) * | 2007-10-31 | 2009-05-21 | Hitachi Ltd | マイクロコントローラ及び制御システム |
US9059726B2 (en) * | 2012-05-11 | 2015-06-16 | Arm Limited | Apparatus and method for performing a convert-to-integer operation |
US9608662B2 (en) * | 2014-09-26 | 2017-03-28 | Arm Limited | Apparatus and method for converting floating-point operand into a value having a different format |
-
2016
- 2016-04-27 JP JP2016088679A patent/JP2017199167A/ja active Pending
-
2017
- 2017-03-28 US US15/471,159 patent/US20170315778A1/en not_active Abandoned
- 2017-04-27 CN CN201710286489.7A patent/CN107391082A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019073745A1 (ja) | 2017-10-13 | 2019-04-18 | 日本電気株式会社 | 生体認証装置及び生体認証方法 |
JP2022519258A (ja) * | 2019-02-06 | 2022-03-22 | アーム・リミテッド | アンカーデータ要素における特殊値の符号化 |
JP7541524B2 (ja) | 2019-02-06 | 2024-08-28 | アーム・リミテッド | アンカーデータ要素における特殊値の符号化 |
Also Published As
Publication number | Publication date |
---|---|
CN107391082A (zh) | 2017-11-24 |
US20170315778A1 (en) | 2017-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2017199167A (ja) | 半導体装置 | |
WO2021147395A1 (zh) | 算数逻辑单元、浮点数乘法计算的方法及设备 | |
JP2651267B2 (ja) | 演算処理装置及び演算処理方法 | |
WO2017124645A1 (zh) | 一种浮点数处理装置 | |
JPH05216624A (ja) | 演算装置 | |
JPH04127364A (ja) | 積和算器 | |
CN110515589B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
Linhardt et al. | Digit-by-digit transcendental-function computation | |
WO2021136259A1 (zh) | 浮点数乘法计算的方法、装置和算术逻辑单元 | |
JP2689414B2 (ja) | 浮動小数点表現変換器 | |
CN111813371A (zh) | 数字信号处理的浮点除法运算方法、系统及可读介质 | |
CN111399803A (zh) | 除法运算方法、装置、存储介质及电子设备 | |
JPH0833809B2 (ja) | 浮動小数点表示データの演算方法 | |
JP2645422B2 (ja) | 浮動小数点演算処理装置 | |
CN110389746B (zh) | 硬件加速电路、微控制芯片及系统 | |
JPH0831024B2 (ja) | 演算プロセッサ | |
JP2003101415A (ja) | データ変換装置、データ生成装置、データ変換プログラム及びデータ生成プログラム、並びにデータ変換方法及びデータ生成方法 | |
JPH01207823A (ja) | 浮動小数点数一固定小数点数変換装置 | |
JP2795253B2 (ja) | 除算器 | |
JP2583599B2 (ja) | 2進整数乗算処理方法 | |
JP3415569B2 (ja) | 10進データ除算方法およびそのプログラム記録媒体 | |
JP4428778B2 (ja) | 演算装置及び演算方法並びに計算装置 | |
JP2508286B2 (ja) | 平方根演算装置 | |
JP3100868B2 (ja) | 浮動小数点数のための算術演算装置 | |
CN113031913A (zh) | 乘法器、数据处理方法、装置及芯片 |