KR101379883B1 - 플래시 메모리의 소모 전력 감소 방법 및 그 장치 - Google Patents

플래시 메모리의 소모 전력 감소 방법 및 그 장치 Download PDF

Info

Publication number
KR101379883B1
KR101379883B1 KR1020120124865A KR20120124865A KR101379883B1 KR 101379883 B1 KR101379883 B1 KR 101379883B1 KR 1020120124865 A KR1020120124865 A KR 1020120124865A KR 20120124865 A KR20120124865 A KR 20120124865A KR 101379883 B1 KR101379883 B1 KR 101379883B1
Authority
KR
South Korea
Prior art keywords
bit
binary data
flash memory
value
converted
Prior art date
Application number
KR1020120124865A
Other languages
English (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 KR1020120124865A priority Critical patent/KR101379883B1/ko
Priority to PCT/KR2013/000427 priority patent/WO2014073747A1/ko
Application granted granted Critical
Publication of KR101379883B1 publication Critical patent/KR101379883B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor

Landscapes

  • Read Only Memory (AREA)

Abstract

플래시 메모리의 소모 전력 감소 방법 및 그 장치가 개시된다. 본 발명의 일 실시예에 따른 플래시 메모리의 소모 전력 감소 방법은 외부로부터 바이너리 데이터를 수신하는 단계; 플래시 메모리의 제1 방향으로 미리 설정된 제1 세그먼트 단위 각각에서 상기 바이너리 데이터의 제1 값 개수가 제2 값 개수 이하가 되도록 비트 변환을 수행하는 단계; 상기 플래시 메모리의 제2 방향으로 미리 설정된 제2 세그먼트 단위 각각에서 상기 바이너리 데이터의 상기 제1 값 개수가 상기 제1 값 개수 이하가 되도록 비트 변환을 수행하는 단계; 상기 제1 방향으로 비트 변환된 상기 바이너리 데이터의 상기 제2 값에 대한 전체 개수와 상기 제2 방향으로 비트 변환된 상기 바이너리 데이터의 상기 제2 값에 대한 전체 개수를 비교하는 단계; 및 상기 전체 개수가 많은 방향으로 상기 바이너리 데이터에 대해 비트 변환된 변환 바이너리 데이터를 상기 플래시 메모리에 저장하는 단계를 포함하고, 상기 플래시 메모리에 저장된 상기 변환 바이너리 데이터를 상기 전체 개수가 많은 방향의 세그먼트 단위로 비트 변환하여 읽는 단계를 더 포함함으로써, 플래시 메모리를 읽을 때의 소모 전력을 감소시킬 수 있다.

Description

플래시 메모리의 소모 전력 감소 방법 및 그 장치 {Method for reducing power consumption of flash memory and apparatus thereof}
본 발명은 플래시 메모리의 소모 전력 감소에 대한 것으로, 상세하게는 플래시 메모리에 저장된 데이터를 읽을 때 동작 전류가 증가하는 값(예를 들어, '0')의 비트 개수가 적도록 바이너리 데이터를 비트 변환하여 플래시 메모리에 저장함으로써, 플래시 메모리를 읽을 때의 소모 전력을 감소시킬 수 있는 플래시 메모리의 소모 전력 감소 방법 및 그 장치에 관한 것이다.
일반적으로, 플래시 메모리(Flash memory)는, 일종의 비휘발성 기억 장치로서 전기적인 처리에 의해 기억 내용을 소거할 수 있는 점에서는 전기적 소거 및 프로그램 가능 읽기 전용 기억 장치(EEPROM)와 유사하지만, EEPROM은 한 번에 1바이트씩 소거할 수 있는 데 비해 플래시 메모리는 블록 단위로 소거해야 한다는 점에서 상이하다. 이 특성 때문에 플래시 메모리는 흔히 휴대형 컴퓨터의 하드 디스크 대용 또는 보충용으로 사용되며, 가장 흔히 사용되는 예는 휴대형 컴퓨터의 PCMCIA 슬롯에 삽입하여 사용할 수 있는 PC 카드의 기억 장치로 사용되는 것이다.
도 1은 일반적인 플래시 메모리의 등가 회로도로서, 게이트 부분을 2개의 선으로 표시한 부분이 플래시 메모리 셀이며, 그 동작 특성은 도 2에 도시된 바와 같다. 도 2에 나타난 바와 같이, 프로그램되지 않은 셀이나 지워진 셀은 Vth 값이 약 2.5[V]이다. 이러한 특성을 고려하여 도 1에 도시된 회로의 동작을 설명하면 아래와 같다.
먼저, 비트 라인(BIT LINE)의 값이 PMOS 트랜지스터(P0)를 이용하여 1로 홀드(hold)된 후, 왼쪽의 복수개의 NMOS 트랜지스터(NL00, NL01, ..., NLn0, NLn1) 중 하나의 NMOS 트랜지스터가 선택되어 게이트 전압(Vgs)이 인가된다.
여기서, 게이트에 인가되는 전압은 약 5.0V가 된다. 이 때, 선택된 셀이 프로그램되어 있으면, 전류(Irds)가 거의 흐르지 않고(그래프 중 오른쪽 라인), 선택된 셀이 지워져 있을 경우에는 약 60[㎂]의 전류(Irds)가 흐르게 된다(그래프 중 왼쪽 라인). 이와 같은 동작을 하게 될 때, 데이터 값이 0으로 지워졌을 경우에 보다 많은 동작 전류가 흐르는 것을 알 수 있다. 즉, 게이트 단자로 입력되는 동작 전류(Irds)는, 프로그램된 셀의 경우 게이트 전압(Vgs)과 Vth 간의 전압 차가 없음으로 인하여 약 0[㎂]가 되지만, 지워지는 셀의 경우 게이트 전압(Vgs)과 Vth 간의 전압 차로 인하여 약 60[㎂]가 되는 것이다.
상술한 플래시 메모리에 있어서의 동작 특성으로 인하여, 0으로 지워지는 동작이 많을 경우 동작 전류가 증가되므로, 이에 따라 동작 전류를 생성하기 위하여 전체적인 전력 소모가 커지는 문제점이 있다.
따라서, 플래시 메모리의 소모 전력을 줄일 수 있는 방법의 필요성이 대두된다. 이 같은 요청에 따라 개발된 선행기술로서 한국등록특허 제10-0464951호 "플래시 메모리 소모 전력 감소 장치 및 방법"이 제안되었다.
상기 선행기술은 플래시 메모리에 저장된 데이터를 선택적으로 반전하여 전력 소모가 적은 방향으로 데이터를 저장하는 구성에 관한 것이다. 다만 상기 선행기술은 작은 용량의 플래시 메모리를 전제로 개발된 것이므로 최근의 기술 발전에 따라 대용량화되고 복잡화된 플래시 메모리 장치에 적합한 새로운 데이터 재구성 방법의 필요성이 새롭게 대두되고 있는 시점이다.
한국등록특허 제0464951호 (등록일 2004.12.24)
본 발명은 상기와 같은 종래 기술의 문제점을 해결하고자 도출된 것으로서, 플래시 메모리에 저장된 바이너리 데이터를 읽을 때 소모 전력을 줄일 수 있는 플래시 메모리의 소모 전력 감소 방법 및 그 장치를 제공하는 것을 목적으로 한다.
구체적으로, 본 발명은 바이너리 데이터를 플래시 메모리의 가로축 방향 세그먼트와 세로축 방향 세그먼트로 각각 분할하고, 분할된 각각의 세그먼트에 대해 비트 값 '0'의 개수가 '1'의 개수 이하가 되도록 비트 변환한 후 두 방향 중 비트 변환된 '0'의 전체 개수가 적은 방향으로 비트 변환된 바이너리 데이터를 플래시 메모리에 저장함으로써, 플래시 메모리에 저장된 데이터를 읽을 때 센스 앰프의 소모 전류가 많은 '0'의 개수가 적어지고, 이를 통해 센스 앰프의 전체 소모 전류를 최소화할 수 있다.
추가적으로, 본 발명은 바이너리 데이터를 분석하여 일정 횟수 이상 반복 수행되는 데이터 영역(데이터가 빈번하게 억세스되는 데이터 영역)을 hot-spot으로 설정하여 해당 데이터 영역에 포함된 데이터의 비트 값을 모두 '1'로 변환하여 플래시 메모리에 저장하고, hot-spot의 원본 데이터를 별도의 저장 수단에 저장한 후 플래시 메모리에 저장된 바이너리 데이터를 읽을 때 hot-spot에 대한 데이터는 별도의 저장 수단에서 읽음으로써, 플래시 메모리에 저장된 데이터를 읽을 때 센스 앰프의 전체 소모 전류를 줄일 수 있다.
또한, 본 발명은 플래시 메모리를 읽을 때 센스 앰프의 소모 전력을 감소시킴으로써, 플래시 메모리가 탑재된 기기의 전체 소모 전력을 줄일 수 있는 플래시 메모리의 소모 전력 감소 방법 및 그 장치를 제공하는 것을 목적으로 한다.
상기와 같은 목적을 달성하기 위하여, 본 발명의 일 실시 예에 따른 플래시 메모리의 소모 전력 감소 방법은 외부로부터 바이너리 데이터를 수신하는 단계; 플래시 메모리의 제1 방향으로 미리 설정된 제1 세그먼트 단위 각각에서 상기 바이너리 데이터의 제1 값 개수가 제2 값 개수 이하가 되도록 비트 변환을 수행하는 단계; 상기 플래시 메모리의 제2 방향으로 미리 설정된 제2 세그먼트 단위 각각에서 상기 바이너리 데이터의 상기 제1 값 개수가 상기 제1 값 개수 이하가 되도록 비트 변환을 수행하는 단계; 상기 제1 방향으로 비트 변환된 상기 바이너리 데이터의 상기 제2 값에 대한 전체 개수와 상기 제2 방향으로 비트 변환된 상기 바이너리 데이터의 상기 제2 값에 대한 전체 개수를 비교하는 단계; 및 상기 전체 개수가 많은 방향으로 상기 바이너리 데이터에 대해 비트 변환된 변환 바이너리 데이터를 상기 플래시 메모리에 저장하는 단계를 포함한다.
나아가, 본 발명에 따른 방법은 상기 플래시 메모리에 저장된 상기 변환 바이너리 데이터를 상기 전체 개수가 많은 방향의 세그먼트 단위로 비트 변환하여 읽는 단계를 더 포함할 수 있다.
상기 저장하는 단계는 상기 전체 개수가 많은 방향의 세그먼트 각각에 대하여 비트 변환 여부에 대한 플래그 비트를 저장하고, 상기 읽는 단계는 상기 저장된 상기 플래그 비트의 값이 비트 변환 값인 경우 해당 세그먼트를 비트 변환하여 읽을 수 있다.
상기 비트 변환을 수행하는 단계는 해당 세그먼트 단위를 미리 결정된 복수의 세부 세그먼트들로 분할하고, 상기 복수의 세부 세그먼트들 각각에서 상기 바이너리 데이터의 상기 제1 값 개수가 상기 제2 값 개수 이하가 되도록 비트 변환을 수행할 수 있다.
본 발명의 다른 일 실시 예에 따른 플래시 메모리의 소모 전력 감소 방법은 외부로부터 바이너리 데이터를 수신하는 단계; 상기 수신된 상기 바이너리 데이터를 분석하여 미리 결정된 횟수 이상 반복되는 데이터 영역을 검출하는 단계; 상기 검출된 상기 데이터 영역에 해당하는 데이터의 모든 비트 값을 미리 결정된 제1 비트 값으로 변환하는 단계; 및 상기 제1 비트 값으로 변환되기 전의 상기 데이터 영역에 해당하는 데이터를 미리 결정된 저장 수단에 저장하고, 상기 제1 비트 값으로 변환된 상기 데이터 영역을 포함하는 상기 바이너리 데이터를 플래시 메모리에 저장하는 단계를 포함한다.
나아가, 본 발명에 따른 방법은 상기 바이너리 데이터를 미리 결정된 세그먼트 단위로 분할하는 단계; 및 상기 데이터 영역을 제외한 상기 분할된 상기 세그먼트 단위 각각에서 상기 바이너리 데이터의 제1 값 개수가 제2 값 개수 이하가 되도록 비트 변환을 수행하는 단계를 더 포함하고, 상기 저장하는 단계는 상기 비트 변환된 상기 바이너리 데이터를 상기 플래시 메모리에 저장할 수 있다.
더 나아가, 본 발명에 따른 방법은 상기 세그먼트 각각에 대하여 미리 저장된 비트 변환 여부에 대한 플래그 비트의 값을 확인하고, 상기 플래그 비트의 값이 비트 변환 값인 경우 해당 세그먼트를 비트 변환하여 읽는 단계를 더 포함할 수 있다.
더 나아가, 본 발명에 따른 방법은 상기 플래시 메모리에 저장된 상기 바이너리 데이터를 읽는 단계를 더 포함하고, 상기 데이터 영역에 해당하는 데이터는 상기 저장 수단으로부터 읽을 수 있다.
본 발명의 일 실시 예에 따른 플래시 메모리의 소모 전력 감소 장치는 외부로부터 바이너리 데이터를 수신하는 수신부; 플래시 메모리의 제1 방향으로 미리 설정된 제1 세그먼트 단위 각각에서 상기 바이너리 데이터의 제1 값 개수가 제2 값 개수 이하가 되도록 비트 변환을 수행하는 제1 변환부; 상기 플래시 메모리의 제2 방향으로 미리 설정된 제2 세그먼트 단위 각각에서 상기 바이너리 데이터의 상기 제1 값 개수가 상기 제1 값 개수 이하가 되도록 비트 변환을 수행하는 제2 변환부; 상기 제1 방향으로 비트 변환된 상기 바이너리 데이터의 상기 제2 값에 대한 전체 개수와 상기 제2 방향으로 비트 변환된 상기 바이너리 데이터의 상기 제2 값에 대한 전체 개수를 비교하는 비교부; 및 상기 전체 개수가 많은 방향으로 상기 바이너리 데이터에 대해 비트 변환된 변환 바이너리 데이터를 상기 플래시 메모리에 저장하는 저장부를 포함한다.
본 발명의 다른 일 실시 예에 따른 플래시 메모리의 소모 전력 감소 장치는 외부로부터 바이너리 데이터를 수신하는 수신부; 상기 수신된 상기 바이너리 데이터를 분석하여 미리 결정된 횟수 이상 반복되는 데이터 영역을 검출하는 검출부; 상기 검출된 상기 데이터 영역에 해당하는 데이터의 모든 비트 값을 미리 결정된 제1 비트 값으로 변환하는 제1 변환부; 및 상기 제1 비트 값으로 변환되기 전의 상기 데이터 영역에 해당하는 데이터를 미리 결정된 저장 수단에 저장하고, 상기 제1 비트 값으로 변환된 상기 데이터 영역을 포함하는 상기 바이너리 데이터를 플래시 메모리에 저장하는 저장부를 포함한다.
본 발명에 따르면, 바이너리 데이터를 플래시 메모리의 가로축 방향 세그먼트와 세로축 방향 세그먼트로 각각 분할하고, 분할된 각각의 세그먼트에 대해 비트 값 '0'의 개수가 '1'의 개수 이하가 되도록 비트 변환한 후 두 방향 중 비트 변환된 '0'의 전체 개수가 적은 방향으로 비트 변환된 바이너리 데이터를 플래시 메모리에 저장함으로써, 플래시 메모리에 저장된 데이터를 읽을 때 센스 앰프의 소모 전류가 많은 '0'의 개수가 적어지고, 이를 통해 센스 앰프의 전체 소모 전류를 최소화할 수 있다.
나아가, 본 발명은 바이너리 데이터를 분석하여 일정 횟수 이상 반복 수행되는 데이터 영역을 hot-spot으로 설정하여 해당 데이터 영역에 포함된 데이터의 비트 값을 모두 '1'로 변환하여 플래시 메모리에 저장하고, hot-spot의 원본 데이터를 별도의 저장 수단에 저장한 후 플래시 메모리 저장된 바이너리 데이터를 읽을 때 hot spot에 대한 데이터는 별도의 저장 수단에서 읽음으로써, 플래시 메모리에 저장된 데이터를 읽을 때 센스 앰프의 전체 소모 전류를 줄일 수 있다.
이런, 본 발명은 플래시 메모리를 읽을 때 센스 앰프의 소모 전력을 감소시킬 수 있기 때문에 플래시 메모리가 탑재된 기기의 전체 소모 전력을 줄일 수 있다.
또한, 본 발명은 바이너리 데이터(또는 코드)를 변환하는 기법과 인코딩/디코딩 로직 그리고 추가적인 플래그 정보를 저장하기 위한 저장 영역을 통하여 소모 전력을 줄일 수 있기 때문에 기존의 센스 앰프만을 가지고도 원하는 목적을 달성할 수 있다.
도 1은 일반적인 플래시 메모리의 등가 회로도를 나타낸 것이다.
도 2는 일반적인 플래시 메모리에 대한 일 실시예의 동작 특성의 그래프를 나타낸 것이다.
도 3은 본 발명의 일 실시예에 따른 플래시 메모리의 소모 전력 감소 장치에 대한 구성을 나타낸 것이다.
도 4는 플래시 메모리의 제1 방향으로 세그먼트하여 비트 변환을 수행하는 일 예시도를 나타낸 것이다.
도 5는 플래시 메모리의 제2 방향으로 세그먼트하여 비트 변환을 수행하는 일 예시도를 나타낸 것이다.
도 6은 플래시 메모리의 제1 방향으로 복수의 세부 세그먼트들을 분할하여 비트 변환을 수행하는 일 예시도를 나타낸 것이다.
도 7은 본 발명의 다른 일 실시예에 따른 플래시 메모리의 소모 전력 감소 장치에 대한 구성을 나타낸 것이다.
도 8은 바이너리 데이터에 대해 설정된 hot-spot의 데이터를 비트 값 '1'로 모두 변환하는 일 예시도를 나타낸 것이다.
도 9는 본 발명의 일 실시예에 따른 플래시 메모리의 소모 전력 감소 방법에 대한 동작 흐름도를 나타낸 것이다.
도 10은 도 9에 의해 저장된 바이너리 데이터를 읽는 방법에 대한 일 실시예의 동작 흐름도를 나타낸 것이다.
도 11은 본 발명의 다른 일 실시예에 따른 플래시 메모리의 소모 전력 감소 방법에 대한 동작 흐름도를 나타낸 것이다.
도 12는 도 11에 도시된 단계 S1160에 대한 일 실시예 동작 흐름도를 나타낸 것이다.
도 13은 도 11에 의해 저장된 바이너리 데이터를 읽는 방법에 대한 일 실시예의 동작 흐름도를 나타낸 것이다.
상기 목적 외에 본 발명의 다른 목적 및 특징들은 첨부 도면을 참조한 실시 예에 대한 설명을 통하여 명백히 드러나게 될 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
본 발명의 바람직한 실시예를 첨부된 도면들을 참조하여 상세히 설명한다. 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.
그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
이하에서는, 본 발명의 일 실시 예에 따른 플래시 메모리의 소모 전력 감소 방법 및 그 장치를 첨부된 도 3 내지 도 13을 참조하여 상세히 설명한다.
도 3은 본 발명의 일 실시예에 따른 플래시 메모리의 소모 전력 감소 장치에 대한 구성을 나타낸 것이다.
도 3을 참조하면, 본 발명에 따른 장치는 수신부(310), 제1 변환부(320), 제2 변환부(330), 비교부(340), 저장부(350), 플래시 메모리(360), 제3 변환부(370) 및 읽기부(380)를 포함한다.
수신부(310)는 외부로부터 바이너리 데이터 예를 들어, 소스 코드가 컴파일(compile) 되거나 어셈블(assemble)되어 생성된 바이너리 데이터를 수신한다.
제1 변환부(320)는 플래시 메모리(360)의 제1 방향 예를 들어, address space 방향으로 수신부(310)로 수신된 바이너리 데이터를 미리 설정된 제1 세그먼트 단위로 분할하고, 분할된 제1 세그먼트 단위 각각에서 바이너리 데이터의 제1 값 예를 들어, 비트 값 '0'의 개수가 제2 값 예를 들어, 비트 값 '1'의 개수 이하가 되도록 비트 변환을 수행한다.
여기서, 제1 변환부(320)는 '0'의 개수가 '1'의 개수 이하인 제1 세그먼트에 대해서는 비트 변환을 수행하지 않는다.
이하, 발명에 대한 설명의 편의를 위하여 제1 값은 비트 값 '0', 제2 값은 비트 값 '1'로 정의한다. 물론, 플래시 메모리에 따라 비트 값 '1'을 읽을 때 센스 앰프의 소모 전류가 증가할 수도 있으며, 이런 플래시 메모리에서는 제1 값이 비트 값 '1'이 되고, 제2 값이 비트 값 '0'이 될 수 있다. 본 발명에서는 플래시 메모리에 저장된 비트 값 '0'을 읽을 때 센스 앰프의 소모 전류가 증가하는 경우를 예로 설명한다.
제2 변환부(330)는 플래시 메모리(360)의 제2방향 예를 들어, word line 방향으로 수신부로 수신된 바이너리 데이터를 미리 설정된 제2 세그먼트 단위로 분할하고, 분할된 제2 세그먼트 단위 각각에서 바이너리 데이터의 비트 값 '0'의 개수가 비트 값 '1'의 개수 이하가 되도록 비트 변환을 수행한다.
여기서, 제2 변환부(330)는 '0'의 개수가 '1'의 개수 이하인 제2 세그먼트에 대해서는 비트 변환을 수행하지 않는다.
비교부(340)는 제1 변환부(320)에서 제1 세그먼트 각각에 대해 비트 변환된 바이너리 데이터의 비트 값 '1'의 전체 개수와 제2 변환부(330)에서 제2 세그먼트 각각에 대해 비트 변환된 바이너리 데이터의 비트 값 '1'의 전체 개수를 비교한다.
여기서, 모든 세그먼트(제1 세그먼트, 제2 세그먼트)에 대해 비트 변환된 바이너리 데이터는 비트 변환된 세그먼트와 비트 변환되지 않은 세그먼트를 모두 포함하는 것을 의미하는 것으로, '1'의 전체 개수는 비트 변환된 세그먼트와 비트 변환되지 않은 세그먼트 모두에 포함된 비트 값 '1'의 개수를 말한다.
물론, 비교부(340)는 비트 값 '1'의 전체 개수를 비교하는 것에 한정하지 않으며, 비트 값 '0'의 전체 개수를 비교할 수도 있다.
저장부(350)는 비교부(340)에 의한 비교 결과를 수신하고, '1'의 전체 개수가 많은 방향으로 비트 변환된 바이너리 데이터를 플래시 메모리(360)에 저장한다.
예를 들어, 저장부(350)는 제1 변환부(320)에 의해 비트 변환된 바이너리 데이터의 비트 값 '1'의 전체 개수가 제2 변환부(330)에 의해 비트 변환된 바이너리 데이터의 비트 값 '1'의 전체 개수보다 많은 경우, 제1 변환부(320)에 의해 비트 변환된 바이너리 데이터를 플래시 메모리(360)에 저장한다.
이 때, 저장부(350)는 플래시 메모리(360)에 비트 변환된 바이너리 데이터를 저장할 때, 해당 세그먼트 각각에 대하여 비트 변환 여부에 대한 플래그 비트를 저장할 수 있으며, 플래그 비트는 플래시 메모리(360)의 미리 설정된 영역에 저장될 수도 있지만 이에 한정하지 않으며 플래시 메모리(360)가 아닌 별도의 저장 수단에 저장될 수도 있다.
또한, 저장부(350)는 플래시 메모리(360)에 저장된 바이너리 데이터의 세그먼트 단위와 세그먼트 방향에 대한 정보를 플래시 메모리(360)의 일정 영역에 저장할 수도 있고, 별도의 저장 수단에 저장할 수 있으며, 이에 대한 정보는 제3 변환부(370)에서 플래시 메모리(360)에 저장된 데이터를 비트 변환할 때 사용될 수 있다.
이하, 해당 세그먼트가 비트 변환된 경우 플래그 비트의 비트 값이 '1', 해당 세그먼트가 비트 변환되지 않은 경우 플래그 비트의 비트 값이 '0'인 것으로 가정하여 설명한다.
제3 변환부(370)는 플래시 메모리(360)에 저장된 바이너리 데이터를 읽기 위하여, 미리 결정된 세그먼트 단위로 플래시 메모리(360)에 저장된 바이너리 데이터를 비트 변환한다. 즉, 제3 변환부(370)는 센스 앰프를 통하여 플래시 메모리(360)에 저장된 바이너리 데이터를 수신하고, 이를 세그먼트 각각에 대하여 비트 변환을 수행한다.
이 때, 제3 변환부(370)는 플래시 메모리(360)에 바이너리 데이터를 저장할 때의 세그먼트 단위와 세그먼트 방향에 기초하여 비트 변환을 수행할 수 있다.
나아가, 제3 변환부(370)는 세그먼트 각각에 대해 저장된 플래그 비트의 비트 값에 기초하여 세그먼트 각각에 대하여 비트 변환을 수행하거나 비트 변환을 수행하지 않을 수 있다. 즉, 제3 변환부(370)는 해당 세그먼트의 플래그 비트 값이 '1'인 경우 해당 세그먼트에 대한 바이너리 데이터에 대해 값이 '1'인 비트를 값이 '0'인 비트로 전환하고, 값이 '0'인 비트를 값이 '1'인 비트로 전환한다.
읽기부(380)는 제3 변환부(370)에 의해 비트 변환된 바이너리 데이터를 읽는다.
즉, 읽기부(380)는 비트 변환되어 플래시 메모리(360)에 저장된 바이너리 데이터를 제3 변환부(370)를 통해 다시 비트 변환하여 수신부(310)로 수신된 바이너리 데이터를 복원하여 읽는다.
이런 본 발명에 따른 플래시 메모리의 소모 전력 감소 장치에 대해 도 4 내지 도 6을 예를 들어 설명한다.
도 4는 플래시 메모리의 제1 방향으로 세그먼트하여 비트 변환을 수행하는 일 예시도를 나타낸 것으로, 제1 변환부(320)에 의해 비트 변환하는 경우를 나타낸 것이다.
도 4에서 알 수 있듯이, 제1 변환부(320)는 플래시 메모리의 address space 방향으로 바이너리 데이터를 세그먼트 단위로 분할하고, 분할된 세그먼트 각각에 대하여 '1'의 개수와 '0'의 개수를 파악하여 '1'의 개수가 '0'의 개수보다 적거나 같은 세그먼트에 대해서는 비트 값 '1'과 비트 값 '0'을 전환하는 비트 변환(local inversion)을 수행하고, '1'의 개수가 '0'의 개수보다 많은 세그먼트에 대해서는 비트 변환을 수행하지 않는다.
예컨대, 첫 번째 세그먼트(410)의 경우 세그먼트에 포함된 비트 값 '1'의 개수가 7개 이고, 비트 값 '0'의 개수가 9개 이기 때문에 비트 변환을 수행한다. 마찬가지로, 두 번째 세그먼트와 네 번째 세그먼트 또한 비트 값 '0'의 개수가 '1'의 개수보다 많기 때문에 비트 변환을 수행하고, 세 번째 세그먼트와 다섯 번째 세그먼트는 비트 값 '0'의 개수가 '1'의 개수보다 적기 때문에 비트 변환을 수행하지 않는다.
이런 세그먼트 각각의 비트 변환 여부에 대한 값은 미리 결정된 저장 공간에 플래그 비트(420)로 저장되며, 비트 변환이 수행된 세그먼트에 대해서는 플래그 비트 값 '1'이 저장되고, 비트 변환이 수행되지 않은 세그먼트에 대해서는 플래그 비트 값 '0'이 저장된다.
도 4의 비트 변환 과정에 의해 바이너리 데이터에 포함된 '1'의 개수가 36개에서 48개로 늘어나고, '0'의 개수가 44개에서 32개로 줄어든 것을 알 수 있다.
도 5는 플래시 메모리의 제2 방향으로 세그먼트하여 비트 변환을 수행하는 일 예시도를 나타낸 것으로, 제2 변환부(330)에 의해 비트 변환하는 경우를 나타낸 것이다.
도 5에서 알 수 있듯이, 제2 변환부(330)는 플래시 메모리의 word line 방향으로 바이너리 데이터를 세그먼트 단위로 분할하고, 분할된 세그먼트 각각에 대하여 '1'의 개수와 '0'의 개수를 파악하여 '1'의 개수가 '0'의 개수보다 적거나 같은 세그먼트에 대해서는 비트 값 '1'과 비트 값 '0'을 전환하는 비트 변환(local inversion)을 수행하고, '1'의 개수가 '0'의 개수보다 많은 세그먼트에 대해서는 비트 변환을 수행하지 않는다.
예컨대, 첫 번째 세그먼트(510)의 경우 세그먼트에 포함된 비트 값 '1'의 개수가 9개 이고, 비트 값 '0'의 개수가 11개 이기 때문에 비트 변환을 수행한다. 마찬가지로, 세 번째 세그먼트 또한 비트 값 '0'의 개수가 '1'의 개수보다 많기 때문에 비트 변환을 수행하고, 두 번째 세그먼트와 네 번째 세그먼트는 비트 값 '0'의 개수가 '1'의 개수보다 적기 때문에 비트 변환을 수행하지 않는다.
이런 세그먼트 각각의 비트 변환 여부에 대한 값은 미리 결정된 저장 공간에 플래그 비트(520)로 저장되며, 비트 변환이 수행된 세그먼트에 대해서는 플래그 비트 값 '1'이 저장되고, 비트 변환이 수행되지 않은 세그먼트에 대해서는 플래그 비트 값 '0'이 저장된다.
도 5의 비트 변환 과정에 의해 바이너리 데이터에 포함된 '1'의 개수가 36개에서 52개로 늘어나고, '0'의 개수가 44개에서 28개로 줄어든 것을 알 수 있다.
이와 같이, 제1 변환부(320)에 의해 비트 변환된 바이너리 데이터의 '1'의 개수가 48개 이고, 제2 변환부(330)에 의해 비트 변환된 바이너리 데이터의 '1'의 개수가 52개 이기 때문에 저장부(350)는 제2 변환부(330)에 의해 비트 변환된 바이너리 데이터를 플래시 메모리에 저장하게 된다. 물론, 제2 변환부(330)에 의해 비트 변환된 바이너리 데이터의 세그먼트 단위와 방향에 대한 정보 또한 저장되어야 하며, 제3 변환부(370)는 이에 대한 정보에 기초하여 플래시 메모리에 저장된 데이터를 세그먼트 단위로 비트 변환할 수 있다.
도 6은 플래시 메모리의 제1 방향으로 복수의 세부 세그먼트들을 분할하여 비트 변환을 수행하는 일 예시도를 나타낸 것으로, 도 4에 도시된 세그먼트 단위를 복수의 세부 세그먼트들로 분할한 경우를 나타낸 것이다.
도 6에서 알 수 있듯이, 세그먼트 각각을 4개의 세부 세그먼트들로 분할되어 있으며, 세부 세그먼트들 각각에 대한 플래그 비트(620)를 가지고 있다. 즉, 도 6은 가로 방향과 세로 방향의 일정 크기를 하나의 세그먼트 단위로 분할한 것으로 볼 수 있으며, 분할된 각각의 세그먼트인 세부 세그먼트 각각에 대하여 비트 변환 여부를 판단하고, 비트 변환 판단을 통하여 비트 변환을 수행할 수 있다. 물론, 비트 변환된 세부 세그먼트에 대해서는 플래그 비트 값이 '1'로 결정되고, 비트 변환되지 않은 세부 세그먼트에 대해서는 플래그 비트 값이 '0'으로 결정된다.
예컨대, 첫 번째 세부 세그먼트(611), 두 번째 세부 세그먼트(612), 세 번째 세부 세그먼트(613)의 경우에는 '0'의 개수가 '1'의 개수와 같거나 많기 때문에 비트 변환을 수행하고, 네 번째 세부 세그먼트(613)의 경우에는 '0'의 개수가 '1'의 개수보다 적기 때문에 비트 변환을 하지 않는다. 이로 인해 해당 세부 세그먼트들에 대한 플래그 비트 값은 '1110'이 된다.
도 6의 비트 변환 과정을 통해 알 수 있듯이, 바이너리 데이터에 포함된 '1'의 개수가 36개에서 56개로 늘어나고, '0'의 개수가 44개에서 24개로 줄어든 것을 알 수 있다.
물론, 도 6의 경우 플래그 비트를 저장하기 위한 공간이 도 4와 도 5에 비해 더 많이 필요한 것은 사실이지만, 바이너리 데이터의 용량 또는 크기에 따라 더 뛰어난 성능을 가질 수도 있다. 또한, 세부 세그먼트 단위는 상황에 따라 상이하게 조절할 수도 있으며, 이런 세부 세그먼트 단위 별로 비트 개수를 계산함으로써, 세부 세그먼트 단위를 결정할 수도 있다.
이와 같이, 본 발명에 따른 장치는 바이너리 데이터를 플래시 메모리의 가로축 방향 세그먼트와 세로축 방향 세그먼트로 각각 분할하고, 분할된 각각의 세그먼트에 대해 비트 값 '0'의 개수가 '1'의 개수 이하가 되도록 비트 변환한 후 두 방향 중 비트 변환된 '0'의 전체 개수가 적은 방향 또는 '1'의 개수가 많은 방향으로 비트 변환된 바이너리 데이터를 플래시 메모리에 저장함으로써, 플래시 메모리에 저장된 데이터를 읽을 때 센스 앰프의 소모 전류가 많은 '0'의 개수가 적어지고, 이를 통해 센스 앰프의 전체 소모 전류를 최소화할 수 있다.
도 7은 본 발명의 다른 일 실시예에 따른 플래시 메모리의 소모 전력 감소 장치에 대한 구성을 나타낸 것이고, 도 8은 바이너리 데이터에 대해 설정된 hot-spot의 데이터를 비트 값 '1'로 모두 변환하는 일 예시도를 나타낸 것이다.
도 7과 도 8을 참조하면, 본 발명에 따른 장치는 수신부(710), 검출부(720), 제1 변환부(730), 제2 변환부(740), 저장부(750), 저장 수단(760), 플래시 메모리(770), 제3 변환부(780) 및 읽기부(790)를 포함한다.
수신부(710)는 외부로부터 바이너리 데이터 예를 들어, 소스 코드가 컴파일(compile) 되거나 어셈블(assemble)되어 생성된 바이너리 데이터를 수신한다.
검출부(720)는 수신부(710)로 수신된 바이너리 데이터를 분석하여 미리 결정된 횟수 이상 반복되는 데이터 영역을 검출한다.
여기서, 일정 횟수 이상 반복되는 데이터 영역(hot-spot)에 대한 예로는, 프로그램에서 루프(loop) 명령에 의해 반복되는 코드의 영역이 될 수 있으며, 이 외에도 다양한 형태의 코드가 포함될 수 있다. 실제로 프로그램 코드에는 루프(loop), 분기(branch) 등 조건에 따라 또는 무조건적으로 수행되는 특수한 코드가 존재한다. 프로그램 코드는 순차적으로 100% 균등하게 실행되는 것이 아니라 각 코드의 특성 상 자주 실행되는 코드가 존재하고 드물게 실행되는 코드가 존재한다.
이러한 현상을 경험칙상 10%의 코드가 90%의 시간 동안 수행되는 10/90의 법칙 등으로 표현하기도 한다. 경우에 따라서는 20%의 코드가 80%의 시간 동안 수행되는 20/80의 법칙으로 표현되기도 한다.
이 때, 검출부(720)는 소스 코드 즉, 바이너리 데이터의 특성을 고려하여 hot-spot을 검출할 수 있으며, hot-spot을 검출하는 방식은 소스 코드 분석을 통해 이루어질 수 있다.
검출부(720)는 검출된 데이터 영역의 데이터를 저장 수단(760) 예를 들어, 레지스터(register)에 저장한다.
여기서, 저장 수단(760)은 플래시 메모리(770)와 별개의 수단으로 도시되어 있지만, 이에 한정하지 않고, 플래시 메모리(770)의 일정 영역이 될 수도 있다.
예컨대, 검출부(720)는 도 8에 도시된 바와 같이, 데이터 분석을 통하여 두 번째 세그먼트(810)에 해당하는 데이터를 hot-spot 데이터로 검출한다.
제1 변환부(730)는 검출부(720)에 의해 검출된 데이터 영역(hot-spot)에 해당하는 바이너리 데이터의 모든 비트 값을 '1'로 변환한다.
제2 변환부(740)는 수신부(710)로 수신된 바이너리 데이터를 미리 결정된 세그먼트 단위로 분할하고, 분할된 세그먼트 단위 각각에서 바이너리 데이터의 비트 값 '0'의 개수가 '1'의 개수 이하가 되도록 비트 변환을 수행한다.
여기서, 제2 변환부(740)는 검출부(720)에 의해 검출된 데이터 영역을 제외한 세그먼트 각각에서 비트 변환 여부를 결정하여 비트 변환을 수행할 수도 있고, 데이터 영역(hot-spot)을 포함하는 모든 세그먼트 각각에서 비트 변환을 수행할 수도 있다.
도 7의 장치에서 제2 변환부(740)의 구성은 상황에 따라 제거될 수도 있다. 즉, 수신부(710)로 수신된 바이너리 데이터 중 hot-spot에 포함된 데이터를 제외한 데이터에 대해 비트 변환을 수행하지 않을 수도 있다.
나아가, 제2 변환부(740)는 상황에 따라 세그먼트 방향을 조절할 수도 있으며, 세그먼트 방향에 대해서는 도 3에서 설명한 제1 방향과 제2 방향일 수 있다.
저장부(750)는 제1 변환부(730)와 제2 변환부(740)에 의해 비트 변환된 바이너리 데이터를 플래시 메모리(770)에 저장한다.
이 때, 저장부(750)는 검출부(720)에 의해 검출된 데이터 영역(hot-spot)의 모든 데이터를 제1 변환부(730)에 의해 변환된 비트 값 '1'로 저장하고, 상황에 따라 제2 변환부(740)가 장치에 구비되지 않은 경우에는 수신부(710)로 수신되는 바이너리 데이터에 대해 비트 변환을 수행하지 않고 플래시 메모리(770)에 바로 저장할 수 있다. 물론, 이 경우 저장부(750)는 hot-spot에 해당하는 바이너리 데이터만을 모두 '1'로 저장하게 된다.
저장부(750)는 제2 변환부(740)에 의해 비트 변환된 바이너리 데이터를 플래시 메모리(770)에 저장할 때, 해당 세그먼트 각각에 대하여 비트 변환 여부에 대한 플래그 비트를 저장할 수 있으며, 플래그 비트는 플래시 메모리의 미리 설정된 영역에 저장될 수도 있지만 이에 한정하지 않으며 플래시 메모리가 아닌 별도의 저장 공간에 저장될 수도 있다.
예컨대, 저장부(750)는 도 8에 도시된 바와 같이, 제1 변환부(730)에 의해 변환된 데이터 즉, 비트 값 '1'을 두 번째 세그먼트(820)에 저장하고, 해당 세그먼트가 hot-spot이라는 것을 별도의 hot-spot 비트(830)로 저장한다.
비록, 도 8에서 세부 세그먼트들로 분할된 예를 도시하였지만, 이에 한정하지 않는다.
또한, 저장부(750)는 플래시 메모리(770)에 저장된 바이너리 데이터의 세그먼트 단위, 필요에 따라 세그먼트 방향에 대한 정보를 플래시 메모리(770)의 일정 영역에 저장할 수도 있고, 별도의 저장 공간 예를 들어, 저장 수단(760)에 저장할 수도 있으며, 이에 대한 정보는 제3 변환부(780)에서 플래시 메모리(770)에 저장된 데이터를 비트 변환할 때 사용될 수 있다.
한편 본 발명에서 hot-spot에 저장된 원래의 데이터를 별도의 저장 공간(760)에 저장한 경우, 실제로 데이터를 읽는 과정에서는 세그먼트(820)를 빈번하게 액세스하지는 않는다. 그러나 세그먼트(820)에 임의의 데이터가 저장되거나 세그먼트(820)에 실제로 저장된 데이터에 대한 정보를 유실하게 되는 경우에는 세그먼트(820)에 해당하는 메모리 셀의 신뢰성을 저하시키는 원인이 될 수 있다. 따라서 세그먼트(820)에는 관리가 용이하도록 모두 '1'의 값을 저장할 수 있는데, 이로 인하여 메모리 셀의 안정성을 높일 수 있다. 또한 플래시 메모리에 저장된 데이터의 무결성을 체크하기 위하여 주기적으로 또는 아이들링 타임(idling time) 에 플래시 메모리에 저장된 데이터를 순차적으로 읽는 기능이 제공되는 경우가 있는데, 이 때 세그먼트(820)에 '1'의 값을 저장해 둠으로써 무결성 체크 시에 소모되는 전력의 양을 절감할 수 있는 효과가 있다.
제3 변환부(780)는 플래시 메모리(770)에 저장된 바이너리 데이터를 읽기 위하여, 미리 결정된 세그먼트 단위로 플래시 메모리(770)에 저장된 바이너리 데이터를 비트 변환하고, hot-spot에 저장된 비트 값 '1'을 가지는 데이터를 저장 수단(760)에 저장된 바이너리 데이터 즉, hot-spot에 해당하는 원본 바이너리 데이터로 대체한다.
이 때, 제3 변환부(780)는 세그먼트 각각에 대해 저장된 플래그 비트의 비트 값에 기초하여 세그먼트 각각에 대하여 비트 변환을 수행하거나 비트 변환을 수행하지 않을 수 있다. 즉, 제3 변환부(780)는 해당 세그먼트의 플래그 비트 값이 '1'인 경우 해당 세그먼트에 대한 바이너리 데이터에 대해 값이 '1'인 비트를 값이 '0'인 비트로 전환하고, 값이 '0'인 비트를 값이 '1'인 비트로 전환한다. 물론, 제3 변환부(780)는 hot-spot에 저장된 데이터의 경우 저장 수단(760)에 저장된 바이너리 데이터로 대체한다.
읽기부(790)는 제3 변환부(780)에 의해 비트 변환된 바이너리 데이터를 읽는다.
즉, 읽기부(790)는 수신부(710)로 수신된 바이너리 데이터가 비트 변환되어 플래시 메모리(770)에 저장된 바이너리 데이터와 저장 수단(760)에 저장된 hot-spot 데이터를 제3 변환부(780)를 통해 다시 비트 변환하여 수신부(710)로 수신된 바이너리 데이터를 복원하여 읽는다.
이와 같이, 본 발명에 따른 플래시 메모리의 소모 전력 감소 장치는 hot-spot 데이터를 검출하고, 검출된 hot-spot 데이터를 모두 '1'로 비트 변환하여 플래시 메모리에 저장함으로써, 소스 코드에서 일정 회수 이상 반복되어 자주 읽혀지는 바이너리 데이터를 읽을 때 발생되는 센스 앰프의 소모 전류를 최소화시킬 수 있으며, 이를 통해 바이너리 데이터를 모두 읽는데 소모되는 전력을 최소화할 수 있다.
도 9는 본 발명의 일 실시예에 따른 플래시 메모리의 소모 전력 감소 방법에 대한 동작 흐름도를 나타낸 것으로, 도 3에 구성된 장치에서의 동작 흐름도를 나타낸 것이다.
도 9를 참조하면, 본 발명에 따른 방법은 외부로부터 바이너리 데이터를 수신하고, 수신된 바이너리 데이터를 플래시 메모리의 제1 방향 예를 들어, address space 방향으로 미리 결정된 제1 세그먼트 단위로 분할한 후 제1 세그먼트 단위 각각에서 바이너리 데이터의 비트 값 '0'의 개수가 비트 값 '1'의 개수 이하가 되도록 비트 변환을 수행한다(S910 내지 S930).
제1 방향으로 세그먼트를 분할하고, 비트 변환을 수행하는 예는 도 4에 도시되어 있으며, 이에 대한 설명은 앞서 기술하였기에 여기서는 생략한다.
그리고, 수신된 바이너리 데이터를 플래시 메모리의 제2 방향 예를 들어, word line 방향으로 미리 결정된 제2 세그먼트 단위로 분할한 후 제2 세그먼트 단위 각각에서 바이너리 데이터의 비트 값 '0'의 개수가 비트 값 '1'의 개수 이하가 되도록 비트 변환을 수행한다(S940, S950).
제2 방향으로 세그먼트를 분할하고, 비트 변환을 수행하는 예는 도 5에 도시되어 있으며, 이에 대한 설명은 앞서 기술하였기에 여기서는 생략한다.
상기 단계 S920과 S940에서 분할된 제1 세그먼트와 제2 세그먼트 단위는 상황에 따라 세부 세그먼트들로 분할될 수 있으며, 세부 세그먼트들로 분할되는 경우 세부 세그먼트들 각각에서 바이너리 데이터의 비트 값 '0'의 개수가 비트 값 '1'의 개수 이하가 되도록 비트 변환을 수행할 수 있다. 이에 대한 것은 도 6에서 상세히 설명하였다.
그리고, 단계 S940과 S950이 단계 S930 이후에 수행되는 것으로 도시되었지만, 이에 한정하지 않고 단계 S920, S930과 병렬적으로 수행될 수도 있다.
상기 과정들을 통하여 제1 세그먼트 단위로 비트 변환된 바이너리 데이터에 포함된 비트 값 '1'의 전체 개수와 제2 세그먼트 단위로 비트 변환된 바이너리 데이터에 포함된 비트 값 '1'의 전체 개수를 비교한다(S960).
단계 S960 비교 결과, '1'의 전체 개수가 많은 방향으로 세그먼트 분할되어 비트 변환된 바이너리 데이터를 플래시 메모리에 저장하고, 플래시 메모리에 저장되는 바이너리 데이터의 세그먼트 방향과 세그먼트 단위 나아가 세그먼트 각각에 대한 플래그 비트를 저장한다(S970, S980).
여기서, 플래시 메모리에 저장되는 바이너리 데이터의 세그먼트 방향과 세그먼트 단위 나아가 세그먼트 각각에 대한 플래그 비트는 플래시 메모리의 일정 영역에 저장될 수도 있고, 별도의 저장 수단에 저장될 수도 있다.
도 10은 도 9에 의해 저장된 바이너리 데이터를 읽는 방법에 대한 일 실시예의 동작 흐름도를 나타낸 것이다.
도 10을 참조하면, 플래시 메모리에 비트 변환되어 저장된 바이너리 데이터에 대한 세그먼트 방향, 나아가 세그먼트 단위를 확인한다(S1010).
그리고, 세그먼트 단위 각각에 대한 플래그 비트 값을 통해 세그먼트 각각의 비트 변환 여부를 확인한다(S1020).
단계 S1020을 통해 플래그 비트 값이 '1'인 경우 해당 세그먼트에 저장된 데이터에 대해서는 비트 변환을 수행하고, 플래그 비트 값이 '0'인 경우 해당 세그먼트에 저장된 데이터에 대해서는 비트 변환을 수행하지 않는다(S1030).
단계 S1030에서 센스 앰프를 통해 플래시 메모리에 저장된 데이터 즉, '0'의 개수가 적은 비트 변환된 바이너리 데이터를 읽어 오기 때문에 센스 앰프의 소모 전류를 줄일 수 있다.
세그먼트 각각에 대해 비트 변환을 수행하거나 비트 변환을 수행하지 않은 바이너리 데이터를 읽는다(S1040).
이와 같은 과정을 통해 플래시 메모리에 저장된 비트 변환된 바이너리 데이터를 읽을 수 있다.
도 11은 본 발명의 다른 일 실시예에 따른 플래시 메모리의 소모 전력 감소 방법에 대한 동작 흐름도를 나타낸 것으로, 도 7에 구성된 장치에서의 동작 흐름도를 나타낸 것이다.
도 11을 참조하면, 본 발명에 따른 방법은 방법은 외부로부터 바이너리 데이터를 수신하고, 수신된 바이너리 데이터를 분석하여 일정 횟수 이상 반복되는 데이터 영역 즉, hot-spot을 검출한다(S1110 내지 S1130).
여기서, hot-spot은 수신되는 바이너리 데이터의 특성을 고려하여 분석함으로써, 검출될 수 있으며, 이 뿐만 아니라 hot-spot을 검출할 수 있는 다양한 조건을 고려할 수 있다.
Hot-spot이 검출되면, 검출된 hot-spot에 포함된 데이터를 저장 수단에 저장하고, hot-spot에 포함된 데이터에 대한 모든 비트 값을 '1'로 변환한다(S1140, S1150).
모든 비트 값이 '1'로 변환된 hot-spot을 포함하는 바이너리 데이터를 플래시 메모리에 저장한다(S1160).
이 때, hot-spot에 포함된 데이터 이외의 바이너리 데이터에 대하여 비트 변환을 수행할 수도 있으며, 이에 대해 도 12을 참조하여 설명한다.
도 12는 도 11에 도시된 단계 S1160에 대한 일 실시예 동작 흐름도를 나타낸 것이다.
도 12를 참조하면, 플래시 메모리에 저장하는 단계(S1160)는 수신된 바이너리 데이터를 미리 결정된 세그먼트 단위로 분할하고, 세그먼트 단위 각각에서 바이너리 데이터의 비트 값 '0'의 개수가 비트 값 '1'의 개수 이하가 되도록 비트 변환을 수행한다(S1210, S1220).
이 때, 세그먼트 단위 및 세그먼트 방향에 대한 정보는 별도로 저장될 수 있다.
단계 S1220에 의해 비트 변환된 바이너리 데이터를 플래시 메모리에 저장하고, 세그먼트 각각에 대한 플래그 비트를 플래시 메모리 또는 별도의 저장 수단에 저장한다(S1230, S1240).
여기서, 단계 S1230은 비트 변환된 바이너리 데이터를 플래시 메모리에 저장할 때 hot-spot에 해당하는 데이터 영역은 비트 값 '1'로 모두 저장된다.
도 13은 도 11에 의해 저장된 바이너리 데이터를 읽는 방법에 대한 일 실시예의 동작 흐름도를 나타낸 것이다.
도 13을 참조하면, 플래시 메모리에 비트 변환되어 저장된 바이너리 데이터에 대한 세그먼트 단위, 나아가 세그먼트 방향을 확인하고, 세그먼트 단위 각각에 대한 플래그 비트 값을 확인한다(S1310, S1320).
단계 S1320을 통해 확인된 플래그 비트 값이 '1'인 경우 해당 세그먼트에 저장된 데이터에 대해서는 비트 변환을 수행하고, 플래그 비트 값이 '0'인 경우 해당 세그먼트에 저장된 데이터에 대해서는 비트 변환을 수행하지 않는다(S1330).
이 때, hot-spot에 해당하는 영역에 대해서는 비트 변환을 수행할 수도 있고 수행하지 않을 수도 있으며, 플래시 메모리에 저장된 읽기가 자주 반복 수행되는 hot-spot에 해당하는 영역의 데이터가 모두 비트 값 '1'이기 때문에 센스 앰프의 소모 전류를 최소화할 수 있다.
그리고, 별도의 저장 수단에 저장된 hot-spot에 해당하는 영역의 원본 바이너리 데이터를 확인한다(S1340).
세그먼트 각각에 대해 비트 변환된 바이너리 데이터와 단계 S1340에서 확인된 hot-spot에 해당하는 영역의 원본 바이너리 데이터를 읽는다(S1350).
이와 같은 과정을 통해 플래시 메모리에 저장된 비트 변환된 바이너리 데이터를 읽을 수 있다.
본 발명의 일 실시 예에 따른 플래시 메모리의 소모 전력 감소 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.

Claims (15)

  1. 외부로부터 바이너리 데이터를 수신하는 단계;
    플래시 메모리의 제1 방향으로 미리 설정된 제1 세그먼트 단위 각각에서 상기 바이너리 데이터의 제1 값 개수가 제2 값 개수 이하가 되도록 비트 변환을 수행하는 단계;
    상기 플래시 메모리의 제2 방향으로 미리 설정된 제2 세그먼트 단위 각각에서 상기 바이너리 데이터의 상기 제1 값 개수가 상기 제1 값 개수 이하가 되도록 비트 변환을 수행하는 단계;
    상기 제1 방향으로 비트 변환된 상기 바이너리 데이터의 상기 제2 값에 대한 전체 개수와 상기 제2 방향으로 비트 변환된 상기 바이너리 데이터의 상기 제2 값에 대한 전체 개수를 비교하는 단계; 및
    상기 전체 개수가 많은 방향으로 상기 바이너리 데이터에 대해 비트 변환된 변환 바이너리 데이터를 상기 플래시 메모리에 저장하는 단계
    를 포함하는 플래시 메모리의 소모 전력 감소 방법.
  2. 제1항에 있어서,
    상기 플래시 메모리에 저장된 상기 변환 바이너리 데이터를 상기 전체 개수가 많은 방향의 세그먼트 단위로 비트 변환하여 읽는 단계
    를 더 포함하는 것을 특징으로 하는 플래시 메모리의 소모 전력 감소 방법.
  3. 제2항에 있어서,
    상기 저장하는 단계는
    상기 전체 개수가 많은 방향의 세그먼트 각각에 대하여 비트 변환 여부에 대한 플래그 비트를 저장하고,
    상기 읽는 단계는
    상기 저장된 상기 플래그 비트의 값이 비트 변환 값인 경우 해당 세그먼트를 비트 변환하여 읽는 것을 특징으로 하는 플래시 메모리의 소모 전력 감소 방법.
  4. 제1항에 있어서,
    상기 비트 변환을 수행하는 단계는
    해당 세그먼트 단위를 미리 결정된 복수의 세부 세그먼트들로 분할하고, 상기 복수의 세부 세그먼트들 각각에서 상기 바이너리 데이터의 상기 제1 값 개수가 상기 제2 값 개수 이하가 되도록 비트 변환을 수행하는 것을 특징으로 하는 플래시 메모리의 소모 전력 감소 방법.
  5. 외부로부터 바이너리 데이터를 수신하는 단계;
    상기 수신된 상기 바이너리 데이터를 분석하여 미리 결정된 횟수 이상 반복되는 데이터 영역을 검출하는 단계;
    상기 검출된 상기 데이터 영역에 해당하는 데이터의 모든 비트 값을 미리 결정된 제1 비트 값으로 변환하는 단계; 및
    상기 제1 비트 값으로 변환되기 전의 상기 데이터 영역에 해당하는 데이터를 미리 결정된 저장 수단에 저장하고, 상기 제1 비트 값으로 변환된 상기 데이터 영역을 포함하는 상기 바이너리 데이터를 플래시 메모리에 저장하는 단계
    를 포함하는 플래시 메모리의 소모 전력 감소 방법.
  6. 제5항에 있어서,
    상기 바이너리 데이터를 미리 결정된 세그먼트 단위로 분할하는 단계; 및
    상기 데이터 영역을 제외한 상기 분할된 상기 세그먼트 단위 각각에서 상기 바이너리 데이터의 제1 값 개수가 제2 값 개수 이하가 되도록 비트 변환을 수행하는 단계
    를 더 포함하고,
    상기 저장하는 단계는
    상기 비트 변환된 상기 바이너리 데이터를 상기 플래시 메모리에 저장하는 것을 특징으로 하는 플래시 메모리의 소모 전력 감소 방법.
  7. 제6항에 있어서,
    상기 세그먼트 각각에 대하여 미리 저장된 비트 변환 여부에 대한 플래그 비트의 값을 확인하고, 상기 플래그 비트의 값이 비트 변환 값인 경우 해당 세그먼트를 비트 변환하여 읽는 단계
    를 더 포함하는 것을 특징으로 하는 플래시 메모리의 소모 전력 감소 방법.
  8. 제5항에 있어서,
    상기 플래시 메모리에 저장된 상기 바이너리 데이터를 읽는 단계
    를 더 포함하고,
    상기 데이터 영역에 해당하는 데이터는
    상기 저장 수단으로부터 읽는 것을 특징으로 하는 플래시 메모리의 소모 전력 감소 방법.
  9. 제1항 내지 제8항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.
  10. 외부로부터 바이너리 데이터를 수신하는 수신부;
    플래시 메모리의 제1 방향으로 미리 설정된 제1 세그먼트 단위 각각에서 상기 바이너리 데이터의 제1 값 개수가 제2 값 개수 이하가 되도록 비트 변환을 수행하는 제1 변환부;
    상기 플래시 메모리의 제2 방향으로 미리 설정된 제2 세그먼트 단위 각각에서 상기 바이너리 데이터의 상기 제1 값 개수가 상기 제1 값 개수 이하가 되도록 비트 변환을 수행하는 제2 변환부;
    상기 제1 방향으로 비트 변환된 상기 바이너리 데이터의 상기 제2 값에 대한 전체 개수와 상기 제2 방향으로 비트 변환된 상기 바이너리 데이터의 상기 제2 값에 대한 전체 개수를 비교하는 비교부; 및
    상기 전체 개수가 많은 방향으로 상기 바이너리 데이터에 대해 비트 변환된 변환 바이너리 데이터를 상기 플래시 메모리에 저장하는 저장부
    를 포함하는 플래시 메모리의 소모 전력 감소 장치.
  11. 제10항에 있어서,
    상기 플래시 메모리에 저장된 상기 변환 바이너리 데이터를 상기 전체 개수가 많은 방향의 세그먼트 단위로 비트 변환하여 읽는 읽기부
    를 더 포함하는 것을 특징으로 하는 플래시 메모리의 소모 전력 감소 장치.
  12. 제11항에 있어서,
    상기 저장부는
    상기 전체 개수가 많은 방향의 세그먼트 각각에 대하여 비트 변환 여부에 대한 플래그 비트를 저장하고,
    상기 읽기부는
    상기 저장된 상기 플래그 비트의 값이 비트 변환 값인 경우 해당 세그먼트를 비트 변환하여 읽는 것을 특징으로 하는 플래시 메모리의 소모 전력 감소 장치.
  13. 외부로부터 바이너리 데이터를 수신하는 수신부;
    상기 수신된 상기 바이너리 데이터를 분석하여 미리 결정된 횟수 이상 반복되는 데이터 영역을 검출하는 검출부;
    상기 검출된 상기 데이터 영역에 해당하는 데이터의 모든 비트 값을 미리 결정된 제1 비트 값으로 변환하는 제1 변환부; 및
    상기 제1 비트 값으로 변환되기 전의 상기 데이터 영역에 해당하는 데이터를 미리 결정된 저장 수단에 저장하고, 상기 제1 비트 값으로 변환된 상기 데이터 영역을 포함하는 상기 바이너리 데이터를 플래시 메모리에 저장하는 저장부
    를 포함하는 플래시 메모리의 소모 전력 감소 장치.
  14. 제13항에 있어서,
    상기 바이너리 데이터를 미리 결정된 세그먼트 단위로 분할하고, 상기 데이터 영역을 제외한 상기 분할된 상기 세그먼트 단위 각각에서 상기 바이너리 데이터의 제1 값 개수가 제2 값 개수 이하가 되도록 비트 변환을 수행하는 제2 변환부
    를 더 포함하고,
    상기 저장부는
    상기 제1 변환부와 상기 제2 변환부에서 비트 변환된 상기 바이너리 데이터를 상기 플래시 메모리에 저장하는 것을 특징으로 하는 플래시 메모리의 소모 전력 감소 장치.
  15. 제14항에 있어서,
    상기 세그먼트 각각에 대하여 미리 저장된 비트 변환 여부에 대한 플래그 비트의 값을 확인하고, 상기 플래그 비트의 값이 비트 변환 값인 경우 해당 세그먼트를 비트 변환하여 읽는 읽기부
    를 더 포함하는 것을 특징으로 하는 플래시 메모리의 소모 전력 감소 장치.
KR1020120124865A 2012-11-06 2012-11-06 플래시 메모리의 소모 전력 감소 방법 및 그 장치 KR101379883B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120124865A KR101379883B1 (ko) 2012-11-06 2012-11-06 플래시 메모리의 소모 전력 감소 방법 및 그 장치
PCT/KR2013/000427 WO2014073747A1 (ko) 2012-11-06 2013-01-18 플래시 메모리의 소모 전력 감소 방법 및 그 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120124865A KR101379883B1 (ko) 2012-11-06 2012-11-06 플래시 메모리의 소모 전력 감소 방법 및 그 장치

Publications (1)

Publication Number Publication Date
KR101379883B1 true KR101379883B1 (ko) 2014-04-01

Family

ID=50656167

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120124865A KR101379883B1 (ko) 2012-11-06 2012-11-06 플래시 메모리의 소모 전력 감소 방법 및 그 장치

Country Status (2)

Country Link
KR (1) KR101379883B1 (ko)
WO (1) WO2014073747A1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9710199B2 (en) 2014-11-07 2017-07-18 International Business Machines Corporation Non-volatile memory data storage with low read amplification
US9712190B2 (en) 2015-09-24 2017-07-18 International Business Machines Corporation Data packing for compression-enabled storage systems
US9870285B2 (en) 2015-11-18 2018-01-16 International Business Machines Corporation Selectively de-straddling data pages in non-volatile memory
US10162700B2 (en) 2014-12-23 2018-12-25 International Business Machines Corporation Workload-adaptive data packing algorithm

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070112021A (ko) * 2006-05-18 2007-11-22 가부시끼가이샤 도시바 Nand형 플래시 메모리 장치 및 메모리 디바이스
KR20090014036A (ko) * 2007-08-03 2009-02-06 삼성전자주식회사 읽기 디스터번스로 인한 에러를 방지하는 메모리 시스템 및그 방법
US20100002504A1 (en) 2008-07-02 2010-01-07 Mosaid Technologies Incorporated Mulitple-bit per cell (MBC) non-volatile memory apparatus and system having polarity control and method of programming same
KR20100061306A (ko) * 2008-11-28 2010-06-07 삼성전자주식회사 불휘발성 메모리 장치

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8010764B2 (en) * 2005-07-07 2011-08-30 International Business Machines Corporation Method and system for decreasing power consumption in memory arrays having usage-driven power management

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20070112021A (ko) * 2006-05-18 2007-11-22 가부시끼가이샤 도시바 Nand형 플래시 메모리 장치 및 메모리 디바이스
KR20090014036A (ko) * 2007-08-03 2009-02-06 삼성전자주식회사 읽기 디스터번스로 인한 에러를 방지하는 메모리 시스템 및그 방법
US20100002504A1 (en) 2008-07-02 2010-01-07 Mosaid Technologies Incorporated Mulitple-bit per cell (MBC) non-volatile memory apparatus and system having polarity control and method of programming same
KR20100061306A (ko) * 2008-11-28 2010-06-07 삼성전자주식회사 불휘발성 메모리 장치

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9710199B2 (en) 2014-11-07 2017-07-18 International Business Machines Corporation Non-volatile memory data storage with low read amplification
US10162700B2 (en) 2014-12-23 2018-12-25 International Business Machines Corporation Workload-adaptive data packing algorithm
US9712190B2 (en) 2015-09-24 2017-07-18 International Business Machines Corporation Data packing for compression-enabled storage systems
US9793929B2 (en) 2015-09-24 2017-10-17 International Business Machines Corporation Data packing for compression-enabled storage systems
US9870285B2 (en) 2015-11-18 2018-01-16 International Business Machines Corporation Selectively de-straddling data pages in non-volatile memory
US10528424B2 (en) 2015-11-18 2020-01-07 International Business Machines Corporation Selectively de-straddling data pages in non-volatile memory

Also Published As

Publication number Publication date
WO2014073747A1 (ko) 2014-05-15

Similar Documents

Publication Publication Date Title
US8949690B2 (en) Memory controller
US9236129B2 (en) Flash memory integrated circuit with compression/decompression CODEC
KR101379883B1 (ko) 플래시 메모리의 소모 전력 감소 방법 및 그 장치
US8990792B2 (en) Method for constructing dynamic call graph of application
US7573754B2 (en) Nonvolatile memory, apparatus and method for determining data validity of the same
US20100088464A1 (en) Compression Based Wear Leveling for Non-Volatile Memory
CN101310255B (zh) 用于检测处理系统中的存储器装置的配置的方法和设备
KR102239237B1 (ko) 고체 상태 메모리 시스템에서의 레이턴시 기반 데이터 재활용을 위한 시스템 및 방법
KR20090081426A (ko) 동적 멀티 모드 동작의 비휘발성 메모리
US9502104B2 (en) Multi-level cell (MLC) non-volatile memory data reading method and apparatus
US11144388B2 (en) Nonvolatile memory device and memory system including nonvolatile memory device
US8595594B2 (en) Data processing method, memory controller, and memory storage device
US20100318729A1 (en) Nonvolatile semiconductor memory device
US20180074703A1 (en) Index management in a flash memory
JP5385261B2 (ja) データ読取装置およびその方法
CN111833953B (zh) 存储器装置
US7212463B2 (en) Method and system of operating mode detection
CN109697993B (zh) 数据纠错方法及装置
US8194457B2 (en) Soft program method and computer readable medium thereof
US8700887B2 (en) Register, processor, and method of controlling a processor using data type information
KR101419710B1 (ko) 플래시 메모리의 소모 전력 감소 방법 및 그 장치
US7380240B2 (en) Apparatus and methods to avoid floating point control instructions in floating point to integer conversion
US9298557B2 (en) Method of booting system having non-volatile memory device with erase checking and calibration mechanism and related memory device
US20220253314A1 (en) Method performed by a microcontroller for managing a nop instruction and corresponding microcontroller
CN108052410B (zh) 一种防止SPI-Nand读取数据页出错的方法及装置

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

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee