KR101419710B1 - Method for reducing power consumption of flash memory and apparatus thereof - Google Patents

Method for reducing power consumption of flash memory and apparatus thereof Download PDF

Info

Publication number
KR101419710B1
KR101419710B1 KR1020120144540A KR20120144540A KR101419710B1 KR 101419710 B1 KR101419710 B1 KR 101419710B1 KR 1020120144540 A KR1020120144540 A KR 1020120144540A KR 20120144540 A KR20120144540 A KR 20120144540A KR 101419710 B1 KR101419710 B1 KR 101419710B1
Authority
KR
South Korea
Prior art keywords
program code
bit
flash memory
toggles
unit
Prior art date
Application number
KR1020120144540A
Other languages
Korean (ko)
Other versions
KR20140076220A (en
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 어보브반도체 주식회사
Priority to KR1020120144540A priority Critical patent/KR101419710B1/en
Priority to PCT/KR2013/011502 priority patent/WO2014092465A1/en
Publication of KR20140076220A publication Critical patent/KR20140076220A/en
Application granted granted Critical
Publication of KR101419710B1 publication Critical patent/KR101419710B1/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

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

플래시 메모리의 소모 전력 감소 방법 및 그 장치가 개시된다. 본 발명의 일 실시예에 따른 플래시 메모리의 소모 전력 감소 방법은 프로그램 코드를 수신하는 단계; 상기 수신된 상기 프로그램 코드를 분석하는 단계; 상기 프로그램 코드의 분석을 통해 상기 프로그램 코드의 명령어에 따른 비트 값의 토글(toggle) 수를 계산하는 단계; 상기 계산된 상기 토글 수에 기초하여 상기 프로그램 코드의 비트 값을 비트 변환하는 단계; 및 상기 비트 변환된 상기 프로그램 코드를 플래시 메모리에 저장하는 단계를 포함하고, 상기 계산하는 단계는 상기 프로그램 코드의 명령어 수행 순서에 기초하여 상기 토글 수를 계산함으로써, 플래시 메모리에 저장된 데이터를 읽을 때 토글에 의해 발생되는 프리차지(pre-charge)에 의한 소모 전력을 줄일 수 있다.A method and apparatus for reducing power consumption of a flash memory are disclosed. A method of reducing power consumption of a flash memory according to an embodiment of the present invention includes: receiving program code; Analyzing the received program code; Calculating a number of toggles of a bit value according to an instruction of the program code through analysis of 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 calculates the number of toggles based on a command execution order of the program code, so that when reading data stored in the flash memory, The power consumption due to the pre-charge generated by the pre-charge can be reduced.

Description

플래시 메모리의 소모 전력 감소 방법 및 그 장치 {Method for reducing power consumption of flash memory and apparatus thereof}BACKGROUND OF THE INVENTION 1. Field of the Invention [0001] The present invention relates to a method for reducing power consumption of a flash memory,

본 발명은 플래시 메모리의 소모 전력 감소에 대한 것으로, 상세하게는 플래시 메모리에 저장된 데이터를 읽을 때 프리차지 회로와 연결된 라인, 예를 들어, 비트라인(bit line)에서의 토글 수가 최소화되도록 프로그램 코드의 명령어를 비트 변환하여 플래시 메모리에 저장함으로써, 플래시 메모리에 저장된 데이터를 읽을 때 프리차지(pre-charge)에 의해 소모되는 전력을 감소시킬 수 있는 플래시 메모리의 소모 전력 감소 방법 및 그 장치에 관한 것이다.The present invention relates to a reduction in power consumption of a flash memory, and more particularly, to a method and apparatus for reducing the power consumption of a flash memory such that the number of toggles in a line connected to a precharge circuit, for example, a bit line, And more particularly, to a method and apparatus for reducing power consumption of a flash memory capable of reducing power consumed by pre-charge when data stored in a flash memory is read by bit-converting an instruction and storing the bit 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)에서 사용된다.The flash memory is non-volatile, meaning that the flash memory stores information on the semiconductor in a manner that does not require power to maintain the information of the chip. The flash memory stores information in an array of transistors called "cells ", each of which stores more than one bit of information. The memory cells are based on Floating-Gate Avalanche-Injection Metal Oxide Semiconductor (FAMOS) transistors and the FAMOS transistors are essentially CMOS (CMOS) transistors with additional conductors suspended or floating between the gate and source / drain terminals Complementary Metal Oxide Semiconductor FET (Field Effect Transistor). Current flash memory devices consist of two basic array architectures. NOR flash and NAND flash logic names are used in storage cell arrays.

플래시 셀은 단지 1개의 게이트 대신 2개의 게이트를 갖는다는 것을 제외하고는 표준 MOSFET 트랜지스터와 유사하다. 하나의 게이트는 다른 MOS 트랜지스터들에서의 제어 게이트(control gate, CG)와 같은 것이고, 다른 하나의 게이트는 산화층에 의해 주위가 모두 절연된 부유 게이트(floating gate, FG)이다. FG는 그의 산화층에 의해 절연되기 때문에, 그 위에 놓이는 임의의 전자는 거기에 트랩되고(trapped) 그리하여 정보를 저장한다.The flash cell is similar to a standard MOSFET transistor except that it has two gates instead of just one gate. One gate is like a control gate (CG) in other MOS transistors, and the other gate is a floating gate (FG) in which the periphery is completely isolated by the oxide layer. Since FG is insulated by its oxide layer, any electrons placed thereon are trapped therein 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 the CG, which modifies the cell's threshold voltage, Vt. Thus, when the cell is "read" by making the CG certain voltage, current will not flow or flow between the source and drain connections of that cell depending on the Vt of the cell. The presence or absence of this current may be sensed and converted to '1' or '0', thereby reproducing the stored data.

메모리 장치들의 메모리 셀들은 통상 행들 및 열들을 갖는 어레이로 배열된다. 일반적으로, 행들은 워드라인 전도체를 경유하여 연결되고 행들은 비트라인 전도체를 경유하여 연결된다. 데이터 판독 기능들 동안 비트라인 전도체들은 선택된 전압 레벨로 프리차지(pre-charge) 된다.
The memory cells of the memory devices are typically arranged in an array having rows and columns. Generally, the rows are connected via a word line conductor and the rows are connected via a bit line conductor. During data read functions, bit line conductors are pre-charged to a selected voltage level.

비트라인 전도체들에 프리차지를 수행하는 프리차지 회로는 포화 상태(saturation)에 이르기까지 많은 전류가 필요하기 때문에, 데이터를 읽을 때 해당 비트라인에서 '0'에서 '1'로 또는 '1'에서 '0'으로 교번하여 읽는 토글(toggle)이 자주 발생하게 되면 그 만큼 소모 전류가 증가하게 되고, 이에 따라 프리차지의 전류를 생성하기 위하여 전체적인 전력 소모가 커지는 문제점이 있다.
Since the precharge circuit that precharges the bit line conductors requires a large current until saturation, when reading the data, the precharge circuit may change the bit line from '0' to '1' or '1' If the toggle for reading alternately to '0' occurs frequently, the consumed current is increased by that much, and consequently, there is a problem that the overall power consumption is increased in order to generate the pre-charge current.

따라서, 플래시 메모리의 소모 전력을 줄일 수 있는 방법의 필요성이 대두된다. 플래시 메모리의 소모 전력을 줄이기 위하여 개발된 선행기술로서 한국등록특허 제10-0464951호 "플래시 메모리 소모 전력 감소 장치 및 방법"이 제안되었다. Therefore, there is a need for a method of reducing the power consumption of the flash memory. Korean Patent No. 10-0464951 entitled " Device and method for reducing flash memory power consumption "has been proposed as a prior art developed to reduce the power consumption of a flash memory.

상기 선행기술은 플래시 메모리에 저장된 데이터를 선택적으로 반전하여 전력 소모가 적은 방향으로 데이터를 저장하는 구성에 관한 것으로, 플래시 메모리의 셀이 0으로 지워지는 동작이 많을 경우 동작 전류가 증가하는 문제점을 해결하기 위한 것이다. 즉, 선행기술은 메모리 셀에 저장된 0의 값을 읽을 때의 동작 전류 증가를 방지하기 위한 것으로, 토글에 의해 증가할 수 있는 프리차지의 소모 전류에 대한 문제점은 전혀 기재하고 있지 않으며, 이런 토글에 의해 발생되는 프리차지 회로에 의한 소모 전류를 줄일 수 있는 방법의 필요성이 대두된다.The prior art is directed to a configuration for storing data in a direction in which power consumption is reduced by selectively inverting data stored in the flash memory. The present invention solves the problem that the operation current increases when the cell of the flash memory is erased to zero . 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 there is no description about the consumption current of the precharge that can be increased by the toggle. There is a need for a method capable of reducing the consumption current by the precharge circuit generated by the precharge circuit.

한국등록특허 제10-1005632호 (등록일 2010.12.27)Korean Registered Patent No. 10-1005632 (Registration date December 27, 2010) 한국등록특허 제10-0464951호 (등록일 2004.12.24)Korean Patent No. 10-0464951 (registered on December 24, 2004)

본 발명은 상기와 같은 종래 기술의 문제점을 해결하고자 도출된 것으로서, 플래시 메모리에 저장된 데이터를 읽을 때 토글에 의해 발생되는 프리차지(pre-charge)에 의한 소모 전력을 줄일 수 있는 플래시 메모리의 소모 전력 감소 방법 및 그 장치를 제공하는 것을 목적으로 한다.SUMMARY OF THE INVENTION The present invention has been made to solve the above-mentioned problems of the conventional art, and it is an object of the present invention to provide a flash memory which consumes power by pre-charge generated by a toggle when reading data stored in the flash memory, And to provide a method for reducing the above-mentioned problems.

구체적으로, 본 발명은 프로그램 코드의 명령어에 대한 수행 순서에 기초하여 토글 수를 계산하고, 토글 수가 최소화되도록 명령어 각각에 대한 비트 변환 여부를 결정하며, 결정된 명령어에 대한 데이터의 비트 변환을 수행한 후 비트 변환된 프로그램 코드를 플래시 메모리에 저장함으로써, 플래시 메모리에 저장된 프로그램 코드를 읽을 때 토글 수가 최소화되어 프리차지에 의한 소모 전력을 줄일 수 있다.Specifically, the present invention calculates the number of toggles based on the order of execution of the instructions of the program code, decides whether to perform bit conversion for each of the instructions so that the number of toggles is minimized, performs bit conversion of data on the determined instruction word By storing the bit-converted program code in the flash memory, the number of toggles can be minimized when reading the program code stored in the flash memory, thereby reducing power consumption due to precharging.

또한, 본 발명은 플래시 메모리를 읽을 때 프리차지에 의한 소모 전력을 감소시킴으로써, 플래시 메모리가 탑재된 기기의 전체 소모 전력을 줄일 수 있는 플래시 메모리의 소모 전력 감소 방법 및 그 장치를 제공하는 것을 목적으로 한다.Another object of the present invention is to provide a method and apparatus for reducing power consumption of a flash memory capable of reducing the total power consumption of a device on which a flash memory is mounted by reducing consumption power by precharging when reading the flash memory do.

상기와 같은 목적을 달성하기 위하여, 본 발명의 일 실시 예에 따른 플래시 메모리의 소모 전력 감소 방법은 프로그램 코드를 수신하는 단계; 상기 수신된 상기 프로그램 코드를 분석하는 단계; 상기 프로그램 코드의 분석을 통해 상기 프로그램 코드의 명령어에 따른 비트 값의 토글(toggle) 수를 계산하는 단계; 상기 계산된 상기 토글 수에 기초하여 상기 프로그램 코드의 비트 값을 비트 변환하는 단계; 및 상기 비트 변환된 상기 프로그램 코드를 플래시 메모리에 저장하는 단계를 포함한다.According to an aspect of the present invention, there is provided a method of reducing power consumption of a flash memory, including: 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 through analysis of 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 step may calculate the number of toggles based on a command execution order of the program code.

상기 계산하는 단계는 상기 프로그램 코드의 분석을 통해 상기 프로그램 코드에 대한 액세스 패턴(access pattern)을 생성하는 단계; 상기 생성된 상기 액세스 패턴을 이용하여 상기 프로그램 코드의 액세스 흐름을 획득하는 단계; 및 상기 획득된 상기 프로그램 코드의 액세스 흐름에 기초하여 상기 토글 수를 계산하는 단계를 포함할 수 있다.Wherein the calculating comprises: generating an access pattern for the program code through analysis of 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 access flow of the obtained program code.

상기 비트 변환하는 단계는 상기 프로그램 코드의 명령어 수행 순서에 따른 토글 수가 최소가 되도록 명령어 각각의 데이터 영역에 대한 비트 변환 여부를 결정하는 단계; 및 상기 비트 변환이 결정된 명령어의 데이터 영역에 대해 비트 변환을 수행하는 단계를 포함할 수 있다.Wherein the bit conversion step comprises: determining whether or not bit conversion is performed on a data area of each of the instructions so that the number of toggles according to a command execution order of the program code is minimized; And performing a bit conversion on the data area of the instruction in which the bit conversion is determined.

상기 저장하는 단계는 상기 비트 변환이 수행된 데이터 영역에 대한 플래그 비트를 저장할 수 있다.The storing step may store a flag bit for the bit-converted data area.

나아가, 본 발명에 따른 방법은 상기 비트 변환되어 상기 플래시 메모리에 저장된 상기 프로그램 코드를 비트 변환하여 읽는 단계를 더 포함할 수 있다.Further, the method according to the present invention may further include a step of bit-converting and bit-converting the program code stored in the flash memory.

상기 읽는 단계는 상기 플래시 메모리에 저장된 상기 프로그램 코드 중 상기 비트 변환이 수행된 데이터 영역에 대해 미리 저장된 플래그 비트를 이용하여, 상기 플래시 메모리에 저장된 상기 프로그램 코드를 비트 변환하여 읽을 수 있다.
The reading may be performed by bit-converting the program code stored in the flash memory using flag bits previously stored in the 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 includes a receiver for receiving a program code; An analysis unit for analyzing the received program code; An operation unit for calculating a number of toggles of a bit value according to an instruction of the program code through analysis of the program code; A bit conversion unit for bit-converting a 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.

상기 연산부는 상기 프로그램 코드의 명령어 수행 순서에 기초하여 상기 토글 수를 계산할 수 있다.The operation unit may calculate the number of toggles based on a command execution order of the program code.

상기 비트 변환부는 상기 프로그램 코드의 명령어 수행 순서에 따른 토글 수가 최소가 되도록 명령어 각각의 데이터 영역에 대한 비트 변환 여부를 결정하는 결정부; 및 상기 비트 변환이 결정된 명령어의 데이터 영역에 대해 비트 변환을 수행하는 비트 변환 수행부를 포함할 수 있다.Wherein the bit conversion unit comprises: a determination unit for determining whether or not bit conversion is performed on the data area of each of the instructions so that the number of toggles according to the instruction execution order of the program code is minimized; And a bit conversion performing unit for performing bit conversion on the data area of the instruction in which the bit conversion is determined.

본 발명에 따르면, 프로그램 코드의 명령어에 대한 수행 순서에 기초하여 토글 수를 계산하고, 토글 수가 최소화되도록 명령어 각각에 대한 비트 변환을 수행하여 플래시 메모리에 저장함으로써, 플래시 메모리에 저장된 프로그램 코드를 읽을 때 토글 수가 최소화되어 프리차지에 의한 소모 전력을 줄일 수 있다.According to the present invention, the number of toggles is calculated on the basis of the order of execution of the instructions of the program code, the bit conversion is performed on each of the instructions so that the number of toggles is minimized and stored in the flash memory, The number of toggles is minimized and the power consumption by precharging can be reduced.

또한, 본 발명은 플래시 메모리를 읽을 때 토글에 따른 프리차지 회로의 소모 전력을 감소시킬 수 있기 때문에 플래시 메모리가 탑재된 기기의 전체 소모 전력을 줄일 수 있다. In addition, since the consumption power of the precharge circuit according to the toggle can be reduced when the flash memory is read, the present invention can reduce the total power consumption of the device equipped with the flash memory.

도 1은 본 발명의 일 실시예에 따른 플래시 메모리의 소모 전력 감소 장치에 대한 구성을 나타낸 것이다.
도 2는 도 1에 도시된 연산부에 대한 일 실시예 구성을 나타낸 것이다.
도 3은 도 1에 도시된 연산부에 대한 다른 일 실시예 구성을 나타낸 것이다.
도 4는 도 1에 도시된 제1 변환부에 대한 일 실시예 구성을 나타낸 것이다.
도 5는 프로그램 코드의 분석에 따른 액세스 패턴을 생성하는 일 예시도를 나타낸 것이다.
도 6은 도 5에 도시된 액세스 패턴에 대한 데이터 액세스 그래프(DAG)를 나타낸 것이다.
도 7은 액세스 흐름에 따라 프로그램 코드의 토글 수를 계산하는 과정에 대한 일 예시도를 나타낸 것이다.
도 8은 프로그램 코드의 명령어 수행 순서에 따라 비트 변환 데이터 영역을 결정하고 변환하는 동작을 설명하기 위한 일 예시도이다.
도 9는 본 발명의 일 실시예에 따른 플래시 메모리의 소모 전력 감소 방법에 대한 동작 흐름도를 나타낸 것이다.
도 10은 도 9에 도시된 단계 S930에 대한 일 실시예 동작 흐름도를 나타낸 것이다.
도 11은 도 9에 도시된 단계 S930에 대한 다른 일 실시예 동작 흐름도를 나타낸 것이다.
도 12는 도 9에 의해 저장된 프로그램 코드를 읽는 방법에 대한 일 실시예의 동작 흐름도를 나타낸 것이다.
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 shows a configuration of an operation unit shown in FIG. 1 according to an embodiment of the present invention.
FIG. 3 shows a configuration of another embodiment of the operation unit shown in FIG.
FIG. 4 shows a configuration of an embodiment of the first conversion unit shown in FIG.
5 shows an example of generating an access pattern according to analysis of a program code.
FIG. 6 shows a data access graph (DAG) for the access pattern shown in FIG.
7 shows an example of a process of calculating the number of toggles of a program code according to an access flow.
8 is an exemplary diagram for explaining an operation of determining and converting a bit-converted data area in accordance with a command execution order of the program code.
9 is a flowchart illustrating a method for reducing power consumption of a flash memory according to an exemplary embodiment of the present invention.
FIG. 10 shows an operational flow chart of an embodiment of step S930 shown in FIG.
FIG. 11 shows a flowchart of another embodiment of the operation of step S930 shown in FIG.
Figure 12 shows an operational flow diagram of an embodiment of a method of reading program code stored by Figure 9;

상기 목적 외에 본 발명의 다른 목적 및 특징들은 첨부 도면을 참조한 실시 예에 대한 설명을 통하여 명백히 드러나게 될 것이다.Other objects and features of the present invention will become apparent from the following description of embodiments with reference to the accompanying drawings.

본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terminology used in this application is used only to describe a specific embodiment and is not intended to limit the invention. The singular expressions include plural expressions unless the context clearly dictates otherwise. In the present application, the term "comprising" or " comprising " is intended to specify the presence of stated features, integers, steps, operations, elements, parts or combinations thereof, , But do not preclude the presence or addition of one or more other features, elements, components, components, or combinations 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 to which this invention belongs. Terms such as those defined in commonly used dictionaries should be interpreted as having a meaning consistent with the meaning in the context of the relevant art and are to be interpreted in an ideal or overly formal sense unless explicitly defined in the present application Do not.

본 발명의 바람직한 실시예를 첨부된 도면들을 참조하여 상세히 설명한다. 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.Preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings. In the following description of the present invention, a detailed description of known functions and configurations incorporated herein will be omitted when it may make the subject matter of the present invention rather unclear.

그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
However, the present invention is not limited to or limited by the embodiments. Like reference symbols in the drawings denote like elements.

이하에서는, 본 발명의 일 실시 예에 따른 플래시 메모리의 소모 전력 감소 방법 및 그 장치를 첨부된 도 1 내지 도 12를 참조하여 상세히 설명한다.
Hereinafter, a method and an 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은 본 발명의 일 실시예에 따른 플래시 메모리의 소모 전력 감소 장치에 대한 구성을 나타낸 것이다.FIG. 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)를 포함한다.1, an apparatus according to the present invention includes a receiving unit 110, an analyzing unit 120, a calculating unit 130, a first converting unit 140, a storing unit 150, a flash memory 160, A conversion unit 170 and a reading unit 180. [

수신부(110)는 외부로부터 프로그램 코드를 수신한다.The receiving unit 110 receives the program code from the outside.

이 때, 수신부(110)는 프로그램 코드를 프로그램 코드를 생성할 수 있는 기기 또는 프로그램, 나아가 프로그램 코드를 저장하고 있는 외부 저장 수단을 통해 수신할 수 있다.At this time, the receiving unit 110 can receive the program code through a device or a program capable of generating the program code, and further via external storage means storing the program code.

분석부(120)는 수신부(110)로 수신된 프로그램 코드를 분석한다.The analysis unit 120 analyzes the program code received by the reception unit 110. [

여기서, 분석부(120)는 프로그램 코드를 분석하여 프로그램 코드에 포함된 명령어들의 수행 순서에 대한 정보를 획득할 수도 있다.Here, the analysis unit 120 may analyze the program code and obtain information on the execution order of the instructions included in the program code.

연산부(130)는 분석부의 프로그램 코드 분석 결과에 기초하여 프로그램 코드의 명령어에 따른 비트 값의 토글(toggle)수를 계산한다.The calculation unit 130 calculates the number of toggles of the 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 operation unit 130 calculates the number of toggles in which the bit value changes from '1' to '0' or from '0' to '1', on 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 calculate 1) the number of toggles in the order of addresses for the instructions sequentially stored in the flash memory 160, 2) a toggle between the instructions based on the order of execution of the instructions of the program code And 3) calculate the number of toggles of the program code based on the access pattern obtained through analysis of the program code.

일 예로, 연산부(130)는 1)의 경우 플래시 메모리(160)에 순차적으로 저장될 명령어들에 대해 순차적으로 토글 수를 계산한다. 예컨대, 첫 번째 명령어와 두 번째 명령어 간의 토글 수, 두 번째 명령어와 세 번째 명령어 간의 토글 수, 세번 째 명령어와 네 번째 명령어 간의 토글 수와 같이 순차적으로 토글 수를 계산할 수 있다.For example, the operation unit 130 sequentially calculates the number of toggles for instructions to be sequentially stored in the flash memory 160 in case 1). For example, the number of toggles between the first instruction and the second instruction, the number of toggles between the second instruction and the third instruction, and the number of toggles between the third instruction and the fourth instruction can be sequentially calculated.

다른 일 예로, 연산부(130)는 2)의 경우 프로그램 코드의 분석 결과에 따라 명령어들의 수행 순서를 알 수 있고, 명령어들의 수행 순서에 따라 플래시 메모리(160)에 저장되는 명령어들이 읽혀지는 순서에 따른 토글 수를 계산할 수 있는데, 이 때 연산부(130)는 도 2에 도시된 바와 같이, 수행 순서 획득부(210) 및 토글 수 연산부(220)를 포함한다.In the 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 may determine the order in which the instructions stored in the flash memory 160 are read according to the order of execution of the instructions. The number of toggles may be calculated. In this case, as shown in FIG. 2, the operation unit 130 includes a performance order acquisition unit 210 and a toggle number operation unit 220.

수행 순서 획득부(210)는 프로그램 코드 분석을 통해 프로그램 코드의 명령어들에 대한 수행 순서를 획득한다.The execution order acquisition unit 210 acquires the execution order of the instructions of the program code through the program code analysis.

여기서, 명령어 수행 순서는 명령어들 간의 연결 관계에 대한 것으로, 특정 주소로의 이동, 반복 등에 의한 수행 순서를 의미할 수 있다. 이를 테면, 수행 순서 획득부(210)는 루프(loop)를 형성하는 프로그램 코드를 식별하여, 루프의 시작 코드와 마지막 코드를 파악할 수 있다. 루프를 탈출할 조건이 충족되지 않는 경우에는 루프의 마지막 코드 다음에는 다시 루프의 시작 코드가 수행될 가능성이 높으므로, 수행 순서 획득부(210)는 이 점을 고려하여 수행 순서를 획득할 수 있다. 루프를 탈출할 조건이 충족되는 경우를 고려하면 수행 순서 획득부(210)는 가중치를 부여하거나 확률을 고려하여 루프의 마지막 코드 다음에 다시 루프의 상위의 코드가 수행되도록 계획된 수행 순서를 획득할 수도 있다.Here, the instruction execution order refers to a connection relation between instructions, and may be a sequence of operations performed by movement to a specific address, repetition, and the like. For example, the execution order acquiring unit 210 can identify the program code that forms the loop, and grasp the start code and the final code of the loop. If the condition for escaping 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 can acquire the execution order in consideration of this point . Considering the case where the condition for escaping the loop is satisfied, the execution order acquisition unit 210 may acquire a scheduled execution order such that the upper code of the loop is performed again after the last code of the loop is given or a probability is taken into account have.

또한 수행 순서는 조건 분기(branch), 또는 무조건 분기(jump, goto 등)를 고려한 형태로 얻어질 수도 있다. The execution order may also be obtained in the form of a conditional branch or an unconditional branch (jump, goto, etc.).

토글 수 연산부(220)는 획득된 프로그램 코드의 명령어들에 대한 수행 순서에 기초하여 프로그램 코드의 토글 수를 계산한다.The toggle number operation unit 220 calculates the number of toggles of the program code based on the order of execution of the instructions of the obtained program code.

또 다른 일 예로, 연산부는(130)는 3)의 경우 프로그램 코드의 분석을 통해 변수 또는 피연산자(operand) 간의 액세스 패턴(access pattern)을 생성하고, 생성된 액세스 패턴을 이용하여 프로그램 코드의 액세스 흐름(access flow)을 획득하며, 획득된 프로그램 코드의 액세스 흐름에 기초하여 프로그램 코드의 토글 수를 계산할 수도 있는데, 이 때 연산부(130)는 도 3에 도시된 바와 같이 패턴 생성부(310), 흐름 획득부(320) 및 토글 수 연산부(330)를 포함한다.In another example, the operation unit 130 generates an access pattern between a variable or an operand through analysis of the program code in the case of 3), and generates an access pattern of the access code of the program code using the generated access pattern and the number of toggles of the program code may be calculated based on the access flow of the acquired program code. At this time, as shown in FIG. 3, the operation unit 130 may include a pattern generation unit 310, An acquisition unit 320 and a toggle number operation unit 330. [

패턴 생성부(310)는 프로그램 코드 분석을 통해 프로그램 코드에 대한 액세스 패턴(access pattern)을 생성한다.The pattern generation unit 310 generates an access pattern for the program code through program code analysis.

예컨대, 도 5에 도시된 일 예와 같이, 패턴 생성부(310)는 수신된 프로그램 코드(510)의 분석을 통해 "bdabcbbdeba"의 액세스 패턴(520)을 생성한다.5, the pattern generating unit 310 generates an access pattern 520 of "bdabcbbdeba " through analysis of the received program code 510. In this example,

흐름 획득부(320)는 패턴 생성부(310)에 의해 생성된 액세스 패턴(520)을 이용하여 프로그램 코드의 액세스 흐름을 획득한다. 여기서, 프로그램 코드의 액세스 흐름은 변수 a, b, c, d, e에 대한 흐름일 수도 있고, 프로그램 코드에 포함된 명령어들 간의 흐름일 수도 있다.The flow obtaining unit 320 obtains the access flow of the program code using the access pattern 520 generated by the pattern generating unit 310. Here, the access flow of the program code may be a flow for the variables a, b, c, d, e, or may be a flow between the instructions contained in the program code.

필요에 따라, 흐름 획득부(320)는 패턴 생성부(310)에 의해 생성된 액세스 패턴에 기초하여 도 6에 도시된 일 예와 같이 데이터 액세스 그래프(DAG)를 생성하고, 생성된 데이터 액세스 그래프를 이용하여 프로그램 코드의 액세스 흐름을 획득할 수도 있다.If necessary, the flow acquiring unit 320 generates a data access graph (DAG) as in the example shown in FIG. 6 based on the access pattern generated by the pattern generating unit 310, and generates a data access graph May be used to obtain the access flow of the program code.

여기서, 데이터 액세스 그래프는 변수들(610) 간의 연결 관계(620)와 연결 횟수(630) 등을 포함할 수 있으며, 데이터 액세스 그래프를 통해 변수들 각각에 대해 연결되는 다른 변수 개수 등을 알 수 있다.Here, the data access graph may include a connection relation 620 and a connection count 630 between the variables 610, 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, the variable b has a connection relationship with all other variables a, c, d, and e, and it can be seen that the number of times the variables a, c, and d are connected is twice. And the variable b has the greatest influence on the total number of toggles of the program code. It can be seen that the relationship between the variables 610 is strengthened as the number of accesses between the variables 610 on the data access graph increases. For example, in FIG. 6, it can be seen that the variable b is associated twice with the variables a, d, and c, and once with the variable e, the relative access times (the number of associations) between the variables are different.

흐름 획득부(320)는 도 7에 도시된 것과 같은 프로그램 코드로부터 연산(operation)의 종류와 피연산자(operand)를 식별할 수 있다. 도 7의 프로그램 코드의 각 행에서 추출된 피연산자, 즉, 변수 간의 관련성은 도 6에서 도시된 것과 같은 데이터 액세스 그래프를 이용하여 평가될 수 있다. 예를 들면, 데이터 액세스 그래프 상에서 특정 변수들 간에 특별히 높은 연관성을 가지는 것으로 나타난 경우, 흐름 획득부(320)는 프로그램 코드 상에서 상기 특정 변수들 중 어느 한 쪽이 발견되면, 상기 특정 변수들 중 나머지 한 쪽이 포함된 프로그램 코드가 그 다음에 실행될 것으로 예측하고 프로그램 코드의 실행 순서를 결정할 수 있다.The flow obtaining unit 320 can identify the type of operation and the operand from the program code as shown in Fig. The relevance between the operands extracted in each row of the program code of Figure 7, i. E. Variables, can be evaluated using a data access graph such as that shown in Figure 6. [ For example, if it appears that the data access graph has a particularly high correlation between certain variables, the flow obtaining unit 320 may determine that if any one of the specific variables is found on the program code, It is predicted that the program code including the page will be executed next, and the execution order of the program code can be determined.

예를 들어, 전체 프로그램 코드를 분석한 결과, 변수 b와 변수 d가 특별히 높은 상호 연관성을 보인다고 가정한다. DAG에서는 선행 변수와 후행 변수도 파악할 수 있는데, 변수 b 이후에는 높은 확률로 변수 d가 액세스되는 현상이 나타났다고 가정하기로 한다. 프로그램 코드에서 변수 b가 포함된 코드 다음에는 변수 d가 포함된 코드가 실행될 가능성이 높은 것으로 예측할 수 있다.For example, an analysis of the entire program code assumes that variables b and d have a particularly high correlation. In the DAG, it is assumed that the leading variable and the trailing variable can be detected. After the variable b, the variable d is accessed with a high probability. In the program code, the code including the variable d is likely to be executed next to the code including the variable b.

토글 수 연산부(330)는 흐름 획득부(320)에 의해 획득된 프로그램 코드의 액세스 흐름에 기초하여 프로그램 코드가 플래시 메모리(260)에 비트 변환 없이 저장될 때의 토글 수를 계산한다.The toggle number operation unit 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 acquisition unit 320. [

예컨대, 토글 수 연산부(330)는 도 7에 도시된 바와 같이, 도 5 또는 도 6에 도시된 프로그램 코드의 액세스 패턴 또는 데이터 액세스 그래프에 기초한 액세스 흐름을 이용하여 플래시 메모리에 저장될 프로그램 코드에 대해 ① 영역의 데이터에 대한 토글 수, ① 영역의 마지막 주소 데이터와 ② 영역의 첫 번째 주소 데이터 간의 토글 수, ② 영역의 토글 수, ② 영역의 마지막 주소 데이터와 ③ 영역의 첫 번째 주소 데이터 간의 토글 수, 및 ③ 영역의 데이터에 대한 토글 수를 계산함으로써, 플래시 메모리(260)에 비트 변환없이 저장될 때의 토글 수를 계산한다.For example, as shown in FIG. 7, the toggle number calculating section 330 may calculate the number of toggles for the program code to be stored in the flash memory using the access flow based on the access pattern of the program code or the data access graph shown in FIG. 5 or 6 The number of toggles between the last address data of the area and the first address data of the second area, the number of toggles of the second area, the number of toggles between the last address data of the area and the first address data of the area , And (3) the number of toggles with respect to the data in the area, by storing the number of toggles in the flash memory 260 without bit conversion.

도 2의 실시예와 도 3의 실시예에서는 서로 다른 문제 해결 방법을 통하여 프로그램 코드의 실행 순서를 획득하는데, 이들 방법은 유사한 결론을 얻을 가능성이 높다. 예를 들어, 여러 번 반복되는 루프(loop)와 같은 경우, 실행이 수차례 반복되는 만큼, 루프 내에서의 연산에 대해서는 DAG 상의 연관 관계가 강화될 가능성이 높다. 또한 무조건 분기와 같은 경우에도 서로 멀리 떨어진 프로그램 코드가 빈번하게 실행되는 만큼 해당 프로그램 코드의 변수들 간에 DAG 상의 연관 관계가 강화될 가능성이 높다고 볼 수 있다.
In the embodiment of FIG. 2 and FIG. 3, the execution order of the program code is obtained through different problem solving methods, and these methods are likely to obtain similar conclusions. For example, in the case of a loop that is repeated several times, as the execution is repeated a number of times, there is a high possibility that the association in the DAG is strengthened for operations in the loop. In addition, even in the case of an unconditional branch, since the program code far away from each other is frequently executed, the relationship between the variables of the program code is likely to be strengthened.

제1 변환부(140)는 연산부(130)에 의해 프로그램 코드의 토글 수가 계산되면, 연산부(130)에 의해 계산된 토글 수에 기초하여 프로그램 코드의 비트 값을 비트 변환한다.When the toggle count of the program code is calculated by the calculation unit 130, the first conversion unit 140 performs bit conversion on the bit value of the program code based on the number of toggles calculated by the calculation unit 130. [

이 때, 제1 변환부(140)는 프로그램 코드에 포함된 명령어들 각각에 대한 비트 변환 여부를 결정한 후 비트 변환이 결정된 명령어의 데이터 영역에 대한 비트 변환을 수행할 수 있다.In this case, the first conversion unit 140 may determine whether or not bit conversion is to be performed on each of the instructions included in the program code, and then perform bit conversion on the data region of the instruction for which bit conversion is determined.

즉, 도 4에 도시된 바와 같이, 제1 변환부(140)는 결정부(410)와 변환 수행부(420)를 포함한다.That is, as shown in FIG. 4, the first conversion unit 140 includes a determination unit 410 and a conversion performing unit 420.

결정부(410)는 프로그램 코드에 대한 토글 수가 최소가 되도록 명령어 각각의 데이터 영역에 대한 비트 변환 여부를 결정한다.The determination unit 410 determines whether or not bit conversion is performed on the data area of each instruction so that the number of toggles with respect to the program code is minimized.

이 때, 결정부(410)는 프로그램 코드의 명령어 수행 순서에 따른 토글 수가 최소가 되도록 비트 변환 여부를 결정할 수도 있고, 프로그램 코드의 액세스 패턴에 기초하여 프로그램 코드의 토글 수가 최소가 되도록 명령어에 대한 비트 변환 여부를 결정할 수도 있다.At this time, the determination unit 410 may determine whether to perform bit conversion so that the number of toggles according to the instruction execution order of the program code is minimized. Alternatively, the determination unit 410 may determine whether to perform bit conversion You can also decide whether to convert.

예를 들어, 도 8에 도시된 바와 같이, 플래시 메모리(160)에 저장될 프로그램 코드의 명령어들이 플래시 메모리(160)의 주소1 (address 1)에서 주소5 (address 5)까지 저장되고, 명령어 수행 순서에 따라 두 번째 명령어와 네 번째 명령어에 의한 토글 수가 가장 많이 발생한다 가정하면, 결정부(410)는 프로그램 코드의 토글 수가 최소가 되도록 명령어들 중 두 번째 명령어와 네 번째 명령어 데이터에 대한 비트 변환(bit inversion)을 결정한다. 즉, 결정부(410)는 두 번째 명령어와 네 번째 명령어 데이터를 비트 변환을 결정함으로써, 프로그램 코드의 토글 수를 최소화할 수 있다.8, the instructions of the program code to be stored in the flash memory 160 are stored from address 1 (address 1) to address 5 (address 5) of the flash memory 160, Assuming that the number of toggles by the second instruction and the fourth instruction is the greatest, the determining unit 410 determines whether the number of toggles of the program code is the smallest, (bit inversion). That is, the determination unit 410 can minimize the number of toggles of the program code by determining the bit conversion of the second instruction word and the fourth instruction word data.

여기서, 명령어들이 저장되는 플래시 메모리의 주소에 대해, address 1 내지 address 5로 도시되었지만, 이는 설명의 편의를 위하여 기재한 것으로 실제 플래시 메모리의 주소는 다를 수 있다는 것을 인지하여야 한다.Here, address 1 to address 5 of the address of the flash memory in which the instructions are stored are shown for convenience of description, and the address of the actual flash memory may be different.

변환 수행부(420)는 결정부(410)에 의해 결정된 명령어의 데이터 영역에 대해 비트 변환을 수행한다.The conversion performing unit 420 performs bit conversion on the data area of the command determined by the determination unit 410. [

즉, 변환 수행부(420)는 도 8에 도시된 일 예와 같이, 결정부(410)에 의해 결정된 두 번째 명령어와 네 번째 명령어의 데이터 영역에 대한 비트 변환을 수행하여 두 번째 명령어의 비트 변환된 데이터(810)와 네 번째 명령어의 비트 변환된 데이터(820)를 획득한다.That is, as shown in FIG. 8, the conversion performing unit 420 performs bit conversion on the data area of the second instruction and the fourth instruction determined by the determining unit 410 to perform bit conversion Obtained data 810 and the bit-converted data 820 of the fourth instruction.

이와 같이, 제1 변환부(140)는 비트 변환이 결정된 명령어의 데이터를 비트 변환함으로써, 프로그램 코드의 전체 토글 수를 최소화시킬 수 있다.
In this manner, the first conversion unit 140 can minimize the total number of toggles of the program code by bit-converting the data of the instruction word for which bit conversion is determined.

저장부(150)는 제1 변환부(140)에 의해 비트 변환된 프로그램 코드를 플래시 메모리(160)에 저장한다.The storage unit 150 stores the program code bit-converted by the first conversion unit 140 in the flash memory 160. [

이 때, 저장부(150)는 제1 변환부(140)에 의해 비트 변환된 명령어의 데이터 영역에 대한 플래그 비트를 미리 결정된 저장 수단에 저장할 수 있는데, 여기서 저장 수단을 플래시 메모리가 될 수도 있고, 별도로 구비된 저장 수단이 될 수도 있다.In this case, the storage unit 150 may store the flag bit for the data area of the bit-converted instruction word by the first conversion unit 140 in a predetermined storage unit, wherein the storage unit may be a flash memory, It may be a separate storage means.

필요에 따라, 저장부(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, For non-instructions, the bit value '0' of the flag bit can be stored. Of course, this value may change according to the situation.

제2 변환부(170)는 플래시 메모리(160)에 저장된 프로그램 코드 중 비트 변환된 데이터 영역을 확인하여 해당 데이터 영역의 데이터를 비트 변환한다.The second conversion unit 170 checks the bit-converted data area of the program code stored in the flash memory 160 and performs bit conversion on the data of the data area.

이 때, 제2 변환부(170)는 미리 저장된 플래그 비트의 비트 값에 기초하여 플래시 메모리(160)에 저장된 프로그램 코드를 비트 변환할 수 있다.At this time, the second conversion unit 170 can perform bit conversion on 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, the second conversion unit 170 converts the bit data of the second instruction data 610 and the fourth instruction data 620, which are bit-converted and stored in the flash memory, into flag bits The data of the corresponding data area is bit-converted through the bit value '1' of the instruction word, and the data of the corresponding data area is converted through the bit value '0' of the flag bit of the instruction word, No bit conversion is performed.

읽기부(180)는 제2 변환부(170)에 의해 비트 변환된 프로그램 코드 즉, 원본 프로그램 코드를 읽는다.
The reading unit 180 reads the program code bit-converted by the second conversion unit 170, that is, the original program code.

이와 같이, 본 발명에 따른 장치는 프로그램 코드를 플래시 메모리에 저장할 때 프로그램 코드의 명령어에 따른 토글 수가 최소가 되도록 비트 변환하여 저장함으로써, 플래시 메모리에 저장된 프로그램 코드를 읽을 때 프리차지 회로의 소모 전류를 줄일 수 있고, 이를 통해 플래시 메모리의 소모 전력을 감소 시킬 수 있다. In this way, when the program code is stored in the flash memory, the apparatus according to the present invention performs bit conversion so that the number of toggles according to the instruction of the program code is minimized, , Thereby reducing the power consumption of the flash memory.

나아가, 본 발명은 플래시 메모리의 소모 전력을 감소시킴으로써, 플래시 메모리가 탑재된 기기의 전체 소모 전력을 줄일 수 있다.
Furthermore, by reducing the power consumption of the flash memory, the present invention can reduce the total power consumption of the device on which the flash memory is mounted.

도 9는 본 발명의 일 실시예에 따른 플래시 메모리의 소모 전력 감소 방법에 대한 동작 흐름도를 나타낸 것이다.9 is a flowchart illustrating a method for reducing power consumption of a flash memory according to an exemplary embodiment of the present invention.

도 9를 참조하면, 본 발명에 따른 방법은 외부로부터 프로그램 코드를 수신하고, 수신된 프로그램 코드를 분석한다(S910, S920).Referring to FIG. 9, a 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 instructions contained in the program code, an analysis of binary data of the program code, and may include all analyzes to minimize the number of toggles in the present invention.

프로그램 코드의 분석을 통하여, 프로그램 코드의 명령어에 따른 비트 값의 토글 수를 계산한다(S930).Through the analysis of the program code, the number of toggles of the bit values according to the instruction of the program code is calculated (S930).

여기서, 토글은 명령어의 수행 순서에 따라 프리차지 회로와 연결되는 플래시 메모리의 제1 라인 예를 들어, 비트라인에서 비트 값 '0'에서 '1'로 전환되거나 '1'에서 '0'으로 전환되는 것을 의미하며, 프로그램 코드의 토글 수는 명령어의 수행 순서에 따라 발생되는 전체 토글 수를 의미한다.In this case, the toggle is switched from a bit value '0' to a bit '1' or from a bit value '1' to a bit '0' in the first line of the flash memory connected to the precharge circuit, And the number of toggles of the program code means the total number of toggles generated in accordance with the order of execution of the instruction.

이 때, 단계 S930은 플래시 메모리에 저장되는 주소 순서대로 프로그램 코드의 순차적인 토글 수를 계산할 수도 있고, 프로그램 코드의 명령어들의 수행 순서에 기초하여 명령어들간의 토글 수를 계산할 수도 있으며, 프로그램 코드의 분석을 통해 획득된 액세스 패턴에 기초하여 프로그램 코드의 토글 수를 계산할 수도 있는데, 이에 대해 도 10과 도 11를 참조하여 설명한다.
At this time, the step S930 may calculate the number of sequential toggles 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 order of execution of the instructions of the program code, The number of toggles of the program code may be calculated based on the access pattern obtained through the above-described access pattern. This will be described with reference to FIGS. 10 and 11. FIG.

도 10은 도 9에 도시된 단계 S930에 대한 일 실시예 동작 흐름도를 나타낸 것으로, 명령어 수행 순서에 기초하여 토글 수를 계산하는 과정에 대한 것이다.FIG. 10 is a flowchart illustrating an operation of step S930 of FIG. 9 according to an embodiment of the present invention. Referring to FIG.

도 10을 참조하면, 토글 수를 계산하는 단계(S930)는 단계 S920 단계에서의 프로그램 코드의 분석 결과에 기초하여 프로그램 코드의 명령어들에 대한 수행 순서를 획득한다(S1010).Referring to FIG. 10, the step of calculating the number of toggles (S930) acquires the order of execution of the instructions of the program code based on the analysis result of the program code in step S920 (S1010).

여기서, 명령어들에 대한 수행 순서는 프로그램 코드가 수행되면서 이루어지는 명령어들의 순서를 의미하는 것으로, 수행 순서에 의하여 특정 명령어가 반복 수행될 수도 있다.Here, the order of execution of the instructions means the order of the instructions that are executed when the program code is executed, and specific instructions may be repeatedly executed according to the order of execution.

단계 S1010에서 명령어 수행 순서가 획득되면 획득된 명령어 수행 순서에 기초하여 프로그램 코드의 토글 수를 계산한다(S1020).When the instruction execution order is acquired in step S1010, the number of toggles of the program code is calculated based on the obtained instruction execution order (S1020).

즉, 명령어들간의 수행 순서에 따라 이전 명령어와의 토글 수, 이후 명령어와의 토글 수를 계산함으로써, 프로그램 코드의 전체 명령어에 대한 토글 수를 계산할 수 있다.
That is, it is possible to calculate the number of toggles with respect to all the instructions of the program code by calculating the number of toggles with the previous instruction and the number of toggles with the next instruction according to the order of execution between the instructions.

도 11는 도 9에 도시된 단계 S930에 대한 다른 일 실시예 동작 흐름도를 나타낸 것으로, 액세스 패턴을 이용하여 토글 수를 계산하는 과정에 대한 것이다.FIG. 11 shows a flowchart of another embodiment of the operation of step S930 shown in FIG. 9, in which a process of calculating the number of toggles is performed using an access pattern.

도 11을 참조하면, 토글 수를 계산하는 단계(S930)는 프로그램 코드의 분석을 통해 프로그램 코드에 대한 액세스 패턴을 생성하고, 생성된 액세스 패턴을 이용하여 프로그램 코드의 액세스 흐름을 획득한다(S1110, S1120).Referring to FIG. 11, the step of calculating the number of toggles (S930) generates an access pattern for the program code through analysis of the program code, and acquires an access flow of the program code using the generated access pattern (S1110, S1120).

필요에 따라, 프로그램 코드의 액세스 패턴을 이용하여 명령어들 간의 연결 관계 및 연결 횟수를 포함하는 데이터 액세스 그래프를 생성할 수도 있으며, 이렇게 생성된 데이터 액세스 그래프를 이용하여 액세스 흐름을 획득할 수도 있다.If necessary, the access pattern of the program code may be used to generate a data access graph including the connection relationship between the commands and the number of connections, 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 again to FIG. 9, if the total number of toggles of the program code is calculated in step S930, it is determined whether to perform bit conversion for each data region of the instruction based on the calculated number of toggles, (S940, S950).

여기서, 명령어 각각의 데이터 영역에 해당하는 데이터는 프로그램 코드의 토글 수를 최소화시키기 위해 비트 변환 여부가 결정될 수 있으며, 비트 변환 여부는 명령어들 간의 토글 수와 명령어들 각각의 수행 횟수, 나아가 명령어들 간의 연결 또는 반복 횟수 등을 고려하여 결정될 수 있다.Here, the data corresponding to each data region of the instruction can be determined whether or not to perform bit conversion in order to minimize the number of toggles of the program code. Whether or not bit conversion is performed depends on the number of toggles between instructions, the number of times each instruction is executed, The number of times of connection or repetition, and the like.

명령어 각각에 대한 비트 변환 여부가 결정되고 비트 변환이 결정된 명령어에 대해 비트 변환이 수행되면, 비트 변환된 프로그램 코드를 플래시 메모리에 저장한다(S960).If bit conversion is determined for each of the instructions and bit conversion is performed for the instruction for which 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 the bit-converted program code is stored in the flash memory, flag bits of whether or not to perform bit conversion on the area are stored in a predetermined area of the flash memory or in a separate storage unit (S970).

여기서, 플래그 비트는 명령어 각각에 대해 저장되며, 플래그 비트의 비트 값은 비트 변환이 수행되는 명령어에 대해서는 '1'의 값을 가지며, 비트 변환이 수행되지 않은 명령어에 대해서는 '0'의 값을 가질 수 있다. 물론, 플래그 비트의 비트 값은 상황에 따라 그 값이 서로 바뀔 수도 있다.Here, the flag bit is stored for each of the instructions, and the bit value of the flag bit has a value of '1' for an instruction in which bit conversion is performed and a value of '0' . Of course, the bit value of the flag bit may be changed according to the situation.

상황에 따라, 플래그 비트를 저장하는 단계(S970)는 비트 변환 여부가 결정되는 단계 S940 다음 과정에서 수행될 수도 있고, 비트 변환이 수행되는 단계 S750 다음 과정에서 수행될 수도 있으며, 상기 과정들 중 어느 하나와 병렬적으로 수행될 수도 있다.
Depending on the situation, step S970 of storing the flag bit may be performed in the next step S940 in which the bit conversion is determined, or may be performed in the next step S750 in which bit conversion is performed. Or may be performed in parallel with one.

도 12는 도 9에 의해 저장된 프로그램 코드를 읽는 방법에 대한 일 실시예의 동작 흐름도를 나타낸 것이다.Figure 12 shows an operational flow diagram of an embodiment of a method of reading program code stored by Figure 9;

도 12를 참조하면, 플래시 메모리 저장된 프로그램 코드를 읽을 때, 플래시 메모리에 저장된 명령어 각각의 데이터 영역에 대한 플래그 비트의 비트 값을 확인한다(S1210).Referring to FIG. 12, when reading the program code stored in the flash memory, the bit value of the flag bit for each data area of the command stored in the flash memory is checked (S1210).

플래그 비트 값이 '0'인 명령어의 데이터 영역에 대해서는 비트 변환을 수행하지 않고, 플래그 비트 값이 '1'인 명령어의 데이터 영역에 대해서는 비트 변환을 수행함으로써, 플래시 메모리에 저장된 비트 변환된 프로그램 코드를 읽는다(S1220, S1230).
The bit conversion is not performed on the data area of the instruction whose flag bit value is '0', and bit conversion is performed on the data area of the instruction word whose flag bit value is '1' (S1220, S1230).

본 발명의 일 실시 예에 따른 플래시 메모리의 소모 전력 감소 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
The method for reducing power consumption of a flash memory according to an exemplary embodiment of the present invention may be implemented in the form of a program command that can be executed through various computer means and recorded in a computer readable medium. The computer-readable medium may include program instructions, data files, data structures, and the like, alone or in combination. The program instructions recorded on the medium may be those specially designed and constructed for the present invention or may be available to those skilled in the art of computer software. Examples of computer-readable media include magnetic media such as hard disks, floppy disks and magnetic tape; optical media such as CD-ROMs and DVDs; magnetic media 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 machine language code such as those produced by a compiler, as well as high-level language code that can be executed by a computer using an interpreter or the like. The hardware devices described above may be configured to operate as one or more software modules to perform the operations of the present invention, and vice versa.

이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. As described above, the present invention has been described with reference to particular embodiments, such as specific elements, and specific embodiments and drawings. However, it should be understood that the present invention is not limited to the above- And various modifications and changes may be made thereto by those skilled in the art to which the present invention pertains.

따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.Accordingly, the spirit of the present invention should not be construed as being limited to the embodiments described, and all of the equivalents or equivalents of the claims, as well as the following claims, belong to the scope of the present invention .

Claims (14)

프로그램 코드를 수신하는 단계;
상기 수신된 상기 프로그램 코드를 분석하여 상기 프로그램 코드에 포함된 명령어들의 수행 순서를 획득하는 단계;
상기 프로그램 코드의 분석을 통해 획득된 상기 명령어들의 수행 순서에 기초하여 상기 수행 순서에 따른 상기 명령어들 간의 비트 값의 토글(toggle) 수를 계산하는 단계;
상기 계산된 상기 토글 수에 기초하여 상기 프로그램 코드의 비트 값을 비트 변환하는 단계; 및
상기 비트 변환된 상기 프로그램 코드를 플래시 메모리에 저장하는 단계
를 포함하는 플래시 메모리의 소모 전력 감소 방법.
Receiving program code;
Analyzing the received program code to obtain an execution order of the commands included in the program code;
Calculating a number of toggles of the bit values between the instructions in accordance with the order of execution of the instructions obtained through analysis of 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 power consumption of the flash memory is reduced.
삭제delete 프로그램 코드를 수신하는 단계;
상기 수신된 상기 프로그램 코드를 분석하는 단계;
상기 프로그램 코드의 분석을 통해 상기 프로그램 코드에 대한 액세스 패턴(access pattern)을 생성하는 단계;
상기 생성된 상기 액세스 패턴을 이용하여 데이터 액세스 그래프를 생성하는 단계;
상기 생성된 상기 데이터 액세스 그래프를 이용하여 상기 프로그램 코드의 액세스 흐름을 획득하는 단계; 및
상기 획득된 상기 프로그램 코드의 액세스 흐름에 기초하여 토글수를 계산하는 단계;
상기 계산된 상기 토글 수에 기초하여 상기 프로그램 코드의 비트 값을 비트 변환하는 단계; 및
상기 비트 변환된 상기 프로그램 코드를 플래시 메모리에 저장하는 단계
를 포함하는 것을 특징으로 하는 플래시 메모리의 소모 전력 감소 방법.
Receiving program code;
Analyzing the received program code;
Generating an access pattern for the program code through analysis of the program code;
Generating a data access graph using the generated access pattern;
Obtaining an access flow of the program code using the generated data access graph; And
Calculating a number of tokens based on the obtained access flow of 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 power consumption of the flash memory is reduced.
제1항에 있어서,
상기 비트 변환하는 단계는
상기 명령어들의 수행 순서에 따른 토글 수가 최소가 되도록 명령어 각각의 데이터 영역에 대한 비트 변환 여부를 결정하는 단계; 및
상기 비트 변환이 결정된 명령어의 데이터 영역에 대해 비트 변환을 수행하는 단계
를 포함하는 것을 특징으로 하는 플래시 메모리의 소모 전력 감소 방법.
The method according to claim 1,
The step of converting the bits
Determining whether or not bit conversion is performed on the data area of each of the instructions so that the number of toggles according to the order of execution of the instructions is minimized; And
Performing bit conversion on the data area of the instruction in which the bit conversion is determined
Wherein the power consumption of the flash memory is reduced.
제4항에 있어서,
상기 저장하는 단계는
상기 비트 변환이 수행된 데이터 영역에 대한 플래그 비트를 저장하는 것을 특징으로 하는 플래시 메모리의 소모 전력 감소 방법.
5. The method of claim 4,
The storing step
And storing a flag bit for the data area in which the bit conversion is performed.
제1항에 있어서,
상기 비트 변환되어 상기 플래시 메모리에 저장된 상기 프로그램 코드를 비트 변환하여 읽는 단계
를 더 포함하는 것을 특징으로 하는 플래시 메모리의 소모 전력 감소 방법.
The method according to claim 1,
And performing bit conversion on the program code stored in the flash memory
The method further comprising the step of:
제6항에 있어서,
상기 읽는 단계는
상기 플래시 메모리에 저장된 상기 프로그램 코드 중 상기 비트 변환이 수행된 데이터 영역에 대해 미리 저장된 플래그 비트를 이용하여, 상기 플래시 메모리에 저장된 상기 프로그램 코드를 비트 변환하여 읽는 것을 특징으로 하는 플래시 메모리의 소모 전력 감소 방법.
The method according to claim 6,
The reading step
Wherein the program code stored in the flash memory is bit-converted and read using a flag bit previously stored in the data area in which the bit conversion is performed among the program codes stored in the flash memory. Way.
제1항, 제3항 내지 제7항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.
A computer-readable recording medium having recorded thereon a program for executing the method according to any one of claims 1 and 3 to 7.
프로그램 코드를 수신하는 수신부;
상기 수신된 상기 프로그램 코드를 분석하여 상기 프로그램 코드에 포함된 명령어들의 수행 순서를 획득하는 분석부;
상기 프로그램 코드의 분석을 통해 획득된 상기 명령어들의 수행 순서에 기초하여 상기 수행 순서에 따른 상기 명령어들 간의 비트 값의 토글(toggle) 수를 계산하는 연산부;
상기 계산된 상기 토글 수에 기초하여 상기 프로그램 코드의 비트 값을 비트 변환하는 변환부; 및
상기 비트 변환된 상기 프로그램 코드를 플래시 메모리에 저장하는 저장부
를 포함하는 플래시 메모리의 소모 전력 감소 장치.
A receiving unit for receiving the program code;
An analysis unit for analyzing the received program code and obtaining an order of execution of the commands included in the program code;
An operation unit for calculating a number of toggles of bit values between the instructions in accordance with the order of execution of the instructions obtained through analysis of the program code;
A converter for bit-converting a bit value of the program code based on the calculated number of toggles; And
And a storage unit for storing the bit-converted program code in a flash memory
Wherein the power consumption of the flash memory is reduced.
삭제delete 프로그램 코드를 수신하는 수신부;
상기 수신된 상기 프로그램 코드를 분석하는 분석부;
상기 프로그램 코드의 분석을 통해 상기 프로그램 코드에 대한 액세스 패턴(access pattern)을 생성하는 패턴 생성부;
상기 생성된 상기 액세스 패턴을 이용하여 데이터 액세스 그래프를 생성하고, 상기 생성된 상기 데이터 액세스 그래프를 이용하여 상기 프로그램 코드의 액세스 흐름(access flow)을 획득하는 흐름 획득부; 및
상기 획득된 상기 프로그램 코드의 액세스 흐름에 기초하여 토글수를 계산하는 토글 수 연산부
상기 계산된 상기 토글 수에 기초하여 상기 프로그램 코드의 비트 값을 비트 변환하는 변환부; 및
상기 비트 변환된 상기 프로그램 코드를 플래시 메모리에 저장하는 저장부
를 포함하는 플래시 메모리의 소모 전력 감소 장치.
A receiving unit for receiving the program code;
An analysis unit for analyzing the received program code;
A pattern generator for generating an access pattern for the program code through analysis of the program code;
A flow acquiring unit for generating a data access graph using the generated access pattern and acquiring an access flow of the program code using the generated data access graph; And
A toggle number calculating section for calculating the number of tokens based on the obtained access flow of the program code,
A converter for bit-converting a bit value of the program code based on the calculated number of toggles; And
And a storage unit for storing the bit-converted program code in a flash memory
Wherein the power consumption of the flash memory is reduced.
제9항에 있어서,
상기 변환부는
상기 명령어들의 수행 순서에 따른 토글 수가 최소가 되도록 명령어 각각의 데이터 영역에 대한 비트 변환 여부를 결정하는 결정부; 및
상기 비트 변환이 결정된 명령어의 데이터 영역에 대해 비트 변환을 수행하는 변환 수행부
를 포함하는 것을 특징으로 하는 플래시 메모리의 소모 전력 감소 장치.
10. The method of claim 9,
The conversion unit
A determination unit for determining whether or not to perform bit conversion on the data area of each of the instructions so that the number of toggles according to the order of execution of the instructions is minimized; And
A conversion performing unit for performing bit conversion on a data area of an instruction word for which bit conversion is determined,
Wherein the power consumption of the flash memory is reduced.
제12항에 있어서,
상기 저장부는
상기 비트 변환이 수행된 데이터 영역에 대한 플래그 비트를 미리 결정된 저장 수단에 저장하는 것을 특징으로 하는 플래시 메모리의 소모 전력 감소 장치.
13. The method of claim 12,
The storage unit
And stores flag bits for the bit-converted data area in a predetermined storage means.
제9항에 있어서,
상기 비트 변환되어 상기 플래시 메모리에 저장된 상기 프로그램 코드 중 상기 비트 변환이 수행된 데이터 영역에 대해 미리 저장된 플래그 비트를 이용하여, 상기 플래시 메모리에 저장된 상기 프로그램 코드를 비트 변환하여 읽는 읽기부
를 더 포함하는 것을 특징으로 하는 플래시 메모리의 소모 전력 감소 장치.
10. The method of claim 9,
A read unit for bit-converting and reading the program code stored in the flash memory by using flag bits previously stored in the data area in which the bit conversion is performed among the program codes stored in the flash memory,
Wherein the power consumption of the flash memory is reduced.
KR1020120144540A 2012-12-12 2012-12-12 Method for reducing power consumption of flash memory and apparatus thereof KR101419710B1 (en)

Priority Applications (2)

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

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
KR20140076220A KR20140076220A (en) 2014-06-20
KR101419710B1 true KR101419710B1 (en) 2014-08-13

Family

ID=50934665

Family Applications (1)

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

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
WO2014092465A1 (en) 2014-06-19

Similar Documents

Publication Publication Date Title
KR101731742B1 (en) Combined branch target and predicate prediction
US9898266B2 (en) Loop vectorization methods and apparatus
KR100974779B1 (en) Nand system with a data write frequency greater than a command-and-address-load frequency
CN104115231B (en) For determining the methods, devices and systems of the access to memory array
JP6209051B2 (en) Memory system including nonvolatile memory and controller, and program method for programming data in nonvolatile memory
KR102227939B1 (en) Methods and apparatuses for embedding word considering contextual and morphosyntactic information
TW200811870A (en) Methods for programming and reading NAND flash memory device and page buffer performing the same
EP2963547A1 (en) Compiling device, compiling method, and storage medium storing compiler program
CN101859601A (en) Method to the nonvolatile memory device programming
KR20170041510A (en) Semiconductor memory device and operating method thereof
KR20180004606A (en) Semiconductor memory device and operating method thereof
KR101044466B1 (en) Method of programming a non volatile memory device
CN112397058A (en) Decoding method, training method, and speech recognition apparatus
JP4412905B2 (en) Low power operation control device and program optimization device
KR101379883B1 (en) Method for reducing power consumption of flash memory and apparatus thereof
US9158545B2 (en) Looking ahead bytecode stream to generate and update prediction information in branch target buffer for branching from the end of preceding bytecode handler to the beginning of current bytecode handler
KR101419710B1 (en) Method for reducing power consumption of flash memory and apparatus thereof
JP2007220099A (en) Branch target buffer for storing branch prediction information, and branch prediction circuit including same
US7975128B2 (en) Apparatuses and programs for implementing a forwarding function
KR101561270B1 (en) Flash memory device and program and channel pre-charge methods thereof
US20130283023A1 (en) Bimodal Compare Predictor Encoded In Each Compare Instruction
JP2008090995A (en) Flash memory device and its erasing method
US20120089823A1 (en) Processing apparatus, compiling apparatus, and dynamic conditional branch processing method
KR20200076403A (en) Semiconductor memory device, controller, storage device having the same, and operating method thereof
Palkovic et al. Systematic preprocessing of data dependent constructs for embedded systems

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170627

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180702

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190701

Year of fee payment: 6