WO2013132806A1 - 不揮発性論理集積回路と不揮発性レジスタの誤りビットの訂正方法 - Google Patents

不揮発性論理集積回路と不揮発性レジスタの誤りビットの訂正方法 Download PDF

Info

Publication number
WO2013132806A1
WO2013132806A1 PCT/JP2013/001265 JP2013001265W WO2013132806A1 WO 2013132806 A1 WO2013132806 A1 WO 2013132806A1 JP 2013001265 W JP2013001265 W JP 2013001265W WO 2013132806 A1 WO2013132806 A1 WO 2013132806A1
Authority
WO
WIPO (PCT)
Prior art keywords
nonvolatile
data
register
error
bit
Prior art date
Application number
PCT/JP2013/001265
Other languages
English (en)
French (fr)
Inventor
崎村 昇
竜介 根橋
幸秀 辻
あゆ香 多田
Original Assignee
日本電気株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 日本電気株式会社 filed Critical 日本電気株式会社
Publication of WO2013132806A1 publication Critical patent/WO2013132806A1/ja

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K3/00Circuits for generating electric pulses; Monostable, bistable or multistable circuits
    • H03K3/02Generators characterised by the type of circuit or by the means used for producing pulses
    • H03K3/027Generators characterised by the type of circuit or by the means used for producing pulses by the use of logic circuits, with internal or external positive feedback
    • H03K3/037Bistable circuits
    • H03K3/0375Bistable circuits provided with means for increasing reliability; for protection; for ensuring a predetermined initial state when the supply voltage has been applied; for storing the actual state when the supply voltage fails
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Definitions

  • the present invention relates to a nonvolatile logic integrated circuit, and more particularly to a nonvolatile logic integrated circuit and a correction method related to error correction of a nonvolatile register circuit.
  • the working memory can be made nonvolatile by incorporating a nonvolatile element into a conventional SRAM.
  • a non-volatile element is incorporated in the flip-flop circuit, a logic circuit that operates in synchronization with the clock can be made virtually non-volatile.
  • the number of rewrites of the ferroelectric element is 10 12 times or more.
  • FIG. 1 shows a basic configuration of a flip-flop (nonvolatile F / F) incorporating a nonvolatile element.
  • This circuit operates as a function for temporarily holding and outputting 1-bit data (D) input in synchronization with the clock (CLK) until the next clock cycle, as in the conventional flip-flop.
  • D 1-bit data
  • CLK clock
  • it has a function to save 1-bit data output Q in a nonvolatile element incorporated in it (save function) and a function to output 1-bit information stored in the nonvolatile element to Q (restore function) ing.
  • Non-Patent Document 1 discloses a nonvolatile flip-flop incorporating a magnetoresistive element.
  • this nonvolatile flip-flop By applying this nonvolatile flip-flop to the CMOS logic circuit, it becomes possible to realize a nonvolatile logic circuit and a functional module that do not lose operation results and setting information even when the power is turned off. Data saving at the time of power-off and data transfer related to data calling at the time of power-on are also unnecessary, so that convenience is not lost even if the system power is frequently turned off. In addition, it can be expected as a technology that can cut standby power that has been increasing in recent years.
  • the above-mentioned emerging nonvolatile elements have a problem that the conditions of the write operation to these elements are not stable. For example, it is known that when the same data is continuously written in a ferroelectric element, it is difficult to write reverse data with the same voltage and writing time. In addition, in the magnetoresistive element, the magnetization reversal probability changes depending on the write current value and time, so that there is a possibility that erroneous writing such as failure of writing due to disturbance noise or the like, or writing reverse data with low probability occurs. is there.
  • ECC Error Check and Correction
  • This is a coding technique for detecting and correcting an error bit by adding a redundant bit called a parity bit to make the Hamming distance of a code including the parity bit 3 or more.
  • P parity bits are generated from an n-bit data pattern by an encoder.
  • the required number of parity bits p is determined from the equation n ⁇ 2 ⁇ p ⁇ 1.
  • the decoder has a function of checking whether there is an error bit and correcting the error bit if it exists.
  • a data pattern called a syndrome is generated in which an error bit is 1 and a normal bit is 0.
  • error correction can be performed by taking an exclusive OR with respect to each bit of data and syndrome including error.
  • FIG. 3 is a schematic diagram of a basic configuration of a general function module.
  • a result of a logical operation mainly composed of combinational logic gates and a set value related to the logical operation are temporarily held in a register.
  • the information held in these registers can be accessed from the CPU via the data bus.
  • FIG. 1 An example of the circuit configuration of a nonvolatile register incorporating error correction technology is shown in FIG.
  • This nonvolatile register uses an n-bit nonvolatile F / F and a p-bit nonvolatile F / F, and further includes an ECC encoder that generates parity and an ECC decoder that performs error checking and correction.
  • Each nonvolatile F / F can write either data (Din) from the data bus or data (REGin) from the logical operation unit. If it is not necessary to write the logical operation result, the input from REGin and the multiplexer for selecting it can be omitted.
  • the ECC encoder generates parity bits from these input data and inputs the parity bits to the parity nonvolatile F / F.
  • the ECC decoder corrects an error in the output value of the p + n-bit nonvolatile F / F (does not correct if there is no error).
  • the output (REGout) of the n-bit register is the output of the ECC decoder.
  • each nonvolatile F / F is provided with a gated cell for generating control signals (CLK, LB, WB) so as to operate only when the register is selected.
  • CLK control signals
  • LB clock
  • WB save enable signal
  • the overhead of the error correction function is an F / F for five parity bits, an ECC encoder, and a decoder circuit.
  • the number of registers ranges from several hundreds to over 1,000.
  • the circuit scale increases explosively, which is not desirable from the viewpoint of power consumption as well as area cost.
  • An object of the present invention is to provide a non-volatile logic integrated circuit that performs error correction on all registers while suppressing an increase in area cost, an increase in power consumption, and a decrease in operating frequency.
  • the nonvolatile logic integrated circuit of the present invention includes a functional module configured by using a plurality of nonvolatile logic element circuits having nonvolatile elements, an ECC module provided corresponding to the functional module, and the functional module.
  • a non-volatile logic integrated circuit having a CPU for controlling the ECC module wherein the functional module includes a plurality of non-volatile logic element circuits in response to activation of a first control signal from the CPU.
  • the stored data held by the corresponding non-volatile logic element circuit is transferred to the ECC module, and the ECC module checks the error bit of the held data transferred from the function module, and if an error bit is detected, the second data is detected.
  • the control signal is activated and the error-corrected data is encoded, and the CPU activates the second control signal.
  • the correction data is written back to the nonvolatile logic element circuit that has read the data in the next cycle, and the first and second control signals are deactivated in the same cycle.
  • a technique for improving the reliability of a logic integrated circuit incorporating a nonvolatile flip-flop which minimizes the area overhead of a means for correcting error bits of the nonvolatile flip-flop, and is turned on.
  • the nonvolatile flip-flop restore operation and error correction operation can be realized with a small number of clock cycles.
  • the figure which shows the basic composition of the non-volatile flip flop which incorporates the general non-volatile element The figure which shows an example of the operation timing of a general non-volatile flip-flop
  • General logic integrated circuit hardware configuration diagram Configuration diagram of a nonvolatile register circuit having a general error correction function The figure which shows an example of the gated cell of FIG.
  • FIG. 13 is a circuit configuration diagram of the nonvolatile register.
  • symbol in case a parity bit is shared by the non-volatile register of 4 words ECC module configuration diagram of the third embodiment of the present invention
  • FIG. 7 is a basic configuration diagram of a hardware configuration according to the first embodiment of the present invention that enables error correction operation of the nonvolatile register included in the function module.
  • FIG. 8 shows a specific circuit configuration example of the nonvolatile register shown in FIG. 9 to 12 show timing charts of the restore operation of the nonvolatile register in the first embodiment.
  • the ECC module is arranged between the CPU core and the function module as shown in FIG.
  • the ECC module includes an encoder that encodes parity bits and a decoder that checks and corrects error bits. When an error bit is detected by the decoder, the 1-bit flag signal ECC_FLG is made active (high level in this embodiment) and fed back to the CPU core.
  • the encoder encodes either the data input (Din) from the data bus or the correction data (Dout) output from the decoder.
  • ECC_FLG when the decoder does not detect an error bit, ECC_FLG becomes low level, and the encoder encodes a parity bit for Din. On the other hand, when an error bit is detected, ECC_FLG becomes high level, and the encoder encodes a parity bit for Dout.
  • the ECC module supplies n-bit input data (Din_M) and p-bit parity data (Pin_M) to the functional module.
  • Din_M supplies Din from the data bus to the functional module as it is in the clock cycle where ECC_FLG is low level, and supplies output data (Dout) from the decoder to the functional module in a cycle where ECC_FLG is high level.
  • the ECC module supplies error correction data (Dout) of data output (Dout_M) from the function module to the data bus.
  • the nonvolatile register in the functional module is composed of an n-bit nonvolatile F / F, a p-bit nonvolatile F / F, and a gated cell that controls these nonvolatile F / Fs.
  • a specific example of the gated cell is the same as the circuit shown in FIG.
  • the nonvolatile register is not provided with an ECC encoder or decoder for error correction.
  • FIG. 7 a plurality of non-volatile registers are provided in the function module. Of each nonvolatile register, the data output (REGout) of any one of the nonvolatile registers in the selected state is selected and supplied to the ECC module.
  • the error check and correction operations of the nonvolatile register are executed only when the restore operation of the nonvolatile F / F that is a component thereof, that is, when the data held in the nonvolatile element is called.
  • FIGS. 9 to 11 show timing charts of the restore operation for simultaneously performing this error check.
  • the restore operation is completed through the following three steps.
  • Step 1 Fetch restore instruction and obtain address of register to be restored
  • Step 2 Restore operation of target register and error check and correction
  • Step 3 Write error correction data when error bit is detected in Step 2
  • FIG. 9 shows an operation timing chart when no error bit is detected in Step 2, and the operation in Step 3 is omitted.
  • n 16 bits, and the instruction code and the register address are divided into two instruction words. Further, it is assumed that the address bus and data bus of the instruction memory and the data memory / register are not physically separated but are common.
  • step 1 is executed over two cycles. That is, in the first cycle (time t0-t1) in FIG. 9, the CPU core performs instruction fetch and instruction decode, and determines that it is a restore instruction (memory access). Next, in the second cycle (time t1-t2), the register address (A_reg) for restore operation is acquired (memory access). In the third cycle (time t2-t3), the operation of step 2 is performed.
  • the register address A_reg obtained in the second cycle is supplied to the address bus, and the nonvolatile register assigned to the address is selected. Further, the restore enable signal LB is activated to a low level.
  • LB is activated in synchronism with a half period of the clock and CLK is at the H level. At this time, CLK of the selected nonvolatile register is fixed at a low level (disabled) by the gated cell (FIG. 5).
  • the restore operation is completed at the timing of the rising edge of the LB signal (see FIG. 2), that is, the data Q_reg held in the nonvolatile element is restored in the output REGout of the nonvolatile register.
  • the ECC module decoder performs an error check on Q_reg, and since no error bit is detected, the ECC_FLG signal remains at a low level (inactive). As described above, the restore operation of an arbitrary nonvolatile register is completed in three cycles.
  • FIG. 10 shows an operation timing chart when an error bit is detected in step 2 (third cycle). Since the operations in the first and second cycles of Step 1 are the same as those described in FIG.
  • the ECC module decoder detects an error bit in Q_reg
  • the ECC_FLG signal is activated to a high level.
  • the output REGout of the nonvolatile register outputs a data Q_reg_err data pattern including an error bit.
  • the CPU core receives the activated ECC_FLG signal and controls to execute the operation of step 3 in the next clock cycle.
  • the ECC module outputs data Q_reg that has been error-corrected in the third cycle to the data bus Dout.
  • the address of the target register continues to be output to the address bus.
  • the ECC module encodes the error-corrected data Q_reg and outputs the generated parity bit and the corrected data Q_reg to the nonvolatile register.
  • the nonvolatile register writes the correction data Q_reg input from the ECC module and its parity bit, thereby completing error correction.
  • the non-volatile register can output the data pattern Q_reg from which the error bit is deleted by writing back the correction data in the fourth cycle, but the non-volatile element still holds Q_reg_err including the error bit. As shown in FIG. 11, if the save enable signal WB is activated to a low level in this cycle, the error bit of the nonvolatile element can be corrected correctly.
  • the restore instruction length of the nonvolatile register according to the first embodiment of the present invention is 3 cycles when there is no error correction and 4 cycles when there is error correction.
  • the restore operation target register is a CPU core register file
  • the register address can be directly specified in the restore instruction code. In this case, since the second cycle of register address acquisition can be omitted, the restore instruction length is further shortened by one cycle.
  • FIG. 12 shows an example in which pipeline processing is performed by utilizing this simultaneous access. In this example, a case where an error bit is detected in the restore operation of the register 1 when the restore instruction is continuously executed for the registers 0 to 4 is illustrated.
  • register addresses of registers 0 to 4 are already temporarily stored in the register file in the CPU core.
  • the register file (RF) is accessed and the address of register 0 is read.
  • the instruction memory (IM) is accessed and the next instruction is fetched. It is possible to come.
  • the register 0 (REG0) is accessed to execute the restore operation, and at the same time, the register file RF is accessed to read the address of the register 1, and the instruction memory IM is further accessed to execute the next instruction. Fetching.
  • an error bit is detected in the restore operation of register 1 (REG1), and the corrected data is written back to register 1 in the fifth cycle.
  • the CPU core since the address bus must be continuously held at the address of the register 1, the CPU core is stalled for only one cycle. That is, the restore operation of the register 2 and the address acquisition of the register 3 which should have been processed in the fifth cycle are postponed to the sixth cycle.
  • FIG. 13 shows a basic configuration diagram of a hardware configuration according to a second embodiment of the present invention.
  • a parity set is shared between a plurality (k) of nonvolatile registers, instead of adding a parity bit to each register. Therefore, as shown in FIG. 14, each nonvolatile register does not include the nonvolatile F / F for the parity bit, and the overhead for error correction can be reduced as compared with the first embodiment.
  • the parity bit is shared by a plurality of registers, the number of bits capable of error correction is reduced by the number of shared registers.
  • FIG. 15 shows a configuration example of the error correction code in the second embodiment.
  • FIG. 16 shows a circuit configuration example of the ECC module in the second embodiment.
  • the restore operation of the nonvolatile register and the error correction method are executed basically by the same method as the method of FIGS. 9 to 12 described in the first embodiment.
  • the parity bit encoding, error check, and correction in the ECC module are performed in units of m-bit register sets.
  • the target data source differs depending on the active / inactive state of the ECC_FLG signal.
  • the data (Dout_ECC) obtained by error-correcting the data (Dout_MC) from the register set having the register to be accessed (rewrite target) is used as the data bus. Parity bit coding is performed on the data replaced with the input data (Din) from (the data is output to the function module as Din_M).
  • ECC_FLG when ECC_FLG is in an active state, parity bits are encoded on data (Dout_ECC) in which the data (Dout_M) of the register set having the access target register is error-corrected.
  • the signal AS is a selection signal generated from the address of one register to be accessed in the register set. If a register set is formed by four registers, it becomes a 2-bit signal and takes a value of 0 to 3.
  • Dout_ECC when ECC_FLG is in an inactive state, it is controlled which bit from Dout_ECC is replaced with Din.
  • the data (Dout_ECC) that has been error-corrected by the ECC module selects n-bit data (Dout) of the target register according to the AS value and is output to the data bus.
  • the above operations are assigned codes as shown in FIG. 15, that is, in the case where the register set is composed of four 16-bit registers, for example, the register 1 of the register set formed from the registers 0 to 3 is used. An example of the operation when accessing is described in detail.
  • the address of register 1 and the write data are output to the bus.
  • the write data output to the bus is assumed to be D_reg1.
  • the Qregset value of the register set including the register 1 is input to the ECC module, and error check and correction are performed by the decoder circuit. (Here, since the value of Qregset has already been error-corrected by the restore operation executed earlier, no error is detected. Therefore, the ECC_FLG signal is inactive.)
  • the encoder generates a 7-bit parity based on the Dregset value. In this case, the value of the signal AS is “1”, and Q_reg1 is selected and output to the data bus.
  • the address of the register 1 is output to the bus, and the restore enable signal LB is activated to the low level as in the first embodiment.
  • the restore enable signal LB is activated to the low level as in the first embodiment.
  • not only the register 1 but also all the registers of the register set to which it belongs, that is, the register 0, the register 2 and the register 3 are simultaneously restored.
  • the called 64-bit data Qregset ⁇ Q_reg3, Q_reg2, Q_reg1, Q_reg0 ⁇ is input to the ECC module, and error check and error correction are executed by the decoder.
  • the ECC_FLG signal is not activated and the restore operation of the register set to which the register 1 belongs is terminated.
  • the restore instruction for register 0, register 2, and register 3 can be omitted in the program.
  • the ECC_FLG signal is activated (high level).
  • the decoder output is selected as the input data to the target register set. That is, the 64-bit Din_M value (Dregset) output to the register set is equal to the error-corrected Qregset_c.
  • the encoder generates 7-bit parity based on the value of Qregset_c.
  • a general microcomputer often has a byte mode for performing arithmetic processing in units of bytes in addition to a word mode in which arithmetic processing is performed in units of words.
  • the ECC module shown in FIG. 16 can be customized to this byte mode.
  • the bit operation may be controlled by adding the upper byte and the lower byte to the AS signal to which the lower bit of the register address is assigned.
  • the AS signal is increased from 2 bits to 3 bits, and the upper 2 bits indicate a register address, when the least significant bit is 1, it indicates the upper byte, and when 0, the lower byte.
  • the lower 8 bits of the data Q_reg1 (or Q_reg1_c) of the register 1 may be replaced with the lower 8 bits of D_reg1.
  • the upper 8 bits of the data Q_reg1 (or Q_reg1_c) of the register 1 may be replaced with the upper 8 bits of D_reg1.
  • the register value should be checked for error only when restoring from the nonvolatile element.
  • the register value before rewriting is also checked for errors in the register value rewriting instruction. This error checking operation is clearly redundant. Accordingly, in the ECC modules shown in FIGS. 7 and 16, the decoder circuit may be changed to a circuit that short-circuits except when the restore instruction is being processed.
  • the operation of saving the data held by the nonvolatile flip-flop to the nonvolatile element incorporated in the flip-flop is executed before turning off the power. including. Further, in a general procedure after the power supply of the nonvolatile logic integrated circuit is turned on, it includes executing a restore operation for calling data held by the nonvolatile element to the nonvolatile flip-flop.
  • This restoration operation method has been described in detail with reference to the embodiment. The restore operation and the detection and correction of error bits according to the present invention are not limited to execution only when the power is turned on.
  • the power may be turned off after executing the restore operation and the error correction operation of the nonvolatile flip-flop targeted for the save operation. This can reduce the probability of error bit detection in the restore operation when the power is turned on.
  • one ECC circuit is sufficient for error correction of a 1,024-word nonvolatile register.
  • the number of clock cycles required for the restore operation and error correction is 258 cycles.
  • the present invention can be modified to multiplex ECCs and operate a plurality of ECC modules in parallel. For example, considering the case where 16 ECC modules are arranged, the number of clocks required to restore and correct errors in all nonvolatile registers can be reduced to 18 cycles.
  • the number of ECC modules increases to 16
  • the area overhead is reduced to 1/64 compared to the conventional example, and this overhead is at a level that causes no problem in practice.
  • ECC_FLG 1-bit flag signal Din Data input from data bus Dout Correction data output by decoder REGout

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Power Sources (AREA)

Abstract

[課題]レジスタ毎にECC回路を設けると回路規模が増大し、面積コストだけでなく消費電力も増加する。動作周波数低下を抑制しつつ全てのレジスタに対して誤り訂正が行われるようにすること。 [解決手段] 不揮発性素子を有する不揮発性論理要素回路を複数用いて構成される機能モデュールと、機能モデュールに対応して設けられたECC モデュールと、機能モデュールとECC モデュールを制御するCPU とを有する不揮発性論理集積回路。

Description

不揮発性論理集積回路と不揮発性レジスタの誤りビットの訂正方法
 本発明は、不揮発性論理集積回路に関し、特に不揮発レジスタ回路の誤り訂正に関係した不揮発性論理集積回路及び訂正方法に関する。
 これまで電子機器の高性能化や高機能化は集積回路の微細化技術の進展によって支えられてきた。集積回路に用いられるCMOSトランジスタを微細化することで、集積度を向上できるためより多くの機能を集積化してきた。また、この微細化により寄生容量が減少することで高速化と低消費電力化を実現してきた。しかしながら、近年はこの微細化技術の進展も物理限界が見え始めてきている。例えば、65nm世代以降はトランジスタの漏れ電流が動作電流に匹敵するほどに大きくなり無視できなくなってきている。この漏れ電流は微細化の世代が進むほど増大し、当然、回路規模が大きくなるほど増大する。即ち、微細化すればするほど漏れ電流による消費電力の増加が問題視されている。
 現在の集積回路では、演算処理を必要としないスタンバイ状態の時でも、レジスタやメモリに一時保存されている内部情報を保持するために電源を入れ続ける必要がある。従って、微細化が進むほどスタンバイ時においても漏れ電流に起因する電力を消費してしまい、無駄な待機電力の増大を招いている。
 この待機電力を削減する試みとして、スタンバイ時において、電源電圧を内部情報の保持に最低限必要な電圧まで下げる技術が実用化されている。この技術により、待機電力をある程度削減することが可能であるが、完全にゼロにすることはできない。電源を切断すれば待機電力をゼロにできるが、内部情報を失ってしまうために、電源遮断前にレジスタや内部メモリの情報をストレージ・デバイスに退避させる必要がある。当然、電源投入後は退避させたデータを呼び出す必要があるため、使用開始まで待ち時間が発生する。このデータ転送にかかる時間(待ち時間)は少なくとも秒単位以上も必要であることが多く、システムの利便性を考慮すると頻繁に電源を切断することは事実上されていないことが多い。
 システムの利便性を損うことなく待機電力をゼロにできる技術として、不揮発性素子をCMOS回路内に組み込むことで集積回路の内部情報を不揮発化しようという試みがある。例えば、従来のSRAMに不揮発性素子を組み込むことでワーキングメモリを不揮発化できる。さらに、フリップフロップ回路に不揮発性素子を組み込めば、クロックに同期して動作する論理回路を事実上不揮発化することができる。
 この不揮発性素子に求められる性能で重要なのは書き換え回数であり、10の12乗回以上の書き換え耐性が必要である。現在、市場の主流であるフラッシュメモリの書き換え回数は10の4乗から5乗程度しかなく、集積回路の論理回路やワーキングメモリに適用することはできない。
 近年、この不揮発性素子として強誘電体素子や抵抗変化素子の利用が注目されている。強誘電体素子の書き換え回数は10の12乗回以上である。また、抵抗変化素子の代表とされる磁気抵抗変化素子にいたっては書き換え回数に制限がない。
 図1は、不揮発性素子を組み込んだフリップフロップ(不揮発F/F)の基本構成を示している。本回路は、従来のフリップフロップと同様にクロック(CLK)に同期して入力された1ビットデータ(D)を次のクロックサイクルまで一時保持して出力する機能として動作する。さらに、1ビットのデータ出力Qを内部に組み込まれた不揮発性素子に保存する機能(セーブ機能)と、不揮発性素子に蓄えられた1ビットの情報をQに出力させる機能(リストア機能)を備えている。例えば、非特許文献1には、磁気抵抗素子を組み込んだ不揮発フリップフロップが開示されている。
 これによれば、図2に示す動作タイミングチャートの様に、セーブ・イネーブル信号WBをローレベルに下げてアクティブにすると、Qの値を不揮発性素子に保存される。一方、リストア・イネーブル信号LBをロー・レベルに下げてアクティブにすると、不揮発性素子に保存されていたデータをQに呼び出すことができる。
 この不揮発化されたフリップフロップをCMOS論理回路に適用することで、電源を切断しても演算結果や設定情報を消失しない不揮発性論理回路、及び、機能モデュールを実現できるようになる。電源切断時におけるデータ退避、及び、電源再投入時におけるデータ呼び出しに関るデータ転送も不要になるのでシステムの電源を頻繁に落としても利便性が損なわれることはない。また、近年増加の一途をたどる待機電力をカットできる技術として期待できる。
 先述した新興の不揮発性素子において、それら素子への書き込み動作の条件が安定しない課題がある。例えば、強誘電体素子においては同じデータを継続して書き続けた場合、同じ電圧と書き込み時間では逆のデータを書きにくくなることが知られている。また、磁気抵抗素子においては、書き込み電流値や時間によって磁化反転確率が変化するため外乱ノイズ等によって書き込みが失敗したり、あるいは逆のデータが書き込まれるといった誤書き込みが低確率で発生する可能性がある。
 このような誤書き込みのソフトエラーに対処する技術として誤り訂正符号を用いて誤りビットを検出し、検出された誤りビットを訂正する誤り訂正技術(ECC:Error Check and Correction)が広く知られている。これは、パリティビットと呼ばれる冗長ビットを追加してパリティビットを含む符号のハミング距離を3以上にすることで誤りビットを検出、訂正する符号技術である。
 pビットのパリティビットは符号化器(エンコーダ)によって、nビットのデータパターンから生成される。任意の1ビットの誤り訂正を可能にするハミング符号の場合は、n≦2^p-1の式から必要なパリティビットのビット数pが決まる。例えば、n=16ビットの場合に必要なパリティビットはp=5ビットとなる。
 復号化器(デコーダ)は、誤りビットが存在するかをチェックし、存在する場合は誤りビットを訂正する機能を有する。一般的に、誤りチェックする論理演算では誤りビットを1、正常ビットを0としたシンドロームと呼ばれるデータパターンを生成する。次に、誤りを含むデータとシンドロームの各々のビットに対して、排他的論理和をとることで誤り訂正を実行できる。
 不揮発素子への書き込み時におけるソフトエラーは、この誤り訂正技術を活用することで解決可能である。しかし、論理回路に用いられる全てのレジスタ(演算結果や設定値を格納するnビットのフリップフロップで構成されたデータ保持回路)に誤り訂正技術を用いると回路規模が爆発的に増大する。
 図3は、一般的な機能モデュールの基本構成の概略図である。主に組み合わせ論理ゲートで構成される論理演算の結果や論理演算に関る設定値はレジスタに一時保持される。また、これらレジスタに保持されている情報はデータバスを介してCPUからアクセスすることが可能である。
 誤り訂正技術を取り入れた不揮発レジスタの回路構成の一例を図4に示す。この不揮発レジスタは、nビットの不揮発F/Fとpビットの不揮発F/Fが用いられ、さらに、パリティを生成するECCエンコーダと誤りチェックと訂正を行うECCデコーダを含んでいる。各不揮発F/Fは、データバスからのデータ(Din)と論理演算部からのデータ(REGin)のどちらかを書き込むことができる。もし、論理演算結果を書き込む必要が無い場合は、REGinからの入力とそれを選択するマルチプレクサは省略できる。ECCエンコーダは、これら入力データからパリティビットを生成してパリティの不揮発F/Fへ入力する。ECCデコーダは、p+nビットの不揮発F/Fの出力値を誤り訂正する(誤りが無い場合は訂正しない)。nビットのレジスタの出力(REGout)はECCデコーダの出力である。
 ここで、各不揮発F/Fは、当該レジスタが選択された場合のみ動作するように制御信号(CLK、LB、WB)を生成するためのゲーテッドセルが設けられている。このゲーテッドセルの具体例を図5に示す。レジスタへのアクセスが許可されると、信号ENがアクティブ(ハイ・レベル)になる。不揮発F/Fへ入力されるクロック(GCLK)は、LBがディセーブル(ハイ・レベル)の時にCLKが通過され、それ以外の時はローレベルに固定される。不揮発F/Fへ入力されるリストア・イネーブル信号(GLB)とセーブ・イネーブル信号(GWB)は、信号ENがアクティブの時にLB、WBが通過され、それ以外の時はディセーブル(ハイ・レベル)である。
 図6は、各レジスタのビット幅n=16ビットの場合におけるビット構成例を示している。誤り訂正機能のオーバヘッドは、5ビットのパリティビット分のF/FとECCエンコーダ、デコーダ回路である。
"Nonvolatile Magnetic Flip-Flop for Standby-Power-Free SoCs"IEEE Journal Solid-State Circuits, vol.44, p.2244, 2009.
 上述した論理集積回路においては、レジスタの個数は数100から1,000以上にも及ぶ。図4に示すように、単純にレジスタ毎にECC回路を追加すると回路規模が爆発的に増大し、面積コストだけでなく消費電力の観点からも望ましくない。特に、ECCデコーダは回路規模が大きくなり、全てのレジスタに備えるのは現実的ではない。例えば、n=16ビットの場合、エンコーダは30ゲート程度で済むのに対し、デコーダは200ゲート以上必要である。即ち、ECCに関るオーバヘッドはゲート数で5~10倍程度にも達する。また、ECCデコーダの論理遅延は数nsであり、レジスタが書き換える度に誤り訂正をするので動作周波数が低下する原因になる。
 本発明の目的は、面積コストの増大、消費電力の増加、動作周波数低下を抑制しつつ全てのレジスタに対して誤り訂正が行われるようにする不揮発性論理集積回路を提供することにある。
 本発明の不揮発性論理集積回路は、不揮発性素子を有する不揮発性論理要素回路を複数用いられて構成される機能モデュールと、前記機能モデュールに対応して設けられたECCモデュールと、前記機能モデュールと前記ECCモデュールを制御するCPUとを有する不揮発性論理集積回路であって、前記機能モデュールは前記CPUからの第1の制御信号が活性化することに応答して前記複数の不揮発性論理要素回路のうち対応する不揮発性論理要素回路が保持する保持データを前記ECCモデュールに転送し、前記ECCモデュールは前記機能モデュールから転送された保持データの誤りビットのチェックを行い、誤りビットを検出すると第2の制御信号を活性化すると共に誤り訂正したデータに対して符号化を行い、前記CPUは前記第2の制御信号が活性化したのを受けて次のサイクルで前記データを読み出した不揮発性論理要素回路に対して訂正データを書き戻す処理を行うと共に、同じサイクルで前記第1及び第2の制御信号を非活性化することを特徴とする。
 本発明によれば、不揮発性フリップフロップを内蔵する論理集積回路の信頼性を向上させる技術であって、不揮発性フリップフロップの誤りビットを訂正する手段の面積オーバヘッドを最低限にし、且つ、電源投入時における不揮発性フリップフロップのリストア動作と誤り訂正動作を少ないクロックサイクル数で実現することが可能となる。
