KR20210003370A - 하드웨어 로직을 이용하여 통신 오버헤드를 감소시킨 스토리지 장치 - Google Patents

하드웨어 로직을 이용하여 통신 오버헤드를 감소시킨 스토리지 장치 Download PDF

Info

Publication number
KR20210003370A
KR20210003370A KR1020190079067A KR20190079067A KR20210003370A KR 20210003370 A KR20210003370 A KR 20210003370A KR 1020190079067 A KR1020190079067 A KR 1020190079067A KR 20190079067 A KR20190079067 A KR 20190079067A KR 20210003370 A KR20210003370 A KR 20210003370A
Authority
KR
South Korea
Prior art keywords
command
queue
queue entry
manager
list
Prior art date
Application number
KR1020190079067A
Other languages
English (en)
Inventor
최완수
김영욱
신동은
조용찬
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020190079067A priority Critical patent/KR20210003370A/ko
Priority to US16/745,451 priority patent/US11435947B2/en
Priority to CN202010531069.2A priority patent/CN112181284A/zh
Priority to SG10202006186WA priority patent/SG10202006186WA/en
Publication of KR20210003370A publication Critical patent/KR20210003370A/ko
Priority to US17/883,261 priority patent/US20220374174A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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/0626Reducing size or complexity of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Abstract

하드웨어 로직을 이용하여 통신 오버헤드를 감소시킨 스토리지 장치가 제공된다. 스토리지 장치는, 제1 커맨드를 제공받는 입력단; 상기 제1 커맨드를 위한 제1 큐 엔트리를 할당하는 큐 관리기; 상기 제1 큐 엔트리에 상기 제1 커맨드를 저장하고, 상기 제1 커맨드가 반영되도록 작업 리스트를 업데이트하는 전처리기; 및 상기 업데이트된 작업 리스트의 순서에 따라, 상기 제1 커맨드를 수행하는 코어를 포함하되, 상기 큐 관리기 또는 전처리기는 하드웨어 로직으로 구현된다.

Description

하드웨어 로직을 이용하여 통신 오버헤드를 감소시킨 스토리지 장치{Storage device with reduced communication overhead using hardware logic}
본 발명은 스토리지 장치에 관한 것이다.
비휘발성 메모리로서 플래시 메모리는 전원이 차단되어도 저장하고 있는 데이터를 유지할 수 있다. 최근 eMMC(embedded Multi-Media Card), UFS(Universal Flash Storage), SSD(Solid State Drive), 및 메모리 카드 등의 플래시 메모리를 포함하는 스토리지 장치가 널리 사용되고 있으며, 스토리지 장치는 많은 양의 데이터를 저장하거나 이동시키는데 유용하게 사용되고 있다.
미국공개특허 2006-0174246 A1(2006.08.03.공개)
스토리지 장치의 성능을 높이기 위해서, 동작 주파수를 높여서 프로세서의 단위시간당 처리량을 높일 수 있다. 이 방법은 간단하지만, 주파수를 높이는 것에는 한계가 있어 전체 스토리지 장치의 성능을 높이는 것에는 한계가 있다. 또는, 다수의 프로세서를 사용하여 성능을 높일 수 있다. 그런데, 이 방법은 프로세서 사이의 통신 오버헤드가 존재하기 때문에 사용되는 프로세서의 개수만큼 성능이 향상되지 않는다.
본 발명이 해결하고자 하는 기술적 과제는, 다수의 프로세서를 사용하는 경우 통신 오버헤드를 감소시킨 스토리지 장치를 제공하는 것이다.
본 발명의 기술적 과제는 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 면(aspect)에 따른 스토리지 장치는 제1 커맨드를 제공받는 입력단; 상기 제1 커맨드를 위한 제1 큐 엔트리를 할당하는 큐 관리기; 상기 제1 큐 엔트리에 상기 제1 커맨드를 저장하고, 상기 제1 커맨드가 반영되도록 작업 리스트를 업데이트하는 전처리기; 및 상기 업데이트된 작업 리스트의 순서에 따라, 상기 제1 커맨드를 수행하는 코어를 포함하되, 상기 큐 관리기 또는 전처리기는 하드웨어 로직으로 구현된다.
상기 기술적 과제를 달성하기 위한 본 발명의 다른 면에 따른 스토리지 장치는 입력단으로부터 제공받은 제1 커맨드를 해석하는 커맨드 파서; 상기 해석된 결과에 따라 큐 관리기로부터 제1 큐 엔트리를 할당받고, 변경 지시 신호와 업데이트 지시 신호를 생성하는 큐 엔트리 요청기; 상기 변경 지시 신호를 제공받아, 상기 제1 큐 엔트리에, 상기 제1 커맨드의 포맷을 변경하여 저장하는 데이터 포맷터; 상기 업데이트 지시 신호를 제공받아, 상기 제1 커맨드가 반영되도록 작업 리스트를 업데이트하는 리스트 관리기; 및 상기 데이터 포맷터가 상기 제1 커맨드의 포맷을 변경하여 저장하는 것과, 상기 리스트 관리기가 상기 작업 리스트를 업데이트하는 것이 완료되면, 완료되었음을 코어에 알리는 핸들러를 포함한다.
상기 기술적 과제를 달성하기 위한 본 발명의 또 다른 면에 따른 스토리지 장치는, 제1 커맨드를 제공받고, 제2 커맨드를 출력하는 제1 단위 처리기; 및 상기 제2 커맨드를 제공받는 제2 단위 처리기를 포함하되, 상기 제1 단위 처리기는 상기 제1 커맨드를 제공받는 제1 입력단과, 상기 제1 커맨드를 위한 제1 큐 엔트리를 할당하는 제1 큐 관리기와, 상기 제1 큐 엔트리에 상기 제1 커맨드를 저장하고, 상기 제1 커맨드가 반영되도록 제1 작업 리스트를 업데이트하는 제1 전처리기와, 상기 업데이트된 제1 작업 리스트의 순서에 따라, 상기 제1 커맨드를 수행하여, 제1 커맨드의 수행에 따른 제1 결과값을 출력하는 제1 코어와, 상기 제1 결과값을 기초로, 기설정된 포맷에 맞추어 제2 커맨드를 생성하여 출력하는 제1 후처리기를 포함하고, 상기 제1 큐 관리기, 상기 제1 전처리기 및 상기 제1 후처리기 중 적어도 하나는 하드웨어 로직으로 구현된다.
상기 기술적 과제를 달성하기 위한 본 발명의 또 다른 면에 따른 스토리지 장치는, 데이터를 저장하는 비휘발성 메모리; 및 상기 비휘발성 메모리의 동작을 제어하는 컨트롤러를 포함하며, 상기 컨트롤러는 직렬로 연결된 다수의 단위 처리기를 포함하되, 각 단위 처리기는 커맨드를 제공받고, 상기 커맨드가 반영되도록 작업 리스트를 업데이트하고, 상기 커맨드를 기설정된 포맷으로 변경하여 저장하는 하드웨어 로직과, 상기 업데이트된 작업 리스트의 순서에 따라, 상기 커맨드를 수행하는 코어를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 본 발명의 제1 실시예에 따른 스토리지 장치를 설명하기 위한 블록도이다.
도 2는 도 1의 전처리기를 설명하기 위한 예시적 블록도이다.
도 3은 도 1의 큐 관리기를 설명하기 위한 예시적 블록도이다.
도 4는 커맨드의 종류와 대응되는 큐 엔트리 그룹을 설명하기 위한 도면이다.
도 5는 메모리 내에 정의된 큐 엔트리 그룹을 설명하기 위한 도면이다.
도 6은 도 3의 큐 엔트리 그룹 매니저를 설명하기 위한 도면이다.
도 7은 도 3의 큐 엔트리 그룹 매니저의 동작을 설명하기 위한 도면이다.
도 8은 도 2의 리스트 관리기가 관리하는 작업 리스트를 설명하기 위한 도면이다.
도 9는 도 1의 코어를 설명하기 위한 예시적 블록도이다.
도 10은 도 1의 후처리기를 설명하기 위한 예시적 블록도이다.
도 11은 본 발명의 제2 실시예에 따른 스토리지 장치를 설명하기 위한 블록도이다.
도 12는 본 발명의 제3 실시예에 따른 스토리지 장치를 설명하기 위한 블록도이다.
도 13은 본 발명의 제4 실시예에 따른 스토리지 장치를 설명하기 위한 블록도이다.
도 14는 본 발명의 제5 실시예에 따른 스토리지 장치를 설명하기 위한 블록도이다.
도 15는 본 발명의 제6 실시예에 따른 스토리지 장치를 설명하기 위한 블록도이다.
이하, 첨부된 도면을 참조하여 본 발명의 다양한 실시예들을 설명하도록 한다.
도 1은 본 발명의 제1 실시예에 따른 스토리지 장치를 설명하기 위한 블록도이다. 후술하겠으나, 도 1은 스토리지 시스템의 컨트롤러에서 사용되는 단위 처리기의 구성을 설명하기 위한 블록도이다.
도 1을 참조하면, 본 발명의 제1 실시예에 따른 스토리지 장치에서, 단위 처리기(10)는 전처리기(pre-processor, 110), 큐 관리기(queue manager, 130), 후처리기(post-processor, 150), 코어(200), 입력단(170), 출력단(180) 등을 포함한다.
입력단(170)은 제1 커맨드(CMD1)를 제공받는다. 도 1에서는 예시적으로 입력단을 1개만 도시하였으나, 이에 한정되지 않는다. 예를 들어, 2개 이상의 입력단을 포함할 수 있다.
전처리기(110)는 제1 커맨드(CMD1)를 파싱/해석한다. 해석된 결과에 따라, 큐 관리기(130)에 제1 커맨드(CMD1)를 위한 큐 엔트리의 할당을 요청한다. 큐 관리기(130)는 전처리기(110)로부터 큐 엔트리의 할당 요청을 받은 후, 제1 커맨드(CMD1)를 위한 큐 엔트리(즉, 제1 큐 엔트리)를 할당한다. 전처리기(110)는 할당받은 제1 큐 엔트리에 제1 커맨드(CMD1)를 저장하고, 제1 커맨드(CMD1)가 반영되도록 작업 리스트를 업데이트한다. 여기서, 전처리기(110)는 제1 커맨드(CMD1)의 포맷을 변경하여 제1 큐 엔트리에 저장함으로써, 코어(200)의 빠른 수행을 도울 수 있다.
코어(200)는 업데이트된 작업 리스트의 순서에 따라, 제1 커맨드(CMD1)를 수행한다. 코어(200)는 제1 커맨드(CMD1) 수행에 따른 결과값을 출력한다.
후처리기(150)는 결과값을 기초로, 기설정된 포맷에 맞추어 제2 커맨드(CMD2)를 생성하여 출력한다.
코어(200)는 제1 커맨드(CMD1)의 내용에 따라 적절한 연산을 수행해야 하므로, 소프트웨어에 의해 구동된다.
그런데, 본 발명의 제1 실시예에 따른 스토리지 장치에서, 전처리기(110), 큐 관리기(130) 및 후처리기(150) 중 적어도 하나는 하드웨어 로직(HW)으로 구현된다. 즉, 제1 커맨드(CMD1)의 해석, 제1 커맨드(CMD1)를 저장하기 위한 제1 큐 엔트리의 할당, 제1 큐 엔트리에 제1 커맨드(CMD1)의 저장, 제1 커맨드(CMD1)의 포맷 변경, 제1 커맨드(CMD1)를 반영하기 위한 작업 리스트의 업데이트, 제2 커맨드(CMD2)의 생성 등의 과정이 하드웨어 로직(HW)에 의해서 기설정된 프로세스에 따라 진행된다.
코어(200)는 업데이트된 작업 리스트의 순서에 따라, 제1 커맨드(CMD1)를 수행하면 된다. 즉, 제1 커맨드(CMD1)를 수행하기 위해 필요한 다양한 전처리(제1 커맨드(CMD1)의 해석, 제1 커맨드(CMD1)를 저장하기 위한 제1 큐 엔트리의 할당, 제1 큐 엔트리에 제1 커맨드(CMD1)의 저장, 제1 커맨드(CMD1)의 포맷 변경, 제1 커맨드(CMD1)를 반영하기 위한 작업 리스트의 업데이트 등), 또는 제1 커맨드(CMD1)를 수행한 후에 필요한 다양한 후처리(제2 커맨드(CMD2)의 생성 등)을 코어(200)가 수행할 필요가 없다.
코어(200)와, 나머지 하드웨어 로직(HW)(즉, 전처리기(110), 큐 관리기(130), 후처리기(150))는 병렬적으로 동작한다. 즉, 코어(200)가 제1 커맨드(CMD1)를 수행하는 동안, 큐 관리기(130)는 제1 커맨드(CMD1)가 아닌 다른 커맨드(예를 들어, 제3 커맨드)를 위한 다른 큐 엔트리(예를 들어, 제3 큐 엔트리)를 할당할 수 있다. 또는, 코어(200)가 제1 커맨드(CMD1)를 수행하는 동안, 전처리기(110)는 할당된 다른 제3 큐 엔트리에 제3 커맨드를 저장하거나, 저장된 제3 커맨드가 반영되도록 작업 리스트를 업데이트할 수 있다.
이와 같이 코어(200)와, 나머지 하드웨어 로직(HW)이 병렬적으로 동작하기 때문에, 코어(200)는 커맨드 수행에만 집중할 수 있어서, 스토리지 장치의 커맨드 수행 속도가 높아질 수 있다.
다수의 프로세서를 사용하면, 각 프로세서는 관련된 프로세서와 많은 커맨드를 주고받는다. 사용되는 프로세서의 개수가 많아질수록, 프로세서간에 주고받는 커맨드의 숫자는 급격히 증가한다. 만약 프로세서가 소프트웨어에 따라 커맨드 수행 이전의 전처리, 커맨드 수행 후의 후처리를 하면, 전처리/후처리를 하는 동안 프로세서는 (전처리/후처리 이외의) 실질적인 커맨드 수행(예를 들어, 실질적인 연산)을 할 수 없다. 이러한 전처리/후처리는 다수의 프로세서간의 동작에서 통신 오버헤드(communication overhead)로 작용한다.
본 발명의 제1 실시예에서는, 이러한 전처리/후처리를 하드웨어 로직(HW)(즉, 전처리기(110), 큐 관리기(130), 후처리기(150) 등)으로 구현함으로써 통신 오버헤드를 최소화한다. 또한, 코어(200)가 실질적인 커맨드 수행 동작에 집중할 수 있도록 함으로써, 전체적인 프로세서의 동작이 효율화될 수 있다.
도 2는 도 1의 전처리기를 설명하기 위한 예시적 블록도이다. 도 3은 도 1의 큐 관리기를 설명하기 위한 예시적 블록도이다. 도 4는 커맨드의 종류와 대응되는 큐 엔트리 그룹을 설명하기 위한 도면이다. 도 5는 메모리 내에 정의된 큐 엔트리 그룹을 설명하기 위한 도면이다. 도 6은 도 3의 큐 엔트리 그룹 매니저를 설명하기 위한 도면이다. 도 7은 도 3의 큐 엔트리 그룹 매니저의 동작을 설명하기 위한 도면이다. 도 8은 도 2의 리스트 관리기가 관리하는 작업 리스트를 설명하기 위한 도면이다.
우선, 도 2를 참조하면, 전처리기(110)는 커맨드 파서(111), 큐 엔트리 요청기(113), 데이터 포맷터(115), 리스트 관리기(117), 핸들러(119)를 포함한다.
커맨드 파서(111)는 입력단(170)으로부터 제공받은 제1 커맨드(CMD1)를 페치(fetch)해서 해석한다.
예를 들어, 제1 커맨드(CMD1)는 다수의 비트로 이루어지고, 예를 들어, 시작 비트(start bit), 전송 비트(transmission bit), 커맨드 인덱스(command index), 커맨드 변수, 에러 검출 비트, 종료 비트(end bit), 큐 엔트리 비트 등의 필드를 포함할 수 있다. 커맨드 파서(111)는 필드별로 제1 커맨드(CMD1)를 파싱하여, 각 필드의 의미를 해석할 수 있다.
시작 비트는 커맨드의 시작을 알리는 비트로서 예컨대, 0으로 고정될 수 있다. 전송 비트는 커맨드를 생성한 주체를 나타내는 비트로서 예를 들어, 1일 경우 호스트에 의해 생성된 커맨드임을 나타낼 수 있다.
커맨드 인덱스는 커맨드의 종류를 나타내고, 스토리지 장치가 수행할 수 있는 다수의 커맨드 중 특정 커맨드를 나타낸다. 예를 들어, 커맨드 인덱스가 1이면 라이트 커맨드이고, 2일 경우 리드 커맨드일 수 있다. 스토리지 장치는 커맨드 인덱스에 따라 어떠한 커맨드가 입력되는지 인식할 수 있고, 인식된 커맨드를 수행하게 된다.
커맨드 변수는 커맨드에 따른 동작을 수행함에 있어 필요한 정보들을 포함할 수 있다. 예컨대, 커맨드가 라이트 커맨드 또는 리드 커맨드일 경우, 커맨드 변수는 라이트 또는 리드할 비휘발성 메모리의 메모리 셀 어레이의 시작 주소 정보와, 라이트 데이터 또는 리드 데이터의 데이터 사이즈 정보를 포함할 수 있다. 또한, 커맨드가 라이트 커맨드일 경우, 커맨드 변수는 신뢰 기입(Reliable Write) 또는 강제 기입(Forced Write) 등에 대한 정보를 포함할 수도 있다.
에러 검출 비트(예를 들어, CRC(Cyclic Redundancy Check))는 커맨드의 전송시 발생할 수 있는 에러를 검출하기 위한 것으로 예를 들어, 7비트로 구현될 수 있다. 종료 비트는 커맨드의 종료를 알리는 비트로서 예를 들어, 1로 고정될 수 있다.
큐 엔트리 비트는, 제1 커맨드(CMD1)가 사용해야 할 큐 엔트리를 나타내는 비트이다. 사용해야 할 큐 엔트리가 미리 할당되지 않은 경우에는 특정값(예를 들어, 0)으로 고정될 수 있다. 사용해야 할 큐 엔트리가 미리 할당된 경우에는, 그 큐 엔트리의 인덱스를 나타낼 수 있다.
큐 엔트리 요청기(113)는 커맨드 파서(111)에 의해 해석된 결과에 따라, 제1 커맨드(CMD1)를 위한 큐 엔트리를 큐 관리기(130)에 요청한다.
전술한 것과 같이, 커맨드 인덱스를 통해서 커맨드의 종류를 알 수 있다. 커맨드의 종류에 따라 이미 큐 엔트리가 할당받은 경우와, 큐 엔트리를 새로 할당받아야 하는 경우로 구분할 수 있다.
이미 큐 엔트리를 할당받은 경우에는, 큐 엔트리 요청기(113)에 큐 엔트리 요청(QEA)을 전송할 필요가 없다. 전술한 큐 엔트리 비트에 기재된 큐 엔트리를 사용한다.
큐 엔트리를 새로 할당받아야 하는 경우에는, 큐 엔트리 요청기(113)는 큐 관리기(130)에 제1 커맨드(CMD1)를 위한 큐 엔트리 요청(QEA)을 전송한다.
여기서, 도 3을 참고하면, 큐 관리기(130)는 큐 엔트리 체커(131), 큐 엔트리 그룹 매니저(133a, 133b, 133c), 큐 엔트리 리턴부(135)를 포함한다.
큐 엔트리 체커(131)는 큐 엔트리 요청기(113)로부터 큐 엔트리 요청(QEA)을 받으면, 커맨드 인덱스를 이용하여 커맨드의 종류를 결정한다. 커맨드의 종류에 따라 할당되는 큐 엔트리가 달라질 수 있다. 즉, 커맨드의 종류에 대응되는 그룹을 결정하고, 대응하는 그룹 내에서 프리 상태의 큐 엔트리를 할당한다.
예를 들어, 도 4를 참조하면, 커맨드 인덱스가 1~5인 경우, 큐 엔트리 그룹 A(QGA)에 속하는 큐 엔트리가 할당되고, 커맨드 인덱스가 6~10인 경우, 큐 엔트리 그룹 B(QGB)에 속하는 큐 엔트리가 할당되고, 커맨드 인덱스가 11~15인 경우, 큐 엔트리 그룹 C(QGC)에 속하는 큐 엔트리가 할당될 수 있다.
여기서, 기설정된 메모리(190)는 다수의 큐 엔트리를 포함한다. 메모리(190)는 단위 처리기(10)의 내부에 배치되거나, 단위 처리기(10)의 외부에 배치될 수도 있다. 메모리는 RAM(random access memory), SRAM(static RAM), DRAM(dynamic RAM)과 같은 휘발성 메모리일 수 있으나, 이에 한정되지 않는다.
도 5에 도시된 것과 같이, 다수의 큐 엔트리(a1~an, b1~bn, c1~cn)는 다수의 그룹(QGA, QGB, QGC)으로 구분될 수 있다. 그룹(QGA)은 다수의 큐 엔트리(a1~an, 단 n은 자연수)를 포함하고, 그룹(QGB)은 다수의 큐 엔트리(b1~bn)를 포함하고, 그룹(QGC)은 다수의 큐 엔트리(c1~cn)를 포함한다. 각 그룹(QGA, QGB, QGC)에 속하는 큐 엔트리의 개수는 n개인 것으로 설명하였으나, 이에 한정되지 않는다.
서로 다른 그룹(QGA, QGB, QGC)에 속하는 큐 엔트리 그룹(a1~an, b1~bn, c1~cn)은 서로 다른 사이즈를 갖는다. 예를 들어, 도시된 것과 같이, 그룹(QGA)에 속하는 큐 엔트리(a1~an)의 사이즈는 그룹(QGB)에 속하는 큐 엔트리(b1~bn)의 사이즈보다 작고, 그룹(QGB)에 속하는 큐 엔트리(b1~bn)의 사이즈는 그룹(QGC)에 속하는 큐 엔트리(c1~cn)의 사이즈보다 작을 수 있다.
이와 같이, 다수의 그룹(QGA, QGB, QGC)은 큐 엔트리(a1~an, b1~bn, c1~cn)의 사이즈에 따라 구분함에 따라, 메모리를 효율적으로 사용할 수 있다. 만약, 메모리가 한 사이즈의 큐 엔트리만을 포함해야 한다면, 메모리는 가장 큰 사이즈의 큐 엔트리(예를 들어, 그룹(QGC)에 속하는 큐 엔트리)만을 포함할 것이다. 이러한 경우, 커맨드 인덱스가 1인 커맨드는 작은 사이즈의 큐 엔트리가 필요하더라도, 큰 사이즈의 큐 엔트리를 할당해야 할 것이다. 반면, 본 발명의 제1 실시예에서는, 커맨드에 따라 필요한 큐 엔트리의 사이즈를 달리하여 할당하기 때문에, 메모리를 효율적으로 사용할 수 있다.
여기서, 도 6을 참고하면, 큐 엔트리 그룹 매니저(133a, 133b, 133c) 각각은, 대응하는 그룹(QGB)의 큐 엔트리가 프리(free) 상태(즉, 사용가능한 상태)인지를 나타내는 리스트를 보유하고 있다. 여기서 리스트는 비트맵(bitmap) 형식일 수 있으나, 이에 한정되지 않는다. 리스트를 비트맵 형식으로 관리하기 때문에, 간단하고 빠르게 관리할 수 있다.
제1 큐 엔트리 그룹 매니저(133a)은, 그룹(QGA)에 속하는 큐 엔트리(a1~an) 각각이 프리 상태인지를 나타내는 리스트를 보유한다. 예를 들어, 큐 엔트리(a1)은 사용중(1)이고, 나머지 큐 엔트리(a2~an)은 프리 상태(0)이다.
제2 큐 엔트리 그룹 매니저(133b)은, 그룹(QGB)에 속하는 큐 엔트리(b1~bn) 각각이 프리 상태인지를 나타내는 리스트를 보유한다. 예를 들어, 큐 엔트리(b1, b2)은 사용중(1)이고, 나머지 큐 엔트리(b3~an)은 프리 상태(0)이다.
제3 큐 엔트리 그룹 매니저(133c)은, 그룹(QGC)에 속하는 큐 엔트리(c1~cn) 각각이 프리 상태인지를 나타내는 리스트를 보유한다. 예를 들어, 모든 큐 엔트리(c1~cn)은 프리 상태(0)이다.
한편, 큐 엔트리 요청기(113)이 제1 커맨드(CMD1)를 위한 큐 엔트리 요청(QEA)을 하고, 제1 커맨드(CMD1)는 예를 들어, 제1 그룹(QGA)에 해당하는 큐 엔트리(a1~an)가 필요하다고 가정한다. 이러한 경우, 도 7을 참조하면, 제1 큐 엔트리 그룹 매니저(133a)는 보유하고 있는 리스트(비트맵)를 이용하여, 제1 그룹(QGA) 내에서 프리 상태의 큐 엔트리(예를 들어, a2)를 찾는다. 제1 큐 엔트리 그룹 매니저(133a)는 리스트에서 큐 엔트리(예를 들어, a2)의 상태를 0에서 1로 변경한다. 제1 큐 엔트리 그룹 매니저(133a)는 큐 엔트리 리턴부(135)에 할당 가능한 프리 상태의 큐 엔트리(예를 들어, a2)를 알려준다(즉, 프리 상태의 큐 엔트리의 인덱스를 알려준다).
다시 도 3을 참조하면, 큐 엔트리 리턴부(135)는 프리 상태의 큐 엔트리(예를 들어, a2)를, 큐 엔트리 요청(QEA)에 대한 리턴신호(QER)로서, 큐 엔트리 요청기(113)에 제공한다. 즉, 큐 엔트리 리턴부(135)는 프리 상태의 큐 엔트리(예를 들어, a2)의 인덱스를 큐 엔트리 요청기(113)에 알려준다.
다시 도 2를 참조하면, 큐 엔트리 요청기(113)는 리턴신호(QER)를 제공받아, 할당받은 큐 엔트리(예를 들어, a2)(즉, 할당받은 큐 엔트리의 인덱스)를 데이터 포맷터(115)와 리스트 관리기(117)에 알려준다. 즉, 큐 엔트리 요청기(113)는 변경 지시 신호와 업데이트 지시 신호를 생성한다. 큐 엔트리 요청기(113)는 데이터 포맷터(115)에 변경 지시 신호를 제공하고, 리스트 관리기(117)에 업데이트 지시 신호를 제공한다. 변경 지시 신호와 업데이트 지시 신호에는 할당받은 큐 엔트리의 인덱스가 포함된다.
데이터 포맷터(115)는 상기 변경 지시 신호를 제공받고, 큐 관리기(130)로부터 할당받은 큐 엔트리(즉, 제1 큐 엔트리)에, 제1 커맨드(CMD1)의 포맷을 변경하여 저장한다. 데이터 포맷터(115)는 예를 들어, 할당받은 제1 큐 엔트리에, 코어가 커맨드를 수행할 때 필요한 정보(즉, 커맨드 변수)를 저장할 수 있다.
큐 엔트리 요청기(113)는 큐 관리기(130)로부터 제1 큐 엔트리를 할당받은 후, 리스트 관리기(117)에 작업 리스트를 업데이트할 것을 요청한다. 여기서, 도 8을 참고하면, 리스트 관리기(117)는 상기 업데이트 지시 신호를 제공받고, 코어(200)가 수행할 작업 리스트(HP, NP)를 생성 및 업데이트한다. 도시된 것과 같이, 작업 리스트(HP, NP)는 다수개일 수 있다. 예를 들어, 작업 리스트(HP, NP)는 빠르게 처리해야 하는 작업들의 작업 리스트(HP)와, 보통 속도로 처리해야 하는 작업들의 작업 리스트(NP)를 포함할 수 있다. 도시된 것과 같이, 작업 리스트(HP)는 입력된 순서대로 W11~W1n의 작업을 포함하고, 이 작업들 중에서 W11이 가장 빨리 저장된 헤드 작업(head)이고, W1n은 가장 늦게 저장된 테일 작업(tail)이다. 작업 리스트(NP)는 입력된 순서대로 W21~W2n의 작업을 포함하고, 이 작업들 중에서 W21이 가장 빨리 저장된 헤드 작업(head)이고, W2n은 가장 늦게 저장된 테일 작업(tail)이다. 작업 리스트(HP, NP)의 작업을 수행하는 것은, 각 작업에 대응하는 커맨드를 수행하는 것을 의미한다.
한편, 리스트 관리기(117)는 할당받은 제1 큐 엔트리가 속하는 그룹(QGA, QGB, QGC)에 따라, 다수의 작업 리스트 중 업데이트할 작업 리스트(HP 또는 NP)를 결정하고, 결정된 작업 리스트(예를 들어, HP)에 제1 커맨드를 반영할 수 있다. 예를 들어, 할당받은 제1 큐 엔트리가 속하는 그룹이 QGA 또는 QGB인 경우, 작업 리스트(HP)를 제1 커맨드(CMD1)가 반영되도록 업데이트한다. 또는 제1 큐 엔트리가 속하는 그룹이 QGC인 경우에는, 작업 리스트(NP)를 제1 커맨드(CMD1)가 반영되도록 업데이트한다. 이와 같이 큐 엔트리 체커(131), 큐 엔트리 그룹 매니저(133a, 133b, 133c)에 의해서 결정된 제1 커맨드(CMD1)에 대응되는 그룹(QGA, QGB, QGC)에 따라, 제1 커맨드(CMD1)가 빠르게 처리해야 하는 작업인지, 보통 속도로 처리해야 하는 작업인지를 결정될 수 있다.
한편, 데이터 포맷터(115)와 리스트 관리기(117)가 병렬적으로 동작할 수 있다. 즉, 데이터 포맷터(115)가 제1 커맨드(CMD1)의 포맷을 변경하여 저장하는 동안, 리스트 관리기(117)가 작업 리스트(HP, NP)를 업데이트할 수 있다. 이와 같이, 데이터 포맷터(115)와 리스트 관리기(117)가 병렬적으로 동작하기 때문에, 스토리지 장치의 속도가 높아질 수 있다.
데이터 포맷터(115)는 제1 커맨드(CMD1)의 포맷을 변경하여 저장하는 것을 완료한 후 제1 신호를 핸들러(119)에 전송한다. 리스트 관리기(117)는 작업 리스트(HP, NP)를 업데이트하는 것을 완료한 후, 제2 신호를 핸들러(119)에 제공한다.
핸들러(119)는 상기 제1 신호와 상기 제2 신호를 제공받은 후, 완료신호(ITC)를 코어(200)에 제공한다. 즉, 데이터 포맷터(115)가 제1 커맨드(CMD1)의 포맷을 변경하여 저장하는 것과, 리스트 관리기(117)가 작업 리스트(HP, NP)를 업데이트하는 것이 완료되면, 핸들러(119)는 코어(200)에게 동작들이 완료되었음을 알려준다. 전술한 것과 같이, 데이터 포맷터(115)와 리스트 관리기(117)가 병렬적으로 동작하기 때문에, 핸들러(119)가 데이터 포맷터(115)와 리스트 관리기(117)의 동작을 체크하여 코어(200)에게 알려줄 필요가 있다.
도 9는 도 1의 코어를 설명하기 위한 예시적 블록도이다.
도 9를 참조하면, 코어(200)는 업데이트된 작업 리스트(HP, NP)의 순서에 따라 제1 커맨드(CMD1)를 수행한다.
코어(200)는 메모리(201)을 포함할 수 있다. 메모리(201)는 코어(200) 내부에 위치하는 것으로 도시하였으나, 코어(200)의 외부에 위치할 수도 있다. 메모리(201)는 예를 들어, RAM(Random Access Memory), DRAM(Dynamic RAM), SRAM(Static RAM), 버퍼(buffer), 캐시(cache) 또는 강하게 결합된 메모리(TCM, Tightly Coupled Memory)로 구현될 수 있으나, 이에 한정되는 것은 아니다.
메모리(201)에는 업데이트된 작업 리스트(예를 들어, HP)의 헤드 작업(head)과 테일 작업(tail)이 저장될 수 있다. 즉, 메모리(201)에는 헤드 작업과 테일 작업 사이에 위치하는 작업들은 저장되지 않을 수 있다. 코어(200)는 작업 리스트(HP)에 따라 작업을 수행할 때, 작업 리스트(HP)의 최상단에 위치한 헤드 작업을 수행한다(즉, 헤드 작업에 대응하는 커맨드를 수행한다). 따라서, 코어(200)의 빠른 작업 수행을 위해서 메모리(201)에 헤드 작업을 로딩해 둔다.
코어(200)는 헤드 작업을 수행하기 시작할 때, 작업 리스트(HP, NP)에서 헤드 작업을 삭제하라는 지시(HD)를 전처리기(110)에 전송한다. 전처리기(110)는 지시(HD)를 받고 작업 리스트(HP, NP)에서 헤드 작업을 삭제한다. 또한, 코어(200)는 메모리(201)에 로딩되어 있는 헤드 작업도 삭제한다.
또는, 코어(200)가 헤드 작업을 수행한 후, 지시(HD)를 전송하거나, 메모리(201)에 로딩된 헤드 작업을 삭제하여도 무방하다.
여기서, 메모리(201)에 테일 작업을 로딩해 두는 이유는, 수행해야 할 작업이 더 이상 없는지 여부를 확인하기 위해서이다. 만약 메모리(201)에 테일 작업이 로딩되어 있지 않다면, 코어(200)가 헤드 작업을 삭제한 후 메모리(201)는 비어있게 된다. 이러한 경우, 코어(200)는 더 이상 수행할 작업이 없는 것인지, 작업 리스트에 수행해야 할 작업은 있으나 일시적으로 메모리(201)가 비어 있는 상태인지 확인하기 어렵다. 하지만, 테일 작업이 메모리(201)에 로딩되어 있으면 더 수행해야 할 작업이 있다는 의미이므로, 코어(200)는 전처리기(110)에 작업 리스트(HP, NP)의 헤드 작업을 요청하게 된다.
코어(200)는 제1 커맨드(CMD1)를 수행한 후(즉, 제1 커맨드(CMD1)에 대응되는 작업을 수행한 후), 제1 커맨드 수행에 따른 결과값(CC)을 출력한다. 코어(200)는 제1 커맨드(CMD1) 수행을 위해서, 제1 커맨드(CMD1)에 대응되는 제1 큐 엔트리(예를 들어, 도 6의 a2)에 있는 내용을 사용하거나 변경할 수 있다.
도 10은 도 1의 후처리기를 설명하기 위한 예시적 블록도이다.
도 10을 참고하면, 후처리기(150)는 코어(200)로부터 제공받은 결과값(CC)을 기초로, 기설정된 포맷에 맞추어(즉, 다른 단위 처리기로 전달하기 위한 포맷에 맞추어) 제2 커맨드(CMD2)를 생성하여 출력한다.
여기서, 결과값(CC)은 제1 커맨드(CMD1)에 대응되는 제1 큐 엔트리(예를 들어, 도 6의 a2)(즉, 큐 엔트리를 나타내는 인덱스)를 포함할 수 있다. 이러한 경우, 후처리기(150)는 제1 큐 엔트리(예를 들어, a2)에 저장되어 있는 값을, 기설정된 포맷에 맞추어 제2 커맨드(CMD2)로 변환하여 다른 단위 처리기로 제공한다. 따라서, 코어(200)가 제공한 결과값(CC)의 패킷 구조와, 후처리기(150)에서 제공하는 제2 커맨드(CMD2)의 패킷 구조는 다르다.
후처리기(150)는 파서(151), 커맨드 발생기(153), 큐 엔트리 해제기(155) 등을 포함한다.
파서(151)는 코어(200)로부터 제공받은 결과값(CC)을 페치하고 해석한다.
커맨드 발생기(153)는 내부에 데이터 포맷터(153a)를 포함하여, 결과값을 기설정된 포맷에 맞추어 제2 커맨드(CMD2)를 생성하여, 다른 단위 처리기로 출력한다.
큐 엔트리 해제기(155)는 파서(151)로부터 해석결과를 받아, 할당된 큐 엔트리 해제(QED)를 전처리기(110)(즉, 리스트 관리기(117))에 지시할 수 있다.
커맨드의 종류에 따라, 커맨드를 수행한 후 할당된 큐 엔트리를 해제할 수도 있고 해제하지 않을 수도 있다. 해제되지 않은 큐 엔트리는 추후에(예를 들어, 다른 단위 처리기로부터 특정 커맨드가 입력되었을 때) 해제될 수 있다.
도 11은 본 발명의 제2 실시예에 따른 스토리지 장치를 설명하기 위한 블록도이다. 도 12는 본 발명의 제3 실시예에 따른 스토리지 장치를 설명하기 위한 블록도이다. 설명의 편의를 위해서 도 1 내지 도 10을 이용하여 전술한 것은 생략한다.
도 11에 도시된 단위 처리기(10a)에서, 전처리기(110)와 큐 관리기(130)는 하드웨어 로직(HW)으로 구현되고, 후처리기(150)는 하드웨어 로직으로 구현되지 않을 수 있다. 후처리기(150)와 코어(200)를 별개로 도시하였으나, 전술한 후처리기(150)와 코어(200)가 하나로 머지된 형태일 수 있다.
도 12에 도시된 단위 처리기(10b)에서, 전처리기(110)와 후처리기(150)는 하드웨어 로직(HW)으로 구현되고, 큐 관리기(130)는 하드웨어 로직으로 구현되지 않을 수 있다. 큐 관리기(130)와 코어(200)를 별개로 도시하였으나, 전술한 큐 관리기(130)와 코어(200)가 하나로 머지된 형태일 수 있다.
별도로 도시하지 않았으나, 전처리기(110), 큐 관리기(130), 후처리기(150) 중 적어도 하나라도 하드웨어 로직으로 구현될 수 있다. 예를 들어, 전처리기(110)만 하드웨어 로직으로 구현되거나, 후처리기(150)만 하드웨어 로직으로 구현되거나, 큐관리기(130), 후처리기(150)만 하드웨어 로직으로 구현될 수도 있다.
도 13은 본 발명의 제4 실시예에 따른 스토리지 장치를 설명하기 위한 블록도이다.
도 13을 참조하면, 본 발명의 제4 실시예에 따른 스토리지 장치는 직렬로(serially) 연결된 다수의 단위 처리기(10, 11, 12)를 포함한다.
단위 처리기(10, 11, 12)는 순차적으로 작업을 수행한다.
구체적으로, 제1 단위 처리기(10)는 제1 입력단(170)을 통해서 제1 커맨드(CMD1)를 제공받고, 제1 커맨드(CMD1)에 대응하는 작업을 수행한 후, 제1 출력단(180)을 통해서 제2 커맨드(CMD2)를 출력한다.
제2 단위 처리기(11)는 제2 입력단(170a)을 통해서 제2 커맨드(CMD2)를 제공받고, 제2 커맨드(CMD2)에 대응하는 작업을 수행한 후, 제2 출력단(180a)을 통해서 제3 커맨드(CMD3)를 출력한다.
제3 단위 처리기(12)는 제3 입력단(170b)을 통해서 제3 커맨드(CMD3)를 제공받고, 제3 커맨드(CMD3)에 대응하는 작업을 수행한 후, 제3 출력단(180b)을 통해서 제4 커맨드(CMD4)를 출력한다.
각 단위 처리기(10, 11, 12)는 실질적으로 동일한 구성을 갖는다.
예를 들어, 제1 단위 처리기(10)는 제1 큐 관리기, 제1 전처리기, 제1 코어, 제2 후처리기 등을 포함한다.
제1 큐 관리기는 제공받은 제1 커맨드를 위한 제1 큐 엔트리를 할당하고, 제1 전처리기는 제1 큐 엔트리에 제1 커맨드를 저장하고, 제1 커맨드가 반영되도록 제1 작업 리스트를 업데이트하고, 제1 코어는 업데이트된 제1 작업 리스트의 순서에 따라 제1 커맨드를 수행하여, 제1 커맨드의 수행에 따른 결과값을 출력하고, 제1 후처리기는 결과값을 기초로, 기설정된 포맷에 맞추어 제2 커맨드를 생성하여 출력한다. 여기서, 제1 큐 관리기, 제1 전처리기 및 제1 후처리기 중 적어도 하나는 하드웨어 로직(HW)으로 구현될 수 있다.
특히, 제1 코어가 제1 커맨드를 수행하는 동안, 제1 큐 관리기는 제1 커맨드가 아닌 다른 커맨드를 위한 큐 엔트리를 할당하거나, 제1 전처리기는 상기 할당된 큐 엔트리에 상기 다른 커맨드를 저장하거나, 상기 저장된 다른 커맨드가 반영되도록 상기 제1 작업 리스트를 업데이트할 수 있다.
유사하게, 제2 단위 처리기(11)는 제2 큐 관리기, 제2 전처리기, 제2 코어, 제2 후처리기 등을 포함한다.
제2 큐 관리기는 제2 커맨드를 위한 제2 큐 엔트리를 할당하고, 제2 전처리기는 제2 큐 엔트리에 제2 커맨드를 저장하고, 제2 커맨드가 반영되도록 제2 작업 리스트를 업데이트하고, 제2 코어는 업데이트된 제2 작업 리스트의 순서에 따라 제2 커맨드를 수행하여, 제2 커맨드의 수행에 따른 결과값을 출력하고, 제2 후처리기는 결과값을 기초로, 기설정된 포맷에 맞추어 제3 커맨드를 생성하여 출력한다. 여기서, 제2 큐 관리기, 제2 전처리기 및 제2 후처리기 중 적어도 하나는 하드웨어 로직(HW)으로 구현될 수 있다.
유사하게, 제3 단위 처리기(12)는 제3 큐 관리기, 제3 전처리기, 제3 코어, 제3 후처리기 등을 포함한다.
제3 큐 관리기는 제3 커맨드를 위한 제3 큐 엔트리를 할당하고, 제3 전처리기는 제3 큐 엔트리에 제3 커맨드를 저장하고, 제3 커맨드가 반영되도록 제3 작업 리스트를 업데이트하고, 제3 코어는 업데이트된 제3 작업 리스트의 순서에 따라 제3 커맨드를 수행하여, 제3 커맨드의 수행에 따른 결과값을 출력하고, 제3 후처리기는 결과값을 기초로, 기설정된 포맷에 맞추어 제4 커맨드를 생성하여 출력한다. 여기서, 제3 큐 관리기, 제3 전처리기 및 제3 후처리기 중 적어도 하나는 하드웨어 로직(HW)으로 구현될 수 있다.
한편, 전술한 것과 같이, 다수의 단위 처리기(10, 11, 12)는 커맨드를 저장하기 위한 메모리(도 5의 190 참조)가 필요하다. 메모리는 제1 단위 처리기(10)가 사용하는 제1 메모리 영역, 제2 단위 처리기(11)가 사용하는 제2 메모리 영역, 제3 단위 처리기(12)가 사용하는 제3 메모리 영역을 포함한다. 여기서, 제1 메모리 영역, 제2 메모리 영역 및 제3 메모리 영역은 서로 분리되어 있다. 예를 들어, 제1 단위 처리기(10)는 제1 메모리 영역만 사용할 뿐, 제2 메모리 영역 또는 제3 메모리 영역을 사용할 수 없다. 각 메모리 영역에는 다수의 큐 엔트리 영역이 설정되어 있다.
도 14는 본 발명의 제5 실시예에 따른 스토리지 장치를 설명하기 위한 블록도이다. 설명의 편의상, 도 13을 이용하여 설명한 것과 실질적으로 동일한 것은 생략한다.
도 14를 참조하면, 본 발명의 제5 실시예에 따른 스토리지 장치는 직렬 및/또는 병렬로 연결된 다수의 단위 처리기(10, 11, 12)를 포함한다. 각 단위 처리기(10, 11, 12)는 둘 이상의 입력단 및/또는 둘 이상의 출력단을 포함할 수 있다.
구체적으로, 제1 단위 처리기(10)는 제1 입력단(170)을 통해서 제1 커맨드(CMD1)를 제공받고, 제1 커맨드(CMD1)에 대응하는 작업을 수행한 후, 제1 출력단(180)을 통해서 제2 단위 처리기(11)로 제2 커맨드(CMD2)를 출력한다. 또한, 제1 단위 처리기(10)는 출력단(181)을 통해서 커맨드(CMD21)를 제3 단위 처리기(12)로 출력한다.
제2 단위 처리기(11)는 제2 입력단(170a)을 통해서 제2 커맨드(CMD2)를 제공받고, 제2 커맨드(CMD2)에 대응하는 작업을 수행한 후, 제2 출력단(180a)을 통해서 제3 단위 처리기(12)로 제3 커맨드(CMD3)를 출력한다. 또한, 제2 단위 처리기(11)는 출력단(181a)을 통해서 커맨드(CMD31)을 출력한다.
제3 단위 처리기(12)는 제3 입력단(170b)을 통해서 제3 커맨드(CMD3)를 제공받고, 제3 커맨드(CMD3)에 대응하는 작업을 수행한 후, 제3 출력단(180b)을 통해서 제4 커맨드(CMD4)를 출력한다. 또한, 제3 단위 처리기(12)는 출력단(181b)을 통해서 커맨드(CMD41)을 출력한다.
각 단위 처리기(10, 11, 12)는 실질적으로 동일한 구성을 갖는다.
도 15는 본 발명의 제6 실시예에 따른 스토리지 장치를 설명하기 위한 블록도이다.
도 15를 참조하면, 본 발명의 제6 실시예에 따른 스토리지 장치(1300)가 데이터 처리 시스템(1000)에 적용되고, 인터페이스(1500)를 통해서 스토리지 장치(1300)와 호스트(1200)가 서로 접속/통신한다.
실시예들에 따라, 데이터 처리 시스템(1000)은 PC(personal computer), 데스크 탑 컴퓨터, 랩-탑 컴퓨터, 워크스테이션 컴퓨터, 또는 모바일 컴퓨팅 장치로 구현될 수 있으나 이에 한정되는 것은 아니다.
상기 모바일 컴퓨팅 장치는 이동 전화기, 스마트 폰(smart phone), 태블릿 (tablet) PC, PDA(personal digital assistant), EDA(enterprise digital assistant), 디지털 스틸 카메라(digital still camera), 디지털 비디오 카메라(digital video camera), PMP(portable multimedia player), 멀티미디어 장치(multimedia device), PND(personal navigation device 또는 portable navigation device), 휴대용 게임 콘솔(handheld game console), 모바일 인터넷 장치(mobile internet device(MID)), 웨어러블 장치(또는 웨어러블 컴퓨터), 사물 인터넷(internet of things(IoT)) 장치, 만물 인터넷(internet of everything(IoE)) 장치, 또는 e-북(e-book)으로 구현될 수 있다.
인터페이스(1500)는 SATA(serial advanced technology attachment) 인터페이스, SATAe(SATA express) 인터페이스, SAS(serial attached small computer system interface(SCSI)), PCIe(peripheral component interconnect express) 인터페이스, NVMe(non-volatile memory Express) 인터페이스, AHCI(advanced host controller interface), NAND-타입 플래시 메모리 인터페이스, 또는 멀티미디어 카드 (multimedia card(MMC)) 인터페이스로 구현될 수 있으나, 인터페이스(1500)가 이에 한정되는 것은 아니다. 실시예들에 따라, 인터페이스(1500)는 전기 신호들 또는 광신호들을 전송할 수 있다.
호스트(1200)는 인터페이스(1500)를 통해 스토리지 장치(1300)의 데이터 처리 작동(예컨대, 라이트 작동(또는 프로그램 작동) 또는 리드 작동)을 제어할 수 있다. 예컨대, 호스트(1200)는 호스트 컨트롤러를 의미할 수 있다.
실시예에 따라, 호스트(1200)는 집적 회로(IC), 마더 보드(mother board), 애플리케이션 프로세서(application processor(AP)), 모바일 AP, 또는 시스템 온 칩(system on chip(SoC))으로 구현될 수 있으나, 호스트(1200)가 이에 한정되는 것은 아니다.
CPU(1220)와 호스트 인터페이스(1230)는 버스 구조(1210)를 통해 커맨드 및/또는 데이터를 서로 주거나 받을 수 있다.
버스 구조(1210)는 AMBA(advanced microcontroller bus architecture), AHB(advanced high-performance bus), APB(advanced peripheral bus), AXI(advanced eXtensible interface), ASB(advanced system bus) 또는 이들의 결합으로 구현될 수 있으나, 버스 구조(1210)가 이에 한정되는 것은 아니다.
CPU(1220)는 스토리지 장치(1300)의 라이트 작동(write operation)을 제어할 수 있는 라이트 요청 또는 스토리지 장치(1300)의 리드 작동(read operation)을 제어할 수 있는 리드 요청을 생성할 수 있다. 상기 라이트 요청은 라이트 어드레스를 포함할 수 있고, 상기 리드 요청은 리드 어드레스를 포함할 수 있다. 예컨대, CPU(1220)는 하나 또는 그 이상의 코어들을 포함할 수 있다. 요청(request)은 커맨드(command)을 의미할 수 있다.
호스트 인터페이스(1230)는 스토리지 장치(1300)로 전송될 커맨드 및/또는 데이터의 포맷(format)을 변경하고, 변경된 커맨드 및/또는 변경된 데이터를 인터페이스(1500)를 통해 스토리지 장치(1300)로 전송할 수 있다. 또한, 호스트 인터페이스(1230)는 스토리지 장치(1300)로부터 전송된 응답(response) 및/또는 데이터의 포맷을 변경하고, 변경된 응답 및/또는 변경된 데이터를 버스 구조(1210)를 통해 CPU(1220)로 전송할 수 있다. 실시예에 따라, 호스트 인터페이스(1230)는 커맨드 및/또는 데이터를 송수신할 수 있는 송수신기를 포함할 수 있다. 호스트 인터페이스(1230)의 구조와 작동은 인터페이스(1500)의 구조와 작동에 적합하게 구현될 수 있다.
스토리지 장치(1300)는 컨트롤러(1310)와 비휘발성 메모리들(1400)을 포함할 수 있다. 실시예들에 따라, 스토리지 장치(1300)는 버퍼(1380)를 더 포함할 수 있다.
스토리지 장치(1300)는, 컨트롤러(1310)의 제어에 따라, 호스트(1200)로부터 출력된 데이터를 비휘발성 메모리들(1400)에 저장할 수 있다.
스토리지 장치(1300)는 플래시 메모리-기반 메모리 장치로 구현될 수 있으나, 스토리지 장치(1300)가 이에 한정되는 것은 아니다. 예컨대, 스토리지 장치(1300)는 스마트 카드, SD(secure digital) 카드, 멀티미디어 카드(multimedia card(MMC)), 임베디드 MMC(embedded MMC (eMMC)), 임베디드 멀티-칩 패키지 (embeded multi-chip package(eMCP)), PPN(perfect page NAND), 유니버셜 플래시 스토리지(universal flash storage(UFS)), USB 플래시 드라이브, 솔리드 스테이트 드라이브(solid state drive(SSD)), 또는 임베디드 SSD(embedded SSD(eSSD))로 구현될 수 있으나, 스토리지 장치(1300)가 이에 한정되는 것은 아니다.
컨트롤러(1310)는 호스트(1200)와 비휘발성 메모리들(1400) 사이에서 주거나 받는 커맨드 및/또는 데이터를 제어할 수 있다. 실시예들에 따라, 컨트롤러(1310)는 IC 또는 SoC로 구현될 수 있다. 컨트롤러(1310)는 버스 구조(1320), 장치 인터페이스(1330), 프로세서들(1340), 내부 메모리(1350), 메모리 컨트롤러(1360), 및 버퍼 매니저(1370)를 포함할 수 있다.
버스 구조(1320)는 AMBA, AHB, APB, AXI, ASB, 또는 이들의 결합으로 구현될 수 있으나, 버스 구조(1320)가 이에 한정되는 것은 아니다.
장치 인터페이스(1330)는 호스트(1200)로 전송될 응답 및/또는 데이터의 포맷을 변경하고, 변경된 응답 및/또는 변경된 데이터를 인터페이스(1500)를 통해 호스트(1200)로 전송할 수 있다. 또한, 장치 인터페이스(1330)는 호스트(1200)로부터 전송된 커맨드 및/또는 데이터를 수신하고, 수신된 커맨드 및/또는 데이터의 포맷을 변경하고, 변경된 커맨드 및/또는 변경된 데이터를 프로세서들(1340) 및/또는 버퍼 매니저(1370)로 전송할 수 있다. 실시예에 따라, 장치 인터페이스(1330)는 신호 및/또는 데이터를 송수신할 수 있는 송수신기를 포함할 수 있다. 장치 인터페이스(1320)의 구조와 작동은 인터페이스(1500)의 구조와 작동에 적합하게 구현될 수 있다.
프로세서들(1340)은, 버스 구조(1320)를 통해, 장치 인터페이스(1330), 내부 메모리(1350), 메모리 컨트롤러(1360) 및 버퍼 매니저(1370)를 제어할 수 있다. 프로세서들(1340)은 스토리지 장치(1300)의 작동을 제어할 수 있는 펌웨어(또는 컴퓨터 프로그램)를 실행할 수 있다. 실시예들에 따라 컨트롤러(1310)는 호스트(1200)로부터 출력된 커맨드 및/또는 데이터를 처리하는 몇몇 프로세서들과, 비휘발성 메모리들(1400)에 대한 액세스 작동, 예컨대 라이트 작동, 리드 작동 및/또는 이레이즈 작동을 제어하는 몇몇 프로세서들을 포함할 수 있다.
각각의 프로세서(1340)은 도 1 내지 도 12를 이용하여 설명한 단위 처리기(10, 10a, 10b)에 대응된다. 예를 들어, 프로세서(1340)는 커맨드를 제공받고, 커맨드가 반영되도록 작업 리스트를 업데이트하고, 커맨드를 기설정된 포맷으로 변경하여 저장하는 하드웨어 로직(HW)과, 업데이트된 작업 리스트의 순서에 따라, 커맨드를 수행하는 코어를 포함할 수 있다. 또한, 하드웨어 로직(HW)은, 코어로부터 커맨드의 수행 결과값을 제공받아, 기설정된 포맷에 맞추어 추가 커맨드를 생성하여 출력할 수 있다.
또한, 다수의 프로세서(1340)의 연결관계는 예를 들어 도 13 및 도 14에서 설명한 것과 같다.
내부 메모리(1350)는 컨트롤러(1310)의 작동에 필요한 데이터 또는 컨트롤러(1310)에 의해 수행된 데이터 처리 작동(예컨대, 라이트 작동 또는 리드 작동)에 의해 생성된 데이터를 저장할 수 있다. 실시예들에 따라, 내부 메모리(1350)는 RAM, DRAM, SRAM, 버퍼(buffer), 버퍼 메모리, 캐시(cache), 또는 강하게 결합된 메모리(tightly coupled memory(TCM))으로 구현될 수 있으나, 내부 메모리(1350)가 이에 한정되는 것은 아니다.
내부 메모리(1350)는 비휘발성 메모리들(1400) 중에서 적어도 하나로부터 로드되는 플래시 변환 레이어(flash translation layer(FTL)))를 저장할 수 있다. FTL은 호스트(1200)로부터 출력된 논리 주소(logical address)를 비휘발성 메모리들(1400)의 물리 주소(physical address)로 맵핑하는 주소 맵핑(address mapping), 웨어-레벨링(wear-leveling), 및/또는 가비지 컬렉션(garbage collection)을 수행하기 위한 펨웨어를 의미할 수 있다.
메모리 컨트롤러(1360)는, 프로세서들(1340)의 제어에 따라, 비휘발성 메모리들(1400)에 대한 데이터 처리 작동들(예컨대, 라이트 작동, 리드 작동, 및/또는 이레이즈 작동)을 제어할 수 있다. 예컨대, 비휘발성 메모리들(1400)이 플래시 메모리로 구현될 때, 메모리 컨트롤러(1360)는 플래시 메모리 컨트롤러의 기능을 수행할 수 있다. 메모리 컨트롤러(1360)와 비휘발성 메모리들(1400)은 채널들을 통해 제어 신호 및/또는 데이터를 주거나 받을 수 있다.
메모리 컨트롤러(1360)는 비휘발성 메모리들(1400)에 포함된 데이터 블록들에 대하여 가비지 컬렉션의 수행을 제어할 수 있다. 실시예들에 따라, 메모리 컨트롤러(1360)는 가비지 컬렉션 수행과 관련된 데이터 블록의 맵핑 테이블 정보를 관리할 수 있다.
실시예들에 따라, 메모리 컨트롤러(1360)는 SATA 인터페이스, SATAe 인터페이스, SAS, PCIe 인터페이스, NVMe 인터페이스, AHCI, MMC 인터페이스, NAND-타입 플래시 메모리 인터페이스, 또는 NOR-타입 플래시 메모리 인터페이스를 지원할 수 있으나 이에 한정되는 것은 아니다.
버퍼 매니저(1370)는 버퍼(1380)에 데이터를 라이트하거나 버퍼(1380)로부터 데이터를 리드할 수 있다. 실시예들에 따라, 버퍼(1380)는 RAM, SRAM, 또는 DRAM으로 구현될 수 있으나 이에 한정되는 것은 아니다.
버퍼(1380)는 비휘발성 메모리들(1400)에 대한 논리 주소-물리 주소 변환을 위한 맵핑 테이블과, 비휘발성 메모리들(1400)에 포함된 데이터 블록들 각각에 대한 맵핑 테이블 정보와 관련된 비트맵을 저장할 수 있다. 상기 비트맵은 해당 데이터 블록에 대한 맵핑 테이블의 개수와 인덱스 정보를 포함할 수 있다. 상기 맵핑 테이블과 상기 비트맵은 FTL에 의해 업데이트될 수 있다.
버퍼(1380)는 비휘발성 메모리들(1400)로 전송될 라이트 데이터를 임시로 저장하는 캐시(cache)의 기능을 수행할 수도 있다.
실시예들에 따라, 컨트롤러(1310)와 버퍼(1380) 각각이 서로 다른 반도체 칩으로 구현될 때, 컨트롤러(1310)와 버퍼(1380)는 하나의 패키지, 예컨대, 패키지-온-패키지(package-on-package(PoP)), 멀티-칩 패키지(multi-chip package(MCP)) 또는 시스템-인 패키지(system-in package(SiP))로 구현될 수 있으나 이에 한정되는 것은 아니다.
비휘발성 메모리들(1400)은 운영 체계(operation system(OS)), 각종 프로그램들, 및 각종 데이터를 저장할 수 있다. 비휘발성 메모리들(1400) 각각은 적어도 하나의 메모리 셀 어레이를 포함할 수 있다. 비휘발성 메모리들(1400) 각각은 반도체 칩 또는 반도체 패키지로 구현될 수 있다. 메모리 컨트롤러(1360)와 비휘발성 메모리들(1400) 사이에는 적어도 하나의 패널이 배치(또는 형성)될 수 있다. 상기 채널은 커맨드 및/또는 데이터를 전송하는 전송 라인들을 포함할 수 있다. 실시예들에 따라, 비휘발성 메모리들(1400)은 A채널*B웨이로 구현될 수 있다. 여기서, A와 B 각각은 1이상의 자연수일 수 있다.
상기 메모리 셀 어레이는 2차원 메모리 셀 어레이 또는 3차원 메모리 셀 어레이를 포함할 수 있다. 상기 3차원 메모리 셀 어레이는 실리콘 기판 위(on or above)에 배치된 액티브(active) 영역을 갖는 메모리 셀들의 어레이의 하나 또는 그 이상의 물리적인 레벨들 내에서 모노리식하게(monolithically) 형성되고, 상기 메모리 셀들의 작동에 관련된 회로를 포함할 수 있다. 상기 회로는 상기 기판의 내부 또는 위(on or above)에 형성될 수 있다.
모노리식(monolithic) 이라는 용어는 어레이의 각 레벨의 레이어들(layers)이 상기 어레이의 각 하부 레벨(each underlying level)의 레이어들에 직접 증착 (directly deposited )되는 것을 의미한다.
3차원 메모리 셀 어레이는 적어도 하나의 메모리 셀이 다른 메모리 셀의 위에 위치하도록 수직으로 배향되는(vertically oriented) 수직 NAND 스트링을 포함할 수 있다. 상기 적어도 하나의 메모리 셀은 전하 트랩 레이어(charge trap layer)를 포함할 수 있다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
110: 전처리기 111: 커맨드 파서
113: 큐 엔트리 요청기 115: 데이터 포맷터
117: 리스트 관리기 119: 핸들러
130: 큐 관리기 131: 큐 엔트리 체커
133a, 133b, 133c : 큐 엔트리 그룹 매니저
135: 큐 엔트리 리턴부 150: 후처리기
151: 파서 153: 커맨드 발생기
155: 큐 엔트리 해제기 200: 코어
170: 입력단 180: 출력단

Claims (20)

  1. 제1 커맨드를 제공받는 입력단;
    상기 제1 커맨드를 위한 제1 큐 엔트리를 할당하는 큐 관리기;
    상기 제1 큐 엔트리에 상기 제1 커맨드를 저장하고, 상기 제1 커맨드가 반영되도록 작업 리스트를 업데이트하는 전처리기; 및
    상기 업데이트된 작업 리스트의 순서에 따라, 상기 제1 커맨드를 수행하는 코어를 포함하되,
    상기 큐 관리기 또는 전처리기는 하드웨어 로직으로 구현된, 스토리지 장치.
  2. 제 1항에 있어서,
    상기 코어가 상기 제1 커맨드를 수행하는 동안,
    상기 큐 관리기는 상기 제1 커맨드가 아닌 제2 커맨드를 위한 제2 큐 엔트리를 할당하거나,
    상기 전처리기는 상기 제2 큐 엔트리에 상기 제2 커맨드를 저장하거나, 상기 저장된 제2 커맨드가 반영되도록 상기 작업 리스트를 업데이트하는, 스토리지 장치.
  3. 제 1항에 있어서,
    상기 코어는 상기 제1 커맨드 수행에 따른 결과값을 출력하고,
    상기 결과값을 기초로, 기설정된 포맷에 맞추어 제2 커맨드를 생성하여 출력하는 후처리기를 더 포함하고,
    상기 후처리기는 하드웨어 로직으로 구현된, 스토리지 장치.
  4. 제 3항에 있어서,
    상기 결과값의 패킷 구조와, 상기 제2 커맨드의 패킷 구조를 서로 다른, 스토리지 장치.
  5. 제 3항에 있어서,
    메모리를 더 포함하되, 상기 메모리는 상기 업데이트된 작업 리스트 중에서 헤드(head) 작업과 테일(tail) 작업을 저장하고,
    상기 코어는 상기 헤드 작업을 수행하기 시작할 때, 상기 전처리기에 상기 작업 리스트 중에서 상기 헤드 작업을 삭제하도록 지시하는, 스토리지 장치.
  6. 제 1항에 있어서, 상기 전처리기는
    상기 입력단으로부터 제공받은 상기 제1 커맨드를 해석하는 커맨드 파서와,
    상기 해석된 결과에 따라 상기 제1 커맨드를 위한 큐 엔트리의 할당을 요청하여, 상기 큐 관리기로부터 제1 큐 엔트리를 할당받는 큐 엔트리 요청기와,
    상기 큐 관리기로부터 할당받은 상기 제1 큐 엔트리에, 상기 제1 커맨드의 포맷을 변경하여 저장하는 데이터 포맷터를 포함하는, 스토리지 장치.
  7. 제 6항에 있어서,
    작업 리스트를 업데이트하는 리스트 관리기를 더 포함하고,
    상기 큐 엔트리 요청기는 상기 큐 관리기로부터 상기 제1 큐 엔트리를 할당받은 후, 상기 리스트 관리기에 상기 작업 리스트를 업데이트할 것을 요청하고,
    상기 데이터 포맷터가 상기 제1 커맨드의 포맷을 변경하여 저장하는 동안, 상기 리스트 관리기가 상기 작업 리스트를 업데이트하는, 스토리지 장치.
  8. 제 7항에 있어서,
    상기 데이터 포맷터가 상기 제1 커맨드의 포맷을 변경하여 저장하는 것과, 상기 리스트 관리기가 상기 작업 리스트를 업데이트하는 것이 완료되면, 상기 코어에 완료되었음을 알려주는 핸들러를 더 포함하는, 스토리지 장치.
  9. 제 6항에 있어서,
    메모리를 더 포함하되, 상기 메모리는 다수의 큐 엔트리를 포함하고, 상기 다수의 큐 엔트리는 다수의 그룹으로 구분되고,
    상기 큐관리기는, 상기 해석된 결과를 기초로 상기 제1 커맨드의 종류를 결정하고, 결정된 상기 제1 커맨드의 종류에 대응하는 그룹을 결정하고, 상기 대응하는 그룹 내에서 프리 상태의 큐 엔트리를 상기 제1 큐 엔트리로 할당하는, 스토리지 장치.
  10. 제 9항에 있어서,
    서로 다른 그룹에 속하는 큐 엔트리 그룹은, 서로 다른 사이즈를 갖는, 스토리지 장치.
  11. 제 9항에 있어서, 상기 전처리기는
    다수의 작업 리스트를 생성하고 업데이트하는 리스트 관리기를 더 포함하되,
    상기 리스트 관리기는 상기 제1 큐 엔트리가 속하는 그룹에 따라, 상기 다수의 작업 리스트 중 업데이트할 작업 리스트를 결정하고, 상기 제1 커맨드를 반영하도록 상기 결정된 작업 리스트를 업데이트하는, 스토리지 장치.
  12. 입력단으로부터 제공받은 제1 커맨드를 해석하는 커맨드 파서;
    상기 해석된 결과에 따라 큐 관리기로부터 제1 큐 엔트리를 할당받고, 변경 지시 신호와 업데이트 지시 신호를 생성하는 큐 엔트리 요청기;
    상기 변경 지시 신호를 제공받아, 상기 제1 큐 엔트리에, 상기 제1 커맨드의 포맷을 변경하여 저장하는 데이터 포맷터;
    상기 업데이트 지시 신호를 제공받아, 상기 제1 커맨드가 반영되도록 작업 리스트를 업데이트하는 리스트 관리기; 및
    상기 데이터 포맷터가 상기 제1 커맨드의 포맷을 변경하여 저장하는 것과, 상기 리스트 관리기가 상기 작업 리스트를 업데이트하는 것이 완료되면, 완료되었음을 코어에 알리는 핸들러를 포함하는 스토리지 장치.
  13. 제 12항에 있어서,
    상기 커맨드 파서, 상기 큐 엔트리 요청기, 상기 데이터 포맷터, 상기 리스트 관리기 및 상기 핸들러는 하드웨어 로직으로 구현되는, 스토리지 장치.
  14. 제 12항에 있어서,
    메모리를 더 포함하되, 상기 메모리는 다수의 큐 엔트리를 포함하고, 상기 다수의 큐 엔트리는 다수의 그룹으로 구분되고,
    상기 큐관리기는, 상기 해석된 결과를 기초로 상기 제1 커맨드의 종류를 결정하고, 결정된 상기 제1 커맨드의 종류에 대응하는 그룹을 결정하고, 상기 대응하는 그룹 내에서 프리 상태의 큐 엔트리를 상기 제1 큐 엔트리로 할당하는, 스토리지 장치.
  15. 제 14항에 있어서,
    서로 다른 그룹에 속하는 큐 엔트리 그룹은, 서로 다른 사이즈를 갖는, 스토리지 장치.
  16. 제 14항에 있어서,
    상기 리스트 관리기는 상기 제1 큐 엔트리가 속하는 그룹에 따라, 상기 다수의 작업 리스트 중 업데이트할 작업 리스트를 결정하고, 상기 제1 커맨드를 반영하도록 상기 결정된 작업 리스트를 업데이트하는, 스토리지 장치.
  17. 제1 커맨드를 제공받고, 제2 커맨드를 출력하는 제1 단위 처리기; 및
    상기 제2 커맨드를 제공받는 제2 단위 처리기를 포함하되,
    상기 제1 단위 처리기는
    상기 제1 커맨드를 제공받는 제1 입력단과,
    상기 제1 커맨드를 위한 제1 큐 엔트리를 할당하는 제1 큐 관리기와,
    상기 제1 큐 엔트리에 상기 제1 커맨드를 저장하고, 상기 제1 커맨드가 반영되도록 제1 작업 리스트를 업데이트하는 제1 전처리기와,
    상기 업데이트된 제1 작업 리스트의 순서에 따라, 상기 제1 커맨드를 수행하여, 제1 커맨드의 수행에 따른 제1 결과값을 출력하는 제1 코어와,
    상기 제1 결과값을 기초로, 기설정된 포맷에 맞추어 제2 커맨드를 생성하여 출력하는 제1 후처리기를 포함하고,
    상기 제1 큐 관리기, 상기 제1 전처리기 및 상기 제1 후처리기 중 적어도 하나는 하드웨어 로직으로 구현된, 스토리지 장치.
  18. 제 17항에 있어서, 상기 제1 코어가 상기 제1 커맨드를 수행하는 동안,
    상기 제1 큐 관리기는 상기 제1 커맨드가 아닌 제3 커맨드를 위한 제3 큐 엔트리를 할당하거나,
    상기 제1 전처리기는 상기 제3 큐 엔트리에 상기 제3 커맨드를 저장하거나, 상기 저장된 제3 커맨드가 반영되도록 상기 제1 작업 리스트를 업데이트하는, 스토리지 장치.
  19. 제 17항에 있어서,
    메모리를 더 포함하되, 상기 메모리는 상기 제1 단위 처리기가 사용하는 제1 메모리 영역과, 상기 제2 단위 처리기가 사용하는 제2 메모리 영역을 포함하고, 상기 제1 메모리 영역과 상기 제2 메모리 영역은 서로 분리된, 스토리지 영역.
  20. 데이터를 저장하는 비휘발성 메모리; 및
    상기 비휘발성 메모리의 동작을 제어하는 컨트롤러를 포함하며,
    상기 컨트롤러는 직렬로 연결된 다수의 단위 처리기를 포함하되, 각 단위 처리기는
    커맨드를 제공받고, 상기 커맨드가 반영되도록 작업 리스트를 업데이트하고, 상기 커맨드를 기설정된 포맷으로 변경하여 저장하는 하드웨어 로직과,
    상기 업데이트된 작업 리스트의 순서에 따라, 상기 커맨드를 수행하는 코어를 포함하는, 스토리지 장치.

