KR20170074759A - 낸드 플래시 콘트롤러에서의 우선순위에 따른 디코딩 태스크들의 큐잉 - Google Patents

낸드 플래시 콘트롤러에서의 우선순위에 따른 디코딩 태스크들의 큐잉 Download PDF

Info

Publication number
KR20170074759A
KR20170074759A KR1020160166829A KR20160166829A KR20170074759A KR 20170074759 A KR20170074759 A KR 20170074759A KR 1020160166829 A KR1020160166829 A KR 1020160166829A KR 20160166829 A KR20160166829 A KR 20160166829A KR 20170074759 A KR20170074759 A KR 20170074759A
Authority
KR
South Korea
Prior art keywords
task
decoding
priority
tasks
decoding tasks
Prior art date
Application number
KR1020160166829A
Other languages
English (en)
Inventor
보 푸
웨이 수
쳉쿠오 후왕
야오롱 가오
Original Assignee
마벨 월드 트레이드 리미티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마벨 월드 트레이드 리미티드 filed Critical 마벨 월드 트레이드 리미티드
Publication of KR20170074759A publication Critical patent/KR20170074759A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/3855
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Retry When Errors Occur (AREA)

Abstract

낸드 플래시 메모리 콘트롤러에서 디코딩 태스크를 수행하기 위한 장치가 제공되며, 상기 장치는 제 1 우선순위의 디코딩 태스크들을 큐잉하기 위한 제 1 태스크 큐, 상기 제 1 우선순위 보다 높은 제 2 우선순위의 디코딩 태스크들을 큐잉하기 위한 제 2 태스크 큐, 및 제어 회로를 포함하며, 상기 제어 회로는 복수의 디코딩 태스크들을 위한 데이터의 일부분을 수신하면, 디코딩 태스크들의 우선순위들에 따라 데이터의 각 부분들 상에 동작하도록 제 1 및 제 2 태스크 큐들로부터 각각의 디코딩 태스크들을 릴리즈한다. 제 1 및 제 2 디코더들은 속도 혹은 복잡도에 있어서 서로 다른 제 1 및 제 2 디코딩 체계들 하에서 동작한다. 입력 스위칭 회로는 각각의 데이터 채널을 제 1 또는 제 2 디코더에 연결한다. 디코더-완료(done) 제어 회로는 제 1 또는 제 2 디코더로부터 디코더-완료(done) 신호를 수신하면 제 1 또는 제 2 디코더의 출력을 선택한다. 완료된 디코딩 태스크들은 우선순위에 따라 제 1 및 제 2 태스크-완료 큐들에 큐잉된다.

Description

NAND 플래시 제어기내 우선순위에 따른 디코딩 태스크들의 큐잉{QUEUING OF DECODING TASKS ACCORDING TO PRIORITY IN NAND FLASH CONTROLLER}
관련 출원에 대한 상호 참조
본 출원은 2015년 12월 11일에 출원된, 동시 계속되고, 공동으로-양도된 미국 가 특허 출원 번호 제62/266,193호에 대한 이득을 주장하며, 본 출원에 전체가 참조로서 통합된다.
사용 분야
본 개시의 주제의 구현들은 일반적으로 상이한 우선순위들의 태스크들에 대한 상이한 디코더들의 사용을 포함하여, NAND 플래시 제어기에서, 디코딩 태스크들을, 그것들의 우선순위에 따라 상이한 큐들에 할당하기 위한 방법, 및 장치와 관련된다.
여기에서 제공된 배경 설명은 일반적으로 개시의 맥락을 제공하기 위한 것이다. 그 발명자의 일은, 일이 이 배경 섹션에서 설명되는 정도로, 뿐만 아니라 출원 시 그 외 종래 기술로서 자격을 얻지 않을 수 있는 설명의 양상들은, 본 개시에 대해 종래 기술인 것으로 명시적으로도 은연 중으로도 인정되지 않는다.
다중-레벨 셀(MLC) NAND 플래시 메모리는 그것의 데이터 저장의 단위당 비용이 단일-레벨 셀(SLC) NAND 플래시 메모리의 비용에 비해 감소함에 따라 인기를 얻고 있다. 그러나, 1 비트 이상의 정보가 각각의 셀에 저장되기 때문에, MLC NAND 플래시 메모리는 또한 SLC NAND 플래시 메모리보다 높은 원시 비트 에러 레이트(raw bit error rate)를 경험한다.
신뢰성 요건들을 충족시키기 위해, 보다 개선된 에러 정정 기법들이 SLC NAND 플래시 메모리 디바이스들에서보다 MLC NAND 플래시 메모리 디바이스들에서 사용될 수 있다. 그러나, 판독-재시도 디코딩 및 연-판정 디코딩과 같은, 개선된 에러 정정 기법들의 복잡도는 NAND 플래시 메모리 데이터 액세스 동작들의 지연시간(latency)을 증가시킬 수 있다. 데이터 액세스 지연시간의 결과는 상이한 애플리케이션들에 대해 상이할 것이다. 예를 들면, 호스트 데이터 판독과 같은, 몇몇 중대한 동작들은 비교적 낮은 메모리 액세스 지연시간을 요구할 것이지만, 몇몇 배경 동작들, 예로서 가비지 콜렉션(garbage collection)을 위한 데이터 액세스들과 같은 다른 동작들은 지연시간의 정도에 덜 민감할 수 있다.
NAND 플래시 메모리 제어기에서 디코딩 태스크들을 수행하기 위한 장치는, 제 1 우선순위의 디코딩 태스크들을 큐잉하기 위한 제 1 태스크 큐, 상기 제 1 우선순위보다 높은 제 2 우선순위의 디코딩 태스크들을 큐잉하기 위한 제 2 태스크 큐, 및 복수의 디코딩 태스크들에 대한 데이터의 부분들의 수신 시, 상기 복수의 디코딩 태스크들에서의 개별 디코딩 태스크들의 우선순위들에 따라, 상기 데이터의 부분들의 개개의 것들에 대해 동작하도록, 상기 제 1 및 제 2 태스크 큐들로부터, 상기 복수의 디코딩 태스크들에서의 개별 디코딩 태스크들을 방출하는 제어 회로를 포함한다.
이러한 장치에서, NAND 플래시 메모리 제어기가 복수의 메모리 채널들을 포함하는 경우에, 상기 장치는 상기 복수의 채널들에서의 각각의 개별 채널에 대한 개별 제 1 태스크 큐, 및 상기 복수의 채널들에서의 각각의 개별 채널에 대한 개별 제 2 태스크 큐를 추가로 포함할 수 있다. 적어도 하나의 제 1 디코더는 제 1 에러-정정 코드 디코딩 기법하에서 동작할 수 있으며, 적어도 하나의 제 2 디코더는 상기 제 1 에러-정정 코드 디코딩 기법과 속도 및 복잡도 중 하나 또는 양쪽 모두에서 상이한 제 2 에러-정정 코드 디코딩 기법하에서 동작할 수 있다. 입력 스위칭 회로는 제 1 디코더 및 제 2 디코더 중 하나에 각각의 데이터 채널을 제어 가능하게 연결한다. 상기 제어 회로는 상기 개별 채널에 대한 개별 데이터를 상기 제 1 디코더 및 상기 제 2 디코더 중 하나로 보내도록 상기 입력 스위칭 회로를 제어하기 위해, 상기 개별 채널에 대한 개별 제 1 및 제 2 태스크 큐들로부터 디코딩 태스크들을 방출하기 위해 각각의 개별 채널에 대한 개별 채널 태스크 제어 블록을 포함한다.
이러한 구현에서, 상기 적어도 하나의 제 1 디코더는 복수의 제 1 디코더들을 포함하고, 상기 적어도 하나의 제 2 디코더는 복수의 제 2 디코더들을 포함하며, 상기 입력 스위칭 회로는 상기 개별 채널 상에서의 데이터를 상기 복수의 제 1 디코더들 및 상기 복수의 제 2 디코더들 중 하나로 선택 가능하게 보내기 위해 각각의 개별 채널에 대한 개별 역다중화기, 상기 복수의 제 1 디코더들에 대한 역다중화기 출력들을 상기 복수의 제 1 디코더들 중 이용 가능한 것들로 보내기 위한 제 1 스위치, 및 상기 복수의 제 2 디코더들에 대한 역다중화기 출력들을 상기 복수의 제 2 디코더들 중 이용 가능한 것들로 보내기 위한 제 2 스위치를 포함한다.
이러한 구현은 또한 데이터에 대응하는 디코딩 태스크가 제 1 태스크 큐 및 제 2 태스크 큐 중 하나로부터 방출될 때까지 상기 개별 채널 상에 수신된 데이터를 유지하기 위해 각각의 개별 채널에 대한 개별 버퍼를 추가로 포함할 수 있다.
이러한 구현은 또한 제 1 디코더 및 제 2 디코더 중 하나의 출력을 출력하기 위한 출력 스위칭 회로를 추가로 포함할 수 있다. 이러한 구현에서, 제어 회로는 상기 제 1 디코더 및 상기 제 2 디코더 중 하나로부터 디코더-완료 신호의 수신 시 상기 제 1 디코더 및 상기 제 2 디코더 중 하나의 출력을 선택하는 디코더-완료 제어 회로를 포함한다. 이러한 구현은 제 1 우선순위의 완료된 디코딩 태스크들을 큐잉하기 위한 제 1 태스크-완료 큐, 및 제 2 우선순위의 완료된 디코딩 태스크들을 큐잉하기 위한 제 2 태스크-완료 큐를 추가로 포함할 수 있으며, 여기에서 상기 디코더-완료 제어 회로는 각각의 완료된 디코딩 태스크를 상기 제 1 태스크-완료 큐 및 상기 제 2 태스크-완료 큐 중 하나로 로딩하며, 상기 제어 회로는 완료된 디코딩 태스크들의 우선순위들에 따라 상기 제 1 및 제 2 태스크-완료 큐들로부터 완료된 디코딩 태스크들을 보고하는 디코더-완료 상태 제어 회로를 추가로 포함한다.
이러한 장치는 데이터에 대응하는 디코딩 태스크가 제 1 태스크 큐 및 태스크 제 2 큐 중 하나로부터 방출될 때까지 NAND 플래시 메모리로부터 수신된 데이터를 유지하기 위한 버퍼를 추가로 포함할 수 있다.
이러한 장치는 제 1 우선순위의 완료된 디코딩 태스크들을 큐잉하기 위한 제 1 태스크-완료 큐, 및 제 2 우선순위의 완료된 디코딩 태스크들을 큐잉하기 위한 제 2 태스크-완료 큐를 추가로 포함할 수 있으며, 여기에서 상기 제어 회로는 완료된 디코딩 태스크들의 우선순위들에 따라 상기 제 1 및 제 2 태스크-완료 큐들로부터 완료된 디코딩 태스크들을 보고한다.
NAND 플래시 메모리 제어기에서 디코딩 태스크들을 수행하기 위한 방법은 제 1 태스크 큐에 제 1 우선순위의 디코딩 태스크들을 큐잉하는 단계, 제 2 태스크 큐에 상기 제 1 우선순위보다 높은 제 2 우선순위의 디코딩 태스크들을 큐잉하는 단계, 및 복수의 디코딩 태스크들에 대한 데이터의 부분들의 수신 시, 상기 복수의 디코딩 태스크들에서의 개별 디코딩 태스크들의 우선순위들에 따라, 상기 데이터의 부분들의 개개의 것들에 대해 동작하도록, 상기 제 1 및 제 2 태스크 큐들로부터, 상기 복수의 디코딩 태스크들에서의 개별 디코딩 태스크들을 방출하는 단계를 포함할 수 있다.
이러한 방법의 일 구현에서, NAND 플래시 메모리 제어기가 복수의 메모리 채널들을 포함하는 경우에, 제 1 우선순위의 디코딩 태스크들을 큐잉하는 단계는 상기 복수의 채널들에서의 각각의 개별 채널에 대한 개별 제 1 태스크 큐에 디코딩 태스크들을 큐잉하는 단계를 포함할 수 있으며, 제 2 우선순위의 디코딩 태스크들을 큐잉하는 단계는 상기 복수의 채널들에서 각각의 개별 채널에 대한 개별 제 2 태스크 큐에 디코딩 태스크들을 큐잉하는 단계를 포함할 수 있다. 상기 방법은 제 1 에러-정정 코드 디코딩 기법하에서 동작하는 제 1 디코더 및 상기 제 1 에러-정정 코드 디코딩 기법과 속도 및 복잡도 중 하나 또는 양쪽 모두가 상이한 제 2 에러-정정 코드 디코딩 기법하에서 동작하는 제 2 디코더 중 하나에 각각의 데이터 채널을 제어 가능하게 연결하는 단계를 추가로 포함할 수 있다.
이러한 구현에서, 상기 제어 가능하게 연결하는 단계는 상기 제 1 에러-정정 코드 디코딩 기법하에서 동작하는 복수의 제 1 디코더들 및 상기 제 2 에러-정정 코드 디코딩 기법하에서 동작하는 복수의 제 2 디코더들 중 하나에 각각의 데이터 채널을 제어 가능하게 연결하는 단계를 포함할 수 있다.
이러한 구현은, 각각의 개별 채널에 대해, 상기 데이터에 대응하는 디코딩 태스크가 상기 제 1 태스크 큐 및 상기 태스크 제 2 큐 중 하나로부터 방출될 때까지 버퍼에 상기 개별 채널 상에서 수신된 데이터를 유지하는 단계를 추가로 포함할 수 있다.
이러한 구현은 또한 제 1 태스크-완료 큐에 제 1 우선순위의 완료된 디코딩 태스크들을 큐잉하는 단계, 제 2 태스크-완료 큐에 제 2 우선순위의 완료된 디코딩 태스크들을 큐잉하는 단계, 및 상기 완료된 디코딩 태스크들의 우선순위들에 따라 상기 제 1 및 제 2 태스크-완료 큐들로부터 완료된 디코딩 태스크들을 보고하는 단계를 추가로 포함할 수 있다.
이러한 방법은 상기 데이터에 대응하는 디코딩 태스크가 상기 제 1 태스크 큐 및 상기 태스크 제 2 큐 중 하나로부터 방출될 때까지 버퍼에 NAND 플래시 메모리로부터 수신된 데이터를 유지하는 단계를 추가로 포함할 수 있다.
이러한 방법의 구현은 제 1 태스크-완료 큐에 제 1 우선순위의 완료된 디코딩 태스크들을 큐잉하는 단계, 제 2 태스크-완료 큐에 제 2 우선순위의 완료된 디코딩 태스크들을 큐잉하는 단계, 및 상기 완료된 디코딩 태스크들의 우선순위들에 따라 상기 제 1 및 제 2 태스크-완료 큐들로부터 완료된 디코딩 태스크들을 보고하는 단계를 추가로 포함할 수 있다.
이러한 구현에서, 상기 완료된 디코딩 태스크들의 우선순위들에 따라 제 1 및 제 2 태스크-완료 큐들로부터 완료된 디코딩 태스크들을 보고하는 단계는 상기 제 1 우선순위의 임의의 완료된 디코딩 태스크들을 보고하기 전에 상기 제 2 우선순위의 모든 완료된 디코딩 태스크들을 보고하는 단계를 포함할 수 있다. 상기 구현은 상기 제 1 태스크-완료 큐에서의 상기 완료된 디코딩 태스크의 큐잉 후 미리 결정된 지속 기간 후 제 1 우선순위에서 제 2 우선순위로 완료된 디코딩 태스크의 우선순위 레벨을 변경하는 단계를 추가로 포함할 수 있다.
이러한 구현에서, 상기 완료된 디코딩 태스크들의 우선순위들에 따라 제 1 및 제 2 태스크-완료 큐들로부터 완료된 디코딩 태스크들을 보고하는 단계는 상기 제 2 태스크-완료 큐로부터의 미리 결정된 수의 태스크들의 보고 후 상기 제 1 태스크-완료 큐로부터의 태스크를 보고하는 단계를 포함할 수 있다.
이러한 방법의 구현에서, 상기 복수의 디코딩 태스크들에서의 개별 디코딩 태스크들의 우선순위들에 따라, 상기 데이터의 부분들의 개개의 것들에 대해 동작하도록, 상기 제 1 및 제 2 태스크 큐들로부터, 상기 복수의 디코딩 태스크들에서의 개별 디코딩 태스크들을 방출하는 단계는, 상기 제 1 우선순위의 임의의 디코딩 태스크들을 방출하기 전에 상기 제 2 우선순위의 모든 디코딩 태스크들을 방출하는 단계를 포함할 수 있다.
이러한 구현은 상기 제 1 태스크 큐에서의 상기 디코딩 태스크의 큐잉 후 미리 결정된 지속 기간 후 상기 제 1 우선순위에서 상기 제 2 우선순위로 디코딩 태스크의 우선순위 레벨을 변경하는 단계를 추가로 포함할 수 있다.
이러한 방법에서, 상기 복수의 디코딩 태스크들에서 개별 디코딩 태스크들의 우선순위들에 따라, 상기 데이터의 부분들의 개개의 것들에 대해 동작하도록, 상기 제 1 및 제 2 태스크 큐들로부터, 상기 복수의 디코딩 태스크들에서의 개별 디코딩 태스크들을 방출하는 단계는, 상기 제 2 태스크 큐로부터 미리 결정된 수의 태스크들의 방출 후 상기 제 1 태스크 큐로부터의 태스크를 방출하는 단계를 포함할 수 있다.
본 개시의 추가 피처들, 그것의 특징 및 다양한 이점들은 수반되는 도면들과 함께 취해진, 다음의 상세한 설명의 고려 시 명백할 것이며, 여기에서 유사한 참조 문자들은 전체에 걸쳐 유사한 부분들을 나타낸다:
도 1은 본 개시의 구현들이 사용될 수 있는 NAND 플래시 제어기의 블록도를 도시한다;
도 2는 본 개시의 주제의 구현에 따라, NAND 플래시 제어기에서 사용될 수 있는, 에러-정정 코드 디코더의 구조의 블록도를 도시한다;
도 3은 도 2의 디코더에서 각각의 데이터 채널에 대한 디코딩 태스크 큐들이 실장될 수 있는, 본 개시의 주제의 구현에 따른, 프로세스의 흐름도이다;
도 4는 표준-우선순위 태스크 큐 또는 고-우선순위 태스크 큐 중 하나로부터 실행을 위한 태스크를 선택하기 위한, 본 개시의 주제의 구현에 따른, 프로세스의 흐름도이다;
도 5는 표준-우선순위 디코딩 태스크들 및 상위-우선순위 디코딩 태스크들 사이에서 선택하기 위한, 본 개시의 주제의 구현에 따른, 규칙들의 세트의 동작을 도시한 흐름도이다; 및
도 6은 디코딩 태스크들의 완료를 보고하기 위한, 본 개시의 주제의 구현에 따른, 프로세스를 도시한 흐름도이다.
상기 주지된 바와 같이, MLC NAND 플래시 메모리는 SLC NAND 플래시 메모리보다 높은 원시 비트 에러 레이트를 경험할 수 있다. 그러므로, 신뢰성 요건들을 충족시키기 위해, 보다 개선된 에러 정정 기법들이 SLC NAND 플래시 메모리 디바이스들에서보다 MLC NAND 플래시 메모리 디바이스들에서 사용될 수 있다. 그러나, 판독-재시도 디코딩 및 연-판정 디코딩과 같은, 개선된 에러 정정 기법들의 복잡도는 NAND 플래시 메모리 데이터 액세스 동작들의 지연시간을 증가시킬 수 있다.
데이터 액세스 지연시간의 결과가 상기 주지된 바와 같이 상이한 애플리케이션들에 대해 상이할 것이기 때문에, 본 개시의 구현들에 따라, 상이한 우선순위들의 메모리 액세스 동작들은 상이하게 처리될 수 있다. 또한, 제 1 시도에 성공할 가능성이 더 높은 보다 복잡하며 시간-소모적인 디코딩 기법을 사용하는 것, 및 때때로 실패하며 하나 이상의 시도를 요구할 수 있는 보다 간단하며 보다 빠른 디코딩 기법을 사용하는 것 사이에서 트레이드-오프가 인식될 수 있다.
모든 것을 감안할 때, 전체 스루풋은, 재시도 동작을 필요하게 만드는 가끔의 실패가 발생할 수 있지만, 대부분의 메모리 액세스 동작들에 대해 보다 간단하며 보다 빠른 디코딩 기법을 사용하며, 상위-우선순위 디코딩 태스크들에 대해 보다 복잡하며 시간-소모적인 디코딩 기법을 사용함으로써 최대화될 수 있다.
또한, "컷-인-라인(cut-in-line)" 피처 하에서, 상위-우선순위 디코딩 태스크는, 상위-우선순위 디코딩 태스크가 나중에 개시될지라도, 표준-우선순위 디코딩 태스크 전에 수행될 수 있다.
본 개시의 주제의 구현들은 도 1 내지 도 6을 참조하여 이해될 수 있다.
도 1은 하나 이상의 NAND 플래시 메모리 디바이스들(101) 및 호스트 디바이스(102) 사이에서의 NAND 플래시 제어기(100)를 도시한다. NAND 플래시 제어기(100)는 호스트 디바이스(102)로부터의 데이터가 NAND 플래시 메모리 디바이스(들)(101)로 기록될 수 있는 "프로그램", 또는 기록, 경로(110), 및 데이터가 호스트 디바이스(102)에 의해 NAND 플래시 메모리 디바이스(들)(101)로부터 판독될 수 있는 판독 경로(120)를 포함한다. 기록 경로(110)는 호스트 포맷으로 데이터를 수신하는 호스트 인터페이스(111), 호스트 포맷으로 호스트 인터페이스(111)에 의해 수신된 데이터를 NAND 플래시 메모리 디바이스(들)(101)에 의해 사용된 포맷으로 변환하기 위한 인코더(112), 및 인코딩된 데이터를 NAND 플래시 메모리 디바이스(들)(101)로 전달하기 위한 NAND 플래시 인터페이스(113)를 포함한다. 유사하게, 판독 경로(120)는 NAND 플래시 메모리 디바이스(들)(101)에 의해 사용된 포맷으로 NAND 플래시 메모리 디바이스(들)(101)로부터 데이터를 수신하는 NAND 플래시 인터페이스(121), NAND 플래시 메모리 디바이스(들)(101)에 의해 사용된 포맷으로 NAND 플래시 인터페이스(121)에 의해 수신된 데이터를 호스트 디바이스(102)에 의해 사용된 포맷으로 변환하기 위한 디코더(122), 및 디코딩된 데이터를 호스트 디바이스(102)로 전달하기 위한 호스트 인터페이스(123)를 포함한다. 마이크로프로세서일 수 있는, 프로세서(130)는 기록 경로(110) 및 판독 경로(120)의 다양한 구성요소들의 동작을 제어한다.
인코더(112) 및 디코더(122)는 상호 보완적이며, 즉, 인코더(112) 및 디코더(122)는 데이터를 인코딩 및 디코딩하기 위한 동일한 기법의 상호 보완적 버전들을 사용하며, 따라서 호스트 디바이스(102)로부터 수신되며 NAND 플래시 메모리 디바이스(들)(101) 상에서의 저장을 위해 인코더(112)에 의해 인코딩된 데이터는 NAND 플래시 메모리 디바이스(들)(101)로부터 되판독된 후 디코더(122)에 의해 디코딩될 수 있다. 흔히, 및 여기에서 논의된 구현들에서, 이러한 인코딩/디코딩 기법은 에러-정정 코드(ECC)이며, 따라서 데이터는 기록 또는 판독 프로세스들에서의 에러들 후에도 재구성될 수 있다.
도 2는 본 개시에 따른, ECC 디코더(122)의 구현(200)의 상세들을 도시한다. ECC 디코더(200)는 제 1 복수, n의 디코더 회로들(201), 및 제 2 복수, m의 디코더 회로들(202)을 포함한다. 디코더 회로들(201)의 각각은 디코더 회로들(202)의 각각에 의해 구현된 에러-정정 디코딩 기법보다 비교적 간단하며 더 빠른 에러-정정 디코딩 기법을 구현할 수 있는 반면, 디코더 회로들(202)의 각각은 디코더 회로들(201)의 각각에 의해 구현된 에러-정정 디코딩 기법보다 비교적 더 복잡하며 시간-소모적인 에러-정정 디코딩 기법을 구현할 수 있다. 일반적으로, 비교적 더 복잡하며 시간-소모적인 에러-정정 디코딩 기법을 구현한 디코더 회로들(202)이 있는 것보다 비교적 더 간단하며 더 빠른 에러-정정 디코딩 기법을 구현한 디코더 회로들(201)이 있을 가능성이 더 높을 것이며, 즉, 일반적으로 m>n인 구현들이 있을 수 있지만, n>m인 것이 예상될 수 있다. 비교적 더 간단하며 더 빠른 에러-정정 디코딩 기법은 "레벨 1"로서 불리울 수 있지만, 비교적 더 복잡하며 시간-소모적인 에러-정정 디코딩 기법은 "레벨 2"로서 불리울 수 있다.
NAND 플래시 인터페이스(121)로부터 채널들(203) 상에 수신된 데이터는 이하에서 추가로 논의되는 바와 같이 프로세서(130)의 제어 하에서 스위칭 회로들(204)에 의해 디코더 회로들(201) 또는 디코더 회로들(202)로 보내게 된다. 유사하게, 디코더 회로들(201) 또는 디코더 회로들(202)로부터의 디코딩된 데이터는 이하에서 추가로 논의되는 바와 같이, n:1 다중화기(205), m:1 다중화기(206) 및 2:1 다중화기(207)에 의해 208에서 호스트 인터페이스(123)로 전달된다.
프로세서(130)는 상기 논의된 바와 같이, 디코딩-태스크-시작 부분(220) 및 디코딩-태스크-완료 부분(230)을 포함하는, 디코딩 태스크 제어 블록(210)을 통해, 스위치 회로들(204)을 제어한다.
디코딩 태스크 제어 블록(210)의 디코딩-태스크-시작 부분(220)은 각각의 데이터 채널(203)에 대한 디코딩 태스크 큐들(221, 222)의 개별 쌍을 포함한다. 디코딩 태스크 큐들(221, 222)의 각각의 쌍 내에서, 하나의 디코딩 태스크 큐(예로서, 디코딩 태스크 큐(221))는 표준-우선순위 태스크 큐이지만, 다른 디코딩 태스크 큐(예로서, 디코딩 태스크 큐(222))는 고-우선순위 태스크 큐이다. 디코더 시작 제어(223)는 예로서, 태스크-ID 필드에 기초하여 결정된 바와 같이, 디코딩 태스크(211)가 적용하는 데이터 채널(203)에 따라 프로세서(130)로부터의 인입하는 디코딩 태스크들(211)을 디코딩 태스크 큐들(221, 222)의 적절한 쌍으로 분배한다. 디코딩 태스크 큐들(221, 222)의 각각의 쌍은 개별 채널 태스크 제어 블록(224)을 공급한다. 각각의 채널 태스크 제어 블록(224)은 태스크들(적어도 태스크-ID 및 우선순위에 관한 데이터를 포함한)을 레벨 1 디코더 스위치 제어 블록(225) 및 레벨 2 디코더 스위치 제어 블록(226)으로 전달하며, 또한 채널들(203) 상에서의 인입 데이터를 레벨 1 디코더 스위치(228) 또는 레벨 2 디코더 스위치(229)로 라우팅하도록 데이터-인 역다중화기(227)를 제어한다.
프로세서(130)는 각각의 디코딩 태스크(211)에 대응하는 판독 요청을, NAND 플래시 인터페이스(121)를 통해 NAND 플래시 메모리 디바이스(들)(101)로 전송한다. 각각의 판독 요청은 그것의 대응하는 디코딩 태스크(211)와 동일한 태스크-ID를 가진다. 대응하는 데이터가 NAND 플래시 인터페이스(121)에 의해 NAND 플래시 메모리 디바이스(들)(101)로부터 리턴될 때, 태스크-ID에 의해, 데이터가 리턴됨을 식별하는, 디코딩 데이터 준비 신호가, 231에서, NAND 플래시 인터페이스(121)에 의해, 채널 태스크 제어 블록들(224)로 전송된다.
수신된 태스크-ID에 의해 식별된 태스크를 소유하는 채널 태스크 제어 블록들(224) 중 하나, 즉, 데이터가 리턴된 채널들(203) 중 하나와 연관된 채널 태스크 제어 블록들(224) 중 하나는 채널들(203) 중 하나와 연관된 큐(221 또는 222)로부터 식별된 태스크를 선택할 것이다(태스크의 우선순위에 따라). 채널 태스크 제어 블록들(224) 중 하나는 그 후 태스크의 우선순위에 따라, 인입 채널(203)에서 각각 n개의 레벨 1 디코더 회로들(201) 또는 m개의 레벨 2 디코더 회로들(202) 중 이용 가능한 것으로 디코딩될 데이터를 라우팅하도록 레벨 1 디코더 스위치(228) 또는 레벨 2 디코더 스위치(229)를 활성화하기 위해, 태스크를 레벨 1 디코더 스위치 제어 블록(225) 또는 레벨 2 디코더 스위치 제어 블록(226)으로 전달할 것이다. 동시에, 채널 태스크 제어 블록들(224) 중 하나는 또한 데이터를 레벨 1 디코더 스위치(228) 또는 레벨 2 디코더 스위치(229) 중 활성화된 것으로 라우팅하기 위해 적절한 채널(203) 상에서 데이터-인 역다중화기들(227) 중 하나를 활성화시킬 것이다.
적절하다면, 데이터가 n개의 레벨 1 디코더 회로들(201) 또는 m개의 레벨 2 디코더 회로들(202) 중 하나로 라우팅된 후, 데이터는 n개의 레벨 1 디코더 회로들(201) 또는 m개의 레벨 2 디코더 회로들(202) 중 상기 하나에 의해 디코딩될 것이다. 디코딩이 완료된 후, 레벨 1 디코더 회로(201) 또는 레벨 2 디코더 회로(202)는, 경우에 따라, 완료 신호를 디코딩 태스크 제어 블록(210)의 디코딩-태스크-완료 부분(230)으로 전송할 것이다. 완료 신호는 디코더-완료-제어 블록(232)에 의해 수신될 것이며, 이것은 다중화기(205)(n개의 레벨 1 디코더 회로들(201) 중 하나의 경우에), 또는 다중화기(206)(m개의 레벨 2 디코더 회로들(202) 중 하나의 경우에)가 디코더 회로들(201 또는 202) 중 적절한 것을 선택하게 하며, 또한 다중화기(207)가 208에서 호스트 인터페이스(123)로 출력하기 위해 다중화기(205)(n개의 레벨 1 디코더 회로들(201) 중 하나의 경우에) 또는 다중화기(206)(m개의 레벨 2 디코더 회로들(202) 중 하나의 경우에)를 선택하게 할 것이다.
208에서 적절한 출력을 선택하도록 다중화기들(205, 206, 207)을 제어하는 것 외에, 디코딩 태스크 제어 블록(210)의 디코딩-태스크-완료 부분(230)은 또한 디코딩 태스크가 완료될 때 프로세서(130)에 통지한다. 예를 들면, 임의의 완료된 태스크에 대해, 디코더-완료-제어 블록(232)은 완료된 태스크의 우선순위에 의존하여, 완료된 태스크의 태스크-ID를 표준-우선순위 완료 상태 큐(233) 또는 고-우선순위 완료 상태 큐(234)로 출력할 수 있다. 디코더-완료-상태-제어 블록(235)은 236에서 표준-우선순위 완료 상태 큐(233) 및 고-우선순위 완료 상태 큐(234)로부터의 완료 표시들을 프로세서(130)로 전송한다.
고-우선순위 태스크에 관한 고-우선순위 완료 상태 큐(234)에서의 임의의 완료 표시는 표준-우선순위 완료 상태 큐(233)에서의 임의의 완료 표시에 앞서 전송될 수 있다. 대안적으로, 완료 표시들은 몇몇 미리 결정된 순서로 표준-우선순위 완료 상태 큐(233) 및 고-우선순위 완료 상태 큐(234) 양쪽 모두로부터 인출될 수 있다. 예를 들면, 하나의 완료 표시는 부가적인 완료 표시들이 고-우선순위 완료 상태 큐(234)에 남아있을지라도, 특정한 수의 완료 표시들이 고-우선순위 완료 상태 큐(234)로부터 인출된 후 표준-우선순위 완료 상태 큐(233)로부터 인출될 수 있다. 또 다른 대안으로서, 고-우선순위 태스크에 관한 고-우선순위 완료 상태 큐(234)에서의 임의의 완료 표시는, 완료 표시가 미리 결정된 지속 기간보다 긴 동안(상기 완료 표시의 우선순위를 "고"로 변경하기 위해 고려될 수 있는) 표준-우선순위 완료 상태 큐(233)에 존재하지 않는 한, 표준-우선순위 완료 상태 큐(233)에서 임의의 완료 표시에 앞서 전송될 수 있다.
디코딩 태스크 제어 블록(210)의 디코딩-태스크-시작 부분(220)에 대한 고려사항으로 돌아가면, 그것의 개별 저-우선순위 태스크 큐(221) 및 고-우선순위 태스크 큐(222)로부터 채널 태스크 제어 블록들(224) 중 하나에 의한 태스크의 선택은, 상기 주지된 바와 같이, 디코딩 태스크가, 그것의 상태에 관계없이, 태스크와 연관된 데이터가 NAND 플래시 메모리 디바이스(101)로부터 리턴될 때까지, 선택될 수 없기 때문에, 표준-우선순위 완료 상태 큐(233) 및 고-우선순위 완료 상태 큐(234)로부터의 완료 표시의 선택보다 더 복잡할 수 있다. NAND 플래시 메모리 제어기에서 상이한 우선순위들을 갖고 데이터 액세스를 다루기 위한 하나의 기법은 미국 특허 제9,092,156호에서 설명되며, 이것은 여기에서 전체적으로 참조로서 통합된다. 그러나, 다른 기법들이 데이터의 판독을 우선순위화하기 위해 사용될 수 있다.
데이터가 판독되며 리턴되었을 때, NAND 플래시 인터페이스(121)는 데이터와 연관된 우선순위 레벨을 표시하기 위해 신호를 포함할 수 있다. 하나 이상의 디코딩 태스크가 프로세싱된 채로 있다면, 우선순위를 표시한 상기 신호는 디코딩 태스크들을 선택할 때 사용될 것이며, 고-우선순위 태스크 큐(222)에서의 상위-우선순위 디코딩 태스크들은 표준-우선순위 태스크 큐(221)에서 표준-우선순위 디코딩 태스크들에 비해 선택 시 특혜를 제공받는다.
선택의 부분은 정확한 디코더로 데이터를 라우팅하는 것을 수반한다. 수행되는 디코딩 태스크가 레벨 1 디코더를 사용한다면, 그것은 할당된 우선순위를 갖고 레벨 1 디코더 스위치 제어 블록(225)으로 전송될 것이며; 그렇지 않다면 그것은 레벨 2 디코더 스위치 제어 블록(226)으로 전송될 것이다. 레벨 1 디코더 스위치 제어 블록(225) 및 레벨 2 디코더 스위치 제어 블록(226)은 중재 블록들로 고려될 수 있다. 예를 들면, 레벨 1 디코더 스위치 제어 블록(225) 및 레벨 2 디코더 스위치 제어 블록(226)의 각각에 할당된 태스크들은 가중 라운드 로빈 중재에 따라 분배될 수 있다.
상기 주지된 바와 같이, 각각의 레벨 1 디코더(201)는 비교적 더 간단하며 더 빠른 디코딩 기법을 구현할 수 있는 반면, 각각의 레벨 2 디코더(202)는 비교적 더 복잡하며 시간-소모적인 디코딩 기법을 구현할 수 있다. 일반적으로, 레벨 1 디코딩 기법은 표준-우선순위 태스크들을 위해 사용될 수 있는 반면, 레벨 2 디코딩 기법은 상위-우선순위 태스크들을 위해 사용될 수 있다. 그러나, 몇몇 구현들에서, 레벨 2 디코딩 기법이 표준-우선순위 태스크들을 위해 사용될 수 있는 상황들이 있을 수 있는 것처럼, 레벨 1 디코딩 기법이 상위-우선순위 태스크들을 위해 사용되는 상황들이 있을 수 있다.
예를 들면, 태스크가 그것이 레벨 1 디코딩 기법을 사용하여 실패한 표준-우선순위 태스크를 위한 판독-재시도 태스크이기 때문에 보다 높은 우선순위를 갖는다면, 판독-재시도 시도는, 그것의 보다 높은 우선순위에도 불구하고, 다시 레벨 1 디코딩 기법을 사용할 수 있다. 또 다른 예로서, 태스크가 표준의 우선순위를 가지며, 이용 가능한 레벨 1 디코더들이 없지만 사용되지 않은 레벨 2 디코더들이 있다면, 레벨 2 디코더가 태스크의 표준 우선순위에도 불구하고 사용될 수 있다. 하나의 이러한 예는 가비지 콜렉션 태스크와 같은, 지연시간-임계가 아닌 데이터를 수반할 수 있으며, 여기에서 레벨 1 디코딩은 실패하고; 제 2 시도를 위해 보다 느린 레벨 2 디코딩을 사용하는 것은 레벨 1 디코더를 지연시간-임계 데이터에 대해 이용 가능하게 할 것이다. 레벨 1 디코딩 기법이 상위-우선순위 태스크들을 위해 사용되거나 또는 레벨 2 디코딩 기법이 표준-우선순위 태스크들을 위해 사용되는 다른 시나리오들이 있을 수 있다.
ECC 디코더(200)의 동작은 도 3 내지 도 5에서의 흐름도들을 참조하여 보다 양호하게 이해될 수 있다.
도 3은 실시예에 따라, 각각의 데이터 채널(203)을 위한 디코딩 태스크 큐들(221, 222)이 실장되는 프로세스(300)의 구현을 도시한 흐름도이다. 논의 중인 채널에 대한 새로운 디코딩 태스크가 301에서 수신된다. 302에서, 301에서 수신된 태스크가 고-우선순위 태스크인지가 결정된다. 301에서 수신된 태스크가 302에서 고-우선순위 태스크인 것으로 결정되면, 303에서, 태스크는 상기 채널을 위해 고-우선순위 태스크 큐(222)에 위치된다. 그러나, 302에서 수신된 태스크가 고-우선순위 태스크가 아닌 것으로 결정되면, 304에서, 태스크는 상기 채널에 대해 표준-우선순위 태스크 큐(221)에 위치된다. 305에서, 채널에 대해 임의의 추가 디코딩 태스크가 있는지가 결정된다. 305에서 상기 채널에 대해 추가 디코딩 태스크가 없다고 결정되면, 프로세스(300)는 종료된다. 그러나 305에서, 상기 채널에 대해 추가 디코딩 태스크가 있다고 결정되면, 프로세스(300)는 새로운 디코딩 태스크를 수신하기 위해 301로 리턴한다.
도 4는 표준-우선순위 태스크 큐(221) 또는 고-우선순위 태스크 큐(222) 중 하나로부터 실행을 위한 태스크를 선택하기 위한 프로세스(400)의 구현을 도시한 흐름도이다. 401에서, 데이터가, 예로서 요청에 응답하여, NAND 플래시 메모리 디바이스(101)로부터 리턴되었음을 표시하는, NAND 데이터 준비 신호가, 예로서 채널들(203) 중 하나 상에서, 수신된다. 402에서, 리턴된 데이터가 고-우선순위 태스크(상기 주지된 바와 같이, 태스크-ID는 데이터와 함께 리턴될 수 있다)에 속하는지가 결정된다. 그렇다면, 403에서 연관된 태스크가 대응 채널(203)의 고-우선순위 태스크 큐(222)로부터 방출된다. 그렇지 않다면, 402에서 리턴된 데이터가 고-우선순위 태스크에 속하지 않는다고 결정되면, 404에서, 연관된 태스크가 대응 채널(203)의 표준-우선순위 태스크 큐(221)로부터 방출된다.
상기 주지된 바와 같이, 디코더의 선택은 반드시 태스크의 우선순위 레벨에 의해 결정되는 것은 아니다. 대부분의 고-우선순위 태스크들은 레벨 2 디코더 태스크들일 것이며, 대부분의 표준-우선순위 태스크들은 레벨 1 디코더 태스크들일 것이지만, 예외들이 있을 수 있다. 그러므로, 태스크가 수행되기 위해 방출되었다면, 405에서, 태스크가 레벨 1 디코딩 태스크인지가 결정된다. 그렇다면, 406에서 태스크는 레벨 1 디코더로 보내게 되며(적절한 채널 태스크 제어 블록 및 적절한 디코더 스위치 제어 블록을 통해) 프로세스(400)는 종료된다. 그렇지 않다면, 405에서 태스크가 레벨 1 디코딩 태스크가 아니라고 결정되면, 407에서 태스크는 레벨 2 디코더로 보내게 되며 프로세스(400)는 종료된다.
큐들(221, 222)로부터의 태스크들의 방출의 실제 순서는 미리 결정된 규칙들에 따라 제어될 수 있다. 그러므로, 데이터가 리턴되지만, 데이터가 또한 리턴된 또 다른 태스크보다 낮은 우선순위를 가진 태스크(즉, 표준-우선순위 태스크)와 연관된다면, 데이터는 태스크가 수행될 준비가 될 때까지 버퍼(도시되지 않음)에서 유지될 수 있다.
규칙들의 하나의 가능한 세트에 따르면, 고-우선순위 태스크들은 항상 표준-우선순위 태스크들에 대해 우선함을 가질 것이다. 상기 규칙들의 세트에 대한 변형에 따르면, 표준-우선순위 큐에서의 과도한 체류 시간(미리 결정된 제한을 넘어)은 태스크가 고-우선순위 큐로 이동되게 한다. 규칙들의 또 다른 가능한 세트에 따르면, 하나의 표준-우선순위 태스크는 수행되는 모든 p개의 고-우선순위 태스크들에 대해 수행되며, 이것은 표준-우선순위 큐에서의 과도한 체류 시간이 덜 가능성 있게 한다. 이들 규칙 세트들의 조합이 사용될 수 있으며, 여기에서 하나의 표준-우선순위 태스크는 수행되는 모든 p개의 고-우선순위 태스크들에 대해 수행되지만, 표준-우선순위 큐에서의 과도한 체류 시간(드물어야 한다)은 태스크가 표준-우선순위 큐에서 상위-우선순위 큐로 이동되게 한다. 규칙들의 다른 세트들이 개발될 수 있다.
규칙들의 하나의 가능한 이러한 세트의 예(500)가 도 5에 도표로 그려진다. 501에서 실행된 고-우선순위 태스크들의 수(카운터가 마지막 리셋된 이래)가 임계치를 초과하는지가 결정된다. 아니라면, 502에서, 고-우선순위 태스크 큐에서 대기하는 임의의 고-우선순위 태스크들이 있는지가 결정된다. 그렇다면, 503에서 고-우선순위 태스크가 선택되며 적절한 디코더(예로서, 도 4 참조)로 전송되고, 여기에서 선택된 태스크는 504에서 수행된다. 502에서, 고-우선순위 태스크 큐에서 대기하는 고-우선순위 태스크들이 없다고 결정되거나, 또는 501에서, 실행된 고-우선순위 태스크들의 수(카운터가 마지막 리셋된 이래)가 임계치를 초과한다고 결정되면, 505에서, 표준-우선순위 태스크 큐에서 대기하는 임의의 표준-우선순위 태스크들이 있는지가 결정된다. 그렇다면, 506에서, 표준-우선순위 태스크가 선택되며 적절한 디코더(예로서, 도 4 참조)로 전송되고, 여기에서 선택된 태스크는 504에서 수행된다.
선택된 태스크가 504에서 수행된 후(그것이 고-우선순위 태스크인지 표준-우선순위 태스크인지에 관계없이), 507에서 예로서, 도 6에서 도시된 바와 같이 보고하기 위해 결과들이 완료 상태 큐들(233, 234)로 전송된다. 결과들이 보고된 후, 또는 505에서 표준-우선순위 태스크 큐에서 대기하는 표준-우선순위 태스크들이 없다고 결정되면, 508에서 임의의 태스크들이 수행된 채로 있는지가 결정된다. 그렇다면, 흐름은 501로 리턴한다. 508에서 어떤 태스크들도 수행되는 채로 있지 않다고 결정되면, 프로세스(500)는 종료된다.
도 6은 디코딩 태스크들의 완료를 보고하기 위한 하나의 가능한 프로세스(600)의 구현을 도시한 흐름도이다. 601에서 임의의 보고되지 않은 완료된 고-우선순위 디코딩 태스크들(예로서, 고-우선순위 완료 상태 큐(234)에서)이 있는지가 결정된다. 그렇다면, 다음 완료된 고-우선순위 태스크의 통지가 602에서 보고되며 흐름은 보다 많은 보고되지 않은 완료된 디코딩 태스크들을 찾기 위해 601로 리턴한다. 601에서, 보고되지 않은 완료된 고-우선순위 디코딩 태스크들이 없다고 결정되면, 603에서 임의의 보고되지 않은 완료된 표준-우선순위 디코딩 태스크들이 있는지가 결정된다(예로서, 표준-우선순위 완료 상태 큐(233)에서). 그렇다면, 다음 완료된 표준-우선순위 태스크의 통지가 604에서 보고되며 흐름은 보다 많은 보고되지 않은 완료된 고-우선순위 디코딩 태스크들을 찾기 위해 601로 리턴한다. 603에서 보고되지 않은 완료된 표준-우선순위 디코딩 태스크들이 없다고 결정되면, 프로세스(600)는 종료된다. 그러나, 큐들(221, 222)로부터 태스크들을 방출하기 위해 상기 제시된 규칙들의 다양한 가능한 세트들과 유사한, 보고 규칙들의 다른 세트들이 또한 태스크들의 완료의 보고에 적용할 수 있다는 것이 주의되어야 한다.
따라서 전체 스루풋이, 재시도 동작을 필요하게 만드는 가끔의 실패가 발생할 수 있을지라도, 대부분의 메모리 액세스 동작들에 대해 보다 간단하며 보다 빠른 디코딩 기법을 사용하지만, 상위-우선순위 디코딩 태스크들에 대해 보다 복잡하며 시간-소모적인 디코딩 기법을 사용함으로써 최대화될 수 있는 디코딩 장치, 및 대응하는 방법들이 제공된다는 것이 보여진다. 또한, "컷-인-라인" 피처 하에서, 상위-우선순위 디코딩 태스크는, 상기 주지된 바와 같이, 표준-우선순위 태스크가 나중에-도착한 상위-우선순위 태스크들 때문에 너무 길게 기다려야 한다면, 표준-우선순위 태스크가 스스로 우선순위에서 증가할 수 있지만, 상위-우선순위 디코딩 태스크가 나중에 개시될지라도, 표준-우선순위 디코딩 태스크 전에 수행될 수 있다는 것이 보여진다.
본 발명의 추가 양상들은 다음의 항목들 중 하나 이상에 관련된다:
항목 1: NAND 플래시 메모리 제어기에서 디코딩 태스크들을 수행하기 위한 장치에 있어서,
제 1 우선순위의 디코딩 태스크들을 큐잉하기 위한 제 1 태스크 큐;
상기 제 1 우선순위보다 높은 제 2 우선순위의 디코딩 태스크들을 큐잉하기 위한 제 2 태스크 큐; 및
복수의 디코딩 태스크들에 대한 데이터의 부분들의 수신 시, 상기 복수의 디코딩 태스크들에서의 개별 디코딩 태스크들의 우선순위들에 따라, 상기 데이터의 부분들의 개개의 것들에 대해 동작하도록, 상기 제 1 및 제 2 태스크 큐들로부터, 상기 복수의 디코딩 태스크들에서의 개별 디코딩 태스크들을 방출하는 제어 회로를 포함하는, 장치.
항목 2: 항목 1의 장치에 있어서, 상기 NAND 플래시 메모리 제어기는 복수의 메모리 채널들을 포함하며, 상기 장치는:
상기 복수의 채널들에서의 각각의 개별 채널에 대한 개별 제 1 태스크 큐, 및 상기 복수의 채널들에서의 각각의 개별 채널에 대한 개별 제 2 태스크 큐;
제 1 에러-정정 코드 디코딩 기법하에서 동작하는 적어도 하나의 제 1 디코더;
상기 제 1 에러-정정 코드 디코딩 기법과 속도 및 복잡도 중 하나 또는 양쪽 모두가 상이한 제 2 에러-정정 코드 디코딩 기법하에서 동작하는 적어도 하나의 제 2 디코더; 및
상기 제 1 디코더 및 상기 제 2 디코더 중 하나에 각각의 데이터 채널을 제어 가능하게 연결하는 입력 스위칭 회로를 더 포함하며;
상기 제어 회로는 상기 개별 채널에 대한 개별 데이터를 상기 제 1 디코더 및 상기 제 2 디코더 중 하나로 보내도록 상기 입력 스위칭 회로를 제어하기 위해, 상기 개별 채널에 대한 상기 개별 제 1 및 제 2 태스크 큐들로부터 디코딩 태스크들을 방출하기 위해 각각의 개별 채널에 대한 개별 채널 태스크 제어 블록을 포함하는, 장치.
항목 3: 항목 2의 장치에 있어서, 상기 적어도 하나의 제 1 디코더는 복수의 제 1 디코더들을 포함하고;
상기 적어도 하나의 제 2 디코더는 복수의 제 2 디코더들을 포함하며;
상기 입력 스위칭 회로는:
상기 개별 채널 상에서의 데이터를 상기 복수의 제 1 디코더들 및 상기 복수의 제 2 디코더들 중 하나로 선택 가능하게 보내기 위한 각각의 개별 채널에 대한 개별 역다중화기,
상기 복수의 제 1 디코더들에 대한 역다중화기 출력들을 상기 복수의 제 1 디코더들 중 이용 가능한 것들로 보내기 위한 제 1 스위치, 및
상기 복수의 제 2 디코더들에 대한 역다중화기 출력들을 상기 복수의 제 2 디코더들 중 이용 가능한 것들로 보내기 위한 제 2 스위치를 포함하는, 장치.
항목 4: 항목 2의 장치에 있어서, 상기 데이터에 대응하는 디코딩 태스크가 상기 제 1 태스크 큐 및 상기 태스크 제 2 큐 중 하나로부터 방출될 때까지 상기 개별 채널 상에서 수신된 데이터를 유지하기 위해 각각의 개별 채널에 대한 개별 버퍼를 더 포함하는, 장치.
항목 5: 항목 2의 장치에 있어서, 상기 제 1 디코더 및 상기 제 2 디코더 중 하나의 출력을 출력하기 위한 출력 스위칭 회로를 더 포함하며,
상기 제어 회로는 상기 제 1 디코더 및 상기 제 2 디코더 중 하나로부터의 디코더-완료 신호의 수신 시 상기 제 1 디코더 및 상기 제 2 디코더 중 하나의 출력을 선택하는 디코더-완료 제어 회로를 포함하는, 장치.
항목 6: 항목 5의 장치에 있어서,
상기 제 1 우선순위의 완료된 디코딩 태스크들을 큐잉하기 위한 제 1 태스크-완료 큐; 및
상기 제 2 우선순위의 완료된 디코딩 태스크들을 큐잉하기 위한 제 2 태스크-완료 큐를 더 포함하며,
상기 디코더-완료 제어 회로는 각각의 완료된 디코딩 태스크를 상기 제 1 태스크-완료 큐 및 상기 제 2 태스크-완료 큐 중 하나로 로딩하며;
상기 제어 회로는 상기 완료된 디코딩 태스크들의 우선순위들에 따라 상기 제 1 및 제 2 태스크-완료 큐들로부터 완료된 디코딩 태스크들을 보고하는 디코더-완료 상태 제어 회로를 더 포함하는, 장치.
항목 7: 항목 1의 장치에 있어서, 상기 데이터에 대응하는 디코딩 태스크가 상기 제 1 태스크 큐 및 상기 태스크 제 2 큐 중 하나로부터 방출될 때까지 NAND 플래시 메모리로부터 수신된 데이터를 유지하기 버퍼를 더 포함하는, 장치.
항목 8: 항목 1의 장치에 있어서,
상기 제 1 우선순위의 완료된 디코딩 태스크들을 큐잉하기 위한 제 1 태스크-완료 큐; 및
상기 제 2 우선순위의 완료된 디코딩 태스크들을 큐잉하기 위한 제 2 태스크-완료 큐를 더 포함하며,
상기 제어 회로는 상기 완료된 디코딩 태스크들의 우선순위들에 따라 상기 제 1 및 제 2 태스크-완료 큐들로부터 완료된 디코딩 태스크들을 보고하는, 장치.
항목 9: NAND 플래시 메모리 제어기에서 디코딩 태스크들을 수행하기 위한 방법에 있어서,
제 1 태스크 큐에 제 1 우선순위의 디코딩 태스크들을 큐잉하는 단계;
제 2 태스크 큐에 상기 제 1 우선순위보다 높은 제 2 우선순위의 디코딩 태스크들을 큐잉하는 단계; 및
복수의 디코딩 태스크들에 대한 데이터의 부분들의 수신 시, 상기 복수의 디코딩 태스크들에서의 개별 디코딩 태스크들의 우선순위들에 따라, 상기 데이터의 부분들의 개개의 것들에 대해 동작하도록, 상기 제 1 및 제 2 태스크 큐들로부터, 상기 복수의 디코딩 태스크들에서의 개별 디코딩 태스크들을 방출하는 단계를 포함하는, 방법.
항목 10: 항목 9의 방법에 있어서, 상기 NAND 플래시 메모리 제어기는 복수의 메모리 채널들을 포함하며,
상기 제 1 우선순위의 디코딩 태스크들을 큐잉하는 단계는 상기 복수의 채널들에서 각각의 개별 채널에 대한 개별 제 1 태스크 큐에 디코딩 태스크들을 큐잉하는 단계를 포함하며;
상기 제 2 우선순위의 디코딩 태스크들을 큐잉하는 단계는 상기 복수의 채널들에서 각각의 개별 채널에 대한 개별 제 2 태스크 큐에 디코딩 태스크들을 큐잉하는 단계를 포함하며, 상기 방법은:
제 1 에러-정정 코드 디코딩 기법하에서 동작하는 제 1 디코더 및 상기 제 1 에러-정정 코드 디코딩 기법과 속도 및 복잡도 중 하나 또는 양쪽 모두가 상이한 제 2 에러-정정 코드 디코딩 기법하에서 동작하는 제 2 디코더 중 하나에 각각의 데이터 채널을 제어 가능하게 연결하는 단계를 더 포함하는, 방법.
항목 11: 항목 10의 방법에 있어서, 상기 제어 가능하게 연결하는 단계는 상기 제 1 에러-정정 코드 디코딩 기법하에서 동작하는 복수의 제 1 디코더들 및 상기 제 2 에러-정정 코드 디코딩 기법하에서 동작하는 복수의 제 2 디코더들 중 하나에 각각의 데이터 채널을 제어 가능하게 연결하는 단계를 포함하는, 방법.
항목 12: 항목 10의 방법에 있어서, 각각의 개별 채널에 대해, 상기 데이터에 대응하는 디코딩 태스크가 상기 제 1 태스크 큐 및 상기 태스크 제 2 큐 중 하나로부터 방출될 때까지 상기 개별 채널 상에서 수신된 데이터를 버퍼에 유지하는 단계를 더 포함하는, 방법.
항목 13: 항목 10의 방법에 있어서,
상기 제 1 우선순위의 완료된 디코딩 태스크들을 제 1 태스크-완료 큐에 큐잉하는 단계; 및
상기 제 2 우선순위의 완료된 디코딩 태스크들을 제 2 태스크-완료 큐에 큐잉하는 단계; 및
상기 완료된 디코딩 태스크들의 우선순위들에 따라 상기 제 1 및 제 2 태스크-완료 큐들로부터 완료된 디코딩 태스크들을 보고하는 단계를 더 포함하는, 방법.
항목 14: 항목 9의 방법에 있어서, 상기 데이터에 대응하는 디코딩 태스크가 상기 제 1 태스크 큐 및 상기 태스크 제 2 큐 중 하나로부터 방출될 때까지 NAND 플래시 메모리로부터 수신된 데이터를 버퍼에 유지하는 단계를 더 포함하는, 방법.
항목 15: 항목 9의 방법에 있어서,
상기 제 1 우선순위의 완료된 디코딩 태스크들을 제 1 태스크-완료 큐에 큐잉하는 단계; 및
상기 제 2 우선순위의 완료된 디코딩 태스크들을 제 2 태스크-완료 큐에 큐잉하는 단계; 및
상기 완료된 디코딩 태스크들의 우선순위들에 따라 상기 제 1 및 제 2 태스크-완료 큐들로부터의 완료된 디코딩 태스크들을 보고하는 단계를 더 포함하는, 방법.
항목 16: 항목 15의 방법에 있어서, 상기 완료된 디코딩 태스크들의 우선순위들에 따라 상기 제 1 및 제 2 태스크-완료 큐들로부터의 완료된 디코딩 태스크들을 보고하는 단계는 상기 제 1 우선순위의 임의의 완료된 디코딩 태스크들을 보고하기 전에 상기 제 2 우선순위의 모든 완료된 디코딩 태스크들을 보고하는 단계를 포함하는, 방법.
항목 17: 항목 16의 방법에 있어서, 상기 제 1 태스크-완료 큐에서의 상기 완료된 디코딩 태스크의 큐잉 후 미리 결정된 지속 기간 후 상기 제 1 우선순위에서 상기 제 2 우선순위로 완료된 디코딩 태스크의 우선순위 레벨을 변경하는 단계를 더 포함하는, 방법.
항목 18: 항목 15의 방법에 있어서, 상기 완료된 디코딩 태스크들의 우선순위들에 따라 상기 제 1 및 제 2 태스크-완료 큐들로부터의 완료된 디코딩 태스크들을 보고하는 단계는 상기 제 2 태스크-완료 큐로부터의 미리 결정된 수의 태스크들의 보고 후 상기 제 1 태스크-완료 큐로부터의 태스크를 보고하는 단계를 포함하는, 방법.
항목 19: 항목 9의 방법에 있어서, 상기 복수의 디코딩 태스크들에서의 상기 개별 디코딩 태스크들의 우선순위들에 따라, 상기 데이터의 부분들의 개개의 것들에 대해 동작하도록, 상기 제 1 및 제 2 태스크 큐들로부터, 상기 복수의 디코딩 태스크들에서의 개별 디코딩 태스크들을 방출하는 단계는 상기 제 1 우선순위의 임의의 디코딩 태스크들을 방출하기 전에 상기 제 2 우선순위의 모든 디코딩 태스크들을 방출하는 단계를 포함하는, 방법.
항목 20: 항목 19의 방법에 있어서, 상기 제 1 태스크 큐에서의 상기 디코딩 태스크의 큐잉 후 미리 결정된 지속 기간 후 상기 제 1 우선순위에서 상기 제 2 우선순위로 디코딩 태스크의 우선순위 레벨을 변경하는 단계를 더 포함하는, 방법.
항목 21: 항목 9의 방법에 있어서, 상기 복수의 디코딩 태스크들에서의 상기 개별 디코딩 태스크들의 우선순위들에 따라, 상기 데이터의 부분들의 개개의 것들에 대해 동작하도록, 상기 제 1 및 제 2 태스크 큐들로부터, 상기 복수의 디코딩 태스크들에서의 개별 디코딩 태스크들을 방출하는 단계는, 상기 제 2 태스크 큐로부터의 미리 결정된 수의 태스크들의 방출 후 상기 제 1 태스크 큐로부터 태스크를 방출하는 단계를 포함하는, 방법.
본 출원에서 그리고 이하에 청구항들에서 사용된 구성("A 및 B 중 하나")은 "A 또는 B"를 의미할 것이다.
앞서 말한 것은 단지 본 발명의 원리들을 예시하며, 본 발명은 제한이 아닌 예시를 위해 제공되는, 설명된 실시예들이 아닌 다른 것에 의해 실시될 수 있으며, 본 발명은 단지 이어지는 청구항들에 의해서만 제한된다는 것이 이해될 것이다.

Claims (21)

  1. NAND 플래시 메모리 제어기에서 디코딩 태스크들을 수행하기 위한 장치에 있어서,
    제 1 우선순위의 디코딩 태스크들을 큐잉(queuing)하기 위한 제 1 태스크 큐(task queue);
    상기 제 1 우선순위보다 높은 제 2 우선순위의 디코딩 태스크들을 큐잉하기 위한 제 2 태스크 큐; 및
    복수의 디코딩 태스크들에 대한 데이터의 부분들의 수신 시, 상기 복수의 디코딩 태스크들내 개별 디코딩 태스크들의 우선순위들에 따라, 상기 데이터의 부분들의 개개의 것들에 대해 동작하도록, 상기 제 1 및 제 2 태스크 큐들로부터, 상기 복수의 디코딩 태스크들에서의 개별 디코딩 태스크들을 방출하는 제어 회로를 포함하는, 장치.
  2. 청구항 1에 있어서,
    상기 NAND 플래시 메모리 제어기는 복수의 메모리 채널들을 포함하며, 상기 장치는:
    상기 복수의 채널들에서 각각의 개별 채널에 대한 개별 제 1 태스크 큐, 및 상기 복수의 채널들에서 각각의 개별 채널에 대한 개별 제 2 태스크 큐;
    제 1 에러-정정 코드 디코딩 기법하에서 동작하는 적어도 하나의 제 1 디코더;
    상기 제 1 에러-정정 코드 디코딩 기법과 속도 및 복잡도 중 하나 또는 둘다에서 상이한 제 2 에러-정정 코드 디코딩 기법하에서 동작하는 적어도 하나의 제 2 디코더; 및
    상기 제 1 디코더 및 상기 제 2 디코더 중 하나에 각각의 데이터 채널을 제어 가능하게 연결하는 입력 스위칭 회로를 더 포함하며;
    상기 제어 회로는 상기 개별 채널에 대한 상기 개별 제 1 및 제 2 태스크 큐들로부터 디코딩 태스크들을 방출하기 위한, 각각의 개별 채널에 대한 개별 채널 태스크 제어 블록을 포함하며, 상기 개별 채널에 대한 개별 데이터를 상기 제 1 디코더 및 상기 제 2 디코더 중 하나로 보내도록 상기 입력 스위칭 회로를 제어하는 것을 특징으로 하는 장치.
  3. 청구항 2에 있어서,
    상기 적어도 하나의 제 1 디코더는 복수의 제 1 디코더들을 포함하고;
    상기 적어도 하나의 제 2 디코더는 복수의 제 2 디코더들을 포함하며;
    상기 입력 스위칭 회로는:
    상기 개별 채널 상에서의 데이터를 상기 복수의 제 1 디코더들 및 상기 복수의 제 2 디코더들 중 하나로 선택 가능하게 보내기 위한 각각의 개별 채널에 대한 개별 역다중화기,
    상기 복수의 제 1 디코더들에 대한 역다중화기 출력들을 상기 복수의 제 1 디코더들 중 이용 가능한 것들로 보내기(direct) 위한 제 1 스위치, 및
    상기 복수의 제 2 디코더들에 대한 역다중화기 출력들을 상기 복수의 제 2 디코더들 중 이용 가능한 것들로 보내기 위한 제 2 스위치를 포함하는, 장치.
  4. 청구항 2에 있어서,
    상기 데이터에 대응하는 디코딩 태스크가 상기 제 1 태스크 큐 및 상기 태스크 제 2 큐 중 하나로부터 방출될 때까지 상기 개별 채널 상에서 수신된 데이터를 유지하기 위한 각각의 개별 채널에 대한 개별 버퍼를 더 포함하는, 장치.
  5. 청구항 2에 있어서,
    상기 제 1 디코더 및 상기 제 2 디코더 중 하나의 출력을 출력하기 위한 출력 스위칭 회로를 더 포함하며,
    상기 제어 회로는 상기 제 1 디코더 및 상기 제 2 디코더 중 하나로부터의 디코더-완료 신호(decoder-done signal)의 수신 시 상기 제 1 디코더 및 상기 제 2 디코더 중 하나의 출력을 선택하는 디코더-완료 제어 회로를 포함하는, 장치.
  6. 청구항 5에 있어서,
    상기 제 1 우선순위의 완료된 디코딩 태스크들을 큐잉하기 위한 제 1 태스크-완료 큐(task-done queue); 및
    상기 제 2 우선순위의 완료된 디코딩 태스크들을 큐잉하기 위한 제 2 태스크-완료 큐를 더 포함하며,
    상기 디코더-완료 제어 회로는 각각의 완료된 디코딩 태스크를 상기 제 1 태스크-완료 큐 및 상기 제 2 태스크-완료 큐 중 하나로 로딩하며; 및
    상기 제어 회로는 상기 완료된 디코딩 태스크들의 우선순위들에 따라 상기 제 1 및 제 2 태스크-완료 큐들로부터 완료된 디코딩 태스크들을 보고하는 디코더-완료 상태 제어 회로를 더 포함하는, 장치.
  7. 청구항 1에 있어서,
    상기 데이터에 대응하는 디코딩 태스크가 상기 제 1 태스크 큐 및 상기 태스크 제 2 큐 중 하나로부터 방출될 때까지 NAND 플래시 메모리로부터 수신된 데이터를 유지하기 위한 버퍼를 더 포함하는, 장치.
  8. 청구항 1에 있어서,
    상기 제 1 우선순위의 완료된 디코딩 태스크들을 큐잉하기 위한 제 1 태스크-완료 큐; 및
    상기 제 2 우선순위의 완료된 디코딩 태스크들을 큐잉하기 위한 제 2 태스크-완료 큐를 더 포함하며,
    상기 제어 회로는 상기 완료된 디코딩 태스크들의 우선순위들에 따라 상기 제 1 및 제 2 태스크-완료 큐들로부터 완료된 디코딩 태스크들을 보고(report)하는, 장치.
  9. NAND 플래시 메모리 제어기에서 디코딩 태스크들을 수행하기 위한 방법에 있어서,
    제 1 우선순위의 디코딩 태스크들을 제 1 태스크 큐(task queue)에 큐잉하는 단계;
    상기 제 1 우선순위보다 높은 제 2 우선순위의 디코딩 태스크들을 제 2 태스크 큐에 큐잉하는 단계; 및
    복수의 디코딩 태스크들에 대한 데이터의 부분들의 수신 시, 상기 복수의 디코딩 태스크들에서의 개별 디코딩 태스크들의 우선순위들에 따라, 상기 데이터의 부분들의 개개의 것들에 대해 동작하도록, 상기 제 1 및 제 2 태스크 큐들로부터, 상기 복수의 디코딩 태스크들에서의 개별 디코딩 태스크들을 방출하는 단계를 포함하는, 방법.
  10. 청구항 9에 있어서,
    상기 NAND 플래시 메모리 제어기는 복수의 메모리 채널들을 포함하며,
    상기 제 1 우선순위의 디코딩 태스크들을 큐잉하는 단계는 상기 복수의 채널들에서 각각의 개별 채널에 대한 개별 제 1 태스크 큐에 디코딩 태스크들을 큐잉하는 단계를 포함하며; 및
    상기 제 2 우선순위의 디코딩 태스크들을 큐잉하는 단계는 상기 복수의 채널들에서 각각의 개별 채널에 대한 개별 제 2 태스크 큐에 디코딩 태스크들을 큐잉하는 단계를 포함하며, 상기 방법은:
    제 1 에러-정정 코드 디코딩 기법하에서 동작하는 제 1 디코더 및 상기 제 1 에러-정정 코드 디코딩 기법과 속도 및 복잡도 중 하나 또는 둘다에서 상이한 제 2 에러-정정 코드 디코딩 기법하에서 동작하는 제 2 디코더 중 하나에 각각의 데이터 채널을 제어 가능하게 연결하는 단계를 더 포함하는, 방법.
  11. 청구항 10에 있어서,
    상기 제어 가능하게 연결하는 단계는 상기 제 1 에러-정정 코드 디코딩 기법하에서 동작하는 복수의 제 1 디코더들 및 상기 제 2 에러-정정 코드 디코딩 기법하에서 동작하는 복수의 제 2 디코더들 중 하나에 각각의 데이터 채널을 제어 가능하게 연결하는 단계를 포함하는, 방법.
  12. 청구항 10에 있어서,
    각각의 개별 채널에 대해, 상기 데이터에 대응하는 디코딩 태스크가 상기 제 1 태스크 큐 및 상기 태스크 제 2 큐 중 하나로부터 방출될 때까지 상기 개별 채널상에서 수신된 데이터를 버퍼에 유지하는 단계를 더 포함하는, 방법.
  13. 청구항 10에 있어서,
    상기 제 1 우선순위의 완료된 디코딩 태스크들을 제 1 태스크-완료 큐에 큐잉하는 단계; 및
    상기 제 2 우선순위의 완료된 디코딩 태스크들을 제 2 태스크-완료 큐에 큐잉하는 단계; 및
    상기 완료된 디코딩 태스크들의 우선순위들에 따라 상기 제 1 및 제 2 태스크-완료 큐들로부터의 완료된 디코딩 태스크들을 보고하는 단계를 더 포함하는, 방법.
  14. 청구항 9에 있어서,
    상기 데이터에 대응하는 디코딩 태스크가 상기 제 1 태스크 큐 및 상기 태스크 제 2 큐 중 하나로부터 방출될 때까지 NAND 플래시 메모리로부터 수신된 데이터를 버퍼에 유지하는 단계를 더 포함하는, 방법.
  15. 청구항 9에 있어서,
    상기 제 1 우선순위의 완료된 디코딩 태스크들을 제 1 태스크-완료 큐에 큐잉하는 단계; 및
    상기 제 2 우선순위의 완료된 디코딩 태스크들을 제 2 태스크-완료 큐에 큐잉하는 단계; 및
    상기 완료된 디코딩 태스크들의 우선순위들에 따라 상기 제 1 및 제 2 태스크-완료 큐들로부터의 완료된 디코딩 태스크들을 보고하는 단계를 더 포함하는, 방법.
  16. 청구항 15에 있어서,
    상기 완료된 디코딩 태스크들의 우선순위들에 따라 상기 제 1 및 제 2 태스크-완료 큐들로부터의 완료된 디코딩 태스크들을 보고하는 단계(reporting)는 상기 제 1 우선순위의 임의의 완료된 디코딩 태스크들을 보고하기 전에 상기 제 2 우선순위의 모든 완료된 디코딩 태스크들을 보고하는 단계를 포함하는, 방법.
  17. 청구항 16에 있어서,
    상기 제 1 태스크-완료 큐에서의 상기 완료된 디코딩 태스크의 큐잉 후 미리 결정된 지속 기간 후 상기 제 1 우선순위에서 상기 제 2 우선순위로 완료된 디코딩 태스크의 우선순위 레벨을 변경하는 단계를 더 포함하는, 방법.
  18. 청구항 15에 있어서,
    상기 완료된 디코딩 태스크들의 우선순위들에 따라 상기 제 1 및 제 2 태스크-완료 큐들로부터의 완료된 디코딩 태스크들을 보고하는 단계는 상기 제 2 태스크-완료 큐로부터의 미리 결정된 수의 태스크들의 보고 후 상기 제 1 태스크-완료 큐로부터의 태스크를 보고하는 단계를 포함하는, 방법.
  19. 청구항 9에 있어서,
    상기 복수의 디코딩 태스크들에서의 상기 개별 디코딩 태스크들의 우선순위들에 따라, 상기 데이터의 부분들의 개개의 것들에 대해 동작하도록, 상기 제 1 및 제 2 태스크 큐들로부터, 상기 복수의 디코딩 태스크들에서의 개별 디코딩 태스크들을 방출하는 단계는 상기 제 1 우선순위의 임의의 디코딩 태스크들을 방출하기 전에 상기 제 2 우선순위의 모든 디코딩 태스크들을 방출하는 단계를 포함하는, 방법.
  20. 청구항 19에 있어서,
    상기 제 1 태스크 큐에서의 상기 디코딩 태스크의 큐잉 후 미리 결정된 지속 기간 후 상기 제 1 우선순위에서 상기 제 2 우선순위로 디코딩 태스크의 우선순위 레벨을 변경하는 단계를 더 포함하는, 방법.
  21. 청구항 9에 있어서,
    상기 복수의 디코딩 태스크들에서의 상기 개별 디코딩 태스크들의 우선순위들에 따라, 상기 데이터의 부분들의 개개의 것들에 대해 동작하도록, 상기 제 1 및 제 2 태스크 큐들로부터, 상기 복수의 디코딩 태스크들에서의 개별 디코딩 태스크들을 방출하는 단계는, 상기 제 2 태스크 큐로부터의 미리 결정된 수의 태스크들의 방출 후 상기 제 1 태스크 큐로부터 태스크를 방출하는 단계를 포함하는, 방법.
KR1020160166829A 2015-12-11 2016-12-08 낸드 플래시 콘트롤러에서의 우선순위에 따른 디코딩 태스크들의 큐잉 KR20170074759A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201562266193P 2015-12-11 2015-12-11
US62/266,193 2015-12-11

Publications (1)

Publication Number Publication Date
KR20170074759A true KR20170074759A (ko) 2017-06-30

Family

ID=59020757

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160166829A KR20170074759A (ko) 2015-12-11 2016-12-08 낸드 플래시 콘트롤러에서의 우선순위에 따른 디코딩 태스크들의 큐잉

Country Status (4)

Country Link
US (1) US10089175B2 (ko)
KR (1) KR20170074759A (ko)
CN (1) CN106874081B (ko)
TW (1) TWI713648B (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7048289B2 (ja) * 2017-12-08 2022-04-05 キオクシア株式会社 情報処理装置および方法
US10747613B2 (en) * 2018-09-07 2020-08-18 Toshiba Memory Corporation Pooled frontline ECC decoders in memory systems
US11204829B2 (en) * 2019-03-26 2021-12-21 Innogrit Technologies Co., Ltd. Systems and methods for an ECC architecture with prioritized task queues
US11556274B1 (en) 2021-09-01 2023-01-17 Western Digital Technologies, Inc. Endurance groups ECC allocation
US11640267B2 (en) 2021-09-09 2023-05-02 Western Digital Technologies, Inc. Method and system for maintenance allocation between NVM groups

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5822772A (en) * 1996-03-22 1998-10-13 Industrial Technology Research Institute Memory controller and method of memory access sequence recordering that eliminates page miss and row miss penalties
KR100194039B1 (ko) * 1996-04-19 1999-06-15 윤종용 엠펙 시스템의 우선순위 처리회로
US7010654B2 (en) * 2003-07-24 2006-03-07 International Business Machines Corporation Methods and systems for re-ordering commands to access memory
US7299324B2 (en) * 2003-11-05 2007-11-20 Denali Software, Inc. Reactive placement controller for interfacing with banked memory storage
US7523228B2 (en) * 2006-09-18 2009-04-21 International Business Machines Corporation Method for performing a direct memory access block move in a direct memory access device
US8478950B2 (en) * 2008-07-29 2013-07-02 Synopsys, Inc. Data processing circuit with arbitration between a plurality of queues
US8548061B2 (en) * 2008-08-05 2013-10-01 Panasonic Corporation Image decoding apparatus and image decoding method
US8356137B2 (en) * 2010-02-26 2013-01-15 Apple Inc. Data storage scheme for non-volatile memories based on data priority
CN102480337B (zh) * 2010-11-30 2016-04-13 国际商业机器公司 无线电软件系统以及用于其的解码装置和方法
US9141468B2 (en) * 2011-12-12 2015-09-22 Cleversafe, Inc. Managing memory utilization in a distributed storage and task network
US20130263147A1 (en) * 2012-03-29 2013-10-03 Lsi Corporation Systems and Methods for Speculative Read Based Data Processing Priority
US9092156B1 (en) 2013-05-30 2015-07-28 Marvell International Ltd. Methods and apparatus for managing storage device commands
US9857974B2 (en) * 2013-10-03 2018-01-02 International Business Machines Corporation Session execution decision
US9727275B2 (en) * 2014-12-02 2017-08-08 International Business Machines Corporation Coordinating storage of data in dispersed storage networks
CN104850456A (zh) * 2015-05-27 2015-08-19 苏州科达科技股份有限公司 多进程解码方法和系统

Also Published As

Publication number Publication date
TWI713648B (zh) 2020-12-21
TW201729200A (zh) 2017-08-16
CN106874081A (zh) 2017-06-20
US20170168895A1 (en) 2017-06-15
US10089175B2 (en) 2018-10-02
CN106874081B (zh) 2022-07-22

Similar Documents

Publication Publication Date Title
KR20170074759A (ko) 낸드 플래시 콘트롤러에서의 우선순위에 따른 디코딩 태스크들의 큐잉
US11467769B2 (en) Managed fetching and execution of commands from submission queues
CN111417935B (zh) 用于分布式缓冲器存储器系统的地址/命令芯片同步的自动数据芯片地址定序器
US8572471B2 (en) SOVA sharing during LDPC global iteration
RU2011142772A (ru) Система и способ выбора формата кодирования видео на основе данных обратной связи
US11218163B2 (en) Memory system and information processing system
JP2009087332A (ja) ダンプ・データを収集する装置、システム、方法およびプログラム
US20110289243A1 (en) Communication control device, data communication method and program
TW202230112A (zh) 用於致能非同步獨立平面讀取(aipr)驅動器的基於平面的佇列配置
US10719392B1 (en) Selective sampling for data recovery
US20170160952A1 (en) Memory controller, memory system, and information processing system
CN104166629A (zh) 具有有效的软信息接口的nand闪存存储系统
TW201027098A (en) Test device, serial transmission system, program and recording medium
US7769966B2 (en) Apparatus and method for judging validity of transfer data
US11204829B2 (en) Systems and methods for an ECC architecture with prioritized task queues
US20230030672A1 (en) Die-based high and low priority error queues
WO2017081748A1 (ja) ストレージシステム、及び、ストレージ管理方法
US20100325373A1 (en) Duplexing Apparatus and Duplexing Control Method
US7949806B2 (en) Apparatus and method to provide an operation to an information storage device including protocol conversion and assigning priority levels to the operation
CN112052115B (zh) 数据存储纠删方法、装置、设备及计算机可读存储介质
US20140089567A1 (en) Hardware integrity verification
CN111147084A (zh) 多通道并行译码器及其译码方法
US9459966B2 (en) Storage control apparatus and storage system
TWI646546B (zh) 資料儲存裝置以及記憶體讀取方法
JP4284339B2 (ja) 受信装置,受信方法及び通信システム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal