CN1503128A - 具有支持多任务运算的随机数产生器的微处理器及方法 - Google Patents
具有支持多任务运算的随机数产生器的微处理器及方法 Download PDFInfo
- Publication number
- CN1503128A CN1503128A CNA031581889A CN03158188A CN1503128A CN 1503128 A CN1503128 A CN 1503128A CN A031581889 A CNA031581889 A CN A031581889A CN 03158188 A CN03158188 A CN 03158188A CN 1503128 A CN1503128 A CN 1503128A
- Authority
- CN
- China
- Prior art keywords
- register
- microprocessor
- rng
- value
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims description 145
- 230000015654 memory Effects 0.000 claims abstract description 141
- 238000012360 testing method Methods 0.000 claims description 64
- 230000009471 action Effects 0.000 claims description 37
- 238000003860 storage Methods 0.000 claims description 27
- 238000012546 transfer Methods 0.000 claims description 27
- 238000000151 deposition Methods 0.000 claims description 18
- 238000001914 filtration Methods 0.000 claims description 14
- 230000010076 replication Effects 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 12
- 230000008569 process Effects 0.000 description 104
- 238000010586 diagram Methods 0.000 description 19
- 101000845237 Cereibacter sphaeroides Tryptophan-rich sensory protein Proteins 0.000 description 16
- 101000845206 Homo sapiens Putative peripheral benzodiazepine receptor-related protein Proteins 0.000 description 16
- 101000845233 Homo sapiens Translocator protein Proteins 0.000 description 16
- 102100031269 Putative peripheral benzodiazepine receptor-related protein Human genes 0.000 description 16
- 239000000872 buffer Substances 0.000 description 12
- 238000009825 accumulation Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 10
- 238000004422 calculation algorithm Methods 0.000 description 8
- 238000009826 distribution Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 238000004088 simulation Methods 0.000 description 5
- 101100400452 Caenorhabditis elegans map-2 gene Proteins 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 230000002269 spontaneous effect Effects 0.000 description 2
- 241001673391 Entandrophragma candollei Species 0.000 description 1
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 239000003638 chemical reducing agent Substances 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000010355 oscillation Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000000528 statistical test Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microcomputers (AREA)
- Executing Machine-Instructions (AREA)
- Retry When Errors Occur (AREA)
- Storage Device Security (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种微处理器,其包括的随机数产生器(RNG),可存储及回存工作切换时其本身的状态,而不需操作系统(OS)支持。RNG包括用以存储控制值的控制与状态寄存器(CSR),其会影响随机数的产生。RNG会以由OS存储及回存的SSE寄存器来遮蔽CSR。每当SSE寄存器从内存回存,RNG会设定用以表示可能已发生工作切换的标志。每当处理器执行将随机数据存储至内存的新指令时,会检查此标志,在标志为真时,将控制值从SSE寄存器复制到CSR,除检查标志外,处理器还会丢弃先前所产生的字节,并重新开始产生随机数。本发明还公开了一种使多个软件应用程序能使用一微处理器中的随机数产生器(RNG)的方法。
Description
技术领域
本发明涉及随机数产生的领域,尤其涉及在执行多任务操作系统的微处理器中的随机数产生器的使用,即具有支持不拘操作系统的多任务运算的随机数产生器的微处理器及方法。
背景技术
就历史来看,许多计算机应用软件需要提供随机数。例如,物理现象的蒙地卡罗模拟,如大规模的天气模拟,就需要提供随机数,以模拟物理现象。需要使用随机数的其它例子为娱乐游戏及在线娱乐游戏,以模拟洗牌,掷骰子等;彩券号码的产生;统计分析资料的产生,如心理学的测验;以及计算机游戏。
在这些形式的应用中,所需的随机度,以及对产生随机数的效能要求是不同的。许多应用软件,如计算机游戏,对于随机度的要求是不高的。心理学测验上的应用,对随机度有着更严格的要求,但效能需求则相当低。然而,大规模的运用蒙地卡罗的模拟会有非常高的效能需求,且需要良好的随机数统计特性,虽然不可预测性并非特别重要。其它的应用,如在线娱乐游戏,则对于随机度及不可预测性都有非常严格的要求。
虽然上述这些应用仍然是重要的,但是在计算机安全领域,则对高品质随机数有最大的需求。最近,个人计算机网络及互联网交易的爆炸性成长,对于各种安全机制的需求,已明显地增加。
对所有计算机安全的主要构成要素而言,高品质的随机数都是必要的。这些要素包含机密性、身份确认以及数据完整性。
数据加密为提供机密性的主要机制。有许多种不同的加密算法,如对称式加密、公有密钥及一次性密码本,但是这些算法都具有一关键特性,即加密/解密密钥不能被简单地预测出来。一个加密系统的密码强度基本上即是其所用密钥的强度,即预测、猜想或计算解密密钥的难度多高。最好的密钥为够长的真随机数,而在所有严格要求安全的应用中,随机数产生器为产生密码密钥的基础。
许多对密码算法成功的攻击,已非专注于加密算法,而是专注于产生随机数的来源。一个为人熟知的例子是,网景的安全套接层(Secure SocketsLayer,SSL)的早期版本,会从系统时脉与程序ID表搜集数据,以产生软件伪随机数产生器的起始值。所产生的随机数用来产生一对称密钥,以加密对话数据。有二个研究生想出了可准确猜测随机数的程序,在一分钟内,就猜出对话密钥,破坏这个机制。
与解密密钥类似,用以确认存取信息的使用者身份的密码,其强度实际上就是预测或猜测密码的难度有多高。最好的密码为够长的真随机数。此外,在有使用挑战协议(challenge protocol)的验证协议(authentication protocol)中,关键因素就是使挑战无法由进行确认的一方加以预测。而随机数则是用来产生确认身份的挑战。
数字签名及信息摘要是用来确保网络上通讯的完整性。随机数是用于大部分的数字签名算法,以使恶意的一方难于伪造签名。随机数的品质会直接影响到签名的效力。总而言之,良好的安全需要良好的随机数。
数值本身不是随机的。随机度的定义必须不仅包括所产生的数值的特征,而且也包括用以产生数值的产生器的特征。运用软件的随机数产生器是常见的,并且对于许多应用而言已足够。然而,对某些应用来说,软件产生器是不够的。这些应用需要硬件产生器,其可产生与由随机物理程序所产生数值的特征相同的数值。此处,重要的特征是,其产生数值所具有的统计分布的无偏差程度,以及不可预测与不可重制的程度。
具有无偏差的统计分布,是意谓所有的值具有相等的发生机率,无论样本大小为何。几乎所有的应用都要求其随机数具有良好的统计分布,而高品质的软件随机数产生器通常能满足此需求。只满足无偏差统计分布的需求的产生器称为伪随机数产生器。
不可预测性是指在一位序列中,正确猜测下个位的机率应刚好为一半,无论先前所产生的位值为何。某些应用不需要此种不可预测性的特征;然而,对安全应用所使用的随机数而言,则是要紧的。若使用软件产生器,则要有效满足不可预测性的需求,必须隐藏软件算法及其初始值。从安全的观点而言,隐藏算法的做法是非常不保险的。对于使用可预测的隐藏算法随机数产生器的应用软件而言,有不少安全上遭致破坏的例子是为人所熟知的。同时满足前二种需求的产生器称为密码安全伪随机数产生器。
产生器若为不可重制的,则二个具有相同起始条件的相同产生器,必须产生不同的输出。软件算法不能满足此需求。只有基于随机物理程序的硬件式产生器,能产生满足安全所需的严格不可重制性的数值。满足所有三个需求的产生器称为真随机数产生器。
软件算法是用来产生计算机应用所需的大部分随机数。这些称为伪随机数产生器,这是因为这些产生器不能满足不可预测性及不可重制性的需求。再者,有些也不能满足无偏差统计分布的需求。
通常,软件产生器以一初始值或籽数(seed)开始工作,该初始值有时是由使用者所提供。产生器以该初始值执行算术运算,以产生第一随机结果,其作为产生第二结果的籽数,依此类推。软件产生器必然是循环式的,最终其会重复相同的输出序列。猜测籽数就等于能预测整个所产生的数值序列。其不可重制性只与算法及初始籽数的机密程度一样,而这可能是安全上的应用并不想要的特性。再者,软件算法是可重制的,因为以相同输入开始,其会产生相同的结果。最后,软件算法不必然会产生输出数据大小的范围内的每个可能的值,这可能无法完全满足无偏差统计分布的需求。
有一种随机数产生器,是软件产生器与纯硬件产生器混合而成,称为熵产生器(entropy generator)。熵为不可预测性的另一种说法。产生器所产生的数值愈不可预测,产生器所具有的熵就愈多。熵产生器会将软件算法应用于由物理现象所产生的籽数。例如,常用的PC加密程序会记录几秒钟的鼠标移动及键盘敲击的特性,以获得其所需的籽数。这些动作不见得会产生不理想的熵数,且通常需要使用者某种程度的涉入。对多数的熵产生器而言,最不理想的特征就是要花很多时间,才能达到足够的熵。
从前文可清楚得知,某些应用,包括安全上的应用,需要由随机物理程序才能产生的随机数,如横跨半导体二极管或电阻器的热噪声、自发振荡器的频率不稳定度或是在特定的时间周期内,半导体电容器的充电量。这几种随机数源已用于一些商业用途的加入式(add-in)随机数产生器装置,如PCI卡及串行总线装置。这些装置在商业上的使用并不广泛,明显是因为它们不是相当慢就是相当贵。
有一种可提供便宜、高效能的硬件随机数产生器的解决方案,是将其并入微处理器内。随机数产生器可利用前述的随机物理程序产生随机数,并且成本相当低廉,因为其可并入既有的半导体晶粒中。要将新特征加入微处理器所需克服的一项障碍,就是使操作系统也能支持新特征。
大多数理想的操作系统都具备多任务的概念。若操作系统能使多个程序或工作分享处理器的执行时间,就是多任务的操作系统。即,操作系统允许一项工作可支配微处理器执行一段时间,而后操作系统允许另一项工作支配微处理器执行下一段时间,依此类推。每一工作具有其相关的状态,如其所使用的微处理器寄存器的值。为便于多任务运行,操作系统会将所切换掉的工作的状态存储到内存,并且从内存回存所切换到的工作的状态,其在先前被切换掉时即已存储。
若一新特征已加入微处理器,如随机数产生器,包括其状态信息,像是存储于新寄存器中且可由软件程序指令存取的值,则假使不只有一项工作会使用新特征,操作系统必须于切换工作时维护此状态。虽然操作系统厂商未来终会提供对存储与回存新特征状态的支持,但速度上是缓不济急的。若新特征确为所需,如快速的真随机数产生器,则应用程序在操作系统能提供支持之前,就会想运用此特征。
因此,我们所需要的就是一种微处理器,其本身包含一种机制,可用以存储及回存其随机数产生器的状态。
发明内容
本发明提出一种微处理器,其包括用以存储及回存其硬件随机数产生器状态的装置及方法,而不需操作系统的支持。因此,为了达到上述的目的,本发明的一项特征是,提出一种用以执行多任务操作系统的微处理器。此微处理器具有连接至其本身的内存。此微处理器包括一寄存器,于工作切换时由操作系统进行存储及回存。此微处理器也包括一存储标志的标志寄存器,连接至此寄存器,此标志若设定,则表示可能发生工作切换。当微处理器执行加载寄存器的指令时,会设定此标志。此微处理器也包括一随机数产生器(RNG),连接至寄存器,其依据存储于控制寄存器中的一或多个控制值而产生随机数。控制寄存器于工作切换时不由操作系统进行存储及回存。此微处理器包括第一指令,用以将控制值加载至控制寄存器,并也将这些值加载至寄存器。此微处理器也包括第二指令,用以将随机数存储至内存,并且若标志已设定,则将这些值从寄存器复制到控制寄存器。
如上所述的装置,其中,该寄存器包括一SSE寄存器。
如上所述的装置,其中,该寄存器包括一MMX寄存器。
如上所述的装置,其中,该寄存器包括一FPU寄存器。
如上所述的装置,其中,在将该寄存器的这些内容复制到该控制寄存器之后,该微处理器清除该标志。
如上所述的装置,其中,在将该控制值加载至该控制寄存器及该寄存器之后,该微处理器清除该标志。
如上所述的装置,其中,该一或多个控制值包括用以选择性地使能/禁止该随机数产生器中的一过滤装置的一个值。
如上所述的装置,其中,该过滤装置包括用以避免在这些随机数中产生一串N个连续相似位的一过滤器。
如上所述的装置,其中,该一或多个控制值选取包含于该随机数产生器中的二或多个随机位产生器其中之一,以产生随机位,累积至这些随机数中。
如上所述的装置,其中,该一或多个控制值选择性地使能/禁止该随机数产生器,以产生这些随机数。
如上所述的装置,其中,该一或多个控制值选择性地使能/禁止该随机数产生器的一连续数值测试。
如上所述的装置,其中,该一或多个控制值选择性地使能/禁止该随机数产生器的一自测试。
如上所述的装置,其中,该一或多个控制值选择性地使能/禁止该随机数产生器中的一位白化器。
如上所述的装置,其中,该一或多个控制值指定一直流偏压,用于部分地控制振荡器的一操作电压,以该随机数产生器中产生随机位。
如上所述的装置,其中,还包括:一计数器,包含于该随机数产生器中,用以维持包含这些随机数的有效字节的一计数值。
如上所述的装置,其中,该第二指令除将这些随机数存储至该内存外,还存储该计数值。
如上所述的装置,其中,该第二指令将该计数值存储至该内存。
如上所述的装置,其中,该第二指令将该计数值存储至该微处理器内的一使用者可见寄存器。
如上所述的装置,其中,该第二指令连续地执行该计数值与这些随机数的存储。
如上所述的装置,其中,若该标志设定,则在存储该计数值之前,该微处理器会清除该计数值。
如上所述的装置,其中,只有在该复制动作改变该控制寄存器的该一或多个控制值时,该微处理器才清除该计数值。
如上所述的装置,其中,该第二指令是不可中断的。
如上所述的装置,其中,若该标志设定,则该微处理器依据从该寄存器复制到该控制寄存器的这些内容,重新开始产生这些随机数。
如上所述的装置,其中,只有在该复制动作改变该控制寄存器的该一或多个控制值时,该微处理器才依据这些内容,重新开始产生这些随机数。
如上所述的装置,其中,若该标志设定,则该微处理器会丢弃在将该控制值从该寄存器复制到该控制寄存器之前,所产生的这些随机数。
如上所述的装置,其中,若该微处理器执行一加载该寄存器的指令,则只有在该指令从该内存加载该寄存器时,才设定该标志。
本发明的另一项特征是,提出一种使多个软件应用程序能使用微处理器中的随机数产生器(RNG)的方法,此微处理器是执行多任务操作系统(OS),而此操作系统在工作切换期间,不会存储及回存随机数产生器的状态。此方法包括第一工作将第一值加载RNG寄存器及非RNG寄存器;OS将第一值从非RNG寄存器存入连接至微处理器的内存;在OS存储第一值后,第二工作将第二值加载RNG寄存器;以及OS将第一值从内存回存至非RNG寄存器。此方法也包括在OS将第一值从内存回存至非RNG寄存器后,RNG将第一值从非RNG寄存器复制到RNG寄存器;以及在RNG复制第一值之后,RNG依据第一值产生随机数据。
如上所述的方法,其中,还包括:在该第一工作将该第一值加载该RNG寄存器及该非RNG寄存器后,该RNG依据该第一值产生随机数据。
如上所述的方法,其中,该OS将该第一值从该非RNG寄存器存入该内存的动作,是由该OS作为切换至该第二工作的工作切换的一部分来执行。
如上所述的方法,其中,还包括:在该第二工作将该第二值加载该RNG寄存器之后,该RNG依据该RNG寄存器中的该第二值产生随机数据。
如上所述的方法,其中,该OS将该第一值从该内存回存至该非RNG寄存器的动作,是由该OS作为切换至该第二工作的工作切换的一部分来执行。
如上所述的方法,其中,还包括:该RNG响应该OS将该第一值从该内存回存至该非RNG寄存器的动作,设定一标志,以表示可能发生一工作切换。
如上所述的方法,其中,还包括:在该RNG设定该标志之后,该第一工作执行要求将随机数据存至该内存的一指令。
如上所述的方法,其中,还包括:在该第一工作执行该指令之后,该RNG判断该标志是否设定。
如上所述的方法,其中,该RNG将该第一值从该非RNG寄存器复制到该RNG寄存器的动作,是依据该判断该标志是否设定的动作,而选择性地执行。
如上所述的方法,其中,还包括:在该OS将该第一值从该非RNG寄存器存入该内存,且该第二工作将该第二值加载该RNG寄存器之后,该RNG丢弃由该RNG所产生的随机数据。本发明的再一项特征是,提出一种使微处理器能让多个软件应用程序使用其中的随机数产生器(RNG)的方法,此微处理器是执行多任务操作系统(OS),而此操作系统在工作切换期间,不会存储及回存随机数产生器的状态至内存。此方法包括对于第一工作执行第一指令,响应以将第一值加载RNG寄存器及非RNG寄存器;以及对于第一工作执行第二指令,响应以将第一值从非RNG寄存器复制到RNG寄存器。此复制动作是于OS已将第一值从内存回存至非RNG寄存器之后执行。此方法也包括在将第一值从非RNG寄存器复制到RNG寄存器之后,依据第一值产生随机数据。
如上所述的方法,其中,还包括:响应于该OS将该第一值从该内存回存至该非RNG缓存器寄存器,而设定一标志,以表示可能发生工作切换。
如上所述的方法,其中,还包括:判断该标志是否设定,其中该判断系是响应该第一工作执行要求将随机数据存至该内存之一的一第二指令而进行。
如上所述的方法,其中,该复制动作系是依据该判断而选择性地执行。
如上所述的方法,其中,还包括:若该标志已设定,则在该复制动作之前,丢弃由该RNG所产生的随机数据。
本发明的一项优点是,使微处理器内高效能的真随机数产生器(RNG)能由处理器上所执行的多个工作来分享,即使操作系统(OS)还未支持随机数产生器的工作切换。这样,就能在操作系统提供支持前使用上述特征,提高开发者开发使用随机数产生器的应用程序的可能性,以使此特征可应用于商业用途,进一步促使操作系统开发者更快地将随机数产生器的多任务支持内含于操作系统中。本发明以额外硬件上很低的要求,有利地提供此能力。
在参考本说明书的其余部份及附图后,本发明的其它特征及优点将更为明显易知。
附图说明
图1是本发明微处理器的方框图;
图2是本发明图1的微处理器中RNG单元的方框图;
图3是本发明图1微处理器中,与图1RNG单元有关的各种寄存器的方框图;
图4是根据本发明,图1的微处理器执行将值加载图3 XMM0寄存器的指令的运行流程图;
图5是根据本发明,图1微处理器在执行XLOAD指令时的运行方框图;
图6是根据本发明,图1的微处理器执行XLOAD指令的运行流程图;
图7是根据本发明,图1微处理器在执行XSTORE指令时的运行方框图;
图8是根据本发明,图1的微处理器执行XSTORE指令的运行流程图;
图9是根据本发明,图1微处理器进行关于随机数产生的多任务运行范例的动作流程图;
图10是根据本发明,图1微处理器中,图2RNG单元的串过滤装置的方框图;
图11是根据本发明,图10的串过滤装置的运行流程图;
图12是根据本发明的另一具体实施例,图1微处理器执行XSTORE指令的运行方框图;
图13是根据本发明,图2 RNG单元的多重缓冲运行的流程图;
图14是根据本发明的另一具体实施例,图1微处理器执行XLOAD指令的运行流程图;
图15是根据本发明的另一具体实施例,图1微处理器100执行XSTORE指令的运行流程图;
图16及17是根据本发明的另外具体实施例,图1微处理器执行XSTORE指令的运行方框图。
其中,附图标记说明如下:
100:微处理器 102:指令高速缓存
104:指令提取器 106:指令转译器
108:寄存器文件 112:地址产生器
114:加载单元 116:执行阶段
118:储存单元 122:回写单元
124:写入缓冲器 126:读取缓冲器
128:总线接口单元(BIU) 132:微码ROM
134:SSE单元 136:随机数产生器(RNG)单元
138:处理器总线 142,144:数据总线
146:中断单元 148:中断信号
152:中断向量
202:自测试单元 204:CPUID寄存器
206:随机位产生器0 208:随机位产生器1
211:计数器0 212:机器特定寄存器(MSR)
213:计数器1 214:多路复用器
215:第二多路分用器 216:白化器
217:第三多路分用器 218:移位寄存器
219:第四多路复用器 221:递增信号
222:连续数目测试(CNT)单元
223:清除信号 224:串过滤装置
225:比较器 226:控制与状态寄存器(CSR)
227:full1信号 228:第二多路复用器
229:full0信号 231:power_cntrl信号
232:多路分用器 234:可用字节计数
236:第三多路复用器 238:寄存器R5
242:缓冲器0 244:控制逻辑
246:缓冲器1 248:重置信号
252:产生器选择信号 254:原始位信号
256:过滤失败信号 258:max_cnt信号
262:过滤使能信号 264:fill_select信号
266:store_select信号 268:xstore信号
272:xload信号 274:TSPO标志寄存器
278:数据总线 282:字节产生信号
284:CNT使能信号 286:RNG存在信号
288:自测试失败信号 292:自测试使能信号
294:CNT失败信号 296:直流偏压信号
298:随机数据字节
302,314:RNG存在位 312:RNG使能位
316:自测试使能位 318:自测试失败位
322:直流偏压位 324:原始位
332,362:可用字节计数字段
334:串过滤装置使能位 336:产生器选择位
338:串过滤装置失败位 342:CNT使能位
344:CNT失败位 346:串过滤装置max_cnt字段
352:SSE寄存器 364:随机数据字节字段
372:XMM0 374:XMM5
376:XMM3
402-404:微处理器执行将值加载XMM0寄存器的指令的运行流程
502:系统内存 504:16个字节数据
602-612:微处理器执行XLOAD指令的运行流程
702:可用字节计数 704:随机数据字节
802-824:微处理器执行XSTORE指令的运行流程
902-952:微处理器进行关于随机数产生的多任务运行范例的动作流程
1002:比较逻辑 1004:或门
1006:选择逻辑 1008:与门
1012A:第一加法器 1012B:第二加法器
1014A:第一多路复用器 1014B:第二多路复用器
1016A:第一计数器 1016B:第二计数器
1022A:num_leading_ones信号
1022B:num_leading_zeros信号
1024A:ones_cnt信号 1024B:zeros_cnt信号
1026A:new_ones_cnt信号 1026B:new_zeros_cnt信号
1028A:num_trailing_ones信号
1028B:num_trailling_zeros信号
1032A,1032B:固定零值 1032A:ones_exceeded信号
1034B:zeros_exceeded信号
1036A:leading_ones信号 1036B:leading_zeros信号
1038A:trailing_ones信号 1038B:trailing_zeros信号
1042A:one_select信号 1042B:zero_select信号
1044:max_cnt_exceeded信号
1046A:第一比较器 1046B:第二比较器
1048A:all_ones信号 1048B:all_zeros信号
1102-1148:串过滤装置的工作流程
1202:EAX寄存器
1302-1334:RNG单元的多重缓冲运行的流程
1702:ECX寄存器 1704:ES:EDI
具体实施方式
现请参照图1,其是本发明的微处理器100的方框图。图1的微处理器100为包括多个阶段的管线化微处理器,其中每一阶段负责整个程序指令执行过程的一部份,如下所述。
微处理器100包括一随机数产生器(RNG)单元136。微处理器100所执行的操作系统及应用程序,可能会使用随机数来执行各种功能,如数据加密、物理现象的模拟、统计分析、数值分析或是其它。RNG单元136会产生用于这些功能的随机数。RNG单元136将于下文做更详细地说明。
微处理器100也包括一指令高速缓存102。指令高速缓存102会高速缓存从连接至微处理器100的系统内存所提取的程序指令。
微处理器100也包括一指令提取器104,其连接至指令高速缓存102。指令提取器104会控制从系统内存及/或指令高速缓存102提取指令的动作。指令提取器104会选取一个值给由微处理器100所维护的指令指针(instruction pointer)。指令指针会指定下个内存地址,以从该处提取指令。一般来说,指令指针会顺序递增,而指到下个指令。然而,流程控制指令(如分支(branch)、跳跃、副例程呼叫及返回)会将指令指针更新为流程控制指令所指定的非顺序内存地址。此外,中断可能驱使指令提取器104将指令指针更新为非顺序地址。
微处理器100也包括一中断单元146,其连接至指令提取器104。中断单元146会接收一中断信号148及一中断向量152。微处理器100之外的组件可能会使能中断信号148,并提供中断向量152,以使微处理器100执行中断服务例程。中断单元146会依据中断向量152,决定中断服务例程的内存地址,并将中断服务例程的内存地址送到指令提取器104,以将指令指针更新为中断服务例程地址。中断单元146也会依照微处理器100所执行的特定指令,选择性地禁止及使能中断服务。即,若中断被禁止,则即使中断信号148被使能,指令指针的内容也不会改变,直到中断被使能为止。
微处理器100也包括一指令转译器106,其连接至指令提取器104、中断单元146及RNG单元136。指令转译器106会转译从指令高速缓存102及/或系统内存所接收的指令。指令转译器106会转译指令,并依据转译指令的形式采取适当的动作。指令转译器106会转译微处理器100的指令集中所定义的指令。若指令转译器106要转译未定义在微处理器100指令集中的指令,则会产生不合法的指令异常。
在一具体实施例中,微处理器100的指令集实质上近似于英特尔PentiumIII或Pentium IV微处理器的指令集。然而有利的是,本发明的微处理器100包括额外的指令,其有关于RNG单元136的随机数产生功能。一个额外的指令为XSTORE指令,可存储RNG单元136所产生的随机数。另一额外的指令为XLOAD指令,可从系统内存将控制值加载RNG单元136中的控制与状态寄存器(control and status register,CSR)226及单指令多数据流扩展(Streaming SIMD Extensions,SSE)寄存器XMM0372,这部分在下文会配合图2及图3做说明。XSTORE及XLOAD指令在下文也会做更详细地说明。
此外,指令转译器106会将转译指令的相关信息送到中断单元146,以使中断单元146能适当地使能及禁止中断。再者,指令转译器106会将转译指令的相关信息送到RNG单元136。例如,指令转译器106会将关于转译的XSTORE及XLOAD指令的信息送到RNG单元136。此外,当一将值加载SSE寄存器XMM0372的指令被转译时,指令转译器106会通知RNG单元136,以使RNG单元136采取某些动作,如设定标志,以指出操作系统可能会进行一工作切换,如下文所述。
在一具体实施例中,指令转译器106会将宏指令,如Pentium III或IV的指令,转译为由微处理器100管线所执行的一个或多个微指令。
微处理器100也包括一微码ROM132,其连接至指令转译器106。微码ROM132会存储微程序代码指令,以送到指令转译器106,由微处理器100来执行。微处理器100指令集中的某些指令,是以微程序代码来实作。即,当指令转译器106转译这些指令的其中一个时,指令转译器106会使微码ROM132内的一微指令例程被执行,藉以执行转译的宏指令。在一具体实施例中,XSTORE及/或XLOAD指令是以微程序代码执行。此外,在一具体实施例中,XSTORE及XLOAD指令是连续执行的,此因其为不可中断的。即,在XSTORE及XLOAD指令的执行期间,中断会被禁止。
微处理器100也包括一寄存器文件108,其连接至指令转译器106。寄存器文件108包括微处理器100的使用者可见寄存器,及其它寄存器。在一具体实施例中,寄存器文件1 08中的使用者可见寄存器包括Pentium III或IV的使用者可见寄存器集。图3的SSE寄存器352是包含于寄存器文件108中。SSE寄存器352是由包含于微处理器100中的SSE单元134及RNG单元136来使用,如下所述。尤其,寄存器文件108包括目前操作系统所熟知的寄存器。因此,当操作系统从第一工作切换到第二工作时,操作系统将寄存器文件108的寄存器(包括SSE寄存器352)中关于第一工作的内容,存到系统内存,并从系统内存回存寄存器文件108的寄存器(包括SSE寄存器352)中关于第二工作的内容。
微处理器100也包括一地址产生器112,其连接至寄存器文件108。地址产生器112会依据存于寄存器文件108中的操作数及由指令转译器106转译的指令所提供的操作数,而产生内存地址。特别是,地址产生器112会产生内存地址,以指定系统内存中的位置,由XSTORE指令将多个字节的随机数据存储其中。此外,地址产生器112也产生指定系统内存中的位置的内存地址,由XLOAD指令加载其中的控制值,以由一数据总线142存入图2的CSR 226中。
微处理器100也包括一加载单元114,其连接至地址产生器112。加载单元114会从系统内存中加载数据至微处理器100。加载单元114也包括一数据高速缓存,以高速缓存从系统内存所读取的数据。加载单元114会由数据总线142,将加载的数据送到微处理器100中的执行单元,如SSE单元134、RNG单元136及包含于执行阶段116中的执行单元。特别是,加载单元114会从系统内存加载控制值,存到图2的CSR 226中,以执行XLOAD指令。
微处理器100也包括执行阶段116,其由数据总线142连接至加载单元114。执行阶段116包括执行单元,如算术逻辑单元,其用以执行算术与逻辑运算,像是加、减、乘、除及布尔运算。在一具体实施例中,执行阶段116包括一用以执行整数运算的整数单元,及一用以执行浮点运算的浮点单元。
微处理器100也包括SSE单元134,其连接至加载单元114及指令转译器106。SSE单元134包括算术与逻辑单元,用以执行SSE指令,如包含于Pentium III与IV的SSE或SSE2指令集中的那些指令。在一具体实施例中,虽然图3的SSE寄存器352概念上是包含在寄存器文件108中,但实际上是位于SSE单元134中,用以存储SSE单元134所使用的操作数。
微处理器100也包括RNG单元136,其由数据总线142连接至指令转译器106及加载单元114。RNG单元136提供随机数据字节以及一计数值于数据总线144上,其中该计数值是表示提供给一XSTORE指令的随机数据字节的数量。RNG单元136在下文将会配合其余附图做更详细的说明。
微处理器100也包括一存储单元118,其连接至执行单元116、SSE单元134以及RNG单元136。存储单元118会将数据存储到系统内存及加载单元114中的数据高速缓存。存储单元118会将执行单元116、SSE单元134及RNG单元136所产生的结果存储至系统内存。特别是,存储单元118会将RNG单元136在数据总线144上所提供的XSTORE指令计数及随机数据字节存储至系统内存。
微处理器100也包括一回写单元122,其连接至执行单元116及寄存器文件108。回写单元122会将指令结果回写至寄存器文件108。
微处理器100也包括写入缓冲器124,其连接至回写单元122。写入缓冲器124会保持等待写入至系统内存的数据,如XSTORE指令计数及数据。
微处理器100也包括一总线接口单元(BIU)128,其连接至写入缓冲器124。BIU128是作为微处理器100与一处理器总线138的接口。处理器总线138将微处理器100连接至系统内存。BIU128执行处理器总线138上的总线作业,以在微处理器100与系统内存之间传递数据。特别是,BIU128会执行处理器总线138上的一个或多个总线作业,以将XSTORE指令计数及数据存储至系统内存。此外,BIU128会执行处理器总线138上的一或多个总线作业,以从系统内存加载XLOAD指令控制值。
微处理器100也包括读取缓冲器126,其连接至BIU128及寄存器文件108。对于藉由BIU128从系统内存所接收的数据,在其等待送到加载单元114或寄存器文件108时,读取缓冲器126会将其保存着。特别是,当从系统内存接收的XLOAD指令数据在等待送到加载单元114及其后的RNG单元136时,读取缓冲器126会将此数据保存着。
现请参照图2,其为本发明图1的微处理器100中RNG单元136的方框图。
RNG单元136包括控制逻辑244。控制逻辑244包括大量的组合及顺序逻辑,用以控制RNG单元136中的各种组件。控制逻辑244会接收xload信号272及xstore信号268,其分别表示正执行XLOAD或XSTORE指令。控制逻辑244也会接收重置信号248,其表示正在重置RNG单元136。下面会结合RNG单元136的其余部分,对控制逻辑244做更详细地说明。
RNG单元136也包括一自测试单元202,其连接至控制逻辑244。自测试单元202会从一控制与状态寄存器,称为机器特定寄存器(MSR)212,接收自测试使能信号292,MSR212将在下文配合图3做更详细地说明。MSR212也连接至控制逻辑244。自测试单元202会将自测试失败信号288送到控制逻辑244。若自测试单元202被自测试使能信号292所使能,则自测试单元202会执行各种RNG单元136的自测试。若自测试失败,自测试单元202会产生真值的自测试失败信号288,并送至MSR212。在一具体实施例中,自测试单元202会执行随机数产生器统计测试,如联邦信息处理标准(FIPS)刊物第140-2期的第35-36页所定义的,此处予以参考并入。
在一具体实施例中,自测试单元202在使用者的要求下执行自测试。在一具体实施例中,在微处理器100重置后,自测试单元202会执行自测试。若自测试失败,不论是使用者所要求的或重置后所做的,自测试单元202都会产生真值的自测试失败信号288,其是反映于图3中MSR212的自测试失败位318。控制逻辑244在重置时,会检查自测试失败位318。若自测试失败位318为真,控制逻辑244会设定一伪值的RNG存在信号286,送到MSR212,以更新图3的RNG存在位314。
RNG存在信号286也会送到一CPUID寄存器204,其包括图3的RNG存在位302,而RNG存在位302也会藉由RNG存在信号286来更新。即,CPUID寄存器204的RNG存在位302为MSR212的RNG存在位314的副本。在一具体实施例中,应用程序可藉由执行IA-32指令集中的CPUID指令来读取CPUID寄存器204。若RNG存在位302为伪,则表示RNG单元136并不存在于微处理器100,且微处理器100不具备随机数产生的特征。有利的是,需要随机数的应用可通过RNG存在位302,来检测微处理器100中的RNG单元136是否存在,且若RNG单元136不存在,则选择由另一个也许效能较低的来源来取得随机数。
RNG单元136也包括两个连接至控制逻辑244的随机位产生器,称为随机位产生器0206及随机位产生器1208,随机位产生器206及208都会产生一串随机位,由RNG单元136累积成随机数据的字节。随机位产生器206及208都会接收一电源控制(power_cntrl)信号231,其是用以指定是否关闭随机位产生器206及208的电源。在一具体实施例中,关闭随机位产生器206及208电源的动作包括不送时钟脉冲信号给它们。随机位产生器206及208都会依据微处理器100的随机电气特性(如热噪声),而产生一连串随机数据位。
随机位产生器0206会从MSR212接收一直流偏压信号296。直流偏压信号296传送图3中MSR212的直流偏压位322所存的值。直流偏压信号296的值指定一直流偏压电压,以部分地控制随机位产生器0206中的自发振铃振荡器的工作电压。
以下申请中的美国专利案,申请号为10/046055、10/046054及10/046057,标题分别为“用以产生随机数的装置”、“振荡器偏压变化机制”及“振荡器频率变化机制”,其中均对随机位产生器0 206做了详细说明,此处全部予以参考并入。
RNG单元136也包括一具有两输入端的多路复用器214,其输入端连接至随机位产生器206及208的输出端。多路复用器214依据CSR226所提供的产生器选择信号252,来选择两输入端的其中一个。产生器选择信号252会传送图3中CSR226的产生器选择位336所存储的值。
RNG单元136也包括一范纽曼白化器216,或称压缩器,其连接至多路复用器214的输出端。白化器216是藉由从MSR212所接收的原始位信号254,而选择性地被使能/禁止。原始位信号254会传送存储于图3中MSR212的原始位字段324中的值。若原始位信号254为真,则白化器216让多路复用器214所接收的位直接通过而输出,并不执行白化的功能。白化器216是依据一预定的输入/输出函数,接收来自多路复用器214的一对位并输出两者中任一个位或都不输出,藉以明显降低可能存在于随机位产生器206及208的残余偏压。白化器216的输入/输出函数如下表一所示。
表一
输入 | 输出 |
00 | 无 |
01 | 0 |
10 | 1 |
11 | 无 |
RNG单元136也包括一8位的移位寄存器218,其连接至白化器216。移位寄存器218会暂存从白化器216所接收的随机数据位,将其累积成8位的字节,并输出所累积的随机数据字节。移位寄存器218将一送至控制逻辑244的字节产生信号282设定为真,以表示其已累积并输出一随机数据字节298。
RNG单元136也包括一连续数目测试(CNT)单元222,其连接至移位寄存器218的输出端。CNT单元222会从移位寄存器218接收随机字节298,并对随机字节298进行一连续随机数产生器测试。CNT单元222是依据从CSR 226所接收的CNT使能信号284,而选择性地被使能/禁止。CNT使能信号284会传送存储于图3中CSR 226的CNT使能位342中之值。若连续随机数产生器测试失败,则CNT单元222将一送到CSR226的CNT失败信号294设定为真,并存储于图3中CSR226的CNT失败位344中。
在一具体实施例中,CNT单元222所执行的连续随机数产生器测试,实质上符合FIPS第140-2期中第37页所述的连续随机数产生器测试,其在此予以参考并入。在一具体实施例中,CNT单元222会使用二个8字节的缓冲器(称为“旧”及“新”),来执行测试。在重置及自测试(若有被使能)后,由移位寄存器218所传送的前八个字节会累积于旧缓冲器中。接下来的八个字节则累积于新缓冲器中。执行XSTORE指令时,旧缓冲器中的8个字节会与新缓冲器中的8个字节做比较。若字节不相等,测试即通过,且新缓冲器中的8个字节会被移到旧缓冲器。新缓冲器则被清除,以等待累积新的8个字节。然而,若字节相等,则CNT单元222会将CNT失败信号294设为真,以表示连续随机数产生器测试失败。
在一具体实施例中,只要设定图3的CNT使能位342及CNT失败位344,XSTORE指令传回的可用字节计数值就为0。在一具体实施例中,微处理器100在特定的XSTORE指令执行时,将可用字节计数值及随机数据字节存储至系统内存,其中特定XSTORE指令的执行是启动了该失败的连续随机数产生器测试。
在一具体实施例中,连续随机数产生器测试不会横跨数个并未全部使能该测试的工作。即,当CNT使能位342被设定时,新及旧的缓冲器都会更新,并且连续随机数产生器测试只会因执行XSTORE指令而进行。因此,可确保一特定的工作绝不会接收两组连续且其值相等的8个字节。然而,若二个工作正执行,且其中一个设定CNT使能位342,而另一个并未设定,则RNG单元136可能以XSTORE指令,将8个字节存储至其中一个工作,并产生工作切换,而RNG单元136再以XSTORE指令,将与先前8个字节相等的8个字节存储至另一个工作;然而,在此情况下,连续随机数产生器测试将不会失败。
RNG单元136也包括一串过滤装置(string filter)224,其连接至移位寄存器218的输出端。串过滤装置224会从移位寄存器218接收随机字节298,并选择性地丢弃某些随机字节,如下所述,且输出未丢弃的随机字节。串过滤装置224会确保RNG单元136不会产生比一指定值长的连续相似位(即连续的0位串或连续的1位串)。此指定值是由从CSR226所接收的最大计数(max_cnt)信号258来指定。max_cnt信号258会传送图3中CSR226的串过滤装置最大计数字段346所指定的值。在一具体实施例中,max_cnt346的默认值为26个位。在一具体实施例中,串过滤装置最大计数字段346的值必须至少为8。若串过滤装置224检测到一连续的相似位串长度超过max_cnt258,则串过滤装置224将一过滤失败信号256设为真,此信号是存储于图3中CSR226的串过滤装置失败位338中。串过滤装置224在以下会配合图10到12做更详细地说明。
RNG单元136也包括一具两输入端的第二多路复用器228。其中一输入端是连接至串过滤装置224的输出端,而另一输入端是连接至移位寄存器218的输出端。多路复用器228依据CSR226所提供的过滤使能信号262,而选择其中一输入端,以传送图3中CSR226的串过滤装置使能位334所存的值。
RNG单元136也包括一个具一输入端与两输出端的多路分用器232,其输入端是连接至多路复用器228的输出端。多路分用器电路包括单一数据输入端及多个数据输出端。多路分用器也包括一控制输入端。多路分用器会依据控制输入端的信号来选择多个数据输出端的其中一个,并将数据输入端所接收的数据送到所选的输出端。此处多路分用器232则依据控制逻辑244所提供的填充选择(fill_select)信号264,将输入端所接收的随机数据字节选择性地送到其中一个输出端。
RNG单元136也包括两个数据缓冲器,标示为缓冲器0242及缓冲器1246,都连接至多路分用器232的输出端。缓冲器0242及缓冲器1246藉由XSTORE指令,来累积要存储至系统内存的随机数据字节。在一具体实施例中,缓冲器0242及缓冲器1246各可存储15个字节的随机数据。在一具体实施例中,缓冲器0242及缓冲器1246各可存储16个字节的随机数据。
RNG单元136也包括一具两个输入端的第三多路复用器236,其输入端连接至缓冲器0242及缓冲器1246的输出端。多路复用器236依据控制逻辑244所提供的存储选择(store_select)信号266,选取其输入端的其中一组随机数据字节,以输出至一数据总线278上。
RNG单元136也包括一TSPO标志寄存器274,其连接至控制逻辑244。TSPO标志寄存器274存储一标志,用以表示操作系统所进行的工作切换是否可能发生。TSPO标志寄存器274的使用在以下会做更详细地说明。
RNG单元136也包括一具两输出端的第二多路分用器215,其连接至控制逻辑244。多路分用器215的输入端连接至控制逻辑244,以接收其所产生的递增信号221。每当一随机数据字节存入缓冲器0242或缓冲器1246时,控制逻辑244会将递增信号221设为真。多路分用器215依据fill_select信号264,将其输入端所接收的递增信号221选择性地送到其中一输出端。
RNG单元136也包括一具两输入端的第三多路分用器217,其连接至控制逻辑244。多路分用器217的输入端连接至控制逻辑244,以接收其所产生的清除信号223。每当执行一XSTORE指令时,控制逻辑244会将清除信号223设为真,以使得有效的随机数据字节从缓冲器0242或缓冲器1246中移除。多路分用器217依据store_select信号266,将其输入端所接收的清除信号223选择性地送到其中一输出端。
RNG单元136也包括两个计数器,标示为计数器0211及计数器1213,其连接至多路分用器215及多路分用器217。计数器0211及计数器1213各具有一递增(或计数)输入端。计数输入端连接至多路分用器215的输出端。因此,当控制逻辑244将递增信号221设为真时,计数器0112及计数器1213中由fill_select信号264所指定的一个会递增。计数器0211及计数器1213中也各具有一清除输入端。清除输入端连接至多路分用器217的输出端。因此,当控制逻辑244将清除信号223设为真时,计数器0211及计数器1213中由store_select信号266所指定的一个会被清除为0。
RNG单元136也包括两个比较器225,其连接至计数器0211及计数器1213的输出端。比较器225将计数器0211及计数器1213所输出的计数值,与计数器0211及计数器1213可存储的字节数目做比较,以判断计数器0211及计数器1213是否已满,并产生full0信号229及full1信号227,以将比较结果告知控制逻辑244。
RNG单元136也包括一具两个输入端的第四多路复用器219,其输入端连接至计数器0211及计数器1213的输出端。多路复用器219会依据存储选择(store_select)信号266,选取其输入端的其中一计数值,以输出作为可用字节计数234。可用字节计数234也会送到CSR226。
RNG单元136也包括一寄存器,标示为RNG R5 238,或R5 238。R5 238具有一输入端,其连接至多路复用器236的输出端,以接收数据字节278。R5 238具有另一个输入端,其连接至多路复用器219的输出端,以接收可用字节计数234。R5 238的输出端连接至图1的数据总线144。R5 238会保持XSTORE指令的计数值及数据。在一具体实施例中,计数值是存储于R5 238的最小有效字节中,而有效的数据字节则存储于与此计数值相连的有效字节的位置。在一具体实施例中,R5 238可存储一计数字节,加上缓冲器0242及缓冲器1246所能存储的随机数据字节。
在一具体实施例中,RNG单元136包括四个缓冲器,而非两个。每一缓冲器可存储多达八个字节的随机数据。在此实施例中,多路分用器215、217及232包含具四个输出端的多路分用器;多路复用器219及236包含具四个输入端的多路复用器;比较器225包括四个比较器,以产生四个充满输出;而fill_select信号264及store_select信号266包括二个位,用以选择四个计数器及缓冲器的其中一个。
现请参照图3,其是本发明图1微处理器100中,与图1RNG单元136有关的各种寄存器的方框图。
图3显示图2中的CPUID寄存器204。CPUID寄存器204包括一RNG存在位302。RNG存在位302为只读的特征标志单元。若RNG存在位302为1,则表示RNG单元136存在,并由微处理器100来使能。若RNG存在位302为0,则RNG单元136并不存在,且XLOAD及XSTORE指令为无效的,而当指令转译器106遇到这些指令时,将产生无效指令异常。此外,读取MSR212中的位,结果是未定义,而尝试写入,则不会产生任何效果。RNG存在位302为MSR212的RNG存在位314的副本。
图3也显示图2中的MSR212。MSR212包括一RNG使能位312。RNG使能位312是可写入的。将RNG使能位312写入1会使RNG单元136使能。将RNG使能位312写入0则使RNG单元136禁止。若RNG使能位312为0,则XLOAD及XSTORE指令即为无效,而若指令转译器106遇到这些指令时,将产生无效指令异常。此外,读取MSR212中的位,结果是未定义,而尝试写入,则不会产生任何效果。RNG使能位312的值在重置之后,即变为0。
MSR212也包括一只读的RNG存在位314。RNG存在位314是表示RNG单元136是否存在于微处理器100中。若RNG存在位314为0,则RNG单元136不能藉由设定RNG使能位312来使能,并且,读取MSR212中的位,结果是未定义,而尝试写入,则不会产生任何效果。此外,若RNG单元136的自测试失败,则RNG存在位314将被清除,如前文图2部分所述。
MSR212也包括一只读的统计自测试使能位316。自测试使能位316表示前述图2部分的重置后的自测试目前是否使能。若自测试使能位316为0,则在重置之后,不会执行自测试。若自测试使能位316为1,则在重置之后,会执行自测试。在一具体实施例中,在微处理器100的暖重置及电源开启重置之后,会执行自测试。
MSR212也包括一只读的统计自测试失败位318。自测试失败位318是表示前述图2部分的最近重置后的自测试是否失败。在一具体实施例中,若自测试失败位318为1,则RNG单元136无法被使能。
MSR212也包括可写入的直流偏压位322。在一具体实施例中,直流偏压位322包括三个位。直流偏压位322是用以控制送到随机位产生器0206的直流偏压,其会影响随机位产生器0206的运行速度及可能的随机度。在一具体实施例中,若在重置时执行统计自测试,则自测试单元202会决定出直流偏压位322的正确值或最佳值,并将其设定为此值。在重置之后,直流偏压位322的值即变为000。
MSR212也包括可写入的原始位位324。若原始位位324设定为0,则图2的白化器216会执行前文图2部分所述的白化功能,并将白化位传送到移位寄存器218。若原始位位324设定为1,则白化器216不会执行白化功能,而将来自于多路复用器214的原始位传送到移位寄存器218。在重置之后,原始位位324的值即变为0。
图3也显示图2中的CSR226。在一具体实施例中,CSR226为128位的寄存器。CSR226包括只读的可用字节计数字段332。可用字节计数字段332会指明在store_select信号266所选择的缓冲器0242或缓冲器1246中,目前有多少字节的随机数据可藉由XSTORE指令来存储。若有需要,可藉软件来读取可用字节计数字段332,以判断目前有多少随机数据字节可藉由XSTORE指令来存储。由于RNG单元136会将字节同步地累积至缓冲器0242及缓冲器1246,在执行XSTORE的时候,可存储的字节的实际数目可能大于先前藉XLOAD所读取的可用字节计数332。在RNG单元136使能之后,可用字节计数字段332的值即变为0。
CSR226也包括可写入的串过滤装置使能位334。若串过滤装置使能位334为1,则串过滤装置224被使能;否则串过滤装置224被禁止。串过滤装置224的运行在以下会配合图10到12,做更详细地说明。在RNG单元136使能之后,串过滤装置使能位334的值即变为0。
CSR226也包括可写入的产生器选择位336。若产生器选择位336设定为0,则选取随机位产生器0206,以由图2的多路复用器214,提供随机比特流加以累积;否则,会选取随机位产生器1208。在RNG单元136使能之后,产生器选择位336的值即变为0。
CSR226也包括串过滤装置失败位338。若串过滤装置失败位338设定为1,是表示串过滤装置224检测到一连续的相似位串长于串过滤装置max_cnt字段346所指定的值,如前文图2及图10到12部分所述。只有RNG单元136可将串过滤装置失败位338设定为1。然而,软件可藉由将0写入其中,清除串过滤装置失败位338。在一具体实施例中,过滤失败位338可藉由过滤失败信号256的脉冲设定为1,并且维持于1,直到软件将其清除为止。在RNG单元136使能之后,串过滤装置失败位338的值即变为0。
CSR226也包括可写入的计数(CNT)使能位342。若CNT使能位342设定为1,则CNT单元222会执行连续的随机数产生器测试,如图2部分所述。在RNG单元136使能之后,CNT使能位342的值即变为0。
CSR226也包括只读的CNT失败位344。若CNT使能位342为1且连续随机数产生器测试失败,则RNG单元136将CNT失败位344设定为1。在一具体实施例中,当CNT使能位342及CNT失败位344同时为1时,执行XSTORE指令会将可用字节计数值0存储至系统内存,而不会将数据字节存储于系统内存。因此,若一工作设定了CNT使能位342,并且在此工作执行时发生失败,则针对此工作,RNG单元136会有效地被禁止。然而,RNG单元136不会针对其它未设定CNT使能位342的工作而禁止。在RNG单元136使能之后,CNT失败位344的值即变为0。
CSR226也包括可写入的串过滤装置max_cnt字段346。软件将值写入串过滤装置max_cnt字段346,以指定可容忍的最大数目的可允许连续相似位,如以下图10到12部分所述。在一具体实施例中,串过滤装置max_cnt字段346包括5个位。在一具体实施例中,串过滤装置max_cnt字段346的默认值为26。
在一具体实施例中,MSR212的各个字段是包含于CSR226,而不是MSR212中。因此,MSR212的值会以CSR226来做存储及回存,以适用于多任务运行,如此处所述,特别是图4到9的部分。
图3也显示图2的RNG R5寄存器238。R5 238包括二个字段:可用字节计数字段362,以及用于存储随机数据字节的另一字段364,如上所述。在一具体实施例中,有效的随机数据字节会向右调整至紧邻可用字节计数字段362。
图3也显示SSE寄存器352。SSE寄存器352包括8个128位的寄存器,标示为XMM0到XMM7。在图3中,XMM0称为XMM0 372、XMM3称为XMM3 376、而XMM5称为XMM5 374。在一具体实施例中,SSE寄存器352实质上近似于Pentium III或IV所包含的SSE寄存器,如IA-32英特尔架构软件开发者手册第一册:基本架构(2002年)的第10-14页所述,其在此加以参考并入。RNG CSR 226会遮蔽(shadow)XMM0 372,而RNG R5238会遮蔽XMM5 374,如下文所述。
在一具体实施例中,微处理器100包括各种熔丝,在微处理器100的制造过程中,其会暂时或永久地加以设定,以便于重置时,能选取CSR226及MSR212中各个位的值,取代前述的重置值。
现请参照图4,其是根据本发明,图1的微处理器100执行将值加载图3XMM0寄存器372的指令的运行流程图。加载XMM0 372的指令是由微处理器100执行,其从系统内存将值加载XMM0寄存器372中,如MOVAPS指令。MOVAPS指令将来自系统内存的数据搬移到指定的XMM寄存器,反之亦然,这部分系叙述于IA-32英特尔架构软件开发者手册第二册:指令集参考(2001年)的第3-443页到第3-444页,其在此予以参考并入。其它从系统内存加载XMM0 372的指令,则如MOVAPD及MOVDQA。由于XMM0372是操作系统在进行工作切换时,被存储至内存及从内存回存的寄存器,所以当工作切换发生时,操作系统会执行如MOVAPS的指令,以从内存回存切换后的工作中,XMM0 372先前的值。流程从方框402开始。
在方框402中,微处理器100藉由提取一指令(如MOVAPS)在系统内存所指定位置的值,而执行该指令,并将此值加载XMM0 372。因此,任何时候从内存加载XMM0 372,都可能发生工作切换。流程继续进行至方框404。
在方框404中,指令转译器106会告知RNG单元136,MOVAPS指令(或其它从内存加载XMM0 372的类似指令)已被转译。一旦此值已加载XMM0 372,RNG单元136的控制逻辑244会设定TSPO标志274,以表示可能发生工作切换。流程会结束于方框404。
现请参照图5,其是根据本发明,图1微处理器100在执行XLOAD指令时的运行方框图。XLOAD指令是软件藉以将值加载图2的CSR226的工具,以指定RNG单元136运行所需的控制值。因为CSR226不存在于PentiumIII或IV中,所以需要Pentium III或IV指令集外的新指令,以加载CSR 226。有利的是,XLOAD指令也会将控制值加载XMM0 372,便于以RNG单元136进行多任务操作,如此处所述。
图5显示了指定XMM0 372的XLOAD指令的格式,其为:
XLOAD XMM0,memaddr
其中memaddr指定了系统内存502中的一内存地址。XLOAD指令的运行与MOVAPS指令类似,不过前者除了XMM0 372外,也会将系统内存的值载入CSR 226。在一具体实施例中,XLOAD会将16个字节的数据504从memaddr移到CSR226及XMM0 372,如图所示。在一具体实施例中,XLOAD指令的运算码值为0x0F 0x5A,其后接着x86指令所指定的标准mod R/M寄存器及地址格式字节。在另一具体实施例中,XLOAD指令的运算码值则为0x0F 0xA6 0xC0。若XLOAD指令指定SSE寄存器352中的一个,而非XMM0 372,则会加载指定的SSE寄存器352;然而,并不会加载CSR226。
现请参照图6,其是根据本发明,图1的微处理器100执行将值加载图3XMM0寄存器372的XLOAD指令的运行流程图。流程从方框602开始。
在方框602中,微处理器100将系统内存502中,XLOAD指令所指定的内存地址的值,加载图2的CSR226及图3的XMM0 372,如图5所示。流程继续进行至方框604。
在方框604中,由于累积于缓冲器0 242及缓冲器1 246的随机数据字节并不会随着CSR 226中的控制值而产生,其中这些控制值是正加载CSR226的新工作之所需,所以RNG单元136会响应CSR 226的加载动作,而丢弃缓冲器0 242及缓冲器1 246的内容。流程继续进行至方框606。
在方框606中,由于缓冲器0 242及缓冲器1 246中的随机数据字节在方框604时被丢弃,所以RNG单元136会将计数器0 211及计数器1 213中的可用字节计数清除为0。流程继续进行至方框608。
在方框608中,RNG单元136重新开始累积随机数。即,产生器选择信号252所选取的随机位产生器206或208,在随机位产生器0 206的情况下,会依据直流偏压信号296来产生随机位;白化器216则依据原始位信号254,选择性地白化这些位;CNT单元222根据CNT使能信号284,选择性地执行连续随机数产生器测试;串过滤装置224根据过滤使能信号262及max_cnt信号258,选择性地过滤移位寄存器218所累积的字节;缓冲器0 242及缓冲器1246依据fill_select信号264,累积随机数据字节;而计数器0 211及计数器1 213则依据fill_select信号264,计算缓冲器0 242及缓冲器1 246中所累积的字节数目。
在方框612中,由于CSR 226已被更新为目前工作所需要的控制值,所以控制逻辑244会清除TSPO标志274。流程会结束于方框612。
现请参照图7,其是根据本发明,图1微处理器100于执行XSTORE指令时的运行方框图。XSTORE指令是软件藉以将可用随机数据字节的计数值及本身从R5 238存储至系统内存的工具。因为RNG R5 238不存在于PentiumIII或IV中,所以需要Pentium III或IV指令集外的新指令,以存储RNG R5238。有利的是,XSTORE指令会以整体不可分割的方式,将计数值及数据字节写入内存,便于以RNG单元136进行多任务操作,如此处所述。即,XSTORE指令是不可中断的。因此,当某工作执行XSTORE指令时,另一工作不可中断XSTORE指令来修改要藉由XSTORE指令,写入系统内存的可用字节计数或随机数据字节。因此,藉由整体不可分割的方式写入数据及计数值,XSTORE指令提供了数量可变的随机数据字节,本质上有利地便于多任务的进行。
图7是显示XSTORE指令的格式,其为:
XSTORE memaddr,XMM5
Memaddr会指定系统内存502中的内存地址。XSTORE指令的运行与MOVAPS指令类似,除了所指定的XMM寄存器不会存储至系统内存;取而代之的是,若指定了XMM5 374,则R5 238会被存至系统内存。即,R5 238会遮蔽XMM5 374。XSTORE会将图3的可用有效随机数据字节362的计数值,从R5 238移到系统内存502中memaddr的位置702,如图所示。此外,XSTORE将计数值362所指定的有效随机字节的数据364,移到系统内存502中紧邻可用字节计数702的位置704,如图所示。
在一具体实施例中,XSTORE指令的运算码值为0x0F 0x5B,其后接着x86指令所指定的标准mod R/M寄存器及地址格式字节。在另一具体实施例中,XSTORE指令的运算码值为0x0F 0xA7 0xC0。在一具体实施例中,XSTORE指令要求寄存器文件108中的ES:EDI寄存器来指定memaddr,即,指到要存储计数及随机数据字节的起始内存地址。在一具体实施例中,XSTORE不允许区段重迭。若XSTORE指令指定了SSE寄存器352的其中一个,而非XMM5 374,则结果会呈未定状态。
在一具体实施例中,微处理器100存储在系统内存的随机数据字节704的数目,是等于也写入系统内存的可用字节计数702。
在另一具体实施例中,微处理器100存储在系统内存的随机数据字节704的数目,是等于一个比RNG R5 238中的字节还少的数目。即,若RNG R5 238为16个字节的寄存器,可存储多达15个随机数据字节364及一个字节的可用字节计数362,则微处理器100会将16个字节存至系统内存502:15个字节的随机数据存到随机数据字节704的位置,而一个计数字节则存到可用字节计数702的位置。然而,在写入系统内存502的15个字节中,某些可能不是有效的。在一具体实施例中,写入内存的字节的数目都为2的次方。只有前N个字节是有效的,其中N为可用字节计数702。
在此具体实施例中,RNG单元136会清除XSTORE运算所指涉的缓冲器(即,图2的缓冲器0 242或缓冲器1 246)。藉由清除缓冲器,微处理器100可避免各个工作看到彼此的随机数据所产生的问题,而提高安全性。例如,假设第一工作执行第一XSTORE运算,将15个字节的随机数据从缓冲器0242存储到系统内存,并执行第二XSTORE运算,将15个字节的随机数据从缓冲器1 246存储到系统内存;然后操作系统切换到第二工作,其会在RNG单元136将任何随机数据字节累积到缓冲器0 242之前,立即执行XSTORE运算。若在第一XSTORE运算后,RNG单元136未清除缓冲器0 242,则第一工作所接收到的随机数据也会存储到第二工作的内存位置,如此会使第二工作看到第一工作的随机数据。
在一具体实施例中,XSTORE指令指定了要存至系统内存的最大数目的随机数据字节。在此具体实施例中,该最大数目是指定在寄存器文件108的其中一个一般用途寄存器中,如ECX。在此具体实施例中,若store_select信号266所选取的缓冲器0 242或缓冲器1 246中的可用字节多于ECX中所指定的最大数目,则微处理器100只会存储ECX中所指定的最大数目的字节;否则,XSTORE指令会存储可用数目的有效字节。在前述任一种情况下,XSTORE指令都会将存至系统内存502的数据字节位置704的有效随机数据字节的数量,存储到可用字节计数位置702。
在一具体实施例中,XSTORE指令指定了要存至系统内存的所需数目的随机数据字节。在此具体实施例中,该所需数目是指定在寄存器文件108的其中一个一般用途寄存器中,如ECX。在此具体实施例中,XSTORE指令是加上一x86 REP前置码(prefix)。在此具体实施例中,REP XSTORE指令并非需连续执行的。即,因为所需的随机字节的数目可能会很大,所以REPXSTORE是可中断的。然而,由于所存储的随机数据字节的数目是不可变的(即,软件知道将要存至内存的随机数据字节的数目),所以指令不必连续执行。
现请参照图8,其是根据本发明,图1的微处理器100执行来自于图3XMM5寄存器的XSTORE指令的运行流程图。流程从方框802开始。
在方框802中,对于图1的指令转译器106通知XSTORE指令已转译,中断单元146会响应以将中断禁止。流程继续进行判断方框804。
在判断方框804中,图2的控制逻辑244会检查TSPO标志274,以判断标志是否设定。若设定,则流程会继续进行方框806。否则,流程会继续进行方框816。
在方框806中,RNG单元136会将XMM0 372的内容复制到CSR 226,并且会清除TSPO标志274。由于TSPO标志274是表示自前次XSTORE或XLOAD执行以后,工作切换已可能发生,就如图4的步骤402中,从系统内存加载XMM0 372所表示的,所以CSR 226可能不具有目前执行XSTORE指令的工作所需的正确控制值。因此,XSTORE指令必须以正确的控制值来更新CSR 226。正确值是存储于XMM0 372中,此因当工作初始时,该正确控制值是藉由执行XLOAD而被加载XMM0 372及CSR 226中,而后当操作系统切回至目前工作时,正确控制值也被回存至XMM0 372。流程会继续进行方框808。
在方框808中,因为累积于缓冲器0 242及缓冲器1246的随机数据字节,不会随着CSR中新工作所需的新控制值而产生,其中这些新控制值是在方框806中被复制到CSR 226中,所以RNG单元136会响应CSR 226的加载,而丢弃缓冲器0 242及缓冲器1 246的内容。流程会继续进行方框812。
在方框812中,因为在方框808,会丢弃在缓冲器0 242及缓冲器1 246中的随机数据字节,所以在计数器0 211及计数器1 213中,RNG单元136会将可用字节计数清除为0。流程会继续进行方框814。
在方框814中,RNG单元136会重新开始随机数的累积,如图6的方框608部分所述。流程会继续进行方框816。
在方框816中,RNG单元136会连续地将R5 238存储于系统内存502中,由XSTORE指令所指定的内存地址,其会保持store_select信号266所指定的计数器0 211或计数器1 213的值,以及store_select信号266所指定的缓冲器0 242或缓冲器1 246中的有效随机数据字节,如图7所示。流程会继续进行方框818。
在方框818中,因为在方框816,有效随机数据字节已被存储至内存的动作所消耗,所以控制逻辑244会将清除信号223设为真,以清除store_select信号266所指定的计数器0 211或计数器1 213。流程会继续进行方框822。
在方框822中,控制逻辑244会更新store_select信号266。即,若store_select信号266为0,则控制逻辑244会将store_select信号266更新为1。反之,若store_select信号266为1,则控制逻辑244会将store_select信号266更新为0。流程会继续进行方框824。
在方框824中,因为已完成XSTORE指令的执行,所以中断单元146会使中断使能。流程会结束于方框824。
现在参照图9,其是根据本发明,图1微处理器100进行关于随机数产生的多任务运行范例的动作流程图。图9的流程图是显示典型的状况,其中两个工作都初始化RNG单元136,并执行XSTORE指令,将随机数据字节存储至内存。图9是显示本发明如何有利支持两个工作(工作A及工作B)间的多任务,即使操作系统不支持存储及回存RNG单元136的状态(即CSR226)。流程从方框902开始。
在方框902中,会发生重置,这会使控制逻辑244清除TSPO标志274。流程会继续进行方框904。
在方框904中,操作系统会启动工作A,并且工作A的初始码会执行XLOAD至XMM0 372的指令,以所要的控制值(表示为值A)来初始化CSR226及XMM0 372。流程会继续进行方框906。
在方框906中,根据图6的方框604、606、608以及612,RNG单元136会响应XLOAD,而丢弃缓冲器0 242及缓冲器1246的内容、清除计数器0211及计数器1 213、重新开始随机数的产生与累积以及清除TSPO标志274。流程会继续进行方框908。
在方框908中,工作A执行XSTORE指令,以存储依据方框904加载至CSR 226的控制值A所产生的随机数据。流程会继续进行方框912。
在方框912中,为了执行前一方框的XSTORE,RNG单元136会连续地将于方框906重新开始后所累积的计数值及数据,存储至系统内存,如图7及图8所示。流程会继续进行方框914。
在方框914中,操作系统会执行从工作A到工作B的工作切换。其中,操作系统会将XMM0 372的值(其包含控制值A)存储至系统内存,以保留工作A的状态。然而,操作系统不知道CSR 226的情况,所以操作系统不会将CSR 226存储至系统内存以保留其状态。流程会继续进行方框916。
在方框916中,根据图4的步骤404,RNG单元136会响应在方框914的XMM0 372的加载,而设定TSPO标志274。流程会继续进行方框918。
在方框918中,操作系统启动工作B,并且工作B的初始码会执行XLOAD至XMM0 372的指令,以所要的控制值(表示为值B)来初始化CSR226及XMM0 372。流程会继续进行方框922。
在方框922中,根据图6的方框604、606、608以及612,RNG单元136会响应XLOAD,而丢弃缓冲器0 242及缓冲器1 246的内容、清除计数器0211及计数器1213、重新开始随机数的产生与累积以及清除TSPO标志274。流程会继续进行方框924。
在方框924中,工作B执行XSTORE指令,以存储依据方框918加载至CSR 226的控制值B所产生的随机数据。流程会继续进行方框924。
在方框926中,为了执行前一方框的XSTORE,RNG单元136会连续地将于方框922重新开始后所累积的计数值及数据,存储至系统内存,如图及图所示。流程会继续进行方框928。
在方框928中,操作系统会执行从工作B到工作A的工作切换。其中,操作系统会将XMM0 372的值(其包含控制值B)存储至系统内存,以保留工作B的状态。然而,操作系统不知道CSR226的情况,所以操作系统不会将CSR 226存储至系统内存以保留其状态。此外,操作系统会回存工作A的状态,其包括将先前在方框914所保留的值A,从系统内存载入到XMM0 372。流程会继续进行方框932。
在方框932中,根据图4的步骤404,RNG单元136会响应在方框928的XMM0 372的加载,而设定TSPO标志274。流程会继续进行方框934。
在方框934中,工作A执行XSTORE指令,以存储依据方框904加载至CSR226的控制值A所产生的随机数据。然而,在方框918,CSR 226中的值A会被覆写。因此,目前累积于缓冲器0 242及缓冲器1 246的随机数据字节并非依据值A产生,而是依据值B而产生。流程会继续进行方框936。
在方框936中,RNG单元136依图8的方框804,判断TSPO标志274已设定,于是会依据图8的方框806,将XMM0 372的内容复制到CSR 226,藉以将值A回存至CSR 226。此外,由于CSR 226已被回存,所以根据方框806,RNG单元136会清除TSPO标志274。流程会继续进行方框938。
在方框938中,根据图8的方框808、812以及814,RNG单元136会响应方框936中复制到CSR 226的动作,而丢弃缓冲器0 242及缓冲器1 246的内容、清除计数器0 211与计数器1 213以及重新开始随机数的产生及累积。流程会继续进行方框942。
在方框942中,为执行方框934的XSTORE,RNG单元136会连续地将于先前的方框重新开始后所累积的计数值及数据,存储至系统内存,如图7及图8所示。在此情况下,由于在先前方框中,已清除计数器0 211及计数器1 213,并丢弃缓冲器0 242及缓冲器1 246的内容,所以计数值为0,且未有有效随机数据字节存储到系统内存中。流程会继续进行方框944。
在方框944中,工作A执行XSTORE指令,以存储依据方框904加载至CSR 226的控制值A所产生的随机数据,其中CSR 226在方框936,已回存为值A。流程会继续进行方框946。
在方框946中,为执行先前方框的XSTORE,RNG单元136会连续地将于方框938重新开始后所累积的计数值及数据,存储至系统内存,如图7及图8所示。流程会继续进行方框948。
在方框948中,工作A执行XSTORE指令,以存储依据方框904加载至CSR 226的控制值A所产生的随机数据,其中CSR 226在方框936,已回存为值A。流程会继续进行方框952。
在方框952中,为执行先前方框的XSTORE,RNG单元136会将于方框938重新开始后所累积的计数值及数据,扣掉方框944中由前次XSTORE所存储的字节,再将结果连续地存储至系统内存,如图7及图8所示。流程则结束于方框952。
现在参照图10,其是根据本发明,图1微处理器100中,图2RNG单元136的串过滤装置224的方框图。
配合本发明的目的,前导的1位定义为一个字节开头的连续1位。一个字节可能包含0到8个前导的1位。例如,字节0001111具有5个前导的1位;字节11111110具有0个前导的1位;而字节11111111则具有8个前导的1位。
配合本发明的目的,前导的0位定义为一个字节开头的连续0位。一个字节可能包含0到8个前导的0位。例如,字节11100000具有5个前导的0位;字节00000001具有0个前导的0位;而字节00000000则具有8个前导的0位。
配合本发明的目的,尾端的1位是定义为一个字节结尾的连续1位;然而一个均为1的字节则定义为没有尾端的1位。一个字节可能包含0到7个尾端的1位。例如,字节11110000具有4个尾端的1位;字节11111110具有7个尾端的1位;字节01111111具有0个尾端的1位;而字节11111111则具有0个尾端的1位。
配合本发明的目的,尾端的0位是定义为一个字节结尾的连续0位;然而一个均为0的字节则定义为没有尾端的0位。一个字节可能包含0到7个尾端的0位。例如,字节00001111具有4个尾端的0位;字节00000001具有7个尾端的0位;字节10000000具有0个尾端的0位;而字节00000000则具有0个尾端的1位。
串过滤装置224包括比较逻辑1002。比较逻辑1002会从图2的移位寄存器218接收随机数据字节298。比较逻辑1002会检查随机数据字节298中的位值,并且产生用于检测1及0的连续位串的各种信号,如以下所述。
比较逻辑1002会产生num_leading_ones信号1022A,以指定随机数据字节298中前导1位的数目。
比较逻辑1002会产生num_trailing_ones信号1028A,以指定随机数据字节298中尾端1位的数目。
比较逻辑1002也会产生all_ones信号1048A,若随机数据字节298包含均为1的位,则此信号为真。
比较逻辑1002也会产生leading_ones信号1036A,若随机数据字节298包含前导的1位,则此信号为真。
比较逻辑1002也会产生trailing_ones信号1038A,若随机数据字节298包含尾端的1位,则此信号为真。
串过滤装置224也包括第一计数器1016A,以存储连续1位的现时计数。在一具体实施例中,计数器1016A包括一6位的寄存器。计数器1016A的输出为ones_cnt信号1024A。
串过滤装置224也包括第一加法器1012A,其将num_leading_ones信号1022A与ones_cnt信号1024A相加,以产生new_ones_cnt信号1026A。
串过滤装置224也包括四输入端的第一多路复用器1014A。多路复用器1014A在其输入端接收ones_cnt信号1024A、new_ones_cnt信号1026A、num_trailing_ones信号1028A以及固定(hard-coded)的零值1032A。多路复用器1014A会依据one_select信号1042A,选取其中一输入端,输出到计数器1016A。
比较逻辑1002会产生num_leading_zeros信号1022B,以指定随机数据字节298中前导0位的数目。
比较逻辑1002会产生num_trailing_zeros信号1028B,以指定随机数据字节298中尾端0位的数目。
比较逻辑1002也会产生all_zeros信号1048B,若随机数据字节298包含均为0的位,则此信号为真。
比较逻辑1002也会产生leading_zeros信号1036B,若随机数据字节298包含前导的0位,则此信号为真。
比较逻辑1002也会产生trailing_zeros信号1038B,若随机数据字节298包含尾端的0位,则此信号为真。
串过滤装置224也包括第二计数器1016B,以存储连续0位的现时计数。在一具体实施例中,计数器1016B包括一6位的寄存器。计数器1016B的输出为zeros_cnt信号1024B。
串过滤装置224也包括第二加法器1012B,其将num_leading_zeros信号1022B与zeros_cnt信号1024B相加,以产生new_zeros_cnt信号1026B。
串过滤装置224也包括四输入端的第二多路复用器1014B。多路复用器1014B在其输入端接收zeros_cnt信号1024B、new_zeros_cnt信号1026B、num_trailing_zeros信号1028B以及固定的零值1032B。多路复用器1014B会依据zero_select信号1042B,选取其中一输入端,输出到计数器1016B。
串过滤装置224也包括第一比较器1046A,其将new_ones_cnt信号1026A与图2中的max_cnt信号258做比较。若new_ones_cnt信号1026A大于max_cnt信号258,则比较器1046A会产生真值的ones_exceeded信号1034A;否则,比较器1046A产生伪值的ones_exceeded信号1034A。
串过滤装置224也包括第二比较器1046B,其将new_zeros_cnt信号1026B与图2中的max_cnt信号258做比较。若new_zeros_cnt信号1026B大于max_cnt信号258,则比较器1046B会产生真值的zeros_exceeded信号1034B;否则,比较器1046B产生伪值的zeros_exceeded信号1034B。
串过滤装置224也包括两输入端的或门(OR gate)1004,其输入端连接至比较器1046A及比较器1046B的输出端。或门1004在其输入端接收ones_exceeded信号1034A及zeros_exceeded信号1034B。或门1004会产生max_cnt_exceeded信号1044,以作为选择逻辑1006的输入。
串过滤装置224也包括两输入端的与门(AND gate)1008,其连接至或门1004。与门1008的一输入端接收来自于或门1004的max_cnt_exceeded信号1044,而另一输入端则接收图2的过滤使能信号262。与门1008的输出是图2的过滤失败信号256。
串过滤装置224也包括选择逻辑1006,其接收all_ones信号1048A、leading_ones信号1036A、trailing_ones信号1038A、max_cnt_exceeded信号1044、leading_zeros信号1036B、trailing_zeros信号1038B以及all_zeros信号1048B。选择逻辑1006根据以下的程序代码,来产生one_select信号1042A及zero_select信号1042B。
retain_counts=max_cnt_exceeded & filter enable; increment_zeros=all_zeros&(!retain_counts); load_zeros=trailing_zeros&(!retain_counts)&(!increment_zeros); clear_zeros=(!retain_counts)&(!increment_zeros)&(!load_zeros); increment_ones=all_ones&(!retain_counts); load_ones=trailing_ones&(!retain_counts)&(!increment_ones); clear_ones=(!retain_counts)&(!increment_ones)&(!load_ones); if(retain_counts){ zero_select=3;//select zeros cnt input <dp n="d35"/> }else if(increment_zeros){ zero_select=2;//select new_zeros_cnt input }else if(load_zeros){ zero_select=1;//select num_trailing_zeros input }else if(clear_zeros){ zero_select=0;//select hard-coded 0 input } if(retain_counts){ one_select=3;//select ones_cnt input }else if(increment_ones){ one_select=2;//select new_ones_cnt input }else if(load_ones){ one_select=1;//select num_trailing_ones input }else if(clear_ones){ one_select=0;//select hard-coded 0 input }
现在参照图11,其是根据本发明,图10的串过滤装置224的运行流程图。流程从方框1102开始。
在方框1102中,计数器1016A及1016B会初始化为0。流程会继续进行方框1104。
在方框1104中,图1的RNG单元136产生1字节的随机数据于图2的随机字节信号298中,而比较逻辑1002则依据随机数据字节的检查结果,产生其信号。流程会继续进行方框1106。
在方框1106中,加法器1012A将num_leading_ones 1022A与ones_cnt1024A相加,以产生new_ones_cnt 1026A,而加法器1012B则将num_leading_zeros 1022B与zeros_cnt 1024B相加,以产生new_zeros_cnt1026B。流程会继续进行判断方框1112。
在判断方框1112中,选择逻辑1006检查max_cnt_exceeded 1044,以判断连续0或1的数目是否已超过max_cnt 258。若是,流程会继续进行判断方框1114。否则,流程会继续进行判断方框1124。
在判断方框1114中,与门1008检查过滤使能信号262,以判断串过滤装置224是否使能。若是,与门1008会产生真值于图2的过滤失败信号256,即,在方框1116中,将过滤失败信号设为真。流程会继续进行方框1118。
在方框1118中,控制逻辑244响应具真值的过滤失败信号256,而不将图2的递增信号221设为真,并且不使随机字节298被加载缓冲器0242或缓冲器1246,即使移位寄存器218已产生真值的字节产生信号282。因此,由于随机字节298已使连续1或0的数目超过max_cnt 258,所以RNG单元136会丢弃随机字节298。流程会继续进行方框1122。
在方框1122中,选择逻辑1006于one_select信号1042A及zero_select信号1042B中,都产生3的值,以使多路复用器1014A及1014B分别保留目前的ones_cnt 1024A及zeros_cnt 1024B。流程接着返回方框1104。
在判断方框1124中,选择逻辑1006检查all_zeros信号1048B,以判断随机数据字节298是否均为0。若是,流程会继续进行方框1126。否则,流程会继续进行判断方框1128。
在方框1126中,选择逻辑1006于zero_select信号1042B中产生2的值,以使多路复用器1014B选取newz_eros_cnt信号1026B,并且于one_select信号1042A中产生0的值,以使多路复用器1014A选取固定的0值输入1032A。流程会继续进行方框1148。
在判断方框1128中,选择逻辑1006检查trailing_zeros信号1038B,以判断随机数据字节298是否包含任何的尾端0。若是,流程会继续进行方框1132。否则,流程会继续进行方框1134。
在方框1132中,选择逻辑1006于zero_select信号1042B中产生1的值,以使多路复用器1014B选取num_trailing_zeros信号1028B,并且于one_select信号1042中产生0的值,以使多路复用器1014A选取固定的0值输入1032A。流程会继续进行方框1148。
在方框1134中,选择逻辑1006于zero_select信号1042B中产生0的值,以使多路复用器1014B选择固定的0值输入1032B。流程会继续进行判断方框1136。
在判断方框1136中,选择逻辑1006检查all_ones信号1048A,以判断随机数据字节298是否均为1。若是,流程会继续进行方框1138。否则,流程会继续进行判断方框1142。
在方框1138中,选择逻辑1006于one_select信号1042A中产生2的值,以使多路复用器1014A选择new_ones_cnt信号1026A。流程会继续进行方框1148。
在判断方框1142中,选择逻辑1006检查trailing_ones信号1038A,以判断随机数据字节298是否包含任何的尾端1。若是,流程会继续进行方框1144。否则,流程会继续进行方框1146。
在方框1144中,选择逻辑1006于one_select信号1042A中产生1的值,以使多路复用器1014A选择num_trailing_ones信号1028A。流程会继续进行方框1148。
在方框1146中,选择逻辑1006于one_select信号1042A中产生0的值,以使多路复用器1014A选择固定的0值输入1032A。流程会继续进行方框1148。
在方框1148中,控制逻辑244使随机数据字节298被加载由fill_select信号264所选择的缓冲器0242或缓冲器1246中,并将递增信号221设为真,以递增由fill_select信号264所选择的计数器0211或计数器1213。流程接着返回方框1104。
现在参照图12,其是根据本发明的另一具体实施例,图1微处理器100执行XSTORE指令的运行方框图。图12的XSTORE指令是类似于图7的XSTORE指令,不过在此具体实施例中,有效随机数据字节的计数值会被加载寄存器文件108的其中一个一般用途寄存器中,如EAX 1202寄存器,而不会存储至系统内存。有利的是,与图7的XSTORE指令类似,图12的XSTORE指令会连续地将计数值加载EAX,并将随机数据字节存储至内存,以促进与RNG单元136的多任务运行,且所存的有效随机数据字节的数量,显示于EAX中存储的可用字节计数。也就是,图12的XSTORE指令也是不可中断的。
现在参照图13,其是根据本发明,图2RNG单元136的多重缓冲(multi-buffering)运行的流程图。流程从方框1302开始。
在方框1302中,重置信号248被设为真。流程会继续进行方框1304。
在方框1304中,图2的控制逻辑244将fill_select信号264及store_select信号266初始化为0,并响应方框1302的重置动作而清除计数器0211及计数器1213。流程会继续进行判断方框1306。
在判断方框1306中,控制逻辑244检查xstore信号268,以判断是否已执行XSTORE指令。若是,流程会继续进行判断方框1308。否则,流程会继续进行判断方框1322。
在判断方框1308中,控制逻辑244判断由产生器选择信号252所选择的随机位产生器0206或随机位产生器1208的电源是否已关闭。若是,流程会继续进行方框1312。否则,流程会继续进行方框1314。
在方框1312中,控制逻辑244藉由power_cntrl信号231开启所选择的随机位产生器的电源。流程会继续进行方框1314。
在方框1314中,根据图8的方框816及如图7所示,微处理器100将由store_select信号266所选择的计数器0211或计数器1213的值,以及由store_select信号266所选择的缓冲器0242或缓冲器1246中的有效数据字节,连续地存储至系统内存。流程会继续进行方框1316。
在方框1316中,控制逻辑244将清除信号223设为真,以清除由store_select信号266所选择的计数器0211或计数器1213。流程会继续进行方框1318。
在方框1318中,控制逻辑244更新store_select信号266,以选择另一个缓冲器及计数器。在RNG单元136包含二个以上缓冲器的实施例中,store_select信号266包括多于1个的位,并且更新store_select信号266的动作包括递增store_select信号266,以及当递增超过缓冲器的数目时,会回归为0。流程会继续进行方框1322。
在判断方框1322中,控制逻辑244检查字节产生信号282是否为真及检查过滤失败信号256是否为伪,以判断是否产生了良好的随机数据字节。若已产生,流程会继续进行方框1324。否则,流程会继续进行判断方框1306。
在方框1324中,控制逻辑244将良好的随机数据字节加载由fill_select信号264所选择的缓冲器0242或缓冲器1246中,并且递增由fill_select信号264所选择的计数器0211或计数器1213。流程会继续进行判断方框1326。
在判断方框1326中,控制逻辑244检查由fill_select信号264所指定的full0信号229或full1信号227,以判断由fill_select信号264所选择的缓冲器0242或缓冲器1246是否已满。若是,流程会继续进行方框1328。否则,流程会返回方框1306。
在方框1328中,控制逻辑244更新fill_select信号264。在RNG单元136包含二个缓冲器的实施例中,更新fill_select信号264的动作包括切换fill_select信号264。在RNG单元136包括二个以上缓冲器的实施例中,fill_select信号264包括多于1个的位,并且更新fill_select信号264的动作包括递增fill_select信号264,以及当递增超过缓冲器的数目时,会回归为0。流程会继续进行判断方框1332。
在判断方框1332中,控制逻辑244检查由方框1328更新的fill_select信号264所指定的full0信号229或full1信号227,以判断由fill_select信号264所选择的缓冲器0242或缓冲器1246是否已满(即,判断所有的缓冲器是否已满)。若是,流程会继续进行方框1334。否则,流程会返回方框1306。
在方框1334中,由于所有的缓冲器已满,控制逻辑244就藉由power_cntrl信号231,关闭随机位产生器0206及随机位产生器1208的电源。流程会返回判断方框1306。
现在参照图14,其是根据本发明的另一具体实施例,图1微处理器100执行图3的XLOAD指令的运行流程图。图14的流程图与图6的流程图相同,并且标号相同的方框是一样的,除了图14包括额外的判断方框1403。流程会从方框602进行到判断方框1403。在判断方框1403中,图2的控制逻辑244判断CSR226的相关位是否已因方框602中CSR226的加载而改变。若是,流程会继续进行如图6的方框604。否则,流程会继续进行方框612,如图所示。此实施例的优点是,不必丢弃已累积的随机字节及重新开始随机字节的累积。即,若CSR226的加载对于会影响RNG单元136的随机数产生功能的值未做任何改变,则由于随机字节是借助使用所要的控制值而产生,所以不需丢弃已累积的随机字节及重新开始随机字节的累积。在一具体实施例中,相关的CSR226位为串过滤装置使能位334、产生器选择位336、CNT使能位342以及串过滤装置max_cnt 346。
现在参照图15,其是根据本发明的另一具体实施例,图1微处理器100执行图3的XSTORE指令的运行流程图。图15的流程图与图8的流程图相同,并且标号相同的方框是一样的,除了图15包括额外的判断方框1507。流程会从方框806进行到判断方框1507。在判断方框1507中,图2的控制逻辑244判断CSR226的相关位是否已因方框806中复制至CSR226的动作而改变。若是,流程会继续进行如图8的方框808。否则,流程会继续进行方框816,如图所示。此实施例的优点是,不必丢弃已累积的随机字节及重新开始随机字节的累积。即,若复制至CSR226的动作对于会影响RNG单元136的随机数产生功能的值未做任何改变,则由于随机字节是借助使用所要的控制值而产生,所以不需丢弃已累积的随机字节及重新开始随机字节的累积。在一具体实施例中,相关的CSR226位为串过滤装置使能位334、产生器选择位336、CNT使能位342以及串过滤装置max_cnt 346。
现在参照图16,其是根据本发明的另一具体实施例,图1微处理器100执行XSTORE指令的运行方框图。图16的XSTORE指令类似于图12的XSTORE指令,然而在图16的实施例中,XSTORE指令的目的操作数会指定微处理器100的一个寄存器,如XMM寄存器、浮点寄存器、MMX寄存器或整数单元(integer unit)寄存器中的一个(如EBX),而不是指定系统内存中的地址。即,有效随机数据字节系连续地被写入寄存器文件108的其中一个使用者可见寄存器中,而不会存储至系统内存。在图16的例子中,XSTORE指令会指定图3SSE寄存器352中的XMM3寄存器376,以写入有效随机数据字节,XSTORE xmm3,xmm5,如图所示。有利的是,与图12的XSTORE指令类似,图16的XSTORE指令会连续地将随机数据字节写入该使用者可见寄存器,并将计数值加载EAX1202,以促进与RNG单元136的多任务运行,且所存的有效随机数据字节的数量,显示于EAX中存储的可用字节计数。也就是,图16的XSTORE指令也是不可中断的。
现在参照图17,其是根据本发明的另一具体实施例,图1微处理器100执行XSTORE指令的运行方框图。图17的XSTORE指令类似于图12的XSTORE指令,然而在图17的实施例中,XSTORE指令包括一x86架构的REP前置码。藉由REP XSTORE指令,要存至系统内存的随机数据字节的数目,会被指定为寄存器文件108的ECX寄存器1702的输入参数,如图所示。软件在执行REP XSTORE指令前,会将要存至系统内存的随机数据字节的理想计数值载入ECX1702中。
在一具体实施例中,在将随机数据字节存至系统内存的存储动作间,REPXSTORE指令是可中断的。内存地址在初始时,是指定于寄存器文件108的一般用途寄存器中。在图17的例子中,内存地址是指定于寄存器文件108的ES:EDI 1704中,如图所示。每当有一或更多个随机数据字节被写入系统内存时,ES:EDI 1702即更新为系统内存中,下个用以存储随机数据字节的位置。此外,每当有一或更多个随机数据字节存储至系统内存时,ECX 1702即更新,以反映尚待存储的随机字节数目。例如,假设REP XSTORE指令于ECX 1702中指定一字节计数值28及0x12345678的内存地址。假设在缓冲器0242及缓冲器1246两者之一中,RNG单元136有8个可用的字节,且当累积更多的随机数据字节时,将8个字节写入系统内存。当8个字节被写至内存时,ECX 1702会更新为20,以表示还有20个随机数据字节必须写入系统内存。此外,地址会被更新为系统内存中,下个将要写入大量随机数据字节的位置0x12345680。中断可能会发生在这个时候,而软件会检查更新的值。当中断已执行且控制权回归至REP XSTORE指令时,REP XSTORE指令将使用ECX 1702及ES:EDI 1704中的更新值回复执行。此外,完成REPXSTORE指令时,图2 CSR 226的现时值会被复制到寄存器文件108的EAX寄存器1202中。
虽然本发明及其目的、特征与优点已详细叙述,其它实施例也可包含在本发明的范围内。例如,虽然本发明是以由操作系统存储及回存的SSE寄存器进行叙述,但本发明仍可适用于使用由操作系统存储及回存的其它寄存器的情形,以判断可能的工作切换是否已发生,并回存随机数产生器中的控制寄存器,如浮点寄存器。再者,虽然本发明是以x86架构的处理器来叙述,但本发明也可适用于其它各种处理器架构。
总之,以上所述,仅为本发明的较佳实施例而已,不能以之限定本发明所实施的范围。凡依本发明权利要求所作的均等变化与修饰,都应仍属于本发明专利涵盖的范围内。
Claims (41)
1.一种微处理器,用以执行一多任务操作系统,其特征在于,该微处理器具有连接至其本身的一内存,该微处理器包括:
一寄存器,于一工作切换发生时,由该操作系统进行存储及回存;
一标志寄存器,连接至该寄存器,用以存储一标志,该标志若设定,则表示可能发生一工作切换,其中当该微处理器执行一加载该寄存器的指令时,会设定该标志;以及
一随机数产生器(RNG),连接至该寄存器,依据存储于一控制寄存器中的一或多个控制值而产生随机数,其中该控制寄存器于一工作切换发生时,不由该操作系统进行存储及回存,其中该微处理器包括一第一指令,用以将该控制值加载至该控制寄存器,并也将该控制值加载至该寄存器,其中该微处理器也包括一第二指令,用以将这些随机数存储至该内存,且若该标志已设定,则将该控制值从该寄存器复制到该控制寄存器。
2.如权利要求1所述的微处理器,其特征在于:该寄存器包括一SSE寄存器。
3.如权利要求1所述的微处理器,其特征在于:该寄存器包括一MMX寄存器。
4.如权利要求1所述的微处理器,其特征在于:该寄存器包括一FPU寄存器。
5.如权利要求1所述的微处理器,其特征在于:在将该寄存器的这些内容复制到该控制寄存器之后,该微处理器清除该标志。
6.如权利要求1所述的微处理器,其特征在于:在将该控制值加载至该控制寄存器及该寄存器之后,该微处理器清除该标志。
7.如权利要求1所述的微处理器,其特征在于:该一或多个控制值包括用以选择性地使能/禁止该随机数产生器中的一过滤装置的一个值。
8.如权利要求7所述的微处理器,其特征在于:该过滤装置包括用以避免在这些随机数中产生一串N个连续相似位的一过滤器。
9.如权利要求1所述的微处理器,其特征在于:该一或多个控制值选取包含于该随机数产生器中的二或多个随机位产生器其中之一,以产生随机位,累积至这些随机数中。
10.如权利要求1所述的微处理器,其特征在于:该一或多个控制值选择性地使能/禁止该随机数产生器,以产生这些随机数。
11.如权利要求1所述的微处理器,其特征在于:该一或多个控制值选择性地使能/禁止该随机数产生器的一连续数值测试。
12.如权利要求1所述的微处理器,其特征在于:该一或多个控制值选择性地使能/禁止该随机数产生器的一自测试。
13.如权利要求1所述的微处理器,其特征在于:该一或多个控制值选择性地使能/禁止该随机数产生器中的一位白化器。
14.如权利要求1所述的微处理器,其特征在于:该一或多个控制值指定一直流偏压,用于部分地控制振荡器的一操作电压,以该随机数产生器中产生随机位。
15.如权利要求1所述的微处理器,其特征在于,还包括:
一计数器,包含于该随机数产生器中,用以维持包含这些随机数的有效字节的一计数值。
16.如权利要求15所述的微处理器,其特征在于:该第二指令除将这些随机数存储至该内存外,还存储该计数值。
17.如权利要求16所述的微处理器,其特征在于:该第二指令将该计数值存储至该内存。
18.如权利要求第16项的微处理器,其特征在于:该第二指令将该计数值存储至该微处理器内的一使用者可见寄存器。
19.如权利要求16所述的微处理器,其特征在于:该第二指令连续地执行该计数值与这些随机数的存储。
20.如权利要求16所述的微处理器,其特征在于:若该标志设定,则在存储该计数值之前,该微处理器会清除该计数值。
21.如权利要求16所述的微处理器,其特征在于:只有在该复制动作改变该控制寄存器的该一或多个控制值时,该微处理器才清除该计数值。
22.如权利要求1所述的微处理器,其特征在于:该第二指令是不可中断的。
23.如权利要求1所述的微处理器,其特征在于:若该标志设定,则该微处理器依据从该寄存器复制到该控制寄存器的这些内容,重新开始产生这些随机数。
24.如权利要求23所述的微处理器,其特征在于:只有在该复制动作改变该控制寄存器的该一或多个控制值时,该微处理器才依据这些内容,重新开始产生这些随机数。
25.如权利要求1所述的微处理器,其特征在于:若该标志设定,则该微处理器会丢弃在将该控制值从该寄存器复制到该控制寄存器之前,所产生的这些随机数。
26.如权利要求1所述的微处理器,其特征在于:若该微处理器执行一加载该寄存器的指令,则只有在该指令从该内存加载该寄存器时,才设定该标志。
27.一种使多个软件应用程序能使用一微处理器中的随机数产生器(RNG)的方法,其特征在于,该微处理器是执行一多任务操作系统(OS),该OS在工作切换期间,不会存储及回存该RNG的状态,该方法包括:
一第一工作将一第一值加载一RNG寄存器及一非RNG寄存器;
该OS将该第一值从该非RNG寄存器存入连接至该微处理器的一内存;
在该OS存储该第一值后,一第二工作将一第二值加载该RNG寄存器;
该OS将该第一值从该内存回存至该非RNG寄存器;
在该OS将该第一值从该内存回存至该非RNG寄存器后,该RNG将该第一值从该非RNG寄存器复制到该RNG寄存器;以及
在该RNG复制该第一值之后,该RNG依据该第一值产生随机数据。
28.如权利要求27所述的方法,其特征在于,还包括:
在该第一工作将该第一值加载该RNG寄存器及该非RNG寄存器后,该RNG依据该第一值产生随机数据。
29.如权利要求27所述的方法,其特征在于:该OS将该第一值从该非RNG寄存器存入该内存的动作,是由该OS作为切换至该第二工作的工作切换的一部分来执行。
30.如权利要求27所述的方法,其特征在于,还包括:
在该第二工作将该第二值加载该RNG寄存器之后,该RNG依据该RNG寄存器中的该第二值产生随机数据。
31.如权利要求27所述的方法,其特征在于:该OS将该第一值从该内存回存至该非RNG寄存器的动作,是由该OS作为切换至该第二工作的工作切换的一部分来执行。
32.如权利要求27所述的方法,其特征在于,还包括:
该RNG响应该OS将该第一值从该内存回存至该非RNG寄存器的动作,设定一标志,以表示可能发生一工作切换。
33.如权利要求32所述的方法,其特征在于,还包括:
在该RNG设定该标志之后,该第一工作执行要求将随机数据存至该内存的一指令。
34.如权利要求33所述的方法,其特征在于,还包括:
在该第一工作执行该指令之后,该RNG判断该标志是否设定。
35.如权利要求34所述的方法,其特征在于:该RNG将该第一值从该非RNG寄存器复制到该RNG寄存器的动作,是依据该判断该标志是否设定的动作,而选择性地执行。
36.如权利要求27所述的方法,其特征在于,还包括:
在该OS将该第一值从该非RNG寄存器存入该内存,且该第二工作将该第二值加载该RNG寄存器之后,该RNG丢弃由该RNG所产生的随机数据。
37.一种使一微处理器能让多个软件应用程序使用该微处理器中的随机数产生器(RNG)的方法,其特征在于,该微处理器是执行一多任务操作系统(OS),而该OS在工作切换期间,不会存储及回存该随机数产生器的状态至一内存,该方法包括:
对于一第一工作执行一第一指令,响应以将一第一值加载一RNG寄存器及一非RNG寄存器;
对于该第一工作执行一第二指令,响应以将该第一值从该非RNG寄存器复制到该RNG寄存器,其中该复制动作是于该OS已将该第一值从该内存回存至该非RNG寄存器之后执行;以及
在将该第一值从该非RNG寄存器复制到该RNG寄存器之后,依据该第一值产生随机数据。
38.如权利要求37所述的方法,其特征在于,还包括:
响应于该OS将该第一值从该内存回存至该非RNG寄存器,而设定一标志,以表示可能发生工作切换。
39.如权利要求38所述的方法,其特征在于,还包括:
判断该标志是否设定,其中该判断是响应该第一工作执行要求将随机数据存至该内存的一第二指令而进行。
40.如权利要求39所述的方法,其特征在于:该复制动作是依据该判断而选择性地执行。
41.如权利要求39所述的方法,其特征在于,还包括:
若该标志已设定,则在该复制动作之前,丢弃由该RNG所产生的随机数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/300,931 US7136991B2 (en) | 2001-11-20 | 2002-11-20 | Microprocessor including random number generator supporting operating system-independent multitasking operation |
US10/300,931 | 2002-11-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1503128A true CN1503128A (zh) | 2004-06-09 |
CN1261871C CN1261871C (zh) | 2006-06-28 |
Family
ID=32229880
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN03158188.9A Expired - Lifetime CN1261871C (zh) | 2002-11-20 | 2003-09-16 | 具有支持多任务运算的随机数产生器的微处理器及方法 |
Country Status (5)
Country | Link |
---|---|
US (2) | US7136991B2 (zh) |
EP (1) | EP1422614B1 (zh) |
CN (1) | CN1261871C (zh) |
DE (1) | DE60304971T2 (zh) |
TW (1) | TWI232405B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100440153C (zh) * | 2004-09-17 | 2008-12-03 | 松下电器产业株式会社 | 处理器 |
US8099533B2 (en) | 2004-08-03 | 2012-01-17 | Nxp B.V. | Controller and a method for controlling the communication between a processor and external peripheral device |
CN112597453A (zh) * | 2020-12-04 | 2021-04-02 | 光大科技有限公司 | 程序代码加密解密方法和装置 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060064448A1 (en) * | 2001-11-20 | 2006-03-23 | Ip-First, Llc. | Continuous multi-buffering random number generator |
US7149764B2 (en) * | 2002-11-21 | 2006-12-12 | Ip-First, Llc | Random number generator bit string filter |
US7136991B2 (en) * | 2001-11-20 | 2006-11-14 | Henry G Glenn | Microprocessor including random number generator supporting operating system-independent multitasking operation |
US7219112B2 (en) * | 2001-11-20 | 2007-05-15 | Ip-First, Llc | Microprocessor with instruction translator for translating an instruction for storing random data bytes |
US7139785B2 (en) * | 2003-02-11 | 2006-11-21 | Ip-First, Llc | Apparatus and method for reducing sequential bit correlation in a random number generator |
US7890735B2 (en) * | 2004-08-30 | 2011-02-15 | Texas Instruments Incorporated | Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture |
US20060129714A1 (en) * | 2004-12-10 | 2006-06-15 | Fujitsu Limited | Method and apparatus for transferring data |
JP4451837B2 (ja) * | 2004-12-10 | 2010-04-14 | 富士通株式会社 | データ転送装置およびデータ転送方法 |
US7958456B2 (en) * | 2005-12-23 | 2011-06-07 | Apple Inc. | Scrolling list with floating adjacent index symbols |
US7792075B2 (en) * | 2006-01-05 | 2010-09-07 | Qualcomm Incorporated | Method and apparatus to perform persistence tests in a network |
US20080010671A1 (en) * | 2006-06-09 | 2008-01-10 | John Mates | Whitening functional unit and method |
US8726041B2 (en) * | 2007-05-09 | 2014-05-13 | Sony Corporation | Methods and apparatus for generating a random number in one or more isolated processors |
US8341165B2 (en) * | 2007-12-03 | 2012-12-25 | Intel Corporation | Method and apparatus for searching extensible markup language (XML) data |
JP6286067B2 (ja) * | 2014-12-14 | 2018-02-28 | ヴィア アライアンス セミコンダクター カンパニー リミテッド | アウトオブオーダープロセッサでの長いロードサイクルに依存するロードリプレイを除外するメカニズム |
CN112630678B (zh) * | 2020-12-11 | 2022-04-29 | 浪潮电子信息产业股份有限公司 | 一种主板核心电源的测试系统 |
Family Cites Families (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3706941A (en) * | 1970-10-28 | 1972-12-19 | Atomic Energy Commission | Random number generator |
US4063220A (en) * | 1975-03-31 | 1977-12-13 | Xerox Corporation | Multipoint data communication system with collision detection |
US4375620A (en) * | 1980-12-15 | 1983-03-01 | The United States Of America As Represented By The Secretary Of The Navy | Pseudo-atmospheric noise generator with control of temporal characteristics |
US4513386A (en) * | 1982-11-18 | 1985-04-23 | Ncr Corporation | Random binary bit signal generator |
US5257282A (en) * | 1984-06-28 | 1993-10-26 | Unisys Corporation | High speed code sequence generator |
DE3569414D1 (en) | 1984-07-26 | 1989-05-18 | Miles Inc | Circuitry for a portable test strip reading instrument |
US4780814A (en) * | 1987-02-09 | 1988-10-25 | Intel Corporation | Global serial channel for microcontroller |
JPS63245529A (ja) | 1987-03-31 | 1988-10-12 | Toshiba Corp | レジスタ退避復元装置 |
US5163132A (en) * | 1987-09-24 | 1992-11-10 | Ncr Corporation | Integrated controller using alternately filled and emptied buffers for controlling bi-directional data transfer between a processor and a data storage device |
US5179662A (en) | 1989-08-31 | 1993-01-12 | International Business Machines Corporation | Optimized i/o buffers having the ability to increase or decrease in size to meet system requirements |
JP2982974B2 (ja) | 1990-10-02 | 1999-11-29 | 株式会社セガ・エンタープライゼス | 乱数発生装置 |
US5251165A (en) * | 1992-04-09 | 1993-10-05 | James Iii J Colin | Two phase random number generator |
US5528526A (en) * | 1993-02-02 | 1996-06-18 | Motorola, Inc. | Arbitrary repeating pattern detector |
DE69326681T2 (de) * | 1993-04-06 | 2000-02-10 | Hewlett Packard Co | Verfahren und Apparat zum Erzeugen von linearen Rückführungsschieberegistersequenzen |
KR970002951B1 (ko) | 1994-04-13 | 1997-03-13 | 양승택 | 2^n길이 의사 난수 계열 발생 장치 |
US5707286A (en) | 1994-12-19 | 1998-01-13 | Mikohn Gaming Corporation | Universal gaming engine |
US5757923A (en) | 1995-09-22 | 1998-05-26 | Ut Automotive Dearborn, Inc. | Method of generating secret identification numbers |
US5956289A (en) * | 1997-06-17 | 1999-09-21 | Micron Technology, Inc. | Clock signal from an adjustable oscillator for an integrated circuit |
US6704871B1 (en) * | 1997-09-16 | 2004-03-09 | Safenet, Inc. | Cryptographic co-processor |
CA2641215C (en) | 1997-09-16 | 2010-05-25 | Safenet, Inc. | Cryptographic co-processor |
SE512009C2 (sv) * | 1998-05-18 | 2000-01-10 | Ericsson Telefon Ab L M | Linjärt återkopplade skiftregister med låg effekt |
US6247082B1 (en) * | 1998-11-03 | 2001-06-12 | 3Com Corporation | Method and circuit for providing handshaking to transact information across multiple clock domains |
US6199156B1 (en) * | 1998-12-16 | 2001-03-06 | Bull Hn Information Systems Inc. | System for explicitly referencing a register for its current content when performing processor context switch |
SE515897C2 (sv) | 1999-04-12 | 2001-10-22 | Ericsson Telefon Ab L M | Anordning och förfarande för en avdelad buffert |
FR2802661B1 (fr) | 1999-12-21 | 2003-10-31 | Bull Sa | Generateur de nombres aleatoires haut debit |
US6594680B1 (en) * | 1999-12-30 | 2003-07-15 | Texas Instruments Incorporated | Psuedo-random noise sequence generating system |
US6816876B2 (en) * | 2000-01-28 | 2004-11-09 | Infineon Technologies Ag | Apparatus and method for modifying an M-sequence with arbitrary phase shift |
GB2361567B (en) | 2000-04-18 | 2004-02-11 | Mitel Corp | Hardware authentication system and method |
US6775776B1 (en) | 2000-06-27 | 2004-08-10 | Intel Corporation | Biometric-based authentication in a nonvolatile memory device |
US6732127B2 (en) * | 2001-01-10 | 2004-05-04 | Hewlett-Packard Development Company, L.P. | Verifiable random number generator using chaos |
US7007050B2 (en) * | 2001-05-17 | 2006-02-28 | Nokia Corporation | Method and apparatus for improved pseudo-random number generation |
US7478266B2 (en) * | 2001-05-21 | 2009-01-13 | Mudalla Technology, Inc. | Method and apparatus for fast transaction commit over unreliable networks |
US8315383B2 (en) | 2001-07-27 | 2012-11-20 | Hewlett-Packard Development Company, L.P. | Method and apparatus for random bit-string generation utilizing environment sensors |
US6643740B1 (en) * | 2001-07-30 | 2003-11-04 | Lsi Logic Corporation | Random replacement generator for a cache circuit |
JP2003108365A (ja) | 2001-09-28 | 2003-04-11 | Sanyo Electric Co Ltd | 乱数発生回路 |
US7219112B2 (en) * | 2001-11-20 | 2007-05-15 | Ip-First, Llc | Microprocessor with instruction translator for translating an instruction for storing random data bytes |
US7136991B2 (en) | 2001-11-20 | 2006-11-14 | Henry G Glenn | Microprocessor including random number generator supporting operating system-independent multitasking operation |
US20060064448A1 (en) | 2001-11-20 | 2006-03-23 | Ip-First, Llc. | Continuous multi-buffering random number generator |
US7149764B2 (en) * | 2002-11-21 | 2006-12-12 | Ip-First, Llc | Random number generator bit string filter |
US6871206B2 (en) * | 2001-11-20 | 2005-03-22 | Ip-First, Llc | Continuous multi-buffering random number generator |
US6947960B2 (en) * | 2002-02-21 | 2005-09-20 | Koninklijke Philips Electronics N.V. | Randomness test utilizing auto-correlation |
US20030158876A1 (en) * | 2002-02-21 | 2003-08-21 | Koninklijke Philips Electronics N.V. | On-line randomness test through overlapping word counts |
US7788479B2 (en) | 2002-07-25 | 2010-08-31 | International Business Machines Corporation | Apparatus, system and method of ensuring that only randomly-generated numbers that have passed a test are used for cryptographic purposes |
US7822797B2 (en) * | 2002-07-29 | 2010-10-26 | Broadcom Corporation | System and method for generating initial vectors |
US7139785B2 (en) * | 2003-02-11 | 2006-11-21 | Ip-First, Llc | Apparatus and method for reducing sequential bit correlation in a random number generator |
US7302457B2 (en) | 2003-11-12 | 2007-11-27 | Hewlett-Packard Development Company, L.P. | Method and apparatus for providing random bits |
-
2002
- 2002-11-20 US US10/300,931 patent/US7136991B2/en active Active
-
2003
- 2003-02-21 DE DE60304971T patent/DE60304971T2/de not_active Expired - Lifetime
- 2003-02-21 EP EP03251074A patent/EP1422614B1/en not_active Expired - Lifetime
- 2003-04-18 TW TW092109009A patent/TWI232405B/zh not_active IP Right Cessation
- 2003-09-16 CN CN03158188.9A patent/CN1261871C/zh not_active Expired - Lifetime
-
2006
- 2006-06-30 US US11/428,308 patent/US7712105B2/en active Active
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8099533B2 (en) | 2004-08-03 | 2012-01-17 | Nxp B.V. | Controller and a method for controlling the communication between a processor and external peripheral device |
CN100440153C (zh) * | 2004-09-17 | 2008-12-03 | 松下电器产业株式会社 | 处理器 |
CN112597453A (zh) * | 2020-12-04 | 2021-04-02 | 光大科技有限公司 | 程序代码加密解密方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
EP1422614A3 (en) | 2004-10-27 |
CN1261871C (zh) | 2006-06-28 |
US20070110239A1 (en) | 2007-05-17 |
TW200409029A (en) | 2004-06-01 |
US7136991B2 (en) | 2006-11-14 |
EP1422614A2 (en) | 2004-05-26 |
DE60304971D1 (de) | 2006-06-08 |
US7712105B2 (en) | 2010-05-04 |
DE60304971T2 (de) | 2007-02-01 |
EP1422614B1 (en) | 2006-05-03 |
US20030131217A1 (en) | 2003-07-10 |
TWI232405B (en) | 2005-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1236380C (zh) | 具随机数产生器及用于存储随机数数据的指令的微处理器 | |
CN1308811C (zh) | 具连续多重缓冲功能的随机数产生器及产生随机数据方法 | |
CN1288550C (zh) | 随机数产生器的位串过滤装置与方法 | |
CN1261871C (zh) | 具有支持多任务运算的随机数产生器的微处理器及方法 | |
CN1514345A (zh) | 用以减低在随机数产生器中连续位相关性的装置与方法 | |
CN1287270C (zh) | 重启动翻译的指令 | |
CN1244051C (zh) | 对于处理数据的装置和方法 | |
CN1286117C (zh) | 半导体存储装置 | |
CN1303536C (zh) | 执行自高速缓存的快速推测式加载运算的微处理器及方法 | |
CN1186718C (zh) | 微控制器指令集 | |
CN1484787A (zh) | 处理器流水线中的硬件指令翻译 | |
CN1205538C (zh) | 用于多精度整数算术运算的装置 | |
CN1310131C (zh) | 随机数产生器及产生方法及具有随机位产生器的微处理器 | |
CN1688966A (zh) | 包括对准或者广播指令的多媒体协处理器控制机制 | |
CN1860441A (zh) | 用于可重新配置环境中的高效高性能数据操作元件 | |
CN1378665A (zh) | 编程概念 | |
CN1645328A (zh) | 编译装置及编译方法 | |
CN1497435A (zh) | 处理器 | |
CN1991798A (zh) | 半导体存储装置 | |
CN1469241A (zh) | 处理器、程序变换装置和变换方法以及计算机程序 | |
CN101040306A (zh) | 伪随机数生成装置 | |
CN1609802A (zh) | 用于管理许可的编程接口 | |
CN1282071C (zh) | 数据处理装置、数据处理方法和程序 | |
CN1269052C (zh) | 支持缩小代码长度的常量还原型处理器 | |
CN1516001A (zh) | 一种新型risc流水线微控制器构架及其操作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CX01 | Expiry of patent term |
Granted publication date: 20060628 |
|
CX01 | Expiry of patent term |