亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

具隨機(jī)數(shù)產(chǎn)生器及用于存儲(chǔ)隨機(jī)數(shù)數(shù)據(jù)的指令的微處理器的制作方法

文檔序號(hào):6379764閱讀:231來(lái)源:國(guó)知局
專利名稱:具隨機(jī)數(shù)產(chǎn)生器及用于存儲(chǔ)隨機(jī)數(shù)數(shù)據(jù)的指令的微處理器的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及隨機(jī)數(shù)產(chǎn)生的領(lǐng)域,尤其涉及微處理器內(nèi)的隨機(jī)數(shù)產(chǎn)生器,即具有隨機(jī)數(shù)產(chǎn)生器及用于存儲(chǔ)隨機(jī)數(shù)數(shù)據(jù)的指令的微處理器。
背景技術(shù)
就歷史來(lái)看,許多計(jì)算機(jī)應(yīng)用軟件需要提供隨機(jī)數(shù)。例如,物理現(xiàn)象的蒙地卡羅模擬,如大規(guī)模的天氣模擬,就需要提供隨機(jī)數(shù),以模擬物理現(xiàn)象。需要使用隨機(jī)數(shù)的其它例子為娛樂(lè)游戲及在線娛樂(lè)游戲,以模擬洗牌,擲骰子等;彩券號(hào)碼的產(chǎn)生;統(tǒng)計(jì)分析資料的產(chǎn)生,如心理學(xué)的測(cè)驗(yàn);以及計(jì)算機(jī)游戲。
在這些形式的應(yīng)用中,所需的隨機(jī)度,以及對(duì)產(chǎn)生隨機(jī)數(shù)的效能要求是不同的。許多應(yīng)用軟件,如計(jì)算機(jī)游戲,對(duì)于隨機(jī)度的要求是不高的。心理學(xué)測(cè)驗(yàn)上的應(yīng)用,對(duì)隨機(jī)度有著更嚴(yán)格的要求,但效能需求則相當(dāng)?shù)?。然而,大?guī)模的運(yùn)用蒙地卡羅的模擬會(huì)有非常高的效能需求,且需要良好的隨機(jī)數(shù)統(tǒng)計(jì)特性,雖然不可預(yù)測(cè)性并非特別重要。其它的應(yīng)用,如在線娛樂(lè)游戲,則對(duì)于隨機(jī)度及不可預(yù)測(cè)性都有非常嚴(yán)格的要求。
雖然上述這些應(yīng)用仍然是重要的,但是在計(jì)算機(jī)安全領(lǐng)域,則對(duì)高品質(zhì)隨機(jī)數(shù)有最大的需求。最近,個(gè)人計(jì)算機(jī)網(wǎng)絡(luò)及互聯(lián)網(wǎng)交易的爆炸性成長(zhǎng),對(duì)于各種安全機(jī)制的需求,已明顯地增加。
對(duì)所有計(jì)算機(jī)安全的主要構(gòu)成要素而言,高品質(zhì)的隨機(jī)數(shù)都是必要的。這些要素包含機(jī)密性、身份確認(rèn)以及數(shù)據(jù)完整性。
數(shù)據(jù)加密為提供機(jī)密性的主要機(jī)制。有許多種不同的加密算法,如對(duì)稱式加密、公有密鑰及一次性密碼本,但是這些算法都具有一關(guān)鍵特性,即加密/解密密鑰不能被簡(jiǎn)單地預(yù)測(cè)出來(lái)。一個(gè)加密系統(tǒng)的密碼強(qiáng)度基本上即是其所用密鑰的強(qiáng)度,即預(yù)測(cè)、猜想或計(jì)算解密密鑰的難度多高。最好的密鑰為夠長(zhǎng)的真隨機(jī)數(shù),而在所有嚴(yán)格要求安全的應(yīng)用中,隨機(jī)數(shù)產(chǎn)生器為產(chǎn)生密碼密鑰的基礎(chǔ)。
許多對(duì)密碼算法成功的攻擊,已非專注于加密算法,而是專注于產(chǎn)生隨機(jī)數(shù)的來(lái)源。一個(gè)為人熟知的例子是,網(wǎng)景的安全套接層(Secure SocketsLayer,SSL)的早期版本,會(huì)從系統(tǒng)時(shí)脈與程序ID表搜集數(shù)據(jù),以產(chǎn)生軟件偽隨機(jī)數(shù)產(chǎn)生器的起始值。所產(chǎn)生的隨機(jī)數(shù)用來(lái)產(chǎn)生一對(duì)稱密鑰,以加密對(duì)話數(shù)據(jù)。有二個(gè)研究生想出了可準(zhǔn)確猜測(cè)隨機(jī)數(shù)的程序,在一分鐘內(nèi),就猜出對(duì)話密鑰,破壞這個(gè)機(jī)制。
與解密密鑰類似,用以確認(rèn)存取信息的使用者身份的密碼,其強(qiáng)度實(shí)際上就是預(yù)測(cè)或猜測(cè)密碼的難度有多高。最好的密碼為夠長(zhǎng)的真隨機(jī)數(shù)。此外,在有使用挑戰(zhàn)協(xié)議(challenge protocol)的驗(yàn)證協(xié)議(authentication protocol)中,關(guān)鍵因素就是使挑戰(zhàn)無(wú)法由進(jìn)行確認(rèn)的一方加以預(yù)測(cè)。而隨機(jī)數(shù)則是用來(lái)產(chǎn)生確認(rèn)身份的挑戰(zhàn)。
數(shù)字簽名及信息摘要是用來(lái)確保網(wǎng)絡(luò)上通訊的完整性。隨機(jī)數(shù)是用于大部分的數(shù)字簽名算法,以使惡意的一方難于偽造簽名。隨機(jī)數(shù)的品質(zhì)會(huì)直接影響到簽名的效力??偠灾?,良好的安全需要良好的隨機(jī)數(shù)。
數(shù)值本身不是隨機(jī)的。隨機(jī)度的定義必須不僅包括所產(chǎn)生的數(shù)值的特征,而且也包括用以產(chǎn)生數(shù)值的產(chǎn)生器的特征。運(yùn)用軟件的隨機(jī)數(shù)產(chǎn)生器是常見(jiàn)的,并且對(duì)于許多應(yīng)用而言已足夠。然而,對(duì)某些應(yīng)用來(lái)說(shuō),軟件產(chǎn)生器是不夠的。這些應(yīng)用需要硬件產(chǎn)生器,其可產(chǎn)生與由隨機(jī)物理程序所產(chǎn)生數(shù)值的特征相同的數(shù)值。此處,重要的特征是,其產(chǎn)生數(shù)值所具有的統(tǒng)計(jì)分布的無(wú)偏差程度,以及不可預(yù)測(cè)與不可重制的程度。
具有無(wú)偏差的統(tǒng)計(jì)分布,是意謂所有的值具有相等的發(fā)生機(jī)率,無(wú)論樣本大小為何。幾乎所有的應(yīng)用都要求其隨機(jī)數(shù)具有良好的統(tǒng)計(jì)分布,而高品質(zhì)的軟件隨機(jī)數(shù)產(chǎn)生器通常能滿足此需求。只滿足無(wú)偏差統(tǒng)計(jì)分布的需求的產(chǎn)生器稱為偽隨機(jī)數(shù)產(chǎn)生器。
不可預(yù)測(cè)性是指在一位序列中,正確猜測(cè)下個(gè)位的機(jī)率應(yīng)剛好為一半,無(wú)論先前所產(chǎn)生的位值為何。某些應(yīng)用不需要此種不可預(yù)測(cè)性的特征;然而,對(duì)安全應(yīng)用所使用的隨機(jī)數(shù)而言,則是要緊的。若使用軟件產(chǎn)生器,則要有效滿足不可預(yù)測(cè)性的需求,必須隱藏軟件算法及其初始值。從安全的觀點(diǎn)而言,隱藏算法的做法是非常不保險(xiǎn)的。對(duì)于使用可預(yù)測(cè)的隱藏算法隨機(jī)數(shù)產(chǎn)生器的應(yīng)用軟件而言,有不少安全上遭致破壞的例子是為人所熟知的。同時(shí)滿足前二種需求的產(chǎn)生器稱為密碼安全偽隨機(jī)數(shù)產(chǎn)生器。
產(chǎn)生器若為不可重制的,則二個(gè)具有相同起始條件的相同產(chǎn)生器,必須產(chǎn)生不同的輸出。軟件算法不能滿足此需求。只有基于隨機(jī)物理程序的硬件式產(chǎn)生器,能產(chǎn)生滿足安全所需的嚴(yán)格不可重制性的數(shù)值。滿足所有三個(gè)需求的產(chǎn)生器稱為真隨機(jī)數(shù)產(chǎn)生器。
軟件算法是用來(lái)產(chǎn)生計(jì)算機(jī)應(yīng)用所需的大部分隨機(jī)數(shù)。這些稱為偽隨機(jī)數(shù)產(chǎn)生器,這是因?yàn)檫@些產(chǎn)生器不能滿足不可預(yù)測(cè)性及不可重制性的需求。再者,有些也不能滿足無(wú)偏差統(tǒng)計(jì)分布的需求。
通常,軟件產(chǎn)生器以一初始值或籽數(shù)(seed)開(kāi)始工作,該初始值有時(shí)是由使用者所提供。產(chǎn)生器以該初始值執(zhí)行算術(shù)運(yùn)算,以產(chǎn)生第一隨機(jī)結(jié)果,其作為產(chǎn)生第二結(jié)果的籽數(shù),依此類推。軟件產(chǎn)生器必然是循環(huán)式的,最終其會(huì)重復(fù)相同的輸出序列。猜測(cè)籽數(shù)就等于能預(yù)測(cè)整個(gè)所產(chǎn)生的數(shù)值序列。其不可重制性只與算法及初始籽數(shù)的機(jī)密程度一樣,而這可能是安全上的應(yīng)用并不想要的特性。再者,軟件算法是可重制的,因?yàn)橐韵嗤斎腴_(kāi)始,其會(huì)產(chǎn)生相同的結(jié)果。最后,軟件算法不必然會(huì)產(chǎn)生輸出數(shù)據(jù)大小的范圍內(nèi)的每個(gè)可能的值,這可能無(wú)法完全滿足無(wú)偏差統(tǒng)計(jì)分布的需求。
有一種隨機(jī)數(shù)產(chǎn)生器,是軟件產(chǎn)生器與純硬件產(chǎn)生器混合而成,稱為熵產(chǎn)生器(entropy generator)。熵為不可預(yù)測(cè)性的另一種說(shuō)法。產(chǎn)生器所產(chǎn)生的數(shù)值愈不可預(yù)測(cè),產(chǎn)生器所具有的熵就愈多。熵產(chǎn)生器會(huì)將軟件算法應(yīng)用于由物理現(xiàn)象所產(chǎn)生的籽數(shù)。例如,常用的PC加密程序會(huì)記錄幾秒鐘的鼠標(biāo)移動(dòng)及鍵盤(pán)敲擊的特性,以獲得其所需的籽數(shù)。這些動(dòng)作不見(jiàn)得會(huì)產(chǎn)生不理想的熵?cái)?shù),且通常需要使用者某種程度的涉入。對(duì)多數(shù)的熵產(chǎn)生器而言,最不理想的特征就是要花很多時(shí)間,才能達(dá)到足夠的熵。
從前文可清楚得知,某些應(yīng)用,包括安全上的應(yīng)用,需要由隨機(jī)物理程序才能產(chǎn)生的隨機(jī)數(shù),如橫跨半導(dǎo)體二極管或電阻器的熱噪聲、自發(fā)振蕩器的頻率不穩(wěn)定度或是在特定的時(shí)間周期內(nèi),半導(dǎo)體電容器的充電量。這幾種隨機(jī)數(shù)源已用于一些商業(yè)用途的加入式(add-in)隨機(jī)數(shù)產(chǎn)生器裝置,如PCI卡及串行總線裝置。這些裝置在商業(yè)上的使用并不廣泛,明顯是因?yàn)樗鼈儾皇窍喈?dāng)慢就是相當(dāng)貴。
最近所發(fā)展的一種成本低廉的解決方案,是英特爾固件集線器(IntelFirmware Hub)82802中的硬件隨機(jī)數(shù)產(chǎn)生器,其使用熱噪聲來(lái)產(chǎn)生隨機(jī)數(shù)。固件集線器為計(jì)算機(jī)系統(tǒng)的芯片組中的芯片,包括存儲(chǔ)系統(tǒng)固件的閃存,如系統(tǒng)BIOS。當(dāng)系統(tǒng)處理器需要一字節(jié)的隨機(jī)數(shù)據(jù)時(shí),它會(huì)去查詢固件集線器的狀態(tài)寄存器中的一個(gè)位。固件集線器在可取得一字節(jié)的隨機(jī)數(shù)據(jù)時(shí),會(huì)設(shè)定此位。一旦此位已設(shè)定,處理器即從固件集線器的另一寄存器中讀取一個(gè)隨機(jī)數(shù)據(jù)字節(jié)。若一應(yīng)用程序需要大量的隨機(jī)數(shù)據(jù)字節(jié),則它會(huì)持續(xù)查詢此位,直到另一個(gè)字節(jié)已準(zhǔn)備好,然后再進(jìn)行讀取。此程序會(huì)重復(fù)這個(gè)程序,直到其已累積足夠數(shù)量的隨機(jī)數(shù)據(jù)字節(jié)。
一種可提供便宜、高效能的硬件隨機(jī)數(shù)產(chǎn)生器的解決方案,是將其并入微處理器內(nèi)。隨機(jī)數(shù)產(chǎn)生器可利用前述的隨機(jī)物理程序產(chǎn)生隨機(jī)數(shù),并且成本相當(dāng)?shù)土驗(yàn)槠淇刹⑷爰扔械陌雽?dǎo)體晶體中。這樣的微處理器需要一種方式,來(lái)提供隨機(jī)數(shù)據(jù)字節(jié)給應(yīng)用程序。并且,我們希望這種提供隨機(jī)數(shù)據(jù)字節(jié)的方式對(duì)應(yīng)用程序而言是有效率的。再者,也希望這種方式能在多任務(wù)環(huán)境中正確運(yùn)行,使計(jì)算機(jī)系統(tǒng)所執(zhí)行的多個(gè)應(yīng)用程序可共享隨機(jī)數(shù)產(chǎn)生器的功能。

發(fā)明內(nèi)容
本發(fā)明提出一種微處理器,其包括隨機(jī)數(shù)產(chǎn)生器,以及指令,用以將產(chǎn)生器所產(chǎn)生的隨機(jī)數(shù)存儲(chǔ)至指令所指定的目的地。因此,為了達(dá)到上述的目的,本發(fā)明的一項(xiàng)特征是,提出一種可由微處理器執(zhí)行的宏指令(macroinstruction),用以將隨機(jī)數(shù)從微處理器存儲(chǔ)至連接于微處理器的內(nèi)存。此指令包括一運(yùn)算碼以及用于存儲(chǔ)第一操作數(shù)的第一字段。第一操作數(shù)指定內(nèi)存中的地址,以存儲(chǔ)由微處理器內(nèi)的隨機(jī)數(shù)產(chǎn)生器所產(chǎn)生的零到多個(gè)字節(jié)的隨機(jī)數(shù)據(jù)。此宏指令也包括用以存儲(chǔ)第二操作數(shù)的第二字段。第二操作數(shù)指定微處理器內(nèi)的寄存器。此寄存器是用以存儲(chǔ)內(nèi)存所存的零到多個(gè)字節(jié)的隨機(jī)數(shù)據(jù)。
如上所述的宏指令,其中,該運(yùn)算碼具有一預(yù)定值。
如上所述的宏指令,其中,該預(yù)定值為0x0F 0xA7。
如上所述的宏指令,其中,該微處理器存儲(chǔ)未由該宏指令所指定的一可變量目的該零到多個(gè)字節(jié)隨機(jī)數(shù)據(jù)。
如上所述的宏指令,其中,該微處理器也將一計(jì)數(shù)值及該零到多個(gè)字節(jié)隨機(jī)數(shù)據(jù)存儲(chǔ)至該內(nèi)存,該計(jì)數(shù)值是指定存至該內(nèi)存的該零到多個(gè)字節(jié)隨機(jī)數(shù)據(jù)的該可變數(shù)目。
如上所述的宏指令,其中,該微處理器將該計(jì)數(shù)值存儲(chǔ)于該內(nèi)存地址,并將該零到多個(gè)字節(jié)隨機(jī)數(shù)據(jù)存儲(chǔ)至該計(jì)數(shù)值的相鄰位置。
如上所述的宏指令,其中,該微處理器也將一計(jì)數(shù)值加載該微處理器的一第二寄存器,該計(jì)數(shù)值是指定存至該內(nèi)存的該零到多個(gè)字節(jié)隨機(jī)數(shù)據(jù)的該可變數(shù)目。
如上所述的宏指令,其中,該第二寄存器是該微處理器的一一般用途寄存器。
如上所述的宏指令,其中,該一般用途寄存器為一EAX寄存器。
如上所述的宏指令,其中,該宏指令是不可中斷的。
本發(fā)明的另一項(xiàng)特征是,提出一種微處理器,其具有一連接的內(nèi)存。此微處理器包括存儲(chǔ)組件,用以累積可變數(shù)目的隨機(jī)數(shù)據(jù)字節(jié)。此微處理器也包括指令轉(zhuǎn)譯器,連接至存儲(chǔ)組件,以轉(zhuǎn)譯用于指定內(nèi)存地址的指令。此微處理器也包括存儲(chǔ)單元,連接至存儲(chǔ)組件,其響應(yīng)指令轉(zhuǎn)譯器轉(zhuǎn)譯指令的動(dòng)作,將可變數(shù)目的隨機(jī)數(shù)據(jù)字節(jié)從存儲(chǔ)組件存儲(chǔ)至內(nèi)存地址。
如上所述的微處理器,其中,還包括一計(jì)數(shù)器,連接至該存儲(chǔ)組件,用以維持累積于該存儲(chǔ)組件中的該可變數(shù)目字節(jié)的一計(jì)數(shù)值。
如上所述的微處理器,其中,該存儲(chǔ)單元更配置為將該計(jì)數(shù)器的該計(jì)數(shù)值及該存儲(chǔ)組件的該可變量目的隨機(jī)數(shù)據(jù)字節(jié),存儲(chǔ)至該內(nèi)存地址。
如上所述的微處理器,其中,該微處理器是連續(xù)地將該計(jì)數(shù)器的該計(jì)數(shù)值及該存儲(chǔ)組件的該可變量目的隨機(jī)數(shù)據(jù)字節(jié),存儲(chǔ)至該內(nèi)存地址。
如上所述的微處理器,其中,在該微處理器連續(xù)地將該計(jì)數(shù)器的該計(jì)數(shù)值及該存儲(chǔ)組件的該可變量目的隨機(jī)數(shù)據(jù)字節(jié)存儲(chǔ)至該內(nèi)存地址的動(dòng)作中,包含該指令為一不可中斷的指令。
如上所述的微處理器,其中,該存儲(chǔ)單元將該計(jì)數(shù)值存儲(chǔ)于由該地址所指定的該內(nèi)存中的一位置。
如上所述的微處理器,其中,該存儲(chǔ)單元將這些隨機(jī)數(shù)據(jù)字節(jié)存儲(chǔ)于該內(nèi)存中的一位置,其相鄰于存儲(chǔ)該計(jì)數(shù)值的該位置。
如上所述的微處理器,其中,該計(jì)數(shù)值可為零。
如上所述的微處理器,其中,該微處理器在將該可變數(shù)目的隨機(jī)數(shù)據(jù)字節(jié)從該存儲(chǔ)組件存儲(chǔ)至該內(nèi)存地址之后,清除該計(jì)數(shù)器中的該計(jì)數(shù)。
如上所述的微處理器,其中,該計(jì)數(shù)值是指定自前次執(zhí)行該指令以來(lái),該存儲(chǔ)組件所累積的該可變數(shù)目字節(jié)的一計(jì)數(shù)值。
如上所述的微處理器,其中,還包括一第二存儲(chǔ)組件,配置為累積一第二可變數(shù)目的隨機(jī)數(shù)據(jù)字節(jié);以及一第二計(jì)數(shù)器,連接至該第二存儲(chǔ)組件,用以維持累積于該第二存儲(chǔ)組件中的該第二可變數(shù)目字節(jié)的一計(jì)數(shù)值。
如上所述的微處理器,其中,該存儲(chǔ)單元更配置為響應(yīng)該指令轉(zhuǎn)譯器轉(zhuǎn)譯該指令的動(dòng)作,將該計(jì)數(shù)值從該計(jì)數(shù)器存儲(chǔ)至該微處理器中一使用者可見(jiàn)寄存器。
如上所述的微處理器,其中,還包括一隨機(jī)位產(chǎn)生器,連接至該存儲(chǔ)組件,用以產(chǎn)生隨機(jī)位,以形成隨機(jī)數(shù)據(jù)字節(jié),累積于該存儲(chǔ)組件中。
如上所述的微處理器,其中,還包括一移位寄存器,連接于該隨機(jī)位產(chǎn)生器與該存儲(chǔ)組件之間,用以從該隨機(jī)位產(chǎn)生器所產(chǎn)生的這些隨機(jī)位形成這些隨機(jī)數(shù)據(jù)字節(jié)。
如上所述的微處理器,其中,還包括一總線接口單元,連接至該存儲(chǔ)單元,作為該微處理器與一總線的接口,該總線連接該微處理器及該內(nèi)存,其中該總線接口單元是配置為于該總線上執(zhí)行一或多個(gè)總線作業(yè),以將該可變數(shù)目的隨機(jī)數(shù)據(jù)字節(jié)存儲(chǔ)至該內(nèi)存地址。
如上所述的微處理器,其中,還包括一寫(xiě)入緩沖器,連接于該存儲(chǔ)單元與該總線接口單元之間,用以緩沖該可變數(shù)目的隨機(jī)數(shù)據(jù)字節(jié),直到該總線接口單元執(zhí)行該一或多個(gè)總線作業(yè)。
本發(fā)明的另一項(xiàng)特征是,提出一種用以執(zhí)行多任務(wù)操作系統(tǒng)的微處理器。此微處理器是連接至系統(tǒng)內(nèi)存。此微處理器包括隨機(jī)數(shù)產(chǎn)生器,其具有可累積零到N個(gè)隨機(jī)數(shù)據(jù)字節(jié)的緩沖器,其中N大于1。此微處理器也包括維持緩沖器所累積字節(jié)的計(jì)數(shù)值的計(jì)數(shù)器。此微處理器也包括指令轉(zhuǎn)譯器,連接至隨機(jī)數(shù)產(chǎn)生器,用以轉(zhuǎn)譯一指令,以指示此微處理器將緩沖器所累積的字節(jié)存儲(chǔ)至系統(tǒng)內(nèi)存。
如上所述的微處理器,其中,該微處理器也將該計(jì)數(shù)值存儲(chǔ)至該系統(tǒng)內(nèi)存。
如上所述的微處理器,其中,該微處理器也將該計(jì)數(shù)值存儲(chǔ)至該微處理器的一使用者可見(jiàn)寄存器。
本發(fā)明的另一項(xiàng)特征是,提出一種用以執(zhí)行多任務(wù)操作系統(tǒng)的微處理器。此微處理器具有多個(gè)使用者可見(jiàn)寄存器。此微處理器包括隨機(jī)數(shù)產(chǎn)生器,其具有可累積零到N個(gè)隨機(jī)數(shù)據(jù)字節(jié)的緩沖器,其中N大于1。此微處理器也包括維持緩沖器所累積字節(jié)的計(jì)數(shù)值的計(jì)數(shù)器。此微處理器也包括指令轉(zhuǎn)譯器,連接至隨機(jī)數(shù)產(chǎn)生器,用以轉(zhuǎn)譯一指令,以指示此微處理器將緩沖器所累積的字節(jié)存儲(chǔ)至這些使用者可見(jiàn)寄存器其中之一。
本發(fā)明的另一項(xiàng)特征是,提出一種微處理器,其具有多個(gè)使用者可見(jiàn)寄存器。此微處理器包括隨機(jī)數(shù)產(chǎn)生器,以產(chǎn)生隨機(jī)數(shù)據(jù)字節(jié)。此微處理器也包括指令轉(zhuǎn)譯器,連接至隨機(jī)數(shù)產(chǎn)生器,用以轉(zhuǎn)譯微處理器指令集的一指令。此指令包括運(yùn)算碼及目的操作數(shù),用于指定一目的,以存儲(chǔ)隨機(jī)數(shù)產(chǎn)生器所產(chǎn)生的一數(shù)量的隨機(jī)數(shù)據(jù)字節(jié)。此數(shù)量是指定于微處理器的使用者可見(jiàn)寄存器其中之一。
如上所述的微處理器,其中,這些使用者可見(jiàn)寄存器的該其中之一為這些使用者可見(jiàn)寄存器中預(yù)定的一個(gè)。
如上所述的微處理器,其中,該指令更包括一前置碼,用以表示該指令具有指定于這些使用者可見(jiàn)寄存器的該其中之一的該數(shù)目的這些隨機(jī)數(shù)據(jù)字節(jié)。
本發(fā)明的另一項(xiàng)特征是,提出一種用以執(zhí)行多任務(wù)操作系統(tǒng)的微處理器。此微處理器包括隨機(jī)數(shù)產(chǎn)生器,其具有用以累積可變數(shù)目的隨機(jī)數(shù)據(jù)字節(jié)的緩沖器,以及用以計(jì)數(shù)累積字節(jié)的可變量目的計(jì)數(shù)器。此微處理器也包括指令轉(zhuǎn)譯器,連接至隨機(jī)數(shù)產(chǎn)生器,用以轉(zhuǎn)譯微處理器指令集的一指令。此指令用以將計(jì)數(shù)器的一計(jì)數(shù)值及緩沖器的累積字節(jié)存儲(chǔ)至連接于此微處理器的內(nèi)存。此微處理器也包括中斷單元,連接至指令轉(zhuǎn)譯器,用以在指令轉(zhuǎn)譯器轉(zhuǎn)譯此指令之后,禁止微處理器的中斷,并在此指令執(zhí)行之后,使能中斷。
本發(fā)明的一項(xiàng)優(yōu)點(diǎn)是,不像現(xiàn)有方法需要查詢狀態(tài)位以判斷隨機(jī)數(shù)據(jù)何時(shí)可用,本發(fā)明的具體實(shí)施例可實(shí)時(shí)提供可用的隨機(jī)數(shù)據(jù)。另一項(xiàng)優(yōu)點(diǎn)是在某些實(shí)施例中,所提供的指令是連續(xù)執(zhí)行的,因而原本就可支持多任務(wù)。另一項(xiàng)優(yōu)點(diǎn)是在某些實(shí)施例中,由于計(jì)數(shù)值及隨機(jī)數(shù)據(jù)字節(jié)被一起寫(xiě)入內(nèi)存,因此所提供的指令具有自我分類(self-typing)的數(shù)據(jù)。這是有助益的,因?yàn)榇蟛糠值膶?shí)施例允許指令存儲(chǔ)可變量目的隨機(jī)數(shù)據(jù)字節(jié)。
在參考本說(shuō)明書(shū)的其余部份及附圖后,本發(fā)明的其它特征及優(yōu)點(diǎn)將更為明顯易知。


圖1是本發(fā)明微處理器的方框圖;圖2是本發(fā)明圖1的微處理器中RNG單元的方框圖;圖3是本發(fā)明圖1微處理器中,與圖1RNG單元有關(guān)的各種寄存器的方框圖;圖4是根據(jù)本發(fā)明,圖1的微處理器執(zhí)行將值加載圖3 XMM0寄存器的指令的運(yùn)行流程圖;圖5是根據(jù)本發(fā)明,圖1微處理器在執(zhí)行XLOAD指令時(shí)的運(yùn)行方框圖;圖6是根據(jù)本發(fā)明,圖1的微處理器執(zhí)行XLOAD指令的運(yùn)行流程圖;圖7是根據(jù)本發(fā)明,圖1微處理器在執(zhí)行XSTORE指令時(shí)的運(yùn)行方框圖;圖8是根據(jù)本發(fā)明,圖1的微處理器執(zhí)行XSTORE指令的運(yùn)行流程圖;圖9是根據(jù)本發(fā)明,圖1微處理器進(jìn)行關(guān)于隨機(jī)數(shù)產(chǎn)生的多任務(wù)運(yùn)行范例的動(dòng)作流程圖;圖10是根據(jù)本發(fā)明,圖1微處理器中,圖2 RNG單元的串過(guò)濾裝置的方框圖;圖11是根據(jù)本發(fā)明,圖10的串過(guò)濾裝置的運(yùn)行流程圖;圖12是根據(jù)本發(fā)明的另一具體實(shí)施例,圖1微處理器執(zhí)行XSTORE指令的運(yùn)行方框圖;圖13是根據(jù)本發(fā)明,圖2 RNG單元的多重緩沖運(yùn)行的流程圖;圖14是根據(jù)本發(fā)明的另一具體實(shí)施例,圖1微處理器執(zhí)行XLOAD指令的運(yùn)行流程圖;圖15是根據(jù)本發(fā)明的另一具體實(shí)施例,圖1微處理器100執(zhí)行XSTORE指令的運(yùn)行流程圖;圖16及17是根據(jù)本發(fā)明的另外具體實(shí)施例,圖1微處理器執(zhí)行XSTORE指令的運(yùn)行方框圖。
其中,附圖標(biāo)記說(shuō)明如下100微處理器 102指令高速緩存104指令提取器106指令轉(zhuǎn)譯器108寄存器文件112地址產(chǎn)生器114加載單元 116執(zhí)行階段118儲(chǔ)存單元 122回寫(xiě)單元124寫(xiě)入緩沖器126讀取緩沖器128總線接口單元(BIU) 132微碼ROM134SSE單元 136隨機(jī)數(shù)產(chǎn)生器(RNG)單元138處理器總線142,144數(shù)據(jù)總線146中斷單元 148中斷信號(hào)152中斷向量202自測(cè)試單元204CPUID寄存器206隨機(jī)位產(chǎn)生器0 208隨機(jī)位產(chǎn)生器1211計(jì)數(shù)器0 212機(jī)器特定寄存器(MSR)213計(jì)數(shù)器1 214多路復(fù)用器215第二多路分用器216白化器217第三多路分用器218移位寄存器219第四多路復(fù)用器221遞增信號(hào)222連續(xù)數(shù)目測(cè)試(CNT)單元223清除信號(hào) 224串過(guò)濾裝置225比較器226控制與狀態(tài)寄存器(CSR)227full1信號(hào) 228第二多路復(fù)用器229full0信號(hào) 231power_cntrl信號(hào)232多路分用器234可用字節(jié)計(jì)數(shù)236第三多路復(fù)用器238寄存器R5
242緩沖器0244控制邏輯246緩沖器1248重置信號(hào)252產(chǎn)生器選擇信號(hào) 254原始位信號(hào)256過(guò)濾失敗信號(hào) 258maxz_cnt信號(hào)262過(guò)濾使能信號(hào) 264fill_select信號(hào)266store_select信號(hào) 268xstore信號(hào)272xload信號(hào) 274TSPO標(biāo)志寄存器278數(shù)據(jù)總線 282字節(jié)產(chǎn)生信號(hào)284CNT使能信號(hào)286RNG存在信號(hào)288自測(cè)試失敗信號(hào) 292自測(cè)試使能信號(hào)294CNT失敗信號(hào)296直流偏壓信號(hào)298隨機(jī)數(shù)據(jù)字節(jié)302,314RNG存在位 312RNG使能位316自測(cè)試使能位 318自測(cè)試失敗位322直流偏壓位 324原始位332,362可用字節(jié)計(jì)數(shù)字段334串過(guò)濾裝置使能位 336產(chǎn)生器選擇位338串過(guò)濾裝置失敗位 342CNT使能位344CNT失敗位 346串過(guò)濾裝置max_cnt字段352SSE寄存器 364隨機(jī)數(shù)據(jù)字節(jié)字段372XMM0 374XMM5376XMM3402-404微處理器執(zhí)行將值加載XMM0寄存器的指令的運(yùn)行流程502系統(tǒng)內(nèi)存 50416個(gè)字節(jié)數(shù)據(jù)602-612微處理器執(zhí)行XLOAD指令的運(yùn)行流程702可用字節(jié)計(jì)數(shù) 704隨機(jī)數(shù)據(jù)字節(jié)802-824微處理器執(zhí)行XSTORE指令的運(yùn)行流程902-952微處理器進(jìn)行關(guān)于隨機(jī)數(shù)產(chǎn)生的多任務(wù)運(yùn)行范例的動(dòng)作流程1002比較邏輯 1004或門(mén)1006選擇邏輯 1008與門(mén)
1012A第一加法器1012B第二加法器1014A第一多路復(fù)用器1014B第二多路復(fù)用器1016A第一計(jì)數(shù)器1016B第二計(jì)數(shù)器1022Anum_leading_ones信號(hào)1022Bnum_leading_zeros信號(hào)1024Aones_cnt信號(hào) 1024Bzeros_cnt信號(hào)1026Anew_ones_cnt信號(hào) 1026Bnew_zeros_cnt信號(hào)1028Anum_trailing_ones信號(hào)1028Bnum_trailing_zeros信號(hào)1032A,1032B固定零值 1034Aones_exceeded信號(hào)1034Bzeros_exceeded信號(hào)1036Aleading_ones信號(hào) 1036Bleading_zeros信號(hào)1038Atrailing_ones信號(hào) 1038Btrailing_zeros信號(hào)1042Aone_select信號(hào)1042Bzero_select信號(hào)1044max_cnt_exceeded信號(hào)1046A第一比較器1046B第二比較器1048Aall_ones信號(hào) 1048Ball_zeros信號(hào)1102-1148串過(guò)濾裝置的工作流程1202EAX寄存器1302-1334RNG單元的多重緩沖運(yùn)行的流程1702ECX寄存器 1704ESEDI具體實(shí)施方式
現(xiàn)請(qǐng)參照?qǐng)D1,其是本發(fā)明的微處理器100的方框圖。圖1的微處理器100為包括多個(gè)階段的管線化微處理器,其中每一階段負(fù)責(zé)整個(gè)程序指令執(zhí)行過(guò)程的一部份,如下所述。
微處理器100包括一隨機(jī)數(shù)產(chǎn)生器(RNG)單元136。微處理器100所執(zhí)行的操作系統(tǒng)及應(yīng)用程序,可能會(huì)使用隨機(jī)數(shù)來(lái)執(zhí)行各種功能,如數(shù)據(jù)加密、物理現(xiàn)象的模擬、統(tǒng)計(jì)分析、數(shù)值分析或是其它。RNG單元136會(huì)產(chǎn)生用于這些功能的隨機(jī)數(shù)。RNG單元136將于下文做更詳細(xì)地說(shuō)明。
微處理器100也包括一指令高速緩存102。指令高速緩存102會(huì)高速緩存從連接至微處理器100的系統(tǒng)內(nèi)存所提取的程序指令。
微處理器100也包括一指令提取器104,其連接至指令高速緩存102。指令提取器104會(huì)控制從系統(tǒng)內(nèi)存及/或指令高速緩存102提取指令的動(dòng)作。指令提取器104會(huì)選取一個(gè)值給由微處理器100所維護(hù)的指令指針(instruction pointer)。指令指針會(huì)指定下個(gè)內(nèi)存地址,以從該處提取指令。一般來(lái)說(shuō),指令指針會(huì)順序遞增,而指到下個(gè)指令。然而,流程控制指令(如分支(branch)、跳躍、副例程呼叫及返回)會(huì)將指令指針更新為流程控制指令所指定的非順序內(nèi)存地址。此外,中斷可能驅(qū)使指令提取器104將指令指針更新為非順序地址。
微處理器100也包括一中斷單元146,其連接至指令提取器104。中斷單元146會(huì)接收一中斷信號(hào)148及一中斷向量152。微處理器100之外的組件可能會(huì)使能中斷信號(hào)148,并提供中斷向量152,以使微處理器100執(zhí)行中斷服務(wù)例程。中斷單元146會(huì)依據(jù)中斷向量152,決定中斷服務(wù)例程的內(nèi)存地址,并將中斷服務(wù)例程的內(nèi)存地址送到指令提取器104,以將指令指針更新為中斷服務(wù)例程地址。中斷單元146也會(huì)依照微處理器100所執(zhí)行的特定指令,選擇性地禁止及使能中斷服務(wù)。即,若中斷被禁止,則即使中斷信號(hào)148被使能,指令指針的內(nèi)容也不會(huì)改變,直到中斷被使能為止。
微處理器100也包括一指令轉(zhuǎn)譯器106,其連接至指令提取器104、中斷單元146及RNG單元136。指令轉(zhuǎn)譯器106會(huì)轉(zhuǎn)譯從指令高速緩存102及/或系統(tǒng)內(nèi)存所接收的指令。指令轉(zhuǎn)譯器106會(huì)轉(zhuǎn)譯指令,并依據(jù)轉(zhuǎn)譯指令的形式采取適當(dāng)?shù)膭?dòng)作。指令轉(zhuǎn)譯器106會(huì)轉(zhuǎn)譯微處理器100的指令集中所定義的指令。若指令轉(zhuǎn)譯器106要轉(zhuǎn)譯未定義在微處理器100指令集中的指令,則會(huì)產(chǎn)生不合法的指令異常。
在一具體實(shí)施例中,微處理器100的指令集實(shí)質(zhì)上近似于英特爾PentiumIII或Pentium IV微處理器的指令集。然而有利的是,本發(fā)明的微處理器100包括額外的指令,其有關(guān)于RNG單元136的隨機(jī)數(shù)產(chǎn)生功能。一個(gè)額外的指令為XSTORE指令,可存儲(chǔ)RNG單元136所產(chǎn)生的隨機(jī)數(shù)。另一額外的指令為XLOAD指令,可從系統(tǒng)內(nèi)存將控制值加載RNG單元136中的控制與狀態(tài)寄存器(control and status register,CSR)226及單指令多數(shù)據(jù)流擴(kuò)展(Streaming SIMD Extensions,SSE)寄存器XMM0 372,這部分在下文會(huì)配合圖2及圖3做說(shuō)明。XSTORE及XLOAD指令在下文也會(huì)做更詳細(xì)地說(shuō)明。
此外,指令轉(zhuǎn)譯器106會(huì)將轉(zhuǎn)譯指令的相關(guān)信息送到中斷單元146,以使中斷單元146能適當(dāng)?shù)厥鼓芗敖怪袛?。再者,指令轉(zhuǎn)譯器106會(huì)將轉(zhuǎn)譯指令的相關(guān)信息送到RNG單元136。例如,指令轉(zhuǎn)譯器106會(huì)將關(guān)于轉(zhuǎn)譯的XSTORE及XLOAD指令的信息送到RNG單元136。此外,當(dāng)一將值加載SSE寄存器XMM0 372的指令被轉(zhuǎn)譯時(shí),指令轉(zhuǎn)譯器106會(huì)通知RNG單元136,以使RNG單元136采取某些動(dòng)作,如設(shè)定標(biāo)志,以指出操作系統(tǒng)可能會(huì)進(jìn)行一工作切換,如下文所述。
在一具體實(shí)施例中,指令轉(zhuǎn)譯器106會(huì)將宏指令,如Pentium III或IV的指令,轉(zhuǎn)譯為由微處理器100管線所執(zhí)行的一個(gè)或多個(gè)微指令。
微處理器100也包括一微碼ROM 132,其連接至指令轉(zhuǎn)譯器106。微碼ROM 132會(huì)存儲(chǔ)微程序代碼指令,以送到指令轉(zhuǎn)譯器106,由微處理器100來(lái)執(zhí)行。微處理器100指令集中的某些指令,是以微程序代碼來(lái)實(shí)作。即,當(dāng)指令轉(zhuǎn)譯器106轉(zhuǎn)譯這些指令的其中一個(gè)時(shí),指令轉(zhuǎn)譯器106會(huì)使微碼ROM 132內(nèi)的一微指令例程被執(zhí)行,藉以執(zhí)行轉(zhuǎn)譯的宏指令。在一具體實(shí)施例中,XSTORE及/或XLOAD指令是以微程序代碼執(zhí)行。此外,在一具體實(shí)施例中,XSTORE及XLOAD指令是連續(xù)執(zhí)行的,此因其為不可中斷的。即,在XSTORE及XLOAD指令的執(zhí)行期間,中斷會(huì)被禁止。
微處理器100也包括一寄存器文件108,其連接至指令轉(zhuǎn)譯器106。寄存器文件108包括微處理器100的使用者可見(jiàn)寄存器,及其它寄存器。在一具體實(shí)施例中,寄存器文件108中的使用者可見(jiàn)寄存器包括Pentium III或IV的使用者可見(jiàn)寄存器集。圖3的SSE寄存器352是包含于寄存器文件108中。SSE寄存器352是由包含于微處理器100中的SSE單元134及RNG單元136來(lái)使用,如下所述。尤其,寄存器文件108包括目前操作系統(tǒng)所熟知的寄存器。因此,當(dāng)操作系統(tǒng)從第一工作切換到第二工作時(shí),操作系統(tǒng)將寄存器文件108的寄存器(包括SSE寄存器352)中關(guān)于第一工作的內(nèi)容,存到系統(tǒng)內(nèi)存,并從系統(tǒng)內(nèi)存回存寄存器文件108的寄存器(包括SSE寄存器352)中關(guān)于第二工作的內(nèi)容。
微處理器100也包括一地址產(chǎn)生器112,其連接至寄存器文件108。地址產(chǎn)生器112會(huì)依據(jù)存于寄存器文件108中的操作數(shù)及由指令轉(zhuǎn)譯器106轉(zhuǎn)譯的指令所提供的操作數(shù),而產(chǎn)生內(nèi)存地址。特別是,地址產(chǎn)生器112會(huì)產(chǎn)生內(nèi)存地址,以指定系統(tǒng)內(nèi)存中的位置,由XSTORE指令將多個(gè)字節(jié)的隨機(jī)數(shù)據(jù)存儲(chǔ)其中。此外,地址產(chǎn)生器112也產(chǎn)生指定系統(tǒng)內(nèi)存中的位置的內(nèi)存地址,由XLOAD指令加載其中的控制值,以由一數(shù)據(jù)總線142存入圖2的CSR 226中。
微處理器100也包括一加載單元114,其連接至地址產(chǎn)生器112。加載單元114會(huì)從系統(tǒng)內(nèi)存中加載數(shù)據(jù)至微處理器100。加載單元114也包括一數(shù)據(jù)高速緩存,以高速緩存從系統(tǒng)內(nèi)存所讀取的數(shù)據(jù)。加載單元114會(huì)由數(shù)據(jù)總線142,將加載的數(shù)據(jù)送到微處理器100中的執(zhí)行單元,如SSE單元134、RNG單元136及包含于執(zhí)行階段116中的執(zhí)行單元。特別是,加載單元114會(huì)從系統(tǒng)內(nèi)存加載控制值,存到圖2的CSR 226中,以執(zhí)行XLOAD指令。
微處理器100也包括執(zhí)行階段116,其由數(shù)據(jù)總線142連接至加載單元114。執(zhí)行階段116包括執(zhí)行單元,如算術(shù)邏輯單元,其用以執(zhí)行算術(shù)與邏輯運(yùn)算,像是加、減、乘、除及布爾運(yùn)算。在一具體實(shí)施例中,執(zhí)行階段116包括一用以執(zhí)行整數(shù)運(yùn)算的整數(shù)單元,及一用以執(zhí)行浮點(diǎn)運(yùn)算的浮點(diǎn)單元。
微處理器100也包括SSE單元134,其連接至加載單元114及指令轉(zhuǎn)譯器106。SSE單元134包括算術(shù)與邏輯單元,用以執(zhí)行SSE指令,如包含于Pentium III與IV的SSE或SSE2指令集中的那些指令。在一具體實(shí)施例中,雖然圖3的SSE寄存器352概念上是包含在寄存器文件108中,但實(shí)際上是位于SSE單元134中,用以存儲(chǔ)SSE單元134所使用的操作數(shù)。
微處理器100也包括RNG單元136,其由數(shù)據(jù)總線142連接至指令轉(zhuǎn)譯器106及加載單元114。RNG單元136提供隨機(jī)數(shù)據(jù)字節(jié)以及一計(jì)數(shù)值于數(shù)據(jù)總線144上,其中該計(jì)數(shù)值是表示提供給一XSTORE指令的隨機(jī)數(shù)據(jù)字節(jié)的數(shù)量。RNG單元136在下文將會(huì)配合其余附圖做更詳細(xì)的說(shuō)明。
微處理器100也包括一存儲(chǔ)單元118,其連接至執(zhí)行單元116、SSE單元134以及RNG單元136。存儲(chǔ)單元118會(huì)將數(shù)據(jù)存儲(chǔ)到系統(tǒng)內(nèi)存及加載單元114中的數(shù)據(jù)高速緩存。存儲(chǔ)單元118會(huì)將執(zhí)行單元116、SSE單元134及RNG單元136所產(chǎn)生的結(jié)果存儲(chǔ)至系統(tǒng)內(nèi)存。特別是,存儲(chǔ)單元118會(huì)將RNG單元136在數(shù)據(jù)總線144上所提供的XSTORE指令計(jì)數(shù)及隨機(jī)數(shù)據(jù)字節(jié)存儲(chǔ)至系統(tǒng)內(nèi)存。
微處理器100也包括一回寫(xiě)單元122,其連接至執(zhí)行單元116及寄存器文件108?;貙?xiě)單元122會(huì)將指令結(jié)果回寫(xiě)至寄存器文件108。
微處理器100也包括寫(xiě)入緩沖器124,其連接至回寫(xiě)單元122。寫(xiě)入緩沖器124會(huì)保持等待寫(xiě)入至系統(tǒng)內(nèi)存的數(shù)據(jù),如XSTORE指令計(jì)數(shù)及數(shù)據(jù)。
微處理器100也包括一總線接口單元(BIU)128,其連接至寫(xiě)入緩沖器124。BIU 128是作為微處理器100與一處理器總線138的接口。處理器總線138將微處理器100連接至系統(tǒng)內(nèi)存。BIU 128執(zhí)行處理器總線138上的總線作業(yè),以在微處理器100與系統(tǒng)內(nèi)存之間傳遞數(shù)據(jù)。特別是,BIU 128會(huì)執(zhí)行處理器總線138上的一個(gè)或多個(gè)總線作業(yè),以將XSTORE指令計(jì)數(shù)及數(shù)據(jù)存儲(chǔ)至系統(tǒng)內(nèi)存。此外,BIU 128會(huì)執(zhí)行處理器總線138上的一或多個(gè)總線作業(yè),以從系統(tǒng)內(nèi)存加載XLOAD指令控制值。
微處理器100也包括讀取緩沖器126,其連接至BIU 128及寄存器文件108。對(duì)于藉由BIU 128從系統(tǒng)內(nèi)存所接收的數(shù)據(jù),在其等待送到加載單元114或寄存器文件108時(shí),讀取緩沖器126會(huì)將其保存著。特別是,當(dāng)從系統(tǒng)內(nèi)存接收的XLOAD指令數(shù)據(jù)在等待送到加載單元114及其后的RNG單元136時(shí),讀取緩沖器126會(huì)將此數(shù)據(jù)保存著。
現(xiàn)請(qǐng)參照?qǐng)D2,其為本發(fā)明圖1的微處理器100中RNG單元136的方框圖。
RNG單元136包括控制邏輯244。控制邏輯244包括大量的組合及順序邏輯,用以控制RNG單元136中的各種組件??刂七壿?44會(huì)接收xload信號(hào)272及xstore信號(hào)268,其分別表示正執(zhí)行XLOAD或XSTORE指令??刂七壿?44也會(huì)接收重置信號(hào)248,其表示正在重置RNG單元136。下面會(huì)結(jié)合RNG單元136的其余部分,對(duì)控制邏輯244做更詳細(xì)地說(shuō)明。
RNG單元136也包括一自測(cè)試單元202,其連接至控制邏輯244。自測(cè)試單元202會(huì)從一控制與狀態(tài)寄存器,稱為機(jī)器特定寄存器(MSR)212,接收自測(cè)試使能信號(hào)292,MSR 212將在下文配合圖3做更詳細(xì)地說(shuō)明。MSR212也連接至控制邏輯244。自測(cè)試單元202會(huì)將自測(cè)試失敗信號(hào)288送到控制邏輯244。若自測(cè)試單元202被自測(cè)試使能信號(hào)292所使能,則自測(cè)試單元202會(huì)執(zhí)行各種RNG單元136的自測(cè)試。若自測(cè)試失敗,自測(cè)試單元202會(huì)產(chǎn)生真值的自測(cè)試失敗信號(hào)288,并送至MSR 212。在一具體實(shí)施例中,自測(cè)試單元202會(huì)執(zhí)行隨機(jī)數(shù)產(chǎn)生器統(tǒng)計(jì)測(cè)試,如聯(lián)邦信息處理標(biāo)準(zhǔn)(FIPS)刊物第140-2期的第35-36頁(yè)所定義的,此處予以參考并入。
在一具體實(shí)施例中,自測(cè)試單元202在使用者的要求下執(zhí)行自測(cè)試。在一具體實(shí)施例中,在微處理器100重置后,自測(cè)試單元202會(huì)執(zhí)行自測(cè)試。若自測(cè)試失敗,不論是使用者所要求的或重置后所做的,自測(cè)試單元202都會(huì)產(chǎn)生真值的自測(cè)試失敗信號(hào)288,其是反映于圖3中MSR 212的自測(cè)試失敗位318??刂七壿?44在重置時(shí),會(huì)檢查自測(cè)試失敗位318。若自測(cè)試失敗位318為真,控制邏輯244會(huì)設(shè)定一偽值的RNG存在信號(hào)286,送到MSR212,以更新圖3的RNG存在位314。
RNG存在信號(hào)286也會(huì)送到一CPUID寄存器204,其包括圖3的RNG存在位302,而RNG存在位302也會(huì)藉由RNG存在信號(hào)286來(lái)更新。即,CPUID寄存器204的RNG存在位302為MSR 212的RNG存在位314的副本。在一具體實(shí)施例中,應(yīng)用程序可藉由執(zhí)行IA-32指令集中的CPUID指令來(lái)讀取CPUID寄存器204。若RNG存在位302為偽,則表示RNG單元136并不存在于微處理器100,且微處理器100不具備隨機(jī)數(shù)產(chǎn)生的特征。有利的是,需要隨機(jī)數(shù)的應(yīng)用可通過(guò)RNG存在位302,來(lái)檢測(cè)微處理器100中的RNG單元136是否存在,且若RNG單元136不存在,則選擇由另一個(gè)也許效能較低的來(lái)源來(lái)取得隨機(jī)數(shù)。
RNG單元136也包括兩個(gè)連接至控制邏輯244的隨機(jī)位產(chǎn)生器,稱為隨機(jī)位產(chǎn)生器0 206及隨機(jī)位產(chǎn)生器1 208,隨機(jī)位產(chǎn)生器206及208都會(huì)產(chǎn)生一串隨機(jī)位,由RNG單元136累積成隨機(jī)數(shù)據(jù)的字節(jié)。隨機(jī)位產(chǎn)生器206及208都會(huì)接收一電源控制(power_cntrl)信號(hào)231,其是用以指定是否關(guān)閉隨機(jī)位產(chǎn)生器206及208的電源。在一具體實(shí)施例中,關(guān)閉隨機(jī)位產(chǎn)生器206及208電源的動(dòng)作包括不送時(shí)鐘脈沖信號(hào)給它們。隨機(jī)位產(chǎn)生器206及208都會(huì)依據(jù)微處理器100的隨機(jī)電氣特性(如熱噪聲),而產(chǎn)生一連串隨機(jī)數(shù)據(jù)位。
隨機(jī)位產(chǎn)生器0 206會(huì)從MSR 212接收一直流偏壓信號(hào)296。直流偏壓信號(hào)296傳送圖3中MSR 212的直流偏壓位322所存的值。直流偏壓信號(hào)296的值指定一直流偏壓電壓,以部分地控制隨機(jī)位產(chǎn)生器0 206中的自發(fā)振鈴振蕩器的工作電壓。
以下申請(qǐng)中的美國(guó)專利案,申請(qǐng)?zhí)枮?0/046055、10/046054及10/046057,標(biāo)題分別為“用以產(chǎn)生隨機(jī)數(shù)的裝置”、“振蕩器偏壓變化機(jī)制”及“振蕩器頻率變化機(jī)制”,其中均對(duì)隨機(jī)位產(chǎn)生器0 206做了詳細(xì)說(shuō)明,此處全部予以參考并入。
RNG單元136也包括一具有兩輸入端的多路復(fù)用器214,其輸入端連接至隨機(jī)位產(chǎn)生器206及208的輸出端。多路復(fù)用器214依據(jù)CSR 226所提供的產(chǎn)生器選擇信號(hào)252,來(lái)選擇兩輸入端的其中一個(gè)。產(chǎn)生器選擇信號(hào)252會(huì)傳送圖3中CSR 226的產(chǎn)生器選擇位336所存儲(chǔ)的值。
RNG單元136也包括一范紐曼白化器216,或稱壓縮器,其連接至多路復(fù)用器214的輸出端。白化器216是藉由從MSR 212所接收的原始位信號(hào)254,而選擇性地被使能/禁止。原始位信號(hào)254會(huì)傳送存儲(chǔ)于圖3中MSR 212的原始位字段324中的值。若原始位信號(hào)254為真,則白化器216讓多路復(fù)用器214所接收的位直接通過(guò)而輸出,并不執(zhí)行白化的功能。白化器216是依據(jù)一預(yù)定的輸入/輸出函數(shù),接收來(lái)自多路復(fù)用器214的一對(duì)位并輸出兩者中任一個(gè)位或都不輸出,藉以明顯降低可能存在于隨機(jī)位產(chǎn)生器206及208的殘余偏壓。白化器216的輸入/輸出函數(shù)如下表一所示。

表一RNG單元136也包括一8位的移位寄存器218,其連接至白化器216。移位寄存器218會(huì)暫存從白化器216所接收的隨機(jī)數(shù)據(jù)位,將其累積成8位的字節(jié),并輸出所累積的隨機(jī)數(shù)據(jù)字節(jié)。移位寄存器218將一送至控制邏輯244的字節(jié)產(chǎn)生信號(hào)282設(shè)定為真,以表示其已累積并輸出一隨機(jī)數(shù)據(jù)字節(jié)298。
RNG單元136也包括一連續(xù)數(shù)目測(cè)試(CNT)單元222,其連接至移位寄存器218的輸出端。CNT單元222會(huì)從移位寄存器218接收隨機(jī)字節(jié)298,并對(duì)隨機(jī)字節(jié)298進(jìn)行一連續(xù)隨機(jī)數(shù)產(chǎn)生器測(cè)試。CNT單元222是依據(jù)從CSR 226所接收的CNT使能信號(hào)284,而選擇性地被使能/禁止。CNT使能信號(hào)284會(huì)傳送存儲(chǔ)于圖3中CSR 226的CNT使能位342中之值。若連續(xù)隨機(jī)數(shù)產(chǎn)生器測(cè)試失敗,則CNT單元222將一送到CSR 226的CNT失敗信號(hào)294設(shè)定為真,并存儲(chǔ)于圖3中CSR 226的CNT失敗位344中。
在一具體實(shí)施例中,CNT單元222所執(zhí)行的連續(xù)隨機(jī)數(shù)產(chǎn)生器測(cè)試,實(shí)質(zhì)上符合FIPS第140-2期中第37頁(yè)所述的連續(xù)隨機(jī)數(shù)產(chǎn)生器測(cè)試,其在此予以參考并入。在一具體實(shí)施例中,CNT單元222會(huì)使用二個(gè)8字節(jié)的緩沖器(稱為“舊”及“新”),來(lái)執(zhí)行測(cè)試。在重置及自測(cè)試(若有被使能)后,由移位寄存器218所傳送的前八個(gè)字節(jié)會(huì)累積于舊緩沖器中。接下來(lái)的八個(gè)字節(jié)則累積于新緩沖器中。執(zhí)行XSTORE指令時(shí),舊緩沖器中的8個(gè)字節(jié)會(huì)與新緩沖器中的8個(gè)字節(jié)做比較。若字節(jié)不相等,測(cè)試即通過(guò),且新緩沖器中的8個(gè)字節(jié)會(huì)被移到舊緩沖器。新緩沖器則被清除,以等待累積新的8個(gè)字節(jié)。然而,若字節(jié)相等,則CNT單元222會(huì)將CNT失敗信號(hào)294設(shè)為真,以表示連續(xù)隨機(jī)數(shù)產(chǎn)生器測(cè)試失敗。
在一具體實(shí)施例中,只要設(shè)定圖3的CNT使能位342及CNT失敗位344,XSTORE指令傳回的可用字節(jié)計(jì)數(shù)值就為0。在一具體實(shí)施例中,微處理器100在特定的XSTORE指令執(zhí)行時(shí),將可用字節(jié)計(jì)數(shù)值及隨機(jī)數(shù)據(jù)字節(jié)存儲(chǔ)至系統(tǒng)內(nèi)存,其中特定XSTORE指令的執(zhí)行是啟動(dòng)了該失敗的連續(xù)隨機(jī)數(shù)產(chǎn)生器測(cè)試。
在一具體實(shí)施例中,連續(xù)隨機(jī)數(shù)產(chǎn)生器測(cè)試不會(huì)橫跨數(shù)個(gè)并未全部使能該測(cè)試的工作。即,當(dāng)CNT使能位342被設(shè)定時(shí),新及舊的緩沖器都會(huì)更新,并且連續(xù)隨機(jī)數(shù)產(chǎn)生器測(cè)試只會(huì)因執(zhí)行XSTORE指令而進(jìn)行。因此,可確保一特定的工作絕不會(huì)接收兩組連續(xù)且其值相等的8個(gè)字節(jié)。然而,若二個(gè)工作正執(zhí)行,且其中一個(gè)設(shè)定CNT使能位342,而另一個(gè)并未設(shè)定,則RNG單元136可能以XSTORE指令,將8個(gè)字節(jié)存儲(chǔ)至其中一個(gè)工作,并產(chǎn)生工作切換,而RNG單元136再以XSTORE指令,將與先前8個(gè)字節(jié)相等的8個(gè)字節(jié)存儲(chǔ)至另一個(gè)工作;然而,在此情況下,連續(xù)隨機(jī)數(shù)產(chǎn)生器測(cè)試將不會(huì)失敗。
RNG單元136也包括一串過(guò)濾裝置(string filter)224,其連接至移位寄存器218的輸出端。串過(guò)濾裝置224會(huì)從移位寄存器218接收隨機(jī)字節(jié)298,并選擇性地丟棄某些隨機(jī)字節(jié),如下所述,且輸出未丟棄的隨機(jī)字節(jié)。串過(guò)濾裝置224會(huì)確保RNG單元136不會(huì)產(chǎn)生比一指定值長(zhǎng)的連續(xù)相似位(即連續(xù)的0位串或連續(xù)的1位串)。此指定值是由從CSR 226所接收的最大計(jì)數(shù)(max_cnt)信號(hào)258來(lái)指定。max_cnt信號(hào)258會(huì)傳送圖3中CSR 226的串過(guò)濾裝置最大計(jì)數(shù)字段346所指定的值。在一具體實(shí)施例中,max_cnt 346的默認(rèn)值為26個(gè)位。在一具體實(shí)施例中,串過(guò)濾裝置最大計(jì)數(shù)字段346的值必須至少為8。若串過(guò)濾裝置224檢測(cè)到一連續(xù)的相似位串長(zhǎng)度超過(guò)max_cnt258,則串過(guò)濾裝置224將一過(guò)濾失敗信號(hào)256設(shè)為真,此信號(hào)是存儲(chǔ)于圖3中CSR 226的串過(guò)濾裝置失敗位338中。串過(guò)濾裝置224在以下會(huì)配合圖10到12做更詳細(xì)地說(shuō)明。
RNG單元136也包括一具兩輸入端的第二多路復(fù)用器228。其中一輸入端是連接至串過(guò)濾裝置224的輸出端,而另一輸入端是連接至移位寄存器218的輸出端。多路復(fù)用器228依據(jù)CSR 226所提供的過(guò)濾使能信號(hào)262,而選擇其中一輸入端,以傳送圖3中CSR 226的串過(guò)濾裝置使能位334所存的值。
RNG單元136也包括一個(gè)具一輸入端與兩輸出端的多路分用器232,其輸入端是連接至多路復(fù)用器228的輸出端。多路分用器電路包括單一數(shù)據(jù)輸入端及多個(gè)數(shù)據(jù)輸出端。多路分用器也包括一控制輸入端。多路分用器會(huì)依據(jù)控制輸入端的信號(hào)來(lái)選擇多個(gè)數(shù)據(jù)輸出端的其中一個(gè),并將數(shù)據(jù)輸入端所接收的數(shù)據(jù)送到所選的輸出端。此處多路分用器232則依據(jù)控制邏輯244所提供的填充選擇(fill_select)信號(hào)264,將輸入端所接收的隨機(jī)數(shù)據(jù)字節(jié)選擇性地送到其中一個(gè)輸出端。
RNG單元136也包括兩個(gè)數(shù)據(jù)緩沖器,標(biāo)示為緩沖器0 242及緩沖器1246,都連接至多路分用器232的輸出端。緩沖器0 242及緩沖器1 246藉由XSTORE指令,來(lái)累積要存儲(chǔ)至系統(tǒng)內(nèi)存的隨機(jī)數(shù)據(jù)字節(jié)。在一具體實(shí)施例中,緩沖器0 242及緩沖器1 246各可存儲(chǔ)15個(gè)字節(jié)的隨機(jī)數(shù)據(jù)。在一具體實(shí)施例中,緩沖器0 242及緩沖器1 246各可存儲(chǔ)16個(gè)字節(jié)的隨機(jī)數(shù)據(jù)。
RNG單元136也包括一具兩個(gè)輸入端的第三多路復(fù)用器236,其輸入端連接至緩沖器0 242及緩沖器1 246的輸出端。多路復(fù)用器236依據(jù)控制邏輯244所提供的存儲(chǔ)選擇(store_select)信號(hào)266,選取其輸入端的其中一組隨機(jī)數(shù)據(jù)字節(jié),以輸出至一數(shù)據(jù)總線278上。
RNG單元136也包括一TSPO標(biāo)志寄存器274,其連接至控制邏輯244。TSPO標(biāo)志寄存器274存儲(chǔ)一標(biāo)志,用以表示操作系統(tǒng)所進(jìn)行的工作切換是否可能發(fā)生。TSPO標(biāo)志寄存器274的使用在以下會(huì)做更詳細(xì)地說(shuō)明。
RNG單元136也包括一具兩輸出端的第二多路分用器215,其連接至控制邏輯244。多路分用器215的輸入端連接至控制邏輯244,以接收其所產(chǎn)生的遞增信號(hào)221。每當(dāng)一隨機(jī)數(shù)據(jù)字節(jié)存入緩沖器0 242或緩沖器1 246時(shí),控制邏輯244會(huì)將遞增信號(hào)221設(shè)為真。多路分用器215依據(jù)fill_select信號(hào)264,將其輸入端所接收的遞增信號(hào)221選擇性地送到其中一輸出端。
RNG單元136也包括一具兩輸入端的第三多路分用器217,其連接至控制邏輯244。多路分用器217的輸入端連接至控制邏輯244,以接收其所產(chǎn)生的清除信號(hào)223。每當(dāng)執(zhí)行一XSTORE指令時(shí),控制邏輯244會(huì)將清除信號(hào)223設(shè)為真,以使得有效的隨機(jī)數(shù)據(jù)字節(jié)從緩沖器0 242或緩沖器1 246中移除。多路分用器217依據(jù)store_select信號(hào)266,將其輸入端所接收的清除信號(hào)223選擇性地送到其中一輸出端。
RNG單元136也包括兩個(gè)計(jì)數(shù)器,標(biāo)示為計(jì)數(shù)器0 211及計(jì)數(shù)器1 213,其連接至多路分用器215及多路分用器217。計(jì)數(shù)器0 211及計(jì)數(shù)器1 213各具有一遞增(或計(jì)數(shù))輸入端。計(jì)數(shù)輸入端連接至多路分用器215的輸出端。因此,當(dāng)控制邏輯244將遞增信號(hào)221設(shè)為真時(shí),計(jì)數(shù)器0 211及計(jì)數(shù)器1 213中由fill_select信號(hào)264所指定的一個(gè)會(huì)遞增。計(jì)數(shù)器0 211及計(jì)數(shù)器1 213中也各具有一清除輸入端。清除輸入端連接至多路分用器217的輸出端。因此,當(dāng)控制邏輯244將清除信號(hào)223設(shè)為真時(shí),計(jì)數(shù)器0 211及計(jì)數(shù)器1 213中由store_select信號(hào)266所指定的一個(gè)會(huì)被清除為0。
RNG單元136也包括兩個(gè)比較器225,其連接至計(jì)數(shù)器0 211及計(jì)數(shù)器1 213的輸出端。比較器225將計(jì)數(shù)器0 211及計(jì)數(shù)器1 213所輸出的計(jì)數(shù)值,與計(jì)數(shù)器0 211及計(jì)數(shù)器1 213可存儲(chǔ)的字節(jié)數(shù)目做比較,以判斷計(jì)數(shù)器0211及計(jì)數(shù)器1 213是否已滿,并產(chǎn)生full0信號(hào)229及full1信號(hào)227,以將比較結(jié)果告知控制邏輯244。
RNG單元136也包括一具兩個(gè)輸入端的第四多路復(fù)用器219,其輸入端連接至計(jì)數(shù)器0 211及計(jì)數(shù)器1 213的輸出端。多路復(fù)用器219會(huì)依據(jù)存儲(chǔ)選擇(store_select)信號(hào)266,選取其輸入端的其中一計(jì)數(shù)值,以輸出作為可用字節(jié)計(jì)數(shù)234??捎米止?jié)計(jì)數(shù)234也會(huì)送到CSR 226。
RNG單元136也包括一寄存器,標(biāo)示為RNG R5 238,或R5 238。R5 238具有一輸入端,其連接至多路復(fù)用器236的輸出端,以接收數(shù)據(jù)字節(jié)278。R5 238具有另一個(gè)輸入端,其連接至多路復(fù)用器219的輸出端,以接收可用字節(jié)計(jì)數(shù)234。R5 238的輸出端連接至圖1的數(shù)據(jù)總線144。R5 238會(huì)保持XSTORE指令的計(jì)數(shù)值及數(shù)據(jù)。在一具體實(shí)施例中,計(jì)數(shù)值是存儲(chǔ)于R5 238的最小有效字節(jié)中,而有效的數(shù)據(jù)字節(jié)則存儲(chǔ)于與此計(jì)數(shù)值相連的有效字節(jié)的位置。在一具體實(shí)施例中,R5 238可存儲(chǔ)一計(jì)數(shù)字節(jié),加上緩沖器0 242及緩沖器1246所能存儲(chǔ)的隨機(jī)數(shù)據(jù)字節(jié)。
在一具體實(shí)施例中,RNG單元136包括四個(gè)緩沖器,而非兩個(gè)。每一緩沖器可存儲(chǔ)多達(dá)八個(gè)字節(jié)的隨機(jī)數(shù)據(jù)。在此實(shí)施例中,多路分用器215、217及232包含具四個(gè)輸出端的多路分用器;多路復(fù)用器219及236包含具四個(gè)輸入端的多路復(fù)用器;比較器225包括四個(gè)比較器,以產(chǎn)生四個(gè)充滿輸出;而fill_select信號(hào)264及store_select信號(hào)266包括二個(gè)位,用以選擇四個(gè)計(jì)數(shù)器及緩沖器的其中一個(gè)。
現(xiàn)請(qǐng)參照?qǐng)D3,其是本發(fā)明圖1微處理器100中,與圖1 RNG單元136有關(guān)的各種寄存器的方框圖。
圖3顯示圖2中的CPUID寄存器204。CPUID寄存器204包括一RNG存在位302。RNG存在位302為只讀的特征標(biāo)志單元。若RNG存在位302為1,則表示RNG單元136存在,并由微處理器100來(lái)使能。若RNG存在位302為0,則RNG單元136并不存在,且XLOAD及XSTORE指令為無(wú)效的,而當(dāng)指令轉(zhuǎn)譯器106遇到這些指令時(shí),將產(chǎn)生無(wú)效指令異常。此外,讀取MSR 212中的位,結(jié)果是未定義,而嘗試寫(xiě)入,則不會(huì)產(chǎn)生任何效果。RNG存在位302為MSR 212的RNG存在位314的副本。
圖3也顯示圖2中的MSR 212。MSR 212包括一RNG使能位312。RNG使能位312是可寫(xiě)入的。將RNG使能位312寫(xiě)入1會(huì)使RNG單元136使能。將RNG使能位312寫(xiě)入0則使RNG單元136禁止。若RNG使能位312為0,則XLOAD及XSTORE指令即為無(wú)效,而若指令轉(zhuǎn)譯器106遇到這些指令時(shí),將產(chǎn)生無(wú)效指令異常。此外,讀取MSR 212中的位,結(jié)果是未定義,而嘗試寫(xiě)入,則不會(huì)產(chǎn)生任何效果。RNG使能位312的值在重置之后,即變?yōu)?。
MSR 212也包括一只讀的RNG存在位314。RNG存在位314是表示RNG單元136是否存在于微處理器100中。若RNG存在位314為0,則RNG單元136不能藉由設(shè)定RNG使能位312來(lái)使能,并且,讀取MSR 212中的位,結(jié)果是未定義,而嘗試寫(xiě)入,則不會(huì)產(chǎn)生任何效果。此外,若RNG單元136的自測(cè)試失敗,則RNG存在位314將被清除,如前文圖2部分所述。
MSR 212也包括一只讀的統(tǒng)計(jì)自測(cè)試使能位316。自測(cè)試使能位316表示前述圖2部分的重置后的自測(cè)試目前是否使能。若自測(cè)試使能位316為0,則在重置之后,不會(huì)執(zhí)行自測(cè)試。若自測(cè)試使能位316為1,則在重置之后,會(huì)執(zhí)行自測(cè)試。在一具體實(shí)施例中,在微處理器100的暖重置及電源開(kāi)啟重置之后,會(huì)執(zhí)行自測(cè)試。
MSR 212也包括一只讀的統(tǒng)計(jì)自測(cè)試失敗位318。自測(cè)試失敗位318是表示前述圖2部分的最近重置后的自測(cè)試是否失敗。在一具體實(shí)施例中,若自測(cè)試失敗位318為1,則RNG單元136無(wú)法被使能。
MSR 212也包括可寫(xiě)入的直流偏壓位322。在一具體實(shí)施例中,直流偏壓位322包括三個(gè)位。直流偏壓位322是用以控制送到隨機(jī)位產(chǎn)生器0 206的直流偏壓,其會(huì)影響隨機(jī)位產(chǎn)生器0 206的運(yùn)行速度及可能的隨機(jī)度。在一具體實(shí)施例中,若在重置時(shí)執(zhí)行統(tǒng)計(jì)自測(cè)試,則自測(cè)試單元202會(huì)決定出直流偏壓位322的正確值或最佳值,并將其設(shè)定為此值。在重置之后,直流偏壓位322的值即變?yōu)?00。
MSR 212也包括可寫(xiě)入的原始位位324。若原始位位324設(shè)定為0,則圖2的白化器216會(huì)執(zhí)行前文圖2部分所述的白化功能,并將白化位傳送到移位寄存器218。若原始位位324設(shè)定為1,則白化器216不會(huì)執(zhí)行白化功能,而將來(lái)自于多路復(fù)用器214的原始位傳送到移位寄存器218。在重置之后,原始位位324的值即變?yōu)?。
圖3也顯示圖2中的CSR 226。在一具體實(shí)施例中,CSR 226為128位的寄存器。CSR 226包括只讀的可用字節(jié)計(jì)數(shù)字段332??捎米止?jié)計(jì)數(shù)字段332會(huì)指明在store_select信號(hào)266所選擇的緩沖器0 242或緩沖器1 246中,目前有多少字節(jié)的隨機(jī)數(shù)據(jù)可藉由XSTORE指令來(lái)存儲(chǔ)。若有需要,可藉軟件來(lái)讀取可用字節(jié)計(jì)數(shù)字段332,以判斷目前有多少隨機(jī)數(shù)據(jù)字節(jié)可藉由XSTORE指令來(lái)存儲(chǔ)。由于RNG單元136會(huì)將字節(jié)同步地累積至緩沖器0242及緩沖器1 246,在執(zhí)行XSTORE的時(shí)候,可存儲(chǔ)的字節(jié)的實(shí)際數(shù)目可能大于先前藉X(qián)LOAD所讀取的可用字節(jié)計(jì)數(shù)332。在RNG單元136使能之后,可用字節(jié)計(jì)數(shù)字段332的值即變?yōu)?。
CSR 226也包括可寫(xiě)入的串過(guò)濾裝置使能位334。若串過(guò)濾裝置使能位334為1,則串過(guò)濾裝置224被使能;否則串過(guò)濾裝置224被禁止。串過(guò)濾裝置224的運(yùn)行在以下會(huì)配合圖10到12,做更詳細(xì)地說(shuō)明。在RNG單元136使能之后,串過(guò)濾裝置使能位334的值即變?yōu)?。
CSR 226也包括可寫(xiě)入的產(chǎn)生器選擇位336。若產(chǎn)生器選擇位336設(shè)定為0,則選取隨機(jī)位產(chǎn)生器0 206,以由圖2的多路復(fù)用器214,提供隨機(jī)比特流加以累積;否則,會(huì)選取隨機(jī)位產(chǎn)生器1 208。在RNG單元136使能之后,產(chǎn)生器選擇位336的值即變?yōu)?。
CSR 226也包括串過(guò)濾裝置失敗位338。若串過(guò)濾裝置失敗位338設(shè)定為1,是表示串過(guò)濾裝置224檢測(cè)到一連續(xù)的相似位串長(zhǎng)于串過(guò)濾裝置max_cnt字段346所指定的值,如前文圖2及圖10到12部分所述。只有RNG單元136可將串過(guò)濾裝置失敗位338設(shè)定為1。然而,軟件可藉由將0寫(xiě)入其中,清除串過(guò)濾裝置失敗位338。在一具體實(shí)施例中,過(guò)濾失敗位338可藉由過(guò)濾失敗信號(hào)256的脈沖設(shè)定為1,并且維持于1,直到軟件將其清除為止。在RNG單元136使能之后,串過(guò)濾裝置失敗位338的值即變?yōu)?。
CSR 226也包括可寫(xiě)入的計(jì)數(shù)(CNT)使能位342。若CNT使能位342設(shè)定為1,則CNT單元222會(huì)執(zhí)行連續(xù)的隨機(jī)數(shù)產(chǎn)生器測(cè)試,如圖2部分所述。在RNG單元136使能之后,CNT使能位342的值即變?yōu)?。
CSR 226也包括只讀的CNT失敗位344。若CNT使能位342為1且連續(xù)隨機(jī)數(shù)產(chǎn)生器測(cè)試失敗,則RNG單元136將CNT失敗位344設(shè)定為1。在一具體實(shí)施例中,當(dāng)CNT使能位342及CNT失敗位344同時(shí)為1時(shí),執(zhí)行XSTORE指令會(huì)將可用字節(jié)計(jì)數(shù)值0存儲(chǔ)至系統(tǒng)內(nèi)存,而不會(huì)將數(shù)據(jù)字節(jié)存儲(chǔ)于系統(tǒng)內(nèi)存。因此,若一工作設(shè)定了CNT使能位342,并且在此工作執(zhí)行時(shí)發(fā)生失敗,則針對(duì)此工作,RNG單元136會(huì)有效地被禁止。然而,RNG單元136不會(huì)針對(duì)其它未設(shè)定CNT使能位342的工作而禁止。在RNG單元136使能之后,CNT失敗位344的值即變?yōu)?。
CSR 226也包括可寫(xiě)入的串過(guò)濾裝置max_cnt字段346。軟件將值寫(xiě)入串過(guò)濾裝置max_cnt字段346,以指定可容忍的最大數(shù)目的可允許連續(xù)相似位,如以下圖10到12部分所述。在一具體實(shí)施例中,串過(guò)濾裝置max_cnt字段346包括5個(gè)位。在一具體實(shí)施例中,串過(guò)濾裝置max_cnt字段346的默認(rèn)值為26。
在一具體實(shí)施例中,MSR 212的各個(gè)字段是包含于CSR 226,而不是MSR 212中。因此,MSR 212的值會(huì)以CSR 226來(lái)做存儲(chǔ)及回存,以適用于多任務(wù)運(yùn)行,如此處所述,特別是圖4到9的部分。
圖3也顯示圖2的RNG R5寄存器238。R5 238包括二個(gè)字段可用字節(jié)計(jì)數(shù)字段362,以及用于存儲(chǔ)隨機(jī)數(shù)據(jù)字節(jié)的另一字段364,如上所述。在一具體實(shí)施例中,有效的隨機(jī)數(shù)據(jù)字節(jié)會(huì)向右調(diào)整至緊鄰可用字節(jié)計(jì)數(shù)字段362。
圖3也顯示SSE寄存器352。SSE寄存器352包括8個(gè)128位的寄存器,標(biāo)示為XMM0到XMM7。在圖3中,XMM0稱為XMM0 372、XMM3稱為XMM3 376、而XMM5稱為XMM5 374。在一具體實(shí)施例中,SSE寄存器352實(shí)質(zhì)上近似于Pentium III或IV所包含的SSE寄存器,如IA-32英特爾架構(gòu)軟件開(kāi)發(fā)者手冊(cè)第一冊(cè)基本架構(gòu)(2002年)的第10-14頁(yè)所述,其在此加以參考并入。RNG CSR 226會(huì)遮蔽(shadow)XMM0 372,而RNG R5238會(huì)遮蔽XMM5 374,如下文所述。
在一具體實(shí)施例中,微處理器100包括各種熔絲,在微處理器100的制造過(guò)程中,其會(huì)暫時(shí)或永久地加以設(shè)定,以便于重置時(shí),能選取CSR 226及MSR 212中各個(gè)位的值,取代前述的重置值。
現(xiàn)請(qǐng)參照?qǐng)D4,其是根據(jù)本發(fā)明,圖1的微處理器100執(zhí)行將值加載圖3 XMM0寄存器372的指令的運(yùn)行流程圖。加載XMM0 372的指令是由微處理器100執(zhí)行,其從系統(tǒng)內(nèi)存將值加載XMM0寄存器372中,如MOVAPS指令。MOVAPS指令將來(lái)自系統(tǒng)內(nèi)存的數(shù)據(jù)搬移到指定的XMM寄存器,反之亦然,這部分系敘述于IA-32英特爾架構(gòu)軟件開(kāi)發(fā)者手冊(cè)第二冊(cè)指令集參考(2001年)的第3-443頁(yè)到第3-444頁(yè),其在此予以參考并入。其它從系統(tǒng)內(nèi)存加載XMM0 372的指令,則如MOVAPD及MOVDQA。由于XMM0372是操作系統(tǒng)在進(jìn)行工作切換時(shí),被存儲(chǔ)至內(nèi)存及從內(nèi)存回存的寄存器,所以當(dāng)工作切換發(fā)生時(shí),操作系統(tǒng)會(huì)執(zhí)行如MOVAPS的指令,以從內(nèi)存回存切換后的工作中,XMM0 372先前的值。流程從方框402開(kāi)始。
在方框402中,微處理器100藉由提取一指令(如MOVAPS)在系統(tǒng)內(nèi)存所指定位置的值,而執(zhí)行該指令,并將此值加載XMM0 372。因此,任何時(shí)候從內(nèi)存加載XMM0 372,都可能發(fā)生工作切換。流程繼續(xù)進(jìn)行至方框404。
在方框404中,指令轉(zhuǎn)譯器106會(huì)告知RNG單元136,MOVAPS指令(或其它從內(nèi)存加載XMM0 372的類似指令)已被轉(zhuǎn)譯。一旦此值已加載XMM0 372,RNG單元136的控制邏輯244會(huì)設(shè)定TSPO標(biāo)志274,以表示可能發(fā)生工作切換。流程會(huì)結(jié)束于方框404。
現(xiàn)請(qǐng)參照?qǐng)D5,其是根據(jù)本發(fā)明,圖1微處理器100在執(zhí)行XLOAD指令時(shí)的運(yùn)行方框圖。XLOAD指令是軟件藉以將值加載圖2的CSR 226的工具,以指定RNG單元136運(yùn)行所需的控制值。因?yàn)镃SR 226不存在于PentiumIII或IV中,所以需要Pentium III或IV指令集外的新指令,以加載CSR 226。有利的是,XLOAD指令也會(huì)將控制值加載XMM0 372,便于以RNG單元136進(jìn)行多任務(wù)操作,如此處所述。
圖5顯示了指定XMM0 372的XLOAD指令的格式,其為XLOAD XMM0,memaddr其中memaddr指定了系統(tǒng)內(nèi)存502中的一內(nèi)存地址。XLOAD指令的運(yùn)行與MOVAPS指令類似,不過(guò)前者除了XMM0 372外,也會(huì)將系統(tǒng)內(nèi)存的值載入CSR 226。在一具體實(shí)施例中,XLOAD會(huì)將16個(gè)字節(jié)的數(shù)據(jù)504從memaddr移到CSR 226及XMM0 372,如圖所示。在一具體實(shí)施例中,XLOAD指令的運(yùn)算碼值為0x0F 0x5A,其后接著x86指令所指定的標(biāo)準(zhǔn)mod R/M寄存器及地址格式字節(jié)。在另一具體實(shí)施例中,XLOAD指令的運(yùn)算碼值則為0x0F 0xA6 0xC0。若XLOAD指令指定SSE寄存器352中的一個(gè),而非XMM0 372,則會(huì)加載指定的SSE寄存器352;然而,并不會(huì)加載CSR 226。
現(xiàn)請(qǐng)參照?qǐng)D6,其是根據(jù)本發(fā)明,圖1的微處理器100執(zhí)行將值加載圖3XMM0寄存器372的XLOAD指令的運(yùn)行流程圖。流程從方框602開(kāi)始。
在方框602中,微處理器100將系統(tǒng)內(nèi)存502中,XLOAD指令所指定的內(nèi)存地址的值,加載圖2的CSR 226及圖3的XMM0 372,如圖5所示。流程繼續(xù)進(jìn)行至方框604。
在方框604中,由于累積于緩沖器0 242及緩沖器1 246的隨機(jī)數(shù)據(jù)字節(jié)并不會(huì)隨著CSR 226中的控制值而產(chǎn)生,其中這些控制值是正加載CSR226的新工作之所需,所以RNG單元136會(huì)響應(yīng)CSR 226的加載動(dòng)作,而丟棄緩沖器0 242及緩沖器1 246的內(nèi)容。流程繼續(xù)進(jìn)行至方框606。
在方框606中,由于緩沖器0 242及緩沖器1 246中的隨機(jī)數(shù)據(jù)字節(jié)在方框604時(shí)被丟棄,所以RNG單元136會(huì)將計(jì)數(shù)器0 211及計(jì)數(shù)器1 213中的可用字節(jié)計(jì)數(shù)清除為0。流程繼續(xù)進(jìn)行至方框608。
在方框608中,RNG單元136重新開(kāi)始累積隨機(jī)數(shù)。即,產(chǎn)生器選擇信號(hào)252所選取的隨機(jī)位產(chǎn)生器206或208,在隨機(jī)位產(chǎn)生器0 206的情況下,會(huì)依據(jù)直流偏壓信號(hào)296來(lái)產(chǎn)生隨機(jī)位;白化器216則依據(jù)原始位信號(hào)254,選擇性地白化這些位;CNT單元222根據(jù)CNT使能信號(hào)284,選擇性地執(zhí)行連續(xù)隨機(jī)數(shù)產(chǎn)生器測(cè)試;串過(guò)濾裝置224根據(jù)過(guò)濾使能信號(hào)262及max_cnt信號(hào)258,選擇性地過(guò)濾移位寄存器218所累積的字節(jié);緩沖器0 242及緩沖器1 246依據(jù)fill_select信號(hào)264,累積隨機(jī)數(shù)據(jù)字節(jié);而計(jì)數(shù)器0 211及計(jì)數(shù)器1 213則依據(jù)fill_select信號(hào)264,計(jì)算緩沖器0 242及緩沖器1 246中所累積的字節(jié)數(shù)目。
在方框612中,由于CSR 226已被更新為目前工作所需要的控制值,所以控制邏輯244會(huì)清除TSPO標(biāo)志274。流程會(huì)結(jié)束于方框612。
現(xiàn)請(qǐng)參照?qǐng)D7,其是根據(jù)本發(fā)明,圖1微處理器100于執(zhí)行XSTORE指令時(shí)的運(yùn)行方框圖。XSTORE指令是軟件藉以將可用隨機(jī)數(shù)據(jù)字節(jié)的計(jì)數(shù)值及本身從R5 238存儲(chǔ)至系統(tǒng)內(nèi)存的工具。因?yàn)镽NG R5 238不存在于PentiumIII或IV中,所以需要Pentium III或IV指令集外的新指令,以存儲(chǔ)RNG R5238。有利的是,XSTORE指令會(huì)以整體不可分割的方式,將計(jì)數(shù)值及數(shù)據(jù)字節(jié)寫(xiě)入內(nèi)存,便于以RNG單元136進(jìn)行多任務(wù)操作,如此處所述。即,XSTORE指令是不可中斷的。因此,當(dāng)某工作執(zhí)行XSTORE指令時(shí),另一工作不可中斷XSTORE指令來(lái)修改要藉由XSTORE指令,寫(xiě)入系統(tǒng)內(nèi)存的可用字節(jié)計(jì)數(shù)或隨機(jī)數(shù)據(jù)字節(jié)。因此,藉由整體不可分割的方式寫(xiě)入數(shù)據(jù)及計(jì)數(shù)值,XSTORE指令提供了數(shù)量可變的隨機(jī)數(shù)據(jù)字節(jié),本質(zhì)上有利地便于多任務(wù)的進(jìn)行。
圖7是顯示XSTORE指令的格式,其為XSTORE memaddr,XMM5Memaddr會(huì)指定系統(tǒng)內(nèi)存502中的內(nèi)存地址。XSTORE指令的運(yùn)行與MOVAPS指令類似,除了所指定的XMM寄存器不會(huì)存儲(chǔ)至系統(tǒng)內(nèi)存;取而代之的是,若指定了XMM5 374,則R5 238會(huì)被存至系統(tǒng)內(nèi)存。即,R5 238會(huì)遮蔽XMM5 374。XSTORE會(huì)將圖3的可用有效隨機(jī)數(shù)據(jù)字節(jié)362的計(jì)數(shù)值,從R5 238移到系統(tǒng)內(nèi)存502中memaddr的位置702,如圖所示。此外,XSTORE將計(jì)數(shù)值362所指定的有效隨機(jī)字節(jié)的數(shù)據(jù)364,移到系統(tǒng)內(nèi)存502中緊鄰可用字節(jié)計(jì)數(shù)702的位置704,如圖所示。
在一具體實(shí)施例中,XSTORE指令的運(yùn)算碼值為0x0F 0x5B,其后接著x86指令所指定的標(biāo)準(zhǔn)mod R/M寄存器及地址格式字節(jié)。在另一具體實(shí)施例中,XSTORE指令的運(yùn)算碼值為0x0F 0xA7 0xC0。在一具體實(shí)施例中,XSTORE指令要求寄存器文件108中的ESEDI寄存器來(lái)指定memaddr,即,指到要存儲(chǔ)計(jì)數(shù)及隨機(jī)數(shù)據(jù)字節(jié)的起始內(nèi)存地址。在一具體實(shí)施例中,XSTORE不允許區(qū)段重迭。若XSTORE指令指定了SSE寄存器352的其中一個(gè),而非XMM5 374,則結(jié)果會(huì)呈未定狀態(tài)。
在一具體實(shí)施例中,微處理器100存儲(chǔ)在系統(tǒng)內(nèi)存的隨機(jī)數(shù)據(jù)字節(jié)704的數(shù)目,是等于也寫(xiě)入系統(tǒng)內(nèi)存的可用字節(jié)計(jì)數(shù)702。
在另一具體實(shí)施例中,微處理器100存儲(chǔ)在系統(tǒng)內(nèi)存的隨機(jī)數(shù)據(jù)字節(jié)704的數(shù)目,是等于一個(gè)比RNG R5 238中的字節(jié)還少的數(shù)目。即,若RNG R5 238為16個(gè)字節(jié)的寄存器,可存儲(chǔ)多達(dá)15個(gè)隨機(jī)數(shù)據(jù)字節(jié)364及一個(gè)字節(jié)的可用字節(jié)計(jì)數(shù)362,則微處理器100會(huì)將16個(gè)字節(jié)存至系統(tǒng)內(nèi)存50215個(gè)字節(jié)的隨機(jī)數(shù)據(jù)存到隨機(jī)數(shù)據(jù)字節(jié)704的位置,而一個(gè)計(jì)數(shù)字節(jié)則存到可用字節(jié)計(jì)數(shù)702的位置。然而,在寫(xiě)入系統(tǒng)內(nèi)存502的15個(gè)字節(jié)中,某些可能不是有效的。在一具體實(shí)施例中,寫(xiě)入內(nèi)存的字節(jié)的數(shù)目都為2的次方。只有前N個(gè)字節(jié)是有效的,其中N為可用字節(jié)計(jì)數(shù)702。
在此具體實(shí)施例中,RNG單元136會(huì)清除XSTORE運(yùn)算所指涉的緩沖器(即,圖2的緩沖器0 242或緩沖器1 246)。藉由清除緩沖器,微處理器100可避免各個(gè)工作看到彼此的隨機(jī)數(shù)據(jù)所產(chǎn)生的問(wèn)題,而提高安全性。例如,假設(shè)第一工作執(zhí)行第一XSTORE運(yùn)算,將15個(gè)字節(jié)的隨機(jī)數(shù)據(jù)從緩沖器0242存儲(chǔ)到系統(tǒng)內(nèi)存,并執(zhí)行第二XSTORE運(yùn)算,將15個(gè)字節(jié)的隨機(jī)數(shù)據(jù)從緩沖器1 246存儲(chǔ)到系統(tǒng)內(nèi)存;然后操作系統(tǒng)切換到第二工作,其會(huì)在RNG單元136將任何隨機(jī)數(shù)據(jù)字節(jié)累積到緩沖器0 242之前,立即執(zhí)行XSTORE運(yùn)算。若在第一XSTORE運(yùn)算后,RNG單元136未清除緩沖器0 242,則第一工作所接收到的隨機(jī)數(shù)據(jù)也會(huì)存儲(chǔ)到第二工作的內(nèi)存位置,如此會(huì)使第二工作看到第一工作的隨機(jī)數(shù)據(jù)。
在一具體實(shí)施例中,XSTORE指令指定了要存至系統(tǒng)內(nèi)存的最大數(shù)目的隨機(jī)數(shù)據(jù)字節(jié)。在此具體實(shí)施例中,該最大數(shù)目是指定在寄存器文件108的其中一個(gè)一般用途寄存器中,如ECX。在此具體實(shí)施例中,若store_select信號(hào)266所選取的緩沖器0 242或緩沖器1 246中的可用字節(jié)多于ECX中所指定的最大數(shù)目,則微處理器100只會(huì)存儲(chǔ)ECX中所指定的最大數(shù)目的字節(jié);否則,XSTORE指令會(huì)存儲(chǔ)可用數(shù)目的有效字節(jié)。在前述任一種情況下,XSTORE指令都會(huì)將存至系統(tǒng)內(nèi)存502的數(shù)據(jù)字節(jié)位置704的有效隨機(jī)數(shù)據(jù)字節(jié)的數(shù)量,存儲(chǔ)到可用字節(jié)計(jì)數(shù)位置702。
在一具體實(shí)施例中,XSTORE指令指定了要存至系統(tǒng)內(nèi)存的所需數(shù)目的隨機(jī)數(shù)據(jù)字節(jié)。在此具體實(shí)施例中,該所需數(shù)目是指定在寄存器文件108的其中一個(gè)一般用途寄存器中,如ECX。在此具體實(shí)施例中,XSTORE指令是加上一x86 REP前置碼(prefix)。在此具體實(shí)施例中,REP XSTORE指令并非需連續(xù)執(zhí)行的。即,因?yàn)樗璧碾S機(jī)字節(jié)的數(shù)目可能會(huì)很大,所以REPXSTORE是可中斷的。然而,由于所存儲(chǔ)的隨機(jī)數(shù)據(jù)字節(jié)的數(shù)目是不可變的(即,軟件知道將要存至內(nèi)存的隨機(jī)數(shù)據(jù)字節(jié)的數(shù)目),所以指令不必連續(xù)執(zhí)行。
現(xiàn)請(qǐng)參照?qǐng)D8,其是根據(jù)本發(fā)明,圖1的微處理器100執(zhí)行來(lái)自于圖3XMM5寄存器的XSTORE指令的運(yùn)行流程圖。流程從方框802開(kāi)始。
在方框802中,對(duì)于圖1的指令轉(zhuǎn)譯器106通知XSTORE指令已轉(zhuǎn)譯,中斷單元146會(huì)響應(yīng)以將中斷禁止。流程繼續(xù)進(jìn)行判斷方框804。
在判斷方框804中,圖2的控制邏輯244會(huì)檢查T(mén)SPO標(biāo)志274,以判斷標(biāo)志是否設(shè)定。若設(shè)定,則流程會(huì)繼續(xù)進(jìn)行方框806。否則,流程會(huì)繼續(xù)進(jìn)行方框816。
在方框806中,RNG單元136會(huì)將XMM0 372的內(nèi)容復(fù)制到CSR 226,并且會(huì)清除TSPO標(biāo)志274。由于TSPO標(biāo)志274是表示自前次XSTORE或XLOAD執(zhí)行以后,工作切換已可能發(fā)生,就如圖4的步驟402中,從系統(tǒng)內(nèi)存加載XMM0 372所表示的,所以CSR 226可能不具有目前執(zhí)行XSTORE指令的工作所需的正確控制值。因此,XSTORE指令必須以正確的控制值來(lái)更新CSR 226。正確值是存儲(chǔ)于XMM0 372中,此因當(dāng)工作初始時(shí),該正確控制值是藉由執(zhí)行XLOAD而被加載XMM0 372及CSR 226中,而后當(dāng)操作系統(tǒng)切回至目前工作時(shí),正確控制值也被回存至XMM0 372。流程會(huì)繼續(xù)進(jìn)行方框808。
在方框808中,因?yàn)槔鄯e于緩沖器0 242及緩沖器1 246的隨機(jī)數(shù)據(jù)字節(jié),不會(huì)隨著CSR中新工作所需的新控制值而產(chǎn)生,其中這些新控制值是在方框806中被復(fù)制到CSR 226中,所以RNG單元136會(huì)響應(yīng)CSR 226的加載,而丟棄緩沖器0 242及緩沖器1 246的內(nèi)容。流程會(huì)繼續(xù)進(jìn)行方框812。
在方框812中,因?yàn)樵诜娇?08,會(huì)丟棄在緩沖器0 242及緩沖器1 246中的隨機(jī)數(shù)據(jù)字節(jié),所以在計(jì)數(shù)器0 211及計(jì)數(shù)器1 213中,RNG單元136會(huì)將可用字節(jié)計(jì)數(shù)清除為0。流程會(huì)繼續(xù)進(jìn)行方框814。
在方框814中,RNG單元136會(huì)重新開(kāi)始隨機(jī)數(shù)的累積,如圖6的方框608部分所述。流程會(huì)繼續(xù)進(jìn)行方框816。
在方框816中,RNG單元136會(huì)連續(xù)地將R5 238存儲(chǔ)于系統(tǒng)內(nèi)存502中,由XSTORE指令所指定的內(nèi)存地址,其會(huì)保持store_select信號(hào)266所指定的計(jì)數(shù)器0 211或計(jì)數(shù)器1 213的值,以及store_select信號(hào)266所指定的緩沖器0 242或緩沖器1 246中的有效隨機(jī)數(shù)據(jù)字節(jié),如圖7所示。流程會(huì)繼續(xù)進(jìn)行方框818。
在方框818中,因?yàn)樵诜娇?16,有效隨機(jī)數(shù)據(jù)字節(jié)已被存儲(chǔ)至內(nèi)存的動(dòng)作所消耗,所以控制邏輯244會(huì)將清除信號(hào)223設(shè)為真,以清除store_select信號(hào)266所指定的計(jì)數(shù)器0 211或計(jì)數(shù)器1 213。流程會(huì)繼續(xù)進(jìn)行方框822。
在方框822中,控制邏輯244會(huì)更新store_select信號(hào)266。即,若store_select信號(hào)266為0,則控制邏輯244會(huì)將store_select信號(hào)266更新為1。反之,若store_select信號(hào)266為1,則控制邏輯244會(huì)將store_select信號(hào)266更新為0。流程會(huì)繼續(xù)進(jìn)行方框824。
在方框824中,因?yàn)橐淹瓿蒟STORE指令的執(zhí)行,所以中斷單元146會(huì)使中斷使能。流程會(huì)結(jié)束于方框824。
現(xiàn)在參照?qǐng)D9,其是根據(jù)本發(fā)明,圖1微處理器100進(jìn)行關(guān)于隨機(jī)數(shù)產(chǎn)生的多任務(wù)運(yùn)行范例的動(dòng)作流程圖。圖9的流程圖是顯示典型的狀況,其中兩個(gè)工作都初始化RNG單元136,并執(zhí)行XSTORE指令,將隨機(jī)數(shù)據(jù)字節(jié)存儲(chǔ)至內(nèi)存。圖9是顯示本發(fā)明如何有利支持兩個(gè)工作(工作A及工作B)間的多任務(wù),即使操作系統(tǒng)不支持存儲(chǔ)及回存RNG單元136的狀態(tài)(即CSR226)。流程從方框902開(kāi)始。
在方框902中,會(huì)發(fā)生重置,這會(huì)使控制邏輯244清除TSPO標(biāo)志274。流程會(huì)繼續(xù)進(jìn)行方框904。
在方框904中,操作系統(tǒng)會(huì)啟動(dòng)工作A,并且工作A的初始碼會(huì)執(zhí)行XLOAD至XMM0 372的指令,以所要的控制值(表示為值A(chǔ))來(lái)初始化CSR226及XMM0 372。流程會(huì)繼續(xù)進(jìn)行方框906。
在方框906中,根據(jù)圖6的方框604、606、608以及612,RNG單元136會(huì)響應(yīng)XLOAD,而丟棄緩沖器0242及緩沖器1246的內(nèi)容、清除計(jì)數(shù)器0211及計(jì)數(shù)器1213、重新開(kāi)始隨機(jī)數(shù)的產(chǎn)生與累積以及清除TSPO標(biāo)志274。流程會(huì)繼續(xù)進(jìn)行方框908。
在方框908中,工作A執(zhí)行XSTORE指令,以存儲(chǔ)依據(jù)方框904加載至CSR 226的控制值A(chǔ)所產(chǎn)生的隨機(jī)數(shù)據(jù)。流程會(huì)繼續(xù)進(jìn)行方框912。
在方框912中,為了執(zhí)行前一方框的XSTORE,RNG單元136會(huì)連續(xù)地將于方框906重新開(kāi)始后所累積的計(jì)數(shù)值及數(shù)據(jù),存儲(chǔ)至系統(tǒng)內(nèi)存,如圖7及圖8所示。流程會(huì)繼續(xù)進(jìn)行方框914。
在方框914中,操作系統(tǒng)會(huì)執(zhí)行從工作A到工作B的工作切換。其中,操作系統(tǒng)會(huì)將XMM0 372的值(其包含控制值A(chǔ))存儲(chǔ)至系統(tǒng)內(nèi)存,以保留工作A的狀態(tài)。然而,操作系統(tǒng)不知道CSR 226的情況,所以操作系統(tǒng)不會(huì)將CSR 226存儲(chǔ)至系統(tǒng)內(nèi)存以保留其狀態(tài)。流程會(huì)繼續(xù)進(jìn)行方框916。
在方框916中,根據(jù)圖4的步驟404,RNG單元136會(huì)響應(yīng)在方框914的XMM0 372的加載,而設(shè)定TSPO標(biāo)志274。流程會(huì)繼續(xù)進(jìn)行方框918。
在方框918中,操作系統(tǒng)啟動(dòng)工作B,并且工作B的初始碼會(huì)執(zhí)行XLOAD至XMM0 372的指令,以所要的控制值(表示為值B)來(lái)初始化CSR226及XMM0 372。流程會(huì)繼續(xù)進(jìn)行方框922。
在方框922中,根據(jù)圖6的方框604、606、608以及612,RNG單元136會(huì)響應(yīng)XLOAD,而丟棄緩沖器0 242及緩沖器1 246的內(nèi)容、清除計(jì)數(shù)器0211及計(jì)數(shù)器1 213、重新開(kāi)始隨機(jī)數(shù)的產(chǎn)生與累積以及清除TSPO標(biāo)志274。流程會(huì)繼續(xù)進(jìn)行方框924。
在方框924中,工作B執(zhí)行XSTORE指令,以存儲(chǔ)依據(jù)方框918加載至CSR 226的控制值B所產(chǎn)生的隨機(jī)數(shù)據(jù)。流程會(huì)繼續(xù)進(jìn)行方框924。
在方框926中,為了執(zhí)行前一方框的XSTORE,RNG單元136會(huì)連續(xù)地將于方框922重新開(kāi)始后所累積的計(jì)數(shù)值及數(shù)據(jù),存儲(chǔ)至系統(tǒng)內(nèi)存,如圖及圖所示。流程會(huì)繼續(xù)進(jìn)行方框928。
在方框928中,操作系統(tǒng)會(huì)執(zhí)行從工作B到工作A的工作切換。其中,操作系統(tǒng)會(huì)將XMM0 372的值(其包含控制值B)存儲(chǔ)至系統(tǒng)內(nèi)存,以保留工作B的狀態(tài)。然而,操作系統(tǒng)不知道CSR 226的情況,所以操作系統(tǒng)不會(huì)將CSR 226存儲(chǔ)至系統(tǒng)內(nèi)存以保留其狀態(tài)。此外,操作系統(tǒng)會(huì)回存工作A的狀態(tài),其包括將先前在方框914所保留的值A(chǔ),從系統(tǒng)內(nèi)存載入到XMM0 372。流程會(huì)繼續(xù)進(jìn)行方框932。
在方框932中,根據(jù)圖4的步驟404,RNG單元136會(huì)響應(yīng)在方框928的XMM0 372的加載,而設(shè)定TSPO標(biāo)志274。流程會(huì)繼續(xù)進(jìn)行方框934。
在方框934中,工作A執(zhí)行XSTORE指令,以存儲(chǔ)依據(jù)方框904加載至CSR 226的控制值A(chǔ)所產(chǎn)生的隨機(jī)數(shù)據(jù)。然而,在方框918,CSR 226中的值A(chǔ)會(huì)被覆寫(xiě)。因此,目前累積于緩沖器0 242及緩沖器1 246的隨機(jī)數(shù)據(jù)字節(jié)并非依據(jù)值A(chǔ)產(chǎn)生,而是依據(jù)值B而產(chǎn)生。流程會(huì)繼續(xù)進(jìn)行方框936。
在方框936中,RNG單元136依圖8的方框804,判斷TSPO標(biāo)志274已設(shè)定,于是會(huì)依據(jù)圖8的方框806,將XMM0 372的內(nèi)容復(fù)制到CSR 226,藉以將值A(chǔ)回存至CSR 226。此外,由于CSR 226已被回存,所以根據(jù)方框806,RNG單元136會(huì)清除TSPO標(biāo)志274。流程會(huì)繼續(xù)進(jìn)行方框938。
在方框938中,根據(jù)圖8的方框808、812以及814,RNG單元136會(huì)響應(yīng)方框936中復(fù)制到CSR 226的動(dòng)作,而丟棄緩沖器0 242及緩沖器1 246的內(nèi)容、清除計(jì)數(shù)器0 211與計(jì)數(shù)器1 213以及重新開(kāi)始隨機(jī)數(shù)的產(chǎn)生及累積。流程會(huì)繼續(xù)進(jìn)行方框942。
在方框942中,為執(zhí)行方框934的XSTORE,RNG單元136會(huì)連續(xù)地將于先前的方框重新開(kāi)始后所累積的計(jì)數(shù)值及數(shù)據(jù),存儲(chǔ)至系統(tǒng)內(nèi)存,如圖7及圖8所示。在此情況下,由于在先前方框中,已清除計(jì)數(shù)器0 211及計(jì)數(shù)器1 213,并丟棄緩沖器0 242及緩沖器1 246的內(nèi)容,所以計(jì)數(shù)值為0,且未有有效隨機(jī)數(shù)據(jù)字節(jié)存儲(chǔ)到系統(tǒng)內(nèi)存中。流程會(huì)繼續(xù)進(jìn)行方框944。
在方框944中,工作A執(zhí)行XSTORE指令,以存儲(chǔ)依據(jù)方框904加載至CSR 226的控制值A(chǔ)所產(chǎn)生的隨機(jī)數(shù)據(jù),其中CSR 226在方框936,已回存為值A(chǔ)。流程會(huì)繼續(xù)進(jìn)行方框946。
在方框946中,為執(zhí)行先前方框的XSTORE,RNG單元136會(huì)連續(xù)地將于方框938重新開(kāi)始后所累積的計(jì)數(shù)值及數(shù)據(jù),存儲(chǔ)至系統(tǒng)內(nèi)存,如圖7及圖8所示。流程會(huì)繼續(xù)進(jìn)行方框948。
在方框948中,工作A執(zhí)行XSTORE指令,以存儲(chǔ)依據(jù)方框904加載至CSR 226的控制值A(chǔ)所產(chǎn)生的隨機(jī)數(shù)據(jù),其中CSR 226在方框936,已回存為值A(chǔ)。流程會(huì)繼續(xù)進(jìn)行方框952。
在方框952中,為執(zhí)行先前方框的XSTORE,RNG單元136會(huì)將于方框938重新開(kāi)始后所累積的計(jì)數(shù)值及數(shù)據(jù),扣掉方框944中由前次XSTORE所存儲(chǔ)的字節(jié),再將結(jié)果連續(xù)地存儲(chǔ)至系統(tǒng)內(nèi)存,如圖7及圖8所示。流程則結(jié)束于方框952。
現(xiàn)在參照?qǐng)D10,其是根據(jù)本發(fā)明,圖1微處理器100中,圖2 RNG單元136的串過(guò)濾裝置224的方框圖。
配合本發(fā)明的目的,前導(dǎo)的1位定義為一個(gè)字節(jié)開(kāi)頭的連續(xù)1位。一個(gè)字節(jié)可能包含0到8個(gè)前導(dǎo)的1位。例如,字節(jié)00011111具有5個(gè)前導(dǎo)的1位;字節(jié)11111110具有0個(gè)前導(dǎo)的1位;而字節(jié)11111111則具有8個(gè)前導(dǎo)的1位。
配合本發(fā)明的目的,前導(dǎo)的0位定義為一個(gè)字節(jié)開(kāi)頭的連續(xù)0位。一個(gè)字節(jié)可能包含0到8個(gè)前導(dǎo)的0位。例如,字節(jié)11100000具有5個(gè)前導(dǎo)的0位;字節(jié)00000001具有0個(gè)前導(dǎo)的0位;而字節(jié)00000000則具有8個(gè)前導(dǎo)的0位。
配合本發(fā)明的目的,尾端的1位是定義為一個(gè)字節(jié)結(jié)尾的連續(xù)1位;然而一個(gè)均為1的字節(jié)則定義為沒(méi)有尾端的1位。一個(gè)字節(jié)可能包含0到7個(gè)尾端的1位。例如,字節(jié)11110000具有4個(gè)尾端的1位;字節(jié)11111110具有7個(gè)尾端的1位;字節(jié)01111111具有0個(gè)尾端的1位;而字節(jié)11111111則具有0個(gè)尾端的1位。
配合本發(fā)明的目的,尾端的0位是定義為一個(gè)字節(jié)結(jié)尾的連續(xù)0位;然而一個(gè)均為0的字節(jié)則定義為沒(méi)有尾端的0位。一個(gè)字節(jié)可能包含0到7個(gè)尾端的0位。例如,字節(jié)00001111具有4個(gè)尾端的0位;字節(jié)00000001具有7個(gè)尾端的0位;字節(jié)10000000具有0個(gè)尾端的0位;而字節(jié)00000000則具有0個(gè)尾端的1位。
串過(guò)濾裝置224包括比較邏輯1002。比較邏輯1002會(huì)從圖2的移位寄存器218接收隨機(jī)數(shù)據(jù)字節(jié)298。比較邏輯1002會(huì)檢查隨機(jī)數(shù)據(jù)字節(jié)298中的位值,并且產(chǎn)生用于檢測(cè)1及0的連續(xù)位串的各種信號(hào),如以下所述。
比較邏輯1002會(huì)產(chǎn)生num_leading_ones信號(hào)1022A,以指定隨機(jī)數(shù)據(jù)字節(jié)298中前導(dǎo)1位的數(shù)目。
比較邏輯1002會(huì)產(chǎn)生num_trailing_ones信號(hào)1028A,以指定隨機(jī)數(shù)據(jù)字節(jié)298中尾端1位的數(shù)目。
比較邏輯1002也會(huì)產(chǎn)生all_ones信號(hào)1048A,若隨機(jī)數(shù)據(jù)字節(jié)298包含均為1的位,則此信號(hào)為真。
比較邏輯1002也會(huì)產(chǎn)生leading_ones信號(hào)1036A,若隨機(jī)數(shù)據(jù)字節(jié)298包含前導(dǎo)的1位,則此信號(hào)為真。
比較邏輯1002也會(huì)產(chǎn)生trailing_ones信號(hào)1038A,若隨機(jī)數(shù)據(jù)字節(jié)298包含尾端的1位,則此信號(hào)為真。
串過(guò)濾裝置224也包括第一計(jì)數(shù)器1016A,以存儲(chǔ)連續(xù)1位的現(xiàn)時(shí)計(jì)數(shù)。在一具體實(shí)施例中,計(jì)數(shù)器1016A包括一6位的寄存器。計(jì)數(shù)器1016A的輸出為ones_cnt信號(hào)1024A。
串過(guò)濾裝置224也包括第一加法器1012A,其將num_leading_ones信號(hào)1022A與ones_cnt信號(hào)1024A相加,以產(chǎn)生new_ones_cnt信號(hào)1026A。
串過(guò)濾裝置224也包括四輸入端的第一多路復(fù)用器1014A。多路復(fù)用器1014A在其輸入端接收ones_cnt信號(hào)1024A、new_ones_cnt信號(hào)1026A、num_trailing_ones信號(hào)1028A以及固定(hard-coded)的零值1032A。多路復(fù)用器1014A會(huì)依據(jù)one_select信號(hào)1042A,選取其中一輸入端,輸出到計(jì)數(shù)器1016A。
比較邏輯1002會(huì)產(chǎn)生num_leading_zeros信號(hào)1022B,以指定隨機(jī)數(shù)據(jù)字節(jié)298中前導(dǎo)0位的數(shù)目。
比較邏輯1002會(huì)產(chǎn)生num_trailing_zeros信號(hào)1028B,以指定隨機(jī)數(shù)據(jù)字節(jié)298中尾端0位的數(shù)目。
比較邏輯1002也會(huì)產(chǎn)生all_zeros信號(hào)1048B,若隨機(jī)數(shù)據(jù)字節(jié)298包含均為0的位,則此信號(hào)為真。
比較邏輯1002也會(huì)產(chǎn)生leading_zeros信號(hào)1036B,若隨機(jī)數(shù)據(jù)字節(jié)包含前導(dǎo)的0位,則此信號(hào)為真。
比較邏輯1002也會(huì)產(chǎn)生trailing_zeros信號(hào)1038B,若隨機(jī)數(shù)據(jù)字節(jié)包含尾端的0位,則此信號(hào)為真。
串過(guò)濾裝置224也包括第二計(jì)數(shù)器1016B,以存儲(chǔ)連續(xù)0位的現(xiàn)時(shí)計(jì)數(shù)。在一具體實(shí)施例中,計(jì)數(shù)器1016B包括一6位的寄存器。計(jì)數(shù)器1016B的輸出為zeros_cnt信號(hào)1024B。
串過(guò)濾裝置224也包括第二加法器1012B,其將num_leading_zeros信號(hào)1022B與zeros_cnt信號(hào)1024B相加,以產(chǎn)生信號(hào)new_zeros_cnt信號(hào)1026B。
串過(guò)濾裝置224也包括四輸入端的第二多路復(fù)用器1014B。多路復(fù)用器1014B在其輸入端接收zeros_cnt信號(hào)1024B、new_zeros_cnt信號(hào)1026B、num_trailing_zeros信號(hào)1028B以及固定的零值1032B。多路復(fù)用器1014B會(huì)依據(jù)zero_select信號(hào)1042B,選取其中一輸入端,輸出到計(jì)數(shù)器1016B。
串過(guò)濾裝置224也包括第一比較器1046A,其將new_ones_cnt信號(hào)1026A與圖2中的max_cnt信號(hào)258做比較。若new_ones_cnt信號(hào)1026A大于max_cnt信號(hào)258,則比較器1046A會(huì)產(chǎn)生真值的ones_exceeded信號(hào)1034A;否則,比較器1046A產(chǎn)生偽值的ones_exceeded信號(hào)1034A。
串過(guò)濾裝置224也包括第二比較器1046B,其將new_zeros_cnt信號(hào)1026B與圖2中的max_cnt信號(hào)258做比較。若new_zeros_cnt信號(hào)1026B大于max_cnt信號(hào)258,則比較器1046B會(huì)產(chǎn)生真值的zeros_exceeded信號(hào)1034B;否則,比較器1046B產(chǎn)生偽值的zeros_exceeded信號(hào)1034B。
串過(guò)濾裝置224也包括兩輸入端的或門(mén)(OR gate)1004,其輸入端連接至比較器1046A及比較器1046B的輸出端。或門(mén)1004在其輸入端接收ones_exceeded信號(hào)1034A及zeros_exceeded信號(hào)1034B?;蜷T(mén)1004會(huì)產(chǎn)生max_cnt_exceeded信號(hào)1044,以作為選擇邏輯1006的輸入。
串過(guò)濾裝置224也包括兩輸入端的與門(mén)(AND gate)1008,其連接至或門(mén)1004。與門(mén)1008的一輸入端接收來(lái)自于或門(mén)1004的max_cnt_exceeded信號(hào)1044,而另一輸入端則接收?qǐng)D2的過(guò)濾使能信號(hào)262。與門(mén)1008的輸出是圖2的過(guò)濾失敗信號(hào)256。
串過(guò)濾裝置224也包括選擇邏輯1006,其接收all_ones信號(hào)1048A、leading_ones信號(hào)1036A、trailing_ones信號(hào)1038A、max_cnt_exceeded信號(hào)1044、leading_zeros信號(hào)1036B、trailing_zeros信號(hào)1038B以及all_zeros信號(hào)1048B。選擇邏輯1006根據(jù)以下的程序代碼,來(lái)產(chǎn)生one_select信號(hào)1042A及zero_select信號(hào)1042B。
<pre listing-type="program-listing"><![CDATA[retain_counts=max_cnt_exceeded &amp; filter enable;increment_zeros=all_zeros &amp; (!retain_counts);load_zeros=trailing_zeros &amp; (!retain_counts)&amp;(!increment_zeros);clear_zeros=(!retain_counts)&amp;(!increment_zeros)&amp;(!load_zeros);increment_ones=all_ones &amp; (!retain_counts);load_ones=trailing_ones &amp; (!retain_counts)&amp;(!increment_ones);clear_ones=(!retain_counts)&amp;(!increment_ones)&amp;(!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}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}]]></pre>現(xiàn)在參照?qǐng)D11,其是根據(jù)本發(fā)明,圖10的串過(guò)濾裝置224的運(yùn)行流程圖。流程從方框1102開(kāi)始。
在方框1102中,計(jì)數(shù)器1016A及1016B會(huì)初始化為0。流程會(huì)繼續(xù)進(jìn)行方框1104。
在方框1104中,圖1的RNG單元136產(chǎn)生1字節(jié)的隨機(jī)數(shù)據(jù)于圖2的隨機(jī)字節(jié)信號(hào)298中,而比較邏輯1002則依據(jù)隨機(jī)數(shù)據(jù)字節(jié)的檢查結(jié)果,產(chǎn)生其信號(hào)。流程會(huì)繼續(xù)進(jìn)行方框1106。
在方框1106中,加法器1012A將num_leading_ones 1022A與ones_cnt1024A相加,以產(chǎn)生new_ones_cnt 1026A,而加法器1012B則將num_leading_zeros 1022B與zeros_cnt 1024B相加,以產(chǎn)生new_zeros_cnt1026B。流程會(huì)繼續(xù)進(jìn)行判斷方框1112。
在判斷方框1112中,選擇邏輯1006檢查max_cnt_exceeded 1044,以判斷連續(xù)0或1的數(shù)目是否已超過(guò)max_cnt_258。若是,流程會(huì)繼續(xù)進(jìn)行判斷方框1114。否則,流程會(huì)繼續(xù)進(jìn)行判斷方框1124。
在判斷方框1114中,與門(mén)1008檢查過(guò)濾使能信號(hào)262,以判斷串過(guò)濾裝置224是否使能。若是,與門(mén)1008會(huì)產(chǎn)生真值于圖2的過(guò)濾失敗信號(hào)256,即,在方框1116中,將過(guò)濾失敗信號(hào)設(shè)為真。流程會(huì)繼續(xù)進(jìn)行方框1118。
在方框1118中,控制邏輯244響應(yīng)具真值的過(guò)濾失敗信號(hào)256,而不將圖2的遞增信號(hào)221設(shè)為真,并且不使隨機(jī)字節(jié)298被加載緩沖器0 242或緩沖器1 246,即使移位寄存器218已產(chǎn)生真值的字節(jié)產(chǎn)生信號(hào)282。因此,由于隨機(jī)字節(jié)298已使連續(xù)1或0的數(shù)目超過(guò)max_cnt 258,所以RNG單元136會(huì)丟棄隨機(jī)字節(jié)298。流程會(huì)繼續(xù)進(jìn)行方框1122。
在方框1122中,選擇邏輯1006于one_select信號(hào)1042A及zero_select信號(hào)1042B中,都產(chǎn)生3的值,以使多路復(fù)用器1014A及1014B分別保留目前的ones_cnt 1024A及zeros_cnt 1024B。流程接著返回方框1104。
在判斷方框1124中,選擇邏輯1006檢查all_zeros信號(hào)1048B,以判斷隨機(jī)數(shù)據(jù)字節(jié)298是否均為0。若是,流程會(huì)繼續(xù)進(jìn)行方框1126。否則,流程會(huì)繼續(xù)進(jìn)行判斷方框1128。
在方框1126中,選擇邏輯1006于zero_select信號(hào)1042B中產(chǎn)生2的值,以使多路復(fù)用器1014B選取new_zeros_cnt信號(hào)1026B,并且于one_select信號(hào)1042A中產(chǎn)生0的值,以使多路復(fù)用器1014A選取固定的0值輸入1032A。流程會(huì)繼續(xù)進(jìn)行方框1148。
在判斷方框1128中,選擇邏輯1006檢查trailing_zeros信號(hào)1038B,以判斷隨機(jī)數(shù)據(jù)字節(jié)298是否包含任何的尾端0。若是,流程會(huì)繼續(xù)進(jìn)行方框1132。否則,流程會(huì)繼續(xù)進(jìn)行方框1134。
在方框1132中,選擇邏輯1006于zero_select信號(hào)1042B中產(chǎn)生1的值,以使多路復(fù)用器1014B選取num_trailing_zeros信號(hào)1028B,并且于信號(hào)1042A中產(chǎn)生0的值,以使多路復(fù)用器1014A選取固定的0值輸入1032A。流程會(huì)繼續(xù)進(jìn)行方框1148。
在方框1134中,選擇邏輯1006于zero_select信號(hào)1042B中產(chǎn)生0的值,以使多路復(fù)用器1014B選擇固定的0值輸入1032B。流程會(huì)繼續(xù)進(jìn)行判斷方框1136。
在判斷方框1136中,選擇邏輯1006檢查all_ones信號(hào)1048A,以判斷隨機(jī)數(shù)據(jù)字節(jié)298是否均為1。若是,流程會(huì)繼續(xù)進(jìn)行方框1138。否則,流程會(huì)繼續(xù)進(jìn)行判斷方框1142。
在方框1138中,選擇邏輯1006于one_select信號(hào)1042A中產(chǎn)生2的值,以使多路復(fù)用器1014A選擇new_ones_cnt信號(hào)1026A。流程會(huì)繼續(xù)進(jìn)行方框1148。
在判斷方框1142中,選擇邏輯1006檢查trailing_ones信號(hào)1038A,以判斷隨機(jī)數(shù)據(jù)字節(jié)298是否包含任何的尾端1。若是,流程會(huì)繼續(xù)進(jìn)行方框1144。否則,流程會(huì)繼續(xù)進(jìn)行方框1146。
在方框1144中,選擇邏輯1006于one_select信號(hào)1042A中產(chǎn)生1的值,以使多路復(fù)用器1014A選擇num_trailing_ones信號(hào)1042A。流程會(huì)繼續(xù)進(jìn)行方框1148。
在方框1146中,選擇邏輯1006于one_select信號(hào)1042A中產(chǎn)生0的值,以使多路復(fù)用器1014A選擇固定的0值輸入1032A。流程會(huì)繼續(xù)進(jìn)行方框1148。
在方框1148中,控制邏輯244使隨機(jī)數(shù)據(jù)字節(jié)298被加載由fill_select信號(hào)264所選擇的緩沖器0 242或緩沖器1 246中,并將遞增信號(hào)221設(shè)為真,以遞增由fill_select信號(hào)264所選擇的計(jì)數(shù)器0 211或計(jì)數(shù)器1 213。流程接著返回方框1104。
現(xiàn)在參照?qǐng)D12,其是根據(jù)本發(fā)明的另一具體實(shí)施例,圖l微處理器100執(zhí)行XSTORE指令的運(yùn)行方框圖。圖12的XSTORE指令是類似于圖7的XSTORE指令,不過(guò)在此具體實(shí)施例中,有效隨機(jī)數(shù)據(jù)字節(jié)的計(jì)數(shù)值會(huì)被加載寄存器文件108的其中一個(gè)一般用途寄存器中,如EAX 1202寄存器,而不會(huì)存儲(chǔ)至系統(tǒng)內(nèi)存。有利的是,與圖7的XSTORE指令類似,圖12的XSTORE指令會(huì)連續(xù)地將計(jì)數(shù)值加載EAX,并將隨機(jī)數(shù)據(jù)字節(jié)存儲(chǔ)至內(nèi)存,以促進(jìn)與RNG單元136的多任務(wù)運(yùn)行,且所存的有效隨機(jī)數(shù)據(jù)字節(jié)的數(shù)量,顯示于EAX中存儲(chǔ)的可用字節(jié)計(jì)數(shù)。也就是,圖12的XSTORE指令也是不可中斷的。
現(xiàn)在參照?qǐng)D13,其是根據(jù)本發(fā)明,圖2 RNG單元136的多重緩沖(multi-buffering)運(yùn)行的流程圖。流程從方框1302開(kāi)始。
在方框1302中,重置信號(hào)248被設(shè)為真。流程會(huì)繼續(xù)進(jìn)行方框1304。
在方框1304中,圖2的控制邏輯244將fill_select信號(hào)264及store_select信號(hào)266初始化為0,并響應(yīng)方框1302的重置動(dòng)作而清除計(jì)數(shù)器0211及計(jì)數(shù)器1213。流程會(huì)繼續(xù)進(jìn)行判斷方框1306。
在判斷方框1306中,控制邏輯244檢查xstore信號(hào)268,以判斷是否已執(zhí)行XSTORE指令。若是,流程會(huì)繼續(xù)進(jìn)行判斷方框1308。否則,流程會(huì)繼續(xù)進(jìn)行判斷方框1322。
在判斷方框1308中,控制邏輯244判斷由產(chǎn)生器選擇信號(hào)252所選擇的隨機(jī)位產(chǎn)生器0 206或隨機(jī)位產(chǎn)生器1 208的電源是否已關(guān)閉。若是,流程會(huì)繼續(xù)進(jìn)行方框1312。否則,流程會(huì)繼續(xù)進(jìn)行方框1314。
在方框1312中,控制邏輯244藉由power_cntrl信號(hào)231開(kāi)啟所選擇的隨機(jī)位產(chǎn)生器的電源。流程會(huì)繼續(xù)進(jìn)行方框1314。
在方框1314中,根據(jù)圖8的方框816及如圖7所示,微處理器100將由store_select信號(hào)266所選擇的計(jì)數(shù)器0 211或計(jì)數(shù)器1 213的值,以及由store_select信號(hào)266所選擇的緩沖器0 242或緩沖器1 246中的有效數(shù)據(jù)字節(jié),連續(xù)地存儲(chǔ)至系統(tǒng)內(nèi)存。流程會(huì)繼續(xù)進(jìn)行方框1316。
在方框1316中,控制邏輯244將清除信號(hào)223設(shè)為真,以清除由store select信號(hào)266所選擇的計(jì)數(shù)器0 211或計(jì)數(shù)器1 213。流程會(huì)繼續(xù)進(jìn)行方框1318。
在方框1318中,控制邏輯244更新store_select信號(hào)266,以選擇另一個(gè)緩沖器及計(jì)數(shù)器。在RNG單元136包含二個(gè)以上緩沖器的實(shí)施例中,store_select信號(hào)266包括多于1個(gè)的位,并且更新stores_elect信號(hào)266的動(dòng)作包括遞增store_select信號(hào)266,以及當(dāng)遞增超過(guò)緩沖器的數(shù)目時(shí),會(huì)回歸為0。流程會(huì)繼續(xù)進(jìn)行方框1322。
在判斷方框1322中,控制邏輯244檢查字節(jié)產(chǎn)生信號(hào)282是否為真及檢查過(guò)濾失敗信號(hào)256是否為偽,以判斷是否產(chǎn)生了良好的隨機(jī)數(shù)據(jù)字節(jié)。若已產(chǎn)生,流程會(huì)繼續(xù)進(jìn)行方框1324。否則,流程會(huì)繼續(xù)進(jìn)行判斷方框1306。
在方框1324中,控制邏輯244將良好的隨機(jī)數(shù)據(jù)字節(jié)加載由fill_select信號(hào)264所選擇的緩沖器0 242或緩沖器1 246中,并且遞增由fill_select信號(hào)264所選擇的計(jì)數(shù)器0 211或計(jì)數(shù)器1 213。流程會(huì)繼續(xù)進(jìn)行判斷方框1326。
在判斷方框1326中,控制邏輯244檢查由fill_select信號(hào)264所指定的full0信號(hào)229或full1信號(hào)227,以判斷由fill_select信號(hào)264所選擇的緩沖器0 242或緩沖器1 246是否已滿。若是,流程會(huì)繼續(xù)進(jìn)行方框1328。否則,流程會(huì)返回方框1306。
在方框1328中,控制邏輯244更新fill_select信號(hào)264。在RNG單元136包含二個(gè)緩沖器的實(shí)施例中,更新fill_select信號(hào)264的動(dòng)作包括切換fill_select信號(hào)264。在RNG單元136包括二個(gè)以上緩沖器的實(shí)施例中,fill_select信號(hào)264包括多于1個(gè)的位,并且更新fill_select信號(hào)264的動(dòng)作包括遞增fill_select信號(hào)264,以及當(dāng)遞增超過(guò)緩沖器的數(shù)目時(shí),會(huì)回歸為0。流程會(huì)繼續(xù)進(jìn)行判斷方框1332。
在判斷方框1332中,控制邏輯244檢查由方框1328更新的fill_select信號(hào)264所指定的full0信號(hào)229或full1信號(hào)227,以判斷由fill_select信號(hào)264所選擇的緩沖器0242或緩沖器1246是否已滿(即,判斷所有的緩沖器是否已滿)。若是,流程會(huì)繼續(xù)進(jìn)行方框1334。否則,流程會(huì)返回方框1306。
在方框1334中,由于所有的緩沖器已滿,控制邏輯244就藉由power_cntrl信號(hào)231,關(guān)閉隨機(jī)位產(chǎn)生器0206及隨機(jī)位產(chǎn)生器1208的電源。流程會(huì)返回判斷方框1306。
現(xiàn)在參照?qǐng)D14,其是根據(jù)本發(fā)明的另一具體實(shí)施例,圖1微處理器100執(zhí)行圖3的XLOAD指令的運(yùn)行流程圖。圖14的流程圖與圖6的流程圖相同,并且標(biāo)號(hào)相同的方框是一樣的,除了圖14包括額外的判斷方框1403。流程會(huì)從方框602進(jìn)行到判斷方框1403。在判斷方框1403中,圖2的控制邏輯244判斷CSR226的相關(guān)位是否已因方框602中CSR226的加載而改變。若是,流程會(huì)繼續(xù)進(jìn)行如圖6的方框604。否則,流程會(huì)繼續(xù)進(jìn)行方框612,如圖所示。此實(shí)施例的優(yōu)點(diǎn)是,不必丟棄已累積的隨機(jī)字節(jié)及重新開(kāi)始隨機(jī)字節(jié)的累積。即,若CSR 226的加載對(duì)于會(huì)影響RNG單元136的隨機(jī)數(shù)產(chǎn)生功能的值未做任何改變,則由于隨機(jī)字節(jié)是借助使用所要的控制值而產(chǎn)生,所以不需丟棄已累積的隨機(jī)字節(jié)及重新開(kāi)始隨機(jī)字節(jié)的累積。在一具體實(shí)施例中,相關(guān)的CSR 226位為串過(guò)濾裝置使能位334、產(chǎn)生器選擇位336、CNT使能位342以及串過(guò)濾裝置max_cnt 346。
現(xiàn)在參照?qǐng)D15,其是根據(jù)本發(fā)明的另一具體實(shí)施例,圖1微處理器100執(zhí)行圖3的XSTORE指令的運(yùn)行流程圖。圖15的流程圖與圖8的流程圖相同,并且標(biāo)號(hào)相同的方框是一樣的,除了圖15包括額外的判斷方框1507。流程會(huì)從方框806進(jìn)行到判斷方框1507。在判斷方框1507中,圖2的控制邏輯244判斷CSR 226的相關(guān)位是否已因方框806中復(fù)制至CSR 226的動(dòng)作而改變。若是,流程會(huì)繼續(xù)進(jìn)行如圖8的方框808。否則,流程會(huì)繼續(xù)進(jìn)行方框816,如圖所示。此實(shí)施例的優(yōu)點(diǎn)是,不必丟棄已累積的隨機(jī)字節(jié)及重新開(kāi)始隨機(jī)字節(jié)的累積。即,若復(fù)制至CSR 226的動(dòng)作對(duì)于會(huì)影響RNG單元136的隨機(jī)數(shù)產(chǎn)生功能的值未做任何改變,則由于隨機(jī)字節(jié)是借助使用所要的控制值而產(chǎn)生,所以不需丟棄已累積的隨機(jī)字節(jié)及重新開(kāi)始隨機(jī)字節(jié)的累積。在一具體實(shí)施例中,相關(guān)的CSR 226位為串過(guò)濾裝置使能位334、產(chǎn)生器選擇位336、CNT使能位342以及串過(guò)濾裝置max_cnt 346。
現(xiàn)在參照?qǐng)D16,其是根據(jù)本發(fā)明的另一具體實(shí)施例,圖1微處理器100執(zhí)行XSTORE指令的運(yùn)行方框圖。圖16的XSTORE指令類似于圖12的XSTORE指令,然而在圖16的實(shí)施例中,XSTORE指令的目的操作數(shù)會(huì)指定微處理器100的一個(gè)寄存器,如XMM寄存器、浮點(diǎn)寄存器、MMX寄存器或整數(shù)單元(integer unit)寄存器中的一個(gè)(如EBX),而不是指定系統(tǒng)內(nèi)存中的地址。即,有效隨機(jī)數(shù)據(jù)字節(jié)系連續(xù)地被寫(xiě)入寄存器文件108的其中一個(gè)使用者可見(jiàn)寄存器中,而不會(huì)存儲(chǔ)至系統(tǒng)內(nèi)存。在圖16的例子中,XSTORE指令會(huì)指定圖3SSE寄存器352中的XMM3寄存器376,以寫(xiě)入有效隨機(jī)數(shù)據(jù)字節(jié),如圖所示。有利的是,與圖12的XSTORE指令類似,圖16的XSTORE指令會(huì)連續(xù)地將隨機(jī)數(shù)據(jù)字節(jié)寫(xiě)入該使用者可見(jiàn)寄存器,并將計(jì)數(shù)值加載EAX 1202,以促進(jìn)與RNG單元136的多任務(wù)運(yùn)行,且所存的有效隨機(jī)數(shù)據(jù)字節(jié)的數(shù)量,顯示于EAX中存儲(chǔ)的可用字節(jié)計(jì)數(shù)。也就是,圖16的XSTORE指令也是不可中斷的。
現(xiàn)在參照?qǐng)D17,其是根據(jù)本發(fā)明的另一具體實(shí)施例,圖1微處理器100執(zhí)行XSTORE指令的運(yùn)行方框圖。圖17的XSTORE指令類似于圖12的XSTORE指令,然而在圖17的實(shí)施例中,XSTORE指令包括一x86架構(gòu)的REP前置碼。藉由REP XSTORE指令,要存至系統(tǒng)內(nèi)存的隨機(jī)數(shù)據(jù)字節(jié)的數(shù)目,會(huì)被指定為寄存器文件108的ECX寄存器1702的輸入?yún)?shù),如圖所示。軟件在執(zhí)行REP XSTORE指令前,會(huì)將要存至系統(tǒng)內(nèi)存的隨機(jī)數(shù)據(jù)字節(jié)的理想計(jì)數(shù)值載入ECX 1702中。
在一具體實(shí)施例中,在將隨機(jī)數(shù)據(jù)字節(jié)存至系統(tǒng)內(nèi)存的存儲(chǔ)動(dòng)作間,REPXSTORE指令是可中斷的。內(nèi)存地址在初始時(shí),是指定于寄存器文件108的一般用途寄存器中。在圖17的例子中,內(nèi)存地址是指定于寄存器文件108的ESEDI 1704中,如圖所示。每當(dāng)有一或更多個(gè)隨機(jī)數(shù)據(jù)字節(jié)被寫(xiě)入系統(tǒng)內(nèi)存時(shí),ESEDI 1702即更新為系統(tǒng)內(nèi)存中,下個(gè)用以存儲(chǔ)隨機(jī)數(shù)據(jù)字節(jié)的位置。此外,每當(dāng)有一或更多個(gè)隨機(jī)數(shù)據(jù)字節(jié)存儲(chǔ)至系統(tǒng)內(nèi)存時(shí),ECX 1702即更新,以反映尚待存儲(chǔ)的隨機(jī)字節(jié)數(shù)目。例如,假設(shè)REP XSTORE指令于ECX 1702中指定一字節(jié)計(jì)數(shù)值28及0x12345678的內(nèi)存地址。假設(shè)在緩沖器0 242及緩沖器1 246兩者之一中,RNG單元136有8個(gè)可用的字節(jié),且當(dāng)累積更多的隨機(jī)數(shù)據(jù)字節(jié)時(shí),將8個(gè)字節(jié)寫(xiě)入系統(tǒng)內(nèi)存。當(dāng)8個(gè)字節(jié)被寫(xiě)至內(nèi)存時(shí),ECX 1702會(huì)更新為20,以表示還有20個(gè)隨機(jī)數(shù)據(jù)字節(jié)必須寫(xiě)入系統(tǒng)內(nèi)存。此外,地址會(huì)被更新為系統(tǒng)內(nèi)存中,下個(gè)將要寫(xiě)入大量隨機(jī)數(shù)據(jù)字節(jié)的位置0x12345680。中斷可能會(huì)發(fā)生在這個(gè)時(shí)候,而軟件會(huì)檢查更新的值。當(dāng)中斷已執(zhí)行且控制權(quán)回歸至REP XSTORE指令時(shí),REP XSTORE指令將使用ECX 1702及ESEDI 1704中的更新值回復(fù)執(zhí)行。此外,完成REPXSTORE指令時(shí),圖2 CSR 226的現(xiàn)時(shí)值會(huì)被復(fù)制到寄存器文件108的EAX寄存器1202中。
雖然本發(fā)明及其目的、特征、以及優(yōu)點(diǎn)已詳細(xì)地?cái)⑹?,但是其它的具體實(shí)施例會(huì)由本發(fā)明所包含。例如,雖然本發(fā)明已敘述關(guān)于由操作系統(tǒng)所存儲(chǔ)及回存的SSE寄存器,但是本發(fā)明可適用于使用由操作系統(tǒng)所存儲(chǔ)及回存的其它寄存器,以判斷可行的工作切換是否已發(fā)生,以及回存隨機(jī)數(shù)產(chǎn)生器中的控制寄存器,如浮點(diǎn)寄存器。再有,雖然本發(fā)明已敘述關(guān)于x86架構(gòu)處理器,但是本發(fā)明可適應(yīng)于各種處理器架構(gòu)。
總之,以上所述,僅為本發(fā)明的較佳實(shí)施例而已,當(dāng)然不能以之限定本發(fā)明所實(shí)施的范圍。凡依本發(fā)明權(quán)利要求所作的均等變化與修飾,都應(yīng)仍屬于本發(fā)明專利涵蓋的范圍內(nèi)。
權(quán)利要求
1.一種可由一微處理器執(zhí)行的宏指令,其特征在于,是用以將隨機(jī)數(shù)從該微處理器存儲(chǔ)至連接于該微處理器的一內(nèi)存,該指令包括一運(yùn)算碼;一第一字段,用以存儲(chǔ)一第一操作數(shù),該第一操作數(shù)指定該內(nèi)存中的一地址,以存儲(chǔ)由該微處理器內(nèi)一隨機(jī)數(shù)產(chǎn)生器所產(chǎn)生的零到多個(gè)字節(jié)的隨機(jī)數(shù)據(jù);以及一第二字段,用以存儲(chǔ)一第二操作數(shù),該第二操作數(shù)指定該微處理器內(nèi)一寄存器,該寄存器存儲(chǔ)該內(nèi)存中所存的該零到多個(gè)字節(jié)的隨機(jī)數(shù)據(jù)。
2.如權(quán)利要求1所述的宏指令,其特征在于該運(yùn)算碼具有一預(yù)定值。
3.如權(quán)利要求2所述的宏指令,其特征在于該預(yù)定值為0x0F 0xA7。
4.如權(quán)利要求1所述的宏指令,其特征在于該微處理器存儲(chǔ)未由該宏指令所指定的一可變量目的該零到多個(gè)字節(jié)隨機(jī)數(shù)據(jù)。
5.如權(quán)利要求4所述的宏指令,其特征在于該微處理器也將一計(jì)數(shù)值及該零到多個(gè)字節(jié)隨機(jī)數(shù)據(jù)存儲(chǔ)至該內(nèi)存,該計(jì)數(shù)值是指定存至該內(nèi)存的該零到多個(gè)字節(jié)隨機(jī)數(shù)據(jù)的該可變數(shù)目。
6.如權(quán)利要求5所述的宏指令,其特征在于該微處理器將該計(jì)數(shù)值存儲(chǔ)于該內(nèi)存地址,并將該零到多個(gè)字節(jié)隨機(jī)數(shù)據(jù)存儲(chǔ)至該計(jì)數(shù)值的相鄰位置。
7.如權(quán)利要求4所述的宏指令,其特征在于該微處理器也將一計(jì)數(shù)值加載該微處理器的一第二寄存器,該計(jì)數(shù)值是指定存至該內(nèi)存的該零到多個(gè)字節(jié)隨機(jī)數(shù)據(jù)的該可變數(shù)目。
8.如權(quán)利要求7所述的宏指令,其特征在于該第二寄存器是該微處理器的一一般用途寄存器。
9.如權(quán)利要求8所述的宏指令,其特征在于該一般用途寄存器為一EAX寄存器。
10.如權(quán)利要求1所述的宏指令,其特征在于該宏指令是不可中斷的。
11.一種微處理器,其特征在于,具有一連接的內(nèi)存,該微處理器包括一存儲(chǔ)組件,配置為累積一可變數(shù)目的隨機(jī)數(shù)據(jù)字節(jié);一指令轉(zhuǎn)譯器,連接至該存儲(chǔ)組件,以轉(zhuǎn)譯一用于指定該內(nèi)存的一地址的指令;以及一存儲(chǔ)單元,連接至該存儲(chǔ)組件,配置為響應(yīng)該指令轉(zhuǎn)譯器轉(zhuǎn)譯該指令的動(dòng)作,將該可變數(shù)目的隨機(jī)數(shù)據(jù)字節(jié)從該存儲(chǔ)組件存儲(chǔ)至該內(nèi)存地址。
12.如權(quán)利要求11所述的微處理器,其特征在于,還包括一計(jì)數(shù)器,連接至該存儲(chǔ)組件,用以維持累積于該存儲(chǔ)組件中的該可變數(shù)目字節(jié)的一計(jì)數(shù)值。
13.如權(quán)利要求12所述的微處理器,其特征在于該存儲(chǔ)單元更配置為將該計(jì)數(shù)器的該計(jì)數(shù)值及該存儲(chǔ)組件的該可變量目的隨機(jī)數(shù)據(jù)字節(jié),存儲(chǔ)至該內(nèi)存地址。
14.如權(quán)利要求13所述的微處理器,其特征在于該微處理器是連續(xù)地將該計(jì)數(shù)器的該計(jì)數(shù)值及該存儲(chǔ)組件的該可變量目的隨機(jī)數(shù)據(jù)字節(jié),存儲(chǔ)至該內(nèi)存地址。
15.如權(quán)利要求14所述的微處理器,其特征在于在該微處理器連續(xù)地將該計(jì)數(shù)器的該計(jì)數(shù)值及該存儲(chǔ)組件的該可變量目的隨機(jī)數(shù)據(jù)字節(jié)存儲(chǔ)至該內(nèi)存地址的動(dòng)作中,包含該指令為一不可中斷的指令。
16.如權(quán)利要求13所述的微處理器,其特征在于該存儲(chǔ)單元將該計(jì)數(shù)值存儲(chǔ)于由該地址所指定的該內(nèi)存中的一位置。
17.如權(quán)利要求16所述的微處理器,其特征在于該存儲(chǔ)單元將這些隨機(jī)數(shù)據(jù)字節(jié)存儲(chǔ)于該內(nèi)存中的一位置,其相鄰于存儲(chǔ)該計(jì)數(shù)值的該位置。
18.如權(quán)利要求12所述的微處理器,其特征在于該計(jì)數(shù)值可為零。
19.如權(quán)利要求12所述的微處理器,其特征在于該微處理器在將該可變數(shù)目的隨機(jī)數(shù)據(jù)字節(jié)從該存儲(chǔ)組件存儲(chǔ)至該內(nèi)存地址之后,清除該計(jì)數(shù)器中的該計(jì)數(shù)。
20.如權(quán)利要求12所述的微處理器,其特征在于該計(jì)數(shù)值是指定自前次執(zhí)行該指令以來(lái),該存儲(chǔ)組件所累積的該可變數(shù)目字節(jié)的一計(jì)數(shù)值。
21.如權(quán)利要求12所述的微處理器,其特征在于,還包括一第二存儲(chǔ)組件,配置為累積一第二可變數(shù)目的隨機(jī)數(shù)據(jù)字節(jié);以及一第二計(jì)數(shù)器,連接至該第二存儲(chǔ)組件,用以維持累積于該第二存儲(chǔ)組件中的該第二可變數(shù)目字節(jié)的一計(jì)數(shù)值。
22.如權(quán)利要求12所述的微處理器,其特征在于該存儲(chǔ)單元更配置為響應(yīng)該指令轉(zhuǎn)譯器轉(zhuǎn)譯該指令的動(dòng)作,將該計(jì)數(shù)值從該計(jì)數(shù)器存儲(chǔ)至該微處理器中一使用者可見(jiàn)寄存器。
23.如權(quán)利要求11所述的微處理器,其特征在于,還包括一隨機(jī)位產(chǎn)生器,連接至該存儲(chǔ)組件,用以產(chǎn)生隨機(jī)位,以形成隨機(jī)數(shù)據(jù)字節(jié),累積于該存儲(chǔ)組件中。
24.如權(quán)利要求23所述的微處理器,其特征在于,還包括一移位寄存器,連接于該隨機(jī)位產(chǎn)生器與該存儲(chǔ)組件之間,用以從該隨機(jī)位產(chǎn)生器所產(chǎn)生的這些隨機(jī)位形成這些隨機(jī)數(shù)據(jù)字節(jié)。
25.如權(quán)利要求24所述的微處理器,其特征在于,還包括一總線接口單元,連接至該存儲(chǔ)單元,作為該微處理器與一總線的接口,該總線連接該微處理器及該內(nèi)存,其中該總線接口單元是配置為于該總線上執(zhí)行一或多個(gè)總線作業(yè),以將該可變數(shù)目的隨機(jī)數(shù)據(jù)字節(jié)存儲(chǔ)至該內(nèi)存地址。
26.如權(quán)利要求25所述的微處理器,其特征在于,還包括一寫(xiě)入緩沖器,連接于該存儲(chǔ)單元與該總線接口單元之間,用以緩沖該可變數(shù)目的隨機(jī)數(shù)據(jù)字節(jié),直到該總線接口單元執(zhí)行該一或多個(gè)總線作業(yè)。
27.一種用以執(zhí)行一多任務(wù)操作系統(tǒng)的微處理器,其特征在于,連接至一系統(tǒng)內(nèi)存,該微處理器包括一隨機(jī)數(shù)產(chǎn)生器,具有一緩沖器,用以累積零到N個(gè)隨機(jī)數(shù)據(jù)字節(jié),其中N大于1,以及一計(jì)數(shù)器,用以維持該緩沖器所累積的這些字節(jié)的一計(jì)數(shù)值;以及一指令轉(zhuǎn)譯器,連接至該隨機(jī)數(shù)產(chǎn)生器,用以轉(zhuǎn)譯一指令,以指示該微處理器,將該緩沖器所累積的這些字節(jié)存儲(chǔ)至該系統(tǒng)內(nèi)存。
28.如權(quán)利要求27所述的微處理器,其特征在于該微處理器也將該計(jì)數(shù)值存儲(chǔ)至該系統(tǒng)內(nèi)存。
29.如權(quán)利要求27所述的方法,其特征在于該微處理器也將該計(jì)數(shù)值存儲(chǔ)至該微處理器的一使用者可見(jiàn)寄存器。
30.一種微處理器,其特征在于,具有多個(gè)使用者可見(jiàn)寄存器,包括一隨機(jī)數(shù)產(chǎn)生器,用以產(chǎn)生隨機(jī)數(shù)據(jù)字節(jié);以及一指令轉(zhuǎn)譯器,連接至該隨機(jī)數(shù)產(chǎn)生器,用以轉(zhuǎn)譯該微處理器指令集的一指令,該指令包括一運(yùn)算碼及一目的操作數(shù),用于指定一目的,以存儲(chǔ)由該隨機(jī)數(shù)產(chǎn)生器所產(chǎn)生的一數(shù)量的這些隨機(jī)數(shù)據(jù)字節(jié),其中該數(shù)量是指定于該微處理器內(nèi)這些使用者可見(jiàn)寄存器其中之一。
31.如權(quán)利要求30所述的微處理器,其特征在于這些使用者可見(jiàn)寄存器的該其中之一為這些使用者可見(jiàn)寄存器中預(yù)定的一個(gè)。
32.如權(quán)利要求30所述的微處理器,其特征在于該指令更包括一前置碼,用以表示該指令具有指定于這些使用者可見(jiàn)寄存器的該其中之一的該數(shù)目的這些隨機(jī)數(shù)據(jù)字節(jié)。
33.一種用以執(zhí)行一多任務(wù)操作系統(tǒng)的微處理器,其特征在于,包括一隨機(jī)數(shù)產(chǎn)生器,具有一用以累積一可變數(shù)目的隨機(jī)數(shù)據(jù)字節(jié)的緩沖器,以及一用以計(jì)數(shù)累積字節(jié)的該可變量目的計(jì)數(shù)器;一指令轉(zhuǎn)譯器,連接至該隨機(jī)數(shù)產(chǎn)生器,用以轉(zhuǎn)譯該微處理器指令集的一指令,該指令用以將該計(jì)數(shù)器的一計(jì)數(shù)值及該緩沖器的該累積字節(jié),存儲(chǔ)至連接于該微處理器的一內(nèi)存;以及一中斷單元,連接至該指令轉(zhuǎn)譯器,配置為在該指令轉(zhuǎn)譯器轉(zhuǎn)譯該指令之后,禁止該微處理器的中斷,并在該指令執(zhí)行之后,使能中斷。
全文摘要
本發(fā)明公開(kāi)了一種微處理器,包括隨機(jī)數(shù)產(chǎn)生器(RNG),以及用以存儲(chǔ)產(chǎn)生器所產(chǎn)生的隨機(jī)數(shù)據(jù)字節(jié)的指令。RNG包括多個(gè)用以緩沖隨機(jī)字節(jié)的緩沖器,以及相關(guān)于每個(gè)緩沖器的計(jì)數(shù)器,用以保持每個(gè)緩沖器中的字節(jié)數(shù)目的計(jì)數(shù)值。指令則指定字節(jié)所要存儲(chǔ)的目的地。在一具體實(shí)施例中,當(dāng)指令執(zhí)行時(shí),寫(xiě)入內(nèi)存的字節(jié)數(shù)目是可變的,并且是可用字節(jié)的數(shù)目;在另一實(shí)施例中,指令指定了此數(shù)目。若數(shù)目可變,則指令會(huì)連續(xù)地存儲(chǔ)一計(jì)數(shù)值,以指定真正存儲(chǔ)的有效字節(jié)的數(shù)目。在一具體實(shí)施例中,目的地為系統(tǒng)內(nèi)存中的位置。計(jì)數(shù)值可能隨著字節(jié)被存至內(nèi)存;或者計(jì)數(shù)值可能被存至使用者可見(jiàn)寄存器。指令可使用x86 REP前置碼。
文檔編號(hào)G06F9/00GK1503121SQ03158190
公開(kāi)日2004年6月9日 申請(qǐng)日期2003年9月16日 優(yōu)先權(quán)日2002年11月20日
發(fā)明者G·葛蘭·亨利, 泰瑞·派克斯, G 葛蘭 亨利, 派克斯 申請(qǐng)人:智慧第一公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1