[发明专利]多CPU对临界资源进行互斥访问的方法和装置有效
申请号: | 200710106986.0 | 申请日: | 2007-05-16 |
公开(公告)号: | CN101051281A | 公开(公告)日: | 2007-10-10 |
发明(设计)人: | 李文群 | 申请(专利权)人: | 杭州华三通信技术有限公司 |
主分类号: | G06F9/46 | 分类号: | G06F9/46 |
代理公司: | 北京挺立专利事务所 | 代理人: | 龚家骅 |
地址: | 310053浙江省杭州市高新*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | cpu 临界 资源 进行 访问 方法 装置 | ||
技术领域
本发明涉及多处理器技术领域,尤其涉及一种多CPU(Center ProcessingUnit,中央处理单元)对临界资源进行互斥访问的方法和装置。
背景技术
支持多硬件线程技术的处理器等目前已经越来越广泛的应用,其特点是处理器拥有多个Hardware-Thread(硬件线程),每个Hardware-Thread拥有独立的指令针,共享Pipeline(管线资源)资源。Pipeline资源指能执行软件指令的物理电路,如整型运算单元、取指单元、译码单元等。支持多硬件线程的处理器使用特定的调度方式对Hardware-Thread进行调度,实现Hardware-Thread对Pipeline资源的时分复用。每个Hardware-Thread拥有独立的Context(上下文)如指令指针、寄存器组等,可以完成Hardware-Thread间快速切换。从软件角度,可以将支持多硬件线程的处理器视作多个CPU(Center Processing Unit,中央处理单元)并发的系统,将每个Hardware-Thread视为一个CPU,如对于单核4硬件线程CPU,可以视为4个CPU并发的系统,对于双核各有4硬件线程CPU,可以视为8个CPU并发的系统。
一般地,在处理系统中都存在着临界资源,临界资源是指多CPU必须互斥访问的资源,即某一时刻不允许多个CPU同时访问而只能单个CPU访问的资源。支持多硬件线程的处理器中多个CPU并发执行的特点决定了对临界资源的保护机制需要重点关注两个需求:支持不同CPU间对临界资源进行互斥访问;等待资源时CPU应主动挂起,资源释放时CPU应能够被唤醒。如果某个CPU等待资源时未能挂起,则将占用Pipeline资源,影响其他CPU的性能。
目前,单CPU操作系统中的信号量、关中断操作等方法不能用于多CPU间的互斥访问。对于多CPU对临界资源进行互斥访问,普遍采用自旋锁实现。自旋锁的信号量包括两种状态,分别为空闲状态和被占用状态,空闲状态表示当前临界资源空闲,可以使用;被占用状态表示当前临界资源正在被使用中,需要等待被释放后才能使用。自旋锁的原理是,在临界资源被访问时,等待临界资源的CPU不断轮询检测信号量,直到自旋锁的信号量空闲,该CPU才能获得资源,称为信号量的P操作;CPU访问完临界资源后,释放信号量,称为信号量的V操作。
假设CPUi、CPUj、CPUk先后访问同一临界资源,申请访问资源的顺序是CPUi、CPUj、CPUk,如图1A所示,CPUi首先访问临界资源,在此期间,CPUj、CPUk轮询等待信号量被释放。当CPUi访问临界资源完毕时,如图1B所示,CPUi释放信号量,此时CPUj检测到信号量被释放,开始访问临界资源,而CPUk轮询等待信号量下一次被释放。
以上通过自旋锁实现CPUi、CPUj、CPUk先后访问同一临界资源的具体流程如图2所示,包括以下步骤:
步骤s101、与临界资源相关的自旋锁的信号量空闲。
步骤s102、CPUi请求访问临界资源时,检测信号量,发现信号量为空闲。
步骤s103、CPUi访问临界资源。
步骤s104、由于CPUi的访问,与临界资源相关的自旋锁的信号量被占用。
步骤s105、CPUj请求访问临界资源时,检测信号量,发现信号量被占用,轮询等待信号量被释放。
步骤s106、CPUk请求访问临界资源时,检测信号量,发现信号量被占用,轮询等待信号量被释放。
步骤s107、CPUi访问临界资源完毕,释放信号量。
步骤s108、与临界资源相关的自旋锁的信号量空闲。
步骤s109、CPUj检测到信号量为空闲。
步骤s110、CPUj访问临界资源。
步骤s111、由于CPUj的访问,与临界资源相关的自旋锁的信号量被占用。
步骤s112、CPUk继续轮询等待信号量被释放。
以上自旋锁方案的缺陷在于,在临界资源被访问期间,等待访问该临界资源的CPU不断轮询等待信号量被释放,一直占用Pipeline资源,大量Pipeline资源浪费在轮询检测上。因为只能通过轮询等待信号量被释放,没有唤醒/挂起机制,因此大大降低了系统的性能。
发明内容
本发明要解决的问题是提供一种实现多CPU对临界资源进行互斥访问的方法和设备,以在支持多CPU对临界资源进行互斥访问的同时,通过唤醒机制提高多CPU处理系统的性能。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州华三通信技术有限公司,未经杭州华三通信技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200710106986.0/2.html,转载请声明来源钻瓜专利网。