掌桥专利:专业的专利平台
掌桥专利
首页

RAM真随机数生成器

文献发布时间:2024-04-18 20:00:25


RAM真随机数生成器

相关申请的交叉引用

本申请要求享受于2021年3月21日递交的美国临时专利申请63/163,892的优先权,该申请以引用方式并入本文。

技术领域

概括地说,本发明涉及随机数生成器,并且具体地说,本发明涉及真随机数硬件生成器。

背景技术

许多应用都需要随机数,应用例如统计采样、计算机模拟和密码学。随机数生成是生成无法合理预测的数字序列或任何其他符号的过程。随机数生成器(RNG)所产生的序列将包含一些模式,这些模式在事后看来可以辨别,但在预见中不可预测。伪随机数生成器(PRNG)生成如下数字,这些数字看似随机但实际上是预先确定的,并且可以通过了解输入到PRNG的“种子”值以及PRNG的状态来再现。大多数软件实现的随机数生成器都是PRNG。

相比之下,来自真随机数生成器(TRNG)的数字序列是物理环境的函数,该物理环境以无法被建模的方式变化,例如测量大气噪声、热噪声和材料的放射性衰变。需要随机性的关键应用(例如安全性)通常使用硬件随机数生成。

发明内容

因此,根据本发明的优选实施例,提供了一种真随机数生成器系统。所述系统包括RAM阵列、空读取控制器和哈希生成器。所述RAM阵列具有存储器单元和感测放大器。所述存储器单元中存储有数据,所述单元按行连接到字线并且按列连接到位线对,并且所述感测放大器感测差分输入信号。所述空读取控制器通过所述RAM阵列的一部分的所述感测放大器实现空读取操作。所述哈希生成器接收来自所述空读取操作的空读取结果,并基于所述空读取结果输出部分真随机数。

此外,根据本发明的优选实施例,当位线对被连接到所述感测放大器时,所述差分输入信号在所述位线对上;或者当局部数据线对被连接到感测放大器时,所述差分输入信号在所述局部数据线对上。

进一步地,根据本发明的优选实施例,所述空读取控制器包括差分电压调节器(DVC)和字线覆写器(WLO)。所述DVC在所述空读取操作期间使所述感测放大器中的所述感测放大器偏移电压最小化。在对所述位线对中的一位线对上的所述差分输入信号的空读取期间,所述WLO使行控制器停止激活连接的字线,所述连接的字线连接到所述存储器单元的行。

更进一步地,根据本发明的优选实施例,所述WLO输出字线地址禁用(WLAD)信号以禁用由所述行解码器进行的所有字线激活。

另外,根据本发明的优选实施例,所述WLO输出未连接的字线选择(UWLS)信号以使所述行控制器能够仅激活未连接的字线。所述未连接的字线未被连接到所述存储器单元的所述行。

此外,根据本发明的优选实施例,在所述空读取操作之前,所述DVC通过以下操作来调节所述位线对:对于每个位线对使存储的0和1的数量相等、执行附加RAM No-OP周期、执行有效读取操作、或者执行有效写入0并随后执行有效读取操作。

替换地,根据本发明的优选实施例,所述空读取控制器包括差分电压调节器(DVC)和列控制器。所述DVC在空读取操作期间使所述感测放大器中的所述感测放大器偏移电压最小化。在对所述局部数据线对上的所述差分输入信号的空读取期间,所述列控制器使所述列传送栅极停止将所述位线对连接至所述局部数据线对。

此外,根据本发明的优选实施例,在所述空读取操作之前,所述DVC通过以下操作来调节所述局部数据线对:使连接到所述局部数据线对的存储的0和1的数量相等、执行附加RAM No-OP周期、执行有效读取操作、或者执行有效写入0并随后执行有效读取操作。

进一步地,根据本发明的优选实施例,所述RAM阵列是SRAM(静态随机存取存储器)阵列。

更进一步地,根据本发明的优选实施例,所述RAM阵列是DRAM(动态随机存取存储器)阵列。

另外,根据本发明的优选实施例,所述空读取操作是单个空读取、多个顺序空读取、或者多个同时空读取。

此外,根据本发明的优选实施例,所述RAM阵列存储空读取结果。

替换地,根据本发明的优选实施例,所述空读取控制器连结(concatenate)两个空读取结果以形成经连结的空读取结果。

进一步地,根据本发明的优选实施例,所述RAM阵列存储部分真随机数。

更进一步地,根据本发明的优选实施例,所述哈希生成器连结两个部分真随机数以形成真随机数。

另外,根据本发明的优选实施例,所述存储器单元是6T SRAM、8T SRAM、双端口SRAM或多端口SRAM。

另外,根据本发明的优选实施例,多个RAM阵列被布置成RAM体。

根据本发明的优选实施例,提供了一种用于RAM(随机存取存储器)阵列的方法。所述方法包括执行空读取操作。

此外,根据本发明的优选实施例,执行空读取操作包括:将所述RAM阵列中的差分线对预充电至预定电压,以及通过感测放大器对所述差分线对上的差分信号进行差分读取,而不在所述预充电之后将第二差分信号从存储器单元接收到所述差分线对上。

另外,根据本发明的优选实施例,当位线对被附接到所述感测放大器时,所述差分线对是所述位线对;或者当局部数据线对被附接到所述感测放大器时,所述差分线对是所述局部数据线对。

此外,根据本发明的优选实施例,通过以下操作在所述预充电之前调节所述差分线对:对于所述每个差分线对使存储的0和1的数量相等、执行附加RAM No-OP周期、第二执行有效读取操作、或者第三执行有效写入0并随后执行有效读取操作。

更进一步地,根据本发明的优选实施例,差分读取包括:使能字线地址禁用(WLAD)信号以禁用由行解码器进行的所有字线激活,或者使能未连接的字线选择(UWLS)信号使所述行控制器仅激活未连接的字线,所述未连接的字线是未被连接到所述存储器单元的行的字线。

替代地,根据本发明的优选实施例,所述差分读取包括:使列传送栅极停止将所述位线对连接到所述局部数据线对,所述位线对还连接到所述存储器单元的所述列。

因此,根据本发明的优选实施例,提供了一种用于生成真随机数的方法。所述方法包括:将RAM阵列的一部分中的差分线对预充电至预定电压、对所述差分线对上的差分信号进行空读取、接收来自所述空读取的空读取结果、以及基于空读取结果生成部分真随机数。

此外,根据本发明的优选实施例,当位线对被附接到所述感测放大器时,所述差分线对是所述位线对;或者当局部数据线对被附接到感测放大器时,所述差分线对是所述局部数据线对。

进一步地,根据本发明的优选实施例,所述空读取包括通过所述感测放大器对所述差分线对上的所述差分信号进行差分读取,而不在所述预充电之后将第二差分信号从存储器单元接收到所述差分线对上。

更进一步地,根据本发明的优选实施例,差分读取包括:使能字线地址禁用(WLAD)信号以禁用由行解码器进行的所有字线激活,或者使能未连接的字线选择(UWLS)信号使所述行控制器仅激活未连接的字线,所述未连接的字线是未被连接到所述存储器单元的行的字线。

替代地,根据本发明的优选实施例,所述差分读取包括:使列传送栅极停止将所述位线对连接到所述局部数据线对,所述位线对还连接到所述存储器单元的所述列。

另外,根据本发明的优选实施例,所述空读取是单个空读取、多个顺序空读取、或者多个同时空读取。

此外,根据本发明的优选实施例,所述方法包括:将空读取结果第一存储在RAM阵列中。

进一步地,根据本发明的优选实施例,所述方法包括:第一连结两个空读取结果以形成经连结的空读取结果。

更进一步地,根据本发明的优选实施例,所述方法包括:将所述部分真随机数第二存储在所述RAM阵列中。

此外,根据本发明的优选实施例,所述方法包括:将至少两个所述部分真随机数第二连接以形成真随机数。

另外,根据本发明的优选实施例,所述方法包括:通过以下操作在所述预充电之前调节所述差分线对:对于所述每个差分线对使存储的0和1的数量相等、执行附加RAM No-OP周期、第二执行有效读取操作、或者第三执行有效写入0并随后执行有效读取操作。

附图说明

被认为是本发明的主题在说明书的结尾部分被特别指出并明确要求保护。然而,本发明关于组织和操作方法,连同其目的、特征和优点,在结合附图阅读时可以通过参考以下具体实施方式得到最好的理解,其中:

图1是标准6T SRAM(静态随机存取存储器)存储器单元的示意示出;

图2是SRAM存储器阵列的示意示出;

图3是预充电电路的示意示出;

图4是感测放大器电路的示意示出;

图5A和图5B是STRNG(SRAM真随机数生成器)系统的示意示出;

图6A和图6B是SRAM阵列中的行解码器实施方式的示意示出;

图7A至图7D是感测放大器和哈希生成器的输入和输出的示意示出;以及

图8是具有列解码器和列传送栅极的SRAM存储器阵列的示意示出。

应当理解,为了说明的简单和清晰,图中所示的元素不一定按比例绘制。例如,为了清楚起见,一些元素的尺寸可能相对于其他元素被夸大了。此外,在认为适当的情况下,附图标记可以在附图中重复以指示相应或类似的元素。

具体实施方式

在下文的具体实施方式中,阐述了大量具体细节以便提供对本发明的透彻理解。然而,本领域的技术人员将理解是:可以在不使用这些具体细节的情况下来实施本发明。在其他实例中,没有对公知的方法、过程和组件进行详细描述,以防止模糊本发明。

申请人已经认识到标准6T SRAM(静态随机存取存储器)阵列中的元件可以用在真随机数生成器(TRNG)系统中。为了理解TRNG系统的操作,将介绍SRAM阵列的结构和操作。

SRAM背景

现在参考图1,其示出了由六个晶体管组成的标准6T SRAM存储器单元100,并且参考图2,其示出了多个单元100的SRAM存储器阵列200。

6T SRAM单元100的四个晶体管(未示出)形成标准触发器元件102,该标准触发器元件102具有定义为单元100的逻辑“0”和“1”状态的两个稳定电压状态。通常,高电压值定义逻辑“1”,而低电压值定义逻辑“0”。单元通过节点Q输出其存储值,并通过节点Q’输出其补值。因此,如果单元100存储值“1”,则节点Q处的电压值反映值“1”并且互补节点Q’处的电压值反映值“0”。

两条位线BL和BL’用于从单元传输数据以进行读操作。位线BL和BL’分别经由控制对单元的存取的两个传输晶体管N1和N2连接到触发器102。

如图2所示,存储器阵列200中的单元被布置在矩阵中。同一列中的所有单元100经由每个单元的存取晶体管N1和N2连接到同一位线对BL和BL’。同一行中的所有单元都连接到同一字线WL。通过用适当的电压对所需列的位线BL和BL’进行充电来选择单元的列。行解码器16通过将所选择行的字线WL充电至高来控制行选择。

当行解码器16根据ADD、输入行地址选择字线WL时,由于晶体管N1和N2的栅极连接到字线WL,因此所选择行中的所有单元100的栅极晶体管N1和N2被激活。然后可以存取单元100的内容以进行读操作。因此,所选择的单元100是位于字线WL与列的位线对BL和BL’的交叉点处的单元。

SRAM读取操作

为了读取6T SRAM单元100的状态,首先,通过连接到位线BL和BL’的预充电电路300将两条位线BL和BL’预充电到高电压电平。现在参考图3,其示出了标准预充电电路300的示例性实施方式。预充电电路300包括三个晶体管N3至N5。晶体管N3是控制电压源VDD与位线BL的连接的选通晶体管。晶体管N4是控制电压源VDD与位线BL’的连接的选通晶体管。晶体管N5是控制位线BL与位线BL’的连接的选通晶体管。所有晶体管N3至N5的栅极均由预充电使能信号PCEN控制。

为了对位线BL和BL’进行预充电,可以使能信号PCEN,这会导通所有晶体管N3至N5。位线BL和BL’二者都可以被充电至VDD。在预定时间Tpc之后,然后位线BL和BL’上的电压电平可以稳定,信号PCEN可以被禁用,从而使位线BL和BL’以平衡电压浮置为高。

然后,行解码器16激活字线WL,字线WL激活单元100中的传输晶体管Nl和N2,从而将节点Q和Q’分别连接到位线BL和BL’。当连接时,节点Q和Q’的电压电平将分别影响位线BL和BL’上的最终电压。节点Q和Q’中的一个存储逻辑值“1”,或者VDD处的电压电平,而节点Q和Q’中的另一个存储逻辑值“0”,或者VSS处的电压电平。例如,当晶体管N1和晶体管N2导通时,则如果单元100存储“1”,并且节点Q等于1并且节点Q’等于0,则位线BL上的电压电平保持在电压VDD并且位线BL’上的电压电平开始通过晶体管N2被触发器102拉低。如果单元100存储“0”,则位线BL’上的电压电平保持在电压电平VDD并且位线BL上的电压电平开始被拉低。如下文所解释的,感测放大器(SA)400根据单元100的内容来测量位线BL和BL’上的最终电压电平。

在预定时间T

晶体管N8由信号SAEN激活,从而造成SA 400输出等于逻辑“1”或逻辑“0”的单元读取值。当SAEN使能时,晶体管N8导通并将节点D拉低。如果位线BL上的电压电平高于位线BL’上的电压电平,则晶体管N7比晶体管N6具有更大的驱动强度。然后,在初始下降之后,位线BL’被拉低,并且位线BL被晶体管N9拉回高。反相器I1和I2然后将位线BL上的信号缓冲至逻辑1作为SA的输出SAOUT。因此,SA 400输出逻辑“1”,指示单元100正在存储值“1”。对于存储值“0”则反向为真。

电路100中的存储器单元晶体管由用于小存储器单元尺寸的最小尺寸晶体管组成。在读取操作期间用于拉低位线BL和BL’的晶体管驱动能力较弱。位线BL和BL’是高电容线,其具有许多连接的单元100。因此,位线BL和BL’需要时间放电,并形成信号余量以克服固有的SA偏移电压。

SA偏移电压包括以下各项的加和:

1、SA 400电路中NMOS交叉耦合晶体管对N6和N7的VT(阈值电压)和GM(跨导)不匹配。

2、SA 400电路中PMOS交叉耦合晶体管对N9和N10的VT(阈值电压)和GM(跨导)不匹配。

3、位线BL和BL’的电容不匹配。

4、位线BL和BL’的漏电流不匹配。

空读取操作

申请人已经认识到,在可定义为“空读取”操作期间,即使没有单元被读取,感测放大器也可以比较位线BL和BL’之间的差分电压信号。

如上所述,在预充电之后,位线BL和位线BL’上的电压可以相等并保持在电压电平VDD。当字线WL被激活时,位线BL或BL’可以被拉低,如上文所解释的。在空读取情况下,其中没有字线WL被激活,当SAEN导通并且SAOUT基于上文讨论的SA偏移电压而翻转到1或0时,SA400仍可以执行感测。

空间随机性

SA偏移电压随机分布在整个芯片上。相邻SA可以具有变化的偏移电压,其中一些SA具有有利于位线BL的偏移电压,而另一个SA具有有利于BL’的偏移电压。因此,SAOUT上的空读取值可能因芯片上的不同位置而异,并且在给定位置中也因不同芯片而异。

时间随机性

申请人还认识到,芯片中的多个感测放大器可能具有如此小的SA偏移电压,使得SAOUT上的空读取值可能在受诸如电噪声、温度效应等变化的物理效应影响的不同空读取周期之间变化。由于这些效应随时间变化,因此随机SAOUT可以被定义为“时间随机”。

真随机数生成器系统

申请人已经认识到,由于SRAM普遍嵌入在处理器、GPU、FPGA和微控制器的设计中,因此在正常操作下用于嵌入式存储器存储的SRAM存储器阵列也可以用作真随机数生成器系统的基础。申请人还认识到,来自SRAM空读取的输出可以用作哈希编码器的输入以输出真随机数。

申请人已经认识到,通过将SRAM空读取到哈希生成器的输出保持完全在要求保护的系统的域内,它不能被外部实体改变,从而保证了过程的完整性。

参考图5A,其是SRAM真随机数生成器(STRNG)500的图示。STRNG 500包括CPU 51、SRAM阵列53(类似于图2中的SRAM阵列200)、哈希生成器56和空读取控制器(NRC)58。NRC 58包括差分电压调节器(DVC)54和字线覆写器(WLO)59。

CPU 51可以控制SRAM阵列53内的行解码器16、预充电电路300和SA 400(如图2所示)的操作。NRC 58可以向CPU 51提供技术以执行单个或多个空读取操作。WLO 59可以应用额外的字线调节,如下文所解释的,使得SA 400可以在空读取操作期间进行差分位线测量而无需单元100读取。DVC 54可以应用调节技术,如下文所解释的,使得位线BL和BL’可以在空读取操作期间变得更精确地平衡。

SRAM阵列53可以将空读取结果NR输出到哈希生成器56,或者可以将结果NR存储在SRAM阵列53中。哈希生成器56可以对结果NR进行哈希以产生随机数RN,使得RN=H(NR),其中H是哈希生成器56的哈希函数。

在替代实施例中,SRAM真随机数生成器可以包括组织成SRAM体的多个SRAM阵列。简要参考图5B,其示出了替代STRNG,标记为500’。STRNG 500’与STRNG 500的相似之处在于STRNG 500’包括CPU 51、哈希生成器56和差分电压调节器(DVC)54。然而,在该实施例中,STRNG 500’包括多个SRAM体52,每个SRAM体包括多个SRAM阵列53。CPU 51可以连接到每个SRAM阵列53、以及每个SRAM体52、NRC 58和哈希生成器56。

如在STRNG 500中,CPU 51可以控制多个SRAM阵列53中的任何一个内的所有行解码器16、所有预充电电路300和所有SA 400的操作。STRNG 500’可以对多个SA 400执行空读取操作,这些SA 400可以在单个SRAM阵列53上连续、在单个SRAM阵列53上不连续、在单个SRAM体52中的多个SRAM阵列53上不连续,或在多个SRAM体52的多个SRAM阵列53上不连续。同样,输出NR可以以连续或非连续的方式被存储。

申请人已经意识到,STRNG 500或500’可以使用标准行解码器来执行空读取操作,该标准行解码器访问任何SRAM阵列53中未被连接到单元100的行的字线。参考图6A,其示出了连接到行解码器16’和SRAM阵列53’的存储器单元100的NRC 59(类似于图2所示)。如上所解释的,SRAM阵列53’的行解码器16’可以访问其字线W

申请人已经认识到,通过具有比存储器阵列53’中的存储器单元100的行数更多的字线WL,则在任何存储器阵列53’中,可以存在未被连接到单元100的任何行的多条字线WL。例如,如果行解码器16’接收地址ADD,其可以是8位地址(具有256个可能的地址)ADD[0:7],则行控制器16’可以控制256条字线W

简要参考图6B,其示出了SRAM阵列53”的替代实施例,包括行解码器16”,行解码器16”从WLO 59接收字线地址禁用信号WLAD(经由NRC 59并经由CPU 51)。当被激活时,信号WLAD可以禁用来自行解码器16”的所有字线输出W

参考图7A至图7D,图7A至图7D示出了SA 400和哈希生成器56的输入和输出(类似于图6A中所示的那些)。如图7A所示,SRAM阵列53可以一次利用多个R个SA 400来执行空读取。在空读取操作之后,SA 400可以将空读取结果NR的R个位输出到哈希生成器56。

哈希生成器56可能需要M位的输入G,如图7B所示。

如图7C所示,如果M大于R,则SRAM阵列53可以进行多个空读取,例如:NR1、NR2和NR3,并且然后可以形成经连结(concatenate)的M位输出G,适合于用于哈希生成器56的输入。

应当理解,STRNG 500’不是进行多个空读取,而是SA 400的单个集合可以对SRAM阵列53的不同区域中的多个SA 400和/或跨相同或不同SRAM体52中的多个SRAM阵列53的多个SA 400进行多个同时的空读取。

如图7D所示,如果哈希生成器56需要M位的输入G,并且如果M小于R,则阵列53可以将结果NR的R位的子集输出到哈希生成器56。

应当注意,诸如SHA-K之类的密码哈希函数可以采用M位的可变长度输入并产生K位的固定长度输出。例如,输入序列M可以是32768位,而输出序列K可以是256位,例如在SHA-256中。

申请人已经认识到,如果哈希生成器56需要作为输入G的位数M包括至少K个随机位,则H(M)是K位的真随机数。

申请人已经认识到,在任何给定时间,大约5%的感测放大器可以产生时间随机数据。因此,只要M的5%大于K,那么G的哈希值H(G)就可以是K位的真随机数。

还应当注意的是,如果所需的真随机数(TRNG-N)具有N位,并且从哈希生成器53输出的位数为K位,则如果K大于N,则哈希生成器56可以输出K位哈希生成器输出的N位子集。然而,如果K小于N,则系统500可以调用多个空读取和哈希生成,然后可以将其连结以形成完整的N位的TRN。

位线差分电压调节

在正常读取操作期间,预充电时间Tpc可能不够长,无法使位线BL和BL’完全等同于电压电平V

(i)为了确保对位线BL和BL’的适当预充电,DVC 54可以添加额外的SRAM No-OP周期以确保位线BL和BL’可以完全相等并被预充电为高电平。No-OP周期是指在预充电后没有对单元100进行读取或写入的时间。

(ii)为了避免这种泄漏的影响,DVC 54可以确保对于每个位线对所存储的0和1的数量相等。例如,可以用交替存储的0和存储的1来写入列。

(iii)为了确保平衡的位线BL和BL’,DVC 54可以在空读取之前进行有效读取。有效读取是其中字线WL激活单元100的读取。

(iv)为了确保平衡的位线BL和BL’,DVC 54可以在空读取之前进行有效写入0,随后进行有效读取。类似地,有效写入是字线WL激活单元100的写入。

有效读取或有效写入操作之后的空读取可能会在先前的操作和数据背景上产生进一步的不可预测的结果。

替代实施例

如图4所示的SA 400的设计仅是示例,也可以使用本领域已知的感测放大器设计的变型。

尽管在图1和图2中描述了标准6T SRAM,但是替代实施例可以利用8T SRAM、双端口SRAM以及多端口SRAM。

参考图8,其示出了RAM阵列53”’的替代实施例,其还包括差分局部数据线对LDL和LDL’、LDL预充电电路81、列解码器82、列传送栅极83和NRC 58。列传送栅极83可用于将多个列差分位线对BL和BL’复用到差分局部数据线对LDL和LDL’,使得差分局部数据线对LDL和LDL’可以连接到SA 400,而不是差分位线对BL和BL’被直接连接到SA 400,如上文所述。列传送栅极83可以由列解码器82使用列线CL来解码。在LDL预充电电路81对局部数据线对LDL和LDL’进行预充电且使其相等之后,NRC 58可以通过禁用列解码器82来执行空读取操作(类似于行解码器16可以被禁用的方式,如上所述),使得LDL和LDL’未连接至BL和BL’并且存储器单元100不产生信号。

STRNG的替代实施例可以在DRAM(动态随机存取存储器)上实现,因为DRAM在其感测放大器中也具有类似的差分感测机制。

空间随机性

如上所述,具有大偏移电压的SA 400可以在空读取操作期间产生相同且一致的逻辑输出,并且具有非常小的偏移电压的SA 400可以逐个空读取周期地产生随机逻辑输出。

申请人已经认识到,感测放大器的偏移电压分布可以根据SRAM芯片上的不同位置而不同,并且还可以根据不同SRAM芯片而不同。因此,跨多个SRAM位置进行空读取的结果可以是不可预测的,并且可以是“空间随机的”。

同样,位线BL和BL’可以具有比平均单元泄漏更多的弱单元。这些弱单元可以在空间上随机分布在SRAM位置上,并且也可以用作随机数生成的基础。

尽管本文已经说明和描述了本发明的某些特征,但本领域普通技术人员现在将想到许多修改、替换、改变和等价物。因此,应当理解,所附权利要求意在涵盖落入本发明真正精神内的所有这些修改和变化。

技术分类

06120116526586