用于提供多用户节电码本优化的系统和方法_2

文档序号:9893844阅读:来源:国知局
非内核功率。如本领域已知的,内核存储器阵列功率指代用于保留内核存储器阵列124中的所有数据并且管理泄露和更新操作的功率。非内核功率指代用于将所有数据传入或传出存储器设备、感测放大器并且管理外围逻辑单元、复用器、内部总线、缓冲器、输入/输出(I/O)驱动器和接收机的功率。编码器108通过经由例如基于熵的压缩来减小存储器数据输入的数据活动因子,来降低非内核功率。
[0034]DRAM存储器系统104中的动态或非内核功率可以由公式I来表示:
[0035]动态功率= kCV2f*密度,其中:
[0036]k =数据活动因子
[0037]C =负载电容
[0038]V=电压
[0039]f =频率或切换速率
[0040]密度=以千兆字节为单位的总容量(GB)
[0041 ]公式 I
[0042]数据活动因子k可以被定义为在固定时段内的O到I的切换或转变的数量。例如,在I比特8节拍序列01010101中,k = 0.5。到DRAM存储器系统104的最小访问被称为一个DRAM最小访问长度(MAL)事务。对于32比特并行LPDDR3 DRAM总线,MAL = 32比特*8节拍= 256比特=32字节(8节拍、32比特宽度hMAC事务可以连续地、紧接地发生。
[0043]因为密度和频率需求在增长,所以减小非内核功率要求:减小负载电容,降低电压,逐节拍地最小化针对每个比特的k,或逐MAL地最小化针对每个比特的k。用于降低非内核功率的现有的方法通常涉及降低操作电压、减小负载电容,或每当不要求性能时暂时地减小操作频率(其未能解决苛求带宽密集型使用情况)。已经针对特定类型的数据(诸如使用图像压缩的显示帧缓冲器)提出了对减小数据活动因子k的尝试。然而,这典型地在源(例如,显示硬件引擎)处执行。然而,这样的解决办法是非常专用的并且受限于这种类型的显示数据,这种类型的显示数据典型地占总DRAM使用的相对小的百分比。
[0044]图1的系统100可以通过减小所有存储器客户端106的存储器数据输入的数据活动因子k,来节省或优化整个DRAM存储器系统104的非内核功耗。SoC 102和DRAM存储器系统104经由一个或多个连接、接口或总线来进行通信。在图1的实施例中,SoC 102包括物理层或输入/输出设备(?取/10)11(^、11013和110(3。01^1存储器系统104包括?!^/10 112a、112b和112C(3PHY/10 11(^和?取/10 112a经由连接114耦合,所述连接114可以包括用于传送元数据压缩比特(被称为“c比特”)以指示数据是否已经被压缩的通道。PHY/10 IlOb和ΡΗΥ/Ι0112b经由连接116耦合,所述连接116可以包括η比特数据总线。PHY/10 IlOc和PHY/10 112c经由连接118耦合,所述连接118可以包括控制/地址总线。
[0045]在操作中,来自SoC 102内的存储器客户端106的存储器数据经过编码器108。编码器108可以经由例如用于压缩和补零数据的简化的霍夫曼(Huffman)方案来压缩存储器数据,所述存储器数据随后被经由连接114和116提供给DRAM存储器系统104 ARAM存储器系统104将数据接收到ΡΗΥ/Ι0设备112a、112b和/或112c。外围接口 120将所压缩的数据提供给解码器122,所述解码器122被配置为将数据反变换回原始的未经压缩的形式,并且随后被存储到内核存储器阵列124。应当认识到的是,DRAM存储器系统104可以包括任意数量的为任何期望类型、大小和配置的存储器的DRAM存储器设备。
[0046]图2示出了在SoC 102和DRAM存储器系统104之间的示例性32比特并行LPDDR3DRAM总线116。在该实施例中,用于示例性的目的,MAL事务204包括针对时钟202的8节拍(即,t = 0、l、2、3、4、5、6、7)的32比特。每个MAL = 32比特*8节拍= 256比特=32字节。编码器108通过压缩每个MAL事务204来减小数据活动因子k。图3示出了 MAL事务204的示例性编码示例。未经压缩的数据302可以经由例如基于熵的压缩来处理以产生经压缩的数据304。未经压缩的数据302可以包括例如32字节的原始未经压缩的数据。在编码器108中体现的压缩算法可以将未经压缩的数据302压缩为例如16字节,跟在其后的是由被灰化的节拍(S卩,t =
4、5、6、7)表示的补零,由此减小了与MAL事务204相关联的数据活动因子k。
[0047]图4示出了由图1的系统100实现的用于减小DRAM存储器系统104的非内核功率的方法400。在框402处,编码器108从位于SoC 102上的、用于访问DRAM存储器系统104的一个或多个存储器客户端106接收存储器数据。在框404处,编码器108通过根据压缩方案来编码所接收的存储器数据,来减小由所接收的存储器数据定义的数据活动因子k。在一个实施例中,以逐MAL地为基础减小数据活动因子k。应当认识到的是,可以实现压缩方案的各种实施例。在一个实施例中,压缩方案包括经由例如具有补零的简化的霍夫曼方案的基于熵的压缩。在框406处,所编码或压缩的存储器数据被提供给DRAM存储器系统104。如下文更加详细的描述的,编码器108可以包括用于评估用于每个MAL的压缩算法的有效性的逻辑单元。以这种方式,编码器108可以生成压缩或C比特来标识数据是否已经被压缩。在框408处,DRAM存储器系统104中的解码器122可以根据压缩方案,来将所编码的存储器数据解码为原始的所接收的存储器数据。以这种方式,DRAM存储器系统104的非内核功率可以被有选择地降低,以适应较低功率使用情况。
[0048]图5示出了可以由编码器108实现的基于熵的编码算法的实施例。霍夫曼编码方案可以包括用于编码源符号的码表。码表可以包括基于发生的经估计的概率的预定数量的源符号。简化的霍夫曼树500可以体现要被压缩的最频繁的符号或“模式”。在一个实施例中,算法以每字节为基础来操作。如果与存储器数据相关联的源符号或模式(例如,MAL节拍)与在霍夫曼树500的左半部上的“树叶”中的任何“树叶”相匹配,那么发生字节压缩。应当认识到的是,在附图中,前缀“Ox”表示其后为十六进制(hex)数位,而后缀“b”表示前面为二进制数位(比特)。框504表示将模式“00”十六进制与码字(CW=Olb)匹配。框506表示将模式“FF”十六进制与码字(CW = OOlb)匹配。框508表示将模式“0F”十六进制与码字(CW = OOOlb)匹配。框510表示模式将“F0”十六进制与码字(CW = OOOOlb)匹配。框512表示将模式“55”十六进制与码字(CW=OOOOOlb)匹配。框514表示将模式“AA”十六进制与码字(CW=OOOOOOb)匹配。应当认识到的是,可以对模式编程。如在图5中进一步示出的,如果不存在匹配,那么霍夫曼树的右半部可能遭受每字节一额外比特惩罚。例如,框502示出模式“XX”可能遭受一比特惩罚并且是利用码字(CW=lb+0x“XX”)来编码的,这产生了9比特的码字长度。
[0049]图6示出了针对使用霍夫曼树500来压缩的MAL事务的第一压缩使用情况的示例。未经压缩的MAL 602包括32字节的原始数据。8个节拍中的每个节拍包括源模式“00”十六进制,其可以是利用码字(CW = Olb)来编码的。在该“最好情况”示例中,作为结果的经压缩的MAL 604包括经压缩的8个字节,其后跟有补零。在图6的示例中,未经压缩的MAL 602中的行中的每行表示源模式“00”。未经压缩的MAL 602中的每行是利用对应的码字(CW=Olb)来编码的。经压缩的MAL 604表示对未经压缩的MAL602中的每行进行编码的结果。
[0050]图7示出了“最坏情况”示例,其中未经压缩的MAL702中的每个节拍包括源模式“XX”十六进制,其不被压缩并且遭受每字节一额外比特惩罚。作为结果的经压缩的MAL 704包括36个字节。在图7的示例中,未经压缩的MAL 702中的行中的每行表示源模式“XX”。经压缩的MAL 704表示对未经压缩的MAL 702中的每行进行编码的结果。换句话说,每个源模式“XX”利用码字(CW=lb+0xXX)来编码。在该示例中,在压缩产生较大大小的情况下,编码器108可以发送未经压缩的数据702,而不发送经压缩的数据704。在这点上,应当认识到的是,编码器108可以生成额外的压缩或C比特,以定义数据是否被压缩。
[0051]在某些实施例中,C比特可以被单独地发送(例如,经由图1的接口114)并且被存储在DRAM存储器系统104中的单独的存储器设备中。在其它实施例中,C比特可以与在数据总线(例如,图1的接口 116)上发送的数据级联,并且被存储在相同的DRAM芯片中。应当进一步认识到的是,C比特可以仅用于接口,而不需要将其存储在DRAM存储器系统104中。如果没有将C比特存储在DRAM存储器中,那么在一实施例中,解码器122可以并入到每个存储器中,如图1所示。如果将C比特存储在DRAM存储器中,那么应当认识到的是,在一实施例中,额外的DRAM空间可以用于存储例如针对数据的每个32字节的I个C比特,并且解码器122可以位于SoC 102中,而不是位于DRAM存储器系统104中。
[0052]可以利用用于使用例如在系统100内的客户端或外部组件(诸如,例如基于云的服务器)上运行的优化程序来分析压缩系数集合(即,C比特)统计的有效
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1