KR20210051718A - 데이터 저장 장치 및 그것의 동작 방법 - Google Patents

데이터 저장 장치 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20210051718A
KR20210051718A KR1020190137342A KR20190137342A KR20210051718A KR 20210051718 A KR20210051718 A KR 20210051718A KR 1020190137342 A KR1020190137342 A KR 1020190137342A KR 20190137342 A KR20190137342 A KR 20190137342A KR 20210051718 A KR20210051718 A KR 20210051718A
Authority
KR
South Korea
Prior art keywords
job
priority
processor
jobs
data storage
Prior art date
Application number
KR1020190137342A
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 KR1020190137342A priority Critical patent/KR20210051718A/ko
Priority to US16/852,228 priority patent/US11573824B2/en
Priority to CN202010671621.8A priority patent/CN112749006B/zh
Publication of KR20210051718A publication Critical patent/KR20210051718A/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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • G06F13/26Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
    • 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/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/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/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/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4818Priority circuits therefor
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5021Priority
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Multi Processors (AREA)

Abstract

본 발명의 실시 예에 따른 데이터 저장 장치는 복수의 호스트 프로세서로부터 전송되는 복수의 잡(job)을 큐잉하는 공유 커맨드 큐; 복수의 잡을 우선순위 문턱값에 따라 복수 레벨의 잡으로 구분하고, 구분된 복수 레벨의 잡을 프로세서로 할당하는 큐 컨트롤러; 큐 컨트롤러로부터 전송되는 잡을 처리하는 프로세서; 및 메모리를 포함할 수 있다.

Description

