KR102106261B1 - 메모리 컨트롤러의 작동 방법과 이를 포함하는 장치들의 작동 방법들 - Google Patents

메모리 컨트롤러의 작동 방법과 이를 포함하는 장치들의 작동 방법들 Download PDF

Info

Publication number
KR102106261B1
KR102106261B1 KR1020140073433A KR20140073433A KR102106261B1 KR 102106261 B1 KR102106261 B1 KR 102106261B1 KR 1020140073433 A KR1020140073433 A KR 1020140073433A KR 20140073433 A KR20140073433 A KR 20140073433A KR 102106261 B1 KR102106261 B1 KR 102106261B1
Authority
KR
South Korea
Prior art keywords
data
state
buffer
host
write
Prior art date
Application number
KR1020140073433A
Other languages
English (en)
Other versions
KR20150144545A (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 삼성전자주식회사
Priority to KR1020140073433A priority Critical patent/KR102106261B1/ko
Priority to US14/691,704 priority patent/US9798498B2/en
Publication of KR20150144545A publication Critical patent/KR20150144545A/ko
Application granted granted Critical
Publication of KR102106261B1 publication Critical patent/KR102106261B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명의 실시 예에 따른 메모리 컨트롤러의 작동 방법은 호스트로부터 라이트 명령이 입력될 때마다 새로운 엔트리를 할당하는 단계와, 상기 호스트로부터 출력된 리드 명령에 응답하여 복수의 상태들 중 특정 상태를 갖는 엔트리에 해당하는 데이터를 상기 호스트로 전송하는 단계를 포함한다. 상기 할당하는 단계는 제1LBA(logical block address)와 제1데이터를 포함하는 제1라이트 명령에 제1엔트리를 할당하는 단계와, 제2LBA와 제2데이터를 포함하는 제2라이트 명령에 제2엔트리를 할당하는 단계를 포함한다. 상기 제1LBA와 상기 제2LBA는 서로 동일할 수 있다.

Description

메모리 컨트롤러의 작동 방법과 이를 포함하는 장치들의 작동 방법들{METHOD OF OPERATING MEMORY CONTROLLER AND METHODS FOR DEVICES HAVING SAME}
본 발명의 개념에 따른 실시 예는 데이터 캐싱(data caching) 방법에 관한 것으로, 특히 넌-블록킹(non-blocking) 방식으로 데이터 캐싱을 수행할 수 있는 메모리 컨트롤러, 상기 메모리 컨트롤러의 작동 방법, 및 상기 메모리 컨트롤러를 포함하는 장치들의 작동 방법들에 관한 것이다.
데이터 저장 장치는 데이터 저장 방식의 제약 또는 사용자 응답 시간을 개선하기 위해 내부에 사용자 데이터를 임시로 저장할 수 있는 캐시(cache)를 포함한다.
캐시의 운용(management)은 데이터 저장 장치의 성능, 상기 데이터 저장 장치의 응답 시간, 및 상기 데이터 저장 장치의 프로토콜의 정확성에 영향을 미친다.
캐시를 이용한 종래의 데이터 처리 방식으로 싱크(sync) 방식 또는 블로킹 (blocking) 방식이 사용되었다. 상기 싱크 방식 또는 상기 블로킹 방식은, 데이터 저장 장치의 데이터 일관성을 유지하기 위해, 선행 요청(예컨대, 라이트 요청 또는 리드 요청)을 완전히 완료한 후 다음 요청(예컨대, 라이트 요청 또는 리드 요청)을 수행하는 방식을 의미한다.
상기 싱크 방식 또는 상기 블로킹 방식은 다음 요청의 처리를 지연시킬 수 있다. 예컨대, 다중 큐(multi queue)를 처리하는 데이터 저장 장치에서, 하나의 큐에 대한 요청의 처리가 지연될 때, 다른 큐들 모두에 대한 처리들이 블록킹되어 상기 데이터 저장 장치의 성능이 하락할 수 있다.
본 발명이 이루고자 하는 기술적인 과제는 넌-블로킹 방식을 지원하여 모든 요청을 지연시키지 않고 상기 요청에 즉각적으로 응답할 수 있고, 불필요한 내부 버퍼 카피(buffer copy)를 유발하지 않는 메모리 컨트롤러, 상기 메모리 컨트롤러의 작동 방법, 및 상기 메모리 컨트롤러를 포함하는 장치들의 작동 방법들을 제공하는 것이다.
본 발명의 실시 예에 따른 메모리 컨트롤러의 작동 방법은 호스트로부터 라이트 명령이 입력될 때마다 새로운 엔트리를 할당하는 단계와, 상기 호스트로부터 출력된 리드 명령에 응답하여 복수의 상태들 중 특정 상태를 갖는 엔트리에 해당하는 데이터를 상기 호스트로 전송하는 단계를 포함한다.
상기 복수의 상태들은 FREE 상태, WRITE 상태, WRITE OLD 상태, READ 상태, PEND 상태, PEND OLD 상태, CACHE 상태, 및 DEL 상태이고, 상기 특정 상태는 상기 PEND, 상기 PEND OLD, 및 상기 CACHE 중에서 어느 하나일 수 있다.
상기 할당하는 단계는 제1LBA(logical block address)와 제1데이터를 포함하는 제1라이트 명령에 제1엔트리를 할당하는 단계와, 제2LBA와 제2데이터를 포함하는 제2라이트 명령에 제2엔트리를 할당하는 단계를 포함한다.
상기 제1LBA와 상기 제2LBA는 서로 동일할 수 있다.
상기 메모리 컨트롤러의 작동 방법은 상기 제1데이터가 저장될 버퍼의 제1버퍼 영역을 지시하는 제1버퍼 어드레스와 상기 제1LBA를 매핑하는 단계와, 상기 제2데이터가 저장될 상기 버퍼의 제2버퍼 영역을 지시하는 제2버퍼 어드레스와 상기 제2LBA를 매핑하는 단계를 더 포함한다.
상기 메모리 컨트롤러의 작동 방법은 상기 제1버퍼 영역에 대한 상기 제1데이터의 라이트 시작 여부와 라이트 완료 여부에 따라 상기 제1엔트리의 제1상태를 변경하는 단계와, 상기 제2버퍼 영역에 대한 상기 제2데이터의 라이트 시작 여부와 라이트 완료 여부에 따라 상기 제2엔트리의 제2상태를 변경하는 단계를 더 포함하고, 특정 시점에서 상기 제1상태와 상기 제2상태 각각은 유일무이(unique)하다.
상기 특정 시점은 상기 제1데이터와 상기 제2데이터가 동시에 라이트되는 시점일 수 있다.
상기 메모리 컨트롤러의 작동 방법은 상기 제1데이터가 상기 제1버퍼 영역에 라이트되는 도중에 상기 제2데이터가 상기 제2버퍼 영역에 라이트될 때, 상기 제1상태를 상기 WRITE 상태로부터 상기 WRITE OLD 상태로 변경하고 상기 제2상태를 상기 WRITE 상태로 유지하는 단계를 더 포함한다.
상기 메모리 컨트롤러의 작동 방법은 상기 제2데이터가 상기 제2버퍼 영역에 라이트되는 도중에 상기 제1데이터가 상기 제1버퍼 영역에 라이트 완료될 때, 상기 제1상태를 상기 WRITE OLD 상태로부터 상기 PEND OLD 상태로 변경하고 상기 제2상태를 상기 WRITE 상태로 유지하는 단계를 더 포함한다.
상기 메모리 컨트롤러의 작동 방법은 상기 제2데이터가 상기 제2버퍼 영역에 라이트 완료될 때, 상기 제2상태를 상기 WRITE 상태로부터 상기 PEND 상태로 변경하는 동시에 상기 제1상태를 상기 PEND OLD 상태로부터 상기 DEL 상태로 변경하는 단계를 더 포함한다.
상기 메모리 컨트롤러의 작동 방법은 상기 제1상태가 상기 PEND OLD 상태로부터 상기 DEL 상태로 변경됨을 CPU에 의해 실행되는 펌웨어로 알리는 단계를 더 포함한다.
상기 특정 상태는 버퍼에 저장된 복수의 데이터 중에서 상기 리드 명령의 수신 시점에서 상기 데이터가 가장 최근에 상기 버퍼에 저장된 데이터임을 지시한다.
상기 특정 상태는 상기 데이터가 프리패치(prefetch) 작동에 의해 리드된 데이터인지를 포함하는 지시 비트를 포함한다.
상기 호스트로 전송하는 단계는 상기 리드 명령에 따라 외부 메모리로부터 리드된 리드 데이터가 버퍼의 제1버퍼 영역에 라이트되는 도중에 상기 라이트 명령에 상응하는 라이트 데이터가 상기 버퍼의 제2버퍼 영역에 라이트 완료될 때, 상기 라이트 데이트를 상기 데이터로서 상기 호스트로 전송하다.
본 발명의 실시 예에 따른 버퍼와 메모리 컨트롤러를 포함하는 데이터 저장 장치의 작동 방법은 상기 메모리 컨트롤러가, 호스트로부터 라이트 명령이 입력될 때마다 새로운 엔트리를 할당하는 단계와, 상기 메모리 컨트롤러가, 상기 호스트로부터 출력된 리드 명령에 응답하여, 상기 버퍼에 저장된 복수의 데이터 중에서 상기 리드 명령의 수신 시점에서 가장 최근에 저장된 데이터를 상기 호스트로 전송하는 단계를 포함한다.
상기 할당하는 단계는 제1LBA(logical block address)와 제1데이터를 포함하는 제1라이트 명령에 제1엔트리를 할당하는 단계와, 제2LBA와 제2데이터를 포함하는 제2라이트 명령에 제2엔트리를 할당하는 단계를 포함하고, 상기 제1LBA와 상기 제2LBA는 서로 동일하다.
상기 데이터는 상기 라이트 명령에 관련된 데이터 또는 상기 리드 명령에 관련된 데이터이다.
본 발명의 실시 예에 따른 호스트와 데이터 저장 장치를 포함하는 데이터 처리 시스템의 작동 방법은 상기 데이터 저장 장치가, 호스트로부터 라이트 명령이 입력될 때마다 새로운 엔트리를 할당하는 단계와, 상기 데이터 저장 장치가, 상기 호스트로부터 출력된 리드 명령에 응답하여, 상기 데이터 저장 장치의 버퍼에 저장된 복수의 데이터 중에서 상기 리드 명령의 수신 시점에서 가장 최근에 저장된 데이터를 상기 호스트로 전송하는 단계를 포함한다.
상기 할당하는 단계는 제1LBA(logical block address)와 제1데이터를 포함하는 제1라이트 명령에 제1엔트리를 할당하는 단계와, 제2LBA와 제2데이터를 포함하는 제2라이트 명령에 제2엔트리를 할당하는 단계를 포함하고, 상기 제1LBA와 상기 제2LBA는 서로 동일하다.
상기 데이터 처리 시스템의 작동 방법은 상기 제1데이터가 저장될 버퍼의 제1버퍼 영역을 지시하는 제1버퍼 어드레스와 상기 제1LBA를 매핑하는 단계와, 상기 제2데이터가 저장될 상기 버퍼의 제2버퍼 영역을 지시하는 제2버퍼 어드레스와 상기 제2LBA를 매핑하는 단계와, 상기 제1버퍼 영역에 대한 상기 제1데이터의 라이트 시작 여부와 라이트 완료 여부에 따라 상기 제1엔트리의 제1상태를 변경하는 단계와, 상기 제2버퍼 영역에 대한 상기 제2데이터의 라이트 시작 여부와 라이트 완료 여부에 따라 상기 제2엔트리의 제2상태를 변경하는 단계를 더 포함하고, 특정 시점에서 상기 제1상태와 상기 제2상태 각각은 유일무이하다.
본 발명의 실시 예에 따른 메모리 컨트롤러와 이의 작동 방법은, 넌-블로킹 방식을 지원하여 모든 요청을 지연시키지 않고 상기 요청에 즉각적으로 응답할 수 있고, 불필요한 내부 버퍼 카피를 유발하지 않는 효과가 있다.
본 발명의 실시 예에 따른 메모리 컨트롤러와 이의 작동 방법은, 데이터 저장 장치, 특히 플래시-기반 데이터 저장 장치의 성능을 향상시킬 수 있는 효과가 있다.
본 발명의 실시 예에 따른 메모리 컨트롤러와 이의 작동 방법은, 버퍼 사용량을 줄이기 위해 캐시의 엔트리를 가능한 빨리 해제(release)할 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 일 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 2는 도 1에 도시된 관리 모듈에 의해 관리되는 엔트리 테이블의 실시 예를 나타낸다.
도 3은 도 1에 도시된 버퍼에 대한 버퍼 맵을 나타낸다.
도 4는 도 1에 도시된 관리 모듈에 의해 관리되는 상태들의 상태도이다.
도 5는 도 1에 도시된 데이터 처리 시스템에 의해 처리되는 데이터와 상태들을 나타내는 타이밍 도의 일 실시 예이다.
도 6은 도 5에 도시된 데이터와 상기 데이터의 캐시 상태 정보를 나타내는 테이블이다.
도 7은 도 1에 도시된 데이터 처리 시스템에 의해 처리되는 데이터와 상태들을 나타내는 타이밍 도의 다른 실시 예이다.
도 8은 도 1에 도시된 데이터 처리 시스템의 작동을 설명하는 플로우차트이다.
도 9는 본 발명의 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 10은 본 발명의 또 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 일 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다. 도 1을 참조하면, 데이터 처리 시스템(100A)은 호스트(200)와 데이터 저장 장치(300A)를 포함할 수 있다.
데이터 처리 시스템(100A)은 PC(personal computer), 데이터베이스 서비스를 제공할 수 있는 장치, NAS(network-attached storage), 또는 휴대용 전자 장치로 구현될 수 있다.
상기 휴대용 전자 장치는 휴대용 전자 장치는 랩탑 컴퓨터(laptop computer), 이동 전화기, 스마트 폰(smart phone), 태블릿(tablet) PC, PDA (personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP (portable multimedia player), PND(personal navigation device 또는 portable navigation device), 모바일 인터넷 장치(mobile internet device(MID)), 웨어러블 컴퓨터, 사물 인터넷(internet of things(IoT)) 장치, 만물 인터넷(internet of everything(IoE)) 장치, 또는 e-북 (e-book)으로 구현될 수 있다.
호스트(200)는 데이터 저장 장치(300A)의 작동을 제어할 수 있다.
호스트(200)는 라이트 데이터를 데이터 저장 장치(300A)에 라이트하는 라이트 작동(write operation) 또는 리드 데이터를 데이터 저장 장치(300A)로부터 리드하는 리드 작동(read operation)을 수행할 수 있다. 따라서, 호스트(200)는 라이트 작동 또는 리드 작동에 필요한 명령을 데이터 저장 장치(300A)로 전송할 수 있다.
예컨대, 라이트 작동을 수행하기 위해, 호스트(200)는 시작 LBA(logical block address), 섹터 카운트, 및 라이트 데이터를 포함하는 라이트 명령을 데이터 저장 장치(300A)로 전송할 수 있다. 또한, 리드 작동을 수행하기 위해, 호스트 (200)는 시작 LBA와 섹터 카운트를 포함하는 리드 명령을 데이터 저장 장치(300A)로 전송할 수 있다. 이때, 섹터 카운트는 라이트 작동 또는 리드 작동에서 처리될 데이터의 크기를 나타낼 수 있다.
호스트(200)는 집적 회로, 시스템 온 칩(system on chip(SoC)), 애플리케이션 프로세서(application processor(AP)), 모바일 AP, 또는 데이터 저장 장치 (300A)가 접속될 수 있는 휴대용 전자 장치를 의미할 수 있다.
데이터 저장 장치(300A)는 데이터(예컨대, 라이트 작동의 데이터 또는 리드 작동의 데이터)를 저장할 수 있다.
데이터 저장 장치(300A)는 플래시-기반 메모리 장치일 수 있다. 상기 플래시-기반 메모리 장치는 솔리드 스테이트 드라이브(solid state drive(SSD)), 유니버셜 플래시 스토리지(universal flash storage(UFS)), 멀티미디어 카드(multimedia card(MMC)), 임베디드 MMC(embedded MMC(eMMC)), 메모리 카드(memory card), 또는 NVMe(Non-volatile memory express)로 구현될 수 있다. 그러나, 데이터 저장 장치 (300A)는 플래시-기반 메모리 장치 이외의 불휘발성 메모리 장치로 구현될 수 있다.
데이터 저장 장치(300A)는 메모리 컨트롤러(301A)와 메모리(380)를 포함할 수 있다. 예컨대, 데이터 저장 장치(300A)는 일체형으로 구현될 수 있고, 호스트 (200)에 착탈 가능한 형태로 구현될 수 있다. 또한, 데이터 저장 장치(300A)는 호스트(200)와 일체형으로 구현될 수 있다.
메모리 컨트롤러(301A)는 라이트 작동 동안 호스트(200)로부터 출력된 라이트 데이터를 버퍼링하여 메모리(380)에 저장하거나, 리드 작동 동안 메모리(380)로부터 출력된 리드 데이터를 버퍼링하여 호스트(200)로 전송할 수 있다.
메모리 컨트롤러(301A)는 집적 회로 또는 SoC로 구현될 수 있다.
메모리 컨트롤러(301A)는 호스트 컨트롤러(310), 제1CPU(320), 제1DMA (direct memory access; 330), 버퍼(340), 제2CPU(350), 제2DMA(360), 및 플래시 메리 컨트롤러(370)를 포함할 수 있다. 실시 예들에 따라, 호스트 컨트롤러(310)는 제1DMA(330)를 포함할 수 있고, 플래시 메리 컨트롤러(370)는 제2DMA(360)를 포함할 수 있다.
호스트 컨트롤러(310)는 호스트(200)로부터 출력된 라이트 명령에 포함된 시작 LBA와 섹터 카운트를 제1CPU(320)로 전송할 수 있고, 호스트(200)로부터 출력된 리드 명령에 포함된 시작 LBA와 섹터 카운트를 제1CPU(320)로 전송할 수 있다.
호스트 컨트롤러(310)는 호스트(200)로부터 출력된 라이트 명령에 포함된 라이트 데이터를 제1DMA(330)로 전송할 수 있고, 제1DMA(330)로부터 전송된 리드 데이터를 호스트(200)로 전송할 수 있다.
제1CPU(320)는 호스트 컨트롤러(310), 제1DMA(330), 및/또는 제2CPU(350) 각각의 작동을 제어할 수 있다. 예컨대, 제1CPU(320)는 호스트(200)와 주고받는 명령 및/또는 데이터를 제어할 수 있다. 제1CPU(320)는 관리 모듈(321)과 펌웨어(322)를 실행할 수 있다.
관리 모듈(321)은, 사용자 데이터(예컨대, 라이트 데이터)가 제1DMA(330)를 통해 버퍼(340)에 저장될 때 또는 메모리(380)로부터 출력된 데이터(예컨대, 리드 데이터)가 제2DMA(360)를 통해 버퍼(340)에 저장될 때, 논리 블록(logical block), 예컨대 라이트 데이터 또는 리드 데이터가 저장될 버퍼(340)의 위치(또는 어드레스)를 관리하는 모듈을 의미한다.
예컨대, 관리 모듈(321)은 라이트 명령(또는 리드 명령)에 포함된 시작 LBA (logical block address)와 버퍼(340)의 버퍼 어드레스 사이의 매핑 정보를 관리하고, 상기 매핑 정보를 통해 논리 블록의 위치(또는 어드레스)를 펌웨어(322) 또는 상기 논리 블록을 처리할 수 있는 하드웨어 블록(예컨대, 330, 350, 및/또는 360)으로 제공하고, 가장 최근에 버퍼(340)에 저장된 데이터(예컨대, 라이트 데이터 또는 리드 데이터)를 추적(track)하고, 동시 라이트(또는 오버라이트)에 의한 상태 무효(state invalidation)을 처리할 수 있다.
동시 라이트(또는 오버라이트)는 동일한 LBA를 갖는 복수의 라이트 명령들 각각에 상응하는 라이트 데이터를 복수의 버퍼 영역들 각각에 라이트하는 방법을 의미하는 것으로서, 동시 라이트(또는 오버라이트)는 도 4부터 도 7을 참조하여 상세히 설명될 것이다.
관리 모듈(321)은 경우에 따라 CAL(cache abstract layer)로 불릴 수 있고, 펌웨어 또는 소프트웨어로 구현될 수 있다.
펌웨어(322)는 관리 모듈(321)을 제어할 수 있고, 호스트 컨트롤러(310), 제1DMA(330), 및/또는 제2CPU(350)의 작동을 제어할 수 있다.
제1DMA(330)는, 제1CPU(320)의 제어에 따라, 호스트 컨트롤러(310)로부터 출력된 라이트 데이터를 버퍼(340)에 라이트할 수 있다. 또한, 제1DMA(330)는, 제1CPU(320)의 제어에 따라, 버퍼(340)에 저장된 복수의 데이터 중에서 PEND 상태, PEND OLD 상태, 또는 CACHE 상태를 갖는 엔트리에 해당하는 데이터를 리드 데이터로서 호스트 컨트롤러(310)로 전송할 수 있다.
제1CPU(320)는 라이트 작동 또는 리드 작동에 필요한 제어 신호들을 제1DMA(330)로 전송할 수 있다. 또한, 제1CPU(320)는 라이트 작동 또는 리드 작동에 필요한 제어 신호들을 제2CPU(350)로 전송할 수 있다.
호스트(200)로부터 출력된 라이트 데이터가 버퍼(340)에 라이트될 때 또는 완전히 라이트된 때, 제1DMA(330)는 라이트 작동의 시작과 라이트 작동의 완료를 지시하는 지시 신호를 관리 모듈(321)로 전송할 수 있다. 따라서, 관리 모듈(321)은 상기 지시 신호에 응답하여 해당 엔트리들(예컨대, 도 2의 ENT2, ENT3, 및 ENT4) 각각에 포함된 캐시 상태 정보(예컨대, 도 2의 CSI2, CSI3, 및 CSI4)를 변경할 수 있다.
버퍼(340)는 라이트 작동의 대상이 되는 라이트 데이터 또는 리드 작동의 대상이 되는 리드 데이터를 저장할 수 있다. 실시 예들에 따라, 버퍼(340)는 DRAM (dynamic random access memory), SRAM(static RAM), 또는 PRAM(phase change RAM), MRAM(magnetic RAM), 또는 ReRAM(resistive RAM)으로 구현될 수 있다.
도 1에서는 버퍼(340)가 메모리 컨트롤러(301A)의 내부에 구현된 실시 예가 도시되어 있으나, 실시 예에 따라 버퍼(340)는 메모리 컨트롤러(301A)의 외부에 구현될 수 있다.
제2CPU(350)는 메모리(380)와 주고받는 명령 및/또는 데이터를 제어할 수 있다. 또한, 제2CPU(350)는 제2DMA(360)와 플래시 메모리 컨트롤러(370) 각각의 작동을 제어할 수 있다. 예컨대, 제1CPU(320)는 시작 LBA와 버퍼 어드레스를 제2CPU (350)로 전송할 수 있다.
라이트 작동 동안, 제2DMA(360)는, 제2CPU(350)의 제어에 따라, 버퍼(340)에 저장된 라이트 데이터를 플래시 메모리 컨트롤러(370)로 전송할 수 있다. 리드 작동 동안, 제2DMA(360)는, 제2CPU(350)의 제어에 따라, 플래시 메모리 컨트롤러 (370)로부터 출력된 리드 데이터를 버퍼(340)에 저장할 수 있다.
플래시 메모리 컨트롤러(370)로부터 출력된 리드 데이터가 버퍼(340)에 라이트될 때 또는 완전히 라이트된 때, 제2DMA(360)는 라이트 작동의 시작과 라이트 작동의 완료를 지시하는 지시 신호를 제2CPU(350)로 전송할 수 있다. 제2CPU(350)는 상기 지시 신호를 관리 모듈(321)로 전송할 수 있다. 따라서, 관리 모듈(321)은 상기 지시 신호에 응답하여 해당 엔트리들(예컨대, 도 2의 ENT2, ENT3, 및 ENT4) 각각에 포함된 캐시 상태 정보(예컨대, 도 2의 CSI2, CSI3, 및 CSI4)를 변경할 수 있다.
실시 예에 따라, 제2DMA(360)로부터 생성된 지시 신호는 직접 관리 모듈 (321)로 전송될 수 있다.
라이트 작동 동안, 플래시 메모리 컨트롤러(370)는, 제2CPU(350)의 제어에 따라, 제2DMA(360)로부터 출력된 라이트 데이터를 메모리(380)에 저장할 수 있다. 리드 작동 동안, 플래시 메모리 컨트롤러(370)는, 제2CPU(350)의 제어에 따라, 메모리(380)로부터 출력된 리드 데이터를 제2DMA(360)로 전송할 수 있다.
메모리(380)는 플래시 메모리 컨트롤러(370)로부터 전송된 라이트 데이터를 저장하거나 플래시 메모리 컨트롤러(370)로 전송될 리드 데이터를 저장할 수 있다.
메모리(380)는 플래시 메모리로 구현될 수 있다. 실시 예에 따라, 메모리 (380)가 MRAM, PRAM, 또는 ReRAM으로 구현될 때, 플래시 메모리 컨트롤러(370)는 MRAM, PRAM, 또는 ReRAM에 상응하는 메모리 컨트롤러로 대체될 수 있다.
도 2는 도 1에 도시된 관리 모듈에 의해 관리되는 엔트리 테이블의 실시 예를 나타내고, 도 3은 도 1에 도시된 버퍼에 대한 버퍼 맵을 나타낸다.
도 1부터 도 3을 참조하면, 관리 모듈(321)은 호스트 컨트롤러(310)를 통해 라이트 명령이 입력될 때마다 테이블(TABLE)에서 새로운 엔트리(entry)를 할당할 수 있다.
호스트(200)로부터 각 라이트 명령이 입력될 때마다 관리 모듈(321)에 의해 할당된 각 엔트리(ENT1, ENT2, ENT3, ENT4, ...)는 LBA(또는, 시작 LBA), 버퍼 어드레스, 캐시 상태 정보(CSI), 및 기준 카운트(RC)를 포함할 수 있다.
캐시 상태 정보(CSI)와 기준 카운트(RC)는 도 4를 참조하여 상세히 설명될 것이다. 기준 카운트(RC)는 리드 참조 회수를 나타낼 수 있다.
예컨대, 관리 모듈(321)은 제1LBA(LBA0)와 제1데이터(DATA_0)를 포함하는 제1라이트 명령에 제1엔트리(ENT1)를 할당하고, 제2LBA(LBA100)와 제2데이터(DATA_A)를 포함하는 제2라이트 명령에 제2엔트리(ENT2)를 할당하고, 제3LBA(LBA100)와 제3데이터(DATA_B)를 포함하는 제3라이트 명령에 제3엔트리(ENT3)를 할당하고, 제4LBA (LBA100)와 제4데이터(DATA_C)를 포함하는 제4라이트 명령에 제4엔트리(ENT4)를 할당할 수 있다.
상기 제2라이트 명령에 포함된 제2LBA(LBA100), 상기 제3라이트 명령에 포함된 제3LBA(LBA100), 및 상기 제4라이트 명령에 포함된 제3LBA(LBA100)는 서로 동일할 수 있다.
관리 모듈(321)은 각 라이트 명령에 포함된 각 LBA(LBA0, LBA100, LBA100, LBA100, ...)를 각 버퍼 어드레스(ADD1, ADD2, ADD3, ADD4, ...)로 할당할 수 있다. 예컨대, 관리 모듈(321)은 각 LBA(LBA0, LBA100, LBA100, LBA100, ...)와 각 버퍼 어드레스(ADD1, ADD2, ADD3, ADD4, ...)를 매핑할 수 있다. 여기서, 각 버퍼 어드레스(ADD1, ADD2, ADD3, ADD4, ...)는 버퍼(340)의 각 버퍼 영역(340-1, 340-2, 340-3, 340-4, ...)을 지시하는 어드레스를 의미할 수 있다.
각 엔트리(ENT1, ENT2, ENT3, ENT4, ...)에 포함된 각 캐시 상태 정보(CSI1, CSI2, CSI3, CSI4, ...)는 도 4에 도시된 각 상태(FREE, WRITE, WRITE OLD, READ, PEND, PEND OLD, CACHE, 및 DEL)를 나타내는 복수의 비트들을 포함할 수 있다.
각 엔트리(ENT1, ENT2, ENT3, ENT43, ...)에 포함된 각 기준 카운트 (RC1,RC2, RC3, RC4, ...)는 버퍼(340)에 저장된 로직 블록에 대한 리드 참조가 시작될 때마다 증가하고 상기 리드 참조가 완료될 때마다 감소한다.
도 4는 도 1에 도시된 관리 모듈에 의해 관리되는 상태들의 상태도이고, 도 5는 도 1에 도시된 데이터 처리 시스템에 의해 처리되는 데이터와 상태들을 나타내는 타이밍 도의 일 실시 예이고, 도 6은 도 5에 도시된 데이터와 상기 데이터의 캐시 상태 정보를 나타내는 테이블이다.
도 1부터 도 6을 참조하면, FREE는 버퍼(340)의 초기화 상태를 나타내고, 라이트 명령에 따라 관리 모듈(321)은 라이트 작동을 위한 버퍼 어드레스를 할당하고 (ALLOC_WRITE), 리드 명령에 따라 관리 모듈(321)은 리드 작동을 위한 버퍼 어드레스를 할당하고(ALLOC_READ), 프리패치 작동을 위해 관리 모듈(321)은 버퍼 어드레스를 할당한다(ALLOC_PREFETCH).
HDMA_WRITE_DONE은 호스트(200)로부터 전송된 라이트 데이터가 제1DMA(330)에 의해 버퍼(340)의 해당 버퍼 영역에 라이트 완료됨을 나타낸다.
FDMA_READ_DONE은 메모리(380)로부터 출력된 리드 데이터가 제2DMA(360)에 의해 버퍼(340)의 해당 버퍼 영역에 라이트 완료됨을 나타낸다.
FMDA_WRITE_DONE은 버퍼(340)에 저장된 라이트 데이터가 제2DMA(360)에 의해 메모리(380)에 라이트 완료됨을 나타낸다.
Ref++은 리드 참조가 시작될 때마다 +1씩 증가함을 나타내고, Ref--는 상기 리드 참조가 종료될 때마다 -1씩 감소함을 나타낸다. 여기서, 리드 참조는 버퍼 (340)에 저장된 해당 데이터를 리드하는 작동을 의미하거나, 호스트(200)로부터 출력된 리드 명령에 따라 버퍼(340)에 저장된 해당 데이터를 리드하는 작동을 의미한다. 버퍼 리드 작동은 제1DMA(330) 또는 제2DMA(360)에 의해 버퍼(340)에 저장된 해당 데이터가 리드되는 작동을 의미할 수 있다.
기준 카운트(RC)가 0임을 나타내는 Ref==0은 리드 참조가 존재하지 않음을 나타내고, 기준 카운트(RC)가 0이 아님을 나타내는 Ref!=0은 리드 참조가 존재함을 나타낸다.
제2LBA(LBA100)와 제2데이터(DATA_A)를 포함하는 제2라이트 명령에 따라, 시점(T1)에서 제2데이터(DATA_A)가 제1DMA(330)에 의해 제2버퍼 어드레스(ADD2)에 해당하는 버퍼(340)의 제2버퍼 영역(340-2)에 라이트될 때, 관리 모듈(321)은 제2엔트리(ENT2)에 포함된 캐시 상태 정보(CSI2)를 WRITE 상태를 나타내는 010으로 설정한다.
시점(T1')까지 제2데이터(DATA_A)를 제2버퍼 영역(340-2)에 라이트 하는 라이트 작동이 수행된다.
시점(T1')에서 제2데이터(DATA_A)가 제2버퍼 영역(340-2)에 라이트 완료되면, 관리 모듈(321)은 제2엔트리(ENT2)에 포함된 캐시 상태 정보(CSI2)를 WRITE 상태를 나타내는 010으로부터 PEND 상태를 나타내는 110으로 변경한다.
WRITE 상태는 해당 데이터가 버퍼(340)에 라이트되고 있는 상태를 의미한다. PEND 상태는 해당 데이터가 버퍼(340)에 라이트 완료된 후 상기 해당 데이터가 메모리(380)에 라이트되고 있는 상태를 의미하고, 버퍼(340)에 라이트 완료된 상기 해당 데이터는 리드 참조의 대상이 될 수 있다.
제2LBA(LBA100)와 동일한 제3LBA(LBA100)와 제3데이터(DATA_B)를 포함하는 제3라이트 명령이 입력되기 전의 각 시점(T1과 T1')에서 관리 모듈(321)은 제3엔트리(ENT3)에 포함된 캐시 상태 정보(CSI3)를 FREE 상태를 나타내는 000으로 설정한다. FREE 상태는 초기화 상태 또는 디-얼로케이션(de-allocation) 상태를 의미할 수 있다.
시점(T2)에서 제3데이터(DATA_B)가 제1DMA(330)에 의해 제3버퍼 어드레스 (ADD3)에 해당하는 버퍼(340)의 제3버퍼 영역(340-3)에 라이트될 때, 관리 모듈 (321)은 제3엔트리(ENT3)에 포함된 캐시 상태 정보(CSI3)를 WRITE 상태를 나타내는 010으로 설정한다.
시점(T2)에서 관리 모듈(321)은 제2엔트리(ENT2)에 포함된 캐시 상태 정보 (CSI2)를 PEND 상태를 나타내는 110으로 유지한다.
제3데이터(DATA_B)가 제3버퍼 영역(340-3)에 라이트되고 있는 도중에(T3), 제4데이터(DATA_C)가 제1DMA(330)에 의해 제4버퍼 어드레스(ADD4)에 해당하는 버퍼 (340)의 제4버퍼 영역(340-4)에 라이트될 때, 관리 모듈(321)은 제4엔트리(ENT4)에 포함된 캐시 상태 정보(CSI4)를 WRITE 상태를 나타내는 010으로 설정한다.
시점(T3)에서, 관리 모듈(321)은 제3엔트리(ENT3)에 포함된 캐시 상태 정보 (CSI3)를 WRITE 상태를 나타내는 010으로부터 WRITE OLD를 나타내는 011로 변경하고, 제2엔트리(ENT2)에 포함된 캐시 상태 정보(CSI2)를 PEND 상태를 나타내는 110으로 유지한다.
즉, 시점(T3)에서 각 엔트리(ENT2, ENT3, 및 ENT4)에 포함된 각 캐시 상태 정보(CSI2, CSI3, 및 CSI4) 중에서 WRITE 상태를 나타내는 정보는 유일무이 (unique)하게 존재한다.
WRITE OLD는 제3버퍼 영역(340-3)에 라이트되고 있는 제3데이터(DATA_B)가 더 이상 가장 최근 데이터가 아님을 나타내는 상태이다.
제4데이터(DATA_C)가 제4버퍼 영역(340-4)에 라이트되고 있는 도중에(T4), 제3데이터(DATA_B)가 제3버퍼 영역(340-3)에 라이트 완료되면, 관리 모듈(321)은 제4엔트리(ENT4)에 포함된 캐시 상태 정보(CSI4)를 WRITE 상태를 나타내는 010으로 유지한다.
시점(T4)에서, 관리 모듈(321)은 제3엔트리(ENT3)에 포함된 캐시 상태 정보 (CSI3)를 WRITE OLD 상태를 나타내는 011로부터 PEND OLD 상태를 나타내는 111로 변경한다. 시점(T4)에서, 제2엔트리(ENT2)에 포함된 캐시 상태 정보(CSI2)를 PEND 상태를 나타내는 110으로부터 DEL 상태를 나타내는 001로 변경한다.
시점(T4)에서 PEND OLD 상태만이 존재한다.
PEND OLD는 해당 데이터가 버퍼(340)에 라이트 완료됐으나 상기 해당 데이터가 메모리(380)로 라이트되지 않는 상태를 의미한다. 즉, PEND 상태에 상응하는 데이터가 버퍼(340)에 존재하므로, PEND OLD 상태에 해당하는 데이터는 메모리(380)에 라이트될 필요가 없다.
DEL 상태는 새로운 리드 참조는 존재하지 않으나 이전 리드 참조의 종료를 대기하는 상태를 의미한다. RELEASE는 DEL 상태에서 이전 리드 참조가 종료됨을 나타낸다. 즉, DEL 상태에서 Ref가 0일 때, DEL 상태는 FREE 상태로 변경된다.
시점(T5)에서, 제4데이터(DATA_C)가 제4버퍼 영역(340-4)에 라이트 완료되면, 관리 모듈(321)은 제4엔트리(ENT3)에 포함된 캐시 상태 정보(CSI4)를 WRITE 상태를 나타내는 010으로부터 PEND 상태를 나타내는 110으로 변경한다.
시점(T5)에서, 관리 모듈(321)은 제3엔트리(ENT3)에 포함된 캐시 상태 정보 (CSI3)를 PEND OLD를 나타내는 111로부터 DEL 상태를 나타내는 001로 변경한다. 즉, 캐시 상태 정보(CSI4)가 WRITE 상태를 나타내는 010으로부터 PEND 상태를 나타내는 110으로 변경됨에 따라, 캐시 상태 정보(CSI3)를 PEND OLD를 나타내는 111로부터 DEL 상태를 나타내는 001로 변경되어야 한다.
시점(T5)에서, 관리 모듈(321)은 제2엔트리(ENT2)에 포함된 캐시 상태 정보 (CSI3)를 DEL 상태를 나타내는 001을 유지한다.
시점(T5)에서, 복수의 상태들(PEND, PEND OLD, CACHE, 및 READ) 중에서 PEND 상태만이 존재한다. 즉, 특정 시점에서는 복수의 상태들(PEND, PEND OLD, CACHE, 및 READ) 중에서 어느 하나의 상태만이 존재할 수 있다.
상술한 바와 같이, 동일한 LBA를 갖는 복수의 라이트 명령들 각각이 데이터 저장 장치(300A)로 순차적으로 입력될 때, 이전 라이트 명령에 할당된 엔트리의 캐시 상태 정보는 WRITE 상태로부터 WRITE OLD 상태로 변경되고, 가장 최근의 라이트 명령에 할당된 엔트리의 캐시 상태 정보는 WRITE 상태를 유지한다. 즉, 특정 시점에서 WRITE 상태는 유일무이하다.
각 라이트 명령에 해당하는 각 데이터(DATA_A, DATA_B, 및 DATA_C)가 각 버퍼 영역(340-2, 340-3, 및 340-4)에 라이트 완료되면, WRITE 상태는 PEND 상태로 변경되고, WRITE OLD 상태는 PEND OLD 상태로 변경된다.
실시 예에 따라, 호스트(200)가 시작 LBA와 섹터 카운트를 포함하는 리드 명령을 데이터 저장 장치(300A)로 출력하면, 상기 리드 명령은 호스트 컨트롤러(310)를 통해 관리 모듈(321)로 전송된다. 관리 모듈(321)은 상기 시작 LBA를 제5버퍼 어드레스(ADD5)로 할당한다.
관리 모듈(321)은 복수의 엔트리들을 포함하는 테이블(TABLE)을 검색하고, 검색의 결과, 상기 시작 LBA를 포함하는 엔트리들 각각의 캐시 상태 정보에 PEND 상태, PEND OLD 상태, 및 CACHE 상태 중에서 어느 하나의 상태를 나타내는 비트들이 포함된 경우(즉, 캐시 히트), 제1DMA(330)는, 관리 모듈(321)의 제어에 따라, 상기 비트들을 포함하는 엔트리에 포함된 제5버퍼 어드레스(ADD5)를 이용하여 제5데이터(DATA_Z)를 버퍼(340)의 제5버퍼 영역(340-5)으로부터 리드한다. 제5데이터 (DATA_Z)는 제1DAM(330)과 호스트 컨트롤러(310)를 통해 호스트(200)로 전송된다.
그러나, 검색의 결과, 상기 시작 LBA를 포함하는 엔트리들 각각의 캐시 상태 정보에 PEND 상태, PEND OLD 상태, 및 CACHE 상태 중에서 어느 하나의 상태를 나타내는 비트들이 포함되지 않은 경우(즉, 캐시 미스), 플래시 메모리 컨트롤러(370)는, 제2CPU(350)의 제어에 따라, 메모리(380)로부터 제5데이터(DATA_Z)를 리드하고, 리드된 제5데이터(DATA_Z)를 제2DMA(360)로 전송한다. 제2DMA(360)는 제5데이터(DATA_Z)를 제5버퍼 어드레스(ADD5)에 의해 지시된 제5버퍼 영역(340-5)에 라이트한다.
도 5에 예시적으로 도시된 바와 같이, 시점(T1)까지 제5데이터(DATA_Z)가 제5버퍼 영역(340-5)에 라이트되므로, 관리 모듈(321)은 해당 엔트리에 포함된 캐시 상태 정보를 READ 상태를 나타내는 100으로 유지한다.
시점(T1)에서, 제5데이터(DATA_Z)가 제5버퍼 영역(340-5)에 라이트 완료될 때, 관리 모듈(321)은 해당 엔트리에 포함된 캐시 상태 정보를 READ 상태를 나타내는 100으로부터 CACHE 상태를 나타내는 101로 변경한다.
READ 상태는 해당 데이터가 버퍼(340)에 라이트되고 있는 상태를 의미하고, CACHE 상태는 상기 해당 데이터가 버퍼(340)에 라이트 완료된 상태를 나타낸다.
시점(T1')까지, 호스트(200)로부터 리드 명령이 입력되면, 제1DMA(330)는, 관리 모듈(321)의 제어에 따라, 가장 최근에 버퍼(340)에 저장된 제5데이터 (DATA_Z)를 호스트 컨트롤러(310)를 통해 호스트(200)로 전송한다. 즉, 제1DMA (330)는 CACHE 상태를 포함하는 엔트리에 상응하는 제5데이터(DATA_Z)를 호스트 컨트롤러(310)를 통해 호스트(200)로 전송한다.
시점(T1')부터 시점(T4) 사이에, 호스트(200)로부터 리드 명령이 입력되면, 제1DMA(330)는, 관리 모듈(321)의 제어에 따라, 가장 최근에 버퍼(340)에 저장된 제2데이터(DATA_A)를 호스트 컨트롤러(310)를 통해 호스트(200)로 전송한다. 즉, 제1DMA(330)는 PEND 상태를 포함하는 제2엔트리(ENT2)에 상응하는 제2데이터 (DATA_A)를 호스트 컨트롤러(310)를 통해 호스트(200)로 전송한다.
시점(T4)부터 시점(T5) 사이에, 호스트(200)로부터 리드 명령이 입력되면, 제1DMA(330)는, 관리 모듈(321)의 제어에 따라, 가장 최근에 버퍼(340)에 저장된 제3데이터(DATA_B)를 호스트 컨트롤러(310)를 통해 호스트(200)로 전송한다. 즉, 제1DMA(330)는 PEND OLD 상태를 포함하는 제3엔트리(ENT3)에 상응하는 제3데이터 (DATA_B)를 호스트 컨트롤러(310)를 통해 호스트(200)로 전송한다.
시점(T5) 이후에, 호스트(200)로부터 리드 명령이 입력되면, 제1DMA(330)는, 관리 모듈(321)의 제어에 따라, 가장 최근에 버퍼(340)에 저장된 제4데이터 (DATA_C)를 호스트 컨트롤러(310)를 통해 호스트(200)로 전송한다. 즉, 제1DMA(330)는 PEND 상태를 포함하는 제4엔트리(ENT4)에 상응하는 제4데이터(DATA_C)를 호스트 컨트롤러(310)를 통해 호스트(200)로 전송한다.
종래에는 동일한 LBA를 갖는 라이트 명령들이 순차적으로 입력되면, 종래의 데이터 저장 장치는 상기 라이트 명령들 각각에 해당하는 라이트 데이터를 버퍼의 동일한 버퍼 영역에 계속해서 오버라이트하고, 마지막 명령에 해당하는 라이트 데이터에 대한 라이트 작동이 완료된 후 상기 종래의 데이터 저장 장치는 캐시 상태 정보를 PEND 상태로 변경했다.
따라서, 상기 라이트 명령들 각각에 해당하는 상기 라이트 데이터가 상기 버퍼의 동일한 버퍼 영역에 계속해서 오버라이트되는 도중에, 상기 LBA를 갖는 리드 명령이 입력되면, 상기 종래의 데이터 저장 장치는 상기 마지막 명령에 해당하는 라이트 데이터에 대한 라이트 작동이 완료될 때까지 상기 리드 명령을 지연시킨다.
그러나, 본 발명의 실시 예에 따른 데이터 저장 장치(300A)는, 동일한 LBA를 갖는 라이트 명령과 리드 명령이 입력되더라도, 상기 리드 명령의 수신 시점에서 가장 최근에 버퍼(340)에 저장된 데이터를 호스트로 전송할 수 있다. 따라서 데이터 저장 장치(300A)는 넌-블로킹(non-blocking) 방법으로 리드 명령에 해당하는 데이터를 호스트(200)로 전송할 수 있는 효과가 있다.
실시 예에 따라, 시점(T1)에서 제5데이터(DATA_Z)가 제5버퍼 영역(340-5)에 라이트 완료되면, 관리 모듈(321)은 제5데이터(DATA_Z)에 관련된 엔트리에 포함된 캐시 상태 정보를 WRITE 상태를 나타내는 010으로부터 PEND 상태를 나타내는 110으로 변경한다.
시점(T1')에서 제2데이터(DATA_A)가 제2버퍼 영역(340-2)에 라이트 완료되면, 관리 모듈(321)은 제2엔트리(ENT2)에 포함된 캐시 상태 정보(CSI2)를 WRITE 상태를 나타내는 010으로부터 PEND 상태를 나타내는 110으로 변경한다. 이와 동시에 또는 병렬적으로, 관리 모듈(321)은 제5데이터(DATA_Z)에 관련된 엔트리에 포함된 캐시 상태 정보를 PEND 상태를 나타내는 110으로부터 DEL 상태를 나타내는 001로 변경한다. 즉, 시점(T1')에서 PEND 상태를 포함하는 엔트리는 하나만 존재해야 한다.
시점(T1')까지, 호스트(200)로부터 리드 명령이 입력되면, 제1DMA(330)는, 관리 모듈(321)의 제어에 따라, 가장 최근에 버퍼(340)에 저장된 제5데이터 (DATA_Z)를 호스트 컨트롤러(310)를 통해 호스트(200)로 전송한다. 즉, 제1DMA (330)는 PEND 상태를 포함하는 엔트리에 상응하는 제5데이터(DATA_Z)를 호스트 컨트롤러(310)를 통해 호스트(200)로 전송한다.
제2엔트리(ENT2)의 캐시 상태 정보(CSI2)가 PEND 상태, PEND OLD 상태, CACHE 상태, 및 READ 상태 중에서 어느 하나의 상태일 때, 제3엔트리 (ENT3)의 캐시 상태 정보(CSI3)가 WRITE 상태로부터 PEND 상태로 변경되거나 WRITE OLD 상태로부터 PEND OLD 상태로 변경되면 제2엔트리(ENT2)의 캐시 상태 정보 (CSI2)는 상기 어느 하나의 상태는 DEL 상태로 변경되어야 한다.
도 7은 도 1에 도시된 데이터 처리 시스템에 의해 처리되는 데이터와 상태들을 나타내는 타이밍 도의 다른 실시 예이다.
도 3, 도 4, 및 도 7을 참조하면, 시작 LBA(LBA100)를 포함하는 리드 명령에 따라, 메모리(380)로부터 출력된 제5데이터(DATA_Z)는 제5버퍼 영역(340-5)에 라이트된다.
시점(Ta)까지 제5데이터(DATA_Z)가 제5버퍼 영역(340-5)에 라이트될 때, 해당 엔트리에 포함된 캐시 상태 정보는 READ 상태를 나타내는 100을 유지한다.
그러나, 시점(Ta)에서 시작 LBA(LBA100)를 포함하는 라이트 명령에 따라 제6데이터(DATA_D)가 버퍼(340)의 제6버퍼 영역에 라이트 완료되면, 관리 모듈(321)은 해당 엔트리에 포함된 캐시 상태 정보를 WRITE 상태는 나타내는 010으로부터 PEND 상태를 나타내는 110으로 변경한다.
이때, 시점(Ta)에서 관리 모듈(321)은 해당 엔트리에 포함된 캐시 상태 정보를 READ 상태는 나타내는 100으로부터 DEL 상태를 나타내는 001로 변경한다.
시점(Tb)에서, 호스트(200)로부터 리드 명령이 입력되면, 제1DMA(330)는 상기 리드 명령에 따라 가장 최근에 버퍼(340)에 저장된 제6데이터(DATA_D)를 호스트 컨트롤러(310)를 통해 호스트(200)로 전송한다. 즉, 제1DMA(330)는 PEND 상태를 포함하는 엔트리에 상응하는 제6데이터(DATA_D)를 호스트 컨트롤러(310)를 통해 호스트(200)로 전송한다.
상술한 바와 같이, 특정 시점에서는 상태들(READ, PEND, PEND OLD, 및 CACHE) 중에서 어느 하나의 상태만이 존재한다.
복수의 엔트리들(ENT2-ENT4) 각각이 동일한 LBA(LBA100)를 포함하고 복수의 엔트리들(ENT2-ENT4) 중에서 어느 하나의 엔트리의 캐시 상태 정보가 WRITE 상태로부터 PEND 상태로 변경되거나 WRITE OLD 상태로부터 PEND OLD 상태로 변경될 때, 다른 엔트리의 캐시 상태 정보는 READ 상태, PEND 상태, PEND OLD 상태, 또는 CACHE 상태로부터 DEL 상태로 변경된다.
실시 예에 따라, 연속된 리드 명령들에 따라 연속된 리드 작동들이 예측될 때, 플래시 메모리 컨트롤러(370)는, 제2CPU(350)의 제어에 따라, 메모리(380)로부터 데이터를 프리패치하고, 프리패치된 데이터를 제2DMA(360)를 통해 버퍼(340)에 저장할 수 있다.
이때, 관리 모듈(321)은 버퍼(340)에 저장된 데이터가 정상적인 리드 작동에 따라 리드된 리드 데이터인지 또는 프리패치 작동에 의해 리드된 리드 데이터인지를 구별할 수 있는 비트를 캐시 상태 정보(CSI)에 포함시킬 수 있다.
예컨대, 도 4에서는 설명의 편의를 위해 CACHE 상태를 나타내는 비트들이 101으로 도시되어 있으나, 관리 모듈(321)은 CACHE 상태를 나타내는 비트들을 1010 또는 1011로 설정할 수 있다.
예컨대, CACHE 상태를 나타내는 비트들이 1010일 때, 펌웨어(322)는 관리 모듈(321)로부터 출력된 비트들(즉, 1010)에 따라 버퍼(340)에 저장된 데이터가 정상적인 리드 작동에 따라 리드된 데이터임을 판단할 수 있다. 또한, CACHE 상태를 나타내는 비트들이 1011일 때, 펌웨어(322)는 관리 모듈(321)로부터 출력된 비트들(즉, 1011)에 따라 버퍼(340)에 저장된 데이터가 프리패치 작동에 따라 리드된 데이터임을 판단할 수 있다.
또 다른 실시 예에 따라, READ 상태, PEND 상태, PEND OLD 상태, 또는 CACHE 상태로부터 DEL 상태로 변경될 때, 관리 모듈(321)은 상기 DEL 상태로 변경됨을 지시하는 지시 비트를 펌웨어(322)로 알릴 수 있다.
도 8은 도 1에 도시된 데이터 처리 시스템의 작동을 설명하는 플로우차트이다. 도 1부터 도 8을 참조하면, 데이터 저장 장치(300A), 예컨대 제1CPU(320)는 호스트(200)로부터 명령(CMD)을 수신한다(S110).
데이터 저장 장치(300A), 예컨대 제1CPU(320)는 수신된 명령(CMD)이 라이트 명령(WCMD)인지 또는 리드 명령(RCMD)인지를 판단한다(S120).
수신된 명령(CMD)이 라이트 명령(WCMD)일 때, 데이터 저장 장치(300A), 예컨대 제1CPU(320)는 테이블(TABLE)에서 새로운 엔트리를 할당한다(S130).
제1DMA(330)는, 제1CPU(320)의 제어에 따라, 데이터를 버퍼(340)에 라이트한다(SS140).
수신된 명령(CMD)이 리드 명령(RCMD)일 때, 제1DMA(330)는, 제1CPU(320)의 제어에 따라, 버퍼(340)에 저장된 복수의 데이터 중에서 가장 최근에 저장된 데이터를 호스트 컨트롤러(310)를 통해 호스트(200)로 전송한다(S150).
데이터 저장 장치(300A)는 호스트(200)로부터 출력된 리드 명령(RCMD)에 응답하여, 복수의 상태들(FREE, WRITE, WRITE OLD, READ, PEND, PEND OLD, CACHE, 및 DEL) 중에서 특정 상태(PEND, PEND OLD, 또는 CACHE)를 갖는 엔트리에 해당하는 데이터를 호스트(200)로 전송한다(S150).
데이터 저장 장치(300A)는, 호스트(200)로부터 출력된 리드 명령(RCMD)에 응답하여, 버퍼(340)에 저장된 복수의 데이터 중에서 리드 명령(RCMD)의 수신 시점에서 가장 최근에 저장된 데이터를 호스트(200)로 전송한다(S150). 상기 가장 최근에 저장된 데이터는 특정 상태(PEND, PEND OLD, 또는 CACHE)에 기초하여 결정될 수 있다.
도 9는 본 발명의 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다. 도 1과 도 9를 참조하면, 도 1에서는 두 개의 CPU들(320과 350)을 포함하는 메모리 컨트롤러(301A)가 도시되어 있으나, 도 9에서는 하나의 CPU(390)를 포함하는 메모리 컨트롤러(301B)가 도시되어 있다.
즉, 도 9의 CPU(390)는 도 1의 CPU들(320과 350)을 기능을 모두 수행할 수 있다. 따라서, 도 1부터 도 8을 참조하여 설명된 데이터 처리 시스템(100A)의 구조와 동작은 호스트(200)와 데이터 저장 장치(300B)를 포함하는 데이터 처리 시스템 (100B)의 구조와 동작과 실질적으로 동일하다.
도 10은 본 발명의 또 다른 실시 예에 따른 데이터 처리 시스템의 블록도를 나타낸다.
도 1부터 도 10을 참조하면, 데이터 처리 시스템(400)은 클라이언트 컴퓨터 (410), 웹서버(420), 네트워크(430), 및 데이터 서버 시스템(460)을 포함한다. 데이터 서버 시스템(460)은 데이터베이스 서버(440), 및 데이터베이스(450)를 포함한다. 예컨대, 데이터 서버 시스템(400)은 서치 포탈(search portal) 또는 IDC (internet data center)를 의미할 수 있다.
브라우저를 수행할 수 있는 클라이언트 컴퓨터(410)는 네트워크를 통해 웹 서버(420)와 통신할 수 있다. 클라이언트 컴퓨터(410)는 PC(personal computer), 또는 도 1에서 설명된 휴대용 전자 장치로 구현될 수 있다.
웹 서버(420)는 네트워크(430)를 통해 데이터베이스 서버(440)와 통신할 수 있다. 데이터베이스 서버(440)는 도 1의 호스트(200)의 기능을 수행할 수 있다.
데이터베이스 서버(440)는 데이터베이스(450)의 동작을 제어할 수 있다. 데이터베이스 서버(440)는 데이터베이스(450)를 액세스할 수 있다.
데이터베이스(450)는 복수의 데이터 저장 장치들(300)을 포함할 수 있다. 데이터 저장 장치(300)는 도 1에 도시된 데이터 저장 장치(300A) 또는 도 9에 도시된 데이터 저장 장치(300B)를 의미할 수 있다.
웹 서버(420)와 데이터베이스 서버(440)는 네트워크(430)를 통해 통신할 수 있다. 네트워크(440)는 유선 네트워크, 무선 네트워크, 인터넷, 또는 이동 전화 네트워크를 의미할 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100A와 100B; 데이터 처리 시스템
200; 호스트
300, 300A, 및 300B; 데이터 저장 장치
301A와 301B; 메모리 컨트롤러
310; 호스트 컨트롤러
320; 제1CPU
321; 관리 모듈
322; 펌웨어
330; 제1DMA
340; 버퍼
350; 제2CPU
360; 제2DMA
370; 플래시 메모리 컨트롤러
380; 메모리
390; CPU
410; 클라이언트 컴퓨터
420; 웹 서버
440; 데이터베이스 서버
450; 데이터베이스

Claims (10)

  1. 호스트로부터 라이트 명령이 입력될 때마다 새로운 엔트리를 할당하는 단계; 및
    상기 호스트로부터 출력된 리드 명령에 응답하여 복수의 상태들 중 특정 상태를 갖는 엔트리에 해당하는 데이터를 상기 호스트로 전송하는 단계를 포함하고,
    상기 복수의 상태들은 FREE 상태, WRITE 상태, WRITE OLD 상태, READ 상태, PEND 상태, PEND OLD 상태, CACHE 상태, 및 DEL 상태이고,
    상기 특정 상태는 상기 PEND 상태, 상기 PEND OLD 상태, 또는 상기 CACHE 상태인 메모리 컨트롤러의 작동 방법.
  2. 제1항에 있어서, 상기 할당하는 단계는,
    제1LBA(logical block address)와 제1데이터를 포함하는 제1라이트 명령에 제1엔트리를 할당하는 단계; 및
    제2LBA와 제2데이터를 포함하는 제2라이트 명령에 제2엔트리를 할당하는 단계를 포함하는 메모리 컨트롤러의 작동 방법.
  3. 제2항에 있어서,
    상기 제1LBA와 상기 제2LBA는 서로 동일한 메모리 컨트롤러의 작동 방법.
  4. 제3항에 있어서,
    상기 제1데이터가 저장될 버퍼의 제1버퍼 영역을 지시하는 제1버퍼 어드레스와 상기 제1LBA를 매핑하는 단계; 및
    상기 제2데이터가 저장될 상기 버퍼의 제2버퍼 영역을 지시하는 제2버퍼 어드레스와 상기 제2LBA를 매핑하는 단계를 더 포함하는 메모리 컨트롤러의 작동 방법.
  5. 제4항에 있어서,
    상기 제1버퍼 영역에 대한 상기 제1데이터의 라이트 시작 여부와 라이트 완료 여부에 따라 상기 제1엔트리의 제1상태를 변경하는 단계; 및
    상기 제2버퍼 영역에 대한 상기 제2데이터의 라이트 시작 여부와 라이트 완료 여부에 따라 상기 제2엔트리의 제2상태를 변경하는 단계를 더 포함하고,
    특정 시점에서 상기 제1상태와 상기 제2상태 각각은 유일무이한(unique)한 메모리 컨트롤러의 작동 방법.
  6. 제1항에 있어서,
    상기 특정 상태는 버퍼에 저장된 복수의 데이터 중에서 상기 리드 명령의 수신 시점에서 상기 데이터가 가장 최근에 상기 버퍼에 저장된 데이터임을 지시하는 메모리 컨트롤러의 작동 방법.
  7. 제1항에 있어서,
    상기 특정 상태는 상기 데이터가 프리패치(prefetch) 작동에 의해 리드된 데이터인지를 포함하는 지시 비트를 포함하는 메모리 컨트롤러의 작동 방법.
  8. 버퍼와 메모리 컨트롤러를 포함하는 데이터 저장 장치의 작동 방법에 있어서,
    상기 메모리 컨트롤러가, 호스트로부터 라이트 명령이 입력될 때마다 새로운 엔트리를 할당하는 단계; 및
    상기 메모리 컨트롤러가, 상기 호스트로부터 출력된 리드 명령에 응답하여, 상기 버퍼에 저장된 복수의 데이터 중에서 상기 리드 명령의 수신 시점에서 가장 최근에 저장된 데이터를 상기 호스트로 전송하는 단계를 포함하는 데이터 저장 장치의 작동 방법.
  9. 제8항에 있어서, 상기 할당하는 단계는,
    제1LBA(logical block address)와 제1데이터를 포함하는 제1라이트 명령에 제1엔트리를 할당하는 단계; 및
    제2LBA와 제2데이터를 포함하는 제2라이트 명령에 제2엔트리를 할당하는 단계를 포함하고,
    상기 제1LBA와 상기 제2LBA는 서로 동일한 데이터 저장 장치의 작동 방법.
  10. 호스트와 데이터 저장 장치를 포함하는 데이터 처리 시스템의 작동 방법에 있어서,
    상기 데이터 저장 장치가, 호스트로부터 라이트 명령이 입력될 때마다 새로운 엔트리를 할당하는 단계; 및
    상기 데이터 저장 장치가, 상기 호스트로부터 출력된 리드 명령에 응답하여, 상기 데이터 저장 장치의 버퍼에 저장된 복수의 데이터 중에서 상기 리드 명령의 수신 시점에서 가장 최근에 저장된 데이터를 상기 호스트로 전송하는 단계를 포함하는 데이터 처리 시스템의 작동 방법.
KR1020140073433A 2014-06-17 2014-06-17 메모리 컨트롤러의 작동 방법과 이를 포함하는 장치들의 작동 방법들 KR102106261B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140073433A KR102106261B1 (ko) 2014-06-17 2014-06-17 메모리 컨트롤러의 작동 방법과 이를 포함하는 장치들의 작동 방법들
US14/691,704 US9798498B2 (en) 2014-06-17 2015-04-21 Method of operating memory controller and methods for devices having the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140073433A KR102106261B1 (ko) 2014-06-17 2014-06-17 메모리 컨트롤러의 작동 방법과 이를 포함하는 장치들의 작동 방법들

Publications (2)

Publication Number Publication Date
KR20150144545A KR20150144545A (ko) 2015-12-28
KR102106261B1 true KR102106261B1 (ko) 2020-05-04

Family

ID=54836277

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140073433A KR102106261B1 (ko) 2014-06-17 2014-06-17 메모리 컨트롤러의 작동 방법과 이를 포함하는 장치들의 작동 방법들

Country Status (2)

Country Link
US (1) US9798498B2 (ko)
KR (1) KR102106261B1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10579560B2 (en) * 2016-08-31 2020-03-03 Futurewei Technologies, Inc. Transaction-based hybrid memory
US10983711B2 (en) * 2018-01-04 2021-04-20 Montage Technology Co., Ltd. Memory controller, method for performing access control to memory module
US10936212B2 (en) * 2018-01-04 2021-03-02 Montage Technology Co., Ltd. Memory controller, method for performing access control to memory module
CN110660421B (zh) * 2018-06-29 2021-11-23 上海磁宇信息科技有限公司 一种带纠错和压缩电路的磁性随机存储器
KR101952827B1 (ko) 2018-06-29 2019-02-27 주식회사 맴레이 메모리 제어 장치 및 이를 포함하는 메모리 시스템
KR102520412B1 (ko) * 2018-09-19 2023-04-12 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
JP7143232B2 (ja) * 2019-01-29 2022-09-28 キオクシア株式会社 メモリシステムおよび制御方法
US11341063B2 (en) * 2019-01-31 2022-05-24 Dell Products L.P. Systems and methods for safely detecting indeterminate states of ranges in a self-encrypting storage resource

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870625A (en) 1995-12-11 1999-02-09 Industrial Technology Research Institute Non-blocking memory write/read mechanism by combining two pending commands write and read in buffer and executing the combined command in advance of other pending command
KR100336745B1 (ko) 1999-03-18 2002-05-13 박종섭 플래시 메모리의 라이트장치 및 방법
US8145844B2 (en) 2007-12-13 2012-03-27 Arm Limited Memory controller with write data cache and read data cache
US20160055084A1 (en) 2014-08-20 2016-02-25 The Florida International University Board Of Trustees Non-blocking writes to file data

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8281022B1 (en) 2000-06-30 2012-10-02 Emc Corporation Method and apparatus for implementing high-performance, scaleable data processing and storage systems
US6732236B2 (en) 2000-12-18 2004-05-04 Redback Networks Inc. Cache retry request queue
US7327674B2 (en) 2002-06-11 2008-02-05 Sun Microsystems, Inc. Prefetching techniques for network interfaces
US7173863B2 (en) 2004-03-08 2007-02-06 Sandisk Corporation Flash controller cache architecture
US7814280B2 (en) 2005-01-12 2010-10-12 Fulcrum Microsystems Inc. Shared-memory switch fabric architecture
US8407432B2 (en) 2005-06-30 2013-03-26 Intel Corporation Cache coherency sequencing implementation and adaptive LLC access priority control for CMP
US7676633B1 (en) 2007-01-31 2010-03-09 Network Appliance, Inc. Efficient non-blocking storage of data in a storage server victim cache
US8161223B1 (en) 2007-07-23 2012-04-17 Augmentix Corporation Method and system for a storage device
US8131935B2 (en) 2009-04-07 2012-03-06 International Business Machines Corporation Virtual barrier synchronization cache
US8407707B2 (en) 2009-05-18 2013-03-26 Lsi Corporation Task queuing in a network communications processor architecture
US9009391B2 (en) 2010-10-25 2015-04-14 Fastor Systems, Inc. Solid state drive architecture
CN102841865B (zh) 2011-06-24 2016-02-10 上海芯豪微电子有限公司 高性能缓存系统和方法
GB2493191A (en) 2011-07-28 2013-01-30 St Microelectronics Res & Dev Cache arrangement with data pre-fetching requests having different quality of services
US9081665B2 (en) 2012-02-02 2015-07-14 OCZ Storage Solutions Inc. Apparatus, methods and architecture to increase write performance and endurance of non-volatile solid state memory components
US8959290B2 (en) 2012-02-21 2015-02-17 Lsi Corporation Methods and apparatus for reusing snoop responses and data phase results in a cache controller

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870625A (en) 1995-12-11 1999-02-09 Industrial Technology Research Institute Non-blocking memory write/read mechanism by combining two pending commands write and read in buffer and executing the combined command in advance of other pending command
KR100336745B1 (ko) 1999-03-18 2002-05-13 박종섭 플래시 메모리의 라이트장치 및 방법
US8145844B2 (en) 2007-12-13 2012-03-27 Arm Limited Memory controller with write data cache and read data cache
US20160055084A1 (en) 2014-08-20 2016-02-25 The Florida International University Board Of Trustees Non-blocking writes to file data

Also Published As

Publication number Publication date
US20150363338A1 (en) 2015-12-17
KR20150144545A (ko) 2015-12-28
US9798498B2 (en) 2017-10-24

Similar Documents

Publication Publication Date Title
KR102106261B1 (ko) 메모리 컨트롤러의 작동 방법과 이를 포함하는 장치들의 작동 방법들
US10289304B2 (en) Physical address management in solid state memory by tracking pending reads therefrom
KR102518095B1 (ko) 스토리지 장치 및 시스템
KR102147993B1 (ko) 불휘발성 메모리 시스템 및 그것의 동작 방법
CN107621959B (zh) 电子装置及其软件训练方法、计算系统
KR101379524B1 (ko) 디스플레이 파이프 내에서의 스트리밍 변환
US9396141B2 (en) Memory system and information processing device by which data is written and read in response to commands from a host
KR102258126B1 (ko) 메모리 컨트롤러의 작동 방법, 이를 포함하는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템
US10198357B2 (en) Coherent interconnect for managing snoop operation and data processing apparatus including the same
US10467138B2 (en) Caching policies for processing units on multiple sockets
US20180018095A1 (en) Method of operating storage device and method of operating data processing system including the device
US20190042153A1 (en) Mass storage device capable of fine grained read and/or write operations
TWI626540B (zh) 一般及垃圾回收的資料存取方法以及使用該方法的裝置
TWI655642B (zh) 具有繞回性至連續性讀取之記憶體子系統
US9904622B2 (en) Control method for non-volatile memory and associated computer system
US20240086113A1 (en) Synchronous write method and device, storage system and electronic device
KR20150041873A (ko) 데이터 처리 시스템
CN114610654A (zh) 一种固态存储设备以及向其写入数据的方法
US20170153994A1 (en) Mass storage region with ram-disk access and dma access
KR101477776B1 (ko) 플래시 메모리에서의 페이지 교체 방법
KR102275706B1 (ko) 데이터 저장 장치의 작동 방법과 이를 포함하는 데이터 처리 시스템의 작동 방법
US20230409495A1 (en) Storage device, operation method of the storage device, and electronic system including the storage device
US20190310776A1 (en) Mass storage system having peer-to-peer data movements between a cache and a backend store
CN114356790A (zh) 用于间接寻址的系统、设备和方法
TW201348963A (zh) 外接儲存裝置加速器及其方法

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right