KR101369573B1 - 고체상태 소자들의 객체 지향 메모리 - Google Patents

고체상태 소자들의 객체 지향 메모리 Download PDF

Info

Publication number
KR101369573B1
KR101369573B1 KR1020127000038A KR20127000038A KR101369573B1 KR 101369573 B1 KR101369573 B1 KR 101369573B1 KR 1020127000038 A KR1020127000038 A KR 1020127000038A KR 20127000038 A KR20127000038 A KR 20127000038A KR 101369573 B1 KR101369573 B1 KR 101369573B1
Authority
KR
South Korea
Prior art keywords
data set
solid state
memory
delete delete
read
Prior art date
Application number
KR1020127000038A
Other languages
English (en)
Other versions
KR20120014939A (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 마이크론 테크놀로지, 인크.
Publication of KR20120014939A publication Critical patent/KR20120014939A/ko
Application granted granted Critical
Publication of KR101369573B1 publication Critical patent/KR101369573B1/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/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2064Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring while ensuring consistency
    • 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
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)

Abstract

본 발명은 고체상태 소자들의 객체 지향 메모리에 관한 방법들, 장치들 및 시스템들을 포함한다. 고체상태 소자들의 객체 지향 메모리를 위한 방법의 하나의 실시예는 규정된 데이터 세트를 원자 조작 방식으로 단일 객체로서 액세스하는 단계를 포함하며, 여기서 액세스는 호스트가 아닌 소스로부터 이루어진다. 상기 실시예는 또한 상기 규정된 데이터 세트를, 다수의 고체상태 메모리 블럭들을 포함하는 고체상태 소자의 제어부에 의해 포맷되는 다수의 고체상태 메모리 블럭들의 상기 단일 객체로서 저장하는 단계를 포함한다.

Description

고체상태 소자들의 객체 지향 메모리{OBJECT ORIENTED MEMORY IN SOLID STATE DEVICES}
본 발명은 일반적으로 반도체 메모리 소자들, 방법들 및 시스템들에 관한 것으로서, 특히 고체상태 소자(solid state device)들의 객체 지향 메모리(object oriented memory)에 관한 것이다.
메모리 소자들은, 다른 여러 가지의 전자 기기들 중 예를 들면 컴퓨터들, 개인 정보 단말기(PDA : personal digital assistant)들, 디지탈 카메라들, 이동(예컨대, 셀룰러) 전화기들에서 내부 회로들, 반도체 회로들, 집적 회로들 및/또는 외부 탈착 가능 장치들로서 제공될 수 있다. 많은 종류의 메모리 구성들 중에서 랜덤 액세스 메모리(RAM : random-access memory), 읽기-전용 메모리(ROM : read-only memory), 디램(DRAM : dynamic random access memory), 에스디램(SDRAM : synchronous dynamic random access memory), 상변화 램(PCRAM : phase change random access memory), 플래시 메모리(flash memory)를 포함하여 많은 상이한 종류의 메모리가 있다.
메모리 소자들을 사용하는 시스템들에서 다양한 종류의 메모리가 사용될 수 있다. 이들 다양한 종류의 메모리는 호스트용 메모리를 제공하기 위하여 조합하여 사용될 수 있다. 예를 들면, 플래시 메모리(예를 들어, NAND 또는 NOR 메모리셀들을 사용함)는 메모리 소자에 포함될 수 있다. 플래시 메모리는 내부 메모리로서 또는 탈착형 메모리로서 이용될 수 있으며, 이는 범용 직렬 버스(USB : universal serial bus)와 같은 인터페이스를 통하여 시스템에 연결될 수 있다.
플래시 메모리 소자들은 광범위한 전자 응용 장치들을 위한 비-휘발성 메모리로서 이용될 수 있다. 플래시 메모리 소자들은 높은 메모리 밀도, 고신뢰성, 그리고 낮은 전력소모를 고려하는 단일 트랜지스터 셀을 사용할 수 있다.
도 1은 본 발명의 하나 이상의 실시예들에 따른 시스템의 블럭도를 도시한다.
도 2는 본 발명의 하나 이상의 실시예들에 따른 메모리 어레이의 일부분의 도면을 도시한다.
도 3은 본 발명의 하나 이상의 방법 실시예들에 따른 고체상태 소자의 객체지향 메모리를 도시하는 블럭도이다.
본 발명은 고체상태 소자의 객체지향 메모리를 위한 방법들, 장치들 및 시스템들을 포함한다. 고체상태 소자들의 객체 지향 메모리를 위한 방법의 한 실시예는 원자 동작 방식으로 단일 객체로서 규정된 데이터 세트를 액세스하는 것을 포함하며, 그곳에서 액세스하는 것은 호스트가 아닌 다른 소스로부터 이루어진다. 다양한 실시예들에서, 한정하는 것이 아닌 예시에 의하여, 그 소스는 도 1에 관하여 설명되는 바와 같은 네트워크가 될 수 있다. 그 실시예는 또한, 상기 규정된 데이터 세트를, 다수의 고체 상태 메모리 블럭들을 포함하는 고체상태 소자의 제어부에 의해 포맷되는 다수의 고체 상태 메모리 블럭들에 단일 객체로서 저장하는 단계를 포함한다.
고체상태 소자는 다수의 메모리 소자들(예를 들어, 다수의 메모리 칩들)을 포함할 수 있다. 본 발명에서 사용되는 바와 같이, 어떤 것을 언급하기 위하여 "다수의"라는 표현을 사용하는 것은 하나 이상의 그러한 것을 언급할 수 있다. 예를 들면, 다수의 메모리 소자들은 하나 이상의 메모리 소자들을 언급할 수 있다. 당 업계의 기술 분야에서 통상의 기술을 가진 자가 이해하는 바와 같이, 메모리 칩은 다수의 다이(die)들을 포함할 수 있다. 각 다이는 그 위에 다수의 메모리 어레이들과 주변회로들을 포함할 수 있다. 메모리 어레이는 다수의 면(plane)들을 포함할 수 있으며, 각 면은 메모리 셀들의 다수의 물리적 블럭들을 포함할 수 있다. 각 물리적 블럭은 다수의 데이터 섹터들을 저장할 수 있는 메모리 셀들의 다수의 페이지(page)들을 포함할 수 있다.
큰 저장용량 전역에서 낮은 지연과 고대역 동작을 달성하기 위하여, 고체상태 소자들은 병렬로 동작하는 다중 채널들을 포함할 수 있으며, 각 채널은 메모리의 일부를 작동시킨다. 따라서, 메모리 채널 제어기(예를 들어, NAND 플래시 제어기 로직)의 다중 복사는 고체상태 소자의 다중-채널 시스템 제어기에 통합될 수 있다. 그러한 배치에 있어서, 각 채널 또는 그 채널들의 집합점은, 논리적 내지 물리적 맵핑의 수행 및/또는 블럭 관리(예를 들어, 소거 횟수 평준화(wear leveling))를 포함하여, 그 채널들을 통해 동작하는 관련 메모리를 동작시키는 작업을 맡게 될 수 있다. 그러므로, 다중 채널들의 각각의 채널에 상응하는 다중 메모리 채널 제어기들의 각각의 복사는, 고속의 버퍼 메모리를 맵핑 및 블럭 관리 기능들을 수행하는데 사용되게 할 수 있다. 또한, 다중 메모리 채널 제어기들의 각각의 복사는 각각의 채널로 가게된 "인-플라이트(in-flight)" 데이터를 위한 버퍼 메모리를 포함할 수 있다.
메모리 소자들은 고체상태 소자를 형성하기 위하여 함께 조합될 수 있다. 고체상태 소자는 다양한 다른 종류들의 비-휘발성 및 휘발성 메모리 중에서, 비-휘발성 메모리(예를 들어, NAND 플래시 메모리 및/또는 NOR 플래시 메모리) 및/또는 휘발성 메모리(예를 들어, 디램 및/또는 에스램)를 포함할 수 있다.
고체상태 소자는 성능, 크기, 무게, 튼튼함, 동작 온도 범위 및/또는 전력소모의 면에서 하드 드라이브들보다 장점이 많을 수 있기 때문에, 컴퓨터의 주메모리로서 하드 디스크 드라이브를 대체하도록 사용될 수 있다. 예를 들면, 고체상태 소자들은 움직이는 부품들이 없기 때문에 자기 디스크 드라이브에 비해 더 뛰어난 성능을 가질 수 있으며, 이는 자기 디스크 드라이브들과 연관된 탐색 시간, 지연시간 및/또는 기타 전기-기계적 지연들을 개선시킬 수 있다. 고체상태 소자 제조자들은 비-휘발성 플래시 메모리를 사용하여 내부 배터리를 사용하지 않을 수 있는 플래시 고체상태 소자를 만들 수 있으며, 그에 따라, 드라이브를 더 다용도로 그리고 더 컴팩트하게 구현할 수 있다.
몇몇 메모리 응용 기기용으로, 고체상태 소자는 하드 디스크 드라이브를 대체하고 보충하도록 사용될 수 있다. 이러한 경우들에서, 고체상태 소자는 하드 디스크 드라이브의 기능을 수용하도록 설계된 환경에 놓여질 수 있다. 고체상태 소자와 하드 드라이브 사이에서 최소 소거가능 단위의 입도(granularity) 또는 양자화(quantization)의 차이들로 인하여(예를 들어, 하드 드라이브를 위한 512-바이트 섹터 대 고체상태 소자의 128k 또는 256k 블럭), 컴퓨팅 장치에서 하드 드라이브의 대체용품 또는 보충용품으로서 사용되는 고체상태 소자는 최고 성능 수준으로 동작하지 않을 수 있다.
다중 메모리 채널 제어기들의 각각의 복사 영역과 메모리의 상응하는 부분간의 병렬 통신은 데이터, 제어, 전원 및 접지연결을 확고히 하기 위하여 대략 20개의 핀들을 필요로 할 수 있다. 이는 기존의 디스크 드라이브 프로토콜과의 호환을 보장하기 위하여 많은 수의 핀들을 갖춘 고가의 메모리 시스템이 불가피한 결과를 초래할 수 있다.
더 높은 입출력 성능의 필요성이 빠르게 확대됨으로써 고체상태 소자의 개발 및 채택이 추진되어 왔다. 고성능의 데스크탑 컴퓨터, 랩탑 컴퓨터, 모바일 시스템 또는 장치, 그리고 실시간 내지 실시간에 준하는 속도로 정보를 전송하는 것이 필요한 다른 응용기기들은 고체상태 소자를 채택함으로써 성능 향상의 이점을 누릴 수 있다. 역사적으로, 고체상태 소자들은 하드 드라이브들보다 더 고가이었다. 하지만, 제조기술의 개발과 칩 용량 증가에 따라 그 가격이 하락하고 있어 개인과 기업 수요자들은 기존의 메모리 시스템에 대한 가치있는 대안으로 재평가하고 있다.
메모리 셀은 하나 이상의 쉽게 판별가능한 하나 이상의 상태들 사이에서 빠르게 전환될 수 있는 구조에서 디지털 정보를 저장한다. 어떤 메모리 셀들은 셀 영역에 포함된 존재 유무에 기초한다. 그 전하를 유지함으로써, 메모리 셀은 자신의 저장된 데이터를 유지한다. 어떤 메모리 셀 구조들은 내재적으로 전하를 누출하기 때문에, 저장된 전하를 리프래시 하기 위하여 지속적으로 전원을 공급받아야 한다.
그러나, 비-휘발성 메모리는 전하 정보를 유지하기 위한 전원을 필요로 하지 않는다. 예를 들면, 플래시 메모리는, 전하들이 저장되고, 전하 누출을 최소화하기 위해 절연된 "플로팅 게이트"를 가질 수 있다. 따라서, 플래시 메모리는 오직 저장된 정보(예컨대, 데이터, 비트들 등)를 변경할 때, 즉 전하들을 저장하기 위해 메모리 셀에 데이터를 쓸 때(예컨대, 전하를 저장) 또는 메모리 셀로부터 데이터를 읽고/읽거나(전하가 존재하는지의 여부를 판정) 소거할 (예컨대, 전하 제거) 때에만 전원이 필요하다. 플래시 메모리에 저장된 데이터의 비-휘발성은 휴대용 전자 응용 기기들에 유리하다. 한정하는 것이 아닌 실시예로서, 비-휘발성 메모리는 많은 다른 용도들 중에서, 개인용 컴퓨터, 개인 정보 단말기(PDA) 및 디지털 카메라, 셀룰러 폰에서 사용될 수 있다. 컴퓨팅 시스템에서 사용되는 기본 입출력 시스템(BIOS : basic input/output system)과 같은 프로그램 코드와 시스템 데이터가 비-휘발성 메모리 소자들에 저장될 수 있다.
고체상태 메모리 소자는 고체상태 플래시 메모리에 영구적인 데이터를 저장하는 메모리 소자가 될 수 있다. 고체상태 메모리 소자는 가동 부품들이 없기 때문에 전통적인 용어의 의미에서 하드 드라이브는 아니다. 그 대신, 고체상태 메모리 소자는 자기 또는 광학 매체보다는 집적회로(IC)들을 사용하여 구성된 반도체 메모리 어레이를 구비한다.
이러한 배치는 많은 이점들을 가진다. 고체상태 소자를 왕래하는 데이터 전송은 전자기계적 디스크 드라이브보다 빠르다. 또한 검색시간과 지연도 단축될 수 있다. 사용자는 훨씬 빠른 부팅 시간 및/또는 운영 시스템들의 기능성도 또한 누린다. 전반적으로, 고체상태 소자는 멈추거나 회전하면서 오르내리는 가동 부품들이 없기 때문에 더 오래가고 더 조용하다. 그렇지만, 고체상태 소자는 성능이 비정상적이 될 수 있기 전에 유한 수의 소거/쓰기 주기들이 있기 때문에 정해진 예상 수명을 갖고 있다.
따라서, 예를 들면, 하나의 규정된 데이터 세트가 이전에 저장되었던 메모리 셀들에서의 "마모(wear)"로 인하여, 상기 규정된 데이터 세트는 주기적으로 다시 쓰여질 수 있다. 본 발명에서 설명된 다양한 실시예들에서, 규정된 데이터 세트는, 그러한 데이터의 액세스 전과 도중에, 그리고/또는 그러한 데이터의 저장 후에 규정되는 것과 같은, 적절한 시스템 성능을 가능하게 하는 명령들을 포함할 수 있는 "중대한 데이터"의 완전하고 통합된 패키지를 포함할 수 있다. 일부 실시예들에서, 데이터의 "세트"는, 그러한 데이터를 액세스하는 중에 그리고/또는 후에, 그러나 규정된 데이터 세트로서 완전하고 통합된 패키지를 저장하기 전에 통합되는 데이터의 다중 패키지로서 정의될 수 있다.
또한, 기술의 발전으로 이전에 저장된(예를 들어, 쓰여진) 규정된 데이터 세트를 대체할 수 있다. 본 발명에서, 이러한 동작들의 각각은 상기 규정된 데이터 세트를 "업데이팅 한다"는 말로 표현될 수 있다. 특별히, 중대한 데이터(예컨대, 시스템의 동작성이 실질적인 그의 무오류 읽기에 달려있는 부팅 이미지 및/또는 운영 시스템)를 위하여, 특히 새롭게 액세스된 데이터가 적절한 동작성을 위해 호스트(예컨대, 호스트 장치 및/또는 호스트 장치에 의해 관리되는 시스템)가 의존하는 데이터를 대체할 때, 고체상태 소자에 상기 규정된 데이터 세트를 저장하기 전에 그러한 데이터의 정확성을 검증하는 것이 중요할 수 있다.
고체상태 소자들에 포함된 기존의 고체상태 메모리(예컨대, NOR 및/또는 NAND 플래시 메모리)는 예를 들면, 일련의 고정 길이 논리 블럭들로서 호스트 데이터(예컨대, 파일)를 저장할 수 있다. 상기 호스트는, 플래시 메모리 소자 내의 어느 논리 블럭들이 각각의 파일에 연관되어 있는지 뿐만 아니라 그 파일을 만들기 위한 그러한 논리 블럭들의 순서도 식별할 수 있는 테이블을 보유할 수 있다. 호스트에 의한 메모리 소자로의 읽기 및 쓰기 액세스는 논리 블럭들을 사용하여 수행될 수 있다. 그러나, 상기 플래시 소자는 읽기들과 쓰기들이 상기 기본 파일 데이터 자체에 어떻게 관련되어 있는지를 파악하기 위한 충분한 정보가 부족할 수 있다.
그럼에도 불구하고, 메모리 시스템은 다양한 유형의 호스트 데이터에 대하여 충분히 잘 기능할 수 있지만 어떤 데이터 유형들에 대해서는 특히 부족함이 있을 수 있다. 하나의 예는, 암호화된 명령들의 실질적인 무오류 읽기에 따른 기능들을 구비한 시스템의 동작성에 중대한 프로세서 부팅 명령들 및/또는 운영 시스템 명령들과 같은 시스템 데이터이다. 이러한 유형의 데이터의 오염은 그러한 시스템을 동작불능의 상태로 만들 수 있다. 하나의 대안적인 메모리 메카니즘이 보다 광범위한서비스들과 함께 제고된 신뢰성 및 성능을 제공하는 본 발명의 명세서에서 설명된다. 본 명세서에 설명되는 바와 같이, 대안적인 메모리 메카니즘은, 고체상태 소자들에 포함된 객체 지향 메모리 및/또는 예를 들면, 객체 지향 메모리를 모사하는 부호화된 규칙들의 세트에 의해 통제되는 블럭 지향 메모리를 사용할 수 있다.
일련의 논리 블럭들로서 (예컨대, 블럭 지향 방식으로) 파일을 처리하기 보다는, 파일의 규정된 데이터 세트가 고체상태 메모리 소자에 의해 하나의 단일객체(예컨대, 완전하고 통합된 패키지)로서 대신 처리(예컨대, 액세스되고/되거나 저장됨)될 수 있다. 규정된 데이터 세트를 단일 객체로서 처리함으로써 (예컨대, 다수의 비-휘발성 NOR 및/또는 NAND 플래시 메모리 어레이들을 가지는) 고체상태 메모리 소자는 읽기 및 쓰기 과정 중에 신뢰성과 성능을 제고할 수 있는 동작들을 수행할 수 있다. 특정한 시스템 기능들의 동작성을 위하여 실질적으로 무오류의 읽기가 필요한 데이터에 대하여 수행될 수 있는 그러한 동작들의 예들은: 본 명세서에 설명된 다른 동작들 중에서, 쓰기 프로세스가 수행되거나 완료된 것으로 간주되기 전에 데이터 무결성 검사가 수행되는 읽기-검증 동작; 하나의 복사 데이터의 읽기 실패의 경우 상기 시스템이 데이터 복사본들 중 다른 하나의 데이터의 읽기에 의존할 수 있도록 그러한 데이터의 다수의 복사본이 저장되는 동작; 그리고 잘못된 읽기 또는 다시 쓰기의 경우 시스템이 최종의 기지(旣知)의-양호한 데이터를 읽도록 지시될 수 있도록 이전의 기지의-양호한 데이터 버전이 유지되는 동작을 포함할 수 있다.
고체상태 소자의 객체 지향 데이터 구조들은, 본 명세서에서 설명되는 바와 같이, 종래의 블럭 지향 메모리 소자들이 그러한 동작들을 수행할 수 없음에 반하여, 방금 설명된 동작들을 제공하고 및/또는 그러한 제공을 지원할 수 있다. 본 명세서에서 설명되는 바와 같이, 고체상태 소자는 특히, 다수의 고체상태 메모리 어레이들 및 고체상태 소자 제어기를 포함할 수 있다. 제어기는 소프트웨어, 펌웨어 및/또는 하드웨어(예컨대 주문형 반도체(ASIC : application specific integrated circuit)와 같은 로직)로서 저장된 명령들(예컨대, 적절한 프로세서에 의해 실행되는)을 사용하여 고체상태 소자를 관리(예컨대, 지시, 제어, 조절 등)하는 제어부가 될 수 있다. 본 명세서에 의하여 당 업계의 기술분야에서 통상의 기술을 가진 자는 본 명세서에서 "객체 지향 고체상태 소자들"로도 또한 지칭된 고체상태 소자들의 객체 지향 메모리에 대한 실시예들로 특히 이러한 동작들을 실시할 수 있다.
고체상태 소자들에서 객체 지향 메모리로서 쓰기를 행할 때, 고체상태 소자는 블럭 지향 방식으로 데이터 스트림에 액세스할 수 있다. 그러나, 객체 지향 메모리 소자는 데이터 스트림이 단일의 규정된 실체(예컨대, 단일 객체를 정의하는 규정된 데이터 세트)에 연관되어 있다는 것을 알면서 데이터 스트림에 액세스할 수 있기 때문에, 예를 들면, 호스트에 대한 쓰기 완료 통지 응답이 하나 이상의 데이터 보호 동작이 성공적으로 완료될 때까지 지연될 수 있다. 다양한 데이터 보호 동작의 수행은 객체 지향 메모리 기술들의 사용을 통하여 용이하게 될 수 있다. 다수의 이러한 데이터 보호 동작들은 아래에서 설명된다.
고체상태 소자는 호스트에 의해 읽혀지는 객체 데이터의 신뢰성을 향상시키기 위하여 객체에 연관된 특성들을 이용할 수 있다. 고체상태 소자는, 매체 오류가 호스트에 의해 읽혀진 객체를 훼손하게 될 가능성을 줄이기 위하여, 다수의 데이터 복사본을 사용할 수 있다. 아래에서 더 자세히 설명되는 바와 같이, 다양한 동작들이 개별적으로 수행되거나 또는 조합되어 수행되어 데이터의 훼손 가능성을 줄일 수 있다. 예를 들면, 페일-오버(fail-over) 동작은 오류 검출이 읽기 및/또는 쓰기 장애를 표시하는 경우 상기 객체의 다른 복사본을 사용할 수 있다. 일부 실시예들에서, 적어도 하나의 데이터 복사본에서 오류 검출 후, 상기 객체의 복수 데이터 복사본에서 비트별 비교가 수행될 수 있다. 상기 비교에서 발견된 불일치는 다수의 데이터복사본들의 다수결을 초래할 수 있거나 상기 고체상태 소자가 최종 기지의-양호한 객체로 복귀할 수 있다. 또 다른 수준의 검증은 전체 객체의 완전한 주기적 중복성 검사(CRC)가 될 수 있다.
객체 지향 고체상태 소자는 호스트에게 전체 객체의 이전에 저장된 버전에 따라 명령할 수 있다. 예를 들면, 객체 지향 고체상태 소자의 제어부가 특정한 시간의 주기(예컨대, 미리 정해진 기간이 될 수 있거나 상황에 맞추어 적합한 바에 따라, "대충 그때 그때 보아가며" 결정된다)내에 객체에 대한 다수의 읽기 요청들을 검출하고 그러한 다수의 요청들을 상기 소자가 재-부팅 루프에 포착되어 있다는 지시표식으로서 인지할 수 있다. 그러한 인식의 결과로 고체상태 소자는 호스트에게 객체의 최종 기지의 양호한 버전을 제공할 수 있다.
객체 지향 고체상태 소자는, 다양한 실시예들에서, 호스트의 부팅을 촉진하는 서비스들을 제공할 수 있다. 이 서비스들 중에서, 고체상태 소자는 다른 이벤트들 중에서 신호의 파워온 리셋 및/또는 변환과 같은 특정한 이벤트에 기초하여 읽기 동작을 자동으로 개시할 수 있다. 그러면, 읽혀진 데이터는, 예를 들면, 그것이 사용될 수 있는 호스트로 자동으로 전송되어 호스트 및/또는 호스트를 포함하는 시스템을 부팅할 수 있거나, 상기 데이터가 호스트 및/또는 그 당시 호스트를 포함하는 시스템에 의해 요구되지 않는 경우에 무시될 수 있다.
블럭 지향 메모리 소자들은 일반적으로, 파일 내의 논리적 블럭들의 수 및/또는 블럭들이 읽히고 그리고/또는 쓰여지는 순서를 인식하는 능력이 없기 때문에, 본 명세서에서 설명된 범위의 동작들 및/또는 서비스들을 수행할 수 없을 수도 있다. 블럭 지향 메모리 소자들은 일반적으로 읽기/쓰기 명령들에 대하여 응답만 한다.
컴퓨팅 장치는 원하는 작업을 달성하기 전에, 적합한 명령 세트를 수신할 수 있다. 이러한 명령들은 예를 들면 장치의 프로세서(들)에 의해 실행되어, 상기 장치의 동작을 지시한다. 이러한 명령들은 메모리에 저장될 수 있다. 명령들은 다른 명령들을 불러올 수 있다. 컴퓨팅 장치 및/또는 시스템(예를 들면, 서버, 라우터, 데스크탑 컴퓨터, 랩탑 컴퓨터, 이동 장치들 및 시스템들)은 다양한 기능들 또는 역할들의 수행을 가능하게 하는 운영 시스템 계층과 애플리케이션 계층을 포함할 수 있다. 운영 시스템 계층은 기본 수준의 제어 및 동작성을 제공하는 "커널"(예를 들어, 주 제어 프로그램)을 포함할 수 있다. 상기 커널은 예컨대 호스트에, 특히 작업관리, 장치관리 및 데이터 관리를 제공할 수 있다. 상기 커널은 컴퓨팅 장치에서 실행되는 응용 프로그램들을 위한 기준들을 설정할 수 있고, 응용 프로그램들에서 사용되는 자원들을 제어할 수 있다. 애플리케이션 계층은 운영 시스템 계층보다 상위에 위치하고 사용자가 액세스할 수 있는 프로그램들(예를 들어, 실행가능한 명령들)을 포함할 수 있다.
부팅 이미지 및/또는 운영 시스템 명령들은 방금 설명된 기능들의 개시를 가능하게 하여서, 중대한 데이터라고 불릴 수 있는, 부호화된 정보(예컨대, 규정된 비트들의 세트)를 포함할 수 있다. 그러한 중대한 데이터를 객체 지향 방식으로 액세스하고 및/또는 저장하는 것은, 예컨대 호스트에 의해 제어된 시스템들의 동작성을 유지하기 위하여 중대한 데이터의 무결성을 보존하는데 도움이 되어야 한다.
본 명세서에 설명되는 바와 같이, 실행되어 중대한 데이터를 보호하는 명령들이 제공된다. 하나 이상의 실시예들이 제공되어 명령들을 실행하여 새롭게 규정된 데이터 세트가 적어도 한번 저장되면서 성공적으로 부팅된 후에, 운영 시스템 설치 또는 업데이트에 연관되어 있는지의 여부에 관계없이, 상기 새롭게 규정된 데이터 세트가 자동적으로 "최종 설치" 상태로서 저장된다. 상기 최종 설치는 "기지의 양호한" 설치가 되며, 예컨대, 사용자가 무심코 부팅 불가능한 커널 구성을 만들고 백업을 만들지 않았을 때 문제들을 피하는데 도움이 된다. 명령들을 실행하여 하나 이상의 규정된 중대한 데이터 세트들의 다수의 복사본들을 만드는 하나 이상의 실시예들이 제공된다. 오류 정정 동작을 상기 복사본에 적용하기 위하여 실행할 수 있는 명령들을 실행하는 하나 이상의 실시예들이 제공된다. 본 명세서를 읽으면 통상의 기술을 가진 자는 이들 실시예 및 다른 실시예들을 이해하게 될 것이다.
도 1은 본 발명의 하나 이상의 실시예들에 따른 시스템의 블럭도를 도시한다. 아래의 상세한 설명에서, 본 출원서의 일부로서 하나 이상의 실시예들이 어떻게 구현되면 좋은지를 도시를 통하여 보여 주는 첨부된 도면들이 참조된다. 이러한 실시예들은 당 업계의 기술분야에서 통상의 기술을 가진 자가 실시할 수 있을 정도로 충분히 상세하게 기술되며, 다른 실시예들이 사용될 수 있으며 프로세스, 전기적 및/또는 구조적 변경이 본 발명의 범위를 벗어나지 않고 가능한 것으로 이해되어야 한다. 여기서 사용되는 바와 같이, 특별히 도면상의 참조부호들에 관하여 "N", "M", "R" 및 "S"라는 지정표시들은 그렇게 지정된 다수의 특정 특징이 본 발명의 하나 이상의 실시예들에 포함될 수 있음을 나타낸다.
본 명세서에 첨부된 도면들은, 첫 번째 숫자 또는 숫자들이 도면번호에 해당하고 나머지 숫자들은 도면에서 부품 또는 구성요소를 식별하는 번호 부여규칙을 따른다. 다른 도면들 사이에서 유사한 부품들 또는 구성요소들이 유사한 번호를 사용하여 식별될 수 있다. 예를 들면, 130은 도 1의 부품 "30"을 지칭할 수 있고, 유사한 부품은 도 2에서 230으로서 지칭될 수 있다. 또한, 살펴서 알게 되는 바와 같이, 본 명세서에서 다양한 실시예들에서 나타난 부품들은 본 발명의 추가적인 실시예들을 다수 제공하기 위하여 추가, 교환 및/또는 제거될 수 있다. 또한, 살펴서 알게 되는 바와 같이, 도면들에 도시된 부품들의 비율과 상대적 축척은 본 발명의 실시예들을 도시하기 위한 것일 뿐이며, 한정하는 의미에서 보아서는 안 된다.
시스템은 호스트, 호스트 메모리, 그리고 호스트 외부의 다수의 메모리 소자들을 포함할 수 있다. 호스트는 다수의 프로세서들, 제어기, 그리고 호스트 제어기 및/또는 다수의 내부 메모리 소자들에 연관된 호스트 제어기 메모리를 구비할 수 있다. 호스트는 호스트 제어기를 통하여 메모리 소자들과 상호작용함으로써 내부 및/또는 외부 메모리 소자들을 사용할 수 있다. 호스트 제어기는, 메모리 소자들로부터 호스트로 데이터를 읽거나 호스트로부터 메모리 소자들로 데이터를 저장하는 등의 메모리 소자들의 동작들을 수행하기 위하여 메모리 소자들과 통신할 수 있다. 데이터의 쓰기와 저장을 관리하는 명령들은 호스트에 의해 만들어진다. 호스트 제어기는 명령들에 따라 메모리 소자들의 능력들을 제어하는 하드웨어를 구비할 수 있다. 그러한 경우에, 상기 호스트 제어기가 메모리 소자들의 능력을 규정하는 하드웨어를 구비할 때, 상기 호스트 제어기는 호스트 제어기에 있는 하드웨어와 연관된 능력들을 가지는 명령을 만드는데 한정될 수 있다.
하나 이상의 실시예들에서, 도 1에 도시된 시스템(100)은, 다른 예들 중에서, 특히 한정이 아니라 그 예로서, 개인용 컴퓨터들 및/또는 랩탑 컴퓨터들, 이동전화기들, 디지털 카메라들, 디지털 기록 및 재생 장치들, PDA들, 메모리 카드 리더들, 및 인터페이스 허브들 및 범용직렬버스(USB)들에 대한 기능성을 가능하게 하는 데 사용될 수 있다.
상기 시스템(100)은 호스트(105)를 포함할 수 있으며, 여기서 호스트(105)는 호스트 제어기(112)를 통하여 다수의 다른 부품들과 통신하는 적어도 하나의 호스트 프로세서(114)를 포함한다. 다른 호스트 부품들은 호스트 메모리 제어기(122)를 통하여 액세스되는 호스트 메모리(118)를 포함할 수 있다. 추가적인 구성요소들은 호스트 네트워크 인터페이스(110)와 사용자 인터페이스(125)를 포함할 수 있다.
다양한 실시예들에서, 호스트 네트워크 인터페이스(110)에 의하여 외부 네트워크(102)에 액세스(예컨대, 통신) 하면 입출력 장치가 상기 네트워크(102)와 상호작용할 수 있다. 한정이 아니라 그 예로서, 그러한 외부 네트워크들은 특히, 근거리 통신망(LAN: local area network), 광역 통신망(WAN: wide area network), 인터넷 및/또는 무선 통신망들을 포함할 수 있다. 호스트 네트워크 인터페이스(110)는 외부 네트워크(102)를 통하여 다른 장치들 및/또는 시스템들의 대응하는 인터페이스 장치들에 연결될 수 있다. 네트워크(102)는, 당 업계의 기술분야에서 통상의 기술을 가진 자라면 알고 이해할 수 있는 바와 같이, 많은 상호연결 시스템들과 통신 링크들을 자체에 구비할 수 있다. 여기서 사용되는 통신 링크들은 하드 와이어 링크들, 광학적 링크들, 위성 또는 다른 종류의 무선통신 링크들, 전파 전달 링크들, 또는 정보 통신을 위한 다른 유형의 메카니즘들이 될 수 있다.
사용자 인터페이스(125)는, 다양한 실시예들에서, 키보드, 포인팅 장치들(예컨대, 마우스, 트랙볼, 터치패드, 또는 그래픽 태블릿), 스캐너, 디스플레이에 합체된 터치 스크린, 음성인식 시스템들과 같은 오디오 입력장치들, 마이크로폰들 및/또는 다른 종류의 입력장치들(도시되지 않음)을 포함하는 다수의 장치들을 통하여 데이터 입력을 수행할 수 있다. 일반적으로, "입력장치"라는 용어는 도 1에 도시된 시스템(100)으로 정보를 입력하는 모든 가능한 종류의 장치들 및 방법들을 포함하려는 의도로 사용된다.
시스템(100)의 호스트(105)는, 다양한 실시예들에서, 주변 메모리를 호스트(105)에 제공하는 고체상태 소자(150)에 동작가능하게 연결될 수 있다. 다양한 실시예들에서, 고체상태 소자는 외부 네트워크(102)와의 통신(예컨대, 액세스)을 가능하게 하여, 이전에 설명된 바와 같이, 네트워크(102)에 입력 및/또는 출력을 가능하게 할 수 있는 고체상태 소자 네트워크 인터페이스(156)를 포함할 수 있다.
고체상태 소자 네트워크 인터페이스(156)는, 다양한 실시예들에서, 고체상태 소자 제어기(166)에 동작가능하게 연결될 수 있다. 고체상태 소자 제어기(166)는, 다양한 실시예들에서, 고체상태 소자 네트워크 인터페이스(156)로부터의 데이터/정보의 출력 및/또는 고체상태 소자 네트워크 인터페이스(156)으로의 데이터/정보의 입력을 제어하거나 관리할 수 있다. 고체상태 소자 제어기(166)에 의한 데이터/정보의 관리는 고체상태 소자 제어기(166)에 내장되거나 연관된 프로세서(172)에 의해 실행될 수 있다. 고체상태 소자 제어기(166)는, 다양한 실시예들에서, 호스트(105)로 데이터/정보를 제공하고 및/또는 호스트(105)로부터 데이터/정보를 수신하기 위하여(예컨대, 교환) 호스트(105)의 호스트 제어기(112)에 동작가능하게 연결될 수 있다. 예를 들면, 데이터/정보(예컨대, 컴퓨터에서 읽을 수 있는 이진 코드로 부호화된 비트들)는, 호스트(105)에 의해 제어되는 시스템의 동작성이 그러한 데이터/정보의 실질적인 무오류 읽기에 좌우되는 데이터/정보가 될 수 있다. 한정이 아니라 그 예로서, 데이터/정보는 호스트 및/또는 호스트에 의해 관리되는 시스템에서 운영 시스템의 기능을 부팅하고 및/또는 개시하는데 필요한 규정된 데이터 세트(예컨대, 부팅 이미지)가 될 수 있다.
고체상태 소자(150)의 고체상태 소자 제어기(166)는, 다양한 실시예들에서, 다수의 고체상태 메모리 어레이들(186)에 동작가능하게 연결될 수 있다. 고체상태 메모리 어레이들(186)은 도 2와 연관하여 더욱 상세하게 설명될 것이다. 요약하면, 하나 이상의 고체상태 메모리 어레이들(186)은, 다양한 실시예들에서, 예를 들면, 호스트(105)에 의해 제어되는 시스템의 동작성이 규정된 데이터 세트의 실질적인 무오류 읽기에 좌우되는 단일 객체(192)로서, 규정된 데이터 세트를 (예컨대, 메모리 어레이의 메모리셀들에 그러한 데이터를 "쓴" 후에) 저장하는데 사용될 수 있다.
본 명세서에서 설명된 바와 같이, 규정된 데이터 세트는, 하나 이상의 단일 객체들(192)로서 고체상태 메모리 어레이들에 저장되는 집합된 전체로서 취급될 수 있으며, 고체상태 소자 제어기(166)를 통하여 호스트(105)에 그 자체로 제공됨으로써 호스트(105)에 의해 관리되는(예컨대, 지시, 제어, 통제 등을 받는) 시스템 기능들의 신뢰성있는 부팅 및/또는 동작을 가능하게 할 수 있다. 본 명세서에 설명된 바와 같이, 다양한 실시예들에서, 고체상태 소자(150)의 부품들(156, 166, 172, 186, 192)은 단일 객체들을 객체 지향 방식으로 취급함으로써 그러한 규정된 데이터 세트들(예컨대, 단일 객체들)의 신뢰성있는 업데이트를 가능하게 할 수 있으며, 그러한 규정된 데이터 세트는 "중대한 데이터"로 지칭될 수 있다.
도 2는 본 발명의 하나 이상의 실시예들에 따른 메모리 어레이의 일부분을 도시한다. 도 2에 도시되어 있지 않지만, 당 업계의 기술분야에서 통상의 기술을 가진 자는 고체상태 메모리 어레이(230)가 동작과 관련된 다양한 주변회로들과 함께 특정한 반도체 다이(die)에 위치할 수 있음을 이해할 것이다.
도 2에 도시된 바와 같이, 고체상태 메모리 어레이(230)는 메모리 셀들의 다수의 물리적 블럭들(240-0(BLOCK 0), 240-1(BLOCK 1),..., 240-M(BLOCK M))을 구비한다. 지시표식 "M"은 어레이(230)가 다수의 물리적 블럭들을 포함할 수 있음을 나타내는데 사용된다. 메모리 셀들은 싱글 레벨(single-level) 셀들 및/또는 멀티 레벨(multi-level) 셀들이 될 수 있다. 본 발명의 다양한 실시예들에서, 특정한 물리적 블럭들은 싱글 레벨 셀들(예컨대, 싱글 비트 메모리 셀들)만을 포함하거나, 싱글 비트 셀들로서 쓰여지는 멀티 레벨 셀들을 포함할 수 있다. 하나의 예로서, 어레이(230)에서 물리적 블럭들의 개수는 128 블럭들, 512 블럭들 또는 1024 블럭들이 될 수 있지만, 실시예들은 어레이(230)에서 128의 특정 배수 또는 임의의 특정 수의 물리적 블럭들에 국한되지 않는다.
또한, 실시예들은 다수의 어레이들 모두에 사용되는 메모리의 특정 유형에 한정되지 않는다. 즉, 다양한 실시예들에서, 서로 다른 메모리 어레이들은, 당 업계의 기술 분야에서 통상의 기술을 가진 자가 아는 바와 같이, 어떠한 유형의 메모리 블럭들(예컨대, 비-휘발성, 휘발성 등과 같이 다양한 메모리 형태)도 사용할 수 있다. 그러나, 본 발명의 목적한 바를 위하여, 다수의 메모리 어레이들은, 당 업계의 기술 분야에서 통상의 기술을 가진 자가 이해하듯이, 고체상태 메모리 어레이로서 구성된 적어도 하나의 어레이를 포함한다. 도 2에 도시된 실시예에서, 메모리 어레이(230)는 예를 들면 비-휘발성 NAND 플래시 메모리 어레이가 될 수 있다. 일부 실시예들에서, 한정이 아니라 그 예로서, 메모리 어레이(230)가 비-휘발성 NAND 플래시 메모리 어레이 구조를 구비할 수 있다.
도 2에 도시된 예에서, 각 물리적 블럭(240-0, 240-1,...., 240-M)은 하나의 단위(예컨대, 각 물리적 블럭의 셀들은 실질적으로 동시에 소거될 수 있다)로서 함께 소거될 수 있는 메모리 셀들을 포함한다. 예를 들어, 각 물리적 블럭의 셀들은 단일 동작으로 모두 함께 소거될 수 있다. 각 물리적 블럭(예컨대, 240-0, 240-1,..., 240-M)은 액세스 라인(예컨대, 워드 라인)에 연결된 메모리 셀들의 다수의 물리적 행들(예컨대, 250-0, 250-1,..., 250-R)을 포함한다. 지시표식 "R"은 물리적 블럭(예컨대, 240-0, 240-1,..., 240-M)이 다수의 행들을 포함하고 있음을 나타낸다. 일부 실시예들에서, 각 물리적 블럭의 행들(예컨대, 워드 라인들)의 수는 32가 될 수 있지만, 실시예들은 물리적 블럭당 행들(250-0, 250-1,..., 250-R)의 특정 수에 한정되지 않는다.
당 업계의 기술 분야에서 통상의 기술을 가진 자가 이해하듯이, 각 행(250-0, 250-1,..., 250-R)은 데이터의 하나 이상의 페이지들(예컨대, 비트들)를 저장할 수 있다. 페이지는 프로그램 및/또는 읽기의 단위(예컨대, 함께 또는 메모리 셀들의 기능 그룹으로서 프로그램되거나 읽히는 다수의 셀들)이다. 도 2에 도시된 실시예에서, 각 행(250-0, 250-1,..., 250-R)은 하나의 데이터 페이지를 저장한다. 그러나, 본 발명의 실시예들은 그렇게 한정되지 않는다. 예를 들면, 본 발명의 일부 실시예들에서, 각 행은 다수의 데이터 페이지들을 저장할 수 있다. 예를 들면, 행의 각 셀은 상위 데이터 페이지로 비트를 제공하고 하위 데이터 페이지로 비트를 제공할 수 있다. 하나 이상의 실시예들에서, 메모리 어레이는 다수의 물리적 블럭들을 포함할 수 있으며, 각 물리적 블럭은 다수의 페이지들로 구성될 수 있다. 본 명세서에 설명된 바와 같이, 그러한 어레이에서 적어도 하나의 어레이 및/또는 다수의 블럭들은, 단지 하나의 데이터 페이지만을 저장하거나 또는 그 블럭들이 하나의 데이터 페이지만을 저장하는 방식으로 사용되는 메모리 셀들을 포함한다.
본 발명의 하나 이상의 실시예들에서, 도 2에 도시된 바와 같이, 250-0과 같은 행은 물리적 섹터들(252-0, 252-1,..., 252-S)의 개수에 따라 데이터를 저장(예컨대, 쓰기 동작 후에)할 수 있다. 지시표식 "S"는 행(250-0, 250-1,..., 250-R)이 다수의 물리적 섹터들을 포함할 수 있음을 나타낸다. 각 물리적 섹터(252-0, 252-1,..., 252-S)는 논리적 섹터에 상응하는 데이터를 저장할 수 있고, 규정된 데이터 세트(예컨대, 본 발명에서 설명된 바와 같은 중대한 데이터) 뿐만 아니라 오류 정정 코드(ECC : error correction code) 정보와 논리적 블럭 어드레스(LBA : logical block address) 정보와 같은 오버헤드 정보를 포함할 수 있다. 당 업계의 기술 분야에서 통상의 기술을 가진 자가 이해하는 바와 같이, 논리적 블럭 어드레싱은 데이터의 논리적 섹터를 확인하기 위하여 호스트에 의해 자주 사용되는 방식이다. 하나의 예로서, 데이터의 논리적 섹터는 다수의 데이터 바이트들(예컨대, 256 바이트, 512 바이트 또는 1024 바이트)이 될 수 있다. 실시예들은 이러한 예들에 한정되지 않는다.
물리적 블럭들(240-0, 240-1,..., 240-M), 행들(250-0, 250-1,..., 250-R), 섹터들(252-0, 252-1,..., 252-S) 및 페이지들에 대한 다른 구성들이 가능함에 유의하여야 한다. 예를 들면, 물리적 블럭들(240-0, 240-1,..., 240-M)의 행들(250-0, 250-1,..., 250-R)은, 예컨대 512 바이트보다 많거나 적은 데이터를 저장할 수 있는 단일 논리적 섹터에 상응하는 데이터를 각각 저장할 수 있다.
본 발명에서 제공된 그 설명에 따라, 다양한 실시예들에서, 고체상태 소자는 다수의 고체상태 소자 메모리 어레이들에 연결된 제어부를 포함할 수 있으며, 고체상태 소자에서 각 어레이는 메모리 셀들의 다수의 물리적 블럭들을 구비한다. 또한, 다양한 실시예들에서, 각 어레이는, 규정된 데이터 세트에 단일 객체로서 액세스하고 상기 규정된 데이터 세트를 상기 다수의 어레이들에 상기 단일 객체로서 저장하도록 구성된 고체상태 소자의 제어부에 의해 포맷될 수 있다.
본 명세서에서 사용되는 바와 같이, 고체상태 소자의 제어부가 하나의 활동을 수행할 수 있다고 명시되면, 그것은 "~하도록 구성된 제어부" 또는 "프로세서를 통하여 실행되도록 구성된 제어부"를 축약하여 대신하는 것으로 이해될 것이다.
일부 실시예들에서, 고체상태 소자의 제어부는 단일객체의 포맷을 관리하는 연관 프로세서를 포함할 수 있다. 포맷은 다수의 고체상태 메모리 어레이들에서 다수의 물리적 블럭들 중에서 어느 블럭이 규정된 데이터 세트를 저장할 것인가를 결정함에 의해 수행될 수 있다. 예를 들면, 다양한 실시예에서, 고체상태 소자의 제어부는 규정된 데이터 세트를 메모리 셀들의 물리적 블럭들의 다수 메모리 어레이들에 있는 특정 파티션(예컨대, 이는 미리 정해지거나 환경에 적합하도록 동작 중에 정해질 수 있다)에 저장할 수 있다. 이 특정 파티션은, 본 발명에서 설명된 바와 같이, 다수의 요인들에 기초하여 결정될 수 있다. 그러한 요인들은, 한정이 아니라 그 예로서, 마모(예컨대, 개별 메모리 어레이들/블럭들/셀들이 경험하는 쓰기/소거 싸이클들의 횟수), 개별 메모리 블럭/어레이의 셀들이 싱글 레벨 메모리 셀들인지 또는 멀티 레벨 메모리 셀들인지에 관한 정보 및/또는 블럭/어레이의 메모리 셀의 유형 등을 포함할 수 있다.
한정이 아니라 그 예로서, 메모리 셀들의 다수의 물리적 블럭들은 비-휘발성 NAND 또는 NOR 구조로 배치될 수 있다. 일부 실시예들에서, 고체상태 소자의 제어부는 시작부터 끝까지 규정된 데이터 세트를 다수의 연속적인 물리적 블럭들에 저장할 수 있다. 예를 들면, 연속적인 물리적 블럭들은 물리적 블럭들의 메모리 어레이들의 특정 파티션에 의해 한정될 수 있다. 일부 실시예들에서, 규정된 데이터 세트는, 본 명세서에서 설명된 바와 같이, 부팅 이미지가 될 수 있다. 일부 실시예들에서, 규정된 데이터 세트는, 본 명세서에 설명된 바와 같이, 다수의 운영 시스템들을 설치 및/또는 개시하는 명령들이 될 수 있다. 규정된 데이터 세트의 실시예들은 그렇게 한정되지 않는다.
고체상태 소자의 제어부는, 일부 실시예들에서, 원자 조작이 완료된 후에, 규정된 데이터 세트에 액세스하여 다수의 어레이들에 저장할 수 있다. 당 업계의 기술 분야에서 통상의 기술을 가진자가 이해하듯이, 일련의 조작들은 두 가지 조건들이 충족될 때 원자 조작으로 간주될 수 있다. 첫째, 일련의 모든 조작들이 완료될 때까지, 다른 프로세스는 검출할 수 없도록 이루어진 변경에 대하여 알 수 없다. 둘째, 어떤 조작들이 실패한 경우, 모든 조작들은 중단되고 시스템의 상태는 그 동작들이 시작되기 전의 상태로 복원된다. 본 발명에서, 원자 조작 방식으로 규정된 데이터 세트에 액세스함으로써, 예를 들면 규정된 데이터 세트의 불완전한 업데이트 및/또는 설치를 초래할 수 있는 액세스 종료 및/또는 조기 중단을 방지할 수 있다. 원자 조작이 아닌 경우에는, 중대한 데이터의 불완전한 쓰기로 인해 수많은 부정적 결과가 초래될 수 있다. 또한, 일부 실시예들에서, 고체상태 소자의 제어부는 원자 조작이 완료될 때까지 어레이들에서 최종의 기지의-양호한 데이터 복사본에 포인터를 배정할 수 있으며, 여기서 포인터는 최종의 기지의-양호한 데이터 복사본에서 수행되는 데이터 읽기를 명령한다. 최종의 기지의 양호한 객체에 배정된 포인터가 제공되고 유지될 수 있다. 즉, 쓰기 프로세스가 성공적으로 완료될 때까지, 객체의 읽기 시도는 최종의 기지의-양호한 객체에 배정된 포인터에 의해 명령될 수 있다.
이외에도, 다양한 실시예들에서, 고체상태 소자는 상기 고체상태 소자에서 다수의 고체상태 메모리 어레이들에 연결된 제어부를 포함할 수 있으며, 이 고체상태 소자에서 각 어레이는 메모리 셀들의 다수의 물리적 블럭들을 구비한다. 다양한 실시예들에서, 각 어레이는, 규정된 데이터 세트에 단일 객체로서 액세스하도록 구성된 고체상태 소자의 제어부에 의하여 포맷될 수 있으며, 여기서 상기 규정된 데이터 세트는 한 번 이상 반복되고 액세스 되며, 한 번 이상 반복되고 액세스 된 데이터 세트의 다수의 복사본을 다수 어레이들의 특정 위치들에 단일 객체로서 저장한다. 규정된 데이터 세트를 한 번 이상 반복하고 액세스하는 것은, 한정이 아니라 그 예로서, 본 명세서에 설명된 바와 같이, 호스트로부터 그리고/또는 그러한 명령들의 네트워크 제공자로부터 프로그램 명령들의 하나 이상의 복사본들을 다운로드 받는 것을 포함할 수 있다.
고체상태 소자의 제어부는, 일부 실시예들에서, 다수의 어레이들에서 물리적으로 서로 다른 어레이에 다수의 복사 데이터의 각각을 저장할 수 있다. 물리적으로 다른 어레이에 저장함으로써, 어느 한 어레이에 국한된 결함들이 물리적으로 다른 어레이에 저장된 중대한 데이터를 훼손하지 못하도록 한다. 그러나, 어떤 실시예에 있어서, 공간 및/또는 비용이나 기타 다른 사항들을 고려하여 다수의 어레이들은 하나로 될 수 있다. 앞서 설명한 바와 같이, 일부 실시예들에서, 고체상태 소자의 제어부는 단일 객체를 시작부터 끝까지 다수의 인접한 물리적 블럭들 내에서 읽을 수 있다.
쓰기 객체의 다수의 복사본들은 저장될 수 있다(예컨대, 동시에 또는 순차적으로). 플래시 메모리 소자의 경우, 상기 복사본들은 전체적인 신뢰성에 기여하기 위하여 물리적으로 독립된 메모리 어레이들에 저장될 수 있다. 다양한 실시예들에서, 상기 객체는 다양한 어레이의 메모리 셀들 내에 그리고/또는 사이에 가장 신뢰할 수 있는 것으로 결정된 메모리 부품들에 저장될 수 있다. 예를 들면, 상기 데이터는 둘 이상보다는 메모리 셀당 일 비트를 현재 저장하고 있고 그리고/또는 저장할 수 있는 부품들에 저장될 수 있다.
고체상태 소자의 제어부는, 일부 실시예들에서, 다른 물리적 블럭들보다 더 신뢰할 수 있는 것으로 결정된 어레이의 물리적 블럭들에 다수의 복사본들 중 적어도 하나를 저장할 수 있다. 예를 들면, 더 신뢰할 수 있는 것으로 결정된 어레이의 물리적 블럭들은 싱글 레벨 메모리 셀들을 구비하는 물리적 블럭들이 될 수 있다. 이러한 싱글 레벨 메모리 셀들은 단지 하나의 데이터 비트만을 저장할 수 있거나, 또는 이들은 하나 이상의 데이터 비트들을 보유할 수 없는 멀티 레벨 메모리 셀들이 될 수 있다. 어떤 경우에, 하나의 데이터 비트만을 가진 셀이 셀 읽기에 영향을 미치는 전하 레벨의 현저한 시프트 가능성이 덜하기 때문에 더 신뢰할 수 있다. 일부 실시예들에서, 더 신뢰할 수 있는 것으로 결정된 어레이의 물리적 블럭들은, 다른 물리적 블럭들보다 더 적은 횟수로 사용된 메모리 셀들을 구비한 물리적 블럭들이 될 수 있다(예컨대, 보다 적은 쓰기/소거 주기들을 경험한 메모리 블럭들/셀들). 더 신뢰할 수 있는 어레이의 물리적 블럭들을 결정하는 방식은 방금 제공된 예들에 의하여 한정되지 않는다.
액세스된 데이터가 한 번 이상 반복되고 액세스된 후에는, 일부 실시예들에서, 고체상태 소자의 제어부는 단일 객체를 어레이에 저장하기 전에 한 번 이상으로 반복적으로 복사된 다수의 데이터 복사본들을 독립적으로 검증할 수 있다. 독립적으로 검증하는 것은 본 명세서에서 설명된 동작들로서 수행될 수 있다. 따라서, 일부 실시예들에서는 고체상태 소자의 제어부가 단일 객체를 어레이에 저장하기 전에 발견된 다수의 오류들을 판독하여 독립적으로 정정할 수 있다. 데이터 반복의 검증을 완료한 후, 고체상태 소자의 제어부는, 이전의 최종의 기지의-양호한 복사본을 대체하는 새로운 최종의 기지의-양호한 복사본으로서, 한 번 이상의 데이터 반복으로 만들어진 특정한 복사본에 포인터를 배정할 수 있다. 또한 고체상태 소자의 제어부는, 호스트에 의한 어떠한 읽기도 새로운 최종의 기지의-양호한 복사본에 배정된 포인터에 의해 지시되므로 호스트에 쓰기 완료 통지를 보낼 수 있다.
전체의 객체가 수신된 후, 복사본들 각각은 독립적으로 검증된다. 검증은 적어도 전체의 객체를 읽고 오류를 정정하는 것을 포함할 수 있다. 또한, 고체상태 메모리 어레이에 객체를 저장하는 것이 허용되기 전에 특정한 수보다 적은 수의 읽기 오류들이 검출되도록 하는 임계값들이 구현될 수 있다.
또한, 단-대-단(end-to-end) 데이터 무결성 검사(예컨대, 주기적 중복성시 검사(CRC))가 구상될 수 있다. 일부 실시예들에서, CRC는 고체상태 메모리 소자로 전송하기 전에 호스트에 의해 내장될 수 있다. 요약하면, CRC 조작은 수학적 계산법을 사용하여 전송동작 후에 데이터 무결성을 검증한다. CRC는 어떤 길이의 데이터 스트림을 입력으로서 간주하고, 보통 32 비트 정수인, 특정한 공간 값을 출력으로서 산출하는 한 가지 유형의 기능이다. 용어 CRC는 상기 기능 또는 상기 기능의 출력을 표시한다. CRC는 전송 또는 저장 중에 우발적 데이터 변경을 검출하는 검사합(checksum)으로 사용될 수 있다. CRC는 이진법의 하드웨어에서 구현하기가 간단하고, 수학적으로 분석하기가 용이하며, 전송 채널에서의 잡음으로 야기되는, 예컨대, 통상의 오류들을 검출하는데 특히 좋기 때문에 널리 쓰이고 있다.
본 명세서에 제공된 그 설명에 따라, 다양한 실시예들에서, 시스템은 시스템을 제어하기 위하여 동작가능하게 호스트에 연결되도록 구성된 호스트 제어부를 포함할 수 있다. 한정이 아니라 그 예로서, 그러한 호스트는, 본 명세서에서 설명된 바와 같이, 휴대용이든 그렇지 않든간에, 컴퓨팅 장치들과 시스템들의 소기의 동작성을 유지하는 것을 포함할 수 있다. 호스트 제어부는 메모리 셀들의 다수의 고체상태 물리적 메모리 블럭들을 구비하는 제어부에 동작가능하게 연결되도록 구성될 수 있다. 또한, 고체상태 소자의 제어부는 연속적인 쓰기 및 읽기 동작 중에 규정된 데이터 세트를 단일 객체로서 액세스하고 관리하도록 구성될 수 있다.
고체상태 소자의 제어부는, 일부 실시예들에서, 물리적으로 분리된 메모리 블럭들에 쓰는 것에 대한 일단의 규칙들에 의하여 결정된 다수의 메모리 블럭들에 다수의 복사본들 각각이 별도로 저장되도록 단일 객체의 복수 복사본들을 저장할 수 있다. 예를 들면, 고체상태 소자의 제어부는, 상기 일단의 규칙에 따라, 메모리 셀들의 다수의 물리적 메모리 블럭들의 특정한 파티션에 단일 객체의 복수 복사본들을 저장할 수 있다. 따라서, 고체상태 소자의 제어부는, 일부 실시예들에서, 단-대-단 데이터 무결성을 위하여 상기 다수의 물리적 메모리 블럭들에 있는 특정 파티션에 단일 객체의 다수 복사본들 각각을 저장할 수 있다.
이외에, 또는 택일적으로, 고체상태 소자의 제어부는, 일부 실시예들에서, 논리적 블럭 어드레싱에 의해 결정된 다수의 물리적 블럭들에 쓰기를 할 수 있다. 따라서, 고체상태 소자의 제어부는, 일부 실시예들에서, 특정한 논리적 블럭 어드레스들에 저장할 수 있다.
전술된 바와 같이, 블럭 지향 메모리 소자들은 일반적으로, 파일 내의 논리적 블럭들의 수 및/또는 블럭들이 읽히고 그리고/또는 쓰여지는 순서를 알 수 있는 능력이 없기 때문에, 객체 지향 메모리 시스템들에 관하여 본 명세서에서 설명된 범위의 동작들 및/또는 서비스들을 수행할 수 없을 수 있다. 블럭 지향 메모리 소자들은 일반적으로 읽기/쓰기 명령들에만 응답한다. 그럼에도 불구하고, 본 명세서에서 설명된 바와 같이, 호스트와 고체상태 소자, 둘 모두가 특정한 논리적 블럭 어드레스들에 배정된 블럭 읽기와 쓰기에 관련된 일단의 규칙들을 따를 때, 객체 지향 고체상태 소자들에 관하여 본 명세서에서 설명된 다수의 동작들 및/또는 서비스들이 모방(emulate)될 수 있다. 그러한 모방은 블럭 지향 고체상태 소자들이 정해진 방식으로 데이터를 취급할 때 달성될 수 있다.
예를 들면, 블럭 지향 장치는 상기 데이터를 위하여 준비해 둘 일련의 블럭 번호들을 규정할 수 있다. 데이터는 특정한 순서로 특정한 일련의 블럭들에 저장될 수 있으며, 호스트는 고체상태 소자에게 마지막 데이터 블럭의 지시표식을 제공한다. 고체상태 소자는, 필요시 최종 기지의-양호한 데이터에의 액세스를 제공할 뿐만 아니라, 다수의 데이터 복사본들을를 관리할 수도 있다. 그와 같이 블럭 지향 배치로 데이터를 저장함으로써, 규정된 데이터 세트의 읽기는 객체 지향 고체상태 소자의 경우와 같이, 시작부터 끝까지 연속적으로 실행될 수 있을 것이다.
따라서, 본 명세서에 설명된 시스템은, 다양한 실시예들에서, 본 명세서에 설명된 바와 같이, 시스템을 관리하기 위하여 동작가능하게 호스트에 연결되도록 구성된 호스트 제어부를 포함할 수 있다. 호스트 제어부는, 다양한 실시예들에서, 메모리 셀들의 다수의 고체상태 물리 메모리 블럭들을 구비하는 고체상태 소자의 제어부에 동작가능하게 연결되도록 구성될 수 있다. 고체상태 소자의 제어부는, 규정된 데이터 세트를 특정한 논리적 블럭 어드레스들에 저장하기 위하여 호스트 제어부와 고체상태 소자 제어부가 일단의 규칙들을 따를 때 연속적인 쓰기 및 읽기 동작 동안 하나의 규정된 데이터 세트를 블럭 지향 방식으로 액세스하고 취급하도록 구성될 수 있다.
호스트 제어부와 고체상태 제어부가 따르는 상기 일단의 규칙들에 의하여, 다양한 실시예들에서, (예컨대, 블럭 지향 메모리에 부합되는) 다수의 고체상태의 물리적 메모리 블럭들에서 별도의 비분할된 물리적 블럭들에 규정된 데이터 세트의 쓰기를 할 수 있다. 그러나, 호스트 제어부와 고체상태 소자 제어부가 따르는 일단의 규칙들은, 다양한 실시예들에서, 규정된 데이터 세트를 저장하는 특정한 일련의 물리적 블럭들의 개수를 포함할 수 있다. 그러한 규칙들은 규정된 데이터 세트의 쓰기가 특정한 순서대로 수행되도록 명령할 수 있다. 그러한 규칙들은 또한 호스트 제어부가 고체상태 소자 제어부에게 지시표식을 제공하여 규정된 데이터 세트의 마지막 블럭을 식별하도록 명령할 수 있다. 하나 이상의 규칙들을 따름으로써, 고체상태 소자 제어부는, 마치 규정된 데이터 세트가 객체 지향 방식으로 저장되어 있었던 것처럼, 규정된 데이터 세트의 시작부터 끝까지 연속적으로 규정된 데이터 세트를 읽을 수 있다.
일부 실시예들에서, 고체상태 소자 제어부는 다수의 복사본들 각각이 일단의 규칙들에 의하여 결정된 다수의 메모리 블럭들에 별도로 저장되도록 규정된 데이터 세트의 다수의 복사본을 저장할 수 있다. 또한, 고체상태 소자 제어부는, 일부 실시예들에서, 규정된 데이터 세트의 다수의 복사본을 관리하여 규정된 데이터 세트의 최종 기지의-양호한 복사본들에 대한 호스트 제어부의 읽기 액세스를 제공하도록 할 수 있다.
도 3은 본 발명의 하나 이상의 실시예들에 따른 객체 지향 메모리를 도시하는 블럭도이다. 명시적으로 기재되지 않는 한, 본 명세서에 설명된 상기 실시예들은 특정 순서 또는 차례에 구속되지 않는다. 또한, 상술한 실시예들의 일부 또는 그것의 부품들은 동일한 시점, 또는 최소한 실질적으로 동일한 시점, 특정한 때에 발생하거나 동작될 수 있다.
도 3에 도시된 실시예는, 블럭(310)에 도시된 바와 같이, 하나의 규정된 데이터 세트를 원자 조작 방식으로 단일 객체로서 액세스하는 것을 포함하며, 여기서 이러한 액세스는 호스트와는 다른 소스로부터 수행된다. 다양한 실시예들에서, 이러한 소스는, 한정이 아니라 그 예로서, 도 1에 관하여 설명된 바와 같이 네트워크(102)가 될 수 있다. 일부 실시예들에서, 호스트와는 다른 소스로부터 데이터를 액세스하는 것은 모바일 시스템에서 데이터를 액세스하는 것을 포함할 수 있으며, 여기서 모바일 시스템은, 디지털 카메라, 디지털 음악 장치, 네트워크 장치, 이동전화기, 개인 정보 단말기, 랩탑 컴퓨터, 그리고 다른 가능한 모바일 시스템들을 포함하는 그룹에서 선택될 수 있다.
원자 조작은 본 명세서에서 어디에 기술된 바와 같이 수행되도록 의도된 것이다. 일부 실시예들에서, 규정된 데이터 세트를 원자 조작 방식으로 액세스하는 것은 규정된 데이터 세트에의 초기 액세스가 완료될 때까지 그러한 데이터의 최종의 기지의 양호한 버전에 배정된 포인터를 사용하는 것을 포함할 수 있다.
블럭(320)에 도시된 바와 같이, 상기 실시예는, 상기 규정된 데이터 세트를 시스템에 다수의 고체상태 메모리 블럭들을 포함하는 고체상태 소자의 제어부에 의해 포맷된 다수의 고체상태 메모리 블럭들에 배정된 단일 객체로서 저장하는 것을 포함한다. 일부 실시예들에서, 상기 저장은 원자 조작이 일단 완료되면 수행될 수 있다. 규정된 데이터 세트를 저장하는 것은, 일부 실시예들에서, 다수의 복사본들 각각에서 원자 조작을 독립적으로 수행하는 것이 완료된 후에 별도의 메모리 블럭들 각각에 규정된 데이터 세트의 다수의 복사본들을 저장하는 것을 포함할 수 있다.
상기 고체상태 소자는, 일부 실시예들에서, 특정 기간 동안 규정된 데이터 세트의 새로운 저장 버전에 대한 다수의 읽기 요청들을 검출하는 즉시, 규정된 데이터 세트의 이전 저장 버전을 호스트에게 제공할 수 있다. 예를 들면, 다양한 실시예들에서, 고체상태 소자 또는 호스트는 시스템의 부팅에 필요한 새롭게 저장된 부팅 이미지에 대한 다수의 읽기 요청들을 검출할 수 있다. 결과적으로, 일부 실시예들에서, 고체상태 소자는 호스트에게 부팅 이미지의 최종의 기지의-양호한 버전을 제공할 수 있다.
본 발명의 교의에 따르면, 다양한 실시예들에서, 객체 지향 메모리는 규정된 데이터 세트를 단일 객체로서 호스트와는 다른 소스로부터 액세스하는 것과, 액세스된 규정된 데이터 세트에 대한 읽기-검증 동작을 수행하는 것을 포함할 수 있다. 특정한 읽기-검증 동작들의 실시예들은 아래에서 더욱 상세하게 설명된다. 상기 실시예는 상기 규정된 데이터 세트를 단일 객체로서 다수의 고체상태 메모리 블럭들을 포함하는 고체상태 소자에 동작가능하게 연결된 제어부에 의해 포맷된 다수의 메모리 블럭들에 저장하는 것을 포함할 수 있다.
일부 실시예들에서, 규정된 데이터 세트를 단일 객체로서 저장하는 것은 읽기-검증 동작이 일단 완료되면 수행된다. 액세스된 데이터에 대하여 읽기-검증 동작을 수행하는 것은, 일부 실시예들에서, 새로운 데이터의 액세스된 규정된 데이터 세트에 대한 읽기-검증 동작이 완료되고 상기 규정된 새로운 데이터 세트의 저장이 완료될 때까지 이전에 저장된 규정된 데이터 세트의 최종의 기지의-양호한 버전에 배정된 포인터를 사용하는 것을 포함할 수 있다.
객체가 신뢰할 수 있게 쓰여지고 검증된 것으로 고체상태 소자가 결정하였다면, 상기 고체상태 소자는 쓰기 완료 통지를 호스트에게 전송할 수 있다. 그러한 통지가 호스트에게 전송된 후의 읽기는 이전의 기지의-양호한 객체보다는 새로운 객체에 대하여 실행될 것이다. 택일적으로, 상기 호스트는, 전이가 발생하는 것을 허용하기 전에, 고체상태 소자에 대하여 명령, 레지스터 설정 또는 이와 유사한 통지를 통하여 상기 전이를 제어할 것을 요구할 수 있다.
읽기-검증 동작은, 일부 실시예들에서, 상기 복사본들의 각각에 대한 쓰기 동작이 수행되기 전에 규정된 새로운 데이터 세트의 다수의 복사본들에 대하여 독립적으로 수행되며, 이어서, 읽기-검증 동작이 특정한 개수보다 더 적은 수의 오류를 검출한, 상기 규정된 새로운 데이터 세트의 복사본들을 저장한다. 일부 실시예들은, 읽기-검증 동작이 일단 성공적으로 완료되면 상기 규정된 새로운 데이터 세트의 다수의 복사본들을 저장하는 것을 포함할 수 있다. 일부 실시예들은, 상기 규정된 새로운 데이터 세트의 다수의 복사본들 중 다른 하나에서 적어도 특정한 수의 오류들이 검출될 때 읽기-검증된 복사본에 대하여 자동적으로 페일오버(fail-over)를 준비하는 것을 포함할 수 있다. 특히, 일부 실시예들은, 이전에 읽기-검증되어 저장된, 상기 규정된 새로운 데이터 세트의 다른 사본에서 적어도 특정한 수의 새로운 오류들이 검출될 때 상기 규정된 새로운 데이터 세트의 읽기-검증된 복사본에 대하여 자동적으로 페일오버(fail-over) 동작을 준비하는 것을 포함할 수 있다. 읽기-검증 동작을 수행하는 실시예들은 주기적인 중복성 검사(CRC) 동작을 수행하는 것을 포함할 수 있다. 읽기-검증 동작들은 그렇게 한정되지 않는다.
오류 검출 동작들은 송신기로부터 수신기로의 데이터 전송 중 잡음 또는 감쇄로 인한 오류들의 존재를 검출할 수 있다. 추가적으로, 오류 정정은 원래의 오류 없는 데이터를 재구성할 수 있다. 요약하면, 한정이 아니라 그 예로서, 그러한 예들은 송신기가 데이터를 전송하고, 수신기가 오류를 검사하는데 사용할 수 있는 오류 검출 코드도 전송하고, 오류 데이터의 재전송을 요청하는 자동 반복 요청(ARQ : automatic repeat-request)을 포함할 수 있다. 일부의 경우, 상기 요청은 수신기가 정확하게 수신된 데이터의 수신확인 통지(ACK)를 전송하고 송신기는 합당한 기간 내에 수신확인 통지되지 않은 모든 것을 재전송하는 것에 내포되어 있다.
다른 예는 송신기가 오류 정정 코드(ECC)로 데이터를 부호화하고 암호화된 메시지를 전송하는 순방향 오류 정정(FEC : forward error correction)이다. 수신기는 송신기에 어떤 메시지도 되보내지 않을 것이다. 수신기는 받은 그대로를 "가장 가능성이 높은" 데이터로 복호화할 수 있다. 이러한 코드들은, 수신기가 데이터를 잘못 해독하게 하는 대량의 잡음을 처리하도록 설계된다. 그 둘을 조합함으로써, 사소한 오류들은 재전송없이 정정하고 주요한 오류들은 검출되고 재전송이 요청되도록 할 수 있다.
본 발명의 일부 실시예들은, 규정된 데이터 세트의, 이전에 읽기-검증되어 저장된 다수의 복사본들 중 적어도 하나에서 특정한 수의 오류들이 검출될 때 오류 정정 동작을 수행하는 것을 포함할 수 있다. 어떤 실시예들은, 규정된 데이터 세트의, 아직 읽기-검증되지 않았거나 저장된 다수의 복사본들 중 적어도 하나에서 특정한 수의 오류들이 검출될 때 오류 정정 동작을 수행한다. 일부 실시예들에서, 오류 정정 동작을 수행하는 것은 규정된 데이터 세트의, 이전에 읽기-검증되어 저장된 다수의 복사본들에 대한 비트별 비교를 수행하는 것을 포함할 수 있으며, 여기서, 고체상태 소자는 일치하는 복사본들의 과반수를 선택함으로써 다수의 복사본들 중에서 하나 이상의 복사본을 유효화한다(validate).
다른 보호 조치들은 규정된 데이터 세트(예컨대, 본 발명의 기술 분야에서 통상의 기술을 가진 자가 이해하는 바와 같이, 해시 함수들)의 산술적 신호의 계산을 포함할 수 있다. 고체상태 소자는, 예를 들면, 해시 함수를 계산하고 그 결과를 완료 통지 응답의 일부로서 호스트로 되돌려 줄 수 있다. 그러면 호스트는 상기 신호가 정확한지의 여부를 결정할 수 있다. 객체를 읽는 것은, 호스트가 인증 프로그램의 일부로서 사용할 수 있는 데이터 신호(예컨대, 해시 함수)를 또한 생성할 수 있다. 상기 신호는 객체 데이터를 전송하기 전에 또는 객체 데이터가 전송되고 있을 때 계산되고, 그래서 그 신호는 호스트가 고체상태 소자로부터 읽기는 것이 가능하다.
요약하면, 해시 함수는 대량의 그리고 가능하면 가변적 규모의 데이터 양을 작은 데이터로, 통상 어레이에서 인덱스로 사용되는 단일 정수로 변환하는 수학적 함수 또는 잘-규정된 절차이다. 해시 함수들은 표 찾아보기 또는 데이터 비교 작업을 신속하게 처리하는데 대부분 사용된다. 해시 함수들은 검사합들, 검사 숫자들, 지문들, 무작위 추출 함수들, 오류 정정 코드들, 그리고 암호 해시 함수에 관련된다. 이러한 개념들은 어떤 범위와 중첩되지만, 각각은 그 고유의 용도들과 필요 조건들을 가지고 있으며 이들 모두는 본 발명의 범위내에 있다.
(예컨대, 파워업 상태에서 자동으로) 산술적인 신호를 계산하는 장치를 구비하는 것은 부호화된 데이터를 실행하기 전에 그 데이터를 인증하는데 사용될 수 있다. 이러한 인증은, 예컨대 네트워크 및/또는 다른 조작들에 대한 액세스를 구하기 위하여 해커들이 코드를 변경하는 것을 방지함으로써 시스템의 전체적인 보안성을 향상시킬 수 있다.
본 발명의 어떤 실시예들은, 소스로부터 데이터를 액세스하기 전에, 규정된 데이터 세트에 산술적인 신호를 제공하는 것을 포함할 수 있으며, 여기서, 산술적인 신호는 오류 검출을 위해 고체상태 소자에 의해 소스로 되돌려 제공된다. 추가적으로 또는 택일적으로, 어떤 실시예들은 호스트로부터 데이터를 액세스하기 전에 규정된 데이터 세트에 산술적인 신호를 제공하는 것을 포함할 수 있으며. 여기서, 산술적인 신호는 오류 검출을 위해 고체상태 소자에 의해 호스트로 되돌려 제공된다.
이러한 고체상태 소자는, 예를 들면, 해시 함수를 계산하고 그 결과를 완료 통지의 일부로서 호스트로 되돌려 보낼 수 있다. 그러면 호스트는 상기 신호가 정확한지의 여부를 결정할 수 있다. 객체를 읽는 것은 호스트가 인증 프로그램의 일부로서 사용할 수 있는 데이터 신호(예컨대, 해시 함수)를 또한 생성할 수 있다. 상기 신호는 객체 데이터를 보내기 전에 또는 객체 데이터가 전송되고 있을 때 계산되며. 따라서, 상기 신호는 호스트가 고체상태 소자로부터 읽는 것이 가능하다.
결 론
본 발명은 고체상태 소자에서 객체 지향 메모리에 관한 방법들, 장치들 및 시스템들을 포함한다. 고체상태 소자들에 포함된 객체 지향 메모리를 위한 방법의 하나의 실시예는 원자 조작 방식으로 하나의 규정된 데이터 세트를 단일 객체로서 액세스하는 것을 포함하며, 여기서, 상기 액세스는 호스트와 다른 소스로부터 이루어진다. 또한 이 실시예는 상기 규정된 데이터 세트를 단일 객체로서 다수의 고체상태 메모리 블럭들을 포함하는 고체상태 소자의 제어부에 의해 포맷된 상기 고체상태 메모리 블럭들에 저장하는 갓을 또한 포함한다.
부품이 다른 부품"에" 있거나 다른 부품에 "연결"되거나 다른 부품과 "결합된" 것으로 지칭될 때, 그것은 다른 부품"에" 직접 있거나 다른 부품에 직접 "연결"되거나 다른 부품과 직접 "결합된" 것으로, 또는 중재하는 부품들이 있을 수 있다는 것이 이해될 것이다. 대조적으로, 부품이 다른 부품"에" 직접 있거나 다른 부품에 직접 "연결"되거나 다른 부품과 직접 "결합된" 것으로 언급될 때, 중재 부품들이나 계층들은 존재하지 않는다. 제 1 부품이 다른 부품에 "연결"되거나 다른 부품과 "결합된" 것으로 인급될 때, 제 1 부품은 두 개의 부품들 중 다른 하나에 물리적으로 부착된 것으로 이해될 것이다. 대조적으로, 부품들이 "동작가능하게 연결된" 것으로 언급될 때, 그 부품들은 다른 하나의 부품과 통신하고 있는 것이다. 본 명세서에서 사용된 바와 같이, 고체상태 제어부가 동작을 수행할 수 있다고 할 때, "~하도록 구성된 제어부" 또는 "프로세서를 통하여 실행되도록 구성된 제어부"에 대한 축약된 대체어로 이해될 것이다. 본 명세서에서 사용된 바와 같이, 단독의 "또는"이라는 용어는, 달리 함축적으로 언급되지 않으면, 배타적으로 사용되기 보다는, 다수의 관련된 요소들을 포함한다는 의미이다. 또한 본 명세서에 사용된 바와 같이, 용어 "및/또는"은 하나 이상의 관련된 명시 품목들의 어느 것 및 모든 조합들을 포함한다.
용어들 "제 1", "제 2" 등이 다양한 부품들을 기술하기 위하여 본 명세서에서 사용될 수 있지만, 이러한 부품들은 이러한 용어들에 의하여 제한되지 않아야 한다는 것으로 이해될 것이다. 이러한 용어들은 오직 하나의 부품을 다른 부품과 구별하는데 사용된다. 따라서, "제 1 부품"은 본 발명의 교의를 벗어나지 않고 "제 2 부품"으로 호칭될 수도 있다.
본 발명의 상세한 설명에서, 본 명세서의 일부를 형성하는 첨부된 도면을 참조하며, 여기서, 본 발명의 하나 이상의 실시예들이 어떻게 실시될 수 있는지를 도시를 통하여 보여 준다. 이러한 실시예들은 당 업계의 기술 분야에서 통상의 기술을 가진 자가 충분히 실시할 수 있는 정도로 상술 되어 있으며, 다른 실시예들이 사용될 수도 있고, 본 발명의 범위 내에서 프로세스, 전기적/구조적 변경이 가능함을 이해할 것이다.
살펴보아 알게 되는 바와 같이, 다양한 실시예들에서 도시된 부품들은 추가되거나 교환 또는 제거될 수 있음으로써 본 발명의 다수의 추가 실시예들을 제공할 수 있다. 또한, 살펴보아 알게 되는 바와 같이, 도면에 제공된 부품들의 비율과 상대적 축척은 본 발명의 실시예들을 도시하기 위한 것일 뿐 제한하는 의미로 취급되어서는 안 된다.
본 명세서에서 사용된 용어들은 단지 특정한 실시예들을 설명하기 위한 것으로서 본 발명을 제한하려는 의도로 표현된 것들이 아니다. 본 명세서에서 사용된 바와 같이, 단수형의 형식들 "하나의", "한", "그" 등은, 그것에 관한 별도의 명백한 기재가 없다면, 그들의 복수 요소들도 포함되는 것으로 이해하여야 한다. 또한, 용어 "포함하다" 및 "포함하는" 는은 서술된 특징들,정수들, 단계들, 동작들, 요소들 또는 부품들의 존재를 열거하는데 쓰일 뿐, 하나 이상의 특징들, 정수들, 단계들, 동작들, 요소들, 부품들 또는 그것들의 그룹들의 존재나 추가를 배제하지 않는다.
달리 정의되지 않는 한, 본 명세서에서 사용된 모든 용어들(기술적 및 과학적인 용어들을 포함하는)은 당 업계의 기술 분야에서 통상의 기술을 가진 자가 상식적으로 이해하는 정도와 같은 의미로 보아야 한다. 또한, 용어들은, 일반적으로 사용되는 사전들에서 정의한 바와 같이, 본 발명과 그 관련 분야에 일치하는 의미를 갖는 것으로 해석되어야 하며, 여기서 별도로 정의되지 않는 한 관념적으로 또는 지나치게 형식적인 의미로 해석되어서는 안 된다.
본 명세서에는 특정의 실시예들이 도시되고 설명되었지만, 본 발명의 관련분야에서 통상의 기술을 가진 자라면 동일한 결과를 얻기 위해 기도된 배치들이 앞서 보인 실시예들과 대체될 수 있음을 이해할 수 있다. 본 명세서에 의한 개시는 본 발명의 따른 다양한 실시예들의 응용과 변형을 포함하려는 것으로 이해되어야 한다.
또한, 전술한 내용은 제한적이 아닌 예시적인 형태로 되어 있는 것으로 이해되어야 한다. 전술한 실시예들의 조합들 또는 여기서 설명되지 않는 다른 실시예들도 관련분야에서 통상의 기술을 가진 자에게는 해당하는 기술과 전술한 내용을 참조함으로써 그 실시가 용이할 것이다.
본 발명에 따른 다양한 실시예들의 적용에는 전술한 방법들, 장치들 및 시스템들을, 예를 들면, 다른 종류의 컴퓨팅 시스템들과 모바일 장치들 및/또는 시스템들, 그리고 그와 유사한 장치들에 연관하여 사용하는 다른 응용 분야들이 포함된다. 그러므로, 본 발명에 따른 실시예들의 응용성은 첨부된 특허청구범위에 준하여 그 균등한 정도의 모든 범위를 포괄하는 것으로 이해되어야 한다.
전술한 "발명을 실시하기 위한 구체적 내용"에서, 몇 가지 특징들은 예시를 간소화하기 위하여 하나의 실시예에 함께 묶어 놓았다. 이러한 예시 방법은 본 발명의 개시된 실시예들이 각 청구항에 명백히 언급된 것보다 더 많은 특징들을 사용하여야 한다는 의도를 반영하는 것으로 해석되어서는 안 된다. 오히려, 다음 청구항들이 반영하듯이, 본 발명의 내용은 하나의 개시된 실시예의 모든 특징들에 있는 것은 결코 아니다. 따라서, 다음 청구항들은 본 명세서에 의하여 "발명을 실시하기 위한 구체적인 내용"에 통합되며, 각 청구항은 별개의 실시예로서 독립적으로 유지된다.

Claims (56)

  1. 고체상태 소자들의 객체 지향 메모리를 위한 방법으로서,
    규정된 데이터 세트를, 호스트가 아닌 다른 소스로부터, 원자 조작 방식으로 단일 객체로서 액세스하는 단계; 및
    상기 규정된 데이터 세트를, 다수의 고체상태 메모리 블럭들을 포함하는 고체상태 소자의 제어부에 의해 포맷되는 다수의 고체상태 메모리 블럭들에 상기 단일 객체로서 저장하는 단계를 포함하는, 고체상태 소자들의 객체 지향 메모리를 위한 방법.
  2. 청구항 1에 있어서,
    상기 규정된 데이터 세트를 저장하는 단계 및 액세스하는 단계는 일단 상기 원자 조작이 완료되는 즉시 수행되는, 고체상태 소자들의 객체 지향 메모리를 위한 방법.
  3. 청구항 1에 있어서,
    상기 규정된 데이터 세트를 상기 다수의 메모리 블럭들에 저장하는 단계는, 상기 규정된 데이터 세트의 다수의 복사본들 각각에 대한 원자 조작을 독립적으로 수행하는 것이 완료된 후에 상기 다수의 복사본들을 별도의 메모리 블럭들에 각각 쓰기를 하는 단계를 포함하는, 고체상태 소자들의 객체 지향 메모리를 위한 방법.
  4. 청구항 1 내지 청구항 3 중 어느 한 항에 있어서,
    상기 방법은, 특정한 기간 중에 새롭게 저장된 상기 규정된 데이터 세트의 버전에 대한 다수의 읽기 요청들을 검출하는 즉시 상기 규정된 데이터 세트의 이전에 저장된 버전을 상기 호스트에 제공하는 상기 고체상태 소자를 포함하는, 고체상태 소자들의 객체 지향 메모리를 위한 방법.
  5. 청구항 4에 있어서,
    상기 새롭게 저장된 상기 규정된 데이터 세트의 버전에 대한 다수의 읽기 요청들을 검출하는 단계는 상기 고체상태 소자가 상기 호스트에 의해 관리되는 시스템에서 부팅 동작에 필요한 부팅 이미지의 최종의 기지의-양호한 버전을 상기 호스트에 제공하는 단계를 포함하는, 고체상태 소자들의 객체 지향 메모리를 위한 방법.
  6. 청구항 1 내지 청구항 3 중 어느 한 항에 있어서,
    데이터를 액세스하는 단계는
    디지털 카메라;
    디지털 음악 장치;
    네트워크 장치;
    이동전화기;
    개인 정보 단말기; 및
    랩탑 컴퓨터를 포함하는 그룹으로부터 선택된 모바일 시스템에서 데이터를 액세스하는 단계를 포함하는, 고체상태 소자들의 객체 지향 메모리를 위한 방법.
  7. 고체상태 소자들의 객체 지향 메모리를 위한 방법으로서,
    규정된 데이터 세트를, 호스트가 아닌 다른 소스로부터 단일 객체로서 액세스하는 단계;
    상기 액세스된 규정된 데이터 세트에 대하여 읽기-검증 동작을 수행하는 단계; 및
    상기 규정된 데이터 세트를, 다수의 고체상태 메모리 블럭들을 포함하는 고체상태 소자에 동작가능하게 연결된 제어부에 의해 포맷되는 다수의 메모리 블럭들에 상기 단일 객체로서 저장하는 단계를 포함하는, 고체상태 소자들의 객체 지향 메모리를 위한 방법.
  8. 청구항 7에 있어서,
    상기 규정된 데이터 세트를 상기 단일 객체로서 저장하는 단계는 상기 읽기-검증 동작이 일단 완료되는 즉시 수행되는, 고체상태 소자들의 객체 지향 메모리를 위한 방법.
  9. 청구항 7에 있어서,
    상기 액세스된 데이터에 대해 상기 읽기-검증 동작을 수행하는 단계는, 상기 액세스된 규정된 새로운 데이터 세트에 대한 상기 읽기-검증 동작이 완료되고 상기 규정된 데이터 세트의 저장이 완료될 때까지 이전에 저장된 규정된 데이터 세트의 최종의 기지의-양호한 버전에 배정된 포인터를 사용하는 단계를 포함하는, 고체상태 소자들의 객체 지향 메모리를 위한 방법.
  10. 청구항 7 내지 청구항 9 중 어느 한 항에 있어서,
    상기 방법은, 상기 규정된 새로운 데이터 세트의 다수의 복사본들의 각각에 대한 읽기 동작이 수행되기 전에 상기 복사본들에 대한 상기 읽기-검증 동작을 독립적으로 수행하고 이어서 상기 읽기-검증 동작이 특정한 수의 오류들보다 적은 수의 오류들을 검출하였던 상기 규정된 새로운 데이터 세트의 복사본들을 저장하는 단계를 포함하는, 고체상태 소자들의 객체 지향 메모리를 위한 방법.
  11. 청구항 10에 있어서,
    상기 방법은 일단 상기 읽기-검증 동작이 성공적으로 완료되는 즉시 상기 규정된 새로운 데이터 세트의 다수의 복사본들을 저장하는 단계를 포함하는, 고체상태 소자들의 객체 지향 메모리를 위한 방법.
  12. 청구항 11에 있어서,
    상기 방법은 상기 규정된 새로운 데이터 세트의 다수의 복사본들의 다른 하나에서 적어도 특정한 수의 오류들이 검출될 때 상기 데이터의 읽기-검증된 복사본에 자동 페일-오버를 제공하는 단계를 포함하는, 고체상태 소자들의 객체 지향 메모리를 위한 방법.
  13. 청구항 11에 있어서,
    상기 방법은 상기 규정된 새로운 데이터 세트의 이전에 읽기-검증되어 저장된 다른 복사본에서 적어도 특정한 수의 새로운 오류들이 검출될 때 상기 규정된 새로운 데이터 세트의 읽기-검증된 복사본에 자동 페일오버를 제공하는 단계를 포함하는, 고체상태 소자들의 객체 지향 메모리를 위한 방법.
  14. 청구항 7 내지 청구항 9 중 어느 한 항에 있어서,
    상기 읽기-검증 동작을 수행하는 단계는 주기적인 중복성 검사 동작을 수행하는 단계를 포함하는, 고체상태 소자들의 객체 지향 메모리를 위한 방법.
  15. 청구항 7 내지 청구항 9 중 어느 한 항에 있어서,
    상기 방법은 상기 규정된 새로운 데이터 세트의 이전에 읽기-검증되어 저장된 다수의 복사본들 중 적어도 하나에서 특정한 수의 오류들이 검출될 때 오류 정정 동작을 수행하는 단계를 포함하는, 고체상태 소자들의 객체 지향 메모리를 위한 방법.
  16. 청구항 15에 있어서,
    오류 정정 동작을 수행하는 단계는 상기 규정된 데이터 세트의 이전에 읽기-검증되어 저장된 다수의 복사본들의 비트별 비교를 수행하는 단계를 포함하고, 상기 고체상태 소자는 일치하는 복사본들의 과반수에서 선택함으로써 상기 다수의 복사본들 중에서 하나 이상의 복사본들을 유효화하는, 고체상태 소자들의 객체 지향 메모리를 위한 방법.
  17. 청구항 7 내지 청구항 9 중 어느 한 항에 있어서,
    상기 방법은 상기 소스로부터 상기 데이터에 액세스하기 전에 상기 규정된 데이터 세트에 산술적인 신호를 제공하는 단계를 포함하고, 상기 산술적인 신호는 오류 검출을 위하여 고체상태 소자에 의해 상기 소스 및 상기 호스트 중 적어도 하나에 도로 제공되는, 고체상태 소자들의 객체 지향 메모리를 위한 방법.
  18. 고체상태 소자의 다수의 고체상태 메모리 어레이들에 연결된 제어부를 포함하는 고체상태 소자로서,
    각 어레이는 메모리 셀들의 다수의 물리적 블럭들을 구비하고,
    상기 제어부는,
    규정된 데이터 세트에 단일 객체로서 액세스하고;
    상기 규정된 데이터 세트를 상기 단일 객체로서 상기 다수의 어레이들에 저장하도록 구성되는, 고체상태 소자.
  19. 청구항 18에 있어서,
    상기 제어부는 상기 다수의 어레이들에서 메모리 셀들의 물리적 블럭들의 상기 단일 객체를 포맷하는 것을 관리하는 연관된 프로세서를 포함하는, 고체상태 소자.
  20. 청구항 18에 있어서,
    상기 규정된 데이터 세트는 부팅 이미지 또는 운영 시스템을 위해 제공되는, 고체상태 소자.
  21. 청구항 18에 있어서,
    상기 메모리 셀들의 상기 물리적 블럭들의 상기 다수의 메모리 어레이들의 특정한 파티션과,
    메모리 셀들의 다수의 인접한 물리적 블럭들의 시작부터 끝까지 중에서 선택된 위치들에, 상기 규정된 데이터 세트를 저장하도록 상기 제어부가 구성되는, 고체상태 소자.
  22. 청구항 18에 있어서,
    상기 제어부는 원자 조작으로 상기 규정된 데이터 세트에 상기 단일 객체로서 상기 액세스하는 것이 완료될 때까지 상기 어레이들에서 최종의 기지의-양호한 데이터 복사본에 포인터를 배정하도록 구성되고, 상기 포인터는 상기 최종의 기지의-양호한 복사본에 대하여 데이터 읽기가 수행되도록 명령하는, 고체상태 소자.
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
  46. 삭제
  47. 삭제
  48. 삭제
  49. 삭제
  50. 삭제
  51. 삭제
  52. 삭제
  53. 삭제
  54. 삭제
  55. 삭제
  56. 삭제
KR1020127000038A 2009-06-03 2010-05-24 고체상태 소자들의 객체 지향 메모리 KR101369573B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/477,349 2009-06-03
US12/477,349 US8751860B2 (en) 2009-06-03 2009-06-03 Object oriented memory in solid state devices
PCT/US2010/001520 WO2010141058A2 (en) 2009-06-03 2010-05-24 Object oriented memory in solid state devices

Publications (2)

Publication Number Publication Date
KR20120014939A KR20120014939A (ko) 2012-02-20
KR101369573B1 true KR101369573B1 (ko) 2014-03-04

Family

ID=43298356

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127000038A KR101369573B1 (ko) 2009-06-03 2010-05-24 고체상태 소자들의 객체 지향 메모리

Country Status (7)

Country Link
US (2) US8751860B2 (ko)
EP (1) EP2438521B1 (ko)
JP (1) JP5517089B2 (ko)
KR (1) KR101369573B1 (ko)
CN (1) CN102449613B (ko)
TW (1) TWI455126B (ko)
WO (1) WO2010141058A2 (ko)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8583986B2 (en) * 2008-12-17 2013-11-12 Seagate Technology Llc Solid-state memory with error correction coding
US8910002B2 (en) * 2009-08-24 2014-12-09 OCZ Storage Solutions Inc. NAND flash-based storage device with built-in test-ahead for failure anticipation
US8601202B1 (en) * 2009-08-26 2013-12-03 Micron Technology, Inc. Full chip wear leveling in memory device
US8402217B2 (en) 2009-09-15 2013-03-19 Marvell International Ltd. Implementing RAID in solid state memory
US8988800B1 (en) 2009-09-15 2015-03-24 Marvell International Ltd. Error correction for storage devices
US9329948B2 (en) * 2012-09-15 2016-05-03 Seagate Technology Llc Measuring cell damage for wear leveling in a non-volatile memory
US9477484B2 (en) 2013-07-23 2016-10-25 Samsung Electronics Co., Ltd. System and method for boot acceleration of a data processing system wherein a nonvolatile memory is pre-configured before boot time
WO2015116078A1 (en) * 2014-01-30 2015-08-06 Hewlett-Packard Development Company, L.P. Memory data versioning
US9431052B2 (en) 2014-06-26 2016-08-30 Marvell World Trade Ltd. Two dimensional magnetic recording systems, devices and methods
US10169124B2 (en) 2014-12-16 2019-01-01 Samsung Electronics Co., Ltd. Unified object interface for memory and storage system
CA2918136C (en) * 2015-01-19 2023-08-15 Queen's University At Kingston High sum-rate write-once memory
US10296580B1 (en) 2015-09-18 2019-05-21 Amazon Technologies, Inc. Delivering parsed content items
US10127210B1 (en) 2015-09-25 2018-11-13 Amazon Technologies, Inc. Content rendering
US10691750B1 (en) * 2015-09-28 2020-06-23 Amazon Technologies, Inc. Browser configured to efficiently store browsing session state
US10601894B1 (en) 2015-09-28 2020-03-24 Amazon Technologies, Inc. Vector-based encoding for content rendering
US10341345B1 (en) 2015-12-15 2019-07-02 Amazon Technologies, Inc. Network browser configuration
US10359946B1 (en) * 2016-05-03 2019-07-23 Altera Corporation Systems and methods for operating a flash memory in an integrated circuit
CN107797755B (zh) 2016-09-05 2021-01-08 上海宝存信息科技有限公司 固态硬盘系统的原子写入方法以及使用该方法的装置
US10795760B2 (en) * 2017-03-20 2020-10-06 Samsung Electronics Co., Ltd. Key value SSD
US10981576B2 (en) 2017-12-27 2021-04-20 Micron Technology, Inc. Determination of reliability of vehicle control commands via memory test
US10933882B2 (en) 2017-12-27 2021-03-02 Micron Technology, Inc. Determination of reliability of vehicle control commands using a voting mechanism
US10901862B2 (en) * 2018-11-13 2021-01-26 Micron Technology, Inc. High-reliability non-volatile memory using a voting mechanism
US11294721B2 (en) 2019-07-29 2022-04-05 Marvell Asia Pte, Ltd. Object-oriented memory for client-to-client communications

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005339500A (ja) 2004-05-26 2005-12-08 Arm Ltd データ処理装置及び共用資源へのアクセス制御方法

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5140592A (en) * 1990-03-02 1992-08-18 Sf2 Corporation Disk array system
US5623604A (en) * 1992-11-18 1997-04-22 Canon Information Systems, Inc. Method and apparatus for remotely altering programmable firmware stored in an interactive network board coupled to a network peripheral
US6298401B1 (en) * 1997-08-11 2001-10-02 Seagate Technology Llc Object oriented storage device having a disc drive controller providing an interface exposing methods which are invoked to access objects stored in a storage media
US6240498B1 (en) * 1999-01-06 2001-05-29 International Business Machines Corporation Object oriented storage pool apparatus and method
US6591363B1 (en) 1999-12-15 2003-07-08 Roxio, Inc. System for writing incremental packet data to create bootable optical medium by writing boot catalog and boot image onto second track before writing volume descriptors onto first track
US6490662B1 (en) * 2000-04-29 2002-12-03 Hewlett-Packard Company System and method for enhancing the reliability of a computer system by combining a cache sync-flush engine with a replicated memory module
KR100644602B1 (ko) * 2000-10-11 2006-11-10 삼성전자주식회사 플래시메모리를 위한 재사상 제어방법 및 그에 따른플래시 메모리의 구조
JP4808839B2 (ja) * 2000-11-16 2011-11-02 インヴェンサス・コーポレイション メモリシステム
CA2440887A1 (en) * 2001-03-12 2002-09-19 Honeywell International Inc. Method of recovering a flight critical computer after a radiation event
US6535924B1 (en) * 2001-09-05 2003-03-18 Pluris, Inc. Method and apparatus for performing a software upgrade of a router while the router is online
US6704833B2 (en) * 2002-01-04 2004-03-09 Hewlett-Packard Development Company, L.P. Atomic transfer of a block of data
JP4501349B2 (ja) 2003-03-13 2010-07-14 ソニー株式会社 システムモジュール実行装置
JP4300462B2 (ja) * 2003-04-23 2009-07-22 富士フイルム株式会社 情報記録再生方法及び装置
US7320100B2 (en) * 2003-05-20 2008-01-15 Cray Inc. Apparatus and method for memory with bit swapping on the fly and testing
US7237141B2 (en) * 2003-06-19 2007-06-26 Lsi Corporation Method for recovering data from a redundant storage object
US7047379B2 (en) * 2003-07-11 2006-05-16 International Business Machines Corporation Autonomic link optimization through elimination of unnecessary transfers
US7594135B2 (en) * 2003-12-31 2009-09-22 Sandisk Corporation Flash memory system startup operation
US6937527B1 (en) * 2004-05-27 2005-08-30 Hewlett-Packard Development Company, L.P. High reliability triple redundant latch with voting logic on each storage node
US7610463B2 (en) * 2004-10-22 2009-10-27 Qualcomm Incorporated Method and apparatus for performing an atomic semaphore operation
JP5002900B2 (ja) 2005-03-17 2012-08-15 日本電気株式会社 制御装置とそのプログラム、及び、プログラムダウンロード方法
US7328318B1 (en) * 2005-03-31 2008-02-05 Emc Corporation System and method for atomic multi-volume operations
JP2008544437A (ja) * 2005-06-24 2008-12-04 メタラム インコーポレイテッド 一体化されたメモリコア及びメモリインターフェース回路
WO2007009472A1 (fr) 2005-07-16 2007-01-25 Mueller Ludwig Alliage de métal précieux
JP2007188384A (ja) 2006-01-16 2007-07-26 Nuclear Fuel Ind Ltd オブジェクト指向メモリ管理方法、解析プログラムおよび原子炉炉心特性解析プログラム
US7599261B2 (en) * 2006-01-18 2009-10-06 International Business Machines Corporation Removable storage media with improved data integrity
SG135056A1 (en) * 2006-02-14 2007-09-28 Trek 2000 Int Ltd Data storage device using two types of storage medium
US7636829B2 (en) * 2006-05-02 2009-12-22 Intel Corporation System and method for allocating and deallocating memory within transactional code
KR100827677B1 (ko) * 2006-06-20 2008-05-07 한국과학기술원 행렬 스트라이프 캐쉬를 이용한 raid 시스템의 입출력성능 향상 방법
US20080140963A1 (en) * 2006-12-11 2008-06-12 Thomason Ronald G Methods and systems for storage system generation and use of differential block lists using copy-on-write snapshots
US8370715B2 (en) * 2007-04-12 2013-02-05 International Business Machines Corporation Error checking addressable blocks in storage
US7716192B2 (en) * 2007-05-08 2010-05-11 Microsoft Corporation Concurrent, lock-free object copying
US8196123B2 (en) * 2007-06-26 2012-06-05 Microsoft Corporation Object model for transactional memory
US8065583B2 (en) * 2007-07-06 2011-11-22 Micron Technology, Inc. Data storage with an outer block code and a stream-based inner code
US20090113235A1 (en) * 2007-10-30 2009-04-30 Selinger Robert D Raid with redundant parity
US20100017649A1 (en) * 2008-07-19 2010-01-21 Nanostar Corporation Data storage system with wear-leveling algorithm
US8219741B2 (en) * 2008-10-24 2012-07-10 Microsoft Corporation Hardware and operating system support for persistent memory on a memory bus

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005339500A (ja) 2004-05-26 2005-12-08 Arm Ltd データ処理装置及び共用資源へのアクセス制御方法

