KR101204680B1 - 플래시 제어기 캐시 아키텍처 - Google Patents

플래시 제어기 캐시 아키텍처 Download PDF

Info

Publication number
KR101204680B1
KR101204680B1 KR1020067018401A KR20067018401A KR101204680B1 KR 101204680 B1 KR101204680 B1 KR 101204680B1 KR 1020067018401 A KR1020067018401 A KR 1020067018401A KR 20067018401 A KR20067018401 A KR 20067018401A KR 101204680 B1 KR101204680 B1 KR 101204680B1
Authority
KR
South Korea
Prior art keywords
data
cache
policy
host
read
Prior art date
Application number
KR1020067018401A
Other languages
English (en)
Other versions
KR20070022659A (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 KR20070022659A publication Critical patent/KR20070022659A/ko
Application granted granted Critical
Publication of KR101204680B1 publication Critical patent/KR101204680B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash 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/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/21Employing a record carrier using a specific recording technology
    • G06F2212/214Solid state disk
    • G06F2212/2146Solid state disk being detachable, e.g.. USB 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/28Using a specific disk cache architecture
    • G06F2212/282Partitioned cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy

Landscapes

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

Abstract

비-휘발성 메모리 및 호스트 사이에 개재된 버퍼 캐시는 상이한 정책들과 함께 동작할 수 있는 세그먼트들로 분할될 수 있다. 캐시 정책들은 라이트-쓰루, 기록 및 판독-미리보기를 포함한다. 라이트-쓰루 및 라이트 백 정책들은 속도를 개선시킬 수 있다. 판독-미리보기 캐시는 버퍼 캐시와 비-휘발성 메모리 사이의 버스의 사용을 더 효율적이도록 한다. 세션 명령은 데이터가 전력 손실에 대해 보증함으로써 휘발성 메모리에서 유지되도록 한다.
비-휘발성 메모리, 호스트, 버퍼 캐시, 판독 미리보기, 전력 손실.

Description

플래시 제어기 캐시 아키텍처{FLASH CONTROLLER CACHE ARCHITECTURE}
본 발명은 반도체 전기적으로 소거할 수 있는 프로그래밍 가능한 판독 전용 메모리들(EEPROM)에 관한 것이며, 특히 EEPROM 또는 다른 유사한 메모리들을 사용하는 제거 가능한 메모리 카드들을 위한 제어기 캐시 시스템에 관한 것이다.
플래시 EEPROM 시스템들은 특히, 호스트 시스템과 제거 가능하게 접속되는 동봉된 카드에서 패키징될 때, 다수의 애플리케이션들에 적용되고 있다. 일부의 상업적으로 이용 가능한 카드들로는 CompactFlashTM(CF) 카드들, 멀티미디어 카드(MMC), 보안 디지털(SD) 카드들, 스마트 미디어 카드들, 직원 태그들(P-태그 및 메모리 스틱 카드들이 있다. 이러한 카드들 중 하나의 공급자는 본 출원의 양수인인 Sandisk Corporation이다. 이와 같은 카드가 사용될 수 있는 호스트 시스템들은 개인용 컴퓨터들, 노트북 컴퓨터들, 휴대용 계산 장치들, 카메라들, 오디오 재생 장치들 등을 포함한다. 플래시 EEPROM 시스템들은 또한 호스트 시스템들에 내장된 대용량 기억장치로서 사용된다.
이와 같은 비-휘발성 메모리 시스템들은 시스템 제어기 및 플로팅-게이트 메모리 셀들의 어레이를 포함한다. 제어기는 사용자 데이터를 저장하고 검색하기 위 해 메모리 셀 어레이의 동작 및 호스트 시스템과의 통신을 관리한다. 메모리 셀들은 함께 셀들의 블록들로 그룹화되며, 셀들의 블록은 동시에 소거 가능한 셀들의 최소 그룹이다. 데이터를 셀들의 하나 이상의 블록들에 기록하기 전에, 셀들의 이러한 블록들이 소거된다. 사용자 데이터는 전형적으로 호스트 및 메모리 어레이 사이에서 섹터들로 전달된다. 사용자 데이터의 섹터는 핸들링하기 편리하고, 종종 표준 디스크 드라이브 섹터 크기(512 바이트)와 동일한, 바람직하게는 메모리 블록의 용량보다 적은 임의의 양일 수 있다. 하나의 상업적인 아키텍처에서, 메모리 시스템 블록은 오버헤드 데이터 플러스 사용자 데이터의 한 섹터를 저장하도록 하는 크기가 되고, 상기 오버헤드 데이터는 블록에 저장된 사용자 데이터에 대한 에러 수정 코드(ECC)와 같은 정보, 블록의 사용 내력, 메모리 셀 블록의 결함들 및 다른 물리적인 정보를 포함한다. 이 유형의 비-휘발성 메모리 시스템의 다양한 구현예들이 다음의 미국 특허들 및 SanDisk Corporation에 할당된 계류중인 출원들에 설명되어 있고, 이들 각각은 전체가 본원에 참조되어 있다: 미국 특허 제5,172,338호, 제5,602,987호, 제5,315,541호, 제5,200,959호, 제5,270,979호, 제5,428,621호, 제5,663,901호, 제5,532,962호, 제5,430,859호 및 제5,712,180호, 제6,222,762호와 제6,151,248호. 다른 유형의 비-휘발성 메모리 시스템은 사용자 데이터의 다중 섹터를 저장하는 더 큰 메모리 셀 블록 크기를 사용한다.
두 개의 일반적인 메모리 셀 어레이 아키텍처들은 상업적인 애플리케이션, NOR 및 NAND를 발견하였다. 전형적인 NOR 어레이에서, 메모리 셀들은 셀들의 로우(row)들을 따라 확장한 워드 라인들에 접속된 제어 게이트들로 컬럼 방향으로 확 장하는 드레인 확산들 및 인접한 비트 라인 소스 사이에 접속된다. 메모리 셀은 소스 및 드레인 사이의 셀 채널 영역의 적어도 일부 위에 위치된 적어도 하나의 저장 요소를 포함한다. 따라서, 저장 요소들 상의 프로그래밍된 전하 레벨은 셀들의 동작 특성을 제어하며, 이 특성은 그 이후에 어드레싱되는 메모리 셀들에 적절한 전압들을 인가함으로써 판독될 수 있다.
NAND 어레이는 셀들의 컬럼들을 형성하기 위하여 기준 전위 및 개별적인 비트 라인 사이에서 하나 이상의 선택 트랜지스터들과 함께 접속되는 16 또는 32와 같은 두 개 이상의 메모리 셀들의 시리즈 스트링(series string)들을 사용한다. 워드 라인들은 다수의 이러한 컬럼들 내에서 셀을 가로질러 확장한다. 컬럼 내의 개별적인 셀은 스트링 내의 잔여 셀들이 하드(hard)로 전환되도록 하여, 스트링을 통해 흐르는 전류가 어드레싱된 셀에 저장된 전하 레벨을 따르도록 함으로써 프로그래밍 동안 판독 및 검증된다.
사용자 데이터를 메모리 어레이 내로 프로그래밍하고 메모리 어레이로부터 사용자 데이터를 판독하는 동안 병렬처리 정도(degree of parallelism)를 증가시키기 위하여, 상기 어레이는 전형적으로 병렬 동작을 허용하여 데이터의 섹터들이 동시에 여러 또는 모든 플레인들 각각으로 프로그래밍되거나 상기 플레인들 각각으로부터 판독되도록 하는 자신의 데이터 레지스터들 및 다른 회로들을 포함하는 통상적으로 플레인들로서 칭해지는 서브-어레이들로 분할된다. 단일 집적 회로 상의 어레이가 물리적으로 플레인들로 분할되거나, 각 플레인이 개별적인 하나 이상의 집적 회로 칩들로부터 형성될 수 있다.
메모리 셀 어레이의 하나의 아키텍처는 편리하게도, 셀들의 서브-어레이 또는 다른 유닛 내에 존재하고 공통 소거 게이트를 공유하는 메모리 셀들의 하나 또는 두 개의 로우들로부터 블록을 형성한다. 단지 두 개의 프로그래밍된 임계 레벨들을 규정함으로써 각각의 플로팅 게이트 셀에 한 비트의 데이터를 저장하는 것이 현재 통상적일지라도, 두 개 이상의 플로팅-게이트 트랜지스터 임계 범위들을 설정함으로써 각 셀에 한 비트 이상의 데이터를 저장하는 경향이 있다. 플로팅 게이트마다 두 비트의 데이터(네 개의 임계 레벨 범위들 또는 상태들)를 저장하는 메모리 시스템이 현재 이용 가능하다. 물론, 데이터의 섹터를 저장하는데 필요로 되는 메모리 셀들의 수는 각 셀에 저장된 비트들의 수가 증가함에 따라 감소한다. 일반적인 반도체 프로세싱 및 셀 구조에서의 개선들에 기인하는 어레이의 스케일링과 결합된 이러한 경향은 셀들의 로우의 분할된 부분에서 메모리 셀 블록을 형성하는 것을 실용적이도록 하였다. 블록 구조는 또한 두 개의 상태(셀당 하나의 데이터 비트) 또는 네 개의 상태(셀당 두 개의 데이터 비트들)와 같은 어떤 다수의 상태로 메모리 셀들 각각의 동작 선택을 가능하게 하기 위하여 형성될 수 있다.
데이터를 플로팅-게이트 메모리 셀들로 프로그래밍하는데 상당한 양의 시간이 들 수 있기 때문에, 로우 내의 많은 수의 메모리 셀들이 전형적으로 동시에 프로그래밍된다. 그러나, 이러한 병렬처리의 증가로 인해 전력 요건 및 인접한 셀들의 전하들의 잠재적인 교란 또는 인접한 셀들 간의 상호작용이 증가된다. 본원에 전체가 통합되어 있는 SanDisk Corporation의 미국 특허 제5,890,192호는 상이한 동작적인 메모리 셀 유닛들(서브-어레이들)에 위치된 셀들의 상이한 블록들 내로 다수의 데이터 청크들을 동시적으로 프로그래밍함으로써 이러한 영향들을 최소화하는 시스템을 게시한다.
메모리를 더 효율적으로 관리하기 위하여, 블록들은 함께 링크되어 가상 블록들 또는 메타블록들을 형성할 수 있다. 즉, 각 메타블록은 각 플레인으로부터 하나의 블록을 포함하도록 규정된다. 메타블록의 사용은 본원에 전체가 통합되어 있는 국제 특허 출원 번호 WO02/058074호에 설명되어 있다. 메타블록은 데이터를 프로그래밍하고 판독하는 목적지로서 호스트 논리적인 블록 어드레스에 의해 식별된다. 마찬가지로, 메타블록의 모든 블록들은 함께 소거된다. 이와 같은 큰 블록들 및/또는 메타블록들로 동작되는 메모리 시스템 내의 제어기는 호스트로부터 수신된 논리적인 블록 어드레스들(LBAs), 및 메모리 셀 어레이 내의 물리적인 블록 번호들(PBNs) 사이의 변환을 포함하는 다수의 기능들을 수행한다. 블록들 내의 개별적인 페이지들은 전형적으로 블록 어드레스 내의 오프셋들에 의해 식별된다. 메타페이지는 메타블록 내의 데이터의 프로그래밍 유닛이다. 메타페이지는 메타블록의 각 블록들로부터의 하나의 페이지로 이루어진다.
섹터(512 바이트) 및 소거 블록 또는 메타블록(종종 128 섹터 이상) 간의 크기 차이로 인하여, 하나의 소거 블록, 또는 메타블록으로부터 다른 블록으로 복사하는 것이 종종 필요로 된다. 이와 같은 동작은 가베지 수집(garbage collection)이라 칭해진다. 가베지 수집 동작은 메모리 시스템의 기록 성능을 감소시킨다. 예를 들어, 메타블록 내의 일부 섹터들이 갱신되지만, 메타블록 내의 다른 섹터들은 갱신되지 않는 경우, 갱신된 섹터들은 새로운 메타블록에 기록될 수 있다. 갱신되 지 않은 섹터들은 즉시 또는 가베지 수집의 파트로서 약간 이후의 시간에 새로운 메타블록에 복사될 수 있다.
일부 메모리 시스템들에서, 물리적인 메모리 셀들은 또한 두 개 이상의 존(zone)들로 그룹화된다. 존은 특정된 범위의 논리적인 블록 어드레스가 맵핑되는 메모리 시스템 또는 물리적인 메모리의 임의의 분할된 서브셋일 수 있다. 예를 들어, 64 메가바이트의 데이터를 저장할 수 있는 메모리 시스템은 존당 16 메가바이트의 데이터를 저장하는 네 개의 존들로 분할될 수 있다. 그 후, 논리적인 블록 어드레스들의 범위가 또한 네 개의 그룹들로 분할되며, 하나의 그룹은 네 개의 존들 각각의 물리적인 블록들에 할당된다. 논리적인 블록 어드레스들은 전형적인 구현예에서 논리적인 블록 어드레스들이 맵핑되는 단일의 물리적인 존의 외부에 각각의 데이터가 결코 기록되지 않도록 강요받는다. 자신의 어드레싱, 프로그래밍 및 판독 회로들을 각각 갖는 플레인들(서브-어레이들)로 분할된 메모리 셀 어레이에서, 각 존은 바람직하게는, 다수의 플레인들로부터의 블록들을 포함하는데, 전형적으로는 각 플레인들로부터 동일한 수의 블록들을 포함한다. 존들은 논리 대 물리 변환과 같은 어드레스 관리를 간소화하는데 주로 사용되어, 변환 테이블이 더 작아지고, 이러한 테이블을 유지하는데 필요로 되는 RAM 메모리가 적어지며, 메모리의 현재 활성 영역을 어드레싱하기 위한 액세스 시간들이 더 고속이도록 하지만, 이러한 제한적인 특성으로 인하여, 웨어 레벨링(wear leveling)이 최적이지 않도록 할 수 있다.
메모리 어레이는 일반적으로 메모리 어레이로부터 데이터를 판독하고 상기 메모리 어레이로 데이터를 기록하기 위해 상기 어레이에 접속되는 회로를 갖는다. 이러한 회로의 파트로서, 데이터 캐시가 메모리의 어레이에 접속될 수 있다. 데이터 캐시는 단순히 메모리 어레이로 그리고 상기 메모리 어레이로부터 데이터를 전달하는데 사용될 수 있는 레지스터들의 로우일 수 있다. 데이터 캐시는 메모리 어레이의 로우 만큼의 데이터를 유지할 수 있다. 전형적으로, 데이터 캐시는 메모리 어레이와 동일한 칩 상에 형성된다.
제어기는 중앙 처리 유닛(CPU), 버퍼 캐시(버퍼 RAM) 및 CPU RAM을 포함하는 여러 구성요소들을 가질 수 있다. 버퍼 RAM 및 CPU RAM은 SRAM 메모리들일 수 있다. 이러한 구성요소들은 동일한 칩 상에 또는 별도의 칩들 상에 존재할 수 있다. CPU는 메모리 어레이로 그리고 메모리 어레이로부터 데이터를 전달하는 것을 포함하는 동작들을 수행하기 위하여 소프트웨어(펌웨어)를 실행하는 마이크로프로세서이다. 버퍼 캐시는 메모리 어레이로 기록하기 이전 또는 데이터를 호스트로 송신하기 이전에 데이터를 유지하는데 사용될 수 있다. 따라서, 버퍼 캐시는 플래시 및 호스트 동작들을 동시에 서비스할 수 있는 이중 액세스 메모리이다. CPU RAM은 버퍼 캐시 또는 메모리 어레이에 데이터의 어드레스 또는 명령과 같은 CPU에 의해 필요로 되는 데이터를 저장하는데 사용될 수 있다. 본원에 전체가 통합되어 있는 미국 특허 제5,297,148호에 제시된 하나의 예에서, 버퍼 캐시는 비-휘발성 메모리로서 사용되는 플래시 EEPROM 상의 웨어를 감소시키기 위하여 기록 개시로서 사용될 수 있다.
도1은 호스트 및 제거 가능한 메모리 카드 내의 비-휘발성 메모리(NVM) 사이 에 개재된 버퍼 캐시를 도시한다. 버퍼 패시는 호스트 버스에 의하여 호스트에 접속된다. 버퍼 캐시는 NVM 버스에 의하여 NVM에 접속된다. 호스트 버스의 대역폭이 NVM 버스의 대역폭보다 더 커서, NVM 버스는 호스트 및 NVM 사이에서 전달되는 데이터에 대한 병목(bottlenect)이 된다. 또한, NVM 내에서의 프로그래밍은 특히, 호스트가 단일 섹터의 데이터를 기록할 때, 병목이 될 수 있다. 단일-섹터 기록 이후에, 제어기는 호스트로부터 다른 섹터를 수용하기 이전에 기록 동작을 완료하기 위하여 NVM을 대기한다. 적은 수의 섹터들을 포함한 기록 및 판독 동작들은 병렬처리가 더 많은 수의 섹터들이 핸들링되도록 하는 경우에 비효율적일 수 있다. 호스트가 다수의 쓰레드(thread)들을 실행하는 경우, 메모리 카드 제어기에 의해 순차적으로 핸들링될 수 있는 다수의 데이터 스트림들이 발생된다.
따라서, NVM 내에 적은 양의 데이터를 포함하는 판독 및 기록 동작들의 효율을 개선시키는 메모리 제어기가 필요로 된다.
메모리 제어기는 세그먼트들로 분할되어 다중-세그먼트 캐시를 형성할 수 있는 버퍼 캐시를 포함한다. 상이한 세그먼트들은 버퍼 캐시를 사용하여 개별적인 동작들이 동시에 실행되도록 하는 상이한 정책(policy)들을 가질 수 있다. 세그먼트의 크기는 그 세그먼트를 사용하는 동작에 따라 변화될 수 있다.
다양한 정책들은 단일 세그먼트 캐시 또는 다중-세그먼트 캐시 중 하나에서 적용될 수 있다. 정책들은 판독이 수행될 때 부가적인 데이터를 저장하는 판독-미리보기(또는 프리페치) 캐시를 포함한다. 부가적인 데이터는 호스트가 그 후의 명령에서 요구할 것 같은 데이터인 것으로서 식별된다. 부가적인 데이터는 단순히 메모리 어레이 내의 다음의 순차적인 데이터일 수 있다. 라이트-쓰루 캐시 정책(write-through cache polity)은 데이터를 버퍼 캐시에 저장하고 나서, 데이터를 변경함이 없이 데이터를 메모리 어레이에 기록한다. 라이트-백 캐시 정책(write-back cache polity)은 데이터를 버퍼 캐시에 저장하고, 데이터를 메모리 어레이에 기록함이 없이 버퍼 캐시에서 데이터를 변경할 수 있다. 게다가, CPU는 데이터가 상기 CPU에 의해 필요로 되는 경우, 버퍼 캐시에 데이터를 저장할 수 있다. 이것은 통상적으로 CPU RAM에 저장되는 데이터를 포함할 수 있다.
버퍼 캐시는 일반적으로 비-휘발성 메모리여서, 단지 버퍼 캐시에만 저장되는 데이터는 메모리 시스템에 대한 전력의 손실이 존재하는 경우, 손실될 수 있다. 전력 손실은 제거 가능한 메모리 카드들에 대한 특정한 관심사이다. 캐싱 동작들, 가베지 수집 및 어드레스 변환 정보 갱신들을 포함하는 어떤 동작들은 데이터를 휘발성 메모리에만 저장할 수 있다. 호스트에 의한 전력 보증은 이와 같은 동작이 배경 동작들로서 수행되도록 한다. 세션 명령이 시간 기간 동안의 전력 보증으로서 호스트에 의해 메모리 카드에 송신될 수 있다.
도1은 종래 기술의 메모리 카드를 도시한 도면.
도2는 본 발명의 양상들이 구현될 수 있는 버퍼 캐시를 갖는 메모리 카드를 도시한 도면.
도3은 분할된 버퍼 캐시를 갖는 메모리 카드.
도4A-D를 포함한 도4는 판독-미리보기 캐시의 구현예를 도시한 도면.
도5는 판독-미리보기 구현예에 대한 호스트 명령 핸들링 프로세스를 도시한 도면.
도6A 및 B를 포함한 도6은 판독-미리보기 구현예에 대한 플래시 액세스 관리 프로세스를 도시한 도면.
도7은 캐시 유닛과 동일한 크기인 메타페이지를 갖는 플래시 메모리 및 두 개의 캐시 유닛을 갖는 버퍼 캐시의 일례를 도시한 도면.
도8A는 데이터가 캐시 히트(cache hit)의 결과로서 버퍼 캐시로부터 호스트로 송신되는 경우의 판독-미리보기 캐시 동작의 일례를 도시한 도면.
도8B는 데이터가 캐시 히트의 결과로서 버퍼 캐시로부터 호스트로 송신되는 경우의 판독-미리보기 캐시 동작의 다른 예를 도시한 도면.
도8C는 데이터가 캐시 히트의 결과로서 버퍼 캐시로부터 호스트로 송신되는 경우의 판독-미리보기 캐시 동작의 일례를 도시한 도면.
도9는 기록 캐시로서 버퍼 캐시를 사용하는 일례를 도시한 도면.
도10은 라이트-쓰루 캐시의 동작의 일례를 도시한 도면.
도11은 호스트로부터 버퍼 캐시로 및 버퍼 캐시로부터 NVM으로의 데이터의 파이프라이닝의 일례를 도시한 도면.
도12는 라이트-백 캐시 동작에 대한 흐름도.
도2는 버퍼 캐시(212)를 갖는 메모리 카드(210)를 도시한다. 데이터는 버퍼 캐시(212)를 통하여 호스트(214) 및 NVM 사이에서 전달된다. NVM(220)은 플래시 EEPROM 또는 데이터 저장에 사용된 다른 유사한 메모리일 수 있다. 메모리 카드(210)는 자신(210)이 카메라, PC 또는 전화와 같은 호스트 시스템에 제거 가능하게 접속되도록 하는 호스트 인터페이스(222)를 갖는다. 메모리 카드(210)는 버퍼 캐시(212) 및 NVM(220) 사이에 NVM 인터페이스(224)를 갖는다. NVM 인터페이스(224)는 버퍼 캐시(212) 및 NVM(220) 사이의 데이터 교환을 용이하게 하는 회로를 포함한다. 중앙 처리 장치(CPU)(230)는 메모리 카드(210) 내에서 데이터 동작들을 제어한다. CPU(230) 내의 소프트웨어는 호스트(214)에 의해 송신된 명령들에 응답하여 동작들을 구현한다. 예를 들어, 호스트(214)가 특정한 논리적인 어드레스 범위를 갖는 데이터를 요청하는 경우, CPU(230)는 NVM(220) 내의 데이터의 위치를 결정하고, 그 데이터를 회수하여 이를 호스트(214)에 송신하데 필요로 되는 단계를 수행한다. 스태틱 랜덤 액세스 메모리(SRAM)와 같은 CPU RAM(232)은 CPU(230)에 의해 사용되는 데이터를 저장하는데 사용된다. CPU RAM(232) 내의 데이터는 CPU(230)에 의해 고속으로 액세스될 수 있다. 전형적으로, CPU RAM(232)에 저장된 데이터는 CPU(230)에 의해 자주 사용되는 데이터이다.
분할된 캐시
도3은 메모리 카드(210)와 유사하지만 분할된 버퍼 캐시(312)를 갖는 메모리 카드(310)를 도시한다. 도3의 분할된 버퍼 캐시와 같은 분할된 메모리는 상이한 정책들에 따라 개별적으로 동작될 수 있는 세그먼트들을 갖는다. 분할된 버퍼 캐시(312)는 CPU 내의 소프트웨어를 통하여 또는 하드웨어 자동조작을 통하여 분할될 수 있다. 도3에 도시된 버퍼 캐시(312)는 세그먼트들(1-4)로 분할된다. 각 세그먼트는 개별적으로 사용될 수 있고, 상이한 정책을 각각 포함할 수 있다. 그 결과는 네 개의 개별적인 버퍼 캐시 메모리들을 병렬로 갖는 것과 유사하다.
CPU RAM(332) 내의 테이블은 버퍼 캐시(312)의 특성들의 테이블(333)을 유지한다. 개별적인 테이블 엔트리는 버퍼 캐시(312)에서 각 세그먼트에 대해 유지된다. 엔트리는 버퍼 캐시 내의 세그먼트의 물리적인 위치, 세그먼트에 저장된 데이터의 논리적인 어드레스들 및 세그먼트에 사용되는 캐시 정책을 제공하는 필드들을 갖는다. 세그먼트의 크기는 요구조건들에 따라 변경될 수 있다. 크기의 변화는 특정 세그먼트를 위해 할당된 물리적인 어드레스 범위를 변화시킬 것이다. 분할은 하드웨어를 통해서 또한 달성될 수 있다. 그러나, 이와 같은 분할은 용이하게 변경되지 않고, 소프트웨어 분할보다 구현하기가 더 어렵다.
분할된 버퍼 캐시(312)와 같은 분할된 버퍼 캐시는 통상적인(분할되지 않은) 버퍼 캐시보다 크기가 더 클 수 있다. 통상적인 버퍼 캐시의 크기는 일반적으로 어떤 성능 임계치를 달성하기 위하여 저장될 최대량의 데이터에 의해 결정된다. 비-캐싱 아키텍처들에서, 버퍼 캐시 크기는 전형적으로 8-16kB이다. 분할된 캐시에서, 단일 세그먼트가 기록 캐시로서 동작하도록 하는 것이 바람직할 수 있으므로, 버퍼 캐시의 전체 크기가 더 클 필요가 있다. 32kB 또는 그 이상의 버퍼 크기가 사용될 수 있다.
버퍼 캐시 또는 버퍼 캐시의 세그먼트에서 구현될 수 있는 캐시 정책들은 판독 및 기록 캐시 정책들 둘 모두를 포함한다. 판독 미리보기는 판독 캐시 정책의 일례이다. 라이트-쓰루 및 라이트-백은 기록-캐시 정책들의 예들이다. 버퍼 캐시의 세그먼트는 또한 CPU에 의해 사용되는 데이터를 유지하기 위하여 CPU에 의해 사용될 수 있다. 이것은 통상적으로 CPU RAM에 저장되는 데이터를 포함할 수 있다. 버퍼 캐시에 저장된 CPU 데이터는 프로그램 변수들, 어드레스 변환 정보 및 복사 버퍼들을 포함할 수 있다. 버퍼 캐시에 저장된 CPU 데이터는 일부의 종래 기술의 예에서 CPU RAM에 저장되는 데이터일 수 있다. CPU 데이터에 버퍼 캐시의 세그먼트를 제공하면 CPU RAM 이외에 사용될 수 있는 이 데이터를 저장하는 대안적인 위치가 제공된다.
판독 미리보기
버퍼 캐시는 NVM으로부터 호스트로 전달되고 있는 데이터를 유지하는 판독 캐시로서 사용될 수 있다. 판독 캐시는 전체 버퍼 캐시이거나, 분할되는 경우, 버퍼 캐시의 세그먼트일 수 있다. 판독-미리보기(RLA) 캐시는 호스트에 의해 요청될 수 있는 데이터가 요청이 그 데이터에 대하여 호스트에 의해 실제로 행해지기 이전에 캐시에 저장되도록 한다. 예를 들어, 호스트가 특정한 논리적인 어드레스 범위를 갖는 데이터를 요청하는 경우에, 요청된 데이터에 순차적인 논리적 어드레스 범위를 갖는 부가적인 데이터가 RLA 캐시에 저장될 수 있다. 호스트가 논리적으로 최종 요청된 데이터에 순차적인 데이터를 자주 요청하기 때문에, 저장된 데이터가 요청될 가능성이 높다. RLA 데이터는 또한 호스트 데이터 사용 패턴에 기초하여 다른 방식들로 선택될 수 있다. 캐싱된 데이터가 그 후에 요청되는 경우, 상기 데이터는 NVM에 액세스함이 없이 RAL로부터 호스트로 직접 전달될 수 있다. 이러한 전단은 NVM으로부터의 전달보다 더 고속이며, NVM 버스를 사용하지 않는다. 따라서, NVM 버스는 데이터가 호스트로 전달되고 있는 동안, 다른 동작들을 위해 사용될 수 있다.
도4는 RLA 캐시의 동작의 일례를 도시한다. 도4A는 호스트 버스(425)를 통하여 호스트(414)와 통신하는 RLA 캐시(412)를 도시한다. RLA 캐시(412)는 또한 NVM 버스(421)를 통하여 NVM(420)과 통신한다. 호스트(414)는 섹터 0-2로 이루어진 데이터의 일부를 요청한다. 이 예에서 상기 데이터는 섹터에 저장되며, 섹터는 논리적인 어드레스에 의해 어드레싱 가능하다. 다른 예들에서, 데이터는 다른 어드레싱 가능한 데이터 유닛들에 저장될 수 있다. RLA 캐시(412)는 비어서, 섹터들 0-2는 NVM(420)로부터 전달되어야 한다. 도4B는 섹터들 3-7이 섹터들 0-2와 함께 NVM(420)으로부터 RLA 캐시(412)로 전달되는 것을 도시한다. 도4C는 섹터들 0-2가 RLA 캐시(412)로부터 호스트(414)로 전달되는 것을 도시한다. RLA(412)로부터 호스트(414)로의 섹터들 0-2의 전달은 RLA 캐시(414) 내의 공간을 자유롭게 하여, 세 개 이상의 섹터들이 거기에 저장될 수 있다. 그러므로, 섹터들 8-10이 NVM(420)으로부터 전달되어 RLA 캐시(412)를 채운다. 도4D는 제2 요청이 호스트(414)로부터 수신되는 것을 도시한다. 이 요청은 섹터들 3-8에 대한 요청이다. 따라서, 제2 요청의 모든 요청된 섹터들은 RLA 캐시(412) 내에 존재한다. 섹터들 3-8이 RLA 캐시(412) 내에 존재하기 때문에, NVM(420)으로의 액세스는 필요로 되지 않고, 섹터들 3-8은 RLA 캐시(412)로부터 호스트(414)로 직접 전달될 수 있다. 제2 요청이 RLA 캐시(412) 내에 존재하지 않는 섹터에 대한 것이었다면, 요청된 섹터들은 NVM(420)으로부터 회수되어야 한다.
플래시 메모리용 RLA 캐시의 하나의 구현예에서, RLA 캐시를 관리하기 위하여 두 개의 프로세스들이 사용된다. 하나인 도5의 호스트 명령 핸들링 프로세스는 호스트 명령들을 핸들링한다. 다른 하나인 도6의 플래시 액세스 관리 프로세스는 RLA 동작을 관리한다.
도5, 6A 및 6B는 RLA 동작들을 구현하는데 사용되는 세 개의 관련 프로세스들을 도시한다. 도5는 RLA 캐시(판독 캐시)로부터 호스트로의 데이터의 섹터들의 전달에 대한 책임이 있는 호스트 명령 핸들링 프로세스를 도시한다. 새로운 명령이 수신되는 경우, 그 명령이 판독 명령인지의 여부가 우선 결정된다(510). 판독 명령이 아닌 경우, 상기 명령은 RLA 동작들 없이 실행된다(512). 판독 명령의 경우, 요청된 섹터가 판독 캐시 내에 존재하지 않는다고 결정되면(514), 프로세스는 그 섹터가 플래시로부터 판독 캐시로 전달되는 것을 대기한다(516). 일단 요청된 섹터가 판독 캐시에 존재하면, 그 섹터는 호스트로 전달된다(518). 더 많은 섹터들이 판독되어야 하는 경우(519), 프로세스는 그 다음 섹터들에 대해 이 시퀀스를 반복한다. 따라서, 이 프로세스는 모든 요청된 섹터들이 전달될 때까지 요청된 섹터를 판독 캐시로부터 호스트로 전달하는 것을 유지한다.
도6A 및 6B는 플래시로부터 판독 캐시로 섹터들을 전달할 책임이 있는 프로세스를 도시한다. 도6A는 호스트 인터럽트 프로세스를 도시한다. 호스트 명령은 일반적으로 도5의 호스트 명령 핸들링 프로세스 및 도6A의 호스트 인터럽트 프로세스 둘 모두를 인보킹(invoking)한다. 도6A의 호스트 인터럽트 프로세스의 주요 목적은 도6B의 플래시 액세스 관리 프로세스를 위한 명령 큐(command queue) 내에 인터럽팅 호스트 명령들을 큐잉하는 것이다. 호스트 명령이 판독 명령이 아니라고 결정되면(620), 상기 명령은 플래시 액세스 관리 프로세스를 위한 명령 큐 내에 놓인다(622). 명령 큐는 하나 이상의 명령들을 유지할 수 있다. 호스트 명령이 판독 명령이면, 조정 판독 명령 단계가 수행된다(624). 조정 판독 명령 단계(624)는 요청된 섹터들 중 일부가 판독 캐시 내에 존재하는지 또는 모두가 판독 캐시 내에 존재하는지의 여부에 따라서 플래시 메모리에 액세스하는데 사용되는 판독 명령을 변경시킨다. 요청된 섹터가 판독 캐시 내에 존재하지 않는 경우, 모든 섹터들이 플래시로부터 판독되어야 하기 때문에 판독 명령은 변경되지 않는다. 그러므로, 변경되지 않은 명령이 명령 큐에 배치된다. 일부 요청된 섹터들이 판독 캐시 내에 존재하는 경우, 판독 명령은 변경되어 단지 판독 캐시에 존재하지 않는 섹터들만이 플래시로부터 요청된다. 따라서, 조정 판독 명령 단계(624)는 이미 판독 캐시 내에 있는 섹터들을 명령 큐에 배치하기 이전에 판독 명령으로부터 감산한다. 완전한 캐시 히트가 발생하는 경우(모두 요청된 섹터들이 판독 캐시 내에 있는 경우), 모든 섹터들이 판독 캐시로부터 직접 판독될 수 있기 때문에, 플래시 메모리로의 액세스는 필요로 되지 않는다. 이 경우에, RLA 동작에 대한 시작 LBA는 판독 캐시(628)네 저장될 새로운 세트의 RLA 섹터들을 식별하기 위하여 갱신된다.
도6B는 플래시로부터 판독 캐시로의 데이터의 섹터들을 전달할 책임이 있는 플래시 액세스 관리 프로세스를 도시한다. 새로운 명령이 호스트 인터럽트 프로세스로부터 수신될 때, 상기 명령이 기록 명령이면, 판독 캐시는 무효화되고(630), 상기 명령이 실행된다(632). 상기 명령이 판독 명령이면, 조정 판독 명령 단계(624)에 대하여 상술된 바와 같이 조정 판독 명령이 단계(634)의 파트로서 수행된다. 조정 판독 명령 단계는 조정 판독 명령 단계(624)가 호스트 인터럽트 프로세스의 파트로서 수행되었을 때 존재하지 않았던 이 포인트에서 섹터가 판독 캐시에 존재할 수 있기 때문에 플래시 액세스 관리 프로세스에서 반복된다. 예를 들어, 플래시로부터 판독 캐시로의 섹터의 전달은 단계들(624 및 634) 사이의 시간 기간에서 완료될 수 있다. 판독 캐시에 존재하지 않는 임의의 요청된 섹터들은 플래시로부터 판독되고, 시작 LBA가 설정되어, 그 LBA에서 시작하는 요청되지 않은 데이터가 단계(634)의 파트로서 프로세스 흐름의 미리보기 부분으로 판독 캐시 내로 로딩될 수 있다. 데이터 캐시에 RLA 섹터가 존재하고(636), 버퍼 캐시에 이 섹터를 위한 이용 가능한 공간("이용 가능한 호스트 버퍼")이 존재하면(638), 상기 섹터는 데이터 캐시로부터 판독 캐시로 전달된다(640). 데이터 캐시에 부가적인 섹터들이 존재하고, 버퍼 캐시 내의 섹터들의 수가 프리페치 길이(N)(버퍼 캐시에 로딩되어야 할 소정수의 섹터)보다 적다면, 사이클은 반복된다. 새로운 명령이 수신되면(644), 상기 새로운 명령이 실행될 수 있도록 사이클은 중단된다. 더 많은 섹터들이 데이터 캐시에 남아있지 않고, 판독 캐시 내의 섹터들이 N보다 적으면(644), 플래시 메모리 어레이로부터 데이터 캐시로 데이터를 전달하도록 판독이 수행되고 나서(646), 상기 사이클이 재개된다. 판독 캐시 내의 섹터들의 수가 프리페치 수(N)에 도달할 때(644), 상기 프로세스는 단계(648)에서 판독 캐시 내의 섹터의 수가 N보다 적게 감소하도록 대기한다. 이것은 판독 캐시 내의 섹터들이 호스트로 전달되는 경우에 발생한다. 새로운 명령이 이 포인트에서 수신되면(630), 새로운 명령이 실행된다. 판독 캐시 내의 섹터들의 수가 N 이하로 떨어질 때(648), 새로운 RLA 섹터들이 데이터 캐시에 존재한다면 데이터 캐시로부터 판독 캐시로 전달되거나(652), 그렇지 않으면, 플래시 메모리 어레이로부터 데이터 캐시로 전달되고 나서(646), 판독 캐시로 전달된다(640).
진행중인 RLA 동작은 상기 RLA 동작이 소정의 한도에 도달하는 경우, 또는 다른 동작이 수행되는 것으로 인해 중단될 수 있다. 메모리 어레이가 새로운 어드레스 변환 테이블들의 생성을 필요로 하는 존들을 가지는 경우, RLA 동작은 이와 같은 새로운 테이블들의 생성을 필요로 하는 메타블록 경계에서 중단될 수 있다. RLA 동작은 긴 대기시간을 갖는 동작이 필요로 될 때 중단될 수 있다. 예를 들어, 소프트웨어 조정을 필요로 하는 ECC 에러가 발생할 때, RLA 동작은 중단될 수 있다. 에러를 포함한 데이터는 캐시로부터 실행되어야 한다. 임의의 새로운 명령이 수신될 때, RLA 동작들은 중단되어, 새로운 명령이 즉시 실행될 수 있다. RLA 동작들은 또한 희망하는 수의 섹터들이 캐시 내에 있을 때, 중단된다.
판독- 미리보기의 예들
다음의 예들은 데이터에 대한 요청이 수신되는 경우에 RLA 캐시가 사용될 수 있는 방법을 제시한다. 이러한 예들은 8 섹터의 데이터를 포함하는 메타페이지를 사용하는 플래시 메모리에 기초한다. 플래시(703)는 자신(703)의 한 메타페이지 내의 데이터의 양과 동일한 8 섹터들을 유지하는 데이터 캐시를 갖는다. 제어기(705)는 16-섹터 버퍼 캐시(707) 및 16의 프리페치 길이를 갖는다. 버퍼 캐시(707)는 도 7에 도시된 바와 같이, 8 섹터들을 각각 유지할 수 있는 캐시 유닛 0 및 캐시 유닛 1을 갖는다. 따라서, 버퍼 캐시 유닛은 NVM의 한 메타페이지와 동일한 양의 데이터를 유지한다. 하나의 캐시 유닛은 항상 현재의 캐시 유닛으로서 지정된다. 다음의 용어는 도시된 예들에서 사용된다.
read NM: LBA N에서 시작하는 M개의 순차적인 섹터들을 판독
host-to-buffer xfer: 호스트로부터 호스트 버퍼로 섹터 전달
host buffer full: 이것은 전체 버퍼 공간이 가득 차서 호스트 버퍼가
더 이상 데이터를 취할 수 없다는 것을 나타냄
card busy: 이것은 장치(버퍼 또는 버퍼의 세그먼트)가 비
지(busy)하여 호스트로부터 명령 또는 데이터를 수
신할 수 없다는 것을 나타냄
buffer-to-flash xfer: 호스트 버퍼로부터 플래시로 섹터 전달
read/busy(R/B)L 플래시 준비/비지
true ready/busy 플래시 실제 준비/비지
도8A는 RLA 캐시 동작의 일례를 도시한다. 캐시는 이 동작의 처음에서 비어있다. 호스트가 논리적인 어드레스 0을 갖는 하나의 섹터를 요청하고 있다는 것을 나타내는 요청 "판독 0 1"이 수신될 때, 캐시에 데이터가 존재하지 않는다. 이것은 캐시 미스(miss)로서 간주된다. 섹터 0이 플래시로부터 캐시(버퍼)로 전달된다. 그 후, 섹터 0은 호스트로 전달된다. 섹터들 1-7은 또한 제1 캐시 유닛에 대한 제1 판독 동작의 파트로서 플래시로부터 버퍼 캐시로 전달된다. 다음으로, 섹터들 8-15는 제2 판독 동작으로서 제2 캐시로 전달된다. 그 후, 섹터 16가 캐시로부터 전달된다. 섹터 0가 호스트로 전달되었기 때문에, 섹터 16을 저장하기 위한 공간이 이용 가능하다. 섹터가 버퍼 캐시로 전달될 때, 채워진 메타페이지가 일반적으로 플래시 메모리 어레이로부터 데이터 캐시로 판독된다. 메타페이지는 섹터들 16-23을 포함할 수 있다. 섹터들 17-23은 섹터 16이 버퍼 캐시로 전달된 이후에 데이터 캐시에 남을 수 있다. 따라서, 단일 섹터에 대한 호스트에 의한 요청은 버퍼 캐시에 16개의 섹터들을 저장하고 데이터 캐시에 부가적인 7개의 섹터들을 남기는 RLA 동작을 발생시킨다.
호스트가 1의 시작하는 논리적인 어드레스와 함께 16개의 섹터(섹터들 1-16)을 요청하고 있다는 것을 나타내는 제2 요청 "판독 1 16"이 호스트로부터 수신될 때, 이러한 섹터들은 이미 캐시에 존재하여 호스트에 직접 전달될 수 있다. 섹터들 1-16이 호스트에 전달되고 있는 동안, 부가적인 섹터들이 제2 RLA 동작의 파트로서 플래시로부터 캐시로 전달될 수 있다.
도8B는 16 개의 섹터들에 대한 제2 요청 대신에, 단일 섹터에 대하여 각각 일련의 요청들이 수신된다는 것을 제외하면, 도8A와 유사한 예를 도시한다. 이러한 섹터들 중 하나가 호스트로 전달될 때, 섹터는 데이터 캐시로부터 캐시로 전달되어, 상기 캐시가 채워진다. 제2 요청 "판독 1 1" 이전에, 섹터들 16-23은 데이터 캐시에 저장된다. 따라서, 섹터들 17-23은 섹터들 1-7이 캐시로부터 호스트로 전달될 때 데이터 캐시로부터 캐시로 전달될 수 있다. 섹터들 17-23이 데이터 캐시에 존재하기 때문에, 이 동작 동안 플래시 메모리 어레이에 액세스할 필요가 없다.
도8C는 제2 요청에서 호스트에 의해 요청된 데이터의 단지 하나의 섹터만이 캐시에 존재하는 경우의 부분적인 히트를 도시한다. 제1 요청은 도8A 및 8B와 동일하다. 그러나, 제2 요청 "판독 16 3"은 세 개의 섹터에 대하여 16의 시작하는 어드레스를 갖는다. 세 개의 섹터들 중 단지 하나, 즉, 섹터 16만이 캐시에 존재한다. 섹터 16은 캐시로부터 호스트로 직접 전달된다. 다른 두 개의 섹터들, 즉, 섹터들 17 및 18은 데이터 캐시로부터 판독된다. 캐시에 저장된 섹터들, 즉, 섹터 1-15는 폐기되고, 섹터들 19-34는 새로운 RLA 섹터들로서 플래시로부터 전달된다.
라이트- 쓰루 캐시
라이트-쓰루 캐시는 도2에 도시된 버퍼 캐시 또는 도3에 도시된 분할된 버퍼 캐시와 같은 버퍼 캐시에서 구현될 수 있다. 라이트-쓰루 캐시는 호스트로부터 데이터를 수용하여 상기 데이터를 변경시킴이 없이 NVM에 송신한다. 상기 데이터는 NVM이 데이터를 수신할 준비가 되어 있다면, 수신되자마자 NVM으로 송신될 수 있다. 예를 들어, 호스트가 데이터의 다수의 섹터들을 포함하는 데이터 스트림을 송신하는 경우, 섹터들은 NVM으로 즉시 기록될 수 있다. NVM에서, 데이터는 데이터 캐시 내에 유지되고, 필요로 될 때 프로그래밍될 수 있다. 데이터가 NVM으로 기록되었다는 것을 나타내는 신호가 호스트로 리턴됨으로써, 실제로 데이터가 NVM이 아니라 라이트-쓰루 캐시에 존재할 때, 데이터를 저장하기 위한 분명한 시간은 단축될 수 있다. 이것은 호스트가 그 다음 데이터를 더 고속으로 송신하도록 한다. 더 많은 데이터가 이전 데이터가 NVM 내로 프로그래밍되는 것을 대기함이 없이 호스트에 의해 송신될 수 있다. 메모리 카드는 데이터의 제1 부분을 라이트-쓰루 캐시로 부터 NVM으로 전달하는 동시에, 데이터의 제2 부분을 호스트로부터 라이트-쓰루 캐시로 전달할 수 있다. 라이트-쓰루 캐시는 NVM의 더 효율적인 프로그래밍을 허용할 수 있다. 데이터의 섹터들은 채워진 메타페이지가 NVM 어레이의 최대 병렬처리를 사용하여 프로그래밍되도록 할 만큼 충분한 데이터가 호스트에 의해 전달될 때까지 라이트-쓰루 캐시에 저장될 수 있다. 이것은 증가된 병렬처리로 인해 프로그래밍이 더 고속으로 발생하도록 할 수 있고, 프로그래밍 이후에 필요로 되는 임의의 가베지 수집을 감소시키거나 피하도록 함으로써 성능을 더 개선시킬 수 있다.
라이트-쓰루 캐시로부터 NVM으로의 데이터의 프로그래밍은 다양한 이벤트들에 의해 트리거될 수 있다. 데이터는 NVM의 최대 병렬처리를 사용할 만큼 충분한 데이터가 라이트-쓰루 캐시에 존재할 때 프로그래밍될 수 있다. 메타블록들로 데이터를 저장하는 NVM의 경우에, 이것은 하나의 메타페이지와 등가의 데이터의 양일 것이다. 프로그래밍은 또한 캐시에 이미 저장된 섹터에 순차적이지 않은 섹터를 수신함으로서 트리거될 수 있다. 섹터는 자신과 저장된 섹터들 사이에 갭이 존재할지라도, 상기 갭이 어떤 소정 량보다 적다면 순차적인 것으로 간주될 수 있다. 어떤 호스트 명령들이 라이트-쓰루 캐시에서 데이터의 프로그래밍을 트리거할 수 있다. CompactFlashTM(CF) 표준을 사용한 메모리 카드들에서, 라이트-쓰루 캐시에서의 데이터의 프로그래밍을 트리거하는 명령들은 Read Sectors, Flush Cache 및 Set Feature(기록 캐시를 불가능하게 하는데 사용되는 경우)를 포함한다. 프로그래밍은 또한 소정 시간 이후에 트리거될 수 있다. 캐시의 내용들이 소정 시간 동안 NVM으 로 커밋팅(committing)되지 않았다면, 프로그래밍은 자동적으로 발생한다. 전형적으로, 소정 시간은 1msec-500msec 범위일 것이다.
도9는 단일 섹터 기록들이 발생하고 NVM(909)가 8-섹터 메타페이지를 가지는 일례를 도시한다. 8개의 섹터들, 즉 섹터들 0-7은 NVM(909)에 기록되기 전에 라이트-스루 캐시에 저장될 수 있다. 이것은 NVM에 8개의 섹터들을 개별적으로 저장하는 것보다 더 빠를 수 있다. 섹터 0이 NVM으로 프로그래밍되는 것을 대기하는 대신에, 섹터 0이 프로그래밍되고 호스트가 섹터 1을 메모리 카드로 송신한다는 것을 나타내는 신호가 송신된다. 이것은 섹터들 0-7이 저장될 때까지 반복되며, 그 시간에 모든 8개의 섹터들이 병렬로 프로그래밍된다. 섹터들 0-7은 기록 캐시 유닛 0으로부터 데이터 캐시로 전달되고 나서, 메모리 어레이에서 메타페이지(X)와 병렬로 프로그래밍될 때까지 전달된다. 섹터들은 데이터 캐시로 개별적으로 전달되고 나서, 메모리 어레이로 병렬로 프로그래밍될 수 있다.
도9에 도시된 플래시(NVM)로의 섹터들의 병렬 프로그래밍과 대조적으로, 일부의 종래 기술 시스템들은 단일 섹터가 개별적으로 수신되는 다중-섹터 페이지로 단지 단일 섹터가 프로그래밍되도록 한다. NVM으로의 단일 섹터 프로그래밍에 의하여, 각 섹터는 최초에 어레이에서 메타페이지의 공간을 점유할 수 있다. 따라서, 각각의 단일 섹터 기록은 데이터의 7개의 섹터들을 저장하는데 충분한 메모리 어레이 내의 공간을 사용하지 않은 채로 남겨둔다. 이와 같은 섹터들은 사용되지 않은 공간이 회복되도록 이후에 가베지 수집의 파트로서 단일 메타페이지로 통합될 수 있다. 그러나, 가베지 수집 동작들은 시간 및 시스템 자원들을 필요로 하여, 이와 같은 동작들에 대한 필요성을 최소화하는 것이 바람직하다.
도10은 호스트로부터 수신되는 판독 명령에 선행하는 일련의 단일 섹터 기록들을 도시한다. 개별적인 섹터들은 우선 라이트-쓰루 캐시로 송신된다. 섹터 7은 수신될 때, 즉시 NVM으로 프로그래밍 된다. 섹터 7이 프로그래밍되고 있는 동안, 섹터들 8-16이 호스트로부터 수신된다. 섹터들 8-15은 섹터 7이 프로그래밍된 후에 메모리 어레이에 프로그래밍된다. 섹터들 8-15는 메모리 어레이의 메타페이지를 형성한다. 섹터 16은 라이트-쓰루 캐시에서 유지된다. 다음으로, 판독 명령 "판독 7 1"이 수신된다. 섹터 16이 메모리 어레이에 기록된 후에, 판독 명령이 실행된다.
도11은 호스트-대-버퍼 캐시 및 버퍼 캐시-대-NVM 데이터 전달들의 파이프라이닝을 도시한다. NVM이 데이터를 수신할 준비가 되어 있는 한, 호스트로부터 이전에 수신된 섹터들은 새로운 섹터들이 라이트-쓰루 캐시에 저장되는 동안 NVM에서 프로그래밍될 수 있다. 데이터의 섹터들의 스트림은 스트림 "A"로 표시된 바와 같이, 호스트에 의해 버퍼로 송신된다. 상기 섹터들은 섹터들 "B"로 표시된 바와 같이, 개별적으로 NVM으로 전달된다. NVM에서, 상기 섹터들은 메타페이지의 유닛들과 병렬로 데이터 캐시로부터 메모리 어레이로 프로그래밍된다. 섹터들은 다른 섹터들을 메모리 어레이로 프로그래밍하는 것과 병렬로 호스트로부터 버퍼 캐시로 전달된다. 그러나, 메모리 어레이로의 프로그래밍은 호스트로부터 전달하는 것보다 시간이 많이 든다. 도11은 Tgap, 즉, 데이터의 메모리 어레이로의 프로그래밍에 기인한 시간 지연을 도시한다. Tgap은 8개의 섹터들을 호스트로부터 버퍼 캐시로 전달하는 시간 및 8개의 섹터들을 버퍼 캐시로부터 메모리 어레이로 전달하는 시간 간의 시 간차이다. 이 예에서, 프로그래밍은 300μsec가 들지만 Tgap은 100μsec보다 적다. 따라서, 프로그래밍 시간으로 인한 지연은 파이프라이닝 때문에 300μsec로부터 100μsec로 감소된다.
라이트-백 캐시
라이트-백 정책은 버퍼 캐시 또는 버퍼 캐시의 세그먼트에서 구현될 수 있다. 라이트-백 캐시 정책은 호스트로부터의 데이터가 캐시에 있는 동안 NVM으로 기록됨이 없이 변경되도록 한다. 이것은 NVM 및 NVM 버스의 사용을 감소시킨다. 데이터는 캐시로부터 데이터를 끌어내도록 하는 일정 조건들이 충족될 때까지 NVM으로 기록되지 않는다. 데이터는 캐시에 있는 동안, NVM으로의 프로그램 동작 없이 한번 이상 갱신될 수 있다. 이것은 시간을 절약하고, 또한 필요로 되는 가베지 수집의 양을 감소시킬 수 있다.
도12는 메모리 어레이의 메타페이지에 유지되는 데이터와 등가의 데이터를 각각 유지하는 두 개의 유닛들을 갖는 기록 캐시를 사용하는 기록 캐시 동작에 대한 흐름도를 도시한다. 하나의 기록 캐시 유닛은 항상 현재의 기록 캐시로서 지정된다. 데이터가 호스트로부터 수신될 때, 현재의 기록 데이터 유닛이 우선 검사되어, 그 유닛이 유효한지를 확인한다("캐시 유효")(1210). 현재의 기록 캐시 유닛은 NVM으로 기록되지 않은 데이터를 포함하는 경우 유효화다. 현재의 기록 캐시 유닛이 유효하지 않으면, 수신된 데이터는 현재 기록 캐시 유닛에서 기록되고, NVM 내의 데이터 캐시에 복사되지만, 메모리 어레이로 프로그래밍되지 않는다(1212). 현재의 기록 캐시 유닛이 유효하면, 수신된 데이터는 캐시 내의 데이터와 비교되어, "캐시 히트"가 존재하는지를 확인한다(1214). 수신된 데이터가 캐시에 저장되는 데이터를 대체하거나 캐시에 저장된 데이터에 순차적인 경우, 캐시 히트가 발생한다. 캐시 히트가 발생할 때, 수신된 데이터는 현재의 기록 캐시 유닛 내로 입력된다(1216). "캐시 미스"가 발생할 때(수신된 데이터가 대체하지 않고, 캐시 내의 데이터에 순차적이지 않을 때), 현재의 기록 캐시 유닛은 (이미 커밋팅되지 않은 경우) 메모리 어레이로 커밋팅되고(1218), 새로운 데이터가 현재의 기록 캐시 유닛으로서 지정되는 기록 캐시 유닛에 저장된다(1212).
섹터가 현재의 기록 캐시 유닛에 저장될 때, 섹터가 현재의 기록 캐시 유닛이 채워지도록 하는 경우(1220), 현재 기록 캐시 유닛은 플래시(1222)로 프로그래밍된다. 그 후, 버퍼 캐시는 호스트로부터 데이터의 새로운 섹터들을 자유롭게 수용한다.
세션 명령
상기 실시예들 중 일부는 데이터를 메모리 카드 내의 어디에도 저장되지 않는 버퍼 캐시에 유지한다. 버퍼 캐시는 일반적으로 휘발성 메모리여서, 버퍼 캐시에 저장된 데이터는 전력이 제거될 때 손실된다. 자신의 전력을 호스트로부터 얻는 제거 가능한 메모리 카드에서, 상기 메모리 카드는 전력이 손실될 수 있기 때문에, 데이터를 휘발성 메모리에 유지할 수 없다. 한 그룹의 트랜잭션(transaction)들이 호스트 세션의 파트이고 전력이 그 세션 동안 유지되는 경우에도, 메모리 카드는 트랜잭션들이 링크되는지를 인식할 수 없다. 트랜잭션은 호스트 명령, 예를 들어, 메모리에 선행하는 어떤 섹터들을 판독하여 그러한 섹터들을 전달하는 명령에 의해 개시되는 메모리 카드 및 호스트 사이의 교환으로 이루어진다. 카드가 트랜잭션들이 링크된다는 것을 인식하지 못하기 때문에, 상기 카드는 트랜잭션들 사이의 시간을 사용할 수 없고, 전력이 손실될 수 있기 때문에 어떤 동작들을 수행할 수 없다. 이와 같은 동작들은 캐싱 동작들, 가베지 수집 및 어드레스 변환 정보 갱신들과 같은 배경 동작들을 포함할 수 있다. NVM에 저장되는 프로세스에서의 데이터 및 버퍼 캐시 또는 CPU RAM 내의 데이터를 포함한, NVM에 저장되지 않는 데이터가 전력 손실로 인하여 손실되지 않는다는 것이 중요하다. 호스트는 메모리 카드에 대한 전력을 보증할 수 있으므로, 그렇지 않은 경우 저장되지 않는 데이터에 대한 버퍼 캐시 또는 다른 휘발성 메모리들의 사용을 가능하게 한다. 이와 같은 전력 보증은 또한 시간의 상당한 부분이 동작을 스케줄링하는데 더 큰 유연성을 허용하는 동작을 수행하는데 적용 가능하기 때문에, 동작들이 더 효율적으로 스케줄링되도록 할 수 있다. 예를 들어, 가베지 수집 동작들은 이 동작들이 호스트 데이터 기록 동작들에 감소된 영향을 미치는 시간 동안에 스케줄링될 수 있다. 동작들은 배경 동작들로서 수행되므로, 다른 동작들에 대한 혼란(disruption)을 거의 초래하지 않거나 전혀 초래하지 않도록 스케줄링될 수 있다.
하나의 실시예에서, 호스트는 다수의 카드 트랜잭션들이 동일한 세션의 파트이며 전력이 적어도 세션의 끝까지 유지된다는 것을 나타내는 세션 명령(예를 들어, "SESSION_START")을 발부할 수 있으므로, 트랜잭션들 동안에 그리고 트랜잭션들 사이의 시간에 데이터 캐싱 또는 다른 배경 동작들을 허용한다. 세션 명령은 세션의 지속기간 동안 호스트에 의한 전력 보증을 나타낸다. 이것은 카드가 세션의 지속기간 동안 휘발성 메모리를 사용하여 어떤 동작을 수행하도록 한다. 세션은 세션-종료 명령(예를 들어, "SESEION_END")에 의해 종료될 수 있다. "SESSION END" 명령은 전원이 더 이상 보증될 수 없기 때문에 데이터 캐싱을 불가능하게 할 수 있다. 세션 명령은 세션에서의 트랜잭션들이 시작되는 논리적인 어드레스, 트랜잭션에서의 블록들의 수, 데이터 전달 레이트 및 다른 호스트 프로파일링 정보를 식별할 수 있다. 메모리 카드는 휘발성 메모리를 사용하여 배경 동작들이 세션의 트랜잭션들 사이에서 발생하도록 배경 동작들을 스케줄링할 수 있다.
다른 실시예에서, 스트리밍 명령들은 메모리 카드로의 그리고 메모리 카드로부터의 데이터 스트림들의 전달을 최적화하는데 사용된다. 호스트로부터의 "CONFIGURE STREAM" 명령은 메모리 카드에 스트리밍 데이터의 캐싱을 가능하게 할 수 있다. "CONFIGURE STREAM" 명령은 또한 데이터 스트림의 특성들을 규정하여, 캐싱이 특정 스트림에 대해 최적화될 수 있도록 한다. "CONFIGURE STREAM" 명령은 데이터 스트림에 대한 명령 완료 시간을 규정할 수 있다. 부가적인 스트리밍 명령들은 NVM으로 플러싱(flushing)될 캐시를 필요로 하는 명령을 포함할 수 있다. 별도의 명령은 (비-스트리밍 데이터를 포함한) 모든 데이터에 대한 캐싱을 가능하게 할 수 있다. 스트리밍 명령들은 캐싱이 모든 데이터에 대해 가능하지 않는 경우에도 캐싱이 스트리밍 데이터에 대해 사용되도록 할 수 있다.
상기의 설명은 본 발명의 특정 실시예들을 상술하며 특정 예들을 사용하여 본 발명의 실시예들을 설명한다. 그러나, 본 발명은 게시된 실시예들 또는 제공된 예들에 국한되지 않는다. 본 발명이 첨부된 청구항의 전체 범위 내에서 보호받을 권한이 있다는 것이 이해될 것이다.

Claims (31)

  1. 비휘발성, 비회전 저장 매체에 데이터를 저장하는 제거 가능한 메모리 카드에 있어서,
    호스트 인터페이스와,
    비휘발성 메모리 어레이와,
    상기 호스트 인터페이스 및 상기 비휘발성 메모리 어레이와 통신하는 버퍼 캐시로서, 상기 버퍼 캐시는 데이터를 저장하기 위한 적어도 제 1 부분과 제 2 부분을 갖고, 상기 제 1 부분은 제 1 정책을 갖고, 상기 제 2 부분은 제 2 정책을 가지며, 상기 제 1 정책과 상기 제 2 정책은 개별적으로 선택되는, 버퍼 캐시를
    포함하는, 제거 가능한 메모리 카드.
  2. 제 1항에 있어서, 상기 제 1 정책은 라이트-쓰루 캐시 정책(write-through cache policy)인, 제거 가능한 메모리 카드.
  3. 제 1항에 있어서, 상기 제 1 정책은 라이트-백 캐시 정책(write-back cache policy)인, 제거 가능한 메모리 카드.
  4. 제 1항에 있어서, 상기 제 1 부분은, 상기 비휘발성 메모리 어레이에 저장된 제 1 그룹의 데이터 요청시 상기 제 1 그룹의 데이터 및 요청되지 않은 제 2 그룹의 데이터가 상기 비휘발성 메모리 어레이로부터 판독되고 상기 제 2 그룹의 데이터가 상기 제 1 부분에 저장되도록, 판독 캐시로 기능을 하는, 제거 가능한 메모리 카드.
  5. 제 1항에 있어서, 상기 제 1 부분은 데이터 스트림의 파트가 아닌 중앙 처리 장치에 의해 사용되는 데이터를 저장하는데 사용되는, 제거 가능한 메모리 카드.
  6. 제 1항에 있어서, 상기 제 1 부분과 상기 제 2 부분은 분할된 캐시의 세그먼트인, 제거 가능한 메모리 카드.
  7. 제 1항에 있어서, 제 3 정책을 갖는 제 3 부분과 제 4 정책을 갖는 제 4 부분을 더 포함하는, 제거 가능한 메모리 카드.
  8. 제 7항에 있어서, 중앙 처리 장치를 더 포함하고, 상기 제 1 정책은 라이트-쓰루 정책이고, 상기 제 2 정책은 라이트-백 정책이며, 상기 제 3 정책은 판독 캐시 정책이고, 상기 제 4 정책은 중앙 처리 장치 데이터 저장 정책인, 제거 가능한 메모리 카드.
  9. 제 1항에 있어서, 상기 제 1 부분의 크기는 변경될 수 있는, 제거 가능한 메모리 카드.
  10. 제 1항에 있어서, 상기 제 1 부분의 크기는 호스트 명령 시퀀스에 응답하여 상기 카드의 동작 동안 변경될 수 있는, 제거 가능한 메모리 카드.
  11. 제 1항에 있어서, 상기 버퍼 캐시의 동작을 제어하는 중앙 처리 장치를 더 포함하는, 제거 가능한 메모리 카드.
  12. 호스트 인터페이스와 플래시 메모리 어레이 모두와 통신하는 버퍼 캐시를 사용하여 제거 가능한 메모리 카드 내의 호스트 인터페이스와 플래시 메모리 어레이 사이에서 데이터 스트림을 핸들링하는 방법에 있어서,
    상기 버퍼 캐시를 적어도 제 1 세그먼트와 제 2 세그먼트로 분할하는 단계와,
    상기 제 1 세그먼트에 대한 제 1 캐싱 정책을 결정하는 단계와,
    상기 제 2 세그먼트에 대한 제 2 캐싱 정책을 결정하는 단계를
    포함하는, 데이터 스트림을 핸들링하는 방법.
  13. 제 12항에 있어서, 상기 제 1 캐싱 정책은 제 1 데이터 스트림의 특성에 따라 결정되고, 상기 제 2 캐싱 정책은 제 2 데이터 스트림의 특성에 따라 결정되는, 데이터 스트림을 핸들링하는 방법.
  14. 제 12항에 있어서, 상기 제 1 캐싱 정책은 라이트-쓰루 정책인, 데이터 스트림을 핸들링하는 방법.
  15. 제 12항에 있어서, 상기 제 1 캐싱 정책은 라이트-백 정책인, 데이터 스트림을 핸들링하는 방법.
  16. 제 12항에 있어서, 상기 제 1 캐싱 정책은 판독-미리보기 정책(read-look-ahead policy)인, 데이터 스트림을 핸들링하는 방법.
  17. 제 12항에 있어서, 상기 제 1 세그먼트의 크기를 변경시키는 단계를 더 포함하는, 데이터 스트림을 핸들링하는 방법.
  18. 제16항에 있어서, 상기 판독-미리보기 정책은
    상기 플래시 메모리 어레이로부터 전달될 데이터의 제 1 부분을 식별하는 제 1 어드레스 범위를 상기 호스트로부터 수신하는 단계와,
    데이터의 제 1 부분을 상기 플래시 메모리 어레이로부터 상기 버퍼 캐시의 상기 제 1 세그먼트로 복사하는 단계와,
    데이터의 제 2 부분을 상기 플래시 메모리 어레이로부터 상기 버퍼 캐시의 제 1 세그먼트로 복사하는 단계로서, 상기 데이터의 제 2 부분은 상기 플래시 메모리 어레이부터의 전달에 대하여 상기 호스트에 의해 식별되는 상기 제 1 어드레스 범위와 구분되는 제 2 어드레스 범위를 가지는, 단계와,
    상기 데이터의 제 2 부분을 상기 버퍼 캐시에 유지하면서 상기 데이터의 제 1 부분을 상기 버퍼 캐시로부터 상기 호스트로 송신하는 단계를
    포함하는, 데이터 전달 방법.
  19. 제 18항에 있어서, 상기 데이터의 제 2 부분은 제 2 어드레스 범위를 갖고, 상기 제 1 어드레스 범위와 상기 제 2 어드레스 범위는 순차적인, 데이터 전달 방법.
  20. 제 18항에 있어서, 상기 데이터의 제 2 부분은, 상기 플래시 메모리 어레이로부터 상기 데이터의 제 1 부분과 함께 상기 데이터의 제 2 부분의 병렬 판독을 허용하는 최대 크기로 선택되는, 데이터 전달 방법.
  21. 제 18항에 있어서, 상기 데이터의 제 2 부분은, 상기 버퍼 캐시 또는 상기 버퍼 캐시의 세그먼트에 저장될 수 있는 최대 크기로 선택되는, 데이터 전달 방법.
  22. 제 18항에 있어서,
    상기 판독-미리보기 정책은
    상기 버퍼 캐시로부터 상기 호스트로 상기 데이터의 제 1 부분을 송신한 후에, 상기 호스트로 전달될 데이터를 식별하는 제 3 어드레스 범위를 수신하는 단계로서, 상기 제 3 어드레스 범위는 적어도 상기 데이터의 제 2 부분에 있는 데이터의 제 3 부분을 식별하는 것을 특징으로 하는 단계; 및
    상기 플래시 메모리 어레이로부터가 아니라, 상기 버퍼 캐시로부터 상기 호스트로 상기 데이터의 제 3 부분을 전달하는 단계;를 더 포함하는, 데이터 전달 방법.
  23. 제4항에 있어서, 상기 요청되지 않은 제 2 그룹의 데이터는
    버퍼 캐시의 제1 부분에 저장될 수 있는 데이터의 최대량인, 제거 가능한 메모리 카드.
  24. 제1항에 있어서, 상기 버퍼 캐시를 제어하는 중앙 처리 장치와 상기 중앙 처리 장치에 접속된 스태틱 랜덤 액세스 메모리(static random access memory)를 더 포함하는, 제거 가능한 메모리 카드.
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
KR1020067018401A 2004-03-08 2005-03-07 플래시 제어기 캐시 아키텍처 KR101204680B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/796,575 2004-03-08
US10/796,575 US7173863B2 (en) 2004-03-08 2004-03-08 Flash controller cache architecture
PCT/US2005/007313 WO2005088456A2 (en) 2004-03-08 2005-03-07 Flash controller cache architecture

Publications (2)

Publication Number Publication Date
KR20070022659A KR20070022659A (ko) 2007-02-27
KR101204680B1 true KR101204680B1 (ko) 2012-11-26

Family

ID=34912587

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067018401A KR101204680B1 (ko) 2004-03-08 2005-03-07 플래시 제어기 캐시 아키텍처

Country Status (7)

Country Link
US (3) US7173863B2 (ko)
EP (2) EP2264605B1 (ko)
JP (1) JP5192228B2 (ko)
KR (1) KR101204680B1 (ko)
CN (2) CN101504629B (ko)
TW (1) TWI267862B (ko)
WO (1) WO2005088456A2 (ko)

Families Citing this family (281)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6347051B2 (en) * 1991-11-26 2002-02-12 Hitachi, Ltd. Storage device employing a flash memory
US20080320209A1 (en) * 2000-01-06 2008-12-25 Super Talent Electronics, Inc. High Performance and Endurance Non-volatile Memory Based Storage Systems
KR100614639B1 (ko) * 2003-07-24 2006-08-22 삼성전자주식회사 쓰기 방지 가능한 버퍼 메모리를 갖는 메모리 장치 및그것을 포함하는 정보 처리 시스템
US8112574B2 (en) * 2004-02-26 2012-02-07 Super Talent Electronics, Inc. Swappable sets of partial-mapping tables in a flash-memory system with a command queue for combining flash writes
US7173863B2 (en) * 2004-03-08 2007-02-06 Sandisk Corporation Flash controller cache architecture
TWI289304B (en) * 2004-02-17 2007-11-01 Hon Hai Prec Ind Co Ltd Data structure design system and method for prolonging useful life of FRAM
KR100541642B1 (ko) * 2004-03-11 2006-01-10 삼성전자주식회사 플래시 메모리의 데이터 관리 장치 및 방법
JP4817836B2 (ja) 2004-12-27 2011-11-16 株式会社東芝 カードおよびホスト機器
US20060236033A1 (en) * 2005-04-18 2006-10-19 Dell Products L.P. System and method for the implementation of an adaptive cache policy in a storage controller
US8516211B2 (en) * 2005-06-17 2013-08-20 Flexera Software Llc Secure storage management system and method
US10013371B2 (en) 2005-06-24 2018-07-03 Google Llc Configurable memory circuit system and method
US20080082763A1 (en) 2006-10-02 2008-04-03 Metaram, Inc. Apparatus and method for power management of memory circuits by a system or component thereof
US8060774B2 (en) 2005-06-24 2011-11-15 Google Inc. Memory systems and memory modules
US9542352B2 (en) 2006-02-09 2017-01-10 Google Inc. System and method for reducing command scheduling constraints of memory circuits
US8111566B1 (en) 2007-11-16 2012-02-07 Google, Inc. Optimal channel design for memory devices for providing a high-speed memory interface
US8397013B1 (en) 2006-10-05 2013-03-12 Google Inc. Hybrid memory module
US20070014168A1 (en) * 2005-06-24 2007-01-18 Rajan Suresh N Method and circuit for configuring memory core integrated circuit dies with memory interface integrated circuit dies
US8796830B1 (en) 2006-09-01 2014-08-05 Google Inc. Stackable low-profile lead frame package
US20080028136A1 (en) 2006-07-31 2008-01-31 Schakel Keith R Method and apparatus for refresh management of memory modules
US8386722B1 (en) 2008-06-23 2013-02-26 Google Inc. Stacked DIMM memory interface
US9171585B2 (en) 2005-06-24 2015-10-27 Google Inc. Configurable memory circuit system and method
US7590796B2 (en) * 2006-07-31 2009-09-15 Metaram, Inc. System and method for power management in memory systems
US8619452B2 (en) * 2005-09-02 2013-12-31 Google Inc. Methods and apparatus of stacking DRAMs
US7386656B2 (en) * 2006-07-31 2008-06-10 Metaram, Inc. Interface circuit system and method for performing power management operations in conjunction with only a portion of a memory circuit
US8081474B1 (en) 2007-12-18 2011-12-20 Google Inc. Embossed heat spreader
US8041881B2 (en) * 2006-07-31 2011-10-18 Google Inc. Memory device with emulated characteristics
US8130560B1 (en) 2006-11-13 2012-03-06 Google Inc. Multi-rank partial width memory modules
US9507739B2 (en) 2005-06-24 2016-11-29 Google Inc. Configurable memory circuit system and method
US8055833B2 (en) 2006-10-05 2011-11-08 Google Inc. System and method for increasing capacity, performance, and flexibility of flash storage
US8327104B2 (en) 2006-07-31 2012-12-04 Google Inc. Adjusting the timing of signals associated with a memory system
US7580312B2 (en) * 2006-07-31 2009-08-25 Metaram, Inc. Power saving system and method for use with a plurality of memory circuits
US8335894B1 (en) 2008-07-25 2012-12-18 Google Inc. Configurable memory system with interface circuit
US8438328B2 (en) 2008-02-21 2013-05-07 Google Inc. Emulation of abstracted DIMMs using abstracted DRAMs
US7392338B2 (en) * 2006-07-31 2008-06-24 Metaram, Inc. Interface circuit system and method for autonomously performing power management operations in conjunction with a plurality of memory circuits
US8090897B2 (en) 2006-07-31 2012-01-03 Google Inc. System and method for simulating an aspect of a memory circuit
US8359187B2 (en) 2005-06-24 2013-01-22 Google Inc. Simulating a different number of memory circuit devices
US8089795B2 (en) 2006-02-09 2012-01-03 Google Inc. Memory module with memory stack and interface with enhanced capabilities
US8244971B2 (en) 2006-07-31 2012-08-14 Google Inc. Memory circuit system and method
US8077535B2 (en) 2006-07-31 2011-12-13 Google Inc. Memory refresh apparatus and method
US7609567B2 (en) * 2005-06-24 2009-10-27 Metaram, Inc. System and method for simulating an aspect of a memory circuit
JP4856400B2 (ja) * 2005-07-06 2012-01-18 ルネサスエレクトロニクス株式会社 記憶装置及び情報処理端末
US7751242B2 (en) * 2005-08-30 2010-07-06 Micron Technology, Inc. NAND memory device and programming methods
KR100714873B1 (ko) * 2005-09-06 2007-05-07 삼성전자주식회사 비휘발성 메모리에서 데이터 갱신 방법 및 이를 위한 장치
JP4910360B2 (ja) * 2005-10-20 2012-04-04 ソニー株式会社 記憶装置、コンピュータシステム、およびデータ書き込み方法
CN100426230C (zh) * 2005-11-23 2008-10-15 鸿富锦精密工业(深圳)有限公司 一种嵌入式系统处理数据的方法
US20070119931A1 (en) * 2005-11-25 2007-05-31 C-Media Electronics Inc. Apparatus for reading/writing storage devices
JP4356686B2 (ja) * 2005-12-01 2009-11-04 ソニー株式会社 メモリ装置及びメモリ制御方法
US8275949B2 (en) * 2005-12-13 2012-09-25 International Business Machines Corporation System support storage and computer system
US20070150644A1 (en) * 2005-12-28 2007-06-28 Yosi Pinto System for writing non-volatile memories for increased endurance
US7245556B1 (en) * 2005-12-28 2007-07-17 Sandisk Corporation Methods for writing non-volatile memories for increased endurance
US9632929B2 (en) * 2006-02-09 2017-04-25 Google Inc. Translating an address associated with a command communicated between a system and memory circuits
EP2016494A4 (en) * 2006-02-14 2010-02-03 Atmel Corp DESCRIPTING AND SETTING FLASH SAVINGS
KR100703807B1 (ko) * 2006-02-17 2007-04-09 삼성전자주식회사 블록 방식의 메모리에서 데이터의 변경 유형에 따라 블록을관리하는 방법 및 장치
EP1850347A1 (en) * 2006-04-28 2007-10-31 Deutsche Thomson-Brandt Gmbh Method and device for writing to a flash memory
US7894269B2 (en) 2006-07-20 2011-02-22 Sandisk Corporation Nonvolatile memory and method for compensating during programming for perturbing charges of neighboring cells
US7885119B2 (en) 2006-07-20 2011-02-08 Sandisk Corporation Compensating for coupling during programming
US7724589B2 (en) 2006-07-31 2010-05-25 Google Inc. System and method for delaying a signal communicated from a system to at least one of a plurality of memory circuits
US7734861B2 (en) * 2006-09-08 2010-06-08 Sandisk Corporation Pseudo random and command driven bit compensation for the cycling effects in flash memory
US7606966B2 (en) 2006-09-08 2009-10-20 Sandisk Corporation Methods in a pseudo random and command driven bit compensation for the cycling effects in flash memory
US7885112B2 (en) * 2007-09-07 2011-02-08 Sandisk Corporation Nonvolatile memory and method for on-chip pseudo-randomization of data within a page and between pages
TWI463321B (zh) 2007-01-10 2014-12-01 Mobile Semiconductor Corp 用於改善外部計算裝置效能的調適性記憶體系統
US7660166B2 (en) * 2007-01-31 2010-02-09 Sandisk Il Ltd. Method of improving programming precision in flash memory
JP5032172B2 (ja) * 2007-03-28 2012-09-26 株式会社東芝 統合メモリ管理装置及び方法並びにデータ処理システム
US9396103B2 (en) * 2007-06-08 2016-07-19 Sandisk Technologies Llc Method and system for storage address re-mapping for a memory device
US20090006720A1 (en) * 2007-06-27 2009-01-01 Shai Traister Scheduling phased garbage collection and house keeping operations in a flash memory system
US8504784B2 (en) * 2007-06-27 2013-08-06 Sandisk Technologies Inc. Scheduling methods of phased garbage collection and housekeeping operations in a flash memory system
JP4963088B2 (ja) * 2007-07-13 2012-06-27 インターナショナル・ビジネス・マシーンズ・コーポレーション データをキャッシュする技術
KR101431205B1 (ko) * 2007-07-13 2014-08-18 삼성전자주식회사 캐시 메모리 장치 및 캐시 메모리 장치의 데이터 처리 방법
US8209479B2 (en) 2007-07-18 2012-06-26 Google Inc. Memory circuit system and method
KR20090024971A (ko) * 2007-09-05 2009-03-10 삼성전자주식회사 섹터의 집합을 이용한 캐시 운용 방법 및 캐시 장치
US8080874B1 (en) 2007-09-14 2011-12-20 Google Inc. Providing additional space between an integrated circuit and a circuit board for positioning a component therebetween
US7652929B2 (en) * 2007-09-17 2010-01-26 Sandisk Corporation Non-volatile memory and method for biasing adjacent word line for verify during programming
US7924628B2 (en) * 2007-11-14 2011-04-12 Spansion Israel Ltd Operation of a non-volatile memory array
US7945825B2 (en) * 2007-11-25 2011-05-17 Spansion Isreal, Ltd Recovery while programming non-volatile memory (NVM)
US9032154B2 (en) * 2007-12-13 2015-05-12 Sandisk Technologies Inc. Integration of secure data transfer applications for generic IO devices
US8443260B2 (en) 2007-12-27 2013-05-14 Sandisk Il Ltd. Error correction in copy back memory operations
US8275945B2 (en) 2008-02-05 2012-09-25 Spansion Llc Mitigation of flash memory latency and bandwidth limitations via a write activity log and buffer
US8332572B2 (en) * 2008-02-05 2012-12-11 Spansion Llc Wear leveling mechanism using a DRAM buffer
US8352671B2 (en) 2008-02-05 2013-01-08 Spansion Llc Partial allocate paging mechanism using a controller and a buffer
US8209463B2 (en) * 2008-02-05 2012-06-26 Spansion Llc Expansion slots for flash memory based random access memory subsystem
KR101067457B1 (ko) * 2008-03-01 2011-09-27 가부시끼가이샤 도시바 메모리 시스템
JP4643667B2 (ja) 2008-03-01 2011-03-02 株式会社東芝 メモリシステム
JP4745356B2 (ja) * 2008-03-01 2011-08-10 株式会社東芝 メモリシステム
US8706950B2 (en) 2008-03-01 2014-04-22 Kabushiki Kaisha Toshiba Memory system
JP4691122B2 (ja) 2008-03-01 2011-06-01 株式会社東芝 メモリシステム
JP4691123B2 (ja) 2008-03-01 2011-06-01 株式会社東芝 メモリシステム
JP4498426B2 (ja) * 2008-03-01 2010-07-07 株式会社東芝 メモリシステム
JP4729062B2 (ja) 2008-03-07 2011-07-20 株式会社東芝 メモリシステム
US9594679B2 (en) * 2008-05-01 2017-03-14 Sandisk Il Ltd. Flash cache flushing method and system
US20100017650A1 (en) * 2008-07-19 2010-01-21 Nanostar Corporation, U.S.A Non-volatile memory data storage system with reliability management
TWI475378B (zh) * 2008-10-09 2015-03-01 Micron Technology Inc 耦合至一主機之儲存系統、與儲存系統中之nand記憶體介接之控制器及管理nand記憶體裝置堆疊之方法
JP5650116B2 (ja) 2008-10-09 2015-01-07 マイクロン テクノロジー, インク. 仮想化ecc−nand
JP2012511789A (ja) * 2008-12-09 2012-05-24 ラムバス・インコーポレーテッド 並行且つパイプライン化されたメモリ動作用の不揮発性メモリデバイス
JP2010157130A (ja) * 2008-12-27 2010-07-15 Toshiba Corp メモリシステム
JP5221332B2 (ja) * 2008-12-27 2013-06-26 株式会社東芝 メモリシステム
US8166258B2 (en) * 2009-07-24 2012-04-24 Lsi Corporation Skip operations for solid state disks
US8321639B2 (en) * 2009-12-30 2012-11-27 Lsi Corporation Command tracking for direct access block storage devices
US8352689B2 (en) * 2009-11-30 2013-01-08 Lsi Corporation Command tag checking in a multi-initiator media controller architecture
US8219776B2 (en) * 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
US8341338B2 (en) * 2009-05-06 2012-12-25 Samsung Electronics Co., Ltd. Data storage device and related method of operation
US8286004B2 (en) * 2009-10-09 2012-10-09 Lsi Corporation Saving encryption keys in one-time programmable memory
US8245112B2 (en) * 2009-06-04 2012-08-14 Lsi Corporation Flash memory organization
US8555141B2 (en) * 2009-06-04 2013-10-08 Lsi Corporation Flash memory organization
US8271737B2 (en) * 2009-05-27 2012-09-18 Spansion Llc Cache auto-flush in a solid state memory device
WO2010144624A1 (en) 2009-06-09 2010-12-16 Google Inc. Programming of dimm termination resistance values
JP2011008570A (ja) * 2009-06-26 2011-01-13 Buffalo Inc ストレージ装置、情報処理システム、およびコンピュータプログラム
TWI435215B (zh) * 2009-08-26 2014-04-21 Phison Electronics Corp 下達讀取指令與資料讀取方法、控制器與儲存系統
JP2011070365A (ja) 2009-09-25 2011-04-07 Toshiba Corp メモリシステム
US8082313B2 (en) * 2009-10-26 2011-12-20 International Business Machines Corporation Efficient utilization of read-ahead buffer by partitioning read-ahead buffer in correspondence with selectors
US8407403B2 (en) * 2009-12-07 2013-03-26 Microsoft Corporation Extending SSD lifetime using hybrid storage
US8473669B2 (en) * 2009-12-07 2013-06-25 Sandisk Technologies Inc. Method and system for concurrent background and foreground operations in a non-volatile memory array
US9514055B2 (en) * 2009-12-31 2016-12-06 Seagate Technology Llc Distributed media cache for data storage systems
US9785561B2 (en) * 2010-02-17 2017-10-10 International Business Machines Corporation Integrating a flash cache into large storage systems
US9959209B1 (en) 2010-03-23 2018-05-01 Western Digital Technologies, Inc. Data storage device adjusting command rate profile based on operating mode
JP4988008B2 (ja) 2010-05-13 2012-08-01 株式会社東芝 情報処理装置およびドライバ
JP4988007B2 (ja) 2010-05-13 2012-08-01 株式会社東芝 情報処理装置およびドライバ
USRE49818E1 (en) 2010-05-13 2024-01-30 Kioxia Corporation Information processing method in a multi-level hierarchical memory system
JP2012022475A (ja) * 2010-07-13 2012-02-02 Panasonic Corp データ処理装置、半導体装置および制御方法
JP5520747B2 (ja) * 2010-08-25 2014-06-11 株式会社日立製作所 キャッシュを搭載した情報装置及びコンピュータ読み取り可能な記憶媒体
US8452911B2 (en) 2010-09-30 2013-05-28 Sandisk Technologies Inc. Synchronized maintenance operations in a multi-bank storage system
US8271692B1 (en) 2010-10-01 2012-09-18 Western Digital Technologies, Inc. Throttled command completion time
CN102169464B (zh) * 2010-11-30 2013-01-30 北京握奇数据系统有限公司 一种用于非易失性存储器的缓存方法、装置及智能卡
US8966201B2 (en) 2010-12-10 2015-02-24 Sandisk Technologies Inc. Method and system for hijacking writes to a non-volatile memory
JP2012133416A (ja) * 2010-12-17 2012-07-12 Toshiba Corp メモリシステム
US8918595B2 (en) 2011-04-28 2014-12-23 Seagate Technology Llc Enforcing system intentions during memory scheduling
US8843693B2 (en) 2011-05-17 2014-09-23 SanDisk Technologies, Inc. Non-volatile memory and method with improved data scrambling
US10031850B2 (en) * 2011-06-07 2018-07-24 Sandisk Technologies Llc System and method to buffer data
US8904128B2 (en) * 2011-06-08 2014-12-02 Hewlett-Packard Development Company, L.P. Processing a request to restore deduplicated data
TWI459389B (zh) * 2011-06-09 2014-11-01 Winbond Electronics Corp 半導體記憶體裝置、記憶體裝置讀取程式以及方法
US9189405B2 (en) * 2011-08-03 2015-11-17 International Business Machines Corporation Placement of data in shards on a storage device
US8762627B2 (en) 2011-12-21 2014-06-24 Sandisk Technologies Inc. Memory logical defragmentation during garbage collection
US10025711B2 (en) * 2012-01-16 2018-07-17 Qualcomm Incorporated Hybrid write-through/write-back cache policy managers, and related systems and methods
CN103324441A (zh) * 2012-03-19 2013-09-25 联想(北京)有限公司 一种信息处理方法及电子设备
US9135192B2 (en) 2012-03-30 2015-09-15 Sandisk Technologies Inc. Memory system with command queue reordering
US9754648B2 (en) 2012-10-26 2017-09-05 Micron Technology, Inc. Apparatuses and methods for memory operations having variable latencies
US9098491B2 (en) * 2012-11-23 2015-08-04 Hong Kong Applied Science and Technology Research Institute Company Limited Method and system for performing data transfer with a flash storage medium
US8873284B2 (en) 2012-12-31 2014-10-28 Sandisk Technologies Inc. Method and system for program scheduling in a multi-layer memory
US9734050B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for managing background operations in a multi-layer memory
US9465731B2 (en) 2012-12-31 2016-10-11 Sandisk Technologies Llc Multi-layer non-volatile memory system having multiple partitions in a layer
US9348746B2 (en) 2012-12-31 2016-05-24 Sandisk Technologies Method and system for managing block reclaim operations in a multi-layer memory
US9336133B2 (en) 2012-12-31 2016-05-10 Sandisk Technologies Inc. Method and system for managing program cycles including maintenance programming operations in a multi-layer memory
US9223693B2 (en) 2012-12-31 2015-12-29 Sandisk Technologies Inc. Memory system having an unequal number of memory die on different control channels
US9734911B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for asynchronous die operations in a non-volatile memory
US20140201442A1 (en) * 2013-01-15 2014-07-17 Lsi Corporation Cache based storage controller
US9652376B2 (en) * 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US10089224B2 (en) * 2013-03-15 2018-10-02 The Boeing Company Write caching using volatile shadow memory
US9734097B2 (en) 2013-03-15 2017-08-15 Micron Technology, Inc. Apparatuses and methods for variable latency memory operations
CN104937565B (zh) 2013-03-28 2017-11-17 慧与发展有限责任合伙企业 从第一节点到第二节点的地址范围传送
EP2979187B1 (en) * 2013-03-28 2019-07-31 Hewlett-Packard Enterprise Development LP Data flush of group table
KR20140142759A (ko) * 2013-05-31 2014-12-15 에스케이하이닉스 주식회사 비휘발성 메모리 장치 및 그의 동작방법과 비휘발성 메모리 장치를 포함하는 시스템
WO2014205638A1 (zh) * 2013-06-25 2014-12-31 华为技术有限公司 一种数据包传输方法及设备
US8929146B1 (en) * 2013-07-26 2015-01-06 Avalanche Technology, Inc. Controller management of memory array of storage device using magnetic random access memory (MRAM)
US9563565B2 (en) 2013-08-14 2017-02-07 Micron Technology, Inc. Apparatuses and methods for providing data from a buffer
US9727493B2 (en) 2013-08-14 2017-08-08 Micron Technology, Inc. Apparatuses and methods for providing data to a configurable storage area
TWI514394B (zh) * 2013-08-27 2015-12-21 Toshiba Kk Semiconductor memory device and its control method
US10140212B2 (en) 2013-09-30 2018-11-27 Vmware, Inc. Consistent and efficient mirroring of nonvolatile memory state in virtualized environments by remote mirroring memory addresses of nonvolatile memory to which cached lines of the nonvolatile memory have been flushed
US10223026B2 (en) * 2013-09-30 2019-03-05 Vmware, Inc. Consistent and efficient mirroring of nonvolatile memory state in virtualized environments where dirty bit of page table entries in non-volatile memory are not cleared until pages in non-volatile memory are remotely mirrored
US9558124B2 (en) 2013-11-08 2017-01-31 Seagate Technology Llc Data storage system with passive partitioning in a secondary memory
KR102147993B1 (ko) 2013-11-14 2020-08-25 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 동작 방법
KR20150061393A (ko) 2013-11-27 2015-06-04 삼성전자주식회사 메모리 장치로부터 읽은 데이터를 고속으로 전송하는 메모리 컨트롤러 및 그것의 데이터 전송 방법.
KR20150068747A (ko) 2013-12-12 2015-06-22 삼성전자주식회사 비휘발성 메모리 시스템, 이를 포함하는 모바일 장치 및 비휘발성 메모리 시스템의 동작방법
KR102181210B1 (ko) 2014-01-10 2020-11-23 삼성전자주식회사 저장 장치의 데이터 처리 방법 및 저장 장치
US10031869B1 (en) 2014-03-28 2018-07-24 Adesto Technologies Corporation Cached memory structure and operation
KR102198855B1 (ko) * 2014-04-24 2021-01-05 삼성전자 주식회사 메모리 시스템 및 상기 메모리 시스템의 동작 방법
KR102106261B1 (ko) 2014-06-17 2020-05-04 삼성전자주식회사 메모리 컨트롤러의 작동 방법과 이를 포함하는 장치들의 작동 방법들
WO2015196378A1 (zh) 2014-06-25 2015-12-30 华为技术有限公司 读写闪存中数据的方法、装置及用户设备
US9740426B2 (en) * 2014-09-19 2017-08-22 Lenovo (Singapore) Pte. Ltd. Drive array policy control
WO2016086342A1 (zh) * 2014-12-01 2016-06-09 华为技术有限公司 数据写入的方法、装置、设备和存储系统
US10372602B2 (en) 2015-01-30 2019-08-06 Hewlett Packard Enterprise Development Lp Ordering updates for nonvolatile memory accesses
US9658959B2 (en) * 2015-02-20 2017-05-23 PernixData, Inc. Cache resource manager
CN105988735B (zh) 2015-03-06 2019-03-19 华为技术有限公司 数据写入控制装置及方法
US9875051B2 (en) * 2015-04-24 2018-01-23 Toshiba Memory Corporation Memory system that controls power state of buffer memory
US9823852B2 (en) * 2015-05-01 2017-11-21 Toshiba Memory Corporation Memory system with nonvolatile memory
US10025532B2 (en) 2015-09-11 2018-07-17 Sandisk Technologies Llc Preserving read look ahead data in auxiliary latches
US10642513B2 (en) 2015-09-11 2020-05-05 Sandisk Technologies Llc Partially de-centralized latch management architectures for storage devices
US10042553B2 (en) 2015-10-30 2018-08-07 Sandisk Technologies Llc Method and system for programming a multi-layer non-volatile memory having a single fold data path
US9778855B2 (en) 2015-10-30 2017-10-03 Sandisk Technologies Llc System and method for precision interleaving of data writes in a non-volatile memory
US10133490B2 (en) 2015-10-30 2018-11-20 Sandisk Technologies Llc System and method for managing extended maintenance scheduling in a non-volatile memory
US10120613B2 (en) 2015-10-30 2018-11-06 Sandisk Technologies Llc System and method for rescheduling host and maintenance operations in a non-volatile memory
KR102470606B1 (ko) 2015-11-26 2022-11-28 삼성전자주식회사 불휘발성 메모리 장치 및 불휘발성 메모리 장치를 포함하는 스토리지 장치
CN105405465B (zh) * 2015-12-29 2019-07-23 中北大学 数据存储及处理电路
US10120808B2 (en) 2016-04-22 2018-11-06 Arm Limited Apparatus having cache memory disposed in a memory transaction path between interconnect circuitry and a non-volatile memory, and corresponding method
US10298646B2 (en) 2016-04-27 2019-05-21 Google Llc Similar introduction advertising caching mechanism
KR102664674B1 (ko) 2016-06-10 2024-05-16 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
KR20180031412A (ko) * 2016-09-20 2018-03-28 삼성전자주식회사 메모리 컨트롤러의 동작 방법과, 이를 포함하는 장치들의 동작 방법들
US9823880B1 (en) * 2016-09-30 2017-11-21 Intel Corporation Method and apparatus for initiating pre-read operation before completion of data load operation
US10452598B2 (en) * 2016-10-18 2019-10-22 Micron Technology, Inc. Apparatuses and methods for an operating system cache in a solid state device
US11182306B2 (en) * 2016-11-23 2021-11-23 Advanced Micro Devices, Inc. Dynamic application of software data caching hints based on cache test regions
US10318423B2 (en) 2016-12-14 2019-06-11 Macronix International Co., Ltd. Methods and systems for managing physical information of memory units in a memory device
JP2018106573A (ja) 2016-12-28 2018-07-05 富士通株式会社 ストレージ制御装置及び制御プログラム
US10725835B2 (en) 2017-05-03 2020-07-28 Western Digital Technologies, Inc. System and method for speculative execution of commands using a controller memory buffer
US10564853B2 (en) 2017-04-26 2020-02-18 Western Digital Technologies, Inc. System and method for locality detection to identify read or write streams in a memory device
US10509569B2 (en) 2017-03-24 2019-12-17 Western Digital Technologies, Inc. System and method for adaptive command fetch aggregation
WO2018175063A1 (en) * 2017-03-24 2018-09-27 Western Digital Technologies, Inc. System and method for locality detection to identify read or write streams in a memory device
US10466903B2 (en) 2017-03-24 2019-11-05 Western Digital Technologies, Inc. System and method for dynamic and adaptive interrupt coalescing
US10452278B2 (en) 2017-03-24 2019-10-22 Western Digital Technologies, Inc. System and method for adaptive early completion posting using controller memory buffer
WO2018176388A1 (en) * 2017-03-31 2018-10-04 Intel Corporation Techniques to maintain memory confidentiality through power state changes
US10296249B2 (en) 2017-05-03 2019-05-21 Western Digital Technologies, Inc. System and method for processing non-contiguous submission and completion queues
US10884926B2 (en) 2017-06-16 2021-01-05 Alibaba Group Holding Limited Method and system for distributed storage using client-side global persistent cache
US10482010B2 (en) * 2017-06-29 2019-11-19 Intel Corporation Persistent host memory buffer
US10564856B2 (en) 2017-07-06 2020-02-18 Alibaba Group Holding Limited Method and system for mitigating write amplification in a phase change memory-based storage device
US10678443B2 (en) 2017-07-06 2020-06-09 Alibaba Group Holding Limited Method and system for high-density converged storage via memory bus
US10613985B2 (en) * 2017-07-06 2020-04-07 Seagate Technology Llc Buffer management in a data storage device wherein a bit indicating whether data is in cache is reset after updating forward table with physical address of non-volatile memory and jettisoning the data from the cache
US10496829B2 (en) 2017-09-15 2019-12-03 Alibaba Group Holding Limited Method and system for data destruction in a phase change memory-based storage device
US10642522B2 (en) 2017-09-15 2020-05-05 Alibaba Group Holding Limited Method and system for in-line deduplication in a storage drive based on a non-collision hash
US10503409B2 (en) 2017-09-27 2019-12-10 Alibaba Group Holding Limited Low-latency lightweight distributed storage system
US10789011B2 (en) 2017-09-27 2020-09-29 Alibaba Group Holding Limited Performance enhancement of a storage device using an integrated controller-buffer
US10860334B2 (en) 2017-10-25 2020-12-08 Alibaba Group Holding Limited System and method for centralized boot storage in an access switch shared by multiple servers
US10445190B2 (en) 2017-11-08 2019-10-15 Alibaba Group Holding Limited Method and system for enhancing backup efficiency by bypassing encoding and decoding
US10877898B2 (en) 2017-11-16 2020-12-29 Alibaba Group Holding Limited Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements
US10891239B2 (en) * 2018-02-07 2021-01-12 Alibaba Group Holding Limited Method and system for operating NAND flash physical space to extend memory capacity
US10496548B2 (en) 2018-02-07 2019-12-03 Alibaba Group Holding Limited Method and system for user-space storage I/O stack with user-space flash translation layer
US10831404B2 (en) 2018-02-08 2020-11-10 Alibaba Group Holding Limited Method and system for facilitating high-capacity shared memory using DIMM from retired servers
WO2019222958A1 (en) 2018-05-24 2019-11-28 Alibaba Group Holding Limited System and method for flash storage management using multiple open page stripes
WO2020000136A1 (en) 2018-06-25 2020-01-02 Alibaba Group Holding Limited System and method for managing resources of a storage device and quantifying the cost of i/o requests
US10921992B2 (en) 2018-06-25 2021-02-16 Alibaba Group Holding Limited Method and system for data placement in a hard disk drive based on access frequency for improved IOPS and utilization efficiency
KR102695771B1 (ko) * 2018-07-06 2024-08-19 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
US10871921B2 (en) 2018-07-30 2020-12-22 Alibaba Group Holding Limited Method and system for facilitating atomicity assurance on metadata and data bundled storage
US10747673B2 (en) 2018-08-02 2020-08-18 Alibaba Group Holding Limited System and method for facilitating cluster-level cache and memory space
US10996886B2 (en) 2018-08-02 2021-05-04 Alibaba Group Holding Limited Method and system for facilitating atomicity and latency assurance on variable sized I/O
US11327929B2 (en) 2018-09-17 2022-05-10 Alibaba Group Holding Limited Method and system for reduced data movement compression using in-storage computing and a customized file system
US10852948B2 (en) 2018-10-19 2020-12-01 Alibaba Group Holding System and method for data organization in shingled magnetic recording drive
US10795586B2 (en) 2018-11-19 2020-10-06 Alibaba Group Holding Limited System and method for optimization of global data placement to mitigate wear-out of write cache and NAND flash
KR102684940B1 (ko) 2018-11-21 2024-07-17 에스케이하이닉스 주식회사 데이터 처리 시스템
KR102693213B1 (ko) 2018-11-30 2024-08-09 에스케이하이닉스 주식회사 메모리 시스템
US11544063B2 (en) 2018-11-21 2023-01-03 SK Hynix Inc. Memory system and data processing system including the same
KR102679649B1 (ko) * 2018-11-30 2024-07-01 에스케이하이닉스 주식회사 메모리 시스템
US10769018B2 (en) 2018-12-04 2020-09-08 Alibaba Group Holding Limited System and method for handling uncorrectable data errors in high-capacity storage
US10884654B2 (en) 2018-12-31 2021-01-05 Alibaba Group Holding Limited System and method for quality of service assurance of multi-stream scenarios in a hard disk drive
US10977122B2 (en) 2018-12-31 2021-04-13 Alibaba Group Holding Limited System and method for facilitating differentiated error correction in high-density flash devices
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US11132291B2 (en) 2019-01-04 2021-09-28 Alibaba Group Holding Limited System and method of FPGA-executed flash translation layer in multiple solid state drives
US10860420B2 (en) 2019-02-05 2020-12-08 Alibaba Group Holding Limited Method and system for mitigating read disturb impact on persistent memory
US11200337B2 (en) 2019-02-11 2021-12-14 Alibaba Group Holding Limited System and method for user data isolation
US10970212B2 (en) 2019-02-15 2021-04-06 Alibaba Group Holding Limited Method and system for facilitating a distributed storage system with a total cost of ownership reduction for multiple available zones
US11061834B2 (en) 2019-02-26 2021-07-13 Alibaba Group Holding Limited Method and system for facilitating an improved storage system by decoupling the controller from the storage medium
US10783035B1 (en) 2019-02-28 2020-09-22 Alibaba Group Holding Limited Method and system for improving throughput and reliability of storage media with high raw-error-rate
US10877896B2 (en) 2019-03-07 2020-12-29 Micron Technology, Inc. Adaptive readahead cache manager based on detected active streams of read commands
JP2020155052A (ja) * 2019-03-22 2020-09-24 キオクシア株式会社 メモリシステムおよび制御方法
US10891065B2 (en) 2019-04-01 2021-01-12 Alibaba Group Holding Limited Method and system for online conversion of bad blocks for improvement of performance and longevity in a solid state drive
US10922234B2 (en) 2019-04-11 2021-02-16 Alibaba Group Holding Limited Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive
US10908960B2 (en) 2019-04-16 2021-02-02 Alibaba Group Holding Limited Resource allocation based on comprehensive I/O monitoring in a distributed storage system
KR20240064052A (ko) * 2019-05-17 2024-05-10 양쯔 메모리 테크놀로지스 씨오., 엘티디. 정적 랜덤 액세스 메모리를 사용하는 3차원 메모리 디바이스의 캐시 프로그램 작동
US11169873B2 (en) 2019-05-21 2021-11-09 Alibaba Group Holding Limited Method and system for extending lifespan and enhancing throughput in a high-density solid state drive
US10860223B1 (en) 2019-07-18 2020-12-08 Alibaba Group Holding Limited Method and system for enhancing a distributed storage system by decoupling computation and network tasks
US10789094B1 (en) 2019-08-22 2020-09-29 Micron Technology, Inc. Hierarchical memory apparatus
US11126561B2 (en) 2019-10-01 2021-09-21 Alibaba Group Holding Limited Method and system for organizing NAND blocks and placing data to facilitate high-throughput for random writes in a solid state drive
KR20210066631A (ko) 2019-11-28 2021-06-07 삼성전자주식회사 메모리에 데이터를 기입하기 위한 장치 및 방법
US11042307B1 (en) 2020-01-13 2021-06-22 Alibaba Group Holding Limited System and method for facilitating improved utilization of NAND flash based on page-wise operation
US11449455B2 (en) 2020-01-15 2022-09-20 Alibaba Group Holding Limited Method and system for facilitating a high-capacity object storage system with configuration agility and mixed deployment flexibility
US10923156B1 (en) 2020-02-19 2021-02-16 Alibaba Group Holding Limited Method and system for facilitating low-cost high-throughput storage for accessing large-size I/O blocks in a hard disk drive
US10872622B1 (en) 2020-02-19 2020-12-22 Alibaba Group Holding Limited Method and system for deploying mixed storage products on a uniform storage infrastructure
US11150986B2 (en) 2020-02-26 2021-10-19 Alibaba Group Holding Limited Efficient compaction on log-structured distributed file system using erasure coding for resource consumption reduction
US11144250B2 (en) 2020-03-13 2021-10-12 Alibaba Group Holding Limited Method and system for facilitating a persistent memory-centric system
US11200114B2 (en) 2020-03-17 2021-12-14 Alibaba Group Holding Limited System and method for facilitating elastic error correction code in memory
US11385833B2 (en) 2020-04-20 2022-07-12 Alibaba Group Holding Limited Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources
US11281575B2 (en) 2020-05-11 2022-03-22 Alibaba Group Holding Limited Method and system for facilitating data placement and control of physical addresses with multi-queue I/O blocks
US11461262B2 (en) 2020-05-13 2022-10-04 Alibaba Group Holding Limited Method and system for facilitating a converged computation and storage node in a distributed storage system
US11494115B2 (en) 2020-05-13 2022-11-08 Alibaba Group Holding Limited System method for facilitating memory media as file storage device based on real-time hashing by performing integrity check with a cyclical redundancy check (CRC)
US11218165B2 (en) 2020-05-15 2022-01-04 Alibaba Group Holding Limited Memory-mapped two-dimensional error correction code for multi-bit error tolerance in DRAM
US11556277B2 (en) 2020-05-19 2023-01-17 Alibaba Group Holding Limited System and method for facilitating improved performance in ordering key-value storage with input/output stack simplification
US11507499B2 (en) 2020-05-19 2022-11-22 Alibaba Group Holding Limited System and method for facilitating mitigation of read/write amplification in data compression
US11263132B2 (en) 2020-06-11 2022-03-01 Alibaba Group Holding Limited Method and system for facilitating log-structure data organization
US11354200B2 (en) 2020-06-17 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating data recovery and version rollback in a storage device
US11422931B2 (en) 2020-06-17 2022-08-23 Alibaba Group Holding Limited Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization
US11462249B2 (en) 2020-06-30 2022-10-04 Micron Technology, Inc. System and method for reading and writing memory management data using a non-volatile cell based register
US11354233B2 (en) 2020-07-27 2022-06-07 Alibaba Group Holding Limited Method and system for facilitating fast crash recovery in a storage device
US11372774B2 (en) 2020-08-24 2022-06-28 Alibaba Group Holding Limited Method and system for a solid state drive with on-chip memory integration
US11513723B2 (en) 2020-09-17 2022-11-29 Western Digital Technologies, Inc. Read handling in zoned namespace devices
US11487465B2 (en) 2020-12-11 2022-11-01 Alibaba Group Holding Limited Method and system for a local storage engine collaborating with a solid state drive controller
US11734115B2 (en) 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11416365B2 (en) 2020-12-30 2022-08-16 Alibaba Group Holding Limited Method and system for open NAND block detection and correction in an open-channel SSD
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11461173B1 (en) 2021-04-21 2022-10-04 Alibaba Singapore Holding Private Limited Method and system for facilitating efficient data compression based on error correction code and reorganization of data placement
US11650758B2 (en) 2021-05-06 2023-05-16 Western Digital Technologies, Inc. Data storage device and method for host-initiated cached read to recover corrupted data within timeout constraints
US11476874B1 (en) 2021-05-14 2022-10-18 Alibaba Singapore Holding Private Limited Method and system for facilitating a storage server with hybrid memory for journaling and data storage
CN113905097B (zh) * 2021-09-26 2022-07-05 合肥申威睿思信息科技有限公司 一种数据传输方法和装置
US20230281122A1 (en) * 2022-03-04 2023-09-07 Western Digital Technologies, Inc. Data Storage Device and Method for Host-Determined Proactive Block Clearance
US11894060B2 (en) 2022-03-25 2024-02-06 Western Digital Technologies, Inc. Dual performance trim for optimization of non-volatile memory performance, endurance, and reliability
CN116049025B (zh) * 2023-01-29 2023-08-11 荣耀终端有限公司 动态调整内存回收gc参数的方法、电子设备及存储介质
CN118672666A (zh) * 2024-08-23 2024-09-20 成都赛力斯科技有限公司 可执行文件生成方法、装置、计算机设备和可读存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6434669B1 (en) 1999-09-07 2002-08-13 International Business Machines Corporation Method of cache management to dynamically update information-type dependent cache policies

Family Cites Families (93)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4725945A (en) 1984-09-18 1988-02-16 International Business Machines Corp. Distributed cache in dynamic rams
US5095344A (en) 1988-06-08 1992-03-10 Eliyahou Harari Highly compact eprom and flash eeprom devices
US5043940A (en) 1988-06-08 1991-08-27 Eliyahou Harari Flash EEPROM memory systems having multistate storage cells
JPH02219144A (ja) 1989-02-21 1990-08-31 Toshiba Corp ライト・バックアクセス時間を短縮したキャッシュメモリ
US5070032A (en) 1989-03-15 1991-12-03 Sundisk Corporation Method of making dense flash eeprom semiconductor memory structures
DE69033438T2 (de) 1989-04-13 2000-07-06 Sandisk Corp., Santa Clara Austausch von fehlerhaften Speicherzellen einer EEprommatritze
US5172338B1 (en) 1989-04-13 1997-07-08 Sandisk Corp Multi-state eeprom read and write circuits and techniques
US5200959A (en) 1989-10-17 1993-04-06 Sundisk Corporation Device and method for defect handling in semi-conductor memory
JPH0418649A (ja) * 1990-05-11 1992-01-22 Fujitsu Ltd バッファメモリ制御方式
US5343063A (en) 1990-12-18 1994-08-30 Sundisk Corporation Dense vertical programmable read only memory cell structure and processes for making them
US5270979A (en) 1991-03-15 1993-12-14 Sundisk Corporation Method for optimum erasing of EEPROM
US5663901A (en) 1991-04-11 1997-09-02 Sandisk Corporation Computer memory cards using flash EEPROM integrated circuit chips and memory-controller systems
US5430859A (en) 1991-07-26 1995-07-04 Sundisk Corporation Solid state memory system including plural memory chips and a serialized bus
US5359569A (en) 1991-10-29 1994-10-25 Hitachi Ltd. Semiconductor memory
US5313421A (en) 1992-01-14 1994-05-17 Sundisk Corporation EEPROM with split gate source side injection
US5712180A (en) 1992-01-14 1998-01-27 Sundisk Corporation EEPROM with split gate source side injection
US6222762B1 (en) 1992-01-14 2001-04-24 Sandisk Corporation Multi-state memory
JPH05233464A (ja) 1992-02-25 1993-09-10 Fuji Photo Film Co Ltd Eepromのデータ書換方法およびeepromカード
JPH05299616A (ja) 1992-04-16 1993-11-12 Hitachi Ltd 半導体記憶装置
US5532962A (en) 1992-05-20 1996-07-02 Sandisk Corporation Soft errors handling in EEPROM devices
US5315541A (en) 1992-07-24 1994-05-24 Sundisk Corporation Segmented column memory array
US5428621A (en) 1992-09-21 1995-06-27 Sundisk Corporation Latent defect handling in EEPROM devices
JPH07146820A (ja) 1993-04-08 1995-06-06 Hitachi Ltd フラッシュメモリの制御方法及び、それを用いた情報処理装置
JPH06349286A (ja) * 1993-06-04 1994-12-22 Matsushita Electric Ind Co Ltd フラッシュメモリ用書き込み制御方法および制御装置
US5555204A (en) 1993-06-29 1996-09-10 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device
KR0169267B1 (ko) 1993-09-21 1999-02-01 사토 후미오 불휘발성 반도체 기억장치
US6026027A (en) 1994-01-31 2000-02-15 Norand Corporation Flash memory system having memory cache
US5726937A (en) 1994-01-31 1998-03-10 Norand Corporation Flash memory system having memory cache
US5661053A (en) 1994-05-25 1997-08-26 Sandisk Corporation Method of making dense flash EEPROM cell array and peripheral supporting circuits formed in deposited field oxide with the use of spacers
JP3586887B2 (ja) * 1994-06-10 2004-11-10 松下電器産業株式会社 情報記録再生装置およびデータキャッシュ方法
JPH086858A (ja) * 1994-06-21 1996-01-12 Toshiba Corp キャッシュ制御装置
US5586291A (en) * 1994-12-23 1996-12-17 Emc Corporation Disk controller with volatile and non-volatile cache memories
US5606532A (en) 1995-03-17 1997-02-25 Atmel Corporation EEPROM array with flash-like core
JPH08263229A (ja) * 1995-03-23 1996-10-11 Hitachi Ltd 半導体記憶装置
US5579259A (en) 1995-05-31 1996-11-26 Sandisk Corporation Low voltage erase of a flash EEPROM system having a common erase electrode for two individually erasable sectors
US5712179A (en) 1995-10-31 1998-01-27 Sandisk Corporation Method of making triple polysilicon flash EEPROM arrays having a separate erase gate for each row of floating gates
US5903495A (en) 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
US6023027A (en) * 1996-05-03 2000-02-08 Neff; Scott E. Cable guard having a hinge rod and for protecting cables extending along a tubing string
US5798968A (en) 1996-09-24 1998-08-25 Sandisk Corporation Plane decode/virtual sector architecture
US5966734A (en) 1996-10-18 1999-10-12 Samsung Electronics Co., Ltd. Resizable and relocatable memory scratch pad as a cache slice
US5890192A (en) 1996-11-05 1999-03-30 Sandisk Corporation Concurrent write of multiple chunks of data into multiple subarrays of flash EEPROM
US5937423A (en) 1996-12-26 1999-08-10 Intel Corporation Register interface for flash EEPROM memory arrays
US6418506B1 (en) * 1996-12-31 2002-07-09 Intel Corporation Integrated circuit memory and method for transferring data using a volatile memory to buffer data for a nonvolatile memory array
US5930167A (en) 1997-07-30 1999-07-27 Sandisk Corporation Multi-state non-volatile flash memory capable of being its own two state write cache
US5822251A (en) * 1997-08-25 1998-10-13 Bit Microsystems, Inc. Expandable flash-memory mass-storage using shared buddy lines and intermediate flash-bus between device-specific buffers and flash-intelligent DMA controllers
US6000006A (en) 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
US5909449A (en) 1997-09-08 1999-06-01 Invox Technology Multibit-per-cell non-volatile memory with error detection and correction
US6105103A (en) * 1997-12-19 2000-08-15 Lsi Logic Corporation Method for mapping in dynamically addressed storage subsystems
US6263398B1 (en) 1998-02-10 2001-07-17 Ramtron International Corporation Integrated circuit memory device incorporating a non-volatile memory array and a relatively faster access time memory cache
US6295577B1 (en) * 1998-02-24 2001-09-25 Seagate Technology Llc Disc storage system having a non-volatile cache to store write data in the event of a power failure
US6249841B1 (en) 1998-12-03 2001-06-19 Ramtron International Corporation Integrated circuit memory device and method incorporating flash and ferroelectric random access memory arrays
US6349363B2 (en) 1998-12-08 2002-02-19 Intel Corporation Multi-section cache with different attributes for each section
GB9903490D0 (en) * 1999-02-17 1999-04-07 Memory Corp Plc Memory system
US6741414B1 (en) * 1999-06-15 2004-05-25 Tokyo Electron Limited Joint spindle speed and head position control in rotating media storage systems
US6151248A (en) 1999-06-30 2000-11-21 Sandisk Corporation Dual floating gate EEPROM cell array with steering gates shared by adjacent cells
US6708257B2 (en) 1999-07-12 2004-03-16 Koninklijke Philips Electronics N.V. Buffering system bus for external-memory access
US6343649B1 (en) * 1999-09-07 2002-02-05 Halliburton Energy Services, Inc. Methods and associated apparatus for downhole data retrieval, monitoring and tool actuation
JP3578265B2 (ja) 1999-11-19 2004-10-20 日本電気株式会社 不揮発性メモリへのデータ書き込み方法および情報処理装置ならびに記録媒体
US6647499B1 (en) 2000-01-26 2003-11-11 International Business Machines Corporation System for powering down a disk storage device to an idle state upon trnsfer to an intermediate storage location accessible by system processor
US6329687B1 (en) * 2000-01-27 2001-12-11 Advanced Micro Devices, Inc. Two bit flash cell with two floating gate regions
US6426893B1 (en) 2000-02-17 2002-07-30 Sandisk Corporation Flash eeprom system with simultaneous multiple data sector programming and storage of physical block characteristics in other designated blocks
US6615307B1 (en) * 2000-05-10 2003-09-02 Micron Technology, Inc. Flash with consistent latency for read operations
JP2001344986A (ja) 2000-06-05 2001-12-14 Mitsubishi Electric Corp 不揮発性半導体記憶装置
TW576966B (en) * 2000-06-23 2004-02-21 Intel Corp Non-volatile cache integrated with mass storage device
EP1297434B1 (en) 2000-06-27 2005-04-20 Koninklijke Philips Electronics N.V. Integrated circuit with flash
US6721843B1 (en) 2000-07-07 2004-04-13 Lexar Media, Inc. Flash memory architecture implementing simultaneously programmable multiple flash memory banks that are host compatible
US6694453B1 (en) * 2000-11-14 2004-02-17 Hewlett-Packard Development Company, L.P. Apparatus and method to handle power supply failures for a peripheral device
US6349056B1 (en) 2000-12-28 2002-02-19 Sandisk Corporation Method and structure for efficient data verification operation for non-volatile memories
US20020087225A1 (en) * 2001-01-03 2002-07-04 Howard Gary M. Portable computing device having a low power media player
US6763424B2 (en) 2001-01-19 2004-07-13 Sandisk Corporation Partial block data programming and reading operations in a non-volatile memory
US6691205B2 (en) * 2001-03-05 2004-02-10 M-Systems Flash Disk Pioneers Ltd. Method for using RAM buffers with simultaneous accesses in flash based storage systems
US6941414B2 (en) 2001-05-15 2005-09-06 International Business Machines Corporation High speed embedded DRAM with SRAM-like interface
JP4049297B2 (ja) 2001-06-11 2008-02-20 株式会社ルネサステクノロジ 半導体記憶装置
US6522580B2 (en) 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
US7418344B2 (en) * 2001-08-02 2008-08-26 Sandisk Corporation Removable computer with mass storage
US6456528B1 (en) 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US6717847B2 (en) 2001-09-17 2004-04-06 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US6925007B2 (en) 2001-10-31 2005-08-02 Sandisk Corporation Multi-state non-volatile integrated circuit memory systems that employ dielectric storage elements
JP4082913B2 (ja) * 2002-02-07 2008-04-30 株式会社ルネサステクノロジ メモリシステム
US6871257B2 (en) * 2002-02-22 2005-03-22 Sandisk Corporation Pipelined parallel programming operation in a non-volatile memory system
US6798353B2 (en) 2002-04-24 2004-09-28 Itron Electricity Metering, Inc. Method of using flash memory for storing metering data
US6941412B2 (en) * 2002-08-29 2005-09-06 Sandisk Corporation Symbol frequency leveling in a storage system
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
US7546418B2 (en) * 2003-08-20 2009-06-09 Dell Products L.P. System and method for managing power consumption and data integrity in a computer system
US7500127B2 (en) * 2003-09-18 2009-03-03 Vulcan Portals Inc. Method and apparatus for operating an electronic device in a low power mode
US7426647B2 (en) * 2003-09-18 2008-09-16 Vulcan Portals Inc. Low power media player for an electronic device
US7173863B2 (en) * 2004-03-08 2007-02-06 Sandisk Corporation Flash controller cache architecture
US7139864B2 (en) * 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7490283B2 (en) * 2004-05-13 2009-02-10 Sandisk Corporation Pipelined data relocation and improved chip architectures
US8429313B2 (en) * 2004-05-27 2013-04-23 Sandisk Technologies Inc. Configurable ready/busy control
US7420847B2 (en) * 2004-12-14 2008-09-02 Sandisk Corporation Multi-state memory having data recovery after program fail
JP4805696B2 (ja) * 2006-03-09 2011-11-02 株式会社東芝 半導体集積回路装置およびそのデータ記録方式
ITRM20060139A1 (it) * 2006-03-13 2007-09-14 Micron Technology Inc Sistema ad unita di controllo distribuito di dispositivo di memoria

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6434669B1 (en) 1999-09-07 2002-08-13 International Business Machines Corporation Method of cache management to dynamically update information-type dependent cache policies

Also Published As

Publication number Publication date
EP2264605A1 (en) 2010-12-22
CN101504629A (zh) 2009-08-12
EP2264605B1 (en) 2015-12-16
CN100483366C (zh) 2009-04-29
WO2005088456A3 (en) 2006-04-20
JP2007528079A (ja) 2007-10-04
US20080250202A1 (en) 2008-10-09
TW200614249A (en) 2006-05-01
US20070143545A1 (en) 2007-06-21
US9678877B2 (en) 2017-06-13
EP1725937A2 (en) 2006-11-29
CN1950804A (zh) 2007-04-18
US20050195635A1 (en) 2005-09-08
WO2005088456A2 (en) 2005-09-22
US7408834B2 (en) 2008-08-05
KR20070022659A (ko) 2007-02-27
JP5192228B2 (ja) 2013-05-08
TWI267862B (en) 2006-12-01
CN101504629B (zh) 2012-04-11
US7173863B2 (en) 2007-02-06

Similar Documents

Publication Publication Date Title
KR101204680B1 (ko) 플래시 제어기 캐시 아키텍처
US10936252B2 (en) Storage system capable of invalidating data stored in a storage device thereof
JP4518951B2 (ja) 不揮発性記憶システムにおける自動損耗均等化
US8904083B2 (en) Method and apparatus for storing data in solid state memory
US9342260B2 (en) Methods for writing data to non-volatile memory-based mass storage devices
US8296498B2 (en) Method and system for virtual fast access non-volatile RAM
US6571326B2 (en) Space allocation for data in a nonvolatile memory
US7610438B2 (en) Flash-memory card for caching a hard disk drive with data-area toggling of pointers stored in a RAM lookup table
CN113508368A (zh) 用于存储器子系统中的单独的只读高速缓存和写入-读取高速缓存的未完成命令队列的使用
CN110955384A (zh) 数据储存装置以及非挥发式存储器控制方法
TWI718710B (zh) 資料儲存裝置以及非揮發式記憶體控制方法
EP4170506A1 (en) Systems, methods, and devices for ordered access of data in block modified memory
Jin et al. A comprehensive survey of issues in solid state drives
US8375162B2 (en) Method and apparatus for reducing write cycles in NAND-based flash memory devices
KR20230115196A (ko) 메모리 블록을 할당 해제하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법

Legal Events

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

Payment date: 20151016

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20161019

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20171018

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee