发明内容
本发明要解决的技术问题是提供一种HARQ合并器及HARQ数据存储方法,降低基带芯片的面积和功耗。
为了解决上述问题,本发明提供了一种HARQ数据存储方法,包括:
HARQ处理器接收到编码块的新数据时,将该新数据写入Cache和信道解码器;所述Cache将所述新数据写入Cache的数据存储器或者写入外部存储器中;
HARQ处理器接收到编码块的重传数据时,通过Cache从Cache的数据存储器或者外部存储器获取该重传数据对应的先前数据,将重传数据和先前数据进行合并,将合并后的数据写入Cache和信道解码器;所述Cache将所述合并后的数据写入Cache的数据存储器或者写入外部存储器中。
进一步地,上述方法还可具有以下特点,所述数据存储器中包括若干个Cache线;
所述Cache将编码块的新数据或合并后的数据写入Cache的数据存储器时包括:将所述新数据或合并后的数据写入数据存储器的Cache线,记录该Cache线的标签至标签存储器,所述标签为所述Cache线中存储的所述新数据或合并后的数据的高位地址;
所述HARQ处理器接收到编码块的重传数据时,向Cache发出读取先前数据的控制信号;所述Cache接收到所述读取先前数据的控制信号时,查找所述标签存储器中是否存在与所述重传数据的高位地址相同的标签,如果存在,则所述先前数据保存在所述标签对应的Cache线中,所述Cache从所述Cache线中将先前数据读出至HARQ处理器;否则,先前数据不在Cache的数据存储器中,所述Cache将外部存储器中的先前数据读到Cache中的缓冲器后,再读出至HARQ处理器。
进一步地,上述方法还可具有以下特点,如果先前数据不在Cache的数据存储器中,从外部存储器中读取先前数据到缓冲器后,还将先前数据写入Cache,按如下方式进行:
对Cache进行查找,查找所述标签存储器中是否存在与所述先前数据的高位地址相同的标签:
如果存在,则将该先前数据写入所述标签对应的Cache线;
如果不存在,则分配Cache线给该先前数据,按如下方式进行Cache线置换:
如果所分配的Cache线中无数据,则直接将所述先前数据写入所分配的Cache线中,记录所述Cache线的标签至标签存储器;
如果所分配的Cache线中有数据,且该数据的CRC正确,则使用先前数据替换该Cache线中的数据,并更新该Cache线的标签,将更新后的标签写入标签寄存器;
如果所分配的Cache线中有数据,且该数据的CRC错误,则执行步骤(a):将该数据存入外部存储器,将先前数据存入所分配的Cache线中,并更新该Cache线的标签,将更新后的标签写入标签寄存器;或者步骤(b):保留所分配的Cache线中的数据。
进一步地,上述方法还可具有以下特点,所述Cache按如下方式将所述新数据或者合并后的数据写入Cache的数据存储器或外部存储器:
对合并后的数据,如果进行合并的先前数据在Cache中时,合并后的数据写入该先前数据所在的Cache线;
对新数据以及进行合并的先前数据不在Cache中得到的合并后的数据,如下方式写入:
查找所述标签存储器中是否存在与所述新数据或合并后的数据的高位地址相同的标签:
如果存在,则将该新数据或合并后的数据写入所述标签对应的Cache线;
如果不存在,则分配Cache线给该新数据或合并后的数据,根据预设的置换原则进行Cache线置换,将所述新数据或合并后的数据写入所分配的Cache线,或者,写入外部存储器。
进一步地,上述方法还可具有以下特点,所述根据预设的置换原则进行Cache线置换包括:
如果所分配的Cache线中无数据,则直接将所述新数据或合并后的数据写入所分配的Cache线中,记录所述Cache线的标签至标签存储器;
如果所分配的Cache线中有数据,且该数据的CRC正确,则使用新数据或合并后的数据替换该Cache线中的数据,并更新该Cache线的标签,将更新后的标签写入标签寄存器;
如果所分配的Cache线中有数据,且该数据的CRC错误,则执行步骤(a):将该数据存入外部存储器,将新数据或合并后的数据存入所分配的Cache线中,并更新该Cache线的标签,将更新后的标签写入标签寄存器,或者,执行步骤(b):将所述新数据或合并后的数据存入外部存储器。
进一步地,上述方法还可具有以下特点,设置一Cache线置换标识,用于指示是否置换;
在进行Cache线置换时,如果所分配的Cache线中有数据,且该数据的CRC错误,当Cache线替换标识指示置换时,则执行所述步骤(a),否则,执行所述步骤(b)。
进一步地,上述方法还可具有以下特点,所述HARQ处理器将所述编码块的新数据或合并后的数据写入信道解码器时,将所述编码块的新数据或合并后的数据的第二标签信息写入所述信道解码器,同一编码块的新数据或合并后的数据的第二标签信息相同;
所述Cache从所述信道解码器接收所述编码块的新数据或合并后的数据的CRC校验结果及其第二标签信息,在进行Cache线置换时,根据所述Cache线中已保存的数据的第二标签信息,查找其对应的CRC校验结果。
进一步地,上述方法还可具有以下特点,所述HARQ处理器还从所述信道解码器接收所述编码块的CRC校验结果并保存;所述HARQ接收到编码块的重传数据时,检查保存的所述编码块的CRC校验结果,当所述编码块的CRC校验结果指示CRC正确,跳过所述编码块;当所述编码块的CRC校验结果指示CRC错误,才获取所述编码块的先前数据,进行合并处理。
本发明还提供一种HARQ合并器,包括HARQ处理器和高速缓冲存储器(Cache),所述Cache包括数据存储器,其中:
所述HARQ处理器,用于接收到编码块的新数据时,将该新数据写入Cache和信道解码器;接收到编码块的重传数据时,通过Cache从Cache的数据存储器或者外部存储器获取该重传数据对应的先前数据,将重传数据和先前数据进行合并,将合并后的数据写入Cache和信道解码器;
所述Cache,用于将所述新数据写入Cache的数据存储器或者写入外部存储器中;还用于返回先前数据至HARQ处理器,将合并后的数据写入Cache的数据存储器或者写入外部存储器中。
进一步地,上述合并器还可具有以下特点,所述Cache中还包括Cache控制器、标签存储器、标签比较器,所述数据存储器中包括若干个Cache线;
所述HARQ处理器,用于接收到编码块的重传数据时,向Cache发出读取先前数据的控制信号;
所述Cache控制器,用于将所述所述新数据或合并后的数据写入数据存储器的Cache线,记录该Cache线的标签至标签存储器,所述标签为所述Cache线中存储的所述新数据或合并后的数据的高位地址;还用于在接收到所述读取先前数据的控制信号时,指示标签比较器进行查找,获取查找结果,如果所述重传数据的先前数据在Cache的数据存储器中,从查找到的标签对应的Cache线中读取先前数据至HARQ处理器;否则,将外部存储器中的先前数据读到Cache中的缓冲器后,再读出至HARQ处理器中;
所述标签存储器,用于根据Cache控制器的指示,查找所述标签存储器中是否存在与所述重传数据的高位地址相同的标签,如果存在,则所述先前数据保存在所述标签对应的Cache线中,否则,所述先前数据不在所述Cache的数据存储器中。
进一步地,上述合并器还可具有以下特点,所述Cache控制器,还用于当所述先前数据不在Cache的数据存储器中时,将外部存储器中的先前数据读到缓冲器后,还将先前数据写入Cache,按如下方式进行:
指示标签比较器进行查找,获取查找结果,如果标签存储器中存在与所述先前数据的高位地址相同的标签,则将该先前数据写入已分配的Cache线;
如果不存在,则分配Cache线给该先前数据,按如下方式进行Cache线置换:
如果所分配的Cache线中无数据,则直接将所述先前数据写入所分配的Cache线中,记录所述Cache线的标签至标签存储器;
如果所分配的Cache线中有数据,且该数据的CRC正确,则使用先前数据替换该Cache线中的数据,并更新该Cache线的标签,将更新后的标签写入标签寄存器;
如果所分配的Cache线中有数据,且该数据的CRC错误,则执行(a):将该数据存入外部存储器,将先前数据存入所分配的Cache线中,并更新该Cache线的标签,将更新后的标签写入标签寄存器;或者(b):保留所分配的Cache线中的数据;
所述标签存储器,用于根据Cache控制器的指示,查找所述标签存储器中是否存在与所述先前数据的高位地址相同的标签,返回查找结果至Cache控制器。
进一步地,上述合并器还可具有以下特点,所述Cache控制器,用于当进行合并的先前数据在Cache中时,将合并后的数据写入该先前数据所在的Cache线;对新数据以及进行合并的先前数据不在Cache中得到的合并后的数据,如下方式写入:
指示标签比较器进行查找,获取查找结果,所述标签存储器中是否存在与所述新数据或合并后的数据的高位地址相同的标签:
如果存在,则将该新数据或合并后的数据写入所述标签对应的Cache线;
如果不存在,则分配Cache线给该新数据或合并后的数据,根据预设的置换原则进行Cache线置换,将所述新数据或合并后的数据写入所分配的Cache线,或者,写入外部存储器;
所述标签比较器,用于根据Cache控制器的指示,查找所述标签存储器中是否存在与所述新数据或合并后的数据的高位地址相同的标签,返回查找结果至Cache控制器。
进一步地,上述合并器还可具有以下特点,所述Cache控制器,用于按如下方式根据预设的置换原则进行Cache线置换:
如果所分配的Cache线中无数据,则直接将所述新数据或合并后的数据写入所分配的Cache线中,记录所述Cache线的标签至标签存储器;;
如果所分配的Cache线中有数据,且该数据的CRC正确,则使用新数据或合并后的数据替换该Cache线中的数据,并更新该Cache线的标签,将更新后的标签写入标签寄存器;
如果所分配的Cache线中有数据,且该数据的CRC错误,则执行(a):将该数据存入外部存储器,将新数据或合并后的数据存入所分配的Cache线中,并更新该Cache线的标签,将更新后的标签写入标签寄存器;或者,执行(b):将所述新数据或合并后的数据存入外部存储器。
进一步地,上述合并器还可具有以下特点,所述Cache中还设置一Cache线置换标识,用于指示是否置换;
所述Cache控制器,用于在进行Cache线置换时,如果所分配的Cache线中有数据,且该数据的CRC错误,当Cache线替换标识指示置换时,则执行所述(a),否则,执行所述(b)。
进一步地,上述合并器还可具有以下特点,所述HARQ处理器,还用于将所述编码块的新数据或合并后的数据写入信道解码器时,将所述编码块的新数据或合并后的数据的第二标签信息写入所述信道解码器,同一编码块的新数据或合并后的数据的第二标签信息相同;
所述Cache控制器,还用于从所述信道解码器接收所述编码块的新数据或合并后的数据的CRC校验结果及其第二标签信息,在进行Cache线置换时,根据所述Cache线中已保存的数据的第二标签信息,查找其对应的CRC校验结果。
进一步地,上述合并器还可具有以下特点,所述HARQ处理器,还用于从所述信道解码器接收所述编码块的CRC校验结果并保存;接收到编码块的重传数据时,检查保存的所述编码块的CRC校验结果,当所述编码块的CRC校验结果指示CRC正确,跳过所述编码块;当所述编码块的CRC校验结果指示CRC错误,才获取所述编码块的先前数据,进行合并处理。
本发明提供一种带Cache的HARQ合并器和HARQ数据存储方法。本发明对降低芯片面积和功耗,提高竞争方面有非常好的有益效果。在数据率不断提高的通信技术的日益发展的当今和未来,这种方法将具有重大的战略意义。
具体实施方式
本发明将Cache(高速缓冲存储器)引入HARQ合并器,为无线通信***的HARQ处理提供一种自带Cache的多层存储器实现方式。用Cache取代片上SRAM、并利用片外DDR/SDRAM的分层存储的方法来降低无线基带芯片面积和功耗。
为了利用片上Cache的低成本和高效率以及片外DDR/SDRAM的大容量和低成本,本发明给出了一种具有Cache的HARQ动态存储器分配的实现方法。根据片上Cache的存储空间大小的选择,该Cache可以用于存储部分编码块、一个或多个编码块、一个或多个HARQ进程的软比特数据,并可以动态更新。Cache可以是直接映射(Direct Mapped),也可以是组相联(set-associative)。
本发明提供的HARQ合并器包括HARQ处理器和Cache,其中:
接收到新数据时,HARQ处理器将该新数据写入Cache的同时,也写入传输信道解码器(如Turbo、CRC等,它可以在HARQ合并器的外部);
接收到重传数据时,HARQ处理器将接收到的新数据和存在于Cache的先前数据进行合并,并将合并的数据写入Cache的同时,也写入传输信道解码器。
HARQ处理器在给信道解码器送数据包的同时也将该数据包所对应的HARQ进程的CB块的高位地址,即标签(CRC_Tag,进程号和CB块号,参见图7)也传递到信道解码器。
传输信道解码器将CB块的CRC结果反馈给Cache控制器的同时,也将CB块所对应的CRC_Tag送到Cache控制器。Cache控制器利用CRC_Tag和CRC结果,来决定Cache的内容是否在分配新的Cache线(Cache line)中被置换(Replace)掉。在Cache已有的随机替换算法和最近最少使用替换算法(LRU,least recently used replacement algorithm)等置换算法的基础上,本发明利用CRC结果和传递的CRC_Tag提供一种新的置换方法。考虑到设计的简化,Cache的“写buffer”在分配Cache线时,可以直接进行,而不必到外部读取线内可能不完整的数据,从而降低功耗和面积,在一个CB块的数据不占满它的最后的一个Cache line时,缺陷是在Cache中将有部分Cache line(每个CB块可最多有一个Cache line的部分数据)没有利用上,但不会出现错误。这是一个设计平衡,如果需要充分利用cache line的空间,需要“写分配buffer”(write allocated Buffer)来拼合来自HARQ合并器和外部存储器的数据。
本发明是以编码块(CB,coded block)为处理基础,由多个编码块所组成的传输块的处理是在每个编码块处理后再对整个传输块进行总处理(如传输块的CRC校验)。
尽管本发明描述中是以CB块为基础,由于Cache Tag的使用,和CRC的结果直接反映在CRC_Tag中,这种HARQ Cache同样适合于不以CB块为单元的任意数据的处理方式。
本发明包含一个编码块CRC状态寄存器(CB_CRC_Statu_Reg),每个编码块对应一个CRC状态标识,用来指示编码块的CRC状态。其中,根据编码块的CRC结果来设置编码块CRC状态寄存器中该编码块对应的CRC状态标识。CRC状态标识可以按如下方式取值:CRC状态标识为1时表示该编码块CRC错误,为0时表示该编码块的CRC正确,当然也可以为0时标识该编码块CRC错误,为1时表示该编码块CRC正确,本发明对此不作限定。HARQ合并器可根据CRC状态标识来控制重传时的数据处理。接收到重传数据时,如果CRC状态标识指示CRC正确(比如CRC状态标识为0),该CRC状态标识对应的编码块的处理可以不做,从而节省功耗;如果CRC状态标识指示CRC错误(比如CRC状态标识为1),该CRC状态标识对应的编码块的处理将正常进行。
本发明提供一种HARQ合并器,包括HARQ处理器和高速缓冲存储器(Cache),所述Cache包括Cache控制器、数据存储器,标签存储器和标签比较器,所述数据存储器中包括若干个Cache线,其中:
所述HARQ处理器,用于接收到编码块的新数据时,将该新数据写入Cache和信道解码器;接收到编码块的重传数据时,通过Cache从Cache的数据存储器或者外部存储器获取该重传数据对应的先前数据,将重传数据和先前数据进行合并,将合并后的数据写入Cache和信道解码器;
所述Cache,用于将所述新数据写入Cache的数据存储器或者写入外部存储器中;还用于返回先前数据至HARQ处理器,将合并后的数据写入Cache的数据存储器或者写入外部存储器中。
其中,所述HARQ处理器,用于接收到编码块的重传数据时,向Cache发出读取先前数据的控制信号;
所述Cache控制器,用于将所述所述新数据或合并后的数据写入数据存储器的Cache线,记录该Cache线的标签至标签存储器,所述标签为所述Cache线中存储的所述新数据或合并后的数据的高位地址;还用于在接收到所述读取先前数据的控制信号时,指示标签比较器进行查找,获取查找结果,如果所述重传数据的先前数据在Cache的数据存储器中,从查找到的标签对应的Cache线中读取先前数据至HARQ处理器;否则,将外部存储器中的先前数据读到Cache中的缓冲器后,再读出至HARQ处理器中;
所述标签存储器,用于根据Cache控制器的指示,查找所述标签存储器中是否存在与所述重传数据的高位地址相同的标签,如果存在,则所述先前数据保存在所述标签对应的Cache线中,否则,所述先前数据不在所述Cache的数据存储器中。
其中,所述Cache控制器,还用于当所述先前数据不在Cache的数据存储器中时,将外部存储器中的先前数据读到缓冲器后,还将先前数据写入Cache,按如下方式进行:
指示标签比较器进行查找,获取查找结果,如果标签存储器中存在与所述先前数据的高位地址相同的标签,则将该先前数据写入已分配的Cache线;
如果不存在,则分配Cache线给该先前数据,按如下方式进行Cache线置换:
如果所分配的Cache线中无数据,则直接将所述先前数据写入所分配的Cache线中,记录所述Cache线的标签至标签存储器;
如果所分配的Cache线中有数据,且该数据的CRC正确,则使用先前数据替换该Cache线中的数据,并更新该Cache线的标签,将更新后的标签写入标签寄存器;
如果所分配的Cache线中有数据,且该数据的CRC错误,则执行(a):将该数据存入外部存储器,将先前数据存入所分配的Cache线中,并更新该Cache线的标签,将更新后的标签写入标签寄存器;或者(b):保留所分配的Cache线中的数据;
所述标签存储器,用于根据Cache控制器的指示,查找所述标签存储器中是否存在与所述先前数据的高位地址相同的标签,返回查找结果至Cache控制器。
其中,所述Cache控制器,用于当进行合并的先前数据在Cache中时,将合并后的数据写入该先前数据所在的Cache线;对新数据以及进行合并的先前数据不在Cache中得到的合并后的数据,如下方式写入:
指示标签比较器进行查找,获取查找结果,所述标签存储器中是否存在与所述新数据或合并后的数据的高位地址相同的标签:
如果存在,则将该新数据或合并后的数据写入所述标签对应的Cache线;
如果不存在,则分配Cache线给该新数据或合并后的数据,根据预设的置换原则进行Cache线置换,将所述新数据或合并后的数据写入所分配的Cache线,或者,写入外部存储器;
所述标签比较器,用于根据Cache控制器的指示,查找所述标签存储器中是否存在与所述新数据或合并后的数据的高位地址相同的标签,返回查找结果至Cache控制器。
其中,所述Cache控制器,用于按如下方式根据预设的置换原则进行Cache线置换:
如果所分配的Cache线中无数据,则直接将所述新数据或合并后的数据写入所分配的Cache线中,记录所述Cache线的标签至标签存储器;;
如果所分配的Cache线中有数据,且该数据的CRC正确,则使用新数据或合并后的数据替换该Cache线中的数据,并更新该Cache线的标签,将更新后的标签写入标签寄存器;
如果所分配的Cache线中有数据,且该数据的CRC错误,则执行(a):将该数据存入外部存储器,将新数据或合并后的数据存入所分配的Cache线中,并更新该Cache线的标签,将更新后的标签写入标签寄存器;或者,执行(b):将所述新数据或合并后的数据存入外部存储器。
其中,所述Cache中还设置一Cache线置换标识,用于指示是否置换;
所述Cache控制器,用于在进行Cache线置换时,如果所分配的Cache线中有数据,且该数据的CRC错误,当Cache线替换标识指示置换时,则执行所述(a),否则,执行所述(b)。
其中,所述HARQ处理器,还用于将所述编码块的新数据或合并后的数据写入信道解码器时,将所述编码块的新数据或合并后的数据的第二标签信息写入所述信道解码器,同一编码块的新数据或合并后的数据的第二标签信息相同;
所述Cache控制器,还用于从所述信道解码器接收所述编码块的新数据或合并后的数据的CRC校验结果及其第二标签信息,在进行Cache线置换时,根据所述Cache线中已保存的数据的第二标签信息,查找其对应的CRC校验结果。
其中,所述HARQ处理器,还用于从所述信道解码器接收所述编码块的CRC校验结果并保存;接收到编码块的重传数据时,检查保存的所述编码块的CRC校验结果,当所述编码块的CRC校验结果指示CRC正确,跳过所述编码块;当所述编码块的CRC校验结果指示CRC错误,才获取所述编码块的先前数据,进行合并处理。
本发明还提供一种HARQ数据存储方法,包括:
HARQ处理器接收到编码块的新数据时,将该新数据写入Cache和信道解码器;所述Cache将所述新数据写入Cache的数据存储器或者写入外部存储器中;
HARQ处理器接收到编码块的重传数据时,通过Cache从Cache的数据存储器或者外部存储器获取该重传数据对应的先前数据,将重传数据和先前数据进行合并,将合并后的数据写入Cache和信道解码器;所述Cache将所述合并后的数据写入Cache的数据存储器或者写入外部存储器中。
所述数据存储器中包括若干个Cache线;
所述Cache将编码块的新数据或合并后的数据写入Cache的数据存储器时包括:将所述新数据或合并后的数据写入数据存储器的Cache线,记录该Cache线的标签至标签存储器,所述标签为所述Cache线中存储的所述新数据或合并后的数据的高位地址;
所述HARQ处理器接收到编码块的重传数据时,向Cache发出读取先前数据的控制信号;所述Cache接收到所述读取先前数据的控制信号时,查找所述标签存储器中是否存在与所述重传数据的高位地址相同的标签,如果存在,则所述先前数据保存在所述标签对应的Cache线中,所述Cache从所述Cache线中将先前数据读出至HARQ处理器;否则,先前数据不在Cache的数据存储器中,所述Cache将外部存储器中的先前数据读到Cache中的缓冲器后,再读出至HARQ处理器。
其中,如果先前数据不在Cache的数据存储器中,从外部存储器中读取先前数据到缓冲器后,还将先前数据写入Cache,按如下方式进行:
对Cache进行查找,查找所述标签存储器中是否存在与所述先前数据的高位地址相同的标签:
如果存在,则将该先前数据写入所述标签对应的Cache线;
如果不存在,则分配Cache线给该先前数据,按如下方式进行Cache线置换:
如果所分配的Cache线中无数据,则直接将所述先前数据写入所分配的Cache线中,记录所述Cache线的标签至标签存储器;
如果所分配的Cache线中有数据,且该数据的CRC正确,则使用先前数据替换该Cache线中的数据,并更新该Cache线的标签,将更新后的标签写入标签寄存器;
如果所分配的Cache线中有数据,且该数据的CRC错误,则执行步骤(a):将该数据存入外部存储器,将先前数据存入所分配的Cache线中,并更新该Cache线的标签,将更新后的标签写入标签寄存器;或者步骤(b):保留所分配的Cache线中的数据。
其中,所述Cache按如下方式将所述新数据或者合并后的数据写入Cache的数据存储器或外部存储器:
对合并后的数据,如果进行合并的先前数据在Cache中时,合并后的数据写入该先前数据所在的Cache线;
对新数据以及进行合并的先前数据不在Cache中得到的合并后的数据,如下方式写入:
查找所述标签存储器中是否存在与所述新数据或合并后的数据的高位地址相同的标签:
如果存在,则将该新数据或合并后的数据写入所述标签对应的Cache线;
如果不存在,则分配Cache线给该新数据或合并后的数据,根据预设的置换原则进行Cache线置换,将所述新数据或合并后的数据写入所分配的Cache线,或者,写入外部存储器。
其中,所述根据预设的置换原则进行Cache线置换包括:
如果所分配的Cache线中无数据,则直接将所述新数据或合并后的数据写入所分配的Cache线中,记录所述Cache线的标签至标签存储器;
如果所分配的Cache线中有数据,且该数据的CRC正确,则使用新数据或合并后的数据替换该Cache线中的数据,并更新该Cache线的标签,将更新后的标签写入标签寄存器;
如果所分配的Cache线中有数据,且该数据的CRC错误,则执行步骤(a):将该数据存入外部存储器,将新数据或合并后的数据存入所分配的Cache线中,并更新该Cache线的标签,将更新后的标签写入标签寄存器,或者,执行步骤(b):将所述新数据或合并后的数据存入外部存储器。
其中,还设置一Cache线置换标识,用于指示是否置换;在进行Cache线置换时,如果所分配的Cache线中有数据,且该数据的CRC错误,当Cache线替换标识指示置换时,则执行所述步骤(a),否则,执行所述步骤(b)。
其中,所述HARQ处理器将所述编码块的新数据或合并后的数据写入信道解码器时,将所述编码块的新数据或合并后的数据的第二标签信息写入所述信道解码器,同一编码块的新数据或合并后的数据的第二标签信息相同;
所述Cache从所述信道解码器接收所述编码块的新数据或合并后的数据的CRC校验结果及其第二标签信息,在进行Cache线置换时,根据所述Cache线中已保存的数据的第二标签信息,查找其对应的CRC校验结果。
其中,所述HARQ处理器还从所述信道解码器接收所述编码块的CRC校验结果并保存;所述HARQ接收到编码块的重传数据时,检查保存的所述编码块的CRC校验结果,当所述编码块的CRC校验结果指示CRC正确,跳过所述编码块;当所述编码块的CRC校验结果指示CRC错误,才获取所述编码块的先前数据,进行合并处理。
图1表示的是一个多核处理器的SOC基带芯片的通用架构。在这个特定的例子中,它含有数字信号处理器(DSP)和CPU(如ARM处理器)、DMA、外设(peripherals)、Modem加速器、信道解码器(Turbo、CRC等)。HARQ是Modem加速器的一部分,它可以作为总线的控者。SRAM是片上存储器。HARQ合并器在SOC的位置使得它可以利用片上Cache、片上SRAM和片外DDR/SDRAM。当读Cache中的数据时,如果数据不在Cache中,即CacheMiss,Cache的线填充(linefill Buffer)可以将SRAM、DDR/SDRAM的数据读到HARQ合并器中。
图2表述的是具有Cache的HARQ合并器的架构图。从图中可以看出,接收的数据,这里是指从射频接收的I,Q数据,经过ADC(数模转换)、滤波、和前处理如信道估计、MIMO、均衡器等产生出LLR(对数似然比)的软比特,并存储在缓冲器(Buffer)中。HARQ合并器的总控制器根据对当前进程和CB块的起始地址、数据块大小和状态(新数据或重转)等来产生控制信号,从缓冲器读取软比特数据。
其中,HARQ合并器包括HARQ处理器和Cache,其中,HARQ处理器包括HARQ控制器和数据合并处理单元。
如果是新数据,该数据可以写入信道解码器(如Turbo)的输入缓冲器(Input Buffer)的同时也写进Cache中。Cache可以设置成写分配Cache线的政策,当Cache Miss的时候,分配一条Cache line给这个数据,并记下高位地址(CB_Tag)的值。为了并行操作,操作的数据大小可以是一个Cacheline。而Cache line的长度可以是一个DDR并发(burst)的长度。当Cache hit时,该数据将写进Cache,其中,由标签比较器比较标签寄存器中中的CB_TAG与新数据的CB_TAG进行比较,如果标签寄存器中存在与新数据的CB_TAG相同的CB_TAG,则Cache hit,否则,Cache miss。
如果是重传数据,该重传数据要同先前数据进行合并。HARQ控制器根据对当前进程和CB块的地址,查找先前数据是否Cache中。如果先前数据在Cache中,产生Cache hit,并将先前数据(或整个Cache line)读出至数据合并处理单元与重传数据进行合并。如果先前数据不在Cache中(Cachemiss),Cache控制器产生一个线填充命令,将外部存储器的内容读到Cache中并同时送到数据合并处理单元进行重传数据与先前数据的合并。合并后的数据再送回Cache和信道解码器(如Turbo)的输入缓冲器中。
CB块数据全部写到信道解码器(如Turbo)的输入缓冲器同时,也将CB块的高位地址(CRC_Tag)写入信道解码器。
在一个CB块的数据全部写到信道解码器(如Turbo)的输入缓冲器后,启动信道解码器和CRC校验器。信道解码器将CRC结果反馈给HARQ处理器的同时,也将相应的CRC_Tag送回到Cache控制器。
图3描述的是HARQ Cache的架构图。从图中可以看出,HARQ Cache包括:
连接HARQ处理器的读写接口如控制信号、地址信号和数据信号。它还含有存取外部存储器的总线接口,用于连接SOC的总线,如Cross-Bar总线。
HARQ控制器,用于控制和协调Cache的工作。
HARQ Cache有至少三个缓冲器(Buffer),分别是写缓冲器(Writebuffer)、线读缓冲器(Line Read Buffer)和线填充缓冲器(Line fill Buffer)。
写缓冲器接收HARQ处理器的写数据,并写入到Cache或外部存储器中。
线读缓冲器在Cache hit时,读取一条Cache线并送到HARQ处理器用于合并。
线填充缓冲器读取外部存储器的内容送HARQ处理器和Cache line。
HARQ Cache含有两个多路选择器,以选择不同的数据流。例如读数据可从线读缓冲器或线填充缓冲器中选取;写数据可从线读缓冲器或写缓冲器中选取。
HARQ Cache还有一个Tag比较器(TAG Comparator),用于Cache的Tag比较来确定数据是否在Cache中。
HARQ Cache还包括数据存储器(Data RAM)用于存放数据(Cache line),标签存储器(Tag RAM)用于存放Tag的值。
HARQ Cache还包括CRC接口,信道解码器将CRC结果(CRC_PASS)和相应CRC_TAG值送回到Cache的控制器中,这两组值将在Cache替换算法中决定是否置换一条Cache line。
图4是对本发明的控制逻辑的重传数据处理作进一步描述。对新数据,每个CB块都要处理,而对重传数据,原来CRC正确的CB块可以不用处理。对重传数据,控制器查看CRC状态寄存器(CB_CRC_Statu_Reg,这个寄存器与CRC_PASS的值是一样的)的内容(该内容是由信道解码器传送过来的),如果对应CB的CRC状态比特为0,说明上次CRC正确,无需处理。如果对应CB的CRC状态比特为1,说明上次CRC错误,该CB块要进行处理。
图5是对HARQ的CB块的物理地址的划分,其中Tag部分将存于TagRAM中。数据存于Data RAM中,图中所示每行为一个线(line)。HARQ进程CB块的物理地址可由HARQ进程号(process ID)、CB块号和CB块长度所组成。进程号(process ID)、CB块号和部分CB块长度构成TAG(图中CB_TAG)。TAG比较器将这个TAG的值与TAG RAM相比较来决定是否命中Cache。如果没有命中,可以分配一条Cache线给没有命中的数据,这个TAG同时也写到TAG RAM中,用于下次数据的TAG比较。同样地址的数据下次来时,就可以产生命中(Cache hit)。
图6是HARQ的CB块在Cache RAM中的示意图,请注意尽管CB块的物理地址是连续的,但在Cache中可能会在不同的位置上,这里为了解释方便,画成连续的。图中可见,一个CB块可能有一个cache line上有部分为空,即没有充分使用。但这种CB地址的划分可以使得一个CB可以提出相同的高位TAG,可供TAG CRC状态位的设置。
图7是设置TAG CRC状态位的示意图。由于每个HARQ的进程号加上CB块号是唯一的(这里称为CRC_TAG),这部分信息可以传送到信道解码器,在信道解码器的CRC结果出来后,该CB块的CRC结果和对应的CRC_TAG值一起送回到Cache控制器。在Cache内部有一组存储部件记录CRC_TAG的值和相应CB块的CRC是否通过的CRC状态寄存器(CRC_PASS),利用这两组值来定义Cache线的替换方法。
下面说明一下本发明提出的HARQ Cache线的替换方法。在业界常用的“随机”和最近最少使用替换算法(LRU)等置换算法的基础上,本发明利用CRC_PASS的结果和传递的CRC_Tag做进一步的改进。
当有Cache不命中时(Cache Miss),由选用的随机或LRU替代算法所找到被替换的Cache线后,CRC_Tag的值同该Cache线原来存在于TAG RAM中的TAG所对应的值进行比较:
如果没有相同的值,则该Cache线可以被替换掉;
如果有与CRC_TAG相同的值,则查看该CRC_TAG所对应的CRC_PASS的值:
a、如果该CRC_PASS的值是0,说明这个CB块CRC正确,所以该Cache线可以替换掉;
b、如果该CRC_PASS的值是1,说明这个CB块CRC错误,该CB块还要同下次的数据进行合并,可以用一个Cache_Line_Relpace寄存器比特来灵活处理:
如果设置Cache_Line_Relpace为1,则该Cache线可以被替换,尽管该Cache线中的内容是要被使用的;
如果设置CB_line_Relpace为0,则该Cache线不能被替换,因此当前的数据是不能保留在Cache里的,又分两种情况:
1)如果是读cache时,从外部存储器的读取的数据直接送HARQ合并器,Cache中将没有保留这部分数据;
2)如果是写Cache时,从HARQ处理器送来的数据,将直接送到外部存储器,不在Cache中保留。
该发明适合于的含有可编程或不可编程控制部件的HARQ合并器。