데이터 저장 장치 및 그것의 동작 방법{Data storage device and operating method thereof}
본 발명은 반도체 장치에 관한 것으로, 보다 구체적으로는 데이터 저장 장치 및 그것의 동작 방법에 관한 것이다.
일반적으로 데이터 저장 시스템은 휘발성이고 바이트(Byte) 접근이 가능한 DRAM(dynamic random access memory) 메모리 구조이거나 또는 불휘발성이고 블록 스토리지인 SSD(solid state drive) 또는 HDD(hard disk drive)의 구조일 수 있다. 상술한 DRAM에 비해 SSD 및 HDD는 접근속도가 수천 내지 수만 배 느릴 수 있다.
현재, 플래시 메모리의 불휘발성 특성과 DRAM의 고속 데이터 쓰기 및 읽기 지원이 가능하며, 바이트 단위 접근이 가능한 SCM(Storage Class Memory) 장치들이 확대 적용되고 있는 추세이다.
한편, Near Pooled Memory Processing(NPP)은 호스트와 미디어 간 데이터 이동을 최소화하여 리소스 절약(resource saving)을 도모하는 것을 주된 목적으로 한다.
NPP의 경우 분리된 아키텍처(disaggregated architecture)에서의 메모리 풀(memory pool) 활용을 통해 향상된 메모리 용량(memory capacity)을 확보할 수 있고, 이에 따라 다수의 호스트들로부터 다양한 잡(job)을 오프 로딩(off-loading) 받을 수 있다. 이로 인하여 오프 로딩된 다양한 잡별로 우선순위가 상이할 수 있고, 각각을 처리하여 호스트로 응답(response) 해야 하는 데드라인(deadline) 역시 차이가 있을 수 있다.
만약, 잡(job)을 처리할 때, 높은 우선순위(high priority)에 따라 순차적으로 처리할 수 있으나, 이럴 경우 낮은 우선순위 잡(low priority job)에 대한 스타베이션(starvation)이 발생할 수 있다. 다른 경우, 높은 우선순위 잡(high priority job) 역시 기 선점된 잡의 처리가 지연되어 데드라인을 지키지 못하는 등의 문제가 발생할 수 있다.
본 발명의 실시 예는 다양한 잡(job)들을 효율적으로 처리하는 데이터 저장 장치 및 그것의 동작 방법을 제공한다.
본 발명의 실시 예에 따른 데이터 저장 장치는 복수의 호스트 프로세서로부터 전송되는 복수의 잡(job)을 큐잉하는 공유 커맨드 큐; 상기 복수의 잡을 우선순위 문턱값에 따라 제1 우선순위 잡, 제2 우선순위 잡 및 제3 우선순위 잡을 포함하는 복수 레벨의 잡으로 구분하고, 구분된 상기 복수 레벨의 잡을 프로세서로 할당하는 큐 컨트롤러; 상기 큐 컨트롤러로부터 전송되는 상기 잡을 처리하는 프로세서; 및 메모리를 포함하며, 상기 큐 컨트롤러는 상기 잡을 할당할 때 상기 복수 레벨에 대응되는 우선순위에 따라 기 설정된 인터럽트를 상기 프로세서로 발생시켜 상기 잡을 상기 우선순위에 따라 처리하도록 하고, 상기 프로세서는 상기 기 설정된 인터럽트에 따라 상기 제1 우선순위 잡에 대해 기 수행 중인 잡을 종료(termination)하지 않고 BMT(blocked multithreading) 방식의 콘텍스트 스위칭(context switching)을 수행할 수 있다.
본 발명의 실시 예에 따른 데이터 저장 장치의 동작방법은 복수의 호스트 프로세서로부터 전송되는 복수의 잡(job)을 큐잉하는 단계; 상기 복수의 잡을 우선순위 스케줄링 기준에 따라 나열하는 단계; 나열된 상기 복수의 잡을 상기 우선순위 문턱값을 기초로 복수 레벨의 잡으로 구분하는 단계; 구분된 상기 복수 레벨의 잡을 프로세서로 할당하는 단계; 및 상기 프로세서에서 상기 잡을 우선순위에 따라 처리하는 단계를 포함할 수 있다.
본 실시 예들에 따르면, 큐잉되는 다양한 잡들을 우선순위 및 데드라인을 비롯한 기준에 따라 순서를 결정하여 처리하기 때문에 잡 밸런싱(job balancing)을 유지하여 데이터 저장 장치의 성능을 향상시킬 수 있다.
도 1은 본 발명의 실시 예에 따른 데이터 저장 시스템의 구성을 나타낸 도면이다.
도 2는 본 발명의 실시 예에 따른 데이터 저장 장치의 구성을 나타내는 도면이다.
도 3은 본 발명의 실시 예에 따른 복수 레벨의 잡을 설명하기 위한 예시도이다.
도 4 내지 6은 본 발명의 일 실시 예에 따라 우선순위에 기초하여 잡을 처리하는 방법을 설명하기 위한 예시도이다.
도 7은 본 발명의 다른 실시 예에 따라 우선순위에 기초하여 잡을 처리하는 방법을 설명하기 위한 예시도이다.
도 8은 본 발명의 실시 예에 따른 데이터 저장 장치의 동작방법을 설명하기 위한 흐름도이다.
도 9는 도 8의 잡을 처리하는 동작방법을 보다 상세하게 설명하기 위한 흐름도이다.
이하, 첨부한 도면에 의거하여 본 발명의 바람직한 실시 예를 설명하도록 한다.
도 1은 본 발명의 실시 예에 따른 데이터 저장 시스템의 구성을 나타낸 도면이고, 도 2는 본 발명의 실시 예에 따른 데이터 저장 장치의 구성을 나타내는 도면이다.
이하에서는, 본 발명의 실시 예에 따른 복수 레벨의 잡을 설명하기 위한 예시도인 도 3, 본 발명의 일 실시 예에 따라 우선순위에 기초하여 잡을 처리하는 방법을 설명하기 위한 예시도인 도 4 내지 6, 본 발명의 다른 실시 예에 따라 우선순위에 기초하여 잡을 처리하는 방법을 설명하기 위한 예시도인 도 7을 참조하여 설명하기로 한다.
도 1을 참조하면, 데이터 저장 시스템은 호스트 프로세서(host processor)(11) 및 호스트 프로세서(11)로부터 전달된 잡(job)을 처리하기 위한 데이터 저장 장치(20)를 포함할 수 있다. 이때, 호스트 프로세서(11)는 호스트 프로세서(11)와 관련된 정보를 저장하기 위한 DRAM(13)과 연결될 수 있다. 도 1에서 도시하는 바와 같이, 호스트 프로세서(11) 및 DRAM(13) 세트는 복수 개일 수 있다. 상술한 호스트 프로세서(100)는 CPU(central processing unit), ISP(image signal processing unit), DSP(digital signal processing unit), GPU(graphics processing unit), VPU(vision processing unit), FPGA(field programmable gate array) 및 NPU(neural processing unit) 중 적어도 하나를 포함할 수 있다.또한, 데이터 저장 장치(20)는 2-tier pooled memory로 도 1과 같이 복수 개로 구현될 수 있다.
도 2를 참조하면, 데이터 저장 장치(20)는 공유 커맨드 큐(shared command queue)(210), 큐 컨트롤러(queue controller)(230), 프로세서(250) 및 메모리(270)를 포함할 수 있다. 상기 프로세서(250)는 NPP(near pooled memory processor)이고, 메모리(270)는 스토리지 클래스 메모리(storage class memory; SCM)일 수 있다.
공유 커맨드 큐(210)는 복수의 호스트 프로세서(11)로부터 전송되는 복수의 잡(job)을 큐잉할 수 있다. 프로세서(250)가 NPP인 경우 분리된 아키텍처(disaggregated architecture)에서의 메모리 풀(memory pool) 형태의 복수의 메모리(270)들을 활용하여 향상된 메모리 용량을 확보할 수 있다. 이에, 공유 커맨드 큐(210)는 복수의 호스트 프로세서(11)로부터 다양한 우선순위(priority)와 응답 회신의 데드라인(dead line)을 갖는 복수의 잡들을 수신할 수 있는 것이다.
큐 컨트롤러(230)는 복수의 잡을 우선순위 문턱값에 따라 복수 레벨의 잡으로 구분하고, 구분된 상기 복수 레벨의 잡을 프로세서(250)로 할당할 수 있다.
구체적으로, 큐 컨트롤러(230)는 복수의 잡을 우선순위 스케줄링 기준에 따라 나열하고, 나열된 복수의 잡을 우선순위 문턱값을 기초로 복수 레벨의 잡으로 구분할 수 있다. 상기 우선순위 스케줄링 기준은 잡의 응답 회신시간을 포함하는 잡의 시간 제한 정보, 잡의 메모리 요구량, I/O 버스트(I/O burst), 중앙처리장치 버스트(CPU burst), 프로세스의 중요도 및 리소스의 코스트 중 적어도 하나 이상을 포함할 수 있다.
도 3을 참조하면, 큐 컨트롤러(230)는 우선순위 스케줄링 기준에 따라 TH0-0, TH0-1, TH0-2 ~ TH1-0, TH1-1, TH1-2 ~ TH2-0, TH2-1, TH2-2 등과 같은 잡을 수행하기 위한 명령(instruction)들을 포함하는 복수의 잡을 나열한 후, 우선순위 문턱값인 Thread 0, Thread 1, Thread 2 등을 기초로 복수의 레벨(TH0, TH1, TH2 등)로 잡을 구분할 수 있다. 이때, TH0 잡은 TH0-0, TH0-1, TH0-2 명령 등을 포함하고, TH1 잡은 TH1-0, TH1-1, TH1-2 명령 등을 포함하며, TH2 잡은 TH2-0, TH2-1, TH2-2 명령 등을 포함할 수 있다.
큐 컨트롤러(230)는 우선순위 문턱값에 따라 복수의 잡을 제1 우선순위 잡, 제2 우선순위 잡 및 제3 우선순위 잡을 포함하는 복수 레벨의 잡으로 구분할 수 있다. 이때, 제1 우선순위 잡은 제2 우선순위 잡 보다 우선순위가 높고, 제2 우선순위 잡은 제3 우선순위 잡의 우선순위 보다 높을 수 있다.
예를 들어, 도 4의 TH1이 제1 우선순위 잡이고, 도 7의 TH1 내지 TH5가 제2 우선순위 잡일 수 있다.
또한, 큐 컨트롤러(230)는 잡을 할당할 때 복수 레벨에 대응되는 우선순위에 따라 기 설정된 인터럽트(interrupt)를 프로세서(250)로 발생시켜 잡을 우선순위에 따라 처리하도록 할 수 있다. 상기 인터럽트는 큐 컨트롤러(230), 프로세서(250) 및 메모리(270) 간에 현재 처리하고 있는 일반 동작을 중단하고 프로세서에 할당되는 잡들을 우선순위에 따라 처리하도록 사전에 약속된 것으로서, 제1 우선순위 잡, 제2 우선순위 잡 및 제3 우선순위 잡 별로 매칭되는 인터럽트의 식별정보 역시 상이할 수 있다. 예를 들어, 인터럽트 0는 제1 우선순위 잡을 의미하고, 인터럽트 1은 제2 우선순위 잡을 의미할 수 있는 것이다.
도 4를 참고하면, 큐 컨트롤러(230)는 프로세서(250)에서 TH0 잡에 해당하는 TH0-0, TH0-1, TH0-2, TH0-3, TH0-4 및 TH0-5의 명령을 명령어 파이프라인(instruction pipeline)에 따라 처리하던 중 제1 우선순위 잡(도 4의 Top priority job)인 TH1의 잡을 할당 받은 경우 TH1을 우선적으로 처리할 수 있도록 프로세서(250)와 미리 설정된 인터럽트(예를 들어, 인터럽트 0)를 함께 프로세서(250)로 전달하는 것이다.
참고로, 도 4의 IF는 Instruction Fetch, ID는 Instruction Decode/Register Fetch, EX는 Instruction Execution, EM은 Memory Access, WB는 Register Write Back일 수 있다.
또한, 큐 컨트롤러(230)는 제3 우선순위 잡을 수신한 시간이 기준치를 초과하면, 제3 우선순위 잡을 제2 우선순위 잡으로 변경하여 프로세서(250)로 할당할 수 있다. 도시하지 않았지만, 데이터 저장 장치(20) 또는 큐 컨트롤러(230)는 타이머를 추가로 구비하여 잡이 큐잉된 시간을 체크할 수 있다. 개시된 발명은 제3 우선순위 잡을 일정 시간 후 제2 우선순위로 변경함으로 인해 낮은 우선순위의 잡들에 대한 스타베이션(starvation)을 방지할 수 있다는 효과를 기대할 수 있다.
한편, 큐 컨트롤러(230)는 잡을 프로세서(250)로 할당할 때, 복수의 프로세서(250) 각각의 중앙처리장치 사용량(CPU utilization), 쓰루풋(throughput), 턴어라운드 시간(turnaround time), 대기 시간(waiting time) 및 응답 시간(response time) 중 적어도 하나 이상을 고려하여 잡을 할당할 프로세서(250)를 선택할 수 있다.
즉, 큐 컨트롤러(230)는 잡을 보다 효율적이고 신속하게 처리할 수 있도록 프로세서(250)의 상태를 고려하여 잡을 할당하는 것이다.
한편, 복수의 프로세서(250) 각각이 전체 메모리(270)가 아닌 특정 메모리(270)와 연결된 형태이고, 공유 커맨드 큐(210)에 큐잉된 특정 잡을 처리하기 위해 접근해야 하는 메모리(270)가 정해진 경우라면, 큐 컨트롤러(230)는 해당 메모리(270)와 연결된 프로세서(250)로 잡을 할당할 수 있다.
상술한 바와 같이, 복수의 프로세서(250) 각각은 전체 메모리(270)와 연결되어 전체 메모리(270)를 공유하는 형태로 구현되거나, 또는 복수의 프로세서(250) 각각이 일부 메모리(270)에만 연결되어 있는 형태 역시 가능하다 할 것이다.
프로세서(250)는 큐 컨트롤러(230)로부터 전송되는 잡을 처리할 수 있다.
프로세서(250)는 기 설정된 인터럽트에 따라 제1 우선순위 잡에 대해 기 수행 중인 잡을 종료(termination)하지 않고 BMT(blocked multithreading) 방식의 콘텍스트 스위칭(context switching)을 수행할 수 있다. 이때, BMT 방식은 프로세서(250)가 일반적인 잡을 처리하던 중 특정 잡에 대한 처리가 발생했을 때 해당 특정 잡으로 스위칭 되는 것을 의미하는 것이다.
도 4를 참조하면, 프로세서(250)는 TH0 잡(TH0-0, TH0-1, TH0-2, TH0-3, TH0-4 및 TH0-5의 명령 포함)을 명령어 파이프라인(instruction pipeline)에 따라 처리하던 중 제1 우선순위 잡(Top priority job)인 TH1의 잡을 할당 받은 경우, TH0 잡을 종료하지 않고 중단한 후 TH1을 우선적으로 처리할 수 있다.
구체적으로, 도 5를 참조하면 프로세서(250)는 일반적인 잡인 TH0를 수행하던 중에 우선적으로 처리할 것으로 사전에 약속된 인터럽트 0와 함께 TH1 잡을 할당 받으면, 기 선점된 TH0 잡을 종료(Termination)가 아닌 중단(stop)하고 TH1 잡(TH1-0, TH1-1, TH1-2 등의 명령을 포함)을 먼저 수행할 수 있다. 이때, TH1 잡을 우선적으로 수행하기 위해, 프로세서(250)는 TH0 잡을 중단하고 ISR 영역에서 TH1을 스포닝(spawning)할 수 있다. 이때, TH1 잡을 스포닝하는 것은 TH1 잡에 대한 명령어를 생성하는 것으로 정의하기로 한다.
이후, 프로세서(250)는 TH1 잡의 처리가 완료되면 다시 다른 일반적인 잡을 처리할 수 있는 것이다. 이때, 다른 일반적인 잡은 TH0 잡이거나, TH0 잡을 이미 완료한 경우 다른 일반적인 잡일 수 있다.
도 6을 참조하면, 프로세서(250)는 Instruction A(어드레스 1009)를 처리하던 중 큐 컨트롤러(230)와 사전 약속된 인터럽트 0(interrupt 0)와 함께 TH1 잡을 할당받으면, 인터럽트 벡터 테이블(interrupt vector table; IVT)의 어드레스 1030으로 점프하여 ISR(interrupt service routine)를 처리하기 위한 위치를 파악한 후 해당 ISR 영역으로 점프하여 TH1 잡을 스포닝(spawning)한 후 바로 종료하고, 다시 일반 동작(normal operation)으로 복귀하여 TH1 명령(예를 들어, Instruction F)부터 수행할 수 있다.
프로세서(250)는 Instruction F에 대한 처리가 완료되면 다시 일반 동작(normal operation)의 Instruction B를 처리할 수 있는 것이다.
프로세서(250)는 제1 우선순위 잡의 처리를 위해 인터럽트 0를 설정한 것 이외에도 제2 우선순위 잡의 처리를 위해 인터럽트 1을 설정하는 등 큐 컨트롤러(250)와 프로세서(260) 및 메모리(270) 간에 인터럽트를 사전에 정의할 수 있다.
또한, 프로세서(250)는 잡을 처리할 때, 잡을 처리하기 위해 요구되는 관련 데이터를 저장하는 메모리(270)에 접근함은 당연하다 할 것이다.
한편, 프로세서(250)는 기 설정된 인터럽트에 따라 제2 우선순위 잡에 대해 IMT(interleaved multithreading) 방식의 콘텍스트 스위칭(context switching)을 수행할 수 있다. 이때, IMT 방식은 프로세서(250)가 한 번에 두 개 혹은 그 이상의 잡을 다루며, 각 클록 사이클마다 어느 한 잡으로부터 다른 잡으로 스위칭하는 것을 의미하는 것이다.
도 7을 참조하면, 프로세서(250)는 TH0 잡(TH0-0, TH0-1 및 TH0-2의 명령 포함)을 명령어 파이프라인(instruction pipeline)에 따라 처리하던 중 제2 우선순위 잡들(mid-priority jobs)인 TH1, TH2, TH3, TH4 및 TH5의 잡을 할당 받은 경우, TH0 잡을 종료하지 않고 중단한 후 TH1, TH2, TH3, TH4 및 TH5을 우선적으로 처리할 수 있다. 이때, 프로세서(250)는 제1 우선순위 잡의 처리 방식과는 다르게 미리 선점된 THO 잡의 처리를 중단한 후 다수의 제2 우선순위 잡들을 순차적으로 처리하는 IMT 방식을 적용하여 제2 우선순위 잡들의 처리에 대한 응답을 회신할 수 있다.
예를 들어, 프로세서(250)는 TH0-0, TH0-1 및 TH0-2 잡의 처리를 중단하고 제2 우선순위 잡들을 처리할 때, TH1-0, TH2-0, TH3-0, TH4-0 및 TH5-0 순으로 처리하는 것이다. 이는, 제1 우선순위 잡의 처리방식인 TH1-0, TH1-1 및 TH1-2 순으로 처리하는 방식과는 상이하다. 이때, TH1-0, TH1-1 및 TH1-2는 TH1 잡에 포함된 명령(instruction)들을 의미한다.
도시하지 않았지만, 프로세서(250)는 일반적인 잡인 TH0를 수행하던 중에 제2 우선순위 잡을 일반 잡 보다는 우선적으로 처리할 것으로 사전에 약속된 인터럽트 1과 함께 TH1, TH2, TH3, TH4 및 TH5 잡들을 할당 받으면, 기 선점된 TH0 잡을 종료(Termination)가 아닌 중단(stop)하고 TH1, TH2, TH3, TH4 및 TH5 잡들을 먼저 수행할 수 있다. 이후, 프로세서(250)는 TH1, TH2, TH3, TH4 및 TH5 잡들의 처리가 완료되면 다시 일반적인 잡을 처리할 수 있는 것이다. 이때, 프로세서(250)는 제2 우선순위 잡들 각각에 대해 하나의 잡을 완료한 이후에 다른 잡으로 스위칭하는 것이 아니라 다수의 잡을 병렬적으로 수행할 수 있다.
도 8은 본 발명의 실시 예에 따른 데이터 저장 장치의 동작방법을 설명하기 위한 흐름도이다.
먼저, 공유 커맨드 큐(210)는 복수의 호스트 프로세서(11)로부터 전송되는 복수의 잡(job)을 큐잉할 수 있다(S101). 이때, 복수의 잡은 각기 서로 다른 우선순위(priority)와 응답 회신의 데드라인(dead line)을 갖을 수 있다.
다음, 큐 컨트롤러(230)는 복수의 잡을 우선순위 스케줄링 기준에 따라 나열할 수 있다(S103). 상기 우선순위 스케줄링 기준은 잡의 응답 회신시간을 포함하는 잡의 시간 제한 정보, 잡의 메모리 요구량, I/O 버스트(I/O burst), 중앙처리장치 버스트(CPU burst), 프로세스의 중요도 및 리소스의 코스트 중 적어도 하나 이상을 포함할 수 있다. 도 3을 참조하면, 데이터 저장 장치(20)는 우선순위 스케줄링 기준에 따라 TH0-0, TH0-1, TH0-2 ~ TH1-0, TH1-1, TH1-2 ~ TH2-0, TH2-1, TH2-2 등 복수의 잡을 순위별로 나열할 수 있다. 보다 상세히 설명하면, 복수의 잡 각각에 포함된 명령들을 순위별로 나열할 수 있다.
다음, 큐 컨트롤러(230)는 나열된 복수의 잡을 우선순위 문턱값을 기초로 복수 레벨의 잡으로 구분할 수 있다(S105).
큐 컨트롤러(230)는 우선순위 문턱값인 Thread 0, Thread 1, Thread 2 등을 기초로 복수의 레벨(TH0, TH1, TH2 등)로 잡을 구분할 수 있다. 이때, TH0 잡은 TH0-0, TH0-1, TH0-2 명령 등을 포함하고, TH1 잡은 TH1-0, TH1-1, TH1-2 명령어 등을 포함하며, TH2 잡은 TH2-0, TH2-1, TH2-2 명령 등을 포함할 수 있다.
큐 컨트롤러(230)는 우선순위 문턱값에 따라 복수의 잡을 제1 우선순위 잡, 제2 우선순위 잡 및 제3 우선순위 잡을 포함하는 복수 레벨의 잡으로 구분할 수 있다. 이때, 제1 우선순위 잡은 제2 우선순위 잡 보다 우선순위가 높고, 제2 우선순위 잡은 제3 우선순위 잡의 우선순위 보다 높을 수 있다.
다음, 큐 컨트롤러(230)는 구분된 복수 레벨의 잡을 프로세서(250)로 할당할 수 있다(S107).
프로세서(250)가 복수 개인 경우, 큐 컨트롤러(230)는 잡을 복수의 프로세서(250) 중 어느 하나로 할당할 때, 복수의 프로세서(250) 각각의 중앙처리장치 사용량(CPU utilization), 쓰루풋(throughput), 턴어라운드 시간(turnaround time), 대기 시간(waiting time) 및 응답 시간(response time) 중 적어도 하나 이상을 고려하여 잡을 할당할 프로세서(250)를 선택할 수 있다.
다음, 큐 컨트롤러(230)는 잡을 할당할 때 복수 레벨에 대응되는 우선순위에 따라 기 설정된 인터럽트를 프로세서(250)로 발생시킬 수 있다.
도시하지 않았지만, 큐 컨트롤러(230)는 제3 우선순위 잡을 수신한 시간이 기준치를 초과하면, 제3 우선순위 잡을 제2 우선순위 잡으로 변경하여 프로세서(250)로 할당할 수 있다.
다음, 프로세서(250)에서 잡을 우선순위에 따라 처리할 수 있다(S109). 프로세서(250)는 인터럽트를 기초로 잡을 우선순위에 따라 처리할 수 있다.
도 9는 도 8의 잡을 처리하는 동작방법을 보다 상세하게 설명하기 위한 흐름도로서, 도 8의 단계 S109를 보다 상세하게 설명하기로 한다.
먼저, 프로세서(250)는 큐 컨트롤러(230)로부터 할당된 잡이 제1 우선순위 잡인지 여부를 확인할 수 있다(S201). 이때, 프로세서(250)는 큐 컨트롤러(230)로부터 잡과 함께 전송되는 인터럽트를 기초로 잡의 우선순위를 판단할 수 있다.
확인 결과 할당된 잡이 제1 우선순위 잡인 경우, 프로세서(250)는 기 설정된 인터럽트에 따라 제1 우선순위 잡에 대해 기 수행 중인 잡을 종료(termination)하지 않고 BMT(blocked multithreading) 방식의 콘텍스트 스위칭(context switching)을 수행할 수 있다(S203). 이때, BMT 방식은 프로세서(250)가 일반적인 잡을 처리하던 중 특정 잡에 대한 처리가 발생했을 때 해당 특정 잡으로 스위칭 되는 것을 의미하는 것이다.
도 4를 참조하면, 프로세서(250)는 TH0 잡(TH0-0, TH0-1, TH0-2, TH0-3, TH0-4 및 TH0-5의 명령을 포함)을 명령어 파이프라인(instruction pipeline)에 따라 처리하던 중 제1 우선순위 잡(Top priority job)인 TH1의 잡을 할당 받은 경우, TH0 잡을 종료하지 않고 중단한 후 TH1을 우선적으로 처리할 수 있다.
구체적으로, 도 5를 참조하면 프로세서(250)는 일반적인 잡인 TH0를 수행하던 중에 우선적으로 처리할 것으로 사전에 약속된 인터럽트 0와 함께 TH1 잡을 할당 받으면, 기 선점된 TH0 잡을 종료(Termination)가 아닌 중단(stop)하고 TH1 잡(TH1-0, TH1-1, TH1-2 등의 명령을 포함)을 먼저 수행할 수 있다. 이때, TH1 잡을 우선적으로 수행하기 위해, 프로세서(250)는 TH0 잡을 중단하고 ISR 영역에서 TH1을 스포닝(spawning)할 수 있다. 이때, TH1 잡을 스포닝하는 것은 TH1 잡에 대한 명령어를 생성하는 것으로 정의하기로 한다.
이후, 프로세서(250)는 TH1 잡의 처리가 완료되면 다시 다른 일반적인 잡을 처리할 수 있는 것이다. 이때, 다른 일반적인 잡은 TH0 잡이거나, TH0 잡을 이미 완료한 경우 다른 일반적인 잡일 수 있다.
도 6을 참조하면, 프로세서(250)는 Instruction A(어드레스 1009)를 처리하던 중 큐 컨트롤러(230)와 사전 약속된 인터럽트 0(interrupt 0)와 함께 TH1 잡을 할당받으면, 인터럽트 벡터 테이블(interrupt vector table; IVT)의 어드레스 1030으로 점프하여 ISR(interrupt service routine)를 처리하기 위한 위치를 파악한 후 해당 ISR 영역으로 점프하여 TH1 잡을 스포닝(spawning)한 후 바로 종료하고, 다시 일반 동작(normal operation)으로 복귀하여 TH1 명령(예를 들어, Instruction F)부터 수행할 수 있다. 프로세서(250)는 Instruction F에 대한 처리가 완료되면 다시 일반 동작(normal operation)의 Instruction B를 처리할 수 있는 것이다.
단계 S201의 확인 결과 할당된 잡이 제2 우선순위 잡인 경우, 프로세서(250)는 기 설정된 인터럽트에 따라 상기 제2 우선순위 잡에 대해 IMT(interleaved multithreading) 방식의 콘텍스트 스위칭(context switching)을 수행할 수 있다(S205, S207).
본 발명이 속하는 기술분야의 통상의 기술자는 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있으므로, 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로서 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
11: 호스트 프로세서
20: 데이터 저장 장치
210: 공유 커맨드 큐
230: 큐 컨트롤러
250: 프로세서
270: 메모리

Claims (17)

  1. 복수의 호스트 프로세서로부터 전송되는 복수의 잡(job)을 큐잉하는 공유 커맨드 큐;
    상기 복수의 잡을 우선순위 문턱값에 따라 제1 우선순위 잡, 제2 우선순위 잡 및 제3 우선순위 잡을 포함하는 복수 레벨의 잡으로 구분하고, 구분된 상기 복수 레벨의 잡을 프로세서로 할당하는 큐 컨트롤러;
    상기 큐 컨트롤러로부터 전송되는 상기 잡을 처리하는 프로세서; 및
    메모리를 포함하며,
    상기 큐 컨트롤러는 상기 잡을 할당할 때 상기 복수 레벨에 대응되는 우선순위에 따라 기 설정된 인터럽트를 상기 프로세서로 발생시켜 상기 잡을 상기 우선순위에 따라 처리하도록 하고,
    상기 프로세서는 상기 기 설정된 인터럽트에 따라 상기 제1 우선순위 잡에 대해 기 수행 중인 잡을 종료(termination)하지 않고 BMT(blocked multithreading) 방식의 콘텍스트 스위칭(context switching)을 수행하는 데이터 저장 장치.
  2. 제1항에 있어서,
    상기 프로세서는,
    상기 기 설정된 인터럽트에 따라 상기 제2 우선순위 잡에 대해 IMT(interleaved multithreading) 방식의 콘텍스트 스위칭(context switching)을 수행하는 데이터 저장 장치.
  3. 제1항에 있어서,
    상기 큐 컨트롤러는,
    상기 제3 우선순위 잡을 수신한 시간이 기준치를 초과하면, 상기 제3 우선순위 잡을 상기 제2 우선순위 잡으로 변경하여 상기 프로세서로 할당하는 데이터 저장 장치.
  4. 제1항에 있어서,
    상기 제1 우선순위 잡은 상기 제2 우선순위 잡 보다 우선순위가 높고, 상기 제2 우선순위 잡은 상기 제3 우선순위 잡의 우선순위 보다 높은 데이터 저장 장치.
  5. 제1항에 있어서,
    상기 큐 컨트롤러는,
    상기 복수의 잡을 우선순위 스케줄링 기준에 따라 나열하고 나열된 상기 복수의 잡을 상기 우선순위 문턱값을 기초로 상기 복수 레벨의 잡으로 구분하는 데이터 저장 장치.
  6. 제5항에 있어서,
    상기 우선순위 스케줄링 기준은,
    상기 잡의 시간 제한 정보, 메모리 요구량, I/O 버스트(I/O burst), 중앙처리장치 버스트(CPU burst), 프로세스의 중요도 및 리소스의 코스트 중 적어도 하나 이상을 포함하는 데이터 저장 장치.
  7. 제1항에 있어서,
    상기 큐 컨트롤러는,
    상기 잡을 상기 프로세서로 할당할 때, 상기 복수의 프로세서 각각의 중앙처리장치 사용량(CPU utilization), 쓰루풋(throughput), 턴어라운드 시간(turnaround time), 대기 시간(waiting time) 및 응답 시간(response time) 중 적어도 하나 이상을 고려하여 상기 잡을 할당할 프로세서를 선택하는 데이터 저장 장치.
  8. 제1항에 있어서,
    상기 메모리는,
    스토리지 클래스 메모리(Storage Class Memory)인 데이터 저장 장치.
  9. 복수의 호스트 프로세서로부터 전송되는 복수의 잡(job)을 큐잉하는 단계;
    상기 복수의 잡을 우선순위 스케줄링 기준에 따라 나열하는 단계;
    나열된 상기 복수의 잡을 상기 우선순위 문턱값을 기초로 복수 레벨의 잡으로 구분하는 단계;
    구분된 상기 복수 레벨의 잡을 프로세서로 할당하는 단계; 및
    상기 프로세서에서 상기 잡을 우선순위에 따라 처리하는 단계;
    를 포함하는 데이터 저장 장치의 동작방법.
  10. 제9항에 있어서,
    상기 잡을 프로세서로 할당하는 단계에서,
    상기 잡을 할당할 때 상기 복수 레벨에 대응되는 우선순위에 따라 기 설정된 인터럽트를 상기 프로세서로 발생시키는 데이터 저장 장치의 동작방법.
  11. 제10항에 있어서,
    상기 잡을 우선순위에 따라 처리하는 단계에서,
    상기 인터럽트를 기초로 상기 잡을 상기 우선순위에 따라 처리하는 데이터 저장 장치의 동작방법.
  12. 제9항에 있어서,
    상기 복수 레벨의 잡으로 구분하는 단계에서,
    상기 우선순위 문턱값에 따라 상기 복수의 잡을 제1 우선순위 잡, 제2 우선순위 잡 및 제3 우선순위 잡으로 구분하는 데이터 저장 장치의 동작방법.
  13. 제12항에 있어서,
    상기 잡을 우선순위에 따라 처리하는 단계에서,
    상기 기 설정된 인터럽트에 따라 상기 제1 우선순위 잡에 대해 기 수행 중인 잡을 종료(termination)하지 않고 BMT(blocked multithreading) 방식의 콘텍스트 스위칭(context switching)을 수행하는 데이터 저장 장치의 동작방법.
  14. 제12항에 있어서,
    상기 잡을 우선순위에 따라 처리하는 단계에서,
    상기 기 설정된 인터럽트에 따라 상기 제2 우선순위 잡에 대해 IMT(interleaved multithreading) 방식의 콘텍스트 스위칭(context switching)을 수행하는 데이터 저장 장치의 동작방법.
  15. 제12항에 있어서,
    상기 잡을 프로세서로 할당하는 단계에서,
    상기 제3 우선순위 잡을 수신한 시간이 기준치를 초과하면, 상기 제3 우선순위 잡을 상기 제2 우선순위 잡으로 변경하여 상기 프로세서로 할당하는 데이터 저장 장치의 동작방법.
  16. 제12항에 있어서,
    상기 제1 우선순위 잡은 상기 제2 우선순위 잡 보다 우선순위가 높고, 상기 제2 우선순위 잡은 상기 제3 우선순위 잡의 우선순위 보다 높은 데이터 저장 장치의 동작방법.
  17. 제9항에 있어서,
    상기 프로세서가 복수 개인 경우,
    상기 복수 레벨의 잡을 프로세서로 할당하는 단계에서,
    상기 잡을 복수의 상기 프로세서 중 어느 하나로 할당할 때, 상기 복수의 프로세서 각각의 중앙처리장치 사용량(CPU utilization), 쓰루풋(throughput), 턴어라운드 시간(turnaround time), 대기 시간(waiting time) 및 응답 시간(response time) 중 적어도 하나 이상을 고려하여 상기 잡을 할당할 프로세서를 선택하는 데이터 저장 장치의 동작방법.
KR1020190137342A 2019-10-31 2019-10-31 데이터 저장 장치 및 그것의 동작 방법 KR20210051718A (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
KR1020190137342A KR20210051718A (ko) 2019-10-31 2019-10-31 데이터 저장 장치 및 그것의 동작 방법
US16/852,228 US11573824B2 (en) 2019-10-31 2020-04-17 Data storage device and operating method thereof
CN202010671621.8A CN112749006B (zh) 2019-10-31 2020-07-14 数据存储装置及其操作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190137342A KR20210051718A (ko) 2019-10-31 2019-10-31 데이터 저장 장치 및 그것의 동작 방법

Publications (1)

Publication Number Publication Date
KR20210051718A true KR20210051718A (ko) 2021-05-10

Family

ID=75645498

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190137342A KR20210051718A (ko) 2019-10-31 2019-10-31 데이터 저장 장치 및 그것의 동작 방법

Country Status (3)

Country Link
US (1) US11573824B2 (ko)
KR (1) KR20210051718A (ko)
CN (1) CN112749006B (ko)

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5452452A (en) * 1990-06-11 1995-09-19 Cray Research, Inc. System having integrated dispatcher for self scheduling processors to execute multiple types of processes
WO1992003784A1 (en) * 1990-08-23 1992-03-05 Supercomputer Systems Limited Partnership Scheduling method for a multiprocessing operating system
AU2992499A (en) * 1998-03-10 1999-09-27 Motorola, Inc. Apparatus, method and article of manufacture for use with a priority based real-time operating system
US7376954B2 (en) * 2003-08-28 2008-05-20 Mips Technologies, Inc. Mechanisms for assuring quality of service for programs executing on a multithreaded processor
GB0519981D0 (en) 2005-09-30 2005-11-09 Ignios Ltd Scheduling in a multicore architecture
US7624257B2 (en) 2005-11-30 2009-11-24 International Business Machines Corporation Digital data processing apparatus having hardware multithreading support including a register set reserved for special class threads
JP4817834B2 (ja) * 2005-12-19 2011-11-16 ルネサスエレクトロニクス株式会社 割り込み制御装置及び割り込み制御方法
US8909874B2 (en) * 2012-02-13 2014-12-09 International Business Machines Corporation Memory reorder queue biasing preceding high latency operations
US10466904B2 (en) * 2017-03-24 2019-11-05 Western Digital Technologies, Inc. System and method for processing and arbitrating submission and completion queues
US10387081B2 (en) * 2017-03-24 2019-08-20 Western Digital Technologies, Inc. System and method for processing and arbitrating submission and completion queues
CN112513821A (zh) * 2018-08-01 2021-03-16 华为技术有限公司 用于scm应用的多实例2lm架构

Also Published As

Publication number Publication date
US20210132988A1 (en) 2021-05-06
CN112749006A (zh) 2021-05-04
US11573824B2 (en) 2023-02-07
CN112749006B (zh) 2024-04-16

Similar Documents

Publication Publication Date Title
US20200089537A1 (en) Apparatus and method for bandwidth allocation and quality of service management in a storage device shared by multiple tenants
US8402470B2 (en) Processor thread load balancing manager
US10635485B2 (en) Devices, systems, and methods for lockless distributed object input/output
US8959263B2 (en) Maintaining I/O priority and I/O sorting
US10114560B2 (en) Hybrid memory controller with command buffer for arbitrating access to volatile and non-volatile memories in a hybrid memory group
US10019283B2 (en) Predicting a context portion to move between a context buffer and registers based on context portions previously used by at least one other thread
US20130173843A1 (en) Write bandwidth management for flash devices
US20110061058A1 (en) Task scheduling method and multi-core system
US11429314B2 (en) Storage device, storage system and operating method thereof
JP5414656B2 (ja) データ記憶装置、メモリ制御装置及びメモリ制御方法
US10545890B2 (en) Information processing device, information processing method, and program
CN113518970A (zh) 存储器存取命令的双阈值受控调度
US9412455B2 (en) Data write control device and data storage device
KR102276718B1 (ko) Vliw 인터페이스 장치 및 제어 방법
KR20220001811A (ko) 에너지 효율을 개선할 수 있는 그래픽 처리 장치를 위한 메모리 컨트롤러 및 이의 메모리 제어 방법
Liu et al. LAMS: A latency-aware memory scheduling policy for modern DRAM systems
US20210124497A1 (en) Quality of service for memory devices using weighted memory access operation types
CN105612505B (zh) Cpu调度的方法和装置
KR20210051718A (ko) 데이터 저장 장치 및 그것의 동작 방법
US8245229B2 (en) Temporal batching of I/O jobs
TWI696115B (zh) 記憶體儲存裝置及其操作方法
KR102210765B1 (ko) 긴 지연시간 숨김 기반 워프 스케줄링을 위한 방법 및 장치
JP6900687B2 (ja) ディスク制御装置、ディスク制御方法、および、ディスク制御プログラム
CN107646107B (zh) 用于控制存储器装置的存取的设备和方法
JP4754531B2 (ja) デバイスへのアクセス制御方法および処理装置

Legal Events

Date Code Title Description
A201 Request for examination