KR20220094601A - 스토리지 장치 및 그 구동 방법 - Google Patents
스토리지 장치 및 그 구동 방법 Download PDFInfo
- Publication number
- KR20220094601A KR20220094601A KR1020200185982A KR20200185982A KR20220094601A KR 20220094601 A KR20220094601 A KR 20220094601A KR 1020200185982 A KR1020200185982 A KR 1020200185982A KR 20200185982 A KR20200185982 A KR 20200185982A KR 20220094601 A KR20220094601 A KR 20220094601A
- Authority
- KR
- South Korea
- Prior art keywords
- task
- core
- memory
- command
- tasks
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 34
- 230000015654 memory Effects 0.000 claims abstract description 266
- 238000012545 processing Methods 0.000 claims abstract description 39
- 230000008569 process Effects 0.000 claims abstract description 15
- 238000012552 review Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 16
- 230000004044 response Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 101001112162 Homo sapiens Kinetochore protein NDC80 homolog Proteins 0.000 description 1
- 101150039208 KCNK3 gene Proteins 0.000 description 1
- 102100023890 Kinetochore protein NDC80 homolog Human genes 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- CXOXHMZGEKVPMT-UHFFFAOYSA-N clobazam Chemical compound O=C1CC(=O)N(C)C2=CC=C(Cl)C=C2N1C1=CC=CC=C1 CXOXHMZGEKVPMT-UHFFFAOYSA-N 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 229940044442 onfi Drugs 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000003936 working memory Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/22—Read-write [R-W] timing or clocking circuits; Read-write [R-W] control signal generators or management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
스토리지 장치 및 그 구동 방법이 제공된다. 스토리지 장치의 구동 방법은, 복수의 비휘발성 메모리 셀을 포함하는 비휘발성 메모리와, 호스트 인터페이스와, 제1 및 제2 코어를 포함하는 멀티 코어 프로세서와, 태스크 스케쥴러(task scheduler)를 포함하는 스토리지 장치를 제공하고, 호스트 인터페이스가, 호스트로부터 비휘발성 메모리에 대해 미리 정한 메모리 동작(memory operation) 수행을 요청하는 제1 메모리 커맨드를 제공받고, 태스크 스케쥴러가, 제1 메모리 커맨드로부터 제1 및 제2 태스크를 생성하고, 태스크 스케쥴러가, 제1 코어와 제2 코어의 수행시간을 검토하여 제1 및 제2 태스크를 할당할 코어로 제1 코어와 제2 코어 중 제1 코어를 선택하고, 태스크 스케쥴러가, 제1 및 제2 태스크를 제1 코어에 이슈하고, 제1 코어가 이슈된 제1 태스크를 처리한 후, 태스크 스케쥴러에 후속 태스크를 요청하는 것을 포함하되, 제1 코어가 이슈된 제1 태스크를 처리한 후, 태스크 스케쥴러에 후속 태스크를 요청하는 동안 제2 태스크를 처리하기 위한 코드가 제1 코어에 로드된다.
Description
본 발명은 스토리지 장치 및 그 구동 방법에 관한 것이다.
스토리지 장치의 구동 환경이 급변하면서, 멀티 코어 프로세서를 채용한 스토리지 장치들이 사용되고 있다. 이러한 멀티 코어 프로세서 스토리지 장치에서는 복수의 코어 각각에 대한 사용 효율을 높이는 것이 스토리지 장치의 동작 속도를 향상시키는 것에 도움이 된다. 따라서, 이에 대한 연구가 활발히 진행되고 있다.
본 발명이 해결하고자 하는 기술적 과제는 동작 속도를 향상시킬 수 있는 스토리지 장치의 구동 방법을 제공하는 것이다.
본 발명이 해결하고자 하는 다른 기술적 과제는 동작 속도가 향상된 스토리지 장치를 제공하는 것이다.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상기 기술적 과제를 달성하기 위한 몇몇 실시예에 따른 스토리지 장치의 구동 방법은, 복수의 비휘발성 메모리 셀을 포함하는 비휘발성 메모리와, 호스트 인터페이스와, 제1 및 제2 코어를 포함하는 멀티 코어 프로세서와, 태스크 스케쥴러(task scheduler)를 포함하는 스토리지 장치를 제공하고, 호스트 인터페이스가, 호스트로부터 비휘발성 메모리에 대해 미리 정한 메모리 동작(memory operation) 수행을 요청하는 제1 메모리 커맨드를 제공받고, 태스크 스케쥴러가, 제1 메모리 커맨드로부터 제1 및 제2 태스크를 생성하고, 태스크 스케쥴러가, 제1 코어와 제2 코어의 수행시간을 검토하여 제1 및 제2 태스크를 할당할 코어로 제1 코어와 제2 코어 중 제1 코어를 선택하고, 태스크 스케쥴러가, 제1 및 제2 태스크를 제1 코어에 이슈하고, 제1 코어가 이슈된 제1 태스크를 처리한 후, 태스크 스케쥴러에 후속 태스크를 요청하는 것을 포함하되, 제1 코어가 이슈된 제1 태스크를 처리한 후, 태스크 스케쥴러에 후속 태스크를 요청하는 동안 제2 태스크를 처리하기 위한 코드가 제1 코어에 로드된다.
상기 기술적 과제를 달성하기 위한 몇몇 실시예에 따른 스토리지 장치의 구동 방법은, 복수의 비휘발성 메모리 셀을 포함하는 비휘발성 메모리와, 비휘발성 메모리와 연결되는 메모리 인터페이스와, 호스트와 연결되는 호스트 인터페이스와, 제1 및 제2 코어를 포함하는 멀티 코어 프로세서와, 태스크 스케쥴러를 포함하는 스토리지 장치를 제공하고, 호스트 인터페이스가, 호스트로부터 비휘발성 메모리에 대해 미리 정한 메모리 동작(memory operation) 수행을 요청하는 제1 메모리 커맨드를 제공받고, 태스크 스케쥴러가, 제1 메모리 커맨드로부터 제1 태스크를 생성하고, 태스크 스케쥴러가, 제1 태스크의 수행 시간을 확인하고, 태스크 스케쥴러가, 확인된 제1 태스크의 수행 시간을 기초로 제1 코어와 제2 코어의 수행시간을 검토하여 제1 태스크를 할당할 코어로 제1 코어와 제2 코어 중 제1 코어를 선택하고, 태스크 스케쥴러가, 제1 태스크의 수행 시간을 고려하여 제1 코어의 수행 시간을 업데이트하고, 태스크 스케쥴러가, 제1 태스크를 제1 코어에 이슈하고, 스토리지 컨트롤러가, 제1 태스크의 처리가 완료되어 생성된 제1 메모리 커맨드에 대응되는 제2 메모리 커맨드를 메모리 인터페이스를 통해 비휘발성 메모리에 제공하는 것을 포함한다.
상기 다른 기술적 과제를 달성하기 위한 몇몇 실시예에 따른 스토리지 장치는, 복수의 비휘발성 메모리 셀을 포함하는 비휘발성 메모리, 호스트로부터 비휘발성 메모리에 대해 미리 정한 메모리 동작(memory operation) 수행을 요청하는 제1 메모리 커맨드를 제공받는 호스트 인터페이스, 복수의 코어를 포함하는 멀티 코어 프로세서, 제1 메모리 커맨드로부터 복수의 태스크를 생성하고, 복수의 태스크 각각의 처리 시간이 저장된 태스크 수행 시간 테이블과, 복수의 코어 각각의 수행 시간이 저장된 수행 시간 스템프 테이블을 이용하여 복수의 태스크를 처리할 코어를 선택하는 태스크 스케쥴러, 복수의 코어에 의해 처리된 복수의 태스크를 기초로 생성된 제1 메모리 커맨드에 대응하는 제2 메모리 커맨드를 비휘발성 메모리에 출력하는 메모리 인터페이스를 포함한다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
도 1은 몇몇 실시예에 따른 호스트-스토리지 시스템을 도시한 블록도이다.
도 2는 도 1의 스토리지 컨트롤러, 메모리 인터페이스 및 비휘발성 메모리를 재구성하여 도시한 도면이다.
도 3은 도 1의 멀티 코어 프로세서를 도시한 도면이다.
도 4는 도 1의 태스크 리스트를 도시한 도면이다.
도 5는 도 1의 ETS(Execution Time Stamp) 테이블을 도시한 도면이다.
도 6은 도 1의 TDT(Task Duration Time) 테이블을 도시한 도면이다.
도 7은 몇몇 실시예에 따른 스토리지 장치의 동작을 도시한 순서도이다.
도 8 내지 도 15는 몇몇 실시예에 따른 스토리지 장치의 동작을 설명하기 위한 도면들이다.
도 16은 몇몇 실시예에 따른 TDT(Task Duration Time) 테이블을 도시한 도면이다.
도 2는 도 1의 스토리지 컨트롤러, 메모리 인터페이스 및 비휘발성 메모리를 재구성하여 도시한 도면이다.
도 3은 도 1의 멀티 코어 프로세서를 도시한 도면이다.
도 4는 도 1의 태스크 리스트를 도시한 도면이다.
도 5는 도 1의 ETS(Execution Time Stamp) 테이블을 도시한 도면이다.
도 6은 도 1의 TDT(Task Duration Time) 테이블을 도시한 도면이다.
도 7은 몇몇 실시예에 따른 스토리지 장치의 동작을 도시한 순서도이다.
도 8 내지 도 15는 몇몇 실시예에 따른 스토리지 장치의 동작을 설명하기 위한 도면들이다.
도 16은 몇몇 실시예에 따른 TDT(Task Duration Time) 테이블을 도시한 도면이다.
이하, 첨부된 도면을 참조하여 본 발명의 기술적 사상에 따른 실시예들에 대해 설명한다.
도 1은 몇몇 실시예에 따른 호스트-스토리지 시스템을 도시한 블록도이다.
호스트-스토리지 시스템(10)은 호스트(100) 및 스토리지 장치(200)를 포함할 수 있다. 또한, 스토리지 장치(200)는 스토리지 컨트롤러(210) 및 비휘발성 메모리 (NVM, 220)를 포함할 수 있다. 또한, 몇몇 실시예에서, 호스트(100)는 호스트 컨트롤러(110) 및 호스트 메모리(120)를 포함할 수 있다. 호스트 메모리(120)는 스토리지 장치(200)로 전송될 데이터, 혹은 스토리지 장치(200)로부터 전송된 데이터를 임시로 저장하기 위한 버퍼 메모리로서 기능할 수 있다.
스토리지 장치(200)는 호스트(100)로부터의 요청에 따라 데이터를 저장하기 위한 저장 매체들을 포함할 수 있다. 예를 들어, 스토리지 장치(200)는 SSD(Solid State Drive), 임베디드(embedded) 메모리 및 착탈 가능한 외장(external) 메모리 중 적어도 하나를 포함할 수 있다. 스토리지 장치(200)가 SSD인 경우, 스토리지 장치(200)는 NVMe(non-volatile memory express) 표준을 따르는 장치일 수 있다.
스토리지 장치(200)가 임베디드 메모리 혹은 외장(external) 메모리인 경우, 스토리지 장치(200)는 UFS(universal flash storage) 혹은 eMMC(embedded multi-media card) 표준을 따르는 장치일 수 있다. 호스트(100)와 스토리지 장치(200)는 각각 채용된 표준 프로토콜에 따른 패킷을 생성하고 이를 전송할 수 있다.
스토리지 장치(200)의 비휘발성 메모리(220)가 플래시 메모리를 포함할 때, 이러한 플래시 메모리는 2D NAND 메모리 어레이나 3D(또는 수직형, Vertical) NAND(VNAND) 메모리 어레이를 포함할 수 있다. 다른 예로서, 스토리지 장치(200)는 다른 다양한 종류의 비휘발성 메모리들을 포함할 수도 있다. 예를 들어, 스토리지 장치(200)는 MRAM(Magnetic RAM), 스핀전달토크 MRAM(Spin-Transfer Torque MRAM), Conductive bridging RAM(CBRAM), FeRAM(Ferroelectric RAM), PRAM(Phase RAM), 저항 메모리(Resistive RAM) 및 다른 다양한 종류의 메모리가 적용될 수 있다.
몇몇 실시예에서, 호스트 컨트롤러(110)와 호스트 메모리(120)는 별도의 반도체 칩으로 구현될 수 있다. 또는, 몇몇 실시예에서, 호스트 컨트롤러(110)와 호스트 메모리(120)는 동일한 반도체 칩에 집적될 수 있다. 일 예로서, 호스트 컨트롤러(110)는 어플리케이션 프로세서(Application Processor)에 구비되는 다수의 모듈들 중 어느 하나일 수 있으며, 이러한 어플리케이션 프로세서는 시스템 온 칩(System on Chip, SoC)으로 구현될 수 있다. 또한, 호스트 메모리(120)는 어플리케이션 프로세서 내에 구비되는 임베디드 메모리이거나, 또는 어플리케이션 프로세서의 외부에 배치되는 비휘발성 메모리 또는 메모리 모듈일 수 있다.
호스트 컨트롤러(110)는 버퍼 영역의 데이터(예컨대, 라이트 데이터)를 비휘발성 메모리(220)에 저장하거나, 비휘발성 메모리(220)의 데이터(예컨대, 리드 데이터)를 버퍼 영역에 저장하는 동작을 관리할 수 있다.
스토리지 컨트롤러(210)는 호스트 인터페이스(211), 메모리 인터페이스(212) 및 멀티 코어 프로세서(213)를 포함할 수 있다. 또한, 스토리지 컨트롤러(210)는 플래시 변환 레이어(Flash Translation Layer(FTL), 214), 패킷 매니저(215), 버퍼 메모리(216), ECC(error correction code, 217) 엔진 및 AES(advanced encryption standard, 218) 엔진 및 태스크(task) 스케쥴러(219)를 더 포함할 수 있다.
스토리지 컨트롤러(210)는 플래시 변환 레이어(FTL, 214)가 로딩되는 워킹 메모리(미도시)를 더 포함할 수 있으며, 멀티 코어 프로세서(213)가 플래시 변환 레이어(214)를 실행하는 것에 의해 비휘발성 메모리에 대한 데이터 라이트 및 리드 동작이 제어될 수 있다.
호스트 인터페이스(211)는 호스트(100)와 패킷(packet)을 송수신할 수 있다. 호스트(100)로부터 호스트 인터페이스(211)로 전송되는 패킷은 커맨드(command) 혹은 비휘발성 메모리(220)에 라이트될 데이터 등을 포함할 수 있으며, 호스트 인터페이스(211)로부터 호스트(100)로 전송되는 패킷은 커맨드에 대한 응답(response) 혹은 비휘발성 메모리(220)로부터 리드된 데이터 등을 포함할 수 있다.
메모리 인터페이스(212)는 비휘발성 메모리(220)에 라이트될 데이터를 비휘발성 메모리(220)로 송신하거나, 비휘발성 메모리(220)로부터 리드된 데이터를 수신할 수 있다. 이러한 메모리 인터페이스(212)는 토글(Toggle) 혹은 온파이(ONFI)와 같은 표준 규약을 준수하도록 구현될 수 있다.
플래시 변환 레이어(214)는 어드레스 매핑(address mapping), 웨어-레벨링(wear-leveling), 가비지 콜렉션(garbage collection)과 같은 여러 기능을 수행할 수 있다. 어드레스 매핑 동작은 호스트로부터 수신한 논리 어드레스(logical address)를, 비휘발성 메모리(220) 내에 데이터를 실제로 저장하는 데 사용되는 물리 어드레스(physical address)로 바꾸는 동작이다. 웨어-레벨링은 비휘발성 메모리(220) 내의 블록(block)들이 균일하게 사용되도록 하여 특정 블록의 과도한 열화를 방지하기 위한 기술로, 예시적으로 물리 블록(physical block)들의 소거 카운트들을 밸런싱하는 펌웨어 기술을 통해 구현될 수 있다. 가비지 콜렉션은, 블록의 유효 데이터를 새 블록에 복사한 후 기존 블록을 소거(erase)하는 방식을 통해 비휘발성 메모리(220) 내에서 사용 가능한 용량을 확보하기 위한 기술이다.
패킷 매니저(215)는 호스트(100)와 협의된 인터페이스의 프로토콜에 따른 패킷(Packet)을 생성하거나, 호스트(100)로부터 수신된 패킷(Packet)으로부터 각종 정보를 파싱할 수 있다. 또한, 몇몇 실시예에서, 패킷 매니저(251)는 태스크 스케쥴러(219)로부터 멀티 코어 프로세서(213)에 제공되는 패킷이나 멀티 코어 프로세서(213)로부터 태스크 스케쥴러(219)에 제공되는 패킷을 관리할 수도 있다. 하지만, 실시예들이 이에 제한되는 것은 아니다.
버퍼 메모리(216)는 비휘발성 메모리(220)에 라이트될 데이터 혹은 비휘발성 메모리(220)로부터 리드될 데이터를 임시로 저장할 수 있다. 버퍼 메모리(216)는 스토리지 컨트롤러(210) 내에 구비되는 구성일 수 있으나, 스토리지 컨트롤러(210)의 외부에 배치되어도 무방하다.
ECC 엔진(217)은 비휘발성 메모리(220)로부터 리드되는 리드 데이터에 대한 오류 검출 및 정정 기능을 수행할 수 있다. 보다 구체적으로, ECC 엔진(217)은 비휘발성 메모리(220)에 기입될 기입 데이터에 대하여 패리티 비트(parity bit)들을 생성할 수 있으며, 이와 같이 생성된 패리티 비트들은 라이트 데이터와 함께 비휘발성 메모리(220) 내에 저장될 수 있다. 비휘발성 메모리(220)로부터의 데이터 리드 시, ECC 엔진(217)은 리드 데이터와 함께 비휘발성 메모리(220)로부터 리드되는 패리티 비트들을 이용하여 리드 데이터의 에러를 정정하고, 에러가 정정된 리드 데이터를 출력할 수 있다.
AES 엔진(218)은, 스토리지 컨트롤러(210)로 입력되는 데이터에 대한 암호화(encryption) 동작과 복호화(decryption) 동작 중 적어도 하나를, 대칭 키 알고리즘(symmetric-key algorithm)을 이용하여 수행할 수 있다.
도 2는 도 1의 스토리지 컨트롤러, 메모리 인터페이스 및 비휘발성 메모리를 재구성하여 도시한 도면이다. 도 1의 메모리 인터페이스(212)는 도 2의 컨트롤러 인터페이스 회로(212a)와 메모리 인터페이스 회로(212b)를 포함할 수 있다.
비휘발성 메모리(220)는 제1 내지 제8 핀들(P11~P18), 메모리 인터페이스 회로(212b), 제어 로직 회로(510), 및 메모리 셀 어레이(520)를 포함할 수 있다.
메모리 인터페이스 회로(212b)는 제1 핀(P11)을 통해 스토리지 컨트롤러(210)로부터 칩 인에이블 신호(nCE)를 수신할 수 있다. 메모리 인터페이스 회로(212b)는 칩 인에이블 신호(nCE)에 따라 제2 내지 제8 핀들(P12~P18)을 통해 스토리지 컨트롤러(210)와 신호들을 송수신할 수 있다. 예를 들어, 칩 인에이블 신호(nCE)가 인에이블 상태(예를 들어, 로우 레벨)인 경우, 메모리 인터페이스 회로(212b)는 제2 내지 제8 핀들(P12~P18)을 통해 스토리지 컨트롤러(210)와 신호들을 송수신할 수 있다.
메모리 인터페이스 회로(212b)는 제2 내지 제4 핀들(P12~P14)을 통해 스토리지 컨트롤러(210)로부터 커맨드 래치 인에이블 신호(CLE), 어드레스 래치 인에이블 신호(ALE), 및 쓰기 인에이블 신호(nWE)를 수신할 수 있다. 메모리 인터페이스 회로(212b)는 제7 핀(P17)을 통해 스토리지 컨트롤러(210)로부터 데이터 신호(DQ)를 수신하거나, 스토리지 컨트롤러(210)로 데이터 신호(DQ)를 전송할 수 있다. 데이터 신호(DQ)를 통해 커맨드(CMD), 어드레스(ADDR), 및 데이터(DATA)가 전달될 수 있다. 예를 들어, 데이터 신호(DQ)는 복수의 데이터 신호 라인들을 통해 전달될 수 있다. 이 경우, 제7 핀(P17)은 복수의 데이터 신호들에 대응하는 복수 개의 핀들을 포함할 수 있다.
메모리 인터페이스 회로(212b)는 쓰기 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 커맨드 래치 인에이블 신호(CLE)의 인에이블 구간(예를 들어, 하이 레벨 상태)에서 수신되는 데이터 신호(DQ)로부터 커맨드(CMD)를 획득할 수 있다. 메모리 인터페이스 회로(212b)는 쓰기 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 어드레스 래치 인에이블 신호(ALE)의 인에이블 구간(예를 들어, 하이 레벨 상태)에서 수신되는 데이터 신호(DQ)로부터 어드레스(ADDR)를 획득할 수 있다.
몇몇 실시 예에서, 쓰기 인에이블 신호(nWE)는 고정된(static) 상태(예를 들어, 하이(high) 레벨 또는 로우(low) 레벨)를 유지하다가 하이 레벨과 로우 레벨 사이에서 토글할 수 있다. 예를 들어, 쓰기 인에이블 신호(nWE)는 커맨드(CMD) 또는 어드레스(ADDR)가 전송되는 구간에서 토글할 수 있다. 이에 따라, 메모리 인터페이스 회로(212b)는 쓰기 인에이블 신호(nWE)의 토글 타이밍들에 기초하여 커맨드(CMD) 또는 어드레스(ADDR)를 획득할 수 있다.
메모리 인터페이스 회로(212b)는 제5 핀(P15)을 통해 스토리지 컨트롤러(210)로부터 읽기 인에이블 신호(nRE)를 수신할 수 있다. 메모리 인터페이스 회로(212b)는 제6 핀(P16)을 통해 스토리지 컨트롤러(210)로부터 데이터 스트로브 신호(DQS)를 수신하거나, 스토리지 컨트롤러(210)로 데이터 스트로브 신호(DQS)를 전송할 수 있다.
비휘발성 메모리(220)의 데이터(DATA) 출력 동작에서, 메모리 인터페이스 회로(212b)는 데이터(DATA)를 출력하기 전에 제5 핀(P15)을 통해 토글하는 읽기 인에이블 신호(nRE)를 수신할 수 있다. 메모리 인터페이스 회로(212b)는 읽기 인에이블 신호(nRE)의 토글링에 기초하여 토글하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 예를 들어, 메모리 인터페이스 회로(212b)는 읽기 인에이블 신호(nRE)의 토글링 시작 시간을 기준으로 미리 정해진 딜레이(예를 들어, tDQSRE) 이후에 토글하기 시작하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 메모리 인터페이스 회로(212b)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터(DATA)를 포함하는 데이터 신호(DQ)를 전송할 수 있다. 이에 따라, 데이터(DATA)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 정렬되어 스토리지 컨트롤러(210)로 전송될 수 있다.
비휘발성 메모리(220)의 데이터(DATA) 입력 동작에서, 스토리지 컨트롤러(210)로부터 데이터(DATA)를 포함하는 데이터 신호(DQ)이 수신되는 경우, 메모리 인터페이스 회로(212b)는 스토리지 컨트롤러(210)로부터 데이터(DATA)와 함께 토글하는 데이터 스트로브 신호(DQS)를 수신할 수 있다. 메모리 인터페이스 회로(212b)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터 신호(DQ)로부터 데이터(DATA)를 획득할 수 있다. 예를 들어, 메모리 인터페이스 회로(212b)는 데이터 스트로브 신호(DQS)의 상승 에지 및 하강 에지에서 데이터 신호(DQ)를 샘플링함으로써 데이터(DATA)를 획득할 수 있다.
메모리 인터페이스 회로(212b)는 제8 핀(P18)을 통해 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(210)로 전송할 수 있다. 메모리 인터페이스 회로(212b)는 레디/비지 출력 신호(nR/B)를 통해 비휘발성 메모리(220)의 상태 정보를 스토리지 컨트롤러(210)로 전송할 수 있다. 비휘발성 메모리(220)가 비지 상태인 경우(즉, 비휘발성 메모리(220) 내부 동작들이 수행 중인 경우), 메모리 인터페이스 회로(212b)는 비지 상태를 나타내는 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(210)로 전송할 수 있다. 비휘발성 메모리(220)가 레디 상태인 경우(즉, 비휘발성 메모리(220) 내부 동작들이 수행되지 않거나 완료된 경우), 메모리 인터페이스 회로(212b)는 레디 상태를 나타내는 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(210)로 전송할 수 있다.
예를 들어, 비휘발성 메모리(220)가 페이지 리드 명령에 응답하여 메모리 셀 어레이(520)로부터 데이터(DATA)를 리드하는 동안, 메모리 인터페이스 회로(212b)는 비지 상태(예를 들어, 로우 레벨)를 나타내는 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(210)로 전송할 수 있다. 예를 들어, 비휘발성 메모리(220)가 프로그램 명령에 응답하여 메모리 셀 어레이(520)로 데이터(DATA)를 프로그램하는 동안, 메모리 인터페이스 회로(212b)는 비지 상태를 나타내는 레디/비지 출력 신호(nR/B)를 스토리지 컨트롤러(210)로 전송할 수 있다.
제어 로직 회로(510)는 비휘발성 메모리(220)의 각종 동작을 전반적으로 제어할 수 있다. 제어 로직 회로(510)는 메모리 인터페이스 회로(212b)로부터 획득된 커맨드/어드레스(CMD/ADDR)를 수신할 수 있다. 제어 로직 회로(510)는 수신된 커맨드/어드레스(CMD/ADDR)에 따라 비휘발성 메모리(220)의 다른 구성 요소들을 제어하기 위한 제어 신호들을 생성할 수 있다. 예를 들어, 제어 로직 회로(510)는 메모리 셀 어레이(520)에 데이터(DATA)를 프로그램하거나, 또는 메모리 셀 어레이(520)로부터 데이터(DATA)를 리드하기 위한 각종 제어 신호들을 생성할 수 있다.
메모리 셀 어레이(520)는 제어 로직 회로(510)의 제어에 따라 메모리 인터페이스 회로(212b)로부터 획득된 데이터(DATA)를 저장할 수 있다. 메모리 셀 어레이(520)는 제어 로직 회로(510)의 제어에 따라 저장된 데이터(DATA)를 메모리 인터페이스 회로(212b)로 출력할 수 있다.
메모리 셀 어레이(520)는 복수의 메모리 셀들을 포함할 수 있다. 예를 들어, 복수의 메모리 셀들은 플래시 메모리 셀들일 수 있다. 그러나, 본 발명은 이에 한정되지 않으며, 메모리 셀들은 RRAM(Resistive Random Access Memory) 셀, FRAM(Ferroelectric Random Access Memory) 셀, PRAM(Phase Change Random Access Memory) 셀, TRAM(Thyristor Random Access Memory) 셀, MRAM(Magnetic Random Access Memory) 셀들일 수 있다. 이하에서는, 메모리 셀들이 낸드(NAND) 플래시 메모리 셀들인 실시 예를 중심으로 본 발명의 실시 예들이 설명될 것이다.
스토리지 컨트롤러(210)는 제1 내지 제8 핀들(P21~P28), 및 컨트롤러 인터페이스 회로(212a)를 포함할 수 있다. 제1 내지 제8 핀들(P21~P28)은 비휘발성 메모리(220)의 제1 내지 제8 핀들(P11~P18)에 대응할 수 있다.
컨트롤러 인터페이스 회로(212a)는 제1 핀(P21)을 통해 비휘발성 메모리(220)로 칩 인에이블 신호(nCE)를 전송할 수 있다. 컨트롤러 인터페이스 회로(212a)는 칩 인에이블 신호(nCE)를 통해 선택한 비휘발성 메모리(220)와 제2 내지 제8 핀들(P22~P28)을 통해 신호들을 송수신할 수 있다.
컨트롤러 인터페이스 회로(212a)는 제2 내지 제4 핀들(P22~P24)을 통해 커맨드 래치 인에이블 신호(CLE), 어드레스 래치 인에이블 신호(ALE), 및 쓰기 인에이블 신호(nWE)를 비휘발성 메모리(220)로 전송할 수 있다. 컨트롤러 인터페이스 회로(212a)는 제7 핀(P27)을 통해 비휘발성 메모리(220)로 데이터 신호(DQ)를 전송하거나, 비휘발성 메모리(220)로부터 데이터 신호(DQ)를 수신할 수 있다.
컨트롤러 인터페이스 회로(212a)는 토글하는 쓰기 인에이블 신호(nWE)와 함께 커맨드(CMD) 또는 어드레스(ADDR)를 포함하는 데이터 신호(DQ)를 비휘발성 메모리(220)로 전송할 수 있다. 컨트롤러 인터페이스 회로(212a)는 인에이블 상태를 가지는 커맨드 래치 인에이블 신호(CLE)를 전송함에 따라 커맨드(CMD)를 포함하는 데이터 신호(DQ)를 비휘발성 메모리(220)로 전송하고, 인에이블 상태를 가지는 어드레스 래치 인에이블 신호(ALE)를 전송함에 따라 어드레스(ADDR)를 포함하는 데이터 신호(DQ)를 비휘발성 메모리(220)로 전송할 수 있다.
컨트롤러 인터페이스 회로(212a)는 제5 핀(P25)을 통해 비휘발성 메모리(220)로 읽기 인에이블 신호(nRE)를 전송할 수 있다. 컨트롤러 인터페이스 회로(212a)는 제6 핀(P26)을 통해 비휘발성 메모리(220)로부터 데이터 스트로브 신호(DQS)를 수신하거나, 비휘발성 메모리(220)로 데이터 스트로브 신호(DQS)를 전송할 수 있다.
비휘발성 메모리(220)의 데이터(DATA) 출력 동작에서, 컨트롤러 인터페이스 회로(212a)는 토글하는 읽기 인에이블 신호(nRE)를 생성하고, 읽기 인에이블 신호(nRE)를 비휘발성 메모리(220)로 전송할 수 있다. 예를 들어, 컨트롤러 인터페이스 회로(212a)는 데이터(DATA)가 출력되기 전에 고정된 상태(예를 들어, 하이 레벨 또는 로우 레벨)에서 토글 상태로 변경되는 읽기 인에이블 신호(nRE)를 생성할 수 있다. 이에 따라, 비휘발성 메모리(220)에서 읽기 인에이블 신호(nRE)에 기초하여 토글하는 데이터 스트로브 신호(DQS)가 생성될 수 있다. 컨트롤러 인터페이스 회로(212a)는 비휘발성 메모리(220)로부터 토글하는 데이터 스트로브 신호(DQS)와 함께 데이터(DATA)를 포함하는 데이터 신호(DQ)를 수신할 수 있다. 컨트롤러 인터페이스 회로(212a)는 데이터 스트로브 신호(DQS)의 토글 타이밍에 기초하여 데이터 신호(DQ)로부터 데이터(DATA)를 획득할 수 있다.
비휘발성 메모리(220)의 데이터(DATA) 입력 동작에서, 컨트롤러 인터페이스 회로(212a)는 토글하는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 예를 들어, 컨트롤러 인터페이스 회로(212a)는 데이터(DATA)를 전송하기 전에 고정된 상태(예를 들어, 하이 레벨 또는 로우 레벨)에서 토글 상태로 변경되는 데이터 스트로브 신호(DQS)를 생성할 수 있다. 컨트롤러 인터페이스 회로(212a)는 데이터 스트로브 신호(DQS)의 토글 타이밍들에 기초하여 데이터(DATA)를 포함하는 데이터 신호(DQ)를 비휘발성 메모리(220)로 전송할 수 있다.
컨트롤러 인터페이스 회로(212a)는 제8 핀(P28)을 통해 비휘발성 메모리(220)로부터 레디/비지 출력 신호(nR/B)를 수신할 수 있다. 컨트롤러 인터페이스 회로(212a)는 레디/비지 출력 신호(nR/B)에 기초하여 비휘발성 메모리(220)의 상태 정보를 판별할 수 있다.
도 3은 도 1의 멀티 코어 프로세서를 도시한 도면이다. 도 4는 도 1의 태스크 리스트를 도시한 도면이다. 도 5는 도 1의 ETS(Execution Time Stamp) 테이블을 도시한 도면이다. 도 6은 도 1의 TDT(Task Duration Time) 테이블을 도시한 도면이다.
도 1 및 도 3을 참조하면, 멀티 코어 프로세서(213)는 n(n은 2 이상의 자연수) 개의 코어를 포함할 수 있다.
각각의 코어는, 연산 유닛(2131a), SRAM(2131b), ITCM(Instruction Tightly Coupled Memory, 2131c)을 포함할 수 있다. 몇몇 실시예에서, 각각의 코어는, 코드 로더(2131d), 패킷 수신기(2131e) 및 태스크 요청기(1231f)를 더 포함할 수 있다.
연산 유닛(2131a)은 ITCM(2131c)에 로드된 코드에 따라 연산을 수행할 수 있다. SRAM(2131b)에는 이러한 연산을 수행하는데 필요한 데이터가 저장될 수 있다.
코드 로더(2131d)는 외부로부터 코어가 수행해야할 태스크의 코드를 제공받고 이를 ITCM(2131c)에 로딩할 수 있다. 패킷 수신기(2131e)는 외부로부터 코어의 동작에 관한 패킷을 수신할 수 있다. 태스크 요청기(1231f)는 코어에 이슈된(issued) 태스크의 처리가 완료되면, 후속 태스크를 요청하는 신호를 전송할 수 있다.
설명의 편의를 위해, 도 3에서는 각각의 코어가 코드 로더(2131d), 패킷 수신기(2131e) 및 태스크 요청기(1231f)를 포함하는 것으로 도시하였으나, 실시예들이 이에 제한되는 것은 아니다. 몇몇 실시예에서, 코드 로더(2131d), 패킷 수신기(2131e) 및 태스크 요청기(1231f)는 예를 들어, 소프트웨어로 구현되어 각각의 코어를 제어하는 방식으로 실시예가 구현될 수 있다. 또한 몇몇 실시예에서, 코드 로더(2131d), 패킷 수신기(2131e) 및 태스크 요청기(1231f)는는 코어와 별도로 구현될 수도 있다.
다시 도 1을 참조하면, 태스크 스케쥴러(219)는 호스트 인터페이스(211)를 통해 수신되는 커맨드에 대응하여 비휘발성 메모리(220)에 제공할 커맨드를 생성하는데 필요한 태스크들을 생성하고, 멀티 코어 프로세서(213)를 통해 생성된 태스크들이 처리되도록 제어할 수 있다.
구체적으로, 태스크 스케쥴러(219)는 호스트 인터페이스(211)를 통해 수신되는 커맨드로부터 복수의 태스크를 생성하고, 태스크 수행 시간 테이블(291b)과, 수행 시간 스템프 테이블(219c)을 이용하여 복수의 태스크를 처리할 코어를 선택함으로써, 복수의 태스크들이 멀티 코어 프로세서(213)를 통해 처리되도록 제어할 수 있다. 복수의 태스크들이 처리되어 생성된 커맨드는 앞서 도 2를 참조하여 설명한 방식으로 비휘발성 메모리(220)에 제공될 수 있다.
태스크 스케쥴러(219)는 태스크 리스트(219a), 수행 시간 스탬프(ETS; Execution Time Stamp) 테이블(219b), 태스크 수행 시간(TDT; Task Duration Time) 테이블(219c)을 이용하여 동작할 수 있다.
도 1 및 도 4를 참조하면, 태스크 리스트(219a)는 호스트 인터페이스(211)를 통해 호스트(100)로부터 수신되는 커맨드에 대응하여 비휘발성 메모리(220)에 제공할 커맨드를 생성하는데 필요한 m(m은 자연수)개의 태스크들을 포함할 수 있다. 여기서, 각 태스크는 ID(TID)를 통해 서로 구분될 수 있으며, 서로 종속성을 가질 수 있다.
예를 들어, 태스크 2(TID2)는 태스크 1(TID1)이 완료되어야 처리가 가능한 태스크이고, 태스크 4(TID4)는 태스크 1 내지 3(TID1~TID3)이 모두 완료되어야 처리가 가능한 태스크일 수 있다.
도 1 및 도 5를 참조하면, ETS 테이블(219b)은 특정 시점에서 멀티 코어 프로세서(213)에 포함된 각 코어의 수행 시간(E1~EN)을 포함할 수 있다. 따라서, 태스크 스케쥴러(219)는 ETS 테이블(219b)을 참조하여, 특정 시점에서의 멀티 코어 프로세서(213)에 포함된 각 코어의 수행 시간(E1~EN)을 확인할 수 있다.
도 1 및 도 6을 참조하면, TDT 테이블(219c)은, 태스크 리스트(219a)에 저장된 각 태스크(TID1~TIDM) 별로 그 처리 완료되는데 필요한 소요 시간을 포함할 수 있다. 도 6에서, 태스크 1(TID1)은 그 처리가 완료되는데 T1의 시간이 필요하고, 태스크 2(TID2)는 그 처리가 완료되는데 T2의 시간이 필요한 것으로 지시되어 있다.
몇몇 실시예에서, 태스크 스케쥴러(219)는 예를 들어, 소프트웨어로 구현되어 멀티 코어 프로세서(213)에 포함된 각각의 코어에 태스크를 스케쥴링할 수 있다. 이 경우, 앞서 설명한 태스크 리스트(219a), ETS 테이블(219b) 및 TDT 테이블(219c)은 도 1에 도시된 버퍼 메모리(216) 또는 도시되지 않은 스토리지 컨트롤러(210)의 내부 메모리, 또는 도시되지 않은 스토리지 컨트롤러(210)의 외부 메모리 등에 저장될 수 있다.
이하, 도 7 내지 도 15를 참조하여, 몇몇 실시예에 따른 스토리지 장치의 동작에 대해 설명한다.
도 7은 몇몇 실시예에 따른 스토리지 장치의 동작을 도시한 순서도이다. 도 8 내지 도 15는 몇몇 실시예에 따른 스토리지 장치의 동작을 설명하기 위한 도면들이다.
도 7을 참조하면, 호스트로부터 메모리 커맨드가 스토리지 컨트롤러에 제공된다(S100).
구체적으로, 도 1 및 도 8을 참조하면, 호스트 인터페이스(211)는 비휘발성 메모리(220)에 대한 메모리 동작(memory operation) 수행을 요청하는 메모리 커맨드를 제공받을 수 있다.
여기서, 메모리 동작은 예를 들어, 논리 주소로 어드레싱되는 비휘발성 메모리(220)의 비휘발성 메모리 셀에 저장된 데이터를 리드(read)하는 동작과, 논리 주소로 어드레싱되는 비휘발성 메모리(220)의 비휘발성 메모리 셀에 데이터를 라이트(write)하는 라이트 동작과, 논리 주소로 어드레싱되는 비휘발성 메모리(220)의 특정 블록을 이레이즈(erase)하는 이레이즈 동작을 포함할 수 있다. 하지만, 실시예들이 이에 제한되는 것은 아니며, 비휘발성 메모리(220)에 대한 메모리 동작의 예는 얼마든지 변형되어 실시될 수 있다.
이하에서는, 호스트(100)가 스토리지 장치(200)에 제공하는 메모리 커맨드로, 논리 주소로 어드레싱되는 비휘발성 메모리(220)의 비휘발성 메모리 셀에 저장된 데이터를 리드할 것을 요청하는 리드 커맨드를 예를 들어 설명할 것이나, 실시예들이 이러한 예시에 제한되는 것은 아니다.
다음, 제공받은 리드 커맨드에 대응하는 태스크들을 생성한다(S110).
구체적으로, 도 1 및 도 8을 참조하면, 스토리지 컨트롤러(210)의 태스크 스케쥴러(219)는, 호스트(100)로부터 제공받은 리드 커맨드에 대응하여 비휘발성 메모리(220)에 전송하는 리드 커맨드를 생성하는데 필요한 태스크들을 생성할 수 있다.
이러한 예로서, 제1 태스크(Task1)는 호스트(100)로부터 제공받은 논리 어드레스(LA; Logical Address)를 비휘발성 메모리(200)에서 사용되는 물리 어드레스(PA; Physical Address)로 매핑하는 어드레스 매핑(L2P) 태스크를 포함하고, 제2 태스크(Task2)는 비휘발성 메모리(220)의 비휘발성 메모리 셀에 인가하는 리드 전압의 레벨을 결정하는 태스크를 포함할 수 있다.
이러한 예시는 하나의 실시예에 불과하며, 태스크 스케쥴러(219)는 호스트(100)로부터 제공받은 리드 커맨드에 대응하여 비휘발성 메모리(220)에 전송하는 리드 커맨드를 생성하는데 필요한 Q(Q는 자연수) 개의 태스크들을 생성할 수 있다.
다음, 도 7을 참조하면, 태스크 요청을 수신한다(S120).
구체적으로, 도 1을 참조하면, 스토리지 컨트롤러(210)의 태스크 스케쥴러(219)는, 할당된 태스크 처리가 완료된 멀티 코어 프로세서(213)의 코어로부터 태스크의 할당을 요청하는 태스크 요청을 수신할 수 있다.
다음, 도 7을 참조하면, 태스크 수행 시간을 탐색한다(S130).
구체적으로, 도 1 및 도 9를 참조하면, 스토리지 컨트롤러(210)의 태스크 스케쥴러(219)는, 각 태스크 간의 종속성(dependency)을 고려하여 할당이 필요한 태스크들을 태스크 리스트(도 4의 219a)로부터 추출한다. 이하에서는 태스크 스케쥴러(219)가 태스크1(TID1)과 태스크2(TID2)를 추출한 경우를 예로 들어 설명한다. 하지만, 실시예들이 이에 제한되는 것은 아니며, 실시예는 얼마든지 변형되어 실시될 수 있다.
태스크 스케쥴러(219)는, 태스크1(TID1)과 태스크2(TID2)의 수행 시간을 TDT 테이블(219c)에서 확인한다. 도 9에 도시된 예에서, 태스크 스케쥴러(219)는, 태스크1(TID1)과 태스크2(TID2)의 수행 시간이 40임을 확인한다.
다음, 도 7을 참조하면, 태스크 수행 시간 테이블과 수행 시간 스탬프 테이블을 고려하여 코어를 선택한다(S140).
구체적으로, 도 1 및 도 10을 참조하면, 태스크 스케쥴러(219)는, ETS 테이블(219b)을 확인하여 현재 시점에서 코어1의 수행시간이 가장 작음을 확인한다. 만약, 예를 들어, 태스크2(TID2)가 태스크1(TID1)에 종속성이 있는 경우, 태스크 스케쥴러(219)는, 현재 시점에서 수행시간이 가장 작은 코어1에 태스크1(TID1)과 태스크2(TID2)를 모두 할당할 수 있다.
만약, 예를 들어, 태스크2(TID2)와 태스크1(TID1) 간에 종속성이 없는 경우, 태스크 스케쥴러(219)는, 현재 시점에서 수행시간이 가장 작은 코어1에 태스크1(TID1)을 할당한다고 가정하고, 각 코어별 수행시간을 다시 계산한다. 그리고, 수행시간이 가장 작은 코어에 태스크2(TID2)를 할당할 수 있다.
본 예에서는 코어1에 태스크1(TID1)를 할당하고 난 후 코어1의 수행시간이 30이되는데, 이는 다른 코어들의 수행시간 중 최저 값이된다. 따라서, 태스크 스케쥴러(219)는, 코어1에 태스크1(TID1)과 태스크2(TID2)를 모두 할당할 수 있다.
다음, 도 7을 참조하면, ETS 테이블을 업데이트한다(S150).
구체적으로, 도 1 및 도 11을 참조하면, 태스크 스케쥴러(219)는, 태스크1(TID1)과 태스크2(TID2)가 할당된 코어1의 수행시간을 60으로 업데이트 한다.
다음, 도 7을 참조하면, 태스크 1과 태스크 2를 코어1에 이슈한다(S160).
구체적으로, 도 1 및 도 12를 참조하면, 태스크 스케쥴러(219)는, 태스크1(TID1)과 태스크2(TID2)를 코어1의 패킷 수신기(2131e)에 제공하여, 코어1에 태스크1(TID1)과 태스크2(TID2)를 이슈(issuing)한다.
다음, 도 7을 참조하면, 태스크1(TID1) 처리에 필요한 코드를 로딩한다(S170).
구체적으로, 도 1 및 도 13을 참조하면, 코어1의 코드 로더(2131d)는 외부로부터 코어1이 처리해야할 태스크1(TID1)의 코드를 제공받고 이를 ITCM(2131c)에 로딩할 수 있다. 몇몇 실시예에서, 태스크 처리에 필요한 코드들은 앞서 설명한 예를 들어, 버퍼 메모리(216)에 저장될 수 있으나, 실시예들이 이에 제한되는 것은 아니다.
태스크1(TID1)의 코드가 ITCM(2131c)에 로딩되면 코어1은 연산 유닛(2131a)과 SRAM(2131b)을 이용하여 태스크1(TID1)를 처리한다.
다음, 도 7을 참조하면, 태스크1(TID1)의 처리가 완료되면 후속 태스크에 대한 요청을 전송한다(S180). 그리고, 태스크2(TID2) 처리에 필요한 코드를 로딩한다(S190).
구체적으로, 도 1 및 도 14를 참조하면, 코어1의 태스크 요청기(1231f)는 태스크1(TID1)의 처리가 완료된 경우, 태스크 스케쥴러(219)에 후속 태스크의 할당을 요청한다. 그리고, 태스크 요청기(1231f)가 태스크 스케쥴러(219)에 후속 태스크의 할당을 요청하는 동안, 코어1의 코드 로더(2131d)는 예를 들어, 버퍼 메모리(216)로부터 코어1이 처리해야할 태스크2(TID2)의 코드를 제공받고 이를 ITCM(2131c)에 로딩한다. 즉, 코어1의 코드 로더(2131d)는 새로운 태스크가 이슈될 때를 기다려 태스크 수행에 필요한 코드를 로딩하는 것이 아니라, 태스크 요청기(1231f)가 태스크 스케쥴러(219)에 후속 태스크의 할당을 요청하는 동안, 처리가 예정된 태스크에 대한 코드를 로딩한다.
다음, 도 7을 참조하면, 태스크2(TID2)를 처리한다(S200).
구체적으로, 도 1 및 도 14를 참조하면, 태스크2(TID2)의 코드가 ITCM(2131c)에 로딩되면 코어1은 연산 유닛(2131a)과 SRAM(2131b)을 이용하여 태스크2(TID2)를 처리한다.
다음, 도 7을 참조하면, 태스크들의 처리 결과를 바탕으로 비휘발성 메모리에 제공할 리드 커맨드를 생성한다(S210).
구체적으로, 도 1 및 도 15를 참조하면, 스토리지 컨트롤러(210)는 태스크1(TID1)의 처리 결과를 기초로 호스트(100)로부터 제공받은 논리 어드레스에 대응되는 물리 어드레스를 확인하고, 태스크2(TID2)의 처리 결과를 기초로 리드 전압 레벨을 결정하여, 비휘발성 메모리(220)에 제공할 리드 커맨드를 생성할 수 있다. 이 때, 스토리지 컨트롤러(210)로부터 비휘발성 메모리(220)에 제공되는 리드 커맨드는, 앞서 호스트(100)로부터 스토리지 컨트롤러(210)에 제공된 리드 커맨드와 달리, 물리 어드레스와 리드 전압 레벨 정보를 포함할 수 있다.
물론, 이러한 예시는 하나의 실시예에 불과하며, 스토리지 컨트롤러(210)는 Q개의 태스크들의 처리 결과를 기초로 스토리지 컨트롤러(210)로부터 비휘발성 메모리(220)에 제공되는 리드 커맨드를 생성할 수도 있다.
다음, 도 7을 참조하면, 생성된 리드 커맨드를 비휘발성 메모리에 전송한다(S220).
스토리지 컨트롤러(220)는 생성된 리드 커맨드를 앞서 도 2를 참조하여 설명한 방식으로 비휘발성 메모리(220)에 제공할 수 있다. 구체적으로, 스토리지 컨트롤러(220)는 토글하는 쓰기 인에이블 신호(도 2의 nWE)와 함께 생성된 리드 커맨드, 생성된 물리 어드레스를 포함하는 데이터 신호(도 2의 DQ)를 비휘발성 메모리(220)로 전송할 수 있다.
이상에서 설명한 본 실시예에 따른 스토리지 장치에서는, 태스크 스케쥴러가 태스크를 할당할 때 마다 각 코어의 수행 시간을 전체적으로 관리하여 가장 효율적인 태스크 처리가 가능한 코어에 태스크를 할당한다. 그리고, 각 코어는 이슈된 태스크 처리를 완료한 후 다음 태스크가 이슈될 때까지 아이들(idle) 상태를 유지하는 것이 아니라, 후속 태스크를 태스크 스케쥴러에 요청하는 동안 해당 코어에서 처리가 예정된 태스크에 대한 코드 로딩을 같이 수행한다. 따라서, 코어 사용의 효율성이 크게 향상될 수 있으며, 스토리지 장치의 동작 속도가 향상될 수 있다.
이상에서는 호스트(100)로부터 수신되는 커맨드에 대응하여, 스토리지 컨트롤러(210)가 비휘발성 메모리(220)에 제공할 커맨드를 생성하는데 필요한 m개의 태스크들을 스케쥴링하는 동작을 예로 들어 본 발명의 기술적 사상에 따른 실시예들을 설명하였으나, 실시예들이 이러한 예시에 제한되는 것은 아니다.
몇몇 실시예에서, 스토리지 컨트롤러(210)는 호스트(100)로부터 수신되는 복수의 커맨드에 대응하는 k개의 태스크들을 스케쥴링할 때, 앞서 설명한 방법을 이용할 수 있다. 예를 들어, 스토리지 컨트롤러(210)는 호스트(100)로부터 수신한 제1 리드 커맨드에 대한 제1 태스크와 호스트(100)로부터 수신한 제2 리드 커맨드에 대한 제2 태스크를 스케쥴링할 때, 앞서 설명한 방법을 이용하여 제1 및 제2 태스크를 스케쥴링할 수 있다.
도 16은 몇몇 실시예에 따른 TDT(Task Duration Time) 테이블을 도시한 도면이다.
도 1, 도 2 및 도 16을 참조하면, 제1 태스크(T1)는 호스트(100)로부터 수신한 제1 리드 커맨드를 처리하기 위한 태스크이고, 제2 태스크(T2)는 호스트(100)로부터 수신한 제2 리드 커맨드를 처리하기 위한 태스크이며, 제k 태스크(Tk)는 호스트(100)로부터 수신한 제2 리드 커맨드를 처리하기 위한 태스크이다.
제1 태스크(T1)가 처리 완료되는데 필요한 소요 시간은 T1이고, 제2 태스크(T2)가 처리 완료되는데 필요한 소요 시간은 T2이고, 제k 태스크(Tk)가 처리 완료되는데 필요한 소요 시간은 Tk이다.
호스트(100)로부터 수신한 제1 리드 커맨드가 메모리 셀 어레이(520)의 제1 메모리 셀에 저장된 데이터를 리드하는 리드 커맨드이고, 호스트(100)로부터 수신한 제2 리드 커맨드가 메모리 셀 어레이(520)의 제2 메모리 셀에 저장된 데이터를 리드하는 리드 커맨드일 경우, 제2 태스크(T2)가 처리 완료되는데 필요한 소요 시간인 T2는 제1 메모리 셀과 제2 메모리 셀의 위치에 따라 변경될 수 있다.
예를 들어, 메모리 셀 어레이(520) 내에서 제1 메모리 셀 과 제2 메모리 셀이 인접한 경우의 제2 태스크(T2)가 처리 완료되는데 필요한 소요 시간인 T2는, 제1 메모리 셀 과 제2 메모리 셀이 인접하지 않은 경우의 제2 태스크(T2)가 처리 완료되는데 필요한 소요 시간인 T2에 비해 로컬리티(locality) 특성으로 인해 더 작을 수 있다.
즉, 태스크 수행 시간 테이블(219d)에 포함된 태스크들의 처리 완료 시간(T1∼Tk)은 비휘발성 메모리(220)의 내부 동작 수행 여부, 비휘발성 메모리(220)의 상태(state), 메모리 인터페이스(212)의 상태, 앞서 설명한 호스트(100)로부터 수신되는 커맨드 간의 관계 등이 고려되어 변경될 수 있다.
또한, 이상에서는 호스트(100)로부터 수신되는 서로 다른 커맨드들로부터 생성되는 태스크들을 예로 들어 설명하였으나, 앞서 도 6을 참조하여 설명한 하나의 커맨드로부터 생성되는 태스크들의 처리 완료 시간(T1∼Tm)도 비휘발성 메모리(220)의 내부 동작 수행 여부, 비휘발성 메모리(220)의 상태, 메모리 인터페이스(212)의 상태 등이 고려되어 변경될 수 있다.이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였으나, 본 발명은 상기 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 제조될 수 있으며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 호스트
200: 스토리지 장치
210: 스토리지 컨트롤러
213: 멀티 코어 프로세서
219: 태스크 스케쥴러
220: 비휘발성 메모리
200: 스토리지 장치
210: 스토리지 컨트롤러
213: 멀티 코어 프로세서
219: 태스크 스케쥴러
220: 비휘발성 메모리
Claims (10)
- 복수의 비휘발성 메모리 셀을 포함하는 비휘발성 메모리와, 호스트 인터페이스와, 제1 및 제2 코어를 포함하는 멀티 코어 프로세서와, 태스크 스케쥴러(task scheduler)를 포함하는 스토리지 장치를 제공하고,
상기 호스트 인터페이스가, 호스트로부터 상기 비휘발성 메모리에 대해 미리 정한 메모리 동작(memory operation) 수행을 요청하는 제1 메모리 커맨드를 제공받고,
상기 태스크 스케쥴러가, 상기 제1 메모리 커맨드로부터 제1 및 제2 태스크를 생성하고,
상기 태스크 스케쥴러가, 상기 제1 코어와 상기 제2 코어의 수행시간을 검토하여 상기 제1 및 제2 태스크를 할당할 코어로 상기 제1 코어와 상기 제2 코어 중 상기 제1 코어를 선택하고,
상기 태스크 스케쥴러가, 상기 제1 및 제2 태스크를 상기 제1 코어에 이슈하고,
상기 제1 코어가 상기 이슈된 제1 태스크를 처리한 후, 상기 태스크 스케쥴러에 후속 태스크를 요청하는 것을 포함하되,
상기 제1 코어가 상기 이슈된 제1 태스크를 처리한 후, 상기 태스크 스케쥴러에 후속 태스크를 요청하는 동안 상기 제2 태스크를 처리하기 위한 코드가 상기 제1 코어에 로드되는 스토리지 장치의 구동 방법. - 제1항에 있어서,
상기 스토리지 장치는 상기 비휘발성 메모리와 연결된 메모리 인터페이스를 더 포함하고,
상기 제1 및 제2 태스크의 처리가 완료되어 생성된 상기 제1 메모리 커맨드에 대응되는 제2 메모리 커맨드는 상기 메모리 인터페이스를 통해 상기 비휘발성 메모리에 제공되는 스토리지 장치의 구동 방법. - 제1항에 있어서,
상기 제1 메모리 커맨드는, 제1 논리 주소로 어드레싱되는 상기 비휘발성 메모리 셀의 데이터를 리드하는 리드 커맨드를 포함하고,
상기 제1 태스크는, 상기 제1 논리 주소에 대응되는 제1 물리 주소를 탐색하는 태스크를 포함하고,
상기 제2 태스크는, 상기 제1 물리 주소로 어드레싱되는 상기 비휘발성 메모리 셀에 저장된 데이터를 리드하기 위한 리드 전압을 결정하는 태스크를 포함하는 스토리지 장치의 구동 방법. - 제1항에 있어서,
상기 호스트 인터페이스가, 호스트로부터 상기 비휘발성 메모리에 대해 미리 정한 메모리 동작 수행을 요청하는 상기 제1 메모리 커맨드와 다른 제2 메모리 커맨드를 제공받고,
상기 태스크 스케쥴러가, 상기 제2 메모리 커맨드로부터 제3 태스크를 생성하고,
상기 태스크 스케쥴러가, 상기 제3 태스크의 수행 시간을 확인하고, 상기 제3 태스크의 수행 시간을 기초로 상기 제1 코어와 상기 제2 코어의 수행시간을 검토하여 상기 제3 태스크를 할당할 코어로 상기 제1 코어와 상기 제2 코어 중 어느 하나를 선택하는 것을 포함하되,
상기 제1 메모리 커맨드는 상기 복수의 휘발성 메모리 셀 중 제1 메모리 셀의 데이터를 리드하는 제1 리드 커맨드를 포함하고,
상기 제2 메모리 커맨드는 상기 복수의 휘발성 메모리 셀 중 제2 메모리 셀의 데이터를 리드하는 제2 리드 커맨드를 포함하고,
상기 제3 태스크의 수행 시간은 상기 제1 메모리 셀과 상기 제2 메모리 셀의 위치에 따라 변경되는 스토리지 장치의 구동 방법. - 복수의 비휘발성 메모리 셀을 포함하는 비휘발성 메모리와, 상기 비휘발성 메모리와 연결되는 메모리 인터페이스와, 호스트와 연결되는 호스트 인터페이스와, 제1 및 제2 코어를 포함하는 멀티 코어 프로세서와, 태스크 스케쥴러를 포함하는 스토리지 장치를 제공하고,
상기 호스트 인터페이스가, 상기 호스트로부터 상기 비휘발성 메모리에 대해 미리 정한 메모리 동작(memory operation) 수행을 요청하는 제1 메모리 커맨드를 제공받고,
상기 태스크 스케쥴러가, 상기 제1 메모리 커맨드로부터 제1 태스크를 생성하고,
상기 태스크 스케쥴러가, 상기 제1 태스크의 수행 시간을 확인하고,
상기 태스크 스케쥴러가, 상기 확인된 제1 태스크의 수행 시간을 기초로 상기 제1 코어와 상기 제2 코어의 수행시간을 검토하여 상기 제1 태스크를 할당할 코어로 상기 제1 코어와 상기 제2 코어 중 상기 제1 코어를 선택하고,
상기 태스크 스케쥴러가, 상기 제1 태스크의 수행 시간을 고려하여 상기 제1 코어의 수행 시간을 업데이트하고,
상기 태스크 스케쥴러가, 상기 제1 태스크를 상기 제1 코어에 이슈하고,
스토리지 컨트롤러가, 상기 제1 태스크의 처리가 완료되어 생성된 상기 제1 메모리 커맨드에 대응되는 제2 메모리 커맨드를 상기 메모리 인터페이스를 통해 상기 비휘발성 메모리에 제공하는 것을 포함하는 스토리지 장치의 구동 방법. - 제5항에 있어서,
상기 태스크 스케쥴러가, 제2 태스크를 상기 제1 코어에 이슈하고,
상기 제1 코어가 상기 이슈된 제1 태스크를 처리한 후, 상기 태스크 스케쥴러에 후속 태스크를 요청하는 것을 더 포함하되,
상기 제1 코어가 상기 이슈된 제1 태스크를 처리한 후, 상기 태스크 스케쥴러에 후속 태스크를 요청하는 동안, 상기 제2 태스크를 처리하기 위한 코드가 상기 제1 코어에 로드되는 스토리지 장치의 구동 방법. - 복수의 비휘발성 메모리 셀을 포함하는 비휘발성 메모리;
호스트로부터 상기 비휘발성 메모리에 대해 미리 정한 메모리 동작(memory operation) 수행을 요청하는 제1 메모리 커맨드를 제공받는 호스트 인터페이스;
복수의 코어를 포함하는 멀티 코어 프로세서;
상기 제1 메모리 커맨드로부터 복수의 태스크를 생성하고, 상기 복수의 태스크 각각의 처리 시간이 저장된 태스크 수행 시간 테이블과, 상기 복수의 코어 각각의 수행 시간이 저장된 수행 시간 스템프 테이블을 이용하여 상기 복수의 태스크를 처리할 코어를 선택하는 태스크 스케쥴러;
상기 복수의 코어에 의해 처리된 상기 복수의 태스크를 기초로 생성된 상기 제1 메모리 커맨드에 대응하는 제2 메모리 커맨드를 상기 비휘발성 메모리에 출력하는 메모리 인터페이스를 포함하는 스토리지 장치. - 제7항에 있어서,
상기 메모리 인터페이스는,
토글하는 쓰기 인에이블 신호와 상기 제2 메모리 커맨드를 포함하는 데이터 신호를 상기 비휘발성 메모리로 전송하는 스토리지 장치. - 제7항에 있어서,
상기 복수의 태스크는 제1 및 제2 태스크를 포함하고,
상기 태스크 스케쥴러는 상기 제1 및 제2 태스크를 처리할 코어로 상기 복수의 코어 중 제1 코어를 선택하고,
상기 제1 코어가 상기 태스크 스케쥴러에 후속 태스크를 요청하는 동안, 상기 제2 태스크를 처리하기 위한 코드가 상기 제1 코어에 로드되는 스토리지 장치. - 제7항에 있어서,
상기 복수의 태스크는 제1 태스크를 포함하고,
상기 태스크 스케쥴러는,
상기 제1 태스크의 처리 시간을 상기 태스크 수행 시간 테이블에서 확인하고,
상기 수행 시간 스템프 테이블에서 수행 시간이 가장 작은 제1 코어를 상기 제1 태스크를 처리할 코어로 선택하고,
상기 제1 태스크를 상기 제1 코어에 이슈하고,
상기 수행 시간 스템프 테이블을 업데이트 하는 스토리지 장치.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200185982A KR20220094601A (ko) | 2020-12-29 | 2020-12-29 | 스토리지 장치 및 그 구동 방법 |
US17/477,865 US11861227B2 (en) | 2020-12-29 | 2021-09-17 | Storage device with task scheduler and method for operating the device |
CN202111589117.4A CN114691029A (zh) | 2020-12-29 | 2021-12-23 | 存储装置和操作存储装置的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020200185982A KR20220094601A (ko) | 2020-12-29 | 2020-12-29 | 스토리지 장치 및 그 구동 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20220094601A true KR20220094601A (ko) | 2022-07-06 |
Family
ID=82117049
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200185982A KR20220094601A (ko) | 2020-12-29 | 2020-12-29 | 스토리지 장치 및 그 구동 방법 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11861227B2 (ko) |
KR (1) | KR20220094601A (ko) |
CN (1) | CN114691029A (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102599116B1 (ko) * | 2023-02-20 | 2023-11-07 | 서강대학교산학협력단 | 데이터 중복 제거 방법 및 데이터 중복 제거를 수행하는 스토리지 장치 |
US12079661B2 (en) | 2022-11-04 | 2024-09-03 | Rebellions Inc. | Processing device and method for managing tasks thereof |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230121841A1 (en) * | 2021-10-19 | 2023-04-20 | EMC IP Holding Company LLC | Facilitating per-cpu reference counting for multi-core systems with a long-lived reference |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6959372B1 (en) | 2002-02-19 | 2005-10-25 | Cogent Chipware Inc. | Processor cluster architecture and associated parallel processing methods |
JP5733860B2 (ja) | 2008-07-10 | 2015-06-10 | ロケティック テクノロジーズ リミテッド | 依存問題の効率的並列計算 |
JP2010079622A (ja) | 2008-09-26 | 2010-04-08 | Hitachi Ltd | マルチコアプロセッサシステム、および、そのタスク制御方法 |
US8234431B2 (en) | 2009-10-13 | 2012-07-31 | Empire Technology Development Llc | Interrupt masking for multi-core processors |
JP2011233057A (ja) | 2010-04-30 | 2011-11-17 | Renesas Electronics Corp | マルチプロセッサシステム、マルチプロセッサの制御方法およびマルチプロセッサの制御方法のプログラム |
US8782645B2 (en) | 2011-05-11 | 2014-07-15 | Advanced Micro Devices, Inc. | Automatic load balancing for heterogeneous cores |
JP5971334B2 (ja) | 2012-04-18 | 2016-08-17 | 日本電気株式会社 | タスク配置装置、タスク配置方法、および、コンピュータ・プログラム |
KR20140006351A (ko) | 2012-07-04 | 2014-01-16 | 전남대학교산학협력단 | 예상 실행 시간 정보를 이용하여 작업을 분배하는 이종 멀티코어 프로세서 시스템의 작업 분배 방법 및 그 방법을 이용하는 이종 멀티코어 프로세서 시스템 |
JP6546235B2 (ja) * | 2017-09-15 | 2019-07-17 | 株式会社日立製作所 | ストレージシステム |
US10684861B2 (en) * | 2017-09-25 | 2020-06-16 | International Business Machines Corporation | Enhanced performance-aware instruction scheduling |
US11301393B2 (en) * | 2018-12-17 | 2022-04-12 | SK Hynix Inc. | Data storage device, operation method thereof, and storage system including the same |
US11435947B2 (en) | 2019-07-02 | 2022-09-06 | Samsung Electronics Co., Ltd. | Storage device with reduced communication overhead using hardware logic |
-
2020
- 2020-12-29 KR KR1020200185982A patent/KR20220094601A/ko unknown
-
2021
- 2021-09-17 US US17/477,865 patent/US11861227B2/en active Active
- 2021-12-23 CN CN202111589117.4A patent/CN114691029A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12079661B2 (en) | 2022-11-04 | 2024-09-03 | Rebellions Inc. | Processing device and method for managing tasks thereof |
KR102599116B1 (ko) * | 2023-02-20 | 2023-11-07 | 서강대학교산학협력단 | 데이터 중복 제거 방법 및 데이터 중복 제거를 수행하는 스토리지 장치 |
WO2024177187A1 (ko) * | 2023-02-20 | 2024-08-29 | (주)글루시스 | 데이터 중복 제거 방법 및 데이터 중복 제거를 수행하는 스토리지 장치 |
Also Published As
Publication number | Publication date |
---|---|
US20220206714A1 (en) | 2022-06-30 |
US11861227B2 (en) | 2024-01-02 |
CN114691029A (zh) | 2022-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102147359B1 (ko) | 비휘발성 메모리 장치의 관리 방법 및 비휘발성 메모리 장치 | |
KR20220094601A (ko) | 스토리지 장치 및 그 구동 방법 | |
KR101734200B1 (ko) | 적응적 머지를 수행하는 메모리 시스템 및 그것의 데이터 쓰기 방법 | |
US11126602B2 (en) | Key-value storage device and operating method thereof | |
US11709632B2 (en) | Input/output size control between a host system and a memory sub-system | |
US11630766B2 (en) | Memory system and operating method thereof | |
US12050809B2 (en) | Multi-pass data programming in a memory sub-system having multiple dies and planes | |
KR102692901B1 (ko) | 메모리 시스템에서의 비휘발성 메모리 블록 내 데이터를 삭제하는 방법 및 장치 | |
WO2014013595A1 (ja) | 半導体装置 | |
KR102559549B1 (ko) | 메모리 시스템에서의 블록 상태를 관리하는 방법 및 장치 | |
KR20220069543A (ko) | 스토리지 장치, 스토리지 컨트롤러 및 이를 포함하는 스토리지 시스템 | |
US20240036768A1 (en) | Partial Execution of a Write Command from a Host System | |
CN115437973A (zh) | 多平面存储器装置中的并发页高速缓存资源存取 | |
CN114631083A (zh) | 供处理器进行存储器存取的生存时间 | |
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 | |
KR20220094726A (ko) | 메모리 컨트롤러, 비휘발성 메모리 장치 및 그 스토리지 장치 | |
JP2023044471A (ja) | メモリシステム及びメモリ制御方法 | |
KR20220106307A (ko) | 스토리지 장치 및 그 구동 방법 |