KR101732030B1 - 데이터 저장 장치 및 그것의 동작 방법 - Google Patents

데이터 저장 장치 및 그것의 동작 방법 Download PDF

Info

Publication number
KR101732030B1
KR101732030B1 KR1020100132643A KR20100132643A KR101732030B1 KR 101732030 B1 KR101732030 B1 KR 101732030B1 KR 1020100132643 A KR1020100132643 A KR 1020100132643A KR 20100132643 A KR20100132643 A KR 20100132643A KR 101732030 B1 KR101732030 B1 KR 101732030B1
Authority
KR
South Korea
Prior art keywords
data
parity
strip
strips
storage medium
Prior art date
Application number
KR1020100132643A
Other languages
English (en)
Other versions
KR20120071058A (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 KR1020100132643A priority Critical patent/KR101732030B1/ko
Priority to US13/301,025 priority patent/US8694865B2/en
Priority to TW100147870A priority patent/TWI519949B/zh
Priority to CN201110448530.9A priority patent/CN102681944B/zh
Publication of KR20120071058A publication Critical patent/KR20120071058A/ko
Application granted granted Critical
Publication of KR101732030B1 publication Critical patent/KR101732030B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

본 발명에 따른 데이터 저장 장치는 전체-스트라이프-쓰기 동작을 수행할 때 버퍼 메모리의 추가적인 액세스없이 저장 매체로 전송되는 데이터 스트립들에 의거하여 패리티 스트립을 생성하도록 구성될 것이다. 패리티 스트립의 생성은 패리티 생성(또는, XOR 연산)을 수반하는 명령들에 따라 행해질 것이다. 데이터 및 패리티 스트립들 각각에는 ECC 정보가 부가된다. 데이터 스트립들 각각의 메타 데이터에 대한 패리티는 패리티 생성 블록을 통해 생성되는 것이 아니라, 프로세싱 유니트에 의해서 생성될 것이다.

Description

데이터 저장 장치 및 그것의 동작 방법{DATA STORAGE DEVICE AND OPERATING METHOD THEREOF}
본 발명은 전자 장치에 관한 것으로, 좀 더 구체적으로는 데이터 저장 장치 및 그것의 동작 방법에 관한 것이다.
이 분야에 잘 알려진 바와 같이, 컴퓨터 시스템은 일반적으로 다양한 형태의 메모리 시스템들을 사용한다. 예를 들면, 컴퓨터 시스템은 반도체 장치들로 구성된 소위 메인 메모리를 사용한다. 이 반도체 장치들은 일반적으로 다음과 같은 속성을 갖는다. 반도체 장치들은 상당히 빠른 액세스 속도로 랜덤하게 쓰여지거나 읽혀지며, 일반적으로 랜덤 액세스 메모리라 불린다. 하지만, 반도체 메모리가 비교적 고가이기 때문에, 다른 고밀도 및 저가 메모리가 종종 사용된다. 예를 들면, 다른 메모리 시스템은 마그네틱 디스크 저장 시스템을 포함한다. 마그네틱 디스크 저장 시스템의 경우 액세스 속도가 수십㎳인 반면에 메인 메모리의 경우 액세스 속도는 수백㎱이다. 디스크 저장 장치는 필요시 메인 메모리로 순차적으로 읽혀지는 대용량 데이터를 저장하는 데 사용된다. 다른 형태의 디스크와 같은 저장 장치는 반도체 디스크 (solid state disk: 이하, SSD라 칭함) (또는 반도체 드라이브라 불림)이다. SSD는 일반적인 하드 디스크 드라이브에서 사용되는 회전 접시 대신에 데이터를 저장하는 데 SDRAM과 같은 메모리 칩들을 사용한 데이터 저장 장치이다.
"SSD"라는 용어는 2가지 다른 종류의 제품들에 사용된다. SDRAM과 같은 고속 및 휘발성 메모리에 근거를 둔 첫 번째 형태의 SSD는 상당히 빠른 데이터 액세스에 의해서 특징지어 지며, 디스크 드라이브의 레이턴시에 의해서 지연되었던 어플리케이션의 속도를 늘리는 데 주로 사용된다. 이러한 SSD가 휘발성 메모리를 사용하기 때문에, 데이터 지속성을 보장하기 위해서 내부 배터리 및 백업 디스크 시스템이 일반적으로 SSD 내에 포함된다. 만약 전원이 어떤 이유로 인해 차단되면, 배터리는 모든 데이터를 램에서 백업 디스크로 복사하기에 충분히 긴 시간 동안 유니트로 전원을 공급한다. 전원이 복구됨에 따라, 데이터는 백업 디스크에서 램으로 다시 복사되고 SSD는 정상 동작을 재개한다. 이러한 장치들은 특히 많은 양의 램을 갖는 컴퓨터에서 특히 유용하다. 두 번째 타입의 SSD는 데이터를 저장하는 데 플래시 메모리를 사용한다. 이러한 SSD는 하드 드라이브의 대체를 위해서 일반적으로 사용된다. 첫 번째 타입과의 혼돈을 피하기 위해서, 이러한 디스크는 일반적으로 플래시 디스크라 불린다.
본 발명의 목적은 신뢰성을 향상시킬 수 있는 데이터 저장 장치 및 그것의 동작 방법을 제공하는 것이다.
본 발명의 일 특징은 저장 매체, 프로세싱 유니트, 그리고 상기 프로세싱 유니트의 제어하에 상기 저장 매체로 전송될 데이터를 저장하는 버퍼 메모리를 포함하는 데이터 저장 장치의 쓰기 방법을 제공하는 것이다. 쓰기 방법은 상기 버퍼 메모리의 데이터를 스트립 그룹의 데이터 스트립들로 모으고, 적어도 하나의 스트립 그룹에 속한 데이터 스트립들을 상기 저장 매체로 각각 전달하고, 상기 버퍼 메모리로의 추가적인 접근없이 상기 적어도 하나의 스트립 그룹의 전송된 데이터 스트립들에 의거하여 패리티 스트립을 계산하고, 상기 패리티 스트립을 상기 저장 매체로 전송하는 것을 포함한다.
예시적인 실시예에 있어서, 상기 쓰기 방법은 상기 적어도 하나의 스트립 그룹의 데이터 스트립들과 상기 패리티 스트립 각각에 ECC 정보를 부가하는 것을 더 포함한다.
예시적인 실시예에 있어서, 상기 패리티 스트립은 상기 프로세싱 유니트로부터의 명령들에 따라 계산되되, 상기 명령들은 상기 적어도 하나의 스트립 그룹의 데이터 스트립들에 대한 XOR 연산을 수반한다.
예시적인 실시예에 있어서, 상기 버퍼 메모리의 데이터를 스트립 그룹의 데이터 스트립들로 모으는 것은 상기 프로세싱 유니트의 어드레스 맵핑 동작을 통해 행해진다.
예시적인 실시예에 있어서, 상기 버퍼 메모리로의 추가적인 접근없이 상기 적어도 하나의 스트립 그룹의 전송된 데이터 스트립들에 의거하여 패리티 스트립을 계산하는 것은 패리티 버퍼를 초기화시키고, 상기 버퍼 메모리로의 추가적인 접근없이 상기 저장 매체로 전송된 상기 적어도 하나의 스트립 그룹의 데이터 스트립들 중 하나와 이전의 패리티로서 상기 패리티 버퍼의 값에 대해 XOR 연산을 수행하여 상기 XOR 연산의 결과를 상기 패리티 버퍼에 저장하고, 상기 적어도 하나의 스트립 그룹의 나머지 데이터 스트립들이 모두 상기 저장 매체로 전송될 때까지 상기 XOR 연산을 수행하는 것을 반복하는 것을 포함한다.
예시적인 실시예에 있어서, 상기 적어도 하나의 스트립 그룹의 모든 데이터 스트립들이 상기 저장 매체로 전송된 후, 상기 패리티 버퍼의 값은 상기 패리티 스트립으로서 상기 저장 매체로 전송된다.
예시적인 실시예에 있어서, 상기 데이터 및 패리티 스트립들 각각은 적어도 하나의 페이지로 구성된다.
예시적인 실시예에 있어서, 상기 적어도 하나의 스트립 그룹의 데이터 스트립들과 상기 패리티 스트립은 풀-스트라이프-라이트 단위인 스트라이프를 구성한다.
예시적인 실시예에 있어서, 소오스 스트라이프에 속한 데이터 스트립들 중 일부가 목표 스트라이프로 카피백될 때, 상기 일부 데이터 스트립들은 상기 버퍼 메모리로의 전송없이 상기 목표 스트라이프로 전송된다.
예시적인 실시예에 있어서, 상기 쓰기 방법은 상기 적어도 하나의 스트립 그룹의 데이터 스트립들 각각에 대한 메타 데이터를 생성하고, 상기 프로세싱 유니트를 통해 상기 데이터 스트립들 중 메타 데이터에 대한 패리티 데이터를 계산하는 것을 포함하되, 상기 데이터 스트립들에 대한 패리티 스트립은 상기 프로세싱 유니트와 독립된 가속기에 의해서 계산되고 ECC 정보는 상기 패리티 데이터에 부가된다.
본 발명의 예시적인 실시예들에 따르면, 전체-스트라이프-쓰기 동작을 수행할 때 버퍼 메모리의 추가적인 액세스없이 저장 매체로 전송되는 데이터 스트립들에 의거하여 패리티 스트립을 생성하는 데 있다. 패리티 스트립의 생성은 패리티 생성(또는, XOR 연산)을 수반하는 명령들에 따라 행해질 것이다. 데이터 및 패리티 스트립들 각각에는 ECC 정보가 부가된다. 데이터 스트립들 각각의 메타 데이터에 대한 패리티는 패리티 생성 블록을 통해 생성되는 것이 아니라, 프로세싱 유니트에 의해서 생성될 것이다. 따라서, 패리티 스트립의 생성을 위한 버퍼 메모리의 추가적인 액세스없이 전체-스트라이프-쓰기 동작을 수행하는 것이 가능하다.
도 1은 본 발명의 예시적인 실시예에 따른 데이터 저장 장치를 포함하는 시스템을 개략적으로 보여주는 블록도이다.
도 2는 본 발명의 예시적인 실시예에 따른 도 1에 도시된 SSD 제어기를 개략적으로 보여주는 블록도이다.
도 3은 본 발명의 예시적인 실시예에 따른 도 2에 도시된 저장 매체를 개략적으로 보여주는 블록도이다.
도 4는 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 전체-스트라이프-쓰기 방법(Full-Stripe-Write method)을 개략적으로 설명하기 위한 도면이다.
도 5는 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 전체-스트라이프-쓰기 방식에 따른 데이터 흐름을 설명하기 위한 블록도이다.
도 6은 본 발명의 예시적인 실시예에 따른 도 2에 도시된 플래시 메모리 제어기를 개략적으로 보여주는 블록도이다.
도 7은 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 명령들을 개략적으로 설명하기 위한 도면이다.
도 8은 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 XWRITE 명령에 대응하는 플래시 메모리 제어기의 동작을 설명하기 위한 도면이다.
도 9는 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 PBWRITE 명령에 대응하는 플래시 메모리 제어기의 동작을 설명하기 위한 도면이다.
도 10은 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 XLOAD 명령에 대응하는 플래시 메모리 제어기의 동작을 설명하기 위한 도면이다.
도 11은 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 XREAD 명령에 대응하는 플래시 메모리 제어기의 동작을 설명하기 위한 도면이다.
도 12는 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 PBREAD 명령에 대응하는 플래시 메모리 제어기의 동작을 설명하기 위한 도면이다.
도 13은 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 XCOPYBACK 명령에 대응하는 플래시 메모리 제어기의 동작을 설명하기 위한 도면이다.
도 14는 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 전체-스트라이프-쓰기 방법을 설명하기 위한 UML 시퀀스 도면이다.
도 15 내지 도 17은 도 14에 도시된 전체-스트라이프-쓰기 동작이 수행되는 동안 데이터 흐름을 보여주는 도면들이다.
도 18은 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 판독 불가능한 데이터를 복원하는 동작을 설명하기 위한 UML 시퀀스 도면이다.
도 19 내지 도 21은 도 18에 도시된 판독 불가능한 데이터 복원 동작이 수행되는 동안 데이터 흐름을 보여주는 도면들이다.
도 22는 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 카피백 프로그램 동작을 설명하기 위한 UML 시퀀스 도면이다.
도 23 내지 도 25는 도 22에 도시된 카피백 프로그램 동작이 수행되는 동안 데이터 흐름을 보여주는 도면들이다.
도 26은 본 발명의 다른 예시적인 실시예에 따른 데이터 저장 장치의 전체-스트라이프-쓰기 방법을 설명하기 위한 UML 시퀀스 도면이다.
도 27 내지 도 31은 도 26에 도시된 전체-스트라이프-쓰기 동작이 수행되는 동안 데이터 흐름을 보여주는 도면들이다.
도 32는 본 발명의 또 다른 예시적인 실시예에 따른 데이터 저장 장치의 전체-스트라이프-쓰기 방법을 설명하기 위한 도면이다.
도 33a 내지 도 33d는 본 발명의 예시적인 실시예에 따른 데이터 저장 장치에 적용되는 스트라이프 형태들을 설명하기 위한 도면들이다.
도 34는 본 발명의 또 다른 예시적인 실시예에 따른 데이터 저장 장치를 개략적으로 보여주는 블록도이다.
도 35는 본 발명의 예시적인 실시예에 따른 데이터 저장 장치를 포함한 컴퓨팅 시스템을 개략적으로 보여주는 블록도이다.
도 36은 본 발명의 예시적인 실시예들에 따른 데이터 저장 장치를 이용한 스토리지를 개략적으로 보여주는 블록도이다.
도 37은 본 발명의 예시적인 실시예들에 따른 데이터 저장 장치를 이용한 스트리지 서버를 개략적으로 보여주는 블록도이다.
도 38 내지 도 40은 본 발명의 예시적인 실시예들에 따른 데이터 저장 장치가 적용되는 시스템들을 개략적으로 보여주는 도면들이다.
본 발명의 이점 및 특징, 그리고 그것을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 통해 설명될 것이다. 그러나 본 발명은 여기에서 설명되는 실시 예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 본 실시 예들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.
도면들에 있어서, 본 발명의 실시 예들은 도시된 특정 형태로 제한되는 것이 아니며 명확성을 기하기 위하여 과장된 것이다. 또한 명세서 전체에 걸쳐서 동일한 참조번호로 표시된 부분들은 동일한 구성요소를 나타낸다.
본 명세서에서 ‘및/또는’이란 표현은 전후에 나열된 구성요소들 중 적어도 하나를 포함하는 의미로 사용된다. 또한, ‘연결되는/결합되는’이란 표현은 다른 구성요소와 직접적으로 연결되거나 다른 구성요소를 통해 간접적으로 연결되는 것을 포함하는 의미로 사용된다. 본 명세서에서 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 또한, 명세서에서 사용되는 ‘포함한다’ 또는 ‘포함하는’으로 언급된 구성요소, 단계, 동작 및 소자는 하나 이상의 다른 구성요소, 단계, 동작, 소자 및 장치의 존재 또는 추가를 의미한다.
도 1은 본 발명의 예시적인 실시예에 따른 데이터 저장 장치를 포함하는 시스템을 개략적으로 보여주는 블록도이다.
도 1을 참조하면, 본 발명의 예시적인 실시예에 따른 데이터 저장 장치(1000)는 호스트 시스템(2000)의 요청에 응답하여 동작하며, 호스트 시스템(2000)에 필요한 데이터 정보를 저장하는 데 사용될 것이다. 데이터 저장 장치(1000)는, 예를 들면, 저장 매체로서 불 휘발성 메모리 장치들을 이용한 반도체 드라이브(Solid State Drive: SSD)일 것이다. 하지만, 데이터 저장 장치(1000)가 여기에 개시된 것에 국한되지 않음은 잘 이해될 것이다. 예를 들면, 데이터 저장 장치(1000)는 하드 디스크 드라이브(HDD)로 구성될 수 있다.
데이터 저장 장치(1000)는 저장 매체(1200)와 SSD 제어기(1400)를 포함할 것이다. 저장 매체(1200)는 SSD 제어기(1400)의 제어에 따라 호스트 시스템(2000)으로부터 전송된 또는 호스트 시스템(2000)으로 전송될 데이터를 저장할 것이다. 호스트 시스템(2000)으로부터 전송되는 데이터는 버퍼 메모리(1420)에 임시 저장될 것이다. 특히, 본 발명의 예시적인 실시예에 따른 SSD 제어기(1400)는 스트립 그룹들을 구성하도록 버퍼 메모리(1420)에 임시 저장된 데이터의 어드레스 맵핑을 관리할 것이다. 다시 말해서, 호스트 시스템(2000)의 랜덤 또는 순차 쓰기-요청된 데이터가 버퍼 메모리(1420)에 저장되는 경우, SSD 제어기(1400)는 쓰기 요청 타입에 관계없이 스트립 그룹(들)로 구성되도록 버퍼 메모리(1420)에 저장된 데이터와 관련된 어드레스 맵핑을 관리할 것이다.
여기서, 스트립 그룹은 복수의 스트립들(strips)(또는, 복수의 데이터 스트립들)로 구성될 것이다. 하나의 스트립은 저장 매체(1200)를 구성하는 메모리 타입에 따라 다양하게 설정될 수 있다. 예를 들면, 저장 매체(1200)가 플래시 메모리 장치들로 구성되는 경우, 하나의 스트립은 하나 또는 그 보다 많은 페이지들로 구성될 것이다. 예시적인 실시예에 있어서, 하나의 스트립은 하나의 페이지로 구성될 수 있다. 하지만, 하나의 스트립이 하나의 페이지보다 작은 섹터(들) 또는 페이지들의 블록(들)로 구성될 수 있음은 잘 이해될 것이다.
계속해서 도 1을 참조하면, SSD 제어기(1400)는 패리티 생성 블록(1451)과 ECC 생성 블록(1452)을 더 포함할 것이다. 하나 또는 그 보다 많은 스트립 그룹들이 준비되는 경우, SSD 제어기(1400)는 스트립 그룹 단위로 버퍼 메모리(1420)의 데이터를 저장 매체(1200)로 전송할 것이다. 스트립 그룹에 속한 데이터 스트립들이 각각 저장 매체(1200)로 전송될 때, SSD 제어기(1400)의 패리티 생성 블록(1451)은 데이터 스트립들에 대한 배타적 논리합(XOR) 연산을 수행할 것이다. 이는 이후 상세히 설명될 것이다. 데이터 스트립들에 대한 XOR 결과(이는 '패리티 스트립(parity strip)'이라 칭함)는 스트립 그룹에 추가될 것이다. 스트립 그룹에 속한 데이터 스트립들과 추가된 패리티 스트립은 전체-스트라이프-쓰기(full-stripe-write) 단위인 '하나의 스트라이프(stripe)'를 구성할 것이다. 추가된 패리티 스트립은 스트립 그룹의 데이터 스트립들과 함께 저장 매체(1200)에 저장 매체(1200)에 저장될 것이다. 이러한 쓰기 방식을 전체-스트라이프-쓰기 방식이라 칭한다. 스트립 그룹에 속한 데이터 스트립들이 각각 저장 매체(1200)로 전송될 때, SSD 제어기(1400)의 ECC 생성 블록(1452)은 데이터 및 패리티 스트립들 각각에 대한 ECC 정보를 생성하도록 구성될 것이다. 데이터 및 패리티 스트립들 각각에 대한 ECC 정보가 생성됨에 따라, 스트라이프를 구성하는 데이터 및 패리티 스트립들 각각에 ECC 정보가 부가될 것이다.
앞서의 설명으로부터 이해되는 바와 같이, 스트립 그룹에 속한 데이터 스트립들이 각각 저장 매체(1200)로 전송될 때 패리티 스트립이 생성되기 때문에, 하나의 스트라이프에 속한 패리티 스트립의 생성은 버퍼 메모리(1420)에 대한 추가적인/부가적인 액세스 없이 또는 버퍼 메모리(1420)의 트래픽 증가 없이 행해질 것이다. 다시 말해서, 본 발명의 예시적인 실시예에 따른 데이터 저장 장치(1000)의 쓰기 방식은 패리티 스트립의 생성을 수반하지 않는 일반적인 쓰기 방식과 비교하여 볼 때 버퍼 메모리(1420)의 트래픽의 증가를 초래하지 않는다.
도 2는 본 발명의 예시적인 실시예에 따른 도 1에 도시된 SSD 제어기를 개략적으로 보여주는 블록도이다. 도 2에 도시된 바와 같이, 본 발명의 예시적인 실시예에 따른 SSD 제어기(1400)는 호스트 인터페이스(1410)(도면에는, 'HI'로 표기됨), 버퍼 메모리(1420), 마이크로프로세서 또는 CPU와 같은 처리 유니트(1430), 램(1440), 그리고 플래시 메모리 제어기(1450)(도면에는, 'FMC'로 표기됨)를 포함할 것이다.
호스트 인터페이스(1410)는 호스트 시스템(2000)과의 인터페이스를 제공할 것이다. 데이터 저장 장치(1000)와 호스트 시스템(2000)과의 연결은 유선 그리고/또는 무선의 호스트 인터페이스(1410)를 통해 행해질 수 있다. 버퍼 메모리(1420)는 호스트 시스템(2000)으로부터 전송된 데이터 또는 호스트 시스템(2000)으로 전송될 데이터를 임시 저장하는 데 사용될 것이다. 처리 유니트(1430)는 SSD 제어기(1400)의 전반적인 동작을 제어하도록 구성될 것이다. 램(1440)에는, 예를 들면, 데이터 저장 장치(1000)에 전원이 공급될 때 저장 매체(1200)에 저장되는 코드들(예를 들면, 플래시 변환 계층(FTL))이 로드될 것이다. 이에 반해서, 코드 램 대신 상술한 코드들을 저장하기 위한 코드 롬이 사용될 수 있다. 플래시 변환 계층은 어드레스 맵핑 관리, 저장 매체(1200)의 웨어-레벨링(wear-leveling) 관리, 예상치 못한 전원 차단에 기인한 데이터 보존성 관리, 등을 행하는 데 사용될 것이다.
플래시 메모리 제어기(1450)는 처리 유니트(1430)의 요청에 응답하여 저장 매체(1200)의 액세스를 제어할 것이다. 플래시 메모리 제어기(1450)는 패리티 생성 블록(1451)과 ECC 생성 블록(1452)을 포함할 것이다. 앞서 언급된 바와 같이, 하나 또는 그 보다 많은 스트립 그룹들이 어드레스 맵핑을 통해 준비되는 경우, 버퍼 메모리(1420)의 데이터는 스트립 그룹 단위로 저장 매체(1200)로 전송될 것이다. 스트립 그룹에 속한 데이터 스트립들이 각각 저장 매체(1200)로 전송될 때, 패리티 생성 블록(1451)은 데이터 스트립들에 대한 XOR 연산을 수행하여 패리티 스트립을 생성할 것이다. 스트립 그룹에 속한 데이터 스트립들이 각각 저장 매체(1200)로 전송될 때, ECC 생성 블록(1452)은 각 데이터 스트립 및 패리티 스트립에 대한 ECC 정보를 생성하도록 구성될 것이다. 각 데이터 스트립 및 패리티 스트립에 대한 ECC 정보가 생성됨에 따라, 전체-스트라이프-쓰기 단위인 스트라이프를 구성하는 데이터 및 패리티 스트립들 각각에 ECC 정보가 부가될 것이다.
예시적인 실시예에 있어서, 패리티 생성 블록(1451)과 ECC 생성 블록(1452)이 플래시 메모리 제어기(1450)에 포함되는 예가 설명되었다. 하지만, 패리티 생성 블록(1451)과 ECC 생성 블록(1452)이 플래시 메모리 제어기(1450)의 외부에 위치하도록 구성될 수 있음은 잘 이해될 것이다. 또는, ECC 생성 블록(1452)이 저장 매체(1200)의 각 플래시 메모리 장치에 포함될 수 있음은 잘 이해될 것이다. 패리티 생성 블록(1451)과 ECC 생성 블록(1452)의 배치에 관계없이 패리티 및 ECC 생성 과정이 본 발명의 사상에서 벗어나지 않음은 잘 이해될 것이다.
예시적인 실시예에 있어서, 호스트 인터페이스(1410)는 컴퓨터 버스 표준들, 스토리지 버스 표준들, iFCPPeripheral 버스 표준들, 등 중 하나 또는 그 보다 많은 것들의 조합으로 구성될 수 있다. 컴퓨터 버스 표준들(computer bus standards)은 S-100 bus, Mbus, Smbus, Q-Bus, ISA, Zorro II, Zorro III, CAMAC, FASTBUS, LPC, EISA, VME, VXI, NuBus, TURBOchannel, MCA, Sbus, VLB, PCI, PXI, HP GSC bus, CoreConnect, InfiniBand, UPA, PCI-X, AGP, PCIe, Intel QuickPath Interconnect, Hyper Transport, 등을 포함한다. 스토리지 버스 표준들(Storage bus standards)은 ST-506, ESDI, SMD, Parallel ATA, DMA, SSA, HIPPI, USB MSC, FireWire(1394), Serial ATA, eSATA, SCSI, Parallel SCSI, Serial Attached SCSI, Fibre Channel, iSCSI, SAS, RapidIO, FCIP, 등을 포함한다. iFCPPeripheral 버스 표준들(iFCPPeripheral bus standards)은 Apple Desktop Bus, HIL, MIDI, Multibus, RS-232, DMX512-A, EIA/RS-422, IEEE-1284, UNI/O, 1-Wire, I2C, SPI, EIA/RS-485, USB, Camera Link, External PCIe, Light Peak, Multidrop Bus, 등을 포함한다.
도 3은 본 발명의 예시적인 실시예에 따른 도 2에 도시된 저장 매체를 개략적으로 보여주는 블록도이다.
도 3을 참조하면, 저장 매체(1200)는 복수의 채널들(CH0∼CHn-1)을 통해 SSD 제어기(1400)의 플래시 메모리 제어기(1450)와 연결될 것이다. 채널들(CH0∼CHn-1) 각각에는 복수의 불 휘발성 메모리 장치들(NVM)이 연결될 것이다. 불 휘발성 메모리 장치(NVM)는, 예를 들면, 플래시 메모리 장치일 것이다. 하지만, 불 휘발성 메모리 장치(NVM)가 플래시 메모리 장치에 국한되지 않음은 잘 이해될 것이다. 예를 들면, 불 휘발성 메모리 장치(NVM)는 상변화 메모리 장치(PRAM), 강유전체 메모리 장치(FeRAM), 자기 저항램 장치(MRAM), 또는 그와 같은 것으로 구성될 수 있다.
도 4는 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 전체-스트라이프-쓰기 방법(Full-Stripe-Write method)을 개략적으로 설명하기 위한 도면이다. 이하, 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 전체-스트라이프-쓰기 방법이 참조 도면들에 의거하여 상세히 설명될 것이다.
호스트 시스템(2000)은 저장될 데이터를 데이터 저장 장치(1000)로 랜덤하게 또는 순차적으로 전송할 것이다(B100). 데이터 저장 장치(1000)는 호스트 시스템(2000)에서 랜덤하게 또는 순차적으로 전송된 데이터를 버퍼 메모리(1420)에 임시 저장할 것이다(B110). 호스트 시스템(2000)으로부터 전송된 데이터는 프로세싱 유니트(1430)의 제어(또는, 플래시 변환 계층(FTL)의 제어)하에 스트립 그룹을 구성하도록 데이터의 어드레스들을 관리할 것이다(B120). 즉, 버퍼 메모리(1420)에 저장된 데이터는 플래시 변환 계층(FTL)의 어드레스 맵핑을 통해 스트립 그룹(들)로 모아질 것이다. 데이터를 스트립 그룹(들)으로 모으는 것이 데이터의 이동을 통해 행해지는 것이 아니라 논리 어드레스들과 물리적인 어드레스들 사이의 어드레스 맵핑을 통해 행해짐에 유의해야 할 것이다.
적어도 하나의 스트립 그룹이 구성되면, 버퍼 메모리(1420)에 저장된 스트립 그룹의 데이터(또는, 데이터 스트립들)는 프로세싱 유니트(1430)의 제어하에 저장 매체(1200)로 순차적으로 전송될 것이다(B130). 스트립 그룹의 데이터 스트립들 각각이 저장 매체(1200)로 전송되는 동안, 스트립 그룹의 데이터 스트립들 각각에 대한 부호화 동작이 ECC 생성 블록(1452)을 통해 행해질 것이다(B140). 즉, 도 4에 도시된 바와 같이, 하나의 데이터 스트립에 ECC 정보가 부가될 것이다. ECC 정보는 대응하는 데이터 스트립의 에러를 정정하기 위한 것으로, 하나의 셀에 저장되는 데이터 비트들의 수에 따라 에러 정정 능력(또는, ECC 정보의 비트 수)이 결정될 것이다.
게다가, 스트립 그룹의 데이터 스트립들 각각이 저장 매체(1200)로 전송될 때, 패리티 생성 블록(1451)은 스트립 그룹에 속한 데이터 스트립들에 대한 XOR 연산을 수행하여 패리티 스트립을 생성할 것이다(B150). 생성된 패리티 스트립은 하나의 스트립 그룹에 속한 데이터 스트립들이 모두 저장 매체(1200)로 전송된 후 저장 매체(1200)로 전송될 것이다. 데이터 스트립들에 대한 XOR 연산은 이후 상세히 설명될 것이다. 앞서의 설명과 마찬가지로, 저장 매체(1200)로 전송되는 패리티 스트립에 대한 부호화 동작이 ECC 생성 블록(1452)을 통해 행해질 것이다(B140). 즉, 하나의 패리티 스트립에 ECC 정보가 부가될 것이다. 패리티 스트립은 하나의 스트라이프의 데이터에 대한 신뢰성을 향상시키기 위한 것으로, 하나의 스트라이프에 속한 데이터 및 패리티 스트립들 중 어느 하나의 판독할 수 없는 스트립(unreadable strip)을 복원하는 데 사용될 것이다. 이는 이후 상세히 설명될 것이다.
결과적으로, 도 4에 도시된 바와 같이, 저장 매체(1200)에 저장되는 스트라이프(stripe)는 복수의 데이터 스트립들과 하나의 패리티 스트립으로 구성되며, 각 스트립에는 ECC 정보가 부가될 것이다.
상술한 바에 따르면, 스트립 그룹에 속한 데이터 스트립들이 각각 저장 매체(1200)로 전송될 때 패리티 스트립이 생성되기 때문에, 도 4에 도시된 바와 같이, 하나의 스트라이프에 속한 패리티 스트립의 생성은 버퍼 메모리(1420)에 대한 추가적인/부가적인 액세스 없이 그리고/또는 버퍼 메모리(1420)의 트래픽 증가 없이 행해질 것이다. 다시 말해서, 버퍼 메모리(1420)로의 액세스가 패리티 스트립을 생성하기 위해서 추가적으로/부가적으로 행해지지 않기 때문에, 버퍼 메모리(1420)의 트래픽은 데이터 신뢰성을 향상시키기 위해 사용되는 패리티 스트립의 생성 전후에 동일하게 유지될 것이다.
도 5는 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 전체-스트라이프-쓰기 방식에 따른 데이터 흐름을 설명하기 위한 블록도이다.
도 5을 참조하면, 호스트 시스템(2000)에서 제공되는 데이터는 호스트 인터페이스(1410)를 통해 버퍼 메모리(1420)에 저장될 것이다. 버퍼 메모리(1420)에 저장된 데이터는 호스트 시스템(2000)의 랜덤 또는 순차 쓰기 요청에 따라 제공된 데이터일 것이다. 예를 들면, 호스트 시스템(2000)에서 전송된 데이터를 버퍼 메모리(1420)에 저장하기 위해서 버퍼 메모리(1420)가 (N-1)번 액세스될 것이다. 도 5에 도시된 바와 같이, 버퍼 메모리(1420)에 저장된 데이터는 스트립 그룹들을 구성하도록 모아질 것이다. 앞서 설명된 바와 같이, 데이터를 스트립 그룹들로 모으는 것은 데이터의 이동을 통해 행해지는 것이 아니라 플래시 변환 계층(FTL)의 어드레스 맵핑을 통해 행해질 것이다. 하나의 스트립 그룹에 속한 스트립들(또는, 데이터 스트립들)의 수가 응용처에 따라 다양하게 결정될 수 있음은 잘 이해될 것이다.
일단 하나 또는 그 보다 많은 스트립 그룹들이 구성되면, 스트립 그룹의 데이터(또는, 데이터 스트립들)는 프로세싱 유니트(1430)의 제어하에 저장 매체(1200)로 전송될 것이다. 플래시 메모리 제어기(1450)는 프로세싱 유니트(1430)로부터 제공되는 명령에 응답하여 데이터 스트립을 저장 매체(1200)로 전송할 것이다. 플래시 메모리 제어기(1450)의 ECC 생성 블록(1452)은 전송되는 데이터 스트립에 대한 ECC 정보를 생성하고, 데이터 스트립에 ECC 정보를 부가할 것이다. 즉, 도 5에 도시된 바와 같이, 각 데이터 스트립에는 대응하는 ECC 정보가 부가될 것이다. 하나의 스트립 그룹에 속한 데이터 스트립들이 저장 매체(1200)로 순차적으로 전송되는 동안, 플래시 메모리 제어기(1450)의 패리티 생성 블록(1451)은 전송되는 데이터 스트립들에 대한 XOR 연산을 수행하여 패리티 스트립을 생성할 것이다. 그렇게 생성된 패리티 스트립은 저장 매체(1200)로 전송될 것이다. 마찬가지로, 패리티 스트립에도 ECC 정보가 부가될 것이다. 저장 매체(1200)에 저장되는 스트라이프는 데이터 스트립들과 패리티 스트립으로 구성될 것이다.
이상의 설명으로부터 알 수 있듯이, 패리티 스트립의 생성은 버퍼 메모리(1420)에 대한 부가적인 액세스를 필요로 하지 않으며, 그 결과 패리티 스트립의 생성에도 불구하고 버퍼 메모리(1420)의 트래픽은 증가하지 않는다.
도 6은 본 발명의 예시적인 실시예에 따른 도 2에 도시된 플래시 메모리 제어기를 개략적으로 보여주는 블록도이다.
도 6을 참조하면, 플래시 메모리 제어기(1450)는 프로세싱 유니트(1430)로부터 제공되는 명령에 응답하여 동작하며, 패리티 생성 블록(1451), ECC 생성 블록(1452), 그리고 제어 로직 블록(1453)을 포함할 것이다. 본 발명의 예시적인 실시예에 따르면, 전체-스트라이프-쓰기 동작을 위해서 플래시 메모리 제어기(1450)와 프로세싱 유니트(1430) 사이에 새롭게 정의된 명령들(예를 들면, XWRITE, PBWRITE, XREAD, PBREAD, XCOPYBACK, XLOAD, PBRESET, 등)이 제공될 것이다. 그러한 명령들 중 일부는 전체-스트라이프-쓰기 동작(Full-Stripe-Write operation)을 위한 XOR 동작을 수반하는 명령들이며, 이는 이후 상세히 설명될 것이다.
패리티 생성 블록(1451)은 버퍼 메모리(1420)에서 저장 매체(1200)로 전달되는 데이터(예를 들면, 데이터 스트립)에 의거하여 패리티 스트립을 생성할 것이다. 이는 저장 매체(1200)로의 데이터 스트립 전송을 제외하면 패리티 스트립을 생성하기 위해서 추가적으로 버퍼 메모리(1420)에 대한 액세스가 발생하지 않음을 의미한다. 패리티 생성 블록(1451)은 복수의, 예를 들면, 4개의 패리티 버퍼들(PB0∼PB3)로 구성된 메모리(1451a)와 XOR 로직(1451b)을 포함할 것이다. 패리티 버퍼들(PB0∼PB3)의 수가 여기에 개시된 것에 국한되지 않음은 잘 이해될 것이다. 메모리(1451a)는, 예를 들면, SRAM일 것이다. XOR 로직(1451b)은 버퍼 메모리(1420)로부터 전송되는 데이터 스트립과 선택된 패리티 버퍼에 저장된 이전의 패리티 스트립의 배타적 논리합 연산을 수행할 것이다. 배타적 논리합 연산의 결과로서 새로운 패리티 스트립이 생성되며, 새로운 패리티 스트립은 이전의 패리티 스트립이 저장된 패리티 버퍼 즉, 선택된 패리티 버퍼에 저장될 것이다. 메모리(1451a)의 패리티 버퍼들(PB0∼PB3)은 명령에 포함되는 패리티 버퍼 번호(또는, 패리티 버퍼 어드레스)에 의해서 선택될 것이다. 선택된 패리티 버퍼에 저장된 패리티 스트립은 프로세스 유니트(1430)로부터의 명령에 따라 저장 매체(1200)로 또는 버퍼 메모리(1420)로 전송될 것이다. 패리티 생성 블록(1451)은 XOR 가속기(accelerator)로도 불리며, 비록 도면에는 도시되지 않았지만 패리티 생성 블록(1451)의 전반적인 동작을 제어하기 위한 로직을 포함할 것이다.
ECC 생성 블록(1452)은 버퍼 메모리(1420)에서 저장 매체(1200)로 전송되는 데이터 스트립들 각각에 대한 ECC 정보를 생성하도록 구성될 것이다. 마찬가지로, ECC 생성 블록(1452)은 패리티 생성 블록(1451)에서 저장 매체(1200)로 전송되는 패리티 스트립에 대한 ECC 정보를 생성할 것이다. ECC 생성 블록(1452)은, 또한, 저장 매체(1200)로부터 읽혀진 데이터(또는, 데이터/패리티 스트립)의 에러를 정정하도록 구성될 것이다. ECC 생성 블록(1452)은, 예를 들면, 저장 매체(1200)로부터 전송되는 스트립을 버퍼링하도록 구성되며, 버퍼링된 스트립은 에러 검출 및 정정 과정을 걸친 후 패리티 생성 블록(1451) 또는 버퍼 메모리(1420)로 전송될 것이다. 만약 버퍼링된 스트립이 정정 가능하지 않은 것으로 판별될 때, 읽기 에러가 발생하였음이 프로세싱 유니트(1430)로 통지될 것이다. ECC 생성 블록(1452)이 여기에 개시된 것에 국한되지 않음은 잘 이해될 것이다. 예를 들면, 버퍼링 기능을 지원하지 않는 ECC 생성 블록(1452)이 사용될 수 있다.
앞서 설명된 바와 같이, ECC 정보는 대응하는 데이터/패리티 스트립의 에러를 정정하는 데 사용되며, 패리티 스트립은 스트라이프에 속한 데이터 및 패리티 스트립들 중 어느 하나의 판독 불가능한 스트립(unreadable strip)을 복원하는 데 사용될 것이다. 여기서, 판독 불가능한 스트립은 ECC 정보에 의거하여 정정 가능하지 않은 스트립을 의미한다.
도 7은 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 명령들을 개략적으로 설명하기 위한 도면이다.
도 7을 참조하면, 프로세싱 유니트(1430)에서 플래시 메모리 제어기(1450)로 전송되는 명령들은 XWRITE 명령, PBWRITE 명령, XREAD 명령, PBREAD 명령, XCOPYBACK 명령, XLOAD 명령, 그리고 PBRESET 명령을 포함할 것이다. 명령들 각각은 동작 코드(operation code), 목적지 어드레스(destination address), 소스 어드레스(source address), 그리고 패리티 버퍼 번호(또는, 어드레스)(parity buffer number) 중 일부 또는 모두를 포함할 것이다. 예를 들면, XWRITE, PBWRITE, 그리고 XLOAD 명령들은 동작 코드, 목적지 어드레스, 그리고 패리티 버퍼 번호(또는, 어드레스)를 포함할 것이다. XREAD 명령은 동작 코드, 소스 어드레스, 그리고 패리티 버퍼 번호(또는, 어드레스)를 포함할 것이다. XCOPYBACK 명령은 동작 코드, 목적지 및 소스 어드레스들, 그리고 패리티 버퍼 번호(또는, 어드레스)를 포함할 것이다. PBRESET 및 PBREAD 명령들은 동작 코드와 패리티 버퍼 번호(또는, 어드레스)를 포함할 것이다. 이에 반해서, 도 7에 도시된 바와 같이, 명령은 전송될 데이터 스트립을 포함하도록 설정될 수 있다.
도 8은 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 XWRITE 명령에 대응하는 플래시 메모리 제어기의 동작을 설명하기 위한 도면이다.
프로세싱 유니트(1430)는 필요에 따라(예를 들면, 적어도 하나의 스트립 그룹이 어드레스 맵핑을 통해 준비될 때) XWRITE 명령을 플래시 메모리 제어기(1450)로 전송할 것이다. XWRITE 명령은 동작 코드, 목적지 어드레스, 그리고 패리티 버퍼 번호(또는, 어드레스)를 포함할 것이다. 여기서, 목적지 어드레스는 버퍼 메모리(1420)에서 전송되는 데이터 스트립이 저장될 저장 매체(1200)의 저장 공간을 지정하기 위해 사용되며, 패리티 버퍼 번호는 XOR 로직(1451b)에 의해서 생성되는 패리티 스트립을 저장할 패리티 버퍼를 선택하기 위해 사용될 것이다. XWRITE 명령이 입력될 때, 버퍼 메모리(1420)로부터 제공되는 데이터 스트립은 저장 매체(1200)로 전송될 것이다. 이와 동시에, XOR 로직(1451b)은 전송되는 데이터 스트립과 패리티 버퍼 번호에 의해서 지정된 패리티 버퍼의 이전의 패리티 스트립에 대해 배타적 논리합 연산을 수행할 것이다. 배타적 논리합 연산의 결과 즉, 새로운 패리티 스트립은 패리티 버퍼 번호에 의해서 지정된 패리티 버퍼에 저장될 것이다. 또한, ECC 생성 블록(1452)은 전송되는 데이터 스트립에 의거하여 ECC 정보를 생성할 것이다. ECC 정보는 데이터 스트립에 부가될 것이다. 앞서의 설명으로부터 이해되는 바와 같이, XWRITE 명령은 패리티 스트립의 생성을 수반하는 데이터 스트립의 전송을 위한 명령, 즉, 전체-스트라이프-쓰기 동작을 위한 XOR 동작을 수반하는 명령일 것이다.
예시적인 실시예에 있어서, 플래시 메모리 제어기(1450)로의 데이터 스트립 전송은 프로세싱 유니트(1430)의 제어에 따라 또는 플래시 메모리 제어기(1450)의 제어에 따라 행해질 것이다.
도 9는 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 PBWRITE 명령에 대응하는 플래시 메모리 제어기의 동작을 설명하기 위한 도면이다.
프로세싱 유니트(1430)는 필요에 따라(예를 들면, 스트립 그룹에 속한 데이터 스트립들이 모두 전송될 때) PBWRITE 명령을 플래시 메모리 제어기(1450)로 전송할 것이다. PBWRITE 명령은 동작 코드, 목적지 어드레스, 그리고 패리티 버퍼 번호(또는, 어드레스)를 포함할 것이다. 패리티 버퍼 번호에 의해서 지정되는 패리티 버퍼의 패리티 스트립은 PBWRITE 명령이 입력될 때(예를 들면, PBWRITE 명령이 패리티 생성 블록(1451)에 제공될 때) 저장 매체(1200)로 전송될 것이다. ECC 생성 블록(1452)은 전송되는 패리티 스트립에 의거하여 ECC 정보를 생성할 것이다. ECC 정보는 패리티 스트립에 부가될 것이다. 앞서의 설명으로부터 이해되는 바와 같이, PBWRITE 명령은 패리티 버퍼에 저장된 패리티 스트립을 저장 매체(1200)로 전송하기 위한 명령일 것이다.
도 10은 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 XLOAD 명령에 대응하는 플래시 메모리 제어기의 동작을 설명하기 위한 도면이다.
프로세싱 유니트(1430)는 필요에 따라(예를 들면, 스트라이프에 속한 데이터 또는 패리티 스트립을 패리티 생성 블록(1451)으로 전송하기 위해서) XLOAD 명령을 플래시 메모리 제어기(1450)로 전송할 것이다. XLOAD 명령은 동작 코드, 소스 어드레스, 그리고 패리티 버퍼 번호(또는, 어드레스)를 포함할 것이다. 소스 어드레스에 의해서 지정된 데이터/패리티 스트립은 소스 데이터로서 XOR 로직(1451b)으로 전송될 것이다. XLOAD 명령이 플래시 메모리 제어기(1450)에 제공될 때, XOR 로직(1451b)에는, 또한, 패리티 버퍼 번호에 의해서 지정된 패리티 버퍼의 패리티 스트립(즉, 이전 패리티 스트립)이 제공될 것이다. XOR 로직(1451b)에 의해서 연산된 새로운 패리티 스트립은 패리티 버퍼 번호에 의해서 지정된 패리티 버퍼에 저장될 것이다. 저장 매체(1200)로부터 읽혀진 소스 데이터의 에러 여부는 ECC 생성 블록(1452)에 의해서 행해질 것이다. 앞서의 설명으로부터 이해되는 바와 같이, XLOAD 명령은 XOR 연산을 수반하는 명령일 것이다.
도 11은 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 XREAD 명령에 대응하는 플래시 메모리 제어기의 동작을 설명하기 위한 도면이다.
프로세싱 유니트(1430)는 필요에 따라(예를 들면, 스트라이프에 속한 데이터 또는 패리티 스트립을 패리티 생성 블록(1451)으로 그리고 버퍼 메모리(1420)(또는, SSD 제어기의 캐쉬 메모리)로 전송하기 위해서) XREAD 명령을 플래시 메모리 제어기(1450)로 전송할 것이다. XREAD 명령은 동작 코드, 소스 어드레스, 그리고 패리티 버퍼 번호(또는, 어드레스)를 포함할 것이다. 소스 어드레스에 의해서 지정된 데이터/패리티 스트립은 소스 데이터로서 XOR 로직(1451b)으로 그리고 외부(예를 들면, 버퍼 메모리(1420) 또는 SSD 제어기의 캐쉬 메모리)로 전송될 것이다. XREAD 명령이 플래시 메모리 제어기(1450)에 제공될 때, XOR 로직(1451b)에는, 또한, 패리티 버퍼 번호에 의해서 지정된 패리티 버퍼의 패리티 스트립(즉, 이전 패리티 스트립)이 제공될 것이다. XOR 로직(1451b)에 의해서 연산된 새로운 패리티 스트립은 패리티 버퍼 번호에 의해서 지정된 패리티 버퍼에 저장될 것이다. 저장 매체(1200)로부터 읽혀진 소스 데이터의 에러 검출 및 정정은 ECC 생성 블록(1452)에 의해서 행해질 것이다. 앞서의 설명으로부터 이해되는 바와 같이, XREAD 명령은 XOR 연산(또는, 패리티 생성)을 수반하는 명령일 것이다.
도 12는 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 PBREAD 명령에 대응하는 플래시 메모리 제어기의 동작을 설명하기 위한 도면이다.
프로세싱 유니트(1430)는 필요에 따라(예를 들면, 패리티 버퍼로부터 패리티 스트립을 읽기 위해서) PBREAD 명령을 플래시 메모리 제어기(1450)로 전송할 것이다. PBREAD 명령은 동작 코드와 패리티 버퍼 번호(또는, 어드레스)를 포함할 것이다. PBREAD 명령이 플래시 메모리 제어기(1450)에 제공될 때, 패리티 버퍼 번호에 의해서 지정된 패리티 스트립은 버퍼 메모리(1420)로 전송될 것이다. 이때, 저장 매체(1200)에 대한 액세스는 발생하지 않는다.
도 13은 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 XCOPYBACK 명령에 대응하는 플래시 메모리 제어기의 동작을 설명하기 위한 도면이다.
프로세싱 유니트(1430)는 필요에 따라 XCOPYBACK 명령을 플래시 메모리 제어기(1450)로 전송할 것이다. XCOPYBACK 명령은 동작 코드, 목적지 및 소스 어드레스들, 그리고 패리티 버퍼 번호(또는, 어드레스)를 포함할 것이다. 소스 어드레스는 소스 스트라이프의 데이터/패리티 스트립을 지정하는 데 사용되며, 목적지 어드레스는 목적지 스트라이프의 스트립을 지정하는 데 사용될 것이다. 먼저, XCOPYBACK 명령이 플래시 메모리 제어기(1450)에 제공되면, 저장 매체(1200)로부터 소스 데이터가 읽혀지고, 그렇게 읽혀진 데이터는 XOR 로직(1451b)로 전송될 것이다. 이와 동시에, 읽혀진 데이터에 대한 복호화 및 부호화 동작들이 ECC 생성 블록(1452)을 통해 행해지며, 읽혀진 데이터는 목적지 데이터로서 저장 매체(1200)로 전송될 것이다. 앞서의 설명으로부터 이해되는 바와 같이, XCOPYBACK 명령은 XOR 연산을 수반하는 명령일 것이다.
도 14는 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 전체-스트라이프-쓰기 방법을 설명하기 위한 UML 시퀀스 도면이고, 도 15 내지 도 17은 도 14에 도시된 전체-스트라이프-쓰기 동작이 수행되는 동안 데이터 흐름을 보여주는 도면들이다. 이하, 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 전체-스트라이프-쓰기 방법이 참조 도면들에 의거하여 상세히 설명될 것이다. 설명의 편의상, 하나의 스트립 그룹은 3개의 데이터 스트립들(예를 들면, A, B, C)로 구성된다고 가정하자.
앞서 설명된 바와 같이, 버퍼 메모리(1420)에 저장된 데이터는 프로세싱 유니트(1430)(또는, 플래시 변환 계층(FTL))의 어드레스 맵핑을 통해 스트립 그룹(들)을 구성하도록 모아질 것이다. 일단 스트립 그룹(들)이 구성되면, 프로세싱 유니트(1430)는 전체-스트라이프-쓰기 동작을 수행할 것이다. 먼저, 프로세싱 유니트(1430)는 플래시 메모리 제어기(1450)로 PBRESET 명령을 전송할 것이다(S101). 플래시 메모리 제어기(1450)는 PBRESET 명령에 응답하여 패리티 버퍼(예를 들면, PB0)를 초기화할 것이다. 패리티 버퍼(PB0)는 PBRESET 명령에 포함된 패리티 버퍼 번호(또는, 어드레스)에 의해서 선택될 것이다. 패리티 버퍼(PB0)가 초기화된 후, 플래시 메모리 제어기(1450)는 PBRESET 명령에 대한 응답을 전송할 것이다(S102).
그 다음에, 프로세싱 유니트(1430)는 XWRITE 명령을 플래시 메모리 제어기(1450)로 전송할 것이다(S103). XWRITE 명령이 플래시 메모리 제어기(1450)로 전송된 후, 도 15에 도시된 바와 같이, 버퍼 메모리(1420)에 저장된 스트립 그룹의 데이터 스트립들(예를 들면, 도 15의 A, B, C) 중 하나의 데이터 스트립(A)이 플래시 메모리 제어기(1450)로 전송될 것이다. 그렇게 전송된 데이터 스트립(A)은 저장 매체(1200)로 전달할 것이다. 이때, 데이터 스트립(A)에는 ECC 생성 블록(1452)을 통해 ECC 정보가 부가될 것이다. XWRITE 명령에 포함된 목적 어드레스(예를 들면, 8)에 대응하는 저장 공간에 데이터 스트립(A)가 저장될 것이다.
이와 동시에, 도 15에 도시된 바와 같이, XOR 로직(1451b)은 버퍼 메모리(1420)에서 저장 매체(1200)로 전송되는 데이터 스트립(A)과 선택된 패리티 버퍼(PB0)의 이전 패리티 스트립(초기화로 인해 널 데이터로 구성됨)에 대한 배타적 논리합 연산을 수행하고, 결과로서 새로운 패리티 스트립(A)을 생성할 것이다. 그렇게 생성된 패리티 스트립(A)은 선택된 패리티 버퍼(PB0)에 저장될 것이다. 데이터 스트립의 전송 및 패리티 스트립의 생성이 완료된 후, 플래시 메모리 제어기(1450)는 XWRITE 명령에 대한 응답을 전송할 것이다(S104).
도 14에 도시된 바와 같이, XWRITE 명령은 스트립 그룹에 속한 데이터 스트립들의 수만큼 반복적으로 플래시 메모리 제어기(1450)로 전송될 것이다. 예를 들면, 도 16에 도시된 바와 같이, 다음의 데이터 스트립(B)이 패리티 생성(또는, XOR 연산)을 수반하는 XWRITE 명령에 따라 저장 매체(1200)로 전송될 것이다. 이러한 경우, XOR 로직(1451b)은 버퍼 메모리(1420)에서 저장 매체(1200)로 전송되는 데이터 스트립(B)과 선택된 패리티 버퍼(PB0)의 이전 패리티 스트립(A)에 대한 배타적 논리합 연산을 수행하고, 결과로서 새로운 패리티 스트립(
Figure 112010084924349-pat00001
)을 생성할 것이다. 그렇게 생성된 패리티 스트립(
Figure 112010084924349-pat00002
)은 선택된 패리티 버퍼(PB0)에 저장될 것이다. 데이터 스트립(B)이 전송된 후, 도 17에 도시된 바와 같이, 마지막 데이터 스트립(C)이 패리티 생성(또는, XOR 연산)을 수반하는 XWRITE 명령에 따라 플래시 메모리 제어기(1450)로 전송될 것이다. 이 경우, XOR 로직(1451b)은 버퍼 메모리(1420)에서 저장 매체(1200)로 전송되는 데이터 스트립(C)과 선택된 패리티 버퍼(PB0)의 이전 패리티 스트립(
Figure 112010084924349-pat00003
)에 대한 배타적 논리합 연산을 수행하고, 결과로서 새로운 패리티 스트립(
Figure 112010084924349-pat00004
)을 생성할 것이다. 그렇게 생성된 패리티 스트립(
Figure 112010084924349-pat00005
)은 선택된 패리티 버퍼(PB0)에 저장될 것이다. 패리티 스트립(C)에도 ECC 생성 블록(1452)을 통해 ECC 정보가 부가될 것이다.
도 14를 참조하면, 스트립 그룹에 속한 데이터 스트립들(A, B, C)이 모두 전송되면, 프로세싱 유니트(1430)는 플래시 메모리 제어기(1450)로 PBWRITE 명령을 전송할 것이다(S105). 플래시 메모리 제어기(1450)는 PBWRITE 명령에 응답하여 선택된 패리티 버퍼(PB0)에 저장된 패리티 스트립(
Figure 112010084924349-pat00006
)을 저장 매체(1200)로 전송할 것이다. 선택된 패리티 버퍼(PB0)에 저장된 패리티 스트립(
Figure 112010084924349-pat00007
)이 저장 매체(1200)로 전송된 후, 플래시 메모리 제어기(1450)는 PBWRITE 명령에 대한 응답을 프로세싱 유니트(1430)로 전송할 것이다(S106). 이후, 전체-스트라이프-쓰기 절차는 종료될 것이다.
이상의 설명으로부터 알 수 있듯이, 스트립 그룹에 속한 데이터 스트립들(A, B, C)이 패리티 생성(또는, XOR 연산)을 수반하는 XWRITE 명령에 따라 저장 매체(1200)로 전송될 때, 버퍼 메모리(1420)에 대한 추가적인 액세스 없이(또는, 버퍼 메모리(1420)의 트래픽의 증가없이) 패리티 스트립이 생성될 것이다. 도 17에서 알 수 있듯이, 데이터 스트립들(A, B, C)과 패리티 스트립(
Figure 112010084924349-pat00008
)은 전체-스트라이프-쓰기 단위인 하나의 스트라이프를 구성할 것이다.
도 18은 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 판독 불가능한 데이터를 복원하는 동작을 설명하기 위한 UML 시퀀스 도면이고, 도 19 내지 도 21은 도 18에 도시된 판독 불가능한 데이터 복원 동작이 수행되는 동안 데이터 흐름을 보여주는 도면들이다. 이하, 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 판독 불가능한 데이터 복원 동작이 참조 도면들에 의거하여 상세히 설명될 것이다. 설명의 편의상, 하나의 스트립은 3개의 데이터 스트립들과 하나의 패리티 스트립으로 구성된다고 가정하자.
호스트 시스템(2000)으로부터 읽기 요청된 데이터(예를 들면, 도 19의 데이터 스트립(B))가 판독 불가능한 것으로 가정하자. 데이터 스트립이 판독 불가능한 지의 여부는, 앞서 설명된 바와 같이, 데이터 스트립의 에러가 ECC 생성 블록(1452)의 에러 정정 능력을 벗어났는 지의 여부에 의해서 행해질 것이다. 호스트 시스템(2000)으로부터 읽기 요청된 데이터(예를 들면, 도 19의 데이터 스트립(B))가 판독 불가능한 것으로 판별될 때, SSD 제어기(1000)는 판독 불가능한 데이터 스트립(B)이 속한 스트라이프의 나머지 스트립들(데이터 및 패리티 스트립들(A, C,
Figure 112010084924349-pat00009
)을 이용하여 판독 불가능한 데이터 스트립(B)을 복원할 것이다. 이는 이하 상세히 설명될 것이다.
먼저, 도 18에 도시된 바와 같이, 프로세싱 유니트(1430)는 PBRESET 명령을 플래시 메모리 제어기(1450)로 전송할 것이다(S201). PBRESET 명령은, 앞서 설명된 바와 같이, 동작 코드 및 패리티 버퍼 번호(또는 어드레스)를 포함할 것이다. PBRESET 명령이 플래시 메모리 제어기(1450)로 전송됨에 따라, PBRESET 명령의 패리티 버퍼 번호(또는, 어드레스)에 대응하는 패리티 발생 블록(1451)의 패리티 버퍼(예를 들면, PB0)가 초기화될 것이다. 패리티 버퍼(PB0)는 초기화로 인해 이전의 패리티 스트립으로서 널 데이터로 설정될 것이다(도 19 참조). 패리티 버퍼(PB0)가 초기화된 후, 플래시 메모리 제어기(1450)는 PBRESET 명령에 대한 응답을 프로세싱 유니트(1430)로 전송할 것이다(S202).
PBRESET 명령에 대한 응답이 수신되면, 프로세싱 유니트(1430)는 패리티 생성(또는, XOR 연산)을 수반하는 XLOAD 명령을 플래시 메모리 제어기(1450)로 전송할 것이다(S203). XLOAD 명령은 데이터 스트립(A)을 지정하기 위한 소스 어드레스를 포함할 것이다. 플래시 메모리 제어기(1450)는 소스 어드레스에 대응하는 데이터 스트립(A)이 읽혀지도록 저장 매체(1200)를 제어할 것이다. 읽혀진 데이터 스트립(A)은, 도 19에 도시된 바와 같이, XOR 로직(1451b)으로 전송될 것이다. 이때, 데이터 스트립(A)에 대한 복호화 동작이 행해질 것이다. XOR 로직(1451b)은 선택된 패리티 버퍼(PB0)에 저장된 데이터(즉, 이전의 패리티 스트립)와 읽혀진 데이터 스트립(A)에 대한 배타적 논리합 연산을 수행하고, 연산 결과로서 새로운 패리티 스트립(A)을 생성할 것이다. 초기화로 인해 이전의 패리티 스트립으로서 널 데이터(NULL data)가 패리티 버퍼(PB0)에 저장되어 있기 때문에, 새로운 패리티 스트립은 읽혀진 데이터 스트립과 동일할 것이다. 그렇게 생성된 새로운 패리티 스트립(A)은 선택된 패리티 버퍼(PB0)에 저장될 것이다. 일단 새로운 패리티 스트립이 생성되면, 플래시 메모리 제어기(1450)는 XLOAD 명령에 대한 응답을 프로세싱 유니트(1430)로 전송할 것이다(S204).
앞서 설명된 절차들(S203, S204)은 판독 불가능한 데이터 스트립을 제외한 스트라이프에 속한 나머지 스트립들이 모두 읽혀질 때까지 반복적으로 수행될 것이다. 예를 들면, 도 20에 도시된 바와 같이, 다음의 데이터 스트립(C)이 패리티 생성(또는, XOR 연산)을 수반하는 XLOAD 명령에 따라 저장 매체(1200)로부터 읽혀지며, 데이터 스트립(C)에 대한 복호화 동작이 행해질 것이다. 이러한 경우, XOR 로직(1451b)은 저장 매체(1200)로부터 전송되는 데이터 스트립(C)과 선택된 패리티 버퍼(PB0)의 이전 패리티 스트립(A)에 대한 배타적 논리합 연산을 수행하고, 결과로서 새로운 패리티 스트립(
Figure 112010084924349-pat00010
)을 생성할 것이다. 그렇게 생성된 패리티 스트립(
Figure 112010084924349-pat00011
)은 선택된 패리티 버퍼(PB0)에 저장될 것이다. 데이터 스트립(C)이 읽혀진 후, 도 20에 도시된 바와 같이, 판독 불가능한 데이터 스트립(B)을 포함한 스트라이프의 마지막 스트립 즉, 패리티 스트립(
Figure 112010084924349-pat00012
)이 패리티 생성(또는, XOR 연산)을 수반하는 XLOAD 명령에 따라 플래시 메모리 제어기(1450)로 전송되며, 데이터 스트립(
Figure 112010084924349-pat00013
)에 대한 디코딩 동작이 행해질 것이다. 이 경우, XOR 로직(1451b)은 저장 매체(1200)로부터 전송되는 데이터 스트립(
Figure 112010084924349-pat00014
)과 선택된 패리티 버퍼(PB0)의 이전 패리티 스트립(
Figure 112010084924349-pat00015
)에 대한 배타적 논리합 연산을 수행하고, 결과로서 새로운 패리티 스트립(B)을 생성할 것이다. 그렇게 생성된 패리티 스트립(B)은 선택된 패리티 버퍼(PB0)에 저장될 것이다.
도 18를 참조하면, 판독 불가능한 데이터 스트립(B)을 제외한 스트라이프의 나머지 스트립들(A, C,
Figure 112010084924349-pat00016
)이 모두 읽혀지면, 프로세싱 유니트(1430)는 플래시 메모리 제어기(1450)로 PBREAD 명령을 전송할 것이다(S205). 플래시 메모리 제어기(1450)는 PBREAD 명령에 응답하여 선택된 패리티 버퍼(PB0)에 저장된 패리티 스트립(B)을 버퍼 메모리(1420)로 전송할 것이다. 전송되는 패리티 스트립(B)은 복원된 데이터 스트립일 것이다. 플래시 메모리 제어기(1450)는 PBREAD 명령에 대한 응답을 프로세싱 유니트(1430)로 전송할 것이다(S206). 이후, 절차는 종료될 것이다.
도 22는 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 카피백 프로그램 동작을 설명하기 위한 UML 시퀀스 도면이고, 도 23 내지 도 25는 도 22에 도시된 카피백 프로그램 동작이 수행되는 동안 데이터 흐름을 보여주는 도면들이다. 이하, 본 발명의 예시적인 실시예에 따른 데이터 저장 장치의 카피백 프로그램 동작이 참조 도면들에 의거하여 상세히 설명될 것이다. 설명의 편의상, 하나의 스트립(예를 들면, 도 23의 ST1)에 속한 데이터 스트립(B)이 호스트 시스템(2000)의 요청에 따른 새로운 데이터 스트립(예를 들면, 도 23의 H)으로의 갱신으로 인해 무효한 데이터 스트립으로 처리된다고 가정하자.
먼저, 도 22를 참조하면, 프로세싱 유니트(1430)는 PBRESET 명령을 플래시 메모리 제어기(1450)로 전송할 것이다(S301). PBRESET 명령은, 앞서 설명된 바와 같이, 동작 코드 및 패리티 버퍼 번호(또는 어드레스)를 포함할 것이다. PBRESET 명령이 플래시 메모리 제어기(1450)로 전송됨에 따라, PBRESET 명령의 패리티 버퍼 번호(또는, 어드레스)에 대응하는 패리티 발생 블록(1451)의 패리티 버퍼(예를 들면, PB0)가 초기화될 것이다. 패리티 버퍼(PB0)는 초기화로 인해 이전의 패리티 스트립으로서 널 데이터로 설정될 것이다(도 22 참조). 패리티 버퍼(PB0)가 초기화된 후, 플래시 메모리 제어기(1450)는 PBRESET 명령에 대한 응답을 프로세싱 유니트(1430)로 전송할 것이다(S302).
도 22에 도시된 바와 같이, 하나의 루프는 패리티 생성(또는, XOR 연산)을 수반하는 XCOPYBACK 및 XWRITE 명령들을 포함할 것이다. XCOPYBACK 명령은 소스 스트라이프로부터 유효한 데이터 스트립을 읽고자 할 때 플래시 메모리 제어기(1450)로 전송되고, XWRITE 명령은 업데이트될 데이터 스트립을 목표 스트라이프로 전송하고자 할 때 플래시 메모리 제어기(1450)로 전송될 것이다. 매 루프에서 XCOPYBACK 및 XWRITE 명령들의 전송은 선택적으로 행해질 것이다.
먼저, 스트라이프(ST1)에 속한 첫 번째 데이터 스트립(A)에 대한 카피백 동작이 요구되며, 이는 XCOPYBACK 명령을 통해 행해질 것이다. 따라서, 프로세싱 유니트(1430)는 플래시 메모리 제어기(1450)로 XCOPYBACK 명령을 전송할 것이다(S303). XCOPBACK 명령은, 앞서 언급된 바와 같이, 소스 및 목표 어드레스들을 포함할 것이다. 소스 및 목표 어드레스들이 플래시 메모리 제어기(1450)로부터 저장 매체(1200)로 전송되면, 도 23에 도시된 바와 같이, 소스 어드레스에 대응하는 데이터 스트립(A)은 플래시 메모리 제어기(1450)로 전송될 것이다. 전송되는 데이터 스트립(A)은 XOR 로직(1451b)로 전송될 것이다. 이때, 읽혀진 데이터 스트립(A)은 버퍼 메모리(1420)로 전송되지 않고 플래시 메모리 제어기(1450)를 통해 다시 저장 매체(1200)로 전송될 것이다. 이때, 읽혀진 데이터 스트립(A)에 대한 복호화 및 부호화 동작들이 ECC 생성 블록(1452)을 통해 행해질 것이다.
XOR 로직(1451b)은 선택된 패리티 버퍼(PB0)에 저장된 데이터(즉, 이전의 패리티 스트립)와 읽혀진 데이터 스트립(A)에 대한 배타적 논리합 연산을 수행하고, 연산 결과로서 새로운 패리티 스트립(A)을 생성할 것이다. 초기화로 인해 이전의 패리티 스트립으로서 널 데이터가 패리티 버퍼(PB0)에 저장되어 있기 때문에, 새로운 패리티 스트립은 읽혀진 데이터 스트립과 동일할 것이다. 그렇게 생성된 새로운 패리티 스트립(A)은 선택된 패리티 버퍼(PB0)에 저장될 것이다. 일단 새로운 패리티 스트립이 생성되면, 플래시 메모리 제어기(1450)는 XCOPYBACK 명령에 대한 응답을 프로세싱 유니트(1430)로 전송할 것이다(S304).
그 다음에, 프로세싱 유니트(1430)는 소스 스트라이프(ST1)의 무효한 데이터 스트립(B) 대신 새로운 데이터 스트립(H)이 목표 스트라이프(ST2)에 저장되도록 플래시 메모리 제어기(1450)로 XWRITE 명령을 전송할 것이다(S305). 도 24에 도시된 바와 같이, XWRITE 명령이 플래시 메모리 제어기(1450)로 제공될 때, 버퍼 메모리(1420)로부터 제공되는 데이터 스트립(H)은 저장 매체(1200)로 전송될 것이다. 이때, 데이터 스트립(H)에 대한 부호화 동작이 행해질 것이다. 이와 동시에, XOR 로직(1451b)은 전송되는 데이터 스트립(H)과 패리티 버퍼 번호에 의해서 지정된 패리티 버퍼(PB0)의 이전의 패리티 스트립(A)에 대해 배타적 논리합 연산을 수행할 것이다. 배타적 논리합 연산의 결과 즉, 새로운 패리티 스트립(
Figure 112010084924349-pat00017
)은 선택된 패리티 버퍼(PB0)에 저장될 것이다. 플래시 메모리 제어기(1450)는 XWRITE 명령에 대한 응답을 프로세싱 유니트(1430)로 전송할 것이다(S306).
XWRITE 명령이 수행된 후, 소스 스트라이프(ST1)에 속한 세 번째 데이터 스트립(C)에 대한 카피백 동작이 요구될 것이다. 이는 XCOPYBACK 명령을 통해 행해질 것이다. 따라서, 프로세싱 유니트(1430)는 플래시 메모리 제어기(1450)로 XCOPYBACK 명령을 전송할 것이다(S303). XCOPBACK 명령은, 앞서 언급된 바와 같이, 소스 및 목표 어드레스들을 포함할 것이다. 소스 및 목표 어드레스들이 플래시 메모리 제어기(1450)로부터 저장 매체(1200)로 전송되면, 도 25에 도시된 바와 같이, 소스 어드레스에 대응하는 데이터 스트립(C)은 플래시 메모리 제어기(1450)로 전송될 것이다. 전송되는 데이터 스트립(C)은 XOR 로직(1451b)로 전송될 것이다. 이때, 읽혀진 데이터 스트립(C)은 버퍼 메모리(1420)로 전송되지 않고 플래시 메모리 제어기(1450)를 통해 다시 저장 매체(1200)로 전송될 것이다. 이때, 읽혀진 데이터 스트립(C)에 대한 복호화 및 부호화 동작들이 행해질 것이다.
또한, XOR 로직(1451b)은 선택된 패리티 버퍼(PB0)에 저장된 데이터(즉, 이전의 패리티 스트립)(
Figure 112010084924349-pat00018
)과 읽혀진 데이터 스트립(C)에 대한 배타적 논리합 연산을 수행하고, 연산 결과로서 새로운 패리티 스트립(
Figure 112010084924349-pat00019
)을 생성할 것이다. 그렇게 생성된 새로운 패리티 스트립(
Figure 112010084924349-pat00020
)은 선택된 패리티 버퍼(PB0)에 저장될 것이다. 일단 새로운 패리티 스트립(
Figure 112010084924349-pat00021
)이 생성되면, 플래시 메모리 제어기(1450)는 XCOPYBACK 명령에 대한 응답을 프로세싱 유니트(1430)로 전송할 것이다(S304).
유효한 데이터 스트립들에 대한 카피백 동작 및 업데이트될 데이터 스트립의 전송이 완료되면, 도 22에 도시된 바와 같이, 프로세싱 유니트(1430)는 플래시 메모리 제어기(1450)로 PBWRITE 명령을 전송할 것이다. 플래시 메모리 제어기(1450)는 PBWRITE 명령에 응답하여 선택된 패리티 버퍼(PB0)에 저장된 패리티 스트립(
Figure 112010084924349-pat00022
)을 저장 매체(1200)로 전송할 것이다. 이때, 저장 매체(1200)로 전송되는 패리티 스트립(
Figure 112010084924349-pat00023
)에 대한 부호화 동작이 행해질 것이다. 선택된 패리티 버퍼(PB0)에 저장된 패리티 스트립(
Figure 112010084924349-pat00024
)이 저장 매체(1200)로 전송된 후, 플래시 메모리 제어기(1450)는 PBWRITE 명령에 대한 응답을 프로세싱 유니트(1430)로 전송할 것이다(S308). 이후, 절차는 종료될 것이다.
도 26은 본 발명의 다른 예시적인 실시예에 따른 데이터 저장 장치의 전체-스트라이프-쓰기 방법을 설명하기 위한 UML 시퀀스 도면이고, 도 27 내지 도 31은 도 26에 도시된 전체-스트라이프-쓰기 동작이 수행되는 동안 데이터 흐름을 보여주는 도면들이다. 이하, 본 발명의 다른 예시적인 실시예에 따른 데이터 저장 장치의 전체-스트라이프-쓰기 방법이 참조 도면들에 의거하여 상세히 설명될 것이다. 도 26은 하나의 스트라이프가 아니라, 복수의, 예를 들면, 2개의 스트라이프들에 대한 전체-스프라이프-쓰기 동작을 설명하기 위한 도면이다. 예를 들면, 도 27에 도시된 바와 같이, 2개의 스트립 그룹들(SG1, SG2)이 준비되었다고 가정하자. 도 26에 도시된 전체-스트라이프-쓰기 동작은 아래의 차이점을 제외하면 기본적으로 도 14에서 설명된 것과 유사하며, 그러므로 그것에 대한 설명은 생략될 것이다.
먼저, 도 26를 참조하면, 프로세싱 유니트(1430)는 플래시 메모리 제어기(1450)로 패리티 버퍼(PB0)에 대한 초기화를 위해서 PBRESET 명령을 전송할 것이다(S401). 플래시 메모리 제어기(1450)는 PBRESET 명령에 응답하여 패리티 버퍼(PB0)를 초기화할 것이다. 패리티 버퍼(PB0)가 초기화된 후, 플래시 메모리 제어기(1450)는 PBRESET 명령에 대한 응답을 전송할 것이다(S402). 프로세싱 유니트(1430)는 플래시 메모리 제어기(1450)로 패리티 버퍼(PB1)에 대한 초기화를 위해서 PBRESET 명령을 전송하며, 이는 패리티 버퍼(PB1)의 초기화와 동일하게 행해질 것이다. 즉, 도 27에 도시된 바와 같이, 초기화되는 패리티 버퍼들의 수는 저장 매체(1200)로 전송될 스트립 그룹들의 수와 동일할 것이다. 따라서, 패리티 버퍼의 초기화 즉, 단계들(S401, S402)은 저장 매체(1200)로 전송될 스트립 그룹들의 수만큼 반복적으로 행해질 것이다.
패리티 버퍼들(PB0, PB1)의 초기화가 행해진 후, 프로세싱 유니트(1430)는 스트립 그룹(SG1)의 데이터 스트립(A)을 저장 매체(1200)로 전송하기 위해서 XWRITE 명령을 플래시 메모리 제어기(1450)로 전송할 것이다(S403). 이때, 도 28에 도시된 바와 같이, 버퍼 메모리(1420)에 저장된 스트립 그룹(SG1)의 데이터 스트립들(A, B, C) 중 하나의 데이터 스트립(A)이 플래시 메모리 제어기(1450)로 전송될 것이다. 데이터 스트립(A)은 저장 매체(1200)로 전달될 것이다. 이와 동시에, 도 28에 도시된 바와 같이, 버퍼 메모리(1420)에서 저장 매체(1200)로 전송되는 데이터 스트립(A)과 선택된 패리티 버퍼(PB0)의 이전 패리티 스트립에 대한 배타적 논리합 연산이 행해지며, 연산 결과에 따라 생성된 새로운 패리티 스트립(A)은 선택된 패리티 버퍼(PB0)에 저장될 것이다. 데이터 스트립의 전송 및 패리티 스트립의 생성이 완료된 후, 플래시 메모리 제어기(1450)는 XWRITE 명령에 대한 응답을 전송할 것이다(S404). 앞서 설명된 절차들(S403, S404)은 다른 스트립 그룹(SG2)에 속한 데이터 스트립(D)을 저장 매체(1200)로 전송하기 위해서 반복될 것이다.
스트립 그룹(SG1)의 나머지 스트립들(B, C)과 스트립 그룹(SG2)의 나머지 스트립들(E, F) 역시 28 내지 도 30에 도시된 바와 같이 스트립 그룹들의 데이터 스트립들(A, D)과 동일한 방식으로 저장 매체(1200)로 전송될 것이다. 결과적으로, 도 30에 도시된 바와 같이, 스트립 그룹의 데이터 스트립들(A, B, C)에 대한 배타적 논리합 연산을 통해 패리티 스트립(
Figure 112010084924349-pat00025
)이 생성되고, 스트립 그룹의 데이터 스트립들(D, E, F)에 대한 배타적 논리합 연산을 통해 패리티 스트립(
Figure 112010084924349-pat00026
)이 생성될 것이다.
다시 도 26을 참조하면, 스트립 그룹들(SG1, SG2)에 속한 데이터 스트립들(A, B, C) 및 (D, E, F)이 모두 전송되면, 프로세싱 유니트(1430)는 패리티 버퍼(PB0)의 패리티 스트립을 저장 매체(1200)로 전송하기 위해서 플래시 메모리 제어기(1450)로 PBWRITE 명령을 전송할 것이다(S405). 플래시 메모리 제어기(1450)로 PBWRITE 명령이 전송됨에 따라, 도 31에 도시된 바와 같이, 플래시 메모리 제어기(1450)는 PBWRITE 명령에 응답하여 선택된 패리티 버퍼(PB0)에 저장된 패리티 스트립(
Figure 112010084924349-pat00027
)을 저장 매체(1200)로 전송할 것이다. 선택된 패리티 버퍼(PB0)에 저장된 패리티 스트립(
Figure 112010084924349-pat00028
)이 저장 매체(1200)로 전송된 후, 플래시 메모리 제어기(1450)는 PBWRITE 명령에 대한 응답을 프로세싱 유니트(1430)로 전송할 것이다(S406). 패리티 버퍼(PB0)와 마찬가지로, 패리티 버퍼(PB1)의 패리티 스트립(
Figure 112010084924349-pat00029
) 역시 PBWRITE 명령에 따라 저장 매체(1200)로 전송될 것이다. 이후, 절차는 종료될 것이다. 도 28 내지 도 31에 도시된 바와 같이, 데이터 및 패리티 스트립들이 저장 매체(1200)로 전송될 때, 데이터 및 패리티 스트립들에 대한 부호화 동작이 각각 행해질 것이다.
도 32는 본 발명의 또 다른 예시적인 실시예에 따른 데이터 저장 장치의 전체-스트라이프-쓰기 방법을 설명하기 위한 도면이다.
본 발명의 예시적인 실시예에 따른 데이터 저장 장치(1000)는 스트립 그룹에 속한 데이터 스트립들에 대한 메타 데이터를 관리할 것이다. 예를 들면, 데이터 저장 장치(1000)의 프로세싱 유니트(1430)는 스트립 그룹의 데이터 스트립들(DS0, DS1, DS2)에 각각 대응하는 메타 데이터(MD0, MD1, MD2)를 관리할 것이다. 데이터 스트립들(DS0, DS1, DS2) 각각이 저장 매체(1200)로 전송될 때 행해지는 동작들(예를 들면, 패리티 생성 및 ECC 부가 동작들)은 앞서 설명된 것과 실질적으로 동일하게 수행되며, 그것에 대한 설명은 그러므로 생략될 것이다. 앞서 설명된 바와 같이, 패리티 스트립은 패리티 생성 블록(1451)에 의해서 행해지며, 판독 불가능한 데이터/패리티 스트립을 복원하는 데 사용될 것이다.
도 32에 도시된 바와 같이, 메타 데이터(MD0, MD1, MD2) 역시 대응하는 데이터 스트립들(DS0, DS1, DS2)과 함께 각각 저장 매체(1200)로 전송될 것이다. 데이터 스트립들(DS0, DS1, DS2)에 대한 패리티 스트립의 생성과 달리, 메타 데이터(MD0, MD1, MD2)에 대한 패리티 생성은 패리티 생성 블록(1451)을 통해 행해지는 것이 아니라 프로세싱 유니트(1430)에 의해서 행해질 것이다. 프로세싱 유니트(1430)에 의해서 생성된 메타 데이터(MD0, MD1, MD2)에 대한 패리티는 저장 매체(1200)로 전송될 것이다. 메타 데이터(MD0, MD1, MD2)에 대한 패리티 역시 판독 불가능한 메타 데이터의 복원을 위해서 사용될 것이다. 즉, 데이터 스트립의 정정 가능한 에러는 ECC 정보에 의거하여 정정되고, 메타 데이터의 정정 가능한 에러는 ECC 정보에 의거하여 정정될 것이다. 또한, 스트라이프에 속한 판독 불가능한 스트립은 나머지 스트립들에 의거하여 복원되고, 스트라이프에 속한 판독 불가능한 메타 데이터는 나머지 메타 데이터 및 패리티에 의거하여 복원될 것이다.
도 33a 내지 도 33d는 본 발명의 예시적인 실시예에 따른 데이터 저장 장치에 적용되는 스트라이프 형태들을 설명하기 위한 도면들이다.
하나의 스트라이프의 크기는 저장 매체(1200)에 적용되는 메모리에 따라 다양하게 결정될 수 있다. 예를 들면, 저장 매체(1200)가 플래시 메모리 장치들로 구성된다고 가정하자. 하나의 스트라이프는 복수의 스트립들로 구성된다. 하나의 스트립은 하나 또는 그 보다 많은 페이지들로 구성될 수 있다. 스트라이프는, 도 33a에 도시된 바와 같이, 하나의 채널에 연결된 플래시 메모리 장치들에 각각 할당되는 스트립들로 구성될 수 있다. 다른 예로서, 스트라이프는, 도 33b에 도시된 바와 같이, 하나의 채널에 연결된 플래시 메모리 장치들을 적어도 2개의 칩 그룹들로 구분하고 각 그룹에 속한 플래시 메모리 장치들에 각각 할당되는 스트립들로 구성될 수 있다. 또 다른 예로서, 스트라이프는, 도 33c에 도시된 바와 같이, 복수의 채널들(CH0, CH1, CH2, CH3)에 각각 연결된 플래시 메모리 장치들에 각각 할당되는 스트립들로 구성될 수 있다. 또 다른 예로서, 스트라이프는, 도 33d에 도시된 바와 같이, 복수의 채널들을 적어도 2개의 채널 그룹들로 구분하고, 각 그룹에 속한 채널들에 공통으로 연결된 플래시 메모리 장치들을 적어도 2개의 칩 그룹들로 구분하며, 각 채널 그룹에 속한 각 칩 그룹의 플래시 메모리 장치들에 각각 할당되는 스트립들로 구성될 수 있다.
하지만, 스트라이프의 구성이 여기에 개시된 것에 국한되지 않음은 잘 이해될 것이다. 예를 들면, 플래시 메모리 장치가 플랜 구조를 갖는 경우, 칩을 기준으로 스트라이프가 설정되는 것이 아니라 플랜을 기준으로 스트라이프가 설정될 수 있다.
도 34는 본 발명의 또 다른 예시적인 실시예에 따른 데이터 저장 장치를 개략적으로 보여주는 블록도이다.
도 34를 참조하면, 데이터 저장 장치(1000a)는 저장 매체(1200)와 SSD 제어기(1400)를 포함할 것이다. 저장 매체(1200)는 복수의 채널들(CH0∼CHn-1)을 통해 액세스되는 플래시 메모리 장치들을 포함할 것이다. 또한, 저장 매체(1200)는 예약된 채널 및 메모리 장치들(1600)을 더 포함할 것이다. 예약된 채널 및 메모리 장치들(1600)은 임의의 채널 또는 임의의 채널에 연결된 플래시 메모리 장치들이 대체되어야 하는 경우 사용될 것이다. 이러한 점을 제외하면, 도 34에 도시된 데이터 저장 장치(1000a)는 도 1 내지 도 32에서 설명된 것과 실질적으로 동일하게 동작하며, 그것에 대한 설명은 그러므로 생략될 것이다.
도 35는 본 발명의 예시적인 실시예에 따른 데이터 저장 장치를 포함한 컴퓨팅 시스템을 개략적으로 보여주는 블록도이다.
도 35를 참조하면, 본 발명의 예시적인 실시예에 따른 컴퓨팅 시스템(3000)은 마이크로프로세서(3100), 사용자 인터페이스(3200), 베이스밴드 칩셋(baseband chipset)과 같은 모뎀(4300), SSD 제어기(3400), 그리고 저장 매체(3500)를 포함한다. SSD 제어기(3400)와 저장 매체(3500)는 도 1에 도시된 데이터 저장 장치(예를 들면, 반도체 드라이브)를 구성하며, 그것에 대한 설명은 그러므로 생략될 것이다. 저장 매체(3500)에는 마이크로프로세서(3100)에 의해서 처리된/처리될 N-비트 데이터(N은 1 또는 그 보다 큰 정수)가 SSD 제어기(3400)를 통해 저장될 것이다. 본 발명에 따른 컴퓨팅 시스템이 모바일 장치인 경우, 컴퓨팅 시스템의 동작 전압을 공급하기 위한 배터리(3600)가 추가적으로 제공될 것이다. 비록 도면에는 도시되지 않았지만, 본 발명에 따른 컴퓨팅 시스템에는 응용 칩셋(application chipset), 카메라 이미지 프로세서(Camera Image Processor: CIS), 모바일 디램, 등이 더 제공될 수 있음은 이 분야의 통상적인 지식을 습득한 자들에게 자명하다.
도 36은 본 발명의 예시적인 실시예들에 따른 데이터 저장 장치를 이용한 스토리지를 개략적으로 보여주는 블록도이고, 도 37은 본 발명의 예시적인 실시예들에 따른 데이터 저장 장치를 이용한 스트리지 서버를 개략적으로 보여주는 블록도이다.
본 발명의 예시적인 실시예에 따른 데이터 저장 장치 즉, 반도체 드라이브(4000)는 스토리지를 구성하는 데 사용될 수 있다. 도 36에 도시된 바와 같이, 스토리지는 도 1 내지 도 34에서 설명된 것과 실질적으로 동일하게 동작하도록 구성되는 복수의 반도체 드라이브들(4000)을 포함할 것이다. 본 발명의 예시적인 실시예에 따른 반도체 드라이브(4000)는 스토리지 서버를 구성하는 데 사용될 수 있다. 도 37에 도시된 바와 같이, 스토리지 서버는 복수의 반도체 드라이브들(5000)과 서버(5000A)를 포함할 것이다. 복수의 반도체 드라이브들(5000) 각각은 도 1 내지 도 34에서 설명된 것과 실질적으로 동일하게 동작하도록 구성되며, 그것에 대한 설명은 그러므로 생략될 것이다.
도 38 내지 도 40은 본 발명의 예시적인 실시예들에 따른 데이터 저장 장치가 적용되는 시스템들을 개략적으로 보여주는 도면들이다.
본 발명의 예시적인 실시예들에 따른 데이터 저장 장치로서 반도체 드라이브가 스토리지에 적용되는 경우, 도 28에 도시된 바와 같이, 시스템(6000)은 유선 그리고/또는 무선으로 호스트와 통신하는 스토리지(6100)를 포함할 것이다. 본 발명의 예시적인 실시예들에 따른 데이터 저장 장치로서 반도체 드라이브가 스토리지 서버에 적용되는 경우, 도 39에 도시된 바와 같이, 시스템(7000)은 유선 그리고/또는 무선으로 호스트와 통신하는 스토리지 서버들(7100, 7200)을 포함할 것이다. 또한, 도 40에 도시된 바와 같이, 본 발명의 예시적인 실시예에 따른 데이터 저장 장치로서 반도체 드라이브는 메일 서버(8100)에도 적용될 수 있다.
본 발명의 범위 또는 기술적 사상을 벗어나지 않고 본 발명의 구조가 다양하게 수정되거나 변경될 수 있음은 이 분야에 숙련된 자들에게 자명하다. 상술한 내용을 고려하여 볼 때, 만약 본 발명의 수정 및 변경이 아래의 청구항들 및 동등물의 범주 내에 속한다면, 본 발명이 이 발명의 변경 및 수정을 포함하는 것으로 여겨진다.
1000: 데이터 저장 장치
2000: 호스트 시스템

Claims (10)

  1. 저장 매체, 프로세싱 유니트, 그리고 상기 프로세싱 유니트의 제어하에 상기 저장 매체로 전송될 데이터를 저장하는 버퍼 메모리를 포함하는 데이터 저장 장치의 쓰기 방법에 있어서:
    상기 버퍼 메모리의 데이터를 스트립 그룹의 데이터 스트립들로 모으고,
    적어도 하나의 스트립 그룹에 속한 데이터 스트립들을 상기 저장 매체로 각각 전달하고,
    상기 버퍼 메모리로의 추가적인 접근없이 상기 적어도 하나의 스트립 그룹의 전송된 데이터 스트립들에 의거하여 패리티 스트립을 계산하고,
    상기 패리티 스트립을 상기 저장 매체로 전송하는 것을 포함하는 것을 특징으로 하는 쓰기 방법.
  2. 제 1 항에 있어서,
    상기 적어도 하나의 스트립 그룹의 데이터 스트립들과 상기 패리티 스트립 각각에 ECC 정보를 부가하는 것을 더 포함하는 것을 특징으로 하는 쓰기 방법.
  3. 제 2 항에 있어서,
    상기 패리티 스트립은 상기 프로세싱 유니트로부터의 명령들에 따라 계산되되, 상기 명령들은 상기 적어도 하나의 스트립 그룹의 데이터 스트립들에 대한 XOR 연산을 수반하는 것을 특징으로 하는 쓰기 방법.
  4. 제 2 항에 있어서,
    상기 버퍼 메모리의 데이터를 스트립 그룹의 데이터 스트립들로 모으는 것은 상기 프로세싱 유니트의 어드레스 맵핑 동작을 통해 행해지는 것을 특징으로 하는 쓰기 방법.
  5. 제 2 항에 있어서,
    상기 버퍼 메모리로의 추가적인 접근없이 상기 적어도 하나의 스트립 그룹의 전송된 데이터 스트립들에 의거하여 패리티 스트립을 계산하는 것은
    패리티 버퍼를 초기화시키고,
    상기 버퍼 메모리로의 추가적인 접근없이 상기 저장 매체로 전송된 상기 적어도 하나의 스트립 그룹의 데이터 스트립들 중 하나와 이전의 패리티로서 상기 패리티 버퍼의 값에 대해 XOR 연산을 수행하여 상기 XOR 연산의 결과를 상기 패리티 버퍼에 저장하고,
    상기 적어도 하나의 스트립 그룹의 나머지 데이터 스트립들이 모두 상기 저장 매체로 전송될 때까지 상기 XOR 연산을 수행하는 것을 반복하는 것을 포함하는 것을 특징으로 하는 쓰기 방법.
  6. 제 5 항에 있어서,
    상기 적어도 하나의 스트립 그룹의 모든 데이터 스트립들이 상기 저장 매체로 전송된 후, 상기 패리티 버퍼의 값은 상기 패리티 스트립으로서 상기 저장 매체로 전송되는 것을 특징으로 하는 쓰기 방법.
  7. 제 1 항에 있어서,
    상기 데이터 및 패리티 스트립들 각각은 적어도 하나의 페이지로 구성되는 것을 특징으로 하는 쓰기 방법.
  8. 제 2 항에 있어서,
    상기 적어도 하나의 스트립 그룹의 데이터 스트립들과 상기 패리티 스트립은 풀-스트라이프-라이트 단위인 스트라이프를 구성하는 것을 특징으로 하는 쓰기 방법.
  9. 제 8 항에 있어서,
    소오스 스트라이프에 속한 데이터 스트립들 중 일부가 목표 스트라이프로 카피백될 때, 상기 일부 데이터 스트립들은 상기 버퍼 메모리로의 전송없이 상기 목표 스트라이프로 전송되는 것을 특징으로 하는 쓰기 방법.
  10. 제 2 항에 있어서,
    상기 적어도 하나의 스트립 그룹의 데이터 스트립들 각각에 대한 메타 데이터를 생성하고,
    상기 프로세싱 유니트를 통해 상기 데이터 스트립들 중 메타 데이터에 대한 패리티 데이터를 계산하는 것을 더 포함하되, 상기 데이터 스트립들에 대한 패리티 스트립은 상기 프로세싱 유니트와 독립된 가속기에 의해서 계산되고 ECC 정보는 상기 패리티 데이터에 부가되는 것을 특징으로 하는 쓰기 방법.
KR1020100132643A 2010-12-22 2010-12-22 데이터 저장 장치 및 그것의 동작 방법 KR101732030B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020100132643A KR101732030B1 (ko) 2010-12-22 2010-12-22 데이터 저장 장치 및 그것의 동작 방법
US13/301,025 US8694865B2 (en) 2010-12-22 2011-11-21 Data storage device configured to reduce buffer traffic and related method of operation
TW100147870A TWI519949B (zh) 2010-12-22 2011-12-22 資料儲存裝置之操作方法
CN201110448530.9A CN102681944B (zh) 2010-12-22 2011-12-22 数据存储装置以及相关的操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100132643A KR101732030B1 (ko) 2010-12-22 2010-12-22 데이터 저장 장치 및 그것의 동작 방법

Publications (2)

Publication Number Publication Date
KR20120071058A KR20120071058A (ko) 2012-07-02
KR101732030B1 true KR101732030B1 (ko) 2017-05-04

Family

ID=46318540

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100132643A KR101732030B1 (ko) 2010-12-22 2010-12-22 데이터 저장 장치 및 그것의 동작 방법

Country Status (4)

Country Link
US (1) US8694865B2 (ko)
KR (1) KR101732030B1 (ko)
CN (1) CN102681944B (ko)
TW (1) TWI519949B (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130268726A1 (en) * 2011-07-01 2013-10-10 Xin Guo Dual Mode Write Non-Volatile Memory System
US8924814B2 (en) * 2012-08-28 2014-12-30 Seagate Technology Llc Write management using partial parity codes
US8694862B2 (en) * 2012-04-20 2014-04-08 Arm Limited Data processing apparatus using implicit data storage data storage and method of implicit data storage
TWI461901B (zh) * 2012-12-10 2014-11-21 Ind Tech Res Inst 資料儲存與重建的方法與系統
US20140281124A1 (en) * 2013-03-14 2014-09-18 Bryan E. Veal System and method for caching a storage medium
CN104425018B (zh) 2013-08-23 2019-07-23 慧荣科技股份有限公司 存取快闪存储器中储存单元的方法以及使用该方法的装置
CN104424127A (zh) * 2013-08-23 2015-03-18 慧荣科技股份有限公司 存取快闪存储器中储存单元的方法以及使用该方法的装置
CN103761988B (zh) * 2013-12-27 2018-01-16 华为技术有限公司 固态硬盘及数据移动方法
JP6385077B2 (ja) * 2014-03-05 2018-09-05 ルネサスエレクトロニクス株式会社 半導体装置
US9569303B2 (en) * 2014-08-08 2017-02-14 Kabushiki Kaisha Toshiba Information processing apparatus
TWI560718B (en) * 2015-03-27 2016-12-01 Silicon Motion Inc Data storage device and encoding method thereof
US9766837B2 (en) 2015-06-10 2017-09-19 Micron Technology, Inc. Stripe mapping in memory
KR20160148952A (ko) * 2015-06-17 2016-12-27 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US10001922B2 (en) * 2016-02-19 2018-06-19 International Business Machines Corporation High performance optical storage system for protection against concurrent data loss
KR20180051706A (ko) 2016-11-07 2018-05-17 삼성전자주식회사 어드레스 맵핑 테이블의 에러 정정을 수행하는 메모리 시스템
CN107423180A (zh) * 2017-07-28 2017-12-01 郑州云海信息技术有限公司 一种固态硬盘及其诊断方法
US10365967B2 (en) 2017-08-23 2019-07-30 Toshiba Memory Corporation On the fly raid parity calculation
TWI661303B (zh) * 2017-11-13 2019-06-01 慧榮科技股份有限公司 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置
US10977115B2 (en) 2018-10-12 2021-04-13 Micron Technology, Inc. NAND parity information techniques for systems with limited RAM
US11113163B2 (en) * 2019-11-18 2021-09-07 International Business Machines Corporation Storage array drive recovery
TWI755739B (zh) * 2020-05-26 2022-02-21 慧榮科技股份有限公司 記憶體控制器與資料處理方法
CN111897495B (zh) * 2020-07-28 2023-07-04 深圳忆联信息系统有限公司 提高ssd写性能的实现方法、装置、计算机设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090265578A1 (en) 2008-02-12 2009-10-22 Doug Baloun Full Stripe Processing for a Redundant Array of Disk Drives

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4435705B2 (ja) * 2005-03-14 2010-03-24 富士通株式会社 記憶装置、その制御方法及びプログラム
WO2007012920A1 (en) 2005-07-27 2007-02-01 Adaptec, Inc. Method and system for improving the performance of reed-solomon parity operations in redundant array of inexpensive disks
US7721143B2 (en) 2005-12-06 2010-05-18 Lsi Corporation Method for reducing rebuild time on a RAID device
US8074017B2 (en) * 2006-08-11 2011-12-06 Intel Corporation On-disk caching for raid systems
US20090172335A1 (en) * 2007-12-31 2009-07-02 Anand Krishnamurthi Kulkarni Flash devices with raid
US20090198885A1 (en) 2008-02-04 2009-08-06 Manoj Jose K System and methods for host software stripe management in a striped storage subsystem
CN103984587B (zh) * 2008-06-12 2017-10-20 普安科技股份有限公司 储存虚拟化系统中更新实体储存装置的控制程序的方法
WO2010137178A1 (en) * 2009-05-25 2010-12-02 Hitachi,Ltd. Storage subsystem
KR101678868B1 (ko) 2010-02-11 2016-11-23 삼성전자주식회사 플래시 주소 변환 장치 및 그 방법
US8726126B2 (en) * 2010-03-23 2014-05-13 Apple Inc. Non-regular parity distribution detection via metadata tag
US8862804B2 (en) * 2011-04-29 2014-10-14 Western Digital Technologies, Inc. System and method for improved parity determination within a data redundancy scheme in a solid state memory

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090265578A1 (en) 2008-02-12 2009-10-22 Doug Baloun Full Stripe Processing for a Redundant Array of Disk Drives

Also Published As

Publication number Publication date
CN102681944B (zh) 2016-09-14
TW201227298A (en) 2012-07-01
CN102681944A (zh) 2012-09-19
US20120166910A1 (en) 2012-06-28
KR20120071058A (ko) 2012-07-02
TWI519949B (zh) 2016-02-01
US8694865B2 (en) 2014-04-08

Similar Documents

Publication Publication Date Title
KR101732030B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US11507281B2 (en) Method and apparatus for flexible RAID in SSD
US11054991B2 (en) Data storage system scale-out with local address remapping
KR101778782B1 (ko) 데이터 저장 장치 및 그것의 동작 방법
US9136020B2 (en) Semiconductor memory device
JP6855102B2 (ja) 不揮発性メモリ・システムにおけるマルチページ障害の回復
US9483404B2 (en) Write admittance policy for a memory cache
KR101636785B1 (ko) 독립 실리콘 소자들을 갖는 동적 상위 레벨 리던던시 모드 관리
US20130205114A1 (en) Object-based memory storage
US8799745B2 (en) Storage control apparatus and error correction method
JP2012137885A (ja) データ記憶装置、メモリ制御装置及びメモリ制御方法
JP2012128660A (ja) 半導体記憶装置
JP2012137886A (ja) データ記憶装置、メモリ制御装置及びメモリ制御方法
US10802958B2 (en) Storage device, its controlling method, and storage system having the storage device
WO2020028801A1 (en) Error correction with scatter-gather list data management
KR20230147950A (ko) 시스템 내 전원 손실 데이터 보호를 위한 장치 및 방법
CN115202568A (zh) 存储系统及其操作方法
KR102032878B1 (ko) 플래시 메모리 컨트롤러의 에러 정정 방법
WO2013023564A1 (en) Method and apparatus for flexible raid in ssd

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant