CN112749006A - 数据存储装置及其操作方法 - Google Patents
数据存储装置及其操作方法 Download PDFInfo
- Publication number
- CN112749006A CN112749006A CN202010671621.8A CN202010671621A CN112749006A CN 112749006 A CN112749006 A CN 112749006A CN 202010671621 A CN202010671621 A CN 202010671621A CN 112749006 A CN112749006 A CN 112749006A
- Authority
- CN
- China
- Prior art keywords
- priority
- job
- work
- processor
- jobs
- Prior art date
- Legal status (The legal status 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 status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 238000013500 data storage Methods 0.000 title claims abstract description 35
- 230000015654 memory Effects 0.000 claims abstract description 42
- 230000008569 process Effects 0.000 claims abstract description 41
- 230000004044 response Effects 0.000 claims description 13
- 230000000903 blocking effect Effects 0.000 claims description 4
- 230000000977 initiatory effect Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000011017 operating method Methods 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- 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
- 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
- G06F9/5038—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 considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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/1668—Details of memory controller
-
- 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/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
- G06F13/26—Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
-
- 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/0656—Data buffering arrangements
-
- 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
- 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
-
- 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
- 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/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- 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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4818—Priority circuits therefor
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
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
本发明涉及一种数据存储装置,该数据存储装置包括共享命令队列、队列控制器、处理器和存储器。共享命令队列被配置成将从多个主机处理器传输的多个工作排队。队列控制器被配置成根据优先级阈值将多个工作分类为多个级别工作,并且将多个级别工作中的工作分配到处理器。处理器被配置成处理由队列控制器分配的工作。存储器可以存储处理工作所需的数据。
Description
相关申请的交叉引用
本申请要求于2019年10月31日在韩国知识产权局提交的申请号为10-2019-0137342的韩国申请的优先权,其通过引用整体并入本文。
技术领域
各个实施例总体涉及一种半导体装置,并且更特别地,涉及一种数据存储装置及其操作方法。
背景技术
通常,数据存储***可以具有易失性和可字节访问的存储器结构(例如,动态随机存取(DRAM)存储器结构)或非易失性块存储结构(例如,固态驱动器(SSD)或硬盘驱动器(HDD)结构)。SSD或HDD的访问速率可以比DRAM的访问速率慢数十至数万倍。
目前,使用的存储级存储器(SCM)装置具有闪速存储器的非易失性特性,支持高速写入和以DRAM中常见的速度来读取,并且可以以字节为单位访问。
近池化存储器处理(NPP)通常在与池化存储器紧密联接的(多个)近池化处理器中处置数据密集型操作。NPP的主要目的是通过最小化主机与存储介质之间的数据移动来促进资源节省,其中存储介质存储待由主机处理的数据。
NPP可以通过利用分离架构中的存储器池来提供增强的存储器容量。因此,NPP***可以接收从多个主机卸载的各个工作。各个卸载工作的优先级可以不同,并且卸载工作向主机响应处理结果的截止时间(即,响应截止时间)也可以不同。
可以根据具有最高优先级的工作来顺序地处理工作,但在某些情况下,作为结果,可能发生低优先级工作的互斥等待(starvation)。进一步地,由于已经正被处理的工作的处理延迟,高优先级的工作的响应截止时间也可能无法被满足。
发明内容
实施例提供一种高效地处理各个工作的数据存储装置及其操作方法。
在本公开的实施例中,数据存储装置可以包括:共享命令队列,被配置成将从多个主机处理器传输的多个工作排队;队列控制器,被配置成根据优先级阈值将多个工作分类为多个级别工作,该多个级别工作包括第一优先级工作、第二优先级工作和第三优先级工作,并且将该多个级别的工作中的一个或多个工作分配到处理器;处理器,被配置成处理由队列控制器分配的工作;以及存储器,其中当分配一个或多个工作时,队列控制器通过根据优先级生成处理器的设定中断,来控制根据对应于多个级别的优先级处理工作,并且当所分配的工作被分类为第一优先级工作时,处理器根据设定中断,以阻塞多线程(BMT)方案对所分配的工作执行上下文切换,而不终止由处理器已经正在处理的工作。
在本公开的实施例中,一种数据存储装置的操作方法可以包括:对从多个主机处理器传输的多个工作排队;根据优先级调度标准列出多个工作;基于优先级阈值将多个所列出的工作分类为多个级别工作;将多个级别工作中的工作分配到处理器;使用处理器根据优先级来处理工作。
根据本公开的实施例,可以通过按照根据包括优先级和截止时间的标准而确定的顺序,来处理排队的各个工作而保持工作平衡,从而可以提高数据存储装置的性能。
下面更详细地描述这些和其它特征、方面和实施例。
附图说明
从以下结合附图的详细描述中,将更清楚地理解本公开的主题的上述和其它方面、特征和优点,其中:
图1示出根据本公开的实施例的数据存储***;
图2示出根据本公开的实施例的数据存储装置;
图3示出根据本公开的实施例的多个工作;
图4、图5和图6示出根据本公开的实施例的根据优先级处理工作的进程;
图7示出根据本公开的另一实施例的根据优先级处理工作的进程;
图8是根据本公开的实施例的数据存储装置的操作进程的流程图;
图9是说明根据实施例的图8中的处理工作的操作进程的流程图。
具体实施方式
下面参照附图更详细地描述本发明的各个实施例。然而,本发明的特征和方面可以不同于本文所公开的特征和方面来配置或设置。因此,本发明不限于所公开的实施例。相反,本发明包括落入权利要求范围内的任何所公开实施例的所有修改和变型。而且,在整个说明书中,对“实施例”等的参考不一定仅是一个实施例,并且对任何这种短语的不同参考不一定是针对相同实施例。
应当理解的是,当元件或层被称为在另一个元件或层“上”、“连接到”或“联接到”另一个元件或层时,它可以直接在另一个元件或层上、直接连接或联接到另一个元件或层,或者可以存在一个或多个中间元件或层。将进一步理解的是,当在本说明书中使用术语“包括”和/或“包括有”时,不排除存在或添加其它未陈述的元件。类似地,术语“一”和“一个”指示一个或多个,除非另有说明或者上下文明确地指示仅一个。
图1示出根据实施例的数据存储***10,并且图2示出根据实施例的数据存储装置20。
图3示出根据实施例的多个级别工作。图4至图6示出根据实施例的根据优先级处理工作的进程。并且,图7示出根据另一实施例的根据优先级处理工作的进程。在下文中,将参照附图描述包括数据存储装置的数据存储***。
参照图1,根据实施例的数据存储***10可以包括一个或多个主机处理器11和一个或多个数据存储装置20,该数据存储装置20被配置成处理从主机处理器11传送的工作。每个主机处理器11可以联接到各自的DRAM 13,DRAM 13被配置成存储与主机处理器11有关的信息。如图1所示,可以设置多个集合,每个集合包括主机处理器11和DRAM 13。主机处理器11可以包括中央处理单元(CPU)、图像信号处理单元(ISP)、数字信号处理单元(DSP)、图形处理单元(GPU)、视觉处理单元(VPU)、现场可编程门阵列(FPGA)和神经处理单元(NPU)中的至少一个。数据存储装置20可以使用多个2层池化存储器来实施,并且可以包括近存储器池化处理(NPP)***。
参照图2,数据存储装置20可包括共享命令队列210、队列控制器230、一个或多个处理器250和一个或多个存储器270。每个处理器250可以是近池化存储器处理器(NP处理器),并且每个存储器270可以是存储级存储器(SCM)。
共享命令队列210可以将从多个主机处理器11传输的多个工作进行排队。当处理器250是NP处理器时,共享命令队列210可以通过使用在分离架构中配置的存储器池中的存储器270来确保增强的存储器容量。共享命令队列210可以从多个主机处理器11接收分别具有各种优先级和响应截止时间的多个工作。
队列控制器230可以根据优先级阈值来将多个工作中的每个工作分类为多个级别工作中的一个,并且将来自多个级别工作中的工作分配到处理器250。
例如,队列控制器230可以根据优先级调度标准列出多个工作,并且基于优先级阈值来将多个所列出的工作分类为多个级别工作。该优先级调度标准可以包括以下中的至少一个:工作的时间限制信息(诸如,工作的响应截止时间)、工作所需的存储器容量、输入/输出(I/O)速率、CPU速率、进程重要程度和资源成本。
参照图3,队列控制器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可根据优先级阈值来将多个工作分类为多个级别工作,该多个级别工作包括第一优先级工作、第二优先级工作和第三优先级工作。第一优先级工作可以具有比第二优先级工作更高的优先级,并且第二优先级工作可以具有比第三优先级工作更高的优先级。
例如,在图4中,TH1工作可以是第一优先级工作。并且,在图7中,TH1、TH2、TH3、TH4和TH5工作可以是第二优先级工作。
进一步地,当分配工作时,队列控制器230可以通过根据优先级生成处理器250的设定中断,来控制处理器250以根据对应于多个级别的优先级来处理工作。在队列控制器230与处理器250之间和在队列控制器230与存储器270之间,可以将中断先前地配置成终止当前正在处理的正常操作,并且根据优先级处理分配到处理器250的工作。与第一优先级工作、第二优先级工作、第三优先级工作相关联的中断的识别信息可以彼此不同。例如,中断Interrupt 0可以指代用于处理第一优先级工作的中断,并且中断Interrupt 1可以指代用于处理第二优先级工作的中断。
参照图4,当在使用指令运行管线的处理器250通过使用与TH0工作相对应的指令TH0-0、TH0-1、TH0-2、TH0-3、TH0-4和TH0-5处理TH0工作时,分配了作为第一优先级工作(最高优先级工作)的TH1工作时,队列控制器230可以同时向处理器250传送TH1工作和中断Interrupt 0,以向处理器250发送信号以优先地处理TH1工作,其中中断Interrupt 0被先前地设置在处理器250和队列控制器230之间。
在图4中,IF可以指代指令获取,ID可以指代指令解码/寄存器获取,EX可以指代指令运行,EM可以指代存储器访问,并且WB可以指代寄存器回写。因此,图4示出具有指令获取阶段(IF),第一和第二指令解码/寄存器获取阶段(ID1和ID2),第一、第二和第三指令执行阶段(EX1、EX2和EX3),存储器访问阶段(EM)和寄存器回写阶段(WB)的管线。通过管线来获取和运行来自正常工作TH0和第一优先级工作TH1的指令。在第一至第六周期中,分别获取指令TH0-0、TH0-1、TH0-2、TH0-3、TH0-4和TH0-5,并且在获取每个指令之后,在每个新周期中将管线向下推进一个阶段。在第六周期之后,发生中断,这可能终止从线程TH0获取另外的指令。相反,处理器250切换到获取并执行第一优先级工作TH1的指令TH1-0、TH1-1、TH1-2等。
当从命令队列210接收到为第三优先级工作的工作之后经过的时间超过参考值时,队列控制器230可以将该工作改变为第二优先级工作(即,队列控制器230将该工作重新分类为第二优先级工作),并且将该工作分配到处理器250。尽管未示出,但数据存储装置20或队列命令230可以进一步包括用于检查工作排队时间的定时器。通过这种机制,实施例通过在特定时间之后,将第三(低)优先级工作改变为第二(中)优先级工作来防止低优先级工作的互斥等待。
当将工作分配到处理器250时,队列控制器230可通过考虑以下中的至少一个来在多个处理器250之中选择待被分配工作的处理器250:处理器中的每一个的CPU利用率、吞吐量、周转时间、等待时间和响应时间。
也就是说,队列控制器230通过考虑处理器250的状态来分配工作,以更高效和更快速地处理工作。
当处理器250中的每一个未联接到所有存储器270,而是联接到存储器270之中的特定存储器270,并且需要访问该特定存储器270以处理排队到共享命令队列210的特定工作时,队列控制器230可将该特定工作分配到与该特定存储器270联接的处理器250。
如上文所描述的,多个处理器250中的每个处理器可以以每个处理器250联接到所有存储器270并且共享所有存储器270的结构实施,或者以每个处理器250分别仅联接到存储器270中的一些存储器的结构实施。
处理器250可以处理从队列控制器230传输的工作。
处理器250可以不终止正在处理的工作,而是可以根据设定中断,以阻塞多线程(BMT)方案对第一优先级工作执行上下文切换。BMT方案表示当在处理器250正在处理正常工作时,发生用于处理特定工作的中断时,将正常工作(即,当接收到中断时处理器250正在处理的工作)切换到相应的特定工作。
参照图4,当在处理器250根据指令管线通过运行指令TH0-0、TH0-1、TH0-2、TH0-3、TH0-4和TH0-5来处理TH0工作时,向处理器250分配了为第一优先级工作(最高优先级工作)的TH1工作时,处理器250可以在不终止TH0工作的情况下停止处理TH0工作,并且可以优先地处理TH1工作。
特别地,参照图5,当在处理正常工作TH0时,分配了TH1工作和中断Interrupt 0时,其中中断Interrupt 0被先前分配为优先地处理特定工作,处理器250可以不终止当前执行的TH0工作,但是可以停止(至少暂时地停止)获取当前执行的TH0工作的任何更多指令,可以允许完成对应于TH0工作的、已经在管线中的指令,并且可以优先地处理包括指令TH1-0、TH1-1和TH1-2的TH1工作。为了优先地执行TH1工作,处理器250可以停止处理对TH0工作的进一步指令,并且在中断服务例程(ISR)区域中执行TH1工作的产生(spawning)。TH1工作的产生可以包括运行用于TH1工作的指令。
然后,当TH1工作的处理完成时,处理器250可以再次执行另一正常工作。例如,执行另一正常工作可以包括恢复TH0工作,或者当先前已经完成TH0工作时开始或恢复不同的正常工作。
参照图6,当在处理器250处于处理在地址1009处的指令Instruct A的正常操作中时,分配了TH1工作和由队列控制器230先前分配的中断Interrupt 0时,处理器250可跳转到中断向量表(IVT)的地址1030以确定处理中断服务例程(ISR)的位置,跳转到相应的ISR区域,执行TH1工作的产生并且然后终止该产生。然后,处理器250可以通过运行一个或多个TH1指令(例如,指令F以及指令F之后的指令)来恢复正常操作,以执行TH1工作。
当处理器250完成运行一个或多个TH1指令时,处理器250可以通过执行指令A之后的指令B来继续正常操作。
处理器250可以提前限定在队列控制器230和处理器250之间以及队列控制器230和存储器270之间的中断,诸如除了用于发起处理第一优先级工作的设定中断Interrupt 0之外,还有用于发起处理第二优先级工作的设定中断Interrupt 1。
处理器250可以访问一个或多个存储器270,该存储器270被配置成存储当处理工作时处理该工作所需的相关数据。
处理器250可以根据设定中断,使用交错多线程(IMT)方案来对第二优先级工作执行上下文切换。IMT方案表示处理器250一次处理两个或更多个工作,并且在每个时钟周期从对任意一个工作发布指令切换为对另一工作发布指令。
参照图7,当在处理器250正在根据指令管线来处理包括指令TH0-0、TH0-1和TH0-2的TH0工作时,向该处理器250分配了为第二优先级工作(中间优先级工作)的TH1、TH2、TH3、TH4和TH5工作时,处理器250可以不终止TH0工作,但可以停止处理TH0工作的(尚未获取的)另外指令,然后可以优先地处理TH1、TH2、TH3、TH4和TH5工作。与参照图4描述的第一优先级工作的处理方案不同的是,处理器250可以通过应用IMT方案来产生对处理多个第二优先级工作的响应,其中该IMT方案停止处理当前运行的TH0工作,然后顺序地处理多个第二优先级工作。
例如,当处理器250停止处理包括指令TH0-0、TH0-1和TH0-2的TH0工作并且处理第二优先级工作时,处理器250按照指令TH1-0、TH2-0、TH3-0、TH4-0和TH5-0,接着是指令TH1-1、TH2-1、TH3-1、TH4-1和TH5-1等的顺序来处理第二优先级工作TH1至TH5。第二优先级工作的处理方法不同于图4中描述的、以TH1工作中包括的指令TH1-0、TH1-1、TH1-2的顺序来处理第一优先级工作TH1的处理方法。
尽管未示出,当在处理器250正在处理正常工作TH0时,向处理器250一起分配了第二优先级工作TH1、TH2、TH3、TH4和TH5以及中断Interrupt 1时,其中中断Interrupt 1被先前分配以指示处理器250优先地处理第二优先级工作而不是正常工作TH0,处理器250可以停止处理TH0工作而不终止当前运行的正常TH0工作,并且优先地处理第二优先级工作TH1、TH2、TH3、TH4和TH5。然后,当TH1、TH2、TH3、TH4和TH5工作的处理完成时,处理器250可以再次处理正常工作。此时,处理器250可能未完成第二优先级工作中的一个工作,然后切换到第二优先级工作中的另一工作,但是处理器250并行地执行第二优先级工作。
图8是说明根据实施例的数据存储装置的操作方法的流程图。
首先,共享命令队列210可以将从多个主机处理器11传输的多个工作进行排队(S101)。多个工作可以具有彼此不同的优先级和响应截止时间。
队列控制器230可以根据优先级调度标准来按照顺序列出多个工作(S103)。优先级调度标准可以包括以下中的至少一个:包括工作响应截止时间的工作时间限制信息、工作所需的存储器容量、输入/输出(I/O)速率、CPU速率、进程重要程度和工作指定的资源成本。参照图3,数据存储装置20可以基于优先级调度标准,根据优先级列出包括指令TH0-0、TH0-1、TH0-2、...,TH1-0、TH1-1、TH1-2、...和TH2-0、TH2-1、TH2-2、...的多个工作TH0、TH1、TH2等。更特别地,队列控制器230可以根据优先级列出多个工作中包括的指令。
队列控制器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可根据优先级阈值,将多个工作分类为多个级别工作,其中多个级别工作包括第一优先级工作、第二优先级工作和第三优先级工作。第一优先级工作可以具有比第二优先级工作更高的优先级,并且第二优先级工作可以具有比第三优先级工作更高的优先级。
队列控制器230可以将多个级别工作中的一个或多个工作分配到处理器250(S107)。
在设置多个处理器250的情况下,当将工作分配到多个处理器250中的任何一个时,队列控制器230可通过考虑每个处理器的CPU利用率、吞吐量、周转时间、等待时间和响应时间中的至少一个,来在多个处理器250之中选择待被分配工作的一个处理器250。此外,队列控制器230可以根据处理器250是否与包括处理该工作所需的数据的存储器270连接或者处理器250连接到包括处理该工作所需的数据的存储器270的紧密程度,来选择待被分配工作的一个处理器250。
当分配工作时,队列控制器230可以根据与多个级别相对应的优先级来生成处理器250的设定中断。例如,当将第一优先级工作分配到处理器250时,队列控制器230可以生成针对处理器250的第一中断。当将第二优先级工作分配到处理器250时,队列控制器230可以生成针对处理器250的第二中断,以此类推。
尽管未示出,但当从命令队列210接收到被分类为第三优先级工作的工作之后经过的时间超过参考值时,队列控制器230可以将该工作重新分类为第二优先级工作,并且因此将该工作分配到处理器250。
处理器250可以根据优先级来处理工作(S109)。处理器250可以根据优先级,基于中断来处理工作。
图9示出根据实施例的图8中的操作S109中处理工作的操作细节的流程图。
首先,处理器250可以确定从队列控制器230分配的工作是否为第一优先级工作(S201)。处理器250可以基于与工作一起从队列控制器230传输的中断来确定该工作的优先级。
当在操作S201中确定了所分配的工作是第一优先级工作时,处理器250可以不终止处理器250当前正在处理的工作,并且可以根据设定中断,以阻塞多线程(BMT)方案来执行上下文切换到第一优先级工作(S203)。该BMT方案表示当在正在处理正常工作时,发生用于处理特定工作的中断时,从运行正常工作切换到运行特定工作。
参照图4,在处理器250通过根据处理器250的指令管线运行指令TH0-0、TH0-1、TH0-2、TH0-3、TH0-4和TH0-5而正在处理TH0工作时,向处理器250分配作为第一优先级工作(最高优先级工作)的TH1工作。作为响应,处理器250不终止TH0工作,而是可以暂停发布来自TH0工作的进一步指令,并且可以优先地处理TH1工作。
具体地,参照图5,当正在处理正常工作TH0时分配了由中断Interrupt 0指示的TH1工作时,其中中断Interrupt 0被先前分配以优先处理特定工作,处理器250可以停止处理TH0工作而不终止TH0工作,并且可以优先地处理包括指令TH1-0、TH1-1、TH1-2等的TH1工作。为了优先地执行TH1工作,处理器250可以停止处理TH0工作,并且在中断服务例程(ISR)区域中执行TH1工作的产生。TH1工作的产生可以包括生成用于TH1工作的指令。
然后,当对TH1工作的处理完成时,处理器250可以再次执行正常工作,该正常工作可以是TH0工作,或者是当先前已经完成TH0工作时的另一正常工作。
参照图6,当正在处理包括在地址1009中的指令A的工作时,分配了TH1工作以及由队列控制器230先前分配的中断Interrupt 0时,处理器250可以响应于中断Interrupt 0,跳转到中断向量表(IVT)的地址1030,确定用于处理中断服务例程(ISR)的位置,跳转到相应的ISR区域,执行TH1工作的产生,然后终止产生。然后,处理器250可以通过运行TH1工作的指令(例如,指令Instruct F以及指令Instruct F之后的指令)来恢复正常操作,并且执行TH1工作。当完成处理TH1工作中的指令时,处理器250可以执行与指令Instruct B相对应的正常操作,其中指令Instruct B可以对应于包括指令Instruct A的工作中的下一指令。
如图7所描述的,当在操作S201中确定了所分配的工作不是第一优先级工作时,将所分配的工作确定为第二优先级工作(S205),并且处理器250可以根据设定中断,以交错多线程(IMT)方案对第二优先级工作执行上下文切换(S207)。
以上所描述的本发明的实施例旨在说明而不是限制本发明。如本领域技术人员根据本公开将理解的是,各种替代方案和等同方案是可能的。本发明不限于或不受本文中描述的任何实施例的限制。本发明也不限于任何特定类型的半导体装置。相反,本发明涵盖落入所附权利要求书的范围内的所有变型和修改。
Claims (17)
1.一种数据存储装置,包括:
共享命令队列,将从多个主机处理器传输的多个工作排队;
队列控制器,根据优先级阈值将所述多个工作分类为多个级别工作,所述多个级别工作包括第一优先级工作、第二优先级工作和第三优先级工作,并且将所述多个级别工作中的一个或多个工作分配到处理器;
所述处理器,处理由所述队列控制器分配的工作;以及
存储器;
其中当分配所述一个或多个工作时,所述队列控制器通过根据所述优先级生成所述处理器的设定中断,来控制根据对应于多个级别的优先级处理工作,并且
当所分配的工作被分类为所述第一优先级工作时,所述处理器根据所述设定中断,以阻塞多线程方案即BMT方案对所分配的工作执行上下文切换,而不终止所述处理器已经正在处理的工作。
2.根据权利要求1所述的数据存储装置,其中当所分配的工作被分类为所述第二优先级工作时,所述处理器根据所述设定中断,以交错多线程方案即IMT方案对所分配的工作执行上下文切换。
3.根据权利要求1所述的数据存储装置,其中当从接收到被分类为所述第三优先级工作之后经过的时间超过参考值时,所述队列控制器将被分类为所述第三优先级工作的工作重新分类为所述第二优先级工作,并且将重新分类的工作分配到所述处理器。
4.根据权利要求1所述的数据存储装置,其中所述第一优先级工作具有比所述第二优先级工作更高的优先级,并且所述第二优先级工作具有比所述第三优先级工作更高的优先级。
5.根据权利要求1所述的数据存储装置,其中所述队列控制器根据优先级调度标准列出所述多个工作,并且基于所述优先级阈值将多个所列出的工作分类为所述多个级别工作。
6.根据权利要求5所述的数据存储装置,其中所述优先级调度标准包括工作的时间限制信息、所需的存储器容量、输入/输出速率即I/O速率、中央处理单元速率即CPU速率、进程重要程度和资源成本中的至少一个。
7.根据权利要求1所述的数据存储装置,其中所述数据存储装置包括多个处理器,所述多个处理器包括所述处理器,并且
其中所述队列控制器根据所述多个处理器中的每个处理器的中央处理单元利用率即CPU利用率、吞吐量、周转时间、等待时间和响应时间中的至少一个,来将所述工作分配到所述处理器。
8.根据权利要求1所述的数据存储装置,其中所述存储器是存储级存储器,即SCM。
9.一种操作数据存储装置的方法,所述方法包括:
将从多个主机处理器传输的多个工作排队;
根据优先级调度标准列出所述多个工作;
基于优先级阈值将多个所列出的工作分类为多个级别工作;
将所述多个级别工作中的工作分配到处理器;并且
使用所述处理器根据优先级来处理所述工作。
10.根据权利要求9所述的方法,其中将所述工作分配到所述处理器包括:根据对应于多个级别的所述优先级,生成所述处理器的设定中断。
11.根据权利要求10所述的方法,其中根据所述优先级来处理所述工作包括:根据所述优先级基于所述中断来处理所述工作。
12.根据权利要求10所述的方法,其中将所述多个工作分类为所述多个级别工作包括:根据所述优先级阈值将所述多个工作中的工作分别分类为第一优先级工作、第二优先级工作和第三优先级工作中的一种。
13.根据权利要求12所述的方法,其中根据所述优先级处理所述工作包括:根据所述设定中断,以阻塞多线程方案即BMT方案对被分类为所述第一优先级工作的工作执行上下文切换,而不终止正在处理的工作。
14.根据权利要求12所述的方法,其中根据所述优先级处理所述工作包括:根据所述设定中断,以交错多线程方案即IMT方案对被分类为所述第二优先级工作的工作执行上下文切换。
15.根据权利要求12所述的方法,进一步包括:
当从接收到被分类为所述第三优先级工作的工作之后的时间超过参考值时,将被分类为所述第三优先级工作的工作重新分类为所述第二优先级工作,并且将重新分类的工作分配到所述处理器。
16.根据权利要求12所述的方法,其中所述第一优先级工作具有比所述第二优先级工作更高的优先级,并且所述第二优先级工作具有比所述第三优先级工作更高的优先级。
17.根据权利要求9所述的方法,
其中所述数据存储装置包括多个处理器,所述多个处理器包括所述处理器,并且
其中将所述多个级别工作中的工作分配到所述处理器包括:根据所述多个处理器中的每个处理器的中央处理单元利用率即CPU利用率、吞吐量、周转时间、等待时间和响应时间中的至少一个,来选择所述处理器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2019-0137342 | 2019-10-31 | ||
KR1020190137342A KR20210051718A (ko) | 2019-10-31 | 2019-10-31 | 데이터 저장 장치 및 그것의 동작 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112749006A true CN112749006A (zh) | 2021-05-04 |
CN112749006B CN112749006B (zh) | 2024-04-16 |
Family
ID=75645498
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010671621.8A Active CN112749006B (zh) | 2019-10-31 | 2020-07-14 | 数据存储装置及其操作方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11573824B2 (zh) |
KR (1) | KR20210051718A (zh) |
CN (1) | CN112749006B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1992003784A1 (en) * | 1990-08-23 | 1992-03-05 | Supercomputer Systems Limited Partnership | Scheduling method for a multiprocessing operating system |
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 |
WO1999046679A1 (en) * | 1998-03-10 | 1999-09-16 | Motorola Inc. | Apparatus, method and article of manufacture for use with a priority based real-time operating system |
US20050050395A1 (en) * | 2003-08-28 | 2005-03-03 | Kissell Kevin D. | Mechanisms for assuring quality of service for programs executing on a multithreaded processor |
US20070143516A1 (en) * | 2005-12-19 | 2007-06-21 | Nec Electronics Corporation | Interrupt controller and interrupt control method |
CN104137081A (zh) * | 2012-02-13 | 2014-11-05 | 国际商业机器公司 | 偏移在先的高等待时间操作的存储器重排序队列 |
WO2018175065A1 (en) * | 2017-03-24 | 2018-09-27 | Western Digital Technologies, Inc. | System and method for processing and arbitrating submission and completion queues |
CN110088725A (zh) * | 2017-03-24 | 2019-08-02 | 西部数据技术公司 | 用于对提交队列和完成队列进行处理并做出仲裁的***和方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
CN112513821A (zh) * | 2018-08-01 | 2021-03-16 | 华为技术有限公司 | 用于scm应用的多实例2lm架构 |
-
2019
- 2019-10-31 KR KR1020190137342A patent/KR20210051718A/ko active Search and Examination
-
2020
- 2020-04-17 US US16/852,228 patent/US11573824B2/en active Active
- 2020-07-14 CN CN202010671621.8A patent/CN112749006B/zh active Active
Patent Citations (8)
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 |
WO1999046679A1 (en) * | 1998-03-10 | 1999-09-16 | Motorola Inc. | Apparatus, method and article of manufacture for use with a priority based real-time operating system |
US20050050395A1 (en) * | 2003-08-28 | 2005-03-03 | Kissell Kevin D. | Mechanisms for assuring quality of service for programs executing on a multithreaded processor |
US20070143516A1 (en) * | 2005-12-19 | 2007-06-21 | Nec Electronics Corporation | Interrupt controller and interrupt control method |
CN104137081A (zh) * | 2012-02-13 | 2014-11-05 | 国际商业机器公司 | 偏移在先的高等待时间操作的存储器重排序队列 |
WO2018175065A1 (en) * | 2017-03-24 | 2018-09-27 | Western Digital Technologies, Inc. | System and method for processing and arbitrating submission and completion queues |
CN110088725A (zh) * | 2017-03-24 | 2019-08-02 | 西部数据技术公司 | 用于对提交队列和完成队列进行处理并做出仲裁的***和方法 |
Also Published As
Publication number | Publication date |
---|---|
US20210132988A1 (en) | 2021-05-06 |
KR20210051718A (ko) | 2021-05-10 |
US11573824B2 (en) | 2023-02-07 |
CN112749006B (zh) | 2024-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8667201B2 (en) | Computer system interrupt handling | |
US8799929B2 (en) | Method and apparatus for bandwidth allocation mode switching based on relative priorities of the bandwidth allocation modes | |
KR101922681B1 (ko) | 셰이더 코어에서 셰이더 자원 할당을 위한 정책 | |
TWI537831B (zh) | 多核心處理器、用於執行處理程序切換之方法、用於保全一記憶體區塊之方法、用於致能使用一多核心裝置之異動處理之設備、以及用於執行記憶體異動處理之方法 | |
US9507632B2 (en) | Preemptive context switching of processes on ac accelerated processing device (APD) based on time quanta | |
US20120147021A1 (en) | Graphics compute process scheduling | |
EP2652614B1 (en) | Graphics processing dispatch from user mode | |
US20120229481A1 (en) | Accessibility of graphics processing compute resources | |
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 | |
US10489200B2 (en) | Hierarchical staging areas for scheduling threads for execution | |
US11429314B2 (en) | Storage device, storage system and operating method thereof | |
US20220206869A1 (en) | Virtualizing resources of a memory-based execution device | |
US8933942B2 (en) | Partitioning resources of a processor | |
US20130160017A1 (en) | Software Mechanisms for Managing Task Scheduling on an Accelerated Processing Device (APD) | |
US10073783B2 (en) | Dual mode local data store | |
EP2663926B1 (en) | Computer system interrupt handling | |
US20130135327A1 (en) | Saving and Restoring Non-Shader State Using a Command Processor | |
CN112749006B (zh) | 数据存储装置及其操作方法 | |
KR20170060843A (ko) | Vliw 인터페이스 장치 및 제어 방법 | |
US9329893B2 (en) | Method for resuming an APD wavefront in which a subset of elements have faulted | |
US9632834B2 (en) | Assigning priorities to computational work streams by mapping desired execution priorities to device priorities | |
TWI696115B (zh) | 記憶體儲存裝置及其操作方法 | |
US10423424B2 (en) | Replicated stateless copy engine |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |