一种临界资源的访问装置和方法制造方法及图纸

技术编号:10674595 阅读:126 留言:0更新日期:2014-11-26 10:47
本发明专利技术提供一种临界资源的访问装置和方法,应用在多核处理器内部,该装置执行以下处理流程:A、在访问临界资源前从预设的缓存器中读取自旋锁缓存变量的值到特定的寄存器中,并判断所述自旋锁缓存变量值是否为初始值,如果是,则转步骤B;B、更新所述特定寄存器中的自旋锁缓存变量值;C、判断在读取所述自旋锁缓存变量到特定的寄存器之后是否有其他核访问过所述自旋锁缓存变量,如果是,则返回步骤A,如果否,则将更新后的所述寄存器中的值存入到所述预设的缓存器中,并访问所述临界资源。通过本发明专利技术的技术方案,有效解决了现有技术中临界资源访问速度慢的问题,提高了用户体验。

【技术实现步骤摘要】
【专利摘要】本专利技术提供,应用在多核处理器内部,该装置执行以下处理流程:A、在访问临界资源前从预设的缓存器中读取自旋锁缓存变量的值到特定的寄存器中,并判断所述自旋锁缓存变量值是否为初始值,如果是,则转步骤B;B、更新所述特定寄存器中的自旋锁缓存变量值;C、判断在读取所述自旋锁缓存变量到特定的寄存器之后是否有其他核访问过所述自旋锁缓存变量,如果是,则返回步骤A,如果否,则将更新后的所述寄存器中的值存入到所述预设的缓存器中,并访问所述临界资源。通过本专利技术的技术方案,有效解决了现有技术中临界资源访问速度慢的问题,提高了用户体验。【专利说明】
本专利技术涉及多核处理器
,尤其涉及。
技术介绍
随着网络安全设备对处理性能要求的日益提高,多核处理器得以广泛应用。一般地,在处理系统中都存在着临界资源,临界资源是指每次仅允许一个进程访问的资源,也就是多个核必须互斥访问的资源。为了防止多个核同时访问某一临界资源,在软件设计中通常是通过自旋锁加以保护。 现有技术中,通过全局共享的内存变量作为自旋锁资源判断的依据。具体地,请参考图1,现有的商用多核处理器的设计上通常为每个核拥有一个独立的一级缓存,所有核共享二级缓存和内存。所述全局共享的内存变量分别在内存、二级缓存以及每个一级缓存中存在有对应的映像。当核I对自旋锁进行操作时会更新该一级缓存中内存变量的内容,从而导致其他核的一级缓存中之前保持的该变量失效,其他核想要进行自旋锁操作时就需要重新从共享的二级缓存或者内存中读取。由于二级缓存和内存的访问效率远远低于一级缓存的访问效率,所以就会导致自旋锁的操作效率低下,进而影响设备的整体运行速率。
技术实现思路
有鉴于此,本专利技术提供,以解决现有技术存在的不足。 具体地,所述装置应用在多核处理器内部,该装置包括: 获取模块,用于在访问临界资源前从预设的缓存器中读取自旋锁缓存变量的值到特定的寄存器中,并判断所述自旋锁缓存变量值是否为初始值; 更新模块,用于在所述自旋锁缓存变量值为初始值时,更新所述特定寄存器中的该值; 判断模块,用于在更新完毕后,判断在读取所述自旋锁缓存变量到特定的寄存器之后是否有其他核访问过所述自旋锁缓存变量,如果是,则返回获取模块重新读取自旋锁缓存变量,如果否,则将更新后的所述寄存器中的值存入到所述预设的缓存器中,并访问所述临界资源。 所述方法包括以下步骤: A、在访问临界资源前从预设的缓存器中读取自旋锁缓存变量的值到特定的寄存器中,并判断所述自旋锁缓存变量值是否为初始值,如果是,则转步骤B ; B、更新所述特定寄存器中的自旋锁缓存变量值; C、判断在读取所述自旋锁缓存变量到特定的寄存器之后是否有其他核访问过所述自旋锁缓存变量,如果是,则返回步骤A,如果否,则将更新后的所述寄存器中的值存入到所述预设的缓存器中,并访问所述临界资源。 由以上技术方案可见,本专利技术通过设置预设的缓存器,供多核处理器中各个核取得临界资源的自旋锁,提高了自旋锁的执行效率,进而提高报文转发处理效率。 【专利附图】【附图说明】 图1是现有技术中多核处理器的设计图; 图2是本专利技术一种实施方式中多核处理器的设计图; 图3是本专利技术一种实施方式中临界资源访问方法的流程图; 图4是本专利技术一种实施方式中临界资源访问装置的逻辑图。 【具体实施方式】 针对现有技术中存在的问题,本专利技术提供了。为了使本专利技术的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本专利技术进行详细描述。 请参考图3和图4,在本专利技术一种优选的实施方式中,所述装置包括:获取模块、更新模块、判断模块以及还原模块。该装置执行如下处理流程: 步骤101,在访问临界资源前从预设的缓存器中读取自旋锁缓存变量的值到特定的寄存器中,并判断所述自旋锁缓存变量值是否为初始值,如果是转步骤102,如果否则重新读取。 在多核处理系统中,通常采用自旋锁对临界资源加以保护,如果某个核想要访问临界资源,需要先取得对应的自旋锁资源。而自旋锁资源通常采用自旋锁缓存变量作为判断依据,每次对自旋锁的操作都会更新所述缓存变量的值。具体地,首先为该自旋锁缓存变量赋予初始值,比方说可以初始化为0,表示该锁资源没有被占用,如果该锁资源被占用,则可以更新该缓存变量的值为1,以此加以区分。 本步骤中,请参考图2,与现有技术不同,本专利技术所述预设的缓存器是专门为自旋锁设计的一块独立的缓存区域,在CPU设计时为其预留独立的物理空间。该区域的访问独立于内存系统,为所有核所共享。在一种优选的实施方式中,该预设的缓存器是高速缓存器,其访问的速度与一级缓存在同一个数量级,一般是三到四个时钟周期。本专利技术中,所有核都是通过该预设的缓存器获取自旋锁资源,速度是三到四个时钟周期。而现有技术中,如果一级缓存中的内存变量失效,获取自旋锁的时候就需要访问二级缓存或者是内存,而二级缓存的访问的速度一般是50个时钟周期,内存的访问速度更慢,一般是150个时钟周期。所以本专利技术相对于现有技术,设立独立的高速缓存区域,可以满足对自旋锁资源的高速访问。 步骤101由获取模块执行,具体地,获取模块是将所述自旋锁缓存变量中的值读取到特定的寄存器中,然后进行判断。如果所述自旋锁缓存变量中的值是初始值,说明此时自旋锁资源没有被占用,可以进行后续步骤;如果所述自旋锁缓存变量中的值不是初始值,则说明自旋锁资源已经被占用,需要等待其他核使用完毕后才能进行操作。此时,获取模块会不断地循环读取所述自旋锁缓存变量并进行判断,直到获取到所述自旋锁资源。 步骤102,更新所述特定寄存器中的值。 本步骤由更新模块执行。通常是将特定寄存器中存有的自旋锁缓存变量的值更新为其他值加以区分,比方说可以将其由初始值O更新为I。 步骤103,判断在读取所述自旋锁缓存变量的值到特定的寄存器之后是否有其他核访问过所述自旋锁缓存变量。如果是,则返回步骤101;如果否,则将更新后的所述寄存器中的值存入到所述预设的缓存器中,并访问所述临界资源。 本步骤由判断模块执行。理论上,只要步骤101中读取的自旋锁缓存变量的值是初始值就说明可以取得自旋锁并访问临界资源,但是在实际应用中,会出现某个核在读取完成所述自旋锁缓存变量之后,更新之前,又有其他核读取的情况,如果不做处理,那么这两个核都会认为自己已经取得到了自旋锁资源,进而都去访问临界资源,造成访问冲突。所以在一种优选的实施方式中,设定在修改所述特定的缓存器中的自旋锁缓存变量前进行判断,判断此期间是否有其他核访问。具体地,是从CPU总线上获知是否有其他核访问。如果有,则说明此次获取锁资源失败,需要返回到步骤101重新获取,如果没有,说明获取锁资源成功,进一步地,将更新后的寄存器中的值写入预定的缓存器以告知其他核该锁资源被占用,然后访问所述临界资源。 步骤104,将所述缓存器中的自旋锁缓存变量的值还原为初始值。 本步骤由还原模块执行。访问完毕所述临界资源后,要释放锁资源以便其他核进行访问。具体地,也是通过寄存器完成。访问完毕后,将特定寄存器中的值设置为初始值,然后再将所述初始值写入到所述预设的缓存器中。 本专利技术中对于自旋锁的获取可以通过以下方式来实现: (1)初始化Spin本文档来自技高网
...

【技术保护点】
一种临界资源的访问装置,应用在多核处理器内部,其特征在于,该装置包括:获取模块,用于在访问临界资源前从预设的缓存器中读取自旋锁缓存变量的值到特定的寄存器中,并判断所述自旋锁缓存变量值是否为初始值;更新模块,用于在所述自旋锁缓存变量值为初始值时,更新所述特定寄存器中的该值;判断模块,用于在更新完毕后,判断在读取所述自旋锁缓存变量到特定的寄存器之后是否有其他核访问过所述自旋锁缓存变量,如果是,则返回获取模块重新读取自旋锁缓存变量,如果否,则将更新后的所述寄存器中的值存入到所述预设的缓存器中,并访问所述临界资源。

【技术特征摘要】

【专利技术属性】
技术研发人员:龚一斌
申请(专利权)人:杭州华三通信技术有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1