MLCSTT‑MRAM数据写入方法及装置、数据读取方法及装置与流程

文档序号:12609540阅读:291来源:国知局
MLC STT‑MRAM数据写入方法及装置、数据读取方法及装置与流程
本发明属于存储器领域,尤其涉及一种MLCSTT-MRAM数据写入方法及装置、数据读取方法及装置。
背景技术
:MLC是Multi-levelCell(多级单元)的简称,即在一个存储器单元格中存放两个及两个以上的比特,而STT-MRAM是Spin-TransferTorqueMagneticRandomAccessMemory(自旋磁存储器)的简称。MLCSTT-MRAM中的数据时存储于MTJ中,全称是magnetictunnelingjunction(磁隧道结)。MLCSTT-MRAM的设计主要有两种,一种是平行MTJ设计,另一种是连续MTJ设计。由于平行MTJ设计的STT-MRAM在能耗以及可靠性上都要优于连续MTJ设计的STT-MRAM,所以大多数的研究都集中于前者上。平行MTJ由固定磁化方向的referencelayer(参考层)以及可变磁化方向的freelayer(自由层)组成,而自由层又分为harddomain(硬区域)与softdomain(软区域)。MTJ的电阻状态是通过改变施加于其中的电流方向进而改变自由层的磁化方向来改变的。自由层中软区域的磁化方向可以通过施加较小的电流来改变;而改变硬区域的磁化方向时,由于施加的电流较大,软区域的磁化方向也会被一同改变为与硬区域相同的磁化方向。一般规定两个区域磁化方向相同的两种状态为“00”与“11”,分别对应电阻最小与电阻最大的两个状态;而两区域磁化方向不同的状态为“10”与“01”,“10”的电阻较“01”大。一般地,当写入新数据时,会采取读后写的策略,即将旧数据读出,对比新旧数据,然后按照写策略写入。当数据相同时,则不需要替换旧数据;当只有软区域的数据不同而需要更改时,则只需要对MTJ施加一个较小的正向或反向电流,来改变软区域的磁化方向;而当硬区域的数据不相同时,如果新数据是“00”或者“11”,那么只需要对MTJ施加一个较大的正向或反向电流,使硬区域与软区域的磁化方向相同,而如果新数据是“01”或者“10”时,则需要两步,第一步施加较大的电流,改变MTJ状态为“00”或“11”,第二步施加较小的电流,改变软区域的磁化方向。所以,只改变软区磁化状态所需要的能量相较改变硬区域磁化状态的能耗要小的多。目前对STT-MRAM能耗优化大多采用制造工艺的改进与提升的方法,该方法需要时间的积累,这个过程可能会持续很长时间;其次,还有采用硬件电路实现针对于某种非易失性存储器的编写策略,该方法是利用存储器的某些特性来针对存储器本身所做的优化;还有通过软件实现数据的编解码,对写入的数据进行优化。但是,上述方法仅仅是考虑了单一因素来优化STT-MRAM能耗,优化的效率以及效果差。技术实现要素:为了解决现有技术的缺点,本发明提供一种MLCSTT-MRAM数据写入方法及装置、数据读取方法及装置。本发明可以大大减少MLCSTT-MRAM数据写入和读取时的能耗。为实现上述目的,本发明采用以下技术方案:一种MLCSTT-MRAM数据写入方法,包括:步骤a:将新数据从缓存器传输至MLCSTT-MRAM的写队列中等待写入;步骤b:通过比较新旧数据,获得写入MLCSTT-MRAM时的每种数据状态改变单元格硬区域磁化状态的数量与未改变硬区域磁化状态的数量,进而得到相应的映射类型;步骤c:筛选出需要改变MLCSTT-MRAM硬区域磁化状态数量最少的映射类型为重映射方式,并利用重映射方式对新数据进行数值重映射;步骤d:根据相应写策略,将重映射后得到的数据和映射类型一起写入MLCSTT-MRAM中。所述步骤b中获得写入MLCSTT-MRAM时的每种数据状态改变单元格硬区域磁化状态的数量,需要获得八个数值,分别是写入新数据的数据状态‘00’、‘01’、‘10’和‘11’时改变的硬区域磁化状态的数量与未改变的数量。通过获得这八个数值,可以分析得到交换某两个状态后,总体要改变的硬磁化区域状态数量是否减少,比如写入状态‘00’时,其总量为6,硬磁化区域改变的数量为4,未改变的数量为2,,而写入总数为8的状态‘11’时,硬磁化区域改变的数量为5,未改变的数量为3,那么若未交换两种状态,硬磁化区域改变的数量为4+5=9个,而通过状态重映射将两种数据状态交换后,硬磁化区域改变的数量则为2+3=5个,明显少于未交换前的9个。在所述步骤b中,假设互换新数据中左位不相同的两个数据状态,计算互换后总的硬区域磁化状态的数量的变化,如果减少,那么该互换是可进行,否则,该互换不可进行。在所述步骤b中,将新数据中左位不同的数据状态互换,总共有四种情况:‘00’与‘10’;‘00’与‘11’;‘01’与‘10’;‘01’与‘11’。其中,‘00’与‘10’互换,‘01’与‘11’互换不相互冲突;同样地,‘01’与‘10’互换,‘00’与‘11’互换不相互冲突。所以,将不冲突的互换分到同一组,四组互换可以分为两组,通过比较这两组最终可以减少的硬区域磁化状态的数量,挑选出减少硬区域磁化状态数量较多的一组,生成映射类型,并根据映射类型对新数据进行重映射。在所述步骤d中,按照写策略,如果新旧数据相同,则不需要改变磁隧道结的状态。如果只有软区域的磁化状态需要改变,那么只对MTJ施加较小的电流,如果软区域的数据由“0”变“1”,那么施加反向的电流,否则施加正向的电流;如果硬区域的状态需要改变,且新数据是“00”或者“11”,那么写“00”则对MTJ施加正向电流,写“11”施加反向电流;如果硬区域的状态需要改变,且新数据是“01”或者“10”,则需要进行两步写:第一步施加正向或者反向电流使MTJ中的数据变为“00”或者“11”,第二步按照改变软区域磁化状态的方式对MTJ施加电流。一种MLCSTT-MRAM数据写入装置,包括:数据传输部,其用于将新数据从缓存器传输至MLCSTT-MRAM的写队列中等待写入;映射类型获取部,其用于通过比较新旧数据,获得写入MLCSTT-MRAM时的每种数据状态改变单元格硬区域磁化状态的数量与未改变硬区域磁化状态的数量,进而得到相应的映射类型;数据映射部,其用于筛选出需要改变MLCSTT-MRAM硬区域磁化状态数量最少的映射类型为重映射方式,并利用重映射方式对新数据进行数值重映射;写策略部,其用于根据相应写策略,将重映射后得到的数据和映射类型一起写入MLCSTT-MRAM中。所述映射类型获取部还包括硬区域磁化状态的数量获取模块,其用于分别写入新数据的数据状态‘00’、‘01’、‘10’和‘11’,得到改变的硬区域磁化状态的数量。假设互换新数据中左位不相同的两个数据状态,计算互换后总的硬区域磁化状态的数量的变化,如果减少,那么该互换是可进行,否则,该互换不可进行。一种MLCSTT-MRAM数据读取方法,包括:步骤A:将需要读取得的数据从MLCSTT-MRAM内存中读出并传送到读队列,所述需要读取得的数据包括重映射的数据与映射类型;步骤B:根据映射类型的信息,对重映射的数据进行反向重映射,获取相应的原数据;其中,所述原数据由所述的MLCSTT-MRAM数据写入方法写入MLCSTT-MRAM内存。一种MLCSTT-MRAM数据读取装置,包括:数数据读出部,其用于将需要读取得的数据从MLCSTT-MRAM内存中读出并传送到读队列,所述需要读取得的数据包括重映射的数据与映射类型;反向重映射部,其用于根据映射类型的信息,对重映射的数据进行反向重映射,获取相应的原数据;其中,所述原数据由所述的MLCSTT-MRAM数据写入方法写入MLCSTT-MRAM内存。本发明的有益效果为:(1)本发明在某一写策略的基础上,对新写入的数据进行优化,通过与未经优化的数据进行对比发现,经过优化后的数据再写入到存储器中,可以大大减少写入时的能耗。由于改变MLCSTT-MRAM的硬磁化区域的磁化状态较改变软磁化区域的磁化状态会消耗更多的能量,特别地,当写入数据状态‘01’与‘10’时,需要两步,即先将数据状态写为‘00’(当要写入的数据状态为‘01’时)或‘11’(当要写入的数据状态为‘10’时),之后再改变软磁化区域状态,会消耗比改变硬磁化区域磁化状态得到‘00’与‘11’时更多的能量。通过状态重映射之后,将硬磁化区域磁化状态改变的数量减少,并且由于数据的随机性与数据的局部性原理,软磁化区域改变的数量在绝大部分情况下不会超过硬磁化区域减少数量的两倍,而硬磁化区域状态改变时消耗的能量则是软磁化区域状态改变时消耗能量的两倍以上,所以本策略可以减少整体的写入能耗。(2)本发明还提供了MLCSTT-MRAM数据写入装置,能够结合硬件电路和软件编解码方法来实现针对于某种非易失性存储器的编写策略,进而达到对写入的数据进行优化。(3)本发明是在针对数据的优化策略,并不涉及存储器本身,由于数据本身具有局部性原理,所以在减少硬磁化区域改变数量的同时,整体的写入量并没有增加,并且由于写数据状态‘01’与‘10’时需要两步才能写入,相当于两次写,所以一定程度上减少了写次数,增加了设备的使用寿命。附图说明图1编解码数据流图。图2(a)计算n1X→00电路图。图2(b)计算n0X→00电路图。图3MappingType获取算法实现电路。图4(a)逻辑运算部件I内部结构。图4(b)逻辑运算部件II内部结构。图4(c)逻辑运算部件III内部结构。图4(d)逻辑运算部件IV内部结构。其中,1.读队列,2.写队列,3.可编程四路数据选择器,4.计数器,5.MappingType获取算法部件,6.写策略部件,7.Cache,8.非易失性存储器,9.或门,10.与门,11.10位数值加法运算器,12.逻辑运算部件I,13.逻辑运算部件II,14.9位数值比较器,15.逻辑运算部件III,16.逻辑运算部件IV。具体实施方式下面结合附图与实施例对本发明做进一步说明:在满足经过解码后与原数据一样的前提下:MLCSTT-MRAM数据的编码及写入步骤为:1)新数据从缓存中写回到主存,首先会被传输到写队列中等待写入,要写入的数据宽度为一个缓存行大小。当写队列中的某一数据要写入内存时,内存控制器会先读取相应地址的旧数据,进而与要写入的新数据进行比较。2)通过比较新旧数据,获得写入每种数据状态改变单元格硬区域磁化状态的数量与未改变单元格硬区域磁化状态的数量,需要获得八个数值,分别是写入新数据的数据状态‘00’、‘01’,‘10’,‘11’时改变的硬区域磁化状态的数量,以及未改变的硬区域磁化状态的数量。假设互换新数据中左位不相同的两个数据状态,比如将数据状态‘00’与数据状态‘11’互换,计算互换后总的硬区域磁化状态的数量的变化,如果减少,那么该互换是可以进行的,否则,该互换就不可进行。将左位不同的数据状态互换,那么总共有四种情况:‘00’与‘10’;‘00’与‘11’;‘01’与‘10’;‘01’与‘11’。其中,‘00’与‘10’互换,‘01’与‘11’互换不相互冲突;同样地,‘01’与‘10’互换,‘00’与‘11’互换不相互冲突。所以,我们将不冲突的互换分到同一组,四组互换可以分为两组,通过比较这两组最终可以减少的硬区域磁化状态的数量,挑选出减少硬区域磁化状态数量较多的一组,并通过算法生成映射类型,将映射类型以及新数据输送到可编程四路数据选择器将新数据进行重映射。3)在编码后的数据写入内存时,按照写策略,如果新旧数据相同,则不需要改变MTJ的状态;如果只有软区域的磁化状态需要改变,那么只对MTJ施加电流,如果软区域的数据由“0”变“1”,那么施加反向的电流,否则施加正向的电流;如果硬区域的状态需要改变,且新数据是“00”或者“11”,那么写“00”则对MTJ施加正向电流,写“11”施加反向电流;如果硬区域的状态需要改变,且新数据是“01”或者“10”,则需要进行两步写:第一步施加正向或者反向电流使MTJ中的数据变为“00”或者“11”,第二步按照改变软区域磁化状态的方式对MTJ施加电流。MLCSTT-MRAM数据的读出并解码的步骤为:有读指令到来时,将需要取得的数据从内存中读出并传送到读队列,数据中包括重映射的数据与MappingType。根据MappingType的信息,对重映射的数据进行反向重映射,得到原数据,再将原数据传送到进程中使用。其中,算法1描述了数据的编码写入过程,算法2描述了算法的读出解码过程。在编码部分,最为关键的一点在于获取新数据的重映射方式以及对应的映射类型。由于改变自由层中硬区域的磁化状态要比改变软区域的磁化状态耗费能量更多,如果新数据中写入某一数据状态时改变的硬区域磁化状态更多,即改变的硬区域磁化状态数量大于新数据中该数据状态数量的二分之一,比如旧数据为“00-00-11-00”,而新数据为“11-10-11-11”,那么写入新数据中的状态“11”时改变硬区域的磁化状态数量为2,其原因是:旧数据为“00-00-11-00”,新数据为“11-10-11-11”,写入新数据时,从D0位(最左边)开始,第一个‘11’时,对应的旧数据为‘00’,此时写‘11’时需要改变硬磁化区域状态(硬磁化区域状态由‘0’变‘1’);写第二个‘11’对应的旧数据为‘11’,因为新旧状态相同,此时不需要对这个‘11’进行写入;第三个‘11’对应的旧数据为‘00’,所以写入该‘11’也需要改变相应的单元格中MTJ的硬区域的磁化状态。所以写入新数据中的‘11’时,有两个(从左边数第一个与第四个)需要改变硬区域的磁化状态。而如果将新数据中“00”与“11”互换,那么经过重映射后的数据变为“00-10-00-00”,此时写入重映射数据的中的“00”,硬区域磁化状态改变的数量为1,这样,写入时所消耗的能量就会减少。所有的重映射方式如表1所示。表1重映射方式以及对应的MappingType这些重映射方式都烧到了可编程四路数据选择器中,选择出相应的MappingType,并将该MappingType传输到所有的可编程四路数据选择器中,同时根据要写入的新数据,选择出重映射后的数据。比如,经过算法3后,选择出MappingType为“0100”,新数据为“11-00-01-10”,那么会有四个可编程四路数据选择器中分别对四个2位数据进行重映射,‘11’重映射为‘11’,‘00’重映射为‘10’,‘01’重映射为‘01’,‘10’重映射为‘00’。为了判断新数据中哪两种状态需要互换,需要计算分别写入写数据的每种状态硬区域磁化状态改变以及不改变的数量,记n0X→00为写入新数据中的状态‘00’时不需要改变硬区域磁化状态的数量,即要写入状态‘00’的单元格原状态为‘00’或者‘01’;n1X→00为写入新数据中的状态‘0’时需要改变硬区域磁化状态的数量,单元格原状态为‘10’或者‘11’。相应的还有n0X→01、n0X→10、n0X→11、n1X→01、n1X→10、n1X→11。在MappingType获取算法中,不会产生冲突的交换被分到同一组,比如将与分到一组,和分到另一组。如果将新数据某两个状态交换,比如将‘01’与‘11’交换,那么交换后需要改变的硬区域磁化状态的数量为n1X→01+n0X→11-n1X→11-n0X→01。如果此数量不大于零,表示将新数据中的“01”与“11”交换后,并不会减少硬区域磁化状态改变的数量,所以此交换将不会进行,并且在算法的第二步中用0代替此数量,表示不进行此交换。比较两组交换最终可以减少的硬区域磁化状态改变的数量,来确定哪一组更合适交换。通过MappingType获取算法第3步到第6步,以及算法第8步到第11步,来确定与状态‘00’以及状态“01”交换的状态,并得到MT1与MT2。设置的MappingType高两位表示与状态‘00’交换的状态,如果不产生交换,那么高两位用“00”表示,如果数据状态‘10’与数据状态‘00’交换,那么MappingType的高两位为‘01’,如果是数据状态‘11’与数据状态‘00’交换,那么MappingType的高两位为‘11’,也就是MappingType的高两位数据就是算法中得到的MT1,MappingType的低两位数据即MappingType获取算法中得到的MT2。最后MappingType获取算法的第12步通过MT1与MT2得到MappingType。图1是编解码数据流图。在编码写入部分,分为五个执行步骤。其具体过程为:Cache中的数据写回并存于写队列中。在新数据写入前将旧数据读出并传输到读队列,并利用要写入的新数据与旧数据,通过计数器计算n1X→00等8个数值。将n1X→00等8个数值传输入MappingType获取算法部件并获取相应的MappingType。可编程四路数据选择器会根据MappingType将新数据的数值重映射。重映射后得到的数据以及得到的MappingType经过写策略部件后根据相应的写策略写入非易失性存储器。通过上述5个步骤,将新数据编码并写入的非易失性存储器中。在读出解码部分,只要分为两个个执行步骤。其具体过程为:将要读出的数据读出并传输到读队列中。可编程四路数据选择器会根据MappingType将旧数据的数值反向重映射,并传输到进程中。本发明还提供了一种MLCSTT-MRAM数据写入装置,包括:数据传输部,其用于将新数据从缓存器传输至MLCSTT-MRAM的写队列中等待写入;映射类型获取部,其用于通过比较新旧数据,获得写入MLCSTT-MRAM时的每种数据状态改变单元格硬区域磁化状态的数量与未改变硬区域磁化状态的数量,进而得到相应的映射类型;数据映射部,其用于筛选出需要改变MLCSTT-MRAM硬区域磁化状态数量最少的映射类型为重映射方式,并利用重映射方式对新数据进行数值重映射;写策略部,其用于根据相应写策略,将重映射后得到的数据和映射类型一起写入MLCSTT-MRAM中。本发明的映射类型获取部和数据映射部共同构成如图2中的编码器,其中,映射类型获取部包括计算器,其用于计算并获取写入新数据的数据状态‘00’、‘01’、‘10’和‘11’时改变的硬区域磁化状态的数量。映射类型获取部包括MappingType获取算法部件,其用于筛选出需要改变MLCSTT-MRAM硬区域磁化状态数量最少的映射类型为重映射方式;四路数据选择器,其用于利用重映射方式对新数据进行数值重映射。本发明还提供了一种MLCSTT-MRAM数据读取装置,包括:数据读出部,其用于将需要读取得的数据从MLCSTT-MRAM内存中读出并传送到读队列,所述需要读取得的数据包括重映射的数据与映射类型;反向重映射部,其用于根据映射类型的信息,对重映射的数据进行反向重映射,得到原数据,再将原数据传送至进程中使用。其中,反向重映射部为如图2中译码器,其中译码器采用四路数据选择器来实现。图2(a)中,一种用于计算n1X→00的电路设计,为了方便展示,假设要写入的数据为8位(实际要写入的数据长度为cacheline的大小,为512位),新数据中通过每两位高位与低位或后非,可以得到新数据中状态“00”的位图,比如新数据为“00-10-00-11”,那么每两位高低与低位相或,可以得到“0-1-0-1”,之后对此数据取反得到“1-0-1-0”,这样就将新数据中状态“00”的位置通过1标记出来。相似地,新数据中的状态“01”可以通过每两位中高位取反后再与低位相与来的到“01”的位图,新数据中的状态“10”的位图可以通过每两位中低位取反后再与高位相与得到,新数据中的状态“11”的位图可以通过每两位中低位与高位直接相与得到。为了得到n1X→00,还需要知道旧数据中状态“10”以及“11”的位图,那么可以直接取旧数据中每两位的高位,之后将新数据中“00”的位图与旧数据中“1X”的位图相与,就得到了“1X→00”的位图,之后统计其中“1”的数量即可。图2(b)中,一种用于计算n0X→00的电路设计,这里与图2(a)不同的是取得的旧数据每两位的高位后,要取反得到旧数据中“0X”的位图。图3中,一种用于获取MappingType的算法实现电路。由于每次写入到内存的数据大小为512个比特,所以n1X→00等8个数中,最大的为256且有且只有一个,最小的为0,那么其中任意两个数相加减,最大为256,最小为-256,所以部件11采用10位数值加法运算器,并且参与相加的数都采用补码形式。这样,n1X→00+n0X→10-n1X→10-n0X→00、n1X→01+n0X→11-n1X→11-n0X→01、n1X→00+n0X→11-n1X→11-n0X→00与n1X→01+n0X→10-n1X→10-n0X→01可以同时经过两步运算得出,得到的四个数值经过部件12,逻辑运算部件I,如果数值小于0,此时该数值的d9位为1,那么该数值经过部件12后,会生成全0的9位数值,否则,数值不变。经过部件12处理后的四个数值,再经过10位数值加法器得到两个数值,这两个数值就是两个交换组分别可以减少的硬区域磁化状态改变的数量。这两个值再经过部件14,9位数值比较器的比较,如果相等,那么P=Q端会输出低电平,P>Q端输出高电平;如果左侧数值大于右侧,那么P>Q端输出低电平,P=Q端会输出高电平;如果右侧数值大于左侧,那么P>Q与P=Q端都会输出高电平。那么这两个输出端相与,如果输出为低电平,表示P≥Q,否则表示P<Q,那么输出为低电平时,左侧的交换组被选中,否则右侧的交换组被选中。逻辑运算部件I12输出的9位数值,经过逻辑运算部件II13,逻9位数值相或,如果该数值是个大于等于0的数值,那么9位数值至少有一个为1,那么逻辑运算部件II13输出为1,表示该交换可以进行;如果等于零,那么9位数值全部为0,该部件输出为0,那么该交换不可被执行。逻辑运算部件III15与逻辑运算部件IV16通过ABC的数值来生成MT1与MT2,赋值表如表2与表3所示。通过该表设计得到如图4(c)与图4(d)的设计电路。表2获取MT1赋值表表3获取MT2赋值表ABCMT2001/000011/01111/000011/0101上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1