KR101678868B1 - 플래시 주소 변환 장치 및 그 방법 - Google Patents

플래시 주소 변환 장치 및 그 방법 Download PDF

Info

Publication number
KR101678868B1
KR101678868B1 KR1020100012821A KR20100012821A KR101678868B1 KR 101678868 B1 KR101678868 B1 KR 101678868B1 KR 1020100012821 A KR1020100012821 A KR 1020100012821A KR 20100012821 A KR20100012821 A KR 20100012821A KR 101678868 B1 KR101678868 B1 KR 101678868B1
Authority
KR
South Korea
Prior art keywords
stripe
page
present
chips
buffers
Prior art date
Application number
KR1020100012821A
Other languages
English (en)
Other versions
KR20110093035A (ko
Inventor
백승훈
김진규
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020100012821A priority Critical patent/KR101678868B1/ko
Priority to US13/025,267 priority patent/US8832356B2/en
Publication of KR20110093035A publication Critical patent/KR20110093035A/ko
Application granted granted Critical
Publication of KR101678868B1 publication Critical patent/KR101678868B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR 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/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/7205Cleaning, compaction, garbage collection, erase control

Landscapes

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

Abstract

하나 이상의 횡 방향의 뱅크와 하나 이상의 열 방향의 채널로 구분되는 하나 이상의 칩을 유지하고, 상기 하나 이상의 칩을 상기 하나 이상의 뱅크(bank)로부터 구분되도록 하나 이상의 스트라이프 파티션(stripe partition)으로 구분함으로써, 작은 쓰기에 대한 성능 저하 없이 칩의 오류를 감내하는 플래시 주소 변환 방법을 제공한다.

Description

플래시 주소 변환 장치 및 그 방법{APPARATUS FOR FLASH ADDRESS TRANSLATION APPARATUS AND METHOD THEREOF}
본 발명은 메모리 내부에서 칩 고장 감내 기능을 효율적으로 지원하기 위한 주소 변환 장치 및 방법에 관한 것이다.
오늘날과 같이 정보화 시대에는 광범위한 정보를 어떻게 효율적으로 제공하고 저장할 수 있는 기술에 대한 연구가 활발한 실정이다.
이러한 정보의 저장 기술 중 하나인 RAID(Redundant Array of Inexpensive Disks)는 여러 개의 하드 디스크에 일부 중복된 데이터를 나눠서 저장하는 기술이다. 즉, 데이터를 나누는 다양한 방법이 존재하며, 이 방법들을 레벨이라 하는데, 레벨에 따라 저장장치의 신뢰성을 높이거나 전체적인 성능을 향상시킬 수 있다.
특히, RAID는 여러 개의 디스크를 하나로 묶어 하나의 논리적 디스크로 작동하게 하는데, 하드웨어적인 방법과 소프트웨어적인 방법이 있다. 하드웨어적인 방법은 운영 체제에 이 디스크가 하나의 디스크처럼 보이게 하며, 소프트웨어적인 방법은 주로 운영체제 안에서 구현되며, 사용자에게 디스크를 하나의 디스크처럼 보이게 한다.
또한, RAID는 저장 기술 중 하나인 플래시 변환 계층(Flash Translation Layer, FTL)을 이용하여 정보를 저장하는데, 그 이유로는 플래시의 쓰기 영역에는 지우기 동작을 수행하기 전에 덮어 쓰기를 할 수 없고, 페이지 단위로 읽기 및 쓰기를 할 수 있으나, 페이지 단위 보다 더 큰 블록 단위로 지우기를 할 수 있다.
하지만, 일반적인 저장장치에는 지우기 동작이 없을 뿐만 아니라 덮어 쓰기가 가능해야 하므로, 플래시 변환 계층은 논리 주소와 플래시의 물리 주소 사이의 매핑 테이블을 두어서, 플래시의 상기 제약 사항이 저장 장치의 외부에는 보이지 않게 한다.
예를 들어, 플래시 변환 계층은 같은 논리 주소에 데이터를 덮어쓰기를 하면, 지우기 동작을 수반하지 않으면서 비어 있는 어떤 물리 주소의 페이지에 저장하고, 그 논리 주소와 새로운 물리 주소와의 매핑을 주어진 매핑 테이블에서 갱신한다.
따라서, 플래시 변환 계층은 장치의 외부에서 보이는 저장 주소와 다른 물리적 위치에 저장할 수 있게 하여, 플래시 메모리의 제약을 따르면서 일반적인 저장 장치로서의 동작을 수행하게 한다.
하지만, 플래시 변환 계층은 주소 변환 단위에 따라 크게 페이지(쓰기)단위 주소변환과 블록(삭제)단위 주소변환으로 나뉘며, 페이지단위 주소변환은 정교하게 주소를 변환하기 때문에 성능은 좋은데 반하여 주소 변환 테이블의 크기가 커져 제작 비용이 높아질 수 있다.
예를 들어, 솔리드 스테이트 드라이브(SSD: Solid-state Drive)처럼 플래시로 구성된 저장 장치에 RAID와 유사하게 칩 수준에서 고장 감내 기능을 제공하려면 플래시 변환 계층과 RAID 계층을 SSD내부에 포함하여야 하나, RAID는 작은 쓰기에 대하여 좋은 성능을 보이지 아니한다.
본 발명의 일실시예에 따른 플래시 주소 변환 장치는 하나 이상의 횡 방향의 뱅크(bank)와 하나 이상의 열 방향의 채널로 구분되는 하나 이상의 칩, 호스트로부터 제어 정보를 수신하여 상기 제어 정보에 따라 상기 하나 이상의 칩을 제어하는 제어부를 포함하고, 상기 하나 이상의 칩은 상기 하나 이상의 뱅크(bank)에서 구분된 하나 이상의 스트라이프 파티션(stripe partition)으로 구분되며, 상기 스트라이프 파티션은 각각 하나 이상의 스트라이프 버퍼가 할당된다.
또한, 본 발명의 일실시예에 따른 플래시 주소 변환 방법은 하나 이상의 횡 방향의 뱅크와 하나 이상의 열 방향의 채널로 구분되는 하나 이상의 칩을 유지하는 단계, 상기 하나 이상의 칩을 상기 하나 이상의 뱅크(bank)로부터 구분되도록 하나 이상의 스트라이프 파티션(stripe partition)으로 구분하는 단계 및 상기 스트라이프 파티션에 각각 하나 이상의 스트라이프 버퍼를 할당하는 단계를 포함한다.
또한, 본 발명의 일실시예에 따른 플래시 주소 변환 방법은 하나 이상의 횡 방향의 뱅크와 하나 이상의 열 방향의 채널로 구분되는 하나 이상의 칩을 유지하는 단계, 상기 하나 이상의 칩을 높이 방향의 스트라이프 파티션(stripe partition)으로 구분하는 단계 및 상기 스트라이프 파티션에 각각 하나 이상의 스트라이프 버퍼를 할당하는 단계를 포함하고, 상기 하나 이상의 칩은 상기 하나 이상의 스트라이프 파티션에 의하여 하나 이상의 칩 파티션으로 구분된다.
또한, 본 발명의 일실시예에 따르면 플래시 변환 계층 스스로 칩 수준 고장 감내 기능을 제공하여 성능 저하 문제가 없는 방법을 제공할 수 있다.
또한, 본 발명의 일실시예에 따르면, 고체 상태 드라이브 (Solid State Drive: SSD)에서 칩 고장 감내 기능을 효율적으로 지원하기 위한 플래시 소프트웨어를 제공할 수 있다.
또한, 본 발명의 일실시예에 따르면, 페이지 수준뿐만 아니라 칩 수준의 오류에도 데이터 손실 없이 정보를 고체 상태 드라이브에 저장할 수 있다.
또한, 본 발명의 일실시예에 따르면 쓰기 요구 크기에 관계 없이 한 페이지 쓰기 요구 당 항상 (1+1/N)개의 페이지 쓰기만 발생하므로 쓰기 성능을 향상 시킬 수 있다.
도 1a는 본 발명의 일실시예에 따른 플래시 주소 변환 장치의 구성을 도시한 블록도이다.
도 1b는 본 발명의 다른 실시예에 따른 플래시 주소 변환 장치의 구성을 도시한 블록도이다.
도 2는 본 발명의 일실시예에 따른 스트라이프 파티션의 예를 도시한 도면이다.
도 3은 본 발명의 일실시예에 따른 버퍼 메모리의 구조를 도시한 도면이다.
도 4는 본 발명의 일실시예에 따라 정보를 메모리에 쓰는 과정을 도시한 흐름도이다.
도 5는 본 발명의 일실시예에 따른 플러쉬 과정을 도시한 흐름도이다.
도 6은 본 발명의 일실시예에 따른 읽기 오류 처리 과정을 도시한 흐름도이다.
도 7은 본 발명의 일실시예에 따른 폐영역 회수 과정을 도시한 흐름도이다.
이하 첨부 도면들 및 첨부 도면들에 기재된 내용들을 참조하여 본 발명의 실시예를 상세하게 설명하지만, 본 발명이 실시예에 의해 제한되거나 한정되는 것은 아니다.
한편, 본 발명을 설명함에 있어서, 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는, 그 상세한 설명을 생략할 것이다. 그리고, 본 명세서에서 사용되는 용어(terminology)들은 본 발명의 실시예를 적절히 표현하기 위해 사용된 용어들로서, 이는 사용자, 운용자의 의도 또는 본 발명이 속하는 분야의 관례 등에 따라 달라질 수 있다. 따라서, 본 용어들에 대한 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
도 1a는 본 발명의 일실시예에 따른 플래시 주소 변환 장치의 구성을 도시한 블록도이다.
본 발명의 일실시예에 따른 플래시 주소 변환 장치는 하나 이상의 횡 방향의 뱅크(bank)(140)와 하나 이상의 열 방향의 채널(120)로 구분되는 하나 이상의 칩(130) 및 호스트로부터 제어 정보를 수신하여 상기 제어 정보에 따라 상기 하나 이상의 칩을 제어하는 제어부(110)로 구성된다.
이때, 본 발명의 일실시예에 따르면 상기 하나 이상의 칩은 상기 하나 이상의 뱅크(bank)에서 구분된 하나 이상의 스트라이프 파티션(stripe partition)으로 구분되며, 상기 스트라이프 파티션은 각각 하나 이상의 스트라이프 버퍼가 할당된다.
예를 들어, 도 1a에 도시된 바와 같이 본 발명의 일실시예에 따른 플래시 주소 변환 장치는 다수의 칩(예를 들어, 플래시 메모리)(130)을 제어하기 위한 제어부(110)를 포함하며, 다수의 칩(130)에 정보를 송수신하기 위하여 제어부(110)와 칩(130)은 N개의 채널(120)로 연결될 수 있다.
이때, 본 발명의 일실시예에 따르면 각 채널에는 M개의 칩이 연결될 수 있으므로, 총 N×M개의 칩을 유지할 수 있다.
본 발명의 일실시예에 따르면 칩(130)을 스트라이프 파티션의 방식을 도입하여 분리하는 것을 제안한다. 이때, 본 발명의 일실시예에 따르면 스트라이프 파티션(150)은 도 1에 도시된 바와 같이 총 M ×P 스트라이프 파티션으로 구성될 수 있다.
예를 들어, 본 발명의 일실시예에 따르면 각 칩마다 물리 공간을 균일하게 P개로 나누어, P개의 칩 파티션을 구성하고, M 번째 뱅크에 속하는 칩들(chip m,1 ~ chip m,N)의 P 번째 파티션들이 모여서 스트라이프 파티션 m, P로 구성될 수 있다.
도 1b는 본 발명의 다른 실시예에 따른 플래시 주소 변환 장치의 구성을 도시한 블록도이다.
또 다른 예로, 도 1b에 도시된 바와 같이 모든 칩으로부터 각 칩은 스트라이프 파티션 개수와 같은 수의 칩 파티션으로 구성되고, M×N개의 칩에서 한 개씩 선택된 칩 파티션들이 하나의 스트라이프 파티션을 구성할 수도 있다. 즉, 본 발명의 일실예에 따르면 하나의 스트라이프 파티션이 모든 채널과 모든 뱅크를 포함하여 형성될 수 있으며, 예를 들어 도 1b의 경우에서처럼 총 4개의 스트라이프 파티션이 존재할 수도 있다.
도 2는 본 발명의 일실시예에 따른 스트라이프 파티션의 내부 구조를 도시한 도면이다.
도 2를 참조하면, 본 발명의 일실시예에 따른 스트라이프 파티션은 하나 이상의 칩의 하나 이상의 칩 파티션을 포함하는 하나 이상의 블록 스트라이프로 분리 형성된다.
이때, 본 발명의 일실시예에 따른 상기 하나 이상의 칩 파티션은 하나 이상의 페이지를 포함하고, 상기 블록 스트라이프는 상기 하나 이상의 페이지를 포함하는 하나 이상의 페이지 스트라이프로 분리될 수 있다.
예를 들어, 도 2에 도시된 바와 같이 본 발명의 일실시예에 따른 스트라이프 파티션은 b개의 블록 스트라이프로 구성될 수 있으며, 각 블록 스트라이프는 b개의 페이지 스트라이프로 구성될 수 있다. 참고적으로 상기 페이지 스트라이프는 각기 다른 칩들에 걸친 N개의 페이지로 구성될 수 있으며, 상기 페이지는 저장 매체에서 읽고 저장매체로 쓰는 기본 단위이다.
이때, 본 발명의 일실시예에 따르면 각 메모리는 지우기 단위인, b개의 읽기/쓰기 단위인 페이지로 구성된, 블록으로 구성된다. 스트라이프 파티션 i.j에 있어서; 블록 스트라이프 x는 칩 i, 1 ~ 칩 i, N에 속한 x번째 블록들로 구성될 수 있다. 이때, 페이지 스트라이프 k, l은 칩 i, 1 ~ 칩 i, N의 k번째 블록들의 l번째 페이지로 구성될 수 있다.
본 발명의 일실시예에 따른 플래시 주소 변환 장치의 제어부(110)는 하나 이상의 칩(130)을 통하여 상기 하나 이상의 페이지 스트라이프 단위로 정보를 기록, 즉, 쓰기 명령을 수행하도록 제어한다.
또한, 본 발명의 일실시예에 따른 플래시 주소 변환 장치의 제어부(110)는 하나 이상의 칩(130)을 통하여 상기 하나 이상의 페이지 단위로 정보를 읽으며, 상기 하나 이상의 블록 스트라이프 단위로 정보를 삭제하거나 폐영역을 회수하도록 제어한다.
도 3은 본 발명의 일실시예에 따른 버퍼 메모리의 구조를 도시한 도면이다.
도 3을 참조하면, 본 발명의 일실시예에 따른 상기 각 스트라이프 파티션은 각각 스트라이프 버퍼를 포함하고, 상기 각 스트라이프 버퍼는 하나 이상의 페이지 버퍼를 포함한다.
이때, 본 발명의 일실시예에 따르면 상기 하나 이상의 페이지 버퍼는 페이지 크기의 정보를 저장하고, 상기 스트라이프 버퍼는 상기 페이지 크기의 정보의 주소에 대응하는 해쉬(Hash) 함수에 의하여 결정될 수 있다.
또한, 본 발명의 일실시예에 따르면 상기 페이지 크기의 정보는 상기 하나 이상의 페이지 버퍼 중 적어도 어느 하나에 저장되며, 스트라이프 버퍼의 전체 페이지 버퍼에 상기 정보가 저장되는 경우, 상기 페이지 스트라이프 형식으로 저장된다.
예를 들어, 본 발명의 일실시예에 따른 플래시 주소 변환 장치는 도 3에 도시된 바와 같이 각 스트라이프 파티션마다 스트라이프 버퍼가 하나씩 존재하며 각 스트라이프 버퍼에는 N-1개의 페이지 버퍼를 포함한다.
이때, 본 발명의 일실시예에 따른 각 페이지 버퍼는 페이지 크기의 데이터를 저장할 수 있는 메모리이며, 예를 들어, 페이지 버퍼는 DRAM, SRAM 등과 같이 빠르게 접근 가능한 저장 장치일 수 있다.
한편, 본 발명의 일실시예에 따른 제어부(120)는 호스트로부터 어떤 주소로 어떤 페이지 크기의 데이터를 쓰는 명령을 수신한 경우, 상기 데이터를 저장하고자 하는 상기 페이지 데이터의 주소를 입력받는 해쉬(Hash) 함수를 기반으로 하여 스트라이프 버퍼를 결정한다.
즉, 본 발명의 일실시예에 따른 페이지 데이터가 저장되는 스트라이프 버퍼는 상기 페이지 데이터의 주소에 의하여 결정될 수 있으며, 해쉬 함수로 결정된 스타라이프 버퍼에서, 상기 정보는 상기 스트라이프 버퍼 중에서 정보 포함하지 않는 비어 있는 페이지 버퍼에 저장된다. 만약, 상기 스트라이프 버퍼 중에서 빈 페이지 버퍼가 없다면, 상기 스트라이프 버퍼를 임의의 페이지 스트라이프에 저장한다.
전술한 바와 같이, 본 발명의 일실시예에 따른 제어부(110)는, 하나 이상의 저장 정보를 상기 저장 정보의 주소에 대응하는 저장 영역에 저장되도록 제어한다. 이때, 본 발명의 일실시예에 따른 상기 저장 영역은 상기 하나 이상의 스트라이프 파티션 중 어느 하나이며, 상기 하나 이상의 스트라이프 파티션은 서로 독립된 영역이다.
도 4는 본 발명의 일실시예에 따라 정보를 메모리에 쓰는 과정을 도시한 흐름도이다.
본 발명의 일실시예에 따른 플래시 주소 변환 장치는 쓰기 명령에 따라 스트라이프 파티션의 번호를 계산하고(410), 해당 스트라라이프 파티션의 스트라이프 버퍼를 지정한다(420).
이때, 전술한 바와 같이 본 발명의 일실시예에 따른 플래시 주소 변환 장치는 해당 스트라이프 파티션의 스트라이프 버퍼에 빈 페이지 버퍼가 있는 지 여부를 판단하여(430), 빈 페이지 버퍼가 있는 경우 해당 스트라이프 버퍼의 빈 페이지 버퍼 중 어느 하나에 상기 해당 페이지를 저장한다(440).
예를 들어, 본 발명의 일실시예에 따라 임의의 스트라이프 버퍼를 임의의 페이지 스트라이프로 저장하는 과정으로, 스트라이프 버퍼 m, p에 있는 페이지들은 스트라이프 파티션 m, p의 페이지 스트라이프들 중에 임의의 페이지 스트라이프에 저장될 수 있다.
상기와 같은 경우, 본 발명의 일실시예에 따른 플래시 주소 변환 장치는 데이터의 논리 주소와 관계 없이 호스트가 쓰기를 요구한 순서대로 다수개의 페이지가 나란히 하나의 페이지 스트라이프에 저장되도록 할 수 있다.
즉, 본 발명의 일실시예에 따르면 논리 주소와 관계 없이 물리 주소는 페이지 스트라이프 내의 연속한 주소에 저장됨으로써, 논리 주소와 물리 주소에 연관성이 없기 때문에 논리 주소와 물리 주소의 매핑 테이블을 유지할 수 있다.
본 발명의 일실시예에 따른 플래시 주소 변환 장치는 저장하는 페이지 데이터들의 호스트-뷰 주소(논리 주소)와 실제로 저장되는 물리 페이지의 주소를 연결하는 테이블이 존재할 수 있으며, 상기와 같은 과정을 주소 매핑이라 칭할 수 있으며 다양한 매핑 과정을 통하여 수행될 수 있어 특정 방법에 제한하지 아니한다.
그러나, 본 발명의 일실시예에 따른 플래시 주소 변환 장치는 빈 페이지 버퍼가 없는 경우 스트라이프 버퍼의 모든 페이지 버퍼들에 대한 패리티를 계산하여 상기 패리티를 패리티 버퍼에 저장한다(450).
상기 단계(450)을 수행함으로써, 본 발명의 일실시예에 따른 플래시 주소 변환 장치는 상기 매핑 과정을 거친 후에 결정된 물리 주소 기준의 스트라이프에서 패리티를 생성할 수 있다.
일반적으로, 매핑 과정 전의 논리 주소 기준의 스트라이프에서 패리티가 생성됨에 따라 랜덤 쓰기가 발생하였을 때에 호스트로부터 한 개의 쓰기당 플래시 메모리로 2개의 쓰기가 발생되는데 반해, 본 발명의 일실시예에 따른 플래시 주소 변환 장치는 한 개의 쓰기당 플래시 메모리로 1+1/N개의 쓰기가 발생하기 때문에 쓰기 성능이 매우 향상된다. 이때, 상기 N은 스트라이프를 구성하는 칩의 개수이다.
또한, 본 발명의 일실시예에 따른 플래시 주소 변환 장치는 상기 스트라이프 버퍼의 모든 페이지 버퍼들과 패리티 버퍼를 해당 스트라이프 파티션의 빈 페이지 스트라이프에 저장하고(460), 상기 스트라이프 버퍼의 모든 페이지 버퍼들과 패리티 버퍼를 빈 페이지 버퍼로 설정할 수도 있다(470).
예를 들어, 본 발명의 일실시예에 스트라이프 버퍼에는 N-1개의 페이지 데이터가 있고 스트라이프 파티션에는 N개의 페이지를 구성한 것으로 가정하면, 스트라이프 버퍼의 N-1개의 페이지 데이터로부터 패리티 데이터를 생성하여 상기 페이지 데이터들과 그 패리티를 스트라이프 파티션의 N개의 페이지에 저장할 수 있다. 이때, 본 발명의 일실시예에 따르면 저장하는 순서에는 별도의 제한을 두지 않는다.
또한, 본 발명의 일실시예에 따르면 패리티를 각 페이지 스트라이프, 각 스트라이프 파티션 또는 각 뱅크마다 회전하며 저장할 수도 있다. 또한, 본 발명의 일실시예에 따른 패리티 페이지는 호스트 주소를 갖지 않으며, 패리티 페이지임을 식별하는 메타 데이터와 함께 저장할 수도 있다.
또한, 본 발명의 일실시예에 따르면 스트라이프 버퍼에는 N-2개의 페이지 데이터를 포함하고, 두 개의 신드롬(Syndrome)데이터로 N개의 페이지로 구성된 페이지 스트라이프에 저장하는 방법으로 확장할 수도 있다.
도 5는 본 발명의 일실시예에 따른 플러쉬 과정을 도시한 흐름도이다.
도 5를 참조하면 본 발명의 일실시예에 따른 플래시 주소 변환 장치는 정보를 플러쉬(flush)하는 과정을 수행할 수도 있다.
먼저, 본 발명의 일실시예에 따른 플래시 주소 변환 장치는 모든 페이지 버퍼 중에서 빈 페이지 버퍼가 아닌 것이 있는지 여부를 판단하여(510), 아닌 것이 있는 경우 빈 페이지 버퍼가 아닌 페이지 버퍼를 포함하는 스트라이프 버퍼 하나를 선택한다(520). 이때, 해당 스트라이프 버퍼에는 빈 페이지 버퍼가 존재할 수 있다.
다음으로, 본 발명의 일실시예에 따른 플래시 주소 변환 장치는 선택된 스트라이프 버퍼의 모든 페이지 버퍼들에 대한 패리티를 계산하고, 상기 패리티를 패리티 버퍼에 저장한다(530). 이때, 본 발명의 일실시예에 따르면 빈 페이지 버퍼의 데이터는 모두 0으로 간주할 수 있다.
다음으로, 본 발명의 일실시예에 따른 플래시 주소 변환 장치는 선택된 스트라이프 버퍼의 모든 페이지 버퍼들과 패리티 버퍼를 상기 스트라이프 파티션의 빈 페이지 스트라이프에 저장한다(540). 이때, 본 발명의 일실시예에 따르면 빈 페이지 버퍼는 무효 페이지 데이터로 저장될 수 있다.
예를 들어, 본 발명의 일실시예에 따른 플래시 주소 변환 장치는 호스트로부터 플러쉬 명령을 받거나, 장치 스스로 플러쉬 할 것을 결정하면, 스트라이프 버퍼에 있는 페이지 버퍼들은 모두 메모리에 저장하나, 플러쉬 되는 순간에는 스트라이프 버퍼에 비어 있는 페이지 버퍼들이 존재한다.
본 발명의 일실시예에 따른 플래시 주소 변환 장치는 플러쉬를 위하여 비어 있지 않은(유효한) 페이지 버퍼가 있는 스트라이프 버퍼를 선택하고, 해당 스트라이프를 임의의 스트라이프 페이지로 저장하는 과정을 수행한다.
이때, 본 발명의 일실시예에 따른 빈 페이지는 무효 식별인자와 함께 저장을 하여, 유효한 페이지 데이터와 무효한 페이지 데이터와 패리티 데이터가 합쳐져 완전한 페이지 스트라이프 단위로 저장될 수 있다.
또한, 본 발명의 일실시예에 따르면 빈(무효한) 페이지 버퍼를 저장할 페이지에는 무효함을 인식할 수 있는 메타 데이터와 함께 저장하여 해당 페이지에 의미 없는 데이터가 있음을 알게 한다.
도 6은 본 발명의 일실시예에 따른 읽기 오류 처리 과정을 도시한 흐름도이다.
본 발명의 일실시예에 따른 플래시 주소 변환 장치는 페이지 읽기 오류가 발생한 경우 도 6과 같이 처리하여 페이지 읽기 오류가 발생한 것을 처리할 수 있다.
먼저, 본 발명의 일실시예에 따른 플래시 주소 변환 장치는 읽기 오류가 발생한 페이지가 속한 페이지 스트라이프의 모든 페이지들을 읽는다(610). 이때, 오류 페이지는 제외하여 읽는다.
다음으로, 본 발명의 일실시예에 따른 플래시 주소 변환 장치는 읽은 페이지들의 패리티 연산을 수행하여 오류 페이지를 복원한다(620).
예를 들어, 본 발명의 일실시예에 따른 플래시 주소 변환 장치는 임의의 페이지를 읽었는데 상기 페이지에 대한 읽기 오류가 발생한 경우에, 읽기 오류가 발생한 페이지가 속한 페이지 스타라이프의 페이지들 중에서 오류 페이지를 제외한 나머지 모든 페이지들을 읽고, 상기 읽은 페이지들로부터 패리티 연산을 통하여 오류 페이지를 복원할 수 있다.
한편, 본 발명의 일실시예에 따른 플래시 주소 변환 장치는 임의의 스트라이프 파티션에서 빈 페이지 스트라이프의 개수가 적정한 수 미만인 경우, 상기 스트라이프 파티션에 대하여 폐영역 회수를 수행할 수 있다.
본 발명의 일실시예에 따른 폐영역 회수 과정은 스트라이프 파티션 별로 독립적으로 수행될 수 있으며, 무효한 페이지를 포함하는 블록 스트라이프에서 유효한 페이지만 다른 블록 스트라이프로 복사하고, 상기 복사되어진 블록 스트라이프를 삭제하여 상기 블록 스트라이프의 모든 페이지를 빈 페이지로 만듦으로써, 빈 페이지의 개수를 증가시킬 수 있다.
이때, 본 발명의 일실시예에 따른 무효 페이지는 플러쉬 과정, 폐영역 회수 과정에서도 생길 수 있으며, 주로 최신의 데이터가 그것과 동일한 호스트-뷰 주소를 갖는 과거 데이터를 무효화시킬 수 있다.
또한, 본 발명의 일실시예에 따르면 임의의 방법으로 폐영역 회수할 스트라이프 파티션을 선택하고, 그 스트라이프 파티션의 유효한 페이지만을 선택한 후, 스트라이프 단위로 새로운 패리티와 함께 빈 페이지 스트라이프가 있는 다른 블록 스트라이프에 복사할 수 있다.
또한, 본 발명의 일실시예에 따르면 완전한 페이지 스트라이프를 구성하기에 유효한 페이지의 개수가 부족하면, 무효 데이터와 함께 저장하여 완전한 페이지 스트라이프를 구성하여 페이지 스트라이프 단위로 저장할 수도 있다.
도 7은 본 발명의 일실시예에 따른 폐영역 회수 과정을 도시한 흐름도이다.
예를 들어, 도 7에 도시된 바와 같이 본 발명의 일실시예에 따른 플래시 주소 변환 장치는 4개의 페이지가 하나의 블록을 형성하고 있어서, 4 개의 페이지 스트라이프가 하나의 블록 스트라이프를 구성할 수 있다.
이때, 본 발명의 일실시예에 따른 블록 스트라이프 x에는 다섯 개의 유효 페이지가 존재하여, 상기 유효 페이지만을 블록 스트라이프 y에 복사하고, 페이지 (유효a), 페이지 (유효b), 페이지 (유효c)에 대한 새로운 패리티를 생성하여, 상기 페이지들과 상기 패리티를 페이지 스트라이프 y, 1으로 저장할 수 있다. 예를 들어, 스트라이프 x의 패리티는 사용되지 않고 스트라이프 y에 새로운 패리티가 만들어질 수 있다.
또한, 본 발명의 일실시예에 따른 블록 스트라이프 x에서 나머지 유효 페이지는 페이지 (유효d). 페이지 (유효e)이며, 상기 나머지 유효 페이지들과 새로운 패리티는 완전한 페이지 스트라이프를 구성하기에 하나의 페이지가 부족하므로, 페이지 (유효d). 페이지 (유효e)와 무효한 페이지를 하나의 페이지 스트라이프로서 저장할 수도 있다.
또한, 본 발명의 일실시예에 따른 페이지 스트라이프에는 페이지 (유효d)와 페이지 (유효e)에 대한 패리티도 함께 저장할 수 있다.
본 발명에 따른 실시예들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(Floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.
110: 제어부
120: 채널
130: 칩
140: 뱅크
150: 스트라이프 파티션

Claims (22)

  1. 하나 이상의 횡 방향의 뱅크(bank)와 하나 이상의 열 방향의 채널로 구분되는 하나 이상의 칩; 및
    호스트로부터 제어 정보를 수신하여 상기 제어 정보에 따라 상기 하나 이상의 칩을 제어하는 제어부를 포함하고,
    상기 하나 이상의 칩은 상기 하나 이상의 횡 방향의 뱅크에서 구분된 하나 이상의 스트라이프 파티션으로 구분되고, 상기 하나 이상의 스트라이프 파티션 각각에는 하나 이상의 스트라이프 버퍼가 할당되고,
    상기 하나 이상의 스트라이프 버퍼 각각은 하나 이상의 페이지 버퍼를 포함하고,
    상기 하나 이상의 페이지 버퍼 각각은 페이지 크기의 정보를 저장하고,
    상기 하나 이상의 스트라이프 버퍼 각각은 상기 페이지 크기의 정보의 주소에 대응하는 해쉬(Hash) 함수에 의하여 결정되는 플래시 주소 변환 장치.
  2. 제1항에 있어서,
    상기 하나 이상의 스트라이프 파티션 각각은 상기 하나 이상의 스트라이프 버퍼가 할당된 하나 이상의 칩 파티션을 포함하고, 상기 하나 이상의 칩 파티션은 하나 이상의 블록 스트라이프로 분리되는 플래시 주소 변환 장치.
  3. 제2항에 있어서,
    상기 하나 이상의 칩 파티션은 하나 이상의 페이지를 포함하고,
    상기 하나 이상의 블록 스트라이프 각각은 상기 하나 이상의 페이지를 포함하는 하나 이상의 페이지 스트라이프로 분리되는 플래시 주소 변환 장치.
  4. 제3항에 있어서,
    상기 제어부는 상기 하나 이상의 칩을 통하여 상기 하나 이상의 페이지 스트라이프 단위로 정보를 기록하는 플래시 주소 변환 장치.
  5. 제3항에 있어서,
    상기 제어부는 상기 하나 이상의 칩을 통하여 상기 하나 이상의 페이지 단위로 정보를 읽는 플래시 주소 변환 장치.
  6. 제3항에 있어서,
    상기 제어부는 상기 하나 이상의 칩을 통하여 상기 하나 이상의 블록 스트라이프 단위로 정보를 삭제하거나 폐영역을 회수하는 플래시 주소 변환 장치.
  7. 삭제
  8. 제1항에 있어서,
    상기 제어부는 하나 이상의 저장 정보를 상기 하나 이상의 저장 정보의 주소에 대응하는 저장 영역에 저장되도록 제어하며,
    상기 저장 영역은 상기 하나 이상의 스트라이프 파티션 중 어느 하나인 플래시 주소 변환 장치.
  9. 제1항에 있어서,
    상기 하나 이상의 스트라이프 파티션은 서로 독립된 영역인 플래시 주소 변환 장치.
  10. 하나 이상의 횡 방향의 뱅크와 하나 이상의 열 방향의 채널로 구분되는 하나 이상의 칩을 유지하는 단계;
    상기 하나 이상의 칩을 상기 하나 이상의 횡 방향의 뱅크로부터 구분되도록 하나 이상의 스트라이프 파티션으로 구분하는 단계; 및
    상기 하나 이상의 스트라이프 파티션 각각에 하나 이상의 스트라이프 버퍼를 할당하는 단계를 포함하고,
    상기 하나 이상의 스트라이프 버퍼 각각은 하나 이상의 페이지 버퍼를 포함하고,
    상기 하나 이상의 페이지 버퍼 각각은 페이지 크기의 정보를 저장하고,
    상기 하나 이상의 스트라이프 버퍼 각각은 상기 페이지 크기의 정보의 주소에 대응하는 해쉬(Hash) 함수에 의하여 결정되는 플래시 주소 변환 방법.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
KR1020100012821A 2010-02-11 2010-02-11 플래시 주소 변환 장치 및 그 방법 KR101678868B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100012821A KR101678868B1 (ko) 2010-02-11 2010-02-11 플래시 주소 변환 장치 및 그 방법
US13/025,267 US8832356B2 (en) 2010-02-11 2011-02-11 Apparatus and method for flash memory address translation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100012821A KR101678868B1 (ko) 2010-02-11 2010-02-11 플래시 주소 변환 장치 및 그 방법

Publications (2)

Publication Number Publication Date
KR20110093035A KR20110093035A (ko) 2011-08-18
KR101678868B1 true KR101678868B1 (ko) 2016-11-23

Family

ID=44859218

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100012821A KR101678868B1 (ko) 2010-02-11 2010-02-11 플래시 주소 변환 장치 및 그 방법

Country Status (2)

Country Link
US (1) US8832356B2 (ko)
KR (1) KR101678868B1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8719661B1 (en) * 2010-11-15 2014-05-06 Vmware, Inc. Transparent and lightweight recovery from hardware memory errors
US8726126B2 (en) * 2010-03-23 2014-05-13 Apple Inc. Non-regular parity distribution detection via metadata tag
US8892981B2 (en) 2010-09-30 2014-11-18 Apple Inc. Data recovery using outer codewords stored in volatile memory
KR101732030B1 (ko) 2010-12-22 2017-05-04 삼성전자주식회사 데이터 저장 장치 및 그것의 동작 방법
US9424128B2 (en) 2011-08-12 2016-08-23 Futurewei Technologies, Inc. Method and apparatus for flexible RAID in SSD
KR101374065B1 (ko) * 2012-05-23 2014-03-13 아주대학교산학협력단 칩 레벨 평행 플래시 메모리를 위한 정보 분별 방법 및 장치
KR101925383B1 (ko) 2012-07-23 2018-12-05 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 데이터 관리 방법
KR101412830B1 (ko) * 2013-02-07 2014-06-27 홍익대학교 산학협력단 반도체 저장장치 및 이를 제어하는 방법
TWI520152B (zh) * 2013-03-01 2016-02-01 慧榮科技股份有限公司 資料儲存裝置與快閃記憶體控制方法
KR102368071B1 (ko) 2014-12-29 2022-02-25 삼성전자주식회사 레이드 스토리지 시스템에서의 스트라이프 재구성 방법 및 이를 적용한 가비지 컬렉션 동작 방법 및 레이드 스토리지 시스템
KR102580123B1 (ko) * 2016-05-03 2023-09-20 삼성전자주식회사 Raid 스토리지 장치 및 그것의 관리 방법
US11113205B2 (en) * 2017-07-31 2021-09-07 Micron Technology, Inc. Die addressing using a reduced size translation table entry
TWI695263B (zh) 2018-08-01 2020-06-01 大陸商深圳大心電子科技有限公司 記憶體管理方法以及儲存控制器
US10977115B2 (en) * 2018-10-12 2021-04-13 Micron Technology, Inc. NAND parity information techniques for systems with limited RAM

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003527724A (ja) 2000-03-15 2003-09-16 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド フラッシュ・メモリの複数バンク同時操作

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6219800B1 (en) 1998-06-19 2001-04-17 At&T Corp. Fault-tolerant storage system
US6745284B1 (en) 2000-10-02 2004-06-01 Sun Microsystems, Inc. Data storage subsystem including a storage disk array employing dynamic data striping
GB0104469D0 (en) 2001-02-23 2001-04-11 Ibm Log-structured array
KR100526186B1 (ko) * 2003-04-04 2005-11-03 삼성전자주식회사 플래시 메모리의 오류블록 관리방법 및 장치
JP4440803B2 (ja) * 2005-03-03 2010-03-24 富士通株式会社 記憶装置、その制御方法及びプログラム
US8200887B2 (en) * 2007-03-29 2012-06-12 Violin Memory, Inc. Memory management system and method
KR100827677B1 (ko) 2006-06-20 2008-05-07 한국과학기술원 행렬 스트라이프 캐쉬를 이용한 raid 시스템의 입출력성능 향상 방법
US7904639B2 (en) * 2006-08-22 2011-03-08 Mosaid Technologies Incorporated Modular command structure for memory and memory system
KR101430097B1 (ko) 2006-09-15 2014-08-13 샌디스크 테크놀로지스, 인코포레이티드 비휘발성 메모리 및 클래스 기반의 업데이트 블록 대체 규칙을 위한 방법
US7979773B2 (en) 2007-03-13 2011-07-12 Summit Data Systems Llc RAID array auto-initialization (RAAI)
US8219749B2 (en) * 2007-04-27 2012-07-10 Netapp, Inc. System and method for efficient updates of sequential block storage
KR20080112743A (ko) 2007-06-22 2008-12-26 김성한 콤팩트 플래시 카드 기반의 레이드 시스템
KR100894845B1 (ko) 2007-10-19 2009-04-24 인하대학교 산학협력단 플래시 변환 계층 모듈을 이용한 주소 변환 방법
US8176284B2 (en) * 2009-08-11 2012-05-08 Texas Memory Systems, Inc. FLASH-based memory system with variable length page stripes including data protection information
US8285946B2 (en) * 2009-12-15 2012-10-09 International Business Machines Corporation Reducing access contention in flash-based memory systems

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003527724A (ja) 2000-03-15 2003-09-16 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド フラッシュ・メモリの複数バンク同時操作

Also Published As

Publication number Publication date
US8832356B2 (en) 2014-09-09
US20110271039A1 (en) 2011-11-03
KR20110093035A (ko) 2011-08-18

Similar Documents

Publication Publication Date Title
KR101678868B1 (ko) 플래시 주소 변환 장치 및 그 방법
US8788876B2 (en) Stripe-based memory operation
US9514055B2 (en) Distributed media cache for data storage systems
US9229876B2 (en) Method and system for dynamic compression of address tables in a memory
KR101086857B1 (ko) 데이터 머지를 수행하는 반도체 스토리지 시스템의 제어 방법
KR101910840B1 (ko) 동적 그래뉼기반 매개 스토리지
TWI497293B (zh) 固態儲存裝置內之資料管理
US9009396B2 (en) Physically addressed solid state disk employing magnetic random access memory (MRAM)
EP2631916A1 (en) Data deletion method and device
CN104050090B (zh) 中间存储中的停留排序数据
CN106548789A (zh) 用于操作叠瓦式磁记录设备的方法和装置
US8296503B2 (en) Data updating and recovering methods for a non-volatile memory array
KR20130088173A (ko) 트랜잭션 로그 복구
CN108958656B (zh) 基于raid5固态硬盘阵列的动态条带系统设计方法
CN110674056B (zh) 一种垃圾回收方法及装置
KR20190022290A (ko) 메모리 시스템, 메모리 시스템에 데이터를 기록하는 방법 및 메모리 시스템으로부터 데이터를 판독하는 방법
US20100318726A1 (en) Memory system and memory system managing method
CN108255414B (zh) 固态硬盘访问方法及装置
CN114356246B (zh) Ssd内部数据的存储管理方法、装置、存储介质及ssd设备
US20140047161A1 (en) System Employing MRAM and Physically Addressed Solid State Disk
US9798470B2 (en) Memory system for storing and processing translation information
US11989457B2 (en) System and method for performing data read-write operations in zoned storage devices
CN115563026B (zh) 一种映射表的重建方法及数据存储设备
US10613973B1 (en) Garbage collection in solid state drives
KR20150118207A (ko) 메모리제어장치 및 메모리제어장치의 동작 방법

Legal Events

Date Code Title Description
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: 20191031

Year of fee payment: 4