[go: up one dir, main page]

KR20130081526A - 저장 장치, 그것을 포함하는 전자 장치, 및 그것의 데이터 관리 방법들 - Google Patents

저장 장치, 그것을 포함하는 전자 장치, 및 그것의 데이터 관리 방법들 Download PDF

Info

Publication number
KR20130081526A
KR20130081526A KR1020120002547A KR20120002547A KR20130081526A KR 20130081526 A KR20130081526 A KR 20130081526A KR 1020120002547 A KR1020120002547 A KR 1020120002547A KR 20120002547 A KR20120002547 A KR 20120002547A KR 20130081526 A KR20130081526 A KR 20130081526A
Authority
KR
South Korea
Prior art keywords
section
request
information
data
deduplication
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
KR1020120002547A
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 KR1020120002547A priority Critical patent/KR20130081526A/ko
Priority to US13/734,244 priority patent/US9081658B2/en
Publication of KR20130081526A publication Critical patent/KR20130081526A/ko
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

본 발명에 따른 저장 장치는, 적어도 하나의 비휘발성 메모리 장치, 및 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 제어기를 포함하고, 상기 제어기는, 입출력 요청에 대응하는 논리 어드레스들을 지시하는 섹션을 발생하고, 섹션 정보를 통하여 상기 섹션을 관리하는 섹션 관리 모듈, 및 상기 입출력 요청에 따른 상기 섹션의 데이터 및 섹션 정보를 저장하는 버퍼를 포함하고, 상기 섹션 정보는 상기 논리 어드레스들을 지시하는 공간 지역성 정보, 및 쓰기 요청 회수 및 읽기 요청 회수를 갖는 요청 이력 정보를 포함한다.

Description

저장 장치, 그것을 포함하는 전자 장치, 및 그것의 데이터 관리 방법들{STORAGE DEVICE, ELECTRONIC DEVICE HAVING THE SAME, AND DATA MANAGEMENT METHODS THEREOF}
본 발명은 저장 장치, 그것을 포함하는 전자 장치, 그것의 데이터 관리 방법들에 관한 것이다.
반도체 메모리 장치는 크게 휘발성 반도체 메모리 장치와 비휘발성 반도체 메모리 장치로 나누어진다. 비휘발성 반도체 메모리 장치는 전원이 차단되어도 데이터를 저장할 수 있다. 비휘발성 메모리에 저장되는 데이터는 메모리 제조 기술에 따라 영구적이거나 재프로그램 가능하다. 비휘발성 반도체 메모리 장치는 컴퓨터, 항공 전자 공학, 통신, 및 소비자 전자 기술 산업과 같은 넓은 범위의 응용에서 사용자 데이터 저장, 프로그램 및 마이크로 코드의 저장을 위해서 사용된다.
본 발명의 목적은 입출력 요청에 따른 공간 지역성 정보를 근거로 하여 데이터를 데이터 관리하는 저장 장치, 그것을 포함하는 전자 장치 및 그것의 데이터 관리 방법들을 제공하는데 있다.
본 발명의 실시 예에 따른 적어도 하나의 비휘발성 메모리 장치 및 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 제어기를 포함하는 저장 장치의 데이터 관리 방법은, 입출력 요청을 입력받는 단계; 및 상기 입출력 요청에 근거로 하여 논리 어드레스들을 지시하는 섹션을 발생하는 단계를 포함하고, 상기 발생된 섹션은 섹션 정보를 통하여 관리되고, 상기 섹션 정보는 상기 입출력 요청에 대응하는 시작 논리 어드레스 및 상기 지시된 논리 어드레스들의 개수를 갖는 공간 지역성 정보, 및 요청 이력 정보를 포함한다.
실시 예에 있어서, 상기 입출력 요청은 쓰기 요청 및 읽기 요청 중 어느 하나이다.
실시 예에 있어서, 상기 요청 이력 정보는 쓰기 요청 회수 및 읽기 요청 회수를 포함한다.
실시 예에 있어서, 상기 입출력 요청에 대응하는 섹션이 존재하는 지를 판별하는 단계를 더 포함한다.
실시 예에 있어서, 상기 입출력 요청에 대응하는 섹션이 존재할 때, 섹션을 새로 발생하지 않고, 상기 존재하는 섹션을 상기 발생된 섹션으로 이용하는 단계를 더 포함한다.
실시 예에 있어서, 상기 입출력 요청에 대응하는 상기 섹션 정보를 업데이트하는 단계를 더 포함한다.
실시 예에 있어서, 상기 입출력 요청에 대응하는 섹션이 존재하지 않고, 상기 발생된 섹션과 이전 섹션 사이에 어드레스 공간의 일부가 겹칠 때, 상기 겹치는 어드레스 공간에 대응하는 새로운 섹션을 발생하는 단계; 및 상기 이전 섹션의 요청 이력 정보에 상기 입출력 요청에 따른 요청 이력 정보를 추가함으로써 상기 새로운 섹션의 섹션 정보를 업데이트하는 단계를 더 포함한다.
실시 예에 있어서, 상기 이전 섹션에서 상기 겹치는 어드레스 공간을 뺀 다른 새로운 섹션을 발생하는 단계; 및 상기 이전 섹션의 요청 이력 정보를 갖도록 상기 다른 새로운 섹션의 섹션 정보를 업데이트하는 단계를 더 포함한다.
실시 예에 있어서, 상기 발생된 섹션에 연속적인 공간 지역성 정보를 갖고, 상기 발생된 섹션의 요청 이력 정보와 동일한 요청 이력 정보를 갖는 이전 섹션이 존재할 때, 상기 발생된 섹션과 상기 이전 섹션을 병합하는 단계; 및 상기 병합된 섹션의 섹션 정보를 업데이트하는 단계를 더 포함한다.
실시 예에 있어서, 상기 저장 장치가 아이들 상태일 때, 상기 발생된 섹션과 상기 이전 섹션이 병합된다.
실시 예에 있어서, 상기 섹션 정보는 버퍼에 저장된다.
실시 예에 있어서, 상기 섹션 정보는 섹션에 따른 테이블 형태로 상기 적어도 하나의 비휘발성 메모리 장치에 저장된다.
실시 예에 있어서, 상기 섹션 정보는 상기 발생된 섹션에 수행된 중복 제거 정보를 더 포함하고, 상기 중복 제거 정보를 이용하여 중복 제거를 수행하는 단계를 더 포함한다.
실시 예에 있어서, 상기 입출력 요청은 쓰기 요청이고, 상기 중복 제거 정보는 상기 할당된 논리 어드레스들의 개수 중에서 중복 제거가 수행된 논리 어드레스의 개수를 지시하는 중복 제거 비율을 포함하고, 상기 중복 제거 비율이 기준 값보다 클 때, 상기 중복 제거가 수행된다.
실시 예에 있어서, 상기 입출력 요청은 쓰기 요청이고, 상기 중복 제거 정보는 상기 할당된 논리 어드레스들의 개수 중에서 중복 제거가 수행된 논리 어드레스의 개수를 지시하는 중복 제거 비율을 포함하고, 상기 중복 제거 비율이 기준 값보다 크지 않을 때, 상기 쓰기 요청에 따라 상기 적어도 하나의 비휘발성 메모리 장치에 데이터를 저장하는 단계를 더 포함한다.
실시 예에 있어서, 상기 저장 장치가 아이들 상태일 때, 상기 중복 제거가 수행된다.
실시 예에 있어서, 상기 섹션 정보를 이용하여 프리페치를 수행하는 단계를 더 포함한다.
실시 예에 있어서, 상기 섹션 정보를 이용하여 버퍼를 데이터 관리하는 단계를 더 포함하고, 상기 버퍼는 상기 발생된 섹션에 대응하는 데이터를 저장한다.
실시 예에 있어서, 상기 버퍼를 비울 필요가 있을 때, 상기 섹션 정보를 근거로 하여 상기 버퍼의 상기 데이터를 삭제하는 단계를 더 포함한다.
실시 예에 있어서, 상기 데이터를 삭제하는 단계는, 상기 데이터가 상기 적어도 하나의 비휘발성 메모리 장치에 저장되었는 지를 판별하는 단계; 상기 데이터가 상기 적어도 하나의 비휘발성 메모리 장치에 저장되어있지 않을 때, 상기 데이터를 상기 적어도 하나의 비휘발성 메모리 장치에 저장하는 단계; 및 상기 버퍼로부터 상기 데이터를 삭제하는 단계를 더 포함한다.
본 발명의 실시 예에 따른 적어도 하나의 비휘발성 메모리 장치 및 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 제어기를 포함하는 저장 장치의 중복 제거 방법은, 쓰기 요청을 입력받는 단계; 상기 쓰기 요청에 대응하는 섹션의 중복 제거 비율이 기준 값보다 큰지를 판별하는 단계; 및 상기 중복 제거 비율이 상기 기준 값보다 크다면, 중복 제거를 수행하는 단계를 포함하고, 상기 섹션은 섹션 정보를 통하여 관리되고, 상기 섹션 정보는 상기 쓰기 요청에 대응하는 논리 어드레스들을 지시하는 공간 지역성 정보, 요청 이력 정보, 및 상기 중복 제거 비율을 포함하고, 상기 중복 제거 비율은 상기 논리 어드레스들의 개수 중에서 중복 제거가 수행된 논리 어드레스의 개수의 비율을 지시한다.
실시 예에 있어서, 상기 쓰기 요청 입력시, 상기 쓰기 요청에 대응하는 섹션이 존재하는 지를 판별하는 더 포함한다.
실시 예에 있어서, 상기 쓰기 요청에 대응하는 섹션이 존재하지 않을 때 상기 쓰기 요청에 대응하는 논리 어드레스들을 지시하는 섹션을 발생하는 단계를 더 포함한다.
실시 예에 있어서, 상기 중복 제거 비율이 상기 기준 값보다 크지 않으면, 상기 쓰기 요청시 입력된 데이터를 상기 적어도 하나의 비휘발성 메모리 장치에 저장하는 단계를 더 포함한다.
실시 예에 있어서, 쓰기 요청 회수가 증가되도록 상기 섹션의 상기 요청 이력 정보를 업데이트하는 단계를 더 포함한다.
실시 예에 있어서, 상기 저장 장치가 아이들 상태일 때, 상기 섹션에 대한 중복 제거를 수행하는 단계를 더 포함한다.
실시 예에 있어서, 상기 중복 제거를 수행한 뒤, 상기 섹션의 상기 중복 제거 비율을 업데이트하는 단계를 더 포함한다.
실시 예에 있어서, 상기 중복 제거는, 상기 적어도 하나의 비휘발성 메모리 장치에 저장된 소정 단위의 데이터의 해쉬 값과 상기 섹션에 대응하는 데이터 중 소정 단위의 데이터의 해쉬 값이 동일할 때, 상기 저장된 소정 단위의 데이터와 상기 섹션의 소정 단위의 데이터가 동일한 것으로 판별한다.
본 발명의 실시 예에 따른 적어도 하나의 비휘발성 메모리 장치 및 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 제어기를 포함하는 저장 장치의 프리페치 방법은: 제 1 읽기 요청을 입력받는 단계; 상기 제 1 읽기 요청에 대응하는 제 1 섹션의 데이터를 제 1 프리페치하는 단계; 상기 제 1 섹션의 섹션 정보 및 제 2 섹션의 섹션 정보를 근거로 상기 제 2 섹션에 대한 제 2 읽기 요청을 예측하는 단계; 및 상기 제 2 읽기 요청이 예측될 때, 상기 제 2 섹션의 데이터를 제 2 프리페치하는 단계를 포함하고, 상기 제 1 및 상기 제 2 섹션들 각각의 섹션 정보는, 상기 제 1 및 제 2 읽기 요청들 각각에 대응하는 논리 어드레스들을 지시하는 공간 지역성 정보, 및 쓰기 요청 회수와 읽기 요청 회수를 갖는 요청 이력 정보를 포함한다.
실시 예에 있어서, 상기 제 1 요청에 대응하는 섹션이 존재하는 지를 판별하는 단계를 더 포함한다.
실시 예에 있어서, 상기 제 1 요청에 대응하는 섹션이 존재하지 않을 때, 상기 제 1 요청에 대응하는 상기 제 1 섹션으로 발생하는 단계를 더 포함한다.
실시 예에 있어서, 상기 제 1 섹션의 논리 어드레스들과 상기 제 2 섹션의 논리 어드레스들이 서로 연속적일 때, 상기 제 2 읽기 요청이 예측된다.
실시 예에 있어서, 상기 제 1 섹션의 요청 이력 정보 및 상기 제 2 섹션의 요청 이력 정보가 동일할 때, 상기 제 2 읽기 요청이 예측된다.
실시 예에 있어서, 상기 제 1 프리페치된 데이터로부터 상기 제 1 읽기 요청에 따른 읽기 동작을 수행하는 단계를 더 포함한다.
실시 예에 있어서, 읽기 요청 회수가 증가되도록 상기 1 섹션의 요청 이력 정보를 업데이트하는 단계를 더 포함한다.
본 발명의 실시 예에 따른 적어도 하나의 비휘발성 메모리 장치 및 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 저장 장치의 버퍼 관리 방법은: 입출력 요청에 대응하는 섹션을 발생하는 단계; 상기 발생된 섹션의 데이터를 저장하는 버퍼를 비울 필요가 있는 지를 판별하는 단계; 및 상기 버퍼를 비울 필요가 있을 때 섹션 정보를 근거로 하여 상기 발생된 섹션의 데이터를 상기 버퍼로부터 제거하는 단계를 포함하고, 상기 섹션 정보는 상기 입출력 요청에 대응하는 논리 어드레스들을 지시하는 공간 지역성 정보 및 요청 이력 정보를 포함한다.
실시 예에 있어서, 상기 요청 이력 정보를 이용하여, 상기 발생된 섹션의 데이터가 제거된다.
실시 예에 있어서, 상기 요청 이력 정보는 쓰기 요청 회수 및 읽기 요청 회수를 포함하고, 상기 쓰기 요청 회수가 기준 값보다 크면, 상기 발생된 섹션의 데이터를 상기 버퍼에 남기는 단계를 더 포함한다.
실시 예에 있어서, 상기 요청 이력 정보는 쓰기 요청 회수 및 읽기 요청 회수를 포함하고, 상기 쓰기 요청 회수가 기준 값보다 크지 않으면, 상기 발생된 섹션의 데이터는 상기 버퍼로부터 삭제된다.
실시 예에 있어서, 상기 발생된 섹션의 데이터가 상기 버퍼로부터 삭제되기 전에, 상기 발생된 섹션의 데이터가 상기 적어도 하나의 비휘발성 메모리 장치에 저장되었는 지를 판별하는 단계; 및 상기 적어도 하나의 비휘발성 메모리 장치에 상기 발생된 섹션의 데이터가 저장되어 있지 않다면, 상기 발생된 섹션의 데이터를 상기 적어도 하나의 비휘발성 메모리 장치에 저장하는 단계를 더 포함한다.
실시 예에 있어서, 상기 섹션 정보는 상기 버퍼에 저장되고, 상기 저장 장치에 전원 공급이 차단될 때 상기 섹션 정보는 삭제된다.
본 발명의 실시 예에 따른 저장 장치는, 적어도 하나의 비휘발성 메모리 장치; 및 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 제어기를 포함하고,상기 제어기는, 입출력 요청에 대응하는 논리 어드레스들을 지시하는 섹션을 발생하고, 섹션 정보를 통하여 상기 섹션을 관리하는 섹션 관리 모듈; 및 상기 입출력 요청에 따른 상기 섹션의 데이터 및 섹션 정보를 저장하는 버퍼를 포함하고, 상기 섹션 정보는 상기 논리 어드레스들을 지시하는 공간 지역성 정보, 및 쓰기 요청 회수 및 읽기 요청 회수를 갖는 요청 이력 정보를 포함한다.
실시 예에 있어서, 상기 제어기는, 상기 버퍼에 저장되는 데이터를 데이터 관리하는 버퍼 관리 모듈을 더 포함한다.
실시 예에 있어서, 상기 버퍼 관리 모듈은, 상기 섹션 관리 모듈로부터 발생된 섹션 정보를 근거로 하여 상기 섹션 데이터의 삭제 여부를 결정한다.
실시 예에 있어서, 상기 섹션 정보는 상기 섹션의 상기 논리 어드레스들 중 중복 제거가 수행된 논리 어드레스의 비율을 지시하는 중복 제거 정보를 더 포함하고, 상기 제어기는, 쓰기 요청시 상기 중복 제거 정보를 근거로 하여 상기 섹션에 대한 중복 제거를 즉시 수행한다.
실시 예에 있어서, 상기 제어기는, 읽기 요청시 상기 섹션 정보를 근거로 하여 다음 읽기 요청을 예측하고, 상기 예측된 다음 읽기 요청에 대응하는 섹션의 데이터를 프리페치한다.
실시 예에 있어서, 상기 적어도 하나의 비휘발성 메모리 장치는, 상기 섹션 정보를 섹션 별로 데이터 관리하기 위하여 섹션 관리 테이블을 더 포함한다.
본 발명의 실시 예에 따른 전자 장치는, 입출력 요청을 발생하는 호스트; 및 상기 입출력 요청에 따라 데이터를 입출력하는 저장 장치를 포함하고, 상기 저장 장치는, 적어도 하나의 비휘발성 메모리 장치; 및 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 제어기를 포함하고, 상기 제어기는, 상기 입출력 요청에 대응하는 논리 어드레스들을 지시하는 섹션을 발생 및 섹션 정보를 통하여 상기 섹션을 관리하는 섹션 관리 모듈; 상기 입출력 요청에 따른 상기 데이터 및 상기 섹션 정보를 저장하는 버퍼; 및 상기 섹션 정보를 근거로 하여 상기 데이터를 삭제하는 버퍼 관리 모듈을 포함하고, 상기 섹션 정보는 상기 입출력 요청에 대응하는 논리 어드레스들을 지시하는 공간 지역성 정보, 및 쓰기 요청 회수 및 읽기 요청 회수를 갖는 요청 이력 정보를 포함한다.
상술한 바와 같이 본 발명에 따른 저장 장치, 그것을 포함하는 전자 장치 및 그것의 데이터 관리 방법들은, 입출력 요청에 대응하는 공간 지역성 정보 및 요청 이력 정보에 따라 섹션을 발생 및 관리함으로써, 데이터 특성 및 접근 패턴을 쉽게 파악할 수 있다.
도 1은 본 발명의 실시 예에 따른 저장 장치를 갖는 전자 장치를 예시적으로 보여주는 도면이다.
도 2는 본 발명의 실시 예에 따른 섹션 정보를 예시적으로 보여주는 도면이다.
도 3은 본 발명에 따른 섹션의 발생 방법을 예시적으로 개념적으로 보여주는 도면이다.
도 4는 본 발명에 따라 병합 입출력 요청을 분리하여 다른 섹션으로 데이터 관리하는 방법을 개념적으로 보여주는 도면이다.
도 5는 본 발명에 따라 분리된 섹션들을 병합하는 방법을 개념적으로 보여주는 도면이다.
도 6은 본 발명에 따른 섹션 등록 방법을 예시적으로 보여주는 흐름도이다.
도 7은 본 발명에 따라 파일을 저장하는 과정을 예시적으로 보여주는 도면이다.
도 8은 본 발명에 따라 파일을 읽는 과정을 예시적으로 보여주는 도면이다.
도 9a, 도 9b, 도 9c 및 도 9d는 본 발명에 따라 식별된 섹션을 얼마나 구분할 수 있는 지를 실험한 결과를 예시적으로 보여주는 도면들이다.
도 10은 중복 제거에 적용하기 위한 섹션 정보를 예시적으로 보여주는 도면이다.
도 11은 중복 제거를 설명하기 위한 섹션을 예시적으로 보여주는 도면이다.
도 12는 본 발명의 실시 예에 따른 중복 제거 방법을 예시적으로 보여주는 흐름도이다.
도 13은 본 발명에 따른 프리페치를 설명하기 위한 도면이다.
도 14는 본 발명에 따른 프리페치 방법을 예시적으로 보여주는 흐름도이다.
도 15은 본 발명에 따른 버퍼 관리를 설명하기 위한 도면이다.
도 16은 본 발명에 따른 버퍼 관리 방법을 예시적으로 보여주는 흐름도이다.
도 17은 본 발명의 다른 실시 예에 따른 저장 장치를 갖는 전자 장치를 예시적으로 보여주는 도면이다.
도 18 내지 도 26은 본 발명의 응용 예들을 보여주는 도면들이다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 본 발명의 실시 예를 첨부된 도면을 참조하여 설명할 것이다.
도 1은 본 발명의 실시 예에 따른 저장 장치(100)를 갖는 전자 장치(10)를 예시적으로 보여주는 도면이다. 도 1을 참조하면, 전자 장치(10)는 저장 장치(100) 및 호스트(200)를 포함한다.
저장 장치(100)는 입출력 요청(RQ)에 따라 쓰기 동작을 수행하거나 읽기 동작을 수행한다. 저장 장치(100)는 적어도 하나의 비휘발성 메모리 장치(110) 및 제어기(120)를 포함한다.
비휘발성 메모리 장치(110)는 쓰기 동작시 데이터를 저장하고, 읽기 동작시 저장된 데이터를 읽는다. 낸드 플래시 10 메모리(NAND Flash Memory), 수직형 낸드 플래시 메모리(Vertical NAND; VNAN, 3D), 노아 플래시 메모리(NOR Flash Memory), 저항성 램(Resistive Random Access Memory: RRAM), 상변화 메모리(Phase-Change Memory: PRAM), 자기저항 메모리(Magnetroresistive Random Access Memory: MRAM), 강유전체 메모리(Ferroelectric Random Access Memory: FRAM), 스핀주입 자화반전 메모리(Spin Transfer Torque Random Access Memory: STT-RAM) 등이 될 수 있다.
제어기(120)는 비휘발성 메모리 장치(110)의 전반적인 동작을 제어한다. 제어기(120)는 입출력 요청(RQ)에 대응하는 논리 어드레스들을 지시하는 섹션(section)을 발생한다. 여기서 섹션은 입출력 요청(RQ)에 따른 논리 어드레스 공간으로써, 섹션의 크기는 입출력 요청(RQ)에 따라 가변적일 수 있다.
제어기(120)는 섹션 관리 모듈(122), 버퍼(124), 및 버퍼 관리 모듈(126)을 포함한다.
섹션 관리 모듈(122)은 입출력 요청(RQ)에 따라 섹션을 발생하거나, 발생된 섹션을 관리하기 위한 섹션 정보를 업데이트한다. 여기서 섹션 정보는 입출력 요청(RQ)에 대응하는 논리 어드레스들을 지시하는 공간 지역성 정보(spatial locality information) 및 입출력 요청(RQ)의 이력(history)과 관련된 요청 이력 정보(historical request information)를 포함할 수 있다. 요청 이력 정보에는 쓰기 요청 회수, 읽기 요청 회수 등이 포함될 수 있다.
버퍼(124)는 입출력 요청(RQ)에 대응하는 데이터를 저장하거나, 입출력 요청(RQ)에 따라 섹션 관리 모듈(122)로부터 발생된 섹션 정보를 저장한다. 실시 예에 있어서, 버퍼(124)는 DRAM, SRAM 등과 같은 휘발성 메모리 장치로 구현될 수 있다. 다른 실시 예에 있어서, 버퍼(124)는 PRAM 등과 같은 비휘발성 메모리 장치로도 구현될 수 있다.
버퍼 관리 모듈(126)은 버퍼(124)에 저장된 데이터를 관리한다. 예를 들어, 버퍼 관리 모듈(126)은 버퍼(124)로부터 삭제될 데이터를 선택 및 제거한다. 실시 예에 있어서, 버퍼 관리 모듈(126)은 섹션 관리 모듈(122)로부터 발생된 섹션 정보를 근거로 하여 버퍼(124)에 저장된 섹션에 대응하는 데이터(이하, 섹션 데이터)를 삭제할 수 있다.
저장 장치(100)는 SSD(solid state driver), 메모리 카드(flash memory card), 멀티미디어 카드(multimedia card; MMC), USB 플래시 드라이버(USB flash drive), 스마트미디어(smartmedia), 컴팩트 플래시, 메모리 스틱(memory stick), SD 카드(secure digital card), 유니버셜 플래시 저장 장치(universal flash storage; UFS) 등 일 수 있다.
호스트(200)는 입출력 요청(RQ)을 통하여 저장 장치(100)에 데이터를 저장시키거나, 데이터를 읽어온다. 호스트(200)는 USB, SCSI, ESDI, SATA, SAS, PCI-express, 혹은 IDE 인터페이스와 같은 인터페이스를 통하여 저장 장치(100)에 연결될 것이다.
전자 장치(10)는, 예를 들어, 태블릿 PC, 개인용/휴대용 컴퓨터, PMP(portable media player), 디지털 카메라, 캠코더 등이 될 수 있다.
일반적인 저장 장치는 임의로 지정된 상수 혹은 실험을 통해 얻게 된 값을 근거로 하여 데이터의 특성 및 접근 패턴을 파악 및 분류함으로써, 입출력 요청을 빠르게 한다. 하지만, 일반적인 저장 장치는 데이터의 특성 및 접근 패턴을 파악 및 분류를 쉽게 할 수 없다.
본 발명에 따른 저장 장치(100)는 입출력 요청(RQ)의 공간 지역성에 따라 논리 어드레스 공간을 섹션으로 구분하고, 입출력 요청(RQ)에 따른 요청 이력 정보를 섹션별로 데이터 관리한다. 이로써, 본 발명의 저장 장치(100)는 파일 시스템에서의 문맥(context; 예를 들어, 입출력 요청)에 따라 유연하게 논리 어드레스 공간을 구분하고, 구분된 논리 어드레스 공간, 즉, 섹션으로부터 연관된 데이터를 쉽게 구분할 수 있다.
도 2는 본 발명의 실시 예에 따른 섹션 정보를 예시적으로 보여주는 도면이다. 도 2를 참조하면, 섹션 정보는, 공간 지역성 정보 및 요청 이력 정보를 포함한다. 공간 지역성 정보는 섹션이 시작되는 논리 어드레스(logical address) 및 섹션의 크기에 대응하는 논리 어드레스의 개수를 지시하는 길이(length)를 포함한다. 요청 이력 정보는, 읽기 요청 회수(number of read request) 및 쓰기 요청 회수(number of write request)를 포함한다. 또한, 섹션 정보는, 섹션을 통한 다양한 데이터 관리를 위한 기타 정보를 더 포함할 수 있다.
도 3은 본 발명에 따른 섹션의 발생 방법을 예시적으로 개념적으로 보여주는 도면이다. 도 3을 참조하면, 섹션은 기본적으로 하나의 입출력 요청에 따라 발생된다.
호스트(도 1 참조, 200)로부터 제 1 내지 제 4 입출력 요청들(RQ1~RQ4)이 순차적으로 저장 장치(도 1 참조, 100)에 입력될 때, 섹션들(STN1~STN3)의 발생 방법은 다음과 같다.
제 1 입출력 요청(RQ1) 입력시 저장 장치(100)의 섹션 관리 모듈(도 1 참조, 122)은 제 1 섹션(STN1)을 발생한다. 제 1 섹션(STN1)은 제 7 논리 어드레스(LA7)부터 제 9 논리 어드레스(LA9)에 대응하는 논리 어드레스 공간이다.
그 후, 제 2 입출력 요청(RQ2) 입력시 섹션 관리 모듈(122)은 제 2 섹션(STN2)을 발생한다. 제 2 섹션(STN2)은 제 10 논리 어드레스(LA10)부터 제 13 논리 어드레스(LA13)에 대응하는 논리 어드레스 공간이다.
그 후, 제 3 입출력 요청(RQ3) 입력시, 섹션 관리 모듈(122)은 새로운 섹션을 발생하지 않는다. 왜냐하면, 제 3 입출력 요청(RQ3)에 대응하는 섹션이 이미 발생된 제 1 섹션(STN1)과 동일하기 때문이다.
도시되지 않았지만, 섹션 관리 모듈(122)은, 이미 발생된 섹션과 일부가 겹치더라도 현재 입력된 입출력 요청과 이전 입출력 요청이 서로 다르다면, 새로운 섹션을 발생한다. 왜냐하면, 이미 발생된 섹션의 데이터와 새롭게 발생된 섹션의 데이터는 서로 연관성이 적다고 판별되기 때문이다.
그 후, 제 4 입출력 요청(RQ4) 입력시, 섹션 관리 모듈(122)은 제 3 섹션(STN3)을 발생한다. 제 3 섹션(STN3)은 제 3 논리 어드레스(LA3)부터 제 6 논리 어드레스(LA6)에 대응하는 논리 어드레스 공간이다.
도 3에서는 4 번의 입출력 요청들(RQ1~RQ4)에 따라 3 개의 섹션들(STN1~STN3)이 발생된다.
한편, 호스트(도 1 참조, 200)로부터 저장 장치(100)로 입력된 입출력 요청은 서로 다른 입출력 요청이 병합될 수도 있다. 예를 들어, 호스트(200)는 데이터 연관성과 상관없이 어드레스 공간이 연속되었다는 이유로 서로 다른 입출력 요청들을 하나의 입출력 요청으로 병합시킬 수 있다. 본 발명은 이와 같이 병합된 입출력 요청시 원래의 입출력 요청들에 대응하는 분리된 섹션들을 발생시킬 수 있다.
도 4는 본 발명에 따라 병합 입출력 요청을 분리하여 다른 섹션으로 데이터 관리하는 방법을 개념적으로 보여주는 도면이다. 도 4를 참조하면, 3개의 입출력 요청들(RQ1, RQ2, RQ3)에 응답하여 3개의 섹션들(STN1, Prior STN2, Prior STN3)이 발생된다. 여기서 제 2 입출력 요청(RQ2)이 병합된 입출력 요청이라고 가정하겠다.
도 4에 도시된 바와 같이, 제 2 입출력 요청(RQ1)과 제 3 입출력 요청(RQ3) 사이에는 겹치는 어드레스 공간(LA8)이 존재한다. 섹션 관리 모듈(도 1 참조, 122)는 이전 제 2 섹션(Prior STN2)에서 제 2 입출력 요청(RQ2)과 제 3 입출력 요청(RQ3) 사이의 겹치는 어드레스 공간(LA8)을 뺀 새로운 제 2 섹션(New STN2), 제 2 입출력 요청(RQ2)과 제 3 입출력 요청(RQ3) 사이의 겹치는 어드레스 공간(LA8)에 대응하는 새로운 섹션(New STN3), 및 이전 제 3 섹션(Prior STN3)에서 제 2 입출력 요청(RQ2)과 제 3 입출력 요청(RQ3) 사이의 겹치는 어드레스 공간(LA8)을 뺀 제 4 섹션(STN4)을 발생한다. 이로써, 병합된 입출력 요청(RQ2)에 따른 이전 제 2 섹션(Prior STN2)은 섹션들(New STN2, New STN3)로 분리된다.
실시 예에 있어서, 새로운 섹션(New STN3)의 요청 이력 정보(쓰기 요청 회수 혹은 읽기 요청 회수)는, 이전 섹션(Prior STN2)의 요청 이력 정보(쓰기 요청 회수 혹은 읽기 요청 회수)에 입출력 요청(RQ3)에 대응하는 요청 이력 정보(쓰기 요청 회수 및 읽기 요청 회수 중 어느 하나)를 반영한 것이다. 예를 들어, 이전 섹션(Prior STN2)의 요청 이력 정보는 2번의 쓰기 요청과 4번의 읽기 요청을 갖고, 제 3 입출력 요청(RQ3)이 쓰기 요청이라면, 새로운 섹션(New STN3)의 요청 이력 정보는 3번의 쓰기 요청 및 4번의 읽기 요청을 포함할 것이다.
본 발명의 섹션 관리 방법은, 병합된 입출력 요청에 따른 섹션을 분리할 수 있다.
도 4에서 제 3 입출력 요청(RQ3)에 따른 발생된 이전 제 3 섹션(Prior STN3)은 두 개의 섹션들(New STN3, STN4)로 분리된다. 본 발명의 섹션 관리 방법은 이렇게 분리된 섹션들을 다시 병합할 수도 있다.
도 5는 본 발명에 따라 분리된 섹션들을 병합하는 방법을 개념적으로 보여주는 도면이다. 도 5를 참조하면, 겹치는 어드레스 공간(LA8)에 대응하는 섹션(New STN3)이 새롭게 추가됨으로써, 3개의 입출력 요청들(RQ1, RQ2, RQ3)에 대응하여 발생된 섹션들의 개수는 4개이다. 이후, 섹션 관리 모듈(도 1 참조, 122)은, 저장 장치(도 1 참조, 100)가 아이들 상태(idle)일 때, 어드레스가 연속하면서 분리된 섹션들의 병합 여부를 판별하고, 병합할 필요가 있는 섹션들을 병합시킨다.
예를 들어, 제 3 입출력 요청(RQ3)에 대응하는 섹션들(New STN3, STN4)의 경우에, 읽기 요청 회수 및 쓰기 요청 회수가 모두 동일하다면, 섹션 관리 모듈(122)은 섹션들(New STN3, STN4)을 병합함으로써, 병합된 섹션(Merged STN3)을 발생한다.
한편, 섹션들(New STN3, STN4)이 병합될 때 실제적인 데이터의 이동 여부는 아래와 같이 결정될 것이다. 첫째로, 병합 전에 각 섹션들(New STN3, STN4)에 대응하는 데이터들이 서로 불연속적인 물리 공간에 존재할 때, 병합 동작시 연속적인 물리 공간에 존재하도록 데이터가 이동될 것이다. 둘째로, 섹션에 따른 맵핑 테이블 형태로 데이터가 데이터 관리될 때, 별도의 데이터 이동이 필요하지 않다.
본 발명에 따른 섹션 관리 방법은 분리된 섹션들을 병합시킬 수 있다.
도 6은 본 발명에 따른 섹션 등록 방법을 예시적으로 보여주는 흐름도이다. 도 1 내지 도 6을 참조하면, 섹션 등록 방법은 다음과 같이 수행된다.
호스트(도 1 참조, 200)로부터 출력된 입출력 요청(RQ)이 저장 장치(도 1 참조, 100)의 제어기(도 1 참조, 120)로 입력된다(S110). 입출력 요청(RQ)은 쓰기 요청 및 읽기 요청 중 어느 하나일 수 있다.
섹션 관리 모듈(도 1 참조, 122)은 입력된 입출력 요청(RQ)을 분석하고, 입출력 요청(RQ)에 대응하는 섹션이 존재하는지를 판별한다(S120).
만일, 입력된 입출력 요청(RQ)에 대응하는 섹션이 존재하면, 섹션 관리 모듈(122)은 입출력 요청(RQ)에 따른 쓰기 요청 회수 혹은 읽기 회수가 증가되도록 섹션 정보를 업데이트한다(S130). 이후, 섹션 등록은 완료된다.
반면에, 입력된 입출력 요청(RQ)에 대응하는 섹션이 존재하지 않으면, 섹션 관리 모듈(122)은 새로운 섹션을 발생한다(S120).
이후, 섹션 관리 모듈(122)은 발생된 새로운 섹션의 일부와 겹치는 이전 섹션이 있는 지를 판별한다(S150). 만일, 새로운 섹션의 일부와 겹치는 이전 섹션이 존재하지 않으면, 섹션 등록은 완료된다.
반면에, 새로운 섹션의 일부와 겹치는 이전 섹션이 존재한다면, 섹션 관리 모듈(122)은 겹치는 어드레스 공간에 대응하는 다른 새로운 섹션을 발생한다(S160). 여기서 새로운 섹션의 발생 방법에 대한 자세한 것은, 도 4 및 도 5에서 상술 된 바와 같다.
이후, 섹션 관리 모듈(122)은 어드레스 공간 지역성 정보로부터 겹치는 어드레스 공간을 제거되도록 이전 섹션의 섹션 정보를 업데이트한다(S170). 이후, 섹션 등록은 완료된다.
본 발명에 따른 섹션 등록 방법은, 입출력 요청(RQ)에 대응하는 섹션을 발생하고, 일부분이 겹치는 섹션들에 대하여 분리된 섹션들을 발생한다.
도 7은 본 발명에 따라 파일을 저장하는 방법을 예시적으로 보여주는 도면이다. 도 1 내지 도 7을 참조하면, 파일(A)을 저장하는 과정은 다음과 같다.
호스트(200)의 파일 시스템에서 파일(A)은 논리 어드레스들(LA i+1, LA i+2)에 구분되어 맵핑된다. 호스트(200)는 섹션 단위로 맵핑된 파일(A)을 쓰기 요청에 의해 저장 장치(100)로 전송한다. 저장 장치(100)로 전송된 파일(A)은 물리 어드레스들(PA j+1, PA j+2)에 대응하는 물리 공간에 저장된다.
실시 예에 있어서, 쓰기 요청은, 비동기적으로 쓰여지기 때문에 서로 다른 입출력 요청들과 병합될 수 있다.
도 8은 본 발명에 따라 파일을 읽는 과정을 예시적으로 보여주는 도면이다. 도 1 내지 도 8을 참조하면, 파일(A)을 읽는 과정은 다음과 같다.
호스트(200)의 파일 시스템은 파일(A)을 읽기 위하여 논리 어드레스들(LA i+1, LA i+2)에 연관된 읽기 요청을 저장 장치(100)로 전송한다. 읽기 요청은, 쓰기 요청과 달리 지연되는 것을 피하기 위해서 입출력 요청들의 병합이 최소화된 상태에서 저장 장치(100)로 전송된다. 이러한 이유로, 특정한 논리 어드레스 공간들에 읽기 동작 및 쓰기 동작이 수행된 사실로부터 논리 어드레스 공간들 각각에 저장된 데이터의 연관성이 식별될 수 있다.
섹션 관리 모듈(122)은 읽기 요청에 따른 섹션의 요청 이력 정보(쓰기 요청 회수 및 읽기 요청 회수)를 확인하고, 논리 어드레스들(LA i+1, LA i+2)이 서로 연관된 어드레스들임을 유추한다. 섹션 관리 모듈(122)은 특정한 논리 어드레스 구간, 즉 섹션에서 읽기 요청 회수와 쓰기 요청 회수가 각각 기준 값 이상일 때, 섹션 내의 데이터들이 서로 연관되어 있다고 판별할 수 있다.
섹션 관리 모듈(122)의 판별에 따라 저장 장치(100)의 물리 어드레스들(PA j+1, PA j+2)로부터 데이터를 읽는 과정은 달라질 것이다. 예를 들어, 물리 어드레스들(PA j+1, PA j+2)이 연관되어 있다면, 저장 장치(100)에 저장된 데이터는 프리페치 동작을 이용하여 읽혀질 수 있다. 반면에, 물리 어드레스들(PA j+1, PA j+2)이 연관되어 있지 않다면, 저장 장치(100)에 저장된 데이터가 정상적인 읽기 동작을 이용하여 읽혀질 것이다. 읽혀진 데이터는 섹션 단위로 호스트(200)로 전송된다.
도 9a, 도 9b, 도 9c 및 도 9d는 본 발명에 따라 식별된 섹션(identified section)을 얼마나 구분할 수 있는 지를 실험한 결과를 예시적으로 보여주는 도면들이다. 도 9a 및 도 9b는, NTFS 파일 시스템에서 다양한 작업을 하면서 얻게된 트레이스(pcNTFS1, pcNTFS2)에 관련된 것이고, 도 9c는 웹 서핑(web-surfing)을 하면서 얻게된 웹 서핑 트레이스에 관련된 것이고, 도 9d는 FAT32 파일 시스템 상에서 여러 작업을 하면서 얻게된 트레이스( pcFAT32)에 관련된 것이다. 여기서, Y 축은 개수이고, # section 은 섹션의 개수이고, # access는 섹션들에 발생한 입출력 요청들의 합이다. 'identical'은 식별된 섹션을 의미하고, 'total'은 전체 섹션을 의미한다.
도 9a을 참조하면, 트레이스(pcNTFS1)는 전체 섹션 중에서 74%가 식별된 섹션으로 구분된다. 여기에 접근하는 비율은 전체 접근 중 88.1%이다. 도 9b을 참조하면, 트레이스(pcNTFS2)는 임의 접근이 많이 발생하기 때문에 식별된 섹션이 상대적으로 적다. 도 9c를 참조하면, 트레이스(web-surfing)는 임시 파일 접근이 많이 발생하여 상대적으로 적은 비율의 식별된 섹션을 구분한다. 도 9d를 참조하면, 트레이스(pcFAT32)는 58.2%가 식별된 섹션으로 구분된다. 여기에 발생하는 입출력 접근은 전체의 70%이다.
응용 분야에 따라서 읽기 요청 회수 및 쓰기 요청 회수가 기준 값 이상인지 아닌지가 중요하지 않을 수도 있다. 예를 들어, 섹션 간에 연속성을 파악하기 위해서 섹션들의 논리 어드레스 구간이 연속하는지와 읽기 요청 회수 및 쓰기 요청 회수가 동일한지가 이용될 수 있기 때문이다. 하나의 입출력 요청이 접근하는 구간은 파일 시스템에 따라 제한되어 있다. 따라서 한 파일에 접근할 때, 여러 개의 입출력 요청들이 발생할 수 있지만, 접근 회수는 동일하다. 그러므로, 섹션 간의 논리 어드레스 구간이 연속되는 지(공간 지역성 정보)와 접근 회수가 동일한 지(요청 이력 정보)를 통해 섹션 간의 연속성이 충분하게 판별될 수 있다. 물론 식별된 섹션들에 대하여 판별된 데이터의 연속성은 미식별된 섹션들의 연속성보다 더욱 신뢰성이 높을 것이다. 따라서 어떤 섹션들을 활용할 것인지는 활용 분야에 따라 다양하게 선택될 수 있다.
아래에서는 본 발명에 따라 발생된 섹션을 응용하는 저장 장치의 데이터 관리 방법들에 대하여 설명하도록 하겠다.
중복 제거 방법( deduplication )
본 발명에 따른 섹션은 중복 제거(deduplication)에 적용 가능하다. 중복 제거는 쓰기 요청된 데이터가 기존에 저장된 데이터와 동일한 경우, 중복적으로 쓰기 요청된 데이터를 저장하는 대신 기존에 저장된 데이터를 참조한다. 즉, 중보 제거가 이용되면, 저장 장치(도 1 참조, 100)는, 데이터 백업 동작시 파일의 변경된 내용만을 저장하기 때문에 저장 공간을 획기적으로 줄일 수 있다. 중복 제거에 대한 자세한 것은 삼성전자에서 출원되었으며, 이 출원의 참고 문헌으로 결합된 한국 출원 특허 번호 10-2011-0131166(미국 출원 번호 _________)에서 설명될 것이다.
도 10은 중복 제거에 적용하기 위한 섹션 정보를 예시적으로 보여주는 도면이다. 도 10을 참조하면, 섹션 정보는 도 2에 도시된 섹션 정보와 비교하여 중복 제거 정보를 더 포함한다.
실시 예에 있어서, 중복 제거 정보는 섹션의 중복 제거 비율일 수 있다. 여기서 중복 제거 비율은 섹션의 전체 어드레스 공간에서 중복 제거된 데이터를 갖는 어드레스 공간의 비율이다. 여기서, 중복 제거 비율은 식별된 섹션에 저장될 수 있다.
다른 실시 예에 있어서, 중복 제거 정보는 중복 제거된 데이터를 갖는 논리 어드레스의 개수일 수 있다. 이때 중복 제거 비율은 섹션의 전체 논리 어드레스들의 개수 중에서 중복 제거된 데이터 갖는 논리 어드레스의 개수의 비율로 계산될 수 있다.
저장 장치(도 1 참조, 100)는 중복 제거 비율을 근거로 하여 즉시 중복 제거를 처리할 것인지, 혹은 나중에 중복 제거를 처리할 것인지를 결정한다. 즉시 중복 제거를 처리하는 것은 "in-line processing", "foreground job, "on-the-fly job" 이라는 용어들로 알려져 있고, 나중에 중복 제거를 처리하는 것은, "out-of-line processing", "background job" 이라는 용어들로 알려져 있다.
도시되지 않았지만, 저장 장치(100)의 제어기(120)는 섹션 정보를 근거로 하여 중복 제거를 수행하는 중복 제거 모듈을 더 포함할 수 있다. 중복 제거 모듈은, 섹션 관리 모듈(도 1 참조, 122)로부터 섹션의 중복 제거 비율을 근거로 하여 중복 제거를 즉시 수행할 지 혹은 나중에 수행할 지를 결정할 수 있다.
실시 예에 있어서, 중복 제거는, 적어도 하나의 비휘발성 메모리 장치(도 1 참조, 110)에 저장된 소정 단위의 데이터(혹은, 'chunk'라고 함)의 해쉬(hash) 값과 섹션에 대응하는 데이터 중 소정 단위의 데이터의 해쉬 값이 동일할 때, 저장된 소정 단위의 데이터와 섹션의 소정 단위의 데이터가 동일한 것으로 판별한다.
실시 예에 있어서, 중복 제거는 BSW(basic sliding window) 알고리즘을 이용하여 수행될 수 있다. BSW 알고리즘은 소정의 단위의 데이터에 대응하는 윈도우가 한쪽 방향으로 이동하면서 데이터의 해쉬 값을 계산한다.
본 발명은 섹션에 포함된 중복 제거 정보를 근거로 하여 중복 제거를 처리할 수 있다.
도 11은 중복 제거를 설명하기 위한 섹션을 예시적으로 보여주는 도면이다. 도 11을 참조하면, 3 개의 섹션들(STN1, STN2, STN3)이 존재하며, 여기서 제 3 섹션은 식별된 섹션이다. 여기서 식별된 섹션은 중복 제거가 수행된 섹션을 의미한다.
도 12는 본 발명의 실시 예에 따른 중복 제거 방법을 예시적으로 보여주는 흐름도이다. 도 1 내지 도 12를 참조하면, 중복 제거 방법은 다음과 같이 수행된다.
호스트(도 1 참조, 200)로부터 저장 장치(도 1 참조, 100)로 쓰기 요청이 입력된다(S210).
섹션 관리 모듈(도 1 참조, 122)은 쓰기 요청된 섹션의 중복 제거 비율이 기준 값보다 큰지를 판별한다(S220). 만일, 중복 제거 비율이 기준 값보다 크면, 즉시 중복 제거가 수행된다(S230).
반면에, 쓰기 요청된 섹션의 중복 제거 비율이 기준 값보다 크지 않다면, 비휘발성 메모리 장치(도 1 참조, 110)에 쓰기 요청에 따라 쓰기 동작이 수행된다(S250). 이후, 섹션에 쓰기 요청 회수가 업데이트된다(S260).
이후에, 저장 장치(100)가 아이들 상태(idle state)일 때, 저장된 데이터를 스캔하여 중복 제거가 수행된다(S270). 이후 S240 단계가 진행된다.
도 12에서 도시된 중복 제거 방법은 쓰기 요청에 대응하는 섹션이 이미 존재한다고 가정한다. 그러나 본 발명이 여기에 제한될 필요는 없다. 본 발명의 중복 제거 방법은, 쓰기 요청에 대응하는 섹션이 존재하는 지를 판별하는 단계, 및 쓰기 요청에 대응하는 섹션이 존재하지 않을 때, 쓰기 요청에 대응하는 섹션을 발생하는 단계를 추가할 수 있다.
상술 된 바와 같이, 중복 제거 방법은, 섹션의 중복 제거 비율을 근거로 하여 즉시 중복 제거를 수행할지 아니면, 아이들 상태가 될 때 중복 제거를 수행할 지를 결정한다.
본 발명에 따른 중복 제거 방법은 입출력 요청의 공간 지역성을 고려하여 선택적으로 중복 제거를 할 수 있다. 본 발명에 따른 중복 제거 방법은, 섹션의 중복 제거 비율을 이용하여 중복 제거를 수행함으로써 중복 제거 효율을 높힐 수 있다.
프리페치 방법( prefetch )
본 발명에 따른 섹션은 프리페치에도 적용 가능하다.
도 13은 본 발명에 따른 프리페치를 설명하기 위한 도면이다. 도 13을 참조하면, 3 개의 섹션들(STN1, STN2, STN3)에 존재하고, 제 1 섹션(STN1)에 읽기 요청시, 제 2 섹션(STN2)의 읽기 요청이 예상될 때 제 2 섹션(STN2)에 대응하는 데이터가 프리페치된다.
여기서, 섹션의 읽기 요청을 예상할 때, 각 섹션의 공간 지역성 정보 및 요청 이력 정보가 이용될 수 있다. 도 13에서 설명의 편의를 위하여, 제 1 섹션(STN1)은 제 2 섹션(STN2)에 물리적으로 연속하고, 제 1 섹션(STN1)에서 읽기 요청 회수가 3이고 쓰기 요청 회수가 3이고, 제 2 섹션(STN2)에서 읽기 요청 회수가 3이고, 쓰기 요청 회수가 3이라고 가정한다.
예를 들어, 제 1 섹션(STN1)과 제 2 섹션(STN2)의 어드레스 공간이 연속적으로 존재하고, 요청 이력 정보가 동일한 것을 근거로 미루어 볼 때, 제 1 섹션(STN1)에 읽기 요청이 입력되면, 제 2 섹션(STN2)에도 읽기 요청이 입력이 예상될 것이다. 제 2 섹션(STN2)의 읽기 요청이 예상되기 때문에 대응하는 데이터가 프리페치될 것이다.
본 발명은 섹션 정보(공간 지역성 정보 및 요청 이력 정보)를 근거로 프리페치를 수행한다.
도 14는 본 발명에 따른 프리페치 방법을 예시적으로 보여주는 흐름도이다. 도 1 내지 도 9, 도 13 및 도 14를 참조하면, 프리페치 방법은 다음과 같이 수행된다.
호스트(도 1 참조, 200)로부터 읽기 요청이 저장 장치(도 1 참조, 100)로 입력된다(S310).
읽기 요청에 관련된 섹션에 대응하는 데이터가 프리페치된다(S320).
섹션 관리 모듈(도 1 참조, 122)은 섹션 정보를 근거로 하여 다음 섹션에 읽기 요청이 입력될 지를 예측한다(S330). 만약, 다음 섹션의 읽기 요청이 예상된다면, 다음 섹션의 데이터가 프리페치된다(S340). 이후, S350 단계가 진행된다. 반면에, 다음 섹션의 읽기 요청이 예상되지 않으면, S350 단계가 진행된다.
프리페치된 데이터로부터 읽기 요청에 따라 데이터가 읽혀진다(S350). 이후, 섹션의 읽기 요청 회수가 업데이트된다(S360).
도 14에서 도시된 프리페치 방법은 읽기 요청에 대응하는 섹션이 이미 존재한다고 가정한다. 그러나 본 발명이 여기에 제한될 필요는 없다. 본 발명의 프리페치 방법은, 제 1 읽기 요청에 대응하는 섹션이 존재하는 지를 판별하는 단계, 및 제 1 읽기 요청에 대응하는 섹션이 존재하지 않을 때, 제 1 읽기 요청에 대응하는 섹션을 발생하는 단계를 추가할 수 있다.
본 발명의 프리페치 방법은, 섹션 정보를 근거로 다음 섹션의 읽기 요청을 예상하여 프리페치를 수행함으로써, 후에 발생할 읽기 요청을 보다 빠르게 처리할 수 있다.
버퍼 관리 방법( buffer management )
본 발명에 따른 섹션은 버퍼 관리에도 적용 가능하다.
도 15은 본 발명에 따른 버퍼 관리를 설명하기 위한 도면이다. 도 15을 참조하면, 3개의 섹션들(STN1, STN2, STN3)에 대응하는 데이터들이 버퍼(도 1 참조, 124)에 저장되어 있고, 제 1 및 제 2 섹션들(STN1, STN2)의 쓰기 요청 회수는 1이고, 제 3 섹션(STN3)의 쓰기 요청 회수는 13이다. 버퍼 관리 모듈(도 1 참조, 126)은, 버퍼(124)로부터 데이터를 삭제할 필요가 있을 때, 섹션 관리 모듈(도 1 참조, 122)로부터 섹션들(STN1, STN2, STN3) 중 쓰기 요청 회수가 작은 섹션(예를 들어, STN1, STN2)의 데이터를 우선적으로 비휘발성 메모리 장치(도 1 참조, 110)에 저장한 뒤, 이후에 섹션의 데이터를 버퍼(124)로부터 삭제한다.
한편, 제 1 및 제 2 섹션들(STN1, STN2)의 데이터가 이미 비휘발성 메모리 장치(110)에 저장되어 있다면, 버퍼 관리 모듈(126)은 버퍼(124)로부터 섹션들(STN1, STN2)의 데이터만 삭제한다.
본 발명은 섹션 정보를 이용하여 버퍼 관리를 수행할 수 있다.
도 16은 본 발명에 따른 버퍼 관리 방법을 예시적으로 보여주는 흐름도이다. 도 1 내지 도 8, 도 15 및 도 16를 참조하면, 버퍼 관리 방법은 다음과 같이 수행된다.
버퍼 관리 모듈(도 1 참조, 126)은 버퍼(도 1 참조, 124)를 비울 필요가 있는지 판별한다(S410). 만일 버퍼(124)를 비울 필요가 없다고 버퍼 관리 동작은 완료된다.
반면에, 버퍼를 비울 필요가 있을 때, 버퍼 관리 모듈(126)은 섹션 관리 모듈(도 1 참조, 1 122)로부터 전송된 섹션 정보를 근거로 하여, 섹션의 쓰기 요청 회수가 기준 값보다 큰지 판별한다(S420).
만일, 쓰기 요청 회수가 기준 값보다 큰다면, 섹션의 데이터는 버퍼(124)에 남겨둔다(S430). 이후 버퍼 관리 동작은 완료된다. 반면에, 쓰기 요청 회수가 기준 값보다 크지 않다면, 섹션의 데이터는 버퍼(124)로부터 삭제된다. 이후, 버퍼 관리 동작은 완료된다.
본 발명에 따른 버퍼 관리 방법은 쓰기 요청 회수를 근거로 하여 버퍼(124)로부터 섹션의 데이터를 삭제할 수 있다.
도 15 및 도 16에서 쓰기 요청 회수에 따라 버퍼 관리가 수행된다. 그러나 본 발명의 버퍼 관리가 여기에 제한될 필요는 없다. 본 발명의 버퍼 관리 방법은 읽기 요청 회수에 따라 버퍼(124)로부터 섹션의 데이터를 삭제할 수도 있다.
정리하면, 본 발명에 따른 버퍼 관리 방법은 섹션 정보를 근거로 하여 버퍼를 데이터 관리할 수 있다.
본 발명의 섹션 정보는 테이블 형태로 비휘발성 메모리 장치에 저장될 수 있다.
도 17은 본 발명의 다른 실시 예에 따른 저장 장치(300)를 갖는 전자 장치(20)를 예시적으로 보여주는 도면이다. 도 17을 참조하면, 저장 장치(300)는, 도 1에 도시된 저장 장치(100)와 비교하여 섹션 관리 테이블(312)을 더 포함한다.
비휘발성 메모리 장치(310)는 섹션 관리 테이블(312)을 포함한다. 제어기(320)는 섹션 관리 모듈(322), 버퍼(324), 버퍼 관리 모듈(324)을 포함한다.
본 발명에 따른 저장 장치(300)는 입출력 요청(RQ)에 따라 발생된 섹션들을 데이터 관리하는 섹션 정보를 테이블 형태로 섹션 관리 테이블(312)에 저장시킨다.
본 발명은 다양한 장치들에 응용 가능하다.
도 18은 본 발명의 실시 예에 따른 메모리 시스템을 보여주는 블록도이다. 도 18을 참조하면, 메모리 시스템(1000)은 적어도 하나의 비휘발성 메모리 장치(1100) 및 메모리 제어기(1200)를 포함한다. 메모리 시스템(1000)은 도 1 내지 도 17에 상술된 바와 같이 입출력 요청에 따라 섹션을 발생 및 데이터 관리한다.
비휘발성 메모리 장치(1100)는 외부로부터 고전압(Vpp)을 옵션적으로 제공받을 수 있다. 메모리 제어기(1200)는 복수의 채널들을 통하여 비휘발성 메모리 장치(1100)에 연결된다. 메모리 제어기(1200)는 적어도 하나의 중앙처리장치(1210), 버퍼 메모리(1220), 에러 정정회로(1230), 코드(1240), 호스트 인터페이스(1250) 및 메모리 인터페이스(1260)를 포함한다. 도시되지 않았지만, 메모리 제어기(1200)는 데이터를 랜덤화시키거나 디랜덤화시키는 랜덤화 회로를 더 포함할 수 있다. 본 발명의 메모리 시스템(1000)은 PPN(Perfect Page New)에 적용가능하다. 비휘발성 메모리 장치(1110)는 도시되지 않았지만, 외부의 고전압을 선택적으로 입력받을 수 있다.
한편, 메모리 시스템에 대한 좀더 자세한 것은 삼성전자에서 출원하였으며 참고 문헌으로 결합된 미국 등록 특허 번호 US 8,027,194, 미국 공개 번호 US 2010-0082890에서 설명될 것이다.
도 19는 본 발명의 실시 예에 따른 메모리 카드에 대한 블록도이다. 도 19를 참조하면, 메모리 카드(2000)는 적어도 하나의 플래시 메모리 장치(2100), 버퍼 메모리 장치(2200) 및 그것들을 제어하는 메모리 제어기(2300)를 포함한다. 메모리 카드(2000)는 도 1 내지 도 17에 상술된 바와 같이 입출력 요청에 따라 섹션을 발생 및 데이터 관리한다.
버퍼 메모리 장치(2200)는 메모리 카드(2000)의 동작 중 생성되는 데이터를 임시로 저장하기 위한 장치이다. 버퍼 메모리 장치(2200)는 디램 혹은 에스램 등으로 구현될 수 있다. 메모리 제어기(2300)는 복수의 채널들을 통하여 플래시 메모리 장치(2100)에 연결된다. 메모리 제어기(2300)는 호스트 및 플래시 메모리 장치(2100)에 사이에 연결된다. 호스트로부터의 요청에 응답하여, 메모리 제어기(2300)는 플래시 메모리 장치(2100)를 억세스한다.
메모리 제어기(2300)는 적어도 하나의 마이크로 프로세서(2310), 호스트 인터페이스(2320), 플래시 인터페이스(2330)를 포함한다. 적어도 하나의 마이크로 프로세서(2310)는 펌웨어(firmware)를 동작하도록 구현된다. 호스트 인터페이스(2320)는 호스트와 메모리 카드(2000) 사이에 데이터 교환을 수행하기 위한 카드 프로토콜(예를 들어, SD/MMC)을 통해 호스트와 인터페이싱한다. 이러한 메모리 카드(2000)는 멀티미디어 카드(Multimedia Card: MMC), 보안 디지털(Security Digital: SD), miniSD, 메모리 스틱(Memory Stick), 스마트미디어(Smart Media), 트랜스플래시(TransFlash) 카드 등에 적용가능하다.
도 20은 본 발명의 실시 예에 따른 모비낸드에 대한 블록도이다. 도 20을 참조하면, 모비낸드(3000)는 적어도 하나의 낸드 플래시 메모리 장치(3100) 및 제어기(3200)를 포함할 수 있다. 모비낸드(3000)는 MMC 4.4(다른 말로, eMMC) 규격을 지원한다. 모비낸드(3000)는 도 1 내지 도 17에 상술된 바와 같이 입출력 요청에 따라 섹션을 발생 및 데이터 관리한다.
낸드 플래시 메모리 장치(3100)는 외부 고전압(Vpp)을 옵션적으로 제공받을 수 있다. 낸드 플래시 메모리 장치(3100)는 SDR(Sing Data Rate) 낸드 혹은 DDR(Double Data Rate) 낸드일 수 있다. 실시 예에 있어서, 낸드 플래시 메모리 장치(3100)는 단품의 낸드 플래시 메모리 장치들을 포함할 수 있다. 여기서, 단품의 낸드 플래시 메모리 장치들은 하나의 패키지(예를 들어, FBGA, Fine-pitch Ball Grid Array)에 적층되어 구현될 수 있다.
메모리 제어기(3200)는 복수의 채널들(CH1~CH4)을 통하여 플래시 메모리 장치(3100)에 연결된다. 한편, 채널들의 개수는 4개로 제한되지 않을 것이다. 제어기(3200)는 적어도 하나의 제어기 코어(3210), 호스트 인터페이스(3220) 및 낸드 인터페이스(3230)를 포함한다. 적어도 하나의 제어기 코어(3210)는 모비낸드(3000)의 전반적인 동작을 제어한다.
호스트 인터페이스(3220)는 제어기(3210)와 호스트의 인터페이싱을 수행한다. 낸드 인터페이스(3230)는 낸드 플래시 메모리 장치(3100)와 제어기(3200)의 인터페이싱을 수행한다. 실시 예에 있어서, 호스트 인터페이스(3220)는 병렬 인터페이스(예를 들어, MMC 인터페이스)일 수 있다. 다른 실시 예에 있어서, 모비낸드(3000)의 호스트 인터페이스(3220)는 직렬 인터페이스(예를 들어, UHS-II, UFS 인터페이스)일 수 있다.
모비낸드(3000)는 호스트로부터 전원전압들(Vcc, Vccq)을 제공받는다. 여기서, 제 1 전원전압(Vcc: 3.3V)은 낸드 플래시 메모리 장치(3100) 및 낸드 인터페이스(3230)에 제공되고, 제 2 전원전압(Vccq: 1.8V/3.3V)은 제어기(3200)에 제공된다. 실시 예에 있어서, 모비낸드(3000)는 외부 고전압(Vpp)을 옵션적으로 제공받을 수 있다.
본 발명의 실시 예에 따른 모비낸드(3000)는 대용량의 데이터를 저장하는 데 유리할 뿐 아니라, 향상된 읽기 동작 특성을 갖는다. 본 발명의 실시 예에 따른 모비낸드(3000)는 소형 및 저전력이 요구되는 모바일 제품(예를 들어, 갤럭시S, 아이폰 등)에 응용 가능하다.
도 20에 도시된 모비낸드(3000)는 복수의 전원전압들(Vcc, Vccq)을 제공받는다. 하지만 본 발명의 모비낸드가 반드시 여기에 제한될 필요는 없다. 본 발명의 모비낸드는 전원전압(Vcc)을 입력받아 내부에서 부스팅 혹은 레귤레이팅함으로써, 낸드 인터페이스 및 낸드 플래시 메모리에 적합한 전원전압(3.3V)을 발생하도록 구현될 수도 있다. 이러한 내부 부스팅 혹은 레귤레이팅 동작에 대한 자세한 것은 삼성전자에서 출원하였으며 참고문헌으로 결합된 미국 등록 특허 7,092,308에서 설명될 것이다.
한편, 본 발명은 솔리드 스테이트 드라이브(Solid State Drive: 이하, 'SSD'라고 함)에 적용가능하다.
도 21은 본 발명의 실시 예에 따른 SSD에 대한 블록도이다. 도 21을 참조하면, SSD(4000)는 복수의 플래시 메모리 장치들(4100) 및 SSD 제어기(4200)를 포함한다. SSD(4000)은 도 1 내지 도 17에 상술된 바와 같이 입출력 요청에 따라 섹션을 발생 및 데이터 관리한다.
플래시 메모리 장치들(4100)은 옵션적으로 외부 고전압(Vpp)을 제공받도록 구현될 수 있다. SSD 제어기(4200)는 복수의 채널들(CH1~CHi,i는 2 이상의 정수)을 통하여 플래시 메모리 장치들(4100)에 연결된다. SSD 제어기(4200)는 적어도 하나의 중앙처리장치(4210), 호스트 인터페이스(4220), 버퍼 메모리(4230) 및 플래시 인터페이스(4240)를 포함한다.
호스트 인터페이스(4220)는 중앙처리장치(4210)의 제어에 따라 호스트와 통신 프로토콜 방식으로 데이터를 교환한다. 실시 예에 있어서, 통신 프로토콜은 ATA(Advanced Technology Attachment) 프로토콜일 수 있다. 이러한 ATA 프로토콜은 SATA(Serial Advanced Technology Attachment) 인터페이스, PATA(Parallel Advanced Technology Attachment) 인터페이스, ESATA(External SATA) 인터페이스 등을 포함한다. 다른 실시 예에 있어서, 통신 프로토콜은 USB(Universal Serial Bus) 프로토콜일 수 있다. 호스트 인터페이스(4220)를 통해 호스트로부터 입력되는 데이터나 호스트로 전송되어야 할 데이터는 중앙처리장치(4210)의 제어에 따라 CPU 버스를 경유하지 않고 버퍼 메모리(4220)를 통해 전송된다.
버퍼 메모리(4230)는 외부와 플래시 메모리 장치들(4100) 간의 이동 데이터를 임시로 저장한다. 또한, 버퍼 메모리(4230)는 중앙처리장치(4210)에 의해서 운용될 프로그램을 저장하는 데에도 사용된다. 버퍼 메모리(4230)는 디램(DRAM) 혹은 에스램(SRAM)으로 구현될 수 있다. 도 21에서 버퍼(4230)는 SSD 제어기(4200) 내부에 포함되지만, 본 발명이 반드시 여기에 제한될 필요는 없다. 본 발명의 실시 예에 따른 버퍼 메모리는 SSD 제어기(4200)의 외부에 배치될 수 있다.
플래시 인터페이스(4240)는 저장 장치로 사용되는 플래시 메모리 장치들(4100)과 SSD 제어기(4200) 사이의 인터페이싱을 수행한다. 플래시 인터페이스(4260)는 낸드 플래시 메모리, 원내드(One-NAND) 플래시 메모리, 멀티 레벨 플래시 메모리, 싱글 레벨 플래시 메모리를 지원하도록 구성될 수 있다.
본 발명의 실시 예에 따른 SSD(4000)는 프로그램 동작시 랜덤 데이터를 저장함으로써, 데이터의 신뢰성을 향상시킨다. 그 결과로써 본 발명의 SSD(4000)는 저장된 데이터의 신뢰성을 향상시킬 수 있다. 한편, SSD(4000)에 대한 좀더 자세한 것은 삼성전자에서 출원하였으며 참고 문헌으로 결합된 미국 등록 특허 번호 US 8,027,194, 미국 공개 번호 US 2007-0106836, US 2010-0082890에서 설명될 것이다.
도 22는 도 21에 도시된 SSD(4000)를 갖는 컴퓨팅 시스템에 대한 블록도이다. 도 22를 참조하면, 컴퓨팅 시스템(5000)은, 적어도 하나의 중앙처리장치(5100), 비휘발성 메모리 장치(5200), 램(5300), 입출력 장치(5400), 및 적어도 하나의 SSD(5500)를 포함한다.
적어도 하나의 중앙처리장치(5100)는 시스템 버스에 연결된다. 비휘발성 메모리 장치(5200)는 컴퓨팅 시스템(5000)을 동작하는데 필요한 데이터가 저장된다. 이러한 데이터에는 개시 명령 시퀀스, 혹은 기본적인 입/출력 동작 시스템(예를 들어, BIOS) 시퀀스 등이다. 램(5300)은 중앙처리장치(5100)가 실행될 때 생성되는 데이터가 임시로 저장된다. 입출력 장치(5400)는, 실시 예에 있어서, 키보드, 포인팅 장치(마우스), 모니터, 모뎀, 등이 입출력 장치 인터페이스를 통하여 시스템 버스에 연결된다. SSD(5500)는 읽기 가능한 저장 장치로써, 도 21에 도시된 SSD(4000)와 동일하게 구현된다.
도 23은 도 21에 도시된 SSD(4000)를 갖는 전자기기에 대한 블록도이다. 도 23을 참조하면, 전자기기(6000)는, 프로세서(6100), 롬(6200), 램(6300), 및 플래시 인터페이스(6400), 및 적어도 하나의 SSD(6500)을 포함한다.
프로세서(6100)는 펌웨어 코드 혹은 임의의 코드를 실행하기 위하여 램(6300)을 억세스한다. 또한, 프로세서(6100)는 개시 명령 시퀀스 혹은 기본 입출력 동작 시스템 시퀀스들과 같은 고정 명령 시퀀스들을 실행하기 위하여 롬(6200)에 억세스한다. 플래시 인터페이스(6400)는 전자기기(6000)와 SSD(6500) 사이의 인터페이싱을 수행한다. SSD(6500)는 전자기기(6000)에 착탈이 가능할 수 있다. SSD(6500)는, 도 21에 도시된 SSD(4000)와 동일하게 구현된다.
본 발명의 전자기기(6000)는 셀룰러 폰, 개인 디지털 보조기(Personal Digital Assistants: PDAs), 디지털 카메라, 캠코더, 및 휴대용 오디오 재생장치(예를 들어, MP3), PMP 등이 될 수 있다.
도 24는 도 21에 도시된 SSD(4000)를 이용하는 서버 시스템에 대한 블록도이다. 도 24를 참조하면, 서버 시스템(7000)은 서버(7100), 및 서버(7100)를 동작하는 데 필요한 데이터를 저장하는 적어도 하나의 SSD(7200)를 포함한다. 여기서 적어도 하나의 SSD(7200)는, 도 21에 도시된 SSD(4000)와 동일한 기능 혹은 동작을 갖도록 구현될 것이다.
서버(7100)는 응용 통신 모듈(7110), 데이터 처리 모듈(7120), 업그레이드 모듈(7130), 스케줄링 센터(7140), 로컬 리소스 모듈(7150), 및 리페어 정보 모듈(7160)을 포함한다. 응용 통신 모듈(7110)은 서버(7100)와 네트워크에 연결된 컴퓨팅 시스템과 통신하거나 혹은 서버(7100)와 SSD(7200)이 통신하도록 구현된다. 응용 통신 모듈(7110)은 사용자 인터페이스를 통하여 제공된 데이터 혹은 정보를 데이터 처리 모듈(7120)로 전송한다.
데이터 처리 모듈(7120)은 로컬 리소스 모듈(7150)에 링크된다. 여기서 로컬 리소스 모듈(7150)은 서버(7100)에 입력된 데이터 혹은 정보를 근거로 하여 사용자에게 리페어 숍들(repair shops)/딜러들(dealers)/기술적인 정보의 목록을 제공한다. 업그레이드 모듈(7130)은 데이터 처리 모듈(7120)과 인터페이싱 한다. 업그레이드 모듈(7130)은 SSD(7200)로부터 전송된 데이터 혹은 정보를 근거로 하여 펌웨어, 리셋 코드, 진단 시스템 업그레이드 혹은 다른 정보들을 전자기기(appliance)에 업그레이드한다.
스케쥴링 센터(7140)는 서버(7100)에 입력된 데이터 혹은 정보를 근거로 하여 사용자에게 실시간의 옵션을 허용한다. 리페어 정보 모듈(7160)은 데이터 처리 모듈(7120)과 인터페이싱한다. 리페어 정보 모듈(7160)은 사용자에게 리페어 관련 정보(예를 들어, 오디오, 비디오, 혹은 문서 파일)를 제공하는데 이용된다. 데이터 처리 모듈(7120)은 SSD(7200)로부터 전송된 정보를 근거로 하여 관련된 정보를 패키징한다. 그 뒤, 이러한 정보는 SSD(7200)에 전송되거나 혹은 사용자에게 디스플레이된다.
본 발명에 따른 저장 장치는 모바일 장치(예를 들어, 갤럭시S, 아이폰 등)에도 적용가능하다.
도 25는 본 발명의 실시 예에 따른 모바일 장치(8000)를 예시적으로 보여주는 도면이다. 도 25를 참조하면, 모바일 장치(8000)는 통신 유닛(8100), 제어기(8200), 메모리 유닛(8300), 디스플레이 유닛(8400), 터치 스크린 유닛(8500), 및 오디오 유닛(8600)을 포함한다.
메모리 유닛(8300)은 적어도 하나의 디램(8310), 적어도 하나의 원낸드(8320), 및 적어도 하나의 모비낸드(8330)를 포함한다. 원낸드(8320) 및 모비 낸드(8330) 중 적어도 하나는 도 1 내지 도 17에 상술된 바와 같이 입출력 요청에 따라 섹션을 발생 및 데이터 관리한다.
한편, 모바일 장치에 대한 좀더 자세한 것은, 삼성 전자에서 출원하였으며, 이 출원의 참고 문헌으로 결합된 미국 공개 번호들 US 2010/0010040, US 2010/0062715, US 2010/00199081, US 2010/0309237에서 설명될 것이다.
본 발명에 따른 저장 장치는 태블릿 제품(예를 들어, 갤럭시탭, 아이패드 등)에도 적용가능하다.
도 26은 본 발명의 실시 예에 따른 휴대용 전자 장치(9000)를 예시적으로 보여주는 도면이다. 도 26을 참조하면, 휴대용 전자 장치(9000)는 일반적으로 적어도 하나의 컴퓨터 판독 가능 매체(9020), 처리 시스템(9040), 입출력 서브시스템(9060), 무선 주파수 회로(9080) 및 오디오 회로(9100)를 포함한다. 각 구성요소들 적어도 하나의 통신 버스 혹은 신호선(9030)로 연결될 수 있다.
휴대용 전자 장치(9000)는, 제한되지 않는 핸드헬드 컴퓨터(handheld computer), 태블릿 컴퓨터, 이동 전화, 미디어 플레이어, PDA(personal digital assistant) 등과 이들 아이템 중 둘 이상의 조합을 포함하는 임의의 휴대용 전자 장치일 수 있다. 여기서 적어도 하나의 컴퓨터 판독 가능 매체(9020)는 메모리 시스템(1100)은 도 1 내지 도 17에 상술된 바와 같이 입출력 요청에 따라 섹션을 발생 및 데이터 관리한다. 한편, 휴대용 전자 장치(9000)에 대한 좀더 자세한 것은 참고 문헌으로 결합된 미국 등록 번호 US 7,509,588에서 설명될 것이다.
본 발명의 실시 예에 따른 메모리 시스템 혹은 저장 장치는 다양한 형태들의 패키지를 이용하여 실장 될 수 있다. 실시 예에 있어서, 본 발명의 실시 예에 따른 메모리 시스템 혹은 저장 장치는 PoP(Package on Package), Ball grid arrays(BGAs), Chip scale packages(CSPs), Plastic Leaded Chip Carrier(PLCC), Plastic Dual In-Line Package(PDIP), Die in Waffle Pack, Die in Wafer Form, Chip On Board(COB), Ceramic Dual In-Line Package(CERDIP), Plastic Metric Quad Flat Pack(MQFP), Thin Quad Flatpack(TQFP), Small Outline(SOIC), Shrink Small Outline Package(SSOP), Thin Small Outline(TSOP), Thin Quad Flatpack(TQFP), System In Package(SIP), Multi Chip Package(MCP), Wafer-level Fabricated Package(WFP), Wafer-Level Processed Stack Package(WSP), 등과 같은 패키지들을 이용하여 실장될 수 있다.
한편, 본 발명의 상세한 설명에서는 구체적인 실시 예에 관하여 설명하였으나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 여러 가지로 변형할 수 있다. 그러므로 본 발명의 범위는 상술한 실시 예에 국한되어 정해져서는 안되며 후술하는 특허 청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 한다.
10, 20: 전자 장치
100, 300: 저장 장치
110, 310: 비휘발성 메모리 장치
120, 320: 제어기
122, 322: 섹션 관리 모듈
124, 324: 버퍼
126, 326: 버퍼 관리 모듈
312: 섹션 관리 테이블
200: 호스트

Claims (48)

  1. 적어도 하나의 비휘발성 메모리 장치 및 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 제어기를 포함하는 저장 장치의 데이터 관리 방법에 있어서:
    입출력 요청을 입력받는 단계; 및
    상기 입출력 요청에 근거로 하여 논리 어드레스들을 지시하는 섹션을 발생하는 단계를 포함하고,
    상기 발생된 섹션은 섹션 정보를 통하여 관리되고,
    상기 섹션 정보는 상기 입출력 요청에 대응하는 시작 논리 어드레스 및 상기 지시된 논리 어드레스들의 개수를 갖는 공간 지역성 정보, 및 요청 이력 정보를 포함하는 데이터 관리 방법.
  2. 제 1 항에 있어서,
    상기 입출력 요청은 쓰기 요청 및 읽기 요청 중 어느 하나인 데이터 관리 방법.
  3. 제 2 항에 있어서,
    상기 요청 이력 정보는 쓰기 요청 회수 및 읽기 요청 회수를 포함하는 데이터 관리 방법.
  4. 제 1 항에 있어서,
    상기 입출력 요청에 대응하는 섹션이 존재하는 지를 판별하는 단계를 더 포함하는 데이터 관리 방법.
  5. 제 4 항에 있어서,
    상기 입출력 요청에 대응하는 섹션이 존재할 때, 섹션을 새로 발생하지 않고, 상기 존재하는 섹션을 상기 발생된 섹션으로 이용하는 단계를 더 포함하는 데이터 관리 방법.
  6. 제 5 항에 있어서,
    상기 입출력 요청에 대응하는 상기 섹션 정보를 업데이트하는 단계를 더 포함하는 데이터 관리 방법.
  7. 제 4 항에 있어서,
    상기 입출력 요청에 대응하는 섹션이 존재하지 않고, 상기 발생된 섹션과 이전 섹션 사이에 어드레스 공간의 일부가 겹칠 때, 상기 겹치는 어드레스 공간에 대응하는 새로운 섹션을 발생하는 단계; 및
    상기 이전 섹션의 요청 이력 정보에 상기 입출력 요청에 따른 요청 이력 정보를 추가함으로써 상기 새로운 섹션의 섹션 정보를 업데이트하는 단계를 더 포함하는 데이터 관리 방법.
  8. 제 7 항에 있어서,
    상기 이전 섹션에서 상기 겹치는 어드레스 공간을 뺀 다른 새로운 섹션을 발생하는 단계; 및
    상기 이전 섹션의 요청 이력 정보를 갖도록 상기 다른 새로운 섹션의 섹션 정보를 업데이트하는 단계를 더 포함하는 데이터 관리 방법.
  9. 제 4 항에 있어서,
    상기 발생된 섹션에 연속적인 공간 지역성 정보를 갖고, 상기 발생된 섹션의 요청 이력 정보와 동일한 요청 이력 정보를 갖는 이전 섹션이 존재할 때, 상기 발생된 섹션과 상기 이전 섹션을 병합하는 단계; 및
    상기 병합된 섹션의 섹션 정보를 업데이트하는 단계를 더 포함하는 데이터 관리 방법.
  10. 제 9 항에 있어서,
    상기 저장 장치가 아이들 상태일 때, 상기 발생된 섹션과 상기 이전 섹션이 병합되는 데이터 관리 방법.
  11. 제 1 항에 있어서,
    상기 섹션 정보는 버퍼에 저장되는 데이터 관리 방법.
  12. 제 11 항에 있어서,
    상기 섹션 정보는 섹션에 따른 테이블 형태로 상기 적어도 하나의 비휘발성 메모리 장치에 저장되는 데이터 관리 방법.
  13. 제 1 항에 있어서,
    상기 섹션 정보는 상기 발생된 섹션에 수행된 중복 제거 정보를 더 포함하고,
    상기 중복 제거 정보를 이용하여 중복 제거를 수행하는 단계를 더 포함하는 데이터 관리 방법.
  14. 제 13 항에 있어서,
    상기 입출력 요청은 쓰기 요청이고,
    상기 중복 제거 정보는 상기 할당된 논리 어드레스들의 개수 중에서 중복 제거가 수행된 논리 어드레스의 개수를 지시하는 중복 제거 비율을 포함하고,
    상기 중복 제거 비율이 기준 값보다 클 때, 상기 중복 제거가 수행되는 데이터 관리 방법.
  15. 제 13 항에 있어서,
    상기 입출력 요청은 쓰기 요청이고,
    상기 중복 제거 정보는 상기 할당된 논리 어드레스들의 개수 중에서 중복 제거가 수행된 논리 어드레스의 개수를 지시하는 중복 제거 비율을 포함하고,
    상기 중복 제거 비율이 기준 값보다 크지 않을 때, 상기 쓰기 요청에 따라 상기 적어도 하나의 비휘발성 메모리 장치에 데이터를 저장하는 단계를 더 포함하는 데이터 관리 방법.
  16. 제 15 항에 있어서,
    상기 저장 장치가 아이들 상태일 때, 상기 중복 제거가 수행되는 데이터 관리 방법.
  17. 제 1 항에 있어서,
    상기 섹션 정보를 이용하여 프리페치를 수행하는 단계를 더 포함하는 데이터 관리 방법.
  18. 제 1 항에 있어서,
    상기 섹션 정보를 이용하여 버퍼를 데이터 관리하는 단계를 더 포함하고,
    상기 버퍼는 상기 발생된 섹션에 대응하는 데이터를 저장하는 데이터 관리 방법.
  19. 제 18 항에 있어서,
    상기 버퍼를 비울 필요가 있을 때, 상기 섹션 정보를 근거로 하여 상기 버퍼의 상기 데이터를 삭제하는 단계를 더 포함하는 데이터 관리 방법.
  20. 제 18 항에 있어서,
    상기 데이터를 삭제하는 단계는,
    상기 데이터가 상기 적어도 하나의 비휘발성 메모리 장치에 저장되었는 지를 판별하는 단계;
    상기 데이터가 상기 적어도 하나의 비휘발성 메모리 장치에 저장되어있지 않을 때, 상기 데이터를 상기 적어도 하나의 비휘발성 메모리 장치에 저장하는 단계; 및
    상기 버퍼로부터 상기 데이터를 삭제하는 단계를 더 포함하는 데이터 관리 방법.
  21. 적어도 하나의 비휘발성 메모리 장치 및 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 제어기를 포함하는 저장 장치의 중복 제거 방법에 있어서:
    쓰기 요청을 입력받는 단계;
    상기 쓰기 요청에 대응하는 섹션의 중복 제거 비율이 기준 값보다 큰지를 판별하는 단계; 및
    상기 중복 제거 비율이 상기 기준 값보다 크다면, 중복 제거를 수행하는 단계를 포함하고,
    상기 섹션은 섹션 정보를 통하여 관리되고,
    상기 섹션 정보는 상기 쓰기 요청에 대응하는 논리 어드레스들을 지시하는 공간 지역성 정보, 요청 이력 정보, 및 상기 중복 제거 비율을 포함하고,
    상기 중복 제거 비율은 상기 논리 어드레스들의 개수 중에서 중복 제거가 수행된 논리 어드레스의 개수의 비율을 지시하는 중복 제거 방법.
  22. 제 21 항에 있어서,
    상기 쓰기 요청 입력시, 상기 쓰기 요청에 대응하는 섹션이 존재하는 지를 판별하는 더 포함하는 중복 제거 방법.
  23. 제 22 항에 있어서,
    상기 쓰기 요청에 대응하는 섹션이 존재하지 않을 때 상기 쓰기 요청에 대응하는 논리 어드레스들을 지시하는 섹션을 발생하는 단계를 더 포함하는 중복 제거 방법.
  24. 제 21 항에 있어서,
    상기 중복 제거 비율이 상기 기준 값보다 크지 않으면, 상기 쓰기 요청시 입력된 데이터를 상기 적어도 하나의 비휘발성 메모리 장치에 저장하는 단계를 더 포함하는 중복 제거 방법.
  25. 제 24 항에 있어서,
    쓰기 요청 회수가 증가되도록 상기 섹션의 상기 요청 이력 정보를 업데이트하는 단계를 더 포함하는 중복 제거 방법.
  26. 제 25 항에 있어서,
    상기 저장 장치가 아이들 상태일 때, 상기 섹션에 대한 중복 제거를 수행하는 단계를 더 포함하는 중복 제거 방법.
  27. 제 21 항에 있어서,
    상기 중복 제거를 수행한 뒤, 상기 섹션의 상기 중복 제거 비율을 업데이트하는 단계를 더 포함하는 중복 제거 방법.
  28. 제 21 항에 있어서,
    상기 중복 제거는, 상기 적어도 하나의 비휘발성 메모리 장치에 저장된 소정 단위의 데이터의 해쉬 값과 상기 섹션에 대응하는 데이터 중 소정 단위의 데이터의 해쉬 값이 동일할 때, 상기 저장된 소정 단위의 데이터와 상기 섹션의 소정 단위의 데이터가 동일한 것으로 판별하는 중복 제거 방법.
  29. 적어도 하나의 비휘발성 메모리 장치 및 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 제어기를 포함하는 저장 장치의 프리페치 방법에 있어서:
    제 1 읽기 요청을 입력받는 단계;
    상기 제 1 읽기 요청에 대응하는 제 1 섹션의 데이터를 제 1 프리페치하는 단계;
    상기 제 1 섹션의 섹션 정보 및 제 2 섹션의 섹션 정보를 근거로 하여, 상기 제 2 섹션에 대한 제 2 읽기 요청을 예측하는 단계;
    상기 제 2 읽기 요청이 예측될 때, 상기 제 2 섹션의 데이터를 제 2 프리페치하는 단계를 포함하고,
    상기 제 1 및 상기 제 2 섹션들 각각의 섹션 정보는, 상기 제 1 및 제 2 읽기 요청들 각각에 대응하는 논리 어드레스들을 지시하는 공간 지역성 정보, 및 쓰기 요청 회수와 읽기 요청 회수를 갖는 요청 이력 정보를 포함하는 프리페치 방법.
  30. 제 29 항에 있어서,
    상기 제 1 요청에 대응하는 섹션이 존재하는 지를 판별하는 단계를 더 포함하는 프리페치 방법.
  31. 제 30 항에 있어서,
    상기 제 1 요청에 대응하는 섹션이 존재하지 않을 때, 상기 제 1 요청에 대응하는 상기 제 1 섹션으로 발생하는 단계를 더 포함하는 프리페치 방법.
  32. 제 29 항에 있어서,
    상기 제 1 섹션의 논리 어드레스들과 상기 제 2 섹션의 논리 어드레스들이 서로 연속적일 때, 상기 제 2 읽기 요청이 예측되는 프리페치 방법.
  33. 제 32 항에 있어서,
    상기 제 1 섹션의 요청 이력 정보 및 상기 제 2 섹션의 요청 이력 정보가 동일할 때, 상기 제 2 읽기 요청이 예측되는 프리페치 방법.
  34. 제 29 항에 있어서,
    상기 제 1 프리페치된 데이터로부터 상기 제 1 읽기 요청에 따른 읽기 동작을 수행하는 단계를 더 포함하는 프리페치 방법.
  35. 제 34 항에 있어서,
    읽기 요청 회수가 증가되도록 상기 1 섹션의 요청 이력 정보를 업데이트하는 단계를 더 포함하는 프리페치 방법.
  36. 적어도 하나의 비휘발성 메모리 장치 및 상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 저장 장치의 버퍼 관리 방법에 있어서:
    입출력 요청에 대응하는 섹션을 발생하는 단계;
    상기 발생된 섹션의 데이터를 저장하는 버퍼를 비울 필요가 있는 지를 판별하는 단계; 및
    상기 버퍼를 비울 필요가 있을 때 섹션 정보를 근거로 하여 상기 발생된 섹션의 데이터를 상기 버퍼로부터 제거하는 단계를 포함하고,
    상기 섹션 정보는 상기 입출력 요청에 대응하는 논리 어드레스들을 지시하는 공간 지역성 정보 및 요청 이력 정보를 포함하는 버퍼 관리 방법.
  37. 제 36 항에 있어서,
    상기 요청 이력 정보를 이용하여, 상기 발생된 섹션의 데이터가 제거되는 버퍼 관리 방법.
  38. 제 37 항에 있어서,
    상기 요청 이력 정보는 쓰기 요청 회수 및 읽기 요청 회수를 포함하고,
    상기 쓰기 요청 회수가 기준 값보다 크면, 상기 발생된 섹션의 데이터를 상기 버퍼에 남기는 단계를 더 포함하는 버퍼 관리 방법.
  39. 제 37 항에 있어서,
    상기 요청 이력 정보는 쓰기 요청 회수 및 읽기 요청 회수를 포함하고,
    상기 쓰기 요청 회수가 기준 값 보다 크지 않으면, 상기 발생된 섹션의 데이터는 상기 버퍼로부터 삭제되는 버퍼 관리 방법.
  40. 제 39 항에 있어서,
    상기 발생된 섹션의 데이터가 상기 버퍼로부터 삭제되기 전에, 상기 발생된 섹션의 데이터가 상기 적어도 하나의 비휘발성 메모리 장치에 저장되었는 지를 판별하는 단계; 및
    상기 적어도 하나의 비휘발성 메모리 장치에 상기 발생된 섹션의 데이터가 저장되어 있지 않다면, 상기 발생된 섹션의 데이터를 상기 적어도 하나의 비휘발성 메모리 장치에 저장하는 단계를 더 포함하는 버퍼 관리 방법.
  41. 제 36 항에 있어서,
    상기 섹션 정보는 상기 버퍼에 저장되고,
    상기 저장 장치에 전원 공급이 차단될 때 상기 섹션 정보는 삭제되는 버퍼 관리 방법.
  42. 적어도 하나의 비휘발성 메모리 장치; 및
    상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 제어기를 포함하고,
    상기 제어기는,
    입출력 요청에 대응하는 논리 어드레스들을 지시하는 섹션을 발생하고, 섹션 정보를 통하여 상기 섹션을 관리하는 섹션 관리 모듈; 및
    상기 입출력 요청에 따른 상기 섹션의 데이터 및 섹션 정보를 저장하는 버퍼를 포함하고,
    상기 섹션 정보는 상기 논리 어드레스들을 지시하는 공간 지역성 정보, 및 쓰기 요청 회수 및 읽기 요청 회수를 갖는 요청 이력 정보를 포함하는 저장 장치.
  43. 제 42 항에 있어서,
    상기 제어기는,
    상기 버퍼에 저장되는 데이터를 데이터 관리하는 버퍼 관리 모듈을 더 포함하는 저장 장치.
  44. 제 43 항에 있어서,
    상기 버퍼 관리 모듈은, 상기 섹션 관리 모듈로부터 발생된 섹션 정보를 근거로 하여 상기 섹션 데이터의 삭제 여부를 결정하는 저장 장치.
  45. 제 42 항에 있어서,
    상기 섹션 정보는 상기 섹션의 상기 논리 어드레스들 중 중복 제거가 수행된 논리 어드레스의 비율을 지시하는 중복 제거 정보를 더 포함하고,
    상기 제어기는,
    쓰기 요청시 상기 중복 제거 정보를 근거로 하여 상기 섹션에 대한 중복 제거를 즉시 수행하는 저장 장치.
  46. 제 42 항에 있어서,
    상기 제어기는,
    읽기 요청시 상기 섹션 정보를 근거로 하여 다음 읽기 요청을 예측하고, 상기 예측된 다음 읽기 요청에 대응하는 섹션의 데이터를 프리페치하는 저장 장치.
  47. 제 42 항에 있어서,
    상기 적어도 하나의 비휘발성 메모리 장치는, 상기 섹션 정보를 섹션 별로 데이터 관리하기 위하여 섹션 관리 테이블을 더 포함하는 저장 장치.
  48. 입출력 요청을 발생하는 호스트; 및
    상기 입출력 요청에 따라 데이터를 입출력하는 저장 장치를 포함하고,
    상기 저장 장치는,
    적어도 하나의 비휘발성 메모리 장치; 및
    상기 적어도 하나의 비휘발성 메모리 장치를 제어하는 제어기를 포함하고,
    상기 제어기는,
    상기 입출력 요청에 대응하는 논리 어드레스들을 지시하는 섹션을 발생 및 섹션 정보를 통하여 상기 섹션을 관리하는 섹션 관리 모듈;
    상기 입출력 요청에 따른 상기 데이터 및 상기 섹션 정보를 저장하는 버퍼; 및
    상기 섹션 정보를 근거로 하여 상기 데이터를 삭제하는 버퍼 관리 모듈을 포함하고,
    상기 섹션 정보는 상기 논리 어드레스들을 지시하는 공간 지역성 정보, 및 쓰기 요청 회수 및 읽기 요청 회수를 갖는 요청 이력 정보를 포함하는 전자 장치.
KR1020120002547A 2012-01-09 2012-01-09 저장 장치, 그것을 포함하는 전자 장치, 및 그것의 데이터 관리 방법들 Withdrawn KR20130081526A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020120002547A KR20130081526A (ko) 2012-01-09 2012-01-09 저장 장치, 그것을 포함하는 전자 장치, 및 그것의 데이터 관리 방법들
US13/734,244 US9081658B2 (en) 2012-01-09 2013-01-04 Storage device and data management method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120002547A KR20130081526A (ko) 2012-01-09 2012-01-09 저장 장치, 그것을 포함하는 전자 장치, 및 그것의 데이터 관리 방법들

Publications (1)

Publication Number Publication Date
KR20130081526A true KR20130081526A (ko) 2013-07-17

Family

ID=48744772

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120002547A Withdrawn KR20130081526A (ko) 2012-01-09 2012-01-09 저장 장치, 그것을 포함하는 전자 장치, 및 그것의 데이터 관리 방법들

Country Status (2)

Country Link
US (1) US9081658B2 (ko)
KR (1) KR20130081526A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150074564A (ko) * 2013-12-24 2015-07-02 삼성전자주식회사 데이터 중복 제거를 수행할 수 있는 데이터 저장 장치의 동작 방법들
KR20160150029A (ko) * 2015-06-19 2016-12-28 에이취지에스티 네덜란드 비.브이. 데이터 전송의 단일 패스 엔트로피 검출 장치 및 방법
CN107688436A (zh) * 2016-08-03 2018-02-13 三星电子株式会社 存储器模块和控制其的方法

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9405479B1 (en) * 2013-08-26 2016-08-02 Western Digital Technologies, Inc. Faster file compression using sliding compression window and backward compound pointers
US10923202B2 (en) * 2018-08-03 2021-02-16 Micron Technology, Inc. Host-resident translation layer triggered host refresh
US11263124B2 (en) 2018-08-03 2022-03-01 Micron Technology, Inc. Host-resident translation layer validity check
US11226907B2 (en) 2018-12-19 2022-01-18 Micron Technology, Inc. Host-resident translation layer validity check techniques
US11226894B2 (en) 2018-12-21 2022-01-18 Micron Technology, Inc. Host-based flash memory maintenance techniques
US11169899B2 (en) 2019-04-15 2021-11-09 Toyota Motor Engineering & Manufacturing North America, Inc. Mitigating data offsets for machine learning
US12197762B1 (en) * 2024-01-01 2025-01-14 Dell Products, L.P. Remote data integrity verification on a remote data replication facility

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3817339B2 (ja) 1997-06-26 2006-09-06 株式会社日立製作所 ファイル入出力制御方法
JP2003256269A (ja) 2002-02-27 2003-09-10 Matsushita Electric Ind Co Ltd 不揮発性記憶装置の制御方法及びメモリ装置
US6816946B2 (en) 2002-07-01 2004-11-09 Sony Computer Entertainment, Inc. Methods and apparatus for controlling a cache memory
US7529895B2 (en) * 2003-08-22 2009-05-05 International Business Machines Corporation Method for prefetching non-contiguous data structures
CA2585672A1 (en) 2004-11-01 2006-05-11 Novartis Vaccines And Diagnostics Inc. Combination approaches for generating immune responses
US7562176B2 (en) 2007-02-28 2009-07-14 Lsi Corporation Apparatus and methods for clustering multiple independent PCI express hierarchies
US7689774B2 (en) 2007-04-06 2010-03-30 International Business Machines Corporation System and method for improving the page crossing performance of a data prefetcher
US8170957B2 (en) 2007-08-08 2012-05-01 Sinart Points Technology, Inc. System and method for managing digital interactions
KR100938903B1 (ko) 2007-12-04 2010-01-27 재단법인서울대학교산학협력재단 불규칙한 배열 접근 패턴을 갖는 애플리케이션을 대한소프트웨어에 의해 제어되는 캐시 메모리의 동적 데이터할당 방법
JP5408600B2 (ja) 2008-05-28 2014-02-05 インターナショナル・ビジネス・マシーンズ・コーポレーション 決定装置、データベース装置、プログラムおよび決定方法
KR101603202B1 (ko) 2009-09-21 2016-03-14 삼성전자주식회사 이기종 멀티프로세서 시스템 온 칩에서의 rpc 데이터 배치 방법 및 장치
TWI437569B (zh) 2009-10-16 2014-05-11 Silicon Motion Inc 用來管理一快閃記憶體的複數個區塊之方法以及相關之記憶裝置及其控制器
JP2011107983A (ja) 2009-11-17 2011-06-02 Nec Corp 情報記憶システム,情報記憶方法及びプログラム
US8707282B2 (en) 2009-12-14 2014-04-22 Advanced Micro Devices, Inc. Meta-data based data prefetching

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150074564A (ko) * 2013-12-24 2015-07-02 삼성전자주식회사 데이터 중복 제거를 수행할 수 있는 데이터 저장 장치의 동작 방법들
KR20160150029A (ko) * 2015-06-19 2016-12-28 에이취지에스티 네덜란드 비.브이. 데이터 전송의 단일 패스 엔트로피 검출 장치 및 방법
CN107688436A (zh) * 2016-08-03 2018-02-13 三星电子株式会社 存储器模块和控制其的方法
KR20180015565A (ko) * 2016-08-03 2018-02-13 삼성전자주식회사 메모리 모듈 및 그것의 동작 방법
CN107688436B (zh) * 2016-08-03 2022-04-01 三星电子株式会社 存储器模块和控制其的方法

