基于AHB总线的多核SOC中实现原子操作系统及方法与流程

文档序号:12719392阅读:来源:国知局

技术特征:

1.一种基于AHB总线的多核SOC中实现原子操作系统,其特征在于,其包括其包括第一CUP模块、第二CUP模块、总线模块、AOC本体模块、原子存储模块、第一正常存储模块、第二正常存储模块,第一CUP模块、第二CUP模块都与总线模块相连,第一CUP模块位于第二CUP模块左侧,总线模块通过AOC本体模块与原子存储模块相连,第一正常存储模块、第二正常存储模块都与总线模块相连,第一正常存储模块位于第二正常存储模块左侧,AOC本体模块、原子存储模块都位于第一正常存储模块左侧。

2.一种基于AHB总线的多核SOC中实现原子操作方法,其特征在于,其包括以下步骤:

步骤一,第一CUP模块、第二CUP模块对第一正常存储模块的某个共享变量K同时进行加1计数操作,则需要先向AOC本体模块申请原子操作权限,如果此空间未被占用,则申请成功,然后开始对共享变量K进行加1计数操作,加1计数操作完成后,再向AOC本体模块发送释放原子操作空间的命令;如果此空间正在被占用,则申请失败,不能对共享变量进行加1计数操作,需要继续申请此空间,直到此空间被释放,申请成功,然后再进行加1计数操作;

步骤二,第一CUP模块对第一正常存储模块的某个共享变量K进行加1计数操作,第四CUP模块同时对第二正常存储模块的另外一个共享变量M进行加1计数操作;

步骤三,第一CUP模块对第一正常存储模块的某个共享变量K进行加1计数操作,而第二CUP模块同时对第二正常存储模块的某个非共享变量N进行加1计数操作,K和N是自然数。

3.如权利要求2所述的基于AHB总线的多核SOC中实现原子操作方法,其特征在于,所述步骤一包括以下步骤:

步骤十一,第一CUP模块、第二CUP模块都需要对第一正常存储模块空间的第二地址B进行操作,则需要先向AOC本体模块的第一地址A发送申请对第二地址B的操作权限,当AOC本体模块检测到CUP对第一地址A的读操作后,会向原子存储模块的第一地址A发送一个读操作,然后判断读回数据的值,如果是0,则表示此时没有CUP对第二地址B进行操作,然后将0返回给CUP;同时,会向原子存储模块的第一地址A发送一个写操作,对该地址写入1,表示已经有CUP在对第二地址B进行操作了,如果从原子存储模块的第一地址A返回的读数据为1,则表示此时已经有CUP在对第二地址B进行操作,直接将1返回第一CUP模块或第二CUP模块;

步骤十二,当第一CUP模块或第二CUP模块收到AOC本体模块返回的结果后,会进行判断,如果结果为0,表示此时第一CUP模块或第二CUP模块享有对第二地址B的操作权,则会对第二地址B进行各种操作,由于AOC本体模块已经保证了不会同时给多个第一CUP模块或第二CUP模块返回0,所以得到权限的第一CUP模块或第二CUP模块对第二地址B的任何操作都不需要锁定总线模块;如果收到的返回结果为1,则不会对第二地址B进行任何操作,而是会继续向第一地址A发送读操作,去申请对第二地址B的操作权限;

步骤十三,当得到权限的第一CUP模块或第二CUP模块完成了对第二地址B的一系列操作后,会向第一地址A发送一个写0操作,以释放对第二地址B的操作权限;AOC本体模块检测到对第一地址A的写0操作后,会向原子存储模块发送一个写操作,将数据0写入第一地址A,表示第二地址B的操作权限已经被释放;

步骤十四,上次未申请到对第二地址B操作权限的第一CUP模块或第二CUP模块继续发送读操作,AOC本体模块检测到对第一地址A的读操作后,会向第一地址A发送一个读操作,由于此空间已经被释放,读到的数据为0,将0返回给发起申请权限的第一CUP模块或第二CUP模块,该第一CUP模块或第二CUP模块获得对第二地址B的操作权,便开始进行对第二地址B的一系列操作。

4.如权利要求2所述的基于AHB总线的多核SOC中实现原子操作方法,其特征在于,所述步骤二包括以下步骤:

步骤二十一,第一CUP模块对第一正常存储模块空间的第二地址B进行操作,第二CUP模块对第二正常存储模块空间的第四地址BB进行操作;则第一CUP模块向AOC本体模块的第一地址A发送读操作,申请对第二地址B的操作权限,第二CUP模块向AOC本体模块的AA发送读操作,申请第四地址BB的操作权限;假设在这之前第二地址B与第四地址BB的操作权限都已经被释放;当AOC本体模块检测到第一CUP模块对第一地址A的读操作后,会向原子存储模块的第一地址A发送一个读操作,读到的数据为0,将0返回给第一CUP模块,表示第一CUP模块取得对第二地址B的操作权;同时,会向第一地址A发送一个写操作,对该地址写入1;由于第一地址A与第三地址AA是两个不同的地址,AOC本体模块对第一地址A的写1操作不会影响到第三地址AA的值;因此,第二CUP模块对第三地址AA的读操作返回的数据也为0,第二CUP模块取得对第四地址BB的操作权;

步骤二十二,第一CUP模块取得对第二地址B的操作权后,便开始对第二地址B进行一系列操作;同时,第二CUP模块取得对第四地址BB的操作权后,也开始对第四地址BB进行一系列操作,而不需要等到第一CUP模块完成对第二地址B的操作;同理,第一CUP模块的对第二地址B的一系列操作,也不需要等第二CUP模块对第四地址BB的一系列操作完成;

步骤二十三,第一CUP模块完成对第二地址B的操作后,对第一地址A进行写0操作,释放对第二地址B的操作权;同理,第二CUP模块完成对第四地址BB的操作后,对第三地址AA进行写0操作,释放对第四地址BB的操作权;

所述步骤三由于变量N是非共享的,因此,第二CUP模块不需要从AOC本体模块处申请对变量N的操作权,直接操作即可;而第一CUP模块对共享变量K的操作不会锁定总线模块。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1