KR20220050407A - 컨트롤러 및 컨트롤러의 동작방법 - Google Patents

컨트롤러 및 컨트롤러의 동작방법 Download PDF

Info

Publication number
KR20220050407A
KR20220050407A KR1020200134059A KR20200134059A KR20220050407A KR 20220050407 A KR20220050407 A KR 20220050407A KR 1020200134059 A KR1020200134059 A KR 1020200134059A KR 20200134059 A KR20200134059 A KR 20200134059A KR 20220050407 A KR20220050407 A KR 20220050407A
Authority
KR
South Korea
Prior art keywords
command
memory
address
queue
controller
Prior art date
Application number
KR1020200134059A
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 KR1020200134059A priority Critical patent/KR20220050407A/ko
Priority to US17/239,463 priority patent/US11494318B2/en
Priority to CN202110637493.XA priority patent/CN114371812B/zh
Priority to US17/401,994 priority patent/US11762590B2/en
Publication of KR20220050407A publication Critical patent/KR20220050407A/ko

Links

Images

Classifications

    • 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
    • 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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • 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/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • 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/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0284Multiple user address space allocation, e.g. using different base addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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/1041Resource optimization
    • G06F2212/1044Space efficiency 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/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

제1 및 제2 메모리 장치들을 제어하는 컨트롤러는 제1 논리 주소들과 연관된 데이터를 저장하도록 상기 제1 메모리 장치들을 제어하는 제1 코어; 제2 논리 주소들과 연관된 데이터를 저장하도록 상기 제2 메모리 장치들을 제어하는 제2 코어; 및 호스트로부터 수신된 커맨드들을 큐에 큐잉하고, 상기 큐잉된 커맨드들 중 상기 제1 논리 주소와 연관된 제1 주소 커맨드 및 상기 제2 논리 주소와 연관된 제2 주소 커맨드 간 처리 순서를 상기 제1 및 제2 메모리 장치들의 상태에 기초하여 결정하는 커맨드 리오더링을 수행하고, 상기 결정된 처리 순서에 따라 상기 제1 주소 커맨드를 상기 제1 코어로 제공하고, 상기 제2 주소 커맨드를 상기 제2 코어로 제공하는 호스트 인터페이스를 포함한다.

Description

