共享内存映射页的处理器系统产生进程号的方法及装置制造方法

文档序号:6544635阅读:158来源:国知局
共享内存映射页的处理器系统产生进程号的方法及装置制造方法
【专利摘要】本发明涉及一种共享内存映射页的处理器系统产生进程号的方法,包括如下步骤:上报正在使用的进程编号,并在需要产生新的进程时,发送进程编号请求到进程监测单元;得到当前可用进程编号,并选择一个作为当前进程编号;形成请求队列,逐一将当前进程编号发送到发出进程编号请求的物理线程;更新当前进程编号;接收所述进程监测单元发送的当前进程编号,并将其作为正在产生的进程编号,产生新进程。本发明还涉及一种实现上述方法的装置。实施本发明的共享内存映射页的处理器系统产生进程号的方法及装置,具有以下有益效果:产生新进程编号开销较小、处理器内在映射效率较高,性能较好。
【专利说明】共享内存映射页的处理器系统产生进程号的方法及装置【技术领域】
[0001]本发明涉及多线程处理器,更具体地说,涉及一种共享内存映射页的处理器系统产生进程号的方法及装置。
【背景技术】
[0002]在处理器领域,MMU (Memory Management Unit,内存管理单兀)是处理器中用于管理虚拟存储器和物理存储器之间映射的电路,其用于将线性地址映射为物理地址,提供硬件机制的内存访问授权。多线程处理器具有多个物理线程(或硬件指令管道),每个物理线程在其上有软件线程运行时,均需要为其做出相应的存储器映射。所以,多个物理线程将分别对应不同的存储器区域。对于现有技术而言,在多线程处理器中,处理器中MMU映射页有以下形式:基于线程的页映射,该基于线程的页映射的MMU结构如图1所示,这种结构硬件电路庞大(芯片面积大),此外,在有空闲线程(物理线程)时,由于其他正在运行的线程无法使用其页映射,造到资源浪费;现有技术中另一种MMU映射是线程间共享的页映射,线程间共享的页映射的MMU结构如图2所示,这种结构可最大化利用映射页资源,线程动态分配映射页,不论多少个线程在运行,所有的映射页都能被有效利用;这种结构可大大减少硬件电路,减少芯片面积。但是这种结构面临软件对进程ID (以下简称PID)管理问题:软件为线程中的进程分配不同的PID,进程通过PID来标识MMU中属于自己的映射页。由于线程间共享MMU映射页,且PID是循环的数值,这样就可能出现不同线程下的进程同时使用相同的PID的情况。这种情况造成进程使用其他线程下进程的映射页,这种错误对于此进程来说是极其致命的。虽然可以在软件上对其进行改进,使得多个物理线程之间不会使用重复的PID,但是,这样做的后果是使得软件的开销变得极大,其处理性能受到较大的限制。

【发明内容】

[0003]本发明要解决的技术问题在于,针对现有技术的上述芯片面积较大、操作系统软件开销较大、性能受到限制的缺陷,提供一种芯片体积较小、操作系统软件开销较小、性能较好的共享内存映射页的处理器系统产生进程号的方法及装置。
[0004]本发明解决其技术问题所采用的技术方案是:构造一种共享内存映射页的处理器系统产生进程号的方法,包括如下步骤:
A)运行在多个物理线程上的软件线程分别上报其正在使用的进程编号,并在需要产生新的进程时,发送进程编号请求到进程监测单元;
B)依据各线程上报的进程编号数据,进程监测单元由设定的进程编号中选择未被使用的进程编号作为当前可用编号,并按照设定的规则选择一个作为当前进程编号;
C)在所述多个物理 线程中存在进程请求的情况下,按照物理线程的编号顺序形成请求队列,逐一将当前进程编号发送到发出请求的物理线程;一个当前进程编号被发送后,按照设定规则在所述可用编号中选择一个新的当前编号;
D)发送进程编号的物理线程接收所述进程监测单元发送的当前进程编号,并将其作为正在产生的进程编号,产生新进程。
[0005]更进一步地,所述步骤A)中,物理线程上报的进程编号包括在其上运行的所有进程的编号;所述进程编号请求中包括该物理线程的编号。
[0006]更进一步地,所述步骤B)进一步包括:
BI)进程监测单元按照上报的物理线程的编号,依次取得其上正在运行的进程编号;B2)在允许使用的全部进程编号中除去由上述各物理线程上报的进程编号,剩下的即为当前可用的进程编号;选择当前可用的进程编号中最小一个作为当前进程编号并将其由所述当前可用的进程编号除去。
[0007]更进一步地,所述步骤C)中进一步包括:
Cl)判断一个物理线程是否发送进程编号请求,如是执行步骤C2);否则,跳转到步骤
C4);
C2)发送当前进程编号到该物理线程;
C3)由所述当前可用的进程编号中选择最小一个作为当前进程编号并将其由所述当前可用的进程编号除去;
C4)是否完成所有物理线程的编号请求判断,如是,退出;否则,进入下一个物理线程并跳转到步骤Cl)。
[0008]更进一步地,一个所述物理线程分别通过不同的数据线传输数据到所述进程监测单元和接收来自所述进程监测单元的进程编号;多个物理线程分别通过不同的数据线与所述进程监测单元连接。
[0009]本发明还涉及一种实现上述方法的装置,包括:
上报及请求单元:用于将运行在多个物理线程上的软件线程分别上报其正在使用的进程编号,并在需要产生新的进程时,发送进程编号请求到进程监测单元;
当前进程编号取得单元:用于依据各线程上报的进程编号数据,进程监测单元由设定的进程编号中选择未被使用的进程编号作为当前可用编号,并按照设定的规则选择一个作为当前进程编号;
请求处理单元:用于在所述多个物理线程中存在进程请求的情况下,按照物理线程的编号顺序形成请求队列,逐一将当前进程编号发送到发出请求的物里线程;一个当前进程编号被发送后,按照设定规则在所述可用编号中选择一个新的当前编号;
编号接收单元:用于在发送进程编号的物理线程接收所述进程监测单元发送的当前进程编号,并将其作为正在产生的进程编号,产生新进程。
[0010]更进一步地,所述上报及请求单元中,其上报的进程编号包括在其上运行的所有进程的编号;其发送的所述进程编号请求中包括该物理线程的编号。
[0011]更进一步地,所述当前进程编号取得单元进一步包括:
运行进程编号取得模块:用于使进程监测单元按照上报的物理线程的编号,依次取得其上正在运行的进程编号;
当前进程编号产生模块:用于在允许使用的全部进程编号中除去由上述各物理线程上报的进程编号,剩下的即为当前可用的进程编号;选择当前可用的进程编号中最小一个作为当前进程编号并将其由所述当前可用的进程编号除去。
[0012]更进一步地,所述请求处理单元中进一步包括: 请求判断模块:用于判断一个物理线程是否发送进程编号请求,如是调用当前进程编号发送模块;否则,调用物理线程判断模块;
当前进程编号发送模块:用于发送当前进程编号到该物理线程;
当前进程编号更新模块:用于由所述当前可用的进程编号中选择最小一个作为当前进程编号并将其由所述当前可用的进程编号除去;
物理线程判断模块:用于是否完成所有物理线程的编号请求判断,如是,退出;否则,进入下一个物理线程并调用请求判断模块。
[0013]更进一步地,一个所述物理线程分别通过不同的数据线传输数据到所述进程监测单元和接收来自所述进程监测单元的进程编号;多个物理线程分别通过不同的数据线与所述进程监测单元连接。
[0014]实施本发明的共享内存映射页的处理器系统产生进程号的方法及装置,具有以下有益效果:由于设置了专用的进程监测单元,且各物理线程分别与上述进程监测单元连接,同时,在各物理线程上运行的软件线程分别将正在使用和即将产生的进程上报到上述进程监测单元,由该进程监测单元同一分配进程编号,因此,进程编号不会重复,且各软件线程的开销较小、处理器效率较高,性能较好。
【专利附图】

【附图说明】
[0015]图1是现有技术中一种MMU映射页结构形式;
图2是现有技术中另一种MMU映射页的结构形式;
图3是本发明共享内存映射页的处理器系统产生进程号的方法及装置实施例的MMU映射页的结构形式;
图4是所述实施例中产生进程号的方法流程图;
图5是所述实施例中装置结构示意图。
【具体实施方式】
[0016]下面将结合附图对本发明实施例作进一步说明。
[0017]如图4所示,在本发明共享内存映射页的处理器系统产生进程号的方法及装置实施例中,其通过对产生新进程编号的控制或协调,使得内存映射页面的共享得到有效的协调或控制。其产生新的进程编号的方法包括如下步骤:
步骤Sll软件线程上报正在使用的进程编号,并发送新进程编号请求:在本步骤中,运行在物理线程上的软件线程上报其正在使用的进程编号到进程监测单元,如果该软件线程将产生新的进程,还需要发送线程编号请求到该进程监测单元。在本实施例中,与一般的多线程处理器不同的是设置有用于统一管理该处理器上多个物理线程上执行进程的进程编号的进程监测单元,如图3所示,该进程监测单元分别与该处理器多个物理线程通过不同的数据线连接,一个物理线程上传数据或请求到该进程监测单元的数据线与接收由该进程监测单元发出数据的数据线是不同的或分开的。这样,使得该进程监测单元接收或发送数据变得较为简单,即只要将数据传输到设定的数据线或数据接口上,就能实现正确的发送或接收。此外,值得一提的是,在本步骤中,由于数据线的是固定的或设定的,线程发送的请求或数据的形式也比较简单,不需要特别地携带线程地址或编号,该进程监测单元也能够判断发送的线程。在本步骤中,物理线程将当前正在其上运行的进程标号收集起来,并以数据的形式发送到上述进程监测单元。如果一个进程已经运行完成,其当前自然不会处于运行过程中,因此其编号也不会在上报的数据中出现。当一个物理线程上,如果在一个操作周期上并没有产生或将产生新的进程,该物理线程也仅仅是将上述运行的进程编号上报,并不做其他动作;但是,当其在一个操作周期上产生或将产生新的进程时,将发送进程编号请求到上述进程监测单元,要求进程监测单元下发进程编号,以便产生新的进程。由于每个物理线程都执行这样的操作,所以,每个物理线程新产生的进程编号实际上都是来自进程监测单元的。这种方法可以使得同时运行的进程编号不重复且不需要物理线程或其上运行的软件线程额外的开销,因而其开销较小、处理器的效率较高。在一些情况下,上述物理线程发送到进程监测单元的进程编号请求中也可以带有该物理线程的编号或地址,这样使得该进程监测单元可以直接明确进程编号的发送目的或可以对进程编号的发送目的进行验证,保证发送的准确,从而避免出错。
[0018]步骤S12得到当前可用编号并选择当前进程编号:在本步骤中,上述进程监测单元依据各线程上报的进程编号数据,由设定的进程编号中选择未被使用的进程编号作为当前可用编号,并按照设定的规则选择一个作为当前进程编号。一般来讲,在一个处理器中,可以使用的进程编号是有限的,通常是事先规定的一组数或编码;而且,由于进程在处理器中不断地被建立,也不断地完成运行,所以,这组事先设定的数或编码实际上是被循环使用的。也就是说,在处理器运行的某一时刻,其可用的进程编号实际上就是上述事先设定的数字或编码中当前未被使用的。因此,在本步骤中,只要收集到当前正在使用的进程编号,在事先设定的这组数字或编码中将其除去,剩下的就是当前可以使用的进程编号。得到可用的进程编号后,在其中选择一个作为当前进程编号,以便一接收到进程编号请求就将其发送到发出请求的线程,以节省时间。选择的规则也是实现设置的,例如,可以在上述可用进程编号中选择一个数值最小的或最大的。值得一提的是,该当前进程编号选择后,也就由可用进程编号中去除,不再将其视为可用的进程编号,这样虽然占用了一个进程编号,但是,其效果也是明显的,即可以节省申请进程编号的时间。
[0019]步骤S13形成请求队列:在本实施例中,由于是多线程处理器,其必然具有多个线程,这些线程都可能发出进程编号请求。由于在处理器中,所有的操作都是按照时钟的节拍来进行的,一个操作周期实际上就是时钟周期或时钟周期的倍数。这样,当多个线程在一个操作周期上发出进程编号请求时,其请求几乎是同时发出来的,这样,在进程检测单元如何处理这些请求就是一个问题。在本步骤中,将这些线程发送的进程编号请求按照线程的编号形成一个队列,进程监测单元逐个处理该队列中的请求,使得各线程并行发出的请求可以在进程监测单元中处理。值得一提的是,不管在同一时间内发出请求的线程有多少,都是按照这种方式将其排列的。也就是说,即使只有一个请求,也按照上述形成队列的方法进行处理,不同的是该队列中只有一个请求。
[0020]步骤S14依次发送当前进程编号到请求队列中的物理线程并更新当前进程编号:在本步骤中,对上述步骤形成队列进行处理,按照队列的排列,首先处理其排列在第一位的请求,将当前进程编号发送到产生该请求的物理线程,之后,由于当前进程编号已经分配出去,也就是已经使用,所以需要更新当前进程编号,以便于分配给下一个发出请求的线程。即使是在队列的最后,也需要更新。在本实施例中,更新当前进程编号就是由当前可用的进程编号中按照设定的规则,选择一个并将其由可有进程编号中去除。在本实施例中,该设定规则同样可以是选择其中最下或最大一个。值得一提的是,在本步骤中,上述步骤可能执行一次,也可能执行多次,直到上述对列中的所有请求都被处理。也就是说,在本步骤中,需要对是否完成所有线程发出的请求做出判断,如果已经完成,则线程检测单元等待下一操作周期的到来;如果没有完成,则返回。开始处理下一线程的请求,同样地,下一线程的请求的处理方式与上述步骤相同,不同的只是发送当前进程编号的目的地是不同的。
[0021]步骤S15接收到进程编号的线程将其作为正在产生的进程编号,形成进程:在本步骤中,发出进程编号请求的线程收到来自进程监测单元的进程编号,将其作为正在产生或已经产生的进程的编号,形成进程并运行,
通过上述方法中对进程编号的管理,使得多个线程中的进程编号不会重复,即使其产生的时间相同;同样地,各线程也不会花费额外的开销来处理或协调重复的进程编号问题。在保证存储器映射页面不重复的情况下,节省了线程的开销,提高了处理器的效率。
[0022]如图5所示,在本发明中,还涉及一种实现上述方法的装置,包括上报及请求单元
11、当前进程编号取得单元12、请求处理单元13和编号接收单元14。其中,上报及请求单元11用于将运行在多个物理线程上的软件线程分别上报其正在使用的进程编号,并在需要产生新的进程时,发送进程编号请求到进程监测单元;当前进程编号取得单元12用于依据各线程上报的进程编号数据,进程监测单元由设定的进程编号中选择未被使用的进程编号作为当前可用编号,并按照设定的规则选择一个作为当前进程编号;请求处理单元13用于在所述多个物理线程中存在进程请求的情况下,按照物理线程的编号顺序形成请求队列,逐一将当前进程编号发送到发出请求的物里线程;一个当前进程编号被发送后,按照设定规则在所述可用编号中选择一个新的当前编号;编号接收单元14用于在发送进程编号的物理线程接收所述进程监测单元发送的当前进程编号,并将其作为正在产生的进程编号,产生新进程。
[0023]在本实施例中,一个所述物理线程分别通过不同的数据线传输数据到所述进程监测单元和接收来自所述进程监测单元的进程编号;多个物理线程分别通过不同的数据线与所述进程监测单元连接。上报及请求单元11上报的进程编号包括在其上运行的所有进程的编号;其发送的所述进程编号请求中包括该物理线程的编号。
[0024]当前进程编号取得单元12进一步包括运行进程编号取得模块121和当前进程编号产生模块122。其中,运行进程编号取得模块121用于使进程监测单元按照上报的物理线程的编号,依次取得其上正在运行的进程编号;当前进程编号产生模块122用于在允许使用的全部进程编号中除去由上述各物理线程上报的进程编号,剩下的即为当前可用的进程编号;选择当前可用的进程编号中最小一个作为当前进程编号并将其由所述当前可用的进程编号除去。
[0025]请求处理单元13中进一步包括请求判断模块131、当前进程编号发送模块132、当前进程编号更新模块133和物理线程判断模块134。其中,请求判断模块131用于判断一个物理线程是否发送进程编号请求,如是调用当前进程编号发送模块132 ;否则,调用物理线程判断模块134 ;当前进程编号发送模块132用于发送当前进程编号到该物理线程;当前进程编号更新模块133用于由所述当前可用的进程编号中选择最小一个作为当前进程编号并将其由所述当前可用的进程编号除去;物理线程判断模块134用于是否完成所有物理线程的编号请求判断,如是,退出;否则,进入下一个物理线程并调用请求判断模块。
[0026]以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
【权利要求】
1.一种共享内存映射页的处理器系统产生进程号的方法,其特征在于,包括如下步骤: A)运行在多个物理线程上的软件线程分别上报其正在使用的进程编号,并在需要产生新的进程时,发送进程编号请求到进程监测单元; B)依据各线程上报的进程编号数据,进程监测单元由设定的进程编号中选择未被使用的进程编号作为当前可用编号,并按照设定的规则选择一个作为当前进程编号; C)在所述多个物理线程中存在进程请求的情况下,按照物理线程的编号顺序形成请求队列,逐一将当前进程编号发送到发出进程编号请求的物理线程;一个当前进程编号被发送后,按照设定规则在所述可用编号中选择一个新的当前编号; D)发送进程编号请求的物理线程接收所述进程监测单元发送的当前进程编号,并将其作为正在产生的进程编号,产生新进程。
2.根据权利要求1所述的共享内存映射页的处理器系统产生进程号的方法,其特征在于,所述步骤A)中,物理线程上报的进程编号包括在其上运行的所有进程的编号;所述进程编号请求中包括该物理线程的编号。
3.根据权利要求2所述的共享内存映射页的处理器系统产生进程号的方法,其特征在于,所述步骤B)进一步包括: BI)进程监测单元 按照上报的物理线程的编号,依次取得其上正在运行的进程编号;B2)在允许使用的全部进程编号中除去由上述各物理线程上报的进程编号,剩下的即为当前可用的进程编号;选择当前可用的进程编号中最小一个作为当前进程编号并将其由所述当前可用的进程编号除去。
4.根据权利要求3所述的共享内存映射页的处理器系统产生进程号的方法,其特征在于,所述步骤C)中进一步包括: Cl)判断一个物理线程是否发送进程编号请求,如是执行步骤C2);否则,跳转到步骤C4); C2)发送当前进程编号到该物理线程; C3)由所述当前可用的进程编号中选择最小一个作为当前进程编号并将其由所述当前可用的进程编号除去; C4)是否完成所有物理线程的编号请求判断,如是,退出;否则,进入下一个物理线程并跳转到步骤Cl)。
5.根据权利要求4所述的共享内存映射页的处理器系统产生进程号的方法,其特征在于,一个所述物理线程分别通过不同的数据线传输数据到所述进程监测单元和接收来自所述进程监测单元的进程编号;多个物理线程分别通过不同的数据线与所述进程监测单元连接。
6.一种共享内存映射页的处理器系统产生进程号的装置,其特征在于,包括: 上报及请求单元:用于将运行在多个物理线程上的软件线程分别上报其正在使用的进程编号,并在需要产生新的进程时,发送进程编号请求到进程监测单元; 当前进程编号取得单元:用于依据各线程上报的进程编号数据,进程监测单元由设定的进程编号中选择未被使用的进程编号作为当前可用编号,并按照设定的规则选择一个作为当前进程编号;请求处理单元:用于在所述多个物理线程中存在进程编号请求的情况下,按照物理线程的编号顺序形成请求队列,逐一将当前进程编号发送到发出请求的物里线程;一个当前进程编号被发送后,按照设定规则在所述可用编号中选择一个新的当前编号; 编号接收单元:用于在发送进程编号请求的物理线程接收所述进程监测单元发送的当前进程编号,并将其作为正在产生的进程编号,产生新进程。
7.根据权利要求6所述的装置,其特征在于,所述上报及请求单元中,其上报的进程编号包括在其上运行的所有进程的编号;其发送的所述进程编号请求中包括该物理线程的编号。
8.根据权利要求7所述的装置,其特征在于,所述当前进程编号取得单元进一步包括: 运行进程编号取得模块:用于使进程监测单元按照上报的物理线程的编号,依次取得其上正在运行的进程编号; 当前进程编号产生模块:用于在允许使用的全部进程编号中除去由上述各物理线程上报的进程编号,剩下的即为当前可用的进程编号;选择当前可用的进程编号中最小一个作为当前进程编号并将其由所述当前可用的进程编号除去。
9.根据权利要求8所述的装置,其特征在于,所述请求处理单元中进一步包括: 请求判断模块:用于判断一个物理线程是否发送进程编号请求,如是调用当前进程编号发送模块;否则,调用物理线程判断模块; 当前进程编号发送模块:用于发送当前进程编号到该物理线程; 当前进程编号更新模块:用于由所述当前可用的进程编号中选择最小一个作为当前进程编号并将其由所述当前可用的进程编号除去; 物理线程判断模块:用于是否完成所有物理线程的编号请求判断,如是,退出;否则,进入下一个物理线程并调用请求判断模块。
10.根据权利要求9所述的装置,其特征在于,一个所述物理线程分别通过不同的数据线传输数据到所述进程监测单元和接收来自所述进程监测单元的进程编号;多个物理线程分别通过不同的数据线与所述进程监测单元连接。
【文档编号】G06F9/46GK103995739SQ201410166051
【公开日】2014年8月20日 申请日期:2014年4月24日 优先权日:2014年4月24日
【发明者】张耀文, 陈奇, 江锋, 刘波 申请人:深圳中微电科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1