[发明专利]实现数据一致性的方法和一种多核系统有效
申请号: | 201110176277.6 | 申请日: | 2011-06-27 |
公开(公告)号: | CN102855214A | 公开(公告)日: | 2013-01-02 |
发明(设计)人: | 毕波;刘强 | 申请(专利权)人: | 上海华为技术有限公司 |
主分类号: | G06F15/167 | 分类号: | G06F15/167;G06F13/16 |
代理公司: | 深圳市深佳知识产权代理事务所(普通合伙) 44285 | 代理人: | 彭愿洁;李文红 |
地址: | 200121 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 实现 数据一致性 方法 一种 多核 系统 | ||
技术领域
本发明涉及通信领域,尤其涉及实现数据一致性的方法和一种多核系统。
背景技术
在多核系统或多核处理器中,除了每一个单核拥有一部分核内的缓存(L1Cache)之外,在单核的核外,还存在由若干个单核共享的共享内存。以附图1-a所示的最简单多核系统即两核系统为例(箭头代表数据的流向),单核0和单核1分别记为Core0和Core1,Core0的核内缓存0使用Core0 L1 Cache标记,Core1的核内缓存1使用Core1 L1 Cache标记。单核1和单核2的核外共享内存(Shared Memory)被划分成单核0共享内存0(Core0 Cacheable L2)和单核1共享内存1(Core1 Cacheable L2)。Core0 Cacheable L2可以称为“Core0的可读可写共享内存”,因为对于Core0 Cacheable L2这一段共享内存,Core0既可以向其中写入数据,也可以从中读取一些经常使用到的数据至Core0 L1 Cache缓存,以便下次需要这些数据时直接从Core0 L1 Cache中读取,从而提高效率,而Core1可以向Core0 Cacheable L2这一段内存写数据,但不会将Core0Cacheable L2中的数据读取至Core1 L1 Cache缓存。Core1 Cacheable L2可以称为“Core1的可读可写共享内存”,因为对于Core1 Cacheable L2这一段共享内存,Core1既可以向其中写入数据,也可以从中读取一些经常使用到的数据至Core1 L1 Cache缓存,以便下次需要这些数据时直接从Core1 L1 Cache中读取,从而提高效率,而Core0可以向Core1 Cacheable L2这一段内存写数据,但不会将Core1 Cacheable L2中的数据读取至Core0 L1 Cache缓存。
正是由于上述访问机制导致了一种情形的存在,即,Core1向Core0Cacheable L2中的某一段内存写入数据时,若在写入数据之前这一段内存的数据正好已经缓存至Core0 L1 Cache中,则Core0 L1 Cache中的数据与写入数据之后这一段内存的数据不一致。当Core0再次使用已写入这一段内存的数据时,需要重新从Core0 Cacheable L2中读取数据来刷新Core0 L1 Cache中的数据。这就是说,在使用共享内存时需要一种机制来保证当共享内存中数据被其他核修改时,本核能够刷新核内缓存中的数据,从而保证核内缓存和核外共享内存中的数据一致。
为了保证核内缓存和核外共享内存中的数据一致,现有技术提供的一种方案是将Core0 Cacheable L2和Core1 Cacheable L2各自划分为两片,如附图1-b中的虚线将Core0 Cacheable L2和Core1 Cacheable L2各自划分为两片,Core0Cacheable L2分成的两片分别标记为MEM0和MEM1,Core1 Cacheable L2分成的两片分别标记为MEM2和MEM3,作为乒乓缓冲使用。通过调度时序的控制,保证在同一时刻Core0和Core1不会同时访问同一片内存区域,因此,目前各个单核对共享内存的操作没有采用原子操作(即不可拆分不能打断的最小操作)。
在附图1-b中,假设Core0正在访问MEM0这一片共享内存,由于不会有访问冲突,所以Core0可以无阻碍地将Core0 L1 Cache中的数据读取至MEM0;Core1可以访问MEM1这一片共享内存。由于MEM1是Core0可以从中读取数据缓存至Core0 L1 Cache的一片共享内存,有可能这片共享内存中的数据在Core0的Core0 L1 Cache中,因此,Core1在向MEM1写入数据之前,先向Core0发送一个中断,通知Core0此时有数据要写入共享内存。Core0响应该中断,获取Core1要写入的地址和数据长度,并将这片地址在Core0 L1 Cache对应的缓存线(cache line)置为无效,然后返回中断应答信息至Core1。Core1在收到应答信息后再将数据写入MEM1。
上述现有技术方案中,Core1向Core0 Cacheable L2写入数据时,需要先发送中断给Core0,等到Core0响应中断后才可以开始写数据。在多核系统中,这两个核可能在一个簇(cluster)中,也可能是跨簇的,Core0等待中断传输和响应的延时从几十个到一百多个时钟周期(cycle)不等。特别地,当Core1要写入的数据总量较大,但都是零散的小块数据时,系统中的中断开销非常大,效率很低。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海华为技术有限公司,未经上海华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110176277.6/2.html,转载请声明来源钻瓜专利网。