CN116048770A - 用于进程调度的方法和设备 - Google Patents
用于进程调度的方法和设备 Download PDFInfo
- Publication number
- CN116048770A CN116048770A CN202210977889.3A CN202210977889A CN116048770A CN 116048770 A CN116048770 A CN 116048770A CN 202210977889 A CN202210977889 A CN 202210977889A CN 116048770 A CN116048770 A CN 116048770A
- Authority
- CN
- China
- Prior art keywords
- processor
- near memory
- information
- memory
- processors
- 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.)
- Pending
Links
Images
Classifications
-
- 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/5044—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 hardware capabilities
-
- 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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
- G06F15/7821—Tightly coupled to memory, e.g. computational memory, smart memory, processor in memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3037—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
-
- 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
- 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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/505—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 load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Multi Processors (AREA)
Abstract
提供了用于进程调度的方法和设备。所述方法包括:从多个进程接收操作请求;基于与多个近存储器处理器对应的多个存储器的预定的状态信息,确定所述多个近存储器处理器的优先级信息;基于确定的优先级信息,将接收的操作请求分配给至少一个近存储器处理器;和在状态表中,更新所述多个存储器中的与所述至少一个近存储器处理器对应的至少一个存储器的状态信息。
Description
本申请要求于2021年10月26日在韩国知识产权局提交的第10-2021-0143828号韩国专利申请的权益,所述韩国专利申请的全部公开出于所有目的通过引用包含于此。
技术领域
以下描述涉及用于进程调度的方法和设备。
背景技术
近来,在各种不同的行业(包括金融行业和医疗行业以及信息技术(IT)行业),对人工智能的兴趣已经增加。深度学习是人工智能的一个领域,深度学习可指学习深度神经网络并且可使用深度神经网络用于例如用户推荐、模式识别或推断的技术,在深度神经网络中增加了现有神经网络的层数。
发明内容
提供本发明内容来以简化的形式介绍下面在具体实施方式中进一步描述的构思的选择。本发明内容不意在确认要求保护的主题的关键特征或必要特征,也不意在用于帮助确定要求保护的主题的范围。
在一个总体方面,一种处理器实现的进程调度方法包括:从多个进程接收操作请求;基于与多个近存储器处理器对应的多个存储器的预定的状态信息,确定所述多个近存储器处理器的优先级信息;基于确定的优先级信息,将接收的操作请求分配给所述多个近存储器处理器中的至少一个近存储器处理器;和在状态表中,更新所述多个存储器中的与所述至少一个近存储器处理器对应的至少一个存储器的状态信息。
所述多个存储器可包括:存储器排、存储器存储体、双列直插式存储器模块(DIMM)和单列直插式存储器模块(SIMM)中的至少一个。
状态信息包括:关于分别与所述多个存储器中的每个存储器对应的所述多个近存储器处理器的状态信息。
状态信息可包括:优先级信息、写入状态信息、读取状态信息、操作大小信息、所需操作时间信息、操作目标数据标识信息、存储器温度信息和/或通道信息中的至少一个。
优先级信息可包括:基于写入状态信息、读取状态信息、所需操作时间信息、操作大小信息、存储器温度信息和/或通道信息中的至少一个确定的信息。
优先级信息可包括:通过将权重分配给写入状态信息和读取状态信息而确定的信息。
将操作请求分配给所述至少一个近存储器处理器的步骤包括:当所有的近存储器处理器正在执行操作时,基于所需操作时间信息,将操作请求分配给所述多个近存储器处理器中的被配置为首先结束当前正在处理的操作请求的近存储器处理器。
将接收的操作请求分配给所述至少一个近存储器处理器的步骤包括:当至少两个近存储器处理器基于所述至少两个存储器处理器的优先级信息具有相同的优先级时,基于所述至少两个近存储器处理器中的每个近存储器处理器的通道信息,将接收的操作请求分配给近存储器处理器。
将接收的操作请求分配给所述至少一个近存储器处理器的步骤可包括:基于所述多个近存储器处理器的写入信息和读取信息,确定所述多个近存储器处理器之中的用于处理接收的操作请求的近存储器处理器;并且将接收的操作请求分配给确定的近存储器处理器。
所述多个进程可包括:从接收的作业请求划分为的多个批被分别分配到的进程。
批可被配置为:具有基于接收的作业请求的大小信息和所述至少一个存储器的资源信息确定的大小。
所述方法可包括:通过所述至少一个近存储器处理器中的操作请求被分配到的近存储器处理器,在所述多个存储器中的与所述近存储器处理器对应的存储器中执行写入操作和读取操作。
执行写入操作和执行读取操作的步骤包括:通过所述近存储器处理器,在作为前一进程的第一进程的最后读取操作之前执行作为随后进程的第二进程的写入操作。
所述方法可包括:当接收的操作请求中的操作请求的大小比预定大小小时,将所述操作请求存储在至少包括存储器的调度器中。
基于确定的优先级信息来将接收的操作请求分配给所述至少一个近存储器处理器的步骤可包括:当所述多个近存储器处理器的数量比所述多个进程的数量大时,将进程的至少一个操作请求分配给至少一个近存储器处理器。
在一个总体方面,一种设备包括处理器,处理器被配置为:从多个进程接收操作请求;基于与多个近存储器处理器对应的多个存储器的预定的状态信息,确定所述多个近存储器处理器的优先级信息;基于确定的优先级信息,将接收的操作请求分配给至少一个近存储器处理器;并且在状态表中,更新所述多个存储器中的与所述至少一个近存储器处理器对应的至少一个存储器的状态信息。
所述设备可以是电子装置。
在一个总体方面,一种设备包括:调度器,至少包括存储器;和一个或多个处理器,被配置为:基于调度器的状态表,将作业请求划分为与多个进程对应的多个批,并且将所述多个进程分配给多个近存储器处理器,其中,将所述多个进程分配给所述多个近存储器处理器的步骤包括:从调度器接收所述多个近存储器处理器中的每个近存储器处理器的状态信息,和基于所述多个近存储器处理器的写入状态信息和读取状态信息来确定所述多个进程中的一个进程的操作请求将被分配到的近存储器处理器。
确定的近存储器处理器可被配置为:在作为前一进程的第一进程的最后读取操作之前执行作为随后进程的第二进程的写入操作。
读取操作和写入操作可被同时执行。
根据以下具体实施方式、附图和权利要求,其他特征和方面将是清楚的。
附图说明
图1示出根据一个或多个实施例的调度多个进程的示例方法。
图2A和图2B示出根据一个或多个实施例的状态表的示例。
图3示出根据一个或多个实施例的示例调度器。
图4示出根据一个或多个实施例的双缓冲器中的示例操作进程。
图5是示出根据一个或多个实施例的示例进程调度方法的流程图。
图6示出根据一个或多个实施例的近存储器处理器(near memory processor)的示例写入操作。
图7示出根据一个或多个实施例的近存储器处理器的示例读取操作。
图8示出根据一个或多个实施例的在指令大小小时的示例进程调度方法。
图9示出根据一个或多个实施例的在进程的数量比存储器的数量小时的示例进程调度方法。
图10示出根据一个或多个实施例的在所有近存储器处理器正在执行操作时的示例进程调度方法。
图11示出根据一个或多个实施例的在多个近存储器处理器具有相同优先级时的示例进程调度方法。
贯穿附图和具体实施方式,除非另外描述或提供,否则相同的附图标记将被理解为指相同或相似的元件、特征和结构。附图可不按比例,并且为了清楚、说明和方便,附图中的元件的相对大小、比例和描绘可被夸大。
具体实施方式
提供以下具体实施方式以帮助读者获得对在此描述的方法、设备和/或***的全面理解。然而,在理解本申请的公开之后,在此描述的方法、设备和/或***的各种改变、修改和等同物将是清楚的。例如,在此描述的操作顺序仅是示例,并不限于在此阐述的那些顺序,而是除了必须以特定次序发生的操作之外,可如在理解本申请的公开之后将是清楚的那样被改变。此外,为了更加清楚和简明,可省略在理解本申请的公开之后已知的特征的描述,注意,特征以及特征描述的省略也不意在承认它们的常识。
在此描述的特征可以以不同的形式体现,并且不应被解释为限于在此描述的示例。相反,在此描述的示例已仅被提供,以示出在理解本申请的公开之后将是清楚的实现在此描述的方法、设备和/或***的许多可行方式中的一些可行方式。
尽管在此可使用诸如“第一”、“第二”和“第三”的术语来描述各种构件、组件、区域、层或部分,但这些构件、组件、区域、层或部分不应受这些术语的限制。相反,这些术语仅用于将一个构件、组件、区域、层或部分与另一构件、组件、区域、层或部分区分开。因此,在不脱离示例的教导的情况下,在此描述的示例中所称的第一构件、第一组件、第一区域、第一层或第一部分也可被称为第二构件、第二组件、第二区域、第二层或第二部分。
贯穿说明书,当元件(诸如,层、区域或基底)被描述为“在”另一元件“上”、“连接到”或“结合到”另一元件时,该元件可直接“在”该另一元件“上”、直接“连接到”或“结合到”该另一元件,或者可存在介于它们之间的一个或多个其他元件。相反,当元件被描述为“直接在”另一元件“上”、“直接连接到”或“直接结合到”另一元件时,可不存在介于它们之间的其他元件。
在此使用的术语仅出于描述特定示例的目的,而不应用于限制公开。如在此使用的,除非上下文另外清楚地指示,否则单数形式也意在包括复数形式。如在此使用的,术语“和/或”包括相关联的所列项中的任何一个和任何两个或更多个的任何组合。如在此使用的,术语“包括”、“包括”和“具有”指定存在陈述的特征、数量、操作、元件、组件和/或它们的组合,但不排除存在或添加一个或多个其他特征、数量、操作、元件、组件和/或它们的组合。
此外,在此可使用诸如第一、第二、A、B、(a)、(b)等的术语来描述组件。这些术语中的每个不用于定义对应组件的本质、次序或顺序,而是仅用于将对应组件与一个或多个其他组件区分开。
除非另外定义,否则在此使用的所有术语(包括技术术语和科学术语)具有与由本公开所属领域的普通技术人员通常理解的含义和在理解本申请的公开的之后的含义相同的含义。除非在此明确地如此定义,否则术语(诸如,在通用词典中定义的术语)应被解释为具有与它们在相关领域的上下文和本申请的公开中的含义一致的含义,并且不应以理想化或过于形式化的含义进行解释。
在一个示例中,作为非限制性示例,电子装置的处理器(例如,一个或多个处理器)可执行例如指令(例如,编码)并且可控制电子装置的至少一个其他组件(例如,硬件组件或软件组件),并且可执行各种数据处理或其他操作。在一个示例中,作为数据处理或其他操作的至少一部分,处理器可将从另一组件接收的指令或数据存储在易失性存储器中,可处理存储在易失性存储器中的指令或数据,并且可将结果数据存储在非易失性存储器中。在一个示例中,处理器可包括主处理器(例如,中央处理装置和应用处理器)或可独立于主处理器或与主处理器一起操作的辅助处理器(例如,图形处理装置、神经处理器(NPU)、图像信号处理器、传感器集线器处理器和通信处理器)。例如,当电子装置包括主处理器和辅助处理器时,辅助处理器可被设置为使用比主处理器的功率更小的功率或者被设置为专用于指定的功能。辅助处理器可与主处理器分开实现或被实现为主处理器的一部分。在此,应注意,关于示例或实施例使用术语“可”(例如,关于示例或实施例可包括或实现什么)表示:存在包括或实现这样的特征的至少一个示例或实施例,而所有示例和实施例不限于此。
图1示出根据一个或多个实施例的调度多个进程的示例方法。
图1示出作业请求110、多个批(批0)111、(批1)112、(批2)113、(批3)114、(批4)115和(批5)116、多个进程(进程0)121、(进程1)122、(进程2)123、(进程3)124、(进程4)125和(进程5)126、调度器130、多个存储器(存储器0)140、(存储器1)150、(存储器2)160和(存储器3)170、以及分别与多个存储器140、150、160和170对应的多个近存储器处理器(nearmemory processor,NMP)(近存储器处理器0)141、(近存储器处理器1)151、(近存储器处理器2)161和(近存储器处理器3)171。
在一个示例中,处理器可从多个进程121、122、123、124、125和126中的每个接收操作请求。在一个示例中,在此使用的进程可指在计算机中连续地执行或在一段时间内执行的指令。在另一示例中,进程可指从操作***(OS)向其分配***资源的作业的单元。进程可包括至少一个线程。在一个示例中,线程可指在进程中被执行的多个流的单元。线程是在单个进程中操作的多个执行的流,并且可当在同一进程中的线程之间共享进程中的地址空间或资源的同时被执行。在一个示例中,单独的栈可被分配给进程中的每个线程,并且代码数据和堆区域(heap area)可被共享。
在一个示例中,多个进程可包括从作业请求110划分为的多个批被分别分配到的进程。作为非限制性示例,在此使用的作业请求110可指例如由用户编写以在计算机上运行的程序和用于执行该程序的输入数据。处理器可将作业请求110划分为多个批,并且同时对多个批进行处理。也就是说,处理器可执行以下多进程操作(multi-process operation):将单个作业请求110划分为多个批,将多个批分配给多个进程,然后执行同时处理。
在一个示例中,多个批可具有不同的大小。在一个示例中,从进程121、122、123、124、125和126发送到近存储器处理器141、151、161和171的嵌入查找(embedding lookup)操作请求可具有不同的计算量(例如,查找表中的索引的数量)。也就是说,由于作为嵌入查找操作的目标的查找表中的索引的数量可全部不同,因此批的大小可需要被改变。
在一个示例中,批可包括具有基于作业请求110的大小信息和存储器的资源信息确定的大小的批。在一个示例中,可被存储在存储器中的数据的大小可能是有限的。由于数据的大小可能是有限的,因此批的大小可需要基于存储器的资源信息而被确定。因此,处理器可基于存储器的资源信息来确定可被存储在存储器中的批的大小。另外,处理器还可基于存储器的资源信息来确定可由近存储器处理器处理的批的大小。因此,处理器可通过确定不超过存储器的限制的批的大小,来通过多进程方式对作业请求110执行无错误处理(errorless processing)。
在一个示例中,操作请求可包括深度学习操作请求。深度学习操作请求可包括学习深度学习模型或实施深度学习模型进行推断所需的操作请求。深度学习操作请求可包括例如嵌入查找操作请求。嵌入查找可指搜索和计算从存储有大型列表格式数据的查找表选择的索引。在一个示例中,嵌入查找操作可指:当处理器选择索引1、3、6、8和10时,从查找表寻找与索引1、3、6、8和10对应的嵌入向量,然后执行它们的操作。近存储器处理器1 151可对与索引1、3、6、8和10对应的嵌入向量进行拼接(concatenate,又称为,连接、级联)。在另一示例中,近存储器处理器1 151可对与索引1、3、6、8和10对应的嵌入向量进行求和。上述深度学习操作请求仅作为示例被提供,并且示例不限于此。
在一个示例中,处理器可基于优先级信息将操作请求分配给至少一个近存储器处理器。在另一示例中,处理器可使用包括存储器状态表的调度器130基于多个近存储器处理器141、151、161和171之中的优先级信息将操作请求分配给近存储器处理器。下面参照图2进一步描述存储器状态表。
在一个示例中,调度器130可包括处理电路***,处理电路***被配置为确定从多个进程121、122、123、124、125和126接收的操作请求将被分配到的用于执行操作的近存储器处理器。调度器130可包括存储器状态表。在一个示例中,存储器状态表可指存储与每个存储器对应的近存储器处理器的状态信息的表。处理器可通过实施包括存储器状态表的调度器130来确定用于处理操作请求的近存储器处理器。
在一个示例中,存储器可指包括至少一个存储器芯片的集。存储器可包括存储器排(memory rank)、存储器存储体、双列直插式存储器模块(DIMM)和单列直插式存储器模块(SIMM)中的至少一个。在一个示例中,存储器排可指使用单个存储器模块中的存储器芯片的一部分或全部生成的单个块或区域。在一个示例中,单个排可指64位范围的数据块。如果单个芯片=8位,则单个排可包括八个芯片。如果单个芯片=4位,则单个排可包括16个芯片。多个排可存在于单个DIMM中。在一个示例中,存储器存储体可指存储器插槽。存储器存储体可指连接到同一控制线以可同时存取的存储器芯片的集。在一个示例中,DIMM可指其中多个DRAM芯片被安装在电路板上的存储器模块,并且可用作计算机的主存储器。DIMM可包括多个排。
在一个示例中,优先级信息可包括关于每个近存储器处理器在处理当前操作请求时的适合性的信息。在一个示例中,作为关于多个近存储器处理器141、151、161和171中的每个的优先级信息,优先级信息可包括关于对应的近存储器处理器有多适合于处理操作请求的信息。优先级信息可包括多个近存储器处理器141、151、161和171中的每个的优先级分数。具有较高优先级分数的近存储器处理器更可能处理操作请求。下面参照图2进一步描述由处理器基于优先级信息来确定用于处理操作请求的近存储器处理器的方法。
深度学习可有益于提高执行操作的处理器的性能。
在一个或多个实施例中,在存储器和处理器被分开的示例中,提高了存储器与处理器之间的数据通信量。
在一个示例中,处理器可将操作请求分配给确定的近存储器处理器,并且可在状态表(例如,图2A的状态表200)中更新与至少一个近存储器处理器对应的至少一个存储器的状态信息。在一个示例中,处理器可将操作请求分配给与存储器1 150对应的近存储器处理器1 151。近存储器处理器1 151可与具有最高优先级分数的近存储器处理器对应。处理器可实施调度器130来确定近存储器处理器1 151处理操作请求。处理器可将操作请求分配给近存储器处理器1 151,并且可更新关于近存储器处理器1 151的状态信息。处理器可将近存储器处理器1 151的写入状态信息从空闲状态改变为忙碌状态。在另一示例中,处理器可将近存储器处理器1 151的读取状态信息从空闲状态改变为忙碌状态。
在一个示例中,为了提高深度学习操作速度,在不使用处理器(例如,CPU和微处理器(MPU))而是使用连接到每个存储器的操作器(例如,近存储器处理器)通过将操作器连接到每个存储器来执行深度学习操作之后,可从存储器仅接收操作结果。该配置可被称为近存储器处理。近存储器处理可例如以处理器(例如,CPU)在存储器(例如,排、存储体和DIMM)中实现近存储器操作器的这样的方式来加快操作速度。也就是说,近存储器处理可通过向每个存储器添加操作器装置来减少带宽,以防止在从存储器读取大量数据或向存储器写入大量数据时带宽的增加,或者近存储器处理可通过减少延迟来加快操作速度。
然而,可存在通过生成多个进程(或线程)来进行操作的程序。当多个进程被生成并且每个进程向存储器中存在的近存储器处理器发出具有不同大小的指令时,每个近存储器处理器的处理时间可变化。在此,确定用于每个进程的近存储器处理器并且然后执行操作的方法在总体操作时间方面可能是低效的。在一个示例中,如果由近存储器处理器的一个指令执行的计算量不同,则多个近存储器处理器中的每个的执行时间可不同。尽管操作请求被同时输入到所有的近存储器处理器,但是对应操作结束的时间可变化。在一个示例中,近存储器处理器0 141的所需操作时间可以是6个单位时间,近存储器处理器1 151的所需操作时间可以是10个单位时间。在这个示例中,近存储器处理器0 141可等待,直到近存储器处理器1 151的操作结束。也就是说,在近存储器处理器0 141中可发生4个单位时间的空闲时间。因此,可期望高效地确定从进程接收的操作请求将被给到的近存储器处理器。因此,可预期基于每个近存储器处理器的状态信息来确定操作请求将被分配到的近存储器处理器的方法,以减少每个近存储器处理器的空闲时间,从而实现提高近存储器处理器的利用率和减少近存储器处理器的操作时间。
图2A和图2B示出根据一个或多个实施例的状态表的示例。
图2A示出状态表200、近存储器处理器141、151、161和171、优先级分数210、写入状态220、读取状态230、操作大小240和表标识号250。
在一个示例中,状态表200可包括与分别与存储器对应的多个近存储器处理器相关的状态信息。在一个示例中,状态信息可指关于分别与各个存储器对应的近存储器处理器141、151、161和171的当前状态的信息。处理器可基于状态信息来生成优先级信息。另外,处理器可基于优先级信息来确定用于处理操作请求的近存储器处理器。
在一个示例中,状态信息可包括优先级信息、写入状态信息、读取状态信息、操作大小信息、所需操作时间信息、操作目标数据标识信息、存储器温度信息和通道信息中的至少一个。
在一个示例中,优先级信息可包括确定用于处理操作请求的近存储器处理器所需的信息。优先级信息可包括优先级分数210,并且处理器可基于优先级分数210来确定用于处理操作请求的近存储器处理器。在一个示例中,近存储器处理器0 141的优先级分数210可以是5,近存储器处理器1 151的优先级分数210可以是20,近存储器处理器2 161的优先级分数210可以是0,近存储器处理器3 171的优先级分数210可以是15。处理器可将操作请求分配给具有最高优先级分数210的近存储器处理器1 151。
在一个示例中,写入状态信息可包括关于近存储器处理器是否正在在存储器中执行写入操作的信息。在一个示例中,当近存储器处理器0141正在在存储器0 140中执行写入操作时,写入状态220可以是“忙碌”状态。在一个示例中,当近存储器处理器1 151不是正在在存储器1 150中执行写入操作时,写入状态220可以是“空闲”状态。
在一个示例中,读取状态信息可包括关于近存储器处理器是否正在在存储器中执行读取操作的信息。在一个示例中,当近存储器处理器2 161正在在存储器2 160中执行读取操作时,读取状态230可以是“忙碌”状态。在另一示例中,当近存储器处理器1 151不是正在在存储器1 150中执行读取操作时,读取状态230可以是“空闲”状态。
在一个示例中,操作大小信息可包括关于将由近存储器处理器执行的操作的大小的信息。可基于分配给进程的批的大小来确定操作的大小。在一个示例中,可基于在作为操作目标的查找表中引用的索引的数量来确定操作的大小。操作大小信息可包括操作大小240,并且近存储器处理器0 141可正在执行具有120的操作大小240的操作。
在一个示例中,操作时间信息可包括基于操作大小信息计算的时间信息。在一个示例中,操作时间信息可包括基于操作大小信息计算的时间信息。处理器可基于操作大小信息、存储器的资源状态信息和近存储器处理器的资源状态信息来计算所需操作时间信息。
在一个示例中,操作目标数据标识信息可包括标识从单个操作请求划分为的多个表的信息。操作请求可被划分到多个表中,并且可由此被分配给多个近存储器处理器。因此,每条表标识信息可在示例中用于聚合多个近存储器处理器的操作结果。在一个示例中,每条表标识信息可以是聚合多个近存储器处理器的操作结果所需要的或必需的。在一个示例中,操作目标数据标识信息可包括作为操作目标的表标识号250。仍然参照图2A,表标识号1、2和3可分别表示作为操作目标的表1、表2和表3。表1、表2和表3可以是作为进程1 122的操作请求的目标的表。近存储器处理器0 141可对操作目标“表1”进行操作,近存储器处理器1 151可对操作目标“表2”进行操作,近存储器处理器2 161可对操作目标“表3”进行操作。
在一个示例中,操作目标数据标识信息可包括用于标识从单个作业请求110划分为的多个表的信息。如上参照图1所述,作业请求110可被划分为多个批。多个批可分别指被划分为的多个表。因此,每条表标识信息可以是聚合多个近存储器处理器的操作结果所必需的。
在一个示例中,存储器温度信息可包括关于每个存储器(或近存储器处理器)的信息。由于具有高温度的近存储器处理器的操作速度可降低,因此处理器可基于温度信息来确定具有相对高温度的近存储器处理器的相对低优先级分数。因此,进程的操作请求可选择性地不被分配给具有相对高温度的近存储器处理器。
在一个示例中,通道信息可包括关于连接到存储器的通道的信息。存储器通道可指存储器与处理器之间的数据传输通道。在一个示例中,至少一个存储器可连接到单个通道。另外,通道信息可包括存储器时隙信息(memory slot information)。作为非限制性示例,参照图11进一步描述基于通道信息来确定用于处理操作请求的近存储器处理器的方法。
在一个示例中,处理器可包括来自近存储器处理器的状态寄存器的写入状态信息、读取状态信息、操作大小信息、所需操作时间信息、操作目标数据标识信息、存储器温度信息和通道信息中的至少一个。
在一个示例中,优先级信息可包括基于写入状态信息、读取状态信息、所需操作时间信息、操作大小信息、存储器温度信息和/或通道信息确定的信息。也就是说,当确定用于处理进程的操作请求的近存储器处理器时,处理器可考虑写入状态信息、读取状态信息、所需操作时间信息、操作大小信息、存储器温度信息和/或通道信息。
在一个示例中,优先级信息可包括通过将权重分配给写入状态信息和读取状态信息而确定的信息。处理器可通过将相对高的权重分配给写入状态信息和读取状态信息而不是所需操作时间信息、操作大小信息、存储器温度信息和/或通道信息来确定优先级信息。在另一示例中,处理器可主要基于写入状态信息和读取状态信息来计算优先级分数210。也就是说,处理器可基于写入状态信息和读取状态信息,确定进程的操作请求将被分配到的近存储器处理器。在一个示例中,所有的多个近存储器处理器可基于多个近存储器处理器的写入状态信息和读取状态信息而具有相同的优先级分数210。当所有的近存储器处理器基于写入状态信息和读取状态信息而具有相同的优先级分数210时,处理器可基于所需操作时间信息、操作大小信息、存储器温度信息和/或通道信息来确定进程的操作请求将被分配到的近存储器处理器。
图2B示出根据一个或多个实施例的写入状态220、读取状态230和分数260。
参照图2B,在一个示例中,如果写入状态220指示“空闲”状态,则分数260可以是15分,如果写入状态220指示“忙碌”状态,则分数260可以是0分,如果读取状态230指示“空闲”状态,则分数260可以是5分,如果读取状态230指示“忙碌”状态,则分数260可以是0分。分数260可指在计算优先级分数210的处理中使用的每个状态的元素分数。在一个示例中,“优先级分数210=写入状态分数+读取状态分数”。处理器可通过对相应状态的元素分数进行求和来计算优先级分数210。在一个示例中,“空闲”可表示在当前存储器中没有正在执行写入操作和/或读取操作。另外,“忙碌”可表示在当前存储器中正在执行写入操作和/或读取操作。在一个示例中,写入状态220的空闲可具有比读取状态230的空闲的分数更高的分数。当近存储器处理器执行进程的操作请求时,近存储器处理器可在读取操作之前初始地执行写入操作。因此,近存储器处理器可需要初始地执行写入操作以执行操作请求。因此,如果写入状态220是空闲的,则它可表示近存储器处理器当前可立即执行进程的操作请求。如果写入状态220是忙碌的并且读取状态230是空闲的,则它可表示近存储器处理器当前不可立即执行进程的操作请求并且可需要等待。因此,在确定优先级信息时,确定当前是否执行写入操作可以比确定当前是否执行读取操作更重要。
在一个示例中,处理器可基于写入状态信息和读取状态信息来确定进程的操作请求将被分配到的近存储器处理器。在一个示例中,其中写入状态220指示“忙碌”状态并且读取状态230指示“空闲”状态的近存储器处理器0 141的优先级分数210可以是5分,其中写入状态220指示“空闲”状态并且读取状态230指示“空闲”状态的近存储器处理器1 151的优先级分数210可以是20分,其中写入状态220指示“忙碌”状态并且读取状态230指示“忙碌”状态的近存储器处理器2 161的优先级分数210可以是0分,其中写入状态220指示“空闲”状态并且读取状态230指示“忙碌”状态的近存储器处理器3 171的优先级分数210可以是15分。也就是说,处理器可基于写入状态220和读取状态230来确定优先级分数210。在这个示例中,处理器可将进程的操作请求分配给具有最高优先级分数210的近存储器处理器1 151。
在另一示例中,基于写入状态信息和读取状态信息的优先级分数210可全部相同。在一个示例中,所有的近存储器处理器141、151、161和171可具有忙碌的写入状态220和空闲的读取状态230,并且因此可全部具有与5分相同的优先级分数210。在这个示例中,处理器可基于所需操作时间信息、操作大小信息、存储器温度信息和/或通道信息来确定进程的操作请求将被分配到的近存储器处理器。
图3示出根据一个或多个实施例的示例调度器。
图3示出作业请求110、个性化推荐模型310、进程0 121、进程1 122、进程n 320、操作器330、指令生成器340、存储器请求350、指令提交360、调度器130、指令370、后处理380、多个存储器140、150、160和170以及输出390。
图3的个性化推荐模型310仅作为示例被提供,并且各种类型的深度学习模型可被应用。在一个示例中,个性化推荐模型310可指向用户推荐适合于用户期望的信息的模型。处理器可使用个性化推荐模型310向用户提供推荐信息,并且因此可需要执行深度学习操作。处理器可将作业请求110划分为多个批,并且可将多个批分配给多个进程中的每个。进程0 121的操作请求可被发送到近存储器处理器驱动器的操作器330。在一个示例中,操作器330可包括多个操作器(例如,Op1和Op2)。指令生成器340可基于从操作器330接收的信息来生成指令。当指令被生成时,可向调度器130做出:接收关于将被实施操作的存储器的信息的存储器请求350。处理器可通过实施调度器130来确定用于处理进程0 121的操作请求的存储器1 150(或近存储器处理器1 151)。也就是说,处理器可基于优先级信息来确定用于处理进程0 121的操作请求的存储器1 150(或近存储器处理器1 151)。处理器可将指令370发送到用于处理操作请求的存储器1 150。连接到存储器1 150的近存储器处理器1 151可通过执行指令370来处理操作请求,并且可将操作结果发送到后处理380。处理器可再次将由后处理380生成的数据发送到进程0121,并且可获取输出390的数据。
在一个示例中,调度器130可包括用于存储或正在存储状态表(例如,状态表200)的存储器。调度器130可以是处理电路***(例如,作为硬件、或硬件和指令的组合),处理电路***基于存储在存储器状态表中的状态信息来确定用于处理操作请求的近存储器处理器。
图4示出根据一个或多个实施例的双缓冲器中的示例操作进程。
图4示出进程0 121、进程1 122、读取操作1 410、写入操作1 420、读取操作2 430、读取操作3 440和写入操作2 450。在图4中,执行以及写入和读取操作可指由近存储器处理器执行的操作。
在一个示例中,近存储器处理器可处理双缓冲器中的进程的操作请求。双缓冲器可指同时存储和处理数据的缓冲器结构。在一个示例中,双缓冲器可表示近存储器处理器可在将数据存储在第一缓冲器中的同时处理第二缓冲器的数据。
在一个示例中,近存储器处理器可在与近存储器处理器对应的存储器中执行写入操作和读取操作。执行写入操作和读取操作可包括由单个近存储器处理器在作为前一进程的第一进程的最后读取操作之前执行作为随后进程的第二进程的写入操作。在一个示例中,参照图4,第一进程可以是进程0 121,第二进程可以是进程1 122。另外,第一进程的最后读取操作可以是读取操作1 410和读取操作3 440。第二进程的写入操作可以是写入操作1 420和写入操作2 450。
在一个示例中,读取操作1 410和写入操作1 420可表示近存储器处理器可在作为前一进程的进程0 121的最后读取操作1 410被终止之后执行作为随后进程的进程1 122的第一写入操作1 420。在这个示例中,空闲时间可发生在作为前一进程的进程0 121的执行与作为随后进程的进程1 122的执行之间。响应于空闲时间的发生,操作所需的总时间量可能不必要地增加。因此,可通过防止空闲时间的发生来减少双缓冲器结构中的操作时间。
在一个示例中,读取操作和写入操作可在双缓冲器结构中被彼此区分,使得读取操作和写入操作可在双缓冲器结构中被同时执行。除非读取操作和写入操作被区分,否则作为随后进程的进程1 122可需要等待,直到作为前一进程的进程0 121的最后读取操作1410被终止。在这个示例中,空闲时间可发生在前一进程与随后进程之间。
在一个示例中,读取操作和写入操作可在双缓冲器结构中被彼此区分,使得作为随后进程的进程1 122的写入操作可在作为前一进程的进程0 121的最后写入操作被终止之后被执行。在一个示例中,在作为前一进程的进程0121的最后写入操作被终止的状态下,写入状态220可以是空闲状态,并且读取状态230可以是忙碌状态。在这个示例中,作为随后进程的进程1 122可被执行。因此,作为随后进程的进程1 122的第一写入操作2 450可在作为前一进程的进程0 121的最后读取操作3 440被执行之前被执行。作为另一示例,作为随后进程的进程1 122的第一写入操作2 450可在作为前一进程的进程0 121的最后读取操作3 440被执行的同时被执行。作为随后进程的进程1122的第一写入操作2 450可与作为前一进程的进程0 121的读取操作2 430被同时执行,或者作为随后进程的进程1 122的第一写入操作2 450可在读取操作2 430被终止之后被执行。因此,近存储器处理器可在作为前一进程的进程0 121的执行与作为随后进程的进程1 122的执行之间没有空闲时间的情况下,执行每个进程的操作处理。
图5是示出根据一个或多个实施例的示例进程调度方法的流程图。图5中的操作可以如所示的顺序和方式被执行。图5的一个或多个块以及块的组合可由执行指定功能的基于专用硬件的计算机或专用硬件和指令(例如,计算机或处理器指令)的组合来实现。除了下面的图5的描述之外,图1至图4的描述也适用于图5,并且通过引用包含于此。因此,出于简洁的目的,这里可不再重复上面的描述。
参照图5,在操作510中,根据示例的处理器可准备用于进程的操作请求的指令。当在操作510中指令就绪时,处理器可在操作520中请求存储器。在一个示例中,在操作520中请求存储器可指请求与用于处理进程的操作请求的特定存储器对应的近存储器处理器。在操作530中,处理器可基于优先级信息来选择具有高优先级的近存储器处理器。处理器可更新关于作业请求被分配到的近存储器处理器的状态信息。在操作531中,处理器可将包括在状态表中的写入状态信息从空闲状态更新为忙碌状态。
在操作540中,近存储器处理器可响应该进程。近存储器处理器可向该进程通知操作请求被接收到。
在操作550中,近存储器处理器可执行将指令写入特定存储器的写入操作。
在操作551中,处理器可更新包括在状态表200中的操作大小信息。在操作552中,处理器可更新包括在状态表200中的优先级信息。
在操作560中,近存储器处理器可执行算术运算。在一个示例中,在双缓冲器结构中,处理器可在在操作560中执行算术运算之后将使用忙碌状态更新的写入状态更新回空闲状态。通过这个,近存储器处理器可执行作为随后进程的图4的进程1 122的写入操作。当算术运算完成时,读取操作结果的操作可被执行。在操作561中,处理器可使用忙碌状态更新包括在状态表200中的近存储器处理器的读取状态信息。
当在操作570中确定算术运算完成时,处理器可在操作571中使用空闲状态更新所有的写入状态信息和读取状态信息。作为另一示例,在双缓冲器结构中,处理器可使用空闲状态仅更新读取状态。在双缓冲器结构中,在执行操作560之后,处理器将使用忙碌状态更新的写入状态更新回空闲状态,并且因此可使用空闲状态仅更新读取状态。
当在操作570中确定算术运算未完成时,近存储器处理器可在操作560中执行算术运算,并且可在操作561中使用忙碌状态更新包括在状态表200中的近存储器处理器的读取状态信息。
在操作580中,处理器可执行从特定存储器读取操作结果的读取操作。
图6示出根据一个或多个实施例的近存储器处理器的示例写入操作。
图6示出多个进程121、122、123、124、125和126、调度器130、存储器选择610、状态表620、多个存储器140、150、160和170以及写入指令630。
在一个示例中,处理器可生成用于使用近存储器处理器执行操作的指令。当指令从多个进程121、122、123、124、125和126被并行生成时,处理器可使用调度器130确定用于处理操作请求的特定存储器(或近存储器处理器)。
在一个示例中,处理器可使用调度器130顺序地处理每个进程的操作请求。图6示出进程3 124的操作请求首先到达并被处理的示例。处理器可接收进程3 124的操作请求,并且可验证关于进程3 124的标识信息。
在一个示例中,处理器可基于包括在状态表620中的优先级信息来确定存储器1150可用于进程3 124的操作请求。也就是说,处理器可将包括在状态表620中的优先级信息用于“选择可用于进程3 124的操作请求的存储器”的存储器选择610。
在一个示例中,处理器可向进程3 124发送“表示进程3 124的操作请求被分配给存储器1 150”的结果信息。处理器可将指令写入存储器1 150的近存储器处理器1 151的缓冲器。
在一个示例中,响应于在缓冲器中执行指令写入操作,处理器可更新包括在状态表620中的状态信息。
在一个示例中,在写入操作完成之后,处理器可从进程3 124接收操作请求指令,并且可向近存储器处理器1 151指示操作请求。另外,当写入操作完成时,处理器可更新包括在状态表620中的状态信息。作为另一示例,在双缓冲器结构中,处理器可响应于写入操作的完成而使用空闲状态更新包括在状态表620中的写入状态。
图7示出根据一个或多个实施例的近存储器处理器的示例读取操作。
图7示出多个进程121、122、123、124、125和126、调度器130、存储器选择710、状态表620、多个存储器140、150、160和170、操作请求完成状态验证720以及读取指令730。
在一个示例中,响应于进程3 124的请求,处理器可验证在近存储器处理器1 151中操作是否完成。在一个示例中,处理器可从进程3 124接收对操作请求完成状态验证720的请求。在这个示例中,处理器可通过实施包括在近存储器处理器1 151中的寄存器来验证操作是否完成。
在一个示例中,当操作完成时,处理器可从存储器1 150读取近存储器处理器1151的操作结果。处理器可通过执行读取指令730从存储器1 150读取近存储器处理器1 151的操作结果。
在一个示例中,当读取操作完成时,处理器可更新包括在状态表620中的状态信息。
图8示出根据一个或多个实施例的在指令大小小时的示例进程调度方法。
图8示出多个进程121、122、123、124、125和126、调度器130、存储器选择810、状态表620、多个存储器140、150、160和170、写入指令820以及操作结果830。
在一个示例中,当操作请求的大小比预定大小小时,处理器可将操作请求存储在调度器130中。指令可基于进程的操作请求被生成。操作请求可具有各种大小,并且指令也可具有各种大小。
在一个示例中,指令可具有相对大或相对小的大小。例如,当指令的大小比预定大小大时,处理器可如上面参照图1至图7所述在调度器130外部直接读取和/或写入指令,并且处理器可使用调度器130仅获取关于可用存储器(或近存储器处理器)的信息。这可以是有效的,因为如果大型指令被发送到调度器130,则可由于带宽限制而发生瓶颈现象。
在一个示例中,当指令的大小比预定大小小时,处理器可将指令从进程发送到调度器130。在这个示例中,尽管指令被发送,但是瓶颈现象可能不太可能发生。因此,处理器可从进程接收指令并可将指令发送到调度器130,并且处理器可仅从调度器130接收操作结果。例如,处理器可接收进程3 124的操作请求,并且可执行“选择用于处理操作请求的存储器”的存储器选择810。当存储器1 150被选择时,处理器可将写入指令820发送到调度器130。处理器可向近存储器处理器1 151发送存储在调度器130中的写入指令820。处理器可读取近存储器处理器1 151的操作结果830,并且可将操作结果830存储在调度器130中。处理器可读取存储在调度器130中的操作结果830,并且可将操作结果830发送到进程3 124。
在一个示例中,由于处理器可将指令和操作结果存储在调度器130中,因此处理器可对每个近存储器处理器的指令进行排队。处理器可通过立即将操作请求分配给可用的近存储器处理器来提高多个近存储器处理器的利用率。
图9示出根据一个或多个实施例的在进程的数量比存储器的数量小时的示例进程调度方法。
图9示出进程0 121、进程1 122、调度器130、存储器选择910、状态表620、写入指令920、多个存储器140、150、160和170以及多个近存储器处理器141、151、161和171。
在一个示例中,进程的数量可比存储器的数量小。在一个示例中,参照图9,进程的数量是两个(进程0 121和进程1 122),并且存储器的数量可以是四个(存储器0 140、存储器1 150、存储器2 160和存储器3 170)。
在一个示例中,当多个进程的数量比多个近存储器处理器的数量小时,处理器可将进程的至少一个操作请求分配给至少一个近存储器处理器。在一个示例中,处理器可从进程1 122接收三个操作请求。处理器可通过实施调度器130来确定用于处理三个操作请求的近存储器处理器。处理器可基于优先级信息将进程1 122的操作请求分配给近存储器处理器0 141、近存储器处理器1 151和近存储器处理器2 161。在另一示例中,处理器可从进程1 122接收单个操作请求,并且可从进程1 122接收用于分配多个近存储器处理器以处理单个操作请求的请求。为了处理单个操作请求,处理器可分配近存储器处理器0 141、近存储器处理器1 151和近存储器处理器2 161。
当进程的数量大于或等于存储器的数量时,处理器可通过上面使用图1至图7描述的方法将操作请求分配给近存储器处理器。
图10示出根据一个或多个实施例的在所有的近存储器处理器正在执行操作时的示例进程调度方法。
图10示出进程4 125、调度器130、优先级分数1010、状态表620、多个近存储器处理器141、151、161和171、近存储器处理器0 141的所需操作时间1020、近存储器处理器1 151的所需操作时间1030、近存储器处理器2 161的所需操作时间1040、以及近存储器处理器3171的所需操作时间1050。
在一个示例中,当所有的近存储器处理器正在执行操作时,处理器可基于所需操作时间信息来确定预期首先结束当前正在处理的操作请求的近存储器处理器。在一个示例中,处理器可接收进程4 125的操作请求。处理器可基于包括在状态信息中的优先级分数1010,将操作请求分配给近存储器处理器。在一个示例中,所有的多个近存储器处理器141、151、161和171可正在执行操作。在一个示例中,近存储器处理器0 141可正在处理进程0121的操作请求,近存储器处理器1 151可正在处理进程1 122的操作请求,近存储器处理器2 161可正在处理进程2 123的操作请求,近存储器处理器3 171可正在处理进程3 124的操作请求。在这个示例中,所有的多个近存储器处理器可具有与0相同的优先级分数1010。当所有的近存储器处理器正在执行操作时,处理器可基于所需操作时间信息来确定操作请求将被分配到的近存储器处理器。所需操作时间信息可包括基于操作大小信息计算的时间信息。在一个示例中,近存储器处理器0 141的所需操作时间1020可以是4个单位时间,近存储器处理器1 151的所需操作时间1030可以是2个单位时间,近存储器处理器2 161的所需操作时间1040可以是1个单位时间,近存储器处理器3 171的所需操作时间1050可以是5个单位时间。处理器可将进程4 125的操作请求分配给预期首先结束操作的近存储器处理器2161。在一个示例中,近存储器处理器2 161可在完成当前正在被执行的进程2 123的操作请求之后处理进程4 125的操作请求。
图11示出根据一个或多个实施例的在多个近存储器处理器具有相同优先级时的示例进程调度方法。
图11示出进程4 125、调度器130、近存储器处理器2 161和近存储器处理器3 171的优先级分数1130、状态表620、多个近存储器处理器141、151、161和171、通道1 1110以及通道2 1120。
在一个示例中,当至少两个近存储器处理器基于它们的优先级信息具有相同的优先级时,处理器可基于每个近存储器处理器的通道信息来将操作请求分配给近存储器处理器。
在一个示例中,处理器可接收进程4 125的操作请求。处理器可参照包括在调度器130中的状态表620。所有的近存储器处理器2 161和近存储器处理器3 171可具有作为20分的最高优先级分数1130。近存储器处理器0 141和近存储器处理器1 151可具有为0的优先级分数1130,并且当前不可处理操作请求。因此,处理器可将操作请求分配给具有相同优先级分数1130的近存储器处理器2 161和近存储器处理器3 171中的一个。在这个示例中,处理器可基于近存储器处理器2 161和近存储器处理器3 171中的每个的通道信息来确定操作请求将被分配到的近存储器处理器。在一个示例中,近存储器处理器0 141、近存储器处理器1 151和近存储器处理器2 161可被包括在通道1 1110中。另外,近存储器处理器3 171可被包括在通道2 1120中。近存储器处理器2 161可与当前正在执行操作的近存储器处理器0 141和近存储器处理器1 151存在于同一通道中。在这个示例中,由于近存储器处理器0141和近存储器处理器1 151的操作结果正在使用通道1 1110而被发送,因此在发送近存储器处理器2 161的操作结果时可发生瓶颈现象。因此,处理器可将进程4 125的作业请求分配给包括在当前未使用的通道2 1120中的近存储器处理器3 171。
在一个示例中,由于作业请求使用通道信息而被分配给近存储器处理器,因此可防止操作处理时间由于“在多个近存储器处理器的操作结果通过单个通道而被发送和接收时发生的瓶颈现象”而增加。
调度器130、存储器140、150、160和170、近存储器处理器141、151、161、171和其他装置、以及在此描述的其他组件被实现为硬件组件并且由硬件组件实现。可用于执行本申请中描述的操作的硬件组件的示例在适当的情况下包括:控制器、传感器、生成器、驱动器、存储器、比较器、算术逻辑单元、加法器、减法器、乘法器、除法器、积分器以及被配置为执行本申请中描述的操作的任何其他电子组件。在其他示例中,执行本申请中描述的操作的硬件组件中的一个或多个由计算硬件(例如,由一个或多个处理器或计算机)来实现。处理器或计算机可由一个或多个处理元件(诸如,逻辑门阵列、控制器和算术逻辑单元、数字信号处理器、微型计算机、可编程逻辑控制器、现场可编程门阵列、可编程逻辑阵列、微处理器或被配置为以限定的方式响应并执行指令以实现期望结果的任何其他装置或装置的组合)来实现。在一个示例中,处理器或计算机包括或连接到存储由处理器或计算机执行的指令或软件的一个或多个存储器。由处理器或计算机实现的硬件组件可执行指令或软件(诸如,操作***(OS)和在OS上运行的一个或多个软件应用)以执行本申请中描述的操作。硬件组件还可响应于指令或软件的执行而访问、操纵、处理、创建和存储数据。为了简单起见,单数术语“处理器”或“计算机”可用于在本申请中描述的示例的描述中,但是在其他示例中,多个处理器或计算机可被使用,或者处理器或计算机可包括多个处理元件、或多种类型的处理元件、或两者。例如,单个硬件组件、或者两个或更多个硬件组件可由单个处理器、或者两个或更多个处理器、或者处理器和控制器来实现。一个或多个硬件组件可由一个或多个处理器、或者处理器和控制器来实现,并且一个或多个其他硬件组件可由一个或多个其他处理器、或者另外的处理器和另外的控制器来实现。一个或多个处理器、或者处理器和控制器可实现单个硬件组件、或者两个或更多个硬件组件。硬件组件可具有不同的处理配置中的任何一个或多个,不同的处理配置的示例包括:单个处理器、独立处理器、并行处理器、单指令单数据(SISD)多处理、单指令多数据(SIMD)多处理、多指令单数据(MISD)多处理和多指令多数据(MIMD)多处理。
图1至图11中示出的执行本申请中描述的操作的方法由计算硬件(例如,由一个或多个处理器或计算机)执行,计算硬件被实现为如上所述执行指令或软件以执行本申请中描述的由所述方法执行的操作。例如,单个操作、或者两个或更多个操作可由单个处理器、或者两个或更多个处理器、或者处理器和控制器来执行。一个或多个操作可由一个或多个处理器、或者处理器和控制器来执行,并且一个或多个其他操作(例如,作为处理器实现的方法的相应操作)可由一个或多个其他处理器、或者另外的处理器和另外的控制器来执行。一个或多个处理器、或者处理器和控制器可执行单个操作、或者两个或更多个操作。
用于控制计算硬件(例如,一个或多个处理器或计算机)以实现硬件组件并执行如上所述的方法的指令或软件可被编写为计算机程序、代码段、指令或它们的任何组合,以单独地或共同地指示或配置一个或多个处理器或计算机作为机器或专用计算机进行操作,以执行由如上所述的硬件组件和方法执行的操作。在一个示例中,指令或软件包括由一个或多个处理器或计算机直接执行的机器代码(诸如,由编译器产生的机器代码)。在另一示例中,指令或软件包括由一个或多个处理器或计算机使用解释器执行的高级代码。可基于附图中示出的框图和流程图以及在说明书中的相应描述使用任何编程语言来编写指令或软件,附图中示出的框图和流程图以及说明书中的相应描述公开了用于执行由如上所述的硬件组件和方法执行的操作的算法。
用于控制计算硬件(例如,一个或多个处理器或计算机)以实现硬件组件并执行如上所述的方法的指令或软件以及任何相关联的数据、数据文件和数据结构可被记录、存储或固定在一个或多个非暂时性计算机可读存储介质中,或者可被记录、存储或固定在一个或多个非暂时性计算机可读存储介质上。非暂时性计算机可读存储介质的示例包括:只读存储器(ROM)、随机存取可编程只读存储器(PROM)、EEPROM、RAM、DRAM、SRAM、闪存、非易失性存储器、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、蓝光或光盘存储装置、硬盘驱动器(HDD)、固态驱动器(SSD)、闪存、卡式存储器(诸如,多媒体卡或微型卡(例如,安全数字(SD)或极限数字(XD)))、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及任何其他装置,任何其他装置被配置为以非暂时性方式存储指令或软件以及任何相关联的数据、数据文件和数据结构并将指令或软件以及任何相关联的数据、数据文件和数据结构提供给一个或多个处理器和计算机,使得一个或多个处理器和计算机能够执行指令。在一个示例中,指令或软件以及任何相关联的数据、数据文件和数据结构被分布在联网的计算机***上,使得指令和软件以及任何相关联的数据、数据文件和数据结构以分布式方式被一个或多个处理器或计算机存储、访问和执行。
虽然本公开包括特定示例,但是对于本领域普通技术人员将清楚的是,在理解本申请的公开之后,在不脱离权利要求及其等同物的精神和范围的情况下,可在这些示例中进行形式和细节上的各种改变。在此描述的示例应仅被认为是描述性的,而不是出于限制的目的。每个示例中的特征或方面的描述应被认为可适用于其他示例中的类似特征或方面。如果描述的技术以不同的次序被执行,和/或如果描述的***、架构、装置或电路中的组件以不同的方式被组合、和/或由其他组件或其等同物替代或补充,则可实现合适的结果。
因此,公开的范围不是由具体实施方式限定,而是由权利要求及其等同物限定,并且在权利要求及其等同物的范围内的所有变化应被解释为被包括在公开中。
Claims (20)
1.一种处理器实现的用于进程调度的方法,所述方法包括:
从多个进程接收操作请求;
基于与多个近存储器处理器对应的多个存储器的预定的状态信息,确定所述多个近存储器处理器的优先级信息;
基于确定的优先级信息,将接收的操作请求分配给所述多个近存储器处理器中的至少一个近存储器处理器;和
在状态表中,更新所述多个存储器中的与所述至少一个近存储器处理器对应的至少一个存储器的状态信息。
2.根据权利要求1所述的方法,其中,所述多个存储器包括:存储器排、存储器存储体、双列直插式存储器模块和单列直插式存储器模块中的至少一个。
3.根据权利要求1所述的方法,其中,状态信息包括:关于分别与所述多个存储器中的每个存储器对应的所述多个近存储器处理器的状态信息。
4.根据权利要求1所述的方法,其中,状态信息包括:优先级信息、写入状态信息、读取状态信息、操作大小信息、所需操作时间信息、操作目标数据标识信息、存储器温度信息和通道信息中的至少一个。
5.根据权利要求4所述的方法,其中,优先级信息包括:基于写入状态信息、读取状态信息、所需操作时间信息、操作大小信息、存储器温度信息和通道信息中的至少一个确定的信息。
6.根据权利要求4所述的方法,其中,优先级信息包括:通过将权重分配给写入状态信息和读取状态信息而确定的信息。
7.根据权利要求1所述的方法,其中,将接收的操作请求分配给所述至少一个近存储器处理器的步骤包括:当所有的近存储器处理器正在执行操作时,基于所需操作时间信息,将接收的操作请求分配给所述多个近存储器处理器中的被配置为首先结束当前正在处理的操作请求的近存储器处理器。
8.根据权利要求1所述的方法,其中,将接收的操作请求分配给所述至少一个近存储器处理器的步骤包括:当至少两个近存储器处理器基于所述至少两个近存储器处理器的优先级信息具有相同的优先级时,基于所述至少两个近存储器处理器中的每个近存储器处理器的通道信息,将接收的操作请求分配给近存储器处理器。
9.根据权利要求1所述的方法,其中,将接收的操作请求分配给所述至少一个近存储器处理器的步骤包括:
基于所述多个近存储器处理器的写入状态信息和读取状态信息,确定所述多个近存储器处理器之中的用于处理接收的操作请求的近存储器处理器;并且
将接收的操作请求分配给确定的近存储器处理器。
10.根据权利要求1所述的方法,其中,所述多个进程包括:从接收的作业请求划分为的多个批被分别分配到的进程。
11.根据权利要求10所述的方法,其中,批被配置为:具有基于接收的作业请求的大小信息和所述至少一个存储器的资源信息确定的大小。
12.根据权利要求1至权利要求11中的任一项所述的方法,还包括:
通过所述至少一个近存储器处理器中的接收的操作请求被分配到的近存储器处理器,在所述多个存储器中的与所述近存储器处理器对应的存储器中执行写入操作和读取操作。
13.根据权利要求12所述的方法,其中,执行写入操作和执行读取操作的步骤包括:通过所述近存储器处理器,在作为前一进程的第一进程的最后读取操作之前执行作为随后进程的第二进程的写入操作。
14.根据权利要求1至权利要求11中的任一项所述的方法,还包括:
当接收的操作请求中的操作请求的大小比预定大小小时,将所述操作请求存储在至少包括存储器的调度器中。
15.根据权利要求1至权利要求11中的任一项所述的方法,其中,基于确定的优先级信息来将接收的操作请求分配给所述至少一个近存储器处理器的步骤包括:当所述多个近存储器处理器的数量比所述多个进程的数量大时,将进程的至少一个操作请求分配给所述至少一个近存储器处理器。
16.一种用于进程调度的设备,包括:
处理器,被配置为:
从多个进程接收操作请求;
基于与多个近存储器处理器对应的多个存储器的预定的状态信息,确定所述多个近存储器处理器的优先级信息;
基于确定的优先级信息,将接收的操作请求分配给至少一个近存储器处理器;和
在状态表中,更新所述多个存储器中的与所述至少一个近存储器处理器对应的至少一个存储器的状态信息。
17.根据权利要求16所述的设备,其中,所述设备是电子装置。
18.一种用于进程调度的设备,包括:
调度器,至少包括存储器;和
处理器,被配置为:基于调度器的状态表,将作业请求划分为与多个进程对应的多个批,并且将所述多个进程分配给多个近存储器处理器,
其中,将所述多个进程分配给所述多个近存储器处理器的步骤包括:
从调度器接收所述多个近存储器处理器中的每个近存储器处理器的状态信息,和
基于所述多个近存储器处理器的写入状态信息和读取状态信息,确定所述多个进程中的一个进程的操作请求将被分配到的近存储器处理器。
19.根据权利要求18所述的设备,其中,确定的近存储器处理器被配置为:在作为前一进程的第一进程的最后读取操作之前执行作为随后进程的第二进程的写入操作。
20.根据权利要求19所述的设备,其中,读取操作和写入操作被同时执行。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2021-0143828 | 2021-10-26 | ||
KR1020210143828A KR20230059536A (ko) | 2021-10-26 | 2021-10-26 | 프로세스 스케줄링 방법 및 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116048770A true CN116048770A (zh) | 2023-05-02 |
Family
ID=83508356
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210977889.3A Pending CN116048770A (zh) | 2021-10-26 | 2022-08-15 | 用于进程调度的方法和设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230127869A1 (zh) |
EP (1) | EP4174671A1 (zh) |
KR (1) | KR20230059536A (zh) |
CN (1) | CN116048770A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11977780B2 (en) * | 2021-05-17 | 2024-05-07 | Samsung Electronics Co., Ltd. | Near memory processing dual in-line memory module and method for operating the same |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10324644B2 (en) * | 2017-03-31 | 2019-06-18 | Hewlett Packard Enterprise Development Lp | Memory side accelerator thread assignments |
-
2021
- 2021-10-26 KR KR1020210143828A patent/KR20230059536A/ko active Search and Examination
-
2022
- 2022-07-11 US US17/861,442 patent/US20230127869A1/en active Pending
- 2022-08-15 CN CN202210977889.3A patent/CN116048770A/zh active Pending
- 2022-09-29 EP EP22198718.3A patent/EP4174671A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4174671A1 (en) | 2023-05-03 |
US20230127869A1 (en) | 2023-04-27 |
KR20230059536A (ko) | 2023-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11741345B2 (en) | Multi-memory on-chip computational network | |
US10540093B2 (en) | Multidimensional contiguous memory allocation | |
US10846621B2 (en) | Fast context switching for computational networks | |
US20190180183A1 (en) | On-chip computational network | |
US8086806B2 (en) | Systems and methods for coalescing memory accesses of parallel threads | |
JP7451614B2 (ja) | オンチップの計算ネットワーク | |
US8392669B1 (en) | Systems and methods for coalescing memory accesses of parallel threads | |
CN111656339B (zh) | 存储器装置及其控制方法 | |
CN113760531A (zh) | 调度器、操作调度器的方法以及包括调度器的加速器设备 | |
US20140143524A1 (en) | Information processing apparatus, information processing apparatus control method, and a computer-readable storage medium storing a control program for controlling an information processing apparatus | |
CN113312171A (zh) | 加速器、加速器的操作方法和加速器*** | |
US10223269B2 (en) | Method and apparatus for preventing bank conflict in memory | |
CN113011553A (zh) | 加速器、操作加速器的方法和包括加速器的装置 | |
CN116048770A (zh) | 用于进程调度的方法和设备 | |
GB2579702A (en) | Accelerated access to computations results generated from data stored in memory devices | |
US11093276B2 (en) | System and method for batch accessing | |
US20220318015A1 (en) | Enforcing data placement requirements via address bit swapping | |
CN114911723A (zh) | 存储器控制器和存储器控制方法 | |
CN113454612B (zh) | 存储装置操作编排 | |
CN114548358A (zh) | 计算方法和装置 | |
WO2021057112A1 (zh) | 矩阵运算电路、矩阵运算装置及矩阵运算方法 | |
KR101457802B1 (ko) | 병렬화 기법을 활용하는 플래시 메모리 칩 | |
JP7003752B2 (ja) | データ転送装置、データ転送方法、プログラム | |
CN115129369A (zh) | 命令分发方法、命令分发器、芯片以及电子设备 | |
CN114153755A (zh) | 存储器内处理器、存储器访问设备以及存储器访问方法 |
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 |