KR20160114726A - 명령어 큐잉 - Google Patents

명령어 큐잉 Download PDF

Info

Publication number
KR20160114726A
KR20160114726A KR1020167025100A KR20167025100A KR20160114726A KR 20160114726 A KR20160114726 A KR 20160114726A KR 1020167025100 A KR1020167025100 A KR 1020167025100A KR 20167025100 A KR20167025100 A KR 20167025100A KR 20160114726 A KR20160114726 A KR 20160114726A
Authority
KR
South Korea
Prior art keywords
instruction
host
memory system
data
receiving
Prior art date
Application number
KR1020167025100A
Other languages
English (en)
Other versions
KR101702280B1 (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 KR20160114726A publication Critical patent/KR20160114726A/ko
Application granted granted Critical
Publication of KR101702280B1 publication Critical patent/KR101702280B1/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/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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays

Landscapes

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

Abstract

본 발명은 명령어 큐잉을 위한 장치 및 방법을 포함한다. 복수의 실시예는 큐잉된 명령어 요청을 호스트로부터 메모리 시스템에서 수신하는 단계, 메모리 시스템이 메모리 시스템의 명령어 큐에서 명령어를 수신할 준비가 됐음을 나타내는 명령어 응답을 메모리 시스템에서 호스트로 전송하는 단계, 및 상기 명령어 응답을 전송함에 응답하여, 명령어에 대한 명령어 기술어 블록을 호스트로부터 메모리 시스템에서 수신하는 단계를 포함한다.

Description

명령어 큐잉{COMMAND QUEUING}
본 발명은 일반적으로 반도체 메모리 및 방법과 관련되며, 더 구체적으로 명령어 큐잉에 대한 것이다.
일반적으로 메모리 디바이스는 컴퓨터 또는 그 밖의 다른 전자 디바이스에서 내부, 반도체, 집적 회로 및/또는 외부 이동식 디바이스로서 제공된다. 휘발성 및 비휘발성 메모리를 포함하는 여러 다른 유형의 메모리가 존재한다. 휘발성 메모리는 자신의 데이터를 유지하기 위해 전력을 필요로 하고 랜덤-액세스 메모리(RAM), 동적 랜덤 액세스 메모리(DRAM), 및 동기식 동적 랜덤 액세스 메모리(SDRAM) 등을 포함할 수 있다. 비휘발성 메모리는 전력이 공급되지 않을 때 저장된 데이터를 유지할 수 있고 NAND 플래시 메모리, NOR 플래시 메모리, 상 변화 랜덤 액세스 메모리(PCRAM), 저항성 랜덤 액세스 메모리(RRAM), 스핀 토크 트랜스퍼 랜덤 액세스 메모리(STTRAM) 및 자기 랜덤 액세스 메모리(MRAM) 등을 포함할 수 있다.
메모리 디바이스들은 서로 조합되어 메모리 시스템, 가령, 메모리 카드를 가령, 메모리 디바이스를 포함하는 내장형 저장 솔루션으로서, 또는 솔리드 스테이트 드라이브로서 형성할 수 있다. 메모리 시스템, 가령, 메모리 카드가 비휘발성 메모리, 가령, NAND 플래시 메모리 및/또는 NOR 플래시 메모리를 포함하거나, 및/또는 휘발성 메모리, 가령, DRAM 및/또는 SRAM, 그 밖의 다른 다양한 유형의 비휘발성 및 휘발성 메모리를 포함할 수 있다. 플래시 메모리 디바이스는 전하 저장 구조물, 가령, 부동 게이트에 데이터를 저장하는 메모리 셀을 포함할 수 있으며, 다양한 전자 적용예를 위한 비휘발성 메모리로서 사용될 수 있다. 일반적으로 플래시 메모리 디바이스는 높은 메모리 밀도, 높은 신뢰성, 및 낮은 전력 소비율을 가능하게 하는 단일-트랜지스터 메모리 셀을 이용한다.
메모리 시스템은 컴퓨팅 시스템에서 복수의 호스트와 함께 사용되거나 및/또는, 솔리드 스테이트 드라이브가 하드 드라이브에 비해 성능, 크기, 중량, 강건성, 동작 온도 범위, 및 전력 소비량과 관련하여 이점을 가질 수 있기 때문에, 컴퓨팅 시스템을 위한 메인 저장 디바이스로서 하드 디스크 드라이브를 대체하도록 사용되는 휴대용 메모리 또는 내장된 저장 솔루션으로서 사용될 수 있다. 예를 들어, 메모리 시스템은, 이동 부분이 부재함으로써 탐색 시간, 대기 시간, 및 자기 디스크 드라이브와 연관된 그 밖의 다른 전자-기계적 딜레이를 피할 수 있기 때문에 자기 디스크 드라이브에 비교될 때 우등한 성능을 가질 수 있다. 메모리 시스템 제조업자는 비휘발성 메모리를 이용해 내부 배터리 공급장치를 이용하지 않을 수 있어서 드라이브가 더 범용성이고 컴팩트해 질 수 있는 메모리 시스템을 생성할 수 있다.
메모리 시스템은 복수의 메모리 디바이스, 가령, 복수의 메모리 칩을 포함할 수 있다. 해당 분야의 통상의 기술자에게 자명한 바와 같이, 메모리 칩은 복수의 다이 및/또는 논리 유닛(LUN)을 포함할 수 있으며, 가령, 이때 LUN은 하나 이상의 다이일 수 있다. 각각의 다이는 복수의 메모리 어레이 및 주변 회로를 포함할 수 있다. 상기 메모리 어레이는 복수의 물리 페이지로 조직되는 복수의 메모리 셀을 포함할 수 있고, 물리 페이지는 복수의 블록으로 조직될 수 있다. 플래시 메모리 셀의 어레이가 한 번에 하나의 페이지씩 프로그램될 수 있고 한 번에 하나의 블록씩 소거될 수 있다. 메모리 시스템 상에서 수행되는 동작, 가령, 읽기, 쓰기, 및 소거 동작이 메모리 시스템에서의 메모리 디바이스에 의한 동작을 관리하기 위해 메모리 시스템에서 이용 가능한 자원 양에 의해 제한될 수 있다.
도 1은 본 발명의 복수의 실시예에 따르는 메모리 시스템을 포함하는 컴퓨팅 시스템의 형태로 된 장치의 블록도이다.
도 2는 본 발명의 복수의 실시예에 따르는 메모리 시스템에서 명령어 큐잉을 위한 방법의 예시를 도시한다.
도 3은 본 발명의 복수의 실시예에 따르는 명령어 블록 기술어의 예시를 도시한다.
도 4a-4d는 본 발명의 복수의 실시예에 따르는 메모리 시스템 내 명령어 큐 내 명령어를 실행하기 위한 방법의 예시를 도시한다.
도 5는 본 발명의 복수의 실시예에 따르는 데이터 트랜스퍼 요청에 포함되는 데이터 트랜스퍼 요청 헤더의 예시를 도시한다.
도 6은 본 발명의 복수의 실시예에 따르는 메모리 시스템에서의 명령어 큐잉 및 실행을 위한 방법의 하나의 예시를 도시한다.
본 발명은 명령어 큐잉(command queuing)을 위한 장치 및 방법을 포함한다. 복수의 실시예는 호스트로부터 메모리 시스템에서 큐잉된 명령어 요청을 수신하는 것, 메모리 시스템이 메모리 시스템의 명령어 큐에 명령어를 수신할 준비가 됐음을 나타내는 명령어 응답을 메모리 시스템으로부터 호스트로 전송하는 것, 및 상기 명령어 응답을 전송함에 응답하여, 메모리 시스템에서 호스트로부터 명령어에 대한 명령어 기술어 블록(command descriptor block)을 수신하는 것을 포함한다.
본 발명의 복수의 실시예가 임베디드 멀티미디어카드(e.MMC)(embedded MultiMediaCard) 프로토콜을 이용해 제어되는 명령어들에 대한 명령어 큐잉 및 동시 명령어 실행을 포함할 수 있다. 새로운 명령어 클래스가 도입되고 e.MMC 프로토콜에서의 명령어에 추가되어, e.MMC 프로토콜을 이용하는 동안 명령어 큐잉 및 동시 명령어 실행을 허용할 수 있다. 큐잉된 명령어 요청 명령어, 가령, CMD(43), 트랜스퍼 준비 명령어, 가령, CMD(44), 작업 관리 기능 요청 명령어, 가령, CMD(45), 데이터 수신 명령어, 가령, CMD(46), 및 데이터 전송 명령어, 가령, CMD(47)가 e.MMC 프로토콜에 명령어 클래스로서 추가될 수 있다. 이들 명령어는 e.MMC 프로토콜에 포함되어, 메모리 시스템의 e.MMC 상태 머신을 약간만 변경하거나 메모리 시스템의 e.MMC 상태 머신에 하나의 상태 변환만 추가하여 명령어 큐잉 및 동시 명령어 실행을 허용할 수 있다.
본 명세서에서 사용될 때, "복수의" 어떤 것은 이러한 것이 하나 이상 있음을 지칭할 수 있다. 예를 들어, 복수의 메모리 셀은 하나 이상의 메모리 셀을 지칭할 수 있다. 덧붙여, 지시자 "M" 및 "N"은, 본 명세서에서 사용될 때, 특히, 도면의 도면 부호와 관련하여, 이렇게 지시된 복수의 특정 특징이 본 발명의 복수의 실시예에 포함될 수 있음을 나타낸다.
본 명세서의 도면은 첫 번째 숫자가 도면 번호에 대응하고, 나머지 숫자가 도면에서 요소 또는 구성요소를 식별하는 넘버링 규칙을 따른다. 서로 다른 도면들 간 유사한 요소 또는 구성요소가 유사한 숫자의 사용에 의해 식별될 수 있다. 예를 들어, 104는 도 1의 요소 "04"를 지칭할 수 있고, 유사한 요소가 도 2에서 204로 지칭될 수 있다.
도 1은 본 발명의 복수의 실시예에 따라 메모리 시스템(104)을 포함하는 컴퓨팅 시스템(100)의 형태로 된 장치의 블록도이다. 본 명세서에서 사용될 때, 메모리 시스템(104), 제어기(125), 또는 메모리 디바이스(130-1, ..., 130-N)가 하나의 "장치"로 개별적으로 간주될 수 있다. 메모리 시스템(104)은 복수의 메모리 시스템 중 임의의 메모리 시스템, 가령, 메모리 카드일 수 있고, 호스트 인터페이스(106), 제어기(125), 및 메모리 시스템(104)에 대한 저장 볼륨을 제공하는 복수의 메모리 디바이스(130-1, ..., 130-N), 가령, 솔리드 스테이트 메모리 디바이스, 가령, NAND 플래시 디바이스를 포함할 수 있다. 메모리 시스템(104)은 호스트 인터페이스(106), 가령, 뒷판 또는 버스를 통해 호스트(102)로 통신 가능하게 연결될 수 있다.
호스트(102)의 예시는 랩톱 컴퓨터, 개인 컴퓨터, 디지털 카메라, 디지털 레코딩 및 재생 디바이스, 모바일 전화기, PDA, 메모리 카드 판독기, 인터페이스 허브 및 그 밖의 다른 호스트 시스템을 포함할 수 있다. 메모리 시스템(104)은 SATA(serial advanced technology attachment), PCIe(peripheral component interconnect express), USB(universal serial bus), 섬유 채널, 이더넷 연결, 또는 그 밖의 다른 연결기 및 인터페이스를 포함할 수 있는 호스트 인터페이스(106)를 통해 호스트(102)로 연결된 클라우드 저장 네트워킹 인프라구조의 일부일 수 있다. 그러나 일반적으로 호스트 인터페이스(106)는 가령, 명령어 라인 및/또는 데이터 버스 상에서 메모리 시스템(104)과 호스트(102) 간에 제어, 주소, 데이터, 및 그 밖의 다른 신호를 전달하기 위한 인터페이스를 제공할 수 있다.
호스트(102)는 메모리 및 버스 제어부로 통신 가능하게 연결되는 복수의 프로세서, 가령, 병렬 프로세서, 코-프로세서(co-processor) 등을 포함할 수 있다. 복수의 프로세서는 복수의 마이크로프로세서 또는 그 밖의 다른 일부 유형의 제어 회로, 가령, 복수의 ASIC(application-specific integrated circuit)일 수 있다. 컴퓨팅 시스템(100)의 그 밖의 다른 구성요소는 프로세서를 더 가질 수 있다. 메모리 및 버스 제어부는 예를 들어, 메모리 및 상기 메모리에 통신 가능하게 직접 연결된 그 밖의 다른 구성요소, 예를 들어, 동적 랜덤 액세스 메모리(DRAM), 그래픽 사용자 인터페이스, 및/또는 그 밖의 다른 사용자 인터페이스, 가령, 디스플레이 모니터, 키보드, 마우스 등을 가질 수 있다.
제어기(125)는 메모리, 가령, 메모리 디바이스(130-1 내지 130-N)와 통신하여, 데이터 읽기, 쓰기, 소거 동작 및 그 밖의 다른 동작을 제어할 수 있다. 제어기(125)는, 예를 들어, 하드웨어 및/또는 펌웨어의 형태로 된 복수의 구성요소, 가령, 가령, 하나 이상의 집적 회로/로직, 및/또는 메모리로의 액세스를 제어 및/또는 호스트(102)와 메모리 간 데이터 트랜스퍼를 촉진하기 위한 소프트웨어를 포함할 수 있다.
도 1에 도시된 예시에서, 제어기(125)는 명령어 큐(126) 및 상태 레지스터(127)를 포함한다. 그러나 제어기(125)는 본 발명의 실시예를 모호하게 하지 않도록 도시되지 않은 그 밖의 다른 다양한 구성요소를 포함할 수 있다. 또한, 명령어 큐(126) 및 상태 레지스터(127)가 제어기(125) 상에 상주하는 것으로 도시되더라도, 일부 실시예에서, 명령어 큐(126) 및 상태 레지스터(127)가 시스템(100) 내 임의의 곳에, 가령, 독립적인 구성요소로서 위치하거나 시스템의 서로 다른 구성요소 상에 위치할 수 있다.
명령어 큐(126)는 실행되도록 호스트(102)로부터 메모리 시스템(104)에 의해 수신된 복수의 명령어를 포함할 수 있다. 상기 명령어 큐(126)는 명령어 큐(126) 내 각각의 명령어에 대해 명령어 기술어 블록에 포함되는 명령어와 연관된 정보를 포함할 수 있다. 상태 레지스터(127)는 명령어 큐(126) 내 각각의 명령어에 대해, 상태 정보, 가령, 작업 휴면, 작업 활성화, 작업 완료, 작업 오류, 및/또는 작업 중단을 저장하는 레지스터일 수 있다. 상기 명령어 큐(126) 및 상태 레지스터(127)는 휘발성 메모리 셀, 가령, DRAM 메모리 셀, 및/또는 비휘발성 메모리, 가령, 플래시, RRAM, MRAM, STTRAM, 및/또는 PCRAM 메모리 셀을 포함하여, 명령어와 연관된 정보를 저장할 수 있다. 명령어 큐(126) 내 명령어의 실행 동안 호스트로부터 수신된 데이터가, 메모리 디바이스(130-1 내지 130-N)에 저장되기 전에, 에러 보정 코드(ECC)(error correction code) 동작이 ECC 모듈에 의해 데이터에 대해 수행되게 할 수 있다.
메모리 시스템(104)은 메모리 디바이스(130-1, ..., 130-N)와 제어기(125) 간에 다양한 신호 및/또는 명령어, 가령, 데이터 신호, 제어 신호, 및/또는 주소 신호 등을 전송/수신하기 위한 버스(120)를 포함한다. 도 1에 도시된 예시가 단일 버스(120)를 포함하더라도, 일부 실시예에서 메모리 시스템(104)은 복수의 버스, 가령, 채널, 예컨대, 복수의 개별 데이터 버스, 제어 버스 및/또는 주소 버스를 포함할 수 있다. 버스(120)는 복수의 메모리 디바이스(130-1, ..., 130-N)에 의해 공유되고 다양한 유형의 버스 구조, 비제한적 예를 들면, ONFI(Open NAND Flash Interface)와 관련된 버스 구조를 가질 수 있다. 또한 버스(120)는 다양한 유형의 버스 구조, 비제한적 예를 들면, 컴팩트 플래시 인터페이스(Compact Flash Interface), MMC(Multimedia Card), SD(Secure Digital), CE-ATA(consumer electronics advanced technology attachment), ISA(Industrial Standard Architecture), MCA(Micro-Channel Architecture), EISA(Extended ISA), IDE(Intelligent Drive Electronics), VLB(VESA Local Bus), PCI(Peripheral Component Interconnect), 카드 버스(Card Bus), USB(Universal Serial Bus), AGP(Advanced Graphics Port), PCMCIA(Personal Computer Memory Card International Association bus), 파이어와이어(IEEE 1394), 및 SCSI(Small Computer Systems Interface)를 포함할 수 있다. 버스(120)는 예를 들어 하드와이어링된 공유 물리 버스일 수 있다.
도 1에 도시된 컴퓨팅 시스템(100)은 이러한 시스템의 하나의 예시이나, 본 발명의 실시예는 도 1에 도시된 구성에 한정되지 않는다.
도 1에 도시된 바와 같이, 메모리 디바이스(130-1, ..., 130-N)는 메모리 시스템(104)에 대한 저장 볼륨을 제공하는 복수의 메모리 어레이(112-1, 112-2, ..., 112-M)를 포함할 수 있는 복수의 다이 및/또는 칩을 포함할 수 있다. 메모리 어레이(112-1, 112-2, ..., 112-M)는 주변 회로를 포함할 수 있다. 복수의 실시예에서, 메모리 어레이(112-1, 112-2, ..., 112-M)는 호스트 인터페이스(106)를 통해 호스트(102)로부터 명령어를 독립적으로 실행 및/또는 호스트로 상태를 전송할 수 있는 메모리 시스템(104)의 최소 구성요소일 수 있다. 상기 메모리 어레이(112-1, 112-2, ..., 112-M)는 가령, NAND 아키텍처를 갖는 플래시 메모리 어레이를 포함할 수 있다. 그러나 실시예는 특정 유형의 메모리 어레이 또는 어레이 아키텍처에 한정되지 않으며 RRAM, MRAM, STTRAM, 및/또는 PCRAM 메모리 셀을 갖는 메모리 어레이를 포함할 수 있다.
도 1에 도시된 실시예는 본 발명의 실시예를 모호하게 하지 않도록 도시되지 않은 추가 회로, 로직, 및/또는 구성요소를 포함할 수 있다. 예를 들어, 메모리 디바이스(130-1, ..., 130-N)는 I/O 회로를 통해 I/O 커넥터를 통해 제공되는 주소 신호를 래치(latch)하기 위한 주소 회로를 포함할 수 있다. 행 디코더 및 열 디코더에 의해 신호가 수신 및 디코딩되어 메모리 시스템(102)을 액세스할 수 있다.
도 2는 본 발명의 복수의 실시예에 따라 메모리 시스템에서의 명령어 큐잉을 위한 방법의 예시를 도시한다. 도 2에서, 큐잉된 명령어 요청(240-1), 가령, CMD(43)가 호스트(202)로부터 메모리 시스템(204)으로 전송될 수 있다. 큐잉된 명령어 요청(240-1)이 호스트(202)가 메모리 시스템(204)이 메모리 시스템(204) 내 명령어 큐에 추가할 명령어를 메모리 시스템(204)으로 전송하기를 원한다고 메모리 시스템(204)에게 나타낼 수 있다. 큐잉된 명령어 요청을 수신함에 응답하여 메모리 시스템(204)은 명령어 응답(242-1)을 호스트에게 전송할 수 있다. 상기 명령어 응답(242-1)은 1로 설정되어, 메모리 시스템(204)이 명령어 큐에 명령어를 수신할 준비가 되어 있지 않음, 가령, 명령어 큐가 가득 찼음을 나타내는 큐 비지 비트(큐 비지 비트)를 포함할 수 있다. 호스트(202)가 1로 설정된 큐 비지 비트와 함께 명령어 응답(242-1)을 수신할 때, 호스트(202)는 메모리 시스템(204)으로 명령어 블록 기술어를 다시 전송하지 않는다. 복수의 실시예에서, 메모리 시스템(204)이 0으로 설정된 큐 비지 비트와 함께 명령어 응답을 다시 전송할 때까지 호스트(202)는 복수의 큐잉된 명령어 요청을 메모리 시스템(204)으로 전송할 수 있다. 예를 들어, 일정 시간 주기 후, 호스트(202)는 메모리 시스템(204)으로 큐잉된 명령어 요청(240-1)과 동일한 정보를 포함하는 또 다른 큐잉된 명령어 요청(240-P)을 전송할 수 있다. 메모리 시스템(204)의 명령어 큐가 명령어 큐에 추가할 명령어를 수신할 준비가 된 경우, 메모리 시스템(204)은 0으로 설정되어, 메모리 시스템(204)이 명령어 큐에 명령어를 추가할 준비가 됐음을 나타내는 큐 비지 비트와 함께 명령어 응답(242-0)을 호스트(202)로 전송할 수 있다. 호스트(202)는 명령어 기술어 블록(244)을 메모리 시스템(204)으로 전송하고 메모리 시스템(204)은 명령어 기술어 블록(244)에 기술된 명령어를 명령어 큐에 위치시킨다. 명령어 기술어 블록(244)은 호스트(202) 및 메모리 시스템(204)이 명령어를 실행시킬 준비가 될 때 명령어를 실행시킬 수 있도록 하는 명령어에 대한 정보를 포함한다.
복수의 실시예에서, 호스트(202)는 작업 관리 기능 요청 명령어, 가령, CMD(45)를 메모리 시스템(204)으로 전송할 수 있다. 상기 작업 관리 기능 요청 명령어는 상태 레지스터, 가령, 도 1의 상태 레지스터(127)를 체크하여, 명령어 큐, 가령, 도 1의 명령어 큐(126) 내 각각의 명령어의 상태를 결정할 수 있다. 메모리 시스템(204)은 명령어 큐의 각각의 명령어의 상태를 호스트(202)로 반환할 수 있다. 복수의 실시예에서, 작업 관리 기능 요청 명령어는 명령어 큐를 중단시키기 위한 지시자와 함께 호스트(202)로부터 메모리 시스템(204)으로 전송될 수 있음으로써 명령어 큐 내 각각의 명령어가 메모리 시스템(204)에 의해 중단된다. 또한 중단 명령어, 가령, CMD(12) 및/또는 높은 우선순위 인터럽트(HPI) 명령어가 호스트(202)로부터 메모리 시스템(204)으로 전송되며, 메모리 시스템(204)이 명령어 큐를 중단하게 할 것이다.
복수의 실시예에서, 호스트가 복수의 큐잉된 명령어 요청을 메모리 시스템으로 전송할 때 복수의 명령어가 명령어 큐에 추가될 수 있고, 그 후 명령어 큐가 명령어를 수신할 준비가 됐음을 나타내는 복수의 명령어 응답을 수신함에 응답하여 복수의 명령어 기술어 블록이 메모리 시스템에 추가될 수 있다. 명령어 라인 상으로 호스트로부터 복수의 큐잉된 명령어 요청이 수신되어, 명령어 큐로부터의 명령어가 데이터 버스 상에서 메모리 시스템에서 실행되는 동안, 큐잉된 명령어 요청이 메모리 시스템에 의해 수신되고 메모리 시스템에 의해 응답될 수 있다.
도 3은 본 발명의 복수의 실시예에 따르는 명령어 블록 기술어(344)의 일례를 도시한다. 도 3에서, 명령어 블록 기술어(344)는 명령어와 연관된 정보를 제공하는 복수의 필드를 포함하며, 이에 따라 명령어가 명령어 큐 내에 위치되고 명령어 블록 기술어(344)에 포함된 정보에 따라 실행될 수 있다. 명령어 블록 기술어는 32 바이트, 가령, 그 밖의 다른 수의 바이트를 포함할 수 있다. 이 예시에서, 명령어 블록 기술어(344)는 32 바이트를 포함할 수 있으며, 여기서 바이트0은 명령어 동작 코드(341)와 연관되며, 바이트1은 명령어 우선순위 정보(343)와 연관되고, 바이트2는 예약되며, 바이트3은 명령어 작업 태그(345)와 연관되고, 바이트4 내지 7은 명령어 인자(346)와 연관되며, 바이트8 내지 11은 명령어 시작 주소(348)와 연관되며, 바이트12 내지 13은 예약되고, 바이트14 내지 15는 명령어 블록 카운트(349)와 연관되며, 바이트16 내지 31는 예약된다. 예를 들어, 명령어 동작 바이트(341)는 읽기 명령어에 대응하는 01h의 값으로 설정될 수 있다. 명령어 동작 바이트(341)는 쓰기 명령어에 대응하는 02h의 값으로 설정될 수 있다. 명령어 우선순위 정보(343)는 명령어 큐 내 실행 우선순위를 나타낼 수 있다. 명령어 우선순위 정보(343)의 바이트는 명령어가 우선순위 없이 명령어 큐에 배치되는 단순 우선순위에 대응하는 00h의 값으로 설정될 수 있다. 명령어 우선순위 정보(343)의 바이트는, 메모리 시스템이 명령어를 수신했을 때를 기초로 연대순으로 명령어가 실행되도록 명령어가 명령어 큐 내에 배치되는 우선순위에 대응하는 01h의 값으로 설정될 수 있다. 명령어 우선순위 정보(343)의 바이트는, 명령어가 다음으로 실행되는 명령어인 헤드-오브-큐(head-of-queue) 우선순위에 대응하는 02h의 값으로 설정될 수 있다. 명령어 작업 태그(345)의 바이트는, 명령어 큐 내 타 명령어로부터 명령어를 구별하도록 사용되는 고유의 식별자에 대응할 수 있다. 명령어 작업 태그 바이트(345)는 00h 내지 FFh의 범위의 값에 설정될 수 있다. 명령어 인자(346), 가령, 신뢰할만한 쓰기 또는 강제된 프로그래밍(forced programming) 요청, 명령어 시작 주소(348), 및 명령어 블록(349) 카운트가 e.MMC 프로토콜에 따르는 값으로 설정될 수 있다.
복수의 실시예에서, 명령어 기술어 블록은 임의의 수의 바이트, 가령, 32 미만 바이트를 포함할 수 있다. 예를 들어, 일부 정보, 가령, 명령어 우선순위, 명령어 태그, 작업 속성, 명령어 인자 및/또는 블록 카운트, 그 밖의 다른 정보가 큐잉된 명령어 요청에 포함될 때, 명령어 기술어 블록이 32 미만 바이트를 포함할 수 있다.
도 4a-d는 본 발명의 복수의 실시예에 따라 메모리 시스템(404) 내 명령어 큐 내 명령어를 실행하기 위한 방법의 예시를 도시한다. 도 4a에서, 호스트(402)가 메모리 시스템(404) 내 명령어 큐로 하나 이상의 명령어를 전송했으면, 호스트(402)는 호스트(402)가 데이터를 송신 또는 수신할 준비가 될 때 트랜스퍼 준비 명령어(450), 가령, CMD(44)를 메모리 시스템(404)으로 전송할 수 있다. 상기 메모리 시스템(404)은 트랜스퍼 준비 명령어(450)를 수신함에 응답하여 데이터 트랜스퍼 요청(452-0)을 호스트(402)로 전송할 수 있다. 데이터 트랜스퍼 요청(452-0)이 다음으로 실행될 준비가 된 명령어 큐 내 명령어에 대응할 수 있다. 복수의 실시예에서, 메모리 시스템(404)이 데이터를 전송 또는 수신할 준비가 되어 있지 않을 때 데이터 트랜스퍼 요청이 부정 응답을 제공하고 데이터 트랜스퍼를 요청하지 않을 수 있다. 복수의 실시예에서, 명령어/응답 신호를 이용하고 데이터 버스를 이용하지 않으면서, 데이터 요청이 전달될 수 있다. 데이터 트랜스퍼 요청(452-0)은 명령어를 실행할 때 데이터 트랜스퍼의 방향을 나타내는 방향 비트를 포함할 수 있다. 예를 들어, 1로 설정된 방향 비트는 명령어가 데이터가 호스트에서 메모리 시스템으로 전송되는 쓰기 명령어임을 나타낸다. 데이터 트랜스퍼 요청(452-0)이 명령어 큐로부터의 어느 명령어가 실행되는지를 식별하기 위한 명령어 태그 필드를 포함할 수 있고 또한 데이터의 어느 부분이 트랜스퍼되어야 하는지를 나타내기 위해 데이터 오프셋 필드 및 데이터 크기 필드를 포함할 수 있다. 도 4a에서, 트랜스퍼 준비 명령어를 수신함에 응답하여 전송된 데이터 트랜스퍼 요청(452-0)이 0으로 설정된 방향 비트를 포함하며, 이는 명령어가 데이터가 메모리 시스템에서 호스트로 전송되는 읽기 명령어임을 나타낸다. 데이터 트랜스퍼 요청(452-0)에서 0으로 설정되는 방향 비트에 의해 메모리 시스템(404)은 버스의 제어를 유지하고 명령어에서 요청된 데이터 읽기를 메모리 시스템(404)에서 호스트(402)로 전송한다. 상기 메모리 시스템(404)은 데이터 트랜스퍼 요청의 방향 비트가 0으로 설정될 때 데이터 전송 상태로 유지되고, 따라서 복수의 실시예에서, 0으로 설정된 방향 비트를 갖는 데이터 트랜스퍼 요청이 메모리 시스템(404)의 상태 변화를 야기하지 않는다. 복수의 실시예에서, 메모리 시스템은 메모리 시스템(404)이 0으로 설정된 방향 비트와 함께 데이터 트랜스퍼 요청을 전송할 때 메모리 시스템(404)이 데이터 전송 상태를 유지하도록 구성될 수 있다.
도 4b에서, 호스트(402)가 메모리 시스템(404) 내 명령어 큐에 하나 이상의 명령어를 전송하면, 호스트(402)가 데이터를 송신 또는 수신할 준비가 될 때 호스트(402)는 트랜스퍼 준비 명령어(450), 가령, CMD(44)를 메모리 시스템(404)으로 전송할 수 있다. 메모리 시스템(404)은 트랜스퍼 준비 명령어(450)를 수신함에 응답하여 명령어의 실행 동안 데이터 트랜스퍼의 방향을 나타내도록 방향 비트를 포함하는 데이터 트랜스퍼 요청(452-1)을 호스트(402)로 전송할 수 있다. 복수의 실시예에서, 메모리 시스템(404)이 데이터를 전송 또는 수신할 준비가 되지 않은 경우, 데이터 트랜스퍼 요청은 부정 응답을 제공하고 데이터 트랜스퍼를 요청하지 않을 수 있다. 복수의 실시예에서, 데이터 트랜스퍼 요청은 명령어/응답 신호를 이용하고 데이터 버스를 이용하지 않으면서 전달될 수 있다. 도 4b에서, 트랜스퍼 준비 명령어를 수신함에 응답하여 전송된 데이터 트랜스퍼 요청(452-1)이 쓰기 명령어에 대응하는 1로 설정된 방향 비트를 포함한다. 상기 데이터 트랜스퍼 요청(452-1)은 명령어 큐로부터의 어느 명령어가 실행되는지를 식별하기 위한 명령어 태그 필드를 포함할 수 있고, 또한 데이터의 어느 부분이 트랜스퍼되어야 하는지를 나타내기 위해 데이터 오프셋 필드 및 데이터 크기 필드를 포함할 수 있다. 데이터 트랜스퍼 요청(452-1)에서 1로 설정된 방향 비트에 의해 호스트(402)는 버스를 제어하고 명령어에서 요청된 데이터 쓰기를 호스트(402)로부터 메모리 시스템(404)으로 전송할 수 있다. 데이터 트랜스퍼 요청(452-1)의 방향 비트가 1로 설정될 때 메모리 시스템(404)은 데이터 전송 상태(Sending Data state)에서 데이터 수신 상태(Receive Data state)로 전환된다. 복수의 실시예에서, 메모리 시스템(404)이 1로 설정된 방향 비트와 함께 데이터 트랜스퍼 요청을 전송할 때 메모리 시스템(404)이 데이터 전송 상태에서 데이터 수신 상태로 변경되도록 메모리 시스템의 상태 머신이 구성될 수 있다.
도 4c에서, 호스트(402)가 하나 이상의 명령어를 메모리 시스템(404) 내 명령어 큐로 전송하면, 호스트(402)가 데이터를 송신 또는 수신할 준비가 될 때, 호스트(402)는 트랜스퍼 준비 명령어(450), 가령, CMD(44)를 메모리 시스템(404)으로 전송할 수 있다. 상기 메모리 시스템(404)은 트랜스퍼 준비 명령어(450)를 수신함에 응답하여, 명령어의 실행 동안 데이터 트랜스퍼의 방향을 나타내기 위한 방향 비트를 포함하는 데이터 트랜스퍼 요청(452-0)으로, 호스트(402)에게 응답할 수 있다. 복수의 실시예에서, 메모리 시스템(404)이 데이터를 전송 또는 수신할 준비가 되어 있지 않은 경우 데이터 트랜스퍼 요청은 부정 응답을 제공할 수 있으며 데이터 트랜스퍼를 요청하지 않을 수 있다. 복수의 실시예에서, 명령어/응답 신호를 이용하고 데이터 버스를 이용하지 않으면서 데이터 트랜스퍼 요청이 전달될 수 있다. 도 4c에서, 트랜스퍼 준비 명령어(450)를 수신함에 응답하여 전송된 데이터 트랜스퍼 요청(452-0)이, 읽기 명령어에 대응하는 0으로 설정된 방향 비트를 포함한다. 상기 데이터 트랜스퍼 요청(452-0)이 명령어 큐로부터의 어느 명령어가 실행되는지를 식별하기 위해 명령어 태그 필드를 포함할 수 있고 또한 데이터의 어느 부분이 트랜스퍼되어야 하는지를 나타내기 위해 데이터 오프셋 필드 및 데이터 크기 필드를 포함할 수 있다. 0으로 설정된 방향 비트를 갖는 데이터 트랜스퍼 요청(452-0)을 수신함에 응답하여, 호스트(402)는 데이터 명령어(458), 가령, CMD(47)를 메모리 시스템(404)으로 전송한다. 데이터 전송 명령어(458)가 메모리 시스템(404)에게 호스트(402)로 데이터를 전송할 것을 요청하며, 따라서 메모리 시스템(404)은 트랜스퍼 상태(Transfer state)에서 데이터 전송 상태(Sending Data state)로 전환되며 메모리 시스템(404)이 버스를 제어하고 메모리 시스템(404)으로부터의 명령어에서 요청된 데이터 읽기를 호스트(402)로 전송한다. 모든 데이터가 전송되면, 메모리 시스템(404)은 데이터 전송 상태로부터 트랜스퍼 상태로 다시 되돌아 온다. 복수의 실시예에서, 메모리 시스템(404)이 데이터 전소 요청(452-0)을 송신한 후 데이터 전송 상태에서 트랜스퍼 상태로 변하고, 메모리 시스템(404)이 호스트로부터 데이터 전송 명령어(458)를 수신할 때 상기 트랜스퍼 상태에서 데이터 전송 상태로 변하도록, 메모리 시스템의 상태 머신이 구성될 수 있다.
도 4d에서, 호스트(402)가 하나 이상의 명령어를 메모리 시스템(404)의 명령어 큐로 전송하면, 호스트(402)가 데이터를 송신 또는 수신할 준비가 될 때 호스트(402)는 트랜스퍼 준비 명령어(450), 가령, CMD(44)를 메모리 시스템(404)으로 전송할 수 있다. 메모리 시스템(404)은 트랜스퍼 준비 명령어(450)를 수신함에 응답하여, 명령어의 실행 동안 데이터 트랜스퍼의 방향을 나타내기 위한 방향 비트를 포함하는 데이터 트랜스퍼 요청(452-1)을 호스트(402)로 전송할 수 있다. 복수의 실시예에서, 메모리 시스템(404)이 데이터를 전송 또는 수신할 준비가 되어 있지 않은 경우, 데이터 트랜스퍼 요청은 부정 응답을 제공할 수 있고 데이터 트랜스퍼를 요청하지 않을 수 있다. 복수의 실시예에서, 명령어/응답 신호를 이용하고 데이터 버스를 이용하지 않으면서 데이터 트랜스퍼 요청이 전달될 수 있다. 도 4d에서, 트랜스퍼 준비 명령어(450)를 수신함에 응답하여 전송된 데이터 트랜스퍼 요청(452-1)이 쓰기 명령어에 대응하는 1로 설정된 방향 비트를 포함한다. 데이터 트랜스퍼 요청(452-1)은 명령어 큐로부터의 어느 명령어가 실행되는지를 식별하기 위해 명령어 태그 필드를 포함할 수 있고 데이터의 어느 부분이 트랜스퍼되어야 하는지를 나타내기 위해 데이터 오프셋 필드 및 데이터 크기 필드를 더 포함할 수 있다. 1에 설정된 방향 비트와 함께 데이터 트랜스퍼 요청(452-1)을 수신함에 응답하여, 호스트(402)는 데이터 수신 명령어(460), 가령, CMD(46)를 메모리 시스템(404)으로 전송한다. 데이터 수신 명령어(460)는 메모리 시스템(404)이 호스트(402)로부터 데이터를 수신할 것임을 메모리 시스템(404)에게 지시하며, 따라서 메모리 시스템(404)은 트랜스퍼 상태에서 데이터 수신 상태로 전환되고 메모리 시스템(404)은 호스트(402)로 하여금 버스를 제어하게 하며 명령어에서 요청된 데이터 쓰기를 호스트(402)로부터 메모리 시스템(404)으로 전송하게 한다. 모든 데이터가 트랜스퍼되면, 메모리 시스템(404)은 데이터 수신 상태에서 트랜스퍼 상태로 다시 되돌아 온다.
복수의 실시예에서, 트랜스퍼 데이터 요청을 전송한 후 메모리 시스템(404)이 데이터 전송 상태에서 트랜스퍼 상태로 변하고 그 후 메모리 시스템(404)이 호스트(402)로부터 데이터 수신 명령어(460)를 수신할 때 트랜스퍼 상태에서 데이터 수신 상태로 변하도록 메모리 시스템의 상태 머신이 설정될 수 있다.
복수의 실시예에서, 명령어의 실행 동안 에러가 발생할 때, 명령어가 실패한다. 메모리 시스템이 호스트로부터의 추가 큐잉된 명령어 요청에, 명령어의 실행 중에 에러가 있었음을 나타내는 에러 비트를 갖는 명령어 응답으로 응답할 수 있다. 또한 호스트는 명령어 큐 내 명령어의 상태에 대한 업데이트를 수신하기 위한 작업 관리 기능 요청 명령어로 메모리 시스템에게 질의할 수 있다.
도 5는 본 발명의 복수의 실시예에 따라 데이터 트랜스퍼 요청에 포함된 데이터 트랜스퍼 요청 헤더(552)의 예시를 도시한다. 도 5에서, 데이터 트랜스퍼 요청 헤더(552)가 명령어와 연관된 정보를 제공하는 복수의 필드를 포함함으로써, 명령어가 호스트에 의해 식별될 수 있고 호스트 및 메모리 디바이스에 의해 실행될 수 있다. 데이터 트랜스퍼 요청 헤더는 가령 32비트 또는 그 밖의 다른 수의 비트를 포함할 수 있다. 데이터 트랜스퍼 요청 헤더(552)는 32바이트를 포함하며, 여기서 바이트0 내지 1은 예약되고, 바이트2는 트랜스퍼 방향(551)과 연관되며, 바이트3은 명령어 작업 태그(545)와 연관되고, 바이트4 내지 11은 예약되며, 바이트12 내지 13은 데이터 버퍼 오프셋(553)과 연관되며, 바이트14 내지 15는 명령어 트랜스퍼 길이(555)와 연관되고, 바이트16 내지 31은 예약된다. 트랜스퍼 방향(551) 바이트는 읽기 명령어에 대응하는 00h의 값으로 설정될 수 있다. 트랜스퍼 방향(551) 바이트가 쓰기 명령어에 대응하는 01h의 값으로 설정될 수 있다. 명령어 작업 태그(545) 바이트가 명령어 큐 내 실행될 타 명령어로부터 상기 명령어를 구별 및 식별하도록 사용되는 고유 식별자에 대응할 수 있다. 명령어 작업 태그(545) 바이트가 00h 내지 FFh의 범위의 값으로 설정될 수 있다. 데이터 버퍼 오프셋(553)이 작업의 완전한 데이터 트랜스퍼 내 데이터 트랜스퍼의 오프셋일 수 있다. 상기 데이터 트랜스퍼 요청(552)은 임의의 개수의 바이트로 구성될 수 있다. 예를 들어, 명령어/응답 신호를 이용해 데이터 트랜스퍼 요청이 전달될 때, 앞서 기재된 동일한 필드를 포함하는 경우라도 데이터 트랜스퍼 요청이 32 미만 바이트로 구성될 수 있다.
도 6은 본 발명의 복수의 실시예에 따라 메모리 시스템에서의 명령어 큐잉 및 실행을 위한 방법의 예시를 도시한다. 도 6에 도시된 방법은 동시에 실행되는 복수의 명령어를 포함하고, 여기서 명령어 및 명령어 응답이 명령어 라인을 통해 호스트와 메모리 시스템 간에 전송되고, 반면에 명령어와 연관된 데이터는 데이터 버스를 통해 메모리 시스템과 호스트 사이에 트랜스퍼된다. 따라서 복수의 실시예에서, 데이터 버스가 명령어 라인을 통해 전송되는 명령어를 기초로 호스트 또는 메모리 시스템에 의해 제어될 수 있고 데이터 버스가 사용 중에 호스트와 메모리 디바이스 간에 데이터를 트랜스퍼할 수 있으며, 그 동안 명령어는 명령어 라인을 통해 전송된다. 예를 들어, 명령어가 호스트와 메모리 시스템 간에 전송되는 명령어를 통해 명령어 큐에 추가될 수 있고, 명령어 큐 내 명령어와 연관된 데이터가 데이터 버스를 통해 호스트와 메모리 시스템 간에 전송된다.
도 6에서, 제1 명령어(647-1)와 연관된 제1 큐잉된 명령어 요청(640-1), 가령, CMD(43)가 호스트(602)로부터 메모리 시스템(604)으로 전송된다. 제1 명령어(647-1)가 4KB 읽기 명령어이다. 응답하여, 메모리 시스템(604)은 명령어 응답(도시되지 않음)을 전송할 수 있고 호스트(602)는 제1 명령어에 대한 명령어 블록 기술어(도시되지 않음)를 전송하여 제1 명령어(647-1)가 명령어 큐에 추가될 수 있다.
제2 명령어(647-2)와 연관된 제2 큐잉된 명령어 요청(640-2), 가령, CMD(43)가 호스트(602)로부터 메모리 시스템(604)으로 전송된다. 제2 명령어(647-2)는 16KB 쓰기 명령어이다. 이에 응답하여, 메모리 시스템(604)은 명령어 응답(도시되지 않음)을 전송할 수 있고 호스트(602)는 제2 명령어에 대한 명령어 블록 기술어(도시되지 않음)를 전송하여, 제2 명령어(647-2)가 명령어 큐에 추가될 수 있다. 상기 명령어 큐는 실행 준비가 된 2개의 명령어, 즉, 제1 명령어(647-1) 및 제2 명령어(647-2)를 가진다.
트랜스퍼 준비 명령어(650-1), 가령, CMD(44)가 통신 라인(605)을 통해 호스트(602)로부터 메모리 시스템(604)으로 전송된다. 도 6에서, 메모리 시스템(604)은 명령어를 실행할 준비가 되지 않았으며 이를 나타내는 명령어 응답을 호스트(602)에게 전송한다. 호스트(602)는, 일정 시간 주기 후, 트랜스퍼 준비 명령어(650-1), 가령, CMD(44)를 메모리 시스템(604)으로 다시 전송한다. 메모리 시스템(604)은 트랜스퍼 준비 명령어(650-1)에 명령어, 4KB 읽기 명령어(647-1), 및 데이터 트랜스퍼의 방향을 식별하는 데이터 트랜스퍼 요청(652-1)으로 응답한다. 호스트(602)는, 데이터 트랜스퍼 요청(652-1)을 수신함에 응답하여, 데이터 전송 명령어(658-1), 가령, CMD(47)를 전송함으로써, 메모리 시스템(604)이 데이터 버스(606)를 제어하며 제1 명령어(647-1)와 연관된 데이터의 4KB를 전송하게 한다(657-1).
제1 명령어(647-1)와 연관된 데이터의 4KB가 데이터 버스(606)를 통해 메모리 시스템(604)으로부터 호스트(602)로 전송되며, 트랜스퍼 준비 명령어(650-2), 가령, CMD(44) 및 제3 명령어(647-3)와 연관된 제3 큐잉된 명령어 요청(640-3), 가령, CMD(43)가 명령어 라인(605)을 통해 호스트(602)로부터 메모리 시스템(604)으로 전송된다. 메모리 시스템(604)이 제3 큐잉된 명령어 요청(640-3)에 대한 명령어 응답(도시되지 않음)을 전송할 때 제3 명령어(647-3)가 명령어 큐에 추가되며, 호스트(602)가 제3 명령어에 대한 명령어 블록 기술어(도시되지 않음)를 전송하여 제3 명령어(647-3)가 명령어 큐에 추가될 수 있다. 메모리 시스템(604)은 트랜스퍼 준비 명령어(650-2)에 제2 명령어(647-2), 16KB 쓰기 명령어, 데이터 트랜스퍼의 방향, 및 트랜스퍼될 데이터의 부분, 가령, 데이터 오프셋 및 데이터 크기를 식별하는 데이터 트랜스퍼 요청(652-2)으로 응답한다. 호스트(602)는 데이터 트랜스퍼 요청(652-2)을 수신함에 응답하여, 호스트(602)는 데이터 수신 명령어(660-2), 가령, CMD(46)를 전송함으로써 데이터 버스(606)를 제어하고 제2 명령어(647-2)와 연관된 데이터의 8KB를 메모리 시스템(604)으로 전송(657-2)할 수 있게 한다.
제2 명령어(647-2)와 연관된 데이터의 8KB가 데이터 버스(606)를 통해 호스트(602)로부터 메모리 시스템(604)으로 전송되며, 트랜스퍼 준비 명령어(650-3), 가령, CMD(44)는 명령어 라인(605)을 통해 호스트(602)로부터 메모리 시스템(604)으로 전송된다. 메모리 시스템(604)은 명령어 라인(605)을 통해 제3 명령어(647-3), 8KB 읽기 명령어, 및 데이터 트랜스퍼의 방향을 식별하는 데이터 트랜스퍼 요청(652-3)을 전송함으로써 트랜스퍼 준비 명령어(650-3)에 응답한다. 제3 명령어(647-3)에서 나타나는 우선순위가 명령어(647-2)보다 높은 우선순위였으며, 따라서 명령어(647-3)가 다음으로 실행되고 제2 명령어(647-2)의 실행이 중단되는데, 가령, 제3 명령어가 실행되는 동안 16KB 중 제2 명령어(647-2)와 연관된 단 8KB만 호스트(602)로부터 메모리 시스템(604)으로 전송되었다. 호스트(602)는 데이터 트랜스퍼 요청(652-3)을 수신함에 응답하여, 데이터 명령어(658-3), 가령, CMD(47)를 전송하여, 메모리 시스템(604)이 데이터 버스(606)를 제어하고 제3 명령어(647-3)와 연관된 데이터의 8KB를 전송(657-3)하게 한다.
제4 명령어(647-4)와 연관된 제4 큐잉된 명령어 요청(640-4), 가령, CMD(43)가 호스트(602)로부터 메모리 시스템(604)으로 전송된다. 제4 명령어(647-4)는 8KB 읽기 명령어이다. 이에 응답하여, 메모리 시스템(604)은 명령어 응답(도시되지 않음)을 전송할 수 있고 호스트(602)는 제4 명령어에 대한 명령어 블록 기술어(도시되지 않음)를 전송할 수 있어서 제4 명령어(647-4)가 명령어 큐에 추가될 수 있다. 이제 명령어 큐는 3개의 명령어, 즉, 부분적으로 실행되는 제2 명령어(647-2), 및 실행 중인 제3 명령어(647-3), 및 실행될 준비가 된 제4 명령어(647-4)를 가진다.
제3 명령어(647-3)와 연관된 데이터의 8KB가 데이터 버스(606)를 통해 메모리 시스템(604)에서 호스트(602)로 전송되는 반면, 트랜스퍼 준비 명령어(650-2), 가령, CMD(44)는 다시 명령어 라인(605)을 통해 호스트(602)로부터 메모리 시스템(604)으로 전송됨으로써, 제2 명령어(647-2)의 실행이 재개될 수 있다. 메모리 시스템(604)은 트랜스퍼 준비 명령어(650-2)에 제2 명령어(647-2), 16KB 쓰기 명령어, 데이터 트랜스퍼의 방향, 및 트랜스퍼될 데이터의 부분, 가령, 데이터 오프셋 및 데이터 크기를 식별하는 데이터 트랜스퍼 요청(652-2)으로 응답한다. 호스트(602)는, 데이터 트랜스퍼 요청(652-2)을 수신함에 응답하여, 데이터 수신 명령어(660-2), 가령, CMD(46)를 전송하여, 호스트(602)가 데이터 버스(606)를 제어하며 제2 명령어(647-2)와 연관된 데이터의 8KB을 메모리 시스템(604)으로 전송(657-2)하여 제2 명령어(647-2)의 실행을 완료하게 한다.
제2 명령어(647-2)와 연관된 데이터의 8KB가 데이터 버스(606)를 통해 호스트(602)로부터 메모리 시스템(604)으로 전송되는 반면, 트랜스퍼 준비 명령어(650-4), 가령, CMD(44)는 명령어 라인(605)을 통해 호스트(602)로부터 메모리 시스템(604)으로 전송된다. 메모리 시스템(604)은 트랜스퍼 준비 명령어(650-4)에, 제4 명령어(647-4), 8KB 읽기 명령어, 및 데이터 트랜스퍼의 방향을 식별하는 데이터 트랜스퍼 요청(652-4)으로 응답한다. 호스트(602)는, 데이터 트랜스퍼 요청(652-4)을 수신함에 응답하여, 데이터 전송 명령어(658-4), 가령, CMD(47)를 전송함으로써, 메모리 시스템(604)이 데이터 버스(606)를 제어하고 제4 명령어(647-4)와 연관된 데이터의 8KB를 전송(657-4)하게 한다.
호스트(602)가 트랜스퍼 준비 명령어(650-5 및 650-6)를 메모리 시스템(604)으로 전송하지만, 명령어 큐는 비어 있어서, 메모리 시스템(604)이 상기 명령어 큐가 비어 있음을 나타내는 명령어 응답(도시되지 않음)을 호스트(602)에게 전송 및/또는 메모리 시스템(604)이 명령어(650-5 및 650-6)에 응답하여 데이터 트랜스퍼 요청을 전송하지 않는다.
본 명세서에 특정 실시예가 예시되고 기재되었지만, 해당 분야의 통상의 기술자라면 동일한 결과를 얻기 위해 계산되는 배열이 나타난 특정 실시예를 치환할 수 있음을 알 것이다. 본 발명은 본 명세서의 복수의 실시예의 각색 또는 변형을 포함한다. 상기 기재는 한정이 아닌 예시로서 기재되었음이 이해되어야 한다. 상기 실시예 및 본 명세서에 특정하게 기재되지 않은 그 밖의 다른 실시예의 조합이, 상기의 기재를 읽은 해당 분야의 통상의 기술자에게 자명할 것이다. 본 발명의 복수의 실시예의 범위가 상기의 구조 및 방법이 사용되는 그 밖의 다른 적용예를 포함한다. 따라서 본 발명의 복수의 실시예의 범위는 이하의 청구항 및 이러한 청구항의 균등물의 전체 범위까지 참조하여 결정되어야 한다.
지금까지의 상세한 설명에서, 어떤 특징들은 본 발명을 간략화하는 목적으로 단일 실시예로 함께 그룹지어진다. 본 발명의 방법은 본 발명의 개시된 실시예가 각각의 청구항에서 명시적으로 언급되는 것보다 더 많은 특징을 이용해야 한다는 의도를 반영하는 것으로 해석되지 않는다. 오히려, 이하의 청구항이 반영하는 바는, 본 발명이 대상이 하나의 개시된 실시예의 모든 특징보다 적은 특징을 가진다. 따라서 이하의 청구항은 발명의 상세한 설명에 포함되며, 각각의 청구항는 그 차체가 개별 실시예로서 나타난다.

Claims (34)

  1. 컴퓨팅 시스템에서의 명령어 큐잉(command queuing)을 위한 방법으로서, 상기 방법은
    큐잉된 명령어 요청을 호스트로부터 메모리 시스템에서 수신하는 단계,
    메모리 시스템으로부터 호스트로 상기 메모리 시스템이 상기 메모리 시스템의 명령어 큐에 명령어를 수신할 준비가 됐다는 명령어 응답을 전송하는 단계, 및
    상기 명령어 응답을 전송함에 응답하여, 명령어에 대한 명령어 기술어 블록(command descriptor block)을 상기 호스트로부터 상기 메모리 시스템에서 수신하는 단계
    를 포함하는, 명령어 큐잉을 위한 방법.
  2. 제1항에 있어서, 상기 방법은 상기 명령어 기술어 블록에 기술된 명령어를 상기 메모리 시스템 내 명령어 큐로 추가하는 단계를 포함하는, 명령어 큐잉을 위한 방법.
  3. 제1항에 있어서, 상기 명령어 기술어 블록은 상기 명령어에 대한 우선순위 정보를 포함하는, 명령어 큐잉을 위한 방법.
  4. 제3항에 있어서, 상기 우선순위 정보는 상기 명령어가 실행되기 위한 가장 높은 우선순위를 갖고 명령어 큐 내에 배치됨을 나타내는 파라미터를 포함하는, 명령어 큐잉을 위한 방법.
  5. 제3항에 있어서, 상기 우선순위 정보는 실행되기 위한 연대적 우선순위를 갖고 명령어 큐 내에 배치됨을 나타내는 파라미터를 포함하는, 명령어 큐잉을 위한 방법.
  6. 제3항에 있어서, 우선순위 정보는 명령어가 실행되기 위한 우선순위 없이 명령어 큐 내에 배치됨을 나타내는 파라미터를 포함하는, 명령어 큐잉을 위한 방법.
  7. 제1항 내지 제3항 중 어느 한 항에 있어서, 명령어에 대한 명령어 기술어 블록은 명령어 동작 코드, 우선순위 정보, 작업 태그, 명령어 인자, 시작 주소, 및 블록 카운트를 포함하는, 명령어 큐잉을 위한 방법.
  8. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 방법은 메모리 시스템이 트랜스퍼 상태(Transfer state)에 있을 때 메모리 시스템에서 큐잉된 명령어 요청을 수신하는 단계를 포함하는, 명령어 큐잉을 위한 방법.
  9. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 방법은 명령어 응답을 전송함에 응답하여, 메모리 시스템을 트랜스퍼 상태에서 수신 상태(Receiving state)로 변경하는 단계를 포함하는, 명령어 큐잉을 위한 방법.
  10. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 방법은 임베디드 멀티미디어카드(e.MMC)(embedded MultiMediaCard) 프로토콜을 이용하는 명령어 큐잉을 포함하는, 명령어 큐잉을 위한 방법.
  11. 메모리 시스템에서의 명령어 큐잉을 위한 방법으로서, 상기 방법은
    큐잉된 명령어 요청을 호스트로부터 메모리 시스템에서 수신하고, 큐잉된 명령어 요청을 수신함에 응답하여 메모리 시스템이 메모리 시스템의 명령어 큐에서 명령어를 수신할 준비가 됐음을 나타내는 명령어 응답을 메모리 시스템으로부터 호스트로 전송하며, 명령어 응답을 수신함에 응답하여 호스트로부터 메모리 시스템에서 명령어에 대한 명령어 기술어 블록을 수신함에 응답하여, 명령어 큐에 명령어를 배치하는 단계, 및
    트랜스퍼 준비 명령어를 호스트로부터 메모리 시스템에서 수신하고 상기 트랜스퍼 준비 명령어를 수신하고, 상기 트랜스퍼 준비 명령어를 수신함에 응답하여 메모리 시스템으로부터 호스트로 데이터 트랜스퍼 요청을 전송함으로써 명령어를 실행하는 단계 - 상기 데이터 트랜스퍼 요청은 호스트와 메모리 시스템 상에서 명령어 실행을 허용하는 정보를 포함하는 데이터 패킷을 포함함 - 를 포함하는, 명령어 큐잉을 위한 방법.
  12. 제11항에 있어서, 명령어를 실행하는 단계는 명령어가 쓰기(write) 명령어일 때 데이터 수신 명령어를 호스트로부터 메모리 시스템에서 수신하는 단계를 포함하는, 명령어 큐잉을 위한 방법.
  13. 제12항에 있어서, 호스트로부터 데이터 수신 명령어를 수신함에 응답하여, 상기 메모리 시스템은 수신 상태(Receive state)로 전환되고 호스트는 메모리 시스템으로 데이터를 전송하는, 명령어 큐잉을 위한 방법.
  14. 제11항 내지 제13항 중 어느 한 항에 있어서, 명령어를 실행하는 단계는 명령어가 읽기(read) 명령어일 때 데이터 전송 명령어를 호스트로부터 메모리 시스템에서 수신하는 단계를 포함하는, 명령어 큐잉을 위한 방법.
  15. 제14항에 있어서, 호스트로부터 데이터 전송 명령어를 수신함에 응답하여, 메모리 시스템은 데이터 전송 상태(Sending Data state)로 전환되고 메모리 시스템은 데이터를 호스트로 전송하는, 명령어 큐잉을 위한 방법.
  16. 메모리 시스템에서의 명령어 실행을 위한 방법으로서, 상기 방법은
    제1 복수의 큐잉된 명령어 요청을 호스트로부터 메모리 시스템에서 수신하는 단계,
    상기 제1 복수의 큐잉된 명령어 요청을 수신함에 응답하여 메모리 시스템 내 명령어 큐에 제1 복수의 명령어를 배치하는 단계,
    제1 복수의 트랜스퍼 준비 명령어를 호스트로부터 메모리 시스템에서 수신하고, 제1 복수의 트랜스퍼 준비 명령을 수신함에 응답하여, 제1 복수의 데이터 트랜스퍼 요청을 메모리 시스템으로부터 호스트로 전송함으로써, 제1 복수의 명령어를 실행하는 단계 - 제1 복수의 데이터 트랜스퍼 요청 각각은 호스트 및 메모리 시스템 상에서의 명령어 실행을 허용하는 정보를 포함하는 데이터 패킷을 포함함 - ,
    제2 복수의 큐잉된 명령어 요청을 호스트로부터 메모리 시스템에서 수신하는 단계,
    제2 복수의 큐잉된 명령어 요청을 수신함에 응답하여 메모리 시스템 내 명령어 큐에 제2 복수의 명령어를 배치하는 단계, 및
    제1 복수의 명령어의 실행을 중단하고 제2 복수의 명령어 중에서 한 명령어를 실행하는 단계 - 상기 제2 복수의 명령어 중 상기 한 명령어는 상기 명령어가 실행되기 위한 가장 높은 우선순위를 갖고 명령어 큐 내에 배치됨을 나타내는 파라미터를 포함함 - 를 포함하는, 명령어 실행을 위한 방법.
  17. 제16항에 있어서, 상기 방법은 트랜스퍼 준비 명령어를 호스트로부터 메모리 시스템에서 수신하고, 트랜스퍼 준비 명령어를 수신함에 응답하여 데이터 트랜스퍼 요청을 상기 메모리 시스템으로부터 상기 호스트로 전송함으로써 상기 제2 복수의 명령어 중 상기 한 명령어를 실행하는 단계 - 상기 데이터 트랜스퍼 요청은 호스트와 메모리 시스템 상에서의 명령어 실행을 허용하는 정보를 포함하는 데이터 패킷을 포함함 - 를 포함하는, 명령어 실행을 위한 방법.
  18. 제16항 또는 제17항에 있어서, 상기 방법은 제2 복수의 큐잉된 명령어 요청을 명령어 라인을 통해 호스트로부터 메모리 시스템에서 수신하고, 제1 복수의 명령어의 적어도 부분은 데이터 버스를 통한 데이터 트랜스퍼를 통해 실행되는 단계를 포함하는, 명령어 실행을 위한 방법.
  19. 제16항 또는 제17항에 있어서, 상기 방법은 제1 복수의 명령어 중 둘 이상의 명령어를 동시에 실행하는 단계를 포함하는, 명령어 실행을 위한 방법.
  20. 제19항에 있어서, 상기 방법은 제2 복수의 명령어 중 상기 한 명령어의 실행이 시작된 후 제1 복수의 명령어의 실행을 재개하는 단계를 포함하는, 명령어 실행을 위한 방법.
  21. 제19항에 있어서, 상기 방법은 제1 복수의 명령어 각각의 우선순위 정보를 기초로 제1 복수의 명령어를 실행하는 단계를 포함하는, 명령어 실행을 위한 방법.
  22. 장치로서, 상기 장치는
    제어기, 및
    상기 제어기에 연결된 메모리 디바이스를 포함하며, 상기 장치는
    큐잉된 명령어 요청을 호스트로부터 제어기에서 수신하고, 큐잉된 명령어 요청을 수신함에 응답하여, 장치가 명령어 큐에 명령어를 수신할 준비가 됐음을 나타내는 명령어 응답을 제어기로부터 호스트로 전송하며,
    명령어 응답을 전송함에 응답하여, 명령어에 대한 명령어 기술어 블록을 호스트로부터 제어기에서 수신하고 상기 명령어 기술어 블록 내에 기술된 명령어를 제어기 내 명령어 큐에 추가하고,
    트랜스퍼 준비 명령어를 호스트로부터 제어기에서 수신하고 상기 트랜스퍼 준비 명령어를 수신함에 응답하여, 명령어 실행을 허용하는 정보를 포함하는 데이터 패킷을 포함하는 데이터 트랜스퍼 요청을 제어기로부터 호스트로 전송하며,
    명령어를 실행하도록 구성되는, 장치.
  23. 제22항에 있어서, 장치는 데이터 수신 명령어를 호스트로부터 제어기에서 수신하고, 트랜스퍼 상태(Transfer state)에서 데이터 수신 상태(Receiving Data state)로 전환하며, 데이터를 호스트로부터 장치에서 수신함으로써 명령어를 실행하도록 구성되는, 장치.
  24. 제22항에 있어서, 상기 장치는 데이터 전송 명령어를 호스트로부터 제어기에서 수신하고, 트랜스퍼 상태에서 데이터 전송 상태로 전환하며, 데이터를 메모리 디바이스로부터 호스트로 전송함으로써 명령어를 실행하도록 구성되는, 장치.
  25. 제22항 내지 제24항 중 어느 한 항에 있어서, 상기 장치는 호스트로부터 작업 관리 기능 요청 명령어를 수신하고 명령어 큐 내 복수의 명령어의 각각의 명령어의 상태를 호스트로 전송하도록 구성되는, 장치.
  26. 제22항 내지 제24항 중 어느 한 항에 있어서, 상기 방치는 호스트로부터 작업 관리 기능 요청 명령어를 수신하고 상기 명령어 큐 내 복수의 명령어의 각각의 명령어를 중단시키도록 구성되는, 장치.
  27. 제26항에 있어서, 상기 장치는 명령어 큐 내 복수의 명령어를 중단하고 호스트로부터 다음 큐잉된 명령어 요청을 수신하면, 작업 큐 상태 레지스터 및 예외 이벤트 상태 필드의 큐 에러 비트를 재설정하도록 구성되는, 장치.
  28. 장치로서, 상기 장치는
    제어기, 및
    상기 제어기로 연결된 메모리 디바이스를 포함하며, 상기 장치는
    큐잉된 명령어 요청을 호스트로부터 제어기에서 수신하고, 큐잉된 명령어 요청을 수신함에 응답하여, 장치가 명령어 큐에 명령어를 수신할 준비가 됐음을 나타내는 명령어 응답을 제어기로부터 호스트로 전송하며,
    명령어 응답을 전송함에 응답하여, 명령어에 대한 명령어 기술어 블록을 호스트로부터 제어기에서 수신하며 상기 명령어 기술어 블록에 기술된 명령어를 제어기 내 명령어 큐에 추가하고,
    트랜스퍼 준비 명령어를 호스트로부터 제어기에서 수신하고, 트랜스퍼 준비 명령어를 수신함에 응답하여, 명령어 실행을 허용하는 정보를 포함하는 데이터 패킷을 포함하는 데이터 트랜스퍼 요청을 제어기로부터 호스트로 전송하며,
    명령어를 실행하도록 구성되는, 장치.
  29. 제28항에 있어서, 상기 장치는 호스트로부터 데이터를 수신함으로써 명령어를 실행하도록 구성되고, 상기 장치는 데이터 버스의 제어를 호스트에게 제공 변경하고 데이터 전송 상태에서 데이터 수신 상태로 전환하도록 구성되는, 장치.
  30. 제28항 또는 제29항에 있어서, 상기 장치는 데이터를 호스트로 전송함으로써 명령어를 실행하도록 구성되며, 상기 장치는 데이터 버스의 제어를 유지하고 데이터 전송 상태를 유지하도록 구성되는, 장치.
  31. 장치로서, 상기 장치는
    메모리 디바이스를 포함하는 메모리 시스템, 및
    상기 메모리 시스템에 연결되는 호스트를 포함하며, 상기 장치는
    제1 복수의 큐잉된 명령어 요청을 호스트로부터 메모리 시스템으로 전송하며,
    제1 복수의 큐잉된 명령어 요청을 수신함에 응답하여 메모리 시스템 내 명령어 큐에 제1 복수의 명령어를 배치하고,
    제1 복수의 트랜스퍼 준비 명령어를 호스트로부터 메모리 시스템으로 전송하며, 제1 복수의 트랜스퍼 준비 명령어를 수신함에 응답하여 제1 복수의 데이터 트랜스퍼 요청을 메모리 시스템에서 호스트로 전송하며 - 상기 제1 복수의 데이터 트랜스퍼 요청 각각은 호스트 및 메모리 시스템 상에서의 명령어 실행을 허용하는 정보를 포함하는 데이터 패킷을 포함함 - ,
    복수의 데이터 수신 명령어 및 복수의 데이터 전송 명령어를 명령어 라인을 통해 호스트에서 메모리 시스템으로 전송하고, 복수의 데이터 전송 명령어 및 복수의 데이터 수신 명령어를 전송함에 응답하여 데이터를 데이터 버스를 통해 메모리 시스템으로부터 호스트로 전송하고 데이터를 호스트로부터 메모리 시스템으로 전송함으로써, 제1 복수의 명령어를 동시에 실행하도록 구성된, 장치.
  32. 제31항에 있어서, 상기 장치는 복수의 데이터 수신 명령어 및 복수의 데이터 전송 명령어를 명령어 라인을 통해 호스트로부터 메모리 시스템으로 전송하고, 데이터를 데이터 버스를 통해 메모리 시스템으로부터 호스트로 전송함으로써 제1 복수의 명령어를 동시에 실행하도록 구성된, 장치.
  33. 제31항에 있어서, 상기 장치는 복수의 데이터 수신 명령어 및 복수의 데이터 전송 명령어를 명령어 라인을 통해 호스트로부터 메모리 시스템으로 전송하고 데이터를 데이터 버스를 통해 호스트로부터 메모리 시스템으로 전송함으로써, 제1 복수의 명령어를 동시에 실행하도록 구성된, 장치.
  34. 제31항 내지 제33항 중 어느 한 항에 있어서, 상기 장치는
    제2 복수의 큐잉된 명령어 요청을 호스트에서 메모리 시스템으로 전송하고 제1 복수의 큐잉된 명령어 요청을 수신함에 응답하여 제2 복수의 명령어를 메모리 시스템의 명령어 큐에 배치하며,
    제1 복수의 명령어의 실행을 중단하고 제2 복수의 명령어 중 한 명령어를 실행하도록 구성되며, 상기 제2 복수의 명령어 중 상기 한 명령어는 실행되기 위한 가장 높은 우선순위를 갖고 명령어 큐에 배치되는, 장치.
KR1020167025100A 2014-02-14 2015-02-12 명령어 큐잉 KR101702280B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/181,089 US9454310B2 (en) 2014-02-14 2014-02-14 Command queuing
US14/181,089 2014-02-14
PCT/US2015/015612 WO2015123413A1 (en) 2014-02-14 2015-02-12 Command queuing

Publications (2)

Publication Number Publication Date
KR20160114726A true KR20160114726A (ko) 2016-10-05
KR101702280B1 KR101702280B1 (ko) 2017-02-03

Family

ID=53798166

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167025100A KR101702280B1 (ko) 2014-02-14 2015-02-12 명령어 큐잉

Country Status (7)

Country Link
US (5) US9454310B2 (ko)
EP (3) EP4033353A1 (ko)
JP (1) JP6134453B2 (ko)
KR (1) KR101702280B1 (ko)
CN (2) CN111722809A (ko)
TW (1) TWI543070B (ko)
WO (1) WO2015123413A1 (ko)

Families Citing this family (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11249652B1 (en) 2013-01-28 2022-02-15 Radian Memory Systems, Inc. Maintenance of nonvolatile memory on host selected namespaces by a common memory controller
US10445229B1 (en) 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US10642505B1 (en) 2013-01-28 2020-05-05 Radian Memory Systems, Inc. Techniques for data migration based on per-data metrics and memory degradation
US9824004B2 (en) 2013-10-04 2017-11-21 Micron Technology, Inc. Methods and apparatuses for requesting ready status information from a memory
KR102111741B1 (ko) * 2014-01-10 2020-05-15 삼성전자주식회사 임베디드 멀티미디어 카드 및 이의 동작 방법
US10108372B2 (en) 2014-01-27 2018-10-23 Micron Technology, Inc. Methods and apparatuses for executing a plurality of queued tasks in a memory
US9454310B2 (en) * 2014-02-14 2016-09-27 Micron Technology, Inc. Command queuing
WO2015166540A1 (ja) * 2014-04-28 2015-11-05 株式会社日立製作所 ストレージ装置とそのデータ処理方法及びストレージシステム
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
US10552085B1 (en) 2014-09-09 2020-02-04 Radian Memory Systems, Inc. Techniques for directed data migration
KR102398213B1 (ko) * 2015-03-09 2022-05-17 삼성전자주식회사 저장 장치, 그것을 포함하는 호스트 시스템, 및 그것의 맵 테이블 업데이트 방법
US10552058B1 (en) * 2015-07-17 2020-02-04 Radian Memory Systems, Inc. Techniques for delegating data processing to a cooperative memory controller
US9880772B2 (en) * 2015-09-21 2018-01-30 Micron Technology, Inc. Systems and methods for providing file information in a memory system protocol
US9996262B1 (en) 2015-11-09 2018-06-12 Seagate Technology Llc Method and apparatus to abort a command
US10572180B1 (en) 2015-11-09 2020-02-25 Seagate Technology Llc Method and apparatus to perform a function level reset in a memory controller
US10282103B1 (en) * 2015-11-09 2019-05-07 Seagate Technology Llc Method and apparatus to delete a command queue
US20170206165A1 (en) * 2016-01-14 2017-07-20 Samsung Electronics Co., Ltd. Method for accessing heterogeneous memories and memory module including heterogeneous memories
US9891945B2 (en) 2016-03-21 2018-02-13 Qualcomm Incorporated Storage resource management in virtualized environments
US10152237B2 (en) 2016-05-05 2018-12-11 Micron Technology, Inc. Non-deterministic memory protocol
US10534540B2 (en) 2016-06-06 2020-01-14 Micron Technology, Inc. Memory protocol
US10580189B2 (en) 2016-09-16 2020-03-03 Intel Corporation Apparatus and method for optimized ray tracing
US10585624B2 (en) 2016-12-01 2020-03-10 Micron Technology, Inc. Memory protocol
KR20180069960A (ko) * 2016-12-15 2018-06-26 에스케이하이닉스 주식회사 메모리 시스템 및 그의 동작 방법
US11003602B2 (en) 2017-01-24 2021-05-11 Micron Technology, Inc. Memory protocol with command priority
US10296473B2 (en) * 2017-03-24 2019-05-21 Western Digital Technologies, Inc. System and method for fast execution of in-capsule commands
US10509569B2 (en) * 2017-03-24 2019-12-17 Western Digital Technologies, Inc. System and method for adaptive command fetch aggregation
JP2018169810A (ja) 2017-03-30 2018-11-01 東芝メモリ株式会社 メモリシステムおよび制御方法
US10635613B2 (en) 2017-04-11 2020-04-28 Micron Technology, Inc. Transaction identification
US10621117B2 (en) * 2017-06-15 2020-04-14 Micron Technology, Inc. Controlling memory devices using a shared channel
US10552271B2 (en) * 2017-07-31 2020-02-04 International Business Machines Corporation Switching servers without interrupting a client command-response queue
US10540219B2 (en) * 2017-09-13 2020-01-21 Toshiba Memory Corporation Reset and error handling in application specific integrated circuits
US10528414B2 (en) * 2017-09-13 2020-01-07 Toshiba Memory Corporation Centralized error handling in application specific integrated circuits
KR20190031683A (ko) * 2017-09-18 2019-03-27 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
TW202314512A (zh) * 2017-12-28 2023-04-01 慧榮科技股份有限公司 快閃記憶體控制器、安全數位卡、使用於快閃記憶體控制器的方法以及存取安全數位卡的主機
KR20190083052A (ko) * 2018-01-03 2019-07-11 에스케이하이닉스 주식회사 컨트롤러 및 그것의 동작방법
US10635350B2 (en) * 2018-01-23 2020-04-28 Western Digital Technologies, Inc. Task tail abort for queued storage tasks
KR20190090614A (ko) * 2018-01-25 2019-08-02 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
KR102516547B1 (ko) * 2018-03-08 2023-04-03 에스케이하이닉스 주식회사 메모리 컨트롤러 및 이를 포함하는 메모리 시스템
CN110851073B (zh) * 2018-08-20 2023-06-02 慧荣科技股份有限公司 储存装置及巨集指令的执行方法
CN110851372B (zh) 2018-08-20 2023-10-31 慧荣科技股份有限公司 储存装置及快取区定址方法
US10732892B2 (en) 2018-09-24 2020-08-04 Micron Technology, Inc. Data transfer in port switch memory
US10949117B2 (en) * 2018-09-24 2021-03-16 Micron Technology, Inc. Direct data transfer in memory and between devices of a memory module
TWI681296B (zh) * 2018-09-28 2020-01-01 慧榮科技股份有限公司 記憶卡存取裝置及方法以及電腦程式產品
US10580481B1 (en) * 2019-01-14 2020-03-03 University Of Virginia Patent Foundation Methods, circuits, systems, and articles of manufacture for state machine interconnect architecture using embedded DRAM
KR20210043819A (ko) * 2019-10-14 2021-04-22 에스케이하이닉스 주식회사 컨트롤러 및 컨트롤러의 동작방법
US11175984B1 (en) 2019-12-09 2021-11-16 Radian Memory Systems, Inc. Erasure coding techniques for flash memory
US11481152B2 (en) 2019-12-30 2022-10-25 Micron Technology, Inc. Execution of commands addressed to a logical block
US11294832B2 (en) * 2020-03-20 2022-04-05 Western Digital Technologies, Inc. Systems and methods for queuing device management configuration requests
US11789642B2 (en) * 2021-06-28 2023-10-17 Micron Technology, Inc. Loading data from memory during dispatch
CN114116008B (zh) * 2022-01-26 2022-05-27 深圳佰维存储科技股份有限公司 命令队列管理方法、装置、可读存储介质及电子设备
US11790961B2 (en) * 2022-03-11 2023-10-17 Micron Technology, Inc. Memory device access techniques
WO2023173363A1 (en) * 2022-03-17 2023-09-21 Micron Technology, Inc. Low-latency processing for unmap commands

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080105390A (ko) * 2007-05-30 2008-12-04 삼성전자주식회사 플래시 메모리에 사용되는 명령어들을 제어하는 방법 및장치
US20090094678A1 (en) * 2007-10-05 2009-04-09 Nokia Corporation Mulimode device
US7644205B1 (en) * 2006-12-15 2010-01-05 Nvidia Corporation System and method for SAM-3 prioritization in iSCSI using 802.1q ethernet prioritization
US20100115152A1 (en) * 2008-10-31 2010-05-06 Day Brian A Sending large command descriptor block (CDB) Structures in serial attached SCSI(SAS) controller

Family Cites Families (67)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1994009436A1 (en) * 1992-10-13 1994-04-28 Compaq Computer Corporation Disk array controller having advanced internal bus protocol
US5659690A (en) * 1992-10-15 1997-08-19 Adaptec, Inc. Programmably configurable host adapter integrated circuit including a RISC processor
US5504868A (en) * 1994-03-01 1996-04-02 Adaptec, Incorporated SCSI command descriptor block parsing state machine
US5634081A (en) * 1994-03-01 1997-05-27 Adaptec, Inc. System for starting and completing a data transfer for a subsequently received autotransfer command after receiving a first SCSI data transfer command that is not autotransfer
JPH08328880A (ja) * 1995-05-31 1996-12-13 Mitsubishi Electric Corp 複数のアプリケーションプログラムを同時に実行できるオペレーティングシステムにおける計算機運転管理システム
US5812824A (en) * 1996-03-22 1998-09-22 Sun Microsystems, Inc. Method and system for preventing device access collision in a distributed simulation executing in one or more computers including concurrent simulated one or more devices controlled by concurrent one or more tests
US5974499A (en) * 1997-04-23 1999-10-26 Micron Technology, Inc. Memory system having read modify write function and method
US6397316B2 (en) * 1997-07-24 2002-05-28 Intel Corporation System for reducing bus overhead for communication with a network interface
US6134630A (en) * 1997-11-14 2000-10-17 3Ware High-performance bus architecture for disk array system
US6098114A (en) * 1997-11-14 2000-08-01 3Ware Disk array system for processing and tracking the completion of I/O requests
US6205494B1 (en) * 1998-12-18 2001-03-20 Western Digital Corporation Controller with automatic generation of linked list of data transfer descriptors for sequential commands, with linked list being used for execution of sequential data transfers
US8296467B2 (en) * 2000-01-06 2012-10-23 Super Talent Electronics Inc. Single-chip flash device with boot code transfer capability
US6671773B2 (en) * 2000-12-07 2003-12-30 Spinnaker Networks, Llc Method and system for responding to file system requests
US7085723B2 (en) * 2001-01-12 2006-08-01 International Business Machines Corporation System and method for determining utterance context in a multi-context speech application
JP3617631B2 (ja) * 2001-07-19 2005-02-09 富士通株式会社 ストレージ制御装置及びその制御方法
JP3878508B2 (ja) * 2001-11-08 2007-02-07 松下電器産業株式会社 回路群制御システム
US6985977B2 (en) * 2002-08-30 2006-01-10 National Instruments Corporation System and method for transferring data over a communication medium using double-buffering
US9591112B2 (en) 2002-12-31 2017-03-07 Google Technology Holdings LLC Command queuing for multimedia storage devices
US7650385B2 (en) * 2003-11-20 2010-01-19 International Business Machines Corporation Assigning priorities
US7328317B2 (en) * 2004-10-21 2008-02-05 International Business Machines Corporation Memory controller and method for optimized read/modify/write performance
US7222223B2 (en) * 2004-10-29 2007-05-22 Pillar Data Systems, Inc. Management of I/O operations in data storage systems
JP2006139548A (ja) * 2004-11-12 2006-06-01 Hitachi Global Storage Technologies Netherlands Bv メディア・ドライブ及びそのコマンド実行方法
US7774512B2 (en) * 2005-02-08 2010-08-10 Sony Computer Entertainment Inc. Methods and apparatus for hybrid DMA queue and DMA table
US7418531B2 (en) * 2005-05-04 2008-08-26 Pillar Data Systems, Inc. Quality of service for data storage volumes
US20060271739A1 (en) * 2005-05-24 2006-11-30 Shu-Fang Tsai Management of transfer of commands
US7493430B2 (en) * 2005-07-14 2009-02-17 Quantum Corporation Data flow control and bridging architecture enhancing performance of removable data storage systems
US20070083482A1 (en) * 2005-10-08 2007-04-12 Unmesh Rathi Multiple quality of service file system
KR20080089586A (ko) 2005-12-08 2008-10-07 샌디스크 코포레이션 명령 패스 스로우 메커니즘을 가지는 미디어 카드
US20070260756A1 (en) * 2006-01-05 2007-11-08 Pao-Ching Tseng Method for Processing Command via SATA Interface
US20070226401A1 (en) * 2006-03-21 2007-09-27 Pa-Chung Huang Data accessing structure and method for flash memory
US20080040519A1 (en) * 2006-05-02 2008-02-14 Alacritech, Inc. Network interface device with 10 Gb/s full-duplex transfer rate
US7644204B2 (en) * 2006-10-31 2010-01-05 Hewlett-Packard Development Company, L.P. SCSI I/O coordinator
KR20080044502A (ko) * 2006-11-16 2008-05-21 삼성전자주식회사 메모리 카드 시스템 및 그것의 패스워드 전송 방법
US7630369B1 (en) * 2006-12-15 2009-12-08 Nvidia Corporation System and method for network storage prioritization of demand-page operations
US20080162735A1 (en) * 2006-12-29 2008-07-03 Doug Voigt Methods and systems for prioritizing input/outputs to storage devices
US8954654B2 (en) * 2008-06-18 2015-02-10 Super Talent Technology, Corp. Virtual memory device (VMD) application/driver with dual-level interception for data-type splitting, meta-page grouping, and diversion of temp files to ramdisks for enhanced flash endurance
US9223642B2 (en) * 2013-03-15 2015-12-29 Super Talent Technology, Corp. Green NAND device (GND) driver with DRAM data persistence for enhanced flash endurance and performance
US8959280B2 (en) * 2008-06-18 2015-02-17 Super Talent Technology, Corp. Super-endurance solid-state drive with endurance translation layer (ETL) and diversion of temp files for reduced flash wear
US8732339B2 (en) * 2009-03-24 2014-05-20 Hewlett-Packard Development Company, L.P. NPIV at storage devices
US20100262979A1 (en) * 2009-04-08 2010-10-14 Google Inc. Circular command queues for communication between a host and a data storage device
US8055816B2 (en) * 2009-04-09 2011-11-08 Micron Technology, Inc. Memory controllers, memory systems, solid state drives and methods for processing a number of commands
US8176232B2 (en) * 2009-05-11 2012-05-08 Micron Technology, Inc. Dedicated interface to factory program phase-change memories
US8225052B2 (en) * 2009-06-03 2012-07-17 Micron Technology, Inc. Methods for controlling host memory access with memory devices and systems
US20120179860A1 (en) * 2009-06-10 2012-07-12 Francesco Falanga Suspension of memory operations for reduced read latency in memory arrays
TWI424435B (zh) 2009-08-31 2014-01-21 Phison Electronics Corp 對快閃記憶體下達程式化指令的方法、控制器與儲存系統
US8615621B2 (en) 2009-12-24 2013-12-24 St-Ericsson Sa Memory management
US8468319B1 (en) * 2010-01-19 2013-06-18 Infinidat Ltd. Concurrent access to a single disk track by combining reads and writes to a disk with a mask
KR101654807B1 (ko) * 2010-05-07 2016-09-07 삼성전자주식회사 데이터 저장 장치 및 그것의 동작 방법
JP5677336B2 (ja) * 2011-08-01 2015-02-25 株式会社東芝 メモリ・デバイス
US8423722B1 (en) * 2011-08-26 2013-04-16 Western Digital Technologies, Inc. System and method for high performance command processing in solid state drives
US9021146B2 (en) * 2011-08-30 2015-04-28 Apple Inc. High priority command queue for peripheral component
US8700834B2 (en) * 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
JP5547148B2 (ja) * 2011-09-13 2014-07-09 株式会社東芝 メモリデバイス
JP5547154B2 (ja) * 2011-09-21 2014-07-09 株式会社東芝 メモリ・デバイス
US10803970B2 (en) 2011-11-14 2020-10-13 Seagate Technology Llc Solid-state disk manufacturing self test
US9146690B2 (en) * 2012-01-27 2015-09-29 Marvell World Trade Ltd. Systems and methods for dynamic priority control
KR20130087936A (ko) * 2012-01-30 2013-08-07 삼성전자주식회사 메모리 장치, 메모리 시스템 및 이의 프로그램 방법
US9135192B2 (en) * 2012-03-30 2015-09-15 Sandisk Technologies Inc. Memory system with command queue reordering
US9141296B2 (en) * 2012-05-31 2015-09-22 Sandisk Technologies Inc. Method and host device for packing and dispatching read and write commands
JP5814871B2 (ja) * 2012-07-06 2015-11-17 株式会社東芝 メモリシステム
KR101988260B1 (ko) * 2012-09-14 2019-06-12 삼성전자주식회사 임베디드 멀티미디어 카드, 및 이의 동작 방법
US9335952B2 (en) * 2013-03-01 2016-05-10 Ocz Storage Solutions, Inc. System and method for polling the status of memory devices
US9170755B2 (en) * 2013-05-21 2015-10-27 Sandisk Technologies Inc. Command and data selection in storage controller systems
US9519440B2 (en) * 2013-09-10 2016-12-13 Qualcomm Incorporated Providing command queuing in embedded memories
US9244631B2 (en) * 2013-12-06 2016-01-26 Sandisk Technologies Inc. Lower page only host burst writes
KR102111741B1 (ko) * 2014-01-10 2020-05-15 삼성전자주식회사 임베디드 멀티미디어 카드 및 이의 동작 방법
US9454310B2 (en) * 2014-02-14 2016-09-27 Micron Technology, Inc. Command queuing

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7644205B1 (en) * 2006-12-15 2010-01-05 Nvidia Corporation System and method for SAM-3 prioritization in iSCSI using 802.1q ethernet prioritization
KR20080105390A (ko) * 2007-05-30 2008-12-04 삼성전자주식회사 플래시 메모리에 사용되는 명령어들을 제어하는 방법 및장치
US20090094678A1 (en) * 2007-10-05 2009-04-09 Nokia Corporation Mulimode device
US20100115152A1 (en) * 2008-10-31 2010-05-06 Day Brian A Sending large command descriptor block (CDB) Structures in serial attached SCSI(SAS) controller

Also Published As

Publication number Publication date
TWI543070B (zh) 2016-07-21
US9454310B2 (en) 2016-09-27
US10146477B2 (en) 2018-12-04
EP3105675A1 (en) 2016-12-21
US20230054662A1 (en) 2023-02-23
US11494122B2 (en) 2022-11-08
JP2017513089A (ja) 2017-05-25
CN111722809A (zh) 2020-09-29
EP4033353A1 (en) 2022-07-27
EP3493055A1 (en) 2019-06-05
JP6134453B2 (ja) 2017-05-24
TW201543347A (zh) 2015-11-16
KR101702280B1 (ko) 2017-02-03
US20210200478A1 (en) 2021-07-01
US20150234601A1 (en) 2015-08-20
WO2015123413A1 (en) 2015-08-20
EP3105675A4 (en) 2017-10-18
US11954370B2 (en) 2024-04-09
US20190102112A1 (en) 2019-04-04
CN106030521A (zh) 2016-10-12
US10884661B2 (en) 2021-01-05
EP3493055B1 (en) 2022-04-20
EP3105675B1 (en) 2018-11-07
US20160364179A1 (en) 2016-12-15

Similar Documents

Publication Publication Date Title
KR101702280B1 (ko) 명령어 큐잉
US9348521B2 (en) Semiconductor storage device and method of throttling performance of the same
US8862807B2 (en) Semiconductor storage device and method of throttling performance of the same
KR102395541B1 (ko) 메모리 컨트롤 유닛 및 그것을 포함하는 데이터 저장 장치
US11288014B2 (en) Controller, operating method of controller and storage device including the same
US11081187B2 (en) Erase suspend scheme in a storage device
KR102595233B1 (ko) 데이터 처리 시스템 및 그것의 동작 방법
US9117504B2 (en) Volume select for affecting a state of a non-selected memory volume
TW201908976A (zh) 混合式記憶體驅動器,電腦系統,及用於操作多重模式混合式驅動器之相關方法
US20190354483A1 (en) Controller and memory system including the same
KR102140297B1 (ko) 불휘발성 메모리 장치 및 그것을 포함하는 데이터 저장 장치
KR20170094674A (ko) 데이터 저장 장치
KR20200015260A (ko) 데이터 저장 장치 및 그것의 동작 방법
US20240168536A1 (en) Peak power management extensions to application-specific integrated circuits
US20220405013A1 (en) Asynchronous interrupt event handling in multi-plane memory devices
KR20220094726A (ko) 메모리 컨트롤러, 비휘발성 메모리 장치 및 그 스토리지 장치
KR20200073122A (ko) 데이터 저장 장치 및 그것의 동작 방법

Legal Events

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

Payment date: 20200114

Year of fee payment: 4