JP3916277B2 - 読み出し専用メモリ及び演算装置 - Google Patents
読み出し専用メモリ及び演算装置 Download PDFInfo
- Publication number
- JP3916277B2 JP3916277B2 JP34689796A JP34689796A JP3916277B2 JP 3916277 B2 JP3916277 B2 JP 3916277B2 JP 34689796 A JP34689796 A JP 34689796A JP 34689796 A JP34689796 A JP 34689796A JP 3916277 B2 JP3916277 B2 JP 3916277B2
- Authority
- JP
- Japan
- Prior art keywords
- output
- memory
- binary representation
- value
- counter 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.)
- Expired - Fee Related
Links
- 230000015654 memory Effects 0.000 title claims description 133
- 238000000034 method Methods 0.000 claims description 20
- 230000008569 process Effects 0.000 claims description 7
- 230000007704 transition Effects 0.000 description 56
- 230000014509 gene expression Effects 0.000 description 14
- 230000008859 change Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 7
- 230000000295 complement effect Effects 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
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/50—Adding; Subtracting
- G06F7/505—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination
- G06F7/5055—Adding; Subtracting in bit-parallel fashion, i.e. having a different digit-handling circuit for each denomination in which one operand is a constant, i.e. incrementers or decrementers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/147—Discrete orthonormal transforms, e.g. discrete cosine transform, discrete sine transform, and variations therefrom, e.g. modified discrete cosine transform, integer transforms approximating the discrete cosine transform
-
- 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- 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/4824—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 using signed-digit representation
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Optimization (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Discrete Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Read Only Memory (AREA)
- Complex Calculations (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
【発明の属する技術分野】
本発明は、読み出し専用メモリ、及び、演算過程において読み出し専用メモリの出力データを使用する演算装置に関するものである。
【0002】
【従来の技術】
演算過程において読み出し専用メモリ(以下、「メモリ」と省略する)の出力データを使用する演算装置の一例のブロック図を図9に示す。同図において、数値演算処理装置100は、当該演算装置への入力Xと、メモリ200の出力データとに基づいて演算を行い、出力Yを得ている。
【0003】
そして、メモリ200は出力値を2進表現で出力している。つまり、メモリ200からは、例えば、その出力ビット数を12ビットとすると、出力値が724であるときは、724の2進表現である001011010100が出力され、また、出力値が−256と負値であるときは、−256を2の補数を用いて2進表現した111100000000が出力される。
【0004】
【発明が解決しようとする課題】
しかしながら、上記の演算装置においては、入力Xの変化、あるいは、演算処理の対象となる入力の変化などによって、メモリ200の出力データも当然変化するわけであるが、上述したように、メモリ200の出力データは2進表現であるため、メモリの出力データのビットの変化回数(以下、「遷移回数」と呼ぶ)が多く、これは、消費電力の増大につながり、また、装置の摩耗を促進し、装置の寿命を短くする原因となっている。
【0005】
そこで、本発明は、消費電力を低減し、かつ、装置の寿命を延ばすことができるメモリ、及び、消費電力が低く、かつ、寿命が長い演算装置を提供することを目的とする。
【0006】
【課題を解決するための手段】
上記の目的を達成するため、請求項1に記載のメモリでは、出力値を、出力値の冗長2進表現の各桁を、冗長2進表現の各桁がとり得る値に割り当てられたそれぞれ異なる複数ビット列で置き換えることによって得られるビット列で出力し、出力データのビットの変化回数が少なくなるように、出力値の冗長2進表現と、冗長2進表現の各桁がとり得る値に割り当てられたそれぞれ異なる複数ビット列での置き換え方が選択されるようにしている。
【0007】
以上の構成によって、後述するように、各出力値の前あるいは後の少なくともどちらか一方に出力される出力値が決まっているメモリについては、出力値を2進表現で出力するメモリよりも、遷移回数を少なくすることができる。また、一部の出力値に対して、その前あるいは後の少なくともどちらか一方に出力される出力値が決まっているメモリであれば、上記作用が生じる可能性がある。
【0008】
また、請求項2に記載の演算装置では、演算過程において読み出し専用メモリの出力データを使用する演算装置において、出力値を、出力値の冗長2進表現の各桁を、冗長2進表現の各桁がとり得る値に割り当てられたそれぞれ異なる複数ビット列で置き換えることによって得られるビット列で出力し、出力データのビットの変化回数が少なくなるように、出力値の冗長2進表現と、冗長2進表現の各桁がとり得る値に割り当てられたそれぞれ異なる複数ビット列での置き換え方が選択される読み出し専用メモリを設けている。
【0009】
以上の構成によって、後述するように、メモリの各出力データを使用するに際して、その前あるいは後の少なくともどちらか一方に使用する出力データが決まっている演算装置については、出力値を2進表現で出力するメモリを設けた場合よりも、遷移回数を少なくすることができる。また、メモリの一部の出力データを使用するに際して、その前あるいは後の少なくともどちらか一方に使用するデータが決まっている演算装置であれば、上記作用が生じる可能性がある。
【0010】
【発明の実施の形態】
以下に、本発明の実施形態を図面を参照しながら説明する。本発明の一実施形態であるメモリは、出力値の冗長2進表現の各桁を、冗長2進表現の各桁がとり得る値に割り当てられたそれぞれ異なる2ビット列で置き換えることによって得られるビット列で出力値を出力する(以下、冗長2進表現の各桁を、冗長2進表現の各桁がとり得る値に割り当てられたそれぞれ異なるxビット列で置き換えることを、「冗長2進表現をxビット列で符号化する」と呼び、冗長2進表現をxビット列で符号化することによって得られるビット列を「冗長2進表現符号」と呼ぶ)。
【0011】
ここで、冗長2進表現とは、2を固定基数とし、−1と0と1との3つを用いて数値を表したものである。すなわち、冗長2進表現と2進表現とでは各桁の重みが同じ(2)であり、各桁のとり得る値が異なっている(2進表現では0と1との2つであるのに対し、冗長2進表現では−1と0と1との3つである)。そして、この冗長2進表現では、1つの数値について複数の表し方が可能である。具体的には、例えば、5桁の冗長2進表現では、数値1を「00001」、「0001−1」、「001−1−1」、「01−1−1−1」、「1−1−1−1−1」と表すことができる。
【0012】
次に、冗長2進表現の各桁がとり得る値は−1、0、1の3つであり、2ビット列としては(00)、(01)、(10)、(11)の4つが考えられるので、冗長2進表現を2ビット列で符号化するには、4P3=24通りの方法がある。しかしながら、今、問題としているのは、遷移回数(ビットの変化数)であって、冗長2進表現の桁においては、−1と0との間、0と1との間、1と−1との間での3通りの変化が考えられ、−1、0、1の3つにそれぞれ異なる2ビット列を割り当てると、その割り当て方によらず、前記3通りの変化のうちのいずれか1つにおいて遷移回数が2となり(割り当てた2ビットが両方ともに変化し)、残りの2つにおいては遷移回数が1となる(割り当てた2ビットの一方しか変化しない)ので、冗長2進表現を2ビット列で符号化するには、遷移回数が2となるのを、−1と0との間での変化の際とするか、0と1との間での変化の際とするか、1と−1との間での変化の際とするか、の3通りの方法があることになる。
【0013】
この3通りの方法のそれぞれの一例を図1に示す。同図において、−1に(10)を、0に(00)を、1に(11)を、それぞれ割り当てたものを定義1とし、−1に(11)を、0に(00)を、1に(01)を、それぞれ割り当てたものを定義2とし、−1に(10)を、0に(00)を、1に(01)を、それぞれ割り当てたものを定義3としており、定義1によれば0と1との間での変化の際に、定義2によれば−1と0との間での変化の際に、定義3によれば−1と1との間での変化の際に、それぞれ遷移回数が2となる。
【0014】
そして、出力の順番が決められていたり、出力値が限定され完全に自由ではないメモリについては、冗長2進表現符号で出力値を出力することによって、2進表現で出力値を出力するよりも、遷移回数を少なくすることができる可能性が生じる。というのは、冗長2進表現では、前述したように、1つの数値について複数の表し方が可能であるので、メモリの各出力値の前あるいは後に出力される出力値が決まっていれば、遷移回数が少なくなるように、各出力値の前あるいは後に出力される出力値に応じて、各出力値の表し方を適切に選択することができるからである。
【0015】
これを具体的な例を挙げて確認してみる。例えば、図2に示すように、メモリの出力値が0から31に変化するとき、2進表現では0は「00000」であり、31は「11111」であるので、メモリの出力データが2進表現である場合は遷移回数が5であるのに対し、冗長2進表現では、桁数を6桁とすると、0は「000000」であり、31は「011111」、「1−11111」、「10−1111」、「100−111」、「1000−11」、「10000−1」と表すことができるが、「10000−1」を選択することによって、冗長2進表現の各桁の変化回数としては、−1と0との間での変化が1回、0と1との間での変化が1回であるので、メモリの出力データが冗長2進表現を2ビット列で符号化したものである場合は、冗長2進表現を符号化する方法が、図1に示す定義1であれば遷移回数を3、図1に示す定義2であれば遷移回数を3、図1に示す定義3であれば遷移回数を2、とそれぞれすることができる。
【0016】
以上の内容からして、本実施形態のメモリによれば、各出力値の前あるいは後の少なくともどちらか一方に出力される出力値が決まっているメモリについては、出力値を2進表現で出力するメモリよりも、遷移回数を少なくすることができるので、消費電力を低減し、メモリの出力データを使用する装置の寿命を延ばすことができる。また、一部の出力値に対して、その前あるいは後の少なくともどちらか一方に出力される出力値が決まっているメモリであれば、上記作用効果を奏する可能性がある。
【0017】
以下、本発明の演算装置について説明する。尚、演算過程においてメモリの出力データを使用する演算装置としては、定数加算器、定数乗算器、定数係数の積和演算器、係数の決まったマトリクス演算器、ディジタル比較器、マトリクス演算器を応用した離散コサイン変換器など様々なものが存在するが、離散コサイン変換器を例にとって行うものとする。
【0018】
まず、離散コサイン変換について説明を行う。例えば、1次元の8個のnビットのデータX1、X2、…、X8に対する離散コサイン変換式は次に示す(数1)で表され、この変換式で得られる8個のデータY1、Y2、…、Y8は離散コサイン変換係数と呼ばれる。
【0019】
【数1】
【0020】
(数1)を変形すると、次の(数2)が得られる。
【0021】
【数2】
【0022】
(数2)の係数を整数にするために、係数を29倍して小数点以下を切り捨てると、次の(数3)が得られる。
【0023】
【数3】
【0024】
(数3)より、Yj(j=1、2、…、8)は次に示す(数4)で表される。
【0025】
【数4】
【0026】
次に、(数4)のZk(k=1、2、3、4)は2つのnビットのデータXjの和あるいは差であるので、Zkをn+1ビットとし、Zkのビット位iのビットをZk(i)とおくと、Zkは次に示す(数5)で表される。尚、ビット位iとは、最下位のi−1個上の桁を意味しており、例えば、ビット位1のビットは最下位ビットを表しており、Zkのビット位n+1のビットは最上位ビットを表している。
【0027】
【数5】
【0028】
(数5)より、(数4)は次に示す(数6)で表される。
【0029】
【数6】
【0030】
(数4)で示したように、jに応じてT1、T2、T3、T4が固定されているので、(数6)より、Yjはn+1個の4ビット列(Z1(1)Z2(1)Z3(1)Z4(1))、(Z1(2)Z2(2)Z3(2)Z4(2))、…、(Z1(n+1)Z2(n+1)Z3(n+1)Z4(n+1))の関数であることがわかる。
【0031】
尚、ここで、T1・Z1(i)+T2・Z2(i)+T3・Z3(i)+T4・Z4(i)をYjの部分和と定義し、以下、必要に応じて、Zkのビット位1のビットを要素とするYjの部分和、つまり、T1・Z1(1)+T2・Z2(1)+T3・Z3(1)+T4・Z4(1)をYjの第1部分和、Zkのビット位2のビットを要素とするYjの部分和、つまり、T1・Z1(2)+T2・Z2(2)+T3・Z3(2)+T4・Z4(2)をYjの第2部分和、…、Zkのビット位n+1のビットを要素とするYjの部分和、つまり、T1・Z1(n+1)+T2・Z2(n+1)+T3・Z3(n+1)+T4・Z4(n+1)をYjの第n+1部分和、というように表現する。
【0032】
そこで、Zkのビット数と同数(n+1個)のメモリを設け、各メモリにYjの部分和がとり得る値の全て(8×24=128個)を記憶させておき、各メモリが、例えば、jの値を示すデータ及び4ビット列(Z1(i)Z2(i)Z3(i)Z4(i))を入力すると、その入力に応じたYjの部分和を出力するようにしておけば、jの値を示すデータを各メモリに与え、また、Zkの各同一ビット位のビットからなる全て(n+1個)の4ビット列(Z1(1)Z2(1)Z3(1)Z4(1))、(Z1(2)Z2(2)Z3(2)Z4(2))、…、(Z1(n+1)Z2(n+1)Z3(n+1)Z4(n+1))をそれぞれ異なるメモリに与え、その際に各メモリが出力する部分和を、(数6)に示すように、その要素である4ビット列を構成するビットのZkにおけるビット位に応じてシフトさせて加算することによって、Yjを算出することができる。
【0033】
以上のような方法を用いることによって、8個の入力データX1、X2、…、X8に対して離散コサイン変換係数Y1、Y2、…、Y8を出力する1次元8要素の離散コサイン変換器のブロック図を図3に示す。尚、入力データX1、X2、…、X8はそれぞれ10ビットとする。同図において、1はカウンタ、2は加減算器、3−1、3−2、…、3−11はメモリ、4は加算器である。
【0034】
以下、各部の動作について説明する。まず、カウンタ1の出力(以下、「カウンタ値」と呼ぶ)は所定時間毎にサイクリックに変化し、8種類の信号が存在している、つまり、8種類の信号をa、b、c、d、e、f、g、hと表現すれば、カウンタ値はa→b→c→d→e→f→g→h→a→…と変化する。そして、カウンタ値は加減算器2とメモリ3−1、3−2、…、3−11とに与えられている。
【0035】
次に、加減算器2は当該1次元8要素の離散コサイン変換器への入力である8個のデータX1、X2、…、X8に対して、4つのデータZ1、Z2、Z3、Z4を生成し、カウンタ値がa、b、c、dであるときは、Z1=X1+X8、Z2=X2+X7、Z3=X3+X6、Z4=X4+X5であり、カウンタ値がe、f、g、hであるときは、Z1=X1−X8、Z2=X2−X7、Z3=X3−X6、Z4=X4−X5である。尚、Z1、Z2、Z3、Z4は、X1、X2、…、X8がそれぞれ10ビットであり、これらについて1回加算あるいは減算したものであるので、それぞれ11ビットとなる。
【0036】
そして、Z1、Z2、Z3、Z4はそれぞれビット分配され、Z1、Z2、Z3、Z4の各同一ビット位のビットからなる11組の4ビット列(Z1(i)Z2(i)Z3(i)Z4(i))(i=1〜11)が加減算器2から出力され、このうち、Z1、Z2、Z3、Z4のビット位1のビットからなるもの、つまり、(Z1(1)Z2(1)Z3(1)Z4(1))がメモリ3−1に、Z1、Z2、Z3、Z4のビット位2のビットからなるもの、つまり、(Z1(2)Z2(2)Z3(2)Z4(2))がメモリ3−2に、…、Z1、Z2、Z3、Z4のビット位11のビットからなるもの、つまり、(Z1(11)Z2(11)Z3(11)Z4(11))がメモリ3−11にというように、それぞれ異なるメモリに与えられる。
【0037】
メモリ3−1、3−2、…、3−11の出力値はそれぞれ、図4に示すように、入力であるカウンタ値と4ビット列(Z1(i)Z2(i)Z3(i)Z4(i))について、カウンタ値がaである場合に、4ビット列が(0000)であるときは0、4ビット列が(0001)であるときは362、…、4ビット列が(1111)であるときは1448であり、カウンタ値がbである場合に、4ビット列が(0000)であるときは0、4ビット列が(0001)であるときは−437、…、4ビット列が(1111)であるときは0であり、………、カウンタ値がhである場合に、4ビット列が(0000)であるときは0、4ビット列が(0001)であるときは−362、…、4ビット列が(1111)であるときは−188である。
【0038】
これにより、カウンタ値とZkとの関係、(数4)に示すYjのjの値とZkの係数Tkの値との関係、及び、各メモリが入力する4ビット列を構成するビットのZkにおけるビット位からして、カウンタ値がaであるときは、メモリ3−1はY1の第1部分和を、メモリ3−2はY1の第2部分和を、…、メモリ3−11はY1の第11部分和を、それぞれ出力し、カウンタ値がbであるときは、メモリ3−1はY3の第1部分和を、メモリ3−2はY3の第2部分和を、…、メモリ3−11はY3の第11部分和を、それぞれ出力し、カウンタ値がcであるときは、メモリ3−1はY5の第1部分和を、メモリ3−2はY5の第2部分和を、…、メモリ3−11はY5の第11部分和を、それぞれ出力し、カウンタ値がdであるときは、メモリ3−1はY7の第1部分和を、メモリ3−2はY7の第2部分和を、…、メモリ3−11はY7の第11部分和を、それぞれ出力し、カウンタ値がeであるときは、メモリ3−1はY2の第1部分和を、メモリ3−2はY2の第2部分和を、…、メモリ3−11はY2の第11部分和を、それぞれ出力し、カウンタ値がfであるときは、メモリ3−1はY4の第1部分和を、メモリ3−2はY4の第2部分和を、…、メモリ3−11はY4の第11部分和を、それぞれ出力し、カウンタ値がgであるときは、メモリ3−1はY6の第1部分和を、メモリ3−2はY6の第2部分和を、…、メモリ3−11はY6の第11部分和を、それぞれ出力し、カウンタ値がhであるときは、メモリ3−1はY8の第1部分和を、メモリ3−2はY8の第2部分和を、…、メモリ3−11はY8の第11部分和を、それぞれ出力することになる。尚、各メモリの出力ビット数は、後述するように、今の場合、22ビット以上とすればよい。
【0039】
次に、加算器4はメモリ3−1、3−2、…、3−11が出力する部分和を入力し、これらを、メモリ3−1が出力するものはシフトさせないが、メモリ3−2が出力する部分和は1ビット上に、メモリ3−3が出力する部分和は2ビット上に、…、メモリ3−11が出力する部分和は10ビット上に、それぞれシフトさせた後、加算する。
【0040】
これにより、前述したように、メモリ3−1、3−2、…、3−11がそれぞれYjの第1部分和、第2部分和、…、第11部分和を出力すること、及び、(数6)に示すYjとその部分和との関係からして、Yjが算出されることになる。尚、加算器4は加算結果、すなわち、Yjを出力するに際して、必要に応じて所定ビット数に丸めるという処理を行うようになっている。また、この1次元8要素の離散コサイン変換器においては、図4に示す各メモリの入出力関係、及び、前述したカウンタ値の変化態様からして、Y1、Y3、Y5、Y7、Y2、Y4、Y6、Y8の順にYjが算出されることになる。
【0041】
そして、図4に示す各メモリの出力値は冗長2進表現を2ビット列で符号化した冗長2進表現符号で出力される。つまり、例えば、メモリに入力される4ビット列が(0101)で、カウンタ値がaであるときには、出力値は724であるので、この冗長2進表現の1つである「010−100−10−1−100」を2ビット列で符号化したもの、すなわち、冗長2進表現を2ビット列で符号化する方法が図1に示す定義3である場合は、(000100100000100010100000)が出力される。
【0042】
ここで、メモリに出力値を冗長2進表現符号で出力させるには、まず、出力値を冗長2進表現に変換する必要があるが、前述したように、1つの数値を表す冗長2進表現は複数存在するので、その中から1つを選択しなければならない。これについて以下に説明する。本実施形態の1次元8要素の離散コサイン変換器においては、カウンタ値がa→b→c→dと変化する間、及び、e→f→g→hと変化する間は、Zkが変化せず、よって、メモリへの入力4ビット列が変化しないので、メモリの各入力4ビット列に対する、カウンタ値がaのときの出力値、カウンタ値がbのときの出力値、カウンタ値がcのときの出力値、及び、カウンタ値がdのときの出力値、の4つの出力値の間では出力の順番が固定されており、同じく、カウンタ値がeのときの出力値、カウンタ値がfのときの出力値、カウンタ値がgのときの出力値、及び、カウンタ値がhのときの出力値、の4つの出力値の間では出力の順番が固定されている。したがって、遷移回数を少なくするという観点からして、これらの4つの出力値が順に出力される際の、それぞれの冗長2進表現間での桁の変化回数が最も少なくなるように、各出力値の冗長2進表現を(冗長2進表現を符号化する方法も踏まえて)選択することになる。
【0043】
具体的な例を図5を用いて示す。メモリの出力値は、入力4ビット列(0101)に対して、カウンタ値がaのときのは724、カウンタ値がbのときは−256、カウンタ値がcのときは0、カウンタ値がdのときは−512であるので、724の冗長2進表現としては「010−100−10−1−100」を、−256の冗長2進表現としては「000−100000000」を、−512の冗長2進表現としては「00−1000000000」を、それぞれ選択することによって(0の冗長2進表現は「000000000000」である)、カウンタ値がa→b→c→dと変化する間の1つのメモリの遷移回数が6と最も少なくなる(図5の(イ))。また、メモリの出力値は、入力4ビット列(0011)に対して、カウンタ値がeのときのは377、カウンタ値がfのときは−708、カウンタ値がgのときは447、カウンタ値がhのときは−55であるので、377の冗長2進表現としては「0010−10000−1−1−1」を、−708の冗長2進表現としては「0−110−1−1000−100」を、447の冗長2進表現としては「00100−100000−1」を、−55の冗長2進表現としては「00000−100101−1」を、それぞれ選択することによって、カウンタ値がe→f→g→hと変化する間の1つのメモリの遷移回数が11と最も少なくなる(図5の(ロ))。尚、冗長2進表現を符号化する方法としては、図1に示す定義3を用いている。
【0044】
そして、上記2つの例において、カウンタ値がd→eと変化する間の1つのメモリの遷移回数は6となるので(図5の(ハ))、1次元8要素の離散コサイン変換器が8個のデータX1、X2、…、X8を入力してから8個の離散コサイン変換係数Y1、Y2、…、Y8を出力するまでの間の1つのメモリにおける遷移回数(以下、「総遷移回数」と表現する)は、カウンタ値がa、b、c、dであるときの入力4ビット列が(0101)、カウンタ値がe、f、g、hであるときの入力4ビット列が(0011)であるメモリでは、6+11+6=23となる。
【0045】
このようにして、メモリの各入力4ビット列に対するカウンタ値がa、b、c、dのときの4つの出力値とそれらの出力順、及び、カウンタ値がe、f、g、hのときの4つの出力値とそれらの出力順に基づいて、メモリが格納している128個の全ての出力値について冗長2進表現が選択されている。
【0046】
尚、比較のため、従来通りメモリの出力値を2進表現で出力する場合の1つのメモリにおける遷移回数を求めてみると、図7に示すように、カウンタ値がa、b、c、dであるときの4ビット列が(0101)であり、カウンタ値がe、f、g、hであるときの4ビット列が(0011)である場合、カウンタ値がa→b→c→dと変化する間の遷移回数は14となり(図7の(イ))、また、カウンタ値がe→f→g→hと変化する間の遷移回数は18となり(図7の(ロ))、また、カウンタ値がd→eと変化する間の遷移回数は9となる(図7の(ハ))。よって、カウンタ値がa、b、c、dであるときの4ビット列が(0101)であり、カウンタ値がe、f、g、hであるときの4ビット列が(0011)であるメモリでは、総遷移回数が14+18+9=41となる。
【0047】
ここで、メモリの出力ビット数については、上記例(図5)によれば、出力値の冗長2進表現を12桁としており、メモリからは冗長2進表現符号(冗長2進表現を2ビット列で符号化したもの)が出力されるので、12桁×2=24ビットとなるが、n桁の冗長2進表現では−2n+1〜2n−1の数値を表すことができるので、本実施形態の1次元8要素の離散コサイン変換器においては、メモリの出力値が−798〜1448である(図4参照)ことから、11桁の冗長2進表現でメモリの出力値を全て表すことができ、11桁×2=22ビットとしてもよい。また、逆に、メモリの出力ビット数を24ビットよりも多くしてもよく、こうすることによって、冗長2進表現の桁数が多くなり、1つの数値をより多くの態様で表すことができるので、遷移回数をより一層少なくすることが可能である。結論として、本実施形態の1次元8要素の離散コサイン変換器では、メモリの出力ビット数を22ビット以上確保しておけばよい。
【0048】
尚、n桁の2進表現では、負数を2の補数で表現するとして、−2n-1〜2n-1−1の数値を表すことができ、一方、n−1桁の冗長2進表現では−2n-1+1〜2n-1−1の数値を表すことができるので、n桁の2進表現では表すことができて、n−1桁の冗長2進表現では表すことができない数値は−2n-1の1つだけであり、ほとんどの場合、n桁の2進表現はn−1桁の冗長2進表現で置き換えることができる。したがって、メモリに出力値を2進表現で出力させるときに、メモリの出力ビット数がnビット以上必要であった場合に、メモリに出力値を冗長2進表現符号で出力させるには、メモリの出力ビット数を(n−1)×2=2n−2ビット以上としておけばよい。
【0049】
そして、全ての入力4ビット列について、1つのメモリにおける、カウンタ値がa→b→c→dと変化するときの遷移回数、カウンタ値がe→f→g→hと変化するときの遷移回数、及び、カウンタ値がd→eと変化するときの遷移回数を求め、その結果をまとめたものが図6である。
【0050】
同図において、「遷移回数」と記入されている欄の各下欄は、カウンタ値がa、b、c、dであるときの入力4ビット列がその左隣の欄に記入されているものである場合に、カウンタ値がa→b→c→dと変化する間の遷移回数を示しており、これらの合計がその最下欄に記入されている。
【0051】
また、「遷移回数」と記入されている欄の各右欄は、カウンタ値がe、f、g、hであるときの入力4ビット列がその上隣の欄に記入されているものである場合に、カウンタ値がe→f→g→hと変化する間の遷移回数を示しており、これらの合計がその最右欄に記入されている。
【0052】
また、上記2つの各欄が交わる欄は、カウンタ値がa、b、c、dであるときの入力4ビット列が最左隣の欄に記入されているものであり、カウンタ値がe、f、g、hであるときの入力4ビット列が最上隣の欄に記入されているものである場合に、カウンタ値がd→eと変化する間の遷移回数を示しており、これらの合計が同図の右下隅の欄に記入されている。
【0053】
そして、1次元8要素の離散コサイン変換器が8個の入力データX1、X2、…、X8に対して8個の離散コサイン変換係数Y1、Y2、…、Y8を出力するまでには、1つのメモリについて、カウンタ値がa、b、c、dであるときの入力4ビット列が16種類であり、カウンタ値がe、f、g、hであるときの入力4ビット列が16種類であるので、16×16=256通りのパターンが考えられるが、これらの各パターンにおける総遷移回数の合計は、166×16+180×16+1574=7110となる。そして、この総遷移回数の合計をパターン数(256)で割ったもの(以下、「平均総遷移回数」と表現する)は27.77となり、この値は各パターンが同じ確率で発生するとした場合の総遷移回数の指標となるものである。
【0054】
尚、比較のため、従来通りメモリの出力値を2進表現で出力する場合についても、同様に、全ての入力4ビット列について、1つのメモリにおける、カウンタ値がa→b→c→dと変化するときの遷移回数、カウンタ値がe→f→g→hと変化するときの遷移回数、及び、カウンタ値がd→eと変化するときの遷移回数を求め、その結果を図8にまとめている。尚、各欄の数値が意味する内容については図6と同じであり、総遷移回数の合計は244×16+272×16+1442=9698、平均総遷移回数は9698÷256≒37.88となっている。
【0055】
したがって、1次元8要素の離散コサイン変換器においては、メモリが出力値を、2進表現で出力する代わりに、冗長2進表現符号で出力することによって、平均総遷移回数が37.88から27.77と約26.7%少なくすることが可能であることがわかる。
【0056】
以上のように、本実施形態の1次元8要素の離散コサイン変換器によれば、出力値を2進表現で出力するメモリを設けた場合よりも、遷移回数を少なくすることができるので、装置の消費電力が低くなり、かつ、装置の寿命が長くなるという効果につながる。
【0057】
尚、本発明の演算装置の実施形態として、1次元8要素の離散コサイン変換器を示したが、本発明の演算装置はこれに限定されるものではなく、演算過程においてメモリの出力データを使用し、メモリの各出力データを使用するに際して、その前あるいは後の少なくともどちらか一方に使用する出力データが決まっている演算装置であればよい。
【0058】
また、メモリの一部の出力データを使用するに際して、その前あるいは後の少なくともどちらか一方に使用するデータが決まっている演算装置に対して本発明を実施した場合にも、上記作用効果を奏する可能性があると言える。
【0059】
また、上記実施形態においては、冗長2進表現を符号化するにあたって、2ビット列を用いたが、場合によってはより多くのビット数のビット列を用いてもよい。
【0060】
【発明の効果】
以上説明したように、請求項1に記載のメモリによれば、各出力値の前あるいは後の少なくともどちらか一方に出力される出力値が決まっているメモリについては、出力値を2進表現で出力するメモリよりも、遷移回数を少なくすることができ、したがって、消費電力を低減し、かつ、装置の寿命を延ばすことができる。尚、一部の出力値に対して、その前あるいは後の少なくともどちらか一方に出力される出力値が決まっているメモリであれば、上記効果が得られる可能性がある。
【0061】
また、請求項2に記載の演算装置によれば、メモリの各出力データを使用するに際して、その前あるいは後の少なくともどちらか一方に使用する出力データが決まっている演算装置については、出力値を2進表現で出力するメモリを設けた場合よりも、遷移回数を少なくすることができ、これは、装置の消費電力が低くなり、かつ、装置の寿命が長くなるという効果をもたらす。尚、メモリの一部の出力データを使用するに際して、その前あるいは後の少なくともどちらか一方に使用するデータが決まっている演算装置であれば、上記効果が得られる可能性がある。
【図面の簡単な説明】
【図1】 冗長2進表現を2ビット列で符号化する3通りの方法のそれぞれの一例を説明する図である。
【図2】 出力値が0から31に変化する際に、2進表現で出力する場合と冗長2進表現で出力する場合との遷移回数を比較するための図である。
【図3】 本発明の一実施形態である1次元8要素の離散コサイン変換器のブロック図である。
【図4】 メモリ3−1、3−2、…、3−11の出力値を示す図である。
【図5】(イ)カウンタ値がa、b、c、dであるときの入力4ビット列が(0101)である場合に、カウンタ値がa→b→c→dと変化する間の1つのメモリの遷移回数を示す図である。
(ロ)カウンタ値がe、f、g、hであるときの入力4ビット列が(0011)である場合に、カウンタ値がe→f→g→hと変化する間の1つのメモリの遷移回数を示す図である。
(ハ)カウンタ値がa、b、c、dであるときの入力4ビット列が(0101)であり、カウンタ値がe、f、g、hであるときの入力4ビット列が(0011)である場合に、カウンタ値がd→eと変化する間の1つのメモリの遷移回数を示す図である。
【図6】 全ての入力4ビット列について、1つのメモリにおける、カウンタ値がa→b→c→dと変化するときの遷移回数、カウンタ値がe→f→g→hと変化するときの遷移回数、及び、カウンタ値がd→eと変化するときの遷移回数をまとめた図である。
【図7】(イ)メモリが出力値を2進表現で出力するとした場合の、カウンタ値がa、b、c、dであるときの入力4ビット列が(0101)である場合に、カウンタ値がa→b→c→dと変化する間の1つのメモリの遷移回数を示す図である。
(ロ)メモリが出力値を2進表現で出力するとした場合の、カウンタ値がe、f、g、hであるときの入力4ビット列が(0011)である場合に、カウンタ値がe→f→g→hと変化する間の1つのメモリの遷移回数を示す図である。
(ハ)メモリが出力値を2進表現で出力するとした場合の、カウンタ値がa、b、c、dであるときの入力4ビット列が(0101)であり、カウンタ値がe、f、g、hであるときの入力4ビット列が(0011)である場合に、カウンタ値がd→eと変化する間の1つのメモリの遷移回数を示す図である。
【図8】 メモリが出力値を2進表現で出力するとした場合の、全ての入力4ビット列について、1つのメモリにおける、カウンタ値がa→b→c→dと変化するときの遷移回数、カウンタ値がe→f→g→hと変化するときの遷移回数、及び、カウンタ値がd→eと変化するときの遷移回数をまとめた図である。
【図9】 演算過程においてメモリの出力データを使用する演算装置の一例のブロック図である。
【符号の説明】
1 カウンタ
2 加減算器
3−1、3−2、…、3−11 メモリ(出力データが冗長2進表現符号)
4 加算器
100 数値演算処理装置
200 メモリ(出力データが2進表現)
Claims (2)
- 出力値を、出力値の冗長2進表現の各桁を、冗長2進表現の各桁がとり得る値に割り当てられたそれぞれ異なる複数ビット列で置き換えることによって得られるビット列で出力し、出力データのビットの変化回数が少なくなるように、出力値の冗長2進表現と、冗長2進表現の各桁がとり得る値に割り当てられたそれぞれ異なる複数ビット列での置き換え方が選択されることを特徴とする読み出し専用メモリ。
- 演算過程において読み出し専用メモリの出力データを使用する演算装置において、
出力値を、出力値の冗長2進表現の各桁を、冗長2進表現の各桁がとり得る値に割り当てられたそれぞれ異なる複数ビット列で置き換えることによって得られるビット列で出力し、出力データのビットの変化回数が少なくなるように、出力値の冗長2進表現と、冗長2進表現の各桁がとり得る値に割り当てられたそれぞれ異なる複数ビット列での置き換え方が選択される読み出し専用メモリを設けたことを特徴とする演算装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP34689796A JP3916277B2 (ja) | 1996-12-26 | 1996-12-26 | 読み出し専用メモリ及び演算装置 |
US08/992,575 US6047302A (en) | 1996-12-26 | 1997-12-17 | Memory storing redundant binary codes and arithmetic unit and discrete cosine transformer using such memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP34689796A JP3916277B2 (ja) | 1996-12-26 | 1996-12-26 | 読み出し専用メモリ及び演算装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10187664A JPH10187664A (ja) | 1998-07-21 |
JP3916277B2 true JP3916277B2 (ja) | 2007-05-16 |
Family
ID=18386568
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP34689796A Expired - Fee Related JP3916277B2 (ja) | 1996-12-26 | 1996-12-26 | 読み出し専用メモリ及び演算装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6047302A (ja) |
JP (1) | JP3916277B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7663915B2 (en) * | 2004-02-10 | 2010-02-16 | Semiconductor Energy Laboratory Co., Ltd. | Nonvolatile memory |
JP6213040B2 (ja) * | 2013-08-19 | 2017-10-18 | 富士通株式会社 | 半導体記憶装置および半導体記憶装置の制御方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4866655A (en) * | 1986-07-18 | 1989-09-12 | Matsushita Electric Industrial Co., Ltd. | Arithmetic processor and divider using redundant signed digit |
US4868777A (en) * | 1986-09-12 | 1989-09-19 | Matsushita Electric Industrial Co., Ltd. | High speed multiplier utilizing signed-digit and carry-save operands |
EP0520650A1 (en) * | 1991-06-19 | 1992-12-30 | AT&T Corp. | Low power signaling using gray codes |
JPH07152730A (ja) * | 1993-11-30 | 1995-06-16 | Toshiba Corp | 離散コサイン変換装置 |
-
1996
- 1996-12-26 JP JP34689796A patent/JP3916277B2/ja not_active Expired - Fee Related
-
1997
- 1997-12-17 US US08/992,575 patent/US6047302A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US6047302A (en) | 2000-04-04 |
JPH10187664A (ja) | 1998-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0158530B1 (en) | Nonrestoring divider | |
US5218563A (en) | Data round-off device for rounding-off m-bit digital data into (m-n)-bit digital data | |
US20070050436A1 (en) | Order-preserving encoding formats of floating-point decimal numbers for efficient value comparison | |
KR940010959B1 (ko) | 부호화 장치 및 방법 | |
US6351569B1 (en) | Coding method, decoding method, coding device and decoding device | |
US5600813A (en) | Method of and circuit for generating zigzag addresses | |
US6057790A (en) | Apparatus and method for data compression/expansion using block-based coding with top flag | |
JP3916277B2 (ja) | 読み出し専用メモリ及び演算装置 | |
KR20010014990A (ko) | 디지털 데이터용 저 디스패리티 코딩 방법 | |
JP3801501B2 (ja) | 符号化装置及び復号装置及び符号化・復号装置及び符号化方法及び復号方法及び符号化・復号方法及びプログラム | |
CN101133405A (zh) | 用于映射数学有限浮点数的系统和方法 | |
CN114866091A (zh) | 基于划分组参考数的差值编码压缩及解压缩方法 | |
US5565864A (en) | Absolute encoder | |
JP2000148442A (ja) | 提供媒体、並びにデータ処理装置およびデータ処理方法 | |
KR101924816B1 (ko) | 바이오 정보 보호를 위한 히스토그램 다중 쉬프팅 기반 가역성 ncDNA 서열 워터마킹 방법 | |
CN117632857A (zh) | 数据处理方法、装置以及设备 | |
US20240045653A1 (en) | Method and Apparatus for Converting to Enhanced Block Floating Point Format | |
KR0129751B1 (ko) | 잉여수시스템에 있어서의 데이타의 엔코딩장치 및 디코딩장치와 방법 | |
CN115115543B (zh) | 一种量子彩色图像中值滤波优化方法及系统 | |
JP4887821B2 (ja) | 線形補間演算器 | |
JP3018990B2 (ja) | 算術符号化装置 | |
JP3106767B2 (ja) | 乗算方法及び乗算回路 | |
US20240036821A1 (en) | Floating-point number decoder | |
US20240036824A1 (en) | Methods and systems employing enhanced block floating point numbers | |
US20220091820A1 (en) | Storage medium and operation device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060227 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060404 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060531 |
|
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: 20070206 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070206 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100216 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110216 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120216 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120216 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130216 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |