KR101447786B1 - 파워 인터럽트 관리 - Google Patents

파워 인터럽트 관리 Download PDF

Info

Publication number
KR101447786B1
KR101447786B1 KR1020127010707A KR20127010707A KR101447786B1 KR 101447786 B1 KR101447786 B1 KR 101447786B1 KR 1020127010707 A KR1020127010707 A KR 1020127010707A KR 20127010707 A KR20127010707 A KR 20127010707A KR 101447786 B1 KR101447786 B1 KR 101447786B1
Authority
KR
South Korea
Prior art keywords
information
transaction log
volatile memory
memory
write
Prior art date
Application number
KR1020127010707A
Other languages
English (en)
Other versions
KR20120060236A (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 KR20120060236A publication Critical patent/KR20120060236A/ko
Application granted granted Critical
Publication of KR101447786B1 publication Critical patent/KR101447786B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/30Means for acting in the event of power-supply failure or interruption, e.g. power-supply fluctuations
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1405Saving, restoring, recovering or retrying at machine instruction level
    • G06F11/141Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • 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/0215Addressing or allocation; Relocation with look ahead addressing means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7207Details relating to flash memory management management of metadata or control data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling

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)

Abstract

본 발명은 메모리 시스템을 동작시키기 위한 방법들, 및 메모리 시스템을 포함한다. 하나의 이러한 방법은 기입 룩 어헤드 정보를 사용하여 트랜잭션 로그에 트랜잭션 로그 정보를 업데이트하는 단계; 및 트랜잭션 로그를 사용하여 논리 어드레스(LA) 테이블을 업데이트하는 단계를 포함한다.

Description

