KR101752583B1 - 트레이닝, 데이터 조직, 및/또는 섀도잉을 포함하는 메모리 시스템들 및 방법들 - Google Patents

트레이닝, 데이터 조직, 및/또는 섀도잉을 포함하는 메모리 시스템들 및 방법들 Download PDF

Info

Publication number
KR101752583B1
KR101752583B1 KR1020157028342A KR20157028342A KR101752583B1 KR 101752583 B1 KR101752583 B1 KR 101752583B1 KR 1020157028342 A KR1020157028342 A KR 1020157028342A KR 20157028342 A KR20157028342 A KR 20157028342A KR 101752583 B1 KR101752583 B1 KR 101752583B1
Authority
KR
South Korea
Prior art keywords
data
memory
memory device
type
controller
Prior art date
Application number
KR1020157028342A
Other languages
English (en)
Other versions
KR20150128924A (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 KR20150128924A publication Critical patent/KR20150128924A/ko
Application granted granted Critical
Publication of KR101752583B1 publication Critical patent/KR101752583B1/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices

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)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)

Abstract

설명된 실시예들은 제1 메모리 디바이스(예를 들어 NAND 플래시 디바이스)에 저장되는 어떤 데이터를 제2 메모리 디바이스(예를 들어 DRAM 디바이스)로 섀도잉할 수 있는 메모리 시스템들을 포함한다. 메모리 시스템들은 섀도잉될 데이터의 선택을 용이하게 하기 위해 저장된 데이터를 트레이닝하고/하거나 재조직할 수 있다. 메모리 커맨드들에 대한 초기 응답들은 제1 메모리 디바이스로부터 서비스될 수 있으며, 이는 제2 메모리 디바이스보다 더 낮은 레이턴시를 가질 수 있다. 나머지 데이터는 제2 메모리 디바이스로부터 서비스될 수 있다. 컨트롤러는 초기 응답이 제1 메모리 디바이스로부터 제공되고 있는 동안에 나머지 데이터에 액세스하기 시작할 수 있으며, 이는 제2 메모리 디바이스와 연관되는 외견상 레이턴시를 감소시킬 수 있다.

Description

트레이닝, 데이터 조직, 및/또는 섀도잉을 포함하는 메모리 시스템들 및 방법들{MEMORY SYSTEMS AND METHODS INCLUDING TRAINING, DATA ORGANIZING, AND/OR SHADOWING}
본 발명의 실시예들은 일반적으로 반도체 메모리에 관한 것이고, DRAM 메모리 내의 NAND 기반 플래시 메모리로부터 일부 데이터를 섀도잉할 수 있는 메모리 시스템들의 예들이 설명된다.
플래시 메모리 셀들을 갖는 전기 소거가능 프로그램가능 메모리 디바이스들은 매우 다양한 전기 디바이스들에서 발견된다. 또한 부동 게이트 트랜지스터 메모리 셀로 공지되는 예시적 플래시 메모리 셀은 중간 채널 영역을 형성하기 위해 소스 영역 및 소스 영역으로부터 이격되는 드레인 영역을 갖는, 전계 효과 트랜지스터와 유사할 수 있다. 도핑된 폴리실리콘으로 제조될 수 있는 부동 게이트는 채널 영역 위에 배치될 수 있고 게이트 산화물의 층에 의해 채널 영역으로부터 전기적으로 절연될 수 있다. 제어 게이트는 부동 게이트 위에 제조될 수 있고, 그것은 또한 도핑된 폴리실리콘으로 제조될 수 있다. 제어 게이트는 유전체 층에 의해 부동 게이트로부터 전기적으로 분리될 수 있다. 따라서, 부동 게이트는 그것이 플래시 메모리 셀의 채널, 제어 게이트 및 모든 다른 구성요소들로부터 절연될 수 있다는 의미에서 "부동" 이다.
예시적 플래시 메모리 셀은 전하를 부동 게이트 상에 저장함으로써 프로그램될 수 있다. 그 후에, 전하는 전력이 플래시 메모리 셀로부터 제거된 후에도 무한 기간 동안에 게이트 상에 잔존할 수 있다. 따라서, 플래시 메모리 셀들은 비휘발성으로 언급될 수 있다. 전하는 적절한 전압들을 제어 게이트 및 드레인 또는 소스에 인가함으로써 부동 게이트 상에 저장될 수 있다. 예를 들어, 음전하는 전자들을 끌어당기기 위해 충분히 큰 양 전압을 제어 게이트에 인가하는 동안에 소스를 접지시킴으로써 부동 게이트 상에 배치될 수 있으며, 이는 채널 영역으로부터 부동 게이트로 게이트 산화물을 터널링한다. 부동 게이트 상에 원래 상주하는 전하뿐만 아니라 프로그래밍 전압으로 칭해지는 제어 게이트에 인가되는 전압, 및 프로그래밍 전압이 인가되는 지속 기간은 프로그래밍 후에 부동 게이트 상에 상주하는 전하의 양을 결정한다.
예시적 플래시 메모리 셀은 임계 전압보다 더 큰 크기를 갖는 양의 제어 게이트-소스 전압을 인가시킴으로써 판독될 수 있다. 플래시 메모리 셀 상에 저장되는 전하의 양은 플래시 메모리 셀이 소스와 드레인 사이에 전류를 전도하는 것을 허용하기 위해 제어 게이트에 인가되어야 하는 임계 전압의 크기를 결정할 수 있다. 음전하가 부동 게이트에 추가됨에 따라, 플래시 메모리 셀의 임계 전압은 증가한다. 판독 동작 동안에, 불충분한 전하가 부동 게이트 상에 저장되면 셀을 전도성으로 하기에 충분히 크지만, 충분한 전하가 부동 게이트 상에 저장되면 셀을 전도성으로 하기에 충분히 크지 않은 판독 전압은 제어 게이트에 인가될 수 있다. 판독 동작 동안에, 셀의 출력 단자로 사용되는 드레인은 양 전압으로 미리 충전될 수 있고, 소스는 접지에 결합될 수 있다. 따라서, 플래시 메모리 셀의 부동 게이트가 충분히 충전되면, 드레인은 양 전압에서 잔존할 것이다. 플래시 메모리 셀의 부동 게이트가 충분히 충전되지 않으면, 셀은 드레인을 접지할 것이다.
플래시 메모리 셀이 프로그램될 수 있기 전에, 그것은 부동 게이트로부터 전하를 제거함으로써 일부 경우들에서 소거되어야 한다. 셀은 게이트-소스 전압을 프로그래밍을 위해 사용되는 반대 극성을 갖는 셀에 인가함으로써 소거될 수 있다. 구체적으로, 제어 게이트는 접지될 수 있고, 큰 양 전압은 전자들이 게이트 산화물을 터널링하고 부동 게이트로부터 전하를 공핍시키게 하기 위해 소스에 인가된다. 다른 접근법에서, 비교적 큰 음 전압은 제어 게이트에 인가되고, 공급 전압과 같은 양 전압은 소스 영역에 인가된다.
전형적인 플래시 메모리 디바이스는 다수의 플래시 메모리 셀들을 포함하며, 이는 행들 및 열들로 배열될 수 있다. 2개의 공통 타입들의 플래시 메모리 어레이 아키텍처들은 소위 각각의 기본 플래시 메모리 셀 구성이 배열되는 논리 형태에 대해, "NAND" 및 "NOR" 아키텍처들이다. NOR 플래시는 일반적으로 NOR 게이트의 역할을 할 수 있으며 - 예를 들어 워드 라인이 하이일 때, 대응하는 트랜지스터는 출력 비트 라인을 로우로 풀링하는 역할을 할 수 있다. NAND 플래시는 일반적으로 NAND 게이트와 유사한 방식으로 연결되는 부동 게이트 트랜지스터들을 포함할 수 있으며 - 예를 들어 수개의 트랜지스터들은 직렬도 연결될 수 있고, 모든 워드 라인들이 하이일 때에만 비트 라인은 로우로 풀링될 수 있다.
일반적으로, NOR 플래시 메모리는 NAND 플래시 메모리보다 더 빠른 판독 응답을 제공할 수 있다. 더욱이, NAND 플래시 메모리는 메모리를 재생하고 불량 블록들을 수리하기 위해 하우스키핑 프로세스들을 요구할 수 있다.
도 1은 본 발명의 일 실시예에 따른 시스템의 개략적 예시이다.
도 2는 본 발명의 일 실시예에 따른 메모리 커맨드를 서비스하는 예시적 방법을 예시하는 흐름도이다.
도 3은 본 발명의 일 실시예에 따른 NAND 플래시 디바이스들로부터 DRAM 디바이스들로의 섀도잉 데이터를 위한 예시적 방법의 흐름도이다.
도 4는 본 발명의 일 실시예에 따른 논리 어드레스 공간의 적어도 일부의 표현이다.
도 5는 본 발명의 일 실시예에 따른 NAND 플래시 디바이스 상의 물리 어드레스 공간의 적어도 일부의 표현이다.
도 6은 본 발명의 일 실시예에 따른 매핑 테이블의 개략적 예시이다.
도 7은 본 발명의 일 실시예에 따라 배열되는 NAND 플래시 및 DRAM 어드레스 공간들의 개략적 예시이다.
어떤 상세들은 본 발명의 실시예들의 충분한 이해를 제공하기 위해 아래에 진술된다. 그러나, 본 발명의 실시예들은 여러가지의 이러한 특정 상세들 없이 실시될 수 있다는 점이 당해 기술에서 통상의 기술자에게 분명할 것이다. 일부 경우들에서, 공지된 회로들, 제어 신호들, 타이밍 프로토콜들, 및 소프트웨어 동작들은 본 발명의 설명된 실시예들의 불필요한 모호함을 회피하기 위해 상세히 도시되지 않았다.
많은 현재의 시스템들은 작은 레이턴시를 필요로 하는 응용들에서 NOR 플래시 및 마스킹된 ROM 메모리를 현재 이용한다. 그러한 응용들은 비디오 및/또는 이미지들에 대응하는 저장된 데이터에 매우 랜덤한 갑작스러운 액세스들을 필요로 할 수 있는 갬블링 기계들의 동작을 포함하지만, 이에 제한되지 않는다. NAND 플래시는 일반적으로 그것의 낮은 비용으로 인해 바람직할 수 있지만, NAND 플래시와 연관되는 비교적 더 높은 레이턴시는 일부 예들에서 금지될 수 있다. 더욱이, NAND 플래시는 하우스키핑 동작들이 예측불가능한 시간들에 수행되는 것을 필요로 할 수 있으며, 이는 또한 일부 응용들에서 바람직하지 않을 수 있는 데이터 검색 동안 수초까지의 대기를 야기할 수 있다. 따라서, 본 발명의 실시예들은 일부 응용들에 대한 레이턴시 성능을 개선할 수 있는 방식으로 NAND 플래시 및 DRAM 메모리 둘 다를 이용하는 메모리 아키텍처들을 제공한다. 예를 들어, DRAM 메모리에 저장되는 어떤 데이터는 NAND 플래시 메모리에 저장될 수 있다. 일부 예들에서, 하우스키핑 동작들은 메모리 시스템의 파워 업 동작 후에만 수행될 수 있다.
NAND 플래시 및 DRAM 메모리가 본 명세서에서 예시적 시스템들을 설명하기 위해 사용되지만, 다른 예들에서 다른 타입들의 메모리가 사용될 수 있다. 일반적으로, 본 발명의 실시예들은 일 타입의 메모리와 연관되는 유효 레이턴시를 개선하기 위해 사용될 수 있다. 따라서, 한 세트의 메모리 디바이스들(예를 들어 NAND 플래시)로부터의 데이터의 부분들은 일반적으로 제1 세트의 메모리 디바이스들보다 더 낮은 레이턴시를 갖는 다른 세트의 메모리 디바이스들(예를 들어 DRAM)로 섀도잉될 수 있다. 데이터의 섀도잉된 부분은 호스트에 제공될 수 있는 반면 나머지 데이터는 더 높은 레이턴시 메모리 디바이스들(예를 들어 NAND 플래시)로부터 검색된다.
특정 응용들의 예들, 예를 들어 갬블링은 본 명세서에서 예로 설명된다. 본 명세서에 설명되는 실시예들은 카메라들, 전화들, 무선 디바이스들, 디스플레이들, 칩 셋들, 셋톱 박스들, 게임 시스템들, 차량들, 및 기기들을 포함하지만, 이들에 제한되지 않은 다양한 응용들 중 어느 것에 사용될 수 있다는 점이 이해되어야 한다.
도 1은 본 발명의 일 실시예에 따른 시스템의 개략적 예시이다. 시스템(100)은 인터페이스(109)를 통해 메모리 시스템(107)과 통신할 수 있는 프로세서 기반 시스템(105)을 포함할 수 있다. 인터페이스(109)는 예를 들어 SATA 인터페이스 또는 다른 메모리 시스템 인터페이스를 사용하여 구현될 수 있다. 프로세서 기반 시스템(105)은 위에 설명된 바와 같이, 데스크톱, 랩톱, 및 태블릿 컴퓨터들을 포함하는 컴퓨터들, 갬블링 기계들, 카메라들, 전화들, 무선 디바이스들, 디스플레이들, 칩 셋들, 셋톱 박스들, 게임 시스템들, 차량들, 및 기기들을 포함하지만, 이들에 제한되지 않는, 하나 이상의 전자 디바이스들을 포함할 수 있다.
메모리 시스템(107)은 컨트롤러(111)를 포함할 수 있다. 컨트롤러(111)는 하나 이상의 NAND 플래시 디바이스들(115)과의 통신을 위한 인터페이스(113)에 결합될 수 있다. 인터페이스(113)는 예를 들어 버스 또는 다른 전자 통신 전선관을 사용하여 구현될 수 있고 데이터는 DDR 프로토콜과 같지만, 이에 제한되지 않는, NAND 플래시 디바이스들(115)과 호환될 수 있는 방식으로 인터페이스(113)를 통해 통신될 수 있다. 컨트롤러(111)는 하나 이상의 DRAM 디바이스들(125)과의 통신을 위한 인터페이스(121)에 더 결합될 수 있다.
일반적으로, 하나 이상의 NAND 플래시 디바이스들을 포함하는, 임의의 수의 NAND 플래시 디바이스들(115)이 사용될 수 있다. 8개의 NAND 플래시 디바이스들(115a-h)이 도 1에 도시된다. 더욱이, 하나 더의 DRAM 디바이스를 포함하는, 임의의 수의 DRAM 디바이스들(125)이 사용될 수 있다. 4개의 DRAM 디바이스들(125a-d)은 예로서 도 1에 도시된다. NAND 플래시 디바이스들(115)은 일반적으로 프로세서 기반 시스템(105)에 의한 사용을 위해 데이터를 저장하기 위해 사용될 수 있다. 데이터는 예를 들어 이미지 또는 비디오 데이터를 포함할 수 있다. NAND 플래시 디바이스들(115) 상에 저장되는 데이터의 일부는 DRAM 디바이스들(125) 위로 섀도잉될 수 있다. 일부 예들에서, NAND 플래시 디바이스들(115) 상에 저장되는 데이터의 일부들은 또한 DRAM 디바이스들(125) 상에 저장된다. 매핑 테이블(131)은 어느 데이터가 NAND 플래시 디바이스들(115)로부터 DRAM 디바이스들(215)에서 섀도잉되는지를 표시하기 위해 DRAM 디바이스들(125) 중 하나 이상에 저장될 수 있다. 이러한 방식으로, 프로세서 기반 시스템(105)이 어떤 데이터에 액세스하도록 시도할 때, 일부 예들에서, 데이터는 DRAM 디바이스들(125)로부터 액세스될 수 있고, 나머지 데이터는 데이터가 DRAM 디바이스들(125)로부터 액세스되고 있는 시간 동안에 적어도 부분적으로 NAND 플래시 디바이스들(115)로부터 액세스될 수 있다. 따라서, 요청된 데이터의 초기 부분이 DRAM 디바이스들(125)로부터 판독되는 시간만큼, NAND 플래시 디바이스들(115) 상에서 나머지 데이터에 액세스할 시의 레이턴시가 끝날 수 있고, NAND 플래시 디바이스들(115)로부터 판독되는 나머지 데이터는 프로세서 기반 시스템(105)에 의한 사용을 위해 준비될 수 있다. 이러한 방식으로, DRAM 디바이스들(125) 상의 데이터 섀도잉은 NAND 플래시 디바이스(115)와 연관되는 판독 레이턴시를 마스킹할 수 있다.
임의의 수의 채널들을 포함하는, 도 1의 인터페이스들(113 및 121)을 통한 통신은 임의의 방식으로 배열될 수 있다. 도 1의 예에서, 인터페이스(113)는 4개의 채널 NAND 인터페이스를 사용하여 구현될 수 있다. 8개의 NAND 디바이스들(115a-h)은 2개의 NAND 디바이스들(예를 들어 다이들)이 각각의 채널을 통해 액세스가능하도록 배열될 수 있다. 다른 예들에서, 채널 당 다른 수들의 채널들 및/또는 디바이스들이 사용될 수 있다. 도 1의 예에서, 인터페이스(121)는 또한 채널 당 2개의 디바이스들(예를 들어 다이들)을 사용하여 구현될 수 있고, 인터페이스(121)는 2개의 채널들을 지원할 수 있다.
도 2는 본 발명의 일 실시예에 따른 메모리 커맨드(예를 들어 판독 커맨드)를 서비스하는 예시적 방법을 예시하는 흐름도이다. 블록(202)에서, 메모리 커맨드가 수신될 수 있다. 도 1을 다시 참조하면, 메모리 커맨드는 컨트롤러(111)에 의해 프로세서 기반 시스템(105)으로부터 수신될 수 있다. 메모리 커맨드에 응답하여, 도 2를 다시 참조하면, 초기 데이터 청크는 블록(204)에서 DRAM 디바이스로부터 판독될 수 있다. 예를 들어, 도 1의 컨트롤러(111)는 DRAM 디바이스들(125) 중 하나 이상으로부터 메모리 커맨드로 요청되는 데이터에 대응하는 초기 데이터 청크를 판독할 수 있다. DRAM에 저장되는 초기 데이터 청크의 크기는 상이한 실시예들에서 변할 수 있지만, 일반적으로 크기는 초기 데이터 청크가 프로세서 기반 시스템에 제공되는 시간만큼, 다음 데이터 청크가 허용가능 레이턴시를 갖는 NAND 디바이스들에서 도달할 수 있도록, 예를 들어 초기 데이터 청크가 그러한 프로세서 기반 시스템(예를 들어 호스트)에 제공되었다면 다음 데이터 청크가 프로세서 기반 시스템로의 제공을 위해 준비될 수 있도록 충분히 크게 선택된다.
초기 데이터 청크는 블록(206)에서 프로세서 기반 시스템(예를 들어 호스트)에 제공될 수 있다. 초기 데이터 청크가 데이터를 요청하는 프로세서 기반 시스템에 제공되고 있는 시간의 적어도 일부 동안에, 다음 데이터 청크는 블록(208)에서 하나 이상의 NAND 디바이스들에서 액세스되고 있을 수 있다. 다음 데이터 청크는 블록들(204 및/또는 206)이 수행되고 있는 시간 동안에 완전히 액세스되지 않을 수 있지만, 다음 데이터 청크는 그러한 시간 동안에 적어도 액세스되고 있을 수 있다. 따라서, 하나 이상의 NAND 디바이스들로부터 다음 데이터 청크에 액세스하는 것은 초기 데이터 청크가 블록(206)에서 호스트에 제공되고 있는 시간의 적어도 일부 동안에 및/또는 초기 데이터 청크가 블록(204)에서 하나 이상의 DRAM 디바이스들로부터 판독되고 있는 시간의 적어도 일부 동안에 발생할 수 있다. 이러한 방식으로, 하나 이상의 NAND 디바이스들에 액세스하는 것과 연관되는 레이턴시는 적어도 부분적인 동시 판독 및/또는 요청 프로세서 기반 시스템에 초기 데이터 청크의 제공에 의해 적어도 부분적으로 마스킹될 수 있다. 다음 데이터 청크는 블록(210)에서 호스트에 제공될 수 있다. 도 2에 도시되지 않지만, 블록들(208 및 210)은 메모리 커맨드가 서비스되었을 때까지 반복될 수 있다. 예를 들어, 추가 데이터 청크는 다음 데이터 청크가 블록(208)에서 하나 이상의 NAND 디바이스들에서 액세스되고 있었던 시간의 일부 동안에 및/또는 다음 데이터 청크가 블록(210)에서 호스트에 제공된 시간의 일부 동안에 하나 이상의 NAND 디바이스들로부터 판독될 수 있다. 다음 데이터 청크가 블록(210)의 끝에서 호스트에 제공되었던 시간만큼, 이 때 추가 데이터 청크는 호스트로의 제공을 위해 준비될 수 있다.
도 1을 참조하면, 시스템(100)은 도 2에 도시된 프로세스를 구현할 수 있으며, 예를 들어 컨트롤러(111)는 DRAM 디바이스들(125) 중 하나 이상으로부터 초기 데이터 청크를 판독하고 초기 데이터 청크를 시스템(105)에 제공할 수 있다. 컨트롤러(111)가 초기 데이터 청크를 판독하고 있고/있거나 초기 데이터 청크를 시스템(105)에 제공하고 있는 시간의 적어도 일부 동안에, 컨트롤러(111)는 NAND 디바이스들(115) 중 하나 이상으로부터 다음 데이터 청크를 판독할 수 있다. 컨트롤러(111)는 프로세서 기반 시스템(105)이 제1 데이터 청크를 수신했을 때, 다음 데이터 청크가 허용가능 양을 갖는, 예를 들어 추가 레이턴시를 갖지 않는 프로세서 기반 시스템(105)으로의 제공을 위해 준비되도록 이러한 활동들을 타이밍할 수 있다.
도 1의 시스템의 구현의 일 예에서, 프로세서 기반 시스템(105)은 일 예에서 지정된 처리량, 즉 400MB/s 이상의 메모리 시스템(107)의 처리량을 필요로 할 수 있다. 위에 설명된 바와 같이, 데이터는 청크들에서 DRAM 디바이스들(125) 및/또는 NAND 플래시 디바이스들(115)로부터 판독될 수 있다. 청크들은 일 예에서 특정 크기, 예를 들어 128kB를 가질 수 있다. 이러한 대표적인 수들을 사용하면, 메모리 시스템(107)은 128kB 청크를 프로세서 기반 시스템(105)에 320㎲ 내에서 제공할 수 있어야 한다. 제1 청크(예를 들어 128kB)가 DRAM에 위치되면, 메모리 커맨드를 분석하고, 데이터를 처리하고, 판독하고, 프로세서 기반 시스템(105)에 대한 응답을 시작하기 위해 컨트롤러(111)에 대한 시간(Tr)은 최소일 수 있다. 요청된 데이터에 액세스하는 것으로부터 외견상 레이턴시를 최소화하기 위해, 컨트롤러(111)는 다음 128kB 청크를 NAND 플래시로부터 320㎲ - Tr 내에서 판독할 수 있어야 한다. Tr은 일 예에서 10㎲ 미만일 수 있다. 따라서, 컨트롤러(111)는 그것이 DRAM으로부터 제1 데이터 청크에 액세스하고 있는 것과 거의 동일한 시간에 그것이 NAND 플래시 데이터 청크에 액세스하고 있으면 프로세서 기반 시스템으로의 제공을 위해 다음 128kB 데이터 청크를 준비하기 위해 310㎲ 초과를 가질 수 있다. 이러한 타이밍은 예를 들어 일 예에서 4 채널 SSD 컨트롤러 및 16kB/페이지 SLC NAND 메모리 제품에 의해 충족될 수 있으며, 이는 32kB/채널의 판독을 달성하고 ECC 정정을 그러한 채널들 상에서 필요한 310㎲ 내에서 완료가능할 수 있다.
따라서, 본 발명의 실시예들은 액세스될 데이터의 나머지가 NAND 플래시 디바이스들에 저장될 수 있는 동안 DRAM 디바이스들에서 액세스될 데이터의 제1 부분(예를 들어 청크)을 섀도잉할 수 있는 것이 유리하다. 유리하게, 본 명세서에 설명되는 메모리 시스템들의 실시예들은 DRAM 디바이스들 중 하나 이상에 그룹으로 일반적으로 액세스되는 데이터의 제1 데이터 청크들을 저장할 수 있다. 예를 들어, 파일(예를 들어 비디오, 이미지, 문서, 프로그램 등)의 제1 데이터 청크는 DRAM에 저장될 수 있는 반면 파일의 나머지 데이터는 NAND 플래시에 저장될 수 있다. 이러한 방식으로, 도 1의 프로세서 기반 시스템(105)이 메모리 커맨드를 메모리 시스템(107)에 제공할 때, 메모리 커맨드에 대응하는 제1 데이터 청크는 DRAM에서 발견될 수 있는 반면 나머지 데이터는 NAND 플래시에서 발견될 수 있다.
본 명세서에 설명되는 예들은 데이터에 대해 액세스될 데이터의 제1 부분(예를 들어 하나의 청크)이 DRAM 디바이스들에서 섀도잉될 수 있는 예들을 포함하지만, 다른 예들에서 데이터의 다른 부분들(예를 들어 다수의 초기 데이터 청크들)이 섀도잉될 수 있다. 일반적으로, 섀도잉되는 데이터가 더 많아질수록, 효과적으로 숨겨질 수 있는 NAND 플래시 디바이스들의 레이턴시가 더 길어지지만, 섀도잉된 데이터를 위해 DRAM에서 요구될 수 있는 저장의 양이 더 커진다.
섀도잉이 어떻게 구현될 수 있는지의 예들은 본 명세서에 더 설명될 수 있다. 도 3은 본 발명의 일 실시예에 따른 NAND 플래시 디바이스들로부터 DRAM 디바이스들로의 섀도잉 데이터를 위한 예시적 방법의 흐름도이며, 일반적으로 NAND 플래시 디바이스에서 액세스될 데이터의 개시 어드레스들 및 길이들을 인식하는 것이 바람직할 수 있다. 판독 전용 시스템들(예를 들어 갬블링 기계들)에서, 데이터는 메모리 시스템으로 미리 프로그램될 수 있고 동작 동안에 변화되지 않을 수 있다. 따라서, 일부 실시예들에서, 액세스될 데이터의 위치 및 길이(예를 들어 개별 파일들의 데이터의 개시 어드레스 및 길이)는 시간 전에 인식될 수 있고, 개시 어드레스들 및 길이들의 데이터 구조는 메모리 시스템에 제공되거나 그것 내에 저장될 수 있다. 예를 들어, 그러한 데이터 구조는 도 1의 NAND 플래시 디바이스들(115) 또는 도 1의 DRAM 디바이스들(125) 중 하나 이상에 저장될 수 있다. 개시 어드레스들 및 길이들의 데이터 구조는 예를 들어 리스트로 구현될 수 있다. 다른 데이터 구조들이 또한 사용될 수 있지만, 개시 어드레스들 및 길이들의 데이터 구조는 "리스트"로 참조될 것이다.
공지된 개시 어드레스들 및 길이들의 리스트는 도 3의 블록(304)에서 액세스될 수 있고 DRAM 디바이스들에 섀도잉될 공지된 개시 어드레스들에 대응하는 데이터의 청크들을 식별하기 위해 사용될 수 있다. 일부 예들에서, 도 1의 시스템(107)과 같은, 메모리 시스템은 NAND 플래시 디바이스들에서 액세스될 데이터의 위치 및 길이 자체를 식별하기 위해, 도 3의 블록(302)에서 트레이닝될 수 있다. 블록(302)의 트레이닝 동안에, 메모리 컨트롤러(예를 들어 도 1의 컨트롤러(111))는 호스트(예를 들어 도 1의 프로세서 기반 시스템(105))로부터 수신되는 메모리 커맨드들의 어드레스들을 로그할 수 있다. 어드레스들의 리스트를 분석함으로써, 컨트롤러는 도 3의 블록(304)에서 액세스될 데이터의 공지된 개시 어드레스들 및 길이들의 리스트를 자체로 생성할 수 있다. 다른 예들에서, 블록(302)의 트레이닝은 메모리 시스템 내의 NAND 플래시 디바이스들의 콘텐츠의 다른 분석을 통해 구현될 수 있다. 예를 들어, 프로세서 기반 시스템으로부터의 메모리 커맨드로 요청될 수 있는 데이터 그룹화의 개시를 나타내는 헤더들 또는 다른 데이터 스트링들은 데이터 그룹화의 길이와 함께 컨트롤러에 의해 식별될 수 있다. 일부 예들에서, 트레이닝은 예를 들어 프로세서 기반 시스템으로부터 메모리 컨트롤러로 제공되는 신호에 의해 표시될 수 있는 트레이닝 기간 동안에 발생할 수 있다.
블록(306)에서, 데이터가 재조직되고 매핑 테이블이 생성될 수 있다. 데이터는 DRAM 디바이스들에서 데이터의 섀도잉 부분들에 도움이 될 수 있는 방식으로 NAND 플래시 디바이스들 내의 저장을 위해 재조직될 수 있다. 생성된 매핑 테이블은 논리-물리 어드레스들의 맵을 포함할 수 있다. 논리 어드레스들은 예를 들어 도 1의 프로세서 기반 시스템(105)에 의해 지정되는 바와 같은 어드레스들일 수 있는 반면, 물리 어드레스들은 예를 들어 도 1의 컨트롤러(111)에 의해 이해되는 바와 같은 NAND 플래시 디바이스들에 대한 어드레스들일 수 있다. 2개의 타입들의 데이터 재조직이 발생할 수 있다. 일부 실시예들에서 하나의 타입만이 발생할 수 있고 다른 실시예들에서 둘 다가 발생할 수 있다. 일부 실시예들에서 다른 타입들의 데이터 재조직이 또한 발생할 수 있다.
제1 타입의 데이터 재조직은 데이터 청크의 크기 미만의 데이터에 대응하는 다수의 예상된 메모리 액세스들을 단일 데이터 청크로 함께 패킹할 수 있다. 일반적으로, 데이터 청크는 주어진 메모리 시스템 내의 NAND 플래시로부터 동시에 판독될 수 있는 데이터의 양을 언급한다. 도 1을 참조하면, 인터페이스(113)가 채널 당 2개의 다이 및 액세스될 수 있는 다이 당 2개의 페이지들을 갖는 4 채널들, 및 8 바이트의 페이지 크기를 지원하는 일 예에서, 데이터 청크 크기는 4x2x2x8 = 128kB일 수 있다.
일반적으로, 데이터 청크는 또한 슈퍼 페이지로 언급될 수 있다. 데이터 청크는 NAND 디바이스들의 유효 레이턴시를 숨기거나 감소시키기 위해 위에 설명되었던 바와 같이, 도 1의 NAND 플래시 디바이스들로부터 출력될 데이터 청크에 대한 시간이 DRAM으로부터 출력될 동일한 크기의 데이터 청크에 대한 시간 이하이도록 충분히 사이징되어야 한다.
NAND 디바이스로부터 DRAM 디바이스들로 섀도잉되는 데이터는 데이터 청크들에 저장될 수 있다. DRAM 디바이스들에서 섀도잉을 위해 요구되는 공간의 양을 감소시키기 위해, 데이터 청크의 크기 미만의 메모리 액세스들과 연관되는 데이터를 통합하는 것이 유리할 수 있다. 따라서, 도 3의 블록(306)에서 발생할 수 있는 재조직되는 제1 타입의 데이터는 데이터 청크 미만의 길이(예를 들어 일 예에서 128kB)를 갖는 데이터에 대응하는 논리 어드레스들을 동일한 데이터 청크에 매핑하는 것이다. 예를 들어, 블록(302)에서 발생되는 테이블은 64kB의 길이를 갖는 데이터에 대한 제1 논리 어드레스에서의 하나의 예상된 메모리 액세스 및 64kB의 길이를 갖는 제2 논리 어드레스에서의 데이터에 대한 제2 예상된 메모리 액세스를 포함할 수 있다. 제1 및 제2 논리 어드레스들 둘 다는 2개의 64kB 메모리 액세스들이 128kB 데이터 청크에 위치되도록 NAND 플래시 디바이스들의 동일한 데이터 청크에 매핑될 수 있다. 데이터 청크의 크기를 합계하는 데이터 액세스들의 임의의 조합은 단일 데이터 청크에 매핑될 수 있다. 예를 들어, 2개의 32kB 액세스들 및 64kB 액세스와 연관되는 데이터는 단일 데이터 청크에 재조직될 수 있다. 다른 예에서, 5개의 16kB 액세스들, 32 kB 액세스, 및 2개의 8kB 액세스들과 연관되는 데이터는 단일 데이터 청크에 재조직될 수 있다. 이러한 방식으로, 컨트롤러(111)는 데이터 청크 미만의 길이를 갖는 데이터에 대한 액세스들을 통합된 세트의 데이터 청크들로 매핑하기 위해 블록(302)에서 생성될 수 있는 개시 어드레스들 및 길이들의 리스트에 액세스할 수 있다. 아래에 더 설명되는 바와 같이, 통합된 데이터 청크들은 DRAM 디바이스들 중 하나 이상 상에 섀도잉될 수 있어, 데이터 청크 미만의 크기의 이러한 데이터에 대한 데이터 액세스들은 DRAM 디바이스들로부터 서비스될 수 있다.
도 4는 본 발명의 일 실시예에 따른 논리 어드레스 공간의 적어도 일부의 표현이다. 도 5는 본 발명의 일 실시예에 따른 NAND 플래시 디바이스 상의 물리 어드레스 공간의 적어도 일부의 표현이다. 도 4에 도시된 바와 같이, 프로세서 기반 시스템(예를 들어 도 1의 시스템(105))은 도시된 바와 같은 데이터(A, B, C, D, E, F, G, 또는 H)를 요청함으로써 데이터에 액세스할 수 있다. 그러나, 그러한 데이터는 논리 어드레스 공간에서 스프레드 아웃되고 크기가 데이터 청크 미만이다. 도 3의 데이터 재조직(306) 동안에, 데이터는 데이터(A, B, C, D, E, F, G, 및 H)가 단일 데이터 청크로 통합되는 도 5에 도시된 바와 같은 물리 어드레스 공간에 재조직될 수 있다.
블록(306)에서 발생할 수 있는 다른 타입의 데이터 재조직은 크기가 데이터 청크보다 더 큰(예를 들어 일부 예들에서 128kB보다 더 큰) 액세스들에 대응하는 데이터를 재정렬하는 것이다. 데이터 청크보다 더 큰 액세스에 대응하는 제1 어드레스 데이터가 데이터 청크와 정렬되면, 재조직이 발생하지 않을 수 있다. 그러나, 제1 어드레스가 데이터 청크 경계와 정렬되지 않으면, 제1 어드레스의 물리 어드레스는 데이터 청크 경계와 정렬하기 위해 시프트될 수 있고, 제1 어드레스와 물리 어드레스 사이의 결과적인 맵은 논리-물리 어드레스 테이블에 저장될 수 있다.
도 3의 블록(306)의 데이터 재조직은 예를 들어 도 1의 컨트롤러(111)에 의해 수행될 수 있다. 일부 예들에서, 컨트롤러(111)는 도 3의 블록(302)에서 생성되는 리스트와 같은, 액세스될 데이터의 메모리 액세스들 및 길이들에 대한 공지된 개시 어드레스들의 리스트에 액세스할 수 있다. 컨트롤러(111)는 액세스될 데이터가 데이터 청크의 크기 미만인 메모리 액세스들과 연관되는 데이터를 함께 통합할 수 있고, 액세스될 데이터가 데이터 청크의 크기보다 더 큰 메모리 액세스들과 연관되는 데이터를 데이터 청크와 정렬시킬 수 있다. 컨트롤러(111)는 재조직을 반영하는 논리-물리 매핑 테이블을 생성할 수 있다. 일부 예들에서, 데이터는 NAND 플래시 디바이스들(115) 중 하나 이상에 이미 저장되었고 재조직 프로세스에서 식별되는 것들에 대응하는 위치들로 이동될 수 있다. 다른 예들에서, 데이터는 블록(302)의 재조직 프로세스에서 식별되는 조직에 따라 컨트롤러(111)에 의해 NAND 플래시 디바이스들에 기록될 수 있다.
도 3의 블록(308)에서, 선택된 데이터는 NAND 플래시 디바이스들 중 하나 이상으로부터 하나 이상의 DRAM 디바이스들로 섀도잉될 수 있다. 예를 들어, 컨트롤러(111)는 선택된 데이터를 DRAM 디바이스들에 섀도잉할 수 있다. 섀도잉은 데이터가 NAND 플래시 디바이스들 중 하나 이상 및 DRAM 디바이스들 중 하나 이상 둘 다에 저장되도록 선택된 데이터를 NAND 플래시 디바이스들 중 하나 이상으로부터 DRAM 디바이스들 중 하나 이상으로 복사하는 것을 포함할 수 있다. 일반적으로, 블록(308)에서 선택된 데이터는 1) 데이터 청크 이하의 길이를 갖는 데이터에 대한 메모리 액세스들과 연관되는 DRAM 디바이스들 중 하나 이상 상의 데이터 청크들; 및/또는 2) 데이터 청크보다 더 큰 길이를 갖는 데이터에 대한 메모리 액세스들과 연관되는 제1 데이터 청크들을 포함할 수 있다. 이러한 방식으로, 데이터 청크 이하의 길이를 갖는 데이터에 대한 메모리 커맨드들은 일반적으로 DRAM 디바이스들 중 하나 이상으로부터 서비스될 수 있다. 게다가, 데이터 청크보다 더 큰 길이를 갖는 데이터에 대한 메모리 커맨드들은 DRAM 디바이스들 중 하나 이상으로부터 서비스되는 메모리 커맨드의 제1 부분 및 NAND 플래시 디바이스들 중 하나 이상으로부터 서비스되는 메모리 커맨드의 나머지를 가질 수 있다.
블록(308)의 섀도잉은 예를 들어 도 1의 컨트롤러(111)에 의해 수행될 수 있으며, 이는 블록(308)에서 데이터를 선택하고 섀도잉하기 위해 블록(302)에서 생성될 수 있는 공지된 개시 어드레스들 및 길이들의 리스트 및 블록(306)으로부터의 매핑 테이블에 액세스할 수 있다. 컨트롤러(111)는 아래에 더 설명되는 바와 같은 섀도잉을 반영하기 위해 매핑 테이블에서 엔트리들을 더 생신할 수 있다.
블록(308)의 섀도잉은 다양한 방식들로 수행될 수 있다. 일 예에서, 섀도잉은 예를 들어 도 1의 시스템(105)과 같은 프로세서 기반 시스템에 의해 공급될 수 있는 섀도잉을 나타내는 신호의 수신에 의해 개시될 수 있다. 그 다음, 컨트롤러는 섀도잉 시작을 나타내는 비지 신호를 호스트에 제공하고, 비지 신호를 제거하고/하거나 섀도잉이 완료되었던 것을 나타내는 상이한 신호를 호스트에 제공할 수 있다. 일부 예들에서, 호스트는 메모리 시스템이 파워 사이클(예를 들어 파워 온)을 경험하는 다음 시간까지 섀도잉을 나타내는 신호를 제공함으로써 섀도잉을 다시 트리거하지 않을 수 있다.
다른 예에서, 섀도잉은 트레이닝 동안에, 예를 들어 도 3의 블록(302)과 적어도 부분적으로 동시에 수행될 수 있다. 랜덤 액세스가 트레이닝 동안에 컨트롤러에 의해 수신될 때, 데이터의 관련 부분은 액세스와 연관되는 데이터가 아직 섀도잉되지 않았을 때 섀도잉될 수 있다.
도 6은 본 발명의 일 실시예에 따른 매핑 테이블의 개략적 예시이다. 매핑 테이블(600)은 예를 들어 도 3의 블록들(306 및/또는 308)에서 생성될 수 있다. 매핑 테이블(600)은 논리-물리 어드레스 맵(602) 및 물리-섀도우 어드레스 맵(604)을 포함한다. 논리-물리 어드레스 맵(602)은 위에 설명된 재조직 프로세스에 영향을 받을 수 있는 바와 같이, 논리 어드레스를 데이터가 위치될 수 있는 NAND 플래시 메모리 내의 물리 어드레스와 연관시킬 수 있다. 더욱이, 논리-물리 어드레스 맵(602)은 도 6에서 fS 플래그로 언급되는, 플래그를 포함할 수 있다. fS 플래그는 연관된 어드레스가 DRAM 메모리에서 섀도잉되는지의 여부를 표시할 수 있다. 일 예에서, fS 플래그는 길이가 1비트일 수 있으며, 0은 논리-물리 어드레스가 섀도잉되지 않은 것을 나타내고, 1은 어드레스가 섀도잉되는 것을 나타낸다. 일부 예들에서, 테이블(600)에 사용되는 어드레스들은 블록 어드레스들이다.
따라서, 도 3을 다시 참조하면, 데이터가 재조직화됨에 따라, 도 1의 컨트롤러(111)는 도 6의 매핑 테이블(600)에서 논리 및 물리 어드레스들 사이의 연관성들을 기록할 수 있다. 매핑 테이블(600)은 매핑 테이블(131)에 의해 도시되는 것과 같이, 도 1의 하나 이상의 DRAM 디바이스들(125)에 저장될 수 있거나, 도 1의 NAND 디바이스들(115) 중 하나 이상에 저장될 수 있다. 일부 실시예들에서, 매핑 테이블(600)은 DRAM 디바이스들(125) 및/또는 NAND 디바이스들(115)에 저장될 수 있다.
도 6의 매핑 테이블(600)은 물리 및 섀도우 어드레스들(604) 사이의 연관성들을 더 포함할 수 있다. NAND 플래시 내의 특정 물리 어드레스에 저장되는 데이터가 DRAM에 섀도잉되면, 매핑 테이블(600) 내의 fS 플래그는 섀도잉을 그렇게 표시할 수 있다. 더욱이, 섀도잉된 데이터의 연관된 어드레스는 매핑 테이블(600)에 저장될 수 있다.
더욱이, 물리-섀도우 어드레스 맵(604)은 도 6에서 fC 플래그로 언급되는, 플래그를 포함할 수 있다. fC 플래그는 다음 데이터 청크가 섀도우 메모리(예를 들어 DRAM) 또는 NAND 플래시 메모리에 위치되는지의 여부를 표시할 수 있다. 일 예에서, fC 플래그는 길이가 1비트일 수 있으며, 0은 이하의 데이터 청크가 NAND 플래시에 위치되는 것을 나타내고, 1은 이하의 데이터 청크가 섀도우 메모리(예를 들어 DRAM)에 위치되는 것을 나타낸다. 따라서, 예를 들어 논리 어드레스는 액세스될 메모리가 단일 데이터 청크 미만인 것으로 예상되는 물리 어드레스와 부합하면, 다음 메모리 커맨드는 또한 섀도우 메모리(예를 들어 DRAM)로부터 서비스될 수 있으므로, fC 플래그는 1에 설정될 수 있다. 논리 어드레스는 액세스될 메모리가 단일 데이터 청크보다 더 큰 것으로 예상되는 물리 어드레스와 부합하면, 제1 데이터 청크만이 섀도우 메모리에 위치될 수 있고, fC 플래그는 다음 데이터 청크가 NAND 플래시에 위치되는 것을 나타내는 0에 설정될 수 있다.
도 3을 다시 참조하면, 매핑 테이블(600)의 fS, fC, 및 섀도우 어드레스 부분들은 데이터가 DRAM에 섀도잉될 때 블록(308) 동안에 생성될 수 있다. 이러한 방식으로, 도 1의 컨트롤러(111)는 fS, fC, 및/또는 섀도우 어드레스 값들을 제공하고 그들을 DRAM, NAND 플래시, 또는 그것의 조합들에 저장되는 매핑 테이블에 저장할 수 있다. 논리-물리 어드레스 연관성들 및 물리-섀도우 어드레스 연관성들을 포함하는 매핑 테이블이 도 6에 도시되지만, 다른 예들에서 다수의 테이블들이 사용될 수 있다(예를 들어 하나는 논리-물리 어드레스들을 위한 것이고 다른 것은 물리-섀도우 어드레스 연관성들을 위한 것임). 다른 예들에서, 테이블들과 다른 데이터 구조들은 도 6에 도시되는 정보의 일부 도는 전부를 표현하기 위해 사용될 수 있다.
도 7은 본 발명의 일 실시예에 따라 배열되는 NAND 플래시 및 DRAM 어드레스 공간들의 개략적 예시이다. NAND 플래시 어드레스 공간(705)이 도시되며, 이는 도 1의 디바이스들(115)과 같은 하나 이상의 NAND 플래시 디바이스들 위에 스프레드될 수 있다. 어드레스 공간은 데이터 청크들(706-708)을 포함한다. 이러한 데이터 청크들은 본 명세서에 설명되는 데이터 재조직 프로세스 동안에 통합되었을 수 있는 데이터 청크의 크기 미만의 데이터를 포함하는 것으로 예시된다. 예를 들어, 데이터 청크(706)는 데이터의 2개의 64kB 세그먼트들을 포함할 수 있으며, 그것의 각각은 각각의 메모리 커맨드에 응답하는 것으로 예상된다. 유사하게, 데이터 청크(707)는 데이터의 2개의 32kB 세그먼트들 및 데이터의 하나의 64kB 세그먼트를 포함할 수 있으며, 그것의 각각은 또한 각각의 메모리 커맨드에 응답하는 것으로 예상된다. 데이터 청크(708)는 다섯 개의 16kB 세그먼트들, 두 개의 8kB 세그먼트들, 및 한 개의 32 kB 세그먼트를 포함할 수 있으며, 그것의 각각은 각각의 메모리 커맨드에 응답하는 것으로 예상된다. 데이터 청크들(706-708)에 도시되는 데이터 세그먼트들은 가장 작은 수의 가능한 데이터 청크들에 저장되도록 배열되었으며, 도 7에 도시되는 데이터 청크 크기는 128kB이다. 데이터 청크들(706-708) 내의 데이터가 데이터 청크의 크기 미만의 데이터에 대한 메모리 액세스들과 연관되기 때문에, 데이터 청크들(706-708)은 예를 들어 도 3의 블록(308)에서, 하나 이상의 DRAM 디바이스들에 섀도잉될 수 있다. 따라서, 도 7에서, 데이터 청크들(706-708)은 데이터 청크들(716, 717, 및 718)로서 DRAM 어드레스 공간(710)으로 섀도잉되었다.
본 명세서에 설명되었던 바와 같이, 도 1의 컨트롤러(111)는 도 7에 도시되고 도 3을 참조하여 설명되는 섀도잉을 수행할 수 있다. 컨트롤러(111)는 매핑 테이블, 예를 들어 도 6의 매핑 테이블(600)을 더 생성할 수 있다. 도 7을 다시 참조하면, 데이터 청크(706)가 데이터 청크(716)로서 DRAM에 섀도잉될 때, 이하는 매핑 테이블을 야기할 수 있다. 데이터 청크(706)를 구성하는 64kB 데이터 세그먼트들 각각의 논리 어드레스는 그러한 NAND 플래시 어드레스들을 정확한 논리 어드레스와 연관되는 매핑 테이블의 논리-물리 어드레스(602) 부분의 물리 어드레스 열에 저장함으로써 데이터 청크(706) 내의 각각의 어드레스들과 연관될 수 있다. 더욱이, 데이터 청크들(716 및 716) 내의 데이터 액세스들은 데이터 청크 이하인 것으로 예상되기 때문에, 데이터가 섀도잉되었으므로, DRAM 어드레스 공간(710) 내의 데이터 청크(716) 내의 데이터 세그먼트들의 대응하는 어드레스들은 물리-섀도우 어드레스 테이블(604)의 섀도우 어드레스 부분에 저장될 수 있다. 데이터는 섀도잉된 데이터이므로, 데이터에 대한 fS 플래그들은 데이터가 섀도잉되는 것을 표시하기 위해 (예를 들어 도 1의 메모리 컨트롤러(111)에 의해) 설정될 수 있다. 더욱이, 데이터 청크들(716-718) 내의 데이터는 데이터 청크의 크기 이하의 데이터에 대한 데이터 액세스들과 연관되기 때문에, 판독될 다음 데이터 청크는 (예를 들어 각각의 메모리 액세스의 제1 부분이 DRAM에 섀도잉 될 수 있기 때문에) 또한 DRAM 디바이스들에서 비롯될 것이며, 따라서 데이터 청크들(716-718) 내의 데이터에 대한 fC 플래그들은 다음 데이터 청크가 DRAM으로부터 판독될 수 있는 것을 표시하기 위해 (예를 들어 도 1의 메모리 컨트롤러(111)에 의해) 설정될 수 있다.
도 7을 다시 참조하면, 데이터 청크들(726-728)은 데이터 청크(예를 들어 3개의 데이터 청크들(726-728))보다 더 큰 데이터의 양에 대한 데이터 액세스에 대응할 수 있다. 위에 설명되었던 바와 같이, 데이터 청크들(726-728)은 데이터 청크 경계와 정렬되도록 재조직되고/되거나 다른 데이터 재조직을 수용하기 위해 이동될 수 있엇다. 따라서, 데이터 청크들(726-728)의 물리 어드레스는 관련 논리 어드레스들에 대응하는 도 6의 논리-물리 어드레스 테이블(602)에 저장될 수 있다. 데이터 액세스는 데이터 청크보다 더 큰 데이터의 양을 위한 것이기 때문에, 제1 데이터 청크만이 일부 예들에서 DRAM에 섀도잉될 수 있다. 따라서, 데이터 청크(726)는 데이터 청크(736)에서 DRAM에 섀도잉될 수 있다. 데이터 청크(726)에 대응하는 물리 어드레스에 대한 fS 플래그는 데이터 청크(726)가 섀도잉되는 것을 표시하기 위해 (예를 들어 컨트롤러(111)에 의해) 설정될 수 있다. 그러나, 데이터 청크들(727 및 728)에 대응하는 물리 어드레스에 대한 fS 플래그는 데이터 청크들(727 및 728)이 섀도잉되지 않은 것을 표시하기 위해 (예를 들어 컨트롤러(111)에 의해) 설정될 수 있다. DRAM 데이터 청크(736)에 대응하는 섀도우 어드레스는 물리-섀도우 어드레스 테이블(604)에 더 저장될 수 있다. 데이터 청크(736)는 데이터 청크보다 더 큰 데이터 액세스와 관련되기 때문에, fC 플래그는 다음 데이터 액세스가 NAND 플래시 디바이스들에서 비롯될 수 있는 것을 표시하기 위해 (예를 들어 컨트롤러(111)에 의해) 설정될 수 있다.
본 발명의 예들에서, 트레이닝, 데이터 재조직, 및 섀도잉은 그것의 예들이 도 3 내지 도 7을 참조하여 설명되었는데, 메모리 시스템의 파워 업 동안에, 메모리 시스템 분배 전에(예를 들어 제조 동안에), 또는 다른 계획된 시간들에 발생할 수 있다. 트레이닝, 데이터 재조직, 및/또는 섀도잉은 일부 예들에서 동작 동안에 동적으로 발생할 수 있지만, 동적 동작은 저장된 데이터에 액세스하는 것과 연관되는 레이턴시를 최소화하기를 원하는 응용들에서 유리하지 않을 수 있다.
도 1의 대표적인 메모리 시스템의 동작 동안에, 컨트롤러(111)는 도 3을 참조하여 설명된 바와 같은 파워 업 동안에 섀도잉을 수행할 수 있다. 컨트롤러(111)는 표시를 상태 레지스터에 저장하거나 섀도잉 동작들로 인해 메모리 시스템(107) 기능성의 일부 또는 전부의 비가용성을 나타내는 비지 신호를 프로세서 기반 시스템(105)에 제공할 수 있다. 섀도잉이 완료될 때, 컨트롤러(111)는 표시를 상태 레지스터에 저장하거나 메모리 시스템(107)의 가용성을 나타내는 신호를 프로세서 기반 시스템(105)에 제공할 수 있다.
프로세서 기반 시스템(105)으로부터 메모리 커맨드의 수신 시에, 컨트롤러(111)는 수신된 논리 어드레스에 대한 대응하는 물리 어드레스를 식별하기 위해 메모리 커맨드와 연관되는 논리 어드레스를 식별하고 매핑 테이블(예를 들어 도 6의 논리-물리 어드레스 테이블(602))에 액세스할 수 있다. 컨트롤러(111)는 논리/물리 어드레스 쌍에 대응하는 fS 플래그에 추가적으로 또는 대신에 액세스할 수 있다. fS 플래그는 요청된 데이터가 섀도잉되지 않은 것을 나타내면, 컨트롤러는 데이터에 액세스하기 위해 수신된 논리 어드레스와 연관되는 물리 어드레스에 액세스할 수 있다. fS 플래그는 요청된 데이터가 섀도잉되는 것을 나타내면, 컨트롤러는 (예를 들어 물리-섀도우 어드레스 테이블(604)에 저장된 바와 같이) 수신된 논리 어드레스와 연관되는 섀도우 어드레스에 액세스할 수 있고 DRAM에서 섀도잉된 어드레스로부터 데이터를 요청할 수 있다. 컨트롤러는 섀도잉된 어드레스와 연관되는 fC 플래그에 더 액세스할 수 있다. fC 플래그는 다음 데이터 청크가 NAND 플래시에 있는 것을 나타내면, 컨트롤러는 제1 데이터 청크가 DRAM으로부터 액세스되고/되거나 프로세서 기반 시스템(105)에 제공되고 있는 시간 동안에 NAND 플래시 메모리로부터 다음 데이터 청크에 액세스할 수 있다. fC 플래그는 다음 데이터 청크가 섀도우 메모리(예를 들어 DRAM)에 있는 것을 나타내면, 컨트롤러는 NAND 플래시를 액세스하는 것을 시작하고 않고 그 대신에 DRAM 내의 다음 영역에 액세스하고/하거나 프로세서 기반 시스템(105)으로부터 다음 메모리 커맨드를 대기할 수 있다.
이러한 방식으로, 메모리 시스템들은 NAND 플래시 메모리 및 DRAM 메모리를 포함할 수 있다. NAND 플래시 메모리의 부분들은 메모리 액세스들의 초기 부분들이 NAND 플래시 메모리로부터 검색되었던 것보다 일반적으로 더 낮은 레이턴시를 갖는 DRAM 메모리로부터 검색될 수 있도록 DRAM 메모리에 섀도잉될 수 있다. NAND 플래시로부터 메모리 액세스의 나중의 부분들에 액세스하는 프로세스는 초기 부분 또는 부분들이 DRAM 메모리로부터 검색되고/되거나 호스트에 제공되고 있는 동안에 시작할 수 있다. 이러한 방식으로, NAND 플래시와 연관되는 레이턴시는 호스트의 관점에서 감소될 수 있다.
본 발명의 실시예들은 특정 시간들, 예를 들어 시스템의 파워 온에서만 수행될 다양한 하우스키핑 동작들(예를 들어 웨어 레벨링, 불량 블록 대체)을 더 제공할 수 있다. 일부 예들에서, 도 1을 다시 참조하면, 컨트롤러(111)는 NAND 플래시 디바이스들(115)에 기록되고/되거나 그것으로부터 판독되는 데이터 상에 에러 정정 동작들을 수행할 수 있다. 불량 메모리 영역들이 에러 정정 동작들 동안에 식별되는 경우에, 컨트롤러(111)는 그러한 불량 메모리 영역들을 관리 로그에 로그시킬 수 있으며, 이는 예를 들어 NAND 플래시 디바이스들(115) 중 하나 이상 및/또는 DRAM 디바이스들(125) 중 하나 이상에 저장될 수 있다. 컨트롤러(111)는 식별되면 불량 메모리 영역을 즉시 정정하는 조치를 취하지 않을 수 있다. 그 대신에, 일부 예들에서, 메모리 시스템(107)가 파워 온될 때, 또는 다른 특정 시간에, 컨트롤러(111)는 마지막 정정이 발생된 후에 로그되었던 관리 로그에 저장되는 모든 불량 메모리 영역들을 정정할 수 있다. 유사하게, 컨트롤러(111)는 웨어 레벨링의 목적들을 위해 NAND 플래시 디바이스들에 대한 판독들 및/또는 기록들을 카운트할 수 있다. 웨어 레벨링 카운트에 기초하여 불량으로 지정되어야 하는 메모리 영역을 즉시 식별하면 작동하는 대신에, 컨트롤러(111)는 관리 로그 내의 웨어 레벨링으로 인해 대체를 필요로 하는 메모리 영역들을 로그할 수 있으며, 이는 에러 정정에 관해 위에서 언급되는 로그와 동일 또는 상이한 로그일 수 있다. 그 다음, 컨트롤러(111)는 특정 시간, 예를 들어 파워 업에서 그들의 웨어 레벨링 카운트들로 인해 관리 로그에 식별되는 그러한 영역들을 불량 메모리 영역들로 지정할 수 있다.
따라서, 일부 예들에서, 불량 블록 대체, 판독 방해, 웨어 레벨링, 및/또는 다른 관리 작업들은 메모리 시스템(107)의 파워 사이클(예를 들어 파워 업)에 대응하는 도 1의 메모리 컨트롤러(111)에 의해 수행될 수 있다. 다른 시간들에서, 컨트롤러(111)는 이러한 업무들을 수행하지 않을 수 있으며, 이는 이러한 하우스키핑 동작들과 연관되는 추가 레이턴시 문제들을 회피할 수 있다.
전술한 것으로부터 본 발명의 특정 실시예들이 본 명세서에서 예시의 목적들을 위해 설명되었지만, 다양한 수정들은 본 발명의 사상 및 범위로부터 벗어나는 것 없이 이루어질 수 있다는 점이 이해될 것이다.

Claims (35)

  1. 프로세서 기반 시스템으로부터 메모리 커맨드들을 수신하도록 구성되는 컨트롤러;
    제1 인터페이스를 통해 상기 컨트롤러에 결합되는 제1 타입의 메모리 디바이스;
    제2 인터페이스를 통해 상기 컨트롤러에 결합되는 제2 타입의 메모리 디바이스를 포함하며, 상기 제2 타입의 메모리 디바이스는 상기 제1 타입의 메모리 디바이스보다 더 낮은 레이턴시를 갖고;
    상기 컨트롤러는 상기 프로세서 기반 시스템으로부터 메모리 커맨드들과 연관되는 데이터의 개시 어드레스들 및 길이들의 데이터 구조를 생성하기 위해 트레이닝 기간 동안 동작하고, 상기 개시 어드레스들 중 적어도 하나와 연관되는 데이터의 나머지 부분이 상기 제2 타입의 메모리 디바이스에서 액세스되는 시간 동안 적어도 부분적으로 상기 제1 타입의 메모리 디바이스에 저장된 상기 개시 어드레스들 중 적어도 하나에 대응하는 데이터의 초기 부분에 액세스하도록 구성되는 메모리 시스템.
  2. 청구항 1에 있어서, 상기 컨트롤러는 상기 트레이닝 기간의 개시를 나타내는 신호를 상기 프로세서 기반 시스템으로부터 수신하도록 구성되는 메모리 시스템.
  3. 청구항 1에 있어서, 상기 컨트롤러는 데이터의 상기 초기 부분을 상기 제1 타입의 메모리 디바이스로부터 상기 제2 타입의 메모리 디바이스로 섀도잉하도록 구성되는 메모리 시스템.
  4. 청구항 1에 있어서, 상기 제1 타입의 메모리 디바이스는 NAND 플래시 메모리 디바이스를 포함하는 메모리 시스템.
  5. 청구항 1에 있어서, 상기 제2 타입의 메모리 디바이스는 DRAM 메모리 디바이스를 포함하는 메모리 시스템.
  6. 청구항 1에 있어서, 상기 데이터 구조는 상기 컨트롤러에 액세스가능한 메모리에 저장되는 메모리 시스템.
  7. 청구항 1에 있어서, 상기 컨트롤러는 상기 제1 타입의 메모리 디바이스에 저장되는 데이터의 분석에 기초하여 상기 데이터 구조를 생성하도록 더 구성되는 메모리 시스템.
  8. 청구항 1에 있어서, 상기 컨트롤러는 상기 트레이닝 기간 동안 상기 프로세서 기반 시스템으로부터의 판독 커맨드들의 수신에 기초하여 상기 데이터 구조를 생성하도록 더 구성되는 메모리 시스템.
  9. 청구항 1에 있어서, 상기 프로세서 기반 시스템은 갬블링 기계(gambling machine)를 포함하는 메모리 시스템.
  10. 청구항 1에 있어서, 상기 데이터 구조는 리스트인 메모리 시스템.
  11. 컨트롤러;
    제1 인터페이스를 통해 상기 컨트롤러에 결합되는 제1 타입의 메모리 디바이스;
    제2 인터페이스를 통해 상기 컨트롤러에 결합되는 제2 타입의 메모리 디바이스를 포함하며, 상기 제2 타입의 메모리 디바이스는 상기 제1 타입의 메모리 디바이스보다 더 낮은 레이턴시를 갖고;
    상기 컨트롤러는 복수의 메모리 액세스와 연관되는 데이터를 저장하도록 구성되며, 상기 복수의 메모리 액세스와 연관되는 상기 데이터는 각각 상기 제1 타입의 메모리 디바이스 내의 단일 데이터 청크에서, 데이터 청크의 크기 미만이고, 개시 어드레스들 중 적어도 하나와 연관되는 데이터의 나머지 부분이 상기 제2 타입의 메모리 디바이스에서 액세스되는 시간 동안 적어도 부분적으로 상기 제1 타입의 메모리 디바이스에 저장된 상기 개시 어드레스들 중 적어도 하나에 대응하는 데이터의 초기 부분에 액세스하는 메모리 시스템.
  12. 청구항 11에 있어서, 상기 컨트롤러는 상기 제2 타입의 메모리 디바이스에서 상기 복수의 메모리 액세스와 연관되는 데이터를 섀도잉하도록 더 구성되는 메모리 시스템.
  13. 청구항 11에 있어서, 상기 컨트롤러는 데이터 청크의 크기보다 더 큰 데이터에 대한 다른 메모리 액세스와 연관되는 데이터를 데이터 청크 경계와 정렬시키도록 더 구성되는 메모리 시스템.
  14. 청구항 13에 있어서, 상기 컨트롤러는 상기 다른 메모리 액세스와 연관되는 제1 데이터 청크를 상기 제2 타입의 메모리 디바이스에 섀도잉하도록 더 구성되는 메모리 시스템.
  15. 청구항 11에 있어서, 상기 데이터 청크는 상기 제1 타입의 메모리 디바이스들 내의 메모리의 슈퍼 페이지(super page)에 대응하는 메모리 시스템.
  16. 청구항 11에 있어서, 상기 컨트롤러는 메모리 커맨드의 논리 어드레스를 상기 메모리 커맨드와 연관되는 상기 데이터의 물리 위치와 연관시키는 데이터 구조를 생성하도록 더 구성되는 메모리 시스템.
  17. 청구항 16에 있어서, 상기 데이터 구조는 매핑 테이블인 메모리 시스템.
  18. 메모리 시스템에 데이터를 저장하는 방법으로서,
    컨트롤러를 이용하여, 상기 메모리 시스템과 연관되는 메모리 디바이스들 내의 데이터에 대한 메모리 커맨드들과 연관되는 개시 어드레스들 및 상기 메모리 커맨드들 각각과 연관되는 데이터의 길이들의 데이터 구조를 생성하는 단계;
    상기 메모리 커맨드들 중 커맨드들과 연관되는 데이터 청크 미만의 길이를 갖는 데이터를 식별하기 위해 상기 데이터 구조에 액세스하는 단계;
    데이터 청크 미만의 길이를 갖는 상기 메모리 커맨드들 중 상기 커맨드들과 연관되는 데이터를 단일 데이터 청크로 통합하고 제1 타입의 메모리 디바이스에 상기 단일 데이터 청크를 저장하는 단계; 및
    상기 개시 어드레스들 중 적어도 하나와 연관되는 데이터의 나머지 부분이 제2 타입의 메모리 디바이스에서 액세스되는 시간 동안 적어도 부분적으로 상기 제1 타입의 메모리 디바이스에 저장된 상기 개시 어드레스들 중 적어도 하나에 대응하는 데이터의 초기 부분에 액세스하는 단계
    를 포함하는 방법.
  19. 청구항 18에 있어서, 상기 단일 데이터 청크를 상기 메모리 시스템의 적어도 하나의 메모리 디바이스로부터 다른 메모리 디바이스로 섀도잉하는 단계를 더 포함하는 방법.
  20. 청구항 18에 있어서, 상기 메모리 커맨드들 중 커맨드들과 연관되는 데이터 청크보다 더 큰 길이를 갖는 데이터를 식별하기 위해 상기 데이터 구조에 액세스하는 단계; 및
    상기 데이터 청크보다 더 큰 길이를 갖는 상기 데이터를 상기 메모리 시스템의 적어도 하나의 메모리 디바이스 내의 데이터 청크의 경계와 정렬시키는 단계를 더 포함하는 방법.
  21. 청구항 20에 있어서, 상기 데이터 청크보다 더 큰 길이를 갖는 상기 데이터의 제1 데이터 청크를 상기 메모리 시스템의 적어도 하나의 메모리 디바이스로부터 다른 메모리 디바이스로 섀도잉하는 단계를 더 포함하는 방법.
  22. 청구항 21에 있어서, 상기 데이터 구조는 제1 데이터 구조이고, 메모리 커맨드의 논리 어드레스, 상기 적어도 하나의 메모리 디바이스의 물리 어드레스, 상기 다른 메모리 디바이스의 물리 어드레스, 및 상기 제1 데이터 청크가 섀도잉된 것을 나타내는 플래그 사이의 연관성을 저장하는 제2 데이터 구조를 생성하는 단계를 더 포함하는 방법.
  23. 청구항 18에 있어서, 트레이닝 기간을 나타내는 신호를 상기 컨트롤러에서 수신하는 단계를 더 포함하는 방법.
  24. 청구항 23에 있어서, 상기 데이터 구조를 생성하는 상기 단계는 상기 트레이닝 기간 동안 상기 컨트롤러에서 메모리 커맨드들을 수신하고 상기 개시 어드레스들 및 길이들에 대한 메모리 커맨드들을 분석하는 단계를 포함하는 방법.
  25. 청구항 18에 있어서, 상기 데이터 구조를 생성하는 상기 단계는 메모리 커맨드들에 응답하여 데이터의 그룹화들을 식별하기 위해 상기 메모리 시스템과 연관되는 상기 메모리 디바이스들에 저장되는 데이터의 분석을 수행하는 단계를 포함하는 방법.
  26. 컨트롤러;
    제1 인터페이스를 통해 상기 컨트롤러에 결합되는 제1 타입의 메모리 디바이스;
    제2 인터페이스를 통해 상기 컨트롤러에 결합되는 제2 타입의 메모리 디바이스를 포함하며, 상기 제2 타입의 메모리 디바이스는 상기 제1 타입의 메모리 디바이스보다 더 낮은 레이턴시를 갖고;
    상기 컨트롤러는 프로세서 기반 시스템으로부터 메모리 커맨드들을 수신하도록 구성되고, 데이터 청크 이하의 길이를 갖는 메모리 커맨드들에 대응하는 데이터는 상기 제1 타입의 메모리 디바이스 및 상기 제2 타입의 메모리 디바이스 양자 상에 위치되고, 데이터 청크보다 더 큰 길이를 갖는 메모리 커맨드들에 대응하는 데이터의 제1 데이터 청크는 상기 제1 타입의 메모리 디바이스 및 상기 제2 타입의 메모리 디바이스 양자 상에 위치되고, 상기 컨트롤러는 상기 제2 타입의 메모리 디바이스로부터 상기 데이터 청크보다 더 큰 길이를 갖는 메모리 커맨드들에 대응하는 데이터의 상기 제1 데이터 청크를 제공하고, 상기 제1 데이터 청크가 액세스되고 있는 시간 및 상기 제1 데이터 청크가 프로세서 기반 시스템에 제공되고 있는 시간 중 적어도 하나의 시간 동안 적어도 부분적으로 상기 제1 타입의 메모리 디바이스로부터 데이터의 다음 데이터 청크에 액세스하도록 구성되는 메모리 시스템.
  27. 삭제
  28. 청구항 26에 있어서, 상기 제1 타입의 메모리 디바이스 및/또는 상기 제2 타입의 메모리 디바이스에 저장되는 데이터 구조를 더 포함하며, 상기 데이터 구조는 데이터가 상기 제1 타입의 메모리 디바이스 및 상기 제2 타입의 메모리 디바이스 양자에 저장될 때 프로세서 기반 시스템으로부터 수신되는 논리 어드레스들, 상기 논리 어드레스들과 연관되는 상기 제1 타입의 메모리 디바이스의 물리 어드레스들, 및 상기 제2 타입의 메모리 디바이스의 섀도우 어드레스들 사이의 연관성들을 포함하는 메모리 시스템.
  29. 청구항 28에 있어서, 상기 데이터 구조는 상기 제1 타입의 메모리 디바이스의 물리 어드레스와 연관되는 데이터가 상기 제2 타입의 메모리 디바이스에 섀도잉되는지를 표시하는 제1 플래그를 더 포함하는 메모리 시스템.
  30. 청구항 29에 있어서, 상기 데이터 구조는 상기 섀도우 어드레스와 연관되는 다음 데이터 청크가 상기 제1 타입의 메모리 디바이스에 저장되는지 또는 상기 제2 타입의 메모리 디바이스에 저장되는지를 표시하는 제2 플래그를 더 포함하는 메모리 시스템.
  31. 청구항 26에 있어서, 상기 제1 타입의 메모리 디바이스는 NAND 플래시 디바이스를 포함하고 상기 제2 타입의 메모리 디바이스는 DRAM 디바이스를 포함하는 메모리 시스템.
  32. 메모리 커맨드들을 서비스하는 방법으로서,
    데이터 청크보다 더 큰 크기를 갖는 요청된 데이터와 연관되는 프로세서 기반 시스템으로부터 메모리 커맨드를 수신하는 단계;
    제1 타입의 메모리 디바이스로부터 상기 요청된 데이터의 제1 데이터 청크에 액세스하는 단계;
    상기 제1 데이터 청크를 상기 프로세서 기반 시스템에 제공하는 단계;
    상기 제1 데이터 청크가 액세스되고 있는 시간 및 상기 제1 데이터 청크가 상기 프로세서 기반 시스템에 제공되고 있는 시간 중 적어도 하나의 시간 동안 적어도 부분적으로 제2 타입의 메모리 디바이스로부터 상기 요청된 데이터의 제2 데이터 청크에 액세스하는 단계로서, 상기 제2 타입의 메모리 디바이스는 상기 제1 타입의 메모리 디바이스의 레이턴시보다 더 높은 레이턴시를 갖는, 상기 제2 데이터 청크에 액세스하는 단계; 및
    상기 제2 데이터 청크를 상기 프로세서 기반 시스템에 제공하는 단계를 포함하는 방법.
  33. 청구항 32에 있어서, 상기 데이터 청크는 상기 제1 데이터 청크가 상기 프로세서 기반 시스템에 제공되었던 시간만큼, 상기 제2 데이터 청크가 상기 프로세서 기반 시스템으로의 제공을 위해 준비되도록 크기를 갖는 방법.
  34. 청구항 32에 있어서, 상기 제1 데이터 청크에 액세스하는 단계는 상기 제1 데이터 청크가 상기 제2 타입의 메모리 디바이스에 섀도잉되는 것을 나타내는 플래그를 데이터 구조로부터 판독하는 단계를 포함하는 방법.
  35. 청구항 32에 있어서, 상기 제1 데이터 청크에 액세스하는 단계는 상기 메모리 커맨드로 수신되는 논리 어드레스와 상기 제1 타입의 메모리 디바이스 상의 물리 어드레스 사이의 연관성에 액세스하는 단계를 포함하는 방법.
KR1020157028342A 2013-03-14 2013-03-14 트레이닝, 데이터 조직, 및/또는 섀도잉을 포함하는 메모리 시스템들 및 방법들 KR101752583B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2013/000285 WO2014139047A1 (en) 2013-03-14 2013-03-14 Memory systems and methods including training,data organizing,and/or shadowing

Publications (2)

Publication Number Publication Date
KR20150128924A KR20150128924A (ko) 2015-11-18
KR101752583B1 true KR101752583B1 (ko) 2017-07-11

Family

ID=51533839

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157028342A KR101752583B1 (ko) 2013-03-14 2013-03-14 트레이닝, 데이터 조직, 및/또는 섀도잉을 포함하는 메모리 시스템들 및 방법들

Country Status (7)

Country Link
US (3) US9645919B2 (ko)
EP (1) EP2972888B1 (ko)
JP (1) JP6276296B2 (ko)
KR (1) KR101752583B1 (ko)
CN (1) CN105122218B (ko)
TW (1) TWI512608B (ko)
WO (1) WO2014139047A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11614888B2 (en) 2020-12-11 2023-03-28 Samsung Electronics Co., Ltd. Memory system and electronic system including the same

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105122218B (zh) 2013-03-14 2019-01-18 美光科技公司 包含训练、数据组织及/或遮蔽的存储器系统及方法
US9116824B2 (en) * 2013-03-15 2015-08-25 Sandisk Technologies Inc. System and method to reduce read latency of a data storage device
US10659532B2 (en) * 2015-09-26 2020-05-19 Intel Corporation Technologies for reducing latency variation of stored data object requests
US10013178B2 (en) 2016-04-30 2018-07-03 Sandisk Technologies Llc Methods, systems and computer readable media for optimizing storage device bus and resource utilization by host realignment
EP3264276A1 (en) 2016-06-28 2018-01-03 ARM Limited An apparatus for controlling access to a memory device, and a method of performing a maintenance operation within such an apparatus
KR20180046428A (ko) 2016-10-27 2018-05-09 삼성전자주식회사 메모리 장치 및 그것의 트레이닝 방법
KR102649048B1 (ko) 2016-11-02 2024-03-18 삼성전자주식회사 메모리 장치 및 이를 포함하는 메모리 시스템
US10649665B2 (en) * 2016-11-08 2020-05-12 Micron Technology, Inc. Data relocation in hybrid memory
US10430085B2 (en) 2016-11-08 2019-10-01 Micron Technology, Inc. Memory operations on data
US10402327B2 (en) * 2016-11-22 2019-09-03 Advanced Micro Devices, Inc. Network-aware cache coherence protocol enhancement
KR20180121733A (ko) 2017-04-28 2018-11-08 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10936221B2 (en) * 2017-10-24 2021-03-02 Micron Technology, Inc. Reconfigurable memory architectures
US10628354B2 (en) 2017-12-11 2020-04-21 Micron Technology, Inc. Translation system for finer grain memory architectures
CN108182154A (zh) * 2017-12-22 2018-06-19 深圳大普微电子科技有限公司 一种基于固态硬盘的日志文件的读写方法及固态硬盘
EP3743857A4 (en) * 2018-01-23 2021-12-29 Anaflash Inc. Neural network circuits having non-volatile synapse arrays
US11762558B2 (en) * 2018-09-21 2023-09-19 Samsung Electronics Co., Ltd. Storage device having a controller that communicates with each of two memories through separate interfaces
WO2020128547A1 (en) * 2018-12-21 2020-06-25 Micron Technology, Inc. Method and device to ensure a secure memory access
US11526441B2 (en) 2019-08-19 2022-12-13 Truememory Technology, LLC Hybrid memory systems with cache management
US11055220B2 (en) 2019-08-19 2021-07-06 Truememorytechnology, LLC Hybrid memory systems with cache management
US11017842B2 (en) * 2019-08-29 2021-05-25 Micron Technology, Inc. Copy data in a memory system with artificial intelligence mode
US11392386B2 (en) 2020-08-14 2022-07-19 International Business Machines Corporation Program counter (PC)-relative load and store addressing for fused instructions
KR20220073017A (ko) * 2020-11-26 2022-06-03 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US20220197699A1 (en) * 2020-12-18 2022-06-23 Micron Technology, Inc. Sharing data between computing devices
US11507296B2 (en) * 2021-03-10 2022-11-22 Micron Technology, Inc. Repair operation techniques

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3377435D1 (en) 1983-07-27 1988-08-25 Ibm Deutschland Digital memory
JPH0636550A (ja) 1992-07-21 1994-02-10 Hitachi Ltd 半導体記憶装置
JPH08194643A (ja) 1995-01-19 1996-07-30 Fanuc Ltd メモリ制御方式
JPH08328949A (ja) 1995-06-06 1996-12-13 Mitsubishi Electric Corp 記憶装置
US6978342B1 (en) * 1995-07-31 2005-12-20 Lexar Media, Inc. Moving sectors within a block of information in a flash memory mass storage architecture
JP4439096B2 (ja) 2000-08-28 2010-03-24 株式会社東芝 メモリカード及び同カードに適用されるアドレス変換方法
JP2002351741A (ja) 2001-05-30 2002-12-06 Matsushita Electric Ind Co Ltd 半導体集積回路装置
JP2006155391A (ja) 2004-11-30 2006-06-15 Ricoh Co Ltd 画像形成装置
US7299337B2 (en) * 2005-05-12 2007-11-20 Traut Eric P Enhanced shadow page table algorithms
US8397013B1 (en) * 2006-10-05 2013-03-12 Google Inc. Hybrid memory module
US7519754B2 (en) * 2005-12-28 2009-04-14 Silicon Storage Technology, Inc. Hard disk drive cache memory and playback device
US20070147115A1 (en) 2005-12-28 2007-06-28 Fong-Long Lin Unified memory and controller
US7716411B2 (en) 2006-06-07 2010-05-11 Microsoft Corporation Hybrid memory device with single interface
US8015388B1 (en) * 2006-08-04 2011-09-06 Vmware, Inc. Bypassing guest page table walk for shadow page table entries not present in guest page table
JP5158740B2 (ja) 2006-08-28 2013-03-06 株式会社メガチップス メモリシステム
US7584335B2 (en) * 2006-11-02 2009-09-01 International Business Machines Corporation Methods and arrangements for hybrid data storage
US9153337B2 (en) * 2006-12-11 2015-10-06 Marvell World Trade Ltd. Fatigue management system and method for hybrid nonvolatile solid state memory system
JP2008225608A (ja) 2007-03-09 2008-09-25 Seiko Epson Corp メモリを制御するメモリコントローラ、メモリモジュール、メモリの制御方法
US8427891B2 (en) * 2007-04-17 2013-04-23 Rambus Inc. Hybrid volatile and non-volatile memory device with a shared interface circuit
US8874831B2 (en) * 2007-06-01 2014-10-28 Netlist, Inc. Flash-DRAM hybrid memory module
JP2009211234A (ja) * 2008-03-01 2009-09-17 Toshiba Corp メモリシステム
JP4632180B2 (ja) 2008-10-15 2011-02-16 Tdk株式会社 メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US8225069B2 (en) * 2009-03-31 2012-07-17 Intel Corporation Control of on-die system fabric blocks
WO2010148359A1 (en) * 2009-06-18 2010-12-23 Cypress Semiconductor Corporation Memory devices and systems including multi-speed access of memory modules
JP2011186563A (ja) 2010-03-04 2011-09-22 Toshiba Corp メモリ管理装置およびメモリ管理方法
US9015443B2 (en) * 2010-04-30 2015-04-21 International Business Machines Corporation Reducing remote reads of memory in a hybrid computing environment
US8862807B2 (en) * 2010-08-20 2014-10-14 Samsung Electronics Co., Ltd. Semiconductor storage device and method of throttling performance of the same
US9432298B1 (en) * 2011-12-09 2016-08-30 P4tents1, LLC System, method, and computer program product for improving memory systems
JP5708216B2 (ja) 2011-05-09 2015-04-30 ソニー株式会社 フラッシュメモリ装置、メモリ制御装置、メモリ制御方法、ストレージシステム
US8621157B2 (en) * 2011-06-13 2013-12-31 Advanced Micro Devices, Inc. Cache prefetching from non-uniform memories
US8868797B1 (en) * 2012-03-30 2014-10-21 Emc Corporation Techniques for automated discovery of storage devices and their performance characteristics
US9020892B2 (en) * 2011-07-08 2015-04-28 Microsoft Technology Licensing, Llc Efficient metadata storage
JP5657840B2 (ja) * 2011-08-02 2015-01-21 カビウム・インコーポレーテッド ルックアップ・フロントエンド・パケット出力プロセッサ
US8949473B1 (en) * 2012-02-16 2015-02-03 Inphi Corporation Hybrid memory blade
US20130238832A1 (en) * 2012-03-07 2013-09-12 Netapp, Inc. Deduplicating hybrid storage aggregate
US9075710B2 (en) * 2012-04-17 2015-07-07 SanDisk Technologies, Inc. Non-volatile key-value store
US20140101370A1 (en) * 2012-10-08 2014-04-10 HGST Netherlands B.V. Apparatus and method for low power low latency high capacity storage class memory
US8547745B1 (en) * 2012-11-16 2013-10-01 Avalanche Technology, Inc. Host-managed logical mass storage device using magnetic random access memory (MRAM)
US8949483B1 (en) * 2012-12-28 2015-02-03 Emc Corporation Techniques using I/O classifications in connection with determining data movements
US9250826B2 (en) 2013-03-13 2016-02-02 Silicon Graphics International Corp. Enhanced performance monitoring method and apparatus
CN105122218B (zh) 2013-03-14 2019-01-18 美光科技公司 包含训练、数据组织及/或遮蔽的存储器系统及方法
US9323457B2 (en) * 2013-12-09 2016-04-26 Xilinx, Inc. Memory arrangement for implementation of high-throughput key-value stores
US9489145B2 (en) 2013-12-09 2016-11-08 HGST Netherlands B.V. Disk drive including I-regions having configurable final logical block addresses
JP6296228B2 (ja) 2013-12-13 2018-03-20 三菱自動車工業株式会社 ハイブリッド車両の制御装置
CN104156524B (zh) 2014-08-01 2018-03-06 河海大学 交通数据流的聚集查询方法及系统
US20170083474A1 (en) * 2015-09-22 2017-03-23 Advanced Micro Devices, Inc. Distributed memory controller

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11614888B2 (en) 2020-12-11 2023-03-28 Samsung Electronics Co., Ltd. Memory system and electronic system including the same

Also Published As

Publication number Publication date
KR20150128924A (ko) 2015-11-18
US20140281161A1 (en) 2014-09-18
US20200241764A1 (en) 2020-07-30
JP6276296B2 (ja) 2018-02-07
EP2972888B1 (en) 2019-02-06
WO2014139047A1 (en) 2014-09-18
US9645919B2 (en) 2017-05-09
CN105122218B (zh) 2019-01-18
EP2972888A1 (en) 2016-01-20
JP2016509325A (ja) 2016-03-24
EP2972888A4 (en) 2017-01-18
US11487433B2 (en) 2022-11-01
US10664171B2 (en) 2020-05-26
US20170212694A1 (en) 2017-07-27
TW201502971A (zh) 2015-01-16
CN105122218A (zh) 2015-12-02
TWI512608B (zh) 2015-12-11

Similar Documents

Publication Publication Date Title
KR101752583B1 (ko) 트레이닝, 데이터 조직, 및/또는 섀도잉을 포함하는 메모리 시스템들 및 방법들
US10628319B2 (en) Methods for caching and reading data to be programmed into a storage unit and apparatuses using the same
US20200183600A1 (en) Controller and storage device including controller and nonvolatile memory devices
US9846643B2 (en) Methods for maintaining a storage mapping table and apparatuses using the same
US8902649B2 (en) Nonvolatile memory device and related method of operation
US9329989B2 (en) System and method for pre-interleaving sequential data
US20090089486A1 (en) Portable data storage device incorporating multiple flash memory units
TWI518694B (zh) 可減少記憶體干擾之記憶裝置及其操作方法
US20190114255A1 (en) Handling of Unaligned Sequential Writes
WO2016043923A1 (en) System and method for configuring and controlling non-volatile cache
US10007446B2 (en) Method, apparatus, and storage medium for writing data into persistent storage device
US10754555B2 (en) Low overhead mapping for highly sequential data
US20200110555A1 (en) Write control method, associated data storage device and controller thereof
KR20170051563A (ko) 데이터 저장 장치 및 그것의 동작 방법
CN102004701A (zh) 一种次级内存的分配方法和装置
JP6391719B2 (ja) トレーニング、データ再構築および/またはシャドウィングを含むメモリシステムおよび方法
US20160259733A1 (en) Methods for maintaining a storage mapping table and apparatuses using the same
TWI709975B (zh) 寫入控制方法以及資料儲存裝置及其控制器
US20210272619A1 (en) Data Storage With Improved Read Performance By Avoiding Line Discharge
CN108710579A (zh) 一种超过寻址空间大容量的管理方法
TW202113610A (zh) 資料儲存裝置以及非揮發式記憶體控制方法

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