本發(fā)明的實(shí)施例是有關(guān)于數(shù)據(jù)安全(datasecurity)的領(lǐng)域,且特別是有關(guān)于通過(guò)變更時(shí)脈延遲以防止旁通道攻擊的系統(tǒng)及其方法。
背景技術(shù):
在旁通道攻擊(side-channelattacks)中,有關(guān)于運(yùn)算的時(shí)序(timing)和/或功耗的信息可能會(huì)危及安全數(shù)據(jù)系統(tǒng)的安全性。
美國(guó)專利申請(qǐng)案公開(kāi)號(hào)2012/0204056的揭示內(nèi)容以參引方式被合并于此處,其描述了數(shù)據(jù)處理裝置,用以回應(yīng)數(shù)據(jù)處理指令來(lái)對(duì)至少一數(shù)據(jù)值執(zhí)行數(shù)據(jù)處理操作。數(shù)據(jù)處理裝置具有一延遲單元,其位于數(shù)據(jù)處理裝置內(nèi)的路徑上,其中延遲單元被用以施加一延遲至路徑上的信號(hào)傳播,且此信號(hào)傳播構(gòu)成數(shù)據(jù)處理操作的一部分。數(shù)據(jù)處理裝置被用于在預(yù)定時(shí)間點(diǎn)時(shí),判斷數(shù)據(jù)處理操作的結(jié)果,其中所述預(yù)定的時(shí)間點(diǎn)是在數(shù)據(jù)處理操作起始經(jīng)一預(yù)定時(shí)間區(qū)間后的時(shí)間點(diǎn)。延遲單元被用于使數(shù)據(jù)處理操作將被執(zhí)行并加上延遲的時(shí)間小于所述預(yù)定時(shí)間區(qū)間。
美國(guó)專利申請(qǐng)案公開(kāi)號(hào)2011/0285421的揭示內(nèi)容以參引方式被合并于此處,其描述了一種降低監(jiān)控系統(tǒng)的電流以及系統(tǒng)的數(shù)據(jù)間的關(guān)聯(lián)的能力的技術(shù)以及方法,其是通過(guò)關(guān)閉整體時(shí)脈眼圖,同時(shí)保持連接期的眼圖的開(kāi)啟。相較于使用系統(tǒng)廣泛時(shí)脈跳動(dòng),連接指令管線期的眼圖關(guān)閉的程度允許系統(tǒng)運(yùn)行至接近其最大運(yùn)行速度。但關(guān)閉整體使系統(tǒng)安全缺乏了部分打開(kāi)的眼圖。
美國(guó)專利公告號(hào)8,427,194的揭示內(nèi)容以參引方式被合并于此處,其描述了一種通過(guò)使用隨機(jī)時(shí)脈以降低入侵者監(jiān)視系統(tǒng)的電流及系統(tǒng)的數(shù)據(jù)的技巧及方法。其中,相較當(dāng)使用現(xiàn)有的附加跳動(dòng)方式于運(yùn)行頻率最大時(shí)的減少,在最大運(yùn)行速度時(shí)隨機(jī)時(shí)脈的時(shí)脈眼圖是關(guān)閉的且沒(méi)有明顯的減少。
技術(shù)實(shí)現(xiàn)要素:
根據(jù)本發(fā)明的多個(gè)實(shí)施例,一種通過(guò)變更時(shí)脈延遲以防止旁通道攻擊的系統(tǒng)具有邏輯電路,用以基于多個(gè)輸入執(zhí)行特定運(yùn)算(computation)的多個(gè)實(shí)例(instances)。此系統(tǒng)更具有延遲回路,通過(guò)在這些實(shí)例中對(duì)這些輸入施加各自的延遲(至少一部分的延遲彼此獨(dú)立改變),以在這些實(shí)例中改變邏輯電路的功耗輪廓(power-consumptionprofile)。
在某些實(shí)施例中,延遲回路用以在這些實(shí)例中改變邏輯電路的功耗輪廓是通過(guò)在這些實(shí)例中造成被邏輯電路運(yùn)算的中間輸出值的改變。
在多個(gè)實(shí)施例中,延遲回路用以在這些實(shí)例中改變邏輯電路的功耗輪廓是通過(guò)在這些實(shí)例中造成邏輯電路所執(zhí)行運(yùn)算的各自時(shí)序的改變。
在多個(gè)實(shí)施例中,通過(guò)變更時(shí)脈延遲以防止旁通道攻擊的系統(tǒng)更具有多個(gè)觸發(fā)器,每一輸入來(lái)自這些觸發(fā)器的相應(yīng)一者。
在多個(gè)實(shí)施例中,延遲回路包括多個(gè)延遲電路,每一延遲電路被用以施加這些延遲中的相應(yīng)一者至這些輸入中的相應(yīng)一者,通過(guò):延遲一時(shí)脈信號(hào),通過(guò)這些延遲中的相應(yīng)一者以產(chǎn)生被延遲時(shí)脈信號(hào),以及傳遞被延遲時(shí)脈信號(hào)至這些觸發(fā)器中的相應(yīng)一者。
在多個(gè)實(shí)施例中,系統(tǒng)還包括具有相應(yīng)傳播延遲的一個(gè)或多個(gè)其他邏輯電路并串接于邏輯電路,以及延遲回路被用以施加相應(yīng)的這些延遲至這些輸入,以于這些實(shí)例的任何一者中,邏輯電路的總傳播延遲不超過(guò)所述其他邏輯電路的相應(yīng)傳播延遲的最大值。
根據(jù)本發(fā)明的一些實(shí)施例,一種通過(guò)變更時(shí)脈延遲以防止旁通道攻擊的方法更被提供。此方法包括,使用邏輯電路,基于多個(gè)輸入執(zhí)行特定運(yùn)算的多個(gè)實(shí)例。此方法還包括通過(guò)在該些實(shí)例中施加相應(yīng)延遲至多個(gè)輸入(這些延遲的至少部分的是獨(dú)立改變),以在這些實(shí)例中改變邏輯電路的功耗輪廓。
為讓本發(fā)明的上述特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉實(shí)施例,并配合附圖作詳細(xì)說(shuō)明如下。
附圖說(shuō)明
圖1示出本發(fā)明一實(shí)施例的一種系統(tǒng)以防止旁通道攻擊的高階結(jié)構(gòu)示意圖。
圖2示出本發(fā)明一實(shí)施例并根據(jù)圖1的范例實(shí)施例的系統(tǒng)的結(jié)構(gòu)示意圖。
圖3a至圖3b是依照本發(fā)明一些實(shí)施例示出操作圖1系統(tǒng)時(shí)的各自時(shí)間軸示意圖。
附圖標(biāo)記說(shuō)明:
20:系統(tǒng);
21、21a、21b、r:暫存器;
22、22a、22b、c:邏輯電路;
23:讀卡機(jī);
25:智能卡;
26:延遲電路;
27:功率輸入;
28:多工器;
29:示波器;
c0、c1、c2、c3、ck:時(shí)脈信號(hào);
d、i0、i1、i2、i3:輸入;
ed:被加密的數(shù)據(jù);
f0、f1、f2、f3:觸發(fā)器;
nc0、nc1、nc2、nc3:下一計(jì)數(shù);
rdb0、rdb1、rdb2、rdb3:隨機(jī)延遲位;
q:輸出;
t0、t1、t2、t3、t4:時(shí)間;
ud:未經(jīng)加密的數(shù)據(jù)。
具體實(shí)施方式
[概述]
某些旁通道攻擊(side-channelattacks)是利用系統(tǒng)功耗輪廓(power-consumptionprofile)的一致性,以獲得未經(jīng)授權(quán)存取的系統(tǒng)信息。舉例來(lái)說(shuō),旁通道攻擊可能被用于破壞加密系統(tǒng)的加密,因而從加密系統(tǒng)中取得信息的存取。
本發(fā)明的范例實(shí)施例是通過(guò)“隨機(jī)化(randomizing)”系統(tǒng)的功耗輪廓以防止此種旁通道攻擊。為了達(dá)到隨機(jī)化,隨機(jī)延遲(例,延遲的時(shí)間區(qū)間隨機(jī)地改變)被施加于屬于此系統(tǒng)的至少一邏輯電路的輸入中。由于這些延遲,邏輯電路執(zhí)行任何特定運(yùn)算的方式將在該運(yùn)算的多個(gè)實(shí)例(instancesofthecomputation)之間改變。舉例來(lái)說(shuō),在計(jì)算出最終輸出值之前,隨機(jī)延遲可能導(dǎo)致邏輯電路去運(yùn)算中間輸出(intermediateoutputs),而此中間輸出在值和/或時(shí)序的改變可以作為隨機(jī)延遲的函數(shù)。因此,由于(1)被邏輯電路運(yùn)算的中間輸出值的改變,或(2)邏輯電路所執(zhí)行的運(yùn)算的時(shí)序的改變,使邏輯電路的功耗輪廓將在任意特定運(yùn)算的多個(gè)實(shí)例之間進(jìn)行改變。
另外,通過(guò)改變存儲(chǔ)器元件被更新的時(shí)間,這些隨機(jī)延遲可以被施加至系統(tǒng)中至少一個(gè)存儲(chǔ)器元件(例如包括多個(gè)觸發(fā)器的暫存器),因此導(dǎo)致存儲(chǔ)器元件的功耗輪廓在任意特定運(yùn)算的不同實(shí)例間改變。在某些案例中,從存儲(chǔ)器元件至邏輯電路的輸入被接收,以使施加于存儲(chǔ)器元件的這些延遲會(huì)影響存儲(chǔ)器元件及邏輯電路兩者的功耗。
在本發(fā)明中,“邏輯電路”是能通過(guò)對(duì)多個(gè)輸入值執(zhí)行一邏輯操作,以運(yùn)算一輸出的任何電子電路。(例如一邏輯運(yùn)算一般為基本的非(not)、與(and)、或(or)、與非(nand)、或非(nor)及異或(xor)等運(yùn)算的組合。)邏輯電路的輸出可以為此電路當(dāng)下輸入的一個(gè)純粹函數(shù),此種案例的邏輯電路被稱為“組合邏輯電路(combinational-logiccircuit或combinatorial-logiccircuit)”。另外,此輸出可以相依于此電路的輸入歷史和/或先前的輸出,此種案例的邏輯電路被稱為“時(shí)序邏輯電路(sequential-logiccircuit)”。在此處被描述的范例實(shí)施例可以施加于組合邏輯電路以及時(shí)序邏輯電路兩者上。
在本發(fā)明中,系統(tǒng)或電路“功耗輪廓”關(guān)聯(lián)于此系統(tǒng)或此電路所消耗的功率量,其作為時(shí)間函數(shù)。此外,“改變功耗輪廓”關(guān)聯(lián)于以多于統(tǒng)計(jì)變化的正常量來(lái)改變此系統(tǒng)或此電路在時(shí)間中至少一時(shí)刻所消耗的功率量。換句話說(shuō),即便通過(guò)溫度、電壓和/或其他因素的改變可能導(dǎo)致功耗輪廓表現(xiàn)一個(gè)統(tǒng)計(jì)變化的正常量,這種變化會(huì)在旁通道攻擊中被“抵消(canceledout)”。另一方面來(lái)說(shuō),在此描述的范例實(shí)施例以多于所述正常量來(lái)改變功耗輪廓,因此阻止任何潛在的旁通道攻擊。
[系統(tǒng)描述]
請(qǐng)先參考圖1的參照內(nèi)容,圖1示出本發(fā)明一范例實(shí)施例的一種系統(tǒng)20以防止旁通道攻擊的高階結(jié)構(gòu)示意圖。系統(tǒng)20被展現(xiàn)為讀卡機(jī)23中的一個(gè)構(gòu)件,讀卡機(jī)23被用以讀取智能卡(smartcard)25。然而,請(qǐng)注意系統(tǒng)20也可以被實(shí)現(xiàn)于任何其他適合的型態(tài)的裝置。不限于本實(shí)施例,例如,系統(tǒng)20可以被實(shí)現(xiàn)于智能卡25,或者,更一般性地,系統(tǒng)20可以被實(shí)現(xiàn)在實(shí)施數(shù)字邏輯的任何裝置,例如在任何固定式或移動(dòng)式的電腦內(nèi)的中央處理器(centralprocessingunit,cpu)。
圖1從高階結(jié)構(gòu)的角度顯示數(shù)據(jù)流入、流經(jīng)及流出系統(tǒng)20。首先,來(lái)自智能卡25的被加密的數(shù)據(jù)“ed”被系統(tǒng)20所接收。舉例來(lái)說(shuō),這些數(shù)據(jù)會(huì)被第一暫存器(“r”)21a所接收。接著,這數(shù)據(jù)會(huì)流入第一邏輯電路(“c”)22a,其可以由這數(shù)據(jù)運(yùn)算得到輸出。這輸出接著可以被回送至第一暫存器21a,和/或被送至第二暫存器21b,隨后這輸出會(huì)由第二暫存器21b流至第二邏輯電路22b。此數(shù)據(jù)會(huì)繼續(xù)經(jīng)過(guò)任意數(shù)量的暫存器及邏輯電路,每一邏輯電路對(duì)這數(shù)據(jù)執(zhí)行任意相關(guān)操作,以回應(yīng)任何相關(guān)額外的輸入。最后,系統(tǒng)20輸出未經(jīng)加密的數(shù)據(jù)“ud”,“ud”是可使用的,舉例來(lái)說(shuō),未經(jīng)加密的數(shù)據(jù)ud會(huì)被用來(lái)執(zhí)行金融交易。
圖1也揭示一示波器(oscilloscope)29,通過(guò)對(duì)讀卡機(jī)監(jiān)測(cè)功率輸入27,示波器29準(zhǔn)備對(duì)讀卡機(jī)23進(jìn)行旁通道攻擊。進(jìn)一步說(shuō)明如下,系統(tǒng)20通過(guò)改變讀卡機(jī)讀取不同卡之間的功耗輪廓以防止此種攻擊。(在某些案例中,攻擊者會(huì)通過(guò)監(jiān)視智能卡25的功耗,交替或額外地企圖非法提取數(shù)據(jù)。此實(shí)施例的系統(tǒng)20在智能卡上的實(shí)現(xiàn),如同上述,會(huì)幫助阻擋這種攻擊。)
請(qǐng)參考圖2的內(nèi)容,圖2示出本發(fā)明一范例實(shí)施例并根據(jù)圖1的范例實(shí)施例的系統(tǒng)20的結(jié)構(gòu)示意圖。為了說(shuō)明的緣故,圖2揭示簡(jiǎn)化的范例,圖1中串聯(lián)的暫存器及邏輯電路由單一暫存器21以及單一邏輯電路22所取代,如下所述,對(duì)來(lái)自暫存器21的數(shù)據(jù)進(jìn)行額外的操作。需注意的,無(wú)論如何,描述于圖2的原理原則及技術(shù)會(huì)被相似地施加于其他復(fù)雜度更高的系統(tǒng)。
暫存器21包括多個(gè)觸發(fā)器(flip-flops),被描繪于圖2的標(biāo)號(hào)f3、f2、f1及f0。在任何給定時(shí)間內(nèi),每一觸發(fā)器儲(chǔ)存單一二進(jìn)制值。假設(shè)本發(fā)明內(nèi)容中,觸發(fā)器f3儲(chǔ)存最高階位(highest-orderbit),觸發(fā)器f2儲(chǔ)存次高階位,等等。舉例來(lái)說(shuō),當(dāng)(1)f3及f1儲(chǔ)存0,且(2)f2及f0儲(chǔ)存1,暫存器21將儲(chǔ)存數(shù)值0101(=5)。鑒于此,更進(jìn)一步描述如下,圖2的范例實(shí)施例實(shí)現(xiàn)一計(jì)數(shù)器,被儲(chǔ)存于暫存器的數(shù)值可以被視為“計(jì)數(shù)(count)”變數(shù)的值。
圖2揭示f3接收時(shí)脈信號(hào)c3,f2接收時(shí)脈信號(hào)c2,f1接收時(shí)脈信號(hào)c1,以及f0接收時(shí)脈信號(hào)c0。隨著每一相應(yīng)的時(shí)脈信號(hào)的上升(或者,下降)邊緣,對(duì)應(yīng)的觸發(fā)器獲取(“閂鎖”)相應(yīng)數(shù)據(jù)輸入d的值。在短暫的延遲后,被獲取的值變成觸發(fā)器的輸出q,此輸出隨后被輸入至邏輯電路22。因此,圖2顯示來(lái)自觸發(fā)器f3的輸出被饋送至邏輯電路作為輸入i3,來(lái)自觸發(fā)器f2的輸出被饋送至邏輯電路作為輸入i2,來(lái)自觸發(fā)器f1的輸出被饋送至邏輯電路作為輸入i1,以及來(lái)自觸發(fā)器f0的輸出被饋送至邏輯電路作為輸入i0。
邏輯電路22對(duì)這些輸入執(zhí)行一邏輯運(yùn)算。特別是,在圖2中,邏輯電路22為一計(jì)數(shù)器用以執(zhí)行“+1”的操作,其中1被加在至邏輯電路的輸入。此操作產(chǎn)生一輸出“下一計(jì)數(shù)”(nextcount,或簡(jiǎn)稱“nc”),其包括四個(gè)輸出位nc3、nc2、nc1及nc0。在本揭示內(nèi)容中,nc3被假設(shè)為“下一計(jì)數(shù)”的最高階位,nc2被假設(shè)為“下一計(jì)數(shù)”的次高階位,等等。每一輸出位被饋送至此輸出位的量級(jí)(theorderofmagnitudeoftheoutputbit)所對(duì)應(yīng)的觸發(fā)器,借此此,在下一個(gè)時(shí)脈周期(clockcycle)中,“計(jì)數(shù)”獲取“下一計(jì)數(shù)”的數(shù)值。
因此,舉例來(lái)說(shuō),初始的“計(jì)數(shù)”0001可以被輸入至邏輯電路22。(也就是說(shuō)i0=1,而i1=i2=i3=0。)通過(guò)執(zhí)行“+1”操作,邏輯電路22運(yùn)算輸出“下一計(jì)數(shù)”為0010。(也就是說(shuō)nc1=1,且nc0=nc2=nc3=0。)此輸出接著被回饋至各觸發(fā)器f0、f1、f2、f3,如此一來(lái),在下一個(gè)時(shí)脈周期時(shí),觸發(fā)器f1獲取數(shù)值1,而剩余的觸發(fā)器獲取數(shù)值0。亦即,“計(jì)數(shù)”被增加至0010?!坝?jì)數(shù)”的新數(shù)值接著被輸入至邏輯電路22。
如上所述,在圖2描述的眾多細(xì)節(jié)僅為示例說(shuō)明。在實(shí)際運(yùn)作中,本發(fā)明的范例實(shí)施例可以被應(yīng)用于任何合適數(shù)量的邏輯電路,每一邏輯電路執(zhí)行任何合適的運(yùn)算。每一邏輯電路會(huì)接收任意數(shù)量的輸入,舉例來(lái)說(shuō),包括可以從在系統(tǒng)內(nèi)存儲(chǔ)器元件以外的來(lái)源接收輸入,并計(jì)算任意數(shù)量的輸出。這些輸出會(huì)饋送至上述的存儲(chǔ)器元件,和/或以任何其他方式被使用。此外,系統(tǒng)20也可以包括任意合適數(shù)量、任意合適型態(tài)的存儲(chǔ)器元件。
為了防止旁通道攻擊,本發(fā)明的范例實(shí)施例通過(guò)改變?nèi)我惶囟ㄟ\(yùn)算的多個(gè)實(shí)例之間的相應(yīng)時(shí)間區(qū)間,以延遲至觸發(fā)器的時(shí)脈信號(hào)。時(shí)脈信號(hào)的延遲導(dǎo)致這些觸發(fā)器各自獲取新的相應(yīng)數(shù)值的時(shí)間有所變化,因此也改變了這些觸發(fā)器的功耗輪廓。此外,由于至邏輯電路的輸入是來(lái)自這些觸發(fā)器,該些時(shí)脈信號(hào)延遲更進(jìn)一步影響邏輯電路的功耗輪廓。因此,由于觸發(fā)器的功耗輪廓及邏輯電路的功耗輪廓被改變,整個(gè)系統(tǒng)的功耗輪廓被改變。(雖然如上所述,仍需注意的是本發(fā)明的范圍包括改變一個(gè)或多個(gè)邏輯電路的功耗輪廓,如同此處所述,但不改變?nèi)魏未鎯?chǔ)器元件的功耗輪廓。)
這些延遲的至少部分延遲彼此之間獨(dú)立地改變;舉例來(lái)說(shuō),如圖2所述,并更進(jìn)一步描述如下,每一延遲獨(dú)立地改變于其他的延遲。在某些范例實(shí)施例中,進(jìn)一步配合并參考圖2,于此處描述如下,系統(tǒng)20會(huì)通過(guò)兩個(gè)延遲時(shí)間區(qū)間其中之一來(lái)隨機(jī)延遲每一時(shí)脈信號(hào)。在一案例中,假設(shè)具有四個(gè)觸發(fā)器,對(duì)于邏輯電路可以執(zhí)行的每一種可能的運(yùn)算則有24=16種不同的功耗輪廓。在更復(fù)雜的系統(tǒng)中(具有更多數(shù)量的觸發(fā)器和/或電路),可能會(huì)有百萬(wàn)或數(shù)十億的功耗輪廓,以成功地使旁通道攻擊變成實(shí)質(zhì)上不可能的行為。舉例來(lái)說(shuō),若有32個(gè)觸發(fā)器,并假設(shè)只有兩個(gè)延遲時(shí)間區(qū)間,不同的功耗輪廓的數(shù)量已經(jīng)超過(guò)四十億了。
在某些范例實(shí)施例中,延遲電路被用以延遲這些觸發(fā)器所接收的時(shí)脈信號(hào)。舉例來(lái)說(shuō),如圖2所示,共同時(shí)脈信號(hào)ck會(huì)被饋送至多個(gè)延遲電路26中的每一延遲電路。每一延遲電路接收時(shí)脈信號(hào)ck,延遲此時(shí)脈信號(hào)ck,并饋送被延遲的時(shí)脈信號(hào)至相應(yīng)的觸發(fā)器。
在其他范例實(shí)施例中,每一延遲電路延遲此時(shí)脈信號(hào)ck以回應(yīng)隨機(jī)延遲位“rdb”,其被獨(dú)立產(chǎn)生于被饋送至其他延遲電路的這些隨機(jī)延遲位。(在圖2中,這些隨機(jī)延遲位是由參照數(shù)字rdb3、rdb2、rdb1及rdb0所指示,并分別對(duì)應(yīng)至觸發(fā)器f3、f2、f1及f0)。為了回應(yīng)隨機(jī)延遲位,多工器28啟動(dòng)兩個(gè)延遲元件“延遲1(delay1)”及“延遲2(delay2)”其中之一,以使時(shí)脈信號(hào)ck被延遲了兩個(gè)延遲時(shí)間區(qū)間其中之一。舉例來(lái)說(shuō),多工器28可以回應(yīng)rdb=0而選擇“延遲1”,及回應(yīng)rdb=1而選擇“延遲2”。通過(guò)這種方式,每一觸發(fā)器的延遲是以隨機(jī)的方式改變。
盡管特定的實(shí)施例已描繪如上,需注意的是本發(fā)明的范圍包括使用任何合適的回路來(lái)延遲邏輯電路的這些輸入,和/或延遲在系統(tǒng)中的存儲(chǔ)器元件被更新(updated)的時(shí)間。
隨機(jī)延遲被應(yīng)用于時(shí)脈信號(hào)的效應(yīng)被示出于圖3a至圖3b。圖3a至圖3b是依據(jù)本發(fā)明一些范例實(shí)施例示出系統(tǒng)20的操作的各自時(shí)間軸(timelines)示意圖。圖3a至圖3b是基于圖2所示系統(tǒng)20實(shí)施例。
圖3a示出了第一情境。在第一情境中,被儲(chǔ)存于暫存器中的“計(jì)數(shù)”的初始值為0001,而“下一計(jì)數(shù)”初始地具有數(shù)值0010(按照“+1”運(yùn)算,“下一計(jì)數(shù)”比“計(jì)數(shù)”大1)。在時(shí)間t0,時(shí)脈信號(hào)ck從低到高。然而,由于這些延遲電路,暫存器不會(huì)立即的獲取(capture)數(shù)值0010,取而代之,先獲取了中間數(shù)值(intermediatevalue)0011。特別是,(1)對(duì)于觸發(fā)器f3及f1的這些延遲電路,每一延遲電路將時(shí)脈信號(hào)ck延遲了0時(shí)間區(qū)間(例如,通過(guò)應(yīng)用“延遲1”的0),以使時(shí)脈信號(hào)c3及c1于時(shí)間t0時(shí)從低到高,但是(2)觸發(fā)器f2與f0的這些延遲電路會(huì)將時(shí)脈信號(hào)ck延遲了更大的時(shí)間區(qū)間,以使時(shí)脈信號(hào)c2及c0只在稍后的時(shí)間t1時(shí)由低到高。(舉例來(lái)說(shuō),這些稍遲的延遲電路可以應(yīng)用“延遲2”的t1-t0。)因此,在t0時(shí),觸發(fā)器f3及f1從“下一計(jì)數(shù)”中分別獲取位nc3及nc1,但是觸發(fā)器f2及f0維持其先前的數(shù)值,致使“計(jì)數(shù)”=0011。
在t0之后的某個(gè)時(shí)間,邏輯電路接收新的輸入0011。此邏輯電路接著開(kāi)始運(yùn)算0011。首先,在時(shí)間t2,邏輯電路輸出中間輸出值0110。此輸出是“介于”初始輸出值0010以及“目標(biāo)(target)”輸出值0100(其比輸入0011大1),邏輯電路已設(shè)定nc3為1,但尚未設(shè)定nc1為0。
如上所述,在早于t2的時(shí)間t1,觸發(fā)器f2及f0分別獲取nc2及nc0的數(shù)值,以使儲(chǔ)存在暫存器中的數(shù)值改變成0010。接著,在t1之后的某個(gè)時(shí)間,邏輯電路接收來(lái)自暫存器的輸入0010,并開(kāi)始處理此輸入。首先,在時(shí)間t3,邏輯電路輸出中間數(shù)值0111,此“介于”先前的輸出0110以及“目標(biāo)”輸出0011,此時(shí),邏輯電路將nc0已設(shè)為1,但尚未將nc3設(shè)為0。接著,在時(shí)間t4,邏輯電路輸出了最終輸出0011。
一般而言,系統(tǒng)20被用于使每一時(shí)脈信號(hào)延遲短于邏輯電路完成第一運(yùn)算的所需時(shí)間。因此,舉例來(lái)說(shuō),在圖3a中,最后更新“計(jì)數(shù)”發(fā)生于t1,早于時(shí)間t2的第一次改變“下一計(jì)數(shù)”。(若任一時(shí)脈信號(hào)被延遲超過(guò)t2,暫存器會(huì)獲取錯(cuò)誤的數(shù)值0110來(lái)取代0010。)
圖3b示出了第二個(gè)情境。在第二情境中,“計(jì)數(shù)”及“下一計(jì)數(shù)”的初始狀態(tài)相同于圖3a,且邏輯電路執(zhí)行相同的“+1”運(yùn)算。然而,由于不同的延遲被應(yīng)用于這些觸發(fā)器的輸入的時(shí)脈信號(hào),使得運(yùn)算執(zhí)行的過(guò)程明顯的不同。
首先,在時(shí)間t0,觸發(fā)器f2及f0分別獲取各自的新的數(shù)值,使得暫存器儲(chǔ)存中間值0000。邏輯電路接著開(kāi)始處理此中間輸入。接著,在時(shí)間t1,觸發(fā)器f3及f1分別獲取各自的新數(shù)值,以使“計(jì)數(shù)”轉(zhuǎn)變成0010。然而,邏輯電路持續(xù)地運(yùn)算中間輸入0000。因此,在時(shí)間t2,邏輯電路輸出中間數(shù)值0011。(在上述的描繪中,此數(shù)值“介于”0010及“目標(biāo)”輸出0001之間;恰巧地,此數(shù)值正好與最終輸出相同。)接著,在時(shí)間t3,邏輯電路輸出數(shù)值0001,此為應(yīng)用“+1”運(yùn)算至中間輸入0000的最終結(jié)果。最后,在時(shí)間t4,邏輯電路輸出0011,此為應(yīng)用“+1”運(yùn)算至最終輸入0010的最終結(jié)果。
通過(guò)兩種不同的中間輸入(0000與0011)傳遞至邏輯電路,因此出現(xiàn)了圖3b不同于圖3a的至少兩個(gè)方法。第一,如上所述,邏輯電路運(yùn)算不同的中間輸出值(0011及0001相對(duì)于0110及0111)。第二,邏輯電路執(zhí)行運(yùn)算的時(shí)序并不相同。因此,舉例來(lái)說(shuō),相較于圖3a,圖3b顯示“下一計(jì)數(shù)”的值的轉(zhuǎn)變時(shí)間t3較早,而最后轉(zhuǎn)變時(shí)間t4較晚。由于這些不同之處,圖3a與圖3b的邏輯電路的功耗輪廓并不相同,并由示出于圖中的功耗曲線(僅為示例)所表示。
在某些案例中,改變中間輸入會(huì)更進(jìn)一步導(dǎo)致中間輸出值的數(shù)量改變。改變中間輸出值的數(shù)量亦為可能影響功耗輪廓的另外一個(gè)因素。
需注意的是這些附圖示出的這些中間輸出值是用來(lái)示例說(shuō)明的緣故而被選擇成為“中間值(in-betweenvalues)”。在本發(fā)明的內(nèi)容中,“中間輸出值”可以為早于運(yùn)算的最后結(jié)果的輸出,且由邏輯電路輸出的任何數(shù)值。
一般而言,如同上述,系統(tǒng)20包括多個(gè)彼此串聯(lián)的多個(gè)邏輯電路。對(duì)于這種多電路系統(tǒng),一般而言(但非必要),時(shí)脈延遲僅被應(yīng)用至這些電路中比較快的電路的輸入,以確保整個(gè)系統(tǒng)的速度不會(huì)低于不具有時(shí)脈延遲的系統(tǒng)。
舉例來(lái)說(shuō),若在中央處理器中最慢的邏輯電路具有9.9納秒(nanoseconds)的傳播延遲,此中央處理器的時(shí)脈周期(clockcycle)的時(shí)間區(qū)間可以設(shè)為10納秒。(此對(duì)應(yīng)至近似100兆赫(mhz)的時(shí)脈速度;100百萬(wàn)略少于最慢的邏輯電路每秒可以執(zhí)行的運(yùn)算數(shù)量。)因此,為了維持時(shí)脈周期的時(shí)間區(qū)間于10納秒,延遲僅施加于總傳播延遲(包括時(shí)脈延遲)小于10納秒的這些電路的輸入中,以便有足夠的安全余量。舉例來(lái)說(shuō),時(shí)脈延遲可以被設(shè)置,使得系統(tǒng)中沒(méi)有總傳播延遲超過(guò)9.9納秒的“基準(zhǔn)”傳播延遲。因此,通過(guò)說(shuō)明的此種方式,具有8納秒初始傳播延遲的電路可以具有被延遲了任何合適時(shí)間區(qū)間的一個(gè)或多個(gè)輸入,所述合適時(shí)間區(qū)間不超過(guò)1.9納秒。此外,具有7納秒初始傳播延遲的其他電路可以具有被延遲了任何合適時(shí)間區(qū)間的一個(gè)或多個(gè)輸入,所述合適時(shí)間區(qū)間不超過(guò)2.9納秒。
在本發(fā)明的內(nèi)容中,邏輯電路的“傳播延遲”是電路輸出計(jì)算結(jié)果的所需時(shí)間,其是從輸入的接收的時(shí)間而測(cè)量獲得。
在本發(fā)明所屬的技術(shù)領(lǐng)域中具有通常知識(shí)者可以理解的是,本發(fā)明不限于上述的說(shuō)明。相反地,本發(fā)明的實(shí)施例的范圍包括了在本技術(shù)領(lǐng)域中具有通常知識(shí)者可以通過(guò)閱讀上述說(shuō)明并依據(jù)上述各種特征的組合或子組合,以及不屬于先前技術(shù)的更動(dòng)或修正。在本專利申請(qǐng)的參照文件被并入并視為本專利申請(qǐng)的一個(gè)部分,除了任何與本說(shuō)明書(shū)明確或隱含的定義相沖突的術(shù)語(yǔ),應(yīng)以本發(fā)明書(shū)的定義為準(zhǔn)。