CN1503121A - 具随机数产生器及用于存储随机数数据的指令的微处理器 - Google Patents
具随机数产生器及用于存储随机数数据的指令的微处理器 Download PDFInfo
- Publication number
- CN1503121A CN1503121A CNA031581900A CN03158190A CN1503121A CN 1503121 A CN1503121 A CN 1503121A CN A031581900 A CNA031581900 A CN A031581900A CN 03158190 A CN03158190 A CN 03158190A CN 1503121 A CN1503121 A CN 1503121A
- Authority
- CN
- China
- Prior art keywords
- microprocessor
- instruction
- bytes
- random data
- random
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/26—Functional testing
- G06F11/27—Built-in tests
-
- 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/30003—Arrangements for executing specific machine instructions
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Microcomputers (AREA)
- Executing Machine-Instructions (AREA)
- Storage Device Security (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Advance Control (AREA)
Abstract
本发明公开了一种微处理器,包括随机数产生器(RNG),以及用以存储产生器所产生的随机数据字节的指令。RNG包括多个用以缓冲随机字节的缓冲器,以及相关于每个缓冲器的计数器,用以保持每个缓冲器中的字节数目的计数值。指令则指定字节所要存储的目的地。在一具体实施例中,当指令执行时,写入内存的字节数目是可变的,并且是可用字节的数目;在另一实施例中,指令指定了此数目。若数目可变,则指令会连续地存储一计数值,以指定真正存储的有效字节的数目。在一具体实施例中,目的地为系统内存中的位置。计数值可能随着字节被存至内存;或者计数值可能被存至使用者可见寄存器。指令可使用x86 REP前置码。
Description
技术领域
本发明涉及随机数产生的领域,尤其涉及微处理器内的随机数产生器,即具有随机数产生器及用于存储随机数数据的指令的微处理器。
背景技术
就历史来看,许多计算机应用软件需要提供随机数。例如,物理现象的蒙地卡罗模拟,如大规模的天气模拟,就需要提供随机数,以模拟物理现象。需要使用随机数的其它例子为娱乐游戏及在线娱乐游戏,以模拟洗牌,掷骰子等;彩券号码的产生;统计分析资料的产生,如心理学的测验;以及计算机游戏。
在这些形式的应用中,所需的随机度,以及对产生随机数的效能要求是不同的。许多应用软件,如计算机游戏,对于随机度的要求是不高的。心理学测验上的应用,对随机度有着更严格的要求,但效能需求则相当低。然而,大规模的运用蒙地卡罗的模拟会有非常高的效能需求,且需要良好的随机数统计特性,虽然不可预测性并非特别重要。其它的应用,如在线娱乐游戏,则对于随机度及不可预测性都有非常严格的要求。
虽然上述这些应用仍然是重要的,但是在计算机安全领域,则对高品质随机数有最大的需求。最近,个人计算机网络及互联网交易的爆炸性成长,对于各种安全机制的需求,已明显地增加。
对所有计算机安全的主要构成要素而言,高品质的随机数都是必要的。这些要素包含机密性、身份确认以及数据完整性。
数据加密为提供机密性的主要机制。有许多种不同的加密算法,如对称式加密、公有密钥及一次性密码本,但是这些算法都具有一关键特性,即加密/解密密钥不能被简单地预测出来。一个加密系统的密码强度基本上即是其所用密钥的强度,即预测、猜想或计算解密密钥的难度多高。最好的密钥为够长的真随机数,而在所有严格要求安全的应用中,随机数产生器为产生密码密钥的基础。
许多对密码算法成功的攻击,已非专注于加密算法,而是专注于产生随机数的来源。一个为人熟知的例子是,网景的安全套接层(Secure SocketsLayer,SSL)的早期版本,会从系统时脉与程序ID表搜集数据,以产生软件伪随机数产生器的起始值。所产生的随机数用来产生一对称密钥,以加密对话数据。有二个研究生想出了可准确猜测随机数的程序,在一分钟内,就猜出对话密钥,破坏这个机制。
与解密密钥类似,用以确认存取信息的使用者身份的密码,其强度实际上就是预测或猜测密码的难度有多高。最好的密码为够长的真随机数。此外,在有使用挑战协议(challenge protocol)的验证协议(authentication protocol)中,关键因素就是使挑战无法由进行确认的一方加以预测。而随机数则是用来产生确认身份的挑战。
数字签名及信息摘要是用来确保网络上通讯的完整性。随机数是用于大部分的数字签名算法,以使恶意的一方难于伪造签名。随机数的品质会直接影响到签名的效力。总而言之,良好的安全需要良好的随机数。
数值本身不是随机的。随机度的定义必须不仅包括所产生的数值的特征,而且也包括用以产生数值的产生器的特征。运用软件的随机数产生器是常见的,并且对于许多应用而言已足够。然而,对某些应用来说,软件产生器是不够的。这些应用需要硬件产生器,其可产生与由随机物理程序所产生数值的特征相同的数值。此处,重要的特征是,其产生数值所具有的统计分布的无偏差程度,以及不可预测与不可重制的程度。
具有无偏差的统计分布,是意谓所有的值具有相等的发生机率,无论样本大小为何。几乎所有的应用都要求其随机数具有良好的统计分布,而高品质的软件随机数产生器通常能满足此需求。只满足无偏差统计分布的需求的产生器称为伪随机数产生器。
不可预测性是指在一位序列中,正确猜测下个位的机率应刚好为一半,无论先前所产生的位值为何。某些应用不需要此种不可预测性的特征;然而,对安全应用所使用的随机数而言,则是要紧的。若使用软件产生器,则要有效满足不可预测性的需求,必须隐藏软件算法及其初始值。从安全的观点而言,隐藏算法的做法是非常不保险的。对于使用可预测的隐藏算法随机数产生器的应用软件而言,有不少安全上遭致破坏的例子是为人所熟知的。同时满足前二种需求的产生器称为密码安全伪随机数产生器。
产生器若为不可重制的,则二个具有相同起始条件的相同产生器,必须产生不同的输出。软件算法不能满足此需求。只有基于随机物理程序的硬件式产生器,能产生满足安全所需的严格不可重制性的数值。满足所有三个需求的产生器称为真随机数产生器。
软件算法是用来产生计算机应用所需的大部分随机数。这些称为伪随机数产生器,这是因为这些产生器不能满足不可预测性及不可重制性的需求。再者,有些也不能满足无偏差统计分布的需求。
通常,软件产生器以一初始值或籽数(seed)开始工作,该初始值有时是由使用者所提供。产生器以该初始值执行算术运算,以产生第一随机结果,其作为产生第二结果的籽数,依此类推。软件产生器必然是循环式的,最终其会重复相同的输出序列。猜测籽数就等于能预测整个所产生的数值序列。其不可重制性只与算法及初始籽数的机密程度一样,而这可能是安全上的应用并不想要的特性。再者,软件算法是可重制的,因为以相同输入开始,其会产生相同的结果。最后,软件算法不必然会产生输出数据大小的范围内的每个可能的值,这可能无法完全满足无偏差统计分布的需求。
有一种随机数产生器,是软件产生器与纯硬件产生器混合而成,称为熵产生器(entropy generator)。熵为不可预测性的另一种说法。产生器所产生的数值愈不可预测,产生器所具有的熵就愈多。熵产生器会将软件算法应用于由物理现象所产生的籽数。例如,常用的PC加密程序会记录几秒钟的鼠标移动及键盘敲击的特性,以获得其所需的籽数。这些动作不见得会产生不理想的熵数,且通常需要使用者某种程度的涉入。对多数的熵产生器而言,最不理想的特征就是要花很多时间,才能达到足够的熵。
从前文可清楚得知,某些应用,包括安全上的应用,需要由随机物理程序才能产生的随机数,如横跨半导体二极管或电阻器的热噪声、自发振荡器的频率不稳定度或是在特定的时间周期内,半导体电容器的充电量。这几种随机数源已用于一些商业用途的加入式(add-in)随机数产生器装置,如PCI卡及串行总线装置。这些装置在商业上的使用并不广泛,明显是因为它们不是相当慢就是相当贵。
最近所发展的一种成本低廉的解决方案,是英特尔固件集线器(IntelFirmware Hub)82802中的硬件随机数产生器,其使用热噪声来产生随机数。固件集线器为计算机系统的芯片组中的芯片,包括存储系统固件的闪存,如系统BIOS。当系统处理器需要一字节的随机数据时,它会去查询固件集线器的状态寄存器中的一个位。固件集线器在可取得一字节的随机数据时,会设定此位。一旦此位已设定,处理器即从固件集线器的另一寄存器中读取一个随机数据字节。若一应用程序需要大量的随机数据字节,则它会持续查询此位,直到另一个字节已准备好,然后再进行读取。此程序会重复这个程序,直到其已累积足够数量的随机数据字节。
一种可提供便宜、高效能的硬件随机数产生器的解决方案,是将其并入微处理器内。随机数产生器可利用前述的随机物理程序产生随机数,并且成本相当低廉,因为其可并入既有的半导体晶体中。这样的微处理器需要一种方式,来提供随机数据字节给应用程序。并且,我们希望这种提供随机数据字节的方式对应用程序而言是有效率的。再者,也希望这种方式能在多任务环境中正确运行,使计算机系统所执行的多个应用程序可共享随机数产生器的功能。
发明内容
本发明提出一种微处理器,其包括随机数产生器,以及指令,用以将产生器所产生的随机数存储至指令所指定的目的地。因此,为了达到上述的目的,本发明的一项特征是,提出一种可由微处理器执行的宏指令(macroinstruction),用以将随机数从微处理器存储至连接于微处理器的内存。此指令包括一运算码以及用于存储第一操作数的第一字段。第一操作数指定内存中的地址,以存储由微处理器内的随机数产生器所产生的零到多个字节的随机数据。此宏指令也包括用以存储第二操作数的第二字段。第二操作数指定微处理器内的寄存器。此寄存器是用以存储内存所存的零到多个字节的随机数据。
如上所述的宏指令,其中,该运算码具有一预定值。
如上所述的宏指令,其中,该预定值为0x0F 0xA7。
如上所述的宏指令,其中,该微处理器存储未由该宏指令所指定的一可变量目的该零到多个字节随机数据。
如上所述的宏指令,其中,该微处理器也将一计数值及该零到多个字节随机数据存储至该内存,该计数值是指定存至该内存的该零到多个字节随机数据的该可变数目。
如上所述的宏指令,其中,该微处理器将该计数值存储于该内存地址,并将该零到多个字节随机数据存储至该计数值的相邻位置。
如上所述的宏指令,其中,该微处理器也将一计数值加载该微处理器的一第二寄存器,该计数值是指定存至该内存的该零到多个字节随机数据的该可变数目。
如上所述的宏指令,其中,该第二寄存器是该微处理器的一一般用途寄存器。
如上所述的宏指令,其中,该一般用途寄存器为一EAX寄存器。
如上所述的宏指令,其中,该宏指令是不可中断的。
本发明的另一项特征是,提出一种微处理器,其具有一连接的内存。此微处理器包括存储组件,用以累积可变数目的随机数据字节。此微处理器也包括指令转译器,连接至存储组件,以转译用于指定内存地址的指令。此微处理器也包括存储单元,连接至存储组件,其响应指令转译器转译指令的动作,将可变数目的随机数据字节从存储组件存储至内存地址。
如上所述的微处理器,其中,还包括:一计数器,连接至该存储组件,用以维持累积于该存储组件中的该可变数目字节的一计数值。
如上所述的微处理器,其中,该存储单元更配置为将该计数器的该计数值及该存储组件的该可变量目的随机数据字节,存储至该内存地址。
如上所述的微处理器,其中,该微处理器是连续地将该计数器的该计数值及该存储组件的该可变量目的随机数据字节,存储至该内存地址。
如上所述的微处理器,其中,在该微处理器连续地将该计数器的该计数值及该存储组件的该可变量目的随机数据字节存储至该内存地址的动作中,包含该指令为一不可中断的指令。
如上所述的微处理器,其中,该存储单元将该计数值存储于由该地址所指定的该内存中的一位置。
如上所述的微处理器,其中,该存储单元将这些随机数据字节存储于该内存中的一位置,其相邻于存储该计数值的该位置。
如上所述的微处理器,其中,该计数值可为零。
如上所述的微处理器,其中,该微处理器在将该可变数目的随机数据字节从该存储组件存储至该内存地址之后,清除该计数器中的该计数。
如上所述的微处理器,其中,该计数值是指定自前次执行该指令以来,该存储组件所累积的该可变数目字节的一计数值。
如上所述的微处理器,其中,还包括:一第二存储组件,配置为累积一第二可变数目的随机数据字节;以及一第二计数器,连接至该第二存储组件,用以维持累积于该第二存储组件中的该第二可变数目字节的一计数值。
如上所述的微处理器,其中,该存储单元更配置为响应该指令转译器转译该指令的动作,将该计数值从该计数器存储至该微处理器中一使用者可见寄存器。
如上所述的微处理器,其中,还包括:一随机位产生器,连接至该存储组件,用以产生随机位,以形成随机数据字节,累积于该存储组件中。
如上所述的微处理器,其中,还包括:一移位寄存器,连接于该随机位产生器与该存储组件之间,用以从该随机位产生器所产生的这些随机位形成这些随机数据字节。
如上所述的微处理器,其中,还包括:一总线接口单元,连接至该存储单元,作为该微处理器与一总线的接口,该总线连接该微处理器及该内存,其中该总线接口单元是配置为于该总线上执行一或多个总线作业,以将该可变数目的随机数据字节存储至该内存地址。
如上所述的微处理器,其中,还包括:一写入缓冲器,连接于该存储单元与该总线接口单元之间,用以缓冲该可变数目的随机数据字节,直到该总线接口单元执行该一或多个总线作业。
本发明的另一项特征是,提出一种用以执行多任务操作系统的微处理器。此微处理器是连接至系统内存。此微处理器包括随机数产生器,其具有可累积零到N个随机数据字节的缓冲器,其中N大于1。此微处理器也包括维持缓冲器所累积字节的计数值的计数器。此微处理器也包括指令转译器,连接至随机数产生器,用以转译一指令,以指示此微处理器将缓冲器所累积的字节存储至系统内存。
如上所述的微处理器,其中,该微处理器也将该计数值存储至该系统内存。
如上所述的微处理器,其中,该微处理器也将该计数值存储至该微处理器的一使用者可见寄存器。
本发明的另一项特征是,提出一种用以执行多任务操作系统的微处理器。此微处理器具有多个使用者可见寄存器。此微处理器包括随机数产生器,其具有可累积零到N个随机数据字节的缓冲器,其中N大于1。此微处理器也包括维持缓冲器所累积字节的计数值的计数器。此微处理器也包括指令转译器,连接至随机数产生器,用以转译一指令,以指示此微处理器将缓冲器所累积的字节存储至这些使用者可见寄存器其中之一。
本发明的另一项特征是,提出一种微处理器,其具有多个使用者可见寄存器。此微处理器包括随机数产生器,以产生随机数据字节。此微处理器也包括指令转译器,连接至随机数产生器,用以转译微处理器指令集的一指令。此指令包括运算码及目的操作数,用于指定一目的,以存储随机数产生器所产生的一数量的随机数据字节。此数量是指定于微处理器的使用者可见寄存器其中之一。
如上所述的微处理器,其中,这些使用者可见寄存器的该其中之一为这些使用者可见寄存器中预定的一个。
如上所述的微处理器,其中,该指令更包括一前置码,用以表示该指令具有指定于这些使用者可见寄存器的该其中之一的该数目的这些随机数据字节。
本发明的另一项特征是,提出一种用以执行多任务操作系统的微处理器。此微处理器包括随机数产生器,其具有用以累积可变数目的随机数据字节的缓冲器,以及用以计数累积字节的可变量目的计数器。此微处理器也包括指令转译器,连接至随机数产生器,用以转译微处理器指令集的一指令。此指令用以将计数器的一计数值及缓冲器的累积字节存储至连接于此微处理器的内存。此微处理器也包括中断单元,连接至指令转译器,用以在指令转译器转译此指令之后,禁止微处理器的中断,并在此指令执行之后,使能中断。
本发明的一项优点是,不像现有方法需要查询状态位以判断随机数据何时可用,本发明的具体实施例可实时提供可用的随机数据。另一项优点是在某些实施例中,所提供的指令是连续执行的,因而原本就可支持多任务。另一项优点是在某些实施例中,由于计数值及随机数据字节被一起写入内存,因此所提供的指令具有自我分类(self-typing)的数据。这是有助益的,因为大部分的实施例允许指令存储可变量目的随机数据字节。
在参考本说明书的其余部份及附图后,本发明的其它特征及优点将更为明显易知。
附图说明
图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微处理器中,图2 RNG单元的串过滤装置的方框图;
图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:maxz_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_trailing_zeros信号
1032A,1032B:固定零值 1034A: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)寄存器XMM0 372,这部分在下文会配合图2及图3做说明。XSTORE及XLOAD指令在下文也会做更详细地说明。
此外,指令转译器106会将转译指令的相关信息送到中断单元146,以使中断单元146能适当地使能及禁止中断。再者,指令转译器106会将转译指令的相关信息送到RNG单元136。例如,指令转译器106会将关于转译的XSTORE及XLOAD指令的信息送到RNG单元136。此外,当一将值加载SSE寄存器XMM0 372的指令被转译时,指令转译器106会通知RNG单元136,以使RNG单元136采取某些动作,如设定标志,以指出操作系统可能会进行一工作切换,如下文所述。
在一具体实施例中,指令转译器106会将宏指令,如Pentium III或IV的指令,转译为由微处理器100管线所执行的一个或多个微指令。
微处理器100也包括一微码ROM 132,其连接至指令转译器106。微码ROM 132会存储微程序代码指令,以送到指令转译器106,由微处理器100来执行。微处理器100指令集中的某些指令,是以微程序代码来实作。即,当指令转译器106转译这些指令的其中一个时,指令转译器106会使微码ROM 132内的一微指令例程被执行,藉以执行转译的宏指令。在一具体实施例中,XSTORE及/或XLOAD指令是以微程序代码执行。此外,在一具体实施例中,XSTORE及XLOAD指令是连续执行的,此因其为不可中断的。即,在XSTORE及XLOAD指令的执行期间,中断会被禁止。
微处理器100也包括一寄存器文件108,其连接至指令转译器106。寄存器文件108包括微处理器100的使用者可见寄存器,及其它寄存器。在一具体实施例中,寄存器文件108中的使用者可见寄存器包括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。BIU 128是作为微处理器100与一处理器总线138的接口。处理器总线138将微处理器100连接至系统内存。BIU 128执行处理器总线138上的总线作业,以在微处理器100与系统内存之间传递数据。特别是,BIU 128会执行处理器总线138上的一个或多个总线作业,以将XSTORE指令计数及数据存储至系统内存。此外,BIU 128会执行处理器总线138上的一或多个总线作业,以从系统内存加载XLOAD指令控制值。
微处理器100也包括读取缓冲器126,其连接至BIU 128及寄存器文件108。对于藉由BIU 128从系统内存所接收的数据,在其等待送到加载单元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,MSR 212将在下文配合图3做更详细地说明。MSR212也连接至控制逻辑244。自测试单元202会将自测试失败信号288送到控制逻辑244。若自测试单元202被自测试使能信号292所使能,则自测试单元202会执行各种RNG单元136的自测试。若自测试失败,自测试单元202会产生真值的自测试失败信号288,并送至MSR 212。在一具体实施例中,自测试单元202会执行随机数产生器统计测试,如联邦信息处理标准(FIPS)刊物第140-2期的第35-36页所定义的,此处予以参考并入。
在一具体实施例中,自测试单元202在使用者的要求下执行自测试。在一具体实施例中,在微处理器100重置后,自测试单元202会执行自测试。若自测试失败,不论是使用者所要求的或重置后所做的,自测试单元202都会产生真值的自测试失败信号288,其是反映于图3中MSR 212的自测试失败位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为MSR 212的RNG存在位314的副本。在一具体实施例中,应用程序可藉由执行IA-32指令集中的CPUID指令来读取CPUID寄存器204。若RNG存在位302为伪,则表示RNG单元136并不存在于微处理器100,且微处理器100不具备随机数产生的特征。有利的是,需要随机数的应用可通过RNG存在位302,来检测微处理器100中的RNG单元136是否存在,且若RNG单元136不存在,则选择由另一个也许效能较低的来源来取得随机数。
RNG单元136也包括两个连接至控制逻辑244的随机位产生器,称为随机位产生器0 206及随机位产生器1 208,随机位产生器206及208都会产生一串随机位,由RNG单元136累积成随机数据的字节。随机位产生器206及208都会接收一电源控制(power_cntrl)信号231,其是用以指定是否关闭随机位产生器206及208的电源。在一具体实施例中,关闭随机位产生器206及208电源的动作包括不送时钟脉冲信号给它们。随机位产生器206及208都会依据微处理器100的随机电气特性(如热噪声),而产生一连串随机数据位。
随机位产生器0 206会从MSR 212接收一直流偏压信号296。直流偏压信号296传送图3中MSR 212的直流偏压位322所存的值。直流偏压信号296的值指定一直流偏压电压,以部分地控制随机位产生器0 206中的自发振铃振荡器的工作电压。
以下申请中的美国专利案,申请号为10/046055、10/046054及10/046057,标题分别为“用以产生随机数的装置”、“振荡器偏压变化机制”及“振荡器频率变化机制”,其中均对随机位产生器0 206做了详细说明,此处全部予以参考并入。
RNG单元136也包括一具有两输入端的多路复用器214,其输入端连接至随机位产生器206及208的输出端。多路复用器214依据CSR 226所提供的产生器选择信号252,来选择两输入端的其中一个。产生器选择信号252会传送图3中CSR 226的产生器选择位336所存储的值。
RNG单元136也包括一范纽曼白化器216,或称压缩器,其连接至多路复用器214的输出端。白化器216是藉由从MSR 212所接收的原始位信号254,而选择性地被使能/禁止。原始位信号254会传送存储于图3中MSR 212的原始位字段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将一送到CSR 226的CNT失败信号294设定为真,并存储于图3中CSR 226的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位串)。此指定值是由从CSR 226所接收的最大计数(max_cnt)信号258来指定。max_cnt信号258会传送图3中CSR 226的串过滤装置最大计数字段346所指定的值。在一具体实施例中,max_cnt 346的默认值为26个位。在一具体实施例中,串过滤装置最大计数字段346的值必须至少为8。若串过滤装置224检测到一连续的相似位串长度超过max_cnt258,则串过滤装置224将一过滤失败信号256设为真,此信号是存储于图3中CSR 226的串过滤装置失败位338中。串过滤装置224在以下会配合图10到12做更详细地说明。
RNG单元136也包括一具两输入端的第二多路复用器228。其中一输入端是连接至串过滤装置224的输出端,而另一输入端是连接至移位寄存器218的输出端。多路复用器228依据CSR 226所提供的过滤使能信号262,而选择其中一输入端,以传送图3中CSR 226的串过滤装置使能位334所存的值。
RNG单元136也包括一个具一输入端与两输出端的多路分用器232,其输入端是连接至多路复用器228的输出端。多路分用器电路包括单一数据输入端及多个数据输出端。多路分用器也包括一控制输入端。多路分用器会依据控制输入端的信号来选择多个数据输出端的其中一个,并将数据输入端所接收的数据送到所选的输出端。此处多路分用器232则依据控制逻辑244所提供的填充选择(fill_select)信号264,将输入端所接收的随机数据字节选择性地送到其中一个输出端。
RNG单元136也包括两个数据缓冲器,标示为缓冲器0 242及缓冲器1246,都连接至多路分用器232的输出端。缓冲器0 242及缓冲器1 246藉由XSTORE指令,来累积要存储至系统内存的随机数据字节。在一具体实施例中,缓冲器0 242及缓冲器1 246各可存储15个字节的随机数据。在一具体实施例中,缓冲器0 242及缓冲器1 246各可存储16个字节的随机数据。
RNG单元136也包括一具两个输入端的第三多路复用器236,其输入端连接至缓冲器0 242及缓冲器1 246的输出端。多路复用器236依据控制逻辑244所提供的存储选择(store_select)信号266,选取其输入端的其中一组随机数据字节,以输出至一数据总线278上。
RNG单元136也包括一TSPO标志寄存器274,其连接至控制逻辑244。TSPO标志寄存器274存储一标志,用以表示操作系统所进行的工作切换是否可能发生。TSPO标志寄存器274的使用在以下会做更详细地说明。
RNG单元136也包括一具两输出端的第二多路分用器215,其连接至控制逻辑244。多路分用器215的输入端连接至控制逻辑244,以接收其所产生的递增信号221。每当一随机数据字节存入缓冲器0 242或缓冲器1 246时,控制逻辑244会将递增信号221设为真。多路分用器215依据fill_select信号264,将其输入端所接收的递增信号221选择性地送到其中一输出端。
RNG单元136也包括一具两输入端的第三多路分用器217,其连接至控制逻辑244。多路分用器217的输入端连接至控制逻辑244,以接收其所产生的清除信号223。每当执行一XSTORE指令时,控制逻辑244会将清除信号223设为真,以使得有效的随机数据字节从缓冲器0 242或缓冲器1 246中移除。多路分用器217依据store_select信号266,将其输入端所接收的清除信号223选择性地送到其中一输出端。
RNG单元136也包括两个计数器,标示为计数器0 211及计数器1 213,其连接至多路分用器215及多路分用器217。计数器0 211及计数器1 213各具有一递增(或计数)输入端。计数输入端连接至多路分用器215的输出端。因此,当控制逻辑244将递增信号221设为真时,计数器0 211及计数器1 213中由fill_select信号264所指定的一个会递增。计数器0 211及计数器1 213中也各具有一清除输入端。清除输入端连接至多路分用器217的输出端。因此,当控制逻辑244将清除信号223设为真时,计数器0 211及计数器1 213中由store_select信号266所指定的一个会被清除为0。
RNG单元136也包括两个比较器225,其连接至计数器0 211及计数器1 213的输出端。比较器225将计数器0 211及计数器1 213所输出的计数值,与计数器0 211及计数器1 213可存储的字节数目做比较,以判断计数器0211及计数器1 213是否已满,并产生full0信号229及full1信号227,以将比较结果告知控制逻辑244。
RNG单元136也包括一具两个输入端的第四多路复用器219,其输入端连接至计数器0 211及计数器1 213的输出端。多路复用器219会依据存储选择(store_select)信号266,选取其输入端的其中一计数值,以输出作为可用字节计数234。可用字节计数234也会送到CSR 226。
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可存储一计数字节,加上缓冲器0 242及缓冲器1246所能存储的随机数据字节。
在一具体实施例中,RNG单元136包括四个缓冲器,而非两个。每一缓冲器可存储多达八个字节的随机数据。在此实施例中,多路分用器215、217及232包含具四个输出端的多路分用器;多路复用器219及236包含具四个输入端的多路复用器;比较器225包括四个比较器,以产生四个充满输出;而fill_select信号264及store_select信号266包括二个位,用以选择四个计数器及缓冲器的其中一个。
现请参照图3,其是本发明图1微处理器100中,与图1 RNG单元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遇到这些指令时,将产生无效指令异常。此外,读取MSR 212中的位,结果是未定义,而尝试写入,则不会产生任何效果。RNG存在位302为MSR 212的RNG存在位314的副本。
图3也显示图2中的MSR 212。MSR 212包括一RNG使能位312。RNG使能位312是可写入的。将RNG使能位312写入1会使RNG单元136使能。将RNG使能位312写入0则使RNG单元136禁止。若RNG使能位312为0,则XLOAD及XSTORE指令即为无效,而若指令转译器106遇到这些指令时,将产生无效指令异常。此外,读取MSR 212中的位,结果是未定义,而尝试写入,则不会产生任何效果。RNG使能位312的值在重置之后,即变为0。
MSR 212也包括一只读的RNG存在位314。RNG存在位314是表示RNG单元136是否存在于微处理器100中。若RNG存在位314为0,则RNG单元136不能藉由设定RNG使能位312来使能,并且,读取MSR 212中的位,结果是未定义,而尝试写入,则不会产生任何效果。此外,若RNG单元136的自测试失败,则RNG存在位314将被清除,如前文图2部分所述。
MSR 212也包括一只读的统计自测试使能位316。自测试使能位316表示前述图2部分的重置后的自测试目前是否使能。若自测试使能位316为0,则在重置之后,不会执行自测试。若自测试使能位316为1,则在重置之后,会执行自测试。在一具体实施例中,在微处理器100的暖重置及电源开启重置之后,会执行自测试。
MSR 212也包括一只读的统计自测试失败位318。自测试失败位318是表示前述图2部分的最近重置后的自测试是否失败。在一具体实施例中,若自测试失败位318为1,则RNG单元136无法被使能。
MSR 212也包括可写入的直流偏压位322。在一具体实施例中,直流偏压位322包括三个位。直流偏压位322是用以控制送到随机位产生器0 206的直流偏压,其会影响随机位产生器0 206的运行速度及可能的随机度。在一具体实施例中,若在重置时执行统计自测试,则自测试单元202会决定出直流偏压位322的正确值或最佳值,并将其设定为此值。在重置之后,直流偏压位322的值即变为000。
MSR 212也包括可写入的原始位位324。若原始位位324设定为0,则图2的白化器216会执行前文图2部分所述的白化功能,并将白化位传送到移位寄存器218。若原始位位324设定为1,则白化器216不会执行白化功能,而将来自于多路复用器214的原始位传送到移位寄存器218。在重置之后,原始位位324的值即变为0。
图3也显示图2中的CSR 226。在一具体实施例中,CSR 226为128位的寄存器。CSR 226包括只读的可用字节计数字段332。可用字节计数字段332会指明在store_select信号266所选择的缓冲器0 242或缓冲器1 246中,目前有多少字节的随机数据可藉由XSTORE指令来存储。若有需要,可藉软件来读取可用字节计数字段332,以判断目前有多少随机数据字节可藉由XSTORE指令来存储。由于RNG单元136会将字节同步地累积至缓冲器0242及缓冲器1 246,在执行XSTORE的时候,可存储的字节的实际数目可能大于先前藉XLOAD所读取的可用字节计数332。在RNG单元136使能之后,可用字节计数字段332的值即变为0。
CSR 226也包括可写入的串过滤装置使能位334。若串过滤装置使能位334为1,则串过滤装置224被使能;否则串过滤装置224被禁止。串过滤装置224的运行在以下会配合图10到12,做更详细地说明。在RNG单元136使能之后,串过滤装置使能位334的值即变为0。
CSR 226也包括可写入的产生器选择位336。若产生器选择位336设定为0,则选取随机位产生器0 206,以由图2的多路复用器214,提供随机比特流加以累积;否则,会选取随机位产生器1 208。在RNG单元136使能之后,产生器选择位336的值即变为0。
CSR 226也包括串过滤装置失败位338。若串过滤装置失败位338设定为1,是表示串过滤装置224检测到一连续的相似位串长于串过滤装置max_cnt字段346所指定的值,如前文图2及图10到12部分所述。只有RNG单元136可将串过滤装置失败位338设定为1。然而,软件可藉由将0写入其中,清除串过滤装置失败位338。在一具体实施例中,过滤失败位338可藉由过滤失败信号256的脉冲设定为1,并且维持于1,直到软件将其清除为止。在RNG单元136使能之后,串过滤装置失败位338的值即变为0。
CSR 226也包括可写入的计数(CNT)使能位342。若CNT使能位342设定为1,则CNT单元222会执行连续的随机数产生器测试,如图2部分所述。在RNG单元136使能之后,CNT使能位342的值即变为0。
CSR 226也包括只读的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。
CSR 226也包括可写入的串过滤装置max_cnt字段346。软件将值写入串过滤装置max_cnt字段346,以指定可容忍的最大数目的可允许连续相似位,如以下图10到12部分所述。在一具体实施例中,串过滤装置max_cnt字段346包括5个位。在一具体实施例中,串过滤装置max_cnt字段346的默认值为26。
在一具体实施例中,MSR 212的各个字段是包含于CSR 226,而不是MSR 212中。因此,MSR 212的值会以CSR 226来做存储及回存,以适用于多任务运行,如此处所述,特别是图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的制造过程中,其会暂时或永久地加以设定,以便于重置时,能选取CSR 226及MSR 212中各个位的值,取代前述的重置值。
现请参照图4,其是根据本发明,图1的微处理器100执行将值加载图3 XMM0寄存器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的CSR 226的工具,以指定RNG单元136运行所需的控制值。因为CSR 226不存在于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移到CSR 226及XMM0 372,如图所示。在一具体实施例中,XLOAD指令的运算码值为0x0F 0x5A,其后接着x86指令所指定的标准mod R/M寄存器及地址格式字节。在另一具体实施例中,XLOAD指令的运算码值则为0x0F 0xA6 0xC0。若XLOAD指令指定SSE寄存器352中的一个,而非XMM0 372,则会加载指定的SSE寄存器352;然而,并不会加载CSR 226。
现请参照图6,其是根据本发明,图1的微处理器100执行将值加载图3XMM0寄存器372的XLOAD指令的运行流程图。流程从方框602开始。
在方框602中,微处理器100将系统内存502中,XLOAD指令所指定的内存地址的值,加载图2的CSR 226及图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及缓冲器1 246依据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及缓冲器1 246的随机数据字节,不会随着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,而丢弃缓冲器0242及缓冲器1246的内容、清除计数器0211及计数器1213、重新开始随机数的产生与累积以及清除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及计数器1 213、重新开始随机数的产生与累积以及清除TSPO标志274。流程会继续进行方框924。
在方框924中,工作B执行XSTORE指令,以存储依据方框918加载至CSR 226的控制值B所产生的随机数据。流程会继续进行方框924。
在方框926中,为了执行前一方框的XSTORE,RNG单元136会连续地将于方框922重新开始后所累积的计数值及数据,存储至系统内存,如图及图所示。流程会继续进行方框928。
在方框928中,操作系统会执行从工作B到工作A的工作切换。其中,操作系统会将XMM0 372的值(其包含控制值B)存储至系统内存,以保留工作B的状态。然而,操作系统不知道CSR 226的情况,所以操作系统不会将CSR 226存储至系统内存以保留其状态。此外,操作系统会回存工作A的状态,其包括将先前在方框914所保留的值A,从系统内存载入到XMM0 372。流程会继续进行方框932。
在方框932中,根据图4的步骤404,RNG单元136会响应在方框928的XMM0 372的加载,而设定TSPO标志274。流程会继续进行方框934。
在方框934中,工作A执行XSTORE指令,以存储依据方框904加载至CSR 226的控制值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中,图2 RNG单元136的串过滤装置224的方框图。
配合本发明的目的,前导的1位定义为一个字节开头的连续1位。一个字节可能包含0到8个前导的1位。例如,字节00011111具有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,若随机数据字节包含前导的0位,则此信号为真。
比较逻辑1002也会产生trailing_zeros信号1038B,若随机数据字节包含尾端的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 }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 } <dp n="d35"/> 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被加载缓冲器0 242或缓冲器1 246,即使移位寄存器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选取new_zeros_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,并且于信号1042A中产生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信号1042A。流程会继续进行方框1148。
在方框1146中,选择逻辑1006于one_select信号1042A中产生0的值,以使多路复用器1014A选择固定的0值输入1032A。流程会继续进行方框1148。
在方框1148中,控制逻辑244使随机数据字节298被加载由fill_select信号264所选择的缓冲器0 242或缓冲器1 246中,并将递增信号221设为真,以递增由fill_select信号264所选择的计数器0 211或计数器1 213。流程接着返回方框1104。
现在参照图12,其是根据本发明的另一具体实施例,图l微处理器100执行XSTORE指令的运行方框图。图12的XSTORE指令是类似于图7的XSTORE指令,不过在此具体实施例中,有效随机数据字节的计数值会被加载寄存器文件108的其中一个一般用途寄存器中,如EAX 1202寄存器,而不会存储至系统内存。有利的是,与图7的XSTORE指令类似,图12的XSTORE指令会连续地将计数值加载EAX,并将随机数据字节存储至内存,以促进与RNG单元136的多任务运行,且所存的有效随机数据字节的数量,显示于EAX中存储的可用字节计数。也就是,图12的XSTORE指令也是不可中断的。
现在参照图13,其是根据本发明,图2 RNG单元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所选择的随机位产生器0 206或随机位产生器1 208的电源是否已关闭。若是,流程会继续进行方框1312。否则,流程会继续进行方框1314。
在方框1312中,控制逻辑244藉由power_cntrl信号231开启所选择的随机位产生器的电源。流程会继续进行方框1314。
在方框1314中,根据图8的方框816及如图7所示,微处理器100将由store_select信号266所选择的计数器0 211或计数器1 213的值,以及由store_select信号266所选择的缓冲器0 242或缓冲器1 246中的有效数据字节,连续地存储至系统内存。流程会继续进行方框1316。
在方框1316中,控制逻辑244将清除信号223设为真,以清除由store select信号266所选择的计数器0 211或计数器1 213。流程会继续进行方框1318。
在方框1318中,控制逻辑244更新store_select信号266,以选择另一个缓冲器及计数器。在RNG单元136包含二个以上缓冲器的实施例中,store_select信号266包括多于1个的位,并且更新stores_elect信号266的动作包括递增store_select信号266,以及当递增超过缓冲器的数目时,会回归为0。流程会继续进行方框1322。
在判断方框1322中,控制逻辑244检查字节产生信号282是否为真及检查过滤失败信号256是否为伪,以判断是否产生了良好的随机数据字节。若已产生,流程会继续进行方框1324。否则,流程会继续进行判断方框1306。
在方框1324中,控制逻辑244将良好的随机数据字节加载由fill_select信号264所选择的缓冲器0 242或缓冲器1 246中,并且递增由fill_select信号264所选择的计数器0 211或计数器1 213。流程会继续进行判断方框1326。
在判断方框1326中,控制逻辑244检查由fill_select信号264所指定的full0信号229或full1信号227,以判断由fill_select信号264所选择的缓冲器0 242或缓冲器1 246是否已满。若是,流程会继续进行方框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,如图所示。此实施例的优点是,不必丢弃已累积的随机字节及重新开始随机字节的累积。即,若CSR 226的加载对于会影响RNG单元136的随机数产生功能的值未做任何改变,则由于随机字节是借助使用所要的控制值而产生,所以不需丢弃已累积的随机字节及重新开始随机字节的累积。在一具体实施例中,相关的CSR 226位为串过滤装置使能位334、产生器选择位336、CNT使能位342以及串过滤装置max_cnt 346。
现在参照图15,其是根据本发明的另一具体实施例,图1微处理器100执行图3的XSTORE指令的运行流程图。图15的流程图与图8的流程图相同,并且标号相同的方框是一样的,除了图15包括额外的判断方框1507。流程会从方框806进行到判断方框1507。在判断方框1507中,图2的控制逻辑244判断CSR 226的相关位是否已因方框806中复制至CSR 226的动作而改变。若是,流程会继续进行如图8的方框808。否则,流程会继续进行方框816,如图所示。此实施例的优点是,不必丢弃已累积的随机字节及重新开始随机字节的累积。即,若复制至CSR 226的动作对于会影响RNG单元136的随机数产生功能的值未做任何改变,则由于随机字节是借助使用所要的控制值而产生,所以不需丢弃已累积的随机字节及重新开始随机字节的累积。在一具体实施例中,相关的CSR 226位为串过滤装置使能位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,以写入有效随机数据字节,如图所示。有利的是,与图12的XSTORE指令类似,图16的XSTORE指令会连续地将随机数据字节写入该使用者可见寄存器,并将计数值加载EAX 1202,以促进与RNG单元136的多任务运行,且所存的有效随机数据字节的数量,显示于EAX中存储的可用字节计数。也就是,图16的XSTORE指令也是不可中断的。
现在参照图17,其是根据本发明的另一具体实施例,图1微处理器100执行XSTORE指令的运行方框图。图17的XSTORE指令类似于图12的XSTORE指令,然而在图17的实施例中,XSTORE指令包括一x86架构的REP前置码。藉由REP XSTORE指令,要存至系统内存的随机数据字节的数目,会被指定为寄存器文件108的ECX寄存器1702的输入参数,如图所示。软件在执行REP XSTORE指令前,会将要存至系统内存的随机数据字节的理想计数值载入ECX 1702中。
在一具体实施例中,在将随机数据字节存至系统内存的存储动作间,REPXSTORE指令是可中断的。内存地址在初始时,是指定于寄存器文件108的一般用途寄存器中。在图17的例子中,内存地址是指定于寄存器文件108的ES:EDI 1704中,如图所示。每当有一或更多个随机数据字节被写入系统内存时,ES:EDI 1702即更新为系统内存中,下个用以存储随机数据字节的位置。此外,每当有一或更多个随机数据字节存储至系统内存时,ECX 1702即更新,以反映尚待存储的随机字节数目。例如,假设REP XSTORE指令于ECX 1702中指定一字节计数值28及0x12345678的内存地址。假设在缓冲器0 242及缓冲器1 246两者之一中,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 (33)
1、一种可由一微处理器执行的宏指令,其特征在于,是用以将随机数从该微处理器存储至连接于该微处理器的一内存,该指令包括:
一运算码;
一第一字段,用以存储一第一操作数,该第一操作数指定该内存中的一地址,以存储由该微处理器内一随机数产生器所产生的零到多个字节的随机数据;以及
一第二字段,用以存储一第二操作数,该第二操作数指定该微处理器内一寄存器,该寄存器存储该内存中所存的该零到多个字节的随机数据。
2、如权利要求1所述的宏指令,其特征在于:该运算码具有一预定值。
3、如权利要求2所述的宏指令,其特征在于:该预定值为0x0F 0xA7。
4、如权利要求1所述的宏指令,其特征在于:该微处理器存储未由该宏指令所指定的一可变量目的该零到多个字节随机数据。
5、如权利要求4所述的宏指令,其特征在于:该微处理器也将一计数值及该零到多个字节随机数据存储至该内存,该计数值是指定存至该内存的该零到多个字节随机数据的该可变数目。
6、如权利要求5所述的宏指令,其特征在于:该微处理器将该计数值存储于该内存地址,并将该零到多个字节随机数据存储至该计数值的相邻位置。
7、如权利要求4所述的宏指令,其特征在于:该微处理器也将一计数值加载该微处理器的一第二寄存器,该计数值是指定存至该内存的该零到多个字节随机数据的该可变数目。
8、如权利要求7所述的宏指令,其特征在于:该第二寄存器是该微处理器的一一般用途寄存器。
9、如权利要求8所述的宏指令,其特征在于:该一般用途寄存器为一EAX寄存器。
10、如权利要求1所述的宏指令,其特征在于:该宏指令是不可中断的。
11、一种微处理器,其特征在于,具有一连接的内存,该微处理器包括:
一存储组件,配置为累积一可变数目的随机数据字节;
一指令转译器,连接至该存储组件,以转译一用于指定该内存的一地址的指令;以及
一存储单元,连接至该存储组件,配置为响应该指令转译器转译该指令的动作,将该可变数目的随机数据字节从该存储组件存储至该内存地址。
12、如权利要求11所述的微处理器,其特征在于,还包括:
一计数器,连接至该存储组件,用以维持累积于该存储组件中的该可变数目字节的一计数值。
13、如权利要求12所述的微处理器,其特征在于:该存储单元更配置为将该计数器的该计数值及该存储组件的该可变量目的随机数据字节,存储至该内存地址。
14、如权利要求13所述的微处理器,其特征在于:该微处理器是连续地将该计数器的该计数值及该存储组件的该可变量目的随机数据字节,存储至该内存地址。
15、如权利要求14所述的微处理器,其特征在于:在该微处理器连续地将该计数器的该计数值及该存储组件的该可变量目的随机数据字节存储至该内存地址的动作中,包含该指令为一不可中断的指令。
16、如权利要求13所述的微处理器,其特征在于:该存储单元将该计数值存储于由该地址所指定的该内存中的一位置。
17、如权利要求16所述的微处理器,其特征在于:该存储单元将这些随机数据字节存储于该内存中的一位置,其相邻于存储该计数值的该位置。
18、如权利要求12所述的微处理器,其特征在于:该计数值可为零。
19、如权利要求12所述的微处理器,其特征在于:该微处理器在将该可变数目的随机数据字节从该存储组件存储至该内存地址之后,清除该计数器中的该计数。
20、如权利要求12所述的微处理器,其特征在于:该计数值是指定自前次执行该指令以来,该存储组件所累积的该可变数目字节的一计数值。
21、如权利要求12所述的微处理器,其特征在于,还包括:
一第二存储组件,配置为累积一第二可变数目的随机数据字节;以及
一第二计数器,连接至该第二存储组件,用以维持累积于该第二存储组件中的该第二可变数目字节的一计数值。
22、如权利要求12所述的微处理器,其特征在于:该存储单元更配置为响应该指令转译器转译该指令的动作,将该计数值从该计数器存储至该微处理器中一使用者可见寄存器。
23、如权利要求11所述的微处理器,其特征在于,还包括:
一随机位产生器,连接至该存储组件,用以产生随机位,以形成随机数据字节,累积于该存储组件中。
24、如权利要求23所述的微处理器,其特征在于,还包括:
一移位寄存器,连接于该随机位产生器与该存储组件之间,用以从该随机位产生器所产生的这些随机位形成这些随机数据字节。
25、如权利要求24所述的微处理器,其特征在于,还包括:
一总线接口单元,连接至该存储单元,作为该微处理器与一总线的接口,该总线连接该微处理器及该内存,其中该总线接口单元是配置为于该总线上执行一或多个总线作业,以将该可变数目的随机数据字节存储至该内存地址。
26、如权利要求25所述的微处理器,其特征在于,还包括:
一写入缓冲器,连接于该存储单元与该总线接口单元之间,用以缓冲该可变数目的随机数据字节,直到该总线接口单元执行该一或多个总线作业。
27、一种用以执行一多任务操作系统的微处理器,其特征在于,连接至一系统内存,该微处理器包括:
一随机数产生器,具有一缓冲器,用以累积零到N个随机数据字节,其中N大于1,以及一计数器,用以维持该缓冲器所累积的这些字节的一计数值;以及
一指令转译器,连接至该随机数产生器,用以转译一指令,以指示该微处理器,将该缓冲器所累积的这些字节存储至该系统内存。
28、如权利要求27所述的微处理器,其特征在于:该微处理器也将该计数值存储至该系统内存。
29、如权利要求27所述的方法,其特征在于:该微处理器也将该计数值存储至该微处理器的一使用者可见寄存器。
30、一种微处理器,其特征在于,具有多个使用者可见寄存器,包括:
一随机数产生器,用以产生随机数据字节;以及
一指令转译器,连接至该随机数产生器,用以转译该微处理器指令集的一指令,该指令包括一运算码及一目的操作数,用于指定一目的,以存储由该随机数产生器所产生的一数量的这些随机数据字节,其中该数量是指定于该微处理器内这些使用者可见寄存器其中之一。
31、如权利要求30所述的微处理器,其特征在于:这些使用者可见寄存器的该其中之一为这些使用者可见寄存器中预定的一个。
32、如权利要求30所述的微处理器,其特征在于:该指令更包括一前置码,用以表示该指令具有指定于这些使用者可见寄存器的该其中之一的该数目的这些随机数据字节。
33、一种用以执行一多任务操作系统的微处理器,其特征在于,包括:
一随机数产生器,具有一用以累积一可变数目的随机数据字节的缓冲器,以及一用以计数累积字节的该可变量目的计数器;
一指令转译器,连接至该随机数产生器,用以转译该微处理器指令集的一指令,该指令用以将该计数器的一计数值及该缓冲器的该累积字节,存储至连接于该微处理器的一内存;以及
一中断单元,连接至该指令转译器,配置为在该指令转译器转译该指令之后,禁止该微处理器的中断,并在该指令执行之后,使能中断。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/300,922 US7219112B2 (en) | 2001-11-20 | 2002-11-20 | Microprocessor with instruction translator for translating an instruction for storing random data bytes |
US10/300,922 | 2002-11-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1503121A true CN1503121A (zh) | 2004-06-09 |
CN1236380C CN1236380C (zh) | 2006-01-11 |
Family
ID=32229879
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB031581900A Expired - Lifetime CN1236380C (zh) | 2002-11-20 | 2003-09-16 | 具随机数产生器及用于存储随机数数据的指令的微处理器 |
Country Status (5)
Country | Link |
---|---|
US (7) | US7219112B2 (zh) |
EP (2) | EP1422611B1 (zh) |
CN (1) | CN1236380C (zh) |
DE (2) | DE60305129T2 (zh) |
TW (1) | TWI270004B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609237A (zh) * | 2011-01-06 | 2012-07-25 | 微软公司 | 可扩展的随机数生成 |
CN103885746A (zh) * | 2012-12-21 | 2014-06-25 | 株式会社牧田 | 随机数产生装置 |
CN104615407A (zh) * | 2015-01-19 | 2015-05-13 | 中国科学院信息工程研究所 | 一种基于闪存产生满熵随机数的方法和装置 |
CN109656514A (zh) * | 2017-10-11 | 2019-04-19 | 华邦电子股份有限公司 | 随机数产生系统及其随机数产生方法 |
CN111949317A (zh) * | 2019-05-17 | 2020-11-17 | 上海寒武纪信息科技有限公司 | 指令处理方法、装置及相关产品 |
CN117971320A (zh) * | 2024-03-28 | 2024-05-03 | 集创北方(珠海)科技有限公司 | 用于显示系统的微处理器及寄存器写入方法 |
Families Citing this family (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7149764B2 (en) * | 2002-11-21 | 2006-12-12 | Ip-First, Llc | Random number generator bit string filter |
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 |
US7139785B2 (en) * | 2003-02-11 | 2006-11-21 | Ip-First, Llc | Apparatus and method for reducing sequential bit correlation in a random number generator |
US7925891B2 (en) * | 2003-04-18 | 2011-04-12 | Via Technologies, Inc. | Apparatus and method for employing cryptographic functions to generate a message digest |
TWI243993B (en) * | 2003-08-29 | 2005-11-21 | Ali Corp | Protection method for DVD player/recorder against copy |
US7502468B2 (en) * | 2003-09-02 | 2009-03-10 | Ncipher Corporation Ltd. | Method and system for generating a cryptographically random number stream |
US7426666B2 (en) * | 2004-05-18 | 2008-09-16 | Lucent Technologies Inc. | Noisy channel emulator for high speed data |
EP1610462B1 (fr) * | 2004-06-24 | 2012-07-11 | St Microelectronics S.A. | Circuit et procédé de vérification de la constance de biais d'un flux de bits |
FR2872357A1 (fr) * | 2004-06-24 | 2005-12-30 | St Microelectronics Sa | Verification d'un flux de bits |
US7246213B2 (en) * | 2004-07-28 | 2007-07-17 | Hewlett-Packard Development Company, L.P. | Data address security device and method |
US8619981B2 (en) * | 2005-05-12 | 2013-12-31 | Jds Uniphase Corporation | Systems and methods for producing pseudo-random number distributions in devices having limited processing and storage capabilities |
JP2007156926A (ja) * | 2005-12-06 | 2007-06-21 | Matsushita Electric Ind Co Ltd | 割込制御装置 |
US7613757B1 (en) * | 2006-01-20 | 2009-11-03 | L-3 Communications, Corp. | System and method for parallel PN generation |
US8036379B2 (en) * | 2006-03-15 | 2011-10-11 | Microsoft Corporation | Cryptographic processing |
US7827390B2 (en) * | 2007-04-10 | 2010-11-02 | Via Technologies, Inc. | Microprocessor with private microcode RAM |
KR20090012528A (ko) * | 2007-07-30 | 2009-02-04 | 삼성전자주식회사 | 난수 발생 장치의 자발적인 온라인 테스트 장치 및 방법 |
US8676870B2 (en) * | 2007-09-18 | 2014-03-18 | Seagate Technology Llc | Active test and alteration of sample times for a ring based random number generator |
US20090083350A1 (en) * | 2007-09-24 | 2009-03-26 | Montvelishsky Michael B | Shift-add based random number generation |
JP2009098973A (ja) * | 2007-10-17 | 2009-05-07 | Toshiba Corp | 乱数生成回路搭載集積回路の検査方法および乱数生成回路搭載集積回路 |
US20090161246A1 (en) * | 2007-12-23 | 2009-06-25 | Hitachi Global Storage Technologies Netherlands, B.V. | Random Number Generation Using Hard Disk Drive Information |
US8019935B2 (en) * | 2007-12-23 | 2011-09-13 | Hitachi Global Storage Technologies Netherlands, B.V. | Random number generation for a host system using a hard disk drive |
US7996663B2 (en) * | 2007-12-27 | 2011-08-09 | Intel Corporation | Saving and restoring architectural state for processor cores |
US8069340B2 (en) * | 2008-02-08 | 2011-11-29 | Via Technologies, Inc. | Microprocessor with microarchitecture for efficiently executing read/modify/write memory operand instructions |
US8595277B2 (en) * | 2008-02-13 | 2013-11-26 | Infineon Technologies Ag | Hybrid random number generator |
US8255443B2 (en) | 2008-06-03 | 2012-08-28 | International Business Machines Corporation | Execution unit with inline pseudorandom number generator |
US8539009B2 (en) * | 2008-12-16 | 2013-09-17 | Lsi Corporation | Parallel true random number generator architecture |
US20100180104A1 (en) * | 2009-01-15 | 2010-07-15 | Via Technologies, Inc. | Apparatus and method for patching microcode in a microprocessor using private ram of the microprocessor |
US8286042B2 (en) * | 2009-02-20 | 2012-10-09 | Texas Instruments Incorporated | On-chip seed generation using boolean functions for LFSR re-seeding based logic BIST techniques for low cost field testability |
KR101625857B1 (ko) * | 2009-03-30 | 2016-05-31 | 시게이트 테크놀로지 엘엘씨 | 난수 생성 장치 및 그 방법 |
JP5273294B2 (ja) * | 2010-03-26 | 2013-08-28 | 富士通株式会社 | 乱数生成器、暗号化装置、及び認証装置 |
JP5542778B2 (ja) * | 2011-10-28 | 2014-07-09 | 京セラドキュメントソリューションズ株式会社 | 操作装置及び操作方法 |
TWI462009B (zh) * | 2011-11-25 | 2014-11-21 | Univ Kaohsiung Medical | 亂數產生方法 |
GB2502541A (en) | 2012-05-30 | 2013-12-04 | Ibm | Balancing consumption of random data using multiple sources with different levels of entropy |
US8995659B2 (en) * | 2012-06-11 | 2015-03-31 | Prem Sobel | Parameterized random data generator providing a sequence of bytes with uniform statistical distribution |
US9037624B1 (en) | 2012-08-03 | 2015-05-19 | Seagate Technology Llc | Using memory access times for random number generation |
US9372692B2 (en) | 2012-12-29 | 2016-06-21 | Intel Corporation | Methods, apparatus, instructions, and logic to provide permute controls with leading zero count functionality |
US9335969B2 (en) | 2013-02-06 | 2016-05-10 | International Business Machines Corporation | Method of entropy randomization on a parallel computer |
US9152380B2 (en) * | 2013-03-12 | 2015-10-06 | Qualcomm Incorporated | Interrupt driven hardware random number generator |
US8873750B2 (en) | 2013-03-14 | 2014-10-28 | International Business Machines Corporation | Instruction for performing a pseudorandom number generate operation |
US9201629B2 (en) | 2013-03-14 | 2015-12-01 | International Business Machines Corporation | Instruction for performing a pseudorandom number seed operation |
US12028333B2 (en) | 2013-05-14 | 2024-07-02 | Kara Partners Llc | Systems and methods for variable-length encoding and decoding for enhancing computer systems |
US10057250B2 (en) | 2013-05-14 | 2018-08-21 | Kara Partners Llc | Technologies for enhancing computer security |
US9454653B1 (en) | 2014-05-14 | 2016-09-27 | Brian Penny | Technologies for enhancing computer security |
US10594687B2 (en) | 2013-05-14 | 2020-03-17 | Kara Partners Llc | Technologies for enhancing computer security |
DE102014206992A1 (de) * | 2014-04-11 | 2015-10-15 | Siemens Aktiengesellschaft | Zufallszahlengenerator und Verfahren zum Erzeugen von Zufallszahlen |
US10140197B2 (en) * | 2015-10-23 | 2018-11-27 | Oberthur Technologies Of America Corp | Method performed by an electronic device capable of communicating with a reader with improved self-testing |
AT517983B1 (de) * | 2015-11-18 | 2018-11-15 | Siemens Ag Oesterreich | Schutz eines Computersystems vor Seitenkanalattacken |
US10467402B2 (en) * | 2016-08-23 | 2019-11-05 | Lenovo (Singapore) Pte. Ltd. | Systems and methods for authentication based on electrical characteristic information |
US10114572B2 (en) | 2016-12-06 | 2018-10-30 | Oracle International Corporation | Acceleration and dynamic allocation of random data bandwidth in multi-core processors |
WO2019005165A1 (en) | 2017-06-30 | 2019-01-03 | Intel Corporation | METHOD AND APPARATUS FOR VECTORIZING INDIRECT UPDATING BUCKLES |
US11709656B2 (en) | 2018-07-13 | 2023-07-25 | Ememory Technology Inc. | Short channel effect based random bit generator |
GB2580352B (en) * | 2019-01-03 | 2021-03-03 | Cisco Tech Inc | Random noise generation |
US20220109558A1 (en) * | 2021-12-15 | 2022-04-07 | Intel Corporation | Xmss management to address randomized hashing and federal information processing standards |
US20230205531A1 (en) * | 2021-12-23 | 2023-06-29 | Intel Corporation | Random data usage |
Family Cites Families (54)
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길이 의사 난수 계열 발생 장치 |
US5532896A (en) * | 1994-04-26 | 1996-07-02 | Coussens; Eugene | Distributed silicon controlled rectifiers for ESD protection |
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 |
TW486733B (en) * | 1999-12-28 | 2002-05-11 | Toshiba Corp | Dry etching method and manufacturing method of semiconductor device for realizing high selective etching |
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 |
EP1339002A1 (en) * | 2001-02-28 | 2003-08-27 | Sap Ag | Computer system for business applications with alert notification |
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 |
US6625972B1 (en) * | 2001-08-30 | 2003-09-30 | The Boeing Company | Thrust reverser sleeve lock |
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 |
US7149764B2 (en) * | 2002-11-21 | 2006-12-12 | Ip-First, Llc | Random number generator bit string filter |
US20060064448A1 (en) | 2001-11-20 | 2006-03-23 | Ip-First, Llc. | Continuous multi-buffering random number generator |
US6871206B2 (en) * | 2001-11-20 | 2005-03-22 | Ip-First, Llc | Continuous multi-buffering random number generator |
US7136991B2 (en) | 2001-11-20 | 2006-11-14 | Henry G Glenn | Microprocessor including random number generator supporting operating system-independent multitasking operation |
US6886023B2 (en) | 2002-01-14 | 2005-04-26 | Ip-First, Llc | Apparatus for generating random numbers |
US6707345B2 (en) | 2002-01-14 | 2004-03-16 | Ip-First, Llc | Oscillator frequency variation mechanism |
US6512405B1 (en) | 2002-01-14 | 2003-01-28 | Ip-First Llc | Oscillator bias variation mechanism |
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 |
JP2003296410A (ja) | 2002-04-05 | 2003-10-17 | Hitachi Ltd | 提供サービス評価方法およびシステム |
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,922 patent/US7219112B2/en active Active
-
2003
- 2003-02-11 US US10/365,601 patent/US7174355B2/en active Active
- 2003-02-11 US US10/365,599 patent/US7165084B2/en active Active
- 2003-02-21 EP EP03251060A patent/EP1422611B1/en not_active Expired - Lifetime
- 2003-02-21 DE DE60305129T patent/DE60305129T2/de not_active Expired - Lifetime
- 2003-04-14 DE DE60335927T patent/DE60335927D1/de not_active Expired - Lifetime
- 2003-04-14 EP EP09151472A patent/EP2068239B1/en not_active Expired - Lifetime
- 2003-04-18 TW TW092109008A patent/TWI270004B/zh not_active IP Right Cessation
- 2003-09-16 CN CNB031581900A patent/CN1236380C/zh not_active Expired - Lifetime
-
2006
- 2006-06-30 US US11/428,318 patent/US7334009B2/en not_active Expired - Lifetime
- 2006-12-16 US US11/611,865 patent/US8296345B2/en active Active
- 2006-12-25 US US11/615,994 patent/US7818358B2/en active Active
- 2006-12-26 US US11/616,039 patent/US7849120B2/en active Active
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609237A (zh) * | 2011-01-06 | 2012-07-25 | 微软公司 | 可扩展的随机数生成 |
CN102609237B (zh) * | 2011-01-06 | 2015-09-16 | 微软技术许可有限责任公司 | 可扩展的随机数生成 |
CN103885746A (zh) * | 2012-12-21 | 2014-06-25 | 株式会社牧田 | 随机数产生装置 |
CN104615407A (zh) * | 2015-01-19 | 2015-05-13 | 中国科学院信息工程研究所 | 一种基于闪存产生满熵随机数的方法和装置 |
CN104615407B (zh) * | 2015-01-19 | 2017-10-10 | 中国科学院信息工程研究所 | 一种基于闪存产生满熵随机数的方法和装置 |
CN109656514A (zh) * | 2017-10-11 | 2019-04-19 | 华邦电子股份有限公司 | 随机数产生系统及其随机数产生方法 |
CN109656514B (zh) * | 2017-10-11 | 2023-08-15 | 华邦电子股份有限公司 | 随机数产生系统及其随机数产生方法 |
CN111949317A (zh) * | 2019-05-17 | 2020-11-17 | 上海寒武纪信息科技有限公司 | 指令处理方法、装置及相关产品 |
CN117971320A (zh) * | 2024-03-28 | 2024-05-03 | 集创北方(珠海)科技有限公司 | 用于显示系统的微处理器及寄存器写入方法 |
Also Published As
Publication number | Publication date |
---|---|
US7334009B2 (en) | 2008-02-19 |
US20070078920A1 (en) | 2007-04-05 |
US7219112B2 (en) | 2007-05-15 |
US20060253688A1 (en) | 2006-11-09 |
US20070118581A1 (en) | 2007-05-24 |
US7818358B2 (en) | 2010-10-19 |
US7849120B2 (en) | 2010-12-07 |
US20030149863A1 (en) | 2003-08-07 |
US20040098429A1 (en) | 2004-05-20 |
DE60305129D1 (de) | 2006-06-14 |
EP1422611A2 (en) | 2004-05-26 |
US7165084B2 (en) | 2007-01-16 |
EP2068239B1 (en) | 2011-01-26 |
TW200409016A (en) | 2004-06-01 |
TWI270004B (en) | 2007-01-01 |
CN1236380C (zh) | 2006-01-11 |
US20040096060A1 (en) | 2004-05-20 |
DE60305129T2 (de) | 2006-12-07 |
EP2068239A1 (en) | 2009-06-10 |
EP1422611A3 (en) | 2004-10-27 |
US7174355B2 (en) | 2007-02-06 |
US8296345B2 (en) | 2012-10-23 |
DE60335927D1 (de) | 2011-03-10 |
EP1422611B1 (en) | 2006-05-10 |
US20070118582A1 (en) | 2007-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1236380C (zh) | 具随机数产生器及用于存储随机数数据的指令的微处理器 | |
CN1308811C (zh) | 具连续多重缓冲功能的随机数产生器及产生随机数据方法 | |
CN1288550C (zh) | 随机数产生器的位串过滤装置与方法 | |
CN1261871C (zh) | 具有支持多任务运算的随机数产生器的微处理器及方法 | |
CN1514345A (zh) | 用以减低在随机数产生器中连续位相关性的装置与方法 | |
CN1287270C (zh) | 重启动翻译的指令 | |
CN1244051C (zh) | 对于处理数据的装置和方法 | |
CN1280714C (zh) | 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器 | |
CN100338568C (zh) | 开发片上系统用的开发环境的生成方法 | |
CN1202470C (zh) | 处理器 | |
CN1484787A (zh) | 处理器流水线中的硬件指令翻译 | |
CN1310131C (zh) | 随机数产生器及产生方法及具有随机位产生器的微处理器 | |
CN1688966A (zh) | 包括对准或者广播指令的多媒体协处理器控制机制 | |
CN1497435A (zh) | 处理器 | |
CN1860441A (zh) | 用于可重新配置环境中的高效高性能数据操作元件 | |
CN1378665A (zh) | 编程概念 | |
CN1205538C (zh) | 用于多精度整数算术运算的装置 | |
CN1991798A (zh) | 半导体存储装置 | |
CN1469241A (zh) | 处理器、程序变换装置和变换方法以及计算机程序 | |
CN1298520A (zh) | 按照层结构具有二维或多维可编程序的单元结构(FPGAs、DPGAs等)的数据流处理器和模块的高速缓存配置数据方法 | |
CN1632877A (zh) | 可变延滞时间堆栈快取存储器及提供资料的方法 | |
CN1641607A (zh) | 页表中维护性能监测结构用于监测程序性能的方法和设备 | |
CN101034381A (zh) | 多主机系统和数据传送系统 | |
CN101040306A (zh) | 伪随机数生成装置 | |
CN1609802A (zh) | 用于管理许可的编程接口 |
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: 20060111 |
|
CX01 | Expiry of patent term |