KR1020190079067A 2019-07-02 2019-07-02 하드웨어 로직을 이용하여 통신 오버헤드를 감소시킨 스토리지 장치 KR20210003370A (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020190079067A KR20210003370A (ko) 2019-07-02 2019-07-02 하드웨어 로직을 이용하여 통신 오버헤드를 감소시킨 스토리지 장치
US16/745,451 US11435947B2 (en) 2019-07-02 2020-01-17 Storage device with reduced communication overhead using hardware logic
CN202010531069.2A CN112181284A (zh) 2019-07-02 2020-06-11 使用硬件逻辑的具有减少的通信开销的存储设备
SG10202006186WA SG10202006186WA (en) 2019-07-02 2020-06-26 Storage device with reduced communication overhead using hardware logic
US17/883,261 US20220374174A1 (en) 2019-07-02 2022-08-08 Storage device with reduced communication overhead using hardware logic

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190079067A KR20210003370A (ko) 2019-07-02 2019-07-02 하드웨어 로직을 이용하여 통신 오버헤드를 감소시킨 스토리지 장치

Publications (1)

Publication Number Publication Date
KR20210003370A true KR20210003370A (ko) 2021-01-12

Family

ID=73919055

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190079067A KR20210003370A (ko) 2019-07-02 2019-07-02 하드웨어 로직을 이용하여 통신 오버헤드를 감소시킨 스토리지 장치

Country Status (4)

Country Link
US (2) US11435947B2 (ko)
KR (1) KR20210003370A (ko)
CN (1) CN112181284A (ko)
SG (1) SG10202006186WA (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220094601A (ko) 2020-12-29 2022-07-06 삼성전자주식회사 스토리지 장치 및 그 구동 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060174246A1 (en) 2005-01-28 2006-08-03 Seiko Epson Corporation Processor and information processing method

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7966511B2 (en) 2004-07-27 2011-06-21 Intel Corporation Power management coordination in multi-core processors
US20060067314A1 (en) 2004-09-29 2006-03-30 Michael Ho Overhead processing and generation techniques
KR100936601B1 (ko) 2008-05-15 2010-01-13 재단법인서울대학교산학협력재단 멀티 프로세서 시스템
KR101513505B1 (ko) 2008-11-04 2015-04-20 삼성전자주식회사 프로세서 및 인터럽트 처리 방법
US8510511B2 (en) 2009-12-14 2013-08-13 International Business Machines Corporation Reducing interprocessor communications pursuant to updating of a storage key
WO2012001835A1 (ja) 2010-07-02 2012-01-05 パナソニック株式会社 マルチプロセッサシステム
US20120096292A1 (en) 2010-10-15 2012-04-19 Mosaid Technologies Incorporated Method, system and apparatus for multi-level processing
US8700834B2 (en) * 2011-09-06 2014-04-15 Western Digital Technologies, Inc. Systems and methods for an enhanced controller architecture in data storage systems
US9053008B1 (en) * 2012-03-26 2015-06-09 Western Digital Technologies, Inc. Systems and methods for providing inline parameter service in data storage devices
US9582287B2 (en) 2012-09-27 2017-02-28 Intel Corporation Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
US9354872B2 (en) 2014-04-24 2016-05-31 Xitore, Inc. Apparatus, system, and method for non-volatile data storage and retrieval
GB2533414B (en) 2014-12-19 2021-12-01 Advanced Risc Mach Ltd Apparatus with shared transactional processing resource, and data processing method
US9747108B2 (en) 2015-03-27 2017-08-29 Intel Corporation User-level fork and join processors, methods, systems, and instructions
US10268630B1 (en) 2017-10-24 2019-04-23 Hewlett Packard Enterprise Development Lp Noncoherent interprocessor communication remapping node controller
US10929175B2 (en) * 2018-11-21 2021-02-23 Fungible, Inc. Service chaining hardware accelerators within a data stream processing integrated circuit

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060174246A1 (en) 2005-01-28 2006-08-03 Seiko Epson Corporation Processor and information processing method

Also Published As

Publication number Publication date
US11435947B2 (en) 2022-09-06
US20210004179A1 (en) 2021-01-07
US20220374174A1 (en) 2022-11-24
SG10202006186WA (en) 2021-02-25
CN112181284A (zh) 2021-01-05

Similar Documents

Publication Publication Date Title
CN106371888B (zh) 支持虚拟机的存储设备,包括其的存储系统和其操作方法
US10534560B2 (en) Data storage device and data processing system having the same
US10229050B2 (en) Method for operating storage controller and method for operating storage device including the same wherein garbage collection is performed responsive to free block unavailable during reuse
US20130212319A1 (en) Memory system and method of controlling memory system
KR102549545B1 (ko) 스토리지 장치 및 스토리지 장치의 동작 방법
US20140215177A1 (en) Methods and Systems for Managing Heterogeneous Memories
KR102258126B1 (ko) 메모리 컨트롤러의 작동 방법, 이를 포함하는 데이터 저장 장치, 및 이를 포함하는 데이터 처리 시스템
US20180356996A1 (en) Storage system having an adaptive workload-based command processing clock
US20180173444A1 (en) Partially de-centralized latch management architectures for storage devices
KR102406340B1 (ko) 전자 장치 및 그것의 동작 방법
US11429314B2 (en) Storage device, storage system and operating method thereof
US20190026220A1 (en) Storage device that stores latency information, processor and computing system
US20220350655A1 (en) Controller and memory system having the same
CN111258932A (zh) 加速ufs协议处理的方法与存储控制器
US10146440B2 (en) Apparatus, system and method for offloading collision check operations in a storage device
CN113703663A (zh) 支持多租户的存储装置及其操作方法
US20220374174A1 (en) Storage device with reduced communication overhead using hardware logic
US11899947B2 (en) Storage device, storage system, and operating method thereof capable of dynamically allocating write blocks to a stream
CN114153649B (zh) 一种数据存储设备及其控制方法与电子设备
TWI486966B (zh) 快閃記憶體儲存裝置、其控制器與寫入管理方法
EP4287028A1 (en) Storage device providing high purge performance and memory block management method thereof
US20230409495A1 (en) Storage device, operation method of the storage device, and electronic system including the storage device
EP4187364A1 (en) Non-volatile memory-based storage device, device controller and method thereof
KR20120011634A (ko) 플래시 메모리장치
KR20230164477A (ko) 스토리지 장치 및 이를 포함하는 전자 장치와 그 동작 방법

Legal Events

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