数据访问方法及设备的制造方法_3

文档序号:8445500阅读:来源:国知局
令,返回上一步骤,直至将目标数据读请求拆分完毕;
[0133]将该数据读命令发送给SOC数据总线,使SOC数据总线将该数据读命令发送给SOC的存储资源,该数据读命令中携带第二子数据量和第二子起始地址;
[0134]逐次接收SOC的存储资源通过SOC数据总线发送的读数据。
[0135]可选地,该方法还包括:
[0136]对于每个HAC,当向SOC数据总线发送属于该HAC的数据写命令和数据读命令时,对发送的数据写命令个数进行统计,得到第一命令个数,以及对发送的数据读命令个数进行统计,得到第二命令个数;
[0137]当第一命令个数等于第一个数阈值时,停止接收该HAC发送的类型为数据写请求的数据访问请求,直至第一命令个数小于第一个数阈值;
[0138]当第二命令个数等于第二个数阈值时,停止接收该HAC发送的类型为数据读请求的数据访问请求,直至第二命令个数小于第二个数阈值。
[0139]上述所有可选技术方案,均可按照任意结合形成本发明的可选实施例,本发明实施例对此不再一一赘述。
[0140]图4是本发明实施例提供的一种数据访问方法流程图。参见图4,该方法包括:
[0141]步骤401:对于每个HAC,当该HAC生成数据访问请求时,将该数据访问请求通过与该HAC连接的HAC-1F发送给LMI。
[0142]具体地,对于每个HAC,当该HAC生成数据访问请求时,如果与该HAC连接的HAC-1F为多个,则该HAC可以从与其连接的多个HAC-1F中,选择一个处于空闲状态的HAC-1F,之后,将生成的数据访问请求发送给选择的HAC-1F。当选择的HAC-1F接收到该数据访问请求时,将该数据访问请求发送给LMI。
[0143]在本发明实施例中,一个HAC可以连接多个HAC-1F,该HAC生成的数据访问请求可以通过该多个HAC-1F发送给LMI,提升了系统的并行调度性能。并且通过LMI连接HAC与SOC数据总线,实现了 HAC与SOC数据总线的解耦。
[0144]步骤402:LMI在每个时钟周期,当检测到多个HAC通过与该多个HAC分别连接的HAC-1F发送的数据访问请求时,基于该多个数据访问请求的优先级,接收优先级最高的数据访问请求。
[0145]具体地,在每个时钟周期,当LMI检测到多个HAC通过与该多个HAC分别连接的HAC-1F发送的数据访问请求时,LMI获取该多个数据访问请求的优先级,从该多个数据访问请求中,选择优先级最高的数据访问请求,并接收优先级最高的数据访问请求。
[0146]需要说明的是,在当前时钟周期,LMI未接收的数据访问请求,在下一个时钟周期,LMI还可以基于上述仲裁的方法,接收优先级最高的数据访问请求。其中,在本发明实施例中,LMI在每个时钟周期,选择并接收优先级最高的数据访问请求的方法可以称为LMI对多个数据访问请求的仲裁。
[0147]比如,在第一时钟周期,LMI检测到3个数据访问请求,分别为数据访问请求1、数据访问请求2和数据访问请求3,数据访问请求I的优先级大于数据访问请求2的优先级,数据访问请求2的优先级大于数据访问请求3的优先级,因此,LMI在第一时钟周期选择并接收数据访问请求I。在第二时钟周期,如果没有新的HAC生成数据访问请求,则LMI会检测到数据访问请求2和数据访问请求3,由于数据访问请求2的优先级大于数据访问请求3的优先级,因此,在第二时钟周期,LMI会选择并接收数据访问请求2。
[0148]需要说明的是,当HAC-1F对数据访问请求进行拆分和协议转化、SOC数据总线对数据访问命令进行仲裁时,如果该HAC-1F发送的数据访问命令所属的数据访问请求的优先级最高,当HAC-1F与SOC数据总线之间的通道出现异常时,SOC数据总线在当前时刻就无法处理该HAC-1F发送的数据访问命令,进而会影响后续其他HAC-1F发送的数据访问命令的处理,需要对HAC-1F、HAC、数据总线等都进行复位。而在本发明实施例中,LMI接收HAC发送的数据访问请求,并将接收的数据访问请求存储在LMI的数据队列中,如此,当HAC-1F与LMI之间的通道出现故障时,LMI会继续将数据队列中存储的该HAC发送的数据访问请求进行处理,不会影响与该HAC的数据访问请求处于同一数据队列中的其他数据访问请求的处理,支持单个HAC出现异常可以自恢复,不会影响其余HAC对SOC存储资源的访问,此时,需要对出现异常的HAC进行复位,无需对LM1、SOC数据总线等进行复位。
[0149]另外,将数据访问请求存储在LMI的数据队列中,如此,HAC无需等上一个数据访问请求处理完毕之后,才发送下一个数据访问请求,只需确定上一个数据访问请求被LMI接收并存储在数据队列中,就可以发送下一个数据访问请求,支持HAC连续地发送数据访问请求,最大化地利用LMI与HAC之间的数据总线,提高总线利用率。
[0150]步骤403:LMI基于接收的数据访问请求的类型,将接收的数据访问请求存储在LMI的数据队列中,LMI包括第一数据队列和第二数据队列,第一数据队列用于存储数据写请求,第二数据队列用于存储数据读请求。
[0151]具体地,如果接收的数据访问请求的类型为数据写请求,则LMI将接收的数据访问请求存储在第一数据队列中最后一个数据访问请求之后;如果接收的数据访问请求的类型为数据读请求,则将接收的数据访问请求存储在第二数据队列中最后一个数据访问请求之后。
[0152]需要说明的是,在本发明实施例中,第一数据队列和第二数据队列均可以为先入先出的数据队列,比如FIFO(英文:First Input First Output ;中文:先入先出),本发明实施例对此不做具体限定。另外,在本发明实施例中,每个HAC生成的数据访问请求之间互不影响,因此,可以将数据读请求存储在一个数据队列中,将数据写请求存储在另一个数据队列中,且该两个数据队列可以相互独立,互不影响,进而可以并行地访问SOC的存储资源。
[0153]通过上述401-403的步骤,LMI可以在每个时钟周期接收一个优先级最高的数据访问请求,并存储在LMI的数据队列中。并且在LMI接收优先级最高的数据访问请求的同时,还可以根据如下404-411的步骤,对LMI的数据队列中存储的数据访问请求进行并行处理。另外,第一数据队列中存储的数据访问请求和第二数据队列中存储的数据访问请求之间互不影响,因此,可以通过如下405-408的步骤是对第一数据队列中存储的数据访问请求进行处理,通过如下409-411的步骤对第二数据队列中存储的数据访问请求进行处理,且405-408的步骤可以与409-411的步骤并行执行。
[0154]步骤404:LMI从第一数据队列中,获取目标数据写请求,以及从第二数据队列中,获取目标数据读请求。
[0155]具体地,LMI从第一数据队列中,选择排列在第一位的数据访问请求,将选择的数据访问请求确定为目标数据写请求,以及从第二数据队列中,选择排列在第一位的数据访问请求,将选择的数据访问请求确定为目标数据读请求。
[0156]步骤405:LMI基于目标数据写请求携带的第一数据量、目标数据写请求携带的第一起始地址和芯片数据总线的位宽,从目标HAC中获取写数据,并对获取写数据的次数进行统计,得到第一次数,目标HAC为发送目标数据写请求的HAC。
[0157]具体地,LMI基于目标数据写请求携带的第一数据量、目标数据写请求携带的第一起始地址和芯片数据总线的位宽,计算从目标HAC中获取写数据的获取次数,芯片数据总线为与LMI连接的数据总线。基于该获取次数,向目标HAC发送指示信息,该指示信息用于指示目标HAC将目标数据写请求的写数据划分为获取次数次进行发送。当目标HAC接收到该指示信息时,目标HAC基于该获取次数,将目标数据写请求的写数据进行划分,得到多个写数据块,并将划分后得到的多个写数据块,在多个连续的时钟周期,分别发送给LMI。LMI接收目标HAC发送的写数据,并对接收写数据的次数进行统计,得到第一次数。
[0158]LMI基于目标数据写请求携带的第一数据量、目标数据写请求携带的第一起始地址和芯片数据总线的位宽,计算从目标HAC中获取写数据的获取次数的具体操作可以为:LMI基于目标数据写请求携带的第一起始地址,判断第一起始地址与目标HAC中存储写数据的起始存储地址是否地址对齐,如果地址对齐,则将目标数据写请求携带的第一数据量除以芯片数据总线的位宽,得到获取次数。如果地址不对齐,则将芯片数据总线的位宽减去第一起始地址对应的比特,得到获取数据量,之后,将第一数据量除以获取数据量,将得到的数值向上取整,得到获取次数。
[0159]比如,芯片数据总线的位宽为16bit,第一数据量为48bit,如果第一起始地址为Obit对应位置,目标HAC中存储写数据的起始存储地址为Obit对应位置,那么两者地址对齐。此时,将第一数据量48bit除以芯片数据总线的位宽16bit,得到获取次数为3。如果第一起始地址为Ibit对应位置,目标HAC中存储写数据的起始存储地址为Obit对应位置,那么两者地址不对齐,将芯片数据总线的位宽16bit减去第一起始地址对应的lbit,得到获取数据量为15bit,之后,将第一数据量48bit除以获取数据量15bit,得到的数值为3.2,将3.2向上取整,得到获取次数为4。
[0160]再比如,获取次数为3,则目标HAC将目标数据写请求的写数据进行划分,得到3个数据块,并在3个连续的时钟周期,分别将该3个数据块发送给LMI,使LMI在3个时钟周期,分别从目标HAC中获取一次写数据。
[0161]需要说明的是,与LMI连接的数据总线包括LMI与SOC数据总线之间的数据总线,还包括LMI与HAC-1F连接的数据总线,且该两个数据总线的位宽相同。另外,判断地址是否对齐的方法可以参考相关技术,并且当地址对齐时,总线每次能传输多少的数据量,地址不对齐时,总线每次又能传输多少的数据量都可以参考相关技术。
[0162]步骤406:当第一次数达到第一指定次数时,从目标HAC中获取第一指定次数的下一次写数据的过程中,基于第一数据量、第一起始地址和SOC数据总线的最大数据量,从目标数据写请求中拆分出一个子数据写请求,并将该子数据写请求进行协议转化,得到数据写命令,该数据写命令携带第一子数据量和第一子起始地址。
[0163]具体地,将第一次数与第一指定次数进行比较,当第一次数等于第一指定次数时,接收目标HAC发送第一指定次数的下一次写数据的过程中,基于SOC数据总线的最大数据量,将第一数据量进行划分,得到多个第一子数据量,且多个第一子数据量小于或等于SOC数据总线的最大数据量。获取第一子起始地址,生成子数据写请求,该子数据写请求携带第一子数据量和第一子起始地址。将该子数据写请求进行协议转化,得到数据写命令,该数据写命令携带第一子数据量和第一子起始地址。
[0164]获取第一子起始地址包括:对于第一个拆分出的子数据写请求,该子数据写请求的第一子起始地址为第一起始地址。对于其他子数据写请求,该其他子数据写请求的第一子起始地址为上一个子数据写请求的结束地址之后连续的地址。也即是,基于第一子数据量和上一个拆分的子数据写请求携带的第一子起始地址,计算当前拆分的子数据写请求的第一子起始地址,其他子数据写请求为第一个拆分出的子数据写请求之后拆分出的子数据写请求。另外,基于第一子数据量和上一个拆分的子数据写请求携带的第一子起始地址,计算当前拆分的子数据写请求的第一子起始地址的方法可以参考现有方式,本发明实施例对此不做详细阐述。
[0165]在本发明实施例中,从目标HAC中获取写数据时,存在数据反馈的延迟时间,并且从目标数据写请求中拆分子数据写请求只需一个时钟周期,因此,优选地,可以设置第一指定次数为每个子数据写请求的写数据获取次数减去2,也即是,第一子数据量对应的写数据获取次数减去2。这样,在获取当前子数据写请求的倒数第二次写数据的过程中,可以从目标数据写请求中拆分出当前子数据写请求,有效利用数据反馈的延迟时间,提高了数据访问效率。
[0166]当然,第一指定次数还可以为每个子数据写请求的写数据获取次数减去3、4等,且第一指定次数大于I即可,本发明实施例对此不做具体限定。
[0167]需要说明的是,在本发明实施例中,SOC数据总线单次访问的数据量一定,因此,在本发明实施例中,如果目标数据写请求携带的第一数据量大于SOC数据总线的最大数据量时,需要对目标数据写请求进行拆分,使拆分后的子数据写请求携带的第一子数据量小于或等于SOC数据总线单次访问的最大数据量。而为了尽可能地提高数据访问效率,可以使第一子数据量尽可能地等于SOC数据总线单次访问的最大数据量。
[0168]步骤407:当第一次数达到第二指定次数时,从目标HAC中获取第二指定次数的下一次写数据的过程中,将该数据写命令发送给SOC数据总线,并将第一次数清零,重新统计第一次数,返回步骤406,直至将目标数据写请求拆分完毕。
[0169]具体地,将第一次数与第二指定次数进行比较,当第一次数等于第二指定次数时,接收目标HAC发送的第二指定次数的下一次写数据的过程中,将该数据写命令发送给SOC数据总线,使SOC数据总线将该数据写命令发送给SOC的存储资源,并将第一次数清零。当再接收到目标HAC发送的写数据时,重新对接收写数据的次数进行统计,也即是,重新统计第一次数,返回步骤406,直至将目标数据写请求拆分完毕。
[0170]在本发明实施例中,从目标HAC中获取写数据时,存在数据反馈的延迟时间,并且将数据写命令发送给SOC数据总线只需一个时钟周期,因此,优选地,可以设置第二指定次数为每个子数据写请求的写数据获取次数减去1,也即是,第一子数据量对应的写数据获取次数减去I。这样,在获取当前子数据访问请求的最后一次写数据的过程中,可以将该数据写命令发送给SOC数据总线,有效利用数据反馈的延迟时间,提高了数据访问效率。
[0171]步骤408:当接收到SOC数据总线返回的数据写响应时,将多次从目标HAC中获取该数据写命令的写数据,逐次发送给SOC数据总线,使SOC数据总线按照第一子数据量和第一子起始地址,将接收的写数据写入SOC的存储资源中,结束操作。
[0172]具体地,当接收到SOC数据总线返回的数据写响应时,将多次从目标HAC中获取该数据写命令的写数据,逐次发送给SOC数据总线,使SOC数据总线将该写数据发送给SOC的存储资源,由SOC的存储资源按照第一子数据量和第一子起始地址,将接收的写数据写入SOC的存储资源中。
[0173]在本发明实施例中,通过上述405-408的步骤,在下一个数据写命令发送之前,预先从目标数据写请求中拆分该下一个数据写命令,并且在上一个数据写命令的最后一次写数据发送的同时,将下一个数据写命令发送给SOC数据总线,使写操作实现流水操作,进而保证SOC数据总线的有效利用,并且通过此方式,还可以防止写数据未发送出去,过多的数据写命令无效占住SOC存储资源的端口,导致其余总线的访问者无法访问。
[0174]可选地,在本发明实施例中,不仅可以通过上述405-408的步骤,将目标数据写请求进行拆分、协议转化等操作,实现对SOC的存储资源的访问,还可以通过如下(1)-(4)的步骤来实现,包括:
[0175](I)、基于目标数据写请求携带的第一数据量、目标数据写请求携带的第一起始地址和
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1