KR20070070121A - 통합 메모리 및 컨트롤러 - Google Patents

통합 메모리 및 컨트롤러 Download PDF

Info

Publication number
KR20070070121A
KR20070070121A KR1020060136568A KR20060136568A KR20070070121A KR 20070070121 A KR20070070121 A KR 20070070121A KR 1020060136568 A KR1020060136568 A KR 1020060136568A KR 20060136568 A KR20060136568 A KR 20060136568A KR 20070070121 A KR20070070121 A KR 20070070121A
Authority
KR
South Korea
Prior art keywords
memory
bus
address
ram
nand
Prior art date
Application number
KR1020060136568A
Other languages
English (en)
Other versions
KR100797325B1 (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 KR20070070121A publication Critical patent/KR20070070121A/ko
Application granted granted Critical
Publication of KR100797325B1 publication Critical patent/KR100797325B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/1668Details of memory controller
    • G06F13/1694Configuration of memory controller to different memory types
    • 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/10Address translation
    • 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

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)
  • Memory System (AREA)

Abstract

메모리 장치는 컨트롤러를 갖는다. 컨트롤러는 RAM 어드레스 신호들을 수신하기 위한 제 1 어드레스버스, RAM 데이터 신호들을 수신하기 위한 제 1 데이터버스, 및 RAM 제어 신호들을 수신하기 위한 제 1 제어버스를 갖는다. 컨트롤러는 휘발성 RAM 메모리와 인터페이스하기 위한 제 2 어드레스버스, 휘발성 RAM 메모리와 인터페이스하기 위한 제 2 데이터버스, 및 휘발성 RAM 메모리와 인터페이스하기 위한 제 2 제어버스를 더 갖는다. 컨트롤러는 비휘발성 NAND 메모리와 인터페이스하기 위한 제 3 어드레스/데이터버스, 비휘발성 NAND 메모리와 인터페이스하기 위한 제 3 제어버스를 더 갖는다. 메모리 장치는 상기 제 2 어드레스버스, 상기 제 2 데이터버스, 및 상기 제 2 제어버스와 연결되는 RAM 메모리를 더 갖는다. 메모리 장치는 상기 제 3 어드레스/데이터버스 및 제 3 제어버스에 연결되는 비휘발성 NAND 메모리를 더 갖는다. 컨트롤러는 또한 비휘발성 부팅 메모리를 가지며, 상기 제 1 어드레스버스 상의 제 1 어드레스를 수신하고 비휘발성 NAND 메모리에 있는 제 2 어드레스로의 또는 제 2 어드레스로부터의 데이터에 대한 캐시로서 기능하는 RAM 메모리를 가지고 상기 제 1 어드레스를 상기 비휘발성 NAND 메모리에 있는 제 2 어드레스로 매핑하기 위한 수단, 및 캐시로서의 상기 휘발성 RAM 메모리에 저장된 데이터와 상기 비휘발성 NAND 메모리에서 제 2 어드레스에 있는 데이터 사이의 데이터 일관성을 유지하기 위한 수단을 더 갖는다.

Description

통합 메모리 및 컨트롤러{UNIFIED MEMORY AND CONTROLLER}
도 1은 메모리 컨트롤러를 포함하며 단일 호스트 시스템 또는 사용자에 연결된 메모리 장치의 제 1 실시예에 대한 블록도.
도 2는 도 1에 도시된 메모리 장치의 제 1 실시예에서의 메모리 장치, NOR 메모리, RAM 메모리 및 NAND 메모리에 대해 외부에서 단일 호스트 또는 사용자에 의해 보여지는 어드레스 공간의 매핑을 나타내는 메모리 매핑도.
도 3은 메모리 장치에 사용된 컨트롤러의 상세 블록 회로도.
도 4는 메모리 컨트롤러를 포함하며 단일 호스트 시스템 또는 사용자에 연결되는 메모리 장치의 제 2 실시예에 대한 블록도.
도 5는 도 4에 도시된 메모리 장치의 제 2 실시예에서의 메모리 장치, NOR 메모리, RAM 메모리 및 NAND 메모리에 대해 외부에서 호스트 또는 사용자에 의해 보여지는 어드레스 공간의 매핑을 나타내는 메모리 매핑도.
도 6은 본 발명의 메모리 컨트롤러를 포함하며 다중 요구버스들로 단일 버스를 통해 복수의 호스트 시스템들 또는 사용자들에 연결되는 본 발명의 메모리 장치의 제 3 실시예에 대한 블록도.
도 7은 본 발명의 메모리 컨트롤러를 포함하며 복수의 버스들을 통해 복수의 호스트 시스템들 또는 사용자들에 연결되는 본 발명의 메모리 장치의 제 4 실시예 에 대한 블록도.
도 8은 본 발명의 메모리 컨트롤러를 포함하며 복수의 버스들을 통해 복수의 호스트 시스템들 또는 사용자들에 연결되는 본 발명의 메모리 장치의 제 5 실시예에 대한 블록도.
도 9는 본 발명의 메모리 컨트롤러를 포함하며 복수의 버스들을 통해 복수의 호스트 시스템들 또는 사용자들에 연결되는 본 발명의 메모리 장치의 제 6 실시예에 대한 블록도.
본 출원은 2005년 12월 28일에 출원되고 그 공개내용이 여기에서 전체적으로 병합된 가출원 60/754,937에 대한 우선권을 주장한다.
본 발명은 메모리 장치에 관한 것으로서 특히 종래의 랜덤 어드레스 포맷으로 어드레스와 데이터를 수신할 수 있으며, 그 데이터/어드레스를 NAND 메모리 용 캐시로서 동작하는 NOR 메모리, RAM 메모리, RAM 메모리 중 어느 하나로 맵핑시킴으로써 Pseudo-NOR(PNOR) 동작 및 ATA 포맷 비휘발성 NAND 메모리를 에뮬레이팅(emulating)하는 메모리 장치에 관한 것이다. 상기 어드레스와 데이터는 단일 버스 또는 복수의 버스들을 통해 하나 이상의 프로세서로부터 수신된다. 본 발명은 또한 그러한 메모리 장치에 사용되는 내장형 부팅(embedded bootable) NOR 메모리를 갖는 메모리 컨트롤러에 관한 것이다.
SRAM 또는 DRAM(또는 SDRAM) 또는 PSRAM(이하 집합적으로 RAM 이라 함)과 같은 휘발성 랜덤 액세스 메모리는 당업계에서 잘 알려져 있다. 전형적으로, 이러한 타입의 휘발성 메모리들은 어드레스버스에서 어드레스신호들을, 데이터버스에서 데이터신호들을 그리고 제어버스에서 제어신호들을 수신한다.
병렬 NOR 타입 비휘발성 메모리들 또한 당업계에 잘 알려져 있다. 전형적으로, 그들은 RAM에 제공되는 것과 동일한 타입의 어드레스버스에서 어드레스신호를, RAM에 제공되는 것과 동일한 타입의 데이터버스에서 버스신호를 그리고 RAM에 제공되는 것과 동일한 타입의 제어버스에서 제어신호들을 수신한다. 그러나, NOR 메모리들은 섹터 삭제 또는 블럭 삭제와 같이 RAM에 의해서는 요구되지 않는 어떤 동작들을 요구하기 때문에, 명령의 특성을 갖는 동작들은 일련의 어떤 데이터 패턴들로서 NOR 장치에 제공된다. 이것은 NOR 프로토콜 명령으로 알려져 있다. 종래에는, 두 가지 타입의 NOR 프로토콜 명령 즉 1) 초기에 인텔에 의해 공표된 프로토콜 명령 셋과 호환되는 그러한 프로토콜 명령들, 그리고 2) 초기에 AMD에 의해 공표된 프로토콜 명령 셋과 호환되는 그러한 프로토콜 명령들이 있다. 각각의 상황에 있어서, NOR 메모리는 RAM이 인터페이스하는 것과 동일한 어드레스, 데이터 및 제어버스들과 전기적으로 인터페이스한다. 더욱이, 종래 NOR 메모리 장치는 또한 SPI, LPC 또는 펌웨어 허브(firmwae hub)와 같이 잘 알려진 종래의 포맷들로, 데이터, 어드레스 및 제어신호들을 직렬로 제공할 수 있다.
NAND 타입 비휘발성 메모리들 또한 당업계에 잘 알려져 있다. 그러나, 병렬 NOR 장치와 달리 NAND 메모리들은 블럭 내의 셀들이 순차적인 포맷으로 저장되어 있는 랜덤하게 액세스 가능한(random accessible) 블럭에 데이터를 저장한다. 더욱이, 어드레스 및 데이터 신호들은 동일한 버스 상에 그러나 다중화된 형태로 제공된다. NAND 메모리들은 NOR 장치들 보다 밀집되며 그로 인해 각 데이터 비트당 저장 비용이 낮아지는 장점이 있다.
NAND 장치에 대한 각 데이터 비트당 낮은 비용 때문에, NOR 장치의 동작을 에뮬레이트하기 위해 NAND 장치를 사용하려는 시도가 계속되고 있다. OneNAND(삼성의 상표)라 불리우는 하나의 그러한 장치는 NAND 메모리로의 데이터 및 NAND 메모리로부터의 데이터를 임시 버퍼링하기 위해 RAM 메모리를 사용함으로써 NOR 메모리의 동작을 에뮬레이팅한다. 그러나, OneNAND 장치는 두 가지 단점이 있는 것으로 여겨지고 있다. 첫 번째는, OneNAND와 인터페이스하는 사용자 또는 호스트 장치는 데이터 일관성(coherency)을 반드시 따라가야 하는 것으로 여겨지고 있다. 데이터 일관성에 있어서, 사용자 또는 호스트는 RAM에 기록하기 때문에, RAM에 있는 데이터는 RAM에 있는 데이터가 초기에 읽혀진 NAND에 있는 어느 위치에서의 데이터 보다 새로운(그리고 그 결과 그 데이터와 다른) 것이 될 수 있다. 따라서 OneNAND 장치에 있어서 사용자 또는 호스트는 그 데이터를 저장하기 위해 RAM으로부터 다시 NAND에서의 최종 위치에 데이터를 기록하거나, RAM에 있는 데이터가 새로운 데이터라는 것을 기억하고 있어야 한다. OneNAND 장치의 단점으로 여겨지는 두 번째 문제는 자동 어드레스 매핑이 제공되지 않는다는 것이다. OneNAND 장치에 있어서, 일단 데이터가 OneNAND 장치의 RAM 부분에 기록되면, 호스트 또는 사용자는 그 RAM 부분에 있는 데이터를 OneNAND 장치의 NAND 부분에서의 최종 위치에 기록하기 위한 하나의 명령 또는 일련의 명령들을 출력해야 한다. 유사하게, 읽기 동작을 위해서, 호스트 또는 사용자는 그 데이터를 OneNAND 장치의 NAND 부분에 있는 특정 위치(들)로부터 RAM 부분으로 로드하기 위해 읽기 명령을 출력해야 하며, 다음에 그 RAM 부분으로부터 그 데이터를 읽어내야 한다.
유사한 결함이 있는 것으로 여겨지는 다른 종래의 장치는 엠 시스템즈(M Systems)에서 제작된 디스크온칩(DiskOnChip) 장치이다. DiskOnChip 장치에 있어서, 제한된 양의 RAM을 갖는 컨트롤러가 NAND 메모리들의 동작을 제어한다. 그러나, DiskOnChip 장치의 컨트롤러 부분은 NOR 메모리와 같은 어떠한 온보드(on board) 비휘발성 부팅 메모리도 가지고 있지 않은 것으로 여겨지고 있다.
NOR 메모리 동작을 에뮬레이팅하는 컨트롤러를 갖는 NAND 메모리들의 이용을 보여주는 종래의 공개내용이 2006년 3월 9일에 공개된 미국 특허출원 2006/0053246에 개시되어 있다. 이러한 공개내용이 복수개의 프로세서들과 연결되어 있는 컨트롤러를 갖는 NAND 메모리들의 이용을 보여주고 있지만, NAND 메모리는 ATA 포맷 동작을 통해 직접적으로 접근될 수 없음을 보여주고 있다. 따라서, NAND 메모리로의 모든 접근은 외부로부터 직접 접근할 수 없는 컨트롤러에 의해 이루어져야 한다.
따라서, 그러한 결함들을 가지고 있지 않으며, 종래 기술에서는 발견하지 못한 부가적인 메모리 접근 특성들을 제공할 수 있는 메모리 장치가 요구되고 있다.
본 발명에 있어서, 일반적인 메모리 장치는 컨트롤러를 가진다. 컨트롤러는 어드레스신호 및 호스트 장치로부터의 데이터 신호를 수신하기 위한 제 1 버스, NAND 메모리와의 인터페이스를 위한 제 2 버스; 및 RAM 메모리와의 인터페이스를 위한 제 3 버스; 및 NOR 메모리와의 인터페이스를 위한 제 4 버스를 가진다. NAND 메모리는 제 2 버스에 연결된다. RAM 메모리는 제 3 버스에 연결된다. NOR 메모리는 제 4 버스에 연결된다. 메모리 컨트롤러는 NOR 프로토콜 명령들, RAM 프로토콜 명령들 및 ATA NAND 프로토콜 명령들에 응답한다.
본 발명은 또한 그러한 메모리 장치에서 사용하기 위한 메모리 컨트롤러와 관련된다.
마지막으로 본 발명은 또한 NOR 메모리, RAM 메모리, NOR 에뮬레이션 메모리 및 ATA NAND 메모리로서의 동작을 위한 메모리 컨트롤러 및 서로 다른 메모리 타입들 NOR, RAM, 및 NAND의 다양한 조합과 관련된다.
도 1을 참조하면, 메모리 장치(10)의 제 1 실시예가 도시되어 있다. 메모리 장치(10)는 메모리 컨트롤러(12), NAND 메모리(14), 및 RAM 메모리(16)를 구비한다. 메모리 장치(10)는 제 1 RAM 어드레스버스(22), 제 1 RAM 데이터버스(24), 및 RAM 버스에 대한 제어신호들로서 당업계에 이미 잘 알려진 대기(Wait)(24), RST#(28), 및 CE#, OE# 및 WE#(30)과 같은 복수의 제어신호들을 통해 호스트 장치(20)와 연결된다. 이후 다른 특정이 없는 한, 대기(26), RST#(28), 및 CE#, OE# 및 WE#(30) 상의 모든 제어신호들은 제 1 RAM 제어버스(32)로 언급된다. 제 1 RAM 어드레스버스(22), 제 2 RAM 데이터버스(24) 및 제 1 RAM 제어버스(32)는 호스트 장치(20)로부터 메모리 장치(10)의 메모리 컨트롤러(12)에 연결된다. 더욱이, 상 술된 바와 같이, 메모리 장치(10)와 호스트 장치(20) 사이의 인터페이스는 호스트 장치(20)와 메모리 장치(10) 사이에 직렬로 연결된 데이터, 어드레스 및 제어버스들인 직렬 버스를 통해 이루어질 수 있다. 그러한 메모리 장치(10) 또한 본 발명의 범주에 포함된다.
메모리 컨트롤러(12)는 제 2 RAM 어드레스버스(제 1 RAM 어드레스버스(22)와 유사), 제 2 RAM 데이터버스(제 1 RAM 데이터버스(24)와 유사), 및 RAM 메모리(16)에 연결된 제 2 RAM 버스(40)와 같이 단순하게 그 전체가 집합적으로 표시된 제 2 제어버스(제 1 RAM 제어버스(32)와 유사)를 가진다. 메모리 컨트롤러(12)는 NAND 메모리(14)에 연결된 NAND 어드레스/데이터버스 및 NAND 제어버스(그 모두가 집합적으로 NAND 버스(42)로서 표시됨)를 더 가진다. RAM 메모리(16)는 단일 칩 집적 회로와 같이 메모리 컨트롤러(12) 내에 집적되거나 내장될 수 있다. 선택적으로, RAM 메모리(16)는 메모리 컨트롤러(12)로부터 분리된 집적회로 일 수 있다. 선택적으로, RAM 메모리(16)의 부분들은 메모리 컨트롤러(12)와 집적되고 RAM 메모리(16)의 부분들은 메모리 컨트롤러(12)로부터 분리될 수 있다. 분리 다이(separate die)인 RAM 메모리(16)의 장점은 이후 설명될 것이다. 그러나, 메모리 컨트롤러(12)와 집적된 RAM 메모리(16)의 장점은 동작에 있어서 RAM 메모리(16)가 훨씬 빨라질 수 있다는 것이다.
일 실시예에 있어서, 메모리 컨트롤러(12)는 단일 집적 회로 다이이다. 컨트롤러는 또한 메모리 컨트롤러 집적 회로 다이 내에 내장된 (만약 RAM(16)이 SDRAM 타입의 RAM 메모리이며 메모리 컨트롤러(12)에 대해 외부에 있는 경우, RAM(16)의 동작을 제어하기 위한) 제 1 NOR 메모리(44), 제 2 NOR 메모리(62), SRAM 메모리(46), 및 SDRAM 컨트롤러(48)를 가진다. 물론, 제 1 NOR 메모리(44) 및 제 2 NOR 메모리(62)는 동일한 물리적 NOR 메모리의 일부분일 수 있다. 메모리 컨트롤러(12)의 실시예에 대한 상세 블록도는 도 3에 도시되어 있다. 여기에서 사용된 "NOR 메모리"는 어떠한 타입의 랜덤하게 액세스할 수 있는 비휘발성 메모리를 의미한다. NOR 메모리는 트래핑(trapping) 물질 등을 사용하는 플로팅(floating) 게이트 타입 메모리, ROM 또는 셀들을 포함하나 이에 한정되지는 않는다. 더욱이 여기에서 사용된 "NAND 메모리"는 결함 셀들을 포함할 수 있는 어떠한 타입의 직렬 액세스 비휘발성 메모리를 의미한다.
일 실시예에 있어서, 메모리 컨트롤러(12), RAM 메모리(16) 및 NAND 메모리(14) 각각은 단일 집적 회로 다이로 이루어지며 MCP(Multi-Chip Package) 형태로 함께 패키지된다. 그러한 배치의 장점은 NAND 메모리(14) 용으로 쉽게 입수할 수 있는 다이(die)를 단순히 바꿔줌으로써 또는 만약 속도가 관건인 경우에는 쉽게 입수할 수 있는 NAND 메모리(14)를 바로 바꿔줌으로써 교체할 수 있는 대용량(또는 소요량)의 메모리를 요구하는 사용자 또는 호스트(20)를 위한 것이다. 따라서, 메모리 컨트롤러(12)를 가지며 분리된 다이에 있는 RAM 메모리(16) 및 NAND 메모리(14)는 메모리 장치(10)의 서로 다른 사이즈들 및 속도 또는 성능이 쉽게 조작될 수 있음을 의미한다.
물론, 메모리 컨트롤러(12), RAM 메모리(16) 및 NAND 메모리(14)는 또한 단일 집적 회로 다이로 만들어질 수 있다. 만약 메모리 컨트롤러(12), RAM 메모 리(16) 및 NAND 메모리(14)가 단일 집적 회로 다이로 이루어지는 경우, 메모리 장치(10)의 메모리 능력을 확장시키기 위해 부가적으로 외부적으로 제공되는 NAND 메모리들이 메모리 장치(10)에 부착될 수 있도록 설비 또한 외부 NAND 버스(42)를 제공하도록 만들어질 수 있다.
도 2를 참조하면 호스트 장치(20)에서 바라본 그리고 도 1에 도시된 메모리 장치(10)의 제 1 실시예에 대해 매핑된 어드레스들의 매핑을 보여주는 메모리 맵이 도시되어 있다. 호스트 장치(20)에서 바라본 메모리 맵은 두 개의 일반적인 섹션(section)들 즉 랜덤 액세스 및 대량 저장 액세스를 가진다. 랜덤 액세스 섹션은 하위 메모리 어드레스 위치를 차지한다(비록 그것이 필수사항은 아니라 할지라도). 랜덤 액세스 섹션 내에서, 최하위 메모리 어드레스는 NOR 메모리 액세스 부분(50)을 위한 것이며, 그 뒤를 이어 의사(Pseudo) NOR(PNOR) 메모리 액세스 부분(52), 그 뒤를 이어 RAM 액세스 부분(54), 그 뒤를 이어 구성 액세스 부분(56)이 있다. 각 부분들은 다음과 같이 설명될 수 있다.
호스트 장치(20)에서 바라본 NOR 메모리 액세스 부분(50)은 호스트(20)가 이 부분(50)에서 동작할 때, 그 결과는 물리적 NOR 메모리(14) 상에서의 동작이 된다. 따라서, 물리적 NOR 메모리(44)에 대한 메모리 부분(50)의 매핑은 일대일 대응이 된다. 달리 말해서, NOR 부분(50)에 할당된 메모리 공간의 양은 메모리 장치(10)에서 유용할 수 있는 NOR 메모리(44)의 양에 좌우된다. 일 실시예에서, 메모리 컨트롤러(12)에 내장된 NOR 메모리(44)의 양은 2K 워드 섹터 사이즈 및 32K 워드 블록 사이즈로 이루어진 4 메가비트이다. 더욱이, 호스트 장치(20)가 자신이 NOR 부 분(50) 상에서 동작하고 있다고 믿고 있을 때(읽기/쓰기/삭제 등의 명령을 출력할 때와 같이), 그 결과로서 생기는 동작은 즉시 NOR 메모리(44) 상에 있게 된다. 이러한 NOR 부분(50)은 지연시간(latency)이 없는 랜덤 액세스를 요구하는 성능 임계(critical) 코드/데이터를 저장하고자 하는 호스트 장치(20)에 의해 사용될 수 있다. 더욱이, 만약 프로그램이 NOR 메모리(44)에 저장되면, 그것은 NOR 메모리(44) 내의 그 자리에서 실행될 수 있다. 따라서 NOR 메모리(44)는 호스트 장치(20)를 "부팅"시키는 프로그램 또는 코드를 저장할 수 있다.
호스트 장치(20)에서 바라본 PNOR 부분(52)은 호스트(20)가 이 부분(52)에서 동작할 때, 호스트(20)는 자신이 비휘발성인 RAM 메모리(16) 상에서 동작하고 있다고 믿게 된다. 그러므로, 호스트 장치(20)에게 있어서, PNOR 부분(52)에 저장된 데이터가 비휘발성인 경우를 제외하고 호스트 장치는 어떠한 다른 RAM 메모리(16)와 같이 모든 NOR 프로토콜 명령들을 출력하지 않으면서 PNOR 메모리 부분(52) 상에서 동작할 수 있게 된다. 일 실시예에 있어서, PNOR 부분(52)은 NAND 메모리와 같이 각각이 8K 바이트, 2K 바이트, 또는 512K 바이트인 페이지들로 구분된다. 동작에 있어서, 호스트 장치(20)가 메모리 장치(10)와 인터페이스 할 때, 호스트 장치는 RAM 메모리(16)와, NAND 메모리(14)로의 그리고 NAND 메모리(14)로부터의 데이터를 "백업"하고 RAM 메모리(16)와 NAND 메모리(14) 사이의 데이터 일관성(coherence)을 유지하는 메모리 컨트롤러(12)와, 그리고 호스트 장치(20)에 의해 제공되는 어드레스를 NAND 메모리(14)에 있는 실제 데이터의 어드레스로 매핑시키는 메모리 컨트롤러(12)와 인터페이스한다. 실제 RAM 메모리(16) 보다 유용 가능 한 많은 양의 NAND 메모리(14)가 있기 때문에, PNOR 부분(52)은 RAM 메모리(16)에서 유용 가능한 실제 메모리의 양 보다 훨씬 많은 메모리 공간이 될 수 있다.
더욱이, PNOR 부분(52)은 각각이 RAM 메모리(16)에 있는 구역 즉 구역(zone)0, 구역1, 구역2 및 구역3으로 매핑된 4개의 영역들로 구분될 수 있다. 각 구역은 서로 다른 매핑 등급을 가질 수 있다. PNOR 부분(52)에 있는 어느 한 영역으로부터 RAM 메모리(16)의 어느 한 구역으로의 매핑이 일대일 대응인 경우, 그때 이것은 "스테틱 페이징 모드(static paging mode)"로 불려진다. PNOR 부분(52)에 있는 어느 한 영역으로부터 RAM 메모리(16)에 있는 어느 한 구역으로의 매핑이 다대일 대응인 경우, 그때 이것은 "다이나믹 페이징 모드(dynamic paging mode)"로 불려진다. 스테틱 페이징 모드 매핑은 PNOR 부분(52)에 있는 메모리 공간의 양 예컨대 256 페이지들(또는 2K 바이트 페이지들의 경우에는 512K 바이트들)이 항상 RAM(16)에 있는 동일한 양의 메모리 공간 예컨대 256 페이지들(또는 512K 바이트들)로 매핑되는데 있어서 가장 적은 지연시간을 발생시키며, 그것은 다음에 NAND 메모리(14)에 있는 256 페이지들(또는 512K 바이트들)로 매핑된다. 이러한 상황에서, RAM 메모리(16)는 또한 랜덤 액세스이기 때문에 동작하는 동안 액세스에 있어서의 지연시간이 없다 할지라도, 초기 로드 및 NAND 메모리(14)로부터 RAM 메모리(16)로의 그리고 RAM 메모리(16)로부터 NAND 메모리(14)로의 저장에 있어서는 지연시간이 있게 된다. 다이나믹 페이징 모드 매핑에 있어서, PNOR 부분(52)에 있는 40,000 페이지들의 메모리 공간이 RAM 메모리(16)의 512 페이지들로 매핑되고, 다음에 그것이 NAND 메모리(14)의 40,000 페이지들로 매핑되는 매핑과 같이, 많은 양 의 지연시간이 발생하게 될 것이다. 이러한 지연시간은 만약 캐시(cache)가 없다면 NAND 메모리(14)로부터 RAM(16)으로 제일 먼저 로드될 데이터/프로그램을 요구할 수 있는, PNOR 부분(52)으로부터 데이터/프로그램을 검색(retrieving)하는 동작이 이루어지는 동안 뿐만 아니라 NAND 메모리(14)로부터 RAM(16)으로의 데이터/프로그램의 초기 로딩이 이루어지는 동안 모두 발생하게 될 것이다. 따라서, PNOR 부분(52)에 대한 지연시간은 구성된 구역들의 크기에 따라 달라지게 될 것이다. RAM 메모리(16)의 각 구역의 경계 그리고 그에 따라 얼마나 많은 메모리 공간이 PNOR 부분(52)의 각 영역으로부터 RAM 메모리(16)로 매핑되는지는 호스트 장치(20) 또는 사용자에 의해 결정될 수 있다. 결과적으로 호스트 장치(20)는 4개의 구역들이 프로그램 또는 시간 임계 데이터를 저장/검색하기 위해 스테틱 페이징 모드에서 동작하거나 또는 시간 임계가 아닌 프로그램 또는 데이터를 저장/검색하기 위해 다이나믹 페이징 모드에서 동작하도록 구성할 수 있으며, 이때도 만약 캐시가 없다면 지연시간이 발생하게 되는 결과를 가져온다.
구역이 스테틱 페이징 모드용으로 구성되는 상황에 있어서, PNOR 부분(52)에 있는 같은 양의 메모리 공간은 항상 RAM 메모리(16)에 있는 같은 양의 공간에 매핑되기 때문에, 데이터 읽기 일관성은 일어나지 않는다. 그러나, 데이터 쓰기 일관성은 여전히 실행되어진다. 그러나, 구역이 다이나믹 페이징 모드용으로 구성되는 상황에 있어서는, 데이터 일관성이 반드시 제공되어야 한다. 호스트 장치(20)는 두 개의 캐시 일관성(cache coherence) 모드들 중 어느 하나에서 동작되도록 구역을 구성할 수 있다. 첫 번째 모드에 있어서, 호스트 장치(20)는 캐시 일관성 모드 를 초기화시킨다. 이러한 모드에서, 호스트 장치(20)는 호스트 장치(20)에 의해 요구되는 동안 및 요구되는 때 RAM 메모리(16)에서의 캐시 동작을 플러시(flush)한다. 두 번째 모드에 있어서, 메모리 컨트롤러(12)는 RAM 메모리(16)와 NAND 메모리(14)에 있는 캐시 사이에서 데이터의 일관성을 유지하기 위해 메모리 컨트롤러(12)에 의해 요구되는 동안 및 요구되는 때 RAM 메모리(16)에서의 캐시 동작을 플러싱함으로써 캐시 일관성 모드를 초기화한다.
일단 PNOR 부분(52) 용 메모리 공간의 양 및 RAM 메모리(16)에 대한 그들의 매핑이 사용자에 의해 설정되면, RAM 메모리(16)에서 나머지 유용 가능한 메모리 공간은 RAM 메모리 액세스 부분을 위해 사용되도록 유용된다. 호스트 장치(20)에서 바라본 RAM 메모리 액세스 부분(54)은 호스트 장치(20)가 이 부분(54)에서 동작할 때, 그 결과는 물리적인 RAM 메모리(16) 상에서의 동작이 된다. 따라서, 물리적인 RAM 메모리(16)에 대한 메모리 부분(54)의 매핑은 일대일 대응된다. 더욱이, RAM 메모리 부분(54)에 할당되는 메모리 공간의 양은 메모리 장치(10)에서 유용 가능한 전체 RAM 메모리(16)의 양 및 RAM 메모리(16)로의 PNOR 메모리(52)의 메모리 공간 부분에 대한 매핑 정도에 의존한다. 호스트가 자신이 RAM 부분(54) 상에서 동작하고 있다고 믿고 있을 때(읽기/쓰기 등의 명령들을 생성하는 것과 같이), 그 결과로 생성되는 동작은 바로 RAM 메모리(16) 상에 있게 된다. 이러한 RAM 부분(54)은 메모리 공간을 버퍼 영역으로 사용하고자 하는 호스트 장치(20)에 의해 사용될 수 있다. 각 구역에서 RAM 메모리(16)로의 PNOR 부분(52)의 메모리 공간에 대한 매핑은 사용자에 의해 정해질 수 있으며, RAM 메모리(16)의 전체 양은 이미 알려져 있기 때문에, PNOR 부분(52)과 RAM 부분(54) 사이의 경계는 사용자에 의해 간접적으로 정해진다. 따라서, 많은 양의 버퍼를 갖는 것이 바람직하다면, 하나 이상의 구역들에서 PNOR 부분(52)과 RAM 메모리(16) 사이의 매핑을 줄여줌으로써 많은 양의 RAM 부분(54)이 할당되도록 할 수 있다. 또한, PNOR 부분(52)과 RAM 부분(54) 사이의 경계는 각 구역에서 메모리 컨트롤러(12)를 리셋하고 PNOR 부분(52)과 RAM 메모리(16)의 메모리 공간 사이에서의 매핑을 재확립시킴으로써 메모리 장치(10)가 동작되는 동안 변경될 수 있다.
RAM 메모리(16)의 각 구역들에 대한 메모리 맵을 위한 경계들 및 PNOR 부분(52)의 메모리 공간의 크기는 메모리 컨트롤러(12)에 있는 비휘발성 구성 레지스터들(60)에 미리 할당되어 저장될 수 있다. 구성 레지스터들(60)로의 액세스는 구성 액세스 부분(56)을 통해 이루어진다. 비휘발성 구성 레지스터들(60)은 내장된 NOR 메모리(62)의 일부분일 수 있다. 선택적으로, RAM 메모리(16)의 각 구역들에 대한 메모리 맵을 위한 경계들 및 PNOR 부분(52)의 메모리 공간의 크기는 하나 이상의 칩 선택 핀들을 통해 사용자에 의해 선택될 수 있다. 그러한 상황에서, 메모리 컨트롤러(12)가 파워 온 될 때, 서로 다른 메모리들에 대한 경계들은 리셋된다. NOR 메모리(62)는 또한 부트 업(boot up)되는 동안 그리고 메모리 컨트롤러(12)와 MCU(64)가 동작하는 동안 메모리 컨트롤러(12)에 의해 실행되는 펌웨어 코드(61)를 저장한다.
마지막으로, 대량 저장 액세스 섹션(58)에 있어서, 호스트 장치(20)가 메모리 공간의 그 섹션에 액세스할 때, 호스트 장치(20)는 자신이 ATA 디스크 드라이브 에 접근하고 있다고 믿게 된다. 메모리 컨트롤러(12)는 잘 알려진 플래시 파일 시스템(FFS) 프로토콜을 사용하여 논리적 ATA 디스크 드라이브 공간 어드레스들을 NAND 메모리(14) 물리적 공간 어드레스로 번역한다. 일 실시예에 있어서, 읽기 동작을 위해, 대량 저장 액세스 섹션(58)의 시작 부분은 ATA 태스크 파일 레지스터(79)로 로드되는 16 바이트의 논리적 어드레스로 이루어진다. 메모리 컨트롤러(12)는 AND 메모리(14) 내에 있는 특정 "페이지"로 접근하기 위해 16 바이트의 태스크 명령 및 논리적 어드레스를 디코드하고 그것을 물리적 주소로 변환한다. NAND 메모리(14)에 있는 페이지로부터 512 바이트의 페이지가 읽혀지고 다음에 호스트 장치(20)에 의해 액세스되는 데이터 레지스터(81)로 순차적으로 또는 랜덤하게 로드된다. 쓰기 동작에 대해서는, 그 반대로 이루어진다. 512 바이트들의 데이터가 저장될 논리적 어드레스는 먼저 태스크 파일 레지스터들(79)로 로드된다. 쓰기 명령이 태스크 파일 레지스터(79)에 기록된다. 메모리 컨트롤러(12)는 NAND 메모리(14)에 있는 특정 페이지를 액세스하기 위해 쓰기 명령으로서 태스크 파일 레지스터들에 있는 명령들을 디코드하고 그것을 물리적 주소로 변환하며, 데이터 레지스터들(81)에 있는 512 바이트들을 그 위치에 저장한다. 다른 실시예에 있어서, 핑퐁 구성으로 일컬어지는 형태로 두 개의 데이터 레지스터들(81)(a 및 b)(미도시)이 있을 수 있다. 그러한 상황에서, 데이터 레지스터들(81a) 중 하나는 이전에 NAND 메모리(14)의 페이지로부터 로드된 데이터와 함께 512 바이트들의 데이터를 호스트 장치(20)로 제공하기 위해 사용되며, 반면에 다른 데이터 레지스터(81b)는 데이터 레지스터(81a)로부터의 데이터가 완전히 읽혀진 후 호스트 장치(20)로 데이터를 제공하기 위해 NAND 메모리(14)의 다른 페이지로부터의 데이터를 데이터 레지스터(81b)로 로드하는데 사용된다. 이러한 방법에 있어서, NAND 메모리(14)로부터의 데이터에 대한 많은 페이지들을 가로지는 연속적인 읽기 동작이 발생된다. 데이터 레지스터들(81)(a 및 b)은 많은 연속적인 페이지들의 데이터가 약간의 지연이 또는 지연이 없는 셋업 타임으로 NAND 메모리(14)에 기록될 수 있도록 하기 위해, 쓰기 동작 동안 핑퐁 형태로 사용될 수 있다.
상술된 바와 같이, 메모리 장치(10)와 호스트 장치(20) 사이의 인터페이스는 직렬버스를 통해 이루어질 수 있다. 특히, 그러한 직렬버스는 메모리 장치(10)의 RAM 부분을 호스트 장치(20)와 연결시키는 종래의 병렬버스를 가지고 메모리 장치(10)의 NOR 또는 PONR 영역을 호스트 장치(20)와 연결시킬 수 있다.
도 3을 참조하면 RAM 메모리(16) 및 NAND 메모리(14)와 인터페이스되는 메모리 컨트롤러(12)의 상세 블록도가 도시된다. 메모리 컨트롤러(12)는 마이크로컨트롤러(64)를 구비한다. 마이크로컨트롤러(64)는 FFS의 모든 북키핑(bookkeeping) 기능들을 수행하거나 실행한다. 또한, 이것은 결함 관리(DM:Defect Management) 및 캐시 데이터 일관성 알고리즘들 및 캐시 플러시(flush) 대체 알고리즘들을 수행하거나 실행한다. 마지막으로, 마이크로컨트롤러(64)는 캐시 페이징 설계(scheme) 알고리즘들을 수행하거나 실행한다. 이러한 모든 동작들은 부트 업 동작 또는 메모리 컨트롤러(12)의 초기화를 포함하는 NOR 메모리(62)에 저장된 펌웨어 또는 프로그램 코드(61)에 의해 획득된다.
마이크로컨트롤러(64)는 상술된 바와 같이 마이크로컨트롤러(64)에 의한 실 행을 위한 펌웨어(61)를 저장하는 제 2 NOR 메모리(62)에 연결된다. 비휘발성 구성 레지스터들(60)을 저장하는 것에 덧붙여, NOR 메모리(62)는 또한 FFS 및 DM의 동작을 위한 펌웨어를 저장한다.
마이크로컨트롤러(64)는 또한 MUX(74)를 통해 SRAM 메모리(46)와 인터페이스한다. SRAM 메모리(46)는 마이크로컨트롤러(64)에 대해 로컬 고속 버퍼로서 기능하여 런타임 데이터를 저장한다. 게다가, SRAM 메모리(46)는 결함 맵 캐시 및 FFS 데이터 구조를 저장할 수 있다.
비록, 메모리 컨트롤러(12)에 대한 상세한 설명이 하드웨어 구성들에 관하여 설명되었다 할지라도, 이후 설명되는 모든 기능들은 또한 마이크로컨트롤러(64)에 의한 실행을 위해 소프트웨어 형태로 수행될 수 있다.
메모리 컨트롤러(12)는 컨텐츠 어드레스어블(addressable) 메모리(66)의 특성으로 수행될 수 있는 커런트(current) 캐시 페이지 레지스터들(66)을 구비한다. CAM(66)의 기능은 현재의 PNOR 캐시 페이지 어드레스들을 유지하고 PNOR 부분(52)에 대한 읽기 또는 쓰기 동작이 이루어지는 동안에 액세스 실패가 발생할 때 CAM(66)을 업데이트한다. CAM(66) 내의 각 엔트리는 세 개의 부분 즉 페이지 어드레스 부분(66a), 인덱스 어드레스 부분(66b), 및 상태 부분(66c)을 가진다. 비록 본 발명이 다음의 실시예들에 한정되지는 않지만, 메모리 컨트롤러 및 CAM 메모리(66)의 기능에 관한 것에 이어지는 설명은 다음의 예들에 관한 것이다. 호스트 장치(20)로부터의 어드레스는 21 최상위 비트들(비트 11-31) 및 11 최하위 비트들(비트 0-11)로 이루어진 32 비트라 가정한다. 21 최상위 비트들은 페이지 어드레 스를 구비하는 반면에 11 최하위 비트들은 오프셋 어드레스를 구비한다. CAM 메모리(66)에서 각 엔트리는 또한 21비트들로 이루어진 페이지 어드레스 부분(66a), 9 비트들로 이루어진 인덱스 어드레스 부분(66b), 및 유효 비트 1비트(없을 수 있음); 더티(또는 클린) 비트 1비트; 스테틱(또는 다이나믹) 비트 1비트; 캐시 일관성을 초기화(또는 컨트롤러를 초기화)하는 호스트 1비트; 마지막 액세스 타임 스탬프를 위한 8비트의 12비트들로 이루어진 상태 부분을 구비한다. 호스트 장치(20)로부터의 32비트를 가지고, 호스트 장치는 232 바이트들 또는 1 GB 양의 메모리 공간을 어드레스할 수 있다. 후술되는 바와 같이, 메모리 컨트롤러(12)는 호스트 장치(20)로부터의 오프셋 어드레스로부터의 11비트와 함께 CAM 메모리(66)로부터의 9비트들의 인덱스 어드레스 부분을 사용하여 20비트 어드레스를 형성함으로써 RAM(16)에 대해 1 MB의 어드레싱이 가능하다. 물론, 이러한 숫자는 단지 한 실시예에 불과하며 본 발명을 제한하지 않는다.
메모리 컨트롤러(12)는 또한 적중/손실(Hit/Miss) 비교 로직(68)을 구비한다. 적중/손실 비교 로직(68)은 어드레스버스(22)로부터 어드레스 신호들을 그리고 제어버스(32)로부터 제어 신호들을 수신한다. 다음에 적중/손실 비교 로직(68)은 호스트 장치(20)로부터의 어드레스 32비트로부터의 페이지 어드레스 21비트를 CAM 메모리(66)로 전송한다. CAM 메모리(66)는 그러한 페이지 어드레스 21비트를 CAM 메모리(66)의 각 엔트리에 저장된 페이지 어드레스(66a)와 비교한다. 만약 적중(HIT) 즉, 호스트 장치로부터의 페이지 어드레스 21비트가 CAM 메모리(66)에 있 는 엔트리들 중 어느 하나와 일치하면, 그때 CAM 메모리(66)는 인덱스 어드레스(66b)의 관련된 9비트를 MUX(70)로 출력한다. 만약 손실(Miss)이 있으면, 적중/손실 비교 로직(68)은 읽기 손실 신호 또는 쓰기 손실 신호를 발생시킨다. 읽기 손실 신호 및 쓰기 손실 신호들은 데이터 일관성을 수행하기 위한 마이크로 코드 컨트롤러(MCC)/에러 코드 보정(ECC)부(72)에 대한 신호로서 MCC/ECC부(72)로 공급된다. MCC/ECC부(72)로 공급된 신호는 적중(RAM 메모리(16)에 저장된 현재 페이지 어드레스 중 하나가 어드레스버스(22) 상에 공급된 호스트 장치(20)로부터의 어드레스임을 나타냄) 또는 손실(RAM 메모리(16)에 저장된 현재 페이지 어드레스 중 어느 것도 어드레스버스(22) 상에 공급된 호스트 장치(20)로부터의 어드레스가 아님을 나타냄)이다. 마지막으로, 적중/손실 비교 로직(68)은 또한 대기 상태 신호(26)에 연결된다. 대기 상태 신호(26)는 메모리 컨트롤러(12)가 버스 사이클 동작을 유지하고자 한다는 것을 메모리 컨트롤러(12)가 호스트 장치(20)에게 알리고자 할 때 발생된다. 대기 상태 신호(26)는 호스트 장치(20)가 다시 동작을 시작하도록 버스들(22/24/32)을 릴리즈(release)하기 위해 디어저트(de-assert)된다. 메모리 컨트롤러(12)에 의해 어저트(assert)된 대기 상태 신호(26)의 한 예는 읽기/쓰기 손실이 있고 메모리 컨트롤러(12)가 NAND 메모리(14)에 있는 어드레스로부터 데이터를 검색하고 그것을 RAM 메모리(16)에 로드하는 것이 필요할 때이다. 데이터가 NAND 메모리(14)로부터 검색되고 RAM 메모리(16)에 로드되는 시간 동안, 대기 상태 신호(26)는 메모리 컨트롤러(12)에 의해 어저트된다.
메모리 컨트롤러(12)는 또한 마이크로컨트롤러(64)의 제어하에서 동작하는 MCC/ECC부(72)를 구비한다. MCC/ECC부(72)는 캐시 데이터 일관성, 플러시 대체 및 페이징 동작들을 위해 읽기 손실/쓰기 손실 신호들을 모니터한다. 또한, 마이크로컨트롤러(64)의 제어하에서, 이것은 NAND 메모리(14)를 동작시키고 NAND 메모리(14)에 대한 결함 관리 동작을 제공한다. 더욱이, 마이크로컨트롤러(64)의 제어하에서, MCC/ECC부(72)는 NAND 메모리(14), RAM 메모리(16), 및 SRAM 메모리(46) 사이에서 데이터를 이동시키기 위해 DMA 기능을 제공한다. 마지막으로, MCC/ECC부(72)는 NAND 메모리(14)에 저장된 데이터에 대해 에러 검출 및 보정을 수행한다.
메모리 컨트롤러(12)는 또한 보안 및 디지털 권리 관리를 제공하는 암호 엔진(90)을 구비한다. 게다가, 메모리 컨트롤러(12)는 RAM 메모리(16)의 양을 증가시키기 위해 사용되도록 그 안에 내장된 즉 동일한 집적 회로 다이 상에 형성된 부가적인 RAM 메모리(92)를 가질 수 있다. 상술된 바와 같이 RAM 메모리(16)는 메모리 컨트롤러(12)에 내장된 RAM 메모리(92)가 RAM 메모리(16)를 증가시키는 경우에 있어서는 분리 집적 회로 다이일 수 있다. 그러나, 만약 RAM 메모리(16) 및 메모리 컨트롤러(12)가 동일한 다이에 집적되면, 그때 RMA 메모리(16) 및 RAM 메모리(92)는 둘 다 동일한 메모리 어레이의 일부분이 될 수 있다.
메모리 장치(10)는 다양한 동작 모드들에 관하여 설명될 것이다. 파워 온 동안에, 적중/손실 로직(68)은 대기 신호를 생성하고 그 대기 상태 신호(26)를 어저트한다. 메모리 컨트롤러(12)는 비휘발성 레지스터들(60)로부터 구성 파라메터들을 읽고 그들을 휘발성 레지스터들(46)(SRAM(46)의 일부일 수 있음)로 로드한다. 스테틱 페이지 즉 PNOR 부분(52)에 대해 정적으로 매핑되는 NAND 메모리(14)로부터 의 데이터는 또한 NAND 메모리(14)로부터 읽혀져 RAM 메모리(16)에 저장될 수 있다. 이는 FFS 프로토콜을 실행시켜 NAND 메모리(14)로부터의 페이지의 어드레스를 번역하고 NAND 메모리(14)로부터 데이터를 검색하여 그것들을 RAM 메모리(16)에 저장하기 위해 NAND 메모리(14)로의 물리적 어드레스 및 제어신호들을 생성하는 MCC/ECC(72)를 통해 마이크로컨트롤러(64)에 의해 행해진다. 파워 온 동안에, MCU(64) 및 MCC/ECC(72)는 또한 마스터 인덱스 테이블을 찾아내기 위해 NAND 메모리(14)를 스캔하게 된다. 마스터 인덱스 테이블이 읽혀져 로컬 SRAM 메모리(46)에 저장된다. MCU(64)는 마스터 인덱스 테이블의 데이터 구조 무결성을 체크하게 된다. MCU(64) 및 MCC/ECC(72)는 또한 마스터 인덱스 테이블의 재구성이 필요한지 여부를 결정하기 위해 NAND 메모리(14)를 스캔하게 된다. MCU(64) 및 MCC/ECC(72)는 또한 NAND 메모리(14)로부터의 두 페이지의 데이터를 로컬 SRAM 메모리(64)로 가져간다. Vpage로 불려지는 NAND 메모리(14)로부터의 첫 번째 두 페이지는 NAND 메모리에 있는 결함있는 섹터들을 스킵(skip)하면서 호스트 장치(20)의 로직 어드레스를 NAND 메모리(14)의 물리적 어드레스로 매핑하기 위한 데이터를 포함한다. 그때 FFS는 매핑 번역 요구를 받아들일 준비를 하고 있는다. 다음에 적중/손실 비교 로직(68)은 대기 상태 신호(26)를 디어저트 즉 대기 상태 신호(26)를 릴리즈한다.
파워 온 동안에, 메모리 컨트롤러(12)가 NAND 메모리(14)로부터 스테틱 페이지를 검색하여 그것들을 RAM 메모리(16)에 저장하고, NAND 메모리(14)의 마스터 인덱스 테이블을 업데이트하는 것과 같은 다른 오버헤드(overhead) 기능들을 수행하 는 동안, 메모리 장치(10)는 여전히 호스트 장치(20)에 의해 사용이 가능하다는 것을 주목해야 한다. 특히, 대기 상태 신호(26)의 어져션(assertion)은 단지 메모리 공간의 PNOR 부분(52)에게 직접적으로 어드레스를 요구하는 그러한 동작들에 대해서만 영향을 주기 때문에, NOR 메모리(44)는 심지어 파워가 온 되어 있는 동안에도 호스트 장치(20)에 의해 액세스될 수 있다.
NOR 메모리 동작
NOR 메모리(44) 읽기 동작에 있어서, 호스트 장치(20)는 메모리 공간의 NOR 메모리 액세스 부분(50) 내에 있는 어드레스버스(22)를 따라 어드레스 신호를 메모리 장치(10)로 전송한다. 또한, 적절한 제어 신호들이 호스트 장치(20)에 의해 제어버스(32)를 따라 메모리 장치(10)로 전송된다. 어드레스 신호들은 PNOR 메모리 액세스 부분(52)에 있다기 보다는 공간상에 있기 때문에, 적중/손실 비교 로직(68)은 구동되지 않으며, 대기 상태 신호(26)는 어저트되지 않는다. 어드레스 신호들 및 제어 신호들은 제공된 어드레스로부터 데이터가 읽혀지는 NOR 메모리(44)로 제공된다. 다음에 데이터는 데이터버스를 따라 MUX(84)로 제공되고 데이터버스(24)를 따라 호스트 장치(20)로 출력됨으로써 읽기 사이클이 완료된다.
NOR 메모리(44)의 쓰기 또는 프로그램 동작에 있어서, 호스트 장치(20)는 메모리 공간의 NOR 메모리 액세스 부분(50) 내에 있는 어드레스버스(22)를 따라 어드레스 신호를 메모리 장치(10)로 전송한다. 또한, 적절한 제어 신호들이 호스트 장치(20)에 의해 제어버스(32)를 따라 메모리 장치(10)로 전송된다. 어드레스 신호 들은 PNOR 메모리 액세스 부분(52)에 있다기 보다는 공간상에 있기 때문에, 적중/손실 비교 로직(68)은 구동되지 않으며, 대기 상태 신호(26)는 어저트되지 않는다. 어드레스 신호들 및 제어 신호들은 NOR 메모리(44)로 제공된다. 기록될 또는 프로그램될 데이터 및 프로그램 명령들은 데이터버스(24)를 따라 호스트 장치(20)로부터 메모리 컨트롤러(12) 및 MUX(84)로 전송된다. MUX(84)로부터, 데이터는 어드레스버스(22)를 따라 제공된 어드레스에서 그 데이터가 프로그램되는 NOR 메모리(44)로 전송된다. 호스트 장치(20)는 NOR 메모리(44)가 바이트 단위로 프로그램될 수 있도록 바이트 프로그램 동작을 수행한다. 쓰기 또는 프로그램 사이클은 데이터가 NOR 메모리(44)에 기록된 때 완료된다.
NOR 메모리(44)의 삭제 동작에 있어서, 섹터 삭제 또는 블록 삭제와 같이, 호스트 장치(20)는 메모리 공간의 NOR 메모리 액세스 부분(50) 내에 있는 어드레스버스(22)를 따라 어드레스 신호를 메모리 장치(10)로 전송한다. 또한, 적절한 제어 신호들이 호스트 장치(20)에 의해 제어버스(32)를 따라 메모리 장치(10)로 전송된다. 어드레스 신호들은 PNOR 메모리 액세스 부분(52)에 있다기 보다는 공간상에 있기 때문에, 적중/손실 비교 로직(68)은 구동되지 않으며, 대기 상태 신호(26)는 어저트되지 않는다. 어드레스 신호들 및 제어 신호들은 NOR 메모리(44)로 제공된다. 삭제 명령 프로토콜을 나타내는 데이터 신호는 데이터버스(24)를 따라 호스트 장치(20)로부터 메모리 컨트롤러(12) 및 MUX(84)로 전송된다. MUX(84)로부터, 데이터는 그 데이터가 NOR 메모리(44)에 의해 디코드되는 NOR 메모리(44)로 전송되며, 그때 삭제 동작이 실행된다. 삭제 사이클은 NOR 메모리가 삭제 사이클을 완료 한 때 완료된다.
PNOR 메모리 동작 - 읽기
PNOR 메모리의 읽기 동작에 있어서, 호스트 장치(20)는 메모리 공간의 PNOR 메모리 액세스 부분(52) 내에 있는 어드레스버스(22)를 따라 어드레스 신호를 메모리 장치(10)로 전송한다. 여기에는 두 가지의 가능성 즉 읽기 적중 및 읽기 손실이 존재한다.
읽기 적중의 경우에 있어서, 어드레스버스(22)를 따라 제공되는 어드레스 신호들의 페이지 어드레스 부분은 적중/손실 비교 로직(68)에 의해 수신되며, CAM(66)에 저장된 것과 같이 현재 RAM 메모리(16)에 있는 어드레스와 비교된다. 만약 어드레스버스(22)를 따라 제공된 페이지 어드레스가 CAM(66)에 저장된 페이지 어드레스 내에 있으면, 그때 적중이 된다. 적중/손실 비교 로직(68)은 RAM 메모리(16)를 어드레스하기 위해 호스트 장치(20)로부터의 오프셋 어드레스와 연관된 CAM 메모리(66)로부터의 관련 인덱스 어드레스(66b)와 함께 어드레스 및 제어 신호들이 RAM 메모리(16)로 향하도록 MUX(70)를 활성화시킨다. 다음에 RAM 메모리(16)로부터의 그 최하위어드레스로부터 읽혀진 데이터는 MUX(80)로 전송되며 그곳에서 그들은 MUX(84)(MUX(80)에 대한 디폴트 상태)로 제공되며, MUX(84)는 적중/손실 비교 로직(68)에 의해 데이터가 데이터버스(24)를 따라 호스트 장치(20)로 전송되도록 제어(미도시)됨으로써 읽기 사이클이 완료된다.
읽기 손실의 경우에 있어서, 여기에는 많은 가능성들이 존재한다. 첫 번째 는 캐시 플러시를 수반하지 않는 읽기 손실이라 불려지는 가능성이다. 어드레스버스(22)로부터의 어드레스 신호의 페이지 어드레스 부분을 CAM(66)으로부터의 페이지 어드레스 레지스터(66a)와 비교하여 그 결과가 손실인 경우 즉 어드레스버스(22) 상의 페이지 어드레스가 RAM 메모리(16)에 저장된 페이지의 어드레스들 내에 있지 않는 경우, 그때 적중/손실 비교 로직(68)은 MCC/ECC부(72)가 읽기 일관성 사이클을 초기화하도록 읽기 손실 신호를 MCC/ECC부(72)로 전송한다. 또한, 적중/손실 비교 로직(68)은 대기 상태 신호(26) 상에 신호를 어저트한다. MCU(64)의 제어하에 있는 MCC/ECC부(72)는 호스트 장치(20)에 의해 제공된 어드레스를 NAND 메모리(14)에서의 물리적 어드레스로 번역하기 위해 FFS 동작을 실행한다. 다음에 MCC/ECC부(72)는 NAND 메모리(14)로 적절한 어드레스 및 제어 신호들을 그리고 RAM 메모리(16)로 적절한 어드레스 및 제어신호들을 발생시킨다.
어드레스버스(22) 상에 특정된 어드레스로부터의 데이터를 포함하는 데이터의 전체 페이지는 NAND 메모리(14)로부터 읽혀져 MUX(80)를 통해 RAM 메모리(16)로 전달되어, 이곳에서 MCC/ECC부(72)에 의해 특정된 RAM 메모리(16)에 있는 위치들의 전체 페이지에 쓰여지며, 에러 보정 확인 등과 같은 것을 통해 데이터의 무결성이 보장하기 위해 MCC/ECC부(72)에 의해 그 후 즉시 동작된다. 다음에 현재의 읽기 손실 어드레스 내에 있는 어드레스 페이지의 어드레스를 더하기 위해 CAM(66)의 커런트 페이지 어드레스 레지스터들이 업데이트된다. 적중/손실 비교 로직(68)은 대기 상태 신호 상에 신호를 디어저트한다. 그 다음에, MCU(64)는 MUX(80)를 디폴트 위치로 전환한다. 적중/손실 비교 로직(68)은 RAM 메모리(16)를 어드레스하기 위 해 그 인덱스 어드레스가 어드레스버스(22)로부터의 오프셋 어드레스 부분과 결합되는 MUX(70)로 인덱스 어드레스(66b)를 전송한다. 다음에 RAM 메모리(16) 상에서의 그 읽기 동작으로부터의 데이터는 MUX(80)를 통하고 MUX(84)를 통해 데이터버스(24)로 그리고 호스트 장치(20)로 전송됨으로써 사이클을 완료한다. NAND 메모리(14)로부터 읽혀지는 데이터의 양은 페이지 단위이기 때문에, 데이터의 전체 페이지는 RAM 메모리(16)에 저장되어야 한다. 캐시 플러시가 없는 이러한 읽기 손실의 시나리오는 RAM 메모리(16)의 전체 페이지가 NAND 메모리(14)로부터의 데이터를 저장할 수 있거나 데이터의 전체 페이지가 저장되어지는 RAM 메모리(16)에 있는 위치가 일관성 데이터(NAND 메모리(14)에 있는 데이터와 동일)를 포함하는 것을 가정하며, 그때 NAND 메모리(14)로부터 읽혀진 데이터의 전체 페이지는 RAM 메모리(16)에 있는 위치에 저장될 수 있다. 캐시 플러시는 RAM 메모리(16)로부터 NAND 메모리(14)로의 데이터의 쓰기를 의미하며, 그것에 의해 데이터 일관성 문제의 캐시(RAM 메모리(16))가 플러싱된다.
읽기 손실에 대한 다른 가능한 시나리오는 캐시 플러시를 수반한 읽기 손실로 불려진다. 이러한 시나리오에 있어서, NAND 메모리(14)로부터의 데이터의 전체 페이지는 NAND 메모리(14)에 있는 데이터보다 새로운 RAM 메모리(16)에 있는 일부 데이터를 오버라이팅(overwriting)하지 않고는 RAM 메모리(16)에 저장될 수 없다. 이는 데이터 일관성 문제를 야기시킨다. 따라서, 서로 다른 위치에 있는 NAND 메모리(14)로부터의 데이터가 RAM 메모리(16)로 읽혀질 수 있게 되기 전에, RAM 메모리(16)에 있는 데이터의 페이지가 먼저 NAND 메모리(14)에 기록된다. 동작의 순서 는 다음과 같다. 어드레스버스(22)로부터의 어드레스 신호가 어느 현재 페이지 어드레스들 내에 있는지 여부를 결정하기 위해 호스트 장치(20)로부터의 어드레스로부터의 어드레스 신호에 대한 페이지 어드레스 부분은 CAM(66)으로부터의 페이지 어드레스 신호들(66a)과 비교된다. 이러한 비교 결과가 손실인 경우, 적중/손실 비교 로직(68)는 MCC/ECC부(72)가 읽기 일관성 사이클을 초기화하도록 MCC/ECC부(72)에게 읽기 손실 신호를 전송한다. 그 다음에, 적중/손실 비교 로직(68)은 대기 상태 신호(26) 상에 신호를 어저트한다. MCU(64)의 제어하에 있는 MCC/ECC부(72)는 NAND 메모리(14)로부터의 데이터가 RAM 메모리(16)로 읽혀져야 하는 데이터 일관성 문제가 있기 때문에 RAM 메모리(16)에 있는 데이터의 페이지가 반드시 먼저 NAND 메모리(16)에 쓰여지도록 결정한다. MCU(64)는 RAM 메모리(16)로부터의 어드레스를 NAND 메모리(14)에서의 어드레스로 번역하기 위해 FFS 동작을 실행시킨다.
데이터의 전체 페이지는 RAM 메모리(16)로부터 읽혀져, MUX(80)를 거쳐 NAND 메모리(14)로 제공되어, NAND 메모리(14)에 저장된다. 그 후, 호스트 장치(20)로부터의 어드레스는 FFS 동작에 의해 MCU(64)에 의한 물리적 NAND 어드레스로 변환된다. 다음에 MCC/ECC부(72)는 MCU(64)의 제어하에서 적절한 어드레스 및 제어 신호들을 NAND 메모리(14)로 발생시키고 CAM 메모리(66)로부터의 인덱스 어드레스(66b) 및 MCC/ECC(72)로부터의 제어 신호들과 오프셋 어드레스 부분을 사용하여 RAM 메모리(16)를 어드레스한다. 다음에 NAND 메모리(14)로부터 읽혀진 데이터의 전체 페이지는 MUX(80)를 통해 NAND 메모리(14)로부터 RAM 메모리(16)로 전송되어, 이곳에서 MCC/ECC부(72) 및 인덱스 어드레스(66b)에 의해 특정된 RAM 메모리(16)에 있는 위치의 페이지에 기록되며, 에러 보정 확인 등과 같은 것을 통해 데이터의 무결정을 보장하기 위해 MCC/ECC부(72)에 의해 그 후 즉시 동작된다. 다음에 현재의 읽기 손실 어드레스를 포함하는 페이지 어드레스를 인덱스 어드레스(66b)와 관련된 그것과 더하기 위해 CAM(66)의 커런트 페이지 어드레스 레지스터(66a)가 업데이트된다. 적중/손실 비교 로직(68)은 대기 상태 신호(26) 상에 신호를 디어저트한다. 그 다음에, MCU(64)는 MUC(80)를 디폴트 위치로 전환한다. 적중/손실 비교 로직(68)은 RAM 메모리(16)에서의 읽기 동작을 초기화하기 위해 인덱스 어드레스(66a)가 어드레스버스(22)로부터의 오프셋 어드레스와 결합되어지는 MUX(70)로 인덱스 어드레스(66a)를 전송한다. 다음에 데이터가 RAM 메모리(16)로부터 읽혀져 MUX(80)을 통해 그리고 MUX(84)를 통해 데이터버스(24)로 호스트 장치(20)로 제공됨으로써 읽기 사이클이 완료된다.
호스트 장치(20)의 관점에서 보면 읽기 적중, 캐시 플러시를 수반하지 않는 읽기 손실, 및 캐시 플러시를 수반하는 읽기 손실의 각각의 경우에 있어서, 동작은 읽기 손실의 경우에 있어서의 지연시간을 수반하는 RAM 장치에 대한 읽기와 다르지 않다. 호스트 장치(20)는 어드레스 번역 및/또는 데이터 일관성을 다루지 않는다.
PNOR 메모리 동작-쓰기
PNOR 메모리 쓰기 동작에 있어서, 호스트 장치(20)는 메모리 공간의 PNOR 메모리 액세스 부분(52) 내에 있는 어드레스버스(22)를 따라 어드레스 신호를 RAM 메 모리(16)에 쓰여질 데이터와 함께 메모리 장치(10)로 전송한다. 여기에는 두 가지 가능성들 즉 쓰기 적중과 쓰기 손실이 존재한다.
쓰기 적중의 경우에 있어서, 어드레스버스(22)를 따라 제공되는 어드레스 신호들의 페이지 어드레스 부분은 적중/손실 비교 로직(68)에 의해 수신되며, RAM 메모리(16)에 현재 저장된 데이터를 반영하는 CAM(66)에 있는 페이지 어드레스들(66a)과 비교된다. 어드레스버스(22)를 따라 제공되는 페이지 어드레스는 CAM(66)에 저장된 페이지 어드레스 내에 존재한다. 적중/손실 비교 로직(68)는 어드레스 및 제어 신호들이 RAM 메모리(16)로 향하도록 MUX(70)를 활성화시킨다. MUX(70)를 통해 RAM 메모리(16)에 액세스하기 위해 사용되는 어드레스 신호를 생성하기 위해 CAM(66)으로부터의 인덱스 어드레스(66b)와 어드레스버스(22)로부터의 어드레스 신호들의 오프셋 어드레스 부분이 결합된다. MUX(84)를 통해 MUX(80)를 통해 제공되는 데이터버스(24)로부터의 데이터는 RAM 메모리(16)로 제공되며, 그것이 RAM 메모리(16)에 기록됨으로써 쓰기 적중 사이클이 완료된다.
쓰기 적중 동작 이후, RAM 메모리(16)에 있는 데이터는 NAND 메모리(14)에서 동일한 위치로부터의 데이터에 관하여 일관성이 없게 된다는 것을 주목해야 한다. 사실, RAM 메모리(16)에 있는 데이터는 가장 최근의 데이터가 된다. 그러한 데이터 일관성의 문제를 해결하기 위한 두 가지 해결책이 있다.
첫 번째로, 메모리 장치(20)는 필요할 때마다 데이터 일관성의 문제를 자동적으로 해결할 수 있다. 상술한 바와 같이, 예컨대, 캐시 플러시 동작을 수반하는 읽기 손실의 경우에 있어서, 만약 NAND 메모리(14)로부터 새롭게 요구되는 데이터 의 페이지를 저장하기 위해 RAM 메모리(16)에 있는 데이터의 페이지들이 대체되어야 할 필요가 있다면 RAM 메모리(16)에서 가장 최근의 데이터는 NAND 메모리(14)에 회귀(back)되어 기록될 것이다. 후술되는 바와 같이, MCU(64)는 또한 캐시 플러시 동작을 수반하는 쓰기 손실시에 데이터를 다시 NAND 메모리(14)로 회귀시켜 기록함으로써 RAM 메모리(16)에 있는 데이터 상에서 캐시 플러시를 수행할 것이다.
데이터 일관성의 문제를 해결하기 위한 대안은 호스트 장치(20)의 제어하에서 데이터 일관성을 수행하는 것이다. 따라서, 호스트 장치(20)는 메모리 컨트롤러(12)가 일관성이 없는 데이터를 RAM 메모리(16)로부터 NAND 메모리(14)로 회귀시켜 기록하도록 하는 캐시 플러시 명령을 출력할 수 있다. 이러한 동작의 장점은 그것이 어플리케이션 변경, 셧다운(shotdown), 또는 저전력 인터럽션 수신과 같은 임계 상황들(이에 한정되지 않음)을 포함하는 어떠한 때라도 호스트 장치(20)에 의해 이루어질 수 있다는 것이다. 그러나, 메모리 컨트롤러(12)는 또한 호스트 장치(20)의 사용자가 데이터 일관성 동작을 수행하지 못하는 상황에서 자동적으로 데이터 일관성을 수행할 수 있기 때문에, 그러한 동작은 또한 메모리 컨트롤러(12)에 의해 필요시에 수행되어 질 수 있다.
쓰기 손실의 경우에 있어서는, 많은 가능성들이 존재한다. 첫 번째는 캐시 플러시를 수반하지 않는 쓰기 손실이라 불려지는 가능성이다. 어드레스버스(22)로부터의 어드레스 신호들의 페이지 어드레스 부분을 CAM(66)으로부터의 페이지 어드레스 신호들(66a)과 비교한 결과가 손실인 경우 즉 어드레스버스(22) 상의 어드레스가 RAM 메모리(16)에 저장된 페이지의 어드레스들 내에 있지 않은 경우, 그때 적 중/손실 비교 로직(68)은 MCC/ECC부(72)로 쓰기 손실 신호를 전송한다. 또한, 적중/손실 비교 로직(68)은 대기 상태 신호(26) 상에 신호를 어저트한다. MCC/ECC부(72)는 호스트 장치(20)로부터의 어드레스버스(22) 상에 특정된 어드레스에 있는 데이터를 포함하는 NAND 메모리(14)로부터의 데이터의 새로운 페이지가 이전의 일관성 데이터 또는 RAM 메모리(16)의 빈 영역에 걸쳐 저장할 것인지 여부를 결정한다. 그러한 상황에 있어서는, NAND 메모리(14)로부터의 데이터를 RAM 메모리(16)에 있는 위치로 전달하기 전에 메모리 컨트롤러(12)가 쓰기 일관성 사이클을 수행할 필요가 없다. MCU(64)의 제어하에서 MCC/ECC부(72)는 호스트 장치(20)에 의해 제공된 어드레스를 NAND 메모리(14)에서의 물리적 주소로 번역하기 위해 FFS 동작을 실행시킨다. 다음에, MCC/ECC부(72)는 적절한 어드레스 및 제어 신호들을 NAND 메모리(14)로, 그리고 적절한 어드레스 및 제어 신호들을 RAM 메모리(16)로 발생시킨다.
데이터버스(22) 상에 특정된 어드레스로부터의 데이터를 포함하는 데이터의 전체 페이지는 NAND 메모리(14)로부터 읽혀져 MUX(80)을 통해 RAM 메모리(16)로 전달되어, 이곳에서 MCC/ECC부(72) 및 인덱스 어드레스(66b)에 의해 특정된 RAM 메모리(16)에 있는 위치의 전체 페이지로 기록되며, 에러 보정 확인 등과 같은 것을 통해 데이터의 무결성을 보장하기 위해 MCC/ECC부(72)에 의해 그 후 즉시 동작된다. 다음에 현재의 쓰기 손실 어드레스 내에 있는 어드레스 페이지의 어드레스와 관련된 인덱스 어드레스(66b)(데이터 페이지가 저장된 RAM 메모리(16)에 있는 어드레스의 상위 9비트인 인덱스 어드레스(66b))를 더하기 위해 CAM(66)의 커런트 페이지 어드레스 레지스터들(66a)이 업데이트된다. 적중/손실 비교 로직(68)은 대기 상태 신호(26) 상에 신호를 디어저트한다. 또한, MCU는 MUX(80)를 디폴트 위치로 전환한다. RAM 메모리(16)에서의 쓰기 동작을 초기화하기 위해 적중/손실 비교 로직(68)은 인덱스 어드레스(66b)를 그 인덱스 어드레스가 어드레스(22)로부터의 오프셋 어드레스와 결합되어지는 MUX(70)로 전송된다. 다음에 데이터가 MUX(84) 및 MUX(80)를 통해 호스트 장치(20)로부터 RAM 메모리(16)로 기록됨으로써 사이클이 완료된다. RAM 메모리(16)에 있는 데이터는 이제 더 이상 NAND 메모리(14)에서 동일한 어드레스에 있는 데이터와 일관성이 없게 된다. 이러한 일관성 문제는 쓰기 캐시 플러시를 초기화하는 메모리 컨트롤러(12)에 의해 필요할 때 마다 자동으로 또는 쓰기 캐시 플러시를 초기화하는 호스트 장치(20)에 의해 상술한 바와 같이 어느 시점에서든지 해결될 수 있다.
쓰기 손실에 대한 다른 가능한 시나리오는 캐시 플러시를 수반하는 쓰기 손실이라고 불려진다. 이러한 시나리오에 있어서, NAND 메모리(14)로부터의 데이터의 전체 페이지는 NAND 메모리(14)에 있는 데이터 보다 새로운 RAM 메모리(16)에 있는 일부 데이터를 오버라이트하지 않으면서 RAM 메모리(16)에 저장될 수 있다. 이는 데이터 일관성 문제를 야기시킨다. 따라서, 서로 다른 위치에 있는 NAND 메모리(16)로부터의 데이터가 RAM 메모리(16)로 읽혀질 수 있게 되기 전에, 먼저 RAM 메모리(16)에 있는 데이터의 페이지는 NAND 메모리(14)에 기록되어야 한다. 동작들의 순서는 다음과 같다. 어드레스버스(22)로부터의 어드레스 신호가 현재의 페이지 어드레스들 중 어느 것에 해당하는지 여부를 결정하기 위해 호스트 장치(20) 로부터의 어드레스버스(22)로부터의 신호에 대한 페이지 어드레스 부분이 CAM(66)으로부터의 페이지 어드레스 신호들(66a)과 비교된다. 이러한 비교 결과가 손실인 경우, 적중/손실 비교 로직(68)는 MCC/ECC부(72)가 쓰기 일관성 사이클을 초기화하도록 MCC/ECC부(72)에게 쓰기 손실 신호를 전송한다. 또한, 적중/손실 비교 로직(68)은 대기 상태 신호(26) 상에 신호를 어저트한다. MCU(64)의 제어하에 있는 MCC/ECC부(72)는 NAND 메모리(14)로부터의 데이터가 RAM 메모리(16)로 읽혀져야 하는 데이터 일관성 문제가 있기 때문에 RAM 메모리(16)에 있는 데이터의 페이지가 반드시 먼저 NAND 메모리(16)에 기록되도록 결정한다. MCU(64)는 RAM 메모리(16)로부터의 어드레스를 NAND 메모리(14)에서의 어드레스로 번역하기 위해 FFS 동작을 실행시킨다.
데이터의 전체 페이지가 RAM 메모리(16)로부터 읽혀지고, MUX(80)을 거쳐 NAND 메모리(14)로 제공되어, NAND 메모리(14)에 저장된다. 그 후, 호스트 장치(20)로부터의 어드레스는 FFS 동작에 의해 물리적 NAND 어드레스로 변환된다. 다음에 MCC/ECC부(72)는 FFS로부터의 물리적 NAND 어드레스를 이용하여 적절한 어드레스 및 제어 신호들을 NAND 메모리(14)로, 그리고 인덱스 어드레스(66b) 및 제어 신호들을 RAM 메모리(16)로 발생시킨다. 다음에 NAND 메모리(14)로부터 읽혀진 데이터의 전체 페이지는 MUX(80)를 통해 NAND 메모리(14)로부터 RAM 메모리(16)로 전달되어, 이곳에서 MCC/ECC부(72)로부터의 오프셋 어드레스 및 인덱스 어드레스 레지스터(66b)로부터의 인덱스 어드레스에 의해 특정되는 RAM 메모리(16)에 있는 위치의 페이지에 기록되며, 에러 보정 확인 등과 같은 것을 통해 데이터의 무결정을 보장하기 위해 MCC/ECC부(72)에 의해 그 후 즉시 동작된다. 다음에 현재의 읽기 손실 어드레스를 포함하는 페이지 어드레스(66a)를 관련된 인덱스 어드레스(66b)와 더하기 위해 CAM(66)의 커런트 페이지 어드레스 레지스터가 업데이트된다. 적중/손실 비교 로직(68)은 대기 상태 신호(26) 상에 신호를 디어저트한다. 그 다음에, MCU(64)는 MUC(80)를 디폴트 위치로 전환한다. 적중/손실 비교 로직(68)은 RAM 메모리(16)에 기록하기 위한 어드레스를 형성하기 위해 인덱스 어드레스(66b)가 어드레스버스(22)로부터의 오프셋 어드레스와 결합되는 MUX(70)로 인덱스 어드레스(66b)를 전송한다. 다음에 데이터가 RAM 메모리(16)로부터 읽혀져 MUX(80)을 통해 그리고 MUX(84)를 통해 데이터버스(24)로 호스트 장치(20)로 제공됨으로써 읽기 사이클이 완료된다. 다음에 호스트 장치(20)로부터 데이터버스(22)로의 데이터는 MUX(84)를 통해 그리고 MUX(80)을 통해 RAM 메모리(16)에 기록된다. 캐시 플러시를 수반하지 않는 쓰기 손실에 대해 상술한 것과 유사하게, RAM 메모리(16)에 있는 데이터는 이제 보다 최근의 것이 되며 캐시 플러시를 초기화하는 호스트 장치(20) 또는 캐시 플러시 동작을 초기화하는 메모리 컨트롤러(12)에 의해 해결될 수 있는 데이터 일관성 문제가 발생된다.
호스트 장치(20)의 관점에서 보면 쓰기 적중, 캐시 플러시를 수반하지 않는 쓰기 손실 및 캐시 플러시를 수반하는 쓰기 손실의 각각의 경우에 있어서, 동작은 쓰기 손실의 경우에 있어서의 지연시간을 수반하는 RAM 장치에 대한 읽기와 다르지 않다. 호스트 장치(20)는 어드레스 번역 및/또는 데이터 일관성을 다루지 않는다.
데이터 일관성 문제를 해결하기 위해 RAM 메모리(16)로부터 NAND 메모리에 대한 쓰기 동작을 첫 번째로 실행해야 할 필요성에 의해 야기되는 캐시 플러시를 수반하는 읽기 손실 또는 캐시 플러시를 수반하는 쓰기 손실의 상황에서의 지연 시간을 더욱 줄이기 위해, 다음의 것들이 실행될 수 있다. NAND 메모리(14)에 기록되어지는 데이터의 페이지는 먼저 RAM 메모리(16)로부터 로컬 SRAM(46)으로 기록된다. 이것이 NAND 메모리(14)로 직접 기록하는 것보다 훨씨 빠른 동작이다. 그 이후에, 캐시 플러시를 수반하는 읽기 손실 또는 캐시 플러시 동작을 수반하는 쓰기 손실은 마치 그것이 캐시 플러시를 수반하지 않는 읽기 손실 또는 캐시 플러시 동작을 수반하지 않는 쓰기 손실인 것처럼 계속된다. 읽기 손실 또는 쓰기 손실 동작이 완료된 후, 메모리 장치(10)가 휴식상태(idle) 이거나 액세스가 NOR 메모리 액세스 부분(50) 또는 RAM 메모리 액세스 부분(54) 또는 구성 레지스터 액세스 부분(56)에서의 동작으로 제한될 때 로컬 SRAM(46)에 저장된 데이터는 백그라운드(background) 동작으로서 NAND 메모리(14)에 기록될 수 있다.
호스트 장치(20)의 관점에서 보면 PNOR 동작에 있어서 동작은 비휘발성인 데이터를 가지나 섹터 또는 블록 삭제와 같은 NOR 프로토콜 명령들을 출력하는 호스트 장치(20)를 갖지 않는 RAM 메모리에 대해 실행하는 것과 다를 것이 없다는 것을 주목해야 한다. 그러나, 이 또한 메모리 장치(10)가 RAM 메모리(16) 및 NAND 메모리(14)를 이용하여 NOR 동작을 에뮬레이트할 수 있는 본 발명의 범주에 포함된다. 그러한 상황에 있어서 NOR 메모리 액세스부분(50)에 대한 메모리 공간 매핑은 단지 NOR 메모리(44)으로 매핑하는 것 보다 확장된다. NOR 메모리 액세스 부분(50)은 정적으로 NAND 메모리(14)에 매핑된 RAM 메모리(16)를 가지고 RAM 메모리(16)의 부 분으로 매핑될 수 있으며 그것에 의해 액세스 동안에 지연시간 문제가 발생되지 않도록 해준다. NAND 메모리(14)로부터의 데이터는 파워 온 될 때 RAM(16)으로 로드되며, NOR 메모리 액세스 부분(50)에 대한 읽기/쓰기는 RAM 메모리(16)로부터 읽혀지거나 RAM 메모리(16)로 쓰여진다. 유일한 다른 변화는 메모리 컨트롤러(12)가 NOR 프로토콜 명령들에 응답하는 것이다. 상술한 바와 같이, 그러한 NOR 프로토콜 명령들이 호스트 장치(20)에 의해 출력될 때, 그 명령들은 순차적인 유일한 데이터 패턴들로서 제공된다. 데이터버스(24) 상에 제공된 데이터는 MUX(84)와 MUX(80)를 통해 지나간다. 데이터버스 상에 제공된 어드레스는 그 동작이 RAM 메모리(16)에 의해 에뮬레트된 NOR 메모리 액세스 부분(50)에서 이루어지게 됨을 나타내기 때문에, MUX(74)는 MCU(64)가 그 데이터 패턴을 수신할 수 있도록 전환된다. 일단 데이터 패턴이 NOR 명령으로서 디코드되면, 예컨대 만약 명령이 삭제명령이면, MCU는 그러한 NOR 명령들을 가지고 NAND 메모리(14)FMF 동작시킨다. 물론, 비휘발성 메모리인 RAM 메모리(16)가 "삭제"되지는 않는다. 따라서, NOR 프로토콜 명령들의 실행은 NOR 메모리(44)를 에뮬레이팅하는 RAM 프로토콜 명령에 의해 NOR 프로토콜 명령들을 실행시키는 진짜(true) NOR 메모리(44) 보다 동작이 빨라지도록 해준다. 더욱이, 에뮬레이션은 NOR 프로토콜 명령들 전체를 에뮬레이트 할 필요가 없다. 대신에, 컨트롤러(12)는 NOR 프로토콜 명령들의 일부분을 에뮬레이트 할 수 있다. 그러므로 여기에서 사용된 것과 같은 "NOR 프로토콜 명령들"이라는 용어는 예컨대 인텔 또는 AMD에 의해 공표된 전체 NOR 프로토콜 명령들로부터의 하나 이상의 명령들을 의미한다.
RAM 메모리 동작
RAM 메모리(16) 읽기 동작에 있어서, 호스트 장치(20)는 메모리 공간의 RAM 메모리 액세스 부분(54) 내에 있는 어드레스버스(22)를 따라 어드레스 신호를 메모리 장치(10)로 전송한다. 또한, 적절한 제어 신호들이 호스트 장치(20)에 의해 제어버스(32)를 따라 메모리 장치(10)로 전송된다. 어드레스 신호들은 RAM 메모리 액세스 부분(54)에 있기 때문에, 적중/손실 비교 로직(68)은 어드레스버스(22) 및 제어버스(32)로부터의 어드레스/제어 신호들이 RAM 메모리(16)로 제공되도록 MUX(70)를 활성화시킨다. 그러나, 대기 상태 신호(26)는 assert 되지 않는다. 또한, 호스트 장치(20)로부터의 어드레스가 디코드되어 제어버스(32)로부터의 제어 신호와 함께 RAM 메모리(16)로 제공되는 어드레스 신호를 형성하며, 그곳에서 제공된 어드레스로부터의 데이터가 읽혀진다. 다음에 데이터는 데이터버스를 따라 MUX(80)와 MUX(84)로 제공되고 데이터버스(24)를 따라 호스트 장치(20)로 출력됨으로써 읽기 사이클이 완료된다.
RAM 메모리(16) 쓰기 동작에 있어서, 호스트 장치(20)는 메모리 공간의 RAM 메모리 액세스 부분(54) 내에 있는 어드레스버스(22)를 따라 어드레스 신호를 메모리 장치(10)로 전송한다. 또한, 적절한 제어 신호들이 호스트 장치(20)에 의해 제어버스(32)를 따라 메모리 장치(10)로 전송된다. 어드레스 신호들은 RAM 메모리 액세스 부분(54)에 있기 때문에, 적중/손실 비교 로직(68)은 어드레스버스(22) 및 제어버스(32)로부터의 어드레스/제어 신호들이 RAM 메모리(16)로 제공되도록 MUX(70)를 활성화시킨다. 그러나, 대기 상태 신호(26)는 assert 되지 않는다. 또한, 호스트 장치(20)로부터의 어드레스가 디코드되어 제어버스(32)로부터의 제어 신호와 함께 RAM 메모리(16)로 제공되는 어드레스 신호를 형성하며, 그곳에서 데이터버스(24)로부터의 데이터는 제공된 어드레스에서 RAM 메모리(16)에 기록된다.
호스트 장치(20)의 관점에서 볼 때, RAM 메모리 액세스 부분에서의 읽기 또는 쓰기 동작은 지연 시간 없이 RAM 장치에 액세스하는 것과 다를 것이 없다.
구성 레지스터 동작
구성 레지스터 동작에 있어서, 호스트 장치(20)는 메모리 공간의 구성 레지스터 액세스 부분(56) 내에 있는 어드레스버스(22)를 따라 어드레스 신호를 메모리 장치(10)로 전송한다. 또한, 적절한 제어 신호들이 호스트 장치(20)에 의해 제어버스(32)를 따라 메모리 장치(10)로 전송된다. 다음에 데이터가 비휘발성 레지스터들(60)에 기록된다.
NAND 메모리 동작
NAND 메모리(14) 읽기 동작에 있어서, 호스트 장치(20)는 메모리 공간의 대량 저장 액세스 섹션(58) 또는 ATA 메모리 액세스 부분(58) 내에 있는 어드레스버스(22)를 따라 어드레스 신호를 메모리 장치(10)로 전송한다. 또한, 적절한 제어 신호들이 호스트 장치(20)에 의해 제어버스(32)를 따라 메모리 장치(10)로 전송된다. 어드레스 신호들은 PNOR 메모리 액세스 부분(52) 이라기 보다는 공간에 있기 때문에, 적중/손실 비교 로직(68)은 활성화되지 않으며, 대기 상태 신호(26)는 assert되지 않는다. 호스트 장치(20)는 ATA 읽기/쓰기 명령에 대해 태스크 파일 레지스터들(79)로 읽기/쓰기를 하기 위해 ATA 프로토콜을 따른다. 태스크 파일 레지스터들(79)는 명령, 상태, 실린더, 헤드, 섹터 등을 저장하기 위한 레지스터들을 포함한다. MCU(64)의 제어하에 있는 MCC/ECC부(72)는 결함있는 NAND 섹터들의 사용을 피할 수 있는 능력을 가지고 호스트 논리적 어드레스를 NAND 물리적 어드레스로 번역하는 플래시 파일 시스템을 동작시킨다. 그 공개 내용이 전체적으로 참조되어 병합된 미국 특허 6,427,186; 6,405,323; 6,141,251 및 5,982,665가 참조된다. 호스트 장치(20)로부터의 각각의 논리적 어드레스는 Vpage라고 불리는 테이블 형태의 엔트리를 갖는다. 엔트리의 내용들은 논리적 어드레스 데이터가 저장된 물리적 어드레스를 가리킨다.
NAND 메모리(14)로부터의 데이터의 페이지를 읽기 위해, 어드레스 신호들 및 제어 신호들이 NAND 메모리(14)로 제공된다. 호스트 장치(20)는 명령과 논리적 어드레스를 저장하는 태스크 파일 레지스터들(79)을 이용해 ATA 프로토콜을 따른다. 호스트 장치(20)는 메모리 공간의 태스크 파일 레지스터 액세스 부분(58)에 있는 상태 레지스터(79)를 읽음으로써 메모리(10)의 읽기에 대해 체크한다. 호스트 장치(20)는 메모리 공간(58) 내에서 명령 레지스터들(79)에 "읽기" 명령을 기록한다. MCU(64)는 논리적 어드레스의 물리적 어드레스로의 FFS 번역을 수행하며 MCU(64)의 제어하에 있는 MCC/ECC부(72)는 NAND 메모리(14)로부터의 데이터를 읽고, 데이터의 페이지들을 버퍼(81)로 전달한다. 데이터의 전체 페이지가 데이터 레지스터들(81) 에 저장된 후, 에러 보정 확인 등과 같은 것을 통해 데이터의 무결성을 보장하기 위해 MCC/ECC부(72)에 의해 그 즉시 동작되며, 데이터는 데이터버스(24)를 따라 메모리 컨트롤러(12) 밖으로 읽혀진다.
NAND 메모리(14)로의 쓰기 동작은 NAND 메모리(14)로부터의 읽기 동작과 유사하다. 호스트 장치(20)는 태스크 메모리 공간(58) 부분에 있는 상태 레지스터(79)를 읽음으로써 메모리(10)의 읽기에 대해 체크한다. 호스트 장치(20)는 데이터 레지스터(81)에 데이터 한 페이지를 기록하고, 다음에 논리적 어드레스와 함께 명령 레지스터들(79)로 "쓰기" 명령을 기록한다. 그 다음에, FFS를 사용하는 MCU(64)는 논리적 어드레스를 물리적 어드레스로 변환하고 MCU(64)의 제어하에 있는 MCC/ECC부(72)는 ATA 버퍼(81)로부터의 데이터 한 페이지를 NAND 메모리(14)에 기록한다.
FFS는 업데이트 될 페이지의 물리적 어드레스를 위치시킴으로써 데이터의 한 페이지를 업데이트시킨다. FFS는 "버퍼 섹터"로서 삭제된 섹터를 찾으며 또는 삭제된 섹터가 없는 경우 먼저 섹터 상에서 삭제 동작을 수행한다. 다음에 FFS는 버퍼 섹터로 수정 및 프로그램되지 않은 오래된 데이터를 읽는다. 다음에 FFS는 업데이트된 페이지 데이터를 프로그램한다. 다음에 FFS는 다음 요구를 기다린다. 만약 다음 페이지가 동일한 삭제 섹터에 있다면, FFS는 업데이트 동작을 계속한다. 만약 다음 페이지가 전송 삭제 섹터의 외부에 있다면, 나머지 수정되지 않은 데이터가 그 버퍼 섹터를 차지하게 될 것이다. 매핑 테이블 엔트리가 버퍼 섹터 물리적 어드레스로 변화된다.
도 4를 참조하면 메모리 장치(110)의 제 2 실시예가 도시되어 있다. 메모리 장치(110)는 도 1에 도시된 메모리 장치(10)와 유사하다. 따라서, 같은 번호들은 같은 부분들은 나타낸다. 메모리 장치(110)와 메모리 장치(10) 사이의 유일한 차이는 메모리 장치(110)에 있으며, 제 2 RAM 버스(40)가 RAM 메모리(100)를 메모리 컨트롤러(12)가 아닌 호스트 장치(20)와 직접 연결시킨다. 따라서, 메모리 장치(100)에 있어서, 호스트 장치는 RAM 메모리(100)에 대해 직접 접근하고 제어할 수 있다.
메모리 장치(10)의 실시예와 메모리 장치(110)의 실시예 사이의 이러한 차이는 도 5에 도시된 메모리 매핑에 반영되어 있다. 메모리 장치(10)와 유사하게, 메모리 장치(110)에 대한 메모리 매핑은 NOR 메모리(44)에 매핑된 NOR 메모리 액세스 부분(50), 메모리 장치(100)에서 RAM 메모리(16)에 매핑되고 다음에 NAND 메모리(14)에 매핑된 PNOR 메모리 액세스 부분(52), 및 RAM 메모리(16)에 매핑된 RAM 메모리 액세스 부분(54)을 구비한다. 그러나, 제 2 RAM 버스(40)를 통해 호스트 장치(20)에 의해 직접적으로 접근이 가능한 RAM 메모리(100)를 가지는, 메모리 장치(110)에 대한 메모리 매핑은 또한 RAM 메모리(100)에 직접적으로 매핑하는 다른 RAM 메모리 액세스 부분(55)을 포함한다. 다음에 메모리 장치(110)는 구성 레지스터 액세스 부분(56), 그리고 마지막으로 메모리 장치(10)에 대해 설명했던 것과 유사한 ATA 메모리 액세스 부분(58)를 더 구비한다.
호스트 장치(20) 및 NAND 메모리(14)와 인터페이스하는 메모리 컨트롤러(12)를 이용하여, 메모리 장치(10)는 종래의 메모리 장치에 비해 보다 나은 보호를 제 공한다. 특히, 메모리 컨트롤러(12)는 디지털 권리 관리에 관한 것과 관련하여 NAND 메모리(14)에 저장된 어떤 데이터에 대한 접근을 제한할 수 있다. 더욱이 메모리 컨트롤러(12)는 민감한 데이터를 보호하기 위해 NAND 메모리(14)에 저장된 데이터를 암호화할 수 있다. 마지막으로, 메모리 컨트롤러(12)는 NAND 메모리(14)의 어떤 부분(들)에 있어서 데이터의 갑작스런 삭제에 대비하기 위한 보호를 제공할 수 있다. 마지막으로 NOR 메모리(62)에 저장된 프로그램을 가지는 메모리 컨트롤러(12)는 호스트 장치(20)로부터 초기화 명령을 필요로 하지 않는 자동시작(self-starting) 장치이다.
도 6을 참조하면 본 발명의 메모리 장치(210)의 블록도가 도시되어 있다. 메모리 장치(210)는 메모리 장치(10)와 유사하다. 이것은 메모리 컨트롤러(12)와 유사하며 NAND 메모리(14) 및 RAM 메모리(16)에 연결된 메모리 컨트롤러(112)를 구비한다. 컨트롤러(12)는 도 1에 도시된 제 1 RAM 어드레스버스(22), 제 1 RAM 데이터버스(24), 및 제 1 RAM 제어버스(32)의 집합인 단일 버스(32)에 연결된다. 그러나, 도 1에 도시된 실시예와 달리, 단일 버스(32)는 복수의 프로세서들(120a-c)와 연결된다. 복수의 프로세서들(120a-c) 각각은 버스(23)에 접근함으로써 메모리 장치(210)에 접근한다. 따라서, 단일 버스(32)는 모든 프로세서들(120a-c)에 의해 공유된다.
각각의 프로세서들(120a-c)에 의해 메모리 장치(210)에 접근하기 위해, 각 프로세서(120)는 버스(23)에 접근하기 위해 허가를 요구하는 컨트롤러(112)에게 신호를 주는 관련된 버스 요구 신호선(122), 및 그 요구를 허가하는 메모리 장 치(210)의 컨트롤러(112)로부터의 버스 허여 신호선(124)을 갖는다. 그러므로, 컨트롤러(112)에 의해 프로세서들(120) 중 하나에게 허가가 주어지면, 다른 프로세스들(12)로의 버스 허여선(124)은 금지(inhibit) 모드가 된다. 각각의 프로세서들(120)은 도 2에 도시된 바와 같이 메모리 장치(210)에 있는 모든 메모리 공간에 접근할 수 있으며, 또는 메모리 장치(210)에 있는 메모리 공간은 단지 어떤 어드레스 공간만이 어떤 프로세서(120)에 사용가능하도록 구분될 수 있다. 메모리 장치(210)의 실시예에 대한 단점은 모든 프로세서(120)들이 동일한 버스(23)를 공유해야한다는 것이다. 따라서, 거기에는 실행 적중이 있을 수 있다.
도 7을 참조하면 본 발명의 메모리 장치(310)의 다른 실시예에 대한 블록도가 도시되어 있다. 메모리 장치(310)는 메모리 장치(210)와 유사하다. 이것은 NAND 메모리(14) 및 RAM 메모리(16)에 연결된 메모리 컨트롤러(212)를 구비한다. 메모리 컨트롤러(212)는 각각이 도 1에 도시된 제 1 RAM 어드레스버스(22), 제 1 RAM 데이터버스(24), 및 제 1 RAM 제어버스(32)의 집합인 세 개의 버스들(23a-c)과 연결된다. 각 버스들(23a-c)은 단일 프로세서(120a-c)에 연결된다. 복수의 프로세서들(120a-c) 각각은 해당 버스(23)에 접근할 수 있으며 그것에 의해 메모리 장치(310)에 접근한다.
더욱이, 메모리 컨트롤러(212)는 각 컨트롤러(12)가 전용의 관련된 NOR 메모리(44) 및 SRAM 메모리(46)을 갖는 복수의 컨트롤러들(12a-c)을 구비한다. 따라서, 각 프로세서(120)는 관련된 전용의 버스(23) 및 관련된 전용의 컨트롤러(12)를 갖는다. 따라서, 도 6에 도시된 메모리 장치(210)와 달리, 각 프로세서(120)는 버 스 허가를 위한 요구(및 대기)를 필요로 하지 않는다. 더욱이, 각 컨트롤러(12)가 전용 NOR 메모리(44)를 갖기 때문에, 도 2에 도시된 어드레스 공간의 NOR 메모리 액세스 부분(50)은 각 프로세서들(120)에 의해 독립적으로 어드레스될 수 있다. 또한, 각 컨트롤러들(12)에 있는 SRAM(46)은 해당 프로세서(120)를 위해 일하도록 전용되는 제 1 레벨 캐시로서 일하도록 각 프로세서(120)에 전용된다. 메모리 장치(310)는 모든 프로세서들(120)에 의해 공유되는 NAND 메모리(14) 및 SRAM 메모리(16)를 갖는다. 따라서, NAND 메모리(14) 또는 SDRAM(16)에 대한 접근 요구는 중재 회로(250)로 제공되어져야 한다. 컨트롤러(12)가 SDRAM 메모리(16)로의 접근을 요구하는 상황에서, 컨트롤러는 중재 회로(250)에게 버스 요구선을 요구하고, 중재 회로(25)는 요구한 컨트롤러(12)에게 버스 허가 신호를 보냄으로써 응답한다. 이때 중재 회로(250)는 다른 컨트롤러(12)에 의한 버스로의 접근을 금지시킨다. 이것은 도 6에 도시된 버스(23)의 접근과 관련하여 지금까지 설명된 구조와 유사하다. 도 1에서 도시되고 설명된 실시예와 유사하게, 단일 버스(40)는 메모리 컨트롤러(212)로부터 SDRAM(16)에 연결되고 단일 버스(42)는 메모리 컨트롤러(212)로부터 NAND 메모리(14)에 연결된다.
동작에 있어서, 적중이 있을 때 프로세스들(120) 측에서의 실행 저하는 없다. 각 프로세서가 NOR 메모리 어드레스 공간(50)으로의 접근을 요구할 때, 또한 실행 저하는 없다. 각 프로세서(120)가 PNOR 공간(52) 또는 RAM 어드레스 공간(54)에서의 어드레스를 요구하고 그곳에 제 1 레벨 캐시 손실 즉 데이터가 관련된 SRAM(46)에서 발견되지 않는 상황에서는, 그때 각 컨트롤러(12)는 SDRAM(16)에 대한 버스의 제어를 위해 중재 회로(250)에 접근한다. 만약 제 2 캐시가 또한 손실이면 그때 컨트롤러(12)는 NAND 메모리(14)로의 버스의 제어를 시도할 것이다. 제 2 캐시 메모리 SDRAM(16)을 채우기 위해 데이터가 NAND 메모리(14)로부터 검색되면, 동일한 데이터가 또한 요구한 컨트롤러(12)에 있는 제 1 레벨 캐시 SRAM 메모리(46)에 쓰여지게 된다(SDRAM 메모리(46)의 크기에 의존함). 모든 프로세서들(12a-c)이 분리된 어드레스 범위를 사용한다면 개개의 캐시가 유지될 것이다. 만약 모든 프로세서들(120a-c)이 동일한 어드레스 범위를 공유하게 되면, 변경되고(Modified) 독점적이며(Exclusive) 공유되고(Shared) 무효인(Invalid)(MESI) 캐시 프로토콜이 사용되게 될 것이다. 단일의 고밀도 메모리인 SDRAM 메모리(16) 또는 NAND 메모리(14)를 갖는 것이 복수의 저밀도 메모리 보다 비용면에서 보다 효과적이다.
도 8을 참조하면 본 발명의 메모리 장치(410)의 다른 실시예에 대한 블록도가 도시되어 있다. 메모리 장치(410)는 메모리 장치(310)와 유사하다. 이것은 메모리 컨트롤러(212)와 유사하며 단일 버스(42)를 통해 NAND 메모리(14)와 연결되고 복수의 버스들(40a-c)을 통해 복수의 RAM 메모리들(16)과 연결되는 메모리 컨트롤러(312)를 구비한다. 메모리 컨트롤러(312)는 각각이 도 1에 도시된 제 1 RAM 어드레스버스(22), 제 1 RAM 데이터버스(24), 및 제 1 RAM 제어버스(32)의 집합인 세 개의 버스들(23a-c)과 연결된다. 각 버스들(23a-c)은 관련된 프로세서(120a-c)에 연결된다. 복수의 프로세서들(120a-c) 각각은 해당 버스(23)에 접근할 수 있으며 그것에 의해 메모리 장치(410)에 접근한다.
더욱이, 메모리 컨트롤러(312)는 각 컨트롤로(12)가 전용의 관련 NOR 메모리(44) 및 SRAM 메모리(46)를 가지며 관련된 전용 SDRAM 메모리(16)를 가지는 복수의 컨트롤러들(12a-c)을 구비한다. 그러므로, 각 프로세서(120)는 관련된 전용의 버스(23), 관련된 전용의 컨트롤러(12), 및 관련된 SDRAM 메모리(16)를 갖는다. 따라서, 도 7에 도시된 메모리 장치(310)와 달리, 각 프로세서(120)는 프로세서가 SDRAM 메모리(16)에 저장된 제 2 레벨 캐시에 접근하기 원하는 경우 버스 허가를 위한 요구(및 대기)를 필요로 하지 않는다. 더욱이, 각 컨트롤러(12)는 전용의 NOR 메모리(44)를 가지기 때문에, NOR 메모리 액세스 부분(50)은 각 프로세서들(120)에 의해 개별적으로 접근될 수 있다. 또한, 각 컨트롤러들(12)에 있는 SRAM(46) 및 각 프로세서들(120)에 전용되는 SDRAM(16)은 그 프로세서(12)를 위해 일하도록 전용된 제 1 및 제 2 레벨 캐시로서 기능하게 된다. 메모리 장치(410)는 모든 프로세서(120)에 의해 공통되게 공유되는 NAND 메모리(14)를 갖는다. 따라서, NAND 메모리(14)로의 접근을 위한 요구는 중재 회로(25)로 제공되어야 한다.
동작에 있어서, 적중이 있는 경우, 프로세서들(12) 측면에서 실행 저하는 없게 된다. 각 프로세서가 NOR 메모리 어드레스 공간(50)으로의 접근을 요구하는 경우, 또한 실행 저하는 없다. 각 프로세서(120)가 PNOR 공간(52) 또는 RAM 어드레스 공간(54)에서의 어드레스를 요구하는 상황에서는, 제 1 레벨 캐시 손실 즉 데이터가 관련된 SRAM(46)에서 발견되지 않을 수 있으며, 그때 각 프로세서(12)는 관련된 SDRAM 메모리(16)에 접근한다. 만약 제 2 캐시가 또한 손실이면 그때 컨트롤러(12)는 NAND 메모리(14)로의 버스의 제어를 시도할 것이다. 데이터가 NAND 메모 리(14)로부터 검색되는 때 데이터가 제 2 캐시 메모리 SDRAM(16)를 채우게 된다. 만약 모든 프로세서들(120a-c)이 분리된 어드레스 범위를 사용한다면 각 캐시는 유지될 것이다. 만약 모든 프로세서들(120a-c)이 동일한 어드레스 범위를 공유한다면, 그때 변경되고(Modified) 독점적이며(Exclusive) 공유되고(Shared) 무효인(Invalid)(MESI) 캐시 프로토콜이 사용되게 될 것이다. 단일의 고밀도 NAND 메모리(14)를 갖는 것이 복수의 저밀도 메모리 보다 비용면에서 보다 효과적이다.
도 9를 참조하면 본 발명의 메모리 장치(510)의 다른 실시예에 대한 블록도가 도시되어 있다. 메모리 장치(510)는 메모리 장치(410)와 유사하다. 이것은 메모리 컨트롤러(312)와 유사하며 단일 버스(42)를 통해 NAND 메모리(14)와 연결되는 메모리 컨트롤러(412)를 구비한다. 메모리 컨트롤러(312)는 각각이 도 1에 도시된 제 1 RAM 어드레스버스(22), 제 1 RAM 데이터버스(24), 및 제 1 RAM 제어버스(32)의 집합인 세 개의 버스들(23a-c)과 연결된다. 각 버스들(23a-c)은 관련된 프로세서(120a-c)에 연결된다. 복수의 프로세서들(120a-c) 각각은 해당 버스(23)에 접근할 수 있으며 그것에 의해 메모리 장치(410)에 접근한다.
더욱이, 메모리 컨트롤러(312)는 각 컨트롤러(12)가 전용의 관련된 NOR 메모리(44)와 SRAM 메모리(46) 그리고 그곳에 집적된 SDRAM(16)를 갖는 복수의 컨트롤러들(12a-c)을 구비한다. 따라서, 도 8에 도시된 메모리 장치(410)의 실시예와 달리, 메모리 장치(510)는 메모리 컨트롤러(412)를 SDRAM(16)에 연결시키고 외부와 메모리 컨트롤러(412)를 연결시키는 어떠한 버스(40)도 가지고 있지 않는다. 다른 모든 면에 있어서 메모리 장치(510)는 메모리 장치(410)와 유사하다.
본 발명에 대한 많은 양태들이 있다. 첫 번째로, 메모리 장치(10, 110, 210, 310, 410 또는 510)는 일반적인 메모리 장치이다. 메모리 장치는 RAM 어드레스 신호들을 수신하기 위한 제 1 어드레스버스, RAM 데이터 신호들을 수신하기 위한 제 1 데이터버스, 및 RAM 제어 신호들을 수신하기 위한 제 1 제어버스를 갖는다. 메모리 컨트롤러는 그 안에 내장된 NOR 메모리를 가지며 더욱이 휘발성 RAM 메모리와 인터페이스하기 위한 제 2 어드레스버스, 휘발성 RAM 메모리와 인터페이스하기 위한 제 2 데이터버스, 및 휘발성 RAM 메모리와 인터페이스하기 위한 제 2 제어버스를 갖는다. 컨트롤러는 비휘발성 NAND 메모리와 인터페이스하기 위한 제 3 어드레스/데이터버스, 및 비휘발성 NAND 메모리와 인터페이스하기 위한 제 3 제어버스를 더 갖는다. 메모리 장치는 상기 제 2 어드레스버스, 상기 제 2 데이터버스, 및 상기 제 2 제어버스와 연결되는 RAM 메모리를 더 갖는다. 메모리 장치는 제 3 어드레스/데이터버스 및 제 3 제어버스와 연결되는 비휘발성 NAND 메모리를 더 갖는다. NOR 메모리가 제 1 어드레스버스 상에 제공된 제 1 어드레스 범위에 응답하고, RAM 메모리가 제 1 어드레스버스 상에 제공된 제 2 어드레스 범위에 응답하고, NAND 메모리가 제 1 어드레스버스 상에 제공된 제 3 어드레스 범위에 응답하는 컨트롤러는 제 1 어드레스버스 상에 제공된 어드레스 신호들에 응답한다.
본 발명의 다른 양태에 있어서, 메모리 장치는 사용자가 메모리 공간 할당을 정의할 수 있는 일반적인 메모리 장치이다. 메모리 장치는 RAM 어드레스 신호들을 수신하기 위한 제 1 어드레스버스, RAM 데이터 신호들을 수신하깅 NL한 제 1 데이터버스, 및 RAM 제어 신호들을 수신하기 위한 제 1 제어버스를 갖는 메모리 컨트롤 러를 갖는다. 메모리 장치는 그 안에 내장된 NOR 메모리를 가지며 더욱이 휘발성 RAM 메모리와 인터페이스하기 위한 제 2 어드레스버스, 휘발성 RAM 메모리와 인터페이스하기 위한 제 2 데이터버스, 및 휘발성 RAM 메모리와 인터페이스하기 위한 제 2 제어버스를 갖는다. 컨트롤러는 비휘발성 NAND 메모리와 인터페이스하기 위한 제 3 어드레스/데이터버스, 및 비휘발성 NAND 메모리와 인터페이스하기 위한 제 3 제어버스를 더 갖는다. 메모리 장치는 상기 제 2 어드레스버스, 상기 제 2 데이터버스, 및 상기 제 2 제어버스와 연결되는 RAM 메모리를 더 갖는다. 메모리 장치는 제 3 어드레스/데이터버스 및 제 3 제어버스와 연결되는 비휘발성 NAND 메모리를 더 갖는다. 메모리 장치는 제 1 어드레스버스 상에 제공된 제 1 어드레스 범위 안에서 사용자 정의된 메모리 공간 할당에 응답하며, 메모리 장치는 NOR 프로토콜 명령들 및 제 1 어드레스버스 상에 제공된 제 2 어드레스 범위에 응답하는 것을 포함하는 NOR 메모리 동작에 응답하고, 메모리 장치는 RAM 동작 및 어드레스버스 상에 제공된 제 2 어드레스 범위에 응답하며, 메모리 장치는 ATA 디스크 드라이브 장치로서 동작하는 NAND 메모리에 응답하며, 여기에서 제 1, 제 2 및 제 3 어드레스 범위들은 모두 사용자에 의해 정의될 수 있다.
본 발명의 다른 양태에 있어서, 메모리 장치는 RAM 어드레스신호들을 수신하기 위한 제 1 어드레스버스, RAM 데이터 신호들을 수신하기 위한 제 1 데이터버스, 및 RAM 제어 신호들을 수신하기 위한 제 1 제어버스를 갖는다. 메모리 컨트롤러는 휘발성 RAM 메모리와 인터페이스하기 위한 제 2 어드레스버스, 휘발성 RAM 메모리와 인터페이스하기 위한 제 2 데이터버스, 및 휘발성 RAM 메모리와 인터페이스하기 위한 제 2 제어버스를 더 갖는다. 컨트롤러는 비휘발성 NAND 메모리와 인터페이스하기 위한 제 3 어드레스/데이터버스, 및 비휘발성 NAND 메모리와 인터페이스하기 위한 제 3 제어버스를 더 갖는다. 메모리 장치는 상기 제 2 어드레스버스, 상기 제 2 데이터버스, 및 상기 제 2 제어버스와 연결되는 RAM 메모리를 더 갖는다. 메모리 장치는 제 3 어드레스/데이터버스 및 제 3 제어버스와 연결되는 비휘발성 NAND 메모리를 더 갖는다. 컨트롤러는 비휘발성 NAND 메모리에 있는 제 2 어드레스로 또는 제 2 어드레스로부터의 데이터에 대한 캐시로서 기능하는 휘발성 RAM 메모리를 수반하며 제 1 어드레스버스 상의 제 1 어드레스를 수신하기 위한 그리고 제 1 어드레스를 비휘발성 NAND 메모리에 있는 제 2 어드레스로 매핑하기 위한 수단, 및 캐시로서 휘발성 RAM 메모리에 저장된 데이터와 비휘발성 NAND 메모리에서 제 2 어드레스에 있는 데이터 사이의 데이터 일관성을 유지하기 위한 수단을 더 갖는다. 더욱이, 휘발성 RAM 메모리에 저장된 데이터와 비휘발성 NAND 메모리에 저장된 데이터 사이의 데이터 일관성을 유지하기 위한 수단은 하드웨어적으로 또는 소프트웨어적으로 될 수 있다. 마지막으로, 제 1 어드레스버스 상에 있는 어드레스를 비휘발성 NAND 메모리에 있는 제 2 어드레스 상의 어드레스로 매핑하기 위한 수단도 또한 하드웨어적으로 또는 소프트웨어적으로 될 수 있다.
본 발명의 다른 양태에 있어서, 메모리 장치는 NOR 어드레스 신호들을 수신하기 위한 제 1 어드레스버스, NOR 데이터 신호들과 데이터 프로토콜 명령들을 수신하기 위한 제 1 데이터버스, 및 NOR 제어 신호들을 수신하기 위한 제 1 제어버스를 갖는다. 메모리 컨트롤러는 휘발성 RAM 메모리와 인터페이스하기 위한 제 2 어 드레스버스, 휘발성 RAM 메모리와 인터페이스하기 위한 제 2 데이터버스, 및 휘발성 RAM 메모리와 인터페이스하기 위한 제 2 제어버스를 더 갖는다. 컨트롤러는 비휘발성 NAND 메모리와 인터페이스하기 위한 제 3 어드레스/데이터버스, 및 비휘발성 NAND 메모리와 인터페이스하기 위한 제 3 제어버스를 더 갖는다. 메모리 장치는 상기 제 2 어드레스버스, 상기 제 2 데이터버스, 및 상기 제 2 제어버스와 연결되는 RAM 메모리를 더 갖는다. 메모리 장치는 제 3 어드레스/데이터버스 및 제 3 제어버스와 연결되는 비휘발성 NAND 메모리를 더 갖는다. 더욱이 컨트롤러는 NOR 프로토콜 명령들을 포함하는 NOR 메모리 장치의 동작을 에뮬레이트하기 위해 RAM 메모리를 동작시킨다.
상술한 바와 같이, 본 발명의 메모리 장치는 상술된 구성 및 기능을 통해 결함들을 가지고 있지 않으며 종래 기술에서는 발견하지 못한 부가적인 메모리 접근 특성들을 제공할 수 있다.

Claims (40)

  1. 메모리 컨트롤러에 있어서,
    어드레스 신호 및 호스트 장치로부터의 데이터 신호를 수신하기 위한 제 1 버스;
    휘발성 RAM 메모리 장치와 인터페이스하기 위한 제 2 버스;
    NAND 메모리 장치와 인터페이스하기 위한 제 3 버스;
    상기 메모리 컨트롤러에 대해 상기 컨트롤러의 동작을 초기화하기 위한 부팅코드를 저장하기 위한 비휘발성 메모리;
    상기 제 1 버스로부터 제 1 어드레스를 수신하고 상기 제 1 어드레스를 상기 NAND 메모리 장치에 대한 제 2 어드레스로 매핑하며, 상기 휘발성 RAM 메모리 장치를 상기 NAND 메모리 장치에 있는 상기 제 2 어드레스로의 또는 상기 제 2 어드레스로부터의 데이터에 대한 캐시로서 동작시키기 위한 수단; 및
    상기 제 2 어드레스에서 상기 NAND 메모리에 저장된 데이터와 캐시로서 기능하는 상기 휘발성 RAM 메모리에 저장된 데이터 사이의 데이터 일관성을 유지하기 위한 수단을 포함하는 메모리 컨트롤러.
  2. 제 1항에 있어서,
    상기 제 2 버스에 연결되는 RAM을 더 포함하는 메모리 컨트롤러.
  3. 제 1항에 있어서,
    상기 제 1 버스로부터 NOR 프로토콜 명령들을 수신하고, 상기 NAND 메모리 장치 상에서 상기 NOR 명령들을 동작시키기 위한 수단을 더 포함하는 메모리 컨트롤러.
  4. 메모리 컨트롤러에 있어서,
    어드레스 신호 및 호스트 장치로부터의 데이터 신호를 수신하기 위한 제 1 버스;
    휘발성 RAM 메모리 장치와 인터페이스하기 위한 제 2 버스;
    NAND 메모리 장치와 인터페이스하기 위한 제 3 버스;
    상기 메모리 컨트롤러에 대해 상기 컨트롤러의 동작을 초기화하기 위한 부팅 코드를 저장하기 위한 NOR 메모리;
    상기 제 1 버스로부터 NOR 프로토콜 명령들을 수신하고, 상기 NOR 메모리를 동작시키며, NOR 메모리의 동작을 에뮬레이트하기 위해 상기 휘발성 RAM 메모리 장치를 동작시키기 위한 수단; 및
    ATA 스토리지(storage)로서 상기 NAND 메모리 장치를 동작시키기 위한 수단을 포함하는 메모리 컨트롤러.
  5. 제 4항에 있어서,
    호스트 장치로부터의 구성 파라메터들을 저장하고, 상기 제 1 버스로부터의 어드레스를 NOR 동작, RAM 동작 및 NAND 동작으로 구분하기 위한 레지스터를 더 포함하는 메모리 컨트롤러.
  6. 제 4항에 있어서,
    상기 제 2 버스에 연결되는 휘발성 RAM 메모리 장치를 더 포함하는 메모리 컨트롤러.
  7. 제 4항에 있어서, NOR 메모리의 동작을 에뮬레이트하기 위해 상기 휘발성 RAM 메모리 장치를 동작시키기 위한 상기 수단은
    상기 제 1 버스로부터 제 1 어드레스를 수신하고 상기 제 1 어드레스를 상기 NAND 메모리 장치에 대한 제 2 어드레스로 매핑하며, 상기 휘발성 RAM 메모리 장치를 상기 NAND 메모리 장치에 있는 상기 제 2 어드레스로의 또는 상기 제 2 어드레스로부터의 데이터에 대한 캐시로서 동작시키기 위한 수단; 및
    상기 제 2 어드레스에서 상기 NAND 메모리 장치에 저장된 데이터와 캐시로서 기능하는 상기 휘발성 RAM 메모리에 저장된 데이터 사이의 데이터 일관성을 유지하기 위한 수단을 더 포함하는 메모리 컨트롤러.
  8. 어드레스 신호 및 호스트 장치로부터의 데이터 신호를 수신하기 위한 제 1 버스;
    휘발성 RAM 메모리 장치와 인터페이스하기 위한 제 2 버스;
    NAND 메모리 장치와 인터페이스하기 위한 제 3 버스; 및
    호스트 장치로부터의 구성 파라메터들을 저장하고, 상기 제 1 버스로부터의 어드레스를 상기 RAM 메모리 장치에 의한 동작 및 상기 NAND 메모리 장치에 의한 동작으로 구분하기 위한 레지스터를 포함하는 메모리 컨트롤러.
  9. 메모리 컨트롤러에 있어서,
    어드레스 신호 및 호스트 장치로부터의 데이터 신호를 수신하기 위한 제 1 버스;
    휘발성 RAM 메모리 장치와 인터페이스하기 위한 제 2 버스; 및
    NOR 비휘발성 메모리 장치를 포함하며,
    상기 NOR 비휘발성 메모리 장치는
    상기 컨트롤러에 의해 수신된 상기 제 1 버스 상의 제 1 어드레스가 NOR 프로토콜 명령에 응답하여 상기 NOR 메모리를 동작시키며, 상기 컨트롤러에 의해 수신된 상기 제 1 버스 상의 제 2 어드레스가 RAM 메모리 프로토콜에 응답하여 상기 RAM 메모리를 동작시키고, 상기 컨트롤러에 의해 수신된 상기 제 1 버스 상의 제 3 어드레스가 NOR 프로토콜 명령을 에뮬레이팅하는 상기 RAM 메모리를 동작시키는 상기 컨트롤러를 동작시키기 위해 구성된 프로그램코드를 저장하는 메모리 컨트롤러.
  10. 어드레스 신호 및 호스트 장치로부터의 데이터 신호를 수신하기 위한 제 1 버스;
    휘발성 RAM 메모리 장치와 인터페이스하기 위한 제 2 버스;
    NOR 비휘발성 메모리 장치; 및
    호스트 장치로부터의 구성 파라메터들을 저장하고, 상기 제 1 버스로부터의 어드레스를 NOR 메모리 장치로서의 상기 NOR 메모리장치, RAM 메모리 장치로서의 상기 RAM 메모리 장치, 및 NOR 메모리 장치의 동작을 에뮬레이팅시키는 상기 RAM 메모리 장치에 의한 동작으로 구분하기 위한 레지스터를 포함하는 메모리 컨트롤러.
  11. NOR 메모리에 있어서,
    NOR 프로토콜 명령 신호를 수신하기 위한 제 1 버스를 갖는 메모리 컨트롤러의 제 1 집적 회로 다이(die);
    NAND 메모리 프로토콜로 NAND 메모리 장치와 통신하기 위한 제 2 버스를 더 갖는 상기 메모리 컨트롤러;
    상기 메모리 컨트롤러의 동작을 초기화하기 위한 프로그램 코드를 저장하며, NOR 메모리 장치의 동작을 에뮬레이트하기 위해 상기 제 1 버스로부터의 NOR 프로토콜 명령들을 수신하고 거기에 응답하여 상기 제 2 버스 상에 NAND 프로토콜 명령들을 출력하기 위한 NOR 메모리를 더 갖는 상기 메모리 컨트롤러; 및
    상기 제 1 집적 회로 다이의 상기 제 2 버스에 연결되는, 상기 NAND 메모리 장치의 제 2 집적 회로 다이를 포함하며,
    상기 제 1 및 제 2 집적 회로 장치들은 동일한 패키지에 함께 패키지되는 NOR 메모리.
  12. 제 11항에 있어서,
    RAM 메모리 프로토콜로 RAM 메모리 장치와 통신하기 위한 제 3 버스를 더 갖는 상기 제 1 집적 회로 다이를 더 포함하는 NOR 메모리.
  13. 제 12항에 있어서,
    상기 제 3 버스에 연결되는 RAM 메모리를 더 포함하는 NOR 메모리.
  14. 제 13항에 있어서, 상기 RAM 메모리는
    분리된 집적 회로 다이이며 상기 제 1 및 상기 제 2 집적 회로 다이들과 같이 동일한 패키지로 패키지되는 NOR 메모리.
  15. 제 13항에 있어서, 상기 RAM 메모리는
    상기 메모리 컨트롤러를 갖는 상기 제 1 집적 회로 다이와 집적되는 NOR 메모리.
  16. 제 13항에 있어서, 상기 RAM 메모리는
    상기 NOR 프로토콜 명령들을 에뮬레이트하기 위해 동작하는 상기 NAND 메모리 장치에 대한 캐시로서 기능하는 NOR 메모리.
  17. 제 13항에 있어서,
    상기 제 1 버스로부터의 어드레스를 NOR 동작 및 상기 NAND 메모리를 사용하는 NOR 에뮬레이션 동작으로 구분하기 위한 파라메터들을 저장하기 위한 레지스터를 더 갖는 메모리 컨트롤러의 상기 제 1 집적 회로 다이를 더 포함하는 NOR 메모리.
  18. 제 17항에 있어서,
    상기 레지스터는 상기 제 1 버스로부터의 어드레스를 NOR 동작, 상기 NAND 메모리를 이용한 NOR 에뮬레이션 동작, RAM 동작 및 NAND 동작으로 구분하기 위한 파라메터들을 저장하며;
    상기 제 1 버스로부터의 어드레스를 구분하기 위한 상기 파라메터들은 호스트 장치로부터의 구성 파라메터들인 NOR 메모리.
  19. 어드레스 신호 및 호스트 장치로부터의 데이터 신호를 수신하기 위한 제 1 버스, NAND 메모리와 인터페이스하기 위한 제 2 버스; 및 RAM 메모리와 인터페이스하기 위한 제 3 버스; 및 NOR 메모리와 인터페이스하기 위한 제 4 버스를 갖는 메모리 컨트롤러;
    상기 제 2 버스와 연결되는 NAND 메모리;
    상기 제 3 버스와 연결되는 RAM 메모리; 및
    상기 제 4 버스와 연결되는 NOR 메모리를 포함하며,
    상기 메모리 컨트롤러는 상기 제 1 버스 상에 제공된 NOR 프로토콜 명령들, RAM 프로토콜 명령들 및 ATA NAND 프로토콜 명령들에 응답하는 메모리.
  20. 제 19항에 있어서, 상기 메모리는
    모놀리식(monolithic) 집적 회로 다이인 메모리.
  21. 제 19항에 있어서,
    상기 메모리 컨트롤러는 제 1 집적 회로 다이이며, 상기 NAND 메모리는 제 2 집적 회로 다이이며, 상기 RAM 메모리는 제 3 집적 회로 다이이며, 상기 NOR 메모리는 상기 메모리 컨트롤러에 집적되는 메모리.
  22. 제 21항에 있어서,
    상기 제 1, 제 2 및 제 3 집적 회로 다이들은 함께 패키지되는 메모리.
  23. 제 19항에 있어서,
    상기 메모리 컨트롤러는 제 1 집적 회로 다이이며, 상기 NAND 메모리는 제 2 집적 회로 다이이며, 상기 RAM 메모리 및 상기 NOR 메모리는 상기 메모리 컨트롤러에 집적되는 메모리.
  24. 제 23항에 있어서,
    상기 제 1 및 제 2 집적 회로 다이들은 함께 패키지되는 메모리.
  25. 제 19항에 있어서, 상기 NOR 메모리는
    NOR 어드레스로서 상기 제 1 버스 상의 제 1 어드레스; RAM 어드레스로서 상기 제 1 버스 상의 제 2 어드레스; 및 ATA NAND 어드레스로서 상기 제 1 버스 상의 제 3 어드레스에 응답하도록 구성된 프로그램 코드를 저장하는 메모리.
  26. 제 25항에 있어서, 상기 NOR 메모리는
    상기 메모리 컨트롤러의 동작을 초기화하기 위해 구성된 프로그램 코드를 더 저장하는 메모리.
  27. 제 26항에 있어서, 상기 메모리 컨트롤러는
    상기 제 1 버스로부터의 어드레스를 NOR 동작, 상기 NAND 메모리를 사용한 NOR 에뮬레이션 동작, RAM 동작 및 ATA NAND 동작으로 구분하기 위한 호스트 장치로부터의 구성 파라메터들을 저장하기 위한 레지스터를 더 구비하는 메모리.
  28. 제 27항에 있어서, 상기 NOR 메모리는
    상기 RAM 메모리가 상기 NAND 메모리를 사용한 NOR 에뮬레이션 동작을 위한 캐시로서 사용되도록 구성된 프로그램 코드를 더 저장하는 메모리.
  29. 호스트 장치에 연결되며 어드레스 신호 및 데이터 신호를 수신하기 위한 제 1 버스; NOR 메모리에 연결하기 위한 제 2 버스; RAM 메모리에 연결하기 위한 제 3 버스; NAND 메모리에 연결하기 위한 제 4 버스를 갖는 메모리 컨트롤러;
    상기 제 2 버스에 연결되는 NOR 메모리;
    상기 제 3 버스에 연결되는 RAM 메모리;
    상기 제 4 버스에 연결되는 NAND 메모리; 및
    상기 제 1 버스로부터의 제 1 어드레스를 NOR 동작으로, 상기 제 1 버스로부터의 제 2 어드레스를 NAND 메모리를 사용한 NOR 에뮬레이션 동작으로, 상기 제 1 버스로부터의 제 3 어드레스를 RAM 동작으로, 그리고 상기 제 1 버스로부터의 제 4 어드레스를 ATA NAND 동작으로 구분하기 위한 호스트 장치로부터의 구성 파라메터들을 저장하는 레지스터를 포함하는 호스트 한정 메모리.
  30. 제 29항에 있어서,
    상기 NOR 메모리는 상기 메모리 컨트롤러와 집적되어 동일한 집적 회로 다이로 되는 호스트 한정 메모리.
  31. 제 30항에 있어서,
    상기 RAM 메모리는 상기 메모리 컨트롤러와 집적되어 동일한 집적 회로 다이로 되는 호스트 한정 메모리.
  32. 제 30항에 있어서,
    상기 RAM 메모리는 제 1 집적 회로 다이이고 상기 메모리 컨트롤러는 제 2 집적 회로 다이이며, 상기 제 1 집적 회로 다이 및 상기 제 2 집적 회로 다이는 함께 패키지되는 호스트 한정 메모리.
  33. 제 29항에 있어서, 상기 NOR 메모리는
    상기 메모리 컨트롤러의 동작을 초기화하기 위해 구성된 프로그램 코드를 저장하는 호스트 한정 메모리.
  34. 메모리 컨트롤러의 동작을 초기화하기 위한 프로그램 코드를 저장하기 위한 비휘발성 메모리를 가지며, 어드레스 및 호스트 장치로부터의 데이터 신호들을 수신하기 위한 제 1 버스; RAM 메모리와 인터페이스하기 위한 제 2 버스; 및 NAND 메모리와 인터페이스하기 위한 제 3 버스를 가지는 메모리 컨트롤러;
    상기 제 2 버스에 연결되는 휘발성 RAM 메모리;
    상기 제 3 버스에 연결되는 NAND 메모리;
    상기 제 1 버스로부터의 NOR 프로토콜 명령들 및 제 1 어드레스를 수신하며, NAND 메모리에 있는 상기 제 2 어드레스로의 또는 제 2 어드레스로부터의 데이터에 대한 캐시로서 기능하는 상기 RAM 메모리를 이용하여 상기 제 1 어드레스를 상기 NAND 메모리에서의 제 2 어드레스로 매핑하고 그것에 응답하여 상기 NAND 메모리를 동작시키기 위한 수단; 및
    캐시로서 상기 RAM에 저장되는 데이터와 상기 NAND 메모리 내의 상기 제 2 어드레스에 있는 데이터 사이의 데이터 일관성을 유지하기 위한 수단을 포함하는 NOR 에뮬레이팅 메모리.
  35. 제 34항에 있어서, 상기 수신하기 위한 수단 및 유지하기 위한 수단은
    상기 비휘발성 메모리에 저장된 프로그램 코드를 포함하는 NOR 에뮬레이팅 메모리.
  36. 제 34항에 있어서,
    상기 휘발성 RAM은 상기 메모리 컨트롤러에 내장되며, 상기 메모리 컨트롤러는 제 1 집적 회로 다이이며, 상기 NAND 메모리는 제 2 집적 회로 다이이며, 상기 제 1 및 제 2 다이들은 함께 패키지되는 NOR 에뮬레이팅 메모리.
  37. 각각이 각 호스트 장치에 연결되게 복수의 호스트 장치들과 인터페이스하기 위한 복수의 제 1 버스들; 및 복수의 제 2 버스들을 가지는 메모리 컨트롤러;
    상기 복수의 제 2 버스들에 연결되며 출력버스를 갖는 중재 회로; 및
    상기 중재 회로의 상기 출력버스에 연결되는 NAND 메모리를 포함하며,
    상기 호스트 장치들 각각은 상기 중재 회로를 통해 상기 NAND 메모리에 접근하는 메모리 장치.
  38. 제 37항에 있어서,
    복수의 제 3 버스들을 갖는 상기 메모리 컨트롤러;
    상기 복수의 제 3 버스들에 연결되며 출력버스를 갖는 제 2 중재 회로; 및
    상기 제 2 중재 회로의 상기 출력버스에 연결되는 휘발성 RAM 메모리를 더 포함하며,
    상기 호스트 장치들 각각은 상기 제 2 중재 회로를 통해 상기 휘발성 RAM 메모리에 접근하는 메모리 장치.
  39. 복수의 호스트 장치들과 인터페이스하기 위한 제 1 버스를 가지며; 복수의 제 2 버스들 및 복수의 제 3 버스들을 더 갖는 메모리 컨트롤러;
    상기 복수의 제 2 버스들에 연결되며 제 1 출력버스를 갖는 제 1 중재 회로;
    상기 제 1 중재 회로의 상기 제 1 출력버스에 연결되는 NAND 메모리;
    복수의 제 3 버스들에 연결되며 제 2 출력버스를 갖는 제 2 중재 회로; 및
    상기 제 2 중재 회로의 상기 제 2 출력버스에 연결되는 휘발성 RAM 메모리를 포함하며,
    상기 각 호스트 장치는 상기 제 1 버스로의 접근을 허가하기 위한 상기 메모리 컨트롤러로부터의 분리 제어 신호를 제공받으며, 상기 제 1 중재 회로를 통해 상기 NAND 메모리에 접근하고, 상기 제 2 중재 회로를 통해 상기 휘발성 RAM 메모리에 접근하는 메모리 장치.
  40. 복수의 호스트 장치들과 인터페이스하며 각각이 어드레스 신호 및 다른 호스트 장치로부터의 데이터 신호를 수신하는 복수의 제 1 버스들, NAND 메모리와 인터페이스를 위한 제 2 버스, RAM 메모리와 인터페이스를 위한 제 3 버스 및 NOR 메모리와 인터페이스하기 위한 제 4 버스를 갖는 메모리 컨트롤러;
    상기 제 2 버스에 연결되는 NAND 메모리;
    상기 제 3 버스에 연결되는 RAM 메모리; 및
    상기 제 4 버스에 연결되는 NOR 메모리를 포함하며,
    상기 메모리 컨트롤러는 상기 다른 제 1 버스들 각각에 제공되는 NOR 프로토콜 명령들, RAM 프로토콜 명령들 및 상기 ATA NAND 프로토콜 명령들에 응답하는 메모리 장치.
KR1020060136568A 2005-12-28 2006-12-28 통합 메모리 및 컨트롤러 KR100797325B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US75493705P 2005-12-28 2005-12-28
US60/754,937 2005-12-28
US11/637,420 2006-12-11
US11/637,420 US20070147115A1 (en) 2005-12-28 2006-12-11 Unified memory and controller

Publications (2)

Publication Number Publication Date
KR20070070121A true KR20070070121A (ko) 2007-07-03
KR100797325B1 KR100797325B1 (ko) 2008-01-22

Family

ID=37951827

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060136568A KR100797325B1 (ko) 2005-12-28 2006-12-28 통합 메모리 및 컨트롤러

Country Status (5)

Country Link
US (1) US20070147115A1 (ko)
EP (1) EP1804156A3 (ko)
JP (1) JP2007183962A (ko)
KR (1) KR100797325B1 (ko)
TW (1) TW200745858A (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101066937B1 (ko) * 2008-03-01 2011-09-23 가부시끼가이샤 도시바 메모리 시스템 및 그 데이터 소거 방법
US8661207B2 (en) 2008-09-24 2014-02-25 Electronics & Telecommunications Research Institute Method and apparatus for assigning a memory to multi-processing unit
KR20150036018A (ko) * 2012-06-07 2015-04-07 바이올린 메모리 인코포레이티드 메모리 시스템 관리
KR20200003709A (ko) * 2018-07-02 2020-01-10 삼성전자주식회사 고-대역폭 메모리 신뢰성, 접근성 및 유용성(ras) 캐시 구조

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101611387B (zh) 2007-01-10 2013-03-13 移动半导体公司 用于增强外部计算设备的性能的自适应存储设备及方法
US8904098B2 (en) 2007-06-01 2014-12-02 Netlist, Inc. Redundant backup using non-volatile memory
US8301833B1 (en) 2007-06-01 2012-10-30 Netlist, Inc. Non-volatile memory module
US8874831B2 (en) 2007-06-01 2014-10-28 Netlist, Inc. Flash-DRAM hybrid memory module
TW200921384A (en) * 2007-11-15 2009-05-16 Genesys Logic Inc NOR interface flash memory device and access method thereof
US20090157946A1 (en) * 2007-12-12 2009-06-18 Siamak Arya Memory having improved read capability
US8307180B2 (en) 2008-02-28 2012-11-06 Nokia Corporation Extended utilization area for a memory device
US7724568B2 (en) * 2008-02-29 2010-05-25 Silicon Storage Technology, Inc. Memory device having read cache
US8484432B2 (en) 2008-03-11 2013-07-09 Kabushiki Kaisha Toshiba Memory system
TWI391941B (zh) * 2008-03-25 2013-04-01 Genesys Logic Inc 支援開機執行之儲存裝置
US20100125444A1 (en) * 2008-11-17 2010-05-20 Siamak Arya Method And Apparatus For Reducing Read Latency In A Pseudo Nor Device
US9037773B2 (en) * 2008-12-16 2015-05-19 Mediatek Inc. Methods for processing and addressing data between volatile memory and non-volatile memory in an electronic apparatus
US8874824B2 (en) 2009-06-04 2014-10-28 Memory Technologies, LLC Apparatus and method to share host system RAM with mass storage memory RAM
US20120066444A1 (en) * 2010-09-14 2012-03-15 Advanced Micro Devices, Inc. Resolution Enhancement of Video Stream Based on Spatial and Temporal Correlation
CN102820302B (zh) * 2011-06-09 2015-07-29 北京兆易创新科技股份有限公司 封装的存储芯片、嵌入式设备
US9417998B2 (en) 2012-01-26 2016-08-16 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US9311226B2 (en) 2012-04-20 2016-04-12 Memory Technologies Llc Managing operational state data of a memory module using host memory in association with state change
CA2891355C (en) * 2012-11-20 2022-04-05 Charles I. Peddle Solid state drive architectures
US9007860B2 (en) * 2013-02-28 2015-04-14 Micron Technology, Inc. Sub-block disabling in 3D memory
CN105122218B (zh) 2013-03-14 2019-01-18 美光科技公司 包含训练、数据组织及/或遮蔽的存储器***及方法
US9436600B2 (en) 2013-06-11 2016-09-06 Svic No. 28 New Technology Business Investment L.L.P. Non-volatile memory storage for multi-channel memory system
JP6021759B2 (ja) * 2013-08-07 2016-11-09 株式会社東芝 メモリシステムおよび情報処理装置
US10185515B2 (en) * 2013-09-03 2019-01-22 Qualcomm Incorporated Unified memory controller for heterogeneous memory on a multi-chip package
US9766823B2 (en) 2013-12-12 2017-09-19 Memory Technologies Llc Channel optimized storage modules
WO2015155103A1 (de) * 2014-04-08 2015-10-15 Fujitsu Technology Solutions Intellectual Property Gmbh Verfahren zum verbesserten zugriff auf einen hauptspeicher eines computersystems, entsprechendes computersystem sowie computerprogramm-produkt
KR102362229B1 (ko) * 2017-08-10 2022-02-11 삼성전자주식회사 메모리 컨트롤러, 메모리 시스템 및 메모리 컨트롤러를 포함하는 어플리케이션 프로세서
US11455254B2 (en) * 2020-12-10 2022-09-27 Macronix International Co., Ltd. Flash memory system and flash memory device thereof
TWI814647B (zh) * 2022-11-24 2023-09-01 慧榮科技股份有限公司 執行主機命令的方法及電腦程式產品及裝置

Family Cites Families (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4534011A (en) * 1982-02-02 1985-08-06 International Business Machines Corporation Peripheral attachment interface for I/O controller having cycle steal and off-line modes
JPS61114631A (ja) * 1984-11-07 1986-06-02 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション 通信アダプタ
US4860192A (en) * 1985-02-22 1989-08-22 Intergraph Corporation Quadword boundary cache system
US4837677A (en) * 1985-06-14 1989-06-06 International Business Machines Corporation Multiple port service expansion adapter for a communications controller
US5276807A (en) * 1987-04-13 1994-01-04 Emulex Corporation Bus interface synchronization circuitry for reducing time between successive data transmission in a system using an asynchronous handshaking
US5134706A (en) * 1987-08-07 1992-07-28 Bull Hn Information Systems Inc. Bus interface interrupt apparatus
US4974153A (en) * 1987-09-04 1990-11-27 Digital Equipment Corporation Repeater interlock scheme for transactions between two buses including transaction and interlock buffers
US4955024A (en) * 1987-09-14 1990-09-04 Visual Information Technologies, Inc. High speed image processing computer with error correction and logging
US4965717A (en) * 1988-12-09 1990-10-23 Tandem Computers Incorporated Multiple processor system having shared memory with private-write capability
US5189665A (en) * 1989-03-30 1993-02-23 Texas Instruments Incorporated Programmable configurable digital crossbar switch
US5805792A (en) * 1989-07-31 1998-09-08 Texas Instruments Incorporated Emulation devices, systems, and methods
US5218686A (en) * 1989-11-03 1993-06-08 Compaq Computer Corporation Combined synchronous and asynchronous memory controller
GB9019022D0 (en) * 1990-08-31 1990-10-17 Ncr Co Work station or similar data processing system including interfacing means to microchannel means
US5210530A (en) * 1991-01-04 1993-05-11 Codex Corporation Network management interface with internal dsd
KR960001273B1 (ko) * 1991-04-30 1996-01-25 가부시키가이샤 도시바 단일칩 마이크로컴퓨터
US5778418A (en) * 1991-09-27 1998-07-07 Sandisk Corporation Mass computer storage system having both solid state and rotating disk types of memory
US5341487A (en) * 1991-12-20 1994-08-23 International Business Machines Corp. Personal computer having memory system with write-through cache and pipelined snoop cycles
JPH0727494B2 (ja) * 1992-01-02 1995-03-29 インターナショナル・ビジネス・マシーンズ・コーポレイション キャッシュ・スヌープ/データ無効化機能を有するコンピュータ・システム
US5379415A (en) * 1992-09-29 1995-01-03 Zitel Corporation Fault tolerant memory system
JP2541767B2 (ja) * 1992-11-12 1996-10-09 インターナショナル・ビジネス・マシーンズ・コーポレイション スマ―ト・バス制御ユニット
US5404485A (en) * 1993-03-08 1995-04-04 M-Systems Flash Disk Pioneers Ltd. Flash file system
US5561819A (en) * 1993-10-29 1996-10-01 Advanced Micro Devices Computer system selecting byte lane for a peripheral device during I/O addressing technique of disabling non-participating peripherals by driving an address within a range on the local bus in a DMA controller
US5446869A (en) * 1993-12-30 1995-08-29 International Business Machines Corporation Configuration and RAM/ROM control of PCI extension card residing on MCA adapter card
US5535340A (en) * 1994-05-20 1996-07-09 Intel Corporation Method and apparatus for maintaining transaction ordering and supporting deferred replies in a bus bridge
DE69634358T2 (de) * 1995-06-07 2005-12-29 Samsung Electronics Co., Ltd., Suwon Verzögerungsverringerung in der übertragung von gepufferten daten zwischenzwei gegenseitig asynchronen bussen
US5721839A (en) * 1995-10-13 1998-02-24 Compaq Computer Corporation Apparatus and method for synchronously providing a fullness indication of a dual ported buffer situated between two asynchronous buses
US5729760A (en) * 1996-06-21 1998-03-17 Intel Corporation System for providing first type access to register if processor in first mode and second type access to register if processor not in first mode
US5805835A (en) * 1996-07-15 1998-09-08 Micron Electronics, Inc. Parallel architecture computer system and method
GB9622687D0 (en) * 1996-10-31 1997-01-08 Sgs Thomson Microelectronics An integrated circuit with tap controller
JP3607439B2 (ja) * 1996-11-11 2005-01-05 株式会社日立製作所 半導体集積回路装置
US6098110A (en) * 1996-12-30 2000-08-01 Compaq Computer Corporation Network switch with a multiple bus structure and a bridge interface for transferring network data between different buses
US5990914A (en) * 1997-09-09 1999-11-23 Compaq Computer Corporation Generating an error signal when accessing an invalid memory page
US5905509A (en) * 1997-09-30 1999-05-18 Compaq Computer Corp. Accelerated Graphics Port two level Gart cache having distributed first level caches
US5937425A (en) * 1997-10-16 1999-08-10 M-Systems Flash Disk Pioneers Ltd. Flash file system optimized for page-mode flash technologies
US6029253A (en) * 1997-10-30 2000-02-22 Micron Electronics, Inc. Method for synchronizing data with a bi-directional buffer
US6199167B1 (en) * 1998-03-25 2001-03-06 Compaq Computer Corporation Computer architecture with password-checking bus bridge
US6415353B1 (en) * 1998-10-01 2002-07-02 Monolithic System Technology, Inc. Read/write buffers for complete hiding of the refresh of a semiconductor memory and method of operating same
JP2000195926A (ja) * 1998-12-25 2000-07-14 Disco Abrasive Syst Ltd ウェ―ハ搬送装置
US6199137B1 (en) * 1999-01-05 2001-03-06 Lucent Technolgies, Inc. Method and device for controlling data flow through an IO controller
US6330635B1 (en) * 1999-04-16 2001-12-11 Intel Corporation Multiple user interfaces for an integrated flash device
US6658006B1 (en) * 1999-06-03 2003-12-02 Fujitsu Network Communications, Inc. System and method for communicating data using modified header bits to identify a port
US6421765B1 (en) * 1999-06-30 2002-07-16 Intel Corporation Method and apparatus for selecting functional space in a low pin count memory device
US6502146B1 (en) * 2000-03-29 2002-12-31 Intel Corporation Apparatus and method for dedicated interconnection over a shared external bus
US6934785B2 (en) * 2000-12-22 2005-08-23 Micron Technology, Inc. High speed interface with looped bus
US6510488B2 (en) * 2001-02-05 2003-01-21 M-Systems Flash Disk Pioneers Ltd. Method for fast wake-up of a flash memory system
US6882082B2 (en) * 2001-03-13 2005-04-19 Micron Technology, Inc. Memory repeater
US6813673B2 (en) * 2001-04-30 2004-11-02 Advanced Micro Devices, Inc. Bus arbitrator supporting multiple isochronous streams in a split transactional unidirectional bus architecture and method of operation
JP4049297B2 (ja) * 2001-06-11 2008-02-20 株式会社ルネサステクノロジ 半導体記憶装置
US7386653B2 (en) 2001-08-06 2008-06-10 Sandisk Il Ltd Flash memory arrangement
KR100393619B1 (ko) * 2001-09-07 2003-08-02 삼성전자주식회사 휴대 단말기의 메모리 장치 및 그 제어방법
US6636935B1 (en) * 2001-09-10 2003-10-21 Rambus Inc. Techniques for increasing bandwidth in port-per-module memory systems having mismatched memory modules
US6633944B1 (en) * 2001-10-31 2003-10-14 Lsi Logic Corporation AHB segmentation bridge between busses having different native data widths
JP4480064B2 (ja) * 2002-01-31 2010-06-16 パナソニック株式会社 メモリ管理装置およびメモリ管理方法
US6683817B2 (en) * 2002-02-21 2004-01-27 Qualcomm, Incorporated Direct memory swapping between NAND flash and SRAM with error correction coding
US7234052B2 (en) * 2002-03-08 2007-06-19 Samsung Electronics Co., Ltd System boot using NAND flash memory and method thereof
US20030206442A1 (en) * 2002-05-02 2003-11-06 Jerry Tang Flash memory bridiging device, method and application system
US7904897B2 (en) * 2002-08-08 2011-03-08 Rudelic John C Executing applications from a semiconductor nonvolatile memory
FI20021620A (fi) * 2002-09-10 2004-03-11 Nokia Corp Muistirakenne, järjestelmä ja elektroniikkalaite sekä menetelmä muistipiirin yhteydessä
JP4499982B2 (ja) * 2002-09-11 2010-07-14 株式会社日立製作所 メモリシステム
JP2004118544A (ja) * 2002-09-26 2004-04-15 Renesas Technology Corp メモリシステム
CN1717662B (zh) * 2002-11-28 2010-04-28 株式会社瑞萨科技 存储器模块、存储器***和信息仪器
JP2005010942A (ja) * 2003-06-17 2005-01-13 Matsushita Electric Ind Co Ltd ブートコードが格納されるシーケンシャルアクセス・メモリデバイスを備えた装置及び前記装置の起動方法
US7752380B2 (en) * 2003-07-31 2010-07-06 Sandisk Il Ltd SDRAM memory device with an embedded NAND flash controller
JP2005092630A (ja) * 2003-09-18 2005-04-07 Sony Corp メモリ制御装置及び制御方法
US7136973B2 (en) * 2004-02-04 2006-11-14 Sandisk Corporation Dual media storage device
US7127549B2 (en) * 2004-02-04 2006-10-24 Sandisk Corporation Disk acceleration using first and second storage devices
US7610433B2 (en) * 2004-02-05 2009-10-27 Research In Motion Limited Memory controller interface
US20050204091A1 (en) * 2004-03-11 2005-09-15 Kilbuck Kevin M. Non-volatile memory with synchronous DRAM interface
WO2006026645A2 (en) * 2004-08-30 2006-03-09 Silicon Storage Technology, Inc. Systems and methods for providing nonvolatile memory management in wireless phones
US7334107B2 (en) * 2004-09-30 2008-02-19 Intel Corporation Caching support for direct memory access address translation

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101066937B1 (ko) * 2008-03-01 2011-09-23 가부시끼가이샤 도시바 메모리 시스템 및 그 데이터 소거 방법
US8661207B2 (en) 2008-09-24 2014-02-25 Electronics & Telecommunications Research Institute Method and apparatus for assigning a memory to multi-processing unit
KR20150036018A (ko) * 2012-06-07 2015-04-07 바이올린 메모리 인코포레이티드 메모리 시스템 관리
KR20200003709A (ko) * 2018-07-02 2020-01-10 삼성전자주식회사 고-대역폭 메모리 신뢰성, 접근성 및 유용성(ras) 캐시 구조

Also Published As

Publication number Publication date
EP1804156A2 (en) 2007-07-04
JP2007183962A (ja) 2007-07-19
US20070147115A1 (en) 2007-06-28
KR100797325B1 (ko) 2008-01-22
EP1804156A3 (en) 2007-11-21
TW200745858A (en) 2007-12-16

Similar Documents

Publication Publication Date Title
KR100797325B1 (ko) 통합 메모리 및 컨트롤러
US20090157946A1 (en) Memory having improved read capability
US7519754B2 (en) Hard disk drive cache memory and playback device
US9852069B2 (en) RAM disk using non-volatile random access memory
KR101469512B1 (ko) 외부 컴퓨팅 디바이스의 성능 향상을 위한 어댑티브 메모리 시스템
US8443144B2 (en) Storage device reducing a memory management load and computing system using the storage device
KR100610647B1 (ko) 직접실행제어 기능과 스토리지 기능이 복합된 대용량저장장치
US20180275921A1 (en) Storage device
CN109582214B (zh) 数据访问方法以及计算机***
TWI752620B (zh) 與記憶體類型相關的頁表
CN113243007A (zh) 存储级存储器访问
US11126573B1 (en) Systems and methods for managing variable size load units
EP3270293B1 (en) Two stage command buffers to overlap iommu map and second tier memory reads
US5287512A (en) Computer memory system and method for cleaning data elements
US5953740A (en) Computer memory system having programmable operational characteristics based on characteristics of a central processor
JPH10293684A (ja) コンピュータシステムおよびその立ち上げ制御方法
EP4116829A1 (en) Systems and methods for managing variable size load units
JP2024001761A (ja) メモリシステムおよび制御方法
JP4724289B2 (ja) データ処理装置およびデータ処理装置のメモリアクセス制御方法
JP2923273B2 (ja) データ処理システム
JPS63247852A (ja) キヤツシユメモリ制御方法
JP2791319B2 (ja) データ処理装置
JPH0630074B2 (ja) プロセッサ
JPH0724043B2 (ja) データ処理装置
JPH08147216A (ja) データ処理装置

Legal Events

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

Payment date: 20130108

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140107

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150106

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160108

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170110

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20180105

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee