KR101284440B1 - 커맨드 수정 - Google Patents

커맨드 수정 Download PDF

Info

Publication number
KR101284440B1
KR101284440B1 KR1020117018454A KR20117018454A KR101284440B1 KR 101284440 B1 KR101284440 B1 KR 101284440B1 KR 1020117018454 A KR1020117018454 A KR 1020117018454A KR 20117018454 A KR20117018454 A KR 20117018454A KR 101284440 B1 KR101284440 B1 KR 101284440B1
Authority
KR
South Korea
Prior art keywords
command
commands
queue
channel
dispatcher
Prior art date
Application number
KR1020117018454A
Other languages
English (en)
Other versions
KR20110112420A (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 KR20110112420A publication Critical patent/KR20110112420A/ko
Application granted granted Critical
Publication of KR101284440B1 publication Critical patent/KR101284440B1/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/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
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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
    • G06F13/1631Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests through address comparison
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Read Only Memory (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Time-Division Multiplex Systems (AREA)

Abstract

본 개시는 커맨드를 수정하기 위한 방법, 디바이스, 모듈, 그리고 시스템을 포함한다. 한 디바이스 실시예는 채널을 포함하는 메모리 컨트롤러를 포함하며, 여기서 채널은 커맨드들을 유지하기 위해 구성된 커맨드 큐, 큐 내의 적어도 다수의 커맨드들을 수정하고 수정된 커맨드들을 실행하도록 구성된 회로를 포함한다.

Description

커맨드 수정{MODIFYING COMMANDS}
본 발명은 일반적으로 반도체 메모리 디바이스(semiconductor memory devices), 방법, 그리고 시스템에 관한 것으로, 특히, 커맨드(commands)를 수정하는 것에 관한 것이다.
메모리 디바이스는 전형적으로 본질적으로 반도체, 컴퓨터 또는 기타 전자 디바이스들 내의 집적 회로(integrated circuits)로서 제공된다. 휘발성 및 비휘발성 메모리(volatile and non-volatile memory)를 포함한 많은 다른 유형의 메모리가 존재한다. 휘발성 메모리는 자신의 데이터를 유지하기 위해 전원(power)을 요구할 수 있으며 여럿 가운데서 랜덤-액세스 메모리(random-access memory : RAM), 동적 랜덤 액세스 메모리(dynamic random access memory : DRAM), 그리고 동기 동적 랜덤 액세스 메모리(synchronous dynamic random access memory : SDRAM)를 포함할 수 있다. 비휘발성 메모리는 전원이 공급되지 않을 때 저장된 정보를 유지함으로써 영속하는 데이터(persistent data)를 제공할 수 있으며 여럿 가운데서 NAND 플래시 메모리, NOR 플래시 메모리, 판독 전용 메모리(ROM), 전기적으로 삭제가능한 프로그래머블 ROM(EEPROM), 삭제가능한 프로그래머블 ROM(EPROM), 그리고 위상 변화 랜덤 액세스 메모리(PCRAM)를 포함할 수 있다.
메모리 디바이스는 서로 조합되어 솔리드 스테이트 드라이브(solid state drive : SSD)를 형성할 수 있다. SSD는 다양한 다른 유형의 비휘발성 및 휘발성 메모리 중에서, 비휘발성 메모리, 예를 들어, NAND 플래시 메모리와 NOR 플래시 메모리, 및/또는 휘발성 메모리, 예를 들어, DRAM 및 SRAM을 포함할 수 있다.
SSD는 컴퓨터용 주 저장 디바이스(main storage device)로서 하드 디스크 드라이브(hard disk drive)를 대체하기 위해 사용될 수 있는데, 이는 SSD가, 예를 들어, 성능, 크기, 무게, 견고함, 동작 온도 범위, 그리고 전력 소모의 점에서 하드 드라이브를 능가하는 장점을 가질 수 있기 때문이다. 예를 들어, SSD는 움직이는 부분들이 적기 때문에 자기 디스크 드라이브(magnetic disk drive)에 비교할 때 뛰어난 성능을 가질 수 있으며, 이것은 탐색 시간(seek time), 대기(latency), 그리고 자기 디스크 드라이브에 수반된 다른 전자-기계적 지연을 개선할 수 있다. SSD 제조업체들은 비휘발성 플래시 메모리를 사용하여 내부 배터리 공급을 사용하지 않을 수 있는 플래시 SSD를 생성하며, 따라서 드라이브가 보다 다목적이며 컴팩트하여 질 수 있게 한다.
SSD는 다수의 메모리 디바이스, 예를 들어, 다수의 메모리 칩(본 명세서에서 사용된 바와 같이, "다수의" 무엇은 하나 이상의 그런 것을 지칭할 수 있다; 예를 들어, 다수의 메모리 디바이스들은 하나 이상의 메모리 디바이스를 지칭할 수 있다)을 포함할 수 있다. 당업자는 메모리 칩이 다수의 다이(dies)를 포함할 수 있다는 것을 이해할 것이다. 각각의 다이는 다수의 메모리 어레이와 그 위의 주변 회로를 포함할 수 있다. 메모리 어레이는 다수의 플레인(planes)을 포함할 수 있으며, 각각의 플레인은 다수의 메모리 셀의 물리적 블록을 포함한다. 각각의 물리적 블록은 다수의 데이터의 섹터를 저장할 수 있는 다수의 메모리 셀의 페이지를 포함할 수 있다.
기타 커맨드 중에서 프로그램 커맨드, 판독 커맨드, 그리고 삭제 커맨드와 같은 커맨드가 SSD의 동작 동안 사용될 수 있다. 예를 들면, 프로그램, 예를 들어, 기록 커맨드는 솔리드 스테이트 드라이브 상에 데이터를 프로그램하기 위해 사용될 수 있으며, 판독 커맨드는 솔리드 스테이트 드라이브 상의 데이터 판독을 위해 사용될 수 있고, 삭제 커맨드는 솔리드 스테이트 드라이브 상의 데이터를 삭제하기 위해 사용될 수 있다.
도 1은 본 개시의 하나 이상의 실시예에 따른 메모리 시스템의 블록도.
도 2는 본 개시의 하나 이상의 실시예에 따라 동작될 수 있는 메모리 컨트롤러의 기능 블록도.
도 3은 본 개시의 하나 이상의 실시예에 따른 채널 커맨드 큐(channel command queue)의 블록도.
도 4A 및 4B는 본 개시의 하나 이상의 실시예에 따른 채널 커맨드 큐의 블록도.
본 발명 개시는 커맨드를 수정하기 위한 방법, 디바이스, 모듈, 그리고 시스템을 포함한다. 하나의 디바이스 실시예는 채널을 포함하는 메모리 컨트롤러(memory controller)를 포함하며, 여기서 채널은 커맨드를 유지하도록 구성된 커맨드 큐, 그리고 큐 내의 적어도 다수의 커맨드를 수정하고 수정된 커맨드를 실행하도록 구성된 회로를 포함한다.
본 개시의 이어지는 상세한 설명에 있어서, 본 개시의 부분을 형성하는 첨부 도면에 대해 기준이 만들어지며, 여기서 개시의 하나 이상의 실시예가 어떻게 실행될 수 있는지 예로서 도시된다. 이들 실시예는 충분히 상세하게 기술되어 당업자는 본 개시의 실시예를 실행할 수 있으며, 다른 실시예들이 활용될 수 있으며 프로세스, 전기적, 그리고/또는 구조적 변화가 본 개시의 범주를 벗어남이 없이 이루어질 수 있다는 것이 이해될 것이다. 본 명세서에서 사용된 바와 같이, 표시 "N"과 "M"은, 특히 도면내 참조 번호에 대해, 그와 같이 지정된 다수의 특별한 특징이 본 개시의 하나 이상의 실시예와 함께 포함될 수 있다는 것을 나타낸다. 표시기는 동일 또는 상이한 수의 특별한 특징들을 표현할 수 있다.
본 명세서에서 도면들은 제 1 숫자 또는 숫자들은 도면 번호에 대응하고 나머지 숫자는 도면 내 소자 또는 구성요소를 식별하는 번호 매김 관례를 따른다. 상이한 도면들간 유사한 소자 또는 구성요소들은 유사한 숫자의 사용에 의해 식별될 수 있다. 예를 들어, 101은 도 1의 소자 "10"일 수 있고, 유사한 소자가 도 2에서 201로서 참조될 수 있다. 이해될 바와 같이, 본 명세서의 다양한 실시예들에 도시된 소자들이 추가, 교환, 그리고/또는 제거되어 본 개시의 다수의 추가적인 실시예를 제공할 수 있다. 게다가, 이해될 바와 같이, 도면에서 제공된 소자의 비율과 상대적인 스케일은 본 발명의 실시예들을 예시하기 위한 것이며, 제한적 의미로서 이해되어서는 안된다.
도 1은 본 개시의 하나 이상의 실시예에 따른 메모리 시스템(120)의 블록도를 예시한다. 하나 이상의 실시예에서, 메모리 시스템(120)은 솔리드 스테이트 드라이브(solid state drive)일 수 있다. 도 1의 실시예는 메모리 시스템(120)의 일 실시예의 구성요소 및 구조를 예시한다. 도 1에 예시된 실시예에서, 메모리 시스템(120)은 컨트롤러(101), 인터페이스 커넥터(103), 그리고 메모리 어레이(130-1, ..., 130-N)를 포함한다. 하나 이상의 실시예에서, 하우징이 필수적 이지는 않다고 하더라도, 메모리 시스템(120)은 메모리 시스템(120)을 둘러싸기 위해 하우징을 포함할 수 있다.
인터페이스 커넥터(103)는 메모리 시스템(120)과 컴퓨팅 디바이스와 같은 다른 디바이스 간에 정보를 통신하기 위해 사용될 수 있다. 예를 들면, 메모리 시스템(120)은 컴퓨팅 디바이스 내의 데이터 스토리지를 위해 사용되며, 여럿 가운데 인터페이스(103)는 사타(serial advanced technology attachment : SATA)일 수 있다.
컨트롤러(101)는 메모리 어레이(130-1,...,130-N) 상에서 다른 동작중에서 판독, 프로그램(예를 들어, 기록), 그리고 삭제 동작을 수행하기 위해 메모리 어레이(130-1,...,130-N)와 통신할 수 있다. 컨트롤러(101)는 메모리 시스템(120)에서 동작을 관리하기 위해 사용될 수 있다. 컨트롤러(101)는 다수의 집적 회로일 수 있는 회로를 가질 수 있다. 컨트롤러(101)는 또한 다수의 이산 구성요소일 수 있는 회로를 가질 수 있다. 하나의 실시예에 대해, 컨트롤러(101) 내의 회로는 다수의 메모리 어레이에 걸쳐 액세스를 제어하기 위한 제어 회로를 포함할 수 있다. 컨트롤러(101) 내의 회로는 또한 외부 호스트와 메모리 시스템(120)간에 변환 층(translation layer)를 제공하기 위한 제어 회로를 또한 포함할 수 있다. 따라서, 메모리 컨트롤러는 적절한 때에 적절한 I/O 접속에서 적절한 신호를 수신하기 위해 메모리 어레이의 (도 1에 도시되지 않은)I/O 접속을 선택적으로 결합할 수 있다. 유사하게, 호스트와 메모리 시스템(120)간의 통신 프로토콜은 메모리 어레이, 예를 들어, 메모리 어레이(130-1,...,130-N)의 액세스를 위해 요구되는 것과 다를 수 있다. 게다가, 메모리 컨트롤러(101)는 호스트로부터 수신된 커맨드를 적절한 커맨드로 변환하여 메모리 어레이에 대해 원하는 액세스를 달성한다.
메모리 어레이(130-1,...,130-N)는 다양한 유형의 휘발성 및 비휘발성 메모리 어레이(예를 들어, 여럿 가운데, 플래시 및 DRAM 어레이)일 수 있다. 하나 이상의 실시예에서, 메모리 어레이(130-1,...,130-N)는 솔리드 스테이트 메모리 어레이일 수 있다. 메모리 어레이(130-1,...,130-N)는 유닛으로 그룹화될 수 있는 다수의 메모리 셀을 포함할 수 있다. 본 명세서에 사용된 바와 같이, 유닛은 페이지, 물리적 블록, 플레인, 전체 어레이, 또는 기타 메모리 셀의 그룹과 같은 다수의 메모리 셀을 포함할 수 있다. 예를 들면, 메모리 어레이는 다수의 플레인을 포함할 수 있으며, 각각의 플레인은 다수의 물리적 블록을 포함한다. 각각의 물리적 블록 내의 메모리 셀은 유닛으로서 함께 삭제될 수 있으며, 예를 들어, 각각의 물리적 블록 내의 셀은 실질적으로 동시에 삭제될 수 있다. 예를 들면, 각각의 물리적 블록 내의 셀은 단일 동작으로 함께 삭제될 수 있다. 물리적 블록은 다수의 페이지를 포함할 수 있다. 각각의 페이지 내의 메모리 셀은 유닛으로서 함께 프로그램될 수 있다, 예를 들어, 각각의 페이지 내의 셀은 실질적으로 동시에 프로그램될 수 있다. 각각의 페이지 내의 셀은 또한 유닛으로서 함께 판독될 수 있다. 예로서, 128GB 메모리 디바이스는 페이지당 4314 바이트의 데이터, 물리적 블록 당 128페이지, 플레인 당 2048 물리적 블록, 그리고 디바이스 당 16 플레인을 포함할 수 있다. 그러나, 실시예들은 이러한 예에 제한되지 않는다.
메모리 시스템의 물리적 섹터는 사용자 데이터뿐만 아니라 논리 섹터(logical sector)에 대응할 수 있으며 에러 정정 코드(error correction code : ECC) 정보, 그리고 논리 블록 어드레스(LBA) 정보와 같은 오버헤드 정보(overhead information)를 포함할 수 있다. 당업자는 논리 블록 어드레싱이 정보의 논리 섹터를 식별하기 위해 호스트에 의해 종종 사용된 기법(scheme)이라는 것을 이해할 것이다. 예로서, 각각의 물리적 센터는 다른 다수의 바이트 중에서 다수의 바이트, 예를 들어, 256바이트, 512바이트, 또는 1024바이트를 나타내는 정보를 저장할 수 있다. 그러나, 본 개시의 실시예는 물리적 섹터에 저장되거나 논리 섹터와 연관된 데이터의 특별한 수의 바이트에 제한되지 않는다.
도 2는 본 개시의 하나 이상의 실시예에 따라서 동작될 수 있는 메모리 컨트롤러(201)의 기능 블록도를 예시한다. 하나 이상의 실시예에서, 메모리 컨트롤러(201)는 솔리드 스테이트 드라이브 컨트롤러일 수 있다. 하나 이상의 실시예에서, 메모리 컨트롤러(201)는 도 1에 도시된 컨트롤러(101)와 유사할 수 있다.
도 2에 도시된 바와 같이, 메모리 컨트롤러(201)는 전단부(front end portion)와 후단부(back end portion)를 포함한다. 전단부는 전단 채널(front end channel)에 대응할 수 있으며, 후단부는 다수의 후단 채널, 예를 들어, 후단 채널 1(210-1),...,후단 채널 N(210-N)에 대응할 수 있다. 메모리 컨트롤러(201)는 전단 채널과 후단 채널을 사용하여 메모리 어레이(230-1,...,230-N)와 통신함으로써 메모리 어레이(230-1,...,230-N) 상에서 다른 동작중에서 판독, 프로그램(예를 들어, 기록), 그리고 삭제 동작을 수행한다. 하나 이상의 실시예에서, 메모리 어레이(230-1,...,230-N)는 솔리드 스테이트 메모리 어레이일 수 있다. 하나 이상의 실시예에서, 메모리 어레이(230-1,...,230-N)는 도 1에 도시된 메모리 어레이(130-1,...,130-N)와 유사할 수 있다.
도 2에 도시된 바와 같이, 컨트롤러(201)의 전단부, 예를 들어, 전단 채널은 호스트 인터페이스(202), 커맨드 프로세서(204), 전단 다이렉트 메모리 액세스(DMA)(206), 그리고 커맨드 디스패처(command dispather)(208)를 포함한다. 후단 채널(210-1,...,210-N)은 후단 채널 프로세서(211-1,...,211-N), 후단 채널 DMA(213-1,...,213-N), 후단 채널 커맨드 큐(215-1,...,215-N), 데이터 버퍼(217-1,...,217-N), 그리고 ECC 엔진/어레이 인터페이스(219-1,...,219-N)를 포함할 수 있다. 비록 도 2에 도시된 실시예가 후단 채널 프로세서(back end processor)를 포함하는 것으로서 각각의 후단 채널(201-1,...,210-N)을 예시한다고 하더라도, 본 개시의 실시예는 이에 제한되지 않는다. 예를 들면, 후단부는 회로, 예를 들어, 응용 주문형 집적회로(application-specific integrated circuit : ASIC)과 같은 단일 후단 프로세서 또는 하드웨어 로직을 포함할 수 있으며, 이들은 각각의 후단 채널(210-1,...,210-N) 상에서 동작할 수 있다.
도 2에 예시된 실시예에서, 전단 채널은 전단 DMA(206)과 커맨드 디스패처(208)를 통해 후단 채널, 예를 들어, 후단 채널(210-1,...,210-N)에 결합될 수 있다. 예를 들면, 전단 DMA(206)는 후단 채널 프로세서(211-1,...,211-N)과 후단 채널 DMA(213-1,...,213-N)에 결합될 수 있다. 커맨드 디스패처(208)는 후단 채널 커맨드 큐(215-1,...,215-N)에 결합될 수 있다. 호스트 인터페이스(202)는 컨트롤러(201)와 컴퓨팅 디바이스와 같은 (도시되지 않은)호스트 디바이스 간의 정보를 통신하기 위해 사용될 수 있다. 하나 이상의 실시예에서, 호스트 인터페이스(202)는 인터페이스 커넥터(interface connector), 예를 들어, 도 1에 도시된 인터페이스 커넥터(103)를 통해 컨트롤러(201)와 호스트 디바이스 간의 정보를 통신하기 위해 사용될 수 있다.
하나 이상의 실시예에서, 호스트 디바이스와 컨트롤러(201) 간에 통신된 정보는 여러 커맨드 중에서 프로그램 커맨드, 판독 커맨드, 그리고 삭제 커맨드와 같은 다수의 커맨드를 포함할 수 있다. 프로그램, 예를 들어, 기록 커맨드는 메모리 어레이(230-1,...,230-N) 상에 데이터를 프로그램하기 위해 사용될 수 있으며, 판독 커맨드는 메모리 어레이(230-1,...,230-N) 상의 데이터를 판독하기 위해 사용될 수 있고, 삭제 커맨드는 메모리 어레이(230-1,...,230-N) 상의 데이터를 삭제하기 위해 사용될 수 있다. 커맨드는 여러 정보 중에서 명령이 이루어지는 동작의 유형(예를 들어, 프로그램, 판독, 또는 삭제)을 표시하는 정보, 양(예를 들어, 다수의 논리 섹터), 그리고 커맨드의 실행이 시작될 로케이션(예를 들어, 시작 어드레스)을 포함할 수 있다. 커맨드가 프로그램 커맨드 이면, 커맨드가 대응하는 메모리 셀에 프로그램될 데이터에 (즉시일 필요는 없지만)이어질 수 있다. 하나 이상의 실시예에서, 양은 다수의 메모리 셀에 대응하는 호스트의 다수의 논리 섹터일 수 있다. 하나 이상의 실시예에서, 커맨드에 포함된 "로케이션"은 논리 블록 어드레스(logical block address : LBA)일 수 있다.
데이터 버퍼(217-1,...,217-N)는 호스트 인터페이스(202), 전단 DMA(206), 그리고 후단 채널 DMA(213-1,...,213-N)를 통해 호스트로부터 메모리 어레이(230-1,...,230-N)상에 프로그램될 데이터를 수신할 수 있다. 데이터는 ECC 엔진/어레이 인터페이스(219-1,...,219-N)를 통해 데이터 버퍼(217-1,...,217-N)로부터 메모리 어레이(230-1,...,230-N)로 전송될 수 있다.
하나 이상의 실시예에서, LBA는 호스트의 논리 섹터에 연관될 수 있다, 예를 들어, 호스트의 각각의 논리 섹터는 특별한 LBA와 연관될 수 있다. 예를 들면, LBA(1000)는 제 1 논리 섹터와 연관될 수 있으며, LBA(1001)는 제 2 논리 섹터와 연관될 수 있고, LBA(1002)는 제 3 논리 등과 연관될 수 있다. 다른 예로서, LBA(1000)에서 시작하는 16 논리 섹터에 대응하는 어레이 내의 메모리 셀을 프로그램하기 위해 커맨드는 LBA(1000부터 1016까지)와 연관된 메모리 셀, 예를 들어, LBA(1000부터 1016까지)과 연관된 논리 섹터에 대응하는 메모리 셀을 프로그램할 수 있다.
커맨드 디스패처(208)는 호스트 인터페이스(202)를 통해 호스트로부터 다수의 커맨드를 수신할 수 있다. 커맨드 디스패처(208)는 수신된 커맨드를 유지하고, 적절한 후단 채널(210-1,...,210-N)로 전송할 수 있다. 예를 들면, 후단 채널 큐(215-1,...,215-N)는 커맨드 디스패처(208)로부터 커맨드를 수신할 수 있다. 하나 이상의 실시예에서, 후단 채널(210-1,...,210-N)은 커맨드 디스패처(208)가 호스트로부터 커맨드를 수신하는 순서로 커맨드를 수신할 수 있다. 하나 이상의 실시예에서, 커맨드 디스패처(208)는 특별한 수의 커맨드까지 유지할 수 있으며, 커맨드 디스패처(208)는 커맨드 디스패처(208)가 특별한 수의 커맨드를 유지하고 있다면, 예를 들어, 커맨드 디스패처(208)가 가득 차면 호스트로부터 커맨드를 수신할 수 없을 수도 있다.
하나 이상의 실시예에서, 후단 채널 커맨드 큐(215-1,...,215-N)는 커맨드 디스패처(208)로 부터 수신된 다수의 커맨드를 유지할 수 있다. 하나 이상의 실시예에서, 큐는 큐가 실행될 순서로 커맨드를 유지할 수 있다. 하나 이상의 실시예에서, 큐는 커맨드 디스패처로부터 수신된 순서로 커맨드를 유지할 수 있다. 하나 이상의 실시예에서, 각각의 큐는 커맨드 디스패처(208)에 의해 유지될 수 있는 다수의 커맨드와 동일한 다수의 커맨드를 유지할 수 있다. 예를 들면, 하나 이상의 실시예에서, 커맨드 디스패처(208)와 큐는 32 커맨드까지 각각 유지할 수 있다. 그러나, 본 개시의 실시예는 특별한 커맨드의 수에 제한되지 않는다.
하나 이상의 실시예에 따르면, 후단 채널 프로세서(211-1,...,211-N)는 큐 내에 유지된 커맨드가 수정될 수 있는 지를 판단할 수 있으며, 따라서 이를테면 이들이 큐 내에 유지되는 한 커맨드를 수정할 수 있다. 하나 이상의 실시예에서, 큐 내에 커맨드가 유지되는 순서가 변경될 수 있다면, 큐 내의 다수의 커맨드가 하나의 커맨드(예를 들어, 단일 커맨드)로 병합될 수 있다면, 또는 큐 내의 다수의 커맨드가 큐 내의 후속 커맨드에 의해 겹쳐 기록될 것이라면, 커맨드는 수정될 수 있다. 하나 이상의 실시예에서, 커맨드 수정은 다른 수정들 중에서, 커맨드가 큐 내에 유지되는 순서의 변경, 큐내 다수의 병합가능한 커맨드를 단일 커맨드로 병합, 또는 큐 내의 후속 커맨드에 의해 겹쳐서 기록될 큐 내의 다수의 커맨드를 삭제하는 것을 포함할 수 있다.
하나 이상의 실시예에서, 커맨드들이 오버랩핑 커맨드들이면, 큐 내에 유지된 커맨드는 병합가능, 예를 들어, 단일 커맨드로 병합될 수 있다. 본 명세서에서 사용된 바와 같이, 오버랩핑 커맨드는 오버랩핑 어드레스, 이를 테면 오버랩핑 논리 블록 어드레스(LBA)와 연관된 다수의 커맨드이다. 예를 들면, 오버랩핑 커맨드는 커맨드가 실행될 메모리 어레이 내의 공통 로케이션과 연관된 커맨드를 포함할 수 있다. 특정한 예는 호스트의 48 논리 섹터, 예를 들어, 논리 블록 어드레스(LBA)(1000)에서 시작하는 호스트로부터 데이터의 48 논리 섹터에 대응하는 어레이 내의 메모리 셀을 프로그램하기 위해 제 1 커맨드를 포함하고, LBA(1040)에서 시작하는 호스트의 16 논리 섹터에 대응하는 어레이 내의 메모리 셀들을 프로그램하기 위해 제 2 커맨드를 포함한다. 제 1 및 제 2 커맨드는 오버랩핑 커맨드인데, 이는 양 커맨드들이 LBA(1040)에서 시작하는 동일한 8 논리 섹터와 연관되기 때문이다. 따라서, 이들 두 커맨드는 단일 커맨드로 병합되어 LBA(1000)에서 시작하는 56 논리 섹터에 대응하는 메모리 셀을 프로그램할 수 있다. 큐 내에 유지된 오버랩핑 커맨드는 이들이 큐 내에 수신된 순서에 관계없이 병합될 수 있다.
하나 이상의 실시예에서, 큐 내에 유지된 커맨드는 이들이 순차적인 커맨드이면 병합가능, 예를 들어, 단일 커맨드로 병합될 수 있다. 본 명세서에서 사용된 바와 같이, 순차적인 커맨드는 커맨드가 실행될 순차적인 어드레스, 이를 테면 순차적인 LBA와 연관된 다수의 커맨드이다. 예를 들어, 순차적인 커맨드는 다른 커맨드와 연관된 논리 섹터(들)에 바로 앞서거나 바로 뒤이은 논리 섹터와 연관된 커맨드를 포함할 수 있다. 특정한 예는 LBA(1000)에서 시작하는 호스트의 16 논리 섹터에 대응하는 어레이내 메모리 셀을 프로그램하기 위해 제 1 커맨드와 LBA(1016)에서 시작하는 호스트의 32 논리 섹터에 대응하는 어레이 내의 메모리 셀을 프로그램하기 위해 제 2 커맨드를 포함한다. 제 1 및 제 2 커맨드는 순차적인 커맨드이며, 이는 제 1 커맨드와 연관된 어드레스가 제 2 커맨드와 연관된 어드레스에 바로 앞서기 때문, 예를 들어, 제 2 커맨드와 연관된 로케이션이 제 1 커맨드와 연관된 로케이션에 바로 이어지기 때문이다. 따라서, 이들 두 커맨드는 단일 커맨드로 병합되어 LBA(1000)에서 시작하는 호스트의 48 논리 섹터에 대응하는 메모리 셀을 프로그램할 수 있다. 큐 내에 유지된 순차적인 커맨드는 이들이 큐 내에 수신되는 순서에 관계없이 병합될 수 있다.
하나 이상의 실시예에서, 큐 내의 제 1 커맨드는 제 1 커맨드와 순차적인 커맨드가 둘 다 커맨드가 실행될 동일한 어드레스, 이를 테면, 동일한 LBA에 연관되면 큐 내의 후속적인 커맨드에 의해 겹쳐 기록될 것이다. 예를 들면, LBA(1000)에서 시작하는 호스트의 16 논리 섹터에 대응하는 어레이 내의 메모리 셀을 프로그램하기 위해 제 1 커맨드는 LBA(1000)에서 시작하는 호스트의 16 논리 섹터에 대응하는 어레이 내의 메모리 셀을 프로그램하기 위한 후속적인 커맨드에 의해 겹쳐 기록될 것인데, 이는 제 1 커맨드와 후속적인 커맨드 둘 다 동일한 어드레스와 연관되기 때문이다. 따라서, 제 1 커맨드가 삭제될 수 있다.
하나 이상의 실시예에서, 큐 내의 제 1 커맨드는 제 1 커맨드와 연관된 어드레스가 후속적인 커맨드와 연관된 어드레스의 범위 이내이면 큐 내의 후속적인 커맨드에 의해 겹쳐 기록될 것이다. 예를 들면, LBA(1000)에서 시작하는 호스트의 16 논리 섹터에 대응하는 어레이 내의 메모리 셀을 프로그램하기 위해 제 1 커맨드는 LBA(1000)에서 시작하는 호스트의 48 논리 섹터에 대응하는 어레이 내의 메모리 셀을 프로그램하기 위한 후속적인 커맨드에 의해 겹쳐 기록될 것이다. 따라서, 제 1 커맨드가 삭제될 수 있다.
후단 채널 프로세서(211-1,...,211-N)는 수정된 커맨드가 큐 내에 유지되는 순서에 따라서 수정된 커맨드를 실행할 수 있다. 예를 들면, 커맨드가 큐 내에 유지되는 순서를 변경함으로써 커맨드가 수정되면, 후단 채널 프로세서는 변경된 순서에 따라서 커맨드를 실행할 수 있다. 다수의 커맨드를 단일 커맨드로 병합함으로써 커맨드가 수정되면, 후단 채널 프로세서는 다수의 커맨드를 개별적으로 실행하는 대신에 단일 커맨드를 실행할 수 있다. 후속적인 커맨드에 의해 기록될 커맨드(들)를 삭제함으로써 커맨드가 수정되면, 후단 채널 프로세서는 삭제된 커맨드(들)이 아니라 후속적인 커맨드를 실행할 수 있다.
하나 이상의 실시예에서, 후단 채널 커맨드 큐(215-1,...,215-N) 내에 유지된 커맨드가 다수의 커맨드를 단일 커맨드로 병합함으로써 수정되면, 단일 커맨드와 또한 병합가능한 커맨드 디스패처(208) 내에 유지된 어떠한 커맨드가 완성된 것으로 간주될 수 있다. 후단 채널 프로세서(211-1,...,211-N)는 이러한 커맨드가 커맨드 프로세서(204)에 대해 완성되도록 통신할 수 있다. 예를 들면, LBA(1000)에서 시작하는 호스트의 48 논리 섹터에 대응하는 어레이 내의 메모리 셀을 프로그램하기 위해 큐(215-1) 내의 제 1 커맨드 및 LBA(1040)에서 시작하는 호스트의 16 논리 섹터에 대응하는 어레이 내의 메모리 셀을 프로그램하기 위해 큐(215-N) 내의 제 2 커맨드가 단일 커맨드, 예를 들어, LBA(1000)에서 시작하는 호스트의 56 논리 섹터에 대응하는 메모리 셀을 프로그램하기 위한 커맨드로 병합되면, LBA(1000)에서 시작하는 호스트의 16 논리 섹터에 대응하는 메모리 셀을 프로그램하기 위해 커맨드 디스패처(208) 내에 유지된 커맨드가 완성된 것으로 간주될 수 있고, 예를 들어, 후단 채널 프로세서(211-1)는 이러한 커맨드가 완성되는 커맨드 프로세서(204)와 통신할 수 있으며, 이는 이러한 커맨드가 단일 커맨드와 병합가능하기 때문이다.
후단 채널 프로세서(211-1,...,211-N)는 또한 수정된 커맨드에 따라서 메모리 어레이(230-1,...,230-N) 상에 프로그램될 데이터를 또한 수정할 수 있다. 예를 들면, 후단 채널 프로세서(211-1,...,211-N)는 수정된 커맨드를 정합시키기 위해 데이터를 수정할 수 있다. 후단 채널 프로세서(211-1,...,211-N)는 데이터 버퍼(217-1,...,217-N)가 데이터를 수신하기 전, 예를 들어, 데이터가 전단 DMA(206)로부터 데이터 버퍼(217-1,...,217-N)로 전송될 때 데이터를 수정할 수 있다. 후단 채널 프로세서(211-1,...,211-N)는 또한 데이터가 데이터 버퍼(217-1,...,217-N)로부터 메모리 어레이(230-1,...,230-N)로 전송된 후 데이터를 수정할 수 있다.
하나 이상의 실시예에 있어서, 후단 채널 커맨드 큐(215-1,...,215-N)는 후단 채널 프로세서(211-1,...,211-N)가 수정된 커맨드를 실행하는 동안 커맨드 디스패처(208)로부터 수신된 추가적인 커맨드를 유지할 수 있다. 후단 채널 프로세서(211-1,...,211-N)는 수정된 커맨드가 실행되는 동안 추가적인 커맨드를 수정할 수 있다.
ECC 엔진/어레이 인터페이스(219-1,...,219-N)는 메모리 컨트롤러(201)를 메모리 어레이(230-1,...,230-N)에 결합하기 위해 사용될 수 있다. 후단 채널 프로세서(211-1,...,211-N)는 ECC 엔진/어레이 인터페이스(219-1,...,219-N)를 통해 메모리 어레이(230-1,...,230-N) 상의 수정된 커맨드를 실행할 수 있다. 비록 도 2에 도시된 실시예가 후단 채널 프로세서(211-1,...,211-N)를 통해 전도되는 커맨드를 예시한다고 하더라도, 본 개시의 실시예는 이에 제한되지 않는다. 예를 들면, 커맨드는 ECC 엔진/어레이 인터페이스(219-1,...,219-N)를 통해 후단 채널 커맨드 큐(215-1,...,215-N)로부터 메모리 어레이(230-1,...,230-N)로 직접 전도될 수 있다.
데이터 버퍼(217-1,...,217-N)는 메모리 어레이(230-1,...,230-N) 내에 위치된 다수의 메모리 셀 상에서 수행된 다수의 앞선 판독 동작, 예를 들어, 이전 판독 커맨드에 응답한 판독 동안의 데이터 판독을 유지할 수 있다. 하나 이상의 실시예에서, 후단 채널 커맨드 큐(215-1,...,215-N) 내의 유지된 커맨드는 앞서 판독된, 예를 들어, 데이터가 이미 데이터 버퍼(217-1,...,217-N) 내에 유지되는 다수의 메모리 셀을 판독하기 위해 다수의 커맨드를 포함할 수 있다. 이러한 실시예에서, 후단 채널 프로세서(211-1,...,211-N)는 데이터 버퍼(217-1,...,217-N)를 액세스함으로써, 예를 들어, 메모리 어레이(230-1,...,230-N)를 액세스하지 않거나 단지 데이터 버퍼(들) 내에 존재하지 않는 데이터에 대해서만 메모리 어레이(들)를 액세스함으로써 이들 판독 커맨드를 실행할 수 있다.
하나 이상의 실시예에서, 다수의 병합가능한 커맨드를 단일 커맨드로 병합하여 커맨드를 수정함으로써 메모리 시스템에 의해 수행된 부분적인 페이지 프로그래밍 동작의 수를 제거하거나 감소시킬 수 있으며, 이는 시스템의 전반적인 성능 및/또는 신뢰성을 개선할 수 있다. 당업자에 의해 이해될 바와 같이, 부분적인 페이지 프로그래밍 동작은 새로운 블록을 위치시키고, 데이터 버퍼 내로 오래된 블록 내에 위치된 페이지 상에 저장된 데이터를 판독하며, 데이터 버퍼 내의 데이터는 새로운 데이터와 오래된 블록 내의 페이지로부터 판독된 데이터 둘 다를 포함하도록 새로운 데이터와 데이터 버퍼 내의 데이터를 병합하고/하거나 데이터 버퍼 내의 데이터를 대체하고, 그리고 데이터 버퍼 내의 데이터로 새로운 블록 내의 페이지를 프로그래밍하는 것을 포함할 수 있다. 부분적인 페이지 프로그래밍 동작은 또한 오래된 블록 내의 나머지 페이지 상에 저장된 데이터를 새로운 블록 내의 나머지 페이지로 전달(예를 들어, 오래된 블록 내의 나머지 페이지 상에 저장된 데이터를 판독하고 이러한 데이터를 가지고 새로운 블록 내의 나머지 페이지를 프로그래밍)하고, 삭제를 위해 오래된 블록을 마킹하며, 그리고 오래된 블록을 삭제하는 것을 포함할 수 있다.
당업자에 의해 이해될 바와 같이, 부분적인 페이지 프로그래밍 동작은 페이지의 일부만을 프로그램하기 위한 커맨드에 기인할 수 있다. 예를 들면, 페이지의 나머지 부분을 프로그램하기 위한 커맨드가 이미 실행되었다면 페이지의 일부만을 프로그램하기 위해 커맨드는 부분적인 페이지 프로그래밍 동작을 개시할 수 있다. 그러나, 본 발명 개시의 하나 이상의 실시예에 따라서 페이지의 나머지 부분(들)을 프로그램하기 위한 다수의 커맨드를 갖는 페이지의 일부만을 프로그램하기 위한 커맨드를 병합함으로써 부분적인 페이지 프로그래밍 동작이 회피될 수 있으며, 예를 들어, 전술한 부분적인 페이지 프로그래밍 동작과 연관된 동작을 수행할 필요가 회피될 수 있다. 예를 들면, LBA(3000)에서 시작하는 호스트의 4 논리 섹터에 대응하는 메모리 셀을 포함하는 페이지가 포함된 부분적인 페이지 프로그래밍 동작은 본 발명 개시의 하나 이상의 실시예에 따라서 LBA(3002)에서 시작하는 호스트의 2 논리 섹터에 대응하는 페이지내 메모리 셀을 프로그램하기 위한 커맨드와 LBA(3000)에서 시작하는 호스트의 2 논리 섹터에 대응하는 페이지내 메모리 셀을 프로그램하기 위한 커맨드를 병합함으로써 회피될 수 있다.
하나 이상의 실시예에서, 커맨드 프로세서(204)는 후단 채널 프로세서(211-1,...,211-N)에 의해 수행된 기능과 유사한 기능을 수행할 수 있다. 예를 들면, 커맨드 프로세서(204)는 커맨드 디스패처(208)에 유지된 커맨드가 수정될 수 있는지를 판단하고, 따라서 이들이 커맨드 디스패처(208) 내에 유지되는 동안 커맨드를 수정할 수 있다. 커맨드가 후단 채널로 전송된 순서가 변경될 수 있다면, 다수의 커맨드가 단일 커맨드로 병합될 수 있다면, 다수의 커맨드가 순차적인 커맨드 등에 의해 겹쳐 기록될 것이라면 커맨드가 수정될 수 있다. 커맨드를 수정하는 것은 커맨드 디스패처(208)가 커맨드를 후단 채널로 전송하는 순서를 변경하는 것, 커맨드 디스패처(208)에 의해 수신된 다수의 병합가능한 커맨드가 단일 커맨드로 병합하는 것, 커맨드 디스패처(208) 등에 의해 수신된 후속적인 커맨드에 의해 겹쳐 기록될 커맨드 디스패처(208)에 의해 수신된 다수의 커맨드를 삭제하는 것을 포함할 수 있다.
하나 이상의 실시예에서, 커맨드 디스패처(208)가 호스트로부터 커맨드를 수신할 수 없을 때, 커맨드 프로세서(204)는 이들 기능을 수행할 수 있고, 예를 들어, 커맨드 디스패처(208) 내에 유지된 커맨드가 수정될 수 있는 지에 따라서 이들이 커맨드 디스패처(208) 내에 유지되는 동안 커맨드를 수정할 수 있다. 예를 들면, 커맨드 프로세서(204)는 커맨드 디스패처(208)가 가득 찰 때 이들 기능을 수행할 수 있다.
하나 이상의 실시예에서, 커맨드 프로세서(204)는 커맨드 디스패처(208)내에 유지된 커맨드가 후단 채널 프로세서(211-1,...,211-N)에 의해 수정되지 않을 커맨드인지를 결정할 수 있다. 커맨드 프로세서(204)가 커맨드 디스패처(208)에 유지된 다수의 커맨드가 후단 채널 프로세서에 의해 수정되지 않을 것이라고 판단하면, 커맨드 프로세서(204)는 후단 채널 프로세서에 의해 수정되지 않을 커맨드로서 이들 커맨드를 마크, 예를 들어, 태그할 수 있다. 수정되지 않을 것으로 커맨드 프로세서(204)에 의해 마크된 커맨드는 이들이 후단 채널 커맨드 큐(215-1,...,215-N) 내에 유지되는 동안 후단 채널 프로세서(211-1,...,211-N)에 의해 수정되지 않을 것이다. 예를 들면, 후단 채널 커맨드 큐(215-1)가 LBA(1000)에서 시작하는 호스트의 48 논리 섹터에 대응하는 어레이 내의 메모리 셀을 프로그램하기 위해 제 1 커맨드와 LBA(1040)에서 시작하는 호스트의 16 논리 섹터에 대응하는 어레이 내의 메모리 셀을 프로그램하기 위해 제 2 커맨드를 유지하고, 커맨드 프로세서(204)가 수정되지 않을 커맨드(들)로서 이들 커맨드의 하나 또는 둘 다 표시한다면, 후단 채널 프로세서(211-1)는 이들 두 커맨드를 수정, 예를 들어, 병합하지 않을 것이다. 수정되지 않을 커맨드는, 예를 들면, 겹침 기록 동작, 예를 들어, 제 1 프로그램 커맨드가 판독 커맨드에 이어지는 동작, 그리고 판독 커맨드가 초기 프로그램 커맨드에 겹쳐 기록하기 위한 제 2 프로그램 커맨드에 이어지는 동작의 일부인 커맨드를 포함할 수 있다. 그러나, 본 개시의 실시예는 제한되지 않으며, 수정되지 않을 커맨드는 다른 유형의 커맨드를 포함할 수 있다.
본 개시의 하나 이상의 실시예에 따라서 메모리 디바이스를 동작하는 것은, 예를 들어, 반복적인 커맨드를 삭제하고 다중 커맨드를 하나의 커맨드로 병합함으로써, 메모리 디바이스의 효율을 증대시킴으로써 다수의 커맨드를 실행하기 위해 사용된 시간을 감소시킬 수 있다. 추가적으로, 후단 채널이 메모리 어레이(230-1,...,230-N)와 단단하게 결합, 예를 들어, 근처에 위치될 수 있기 때문에, 메모리 디바이스의 효율은 본 개시의 하나 이상의 실시예에 따라서 메모리 어레이를 동작함으로써 증대될 수 있다.
도 3은 본 개시의 하나 이상의 실시예에 따른 채널 커맨드 큐(315)의 블록도를 예시한다. 하나 이상의 실시예에서, 채널 커맨드 큐(315)는 도 2에 도시된 후단 채널 커맨드 큐(215-1,...,215-N)와 유사할 수 있다.
도 3에 도시된 바와 같이, 채널 커맨드 큐(315)는 채널 커맨드 슬롯 1(325-1), 채널 커맨드 슬롯 2(325-2), 채널 커맨드 슬롯 3(325-3), 채널 커맨드 슬롯 4(325-4),...채널 커맨드 슬롯 M(325-M)을 포함한다. 각각의 채널 커맨드 슬롯(325-1, 325-2, 325-3, 325-4,...,325-M)은 하나의 커맨드를 유지할 수 있고, 예를 들어, 채널 커맨드 큐(315)는 M 커맨드까지 유지할 수 있다. 하나 이상의 실시예에서, 채널 커맨드 큐(315)내에 유지된 커맨드는 앞서 본 명세서에서 기술된 바와 같이 수정될 수 있다.
하나 이상의 실시예에서, 채널 커맨드 큐(315)내 슬롯의 수, 예를 들어, 채널 커맨드 큐(315)에 의해 유지될 수 있는 커맨드의 수는 도 2에 도시된 커맨드 디스패처(208)와 같은 채널 커맨드 큐(315)가 커맨드를 수신하는 디바이스에 의해 유지될 수 있는 커맨드의 수와 동일할 수 있다. 예를 들면, 커맨드 디스패처(208)가 32 커맨드까지 유지할 수 있으면, 채널 커맨드 큐(315)는 32 슬롯을 가질 수 있고, 예를 들어, 채널 커맨드 큐(315)는 32 커맨드까지 유지할 수 있다. 그러나, 본 개시의 실시예는 이에 제한되지 않으며, 채널 커맨드 큐(315)는 상이한 수의 슬롯을 가질 수 있다.
하나 이상의 실시예에서, 채널 커맨드 큐(315)는 이들이 실행될 순서로 커맨드를 유지할 수 있다. 하나 이상의 실시예에서, 채널 커맨드 큐(315)는 채널 커맨드 큐(315)가 커맨드를 수신하는 순서로 커맨드를 유지할 수 있다. 예를 들면, 채널 커맨드 슬롯 1(325-1)은 채널 커맨드 큐(315)에 의해 첫번째로 실행되고/되거나 수신된 커맨드를 유지할 수 있으며, 채널 커맨드 슬롯 1(325-2)은 채널 커맨드 슬롯 1(325-1) 내에 유지된 커맨드가 채널 커맨드 슬롯(1 325-1) 내에 유지된 커맨드가 수신된 후 실행되고/되거나 수신된 후에 실행될 커맨드를 유지할 수 있으며, 채널 커맨드 슬롯 2(325-3)는 채널 커맨드 슬롯 2(325-2) 내에 유지된 커맨드가 채널 커맨드 슬롯 2(325-2) 내에 유지된 커맨드가 수신된 후 실행되고/되거나 수신된 후에 실행될 커맨드를 유지할 수 있다.
도 4A는 본 개시의 하나 이상의 실시예에 따른 채널 커맨드 큐(415)의 블록도를 예시한다. 하나 이상의 실시예에서, 채널 커맨드 큐(415)는 도 2에 도시된 후단 채널 커맨드 큐(215-1,...,215-N) 및 도 3에 도시된 채널 커맨드 큐(315)와 유사할 수 있다. 채널 커맨드 큐(415)는 채널 커맨드 슬롯(425-1, 425-2, 425-3, 425-4, 425-5, 425-6, 425-7, 425-8,...,425-M)을 포함하고, 이는 도 3에 도시된 채널 커맨드 슬롯 1(325-1), 채널 커맨드 슬롯 2(325-2), 채널 커맨드 슬롯 3(325-3), 채널 커맨드 슬롯 4(325-4),...채널 커맨드 슬롯 M(325-M)과 유사할 수 있다.
도 4A에 예시된 실시예에서, 각각의 채널 커맨드 슬롯(425-1 부터 425-M까지) 커맨드가 유지된다. 예를 들면, 채널 커맨드 슬롯(425-1)은 커맨드 1을 유지하고, 채널 커맨드 슬롯(425-2)은 커맨드 2 등을 유지한다. 커맨드 1은 LBA(1000)에서 시작하는 호스트의 16 논리 섹터, 예를 들어, 호스트로부터 데이터의 16 논리 섹터에 대응하는 어레이 내의 메모리 셀을 프로그램하기 위한 커맨드이다. 커맨드 2는 LBA(2000)에서 시작하는 호스트의 4 논리 섹터에 대응하는 어레이 내의 메모리 셀을 판독하기 위한 커맨드이다. 커맨드 3은 LBA(1000)에서 시작하는 호스트의 48 논리 섹터에 대응하는 어레이 내의 메모리 셀을 판독하기 위한 커맨드이다. 커맨드 4는 LBA(2002)에서 시작하는 호스트의 10 논리 섹터에 대응하는 어레이 내의 메모리 셀을 판독하기 위한 커맨드이다. 커맨드 5는 LBA(2000)에서 시작하는 호스트의 16 논리 섹터에 대응하는 어레이 내의 메모리 셀을 판독하기 위한 커맨드이다. 커맨드 6은 LBA(1040)에서 시작하는 호스트의 16 논리 섹터에 대응하는 어레이 내의 메모리 셀을 판독하기 위한 커맨드이다. 커맨드 7은 LBA(3000)에서 시작하는 호스트의 2 논리 섹터에 대응하는 어레이 내의 메모리 셀을 판독하기 위한 커맨드이다. 커맨드 8은 LBA(3002)에서 시작하는 호스트의 2 논리 섹터에 대응하는 어레이 내의 메모리 셀을 판독하기 위한 커맨드이다.
채널 커맨드 큐(415) 내에 유지된 커맨드는 본 개시의 하나 이상의 실시예에 따라서 수정될 수 있다. 예를 들면, 채널 커맨드 슬롯(425-1, 425-3, 그리고 425-6)내 커맨드는 LBA(1000)에서 시작하는 호스트의 56 논리 섹터에 대응하는 어레이 내의 메모리 셀을 프로그램하기 위해 커맨드(예를 들어, 단일 커맨드)로 병합될 수 있다. 채널 커맨드 슬롯(425-2 및 425-4) 내의 커맨드는 삭제될 수 있다. 채널 커맨드 슬롯(425-7 및 425-8) 내의 커맨드는 LBA(3000)에서 시작하는 호스트의 4 논리 섹터에 대응하는 어레이 내의 메모리 셀을 프로그램하기 위해 단일 커맨드로 병합될 수 있다.
도 4B는 도 4A에 도시된 커맨드가 본 개시의 하나 이상의 실시예에 따라서 수정된 후 채널 커맨드 큐(415)의 블록도를 예시한다. 도 4B에 도시된 바와 같이, 채널 커맨드 슬롯(425-1)에 유지된 커맨드 1은 LBA(1000)에서 시작하는 호스트의 56 논리 섹터에 대응하는 어레이 내의 메모리 셀을 프로그램하기 위한 커맨드이고, 채널 커맨드 슬롯(425-2)에 유지된 커맨드 2는 LBA(2000)에서 시작하는 호스트의 16 논리 섹터에 대응하는 어레이 내의 메모리 셀을 프로그램하기 위한 커맨드이며, 그리고 채널 커맨드 슬롯(425-3)에 유지된 커맨드 3은 LBA(3000)에서 시작하는 호스트의 4 논리 섹터에 대응하는 어레이 내의 메모리 셀을 프로그램하기 위한 커맨드이다.
결론
본 개시는 커맨드를 수정하기 위한 방법, 디바이스, 모듈, 그리고 시스템을 포함한다. 하나의 디바이스 실시예는 채널을 포함하는 컨트롤러를 포함하며, 여기서 채널은 커맨드를 유지하기 위해 구성된 커맨드 큐, 그리고 큐 내의 적어도 다수의 커맨드를 수정하고 수정된 커맨드를 실행하도록 구성된 회로를 포함한다.
비록 특정한 실시예가 본 명세서에 예시되고 기술되었다고 하더라도, 당업자는 동일한 결과를 달성하기 위해 계산된 설비가 도시된 특정한 실시예를 위해 대체될 수 있다는 것을 이해할 것이다. 이러한 개시는 본 개시의 하나 이상의 실시예의 개조 또는 변형을 커버하기 위함이다. 상기 설명은 예시적인 방식으로 이루어졌으며, 제한적인 방식이 아니라는 것이 이해될 것이다. 상기 실시예의 병합, 그리고 본 명세서에 특정하게 기술되지 않은 다른 실시예는 상기 설명을 검토할 때 당업자에 의해 분명할 것이다. 본 개시의 하나 이상의 실시예의 범주는 상기 구조와 방법이 사용되는 다른 어플리케이션을 포함한다. 따라서, 본 개시의 하나 이상의 실시예의 범주는 청구항에 부여되는 등가물의 전체 범위와 함께 첨부된 청구항을 참조하여 결정되어야 한다.
앞선 상세한 설명에서, 몇몇 특징들은 개시의 합리화하기 위해 단일 실시예에서 함께 그룹화된다. 이러한 개시의 방법은 본 개시의 개시된 실시예가 각각의 청구항내에 명백히 인용되는 보다 많은 특징을 사용하여야 하는 의향을 반영하는 것으로서 해석되지 않을 것이다. 그 보다는, 이어지는 청구항이 반영하는 바와 같이, 발명적 요지는 단일 개시 실시예의 모든 특징들 보다 적게 있다. 따라서, 이어지는 청구항은 이로써 상세한 설명에 포함되며, 각각의 청구항은 개별적인 실시예로서 스스로 유지된다.

Claims (42)

  1. 채널을 포함하되, 여기서 상기 채널은 :
    커맨드들을 유지하도록 구성된 커맨드 큐; 그리고
    상기 큐 내의 적어도 다수의 커맨드들을 수정하고 상기 수정된 커맨드들을 실행하도록 구성된 회로
    를 포함하고,
    상기 큐 내의 적어도 다수의 커맨드들을 수정하고 상기 수정된 커맨드들을 실행하도록 구성된 상기 회로는, 상기 큐 내의 다수의 커맨드들이 하나의 커맨드로 병합될 수 있는 경우 상기 큐 내의 다수의 커맨드들을 수정하도록 구성된 회로를 포함하고, 상기 큐 내의 다수의 커맨드들이 하나의 커맨드로 병합될 수 있는 경우 상기 큐 내의 다수의 커맨드들을 수정하도록 구성된 상기 회로는 다수의 오버랩핑 커맨드들을 하나의 커맨드로 병합하도록 구성된 회로를 포함하는 메모리 컨트롤러.
  2. 청구항 1에 있어서,
    상기 큐 내의 적어도 다수의 커맨드들을 수정하고 상기 수정된 커맨드들을 실행하도록 구성된 상기 회로는 상기 다수의 커맨드들이 상기 큐 내에 유지되는 동안 상기 다수의 커맨드들을 수정하도록 구성된 회로를 포함하는, 메모리 컨트롤러.
  3. 청구항 1에 있어서,
    상기 큐 내의 적어도 다수의 커맨드들을 수정하고 상기 수정된 커맨드들을 실행하도록 구성된 상기 회로는 상기 큐 내의 커맨드들이 상기 큐 내에 유지되는 순서를 변경하도록 구성된 회로를 포함하는, 메모리 컨트롤러.
  4. 청구항 3에 있어서,
    상기 큐 내의 적어도 다수의 커맨드들을 수정하고 상기 수정된 커맨드들을 실행하도록 구성된 상기 회로는 상기 변경된 순서에 따라서 상기 큐 내의 커맨드들을 실행하도록 구성된 회로를 포함하는, 메모리 컨트롤러.
  5. 청구항 1 내지 4 중 어느 한 항에 있어서,
    상기 큐 내의 적어도 다수의 커맨드들을 수정하고 상기 수정된 커맨드들을 실행하도록 구성된 상기 회로는 상기 큐 내의 커맨드들이 수정될 수 있는지 여부를 결정하도록 더 구성되는, 메모리 컨트롤러.
  6. 청구항 1에 있어서,
    상기 큐 내의 적어도 다수의 커맨드들을 수정하고 상기 수정된 커맨드들을 실행하도록 구성된 상기 회로는 :
    상기 큐 내의 다수의 커맨드들이 상기 큐 내의 다른 커맨드에 의해 덮어쓰기될 수 있는 경우 상기 큐 내의 상기 다수의 커맨드들을 수정하도록 구성된 회로를 포함하고,
    상기 큐 내의 다수의 커맨드들 및 상기 큐 내의 다른 커맨드가 상기 다수의 커맨드들 및 상기 다른 커맨드가 실행될 동일한 어드레스와 연관되는 경우, 상기 큐 내의 다수의 커맨드들은 상기 큐 내의 다른 커맨드에 의해 덮어쓰기되는, 메모리 컨트롤러.
  7. 청구항 6에 있어서,
    상기 큐 내의 다수의 커맨드들이 하나의 커맨드로 병합될 수 있는 경우 상기 큐 내의 상기 다수의 커맨드들을 수정하도록 구성된 상기 회로는, 상기 큐 내의 다수의 커맨드가 단일(single) 커맨드로 병합될 수 있는 경우 상기 큐 내의 상기 다수의 커맨드들을 수정하도록 구성된 회로를 포함하는, 메모리 컨트롤러.
  8. 청구항 1에 있어서,
    상기 큐 내의 다수의 커맨드들이 하나의 커맨드로 병합될 수 있는 경우 상기 큐 내의 상기 다수의 커맨드들을 수정하도록 구성된 상기 회로는 :
    다수의 순차적인 커맨드들을 하나의 커맨드로 병합하도록 구성된 회로를 포함하는, 메모리 컨트롤러.
  9. 청구항 6 내지 8 중 어느 한 항에 있어서,
    상기 큐 내의 다수의 커맨드들이 상기 큐 내의 다른 커맨드에 의해 덮어쓰기될 수 있는 경우 상기 큐 내의 상기 다수의 커맨드들을 수정하도록 구성된 상기 회로는 :
    상기 큐 내의 커맨드가 상기 큐 내의 다른 커맨드에 의해 덮어쓰기될 수 있는지 여부를 결정하고 - 상기 큐 내의 커맨드 및 상기 큐 내의 다른 커맨드가 상기 커맨드 및 상기 다른 커맨드가 실행될 동일한 어드레스와 연관되는 경우, 상기 큐 내의 커맨드는 상기 큐 내의 다른 커맨드에 의해 덮어쓰기됨 -; 그리고
    상기 다른 커맨드에 의해 덮어쓰기될 상기 커맨드를 삭제하도록 구성된 회로를 포함하는, 메모리 컨트롤러.
  10. 채널을 포함하되, 여기서 상기 채널은 :
    다수의 커맨드들을 유지하도록 구성된 커맨드 큐; 그리고
    커맨드들이 상기 큐 내에 유지되는 순서를 변경;
    상기 큐 내의 다수의 병합가능한 커맨드들을 하나의 커맨드로 병합; 그리고
    상기 큐 내의 다른 커맨드에 의해 덮어쓰기될 상기 큐 내의 커맨드의 삭제 - 상기 큐 내의 커맨드 및 상기 큐 내의 다른 커맨드가 상기 커맨드 및 상기 다른 커맨드가 실행될 동일한 어드레스와 연관되는 경우, 상기 큐 내의 커맨드는 상기 큐 내의 다른 커맨드에 의해 덮어쓰기됨 -
    를 포함하는 기능들의 그룹으로부터 선택된 다수의 기능들을 수행하도록 구성된 프로세서
    를 포함하는, 메모리 컨트롤러.
  11. 청구항 10에 있어서,
    상기 채널은 후단 채널이고; 그리고
    상기 메모리 컨트롤러는 전단 채널을 포함하되, 여기서 :
    상기 전단 채널은 커맨드 디스패처를 포함하며; 그리고
    상기 커맨드 디스패처는 다수의 커맨드들을 상기 후단 채널로 전송하도록 구성되며; 그리고
    상기 큐는 상기 커맨드 디스패처가 상기 커맨드들을 상기 후단 채널로 전송하는 순서대로 커맨드들을 유지하도록 구성되는, 메모리 컨트롤러.
  12. 청구항 11에 있어서,
    상기 큐는 상기 커맨드 디스패처에 의해 유지될 수 있는 다수의 커맨드들과 동일한 다수의 커맨드들을 유지할 수 있도록 구성되는, 메모리 컨트롤러.
  13. 청구항 11에 있어서,
    상기 커맨드 디스패처는 :
    호스트로부터 다수의 커맨드들을 수신하며; 그리고
    상기 커맨드 디스패처가 상기 호스트로부터 상기 커맨드들을 수신하는 순서로 상기 커맨드들을 상기 후단 채널로 전송하도록 구성되는, 메모리 컨트롤러.
  14. 청구항 13에 있어서,
    상기 전단 채널은 커맨드 프로세서를 포함하며; 그리고
    상기 커맨드 프로세서는 :
    상기 커맨드 디스패처가 커맨드들을 상기 후단 채널로 전송하는 순서를 변경;
    상기 호스트로부터 상기 커맨드 디스패처에 의해 수신된 다수의 병합가능한 커맨드들을 하나의 커맨드로 병합; 그리고
    상기 호스트로부터 상기 커맨드 디스패처에 의해 수신된 다른 커맨드에 의해 덮어쓰기될 상기 호스트로부터 상기 커맨드 디스패처에 의해 수신된 커맨드의 삭제 - 상기 호스트로부터 상기 커맨드 디스패처에 의해 수신된 커맨드 및 상기 호스트로부터 상기 커맨드 디스패처에 의해 수신된 다른 커맨드가 상기 커맨드 및 상기 다른 커맨드가 실행될 동일한 어드레스와 연관되는 경우, 상기 호스트로부터 상기 커맨드 디스패처에 의해 수신된 커맨드는 상기 호스트로부터 상기 커맨드 디스패처에 의해 수신된 다른 커맨드에 의해 덮어쓰기됨 -
    를 포함하는 기능들의 그룹으로부터 선택된 다수의 기능들을 수행하도록 구성되는, 메모리 컨트롤러.
  15. 청구항 14에 있어서,
    상기 커맨드 프로세서는 상기 커맨드 디스패처가 상기 호스트로부터 커맨드들을 수신할 수 없을 때 상기 다수의 기능들을 수행하도록 구성되는, 메모리 컨트롤러.
  16. 청구항 11에 있어서,
    상기 전단 채널은 커맨드 프로세서를 포함하며;
    상기 커맨드 프로세서는 :
    상기 기능들의 그룹 내 상기 기능들이 상기 커맨드 디스패처 내에 유지된 커맨드들에 대해 수행되지 않을지 여부를 결정하며; 그리고
    커맨드들에 대해 수행되는 상기 기능들의 그룹 내 상기 기능들을 갖지 않을 상기 커맨드 디스패처 내에 유지된 커맨드들을 마크하고; 그리고
    상기 프로세서는 마크된 커맨드들에 대해 상기 기능들의 그룹 내 상기 기능들을 수행하지 않도록 구성되는, 메모리 컨트롤러.
  17. 다수의 후단 채널들을 포함하되, 상기 다수의 후단 채널들은 :
    다수의 커맨드들을 유지하도록 구성된 커맨드 큐; 그리고
    상기 커맨드 큐 내의 커맨드들을 수정하고 상기 수정된 커맨드들이 상기 큐 내에 유지되는 순서에 따라서 상기 수정된 커맨드들을 실행하도록 구성된 프로세서
    를 포함하고, 여기서 상기 커맨드들을 수정하는 것은 :
    커맨드들이 상기 큐 내에 유지되는 순서를 변경;
    상기 큐 내의 오버랩핑 커맨드들을 하나의 커맨드로 병합;
    상기 큐 내의 순차적인 커맨드들을 하나의 커맨드로 병합; 그리고
    상기 큐 내의 다른 커맨드에 의해 덮어쓰기될 상기 큐 내의 커맨드 삭제 - 상기 큐 내의 커맨드 및 상기 큐 내의 다른 커맨드가 상기 커맨드 및 상기 다른 커맨드가 실행될 동일한 어드레스와 연관되는 경우, 상기 큐 내의 커맨드는 상기 큐 내의 다른 커맨드에 의해 덮어쓰기됨 -
    를 포함하는 기능들의 그룹으로부터 선택된 다수의 기능들을 수행하는 것을 포함하는, 메모리 컨트롤러.
  18. 청구항 17에 있어서,
    다수의 커맨드들을 유지하도록 구성된 커맨드 큐는 다수의 판독 커맨드들을 유지하도록 구성된 커맨드 큐를 포함하며, 여기서 상기 다수의 판독 커맨드들은 이전 판독 커맨드에 응답하여 앞서 판독된 메모리 어레이 내의 다수의 메모리 셀에 저장된 데이터를 판독하는 커맨드를 포함하며, 여기서 상기 메모리 컨트롤러는 상기 어레이에 대한 액세스 없이 앞서 판독된 데이터를 판독하는 상기 커맨드를 실행하도록 더 구성되는, 메모리 컨트롤러.
  19. 청구항 18에 있어서,
    상기 다수의 후단 채널은 상기 앞서 판독된 데이터를 유지하도록 구성된 데이터 버퍼를 포함하며, 여기서 상기 프로세서는 상기 데이터 버퍼를 액세스함으로써 상기 다수의 판독 커맨드들 중 적어도 하나의 적어도 일부를 실행하도록 구성되는, 메모리 컨트롤러.
  20. 청구항 17에 있어서,
    상기 메모리 컨트롤러는 전단 채널을 포함하고;
    상기 전단 채널은 상기 다수의 후단 채널에 연결된 전단 다이렉트 메모리 액세스(DMA)를 포함하며;
    상기 다수의 후단 채널은 채널 DMA를 포함하고; 그리고
    상기 전단 DMA는 상기 채널 DMA에 연결되는, 메모리 컨트롤러.
  21. 메모리 디바이스 동작 방법에 있어서,
    큐 내의 유지된 다수의 커맨드들을 수정하는 단계; 그리고
    상기 수정된 커맨드들이 상기 큐 내에 유지되는 순서에 따라서 상기 수정된 커맨드들을 실행하는 단계
    를 포함하되, 여기서 상기 다수의 커맨드들을 수정하는 단계는 :
    커맨드들이 상기 큐 내에 유지되는 순서를 변경하는 단계;
    상기 큐 내의 다수의 병합가능한 커맨드들을 하나의 커맨드로 병합하는 단계; 그리고
    상기 큐 내의 다른 커맨드에 의해 덮어쓰기될 상기 큐 내의 커맨드를 삭제하는 단계 - 상기 큐 내의 커맨드 및 상기 큐 내의 다른 커맨드가 상기 커맨드 및 상기 다른 커맨드가 실행될 동일한 어드레스와 연관되는 경우, 상기 큐 내의 커맨드는 상기 큐 내의 다른 커맨드에 의해 덮어쓰기됨 -
    를 포함하는 기능들의 그룹으로부터 선택된 다수의 상기 기능들을 수행하는 단계를 포함하는, 메모리 디바이스 동작 방법.
  22. 청구항 21에 있어서,
    상기 큐 내의 다수의 병합가능한 커맨드들을 하나의 커맨드로 병합하는 단계는 상기 큐 내의 다수의 병합가능한 커맨드들을 단일 커맨드로 병합하는 단계를 포함하는, 메모리 디바이스 동작 방법.
  23. 청구항 21에 있어서,
    상기 다수의 병합가능한 커맨드들을 병합하는 단계는 :
    오버랩핑 커맨드들을 병합하는 단계; 그리고
    순차적인 커맨드들을 병합하는 단계를 포함하는, 메모리 디바이스 동작 방법.
  24. 청구항 21 내지 23 중 어느 한 항에 있어서,
    상기 방법은 :
    상기 수정된 커맨드들이 실행되는 동안 상기 큐 내에 추가적인 커맨드들을 수신하는 단계; 그리고
    상기 수정된 커맨드들이 실행되는 동안 상기 추가적인 커맨드들을 수정하는 단계를 포함하는, 메모리 디바이스 동작 방법.
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
KR1020117018454A 2009-01-09 2009-12-30 커맨드 수정 KR101284440B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/351,206 US8078848B2 (en) 2009-01-09 2009-01-09 Memory controller having front end and back end channels for modifying commands
US12/351,206 2009-01-09
PCT/US2009/006741 WO2010080142A2 (en) 2009-01-09 2009-12-30 Modifying commands

Publications (2)

Publication Number Publication Date
KR20110112420A KR20110112420A (ko) 2011-10-12
KR101284440B1 true KR101284440B1 (ko) 2013-07-09

Family

ID=42317039

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117018454A KR101284440B1 (ko) 2009-01-09 2009-12-30 커맨드 수정

Country Status (7)

Country Link
US (2) US8078848B2 (ko)
EP (1) EP2377028B1 (ko)
JP (1) JP5354404B2 (ko)
KR (1) KR101284440B1 (ko)
CN (1) CN102317928B (ko)
TW (1) TWI408556B (ko)
WO (1) WO2010080142A2 (ko)

Families Citing this family (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8769232B2 (en) 2011-04-06 2014-07-01 Western Digital Technologies, Inc. Non-volatile semiconductor memory module enabling out of order host command chunk media access
US8543758B2 (en) 2011-05-31 2013-09-24 Micron Technology, Inc. Apparatus including memory channel control circuit and related methods for relaying commands to logical units
US9898402B2 (en) 2011-07-01 2018-02-20 Micron Technology, Inc. Unaligned data coalescing
JP2013061799A (ja) * 2011-09-13 2013-04-04 Toshiba Corp 記憶装置、記憶装置の制御方法およびコントローラ
EP3249546B1 (en) 2011-12-14 2022-02-09 Level 3 Communications, LLC Content delivery network
WO2013100783A1 (en) 2011-12-29 2013-07-04 Intel Corporation Method and system for control signalling in a data path module
US9146856B2 (en) * 2012-04-10 2015-09-29 Micron Technology, Inc. Remapping and compacting in a memory device
TWI454913B (zh) * 2012-06-26 2014-10-01 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
US9122401B2 (en) * 2012-08-23 2015-09-01 Apple Inc. Efficient enforcement of command execution order in solid state drives
US9471484B2 (en) 2012-09-19 2016-10-18 Novachips Canada Inc. Flash memory controller having dual mode pin-out
US9634918B2 (en) 2012-12-13 2017-04-25 Level 3 Communications, Llc Invalidation sequencing in a content delivery framework
US10701148B2 (en) 2012-12-13 2020-06-30 Level 3 Communications, Llc Content delivery framework having storage services
US10791050B2 (en) 2012-12-13 2020-09-29 Level 3 Communications, Llc Geographic location determination in a content delivery framework
US10652087B2 (en) 2012-12-13 2020-05-12 Level 3 Communications, Llc Content delivery framework having fill services
US10701149B2 (en) 2012-12-13 2020-06-30 Level 3 Communications, Llc Content delivery framework having origin services
US20140337472A1 (en) 2012-12-13 2014-11-13 Level 3 Communications, Llc Beacon Services in a Content Delivery Framework
US10931541B2 (en) 2012-12-13 2021-02-23 Level 3 Communications, Llc Devices and methods supporting content delivery with dynamically configurable log information
CN103914125A (zh) * 2013-01-06 2014-07-09 海尔集团公司 设备控制方法、设备控制装置、设备和设备控制系统
US9298521B1 (en) 2013-04-29 2016-03-29 Seagate Technology Llc Command sets and functions
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
US9348747B2 (en) * 2013-10-29 2016-05-24 Seagate Technology Llc Solid state memory command queue in hybrid device
KR102198855B1 (ko) * 2014-04-24 2021-01-05 삼성전자 주식회사 메모리 시스템 및 상기 메모리 시스템의 동작 방법
US9384830B2 (en) * 2014-05-06 2016-07-05 Micron Technology, Inc. Apparatuses and methods for performing multiple memory operations
KR20160118836A (ko) 2015-04-03 2016-10-12 에스케이하이닉스 주식회사 호스트 커맨드 큐를 포함하는 메모리 컨트롤러 및 그것의 동작 방법
CN111857814A (zh) * 2015-05-18 2020-10-30 北京忆芯科技有限公司 执行微指令的存储控制器
US9904609B2 (en) * 2015-11-04 2018-02-27 Toshiba Memory Corporation Memory controller and memory device
US9591047B1 (en) 2016-04-11 2017-03-07 Level 3 Communications, Llc Invalidation in a content delivery network (CDN)
JP6784051B2 (ja) * 2016-04-18 2020-11-11 ブラザー工業株式会社 インクジェット記録装置
US10402168B2 (en) 2016-10-01 2019-09-03 Intel Corporation Low energy consumption mantissa multiplication for floating point multiply-add operations
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US10521344B1 (en) * 2017-03-10 2019-12-31 Pure Storage, Inc. Servicing input/output (‘I/O’) operations directed to a dataset that is synchronized across a plurality of storage systems
JP6880402B2 (ja) * 2017-05-10 2021-06-02 富士通株式会社 メモリアクセス制御装置及びその制御方法
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10467183B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
US10387319B2 (en) 2017-07-01 2019-08-20 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US10445451B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10445234B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
KR20190019712A (ko) * 2017-08-18 2019-02-27 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR102474035B1 (ko) * 2017-08-18 2022-12-06 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
KR20190032809A (ko) * 2017-09-20 2019-03-28 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작 방법
US10496574B2 (en) 2017-09-28 2019-12-03 Intel Corporation Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10380063B2 (en) 2017-09-30 2019-08-13 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
US10445098B2 (en) 2017-09-30 2019-10-15 Intel Corporation Processors and methods for privileged configuration in a spatial array
CN108628759B (zh) * 2017-12-29 2020-09-01 贵阳忆芯科技有限公司 乱序执行nvm命令的方法与装置
US10565134B2 (en) 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in a configurable spatial accelerator
US10417175B2 (en) 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
KR20190110360A (ko) * 2018-03-20 2019-09-30 에스케이하이닉스 주식회사 컨트롤러, 이를 포함하는 시스템 및 그 동작 방법
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10564980B2 (en) 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US10459866B1 (en) 2018-06-30 2019-10-29 Intel Corporation Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US10678724B1 (en) 2018-12-29 2020-06-09 Intel Corporation Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US11029927B2 (en) 2019-03-30 2021-06-08 Intel Corporation Methods and apparatus to detect and annotate backedges in a dataflow graph
US10965536B2 (en) 2019-03-30 2021-03-30 Intel Corporation Methods and apparatus to insert buffers in a dataflow graph
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
CN112925728A (zh) * 2019-05-05 2021-06-08 长江存储科技有限责任公司 具有序列处理单元的存储器控制系统
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
US11797188B2 (en) * 2019-12-12 2023-10-24 Sk Hynix Nand Product Solutions Corp. Solid state drive with multiplexed internal channel access during program data transfers
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator
US11409681B2 (en) * 2020-09-04 2022-08-09 Paypal, Inc. Computer system communication via sideband processor

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007304883A (ja) 2006-05-11 2007-11-22 Fuji Xerox Co Ltd コマンドキューイング制御装置、コマンドキューイングプログラム及びストレージシステム

Family Cites Families (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5924485A (ja) 1982-07-30 1984-02-08 Toshiba Corp 入出力ペ−ジング機構
DE3241376A1 (de) 1982-11-09 1984-05-10 Siemens AG, 1000 Berlin und 8000 München Dma-steuereinrichtung zur uebertragung von daten zwischen einem datensender und einem datenempfaenger
US4797812A (en) 1985-06-19 1989-01-10 Kabushiki Kaisha Toshiba System for continuous DMA transfer of virtually addressed data blocks
US5544347A (en) 1990-09-24 1996-08-06 Emc Corporation Data storage system controlled remote data mirroring with respectively maintained data indices
US5182800A (en) 1990-11-16 1993-01-26 International Business Machines Corporation Direct memory access controller with adaptive pipelining and bus control features
US5640596A (en) * 1992-03-10 1997-06-17 Hitachi, Ltd. Input output control system for transferring control programs collectively as one transfer unit designated by plurality of input output requests to be executed
JP2774728B2 (ja) * 1992-04-08 1998-07-09 株式会社日立製作所 ディスクアレイ制御方式
US5526484A (en) 1992-12-10 1996-06-11 International Business Machines Corporation Method and system for pipelining the processing of channel command words
US5517670A (en) 1992-12-30 1996-05-14 International Business Machines Corporation Adaptive data transfer channel employing extended data block capability
JP3250861B2 (ja) * 1993-03-09 2002-01-28 株式会社日立製作所 ディスク装置システム
US5564055A (en) 1994-08-30 1996-10-08 Lucent Technologies Inc. PCMCIA slot expander and method
US5717952A (en) 1994-11-16 1998-02-10 Apple Computer, Inc. DMA controller with mechanism for conditional action under control of status register, prespecified parameters, and condition field of channel command
US5870625A (en) * 1995-12-11 1999-02-09 Industrial Technology Research Institute Non-blocking memory write/read mechanism by combining two pending commands write and read in buffer and executing the combined command in advance of other pending command
JP3287203B2 (ja) 1996-01-10 2002-06-04 株式会社日立製作所 外部記憶制御装置及び外部記憶制御装置間データ転送方法
US6185521B1 (en) 1996-02-16 2001-02-06 Emc Corporation System and method for emulating mainframe channel programs by open systems computer systems
US5901327A (en) 1996-05-28 1999-05-04 Emc Corporation Bundling of write data from channel commands in a command chain for transmission over a data link between data storage systems for remote data mirroring
US6029226A (en) * 1996-09-30 2000-02-22 Lsi Logic Corporation Method and apparatus having automated write data transfer with optional skip by processing two write commands as a single write command
US5928370A (en) 1997-02-05 1999-07-27 Lexar Media, Inc. Method and apparatus for verifying erasure of memory blocks within a non-volatile memory structure
US6034897A (en) 1999-04-01 2000-03-07 Lexar Media, Inc. Space management for managing high capacity nonvolatile memory
US5974499A (en) 1997-04-23 1999-10-26 Micron Technology, Inc. Memory system having read modify write function and method
US6012104A (en) 1997-10-24 2000-01-04 International Business Machines Corporation Method and apparatus for dynamic extension of channel programs
US6076137A (en) 1997-12-11 2000-06-13 Lexar Media, Inc. Method and apparatus for storing location identification information within non-volatile memory devices
US6192444B1 (en) 1998-01-05 2001-02-20 International Business Machines Corporation Method and system for providing additional addressable functional space on a disk for use with a virtual data storage subsystem
US7181548B2 (en) * 1998-10-30 2007-02-20 Lsi Logic Corporation Command queueing engine
US6470445B1 (en) * 1999-09-07 2002-10-22 Hewlett-Packard Company Preventing write-after-write data hazards by canceling earlier write when no intervening instruction uses value to be written by the earlier write
JP2001209500A (ja) * 2000-01-28 2001-08-03 Fujitsu Ltd ディスク装置およびディスク装置のリード・ライト処理方法
US7102671B1 (en) 2000-02-08 2006-09-05 Lexar Media, Inc. Enhanced compact flash memory card
JP2001290607A (ja) * 2000-04-06 2001-10-19 Matsushita Electric Ind Co Ltd デバイスドライバのコマンドキューイング制御方法及びコンピュータシステム
US6564304B1 (en) * 2000-09-01 2003-05-13 Ati Technologies Inc. Memory processing system and method for accessing memory including reordering memory requests to reduce mode switching
JP3908482B2 (ja) * 2001-06-22 2007-04-25 富士通株式会社 入出力制御装置及び入出力制御方法並びに情報記憶システム
US6912669B2 (en) 2002-02-21 2005-06-28 International Business Machines Corporation Method and apparatus for maintaining cache coherency in a storage system
US6915378B2 (en) 2003-04-23 2005-07-05 Hypernova Technologies, Inc. Method and system for improving the performance of a processing system
US7010654B2 (en) 2003-07-24 2006-03-07 International Business Machines Corporation Methods and systems for re-ordering commands to access memory
TW200506733A (en) 2003-08-15 2005-02-16 Via Tech Inc Apparatus and method for the co-simulation of CPU and DUT modules
KR100585136B1 (ko) 2004-03-04 2006-05-30 삼성전자주식회사 메모리 시스템의 데이터 채널 초기화 방법
US7418540B2 (en) * 2004-04-28 2008-08-26 Intel Corporation Memory controller with command queue look-ahead
US7328317B2 (en) 2004-10-21 2008-02-05 International Business Machines Corporation Memory controller and method for optimized read/modify/write performance
US8316129B2 (en) 2005-05-25 2012-11-20 Microsoft Corporation Data communication coordination with sequence numbers
JP2007058646A (ja) 2005-08-25 2007-03-08 Hitachi Ltd データ処理システム
US7587625B2 (en) * 2006-02-16 2009-09-08 Intel Corporation Memory replay mechanism
US8244975B2 (en) 2006-06-30 2012-08-14 Seagate Technology Llc Command queue ordering by flipping active write zones
US20080126641A1 (en) * 2006-08-31 2008-05-29 Irish John D Methods and Apparatus for Combining Commands Prior to Issuing the Commands on a Bus
US20080107275A1 (en) 2006-11-08 2008-05-08 Mehdi Asnaashari Method and system for encryption of information stored in an external nonvolatile memory
US7996599B2 (en) * 2007-04-25 2011-08-09 Apple Inc. Command resequencing in memory operations

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007304883A (ja) 2006-05-11 2007-11-22 Fuji Xerox Co Ltd コマンドキューイング制御装置、コマンドキューイングプログラム及びストレージシステム

Also Published As

Publication number Publication date
US8078848B2 (en) 2011-12-13
WO2010080142A2 (en) 2010-07-15
TW201040733A (en) 2010-11-16
US8966231B2 (en) 2015-02-24
WO2010080142A3 (en) 2010-09-23
JP2012514809A (ja) 2012-06-28
CN102317928B (zh) 2014-08-06
KR20110112420A (ko) 2011-10-12
EP2377028B1 (en) 2016-06-22
CN102317928A (zh) 2012-01-11
JP5354404B2 (ja) 2013-11-27
US20120030452A1 (en) 2012-02-02
EP2377028A2 (en) 2011-10-19
US20100180105A1 (en) 2010-07-15
TWI408556B (zh) 2013-09-11
EP2377028A4 (en) 2012-08-29

Similar Documents

Publication Publication Date Title
KR101284440B1 (ko) 커맨드 수정
CN108572933B (zh) 用于直接存储器存取的数据缓冲器指针找取
JP6163532B2 (ja) メモリシステムコントローラを含む装置
US8144515B2 (en) Interleaved flash storage system and method
US10331351B2 (en) Memory controllers, memory systems, solid state drives and methods for processing a number of commands
US9135192B2 (en) Memory system with command queue reordering
US8606988B2 (en) Flash memory control circuit for interleavingly transmitting data into flash memories, flash memory storage system thereof, and data transfer method thereof
KR101056560B1 (ko) 고체 상태 디스크 시스템에서 버퍼 캐시의 프로그래밍 방법및 장치
US20090172264A1 (en) System and method of integrating data accessing commands
JP2012221038A (ja) メモリシステム
US10713157B2 (en) Storage system and method for improving read performance using multiple copies of a logical-to-physical address table
KR20200003055A (ko) Nand 버퍼를 갖는 nand 플래시 저장 디바이스
US20170147235A1 (en) Memory system controlling interleaving write to memory chips
US20180113803A1 (en) Operation method of memory controller and operation method of storage device including the same
US20150254011A1 (en) Memory system, memory controller and control method of non-volatile memory
US11068204B2 (en) Memory device with multiple physical spaces, multiple non-volatile memory arrays, multiple main data, multiple metadata of multiple types of commands, and access method thereof

Legal Events

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

Payment date: 20160617

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170616

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180618

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190703

Year of fee payment: 7