TWI240200B - Random number generator with selectable dual random bit string engines - Google Patents

Random number generator with selectable dual random bit string engines Download PDF

Info

Publication number
TWI240200B
TWI240200B TW92118543A TW92118543A TWI240200B TW I240200 B TWI240200 B TW I240200B TW 92118543 A TW92118543 A TW 92118543A TW 92118543 A TW92118543 A TW 92118543A TW I240200 B TWI240200 B TW I240200B
Authority
TW
Taiwan
Prior art keywords
signal
random
bit
microprocessor
instruction
Prior art date
Application number
TW92118543A
Other languages
English (en)
Other versions
TW200415507A (en
Inventor
G Glenn Henry
James R Lundberg
Terry Parks
Original Assignee
Ip First Llc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US10/365,601 external-priority patent/US7174355B2/en
Application filed by Ip First Llc filed Critical Ip First Llc
Publication of TW200415507A publication Critical patent/TW200415507A/zh
Application granted granted Critical
Publication of TWI240200B publication Critical patent/TWI240200B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Microcomputers (AREA)
  • Executing Machine-Instructions (AREA)
  • Storage Device Security (AREA)

Description

1240200 五、發明說明(1) 優先權資訊 [0001] 本申請 6〇1 ,Φ β 下美國申請案之優先權:案 #U1 0/3 65, 60 1中呑月日為2〇〇3年2月n曰。 【發明所屬之技術領域] [0 0 0 2 ]本發明係有關於含 有關於亂數產生(random number genera^c^)的領域,特別是有關於微處理器
選擇的隨機位元產生器。 夕J 【先前技術】 [ 0 0 0 3 ]就歷史來看,許多電腦 數。例如,物理現象的蒙讪4 r 骚*要徒供亂 就需要提供亂數,以模擬物理現象。需要使 其他例子為賭場遊戲及複上 箄imjr: 博,以模擬洗牌,擲骰子 專,券唬碼的產生;統計分析資料的產±,如 測驗;以及電腦遊戲。 子的 掛產=在上些型式的應用中,所需之隨機度,以及 士產生亂數之效旎要求是不同的。許應 遊戲,對於隨機度的要求是不高的。心ς'學測驗上的p η:度有著更嚴格的要求,但效能需:。 =而曰〇規模之運用蒙地卡羅的模擬會有非常高的效能需 :重良好的亂數統計特性’雖然不可預測性並非特 另j重要。其他的應用,如線上賭博,則 預測性皆有非常嚴格的要求。 现機度及不可 m 第5頁 1240200 五、發明說明(2) [0 0 0 5 ]雖妙、 、 腦安全領域,則對古κ 口 應用仍然是重要的,但是在電 電腦網路及_ Γ貝亂數有最大的需纟。最近,個人 制的需求,巳;Π:爆炸性成*,對於各種安全機 [〇〇〇6]訝所有電腦安全的主要,古σ 質的亂數皆為必I ^ 们王要構成要素而S ,冋口口 資料完整性。要 k二要素包含機密性、身分確認以及 種不=7 力WW 密為提供機密性的主要機制。有許多 ^ , . h /、斤法,如對稱式加密 '公共鑰匙及一次性 宗硷π X二疋=些演算法都具有一關鍵特性,即加密/解 其被簡單地預測出來。一個加密系統的密碼強度 ^ 即疋其所用鑰匙的強度,亦即預測、猜想或計算解 匙的難度多高。最好的鑰匙為夠長的真亂數,而在所 有嚴格要求安全的應用中,亂數產生器係為產生密碼鑰匙 的基礎。 一[〇〇〇8]許多對密碼演算法成功的攻擊,已非專注於 加岔演算法,而是專注於產生亂數的來源。一個為人熟知 的例子是,網景的安全插座層(Secure Sockets Layer, SSL )之早期版本,會從系統時脈與程序丨D表蒐集資料, 以產生軟體式準亂數產生器的起始值。所產生的亂數係用 來產生一對稱鑰匙,以加密通聯資料。有二個研究生想出 了可準確猜測亂數的程序,在一分鐘内,就猜出通聯鑰 匙’破壞這個機制。 [0 0 0 9 ]與解密鑰匙類似,用以確認存取資訊之使用
1240200 五、發明說明(3) 者=的,碼,其強度實際上就是預測或猜測密碼的 有多向。隶好的密碼為夠長的真敗數。此外,在有使用二 號協定(challenge protoc〇i )的確認協定 曰 (authentication protoc〇1 )中,關鍵 ^ ;::=認的一方加以預測,數則係二= [0010]冑位簽名及訊息摘要係用來 之完整性。亂數係用於大部分的數位簽 法路上二 意:-:難於偽造簽名。IL數的品質會直接影響到簽名吏: 效力。總而言之,良好的安全需要良好的亂數。 = 011]數值本身不是隨機的。隨機度的定義必須不 僅ο括所產生的數值之特徵’而且也包括用以產生數值之 產生益的特徵。運用軟體的亂數產生器是常見的,並且對 。然而’對某些應用來說,軟體式 產生益疋不足的。廷些應用需要硬體式產生器,直可 與藉由隨機物理程序所產生數值之特徵相同的數值。此 ί程徵是’其產生數值所具有之統計分佈的無偏 差私度,以及不可預測與不可重製的程度。 [0012] 具有無偏差的統計分佈,係意謂所有的值具 有相f的發生機率,無論樣本大小為何。幾乎所有的應用 ίΐ生= 良好的統計分佈’而高品質的軟體;亂 ϊίΐ: 滿足此需求。只滿足無偏差統計分佈之需 求的產生器稱為準亂數產生器。 [0013] 不可預測性係指在一位元序列中,正確猜測
第7頁 !24〇2〇〇 五、發明說明(4) 下個位元的機率虛_ 為何。某此應用;”’、一半’無論先前所產生的位元值 產生器、,則數而言,則是重要的。若使用軟體式 演算法及其初私1滿/足不可預測性的需求,必須隱藏軟體 法是非常^ ^ 。從安全的觀點而言,隱藏演算法的做 生器的庳的。對於使用可預測之隱藏演算法亂數產 人所熟知的。同時、甚?f不二女王上梃致破壞的例子係為 準亂數產生器? 二種需求之產生器稱為密碼安全
始條[:=同產產生器/為不可重製的,則二個具有相同起 不能滿足此需ΐ。::右$'須產生不同的輸出。軟體演算法 器,能產生滿i安於隨機物理程序的硬體式產生 所有三個需长的I ^而之嚴格不可重製性的數值。滿足 而求的產生器稱為真亂數產生器。 八1數1 5、2 μ軟體演算法係用來產生電腦應用所需之大部 Ιΐΐ預;Γ冉為準敗數產生器,此因這些產生器不能滿 足钲偏差:乂及不可重製性的需求。再者,有些也不能滿 足無偏差統計分佈的需求。 两
(2Γ)1 H通運常作軟式產生器以-初始值或種子 生器以該初‘值:行;有時係由使用者所提供。產 作為產生第二^二打運异,以產生第-隨機結果’其 是循ίϋ Μ 一 I果的種子,依此類推。軟體式產生器必然 等於心=:目卩敫終其會重複相同的輸出序列。猜測種子就 ;此“個所產生的數值序列。其不可重製性只與演
第8頁 1240200 五、發明說明(5) #法及初始種子的機穷一 用並不想要的特性。:者T::這可能是安全上的應 法不必然會產生钤::ί相同的結$。最後’軟體演算 這可能a法+ ^ =貝料大小的範圍内之每個可能的值, [:么足無偏差統計分佈的需求。 體式產生器混合而種成亂數產生益,係軟體式產生器與純硬 generator),熵為可:為熵產生器(entr〇Py 產生之數值f X ”、、不可預測性的另一種說法。產生器所 生器會將軟體演算法庫用具有的熵就愈多。熵產 如,常用的pc加;;:象所產生的種子。例 擊之特性,以獲得立所;的滑鼠移動及鍵盤敲 不理想的熵數,且通常:2:丄运些動作不見得會產生 數的熵產生号而^使用者某種程度的涉入。對多 才能達到足夠的^。 想的特徵就是要花很多時間’ 用上=所:”顯的,渴產生器無法在前述-些應 物理程序所產應用i °這些應用要求只能由隨機 過半導體二極體或電數。隨機物理程序可以是通 running ocsiUator^^ "自由執行震盪器(free- 體電容在-段特殊的時 ^^率不穩&性、或是半導 已用於一歧商辈用冷沾丄 ^成種亂數源 l二/上的加入式(add —in)亂數產生号梦置, 如PCI卡及串列匯流排裝置。這玍器裝置 不廣泛,明顯是因為它們不是相當'^曼就是相/當貴、。使用並 1240200
五、發明說明(6) _ [〇〇19] 種可提供便且、咼效能之硬體式亂數產生 :2解決方案,係將其併入微處理器1。亂數產生器可利 述的隨機物理程序產生亂數,並且成本相當低廉,因 馮其可併入既有的半導體晶粒中。 [〇 0 2 0 ]利用如前述隨機物理程序所設計的硬體式亂 數產生器,疋不像數位邏輯那般精確的。例如,若亂數產 ^器位於微處理器内,則所產生亂數之隨機度,可能會隨 者隨機位元產生電路與微處理器積體電路晶粒上之其他電 路的相對位置而改變,或是因其他不可預期的環境條件而 [0 0 2 1 ]因此,所需要的是一種微處理器及其方法, 以使祕處理器内之硬體式亂數產生器更能產生可被接受之 亂數資料。 【發明内容】 [0022]本發明係提出一種裝置,用以在微處理器之 二或多個隨機位元產生器中選取其一,以累積成亂數。因 此,為了達成上述的目的,本發明的一項特徵是,提供一 種亂數產生器。此亂數產生器包括複數個隨機位元產生 器’其具有複數個各別的輸出端,以提供複數個各別之隨 機位元流。亂數產生器亦包括一多工器,耦接至該些輸出 端,依據一控制輸入端選取該些隨機位元流其中之一。亂 數產生器亦包括一控制暫存器,耦接至該多工器,用以儲 存一選擇值。此選擇值係用以產生一訊號至該控制輸入
1240200 五、發明說明(7) 端,以選取 [0023] 的方法。此 第一與第二 元流累積為 [0024] 器。此微處 個各別之隨 器’耦接至 該些各別隨 亦包括一指 譯一指令, 式化暫存器 [0025] 數產生器更 元產生器產 機位元產生 [0026] 從本說明書 之一。 ’提出一種產生亂數 隨機位元流,選取此 及將所選取之隨機位 ’提出一種微處理 產生器,以產生複數 包括一可程式化暫存 儲存一值,用以選取 為亂數。此微處理器 式化暫存器,用以轉 係將該值編寫入可程 該些隨機位元流之該其中 本發明的另一項特徵是 方法包括產生第一與第二 隨機位元流其中之一,以 隨機資料位元組。 本發明的另一項特徵是 理器包括複數個隨機位元 機位元串。此微處理器亦 該些隨機位元產生器,可 機位元串其中之一,累積 令轉譯器,搞接至該可裎 供微處理器執行。該指令 上發明的優點之—是,可使微處理器内之亂 :X τ Γ被接受之亂數,因為多個不同隨機位 隨機特性的機率,是低於-個隨 器產生不可接受之隨機特性的機率。 特徵都可以在猶後 及圖不中得到瞭解。 【實施方式】 [0 〇 5 1 ]現請參照圖一,其 的方塊圖。圖一的微處理〇曰為、七明之微處理器 化微處理器,其中每一階段負責段的㈣ 貝s 1固矛壬式指令執行過程合
1240200
一部份’如下所述。 [0 0 5 2 ]微處理器丨〇〇包括一亂數產生器(rng)單元 136。微處理器1〇〇所執行的作業系統及應用程式,可能會 使用亂數來執行各種功能,如資料加密、物理現象的模 擬、統計分析、數值分析或是其他。RNG單元136會產生用 於這些功旎的亂數。RNG單元1 36將於下文做更詳細地說 明。 [ 0 0 5 3 ]微處理器1〇〇也包括一指令快取記憶體1〇2。 指令快取記憶體1 〇 2會快取從耦接至微處理器丨〇 〇之系統記 憶體所提取的程式指令。 ° [0054]微處理器1〇〇也包括一指令提取器1〇4,其輕 接至指令快取記憶體丨〇2。指令提取器丨〇4會控制從系統記 憶體及/或指令快取記憶體丨〇 2提取指令的動作。指令提取 器1 0 4會選取一個值給由微處理器丨〇 〇所維護的指令指位器 (instruct ion pointer )。指令指位器會指定下個記憶 體位址’以從該處提取指令。一般來說,指令指位器會循 序遞增,而指到下個指令。然而,流程控制指令(如分支 (branch)、跳躍、副常式呼叫及返回)會將指令指位器更 新為流程控制指令所指定之非循序記憶體位址。此外,中 斷可能驅使指令提取器1 04將指令指位器更新為非循序位 址。 [00 55]微處理器1〇〇也包括一中斷單元146,其輕接 至指令提取器104。中斷單元146會接收一中斷訊號148及 一中斷向量152。微處理器1〇〇之外的元件可能會致能中斷
第12頁 1240200
A號1 4 8,並提供中斷向量i 5 2,以使微處理器1 〇 〇執行中 斷服務常式。中斷單元146會依據中斷向量152,決定中斷 服務常式的記憶體位址,並將中斷服務常式之記 送到指令提取器1 04,以將指令指位器更新為中斷&服務常 式位址。中斷單元1 4 6也會依照微處理器丨〇 〇所執行的特定 指令’選擇性地除能及致能中斷服務。亦即,若中斷被除 能/則即使中斷線148被致能,指令指位器的内容也不會$ 改變,直到中斷被致能為止。 [0056]微處理器1〇〇也包括一指令轉譯器1Q6,其轉 接至指令提取器104、中斷單元146及RNG單元136。指令轉 譯器1 06會轉譯從指令快取記憶體丨02及/或系統記憶體7所 接收的指令。指令轉譯器106會轉譯指令,並依據轉譯指 令之型式採取適當的動作。指令轉譯器丨0 6會轉譯微處理 器100的指令集中所定義的指令。若指令轉譯器1〇6要轉譯 未定義於微處理器1 0 0指令集中之指令,則會產生不合法 的指令異常。 [0 0 5 7 ]在一具體實施例中,微處理器1 〇 〇的指令集實 質上近似於央特爾Pentium III或Pentium IV微處理器的 指令集。然而有利的是,本發明的微處理器丨〇 〇包括額外 的指令,其係有關於RNG單元136的亂數產生功能。一個額 外的指令為XSTORE指令,可儲存RNG單元136所產生的 數。另一額外的指令為XLOAD指令,可從系統記憶體將控 制值載入RNG單元136中之控制與狀態暫存器(control and status register, CSR) 226 及串流SIMD 延伸(Streaming
第13頁 1240200 五、發明說明(ίο)~" ' " """"" SIMD Extensions,SSE)暫存器XMM 0 3 72,這部分在下文 會配合圖二及圖三做說明。XST〇RE及XL0AD指令在下文亦 會做更詳細地說明。 [0 0 5 8 ]此外,指令轉譯器丨〇 6會將轉譯指令之相關資 訊送到中斷單元146,以使中斷單元丨46能適當地致能及除 能中斷。再者,指令轉譯器丨06會將轉譯指令之相關資訊 送到RNG單元1 3 6。例如,指令轉譯器丨〇 6會將關於轉譯之 XST0RE及XL0AD指令的資訊送到rng單元136。此外,當一 將值載入SSE暫存IsXMMO 372的指令被轉譯時,指令轉譯 器106會通知RNG單元136,以使RNG單元136採取某些動 作,如設定旗標,以指出作業系統可能會進行一工作切 換’如下文所述。 [0 0 5 9 ]在一具體實施例中,指令轉譯器1 〇 6會將巨指 令,如Pentium I I I或IV的指令,轉譯為由微處理器1〇Q管 線所執行之一或多個微指令。 [ 0 0 6 0 ]微處理器1〇〇也包括一微程式碼r〇m 132,其 耦接至指令轉譯器106。微程式碼R〇M 132會儲存微程式碼 指令,以送到指令轉譯器1 〇 6,由微處理器1 〇 〇來執行。微 處理器1 0 0指令集中的某些指令,係以微程式碼來實作。 亦即,當指令轉譯器1 06轉譯這些指令的其中一個時,指 令轉譯器1 06會使微程式碼ROM 132内之一微指令常式被執 行,藉以執行轉譯的巨指令。在一具體實施例中,xSTORE 及/或XL0AD指令係以微程式碼實作。此外,在>具體實施 例中,XSTORE及XL0AD指令是連續執行的,此因其為不可
1240200 五、發明說明(11) 中斷的。亦即,在XST0RE及XL0AD指令的執行期間,中斷 會被除能。 [ 0 0 6 1 ]微處理器100也包括一暫存器檔案1〇8,其耦 接至指令轉譯器106。暫存器檔案108包括微處理器1〇〇之 使用者可見暫存器,及使用者不可見暫存器。在一具體實 方也例中’暫存态播案1 〇 8包括八個3 2位元之一般用途使用、 者不可見之暫存器,標示為“到”。在另一具體實施例 中,暫存器檔案108中的使用者可見暫存器包括Pentium πι或iv的使用者可見暫存器集。圖三的SSE暫存器352係 包含於暫存器檔案108中。SSE暫存器352係由包含於微處 理器100中的SSE單元13 4及RNG單元136來使甩,如下所 述。尤其,暫存器檔案1 08包括目前作業系統所熟知的暫 存器〕因此,當作業系統從第一工作切換到第二工作時, 作業系統將暫存器檔案108之暫存器(包括SSE暫存器3 52 ) :關於第-工作的内容,存到系統記憶體,並從系統記憶 -回存暫存器檔案108之暫存器(包括SSE暫存器352)中關 於第二工作的内容。 [〇〇62]微處理器100也包括一位址產生器112,其耦 接至暫存器檔案108。位址產生器112會依據存於暫存器檔 ^ V08一中之運算元及由指令轉譯器1 〇6轉譯之指令所提供的 而產生記憶體位址。特別是,位址產生器112會 圮憶體位址,以指定系統記憶體中的位置,由xst〇re ^々將多個位元組的隨機資料儲存其中。此外,位址產生 裔 亦產生指定系統記憶體中之位置的記憶體位址,由
1240200 五、發明說明(12) XL0AD指令載入其中之控制值,以經由一資料匯流排142存 入圖二的CSR 226中。
[0063]微處理器1〇〇也包括一載入單元114,其耦接 至位址產生器11 2。載入單元11 4會從系統記憶體中載入資 料至微處理器1 0 0。載入單元丨丨4也包括一資料快取記憶 體,以快取從系統記憶體所讀取的資料。載入單元丨丨4會 經由資料匯流排1 4 2,將載入的資料送到微處理器1 〇 〇中之 執行單元,如SSE單元134、RNG單元136及包含於執行階段 11 6中的執行單元。特別是,載入單元丨丨4會從系統記憶體 載入控制值,存到圖二的CSR 226中,以執行XL0AD指令。 [ 0064 ]微處理器1〇〇也包括執行階段116 ,其經由資 料匯流排1 4 2耦接至載入單元11 4。執行階段11 6包括執行 單元,如算術邏輯單元,其用以執行算術與邏輯運算,像 是加、減、乘、除及布林運算。在一具體實施例中,執行 階段11 6包括一用以執行整數運算之整數單元,及一用以 執行浮點運算之浮點單元。
[0065]微處理器1〇〇也包括SSE單元134,其耗接至載 入單元114及指令轉譯器1〇6。SSE單元134包括算術與邏輯 單元,用以執行SSE指令,如包含於Pentium III與IV的 SSE或SSE2指令集中的那些指令。在一具體實施例中,雖 然圖三的SSE暫存器352概念上係包含在暫存器槽案1〇8 中’但實際上是位於SSE單元134中,用以儲存SSE單元134 所使用的運算元。 [ 0 066 ]微處理器1〇〇也包括rng單元136,其經由資料
第16頁 1240200
匯流排142耦接至指令轉譯器1〇6及載入單元114。rng單元 1 36提供隨機資料位元組以及一計數值於資料匯流排144 上:其中該計數值係表示提供給一XST〇RE指令之隨機資料 位7L組的數量。RNG單元136在下文將會配合其餘圖式做 詳細的說明 [〇〇^]微處理器100也包括一儲存單元118,其耦接 至執行單元116、SSE單元134以及RNG單元136。儲存單元 11 8會將資料儲存到系統記憶體及載入單元丨丨4中之資料快 取記憶體。儲存單元118會將執行單元116、SSE單元134及 RNG單元1 3 6所產生的結果儲存至系統記憶體。特別是,儲 存單元118會將RNG單元136在資料匯流排144上所提供的 XST0RE指令計數及隨機資料位元組儲存至系統記憶體。 [ 0 068 ]微處理器100也包括一回寫單元122,其耗接 至執行單元116及暫存器檔案1〇8。回寫單元122會將指令 結果回寫至暫存器檔案1〇8。 [0069] 微處理器1〇〇也包括寫入緩衝器124,其耗接 至回寫單元1 2 2。寫入緩衝器1 2 4會保持等待寫入至系統記 憶體的資料,如XSTORE指令計數及資料。 ° [0070] 微處理器1〇〇也包括一匯流排介面單元(mu) 128,其耦接至寫入緩衝器124。BIlJ 128係做為微處理器 100與一處理器匯流排138的介面。處理器匯流排丨38將微 處理器100耦接至系統記憶體。BIU 128並執行處理器匯流 排1 38上之匯流排作業,以在微處理器1 〇〇與系統記憶體之 間傳遞資料。特別是,BIU 128會執行處理器匯流排丨38上
第17頁 1240200
的一或多個匯流排作業,以將XST0RE指令計數及資料儲 至系統記憶體。此外,BIU128會執行處理器匯流排1382 的一或多個匯流排作業,以從系統記憶體載AXL〇AD指令
[ 007 1 ]微處理器1〇0也包括讀取緩衝器126,其糕接 至BIU 128及暫存器檔案1〇8。對於藉由Βπ 128從系統記 憶體所接收的資料’在其等待送到載入單元丨】4或暫存°哭 檔案108時,讀取緩衝器126會將其保存著。特別是,當"從 系統記憶體接收的XL0AD指令資料在等待送到載入單元玉j 4 及其後之RNG單元1 3 6時,讀取緩衝器丨2 6會將此資料保存 著。 [0 0 7 2 ]現請參照圖二,其為本發明圖一之微處理器 100中RNG單元136的方塊圖。 [0073] RNG單元136包括控制邏輯244。控制邏輯244 包括大量的組合及循序邏輯,用以控制RNG單元136中的各 種元件。控制邏輯244會接收xl〇ad訊號272及xstore訊號 2 68,其分別表示正執行xl〇AD或XST0RE指令。控制邏輯 244也會接收重置訊號248,其表示正在重置RNG單元丨36。
底下會結合RNG單元136的其餘部分,對控制邏輯244做更 詳細地說明。 [0074] RNG單元136也包括一自我測試單元2〇2,其耦 接至控制邏輯2 4 4。自我測試單元2 〇 2會從一控制與狀態暫 存器,稱為機器特定暫存器(MSR ) 21 2,接收自我測試致 月b訊5虎2 9 2 ’ M S R 21 2將在下文配合圖三做更詳細地說
第18頁 1240200
明。MSR 212也耦接至控制邏輯244。自我測試單元202會 將自我測試失敗訊號288送到控制邏輯244。若自我測試單 凡2〇2被自我測試致能訊號2 92所致能,則自我測試單元 2 〇 2會執行各種R N G單元1 3 6的自我測試。若自我測試失 敗 自我測试單元2 0 2會產生真值的自我測試失敗訊號 288,並送至MSR 212。在一具體實施例中,自我測試單元 2 0 2會執行亂數產生器統計測試,如聯邦資訊處理標準 (FIPS)刊物第14〇-2期之第3 5-3 6頁所定義的,此處予以參 考併入。 [ 0 0 75 ]在一具體實施例中,自我測試單元2〇2在使用 者的要求下執行自我測試。在一具體實施例中,在微處理 器100重置後,自我測試單元20 2會執行自我測試。若自我 測試失敗,不論是使用者所要求的或重置後所做的,自我 測试單元2 0 2都會產生真值的自我測試失敗訊號2 8 8,其係 反映於圖三中MSR 212的自我測試失敗位元318。控制邏輯 2 44在重置時,會檢查自我測試失敗位元318。若自我測試 失敗位元318為真’控制邏輯244會設定一偽值的RNG存在 訊號286,送到MSR 212,以更新圖三的RNG存在位元314。 [0076] RNG存在訊號286也會送到一CPUID暫存器204 ,其包括圖三的RNG存在位元3 02,而RNG存在位元302亦會 藉由RNG存在訊號286來更新。亦即,CPU ID暫存器204之 RNG存在位元30 2為MSR 212之RNG存在位元314的副本。在 一具體實施例中,應用程式可藉由執行IA-32指令集中的 0?1110指令來讀取〇?1110暫存器204。若1^6存在位元3〇2為
1240200 五、發明說明(16) 偽’則表示RNG單元1 36並不存在於微處理器丨〇〇,且微處 理器1 0 0不具備亂數產生的特徵。有利的是,需要亂數的 應用可透過RNG存在位元3 0 2,來偵測微處理器1〇〇中的rNG 單元136是否存在’且若RNG單元136不存在,則選擇由另 一個也許效能較低的來源來取得亂數。 [0077] RNG單元136也包括兩個耦接至控制邏輯244的 隨機位元產生器,稱為隨機位元產生器〇 2 〇 6及隨機位元 產生器1 208,其。隨機位元產生器206及208皆會產生一 串隨機位元,由RNG單元1 3 6累積成隨機資料的位元組。隨 機位元產生器2 0 6及2 0 8都會接收一電源控制 (power —cntrl)訊號231,其係用以指定是否關閉隨機位元 產生器2 0 6及2 0 8的電源。在一具體實施例中,關閉隨機位 元產生器206及208電源的動作包括不送時脈訊號給它們。 隨機位元產生器206及208皆會依據微處理器1〇〇的隨機電 氣特性(如熱雜訊),而產生一連串隨機資料位元。
[ 0078 ]隨機位元產生器〇 2 0 6會從MSR 212接收一直 流偏壓訊號296。直流偏壓訊號2 9 6係傳送圖三中MSR 212 之直流偏壓位元3 2 2所存的值。直流偏壓訊號2 9 6的值指定 一直流偏壓電壓,以部分地控制隨機位元產生器〇 2 〇 6中 之自發振鈴振盪器的工作電壓。 [ 0 079 ]隨以下申請中的美國專利案,申請號為 1 0/046055、1 0/046 0 54 及1 0/04605 7,標題分別為「用以 產生亂數的裝置」、「振盪器偏壓變化機制」及「振盪器 頻率變化機制」(文件編號為CNTR· 2113、CNTR. 2155及
第20頁 1240200
CNTR.2156),其中均對隨機位元產生器〇 2〇6做了詳細說 明,此處全部予以參考併入。 [ 0080 ] RNG單元136也包括一具有兩輸入端的多工器 214,其輸入端耦接至隨機位元產生器2〇6及2〇8的輸出 端。多工器214依據CSR 226所提供之產生器選擇訊號 252,來選擇兩輸入端的其中一個。產生器選擇訊號會 傳送圖三中CSR 226之產生器選擇位元336所儲存的值。 • [0081] RNG單元136也包括一范紐曼白化器216,或 稱壓縮器,其耦接至多工器214的輸出端。白化器216係藉 ^從MSR 212所接收之原始位元訊號254,而選擇性地被致 月匕/除能。原始位元訊號254會傳送儲存於圖三中er 212 的原始位元攔位324中之值。若原始位元訊號254為真,則 白化器216讓多工器214所接收之位元直接通過而輸出,並 不執行白化的功能。白化器2 1 6係依據一預定之輸入/輸出 函數,接收來自多工器214的一對位元並輸出兩者中任一 個位元或都不輸出,藉以明顯降低可能存在於隨機位元產 生器206及208之殘餘偏壓。白化器216的輸入/輸出函數伤 如下表一所示。 輪入 輪出 00 無 01 0 10 1 11 無 表一
1240200
[ 0 082 ] RNG單元136也包括一8位元的移位暫存器 2 1 8,其耦接至白化器2 1 6。移位暫存器2丨8會暫存從白化 器216所接收的隨機資料位元,將其累積成8位元的位元 組,並輸出所累積的隨機資料位元組。移位暫存器218將 =送至控制邏輯244的位元組產生訊號282設定為真,以表 示其已累積並輸出一隨機資料位元組298。 ” [0083] RNG單元136也包括一連續數目測試(CNT)單 元222,其耦接至移位暫存器218的輸出端。CNT單元222會 從移位暫存器2 1 8接收隨機位元組2 98,並對隨機位元组曰 298進行一連續亂數產生器測試。CNT單元222係依據從csr 2 2 6所接收的c N T致能訊號2 8 4,而選擇性地被致能/除 忐。CNT致能訊號284會傳送儲存於圖三中csr 226的C NT致 能位元342中之值。若連續亂數產生器測試失敗,貝彳CNT單 元222將一送到CSR 226的CNT失敗訊號2 94設定為真,並儲 存於圖三中CSR 22 6的CNT失敗位元344中。 士 [0〇84]在一具體實施例中,CNT單元222所執行的連 續亂數產生器測試,實質上符合FIPS第14〇_2期中第37頁 所述之連續亂數產生器測試,其在此予以參考併入。在一 具體實施例中,CNT單元222會使用二個8位元組的緩衝器 (稱為「舊」及「新」),來執行測試。在重置及自我測試 (若有被致能)後,由移位暫存器2 1 8所傳送的前八個位 疋組會累積於舊缓衝器中。接下來的八個位元組則累積於 新緩衝器中。執行XST0RE指令時,舊緩衝器中的8個位元 組會與新緩衝器中的8個位元組做比較。若位元組不相
第22頁 1240200 五、發明說明(19) —-------- 等測.式即通過,且新緩衝器中的8個位元組會被移到舊 緩衝器。新緩衝器則被清除,以等待累積新的8個位元 組。然而,若位元組相等,則CNT單元222會將CNT失敗訊 號294設為真,以表示連續亂數產生器測試失敗。 一 [0 0 8 5 ]在一具體實施例中,只要設定圖三的致能 位tl342及CNT失敗位元344,xST0RE指令傳回的可用位元 組計數值就為〇。在一具體實施例中,微處理器100在特定 的XST_指令執行時’將可用位^組計數值及隨機資料位 το組儲存至系統記憶體,其中特定XST〇RE指令的執行係啟 動了該失敗之連續亂數產生器測試。 # [ 0 0 8 6 ]在一具體實施例中,連續亂數產生器測試不 曰&跨數個並未全部致能該測試的工作。亦即,當〔n τ致 能位元342被設定時,新及舊的緩衝器皆會更新,並且連 續亂數產生器測試只會因執行XST〇RE指令而進行。因此, 可確保一特定的工作絕不會接收兩組連續且其值相等的8 個位元組。然而,若一個工作正執行,且其中一個設定 CNT致能位元342,而另一個並未設定,則RNG單元136可能 以XSTORE指令,將8個位元組儲存至其中一個工作,並產 生工作切換,而RNG單元136再以XST0RE指令,將與先前8 個位元組相等之8個位元組儲存至另一個工作;然而,在 此情況下,連續亂數產生器測試將不會失敗。 [ 0087 ] RNG單元136也包括一串過濾裝置(string filter) 224 ’其輕接至移位暫存器218的輸出端。串過濾 裝置224會從移位暫存器218接收隨機位元組298,並選擇
第23頁 1240200 五、發明說明(20) 性地丟棄某些隨機位元組,如底下所述,且輸出未丟棄的 隨機位元組。串過濾裝置224會確保RNG單元136不會產生 比一指定值長的連續相似位元(亦即連續的〇位元串或連續 的1位元串)。此指定值係由從CSR 226所接收的最大計數 (max一cnt)訊號258來指定。max一cnt訊號258會傳送圖三中 CSR 226之串過滤裝置最大計數攔位346所指定的值。在一 具體實施例中,max —cnt 346的預設值為26個位元。在一 具體實施例中,串過濾裝置最大計數欄位346的值必須至 少為8。若串過渡裝置2 2 4偵測到一連續的相似位元串長度 超過max一cnt 2 58,則串過濾裝置2 24將一過濾失敗訊號 2 56設為真,此訊號係儲存於圖三中CSR 226之串過濾裝置 失敗位元338中。串過濾裝置224在底下會配合圖十到+二 做更詳細地說明。 [0088] RNG單元136也包括一具有兩輸入端的第 工器228。其中一輸入端係耦接至串過濾裝置224的輸出 端,而另一輸入端係耦接至移位暫存器218的輸出端。多 工器228依據CSR 226所提供的過濾致能訊號262,而選擇 其中一輸入端,以傳送圖三中CSR 226之串過濾裝置致 位元334所存的值。 [ 0089 ] RNG單元136也包括一個具有一輸入端盥 出端的解多工器232 ’其輸入端係輕接至多工器m、翰 =。解多工器電路係包括單-資料輪入端及複數 = 出端。解多工器也包括-控制輸人端。解多卫器會依= 制輸入端的訊號來選擇複數個資料輪出端的其中一個據=
1240200 五、發明說明(21) 將資料輪入端所接收的資料送到所選的輸出端。此處解多 工器2 3 2則依據控制邏輯2 4 4所提供的填充選擇 (f i 1 1 — s e 1 e c t )訊號2 6 4,將輸入端所接收之隨機資料位元 組選擇性地送到其中一個輸出端。
[0090] RNG單元136也包括兩個資料緩衝器,標示為 緩衝器0 242及緩衝器1 246,皆耦接至解多工器232的輸 出端。緩衝器0 242及緩衝器1 246藉由XST0RE指令,來累 積要儲存至系統記憶體的隨機資料位元組。在一具體實施 例t,緩衝器〇 242及緩衝器1 246各可儲存15個位元1的 隨機資料。在一具體實施例中,缓衝器〇 242及緩衝器1 2 4 6各可儲存1 6個位元組的隨機資料。 [0091] RNG單元136也包括一具有兩個輸入端的第三 夕工器236 ,其輸入端係耗接至緩衝器〇 242及緩衝器1 246的輸出端。多工器236依據控制邏輯244所提供的儲存 選擇(store 一 select)訊號266,選取其輸入端之其中一組 隨機資料位元組,以輸出至一資料匯流排278上。 [0092] RNG單元136也包括一 TSP0旗標暫存器274,其
麵接至控制邏輯244 〇TSP0旗標暫存器274儲存一旗標,用 以表示作業系統所進行之工作切換是否可能發生。Tsp〇旗 才木暫存器2 7 4的使用在底下會做更詳細地說明。 、 [0093] 單元136也包括有兩輸入端的第二解多工 器215,連接到控制邏輯244。第二解多工器215的輸入端 接收由控制邏輯244所產生的一遞增信號221。當每次隨機 >料位元組被存入buf 0 242或bufl 246,控制邏輯244宫
1240200
告遞增信號221。解多工器215將所接收到的遞增信號221 提供給根據fill — select信號264所選擇的輸出端。 [0094] RNG單元136也包括一具有兩輸入端的第三解 多工器217,其耦接至控制邏輯244。解多工器217的輸入 端係耦接至控制邏輯244,以接收其所產生的清除訊號 223。每當執行一XST0RE指令時,控制邏輯244會將清除訊 號2 2 3設為真’以使得有效的隨機資料位元組從緩衝器〇 242或緩衝器1 246中移除。解多工器217依據
store — selects號266,將其輸入端所接收之清除訊號223 選擇性地送到其中一輸出端。
[ 0 09 5 ] RNG單元136也包括兩個計數器,標示為計數 器〇 211及計數器1 213,其耦接至解多工器215及解多°工 器217。計數器〇 211及計數器1 213各具有一遞增(或計 數)輸入端。計數輸入端係耦接至解多工器215的輸出端。 因此,當控制邏輯244將遞增訊號221設為真時,計數器〇 211及計數器1 213中由fill— select訊號264所指定的一個 會遞增。計數器0 211及計數器1 213中也各具有一清除輸 入端。清除輸入端係耦接至解多工器217的輸出端。因 此,當控制邏輯244將清除訊號223設為真時,計數器〇 211及計數器1 213中由store —select訊號266所指定的一 個會被清除為0。 [0096] RNG單元136也包括兩個比較器225,其耗接至 計數器0 211及計數器1 213的輸出端。比較器225將計數 器0 211及計數器1 213所輸出的計數值,與計數器〇 211
1240200 五、發明說明(23) 及計數器1 213可儲存的位元έ 器〇 2Η及計數則是否已目做比較’以判斷計數 fulll訊號227,以將比較钍果止並產生仏110訊號229及 0 097 RNG單元也命杠 ^ ^ 少丁哭91Q甘/兀1 36也包括一具有兩個輸入端的第四 夕益219,其輸入端係搞接至計數 2U的輸出端。多工器219會依 及十數^1 m^266 ^ Λ#^(δΐ7;"
用位元組計數m。可用位元值’以輸出作為可 226。 了用位W數234也會送到CSR
[ 0098 ] RNG單元136也包括一暫存器,標示為雛R5 238,或R5 238 »R5 238具有—輪入端,其搞接至多工器 236的輸出端,以接收資料位元組2 78。R5 238具有另一個 輸入端,其耦接至多工器219的輸出端,以接收可用位元 組計數234 °R5 238的輸出端係耦接至圖一的資料匯流 144 »R5 238會保持XSTORE指令的計數值及資料。在—呈 體實施例中’計數值係儲存於R5 2 38的最小有效位元细、 中,而有效的資料位元組則儲存於與此計數值相連之有纹 位元組的位置。在一具體實施例中,R5 238可儲存—計數 位元組,加上緩衝器0 242及緩衝器】246所能儲存的隨 資料位元組。 [ 0 09 9 ]在一具體實施例中,rNG單元136包括四個緩 衝器,而非兩個。每一緩衝器可儲存多達八個位元組的陴 機資料。在此實施例中,解多工器215、217及232包含具% 四個輸出端的解多工器;多工器219及236包含具四個輪入
第27頁 1240200 五、發明說明(24) 端的多工器;比較器2 2 5包括四個比較器,以產生四個充 滿輸出;而fill_select 訊號264 及store —select 訊號266 包括二個位元,用以選擇四個計數器及緩衝器的其中一 個。 [0 1 0 0 ]現請參照圖三,其係繪示本發明圖一微處理 為100中,與圖一 RNG單元136有關之各種暫存器的方塊 圖。 [0101 ]圖三係顯示圖二中的CPUID暫存器2 04。CPUID 暫存器204包括一RNG存在位元302。RNG存在位元3 0 2為唯 讀的特徵旗標單元。若RNG存在位元302為1,則表示RNG單 元136存在,並由微處理器1〇〇來致能。若RNG存在位元3〇2 為0,則RNG單元136並不存在,且XL0AD及XST0RE指令為無 效的,而當指令轉譯器1 〇 6遇到這些指令時,將產生無效 指令異常。此外,讀取MSR 21 2中的位元,結果係未定 義’而嘗試寫入,則不會產生任何效果。rNG存在位元302 係為MSR 212之RNG存在位元314的副本。 [0102]圖三亦顯示圖二中的M Sr 212。MSR 212包括 一 RNG致能位元312 °RNG致能位元312是可寫入的。將RNG 致能位元312寫入1會使RNG單元136致能。將RNG致能位元 312寫入〇則使RNG單元136除能。若RNG致能位元312為0, 貝1JXL0AD及XST0RE指令即為無效,而若指令轉譯器1〇6遇到 這些指令時,將產生無效指令異常。此外,讀取MSR 21 2 中的位元,結果係未定義,而嘗試寫入,則不會產生任何 效果。RNG致能位元312的值在重置之後,即變為〇。
第28頁 1240200 五、發明說明(25) [0103] MSR 212也包括一唯讀的RNG存在位元 314 °RNG存在位元314係表示RNG單元136是否存在於微處 理器100中。若RNG存在位元314為〇,則rng單元136不能藉 由設定RNG致能位元312來致能,並且,讀取msr 212中的 位元’結果係未疋義’而嘗试寫入,則不會產生任何效 果。此外,若RNG單元136的自我測試失敗,則RNG存在位 元3 1 4將被清除,如前文圖二部分所述。 [0 1 0 4 ] MSR 21 2也包括一唯讀的統計自我測試致能位 元3 1 6。自我測试致能位元3 1 6係表示前述圖二部分之重置 後的自我測試目前是否致能。若自我測試致能位元3 1 6為 0 ’則在重置之後’不會執行自我測試。若自我測試致能 位元3 1 6為1,則在重置之後,會執行自我測試。在一具體 貫施例中’在微處理器1 〇 〇的暖重置及電源開啟重置之 後,會執行自我測試。 [0 1 0 5 ] MSR 21 2也包括一唯讀的統計自我測試失敗位 元3 1 8。自我測試失敗位元3 1 8係表示前述圖二部分之最近 重置後的自我測試是否失敗。在一具體實施例中,若自我 測試失敗位元318為1,則RNG單元136無法被致能。 [0106] MSR 212也包括可寫入的直流偏壓位元322。 在一具體實施例中,直流偏壓位元322包括三個位元。直 流偏壓位元3 2 2係用以控制送到隨機位元產生器〇 2 〇 6的直 流偏壓’其會影響隨機位元產生器〇 20 6的運作速度及可 能的隨機度。在一具體實施例中,若在重置時執行統計自 我測試’則自我測試單元2 0 2會決定出直流偏壓位元3 2 2的
第29頁 1240200 五、發明說明(26) 正確值或最佳值,並將其設定為此值。在重置之後,直流 偏壓位元322的值即變為000。 [0107] MSR 212也包括可寫入的原始位元位元324。 若原始位元位元324設定為0,則圖二的白化器216會執行 前文圖二部分所述之白化功能,並將白化位元傳送到移位 暫存器218。若原始位元位元324設定為1,則白化器216不 會執行白化功能,而將來自於多工器214的原始位元傳送 到移位暫存器218。在重置之後,原始位元位元324的值即 變為0。 [0108] 圖三也顯示圖二中的CSR 226。在一具體實施 % 例中,CSR 226為128位元的暫存器。CSR 226包括唯讀的 可用位元組計數攔位332。可用位元組計數攔位332會指明 在store —select訊號2 6 6所選擇的緩衝器0 242或緩衝器1 246中,目前有多少位元組的隨機資料可藉由XST〇RE指令 來儲存。若有需要,可藉軟體來讀取可用位元組計數攔位 332 ’以判斷目前有多少隨機資料位元組可藉由XST〇RE指 令來儲存。由於RNG單元136會將位元組同步地累積至緩衝 器〇 242及緩衝器1 246,在執行XST0RE的時候,可儲存之 位元組的實際數目可能大於先前藉XL〇AD所讀取之可用位 g 元組計數332。在RNG單元136致能之後,可用位元組計數 欄位3 3 2的值即變為〇。 [0109] CSR 226也包括可寫入的串過濾裝置致能位元 3 34 °若串過濾裝置致能位元334為1,則串過濾裝置224被 致能;否則串過濾裝置224被除能。串過濾裝置224的運作
第30頁 1240200 五、發明說明(27) 在底下會配合圖十到十二,做更詳細地說明。在RNG單元 136致能之後,串過濾裝置致能位元334的值即變為〇。 [0110] CSR 226也包括可寫入的產生器選擇位元 3 3 6。若產生器選擇位元3 3 6設定為〇,則選取隨機位元產 生器0 2 0 6 ’以經由圖二之多工器2 1 4,提供隨機位元流加 以累積;否則’會選取隨機位元產生器1 208。在RNG單元 136致能之後,產生器選擇位元33 6的值即變為0。 [0111] CSR 226也包括串過濾裝置失敗位元Mg。若 串過濾裝置失敗位元338設定為1,係表示争過滤裝置224 偵測到一連續的相似位元串長於串過濾裝置max一cnt攔位 346所指定的值,如前文圖二及圖十到十二部分所述。只 有RNG單元136可將串過濾裝置失敗位元338設定為1。然 而,軟體可藉由將0寫入其中,清除串過濾裝置失敗位元 3 3 8。在一具體實施例中,過濾失敗位元3 3 8可藉由過濾失 敗訊號2 5 6之脈衝設定為1 ’並且維持於1,直到軟體將其 清除為止。在RNG單元136致能之後,串過濾裝置失敗位元 338的值即變為0。 [0112] CSR 226也包括可寫入的計數(CNT)致能位元 342。若CNT致能位元342設定為1,則CNT單元222會執行連 續的亂數產生器測試,如圖二部分所述。在RNG單元1 36致 能之後,CNT致能位元342的值即變為〇。 [0113] CSR 226也包括唯讀的CNT失敗位元344。若 CNT致能位元342為1且連續亂數產生器測試失敗,則RNG單 元1 3 6將CNT失敗位元344設定為1。在一具體實施例中,當
第31頁 1240200
CNT致能位元342及CNT失敗位元344同時為1時,執行 XST0RE指令會將可用位元組計數值〇儲存至系統記憶體, 而不會將資料位元組儲存於系統記憶體。因此,若一工作 设定了 C N T致能位元3 4 2,並且在此工作執行時發生失敗, 則針對此工作,RNG單元136會有效地被除能。然而,rng 單元136不會針對其他未設定CNT致能位元342的工作而除 能。在RNG單元136致能之後,CNT失敗位元344的值即變為 0。 [0114] CSR 226也包括可寫入的串過濾ι裝置 欄位346。軟體將值寫入串過濾裝置max —cnt欄位346,以 指定可容忍之最大數目的可允許連續相似位元,如底下圖 十到十二部分所述。在一具體實施例中,串過濾裝置 max一cnt 攔位346包括5個位元。在一具體實施例中,串過 濾裝置max_cnt 欄位346的預設值為26。 [0 11 5 ]在一具體實施例中,MSR 2 1 2的各個欄位係包 含於CSR 226,而不是MSR 212中。因此,MSR 212的值會 以CSR 226來做儲存及回存,以適用於多工運作,如此處 所述,特別是圖四到九的部分。 [0116] 圖三也顯示圖二的RNG R5暫存器238。尺5 2 3 8包括二個欄位:可用位元組計數欄位3 6 2,以及用於儲 存隨機資料位元組的另一欄位3 6 4 ’如上所述。在一具體 實施例中,有效的隨機資料位元組會向右調整至緊鄰可用 位元組計數攔位3 6 2。 [0117] 圖三也顯示SSE暫存器352 °SSE暫存器352
第32頁 1240200 五、發明說明(29) 包括8個128位元的暫存器,標示為XMM0到XMM7。在圖三 中,XMM0 稱為XMM0 3 72、XMM3 稱為XMM3 376、而XMM5 稱為 XMM5 374。在一具體實施例中,SSE暫存器3 52實質上近 似於Pentium III 或IV所包含的SSE暫存器,如IA-32英特 爾架構軟體開發者手冊第一冊:基本架構(2002年)之第 10-14頁所述,其在此加以參考併入。RNG CSR 22 6會遮蔽 (shadow)XMMO 372,而 RNG R5 238 會遮蔽 XMM5 374,如 下文所述。
[0 11 8 ]在一具體實施例中,微處理器1 〇 〇包括各種炫 絲,在微處理器1 00的製造過程中,其會暫時或永久地加 以設定,以便於重置時,能選取CSR 226及MSR 212中各個 位元的值,取代前述的重置值。
[0 11 9 ] 現請參照圖四,其繪示根據本發明,圖一之 微處理器100執行將值載入圖三XMM0暫存器372之指令的運 作流程圖。載入ΧΜΜ0 372的指令係由微處理器1〇〇執行, 其從系統記憶體將值載入ΧΜΜ0暫存器372中,如M0VAPS指 令。MOV APS指令將來自系統記憶體的資料搬移到指定的 XMM暫存器,反之亦然,這部分係敘述於ία-32英特爾架構 軟體開發者手冊第二冊:指令集參考(2001年)之第3 一 443頁到第3-444頁,其在此予以參考併入。其他從系統記 憶體載入ΧΜΜ0 372的指令,則如M0VAPD及M0VDQA。由於 ΧΜΜ0 3 72係作業系統在進行工作切換時,被儲存至記憶體 及從記憶體回存之暫存器,所以當工作切換發生時,作業 系統會執行如M0VAPS的指令,以從記憶體回存切換後之工
第33頁 1240200 五、發明說明(30) 作中,XMM0 3 72先前的值。流程從方塊402開始。 [0120]於方塊402中,微處理器1〇〇藉由提取一指令 (如MOV APS )於系統記憶體所指定位置的值,而執行該指 令,並將此值載入X Μ Μ 0 3 7 2。因此,任何時候從記憶體載 入ΧΜΜ0 372,皆可能發生工作切換。流程繼續進行至方塊 404 ° [0121 ]於方塊404中,指令轉譯器1〇6會告知RNG單 元136,M0VAPS指令(或其他從記憶體載入χμμο 372的類似 指令)已被轉譯。一旦此值已載入ΧΜΜ0 372,RNG單元136 的控制邏輯244會設定TSP0旗標274,以表示可能發生工作 切換。流程會結束於方塊404。 [0 1 2 2 ]請現請參照圖五,其係繪示根據本發明,圖 一微處理器100於執行XL0AD指令時之運作方塊圖。xl〇ad 指令係軟體藉以將值載入圖二之CSR 226的工具,以指定 RNG單元136運作所需之控制值。因為CSR 22 6不存在於 Pentium III或IV中,所以需要pentiUm III或IV指令集 外的新指令,以載入CSR 22 6。有利的是,XL0AD指令也會 將控制值載入ΧΜΜ0 372,便於以RNG單元136進行多工操 作,如此處所述。 [0123]圖五顯示了指定XMM0 372之xl〇ad指令的格 式,其為: XLOAD XMMO, memaddr 其中memaddr指定了系統記憶體5〇2中之一記憶體位 址。XL0AD指令的運作與movaps指令類似,不過前者除了
第34頁 1240200 五、發明說明(31) XMM0 3 72外,亦會將系統記憶體的值載入CSR 22 6。在一 具體實施例中,X L 0 A D會將1 6個位元組的資料$ 〇 4從 memaddr移到CSR 226及XMM0 372,如圖所示。在一具體實 施例中,XL0AD指令的運算碼值為〇x〇F 0x5a,其後接著 χ86指令所指定之標準m〇d R/M暫存器及位址格式位元組。 在另一具體貫施例中’ X L 0 A D指令的運算碼值則為〇 χ 〇 ρ 0xA6 OxCO。若XL0AD指令指定SSE暫存器352中的一個, 而非XMM0 372,則會載入指定的SSE暫存器352 ;然而,並 不會載入CSR 226。
[0 1 2 4 ]現請參照圖六,其繪示根據本發明,圖一之 微處理器100執行將值載入圖三XMM0暫存器372之XL0AD指 令的運作流程圖。流程從方塊6 〇 2開始。 [0 1 2 5 ]於方塊6 0 2中,微處理器1 〇 〇將系統記憶體5 〇 2 中’XL0AD才曰令所指定之記憶體位址的值,載入圖二的csr 226及圖二的XMM0 372,如圖五所示。流程繼續進行至方 塊6 04。
[0126]於方塊604中,由於累積於緩衝器〇 242及緩 衝器1 246的隨機資料位元組並不會隨著CSR 226中的控制 值而產生’其中這些控制值係正載入CSR 226的新工作之 所需,所以RNG單元136會回應CSR 226的載入動作,而丢 棄緩衝器0 242及緩衝器1 246的内容。流程繼續進行至方 塊6 0 6。 [0127]於方塊60 6中,由於缓衝器0 242及緩衝器1 2 4 6中的隨機資料位元組在方塊6 〇 4時被丟棄,所以r n G單
第35頁 1240200 五、發明說明(32) 元136會將计數器0 211及計數器1 213中之可用位元組計 數清除為〇。流程繼續進行至方塊6 〇 8。 [0128] 於方塊6 0 8中,RNG單元136重新開始累積亂 數。亦即’產生器選擇訊號252所選取之隨機位元產生器 206或208,在隨機位元產生器〇 2〇6的情況下,會依據直 流偏壓訊號2 9 6來產生隨機位元;白化器2丨6則依據原始位 元訊號254,選擇性地白化這些位元;CNT單元222根據CNT 致能訊號2 8 4 ’選擇性地執行連續亂數產生器測試;串過 濾裝置224根據過渡致能訊號262及max —cnt訊號258,選擇 性地過濾移位暫存器2 1 8所累積的位元組;緩衝器〇 2 4 2及 缓衝器1 246依據fill—seiect訊號264,累積隨機資料位 元組;而計數器〇 211及計數器1 213則依據fill —seiect 訊號2 64,計算緩衝器〇 242及緩衝器1 246中所累積的位 元組數目。 [0129] 於方塊612中,由於CSR 2 2 6已被更新為目前 工作所需要的控制值,所以控制邏輯244會清除TSPO旗標 2 74。流程會結束於方塊612。 [〇 1 3 0 ]現請參照圖七,其係繪示根據本發明,圖一 微處理器100於執行XSTORE指令時之運作方塊圖。XSTORE 指令係軟體藉以將可用隨機資料位元組的計數值及本身從 R5 2 38儲存至系統記憶體的工具。因為rNg R5 238不存在 於Pentium III或IV中,所以需要Pentium III或IV指令 集外的新指令,以儲存RNG R5 238。有利的是,XSTORE指 令會以整體不可分割的方式,將計數值及資料位元組寫入
第36頁 1240200 五、發明說明(33) ~ 記憶體,便於以RNG單元136進行多工操作,如此處所 述。亦即,XST0RE指令是不可中斷的。因此,當某工作執 行XST0RE指令時,另一工作不可中斷xST0RE指令來修改要 藉由XST0RE指令,寫入系統記憶體的可用位元組計數或隨 機資料位元組。因此,藉由整體不可分割的方式寫入資料 及計數值,XST0RE指令提供了數量可變之隨機資料位元 組,本質上有利地便於多工的進行。 [0131 ]圖七係顯示XST0RE指令的格式,其為: XSTORE memaddr, XMM5
Memeddr會指定系統記憶體502中的記憶體位 址。XSTORE指令的運作與M0VAPS指令類似,除了所指定的 XMM暫存器不會儲存至系統記憶體;取而代之的是,若指 定了 XMM5 3 74,則R5 2 38會被存至系統記憶體。亦即,R5 238會遮蔽XMM5 374。XSTORE會將圖三之可用有效隨機資 料位元組362的計數值,從R5 238移到系統記憶體5 0 2中 memaddr的位置702,如圖所示。此外,XSTORE將計數值 3 62所指定之有效隨機位元組的資料364,移到系統記憶體 502中緊鄰可用位元組計數702的位置704,如圖所示。 [0132]在一具體實施例中,XST0RE^令的運算碼值 為OxOF 0x5B,其後接著以6指令所指定之標準m〇d r/M暫 存器及位址格式位元組。在另一具體實施例中,XST〇RE指 令的運算碼值為〇x〇F 〇χΑ7 0xC0。在一具體實施例中, XSTORE指令要求暫存器檔案1〇8中的ES : EDI暫存器來指定 memaddr ’亦即,指到要儲存計數及隨機資料位元組的起
第37頁 1240200 五、發明說明(34) --- ,記憶體位址。在一具體實施例中,XST0RE不允許區段重 疊。若XST0RE指令指定了 SSE暫存器3 52的其中一個,而 非XMM5 374,則結果會呈未定狀態。 [0133]在一具體實施例中,微處理器1〇〇儲存於系 記憶體之隨機資料位元組7〇4的數目,係等於也寫入系統 吕己憶體之可用位元組計數7 〇 2。 二[0134]在另一具體實施例中,微處理器1〇〇儲存於系 統記憶體之隨機資料位元組704的數目,係等於一個比RNG R5 238中之位元組還少的數目。亦即,若RNG R5 238為“ 個位元組的暫存器,可儲存最多達1 5個隨機資料位元組 3^4及個位元組的可用位元組計數362,則微處理器1〇〇 二,1 6個位元組存至系統記憶體5 〇 2 :丨5個位元組的隨機 貝料存到隨機資料位元組7 〇 4的位置,而一個計數位元組 則存到可用位元組計數7〇2的位置。然而,在寫入系統記 的15個位元組中,某些可能不是有效的。在一具 口貝=例中,寫入記憶體之位元組的數目皆為2的次方。 二有刖N個位元組是有效的,其中n為可用位元組計數 γςτη^135]在此具體實施例中,RNG單元136會清除 , 運异所指涉的緩衝器(亦即,圖二之緩衝器〇 2 4 2或 個工态 246)。藉由清除緩衝器,微處理器100可避免各 性?作看到彼此之隨機資料所產生的問題,而提爵安全 一 例如’假設第一工作執行第一XStore運算,將1 5個位 ^ ^匕機資料從缓衝器〇 242儲存到系統記憶體,並執
第38頁 1240200 五、發明說明(35) 行第二XST0RE運算,將15個位元組的隨機資料從缓衝器1 246儲存到系統記憶體;然後作業系統切換到第二工作, 其會在RNG單元1 36將任何隨機資料位元組累積到緩衝器〇 242之前,立即執行XST0RE運算。若在第一XST0RE運算 後,RNG單元1 3 6未清除緩衝器〇 24 2,則第一工作所接收 到的隨機"k料也會儲存到第二工作的記憶體位置,如此會 使第二工作看到第一工作的隨機資料。 [0136] 在一具體實施例中,XST〇RE^令指定了要存 至系統記憶體之最大數目的隨機資料位元組。在此具體實 施例中,該最大數目係指定於暫存器稽案1 〇 8之其中一個 一般用途暫存器中,如ECX。在此具體實施例中,若 store一select訊號2 66所選取之緩衝器0 242或緩衝器1 246中的可用位元組多於ECX中所指定的最大數目,則微處 理器1 0 0只會儲存E C X中所指定之最大數目的位元組;否 則’ X S T 0 R E指令會儲存可用數目之有效位元組。在前述任 一種情況下,XST0RE指令皆會將存至系統記憶體5〇2之資 料位元組位置7 0 4之有效隨機資料位元組的數量,儲存到 可用位元組計數位置7 0 2。 [0137] 在一具體實施例中,XST〇R^_令指定了要存 至系統記憶體之所需數目的隨機資料位元組。在此具體實 施例中,該所需數目係指定於暫存器播案1 〇 8之其中一個 一般用途暫存器中,如ECX。在此具體實施例中,xsTORE 指令係加上一x86 REP前置碼(prefix)。在此具體實施例 中’ REP XST0RE指令並非需連續執行的。亦即,因為所需
1240200 五、發明說明(36) 之隨機位元組的赵曰叮人, 娜认 ^ ^ 双目可月匕會很大,所以REP XST0RE是可中 鐵的”、、 由於所儲存之隨機資料位元組的數目是不可 ^齡^卩人體知道將要存至記憶體之隨機資料位元組 的數目),所以指令不必連續執行。 / [ 1 3 8 j見明參照圖八,其係繪示根據本發明,圖一 ^^二^’⑽執行來白於圖三麗^存器之⑽議指令 、乍/瓜矛王圖。流程從方塊802開始。 = 人在方塊8〇2中,對於圖一之指令轉譯器106通 λ 、 曰7已轉譯,中斷單元146會回應以將中斷除 月匕。流程繼續進行判斷方塊8 〇 4。 [〇140]在判斷方塊804中,圖二的控制邏輯244會檢 查TSP0旗標274,以判斷旗標是否設定。若設定,則流程 會繼續進行方塊80 6。否則,流程會繼續進行方塊816。 、[0141]在方塊8〇6中,RNG單元136會將χΜΜ〇 372的内 容複製到CSR 2 2 6,並且會清除TSP〇旗標274。由於Tsp〇旗 標2J4係表示自前次XST〇RE或XL〇AD執行以後,工作切換已 可能發生,就如圖四之步驟4〇2中,從系統記憶體載入 XMMO 37g所表示的,所以CSR 22 6可能不具有目前執行 XST/ORE指令的工作所需之正確控制值。因此,xst〇re指令 必須以正確的控制值來更新CSR 22 6。正確值係儲存於 ΧΜΜ0 372中,此因當工作初始時,該正確控制值係藉由執 行XL0AD而被載入XMM0 372及CSR 2 26中,而後當作業系統 切回至目前工作時,正確控制值亦被回存至χΜΜ〇 372。流 程會繼續進行方塊8〇8。
1240200
[0142]在方塊80 8中,因為累積於緩衝器〇 242及緩 衝器1 246的隨機資料位元組,不會隨著csr中新工作所需 之新控制值而產生,其中這些新控制值係於方塊8〇6中被# 複製到CSR 226中,所以RNG單元136會回應CSR 226的載 入,而丟棄緩衝器〇 242及緩衝器1 246的内容。流程會繼 續進行方塊81 2。 9 [0143]在方塊812中,因為在方塊808,會丟棄在緩 衝器0 242及緩衝器1 246中的隨機資料位元組,所以在計 數器0 211及計數器1 213中,rNG單元136會將可用位元組 計數清除為0。流程會繼續進行方塊8丨4。 [0144]在方塊814中,RNG單元136會重新開始亂數的累 積,如圖六之方塊6 〇 8部分所述。流程會繼續進行方塊 816 。 [0145] 在方塊816中,RNG單元136會連續地將R5 238 儲存於系統記憶體5〇2中,由XST0RE指令所指定之記憶體 位址,其會保持store —select訊號266所指定之計數器〇 211或δ十數器1 213的值,以及store —select訊號2 6 6所指 定之緩衝器0 242或緩衝器1 246中的有效隨機資料位元 組’如圖七所示。流程會繼續進行方塊8丨8。 [0146] 在方塊818中,因為在方塊816,有效隨機資 料位元組已被儲存至記憶體的動作所消耗,所以控制邏輯 244會將α除訊號223設為真,以清除store —seiect訊號 266所指定之計數器〇 211或計數器j 213。流程會繼續進 行方塊822。
1240200 五、發明說明(39) 6 0 8以及612,RNG單元136會回應XL0AD,而丟棄緩衝器0 242及緩衝器1 246的内容、清除計數器〇 211及計數器1 21 3、重新開始亂數的產生與累積以及清除1^?〇旗標274。 流程會繼續進行方塊9 0 8。 [0153] 在方塊908中,工作A執行XST0RE指令,以儲 存依據方塊904載入至CSR 226之控制值a所產生的隨機資 料。流程會繼續進行方塊9 1 2。 [0154] 在方塊912中,為了執行前一方塊的XST0RE,
RNG單元136會連續地將於方塊90 6重新開始後所累積的計 數值及資料,儲存至系統記憶體,如圖七及圖八所示。流 程會繼續進行方塊9 1 4。 [0 1 5 5 ]在方塊9 1 4中,作業系統會執行從工作A到工 作B的工作切換。其中,作業系統會將ΧΜΜ〇 372的值(其包 含控制值Α)儲存至系統記憶體,以保留工作a的狀態。然 而’作業系統不知道CSR 226的情況,所以作業系統不會 將C S R 2 2 6儲存至系統記憶體以保留其狀態。流程會繼續 進行方塊916。
[0156] 在方塊916中,根據圖四的步驟404,RNG單元 136會回應在方塊914之XMM0 372的載入,而設定TSPO旗標 2 74。流程會繼續進行方塊91 8。 [0 1 5 7 ]在方塊91 8中,作業系統啟動工作B,並且工 作B的初始碼會執行XL〇AD sXMM〇 3 72的指令,以所要的控 制值(表示為值B)來初始tCS]R 22 6及ΧΜΜ〇 372。流程會 繼續進行方塊922。
第43頁 1240200 五、發明說明(40) [0158] 在方塊922中’根據圖六的方塊604、606、 608以及612 ’ RNG單元136會回應XL0AD,而丟棄緩衝器〇 242及緩衝器1 246的内容、清除計數器〇 211及計數器1 213、重新開始亂數的產生與累積以及清除了^〇旗標274。 流程會繼續進行方塊9 2 4。 [0159] 在方塊924中,工作B執行XST0RE指令,以儲 存依據方塊918載入至CSR 226之控制值B所產生的隨機資 料。流程會繼續進行方塊924。 [0160] 在方塊926中,為了執行前一方塊的xsTORE, RNG單元136會連續地將於方塊92 2重新開始後所累積的計 數值及資料’儲存至系統記憶體,如圖七及圖八所示。流 程會繼續進行方塊928。 [0 1 6 1 ]在方塊9 2 8中’作業糸統會執行從工作b到工 作A的工作切換。其中,作業系統會將〇漏3 72的值(其包 含控制值B)儲存至糸統記憶體,以保留工作b的狀態。然 而’作業系統不知道CSR 226的情況,所以作業系統不會 將C S R 2 2 6儲存至系統記憶體以保留其狀態。此外,作業 系統會回存工作A的狀態,其包括將先前在方塊9丨4所保留 的值A,從系統記憶體載入到χΜΜ0 372。流程會繼續進行 方塊9 3 2。 [0162] 在方塊932中,根據圖四的步驟404,RNG單元 136會回應在方塊928之ΧΜΜ0 372的載入,而設定TSP0旗標 2 7 4。流程會繼續進行方塊9 3 4。 [0163] 在方塊934中,工作A執行xsTORE指令,以儲
1240200 五、發明說明(41) 存依據方塊904載入至CSR 226之控制值A所產生的隨機資 料。然而,在方塊918,CSR 226中之值A會被覆寫。因 此,目前累積於緩衝器〇 242及緩衝器1 246的隨機資料位 元組並非依據值A產生,而是依據值B而產生。流程會繼續 進行方塊936。 [0164] 在方塊93 6中,RNG單元136依圖八的方塊 804,判斷TSP0旗標274已設定,於是會依據圖八的方塊 80 6,將XMM0 372的内容複製到CSR 226,藉以將值A回存 至CSR 226。此外,由於CSR 226已被回存,所以根據方塊 80 6,RNG單元136會清除TSP0旗標2 74。流程會繼續進行方 塊938。 [0165]在方塊938中,根據圖八的方塊8 08、812以及 814,RNG單元136會回應方塊936中複製到CSR 226的動 作,而丟棄緩衝器0 242及緩衝器1 246的内容、清除計數 器0 2 11與計數器1 2 1 3以及重新開始亂數的產生及累積。 流程會繼續進行方塊942。 、 仰一 [0166]在方塊942中,為執行方塊934的XST〇RE,Rng 單兀1 3 6會連續地將於先前的方塊重新開始後所累積之 數值及:貝才斗’儲存至系統圮憶體,如圖七及圖八所示 此兄下,由於在先前方塊中’已清除計數器〇 211及計 數器1 213,並丟棄緩衝器〇 242及緩衝器丄246的内容°, 所以值為〇,J未有有效隨機資料位元組儲存到系统 記憶體中。流程會繼續進行方塊944。 [〇167]在方塊944中,工作A執行XST0RE指令,以铸
第45頁 1240200 五、發明說明(42) 存依據方塊904載入至CSR 226之控制值a所產生的隨機資 料,其中CSR 226在方塊936,已回存為值a。流程會繼續 進行方塊946。 [0168] 在方塊946中’為執行先前方塊的XST〇RE, RNG單元136會連續地將於方塊938重新開始後所累積之計 數值及資料,儲存至系統記憶體,如圖七及圖八所示。流 程會繼續進行方塊948。 [0169] 在方塊948中,工作A執行XST0RE指令,以儲 存依據方塊904載入至CSR 226之控制值a所產生的隨機資 料,其中CSR 226在方塊936,已回存為值A。流程會繼續 進行方塊952。 [0170] 在方塊952中’為執行先前方塊的xst〇re, RNG單元136會將於方塊938重新開始後所累積之計數值及 資料’扣掉方塊944中由前次XST0RE所儲存的位元組,再 將結果連續地儲存至系統記憶體,如圖七及圖八所示。流 程則結束於方塊9 5 2。 [〇 1 71 ]現在參照圖十,其係繪示根據本發明,圖一 微處理HIGH,圖二RNG單元136之串過渡裝置叫的方塊 圖。 [0172]配合本發明的目的,前導的1位元係定義為一 =元組開頭的連續Hu—個位元組可能包含〇到8個 刖導的1位兀。例如,位元組000 1 1 1 1 1具有5個前導的^立 兀;位元組111 11110具有0個前導的!位元;而位 111 11 1 11則具有8個前導的1位元。 、’ 1240200
[0173]配合本發明的目的,前導的0位元係定義 t元組開頭的連續仏元。—個位(组可能包含0到8個 則導的0位70。例如’位元組⑴⑽⑽具有5個前導的〇位 兀,位兀組〇〇〇〇〇001具有〇個前導的〇位元;而位元組 00000000則具有8個前導的〇位元。
[—0174]配合本發明的目的,尾端的1位元係定義為一 兀組結尾的連續!位元;然而一個均為丨的位元組則定 為沒有尾端的1位元。一個位元組可能包含〇到7個尾端 的1/立元。例如,位元組1 1 1 1 0000具有4個尾端的1位元; 位元組1 1 1 1 1 1 1 〇具有7個尾端的i位元;位元組〇 1 1 1 1 1 1 1具 有〇—個尾端的1位元;而位元組丨丨丨丨丨丨丨丨則具有〇個尾端的、工 [一〇 1 7 5 ]配合本發明的目的,尾端的〇位元係定義為一 個位=組結尾的連續〇位元;然而一個均為〇的位元組則定 義為沒有尾端的〇位元。一個位元組可能包含〇到7個尾端 的〇/立元。例如,位元組〇〇〇〇1111具有4個尾端的〇位元; 位元組0 0000001具有7個尾端的〇位元;位元組1〇〇〇〇〇 具 有〇個尾端的〇位元;而位元組0 0 0 0 0 0 0 0則具有0個尾端的1 位元。 [0176]串過濾裝置224包括比較邏輯1〇〇2。比較邏輯 1〇〇2會從圖二的移位暫存器218接收隨機資料位元組298。 比較邏輯1〇〇2會檢查隨機資料位元組298中的位元值,並 且產生用於偵測1及〇之連續位元串的各種訊號,如以下所 述。
1240200 五、發明說明(44) [0177] 比較邏輯1〇〇2會產生num—leading — ones訊號 1 0 2 2A,以指定隨機資料位元組298中前導1位元的數目。 [0178] 比較邏輯1〇〇2會產生num — trailing — ones訊號 1 028A,以指定隨機資料位元組298中尾端1位元的數目。 [0179] 比較邏輯1〇〇2也會產生all—ones訊號1 048A, 若隨機資料位元組2 9 8包含均為1的位元,則此訊號為真。 [0180] 比較邏輯1〇〇2也會產生leading —ones訊號 1 036A,若隨機資料位元組298包含前導的1位元,則此訊 號為真。 [0181 ]比較邏輯1〇〇2也會產生trail ing_ _ones訊號 1 038A,若隨機資料位元組2 98包含尾端的1位元,則此訊 號為真。 [0182] 串過濾裝置224也包括第一計數器1016A,以 儲存連續1位元的現時計數。在一具體實施例中,計數器 1016A包括一 6位元的暫存器。計數器1016A的輸出為 ones —cnt 訊號1 024A 〇 [0183] 串過濾裝置224也包括第一加法器1012A,其 將num—leading —ones 訊號1 0 22A 與ones-cnt 訊號1 024A 相 加,以產生new_ones —cnt 訊號 1 0 2 6A。 [0184] 串過濾裝置224也包括四輸入端之第一多工器 1014A。多工器1014A在其輸入端接收〇nes_cnt訊號 1 024A、new_ones_cnt 訊號1 026A、num_trai 1 ing—ones 訊 號1 028A以及固定(hard-coded)的零值1 032A。多工器 1014A會依據one__select訊號1 042A,選取其中一輸入端,
第48頁 1240200 五、發明說明(45) 輸出到計數器101 6A。 [0185] 比較邏輯1002 會產生num__leading_zeros 訊號 1 0 2 2 B,以指定隨機資料位元組2 9 8中前導〇位元的數目。 [0186] 比較邏輯1002 會產生num — trailing — zeros 訊 號1 028B,以指定隨機資料位元組2 98中尾端〇位元的數 目。 [0187] 比較邏輯1002也會產生all__zeros訊號 1 0 4 8 B,若隨機資料位元組2 9 8包含均為〇的位元,則此訊 號為真。 [0188] 比較邏輯1002也會產生leading — zeros訊號 1 0 3 6B,若隨機資料位元組298包含前導的〇位元,則此訊 號為真。 [0189] 比較邏輯1002也會產生trailing — zeros訊號 1 0 3 8 B,若隨機資料位元組2 9 8包含尾端的〇位元,則此訊 號為真。 [0190] 串過濾裝置224也包括第二計數器1016B,以 儲存連續0位元的現時計數。在一具體實施例中,計數器 1016B包括一 6位元的暫存器。計數器i〇i6B的輸出為 zeros —cnt 訊號 1 024B。 [0191 ]串過濾裝置224也包括第二加法器1 01 2B,其 將num—leading —zeros 訊號1〇22B 與zeros —cnt 訊號1 024B 相 加,以產生new_zeros — cnt 訊號 1 0 26B 〇 [0192]串過濾裝置2 24也包括四輸入端之第二多工器 1014B。多工器1014B在其輸入端接收zeros_Cnt訊號
1240200 五、發明說明(46) 1 024B、new —zeros —cnt 訊號1 026B、num_trai ling —zeros 訊號1 0 28B以及固定的零值1 032B。多工器1014B會依據 zero_select訊號1 042B,選取其中一輸入端,輸出到計數 器 1016B 〇 [0193] 串過濾裝置224也包括第一比較器1 046A,其 將new_ones — cnt 訊號1026A與圖二中的max_cnt訊號258做 比較。若new_ones —cnt 訊號1 0 2 6A 大於max —cnt 訊號258, 則比較器1046A會產生真值的ones_exceeded訊號1034A ; 否則,比較器1046A產生偽值的〇nes_exceeded訊•號 1034A 。 籲 [0194] 串過濾裝置224也包括第二比較器1 046B,其 將new_zeros —cnt 訊號1026B與圖二中的max_cnt 訊號258 做比較。若new_zeros —cnt 訊號1 0 2 6B大於max—cnt訊號 258 ’則比較器1046B會產生真值的zeros__exceeded訊號 1034B ;否則’比較器1046B產生偽值的zeros — exceeded訊 號 1 034B。 [0195] 串過濾裝置224也包括兩輸入端的或閘(〇R gate) 1 0 04,其輸入端係耦接至比較器i〇46A及比較器 1046B的輸出端。或閘1〇〇4在其輸入端接收〇nes_exceeded _ 訊號1 034A及zeros 一 exceeded訊號1 0 34B。或閘1 0 04會產生 max — cut — exceeded訊號1044 ’以作為選擇邏輯1〇〇6的輸 入0 [0196] 串過濾裝置224也包括兩輸入端的及閘(AND gate) 1 008,其耦接至或閘1 004。及閘loos之一輸入端接
第50頁 1240200 五、發明說明(47) 收來自於或閘1004的max_cnt_exceeded訊號1044,而另一 輸入端則接收圖二之過濾致能訊號26 2。及閘1 0 08的輸出 係圖二之過濾失敗訊號256。
[0197]串過濾裝置224也包括選擇邏輯1 0 0 6,其接收 all—ones 訊號 1 048A、leading_ones 訊號 1 03 6A、 trailing—ones 訊號 1038A、maX-Cnt —exceeded 訊號 1044、 leading— zeros 訊號 1036B、trailing_zeros 訊號 1038B 以 及all_zeros訊號1 048B。選擇邏輯1 0 0 6根據以下的程式 碼,來產生one —select訊號1042A及zero_select訊號 1042B 〇
第51頁 1240200 五、發明說明(48) retain—counts =max_cnt—exceeded & filter enable, increment—zeros = all—zeros & (! retain—counts〉, load一zeros = trail 一zeros & (! retain 一counts) & (!increment_zeros); clear一zeros = (Iretain一counts) & (!increment一zeros) & (!load_zeros); increment一ones = all_ones & (!retain_counts), load_ones = trail—ones & (! retain—counts〉& (!increment_c〇unts); clear一ones =(!retain—counts) & 〇increment—ones) & (!load—ones); if〔retain一counts) { zero_select=3, //選棵 zeros_cnt 音輸入 }else if(irurement__zeros) { zero_select=2;"選棵 new—zeros_cnt 當輪入 } else if〈load一zeros) {
zero_select=l; /7選擇 num—tiailing_zeros 當输入 } else if(clear_zeros) { zero—select=0; //選擇 hard—coded 0 者输入 } " ~ if (retain__counts) { one_select=3; /7選擇 ones_cnt 當輸入 }else if(increment_anes) { one 一select=2; //選棵 new—ones一cnt 當輪入 } else if(load__ones) { one 一sdect=l;"選棵 imm_traUing一ones 當输入 } else if(clear__ones) { one_sdect=0; //選擇 hard—coded 0 當輸入
[0 1 9 8 ]現在參照圖十一,其係繪示根據本發明,圖 十之串過濾裝置224的運作流程圖。流程從方塊1102開 始。 [0199]在方塊1102中,計數器1016A及1016B會初始
第52頁 1240200 五、發明說明(49) 化為0。流程會繼續進行方塊1 1 0 4。 [ 0 20 0 ]在方塊11〇4中,圖一之RNG單元136產生1位元 組的隨機資料於圖二之隨機位元組訊號2 9 8中’而比較邏 輯1 0 0 2則依據隨機資料位元組的檢查結果,產生其訊號。 流程會繼續進行方塊11 〇 6。 [ 0 2 0 1 ] 在方塊1106中,加法器1012A將 num—leading_ones 1022A 與 ones — cnt 1024A相加’以產 生 new_ones —cnt 1026A,而加法器1012B 則將 num_leading-Zeros 1 022B 與 zeros —cnt 1 024B相加,以產 生new—zeros — cnt 1 0 26B 〇流程會繼續進行判斷方塊 1112。 [0202]在判斷方塊1112中,選擇邏輯1〇〇6檢查 max一cnt— exceeded 1 044 ,以判斷連續0或1的數目是否已 超過max-cnt 2 58。若是,流程會繼續進行判斷方塊 111 4。否則,流程會繼續進行判斷方塊丨丨24。 [ 0 2 0 3 ]在判斷方塊π 14中,及閘1〇〇8檢查過濾致能 訊號262,以判斷串過濾裝置224是否致能。若是,及閘 1 0 0 8會產生真值於圖二之過濾失敗訊號2 5 6。流程會繼續 進行方塊111 8。 [0204]在方塊ills中,控制邏輯244回應具真值之過 濾失敗訊號256,而不將圖二之遞增訊號221設為真,並且 不使機位元組298被載入缓衝器〇 242或緩衝器1 246, 即使移位暫存器218已產生真值之位元組產生㈣⑽。因 此,由於隨機位元組298已使連續!或〇的數目超過max_cnt
第53頁 1240200 五、發明說明(50) 2 58,所以RNG單元136會丟棄隨機位元組298。流程會繼續 進行方塊11 2 2。 [ 0 20 5 ]在方塊1122中,選擇邏輯1〇〇6於〇ne_select 訊號1 042A及zero__sel ect Ifl號1 〇42B中,皆產生3的值,以 使多工器1014A及1014B分別保留目前的oneS-Cnt 1 024A及 zeros —cnt 1 024B。流程接著返回方塊11 〇4。
[0206]在判斷方塊1124中,選擇邏輯1006檢查 all—zeros訊號1 048B,以判斷隨機資料位元組298是否均 為0。若是,流程會繼續進行方塊1126。否則,流程會繼 續進行判斷方塊1128。 [ 0 20 7 ]在方塊1126中,選擇邏輯1 0 0 6於zero_select 訊號1042B中產生2的值,以使多工器1014B選取 new —zeros_cnt 訊號 1 026B,並且於one_select 訊號 1 042A 中產生0的值,以使多工器1014A選取固定的0值輸入 1 032A。流程會繼續進行方塊1148。
[0208]在判斷方塊1128中,選擇邏輯1006檢查 trailing_zeros訊號1 0 38B,以判斷隨機資料位元組298是 否包含任何的尾端0。若是,流程會繼續進行方塊1132。 否則,流程會繼續進行方塊1134。 [ 020 9 ] 在方塊1132中,選擇邏輯1〇〇6於zero —select 訊號1042B中產生1的值,以使多工器1014B選取 num一trailing — zeros 訊號 1028B,並且於one一select 訊號 1042A中產生〇的值,以使多工器1014A選取固定的〇值輸入 1 0 3 2 A。流程會繼續進行方塊11 4 8。
第54頁 1240200 五、發明說明(51) [0210] 在方塊1134中,選擇邏輯1〇〇6於zero 一 select 訊號1 0 42B中產生〇的值,以使多工器1014B選擇固定的〇值 輸入1 0 3 2 B。流程會繼續進行判斷方塊11 3 6。 [0211] 在判斷方塊11 36中,選擇邏輯1〇〇6檢查 all—ones訊號1 048A,以判斷隨機資料位元組298是否均為 1。若是,流程會繼續進行方塊11 3 8。否則,流程會繼續 進行判斷方塊1142。 [0212] 在方塊1138中,選擇邏輯1 0 0 6於one_select 訊號1042A中產生2的值,以使多工器1014A選擇 new —ones — cnt 訊號1 0 26A。流程會繼續進行方塊11 48。 [0213] 在判斷方塊1142中,選擇邏輯1 0 0 6檢查 trai 1 ing —ones訊號1 0 38A,以判斷隨機資料位元組2 98是 否包含任何的尾端1。若是,流程會繼續進行方塊1144。 否則,流程會繼續進行方塊1146。 [0214]在方塊1144中,選擇邏輯1 0 0 6於one_select訊號 1042A中產生1的值,以使多工器1014A選擇 num 一 trai 1 ing 一 ones訊號1 028A。流程會繼續進行方塊 1148。 [0215]在方塊1146中,選擇邏輯1 00 6於one_select 訊號1042A中產生0的值,以使多工器1014A選擇固定的0值 輸入1 0 32A。流程會繼續進行方塊1 148。 [021 6 ]在方塊1148中,控制邏輯244使隨機資料位元 組298被載入由fill —select訊號264所選擇之缓衝器0 242 或緩衝器1 246中,並將遞增訊號221設為真,以遞增由
1240200 五、發明說明(52) fill — select訊號264所選擇之計數器〇 211或計數器1 2 1 3。流程接著返回方塊1 1 0 4。
[0 2 1 7 ]現在參照圖十二,其係繪示根據本發明的另 一具體實施例,圖一微處理器100執行XST0RE指令之運作 方塊圖。圖十二的XST0RE指令係類似於圖七的xst〇RE指 令’不過在此具體實施例中,有效隨機資料位元組的計數 值會被載入暫存器檔案10 8之其中一個一般用途暫存器 中,如EAX 1 20 2暫存器,而不會儲存至系統記憶體。有利 的是’與圖七的XSTORE指令類似,圖十二的xst〇RE指令會 連續地將計數值載入EAX,並將隨機資料位元組儲存至記 憶體,以促進與RNG單元136的多工運作。也就是,圖十二 的XSTORE指令也是不可中斷的。 [0 2 1 8 ]現在參照圖十三,其係繪示根據本發明,圖 二RNG單元136之多重緩衝buffering)運作的流程 圖。流程係從方塊1 3 0 2開始。 [0219]在方塊1 302中,重置訊號248被設為真。流程 會繼續進行方塊1 3 0 4。
[ 022 0 ]在方塊1 304中,圖二之控制邏輯244將 fill — select 訊號264 及store —select 訊號266 初始化為〇, 並回應方塊1302的重置動作而清除計數器〇 211及計數器1 213。流程會繼續進行判斷方塊丨3〇 6。 [ 022 1 ]在判斷方塊13〇6中,控制邏輯244檢查xst〇re 訊號2 68,以判斷是否已執行XST〇RE指令。若是,流程會 繼續進行判斷方塊1 3 0 8。否則,流程會繼續進行判斷方塊
第56頁 1240200 五、發明說明(53) 1 322。 [ 0 222 ]在判斷方塊1 30 8中,控制邏輯244判斷由產生 器選擇訊號252所選擇之隨機位元產生器〇 20 6或隨機位元 產生器1 208的電源是否已關閉。若是,流程會繼續進行 方塊1 3 1 2。否則,流程會繼續進行方塊1 3 1 4。 [ 0 22 3 ]在方塊1312中,控制邏輯244藉由 power —cntrl訊號231開啟所選擇之隨機位元產生器的電 源。流程會繼續進行方塊1 3 1 4。 [0224]在方塊1314中,根據圖八的方塊816及如圖七 所示,微處理器100將由store 一 select訊號2 66所選擇之計 數器0 211或計數器1 213的值,以及由store_select訊號 266所選擇之緩衝器0 242或缓衝器1 246中的有效資料位 元組,連續地儲存至系統記憶體。流程會繼續進行方塊 1316 〇 [ 0 22 5 ]在方塊1316中,控制邏輯244將清除訊號223 設為真,以清除由store — select訊號26 6所選擇之計數器0 2 11或計數器1 2 1 3。流程會繼續進行方塊1 3 1 8。 [ 0226 ]在方塊1318中,控制邏輯244更新 store_select訊號266,以選擇另一個緩衝器及計數器。 在RNG單元136包含二個以上緩衝器的實施例中, store — select訊號266包括多於1個的位元,並且更新 store —select訊號266的動作包括遞增store_select訊號 2 6 6,以及當遞增超過緩衝器的數目時,會回歸為〇。流程 會繼續進行方塊1 3 2 2。
第57頁 1240200 五、發明說明(54) 一 [ 0 22 7 ]在判斷方塊1 322中,控制邏輯244檢查位元組 產生訊號282是否為真及檢查過濾失敗訊號256是否為偽, 以判斷是否產生了良好的隨機資料位元組。若已產生,流 程會Μ續進行方塊1 3 2 4。否則,流程會繼續進行判斷方塊 1 3 0 6。 [0228]在方塊1324中,控制邏輯244將良好的隨機資 料位元組載入由fiU —select訊號264所選擇之缓衝器〇 242或緩衝器1 246中,並且遞增由fill—seiect訊號264所 選擇之計數器0 211或計數器1 213。流程會繼續進行判斷 方塊1 3 2 6。 [ 022 9 ]在判斷方塊1 32 6中,控制邏輯244檢查由 fill —select訊號264所指定之fullO訊號229或fulll訊號 227,以判斷由fill 一 select訊號26 4所選擇之緩衝器〇 242 或緩衝器1 2 4 6是否已滿。若是,流程會繼續進行方塊 1 3 2 8。否則,流程會返回方塊1 3 〇 6。 [0230] 在方塊1328中,控制邏輯244更新 fill— select訊號264。在RNG単元136包含二個緩衝器的實 施例中,更新fi 11 —select訊號264的動作包括切換 fill 一 select訊號264。在RNG單元136包括二個以上緩衝器 的實施例中,fill一select訊號264包括多於!個的位元, 並且更新fill 一 select訊號264的動作包括遞增 fill 一 select訊號264 ’以及當遞增超過緩衝器的數目時, 會回歸為0。流程會繼續進行判斷方塊1 332。 [0231] 在判斷方塊1332中,控制邏輯244檢查由方塊
第58頁 1240200 五、發明說明(55) 1328更新之fill— select訊號264所指定的fuii〇訊號229或 f u 1 11訊號2 2 7,以判斷由f i 11 一 s e 1 e c t訊號2 6 4所選擇之緩 衝器0 2 4 2或緩衝器1 2 4 6是否已滿(亦即,判斷所有的緩 衝器是否已滿)。若是,流程會繼續進行方塊1 3 3 4。否 則,流程會返回方塊1 3 0 6。 [0232]在方塊1334中,由於所有的緩衝器已滿,控 制邏輯244就藉由power — cntr 1訊號231 ·,關閉隨機位元產 生器0 20 6及隨機位元產生器1 208的電源。流程會返回判 斷方塊1 3 0 6。 [0 2 3 3 ]現在參照圖十四,其係繪示根據本發明的另 一具體實施例,圖一微處理器1〇〇執行圖三之XL〇AD指令的 運作流程圖。圖十四的流程圖與圖六的流程圖相同,並且 標號相同的方塊是一樣的,除了圖十四包括額外的判斷方 塊1 403。流程會從方塊6〇2進行到判斷方塊U03。在判斷 方塊1 403中,圖二的控制邏輯244判斷CSR 226之相關位元 是否已因方塊602中CSR 226的載入而改變。若是,流程會 繼續進行如圖六之方塊6 〇 4。否則,流程會繼續進行方塊 612,如圖所示。此實施例的優點是,不必丟棄已累積的 隨機位元組及重新開始隨機位元組的累積。亦即,若CSR 226的載入對於會影響RNG單元136之亂數產生功能的值未 做任何改變,則由於隨機位元組係藉使用所要的控制值而 產生,所以不需丟棄已累積的隨機位元組及重新開始隨機 位7C組的累積。在一具體實施例中,相關的CSR 226位元 為串過濾裝置致能位元334、產生器選擇位元336、CNT致
第59頁 1240200 五、發明說明(56) 能位元342以及串過濾裝置max_cnt 346。 [02^4]現在參照圖十五,其係繪示根據本發明的另 一具體實施例,圖一微處理器1〇〇執行圖三之XST〇RE指令 的運作流程圖。圖十五的流程圖與圖八的流程圖相同, 且標號相同的方塊是一樣的,除了圖十五包括額外的判 方塊1 5 0 7。流程會從方塊8 〇 6進行到判斷方塊丨5 〇 7。在判 斷方塊1 5 0 7中,圖二的控制邏輯244判斷CSR 226之相關位 兀是否已因方塊80 6中複製至CSR 2 26的動作而改變。若 是、,流程會繼續進行如圖八之方塊8〇8。否則,流程會繼 續進行方塊81 6,如圖所示。此實施例的優點是,不必丟 棄已累積的隨機位元組及重新開始隨機位元組的累積。亦 即,右複製至CSR 226的動作對於會影響RNG單元136之亂 數產生功能的值未做任何改變,則由於隨機位元組係 用所要的控制值而產生,所以不需丟棄已累積的隨機位元 組及重新開始隨機位元組的累積。在一具體實施例中, 關的CSR 22 6位元為串過濾裝置致能位元334、產生器 位元336、CNT致能位元342以及串過濾裝£max—cnt 。 [ 0235 ]現在參照圖十六,其係繪示根據本發明的另 一具體實施例,圖一微處理器1〇〇執行XST〇RE指令的運 方塊圖。圖十六的XST0RE指令類似於圖十二的XST〇RE指 令,然而在圖十六的實施例中,XST〇RE指令之目的瞀一 會指定微處理器100的一個暫存器,如ΧΜΜ暫存器、== 存器、ΜΜΧ暫存器或整數單元(integer unit)‘存器中 一個(如EBX) ’ * *是指定系統記憶體中的位址。;即,、
1240200 五、發明說明(57) 有效隨機資料位元組係連續地被寫入暫存器檔案1 〇 8之其 中一個使用者可見暫存器中,而不會儲存至系統記憶體。 在圖十六的例子中,XST0RE指令會指定圖三SSE暫存器352 中的X Μ Μ 3暫存器3 7 6,以寫入有效隨機資料位元組,如圖 所示。有利的是,與圖十二的XST0RE指令類似,圖十六的 XSTORE指令會連續地將隨機資料位元組寫入該使用者可見 暫存器,並將計數值載入EAX 1 20 2,以促進與RNG單元136 的多工運作。也就是,圖十六的XST0RE指令也是不可中斷 的0 [ 0 23 6 ]現在參照圖十七,其係繪示根據本發明的另 一具體實施例,圖一微處理器100執行XST〇RE指令的運作 方塊圖。圖十七的XST0RE指令類似於圖十二的XST〇RE指 令,然而在圖十七的實施例中,XST〇RE指令包括一χ86架 構的REP前置碼。藉由REP XST〇RE指令,要存至系統記憶 體之隨機資料位元組的數目,會被指定為暫存器檔案1〇8
1 702的輸入參數’如圖所示。軟體在執行REP :相I:前,會將要存至系統記憶體之隨機資料位元組 之理想计數值載入ECX 1 702中。 [ 0237]在一具體實施例中,在將隨機資料位元组 至系統記憶體的儲存動作間,REp XST〇RE指令中 的田記憶體位址於初始時,係、指定於暫存器檔㈣ 般用途暫存器中。在圖十七的例子中,記^ :::子器槽案m的ES:EDI 1 704中,如圖 或更多個隨機資料μ組被“系統記憶料,
1240200 五、發明說明(58) " --- 細Μ /更新為系統圯憶體中,下個用以儲存隨機資料位元 $备2置。此外,每當有一或更多個隨機資料位元組儲存 記憶體時,ECX 17〇2即更新,以反映尚待儲存儲存 通機位70組數目。例如,假設REP XST0RE指令於ECX H02中指定一位元組計數值28及〇}( 1 2345678的記憶體位 =:假設在緩衝器〇 242及緩衝器1 246兩者之一 ^,RNG 早疋1 36有8個可用的位元組,且當累積更多的隨機資料位 疋組時,將8個位元組寫入系統記憶體。當8個位元組被寫 =記憶體時,ECX 1 702會更新為20,以表示還有20個隨機 資料位το組必須寫入系統記憶體。此外,位址會被更新為 系統記憶體中,下個將要寫入大量隨機資料位元組的位置 0x1 2345680。中斷可能會發生在這個時候,而軟體會檢查 更新的值。當中斷已執行且控制權回歸至REp XST〇RE指令 時,REP XST0RE指令將使用ECX 1 7 02及ES:EDI 1 704中的 更新值回復執行。此外,完成REp XST〇RE指令時,圖二 CSR 226的現時值會被複製到暫存器檔案1〇8的^^暫存器 1202 中。 [0 2 3 8 ]清參閱圖十八,圖十八根據本發明之一具體 實施例,當如圖一之處理器1〇〇執行XST〇RE指令之方塊 圖。圖十八的XST0RE指令和圖十二的XST0RE指令非常相 近。然而,在圖十八的具體實施例中,只有部分暫存在R 5 238的隨機賢料位元組被存到系統記憶體5〇2。將n定義為2 的(指數因子)冪次。提供一個N,用來選擇在R5 238中 的每第N個位元儲存到系統記憶體5 〇2。也就是說,N等於2
第62頁 1240200
的(指數因子)冪次來當作參考。被EDX 18〇2暫存器所於 定指數因子是如圖十八XST0RE指令的一個輸入參數:ej^曰 1802為暫存器檔案1〇8中一個使用者可見的通用暫存器。 [0 23 9 ]在一實施例中,暫存在R5 238的隨機資料位 兀組長度為8位元或64位元,因此在肋乂 18〇2被指定的指 數因子容許值可為〇,1,2,3,而可能的N值就為},2,曰 4,8 :因此,在如圖十八的XST〇RE指令實施例中,被存到 系統記憶體的有效隨機資料位元組長度就為8/1^,也就是 8,4,2,1。在另一實施例中,在EDX 18〇2被指定的因7^子 指數容許值為1,2,3,而可能的N值就為1,2,4,8。在 XST0RE指令執行完成後,決定系統記憶體5〇2的有效隨機 資料位元組長度以及指令狀態同時被放到ΕΑχ 12〇2。 、[0240 ]如圖十八的XST0RE指令也包括有根據前圖所 述之其他XST0RE指令實施例特徵。舉例來說,如圖十八的 XST0RE指令可以將每第Ν個累積且被選擇的位元儲存到在 微處理器中的一暫存器,而不是如根據圖十六之具體實施 例所述儲f到記憶體;或是有效位元計數值可儲存到記憶 體’而不是如根據圖七之具體實施例所述儲存到ΕΑχ 12〇2 暫存器;或是一REP前置碼可被包括在如圖十七所述之具 體實施例中。 [0241]請參閱圖十九,圖十九根據本發明,當如圖 十八XST0RE指令時執行之一操作實例。一個在“ 238的二 進位隨機資料位元值的實際例子。圖示中,每一個在R5 2 38的位元以八進位表示。圖示中也顯示出隨機資料位元
1240200 五、發明說明(60) " --- 組根據如圖十八所給定四個容許值之一被存到系統記憶體 5〇2。如果EDX為〇,則所有5 2 38來的64位元將被儲存 到糸統記憶體502。如果EDX為1,則只有由R5 238每兩個 選一個所組成的32位元將被儲存到系統記憶體5〇2。如果 EDX為2,則只有由R5 238每四個選一個所組成的16位元將 ,儲存到系統記憶體5 02。如果EDX為3,則只有由“ 238 每八個選一個所組成的8位元將被儲存到系統記憶體5〇2。 [ 0242 ]本發明的優點是,如圖十八XST〇RE指令減低 了 RNG單元1 36產生的連續位元間的關連性,其中,RNG單 元136是由使用者致能且指定儲存在EDX ι8〇2的指數因 子該^曰數因子用以選擇在R5 238的每N個位元,指數因 子與N的關係可表示為:ν = 2λ(指數因子)。 [0243] 請參閱圖二十,圖二十為根據本發明之一具 體實施例,係為如圖一之RNG單元丨36減少連續位元間相關 性的操作流程圖。在圖二十之具體實施例中,用來執行減 低連續位元間相關性功能的裝置包括有如圖一微處理器 100之多個元件,如檔案暫存器108、位址產生器112、載 入單元114、ALU 162、RNG單元136、儲存單元118、回寫 單元122、寫入緩衝器124及匯流排介面單元128。儲存在 如圖一所示微碼記憶體1 32的微碼指令,根據如圖二十一 所示之程式列表(program 1 isting)控制微處理器1〇〇的元 件。圖一十的流程圖描述普通如圖二十一所示之程式列表 的微碼指令。流程開始於方塊2 〇 〇 2。 [0244] 在方塊2002中,如圖二所示之rnG單元136經
1240200 五、發明說明(61) 由隨機位元產生器2 0 6或208,多工器214及白化器216產生 一連串的隨機資料位元,並且藉由如圖二及前圖所述之移 位暫存器218、串過濾裝置224、多工器228、解多工器 2 32、缓衝器〇 242及緩衝器1 246兩資料緩衝器、多工器 2 3 6、R 5 2 3 8及控制邏輯2 4 4將位元累積成位元組。流程下 一步到判斷方塊2004。
[0245]在判斷方塊2004中,微處理器1〇〇藉由從圖三 CSR 226來的可利用位元計數值33 2判斷是否八個隨機資料 位元組已在buf 0 242或buf 1 246中累積。若為是,流程下 一步到方塊2 0 1 2 ;否則,流程下一步到方塊2 〇 〇 6。 [0 2 4 6 ]在方塊2 0 0 6中,既然尚未累積到八個隨機資料位 元組,微處理器1 00將有效隨機資料位元組的長度設定為 0。流程下一步到方塊20 08。 [ 0247 ]在方塊20 08中,微處理器1〇〇載入ΕΑχ 1 202由
CSR 22 6得到的狀態,及已儲存在記憶體之有效隨機資料 位元組的長度。假如方塊2〇〇8是從方塊2〇〇6來的,則有效 隨機資料位元組的長度為〇。假如方塊2〇〇8是從方塊20 18 來的’則有效隨機資料位元組的長度為8。假如方塊2〇〇8 是從方塊2044來的,則有效隨機資料位元組的長度為在 EDX中所指定的指數因子的關係函式,諸如(3 -指數 因子)。流程在方塊2 008結束。 [0 2 4 8]在方塊2012中,微處理器1〇〇將R5 238的内容 載入到一暫時儲存位置,如圖二十之templ。在一實施例 中’只有從R5 238來的隨機資料位元組被載入到忟抑^,
第65頁 1240200 五、發明說明(62) 而不是有效位元組計數值。在如圖二十一之微碼列表實施 例中兩個32位元的暫存器r4、r5被共同用來當作templ。 流程下一步到判斷方塊2 0 1 4。
[0 249 ]在判斷方塊2014中,微處理器1〇〇判斷在EM 1 8 0 2所指定的指數因子是否為〇,也就是說,是否所有從 R 5來的位元組將被儲存到記憶體。若為是,流程到方塊 2 0 1 6,否則,流程到方塊2 0 2 2。 [0250]在判斷方塊2016中’微處理器1〇〇將全部在R5 2 3 8累積的八個有效隨機資料位元組儲存到圖十八中的系 統記憶體。流程下一步到方塊2 0 1 8。 [ 0 25 1 ]在方塊2018中,既然全部八個位元組在方塊 2016中被儲存到系統記憶體502,微處理器1〇〇將有效隨機 資料位元組的長度設定為8。流程下一步到方塊2〇〇8。 [ 0252 ]在方塊2022中,微處理器1〇〇將儲存在EDx 1802 XSTORE指令的一個輸入參數,藉由2的冪次計算N 值。流程下一步到方塊20 24。 [0253]在方塊2 024中,微處理器1〇〇藉由計算64除以 N得到一迴圈計數值。該迴圈計數也就是將被儲存到系統 記憶體50 2的長度。流程下一步到方塊2026。 [ 02 54 ]在方塊20 26中,微處理器1〇〇清除EAX1 202設 為0。流程下一步到方塊20 28。 [0255]在方塊2028中,微處理器1〇〇將EAX 1 202左移 一個位元,以清出一個EAX空間來給從R5 238得到原始資 料所選定及累積的下一個位元。流程下一步到方塊2 〇 3 2。
第66頁 1240200 五、發明說明(63) [ 0 2 5 6 ]在方塊20 32中,微處理器100藉由從tempi取 出中最後一個位元(也就是除了最後一個位元外,全部捨 棄)並且將該最後一個位元加入EAX 1 202中來達成選定並 累積下一個第N位元。流程下一步到方塊2034。 [ 0257 ]在方塊2 0 34中,微處理器100將tempi右移N個 位元,因此將下一個被選定的N位元放入tempi的位置,藉 由將tempi右移N個位元,將前次在方塊2 0 32中被選定及累 積的位元被捨.棄。流程下一步到方塊20 36。 [ 0 2 58 ]在方塊20 36中,微處理器100將迴圈計數值遞 減1。流程下一步到方塊2038。 [0259]在方塊2038中,微處理器100判斷迴圈計數值 是否已到達0。若為是,流程到方塊2042,否則,流程到 方塊2028。 [ 0 2 6 0 ]在方塊20 42中,微處理器100將EAX 1 20 2儲存 到系統記憶體502。EAX 1 202包括有從R5 238所選定並累 積的每第N個位元。在一實施例中,EAX 1 2 0 2的全部内容被 存入系統記憶體502,即使在EAX 1 202的一些位元也許不 包含有效隨機資料位元組。然而在2008方塊中,每一次完 成XSTORE指令。有效隨機資料位元組被存入系統記憶體 502的長度會反應在EAX 1 2 0 2。因此,致能程式以決定有 效隨機資料位元組被存入系統記憶體5 0 2的長度。舉例來 說,假如EAX 1 202為2,則四個位元組只有兩個位元組被 存入到系統記憶體502中,並且有效隨機資料位元組的長 度會根據EAX1 202的狀態設定成2。
第67頁 1240200 五、發明說明(64) [ 026 1 ]在方塊2044,既然N是2、4或8,及所有 (8 / N )個位元在方塊2 0 4 2中會被存入系統記憶體5 0 2中, 微處理器1 0 0將有效隨機資料位元組的長度設定成8除以 N。流程到方塊20 08。 [0 2 6 2 ]請參閱圖二Η—*,圖二十一係為根據本發明 使如圖一之處理器1 0 0減少連續位元間相關性的一微碼指 令列表。下面的討論將有助於瞭解微碼列表。 [ 0 263 ]這個微碼列表包括有被稱為跳躍指令(jump instruction)的分枝指令(branch instruction),如 je.32,jel.32 、迴圈指令(i〇0p instructi〇n),如 時槽的指令及其下一個指令將會被 選取,在延遲時槽的指令及在分枝 將會被執行。 1οορη·32、返回指令(return instructi〇n)。所有跟在分 枝指令之後的指令位置都被稱為一延遲時槽(de丨ay s^Lot),、所有在延遲時槽的指令均會執行而不考慮該分枝 疋否已被選取。如此,如果該分枝尚未被選取,則在延遲 一個指令將會被執行。如果該分枝已被 的指令及在分枝目標位址的指令下一個 [0264] 微媽指令使用
用八個在暫存器檔案1〇8中32位元 在列表中被表示成r〇到以。在一實施例 使用者可視的暫存器。被存在r〇的值在所 了分枝指令,這三個運算元指令的格式 〈opcode 〉 的〉〈來源一〉〈來源二〉
第68頁 1240200 五、發明說明(65) -------^ [ 0 266 ]由第8行指令dmt id r4, r5所跟隨的在第7行於 令mfxd.64 XMM5使如圖二之64位元R5 238的内容被複製 兩個Y位元的暫存器r4,r5。根據第1行dnitid r2,r3指 々細1碼的#分分枝到get— random-data包括在分枝之後 延遲時槽的一mf xd· 64指令(也就是CSr 22 6 )。因此,結 合兩個指令使64位元CSR 226的内容被複製到兩個32位元° 的暫存器r2, r3。 [ 0 267 ]請參閱圖二十二,圖二十二係為根據本發明 之一具體實施例,如圖一之RNG單元136之部分,包括有一 位το選擇器220 2,以減少連續位元間相關性時之方塊圖。 如圖二十二之RNG單元136與如圖二之RNG單元136非常相 近。然而’只有如圖二之暫存器尺5 238被表示在圖二十 二。然而不像圖二,在圖二十二中1^5 238並不直接連接到 資料匯流排1 4 4。取而代之的是r 5 2 3 8的輸出連接到中間 資料匯流排(intermediate data bus)2206。如圖二十二 之RNG單元136也包括有位元選擇器2202。該位元選擇器 2 2 0 2的輸入連接到中間資料匯流排2 2 〇 6。位元選擇器2 2 0 2 的輸出連接到如圖一的資料匯流排1 44,在圖二十二被表 示成DB 1 44。在如圖二十二的實施例中,中間資料匯流排 2206與資料匯流排144都是64位元,以及R5 238包括64位 元用以儲存隨機資料位元組,也就是說,儲存8個隨機資 料位元組。位元選擇器2 2 0 2也包括有用來接收指數因子信 號2204的一控制輸入,該指數因子信號2204的值在圖十八 中被當作一個XST0RE指令得輸入參數。在一實施例中,位
第69頁 1240200 五、發明說明(66) 元選擇器220 2根據指數因子2204的值從中間資料匯流排 2206選擇每一個位元、每兩個位元、每四個位元或是每八 個位元,以各自提供8、4、2或1個隨機資料位元組給資料 匯流排1 4 4 ’如上所述及如圖十九實施例所示。 [0 2 6 8 ]請參閱圖二十三,圖二十三係為根據本發明, 如圖^一十^一之位元選擇1§2202之洋細方塊圖。位元選擇器 2202包括有64個4對1的多工器,表示成2302-0到2302 -63,這6 4個多工器表示成多工器集合2 302。多工器集合 2302的每一個多工器包括有四個輸入,表示成〇、ι、2及 3。多工器集合2302的每一個多工器也包括有一控制輸入 連接到如圖一十一中的指數因子信號2204。假如指數因子 220 4等於0,多工器23 0 2選擇第0號輸入提供給輸出。假如 指數因子M04等於1,多工器2302選擇第1號輸入提供給輸 出。假如指數因子2204等於2,多工器2302選擇第2號輸入 提供給輸出。假如指數因子2204等於3,多工器2302選擇 第3號輸入提供給輸出。 [ 0 269 ]在圖二十三表示多工器230 2-0、2302-1、 2302-2、2302-3、2302-η 及230 2 - 63。在圖二十三中,〇對 應到DB 144的位元長度,且2302-η —般表示為輸出連接到 DB 144 [η]的多工器2303。多工器2 302-0的輸出連接到DB 144[0] ’也就是DB 144的第0位元,如圖二十二所卞。门 理,多工器2302-1的輸出連接到DB 144[1]。多工器23〇2一 2的輸出連接到DB 144[2]。多工器2302 - 3的輸出連1接到DB 144[3]。多工器2302 - η的輸出連接到DB 144[n]。多工器
1240200 五、發明說明(67) 2302一63的輸出連接到DB 144[63]。
[0270] 每一個多工器2302-n在它的0輸入接收中間資 料匯流排2 2 0 6信號n ;在它的1輸入接收中間資料匯流排 220 6信號2η ;在它的2輸入接收中間資料匯流排22 0 6信號 4η ;在它的3輸入接收中間資料匯流排2 20 6信號8η。因 此’多工器2 3 0 2 - 0在它的0輸入接收中間資料匯流排2 2 0 6 信號0 ;在它的1輸入接收中間資料匯流排220 6信號0 ;在 它的2輸入接收中間資料匯流排220 6信號0 ;在它的3輸入 接收中間資料匯流排220 6信號0。多工器230 2- 1它的0輸入 接收中間資料匯流排2 20 6信號1在它的1輸入接收中間資料 匯流排2206信號2在它的2輸入接收中間資料匯流排2206信 號4在它的3輸入接收中間資料匯流排2206信號8。多工器 23 0 2-2它的〇輸入接收中間資料匯流排2 20 6信號2 ;在它的 1輸入接收中間資料匯流排220 6信號4 ;在它的2輸入接收 中間資料匯流排220 6信號8 ;在它的3輸入接收中間資料匯 流排220 6信號16。多工器23 02-3在它的0輸入接收中間資 料匯流排220 6信號3 ;在它的1輸入接收中間資料匯流排 220 6信號6 ;在它的2輸入接收中間資料匯流排2206信號 12 ;在它的3輸入接收中間資料匯流排2206信號24。多工 器2302-63在它的〇輸入接收中間資料匯流排220 6信號63, 如圖所示。任何輸入到多工器2303的值大於63將被忽略。 [0 2 7 1 ]如上所述,本發明可以被觀察到,在一些環 境條件下,在會減低所產生亂數隨機性的連續產生位元間 取得最小的關連性。有優勢的地方是,藉由隨機位元產生
第71頁 1240200
五、發明說明(68) 器在每N個位元中選擇一位元,本發明可以被觀察到 Shannon 熵值增加及對應的最小隨機資料位元產生器率% 下: EDX/N Shannon 資料率 (b its>byte) (Mega bits/second) 0/1 7.98 4 1/2 7.995 2 2/4 7.999 1 3/8 7.99982 0.5 [0 2 7 2 ]圖二十四係顯示依據本發明,圖一之微處 器1 0 0執行重置之自我測試的動作流程圖。流程開始於 斷方塊2402。 、1 [ 0273 ]於判斷方塊2402中,圖二之rnG單元136藉由 檢查重置訊號248,判斷是否發生重置事件。重置可能是 開機重置,亦即當微處理器1 〇〇啟動時,或可能是暖$ ^ (warm reset) ’亦即於微處理器1〇〇啟動一段時間後所執 行之重置’如在微處理器100上執行之程式所進行的重
1240200 五、發明說明(69) 置,或是包含微處理器100之系統的重置。若一重置事件 發生,流程即進行至判斷方塊2404。否則,流程返回判斷 方塊2 4 0 2,以等待重置事件發生。 [ 0274 ]於判斷方塊2404中,RNG單元136藉由檢查自 我測5式致此訊號2 9 2 ’以判斷自我測試是否被致能。在一 實施例中,圖三MSR 2 1 2之自我測試致能位元3 1 6的預設啟 動值為1。若自我測試被致能,則流程進行至方塊2 4 〇 6。 否則,流程進行至方塊2412。
[ 0275 ]於方塊2406中,圖二的自我測試單元2〇2執行 RNG單元136的自我測試,以判斷RNG單元丨36是否正常運 作。自我測試的相關說明已如前述,特別是關於圖二與圖 二的部分。自我測試完成時,若自我測試失敗,則自我測 試單元20 2產生一真值的自我測試失敗訊號288,而若自我 測試通過,則產生一假值的自我測試失敗訊號288。自我 測試失敗訊號288的值會儲存於圖三MSR 212之自我測試失 敗位兀318。在一實施例中,自我測試單元2〇2包括圖一微 處理,1〇〇之不同元件,如暫存器1〇8、位址產生器112、
載入單元114、執行單元116、RNG單元136、儲存單元 118、回寫單元122、寫入緩衝器124及匯流排介面單元 1 28。儲存於圖一微程式碼記憶體丨32之微程式碼指令,合 控制微處理HUG的^件來執行自我測試。 曰 至方塊2408。 f [ 0276 ]於判斷方塊24〇8中 2 1 2中之自我測試失敗位元3 1 8, ,RNG單元136藉由檢查MSR 以判斷自我測試是否失
第73頁 1240200 五、發明說明(70) 敗。若自我測試失敗,則流程進行至方塊2 41 2。否則,流 程進行至方塊2414。
[ 0277 ]於方塊 2414 中,RNG 單元 136 將 MSR 212 的 RNG 存在位元3 1 4設定為1。流程接著返回方塊2 4 0 2,以等待另 一重置事件發生。
[ 0278 ]於方塊 2414 中,RNG 單元 136 將 MSr 212 的 RNG 存在位元3 1 4清除為0。流程接者返回方塊2 4 〇 2,以等待另 一重置事件發生。 [0 2 7 9 ]圖二十五係顯示依據本發明,圖一之微處理 器1 00執行RNG單元1 36之相關指令的動作流程圖。流程開 始於方塊250 2。 [ 0 28 0 ]於方塊25 0 2中,圖一之指令轉譯器1〇6轉譯從 圖一指令提取單元104所接收之一x86指令。流程接著進行 至判斷方塊2504。 [0 2 8 1 ]於判斷方塊2 5 0 4中,微處理器丨〇 〇判斷於方塊 25 02所轉譯的指令是否為X86 CPUID指令。特別是,微處 理器1 〇〇會判斷所轉譯的指令是否為要求Centaur延伸功&能 資訊之CPU ID指令。在一實施例中,Centaur延伸功能資訊 係由一CPUID指令所要求,其中該“叮!)指令具有圖一暫存 器檔案108之圖十二χ86 EAX暫存器W02的一輸入值 OxCOOOOOOO。若方塊2502所轉譯的指令為要求Centaur延 伸功能資訊之x86 CPUID指令,則流程接著進行至判斷方 塊2 5 0 6。否則,流程進行至判斷方塊2 & 14。 [ 0282 ]於判斷方塊250 6中,微處理器1〇〇判斷圖三
第74頁 1240200 五、發明說明(71) MSR 212之RNG存在位元314是否被設定為1 〇RNG存在位元 314的值可依據如圖二十四所述之自我測試來決定。若rNG 存在位元314為1,則流程接著進行至方塊2512。否則,流 程進行至方塊2508。 [ 0283 ]於方塊25 08中,CPUID指令藉由將Centaur延 伸功能資訊載入EAX暫存器1202而執行完成。尤其,EAX暫 存器1 20 2的位元28被清除為〇,以顯示RNG單元136被除 能。在另一實施例中,CPU ID指令藉由將Centaur延伸功能 資訊載入圖一暫存器檔案108之圖十八EDX暫存器1 802而執 行完成。尤其,EDX暫存器1802的位元2被清除為〇,以顯 示RNG單元136被除能。流程結束於方塊2508。 [ 0284 ]於方塊2512中,CPUID指令藉由將Centaur延 伸功能資訊載入EAX暫存器1202而執行完成。尤其,EAX暫 存器1 202的位元28被設定為1,以顯示RNG單元136被致 能。在另一實施例中,CPUID指令藉由將Centaur延伸功能 資訊載入EDX暫存器1802而執行完成。尤其,EDX暫存器 1 80 2的位元2被設定為1,以顯示RNG單元136被致能。流程 結束於方塊2512。 [ 0285 ]於判斷方塊2514中,微處理器1〇〇判斷於方塊 25 0 2所轉譯的指令是否為χ86 RDMSR指令。特別是,微處 理器100會判斷所轉譯的指令是否為指定圖二MSr 212之 RDMSR指令。在一實施例中,MSR 212係由一RDMSR指令所 指定,其中該RDMSR指令具有圖一暫存器檔案108之圖十七 x86 ECX暫存器1702的一輸入值OxllOB。若方塊2502所轉
1240200
譯的指令為指定MSR 212之x86 rDMSR指令,則流程接著進 行至判斷方塊2 5 1 6。否則,流程進行至判斷方塊2 5 2 4。 [ 0286 ]於判斷方塊25 16中,微處理器1〇〇判斷RNG存 在位元314是否被設定為1。若rng存在位元314為1,則流 程接著進行至方塊2522。否則,流程進行至方塊2518。 [0287]於方塊2 518中,微處理器1〇〇產生一個一般保 護(GW之錯誤,此因有一指定MSR 212的心託1?指令執行於 RNG單元136被除能時。流程結束於方塊2518。 [ 0288 ]於方塊2522中,RDMSR指令藉由將MSR 212的 内容載入相連接之EAX 1 202與EDX 1 80 2暫存器,而執行完 成。流程結束於方塊2522。 [ 0289 ]於判斷方塊2524中,微處理器1〇〇判斷於方塊 2502所轉譯的指令是否為x86 WRMSR指令。特別是,微處 理器1 0 0會判斷所轉譯的指令是否為指定圖二MSR 2丨2之 WRMSR指令。在一實施例中,MSR 212係由一WRMSR指令所 才曰疋’其中該WRMSR指令具有x86 ECX暫存器1702的一輸入 值OxllOB。若方塊2502所轉譯的指令為指定MSR 212之χ86 WRMSR指令,則流程接著進行至判斷方塊2526。否則,流 程進行至判斷方塊2534。 [ 0 29 0 ]於判斷方塊2526中,微處理器1〇〇判斷RNG存 在位元314是否被設定為1。若rng存在位元314為1,則流 程接著進行至方塊2532。否則,流程進行至方塊2528。 [0291]於方塊2 528中,微處理器1〇〇產生一個一般保 遵(GP)之錯誤’此因有一指定MSR 212的wrmSR指令執行於
第76頁 1240200 五、發明說明(73) RNG單元136被除能時。流程結束於方塊2528。 [0292]於方塊2532中,WRMSR指令藉由將相連接之 EAX 1 202與EDX 1 802暫存器的内容存入MSR 212,而執行 完成。流程結束於方塊2532。 [ 0 293 ]於判斷方塊2534中,微處理器100判斷於方塊 2 5 0 2所轉譯的指令是否為前述之XST〇RE 4XL〇AJ)指令。若 是,則流程接著進行至判斷方塊25 36。否則,流程進行至 方塊2544。 [0294 ]於判斷方塊2536中,微處理器1 〇〇判斷rnG存 在位元314是否被設定為1。若rnG存在位元314為1,則流 程接著進行至方塊2542。否則,流程進行至方塊2538。 [0295]於方塊2 538中,微處理器1〇〇產生一個無效運 鼻碼之錯誤’此因有一XSTORE或XLOAD指令執行於RNG單元 1 3 6被除能時。流程結束於方塊2 5 3 8。 [0 29 6 ]於方塊25 42中,該乂5丁01^或1[0八0指令係依前 述實施例而執行。流程結束於方塊2 5 4 2。 [0297]於方塊2544中’微處理器執行方塊MM所 轉譯的指令。流程結束於方塊2544。 [0 2 9 8 ]雖然本發明及其目的、特徵與優點已詳細敘 述’其它實施例亦可包含在本發明之範圍内。例如/雖然 本發明係以包含兩個隨機位元產生器之實施例進行說明, 本發明仍可適用於兩個以上之隨機位元產生器的情形。再 者,雖然所敘述之隨機位元產生器係實作於微處理器中, 在多個隨機位元產生器之間作選擇的概念,仍可施於一
第77頁 1240200 五、發明說明(74) 非微處理器之積體電路中。 總之,以上所述者,僅為本發明之較佳實施例而已, 當不能以之限定本發明所實施之範圍。大凡依本發明申請 專利範圍所作之均等變化與修飾,皆應仍屬於本發明專利 涵蓋之範圍内,謹請貴審查委員明鑑,並祈惠准,是所 至禱。
第78頁

Claims (1)

1240200
六、申請專利範圍 1· 一種亂數產生器,包含: 複數個隨機位元產生器,具有複數個各別的輸出端,以 提供複數個各別之隨機位元流; 一多工器,耦接至該些輸出端,依據一控制輸入端選取 該些隨機位元流其中之一;以及 、 控制暫存器,耦接至該多工器,用以儲存一選擇值, 其中該選擇值係用以產生一訊號至該控制輸入端,以 選取該些隨機位元流之該其中之一。
2·如申請專利範圍第1項所述之亂數產生器,其中該控制 暫存係為可程式化的。 3·如申請專利範圍第2項所述之亂數產生器,其中該i數 產生器係包含於一微處理器中。 4 ·如申請專利範圍第3項所述之亂數產生器,其中該控制 暫存器係經由該微處理器所執行之一指令進行程式化。 5·如申請專利範圍第4項所述之亂數產生器,更包含: 至少一緩衝器,耦接至該多工器,用以將該選取之隨機 位元流累積為隨機資料位元組。
6 ·如申請專利範圍第5項所述之亂數產生器,其中該微處 理器係組態為執行一指令’以提供累積於該至少一緩衝 器之該隨機資料位元組。 7.如申請專利範圍第3項所述之亂數產生器,其中該微處 理器配合一作業系統工作切換’將該選擇值儲存至/回 復自一辆接至該微處理器之記憶體。 8 ·如申請專利範圍第1項所述之亂數產生器,更包含:
第87頁 1240200 六、申請專利範圍 複數個電源控制訊號’耦接至個別的該些隨機位元產生 器’用以選擇性地關閉該些隨機位元產生器中,其各 別隨機位元流未被該控制輪入訊號所選取之一或多個 隨機位元產生器。 9· 一種產生亂數的方法,包含: 產生第一與第二隨機位元流; 選取該第一與第二隨機位元流其中之一;以及 將所選取之隨機位元流累積為隨機資料位元組。
I 0 ·如申請專利範圍第9項所述之方法,更包含: 編寫一選擇值至一暫存器,以用於選取該第一與第二 隨機位元流之該其中之一。 II ·如申請專利範圍第1 〇項所述之方法,更包含: 配合該編寫該選擇值至該暫存器的動作,丟棄該累積 之隨機資料位元組。 1 2 ·如申請專利範圍第11項所述之方法,更包含: 配合該編寫動作,於該丟棄動作後,重新開始該累積 動作。
1 3 ·如申請專利範圍第9項所述之方法,更包含: 將該累積之隨機資料位元組儲存到耦接至一微處理器 之一記憶體。 14·如申請專利範圍第13項所述之方法,更包含: 執行二指令,其中該儲存動作係配合該指令而執行。 15·如申請專利範圍第9項所述之方法,更包含: 將該累積之隨機資料位元組载入該微處理器之一使用
1240200 六、申請專利範圍 16. 17. 者可見暫存器。 如申請專利範圍第1 5項所述之方法,更包含: 執行一指令,其中該載入動作係配合該指令而執行。 一種微處理器,包含·· 複數個隨機位元產生器,用以產生複數個各別之隨機 位元串; 18· 可程式化暫存器,耦接至該些隨機位元產生器,可 儲存一值,用於選取該些各別隨機位元串其中之 ’累積為亂數;以及 指令轉譯器,耦接至 N 7柄按王欸13廿斋,用以 一指令,供該微處理器執行,該指令係將該值 編 入該可程式化暫存器。 如申請專利範圍第17項所述之微處理器,其中該些隨 機位元產生器至少其中之一係依據該微處理器之隨機 電氣特性,而產生該各別之隨機位元串。 19.如申請專利範圍第18項所述之微處理器,其中該微處 理器之該隨機電氣特性包含橫跨一電阻之熱雜訊。 2〇·如申請專利範圍第17項所述之微處理器,其中該可程 式化暫存器於該微處理器的製造期間,亦為可程式化 的。
21·如申請專利範圍第17項所述之微處理器,其中該可程 式化暫存器更組態為儲存一值,用以控制該些隨機位 元產生器之一中的一或多個自由執行環式震盈器 (free-running ring ocsillator)之一操作電壓。
第89頁 1240200 六、申請專利範圍 2 2.如申請專利範圍第1 7項所述之微處理器,其中該些隨 機位元產生器係實質地分散於一半導體晶粒上不同位 置,其中該微處理器係整合於該半導體晶粒上。 2 3.如申請專利範圍第1 7項所述之微處理器,其中該些隨 機位元產生器採用不同的產生該些各別隨機位元串之 方法。
第90頁
ί年 月 1240200 申請案號:92118543 IpC分類 G\〇 6 P 發明專$?兒明書 中文 用以產生亂- 發明名稱 英文 姓名 (中文) i葛蘭·亨利 2. 詹姆斯R.隆柏格 3. 泰瑞·派克斯 二 nn t 姓名 (英文) 1. G. Glenn Henry 2. James R. Lundberg 3. Terrv Parks 赞啊人 (共3人) /國籍 (中英文) 1·美國US 2.美國US 3.美國US 住居所 (中文) i•养國德州78746舂斯丁市克里夫卻爾湖路411號 i 丁市奥克蒙特街3401號 3·美國德州78737奥斯丁市克瑞基豪斯路6號 住居所 (英文) 1.411 Lake Cliff Trail, Austin, Texas 78746 2. 3401 Oakmont Blvd. Austin, Texas 78703 3. #6 Carriage House Lane Austin, Texas 78737 名稱或 姓名 (中文) 1.智慧第一公司 名稱或 姓名 (英文) 1. IP-FIRST, LLC 申請人 (共1人) (中英文) 1.美國US 住居所 1.美國佛蒙特市教堂巷1045號(本地址與前向貴局申請者相同) 住居所 (營業所) (英文) 1.1045 Mission Court, Fremont, CA 95054, U. S. A. 代表人 (中文) 1.陳鴻文 代表人 (¾文) 1. Miller Chen
1240200 案號 92118543 月 修正 五、發明說明(38) [0 1 4 7 ]在方塊8 2 2中,控制邏輯2 4 4會更新 store — selectsfl 號 266。亦即,若 st〇re — seiec t訊號 2 6 6為 〇,則控制邏輯2 44會將store —seiect訊號2 6 6更新為1。反 之,右s t 〇 r e _ s e 1 e c t όΚ 5虎2 6 6為1,則控制邏輯2 4 4會將 store —select訊號2 6 6更新為〇。流程會繼續進行方塊 824 ° [0148]在方塊82 4中,因為已完成XST0RE指令的執 行,所以中斷單元ί 4 6會使中斷致能。流程會結束於方塊 824 〇 [0 1 4 9 ]現在參照圖九a及圖九Β ,其係繪示根據本 發明’圖一微處理器1 〇 〇進行關於亂數產生之多工運作範 例的動作流程圖。圖九A及圖九B的流程圖係繪示典型的 狀況’其中兩個工作皆初始化RNG單元1 36,並執行XST0RE 指令,將隨機資料位元組儲存至記憶體。圖九A及圖九B 係繪示本發明如何有利支援兩個工作(工作A及工作β)間的 多工’即使作業系統不支援儲存及回存r N G單元1 3 6的狀態 (即C S R 2 2 6 )。流程從方塊9 〇 2開始。 [0 1 5 0 ]在方塊9 0 2中,會發生重置,這會使控制邏輯 2 4 4清除T S P 0旗標2 7 4。流程會繼續進行方塊9 0 4。 [0 1 5 1 ]在方塊9 0 4中,作業系統會啟動工作A,並且 工作A的初始碼會執行xl〇AD至XMM0 3 72的指令,以所要的 控制值(表示為值A)來初始化CSR 2 2 6及XMM0 3 7 2。流程會 繼續進行方塊9 0 6。 [0 1 5 2 ]在方塊9 0 6中,根據圖六的方塊6 0 4、6 0 6、
第42頁 1240200 案號 92118543 年 «日修(½換頁 圖式簡單說明 [0 0 2 7 ]圖一係繪示本發明之微處理器的方塊圖。 [0 0 2 8 ]圖二係本發明圖一之微處理器中RNG單元的方 塊圖。 [0 0 2 9 ]圖三係繪示本發明圖一微處理器中,與圖一 RNG單元有關之各種暫存器的方塊圖。 [0 0 3 0 ]圖四係繪示根據本發明,圖一之微處理器執 行將值載入圖三XMM0暫存器之指令的運作流程圖。 [0 0 3 1 ]圖五係繪示根據本發明,圖一微處理器於執 行XL0AD指令時之運作方塊圖。 之微處理器執 微處理器於執 圖 [0 0 3 2 ]圖六係繪示根據本發明 行XL0AD指令的運作流程圖。 圖 [0 0 3 3 ]圖七係繪示根據本發明 行XSTORE指令時之運作方塊圖。 圖一之微處理器執 [0 0 3 4 ]圖八係繪示根據本發明 行XSTORE指令的運作流程圖。 [0 0 3 5 ]圖九A及圖九B係繪示根據本發明,圖一微 處理器進行關於亂數產生之多工運作範例的動作流程圖前 半段及後半段。 [0 0 3 6 ]圖十係繪示根據本發明,圖一微處理器中, 圖二RNG單元之串過濾裝置的方塊圖。 [0 0 3 7 ]圖十一係繪示根據本發明,圖十之串過濾裝 置的運作流程圖。 [0 0 3 8 ]圖十二係繪示根據本發明的另一具體實施 例,圖一微處理器執行XST0RE指令之運作方塊圖。
第79頁 1240200 案號 92118543 7. -月 946 !ί...年. 8 .白 fic 典 .¾ V- 修 圖式簡單說明 一〜———〇 >—_· — [ 0 0 3 9 ]圖十三係繪示根據本發明,圖二RNG單元之多 重緩衝運作的流程圖。 [0 0 4 0 ]圖十四係繪示根據本發明的另一具體實施 例,圖一微處理器執行XL0AD指令的運作流程圖。 [0 0 4 1 ]圖十五係繪示根據本發明的另一具體實施 例,圖一微處理器1 00執行XST0R賜令的運作流程圖。 [0 0 4 2 ]圖十六及十七係繪示根據本發明的另外具體 實施例,圖一微處理器執行XSTORE指令的運作方塊圖。 [0 0 4 3 ]圖十八係根據本發明之一具體實施例,當如 圖一之處理器執行XSTORE指令之方塊圖。 [ 0 0 44 ]圖十九係根據本發明,當如圖十八XSTORE指 令時執行之一操作實例。 [0 0 4 5 ]圖二十係根據本發明之一具體實施例,如圖 一之RNG單元減少連續位元間相關性的操作流程圖。 [0 0 4 6 ]圖二十一係為根據本發明使如圖一之處理器 1 0 0減少連續位元間相關性的一微碼指令列表。 [0 0 4 7 ]圖二十二係根據本發明之一具體實施例,如 圖一之RNG單元之部分,包括有一位元選擇器,以減少連 續位元間相關性時之方塊圖。 [0 0 4 8 ]圖二十三係根據本發明,如圖二十二之位元 選擇器之詳細方塊圖。 [0 0 4 9 ]圖二十四係顯示依據本發明,圖一之微處理 器執行重置之自我測試的動作流程圖。 [0 0 5 0 ]圖二十五係顯示依據本發明,圖一之微處理
第80頁 1240200 Γ 94 7 8 / 卷_ 丄二二案號92118543 、年 月 ,日 修正 圖式簡單說明 器執行圖二:R N G單元之相關指令的動作流程圖。 圖式之圖號說明: 1 0 0 :微處理器 1 0 2 :快取記憶體 1 0 4 :指令提取器 1 0 6 :指令轉譯器 1 0 8 :暫存器檔案 1 1 2 :位址產生器
1 14 :載入單元 1 1 6 :執行階段 1 1 8 :儲存單元 122 :回寫單元 1 2 4 :寫入緩衝器 1 2 6 :讀取緩衝器 1 2 8 :匯流排介面單元(B I U ) 1 32 :微程式碼ROM 134: SSE單元
1 36 :亂數產生器(RNG)單元 1 3 8 ··處理器匯流排 1 4 2,2 7 8 ·•資料匯流排 1 4 4 :資料匯流排 146 :中斷單元 1 4 8 :中斷訊號
第81頁 1240200案號92118543_年月 日「哼㊉、暴正 圖式簡單說明 1 52 :中斷向量 2 0 2 :自我測試單元 2 0 4 ·· CPUID暫存器 2 0 6,2 0 8 ·•隨機位元產生器 2 1 1,2 1 3 :計數器 212:機器特定暫存器(MSR) 214、 219、 228、 236:多工器 215、 217、 232:解多工器 2 1 6 :白化器
2 1 8 :移位暫存器 2 2 1 :增加訊號 2 2 2 :連續數目測試(CNT)單元 2 2 3 :清除訊號 2 2 4 :串過濾裝置 2 2 5 :比較器 2 2 6 :控制與狀態暫存器(CSR)
2 2 7 ·充滿1訊號 2 2 9 :充滿0訊號 231: power_cntrl訊號 2 3 4,7 0 2 :可用位元組計數 2 3 8 :暫存器R 5 2 4 2 :緩衝器0 2 4 4 :控制邏輯 2 4 6 :緩衝器1
第82頁 1240200案號92118543_年月1曰並产 圖式簡單說明 248 : 重置訊號 2 5 2 : 產生選擇訊號 2 5 4 : 原始位元訊號 2 5 6 : 過濾失敗訊號 2 5 8 ·· max_cnt訊號 2 6 2 : 過濾致能訊號 2 6 4 : f i 1 1 _ s e 1 e c t訊號 2 6 6 : st〇re_selec t訊號 2 6 8 : xstore訊號 2 7 2 : x 1 oad訊號 2 74 : TSPO旗標 2 6 6 : x s t〇r e訊號 28 2 : 位元組產生訊號 2 8 4 : CNT致能訊號 2 8 6 ·· R N G存在訊號 28 8 : 自我測試失敗訊號 2 9 2 : 自我測試致能訊號 2 9 4 : CNT失敗訊號 2 9 6 : 直流偏壓訊號 2 9 8 : 隨機資料位元組 3 0 2, 314 : RNG存在位元 312: RNG致能位元 316: 自我測試致能位元 318 : 自我測試失敗位元
第83頁
T940200 I [ 丨 丄案號92118543_年月曰 ,主 -~-~ ^ ~~_ —:::…一-:=.— 圖式簡單說明 3 2 2 :直流偏壓位元 3 2 4 :原始數值位元 3 3 2,3 6 2 :位元組計數欄位 3 3 4 :串過濾裝置致能位元 3 3 6 :產生選擇位元 3 3 8 ··串過濾裝置失敗位元 34 2 : CNT致能位元 344 : CNT失敗位元 3 4 6 :串過濾裝置m a X _ c n t欄位
3 5 2 : SSE暫存器 3 6 4 :另一欄位 372: XMMO 374: XMM3 376: XMM5 5 0 2 :系統記憶體 5 0 4 : 1 6位元組的資料 7 0 4 :系統記憶體5 0 2中的位置 1 0 0 2 :比較邏輯 1004:或閘
1 0 0 6:選擇邏輯 1 0 0 8 :及閘 1 0 1 2 A :第一加法器 1 0 1 2 B :第二加法器 1 0 1 4 A ··第一個四個輸入的多工器
第84頁 1240200
圖式簡單說明 1014B: 第二個四個輸入的多工器 1016A: 第一計數器 1016B: 第二計數器 1022A: num_lead i ng_ones 1022B: num_leading_zeros 1024A: 〇nes_cnt訊號 1024B: zer〇s__cn ΐ訊號 1026A: new_ones_cnt 訊號 1026B: new_zer〇s_cnt 訊號 1028A: num_trai1ing_one s訊號 1028B: num_trai1ing_zero s訊號 1032A, 1 0 32B : 0的硬式編碼值 1034A: ones__exceed訊號 1034B: zeros_ exceed訊號 1 0 3 6A: leading_one s訊號 1036B: leading_zero s訊號 1 0 38A: t r a i 1 i n g _ ο n e s訊號 1038B: trai1ing_zero s訊號 1042A: one_selec t訊號 1042B: zer〇_selec t訊號 1 0 4 4: max_cnt_exceed訊號 1046A: 比較器 1046B: 比較器 1 0 48A : a 1 1 _〇n e s訊號
第85頁 1240200案號92118543_年 月年启丨.正..皆換頁 圖式簡單說明 1 048B a 1 1 _ z e r 〇 s訊號 1 2 0 2: EAX 1 7 0 2: ECX 1 704: ES:EDI 1 8 0 2: EDX 2 2 0 2 : 位元選擇 器 2 2 0 4 : 指數因子 信號 2 2 0 6 : 中間資料匯流排 2 3 0 2 : 多工器
第86頁 1240200 ,' t * / ' Μ 曰修 案號 92118543 —年一一月一日:^ f 修正_ 四、中文發明摘要(發明名稱:用以產生亂數的方法及其裝置) 本發明提供一種具有多個隨機位元產生器的微處理 器。這多個隨機位元產生器的每—一個,H 一位元流。其 中一位元流被選取,以累積成隨機位元組,供應用程式使 用。哪一個隨機位元產生器之位元流被選取,係決定於儲 存於微處理器之一控制暫存器中的一選擇值。此選擇值可 由微處理器所執行之指令進行程式化。
五、英文發明摘要(發明名稱:RANDOM NUMBER GENERATOR WITH SELECTABLE DUAL RANDOM BIT STRING ENGINES)
第2頁
TW92118543A 2003-02-11 2003-07-08 Random number generator with selectable dual random bit string engines TWI240200B (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/365,601 US7174355B2 (en) 2002-11-20 2003-02-11 Random number generator with selectable dual random bit string engines

Publications (2)

Publication Number Publication Date
TW200415507A TW200415507A (en) 2004-08-16
TWI240200B true TWI240200B (en) 2005-09-21

Family

ID=32736395

Family Applications (1)

Application Number Title Priority Date Filing Date
TW92118543A TWI240200B (en) 2003-02-11 2003-07-08 Random number generator with selectable dual random bit string engines

Country Status (4)

Country Link
EP (1) EP1450250B1 (zh)
CN (1) CN1310131C (zh)
DE (1) DE60307780T2 (zh)
TW (1) TWI240200B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103927147A (zh) * 2013-01-16 2014-07-16 擎泰科技股份有限公司 用于随机数产生器的延迟装置及方法及其随机数产生器
TWI462009B (zh) * 2011-11-25 2014-11-21 Univ Kaohsiung Medical 亂數產生方法
TWI567637B (zh) * 2015-01-15 2017-01-21 Mitsubishi Electric Corp Random number expansion device, the number of ways to expand the number of random and expand the program products

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101996065B (zh) * 2009-08-26 2015-08-05 索尼株式会社 随机数发生器和随机数生成方法
US9778912B2 (en) * 2011-05-27 2017-10-03 Cassy Holdings Llc Stochastic processing of an information stream by a processing architecture generated by operation of non-deterministic data used to select data processing modules
US10331410B2 (en) * 2016-11-09 2019-06-25 Google Llc Hardened random number generator with ring oscillator collapse time random truncation
TWI634479B (zh) * 2017-10-11 2018-09-01 華邦電子股份有限公司 隨機數產生系統及其隨機數產生方法
CN109656514B (zh) 2017-10-11 2023-08-15 华邦电子股份有限公司 随机数产生系统及其随机数产生方法
CN109670343B (zh) * 2017-10-17 2023-01-03 华邦电子股份有限公司 随机数产生系统及其随机数产生方法
TWI634480B (zh) * 2017-10-17 2018-09-01 華邦電子股份有限公司 隨機數產生系統及其隨機數產生方法
US11709656B2 (en) * 2018-07-13 2023-07-25 Ememory Technology Inc. Short channel effect based random bit generator
CN112230885B (zh) * 2019-07-15 2024-05-03 瑞昱半导体股份有限公司 真随机数产生器与真随机数产生方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3706941A (en) * 1970-10-28 1972-12-19 Atomic Energy Commission Random number generator
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
DE3569414D1 (en) * 1984-07-26 1989-05-18 Miles Inc Circuitry for a portable test strip reading instrument
US5956289A (en) * 1997-06-17 1999-09-21 Micron Technology, Inc. Clock signal from an adjustable oscillator for an integrated circuit
CN1240318A (zh) * 1998-03-04 2000-01-05 朗迅科技公司 产生伪随机数的方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI462009B (zh) * 2011-11-25 2014-11-21 Univ Kaohsiung Medical 亂數產生方法
CN103927147A (zh) * 2013-01-16 2014-07-16 擎泰科技股份有限公司 用于随机数产生器的延迟装置及方法及其随机数产生器
TWI567637B (zh) * 2015-01-15 2017-01-21 Mitsubishi Electric Corp Random number expansion device, the number of ways to expand the number of random and expand the program products

Also Published As

Publication number Publication date
EP1450250B1 (en) 2006-08-23
CN1514346A (zh) 2004-07-21
EP1450250A3 (en) 2004-12-29
CN1310131C (zh) 2007-04-11
TW200415507A (en) 2004-08-16
DE60307780D1 (de) 2006-10-05
EP1450250A2 (en) 2004-08-25
DE60307780T2 (de) 2007-08-23

Similar Documents

Publication Publication Date Title
EP2068239B1 (en) Microprocessor with selectively available random number generator based on self-test result
TW200409017A (en) Continuous multi- buffering random number generator
TWI227439B (en) Apparatus and method for reducing sequential bit correlation in a random number generator
TWI240200B (en) Random number generator with selectable dual random bit string engines
TW200409018A (en) Random number generator bit string filter
CN105190535B (zh) 执行伪随机数产生操作的指令
KR100974973B1 (ko) 공개적으로 액세스 가능한 저장장치로부터 데이터 처리 기계의 상태에 대한 프라이빗 데이터의 액세스
CN105190534B (zh) 执行伪随机数种子操作的指令
CN108701088A (zh) 用于延迟低开销同步页表更新的设备和方法
TWI232405B (en) Microprocessor including random number generator supporting operating system-independent multitasking operation
TW202139038A (zh) 基於動態金鑰推衍的多金鑰總記憶體加密方法及設備
TW201640330A (zh) 用於建置及維持在亂序硬體軟體協同設計處理器中具有堆疊同步指令的述詞值之堆疊的方法與設備
US20060064448A1 (en) Continuous multi-buffering random number generator
TWI235951B (en) Microprocessor with selectively available random number generator based on self-test result and method for providing the same
Steinegger et al. A Fast and Compact Accelerator for Ascon and Friends.
Grabher et al. Non-deterministic processors: FPGA-based analysis of area, performance and security

Legal Events

Date Code Title Description
MK4A Expiration of patent term of an invention patent