파워 인터럽트 관리{POWER INTERRUPT MANAGEMENT}
본 발명은 일반적으로 반도체 메모리 장치들, 방법들, 및 시스템들에 관한 것으로, 특히 파워 인터럽트 관리에 관한 것이다.
메모리 장치들은 전형적으로 컴퓨터들 또는 그외 전자장치들 내에 내부 반도체 집적회로들로서 제공된다. 휘발성 및 비휘발성 메모리를 포함한 많은 서로 다른 유형들의 메모리가 있다. 휘발성 메모리는 자신의 데이터를 유지하기 위해 전력을 필요로 할 수 있으며, 무엇보다도, 랜덤-액세스 메모리(RAM), 동적 랜덤-액세스 메모리(DRAM), 및 동기식 동적 랜덤 액세스 메모리(SDRAM)를 포함한다. 비휘발성 메모리는, 전원이 없을 때, 저장된 정보를 보존함으로써 영속적 데이터를 제공할 수 있고, 무엇보다도, NAND 플래시 메모리, NOR 플래시 메모리, 판독 전용 메모리(ROM), 전기적 소거가능 프로그램가능 ROM(EEPROM), 소거가능 프로그램가능 ROM(EPROM), 및 상변화 랜덤 액세스 메모리(PCRAM)를 포함할 수 있다.
메모리 장치들은 함께 결합되어 고체상태 드라이브(SSD)를 형성할 수 있다. 고체상태 드라이브는 여러 다른 유형들의 비휘발성 및 휘발성 메모리 중에서도, 비휘발성 메모리, 예를 들면, NAND 플래시 메모리 및 NOR 플래시 메모리를 포함할 수 있고, 및/또는 휘발성 메모리, 예를 들면, DRAM 및 SRAM을 포함할 수 있다. 플로팅 게이트 플래시 장치들과, 질화물층의 전하 트랩들에 정보를 저장하는 반도체-산화물-질화물-산화물-반도체 및 금속-산화물-질화물-산화물-반도체 커패시터 구조들을 사용하는 전하 트랩 플래시(CTF) 장치들을 포함한, 플래시 메모리 장치들은 광범위한 전자 응용들을 위해 비휘발성 메모리로서 이용될 수 있다. 플래시 메모리 장치들은 전형적으로 고 메모리 밀도들, 고 신뢰성, 및 저 전력 소비를 가능하게 하는 1-트랜지스터 메모리 셀을 사용한다.
SSD는 고체상태 드라이브가 성능, 크기, 무게, 견고성, 동작온도 범위, 및 전력 소비면에서 하드드라이브들에 비해 잇점들을 가질 수 있기 때문에, 컴퓨터용 주 저장장치로서 하드디스크 드라이브들을 대체하기 위해 사용될 수 있다. 예를 들면, SSD들은 이들이 가동(moving) 부품들이 없어 자기 디스크 드라이브들에 연관된 탐색시간, 레이턴시, 및 그외 전기-기계적 지연들을 회피할 수 있어 자기 디스크 드라이브들과 비교했을 때 우수한 성능을 가질 수 있다. SSD 제조업자들은 내부 배터리 서플라이를 사용하지 않을 수 있는 플래시 SSD들을 만들기 위해 비휘발성 플래시 메모리를 사용할 수 있어, 이에 따라 드라이브를 더 다목적이고 콤팩트하게 할 수 있다.
SSD는 다수의 메모리 장치들, 예를 들면, 다수의 메모리 칩들을 포함할 수 있다(본원에서 사용되는 바와 같이, "다수의" 어떤 것이란 하나 이상의 이러한 것들을 지칭할 수 있는 것으로, 예를 들면, 다수의 메모리 장치들은 하나 이상의 메모리 장치들을 지칭할 수 있다). 당업자가 알게 되는 바와 같이, 메모리 칩은 다수의 다이들 및/또는 논리 유닛들(LUNs)을 포함할 수 있다. 각 다이는 이에 다수의 메모리 어레이들 및 주변 회로를 포함할 수 있다. 메모리 어레이들은 다수의 물리 페이지들로 구성된 다수의 메모리 셀들을 포함할 수 있고, 물리 페이지들은 다수의 블록들로 구성될 수 있다.
고체상태 드라이브들은 논리 블록 어드레스(LBA : logical block address) 테이블과 같은 논리 어드레스(LA : logical address) 테이블을 포함할 수 있다. LBA 테이블은 고체상태 드라이브의 메모리 어레이들 내의 데이터의 물리 위치에 데이터의 논리 어드레스를 연결하는 정보를 기록하기 위해 사용될 수 있다. LBA 테이블은 고체상태 드라이브 내의 휘발성 메모리에 저장될 수 있고, LBA 테이블의 카피(copy) 또한 고체상태 드라이브 내의 휘발성 메모리에 저장될 수 있다. LBA 테이블은 판독 요청이 고체상태 드라이브에서 개시되었을 때 데이터를 읽기 위해서 고체상태 드라이브 내의 데이터의 물리적 위치를 결정하기 위해 사용될 수 있다. 특정 논리 어드레스에 데이터에 대한 판독 요청은 호스트에 의해 개시될 수 있다. 논리 어드레스는 LBA 테이블에서 발견될 수 있고 대응하는 물리 어드레스가 표시될 수 있다. 고체상태 드라이브는 고체상태 드라이브에 대한 판독 요청을 완료하기 위해서 표시된 물리 어드레스로부터 데이터를 읽을 수 있다.
고체상태 드라이브 내의 데이터에 대한 논리 어드레스와 물리 어드레스 간의 관계들에 관한 현재의, 예를 들면, 가장 최근의, 정보를 가진 LBA 테이블이 없는 고체상태 드라이브는 고체상태 드라이브 내의 어떤 데이터를 액세스하지 못하게 할 수 있다. 그러므로, 현재의 LBA 테이블은 고체상태 드라이브 내의 모든 데이터에 대한 완전한 액세스를 위해 바람직하다. 고체상태 드라이브 내의 LBA 테이블은 LBA 테이블이 휘발성 메모리 내에 저장되고 및/또는 LBA 테이블이 비휘발성 메모리 내에 주기적으로 저장됨에 기인하여 파워 인터럽트 후에 잃거나 완전하지 못할 수 있다. 그러므로, 파워 인터럽트는 파워 인터럽트 바로 이전의 시간에 고체상태 드라이브 내에 기입되었던 데이터에 관한 정보를 갖지 않은 LBA 테이블을 고체상태 드라이브가 갖게 할 수 있다.
도 1은 본 발명의 하나 이상의 실시예들에 따라, 적어도 하나의 메모리 시스템을 포함하는 컴퓨팅 시스템의 기능 블록도이다.
도 2는 본 발명의 하나 이상의 실시예들에 따른 메모리 시스템의 기능 블록도이다.
도 3은 본 발명의 하나 이상의 실시예들에 따른 비휘발성 메모리 내의 트랜잭션 로그, 블록 테이블, 및 논리 블록 어드레스(LBA) 테이블의 블록도를 예시한다.
도 4는 본 발명의 하나 이상의 실시예들에 따른 재활용 유닛의 기능 블록도이다.
도 5는 본 발명의 하나 이상의 실시예들에 따른 트랜잭션 로그를 예시한 테이블이다.
도 6은 본 발명의 하나 이상의 실시예들에 따른 블록 테이블을 예시한 테이블이다.
도 7은 본 발명의 하나 이상의 실시예들에 따른 논리 블록 어드레스(LBA) 테이블을 예시한 테이블이다.
본 발명은 메모리에서 파워 인터럽트 관리를 위한 방법들 및 장치들을 포함한다. 하나의 방법의 실시예는 기입 룩 어헤드(write look ahead) 정보를 사용하여 트랜잭션 로그(transaction log) 내의 트랜색션 로그 정보를 업데이트하는 단계; 및 트랜잭션 로그를 사용하여 논리 어드레스(LA) 테이블을 업데이트하는 단계를 포함한다.
본 발명의 다음 상세한 설명에서, 이의 일부를 이루며 발명의 하나 이상의 실시예들이 어떻게 실시될 수 있는가를 예시로서 도시한 동반된 도면들을 참조한다. 이들 실시예들은 당업자들이 발명의 실시예를 실시할 수 있게 할만큼 충분히 상세히 기술되는데, 다른 실시예들이 이용될 수도 있다는 것과 본 발명의 범위 내에서 프로세스, 전기적, 및 구조적 변경들이 행해질 수 있다는 것을 알아야 한다.
본 발명의 다음 상세한 설명에서, 이의 일부를 이루며 발명의 하나 이상의 실시예들이 어떻게 실시될 수 있는가를 예시로서 도시한 동반된 도면들을 참조한다. 이들 실시예들은 당업자들이 발명의 실시예를 실시할 수 있게 할만큼 충분히 상세히 기술되는데, 다른 실시예들이 이용될 수도 있다는 것과 본 발명의 범위 내에서 프로세스, 전기적, 및 구조적 변경들이 행해질 수 있다는 것을 알아야 한다. 본원에서 사용되는 바와 같이, 특히 도면들에서 참조부호들에 관련하여, "N", "M" 및 "R"로 표시한 것은 이와 같이 표시된 다수의 특정한 특징이 본 발명의 하나 이상의 실시예들에 포함될 수 있음을 나타낸다.
본원에서 도면들에 번호를 매기는 관례에 따라 도면들에서 표시한 숫자에서 앞에 숫자 또는 숫자들은 도면 번호에 대응하는 것이고 나머지 숫자들은 도면에서 구성요소 혹은 부품을 나타낸다. 도면들 간에 유사한 구성요소들 혹은 부품들은 비슷한 숫자들을 사용하여 확인될 수 있다. 예를 들어,(108)은 도 1에서 참조요소가 "08"일 수 있고, 유사한 요소는 도 2에서는 208로서 참조될 수 있다. 알게 되는 바와 같이, 본원에 여러 실시예들에서 보인 요소들은 다수의 추가의 본 발명의 실시예들을 제공하기 위해서 추가, 교환, 및/또는 제거될 수 있다. 또한, 알게 되는 바와 같이, 도면들에 제공된 요소들의 비율 및 상대적 비례는 본 발명의 실시예들을 예시하려는 것이며 제한의 의미로 취해지지 않아야 한다.
도 1은 본 발명의 하나 이상의 실시예들에 따라, 적어도 하나의 메모리 시스템(104)을 포함하는 컴퓨팅 시스템(100)의 기능 블록도이다. 도 1에 도시된 실시예에서, 메모리 시스템(104), 예를 들면, 고체상태 드라이브(SSD)는 물리 호스트 인터페이스(106), 제어기, 예를 들면, 메모리 시스템 제어회로(108), 및 하나 이상의 고체상태 메모리 장치들(110-1,..., 110-N)을 포함할 수 있다. 고체상태 메모리 장치들(110-1,..., 110-N)은 예를 들면 파일 시스템을 메모리 장치들로 포맷화하여, 메모리 시스템에 대한 저장용량을 제공할 수 있다. 하나 이상의 실시예들에서, 메모리 시스템 제어회로(108)는 물리 인터페이스(106) 및 고체상태 메모리 장치들(110-1,...,110-N)을 포함하는 인쇄회로기판에 결합된 ASIC(application specific integrated circuit)일 수 있다.
도 1에 도시된 바와 같이, 메모리 시스템 제어회로(108)는 물리 호스트 인터페이스(106)에, 그리고 고체상태 메모리 장치들(110-1,..., 110-N)에 결합될 수 있다. 물리 호스트 인터페이스(106)는 메모리 시스템(104)과, 호스트 시스템(102)과 같은 또 다른 장치 간에 정보를 통신하기 위해 사용될 수 있다. 호스트 시스템(102)은 메모리 액세스 장치, 예를 들면, 프로세서를 포함할 수 있다. 당업자는 "프로세서"는 병렬 처리 시스템, 다수의 코프로세서들, 등과 같은 하나 이상의 프로세서들을 의도할 수 있음을 안다. 호스트 시스템들의 예들은 랩탑 컴퓨터들, 개인용 컴퓨터들, 디지털 카메라들, 디지털 기록 및 재생 장치들, 이동전화들, PDA들, 메모리 카드 리더(memory card reader)들, 인터페이스 허브들, 등을 포함한다. 하나 이상의 실시예들에 있어서, 물리 호스트 인터페이스(106)는 표준화된 인터페이스 형태일 수 있다. 예를 들면, 메모리 시스템(104)이 컴퓨팅 시스템(100)에서 데이터 저장을 위해 사용될 때, 물리 호스트 인터페이스(106)는 다른 커넥터들 및 인터페이스들 중에서도, SATA(serial advanced technology attachment), PCIe(peripheral component interconnect express), 또는 USB(universal serial bus) 일 수 있다. 그러나, 일반적으로, 물리 호스트 인터페이스(106)는 메모리 시스템(104)과, 물리 호스트 인터페이스(106)에 대해 호환가능한 리셉터(receptor)들을 구비한 호스트 시스템(102) 간에 제어, 어드레스, 데이터, 및 그외 신호들을 전달하기 위한 인터페이스를 제공할 수 있다.
메모리 시스템 제어회로(108)는, 다른 동작들 중에서도, 데이터를 판독, 기입, 및 소거하기 위해 고체상태 메모리 장치들(110-1,..., 110-N)과 통신할 수 있다. 메모리 시스템 제어회로(108)는 하나 이상의 집적회로들 및/또는 이산 부품들일 수 있는 회로를 구비할 수 있다. 하나 이상의 실시예들에 있어서, 메모리 시스템 제어회로(108) 내의 회로는 고체상태 메모리 장치들(110-1,..., 110-N)에 걸쳐 액세스를 제어하기 위한 제어회로 및 호스트 시스템(102)과 메모리 시스템(104) 간에 전환층을 제공하기 위한 회로를 포함할 수 있다. 이에 따라, 메모리 제어기는 적합한 시간에 적합한 I/O 연결에서 적합한 신호를 수신하기 위해 고체상태 메모리 장치(110-1,..., 110-N)의 I/O 연결(도 1에 도시되지 않음)을 선택적으로 결합할 수도 있을 것이다. 유사하게, 호스트 시스템(102)과 메모리 시스템(104) 간의 통신 프로토콜은 고체상태 메모리 장치(110-1,..., 110-N)의 액세스를 위해 요구되는 것과는 다를 수도 있다. 이어서, 메모리 시스템 제어회로(108)는 고체상태 메모리 장치(110-1,..., 110-N)에 대한 요망되는 액세스를 달성하기 위해 호스트로부터 수신된 지령들을 적합한 지령들로 전환할 수도 있을 것이다.
고체상태 메모리 장치(110-1,..., 110-N)는 하나 이상의 어레이들의 메모리 셀들, 예를 들면, 비휘발성 메모리 셀들을 포함할 수 있다. 어레이들은, 예를 들면, NAND 아키텍처를 가진 플래시 어레이들일 수 있다. NAND 아키텍처에서 "행"의 메모리 셀들의 제어 게이트들은 액세스, 예를 들면, 워드, 라인에 결합될 수 있고, 메모리 셀들은 선택 게이트 소스 트랜지스터와 선택 게이트 드레인 트랜지스터 사이에 "스트링"으로 소스와 드레인 간의 직렬로 결합될 수 있다. 스트링은 선택 게이트 드레인 트랜지스터에 의해 데이터, 예를 들면, 비트, 라인에 연결될 수 있다. "행" 및 "스트링"이라는 용어들의 사용은 메모리 셀들의 선형 배열도 직교 배열도 의미하지 않는다. 당업자들이 알게 되는 바와 같이, 비트라인들 및 소스라인들에 대한 메모리 셀들의 연결 방식은 어레이가 NAND 아키텍처인지, 아니면 NOR 아키텍처, 혹은 이외 어떤 다른 메모리 어레이 아키텍처인지에 달려있다.
고체상태 메모리 장치들(110-1,..., 110-N)은 그룹화될 수 있는 다수의 메모리 셀들을 포함할 수 있다. 본원에서 사용되는 바와 같이, 그룹은 페이지, 블록, 플레인(plane), 다이(die), 전체 어레이, 혹은 이외 다수 그룹들의 메모리 셀들과 같은 하나 이상의 메모리 셀들을 포함할 수 있다. 예를 들면, 일부 메모리 어레이들은 하나의 블록의 메모리 셀들을 구성하는 다수 페이지들의 메모리 셀들을 포함할 수 있다. 다수의 블록들은 하나의 플레인의 메모리 셀들에 포함될 수 있다. 다수 플레인들의 메모리 셀들은 다이 상에 포함될 수 있다. 예로서, 128 GB 메모리 장치는 페이지당 4314 바이트의 데이터, 블록당 128 페이지들, 플레인당 2048 블록들, 및 장치당 16 플레인들을 포함할 수 있다.
메모리 장치에서, 물리 페이지는 기입 및/또는 판독 단위, 예를 들면, 함께 혹은 하나의 기능 그룹의 메모리 셀들로서 기입 및/또는 판독될 수 있는 다수의 셀들을 지칭할 수 있다. 따라서, 짝수 페이지 및 홀수 페이지는 개별적 기입 및/또는 판독 동작들로 기입 및/또는 판독될 수 있다. 다중레벨 셀들(MLC)을 포함하는 실시예들에 있어서, 물리 페이지는 상위 페이지 및 하위 페이지의 데이터로 논리적으로 분할될 수 있다. 예를 들면, 하나의 메모리 셀은 하나 이상의 비트들을 상위 하나의 페이지의 데이터에, 그리고 하나 이상의 비트들을 하위 하나의 페이지의 데이터에 기여할 수 있다. 따라서, 상위 페이지 및 하위 페이지의 데이터는 논리 상위 페이지 및 논리 하위 페이지 모두 동일한 물리 페이지의 부분이기 때문에, 하나의 기입 및/또는 판독 동작의 부분으로서 기입 및/또는 판독될 수 있다.
메모리 시스템(104)은 고체상태 메모리 장치들(110-1,..., 110-N) 상의 마모율을 제어하기 위해 마모 평준화(wear leveling)를 구현할 수 있다. 고체상태 메모리 어레이는 다수의 프로그램 및/또는 소거 사이클들 후에 고장이 발생할 수 있다. 마모 평준화는 특정한 하나의 그룹 상에 수행되는 프로그램 및/또는 소거 사이클들의 수를 감소시킬 수 있다. 마모 평준화는 블록을 재활용하기 위해 이동된 유효 블록들의 량을 최소화하기 위해 동적 마모 평준화를 포함할 수 있다. 동적 마모 평준화는 임계량 이상의 무효 페이지들을 가진 블록들이 블록을 소거함으로써 재활용되는 가비지 수거(garbage collection)라고 불리우는 기술을 포함할 수 있다. 예를 들면, 무효 페이지는 업데이트되어 다른 페이지에 저장된 하나의 페이지의 데이터일 수 있다. 정적 마모 평준화는 블록의 수명을 늘리기 위해 고 소거 카운트들을 갖는 블록들에 정적인 데이터를 기입하는 것을 포함할 수 있다.
도 1의 실시예는 본 발명의 실시예들을 모호하게 되지 않기 위해서 예시되지 않은 추가의 회로를 포함할 수 있다. 예를 들면, 메모리 시스템(104)은 I/O 회로를 통해 I/O 연결들을 통해 제공된 어드레스 신호들을 래치하기 위해 어드레스 회로를 포함할 수 있다. 어드레스 신호들은 고체상태 메모리 장치들(110-1,..., 110-N)을 액세스하기 위해 행 디코더 및 열 디코더에 의해 수신되어 디코딩될 수 있다. 어드레스 입력 연결들의 수는 고체상태 메모리 장치들(110-1,..., 110-N)의 밀도 및 아키텍처에 달려있음을 당업자들은 알 것이다.
도 2는 본 발명의 하나 이상의 실시예들에 따른 메모리 시스템(204)의 기능 블록도이다. 메모리 시스템(204)은 메모리 시스템 제어회로(208)를 포함할 수 있다. 메모리 시스템 제어회로(208)는 하나 이상의 고체상태 메모리 장치들, 예를 들면, 비휘발성 메모리(210) 및/또는 휘발성 메모리(212)에 결합될 수 있다. 메모리 시스템(204) 및 메모리 시스템 제어회로(208)는 도 1에 도시된 메모리 시스템(104) 및 메모리 시스템 제어회로(108)와 각각 유사할 수 있다.
메모리 시스템 제어회로(208)는 호스트 인터페이스 회로(214), 호스트-메모리 전환 회로(216), 메모리 관리 회로(218), 스위치(220), 비휘발성 메모리 제어 회로(222), 및/또는 휘발성 메모리 제어 회로(224)를 포함할 수 있다. 본원에 기술된 바와 같이, 메모리 시스템 제어회로(208)는 ASIC 형태로 제공될 수 있으나, 실시예들은 이것으로 제한되는 것은 아니다.
호스트 인터페이스 회로(214)는 호스트-메모리 전환 회로(216)에 결합될 수 있다. 호스트 인터페이스 회로(214)는 도 1에 도시된 물리 인터페이스(106)와 같은, 호스트 시스템에 대한 물리 인터페이스에 결합되고 및/또는 이것이 탑재될 수 있다.
일반적으로, 호스트 인터페이스 회로(214)는 호스트 시스템, 예를 들면 PCIe 버스로부터 수신된 지령 패킷들을, 호스트-메모리 전환 회로(216)를 위한 지령 명령들로 변환하고, 메모리 응답들을 요청 호스트에 전송하기 위한 호스트 시스템 지령들로 변환하기 위한 것이다. 예를 들면, 호스트 인터페이스 회로(214)는 PCIe 기반 트랜잭션 층 패킷들로부터 SATA 지령 패킷들을 구성할 수 있다.
호스트-메모리 전환 회로(216)는 호스트 인터페이스 회로(214), 메모리 관리 회로(218), 및/또는 스위치(220)에 결합될 수 있다. 호스트-메모리 전환 회로(216)는 논리(예를 들면, 호스트) 어드레스들(예를 들면, 수신된 지령에 연관된)을 물리 메모리 어드레스들로 전환하게 구성될 수 있다. 예를 들면, 호스트-메모리 전환 회로(216)는 호스트 섹터 판독 및 기입 지령들을, 비휘발성 메모리(210)의 특정 부분들에 보낼 지령들로 변환할 수 있다. 각 호스트 동작은 단일 혹은 복수-섹터 비휘발성 메모리(210) 동작으로 전환될 수 있다.
메모리 관리 회로(218)는 호스트-메모리 전환 회로(216) 및/또는 스위치(220)에 결합될 수 있다. 메모리 관리 회로(218)는 예를 들면, 프로세서(228)의 동작을 통해, 초기화, 마모 평준화(예를 들면, 가비지 수거 및/또는 블록 재활용), 및 오류 정정을 포함한 -이들로 제한되는 것은 아님- 다수의 프로세스들을 제어할 수 있다. 메모리 관리 회로(218)는 마모 평준화에 대한 후보들을 결정하기 위해서 그룹, 예를 들면, 블록 테이블(236)을 액세스할 수 있다. 메모리 관리 회로(218)는 논리 어드레스에 연관된 데이터가 (예를 들면, 마모 평준화 또는 데이터에 대한 업데이트의 부분으로서) 새로운 물리 어드레스에 기입될 때, 논리 어드레스에 대응하는 새로운 물리 어드레스로 LBA 테이블, 예를 들면, LBA 테이블(234)을 업데이트할 수 있다.
메모리 관리 회로(218)는 예를 들면, 정적 마모 평준화 동작의 부분으로서, 블록 테이블(236)에서 고 소거 카운트를 갖는 블록들을 탐색할 수 있다. 메모리 관리 회로는 특정 블록의 소거 카운트를 임계 카운트와 비교할 수 있다. 예를 들면, 최저 소거 카운트를 가진 블록의 소거 카운트는 특정 블록으로부터 감산될 수 있다. 차이가 임계 카운트보다 크다면, 특정 블록은 블록 재활용에 대한 후보로서 표시될 수 있다.
메모리 관리 회로(218)는 예를 들면, 동적 마모 평준화 동작의 부분으로서, 무효한, 예를 들면 미사용된 부분들, 예를 들면 페이지들의 가비지 수거 임계량을 갖는 블록들을 탐색할 수 있다. 메모리 관리 회로(218)는 재활용 회로(230)를 포함할 수 있다. 재활용은 가비지 수거의 결과로서 메모리 관리 회로(218)에 의해 시행될 수 있는 프로세스이다. 재활용은 블록이 소거되기 전에 소거할 블록 내 위치에서 다른 블록 내 위치들로 모든 유효 데이터를 이동하는 것을 포함할 수 있다.
스위치(220)는 호스트-메모리 전환 회로(216), 메모리 관리 회로(218), 비휘발성 제어 회로(222), 및/또는 휘발성 메모리 제어 회로(224)에 결합될 수 있다. 스위치(220)는 크로스바 스위치일 수 있으며, 하나 이상의 버퍼들, 예를 들면, 정적 랜덤 액세스 메모리(SRAM) 버퍼들을 포함하고 및/또는 이들에 결합될 수 있다. 스위치(220)는 메모리 시스템 제어회로(208)의 여러 부품들 간에 인터페이스를 제공할 수 있다. 스위치(220)는 부품들 간에 일관된 액세스 및 구현들을 제공하기 위해서 메모리 시스템 제어회로(208)의 서로 다른 부품들에 연관될 수 있는 정의된 시그널링 프로토콜들에 변형예들을 처리할 수 있다. 하나 이상의 실시예들에서, 스위치(220)는 다이렉트 메모리 액세스(DMA) 모듈일 수 있다.
제어기, 예를 들면, 비휘발성 메모리 제어 회로(222)는 스위치(220)에, 그리고 하나 이상의 비휘발성 메모리 장치들(210)에 결합될 수 있다. 다른 정보 중에서도, 하나 이상의 비휘발성 메모리 장치들(210)은 본원에 기술된 바와 같이 트랜잭션 로그(238), 논리 블록 어드레스(LBA) 테이블(234-C)와 같은 논리 어드레스(LA) 테이블의 카피, 및/또는 블록 테이블(236-C)와 같은 그룹 테이블을 저장할 수 있다. 일부 실시예들에서, 메모리 시스템 제어회로(208)는 모든 메모리 채널들을 위한 하나의 비휘발성 메모리 제어기를 포함할 수 있다. 그외 다른 실시예들에서, 각 메모리 채널은 이산 비휘발성 메모리 제어기에 결합된다.
휘발성 메모리 제어 회로(224)는 스위치(220)에, 그리고 하나 이상의 휘발성 메모리 장치들(212)에 결합될 수 있다. 다른 정보 중에서도, 하나 이상의 휘발성 메모리 장치들은 LBA 테이블(234) 및/또는 블록 테이블(236)을 저장할 수 있다. LBA 테이블(234)은 페이지들의 물리 어드레스를 하나 이상의 비휘발성 메모리 장치들(210)에 저장하고 대응하는 논리 어드레스들을 포함할 수 있다. LBA 테이블(234)은 연관된 SATA 지령에 내포된 LBA에 의해 색인될 수 있다. LBA 테이블(234)은, 예를 들면, 논리 블록 어드레스들에 대응하는 물리 페이지 어드레스들을 검색하기 위해서 호스트-메모리 전환 회로(216)에 의해 사용될 수 있다. 블록 테이블(236)은 하나 이상의 비휘발성 메모리 장치들(210) 내의 소거가능 블록들에 대한 정보를 저장할 수 있다. 블록 테이블(236) 내에 저장된 정보는 유효 페이지 정보, 소거 카운트, 및 그외 상태 정보를 포함할 수 있다. 블록 테이블(236)로부터 액세스된 정보는 물리 블록 어드레스에 의해 색인될 수 있다.
도 3은 본 발명의 하나 이상의 실시예들에 따라 비휘발성 메모리(310) 내의 트랜잭션 로그(338), 블록 테이블(334), 및 논리 블록 어드레스(LBA) 테이블(336)의 블록도이다. 다른 정보 중에서도, 비휘발성 메모리는 LBA 테이블(336), 블록 테이블(334), 및/또는 트랜잭션 로그(338) 내에 기입 동작 정보를 저장할 수 있다.
휘발성 메모리에 저장된 LBA 테이블의 카피는 다른 주기적 간격들 중에서도, 적어도 매 300초와 같이, 비휘발성 메모리(310)에 LBA 테이블(336)로서 주기적으로 저장될 수 있다. 예를 들면, LBA 테이블(336)은 매 120 초마다 비휘발성 메모리(310)에 저장될 수 있다. 휘발성 메모리 내의 LBA 테이블은 고체상태 드라이브 내의 각 기입 후에 업데이트될 수 있다. 비휘발성 메모리 장치들 내의 LBA 테이블을 업데이트하는 빈도에 대한 기간은, 다른 인자들 중에서도, 메모리 시스템이 수행하는 기입들의 빈도 및/또는 데이터가 기입되는 속도에 따를 수 있다.
트랜잭션 로그(338)는 비휘발성 메모리에 저장되고 메모리 장치들에서 일어나는 매 기입에 관한 정보를 기록하기 위해 사용될 수 있다. 다수의 메모리 장치들을 갖는 메모리 시스템은 메모리 장치들에서 발생하는 매 기입에 관한 정보를 포함하는 트랜잭션 로그를 포함할 수 있다. 트랜잭션 로그는 메모리 시스템에 다수의 메모리 장치들에 걸쳐 스트립(strip)될 수 있다. 당업자가 아는 바와 같이, 스트립은 이 하나 이상의 장치에 저장되도록 데이터를 분할하는 것을 포함한다. 스트립은 트랜잭션 로그 정보와 같은 기입 데이터를 단편들로 분할하고 적어도 하나의 단편을 다수의 메모리 장치들 각각에 저장하는 것을 포함할 수 있다. 하나 이상의 실시예들에서, 제어기는 각 기입이 메모리 장치들에서 실행될 때 각 기입에 대한 트랜잭션 로그 정보로 트랜잭션 로그를 업데이트할 수 있다. 트랜잭션 로그는 하나의 기간 동안 메모리 장치들에서 발생하는 모든 기입들에 관한 정보를 내포할 수 있다. 트랜잭션 로그는 LBA 테이블(336)이 비휘발성 메모리(310)에 저장되었던 마지막 시간 이후에 발생한 메모리 장치들에 대한 모든 기입들에 관한 정보를 포함할 수 있다.
하나 이상의 실시예들에서, 트랜잭션 로그(338)로부터 정보는 예를 들면, 마지막 저장과 파워 인터럽트 사이에 LBA 테이블(336)이 비휘발성 메모리에 마지막 저장된 후의 시간부터 메모리 장치(들)에서 발생한 기입들에 관한 정보로 LBA 테이블(336)의 카피를 업데이트하기 위해 사용될 수 있다. 그렇지 않다면, 비휘발성 메모리(310) 내의 LBA 테이블(336)의 카피는 비휘발성 메모리에 카피되었던 시간에 휘발성 메모리에 LBA 테이블에 있었던 정보만을 비휘발성 메모리(310) 내 LBA 카피(336)가 갖고 있기 때문에, 정보를 누락하고 있을 수 있다. 또한, 휘발성 메모리에 LBA 테이블은 파워 인터럽트 동안 소거되며, 따라서, 위와 같이 하지 않는다면, 비휘발성 메모리 내 LBA 카피는 비휘발성 메모리(310)에 카피되었던 마지막 시간과 소거되었을 때와의 사이에 휘발성 메모리 내 LBA 테이블에 저장되었을 수도 있었을 정보로 업데이트될 수 없다. 그러므로, 비휘발성 메모리(310) 내 트랜잭션 로그(338)는 비휘발성 메모리 내 LBA 테이블에 정보를 업데이트하기 위해 사용될 수 있다. 트랜잭션 로그(338)는 데이터의 위치와 데이터가 메모리 장치들에 기입되었던 시간에 관한 정보를 내포할 수 있다. 정보는 메모리 장치들에 의해 확인되고, LBA 테이블(336)을 업데이트하기 위해 LBA 테이블에 입력될 수 있다. 하나 이상의 실시예들에서, 트랜잭션 로그의 마지막 페이지는 파워 인터럽트 동안 변질될 수 있으며, 따라서, 트랜잭션 로그 내 마지막 페이지의 정보는 메모리 어레이들에 기입되었던 가장 최근의 데이터의 일부에 관한 정보를 내포하지 않는다.
도 4에 도시된 바와 같이, 재활용 유닛은, 예를 들면, 기입 룩 어헤드 정보를 생성하기 위해서, 마모 평준화 알고리즘(예를 들면, 가비지 수거 알고리즘)로부터 정보를 사용할 수 있다. 기입 룩 어헤드 정보는 최근에 기입된 데이터의 위치 및 다음 데이터가 기입될 수도 있을 곳의 위치를 내포할 수 있다. 마모 평준화 알고리즘들은 메모리의 미사용된 및/또는 덜 사용된 부분들로 데이터를 이동시키며, 이에 따라 데이터를 기입하기 위한 새로이 자유롭게 된 블록들을 생성한다. 마모 평준화 알고리즘들은 새로이 자유롭게 된 블록들의 위치를 포함하고 제어기에게 새로이 자유롭게 된 블록들에 다음으로 기입하게 할 수 있다. 새로이 자유롭게 된 블록들의 위치 및 데이터가 최근에 기입되었고 다음 기입될 수도 있을 곳에 관한 마모 평준화 및/또는 가비지 수거 알고리즘들로부터의 정보는 기입 룩 어헤드 정보에 포함된다. 제어기는 기입 룩 어헤드 정보에 의해 표시된 위치들에서 개정 횟수에 대해 체크함으로써 이들 위치들에 데이터가 있는지 및/또는 유효 기입과 같은 어떤 데이터가 있는지를 판정할 수 있다. 개정 횟수는 위치에 데이터에 연관된 메타데이터에서 발견될 수 있고 유효 기입이 위치에서 발생되었음을 나타낼 수 있다. 트랜잭션 로그는 이들 위치들에서 발견된 데이터로 업데이트될 수 있다. 기입 룩 어헤드 정보는 트랜잭션 로그에 변질된 마지막 페이지의 정보를 재생성하기 위해 사용될 수 있다. 이어서, 비휘발성 메모리 내 LBA 테이블은 지금 완료된 트랜잭션 로그로 업데이트될 수 있다.
하나 이상의 실시예들에서, 파워 인터럽트의 경우에 마지막 페이지의 트랜잭션 로그를 저장하기에 충분한 파워를 메모리 장치들에 주기 위해 커패시터가 포함될 수 있다. 이러한 실시예들에서, 커패시터로부터 파워는 파워 인터럽트에 바로 앞서 발생한 트랜잭션 로그에 대한 업데이트들을 저장하는 것을 마치기 위해 사용되며, 따라서, 트랜잭션 로그는 비휘발성 메모리 내 LBA 테이블의 마지막 저장 이후에 발생한 기입들에 관한 정보를 가지며 LBA 테이블을 업데이트하기 위해 사용될 수 있다.
도 4는 본 발명의 하나 이상의 실시예들에 따른 재활용 유닛(430)의 기능 블록도이다. 도 4에서, 재활용 유닛(430)은 마모 평준화 유닛(444)을 포함할 수 있다. 재활용 유닛(430)은 기입 룩 어헤드 정보(446)를 생성하기 위해서 마모 평준화 유닛(444)으로부터 정보를 사용할 수 있다. 기입 룩 어헤드 정보(466)는 마지막 기입이 수행되었던 및/또는 다음 기입이 수행될 수 있을 메모리 어레이들 내 위치를 나타내는 데이터일 수 있다. 기입 룩 어헤드 정보는 파워 인터럽트 전에 마지막 데이터 기입의 위치를 판정하고 트랜잭션 로그를 이 정보로 업데이트하기 위해 재활용 유닛(444)에 의해 사용될 수 있다. 파워 인터럽트 전에 데이터의 위치로 업데이트된 트랜잭션 로그는 비휘발성 메모리 내 LBA 테이블의 마지막 저장과 파워 인터럽트의 시간 사이에서 기입들에 관한 정보를 포함하게 LBA 테이블을 업데이트하기 위해 사용될 수 있다.
도 5는 본 발명의 하나 이상의 실시예들에 따른 트랜잭션 로그(538)를 예시한 테이블이다. 도 5에서, 트랜잭션 로그(538)는 메모리 장치들에 있는 데이터에 대한 물리 어드레스(550) 및 논리 어드레스(552)를 포함하는 트랜잭션 로그 정보 포함할 수 있다. 트랜잭션 로그(538)는 메모리 장치들에서 발생하는 모든 기입의 위치를 기록할 수 있고 트랜잭션 로그(538)는 메모리 장치들에 저장될 수 있다. 트랜잭션 로그는 메모리 시스템 내 다수의 메모리 장치들에 걸쳐 스트립될 수 있다. 하나 이상의 실시예들에서, 트랜잭션 로그는 메모리 장치들에서 발생하는 각 트랜잭션을 기록할 수 있고, 메모리 장치들 상에서 수행되는 트랜잭션들에 대해 메모리 장치들 및/또는 제어기를 위한 참조가 될 수 있다. 트랜잭션 로그는 휘발성 메모리로부터 LBA 테이블의 카피가 비휘발성 메모리에 행해진 후 소거될 수 있다. 트랜잭션 로그는 트랜잭션 로그를 소거한 후에 발생하는 트랜잭션들에 대응하는 새로운 엔트리들로 업데이트될 수 있다.
도 5에서, 트랜잭션 로그(538)는 메모리 장치들에서 발생한 각 트랜잭션을 나타내는 다수의 엔트리들(556-1, 556-2, 556-3,...556-N)을 포함할 수 있다. 트랜잭션 로그(538) 내 엔트리들(556-1, 556-2, 556-3,... 556-N)는 기입, 판독, 또는 소거와 같은 트랜잭션에 대한 지령(550), 트랜잭션의 물리 어드레스(552), 및 트랜잭션의 논리 어드레스(554)를 포함할 수 있다.
도 6은 본 발명의 하나 이상의 실시예들에 따른 블록 테이블(634)을 예시한 테이블이다. 블록 테이블(634)은 메모리 장치들에 블록들에 관한 정보를 저장할 수 있다. 블록 테이블(634)에 저장된 정보는 데이터 유효성 정보(660), 소거 카운트(662), 및 상태 정보(664)를 포함할 수 있다. 블록 테이블(634)은 다수의 엔트리들(666-1, 666-2, 666-3,... 및 666-M)을 포함할 수 있다. 블록 테이블(634) 내 각 엔트리는 물리 어드레스(652), 데이터 유효성 정보(660), 소거 카운트(662), 및 블록 및/또는 페이지의 데이터와 같은 데이터에 대한 상태 정보(664)를 포함할 수 있다. 블록 테이블(634) 내 데이터 유효성 정보(660)는 블록 내 각 페이지의 유효성에 관한 정보, 예를 들면, 데이터가 유효한지 아니면 무효한지 여부를 포함할 수 있다. 블록 테이블(634) 내 소거 카운트(662)는 블록이 소거된 횟수를 나타낼 수 있다. 블록 테이블(634) 내 상태 정보(664)는 블록에 대한 다른 상태 표시자들 중에서도, 블록이 소거되었는지 및/또는 데이터를 포함하는지를 나타낼 수 있다.
도 7은 본 발명의 하나 이상의 실시예들에 따른 논리 블록 어드레스 (LBA) 테이블(736)을 예시한 테이블이다. LBA 테이블(736)은 메모리 장치들에 각 데이터 엔트리에 대한 논리 어드레스(752) 및 물리 어드레스(750)를 저장하고, 메모리 장치들 내의 각 데이터 엔트리에 대해 물리 어드레스(750)로 논리 어드레스(752)에 대한 전환을 제공할 수 있다. LBA 테이블(736)은 메모리 장치들으로의 각 기입에 대해 LBA에 의해 색인될 수 있고, LBA 테이블(736) 내 각 데이터 엔트리에 대한 논리 어드레스(754) 및 물리 어드레스(752)를 포함하는 다수의 엔트리들(770-1, 770-2, 770-3,... 770-R)을 포함할 수 있다. LBA는 각 엔트리 내 데이터가 저장되는 대응하는 물리 어드레스를 검색하기 위해 사용될 수 있다. LBA 테이블은 메모리 시스템의 휘발성 메모리에 저장될 수 있고, 휘발성 메모리 내 LBA 테이블의 카피는 주기적으로 비휘발성 메모리에 행해질 수 있다. 일단 비휘발성 메모리에서 LBA 테이블의 카피가 행해지면, 휘발성 메모리 내 LBA 테이블은 소거될 수 있고, 휘발성 메모리 내 LBA 테이블은 휘발성 메모리 내 LBA 테이블을 소거한 후에 발생하는 트랜잭션들에 대응하는 새로운 엔트리들로 업데이트될 것이다.
결어
본 발명은 메모리에서 파워 인터럽트 관리를 위한 방법들 및 장치들을 포함한다. 하나의 방법의 실시예는 기입 룩 어헤드 정보를 사용하여 트랜잭션 로그에 트랜잭션 로그 정보를 업데이트하는 단계; 및 트랜잭션 로그를 사용하여 논리 어드레스(LA) 테이블을 업데이트하는 단계를 포함한다.
특정한 실시예들이 본원에 도시되고 기술되었을지라도, 당업자들은 동일 결과들을 달성하기 위해 계획된 구성이 여기 도시된 구체적 실시예들을 대체할 수 있음을 알 것이다. 본 개시된 바는 본 발명의 하나 이상의 실시예들의 개조 혹은 변형들도 포함한다. 위에 기술된 바는 제약적 형태가 아니라 예시적 형태로 행해졌음을 알아야 한다. 위에 실시예들의 조합, 및 특정하게 여기 기술되지 않은 다른 실시예들의 조합은 위에 기술된 바를 검토하였을 때 당업자들에게 명백할 것이다. 본 발명의 하나 이상의 실시예들의 범위는 위에 구조들 및 방법들이 사용되는 다른 적용들을 포함한다. 그러므로, 본 발명의 하나 이상의 실시예들의 범위는 이러한 청구항들이 부여하는 일범위의 전체 등가물들과 더불어 첨부된 청구항들에 관련하여 판정되어야 한다.
전술한 상세한 설명에서, 일부 특징들은 효율적 설명을 위해 단일 실시예에서 그룹화하였다. 발명의 이 방법은 본 발명의 개시된 실시예들이 각 청구항에 명시적으로 인용된 것보다 많은 특징들을 사용해야 하는 의도를 반영하도록 해석되지 않아야 한다. 그보다는, 다음 청구항들이 반영하는 바와 같이, 발명의 요체는 개시된 단일 실시예의 모든 특징들 미만의 특징들에 놓여 있다. 따라서, 다음 청구항들은 상세한 설명에 포함되고 각 청구항은 자체가 별도의 실시예를 구성한다.

