WO2012120813A1 - ビットパターン逆置換装置、コンピュータ装置、ビットパターン置換装置、ライタ装置、ビットパターン変換方法、及びプログラム - Google Patents
ビットパターン逆置換装置、コンピュータ装置、ビットパターン置換装置、ライタ装置、ビットパターン変換方法、及びプログラム Download PDFInfo
- Publication number
- WO2012120813A1 WO2012120813A1 PCT/JP2012/001279 JP2012001279W WO2012120813A1 WO 2012120813 A1 WO2012120813 A1 WO 2012120813A1 JP 2012001279 W JP2012001279 W JP 2012001279W WO 2012120813 A1 WO2012120813 A1 WO 2012120813A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- bit
- bit pattern
- data
- strings
- program
- 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.)
- Ceased
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Definitions
- a memory cell of a flash memory has a source electrode, a drain electrode, and a control gate electrode like a MOS transistor, and further has a floating gate provided in an insulator located under the control gate electrode.
- the most basic memory cell stores a 1-bit value (0 or 1) depending on the presence or absence of electrons accumulated in the floating gate, that is, whether or not the floating gate is charged.
- whether the bit value is 0 or 1 is determined by using the magnitude of the current flowing between the source terminal and the drain terminal of the memory cell as an index. .
- Patent Document 4 discloses determining the correspondence between instructions and microprograms (microcodes) so as to reduce the power consumption of computer devices (microcontrollers, microprocessors, etc.). More specifically, in the technique disclosed in Patent Document 4, instructions that are frequently used in an application program are extracted. Then, the bit assignment of the microcode is made so that the toggle rate between the bits of the microcode associated with the frequently used instruction (the probability that the signal of each bit makes a transition from 0 to 1 or 1 to 0) becomes small. Is determined. Thus, the technique disclosed in Patent Document 4 reduces power consumption when the instruction decoder included in the computer apparatus performs instruction decoding.
- the restored original program P 1 is stored in the instruction processing unit 13 even when bit pattern replacement is performed when the program is stored in the nonvolatile memory 10. Is supplied. Therefore, this embodiment does not require design change and function addition of the instruction processing unit 13. For this reason, the present embodiment can reduce the power required to read the program from the nonvolatile memory 10 without increasing the power consumption of the instruction processing unit 13.
- the instruction included in the original program P1 targeted by the present embodiment has another arbitrary length. May be a fixed length instruction or a variable length instruction.
- simple divisions such as the upper 4 bits and the lower 4 bits of an 8-bit instruction are used.
- the instruction has a role like an operator (opcode) and a non-operator (operand). You may sort by.
- the appearance frequency may be measured separately according to these sections, and separate replacement tables and reverse replacement tables may be used.
- Non-transitory computer readable media include various types of tangible storage media (tangible storage medium). Examples of non-transitory computer-readable media include magnetic recording media (eg flexible disks, magnetic tapes, hard disk drives), magneto-optical recording media (eg magneto-optical discs), CD-ROMs (Read Only Memory), CD-Rs, CD-R / W, semiconductor memory (for example, mask ROM, PROM (Programmable ROM), EPROM (Erasable ROM), flash ROM, RAM (random access memory)) are included.
- the program may also be supplied to the computer by various types of temporary computer-readable media. Examples of transitory computer readable media include electrical signals, optical signals, and electromagnetic waves.
- the temporary computer-readable medium can supply the program to the computer via a wired communication path such as an electric wire and an optical fiber, or a wireless communication path.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
逆置換部(11)は、予め定められた対応関係に基づいて、不揮発性メモリ(10)から読み出された第2のデータ(P2)に対してビットパターンの逆置換処理を行うことによって第1のデータ(P1)を生成する。ここで、第1のデータ(P1)に含まれる複数の第1のビット列の各々は、第2のデータ(P2)に含まれる複数の第2のビット列のいずれかに対応し、対応するいずれかの第2のビット列と同じビット長である。さらに、第1のビット列と第2のビット列の対応関係は、複数の第1のビット列中での出現頻度が相対的に高いビットパターンを持つ第1のビット列に対して、不揮発性メモリ(10)からの読み出し時に必要な電力が相対的に小さいビットパターンを持つ第2のビット列を優先的に割り当てるように決定されている。
Description
本発明は、不揮発性メモリへのデータ書き込み、及び不揮発性メモリからのデータ読み出し、並びに、不揮発性メモリと結合されるコンピュータ装置に関する。
マイクロコントローラの低消費電力化が望まれている。例えば、マイクロコントローラの消費電力を極めて小さくできれば、極小電池や環境からの回収電力によってマイクロコントローラを駆動することが可能になるため、医療分野を含む広い分野において新たな用途への適用が期待される。
一般的なマイクロコントローラは、プログラムを実行する命令処理ユニット(i.e. CPU(Central Processing Unit)、キャッシュメモリ、及びメインメモリ等)とともに、命令処理ユニットに供給されるプログラムを格納する不揮発メモリ(i.e. プログラムメモリ)を含む。なお、マイクロコントローラ自体はプログラムメモリを持たない場合もある。プログラムメモリを持たないマイクロコントローラは、外部のプログラムメモリに接続して使用される。マイクロコントローラの動作に要する消費電力を低減するには、命令処理ユニットの消費電力を低減するだけでなく、不揮発メモリの動作に要する消費電力、例えば、不揮発メモリからのプログラムの読み出しに必要な消費電力を低減することも重要である。
マイクロコントローラに搭載される不揮発メモリとしては、PROM(Programmable Read Only Memory)、フラッシュメモリ、MRAM(Magnetic Random Access Memory又はMagnetoresistive Random Access Memory)等が使用される。これらの不揮発性メモリのうち、例えば、フラッシュメモリ及びMRAMは、記録されているデータの値によってデータ読み出しに要する消費電力が異なるという特徴がある。
一例として、フラッシュメモリについて説明する。フラッシュメモリのメモリセルは、MOS構造のトランジスタと同様にソース電極、ドレイン電極、及び制御ゲート電極を有し、さらに制御ゲート電極の下に位置する絶縁体中に設けられた浮遊ゲートを有する。最も基本的なメモリセルは、浮遊ゲートに蓄積された電子の有無、すなわち浮遊ゲートが帯電しているか否かによって1ビット値(0又は1)の記憶を行う。フラッシュメモリのメモリセルに記録されたデータを読み出すとき、ビット値が0であるか1であるかは、当該メモリセルのソース端子とドレイン端子の間に流れる電流の大きさを指標として判定される。
フラッシュメモリの構成の一例では、メモリセルのソース端子とドレイン端子の間に電源電圧が印加される。そして、フラッシュメモリに与えられるアドレス信号によって指定されたメモリセルの制御ゲート端子にはゼロバイアスが印加される。このとき、メモリセルは、浮遊ゲートが帯電しているときはエンハンスメント型のMOSトランジスタとして動作する。つまり、メモリセルのソース端子とドレイン端子の間に電流は実質的に流れない。一方、浮遊ゲートが帯電していないとき、メモリセルは閾値電圧が負であるデプレッション型のMOSトランジスタとして動作するため、メモリセルのソース端子とドレイン端子の間に電流が流れる。したがって、浮遊ゲートが帯電した状態に対応付けられた値(例えば1)がメモリセルに記録されているときは、浮遊ゲートが帯電していない状態に対応付けられた値(例えば0)が記録されている場合に比べて、メモリセルからのデータ読み出し時の消費電流(消費電力)が大きくなる。
ところで、マイクロコンピュータ及びマイクロプロセッサ等のコンピュータ装置に関しては、プログラムを格納するために必要な不揮発性メモリの記憶領域を低減するために、プログラム圧縮を行うことが知られている(例えば特許文献1~3)。プログラム圧縮の方法は大きく分けて2つ提案されている。一つは短ビット数で表現した命令セットを追加することによって、プログラムサイズを低減する方法であり、特許文献1に開示された方法がこれに該当する。他の一つはハフマン符号などの符号理論に基づくコンパクト符号を用いてプログラムを圧縮する方法であり、特許文献2及び3に開示された手法がこれに該当する。
また、特許文献4は、コンピュータ装置(マイクロコントローラ、マイクロプロセッサ等)の消費電力を低減するように、命令とマイクロプログラム(マイクロコード)との対応関係を決定することを開示している。具体的に述べると、特許文献4に開示された手法では、アプリケーションプログラムにおける使用頻度の高い命令を抽出する。そして、使用頻度の高い命令に対応づけられるマイクロコードのビット間におけるトグル率(各ビットの信号が0から1、又は1から0の遷移を行う確率)が小さくなるように、マイクロコードのビットアサインが決定される。これにより、特許文献4に開示された手法は、コンピュータ装置が有する命令デコーダが命令デコードを行う際の消費電力を低減する。
上述したように、フラッシュメモリ及びMRAMなどの不揮発性メモリは、記録しているデータビット値によってデータ読み出し時の消費電力が異なる。したがって、不揮発性メモリの記録データによっては、特に、不揮発性メモリからの読み出し時に要する消費電力の高いデータビット値が記録データに多く含まれる場合には、データ読み出しに要する消費電力が大きくなるという問題がある。例えば、マイクロコントローラのプログラムメモリについて考えると、プログラムメモリに記録されたプログラム(又は圧縮プログラム)が読み出し時の消費電力の高いデータビット値を多く含む場合、プログラムメモリからのプログラム(又は圧縮プログラム)の読み出しに要する消費電力が大きくなるという問題がある。
特許文献1~3に開示されているようなプログラム圧縮の手法は、プログラムメモリに記録すべきデータ量を削減できる。このため、プログラム圧縮の手法は、元のプログラムをそのままプログラムメモリに記録する場合に比べて、プログラム(具体的には圧縮プログラム)の読み出しに必要な消費電力を低減できることが期待される。しかしながら、圧縮プログラムが不揮発性メモリ(プログラムメモリ)からの読み出し時の消費電力の高いデータビット値を多く含む場合には、圧縮プログラムの読み出しに要する消費電力が大きくなってしまう。このため、特許文献1~3に開示されているようなプログラム圧縮の手法とは別に、不揮発性メモリへの圧縮プログラムの記録方法を工夫することで、不揮発性メモリからの圧縮プログラムの読み出しに要する消費電力を低減できることが望ましい。
また、特許文献4に開示されている手法を用いることで、出現頻度の高い命令を示すマイクロコード中のビットのトグル率が低減される。しかしながら、例えば、出現頻度の高い命令を示すマイクロコードが不揮発性メモリ(プログラムメモリ)からの読み出し時の消費電力の高いデータビット値を多く含む場合には、プログラムの読み出しに要する消費電力が大きくなってしまう。このため、特許文献4に開示されている手法とは別に、不揮発性メモリへのプログラムの記録方法を工夫することで、不揮発性メモリからのプログラムの読み出しに要する消費電力を低減できることが望ましい。
なお、上述した不揮発性メモリの消費電力に関する問題が発生する状況は、不揮発性メモリをマイクロコントローラ用のプログラムメモリとして利用する場合に限られない。つまり、上述した問題は、記録しているデータビット値によってデータ読み出し時の消費電力が異なる不揮発性メモリを利用する他のシステムにおいても発生し得る問題である。
本発明の第1の態様に係るビットパターン逆置換装置は、不揮発性メモリから読み出された第2のデータに対してビットパターンの逆置換処理を行うことによって第1のデータを生成する逆置換部を含む。ここで、前記第1のデータは複数の第1のビット列を含み、前記第2のデータは複数の第2のビット列を含む。前記複数の第1のビット列の各々は、前記複数の第2のビット列のいずれかに対応するとともに、対応する前記いずれかの第2のビット列と同じビット長である。さらに、前記第1のビット列と前記第2のビット列の対応関係は、前記複数の第1のビット列中での出現頻度が相対的に高いビットパターンを持つ第1のビット列に対して、前記不揮発性メモリからの読み出し時に必要な電力が相対的に小さいビットパターンを持つ第2のビット列を優先的に割り当てるように決定されている。そして、前記逆置換部により行われる前記逆置換処理は、前記対応関係に基づいて、前記複数の第2のビット列を前記複数の第1のビット列に変換する処理を含む。
つまり、上述した本発明の第1の態様は、命令処理部などによって使用される第1のデータを、第2のデータとして不揮発性メモリに記録しておくことができる。第2のデータでは、第1のデータ中での出現頻度が相対的に高いビットパターンが、不揮発性メモリからの読み出しに要する消費電力が相対的に小さいビットパターンに置換されている。したがって、不揮発性メモリに記録される第2のデータは、第1のデータに比べて、不揮発性メモリからの読み出しに要する消費電力が小さいビット値を多く含む。このため、上述した本発明の第1の態様は、不揮発性メモリ(具体的には、記録しているデータビット値によってデータ読み出し時の消費電力が異なる不揮発性メモリ)からのデータ読み出しに要する消費電力を低減することができる。
本発明の第2の態様に係るコンピュータ装置は、上述した第1の態様に係るビットパターン逆置換装置と、命令処理部を含む。本態様における前記第1のデータは、前記命令処理部よって実行されるプログラムの少なくとも一部、又は前記プログラムの少なくとも一部が圧縮された圧縮データである。そして、前記命令処理部は、前記逆置換によって生成された少なくとも1つの第1のビット列によって表わされる命令、又は前記少なくとも1つの第1のビット列に対する伸張処理を行って得られる命令を解読して実行するよう構成されている。
つまり、本発明の第2の態様は、上述した本発明の第1の態様をプログラムメモリからのプログラム(又は圧縮プログラム)の読み出しに適用したものである。本発明の第2の態様によれば、プログラムメモリからの読み出しに要する消費電力が小さいビット値を多く含むようにビットパターン変換が行われた状態で、プログラム(又は圧縮プログラム)をプログラムメモリに記録できる。したがって、本発明の第2の態様は、プログラムメモリからのプログラム(又は圧縮プログラム)の読み出しに要する消費電力を低減することができる。なお、コンピュータ装置の動作中はプログラム(又は圧縮プログラム)の書き換えは行われない。また、命令の使用頻度の偏りに起因して、プログラムにはビットパターンの出現頻度に偏り(一様からのずれ)が生じやすいことが想定される。したがって、プログラムメモリからのプログラム(又は圧縮プログラム)読み出しは、本発明の第1の態様を適用することによる効果が大きいアプリケーションの1つである。
本発明の第3の態様に係るビットパターン置換装置は、上述した第1の態様に係るビットパターン逆置換装置と反対の処理を行う。すなわち、当該ビットパターン置換装置は、不揮発性メモリに記録される前の第1のデータに対してビットパターンの置換処理を行うことによって第2のデータを生成する置換部を含む。ここで、前記第1のデータは複数の第1のビット列を含み、前記第2のデータは複数の第2のビット列を含む。前記第1及び第2のビット列のビット長、これらの対応関係は、上述した第1の態様と同様である。そして、前記置換部により行われる前記置換処理は、前記対応関係に基づいて、前記複数の第1のビット列を前記複数の第2のビット列に変換する処理を含む。
つまり、本発明の第3の態様は、命令処理部(i.e. CPU、プロセッサコア)等によって使用される第1のデータを、第2のデータとして不揮発性メモリに記録しておくことができる。第2のデータは、第1のデータに比べて、不揮発性メモリからの読み出しに要する消費電力が小さいビット値を多く含む。このため、上述した本発明の第3の態様は、不揮発性メモリ(具体的には、記録しているデータビット値によってデータ読み出し時の消費電力が異なる不揮発性メモリ)からのデータ読み出しに要する消費電力の低減に寄与することができる。
本発明の第4の態様に係るライタ装置は、上述した第3の態様に係るビットパターン置換装置と、書き込み処理部を含む。前記書き込み処理部は、前記ビットパターン置換装置によって生成された前記第2のデータを前記不揮発性メモリに書き込むことができるよう構成されている。
本発明の第5の態様に係るプログラムは、上述した第3の態様に係るビットパターン置換装置による置換処理をコンピュータに行わせるためのプログラムである。
上述した本発明の各態様は、記録しているデータビット値によってデータ読み出し時の消費電力が異なる不揮発性メモリからのデータ読み出しに要する消費電力の低減に寄与することができる。
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一又は対応する要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略される。
<発明の実施の形態1>
本実施の形態では、コンピュータに実行される命令シーケンスを含むプログラムを不揮発性メモリに記録する場合について説明する。図1は、本実施の形態に係るコンピュータ1及びライタ5の構成例を示している。コンピュータ1は、例えば、マイクロコントローラ、マイクロプロセッサ、DSP(Digital Signal Processor)等である。図1に示されたコンピュータ1は、不揮発性メモリ10、逆置換部11、逆置換テーブル12、及び命令処理部13を含む。
本実施の形態では、コンピュータに実行される命令シーケンスを含むプログラムを不揮発性メモリに記録する場合について説明する。図1は、本実施の形態に係るコンピュータ1及びライタ5の構成例を示している。コンピュータ1は、例えば、マイクロコントローラ、マイクロプロセッサ、DSP(Digital Signal Processor)等である。図1に示されたコンピュータ1は、不揮発性メモリ10、逆置換部11、逆置換テーブル12、及び命令処理部13を含む。
不揮発性メモリ10は、例えばフラッシュメモリ又はMRAMであり、記録しているデータビット値によってデータ読み出し時の消費電力が異なる特徴を持つ。不揮発性メモリ10は、ビットパターン置換されたプログラムP2を記録している。プログラムP2は、ライタ5によって元プログラムP1に対してビットパターン置換処理を行うことによって生成され、不揮発性メモリ10に格納される。ここで、ライタ5によるビットパターン置換処理は、元プログラムP1中での出現頻度が相対的に高いビットパターンを持つ第1のビット列を、同一ビット長であって、かつ不揮発性メモリ10からの読み出し時に必要な電力が相対的に小さいビットパターンを持つ第2のビット列に置換するように行われている。このようにビットパターンが置換されたプログラムP2を不揮発性メモリ10に記録することで、元プログラムP1をそのまま記録する場合に比べて、不揮発性メモリ10からの読み出しに必要な消費電力を低減できる。
逆置換部11は、逆置換テーブル12を参照することで、不揮発性メモリ10から読み出されたプログラムP2に対してビットパターン逆置換処理を行う。これにより、逆置換部11は、元プログラムP1を復元する。つまり、ビットパターン逆置換処理は、上述したライタ5によるビットパターン置換処理の逆の処理である。逆置換テーブル12は、不揮発性メモリ10への書き込み前に行われるビットパターン置換処理における元プログラムP1と置換後のプログラムの間のビット列(ビットパターン)の対応関係を規定する。逆置換テーブル12は、不揮発性メモリに保持されてもよいし、揮発性メモリに保持されてもよい。例えば、逆置換テーブル12は、逆置換前のビット列をアドレスとして入力すると逆置換後のビット列を出力できるように、SRAM(Static Random Access Memory)を用いたルックアップテーブルとして構成されてもよい。逆置換テーブル12を揮発性メモリに保持する場合、コンピュータ1の動作時に、不揮発性メモリ10又は他の不揮発性メモリ(不図示)から揮発性メモリに逆置換テーブル12をロードすればよい。逆置換部11によるビットパターン逆置換処理の具体例、及び逆置換テーブル12の具体例については後述する。
命令処理部13は、逆置換部11によって復元されたプログラムP1に含まれる命令群を取得し、これらの命令を解読して実行する。具体的には、命令処理部13は、CPU、キャッシュメモリ、メインメモリ等を含む。CPUは、命令をフェッチ及び解読(デコード)し、デコードされた命令に応じた処理(演算、ロード/ストア)を行う。
なお、図1の例では、不揮発性メモリ10がコンピュータ1の内部に含まれているが、不揮発性メモリ10は、コンピュータ1の外部に配置されてもよい。例えば、コンピュータ1がマイクロコントローラである場合、不揮発性メモリ10は、命令処理部13とは別のIC(Integrated Circuit)チップに配置されてもよい。
次に、図1に示されたライタ5の構成について説明する。ライタ5は、元プログラムP1に含まれる出現頻度の高いビットパターンを不揮発性メモリ10からの読み出しに要する消費電力が小さいビットパターンに対応付けるとともに、ビットパターン置換処理を行ってプログラムP2を生成する。ライタ5は、計測部50、テーブル生成部51、置換テーブル52、置換部53、書き込み処理部54を含む。
計測部50は、元プログラムP1におけるビットパターン毎の出現頻度を計測する。一例として4ビット単位でビットパターン置換が行われる場合を考える。この場合、計測部50は、元プログラムP1を各々が4ビット長の複数のビット列(第1のビット列)に分割し、各ビット列のビットパターンを判別し、ビットパターン毎の出現頻度を計測すればよい。具体的には、4ビット長のビット列が取り得るビットパターンは全部で16通りであるから、計測部50は、各ビット列が16通りのいずれであるかを判別し、16通りのパターン毎の出現数を数えればよい。
テーブル生成部51は、計測部50によるビットパターン出現頻度の計測結果に基づいて、置換前の元プログラムP1に含まれるビットパターン(第1のビット列)と置換後のプログラムP2に含まれるビットパターン(第2のビット列)との対応関係を決定する。例えば、4ビット単位でビットパターン置換が行われる場合、テーブル生成部51は、置換前の16通りのビットパターンと置換後の16通りのビットパターンの対応関係を決定すればよい。
より、具体的に述べると、テーブル生成部51は、元プログラムP1中での出現頻度が相対的に高いビットパターンに対して、不揮発性メモリ10からの読み出し時に必要な電力が相対的に小さいビットパターンを優先的に割り当てるように、置換前後のビットパターンの対応関係を決定する。言い換えると、元プログラムP1中での出現頻度が相対的に高いビットパターンを持つ第1のビット列は、データビット値1及び0のうち不揮発性メモリ10からの読み出しに要する電力が低い一方のビット値を相対的に多く含むビットパターンを持つ第2のビット列に対応付けられる。
置換前後でのビットパターンの対応関係の決定には、様々なバリエーションが考えられる。第1の例として、元プログラムP1中で最も出現頻度が高いビットパターンは、不揮発性メモリ10からの読み出しに要する電力が最も低いビットパターンに対応付けてもよい。不揮発性メモリ10からの読み出しに要する電力が最も低いビットパターンは、データビット値1及び0のうち不揮発性メモリ10からの読み出しに要する電力が低い一方のビット値を最も多く含むビットパターンである。例えば、値1より値0のほうが不揮発性メモリ10からの読み出しに要する電力が小さい場合、元プログラムP1中で最も出現頻度が高いビットパターンを、値0のみを含むビットパターン(i.e. 0000)に対応付ければよい。
第2の例として、元プログラムP1中での出現頻度の高いビットパターンから順に、不揮発性メモリ10からの読み出しに要する電力が相対的に低いビットパターンと対応付けてもよい。言い換えると、元プログラムP1中での出現頻度の高いビットパターンから順に、データビット値1及び0のうち不揮発性メモリ10からの読み出しに要する電力が低い一方のビット値を相対的に多く含むビットパターンと対応付けてもよい。この場合、テーブル生成部51は、元プログラムP1中での出現頻度が高い順にビットパターンを整列したリストと、不揮発性メモリ10からの読み出しに要する電力が低い順にビットパターンを整列したリストとを照合し、2つのリストにおける同一順位のビットパターンどうしを対応付ければよい。
不揮発性メモリ10からの読み出しに要する電力が低い順にビットパターンを整列したリストは、例えば、外部からライタ5に供給すればよい。また、テーブル生成部51は、各ビットパターンに関して不揮発性メモリ10からの読み出し電力の実測値又は推定値を取得し、これに基づいて各ビットパターンの順位を決定してもよい。また、テーブル生成部51は、不揮発性メモリ10からの読み出し電力の推定値を各ビットパターンについて計算してもよい。この場合、値1及び0それぞれの1ビット読み出しに要する電力値を基準値としてテーブル生成部51に与えればよい。
第3の例として、ビットパターンの置換は、全てのビットパターンに対してではなく、一部のビットパターンに対してのみ行ってもよい。置換対象とされないビットパターンに関しては、ビットパターン置換前後で同一のビットパターンを対応付ければよい。例えば、出現頻度が基準レベル以上であったビットパターンと、これらを置換するために必要なその他のビットパターンを置換対象としてもよい。また、例えば、出現頻度の順位が基準値以上であったビットパターンと、これらを置換するために必要なその他のビットパターンを置換対象としてもよい。
さらに、置換前後でのビットパターンの対応関係は、上述したいくつかの例に限定されない。つまり、ビットパターン置換後のプログラムP2は、元プログラムP1と比べて、データビット値1及び0のうち不揮発性メモリ10からの読み出しに要する電力が低い一方のビット値を多く含む状態となっていればよい。したがって、置換前後の対応関係の決定は、置換後のプログラムP2がこのような状態となるように決定されていればよい。
さらに、テーブル生成部51は、置換前後でのビットパターンの対応関係を示す置換テーブル52及び逆置換テーブル12を生成する。置換テーブル52は、後述する置換部53によって使用される。逆置換テーブル12は、ビットパターン逆置換処理のためにコンピュータ1に供給される。逆置換テーブル12については既に説明したのでここでは説明を省略する。
置換テーブル52は、不揮発性メモリ10への書き込み前に行われるビットパターン置換処理における元プログラムP1と置換後のプログラムP2の間のビット列(ビットパターン)の対応関係を規定する。置換テーブル52は、不揮発性メモリに保持されてもよいし、揮発性メモリに保持されてもよい。例えば、置換テーブル52は、置換前のビット列をアドレスとして入力すると置換後のビット列を出力できるように、SRAMを用いたルックアップテーブルとして構成されてもよい。
置換部53は、元プログラムP1を分割単位と同じビット長で分割し、置換テーブル52で定められた対応関係に従って元プログラムP1に含まれる各ビット列(第1のビット列)のビットパターンを置換する。そして、置換部53は、ビットパターン置換によって得られたビット列(第2のビット列)を順番に連結することで、置換後のプログラムP2を生成する。
書き込み処理部54は、置換部53によって生成されたプログラP2を不揮発性メモリ10に書き込む。
図1に示したライタ5は、コンピュータ1用の専用デバイスであってもよい。また、ライタ5は、基板に実装されたコンピュータ1に書き込みを行うデバイス(書き込み処理部54に相当)と、プログラムP2を生成して当該デバイスに供給するPC(Personal Computer)及びアプリケーションプログラム(計測部50、テーブル生成部51、置換部53に相当)の組合せであってもよい。
図2及び3は、ライタ5及びコンピュータ1の動作フローを示すフローチャートである。まず、図2を用いてライタ5の動作フローを説明する。ステップS11では、計測部50は、元プログラムP1におけるビットパターン毎の出現頻度を計測する。ステップS12では、テーブル生成部51は、ビットパターン毎の出現頻度に基づいて、元プログラムP1のビットパターン(元ビットパターン)と置換後のプログラムP2のビットパターン(書き込みビットパターン)との対応関係を示す置換テーブル52及び逆置換テーブル12を生成する。ステップS13では、置換部53は、置換テーブル52に従って、元プログラムP1に対するビットパターン置換処理を行う。ステップS14では、書き込み処理部54は、ビットパターンを置換されたプログラムP2を不揮発性メモリ10に書き込む。
次に、図3を用いてコンピュータ1の動作フローを説明する。ステップS21では、命令処理部13は、ビットパターンを置換されたプログラムP2を不揮発性メモリ10から読み出す。例えば、命令処理部13は、読み出すべき命令に対応するメモリアドレスを不揮発性メモリ10へ送ればよい。不揮発性メモリ10は、与えられたメモリアドレスに応答して、当該アドレスに配置されている命令(ビットパターンが置換された命令)を逆置換部11に出力する。ステップS22では、逆置換部11は、逆置換テーブル12に従って、プログラムP2に対するビットパターン置換処理を行う。具体的には、不揮発性メモリ10から読み出された命令(ビットパターンが置換された命令)をライタ5での元プログラムP1の分割単位と同じビット長で分割し、逆置換テーブル12で定められた対応関係に従って各ビット列(第2のビット列)のビットパターンを逆置換する。これにより、逆置換部11は、元プログラムP1に含まれる命令を復元する。ステップS23では、命令処理部13は、復元された元プログラムP1(つまり復元された命令)を解読して実行する。
以上に述べたことから理解されるように、本実施の形態は、命令処理部13によって使用される元プログラムP1を、ビットパターンが置換されたプログラムP2として不揮発性メモリ10に記録しておくことができる。プログラムP2では、元プログラムP1中での出現頻度が相対的に高いビットパターンが、不揮発性メモリ10からの読み出しに要する消費電力が相対的に小さいビットパターンに置換されている。したがって、不揮発性メモリ10に記録されるプログラムP2は、元プログラムP1に比べて、不揮発性メモリ10からの読み出しに要する消費電力が小さいビット値を多く含む。このため、本実施の形態は、不揮発性メモリ10からのプログラム読み出しに要する消費電力を低減することができる。
また、コンピュータ1に逆置換部11を配置することによって、不揮発性メモリ10へのプログラムの格納時にビットパターン置換が行われた場合であっても、命令処理部13には復元された元プログラムP1が供給される。したがって、本実施の形態は、命令処理部13の設計変更および機能追加を必須としない。このため、本実施の形態は、命令処理部13の消費電力を増加させることなく、不揮発性メモリ10からのプログラム読み出しに要する電力を低減することができる。
さらに、本実施の形態では、元プログラムP1と置換されたプログラムP2の間のビットパターン置換を、置換前後のビット列が同一ビット長となるように行っている。つまり、ビット長の圧縮及び伸張を行っていない。このため、プログラムP2に含まれる命令(ビットパターンが置換された命令)の不揮発性メモリ10上でのアドレスを元プログラムP1の対応する命令のアドレスと同一とすることができる。したがって、本実施の形態は、命令処理部13から不揮発性メモリ10へのメモリアドレス転送経路にアドレス変換機構を追加する必要がないという利点がある。
以上に述べた効果を集約することによって、本実施の形態は、簡潔で電力消費の小さい逆置換部11を用いることで、命令処理部13の消費電力を増加させることなく、不揮発性メモリ10からのプログラム読み出しに要する電力を低減することができるため、コンピュータ1の消費電力を低減することができる。
続いて以下では、置換テーブル52及び逆置換テーブル12の生成、ビットパターンの置換処理及び逆置換処理の具体例について説明する。図4は、本実施の形態に係るコンピュータ1のより具体的な構成例を示すブロック図である。図4の例では、元プログラムP1に含まれる命令は固定長の8ビット命令であると仮定している。また、ビットパターンの置換及び逆置換は、4ビット長のビット列を単位として行われる。さらに、不揮発性メモリ10は、記録されたビット値が1である場合の方が0である場合に比べて読み出し時の消費電力が大きいと仮定する。
図4の例では、逆置換テーブル12は、SRAMを用いたルックアップテーブル(LUT)121に配置される。4ビット単位でビット置換を行う場合、ビットパターンは全部で16通りである。このため、LUT121は、16個の4ビットデータを記憶できる容量を有していればよい。
さらに、図4の例では、逆置換部11は、2つのマルチプレクサ111及び112を含む。各マルチプレクサは、LUT121に接続された16個のデータ入力端子(4ビット幅)と、不揮発性メモリ10の出力端子に接続された1個のデータ選択端子(4ビット幅)と、命令処理部13に接続された1個のデータ出力端子(4ビット幅)を有する。マルチプレクサ111のデータ選択端子は、不揮発性メモリ10の8ビット出力のうち上位4ビットを選択信号として受信する。マルチプレクサ111は、データ選択端子に与えられた選択信号に対応する1つのビット列を、LUT121からの16通りのビット列の中から選択する。選択されたビット列は、マルチプレクサ111のデータ出力端子から出力され、命令処理部13に供給される。マルチプレクサ112は、不揮発性メモリ10の8ビット出力のうち下位4ビットを選択信号として受信し、マルチプレクサ111と同様に動作する。
次に、図5を用いて、ビットパターンの出現頻度の計測と、置換テーブル52及び逆置換テーブル12の生成の具体例について説明する。図5に示された計測結果の一例は、8ビット固定長命令を含む元プログラムP1を4ビット単位で分割し、4ビット列が取り得る16通りのパターンの出現頻度を計測して得られる。図5の例では、元プログラムP1において出現頻度の多いビットパターンから順に、不揮発性メモリ10からの読み出し電力が小さいビットパターンと対応付けられている。例えば、出現数が最も多い元のビットパターン"1111"は、読み出し電力が最も小さい書き込みビットパターン"0000"に対応付けられている。また、出現数が2番目に多い元のビットパターン"1101"は、値1を1つだけ含む書き込みビットパターン"0001"に対応付けられている。そして、出現数が最も少ない元のビットパターン"0000"は、読み出し電力が最も大きい書き込みビットパターン"1111"に対応付けられている。
図5に示す測定結果に基づいて、テーブル生成部51は、置換テーブル52及び逆置換テーブル12を生成する。図5に示された置換テーブル52は、置換すべき元のビット列をアドレスとして与えられることによって、置換後のビット列を出力するルックアップテーブル(LUT)として動作する。同様に、図5に示された逆置換テーブル12は、逆置換すべき置換されたビット列をアドレスとして与えられることによって、逆置換後の元のビット列を出力するLUTとして動作する。
図6は、ライタ5が有する置換部53によるビットパターン置換処理の具体例を示している。例えば、元プログラムP1のアドレス0000H番地に記録されている元の8ビット命令の上位4ビットは"1111"である。この4ビット値 "1111"を16進数のアドレス(FH)として図6に示された置換テーブル52に与えると、FH番地に記録されている4ビット値"0000"が置換後のビット列として得られる。したがって、元プログラムP1の4ビット値"1111"は、"0000"に置換される。同様にして、元プログラムP1のアドレス0000H番地に記録されている元の8ビット命令の下位4ビット"0001"は、置換テーブル52の1H番地に記憶されている"0111"に置換される。これらのビット操作によって、元の8ビット命令"1111_0001"は、"0000_0111"に置換される。
図7は、コンピュータ1が有する逆置換部11によるビットパターン逆置換処理の具体例を示している。逆置換部11は、不揮発性メモリ10から読み出された置換された8ビット命令を受信し、この命令の上位4ビットをマルチプレクサ111によって逆置換し、下位4ビットをマルチプレクサ112によって逆置換する。これにより、逆置換部11は、元の8ビット命令を復元して命令処理部13に供給する。例えば、図6の置換されたプログラムP2のアドレス0000H番地に記録されている置換された8ビット命令の上位4ビットは"0000"である。この4ビット値 "0000"を16進数のアドレス(0H)として図7に示された逆置換テーブル12(LUT121)に与えると、0H番地に記録されている4ビット値"1111"が元のビット列として得られる。したがって、置換されたプログラムP2の4ビット値"0000"は、"1111"に逆置換される。同様にして、置換されたプログラムP2のアドレス0000H番地に記録されている置換された8ビット命令の下位4ビット"0111"は、逆置換テーブル12(LUT121)の7H番地に記憶されている"0001"に逆置換される。これらのビット操作によって、置換された8ビット命令"0000_0111"は、元の8ビット命令"1111_0001"に復元される。
次に、図8A及び8Bを参照して、本実施の形態によって得られる省電力効果について説明する。図4に示した逆置換部11(つまりマルチプレクサ111及び112)及び小容量なSRAMで構成されたLUT121によるビットパターン逆置換動作に要する電力を1と仮定する。さらに、小容量なSRAMよりも一般的に読み出し電力の大きい不揮発性メモリ10からの1ビット値0の読み出し電力を5と仮定し、不揮発性メモリ10からの1ビット値1の読み出し電力を15と仮定する。これらの仮定を適用すると、ある元プログラムP1を不揮発性メモリ10に記録した場合に想定される読み出し電力は図8Aに示すように計算される。そして、置換されたプログラムP2を不揮発性メモリ10に記録した場合に想定される読み出し電力は図8Bに示すように計算される。つまり、本実施の形態を採用せずに、元プログラムP1を不揮発性メモリ10から読み出して実行する場合は、54,880の電力を消費する。これに対して、本実施の形態を採用する場合、逆置換部11及びLUT121の動作電力として命令の総数に相当する1,084の電力を消費するが、不揮発性メモリ10からの読み出し電力が31,840に低減される。このため、本実施の形態を採用し、置換されたプログラムP2を不揮発性メモリ10から読み出して実行する場合は、32,924の消費電力で済む。
なお、図4~8を用いて説明した具体例では、8ビット固定長命令の場合について説明したが、本実施の形態が対象とする元プログラムP1に含まれる命令は、他の任意の長さの固定長命令であってもよいし、可変長命令であってもよい。また、本実施の形態の説明では、8ビット命令の上位4ビットと下位4ビットのように単純な区分を用いたが、命令を演算子(オペコード)と非演算子(オペランド)のような役割によって区分してもよい。さらに、これらの区分に応じて別々に出現頻度を計測し、別々の置換テーブル及び逆置換テーブルを用いてもよい。また、命令の一部(例えばオペコード)についてのみビットパターンの置換・逆置換処理の対象とし、他の一部は置換・逆置換処理の対象外としてもよい。これらの変形については、後述する本発明の実施の形態2及び3において説明する。
また、本実施の形態によって得られる消費電力の低減効果は、元プログラムP1に含まれるビット値の偏り具合に依存する。例えば、元プログラムP1に含まれるビット値1とビット0の割合が同じであれば、本実施の形態で述べたビットパターン置換による消費電力の低減効果を得ることは困難である。従って、元プログラムP1中でのビットパターンの出現頻度の偏り具合に基づいて、ビットパターンの逆置換処理を行うことによるコンピュータ1の省電力効果が得られないと判定される場合には、不揮発性メモリ10に置換されたプログラムP2ではなく元プログラムP1を記録し、逆置換部11及び逆置換テーブル12の動作を停止してもよい。具体的には、コンピュータ1に外部から制御可能な制御端子を設け、この制御端子を介して逆置換部11及び逆置換テーブル12の動作を停止できるようにしてもよい。例えば、逆置換部11及び逆置換テーブル12(LUT121として用いるSRAM)への電源供給を遮断する遮断回路と、逆置換部11を迂回する信号経路とセレクタを設け、遮断回路及びセレクタの動作をコンピュータ1の外部から制御できるようにコンピュータ1を構成すればよい。
また、既に述べた通り、本実施の形態に係るライタ5が有する計測部50、テーブル生成部51、及び置換部53の機能は、PC等のコンピュータシステムに1又は複数のプログラムを実行させることによって実現してもよい。具体的には、元プログラムP1におけるビットパターン出現頻度の計測するための第1の命令群と、置換前後のビットパターンの対応関係を生成するための第2の命令群と、ビットパターン置換処理を行うための第3の命令群とをプロセッサがアクセス可能なメモリに記憶しておけばよい。これら第1~第3の命令群は、1のプログラムとして提供されてもよいし、複数のプログラムに分割されて提供されてもよい。コンピュータシステムは、第1~第3の命令群を実行することによって、計測部50、テーブル生成部51、及び置換部53として動作する。
これらのプログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD-ROM(Read Only Memory)、CD-R、CD-R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(random access memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
<発明の実施の形態2>
上述した発明の実施の形態1では、元プログラムP1の全体を対象としてビットパターン毎の出現頻度を計測し、プログラムP1の全体に対して1つのビットパターン対応関係(1組の置換テーブル及び逆置換テーブル)を生成する例を示した。本実施の形態では、元プログラムP1を複数の領域に区分し、ビットパターン毎の出現頻度を各領域について別々に計測し、各領域に対して個別にビットパターン対応関係を生成する例について説明する。
上述した発明の実施の形態1では、元プログラムP1の全体を対象としてビットパターン毎の出現頻度を計測し、プログラムP1の全体に対して1つのビットパターン対応関係(1組の置換テーブル及び逆置換テーブル)を生成する例を示した。本実施の形態では、元プログラムP1を複数の領域に区分し、ビットパターン毎の出現頻度を各領域について別々に計測し、各領域に対して個別にビットパターン対応関係を生成する例について説明する。
本実施の形態に係るコンピュータ2及びライタ6の構成例を図9に示す。ライタ6が有する計測部60は、元プログラムP1を2つの領域に分割し、2つの領域について別々にビットパターンの出現頻度を計測する。例えば、元プログラムP1が(m+n)ビット命令を含む場合、上位のmビットを第1の領域とし、下位のnビットを第2の領域としてもよい。この場合、計測部60は、第1の領域(上位mビット)におけるビットパターンの出現頻度と、第2の領域(下位nビット)におけるビットパターン出現頻度を別々に計測する。また、命令中のオペコードを第1の領域とし、オペランドを第2の領域としてもよい。
テーブル生成部61は、2つの領域に関するビットパターンの出現頻度の計測結果に基づいて、2つのビットパターン対応関係(2組の置換テーブル及び逆置換テーブル)を生成する。テーブル生成部61による対応関係の決定手法は、上述した実施の形態1のテーブル生成部51と同様とすればよい。
置換部63は、テーブル生成部61によって生成された2つの置換テーブル621及び622を適用して、ビットパターン置換されたプログラムP2を生成する。
図9に示されたコンピュータ2は、SRAMを用いた2つのLUT121及び122を有する。LUT121及び122は、テーブル生成部61によって生成された2つの逆置換テーブルを保持する。図9の例では、LUT121は、8ビット命令の上位4ビットに対する逆置換テーブルを保持する。また、LUT122は、8ビット固定長命令の下位4ビットに対する逆置換テーブルを保持する。
逆置換部11に配置されたマルチプレクサ111は、LUT121と結合され、不揮発性メモリ10から読み出された置換されたプログラムP2に含まれる8ビット命令の上位4ビットに対する逆置換を行う。また、マルチプレクサ112は、LUT122と結合され、置換されたプログラムP2に含まれる8ビット命令の下位4ビットに対する逆置換を行う。これにより、元プログラムP1の8ビット命令が復元される。
元プログラムP1に含まれる複数の領域(例えば8ビット命令の上位4ビットと下位4ビット)の間でビットパターンの出現頻度の偏り方に大きな違いが存在する場合が考えられる。本実施の形態は、このような場合に特に有効である。すなわち、本実施の形態は、元プログラムに含まれる各領域に対して適切なビットパターン置換を行うことができるため、不揮発性メモリ10からのプログラムP2の読み出しに要する電力をより一層低減できる。
<発明の実施の形態3>
本実施の形態では、元プログラムP1を複数の領域に区分し、このうち一部の領域に対してビットパターン置換処理を行い、他の領域に対してビットパターン置換処理を行わない例を説明する。
本実施の形態では、元プログラムP1を複数の領域に区分し、このうち一部の領域に対してビットパターン置換処理を行い、他の領域に対してビットパターン置換処理を行わない例を説明する。
本実施の形態に係るコンピュータ3及びライタ7の構成例を図10に示す。図10の例では、元プログラムP1及び置換されたプログラムP2に含まれる8ビット命令の上位4ビットがビットパターン置換・逆置換の対象とされる。これに対して、8ビット命令の下位4ビットに対しては、ビットパターン置換・逆置換が行われない。
計測部70は、発明の実施の形態2で述べた計測部60と同様に、元プログラムP1を2つの領域に分割し、2つの領域について別々にビットパターンの出現頻度を計測する。ここでは、元プログラムP1に含まれる8ビット命令の上位4ビットを第1の領域とし、下位4ビットを第2の領域とする場合を考える。
ここで、ビットパターンの出現頻度の計測を行った結果、第1の領域(上位4ビット)におけるビットパターンの出現頻度は図5の具体例に示したようなビットパターンによる顕著な偏りがあるが、第2の領域(下位4ビット)におけるビットパターンの出現頻度は各ビットパターンの出現数がほぼ同数であったと仮定する。この場合、第2の領域(下位4ビット)についてはビットパターンの置換・逆置換を行うことによる不揮発性メモリ10の読み出し電力の低減効果を得ることができない。このため、テーブル生成部71は、第1の領域(上位4ビット)に対してのみ置換テーブル及び逆置換テーブルを生成する。置換部73は、置換テーブル72を適用して第1の領域(上位4ビット)に対してのみビットパターン置換を行うとともに、第2の領域(下位4ビット)に対しては元プログラムP1のビット列をそのまま用いて、置換されたプログラムP2を生成する。
図10に示されたコンピュータ3は、SRAMを用いた1つのLUT121を有する。UT121は、テーブル生成部61によって生成された第1の領域(上位4ビット)に対する逆置換テーブルを保持する。逆置換部31に配置されたマルチプレクサ111は、LUT121と結合され、不揮発性メモリ10から読み出された置換されたプログラムP2に含まれる8ビット命令の上位4ビットに対する逆置換を行う。一方、プログラムP2に含まれる8ビット命令の下位4ビットは、逆置換部31においてビットパターン逆置換処理を施されることなくそのまま命令処理部13に供給される。これにより、元プログラムP1の8ビット命令が復元される。
上述したように、元プログラムP1に含まれる複数の領域(例えば8ビット命令の上位4ビットと下位4ビット)の間でビットパターンの出現頻度の偏り方に大きな違いが存在する場合が考えられる。本実施の形態は、一部の領域に関してビットパターンの出現頻度の偏りが小さいためにビットパターン置換・逆置換による消費電力の低減効果が得られない場合に、この一部の領域をビットパターン置換・逆置換を除外できる。これにより、逆置換部31の消費電力を抑制でき、コンピュータ3の消費電力をより一層低減することができる。
なお、図10に示したコンピュータ3は、図4に示したコンピュータ1からマルチプレクサ112を取り除いた構成、又は図9に示したコンピュータ2からマルチプレクサ112及びLUT122を取り除いた構成となっている。しかしながら、コンピュータ3は、プログラムP2の一部の領域に対するビットパターン逆置換を選択的に停止できる構成を有してもよい。具体的には、コンピュータ3に外部から制御可能な制御端子を設け、この制御端子を介して逆置換部31に含まれる少なくとも一部のマルチプレクサ、及び少なくとも一部の逆置換テーブルの動作を停止できるようにしてもよい。例えば、少なくとも一部のマルチプレクサ及びLUT(SRAM)への電源供給を遮断する遮断回路と、少なくとも一部のマルチプレクサを迂回する信号経路とセレクタを設け、遮断回路及びセレクタの動作をコンピュータ3の外部から制御できるようにすればよい。
<その他の実施の形態>
上述した発明の実施の形態1~3では、元プログラムP1が圧縮されていないプログラムであるとして説明した。このような元プログラムP1は、プログラマにより直接生成されるか、プログラマが生成したソースプログラムをコンパイラで変換することによって生成される。元プログラムP1は、CD-ROM又はUSBメモリ等の外部記憶媒体を介してライタ5(6又は7)に入力されてもよいし、通信ネットワークを介してライタ5(6又は7)に入力されてもよい。また、ライタ5(6又は7)としてPCを用いる場合、このPC上でコンパイラを実行することによって、ソースプログラムから元プログラムP1を生成してもよい。
上述した発明の実施の形態1~3では、元プログラムP1が圧縮されていないプログラムであるとして説明した。このような元プログラムP1は、プログラマにより直接生成されるか、プログラマが生成したソースプログラムをコンパイラで変換することによって生成される。元プログラムP1は、CD-ROM又はUSBメモリ等の外部記憶媒体を介してライタ5(6又は7)に入力されてもよいし、通信ネットワークを介してライタ5(6又は7)に入力されてもよい。また、ライタ5(6又は7)としてPCを用いる場合、このPC上でコンパイラを実行することによって、ソースプログラムから元プログラムP1を生成してもよい。
しかしながら、元プログラムP1は、圧縮されたプログラムであってもよい。この場合、ライタ5(6又は7)は、圧縮されたプログラムP1に対するビットパターン置換を行ってプログラムP2を生成すればよい。また、コンピュータ1(2又は3)には、圧縮プログラムから元プログラムを復元するための伸張回路を設ければよい。伸張回路は、逆置換部11(31)によって逆置換を施された後の1又は複数のビット列(第1のビット列)を単位として伸張処理を実行し、元の命令を復元する。復元された命令は、命令処理部13に供給される。圧縮プログラムに対してビットパターン置換を行って得られるプログラムP2を不揮発性メモリ10に格納することによって、圧縮プログラム自体を不揮発性メモリ10に格納する場合に比べて、不揮発性メモリ10からのプログラム読み出しに要する消費電力の低減が期待できる。つまり、上述した本発明の実施の形態1~3は、特許文献1~3に記載されているようなプログラム圧縮の手法と組み合わせることができる。
発明の実施の形態2及び3では、元プログラムP1を2つの領域に分ける場合について説明した。しかしながら、元プログラムP1を3つ以上の領域に分割し、置換テーブル及び逆置換テーブルの組合せを3組以上生成してもよい。
発明の実施の形態1~3では、不揮発性メモリ10にプログラムを格納する場合、言い換えると不揮発性メモリ10をマイクロコントローラ等のコンピュータと結合されるプログラムメモリとして使用する場合について説明した。コンピュータ装置の動作中はプログラム(又は圧縮プログラム)の書き換えは行われない。また、命令の使用頻度の偏りに起因して、プログラムにはビットパターンの出現頻度に偏り(一様からのずれ)が生じやすいことが想定される。したがって、不揮発性メモリ10をプログラムメモリとして利用する場合は、ビットパターンの置換・逆置換処理を行うことによって消費電力を大きく低減することが期待できる。しかしながら、発明の実施の形態1~3で述べたビットパターンの置換・逆置換処理は、不揮発性メモリ10を他の用途で利用するシステムに適用してもよい。
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
この出願は、2011年3月8日に出願された日本出願特願2011-050113を基礎とする優先権を主張し、その開示の全てをここに取り込む。
1、2、3 コンピュータ
5、6、7 ライタ
10 不揮発性メモリ
11、31 逆置換部
12 逆置換テーブル
13 命令処理部
50、60、70 計測部
51、61、71 テーブル生成部
52、62、72 置換テーブル
53、63、73 置換部
54 書き込み処理部
121、122 マルチプレクサ
131、132 ルックアップテーブル(SRAM)
P1 元プログラム
P2 置換されたプログラム
5、6、7 ライタ
10 不揮発性メモリ
11、31 逆置換部
12 逆置換テーブル
13 命令処理部
50、60、70 計測部
51、61、71 テーブル生成部
52、62、72 置換テーブル
53、63、73 置換部
54 書き込み処理部
121、122 マルチプレクサ
131、132 ルックアップテーブル(SRAM)
P1 元プログラム
P2 置換されたプログラム
Claims (20)
- 不揮発性メモリから読み出された第2のデータに対してビットパターンの逆置換処理を行うことによって第1のデータを生成する逆置換部を備え、
前記第1のデータは、複数の第1のビット列を含み、
前記第2のデータは、複数の第2のビット列を含み、
前記複数の第1のビット列の各々は、前記複数の第2のビット列のいずれかに対応するとともに、対応する前記いずれかの第2のビット列と同じビット長であり、
前記第1のビット列と前記第2のビット列の対応関係は、前記複数の第1のビット列中での出現頻度が相対的に高いビットパターンを持つ第1のビット列に対して、前記不揮発性メモリからの読み出し時に必要な電力が相対的に小さいビットパターンを持つ第2のビット列を優先的に割り当てるように決定されており、
前記逆置換処理は、前記対応関係に基づいて、前記複数の第2のビット列を前記複数の第1のビット列に変換する処理を含む、
ビットパターン逆置換装置。 - 前記第2のデータは、前記第1のデータと比べて、データビット値1及び0のうち前記不揮発性メモリからの読み出しに要する電力が低い一方のビット値を多く含む、請求項1に記載のビットパターン逆置換装置。
- 前記対応関係では、前記複数の第1のビット列中での出現頻度が相対的に高いビットパターンを持つ第1のビット列は、データビット値1及び0のうち前記不揮発性メモリからの読み出しに要する電力が低い一方のビット値を相対的に多く含むビットパターンを持つ第2のビット列に対応付けられている、請求項1又は2に記載のビットパターン逆置換装置。
- 前記対応関係では、前記複数の第1のビット列中での出現頻度が最も高いビットパターンを持つ第1のビット列は、前記一方のビット値を最も多く含むビットパターンを持つ第2のビット列に対応付けられている、請求項3に記載のビットパターン逆置換装置。
- 前記対応関係では、前記複数の第1のビット列中での出現頻度の高いビットパターンを持つ第1のビット列から順に、前記一方のビット値を相対的に多く含む第2のビット列と対応付けられている、請求項3又は4に記載のビットパターン逆置換装置。
- 前記対応関係を規定した変換テーブルをさらに備える、請求項1~5のいずれか1項に記載のビットパターン逆置換装置。
- 前記第1のデータは、複数の第3のビット列をさらに含み、
前記第2のデータは、複数の第4のビット列をさらに含み、
前記複数の第3のビット列の各々は、前記複数の第4のビット列のいずれかに対応するとともに、対応する前記いずれかの第4のビット列と同じビット長である、
請求項1~6のいずれか1項に記載のビットパターン逆置換装置。 - 前記第3のビット列と前記第4のビット列の対応関係は、前記第3のビット列中での出現頻度が相対的に高いビットパターンを持つ第3のビット列に対して、前記不揮発性メモリからの読み出し時に必要な電力が相対的に小さいビットパターンを持つ第4のビット列を優先的に割り当てるように決定されており、
前記逆置換処理は、前記対応関係に基づいて、前記複数の第4のビット列を前記複数の第3のビット列に変換する処理をさらに含む、
請求項7に記載のビットパターン逆置換装置。 - 前記複数の第4のビット列から前記複数の第3のビット列への変換は行われず、前記複数の第3のビット列は前記複数の第4のビット列と同一である、請求項7に記載のビットパターン逆置換装置。
- 前記第1のデータは、プログラム又はこれを圧縮した圧縮データであり、
前記複数の第1のビット列の各々は、前記プログラムに含まれるnビット命令(nは正の整数)の一部に対応し、
前記複数の第3のビット列の各々は、前記nビット命令の他の一部に対応する、
請求項7~9のいずれか1項に記載のビットパターン逆置換装置。 - 前記第1のデータは、プログラム又はこれを圧縮した圧縮データであり、
前記複数の第1のビット列の各々は、前記プログラムに含まれる命令のオペコードの少なくとも一部に対応し、
前記複数の第3のビット列の各々は、前記命令のオペランドの少なくとも一部に対応する、
請求項7~9のいずれか1項に記載のビットパターン逆置換装置。 - 請求項1~11のいずれか1項に記載のビットパターン逆置換装置と、
命令実行部と、
を備え、
前記第1のデータは、前記命令実行部よって実行されるプログラムの少なくとも一部、又は前記プログラムの少なくとも一部が圧縮された圧縮データであり、
前記命令実行部は、前記逆置換によって生成された少なくとも1つの第1のビット列によって表わされる命令、又は前記少なくとも1つの第1のビット列に対する伸張処理を行って得られる命令を解読して実行するよう構成されている、
コンピュータ装置。 - 前記逆置換部は、前記逆置換を行うか否かを前記コンピュータ装置の外部から設定できるよう構成されている、請求項12に記載のコンピュータ装置。
- 不揮発性メモリに記録される前の第1のデータに対してビットパターンの置換処理を行うことによって第2のデータを生成する置換部を備え、
前記第1のデータは、複数の第1のビット列を含み、
前記第2のデータは、複数の第2のビット列を含み、
前記複数の第1のビット列の各々は、前記複数の第2のビット列のいずれかに対応するとともに、対応する前記いずれかの第2のビット列と同じビット長であり、
前記第1のビット列と前記第2のビット列の対応関係は、前記複数の第1のビット列中での出現頻度が相対的に高いビットパターンを持つ第1のビット列に対して、前記不揮発性メモリからの読み出し時に必要な電力が相対的に小さいビットパターンを持つ第2のビット列を優先的に割り当てるように決定されており、
前記置換処理は、前記対応関係に基づいて、前記複数の第1のビット列を前記複数の第2のビット列に変換する処理を含む、
ビットパターン置換装置。 - 前記複数の第1のビット列におけるビットパターン毎の出現頻度を計測する計測部と、
前記計測の結果に基づいて、前記対応関係を生成する対応関係生成部と、
をさらに備える請求項14に記載のビットパターン置換装置。 - 前記第2のデータは、前記第1のデータと比べて、データビット値1及び0のうち前記不揮発性メモリからの読み出しに要する電力が低い一方のビット値を多く含む、請求項14又は15に記載のビットパターン置換装置。
- 前記対応関係では、前記複数の第1のビット列中での出現頻度が相対的に高いビットパターンを持つ第1のビット列は、データビット値1及び0のうち前記不揮発性メモリからの読み出しに要する電力が低い一方のビット値を相対的に多く含むビットパターンを持つ第2のビット列に対応付けられている、請求項14~16のいずれか1項に記載のビットパターン置換装置。
- 請求項14~17のいずれか1項に記載のビットパターン置換装置と、
前記ビットパターン置換装置によって生成された前記第2のデータを前記不揮発性メモリに書き込む書き込み処理部と、
を備えるライタ装置。 - 不揮発性メモリから読み出された第2のデータに対してビットパターンの逆置換処理を行うことによって第1のデータを生成することを備え、
前記第1のデータは、複数の第1のビット列を含み、
前記第2のデータは、複数の第2のビット列を含み、
前記複数の第1のビット列の各々は、前記複数の第2のビット列のいずれかに対応するとともに、対応する前記いずれかの第2のビット列と同じビット長であり、
前記第1のビット列と前記第2のビット列の対応関係は、前記複数の第1のビット列中での出現頻度が相対的に高いビットパターンを持つ第1のビット列に対して、前記不揮発性メモリからの読み出し時に必要な電力が相対的に小さいビットパターンを持つ第2のビット列を優先的に割り当てるように決定されており、
前記逆置換処理は、前記対応関係に基づいて、前記複数の第2のビット列を前記複数の第1のビット列に変換する処理を含む、
ビットパターン変換方法。 - ビットパターン変換方法をコンピュータに実行させるためのプログラムであって、
前記方法は、
不揮発性メモリに記録される前の第1のデータに対してビットパターンの置換処理を行うことによって第2のデータを生成することを備え、
前記第1のデータは、複数の第1のビット列を含み、
前記第2のデータは、複数の第2のビット列を含み、
前記複数の第1のビット列の各々は、前記複数の第2のビット列のいずれかに対応するとともに、対応する前記いずれかの第2のビット列と同じビット長であり、
前記第1のビット列と前記第2のビット列の対応関係は、前記複数の第1のビット列中での出現頻度が相対的に高いビットパターンを持つ第1のビット列に対して、前記不揮発性メモリからの読み出し時に必要な電力が相対的に小さいビットパターンを持つ第2のビット列を優先的に割り当てるように決定されており、
前記置換処理は、前記対応関係に基づいて、前記複数の第1のビット列を前記複数の第2のビット列に変換する処理を含む、
プログラム。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2011-050113 | 2011-03-08 | ||
| JP2011050113 | 2011-03-08 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2012120813A1 true WO2012120813A1 (ja) | 2012-09-13 |
Family
ID=46797789
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/JP2012/001279 Ceased WO2012120813A1 (ja) | 2011-03-08 | 2012-02-24 | ビットパターン逆置換装置、コンピュータ装置、ビットパターン置換装置、ライタ装置、ビットパターン変換方法、及びプログラム |
Country Status (1)
| Country | Link |
|---|---|
| WO (1) | WO2012120813A1 (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2016153005A1 (ja) * | 2015-03-25 | 2016-09-29 | アイシン・エィ・ダブリュ株式会社 | メモリコントローラ |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH10302490A (ja) * | 1997-04-25 | 1998-11-13 | Mitsubishi Electric Corp | 読み出し専用半導体記憶装置 |
| WO2001080249A1 (en) * | 2000-04-19 | 2001-10-25 | Fujitsu Limited | Data write/read control method and memory device |
-
2012
- 2012-02-24 WO PCT/JP2012/001279 patent/WO2012120813A1/ja not_active Ceased
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH10302490A (ja) * | 1997-04-25 | 1998-11-13 | Mitsubishi Electric Corp | 読み出し専用半導体記憶装置 |
| WO2001080249A1 (en) * | 2000-04-19 | 2001-10-25 | Fujitsu Limited | Data write/read control method and memory device |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2016153005A1 (ja) * | 2015-03-25 | 2016-09-29 | アイシン・エィ・ダブリュ株式会社 | メモリコントローラ |
| JP2016184233A (ja) * | 2015-03-25 | 2016-10-20 | アイシン・エィ・ダブリュ株式会社 | メモリコントローラ |
| CN107408066A (zh) * | 2015-03-25 | 2017-11-28 | 爱信艾达株式会社 | 存储器控制器 |
| CN107408066B (zh) * | 2015-03-25 | 2020-10-23 | 爱信艾达株式会社 | 存储器控制器 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN101719100B (zh) | 用于非易失性存储器的基于压缩的耗损均衡 | |
| US9191027B2 (en) | Data compression devices, operating methods thereof, and data processing apparatuses including the same | |
| US20090323419A1 (en) | Read-time wear-leveling method in storage system using flash memory device | |
| US10044370B1 (en) | Lossless binary compression in a memory constrained environment | |
| US8892809B2 (en) | Data compression and encoding in a memory system | |
| US7800519B2 (en) | Method and apparatus for compressing and decompressing data | |
| US20150242122A1 (en) | Method for wrtiting data, memory storage device and memory control circuit unit | |
| US20110238903A1 (en) | Method and device of managing a reduced wear memory | |
| US10013187B2 (en) | Mapping table accessing method, memory control circuit unit and memory storage device | |
| CN114995745B (zh) | 藉助于多阶段存储器映射队列以进行存取控制的方法以及相关设备 | |
| CN108897492B (zh) | 一种数据写入方法和装置 | |
| US10445232B2 (en) | Determining control states for address mapping in non-volatile memories | |
| JP2018523239A (ja) | 電力効率的なフェッチ適合 | |
| Seyedzadeh et al. | Enabling fine-grain restricted coset coding through word-level compression for pcm | |
| WO2012120813A1 (ja) | ビットパターン逆置換装置、コンピュータ装置、ビットパターン置換装置、ライタ装置、ビットパターン変換方法、及びプログラム | |
| JP2016052046A (ja) | 圧縮装置、伸長装置およびストレージ装置 | |
| Sharon et al. | Data shaping for improving endurance and reliability in sub-20nm NAND | |
| JP2011141914A (ja) | Nand型フラッシュメモリの入出力制御方法及び装置 | |
| CN100442670C (zh) | 可变长度解码装置和可变长度解码方法以及再现系统 | |
| US8069335B2 (en) | Processing system and method for executing instructions | |
| JP2004258863A (ja) | コンピュータシステム及びプログラマブル論理回路並びに回路データの書き込み方法並びにデータ作成プログラム | |
| JP2012133637A (ja) | 命令実行回路 | |
| JP6437428B2 (ja) | 不揮発性半導体メモリのコントローラ | |
| JP5825347B2 (ja) | 圧縮装置 | |
| CN102541675B (zh) | 提升错误更正能力的方法、记忆装置及其控制器 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 12755040 Country of ref document: EP Kind code of ref document: A1 |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| 122 | Ep: pct application non-entry in european phase |
Ref document number: 12755040 Country of ref document: EP Kind code of ref document: A1 |
|
| NENP | Non-entry into the national phase |
Ref country code: JP |