Also Published As

Publication number Publication date
EP2438521A4 (en) 2013-11-13
WO2010141058A2 (en) 2010-12-09
TWI455126B (zh) 2014-10-01
JP5517089B2 (ja) 2014-06-11
CN102449613B (zh) 2015-04-15
KR20120014939A (ko) 2012-02-20
US20140281811A1 (en) 2014-09-18
US9110832B2 (en) 2015-08-18
JP2012529102A (ja) 2012-11-15
US20100313065A1 (en) 2010-12-09
TW201106354A (en) 2011-02-16
EP2438521B1 (en) 2016-04-27
US8751860B2 (en) 2014-06-10
EP2438521A2 (en) 2012-04-11
WO2010141058A3 (en) 2011-03-03
CN102449613A (zh) 2012-05-09

Similar Documents

Publication Publication Date Title
KR101369573B1 (ko) 고체상태 소자들의 객체 지향 메모리
TWI409821B (zh) 解碼方法、編碼方法及啟動控制系統
US9921914B2 (en) Redundant array of independent disks (RAID) write hole solutions
US9817749B2 (en) Apparatus and method of offloading processing from a data storage device to a host device
US9602134B2 (en) Operating method of error correction code decoder and memory controller including the error correction code decoder
KR101801147B1 (ko) 데이터 신뢰성을 개선하는 데이터 관리 방법 및 그에 따른 데이터 저장 장치
US9329931B2 (en) Solid state drive emergency pre-boot application providing expanded data recovery function
US11036421B2 (en) Apparatus and method for retaining firmware in memory system
US11157357B2 (en) Operation methods of memory system and host, and computing system
KR102641107B1 (ko) 스토리지 장치, 이를 포함하는 시스템 및 그 동작 방법
US11138080B2 (en) Apparatus and method for reducing cell disturb in an open block of a memory system during a recovery procedure
CN110473582B (zh) 存储器系统及其操作方法
KR20150041004A (ko) 비-휘발성 메모리에 대한 혼합된 입도 상위-레벨 리던던시
CN104541249A (zh) 用于非易失性存储器的耐久性感知纠错码(ecc)保护
KR20100091379A (ko) 반도체 디스크 장치 및 그것의 프로그램 페일 처리 방법
US20180373629A1 (en) Memory system and operating method thereof
US20080072119A1 (en) Allowable bit errors per sector in memory devices
CN109753457B (zh) 数据处理系统及其操作方法
US11373709B2 (en) Memory system for performing a read operation and an operating method thereof
JP6342013B2 (ja) 不揮発性メモリ・アレイを含むデータ・ストレージ・システムを動作させるための方法、システム及びコンピュータ・プログラム
US11815985B2 (en) Apparatus and method for checking an operation status of a memory device in a memory system
CN113360429B (zh) 数据重建方法、存储器存储装置及存储器控制电路单元
US20240004641A1 (en) Memory system firmware update using virtual slots
US11429485B1 (en) Memories with end-to-end data protection using physical location check
US11893275B2 (en) DRAM-less SSD with recovery from HMB loss

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170202

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180219

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190218

Year of fee payment: 6