本申请涉及集成电路领域,具体地,涉及降低集成电路引脚引起的功耗。
背景技术
参看图1,展示了存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如sata(serialadvancedtechnologyattachment,串行高级技术附件)、scsi(smallcomputersysteminterface,小型计算机系统接口)、sas(serialattachedscsi,串行连接scsi)、ide(integrateddriveelectronics,集成驱动器电子)、usb(universalserialbus,通用串行总线)、pcie(peripheralcomponentinterconnectexpress,pcie,高速外围组件互联)、nvme(nvmexpress,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个nvm(非易失存储器,non-volatilememory)芯片105以及dram(dynamicrandomaccessmemory,动态随机访问存储器)110。nand闪存、相变存储器、feram(ferroelectricram,铁电存储器)、mram(magneticrandomaccessmemory,磁阻存储器)、rram(resistiverandomaccessmemory,阻变存储器)等是常见的nvm。接口103可适配于通过例如sata、ide、usb、pcie、nvme、sas、以太网、光纤通道等方式与主机交换数据。控制部件104用于控制在接口103、nvm芯片105以及固件存储器110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。可通过软件、硬件、固件或其组合的多种方式实现控制部件104。控制部件104可以是fpga(field-programmablegatearray,现场可编程门阵列)、asic(applicationspecificintegratedcircuit,应用专用集成电路)或者其组合的形式。控制部件104也可以包括处理器或者闪存控制器,在处理器或闪存控制器中执行软件来操纵控制部件104的硬件来处理io命令。控制部件104还耦合到dram110,并可访问dram110的数据。在dram可存储ftl表和/或缓存的io命令的数据。
控制部件104包括闪存控制器(或称为闪存通道控制器,介质接口控制器)。闪存控制器耦合到nvm芯片105,并以遵循nvm芯片105的接口协议的方式向nvm芯片105发出命令,以操作nvm芯片105,并接收从nvm芯片105输出的命令执行结果。nvm芯片105的接口协议包括“toggle”、“onfi”等现有技术的接口协议或标准。
在toggle/onfi等接口协议中定义了操作nvm芯片的多种时序与命令。nvm芯片厂商还为nvm芯片提供了不同的私有命令或扩展命令,使得闪存控制器为适配不同厂商、不同规格的nvm芯片,需要花费高昂的代价来开发。
在中国专利申请cn201610009789.6与cn201510253428.1中提供了用于闪存接口控制器的微指令执行方法与装置,中国专利申请cn201610861793.5提供了微指令序列的调度方法与装置,中国专利申请cn201611213754.0提供了io命令处理方法与固态存储设备,中国专利申请cn201611213755.5提供了大容量nvm接口控制器,将其全文合并于此。
在公开号为cn107783917a的中国专利申请中,提供了通过执行微指令在nvm芯片的控制管脚上产生控制信号,生成操作nvm芯片的命令,使单一闪存控制器兼容不同厂商、不同规模的nvm芯片。将其全文合并于此。
技术实现要素:
控制部件通过多个引脚向nvm芯片提供控制信号与数据信号来实现控制部件与nvm芯片之间的通信。两个芯片之间(如nvm芯片与控制部件之间)进行通信时,并不是任何时刻所有信号都是必须的。
根据本申请的实施例,区分芯片间通信的各个阶段内引脚的工作状态,使无需通信的引脚处于关电状态,而使要进行通信的引脚处于开电状态,以降低芯片引脚上的功耗。
根据本申请的第一方面,提供了根据本申请第一方面的第一集成电路的功耗控制方法,包括:依据第一阶段在一个或多个第一引脚上无须通信而确定一个或多个第一引脚在第一阶段为关电状态;响应于在第一阶段一个或多个第一引脚为关电状态而在第一阶段切断一个或多个第一引脚的信号传输。
根据本申请的第一方面的第一功耗控制方法,提供了根据本申请第一方面的第二功耗控制方法,其中,还包括:依据第二阶段在一个或多个第二引脚上要进行通信确定一个或多个第二引脚为开电状态;响应于在第二阶段一个或多个第二引脚为开电状态而在第二阶段允许一个或多个第一引脚的信号传输。
根据本申请的第一方面的第一或第二功耗控制方法,提供了根据本申请第一方面的第三功耗控制方法,其中,响应于进入闪存命令的命令周期,确定片选信号引脚、命令锁存信号引脚、地址锁存信号引脚、写使能信号引脚以及数据总线信号引脚为开电状态。
根据本申请的第一方面的第一至第三中任一项的功耗控制方法,提供了根据本申请第一方面的第四功耗控制方法,其中,响应于进入闪存命令的命令周期,确定数据选通信号引脚和/或读使能信号引脚为关电状态。
根据本申请的第一方面的第一至第三中任一项的功耗控制方法,提供了根据本申请第一方面的第五功耗控制方法,其中,响应于进入闪存命令的命令周期,确定读使能信号引脚和/或数据选通信号引脚为开电状态,并保持读使能信号引脚和/或数据选通信号引脚的输出为高电平状态。
根据本申请的第一方面的第一至第五中任一项的功耗控制方法,提供了根据本申请第一方面的第六功耗控制方法,其中,响应于进入编程命令的数据周期,确定片选信号引脚、数据选通信号引脚以及数据总线信号引脚为开电状态。
根据本申请的第一方面的第一至第六中任一项的功耗控制方法,提供了根据本申请第一方面的第七功耗控制方法,其中,响应于进入编程命令的数据周期,确定命令锁存信号引脚、地址锁存信号引脚、写使能信号引脚为关电状态。
根据本申请的第一方面的第一至第七中任一项的功耗控制方法,提供了根据本申请第一方面的第八功耗控制方法,其中,响应于进入编程命令的数据周期,确定读使能信号引脚为关电状态。
根据本申请的第一方面的第一至第七中任一项的功耗控制方法,提供了根据本申请第一方面的第九功耗控制方法,其中,响应于进入编程命令的数据周期,确定读使能信号引脚为开电状态,并使读使能信号引脚的输出为高电平状态。
根据本申请的第一方面的第一至第九中任一项的功耗控制方法,提供了根据本申请第一方面的第十功耗控制方法,其中,响应于进入读命令的数据周期,确定片选信号引脚、数据选通信号引脚以及数据总线信号为开电状态。
根据本申请的第一方面的第一至第十中任一项的功耗控制方法,提供了根据本申请第一方面的第十一功耗控制方法,其中,响应于进入读命令的数据周期,确定命令锁存信号引脚、地址锁存信号引脚、读使能信号引脚为关电状态。
根据本申请的第一方面的第一至第十一中任一项的功耗控制方法,提供了根据本申请第一方面的第十二功耗控制方法,其中,响应于进入读命令的数据周期,确定写使能信号引脚为关电状态。
根据本申请的第一方面的第一至第十一中任一项的功耗控制方法,提供了根据本申请第一方面的第十三功耗控制方法,其中,响应于进入读命令的数据周期,确定写使能信号引脚为开电状态,并使写使能信号引脚的输出为高电平状态。
根据本申请的第一方面的第一至第十三中任一项的功耗控制方法,提供了根据本申请第一方面的第十四功耗控制方法,其中,响应于数据总线空闲,确定片选信号引脚之外的引脚为关电状态。
根据本申请的第一方面的第一至第十三中任一项的功耗控制方法,提供了根据本申请第一方面的第十五功耗控制方法,其中,响应于数据总线空闲,确定全部引脚为关电状态,并使片选信号引脚的输出为高电平状态。
根据本申请的第一方面的第一至第十五中任一项的功耗控制方法,提供了根据本申请第一方面的第十六功耗控制方法,其中,依据在第三阶段一个或多个第三引脚要输出高电平确定一个或多个第三引脚为关电状态。
根据本申请的第一方面的第十六功耗控制方法,提供了根据本申请第一方面的第十七功耗控制方法,其中,依据第四阶段在一个或多个第四引脚要输出低电平确定一个或多个第四引脚为开电状态。
根据本申请的第二方面,提供了根据本申请第二方面的控制电路,包括开关控制电路和多个引脚,开关控制电路通过信号开关耦合到引脚并通过引脚发送和/或接收信号;开关控制电路依据第一阶段在一个或多个第一引脚无须通信而确定一个或多个第一引脚在第一阶段为关电状态;并且,开关控制电路还响应于在第一阶段一个或多个第一引脚为关电状态而断开信号开关,以在第一阶段切断一个或多个第一引脚的信号传输。
根据本申请的第二方面的第一控制电路,提供了根据本申请第二方面的第二控制电路,其中,开关控制电路依据第二阶段在一个或多个第二引脚上要进行通信确定一个或多个第二引脚为开电状态;并且,开关控制电路还响应于在第二阶段一个或多个第二引脚为开电状态而闭合信号开关,以在第二阶段允许一个或多个第二引脚的信号传输。
根据本申请的第二方面的第一或第二控制电路,提供了根据本申请第二方面的第三控制电路,其中,开关控制电路依据在第三阶段一个或多个第三引脚要输出高电平确定一个或多个第三引脚为关电状态。
根据本申请的第二方面的第一至第三中任一项的控制电路,提供了根据本申请第二方面的第四控制电路,其中,开关控制电路依据第四阶段在一个或多个第四引脚要输出低电平确定一个或多个第四引脚为开电状态。
根据本申请的第二方面的第一至第四中任一项的控制电路,提供了根据本申请第二方面的第五控制电路,其中,控制电路还包括控制信号生成电路;开关控制电路通过第一信号开关耦合到第五引脚,并通过第一信号开关允许或断开从控制信号生成电路到第五引脚的信号传输;控制信号生成电路生成控制信号,控制信号生成电路生成的控制信号通过第一信号开关耦合到第五引脚。
根据本申请的第二方面的第五控制电路,提供了根据本申请第二方面的第六控制电路,其中,控制电路还包括数据信号生成电路:开关控制电路通过第二信号开关耦合到第六引脚,并通过第二信号开关允许或断开数据生成电路与第六引脚之间的信号传输;数据生成电路生成数据信号,数据生成电路生成的数据信号通过第二信号开关耦合到第六引脚。
根据本申请的第三方面,提供了根据本申请第三方面的芯片,包括上述的控制电路。
根据本申请的第四方面,提供了根据本申请第四方面的第一集成电路的功耗控制方法,包括:执行第一微指令设置一个或多个引脚的电源状态;在所述一个或多个引脚上生成通信协议的第一命令的第一阶段的信号;执行第二微指令设置所述一个或多个引脚的电源状态;在所述一个或多个引脚上生成通信协议的第一命令的第二阶段的信号。
根据本申请第四方面的第一集成电路的功耗控制方法,提供了根据本申请第四方面的第二集成电路的功耗控制方法,其中所述第一微指令与所述第二微指令是设置电源状态寄存器微指令。
根据本申请第四方面的第一或第二集成电路的功耗控制方法,提供了根据本申请第四方面的第三集成电路的功耗控制方法,还包括:在初始化阶段或无须根据所述通信协议进行通信的时间段,执行第三微指令将所述一个或多个引脚的电源状态都设置为关电状态。
根据本申请第四方面的第一至第三集成电路的功耗控制方法之一,提供了根据本申请第四方面的第四集成电路的功耗控制方法,其中
所述通信协议的第一阶段是nvm命令的命令阶段;以及所述通信协议的第二阶段是nvm命令的数据阶段。
根据本申请第四方面的第一至第四集成电路的功耗控制方法之一,提供了根据本申请第四方面的第五集成电路的功耗控制方法,其中所述一个或多个引脚被耦合到nvm芯片。
根据本申请第四方面的第四或第五集成电路的功耗控制方法,提供了根据本申请第四方面的第六集成电路的功耗控制方法,其中执行第一微指令,将所述一个或多个引脚中传输dq信号的引脚的接收电路的信号开关设置为关电状态;执行第二微指令,将所述一个或多个引脚中传输ale、cle信号的引脚设置为关电状态。
根据本申请第四方面的第六集成电路的功耗控制方法,提供了根据本申请第四方面的第七集成电路的功耗控制方法,其中执行第二微指令,还将所述一个或多个引脚中传输dq信号的引脚的接收电路的信号开关设置为关电状态。
根据本申请第四方面的第六集成电路的功耗控制方法,提供了根据本申请第四方面的第八集成电路的功耗控制方法,其中执行第二微指令,还将所述一个或多个引脚中传输dq信号的引脚的发送电路的信号开关设置为关电状态。
根据本申请的第五方面,提供了根据本申请第五方面的第一介质接口控制器,包括:处理器、电源状态寄存器、信号开关与引脚;所述处理器耦合到电源状态寄存器,并通过执行微指令设置所述电源状态寄存器;所述电源状态寄存器耦合到信号开关,并控制信号开关的闭合或断开;信号开关同引脚耦合,并设置引脚的电源状态。
根据本申请第五方面的第一介质接口控制器,提供了根据本申请第五方面的第二介质接口控制器,其中当信号开关闭合时,所述介质接口控制器通过引脚传输信号,当所述信号开关断开时,切断所述介质接口控制器同引脚的信号传输。
根据本申请第五方面的第一或第二介质接口控制器,提供了根据本申请第五方面的第三介质接口控制器,其中所述处理器执行第一微指令将所述电源状态寄存器设置为第一值;所述处理器执行微指令序列在引脚上生成通信协议的第一命令的第一阶段的信号;所述处理器执行第二微指令将所述电源状态寄存器设置为第二值;所述处理器执行微指令序列在引脚上生成通信协议的第一命令的第二阶段的信号。
根据本申请第五方面的第三介质接口控制器,提供了根据本申请第五方面的第四介质接口控制器,还包括:在初始化阶段或无须根据所述通信协议进行通信的时间段,所述处理器执行第三微指令将所述电源状态寄存器设置为第三值,使得引脚的电源状态被设置为关电状态。
根据本申请第五方面的第三或第四介质接口控制器,提供了根据本申请第五方面的第五介质接口控制器,其中所述通信协议的第一阶段是nvm命令的命令阶段;以及所述通信协议的第二阶段是nvm命令的数据阶段。
根据本申请第五方面的第三至第五介质接口控制器之一,提供了根据本申请第五方面的第六介质接口控制器,其中所述一个或多个引脚被耦合到nvm芯片。
根据本申请第五方面的第一至第六介质接口控制器之一,提供了根据本申请第五方面的第七介质接口控制器,其中所述介质接口控制器的引脚有多个;以及所述介质接口控制器的信号开关有多个。
根据本申请第六方面,提供了根据本申请第六方面的集成电路的功耗控制方法,包括:设置一个或多个引脚的电源状态;以及在所述一个或多个引脚上进行信号传输。
附图说明
当连同附图阅读时,通过参考后面对示出性的实施例的详细描述,将最佳地理解本申请以及优选的使用模式和其进一步的目的和优点,其中附图包括:
图1是固态存储设备的框图;
图2与图3展示了onfi标准中操作nvm芯片的命令的波形图;
图4是本申请实施例的集成电路的功耗控制方法的流程图;
图5是根据本申请又一实施例的根据onfi协议实施功耗控制的示意图;
图6是根据本申请再一实施例的控制引脚的电源状态的控制电路的示意图;
图7是根据本申请另一实施例的控制引脚的电源状态的介质接口控制器的示意图;
图8展示了根据本申请实施例的设置电源状态寄存器微指令;以及
图9展示了根据本申请依然又一实施例的功耗控制方法的流程图。
具体实施方式
在下文中,以存储设备的控制部件与nvm芯片之间通过onfi协议进行通信为例描述根据本申请的实施例。可以理解地,本申请实施例适用于任何芯片之间的通信,以及也适用于多种通信协议。
图2与图3展示了onfi标准中操作nvm芯片的命令的时序图。其中用斜线填充部分指示“无需关心”(don’tcare)相关信号的时间段。遵循onfi标准的nvm芯片包括ce#(片选信号)、cle(命令锁存信号)、ale(地址锁存信号)、we#(写使能信号)、re(读使能信号)、dqs(数据选通信号)、dq(数据总线信号)等引脚,通过在引脚上指示电信号向nvm芯片发送命令,并接收从nvm芯片输出的数据或命令执行结果。操作nvm芯片的命令大体上包括命令周期(commandcycle)与数据周期(datacycle),各周期又分为多个阶段。
图2展示了命令周期的命令阶段。在命令阶段,dq引脚上出现的“command”指示命令。
图3展示了命令周期的地址阶段。在地址阶段,dq引脚上出现的“address”用来指示命令的地址。图2与图3还展示了在各个阶段,ce#、cle、ale、we#、re、dqs、dq等引脚上出现的信号的状态与时间。其中,将ce#、cle、ale、we、re与dqs等引脚传输的信号称为控制信号,将dq引脚传输的信号称为数据信号。
在根据本申请的实施例中,根据各引脚上是否要进行信号传输的通信状态,而设置各引脚的电源状态(如开电状态或关电状态)。例如,根据ce#引脚的通信状态划分阶段。在各阶段,为ce#引脚设置电源状态。在单一阶段内,为ce#引脚设置的电源状态不发生变化。
如图2所示,虚线210、220、230与240将命令周期的命令阶段又分为s1、s2与s3三个阶段。在s1阶段,ce#/cle/ale/dq信号为“无需关心”状态,这些信号无须进行通信,而we#/re/dqs信号需要进行传输。因此在s1阶段,将cle/ale/dq信号的引脚设置为关电状态,而将we#/re/dqs信号的引脚设置为开电状态。在s2阶段的至少部分时间段,各信号都需要传输。因而在s2阶段,将传输相关信号的所有引脚设置为开电状态。在s3阶段,cle/ale/we#/dq信号为“无需关心”状态,这些信号无须进行通信,而re/dqs信号要进行传输。因而在s3阶段,将传输re/dqs信号的引脚设置为开电状态,而将传输其他信号的引脚设置为关电状态。
设置为关电状态的引脚的信号传输被禁止,从而降低这些引脚引起的功耗。
作为另一个例子,根据各个信号的引脚的通信状态的变化情况来为每个引脚划分阶段。在各阶段,根据各个信号的引脚上是否要进行信号传输的通信状态,而设置每个信号的引脚的电源状态(如开电状态或关电状态)。
如图3所示,虚线310、320、330与340将命令周期的地址阶段又分为s4、s5与s6三个阶段。以cle信号为例,在s4阶段,cle信号为“无需关心”状态,其无须进行通信。因此在s4阶段,将cle信号的引脚设置为关电状态。在s5阶段,cle信号需要传输。因而在s5阶段,将cle信号的引脚设置为开电状态。在s6阶段,cle信号为“无需关心”状态,其无须进行通信。因而在s6阶段,将cle信号的引脚设置为关电状态。
根据每个信号的通信状态设置传输信号的引脚的电源状态,有助于最大程度的降低引脚传输信号引起的功耗,但也增加了控制各引脚的电源状态的复杂度。根据本申请的又一实施例,根据操作nvm芯片的命令的命令周期与数据周期来设置各引脚的电源状态。在命令周期或数据周期内,引脚的电源状态一经设置而不再改变,从而降低了复杂度。
图4是本申请实施例的集成电路的功耗控制方法的流程图。
以控制部件(也参看图1,控制部件104)为例,控制部件判断是否要向nvm芯片发送操作nvm芯片的命令(410)。在向nvm芯片发送操作nvm芯片的命令期间,响应于识别出进入了操作nvm芯片的命令的命令周期(420),根据命令周期内同nvm芯片通信的各引脚的通信状态,确定各引脚的电源状态(如开电状态或关电状态)(430)。作为举例,在命令周期内,ce#、cle、ale、we#信号要进行信号传输,将传输这些信号的引脚设置为开电状态。而在命令周期内nvm芯片不关心re与dqs引脚上的信号,因而将传输这些信号的引脚设置为关电状态,以减少这些引脚引起的功耗。相应地,将所确定的各引脚的电源状态施加给各引脚(440),进而进行命令周期的信号传输。
命令周期传输结束后,响应于识别出进入了操作nvm芯片的命令的数据周期(450),根据数据周期内同nvm芯片通信的各引脚的通信状态,确定各引脚的电源状态(如开电状态或关电状态)(460)。作为举例,在数据周期内,ce#、dqs与dq信号要进行信号传输,将传输这些信号的引脚设置为开电状态。而在数据周期内nvm芯片不关心re、ale、cle、we#引脚上的信号,因而将传输这些信号的引脚设置为关电状态,以减少这些引脚引起的功耗。相应地,将所确定的各引脚的电源状态施加给各引脚(470),进而进行数据周期的信号传输。
图5是根据本申请又一实施例的根据onfi协议实施功耗控制的示意图。
为设置引脚的电源状态,在传输信号的各引脚上设置信号开关。参看图5,ce#信号的引脚上设有单向信号开关510,cle信号的引脚上设有单向信号开关520,ale信号的引脚上设有单向信号开关530,we#信号的引脚上设有单向信号开关540,re信号的引脚上设有单向信号开关550,dq信号的引脚上设有双向信号开关560,dqs信号的引脚上设有双向信号开关570。
通过单向信号开关或双向信号开关控制相应引脚的信号导通或信号断开。单向信号开关具有发送电路(用tx表示),用于引脚向nvm芯片发送信号。双向信号开关具有发送电路(用tx表示)和接收电路(用rx表示),发送电路用于引脚向nvm芯片发送信号,而接收电路用于引脚从nvm芯片接收信号。
编程命令包括命令周期和数据周期(参见图5的虚线框)。在根据图5的实施例中,在命令周期和数据周期分别设置各引脚的电源状态,以减少芯片的功耗。
根据要进行命令周期的信号传输还是数据周期的信号传输,通过控制信号开关的信号导通或信号断开来设置各引脚的电源状态。
例如,在编程命令的命令周期,ce#、cle、ale、we#、与dq信号的引脚要传输信号,将单向信号开关510、单向信号开关520、单向信号开关530、单向信号开关540以及双向信号开关560设置为导通,而将re与dqs信号的引脚设置为关电状态,以减少re与dqs信号的引脚的信号传输带来的芯片功耗。通过将单向信号开关550与双向信号开关570设置为断开来将re与dqs信号的引脚设置为关电状态。而在数据周期,将单向信号开关510、双向信号开关560以及双向信号开关570设置为导通,而将单向信号开关520、单向信号开关530、单向信号开关540以及单向信号开关550设置为断开。
根据图5的实施例,在例如命令周期,虽然根据协议,诸如cle信号仅在部分时间需要传输信息,但在整个命令周期,都将cle信号的引脚设置为开电状态。从而降低控制复杂度。
在上面的例子中,在命令周期,将re与dqs信号的引脚设置为关电状态。虽然根据onfi协议(也参看图2或图3),在编程命令的命令周期re与dqs信号应当向nvm芯片指示高电平,被设置为关电状态的re与dqs信号,将使nvm芯片感知到高电平(例如高阻态)。
可选地,在命令周期,dq与dqs信号仅单向传输,从控制部件向nvm芯片提供信号,因而将双向信号开关560与双向信号开关570的发送电路设置为导通,而将双向信号开关560与双向信号开关570的接收电路设置为断开,以进一步降低功耗。依然可选地,在命令周期,将re信号的引脚的单向信号开关550设置为导通,以提升提供给nvm芯片的re信号的质量。
依然可选地,在数据周期,dq与dqs信号仅单向传输,从控制部件向nvm芯片提供信号,因而将双向信号开关560与双向信号开关570的发送电路设置为导通,而将双向信号开关560与双向信号开关570的接收电路设置为断开,以进一步降低功耗。作为另一个例子,在数据周期,将ce#、dqs与dq信号的引脚设置为开电状态,将ale、cle与we#信号的引脚设置为关电状态。
对于onfi标准中nv-ddr2的读命令,ce#、cle、ale、we#、re等信号的时序同编程命令相似。
在读命令的命令周期,dq与dqs信号仅单向传输,从控制部件向nvm芯片提供信号,因而将双向信号开关560与双向信号开关570的发送电路设置为导通,而将双向信号开关560与双向信号开关570的接收电路设置为断开,以进一步降低功耗。在读命令的数据周期,dq与dqs信号仅单向传输,接收nvm芯片提供给控制部件的信号,因而将双向信号开关560与双向信号开关570的发送电路设置为断开,而将双向信号开关560与双向信号开关570的接收电路设置为导通。
在大量读写的情况下,控制部件和nvm芯片之间交换数据的周期会占用大部分总线时间。在编程命令的数据周期,关闭部分引脚(ale、cle、we#与re信号的引脚,以及dqs与dq信号的双向信号开关的接收电路),可以大幅度节省芯片的功耗。
可选地或进一步地,在读命令的命令周期与数据周期之间,存在较长的等待时间。在等待时间(约50us)内,将(除ce信号之外的)所有信号设置为关电状态,以进一步降低功耗。可选地,根据所使用的nvm芯片的型号与使用状态,指定上述等待时间。
控制部件与nvm芯片之间还进行擦除(erase)/重置(reset)命令的通信,擦除/重置命令的通信只需要命令周期,因而根据编程命令或读命令的命令周期的电源控制策略设置各引脚的电源状态。
在一个可选的实施例中,若数据总线空闲(控制部件与nvm芯片之间没有待传输或正在传输的命令),将ce#信号之外的其他信号的引脚均设置为关电状态,以降低芯片的功耗。进一步地,在总线空闲时间内,将ce#信号引脚也设置为关电状态,即将所有信号的引脚均设置为关电状态,从而使在控制部件与nvm芯片之间的通信功耗降到最低。在此情况下,被设置为关电状态的ce#信号的引脚将使nvm芯片感知到高电平(例如高阻态)的ce#信号,从而避免该ce#信号所耦合的nvm芯片被误选通。
图6是根据本申请再一实施例的控制引脚的电源状态的控制电路的示意图。
根据图6展示的的实施例,通过为芯片的一个或多个引脚提供信号开关来设置引脚的电源状态。图6中示出了引脚604与605,以及用于引脚604的信号开关606,用于引脚605的信号开关607与608。其中信号开关606是单向信号开关,信号开关607与608形成双向信号开关。可以理解地,对于诸如控制部件104耦合到nvm芯片的一个、多个或所有引脚的每个,分别提供信号开关,来设置其电源状态。在图6展示的实施例中,为了清楚的目的,仅展示了两个引脚(604与605)。
图6展示了控制电路600,其是例如控制部件104(参看图1)的介质接口控制器的部分。
控制电路600包括开关控制电路601、控制信号生成电路602与数据生成电路603。控制电路600耦合到引脚604和605。控制电路600与引脚604和605属于同一芯片。
控制信号生成电路602生成控制信号(例如,图5中的ce#、ale、cle、we#或re信号)。控制信号生成电路602生成的控制信号通过信号开关606耦合到引脚604。信号开关606导通或切断控制信号生成电路602提供给引脚604的控制信号。作为一个例子,信号开关606被用作图5中展示的ce#、ale、cle、we#或re信号的引脚上被设置的单向信号开关(信号开关510-550之一)。
数据生成电路603生成数据信号(例如,图5中的dq信号)。数据生成电路603通过信号开关607和信号开关608耦合到引脚605。信号开关607使数据生成电路603生成的数据信号提供给引脚605,信号开关608使引脚605接收到的来自nvm芯片的数据信号传输至数据生成电路603。作为一个例子,信号开关607与信号开关608被用作图5中展示的dq信号的引脚上被设置的双向信号开关560。信号开关607作为例如双向信号开关560的发送电路,而信号开关608作为双向信号开关560的接收电路。可以理解地,根据onfi协议,dq信号有多个引脚,图6的例子中仅展示了其中之一。
开关控制电路601耦合到信号开关606、信号开关607与信号开关608的控制端,并控制各信号开关的断开或闭合。
开关控制电路601响应于在某个阶段一个或多个引脚无须通信而确定该一个或多个引脚在该阶段为关电状态。开关控制电路601还响应于引脚为关电状态而断开耦合到该引脚的信号开关,以切断通过该引脚的信号传输。开关控制电路601响应于在某个阶段一个或多个引脚需要通信而确定该一个或多个引脚在该阶段为开电状态。开关控制电路601还响应于引脚为开电状态而闭合耦合到该引脚的信号开关,以允许通过该引脚的信号传输。
开关控制电路601还耦合到控制信号生成电路602与数据生成电路603,以识别控制信号生成电路602和/或数据生成电路603要通过引脚进行通信,例如要发送操作nvm芯片的命令,或者要进入操作nvm芯片的命令的命令周期和/或数据周期。
作为举例,也参看图5,引脚604用于向nvm芯片提供re信号。开关控制电路601响应于在编程命令期间re信号的引脚无须通信而确定re信号的引脚在编程命令期间为关电状态。进而开关控制电路601还响应于re信号为关电状态而断开信号开关606,以切断提供给引脚604的信号。
开关控制电路601响应于在编程命令期间dq信号的引脚要进行通信而确定dq信号的引脚在编程命令期间为开电状态。进而开关控制电路601还响应于dq信号为开电状态而闭合信号开关607,以允许dq信号的引脚的信号传输。可选地,为了进一步降低dq信号的引脚的功耗,在编程命令期间,开关控制电路601还断开信号开关608。依然可选地,为了降低复杂度,开关控制电路901的采用统一信号控制开关607与开关608的断开或闭合。
本申请实施例在命令的各个周期或各个周期的各个阶段内,通过关闭无须通信的引脚的电源,降低了芯片进行通信所需的功耗。
根据本申请的又一个实施例,介质接口控制器中执行微指令来指示开关控制电路601确定各引脚的电源状态。作为举例,为需要控制电源状态的每个信号提供可由微指令操作的电源状态寄存器,电源状态寄存器的值体现了对应信号当前的电源状态,例如开电状态或关电状态。可选地,为具有双向信号开关的信号提供电源状态寄存器的两位来分别控制每个信号开关的断开或导通。
通过执行微指令来设置或改变电源状态寄存器。从而在执行微指令控制产生的nvm命令时,插入设置电源状态寄存器的微指令,来实现在命令的各个周期或各个周期的各个阶段内控制各信号的引脚的电源状态。
图7是根据本申请另一实施例的控制引脚的电源状态的介质接口控制器的示意图。
如图7所示,介质接口控制器包括调度器730、处理器740、状态寄存器750、介质接口760、消息队列770以及可被调度器730调度并由处理器740运行的一个或多个线程(例如,线程700、线程710与线程720)。将可被执行的微指令序列被称作线程。由于同一微指令序列在每次执行时拥有自己的执行状态,从而可基于同一微指令序列创建多个线程。在状态寄存器750中还为每个线程存储执行状态。
消息队列770提供访问nvm芯片的消息。线程被处理器740运行时,从消息队列770获取访问nvm芯片的消息,并操作介质接口760生成操作nvm芯片的命令。线程的运行状态和/或操作nvm芯片的命令的执行状态被记录在状态寄存器750。从而在等待nvm芯片执行命令时,在状态寄存器750中保存线程的状态,调度器730调度其他线程在处理器740上执行。
介质接口760包括电源状态寄存器。介质接口通过信号开关706耦合到引脚704,并通过构成双向信号开关的信号开关707与信号开关708耦合到引脚705。
信号开关707使介质接口760生成的数据信号提供给引脚705,信号开关708使引脚705接收到的来自nvm芯片的数据信号传输至介质接口760。作为一个例子,信号开关707与信号开关708被用作图5中展示的dq信号的引脚上被设置的双向信号开关560。信号开关707作为例如双向信号开关560的发送电路,而信号开关708作为双向信号开关560的接收电路。可以理解地,根据onfi协议,dq信号有多个引脚,图7的例子中仅展示了其中之一;以及dq信号的多个被设置相同的电源状态。作为又一个例子,信号开关706被用作图5中展示的cle信号的引脚上被设置的单向信号开关520。
电源状态寄存器耦合到信号开关606、信号开关607与信号开关608的控制端,电源状态寄存器的各位控制各信号开关的断开或闭合。例如,电源状态寄存器的b1位被耦合到信号开关606,而b2位被耦合到信号开关607,b3位被耦合到信号开关608。处理其740执行线程,当线程中的微指令设置了电源状态寄存器的b1、b2和/或b3位,使得信号开关606、信号开关607和/或信号开关608被断开或闭合,从而实现对信号的引脚的电源状态的控制。
图8展示了根据本申请实施例的设置电源状态寄存器微指令。
设置电源状态寄存器微指令包括操作码810与一个或多个操作数(820、822、824、826与828)。参看图8,作为举例,操作码810为pctrl,指示这是一条设置电源状态及储存期微指令。操作数820的名字指示了其设置的引脚的信号开关。例如操作数820的名字是ce_tx_on,指示该操作数用于设置ce信号的引脚的从引脚向nvm芯片发送信号的单向信号开关的导通或断开,操作数820被置位时,指示单向开关导通,而操作数820未被置位时,指示单向开关断开。
继续参看图8,设置电源状态寄存器微指令的每个操作数对应信号、引脚或其单向开关的一个或多个。例如操作数822对应信号cle的引脚的从引脚向nvm芯片发送信号的单向信号开关,操作数824对应信号dqs的引脚的从引脚向nvm芯片发送信号的单向信号开关,操作数824对应信号dqs的引脚的用于从nvm芯片接收信号的单向信号开关。依然作为举例,操作数828对应信号dq的引脚的从引脚向nvm芯片发送信号的单向信号开关,虽然dq信号对应多个引脚,采用单一操作数828来控制dq信号的所有引脚的向nvm芯片发送信号的单向信号开关。
可以理解地,为控制多种数量的信号引脚,设置电源状态寄存器微指令可包括多种数量的操作数。可选地,使用多种类型的设置电源状态寄存器微指令,每种类型的设置电源状态寄存器微指令用于设置不同的信号的引脚的信号开关的导通或断开。
依然可选地,设置电源状态寄存器微指令包括由索引与值组成的操作数对,在索引操作数中提供要设置的信号的引脚的信号开关,而对应的值操作数中提供信号开关要被设置的值。进一步地,设置电源状态寄存器微指令中包括一个或多个操作数对。
以图8展示的设置电源状态寄存器微指令为例,下面展示了在发送nvm命令中使用设置电源状态寄存器微指令的微指令序列的例子。
在没有nvm命令需要发送,或者在控制部件初始化阶段,执行“pctrl,0x0”设置电源状态寄存器微指令,微指令的所有操作数被设置为0(0x0)以将所有用于传输onfi信号的引脚的信号开关关闭。
接下来,如果需要,执行微指令来为发送nvm命令做初始化或相关准备。以编程命令为例,要获取编程命令的nvm芯片的地址,待写入nvm芯片的数据缓存地址等。
接下来开始生成编程命令的命令周期的各信号。响应于进入命令周期,执行“pctrl,0b111100010”设置电源状态寄存器微指令,其中将对应于ce、cle、ale与we信号(也参看图5)的引脚的信号开关的操作数置位,将对应于dq信号的引脚的发送电路的信号开关的操作数置位,将对应于re、dqs信号的引脚的信号开关操作数以及对应于dq信号的引脚的接收电路的信号开关的操作数设为0,从而允许向nvm芯片传输ce、cle、ale、we与dq信号,而禁止传输re、dqs信号,也禁止从dq信号的引脚上接收信号。
接下来,执行后续的微指令以完成编程命令的命令周期的信号传输。
在命令周期之后,进入编程命令的数据周期。响应于进入数据周期,执行“pctrl,0b100101010”设置电源状态寄存器微指令,其中将对应于ce、we信号的引脚的信号开关的操作数置位,将对应于dqs与dq信号的引脚的发送电路的信号开关的操作数置位,将对应于ale、cle、re信号的引脚的信号开关操作数以及对应于dqs与dq信号的引脚的接收电路的信号开关的操作数设为0,从而允许向nvm芯片传输ce、we、dqs与dq信号,而禁止传输ale、cle、re信号,也禁止从dqs与dq信号的引脚上接收信号。
接下来,执行后续的微指令以完成编程命令的数据周期的信号传输。
下面展示了在发送读数据的nvm命令中使用设置电源状态寄存器微指令的微指令序列的例子。
在没有nvm命令需要发送,或者在控制部件初始化阶段,执行“pctrl,0x0”设置电源状态寄存器微指令,微指令的所有操作数被设置为0(0x0)以将所有用于传输onfi信号的引脚的信号开关关闭。
接下来,如果需要,执行微指令来为发送nvm命令做初始化或相关准备。以读命令为例,要获取读命令的nvm芯片的地址,待读出数据的缓存地址等。
接下来开始生成读命令的命令周期的各信号。响应于进入命令周期,执行“pctrl,0b111100010”设置电源状态寄存器微指令,从而允许向nvm芯片传输ce、cle、ale、we与dq信号,而禁止传输re、dqs信号,也禁止从dq信号的引脚上接收信号。
接下来,执行后续的微指令以完成读命令的命令周期的信号传输。
在命令周期之后,进入读命令的数据周期。响应于进入数据周期,执行“pctrl,0b100110101”设置电源状态寄存器微指令,从而允许向nvm芯片传输ce、we、re信号,允许从nvm芯片接收dqs与dq信号,而禁止传输ale、cle信号,也禁止从dqs与dq信号的引脚向nvm芯片发送信号。
接下来,执行后续的微指令以完成读命令的数据周期的信号传输。
图9展示了根据本申请依然又一实施例的功耗控制方法的流程图。
在例如集成电路中实施根据图9所展示的功耗控制方法。参看图9,为实施控制控制,设置一个或多个引脚的电源状态(910)。例如,将在接下来根据通信协议要使用一个或多个引脚的电源状态设置为开电状态,而将接下来不会被用的一个或多个引脚的电源状态设置为关电状态。通过例如开关控制电路(参看图6)或执行微指令的处理器(参看图7)来设置引脚的电源状态。
接下来,在一个或多个引脚上进行信号传输(920)。例如,根据通信协议使用一个或多个引脚进行信号传输。无须关心在当前阶段,通信协议中未使用的一个或多个引脚,因为这些引脚已被设置为关电状态,即使在这些引脚上设置了信号状态,也不会对耦合到引脚的其他电路产生影响。从而也有助于消除协议未定义引脚的信号状态所产生的干扰或误操作。
这些实施方式所涉及的、从上面描述和相关联的附图中呈现的教导获益的领域中的技术人员将认识到这里记载的本申请的很多修改和其他实施方式。因此,应该理解,本申请不限于公开的具体实施方式,旨在将修改和其他实施方式包括在所附权利要求书的范围内。尽管在这里采用了特定的术语,但是仅在一般意义和描述意义上使用它们并且不是为了限制的目的而使用。