发明内容
本公开的目的在于提供一种存储器和命令序列处理系统,进而至少在一定程度上克服采集命令序列不准确且费用高的问题。
根据本公开的第一方面,提供了一种存储器,包括:解码单元,用于接收外部芯片发送的命令序列,并对命令序列进行解码,以生成命令序列的解码数据;编码单元,用于对命令序列的解码数据进行编码输出;其中,命令序列为外部芯片访问存储器时向存储器发送的数据。
可选地,编码单元还用于采用与存储器的类型对应的编码方式对命令序列的解码数据进行编码输出。
可选地,存储器还包括:缓冲单元,与编码单元连接,缓冲单元用于接收编码单元输出的编码数据,并将编码数据输出。
可选地,存储器还包括:多个空脚,与缓冲单元连接,多个空脚用于将编码数据输出;其中,空脚的数量与编码数据的位宽相同。
可选地,存储器还包括:多个预留焊盘,用于形成多个管脚,以便编码数据通过多个管脚输出;其中,预留焊盘的数量与编码数据的位宽相同。
可选地,存储器还包括空脚和预留焊盘;其中,编码数据通过空脚和基于预留焊盘形成的管脚输出,空脚与预留焊盘的数量之和与编码数据的位宽相同。
根据本公开的第二方面,提供了一种命令序列处理系统,包括:外部芯片,用于在访问存储器时向存储器发送命令序列;存储器,用于对命令序列进行解码以得到命令序列的解码数据,并对命令序列的解码数据进行编码以得到命令序列的编码数据;数据采集端,用于对存储器输出的命令序列的编码数据进行采集。
可选地,存储器包括:解码单元,用于接收外部芯片发送的命令序列,并对命令序列进行解码,以生成命令序列的解码数据;编码单元,用于接收解码单元输出的命令序列的解码数据,并对命令序列的解码数据进行编码输出。
可选地,编码单元还用于采用与存储器的类型对应的编码方式对命令序列的解码数据进行编码输出。
可选地,数据采集端还用于在对命令序列的编码数据进行采集之后,利用预先获取的与存储器的类型对应的编码方式对命令序列的编码数据进行解码,并输出解码结果。
可选地,存储器还包括:缓冲单元,与编码单元连接,缓冲单元用于接收编码单元输出的编码数据,并将编码数据输出。
可选地,存储器还包括:多个空脚,与缓冲单元连接,多个空脚用于将编码数据输出;其中,空脚的数量与编码数据的位宽相同。
可选地,存储器还包括:多个预留焊盘,用于形成多个管脚,以便编码数据通过多个管脚输出;其中,预留焊盘的数量与编码数据的位宽相同。
可选地,存储器还包括空脚和预留焊盘;其中,编码数据通过空脚和基于预留焊盘形成的管脚输出,空脚与预留焊盘的数量之和与编码数据的位宽相同。
在本公开的一些实施例所提供的技术方案中,在存储器中配备编码单元,将存储器接收到的命令序列重新输出,由此无需昂贵的逻辑分析仪来采集命令序列,降低了成本,并且避免了逻辑分析仪采集数据不准确的问题。另外,对命令序列的解码是存储器的固有功能,精确度高,因而重新编码后输出的电路开销少。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、电路结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的组元、装置、器件等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
除非另有定义,本文所使用的所有的技术和科学术语与属于本公开的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本公开实施例的目的,不是旨在限制本公开。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
DRAM作为标准器件,可以搭配各种不同的SOC进行使用。虽然DRAM接口的协议和状态机通常是标准的,但是SOC的存储器控制器在访问DRAM时,命令序列的差异非常大。其中,本公开实施方式所说的命令序列可以指在操作周期内SOC发出的命令构成的序列,可以是以字节为基本单位并顺序拼接形成的线性的队列。
例如,LPDDR5搭配一些SOC使用时,会发现在待机阶段命令序列差异较大,一些SOC以进入掉电模式(PD模式)为主,另一些SOC以进入自刷新模式(SRE模式)为主。
参考图1,针对一些SOC,可以响应自刷新进入命令SRE从待机模式(或称为空闲模式、Idle模式)进入自刷新模式,以及响应自刷新退出命令SRX退出自刷新模式;针对另一些SOC,可以响应掉电进入命令PDE从待机模式进入掉电模式,以及响应掉电退出命令PDX退出掉电模式。
其中,自刷新模式可以指DRAM的内部计数器在没有外部命令的情况下执行刷新操作的模式。掉电模式可以是利用比自刷新模式更少的功率执行自刷新操作的模式,例如,掉电模式可以是被提供用于在执行存储器的自刷新操作时降低功耗的模式。
当DRAM与SOC出现兼容性问题(如读写失败、读写数据错误等)时,通常需要对SOC发送的命令序列进行分析,以找出不同SOC之间的差异。而对命令序列进行分析的前提是要采集到命令序列,如何准确且低成本地获取到命令序列成为整个分析过程的关键问题。
参考图2,在一些获取命令序列的方案中,在外部芯片21与存储器22之间可以配置逻辑分析仪23,该逻辑分析仪23通常为独立于外部芯片221和存储器22的设备,可以通过逻辑分析仪23抓取命令序列,以进行解码分析。其中,该外部芯片21即为上述系统级芯片SOC。
然而,一方面,逻辑分析仪23的探头插在外部芯片21与存储器22中间,当存储器22的接口速率较高时,探头可能无法准确抓取到命令序列中数据,造成数据丢失、数据错误等问题,命令序列采集准确度差。另一方面,对于多个时钟周期(clock cycle)的命令,逻辑分析仪23上解码软件的解析能力差。又一方面,逻辑分析仪23价格昂贵,成本大。
为了提高采集命令序列的准确度并降低成本,本公开实施方式提供了一种新的命令序列采集方案。
图3示意性示出了根据本公开示例性实施方式的命令序列处理系统的方框图。参考图3,命令序列处理系统可以包括外部芯片31、存储器32和数据采集端33。
外部芯片31可以用于在访问存储器32时向存储器32发送命令序列。应当理解的是,向存储器32发送的该命令序列是经编码后的数据。本公开实施方式对外部芯片31的类型不做限制,可以是任何与存储器32进行读或写操作的芯片。
存储器32与外部芯片31连接,存储器32作为命令序列的接收端,可以用于对命令序列进行解码,以得到命令序列的解码数据。为了使该命令序列被检测到,存储器32还可以对命令序列的解码数据进行编码,以得到命令序列的编码数据。可以理解的是,存储器32针对命令序列的解码数据进行编码的操作又可被称为针对命令序列的重编码操作。
数据采集端33可以与存储器32连接,可以是独立于外部芯片31和存储器32而配置的设备。数据采集端33可以用于对存储器32输出的命令序列的编码数据进行采集。数据采集端33可以被配置为高速示波器、FPGA(Field Programmable Gate Array,可编程阵列逻辑)、ADC(Analog to Digital Converter,模数转换器)、SOC等形式,从而可以确定出命令序列对应的行为模式,以在DRAM与发出命令序列的SOC出现兼容性问题,可以确定出现兼容性问题的原因。
参考图4,本公开实施方式的存储器32可以包括解码单元41、编码单元42和缓冲单元43。
解码单元41可以用于接收外部芯片31发送的命令序列,并对命令序列进行解码,以生成命令序列的解码数据。
编码单元42可以与解码单元41连接,编码单元42可以用于接收解码单元41输出的命令序列的解码数据,并对命令序列的解码数据进行编码输出。
缓冲单元43可以与编码单元42连接,缓冲单元43可以用于接收编码单元42输出的编码数据,并将编码数据输出。缓冲单元43可以用于数据的缓冲,其可以包括至少一个缓冲器,本公开对缓冲单元43的具体电路结构不做限制。
本公开实施例对解码单元41、编码单元42和缓冲单元43在存储器32中的位置不做限制。就基于数据传输路径而确定的单元之间的连接关系而言,编码单元42和缓冲单元43可以配置在解码单元41和控制逻辑(control logic)单元之后。另外,编码单元42和缓冲单元43还可以被配置成一个处理单元,用于将命令序列重新编码后输出给测试设备。
具体的,解码单元41对命令序列进行解码是存储器的固有功能,本公开对此不做限制。
编码单元42可以采用与存储器32的类型对应的编码方式对命令序列的解码数据进行编码输出。也就是说,不同类型的存储器32,编码单元42执行的编码方式可能存在差异。其中,对于DRAM来说,存储器的类型可以包括DDR、DDR2、DDR3、DDR4、DDR5、DDR6、LPDDR、LPDDR2、LPDDR3、LPDDR4、LPDDR5、LPDDR6等,本公开对此不做限制。另外,这些编码方式可以预先告知用户。
可以预先构建存储器类型与命令编码方式的映射关系表,由用户保存,以便在确定出存储器类型的基础上可以直接利用该映射关系表确定出编码方式。可以理解的是,对于确定的存储器而言,其类型是已知的,可以将与其对应的编码方式固化在编码单元42中,以便编码单元42可以直接利用该编码方式对命令序列的解码数据进行编码。
图5示出了以LPDDR5为例的命令编码方式。参考图5,可以采用5位的编码[4:0]来对命令进行编码,5位的编码可以实现2的5次方(共计32)个对应方式。图5给出了LPDDR5中30个命令对应的编码结果。例如,对于命令MPC5,可以采用13作为编码;又例如,对于命令PRE,可以采用29作为编码,等等。应当理解的是,图5所示的编码方式仅是示例性的表示,本公开对此不做限制。
可以理解的是,命令编码方式可以由计算机自动生成,例如,计算机在确定出存储器的命令数量的情况下,可以生成数量与该命令数量对应的编码,并将编码与命令一一对应。在一个实施例中,可以直接将计算机生成的命令编码方式进行存储。在另一个实施例中,可以将编码与命令一一对应的结果以可编辑的方式呈现给用户,以便用户查看及调整,并将经由用户手动调整后的命令编码方式进行存储。
根据本公开的一些实施例,编码单元42执行的编码过程可以与解码单元41执行的解码过程不对应,也就是说,本公开实施例对命令序列进行重编码的方式是独立进行的过程,不依赖于原本命令序列的编解码操作。
根据本公开的另一些实施例,编码单元42执行的编码过程可以与解码单元41执行的解码过程对应,也就是说,本公开实施例编码单元42可以采用与解码单元41的解码方式对应的编码方式对命令序列的解码数据进行编码。
编码单元42的编码方式可以预先传递给数据采集端33。数据采集端33在对命令序列的编码数据进行采集之后,可以利用预先获取的与存储器32的类型对应的该编码方式对命令序列的编码数据进行解码,并输出解码结果。例如,基于13解码出命令MPC5,基于29解码出命令PRE,等等。
考虑到标准的存储器芯片未配备有用于输出命令序列的编码数据的管脚,本公开提供了一些用于输出命令序列的编码数据的方式。
根据本公开的一些实施例,存储器32可以包括多个空脚(即NC管脚),空脚为存储器芯片上未使用的处于悬空状态的管脚。在这种情况下,可以将这些空脚与缓冲单元43连接,这些空脚用于将命令序列的编码数据输出。其中,所用空脚的数量与编码数据的位宽相同。
图6示意性示出了LPDDR5 315B封装每个通道(channel)上有6个空脚的实施场景,对于如图5所示的采用5位的编码[4:0]来对命令进行编码的场景,可以采用这6个空脚(图中NC管脚)中的5个空脚来实现命令序列的编码数据的输出。
例如,可以从这6个空脚中随机确定5个空脚来进行命令序列的编码数据的输出。又例如,可以人为选择5个空脚,并将这5个空脚固化为用于输出命令序列的编码数据的管脚。
根据本公开的另一些实施例,存储器32可以包括多个预留焊盘(pad)。正常使用时这些焊盘不焊锡球,不与主板导通。可以利用这些预留焊盘形成多个管脚,以便命令序列的编码数据通过这些有预留焊盘形成的管脚输出。其中,所用预留焊盘的数量与编码数据的位宽相同。
图7示意性示出了本公开实施例的预留焊盘的示意图。参考图7,可以利用未定义的5个预留焊盘来实现如上述5位的编码数据的输出。
可以理解的是,在空脚数量不足时,可以利用预留焊盘来实现本公开输出命令序列的编码数据的目的。
根据本公开的又一些实施例,可以结合空脚和预留焊盘来输出命令序列的编码数据。具体的,存储器32可以包括空脚和预留焊盘,命令序列的编码数据可以通过空脚和基于预留焊盘形成的管脚输出,空脚与预留焊盘的数量之和与编码数据的位宽相同。例如,对于如图5所示的采用5位的编码[4:0]来对命令进行编码的情况,如果存储器芯片上仅有3个空脚,则可以在利用3个空脚的情况下,再利用2个预留焊盘形成的管脚,以实现命令序列的编码数据的输出。
然后,缓冲单元43可以将命令序列的编码数据输出给用户,用户可以通过数据采集端33采集存储器32的命令序列,从而可以确定出命令序列对应的行为模式,以在DRAM与发出命令序列的SOC出现兼容性问题的情况下,可以确定出现兼容性问题的原因。本公开对分析命令序列的行为模式以及确定出现兼容性问题的原因的过程不做限制。
基于上述命令序列处理系统,一方面,将存储器接收到的命令序列重新输出,不存在高速接口上信号速率过快导致逻辑分析仪无法采集数据的问题;另一方面,本公开方案无需昂贵的逻辑分析仪来采集命令序列,降低成本的同时不存在逻辑分析仪解码软件解析能力差的问题;再一方面,对命令序列的解码是存储器的固有功能,精确度高,因而重新编码后输出的电路开销少。
进一步的,本公开实施方式还提供了一种新的存储器。对于DRAM来说,本公开实施方式的存储器不仅可以符合DDR、DDR2、DDR3、DDR4、DDR5、DDR6等内存规格,还可以符合LPDDR、LPDDR2、LPDDR3、LPDDR4、LPDDR5、LPDDR6等内存规格,本公开对此不作任何限定。
存储器可以包括编码单元,编码单元可以用于对命令序列的解码数据进行编码输出。其中,命令序列为外部芯片访问存储器时向存储器发送的数据,命令序列的解码数据为存储器对命令序列进行解码后得到的数据。
也就是说,存储器从外部芯片接收到的命令序列的编码数据可以记为命令序列的第一编码数据,存储器可以对命令序列的第一编码数据进行解码以得到命令序列的解码数据,再通过上述编码单元对命令序列的解码数据进行编码,以得到命令序列的第二编码数据。在一些实施例中,第一编码数据与第二编码数据的编码方式不同。在另一些实施例中,第一编码数据与第二编码数据的编码方式可以相同。
上述编码单元可以采用与存储器的类型对应的编码方式对命令序列的解码数据进行编码输出。也就是说,可以根据存储器的类型来配置编码单元,以使编码在最大程度上与存储器自身适配,提高数据利用率。
对于DRAM来说,存储器的类型可以包括DDR、DDR2、DDR3、DDR4、DDR5、DDR6、LPDDR、LPDDR2、LPDDR3、LPDDR4、LPDDR5、LPDDR6等,本公开对此不做限制。另外,这些编码方式可以预先告知用户。
可以预先构建存储器类型与编码方式的映射关系表,由用户保存,以便在确定出存储器类型的基础上可以直接利用该映射关系表确定出编码方式。可以理解的是,对于确定的存储器而言,其类型是已知的,可以将与其对应的编码方式固化在编码单元中,以便编码单元可以直接利用该编码方式对命令序列的解码数据进行编码。
可以理解的是,命令编码方式可以由计算机自动生成,例如,计算机在确定出存储器的命令数量的情况下,可以生成数量与该命令数量对应的编码,并将编码与命令一一对应。在一个实施例中,可以直接将计算机生成的命令编码方式进行存储。在另一个实施例中,可以将编码与命令一一对应的结果以可编辑的方式呈现给用户,以便用户查看及调整,并将经由用户手动调整后的命令编码方式进行存储。
存储器还可以包括缓冲单元,该缓冲单元可以与编码单元连接,该缓冲单元可以用于接收编码单元输出的编码数据,并将编码数据输出。
考虑到标准的存储器芯片未配备有用于输出命令序列的编码数据的管脚,本公开提供了一些用于输出命令序列的编码数据的方式。
根据本公开的一些实施例,存储器可以包括多个空脚(即NC管脚),空脚为存储器芯片上未使用的处于悬空状态的管脚。在这种情况下,可以将这些空脚与缓冲单元连接,这些空脚用于将命令序列的编码数据输出。其中,所用空脚的数量与编码数据的位宽相同。
在存储器包含的空脚数量大于编码所需空脚数量的情况下,可以从存储器包含的空脚中随机确定出编码所需空脚数量的空脚来进行命令序列的编码数据的输出。另外,还可以在人为选择空脚之后,将这些选择出的空脚固化为用于输出命令序列的编码数据的管脚。
根据本公开的另一些实施例,存储器可以包括多个预留焊盘(pad)。正常使用时这些焊盘不焊锡球,不与主板导通。可以利用这些预留焊盘形成多个管脚,以便命令序列的编码数据通过这些有预留焊盘形成的管脚输出。其中,所用预留焊盘的数量与编码数据的位宽相同。
可以理解的是,在空脚数量不足时,可以利用预留焊盘来实现本公开输出命令序列的编码数据的目的。
根据本公开的又一些实施例,可以结合空脚和预留焊盘来输出命令序列的编码数据。具体的,存储器可以包括空脚和预留焊盘,命令序列的编码数据可以通过空脚和基于预留焊盘形成的管脚输出,空脚与预留焊盘的数量之和与编码数据的位宽相同。
此外,存储器还可以包括解码单元,该解码单元用于接收外部芯片发送的命令序列,并对命令序列进行解码,以生成命令序列的解码数据。解码单元对命令序列进行解码是存储器的固有功能,本公开对此不做限制。
本公开实施方式通过在存储器中配置编码单元,一方面,将存储器接收到的命令序列重新输出,不存在高速接口上信号速率过快导致逻辑分析仪无法采集数据的问题;另一方面,本公开方案无需昂贵的逻辑分析仪来采集命令序列,降低成本的同时不存在逻辑分析仪解码软件解析能力差的问题;再一方面,对命令序列的解码是存储器的固有功能,精确度高,因而重新编码后输出的电路开销少。
进一步的,本公开实施方式还提供了一种命令序列处理方法。
具体的,本公开实施方式的命令序列处理方法可以包括:对命令序列的解码数据进行编码输出。其中,命令序列为外部芯片访问存储器时向存储器发送的数据,命令序列的解码数据为存储器对命令序列进行解码后得到的数据。
根据本公开的示例性实施例,可以采用与存储器的类型对应的编码方式对命令序列的解码数据进行编码输出。其中,可以预先构建存储器的类型与编码方式的一一对应关系,在确定出存储器的类型的情况下,可以利用该对应关系确定出编码方式。应当理解的是,对于确定的存储器,其类型是已知的,可以将与其对应的编码方式配置在与该存储器对应的编码单元内,以便直接利用该编码方式对命令序列的解码数据进行编码。
根据本公开的示例性实施例,在存储器芯片包含空脚的情况下,可以通过存储器芯片包含的空脚将命令序列的编码数据输出。其中,所用空脚的数量与编码数据的位宽相同。如针对编码[4:0]的编码方式,可以利用5个空脚来实现命令序列的编码数据的输出。在存储器芯片包含空脚数量大于编码所需空脚数量下,可以从存储器包含的空脚中随机确定出编码所需空脚数量的空脚来进行命令序列的编码数据的输出。
根据本公开的示例性实施例,在存储器芯片包含多个预留焊盘的情况下,可以通过存储器芯片的多个预留焊盘形成多个管脚,以便命令序列的编码数据通过这些管脚输出。其中,预留焊盘的数量与命令序列的编码数据的位宽相同。如针对编码[4:0]的编码方式,可以借助于5个预留焊盘来实现命令序列的编码数据的输出。在存储器芯片包含的预留焊盘数量大于编码所需焊盘数量下,可以从存储器包含的预留焊盘中随机确定出编码所需焊盘数量的预留焊盘来进行命令序列的编码数据的输出。
根据本公开的示例性实施例,在存储器包括空脚和预留焊盘的情况下,命令序列的编码数据通过空脚和基于预留焊盘形成的管脚输出,空脚与预留焊盘的数量之和与编码数据的位宽相同。
本领域技术人员在考虑说明书及实践这里公开的内容后,将容易想到本公开的其他实施例。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限。