WO2014092465A1 - Method for reducing power consumption of flash memory, and device for same - Google Patents

Method for reducing power consumption of flash memory, and device for same Download PDF

Info

Publication number
WO2014092465A1
WO2014092465A1 PCT/KR2013/011502 KR2013011502W WO2014092465A1 WO 2014092465 A1 WO2014092465 A1 WO 2014092465A1 KR 2013011502 W KR2013011502 W KR 2013011502W WO 2014092465 A1 WO2014092465 A1 WO 2014092465A1
Authority
WO
WIPO (PCT)
Prior art keywords
program code
bit
flash memory
toggles
power consumption
Prior art date
Application number
PCT/KR2013/011502
Other languages
French (fr)
Korean (ko)
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 WO2014092465A1 publication Critical patent/WO2014092465A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30156Special purpose encoding of instructions, e.g. Gray coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Definitions

  • the present invention relates to a reduction in power consumption of a flash memory, and more particularly, in order to minimize the number of toggles in a line connected to a precharge circuit, for example, a bit line, when reading data stored in the flash memory.
  • the present invention relates to a method and apparatus for reducing power consumption of a flash memory capable of reducing power consumed by pre-charge when reading data stored in the flash memory by bit-converting and storing the instructions in the flash memory.
  • Flash memory is nonvolatile, which means that flash memory stores information on a semiconductor in a manner that does not require power to maintain the information on the chip. Flash memory stores information in an array of transistors called "cells", each of which stores one or more bits of information. Memory cells are based on Floating-Gate Avalanche-Injection Metal Oxide Semiconductor (FAMOS) transistors, which inherently contain CMOS (additional conductors) suspended or floating between gate and source / drain terminals. Complementary Metal Oxide Semiconductor (FET). Current flash memory devices consist of two basic array architectures. Names indicating the type of NOR flash and NAND flash logic are used in the storage cell array.
  • FMOS Floating-Gate Avalanche-Injection Metal Oxide Semiconductor
  • Flash cells are similar to standard MOSFET transistors except that they have two gates instead of just one gate.
  • One gate is the same as a control gate (CG) in other MOS transistors, and the other is a floating gate (FG) insulated all around by an oxide layer. Since the FG is insulated by its oxide layer, any electrons placed on it are trapped there and thus store information.
  • CG control gate
  • FG floating gate
  • Memory cells of memory devices are typically arranged in an array with rows and columns. In general, rows are connected via wordline conductors and rows are connected via bitline conductors. During the data read functions, the bitline conductors are precharged to the selected voltage level.
  • Precharge circuitry that precharges the bitline conductors requires a large amount of current to saturation, so when reading data from '0' to '1' or '1' on that bitline If a toggle frequently reads '0' frequently occurs, the current consumption increases accordingly, thereby increasing the overall power consumption in order to generate a precharge current.
  • the prior art relates to a configuration for storing data in a direction of low power consumption by selectively inverting data stored in a flash memory, and solves a problem in which an operating current increases when a cell of a flash memory is erased to zero. It is to. That is, the prior art is to prevent the increase of the operating current when reading the value of 0 stored in the memory cell, and does not describe any problem with the current consumption of the precharge which can be increased by the toggle. There is a need for a method of reducing current consumption by the precharge circuit generated by the method.
  • the present invention is derived to solve the problems of the prior art as described above, the power consumption of the flash memory can reduce the power consumption by the pre-charge generated by the toggle when reading the data stored in the flash memory It is an object of the present invention to provide a reduction method and an apparatus thereof.
  • the present invention calculates the number of toggles based on the execution order of the instructions of the program code, determines whether to convert the bit for each instruction to minimize the number of toggles, and after performing the bit conversion of the data for the determined instruction
  • the number of toggles is minimized when reading the program code stored in the flash memory, thereby reducing power consumption by precharge.
  • an object of the present invention is to provide a method and apparatus for reducing power consumption of a flash memory that can reduce the total power consumption of a device equipped with a flash memory by reducing the power consumption by precharging when reading the flash memory. do.
  • a method of reducing power consumption of a flash memory comprises the steps of receiving a program code; Analyzing the received program code; Calculating a number of toggles of a bit value according to an instruction of the program code by analyzing the program code; Bit converting a bit value of the program code based on the calculated number of toggles; And storing the bit-converted program code in a flash memory.
  • the calculating may include calculating the number of toggles based on a command execution order of the program code.
  • the calculating may include generating an access pattern for the program code by analyzing the program code; Obtaining an access flow of the program code using the generated access pattern; And calculating the number of toggles based on the obtained access flow of the program code.
  • the converting of the bits may include determining whether to convert bits in each data area of the command so that the number of toggles according to the instruction execution order of the program code is minimized; And performing bit conversion on the data area of the command in which the bit conversion is determined.
  • the storing may store a flag bit for a data area in which the bit conversion is performed.
  • the method may further include bit converting and reading the program code bit-converted and stored in the flash memory.
  • the reading may be performed by bit-converting the program code stored in the flash memory using a flag bit stored in advance for a data area in which the bit conversion is performed among the program codes stored in the flash memory.
  • An apparatus for reducing power consumption of a flash memory may include a receiver configured to receive a program code; An analysis unit for analyzing the received program code; An operation unit configured to calculate a toggle number of bit values according to an instruction of the program code by analyzing the program code; A bit converter configured to bit convert a bit value of the program code based on the calculated number of toggles; And a storage unit which stores the bit-converted program code in a flash memory.
  • the calculator may calculate the number of toggles based on an instruction execution order of the program code.
  • the bit converter may determine whether or not to convert the bit in the data area of each instruction so that the number of toggles in accordance with the instruction execution order of the program code is the minimum; And a bit conversion performing unit performing bit conversion on the data area of the command in which the bit conversion is determined.
  • the present invention when reading the program code stored in the flash memory by calculating the number of toggles based on the execution order of the instructions of the program code, and performing bit conversion for each of the instructions so as to minimize the number of toggles to store in the flash memory
  • the number of toggles can be minimized to reduce power consumption by precharge.
  • the present invention can reduce the power consumption of the precharge circuit according to the toggle when reading the flash memory can reduce the overall power consumption of the device equipped with the flash memory.
  • FIG. 1 illustrates a configuration of an apparatus for reducing power consumption of a flash memory according to an embodiment of the present invention.
  • FIG. 2 is a diagram illustrating an embodiment of an operation unit shown in FIG. 1.
  • FIG. 3 is a diagram illustrating another exemplary configuration of the calculator illustrated in FIG. 1.
  • FIG. 4 illustrates a configuration of an embodiment of the first converter illustrated in FIG. 1.
  • 5 illustrates an example of generating an access pattern according to analysis of program code.
  • FIG. 6 shows a data access graph (DAG) for the access pattern shown in FIG. 5.
  • DAG data access graph
  • FIG. 7 illustrates an example of a process of calculating a toggle number of program codes according to an access flow.
  • FIG. 8 is an exemplary diagram for describing an operation of determining and converting a bit converted data region according to an instruction execution order of a program code.
  • FIG. 9 is a flowchart illustrating a method of reducing power consumption of a flash memory according to an embodiment of the present invention.
  • FIG. 10 illustrates a flowchart of an operation of step S930 illustrated in FIG. 9.
  • FIG. 11 is a flowchart illustrating another operation of step S930 illustrated in FIG. 9.
  • FIG. 12 illustrates an operation flowchart of an embodiment of a method of reading the program code stored by FIG. 9.
  • a method of reducing power consumption of a flash memory comprises the steps of receiving a program code; Analyzing the received program code; Calculating a number of toggles of a bit value according to an instruction of the program code by analyzing the program code; Bit converting a bit value of the program code based on the calculated number of toggles; And storing the bit-converted program code in a flash memory.
  • the calculating may include calculating the number of toggles based on a command execution order of the program code.
  • the calculating may include generating an access pattern for the program code by analyzing the program code; Obtaining an access flow of the program code using the generated access pattern; And calculating the number of toggles based on the obtained access flow of the program code.
  • the converting of the bits may include determining whether to convert bits in each data area of the command so that the number of toggles according to the instruction execution order of the program code is minimized; And performing bit conversion on the data area of the command in which the bit conversion is determined.
  • the storing may store a flag bit for a data area in which the bit conversion is performed.
  • the method may further include bit converting and reading the program code bit-converted and stored in the flash memory.
  • the reading may be performed by bit-converting the program code stored in the flash memory using a flag bit stored in advance for a data area in which the bit conversion is performed among the program codes stored in the flash memory.
  • An apparatus for reducing power consumption of a flash memory may include a receiver configured to receive a program code; An analysis unit for analyzing the received program code; An operation unit configured to calculate a toggle number of bit values according to an instruction of the program code by analyzing the program code; A bit converter configured to bit convert a bit value of the program code based on the calculated number of toggles; And a storage unit which stores the bit-converted program code in a flash memory.
  • the calculator may calculate the number of toggles based on an instruction execution order of the program code.
  • the bit converter may determine whether or not to convert the bit in the data area of each instruction so that the number of toggles in accordance with the instruction execution order of the program code is the minimum; And a bit conversion performing unit performing bit conversion on the data area of the command in which the bit conversion is determined.
  • FIG. 1 illustrates a configuration of an apparatus for reducing power consumption of a flash memory according to an embodiment of the present invention.
  • the apparatus includes a receiver 110, an analyzer 120, a calculator 130, a first converter 140, a storage 150, a flash memory 160, and a second.
  • the converter 170 and the reader 180 are included.
  • the receiver 110 receives a program code from the outside.
  • the receiving unit 110 may receive the program code through an apparatus or a program capable of generating the program code, and also through an external storage means storing the program code.
  • the analyzer 120 analyzes the program code received by the receiver 110.
  • the analysis unit 120 may analyze the program code to obtain information about the execution order of the instructions included in the program code.
  • the calculation unit 130 calculates a toggle number of bit values according to the instruction of the program code, based on the analysis result of the program code of the analysis unit.
  • the calculation unit 130 calculates the number of toggles in which the bit value changes from '1' to '0' or '0' to '1' under the assumption that the instructions of the program code are stored in the flash memory 160.
  • the operation unit 130 may 1) calculate the number of toggles in the order of addresses for instructions sequentially stored in the flash memory 160, and 2) toggle between instructions based on the execution order of the instructions of the program code. The number may be calculated, and 3) the number of toggles of the program code may be calculated based on an access pattern obtained through analysis of the program code.
  • the calculator 130 sequentially calculates the number of toggles for the instructions to be sequentially stored in the flash memory 160.
  • the number of toggles may be sequentially calculated, such as the number of toggles between the first and second instructions, the number of toggles between the second and third instructions, and the number of toggles between the third and fourth instructions.
  • the operation unit 130 may know the execution order of the instructions according to the analysis result of the program code, and according to the order in which the instructions stored in the flash memory 160 are read according to the execution order of the instructions.
  • the number of toggles may be calculated.
  • the calculator 130 includes a performance order obtainer 210 and a toggle number calculator 220 as shown in FIG. 2.
  • the execution order acquisition unit 210 obtains an execution order for instructions of the program code through program code analysis.
  • the command execution order refers to a connection relationship between the commands, and may mean an execution order by moving to a specific address, repetition, and the like.
  • the execution order acquisition unit 210 may identify the program code forming the loop, and determine the start code and the last code of the loop. If the condition to escape the loop is not satisfied, since the start code of the loop is likely to be executed again after the last code of the loop, the execution order acquisition unit 210 may obtain the execution order in consideration of this point. . Considering the case where the condition to escape the loop is satisfied, the execution order obtaining unit 210 may obtain the execution order in which the higher code of the loop is performed again after the last code of the loop in consideration of a weight or a probability. have.
  • execution order may be obtained in the form of a conditional branch or an unconditional branch (jump, goto, etc.).
  • the toggle number calculator 220 calculates a toggle number of the program code based on the execution order of the acquired instructions of the program code.
  • the operation unit 130 generates an access pattern between variables or operands through analysis of the program code, and access flow of the program code using the generated access pattern. (access flow) and may calculate the number of toggles of the program code based on the acquired access flow of the program code, wherein the operation unit 130 as shown in Figure 3, the pattern generator 310, the flow It includes an acquirer 320 and a toggle number calculator 330.
  • the pattern generator 310 generates an access pattern for the program code through program code analysis.
  • the pattern generator 310 generates an access pattern 520 of “bdabcbbdeba” through analysis of the received program code 510.
  • the flow obtainer 320 acquires an access flow of program code using the access pattern 520 generated by the pattern generator 310.
  • the access flow of the program code may be a flow for variables a, b, c, d, and e, or may be a flow between instructions included in the program code.
  • the flow acquirer 320 If necessary, the flow acquirer 320 generates a data access graph DAG as shown in FIG. 6 based on the access pattern generated by the pattern generator 310, and generates the generated data access graph. May be used to obtain an access flow of program code.
  • the data access graph may include a connection relationship 620 between the variables 610 and the number of times of connection 630, and the number of other variables connected to each of the variables through the data access graph. .
  • variable b in the case of variable b, it can be seen that there is a connection relationship with all other variables a, c, d, and e, and that the number of times that the variable a, c, and d are connected is twice, and thus the variables of program code.
  • variable b has the greatest effect on the total number of toggles in the program code.
  • the relationship between the variables 610 may be strengthened.
  • the variable b is associated with the variables a, d, and c twice
  • the variable e is associated with the variable e.
  • the flow acquirer 320 may identify an operation type and an operand from a program code as shown in FIG. 7.
  • the operands extracted from each row of the program code of FIG. 7, that is, the association between variables, can be evaluated using a data access graph as shown in FIG. 6. For example, if it is shown that there is a particularly high association between specific variables on the data access graph, the flow acquisition unit 320, if any one of the specific variables is found in the program code, the other one of the specific variables
  • the program code containing the page can then be predicted to be executed next and the execution order of the program code can be determined.
  • variable b and variable d show a particularly high correlation.
  • the DAG can also identify the leading and trailing variables, and assumes that variable b is accessed with high probability after variable b.
  • the code including the variable b can be predicted to be more likely to be executed.
  • the toggle number calculator 330 calculates the number of toggles when the program code is stored in the flash memory 260 without bit conversion based on the access flow of the program code acquired by the flow acquirer 320.
  • the toggle number calculator 330 may use the access flow based on the data access graph or the access pattern of the program code shown in FIG. 5 or 6 to program code to be stored in the flash memory.
  • 1 Number of toggles for data in the area 1 Number of toggles between the last address data in the area and 2 First address data in the area, 2 Number of toggles in the area, 2 Number of toggles between the last address data in the area and 3 First address data in the area
  • the number of toggles for the data in the area and, the number of toggles when stored in the flash memory 260 without bit conversion is calculated.
  • the execution order of the program codes is obtained through different problem solving methods, which are likely to obtain similar conclusions. For example, in a loop that is repeated many times, as the execution is repeated many times, there is a high possibility that the association on the DAG is enhanced for the operations in the loop. In addition, in case of unconditional branching, as the program codes distant from each other are frequently executed, it is highly likely that the relationship between the variables of the corresponding program codes will be strengthened on the DAG.
  • the first converter 140 bit-converts the bit value of the program code based on the number of toggles calculated by the calculator 130.
  • the first converter 140 may determine whether or not to convert a bit for each of the instructions included in the program code, and then perform bit conversion on the data area of the command in which the bit conversion is determined.
  • the first transform unit 140 includes a determiner 410 and a transform performer 420.
  • the determination unit 410 determines whether or not to convert the bit in the data area of each instruction so that the number of toggles for the program code is minimum.
  • the determination unit 410 may determine whether or not to convert the bit so that the number of toggles according to the instruction execution order of the program code is the minimum, the bit for the instruction so that the number of toggles of the program code to the minimum based on the access pattern of the program code You can also decide whether to convert.
  • instructions of a program code to be stored in the flash memory 160 are stored from address 1 to address 5 of the flash memory 160, and the instruction is executed.
  • the determining unit 410 converts the bits of the second and fourth instruction data among the instructions so that the number of toggles of the program code is minimum. (bit inversion) That is, the determination unit 410 may minimize the number of toggles of the program code by determining bit conversion of the second command and the fourth command data.
  • the conversion performer 420 performs bit conversion on the data area of the instruction determined by the determiner 410.
  • the conversion performing unit 420 performs bit conversion on the data area of the second command and the fourth command determined by the determination unit 410 as shown in the example shown in FIG. 8, thereby converting the bit of the second command.
  • the first converter 140 may minimize the total number of toggles of the program code by bit converting the data of the command in which the bit conversion is determined.
  • the storage unit 150 stores the program code bit-converted by the first converter 140 in the flash memory 160.
  • the storage unit 150 may store the flag bits for the data area of the instruction bit-converted by the first converter 140 in a predetermined storage means, where the storage means may be a flash memory, It may be a storage means provided separately.
  • the storage unit 150 may store flag bits for all instructions. In this case, the storage unit 150 stores the bit value '1' of the flag bit for the bit-converted instruction, and does not convert the bit. If the instruction is not used, the bit value '0' of the flag bit can be stored. Of course, this value may be changed depending on circumstances.
  • the second converter 170 checks the bit-converted data area among the program codes stored in the flash memory 160 and bit-converts the data of the data area.
  • the second converter 170 may bit convert the program code stored in the flash memory 160 based on the bit value of the flag bit stored in advance.
  • the second converter 170 may perform bit-conversion with respect to the second command data 610 and the fourth command data 620 stored in the flash memory.
  • Bit value '1' of the not shown bit-converts the data of the data area, and for the command stored in the flash memory as the original data, the data of the data area is converted through the bit value '0' of the flag bit of the command. Do not bit convert.
  • the reading unit 180 reads the program code that is bit converted by the second converter 170, that is, the original program code.
  • the apparatus bit-transforms and stores the program code stored in the flash memory such that the number of toggles according to the instructions of the program code is minimized when the program code is stored in the flash memory. This can reduce the power consumption of the flash memory.
  • the present invention can reduce the power consumption of the flash memory, thereby reducing the overall power consumption of the device equipped with the flash memory.
  • FIG. 9 is a flowchart illustrating a method of reducing power consumption of a flash memory according to an embodiment of the present invention.
  • the method according to the present invention receives a program code from the outside, and analyzes the received program code (S910, S920).
  • the analysis of the program code may be an analysis of the instructions included in the program code, may be an analysis of the binary data of the program code, and may include all the analysis to minimize the number of toggles in the present invention.
  • the toggle is a bit line '0' to '1' or a '1' to '0' in the first line of the flash memory connected to the precharge circuit according to the order of execution of the instructions.
  • the number of toggles of the program code means the total number of toggles generated according to the order of execution of the instructions.
  • step S930 may calculate the sequential toggle number of the program code in the order of the addresses stored in the flash memory, calculate the number of toggles between the instructions based on the execution order of the instructions of the program code, and analyze the program code. It is also possible to calculate the number of toggles of the program code based on the access pattern obtained through the above, this will be described with reference to FIGS. 10 and 11.
  • FIG. 10 is a flowchart illustrating an example operation of operation S930 illustrated in FIG. 9, and illustrates a process of calculating a toggle number based on a command execution order.
  • operation S930 the number of toggles is obtained based on an analysis result of the program code in operation S920, in operation S1010.
  • the order of execution of the instructions refers to the order of instructions that are performed while the program code is executed, and a specific instruction may be repeatedly executed by the order of execution.
  • step S1010 When the instruction execution order is obtained in step S1010, the number of toggles of the program code is calculated based on the obtained instruction execution order (S1020).
  • the number of toggles for the entire instruction of the program code may be calculated by calculating the number of toggles with the previous instruction and the number of toggles with the subsequent instruction according to the execution order between the instructions.
  • FIG. 11 is a flowchart illustrating another operation of step S930 illustrated in FIG. 9 and illustrates a process of calculating a toggle number using an access pattern.
  • an access pattern for the program code is generated by analyzing the program code, and an access flow of the program code is obtained using the generated access pattern (S1110). S1120).
  • a data access graph including a connection relationship between the instructions and the number of connections may be generated using the access pattern of the program code, and the access flow may be obtained using the generated data access graph.
  • the total number of toggles of the program code is calculated based on the obtained access flow (S1130).
  • step S930 when the total number of toggles of the program code is calculated by step S930, it is determined whether or not to convert a bit for each data area of the instruction based on the calculated number of toggles, and whether the bit conversion is determined or not. Performs bit conversion on (S940 and S950).
  • whether or not to convert the data corresponding to the data area of each instruction may be determined in order to minimize the number of toggles of the program code, and whether or not to convert the bit between the instructions and the number of times each of the instructions, and even between the instructions It may be determined in consideration of the number of connections or repetitions.
  • bit conversion is determined for each command and bit conversion is performed on the command for which the bit conversion is determined, the bit-converted program code is stored in the flash memory (S960).
  • step S940 the original program code is stored in the flash memory.
  • the flag bit of whether or not the bit is converted to the area is stored in the data of each instruction in a predetermined area or a separate storage means of the flash memory (S970).
  • the flag bit is stored for each instruction, and the bit value of the flag bit has a value of '1' for the instruction in which bit conversion is performed and a value of '0' for an instruction in which bit conversion is not performed. Can be. Of course, the bit value of the flag bit may be interchanged depending on the situation.
  • the step of storing the flag bit (S970) may be performed after the step S940 where bit conversion is determined or may be performed after the step S750 where the bit conversion is performed, and any of the above processes may be performed. It may be performed in parallel with one.
  • FIG. 12 illustrates an operation flowchart of an embodiment of a method of reading the program code stored by FIG. 9.
  • the method of reducing power consumption of a flash memory may be implemented in the form of program instructions that may be executed by various computer means and may be recorded in a computer readable medium.
  • the computer readable medium may include program instructions, data files, data structures, etc. alone or in combination.
  • Program instructions recorded on the media may be those specially designed and constructed for the purposes of the present invention, or they may be of the kind well-known and available to those having skill in the computer software arts. Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tape, optical media such as CD-ROMs, DVDs, and magnetic disks, such as floppy disks.
  • Magneto-optical media and hardware devices specifically configured to store and execute program instructions, such as ROM, RAM, flash memory, and the like.
  • program instructions include not only machine code generated by a compiler, but also high-level language code that can be executed by a computer using an interpreter or the like.
  • the hardware device described above may be configured to operate as one or more software modules to perform the operations of the present invention, and vice versa.
  • a method of reducing power consumption of a flash memory may include: receiving a program code; Analyzing the received program code; Calculating a number of toggles of a bit value according to an instruction of the program code by analyzing the program code; Bit converting a bit value of the program code based on the calculated number of toggles; And storing the bit-converted program code in a flash memory, wherein the calculating step toggles when reading data stored in the flash memory by calculating the number of toggles based on an instruction execution order of the program code. It is possible to reduce the power consumption due to the pre-charge generated by the.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Read Only Memory (AREA)

Abstract

Disclosed is a method for reducing the power consumption of a flash memory, and a device for same. The method for reducing the power consumption of a flash memory, according to an embodiment of the present invention, comprises: a step for receiving a programme code; a step for analyzing the received programme code; a step for calculating the toggle number of a bit value according to a command of the programme code, resulting from the analysis of the programme code; a step for performing a bit conversion on the bit value of the programme code on the basis of the calculated toggle number; and a step for storing the bit converted programme code in a flash memory. Therein, in the calculation step, the toggle number is calculated on the basis of the command execution order of the programme code, and thus when the data stored in the flash memory is being read, the power consumption due to pre-charge generated by toggle can be reduced.

Description

플래시 메모리의 소모 전력 감소 방법 및 그 장치Method and apparatus for reducing power consumption of flash memory
본 발명은 플래시 메모리의 소모 전력 감소에 대한 것으로, 상세하게는 플래시 메모리에 저장된 데이터를 읽을 때 프리차지 회로와 연결된 라인, 예를 들어, 비트라인(bit line)에서의 토글 수가 최소화되도록 프로그램 코드의 명령어를 비트 변환하여 플래시 메모리에 저장함으로써, 플래시 메모리에 저장된 데이터를 읽을 때 프리차지(pre-charge)에 의해 소모되는 전력을 감소시킬 수 있는 플래시 메모리의 소모 전력 감소 방법 및 그 장치에 관한 것이다.The present invention relates to a reduction in power consumption of a flash memory, and more particularly, in order to minimize the number of toggles in a line connected to a precharge circuit, for example, a bit line, when reading data stored in the flash memory. The present invention relates to a method and apparatus for reducing power consumption of a flash memory capable of reducing power consumed by pre-charge when reading data stored in the flash memory by bit-converting and storing the instructions in the flash memory.
플래시 메모리는 비휘발성이고, 이것은 플래시 메모리가 칩의 정보를 유지하는 데 전력을 필요로 하지 않는 방식으로 반도체 상에 정보를 저장한다는 것을 의미한다. 플래시 메모리는 각각이 1비트 이상의 정보를 저장하는, "셀(cell)들"이라고 불리는 트랜지스터들의 어레이에 정보를 저장한다. 메모리 셀들은 FAMOS(Floating-Gate Avalanche-Injection Metal Oxide Semiconductor) 트랜지스터에 기초하고 FAMOS 트랜지스터는 본질적으로 게이트와 소스/드레인 단자들 사이에 부유하는(suspended or floating) 부가적인 전도체(conductor)를 갖는 CMOS(Complementary Metal Oxide Semiconductor) FET(Field Effect Transistor)이다. 현재의 플래시 메모리 장치들은 두 개의 기본적인 어레이 아키텍처로 이루어진다. NOR 플래시 및 NAND 플래시 로직의 유형을 가리키는 이름들이 저장 셀 어레이(storage cell array)에서 사용된다.Flash memory is nonvolatile, which means that flash memory stores information on a semiconductor in a manner that does not require power to maintain the information on the chip. Flash memory stores information in an array of transistors called "cells", each of which stores one or more bits of information. Memory cells are based on Floating-Gate Avalanche-Injection Metal Oxide Semiconductor (FAMOS) transistors, which inherently contain CMOS (additional conductors) suspended or floating between gate and source / drain terminals. Complementary Metal Oxide Semiconductor (FET). Current flash memory devices consist of two basic array architectures. Names indicating the type of NOR flash and NAND flash logic are used in the storage cell array.
플래시 셀은 단지 1개의 게이트 대신 2개의 게이트를 갖는다는 것을 제외하고는 표준 MOSFET 트랜지스터와 유사하다. 하나의 게이트는 다른 MOS 트랜지스터들에서의 제어 게이트(control gate, CG)와 같은 것이고, 다른 하나의 게이트는 산화층에 의해 주위가 모두 절연된 부유 게이트(floating gate, FG)이다. FG는 그의 산화층에 의해 절연되기 때문에, 그 위에 놓이는 임의의 전자는 거기에 트랩되고(trapped) 그리하여 정보를 저장한다.Flash cells are similar to standard MOSFET transistors except that they have two gates instead of just one gate. One gate is the same as a control gate (CG) in other MOS transistors, and the other is a floating gate (FG) insulated all around by an oxide layer. Since the FG is insulated by its oxide layer, any electrons placed on it are trapped there and thus store information.
전자들이 FG 상에 트랩될 때, 그들은 CG로부터의 전기장을 수정(부분적으로 상쇄)하며, 이것은 셀의 임계 전압(Vt)을 수정한다. 그리하여, CG를 특정한 전압으로 만듦으로써 셀이 "판독"될 때, 셀의 Vt에 따라 그 셀의 소스와 드레인 접속들 사이에서 전류가 흐르거나 흐르지 않을 것이다. 이러한 전류의 존재 또는 부재는 감지되어 '1' 또는 '0'으로 변환될 수 있으며, 이리하여 저장된 데이터가 재생된다.When electrons are trapped on the FG, they modify (partially cancel) the electric field from CG, which modifies the threshold voltage (Vt) of the cell. Thus, when a cell is " read " by making CG a specific voltage, current will or will not flow between the cell's source and drain connections depending on the cell's Vt. The presence or absence of such a current can be sensed and converted to '1' or '0', whereby the stored data is reproduced.
메모리 장치들의 메모리 셀들은 통상 행들 및 열들을 갖는 어레이로 배열된다. 일반적으로, 행들은 워드라인 전도체를 경유하여 연결되고 행들은 비트라인 전도체를 경유하여 연결된다. 데이터 판독 기능들 동안 비트라인 전도체들은 선택된 전압 레벨로 프리차지(pre-charge) 된다.Memory cells of memory devices are typically arranged in an array with rows and columns. In general, rows are connected via wordline conductors and rows are connected via bitline conductors. During the data read functions, the bitline conductors are precharged to the selected voltage level.
비트라인 전도체들에 프리차지를 수행하는 프리차지 회로는 포화 상태(saturation)에 이르기까지 많은 전류가 필요하기 때문에, 데이터를 읽을 때 해당 비트라인에서 '0'에서 '1'로 또는 '1'에서 '0'으로 교번하여 읽는 토글(toggle)이 자주 발생하게 되면 그 만큼 소모 전류가 증가하게 되고, 이에 따라 프리차지의 전류를 생성하기 위하여 전체적인 전력 소모가 커지는 문제점이 있다.Precharge circuitry that precharges the bitline conductors requires a large amount of current to saturation, so when reading data from '0' to '1' or '1' on that bitline If a toggle frequently reads '0' frequently occurs, the current consumption increases accordingly, thereby increasing the overall power consumption in order to generate a precharge current.
따라서, 플래시 메모리의 소모 전력을 줄일 수 있는 방법의 필요성이 대두된다. 플래시 메모리의 소모 전력을 줄이기 위하여 개발된 선행기술로서 한국등록특허 제10-0464951호 "플래시 메모리 소모 전력 감소 장치 및 방법"이 제안되었다. Therefore, there is a need for a method of reducing power consumption of a flash memory. As a prior art developed to reduce power consumption of a flash memory, Korean Patent No. 10-0464951 entitled "Flash Memory Power Consumption Reduction Device and Method" has been proposed.
상기 선행기술은 플래시 메모리에 저장된 데이터를 선택적으로 반전하여 전력 소모가 적은 방향으로 데이터를 저장하는 구성에 관한 것으로, 플래시 메모리의 셀이 0으로 지워지는 동작이 많을 경우 동작 전류가 증가하는 문제점을 해결하기 위한 것이다. 즉, 선행기술은 메모리 셀에 저장된 0의 값을 읽을 때의 동작 전류 증가를 방지하기 위한 것으로, 토글에 의해 증가할 수 있는 프리차지의 소모 전류에 대한 문제점은 전혀 기재하고 있지 않으며, 이런 토글에 의해 발생되는 프리차지 회로에 의한 소모 전류를 줄일 수 있는 방법의 필요성이 대두된다.The prior art relates to a configuration for storing data in a direction of low power consumption by selectively inverting data stored in a flash memory, and solves a problem in which an operating current increases when a cell of a flash memory is erased to zero. It is to. That is, the prior art is to prevent the increase of the operating current when reading the value of 0 stored in the memory cell, and does not describe any problem with the current consumption of the precharge which can be increased by the toggle. There is a need for a method of reducing current consumption by the precharge circuit generated by the method.
본 발명은 상기와 같은 종래 기술의 문제점을 해결하고자 도출된 것으로서, 플래시 메모리에 저장된 데이터를 읽을 때 토글에 의해 발생되는 프리차지(pre-charge)에 의한 소모 전력을 줄일 수 있는 플래시 메모리의 소모 전력 감소 방법 및 그 장치를 제공하는 것을 목적으로 한다.The present invention is derived to solve the problems of the prior art as described above, the power consumption of the flash memory can reduce the power consumption by the pre-charge generated by the toggle when reading the data stored in the flash memory It is an object of the present invention to provide a reduction method and an apparatus thereof.
구체적으로, 본 발명은 프로그램 코드의 명령어에 대한 수행 순서에 기초하여 토글 수를 계산하고, 토글 수가 최소화되도록 명령어 각각에 대한 비트 변환 여부를 결정하며, 결정된 명령어에 대한 데이터의 비트 변환을 수행한 후 비트 변환된 프로그램 코드를 플래시 메모리에 저장함으로써, 플래시 메모리에 저장된 프로그램 코드를 읽을 때 토글 수가 최소화되어 프리차지에 의한 소모 전력을 줄일 수 있다.Specifically, the present invention calculates the number of toggles based on the execution order of the instructions of the program code, determines whether to convert the bit for each instruction to minimize the number of toggles, and after performing the bit conversion of the data for the determined instruction By storing the bit-converted program code in the flash memory, the number of toggles is minimized when reading the program code stored in the flash memory, thereby reducing power consumption by precharge.
또한, 본 발명은 플래시 메모리를 읽을 때 프리차지에 의한 소모 전력을 감소시킴으로써, 플래시 메모리가 탑재된 기기의 전체 소모 전력을 줄일 수 있는 플래시 메모리의 소모 전력 감소 방법 및 그 장치를 제공하는 것을 목적으로 한다.In addition, an object of the present invention is to provide a method and apparatus for reducing power consumption of a flash memory that can reduce the total power consumption of a device equipped with a flash memory by reducing the power consumption by precharging when reading the flash memory. do.
상기와 같은 목적을 달성하기 위하여, 본 발명의 일 실시 예에 따른 플래시 메모리의 소모 전력 감소 방법은 프로그램 코드를 수신하는 단계; 상기 수신된 상기 프로그램 코드를 분석하는 단계; 상기 프로그램 코드의 분석을 통해 상기 프로그램 코드의 명령어에 따른 비트 값의 토글(toggle) 수를 계산하는 단계; 상기 계산된 상기 토글 수에 기초하여 상기 프로그램 코드의 비트 값을 비트 변환하는 단계; 및 상기 비트 변환된 상기 프로그램 코드를 플래시 메모리에 저장하는 단계를 포함한다.In order to achieve the above object, a method of reducing power consumption of a flash memory according to an embodiment of the present invention comprises the steps of receiving a program code; Analyzing the received program code; Calculating a number of toggles of a bit value according to an instruction of the program code by analyzing the program code; Bit converting a bit value of the program code based on the calculated number of toggles; And storing the bit-converted program code in a flash memory.
상기 계산하는 단계는 상기 프로그램 코드의 명령어 수행 순서에 기초하여 상기 토글 수를 계산할 수 있다.The calculating may include calculating the number of toggles based on a command execution order of the program code.
상기 계산하는 단계는 상기 프로그램 코드의 분석을 통해 상기 프로그램 코드에 대한 액세스 패턴(access pattern)을 생성하는 단계; 상기 생성된 상기 액세스 패턴을 이용하여 상기 프로그램 코드의 액세스 흐름을 획득하는 단계; 및 상기 획득된 상기 프로그램 코드의 액세스 흐름에 기초하여 상기 토글 수를 계산하는 단계를 포함할 수 있다.The calculating may include generating an access pattern for the program code by analyzing the program code; Obtaining an access flow of the program code using the generated access pattern; And calculating the number of toggles based on the obtained access flow of the program code.
상기 비트 변환하는 단계는 상기 프로그램 코드의 명령어 수행 순서에 따른 토글 수가 최소가 되도록 명령어 각각의 데이터 영역에 대한 비트 변환 여부를 결정하는 단계; 및 상기 비트 변환이 결정된 명령어의 데이터 영역에 대해 비트 변환을 수행하는 단계를 포함할 수 있다.The converting of the bits may include determining whether to convert bits in each data area of the command so that the number of toggles according to the instruction execution order of the program code is minimized; And performing bit conversion on the data area of the command in which the bit conversion is determined.
상기 저장하는 단계는 상기 비트 변환이 수행된 데이터 영역에 대한 플래그 비트를 저장할 수 있다.The storing may store a flag bit for a data area in which the bit conversion is performed.
나아가, 본 발명에 따른 방법은 상기 비트 변환되어 상기 플래시 메모리에 저장된 상기 프로그램 코드를 비트 변환하여 읽는 단계를 더 포함할 수 있다.Furthermore, the method may further include bit converting and reading the program code bit-converted and stored in the flash memory.
상기 읽는 단계는 상기 플래시 메모리에 저장된 상기 프로그램 코드 중 상기 비트 변환이 수행된 데이터 영역에 대해 미리 저장된 플래그 비트를 이용하여, 상기 플래시 메모리에 저장된 상기 프로그램 코드를 비트 변환하여 읽을 수 있다.The reading may be performed by bit-converting the program code stored in the flash memory using a flag bit stored in advance for a data area in which the bit conversion is performed among the program codes stored in the flash memory.
본 발명의 일 실시 예에 따른 플래시 메모리의 소모 전력 감소 장치는 프로그램 코드를 수신하는 수신부; 상기 수신된 상기 프로그램 코드를 분석하는 분석부; 상기 프로그램 코드의 분석을 통해 상기 프로그램 코드의 명령어에 따른 비트 값의 토글(toggle) 수를 계산하는 연산부; 상기 계산된 상기 토글 수에 기초하여 상기 프로그램 코드의 비트 값을 비트 변환하는 비트 변환부; 및 상기 비트 변환된 상기 프로그램 코드를 플래시 메모리에 저장하는 저장부를 포함한다.An apparatus for reducing power consumption of a flash memory according to an embodiment of the present invention may include a receiver configured to receive a program code; An analysis unit for analyzing the received program code; An operation unit configured to calculate a toggle number of bit values according to an instruction of the program code by analyzing the program code; A bit converter configured to bit convert a bit value of the program code based on the calculated number of toggles; And a storage unit which stores the bit-converted program code in a flash memory.
상기 연산부는 상기 프로그램 코드의 명령어 수행 순서에 기초하여 상기 토글 수를 계산할 수 있다.The calculator may calculate the number of toggles based on an instruction execution order of the program code.
상기 비트 변환부는 상기 프로그램 코드의 명령어 수행 순서에 따른 토글 수가 최소가 되도록 명령어 각각의 데이터 영역에 대한 비트 변환 여부를 결정하는 결정부; 및 상기 비트 변환이 결정된 명령어의 데이터 영역에 대해 비트 변환을 수행하는 비트 변환 수행부를 포함할 수 있다.The bit converter may determine whether or not to convert the bit in the data area of each instruction so that the number of toggles in accordance with the instruction execution order of the program code is the minimum; And a bit conversion performing unit performing bit conversion on the data area of the command in which the bit conversion is determined.
본 발명에 따르면, 프로그램 코드의 명령어에 대한 수행 순서에 기초하여 토글 수를 계산하고, 토글 수가 최소화되도록 명령어 각각에 대한 비트 변환을 수행하여 플래시 메모리에 저장함으로써, 플래시 메모리에 저장된 프로그램 코드를 읽을 때 토글 수가 최소화되어 프리차지에 의한 소모 전력을 줄일 수 있다.According to the present invention, when reading the program code stored in the flash memory by calculating the number of toggles based on the execution order of the instructions of the program code, and performing bit conversion for each of the instructions so as to minimize the number of toggles to store in the flash memory The number of toggles can be minimized to reduce power consumption by precharge.
또한, 본 발명은 플래시 메모리를 읽을 때 토글에 따른 프리차지 회로의 소모 전력을 감소시킬 수 있기 때문에 플래시 메모리가 탑재된 기기의 전체 소모 전력을 줄일 수 있다. In addition, the present invention can reduce the power consumption of the precharge circuit according to the toggle when reading the flash memory can reduce the overall power consumption of the device equipped with the flash memory.
도 1은 본 발명의 일 실시예에 따른 플래시 메모리의 소모 전력 감소 장치에 대한 구성을 나타낸 것이다.1 illustrates a configuration of an apparatus for reducing power consumption of a flash memory according to an embodiment of the present invention.
도 2는 도 1에 도시된 연산부에 대한 일 실시예 구성을 나타낸 것이다.FIG. 2 is a diagram illustrating an embodiment of an operation unit shown in FIG. 1.
도 3은 도 1에 도시된 연산부에 대한 다른 일 실시예 구성을 나타낸 것이다.FIG. 3 is a diagram illustrating another exemplary configuration of the calculator illustrated in FIG. 1.
도 4는 도 1에 도시된 제1 변환부에 대한 일 실시예 구성을 나타낸 것이다.FIG. 4 illustrates a configuration of an embodiment of the first converter illustrated in FIG. 1.
도 5는 프로그램 코드의 분석에 따른 액세스 패턴을 생성하는 일 예시도를 나타낸 것이다.5 illustrates an example of generating an access pattern according to analysis of program code.
도 6은 도 5에 도시된 액세스 패턴에 대한 데이터 액세스 그래프(DAG)를 나타낸 것이다.FIG. 6 shows a data access graph (DAG) for the access pattern shown in FIG. 5.
도 7은 액세스 흐름에 따라 프로그램 코드의 토글 수를 계산하는 과정에 대한 일 예시도를 나타낸 것이다.7 illustrates an example of a process of calculating a toggle number of program codes according to an access flow.
도 8은 프로그램 코드의 명령어 수행 순서에 따라 비트 변환 데이터 영역을 결정하고 변환하는 동작을 설명하기 위한 일 예시도이다.FIG. 8 is an exemplary diagram for describing an operation of determining and converting a bit converted data region according to an instruction execution order of a program code.
도 9는 본 발명의 일 실시예에 따른 플래시 메모리의 소모 전력 감소 방법에 대한 동작 흐름도를 나타낸 것이다.9 is a flowchart illustrating a method of reducing power consumption of a flash memory according to an embodiment of the present invention.
도 10은 도 9에 도시된 단계 S930에 대한 일 실시예 동작 흐름도를 나타낸 것이다.FIG. 10 illustrates a flowchart of an operation of step S930 illustrated in FIG. 9.
도 11은 도 9에 도시된 단계 S930에 대한 다른 일 실시예 동작 흐름도를 나타낸 것이다.FIG. 11 is a flowchart illustrating another operation of step S930 illustrated in FIG. 9.
도 12는 도 9에 의해 저장된 프로그램 코드를 읽는 방법에 대한 일 실시예의 동작 흐름도를 나타낸 것이다.FIG. 12 illustrates an operation flowchart of an embodiment of a method of reading the program code stored by FIG. 9.
상기와 같은 목적을 달성하기 위하여, 본 발명의 일 실시 예에 따른 플래시 메모리의 소모 전력 감소 방법은 프로그램 코드를 수신하는 단계; 상기 수신된 상기 프로그램 코드를 분석하는 단계; 상기 프로그램 코드의 분석을 통해 상기 프로그램 코드의 명령어에 따른 비트 값의 토글(toggle) 수를 계산하는 단계; 상기 계산된 상기 토글 수에 기초하여 상기 프로그램 코드의 비트 값을 비트 변환하는 단계; 및 상기 비트 변환된 상기 프로그램 코드를 플래시 메모리에 저장하는 단계를 포함한다.In order to achieve the above object, a method of reducing power consumption of a flash memory according to an embodiment of the present invention comprises the steps of receiving a program code; Analyzing the received program code; Calculating a number of toggles of a bit value according to an instruction of the program code by analyzing the program code; Bit converting a bit value of the program code based on the calculated number of toggles; And storing the bit-converted program code in a flash memory.
상기 계산하는 단계는 상기 프로그램 코드의 명령어 수행 순서에 기초하여 상기 토글 수를 계산할 수 있다.The calculating may include calculating the number of toggles based on a command execution order of the program code.
상기 계산하는 단계는 상기 프로그램 코드의 분석을 통해 상기 프로그램 코드에 대한 액세스 패턴(access pattern)을 생성하는 단계; 상기 생성된 상기 액세스 패턴을 이용하여 상기 프로그램 코드의 액세스 흐름을 획득하는 단계; 및 상기 획득된 상기 프로그램 코드의 액세스 흐름에 기초하여 상기 토글 수를 계산하는 단계를 포함할 수 있다.The calculating may include generating an access pattern for the program code by analyzing the program code; Obtaining an access flow of the program code using the generated access pattern; And calculating the number of toggles based on the obtained access flow of the program code.
상기 비트 변환하는 단계는 상기 프로그램 코드의 명령어 수행 순서에 따른 토글 수가 최소가 되도록 명령어 각각의 데이터 영역에 대한 비트 변환 여부를 결정하는 단계; 및 상기 비트 변환이 결정된 명령어의 데이터 영역에 대해 비트 변환을 수행하는 단계를 포함할 수 있다.The converting of the bits may include determining whether to convert bits in each data area of the command so that the number of toggles according to the instruction execution order of the program code is minimized; And performing bit conversion on the data area of the command in which the bit conversion is determined.
상기 저장하는 단계는 상기 비트 변환이 수행된 데이터 영역에 대한 플래그 비트를 저장할 수 있다.The storing may store a flag bit for a data area in which the bit conversion is performed.
나아가, 본 발명에 따른 방법은 상기 비트 변환되어 상기 플래시 메모리에 저장된 상기 프로그램 코드를 비트 변환하여 읽는 단계를 더 포함할 수 있다.Furthermore, the method may further include bit converting and reading the program code bit-converted and stored in the flash memory.
상기 읽는 단계는 상기 플래시 메모리에 저장된 상기 프로그램 코드 중 상기 비트 변환이 수행된 데이터 영역에 대해 미리 저장된 플래그 비트를 이용하여, 상기 플래시 메모리에 저장된 상기 프로그램 코드를 비트 변환하여 읽을 수 있다.The reading may be performed by bit-converting the program code stored in the flash memory using a flag bit stored in advance for a data area in which the bit conversion is performed among the program codes stored in the flash memory.
본 발명의 일 실시 예에 따른 플래시 메모리의 소모 전력 감소 장치는 프로그램 코드를 수신하는 수신부; 상기 수신된 상기 프로그램 코드를 분석하는 분석부; 상기 프로그램 코드의 분석을 통해 상기 프로그램 코드의 명령어에 따른 비트 값의 토글(toggle) 수를 계산하는 연산부; 상기 계산된 상기 토글 수에 기초하여 상기 프로그램 코드의 비트 값을 비트 변환하는 비트 변환부; 및 상기 비트 변환된 상기 프로그램 코드를 플래시 메모리에 저장하는 저장부를 포함한다.An apparatus for reducing power consumption of a flash memory according to an embodiment of the present invention may include a receiver configured to receive a program code; An analysis unit for analyzing the received program code; An operation unit configured to calculate a toggle number of bit values according to an instruction of the program code by analyzing the program code; A bit converter configured to bit convert a bit value of the program code based on the calculated number of toggles; And a storage unit which stores the bit-converted program code in a flash memory.
상기 연산부는 상기 프로그램 코드의 명령어 수행 순서에 기초하여 상기 토글 수를 계산할 수 있다.The calculator may calculate the number of toggles based on an instruction execution order of the program code.
상기 비트 변환부는 상기 프로그램 코드의 명령어 수행 순서에 따른 토글 수가 최소가 되도록 명령어 각각의 데이터 영역에 대한 비트 변환 여부를 결정하는 결정부; 및 상기 비트 변환이 결정된 명령어의 데이터 영역에 대해 비트 변환을 수행하는 비트 변환 수행부를 포함할 수 있다.The bit converter may determine whether or not to convert the bit in the data area of each instruction so that the number of toggles in accordance with the instruction execution order of the program code is the minimum; And a bit conversion performing unit performing bit conversion on the data area of the command in which the bit conversion is determined.
상기 목적 외에 본 발명의 다른 목적 및 특징들은 첨부 도면을 참조한 실시 예에 대한 설명을 통하여 명백히 드러나게 될 것이다.Other objects and features of the present invention in addition to the above object will be apparent from the description of the embodiments with reference to the accompanying drawings.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terminology used herein is for the purpose of describing particular example embodiments only and is not intended to be limiting of the present invention. Singular expressions include plural expressions unless the context clearly indicates otherwise. In this application, the term "comprises" and the like is intended to indicate that there is a feature, number, step, operation, component, part, or combination thereof described in the specification, but one or more other features, numbers, steps It is to be understood that the present invention does not exclude in advance the possibility of the presence or the addition of operations, components, components, or a combination thereof.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art. Terms such as those defined in the commonly used dictionaries should be construed as having meanings consistent with the meanings in the context of the related art, and shall not be construed in ideal or excessively formal meanings unless expressly defined in this application. Do not.
본 발명의 바람직한 실시예를 첨부된 도면들을 참조하여 상세히 설명한다. 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.Preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings. In describing the present invention, when it is determined that the detailed description of the related well-known configuration or function may obscure the gist of the present invention, the detailed description thereof will be omitted.
그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.However, the present invention is not limited or limited by the embodiments. Like reference numerals in the drawings denote like elements.
이하에서는, 본 발명의 일 실시 예에 따른 플래시 메모리의 소모 전력 감소 방법 및 그 장치를 첨부된 도 1 내지 도 12를 참조하여 상세히 설명한다.Hereinafter, a method and apparatus for reducing power consumption of a flash memory according to an embodiment of the present invention will be described in detail with reference to FIGS. 1 to 12.
도 1은 본 발명의 일 실시예에 따른 플래시 메모리의 소모 전력 감소 장치에 대한 구성을 나타낸 것이다.1 illustrates a configuration of an apparatus for reducing power consumption of a flash memory according to an embodiment of the present invention.
도 1을 참조하면, 본 발명에 따른 장치는 수신부(110), 분석부(120), 연산부(130), 제1 변환부(140), 저장부(150), 플래시 메모리(160), 제2 변환부(170) 및 읽기부(180)를 포함한다.Referring to FIG. 1, the apparatus according to the present invention includes a receiver 110, an analyzer 120, a calculator 130, a first converter 140, a storage 150, a flash memory 160, and a second. The converter 170 and the reader 180 are included.
수신부(110)는 외부로부터 프로그램 코드를 수신한다.The receiver 110 receives a program code from the outside.
이 때, 수신부(110)는 프로그램 코드를 프로그램 코드를 생성할 수 있는 기기 또는 프로그램, 나아가 프로그램 코드를 저장하고 있는 외부 저장 수단을 통해 수신할 수 있다.In this case, the receiving unit 110 may receive the program code through an apparatus or a program capable of generating the program code, and also through an external storage means storing the program code.
분석부(120)는 수신부(110)로 수신된 프로그램 코드를 분석한다.The analyzer 120 analyzes the program code received by the receiver 110.
여기서, 분석부(120)는 프로그램 코드를 분석하여 프로그램 코드에 포함된 명령어들의 수행 순서에 대한 정보를 획득할 수도 있다.Here, the analysis unit 120 may analyze the program code to obtain information about the execution order of the instructions included in the program code.
연산부(130)는 분석부의 프로그램 코드 분석 결과에 기초하여 프로그램 코드의 명령어에 따른 비트 값의 토글(toggle)수를 계산한다.The calculation unit 130 calculates a toggle number of bit values according to the instruction of the program code, based on the analysis result of the program code of the analysis unit.
즉, 연산부(130)는 프로그램 코드의 명령어들이 플래시 메모리(160)에 저장된다는 가정하에서, 비트 값이 '1'에서 '0'으로 또는 '0'에서 '1'로 변하는 토글 수를 계산한다.That is, the calculation unit 130 calculates the number of toggles in which the bit value changes from '1' to '0' or '0' to '1' under the assumption that the instructions of the program code are stored in the flash memory 160.
이 때, 연산부(130)는 1) 플래시 메모리(160)에 순차적으로 저장되는 명령어들에 대한 주소 순서대로 토글 수를 계산할 수도 있고, 2) 프로그램 코드의 명령어들의 수행 순서에 기초하여 명령어들간의 토글 수를 계산할 수도 있으며, 3) 프로그램 코드의 분석을 통해 획득된 액세스 패턴에 기초하여 프로그램 코드의 토글 수를 계산할 수도 있다. At this time, the operation unit 130 may 1) calculate the number of toggles in the order of addresses for instructions sequentially stored in the flash memory 160, and 2) toggle between instructions based on the execution order of the instructions of the program code. The number may be calculated, and 3) the number of toggles of the program code may be calculated based on an access pattern obtained through analysis of the program code.
일 예로, 연산부(130)는 1)의 경우 플래시 메모리(160)에 순차적으로 저장될 명령어들에 대해 순차적으로 토글 수를 계산한다. 예컨대, 첫 번째 명령어와 두 번째 명령어 간의 토글 수, 두 번째 명령어와 세 번째 명령어 간의 토글 수, 세번 째 명령어와 네 번째 명령어 간의 토글 수와 같이 순차적으로 토글 수를 계산할 수 있다.For example, in the case of 1), the calculator 130 sequentially calculates the number of toggles for the instructions to be sequentially stored in the flash memory 160. For example, the number of toggles may be sequentially calculated, such as the number of toggles between the first and second instructions, the number of toggles between the second and third instructions, and the number of toggles between the third and fourth instructions.
다른 일 예로, 연산부(130)는 2)의 경우 프로그램 코드의 분석 결과에 따라 명령어들의 수행 순서를 알 수 있고, 명령어들의 수행 순서에 따라 플래시 메모리(160)에 저장되는 명령어들이 읽혀지는 순서에 따른 토글 수를 계산할 수 있는데, 이 때 연산부(130)는 도 2에 도시된 바와 같이, 수행 순서 획득부(210) 및 토글 수 연산부(220)를 포함한다.As another example, in case of 2), the operation unit 130 may know the execution order of the instructions according to the analysis result of the program code, and according to the order in which the instructions stored in the flash memory 160 are read according to the execution order of the instructions. The number of toggles may be calculated. At this time, the calculator 130 includes a performance order obtainer 210 and a toggle number calculator 220 as shown in FIG. 2.
수행 순서 획득부(210)는 프로그램 코드 분석을 통해 프로그램 코드의 명령어들에 대한 수행 순서를 획득한다.The execution order acquisition unit 210 obtains an execution order for instructions of the program code through program code analysis.
여기서, 명령어 수행 순서는 명령어들 간의 연결 관계에 대한 것으로, 특정 주소로의 이동, 반복 등에 의한 수행 순서를 의미할 수 있다. 이를 테면, 수행 순서 획득부(210)는 루프(loop)를 형성하는 프로그램 코드를 식별하여, 루프의 시작 코드와 마지막 코드를 파악할 수 있다. 루프를 탈출할 조건이 충족되지 않는 경우에는 루프의 마지막 코드 다음에는 다시 루프의 시작 코드가 수행될 가능성이 높으므로, 수행 순서 획득부(210)는 이 점을 고려하여 수행 순서를 획득할 수 있다. 루프를 탈출할 조건이 충족되는 경우를 고려하면 수행 순서 획득부(210)는 가중치를 부여하거나 확률을 고려하여 루프의 마지막 코드 다음에 다시 루프의 상위의 코드가 수행되도록 계획된 수행 순서를 획득할 수도 있다.Here, the command execution order refers to a connection relationship between the commands, and may mean an execution order by moving to a specific address, repetition, and the like. For example, the execution order acquisition unit 210 may identify the program code forming the loop, and determine the start code and the last code of the loop. If the condition to escape the loop is not satisfied, since the start code of the loop is likely to be executed again after the last code of the loop, the execution order acquisition unit 210 may obtain the execution order in consideration of this point. . Considering the case where the condition to escape the loop is satisfied, the execution order obtaining unit 210 may obtain the execution order in which the higher code of the loop is performed again after the last code of the loop in consideration of a weight or a probability. have.
또한 수행 순서는 조건 분기(branch), 또는 무조건 분기(jump, goto 등)를 고려한 형태로 얻어질 수도 있다. In addition, the execution order may be obtained in the form of a conditional branch or an unconditional branch (jump, goto, etc.).
토글 수 연산부(220)는 획득된 프로그램 코드의 명령어들에 대한 수행 순서에 기초하여 프로그램 코드의 토글 수를 계산한다.The toggle number calculator 220 calculates a toggle number of the program code based on the execution order of the acquired instructions of the program code.
또 다른 일 예로, 연산부는(130)는 3)의 경우 프로그램 코드의 분석을 통해 변수 또는 피연산자(operand) 간의 액세스 패턴(access pattern)을 생성하고, 생성된 액세스 패턴을 이용하여 프로그램 코드의 액세스 흐름(access flow)을 획득하며, 획득된 프로그램 코드의 액세스 흐름에 기초하여 프로그램 코드의 토글 수를 계산할 수도 있는데, 이 때 연산부(130)는 도 3에 도시된 바와 같이 패턴 생성부(310), 흐름 획득부(320) 및 토글 수 연산부(330)를 포함한다.As another example, in case of 3), the operation unit 130 generates an access pattern between variables or operands through analysis of the program code, and access flow of the program code using the generated access pattern. (access flow) and may calculate the number of toggles of the program code based on the acquired access flow of the program code, wherein the operation unit 130 as shown in Figure 3, the pattern generator 310, the flow It includes an acquirer 320 and a toggle number calculator 330.
패턴 생성부(310)는 프로그램 코드 분석을 통해 프로그램 코드에 대한 액세스 패턴(access pattern)을 생성한다.The pattern generator 310 generates an access pattern for the program code through program code analysis.
예컨대, 도 5에 도시된 일 예와 같이, 패턴 생성부(310)는 수신된 프로그램 코드(510)의 분석을 통해 "bdabcbbdeba"의 액세스 패턴(520)을 생성한다.For example, as shown in FIG. 5, the pattern generator 310 generates an access pattern 520 of “bdabcbbdeba” through analysis of the received program code 510.
흐름 획득부(320)는 패턴 생성부(310)에 의해 생성된 액세스 패턴(520)을 이용하여 프로그램 코드의 액세스 흐름을 획득한다. 여기서, 프로그램 코드의 액세스 흐름은 변수 a, b, c, d, e에 대한 흐름일 수도 있고, 프로그램 코드에 포함된 명령어들 간의 흐름일 수도 있다.The flow obtainer 320 acquires an access flow of program code using the access pattern 520 generated by the pattern generator 310. Here, the access flow of the program code may be a flow for variables a, b, c, d, and e, or may be a flow between instructions included in the program code.
필요에 따라, 흐름 획득부(320)는 패턴 생성부(310)에 의해 생성된 액세스 패턴에 기초하여 도 6에 도시된 일 예와 같이 데이터 액세스 그래프(DAG)를 생성하고, 생성된 데이터 액세스 그래프를 이용하여 프로그램 코드의 액세스 흐름을 획득할 수도 있다.If necessary, the flow acquirer 320 generates a data access graph DAG as shown in FIG. 6 based on the access pattern generated by the pattern generator 310, and generates the generated data access graph. May be used to obtain an access flow of program code.
여기서, 데이터 액세스 그래프는 변수들(610) 간의 연결 관계(620)와 연결 횟수(630) 등을 포함할 수 있으며, 데이터 액세스 그래프를 통해 변수들 각각에 대해 연결되는 다른 변수 개수 등을 알 수 있다.Here, the data access graph may include a connection relationship 620 between the variables 610 and the number of times of connection 630, and the number of other variables connected to each of the variables through the data access graph. .
예컨대, 변수 b의 경우 다른 변수들 a, c, d, e 모두와 연결 관계를 가지고, 그 중에서 변수 a, c, d와 연결되는 횟수가 2회씩인 것을 알 수 있으며, 따라서 프로그램 코드의 변수들 중 변수 b가 프로그램 코드의 전체 토글 수에 가장 큰 영향을 미치는 것을 알 수 있다. 데이터 액세스 그래프 상에서 각 변수들(610) 간의 액세스되는 횟수가 증가함에 따라 각 변수들(610) 간의 관계가 강화되는 것을 파악할 수 있다. 예를 들어, 도 6에서 변수 b는 변수 a, d, c와는 2번 연관되고, 변수 e와는 1번 연관되는 등 각 변수 간의 상대적인 액세스 횟수(연관 횟수)가 서로 다름을 알 수 있다.For example, in the case of variable b, it can be seen that there is a connection relationship with all other variables a, c, d, and e, and that the number of times that the variable a, c, and d are connected is twice, and thus the variables of program code We can see that variable b has the greatest effect on the total number of toggles in the program code. As the number of accesses between the variables 610 on the data access graph increases, the relationship between the variables 610 may be strengthened. For example, in FIG. 6, the variable b is associated with the variables a, d, and c twice, and the variable e is associated with the variable e.
흐름 획득부(320)는 도 7에 도시된 것과 같은 프로그램 코드로부터 연산(operation)의 종류와 피연산자(operand)를 식별할 수 있다. 도 7의 프로그램 코드의 각 행에서 추출된 피연산자, 즉, 변수 간의 관련성은 도 6에서 도시된 것과 같은 데이터 액세스 그래프를 이용하여 평가될 수 있다. 예를 들면, 데이터 액세스 그래프 상에서 특정 변수들 간에 특별히 높은 연관성을 가지는 것으로 나타난 경우, 흐름 획득부(320)는 프로그램 코드 상에서 상기 특정 변수들 중 어느 한 쪽이 발견되면, 상기 특정 변수들 중 나머지 한 쪽이 포함된 프로그램 코드가 그 다음에 실행될 것으로 예측하고 프로그램 코드의 실행 순서를 결정할 수 있다.The flow acquirer 320 may identify an operation type and an operand from a program code as shown in FIG. 7. The operands extracted from each row of the program code of FIG. 7, that is, the association between variables, can be evaluated using a data access graph as shown in FIG. 6. For example, if it is shown that there is a particularly high association between specific variables on the data access graph, the flow acquisition unit 320, if any one of the specific variables is found in the program code, the other one of the specific variables The program code containing the page can then be predicted to be executed next and the execution order of the program code can be determined.
예를 들어, 전체 프로그램 코드를 분석한 결과, 변수 b와 변수 d가 특별히 높은 상호 연관성을 보인다고 가정한다. DAG에서는 선행 변수와 후행 변수도 파악할 수 있는데, 변수 b 이후에는 높은 확률로 변수 d가 액세스되는 현상이 나타났다고 가정하기로 한다. 프로그램 코드에서 변수 b가 포함된 코드 다음에는 변수 d가 포함된 코드가 실행될 가능성이 높은 것으로 예측할 수 있다.For example, after analyzing the entire program code, assume that variable b and variable d show a particularly high correlation. The DAG can also identify the leading and trailing variables, and assumes that variable b is accessed with high probability after variable b. In the program code, the code including the variable b can be predicted to be more likely to be executed.
토글 수 연산부(330)는 흐름 획득부(320)에 의해 획득된 프로그램 코드의 액세스 흐름에 기초하여 프로그램 코드가 플래시 메모리(260)에 비트 변환 없이 저장될 때의 토글 수를 계산한다.The toggle number calculator 330 calculates the number of toggles when the program code is stored in the flash memory 260 without bit conversion based on the access flow of the program code acquired by the flow acquirer 320.
예컨대, 토글 수 연산부(330)는 도 7에 도시된 바와 같이, 도 5 또는 도 6에 도시된 프로그램 코드의 액세스 패턴 또는 데이터 액세스 그래프에 기초한 액세스 흐름을 이용하여 플래시 메모리에 저장될 프로그램 코드에 대해 ① 영역의 데이터에 대한 토글 수, ① 영역의 마지막 주소 데이터와 ② 영역의 첫 번째 주소 데이터 간의 토글 수, ② 영역의 토글 수, ② 영역의 마지막 주소 데이터와 ③ 영역의 첫 번째 주소 데이터 간의 토글 수, 및 ③ 영역의 데이터에 대한 토글 수를 계산함으로써, 플래시 메모리(260)에 비트 변환없이 저장될 때의 토글 수를 계산한다.For example, as shown in FIG. 7, the toggle number calculator 330 may use the access flow based on the data access graph or the access pattern of the program code shown in FIG. 5 or 6 to program code to be stored in the flash memory. ① Number of toggles for data in the area, ① Number of toggles between the last address data in the area and ② First address data in the area, ② Number of toggles in the area, ② Number of toggles between the last address data in the area and ③ First address data in the area By calculating the number of toggles for the data in the area and, the number of toggles when stored in the flash memory 260 without bit conversion is calculated.
도 2의 실시예와 도 3의 실시예에서는 서로 다른 문제 해결 방법을 통하여 프로그램 코드의 실행 순서를 획득하는데, 이들 방법은 유사한 결론을 얻을 가능성이 높다. 예를 들어, 여러 번 반복되는 루프(loop)와 같은 경우, 실행이 수차례 반복되는 만큼, 루프 내에서의 연산에 대해서는 DAG 상의 연관 관계가 강화될 가능성이 높다. 또한 무조건 분기와 같은 경우에도 서로 멀리 떨어진 프로그램 코드가 빈번하게 실행되는 만큼 해당 프로그램 코드의 변수들 간에 DAG 상의 연관 관계가 강화될 가능성이 높다고 볼 수 있다.In the embodiment of FIG. 2 and the embodiment of FIG. 3, the execution order of the program codes is obtained through different problem solving methods, which are likely to obtain similar conclusions. For example, in a loop that is repeated many times, as the execution is repeated many times, there is a high possibility that the association on the DAG is enhanced for the operations in the loop. In addition, in case of unconditional branching, as the program codes distant from each other are frequently executed, it is highly likely that the relationship between the variables of the corresponding program codes will be strengthened on the DAG.
제1 변환부(140)는 연산부(130)에 의해 프로그램 코드의 토글 수가 계산되면, 연산부(130)에 의해 계산된 토글 수에 기초하여 프로그램 코드의 비트 값을 비트 변환한다.When the number of toggles of the program code is calculated by the calculator 130, the first converter 140 bit-converts the bit value of the program code based on the number of toggles calculated by the calculator 130.
이 때, 제1 변환부(140)는 프로그램 코드에 포함된 명령어들 각각에 대한 비트 변환 여부를 결정한 후 비트 변환이 결정된 명령어의 데이터 영역에 대한 비트 변환을 수행할 수 있다.In this case, the first converter 140 may determine whether or not to convert a bit for each of the instructions included in the program code, and then perform bit conversion on the data area of the command in which the bit conversion is determined.
즉, 도 4에 도시된 바와 같이, 제1 변환부(140)는 결정부(410)와 변환 수행부(420)를 포함한다.That is, as shown in FIG. 4, the first transform unit 140 includes a determiner 410 and a transform performer 420.
결정부(410)는 프로그램 코드에 대한 토글 수가 최소가 되도록 명령어 각각의 데이터 영역에 대한 비트 변환 여부를 결정한다.The determination unit 410 determines whether or not to convert the bit in the data area of each instruction so that the number of toggles for the program code is minimum.
이 때, 결정부(410)는 프로그램 코드의 명령어 수행 순서에 따른 토글 수가 최소가 되도록 비트 변환 여부를 결정할 수도 있고, 프로그램 코드의 액세스 패턴에 기초하여 프로그램 코드의 토글 수가 최소가 되도록 명령어에 대한 비트 변환 여부를 결정할 수도 있다.At this time, the determination unit 410 may determine whether or not to convert the bit so that the number of toggles according to the instruction execution order of the program code is the minimum, the bit for the instruction so that the number of toggles of the program code to the minimum based on the access pattern of the program code You can also decide whether to convert.
예를 들어, 도 8에 도시된 바와 같이, 플래시 메모리(160)에 저장될 프로그램 코드의 명령어들이 플래시 메모리(160)의 주소1 (address 1)에서 주소5 (address 5)까지 저장되고, 명령어 수행 순서에 따라 두 번째 명령어와 네 번째 명령어에 의한 토글 수가 가장 많이 발생한다 가정하면, 결정부(410)는 프로그램 코드의 토글 수가 최소가 되도록 명령어들 중 두 번째 명령어와 네 번째 명령어 데이터에 대한 비트 변환(bit inversion)을 결정한다. 즉, 결정부(410)는 두 번째 명령어와 네 번째 명령어 데이터를 비트 변환을 결정함으로써, 프로그램 코드의 토글 수를 최소화할 수 있다.For example, as illustrated in FIG. 8, instructions of a program code to be stored in the flash memory 160 are stored from address 1 to address 5 of the flash memory 160, and the instruction is executed. Assuming that the largest number of toggles by the second and fourth instructions occurs in sequence, the determining unit 410 converts the bits of the second and fourth instruction data among the instructions so that the number of toggles of the program code is minimum. (bit inversion) That is, the determination unit 410 may minimize the number of toggles of the program code by determining bit conversion of the second command and the fourth command data.
여기서, 명령어들이 저장되는 플래시 메모리의 주소에 대해, address 1 내지 address 5로 도시되었지만, 이는 설명의 편의를 위하여 기재한 것으로 실제 플래시 메모리의 주소는 다를 수 있다는 것을 인지하여야 한다.Here, for the address of the flash memory where the instructions are stored, although shown as address 1 to address 5, this is for convenience of description and it should be appreciated that the address of the actual flash memory may be different.
변환 수행부(420)는 결정부(410)에 의해 결정된 명령어의 데이터 영역에 대해 비트 변환을 수행한다.The conversion performer 420 performs bit conversion on the data area of the instruction determined by the determiner 410.
즉, 변환 수행부(420)는 도 8에 도시된 일 예와 같이, 결정부(410)에 의해 결정된 두 번째 명령어와 네 번째 명령어의 데이터 영역에 대한 비트 변환을 수행하여 두 번째 명령어의 비트 변환된 데이터(810)와 네 번째 명령어의 비트 변환된 데이터(820)를 획득한다.That is, the conversion performing unit 420 performs bit conversion on the data area of the second command and the fourth command determined by the determination unit 410 as shown in the example shown in FIG. 8, thereby converting the bit of the second command. The data 810 and the bit-converted data 820 of the fourth instruction.
이와 같이, 제1 변환부(140)는 비트 변환이 결정된 명령어의 데이터를 비트 변환함으로써, 프로그램 코드의 전체 토글 수를 최소화시킬 수 있다. As such, the first converter 140 may minimize the total number of toggles of the program code by bit converting the data of the command in which the bit conversion is determined.
저장부(150)는 제1 변환부(140)에 의해 비트 변환된 프로그램 코드를 플래시 메모리(160)에 저장한다.The storage unit 150 stores the program code bit-converted by the first converter 140 in the flash memory 160.
이 때, 저장부(150)는 제1 변환부(140)에 의해 비트 변환된 명령어의 데이터 영역에 대한 플래그 비트를 미리 결정된 저장 수단에 저장할 수 있는데, 여기서 저장 수단을 플래시 메모리가 될 수도 있고, 별도로 구비된 저장 수단이 될 수도 있다.At this time, the storage unit 150 may store the flag bits for the data area of the instruction bit-converted by the first converter 140 in a predetermined storage means, where the storage means may be a flash memory, It may be a storage means provided separately.
필요에 따라, 저장부(150)는 모든 명령어에 대한 플래그 비트를 저장할 수 있으며, 이 경우 저장부(150)는 비트 변환된 명령어에 대해서는 플래그 비트의 비트 값 '1'을 저장하고, 비트 변환되지 않은 명령어에 대해서는 플래그 비트의 비트 값 '0'을 저장할 수 있으며, 물론 이 값은 상황에 따라 서로 바뀔 수도 있다.If necessary, the storage unit 150 may store flag bits for all instructions. In this case, the storage unit 150 stores the bit value '1' of the flag bit for the bit-converted instruction, and does not convert the bit. If the instruction is not used, the bit value '0' of the flag bit can be stored. Of course, this value may be changed depending on circumstances.
제2 변환부(170)는 플래시 메모리(160)에 저장된 프로그램 코드 중 비트 변환된 데이터 영역을 확인하여 해당 데이터 영역의 데이터를 비트 변환한다.The second converter 170 checks the bit-converted data area among the program codes stored in the flash memory 160 and bit-converts the data of the data area.
이 때, 제2 변환부(170)는 미리 저장된 플래그 비트의 비트 값에 기초하여 플래시 메모리(160)에 저장된 프로그램 코드를 비트 변환할 수 있다.In this case, the second converter 170 may bit convert the program code stored in the flash memory 160 based on the bit value of the flag bit stored in advance.
예컨대, 제2 변환부(170)는 도 8에 도시된 일 예와 같이, 비트 변환되어 플래시 메모리에 저장된 두 번째 명령어 데이터(610)와 네 번째 명령어 데이터(620)에 대해서는 해당 명령어의 플래그 비트(미도시)의 비트 값 '1'을 통해 해당 데이터 영역의 데이터를 비트 변환하고, 원본 데이터 그대로 플래시 메모리에 저장된 명령어에 대해서는 해당 명령어의 플래그 비트의 비트 값 '0'을 통해 해당 데이터 영역의 데이터를 비트 변환하지 않는다.For example, as shown in the example illustrated in FIG. 8, the second converter 170 may perform bit-conversion with respect to the second command data 610 and the fourth command data 620 stored in the flash memory. Bit value '1' of the not shown) bit-converts the data of the data area, and for the command stored in the flash memory as the original data, the data of the data area is converted through the bit value '0' of the flag bit of the command. Do not bit convert.
읽기부(180)는 제2 변환부(170)에 의해 비트 변환된 프로그램 코드 즉, 원본 프로그램 코드를 읽는다.The reading unit 180 reads the program code that is bit converted by the second converter 170, that is, the original program code.
이와 같이, 본 발명에 따른 장치는 프로그램 코드를 플래시 메모리에 저장할 때 프로그램 코드의 명령어에 따른 토글 수가 최소가 되도록 비트 변환하여 저장함으로써, 플래시 메모리에 저장된 프로그램 코드를 읽을 때 프리차지 회로의 소모 전류를 줄일 수 있고, 이를 통해 플래시 메모리의 소모 전력을 감소 시킬 수 있다. As described above, the apparatus according to the present invention bit-transforms and stores the program code stored in the flash memory such that the number of toggles according to the instructions of the program code is minimized when the program code is stored in the flash memory. This can reduce the power consumption of the flash memory.
나아가, 본 발명은 플래시 메모리의 소모 전력을 감소시킴으로써, 플래시 메모리가 탑재된 기기의 전체 소모 전력을 줄일 수 있다.Furthermore, the present invention can reduce the power consumption of the flash memory, thereby reducing the overall power consumption of the device equipped with the flash memory.
도 9는 본 발명의 일 실시예에 따른 플래시 메모리의 소모 전력 감소 방법에 대한 동작 흐름도를 나타낸 것이다.9 is a flowchart illustrating a method of reducing power consumption of a flash memory according to an embodiment of the present invention.
도 9를 참조하면, 본 발명에 따른 방법은 외부로부터 프로그램 코드를 수신하고, 수신된 프로그램 코드를 분석한다(S910, S920).9, the method according to the present invention receives a program code from the outside, and analyzes the received program code (S910, S920).
여기서, 프로그램 코드의 분석은 프로그램 코드에 포함된 명령어들에 대한 분석일 수도 있고, 프로그램 코드의 바이너리 데이터에 대한 분석일 수도 있으며, 본 발명에서 토글 수를 최소화하기 위한 모든 분석을 포함할 수 있다.Here, the analysis of the program code may be an analysis of the instructions included in the program code, may be an analysis of the binary data of the program code, and may include all the analysis to minimize the number of toggles in the present invention.
프로그램 코드의 분석을 통하여, 프로그램 코드의 명령어에 따른 비트 값의 토글 수를 계산한다(S930).Through the analysis of the program code, the toggle number of the bit value according to the instruction of the program code is calculated (S930).
여기서, 토글은 명령어의 수행 순서에 따라 프리차지 회로와 연결되는 플래시 메모리의 제1 라인 예를 들어, 비트라인에서 비트 값 '0'에서 '1'로 전환되거나 '1'에서 '0'으로 전환되는 것을 의미하며, 프로그램 코드의 토글 수는 명령어의 수행 순서에 따라 발생되는 전체 토글 수를 의미한다.Here, the toggle is a bit line '0' to '1' or a '1' to '0' in the first line of the flash memory connected to the precharge circuit according to the order of execution of the instructions. The number of toggles of the program code means the total number of toggles generated according to the order of execution of the instructions.
이 때, 단계 S930은 플래시 메모리에 저장되는 주소 순서대로 프로그램 코드의 순차적인 토글 수를 계산할 수도 있고, 프로그램 코드의 명령어들의 수행 순서에 기초하여 명령어들간의 토글 수를 계산할 수도 있으며, 프로그램 코드의 분석을 통해 획득된 액세스 패턴에 기초하여 프로그램 코드의 토글 수를 계산할 수도 있는데, 이에 대해 도 10과 도 11를 참조하여 설명한다.In this case, step S930 may calculate the sequential toggle number of the program code in the order of the addresses stored in the flash memory, calculate the number of toggles between the instructions based on the execution order of the instructions of the program code, and analyze the program code. It is also possible to calculate the number of toggles of the program code based on the access pattern obtained through the above, this will be described with reference to FIGS. 10 and 11.
도 10은 도 9에 도시된 단계 S930에 대한 일 실시예 동작 흐름도를 나타낸 것으로, 명령어 수행 순서에 기초하여 토글 수를 계산하는 과정에 대한 것이다.FIG. 10 is a flowchart illustrating an example operation of operation S930 illustrated in FIG. 9, and illustrates a process of calculating a toggle number based on a command execution order.
도 10을 참조하면, 토글 수를 계산하는 단계(S930)는 단계 S920 단계에서의 프로그램 코드의 분석 결과에 기초하여 프로그램 코드의 명령어들에 대한 수행 순서를 획득한다(S1010).Referring to FIG. 10, in operation S930, the number of toggles is obtained based on an analysis result of the program code in operation S920, in operation S1010.
여기서, 명령어들에 대한 수행 순서는 프로그램 코드가 수행되면서 이루어지는 명령어들의 순서를 의미하는 것으로, 수행 순서에 의하여 특정 명령어가 반복 수행될 수도 있다.Here, the order of execution of the instructions refers to the order of instructions that are performed while the program code is executed, and a specific instruction may be repeatedly executed by the order of execution.
단계 S1010에서 명령어 수행 순서가 획득되면 획득된 명령어 수행 순서에 기초하여 프로그램 코드의 토글 수를 계산한다(S1020).When the instruction execution order is obtained in step S1010, the number of toggles of the program code is calculated based on the obtained instruction execution order (S1020).
즉, 명령어들간의 수행 순서에 따라 이전 명령어와의 토글 수, 이후 명령어와의 토글 수를 계산함으로써, 프로그램 코드의 전체 명령어에 대한 토글 수를 계산할 수 있다.That is, the number of toggles for the entire instruction of the program code may be calculated by calculating the number of toggles with the previous instruction and the number of toggles with the subsequent instruction according to the execution order between the instructions.
도 11는 도 9에 도시된 단계 S930에 대한 다른 일 실시예 동작 흐름도를 나타낸 것으로, 액세스 패턴을 이용하여 토글 수를 계산하는 과정에 대한 것이다.FIG. 11 is a flowchart illustrating another operation of step S930 illustrated in FIG. 9 and illustrates a process of calculating a toggle number using an access pattern.
도 11을 참조하면, 토글 수를 계산하는 단계(S930)는 프로그램 코드의 분석을 통해 프로그램 코드에 대한 액세스 패턴을 생성하고, 생성된 액세스 패턴을 이용하여 프로그램 코드의 액세스 흐름을 획득한다(S1110, S1120).Referring to FIG. 11, in the calculating of the number of toggles (S930), an access pattern for the program code is generated by analyzing the program code, and an access flow of the program code is obtained using the generated access pattern (S1110). S1120).
필요에 따라, 프로그램 코드의 액세스 패턴을 이용하여 명령어들 간의 연결 관계 및 연결 횟수를 포함하는 데이터 액세스 그래프를 생성할 수도 있으며, 이렇게 생성된 데이터 액세스 그래프를 이용하여 액세스 흐름을 획득할 수도 있다.If necessary, a data access graph including a connection relationship between the instructions and the number of connections may be generated using the access pattern of the program code, and the access flow may be obtained using the generated data access graph.
프로그램 코드의 액세스 흐름이 획득되면, 획득된 액세스 흐름에 기초하여 프로그램 코드의 전체 토글 수를 계산한다(S1130).When the access flow of the program code is obtained, the total number of toggles of the program code is calculated based on the obtained access flow (S1130).
다시 도 9을 참조하여, 단계 S930에 의해 프로그램 코드의 전체 토글 수가 계산되면, 계산된 토글 수에 기초하여 명령어 각각의 데이터 영역에 대한 비트 변환 여부를 결정하고, 비트 변환 여부가 결정된 명령어의 데이터 영역에 대한 비트 변환을 수행한다(S940, S950).Referring back to FIG. 9, when the total number of toggles of the program code is calculated by step S930, it is determined whether or not to convert a bit for each data area of the instruction based on the calculated number of toggles, and whether the bit conversion is determined or not. Performs bit conversion on (S940 and S950).
여기서, 명령어 각각의 데이터 영역에 해당하는 데이터는 프로그램 코드의 토글 수를 최소화시키기 위해 비트 변환 여부가 결정될 수 있으며, 비트 변환 여부는 명령어들 간의 토글 수와 명령어들 각각의 수행 횟수, 나아가 명령어들 간의 연결 또는 반복 횟수 등을 고려하여 결정될 수 있다.Here, whether or not to convert the data corresponding to the data area of each instruction may be determined in order to minimize the number of toggles of the program code, and whether or not to convert the bit between the instructions and the number of times each of the instructions, and even between the instructions It may be determined in consideration of the number of connections or repetitions.
명령어 각각에 대한 비트 변환 여부가 결정되고 비트 변환이 결정된 명령어에 대해 비트 변환이 수행되면, 비트 변환된 프로그램 코드를 플래시 메모리에 저장한다(S960).If bit conversion is determined for each command and bit conversion is performed on the command for which the bit conversion is determined, the bit-converted program code is stored in the flash memory (S960).
물론, 단계 S940에 의해 비트 변환을 수행할 명령어가 없는 경우에는 원본 프로그램 코드가 플래시 메모리에 저장된다.Of course, if there is no instruction to perform bit conversion in step S940, the original program code is stored in the flash memory.
비트 변환된 프로그램 코드를 플래시 메모리에 저장할 때 명령어 각각의 데이터에 영역에 대한 비트 변환 여부의 플래그 비트를 플래시 메모리의 미리 설정된 영역 또는 별도의 저장 수단에 저장한다(S970).When storing the bit-converted program code in the flash memory, the flag bit of whether or not the bit is converted to the area is stored in the data of each instruction in a predetermined area or a separate storage means of the flash memory (S970).
여기서, 플래그 비트는 명령어 각각에 대해 저장되며, 플래그 비트의 비트 값은 비트 변환이 수행되는 명령어에 대해서는 '1'의 값을 가지며, 비트 변환이 수행되지 않은 명령어에 대해서는 '0'의 값을 가질 수 있다. 물론, 플래그 비트의 비트 값은 상황에 따라 그 값이 서로 바뀔 수도 있다.Here, the flag bit is stored for each instruction, and the bit value of the flag bit has a value of '1' for the instruction in which bit conversion is performed and a value of '0' for an instruction in which bit conversion is not performed. Can be. Of course, the bit value of the flag bit may be interchanged depending on the situation.
상황에 따라, 플래그 비트를 저장하는 단계(S970)는 비트 변환 여부가 결정되는 단계 S940 다음 과정에서 수행될 수도 있고, 비트 변환이 수행되는 단계 S750 다음 과정에서 수행될 수도 있으며, 상기 과정들 중 어느 하나와 병렬적으로 수행될 수도 있다.Depending on the situation, the step of storing the flag bit (S970) may be performed after the step S940 where bit conversion is determined or may be performed after the step S750 where the bit conversion is performed, and any of the above processes may be performed. It may be performed in parallel with one.
도 12는 도 9에 의해 저장된 프로그램 코드를 읽는 방법에 대한 일 실시예의 동작 흐름도를 나타낸 것이다.FIG. 12 illustrates an operation flowchart of an embodiment of a method of reading the program code stored by FIG. 9.
도 12를 참조하면, 플래시 메모리 저장된 프로그램 코드를 읽을 때, 플래시 메모리에 저장된 명령어 각각의 데이터 영역에 대한 플래그 비트의 비트 값을 확인한다(S1210).Referring to FIG. 12, when a program code stored in a flash memory is read, a bit value of a flag bit for each data area of an instruction stored in the flash memory is checked (S1210).
플래그 비트 값이 '0'인 명령어의 데이터 영역에 대해서는 비트 변환을 수행하지 않고, 플래그 비트 값이 '1'인 명령어의 데이터 영역에 대해서는 비트 변환을 수행함으로써, 플래시 메모리에 저장된 비트 변환된 프로그램 코드를 읽는다(S1220, S1230).By performing bit conversion on the data area of the instruction whose flag bit value is '0', and performing bit conversion on the data area of the instruction whose flag bit value is '1', the bit-converted program code stored in the flash memory. Read (S1220, S1230).
본 발명의 일 실시 예에 따른 플래시 메모리의 소모 전력 감소 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The method of reducing power consumption of a flash memory according to an embodiment of the present invention may be implemented in the form of program instructions that may be executed by various computer means and may be recorded in a computer readable medium. The computer readable medium may include program instructions, data files, data structures, etc. alone or in combination. Program instructions recorded on the media may be those specially designed and constructed for the purposes of the present invention, or they may be of the kind well-known and available to those having skill in the computer software arts. Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tape, optical media such as CD-ROMs, DVDs, and magnetic disks, such as floppy disks. Magneto-optical media, and hardware devices specifically configured to store and execute program instructions, such as ROM, RAM, flash memory, and the like. Examples of program instructions include not only machine code generated by a compiler, but also high-level language code that can be executed by a computer using an interpreter or the like. The hardware device described above may be configured to operate as one or more software modules to perform the operations of the present invention, and vice versa.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. In the present invention as described above has been described by the specific embodiments, such as specific components and limited embodiments and drawings, but this is provided to help a more general understanding of the present invention, the present invention is not limited to the above embodiments. For those skilled in the art, various modifications and variations are possible from these descriptions.
따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.Therefore, the spirit of the present invention should not be limited to the described embodiments, and all of the equivalents and equivalents of the claims, as well as the following claims, will fall within the scope of the present invention. .
플래시 메모리의 소모 전력 감소 방법 및 그 장치가 개시된다. 본 발명의 일 실시예에 따른 플래시 메모리의 소모 전력 감소 방법은 프로그램 코드를 수신하는 단계; 상기 수신된 상기 프로그램 코드를 분석하는 단계; 상기 프로그램 코드의 분석을 통해 상기 프로그램 코드의 명령어에 따른 비트 값의 토글(toggle) 수를 계산하는 단계; 상기 계산된 상기 토글 수에 기초하여 상기 프로그램 코드의 비트 값을 비트 변환하는 단계; 및 상기 비트 변환된 상기 프로그램 코드를 플래시 메모리에 저장하는 단계를 포함하고, 상기 계산하는 단계는 상기 프로그램 코드의 명령어 수행 순서에 기초하여 상기 토글 수를 계산함으로써, 플래시 메모리에 저장된 데이터를 읽을 때 토글에 의해 발생되는 프리차지(pre-charge)에 의한 소모 전력을 줄일 수 있다.A method and apparatus for reducing power consumption of a flash memory are disclosed. In accordance with another aspect of the present invention, a method of reducing power consumption of a flash memory may include: receiving a program code; Analyzing the received program code; Calculating a number of toggles of a bit value according to an instruction of the program code by analyzing the program code; Bit converting a bit value of the program code based on the calculated number of toggles; And storing the bit-converted program code in a flash memory, wherein the calculating step toggles when reading data stored in the flash memory by calculating the number of toggles based on an instruction execution order of the program code. It is possible to reduce the power consumption due to the pre-charge generated by the.

Claims (14)

  1. 프로그램 코드를 수신하는 단계;Receiving a program code;
    상기 수신된 상기 프로그램 코드를 분석하는 단계;Analyzing the received program code;
    상기 프로그램 코드의 분석을 통해 상기 프로그램 코드의 명령어에 따른 비트 값의 토글(toggle) 수를 계산하는 단계;Calculating a number of toggles of a bit value according to an instruction of the program code by analyzing the program code;
    상기 계산된 상기 토글 수에 기초하여 상기 프로그램 코드의 비트 값을 비트 변환하는 단계; 및Bit converting a bit value of the program code based on the calculated number of toggles; And
    상기 비트 변환된 상기 프로그램 코드를 플래시 메모리에 저장하는 단계Storing the bit-converted program code in a flash memory
    를 포함하는 플래시 메모리의 소모 전력 감소 방법.Method of reducing power consumption of the flash memory including a.
  2. 제1항에 있어서,The method of claim 1,
    상기 계산하는 단계는The calculating step
    상기 프로그램 코드의 명령어 수행 순서에 기초하여 상기 토글 수를 계산하는 것을 특징으로 하는 플래시 메모리의 소모 전력 감소 방법.And calculating the number of toggles based on an instruction execution order of the program code.
  3. 제1항에 있어서,The method of claim 1,
    상기 계산하는 단계는The calculating step
    상기 프로그램 코드의 분석을 통해 상기 프로그램 코드에 대한 액세스 패턴(access pattern)을 생성하는 단계;Generating an access pattern for the program code by analyzing the program code;
    상기 생성된 상기 액세스 패턴을 이용하여 상기 프로그램 코드의 액세스 흐름을 획득하는 단계; 및Obtaining an access flow of the program code using the generated access pattern; And
    상기 획득된 상기 프로그램 코드의 액세스 흐름에 기초하여 상기 토글 수를 계산하는 단계Calculating the number of toggles based on the obtained access flow of the program code
    를 포함하는 것을 특징으로 하는 플래시 메모리의 소모 전력 감소 방법.Method for reducing power consumption of a flash memory comprising a.
  4. 제1항에 있어서,The method of claim 1,
    상기 비트 변환하는 단계는The bit conversion step
    상기 프로그램 코드의 명령어 수행 순서에 따른 토글 수가 최소가 되도록 명령어 각각의 데이터 영역에 대한 비트 변환 여부를 결정하는 단계; 및Determining whether or not to convert a bit in a data area of each instruction so that the number of toggles according to the instruction execution order of the program code is minimized; And
    상기 비트 변환이 결정된 명령어의 데이터 영역에 대해 비트 변환을 수행하는 단계Performing bit conversion on the data area of the instruction in which the bit conversion is determined;
    를 포함하는 것을 특징으로 하는 플래시 메모리의 소모 전력 감소 방법.Method for reducing power consumption of a flash memory comprising a.
  5. 제4항에 있어서,The method of claim 4, wherein
    상기 저장하는 단계는The storing step
    상기 비트 변환이 수행된 데이터 영역에 대한 플래그 비트를 저장하는 것을 특징으로 하는 플래시 메모리의 소모 전력 감소 방법.And storing a flag bit for the data area on which the bit conversion has been performed.
  6. 제1항에 있어서,The method of claim 1,
    상기 비트 변환되어 상기 플래시 메모리에 저장된 상기 프로그램 코드를 비트 변환하여 읽는 단계Bit converting and reading the program code bit-converted and stored in the flash memory
    를 더 포함하는 것을 특징으로 하는 플래시 메모리의 소모 전력 감소 방법.The method of reducing power consumption of a flash memory further comprising.
  7. 제6항에 있어서,The method of claim 6,
    상기 읽는 단계는The reading step
    상기 플래시 메모리에 저장된 상기 프로그램 코드 중 상기 비트 변환이 수행된 데이터 영역에 대해 미리 저장된 플래그 비트를 이용하여, 상기 플래시 메모리에 저장된 상기 프로그램 코드를 비트 변환하여 읽는 것을 특징으로 하는 플래시 메모리의 소모 전력 감소 방법.Reducing power consumption of the flash memory, characterized in that the program code stored in the flash memory is bit-transformed and read using the flag bits stored in advance in the data area of the program code stored in the flash memory. Way.
  8. 제1항 내지 제7항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.A computer-readable recording medium in which a program for executing the method of any one of claims 1 to 7 is recorded.
  9. 프로그램 코드를 수신하는 수신부;A receiving unit for receiving a program code;
    상기 수신된 상기 프로그램 코드를 분석하는 분석부;An analysis unit for analyzing the received program code;
    상기 프로그램 코드의 분석을 통해 상기 프로그램 코드의 명령어에 따른 비트 값의 토글(toggle) 수를 계산하는 연산부;An operation unit configured to calculate a toggle number of bit values according to an instruction of the program code by analyzing the program code;
    상기 계산된 상기 토글 수에 기초하여 상기 프로그램 코드의 비트 값을 비트 변환하는 변환부; 및A conversion unit for bit converting the bit value of the program code based on the calculated number of toggles; And
    상기 비트 변환된 상기 프로그램 코드를 플래시 메모리에 저장하는 저장부A storage unit for storing the bit-converted program code in a flash memory
    를 포함하는 플래시 메모리의 소모 전력 감소 장치.Device for reducing power consumption of a flash memory including a.
  10. 제9항에 있어서,The method of claim 9,
    상기 연산부는The calculation unit
    상기 프로그램 코드의 명령어 수행 순서에 기초하여 상기 토글 수를 계산하는 것을 특징으로 하는 플래시 메모리의 소모 전력 감소 장치.And calculating the number of toggles based on an instruction execution order of the program code.
  11. 제9항에 있어서,The method of claim 9,
    상기 연산부는The calculation unit
    상기 프로그램 코드의 분석을 통해 상기 프로그램 코드에 대한 액세스 패턴(access pattern)을 생성하는 패턴 생성부;A pattern generator configured to generate an access pattern for the program code by analyzing the program code;
    상기 생성된 상기 액세스 패턴을 이용하여 상기 프로그램 코드의 액세스 흐름(access flow)을 획득하는 흐름 획득부; 및A flow obtaining unit obtaining an access flow of the program code by using the generated access pattern; And
    상기 획득된 상기 프로그램 코드의 액세스 흐름에 기초하여 상기 토글 수를 계산하는 토글 수 연산부Toggle number calculator that calculates the number of toggles based on the obtained access flow of the program code
    를 포함하는 것을 특징으로 하는 플래시 메모리의 소모 전력 감소 장치.Apparatus for reducing power consumption of a flash memory comprising a.
  12. 제9항에 있어서,The method of claim 9,
    상기 변환부는The conversion unit
    상기 프로그램 코드의 명령어 수행 순서에 따른 토글 수가 최소가 되도록 명령어 각각의 데이터 영역에 대한 비트 변환 여부를 결정하는 결정부; 및A determination unit to determine whether to convert a bit in a data area of each instruction so that the number of toggles according to the instruction execution order of the program code is minimized; And
    상기 비트 변환이 결정된 명령어의 데이터 영역에 대해 비트 변환을 수행하는 변환 수행부A conversion execution unit that performs bit conversion on the data area of the instruction in which the bit conversion is determined;
    를 포함하는 것을 특징으로 하는 플래시 메모리의 소모 전력 감소 장치.Apparatus for reducing power consumption of a flash memory comprising a.
  13. 제12항에 있어서,The method of claim 12,
    상기 저장부The storage unit
    상기 비트 변환이 수행된 데이터 영역에 대한 플래그 비트를 미리 결정된 저장 수단에 저장하는 것을 특징으로 하는 플래시 메모리의 소모 전력 감소 장치.And a flag bit for the data area on which the bit conversion has been performed is stored in a predetermined storage means.
  14. 제9항에 있어서,The method of claim 9,
    상기 비트 변환되어 상기 플래시 메모리에 저장된 상기 프로그램 코드 중 상기 비트 변환이 수행된 데이터 영역에 대해 미리 저장된 플래그 비트를 이용하여, 상기 플래시 메모리에 저장된 상기 프로그램 코드를 비트 변환하여 읽는 읽기부A read unit for bit-converting the program code stored in the flash memory using a flag bit stored in advance for a data area of the bit-converted program code stored in the flash memory
    를 더 포함하는 것을 특징으로 하는 플래시 메모리의 소모 전력 감소 장치. Apparatus for reducing power consumption of a flash memory further comprising.
PCT/KR2013/011502 2012-12-12 2013-12-12 Method for reducing power consumption of flash memory, and device for same WO2014092465A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2012-0144540 2012-12-12
KR1020120144540A KR101419710B1 (en) 2012-12-12 2012-12-12 Method for reducing power consumption of flash memory and apparatus thereof

Publications (1)

Publication Number Publication Date
WO2014092465A1 true WO2014092465A1 (en) 2014-06-19

Family

ID=50934665

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2013/011502 WO2014092465A1 (en) 2012-12-12 2013-12-12 Method for reducing power consumption of flash memory, and device for same

Country Status (2)

Country Link
KR (1) KR101419710B1 (en)
WO (1) WO2014092465A1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040100513A (en) * 2003-05-23 2004-12-02 주식회사 하이닉스반도체 Input/Output byte control device using non-volatile ferroelectric register
KR20050037607A (en) * 2002-09-20 2005-04-22 아트멜 코포레이숀 Apparatus and method for dynamic program decompression
KR100516694B1 (en) * 2003-04-02 2005-09-22 주식회사 하이닉스반도체 Semiconductor memory device
KR20100037121A (en) * 2007-08-09 2010-04-08 인터내셔널 비지네스 머신즈 코포레이션 Providing energy reduction when storing data in a memory

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050037607A (en) * 2002-09-20 2005-04-22 아트멜 코포레이숀 Apparatus and method for dynamic program decompression
KR100516694B1 (en) * 2003-04-02 2005-09-22 주식회사 하이닉스반도체 Semiconductor memory device
KR20040100513A (en) * 2003-05-23 2004-12-02 주식회사 하이닉스반도체 Input/Output byte control device using non-volatile ferroelectric register
KR20100037121A (en) * 2007-08-09 2010-04-08 인터내셔널 비지네스 머신즈 코포레이션 Providing energy reduction when storing data in a memory

Also Published As

Publication number Publication date
KR20140076220A (en) 2014-06-20
KR101419710B1 (en) 2014-08-13

Similar Documents

Publication Publication Date Title
US20190007529A1 (en) Methods and systems for autonomous memory
WO2018135723A1 (en) Device and method for generating abstract summary of multiple-paragraph text, and recording medium for performing same method
CN113449489A (en) Punctuation mark marking method, punctuation mark marking device, computer equipment and storage medium
WO2014092465A1 (en) Method for reducing power consumption of flash memory, and device for same
CN115269393A (en) Program dynamic function call sequence tracking method and device based on hardware
WO2014073747A1 (en) Method for reducing power consumption of flash memory and apparatus therefor
US7975128B2 (en) Apparatuses and programs for implementing a forwarding function
CN113268996A (en) Method for expanding corpus, training method for translation model and product
CN113836367B (en) Method and device for character reverse matching
US11521685B2 (en) Semiconductor storage device
WO2015080440A1 (en) Method and processor for executing instructions, method and apparatus for encoding instructions, and recording medium therefor
Zhu et al. Determining the image base of arm firmware by matching function addresses
WO2022220496A1 (en) Neural network-based biological state data conversion apparatus and method therefor
US11354068B2 (en) Information processing apparatus, recording medium for information processing program, and information processing method
WO2021060891A1 (en) Electronic device and controlling method of electronic device
WO2013115561A1 (en) Data processing system and data simulation method in the system
WO2022131851A1 (en) A method and systems for decoding an audio query
US20240069809A1 (en) Memory devices including idle time prediction
CN115470737B (en) Method for generating data flow graph, electronic equipment and storage medium
WO2022003657A1 (en) A method and system for processing data efficiently in a model inference phase in a communication device
WO2012096424A1 (en) Method for processing a command through a processing element, and processing device
WO2023048481A1 (en) Method for diagnosing cancer of unknown primary site by using artificial intelligence
US11145378B2 (en) Methods and apparatus to improve performance while reading a one-time programmable memory
US11860762B2 (en) Semiconductor device, control flow inspection method, non-transitory computer readable medium, and electronic device
WO2013176372A1 (en) Device for measuring electromagnetic waves using flash memory structure, and method for measuring electromagnetic waves using same

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

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

Country of ref document: EP

Kind code of ref document: A1