Also Published As

Publication number Publication date
US20130179647A1 (en) 2013-07-11
US9081658B2 (en) 2015-07-14

Similar Documents

Publication Publication Date Title
KR20130081526A (ko) 저장 장치, 그것을 포함하는 전자 장치, 및 그것의 데이터 관리 방법들
US9690700B2 (en) Host-driven garbage collection
US20240061618A1 (en) Storage device and operating method thereof
KR101907059B1 (ko) 비휘발성 메모리 장치의 블록 관리 방법 및 블록 관리 시스템
CN111078582B (zh) 基于模式调整映射段的存储器系统及其操作方法
US10963175B2 (en) Apparatus and method for searching valid data in memory system
CN107179996B (zh) 数据存储装置和其操作方法
KR102002921B1 (ko) 버퍼 운영 방법 및 그에 따른 반도체 저장 장치
CN110928807B (zh) 用于检查存储器系统中的有效数据的设备和方法
CN110806837B (zh) 数据处理系统及其操作方法
CN110781096A (zh) 用于通过预测需求时间来执行垃圾收集的设备和方法
CN110825659B (zh) 用于检查存储器系统中的块中的有效数据的设备和方法
CN111897743B (zh) 数据储存装置及逻辑至物理地址映射表的载入方法
US20140115239A1 (en) Method of managing data in nonvolatile memory device
KR102559549B1 (ko) 메모리 시스템에서의 블록 상태를 관리하는 방법 및 장치
KR20120105294A (ko) 불휘발성 메모리를 제어하는 메모리 컨트롤러
KR20210039185A (ko) 메모리 시스템에서 멀티 스트림 동작을 제공하는 방법 및 장치
KR20210051921A (ko) 메모리 시스템 및 그것의 동작방법
KR102708925B1 (ko) 메모리 시스템에서의 유효 데이터 체크 방법 및 장치
US20230273878A1 (en) Storage device for classifying data based on stream class number, storage system, and operating method thereof
US8516194B2 (en) Systems and methods for caching data with a nonvolatile memory cache
KR102750797B1 (ko) 소요시간을 예측하여 가비지 컬렉션을 수행하는 방법 및 장치
KR20200095010A (ko) 메모리 시스템에서 맵 정보를 전송하는 방법 및 장치
KR102835515B1 (ko) 메모리 시스템 및 그것의 동작방법
KR102330394B1 (ko) 컨트롤러의 작동 방법과 상기 컨트롤러를 포함하는 장치의 작동 방법

Legal Events

Date Code Title Description
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20120109

PG1501 Laying open of application
PC1203 Withdrawal of no request for examination
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid