CN104461400B - 处理访存请求冲突的方法和装置 - Google Patents
处理访存请求冲突的方法和装置 Download PDFInfo
- Publication number
- CN104461400B CN104461400B CN201410822362.9A CN201410822362A CN104461400B CN 104461400 B CN104461400 B CN 104461400B CN 201410822362 A CN201410822362 A CN 201410822362A CN 104461400 B CN104461400 B CN 104461400B
- Authority
- CN
- China
- Prior art keywords
- chained list
- node
- access request
- pointer
- entry address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 54
- 238000012545 processing Methods 0.000 claims abstract description 39
- 230000008569 process Effects 0.000 claims abstract description 12
- 238000012163 sequencing technique Methods 0.000 claims description 11
- 238000003860 storage Methods 0.000 description 11
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 238000000151 deposition Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 101150008358 TRK1 gene Proteins 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000004080 punching Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例提供的处理访存请求冲突的方法和装置,可以解决管理访存请求冲突时存储器开销大以及配置不够灵活的问题。具体方案为:当发生访存请求冲突时,根据协议缓存池中被挂起的各个访存请求以及各个访存请求的处理顺序利用尾插法创建冲突管理链表;当开始处理各个访存请求时,读取链表的表头指针以获取链表的首结点对应的入口地址以及首结点的指针;根据首结点对应的访存请求的入口地址执行该访存请求以及根据首节点的指针读取首节点的下一个节点;对于下一个结点以及链表其余的结点,执行前述对首结点执行的步骤直至链表的各个结点对应的各个访存请求全部被处理。
Description
技术领域
本发明涉及集成电路领域,具体涉及一种处理访存请求冲突的方法和装置。
背景技术
非一致性内存架构(英文:Non-Uniform Memory Access,缩写:NUMA)中,每个处理器下都挂载内存。处理器既可以直接访问自己的内存,也可以通过前端总线访问其他处理器的内存,其中,访问其他处理器的内存时,访问者被称为访存处理器(英文:CachingAgent,缩写:CA),被访问者被称为内存宿主处理器(英文:Home Agent,缩写:HA)。随着系统处理器数目不断增加,处理器间并发访存的同步和通讯变得越来越复杂,处理器访存性能成为影响系统性能提升的关键瓶颈。
当发生多处理器并发访存冲突时,北桥中的内存控制器需要按照冲突的类型,利用多条队列管理被暂时挂起的处理器通过前端总线向北桥发送的访存请求。在程序执行过程中,系统可能产生新的被挂起请求或需要删除已经得到处理的访存请求,内存控制器则需要对这些访存请求进行实时处理,根据事务类型将其释放或写入队列尾。
现有的处理访存请求冲突的方案中,采用先入先出队列(英文:First InputFirst Output,缩写:FIFO)存储结构对冲突的访存请求进行管理,存在以下问题:存储器开销大:当系统处理器数量呈线性增长时,存储器开销呈指数增长,芯片面积随之增大;配置不够灵活:访存请求的冲突管理队列以FIFO方式实现时,队列长度不可配,FIFO深度必须固定,无法灵活配置。
发明内容
本发明实施例提供的处理访存请求冲突的方法和装置,可以解决管理访存请求冲突时存储器开销大以及配置不够灵活的问题。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,本发明实施例提供一种处理访存请求冲突的方法,所述方法包括:
当发生访存请求冲突时,根据协议缓存池中被挂起的各个访存请求以及所述各个访存请求的处理顺序利用尾插法创建冲突管理链表;其中,所述链表的各个结点存储在预设的存储器中,所述链表的结点包括:所述结点对应的访存请求在所述协议缓存池中的入口地址以及用于指示下一个结点的指针;
当开始处理所述各个访存请求时,读取所述链表的表头指针以获取所述链表的首结点对应的入口地址以及所述首结点的指针;
根据所述首结点对应的入口地址执行所述首结点对应的访存请求以及根据所述首节点的指针获取所述首节点下一个节点对应的入口地址以及所述下一个结点的指针;
对于所述下一个结点以及所述链表其余的结点,执行上述根据入口地址执行访存请求以及根据指针获取下一个节点对应的入口地址和指针的步骤直至所述链表的各个结点对应的所述各个访存请求全部被处理。
结合第一方面,在第一种可能的实现方式中,所述根据协议缓存池中被挂起的各个访存请求以及所述各个访存请求的处理顺序利用尾插法创建冲突管理链表包括:
将所述各个访存请求按照被处理时的先后顺序从所述链表的表尾依次插入得到所述链表,所述链表中各个结点间顺序与所述各个访存请求被处理时的先后顺序相同。
结合第一方面或第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述链表的表头指针、所述链表的表尾指针以及用于指示所述链表有效的标识信息分别存储在不同的寄存器中。
结合第一方面的第二种可能的实现方式,在第三种可能的实现方式中,所述方法还包括:
当需要对多条冲突管理链表进行合并时,根据所述多条冲突管理链表不同的优先级将优先级低的冲突管理链表的表头指针作为优先级高一级的冲突管理链表的表尾指针,依次串接所述多条冲突管理链表得到合并后的冲突管理链表,并将除优先级最高的冲突管理链表以外的其余链表的所述用于指示所述链表有效的标识信息清除。
结合第一方面,在第四种可能的实现方式中,所述访存请求对应的在所述协议缓存池中的入口地址为全局访存事务标识,所述全局访存事物标识是根据内存宿主处理器标识、访存处理器标识以及访存事务标识生成的。
第二方面,本发明实施例提供一种处理访存请求冲突的装置,所述装置包括:
冲突管理单元,用于当发生访存请求冲突时,根据协议缓存池中被挂起的各个访存请求以及所述各个访存请求的处理顺序利用尾插法创建冲突管理链表;其中,所述链表的各个结点存储在预设的存储器中,所述链表的结点包括:所述结点对应的访存请求在所述协议缓存池中的入口地址以及用于指示下一个结点的指针;
处理单元,用于当开始处理所述各个访存请求时,读取所述链表的表头指针以获取所述链表的首结点对应的入口地址以及所述首结点的指针;根据所述首结点对应的入口地址执行所述首结点对应的访存请求以及根据所述首节点的指针获取所述首节点下一个节点对应的入口地址以及所述下一个结点的指针;对于所述下一个结点以及所述链表其余的结点,执行上述根据入口地址执行访存请求以及根据指针获取下一个节点对应的入口地址和指针的步骤直至所述链表的各个结点对应的所述各个访存请求全部被处理。
结合第二方面,在第一种可能的实现方式中,所述冲突管理单元具体用于:
将所述各个访存请求按照被处理时的先后顺序从所述链表的表尾依次插入得到所述链表;其中,所述链表中各个结点间顺序与所述各个访存请求被处理时的先后顺序相同。
结合第二方面或第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述链表的表头指针、所述链表的表尾指针以及用于指示所述链表有效的标识信息分别存储在不同的寄存器中。
结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述装置还包括:
合并单元,用于当需要对多条冲突管理链表进行合并时,根据所述多条冲突管理链表不同的优先级将优先级低的冲突管理链表的表头指针作为优先级高一级的冲突管理链表的表尾指针,依次串接所述多条冲突管理链表得到合并后的冲突管理链表,并将除优先级最高的冲突管理链表以外的其余链表的所述用于指示所述链表有效的标识信息清除。
结合第二方面,在第四种可能的实现方式中,所述访存请求对应的在所述协议缓存池中的入口地址为全局访存事务标识,所述全局访存事物标识是根据内存宿主处理器标识、访存处理器标识以及访存事务标识生成的。
本发明实施例提供的处理访存请求冲突的方法和装置,当发生访存请求冲突时,根据协议缓存池中被挂起的各个访存请求以及所述各个访存请求的处理顺序利用尾插法创建冲突管理链表;其中,所述链表的各个结点存储在预设的存储器中,所述链表的结点包括:所述结点对应的访存请求在所述协议缓存池中的入口地址以及用于指示下一个结点的指针;当开始处理所述各个访存请求时,读取所述链表的表头指针以获取所述链表的首结点对应的入口地址以及所述首结点的指针;根据所述首结点对应的入口地址执行所述首结点对应的访存请求以及根据所述首节点的指针获取所述首节点下一个节点对应的入口地址以及所述下一个结点的指针;对于所述下一个结点以及所述链表其余的结点,执行上述根据入口地址执行访存请求以及根据指针获取下一个节点对应的入口地址和指针的步骤直至所述链表的各个结点对应的所述各个访存请求全部被处理。本发明可以解决管理访存请求冲突时存储器开销大以及配置不够灵活的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的处理访存请求冲突的方法的流程示意图一;
图2为本发明实施例提供的处理访存请求冲突的方法的流程示意图二;
图3为本发明实施例提供的冲突管理链表的结构示意图;
图4为本发明实施例提供的冲突管理链表的结点的指针域的结构示意图;
图5为本发明实施例提供的处理访存请求冲突的装置的结构示意图一;
图6为本发明实施例提供的处理访存请求冲突的装置的结构示意图二;
图7为基于本发明实施例提供的处理访存请求冲突的装置的实施示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明基于NUMA的资源预分配(source pre-allocation)机制,每个处理器对应的内存控制器中已实现了能够容纳系统中所有处理器的全部访存请求的协议缓存池(英文:TRK,缩写:Tracker)。TRK是内存控制器中的用于缓存访存请求的数据结构。内存宿主处理器HA接收到来自访存处理器CA发起的访存请求时,均将该访存请求携带的协议信息存放在内存代理协议缓存池中。访存请求的协议信息包括:与缓存(英文:cache)一致性协议相关的信息,如访存信道类型(请求信道、监听信道、响应信道等)、访存协议类型(共享读、独占读、失效写等)、物理地址、访存处理器编号(英文:Requester Node ID,缩写:RNID)等。
本发明实施例提供的处理访存请求冲突的方法,如图1所示,该方法包括:
101、当发生访存请求冲突时,根据协议缓存池中被挂起的各个访存请求以及各个访存请求的处理顺序利用尾插法创建冲突管理链表。
其中,链表的各个结点存储在预设的存储器中,链表的结点包括:结点对应的访存请求在协议缓存池中的入口地址以及用于指示下一个结点的指针。
102、当开始处理各个访存请求时,读取链表的表头指针以获取链表的首结点对应的入口地址以及首结点的指针。
103、根据首结点对应的入口地址执行首结点对应的访存请求以及根据首节点的指针获取首节点下一个节点对应的入口地址以及下一个结点的指针。
104、对于下一个结点以及链表其余的结点,执行上述根据入口地址执行访存请求以及根据指针获取下一个节点对应的入口地址和指针的步骤直至链表的各个结点对应的各个访存请求全部被处理。
需要说明的是,本发明提供的技术方案中利用链表的方式管理被挂起的访存请求,链表的条数并不限定,例如可以有与各个资源项对应的若干条链表,其中,资源项包括:读/写顶端(英文:Read Top/Write Top,缩写:RdT/WrT),内存控制器中的缓存一致性协议栈数据结构,每个访存请求都必须在读/写顶端中进行处理,一个时刻至多只有一个读/写访存请求被处理,因此称为读/写顶端;监听顶端(英文:Snooping request Top,缩写:SrT);即时请求缓存(英文:Outgoing Request Buffer,缩写:ORB)等。
另外,链表的结点包括两部分内容:结点对应的访存请求的在内存控制器的协议缓存池中的入口地址以及用于指示下一个结点的指针。结点对应的访存请求携带的协议信息直接存放在内存控制器的协议缓存池中,相比现有的FIFO方式中专门使用额外的存储器空间存放,本发明提供的方案可以省去这一部分存储器开销;访存请求的在内存控制器的协议缓存池中的入口地址可以通过独立的预设存储器来存储,相比于现有的FIFO方式,访存请求的协议信息和冲突管理队列可以分别独立访问,不受芯片静态随机存储器(英文:Static Random Access Memory,缩写:SRAM)读端口的数目限制,在保证了链表操作灵活性的同时,可以将访存请求冲突管理所带来的存储器开销控制在一个非常可观的范围内。以一个32路的小型机系统为例,采用本发明提供的用链表管理冲突的访存请求的方案所带来的存储器开销仅相当于现有的FIFO方式的1/16。
本发明实施例提供的处理访存请求冲突的方法,当发生访存请求冲突时,根据协议缓存池中被挂起的各个访存请求以及各个访存请求的处理顺序利用尾插法创建冲突管理链表;其中,链表的各个结点存储在预设的存储器中,链表的结点包括:结点对应的访存请求在协议缓存池中的入口地址以及用于指示下一个结点的指针;当开始处理各个访存请求时,读取链表的表头指针以获取链表的首结点对应的入口地址以及首结点的指针;根据首结点对应的入口地址执行首结点对应的访存请求以及根据首节点的指针获取首节点下一个节点对应的入口地址以及下一个结点的指针;对于下一个结点以及链表其余的结点,执行上述根据入口地址执行访存请求以及根据指针获取下一个节点对应的入口地址和指针的步骤直至链表的各个结点对应的各个访存请求全部被处理。本发明可以解决管理访存请求冲突时存储器开销大以及配置不够灵活的问题。
为了使本领域技术人员能够更清楚地理解本发明实施例提供的技术方案,下面通过具体的实施例,对本发明的实施例提供的处理访存请求冲突的方法进行详细说明,如图2所示,该方法包括:
201、当发生访存请求冲突时,根据协议缓存池中被挂起的各个访存请求以及各个访存请求的处理顺序利用尾插法创建冲突管理链表。
示例性的,当系统中发生多处理器并发访存请求冲突时,占据RdT/WrT的访存请求能够得到立即处理,其余访存请求均被挂起,将被挂起的各个访存请求按照被处理时的先后顺序从链表的表尾依次插入得到链表。
其中,链表中各个结点间顺序与各个访存请求被处理时的先后顺序相同;链表的各个结点存储在预设的存储器中,链表的结点包括:结点对应的访存请求在协议缓存池中的入口地址以及用于指示下一个结点的指针;访存请求对应的在协议缓存池中的入口地址(英文:address,缩写:ADDR)为全局访存事务标识全局访存事务编号(UTID):Uniquetransaction ID,全局访存事物标识是根据内存宿主处理器标识(英文:Home Node ID,缩写HNID)、访存处理器标识(英文:Requester Node ID,缩写:RNID)以及访存事务标识(英文:Transaction ID,缩写:TID)生成的。ADDR可以以下述方式生成:ADDR=(HNID<<11)|(RNID<<6)|TID,<<表示左移运算,即HNID左移11位,RNID左移6位,|表示按位或运算。存储ADDR所需位宽相对于存储访存请求的协议信息所需位宽要小的多,因此可将并发访存冲突管理所带来的存储器开销控制在一个非常可观的范围内。
如图3所示,其中,TRK0、TRK1、…、TRKn构成协议缓存池,每个TRK的存储深度为64,可按照TID进行索引。链表中每个结点对应协议缓存池中的一个入口TRK[i][j](i的取值是0至n,j的取值范围是0至63)。图3中,TRK0,0指向TRK1,1然后指向TRK0,1,TRK0,1再指向TRK2,x最后再指向TRK3,63,是指:TRK0,0排在队列头,然后是TRK1,1,然后是TRK0,1,然后是TRK2,x,队列中排队的最后一个为TRK3,63。
202、当开始处理各个访存请求时,读取链表的表头指针以获取链表的首结点对应的入口地址以及首结点的指针。
具体的,当一条新的冲突管理链表被系统创建时,需要分别对该链表所的表头指针、表尾指针进行赋值,将链表的表头指针、表尾指针以及用于指示链表有效的标识信息分别存储在不同的寄存器中。
示例性的,使用寄存器Head存储表头指针,可以将链表的首结点对应的访存请求(也即第一个挂起的访存请求)的入口地址ADDR存放在寄存器Head中;使用寄存器Tail存储表尾指针,可以将链表的尾结点对应的访存请求(也即被挂起的最后一个访存请求)的入口地址ADDR存放在寄存器Tail中;使用寄存器V存储用于指示链表有效的标识信息,例如,可以将寄存器V中某一存储位的值置为1。如图3所示的一条链表,采用独立的寄存器记录链表的表头指针、表尾指针以及用于指示链表有效的标识信息,如图中的寄存器Head、寄存器Tail和寄存器V所示。每个结点的指针指向处理器访存冲突管理队列中的下一个被挂起的访存请求,对应协议缓存池中的一个入口TRK[i][j]。
需要说明的是,链表中表头指针、表尾指针、用于指示链表有效的标识信息均使用独立的寄存器存储,因此链表的创建、读取、插入、删除以及多链表合并等操作均可在单个时钟周期内完成,相较于现有的FIFO方式,大幅缩短了并发访存冲突管理队列维护操作的时延。
其中,创建操作是指:将用于指示链表有效的标识信息存储到寄存器V中,并将系统中被挂起的首个访存请求对应的入口地址ADDR同时赋值给寄存器Head和寄存器Tail,然后将第二个访存请求对应的入口地址ADDR赋值给寄存器Tail,依次将各个访存请求对应的入口地址ADDR赋值给寄存器Tail得到各个结点间前后顺序与各个访存请求先后处理顺序相同的链表。说明:这是尾插法建立链表的具体实施方式,本领域技术人员可以参照相关资料,本发明中不做赘述。
读取操作是指:将当前结点对应的访存请求的入口地址(英文:Current ADDR,缩写:CADDR)作为读地址访问协议缓存池以获取当前结点对应的访存请求的协议信息。
插入操作是指:将第n个结点对应的访存请求的入口地址ADDRn赋值给Tail寄存器,并使第n-1个结点的指针指向第n个结点。注:这个操作也是尾插法的基本操作,即将队列原来的尾部结点的指针指向新插入的结点。
删除操作是指:寄存器Head中存储的始终是即将要被处理的访存请求的入口地址,当该访存请求被处理后则将该下一个访存请求的入口地址赋值给寄存器Head。
多条链表合并操作是指:按照多条链表各自对应的被挂起的访存请求的队列在系统中的优先级,将优先级低的链表的表头指针作为优先级高一级的链表的表尾指针,并将优先级低的链表的寄存器Head中的数据写入优先级高一级的链表的表尾寄存器Tail中,同时将除优先级最高的链表之外的所有链表的用于指示链表有效的标识信息清除。
值得一提的是,还可以通过表头指针、表尾指针和用于指示链表有效标识信息的逻辑关系判断链表当前结点的CADDR的位置以及该链表是否有效:1)若CADDR与表头指针值相等,说明其在表头;2)若CADDR与表尾指针值相等,说明其在表尾;3)两者均不相等则在链表中段;4)若表头指针、表尾指针相等,且用于指示链表的有效标识信息存在,说明链表空;4)若用于指示链表的有效标识信息为空,该链表无效。
203、根据首结点对应的入口地址执行首结点对应的访存请求以及根据首节点的指针获取首节点下一个节点对应的入口地址以及下一个结点的指针。
示例性的,如图4所示为结点的指针NEXT域的存储结构,采用独立的RAM存储器记录链表上每个结点的NEXT域数据,该RAM存储器同样遵循资源预分配,每个NEXT域入口Next[i][j]均与一个协议缓存池TRK入口TRK[i][j]一一对应。
该RAM存储器中只保存链表中下一个结点的指针Next[i][j],数据宽度仅为访存请求的协议信息域位宽的十分之一左右,且两者之间读/写端口独立,互不干扰,保证了链表操作灵活性。
204、当需要对多条链表进行合并时,根据多条链表不同的优先级将优先级低的链表的表头指针作为优先级高一级的链表的表尾指针,依次串接多条链表得到合并后的链表,并将除优先级最高的链表以外的其余链表的用于指示链表有效的标识信息清除。
示例性的,有多项资源(例如RdT、WrT)并且这些资源之间有逻辑关联性,各资源各自对应一条冲突管理链表。当某一项资源释放,有可能导致其所对应的链表整个被移除,但该链表中的结点对应的被挂起的访存请求不能丢弃,则此时需要进行多条链表的合并,具体参照步骤202中对多条链表合并操作的详细说明,此处不做赘述。
205、对于下一个结点以及链表其余的结点,执行上述根据入口地址执行访存请求以及根据指针获取下一个节点对应的入口地址和指针的步骤直至链表的各个结点对应的各个访存请求全部被处理。
示例性的,每个结点的指针Next指向下一个结点对应的被挂起访存请求在协议缓存池中的一个入口TRK[i][j]。当且仅当被遍历到的当前结点对应的访存请求的入口地址CADDR与寄存器Tail Reg中存储的数据一致时,链表遍历结束。
本发明实施例提供的处理访存请求冲突的方法,当发生访存请求冲突时,根据协议缓存池中被挂起的各个访存请求以及各个访存请求的处理顺序利用尾插法创建冲突管理链表;其中,链表的各个结点存储在预设的存储器中,链表的结点包括:结点对应的访存请求在协议缓存池中的入口地址以及用于指示下一个结点的指针;当开始处理各个访存请求时,读取链表的表头指针以获取链表的首结点对应的入口地址以及首结点的指针;根据首结点对应的入口地址执行首结点对应的访存请求以及根据首节点的指针获取首节点下一个节点对应的入口地址以及下一个结点的指针;对于下一个结点以及链表其余的结点,执行上述根据入口地址执行访存请求以及根据指针获取下一个节点对应的入口地址和指针的步骤直至链表的各个结点对应的各个访存请求全部被处理。本发明可以解决管理访存请求冲突时存储器开销大以及配置不够灵活的问题。
本发明实施例提供的处理访存请求冲突的装置10,如图5所示,该装置包括:
冲突管理单元11,用于当发生访存请求冲突时,根据协议缓存池中被挂起的各个访存请求以及各个访存请求的处理顺序利用尾插法创建冲突管理链表.
其中,链表的各个结点存储在预设的存储器中,链表的结点包括:结点对应的访存请求在协议缓存池中的入口地址以及用于指示下一个结点的指针。
处理单元12,用于当开始处理各个访存请求时,读取链表的表头指针以获取链表的首结点对应的入口地址以及首结点的指针;根据首结点对应的入口地址执行首结点对应的访存请求以及根据首节点的指针获取首节点下一个节点对应的入口地址以及下一个结点的指针;对于下一个结点以及链表其余的结点,执行上述根据入口地址执行访存请求以及根据指针获取下一个节点对应的入口地址和指针的步骤直至链表的各个结点对应的各个访存请求全部被处理。
可选的,访存请求对应的在协议缓存池中的入口地址为全局访存事务标识,全局访存事物标识是根据内存宿主处理器标识、访存处理器标识以及访存事务标识生成的。
可选的,冲突管理单元11具体用于:
将各个访存请求按照被处理时的先后顺序从链表的表尾依次插入得到链表;其中,链表中各个结点间顺序与各个访存请求被处理时的先后顺序相同。
可选的,链表的表头指针、链表的表尾指针以及用于指示链表有效的标识信息分别存储在不同的寄存器中。
可选的,如图6所示,该装置10还包括:
合并单元13,用于当需要对多条链表进行合并时,根据多条链表不同的优先级将优先级低的链表的表头指针作为优先级高一级的链表的表尾指针,依次串接多条链表得到合并后的链表,并将除优先级最高的链表以外的其余链表的用于指示链表有效的标识信息清除。
本实施例用于实现上述各方法实施例,本实施例中各个单元的工作流程和工作原理参见上述各方法实施例中的描述,在此不再赘述。
如图7所示为本发明实施例提供的技术方案的具体实施示意图,其中,若干条链表与各有限资源项(RdT、WrT、SrT和ORB等)一一对应,内存控制器中的监听请求处理子模块(英文:Caching Agent Snoop Queue,缩写:CA-SQ)为现有的北桥中的内存控制器中已有的。当这些资源的入口项全部被占满,或处理器访存发生地址冲突时,本发明提供的处理访存请求冲突的装置采用链表的方式对所有被挂起的访存请求进行实时维护,根据该访存请求在协议缓存池中的入口地址ADDR创建链表新结点,并利用尾插法将该结点插入链表尾部。当RdT/WrT等顶端资源被释放,则链表的表头指针被激活,读取寄存器Head中存储的首结点对应的入口地址根据对应的访存请求的协议信息执行相应的访存指令处理,执行删除操作,然后将依次对该链表其余结点进行处理,同时可以对多条链表执行合并操作,这些操作均可以在一个时钟周期内完成。
本发明实施例提供的处理访存请求冲突的装置,当发生访存请求冲突时,根据协议缓存池中被挂起的各个访存请求以及各个访存请求的处理顺序利用尾插法创建冲突管理链表;其中,链表的各个结点存储在预设的存储器中,链表的结点包括:结点对应的访存请求在协议缓存池中的入口地址以及用于指示下一个结点的指针;当开始处理各个访存请求时,读取链表的表头指针以获取链表的首结点对应的入口地址以及首结点的指针;根据首结点对应的入口地址执行首结点对应的访存请求以及根据首节点的指针获取首节点下一个节点对应的入口地址以及下一个结点的指针;对于下一个结点以及链表其余的结点,执行上述根据入口地址执行访存请求以及根据指针获取下一个节点对应的入口地址和指针的步骤直至链表的各个结点对应的各个访存请求全部被处理。本发明可以解决管理访存请求冲突时存储器开销大以及配置不够灵活的问题。
以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。另一点,所显示或讨论的模块相互之间的连接可以是通过一些接口,可以是电性,机械或其它的形式。所述各个模块可以是或者也可以不是物理上分开的,可以是或者也可以不是物理单元。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理包括,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
上述以软件功能单元的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文:Read-Only Memory,简称ROM)、随机存取存储器(英文:Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (8)
1.一种处理访存请求冲突的方法,其特征在于,包括:
当发生访存请求冲突时,根据协议缓存池中被挂起的各个访存请求以及所述各个访存请求的处理顺序利用尾插法创建冲突管理链表;其中,所述链表的各个结点存储在预设的存储器中,所述链表的结点包括:所述结点对应的访存请求在所述协议缓存池中的入口地址以及用于指示下一个结点的指针;
当开始处理所述各个访存请求时,读取所述链表的表头指针以获取所述链表的首结点对应的入口地址以及所述首结点的指针;
根据所述首结点对应的入口地址执行所述首结点对应的访存请求以及根据所述首节点的指针获取所述首节点下一个节点对应的入口地址以及所述下一个结点的指针;
对于所述下一个结点以及所述链表其余的结点,执行上述根据入口地址执行访存请求以及根据指针获取下一个节点对应的入口地址和指针的步骤直至所述链表的各个结点对应的所述各个访存请求全部被处理;
所述根据协议缓存池中被挂起的各个访存请求以及所述各个访存请求的处理顺序利用尾插法创建冲突管理链表包括:
将所述各个访存请求按照被处理时的先后顺序从所述链表的表尾依次插入得到所述链表,所述链表中各个结点间顺序与所述各个访存请求被处理时的先后顺序相同。
2.根据权利要求1所述的方法,其特征在于,所述链表的表头指针、所述链表的表尾指针以及用于指示所述链表有效的标识信息分别存储在不同的寄存器中。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当需要对多条冲突管理链表进行合并时,根据所述多条冲突管理链表不同的优先级将优先级低的冲突管理链表的表头指针作为优先级高一级的冲突管理链表的表尾指针,依次串接所述多条冲突管理链表得到合并后的冲突管理链表,并将除优先级最高的冲突管理链表以外的其余链表的所述用于指示所述链表有效的标识信息清除。
4.根据权利要求1所述的方法,其特征在于,所述访存请求对应的在所述协议缓存池中的入口地址为全局访存事务标识,所述全局访存事物标识是根据内存宿主处理器标识、访存处理器标识以及访存事务标识生成的。
5.一种处理访存请求冲突的装置,其特征在于,包括:
冲突管理单元,用于当发生访存请求冲突时,根据协议缓存池中被挂起的各个访存请求以及所述各个访存请求的处理顺序利用尾插法创建冲突管理链表;其中,所述链表的各个结点存储在预设的存储器中,所述链表的结点包括:所述结点对应的访存请求在所述协议缓存池中的入口地址以及用于指示下一个结点的指针;
处理单元,用于当开始处理所述各个访存请求时,读取所述链表的表头指针以获取所述链表的首结点对应的入口地址以及所述首结点的指针;根据所述首结点对应的入口地址执行所述首结点对应的访存请求以及根据所述首节点的指针获取所述首节点下一个节点对应的入口地址以及所述下一个结点的指针;对于所述下一个结点以及所述链表其余的结点,执行上述根据入口地址执行访存请求以及根据指针获取下一个节点对应的入口地址和指针的步骤直至所述链表的各个结点对应的所述各个访存请求全部被处理;
所述冲突管理单元具体用于:
将所述各个访存请求按照被处理时的先后顺序从所述链表的表尾依次插入得到所述链表,所述链表中各个结点间顺序与所述各个访存请求被处理时的先后顺序相同。
6.根据权利要求5所述的装置,其特征在于,所述链表的表头指针、所述链表的表尾指针以及用于指示所述链表有效的标识信息分别存储在不同的寄存器中。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
合并单元,用于当需要对多条冲突管理链表进行合并时,根据所述多条冲突管理链表不同的优先级将优先级低的冲突管理链表的表头指针作为优先级高一级的冲突管理链表的表尾指针,依次串接所述多条冲突管理链表得到合并后的冲突管理链表,并将除优先级最高的冲突管理链表以外的其余链表的所述用于指示所述链表有效的标识信息清除。
8.根据权利要求5所述的装置,其特征在于,所述访存请求对应的在所述协议缓存池中的入口地址为全局访存事务标识,所述全局访存事物标识是根据内存宿主处理器标识、访存处理器标识以及访存事务标识生成的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410822362.9A CN104461400B (zh) | 2014-12-25 | 2014-12-25 | 处理访存请求冲突的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410822362.9A CN104461400B (zh) | 2014-12-25 | 2014-12-25 | 处理访存请求冲突的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104461400A CN104461400A (zh) | 2015-03-25 |
CN104461400B true CN104461400B (zh) | 2017-09-19 |
Family
ID=52907529
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410822362.9A Active CN104461400B (zh) | 2014-12-25 | 2014-12-25 | 处理访存请求冲突的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104461400B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104765577B (zh) * | 2015-04-28 | 2017-08-15 | 杭州中天微系统有限公司 | 一种频率自适应的高速存储系统 |
CN110555118B (zh) * | 2018-03-28 | 2022-08-16 | 武汉斗鱼网络科技有限公司 | 一种加载图片的方法及装置 |
CN109376097B (zh) * | 2018-08-31 | 2021-05-07 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 解决多微引擎的哈希查找学习及地址老化冲突的方法 |
CN111045818B (zh) * | 2019-11-21 | 2022-12-16 | 中国航空工业集团公司西安航空计算技术研究所 | 一种多端口Cache的请求预处理电路 |
CN111259062B (zh) * | 2020-01-15 | 2023-08-01 | 山东省电子口岸有限公司 | 一种能够保证分布式数据库全表查询语句结果集顺序的方法和装置 |
CN111737002B (zh) * | 2020-06-24 | 2022-05-31 | 苏州浪潮智能科技有限公司 | 一种链式存储请求的处理方法、装置、设备及可读介质 |
CN111815451B (zh) * | 2020-07-20 | 2024-05-07 | 南京艾科朗克信息科技有限公司 | 一种基于fpga的证券柜台报单表项快速访问方法 |
CN114637609B (zh) * | 2022-05-20 | 2022-08-12 | 沐曦集成电路(上海)有限公司 | 基于冲突检测的gpu的数据获取系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1929451A (zh) * | 2006-09-29 | 2007-03-14 | 华为数字技术有限公司 | 一种解决Hash冲突的方法及装置 |
CN101013400A (zh) * | 2007-01-30 | 2007-08-08 | 金蝶软件(中国)有限公司 | 一种在内存中缓存数据的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040117587A1 (en) * | 2002-12-12 | 2004-06-17 | International Business Machines Corp. | Hardware managed virtual-to-physical address translation mechanism |
-
2014
- 2014-12-25 CN CN201410822362.9A patent/CN104461400B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1929451A (zh) * | 2006-09-29 | 2007-03-14 | 华为数字技术有限公司 | 一种解决Hash冲突的方法及装置 |
CN101013400A (zh) * | 2007-01-30 | 2007-08-08 | 金蝶软件(中国)有限公司 | 一种在内存中缓存数据的方法及装置 |
Non-Patent Citations (1)
Title |
---|
《动态共享内存缓冲池技术》;余翔湛等;《哈尔滨工业大学学报》;20040330;第36卷(第3期);第380-383页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104461400A (zh) | 2015-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104461400B (zh) | 处理访存请求冲突的方法和装置 | |
CN110232036B (zh) | 主机系统及其方法和加速模块 | |
CN103218208B (zh) | 用于实施成形的存储器访问操作的系统和方法 | |
CN103824251B (zh) | 在不同高速缓存一致性域之间共享信息的技术 | |
CN104364775B (zh) | 具有段偏移寻址的专用存储器访问路径 | |
US20090119460A1 (en) | Storing Portions of a Data Transfer Descriptor in Cached and Uncached Address Space | |
US10585726B2 (en) | Parameter-sharing apparatus and method | |
JPH0230536B2 (zh) | ||
KR100925572B1 (ko) | 상이한 길이의 캐시 위치 내의 캐시 코히어런시를 위한시스템, 방법, 프로세스 및 장치 | |
JP4758384B2 (ja) | チケット・ベースの動作の追跡をサポートするデータを処理するためのデータ処理システムおよび方法 | |
CN102834813B (zh) | 用于多通道高速缓存的更新处理机 | |
CN102567255B (zh) | 具有监听请求选择性无效的数据处理系统和用于其的方法 | |
CN101097545A (zh) | 独占所有权探听过滤器 | |
JP2002510079A (ja) | メモリ・インタフェース間で読み書きの順序付けられた実行を強制する方法と装置 | |
CN100589089C (zh) | 处理直接存储器访问请求的设备和方法 | |
CN107667358A (zh) | 用于在多个拓扑结构中使用的相干结构互连 | |
US9208088B2 (en) | Shared virtual memory management apparatus for providing cache-coherence | |
US9213656B2 (en) | Flexible arbitration scheme for multi endpoint atomic accesses in multicore systems | |
CN107436809A (zh) | 数据处理器 | |
CN110119304B (zh) | 一种中断处理方法、装置及服务器 | |
US20230195633A1 (en) | Memory management device | |
CN107025130B (zh) | 处理节点、计算机系统及事务冲突检测方法 | |
CN101183349A (zh) | 以不一致保护窗口保护所有权转移的数据处理系统和方法 | |
CN108536473A (zh) | 读取数据的方法和装置 | |
US10437725B2 (en) | Master requesting missing segments of a cache line for which the master has coherence ownership |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |