CN1331053C - 一种旗标寄存器和避免多进程间资源访问冲突的方法 - Google Patents
一种旗标寄存器和避免多进程间资源访问冲突的方法 Download PDFInfo
- Publication number
- CN1331053C CN1331053C CNB2004100042392A CN200410004239A CN1331053C CN 1331053 C CN1331053 C CN 1331053C CN B2004100042392 A CNB2004100042392 A CN B2004100042392A CN 200410004239 A CN200410004239 A CN 200410004239A CN 1331053 C CN1331053 C CN 1331053C
- Authority
- CN
- China
- Prior art keywords
- flag
- register
- value
- unit
- storage unit
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明公开了一种旗标寄存器,该旗标寄存器的每一位都包括初始化单元、判断比较及数值刷新单元、旗标值存储单元和结果输出单元。本发明同时还公开了一种避免多进程间资源访问冲突的方法,包括以下步骤:当前要操作公共资源的进程发出设置旗标寄存器中旗标位为预先设定的被占用值的指令,并判断设置是否成功,是就执行下一步,否则进程挂起,下次激活的时候再返回;发出指令的进程操作资源;发出指令的进程设置该旗标位为预先设定的释放值。本发明通过把旗标寄存器和进程挂起机制相结合的方式可以高效率地避免多进程访问时存在的多资源访问冲突问题。
Description
技术领域
本发明涉及多进程技术,特别是一种旗标寄存器和避免多进程间资源访问冲突的方法。
背景技术
在多进程运行环境下,一个需要重点考虑的问题是如何在多进程运行环境下,避免不同进程间在访问相同资源时的资源冲突,另外一个需要考虑的问题是在存在资源冲突时和资源冲突解除时如何快速地完成进程间状态的切换。很多实时系统,例如网络处理器和电信交换机系统等都普遍存在着这些和多进程间资源访问冲突有关的问题。
网络处理器是一种专门用来处理数据包的特殊处理器。这种处理器是专门为优化数据包的处理而设计的,它将端口送过来的包快速处理后以线速率送到下一个节点。如同通用处理器一样,网络处理器一般采用多级流水线结构,保证每个时钟周期完成一条指令。为简化设计及降低功耗,网络处理器一般采用了精简指令集(RISC)方案。另一方面,为提供极高的速度和较高级的编程界面,网络处理器一般提供了多进程运行环境,在数据包的层次上给予多级流水线支持,即同一时刻可以有多个数据流经受处理。网络处理器在多进程运行环境下,需要重点考虑如何避免多进程运行环境下不同进程间在访问相同资源时存在资源冲突的问题,另外一个要考虑的因素是在存在资源冲突时和资源冲突解除时如何快速地完成进程间状态的切换。
除了网络处理器中存在这种多进程间资源访问冲突的问题,在很多其它实时系统中也存在同样的问题。比如在一个电信交换机系统中,不同的电话线路需要获取系统中话音存储单元的使用权,而交换芯片的话音存储单元是有限的。电信交换机系统中新接入的线路终端是连续不断和随机的,为了保证不同的线路终端能不重复地占用相同的话音存储单元,交换机系统也需要解决这种资源冲突的问题。
为了避免不同进程间出现资源访问冲突的问题,现有技术中通常采用软件实现的方式。例如现有的网络处理器中避免多进程间资源访问冲突的基本思想为:当网络处理器不同进程间存在访问相同资源的可能时,首先在不同进程都能访问到的一个通用寄存器中选定一个特殊的位作为旗标位,然后约定好资源占用时或释放时该旗标位具体的值,例如可以约定1表示资源占用,而0表示资源释放,这样当某个进程访问这个资源时,它首先设置这个旗标位为1,表示拥有这个资源的使用权,然后再对资源进行操作,当操作完毕后,再重新设置该旗标位为0,表示释放了对这个资源的使用权。当别的进程需要操作这个资源时,它首先要检查这个旗标位是否为1,如果不为1,那么它就操作这个资源,否则,这个进程就需要进入挂起状态,一直等到旗标位被别的进程释放。
如图1所示,现有技术中网络处理器避免多进程间资源访问冲突的流程如下:
步骤101:读取通用寄存器中已选定的旗标位;
步骤102:判断该通用寄存器中已选定旗标位的值是否与预先约定的被占用值相等,如果是则挂起进程,并等到下次激活的时候返回步骤101,如果不是则执行步骤103;
步骤103:设置该通用寄存器中已选定旗标位的值为预先约定的被占用值;
步骤104:进程操作资源;
步骤105:设置旗标位为预先约定的释放值。
这种现有技术的实现方式因所使用的指令较多而存在效率低的缺点。例如在网络处理器设计中,为了保证数据包能够以线速进行转发,提高网络处理器的效率,每个数据包能够获得的指令周期应该越少越好,因此需要重点考虑如何尽量减少微码指令和减少处理每个数据包的硬件周期,而现有技术通过软件方式设定旗标位,所使用的指令较多,从而应用现有技术就大大降低了网络处理器的转发效率。
发明内容
有鉴于此,本发明的主要目的是提出一种旗标寄存器,通过硬件的方式高效率地避免多进程访问时存在的多资源访问冲突问题。
本发明的另一目的是提出一种避免多进程间资源访问冲突的方法,采用旗标寄存器和进程挂起机制相结合的方法,高效率地避免多进程访问时存在的多资源访问冲突问题。
为实现上述目的,本发明的技术方案是这样的:
一种旗标寄存器,由不少于1个旗标位组成,每一旗标位至少包括初始化单元、判断比较及数值刷新单元、旗标值存储单元和结果输出单元;其中,初始化单元用于对旗标值存储单元初始赋值,判断比较及数值刷新单元用于比较旗标值存储单元中已保存的旗标值和要设置的旗标值,将更新后的旗标值输出给旗标值存储单元并将比较结果输出给结果输出单元,旗标值存储单元用于保存旗标值,结果输出单元用于根据所述比较结果输出进程挂起控制信号。
旗标值存储单元进一步连接有监控输出单元,监控输出单元用于读取旗标值存储单元所保存的旗标值。
判断比较及数值刷新单元进一步连接有旁路单元,旁路单元进一步与旗标值存储单元连接,旁路单元用于保证判断比较及数值刷新单元所获取的旗标值存储单元的值与正要写入到旗标值存储单元的值相等。
旗标值存储单元为D触发器、或随机存储器RAM。
判断比较及数值刷新单元为D触发器、或随机存储器RAM。
监控输出单元为选择器MUX0。
旁路单元包括选择器MUX1和与门AND0,与门AND0的输出端连接选择器MUX1的输入端。
结果输出单元包括非门NOT1和与门AND2,非门NOT1的输出端连接与门AND2的输入端。
判断比较及数值刷新单元包括D寄存器D1、D寄存器D2、D寄存器D3、非门NOT0、与门AND1、选择器MUX2、选择器MUX3和异或门XOR0,D寄存器D1输出端连接非门NOT0输入端和异或门XOR0第一输入端,非门NOT0输出端连接选择器MUX3第一输入端,选择器MUX3输出端连接旗标值存储单元,D寄存器D2输出端连接异或门XOR0第二输入端,异或门XOR0输出端连接与门AND1第一输入端和非门NOT1输入端,D寄存器D3输出端连接与门AND1第二输入端,与门AND1输出端连接选择器MUX2第一输入端。
初始化单元包括选择器MUX2和选择器MUX3,选择器MUX2输出端连接旗标值存储单元,选择器MUX3输出端连接旗标值存储单元。
一种避免多进程间资源访问冲突的方法,至少包括以下步骤:
A1、当前要操作公共资源的进程发出设置旗标寄存器中旗标位的值为预先约定的被占用值的指令,根据该指令生成所述旗标位的片选信号和该旗标位所设置的数据,利用生成的片选信号和该旗标位所设置的数据对所述旗标位进行设置,并判断设置是否成功,如果成功则执行步骤A2,否则挂起当前发出指令的进程,等到下次激活时候返回步骤A1;
A2、步骤A1所述的发出指令的进程操作公共资源;
A3、步骤A1所述的发出指令的进程设置步骤A1所述的该旗标位的值为预先约定的释放值。
从以上的技术方案可以看出,本发明提供了一种旗标寄存器,这种旗标寄存器由不少于1个旗标位组成,其中每一旗标位都实现了在写入旗标值的操作时,首先把要写入的旗标值与该旗标位原来保存的旗标值进行比较,然后把更新的旗标值保存到旗标位,同时根据比较结果输出相应的进程挂起控制信号,从而本发明通过增加硬件旗标寄存器的方式实现了对资源访问的控制,然后通过输出的进程挂起控制信号来控制相应的进程是继续执行还是挂起,因此本发明利用旗标寄存器和进程挂起机制相结合的方法避免了多进程间访问相同资源存在的冲突。同时,因为在现有技术中需要执行读回通用寄存器中设定旗标位的值、判断该旗标位是否与预先约定的被占用值相等、设置通用寄存器中设定旗标位为预先预定的被占用值这三条指令来实现对资源的访问控制,而本发明只需要用一条指令来执行,即执行设置旗标寄存器的旗标位为预先设定的被占用值,其中如果旗标寄存器中旗标位的值为预先约定的释放值,则设置成功,流程正常往下运行,否则进程挂起。因此如果某一个流程需要操作n个共享资源,那么应用本发明后节省了2n条指令,所以本发明大大减少了指令数和大大提高了处理效率,极高效率地避免了多进程访问时存在的多资源访问冲突问题。例如假设网络处理器中一个简单的微码转发程序所使用的指令个数在现有技术下为20个,且每个进程需要操作的公共资源为1个,应用本发明后可以节省2个指令,微码转发效率提高了2/20=10%,而且在微码指令越少,不同进程间操作公共资源的个数越多时,本发明的效果越明显。因此可以看出,应用本发明大大减少了指令的个数,从而以极高的效率避免了多进程间资源访问冲突的问题。
同时,本发明还提供了一种避免多进程间资源访问冲突问题的方法,通过把旗标寄存器和进程挂起机制相结合的方式,把现有技术中通过软件实现的指令通过硬件旗标寄存器来实现,从而保证了既能避免不同进程间访问相同资源时产生冲突的问题,又简化了判断机制,大大减少了指令数,进而以极高的效率避免了多进程间资源访问冲突的问题。
附图说明
图1为现有技术中避免多进程资源访问冲突的流程图。
图2为本发明旗标寄存器原理示意图。
图3为本发明旗标寄存器1位的功能实现示意图。
图4为本发明一实施例32位旗标寄存器原理示意图。
图5为本发明一实施例中旗标寄存器每一位功能实现示意图。
图6为本发明一实施例中避免多进程资源访问冲突的流程图。
图7为本发明一实施例中旗标寄存器第0位的功能实现逻辑电路示意图。
具体实施方式
为使本发明的目的、技术方案和优点表达得更加清楚明白,下面结合附图及具体实施例对本发明再作进一步详细的说明。
本发明的主要思想为通过硬件的方式实现在多进程访问相同资源时对各个进程的控制,本发明是通过增加旗标寄存器的方式,并配合进程挂起机制来避免多进程访问时可能存在的资源冲突问题。为实现本发明,首先要在硬件系统中增加旗标寄存器,这种旗标寄存器由不少于1个旗标位组成,其中每一旗标位都需要实现在写入旗标值的操作时,首先与该旗标位原来保存的旗标值进行比较,然后把更新的旗标值保存到旗标位,同时输出相应的进程挂起控制信号,然后通过输出的进程挂起控制信号来控制进程。
图2为本发明旗标寄存器原理示意图。如图2所示,旗标寄存器由不少于1位的旗标位所组成,每一旗标位有两个输入信号,分别为初始化信号和设置数据信号,同时每一旗标位有一个输出信号,为访问拒绝信号,也就是进程挂起控制信号。每一旗标位首先根据初始化信号进行旗标位初始化,然后根据该旗标位的设置数据信号而相应输出该旗标位访问拒绝信号,即进程挂起控制信号。实现旗标寄存器功能的关键在于每一旗标位功能的实现,即每一旗标位都需要实现在写入0或1的操作时,同时输出相应的进程挂起控制信号。
基于图2所示的旗标寄存器,图3为本发明旗标寄存器每一旗标位的功能实现示意图。如图3所示,旗标寄存器的每一旗标位至少由初始化单元、判断比较及数值刷新单元、旗标值存储单元和结果输出单元所组成,判断比较及数值刷新单元与旗标值存储单元与结果输出单元连接,旗标值存储单元与判断比较及数值刷新单元与初始化单元连接。
图3中,初始化单元用于对旗标值存储单元进行初始赋值。判断比较及数值刷新单元用于比较旗标值存储单元中已保存的旗标值和将要设置的旗标值,将更新后的旗标值输出给旗标值存储单元并将比较结果输出给结果输出单元。旗标值存储单元用于保存该旗标位的旗标值。结果输出单元用于根据所述比较结果输出相应位的位访问拒绝信号,即进程挂起的控制信号。
基于图2和图3所示的旗标寄存器,图4为本发明一实施例的旗标寄存器示意图。如图4所示,该旗标寄存器有32个旗标位组成,每个旗标位的输入信号有流水线寄存器读片选信号rd_de_rd_cs_sem_seg、流水线寄存器设置数据rd_de_vi_ctrl、直接写寄存器片选信号core_lsu_wr_cs_sem、直接写寄存器数据信号core_lsu_wr_sr_data、初始化完成标志信号init_done和时钟信号clk,每个旗标位的输出信号为寄存器位访问拒绝信号bitsemrej_seg。
表1为32位旗标寄存器对外接口信号描述表。
信号名称 | 输入/输出 | 位宽 | 信号描述 |
rd_de_rd_cs_sem_seg | 输入 | 32 | 流水线寄存器读片选信号 |
rd_de_vi_ctrl | 输入 | 32 | 流水线寄存器设置数据 |
core_lsu_wr_cs_sem | 输入 | 1 | 直接写寄存器片选信号 |
core_lsu_wr_sr_data | 输入 | 32 | 直接写寄存器数据信号 |
init_done | 输入 | 1 | 初始化完成标志信号 |
Clk | 输入 | 1 | 时钟信号 |
bitsemrej_seg | 输出 | 32 | 寄存器位访问拒绝信号 |
表1 32位旗标寄存器对外接口信号描述表
基于图3和图4所示的32位旗标寄存器,图5为其中每一旗标位的功能原理示意图。如图5所示,该32位旗标寄存器每一位都包括初始化单元、判断比较及数值刷新单元、监控输出单元、旁路单元、旗标值存储单元和结果输出单元。
图5中,初始化单元用于根据直接写寄存器片选信号core_lsu_wr_cs_sem、直接写寄存器数据信号core_lsu_wr_sr_data和初始化完成标志信号init_done对旗标值存储单元进行初始赋值。init_done信号是硬件系统初始化完成标志,当init_done信号无效,表示硬件系统没有初始化完成,此时可以通过直接写寄存器片选信号core_lsu_wr_cs_sem和直接写寄存器数据信号core_lsu_wr_sr_data来完成对旗标值存储单元初始值的初始化,一般都将旗标值存储单元初始化为释放标志。当init_done信号为有效后,直接写寄存器片选信号core_lsu_wr_cs_sem、直接写寄存器数据信号core_lsu_wr_sr_data两个信号就不起作用。
判断比较及数值刷新单元根据流水线寄存器读片选信号rd_de_rd_cs_sem_seg和流水线寄存器设置数据rd_de_vi_ctrl同旗标值存储单元中已保存的旗标值进行比较,并且将更新后的旗标值输出给旗标值存储单元和将比较结果输出给结果输出单元。
旗标值存储单元用于保存该旗标位的旗标值。
结果输出单元用于根据比较结果输出相应旗标位的位访问拒绝信号bitsemrej_seg,即进程挂起的控制信号。
监控输出单元与旗标值存储单元连接,用于输出旗标值存储单元的具体旗标值,监控输出单元可以监控和调试硬件旗标寄存器。监控输出单元通过直接读寄存器片选信号core_lsu_rd_cs_sem和直接读寄存器数据信号lsu_core_sr_data来读取旗标寄存器的值。如果要简化电路设计,也可以去掉监控输出单元。
旁路单元分别与判断比较及数值刷新单元和旗标值存储单元连接。当判断比较及数值刷新单元同时对旗标值存储单元进行读和写操作时,旁路单元用于保证当前时刻判断比较及数值刷新单元所获取的存储单元的值就是正要写入到旗标值存储单元的值,以避免要等一个全部流水线周期后才能再重新读取该值,进而提高旗标寄存器每一旗标位的处理效率。同样,如果要简化电路设计,也可以去掉旁路单元。
本发明实现避免多进程间资源访问冲突的关键主要包括两点,首先在此硬件系统中增加硬件旗标寄存器,其次是在此硬件系统中发出一条指令。这条指令包括三个功能,首先读出旗标寄存器中某一旗标位的值,其次判断所读出旗标位的值是否为预先约定的被占用值,如果所读出旗标位的值为预先约定的释放值,则设置此旗标位为预先约定的被占用值,否则设置不成功,发出此指令的进程挂起。
基于图2和图3所示的旗标寄存器,图6为本发明中设置旗标寄存器一实施例的流程示意图,包括以下步骤:
步骤601:当前要操作公共资源的进程发出设置旗标寄存器中旗标位的值为预先约定的被占用值的指令,并判断设置是否成功,如果成功就执行下一步,否则发出指令的进程挂起,等到下次激活的时候返回步骤601;
步骤602:发出指令的进程操作公共资源;
步骤603:发出指令的进程设置该旗标位的值为预先约定的释放值。
在以上过程中,对某公共资源有访问冲突的各个进程对应于旗标寄存器的某一个旗标位,然后该有相同的公共资源访问冲突的各个进程通过设置相对应的旗标位的值进行对公共资源的访问控制。换句话说就是,旗标寄存器中的每个旗标位对应一种某公共资源被多进程访问发生冲突的情况。
当执行步骤601所述的指令时,可在流水线执行的译码阶段将这条指令翻译为该旗标位的读片选信号和设置数据。为了举例说明,假设采用第0位旗标位,同时约定当旗标位为1表示资源被占用,而旗标位为0表示资源释放。此时指令是要将第0位设置为1,在流水线执行的译码阶段翻译为第0位的读片选信号rd_de_rd_cs_sem_seg[0]和第0位的设置数据rd_de_vi_ctrl,其中第0位的读片选信号rd_de_rd_cs_sem_seg[0]为1,表示第0位片选信号有效,第0位的设置数据rd_de_vi_ctrl为1,表示第0位要设置的数据为1。如果第0位原来的值为0,则设置成功,将第0位的值改为1,同时输出第0位寄存器位访问拒绝信号bitsemrej_seg[0]为0,即进程挂起控制信号为0,此进程挂起控制信号又输出给系统中别的控制模块以控制执行此指令的进程顺序正常执行。反之,如果旗标位中原来的值为1,则设置不成功,此旗标位的值不改变,同时输出第0位寄存器位访问拒绝信号为1,指示执行此指令的进程挂起,一直等到此寄存器的值变为0后,挂起的进程才能正常地设置此旗标位并且输出位访问拒绝信号为0,同时程序又能顺序往下执行。当指令要将第0位设置为0时,无论旗标位原来的值为0或1,都将此旗标位设置为0。
以上过程中,是在流水线执行的译码阶段产生旗标位的读片选信号和设置数据,也可以不在译码阶段,而是通过对流水线的综合考虑,在流水线的其他阶段产生旗标位的读片选信号和设置数据。
预先约定旗标位被占用值为1,旗标位释放值为0,基于图5所示的旗标寄存器每一位的功能原理示意图,图7为应用本发明一实施例的第0位的功能实现逻辑电路示意图。如图7所示,旗标寄存器每一位包含4个D寄存器,分别为D寄存器D0、D寄存器D1、D寄存器D2、D寄存器D3,1个异或门XOR0,3个与门,分别为与门AND0、与门AND1、与门AND2,4个选择器,分别为选择器MUX0、选择器MUX1、选择器MUX2、选择器MUX3,2个非门,分别为非门NOT0、非门NOT1。
选择器MUX0对应于图5的监控输出单元,D寄存器D0对应于图5的旗标值存储单元,与门AND0和选择器MUX1对应于图5的旁路单元,D寄存器D1,非门NOT0,D寄存器D2,D寄存器D3,异或门XOR0,与门AND1,选择器MUX2,选择器MUX3对应于图5的判断比较及数值刷新单元,非门NOT1和与门AND2对应于图5中结果输出单元,选择器MUX2和选择器MUX3对应于图5中初始化单元。
在流水线上指令执行时主要包括以下4种情况。
1:旗标位原来的值为0,现在要将其置为1。
2:旗标位原来的值为0,现在又将其置为0。
3:旗标位原来的值为1,现在要将其置为0。
4:旗标位原来的值为1,现在又将其置为1。
下面分别就这4种情况下,图7所示的32位旗标寄存器第0位是如何实现功能来分别加以描述。
当在第1种情况下,即D寄存器D0原来的值为0,现在要将其置为1。这种情况的实际应用场合是当旗标位原来是空闲时,进程申请占用此旗标。此时rd_de_rd_cs_sem_seg[0]为1,表示第0位片选信号有效。rd_de_vi_ctrl为1,表示第0位要设置的数据为1。在下一个时钟沿到来时,D寄存器D0的数据输出端q输出的信号经过D寄存器D1后与rd_de_vi_ctrl经过D寄存器D2后进行异或,异或后输出的结果为1,再与经过D寄存器D3后的片选rd_de_rd_cs_sem_seg[0]信号进行与操作,与操作后的结果1经过选择器MUX2后输出给D寄存器D0的写使能端即en端,同时写入D寄存器D0的数据为原来D寄存器D0中的数据输出端q输出的信号经过D寄存器D1后再取反的值,即原来D寄存器D0的值为0,取反后的值为1,写入的值就变为1。由于D寄存器D0的写使能端en为1,且写入的数据为1,这样当下一个时钟沿到来时,1就写入到D寄存器D0中去。另外,寄存器位访问拒绝信号bitsemrej_seg[0],即进程挂起需要的位访问控制信号是新写入的数值rd_de_vi_ctrl打一拍后的数据、原来D寄存器D0中的数据输出端q输出的信号经过D寄存器D1后与rd_de_vi_ctrl经过D寄存器D2后进行异或后再取反的值和片选信号rd_de_rd_cs_sem_seg[0]经过D寄存器D3后的值等三个信号进行与操作的结果。在这种情况下,这三个信号的值分别为1、0和1,因此,输出的bitsemrej_seg[0]信号就为0。从上面的详细分析可以看出,当指令经过此逻辑电路时,就能实现将D寄存器D0的数值由0改为1同时输出进程挂起控制信号为0,即指示此进程不挂起。
当在第2种情况下,即D寄存器D0原来的值为0,现在又要将其置为0。这种情况在实际应用时一般不会出现。但为了避免软件人员的误操作,本实施例逻辑电路也实现了在这种情况下的规避功能,即不修改D寄存器D0的值,输出进程挂起控制信号为0。此时rd_de_rd_cs_sem_seg[0]为1,表示第0位片选信号有效,rd_de_vi_ctrl为0,表示第0位要设置的数据为0。在下一个时钟沿到来时,D寄存器D0的数据输出端q输出的D寄存器D0原来的信号经过D寄存器D1后与rd_de_vi_ctrl经过D寄存器D2后进行异或,异或后输出的结果为0再与经过D寄存器D3后的片选rd_de_rd_cs_sem_seg[0]信号进行与操作,与操作后的结果0再经过选择器MUX2后输出给D寄存器D0的写使能端en。因为D寄存器D0的写使能信号en为0,所以在下一个时钟沿到来时D寄存器D0中的值还是保持不变。另外,寄存器位访问拒绝信号bitsemrej_seg[0],即进程挂起需要的位访问控制信号是新写入的数值rd_de_vi_ctrl打一拍后的数据、D寄存器D0的数据输出端q输出的D寄存器D0原来的信号经过D寄存器D1后与rd_de_vi_ctrl经过D寄存器D2后进行异或后再取反的值和片选信号经过D寄存器D3后的值这三个信号进行与操作的结果。在这种情况下,这三个信号的值分别为0、1和1,因此,输出的bitsemrej_seg[0]信号就为0。从上面的详细分析可以看出,当指令经过此逻辑电路时,原来的寄存器的数值保持0不变,同时输出进程挂起控制信号为0,即指示此进程不挂起。
当在第3种情况下,即D寄存器D0原来的值为1,现在要将其置为0。这种情况的实际应用场合是指当某进程占用旗标后,又重新释放此旗标。此时rd_de_rd_cs_sem_seg[0]为1,表示第0位片选信号有效,rd_de_vi_ctrl为0,表示第0位要设置的数据为0。在下一个时钟沿到来时,D寄存器D0的数据输出端q输出的原来D寄存器D0的信号经过D寄存器D1后与rd_de_vi_ctrl经过D寄存器D2后进行异或,异或后输出的结果为1再与经过D寄存器D3后的片选rd_de_rd_cs_sem_seg[0]信号进行与操作,与操作后的结果1经过选择器MUX2后输出给D寄存器D0的写使能端en,同时写入的数据是原来D寄存器D0的数据输出端q输出的信号经过D寄存器D1后再取反的值。原来D寄存器D0的值为1,取反后的值为0,这样写入的值就变为0。由于D寄存器D0的写使能端en为1,且写入的数据为0,这样,当下一个时钟沿到来时,0就写入到D寄存器D0中去。另外,寄存器位访问拒绝信号bitsemrej_seg[0],即进程挂起需要的位访问控制信号是新写入的数值rd_de_vi_ctrl打一拍后的数据、D寄存器D0的数据输出端q输出的原来的D寄存器D0信号经过D寄存器D1后与rd_de_vi_ctrl经过D寄存器D2后进行异或后再取反的值和片选信号经过D寄存器D3触发器后的值等三个信号进行与操作的结果。在这种情况下,这三者的值分别为0、0和1,因此,输出的bitsemrej_seg[0]信号就为0。从上面的详细分析可以看出,当指令经过此电路时,就能实现将原来的寄存器的数值由1改为0同时输出进程挂起控制信号为0,即指示此进程不挂起。
当在第4种情况下,即D寄存器D0原来的值为1,现在要将其置为1。这种情况的实际应用场合是指当某进程占用旗标后,其它进程又要重新申请占用此旗标。此时rd_de_rd_cs_sem_seg[0]为1,表示第0位片选信号有效。rd_de_vi_ctrl为1,表示第0位要设置的数据为1。在下一个时钟沿到来时,D寄存器D0的数据输出端q输出的原来的D寄存器D0的信号经过D寄存器D1后与rd_de_vi_ctrl经过D寄存器D2后进行异或,异或后输出的结果为0再与经过D寄存器D3后的片选信号rd_de_rd_cs_sem_seg[0]进行与操作,写操作后的结果0经过选择器MUX2后输出给D寄存器D0的写使能端en。因为D寄存器D0的写使能端en为0,所以当下一个时钟沿到来时,D寄存器D0原来的值1就保持不变。另外,寄存器位访问拒绝信号bitsemrej_seg[0],即进程挂起需要的位访问控制信号是新写入的数值rd_de_vi_ctrl打一拍后的数据、D寄存器D0的数据输出端q输出的原来的D寄存器D0信号经过D寄存器D1后与rd_de_vi_ctrl经过D寄存器D2后进行异或后再取反的值和片选信号经过D寄存器D3后的值等三个信号进行与操作的结果。在这种情况下,这三个信号的值分别为1、1和1,因此,输出的bitsemrej_seg[0]信号就为1。从上面的详细分析可以看出,当指令经过此电路时,就能实现将原来的寄存器的数值1保持不变,同时输出进程挂起信号为1即指示执行此指令的进程挂起。
从上面的详细描述可以看出,图7所示的旗标寄存器的第0位可以实现读出旗标寄存器原值、设置新值和根据旗标寄存器新旧值的比较来输出相应的进程挂起控制信号,同理其他位的实现方式也一样。
在图7中旗标寄存器每一位旗标值存储单元和判断比较及数值刷新单元都采用了D寄存器,如果不考虑设计时逻辑面积的大小,也可以不采用D寄存器,而是通过RAM等别的硬件资源来实现。
以上实施例中列出了一个32位的旗标寄存器,而实际上旗标寄存器的位数可以根据进程和资源的个数而进行调整。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (11)
1、一种旗标寄存器,其特征在于,由不少于1个旗标位组成,每一旗标位至少包括初始化单元、判断比较及数值刷新单元、旗标值存储单元和结果输出单元;其中,初始化单元用于对旗标值存储单元初始赋值,判断比较及数值刷新单元用于比较旗标值存储单元中已保存的旗标值和要设置的旗标值,将更新后的旗标值输出给旗标值存储单元并将比较结果输出给结果输出单元,旗标值存储单元用于保存旗标值,结果输出单元用于根据所述比较结果输出进程挂起控制信号。
2、根据权利要求1所述的旗标寄存器,其特征在于,所述的旗标值存储单元进一步连接有监控输出单元,所述监控输出单元用于读取旗标值存储单元所保存的旗标值。
3、根据权利要求1所述的旗标寄存器,其特征在于,所述的判断比较及数值刷新单元进一步连接有旁路单元,旁路单元进一步与旗标值存储单元连接,所述旁路单元用于保证判断比较及数值刷新单元所获取的旗标值存储单元的值与正要写入到旗标值存储单元的值相等。
4、根据权利要求1所述的旗标寄存器,其特征在于,所述的旗标值存储单元为D触发器、或随机存储器RAM。
5、根据权利要求1所述的旗标寄存器,其特征在于,所述的判断比较及数值刷新单元为D触发器、或随机存储器RAM。
6、根据权利要求2所述的旗标寄存器,其特征在于,所述的监控输出单元为选择器MUX0。
7、根据权利要求3所述的旗标寄存器,其特征在于,所述的旁路单元包括选择器MUX1和与门AND0,所述与门AND0的输出端连接选择器MUX1的输入端。
8、根据权利要求1所述的旗标寄存器,其特征在于,所述的结果输出单元包括非门NOT1和与门AND2,所述非门NOT1的输出端连接与门AND2的输入端。
9、根据权利要求1所述的旗标寄存器,其特征在于,所述的判断比较及数值刷新单元包括D寄存器D1、D寄存器D2、D寄存器D3、非门NOT0、与门AND1、选择器MUX2、选择器MUX3和异或门XOR0,所述D寄存器D1输出端连接非门NOT0输入端和异或门XOR0第一输入端,所述非门NOT0输出端连接选择器MUX3第一输入端,所述选择器MUX3输出端连接旗标值存储单元,所述D寄存器D2输出端连接异或门XOR0第二输入端,所述异或门XOR0输出端连接与门AND1第一输入端和非门NOT1输入端,所述D寄存器D3输出端连接与门AND1第二输入端,所述与门AND1输出端连接选择器MUX2第一输入端。
10、根据权利要求1所述的旗标寄存器,其特征在于,所述的初始化单元包括选择器MUX2和选择器MUX3,选择器MUX2输出端连接旗标值存储单元,选择器MUX3输出端连接旗标值存储单元。
11、一种避免多进程间资源访问冲突的方法,其特征在于,至少包括以下步骤:
A1、当前要操作公共资源的进程发出设置旗标寄存器中旗标位的值为预先约定的被占用值的指令,根据该指令生成所述旗标位的片选信号和该旗标位所设置的数据,利用生成的片选信号和该旗标位所设置的数据对所述旗标位进行设置,并判断设置是否成功,如果成功则执行步骤A2,否则挂起当前发出指令的进程,等到下次激活时候返回步骤A1;
A2、步骤A1所述的发出指令的进程操作公共资源;
A3、步骤A1所述的发出指令的进程设置步骤A1所述的该旗标位的值为预先约定的释放值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100042392A CN1331053C (zh) | 2004-02-12 | 2004-02-12 | 一种旗标寄存器和避免多进程间资源访问冲突的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100042392A CN1331053C (zh) | 2004-02-12 | 2004-02-12 | 一种旗标寄存器和避免多进程间资源访问冲突的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1655125A CN1655125A (zh) | 2005-08-17 |
CN1331053C true CN1331053C (zh) | 2007-08-08 |
Family
ID=34892006
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100042392A Expired - Fee Related CN1331053C (zh) | 2004-02-12 | 2004-02-12 | 一种旗标寄存器和避免多进程间资源访问冲突的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1331053C (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101266554B (zh) * | 2008-04-22 | 2010-04-07 | 中兴通讯股份有限公司 | 一种嵌入式终端的多媒体应用处理方法以及装置 |
CN104239274B (zh) * | 2013-08-28 | 2018-09-21 | 威盛电子股份有限公司 | 微处理器及其配置方法 |
CN108182114B (zh) * | 2017-12-27 | 2021-04-16 | 努比亚技术有限公司 | 一种资源分配方法、终端及计算机可读存储介质 |
CN111221573B (zh) * | 2018-11-26 | 2022-03-25 | 深圳云天励飞技术股份有限公司 | 一种寄存器访问时序的管理方法、处理器、电子设备及计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4574350A (en) * | 1982-05-19 | 1986-03-04 | At&T Bell Laboratories | Shared resource locking apparatus |
US6112222A (en) * | 1998-08-25 | 2000-08-29 | International Business Machines Corporation | Method for resource lock/unlock capability in multithreaded computer environment |
US20030149820A1 (en) * | 2002-02-04 | 2003-08-07 | Nokia Corporation | Hardware semaphore intended for a multi-processor system |
-
2004
- 2004-02-12 CN CNB2004100042392A patent/CN1331053C/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4574350A (en) * | 1982-05-19 | 1986-03-04 | At&T Bell Laboratories | Shared resource locking apparatus |
US6112222A (en) * | 1998-08-25 | 2000-08-29 | International Business Machines Corporation | Method for resource lock/unlock capability in multithreaded computer environment |
US20030149820A1 (en) * | 2002-02-04 | 2003-08-07 | Nokia Corporation | Hardware semaphore intended for a multi-processor system |
Non-Patent Citations (1)
Title |
---|
计算机操作系统教程 张尧学,史美林,53,54,清华大学出版社 1999 * |
Also Published As
Publication number | Publication date |
---|---|
CN1655125A (zh) | 2005-08-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4637123B2 (ja) | データ処理方法およびデータ処理ユニット、コンフィギュレーション化可能なエレメントのダイナックな再コンフィギュレーション方法、システムおよびプロセス | |
US7373440B2 (en) | Switch/network adapter port for clustered computers employing a chain of multi-adaptive processors in a dual in-line memory module format | |
TWI221968B (en) | System having an apparatus for controlling use of a communication bus and method for controlling use of a communication bus in a system | |
CN102141971B (zh) | 具有大容量存储功能的1553b硬件定时通讯模块 | |
CN101221541A (zh) | 用于soc的可编程通信控制器及其编程模型 | |
WO2023045203A1 (zh) | 一种任务调度方法、芯片以及电子设备 | |
CN1429369A (zh) | 具有可配置的高速缓存/静态随机存取存储器的系统 | |
CN103246628A (zh) | Smi接口管理方法及可编程逻辑器件 | |
CN1331053C (zh) | 一种旗标寄存器和避免多进程间资源访问冲突的方法 | |
CN101341471B (zh) | 动态高速缓存管理的设备和方法 | |
CN100392619C (zh) | 控制闪存存取时间的方法、闪存的存取系统及闪存控制器 | |
CN101324863B (zh) | 一种同步静态存储器的控制装置及方法 | |
EP1761855B1 (en) | Data processing system and method for interconnect arbitration | |
CN102622319B (zh) | 基于mpmc的高速存储器接口ip核的数据交换系统 | |
US6708259B1 (en) | Programmable wake up of memory transfer controllers in a memory transfer engine | |
CN112579518A (zh) | 网络拓扑结构的构建方法、访问方法及装置 | |
US20140013148A1 (en) | Barrier synchronization method, barrier synchronization apparatus and arithmetic processing unit | |
CN114721464A (zh) | 片上系统和计算装置 | |
CN111666254A (zh) | 一种新型异构多处理器电路系统 | |
US20130246670A1 (en) | Information processing system | |
CN104123254A (zh) | 一种节省硬件资源的配置寄存器访问方法 | |
CN110930293B (zh) | 一种基于有限状态机的ddr读访问信用管理方法 | |
CN102929677A (zh) | 多数字信号处理器的加载系统及方法 | |
JPH06161972A (ja) | マルチプロセッサシステム | |
CN212647462U (zh) | 一种新型异构多处理器电路系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070808 Termination date: 20150212 |
|
EXPY | Termination of patent right or utility model |