具有分布变换器的存储器控制器的制作方法

文档序号:15465983发布日期:2018-09-18 19:20阅读:106来源:国知局

本发明的实施例总体涉及存储器的技术领域。具体实施例涉及存储器控制器。



背景技术:

通常,数据被写入到具有逻辑0位和逻辑1位的相等分布的存储器。然而,在诸如相变存储器(PCM)之类的一些类型的存储器中,与将PCM单元重设成逻辑0相比,将PCM单元设定成逻辑1通常消耗更多的功率和时间。

附图说明

实施例将通过以下详细描述结合附图而容易理解。为了促进该描述,相似的附图标记指定相似的结构元件。在附图的各图中通过示例的方式而非通过限制的方式图示实施例。

图1图示出根据各种实施例的示例存储器控制器和存储器。

图2图示出根据各种实施例的用于将数据写入到存储器中的方法。

图3图示出根据各种实施例的用于从存储器读取数据的方法。

图4图示出根据各种实施例的被配置成采用本文描述的装置和方法的示例系统。

具体实施方式

在以下详细描述中,参考形成其部分的附图,其中自始至终相似的附图标记指定相似的部分,并且其中通过图示的方式示出可实践的实施例。应理解的是,在不脱离本公开的范围的情况下,可以利用其他实施例并且可以做出结构或逻辑改变。因此,以下详细描述不应以限制性意义解释,并且实施例的范围由随附权利要求及其等同物限定。

各种操作可以继而以最有助于理解所要求保护的主题的方式被描述为多个分立的动作或操作。然而,描述的次序不应被解释为暗指这些操作必然是依赖于次序的。特别地,这些操作可以不以呈现的次序执行。所描述的操作可以以与所描述的实施例不同的次序执行。各种附加操作可以被执行,和/或所描述的操作可以在附加实施例中被省略。

为了本公开的目的,短语“A和/或B”和“A或B”意为(A)、(B)或(A和B)。为了本公开的目的,短语“A、B和/或C”意为(A)、(B)、(C)、(A和B)、(A和C)、(B和C)或(A、B和C)。

描述可以使用短语“在一实施例中”或“在实施例中”,其可以均指代相同或不同实施例中的一个或多个。此外,如关于本公开的实施例所使用,术语“包括”、“包含”、“具有”等是同义的。

如本文使用的,术语“模块”可以指代下述各项、是下述各项的一部分或者包括下述各项:执行一个或多个软件或固件程序的专用集成电路(ASIC)、电子电路、处理器(共享、专用或群组)和/或存储器(共享、专用或群组)、组合逻辑电路、和/或提供所描述的功能的其他合适组件。如本文所使用的,“计算机实现的方法”可以指代由一个或多个处理器、具有一个或多个处理器的计算机系统、诸如智能电话(其可以包括一个或多个处理器)、平板、膝上型计算机、机顶盒、游戏控制台等之类的移动设备执行的任何方法。

图1图示出根据各种实施例的存储器控制器102和存储器104。存储器104可以实现各种形式的存储器,包括但不限于NAND(闪速)存储器、铁电随机存取存储器(FeTRAM)、基于纳米线的非易失性存储器、诸如相变存储器(PCM)之类的三维(3D)交叉点存储器、合并有忆阻器技术的存储器、磁阻随机存取存储器(MRAM)、自旋转移力矩(STT)-MRAM等。存储器控制器102可以控制将数据写入到存储器104中和/或从存储器104读取数据。例如,存储器控制器102可以包括用于将数据写入到存储器104中的写入模块106和用于从存储器104读取数据的读取模块108。存储器控制器102可以与一个或多个其他组件(例如,处理器)对接以允许该一个或多个其他组件将数据写入到存储器104中和/或从存储器104读取数据。

在一些实施例中,存储器控制器102可以被包括在与存储器104相同的封装中。在其他实施例中,存储器104可以在存储器控制器102外部。

在各种实施例中,存储器控制器102可以包括分布变换器110(例如,在写入模块106中)。分布变换器110可以接收要被存储到存储器104中的数据。由分布变换器接收的数据可以具有多个位,其中每个位具有两个二进制值之一,即,第一逻辑值(例如,逻辑0)或第二逻辑值(例如,逻辑1)。在实施例中,由分布变换器接收的数据可以具有针对具有第一逻辑值的位和具有第二逻辑值的位的m1:n1比的分布,其中m1和n1是实数。在一些实施例中,值m1和n1可以相等(例如,由分布变换器接收的数据可以具有逻辑0位和逻辑1位的相等概率)。在其他实施例中,值m1和n1可以不同。

在各种实施例中,分布变换器110可以将数据变换成偏斜(skewed)数据。偏斜数据可以包括多个位,其中每个位具有两个二进制值之一(例如,第一逻辑值或第二逻辑值)。在实施例中,偏斜数据可以具有针对具有第一逻辑值的位和具有第二逻辑值的位的m2:n2比的分布。值m2和n2可以是不同于彼此的实数(例如,m2不等于n2)。此外,m2和n2可以分别不同于m1和n1。在一些实施例中,m2:n2比可以是预定义的比。

分布变换器110可以输出偏斜数据以存储在存储器104中。例如,存储器控制器102可以将偏斜数据传递到存储器104以存储在存储器104中。偏斜数据可以包括比一个逻辑值更多的另一个逻辑值。例如,偏斜数据可以包括比逻辑1位更多的逻辑0位。

在一些实施例中,第一逻辑值可以是逻辑0,并且第二逻辑值可以是逻辑1。此外,m2可以大于n2。因而,偏斜数据可以具有比逻辑1位更多的逻辑0位。

在各种实施例中,分布变换器110可以在将由分布变换器110接收的数据变换成偏斜数据时添加冗余位以允许从偏斜数据恢复原始数据(例如,由分布变换器110接收的数据)。例如,分布变换器110可以在将数据变换成偏斜数据的同时使用约束编码和/或逆源编码技术来添加冗余位。冗余位可以允许从存储在存储器102中的偏斜数据准确地取回数据(例如,由读取模块108)。

例如,分布变换器110可以使用约束编码(例如包括前向和/或反向级联)来将接收数据的码字变换成偏斜数据的码字。与接收数据的码字中逻辑1位的概率相比,分布变换器110可以降低偏斜数据的码字中逻辑1位的概率。在这样做时,分布变换器110可以将冗余位添加到偏斜数据的码字(例如,根据算法)。因而,偏斜数据的码字可以对应于接收数据的码字,并且,可以在读取过程期间从偏斜数据的码字准确地恢复接收数据的码字(以下进一步讨论)。

作为示例,接收数据中的每个零可以被转换成偏斜数据中的两个零。对于具有逻辑0位和逻辑 1位的相等概率的接收数据而言,该过程可以将偏斜数据变换成具有逻辑0位和逻辑1位的大约0.67:0.33比的分布,其具有冗余位的50%开销。在读取过程期间,从存储器104读取的偏斜数据中的连续零可以用单个零替换以恢复非偏斜数据。在其他实施例中,更复杂的算法可以被用于使接收数据偏斜以便获得具有冗余位的较低开销的m2:n2比。

在各种实施例中,存储器104可以包括多个存储器单元以存储偏斜数据的相应位。在各种实施例中,诸如其中存储器104是PCM的实施例中,与将存储器单元重设成逻辑0相比,将存储器104的存储器单元设定成逻辑1可能消耗更多能量和/或时间。例如,在一个非限制性实施例中,存储器104可以是PCM,其中将存储器单元设定成逻辑1消耗大约250pJ并且将存储器单元重设成逻辑0消耗大约50pJ。此外或可替换地,与将存储器单元重设成逻辑0相比,将PCM的存储器单元设定成逻辑1可能消耗十倍的时间。

此外,甚至针对偏斜数据中的添加的冗余位,与存储具有逻辑0位和逻辑1位的相等概率的数据相比,将偏斜数据存储在存储器104中可能消耗更少的功率和/或时间。因而,分布变换器110可以为存储器控制器102和/或存储器104提供功率节省和/或减少的等待时间。

在一些实施例中,m2:n2比的分布可以是大约0.6:0.4到大约0.8:0.2。例如,在一个非限制性实施例中,m2:n2比的分布可以是逻辑0位和逻辑1位的大约0.68:0.32,其具有用于冗余的附加位的10%开销。使用在以上示例中给出的能量消耗值,每存储器单元的由写入操作消耗的平均功率可以是大约121pJ。因而,甚至针对附加冗余位,与将具有逻辑0位和逻辑1位的相等概率的数据写入到存储器104相比,存储器控制器102可以实现大约20%的净功率消耗节省以用于将偏斜数据写入到存储器104。此外,时间节省可以提供减少的等待时间以用于将偏斜数据写入到存储器104。

在一些实施例中,诸如其中存储器104是NAND闪速存储器的实施例中,存储器104可以具有非对称通道,其中,与逻辑0位非故意地切换成逻辑1位相比,更可能的是逻辑1位非故意地切换成逻辑0位(例如,由于程序扰乱)。通过将数据偏斜成具有比逻辑0位更多的逻辑1位,与具有逻辑0位和逻辑1位的相等概率的数据相比,逻辑1位的数目减少,从而降低程序扰乱误差的出现率。

在一些实施例中,存储器控制器102的写入模块106还可以包括加扰模块112和误差控制编码器114。加扰模块112可以接收要被写入到存储器104中的未加扰数据(例如,从诸如处理器之类的另一个组件)。未加扰数据可以具有逻辑0位和逻辑1位的随机分布。作为响应,加扰模块112可以对未加扰数据进行加扰,并输出加扰数据。加扰数据可以具有逻辑0位和逻辑1位的m1:n1比的分布。例如,加扰模块112可以将未加扰数据加扰成具有逻辑0位和逻辑1位的1:1分布(例如,m1=n1)。加扰模块112可以基于用于获得加扰数据的算法来对未加扰数据进行加扰。

在各种实施例中,误差控制编码器114可以向加扰数据添加误差控制编码以生成由分布变换器110接收的数据。误差控制编码可以用于检测和/或校正数据中的误差。例如,误差控制编码器114可以生成与加扰数据关联的误差校正码(ECC)。ECC可以包括通过ECC算法根据加扰数据确定的一个或多个位。在一些实施例中,如可由加扰模块112提供的逻辑0位和逻辑1位的1:1分布可以促进有效的误差控制编码。

如上所讨论的,存储器控制器102还可以包括用于从存储器104读取数据的读取模块108。在各种实施例中,读取模块108可以包括用于接收从存储器104读取的传出数据的逆变换器116。传出数据可以具有:具有第一逻辑值的位和具有第二逻辑值的位的m2:n2比的分布。逆变换器116可以将传出数据从具有m2:n2比的分布变换成具有下述内容的非偏斜数据:具有第一逻辑值的位和具有第二逻辑值的位的m1:n1比的分布。逆变换器116可以使用传出数据中的冗余位来生成非偏斜数据。例如,逆变换器116可以使用用于从传出数据生成非偏斜数据的算法,该算法是被分布变换器110用于生成偏斜数据的算法的逆算法。因而,逆变换器116可以移除被分布变换器110插入的偏斜数据中的冗余位,并将偏斜数据变换回成非偏斜数据。因此,可以由逆变换器116准确地取回被分布变换器110接收的数据。

在一些实施例中,存储器控制器102还可以包括用于对传出数据上的误差控制编码进行解码的误差控制解码器118。误差控制解码器118可以基于对误差控制编码进行解码的结果来发起误差恢复过程。例如,误差控制解码器118可以使用被误差控制编码器114生成的ECC来确定由误差控制解码器118接收的数据是否匹配于由误差控制编码器114接收的数据。如果由误差控制解码器118接收的数据不匹配于由误差控制编码器114接收的数据,则误差控制解码器118可以基于ECC来恢复数据。

在其中存储器控制器包括加扰模块112的实施例中,存储器控制器102还可以包括用于接收由逆变换器变换之后的传出数据(例如,非偏斜数据)的逆加扰模块120。逆加扰模块120可以对传出数据进行解扰(unscramble)(例如,使用作为由加扰模块102使用的算法的逆算法的算法)。因此,逆加扰模块120可以输出如加扰模块112所接收的数据(例如,具有含有第一逻辑状态和第二逻辑状态的位的随机分布)。

因此,存储器控制器102可以提供PCM中数据的准确存储,而同时提供相对于在先存储器控制器的功率节省。

图2图示出根据各种实施例的用于将数据写入到存储器(例如,存储器104)的方法200。在一些实施例中,方法200可以由存储器控制器(例如,存储器控制器102)执行。

在202处,方法200可以包括接收要被存储在存储器(例如,存储器104)中的数据,所述数据具有针对具有第一逻辑值的位和具有第二逻辑值的位的m1:n1比的分布,其中m和n是实数。例如,在一些实施例中,m1可以等于n1。

在204处,方法200可以包括将数据变换成偏斜数据,所述偏斜数据具有针对具有第一逻辑值的位和具有第二逻辑值的位的m2:n2比的分布。值m2和n2可以是不同于彼此且分别不同于m1和n1的实数。在一些实施例中,第一逻辑值可以是逻辑0,第二逻辑值可以是逻辑1,并且m2可以大于n2。例如,在一些实施例中,m2:n2比的分布可以是大约0.6:0.4到大约0.8:0.2。在一些实施例中,在204处变换数据可以包括向数据添加冗余位。

在206处,方法200可以包括将偏斜数据写入到存储器中。

图3图示出根据各种实施例的用于从存储器(例如,存储器104)读取数据的方法300。在一些实施例中,方法300可以由存储器控制器(例如,存储器控制器102)执行。方法300可以结合以上讨论的方法200执行(例如,以读取在方法200期间写入的数据)。

在302处,方法300可以包括从存储器读取传出数据。传出数据可以包括针对具有第一逻辑值的位和具有第二逻辑值的位的m2:n2比的分布。

在304处,方法300可以包括将传出数据变换成具有针对具有第一逻辑值的位和具有第二逻辑值的位的m1:n1比的分布。

图4图示出根据各种实施例的可采用本文所描述的装置和/或方法(例如,存储器控制器102、存储器104、方法200和/或方法300)的示例计算设备400。如所示,计算设备400可以包括多个组件,诸如一个或多个处理器404(示出一个)和至少一个通信芯片406。在各种实施例中,该一个或多个处理器404均可以包括一个或多个处理器核。在各种实施例中,该至少一个通信芯片406可以物理耦合和电耦合到该一个或多个处理器404。在另外的实现方式中,通信芯片406可以是该一个或多个处理器404的一部分。在各种实施例中,计算设备400可以包括印刷电路板(PCB)402。对于这些实施例,该一个或多个处理器404和通信芯片406可以设置在其上。在替换实施例中,各种组件可以被耦合而不采用PCB 402。

取决于其应用,计算设备400可以包括可以或可以不物理耦合和电耦合到PCB 402的其他组件。这些其他组件包括但不限于存储器控制器405、易失性存储器(例如,DRAM 408)、诸如只读存储器410(ROM)和存储设备411(例如,硬盘驱动器(HDD))之类的非易失性存储器、I/O控制器414、数字信号处理器(未示出)、密码处理器(未示出)、图形处理器416、一个或多个天线418、显示器(未示出)、触摸屏显示器420、触摸屏控制器422、电池424、音频编解码器(未示出)、视频编解码器(未示出)、全球定位系统(GPS)设备428、罗盘430、加速度计(未示出)、陀螺仪(未示出)、扬声器432、摄像机434和大容量存储设备(诸如硬盘驱动器、固态驱动器、压缩盘(CD)、数字多功能盘(DVD))(未示出)等等。在各种实施例中,处理器404可以集成在与其他组件相同的管芯上以形成片上系统(SoC)。

在各种实施例中,不是或除了存储设备412,计算设备400可以包括驻留的非易失性存储器,例如闪速存储器412。在一些实施例中,该一个或多个处理器404和/或闪存412可以包括存储编程指令的关联固件(未示出),所述编程指令被配置成使计算设备400响应于由该一个或多个处理器404对所述编程指令的执行而能够实践本文所描述的方法(例如,方法400)的全部或所选方面。在各种实施例中,此外或可替换地,这些方面可以使用与该一个或多个处理器404或闪速存储器412分离的硬件实现。

在各种实施例中,存储器控制器405可以包括本文所描述的存储器控制器102。DRAM 408、闪速存储器412和/或存储设备411可以包括本文所描述的存储器104。存储器控制器405可以被用于从DRAM 408、闪速存储器412和/或存储设备411读取数据,或者向其写入数据。在实施例中,存储器控制器405可以实践方法200和/或300。

在一些实施例中,存储器控制器405可以被包括在计算设备400的存储器控制器中心(MCH)中。此外或可替换地,存储器控制器405可以被包括在计算设备400的一个或多个其他组件(例如,处理器404、DRAM 408、闪速存储器412和/或存储设备411中的一个或多个)中。在一些实施例中,存储器控制器405可以与处理器404中的一个或多个一起封装以形成片上系统(SoC)。

通信芯片406可以实现用于向计算设备400和从计算设备400传递数据的有线和/或无线通信。术语“无线”及其派生词可以用于描述可通过使用经调制的电磁辐射通过非固体介质传送数据的电路、设备、系统、方法、技术、通信信道等。该术语不暗指关联的设备不包含任何线,尽管在一些实施例中,它们可能不包含任何线。通信芯片406可以实现多个无线标准或协议中的任一个,所述无线标准或协议包括但不限于IEEE 702.20、通用分组无线电服务(GPRS)、演进数据优化(Ev-DO)、演进高速分组接入(HSPA+)、演进高速下行链路分组接入(HSDPA+)、演进高速上行链路分组接入(HSUPA+)、全球移动通信系统(GSM)、增强数据速率GSM演进(EDGE)、码分多址(CDMA)、时分多址(TDMA)、数字增强无绳电信(DECT)、蓝牙、其衍生物、以及被指定为3G、4G、5G和更高的任何其他无线协议。计算设备400可以包括多个通信芯片406。例如,第一通信芯片406可以专用于较短距离无线通信,诸如Wi-Fi和蓝牙,并且第二通信芯片406可以专用于较长距离无线通信,诸如GPS、EDGE、GPRS、CDMA、WiMAX、LTE、Ev-DO及其他。

在各种实现方式中,计算设备400可以是膝上型电脑、上网本、笔记本、超极本、智能电话、计算平板、个人数字助理(PDA)、超移动PC、移动电话、台式计算机、服务器、打印机、扫描仪、监视器、机顶盒、娱乐控制单元(例如,游戏控制台或汽车娱乐单元)、数字摄像机、电器、便携式音乐播放器或数字录像机。在另外的实现方式中,计算设备400可以是处理数据的任何其他电子设备。

下文提供了一些非限制性示例。

示例1包括一种用于写入或读取数据的装置,其包括:分布变换器,被配置成:接收要被存储到存储器中的数据,其中所述数据具有针对具有第一逻辑值的位和具有第二逻辑值的位的m1:n1比的分布,其中m1和n1是实数;将所述数据变换成偏斜数据,其中所述偏斜数据具有针对具有第一逻辑值的位和具有第二逻辑值的位的m2:n2比的分布,其中m2和n2是不同于彼此且分别不同于m1和n1的实数;以及输出偏斜数据以存储在存储器中。

示例2包括示例1的装置,其中所述分布变换器还被配置成在将所述数据变换成偏斜数据时添加冗余位。

示例3包括示例1的装置,其还包括:加扰模块,用于接收要被写入到存储器中的未加扰数据并且作为响应对未加扰数据进行加扰并输出加扰数据;以及误差控制编码器,耦合在加扰模块和分布变换器之间以向加扰数据添加误差控制编码,以便生成数据以存储在存储器中,以用于分布变换器。

示例4包括示例1的装置,其中所述存储器是相变存储器。

示例5包括示例4的装置,其中m2大于n2,并且其中第一逻辑值是逻辑0并且第二逻辑值是逻辑1。

示例6包括示例1的装置,其还包括:逆变换器,被配置成接收从存储器读取的传出数据,所述传出数据具有:具有第一逻辑值的位和具有第二逻辑值的位的m2:n2比的分布,并且所述逆变换器被配置成将传出数据从具有m2:n2比的分布变换成具有下述内容:具有第一逻辑值的位和具有第二逻辑值的位的m1:n1比的分布。

示例7包括示例1至6中任一项的装置,其中m1:n1比的分布为大约1:1,并且m2:n2比的分布为大约0.6:0.4到0.8:0.2。

示例8包括一种用于写入或读取数据的方法,其包括:接收要被存储在存储器中的数据,其中所述数据具有针对具有第一逻辑值的位和具有第二逻辑值的位的m1:n1比的分布,其中m1和n1是实数;将所述数据变换成偏斜数据,其中所述偏斜数据具有针对具有第一逻辑值的位和具有第二逻辑值的位的m2:n2比的分布,其中m2和n2是不同于彼此且分别不同于m1和n1的实数;以及将偏斜数据写入到存储器中。

示例9包括示例8的方法,其中将所述数据变换成偏斜数据包括向所述数据添加冗余位以生成偏斜数据。

示例10包括示例10的方法,其中m2大于n2,并且其中第一逻辑值是逻辑0并且第二逻辑值是逻辑1。

示例11包括示例9的方法,还包括:接收要被存储在存储器中的未加扰数据;以及将未加扰数据加扰成具有m1:n1比的分布。

示例12包括示例11的方法,还包括:向加扰数据添加误差控制编码。

示例13包括示例9至12中任一项的方法,其中所述存储器是相变存储器。

示例14包括示例9至12中任一项的方法,还包括:从存储器读取传出数据,所述传出数据具有m2:n2比的分布;以及将传出数据变换成具有m1:n1比的分布。

示例15包括一种用于读取或写入数据的系统,其包括:存储器和耦合到存储器的写入模块。所述写入模块包括分布变换器,所述分布变换器用于:接收要被存储在存储器中的数据;以及将所述数据变换成偏斜数据,其中所述偏斜数据具有针对逻辑0位和逻辑1位的m2:n2比的分布,其中m2和n2是实数并且m2大于n2。所述写入模块还被配置成将偏斜数据写入到存储器中。

示例16包括示例15的系统,其中所述分布变换器还向所述数据添加冗余位以将所述数据变换成偏斜数据。

示例17包括示例15的系统,其中所述分布变换器被配置成接收具有针对逻辑0位和逻辑1位的m1:n1比的分布的数据,其中m2和n2分别不同于m1和n1,并且所述系统还包括耦合到存储器且包括逆变换器的读取模块,所述逆变换器被配置成:从存储器接收传出数据,所述传出数据具有针对逻辑0位和逻辑1位的m2:n2比的分布;以及将传出数据变换成具有针对逻辑0位和逻辑1位的m1:n1比的分布。

示例18包括示例17的系统,其中所述写入模块还包括:加扰模块,被配置成接收传入数据,将传入数据加扰成具有逻辑0位和逻辑1位的1:1比的分布,以及将加扰的传入数据传递到分布变换器以被偏斜;以及误差控制编码器,耦合到加扰模块并被配置成向加扰数据添加误差控制编码。

示例19包括示例18的系统,其中所述读取模块还包括:逆加扰模块,用于接收被逆变换器变换之后的传出数据以及对传出数据进行解扰;以及误差控制解码器,用于对传出数据上的误差控制编码进行解码。

示例20包括示例16至19中任一项的系统,其中m2:n2比的分布为大约0.6:0.4到0.8:0.2。

尽管已经出于描述的目的而在本文中说明和描述了某些实施例,但本申请意图涵盖本文讨论的实施例的任何改编或变形。因此,明显地意图在于本文描述的实施例应仅由权利要求限制。

在本公开记载“一”或“第一”元件或其等同物的情况下,这样的公开包括一个或多个这样的元件,既不要求也不排除两个或更多个这样的元件。另外,针对所标识的元件的序数指示符(例如,第一、第二或第三)用于在元件之间进行区分,且不指示或暗指要求或受限的数目的这样的元件,它们也不指示这样的元件的特定位置或次序,除非以其他方式具体声明。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1