CN112328514B - 一种多线程处理器系统产生独立进程标识的方法和装置 - Google Patents
一种多线程处理器系统产生独立进程标识的方法和装置 Download PDFInfo
- Publication number
- CN112328514B CN112328514B CN202011262710.3A CN202011262710A CN112328514B CN 112328514 B CN112328514 B CN 112328514B CN 202011262710 A CN202011262710 A CN 202011262710A CN 112328514 B CN112328514 B CN 112328514B
- Authority
- CN
- China
- Prior art keywords
- physical
- thread
- identification
- threads
- request
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 445
- 230000008569 process Effects 0.000 title claims abstract description 409
- 238000012544 monitoring process Methods 0.000 claims abstract description 65
- 238000004590 computer program Methods 0.000 claims description 22
- 230000009191 jumping Effects 0.000 claims description 4
- 238000007726 management method Methods 0.000 description 34
- 238000013507 mapping Methods 0.000 description 8
- 238000001824 photoionisation detection Methods 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 101100190462 Caenorhabditis elegans pid-1 gene Proteins 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 101100190464 Caenorhabditis elegans pid-2 gene Proteins 0.000 description 1
- 101100190466 Caenorhabditis elegans pid-3 gene Proteins 0.000 description 1
- 101100243942 Caenorhabditis elegans pid-4 gene Proteins 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
一种多线程处理器系统产生独立进程标识的方法和装置。所述方法包括:运行在某个物理线程上的软件线程分别上报软件线程正在使用的进程标识,并在需要产生新的进程时,发送进程标识请求到进程监测单元;进程监测单元由设定的进程标识中选择未被使用的进程标识作为当前可用标识,并按照设定的规则在可用标识中选择一个作为当前进程标识;在多个物理线程中存在进程请求的情况下,按照多个物理线程的编号顺序形成请求队列,将多个物理线程中对应每个物理线程的当前进程标识发送到发出进程标识请求的物理线程;发送进程标识请求的物理线程接收进程监测单元发送的当前进程标识,并将其作为正在产生的进程标识产生新进程。
Description
技术领域
本发明涉及多线程处理器领域,特别涉及一种多线程处理器系统产生独立进程标识的方法和装置。
背景技术
在处理器领域,内存管理单元(Memory Management Unit,MMU)是处理器中用于管理虚拟存储器和物理存储器之间映射的电路,其用于将虚拟地址映射为物理地址,提供硬件机制的内存访问授权。多线程处理器具有多个物理线程(或硬件指令管道),每个物理线程在其上有虚拟线程运行时,均需要为其做出相应的存储器映射。因此,多个物理线程将分别对应不同的存储器区域。
现有的多线程处理器系统产生进程标识(Process IDentifier,PID)主要是通过MMU线程间共享的页映射,线程间共享的页映射可最大化地利用映射页资源,线程动态分配映射页,不论多少个线程在运行,所有的映射页都能被有效利用,这种结构可大大减少硬件电路,减少芯片面积。
然而,这种结构面临软件对PID的管理问题:软件为线程中的进程分配不同的PID,进程通过PID来标识MMU中属于自己的映射页。由于线程间共享MMU映射页,且PID是循环的数值,如此,每次PID溢出时,操作系统需要冲刷MMU所有页,导致其他线程正在使用的页也会被冲刷掉,增加其他线程地址转换失败几率,并且,多个线程共同使用有限的PID数量,这样增加了PID溢出的频率,降低系统性能。
发明内容
本申请提供一种多线程处理器系统产生独立进程标识的方法、装置、设备和计算机可读存储介质,以消除PID溢出时带来的系统性能降低。
一方面,本申请提供了一种多线程处理器系统产生独立进程标识的方法,包括:
运行在某个物理线程上的软件线程分别上报所述软件线程正在使用的进程标识,并在需要产生新的进程时,发送进程标识请求到进程监测单元,所述进程监测单元维护设定有和物理线程的数量同样数量的进程标识池;
依据所述某个物理线程上报的进程标识数据,所述进程监测单元由设定的进程标识中选择未被使用的进程标识作为当前可用标识,并按照设定的规则在可用标识中选择一个作为当前进程标识;
在多个物理线程中存在进程请求的情况下,按照所述多个物理线程的标识顺序形成请求队列,逐一将所述多个物理线程中对应每个物理线程的当前进程标识发送到发出进程标识请求的物理线程,所述多个物理线程中的任意一个物理线程的线程标识与一个或多个内存管理单元的页绑定,一个内存管理单元的页对应于所述多个物理线程中的任意一个物理线程的线程标识;
发送进程标识请求的物理线程接收所述进程监测单元发送的当前进程标识,并将其作为正在产生的进程标识,产生新进程。
另一方面,本申请提供了一种多线程处理器系统产生独立进程标识的装置,包括:
第一发送模块,用于运行在某个物理线程上的软件线程分别上报所述软件线程正在使用的进程标识,并在需要产生新的进程时,发送进程标识请求到进程监测单元,所述进程监测单元维护设定有和物理线程的数量同样数量的进程标识池;
选择模块,用于依据所述某个物理线程上报的进程标识数据,所述进程监测单元由设定的进程标识中选择未被使用的进程标识作为当前可用标识,并按照设定的规则在可用标识中选择一个作为当前进程标识;
第二发送模块,用于在多个物理线程中存在进程请求的情况下,按照所述多个物理线程的标识顺序形成请求队列,逐一将所述多个物理线程中对应每个物理线程的当前进程标识发送到发出进程标识请求的物理线程,所述多个物理线程中的任意一个物理线程的线程标识与一个或多个内存管理单元的页绑定,一个内存管理单元的页对应于所述多个物理线程中的任意一个物理线程的线程标识;
生成模块,用于发送进程标识请求的物理线程接收所述进程监测单元发送的当前进程标识,并将其作为正在产生的进程标识,产生新进程。
第三方面,本申请提供了一种设备,所述设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述技术方案的方法的步骤。
第四方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述技术方案的方法的步骤。
从上述本申请提供的技术方案可知,在多个物理线程中存在进程请求的情况下,按照多个物理线程的标识顺序形成请求队列,逐一将多个物理线程中对应每个物理线程的当前进程标识发送到发出进程标识请求的物理线程。由于多个物理线程中的任意一个物理线程的线程标识与一个或多个内存管理单元的页绑定,一个内存管理单元的页对应于多个物理线程中的任意一个物理线程的线程标识。因此,相比于现有技术,本申请的技术方案使得在PID溢出时,操作系统只需冲刷内存管理单元相应的物理线程的页,不会影响其他物理线程的地址转换,物理线程间的PID是独立的,因而不存在PID下物理线程的冲突问题,操作系统在切换线程时的处理工作与单线程处理器一样简单,而每个物理线程享有独立的PID,PID溢出频率也大幅降低。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的多线程处理器系统产生独立进程标识的方法的流程图;
图2是本申请实施例提供的线程标识与一个或多个内存管理单元的页绑定的示意图。
图3是本申请实施例提供的多线程处理器系统产生独立进程标识的装置的结构示意图;
图4是本申请实施例提供的设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本说明书中,诸如第一和第二这样的形容词仅可以用于将一个元素或动作与另一元素或动作进行区分,而不必要求或暗示任何实际的这种关系或顺序。在环境允许的情况下,参照元素或部件或步骤(等)不应解释为局限于仅元素、部件、或步骤中的一个,而可以是元素、部件、或步骤中的一个或多个等。
在本说明书中,为了便于描述,附图中所示的各个部分的尺寸并不是按照实际的比例关系绘制的。
本申请提出了一种多线程处理器系统产生独立进程标识的方法,如附图1所示,主要包括步骤S101至S104,详述如下:
步骤S101:运行在某个物理线程上的软件线程分别上报软件线程正在使用的进程标识,并在需要产生新的进程时,发送进程标识请求到进程监测单元,其中,进程监测单元维护设定有和物理线程的数量同样数量的进程标识池。
在本实施例中,与一般的多线程处理器不同的是设置有用于统一管理该处理器上多个物理线程上执行进程的进程标识的进程监测单元,该进程监测单元分别与该处理器多个物理线程通过不同的数据线连接,一个物理线程上传数据或请求到该进程监测单元的数据线与接收由该进程监测单元发出数据的数据线是不同的或分开的,并且,该进程监测单元维护设定有和物理线程的数量同样数量的进程标识池,即,假设物理线程的数量为M(此处的M为大于或等于2的整数)个,则进程监测单元维护设定的进程标识池也为M个,并且,每个物理线程可以只请求一个进程标识池中的进程标识,不会不同的物理线程去请求同一个进程标识池中的进程标识。如此,即使是同样的进程标识(PID),也因为其属于不同的进程标识池而不至于产生冲突,同时也能降低PID溢出的概率,即使溢出,操作系统也只需要MMU冲刷相应的物理线程的页,不会影响其他物理线程的地址转换。例如,现在有4个物理线程(依次记录为P-1、P-2、P-3和P-4),则进程监测单元维护设定了4个进程标识池,记该4个进程标识池的标识为PIDpool-1、PIDpool-2、PIDpool-3和PIDpool-4,则该4个物理线程中每个物理线程请求的进程标识不会交叉,即该4个物理线程中每个物理线程请求的进程标识不会处于同一个进程标识池,例如,物理线程P-1请求的进程标识PID-1处于PIDpool-2的进程标识池、物理线程P-2请求的进程标识PID-2处于PIDpool-3的进程标识池、物理线程P-3请求的进程标识PID-3处于PIDpool-4的进程标识池以及物理线程P-4请求的进程标识PID-4处于PIDpool-1的进程标识池。另一方面,即使该4个物理进程中部分或全部物理进程请求的进程标识相同,例如,物理线程P-1请求的进程标识为PID-1、物理线程P-2请求的进程标识也为PID-1,但由于物理线程P-1请求的进程标识为PID-1是进程标识池PIDpool-1中的进程标识,物理线程P-2请求的进程标识PID-1是进程标识池PIDpool-2中的进程标识,则物理线程P-1请求的进程标识PID-1与物理线程P-2请求的进程标识PID-1并不冲突。
此外,值得一提的是,在本申请实施例中,由于数据线的是固定的或设定的,线程发送的请求或数据的形式也比较简单,不需要特别地携带线程地址或标识,该进程监测单元也能够判断发送的线程。在本步骤中,物理线程将当前正在其上运行的进程标识收集起来,并以数据的形式发送到上述进程监测单元。如果一个进程已经运行完成,其当前自然不会处于运行过程中。当一个物理线程上,如果在一个操作周期上并没有产生或将产生新的进程,该物理线程也仅仅是将上述运行的进程标识上报,并不做其他动作。然而,当其在一个操作周期上产生或将产生新的进程时,将发送进程标识请求到上述进程监测单元,要求进程监测单元下发进程标识,以便产生新的进程。由于每个物理线程都执行这样的操作,所以,每个物理线程新产生的进程标识实际上都是来自进程监测单元的。由于进程监测单元维护设定有和物理线程的数量同样数量的进程标识池,并且,每个物理线程可以只请求一个进程标识池中的进程标识,不会不同的物理线程去请求同一个进程标识池中的进程标识,因此,这种方法使得同时运行的进程的进程标识可以是相同或重复的,也可以是不重复的且不需要物理线程或其上运行的软件线程额外的开销,因而其开销较小、处理器的效率较高。在一些情况下,上述物理线程发送到进程监测单元的进程标识请求中也可以带有该物理线程的标识或地址,这样使得该进程监测单元可以直接明确进程标识的发送目的或可以对进程标识的发送目的进行验证,保证发送的准确,从而避免出错。
步骤S102:依据某个物理线程上报的进程标识数据,进程监测单元由设定的进程标识中选择未被使用的进程标识作为当前可用标识,并按照设定的规则在可用标识中选择一个作为当前进程标识。
在本步骤中,上述进程监测单元依据各线程上报的进程标识数据,由设定的进程标识中选择未被使用的进程标识作为当前可用标识,并按照设定的规则选择一个作为当前进程标识。一般而言,在一个处理器中,可以使用的进程标识是有限的,通常是事先规定的一组数或编码;而且,由于进程在处理器中不断地被建立,也不断地完成运行,所以,这组事先设定的数或编码实际上是被循环使用的。也就是说,在处理器运行的某一时刻,其可用的进程标识实际上就是上述事先设定的数字或编码中当前未被使用的。因此,在本申请实施例中,只要收集到当前正在使用的进程标识,在事先设定的这组数字或编码中将其除去,剩下的就是当前可以使用的进程标识。得到可用的进程标识后,在其中选择一个作为当前进程标识,以便一接收到进程标识请求就将其发送到发出请求的线程,以节省时间。选择的规则也是事先设置的,例如,可以在上述可用进程标识中选择一个数值最小的或最大的。值得一提的是,该当前进程标识选择后,也就由可用进程标识中去除,不再将其视为可用的进程标识,这样虽然占用了一个进程标识,但是,其效果也是明显的,即可以节省申请进程标识的时间。
步骤S103:在多个物理线程中存在进程请求的情况下,按照多个物理线程的标识顺序形成请求队列,逐一将多个物理线程中对应每个物理线程的当前进程标识发送到发出进程标识请求的物理线程,其中,多个物理线程中的任意一个物理线程的线程标识与一个或多个内存管理单元的页绑定,一个内存管理单元的页只对应于多个物理线程中的任意一个物理线程的线程标识。
由于是多线程处理器,其必然具有多个线程,这些线程都可能发出进程标识请求。由于在处理器中,所有的操作都是按照时钟的节拍来进行的,一个操作周期实际上就是时钟周期或时钟周期的倍数。这样,当多个线程在一个操作周期上发出进程标识请求时,其请求几乎是同时发出来的,这样,在进程检测单元如何处理这些请求就是一个问题。在本申请实施例中,将这些线程发送的进程标识请求按照线程的标识形成一个进程请求队列,进程监测单元逐个处理该进程请求队列中的请求,使得各线程并行发出的请求可以在进程监测单元中处理。值得一提的是,不管在同一时间内发出请求的线程有多少,都是按照这种方式将其排列的。也就是说,即使只有一个请求,也按照上述形成进程请求队列的方法进行处理,不同的是该进程请求队列中只有一个请求。在本步骤中,对上述步骤形成进程请求队列进行处理,按照进程请求队列的排列,首先处理其排列在第一位的请求,将当前进程标识发送到产生该请求的物理线程,之后,由于当前进程标识已经分配出去,也就是已经使用,所以需要更新当前进程标识,以便于分配给下一个发出请求的线程。即使是在进程请求队列的最后,也需要更新。在本实施例中,更新当前进程标识就是由当前可用的进程标识中按照设定的规则,选择一个并将其由可有进程标识中去除。在本实施例中,该设定规则同样可以是选择其中最下或最大一个。值得一提的是,在本步骤中,上述步骤可能执行一次,也可能执行多次,直到上述对列中的所有请求都被处理。也就是说,在本步骤中,需要对是否完成所有线程发出的请求做出判断,如果已经完成,则线程检测单元等待下一操作周期的到来;如果没有完成,则返回。开始处理下一线程的请求,同样地,下一线程的请求的处理方式与上述步骤相同,不同的只是发送当前进程标识的目的地是不同的。
与现有技术中多个物理线程对应于一个内存管理单元的页不同的是,在本申请实施例中,多个物理线程中的任意一个物理线程的线程标识(Thread IDentifier,TID)与一个或多个内存管理单元的页绑定,一个内存管理单元的页只对应于多个物理线程中的任意一个物理线程的线程标识。如附图2所示,物理线程1的线程标识TID-1与标识为PAGE-0、PAGE-2的页绑定,而标识为PAGE-0的页只对应于标识为TID-1的物理线程1,标识为PAGE-2的页只对应于标识为TID-1的物理线程1;类似地,物理线程2的线程标识TID-2与标识为PAGE-n-2、PAGE-n-1的页绑定,而标识为PAGE-n-2的页只对应于标识为TID-2的物理线程2,标识为PAGE-n-1的页只对应于标识为TID-2的物理线程2,等等。这些与某个页绑定的线程标识表明该页属于哪个物理线程使用,例如,由于标识为PAGE-0、PAGE-2的页与标识为TID-1的物理线程1绑定,则表明标识为PAGE-0、PAGE-2的页是给标识为TID-1的物理线程1使用。一旦与物理线程1相关的PID溢出,则操作系统只需冲刷标识为PAGE-0、PAGE-2的页,其他的页并不受影响,因而依然可顺利进行地址转换。
在上述本申请实施例中,内存管理单元在将虚拟地址转换为物理地址时,基于物理线程的线程标识进行内存物理地址的查询,即,通过查询具有物理线程的线程标识的页进行内存物理地址的查询。具体地,基于物理线程的线程标识进行内存物理地址的查询可以是:将备用缓存器中存储的待寻址物理线程的页表项存储至预取缓存器中,接收待寻址物理线程发送的携带虚拟地址的内存寻址请求消息,根据虚拟地址在预取缓存器存储的页表项中查询虚拟地址对应的物理地址,即,根据待寻址物理线程的虚拟地址在旁路转换缓存器和预取缓存器中同时进行查询,且预取缓存器中存储有旁路转换缓存器中设定时间内未被查询的待寻址物理线程的页表项,从而提高对虚拟地址对应的物理地址的查询命中几率,缩短寻址时间。
步骤S104:发送进程标识请求的物理线程接收进程监测单元发送的当前进程标识,并将其作为正在产生的进程标识,产生新进程。
在本步骤中,发出进程标识请求的线程收到来自进程监测单元的进程标识,将其作为正在产生或已经产生的进程的标识,形成进程并运行。
从上述附图1示例的多线程处理器系统产生独立进程标识的方法可知,在多个物理线程中存在进程请求的情况下,按照多个物理线程的标识顺序形成请求队列,逐一将多个物理线程中对应每个物理线程的当前进程标识发送到发出进程标识请求的物理线程。由于多个物理线程中的任意一个物理线程的线程标识与一个或多个内存管理单元的页绑定,一个内存管理单元的页对应于多个物理线程中的任意一个物理线程的线程标识。因此,相比于现有技术,本申请的技术方案使得在PID溢出时,操作系统只需冲刷内存管理单元相应的物理线程的页,不会影响其他物理线程的地址转换,物理线程间的PID是独立的,因而不存在PID下物理线程的冲突问题,操作系统在切换线程时的处理工作与单线程处理器一样简单,而每个物理线程享有独立的PID,PID溢出频率也大幅降低。
请参阅附图3,是本申请实施例提供的一种多线程处理器系统产生独立进程标识的装置。附图3示例的多线程处理器系统产生独立进程标识的装置可以包括第一发送模块301、选择模块302、第二发送模块303和生成模块304,详述如下:
第一发送模块301,用于运行在某个物理线程上的软件线程分别上报软件线程正在使用的进程标识,并在需要产生新的进程时,发送进程标识请求到进程监测单元,其中,进程监测单元维护设定有和物理线程的数量同样数量的进程标识池;
选择模块302,用于依据某个物理线程上报的进程标识数据,进程监测单元由设定的进程标识中选择未被使用的进程标识作为当前可用标识,并按照设定的规则在可用标识中选择一个作为当前进程标识;
第二发送模块303,用于在多个物理线程中存在进程请求的情况下,按照多个物理线程的标识顺序形成请求队列,逐一将多个物理线程中对应每个物理线程的当前进程标识发送到发出进程标识请求的物理线程,其中,多个物理线程中的任意一个物理线程的线程标识与一个或多个内存管理单元的页绑定,一个内存管理单元的页对应于多个物理线程中的任意一个物理线程的线程标识;
生成模块304,用于发送进程标识请求的物理线程接收进程监测单元发送的当前进程标识,并将其作为正在产生的进程标识,产生新进程。
可选地,附图3示例的某个物理线程上报的进程标识包括在其上运行的所有进程的标识,进程标识请求中包括某个物理线程的标识。
可选地,附图3示例的选择模块302具体用于进程监测单元按照上报的物理线程的标识,依次取得其上正在运行的进程标识;在允许使用的全部进程标识中除去由上述各物理线程上报的进程标识,剩下的即为当前可用的进程标识;选择当前可用的进程标识中最小一个作为当前进程标识并将其由当前可用的进程标识除去。
可选地,附图3示例的第二发送模块303具体用于步骤S1:判断任意一个物理线程是否发送进程标识请求,若是,则执行步骤S2,否则,跳转到步骤S4;步骤S2:发送当前进程标识到所述任意一个物理线程;步骤S3:由所述当前可用的进程标识中选择最小一个作为当前进程标识,并将其由所述当前可用的进程标识除去;步骤S4:是否完成所有物理线程的标识请求判断,若是,则退出,否则,进入下一个物理线程并跳转到步骤S1。
可选地,附图3示例的装置中,一个物理线程分别通过不同的数据线传输数据到所述进程监测单元和接收来自进程监测单元的进程标识,多个物理线程分别通过不同的数据线与进程监测单元连接。
可选地,附图3示例的装置中,内存管理单元在将虚拟地址转换为物理地址时,基于物理线程的线程标识进行内存物理地址的查询。
可选地,附图3示例的装置中,基于物理线程的线程标识进行内存物理地址的查询可以是:将备用缓存器中存储的待寻址物理线程的页表项存储至预取缓存器中;接收待寻址物理线程发送的携带虚拟地址的内存寻址请求消息;根据虚拟地址在预取缓存器存储的页表项中查询虚拟地址对应的物理地址。
从以上附图3示例的多线程处理器系统产生独立进程标识的装置可以看出,在多个物理线程中存在进程请求的情况下,按照多个物理线程的标识顺序形成请求队列,逐一将多个物理线程中对应每个物理线程的当前进程标识发送到发出进程标识请求的物理线程。由于多个物理线程中的任意一个物理线程的线程标识与一个或多个内存管理单元的页绑定,一个内存管理单元的页对应于多个物理线程中的任意一个物理线程的线程标识。因此,相比于现有技术,本申请的技术方案使得在PID溢出时,操作系统只需冲刷内存管理单元相应的物理线程的页,不会影响其他物理线程的地址转换,物理线程间的PID是独立的,因而不存在PID下物理线程的冲突问题,操作系统在切换线程时的处理工作与单线程处理器一样简单,而每个物理线程享有独立的PID,PID溢出频率也大幅降低。
图4是本申请一实施例提供的设备的结构示意图。如图4所示,该实施例的设备4主要包括:处理器40、存储器41以及存储在存储器41中并可在处理器40上运行的计算机程序42,例如多线程处理器系统产生独立进程标识的方法的程序。处理器40执行计算机程序42时实现上述多线程处理器系统产生独立进程标识的方法实施例中的步骤,例如图1所示的步骤S101至S104。或者,处理器40执行计算机程序42时实现上述各装置实施例中各模块/单元的功能,例如图3所示第一发送模块301、选择模块302、第二发送模块303和生成模块304的功能。
示例性地,多线程处理器系统产生独立进程标识的方法的计算机程序42主要包括:运行在某个物理线程上的软件线程分别上报软件线程正在使用的进程标识,并在需要产生新的进程时,发送进程标识请求到进程监测单元,其中,进程监测单元维护设定有和物理线程的数量同样数量的进程标识池;依据某个物理线程上报的进程标识数据,进程监测单元由设定的进程标识中选择未被使用的进程标识作为当前可用标识,并按照设定的规则在可用标识中选择一个作为当前进程标识;在多个物理线程中存在进程请求的情况下,按照多个物理线程的标识顺序形成请求队列,逐一将多个物理线程中对应每个物理线程的当前进程标识发送到发出进程标识请求的物理线程,其中,多个物理线程中的任意一个物理线程的线程标识与一个或多个内存管理单元的页绑定,一个内存管理单元的页对应于多个物理线程中的任意一个物理线程的线程标识;发送进程标识请求的物理线程接收进程监测单元发送的当前进程标识,并将其作为正在产生的进程标识,产生新进程。计算机程序42可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器41中,并由处理器40执行,以完成本申请。一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序42在设备4中的执行过程。例如,计算机程序42可以被分割成第一发送模块301、选择模块302、第二发送模块303和生成模块304(虚拟装置中的模块)的功能,各模块具体功能如下:第一发送模块301,用于运行在某个物理线程上的软件线程分别上报软件线程正在使用的进程标识,并在需要产生新的进程时,发送进程标识请求到进程监测单元,其中,进程监测单元维护设定有和物理线程的数量同样数量的进程标识池;选择模块302,用于依据某个物理线程上报的进程标识数据,进程监测单元由设定的进程标识中选择未被使用的进程标识作为当前可用标识,并按照设定的规则在可用标识中选择一个作为当前进程标识;第二发送模块303,用于在多个物理线程中存在进程请求的情况下,按照多个物理线程的标识顺序形成请求队列,逐一将多个物理线程中对应每个物理线程的当前进程标识发送到发出进程标识请求的物理线程,其中,多个物理线程中的任意一个物理线程的线程标识与一个或多个内存管理单元的页绑定,一个内存管理单元的页对应于多个物理线程中的任意一个物理线程的线程标识;生成模块304,用于发送进程标识请求的物理线程接收进程监测单元发送的当前进程标识,并将其作为正在产生的进程标识,产生新进程。
设备4可包括但不仅限于处理器40、存储器41。本领域技术人员可以理解,图4仅仅是设备4的示例,并不构成对设备4的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如计算设备还可以包括输入输出设备、网络接入设备、总线等。
所称处理器40可以是中央处理单元(Central Processjng Unjt,CPU),还可以是其他通用处理器、数字信号处理器(Djgjtal Sjgnal Processor,DSP)、专用集成电路(Appljcatjon Specjfjc Jntegrated Cjrcujt,ASJC)、现成可编程门阵列(Fjeld-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器41可以是设备4的内部存储单元,例如设备4的硬盘或内存。存储器41也可以是设备4的外部存储设备,例如设备4上配备的插接式硬盘,智能存储卡(Smart MedjaCard,SMC),安全数字(Secure Djgjtal,SD)卡,闪存卡(Flash Card)等。进一步地,存储器41还可以既包括设备4的内部存储单元也包括外部存储设备。存储器41用于存储计算机程序以及设备所需的其他程序和数据。存储器41还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即,将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述装置中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/设备实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个非临时性计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,多线程处理器系统产生独立进程标识的方法的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤,即,运行在某个物理线程上的软件线程分别上报软件线程正在使用的进程标识,并在需要产生新的进程时,发送进程标识请求到进程监测单元,其中,进程监测单元维护设定有和物理线程的数量同样数量的进程标识池;依据某个物理线程上报的进程标识数据,进程监测单元由设定的进程标识中选择未被使用的进程标识作为当前可用标识,并按照设定的规则在可用标识中选择一个作为当前进程标识;在多个物理线程中存在进程请求的情况下,按照多个物理线程的标识顺序形成请求队列,逐一将多个物理线程中对应每个物理线程的当前进程标识发送到发出进程标识请求的物理线程,其中,多个物理线程中的任意一个物理线程的线程标识与一个或多个内存管理单元的页绑定,一个内存管理单元的页对应于多个物理线程中的任意一个物理线程的线程标识;发送进程标识请求的物理线程接收进程监测单元发送的当前进程标识,并将其作为正在产生的进程标识,产生新进程。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。非临时性计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读内存(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,非临时性计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,非临时性计算机可读介质不包括电载波信号和电信信号。以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种多线程处理器系统产生独立进程标识的方法,其特征在于,所述方法包括:
运行在某个物理线程上的软件线程分别上报所述软件线程正在使用的进程标识,并在需要产生新的进程时,发送进程标识请求到进程监测单元,所述进程监测单元维护设定有和物理线程的数量同样数量的进程标识池;
依据所述某个物理线程上报的进程标识数据,所述进程监测单元由设定的进程标识中选择未被使用的进程标识作为当前可用标识,并按照设定的规则在可用标识中选择一个作为当前进程标识;
在多个物理线程中存在进程请求的情况下,按照所述多个物理线程的标识顺序形成请求队列,逐一将所述多个物理线程中对应每个物理线程的当前进程标识发送到发出进程标识请求的物理线程,所述多个物理线程中的任意一个物理线程的线程标识与一个或多个内存管理单元的页绑定,一个内存管理单元的页对应于所述多个物理线程中的任意一个物理线程的线程标识;
发送进程标识请求的物理线程接收所述进程监测单元发送的当前进程标识,并将其作为正在产生的进程标识,产生新进程。
2.如权利要求1所述多线程处理器系统产生独立进程标识的方法,其特征在于,所述某个物理线程上报的进程标识包括在其上运行的所有进程的标识,所述进程标识请求中包括所述某个物理线程的标识。
3.如权利要求2所述多线程处理器系统产生独立进程标识的方法,其特征在于,所述依据所述某个物理线程上报的进程标识数据,所述进程监测单元由设定的进程标识中选择未被使用的进程标识作为当前可用标识,并按照设定的规则在可用标识中选择一个作为当前进程标识,包括:
所述进程监测单元按照上报的物理线程的编号,依次取得其上正在运行的进程标识;
在允许使用的全部进程标识中除去由上述各物理线程上报的进程标识,剩下的即为当前可用的进程标识;
选择当前可用的进程标识中最小一个作为当前进程标识并将其由所述当前可用的进程标识除去。
4.如权利要求3所述多线程处理器系统产生独立进程标识的方法,其特征在于,所述在多个物理线程中存在进程请求的情况下,按照所述多个物理线程的标识顺序形成请求队列,逐一将所述多个物理线程中对应每个物理线程的当前进程标识发送到发出进程标识请求的物理线程,包括:
步骤S1:判断任意一个物理线程是否发送进程标识请求,若是,则执行步骤S2,否则,跳转到步骤S4;
步骤S2:发送当前进程标识到所述任意一个物理线程;
步骤S3:由所述当前可用的进程标识中选择最小一个作为当前进程标识,并将其由所述当前可用的进程标识除去;
步骤S4:是否完成所有物理线程的编号请求判断,若是,则退出,否则,进入下一个物理线程并跳转到步骤S1。
5.如权利要求4所述多线程处理器系统产生独立进程标识的方法,其特征在于,所述一个所述物理线程分别通过不同的数据线传输数据到所述进程监测单元和接收来自所述进程监测单元的进程标识,多个物理线程分别通过不同的数据线与所述进程监测单元连接。
6.如权利要求1至5任意一项所述多线程处理器系统产生独立进程标识的方法,其特征在于,所述内存管理单元在将虚拟地址转换为物理地址时,基于所述物理线程的线程标识进行内存物理地址的查询。
7.如权利要求6所述多线程处理器系统产生独立进程标识的方法,其特征在于,所述基于所述物理线程的线程标识进行内存物理地址的查询,包括:
将备用缓存器中存储的待寻址物理线程的页表项存储至预取缓存器中;
接收所述待寻址物理线程发送的携带虚拟地址的内存寻址请求消息;
根据所述虚拟地址在所述预取缓存器存储的页表项中查询所述虚拟地址对应的物理地址。
8.一种多线程处理器系统产生独立进程标识的装置,其特征在于,所述装置包括:
第一发送模块,用于运行在某个物理线程上的软件线程分别上报所述软件线程正在使用的进程标识,并在需要产生新的进程时,发送进程标识请求到进程监测单元,所述进程监测单元维护设定有和物理线程的数量同样数量的进程标识池;
选择模块,用于依据所述某个物理线程上报的进程标识数据,所述进程监测单元由设定的进程标识中选择未被使用的进程标识作为当前可用标识,并按照设定的规则在可用标识中选择一个作为当前进程标识;
第二发送模块,用于在多个物理线程中存在进程请求的情况下,按照所述多个物理线程的标识顺序形成请求队列,逐一将所述多个物理线程中对应每个物理线程的当前进程标识发送到发出进程标识请求的物理线程,所述多个物理线程中的任意一个物理线程的线程标识与一个或多个内存管理单元的页绑定,一个内存管理单元的页对应于所述多个物理线程中的任意一个物理线程的线程标识;
生成模块,用于发送进程标识请求的物理线程接收所述进程监测单元发送的当前进程标识,并将其作为正在产生的进程标识,产生新进程。
9.一种设备,所述设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任意一项所述方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011262710.3A CN112328514B (zh) | 2020-11-12 | 2020-11-12 | 一种多线程处理器系统产生独立进程标识的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011262710.3A CN112328514B (zh) | 2020-11-12 | 2020-11-12 | 一种多线程处理器系统产生独立进程标识的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112328514A CN112328514A (zh) | 2021-02-05 |
CN112328514B true CN112328514B (zh) | 2024-02-06 |
Family
ID=74317977
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011262710.3A Active CN112328514B (zh) | 2020-11-12 | 2020-11-12 | 一种多线程处理器系统产生独立进程标识的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112328514B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114741338B (zh) * | 2022-06-06 | 2022-09-13 | 飞腾信息技术有限公司 | 旁路转换缓存器、数据更新方法、内存管理单元及芯片 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20080094486A (ko) * | 2007-04-20 | 2008-10-23 | (주)엔텔스 | 공유 메모리 페이징 기법에 의한 프로세스간 가변 길이데이터 흐름 제어 방법 및 그 장치 |
CN103136047A (zh) * | 2011-11-30 | 2013-06-05 | 大唐联诚信息系统技术有限公司 | 一种多线程管理方法及架构 |
CN111708618A (zh) * | 2020-06-12 | 2020-09-25 | 北京思特奇信息技术股份有限公司 | 一种基于Java多线程的处理方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7827381B2 (en) * | 2006-06-05 | 2010-11-02 | Oracle America, Inc. | Hybrid techniques for memory virtualization in a computer system |
US20190347408A1 (en) * | 2018-05-11 | 2019-11-14 | Npx Usa, Inc. | Process identifier transition monitoring and assessment |
-
2020
- 2020-11-12 CN CN202011262710.3A patent/CN112328514B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20080094486A (ko) * | 2007-04-20 | 2008-10-23 | (주)엔텔스 | 공유 메모리 페이징 기법에 의한 프로세스간 가변 길이데이터 흐름 제어 방법 및 그 장치 |
CN103136047A (zh) * | 2011-11-30 | 2013-06-05 | 大唐联诚信息系统技术有限公司 | 一种多线程管理方法及架构 |
CN111708618A (zh) * | 2020-06-12 | 2020-09-25 | 北京思特奇信息技术股份有限公司 | 一种基于Java多线程的处理方法和装置 |
Non-Patent Citations (3)
Title |
---|
A survey of processors with explicit multitreading;Theo Ungerer;《ACM Computing Surveys》;第35卷(第1期);29-63 * |
一种多线程轻核机器中进程管理的硬件实现;王维;《电子技术应用》;第39卷(第03期);40-43 * |
虚拟内存密集型多线程程序的性能改进方法;陈健康;张昱;;小型微型计算机系统(第05期);62-67 * |
Also Published As
Publication number | Publication date |
---|---|
CN112328514A (zh) | 2021-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104462225B (zh) | 一种数据读取的方法、装置及系统 | |
CN109376104B (zh) | 一种芯片及基于其的数据处理方法和装置 | |
CN112328514B (zh) | 一种多线程处理器系统产生独立进程标识的方法和装置 | |
WO2024036985A1 (zh) | 存储系统及其计算存储处理器、固体硬盘和数据读写方法 | |
CN112860600A (zh) | 一种加速硬件页表遍历的方法及装置 | |
CN104765701A (zh) | 数据访问方法及设备 | |
CN115408193A (zh) | 多模块间错误码处理方法及装置 | |
CN113032156A (zh) | 内存分配方法和装置、电子设备和存储介质 | |
CN113485643B (zh) | 用于数据存取的方法及数据写入的控制器 | |
CN111913816B (zh) | Gpgpu中簇的实现方法、装置、终端及介质 | |
CN111666150B (zh) | 存储空间的分配方法、装置、终端及计算机可读存储介质 | |
CN116974951A (zh) | 基于sv实现的储存器地址管理方法及系统 | |
CN112052144A (zh) | 信息管理方法、装置、电子设备及存储介质 | |
CN115586943B (zh) | 一种智能网卡虚拟机脏页的硬件标记实现方法 | |
CN115525582A (zh) | 基于页的内联计算引擎的任务管理和数据调度方法及系统 | |
JP2014524626A (ja) | マルチコアシステムのインターラプト割り当て方法及び装置 | |
EP1020801A2 (en) | Dynamic slot allocation and tracking of multiple memory requests | |
US10503557B2 (en) | Method of processing OpenCL kernel and computing device therefor | |
CN100351813C (zh) | 数字信号处理系统中访问存储单元的方法及其处理系统 | |
CN104836710A (zh) | 一种基于分布式系统一主多从通信的方法与装置 | |
CN115525343A (zh) | 一种并行译码的方法、处理器、芯片及电子设备 | |
CN113158173B (zh) | 账号分配方法、介质、装置和计算设备 | |
US11003578B2 (en) | Method and system for parallel mark processing | |
CN107807888B (zh) | 一种用于soc架构的数据预取系统及其方法 | |
CN113805845A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |