KR100584255B1 - 플래시 메모리를 위한 포스트방식의 라이트-스루 캐시 - Google Patents

플래시 메모리를 위한 포스트방식의 라이트-스루 캐시 Download PDF

Info

Publication number
KR100584255B1
KR100584255B1 KR1020037004330A KR20037004330A KR100584255B1 KR 100584255 B1 KR100584255 B1 KR 100584255B1 KR 1020037004330 A KR1020037004330 A KR 1020037004330A KR 20037004330 A KR20037004330 A KR 20037004330A KR 100584255 B1 KR100584255 B1 KR 100584255B1
Authority
KR
South Korea
Prior art keywords
flash memory
command
cache memory
cache
memory
Prior art date
Application number
KR1020037004330A
Other languages
English (en)
Other versions
KR20040007395A (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 KR20040007395A publication Critical patent/KR20040007395A/ko
Application granted granted Critical
Publication of KR100584255B1 publication Critical patent/KR100584255B1/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
    • 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
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

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)
  • Charge And Discharge Circuits For Batteries Or The Like (AREA)

Abstract

플래시 메모리로의 연산을 위한 캐시 메모리에 관해 기재되어 있다. 플래시 메모리 관리자는 플래시 메모리에 의한 후속 실행을 위해 플래시 기록 명령 및 플래시 소거 명령을 캐시 메모리로 위치시킨다. 캐시 메모리는 종래의 플래시 메모리 시스템에서 사용되는 큐를 대신할 수 있다. 포어그라운드 관리자는 플래시 메모리의 가용공간 검사를 수행할 수 있고, 명령을 적절한 캐시 엔트리로 쪼개서 캐시 메모리로 엔트리를 기록할 수 있다. 백그라운드 관리자는 계속해서 캐시 메모리로부터 엔트리를 추후 판독하여 플래시 메모리로 실행시키고, 각각의 캐시 엔트리가 플래시 메모리로 포스트됨에 따라 그 캐시 엔트리를 삭제할 수 있다. 캐시 메모리는 특정 우선순위를 가진 명령을 위한 다수의 태그/데이터 어레이 세트를 포함할 수 있다. 백그라운드 관리자로부터 포어그라운드 관리자로 대부분의 종래의 플래시 관리 기능을 재배치하는 것은 백그라운드 관리자로부터의 "플래시 풀(flash full)" 응답의 가능성을 없앨 수 있으며, 플래시 메모리로 명령이 수행될 때 그 명령을 위한 가용공간이 있는지의 백그라운드 관리자가 판단할 필요성을 없앨 수 있다.
플래시 메모리, 캐시 메모리, 플래시 메모리 관리자, 판독, 기록, 소거

Description

플래시 메모리를 위한 포스트방식의 라이트-스루 캐시{POSTED WRITE-THROUGH CACHE FOR FLASH MEMORY}
본 발명은 일반적으로 컴퓨터 시스템에 관한 것으로서, 특히, 컴퓨터 시스템에서 플래시 메모리 연산에 관한 것이다.
플래시 메모리(flash memory)는 데이터가 한번에 한 바이트씩 기록되고 판독되도록 허용하고, 그러나 전체 블록만이 소거될 수 있는 특수 타입 메모리이다. 플래시 장치(flash device)에서의 통상의 블록 사이즈는 8KB(킬로바이트) 내지 128 KB의 범위에 있다. 플래시 메모리의 위치(locations)에 저장된 데이터는 위치가 먼저 소거되지 않으면 변경될 수 없다. 전체 블록만이 소거될 수 있기 때문에, 새로운 데이터는 사전에 소거된 블록의 사용되지 않는 위치에 기록되어야만 하고, 이에 따라 데이터의 위치를 식별하는 모든 포인터가 변경되어야 한다. 만일(값들의 색인 가능한 테이블과 같이) 큰 섹션이 데이터가 손상되지 않은 상태로 유지되어야만 하는 경우, 단지 한 바이트만이 변경되는 경우에도, 전체 섹션이 다른 블록으로 카피되어야만 한다. 소거 기능은 시간이 걸리는 작업이며, 소거 기능을 수행하기 위해 서는 1초 정도의 시간이 걸릴 수도 있다.
플래시 메모리는 판독 연산에서 좋은 성능을 가지고 있지만, 전술한 이유 때문에, 기록 및 소거 연산에서는 상대적으로 불충분한 성능을 가지고 있다. 플래시 메모리 관리자는 플래시 메모리 관리로부터 응용 프로그램(application program)을 분리하기 위해 개발되었다. 도1은 종래의 플래시 메모리 시스템(10)을 도시한다. 종래의 플래시 메모리 관리자(11)는 포어그라운드(foreground) 관리자(12), 백그라운드(background) 관리자(14), 및 데이터 큐(data queue)(13)의 이용을 수반한다. 데이터 큐(13)는 응용 프로그램(15)으로부터의 기록 및 소거 명령이 실제로 플래시 메모리(16)로 실행되기 전에, 그 기록 및 소거 명령 위한 일시적 버퍼 기억장치(temporary buffer storage)를 제공한다. 이것은 응용 프로그램이 플래시 메모리의 특성에 의하여 부과되는 지연 시간(latency periods)으로 분리될 수 있도록 한다. 또한, 데이터 큐는 동시 발생 문제를 해결할 수 있도록 도움을 줄 수 있다. 소정의 위치로의 기록 명령이 데이터 큐(13)에 위치된 이후지만 플래시 메모리(16)에서의 데이터가 실제로 변경되기 전에, 응용 프로그램(15)이 그 위치를 판독하려 시도하는 경우, 가장 최근 버전의 데이터가 데이터 큐로부터 판독될 수 있다.
포어그라운드 관리자(12)는 응용프로그램과 인터페이스하고, 판독 및 기록 기능을 개시하고, 데이터 큐(13)로 기록 명령을 위치시킨다. 판독 명령은 포어그라운드 관리자(12)에 의하여 플래시 메모리(16)로 직접 전송될 수 있다. 백그라운드 관리자(14)는 통상적으로 선입선출(first-in first-out)에 기반하여 데이터 큐(13) 로부터 기록 명령을 가져오고, 플래시 메모리(16)로 실제 메모리 연산을 개시한다. 또한, 포어그라운드 관리자(12)는 가용공간 기능 블록(space-available function)(17)을 통하여 기록 연산을 수행하기 위해 플래시 메모리에 가용공간이 있는지를 검출한다. 가용 공간이 없는 경우, 포어그라운드 관리자(12)는 응용 프로그램에 이 사실을 알리고, 기록을 중단하거나 또는 다른 구제 동작을 취한다. 가용공간이 있는 경우, 기록 명령은 데이터 큐에 위치될 수 있고, 응용 프로그램에 기록이 수행되었음을 통보한다. 그러나, 백그라운드 관리자는 단지 데이터 및 관련 데이터 구조를 플래시 메모리(16)에 기록하는 방법을 결정하고, 이러한 결정은 기록 연산이 데이터 큐로부터 제거되고 백그라운드 관리자에 의하여 처리되는 경우, 얼마나 많은 공간이 실제로 사용 가능한지에 영향을 줄 수 있다. 그러므로, 포어그라운드 관리자(12)는 명령이 성공할지(명령이 플래시 메모리에 도달할 때, 공간이 사용 가능한지)를 예측하고, 성공이 예측된 경우, 데이터 큐(13)에 명령을 위치시키게 된다. 백그라운드 관리자(14)가 플래시 메모리(16)가 데이터를 기록하기 위한 충분한 공간을 구비하지 못함으로 인해, 명령을 실행하기 위해 시도할 때, "플래시 풀(flash full)" 상태에 직면하는 경우, 치명적인 오류 코드가 생성되고, 정상적인 처리가 정지될 수 있다. 이러한 것을 방지하기 위하여, 포어그라운드 관리자(12)는 비효율적인 플래시 메모리 연산에 이르게 되는 최악 상황 예측(worst-case predication)을 해야만 한다.
플래시 메모리(16)로 기록 연산을 시도하기 전에 충분한 가용 공간이 있는지를 판단하는 경우, 백그라운드 관리자(14)는 기본적으로 가용공간 기능을 재실행하 게되고, 그에 따라, 플래시 메모리 관리자(11)에 의한 두배의 노력을 야기시킨다. 통상적으로, 플래시 메모리 관리자(11)가 소프트웨어 또는 펌웨어에서 실행되는 경우, 포어그라운드 관리자 및 백그라운드 관리자의 가용공간 기능은 다른 시각에서 수행되고, 공간 모니터링 프로세스에 소요되는 시간의 양을 배로 증가시키며, 플래시 메모리 관리의 처리 성능에 부정적인 영향을 준다.
발명의 요약
플래시 메모리로의 연산을 위한 캐시 메모리에 관해 기재되어 있다. 플래시 메모리 관리자는 플래시 메모리에 의한 후속 실행을 위해 플래시 기록 명령 및 플래시 소거 명령을 캐시 메모리로 위치시킨다. 캐시 메모리는 종래의 플래시 메모리 시스템에서 사용되는 큐를 대신할 수 있다. 포어그라운드 관리자는 플래시 메모리의 가용공간 검사를 수행할 수 있고, 명령을 적절한 캐시 엔트리로 쪼개서 캐시 메모리로 엔트리를 기록할 수 있다. 백그라운드 관리자는 계속해서 캐시 메모리로부터 엔트리를 추후 판독하여 플래시 메모리로 실행시키고, 각각의 캐시 엔트리가 플래시 메모리로 포스트됨에 따라 그 캐시 엔트리를 삭제할 수 있다. 캐시 메모리는 특정 우선순위를 가진 명령을 위한 다수의 태그/데이터 어레이 세트를 포함할 수 있다. 백그라운드 관리자로부터 포어그라운드 관리자로 대부분의 종래의 플래시 관리 기능을 재배치하는 것은 백그라운드 관리자로부터의 "플래시 풀(flash full)" 응답의 가능성을 없앨 수 있으며, 플래시 메모리로 명령이 수행될 때 그 명령을 위 한 가용공간이 있는지의 백그라운드 관리자가 판단할 필요성을 없앨 수 있다.
도1은 종래 기술의 시스템을 도시한 도면.
도2는 본 발명의 시스템을 도시한 도면.
도3은 캐시 메모리의 내부 구조 중 일부를 도시한 도면.
도4는 본 발명의 방법을 도시한 순서도.
본 발명은 효율적인 플래시 메모리 연산 관리 능력을 향상시키기 위한 플래시 메모리 관리자를 구비한 캐시 메모리를 포함할 수 있다. 캐시 메모리는 포어그라운드 관리자에서 명령을 처리하고 명령의 기록/소거 구성요소의 캐싱함으로써, 종래의 플래시 메모리 관리자의 데이터 큐 및 명령 처리와 연관된 노력을 배가시키는 것을 없앨 수 있다. 그러므로, 많은 통상적인 백그라운드 기능을 포어그라운드 관리자로 이동시킴으로써 백그라운드 결정 과정(decision-making) 및 복잡도(complexity)가 충분히 감소될 수 있다. 본 발명은 또한 백그라운드 "플래시 풀(flash full)" 상태를 없앰으로써 명령 예측 및 그 관련 에러 처리 방법에 대한 필요성을 없앨 수 있다.
도2는 본 발명의 일실시예의 시스템(20)을 도시하고 있다. 응용 프로그램(25)은 플래시 메모리 관리자로 판독 및 기록 호출을 할 수 있다. 포어그 라운드 관리자(22)는 가용공간 기능 블록(27)을 통해 공간이 사용 가능한지를 판단한 후, 기록 명령을 캐시 메모리(23)로 전송하는 동안, 직접 판독을 수행할 수 있다. 비록 포어그라운드 관리자(22)와 플래시 메모리(26)사이에 블록으로서 도시되었지만, 가용공간 기능(27)은 플래시 메모리 관리자(21)내에서 공간 사용을 추적(tracking)하거나 플래시 메모리(26)로 질의를 전송하는 것과 같은 다양한 방법으로 수행될 수 있다. 플래시 메모리(26)에서의 가용 공간을 판단하는 정확한 방법은 본 발명의 실시예에 중요하지 않다. 백그라운드 관리자(24)는 캐시 메모리(23)로부터 기록 명령 엔트리 및 소거 명령 엔트리를 검색하고, 그것을 플래시 메모리(26)로 포스트할 수 있다. 종래의 시스템과 달리, 백그라운드 관리자(24)는 플래시 메모리로 데이터를 기록하기 전에 공간이 사용 가능한지 다시 판단할 필요가 없다.
본 발명은 포스트 방식의 라이트-스루 캐시 접근 방법을 사용할 수 있다. 플래시 메모리 기록 명령으로부터 데이터가 캐시 메모리(23)에 위치되는 경우, 데이터는 플래시 메모리(26)로 동시에 기록되지 않고, 백그라운드 관리자(24)가 그 데이터를 획득할 수 있게 되면 플래시 메모리(26)로 기록된다. 기록 데이터는 그것이 포어그라운드 관리자(22)로부터 수신된 것과 동일한 순서로 백그라운드 관리자(24)에 의하여 플래시 메모리(26)로 기록될 수 있다. 일단 플래시 메모리에 기록되면, 관련 캐시 엔트리는 삭제될 수 있다.
엔트리가 플래시 메모리(26)에 포스트된 후 캐시 메모리(23)로부터 엔트리의 삭제는 몇 가지 장점을 갖고 있다. 종래의 캐시 메모리는 결국 채워져 새로운 엔트 리를 위한 공간이 없게 된다. 이것은 새로운 엔트리를 위한 룸(room)을 만들기 위해 캐시 메모리로부터 다양한 엔트리의 플러싱(flushing)(즉, 삭제)할 것을 필요로 한다. 어떤 엔트리가 시스템의 성능에 최소 영향을 주고 플러싱될 수 있는지, 즉, 어떤 엔트리가 다시 액세스될 가능성이 적은지에 대해 판단하는데 있어 소정량의 예측이 수반된다.
캐시 엔트리(cache entry)를 플래시 메모리(26)로 포스팅한 즉시 그 캐시 엔트리를 삭제함으로써, 캐시 메모리(23)가 지속적으로 비워지고, 꽉 차게 될 가능성이 훨씬 적어진다. 캐시 메모리가 꽉 차 있는 경우에, 백그라운드 관리자(24)가 더 많은 기록 데이터를 플래시 메모리(26)로 포스트하고, 관련 엔트리를 삭제할 때까지 단지 대기함으로써 캐시 메모리가 비워지고 공간이 사용가능해 질 수 있다. 데이터가 포스트된 후 캐시 메모리로부터 액세스되는 데이터가 없기 때문에, 예측 방식이 필요하지 않다.
포어그라운드 관리자와 백그라운드 관리자 사이의 태스크 분할은 종래의 시스템과 다를 수 있다. 포어그라운드 관리자(22)는 응용 프로그램(25)으로부터 명령을 수신하여 확인 응답하고, 어떤 명령이 캐시 메모리(23)에 위치될 필요가 있는지 판단하고, 플래시 메모리(26)에 판독 명령을 전달할 수 있다. 포어그라운드 관리자(22)는 플래시 메모리(26)의 가용공간을 판단한 후, 또한 다중 바이트(multi-byte) 기록 연산에 요구되는 모든 위치를 포함하여, 플래시 메모리의 어떤 특정 위치가 기록 명령에 의하여 어드레스 될 것인지를 판단할 수 있다. 일단 이러한 위치가 포어그라운드 관리자에 의하여 기록 데이터로 할당되면, 이들 위치 는 후속 기록 명령에 이용될 수 없으며, 현재의 기록 명령이 플래시 메모리(26)에 포스트될 때 공간이 사용 가능한지를 백그라운드 관리자(24)가 다시 판단할 필요가 없다. 계속하여 추가 블록이 백그라운드 관리자(24)에 의하여 소거되는 경우, 그것은 포어그라운드 관리자(22)에 의하여 예측되었던 가용공간보다 더 많은 가용공간을 만들 수 있지만 더 적은 수의 가용공간을 초래하지는 않게 되므로 백그라운드 관리자(24)에 의한 가용 공간의 판단이 필요하지 않다. 이것은 백그라운드 관리자가 예측한 공간이 사용 가능한지 먼저 판단하고, 긴급 응답 측정(emergency response measure)을 수행해야만 하는 종래의 "플래시 풀(flash full)" 에러 상태를 방지한다.
백그라운드 관리자는 한번에 하나의 캐시 엔트리를 처리할 수 있고, 처리 완료되면 캐시 엔트리를 무효로 할 수 있다. 백그라운드 관리자가 엔트리를 무효로 하면, 포어그라운드 관리자는 그 캐시 공간을 후속 엔트리를 위하여 사용할 수 있다. 포인터 및 카운터는 캐시 공간의 끝 부분에 도달하는 경우 적절한 포인터가 캐시 공간의 시작 부분을 지시할 수 있는 링 버퍼(ring buffer)와 유사하게 유효 및 무효 엔트리를 추적하도록 유지될 수 있다. 링 버퍼 및 관련 포인터와 대응 카운터는 기술적으로 잘 알려져 있으며, 본 명세서에는 더 이상 서술하지 않는다.
본 발명의 플래시 메모리 시스템의 일실시예는 또한 서로 다른 우선순위를 가진 명령을 처리할 수 있다. 캐시 엔트리는 백그라운드 관리자에 의하여 우선순위에 따라 처리될 수 있고, 우선순위는 각 캐시 엔트리가 실행된 후 재평가될 수 있다. 높은 우선순위의 캐시에서 엔트리가 없는 경우, 그 다음으로 낮은 우선순위 캐 시가 처리될 수 있다. 플래시 메모리로의 명령에는 플래시 메모리 관리자, 응용 프로그램, 다른 엔트리 또는 이들의 조합에 의하여 다양한 우선순위가 할당될 수 있다. 우선순위 할당의 근거에 관계없이, 캐시 메모리(23)는 각 우선순위에 대하여 분리 태그 어레이와 데이터 어레이를 포함할 수 있다.
도3은 3개의 다른 우선순위 레벨, 즉 높은 우선순위, 중간 우선순위, 낮은 우선순위를 가지고 있는 시스템을 도시한 도면이다. 종래의 캐시 메모리(23)에서와 같이, 캐시 메모리(23)는 태그 어레이 및 데이터 어레이를 구비할 수 있으며, 이들 메모리는 캐시 메모리 모두와 램 메모리로 구현될 수 있다. 본 발명의 일실시예는 3개의 각각 다른 우선순위 레벨 중 하나를 가지고 있는 3개 세트의 태그 어레이 및 데이터 어레이를 제공한다. 태그 및 데이터 어레이(31,32)는 높은 우선순위의 명령을 위한 것이고, 태그 및 데이터 어레이(33,34)는 중간 우선순위의 명령을 위한 것이고, 태그 및 데이터 어레이(35,36)는 낮은 우선순위의 명령을 위한 것으로 도시되어 있다. 높은 우선순위 명령이 가장 먼저 처리되고, 모든 중간 우선순위 명령이 다음에 처리되고, 모든 낮은 우선순위 명령이 마지막으로 처리될 수 있다. 각 우선순위 내에서, 명령은 수신된 순서로 캐시 메모리를 통하여 처리될 수 있다. 일실시예에서, 각 우선순위에 대한 태그/데이터 어레이에 할당된 메모리의 양은 프로그램 가능하게 변경될 수 있다.
태그 어레이 및 데이터 어레이에 위치된 정보는 태그 및 데이터 필드로서 각각 식별될 수 있다. 데이터 필드는 기록될 데이터 또는 그렇지 않으면 명령에 따라 처리된 데이터를 포함할 수 있다. 데이터는 플래시 메모리에서 관련 데이터의 세그 멘트를 분류하는 플래시 메모리에서의 식별 마커(maker)인 헤더를 포함할 수 있다. 헤더는 데이터를 유효 또는 무효로서 분류할 수 있고(쓸모 없는 데이터(obsolete data)의 작은 부분도 개별적으로 소거될 수 없기 때문에, 그것들은 단순히 무효 데이터로서 표시된다.), 사용하기 위하여 표시된 위치가 다른 명령에 의하여 추후 사용되는 것을 방지하기 위하여 플래시 메모리에서의 관련 위치를 할당 또는 비할당으로서 식별할 수 있다. 태그 필드는 백그라운드 관리자가 캐시 엔트리를 적절하게 처리할 수 있도록, 플래시 메모리에서 기록 또는 소거 명령을 위한 목표 어드레스(target address), 전송될 데이터의 크기 및 캐시 엔트리의 다른 특성을 표시하기 위한 상태 비트(state bits)를 포함할 수 있다. 표1은 본 발명의 일실시예에서 태그 필드에 포함될 수 있는 다양한 타입의 정보를 서술한 것이다.
도4는 본 발명의 방법을 도시한 순서도(40)이다. 포어그라운드 관리자로부터 시작하여, 단계(41)에서는, 명령을 실행하기에 충분한 이용 가능한 공간이 플래시 메모리에 있는지 판단한다. 단계(42)에서, 명령은 다수의 엔트리로 나누어져 캐시 메모리에 기록된다. 단계(43)에서는, 명령에 할당된 우선순위에 대응하는 태그 어레이 및 데이터 어레이에 이들 엔트리를 위치시킨다. 다음에 단계(44)에서, 백그라운드 관리자는 플래시 메모리로 각 캐시 엔트리의 실행을 인계 받는다. 기록 엔트리의 실행은 캐시 메모리로부터의 데이터 판독 및 그 엔트리에 의해 지정되는 플래시 메모리의 위치로의 데이터 기록을 포함한다. 소거 엔트리의 실행은 그 엔트리에 의해 지정된 플래시 메모리내의 블록의 소거를 포함한다. 단계(45)에서는, 캐시 엔트리가 삭제되고, 추후 캐시 엔트리를 위해 그 공간을 비운다.
내용 태그 필드
어드레스 캐시 데이터의 플래시 메모리상의 물리적 어드레스. 헤더/데이터를 플래시 메모리로 위치시키거나 또는 플래시 메모리의 블록을 소거하기 위해 백그라운드 관리자에 의하여 사용됨.
사이즈 캐시 램에서의 관련 데이터 사이즈. 이것은 플래시 메모리에서 필요한 공간의 양을 결정함.
상태비트 - 할당된 헤더 캐시 램에서의 헤더는 플래시 메모리에서 할당된 상태를 취함.
상태비트 - 유효 헤더/데이터 캐시 램에서의 헤더/데이터는 플래시 메모리에서의 유효 상태를 취함
상태비트 - 무효, 넥스트 넥스트 캐시 엔트리가 무효화될 헤더라는 것을 백그라운드 관리자에 표시함. 이것은 캐시 엔트리의 감소를 돕는다. 백그라운드 관리자는 현재 엔트리를 할당 상태로 취하거나, 이러한 비트가 설정된 경우, 이런 엔트리가 유효 상태로 이동하기 전에, 넥스트 엔트리가 기존 헤더를 무효화시키도록 처리된다.
상태비트 - 데이터 카피 캐시 램은 카피를 위한 소스 플래시 어드레스를 포함함램
상태비트 - 블록유닛 카피 어드레스에 의하여 식별된 블록내의 모든 유효 헤더 및 대응 데이터를 스페어 블록으로 카피하는 리클레임 구성요소. 이것은 캐시 엔트리 감소를 돕기 위한 높은 우선순위 리클레임 명령이다. 백그라운드 관리자는 서로 혼합된 '진행중 리클레임' 기록을 허용하기 위하여 리클레임 상태당 하나의 카피로 분할함.
상태비트 - 소거 지정된 블록이 소거될 것이라는 것을 표시하는 리클레임 구성요소.사이즈는 제로로 설정되고, 리클레임 구성요소 상태 또한 설정됨.
상태비트 - 리클레임 구성요소 이러한 엔트리가 리클레임 프로세스의 구성요소임을 백그라운드 관리자에게 표시
상태비트 - 요구된 리클레임 리클레임이 '요구된 구성요소'라는 것을 표시함, 이에 따라 이러한 리클레임 구성요소가 후속 기록 전에 처리되어야만 함.

다양한 실시예에서 구현될 수 있는 다른 특성은 보다 상세하게 후술된다.
판독 프로세싱
캐시 메모리에서 기록 엔트리가 위치되는 시간과 플래시 메모리의 위치로 기록 엔트리가 실행되는 시간 사이에는, 단지 캐시 메모리만이 관련 데이터의 올바른 버전을 가질 수 있다. 그 시간동안, 플래시 메모리로의 판독 연산은 플래시 메모리가 아니라 캐시 메모리로부터 데이터를 검색 할 수 있다. 그러므로, 판독 연산은 그 데이터에 대해 캐시 메모리를 검색하고, 플래시 메모리로 판독을 수행할 수 있다. 데이터가 캐시 메모리 안에 있다면, 즉 캐시 '적중(hit)'이 발생하면, 캐시된 데이터는 사용될 수 있으며, 캐시 리드-스루 구조(cache read-through structure)에 따라, 플래시 메모리로의 판독이 무시되거나, 중지되거나 또는 전혀 시도되지 않게 된다. 이런 점에서, 캐시 메모리는 종래의 캐시 메모리와 유사하게 작동할 수 있다. 그러나, 일단 캐시된 기록이 플래시 메모리로 포스트되면, 캐시 엔트리는 종래의 캐시 메모리에서와 같이 차후 판독을 위하여 유지되는 것이 아니라 캐시 메모리로부터 삭제될 수 있게 된다. 그 이유는 동일한 데이터가 캐시 메모리와 플래시 메모리 양자에 있는 경우, 캐시 엔트리가 판독 성능을 현저하게 향상시키지 못할 것이고, 심지어 저하시킬 수도 있기 때문이다. 플래시 메모리(26)로 명령이 포스트된 후 캐시 메모리(23)에서의 명령 유지는 캐시내의 공간을 불필요하게 점유하게 되어, 그 공간이 후속 명령을 위해 이용할 수 없게 된다. 또한 내장(embedded) 시스템 플래시 메모리의 판독 성능은 캐시 메모리에서 통상적으로 사용되는 SRAM(Static random access memory)의 판독 성능에 필적하며, 따라서 캐시 적중이 발생되는 경우, 무시할만한 속도 향상을 초래한다. 그러므로, 캐시 메모리로부터의 포스트된 명령을 삭제하는 것은 판독 반응 시간에 어떤 충분한 영향도 주지 않으면서, 캐시 메모리의 전체적인 사용을 더욱 효율적으로 만든다.
판독 연산이 캐시 '미스(miss)'를 발생하면, 즉, 데이터가 캐시 메모리에 없 는 경우, 캐시 메모리는 종래의 캐시 메모리처럼 데이터로 갱신되지 않는다. 본 발명의 캐시 메모리의 목적은 판독 연산보다 기록 연산을 용이하게 만들기 위한 것이기 때문에, 플래시 메모리에 이미 올바른 데이터가 있다면, 캐시 메모리에 데이터를 위치시킬 이유가 없다.
일실시예에서, 다중 바이트 판독 연산은 데이터의 일부에서는 캐시 적중(cache hit)을 발생하고 데이터의 다른 부분에서는 캐시 미스(cache miss)를 발생할 수도 있다. 이러한 경우, 캐시 메모리에서 발견된 데이터는 최종 데이터를 생성하기 위해 플래시 메모리로부터 잔여 데이터와 합성될 수 있다.
연관법칙
본 발명의 일실시예는 완전 연관 캐시 기술(fully associative cache technique)을 사용한다. 비록 이것이 캐시 적중을 찾는 동안 많은 검색 시간을 필요로 할 수 있지만, 완전 연관 접근 방법은 최대 유연성을 제공하면서 캐시 사이즈를 작게 유지할 수 있다. 또한, 캐시 메모리는 전부 소프트웨어로 구현될 수 있으며, 여기서, 플래시 메모리 관리자에 의해 사용되는 메모리의 일부분은 캐시 메모리로서 지정되어, 오직 그 목적을 위해서만 사용된다. 본 발명에서, 플래시 메모리는 종래 메모리의 계층구조에서 주 메모리와 동등할 것으로 간주될 수 있으며, 캐시에 사용되는 메모리는 종래의 메모리 계층구조에서 캐시 메모리와 동등한 것으로 간주될 수 있다.
캐시 라인 사이즈
플래시 파일 관리(flash file management)의 가변 사이즈 특성(variable sized nature) 때문에, 가변 라인 사이즈(variable line size)가 사용될 수 있다. 일실시예에서, 기록 라인은 한 바이트의 데이터로부터 통상적으로 128-512 바이트인 전체 프레그먼트(fragment) 데이터까지 사이즈가 변화될 수 있다. 사이즈는 목적지 어드레스(destination address)와 함께 태그 어레이에서 유지될 수 있다.
캐시 교체 방식
종래의 캐시 시스템에서, 데이터는 '캐시 풀(cache full)' 또는 '캐시 플러시(cache flush)' 상태가 발생하기까지 유지된다. 캐시가 풀인 경우, 선택적 캐시 엔트리 교체(selective cache entry replacement)가 통상적으로 발생한다. 캐시가 플러시되면, 모든 엔트리는 무효가 된다. 본 발명의 일실시예에서, 풀 캐시를 위한 선택적 교체가 발생할 필요가 없는데, 그 이유는 캐시 엔트리가 캐시 메모리로 입력된 순서로 캐시 엔트리가 사후-기록되고, 다음에 삭제되기 때문이다. 또한, 본 발명은 기본적으로 선입선출(FIFO) 방식을 사용할 수 있다. 캐시가 풀인 경우, 새로운 캐시 엔트리는 플래시 메모리로의 순차 기록을 통해 캐시 메모리를 비움으로써 적당한 가용공간이 만들어질 때까지 지연될 수 있다. 본 발명이 캐시 교체 방식을 통하여 캐시 메모리를 자연스럽게 플러시하기 때문에, '캐시 플러시(cache flush)' 능력이 필요하지 않다.
코드 재구성
종래의 대부분의 백그라운드 기능은 포어그라운드로 이동될 수 있다. 일실시예에서, 통상적으로 백그라운드에 의해 수행되었던 모든 파일 관리 및 리클레임(reclaim) 태스크는, 플래시 메모리의 실제적인 기록 또는 소거를 제외하고 포어그라운드 관리자에 의하여 수행될 수 있다. 단일 백그라운드 태스크가 캐시 엔트리의 처리 및 플래시 메모리 기록 또는 소거 역할을 할 수 있다. 또한, 백그라운드 태스크는 전력손실 회복(power-loss recovery)(PLR) 흐름 및 효율을 고려한 하이-레벨 리클레임 상태(higher-level reclaim states)의 다양한 양태를 처리할 수 있다.
종래 시스템의 큐는 제거될 수 있고 가용공간 검사(check-for-space)는 포어그라운드 관리자에 의하여 단 한번만 실행될 수 있다. 캐시 메모리로의 엔트리는 플래시 메모리로의 정확한 최종 목적지(final destinations)를 포함할 수 있다. 또한, 백그라운드 "플래시 풀" 상태는 발생하지 않는데, 그 이유는 백그라운드 관리자가 데이터를 어느 곳에 위치해야 할지를 결정하지 않고, 포어그라운드 관리자에 의하여 이전에 할당된 위치에 데이터를 위치시키기 때문이다.
리클레임
플래시 메모리에 있어서, 리클레임 프로세스(reclaim process)는 메모리의 한 블록을 소거하고 후속 기록 연산을 위하여 그 블록을 사용 가능하게 만드는, 즉 사용을 위해 블록을 '리클레임' 하는 프로세스이다. 만일 기존 블록(소거될 블록) 이 저장되어야만 하는 어떤 데이터를 포함하고 있으면, 리클레임은 소거 전에 기존 블록으로부터 데이터의 일부를 판독하고 추후 사용을 위해 데이터를 새로운 사전-소거된 블록으로 위치시키는 것을 포함할 수 있다. 기존 데이터는 새로운 블록으로 기록하기 전에 다른 소스로부터 다른 데이터와 결합되거나 또는 결합되지 않을 수도 있다. 또한, 리클레임 프로세스는 1) 기존 블록으로부터 기존 데이터의 판독, 2) 새로운 블록으로 기존 데이터의 기록, 3) 새로운 블록으로 다른 데이터의 기록, 4) 기존 블록의 소거와 같은 하나 또는 그 이상의 리클레임 구성요소를 포함할 수 있다. 이러한 구성요소 각각은 독립된 캐시 엔트리가 될 수 있다. 왜냐하면 각각의 구성요소가 개별적으로 처리될 수 있기 때문에, 다른 캐시 엔트리는 관련 리클레임 구성요소들 사이에서 처리될 수 있다. 적지 않은 양의 리클레임 연산이 수행되는 것을 표시하기 위하여 진행중 리클레임 표시자가 사용될 수 있다.
리클레임 구성요소는 '요구된(needed) 구성요소' 또는 '요구되지 않는(not needed) 구성요소'로서 분류될 수 있다. 플래시 메모리가 풀인 경우 또는 적어도 현재 기록 연산을 완료하기 위한 충분한 가용공간을 구비하지 않는 경우, 기록을 완료하기 위한 가용공간을 제공하기 위하여 플래시 메모리의 한 블록이 리클레임되어야만 한다. 이러한 리클레임 연산의 리클레임 구성요소는 '요구된 구성요소'가 되는데, 그 이유는 정상적인 처리가 재개되기 전에 완료되어야만 하기 때문이다. 그러나, 어떤 리클레임은 추론적으로 실행된다. 즉, 아직 존재하지 않는 후속 요구를 예상하여 블록이 리클레임된다. 이것들은 '요구되지 않는 구성요소'로서 분류될 수 있다. 요구되지 않은 리클레임에 낮은 우선순위가 부여되고, 요구된 리클레임에 는 높은 우선순위가 부여될 수 있다. 리클레임 구성요소의 2가지 형태 모두 포어그라운드 관리자에 의하여 개시될 수 있고, 백그라운드 관리자에 의한 후속 처리를 위해 캐시 메모리에 위치될 수 있다. 태그 필드는 리클레임 구성요소가 요구된 것인지 여부를 나타내는 상태비트를 포함할 수 있다.
캐시된 리클레임 구성요소가 '요구되지 않는 구성요소'로서 입력되는 경우, 캐시 메모리에서의 후속 기록이 먼저 처리될 수 있다. 일실시예에서, 이러한 것은 캐시 엔트리가 순서를 벗어나 처리된 경우뿐이다. 리클레임 구성요소가 '요구된 구성요소'로서 입력되는 경우, 백그라운드 관리자가 이러한 캐시 엔트리를 실행할 때 순서대로 처리될 수 있다. 이것은 높은 우선순위 캐시로 입력되기 때문에, 낮은 우선순위 캐시의 엔트리는 요구된 리클레임 구성요소가 실행될 때까지 처리되지 않게 된다. 캐시된 '요구된 리클레임 구성요소'가 발견되고 '요구되지 않은 리클레임 구성요소'가 사전에 존재하는 경우, 모든 요구되지 않는 구성요소는 '요구된 구성요소' 상태로 변경될 수 있고 즉시 처리될 수 있다.
캐시 풀 처리
'캐시 풀(cache full)' 상태는 공간이 없거나 또는 현재 기록 연산을 유지하기 위한 충분한 공간이 캐시 메모리에 남아있지 않다는 것을 표시한다. 이것은 큰 테이블을 위한 "그룹 테이블 교체(replace group table)" 명령과 같은, 많은 양의 데이터를 수반하는 명령에서 발생할 가능성이 많다. 캐시 메모리는 캐시된 리클레임이 실행될 때까지 이러한 엔트리를 수용하지 못할 수도 있다. 더욱 나쁜 점은, 리클레임되어야 하고, 추후 캐시된 기록이 최종 캐시 엔트리에 알맞은 캐시를 제공하기 위하여 실행될 필요가 존재할 수 있다는 것이다.
일실시예에서, 캐시 풀 예측이 사용되지 않는데, 그 이유는 그것이 시간이 걸리는 작업이고, 모든 명령의 시작부분에서 수행되어야 하기 때문이다. 명령이 캐시 메모리에서 적중할 것인지를 계산하기 보다, 두개의 다른 옵션, 즉 대기 및 비-대기(wait and no-wait)가 응용 프로그램 인터페이스(API)에 제공될 수 있다. 캐시 풀 상태가 발생하고, '비-대기'가 지정되는 경우, 응용 프로그램에 의해 처리될 API 스택을 통해 "캐시 풀" 상태로 복귀될 수 있다. 만일 "캐시 풀" 상태가 발행하고, "대기"로 지정되면 캐시가 명령을 위한 룸을 만들기 위하여 충분히 비워질 때까지 명령 처리가 대기할 수 있다.
본 발명의 일실시예에서, 플래시 메모리 관리자는 소프트웨어로 구현될 수 있고, 캐시 메모리는 플래시 메모리 관리자가 실행되는 것과 동일한 메모리의 일부분으로서 구현될 수 있다. 본 발명의 다른 실시예에서, 플래시 메모리 관리자는 펌웨어로 구현될 수 있고, 캐시 메모리는 플래시 관리자 코드를 실행하는 동일한 프로세서에 의하여 어드레스 가능한 휘발성 메모리에 구현될 수 있다. 본 발명의 또다른 실시예에서, 플래시 메모리 관리자의 일부는 하나 또는 그 이상의 상태 머신(state machine)을 포함하는 회로로 구현될 수 있다.
본 발명의 하나의 방법으로서 구현될 수 있다.
본 발명은 또한 본 발명에서 전술한 기능을 수행하기 위해 적어도 하나의 프로세서에 의하여 판독하고 실행될 수 있는, 머신-판독가능 매체(machine-readable medium)에 저장된 명령어로서 구현될 수 있다. 머신-판독가능 매체는 머신(예를 들어, 컴퓨터)에 의하여 판독될 수 있는 형태로 정보를 저장 또는 전송하기 위한 모든 메커니즘을 포함한다. 예를 들어, 머신-판독가능 매체는 롬(ROM); 램(RAM); 자기 디스크 저장 매체; 광학 저장 매체; 플래시 메모리 장치; 전기, 광, 음향 또는 다른 형식의 전파 신호(예를 들어, 반송파, 적외선 신호, 디지털 신호 등) 등을 포함할 수 있다.
전술한 설명은 예시적인 것이며, 제한적인 것으로 의도된 것은 아니다. 이 기술분야의 통상의 지식을 가진 자에 의하여 다양한 변형이 발생할 수 있다. 그러한 변경은 첨부된 청구항들의 사상 및 범위에 의해서만 제한되는 본 발명에 포함되도록 의도된 것이다.

Claims (21)

  1. 제1 프로세스에서, 캐시 메모리로 플래시 메모리 명령을 기록하는 단계 - 여기서, 상기 기록 단계는 플래시 메모리에 상기 플래시 메모리로 상기 플래시 메모리 명령을 실행하기에 충분한 가용 공간이 있는지 여부를 판단하는 것을 포함하고, 상기 플래시 메모리 명령은 상기 플래시 메모리 명령이 실행되는 상기 플래시 메모리의 하나 또는 그 이상의 어드레스를 포함함 - ;
    상기 제1 프로세스와 독립적인 제2 프로세스에서, 상기 판단을 재수행하지 않고, 상기 캐시 메모리로부터 상기 플래시 메모리의 하나 또는 그 이상의 어드레스로 상기 플래시 메모리 명령을 실행하는 단계; 및
    상기 실행 이후에 즉시 상기 캐시 메모리로부터 상기 플래시 메모리 명령을 삭제하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 플래시 메모리 명령은 기록 명령 및 소거 명령 중 하나인
    방법.
  3. 제1항에 있어서,
    상기 캐시 메모리로의 기록 단계 및 상기 플래시 메모리로의 실행 단계는 프로그램 가능한 머신에서 코드로 실행되는
    방법.
  4. 제3항에 있어서,
    상기 캐시 메모리로의 기록 단계는 포어그라운드 연산인
    방법.
  5. 제3항에 있어서,
    상기 플래시 메모리로의 실행 단계는 백그라운드 연산인
    방법.
  6. 제1항에 있어서,
    상기 캐시 메모리로의 기록 단계는,
    상기 플래시 메모리 명령과 관련된 우선순위 레벨을 지정하는 단계; 및
    상기 지정된 우선순위 레벨과 관련된 태그 어레이와 데이터 어레이에 상기 플래시 메모리 명령을 저장하는 단계를 포함하고,
    여기서, 상기 태그 어레이와 상기 데이터 어레이는, 제1 우선순위를 갖는 명령을 저장하기 위한 제1 태그 어레이와 제1 데이터 어레이; 및 제2 우선순위를 갖는 명령을 저장하기 위한 제2 태그 어레이와 제2 데이터 어레이를 포함하는
    방법.
  7. 제1항에 있어서,
    상기 캐시 메모리로부터 상기 플래시 메모리의 하나 또는 그 이상의 어드레스로 상기 플래시 메모리 명령을 실행하는 단계 이전에,
    상기 플래시 메모리의 어드레스로부터 판독 요구를 수신하는 단계;
    상기 판독 요구에 응답하여, 상기 캐시 메모리가 상기 요구된 어드레스에 대응하는 데이터를 포함하는지 여부를 판단하기 위해 상기 캐시 메모리를 검사하는 단계; 및
    상기 캐시 메모리가 상기 요구된 어드레스에 대응하는 데이터를 포함하는 경우, 상기 캐시 메모리로부터 상기 데이터를 검색하는 단계
    를 더 포함하는 방법.
  8. 머신에 의해 실행되는 경우, 상기 머신으로 하여금,
    플래시 메모리에 액세스하기 위한 요구를 수신하고,
    상기 플래시 메모리가 상기 요구에 대한 충분한 공간을 포함하는지 여부를 판단하고,
    상기 플래시 메모리가 충분한 공간을 포함하는 경우, 상기 요구에 기초하여 플래시 메모리 명령을 생성하고,
    포어그라운드 프로세스에서, 캐시 메모리로 상기 플래시 메모리 명령을 기록하고,
    백그라운드 프로세스에서, 상기 플래시 메모리가 충분한 공간을 포함하는지 여부를 재판단하지 않고, 상기 캐시 메모리로부터 상기 플래시 메모리로 상기 플래시 메모리 명령을 실행하고,
    상기 실행 이후에 즉시 상기 캐시 메모리로부터 상기 플래시 메모리 명령을 삭제하도록 하는
    명령어 세트를 표현하는 데이터를 저장하는 머신-판독가능 매체.
  9. 제8항에 있어서,
    상기 플래시 메모리 명령은 기록 명령 및 소거 명령 중 하나인
    머신-판독가능 매체.
  10. 제8항에 있어서,
    상기 캐시 메모리로의 기록 단계는 포어그라운드 연산인
    머신-판독가능 매체.
  11. 제8항에 있어서,
    상기 캐시 메모리는,
    상기 명령이 제1 우선순위를 갖는 경우, 상기 명령을 저장하기 위한 제1 태그 어레이와 제1 데이터 어레이; 및
    상기 명령이 제2 우선순위를 갖는 경우, 상기 명령을 저장하기 위한 제2 태그 어레이와 제2 데이터 어레이를 포함하는
    머신-판독가능 매체.
  12. 제8항에 있어서,
    상기 머신으로 하여금,
    상기 플래시 메모리의 어드레스로부터 판독 요구를 수신하고,
    상기 판독 요구에 응답하여, 상기 캐시 메모리가 상기 요구된 어드레스에 대응하는 데이터를 포함하는지 여부를 판단하기 위해 상기 캐시 메모리를 검사하고,
    상기 캐시 메모리가 상기 요구된 어드레스에 대응하는 데이터를 포함하는 경우, 상기 캐시 메모리로부터 상기 데이터를 검색하도록 하는
    명령어 세트를 표현하는 데이터를 저장하는 머신-판독가능 매체.
  13. 제12항에 있어서,
    상기 머신으로 하여금,
    상기 캐시 메모리가 상기 요구된 어드레스에 대응하는 데이터를 포함하지 않는 경우, 상기 요구된 어드레스에 기초하여 상기 플래시 메모리로부터 상기 데이터를 검색하도록 하는
    명령어 세트를 표현하는 데이터를 저장하는 머신-판독가능 매체.
  14. 플래시 메모리;
    상기 플래시 메모리에 결합되어, 상기 플래시 메모리로 실행될 명령을 저장하기 위한 캐시 메모리; 및
    상기 플래시 메모리 및 상기 캐시 메모리에 결합되어, 상기 캐시 메모리로 상기 명령을 기록하고, 상기 캐시 메모리로부터 상기 명령을 판독하고, 상기 플래시 메모리로 상기 명령을 실행하고, 상기 실행 이후에 즉시 상기 캐시 메모리로부터 상기 명령을 삭제하기 위한 플래시 관리자
    를 포함하고,
    여기서, 상기 캐시 메모리는, 상기 명령이 제1 우선순위를 갖는 경우, 상기 명령을 저장하기 위한 제1 태그 어레이와 제1 데이터 어레이; 및 상기 명령이 제2 우선순위를 갖는 경우, 상기 명령을 저장하기 위한 제2 태그 어레이와 제2 데이터 어레이를 포함하고,
    상기 플래시 관리자는, 상기 플래시 메모리가 상기 명령을 실행하기에 충분한 가용 공간을 갖는지 여부를 판단하고, 상기 명령에 플래시 메모리 어드레스를 할당하기 위한 포어그라운드 관리자를 포함하는
    장치.
  15. 제14항에 있어서,
    상기 플래시 관리자는 소프트웨어 및 펌웨어 중 하나로 구현되는
    장치.
  16. 제14항에 있어서,
    상기 플래시 관리자는, 상기 플래시 메모리의 어드레스로부터 판독 요구를 수신하고, 상기 판독 요구에 응답하여, 상기 캐시 메모리가 상기 요구된 어드레스에 대응하는 데이터를 포함하는지 여부를 판단하기 위해 상기 캐시 메모리를 검사하고, 상기 캐시 메모리가 상기 요구된 어드레스에 대응하는 데이터를 포함하는 경우, 상기 캐시 메모리로부터 상기 데이터를 검색하는
    장치.
  17. 제16항에 있어서,
    상기 플래시 관리자는, 상기 캐시 메모리가 상기 요구된 어드레스에 대응하는 데이터를 포함하지 않는 경우, 상기 요구된 어드레스에 기초하여 상기 플래시 메모리로부터 상기 데이터를 검색하는
    장치.
  18. 프로세서;
    플래시 메모리;
    상기 플래시 메모리 및 상기 프로세서에 결합되어, 상기 플래시 메모리로 실행될 상기 프로세서로부터의 명령을 저장하기 위한 캐시 메모리; 및
    상기 플래시 메모리 및 상기 캐시 메모리에 결합되어, 포어그라운드 프로세스에서 상기 캐시 메모리로 상기 명령을 기록하고, 상기 캐시 메모리로부터 상기 명령을 판독하고, 백그라운드 프로세스에서 상기 플래시 메모리로 상기 명령을 실행하고, 상기 실행 이후에 즉시 상기 캐시 메모리로부터 상기 명령을 삭제하기 위한 플래시 관리자
    를 포함하고,
    여기서, 상기 포어그라운드 프로세스는 상기 플래시 메모리가 상기 명령에 대해 충분한 공간을 포함하는지 여부를 판단하는 것을 포함하고, 상기 백그라운드 프로세스는 상기 판단 연산을 반복하지 않고 수행되는
    시스템.
  19. 제18항에 있어서,
    상기 플래시 관리자는 소프트웨어 및 펌웨어 중 하나로 구현되는
    시스템.
  20. 제18항에 있어서,
    상기 플래시 관리자는, 상기 플래시 메모리의 어드레스로부터 판독 요구를 수신하고, 상기 판독 요구에 응답하여, 상기 캐시 메모리가 상기 요구된 어드레스에 대응하는 데이터를 포함하는지 여부를 판단하기 위해 상기 캐시 메모리를 검사하고, 상기 캐시 메모리가 상기 요구된 어드레스에 대응하는 데이터를 포함하는 경우, 상기 캐시 메모리로부터 상기 데이터를 검색하는
    시스템.
  21. 제20항에 있어서,
    상기 플래시 관리자는, 상기 캐시 메모리가 상기 요구된 어드레스에 대응하는 데이터를 포함하지 않는 경우, 상기 요구된 어드레스에 기초하여 상기 플래시 메모리로부터 상기 데이터를 검색하는
    시스템.
KR1020037004330A 2000-09-26 2001-09-20 플래시 메모리를 위한 포스트방식의 라이트-스루 캐시 KR100584255B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/669,609 US6704835B1 (en) 2000-09-26 2000-09-26 Posted write-through cache for flash memory
US09/669,609 2000-09-26
PCT/US2001/029604 WO2002027496A2 (en) 2000-09-26 2001-09-20 Posted write-through cache for flash memory

Publications (2)

Publication Number Publication Date
KR20040007395A KR20040007395A (ko) 2004-01-24
KR100584255B1 true KR100584255B1 (ko) 2006-05-26

Family

ID=24686988

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020037004330A KR100584255B1 (ko) 2000-09-26 2001-09-20 플래시 메모리를 위한 포스트방식의 라이트-스루 캐시

Country Status (9)

Country Link
US (1) US6704835B1 (ko)
EP (1) EP1323044B1 (ko)
KR (1) KR100584255B1 (ko)
CN (1) CN100557580C (ko)
AT (1) ATE467181T1 (ko)
AU (1) AU2001292928A1 (ko)
DE (1) DE60142060D1 (ko)
TW (1) TW589528B (ko)
WO (1) WO2002027496A2 (ko)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100389867B1 (ko) * 2001-06-04 2003-07-04 삼성전자주식회사 플래시 메모리 관리방법
US7093071B2 (en) * 2002-10-09 2006-08-15 Intel Corporation Queued copy command
US7117306B2 (en) * 2002-12-19 2006-10-03 Intel Corporation Mitigating access penalty of a semiconductor nonvolatile memory
JP4241175B2 (ja) * 2003-05-09 2009-03-18 株式会社日立製作所 半導体装置
CN100428358C (zh) * 2003-06-24 2008-10-22 群联电子股份有限公司 闪存高速大区块的数据写入方法
US20050132128A1 (en) * 2003-12-15 2005-06-16 Jin-Yub Lee Flash memory device and flash memory system including buffer memory
JP2005267497A (ja) * 2004-03-22 2005-09-29 Hitachi Global Storage Technologies Netherlands Bv データ記憶装置、その制御方法及び磁気ディスク記憶装置
US6967869B1 (en) * 2004-07-22 2005-11-22 Cypress Semiconductor Corp. Method and device to improve USB flash write performance
US20060101192A1 (en) * 2004-11-09 2006-05-11 Zilavy Daniel V Systems and methods of nonvolatile memory management
CN1304957C (zh) * 2005-01-07 2007-03-14 清华大学 基于移动存储的计算机系统磁盘同步写性能提高方法
JP5162846B2 (ja) * 2005-07-29 2013-03-13 ソニー株式会社 記憶装置、コンピュータシステム、および記憶システム
US8230175B1 (en) * 2005-08-09 2012-07-24 Hewlett-Packard Development Company, L.P. Data throughput optimization of a storage device having sequential data access
JP2008108227A (ja) * 2006-09-25 2008-05-08 Hitachi Ltd ストレージシステム及び監査ログ管理方法
TWI326028B (en) 2006-11-20 2010-06-11 Silicon Motion Inc Method for flash memory data management
KR100869675B1 (ko) * 2007-02-05 2008-11-21 지인정보기술 주식회사 디스크립터 배열을 이용한 플래시 메모리 제어 시스템 및방법
US7987332B2 (en) * 2007-03-21 2011-07-26 Sandisk Technologies Inc. Methods for storing memory operations in a queue
US20080235480A1 (en) * 2007-03-21 2008-09-25 Shai Traister Systems for storing memory operations in a queue
US7934069B2 (en) * 2007-04-27 2011-04-26 Hewlett-Packard Development Company, L.P. Enabling and disabling cache in storage systems
CN101308479A (zh) * 2007-05-18 2008-11-19 鸿富锦精密工业(深圳)有限公司 数据存储设备及其数据存储方法
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
US20090006720A1 (en) * 2007-06-27 2009-01-01 Shai Traister Scheduling phased garbage collection and house keeping operations in a flash memory system
US20090083482A1 (en) * 2007-09-21 2009-03-26 Vizio Increasing the speed at which flash memory is written and read
US9607664B2 (en) * 2007-09-27 2017-03-28 Sandisk Technologies Llc Leveraging portable system power to enhance memory management and enable application level features
TWI344085B (en) * 2007-11-15 2011-06-21 Genesys Logic Inc Storage system for improving efficiency in accessing flash memory and method for the same
JP4675985B2 (ja) * 2008-03-01 2011-04-27 株式会社東芝 メモリシステム
CN101459627B (zh) * 2008-04-07 2012-09-05 中兴通讯股份有限公司 消息管理方法
US8732409B2 (en) * 2008-11-17 2014-05-20 Entropic Communications, Inc. Cache management policy and corresponding device
GB2472216A (en) 2009-07-28 2011-02-02 Gyrus Medical Ltd Bipolar electrosurgical instrument with four electrodes
US9135261B2 (en) * 2009-12-15 2015-09-15 Emc Corporation Systems and methods for facilitating data discovery
US9164554B2 (en) 2010-04-12 2015-10-20 Sandisk Enterprise Ip Llc Non-volatile solid-state storage system supporting high bandwidth and random access
US8677055B2 (en) * 2010-04-12 2014-03-18 Sandisk Enterprises IP LLC Flexible way of specifying storage attributes in a flash memory-based object store
US8874515B2 (en) 2011-04-11 2014-10-28 Sandisk Enterprise Ip Llc Low level object version tracking using non-volatile memory write generations
CN102254322A (zh) * 2011-06-09 2011-11-23 上海智翔信息科技股份有限公司 一种图像提取方法及装置
US9135064B2 (en) 2012-03-07 2015-09-15 Sandisk Enterprise Ip Llc Fine grained adaptive throttling of background processes
US9201784B2 (en) * 2012-09-07 2015-12-01 Kabushiki Kaisha Toshiba Semiconductor storage device and method for controlling nonvolatile semiconductor memory
US9785545B2 (en) * 2013-07-15 2017-10-10 Cnex Labs, Inc. Method and apparatus for providing dual memory access to non-volatile memory
US9348747B2 (en) 2013-10-29 2016-05-24 Seagate Technology Llc Solid state memory command queue in hybrid device
US10031869B1 (en) 2014-03-28 2018-07-24 Adesto Technologies Corporation Cached memory structure and operation
US10310923B1 (en) 2014-08-28 2019-06-04 Seagate Technology Llc Probabilistic aging command sorting
WO2016122657A1 (en) 2015-01-30 2016-08-04 Hewlett Packard Enterprise Development Lp Ordering updates for nonvolatile memory accesses
US10831403B2 (en) 2017-05-19 2020-11-10 Seagate Technology Llc Probabalistic command aging and selection
KR20210108208A (ko) * 2020-02-25 2021-09-02 에스케이하이닉스 주식회사 저장 장치 및 그 동작 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997013204A1 (en) * 1995-10-03 1997-04-10 Intel Corporation Flash eeprom main memory in a computer system
KR19990019377A (ko) * 1997-08-29 1999-03-15 윤종용 플래시 메모리 이용 보조기억장치 및 그 방법

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0618535B1 (en) 1989-04-13 1999-08-25 SanDisk Corporation EEPROM card with defective cell substitution and cache memory
US6256642B1 (en) 1992-01-29 2001-07-03 Microsoft Corporation Method and system for file system management using a flash-erasable, programmable, read-only memory
US5715424A (en) * 1992-12-10 1998-02-03 International Business Machines Corporation Apparatus and method for writing data onto rewritable optical media
US5559988A (en) * 1993-12-30 1996-09-24 Intel Corporation Method and circuitry for queuing snooping, prioritizing and suspending commands
US5696917A (en) * 1994-06-03 1997-12-09 Intel Corporation Method and apparatus for performing burst read operations in an asynchronous nonvolatile memory
JPH08115597A (ja) * 1994-10-17 1996-05-07 Mitsubishi Electric Corp 半導体ディスク装置
US5799168A (en) * 1996-01-05 1998-08-25 M-Systems Flash Disk Pioneers Ltd. Standardized flash controller
GB2317720A (en) 1996-09-30 1998-04-01 Nokia Mobile Phones Ltd Managing Flash memory
GB2317722B (en) * 1996-09-30 2001-07-18 Nokia Mobile Phones Ltd Memory device

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997013204A1 (en) * 1995-10-03 1997-04-10 Intel Corporation Flash eeprom main memory in a computer system
KR19990019377A (ko) * 1997-08-29 1999-03-15 윤종용 플래시 메모리 이용 보조기억장치 및 그 방법

Also Published As

Publication number Publication date
ATE467181T1 (de) 2010-05-15
EP1323044A2 (en) 2003-07-02
CN1476562A (zh) 2004-02-18
WO2002027496A3 (en) 2002-11-21
AU2001292928A1 (en) 2002-04-08
WO2002027496A2 (en) 2002-04-04
CN100557580C (zh) 2009-11-04
US6704835B1 (en) 2004-03-09
KR20040007395A (ko) 2004-01-24
EP1323044B1 (en) 2010-05-05
DE60142060D1 (de) 2010-06-17
TW589528B (en) 2004-06-01

Similar Documents

Publication Publication Date Title
KR100584255B1 (ko) 플래시 메모리를 위한 포스트방식의 라이트-스루 캐시
US6571326B2 (en) Space allocation for data in a nonvolatile memory
US11175853B2 (en) Systems and methods for write and flush support in hybrid memory
US4466059A (en) Method and apparatus for limiting data occupancy in a cache
US4499539A (en) Method and apparatus for limiting allocated data-storage space in a data-storage unit
US6192450B1 (en) Destage of data for write cache
KR101372964B1 (ko) 메모리 페이지 관리
US4420807A (en) Selectively holding data in a buffer for defective backing store tracks
EP0114190B1 (en) Data storage hierarchy
US5860082A (en) Method and apparatus for allocating storage in a flash memory
US6119209A (en) Backup directory for a write cache
US6078992A (en) Dirty line cache
EP0071719A2 (en) Data processing apparatus including a paging storage subsystem
US20040049638A1 (en) Method for data retention in a data cache and data storage system
EP1980945A1 (en) Memory access control apparatus and memory access control method
JPS6326417B2 (ko)
JPH11143779A (ja) 仮想記憶装置におけるページング処理システム
US7836248B2 (en) Methods and systems for managing persistent storage of small data objects
JP2005258789A (ja) ストレージ装置、ストレージコントローラ及びライトバックキャッシュ制御方法
US7139880B2 (en) Disk array device, method for controlling the disk array device and storage system
US6829693B2 (en) Auxiliary storage slot scavenger
US7805572B2 (en) Cache pollution avoidance
JPH0887443A (ja) セルプール領域管理処理方法
JPS59110087A (ja) キ−・バツフア記憶のリプレ−ス制御方式
JPS59157886A (ja) メモリ制御方式

Legal Events

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

Payment date: 20130520

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20140502

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20150430

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20160427

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20170504

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee