KR20200036461A - 메모리 디바이스들 사이의 직접 통신을 위한 메모리 시스템 및 메모리 디바이스 - Google Patents

메모리 디바이스들 사이의 직접 통신을 위한 메모리 시스템 및 메모리 디바이스 Download PDF

Info

Publication number
KR20200036461A
KR20200036461A KR1020180116119A KR20180116119A KR20200036461A KR 20200036461 A KR20200036461 A KR 20200036461A KR 1020180116119 A KR1020180116119 A KR 1020180116119A KR 20180116119 A KR20180116119 A KR 20180116119A KR 20200036461 A KR20200036461 A KR 20200036461A
Authority
KR
South Korea
Prior art keywords
memory
channel
host device
memory device
host
Prior art date
Application number
KR1020180116119A
Other languages
English (en)
Inventor
최영근
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020180116119A priority Critical patent/KR20200036461A/ko
Priority to US16/411,664 priority patent/US10996872B2/en
Priority to CN201910706837.0A priority patent/CN110968533B/zh
Publication of KR20200036461A publication Critical patent/KR20200036461A/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/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0637Permissions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • 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/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Storage Device Security (AREA)

Abstract

동작 효율성이 향상된 메모리 디바이스 및 메모리 시스템이 제공된다. 메모리 디바이스는, 채널에 연결되고, 메모리 셀 어레이 및 상기 채널의 동작 권한을 제어하는 메모리-권한 제어부를 포함하되, 상기 메모리-권한 제어부가 상기 채널의 동작 권한을 갖는 경우, 상기 채널에 연결된 다른 메모리 디바이스의 데이터 플로우(data flow)를 제어한다.

Description

메모리 디바이스들 사이의 직접 통신을 위한 메모리 시스템 및 메모리 디바이스{MEMORY DEVICE AND MEMORY SYSTEM FOR DIRECT COMMUNICATION BETWEEN THE MEMORY DEVICES}
본 발명은 메모리 디바이스들 사이의 직접 통신을 위한 메모리 시스템 및 메모리 디바이스에 관한 것이다.
메모리 시스템은 예를 들어, 메모리 디바이스들, 채널, 또는 호스트 디바이스를 포함할 수 있다. 메모리 디바이스들은 채널을 통해 호스트 디바이스와 연결될 수 있다.
메모리 시스템에서, 호스트 디바이스는 메모리 디바이스들을 완전히 제어할 수 있다. 즉, 메모리 디바이스들은 온전히 호스트 디바이스의 슬레이브(slave)로써 동작할 수 있다.
또한, 메모리 디바이스는 메모리 프로세서(processor in memory; PIM)와 같은 추가적인 프로세싱 유닛을 포함할 수 있다. 메모리 프로세서는 해당 메모리 프로세서를 포함하는 메모리 디바이스 내의 데이터를 처리할 수 있다.
즉, 메모리 디바이스가 메모리 프로세서를 포함하는 경우, 메모리 디바이스 내의 데이터는 호스트 디바이스에 의해 처리되거나, 메모리 디바이스 내의 메모리 프로세서에 의해 처리될 수 있다.
한편, 메모리 디바이스의 메모리 프로세서에서 일련의 명령들을 처리하는 경우, 해당 메모리 프로세서를 포함하는 메모리 디바이스 내의 데이터 뿐만 아니라 채널에 연결된 다른 메모리 디바이스의 데이터가 필요할 수 있다. 이때, 메모리 디바이스들은 온전히 호스트 디바이스의 슬레이브(slave)로써 동작하기 때문에, 메모리 프로세서는 호스트 디바이스에게 상기 다른 메모리 디바이스의 데이터를 요청할 수 있다. 즉, 메모리 디바이스들 사이의 데이터 이동 요청이 있는 경우, 호스트 디바이스의 개입이 필수적일 수 있다.
메모리 디바이스들 사이의 데이터 이동 요청이 빈번하게 발생하는 경우, 호스트 디바이스의 부담이 점차 확대될 수 있다. 이와 같이, 호스트 디바이스가 메모리 시스템의 채널을 장악하여, 채널에 연결된 모든 메모리 디바이스들의 데이터 플로우를 제어하는 것은 호스트 디바이스의 부담을 초래할 수 있다. 이러한 호스트 디바이스의 부담은, 메모리 시스템의 동작 효율성을 저해시킬 수 있다.
본 발명이 해결하고자 하는 기술적 과제는, 메모리 시스템의 동작 효율성을 증가시키는 메모리 시스템 및 메모리 디바이스를 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본원의 일 실시예에 따른 메모리 디바이스는, 채널에 연결되고, 메모리 셀 어레이 및 상기 채널의 동작 권한을 제어하는 메모리-권한 제어부를 포함하되, 상기 메모리-권한 제어부가 상기 채널의 동작 권한을 갖는 경우, 상기 채널에 연결된 다른 메모리 디바이스의 데이터 플로우(data flow)를 제어한다.
상기 기술적 과제를 달성하기 위한 본원의 일 실시예에 따른 메모리 시스템은, 채널에 연결되고, 상기 채널의 동작 권한을 제어하는 호스트-권한 제어부를 포함하되, 상기 채널의 동작 권한을 갖지 않는 경우, 상기 채널로의 데이터 플로우(data flow)를 차단하는 호스트 디바이스를 포함한다.
상기 기술적 과제를 달성하기 위한 본원의 일 실시예에 따른 메모리 시스템은, 제1 채널 및 상기 제1 채널과 다른 제2 채널에 각각 연결되고, 상기 제1 및 제2 채널의 동작 권한을 제어하는 호스트-권한 제어부를 포함하는 호스트 디바이스, 상기 제1 채널에 연결된 제1 및 제2 메모리 디바이스, 및 상기 제2 채널에 연결된 제3 메모리 디바이스를 포함하되, 상기 호스트-권한 제어부는, 상기 제1 메모리 디바이스에 상기 제1 채널에 대한 동작 권한을 부여하여, 상기 제1 메모리 디바이스는 상기 제2 메모리 디바이스에 데이터를 직접 요청하고, 상기 제3 메모리 디바이스에는 상기 제2 채널에 대한 동작 권한을 부여하지 않는다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본원의 일 실시예에 따른, 메모리 시스템의 블록도이다.
도 2는 본원의 일 실시예에 따른, 메모리 디바이스의 블록도이다.
도 3은 본원의 일 실시예에 따른, 메모리 디바이스와 호스트 디바이스의 동작을 설명하기 위한 순서도이다.
도 4는 도 3의 S110 내지 S150 동작을 설명하기 위한 도면이다.
도 5는 도 3의 S160 및 S170 동작을 설명하기 위한 도면이다.
도 6은 본원의 일 실시예에 따른, 입-출력 포트를 갖는 메모리 디바이스를 포함하는 메모리 시스템의 블록도이다.
도 7은 본원의 일 실시예에 따른, 메모리 시스템에 의해 수행되는 가비지 컬렉션(garbage collection) 동작을 설명하기 위한 도면이다.
도 8은 본원의 일 실시예에 따른, 가비지 컬렉션(garbage collection) 동작을 수행하기 위한 명령들을 설명하기 위한 도면이다.
도 9는 본원의 일 실시예에 따른, 메모리 시스템에 의해 수행되는 가비지 컬렉션(garbage collection) 동작을 설명하기 위한 도면이다.
도 10 및 도 11은 본원의 일 실시예에 따른, 메모리 시스템의 효과를 설명하기 위한 도면이다.
도 12는 본원의 일 실시예에 따른, 메모리 시스템에 의한 웨어-레벨링(wear-leveling) 동작을 설명하기 위한 도면이다.
도 13은 본원의 일 실시예에서, 메모리 시스템의 효과를 설명하기 위한 도면이다.
도 14는 본원의 일 실시예에 따른, 메모리 디바이스의 메모리 프로세서가 호스트 디바이스의 메모리 컨트롤러를 이용하는 메모리 시스템의 블록도이다.
도 15는 본원의 일 실시예에 따른, 메모리 시스템에서 메모리 디바이스와 호스트 디바이스의 동작을 설명하기 위한 순서도이다.
도 16은 도 15의 S252 내지 S256 동작을 설명하기 위한 도면이다.
도 17은 본원의 일 실시예에 따른, 두 개의 채널을 갖는 메모리 시스템의 블록도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 도면에서 표시된 구성요소의 크기 및 상대적인 크기는 설명의 명료성을 위해 과장된 것일 수 있다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭하며, "및/또는"은 언급된 아이템들의 각각 및 하나 이상의 모든 조합을 포함한다.
본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 "포함한다(comprises)" 및/또는 "포함하는(comprising)"은 언급된 구성요소 외에 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
비록 제1, 제2 등이 다양한 소자나 구성요소들을 서술하기 위해서 사용되나, 이들 소자나 구성요소들은 이들 용어에 의해 제한되지 않음은 물론이다. 이들 용어들은 단지 하나의 소자나 구성요소를 다른 소자나 구성요소와 구별하기 위하여 사용하는 것이다. 따라서, 이하에서 언급되는 제1 소자나 구성요소는 본 발명의 기술적 사상 내에서 제2 소자나 구성요소 일 수 있음은 물론이다.
다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있을 것이다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다.
도 1은 본원의 일 실시예에 따른, 메모리 시스템의 블록도이다.
본원의 일 실시예에 따른 메모리 시스템은 제1 메모리 디바이스(100), 제2 메모리 디바이스(200), 제3 메모리 디바이스(300), 호스트 디바이스(400), 및 채널(500)을 포함할 수 있다.
제1 내지 제3 메모리 디바이스(100, 200, 300)는 각각 제1 내지 제3 메모리-권한 제어부(102, 202, 302), 제1 내지 제3 메모리 프로세서(104, 204, 206), 제1 내지 제3 메모리 셀 어레이(106, 206, 306)을 포함할 수 있다. 제1 내지 제3 메모리 디바이스(100, 200, 300)는 각각 채널(500)을 통해 호스트 디바이스(400)와 연결될 수 있다. 일 실시예에서, 메모리 디바이스(100, 200, 300)는 휘발성 메모리 디바이스 또는 비휘발성 메모리 디바이스로 구현될 수 있다. 일 실시예에서, 메모리 디바이스(100, 200, 300)는 스토리지 클래스 메모리 디바이스(storage class memory device)로 구성될 수 있다.
일 실시예에서, 메모리-권한 제어부(102, 202, 302)는 배타적으로 채널(500)의 동작 권한을 가질 수 있다. 예를 들어, 제1 메모리-권한 제어부(102)가 채널(500)의 동작 권한을 갖는 경우, 채널(500)에 연결된 제2 및 제3 메모리 디바이스(200, 300)와 호스트 디바이스(400)는 채널(500)의 동작 권한을 갖지 않을 수 있다.
메모리-권한 제어부(102, 202, 302)는 각각의 메모리 디바이스(100, 200, 300) 내의 별개의 구성일 수 있다. 예를 들어, 제1 메모리-권한 제어부(102)는 메모리 디바이스(100)내의 별개의 IC 칩으로 구현될 수 있다.
일 실시예에서, 메모리-권한 제어부(102, 202, 302)는 메모리 프로세서(104, 204, 304)에 포함되는 구성일 수 있다. 예를 들어, 제1 메모리-권한 제어부(102)는 제1 메모리 프로세서(104) 내의 별개의 IC 칩으로 구현될 수 있다.
일 실시예에서, 메모리-권한 제어부(102, 202, 302)는 각각의 메모리 프로세서(104, 204, 304)에 포함될 수 있다. 예를 들어, 제1 메모리-권한 제어부(102)는 제1 메모리 프로세서(104)에서 실행되는 소프트웨어로 구현될 수 있다.
일 실시예에서, 메모리 시스템에서 메모리 디바이스(100, 200, 300)들이 모두 메모리-권한 제어부를 포함해야 하는 것은 아니다. 즉, 제1 메모리 디바이스(100)만이 제1 메모리-권한 제어부(100)를 포함하고, 제2 메모리 디바이스(200) 또는 제3 메모리 디바이스(300)는 메모리-권한 제어부(202 또는 302)를 포함하지 않을 수도 있다. 다만, 실시예들이 이에 한정되지 않는다.
일 실시예에서, 제1 메모리 프로세서(104)는 메모리 디바이스(100) 또는 채널(500)에 연결된 제2 또는 제3 메모리 디바이스(200, 300)에 대한 일련의 명령들을 수행할 수 있다. 제1 메모리 프로세서(104)는 제2 또는 제3 메모리 디바이스(200, 300)의 데이터 플로우를 제어하기 위한 제어-명령(control-instruction)들을 수행할 수 있다. 일 실시예에서, 제2 또는 제3 메모리 디바이스(200, 300)의 데이터 플로우를 제어하기 위한 제어-명령들은, 제2 또는 제3 메모리 디바이스(200, 300)의 제2 또는 제3 메모리 셀 어레이(206, 306)의 데이터를 리드(read), 라이트(write), 또는 이레이즈(erase)하는 것을 포함할 수 있다.
일 실시예에서, 제2 메모리 프로세서(204) 또는 제3 메모리 프로세서(304)는 제1 메모리 프로세서(104)와 동일한 기능을 수행할 수 있다. 다만, 제2 메모리 프로세서(204) 또는 제3 메모리 프로세서(304)가 항상 제1 메모리 프로세서(104)와 동일한 기능을 수행해야하는 것은 아니다.
메모리 프로세서(104, 204, 304)는 메모리 디바이스(100, 200, 300)에서 별도의 구성으로 구현될 수 있다. 일 실시예에서, 메모리 프로세서(104, 204, 304)는 메모리 디바이스(100, 200, 300)에서 별도의 IC 칩으로 구현될 수 있다.
일 실시예에서, 메모리 시스템에서 일부 메모리 디바이스는 메모리 프로세서를 포함하지 않을 수 있다. 즉, 제1 메모리 디바이스(100)만이 제1 메모리 프로세서(104)를 포함하고, 제2 메모리 디바이스(200) 및 제3 메모리 디바이스(300)는 메모리 프로세서를 포함하지 않을 수도 있다. 다만, 실시예들이 이에 한정되지 않는다.
메모리 디바이스(100, 200, 300)의 메모리 셀 어레이(106, 206, 306)는 데이터를 저장하는 복수의 메모리 셀을 포함할 수 있다. 일 실시예에서, 메모리 셀 어레이(100, 200, 300)에서 리드, 라이트, 또는 이레이즈 동작이 적용되는 메모리 셀의 범위는 상이할 수 있다. 일 실시예에서, 메모리 셀 어레이(100, 200, 300)는 복수의 메모리 셀로 구성된 블록(block)들을 포함할 수 있다. 그리고, 각각의 블록들은 복수의 메모리 셀로 구성된 페이지(page)들을 포함할 수 있다. 이때, 데이터는 페이지 단위로 리드 또는 라이트될 수 있고, 블록 단위로 이레이즈될 수 있다.
제1 메모리 디바이스(100)의 제1 메모리 프로세서(104)는 예를 들어, 제1 내지 제3 메모리 셀 어레이(106) 중 적어도 하나의 데이터 주소를 포함하는 메모리 주소 테이블(Memory Address Table)을 포함할 수 있다. 제1 메모리 프로세서(104)는 일련의 명령들을 수행함에 따라, 제1 내지 제3 메모리 셀 어레이(106, 206, 306))의 데이터 주소가 변경되는 경우, 메모리 주소 테이블을 업데이트할 수 있다.
이러한 메모리 주소 테이블은 메모리 프로세서(104)에서 별도의 구성으로 구현될 수 있다. 예를 들어, 메모리 주소 테이블은 메모리 프로세서(104) 내의 별도의 IC 칩으로 구현될 수 있다. 메모리 주소 테이블은 메모리 프로세서(104)의 일부로 구현될 수 있다. 예를 들어, 메모리 주소 테이블은 메모리 프로세서(104)에서 수행되는 소프트웨어로 구현될 수 있다.
호스트 디바이스(400)는 호스트-권한 제어부(Ownership Controller, OC)(400), 채널 잠금부(Channel Lock Unit)(404), 메모리 컨트롤러(Memory Controller)(406), 코어 프로세서(CPU)(408), 캐시(Cache)(410), 및 변환 색인 버퍼(translation lookaside buffer, TLB)(412)를 포함할 수 있다.
호스트-권한 제어부(402)는 채널(500)의 동작 권한을 가질 수 있다. 호스트-권한 제어부(402)가 채널(500)의 동작 권한을 갖는 경우, 채널(500)에 연결된 메모리 디바이스(100, 200, 300)의 제1 내지 제3 메모리-권한 제어부(102, 202, 303)는 채널의 동작 권한을 갖지 않을 수 있다.
일 실시예에서, 호스트-권한 제어부(402)는 호스트 디바이스(400)에서 독립된 유닛으로 구성될 수 있다. 예를 들어, 호스트-권한 제어부(402)는 독립된 IC 칩으로 구성될 수 있다. 일 실시예에서, 호스트-권한 제어부(402)는 메모리 컨트롤러(406)에 포함되는 별개의 구성일 수 있다. 예를 들어, 호스트-권한 제어부(402)는 메모리 컨트롤러(406) 내에서 별개의 IC 칩으로 구성될 수 있다. 일 실시예에서, 호스트-권한 제어부(402)는 메모리 컨트롤러(406)에 포함될 수 있다. 예를 들어, 호스트-권한 제어부(402)는 메모리 컨트롤러(406)에서 실행되는 소프트웨어로 구현될 수 있다.
호스트 디바이스(400)의 채널 잠금부(404)는 호스트 디바이스(400)로부터 채널(500)로의 데이터 플로우(data flow)를 차단하기 위한 락(lock)을 설정할 수 있다. 채널 잠금부(404)는, 호스트 디바이스(400)의 코어 프로세서(408)로부터 메모리 컨트롤러(406)로의 데이터 요청 또는 일련의 명령들을 차단하기 위해, 코어 프로세서(408)와 메모리 컨트롤러(406) 사이에 락을 설정할 수 있다.
일 실시예에 있어서, 채널 잠금부(404)는 세마포어(semaphore)를 이용하여 락을 설정할 수 있다. 일 실시예에서, 채널 잠금부(404)는 호스트 디바이스(400)에서 독립된 유닛으로 구성될 수 있다. 예를 들어, 채널 잠금부(404)는 독립된 IC 칩으로 구성될 수 있다. 일 실시예에서, 채널 잠금부(404)는 메모리 컨트롤러(406)에 포함되는 별개의 구성일 수 있다. 예를 들어, 채널 잠금부(404)는 메모리 컨트롤러(406) 내에서 별개의 IC 칩으로 구성될 수 있다. 일 실시예에서, 채널 잠금부(404)는 메모리 컨트롤러(406)에 포함될 수 있다. 예를 들어, 채널 잠금부(404)는 메모리 컨트롤러(406)에서 실행되는 소프트웨어로 구현될 수 있다.
호스트 디바이스(400)의 메모리 컨트롤러(406)는 채널(500)에 연결된 메모리 디바이스(100, 200, 300)의 데이터 플로우를 제어할 수 있다. 메모리 컨트롤러(406)는 호스트 디바이스(400)가 채널(500)의 동작 권한을 갖지 않는 경우, 채널(500)에 연결된 메모리 디바이스(100, 200, 300)의 데이터 플로우를 제어하지 않을 수 있다. 호스트 디바이스(400)의 메모리 컨트롤러(406)는 호스트 디바이스(400)에서 독립된 유닛으로 구성될 수 있다. 예를 들어, 메모리 컨트롤러(406)는 독립된 IC 칩으로 구성될 수 있다.
호스트 디바이스(400)의 코어 프로세서(408)는 채널(500)에 연결된 메모리 디바이스(100, 200, 300)에 대한 일련의 명령들을 수행할 수 있다. 코어 프로세서(408)는 채널(500)에 연결된 메모리 디바이스(100, 200, 300)에 대한 일련의 명령들을 메모리 디바이스(100, 200, 300)의 메모리 프로세서(104, 204, 304)로 송신할 수 있다. 코어 프로세서(408)는, 호스트 디바이스(400)의 채널 잠금부(404)에 의한 락이 설정된 경우, 채널(500)에 연결된 메모리 디바이스(100, 200, 300)에 대한 일련의 명령들을 수행하는 것 이외의 작업을 처리할 수 있다. 예를 들어, 코어 프로세서(408)는, 호스트-권한 제어부(402)가 채널(500)의 동작 권한을 갖는 경우, 채널(500)에 연결된 메모리 디바이스(100, 200, 300)에 대한 일련의 명령들을 직접 수행할 수 있고, 일련의 명령들을 메모리 디바이스(100, 200, 300)의 메모리 프로세서(104, 204, 304)로 송신할 수 있다. 또한, 코어 프로세서(410)는 호스트 디바이스(400)의 채널 잠금부(404)에 의한 락이 설정된 경우, 다른 작업을 처리하는데 사용될 수 있다.
호스트 디바이스(400)의 캐시(410)는 채널(500)에 연결된 메모리 디바이스(100, 200, 300)에 저장된 데이터의 일부를 저장할 수 있다. 캐시(410)에 저장된 데이터는 호스트 디바이스(400)의 코어 프로세서(408)에게 제공될 수 있다. 캐시(410)는, 호스트 디바이스(400)의 채널 잠금부(404)에 의한 락이 설정된 경우, 플러시(flush)될 수 있다.
호스트 디바이스(400)의 변환 색인 버퍼(Translation Lookaside Buffer, TLB)(412)는 채널(500)에 연결된 메모리 디바이스(100, 200, 300)의 메모리 셀 어레이(106, 206, 306)의 데이터 주소를 포함하는 메모리 주소 테이블을 포함할 수 있다. TLB(412)는 데이터의 가상 메모리 주소를 데이터의 물리 메모리 주소로 변환할 수 있다. 호스트 디바이스(400)가 채널(500)에 연결된 메모리 디바이스(100, 200, 300)의 메모리 프로세서(104, 204, 304)로부터 업데이트된 메모리 주소 테이블을 수신하는 경우, TLB(412)는 메모리 주소 테이블을 업데이트할 수 있다.
예를 들어, 도 1에서, 호스트 디바이스(400)의 TLB(412)는 제1 내지 제3 메모리 셀 어레이(106, 206, 306)의 데이터 주소를 포함하는 메모리 주소 테이블을 포함할 수 있다. 또한, TLB(412)는, 호스트 디바이스(400)가 제1 메모리 프로세서(104)로부터 업데이트된 메모리 주소 테이블을 수신하는 경우, 메모리 주소 테이블을 업데이트할 수 있다.
이하 도 1 및 도 2를 참조하여, 메모리 디바이스의 메모리 셀 어레이에 대해 보다 구체적으로 설명한다.
도 2는 본원의 일 실시예에 따른, 메모리 디바이스의 블록도이다.
도 2에서 제1 메모리 디바이스(100)의 제1 메모리 셀 어레이(106)는 제1 내지 제3 페이지(page)를 포함하는 제1 블록(block)(106a) 및 제4 내지 제6 페이지를 포함하는 제2 블록(106b)을 포함할 수 있다.
도 1 및 도 2를 참조하면, 제1 메모리 프로세서(104)는 제1 내지 제3 메모리 디바이스(100, 200, 300)의 제1 내지 제3 메모리 셀 어레이(106, 206, 300) 중 적어도 하나의 데이터의 주소를 포함하는 메모리 주소 테이블(Memory Address Table)을 포함할 수 있다.
메모리 셀 어레이(106 또는 206)에서, 페이지에 저장된 "---" 및 "XXX"는 각각 블랭크(blank) 및 가비지(garbage)를 나타낼 수 있다. 메모리 셀 어레이(106, 206)에서, 페이지에 저장된 데이터 중 알파벳(예를 들어, "L" 또는 "K")은 특정 데이터를 나타낼 수 있다. 제2 또는 제3 메모리 셀 어레이(206, 306)는, 제1 메모리 디바이스(100)와 마찬가지로, 제1 내지 제3 페이지를 포함하는 제1 블록(block) 및 제4 내지 제6 페이지를 포함하는 제2 블록을 포함할 수 있다.
이하 도 3 및 도 4를 참조하여, 메모리 시스템에서 메모리 디바이스와 호스트 디바이스의 동작을 설명한다.
도 3은 본원의 일 실시예에 따른, 메모리 디바이스와 호스트 디바이스의 동작을 설명하기 위한 순서도이다. 도 4는 도 3의 S110 내지 S150 동작을 설명하기 위한 도면이다.
도 3을 참조하면, 제1 메모리 프로세서에서 호스트 디바이스로부터 일련의 명령들을 수신한다(S110). 구체적으로 예를 들어 도 4를 참조하면, 메모리 디바이스(100)의 메모리 프로세서(104)는 호스트 디바이스(400)의 코어 프로세서(408)로부터 일련의 명령들을 수신할 수 있다(S110). 예를 들어, 메모리 프로세서(104)는 코어 프로세서(408)로부터 다음의 일련의 명령들을 수신할 수 있다.
"명령들(Instructions):
1. 리드(Read) 제1 메모리 디바이스(Memory Device)의 제2 페이지(Page);
2. 라이트(Write) 제1 Memory Device의 제4 Page;
3. Read 제2 Memory Device의 제3 Page;
4. Write 제1 Memory Device의 제2 Page;
5. 이레이즈(Erase) 제1 Memory Device의 제1 블록(Block);
6. Erase 제2 Memory Device의 제1 Block, ..."
다음 도 3을 참조하면, 메모리-권한 제어부는, 일련의 명령들 중 다른 메모리 디바이스에 대한 명령들이 포함된 경우, 호스트 디바이스로 채널의 동작 권한 요청 신호를 송신할 수 있다(S120). 즉, 메모리-권한 제어부는 메모리 프로세서가 수신한 일련의 명령들 중 다른 메모리 디바이스에 대한 명령들이 포함되었는지 여부를 결정할 수 있다. 또한, 메모리-권한 제어부는 상기 결정에 기초하여 호스트 디바이스로 채널의 동작 권한 요청 신호를 송신할 수 있다.
구체적으로 예를 들어 도 4를 참조하면, 메모리-권한 제어부(102)는 호스트 디바이스(400)의 코어 프로세서(408)로부터 수신된 일련의 명령들이 제2 또는 제3 메모리 디바이스(200, 300)에 대한 명령들(예를 들어, 제2 또는 제3 메모리 디바이스(200, 300)의 데이터 플로우를 제어하기 위한 제어-명령들)을 포함하는지 여부를 결정할 수 있다. 메모리-권한 제어부(102)는, 위 결정에 따라, 호스트 디바이스(400)로 채널(500)의 동작 권한 요청 신호를 송신할 수 있다(S120). 예를 들어, 메모리-권한 제어부(102)는 호스트 디바이스(400)로부터 수신된 일련의 명령들이 제2 메모리 디바이스(200)에 대한 명령들(예를 들어, "3. Read 제2 Memory Device의 제3 Page" 또는 "6. Erase 제2 Memory Device의 제1 Block")을 포함한다는 결정에 기초하여, 호스트 디바이스(400)로 채널(500)의 동작 권한 요청 신호를 송신할 수 있다.
다음 도 3을 참조하면, 채널 잠금부에 의해 코어 프로세서와 메모리 컨트롤러 사이에 락을 설정할 수 있다(S130). 구체적으로 예를 들어 도 4를 참조하면, 호스트 디바이스(400)의 호스트-권한 제어부(402)가 메모리 디바이스(100)의 메모리-권한 제어부(102)로부터의 채널(500)의 동작 권한 요청 신호를 수신한 경우, 호스트 디바이스(400)의 채널 잠금부(404)는 호스트 디바이스(400)로부터 채널(500)로의 데이터 플로우를 차단하기 위한 락을 설정할 수 있다(S130). 일 실시예에서, 호스트 디바이스(400)의 채널 잠금부(404)는 호스트 디바이스(400)의 코어 프로세서(408)와 메모리 컨트롤러(406) 사이에서 락을 설정할 수 있다.
다음 도 3을 참조하면, 호스트 디바이스는 제1 메모리-권한 제어부로 채널의 동작 권한을 송신할 수 있다(S140). 구체적으로 예를 들어 도 4를 참조하면, 호스트 디바이스(400)의 호스트-권한 제어부(402)는 채널(500)의 동작 권한을 메모리 디바이스(100)의 메모리-권한 제어부(102)로 송신할 수 있다(S140). 메모리-권한 제어부(102)는 채널(500)의 동작 권한을 갖을 수 있다.
다음 도 3을 참조하면, 제1 메모리 프로세서에서 일련의 명령들이 수행되고, 메모리 주소 테이블을 업데이트할 수 있다(S150).
구체적으로 예를 들어 도 4를 참조하면, 메모리 디바이스(100)의 메모리 프로세서(104)는 호스트 디바이스(400)로부터 수신된 일련의 명령들을 수행할 수 있다(S150). 제1 메모리 프로세서(104)는 채널(500)에 연결된 제2 및 제3 메모리 디바이스(200, 300)에 대한 명령들을 수행할 수 있다.
일 실시예에서, 제1 메모리 프로세서(104)는 채널(500)에 연결된 제2 및 제3 메모리 디바이스(200, 300)의 데이터 플로우를 제어하기 위한 제어-명령들을 수행할 수 있다. 그리고, 제1 메모리 프로세서(104)는, 일련의 명령들이 수행됨에 따라 제1 내지 제3 메모리 디바이스(100, 200, 300) 중 적어도 하나의 데이터 주소가 변경되는 경우, 메모리 주소 테이블(Memory Address Table)을 업데이트할 수 있다.
도 4는 메모리 프로세서(104)가 호스트 디바이스(400)로부터 수신된 일련의 명령들을 수행하기 전의, 제1 및 제2 메모리 셀 어레이(106, 206)의 데?터 및 제1 메모리 프로세서(104)에 포함된 메모리 주소 테이블을 도시한다. 제1 메모리 프로세서(104)가 "3. Read 제2 Memory Device의 제3 Page" "4. Write 제1 Memory Device의 제2 Page"라는 명령들을 수행하는 경우, 제2 메모리 셀 어레이(206)의 제3 페이지에 저장된 데이터 "K"의 주소는 제1 메모리 셀 어레이(106)의 제2 페이지로 변경된다. 이하 도 5를 추가로 참조하여, 이러한 동작에 대해 보다 구체적으로 설명한다.
도 5는 도 3의 S150 내지 S170 동작을 설명하기 위한 도면이다. 도 5는 메모리 프로세서(104)가 호스트 디바이스(400)로부터 수신된 일련의 명령들을 수행한 후의, 제1 및 제2 메모리 셀 어레이(106, 206) 및 메모리 주소 테이블을 도시한다. 예를 들어, 제1 메모리 프로세서(104)에서 "3. Read 제2 Memory Device의 제3 Page" "4. Write 제1 Memory Device의 제2 Page"라는 명령들이 수행되는 경우, 메모리 프로세서(104)는 메모리 주소 테이블의 "K"의 주소를 "제2 메모리 디바이스의 제3 페이지"에서 "제1 메모리 디바이스의 제5 페이지"로 업데이트 한다.
다시 도 3을 참조하면, 메모리 프로세서에서의 일련의 명령들 수행이 완료된 경우 제1 메모리-권한 제어부 호스트 디바이스로 채널의 동작 권한을 반환할 수 있다(S160). 구체적으로 예를 들어 도 5를 참조하면, 제1 메모리-권한 제어부(102)는 제1 메모리 프로세서(104)가 호스트 디바이스(400)로부터 수신된 일련의 명령들을 모두 수행하였는지 여부를 결정한다. 제1 메모리-권한 제어부(102)는, 위 결정에 따라, 호스트 디바이스(400)로 채널(500)의 동작 권한을 송신할 수 있다. 예를 들어, 메모리-권한 제어부(102)는 호스트 디바이스(400)로부터 수신된 일련의 명령들이 모두 수행되었다는 결정에 기초하여, 호스트 디바이스(400)로 채널(500)의 동작 권한을 송신할 수 있다.
다시 도 3을 참조하면, 호스트 디바이스는 채널 잠금부의 락을 해제하고 메모리 주소 테이블을 업데이트할 수 있다(S170). 구체적으로 예를 들어 도 5를 참조하면, 호스트 디바이스(400)의 호스트-권한 제어부(402)는 메모리 디바이스(100)의 메모리-권한 제어부(102)로부터 채널(500)의 동작 권한을 수신할 수 있다. 호스트 디바이스(400)의 채널 잠금부(404)는 호스트 디바이스(400)로부터 채널(500)로의 데이터 플로우를 차단하기 위한 락을 해제할 수 있다. 예를 들어, 호스트 디바이스(400)의 채널 잠금부(404)는 호스트 디바이스(400)의 코어 프로세서(408)와 메모리 컨트롤러(406) 사이에서 락을 해제할 수 있다. 호스트 디바이스(400)의 TLB(412)는 메모리 디바이스(100)의 메모리 프로세서(104)로부터 업데이트된 메모리 주소 테이블을 수신할 수 있다. 호스트 디바이스(400)의 TLB(412)는 메모리 주소 테이블을 업데이트할 수 있다.
이하 도 6을 참조하여, 본원의 일 실시예에 따른, 메모리 시스템을 설명한다.
도 6은 본원의 일 실시예에 따른, 입-출력 포트를 갖는 메모리 디바이스를 포함하는 메모리 시스템의 블록도이다.
본원의 일 실시예에서, 채널(500)은 커맨드(command) 채널(502), 칩-선택(chip-select) 채널(504), 주소(Address) 채널(506), 또는 데이터(data) 채널(508)을 포함할 수 있다. 커맨드 채널(502), 칩-선택 채널(504), 주소 채널(506), 또는 데이터 채널(508)은 각각 커맨드 정보, 주소 정보, 칩-선택 정보, 또는 데이터 정보를 전송하기 위한 통로일 수 있다. 일 실시예에 있어서, 커맨드 정보는 "리드", "라이트", 또는 "이레이즈"를 포함할 수 있다. 주소 정보는 "블록 또는 페이지의 주소"를 포함할 수 있다. 칩-선택 정보는 "메모리 디바이스를 특정하기 위한 정보"(예를 들어, "제2 메모리 디바이스")를 포함할 수 있다. 데이터 정보는 메모리 셀 어레이(106, 206, 306)에 저장된 데이터를 포함할 수 있다. 예를 들어, "3. Read 제2 Memory Device의 제3 Page"라는 명령에서, 커맨드 정보, 칩-선택 정보, 주소 정보, 및 데이터 정보는 각각 "리드", "제2 메모리 디바이스", "제3 페이지", 및 "K"일 수 있다.
도6 에서, 제1 메모리 디바이스(100)는 커맨드 정보, 주소 정보, 칩-선택 정보, 또는 데이터 정보를 입력 또는 출력하기 위한, 커맨드 정보 입-출력 포트(In-Out port)(108a), 칩-선택 정보 입-출력 포트(108b), 주소 정보 입-출력 포트(108c), 또는 데이터 정보 입-출력 포트(108d)를 포함할 수 있다. 메모리 디바이스(100)의 커맨드 정보 입-출력 포트(108a), 칩-선택 정보 입-출력 포트(108b), 주소 정보 입-출력 포트(108c), 및 데이터 정보 입-출력 포트(108d)는 각각 커맨드 채널(502), 칩-선택 채널(504), 주소 채널(506), 또는 데이터 채널(508)과 연결될 수 있다. 일 실시예에서 메모리 디바이스(100)의 커맨드 정보 입-출력 포트(108a), 칩-선택 정보 입-출력 포트(108b), 주소 정보 입-출력 포트(108c), 및 데이터 정보 입-출력 포트(108d)는 제1 입-출력 포트(108)로 구성될 수 있다. 일 실시예에서, 메모리 디바이스(100)의 커맨드 정보 입-출력 포트(108a), 칩-선택 정보 입-출력 포트(108b), 주소 정보 입-출력 포트(108c), 및 데이터 정보 입-출력 포트(108d)는 각각 별개의 출력 포트로 구성될 수 있다. 또한, 제2 및 제3 메모리 디바이스(200, 300)는 커맨드 정보 입-출력 포트, 칩-선택 정보 입-출력 포트, 주소 정보 입-출력 포트, 및 데이터 정보 입-출력 포트로 구성된 제2 및 제3 입-출력 포트(108)를 포함할 수 있다.
도 6의 메모리 시스템에서, 호스트 디바이스(400)의 호스트-권한 제어부(402)는 채널(500)의 동작 권한을 갖지 않고, 호스트 디바이스(400)의 채널 잠금부(404)는 락을 설정할 수 있다. 또한, 제1 메모리 디바이스(100)의 제1 메모리-권한 제어부(102)는 채널(500)의 동작 권한을 갖을 수 있다. 메모리 디바이스(100)는 채널(500)에 연결된 다른 메모리 디바이스(예를 들어, 제2 및 제3 메모리 디바이스(200, 300))의 데이터 플로우(data flow)를 제어할 수 있다. 예를 들어, 제2 메모리 디바이스(200)의 데이터 플로우는, 제1 메모리 디바이스(100)의 제1 입-출력 포트(108)로부터 출력되어 제2 메모리 디바이스(200)의 제2 입-출력 포트(208)로 입력되는 명령 정보, 주소 정보, 칩-선택 정보, 데이터 정보를 포함할 수 있다. 또한, 제2 메모리 디바이스(200)의 데이터 플로우는, 제2 메모리 디바이스(200)의 제2 입-출력 포트(208)로부터 출력되어 제1 메모리 디바이스(100)의 제1 입-출력 포트(108)로 입력되는 데이터 정보를 포함할 수 있다.
이하, 도 7 내지 도 9를 참조하여, 본원의 일 실시예에 따른, 메모리 시스템에서 수행되는 가비지 컬렉션(garbage collection) 동작에 대해 설명한다.
도 7은 본원의 일 실시예에 따른, 메모리 시스템에 의해 수행되는 가비지 컬렉션(garbage collection) 동작을 설명하기 위한 도면이다. 구체적으로, 도 7은 본원의 일 실시예에 따른, 가비지 컬렉션(garbage collection)이 수행되기 전의 메모리 시스템을 나타낸다. 가비지 컬렉션(garbage collection)은 메모리 셀 어레이에서 특정 블록의 대부분이 가비지로 채워진 경우, 특정 블록에 남겨진 데이터를 다른 블록으로 옮긴 뒤, 특정 블록을 삭제하는 일련의 동작이다. 일 실시예에 따른 메모리 디바이스의 메모리 셀 어레이에서, 데이터는 페이지 단위로 리드 또는 라이트될 수 있고, 블록 단위로 이레이즈될 수 있다. 즉, 메모리 셀 어레이는 페이지 단위로 이레이즈될 수 없을 수 있다. 따라서, 특정 블록의 페이지들이 대부분이 가비지로 채워진 경우, 가비지를 이레이즈하기 위해서는 특정 블록 전체를 이레이즈해야 할 수 있다. 특정 블록을 이레이즈하기 전에, 특정 블록에 남겨진 일부 페이지의 데이터를 다른 블록의 페이지로 저장할 필요가 있다.
예를 들어, 도 7에서, 제1 메모리 디바이스(100)의 제1 메모리 셀 어레이(106)의 제1 블록(106a)의 제1 및 제3 페이지(P1, P3)는 가비지("XXX")로 채워질 수 있다. 제2 메모리 디바이스(200)의 제2 메모리 셀 어레이(206)의 제1 블록(206a)의 제1 및 제2 페이지(P1, P2)는 가비지("XXX")로 채워질 수 있다. 제3 메모리 디바이스(300)의 제3 메모리 셀 어레이(306)의 제1 블록(306a)의 제2 및 제2 페이지(P2, P3)는 가비지("XXX")로 채워질 수 있다. 제1 메모리 셀 어레이(106)의 제1 블록(106a), 제2 메모리 셀 어레이(206)의 제1 블록(206a), 또는 제3 메모리 셀 어레이(306)의 제1 블록(306a)을 이레이즈 하기 위해, 위 블록들에 남겨진 데이터(A, B, C)를 다른 블록으로 옮길 필요가 있을 수 있다.
도 8은 본원의 일 실시예에 따른, 가비지 컬렉션(garbage collection) 동작을 수행하기 위한 명령들을 설명하기 위한 도면이다. 구체적으로, 도 8은 본원의 일 실시예에 따른, 가비지 컬렉션(garbage collection)을 수행하기 위한 일련의 명령들을 나타낸다. 도 8에 도시된 일련의 명령들은 다음과 같다.
"Instructions:
1. Read 제1 Memory Device 제2 Page
2. Write 제1 Memory Device 제4 Page
3. Read 제2 Memory Device 제3 Page
4. Write 제1 Memory Device 제5 Page
5. Read 제3 Memory Device 제1 Page
6. Write 제1 Memory Device 제6 Page
7. Erase 제1 Memory Device 제1 Block
8. Erase 제2 Memory Device 제1Block
9. Erase 제3 Memory Device 제1Block"
도 8에 명령들이 수행되는 경우, 도 7에 도시된 메모리 시스템에서, 제1 메모리 디바이스의 제2 페이지(P2)의 데이터("A")는 제1 메모리 디바이스의 제4 페이지(P4)로, 제2 메모리 디바이스의 제3 페이지(P3)의 데이터("B")는 제1 메모리 디바이스의 제5 페이지(P5)로, 제3 메모리 디바이스의 제1 페이지(P1)의 데이터("C")는 제1 메모리 디바이스의 제6 페이지(P6)로 옮겨질 수 있다. 또한, 제1 메모리 디바이스의 제1 블록(106a), 제2 메모리 디바이스의 제1 블록(206a) 및 제3 메모리 디바이스의 제1 블록(306a)은 이레이즈 될 수 있다.
도 9는 본원의 일 실시예에 따른, 메모리 시스템에 의해 수행되는 가비지 컬렉션(garbage collection) 동작을 설명하기 위한 도면이다. 구체적으로, 도 9는 본원의 일 실시예에 따른, 가비지 컬렉션을 수행한 후의 메모리 시스템을 나타낸다. 도 9의 메모리 시스템에서, 제1 메모리 디바이스의 제1 블록(106a), 제2 메모리 디바이스의 제1 블록(206a) 및 제3 메모리 디바이스의 제1 블록(306a)은 이레이즈되고, 블랭크(blank)로 채워질 수 있다.
이하, 도 8, 도 10 및 11을 참조하여, 본원의 일 실시예에 따른, 메모리 시스템의 효과를 설명한다.
도 10 및 도 11은 본원의 일 실시예에 따른, 메모리 시스템의 효과를 설명하기 위한 도면이다. 도 10은 메모리 디바이스들 사이에서 직접 데이터 이동을 수행할 수 없는 메모리 시스템에서 도 8의 일련의 명령이 수행되는 경우, 호스트 디바이스 및 메모리 디바이스 각각에 의해 수행되는 명령들을 도시한 도면이다. 도 11은 본원의 일 실시예에 따른 메모리 시스템에서, 가비지 컬렉션이 수행되는 경우 호스트 디바이스 및 메모리 디바이스 각각에 의해 수행되는 명령들을 도시한 도면이다. 도 10 및 11에서 원-숫자는 도 8에 도시된 명령들이 수행되는 것을 나타낸다. 또한, 그래프의 가로축은 순서(시간)을 나타내고, 그래프의 세로축은 특정 명령이 수행되는 주체가 호스트 디바이스 또는 메모리 디바이스인지 여부를 나타낸다. 예를 들어, 도 10에서 "③"은 도 7에 도시된 "3. Read 제2 MD 제3 Page"라는 명령이 호스트 디바이스에 의해서 수행되는 것을 나타낸다.
구체적으로, 도 10의 메모리 시스템은 메모리 디바이스들 사이에서 직접 데이터 이동을 수행할 수 없을 수 있다. 즉, 도 10의 메모리 시스템에서, 메모리 디바이스들 사이의 데이터 이동은, 호스트 디바이스의 개입 없이는, 수행될 수 없을 수 있다. 예를 들어, 도 8에 도시된 "1. Read 제1 Memory Device 제2 Page" 또는 "2. Write 제1 Memory Device 제4 Page"는 제1 메모리 디바이스의 제1 메모리 프로세서에 의해 수행될 수 있다. 다만, 도 8에 도시된 "3. Read 제2 Memory Device 제3 Page"는 제1 메모리 디바이스의 제1 메모리 프로세서에 의해 수행될 수 없고, 호스트 디바이스에 의해 수행될 수 있다.
도 10을 참조하면, 메모리 디바이스들 사이의 직접 통신이 불가능한 메모리 시스템에서 가비지 컬렉션이 수행되는 경우, 제1 메모리 디바이스의 제1 메모리 프로세서는 해당 메모리 디바이스에 대한 명령들(①, ②, ④, ⑥, ⑦)을 수행할 수 있다. 또한, 호스트 디바이스는 다른 메모리 디바이스에 대한 명령들(③, ⑤, ⑨)을 수행할 수 있다. 이와 같이, 메모리 디바이스들 사이의 직접 통신이 불가능한 메모리 시스템에서, 채널에 연결된 다른 메모리 시스템의 데이터 플로우를 제어하기 위해서는 호스트 디바이스의 개입이 필수적일 수 있다. 한편, 호스트 디바이스가 다른 작업을 수행하고 있는 경우, 가비지 컬렉션에 대한 명령들(③, ⑤, ⑨)의 처리가 지연될 수 있고, 이는 전체 가비지 컬렉션이 수행되는 시간을 지연시킬 수 있다.
구체적으로 도 11의 메모리 시스템은, 본원의 일 실시예에 따른 메모리 시스템으로서, 메모리 디바이스들 사이에서 직접 데이터 이동을 수행할 수 있다. 즉, 도 11의 메모리 시스템에서, 메모리 디바이스의 메모리 프로세서는 채널에 연결된 다른 메모리 시스템의 데이터 플로우를 제어할 수 있다. 예를 들어, 메모리 디바이스의 메모리 프로세서는 도 8에 도시된 "1. Read 제1 Memory Device 제2 Page" 또는 "2. Write 제1 Memory Device 제4 Page" 뿐만 아니라, "3. Read 제2 Memory Device 제3 Page"라는 명령을 수행할 수 있다.
도 11에 도시된 바와 같이, 본원의 일 실시예에 따른 메모리 시스템에서 가비지 컬렉션이 수행되는 경우, 메모리 프로세서는 해당 메모리 디바이스에 대한 명령들(①, ②, ④, ⑥, ⑦) 및 채널에 연결된 다른 메모리 디바이스들에 대한 명령들(③, ⑤, ⑨)을 수행할 수 있다. 따라서, 본원의 일 실시예에 따른 메모리 시스템에서, 메모리 프로세서는, 호스트 디바이스의 개입 없이, 채널에 연결된 다른 메모리 디바이스에 대한 명령들을 수행할 수 있다. 또한, 호스트 디바이스는, 메모리 프로세서와는 독립적으로, 가비지 컬렉션 이외의 다른 작업을 수행할 수 있다. 나아가, 메모리 프로세서는 호스트 디바이스의 개입 없이 가비지 컬렉션 작업을 수행하기 때문에, 호스트 디바이스의 작업 처리 지연에 의한 영향을 받지 않는다.
즉, 본원의 일 실시예에 따른 메모리 시스템에서, 메모리 디바이스의 메모리 프로세서는, 호스트 디바이스의 개입 없이, 메모리 채널을 장악하고, 채널에 연결된 다른 메모리 디바이스의 데이터 플로우를 제어할 수 있다. 따라서, 메모리 프로세서는, 호스트 디바이스에 의한 영향(예를 들어, 호스트 디바이스에 의한 지연)없이, 채널에 연결된 메모리 디바이스들 사이의 데이터 이동 등의 작업을 수행할 수 있다.
이하, 도 12 및 도 13을 참조하여, 본원의 일 실시예에 따른, 메모리 시스템에서 수행되는 웨어-레벨링(wear-leveling) 동작에 대해 설명한다.
도 12는 본원의 일 실시예에 따른, 메모리 시스템에 의한 웨어-레벨링(wear-leveling) 동작을 설명하기 위한 도면이다. 구체적으로, 도 12는 본원의 일 실시예에 따른, 웨어-레벨링(wear-leveling)이 수행되기 전의 메모리 시스템을 나타낸다. 일 실시예에서, 메모리 디바이스는 스토리지 클래스 메모리 디바이스(storage-class memory device)일 수 있다. 도 12에서, 데이터 "A", "B", 및 "C"는 각각 제1 메모리 디바이스(100)의 제1 페이지, 제2 페이지, 및 제3 페이지에 저장된다. 또한, 데이터 "D", "E", 및 "F"는 각각 제2 메모리 디바이스(200)의 제1 페이지, 제2 페이지, 및 제3 페이지에 저장된다.
도 13은 본원의 일 실시예에서, 메모리 시스템의 효과를 설명하기 위한 도면이다. 구체적으로, 도 13은 본원의 일 실시예에서, 웨어-레벨링(wear-leveling)의 수행에 따른 특정 데이터에 대한 쓰기 횟수(number of writes)를 나타낸다.
웨어-레벨링은, 특정 데이터 셀에 대한 쓰기 횟수가 많아지는 경우, 특정 데이터의 메모리 위치를 변경하여 누적 쓰기 횟수를 평탄화 하는 작업이다. 일 실시예에서, 메모리 디바이스의 메모리 셀 어레이의 데이터 셀은 미리 정해진 쓰기 횟수 이상 라이트될 수 없다. 데이터 셀에 대한 쓰기 횟수가 미리 정해진 쓰기 횟수를 초과하는 경우, 해당 데이터 셀을 포함하는 페이지 또는 블록을 더 이상 사용하지 못할 수 있다. 따라서, 특정 데이터 셀의 쓰기 횟수가 많아지는 경우, 특정 데이터가 저장된 데이터 셀의 위치를 변경하는 웨어-레벨링이 수행될 수 있다. 일 실시예에서, 특정 페이지에 수요가 많은 데이터가 저장된 경우, 특정 페이지의 쓰기 횟수가 다른 페이지의 쓰기 횟수보다 많아질 수 있다. 이 경우, 상기 수요가 많은 데이터를 쓰기 횟수가 적은 다른 페이지로 이동시키는 동작이 수행될 수 있다.
도 13은, 도 12에 도시된 데이터 "A" 내지 "F"에 대한 누적 쓰기 횟수를 나타낸다. 또한, 도 13은 데이터 "A" 내지 "F"가 저장된 페이지의 주소를 나타낸다. 이하에서, 설명의 편의를 위해, 데이터 "A" 및 "B"의 수요는 적고, 데이터 "C" 및 "F"의 수요는 보통이고, 데이터 "D" 및 "E"의 수요는 많다고 가정한다.
도 13의 (a)는 웨어-레벨링이 수행되기 전의 누적 쓰기 횟수를 나타낸다. 도 13의 (a)에서, 데이터 "A" 내지 "F"는 각각 제1 메모리 디바이스(100)의 제1 내지 제3 페이지 및 제2 메모리 디바이스(200)의 제1 내지 제3 페이지에 저장될 수 있다. 특정 시간에서, 데이터 "A" 및 "B"에 대한 누적 쓰기 횟수는 적고, 데이터 "C" 및 "F"에 대한 누적 쓰기 횟수는 보통이고, 데이터 "D" 및 "E"에 대한 누적 쓰기 횟수는 많을 수 있다.
13의 (b)는 웨어-레벨링이 수행된 후의, 데이터 "A" 내지 "F"에 대한 누적 쓰기 횟수를 나타낸다. 웨어-레벨링에 의해, 데이터 "A" 및 "B"와 데이터 "D" 및 "E"의 위치가 교환될 수 있다. 즉, 도 13의 (b)에서 데이터 "A" 및 "B"는 제2 메모리 디바이스의 제1 및 제2 페이지에, 데이터 "D" 및 "E"는 제1 메모리 디바이스의 제1 및 제2 페이지에 저장될 수 있다. 따라서, 도 13의 (b)에서, 데이터 "A" 및 "B"에 대한 누적 쓰기 횟수는, 데이터 "D" 및 "E"에 대한 누적 쓰기 횟수와 교환될 수 있다.
도 13의 (c)는 웨어-레벨링 동작이 수행된 후 일정 시간이 지난 뒤의, 데이터 "A" 내지 "F"에 대한 누적 쓰기 횟수를 나타낸다. 앞서 정의한 것과 같이, 데이터 "A" 및 "B"의 수요는 적고, 데이터 "D" 및 "E"의 수요는 많기 때문에, 일정 시간이 지난 경우, 데이터 "A" 내지 "F"에 대한 누적 쓰기 횟수는 도 13의 (c)와 같이 평탄하게 될 수 있다.
이와 같이, 메모리 디바이스 사이에서 웨어-레벨링을 수행하기 위해서는, 메모리 디바이스 사이의 데이터 이동이 필요하다. 종래의 메모리 시스템에서는, 메모리 디바이스 사이의 데이터를 이동시키기 위해서 호스트 디바이스의 개입이 필수적이었다.
그러나, 본원의 일 실시예에 따른 메모리 시스템에서, 메모리 프로세서는, 호스트 디바이스의 개입 없이, 메모리 디바이스 사이의 데이터를 이동시킬 수 있다. 따라서, 메모리 프로세서는, 호스트 디바이스에 의한 영향(예를 들어, 호스트 디바이스에 의한 지연)없이, 메모리 디바이스 사이의 웨어-레벨링을 수행할 수 있다. 나아가, 호스트 디바이스는 메모리 디바이스의 메모리 프로세서가 웨어-레벨링을 수행하는 동안, 다른 작업을 수행할 수 있다. 예를 들어, 호스트 디바이스의 코어 프로세서는 다른 작업을 위한 리소스로 활용될 수 있다.
이하, 도 14를 참조하여, 본원의 일 실시예에 따른 메모리 시스템을 설명한다.
도 14는 본원의 일 실시예에 따른, 메모리 디바이스의 메모리 프로세서가 호스트 디바이스의 메모리 컨트롤러를 이용하는 메모리 시스템의 블록도이다. 이하에서는 앞서 설명한 실시예와의 차이점을 위주로 설명한다.
본원의 일 실시예에 따른 메모리 시스템은, 채널(1500)에 의해 연결된 제1 메모리 디바이스(1100)와 호스트 디바이스(1400)를 포함할 수 있다.
제1 메모리 디바이스(1100)는 제1 메모리 프로세서(1104)를 포함할 수 있다. 제1 메모리 디바이스(1100)의 제1 메모리-권한 제어부(1102)가 채널(1500)의 동작 권한을 갖는 경우 제1 메모리 프로세서(1104)는 다른 메모리 디바이스(200, 300)에 대한 데이터 플로우를 제어할 수 있다.
호스트 디바이스(1400)는 메모리 컨트롤러(1406)를 포함할 수 있다. 호스트 디바이스(1400)의 호스트-권한 제어부(1402)가 채널(1500)의 동작 권한을 갖지 않는 경우, 채널 잠금부(404)는 코어 프로세서(408)와 메모리 컨트롤러(1406)사이에 락을 설정할 수 있다. 이때, 호스트 디바이스(1400)의 메모리 컨트롤러(1406)는 제1 메모리 디바이스(1100)의 메모리 프로세서(1104)로부터 수신한 일련의 명령들을 수행할 수 있다. 메모리 컨트롤러(1406)가 제1 메모리 디바이스(1100)의 메모리 프로세서로(1104)부터 수신한 일련의 명령들은, 채널(1500)에 연결된 제2 또는 제3 메모리 디바이스(200, 300)의 데이터 플로우를 제어하기 위한 제어-명령들을 포함할 수 있다. 즉, 제1 메모리 디바이스(1100)의 제1 메모리 프로세서(1104)는 제2 또는 제3 메모리 디바이스(200, 300)에 대한 데이터 플로우를 제어하는데 있어, 호스트 디바이스(1400)의 메모리 컨트롤러(1406)를 이용할 수 있다.
일 실시예에 있어서, 제1 메모리 디바이스(1100)의 메모리 프로세서(1104)의 연산 처리 능력은 호스트 디바이스(1400)의 메모리 컨트롤러(1406)의 연산 처리 능력보다 낮을 수 있다. 예를 들어, 메모리 시스템의 채널(1500)의 상태가 좋지 않은 경우, 채널(1500)을 통해 전달되는 아날로그 신호가 열화될 수 있다. 이 경우, 열화된 아날로그 신호를 분석 및 보상하는 작업이 수행될 수 있다. 이와 같은, 아날로그 신호 처리 작업에는 많은 리소스가 필요할 수 있다. 일 실시예에 있어서, 제1 메모리 디바이스(1100)의 제1 메모리 프로세서(1104)는 아날로그 신호의 처리 작업을 수행하기 어려울 수 있다. 따라서, 제1 메모리 프로세서(1104)는 호스트 디바이스(1400)의 메모리 컨트롤러(1406)의 리소스를 이용함으로써, 낮은 연산 처리 능력을 보충할 수 있다.
이하, 도 15 및 16을 참조하여, 본원의 일 실시예에 따른, 메모리 시스템에서의 메모리 디바이스와 호스트 디바이스의 동작을 설명한다.
도 15는 본원의 일 실시예에 따른, 메모리 시스템에서 메모리 디바이스와 호스트 디바이스의 동작을 설명하기 위한 순서도이다. 도 16은 도 15의 S252 내지 S256 동작을 설명하기 위한 도면이다. 이하에서는 앞서 설명한 실시예와의 차이점을 위주로 설명한다.
도 15를 참조하면, 제1 메모리 프로세서에서 일련의 명령들이 수행되고, 메모리 주소 테이블을 업데이트할 수 있다(S250). 구체적으로 예를 들어 도 16을 참조하면, 제1 메모리 디바이스(1100)의 제1 메모리 프로세서(1104)는 호스트 디바이스(1400)로부터 수신된 일련의 명령들을 수행할 수 있다(S250).
다음 도 15를 참조하면, 메모리 프로세서는 제2 메모리 디바이스에 대한 명령을 수행하는 경우, 상기 제2 메모리 디바이스에 대한 명령을 호스트 디바이스의 메모리 컨트롤러에게 전달할 수 있다(S252). 구체적으로 예를 들어 도 16을 참조하면, 제1 메모리 프로세서(1104)는 호스트 디바이스(1400)로부터 수신된 일련의 명령들 중 다른 메모리 디바이스에 대한 명령(예를 들어, "3. Read 제2 메모리 디바이스, 제3 페이지")을 호스트 디바이스(1400)의 메모리 컨트롤러(1406)로 송신할 수 있다(S252).
다음 도 15를 참조하면, 호스트 디바이스의 메모리 컨트롤러에서 상기 전달된 명령을 수행할 수 있다(S254). 구체적으로 예를 들어 도 16을 참조하면, 호스트 디바이스(1400)의 메모리 컨트롤러(1406)는, 수신된 상기 명령을 수행할 수 있다(S254). 예를 들어, 메모리 컨트롤러(1406)는 제2 디바이스(200)의 제3 페이지의 데이터 "K"를 리드할 수 있다.
다음 도 15를 참조하면, 메모리 컨트롤러는 명령 수행의 결과를 제1 메모리 프로세서로 전달할 수 있다. 제1 메모리 프로세서는 메모리 주소 테이블을 업데이트할 수 있다(S256). 구체적으로 예를 들어 도 16을 참조하면, 호스트 디바이스(1400)의 메모리 컨트롤러(1406)는 명령 수행의 결과(예를 들어, 데이터 "K")를 제1 메모리 프로세서(1104)로 전달할 수 있다(S256). 제1 메모리 프로세서(1104)는 호스트 디바이스(1400)로부터 수신된 일련의 명령들의 수행을 완료한 경우, 메모리 주소 테이블을 업데이트할 수 있다.
이하 도 17을 참조하여, 본원의 일 실시예에 따른 메모리 시스템을 설명한다.
도 17은 본원의 일 실시예에 따른, 두 개의 채널을 갖는 메모리 시스템을 나타낸다. 본원의 일 실시예에 따른 메모리 시스템은, 호스트 디바이스(2400), 제1 채널(500)에 연결된 제1 내지 제3 메모리 디바이스(100, 200, 300), 제2 채널(2500)에 연결된 제4 내지 제6 메모리 디바이스(2100, 2200, 2300)을 포함할 수 있다.
호스트 디바이스(2400)는 제1 채널(500)의 동작 권한 및 제2 채널(2500)의 동작 권한을 제어하는 호스트-권한 제어부를 포함할 수 있다. 호스트-권한 제어부는 제1 채널(500)의 동작 권한을 제어하는 제1 호스트-권한 제어부(402) 및 제2 채널(2500)의 동작 권한을 제어하는 제2 호스트-권한 제어부(2402)를 포함할 수 있다. 즉, 호스트 디바이스(2400)의 호스트-권한 제어부는 별개의 제1 호스트-권한 제어부(402) 및 제2 호스트-권한 제어부(2402)일 수 있고, 하나의 호스트-권한 제어부일 수 있다. 호스트 디바이스(2400)는 호스트 디바이스(2400)로부터 제1 채널(500)로의 데이터 플로우를 차단하기 위한 제1 채널 잠금부(404) 및 호스트 디바이스(2400)로부터 제2 채널(2500)로의 데이터 플로우를 차단하기 위한 제2 채널 잠금부(2404)를 포함할 수 있다. 호스트 디바이스(2400)는 제1 채널(500)에 연결된 제1 내지 제3 메모리 디바이스(100, 200, 300)의 데이터 플로우를 제어하기 위한 제1 메모리 컨트롤러(406) 및 제2 채널(2500)에 연결된 제1 내지 제3 메모리 디바이스(2100, 2200, 2300)의 데이터 플로우를 제어하기 위한 제2 메모리 컨트롤러(2406)를 포함할 수 있다. 호스트 디바이스(2400)는 코어 프로세서(2408)를 포함할 수 있다. 호스트 디바이스(2400)는 코어 프로세서(2408)와 제1 메모리 컨트롤러(406)에 연결된 제1 캐시(410) 및 제1 TLB(412)를 포함할 수 있다. 또한, 호스트 디바이스(2400)는 코어 프로세서(2408)와 제2 메모리 컨트롤러(2406)에 연결된 제2 캐시(2410) 및 제2 TLB(2412)를 포함할 수 있다. 호스트 디바이스(2400)의 제2 캐시(2410) 및 제2 TLB(2412)의 기능은, 도 1에서 설명된, 제1 캐시(410) 및 제1 TLB(412)의 기능과 동일할 수 있다.
제4 내지 제6 메모리 디바이스(2100, 2200, 2300)는 각각 제4 내지 제6 메모리-권한 제어부(2102, 2202, 2302), 제4 내지 제6 메모리 프로세서(2104, 2204, 2304), 및 제4 내지 제6 메모리 셀 어레이(2106, 2206, 2306)를 포함할 수 있다. 제4 내지 제6 메모리 디바이스(2100, 2200, 2300)의 제4 내지 제6 메모리-권한 제어부(2102, 2202, 2302), 메모리 프로세서(2104, 2204, 2304), 및 메모리 셀 어레이(2106, 2206, 2306)의 기능은, 도 1의 제1 내지 제3 메모리 디바이스(100, 200, 300)의 메모리-권한 제어부(102, 202, 302), 메모리 프로세서(104, 204, 304), 및 메모리 셀 어레이(106, 206, 306)의 기능과 동일할 수 있다. 예를 들어, 제2 채널(2500)에 연결된 제4 내지 제6 메모리 디바이스(2100, 2200, 2300)의 메모리-권한 제어부(2102, 2202, 2302) 또는 호스트 디바이스(2400)의 제2 호스트-권한 제어부(2402) 중 하나는 제2 채널(2500)의 동작 권한을 배타적으로 가질 수 있다.
도 17을 참조하면, 본원의 일 실시예에 따른 메모리 시스템은, 제1 채널(500)의 동작 권한을 제1 메모리 디바이스(100)의 제1 메모리-권한 제어부(102)에 부여할 수 있다. 즉, 제1 메모리 디바이스(100)의 제1 메모리-권한 제어부(102)는 제1 채널(500)의 동작 권한을 갖을 수 있고, 제1 채널(500)에 연결된 제2 메모리 디바이스(200)에 데이터를 직접 요청할 수 있다. 호스트 디바이스(2400)의 제1 채널 잠금부(404)는, 호스트 디바이스(2400)로부터 제1 채널(500)로의 데이터 플로우를 차단하는 락을 설정할 수 있다. 제1 메모리 디바이스(100)의 제1 메모리 프로세서(104)는, 채널에 연결된 제2 또는 제3 메모리 디바이스(200, 300)의 데이터 플로우를 제어하기 위한 제어-명령들을 수행할 수 있다.
본원의 일 실시예에 따른 메모리 시스템은, 제4 메모리 디바이스(2100)에 제2 채널(2500)의 동작 권한을 부여하지 않을 수 있다. 즉, 메모리 시스템은 호스트 디바이스(2400)의 제2 호스트-권한 제어부(2402)에게 제2 채널(2500)의 동작 권한을 부여할 수 있다. 호스트 디바이스(2400)의 제2 채널 잠금부(2404)는 호스트 디바이스(2400)로부터 제2 채널(2500)로의 데이터 플로우를 차단하기 위한 락을 해제할 수 있다. 호스트 디바이스(2400)의 제2 메모리 디바이스(2406)는 제2 채널(2500)에 연결된 제4 내지 제6 메모리 디바이스(2100, 2200, 2300)의 데이터 플로우를 제어할 수 있다. 즉, 제4 메모리 디바이스(2100)의 제4 메모리 프로세서(2104)는 제2 채널(2500)에 연결된 다른 디바이스(2200, 2300)의 데이터 플로우를 제어하지 않을 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100, 200, 300: 제1 내지 제3 메모리 디바이스
2100, 2200, 2300: 제4 내지 제6 메모리 디바이스
108: 입-출력 포트
400, 1400, 2400: 호스트 디바이스
500: 채널
502, 504, 506, 508: 커맨드 채널, 칩-선택 채널, 주소 채널, 데이터 채널

Claims (15)

  1. 채널에 연결되고,
    메모리 셀 어레이 및 상기 채널의 동작 권한을 제어하는 메모리-권한 제어부를 포함하되,
    상기 메모리-권한 제어부가 상기 채널의 동작 권한을 갖는 경우, 상기 채널에 연결된 다른 메모리 디바이스의 데이터 플로우(data flow)를 제어하는, 메모리 디바이스.
  2. 제1항에 있어서,
    상기 메모리-권한 제어부가 상기 채널의 동작 권한을 갖는 경우,
    상기 다른 메모리 디바이스 및 상기 채널에 연결된 호스트 디바이스는 상기 채널의 동작 권한을 갖지 않는, 메모리 디바이스.
  3. 제1항에 있어서,
    상기 채널에 연결된 호스트로부터 수신된 일련의 명령들을 수행하는 메모리 프로세서를 더 포함하고,
    상기 일련의 명령들은, 상기 다른 메모리 디바이스의 데이터 플로우를 제어하기 위한 제어-명령들을 포함하는, 메모리 디바이스.
  4. 제3항에 있어서,
    상기 메모리 프로세서는,
    상기 다른 메모리 디바이스의 메모리 셀 어레이의 데이터 주소를 포함하는 메모리 주소 테이블을 포함하고,
    상기 일련의 명령들이 수행되는 것에 의해, 상기 다른 메모리 디바이스의 메모리 셀 어레이의 데이터 주소가 변경되는 경우 상기 메모리 주소 테이블을 업데이트 하는, 메모리 디바이스.
  5. 제4항에 있어서,
    상기 메모리-권한 제어부가 상기 채널에 연결된 호스트 디바이스에게 상기 채널의 동작 권한을 송신하는 경우, 상기 메모리 프로세서는 상기 호스트 디바이스에게 상기 업데이트된 메모리 주소 테이블을 송신하는, 메모리 디바이스.
  6. 제3항에 있어서,
    상기 메모리-권한 제어부는,
    상기 호스트 디바이스로부터 수신된 일련의 명령들이 적어도 하나의 상기 다른 메모리 디바이스의 데이터 플로우를 제어하기 위한 상기 제어-명령들을 포함하는지를 결정하고,
    상기 결정에 기초하여, 상기 호스트 디바이스에게 상기 채널 동작 권한 요청 신호를 송신하는, 메모리 디바이스.
  7. 제3항에 있어서,
    상기 메모리-권한 제어부는,
    상기 메모리 프로세서가 상기 일련의 명령들을 모두 수행하였는 지를 결정하고,
    상기 결정에 기초하여, 상기 호스트 디바이스에게 채널 동작 권한을 송신하는, 메모리 디바이스.
  8. 채널에 연결되고,
    상기 채널의 동작 권한을 제어하는 호스트-권한 제어부를 포함하되,
    상기 채널의 동작 권한을 갖지 않는 경우, 상기 채널로의 데이터 플로우(data flow)를 차단하는 호스트 디바이스를 포함하는 메모리 시스템.
  9. 제8항에 있어서,
    상기 호스트 디바이스는,
    상기 채널로의 데이터 플로우를 차단하기 위한 락을 설정하는 채널 잠금부를 더 포함하는, 메모리 시스템.
  10. 제9항에 있어서,
    상기 호스트 디바이스는,
    상기 채널에 연결된 메모리 디바이스에 대한 일련의 명령들을 수행하는 코어 프로세서; 및
    상기 채널에 연결된 메모리 디바이스의 데이터 플로우를 관리하는 메모리 컨트롤러를 더 포함하고,
    상기 채널 잠금부는 상기 코어 프로세서와 상기 메모리 컨트롤러 사이에 상기 락을 설정하는, 메모리 시스템.
  11. 제10항에 있어서,
    상기 호스트 디바이스는,
    상기 메모리 컨트롤러는, 상기 락이 설정된 경우, 상기 메모리 디바이스의 메모리 프로세서로부터 수신된 일련의 명령들을 수행하는, 메모리 시스템.
  12. 제8항에 있어서,
    상기 호스트 디바이스는 캐시(Cache)를 더 포함하되,
    상기 채널의 동작 권한을 갖지 않는 경우, 상기 캐시(Cache)를 플러쉬(Flush)하는, 메모리 시스템.
  13. 제8항에 있어서,
    상기 호스트 디바이스는,
    메모리 주소 테이블을 포함하는 변환 색인 버퍼(Translation Lookaside Buffer, TLB)를 포함하고,
    상기 채널에 연결된 메모리 디바이스로부터 상기 채널의 동작 권한을 수신하는 경우, 상기 메모리 주소 테이블을 업데이트하는, 메모리 시스템.
  14. 제1 채널 및 상기 제1 채널과 다른 제2 채널에 각각 연결되고, 상기 제1 및 제2 채널의 동작 권한을 제어하는 호스트-권한 제어부를 포함하는 호스트 디바이스;
    상기 제1 채널에 연결된 제1 및 제2 메모리 디바이스; 및
    상기 제2 채널에 연결된 제3 메모리 디바이스를 포함하되,
    상기 호스트-권한 제어부는,
    상기 제1 메모리 디바이스에 상기 제1 채널에 대한 동작 권한을 부여하여, 상기 제1 메모리 디바이스는 상기 제2 메모리 디바이스에 데이터를 직접 요청하고,
    상기 제3 메모리 디바이스에는 상기 제2 채널에 대한 동작 권한을 부여하지 않는 메모리 시스템.
  15. 제14항에 있어서,
    상기 호스트 디바이스로부터 상기 제1 채널로의 데이터 플로우를 차단하는 제1 채널 잠금부를 더 포함하고,
    상기 제1 메모리 디바이스는, 상기 제2 메모리 디바이스의 데이터 플로우를 제어하기 위한 제어-명령들을 수행하는 제1 메모리 프로세서를 더 포함하는, 메모리 시스템.
KR1020180116119A 2018-09-28 2018-09-28 메모리 디바이스들 사이의 직접 통신을 위한 메모리 시스템 및 메모리 디바이스 KR20200036461A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020180116119A KR20200036461A (ko) 2018-09-28 2018-09-28 메모리 디바이스들 사이의 직접 통신을 위한 메모리 시스템 및 메모리 디바이스
US16/411,664 US10996872B2 (en) 2018-09-28 2019-05-14 Memory device and memory system for direct communication between the memory devices
CN201910706837.0A CN110968533B (zh) 2018-09-28 2019-07-31 存储器设备和用于存储器设备之间直接通信的存储器系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180116119A KR20200036461A (ko) 2018-09-28 2018-09-28 메모리 디바이스들 사이의 직접 통신을 위한 메모리 시스템 및 메모리 디바이스

Publications (1)

Publication Number Publication Date
KR20200036461A true KR20200036461A (ko) 2020-04-07

Family

ID=69945480

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180116119A KR20200036461A (ko) 2018-09-28 2018-09-28 메모리 디바이스들 사이의 직접 통신을 위한 메모리 시스템 및 메모리 디바이스

Country Status (3)

Country Link
US (1) US10996872B2 (ko)
KR (1) KR20200036461A (ko)
CN (1) CN110968533B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102195564B1 (ko) * 2020-09-25 2020-12-28 조성호 데이터 복사 시스템 및 그 동작 방법

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7288045B2 (ja) * 2018-05-11 2023-06-06 サイジェント テクノロジー インコーポレイテッド 改良されたデータ制御及びアクセスの方法及びシステム

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2482331B1 (fr) * 1980-05-06 1986-03-21 Thomson Csf Mat Tel Procede d'arbitration centralisee, et arbitreur centralise pour systeme multiprocesseur
US5175829A (en) * 1988-10-25 1992-12-29 Hewlett-Packard Company Method and apparatus for bus lock during atomic computer operations
US5313591A (en) * 1992-06-25 1994-05-17 Hewlett-Packard Company Computer bus arbitration for N processors requiring only N unidirectional signal leads
JP4182801B2 (ja) * 2003-04-24 2008-11-19 日本電気株式会社 マルチプロセサシステム
KR100553348B1 (ko) 2004-05-31 2006-02-20 한국전자통신연구원 피엠이엠 제어기를 이용한 고속 스트리밍 데이터 전송장치 및 방법
JP2008097527A (ja) 2006-10-16 2008-04-24 Hitachi Ltd ストレージシステム及びその制御方法
JP2009163394A (ja) 2007-12-28 2009-07-23 Panasonic Corp メモリ管理装置およびメモリ管理方法
KR101626084B1 (ko) 2009-11-25 2016-06-01 삼성전자주식회사 멀티 칩 메모리 시스템 및 그것의 데이터 전송 방법
US9116634B2 (en) * 2011-06-10 2015-08-25 International Business Machines Corporation Configure storage class memory command
US9063945B2 (en) 2011-06-14 2015-06-23 International Business Machines Corporation Apparatus and method to copy data
KR101515359B1 (ko) 2011-09-30 2015-04-29 인텔 코포레이션 시스템 코-프로세서에 대한 직접 i/o 액세스
US10049061B2 (en) * 2012-11-12 2018-08-14 International Business Machines Corporation Active memory device gather, scatter, and filter
US9164888B2 (en) * 2012-12-10 2015-10-20 Google Inc. Using a logical to physical map for direct user space communication with a data storage device
US20160147667A1 (en) * 2014-11-24 2016-05-26 Samsung Electronics Co., Ltd. Address translation in memory
US9870153B2 (en) * 2014-12-29 2018-01-16 Sandisk Technologies Llc Non-volatile memory systems utilizing storage address tables
US9997232B2 (en) 2016-03-10 2018-06-12 Micron Technology, Inc. Processing in memory (PIM) capable memory device having sensing circuitry performing logic operations
US9983821B2 (en) * 2016-03-29 2018-05-29 Samsung Electronics Co., Ltd. Optimized hopscotch multiple hash tables for efficient memory in-line deduplication application
US10838899B2 (en) * 2017-03-21 2020-11-17 Micron Technology, Inc. Apparatuses and methods for in-memory data switching networks
US10416927B2 (en) * 2017-08-31 2019-09-17 Micron Technology, Inc. Processing in memory

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102195564B1 (ko) * 2020-09-25 2020-12-28 조성호 데이터 복사 시스템 및 그 동작 방법

Also Published As

Publication number Publication date
US20200104060A1 (en) 2020-04-02
CN110968533B (zh) 2024-08-27
CN110968533A (zh) 2020-04-07
US10996872B2 (en) 2021-05-04

Similar Documents

Publication Publication Date Title
US9135190B1 (en) Multi-profile memory controller for computing devices
TWI765725B (zh) 控制器
US8909854B2 (en) Memory device with specified write data size
US9021178B2 (en) High performance path for command processing
US11074011B2 (en) Solid state drive latency estimation interface for host performance tuning
US8332573B2 (en) Method and apparatus for performing address mapping in virtual file system of storage unit having a plurality of non-volatile data storage media
US7136963B2 (en) Storage capable of cache assignment modification
US20130073797A1 (en) Memory device
KR20170071085A (ko) 스토리지 컨트롤러의 작동 방법과 이를 포함하는 스토리지 장치의 작동 방법
US20170228191A1 (en) Systems and methods for suppressing latency in non-volatile solid state devices
CN102279712A (zh) 一种适用于互联网存储系统的存储控制方法、系统和装置
KR102595233B1 (ko) 데이터 처리 시스템 및 그것의 동작 방법
JP6704623B2 (ja) メモリシステムの動作方法、メモリシステム、及びメモリコントローラ
KR20200141212A (ko) 가비지콜렉션 동작을 위한 메모리 시스템 및 메모리 시스템의 동작방법
KR101857911B1 (ko) 가상채널을 이용한 다중 채널 메모리 제어기
KR20200036461A (ko) 메모리 디바이스들 사이의 직접 통신을 위한 메모리 시스템 및 메모리 디바이스
US20180335943A1 (en) Memory system and operating method thereof
CN114296638B (zh) 存算一体化固态硬盘控制器及相关装置、方法
CN108073360B (zh) 包括存储装置的计算装置以及计算装置的操作方法
KR20170001235A (ko) 메모리 시스템 및 그것의 동작 방법
US9558112B1 (en) Data management in a data storage device
KR102560251B1 (ko) 반도체 장치 및 반도체 시스템
KR101465447B1 (ko) 외부 병합 정렬 방법, 외부 병합 정렬 시스템 및 외부 병합 정렬을 위한 분산 처리 시스템
Kim et al. Decoupled ssd: Reducing data movement on nand-based flash ssd
US8209470B2 (en) CPU data bus PLD/FPGA interface using dual port RAM structure built in PLD

Legal Events

Date Code Title Description
E902 Notification of reason for refusal