专利名称:用于一致性多核处理器的请求仲裁方法及装置的制作方法
技术领域:
本发明涉及计算机技术领域,具体设计一种用于一致性多核处理器的请求仲裁方法及装置
背景技术:
随着人类社会的不断进步以及计算机硬件的飞速发展,单核处理器已经不能满足性能需求,多核处理器的出现和发展成为大势所趋。多核处理器相对于单核处理器具有很明显的优势第一多核处理器通过集成多个单线程核心或者集成多个多线程处理核心,使得整个处理器可以同时执行的线程数或任务数是单处理器的数倍,这极大提高了处理器的并行性能。
第二 多个内核集成在片内,极大地缩短了核间的互连线,核间通信延迟变低,提高了通信效率,数据传输宽带也得到了提高,功耗也随着器件的减少而得到降低。第三多核结构简单,易于优化设计,扩展性强,最终推动了多核的发展并成为逐渐取代单处理器成为主流。目前,多核处理器系统的处理器数目不断增加,不只是电脑,手机也早就进入了双核时代,随着2012年中国台湾的手机厂商宏达电(HTC)发布全球首款四核手机,标志着手机进入了四核时代。随着多核处理器系统中的处理器的数目增加,多核处理器的请求也会越来越多,有时多个处理器会发起多个请求,而且这些请求的优先级在大多数情况下是相同的,没有固定不变的优先级,而且每次最多有一个请求得到响应,所以仲裁结果应该体现出公平性,不能出现某个请求长时间得不到响应,而另一个请求得到一次以上的响应的情况,应该对于这些请求应该进行公平、轮流仲裁。
发明内容
为了克服已有多核处理器的无法解决一致性的多个请求的公平仲裁问题、限制了处理器性能的不足,本发明提供一种有效解决一致性多核处理器的多个请求的公平仲裁问题、提升处理器性能的用于一致性多核处理器的请求仲裁方法及装置。本发明解决其技术问题所采用的技术方案是一种用于一致性多核处理器的请求仲裁方法,当一致性多核处理器发起η个请求,并且这些请求的优先级相同,每次最多有一个请求得到响应时,假设这η个请求为req[l], req[2], req[3], ···, req[n],某一次仲裁过程中,初始状态下规定优先级顺序为req[l] > req[2] > req[3]>…〉req[m]>…〉req[n],某个请求 req[m]得到响应,那么下一次仲裁时请求的优先级被改变,其顺序改变为req [m+1] >req [m+2] >··· >req [n_l] >req [n] >req[l]>…〉req[m_l]> req[m] , n>m>l,进而实现优先级顺序的变换,公平、轮流仲裁。一种一致性多核处理器的请求仲裁装置,所述的装置包括两个优先级仲裁模块和译码模块,其中,译码模块,用于在每次仲裁结束以后调整优先级顺序,从而实现公平仲裁,具体如下对于上一次仲裁的结果信号grant_in[n:l]进行译码,假设上次仲裁是请求req[m]得到响应,那么grant_in[m]有效,grant_in[n: I]的其他位均无效,译码结果covercode[η: I]为covercode[n:m+l]的所有位均有效,covercode[m: I]的所有位均为无效;优先级仲裁模块,用于对于一致性多核处理器的η个请求进行仲裁,规定当前请求输入信号req[n:l]的最低位优先级最高,即初始优先级顺序为req[l]> req[2]>req[3]>…〉req[m]>…〉req[η],译码结果 covercode [η: I]和当前请求 req[n: I]通过与门,进而屏蔽req[m]以及比初始状态下req[m]优先级高的请求,从而产生新的请求new_req[n:l]。第一优先级仲裁模块对new_req[n: I]进行仲裁,若有仲裁结果输出,则信号avid O有效,该仲裁模块按照优先级顺序仲裁出唯一的请求;两个优先级仲裁模块包括第一优先级仲裁模块和第二优先级仲裁模块,当第一优先级仲裁模块进行仲裁的同时第二优先级仲裁模块对信号req[n:0]进行仲裁,若avid O有效,则通过avid O取反后和第二优先级仲裁模块的仲裁结果通过与门,从而屏蔽第二优先级仲裁模块的仲裁结果;若avid无效,则结果由第二优先级仲裁模块决定。 本发明的有益效果主要表现在1、当一致性多核处理器发起多个请求,而这些请求的优先级相同时,每次仲裁结束以后调整优先级顺序,可以实现优先级顺序的动态环形变换,进行公平、轮流仲裁;2、提升了处理器性能。
图I是本发明的整体结构示意图。图2是本发明的电路原理图。图3是本发明的译码模块译码方式示意图。
具体实施例方式下面结合附图对本发明做进一步说明。参照图f图3,一种用于一致性多核处理器的请求仲裁方法,当一致性多核处理器发起η个请求,并且这些请求的优先级相同,每次最多有一个请求得到响应时,假设这η个请求为req [I], req[2], req[3], ···, req [η],某一次仲裁过程中,初始状态下规定优先级顺序为req[l]> req[2]> req[3]> …〉req[m]> …〉req [η],某个请求 req [m]得到响应,那么下一次仲裁时请求的优先级被改变,其顺序改变为req[m+l]>req[m+2]>···>req[n-l]>req[n]> req[l]>…〉req[m_l]> req[m]进而实现优先级顺序的变换,公平、轮流仲裁。一种一致性多核处理器的请求仲裁装置,所述的装置包括两个优先级仲裁模块和译码模块,其中,译码模块,用于在每次仲裁结束以后调整优先级顺序,从而实现公平仲裁,具体如下对于上一次仲裁的结果信号grant_in[n:l]进行译码,假设上次仲裁是请求req[m]得到响应,那么grant_in[m]有效,grant_in[n: I]的其他位均无效,译码结果covercode [η: I]为covercode [n:m+l]的所有位均有效,covercode [m: I]的所有位均为无效;
优先级仲裁模块,用于对于一致性多核处理器的η个请求进行仲裁,规定当前请求输入信号req[n:l]的最低位优先级最高,即初始优先级顺序为req[l]> req[2]>req[3]>…〉req[m]>…〉req[n],译码结果 covercode [η: I]和当前请求 req[n: I]通过与门,进而屏蔽req[m]以及比初始状态下req[m]优先级高的请求,从而产生新的请求new_req[n:l]。第一优先级仲裁模块对new_req[n: I]进行仲裁,若有仲裁结果输出,则信号avid O有效,该仲裁模块按照优先级顺序仲裁出唯一的请求;两个优先级仲裁模块包括第一优先级仲裁模块和第二优先级仲裁模块,当第一优先级仲裁模块进行仲裁的同时第二优先级仲裁模块对信号req[n:0]进行仲裁,若avid O有效,则通过avid O取反后和第二优先级仲裁模块的仲裁结果通过与门,从而屏蔽第二优先级仲裁模块的仲裁结果;若avid无效,则结果由第二优先级仲裁模块决定。在图I中,一致性多核处理器系统中有η个处理器,这些处理器的地位是平等的,这些处理器可以同时发起多个请求到仲裁器,要求仲裁器进行仲裁,这些请求的优先级是 相同的,这些请求最多只有一个得到响应,仲裁结果应该体现出公平性,不能出现某个请求长时间得不到响应,而另一个请求得到一次以上的响应的情况,应该对于这些请求应该进行公平、轮流仲裁。在图2中,仲裁的具体步骤如下第一步一致性多核处理器同时发起η个请求,假设这些请求为req[l], req[2],req[3], ···, req[η],这些请求的优先级相同,假设初始状态下这η个请求的优先级顺序为req[l] > req[2] > req[3] >··· > req[m] >··· > req[n]。第二步信号grant_in[n: I]为上一次的仲裁输出结果,假设上一次仲裁req[m]得到响应,那么grant_in[m]=l,而这次仲裁的优先级顺序应该为req[m+l]> req[m+2]>···>req[n-l]>req[n]> req[l]>··· > req[m_l]> req[m]。信号 grant_in[n: I]经过译码模块译码之后,得到屏蔽信号covercodetn: I],具体的译码方式会在图3中详解,得到的屏蔽信号covercode [n:m+Ι]所有位均有效,而covercode [m: I]所有位均无效。屏蔽信号covercode [η: I]和请求信号req [η: I]通过与门以后得到新的请求信号new_req[n: I]。因为covercode [m: I]所有位均无效,所以new_req[m: I]所有位均无效,从而可以屏蔽req [m]以及比初始状态下req[m]优先级高的请求。第三步第一优先级仲裁模块对neW_req[n:l]进行仲裁,仲裁模块的优先级顺序为初始优先级顺序,即req [I] > req[2]> req [3] >…〉req[m]>…〉req [η] 若有初始状态下优先级比req[m]低的请求产生,而此时我们应该将初始状态下优先级比req[m]低的请求的优先级调整为高于req[m]以及初始状态下优先级比req[m]高的请求。所以如果初始状态下优先级比req[m]低的请求产生,那么有仲裁结果产生,则信号avid O有效,第一优先级仲裁模块可以根据优先级顺序req [I] > req[2]> req [3] >…〉req[m]>…〉req [η]仲裁出唯一的仲裁结果req_0ut ;如果第一优先级仲裁模块没有仲裁结果输出,则信号avidO无效,表示没有初始状态下比req[m]优先级低,而这次仲裁时应该优先级比req[m]高的请求产生,则第二优先级仲裁模块可以根据优先级顺序req[l]> req[2]> req[3]>…〉req[m]>…〉req[n]仲裁出唯一的仲裁结果req_out。使得优先级顺序转变为req [m+1] >req [m+2] >··· >req [n-1] >req [n] > req[l] >··· > req[m_l]> req[m]。在图3中信号grant_in[n: I]经过译码模块译码后得到屏蔽信号covercode [η: I]。信号grant_in[n: I]为上一次的仲裁输出结果,假设上一次仲裁req[m]得到响应,那么grant_in[m]=l。具体的译码方式为若grant_in[m] =1, covercode[m: I]所有位均无效,covercode [n:m+1]的所有位均有效。这样屏蔽信号covercode [η: I]与请求信号req [η: I]经过与门以后可以屏蔽req [m]以及比初始状态下req [m]优先级高的请求,使得优先级顺序转变为 req [m+1] > req[m+2] >...>req[n_l] >req[n] > req[l]>…〉req[m_l]>req[m]。实例一假设一致性多核处理器系统中有四个处理器,即这是一个四核处理器系统,这四个处理器的地位相同,分别为处理器I、处理器2、处理器3以及处理器4。处理器I发出的请求为req[l],处理器2发出的请求为req[2],处理器3发出的请求为req[3],处理器3发出的请求为req [4],初始状态下优先级顺序为req [ I] >req [2] >req [3] >req [4]。假设首次仲裁时只有处理器I发出请求req[l],其他三个处理器没有发出请求,请求信号req[4:1]为 4’ bOOOl,那么第一步信号grant_in[4:1]为4’b0000,这样可以得到屏蔽信号covercode [4:1] 为 4,bllll。第二步屏蔽信号covercode[4:1]和请求信号req[4:1]通过与门,得到新的请求信号 new_req[n: I]为 4’bOOOl。第三步请求信号neW_req[n: I]通过第一优先级仲裁模块之后有仲裁结果产生,req_out 为 4’ bOOOl,即 req[l]得到响应。实例二 假设一致性多核处理器系统中有四个处理器,即这是一个四核处理器系统,这四个处理器的地位相同,分别为处理器I、处理器2、处理器3以及处理器4。处理器I发出的请求为req [I],处理器2发出的请求为req [2],处理器3发出的请求为req [3],处理器3发出的请求为req[4],初始状态下优先级顺序为req[l] >req[2] >req[3] >req[4]。假设上一次仲裁时处理器I发出的请求req[l]得到响应,而这次仲裁时只有处理器3发出请求req[3],其他三个处理器没有发出请求,请求信号req[4:l]为4’b0100,那么第一步信号grant_in[4:1]为4’bOOOl,这样可以得到屏蔽信号covercode [4:1]为 4,blll0。第二步屏蔽信号covercode[4:1]和请求信号req[4:1]通过与门,得到新的请求信号 new_req[n: I]为 4’ b0100。第三步请求信号neW_req[n: I]通过第一优先级仲裁模块之后有仲裁结果产生,req_out 为 4’ b0100,即 req[3]得到响应。实例三假设一致性多核处理器系统中有四个处理器,即这是一个四核处理器系统,这四个处理器的地位相同,分别为处理器I、处理器2、处理器3以及处理器4。处理器I发出的请求为req [I],处理器2发出的请求为req [2],处理器3发出的请求为req [3],处理器3发出的请求为req[4],初始状态下优先级顺序为req[l]>req[2]>req[3]>req[4]。假设上一次仲裁时处理器3发出的请求req[3]得到响应,而这次仲裁时四个处理器均发出请求,请求信号req [4:1]为4’ bill I,那么第一步信号grant_in[4:1]为4’b0100,这样可以得到屏蔽信号covercode [4:1]为 4,bl000。第二步屏蔽信号covercode[4:1]和请求信号req[4:1]通过与门,得到新的请求信号new_req[n: I]为4’blOOO,从而可以屏蔽初始状态下优先级比req[4]高但是在这次仲裁时优先级应该比req[4]低的req[l]、req[2]和req[3]。第三步请求信号neW_req[n: I]通过第一优先级仲裁模块之后有仲裁结果产生,req_out 为 4’ blOOO,即 req[4]得到响应。实例四假设一致性多核处理器系统中有四个处理器,即这是一个四核处理器系统,这四个处理器的地位相同,分别为处理器I、处理器2、处理器3以及处理器4。处理器I发出的请求为req [I],处理器2发出的请求为req [2],处理器3发出的请求为req [3],处理器3发出的请求为req[4],初始状态下优先级顺序为req[l]>req[2]>req[3]>req[4]。假设上一次仲裁时处理器4发出的请求req[4]得到响应,而这次仲裁时处理器I发出请求req[l]以及处理器2发出req[2],其他两个处理器没有发出请求,请求信号req[4:1]为4’b0011,那么
第一步信号grant_in[4:1]为4’blOOO,这样可以得到屏蔽信号covercode [4:1]为 4,b0000。第二步屏蔽信号covercode[4:1]和请求信号req[4:1]通过与门,得到新的请求信号 new_req[n: I]为 4’ b0000。第三步请求信号neW_req[n: I]通过第一优先级仲裁器之后没有仲裁结果产生,那么最终的仲裁结果req_0Ut由第二优先级仲裁模块决定,因为优先级顺序为req[l]>req[2] > req[3] >…〉req[m]>…〉req[n],可以得到仲裁结果 req_out 为 4’b0001,即req[l]得到响应。从以上实施例子中可以通过图2中的电路后,假设初始状态下优先级顺序为req[l]> req[2]> req[3]>…〉req[m]>…〉req[n],若某一次仲裁过程中,某个请求req[m]得到响应,那么下一次仲裁时将req[m]以及在初始优先级顺序中优先级高于req[m]的请求req[l], req[2], ···, req[m]作为一个整体(这m个请求的优先级关系不变),这个整体的优先级降至req [m+1], req [m+2], req [n]以后,即优先级顺序变为req [m+1] >req[m+2]>***>req[n-l]>req[n]> req[l]>…〉req[m_l]> req[m]。从而实现优先级的动态变化,实现公平、轮流仲裁,提高系统性能。
权利要求
1.一种用于一致性多核处理器的请求仲裁方法,其特征在于当一致性多核处理器发起η个请求,并且这些请求的优先级相同,每次最多有一个请求得到响应时,假设这η个请求为req[l],req[2],req[3],…,req[n],初始状态下规定优先级顺序为req[l]> req[2]>req[3]>…〉req[m]>…〉req[n],某一次仲裁过程中,某个请求req[m]得到响应,那么下一次仲裁时请求的优先级被改变,其顺序改变为req [m+1] >req [m+2] >··· >req [n_l] >req [n] >req[l]>…〉req[m_l]> req[m] , n>m>l,进而实现优先级顺序的变换,公平、轮流仲裁。
2.一种用于实现如权利要求I所述的一致性多核处理器的请求仲裁方法的装置,其特征在于所述的装置包括两个优先级仲裁模块和译码模块,其中, 译码模块,用于在每次仲裁结束以后调整优先级顺序,从而实现公平仲裁,具体如下对于上一次仲裁的结果信号grant_in[n:l]进行译码,假设上次仲裁是请求req[m]得到响应,那么grant_in[m]有效,grant_in[n: I]的其他位均无效,译码结果covercode [η: I]为covercode [n:m+1]的所有位均有效,covercode [m: I]的所有位均为无效; 优先级仲裁模块,用于对于一致性多核处理器的η个请求进行仲裁,规定当前请求输入信号req[n:l]的最低位优先级最高,即初始优先级顺序为req[l]> req[2]> req[3]>…> req[m]>…〉req[η],译码结果covercode [η: I]和当前请求req[n: I]通过与门,进而屏蔽req[m]以及比初始状态下req[m]优先级高的请求,从而产生新的请求new_req[n: I]。第一优先级仲裁模块对new_req[n: I]进行仲裁,若有仲裁结果输出,则信号avid O有效,该仲裁模块按照优先级顺序仲裁出唯一的请求; 两个优先级仲裁模块包括第一优先级仲裁模块和第二优先级仲裁模块,当第一优先级仲裁模块进行仲裁的同时第二优先级仲裁模块对信号req[n:0]进行仲裁,若avid O有效,则通过avid O取反后和第二优先级仲裁模块的仲裁结果通过与门,从而屏蔽第二优先级仲裁模块的仲裁结果;若avid无效,则结果由第二优先级仲裁模块决定。
全文摘要
一种用于一致性多核处理器的请求仲裁方法,当一致性多核处理器发起n个请求,并且这些请求的优先级相同,每次最多有一个请求得到响应时,假设这n个请求为req[1],req[2],req[3],…,req[n],某一次仲裁过程中,某个请求req[m]得到响应,那么下一次仲裁时请求的优先级被改变,其顺序改变为req[m+1]>req[m+2]>…>req[n-1]>req[n]> req[1]>…> req[m-1]> req[m] ,n>m>1,实现优先级顺序的变换,公平、轮流仲裁。以及一种实现用于一致性多核处理器的请求仲裁方法的装置。本发明有效解决一致性多核处理器的多个请求的公平仲裁问题、提升处理器性能。
文档编号G06F13/14GK102902640SQ20121036705
公开日2013年1月30日 申请日期2012年9月28日 优先权日2012年9月28日
发明者吕飞龙, 王树朋, 黄凯, 葛海通 申请人:杭州中天微系统有限公司