发明内容
本发明要解决的技术问题是提供一种HARQ存储器分层管理方法和系统,降低面积和功耗。
为了解决上述问题,本发明提供了一种HARQ存储器的分层管理方法,包括:
所述HARQ存储器包括片上存储器,所述片上存储器包括若干个存储块,每个存储块对应一占用状态位,用于指示所述存储块是否可被覆盖;
在接收到编码块的新数据时,查找片上存储器中是否存在可被覆盖的存储块,当存在可被覆盖的存储块时,将所述编码块的新数据存入所述存储块并将所述存储块对应的占用状态位设置为不可覆盖;当不存在可被覆盖的存储块时,将所述编码块的新数据存入片外存储器;
在对所述编码块的新数据进行校验通过时,将所述编码块的新数据所在的存储块对应的占用状态位设置为可覆盖。
进一步地,上述方法还可具有以下特点,
接收到编码块的重传数据时,对编码块进行处理,包括:判断所述重传数据的先前数据是否存储在片上存储器中,如果是,从片上存储器中读取所述先前数据,将所述重传数据和其先前数据进行合并得到合并数据;否则,从片外存储器中读取与所述重传数据对应的先前数据,将所述重传数据与所述先前数据进行合并得到合并数据。
进一步地,上述方法还可具有以下特点,
所述对编码块的处理还包括:当所述先前数据在片上存储器时,将所述编码块的合并数据存储到所述先前数据所在的存储块;当所述先前数据在片外存储器时,查找片上存储器中是否存在可被覆盖的存储块,当存在可被覆盖的存储块时,将所述编码块的合并数据存入所述存储块并将所述存储块对应的占用状态位设置为不可覆盖;当不存在可被覆盖的存储块时,将所述编码块的合并数据存入片外存储器;
在对所述编码块的合并数据进行校验通过时,将所述编码块的合并数据所在的存储块对应的占用状态位设置为可覆盖。
进一步地,上述方法还可具有以下特点,
所述片上存储器每个存储块对应一标签,所述标签中保存所述存储块中存储的编码块的标识信息;
通过如下方式判断所述重传数据的先前数据是否存储在片上存储器中:
接收到编码块的重传数据时,查找是否存在与所述编码块的标识信息对应的标签,如果存在,则所述先前数据存储在片上存储器中,从所述标签对应的存储块中读取所述先前数据。
进一步地,上述方法还可具有以下特点,所述标识信息为编码块的进程号和编码块号。
进一步地,上述方法还可具有以下特点,每个编码块对应一校验状态标识信息,用于指示所述编码块是否通过校验;
接收到编码块的重传数据时,在对编码块进行处理前还包括:
获取所述编码块的校验状态标识信息,当所述校验状态标识信息指示所述编码块通过校验时,跳过所述编码块;否则,对所述编码块进行处理。
进一步地,上述方法还可具有以下特点,还设置一强制处理标识,用于指示是否强制进行合并处理;
当接收到编码块的重传数据时,获取所述编码块的校验状态标识信息前,还包括:
获取所述强制处理标识,如果所述强制处理标识指示强制进行合并处理,则执行对所述编码块的处理;否则,获取所述编码块的校验状态标识信息,根据校验状态标识信息判断是否对编码块进行处理。
进一步地,上述方法还可具有以下特点,所述校验为循环冗余校验。
进一步地,上述方法还可具有以下特点,所述存储块的大小固定,且不小于最大编码块;或者,所述存储块的大小根据编码块的大小定义。
本发明还提供一种HARQ数据分层管理系统,包括HARQ处理器和片上存储器,所述HARQ处理器中包括HARQ控制器,其中:
所述片上存储器包括若干个存储块,每个存储块对应一占用状态位,用于指示所述存储块是否可被覆盖;
所述HARQ控制器,用于在接收到编码块的新数据时,查找片上存储器中是否存在可被覆盖的存储块,当存在可被覆盖的存储块时,将所述编码块的新数据存入所述存储块并将所述存储块的占用状态位设置为不可覆盖;当不存在可被覆盖的存储块时,将所述编码块的新数据存入片外存储器;还用于将所述编码块的新数据写入信道解码器,接收信道解码器对所述编码块的校验结果,当所述编码块校验通过时,将所述编码块的新数据所在的存储块对应的占用状态位设置为可覆盖。
进一步地,上述系统还可具有以下特点,所述HARQ处理器还包括判断单元和数据合并处理单元,其中:
所述HARQ控制器,还用于接收到编码块的重传数据时,指示判断单元判断所述重传数据的先前数据是否存储在片上存储器中;
所述判断单元,用于接收到HARQ控制器的指示时,判断所述重传数据的先前数据是否存储在片上存储器中,将判断结果发送给数据合并处理单元;
所述数据合并处理单元,用于当所述重传数据的先前数据存储在片上存储器中时,从片上存储器中读取所述先前数据,将所述重传数据和其先前数据进行合并得到合并数据;否则,从片外存储器中读取与所述重传数据对应的先前数据,将所述重传数据与所述先前数据进行合并得到合并数据。
进一步地,上述系统还可具有以下特点,所述HARQ控制器,还用于当所述先前数据在片上存储器时,将所述数据合并处理单元得到的编码块的合并数据存储到所述先前数据所在的存储块;当所述先前数据在片外存储器时,查找片上存储器中是否存在可被覆盖的存储块,当存在可被覆盖的存储块时,将所述编码块的合并数据存入所述存储块并将所述存储块对应的占用状态位设置为不可覆盖;当不存在可被覆盖的存储块时,将所述编码块的合并数据存入片外存储器;还用于在对所述编码块的合并数据进行校验通过时,将所述编码块的合并数据所在的存储块对应的占用状态位设置为可覆盖。
进一步地,上述系统还可具有以下特点,所述判断单元中包括标签寄存器和标签比较器,其中:
所述片上存储器每个存储块还对应标签寄存器中的一标签,所述标签中保存所述存储块中存储的编码块的标识信息;
所述标签比较器,用于收到HARQ控制器的指示后,查找是否存在与所述编码块的标识信息对应的标签,将查找结果发送给数据合并处理单元;
所述数据合并处理单元,用于当标签寄存器中存在与所述编码块的标识信息对应的标签时,从所述标签对应的存储块中读取所述编码块的先前数据,将所述重传数据与所述先前数据进行合并;否则,从片外存储器中读取与所述重传数据对应的先前数据,将所述重传数据与所述先前数据进行合并。
进一步地,上述系统还可具有以下特点,所述标识信息为编码块的进程号和编码块号。
进一步地,上述系统还可具有以下特点,所述HARQ处理器还包括一校验状态寄存器,其中:
所述校验状态寄存器,用于保存每个编码块的校验状态标识信息,所述校验状态标识信息用于指示所述编码块是否通过校验;
所述HARQ控制器,还用于根据信道解码器对编码块的校验结果设置所述编码块的校验状态标识信息,还用于收到编码块的重传数据时,获取所述编码块的校验状态标识信息,当所述校验状态标识信息指示所述编码块通过校验时,跳过所述编码块;否则,获取所述编码块的先前数据,将重传数据和先前数据进行合并处理。
进一步地,上述系统还可具有以下特点,所述HARQ处理器中还包括强制处理寄存器,用于保存一强制处理标识,该强制处理标识用于指示是否强制进行合并处理;
所述HARQ制器,用于当接收到编码块的重传数据时,获取所述强制处理标识,如果所述强制处理标识指示强制进行合并处理,则将所述重传数据和先前数据进行合并处理;否则,获取所述编码块的校验状态标识信息,根据所述编码块的校验状态标识信息判断是否将重传数据和先前数据进行合并处理。
进一步地,上述系统还可具有以下特点,所述校验为循环冗余校验。
本发明的分层存储方法,提高了片上SRAM的利用率,降低了功耗。
具体实施方式
本发明提供一种部分片上SRAM和部分片外DDR/SDRAM的分层存储的方法来降低芯片面积和功耗。为了充分利用片上SARM的利用率和片外DDR/SDRAM的大容量和低成本,给出了一种动态存储器分配的实现方法。
本发明以编码块(CB,coded block)为基础,由多个编码块所组成的传输块的处理是在每个编码块处理后再对整个传输块进行总处理(如传输块的CRC校验)。片上SARM可以用于存储多个编码块的软比特数据。
片上SRAM包括多个存储块,每个存储块对应一个标签(Tag),标签可以用存储器或寄存器来实现。标签用来记录某个存储块中存储的数据的标识信息,比如,标签中可以存储高位地址,用于数据读取时的标签查询。
每个存储块还对应一个占用状态位(CB_used),它用于指示该存储块是否可以被新数据覆盖。在处理新数据时,如果片上SRAM的某个存储块存有数据,在信道解码器解码后,并且CRC校验正确时,该存储块可以释放,另一个编码块的数据可以占用这部分资源而覆盖该存储块,以提高利用率。该占用状态位(CB_used)即用来指示该存储块是否可以被覆盖。复位时,片上SRAM的所有存储块占用状态位都指示可以被覆盖。
本发明还包含一个编码块CRC状态寄存器(CB_CRC_Statu_Reg),它用来指示所有编码块的CRC状态。这个状态寄存器由其对应的CRC结果来设置。状态寄存器的位为1表示该编码块CRC错误,为0表示该编码块CRC正确。系统控制中可用编码块CRC状态寄存器来控制重传时的数据处理。在重传时如该位是1,所对应的编码块的处理将正常进行;在重传时如果该位是0,所对应的编码块可以不做处理,从而节省功耗。
本发明还包含一个标签比较器。在数据重传时,新接收编码块的重存数据和保存在存储器中的先前数据要进行合并再对合并后得到的合并数据进行解码。在读取先前数据时,先要检查该先前数据是否是在片上SRAM内,如果在就从片上SRAM读取该数据,如果不在就读取位于片外DDR/SDRAM的数据。在判断该先前数据是否在片上SRAM内时,标签比较器的作用就是给出该先前数据是否在片上SRAM的指示。标签比较器是将该编码块的高位地址与保存在标签存储器或寄存器中的标签值进行比较,如果有相同值,也就是标签命中(tag hit),说明该数据位于片上SRAM内;如果表明未命中(tag miss),即数据不在片上SRAM内,就需要读取在片外DDR/SDRAM的数据。
本发明还包含一个片上读缓冲区(Read Buffer,如FIFO等)。片上读缓冲区的作用是在Tag Miss的情况下,从片外DDR/SDRAM读取上次接收的数据。
本发明还包含一个片上写缓冲区(write buffer,如fifo等)。在编码块的处理过程中,如果片上SRAM的所有存储块的占用状态位都指示不可覆盖(或称为被占用),控制逻辑将把该编码块所对应的软比特写进片上写缓冲区。片上写缓冲区再将这部分数据写到片外DDR/SDRAM。
本发明还包含一个数据合并处理单元,它的作用是用来合并编码块的重传数据和先前数据。
本发明还包含一个总体控制器,用于处理整个传输块的控制,包含处理新的和重传数据、数据读写、tag的处里、读写buffer的操作等。
对于片外DDR/SDRAM所对应的编码块也可以像片上SRAM一样设立对应的占用状态位。为了简化设计,也可以不设占用状态位,因为DDR/SDRAM的容量较大,可以给每个编码块指定位置,从而可不用考虑重复使用。
下面通过附图和实施例进一步说明本发明。
图1是一个多核处理器的SOC(System on Chip,系统级芯片或者片上系统)基带芯片的通用架构。在这个特定的例子中,所述SOC基带芯片包括数字信号处理器(DSP)和CPU(如ARM处理器)、DMA(直接存储器访问)、外围设备(peripherals)、Modem加速器、信道解码器(Turbo、CRC等)。HARQ是Modem加速器的一部分,它可以作为总线的控者。SRAM是片上存储器。
如图2所示为具有存储器分层的HARQ合并器的架构图。从图中可以看出,接收的数据,这里是指从射频接收的I,Q数据,经过ADC(数模转换)、滤波、和前处理如信道估计、MIMO、均衡器等产生出LLR(对数似然比)的软比特,并存储在缓冲器(Buffer)中。HARQ合并器根据对当前进程和CB块的起始地址、数据块大小和状态(新数据或重转数据)等来产生控制信号,从缓冲器读取软比特数据。
HARQ合并器同信道解码器(Decoder)有接口,HARQ合并器传递LLR软比特到信道解码器,信道解码器将CRC结果返回到HARQ合并器。
HARQ同外部SRAM、DDR/SDRAM的联系是通过总线接口来完成的,比如ARM AXI(Advanced extensible Interface,先进的高速可扩展接口)总线,也可以是专用总线。
其中,HARQ合并器包括HARQ处理器和片上存储器,其中,HARQ处理器进一步包括HARQ控制器(HARQ Controller)、占用状态位寄存器、判断单元(包括标签寄存器和标签比较器)、数据合并处理单元、编码块CRC状态寄存器、片上写缓冲区、片上读缓冲区,其中:
片上存储器包括多个存储块,每个存储块对应一占用状态位,该占用状态位用于指示该存储块是否可以被覆盖;占用状态位保存在占用状态位寄存器中;
每个存储块还对应标签存储器中的一标签,标签中保存片上存储器的存储块中存储的编码块的标识信息,该标识信息可以为编码块的高位地址,比如编码块的进程号和编码块号;
编码块CRC状态寄存器用于保存每个编码块的CRC状态标识信息,所述CRC状态标识信息用于指示编码块是否通过CRC校验;
所述HARQ控制器,用于进行HARQ处理,在接收到编码块的新数据时,查找片上存储器中是否存在可被覆盖的存储块,当存在可被覆盖的存储块时,将所述编码块的新数据存入所述存储块并将所述存储块的占用状态位设置为不可覆盖;当不存在可被覆盖的存储块时,将所述编码块的新数据存入片外存储器;还用于将所述编码块的新数据写入信道解码器,接收信道解码器对所述编码块的CRC校验结果,当所述编码块CRC校验通过时,将所述编码块的新数据所在的存储块对应的占用状态位设置为可覆盖;
其中,所述HARQ控制器,还用于接收到编码块的重传数据时,指示判断单元判断所述重传数据的先前数据是否存储在片上存储器中;
所述判断单元,用于接收到HARQ控制器的指示时,判断所述重传数据的先前数据是否存储在片上存储器中,将判断结果发送给数据合并处理单元;
所述数据合并处理单元,用于当所述重传数据的先前数据存储在片上存储器中时,从片上存储器中读取所述先前数据,将所述重传数据和其先前数据进行合并得到合并数据;否则,从片外存储器中读取与所述重传数据对应的先前数据,将所述重传数据与所述先前数据进行合并得到合并数据。
所述HARQ控制器,还用于当所述先前数据在片上存储器时,将所述数据合并处理单元得到的编码块的合并数据存储到所述先前数据所在的存储块;当所述先前数据在片外存储器时,查找片上存储器中是否存在可被覆盖的存储块,当存在可被覆盖的存储块时,将所述编码块的合并数据存入所述存储块并将所述存储块对应的占用状态位设置为不可覆盖;当不存在可被覆盖的存储块时,将所述编码块的合并数据存入片外存储器;还用于在对所述编码块的合并数据进行CRC校验通过时,将所述编码块的合并数据所在的存储块对应的占用状态位设置为可覆盖。
所述判断单元中包括标签寄存器和标签比较器,其中:
所述片上存储器每个存储块还对应标签寄存器中的一标签,所述标签中保存所述存储块中存储的编码块的标识信息;
所述标签比较器,用于收到HARQ控制器的指示后,查找是否存在与所述编码块的标识信息对应的标签,将查找结果发送给数据合并处理单元;
所述数据合并处理单元,用于当标签寄存器中存在与所述编码块的标识信息对应的标签时,从所述标签对应的存储块中读取所述编码块的先前数据,将所述重传数据与所述先前数据进行合并;否则,从片外存储器中读取与所述重传数据对应的先前数据,将所述重传数据与所述先前数据进行合并。所述编码块的标识信息为编码块的进程号和编码块号。
所述HARQ控制器,还用于根据信道解码器对编码块的CRC校验结果设置所述编码块的CRC状态标识信息,还用于收到编码块的重传数据时,获取所述编码块的CRC状态标识信息,当所述CRC状态标识信息指示所述编码块通过CRC校验时,跳过所述编码块;否则,获取所述编码块的先前数据,将重传数据和先前数据进行合并处理。
所述HARQ处理器中还包括强制处理寄存器,用于保存一强制处理标识,该强制处理标识用于指示是否强制进行合并处理;
所述HARQ制器,用于当接收到编码块的重传数据时,获取所述强制处理标识,如果所述强制处理标识指示强制进行合并处理,则将所述重传数据和先前数据进行合并处理;否则,获取所述编码块的CRC状态标识信息,根据所述编码块的CRC状态标识信息判断是否将重传数据和先前数据进行合并处理。
图3是对HARQ的地址、TAG RAM、数据SRAM和SDRAM的描述。HARQ的CB块的物理地址的划分,其中Tag部分将存于Tag RAM中,数据存于数据RAM(SRAM或DDR/SDRAM)中,如图3中所示。
每个HARQ进程的CB块的物理地址可由HARQ进程号(process ID)、CB块号和CB块长度所组成。为了简化说明,假设给每个CB分配最大的CB块长度(下面我们可以看到,CB块的长度可以不同)。进程号(processID)、CB块号可构成构成CB的TAG。当CB块的数据存储在SRAM时,相应的TAG就存于TAG RAM中。当CB块的数据存储在片外SDRAM时,不需要TAG。
图4描述的是本发明的分层存储器的写控制逻辑。
步骤401,以接收的新数据为例,控制逻辑在处理一个编码块时,先查看占用状态位寄存器,判断片上SRAM中是否有可以被覆盖的存储块;
步骤402,如果有可被覆盖的存储块,说明找到了没有占用的位置,转入步骤403;如果SRAM上没有可以被覆盖的存储块,即片上SRAM所有存储块都被占用,转到步骤406;
步骤403,对应该HARQ process的CB块的高位地址被锁进标签寄存器中,并置相应占用状态位(CB_used)为1,表明SRAM的该存储块被占用。
步骤404,接收的软比特数据可以写入片上SRAM的对应存储块中,同时该数据也可以写到解码器(Turbo)的输入buffer中供解码使用。
步骤405,在解码器对该CB块的解码完成后,再进行CRC校验,在完成CRC校验之后,执行如下操作:
对编码块CRC状态寄存器(CB_CRC_Statu_Reg)相应的位进行置位,如果CRC通过,则设为0,如果CRC错误,则设为1;
对占用状态位(CB_used)进行更新:如CRC通过,则设为0,如果CRC错误,则设为1。
到此,该CB块的处理完成,可转到下个CB块的处理。
步骤406,进入此步,说明片上SRAM都已占用,该CB块的数据要写到WB(写buffer)中并由WB将数据打入外部DDR/SDRAM。CB块的数据还可以写到解码器(Turbo)的输入buffer中供解码使用。在解码器对该CB块的解码完成后,再进行CRC校验,在完成CRC校验之后,执行如下操作:
对编码块CRC状态寄存器(CB_CRC_Statu_Reg)相应的位进行置位,如果CRC通过,则设为0,如果CRC错误,则设为1。
到此,该CB块的处理完成,可转到下个CB块的处理。
图5描述的是本发明的分层存储器的读控制逻辑。以接收的重传数据为例,控制逻辑在处理一个编码块时,需要将新收到的数据和存储在存储器中先前接收的数据(简称先前数据)进行合并。控制电路先要查找先前数据是否在片上SRAM中,如果是,则从片上SRAM中读出该先前数据,否则,从外部DDR/SDRAM中读取该先前数据,步骤如下:
步骤501,接收到重传数据时,将当前CB块的高位地址同标签寄存器中各标签中存储的地址进行比较,如果能找到相同的地址(hit in the Tag寄存器,即标签命中),说明先前数据保存在片上SRAM中,否则,如果标签未命中(Tag miss),说明先前数据存在外部DDR/SDRAM中,
步骤502,根据比较结果输出Tag hit信号,该信号用于选择Mux、和从片上SRAM或外部DDR/SDRAM中读取的数据;
步骤503,如果Tag hit信号指示标签命中(Tag hit),从片上SRAM读取先前数据;
步骤504,如果Tag hit信号指示标签未命中(Tag miss),通过RB(ReadBuffer)从外部DDR/SDRAM读取先前数据;
步骤505,将重传数据和先前数据进行合并,合并后的数据要送解码器解码、并存放在存储器中,具体存储方法为:
当所述先前数据在片上存储器时,将所述编码块的合并数据存储到所述先前数据所在的存储块;
当所述先前数据在片外存储器时,查找片上存储器中是否存在可被覆盖的存储块,当存在可被覆盖的存储块时,将所述编码块的合并数据存入所述存储块并将所述存储块对应的占用状态位设置为不可覆盖;当不存在可被覆盖的存储块时,将所述编码块的合并数据存入片外存储器;
在对所述编码块的合并数据进行CRC校验通过时,将所述编码块的合并数据所在的存储块对应的占用状态位设置为可覆盖。
图6对本发明的分层存储器的控制作进一步描述。
对新数据,每个CB块都要处理;而对重传数据,CRC正确的CB块可以不用处理。新数据处理过程参见图4。对CB的重传数据(参见图5和图4)进行处理时,先查看编码块CRC状态寄存器(CB_CRC_Statu_Reg)的信息(该信息是由CRC模块传送过来的),如果该CB的CRC正确(比如CRC状态为0),该CB无需处理;CRC状态为0,说明上次CRC正确,无需处理;如果该CB的CRC错误(比如CRC状态为1),该CB块要进行处理。
还可以设计一个CB_Force寄存器,强制对重传的数据进行操作。当CB块相应的CB_Force设为1时,该CB块作为出错看待,即便是原来CRC正确的CB块也要再次处理。这可以用于所有CB块的CRC都正确,但传输块(TB)CRC不正确的特殊情况。在CB_Force为0时,该寄存器不起控制作用。
需要说明的是在实施过程中,片上SRAM的存储块大小可以是固定的,如取最大CB块的大小。这种做法可以简化设计,可以在CB开始处理时进行一次Tag的比较,而无需在每次读写时检查TAG,从而降低了这部分的功耗。
片上SRAM的存储块大小可以是不固定的,可根据CB块的大小来定,一般建议初始时进行存储块大小的定义,后续使用时沿用该设置,这样SRAM的存储空间的利用率高(甚至可以全部利用)。这种方法的缺点是在运行的过程中,由于当前进程的CB块的大小在变化,有时会出现这种情况:某个CB块在SRAM中只能保存部分数据(原来定义的存储块的大小小于当前CB块的大小),其另一部分将要存在外部SDRAM中,由于Tag的存在,这可以自动进行,所以处理上是没有问题的。因为在每次读写时都要对Tag进行比较来判断数据到底是(读、写)在哪个存储器中。这种方法可以充分利用SRAM。需要说明的是,不管是否使用片上SRAM,外部DDR/SDRAM中预留好每个HARQ进程的空间,以保证在SRAM中无法保存的数据,可存到外部DDR/SDRAM中。
图7用一个例子来描述CB块在片上SRAM和片外DDR/SDRAM中的情况。在先前分配的存储块的空间小于当前处理的CB块时,在片上SRAM中只能保留部分数据,其余数据可以写到片外DDR/SDRAM中。由于TAG的比较是实时进行的,每次读写时都会比较Tag值,当有相同TAG时,数据存取在片上SRAM中,否则在片外DDR/SDRAM中。由于可以在一开始就定义不同的存储块的长度,所对应的TAG的位宽可以是不同的,即标签可为编码块的进程号、编码块号和部分编码块长度。
其中,该情况下,接收到新数据或对合并数据进行存储时,查找片上存储器中是否存在可被覆盖的存储块:
当存在可被覆盖的存储块时,将所述编码块的部分数据存入所述存储块并将所述存储块对应的占用状态位设置为不可覆盖,将编码块的其余部分数据存入外部存储器中,在系统中给出编码块的数据是否全部存储在片上存储器中的指示;
当不存在可被覆盖的存储块时,将所述编码块的数据存入片外存储器;
接收到重传数据时:
如果TAG HIT,从片上存储器获取部分数据后,如果系统中指示编码块的数据仅部分存储在片上存储器中,则再从片外存储器获取另外部分数据;
如果TAG MISS,则直接从片外存储器获取数据。
上述各实施例中以对编码块进行CRC校验进行说明,使用其他校验方式时,本发明同样适用。
本发明所针对的数据针对信息处理顺序的不同可以是解速率匹配之前和之后的数据。该发明适合于用硬件实现HARQ,且该硬件实现的HARQ是可以含有可编程或不可编程控制部件。