一般的な不揮発性素子を組み込んだ不揮発フリップフロップの基本構成を示す図 一般的な不揮発性フリップフロップの動作タイミングの一例を示す図 一般的な論理集積回路のハードウェア構成図 一般的な誤り訂正機能を有する不揮発レジスタ回路の構成図 図4に記載のゲーテッドセルの一例を示す図 一般的なパリティビットが不揮発レジスタに付与された誤り訂正符号を示す図 本発明の不揮発性論理集積回路の第1実施例を示す図 図7の不揮発レジスタの回路構成図 本発明における不揮発レジスタのリストア動作を示す図 本発明における不揮発レジスタのリストア動作を示す図 本発明における不揮発レジスタのリストア動作を示す図 本発明における不揮発レジスタのリストア動作のパイプライン処理を示す図 本発明の不揮発性論理集積回路の第2実施例を示す図 図13の不揮発レジスタの回路構成図 パリティビットが4ワードの不揮発レジスタで共有される場合の誤り訂正符号を示す図 本発明の第3実施例におけるECCモデュール構成図 本発明の第3実施例における不揮発性論理集積回路を示す図
 第一の実施の形態)
 以下、具体的に本発明の実施の形態について詳述する。
 図7は、機能モデュールが有する不揮発レジスタの誤り訂正動作を可能とする本発明の第1の実施形態におけるハードウェア構成の基本構成図である。また、図8は、図7に記載の不揮発レジスタの具体的な回路構成例を示している。図9~図12は第1の実施形態における不揮発レジスタのリストア動作のタイミング・チャートを示している。以下、これらの図面を用いて本発明の第1の実施形態について詳述する。
 本発明の第1の実施形態によれば、図7に示すようにCPUコアと機能モデュール間に、ECCモデュールが配置されている。ECCモデュールは、パリティビットを符号化するエンコーダと、誤りビットのチェックと訂正を行うデコーダを含んでいる。デコーダにより誤りビットを検出された場合には、1ビットのフラグ信号ECC_FLGをアクティブ(本の実施形態ではハイ・レベル)にして、CPUコアにフィードバックされる。エンコーダは、データバスからのデータ入力(Din)とデコーダが出力する訂正データ(Dout)のどちらかに対して符号化を行う。
 例えば、デコーダが誤りビットを検出しない場合はECC_FLGはローレベルとなり、エンコーダはDinに対してパリティビットの符号化を行う。一方、誤りビットが検出された場合はECC_FLGはハイレベルになって、エンコーダはDoutに対してパリティビットの符号化を行う。ECCモデュールは、nビットの入力データ(Din_M)とpビットのパリティデータ(Pin_M)を機能モデュールに供給する。
 ここで、Din_Mは、ECC_FLGがローレベルのクロックサイクルでは、データバスからのDinをそのまま機能モデュールに供給し、ECC_FLGがハイレベルのサイクルでは、デコーダからの出力データ(Dout)を機能モデュールに供給する。また、ECCモデュールは、機能モデュールからのデータ出力(Dout_M)の誤り訂正データ(Dout)をデータバスに供給する。
 図8に示すように、機能モデュール内の不揮発レジスタは、nビットの不揮発性F/Fとpビットの不揮発性F/Fと、これら不揮発性F/Fを制御するゲーテッドセルから構成される。ここで、ゲーテッドセルの具体例は、図5に示す回路と同じである。このように、不揮発レジスタは誤り訂正のためのECCエンコーダやデコーダは備えられていない。図7に示すように、機能モデュール内には複数の不揮発レジスタが備えられている。各々の不揮発レジスタのうち、選択状態にある任意の一つの不揮発レジスタのデータ出力(REGout)を選択してECCモデュールへ供給される。
 本発明によれば、不揮発レジスタの誤りチェック、及び訂正動作は、その構成要素である不揮発F/Fのリストア動作、すなわち不揮発性素子の保持データを呼び出す場合のみ実行される。この誤りチェックを同時に行うリストア動作のタイミングチャートを図9~11に示す。本リストア動作は、以下の3つのステップを経て動作を完了する。
ステップ1:リストア命令のフェッチ、及び、リストア対象のレジスタの番地取得
ステップ2:対象レジスタのリストア動作、及び、誤りチェックと訂正
ステップ3:ステップ2で誤りビットが検出される場合、訂正データの書き戻し、及び、不揮発素子へのセーブ動作
 図9は、ステップ2で誤りビットが検出されなかった場合の動作タイミング・チャートを示しており、ステップ3の動作は省略されている。この実施形態における説明では、n=16ビットと仮定し、命令コードとレジスタ番地は2命令ワードに分割されていると仮定する。また、命令メモリとデータメモリ/レジスタのアドレスバス、データバスは物理的に分離されておらず共通であると仮定する。
 従って、上記ステップ1は2つのサイクルにまたがって実行される。即ち、図9の第1サイクル(時刻t0-t1)において、CPUコアは命令フェッチと命令デコードを行い、リストア命令であることを判断する(メモリアクセス)。次に、第2サイクル(時刻t1-t2)において、リストア動作対象のレジスタ番地(A_reg)を取得する(メモリアクセス)。第3サイクル(時刻t2-t3)において、上記ステップ2の動作を行う。
 具体的には、アドレスバスには第2サイクルで取得したレジスタ番地A_regが供給され、その番地に割り付けられた不揮発レジスタが選択状態となる。また、リストアイネーブル信号LBがローレベルに活性される。図9の例では、LBはクロックの半周期、CLKがHレベルの時間に同期して活性化されている。この時、選択された不揮発レジスタのCLKはゲーテッドセル(図5)によりローレベル固定(ディセーブル)になっている。LB信号の立ち上がりエッジのタイミングでリストア動作が完了(図2を参照)、即ち、不揮発レジスタの出力REGoutは不揮発素子が保持するデータQ_regがリストアされる。ECCモデュールのデコーダは、Q_regの誤りチェックを行い、誤りビットが検出されなかったのでECC_FLG信号はローレベル(非活性)のままである。以上、3サイクルで任意の不揮発レジスタのリストア動作が完了する。
 図10は、ステップ2(第3サイクル)で誤りビットが検出された場合の動作タイミング・チャートを示している。ステップ1の第1、第2サイクルの動作は図9で説明したのと同じであるから説明を省略する。
 第3サイクルにおいて、ECCモデュールのデコーダはQ_regに誤りビットを検出すると、ECC_FLG信号をハイレベルに活性化する。ここで、不揮発レジスタの出力REGoutは誤りビットを含むデータQ_reg_errデータパターンを出力している。CPUコアは活性化されたECC_FLG信号を受けて、次のクロックサイクルでステップ3の動作を実行するように制御する。この時、ECCモデュールは、第3サイクル内で誤り訂正されたデータQ_regをデータバスDoutに出力している。ステップ3を実行する第4サイクル(時刻t3-t4)では、アドレスバスには対象レジスタの番地が出力し続ける。ECCモデュールは、誤り訂正後のデータQ_regに対して符号化を行い、生成されたパリティビットと訂正データQ_regを不揮発レジスタに出力する。第4サイクルにおいては、リストア・イネーブル信号LBはハイレベルのままであるから、不揮発レジスタはECCモデュールから入力された訂正データQ_regと、そのパリティビットを書き込むことで誤り訂正が完了する。
 第4サイクルにおいて、の訂正データの書き戻しによって不揮発レジスタは誤りビットが削除されたデータパターンQ_regを出力できるようになるが、不揮発性素子は未だ誤りビットを含むQ_reg_errを保持している。図11のように、このサイクルでセーブ・イネーブル信号WBをローレベルに活性化すれば、不揮発性素子の誤りビットを正しく訂正することができる。
 本発明の第1の実施形態による不揮発レジスタのリストア命令長は、誤り訂正が無い場合は3サイクル、誤り訂正がある場合は4サイクルである。リストア動作対象のレジスタがCPUコアのレジスタファイルの場合、リストア命令コードに直接レジスタ番地を指定できる。この場合はレジスタ番地取得の第2サイクルが省略できるため、リストア命令長はさらに1サイクルづつ短縮される。
 以上の説明では、命令系とデータ系のバスが共通である場合を仮定した。命令系とデータ系のバスを分離することで、命令メモリとデータメモリ/レジスタへの同時アクセスが可能となる。この同時アクセスが可能になることを利用してパイプライン処理を行った例を図12に示す。この例では、レジスタ0~4に対してリストア命令を続けて実行した場合において、レジスタ1のリストア動作において誤りビットが検出された場合を例示している。
 ここで、レジスタ0~4のレジスタ番地は既にCPUコア内のレジスタファイルに一時的に格納されていると仮定している。例えば、レジスタ0のリストア動作命令を受けて、第2サイクルではレジスタファイル(RF)にアクセスしてレジスタ0の番地を読み出しているが、同時に命令メモリ(IM)にアクセスして次の命令をフェッチしてくることが可能である。
 同様に、第3サイクルでは、レジスタ0(REG0)にアクセスしてリストア動作を実行すると同時に、レジスタファイルRFにアクセスしてレジスタ1の番地を読み出し、さらに命令メモリIMにアクセスして次の命令をフェッチしている。第4サイクルでは、レジスタ1(REG1)のリストア動作において誤りビットが検出され、第5サイクルでは訂正データをレジスタ1に書き戻している。この時、第5サイクルでは、アドレスバスはレジスタ1の番地を続けて保持されなければならないため、CPUコアは1サイクルだけストールされている。即ち、本来第5サイクルで処理するはずだったレジスタ2のリストア動作とレジスタ3の番地取得は第6サイクルに先送りされる。このように、パイプライン処理を行うことでレジスタのリストア動作と誤り訂正をさらに短縮することができる。
第2の実施形態
 図13は、本発明の第2の実施形態におけるハードウェア構成の基本構成図を示している。第2の実施形態では、各々のレジスタにパリティビットを付与するのではなく、複数(k個)の不揮発レジスタ間でパリティビットを共有するレジスタ・セットを形成する。従って、図14に示すように各々の不揮発レジスタにはパリティビット分の不揮発F/Fは含まれず、誤り訂正のためのオーバヘッドを第1の実施形態よりも低減できる。一方で、パリティビットを複数のレジスタで共有するために、誤り訂正可能なビット数は共有するレジスタの数だけ低下する。
 図15は、第2の実施形態における誤り訂正符号の構成例を示している。また、図16は、第2の実施形態におけるECCモデュールの回路構成例を示している。ここで、パリティビットはkワードのレジスタで一のパリティセットを形成し、m=k×nビットのレジスタセットのデータに対してパリティビットが割り付けられる。図15の誤り訂正符号の例は、k=4ワード、n=16ビット、即ち、m=64ビットのデータパターンによってp=7ビットのパリティビットが割り付けられる場合を示している。
 第2の実施形態においても、不揮発レジスタのリストア動作、及び、誤り訂正方法は第1の実施形態で説明した図9~12の方法と基本的に同じ手法で実行される。ECCモデュールにおけるパリティビットの符号化、及び、誤りチェック、訂正は、mビットのレジスタセット単位で実行される。パリティビットの符号化は、ECC_FLG信号の活性/非活性状態によって対象のデータ元が異なる。
 以下、これについて図16を参照しながら説明する。ECC_FLGが非活性状態の場合は、アクセス対象(書き換え対象)のレジスタを有するレジスタセットからのデータ(Dout_M)を誤り訂正したデータ(Dout_ECC)のから、対象レジスタのデータビットに位置するビットをデータバスからの入力データ(Din)に置き換えたデータ(このデータはDin_Mとして機能モデュールへ出力される)に対してパリティビットの符号化を行う。
 一方、ECC_FLGが活性状態の場合は、アクセス対象のレジスタを有するレジスタ・セットのデータ(Dout_M)を誤り訂正したデータ(Dout_ECC)に対してパリティビットの符号化を行う。ここで、信号ASは、レジスタセットのうち、アクセス対象の一つのレジスタの番地から生成される選択信号である。もし、4つのレジスタでレジスタセットを形成する場合は2ビットの信号となり、0~3の値をとる。このASの値によって、ECC_FLGが非活性状態の時に、Dout_ECCからどのビットをDinに置き換えるかの制御を行う。また、ECCモデュールで誤り訂正されたデータ(Dout_ECC)は、対象レジスタのnビットのデータ(Dout)をASの値によって選択し、データバスへ出力される。
 以上の動作を、図15に示す様に符号が割り付けられ、即ち、レジスタセットが4個の16ビット・レジスタから構成される場合について、例えば、レジスタ0~3から形成されるレジスタセットのレジスタ1へアクセスする場合の動作を例について詳述する。
 CPUがレジスタ1の内容を書き換える命令をフェッチすると、レジスタ1の番地と書き込みデータをバスに出力する。バスに出力された書き込みデータをD_reg1とする。また、レジスタ0~3が保持しているデータをそれぞれ、Q_reg0、Qreg1、Q_reg2、Q_reg3とし、64ビットのレジスタセットの値をQregset={Q_reg3,Q_reg2,Q_reg1,Q_reg0}とする。
 この時、レジスタ1を含むレジスタセットのQregsetの値は、ECCモデュールに入力され、デコーダ回路によって誤りチェックと訂正が行われる。(ここで、Qregsetの値は先に実行されるリストア動作により既に誤り訂正済みであるため、誤りは検出されない。よって、ECC_FLG信号は非活性状態である。)このデコーダ出力Qregsetは、レジスタ1に該当するビットのみが書き込みデータD_reg1に置き換えられる。即ち、64ビットのDregset={Q_reg3,Q_reg2,D_reg1,Q_reg0}の値が対象のレジスタセットへの入力データとして出力される。エンコーダは、このDregsetの値を元に7ビットのパリティを生成する。この場合において、信号ASの値は“1”となり、Q_reg1が選択されてデータバスへ出力される。
 CPUがレジスタ1のリストア命令をフェッチした場合について詳述する。レジスタ1の番地をバスに出力し、リストアイネーブル信号LBをローレベルに活性化されるのは第1の実施形態と同様である。この時、レジスタ1だけでなく、それが属するレジスタセットの全てのレジスタ、即ち、レジスタ0、レジスタ2、レジスタ3も同時にリストア動作を行う。この時、呼び出された64ビットのデータQregset={Q_reg3,Q_reg2,Q_reg1,Q_reg0}がECCモデュールに入力され、デコーダによって誤りチェックと誤り訂正が実行される。
 もし、誤りビットが検出されない場合は、ECC_FLG信号は活性化されず、レジスタ1が属するレジスタセットのリストア動作を終了する。ここで、レジスタ0、レジスタ2、レジスタ3のリストア命令はプログラム上、省略可能であることは言及するまでもない。
一方、誤りビットが検出されると、ECC_FLG信号が活性化(ハイレベル)される。デコーダで誤り訂正された後の値をQregset_c={Q_reg3_c,Q_reg2_c,Q _reg1_c,Q_reg0_c}とする。この時、対象レジスタセットへの入力データは、デコーダ出力が選択される。即ち、レジスタセットへ出力される64ビットのDin_Mの値(Dregset)は、誤り訂正されたQregset_cと等しい。エンコーダは、Qregset_cの値を元に7ビットのパリティを生成する。
 以上説明した実施形態においては、4ワードで構成されるレジスタセット単位でリストア動作する場合であったので、ECCモデュールが機能モデュールに供給するデータ(Din_M)のビット幅はm(=4×n)ビット必要であった。もし、リストア動作が1ワードのレジスタ単位で実行される場合は、Din_Mのビット幅はnビットで良い。この場合は、リストア対象となるレジスタセット全てのレジスタの値を一時保存するレジスタがECCモデュール内に必要である。
 一般的なマイクロコンピュータにおいては、ワード単位で演算処理を行うワードモードの他に、バイト単位で演算処理を行うバイトモードを備えていることが多い。図16に示したECCモデュールは、このバイトモードにカスタマイズすることも可能である。例えば、レジスタ番地の下位ビットが割り付けられるAS信号に、上位バイトと下位バイトのビットを追加してビット操作の制御を行えばよい。
例えば、先述の例においてAS信号は2ビットから3ビットに増やし、上位2ビットがレジスタ番地、最下位ビットが1の時上位バイト、0の時下位バイトを示すとする。AS信号の最下位ビットが0であれば、レジスタ1のデータQ_reg1(あるいはQ_reg1_c)の下位8ビットをD_reg1の下位8ビットに置き換えれば良い。同様に、AS信号の最下位ビットが1であれば、レジスタ1のデータQ_reg1(あるいはQ_reg1_c)の上位8ビットをD_reg1の上位8ビットに置き換えれば良い。
 また、以上説明した実施形態において、以下のように変更することが可能である。CMOSトランジスタに起因するソフトエラー率が無視できるほど低いのであれば、レジスタの値を誤りチェックするのは不揮発性素子からリストア動作する時のみで良いはずである。先述の実施形態においては、レジスタ値の書き換え命令においても書き換え前のレジスタの値を誤りチェックしていた。この誤りチェックの動作は明らかに冗長である。従って、図7、及び、図16のECCモデュールにおいて、リストア命令の処理を実行している時以外は、デコーダ回路を短絡する回路に変更しても構わない。
 不揮発性論理集積回路の電源を切断する前の一般的な手続きにおいて、不揮発性フリップフロップが保持するデータを、当該フリップフロップに組み込まれた不揮発性素子にセーブする動作を電源切断前に実行することを含む。また、不揮発性論理集積回路の電源を投入した後の一般的な手続きにおいて、不揮発性素子が保持するデータを不揮発性フリップフロップに呼び出すリストア動作を実行することを含む。このリストア動作の方法については実施形態を用いて詳述した。この本発明によるリストア動作、及び、誤りビットの検出と訂正においては、電源投入時のみの実行に留まらない。例えば、電源切断前のセーブ動作実行後に、セーブ動作対象の不揮発性フリップフロップのリストア動作と誤り訂正動作を実行した後に電源を切断しても構わない。これにより、電源投入時のリストア動作における誤りビット検出の確率を下げることができる。
 本発明による効果を以下に説明する。
 例えば、1,024ワードの不揮発レジスタが集積回路内に有する場合を考える。図3の従来技術によれば、ECC回路(エンコーダとデコーダ)が1,024台必要であった。一方、全ての不揮発レジスタを一度にリストアさせて誤り訂正することが可能なので、リストア動作と誤り訂正に必要なクロックサイクル数は3~4サイクルである。しかし、全ての不揮発レジスタを一度にリストアさせるのは現実的ではない。例えば、ピーク電流が著しく増加し、電源電圧の思わぬ電圧降下等によって誤動作の原因になりかねないからである。よって、不揮発レジスタをいくつかのグループに分けて、グループ毎にリストア動作させることが現実的である。
 例えば、本発明の第2の実施形態によれば、1,024ワードの不揮発レジスタの誤り訂正に必要なECC回路は1台あれば十分である。4ワードの不揮発レジスタから構成されるレジスタセット単位でリストア動作させることで、リストア動作と誤り訂正に必要なクロックサイクルは258サイクルとなる。本発明は、図17に示すように、ECCを多重化して複数のECCモデュールを並列動作させる変更を加えることができる。例えば、ECCモデュールを16個配置した場合を考えると、全ての不揮発レジスタをリストア、誤り訂正するのに要するクロック数は18サイクルに削減可能である。ECCモデュールは16個に増加するが、従来例に比べると面積オーバヘッドは1/64に削減されており、このオーバヘッドは実用上問題のないレベルである。
この出願は、2012年3月6日に出願された日本出願特願2012-49459を基礎とする優先権を主張し、その開示の全てをここに取り込む。
ECC_FLG  1ビットのフラグ信号
 Din  データバスからのデータ入力
 Dout  デコーダが出力する訂正データ
 REGout  不揮発レジスタのデータ出力
 LB  リストアイネーブル信号

Claims (9)

  1. 不揮発性素子を有する不揮発性論理要素回路を複数用いられて構成される機能モデュールと、前記機能モデュールに対応して設けられたECCモデュールと、前記機能モデュールと前記ECCモデュールを制御するCPUとを有する不揮発性論理集積回路であって、
    前記機能モデュールは前記CPUからの第1の制御信号が活性化することに応答して前記複数の不揮発性論理要素回路のうち対応する不揮発性論理要素回路が保持する保持データを前記ECCモデュールに転送し、
    前記ECCモデュールは前記機能モデュールから転送された保持データの誤りビットのチェックを行い、誤りビットを検出すると第2の制御信号を活性化すると共に誤り訂正したデータに対して符号化を行い、
    前記CPUは前記第2の制御信号が活性化したのを受けて次のサイクルで前記データを読み出した不揮発性論理要素回路に対して訂正データを書き戻す処理を行うと共に、同じサイクルで前記第1及び第2の制御信号を非活性化することを特徴とする不揮発性論理集積回路。
  2.  前記不揮発性論理要素回路は第3の制御信号受け、前記第3の制御信号が活性化されると前記不揮発性論理要素回路が保持するデータを前記不揮発性素子へ転送し、
     前期書き戻しサイクルにおいて、前記第3の制御信号を活性化させることを特徴とする請求項1記載の不揮発性論理集積回路。
  3.  前記ECCモデュールは、データバスから入力される第1のデータと、前記論理要素回路を含む機能モデュールから入力される第2のデータとを入力データとし、
     前記第2の制御信号が非活性状態の時に第1のデータと、第1のデータから符号化されるパリティビットを前記機能モデュールへ出力し、
     前記第2の制御信号が活性状態の時に第2のデータと、第2のデータから符号化されるパリティビットとを機能モデュールへ出力することを特徴とする請求項1記載の不揮発性論理集積回路。
  4.  前記ECCモデュールに入力される前記第2のデータのビット幅が、前記第1のデータのビット幅よりも大きく、
     前記第2のデータの一部のビットを前記第1のデータに置き換えた第3のデータと、前記第3のデータから符号化されるパリティビットとを機能モデュールに出力することを特徴とする請求項3記載の不揮発性論理集積回路。
  5.  前記第1の制御信号が活性化されるサイクルを含まない一連の命令サイクルにおいては、前記ECCモデュールの誤り検出動作は行わないことを特徴とする請求項1記載の不揮発性論理集積回路。
  6.  前記論理要素回路が、クロックに同期して入力データを一定時間だけ保持する一時保持回路の機能を有し、nビット(nは2以上)の論理要素回路からなる不揮発性レジスタを構成していることを特徴とする請求項1記載の不揮発性論理集積回路。
  7.  前記不揮発性素子が、強誘電体素子、あるいは、磁気抵抗素子、相変化素子等の抵抗変化素子を用いて構成されていることを特徴とする請求項1記載の不揮発性論理集積回路。
  8.  不揮発性素子を有する論理要素回路から構成される不揮発性レジスタの誤りビットの訂正方法であって、
     任意の不揮発レジスタのリストア命令取得と、当該レジスタ番地を取得する第1のステップと、
     不揮発性素子が保持するデータを論理要素回路へ呼び出すリストア動作、及び、呼び出されたデータの誤りチェックと訂正動作を行う第2のステップと、
     誤り訂正されたデータを当該レジスタに書き戻し、さらに、不揮発性素子にも訂正データを書き戻す第3のステップとを有することを特徴とする不揮発性レジスタの誤り訂正方法。
  9.  前記不揮発性レジスタの保持データを不揮発性素子に書くセーブ命令を実行した後に、当該レジスタのリストア命令を実行し、誤り訂正を行ってから電源を切断することを特徴とする請求項8記載の不揮発性レジスタの誤り訂正方法。
PCT/JP2013/001265 2012-03-06 2013-03-01 不揮発性論理集積回路と不揮発性レジスタの誤りビットの訂正方法 WO2013132806A1 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2012049459 2012-03-06
JP2012-049459 2012-03-06

Publications (1)

Publication Number Publication Date
WO2013132806A1 true WO2013132806A1 (ja) 2013-09-12

Family

ID=49116302

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/001265 WO2013132806A1 (ja) 2012-03-06 2013-03-01 不揮発性論理集積回路と不揮発性レジスタの誤りビットの訂正方法

Country Status (2)

Country Link
JP (1) JPWO2013132806A1 (ja)
WO (1) WO2013132806A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016054472A (ja) * 2014-01-24 2016-04-14 株式会社半導体エネルギー研究所 半導体装置
JP7430482B2 (ja) 2017-10-30 2024-02-13 三星電子株式会社 ライト動作方法

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62206877A (ja) * 1986-03-07 1987-09-11 Seiko Instr & Electronics Ltd 半導体不揮発性ram
JPS62214599A (ja) * 1986-03-14 1987-09-21 Fujitsu Ltd 半導体記憶装置
JPH0349098A (ja) * 1989-07-17 1991-03-01 Seiko Instr Inc 不揮発性ram
JPH0533252U (ja) * 1991-09-30 1993-04-30 横河電機株式会社 メモリ制御装置
JP2000293989A (ja) * 1999-04-07 2000-10-20 Nec Corp 強誘電体容量を用いたシャドーramセル及び不揮発性メモリ装置並びにその制御方法
JP2003248631A (ja) * 2002-02-26 2003-09-05 Nec Microsystems Ltd メモリ制御回路及びメモリ制御方法
JP2004241004A (ja) * 2003-02-03 2004-08-26 Sony Corp 半導体記憶装置
JP2005327437A (ja) * 2004-04-12 2005-11-24 Nec Electronics Corp 半導体記憶装置
JP3768504B2 (ja) * 2002-04-10 2006-04-19 松下電器産業株式会社 不揮発性フリップフロップ
JP2007141372A (ja) * 2005-11-18 2007-06-07 Toshiba Corp 半導体記憶装置
JP2007242162A (ja) * 2006-03-09 2007-09-20 Toshiba Corp 半導体記憶装置
WO2009072511A1 (ja) * 2007-12-06 2009-06-11 Nec Corporation 不揮発性ラッチ回路
JP2010079954A (ja) * 2008-09-24 2010-04-08 Toshiba Corp 半導体記憶装置および半導体記憶装置の駆動方法
JP2012221536A (ja) * 2011-04-12 2012-11-12 Sharp Corp 半導体記憶装置
JP2012256392A (ja) * 2011-06-09 2012-12-27 Sharp Corp 半導体記憶装置

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62206877A (ja) * 1986-03-07 1987-09-11 Seiko Instr & Electronics Ltd 半導体不揮発性ram
JPS62214599A (ja) * 1986-03-14 1987-09-21 Fujitsu Ltd 半導体記憶装置
JPH0349098A (ja) * 1989-07-17 1991-03-01 Seiko Instr Inc 不揮発性ram
JPH0533252U (ja) * 1991-09-30 1993-04-30 横河電機株式会社 メモリ制御装置
JP2000293989A (ja) * 1999-04-07 2000-10-20 Nec Corp 強誘電体容量を用いたシャドーramセル及び不揮発性メモリ装置並びにその制御方法
JP2003248631A (ja) * 2002-02-26 2003-09-05 Nec Microsystems Ltd メモリ制御回路及びメモリ制御方法
JP3768504B2 (ja) * 2002-04-10 2006-04-19 松下電器産業株式会社 不揮発性フリップフロップ
JP2004241004A (ja) * 2003-02-03 2004-08-26 Sony Corp 半導体記憶装置
JP2005327437A (ja) * 2004-04-12 2005-11-24 Nec Electronics Corp 半導体記憶装置
JP2007141372A (ja) * 2005-11-18 2007-06-07 Toshiba Corp 半導体記憶装置
JP2007242162A (ja) * 2006-03-09 2007-09-20 Toshiba Corp 半導体記憶装置
WO2009072511A1 (ja) * 2007-12-06 2009-06-11 Nec Corporation 不揮発性ラッチ回路
JP2010079954A (ja) * 2008-09-24 2010-04-08 Toshiba Corp 半導体記憶装置および半導体記憶装置の駆動方法
JP2012221536A (ja) * 2011-04-12 2012-11-12 Sharp Corp 半導体記憶装置
JP2012256392A (ja) * 2011-06-09 2012-12-27 Sharp Corp 半導体記憶装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016054472A (ja) * 2014-01-24 2016-04-14 株式会社半導体エネルギー研究所 半導体装置
JP7430482B2 (ja) 2017-10-30 2024-02-13 三星電子株式会社 ライト動作方法

Also Published As

Publication number Publication date
JPWO2013132806A1 (ja) 2015-07-30

Similar Documents

Publication Publication Date Title
US10579463B2 (en) Error recovery within integrated circuit
US7447948B2 (en) ECC coding for high speed implementation
US9619324B2 (en) Error correction in non—volatile memory
US20030093744A1 (en) Error correcting memory and method of operating same
US9619318B2 (en) Memory circuits, method for accessing a memory and method for repairing a memory
JP2005242797A (ja) エラー訂正回路
US7260001B2 (en) Memory system having fast and slow data reading mechanisms
US11726665B1 (en) Memory extension with error correction
US20110161783A1 (en) Method and apparatus on direct matching of cache tags coded with error correcting codes (ecc)
US20150286544A1 (en) Fault tolerance in a multi-core circuit
US3898443A (en) Memory fault correction system
CN110535476B (zh) Ldpc软译码器软信息存储优化方法、装置、计算机设备及存储介质
US7058877B2 (en) Method and apparatus for providing error correction within a register file of a CPU
JP4102313B2 (ja) 半導体集積回路装置
WO2013132806A1 (ja) 不揮発性論理集積回路と不揮発性レジスタの誤りビットの訂正方法
US7240272B2 (en) Method and system for correcting errors in a memory device
JP4279874B2 (ja) 高速及び低速のデータ読取り機構を有するメモリ・システム
US9043655B2 (en) Apparatus and control method
US9542266B2 (en) Semiconductor integrated circuit and method of processing in semiconductor integrated circuit
JP4921216B2 (ja) メモリ制御回路、記憶システム、情報処理装置、および、メモリ制御方法
JP4159896B2 (ja) 連想メモリ
JP6551844B2 (ja) 半導体装置
JP2009158051A (ja) 不揮発性半導体記憶装置及び読み出しテスト方法

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2014503467

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13758067

Country of ref document: EP

Kind code of ref document: A1