Claims (35)

  1. 메모리에서 파워 인터럽트 관리를 위한 방법으로서,
    트랜잭션 로그(transaction log) 정보의 변질된 페이지와 연관된 트랜잭션 로그 정보를 판정하기 위해, 기입 룩 어헤드(look ahead) 정보를 사용하여 트랜잭션 로그 내의 트랜잭션 로그 정보의 변질된 페이지와 연관된 트랜잭션 로그 정보를 상기 트랜잭션 로그 내의 새로운 페이지에 기입함으로써 상기 트랜잭션 로그를 업데이트하는 단계 - 상기 기입 룩 어헤드 정보는, 데이터가 최근에 기입된 곳과 데이터를 수신할 준비가 된 자유 블록들이 위치하는 곳을 나타내는 마모 평준화 알고리즘으로부터의 정보를 사용하여 생성됨 - ; 및
    상기 업데이트된 트랜잭션 로그 정보를 사용하여 비휘발성 메모리에 저장된 논리 어드레스(LA) 테이블을 업데이트하는 단계를 포함하는, 메모리에서 파워 인터럽트 관리를 위한 방법.
  2. 청구항 1에 있어서,
    상기 기입 룩 어헤드 정보는 데이터가 다음으로 메모리 시스템 내에 기입될 위치에 관한 정보를 포함하는, 메모리에서 파워 인터럽트 관리를 위한 방법.
  3. 청구항 1에 있어서,
    상기 기입 룩 어헤드 정보는 데이터가 메모리 시스템 내에 가장 최근에 기입된 위치에 관한 정보를 포함하는, 메모리에서 파워 인터럽트 관리를 위한 방법.
  4. 청구항 1에 있어서,
    데이터가 가장 최근에 기입되고 다음으로 기입될 위치에 관하여 상기 마모 평준화 알고리즘으로부터의 정보를 사용하여 기입 룩 어헤드 정보를 생성하는 단계를 더 포함하는, 메모리에서 파워 인터럽트 관리를 위한 방법.
  5. 청구항 1에 있어서,
    데이터가 가장 최근에 기입되고 다음으로 기입될 위치에 관하여 가비지 수거(garbage collection) 알고리즘으로부터의 정보를 사용하여 기입 룩 어헤드 정보를 생성하는 단계를 더 포함하는, 메모리에서 파워 인터럽트 관리를 위한 방법.
  6. 청구항 1에 있어서,
    휘발성 메모리 내에 LA 테이블을 카피(copy)함으로써 비휘발성 메모리 내에 상기 LA 테이블을 주기적으로 저장하는 단계를 더 포함하는, 메모리에서 파워 인터럽트 관리를 위한 방법.
  7. 청구항 6에 있어서,
    상기 트랜잭션 로그 내에 상기 트랜잭션 로그 정보를 기록하는 단계를 더 포함하고, 상기 트랜잭션 로그 정보는 휘발성 메모리 내의 상기 LA 테이블이 비휘발성 메모리 내에 카피되었던 마지막 시간 후에 상기 비휘발성 메모리를 포함하는 메모리 시스템에서 발생된 기입들에 관한 정보를 포함하는, 메모리에서 파워 인터럽트 관리를 위한 방법.
  8. 청구항 1 내지 청구항 7 중 어느 한 항에 있어서,
    상기 트랜잭션 로그를 업데이트하는 단계는 하나의 페이지의 트랜잭션 로그 정보를 재생성하는 단계를 포함하는, 메모리에서 파워 인터럽트 관리를 위한 방법.
  9. 청구항 8에 있어서,
    상기 방법은 메모리 내의 위치를 찾기 위해서 상기 기입 룩 어헤드 정보를 사용하는 단계; 및 상기 위치에서 데이터에 연관된 개정 횟수를 위치결정함으로써 상기 위치에서 발생된 유효 기입을 검증하는 단계를 포함하는, 메모리에서 파워 인터럽트 관리를 위한 방법.
  10. 메모리 시스템을 동작시키는 방법으로서,
    데이터가 최근에 기입된 곳과 데이터를 수신할 준비가 된 자유 블록들이 위치하는 곳을 나타내는 마모 평준화 알고리즘으로부터의 정보를 사용하여 생성되는 기입 룩 어헤드 정보를 생성하는 단계;
    트랜잭션 로그 정보의 변질된 페이지와 연관된 트랜잭션 로그 정보를 판정하기 위해, 상기 기입 룩 어헤드 정보를 사용하여 트랜잭션 로그 내의 트랜잭션 로그 정보의 변질된 페이지와 연관된 트랜잭션 로그 정보를 상기 트랜잭션 로그 내의 새로운 페이지에 기입함으로써 상기 트랜잭션 로그를 업데이트하는 단계; 및
    상기 업데이트된 트랜잭션 로그를 사용하여 비휘발성 메모리 내의 논리 어드레스(LA) 테이블을 업데이트하는 단계를 포함하는, 메모리 시스템을 동작시키는 방법.
  11. 청구항 10에 있어서,
    파워 인터럽트에 앞서, 비휘발성 메모리 내에 상기 LA 테이블을 주기적으로 저장하는 단계를 더 포함하고, 상기 저장된 LA 테이블은 휘발성 메모리 내의 LA 테이블의 카피인, 메모리 시스템을 동작시키는 방법.
  12. 청구항 11에 있어서,
    휘발성 메모리 내의 상기 LA 테이블은 상기 메모리 시스템 내의 각 기입 동작 후에 업데이트되는, 메모리 시스템을 동작시키는 방법.
  13. 청구항 11에 있어서,
    상기 LA 테이블을 업데이트하기에 앞서, 비휘발성 메모리 내의 상기 LA 테이블은 상기 LA 테이블이 비휘발성 메모리 내에 저장되었던 마지막 시간과 파워 인터럽트 사이에서 발생된 기입 동작들에 관한 정보를 포함하지 않는, 메모리 시스템을 동작시키는 방법.
  14. 청구항 10에 있어서,
    파워 인터럽트 후에 메모리 시스템의 기동시, 휘발성 메모리에 상기 업데이트된 LA 테이블을 카피하는 단계를 더 포함하는, 메모리 시스템을 동작시키는 방법.
  15. 삭제
  16. 청구항 10 내지 청구항 14 중 어느 한 항에 있어서,
    상기 기입 룩 어헤드 정보는 데이터가 상기 메모리 시스템 내에 다음으로 기입될 위치에 관한 정보를 포함하는, 메모리 시스템을 동작시키는 방법.
  17. 청구항 16에 있어서,
    상기 방법은 데이터가 고체상태 드라이브 내의 다음으로 기입될 위치에서 발생된 유효 기입을, 상기 위치에서 상기 데이터에 연관된 개정 횟수를 확인함으로써 검증하는 단계를 포함하는, 메모리 시스템을 동작시키는 방법.
  18. 메모리 시스템에서 파워 인터럽트 관리를 위한 방법에 있어서,
    데이터가 최근에 기입된 곳과 데이터를 수신할 준비가 된 자유 블록들이 위치하는 곳을 나타내는 마모 평준화 알고리즘으로부터의 정보를 사용하여 생성되는 기입 룩 어헤드 정보를 사용하여 비휘발성 메모리 내의 트랜잭션 로그 또는 논리 어드레스(LA) 테이블에서 없었던 기입 동작 정보를 찾는 단계;
    상기 기입 동작 정보에 연관된 개정 횟수를 확인함으로써 상기 기입 동작 정보가 유효한지를 검증하는 단계;
    트랜잭션 로그 정보의 변질된 페이지와 연관된 트랜잭션 로그 정보를 판정하기 위해, 상기 기입 동작 정보를 사용하여 상기 트랜잭션 로그 내의 트랜잭션 로그 정보의 변질된 페이지와 연관된 트랜잭션 로그 정보를 상기 트랜잭션 로그 내의 새로운 페이지에 기입함으로써 상기 트랜잭션 로그를 업데이트하는 단계;
    상기 업데이트된 트랜잭션 로그를 사용하여 비휘발성 메모리 내의 상기 LA 테이블을 업데이트하는 단계; 및
    파워 인터럽트 후에 휘발성 메모리 내에 상기 LA 테이블을 저장하는 단계를 포함하는, 메모리 시스템에서 파워 인터럽트 관리를 위한 방법.
  19. 청구항 18에 있어서,
    상기 기입 동작에 관한 정보를 찾는 단계는 상기 기입 룩 어헤드 정보로부터 상기 메모리 시스템 내에 데이터가 다음으로 기입될 위치를 판정하는 단계를 포함하는, 메모리 시스템에서 파워 인터럽트 관리를 위한 방법.
  20. 청구항 19에 있어서,
    상기 데이터가 다음으로 기입될 위치를 판정하는 단계는 상기 마모 평준화 알고리즘을 사용하는 단계를 포함하는, 메모리 시스템에서 파워 인터럽트 관리를 위한 방법.
  21. 청구항 18에 있어서,
    상기 트랜잭션 로그를 업데이트하는 단계는 상기 파워 인터럽트 후에 변질된 마지막 페이지의 상기 트랜잭션 로그를 업데이트하는 단계를 포함하는, 메모리 시스템에서 파워 인터럽트 관리를 위한 방법.
  22. 청구항 18 내지 청구항 21 중 어느 한 항에 있어서,
    상기 방법은 주기적으로 상기 비휘발성 메모리 내에 휘발성 메모리 내의 상기 LA 테이블의 카피를 저장하는 단계를 포함하는, 메모리 시스템에서 파워 인터럽트 관리를 위한 방법.
  23. 청구항 18 내지 청구항 21 중 어느 한 항에 있어서,
    상기 방법은 상기 비휘발성 메모리 내에 상기 LA 테이블의 카피를 저장한 후에 발생하는 동작들에 대해 상기 트랜잭션 로그 내의 판독 및 기입 동작들에 관한 정보를 기록하는 단계를 포함하는, 메모리 시스템에서 파워 인터럽트 관리를 위한 방법.
  24. 청구항 18 내지 청구항 21 중 어느 한 항에 있어서,
    상기 업데이트된 트랜잭션 로그를 사용하여 비휘발성 메모리 내에 상기 LA 테이블을 업데이트하는 단계는 상기 LA 테이블이 상기 비휘발성 메모리로 카피되었던 마지막 시간과 상기 파워 인터럽트 사이에 발생한 기입에 관한 정보를 추가하는 단계를 포함하는, 메모리 시스템에서 파워 인터럽트 관리를 위한 방법.
  25. 메모리 시스템으로서,
    논리 어드레스(LA) 테이블 및 트랜잭션 로그를 저장하도록 구성된 고체상태 비휘발성 메모리 - 상기 LA 테이블은 휘발성 메모리 내의 LA 테이블의 사본임 - ; 및
    제어기
    를 포함하고,
    상기 제어기는,
    트랜잭션 로그 정보의 변질된 페이지와 연관된 트랜잭션 로그 정보를 판정하기 위해, 기입 룩 어헤드 정보를 사용하여 트랜잭션 로그 내의 트랜잭션 로그 정보의 변질된 페이지와 연관된 트랜잭션 로그 정보를 상기 트랜잭션 로그 내의 새로운 페이지에 기입함으로써 상기 트랜잭션 로그를 업데이트하고,
    상기 트랜잭션 로그 정보를 사용하여 비휘발성 메모리 내의 상기 LA 테이블을 업데이트하도록 구성되고,
    상기 기입 룩 어헤드 정보는 데이터가 최근에 기입된 곳과 데이터를 수신할 준비가 된 자유 블록들이 위치하는 곳을 나타내는 마모 평준화 알고리즘으로부터의 정보를 사용하여 생성되는, 메모리 시스템.
  26. 청구항 25에 있어서,
    상기 트랜잭션 로그는 비휘발성 메모리 내에 상기 LA 테이블을 저장한 후에 상기 메모리 시스템에서 발생하는 기입들에 관한 정보를 기록하도록 구성된, 메모리 시스템.
  27. 청구항 25에 있어서,
    상기 제어기는 상기 트랜잭션 로그 내의 마지막 페이지의 트랜잭션 로그 정보를 재생성하기 위해 상기 기입 룩 어헤드 정보를 사용하도록 구성된, 메모리 시스템.
  28. 삭제
  29. 청구항 25 내지 청구항 27 중 어느 한 항에 있어서,
    파워 인터럽트 후에 상기 메모리 시스템에 일시적으로 파워(power)를 제공하기 위해 상기 비휘발성 메모리에 커패시터가 결합된, 메모리 시스템.
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
KR1020127010707A 2009-10-01 2010-09-20 파워 인터럽트 관리 KR101447786B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/572,083 US8990476B2 (en) 2009-10-01 2009-10-01 Power interrupt management
US12/572,083 2009-10-01
PCT/US2010/002557 WO2011040950A2 (en) 2009-10-01 2010-09-20 Power interrupt management

Publications (2)

Publication Number Publication Date
KR20120060236A KR20120060236A (ko) 2012-06-11
KR101447786B1 true KR101447786B1 (ko) 2014-10-06

Family

ID=43824049

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127010707A KR101447786B1 (ko) 2009-10-01 2010-09-20 파워 인터럽트 관리

Country Status (7)

Country Link
US (3) US8990476B2 (ko)
EP (1) EP2483782B1 (ko)
JP (1) JP5585919B2 (ko)
KR (1) KR101447786B1 (ko)
CN (1) CN102576332B (ko)
TW (1) TWI459399B (ko)
WO (1) WO2011040950A2 (ko)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8990476B2 (en) * 2009-10-01 2015-03-24 Micron Technology, Inc. Power interrupt management
US8543758B2 (en) 2011-05-31 2013-09-24 Micron Technology, Inc. Apparatus including memory channel control circuit and related methods for relaying commands to logical units
US9514838B2 (en) * 2011-05-31 2016-12-06 Micron Technology, Inc. Apparatus including memory system controllers and related methods for memory management using block tables
US20130067289A1 (en) * 2011-09-14 2013-03-14 Ariel Maislos Efficient non-volatile read cache for storage system
US9104614B2 (en) * 2011-09-16 2015-08-11 Apple Inc. Handling unclean shutdowns for a system having non-volatile memory
US9075758B2 (en) 2012-03-19 2015-07-07 Samsung Electronics Co., Ltd. Removable storage device with transactional operation support and system including same
WO2013147894A1 (en) * 2012-03-30 2013-10-03 Intel Corporation Solid state drive management in power loss recovery
US9037820B2 (en) * 2012-06-29 2015-05-19 Intel Corporation Optimized context drop for a solid state drive (SSD)
US9015404B2 (en) * 2012-09-28 2015-04-21 Intel Corporation Persistent log operations for non-volatile memory
US9959070B2 (en) * 2013-03-06 2018-05-01 Ab Initio Technology Llc Managing operations on stored data units
US9875054B2 (en) 2013-03-06 2018-01-23 Ab Initio Technology Llc Managing operations on stored data units
US10133500B2 (en) 2013-03-06 2018-11-20 Ab Initio Technology Llc Managing operations on stored data units
US9218279B2 (en) * 2013-03-15 2015-12-22 Western Digital Technologies, Inc. Atomic write command support in a solid state drive
TWI498902B (zh) * 2013-11-28 2015-09-01 Phison Electronics Corp 資料管理方法、記憶體儲存裝置及記憶體控制電路單元
US10359937B2 (en) * 2013-12-20 2019-07-23 Sandisk Technologies Llc System and method of implementing a table storage support scheme
KR102625637B1 (ko) * 2016-02-01 2024-01-17 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
GB2559119B (en) 2017-01-20 2020-12-30 Advanced Risc Mach Ltd Apparatus and methods to prolong lifetime of memories
US11314635B1 (en) * 2017-12-12 2022-04-26 Amazon Technologies, Inc. Tracking persistent memory usage
US11599403B2 (en) * 2018-10-03 2023-03-07 SK Hynix Inc. Logging mechanism for memory system
US11436153B2 (en) * 2020-05-26 2022-09-06 Western Digital Technologies, Inc. Moving change log tables to align to zones
CN113885778B (zh) * 2020-07-02 2024-03-08 慧荣科技股份有限公司 数据处理方法及对应的数据储存装置
CN113961140B (zh) 2020-07-02 2024-06-11 慧荣科技股份有限公司 数据处理方法及对应的数据储存装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080009314A (ko) * 2005-05-09 2008-01-28 샌디스크 아이엘 엘티디 플래시 메모리 시스템의 고속 웨이크-업을 용이하게 하는방법 및 시스템

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63307551A (ja) 1987-06-08 1988-12-15 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン 先書きロギング型のトランザクシヨン向けシステム中のロールバツク方法
US7533214B2 (en) * 2002-02-27 2009-05-12 Microsoft Corporation Open architecture flash driver
US6944796B2 (en) * 2002-06-27 2005-09-13 Intel Corporation Method and system to implement a system event log for system manageability
US7093101B2 (en) * 2002-11-21 2006-08-15 Microsoft Corporation Dynamic data structures for tracking file system free space in a flash memory device
US7003620B2 (en) * 2002-11-26 2006-02-21 M-Systems Flash Disk Pioneers Ltd. Appliance, including a flash memory, that is robust under power failure
US7885921B2 (en) * 2004-11-18 2011-02-08 International Business Machines Corporation Managing atomic updates on metadata tracks in a storage system
JP4248510B2 (ja) 2005-03-24 2009-04-02 株式会社東芝 計算機システム、ディスク装置およびデータ更新制御方法
US8452929B2 (en) * 2005-04-21 2013-05-28 Violin Memory Inc. Method and system for storage of data in non-volatile media
US8205034B2 (en) 2006-08-09 2012-06-19 Hitachi Ulsi Systems Co., Ltd. Flash memory drive having data interface
WO2008087634A1 (en) 2007-01-18 2008-07-24 Sandisk Il Ltd. A method and system for facilitating fast wake-up of a flash memory system
US7934052B2 (en) * 2007-12-27 2011-04-26 Pliant Technology, Inc. System and method for performing host initiated mass storage commands using a hierarchy of data structures
US7945762B2 (en) * 2008-01-29 2011-05-17 Cadence Design Systems, Inc. Method and apparatus for memory management in a non-volatile memory system using a block table
US7979626B2 (en) * 2008-05-13 2011-07-12 Microsoft Corporation Flash recovery employing transaction log
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
TW201011755A (en) * 2008-09-10 2010-03-16 Skymedi Corp Flash memory system and its data recovery method
US8990476B2 (en) * 2009-10-01 2015-03-24 Micron Technology, Inc. Power interrupt management
US8495338B2 (en) * 2010-12-03 2013-07-23 Micron Technology, Inc. Transaction log recovery

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080009314A (ko) * 2005-05-09 2008-01-28 샌디스크 아이엘 엘티디 플래시 메모리 시스템의 고속 웨이크-업을 용이하게 하는방법 및 시스템

Also Published As

Publication number Publication date
JP5585919B2 (ja) 2014-09-10
US20150185798A1 (en) 2015-07-02
WO2011040950A2 (en) 2011-04-07
TW201120904A (en) 2011-06-16
JP2013506903A (ja) 2013-02-28
US20110082963A1 (en) 2011-04-07
US8990476B2 (en) 2015-03-24
US9874918B2 (en) 2018-01-23
EP2483782A2 (en) 2012-08-08
CN102576332A (zh) 2012-07-11
US10564690B2 (en) 2020-02-18
TWI459399B (zh) 2014-11-01
CN102576332B (zh) 2015-04-29
WO2011040950A3 (en) 2011-08-18
US20180101209A1 (en) 2018-04-12
EP2483782A4 (en) 2014-06-04
KR20120060236A (ko) 2012-06-11
EP2483782B1 (en) 2015-11-25

Similar Documents

Publication Publication Date Title
KR101447786B1 (ko) 파워 인터럽트 관리
US8984253B2 (en) Transaction log recovery
US8788876B2 (en) Stripe-based memory operation
US9223391B2 (en) Apparatus power control
US11003373B2 (en) Systems and methods for managing physical-to- logical address information
US20160224253A1 (en) Memory System and Method for Delta Writes
US9274883B2 (en) Apparatuses and methods for storing validity masks and operating apparatuses
US20190361608A1 (en) Data storage device and operation method for recovery, and storage system having the same
KR20220130526A (ko) 메모리 시스템 및 그 동작 방법
CN109840214B (zh) 数据存储装置及其操作方法
US11126545B2 (en) Memory system and operating method thereof
CN110806947B (zh) 预测错误校正装置、其操作方法和用该装置的存储器系统

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170830

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180920

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190918

Year of fee payment: 6