KR101204680B1 - 플래시 제어기 캐시 아키텍처 - Google Patents
플래시 제어기 캐시 아키텍처 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
- G06F2212/2022—Flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
- G06F2212/2146—Solid state disk being detachable, e.g.. USB memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/282—Partitioned cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control 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
본 발명은 반도체 전기적으로 소거할 수 있는 프로그래밍 가능한 판독 전용 메모리들(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 부분과 제 2 부분을 갖고, 상기 제 1 부분은 제 1 정책을 갖고, 상기 제 2 부분은 제 2 정책을 가지며, 상기 제 1 정책과 상기 제 2 정책은 개별적으로 선택되는, 버퍼 캐시를포함하는, 제거 가능한 메모리 카드.
- 제 1항에 있어서, 상기 제 1 정책은 라이트-쓰루 캐시 정책(write-through cache policy)인, 제거 가능한 메모리 카드.
- 제 1항에 있어서, 상기 제 1 정책은 라이트-백 캐시 정책(write-back cache policy)인, 제거 가능한 메모리 카드.
- 제 1항에 있어서, 상기 제 1 부분은, 상기 비휘발성 메모리 어레이에 저장된 제 1 그룹의 데이터 요청시 상기 제 1 그룹의 데이터 및 요청되지 않은 제 2 그룹의 데이터가 상기 비휘발성 메모리 어레이로부터 판독되고 상기 제 2 그룹의 데이터가 상기 제 1 부분에 저장되도록, 판독 캐시로 기능을 하는, 제거 가능한 메모리 카드.
- 제 1항에 있어서, 상기 제 1 부분은 데이터 스트림의 파트가 아닌 중앙 처리 장치에 의해 사용되는 데이터를 저장하는데 사용되는, 제거 가능한 메모리 카드.
- 제 1항에 있어서, 상기 제 1 부분과 상기 제 2 부분은 분할된 캐시의 세그먼트인, 제거 가능한 메모리 카드.
- 제 1항에 있어서, 제 3 정책을 갖는 제 3 부분과 제 4 정책을 갖는 제 4 부분을 더 포함하는, 제거 가능한 메모리 카드.
- 제 7항에 있어서, 중앙 처리 장치를 더 포함하고, 상기 제 1 정책은 라이트-쓰루 정책이고, 상기 제 2 정책은 라이트-백 정책이며, 상기 제 3 정책은 판독 캐시 정책이고, 상기 제 4 정책은 중앙 처리 장치 데이터 저장 정책인, 제거 가능한 메모리 카드.
- 제 1항에 있어서, 상기 제 1 부분의 크기는 변경될 수 있는, 제거 가능한 메모리 카드.
- 제 1항에 있어서, 상기 제 1 부분의 크기는 호스트 명령 시퀀스에 응답하여 상기 카드의 동작 동안 변경될 수 있는, 제거 가능한 메모리 카드.
- 제 1항에 있어서, 상기 버퍼 캐시의 동작을 제어하는 중앙 처리 장치를 더 포함하는, 제거 가능한 메모리 카드.
- 호스트 인터페이스와 플래시 메모리 어레이 모두와 통신하는 버퍼 캐시를 사용하여 제거 가능한 메모리 카드 내의 호스트 인터페이스와 플래시 메모리 어레이 사이에서 데이터 스트림을 핸들링하는 방법에 있어서,상기 버퍼 캐시를 적어도 제 1 세그먼트와 제 2 세그먼트로 분할하는 단계와,상기 제 1 세그먼트에 대한 제 1 캐싱 정책을 결정하는 단계와,상기 제 2 세그먼트에 대한 제 2 캐싱 정책을 결정하는 단계를포함하는, 데이터 스트림을 핸들링하는 방법.
- 제 12항에 있어서, 상기 제 1 캐싱 정책은 제 1 데이터 스트림의 특성에 따라 결정되고, 상기 제 2 캐싱 정책은 제 2 데이터 스트림의 특성에 따라 결정되는, 데이터 스트림을 핸들링하는 방법.
- 제 12항에 있어서, 상기 제 1 캐싱 정책은 라이트-쓰루 정책인, 데이터 스트림을 핸들링하는 방법.
- 제 12항에 있어서, 상기 제 1 캐싱 정책은 라이트-백 정책인, 데이터 스트림을 핸들링하는 방법.
- 제 12항에 있어서, 상기 제 1 캐싱 정책은 판독-미리보기 정책(read-look-ahead policy)인, 데이터 스트림을 핸들링하는 방법.
- 제 12항에 있어서, 상기 제 1 세그먼트의 크기를 변경시키는 단계를 더 포함하는, 데이터 스트림을 핸들링하는 방법.
- 제16항에 있어서, 상기 판독-미리보기 정책은상기 플래시 메모리 어레이로부터 전달될 데이터의 제 1 부분을 식별하는 제 1 어드레스 범위를 상기 호스트로부터 수신하는 단계와,데이터의 제 1 부분을 상기 플래시 메모리 어레이로부터 상기 버퍼 캐시의 상기 제 1 세그먼트로 복사하는 단계와,데이터의 제 2 부분을 상기 플래시 메모리 어레이로부터 상기 버퍼 캐시의 제 1 세그먼트로 복사하는 단계로서, 상기 데이터의 제 2 부분은 상기 플래시 메모리 어레이부터의 전달에 대하여 상기 호스트에 의해 식별되는 상기 제 1 어드레스 범위와 구분되는 제 2 어드레스 범위를 가지는, 단계와,상기 데이터의 제 2 부분을 상기 버퍼 캐시에 유지하면서 상기 데이터의 제 1 부분을 상기 버퍼 캐시로부터 상기 호스트로 송신하는 단계를포함하는, 데이터 전달 방법.
- 제 18항에 있어서, 상기 데이터의 제 2 부분은 제 2 어드레스 범위를 갖고, 상기 제 1 어드레스 범위와 상기 제 2 어드레스 범위는 순차적인, 데이터 전달 방법.
- 제 18항에 있어서, 상기 데이터의 제 2 부분은, 상기 플래시 메모리 어레이로부터 상기 데이터의 제 1 부분과 함께 상기 데이터의 제 2 부분의 병렬 판독을 허용하는 최대 크기로 선택되는, 데이터 전달 방법.
- 제 18항에 있어서, 상기 데이터의 제 2 부분은, 상기 버퍼 캐시 또는 상기 버퍼 캐시의 세그먼트에 저장될 수 있는 최대 크기로 선택되는, 데이터 전달 방법.
- 제 18항에 있어서,상기 판독-미리보기 정책은상기 버퍼 캐시로부터 상기 호스트로 상기 데이터의 제 1 부분을 송신한 후에, 상기 호스트로 전달될 데이터를 식별하는 제 3 어드레스 범위를 수신하는 단계로서, 상기 제 3 어드레스 범위는 적어도 상기 데이터의 제 2 부분에 있는 데이터의 제 3 부분을 식별하는 것을 특징으로 하는 단계; 및상기 플래시 메모리 어레이로부터가 아니라, 상기 버퍼 캐시로부터 상기 호스트로 상기 데이터의 제 3 부분을 전달하는 단계;를 더 포함하는, 데이터 전달 방법.
- 제4항에 있어서, 상기 요청되지 않은 제 2 그룹의 데이터는버퍼 캐시의 제1 부분에 저장될 수 있는 데이터의 최대량인, 제거 가능한 메모리 카드.
- 제1항에 있어서, 상기 버퍼 캐시를 제어하는 중앙 처리 장치와 상기 중앙 처리 장치에 접속된 스태틱 랜덤 액세스 메모리(static random access memory)를 더 포함하는, 제거 가능한 메모리 카드.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
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)
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)
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)
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 |
-
2004
- 2004-03-08 US US10/796,575 patent/US7173863B2/en not_active Expired - Lifetime
-
2005
- 2005-03-07 EP EP10009239.4A patent/EP2264605B1/en active Active
- 2005-03-07 KR KR1020067018401A patent/KR101204680B1/ko not_active IP Right Cessation
- 2005-03-07 EP EP05724785A patent/EP1725937A2/en not_active Ceased
- 2005-03-07 CN CN2009101260749A patent/CN101504629B/zh active Active
- 2005-03-07 JP JP2007502892A patent/JP5192228B2/ja active Active
- 2005-03-07 CN CNB200580014130XA patent/CN100483366C/zh active Active
- 2005-03-07 WO PCT/US2005/007313 patent/WO2005088456A2/en active Application Filing
- 2005-03-08 TW TW094106988A patent/TWI267862B/zh not_active IP Right Cessation
-
2007
- 2007-02-05 US US11/671,394 patent/US7408834B2/en not_active Expired - Lifetime
-
2008
- 2008-06-13 US US12/138,708 patent/US9678877B2/en active Active
Patent Citations (1)
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 |