中断驱动硬件随机数产生器的制造方法_2

文档序号:9308557阅读:来源:国知局
214的指令集可包含允许编程者直接存取随机数236的指令,和/或所述指令集可经扩展以使得应用程序222能够直接存取随机数236。通过编程语言指令对随机数236直接存取具有应用程序222可能在FIFO装置206和/或寄存器/缓冲器208耗尽时被死锁的风险,并且处理器被迫等待直到已经产生随机数236为止。
[0025]常规系统通常以物理逻辑实施RNG电路102、202及快速调节电路104、204,以确保随机数处理系统112、212以符合随机数136、236的要求的足够速度来操作。包含在硬件中实施的调节电路104、204会产生复杂且占用集成电路的较大物理面积的随机数处理系统112或212。此外,随机数处理系统112、212可能消耗大量功率且会减少移动装置的电池寿命O
[0026]本发明的某些实施例修改随机数产生系统112、212以实现高吞吐量、低时延的高熵随机数136、236的生成,同时在IC上占据较小面积且与常规系统相比消耗较少功率。在一些实施例中,低熵数130、230的调节至少部分地通过处理系统110、210的处理器114、214执行。
[0027]图3是说明克服常规随机数产生系统中存在的许多问题的随机数产生系统300的框示意图。例如,随机数产生系统300通常在IC上占用较小的占据面积且功率消耗可控制,因为通常不是以连续方式进行调节。随机数产生系统300可实施于单个IC装置中,或可使用多个单独的装置实施。随机数产生系统300可包括处理系统310以及暂时性和非暂时性存储装置304、306及308的某种组合,或与前述组件交互。存储器308可包括由处理系统310用来存储用于控制处理系统310的操作的数据及代码的存储装置。存储器308可另外用于存储低熵随机数、高熵随机数及其中间者。
[0028]在某些实施例中,RNG 302产生可包含伪随机数的低熵数322。RNG 302可生成不完全、低熵随机数322,其不适合用于许多应用程序,包含某些通信系统、安全、游戏和/或模拟应用程序。伪随机数322可使用通常以不定期基础从计算系统寄存器捕获的“微观”观察产生。伪随机数322可使用在高频数据总线上观察的值、所测量的接收器载波强度、系统实时时钟的低数位,或一些其它统计上随机的“噪声”信号产生,所述信号从将所测量物理现象转化成数值的换能器获得。通过反复地对随机变化的信号进行取样能够获得一连串伪随机数322。然而,伪随机数322通常反映可归因于用于产生所述数字的机构的一些偏差。由RNG 302产生的伪随机数322可收集于缓冲器304中,例如寄存器、FIFO、后进先出(LIFO)电路、软件栈、环形缓冲器、或其它形式的存储装置。缓冲器304准许RNG 302独立于处理系统310操作。例如,自由运行的RNG 302可在即使缓冲器304为满的情况下继续将随机数322时钟调整到缓冲器304中,因为由RNG 302产生的多余随机数322可被简单地舍弃。在一个实例中,缓冲器304可在缓冲器304的入口点处通过不存储过剩的随机数而舍弃多余随机数。在另一实例中,包括FIFO或环形缓冲器的缓冲器304可舍弃所存储的最旧的随机数以便在缓冲器304中存储最近的随机数。
[0029]缓冲器304可通过中断处理程序314服务。中断处理程序314可实施于处理系统310的处理器318中并且可通过使得处理器318暂时中止当前处理活动并执行中断处理程序314而响应中断信号328。中断处理程序314可经配置以确定中断信号328的源并且引发或启动例如调节模块316等处理模块的执行。中断信号328可由监控缓冲器304及306的状态的逻辑312产生。一或多个信号324可指示缓冲器304的占用水平。在一个实例中,一或多个信号324可基于一或多个预定或预配置阈值水平指示存储于缓冲器304中的随机数的数目。中断逻辑312也可监控指示缓冲器306的占用水平的一或多个信号326。缓冲器306可包括寄存器、FIF0、LIF0电路、软件栈、环形缓冲器中的一或多者,或可经调适或经配置以存储高熵随机数的其它形式的存储装置。缓冲器306可至少部分地在处理器可读存储装置308中实施。
[0030]中断处理程序314可引发中断服务例程,这可使得执行调节模块316。调节模块316可从缓冲器304选取一或多个低熵随机数,并且可使用散列函数、分块加密、或用以生成高熵随机数的一些其它合适的密码算法来调节所选取的低熵数。高熵随机数接着可存储于缓冲器306中。缓冲器306可由处理器通过总线320或通过另一总线或I/O信道330直接存取。在图3中所描绘的实例中,处理系统310可以是高熵随机数的用户并且可经配置以写入及读取缓冲器306。在一些实施例中,处理系统310可包括共处理器或其它处理器318,其用以调节随机数并将高熵数存储于缓冲器306中,但不直接存取或使用存储于缓冲器306中的高熵随机数。通常,处理系统310是一个设备的组件,其执行使用高熵数的所述设备的一或多个主函数。
[0031]在操作中,处理器318可在缓冲器306的占用低于预定义阈值最小值时被中断。阈值最小值可基于对高熵数的预期的需求来确定。缓冲器306占用的最小阈值的选定值可足够低以限制中断328的频率,并且可足够高以确保缓冲器能够甚至在突发性条件下按需供应高熵数。缓冲器306的大小可基于应用程序要求来选择。
[0032]在一些实施例中,处理器318可在缓冲器304保持足够数目的低熵随机数以产生预定义或预配置最小数目的高熵随机数时中断。在一个实例中,可设定最小数目的高熵随机数以准许在能够产生至少一个高熵随机数时产生中断328。
[0033]调节模块316可包括将由处理器318执行的一或多个算法。在一些实施例中,在中断服务例程内执行调节,由此在已经产生所需数目的高熵随机数之后放弃处理器318的控制,或断言更高优先级的中断。在一些实施例中,由中断处理程序314引发的中断服务例程设置旗标、旗语或其它指示,其使得暂停的或非作用的应用程序在处理器318退出中断服务例程时被执行。在一些实施例中,由中断处理程序314引发的中断服务例程使得操作系统的任务或线程准备就绪,由此在所述任务或线程内执行调节模块316。当准备就绪时,所述任务或线程可以通过操作系统或应用程序控制环来排定。
[0034]调节模块316可包括软件指令,其用以调节低熵随机数并且由此生成高熵随机数。在一些实施例中,调节模块316可包括一或多个硬件电路以实现或促进调节模块316的某些函数和/或由调节模块316使用的算法。调节模块316可在将结果写回FIFO或缓冲器306内的其它存储装置之前计算关于从缓冲器304读取的低熵随机数或伪随机数的所需密码函数。因此,能够消除在常规系统中采用的大量的专用硬件,从而产生裸片面积和功率消耗的节省。
[0035]图4说明采用根据本发明的某些方面的随机数处理系统的设备的实例400。设备可包括处理系统410,其包含处理器418及存储装置412。存储于存储装置412上的指令及数据可通过处理器418可执行。处理器418可通过操作系统420控制,所述操作系统可提供用于应用程序422的平台。另外的模块,例如调节模块416,可在操作系统420的控制之外执行并且可例如响应于由处理器418接收的一或多个中断428来执行。在一些实施例中,操作系统420可对调节模块416的至少一些功能实施控制。处理器418可包括响应于从随机数产生器电路430接收的中断428的处理程序410。随机数产生器电路430可包括将低熵随机数提供到第一缓冲器404的RNG 402、中断产生逻辑408、第二缓冲器406及总线接口 434。在实例中,第一缓冲器404及第二缓冲器406可实施为FIFO装置404及406。FIFO装置406存储由通过处理器418执行的调节模块416产生的高熵随机数。调节模块416可使得处理器418将经调节随机数写入到FIFO装置406,并且一或多个应用程序422和/或操作系统可使得处理器418读取来自FIFO装置406的高熵数。因此,根据用掉由调节模块416生成的高熵数的应用程序异步执行随机数调节。总线接口 432及434可包括逻辑及缓冲器,其使得FIFO装置404及406能够与总线414或处理系统410的其它1/0信道交互。总线414可使处理器418与存储器412、随机数产生器电路430以及其它外围设备及装置耦入口 ο
[0036]根据本发明的一个方面,应用程序422可包含一或多个指令,所述一或多个指令使得处理器418直接存取存储于缓冲器406中的高熵随机数。所述一或多个指令可属于经定义用于处理系统410和/或处理器418的指令集。所述指令集可以用来编写处理系统410的程序并且可基于包括数字码的机器语言,所述数字码使得处理器执行一组定义的动作中的一者。动作可包含数据移动、寄存器调换、存储器读取/写入等等。
[0037]在某些实施例中,缓冲器406中的随机数可能独立于FIFO装置404的占用而耗尽,其可自动地用由RNG 402产生的伪随机数填充。FIFO装置406可包括一或多个寄存器、FIFO装置及其它循序或随机存取存储装置。
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1