컨트롤러 및 컨트롤러의 동작방법 {CONTROLLER AND OPERATION METHOD THEREOF}
본 발명은 메모리 장치를 제어하는 컨트롤러에 관한 것이다.
최근 컴퓨터 환경에 대한 패러다임(paradigm)이 언제, 어디서나 컴퓨터 시스템을 사용할 수 있도록 하는 유비쿼터스 컴퓨팅(ubiquitous computing)으로 전환되고 있다. 이로 인해 휴대폰, 디지털 카메라, 노트북 컴퓨터 등과 같은 휴대용 전자 장치의 사용이 급증하고 있다. 이와 같은 휴대용 전자 장치는 일반적으로 메모리 장치를 이용하는 메모리 시스템, 다시 말해 데이터 저장 장치를 사용한다. 데이터 저장 장치는 휴대용 전자 장치의 주 기억 장치 또는 보조 기억 장치로 사용된다.
비휘발성 메모리 장치를 이용한 데이터 저장 장치는 하드 디스크와 달리 기계적인 구동부가 없어서 안정성 및 내구성이 뛰어나며, 또한 정보의 액세스 속도가 매우 빠르고 전력 소모가 적다는 장점이 있다. 이러한 장점을 갖는 메모리 시스템의 일 예로 데이터 저장 장치는, USB(Universal Serial Bus) 메모리 장치, 다양한 인터페이스를 갖는 메모리 카드, 솔리드 스테이트 드라이브(SSD: Solid State Drive) 등을 포함한다.
본 발명은 호스트 커맨드들과 연관된 논리 주소에 관계없이 상기 커맨드들을 리오더링(reordering)함으로써 메모리 시스템의 성능을 향상시킬 수 있는 컨트롤러 및 그의 동작 방법을 제공하고자 한다.
본 실시 예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제로 한정되지 않으며, 이하의 실시 예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
본 발명의 실시 예에 따르면, 복수의 제1 및 제2 메모리 장치들을 제어하는 컨트롤러는, 제1 논리 주소들과 연관된 데이터를 저장하도록 상기 제1 메모리 장치들을 제어하는 제1 코어; 제2 논리 주소들과 연관된 데이터를 저장하도록 상기 제2 메모리 장치들을 제어하는 제2 코어; 및 호스트로부터 수신된 커맨드들을 큐에 큐잉하고, 상기 큐잉된 커맨드들 중 상기 제1 논리 주소와 연관된 제1 주소 커맨드 및 상기 제2 논리 주소와 연관된 제2 주소 커맨드 간 처리 순서를 상기 제1 및 제2 메모리 장치들의 상태에 기초하여 결정하는 커맨드 리오더링을 수행하고, 상기 결정된 처리 순서에 따라 상기 제1 주소 커맨드를 상기 제1 코어로 제공하고, 상기 제2 주소 커맨드를 상기 제2 코어로 제공하는 호스트 인터페이스를 포함한다.
또한, 상기 호스트 인터페이스는 상기 제1 및 제2 메모리 장치들 중 아이들(idle) 상태의 메모리 장치가 있는 경우, 상기 제1 및 제2 코어 중 해당 메모리 다이를 제어하는 코어에 연관된 커맨드가 우선 제공되도록 상기 커맨드 리오더링을 수행할 수 있다.
또한, 상기 호스트 인터페이스는 상기 제1 및 제2 메모리 장치들이 모두 비지(busy) 상태인 경우, 상기 큐에 포함된 제1 주소 커맨드와 제2 주소 커맨드를 인터리브(interleave)함으로써 상기 커맨드 리오더링을 수행할 수 있다.
또한, 상기 호스트 인터페이스는 정해진 크기의 데이터를 처리하기 위한 제1 주소 커맨드와 제2 주소 커맨드를 교대로 제공하도록 상기 큐잉된 커맨드들의 처리 순서를 결정함으로써 상기 제1 주소 커맨드와 제2 주소 커맨드를 인터리브할 수 있다.
또한, 상기 정해진 크기는 상기 제1 및 제2 코어 중 하나의 코어에서 제어되는 메모리 다이들의 수와 각 메모리 다이의 페이지 크기에 기초할 수 있다.
또한, 상기 호스트 인터페이스는 상기 제1 및 제2 코어 중, 상기 제1 및 제2 메모리 장치들 중 오픈 블록의 여유 공간이 가장 많이 남은 메모리 장치를 제어하는 코어에 커맨드가 먼저 제공되도록 상기 커맨드 리오더링을 수행할 수 있다.
또한, 상기 호스트 인터페이스는 상기 큐의 모든 엔트리에 커맨드가 큐잉된 경우 상기 커맨드 리오더링을 수행할 수 있다.
또한, 상기 호스트 인터페이스는 상기 큐에 큐잉된 제1 주소 커맨드와 연관된 데이터 크기 및 제2 주소 커맨드와 연관된 데이터 크기가 모두 정해진 크기 이상인 경우 상기 커맨드 리오더링을 수행할 수 있다.
또한, 상기 호스트 인터페이스는 호스트로부터 마지막 커맨드가 수신된 시점 이후 정해진 기간 이상 새로운 커맨드를 수신하지 못한 경우 상기 커맨드 리오더링을 수행할 수 있다.
또한, 호스트 인터페이스는 상기 큐잉된 커맨드들과 연관된 논리 주소들의 모듈로 연산(modulo operation) 결과에 기초하여 상기 논리 주소들을 상기 제1 및 제2 논리 주소들로 분류할 수 있다.
본 발명의 실시 예에 따르면, 제1 논리 주소들과 연관된 데이터를 저장하도록 복수의 제1 메모리 장치들을 제어하는 제1 코어 및 제2 논리 주소들과 연관된 데이터를 저장하도록 복수의 제2 메모리 장치들을 제어하는 제2 코어를 포함하는 컨트롤러의 동작 방법은, 호스트로부터 수신된 커맨드들을 큐에 큐잉하는 단계; 상기 큐잉된 커맨드들 중 상기 제1 논리 주소와 연관된 제1 주소 커맨드 및 상기 제2 논리 주소와 연관된 제2 주소 커맨드 간 처리 순서를 상기 제1 및 제2 메모리 장치들의 상태에 기초하여 결정하는 커맨드 리오더링을 수행하는 단계; 및 상기 결정된 처리 순서에 따라 상기 제1 주소 커맨드를 상기 제1 코어로 제공하고, 상기 제2 주소 커맨드를 상기 제2 코어로 제공하는 단계를 포함한다.
또한, 상기 커맨드 리오더링을 수행하는 단계는 상기 제1 및 제2 메모리 장치들 중 아이들(idle) 상태의 메모리 장치가 있는 경우, 상기 제1 및 제2 코어 중 해당 메모리 다이를 제어하는 코어에 연관된 커맨드가 우선 제공되도록 상기 처리 순서를 결정하는 단계를 포함할 수 있다.
또한, 상기 커맨드 리오더링을 수행하는 단계는 상기 제1 및 제2 메모리 장치들이 모두 비지(busy) 상태인 경우, 상기 큐에 포함된 제1 주소 커맨드와 제2 주소 커맨드를 인터리브(interleave)하는 단계를 더 포함할 수 있다.
또한, 상기 인터리브하는 단계는 정해진 크기의 데이터를 처리하기 위한 제1 주소 커맨드와 제2 주소 커맨드를 교대로 제공하도록 상기 큐잉된 커맨드들의 처리 순서를 결정하는 단계를 포함할 수 있다.
또한, 상기 정해진 크기는 상기 제1 및 제2 코어 중 하나의 코어에서 제어되는 메모리 다이들의 수와 각 메모리 다이의 페이지 크기에 기초할 수 있다.
또한, 상기 커맨드 리오더링을 수행하는 단계는 상기 제1 및 제2 코어 중, 상기 제1 및 제2 메모리 장치들 중 오픈 블록의 여유 공간이 가장 많이 남은 메모리 장치를 제어하는 코어에 커맨드가 먼저 제공되도록 상기 큐잉된 커맨드들의 처리 순서를 결정할 수 있다.
또한, 상기 커맨드 리오더링을 수행하는 단계는 상기 큐의 모든 엔트리에 커맨드가 큐잉된 경우 수행될 수 있다.
또한, 상기 커맨드 리오더링을 수행하는 단계는 상기 큐에 큐잉된 제1 주소 커맨드와 연관된 데이터 크기 및 제2 주소 커맨드와 연관된 데이터 크기가 모두 정해진 크기 이상인 경우 수행될 수 있다.
또한, 상기 커맨드 리오더링을 수행하는 단계는 호스트로부터 마지막 커맨드가 수신된 시점 이후 정해진 기간 이상 새로운 커맨드를 수신하지 못한 경우 수행될 수 있다.
또한, 상기 큐잉된 커맨드들과 연관된 논리 주소들의 모듈로 연산(modulo operation) 결과에 기초하여 상기 논리 주소들을 상기 제1 및 제2 논리 주소들로 분류하는 단계를 포함할 수 있다.
본 발명은 호스트 커맨드들과 연관된 논리 주소에 관계없이 상기 커맨드들을 리오더링(reordering)함으로써 메모리 시스템의 성능을 향상시킬 수 있는 컨트롤러 및 그의 동작 방법을 제공할 수 있다.
본 발명에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며 언급되지 않은 또 다른 효과들은 아래의 기재로부터 본 발명이 속하는 분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 일 예를 개략적으로 도시한 도면이다.
도 2는 커맨드 큐 인터페이스 동작을 설명하기 위한 도면이다.
도 3은 도 1에 도시된 메모리 시스템의 구체적인 블록도이다.
도 4a 내지 도 4c는 호스트 인터페이스의 커맨드 리오더링 동작을 설명하는 도면이다.
도 5는 호스트 인터페이스가 커맨드 리오더링을 수행하기 위해 정해진 기준의 예들을 설명하기 위한 도면이다.
도 6은 본 발명의 실시 예에 따른 호스트 인터페이스의 동작을 나타낸다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 설명하기로 한다. 그러나, 본 발명은 이하에서 개시되는 실시예에 한정되는 것이 아니라 서로 다른 다양한 형태로 구성될 수 있으며, 단지 본 실시예는 본 발명의 개시가 완전하도록 하며 통상의 지식을 가진 자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이다.
도 1은 본 발명의 실시 예에 따른 메모리 시스템을 포함하는 데이터 처리 시스템의 일 예를 개략적으로 도시한 도면이다.
도 1을 참조하면, 데이터 처리 시스템(100)은 호스트(102) 및 메모리 시스템(110)을 포함한다.
호스트(102)는 전자 장치, 예를 들어 휴대폰, MP3 플레이어, 랩탑 컴퓨터 등과 같은 휴대용 전자 장치들, 또는 데스크탑 컴퓨터, 게임기, TV, 프로젝터 등과 같은 전자 장치들을 포함할 수 있다.
호스트(102)는 적어도 하나의 운영 시스템(OS: operating system)을 포함할 수 있다. 운영 시스템은 호스트(102)의 기능 및 동작을 전반적으로 관리 및 제어하고, 데이터 처리 시스템(100) 또는 메모리 시스템(110)을 사용하는 사용자와 호스트(102) 간에 상호 동작을 제공한다. 운영 시스템은 사용자의 사용 목적 및 용도에 상응한 기능 및 동작을 지원하며, 호스트(102)의 이동성(mobility)에 따라 일반 운영 시스템과 모바일 운용 시스템으로 구분할 수 있다. 운영 시스템에서의 일반 운영 시스템 시스템은, 사용자의 사용 환경에 따라 개인용 운영 시스템과 기업용 운영 시스템으로 구분할 수 있다.
메모리 시스템(110)은 호스트(102)의 요청에 응하여 호스트(102)의 데이터를 저장하기 위해 동작할 수 있다. 예를 들어, 메모리 시스템(110)은 솔리드 스테이트 드라이브(SSD: Solid State Drive), MMC, eMMC(embedded MMC), RS-MMC(Reduced Size MMC), micro-MMC 형태의 멀티 미디어 카드(MMC: Multi Media Card), SD, mini-SD, micro-SD 형태의 시큐어 디지털(SD: Secure Digital) 카드, USB(Universal Serial Bus) 저장 장치, UFS(Universal Flash Storage) 장치, CF(Compact Flash) 카드, 스마트 미디어(Smart Media) 카드, 메모리 스틱(Memory Stick) 등과 같은 다양한 종류의 저장 장치들 중 어느 하나로 구현될 수 있다.
메모리 시스템(110)은 다양한 종류의 저장 장치에 의해 구현될 수 있다. 예를 들어, 상기 저장 장치는 DRAM(Dynamic Random Access Memory), SRAM(Static RAM) 등과 같은 휘발성 메모리 장치와, ROM(Read Only Memory), MROM(Mask ROM), PROM(Programmable ROM), EPROM(Erasable ROM), EEPROM(Electrically Erasable ROM), FRAM(Ferromagnetic ROM), PRAM(Phase change RAM), MRAM(Magnetic RAM), RRAM(Resistive RAM), 플래시 메모리 등과 같은 비휘발성 메모리 장치를 포함할 수 있다. 상기 플래시 메모리는 3차원 스택 구조를 가질 수 있다.
구현에 따라, 메모리 시스템(110)은 NVMe와 같은 프로토콜을 지원하는 커맨드 큐 인터페이스를 사용하여 호스트(102)와 통신할 수 있다. 커맨드 큐 인터페이스는, 요청된 커맨드의 입력을 위한 서브미션 큐(submission queue, SQ) 및 해당 커맨드의 처리 결과를 기록하기 위한 컴플리션 큐(completion queue, CQ)를 포함하는 큐 페어(queue pair)에 기초하여 호스트(102)와 메모리 시스템(110) 간 인터페이싱을 지원할 수 있다.
도 2는 커맨드 큐 인터페이스 동작을 설명하기 위한 도면이다.
호스트(102)는 서브미션 큐(1022)와 컴플리션 큐(1024)를 포함하는 큐 페어를 생성할 수 있다. 만약, 호스트(102)에 복수의 코어들이 존재하는 경우, 서브미션 큐(1022)와 컴플리션 큐(1024)는 복수의 코어들 중 하나의 코어에 대응하여 생성된 큐 페어일 수 있다. 실시 예에 따라, 큐 페어는 호스트(102)의 메모리에 저장될 수 있다.
메모리 시스템(110)은 커맨드 큐 인터페이스 동작을 수행하기 위해 도어벨 레지스터(202)를 포함할 수 있다.
도어벨 레지스터(202)는 호스트(102)에 의해 생성된 큐 페어를 제어하기 위한 레지스터일 수 있다. 도 2는 예로서 하나의 도어벨 레지스터(202)를 도시하나, 호스트(102)에 복수의 코어들이 존재하는 경우, 상기 코어들의 개수와 동일한 개수의 도어벨 레지스터(202)가 메모리 시스템(110)에 포함될 수 있다. 도어벨 레지스터(202)는 서브미션 큐(1022)의 테일을 가리키는 서브미션 큐 테일 포인터(2022)와 컴플리션 큐(1024)의 헤드를 가리키는 컴플리션 큐 헤드 포인터(2024)를 저장할 수 있다. 메모리 시스템(110)은 도어벨 레지스터(202)를 참조하여 서브미션 큐(1022)와 컴플리션 큐(1024)에 액세스함으로써 호스트(102)와의 커맨드 큐 인터페이스 동작을 수행할 수 있다.
단계 S1에서, 호스트(102)는 메모리 시스템(110)에 커맨드 수행을 요청하기 위해 서브미션 큐(1022)에 커맨드를 큐잉할 수 있다. 단계 S2에서, 호스트(102)는 서브미션 큐 테일 포인터(2022)를 업데이트하고, 업데이트된 서브미션 큐 테일 포인터(2022)를 메모리 시스템(110)으로 제공할 수 있다. 메모리 시스템(110)은 상기 업데이트된 서브미션 큐 테일 포인터(2022)를 도어벨 레지스터(202)에 저장할 수 있다.
단계 S3에서, 메모리 시스템(110)은 서브미션 큐(1022)로부터 커맨드를 페치할 수 있다. 단계 S4에서, 메모리 시스템(110)은 상기 페치된 커맨드를 처리할 수 있다.
단계 S5에서, 메모리 시스템(110)은 커맨드의 처리 후에 컴플리션 큐(1024)에 커맨드의 처리가 완료되었음을 기록할 수 있다. 예를 들어, 메모리 시스템(110)은 컴플리션 큐(1024)에 컴플리션 큐 엔트리를 기입할 수 있다. 이때 컴플리션 큐 헤드 포인터(2024)가 증가할 수 있다. 단계 S6에서, 메모리 시스템(110)은 인터럽트 신호를 생성할 수 있다.
단계 S7에서, 호스트(102)는 커맨드를 완료할 수 있다. 단계 S8에서, 호스트(102)는 업데이트된 컴플리션 큐 헤드 포인터(2024)를 메모리 시스템(110)으로 제공할 수 있다. 예를 들어, 메모리 시스템(110)은 업데이트된 컴플리션 큐 헤드 포인터(2024)를 도어벨 레지스터(202)에 저장할 수 있다.
다시 도 1을 참조하면, 메모리 시스템(110)은 복수의 메모리 장치들 및 컨트롤러(130)를 포함할 수 있다. 복수의 메모리 장치들은 호스트(102)를 위한 데이터를 저장할 수 있으며, 컨트롤러(130)는 복수의 메모리 장치들로의 데이터 저장을 제어할 수 있다.
컨트롤러(130) 및 복수의 메모리 장치들은 하나의 반도체 장치로 집적될 수 있다. 일 예로, 컨트롤러(130) 및 복수의 메모리 장치들은 하나의 반도체 장치로 집적되어 SSD를 구성할 수 있다. 메모리 시스템(110)이 SSD로 사용되면, 메모리 시스템(110)에 연결된 호스트(102)의 동작 속도는 향상될 수 있다. 게다가, 컨트롤러(130) 및 복수의 메모리 장치들은, 하나의 반도체 장치로 집적되어 메모리 카드를 구성할 수도 있다. 예를 들어, 컨트롤러(130) 및 복수의 메모리 장치들은 PC 카드(PCMCIA: Personal Computer Memory Card International Association), 컴팩트 플래시 카드(CF), 스마트 미디어 카드(SM, SMC), 메모리 스틱, 멀티미디어 카드(MMC, RS-MMC, MMCmicro), SD 카드(SD, miniSD, microSD, SDHC), 유니버설 플래시 기억 장치(UFS) 등과 같은 메모리 카드를 구성할 수 있다.
다른 일 예로, 메모리 시스템(110)은, 컴퓨터, UMPC(Ultra Mobile PC), 워크스테이션, 넷북(net-book), PDA(Personal Digital Assistants), 포터블(portable) 컴퓨터, 웹 타블렛(web tablet), 태블릿 컴퓨터(tablet computer), 무선 전화기(wireless phone), 모바일 폰(mobile phone), 스마트폰(smart phone), e-북(e-book), PMP(portable multimedia player), 휴대용 게임기, 네비게이션(navigation) 장치, 블랙박스(black box), 디지털 카메라(digital camera), DMB(Digital Multimedia Broadcasting) 재생기, 3차원 텔레비전(3-dimensional television), 스마트 텔레비전(smart television), 디지털 음성 녹음기(digital audio recorder), 디지털 음성 재생기(digital audio player), 디지털 영상 녹화기(digital picture recorder), 디지털 영상 재생기(digital picture player), 디지털 동영상 녹화기(digital video recorder), 디지털 동영상 재생기(digital video player), 데이터 센터를 구성하는 스토리지, 정보를 무선 환경에서 송수신할 수 있는 장치, 홈 네트워크를 구성하는 다양한 전자 장치들 중 하나, 컴퓨터 네트워크를 구성하는 다양한 전자 장치들 중 하나, 텔레매틱스 네트워크를 구성하는 다양한 전자 장치들 중 하나, RFID(radio frequency identification) 장치, 또는 컴퓨팅 시스템을 구성하는 다양한 구성 요소들 중 하나 등을 구성할 수 있다.
복수의 메모리 장치들은 비휘발성 메모리 장치일 수 있으며, 전원이 공급되지 않아도 저장된 데이터를 유지할 수 있다. 복수의 메모리 장치들은 프로그램 동작을 통해 호스트(102)로부터 제공된 데이터를 저장할 수 있고, 리드 동작을 통해 호스트(102)로 복수의 메모리 장치들에 저장된 데이터를 제공할 수 있다. 복수의 메모리 장치들 각각은 복수의 메모리 블록들을 포함하며, 메모리 블록들 각각은 복수의 페이지들을 포함하며, 상기 페이지들 각각은 워드라인에 연결된 복수의 메모리 셀들을 포함할 수 있다. 일 실시예에서, 복수의 메모리 장치들은 플래시 메모리가 될 수 있다. 상기 플래시 메모리는 3차원 스택 구조를 가질 수 있다.
컨트롤러(130)는 호스트(102)로부터의 요청에 응하여 복수의 메모리 장치들을 제어할 수 있다. 예를 들어, 컨트롤러(130)는 복수의 메모리 장치들로부터 리드된 데이터를 호스트(102)로 제공하고, 호스트(102)로부터 제공된 데이터를 메모리 장치(150)에 저장할 수 있다. 이러한 동작을 위해, 컨트롤러(130)는 복수의 메모리 장치들의 리드(read), 프로그램(program), 이레이즈(erase) 등의 동작을 제어할 수 있다.
컨트롤러(130)는 서로 내부 버스를 통해 동작 가능하도록 연결된 호스트 인터페이스(132), 프로세서(134), 메모리 인터페이스(142) 및 메모리(144)를 포함할 수 있다.
호스트 인터페이스(132)는 호스트(102)의 커맨드(command) 및 데이터를 처리하며, USB(Universal Serial Bus), MMC(Multi-Media Card), PCI-E(Peripheral Component Interconnect-Express), SAS(Serial-attached SCSI), SATA(Serial Advanced Technology Attachment), PATA(Parallel Advanced Technology Attachment), SCSI(Small Computer System Interface), ESDI(Enhanced Small Disk Interface), IDE(Integrated Drive Electronics), MIPI(Mobile Industry Processor Interface) 등과 같은 다양한 인터페이스 프로토콜들 중 적어도 하나를 통해 호스트(102)와 통신하도록 구성될 수 있다.
호스트 인터페이스(132)는 호스트(102)와 데이터를 주고받는 영역으로 호스트 인터페이스 계층(HIL: Host Interface Layer)이라 불리는 펌웨어(firmware)를 통해 구동될 수 있다.
메모리 인터페이스(142)는 컨트롤러(130)가 호스트(102)로부터의 요청에 응답하여 메모리 장치(150)를 제어하도록, 컨트롤러(130)와 복수의 메모리 장치들 간의 인터페이싱을 위한 메모리/스토리지(storage) 인터페이스로서의 역할을 할 수 있다. 복수의 메모리 장치들이 플래시 메모리, 특히 NAND 플래시 메모리인 경우, 메모리 인터페이스(142)는 복수의 메모리 장치들을 위한 제어 신호를 생성하고, 프로세서(134)의 제어 하에 복수의 메모리 장치들로 제공되는 데이터를 처리할 수 있다. 메모리 인터페이스(142)는 컨트롤러(130)와 복수의 메모리 장치들 사이의 커맨드 및 데이터를 처리하기 위한 인터페이스, 예를 들어 NAND 플래시 인터페이스로서 동작할 수 있다.
메모리 인터페이스(142)는 플래시 인터페이스 계층(FIL: Flash Interface Layer)이라 불리는 펌웨어(firmware)를 통해 구동될 수 있다.
메모리(144)는 메모리 시스템(110) 및 컨트롤러(130)의 동작 메모리로서의 역할을 수행할 수 있으며, 메모리 시스템(110) 및 컨트롤러(130)의 구동을 위한 데이터를 저장할 수 있다. 컨트롤러(130)는 호스트(102)로부터의 요청에 응하여 복수의 메모리 장치들이 리드, 프로그램, 이레이즈 동작을 수행하도록 복수의 메모리 장치들을 제어할 수 있다. 컨트롤러(130)는 복수의 메모리 장치들 로부터 독출되는 데이터를 호스트(102)로 제공할 수 있으며, 호스트(102)로부터 제공되는 데이터를 복수의 메모리 장치들에 저장할 수 있다. 메모리(144)는 컨트롤러(130)와 복수의 메모리 장치가 이러한 동작을 수행하는 데 필요한 데이터를 저장할 수 있다.
메모리(144)는 휘발성 메모리로 구현될 수 있다. 예를 들어, 메모리(144)는 정적 랜덤 액세스 메모리(SRAM: Static Random Access Memory), 또는 동적 랜덤 액세스 메모리(DRAM: Dynamic Random Access Memory) 등으로 구현될 수 있다. 메모리(144)는 컨트롤러(130) 내부 또는 외부에 배치될 수 있다. 도 1은 컨트롤러(130) 내부에 배치된 메모리(144)를 예시한다. 일 실시예에서, 메모리(144)는 메모리(144)와 컨트롤러(130) 사이의 데이터를 입출력하는 메모리 인터페이스를 갖는 외부 휘발성 메모리 장치로 구현될 수 있다.
메모리(144)는 호스트(102)와 복수의 메모리 장치들 간의 라이트, 리드 등의 동작을 수행하기 위한 데이터를 저장하기 위해 프로그램 메모리, 데이터 메모리, 라이트 버퍼(buffer)/캐시(cache), 리드 버퍼/캐시, 데이터 버퍼/캐시, 맵(map) 버퍼/캐시 등을 포함할 수 있다.
프로세서(134)는 메모리 시스템(110)의 전체적인 동작을 제어할 수 있다. 프로세서(134)는 메모리 시스템(110)의 전반적인 동작을 제어하기 위해 펌웨어를 구동할 수 있다. 상기 펌웨어는 플래시 변환 계층(FTL: Flash Translation Layer)로 불릴 수 있다. 그리고, 프로세서(134)는 마이크로프로세서 또는 중앙 처리 장치(CPU) 등으로 구현될 수 있다. 특히, 메모리 시스템(110)의 데이터 처리 성능을 향상시키기 위해 프로세서(134)는 복수의 코어들을 포함하는 멀티 코어 프로세서로 구현될 수 있다.
프로세서(134)는 플래시 변환 계층을 구동하여 호스트로부터 수신된 요청에 대응하는 포그라운드 동작(foreground operation)을 수행할 수 있다. 예를 들어, 프로세서(134)는 호스트로부터의 라이트 요청에 응하여 메모리 장치(150)의 라이트 동작을 제어하고, 리드 요청에 응하여 메모리 장치(150)의 리드 동작을 제어할 수 있다.
또한, 프로세서(134)는 복수의 메모리 장치들에 대한 백그라운드(background) 동작을 수행할 수도 있다. 예를 들어, 복수의 메모리 장치들에 대한 백그라운드 동작은 가비지 컬렉션(GC: Garbage Collection) 동작, 웨어 레벨링(WL: Wear Leveling) 동작, 맵 플러시(map flush) 동작, 배드 블록 관리(bad block management) 동작 등을 포함할 수 있다.
프로세서(134)에 포함된 복수의 코어들은 병렬로 동작함으로써 메모리 시스템(110)의 데이터 처리 성능을 향상시킬 수 있다. 상기 복수의 코어들의 병렬 동작이 도 3를 참조하여 자세히 설명된다.
도 3은 도 1에 도시된 메모리 시스템(110)의 구체적인 블록도이다.
도 1을 참조하여 설명된 복수의 메모리 장치들은 도 2에 도시된 복수의 메모리 다이들(DIE11 - DIE44)에 대응할 수 있다. 복수의 메모리 다이들(DIE11 - DIE44)은 복수의 채널들(CH1 - CH4)을 통해 메모리 인터페이스(142)에 연결될 수 있다.
복수의 메모리 다이들(DIE11 - DIE44) 각각은 메모리 다이, 플레인, 메모리 블록 및 페이지의 계층 구조를 가질 수 있다. 하나의 메모리 다이는 채널을 통해 한 번에 하나의 커맨드를 수신할 수 있다. 하나의 메모리 다이는 하나 이상의 플레인들을 포함할 수 있으며, 상기 플레인들은 상기 메모리 다이가 수신한 커맨드를 병렬로 처리할 수 있다. 상기 플레인들 각각은 복수의 메모리 블록들을 포함할 수 있다. 메모리 블록은 이레이즈 동작의 최소 단위일 수 있다. 하나의 메모리 블록은 복수의 페이지들을 포함할 수 있다. 페이지는 프로그램 동작 및 리드 동작의 최소 단위일 수 있다.
복수의 메모리 다이들(DIE11 - DIE44)의 구조는 서로 실질적으로 동일하거나 유사할 수 있다. 복수의 메모리 다이들(DIE11 - DIE44)은 독립적으로 동작할 수 있다.
도 1을 참조하여 설명된 컨트롤러(130)는 도 3에 도시된 컨트롤러(130)와 대응할 수 있다. 도 1을 참조하여 설명된 컨트롤러(130)의 구성요소들 중 일부는 도 2에서 생략되었다. 도 2에 도시된 제1 및 제2 코어(136, 138)는 도 1의 프로세서(134)에 포함된 복수의 코어들에 대응할 수 있다. 제1 및 제2 코어(136, 138)는 독립적으로 동작할 수 있다.
메모리 시스템(110)이 높은 데이터 처리 성능을 제공할 수 있도록 제1 및 제2 코어(136, 138)와 복수의 메모리 다이들(DIE11 - DIE44)은 병렬로 동작할 수 있도록 구성될 수 있다.
제1 및 제2 코어(136, 138)는 서로 다른 논리 주소와 연관된 커맨드를 처리할 수 있다. 예를 들어, 제1 코어(136)는 홀수 논리 주소와 연관된 커맨드만을 처리하고, 제2 코어(138)는 짝수 논리 주소와 연관된 커맨드만을 처리할 수 있다. 이하에서, 홀수 논리 주소와 연관된 커맨드는 홀수 주소 커맨드, 짝수 논리 주소와 연관된 커맨드는 짝수 주소 커맨드로 지칭된다.
두 개의 코어가 짝수 주소 커맨드와 홀수 주소 커맨드를 각각 처리하는 경우를 예로 들어 본 발명의 실시 예가 설명될 것이지만, 본 발명은 이에 제한되지 않는다. 프로세서(134)는 두 개보다 많은 코어들을 포함할 수 있고, 호스트 인터페이스(132)는 호스트(102)로부터의 커맨드와 연관된 논리 주소를 상기 코어들의 개수로 모듈로 연산(modulo operation)을 수행한 결과에 기초하여 각 코어들로 커맨드를 제공할 수 있다.
호스트 인터페이스(132)는 도어벨 레지스터(202) 값을 감지하여 호스트(102)의 서브미션 큐(1022)에 큐잉된 커맨드를 페치할 수 있다. 호스트 인터페이스(132)는 상기 페치된 커맨드를 먼저 HIL 큐(232)에 큐잉할 수 있다. 그리고, 큐잉된 커맨드의 논리 주소가 홀수 논리 주소인지 짝수 논리 주소인지에 따라 제1 코어(136) 또는 제2 코어(138)로 상기 커맨드를 제공할 수 있다.
그리고, 제1 및 제2 코어(136, 138)는 자신에게 독점적으로 할당된 메모리 다이들만을 제어할 수 있다. 예를 들어, 제1 코어(136)는 제1 및 제2 채널(CH1, CH2)로 연결된 메모리 다이들(DIE11 - DIE24)만을 제어하고, 제2 코어(138)는 제3 및 제4 채널(CH3, CH4)로 연결된 메모리 다이들(DIE31 - DIE44)만을 제어할 수 있다. 이하에서 제1 코어(136)에 의해 제어되는 메모리 다이들(DIE11 - DIE24)을 제1 메모리 다이들, 제2 코어(138)에 의해 제어되는 메모리 다이들(DIE31 - DIE44)을 제2 메모리 다이들로 지칭한다.
제1 코어(136)는 홀수 주소 커맨드를 수신하여 제1 FTL 큐(236)에 큐잉한 후 제1 메모리 다이들의 물리 주소에 매핑할 수 있다. 제2 코어(138)는 짝수 주소 커맨드들을 수신하여 제2 FTL 큐(238)에 큐잉한 후 제2 메모리 다이들의 물리 주소에 매핑할 수 있다. 제1 및 제2 코어(136, 138)는 서로 다른 논리 주소 및 물리 주소에 연관된 커맨드를 처리하므로, 서로 간섭하지 않고 병렬로 동작할 수 있다.
제1 코어(136)는 데이터 처리 성능을 향상시키기 위해 인터리브(interleave) 프로그램 등을 고려하여 제1 FTL 큐(236)에 큐잉된 홀수 주소 커맨드들의 커맨드 수행 순서를 리오더링할 수 있다. 제2 코어도 마찬가지로, 제2 FTL 큐(238)에 큐잉된 짝수 주소 커맨드들의 커맨드 수행 순서를 리오더링할 수 있다.
그러나, 제1 및 제2 코어(136, 138)가 서로 간섭하지 않기 때문에 HIL 큐(232)에 큐잉된 커맨드가 제1 및 제2 FTL 큐(236, 238)에 큐잉되고 나면 짝수 논리 주소에 연관된 커맨드와 홀수 논리 주소에 연관된 커맨드 간에는 커맨드 수행 순서가 리오더링될 수 없다.
본 발명의 실시 예에 따르면, 호스트 인터페이스(132)는 HIL 큐(232)에 큐잉된 커맨드들의 처리 순서를 변경하고, 변경된 순서대로 커맨드들을 제1 및 제2 FTL 큐(236, 238)로 제공할 수 있다. 예를 들어, 호스트 인터페이스(132)는 제1 및 제2 메모리 다이들의 상태에 기초하여 짝수 주소 커맨드와 홀수 주소 커맨드 간 커맨드 처리 순서를 변경할 수 있다. 본 발명의 실시 예에 따르면, HIL 큐(232)가 제1 및 제2 메모리 다이들의 상태를 모두 고려하여 커맨드 처리 순서를 결정함으로써 서로 간섭할 수 없는 제1 및 제2 코어(136, 138)의 커맨드 리오더링의 한계를 보완할 수 있다.
이하에서, 본 발명의 실시 예에 따른 호스트 인터페이스(132)의 커맨드 리오더링 방법이 자세히 설명된다.
도 4a 내지 도 4c는 호스트 인터페이스(132)의 커맨드 리오더링을 설명하는 도면이다. 도 4a 내지 도 4c는 HIL 큐(232), 제1 FTL 큐(236) 및 제2 FTL 큐(238)를 도시하며, 각 큐의 헤드(HEAD) 및 테일(TAIL) 또한 도시한다.
도 4a는 본 발명의 실시 예에 따른 커맨드 리오더링이 수행되기 전의 큐들의 상태를 설명한다.
도 4a는 제1 FTL 큐(236)의 모든 엔트리에 커맨드가 큐잉되고, 제2 FTL 큐(238)에는 커맨드가 큐잉되지 않은 상태를 도시한다. 상기 상태에서 호스트 인터페이스(132)는 복수의 커맨드들을 수신해서 HIL 큐(232)에 큐잉할 수 있다. 도 3a의 예에서 HIL 큐(232)가 8개의 커맨드들을 수신할 수 있다. 상기 8개의 커맨드들 중 먼저 수신된 제1 내지 제6 커맨드(HIL_CMD1 - HIL_CMD6)은 홀수 주소 커맨드로서 제1 코어(136)로 제공될 커맨드이며, 나중에 수신된 제7 및 제8 커맨드(HIL_CMD7, HIL_CMD8)는 짝수 주소 커맨드로서 제2 코어(138)로 큐잉될 커맨드일 수 있다.
만약 호스트 인터페이스(132)가 HIL 큐(232)에 큐잉된 커맨드들의 커맨드 리오더링을 수행하지 않고 커맨드들을 제1 및 제2 코어(136, 138)로 제공하는 경우, 제1 내지 제6 커맨드(HIL_CMD1 - HIL_CMD6)를 제1 코어(136)로 제공하기 전까지는 제7 및 제8 커맨드(HIL_CMD7, HIL_CMD8)은 짝수 주소 커맨드로서 제2 코어(138)로 제공할 수 없다.
제1 FTL 큐(236)의 모든 엔트리에 커맨드가 큐잉된 경우, 제1 FTL 큐(236)에 큐잉된 커맨드들이 처리되기 전까지는 제1 내지 제6 커맨드(HIL_CMD1 - HIL_CMD6)가 제1 FTL 큐(236)에 큐잉될 수 없다. 제2 FTL 큐(238)가 비어 있고 제2 코어(138)가 커맨드를 곧바로 처리할 수 있는 경우에도 제1 내지 제6 커맨드(HIL_CMD1 - HIL_CMD6)가 모두 제1 FTL 큐(236)에 큐잉될 때까지 대기한 후 호스트 인터페이스(132)가 제7 및 제8 커맨드(HIL_CMD7, HIL_CMD8)를 제2 FTL 큐(238)로 제공할 수 있다면 제1 및 제2 코어(136, 138)의 병렬 동작이 제한될 수 있다. 제1 및 제2 코어(136, 138)의 병렬 동작이 제한되면 메모리 시스템(110)의 데이터 처리 성능이 제한될 수 있다.
본 발명의 실시 예에 따르면, 호스트 인터페이스(132)는 HIL 큐(232)에 큐잉된 커맨드들의 커맨드 리오더링을 수행할 수 있다.
도 4b는 본 발명의 실시 예에 따른 커맨드 리오더링을 설명하는 도면이다.
호스트 인터페이스(132)는 호스트(102)로부터 수신된 커맨드들을 HIL 큐(232)에 큐잉하고, 정해진 조건을 만족하면 상기 큐잉된 커맨드들을 리오더링할 수 있다.
정해진 조건의 제1 예로, 호스트 인터페이스(132)는 HIL 큐(232)의 모든 엔트리에 커맨드가 큐잉된 경우에 HIL 큐(232)에 큐잉된 커맨드들을 리오더링할 수 있다.
정해진 조건의 제2 예로, 호스트 인터페이스(132)는 HIL 큐(232)에 큐잉된 커맨드들의 논리 주소에 기초하여, 제1 및 제2 코어(136, 138)가 동시에 동작할 수 있을 것으로 판단되는 경우 HIL 큐(232)에 큐잉된 커맨드들을 리오더링할 수 있다. 예를 들어, 호스트 인터페이스(132)는 HIL 큐(232)에 큐잉된 홀수 주소 커맨드와 연관된 데이터 크기 및 짝수 주소 커맨드와 연관된 데이터 크기가 모두 정해진 크기 이상인 경우 호스트 인터페이스(132)는 HIL 큐(232)에 큐잉된 커맨드들을 리오더링할 수 있다. 홀수 주소 커맨드와 연관된 데이터 크기 및 짝수 주소 커맨드와 연관된 데이터 크기가 모두 정해진 크기 이상인 경우 HIL 큐(232)가 커맨드 리오더링을 수행하여 제1 및 제2 코어(136, 138)로 커맨드를 제공하면 제1 및 제2 코어(136, 138)에서 동시에 포그라운드 동작을 수행할 수 있다.
정해진 조건의 제3 예로, HIL 큐(232)에 마지막으로 큐잉된 커맨드가 페치된 시점으로부터 정해진 기간 이상 도어벨 레지스터(202)의 서브미션 큐 테일 포인터(2022) 값이 변경되지 않는 경우, 호스트 인터페이스(132)는 HIL 큐(232)에 큐잉된 커맨드들을 리오더링할 수 있다. 즉, 호스트 인터페이스(132)는 커맨드 처리의 지연을 방지하기 위해, 상기 제1 및 제2 예의 정해진 조건을 만족하지 못하더라도 마지막 커맨드가 수신된 시점 이후 정해진 기간 이상 새로운 커맨드가 수신되지 않으면 HIL 큐(232)에 큐잉된 커맨드들을 리오더링할 수 있다.
도 4b의 예에서, 호스트 인터페이스(132)는 HIL 큐(232)의 모든 엔트리에 커맨드가 큐잉된 것을 감지하고, 커맨드 리오더링을 수행할 수 있다.
호스트 인터페이스(132)는 정해진 기준에 따라 커맨드 리오더링을 수행할 수 있다. 예를 들어, 호스트 인터페이스(132)는 아이들 상태인 메모리 다이들이 포함된 코어에 커맨드가 먼저 제공되도록 커맨드 리오더링을 수행할 수 있다. 도 4b의 예에서, 제2 FTL 큐(238)가 비어 있으므로 제2 코어(138)와 연관된 제2 메모리 다이들도 아이들(idle) 상태일 수 있다. 호스트 인터페이스(132)는 제7 및 제8 커맨드(HIL_CMD7, HIL_CMD8)가 제1 내지 제6 커맨드(HIL_CMD1 - HIL_CMD6)보다 먼저 제공되도록 커맨드들의 순서를 조정할 수 있다.
도 4c는 본 발명의 실시 예에 따른 커맨드 리오더링이 수행된 경우의 효과를 설명한다.
호스트 인터페이스(132)는 제1 FTL 큐(236)에 큐잉된 커맨드들이 처리 완료될 때까지 대기하지 않고 제7 및 제8 커맨드(HIL_CMD7, HIL_CMD8)를 제2 FTL 큐(238)로 제공할 수 있다. 제2 코어(138)는 아이들 상태로 대기하지 않고, 제1 코어(136)와 동시에 커맨드를 처리할 수 있다. 제2 코어(138)에 의해 제어되는 제2 메모리 다이들도 마찬가지로, 아이들 상태로 대기하지 않고 제1 메모리 다이들과 동시에 동작을 수행할 수 있다. 따라서, 본 발명의 실시 예에 따르면 제1 및 제2 코어(136, 138)의 병렬성(parallelism)이 향상되고 메모리 시스템(110)의 처리량(throughput)이 향상될 수 있다.
한편, 호스트 인터페이스(132)가 커맨드 리오더링을 수행하기 위해 정해진 기준은 도 4b에서 설명된 것으로 제한되지 않는다. 정해진 기준의 다양한 예가 도 5를 참조하여 자세히 설명된다.
도 5는 호스트 인터페이스(132)가 커맨드 리오더링을 수행하기 위해 정해진 기준의 예들을 설명하기 위한 도면이다.
도 5는 복수의 채널들(CH1 - CH4)에 포함된 복수의 메모리 다이들(DIE11 - DIE44)별 다이 상태와 오픈 블록 오프셋을 포함하는 테이블을 도시한다. 다이 상태는 해당 메모리 다이가 동작 중인 상태이면 비지(BUSY), 그렇지 않으면 아이들(IDLE)로 표시된다. 오픈 블록 오프셋은 각 메모리 다이에 포함된 메모리 블록들 중 오픈 블록에서 몇 번째 페이지가 프로그램될 차례인지 나타내는 페이지 오프셋을 지칭한다. 도 5의 예에서 각 메모리 블록들은 100개의 페이지를 포함할 수 있다. 오픈 블록은 메모리 다이의 메모리 블록들 중 프로그램 동작을 수행하기 위해 현재 할당된 메모리 블록으로서, 상기 100개의 페이지가 모두 프로그램되지는 않은 메모리 블록을 지칭할 수 있다.
한편, 도 5는 하나의 채널에 포함된 메모리 다이들끼리는 다이 상태 및 오픈 블록 오프셋이 모두 동일한 경우가 예시된다. 예를 들어, 제1 및 제2 코어(136, 138)는 하나의 채널에 포함된 메모리 다이들끼리의 병렬성을 향상시키기 위해 상기 메모리 다이들의 메모리 블록들을 그룹화하여 슈퍼 블록으로 취급할 수 있다. 하나의 슈퍼블록에 대한 액세스가 수행되는 경우 하나의 채널에 포함된 메모리 다이들끼리는 다이 상태 및 오픈 블록 오프셋이 동일할 수 있다. 그러나, 본 발명은 하나의 채널에 포함된 메모리 다이들의 다이 상태 및 오픈 블록 오프셋이 동일한 경우로 제한되지 않는다.
정해진 기준의 제1 예로, 호스트 인터페이스(132)는 복수의 메모리 다이들(DIE11 - DIE44) 중 아이들 상태의 메모리 다이가 있는 경우, 해당 메모리 다이를 제어하는 코어에 연관된 커맨드가 우선 제공되도록 커맨드 리오더링을 수행할 수 있다. 도 6의 예에서, 호스트 인터페이스(132)는 아이들 상태인 메모리 다이들(DIE31 - DIE44)을 제어하는 제2 코어(138)에 연관된 짝수 주소 커맨드가 우선 제공되도록 HIL 큐(232)의 커맨드들의 커맨드 리오더링을 수행할 수 있다.
만약 복수의 메모리 다이들(DIE11 - DIE44)이 모두 비지 상태인 경우, 호스트 인터페이스(132)는 HIL 큐(232)에 포함된 홀수 주소 커맨드와 짝수 주소 커맨드를 인터리브(interleave)함으로써 커맨드 리오더링을 수행할 수 있다. 구체적으로, 호스트 인터페이스(132)는 정해진 크기의 데이터를 처리하기 위한 홀수 주소 커맨드 및 짝수 주소 커맨드가 교대로 제공되도록 커맨드 리오더링을 수행할 수 있다. 예를 들어, 호스트 인터페이스(132)는 96KB의 데이터에 대한 홀수 주소 커맨드와 96KB 데이터에 대한 짝수 주소 커맨드가 교대로 제공되도록 커맨드 리오더링을 수행할 수 있다.
예를 들어, 상기 정해진 크기는 하나의 코어에서 제어되는 메모리 다이들이 동시에 동작할 때 한 번에 처리될 수 있는 데이터 크기일 수 있다. 구체적으로, 상기 정해진 크기는 하나의 코어에서 제어되는 메모리 다이들의 수와 각 메모리 다이의 페이지 크기에 기초하여 결정될 수 있다.
정해진 기준의 제2 예로, 호스트 인터페이스(132)는 복수의 메모리 다이들(DIE11 - DIE44) 중 오픈 블록의 여유 공간이 가장 많이 남은 메모리 다이를 제어하는 코어에 커맨드가 먼저 제공되도록 커맨드 리오더링을 수행할 수 있다. 도 5의 예에서, 오픈 블록 오프셋이 '0'에 가까울수록 해당 오픈 블록의 여유 공간이 많고, 오픈 블록 오프셋이 '100'에 가까울수록 해당 오픈 블록의 여유 공간이 적을 수 있다.
제1 및 제2 코어(136, 138)는 오픈 블록으로 사용되는 메모리 블록의 모든 페이지가 프로그램되면 해당 메모리 블록을 클로즈드 블록으로 결정하고, 이레이즈 상태의 메모리 블록인 프리 블록들 중 하나를 오픈 블록으로 결정할 수 있다. 프리 블록들 중 하나가 오픈 블록으로 결정되면, 메모리 다이의 프리 블록 개수는 감소할 수 있다. 상기 감소한 프리 블록 개수를 회복하기 위해, 제1 및 제2 코어(136, 138)는 가비지 콜렉션과 같은 백그라운드 동작을 수행할 수 있으며, 상기 백그라운드 동작에 의해 포그라운드 동작 성능이 지연될 수 있다.
오픈 블록의 여유 공간이 상대적으로 적게 남은 메모리 다이에서 프로그램 커맨드가 먼저 처리되는 경우, 상대적으로 적은 양의 데이터가 프로그램된 후 메모리 시스템(110)의 백그라운드 동작이 수행될 수 있다. 예를 들어, 제2 코어(138)가 제3 채널(CH3)에 연결된 메모리 다이들(DIE31 - DIE34)에 프로그램 동작을 먼저 수행하면, 메모리 다이별로 10페이지의 데이터를 프로그램한 후 제2 코어(138)에서 백그라운드 동작이 시작될 수 있다. 제2 코어(138)에서 백그라운드 동작이 시작되면 제2 코어(138)의 처리량이 감소할 수 있다. 제2 코어(138)의 처리량이 감소하면 메모리 시스템(110)의 평균적인 처리량이 감소할 수 있다.
반면에, 오픈 블록의 여유 공간이 가장 많이 남은 메모리 다이에서 커맨드가 먼저 처리되는 경우, 많은 양의 데이터가 먼저 프로그램된 후 메모리 시스템(110)의 백그라운드 동작이 수행될 수 있다. 예를 들어, 제1 코어(136)가 제1 채널(CH1)에 연결된 메모리 다이들(DIE11 - DIE14)에 프로그램 동작을 먼저 수행하면, 메모리 다이별로 100페이지의 데이터를 프로그램한 후 제1 코어(136)에서 백그라운드 동작이 시작될 수 있다.
따라서, 호스트 인터페이스(132)는 오픈 블록의 여유 공간이 가장 많이 남은 메모리 다이들(DIE11 - DIE14)을 제어하는 제1 코어(136)에 연관된 홀수 주소 커맨드가 먼저 처리되도록 커맨드 리오더링을 수행할 수 있다.
한편, 도 5는 복수의 메모리 다이들(DIE11 - DIE44)의 다이 상태 및 오픈 블록 오프셋이 하나의 테이블에 포함된 것으로 도시되었으나 본 발명은 이에 제한되지 않는다. 예를 들어, 호스트 인터페이스(132)는 복수의 메모리 다이들(DIE11 - DIE44)의 다이 상태를 메모리 인터페이스(142)의 레지스터에 액세스하여 획득할 수 있으며, 오픈 블록 오프셋은 제1 및 제2 코어(136, 138)의 맵 데이터로부터 획득할 수 있다.
도 6은 본 발명의 실시 예에 따른 호스트 인터페이스(132)의 동작을 나타낸다.
단계 S602에서, 호스트 인터페이스(132)는 커맨드 리오더링을 수행하기 위해 정해진 조건이 만족되었는지 판단할 수 있다. 상기 정해진 조건의 예는 도 4b를 참조하여 자세히 설명되었다.
단계 S604에서, 호스트 인터페이스(132)는 정해진 기준에 따라 HIL 큐(232)에 큐잉된 커맨드들(HIL_CMDs)의 커맨드 리오더링을 수행할 수 있다. 상기 정해진 기준의 예는 도 4b 및 도 5를 참조하여 자세히 설명되었다.
단계 S606에서, 호스트 인터페이스(132)는 HIL 큐(232)에 큐잉된 커맨드들(HIL_CMDs)을 리오더링된 순서대로 제1 및 제2 코어(136, 138)들로 제공할 수 있다.
본 발명의 실시 예에 따르면, 호스트 인터페이스(132)는 HIL 큐(232)에 큐잉된, 서로 다른 코어에 연관된 커맨드들 간 커맨드 리오더링을 수행하고, 상기 커맨드 리오더링에 의해 결정된 순서대로 HIL 큐(232)에 큐잉된 커맨드들을 제1 및 제2 코어(136, 138)로 제공할 수 있다. 호스트 인터페이스(132)가 상기 커맨드 리오더링을 수행함으로써 제1 또는 제2 FTL 큐(236, 238)의 적체에 따른 HIL 큐(232)의 적체를 방지하고, 제1 및 제2 코어(136, 138)의 병렬성을 향상시킬 수 있다. 따라서, 메모리 시스템(110)의 성능이 향상될 수 있다.
이상에서 설명한 본 발명은 전술한 실시 예 및 첨부된 도면에 의해 한정되는 것이 아니고, 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하다는 것이 본 발명이 속한 기술분야에서 통상의 지식을 가진 자에게 있어 명백할 것이다.
110: 메모리 시스템
130: 컨트롤러

Claims (20)

  1. 복수의 제1 및 제2 메모리 장치들을 제어하는 컨트롤러에 있어서,
    제1 논리 주소들과 연관된 데이터를 저장하도록 상기 제1 메모리 장치들을 제어하는 제1 코어;
    제2 논리 주소들과 연관된 데이터를 저장하도록 상기 제2 메모리 장치들을 제어하는 제2 코어; 및
    호스트로부터 수신된 커맨드들을 큐에 큐잉하고, 상기 큐잉된 커맨드들 중 상기 제1 논리 주소와 연관된 제1 주소 커맨드 및 상기 제2 논리 주소와 연관된 제2 주소 커맨드 간 처리 순서를 상기 제1 및 제2 메모리 장치들의 상태에 기초하여 결정하는 커맨드 리오더링을 수행하고, 상기 결정된 처리 순서에 따라 상기 제1 주소 커맨드를 상기 제1 코어로 제공하고, 상기 제2 주소 커맨드를 상기 제2 코어로 제공하는 호스트 인터페이스
    를 포함하는 컨트롤러.
  2. 제1항에 있어서,
    상기 호스트 인터페이스는
    상기 제1 및 제2 메모리 장치들 중 아이들(idle) 상태의 메모리 장치가 있는 경우, 상기 제1 및 제2 코어 중 해당 메모리 다이를 제어하는 코어에 연관된 커맨드가 우선 제공되도록 상기 커맨드 리오더링을 수행하는
    컨트롤러.
  3. 제2항에 있어서,
    상기 호스트 인터페이스는
    상기 제1 및 제2 메모리 장치들이 모두 비지(busy) 상태인 경우, 상기 큐에 포함된 제1 주소 커맨드와 제2 주소 커맨드를 인터리브(interleave)함으로써 상기 커맨드 리오더링을 수행하는
    컨트롤러.
  4. 제3항에 있어서,
    상기 호스트 인터페이스는
    정해진 크기의 데이터를 처리하기 위한 제1 주소 커맨드와 제2 주소 커맨드를 교대로 제공하도록 상기 큐잉된 커맨드들의 처리 순서를 결정함으로써 상기 제1 주소 커맨드와 제2 주소 커맨드를 인터리브하는
    컨트롤러.
  5. 제4항에 있어서,
    상기 정해진 크기는 상기 제1 및 제2 코어 중 하나의 코어에서 제어되는 메모리 다이들의 수와 각 메모리 다이의 페이지 크기에 기초하는
    컨트롤러.
  6. 제1항에 있어서,
    상기 호스트 인터페이스는
    상기 제1 및 제2 코어 중, 상기 제1 및 제2 메모리 장치들 중 오픈 블록의 여유 공간이 가장 많이 남은 메모리 장치를 제어하는 코어에 커맨드가 먼저 제공되도록 상기 커맨드 리오더링을 수행하는
    컨트롤러.
  7. 제1항에 있어서,
    상기 호스트 인터페이스는
    상기 큐의 모든 엔트리에 커맨드가 큐잉된 경우 상기 커맨드 리오더링을 수행하는
    컨트롤러.
  8. 제1항에 있어서,
    상기 호스트 인터페이스는
    상기 큐에 큐잉된 제1 주소 커맨드와 연관된 데이터 크기 및 제2 주소 커맨드와 연관된 데이터 크기가 모두 정해진 크기 이상인 경우 상기 커맨드 리오더링을 수행하는
    컨트롤러.
  9. 제1항에 있어서,
    상기 호스트 인터페이스는
    호스트로부터 마지막 커맨드가 수신된 시점 이후 정해진 기간 이상 새로운 커맨드를 수신하지 못한 경우 상기 커맨드 리오더링을 수행하는
    컨트롤러.
  10. 제1항에 있어서,
    상기 호스트 인터페이스는
    상기 큐잉된 커맨드들과 연관된 논리 주소들의 모듈로 연산(modulo operation) 결과에 기초하여 상기 논리 주소들을 상기 제1 및 제2 논리 주소들로 분류하는
    컨트롤러.
  11. 제1 논리 주소들과 연관된 데이터를 저장하도록 복수의 제1 메모리 장치들을 제어하는 제1 코어 및 제2 논리 주소들과 연관된 데이터를 저장하도록 복수의 제2 메모리 장치들을 제어하는 제2 코어를 포함하는 컨트롤러의 동작 방법에 있어서,
    호스트로부터 수신된 커맨드들을 큐에 큐잉하는 단계;
    상기 큐잉된 커맨드들 중 상기 제1 논리 주소와 연관된 제1 주소 커맨드 및 상기 제2 논리 주소와 연관된 제2 주소 커맨드 간 처리 순서를 상기 제1 및 제2 메모리 장치들의 상태에 기초하여 결정하는 커맨드 리오더링을 수행하는 단계; 및
    상기 결정된 처리 순서에 따라 상기 제1 주소 커맨드를 상기 제1 코어로 제공하고, 상기 제2 주소 커맨드를 상기 제2 코어로 제공하는 단계
    를 포함하는 동작 방법.
  12. 제11항에 있어서,
    상기 커맨드 리오더링을 수행하는 단계는
    상기 제1 및 제2 메모리 장치들 중 아이들(idle) 상태의 메모리 장치가 있는 경우, 상기 제1 및 제2 코어 중 해당 메모리 다이를 제어하는 코어에 연관된 커맨드가 우선 제공되도록 상기 처리 순서를 결정하는 단계
    를 포함하는 동작 방법.
  13. 제12항에 있어서,
    상기 커맨드 리오더링을 수행하는 단계는
    상기 제1 및 제2 메모리 장치들이 모두 비지(busy) 상태인 경우, 상기 큐에 포함된 제1 주소 커맨드와 제2 주소 커맨드를 인터리브(interleave)하는 단계
    를 더 포함하는 동작 방법.
  14. 제13항에 있어서,
    상기 인터리브하는 단계는
    정해진 크기의 데이터를 처리하기 위한 제1 주소 커맨드와 제2 주소 커맨드를 교대로 제공하도록 상기 큐잉된 커맨드들의 처리 순서를 결정하는 단계
    를 포함하는 동작 방법.
  15. 제14항에 있어서,
    상기 정해진 크기는 상기 제1 및 제2 코어 중 하나의 코어에서 제어되는 메모리 다이들의 수와 각 메모리 다이의 페이지 크기에 기초하는
    동작 방법.
  16. 제11항에 있어서,
    상기 커맨드 리오더링을 수행하는 단계는
    상기 제1 및 제2 코어 중, 상기 제1 및 제2 메모리 장치들 중 오픈 블록의 여유 공간이 가장 많이 남은 메모리 장치를 제어하는 코어에 커맨드가 먼저 제공되도록 상기 큐잉된 커맨드들의 처리 순서를 결정하는 단계
    를 포함하는 동작 방법.
  17. 제11항에 있어서,
    상기 커맨드 리오더링을 수행하는 단계는
    상기 큐의 모든 엔트리에 커맨드가 큐잉된 경우 수행되는
    동작 방법.
  18. 제11항에 있어서,
    상기 커맨드 리오더링을 수행하는 단계는
    상기 큐에 큐잉된 제1 주소 커맨드와 연관된 데이터 크기 및 제2 주소 커맨드와 연관된 데이터 크기가 모두 정해진 크기 이상인 경우 수행되는
    동작 방법.
  19. 제11항에 있어서,
    상기 커맨드 리오더링을 수행하는 단계는
    호스트로부터 마지막 커맨드가 수신된 시점 이후 정해진 기간 이상 새로운 커맨드를 수신하지 못한 경우 수행되는
    동작 방법.
  20. 제11항에 있어서,
    상기 큐잉된 커맨드들과 연관된 논리 주소들의 모듈로 연산(modulo operation) 결과에 기초하여 상기 논리 주소들을 상기 제1 및 제2 논리 주소들로 분류하는 단계
    를 더 포함하는 동작 방법.

KR1020200134059A 2020-09-15 2020-10-16 컨트롤러 및 컨트롤러의 동작방법 KR20220050407A (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020200134059A KR20220050407A (ko) 2020-10-16 2020-10-16 컨트롤러 및 컨트롤러의 동작방법
US17/239,463 US11494318B2 (en) 2020-10-16 2021-04-23 Controller and operation method thereof
CN202110637493.XA CN114371812B (zh) 2020-10-16 2021-06-08 控制器及其操作方法
US17/401,994 US11762590B2 (en) 2020-09-15 2021-08-13 Memory system and data processing system including multi-core controller for classified commands

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200134059A KR20220050407A (ko) 2020-10-16 2020-10-16 컨트롤러 및 컨트롤러의 동작방법

Publications (1)

Publication Number Publication Date
KR20220050407A true KR20220050407A (ko) 2022-04-25

Family

ID=81138655

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200134059A KR20220050407A (ko) 2020-09-15 2020-10-16 컨트롤러 및 컨트롤러의 동작방법

Country Status (3)

Country Link
US (1) US11494318B2 (ko)
KR (1) KR20220050407A (ko)
CN (1) CN114371812B (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220036169A (ko) 2020-09-15 2022-03-22 에스케이하이닉스 주식회사 메모리 시스템 및 데이터 처리 시스템
US11599304B2 (en) * 2020-11-16 2023-03-07 Western Digital Technologies, Inc. Data aggregation in ZNS drive
TWI822386B (zh) * 2022-10-11 2023-11-11 慧榮科技股份有限公司 橋接控制晶片與相關的訊號處理方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8880800B2 (en) * 2011-05-20 2014-11-04 Promise Technology, Inc. Redundant array of independent disks system with inter-controller communication and method of operation thereof
US9911477B1 (en) * 2014-04-18 2018-03-06 Altera Corporation Memory controller architecture with improved memory scheduling efficiency
US10019161B2 (en) 2015-08-31 2018-07-10 Sandisk Technologies Llc Out of order memory command fetching
KR102549611B1 (ko) 2016-04-01 2023-06-30 삼성전자주식회사 스토리지 장치 및 그것의 이벤트 통지 방법
JP2018160155A (ja) 2017-03-23 2018-10-11 東芝メモリ株式会社 記憶装置
US10725835B2 (en) 2017-05-03 2020-07-28 Western Digital Technologies, Inc. System and method for speculative execution of commands using a controller memory buffer
US10466904B2 (en) * 2017-03-24 2019-11-05 Western Digital Technologies, Inc. System and method for processing and arbitrating submission and completion queues
KR20200076491A (ko) * 2018-12-19 2020-06-29 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
KR20200085967A (ko) * 2019-01-07 2020-07-16 에스케이하이닉스 주식회사 데이터 저장 장치 및 그 동작 방법
KR20200114149A (ko) 2019-03-27 2020-10-07 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US11146927B2 (en) * 2019-08-16 2021-10-12 The Boeing Company Aircraft to ground data systems and computing methods
US11269777B2 (en) 2019-09-25 2022-03-08 Facebook Technologies, Llc. Systems and methods for efficient data buffering

Also Published As

Publication number Publication date
US11494318B2 (en) 2022-11-08
US20220121581A1 (en) 2022-04-21
CN114371812A (zh) 2022-04-19
CN114371812B (zh) 2024-04-02

Similar Documents

Publication Publication Date Title
US11494318B2 (en) Controller and operation method thereof
US10860231B2 (en) Memory system for adjusting map segment based on pattern and operating method thereof
US11449418B2 (en) Controller and method for selecting victim block for wear leveling operation
US11762590B2 (en) Memory system and data processing system including multi-core controller for classified commands
US11334493B2 (en) Memory system and operating method thereof
US11513948B2 (en) Controller and memory system
KR20210017481A (ko) 컨트롤러 및 컨트롤러의 동작방법
KR20200059936A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
US20220155995A1 (en) Controller and operating method thereof
US11922062B2 (en) Controller and operating method thereof
US11675537B2 (en) Controller for performing data input/output operation and memory management operation at the same time and operation method thereof
US20220229595A1 (en) Controller and operation method thereof
US11775209B2 (en) Controller and operation method thereof
US11409444B2 (en) Memory system and operation method thereof
CN109542336B (zh) 存储设备及其操作方法
CN113778322A (zh) 存储器***及其操作方法
US11662947B2 (en) Memory system and data processing system performing operation on commands before fetching of commands
KR20200071282A (ko) 메모리 시스템 및 메모리 시스템의 동작방법
US11249686B2 (en) Controller for handling an abort command using a regeneration queue and operation method thereof
US20220156003A1 (en) Controller and operation method thereof
US20220391093A1 (en) Memory system, data processing system including the same, and operating method thereof
KR20210152760A (ko) 컨트롤러 및 메모리 시스템