L2中AMO指令的实现方法及系统技术方案

技术编号:34854779 阅读:26 留言:0更新日期:2022-09-08 07:55
本发明专利技术涉及CPU技术领域,具体涉及一种L2中AMO指令的实现方法及系统,amo请求从core发出,并allocate一个cwq entry项,请求赢得仲裁后,上pipeline;命中tag_ram并且dirty的数据在core中,则Allocate ORQ CSQ,由CSQ向core发出snoop请求,并拿到dirty的数据,判断是否支持csq bypass数据,并进行相应的处理;ORQ上pipeline,完成amo的modify功能,并将该cacheline的原始值返回给core,把modify之后的数据写入L2cache中。本发明专利技术由于减少上pipeline的次数,把pipeline资源给到其他请求,可以有效地提高CPU的整体性能,同时有效的减小功耗。减小功耗。减小功耗。

【技术实现步骤摘要】
L2中AMO指令的实现方法及系统


[0001]本专利技术涉及CPU
,具体涉及一种L2中AMO指令的实现方法及系统。

技术介绍

[0002]对应amo指令,probe到core的dirty,直接更新到amo指令中,然后amo指令只需再上一次pipeline去完成数据modify的操作,将modify之后的数据写入L2 data_ram,同时将原始该cacheline的数据返回给lsu。在这个过程中减少了两次上pipeline的次数,第一次是L2 probe core的dirty上pipeline更新到L2 data_ram,第二次是amo指令上pipeline拿到从core probe下来的dirty data。
[0003]参照图2所示,AMO指令,在L2中发现在某个core中有dirty的数据,L2 probe core的dirty先更新到L2 data_ram中,然后amo指令上pipeline拿到最新的data,然后amo再次上pipeline完成数据modify的操作,将modify之后的数据写入L2 data_ram,同时将原始该cacheline的数据返回给lsu,这其中为该amo指令上pipeline的次数太多,因此本文提供了一种L2中AMO指令的实现方法及系统。

技术实现思路

[0004]针对现有技术的不足,本专利技术公开了一种L2中AMO指令的实现方法及系统,用于解决上述问题。
[0005]本专利技术通过以下技术方案予以实现:
[0006]第一方方面,本专利技术提供了一种L2中AMO指令的实现方法,包括以下步骤:
[0007]S1初始化,amo请求从core发出,并allocate一个cwq entry项,请求赢得仲裁后,上pipeline;
[0008]S2命中tag_ram并且dirty的数据在core中,则Allocate ORQ CSQ;
[0009]S3由CSQ向core发出snoop请求,并拿到dirty的数据,判断是否支持csq bypass数据,并进行相应的处理;
[0010]S4ORQ上pipeline,完成amo的modify功能,并将该cacheline的原始值返回给core,把modify之后的数据写入L2 cache中。
[0011]更进一步的,所述方法中,若不支持csq bypass数据时,在S2后,CSQ上pipeline,更新L2 tag_ram和data_ram。
[0012]更进一步的,所述方法中,ORQ上pipeline从dataram中读取到刚刚CSQ snoop所得到dirty数据。
[0013]更进一步的,所述方法中,若支持csq bypass数据时,在S2后,Csq直接把snoop到的dirty数据bypass给orq。
[0014]更进一步的,所述方法中,L2进行工作时包括以下步骤:
[0015]T1接收来自core和外部extend的请求,同时收来自CRQ CWQ EPQ ORQ EFQ CPQ的请求,并选出其中的一个请求进入pipeline;
[0016]T2根据请求的类型和当前L2中TAG信息及MESI状态信息,生成相关分配方案;
[0017]T3通过L2向下游memory发出读请求或写请求,并由下游memory返回reload data回填到EFQ;
[0018]T4通过EFQ上L2de pipeline,将reload回来的数据写入L2$中,同时将数据return给请求的core。
[0019]更进一步的,所述方法中,L2接收来自core和外部extend的请求,包括接收来自core的read请求,放在CRQ中;接收来自core的write请求,放在CWQ中;接收来自外部的probe请求,放在EPQ中。
[0020]更进一步的,所述方法中,在pipeline中,根据请求的类型,和当前L2中TAG信息及MESI状态信息确定:是否可以直接写入L2;是否可以直接return data给请求方;是否需要向下游memory reload数据或权限;是否需要产生evict;是否需要向下游memory write数据;是否需要probe core;如果判断需要向下游memory reload数据或权限,则分配一个ORQ;如果判断需要向下游memory write数据,则分配一个WRQ;如果判断需要probe core,则分配一个CPQ,L2向core发出probe请求,都是通过CPQ来完成。
[0021]更进一步的,所述方法中,通过L2向下游memory发出读请求,则通过ORQ发出,向下游memory读取到数据并拿到该数据对应的权限;通过L2向下游memory发出写请求,则通过WRQ,将数据从L2中写到下一级memory中。
[0022]第二方面,本专利技术提供了一种L2中AMO指令的实现系统,所述系统用于实现第一方面所述的L2中AMO指令的实现方法,包括probe、eviction、TAG RAM、DATA RAM、CRQ、CWQ、EPQ、ORQ、WRQ、EFQ和CPQ。
[0023]更进一步的,所述probe用于窥视和监听,将core中dirty的数据probe下来或者为了拿到E权限,把core中的MESI状态信息进行修改;
[0024]所述eviction,用于保持cache中保存的数据相对新的数据,在cache中需要把数据替换出去时产生;
[0025]所述TAG RAM用于记录cacheline的addr及该cacheline在L2和所有的L2 CORE中的MESI状态信息;
[0026]所述DATA RAM用于记录cacheline的数据信息;
[0027]所述CRQ用于接收来自core的read请求存放的队列;
[0028]所述CWQ用于接收来自core的write请求的队列;
[0029]所述EPQ用于接收来自外部的probe请求的队列;
[0030]所述ORQ,用于在一个在L2中的请求,上L2 pipeline后,发现本cache中该cacheline不存在或该cacheline的在本cache中的访问权限不够时,则需要申请一个ORQ,通过ORQ向下一级memory reload数据并拿到相应的权限;
[0031]所述WRQ,用于在L2需要把某条cacheline给写到下一级memory,则申请要给WRQ,通过WRQ将数据写入下一级memory;
[0032]所述EFQ用于在由reload数据回填L2的时候,先把数据回填写入EFQ中,然后通过EFQ上L2的pipeline将数据写入L2$同时将数据return给请求模块;
[0033]所述CPQ用于将probe相应的core,probe请求则先存放在CPQ中,然后通过CPQ向对应的core发出probe请求。
[0034]本专利技术的有益效果为:
[0035]本专利技术对应a本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种L2中AMO指令的实现方法,其特征在于,所述方法包括以下步骤:S1初始化,amo请求从core发出,并allocate一个cwq entry项,请求赢得仲裁后,上pipeline;S2命中tag_ram并且dirty的数据在core中,则Allocate ORQ CSQ;S3由CSQ向core发出snoop请求,并拿到dirty的数据,判断是否支持csq bypass数据,并进行相应的处理;S4ORQ上pipeline,完成amo的modify功能,并将该cacheline的原始值返回给core,把modify之后的数据写入L2 cache中。2.根据权利要求1所述的一种L2中AMO指令的实现方法,其特征在于,所述方法中,若不支持csq bypass数据时,在S2后,CSQ上pipeline,更新L2 tag_ram和data_ram。3.根据权利要求2所述的一种L2中AMO指令的实现方法,其特征在于,所述方法中,ORQ上pipeline从dataram中读取到刚刚CSQ snoop所得到dirty数据。4.根据权利要求1所述的一种L2中AMO指令的实现方法,其特征在于,所述方法中,若支持csq bypass数据时,在S2后,Csq直接把snoop到的dirty数据bypass给orq。5.根据权利要求1所述的一种L2中AMO指令的实现方法,其特征在于,所述方法中,L2进行工作时包括以下步骤:T1接收来自core和外部extend的请求,同时收来自CRQ CWQ EPQ ORQ EFQ CPQ的请求,并选出其中的一个请求进入pipeline;T2根据请求的类型和当前L2中TAG信息及MESI状态信息,生成相关分配方案;T3通过L2向下游memory发出读请求或写请求,并由下游memory返回reload data回填到EFQ;T4通过EFQ上L2de pipeline,将reload回来的数据写入L2$中,同时将数据return给请求的core。6.根据权利要求5所述的一种L2中AMO指令的实现方法,其特征在于,所述方法中,L2接收来自core和外部extend的请求,包括接收来自core的read请求,放在CRQ中;接收来自core的write请求,放在CWQ中;接收来自外部的probe请求,放在EPQ中。7.根据权利要求5所述的一种L2中AMO指令的实现方法,其特征在于,所述方法中,在pipeline中,根据请求的类型,和当前L2中TAG信息及MESI状态信息确定:是否可以直接写入L2;是否可以直接return data给请求方;是否需要向下游memory reload数据或权限;是否需要产生...

【专利技术属性】
技术研发人员:李长林刘磊
申请(专利权)人:广东赛昉科技有限公司
类型:发明
国别省市:

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

1