專利名稱:集成電路處理級內的錯誤檢測和恢復的制作方法
技術領域:
本發(fā)明涉及集成電路領域。更具體地說,本發(fā)明涉及集成電路處理級內的處理錯誤的檢測和這種處理錯誤的恢復。
眾所周知,集成電路可看作由一系列串行連接的處理級(例如流水線電路)組成。每級之間是存儲一個或多個信號值的鎖存器。每個處理級的處理邏輯響應從前面處理級或別處接收的輸入值,來產生要存儲在相關輸出鎖存器中的輸出信號值。處理邏輯完成其處理操作所用的時間確定了集成電路可操作的速度。如果所有級處理邏輯都能在短時間內完成其處理,那么通過引起高速處理的輸出鎖存器可快速增加信號值。系統(tǒng)增加級間信號不能比最慢的處理邏輯可執(zhí)行其接收輸入信號和產生適當輸出信號的處理操作更快。這限制了系統(tǒng)的最大性能。
在某些情況下,需要盡可能快地處理數(shù)據(jù)并相應地驅動處理級,以便以盡可能快的速率提高其處理操作,直到最慢的處理級不能保持同步為止。在其它情況下,集成電路的功耗比處理速率更重要,并將降低集成電路的工作電壓,以將功耗降到最慢的處理級不再能保持同步的那一點。
一種處理這些限制條件的方法是用處理時鐘驅動集成電路,該處理時鐘具有比考慮到不同集成電路、操作環(huán)境條件、正處理信號的數(shù)據(jù)相關性等之間最壞情況制造偏差的公差范圍所允許的最小值小的已知頻率。在電壓電平方面,考慮到最壞情況制造偏差、環(huán)境條件、數(shù)據(jù)相關性等,通常以足夠高于最小電壓電平的電壓電平來操作集成電路,以確保所有處理級能夠保持同步。要理解到,在限制最大工作頻率和最小工作電壓以便考慮到最壞情況時,常規(guī)方法是謹慎的。
在其它已知系統(tǒng)中提供了這樣的電路元件用于測量特定集成電路是否超過其頻率或電壓要求而工作。這些已知機制包括嵌入在集成電路內的延遲線,沿這些延遲線可監(jiān)控信號的傳播,以確保信號到達延遲線末端或延遲線內某些其它預定點,這要求有足夠的時間,以確保在已滿足沿該延遲線傳播的情況下,集成電路上最慢處理級也將完成其處理操作。延遲線設計成其延遲比任何處理級的最大延遲都大足夠的余量,以將最壞情況制造偏差、環(huán)境條件、數(shù)據(jù)相關性等考慮進去。因此,這種技術以控制工作電壓和頻率的方式也是謹慎的。
從一個方面來看,本發(fā)明提供了一種執(zhí)行數(shù)據(jù)處理的集成電路,所述集成電路包括錯誤檢測器,可操作用于通過對所述集成電路內的數(shù)據(jù)信號值進行復式采樣來檢測所述集成電路操作中的錯誤,采樣值間的差異表示錯誤;錯誤修復邏輯,響應所述錯誤檢測器,并可操作用于修復操作中的所述錯誤;以及操作參數(shù)控制器,可操作用于控制所述集成電路的一個或多個性能控制操作參數(shù);其中所述操作參數(shù)控制器根據(jù)所述錯誤檢測器檢測的一個或多個錯誤特性來動態(tài)控制所述一個或多個性能控制參數(shù)中的至少一個,來維持操作中的非零出錯率,所述錯誤修復邏輯修復操作中的所述錯誤,以使所述集成電路的數(shù)據(jù)處理繼續(xù)。
本技術反直覺地并違背本領域中強烈的設計偏見,而故意地以維持非零出錯率的方式來操作集成電路。與恢復檢測錯誤相關聯(lián)的時間和功率方面的成本,小于通過接近集成電路的操作限制運行而產生的節(jié)省。
最好,復式采樣是在各個不同時間檢測采樣點的信號值。
優(yōu)選實施例是這樣的所述操作參數(shù)控制器應用反饋控制,以根據(jù)所述錯誤檢測器檢測的所述一個或多個錯誤特性來調節(jié)所述一個或多個性能控制參數(shù)中的所述至少一個。
雖然可能有廣泛的可能性,但優(yōu)選實施例是這樣的所述錯誤檢測器檢測的所述一個或多個錯誤特性至少包括以下一項所述錯誤檢測器檢測的所述錯誤的錯誤率;以及由所述錯誤檢測器檢測的所述錯誤的所述錯誤修復邏輯的修復產生的處理性能方面的降低。
雖然性能控制參數(shù)可采用各種不同的形式,但在優(yōu)選實施例中,所述一個或多個性能控制參數(shù)至少包括以下一項工作電壓;工作頻率;集成電路體偏壓;以及溫度。
本發(fā)明的優(yōu)選實施例提供了一種執(zhí)行數(shù)據(jù)處理的集成電路,所述集成電路包括多個處理級,來自至少一個處理級的處理級輸出信號被作為處理級輸入信號提供給后面的處理級,其中所述至少一個處理級包括處理邏輯,可操作用于對至少一個處理級輸入值執(zhí)行處理操作,以產生處理邏輯輸出信號;無延遲鎖存器,可操作用于在無延遲捕獲時間捕獲所述處理邏輯輸出信號的無延遲值,在所述無延遲捕獲時間之后,所述無延遲值被作為所述處理級輸出信號提供給所述后面的處理級;延遲鎖存器,可操作用于在遲于所述無延遲捕獲時間的延遲捕獲時間上捕獲所述處理邏輯輸出信號的延遲值;比較器,可操作用于在所述無延遲捕獲時間之后比較所述無延遲值和所述延遲值,以檢測所述處理邏輯輸出信號的改變,所述改變表示所述處理邏輯在所述無延遲捕獲時間上沒有完成所述處理操作;以及錯誤恢復邏輯,可操作用于在所述比較器檢測到所述改變時執(zhí)行錯誤恢復操作,以抑制所述后面的處理級使用所述無延遲值。
這些優(yōu)選實施例認確認可直接監(jiān)控處理級自身的操作,以找到它們失效的限制條件。在發(fā)生實際故障時,則可糾正這些故障,以使整體上不產生錯誤操作。通過將本方法中直接觀察故障點與先前方法中避免過度謹慎的性能范圍相比較所獲得的優(yōu)點,多于在發(fā)生故障時對恢復系統(tǒng)所用的附加時間和功率的補償。故意允許發(fā)生這種處理錯誤,以使關鍵路徑無法滿足其同步要求,在本領域中這是極其反直覺的,其中正常情況是努力確保所有關鍵路徑總是滿足其同步要求。處理級應該被廣泛考慮并包含例如簡單總線,其中在該總線中信號從一個鎖存器傳到下一個鎖存器,無需經歷和操作。
已檢測到發(fā)生了錯誤,就有多種不同的方式可以糾正或補償它。在一個優(yōu)選型實施例中,錯誤恢復邏輯可操作用于以延遲值代替無延遲值作為處理級輸出信號。強烈優(yōu)選的是,用從延遲值采樣中獲得的正確值代替已知有缺陷的處理級輸出信號,這是因為即使發(fā)生錯誤并需要補償,也足以通過數(shù)據(jù)處理操作確保向前繼續(xù)進行。
優(yōu)選配置是這樣的其中錯誤恢復邏輯操作用于迫使延遲值存儲在無延遲鎖存器中代替無延遲值。
雖然本發(fā)明可適用于同步和異步數(shù)據(jù)處理電路,但本發(fā)明很適用于同步數(shù)據(jù)處理電路,在同步數(shù)據(jù)處理電路中無延遲時鐘信號驅動處理級內的處理操作。
在無延遲時鐘信號驅動處理級的系統(tǒng)的情況下,錯誤恢復邏輯可利用該信號,以通過選通無延遲時鐘信號來促進恢復錯誤,以為后面的處理級提供足夠的時間來恢復不正確的無延遲值的輸入,并代替使用正確的延遲值。
在使用無延遲時鐘信號的實施例的情況下,捕獲時間可來自無延遲時鐘信號中的預定相點,而延遲時鐘信號可來自無延遲時鐘信號。這兩個時鐘信號之間的相移可定義無延遲捕獲和延遲捕獲之間的延遲。
本技術特別適用于處理級是同步流水線內各個流水線級的實施例。
檢測和恢復錯誤可用于各種不同情況中,但特別適用于希望根據(jù)這種錯誤的檢測來動態(tài)控制集成電路操作參數(shù)的情況。反直覺地,本技術可用于控制操作參數(shù),以使系統(tǒng)以作為目標速率維持的非零出錯率運行,因為即使考慮了恢復發(fā)生的錯誤所需的措施,這也可對應于改進的總體性能,無論是速度方面還是功耗方面。
可改變的操作參數(shù)包括工作電壓、工作頻率、集成電路體偏壓(其控制閾值電平)和其溫度。
為了確保延遲鎖存器中捕獲的數(shù)據(jù)總是正確的,任一級處理邏輯中最大延遲的上限都是這樣的在工作點上任一級處理邏輯的延遲都不能超過時鐘周期加上延遲捕獲延遲的量的總和。作為任一處理延遲的下限有這樣的要求任一級處理邏輯的處理時間應超過延遲捕獲接著無延遲捕獲的時間,以確保沿短路徑傳播的后面數(shù)據(jù)不會不適當?shù)仄茐难舆t捕獲值。這可通過在需要時用一個或多個延遲元件加長短路徑來保證。
本技術適用于多種不同類型的集成電路,諸如通用數(shù)字處理電路,但特別適用于處理級是數(shù)據(jù)處理器或微處理器一部分的系統(tǒng)。
為了便于使用控制操作參數(shù)的控制算法,優(yōu)選實施例包括錯誤計數(shù)器電路,該電路可操作用于響應與無延遲值比較的延遲值中的改變而存儲錯誤檢測計數(shù)。該錯誤計數(shù)器可通過軟件實現(xiàn),以執(zhí)行操作參數(shù)的控制。
要理解到,上面討論的延遲鎖存器和無延遲鎖存器可具有多種不同的形式。具體地說,這些鎖存器可看成是包括以觸發(fā)器、D型鎖存器、時序元件、存儲單元、寄存器元件、其組合以及能夠存儲信號值的各種其它存儲設備形式的實施例。
從另一方面來看,本發(fā)明提供了一種控制執(zhí)行數(shù)據(jù)處理的集成電路的方法,所述方法包括如下步驟將來自多個處理級中至少一個處理級的處理級輸出信號作為處理級輸入信號提供給后面的處理級,所述至少一個處理級操作用于用數(shù)據(jù)處理邏輯對至少一個處理級輸入值執(zhí)行處理操作,以產生處理邏輯輸出信號;在無延遲捕獲時間上捕獲所述處理邏輯輸出信號的無延遲值,在所述無延遲捕獲時間之后,將所述無延遲值提供給所述后面的處理級作為所述處理級輸出信號;在遲于所述無延遲捕獲時間的延遲捕獲時間上,捕獲所述處理邏輯輸出信號的延遲值;在所述無延遲捕獲時間之后,比較所述無延遲值和所述延遲值以檢測所述處理邏輯輸出信號中的改變,所述改變表示所述處理邏輯在所述無延遲捕獲時間沒有完成所述處理操作;以及在檢測到所述改變時,執(zhí)行錯誤恢復操作,該操作抑制所述后面的處理級使用所述無延遲值。
現(xiàn)將僅以示例方式參考附圖來描述本發(fā)明的實施例,附圖中
圖1示意性示出應用本技術的多個處理級;圖2是示意性示出用在本技術中的電路的電路框圖;圖3是示意性示出無延遲鎖存器和延遲鎖存器以及相關比較器和錯誤恢復邏輯的電路圖;圖4A和4B是示意性示出圖1電路操作的流程圖;圖5示意性示出包括快速讀取機制和慢速讀取機制的存儲電路;圖6示出了圖5電路一部分的備選電路配置;圖7是示意性示出圖5存儲電路操作的流程圖;圖8示出了包括總線級之間無延遲鎖存器和延遲鎖存器的流水線總線;圖9是示意性示出圖8流水線總線操作的流程圖;圖10示意性示出用于控制微處理器的控制信號的產生,該控制信號受無延遲鎖存和輸出及延遲鎖存和輸出的控制;圖11是示意性示出圖10電路一個操作示例的流程圖;圖12示出了包括無延遲鎖存器和延遲鎖存器的處理流水線,在較低工作功率期間,這些延遲鎖存器重用作數(shù)據(jù)保持鎖存器;圖13是示意性示出圖12電路操作的流程圖;圖14示意性示出已應用糾錯和延遲鎖存器的多個處理級;圖15示意性示出通過通道進行數(shù)據(jù)傳送的糾錯,如果沒出現(xiàn)錯誤,則僅將未改變的數(shù)據(jù)值從輸入傳到輸出;圖16示意性示出了對于值改變邏輯元件(諸如加法器、乘法器或移位器)如何執(zhí)行糾錯;圖17是示意性示出圖14電路操作的流程圖;圖18示意性地示出了延遲鎖存器和無延遲鎖存器可如何用于控制處理流水線內的時鐘信號相對相位;圖19和20示意性示出了在恢復錯誤過程中停止和磁泡插入的各自使用;以及圖21示出了用在處理級之間的無延遲和延遲鎖存器,其中延遲鎖存器重新用作串行掃描鏈鎖存器。
圖1示出了集成電路的一部分,其是處理器核(諸如英格蘭劍橋的ARM有限公司生產的ARM處理器核)內的一部分同步流水線。同步流水線由多個相同處理級組成。第一級包括處理邏輯2、其后是以觸發(fā)器形式的無延遲鎖存器4、比較器6和延遲鎖存器8。這里所用的術語鎖存器,包括可操作用于不考慮觸發(fā)、時鐘和其它要求而存儲信號值的任何電路元件。類似地構成隨后的處理級。無延遲時鐘信號10驅動所有處理級內的處理邏輯和無延遲鎖存器4,以作為同步流水線的一部分同步工作。延遲時鐘信號12被提供給各處理級的延遲鎖存器8。延遲時鐘信號12是無延遲時鐘信號10的相移版本。相移程度控制在無延遲鎖存器4執(zhí)行的處理邏輯2的輸出捕獲和延遲鎖存器8在隨后時間執(zhí)行的處理邏輯2的輸出捕獲之間的延遲周期。如果處理邏輯2在現(xiàn)有無延遲時鐘信號頻率、提供給集成電路的工作電壓、體偏壓、溫度等給出的限制內工作,那么等到無延遲鎖存器4被觸發(fā)以捕獲其值時,處理邏輯2將已經完成其處理操作。結果,在延遲鎖存器8隨后捕獲處理邏輯2的輸出時,該輸出將具有與在無延遲鎖存器4內捕獲的值相同的值。相應地,比較器6在延遲周期期間將檢測不到發(fā)生改變,且不會觸發(fā)錯誤恢復操作。相反,如果集成電路的操作參數(shù)是這樣的等到無延遲鎖存器4捕獲其值時,處理邏輯2還沒完成其處理操作,那么延遲鎖存器8將捕獲不同的值,并且這將被比較器6檢測到,從而強制執(zhí)行錯誤恢復操作??梢钥闯觯e誤恢復操作能代替無延遲鎖存器4的輸出,在跟隨其捕獲的時間期間,無延遲鎖存器4的輸出被提供給后面的處理級,其中延遲值存儲在延遲鎖存器8內。該延遲值還可被迫存儲在無延遲鎖存器4內,代替存儲在此的之前錯誤捕獲的值。
亞穩(wěn)態(tài)檢測器7用于檢測無延遲鎖存器4輸出中的亞穩(wěn)態(tài)(即,不處于明確定義的邏輯狀態(tài))。如果檢測到這種亞穩(wěn)態(tài),則將其作為錯誤來處理,并改為使用延遲鎖存器6的值。
一檢測到錯誤,就可通過選通無延遲時鐘信號10來使整個流水線停止達附加延遲周期的時間,為后面處理級中的處理邏輯提供足夠的時間來正確響應提供給它的校正的輸入信號值。備選地,可用根據(jù)標準流水線處理技術、使用逆流結構(見圖2的磁泡和刷新鎖存器)插入到流水線中的磁泡來停止上游處理級,其中允許隨后的處理級繼續(xù)操作。另一備選方案是,可用被迫進入每級無延遲鎖存器的延遲鎖存器值來復位整個處理流水線,并重新開始處理。取代錯誤值重新使用延遲鎖存器值,而不是試圖重新計算,確保了即使已出現(xiàn)錯誤但通過處理操作仍可實現(xiàn)向前繼續(xù)進行。
存在有關處理級內處理邏輯所花的處理時間與無延遲捕獲時間和延遲捕獲時間之間的延遲之間關系的限制。具體地說,任何處理級的最小處理時間都不應小于該延遲,以確保捕獲的延遲值不被從短延遲處理級輸出的新數(shù)據(jù)破壞??赡芤妙~外的延遲元件來填充短延遲處理級,以確保它們不低于該最小處理時間。在其它極限上,需要確保在任何操作參數(shù)的任何操作點出現(xiàn)的處理級內的處理邏輯最大處理延遲都不大于正常無延遲工作時鐘周期和延遲值的總和,以確保在延遲值鎖存器中捕獲的延遲值穩(wěn)定且正確。
有多種可控制系統(tǒng)調諧功耗和性能的備選方式。根據(jù)一種配置,提供錯誤計數(shù)器電路(未示出)來計數(shù)比較器6產生的不等檢測的數(shù)量。這個檢測和恢復的錯誤的計數(shù),可用于使用硬件實現(xiàn)或軟件實現(xiàn)的算法來控制操作參數(shù)。該計數(shù)器可通過軟件讀取。通過用維持非零出錯水平的參數(shù)來故意操作集成電路,可獲得最佳總體性能,無論是最大速度方面還是最低功耗方面。在此情況下,來自操作非謹慎操作參數(shù)的增益,超過了恢復錯誤的需要所引起的懲罰。
根據(jù)備選配置,硬件計數(shù)器作為性能監(jiān)控模塊提供,并可操作用于跟蹤有用的工作和錯誤恢復工作。具體地說,計數(shù)器保持用于進行正執(zhí)行處理操作的有用指令數(shù)的計數(shù),且還保持進行錯誤恢復所執(zhí)行的指令和磁泡數(shù)的計數(shù)。軟件可操作用于讀取硬件計數(shù)器,并使用計數(shù)值適當?shù)乇3皱e誤恢復的開銷及其對系統(tǒng)性能的影響與通過以非零出錯率運行集成電路所獲得的降低功耗的平衡。
圖2是示意性示出了本技術中所用電路的電路框圖。圖2的上部示出了在每個處理級內提供的電路元件,即無延遲鎖存器4、延遲鎖存器8和比較器6。亞穩(wěn)態(tài)檢測器7用于檢測無延遲鎖存器4輸出中的亞穩(wěn)態(tài),并且這也引發(fā)了錯誤信號的產生。來自多個這種級的錯誤信號被提供給OR(或)門100的各個輸入,其中如果在任一處理器級中檢測到錯誤,則產生全局錯誤信號。全局錯誤信號可用于觸發(fā)如圖所示的刷新和磁泡插入信號。電路102檢測錯誤信號自身是否是亞穩(wěn)態(tài)。用正偏鎖存器(參考較高電壓)和負偏鎖存器(參考較低電壓)鎖存錯誤信號。如果上述兩個鎖存器的鎖存值不一致,則表示錯誤信號是亞穩(wěn)態(tài),并抽取應急(panic)信號。通過鎖存錯誤信號,并在對錯誤信號采樣之前等待整個時鐘周期(即兩個鎖存器串聯(lián)),可忽略處于亞穩(wěn)態(tài)的應急信號的概率。重要的是,如果抽取應急信號,則可能由于錯誤信號的亞穩(wěn)態(tài)而破壞來自延遲鎖存器的恢復值。在此情況下,使指令無效,且不向前繼續(xù)進行。由此,刷新流水線、重新啟動指令并降低時鐘頻率,以確保在重試同一指令時錯誤信號不會處于亞穩(wěn)態(tài)(否則會引起無限的重試循環(huán))。
圖3是詳細示出無延遲鎖存器、延遲鎖存器、比較器和至少一部分錯誤恢復電路的電路圖。無延遲鎖存器4可看作以兩個鎖存器14、16提供的觸發(fā)器的形式。延遲鎖存器8以單個反饋元件的形式。XOR(異或)門18用作比較器。錯誤信號20出現(xiàn)在圖3的電路中,并可提供給錯誤計數(shù)器電路(如前所述),或提供給調節(jié)電路或系統(tǒng)的其它操作參數(shù)。錯誤信號20用于切換多路復用器22,該多路復用器迫使存儲在延遲鎖存器8內的延遲值存儲在無延遲鎖存器4的鎖存器14內。亞穩(wěn)態(tài)檢測電路24用于檢測無延遲鎖存器4內的亞穩(wěn)態(tài)的出現(xiàn),并還用這個引發(fā)錯誤信號,該錯誤信號會使錯誤的亞穩(wěn)態(tài)值由存儲在延遲鎖存器8內的延遲值代替。
圖4A和4B是示意性示出圖1、2和3電路操作的流程圖。
在步驟26,來自第i級的處理邏輯在時間Ti產生其輸出信號。在步驟28,由無延遲鎖存器捕獲該輸出信號,并形成無延遲值。在步驟30,來自無延遲鎖存器的無延遲值開始被傳遞到后面的第i+1處理級,該處理級基于該值開始處理。如果檢測到錯誤,則這個處理可能被證明是錯誤的,并將需要恢復。
步驟32使處理邏輯可以繼續(xù)處理另一段時間周期(延遲時間),以在時間Ti+d產生輸出信號。在步驟34,該輸出信號被鎖存在延遲鎖存器中。在步驟36,比較延遲鎖存器和無延遲鎖存器內的值。在步驟37,如果它們相等,則沒有發(fā)生錯誤,并繼續(xù)正常處理。如果它們不等,則表示當無延遲鎖存器捕獲其值并開始將該值提供給隨后的第i+1處理級時,處理邏輯在時間Ti沒有完成其處理操作。因此,出錯條件已經產生,并將需要糾正。在步驟38,通過將流水線磁泡轉發(fā)到第i級后的流水線級中來起動該糾正。在步驟40,停止所有前面級到第i+1級。這包括出現(xiàn)錯誤的第i級。在步驟42,第i+1級使用延遲鎖存值作為其輸入來重新執(zhí)行其操作。在步驟44,可根據(jù)需要修改集成電路的操作參數(shù)。例如,可降低工作頻率、增加工作電壓、增加體偏壓等。然后處理繼續(xù)到步驟46。
如果檢測到不足量的錯誤,則控制電路和算法的操作參數(shù)可故意調節(jié)操作參數(shù),以便降低功耗并引起非零出錯率。
圖5示出了存儲器100,其包含存儲單元102的陣列。在該例中示出了單行存儲單元,但如本領域技術人員所熟知的,這種存儲單元陣列通常是包含數(shù)千個存儲單元的大的二維陣列。根據(jù)正常的存儲操作,解碼器104用于接收要存取的存儲地址,并將該存儲地址解碼,以激活一條字線106。該字線用于將線中的存儲單元102耦合到各個位線對108。根據(jù)相關存儲單元102內存儲的位值,這將導致當前耦合到該存儲單元的位線108中的電改變(例如電壓和/或電流的改變),并且該改變由讀出放大器110讀出。在第一時間,讀出放大器110的輸出存儲在無延遲鎖存器112內,并且隨后在延遲時間該輸出被存儲在延遲鎖存器114內。在延遲值已存儲在延遲鎖存器114之前,存儲在無延遲鎖存器112內的無延遲值經多路復用器116直接傳遞到另一處理電路118。當在延遲鎖存器114內已捕獲了延遲值時,比較器120用于比較無延遲值和延遲值。如果它們不等,則多路復用器116將該延遲值切換為來自存儲器100的相關特定位的輸出值。還從比較器120向另一處理電路118發(fā)出抑制信號,以抑制另一處理電路118基于當前已代替的錯誤無延遲值進行處理。本例中的抑制采用控制提供給另一處理電路118的時鐘信號CLK的形式,來擴展相關的時鐘周期,并延遲鎖存該另一處理電路的新結果,直到延遲值有機會通過相關處理電路傳播到達該另一處理電路輸出處的鎖存器時的時間為止。
可以看出,讀出放大器110和無延遲鎖存器112組成快速讀取機構的一部分。讀出放大器110和延遲鎖存器114組成慢速讀取機構的一部分。在大多數(shù)情況下,無延遲鎖存器112內鎖存的快速讀取結果將被糾正,且不需要任何糾正操作。在少數(shù)情況下,快速讀取結果將不同于延遲鎖存器114內鎖存的慢速讀取結果,并且在此情況下,慢速讀取結果被認為是正確的,并用于以基于抑制的快速讀取結果的處理來代替快速讀取結果。與糾正錯誤的快速讀取結果所需的相對不頻繁相關聯(lián)的懲罰,多于由通過接近其限制條件而運行存儲器100所獲得的增強性能(速度、低電壓操作、低功耗和/或其它性能參數(shù)方面)所補償?shù)摹?br>
圖6示出了圖5電路一部分的變形。在該變形中,提供了兩個讀出放大器110’、110”。形成的這兩個不同讀出放大器110’、110”具有不同的操作速度,其中110’相對快但不可靠,另一個110”相對慢但較可靠。通過改變讀出放大器110’、110”的參數(shù),例如諸如晶體管大小、摻雜級、增益等的結構參數(shù),可獲得這些不同的特性。比較器120’用于比較兩個輸出。在慢速讀出放大器110”的輸出有效之前,通常經多路復用器116’傳送來自快速讀出放大器110’的輸出。在慢速讀出放大器110”的輸出有效并且比較器120檢測到該輸出不等于快速讀出放大器110’的輸出時,它控制多路復用器116’,以將輸出值切換為由慢讀出放大器110”產生的輸出值。比較器120還觸發(fā)生成抑制信號,以抑制基于錯誤的快速讀取結果的下游處理。
圖7是示出圖5電路操作的流程圖。在步驟122,使用由字線傳遞的信號將地址解碼,使各個存儲單元耦合到其相鄰位線。在步驟124,在選定存儲單元內存儲的位值及其補碼被驅動到位線對上。這引起位線內的電流流動以及位線中的電壓改變。讀出放大器110響應檢測到的電流和/或電壓電平改變。
在步驟126,快速數(shù)據(jù)讀取機構對當時從存儲單元輸出的值進行采樣。在步驟128,當假設快速讀取數(shù)據(jù)值正確時,該值被傳遞到隨后的處理電路,用于進一步處理。在步驟130,慢速數(shù)據(jù)讀取機構對慢速讀取數(shù)據(jù)值采樣。步驟132比較快速讀取值和慢速讀取值。如果它們相等,則在步驟134繼續(xù)正常處理。然而,如果采樣值不同,則步驟136用于向已傳遞了快速讀取值的其它電路發(fā)出抑制信號,并還用于向那些其它電路發(fā)出慢速讀取值取代快速讀取值,以便可進行正確處理。
圖8示出了在流水線總線140內使用本技術。流水線總線140包含用于存儲沿總線傳遞的數(shù)據(jù)值的若干鎖存器142。流水線總線140的一個例子是已知由英格蘭劍橋的ARM有限公司設計的AXI總線。在該配置中,沿流水線總線140傳遞的數(shù)據(jù)值的目的地是數(shù)字信號處理電路144。該數(shù)字信號處理(DSP)電路144本身并不實現(xiàn)上述無延遲鎖存和延遲鎖存技術。在備選配置中,沿流水線總線傳遞的數(shù)據(jù)值的目的地可以是不同于DSP電路的設備,例如本身并不實現(xiàn)延遲和無延遲鎖存技術的標準ARM處理器核。
與每個無延遲鎖存器142相關聯(lián)的是各個延遲鎖存器146。這些延遲鎖存器146用于對總線上的信號值采樣,這發(fā)生在由它們對應的無延遲鎖存器142對信號值進行采樣和鎖存時的晚些時間。這樣,由于任何原因(例如所用的工作電壓太低、時鐘速度過快、來自相鄰數(shù)據(jù)值的耦合效應等)沿總線傳遞的數(shù)據(jù)值中的延遲都會引起存儲在無延遲鎖存器142和延遲鎖存器146內的值之間出現(xiàn)差異的可能性。流水線總線140上的末級示為包括比較器147,該比較器比較無延遲值與延遲值。如果它們不相等,則延遲值用于代替無延遲值,并抑制基于無延遲值的處理,以使糾正能生效(可延長總線時鐘周期)。要理解到,沿流水線總線140在每個鎖存級都將提供這些比較器和多路復用電路元件,但為了清楚起見,圖8省略了這些元件。
由于DSP電路144自身并不支持具有其相關校正概率的無延遲和延遲鎖存機制,因此重要的是,提供給DSP電路144的數(shù)據(jù)值已經受到任何必要校正的控制。由于這個原因,在流水線總線140的末端提供附加緩沖鎖存器級148,以將數(shù)據(jù)值所需的任何糾正提供給該鎖存器,并在DSP電路144對該數(shù)據(jù)值起作用之前,可執(zhí)行附屬DSP電路144。緩沖鎖存器148可放在足夠接近DSP電路144的位置,這樣將沒有使數(shù)據(jù)值中的錯誤從緩沖鎖存器148傳到DSP電路144的不足夠可用的傳播時間等的發(fā)出。
要理解到,各個無延遲鎖存器142之間的總線連接可看作是只傳遞不變數(shù)據(jù)的處理邏輯形式。這樣,對于本領域技術人員而言,圖8流水線總線實施例和上述實施例(例如圖1)之間的等效性將是顯而易見的。
圖9是示出圖8操作的流程圖。在步驟150,從總線線路捕獲無延遲信號值。然后在步驟152將該無延遲值傳到下一總線流水線級。在步驟154,相應的延遲鎖存器146捕獲延遲總線信號。在步驟156,比較器147比較延遲值與無延遲值。如果它們相等,則在步驟158繼續(xù)正常處理。如果兩個比較值不相等,則步驟160用于使用圖8所示的多路復用器來延遲總線時鐘,并周延遲值代替無延遲值。
圖10示出了使用本技術的另一示例性實施例。在該示例性實施例中,來自處理器核內指令寄存器的指令被鎖存在指令鎖存器162內。從該指令鎖存器162中,指令被傳遞到包括微編碼ROM的解碼器164,該微編碼ROM用于產生適當?shù)奶幚砥骺刂菩盘柤?,該集合存儲在無延遲控制信號鎖存器166中,并隨后用于根據(jù)鎖存在指令鎖存器162內的指令來控制處理器核所執(zhí)行的處理。在來自解碼器164的控制信號輸出被鎖存在無延遲控制信號鎖存器166內的晚些時間,它們還被鎖存在延遲控制信號鎖存器168內。然后可比較延遲控制信號值與無延遲控制信號值。如果它們不等,則表示有必要進行糾正操作。抑制操作通過這種差異的檢測來觸發(fā),并用于根據(jù)不適當?shù)逆i存控制信號值來停止隨后的處理。在某些情況下,可能唯一有效的恢復選項是整體上復位處理器。這可能是可接受的。在其它情況下,控制信號中的錯誤可能是不太激烈的抑制,并且恢復機制是合理的。作為一個例子,特定錯誤控制信號可能還沒起作用,例如在多周期程序指令的情況下,其中一些處理操作直到多周期指令全部執(zhí)行的后期才開始。這樣的一個示例是累積乘法操作,在該操作中,在最終累積發(fā)生之前,乘法部分花了幾個時鐘周期。如果與累積相關聯(lián)的控制信號中有錯誤,并且實際上不需要累積而只需純的乘法,則有可能在加法器試圖執(zhí)行累積操作之前通過糾正施加到累積器的控制信號來抑制累積。
圖11示出了圖10電路的一個操作示例。在步驟170,從解碼器164(微編碼ROM)中讀取累積乘法控制信號。在步驟172,該累積乘法控制信號被鎖存在無延遲控制信號鎖存器166內,并被輸出到處理器核內的各個處理元件。在步驟174,從寄存器文件中讀取乘法操作數(shù),并開始乘法運算。在步驟176,延遲控制信號鎖存器168對指令解碼器164輸出的控制信號進行重新采樣。在步驟178,比較無延遲控制信號與延遲控制信號。如果它們相等,那么在步驟180繼續(xù)正常處理。然而,如果它們不等,那么處理進入步驟182,在步驟182確定乘法運算是否已經完成。如果乘法運算已經完成,那么在步驟184將啟動錯誤的累積操作,并且用于恢復的最佳選項是總體上復位系統(tǒng)。然而,如果乘法運算仍在進行,則步驟186可用在步驟188產生的期望的乘法運算輸出結果來復位加法器,并取消累積操作,這是存儲在指令鎖存器162內的程序指令原來所期望的。
圖12示出了圖1所示電路的修改。在該實施例中,延遲鎖存器190提供等待/休眠操作模式(低功耗模式)期間所用的數(shù)據(jù)保持(氣球(balloon))鎖存器的附加功能。正常處理操作期間延遲鎖存器190的功能如上所述。然而,當休眠控制器192用于開始進入低功耗操作模式時,它停止無延遲時鐘和延遲時鐘,以使延遲鎖存器190全部存儲對應于其各自無延遲鎖存器的數(shù)據(jù)值。在這點上,去掉提供給無延遲鎖存器及相關處理電路的電壓,以將它們斷電,并使之失去其狀態(tài)。但是,維持加到無延遲鎖存器190的電壓,以使它們保持相關處理電路的狀態(tài)。當系統(tǒng)從低功耗模式退出時,再次使處理邏輯和無延遲鎖存器上電,當比較器檢測到無延遲鎖存器和延遲鎖存器190中值的差異時,它觸發(fā)以相關延遲鎖存器190內保存的正確值代替無延遲鎖存器內的錯誤值。要理解的是,由于延遲鎖存器190所受的嚴格定時要求的限制沒有其無延遲鎖存副本那么嚴格,因此可用如下方式形成這些延遲鎖存器在低功耗模式(例如高閾值電壓導致較慢的切換,但具有降低的泄露電流)期間,它們可能具有較低的操作速度,但更適于低功耗。這樣,在低功耗模式期間,可將在正常操作期間使用的糾錯延遲鎖存器重新用作數(shù)據(jù)保持鎖存器,從而有利地降低相關電路的總門數(shù)。
圖13是示意性示出圖12電路操作的流程圖。在步驟194,集成電路處于其正常操作處理模式。在步驟196,處理邏輯級在無延遲時間產生輸出信號。在步驟198,無延遲鎖存器捕獲該輸出信號。在步驟200,無延遲鎖存器內的無延遲信號被傳遞到下一處理級。在步驟202,在延遲時間產生來自處理級的輸出,并且該輸出可用于由延遲鎖存器捕獲。在步驟204,觸發(fā)集成電路采用低功耗模式,并且速度控制器192用于啟動處理電路的斷電,同時維持到延遲鎖存器190的功率。在步驟206,延遲鎖存器190捕獲延遲信號值。有可能在步驟206延遲鎖存器對延遲信號值的捕獲發(fā)生在步驟204切換到低功率模式之前。在步驟208,使無延遲鎖存器斷電,并且其存儲的值丟失。集成電路可保持這個狀態(tài)很長時間。在需要時,步驟210觸發(fā)休眠控制器192退出低功耗模式,并返回到操作模式。在步驟212,恢復對無延遲鎖存器和相關處理邏輯的上電,其中延遲鎖存器190內的延遲數(shù)據(jù)值用于在需要時重新填充到流水線級,以在進入低功耗模式之前恢復系統(tǒng)的狀態(tài)。
圖14示意性示出了已應用糾錯控制和延遲鎖存器的多個處理級。這些處理級組成集成電路的一部分,其可以是處理器核內同步流水線的一部分、通信總線的一部分或存儲系統(tǒng)的一部分。第一處理級包括用于數(shù)據(jù)通信的通道或處理邏輯1014、無延遲鎖存器1016、延遲鎖存器1018、比較器1024,該比較器比較延遲鎖存器與無延遲鎖存器的輸出,并將控制信號輸出到多路復用器1020,以確定是延遲信號值還是無延遲信號值被作為輸入提供給隨后的處理級或通道1016。由無延遲時鐘信號驅動通道/邏輯1014和無延遲鎖存器1016,而由延遲時鐘信號驅動延遲鎖存器1019,該延遲時鐘信號是無延遲時鐘信號的相移版本。
如果比較器1024檢測到無延遲信號值和延遲信號值之間的差異,則指示在元件1014表示處理邏輯的情況下,在無延遲捕獲時間處理操作沒有完成,或在元件1014表示數(shù)據(jù)通道的情況下,來自先前流水線級的信號還沒到達當前級。在實際檢測到這種差異的情況下,存儲在延遲鎖存器1018中的值是更可靠的數(shù)據(jù)值,因為當處理操作可能已經完成或者來自先前級的數(shù)據(jù)更可能已經由數(shù)據(jù)通道到達時,隨后捕獲該數(shù)據(jù)值。通過將來自延遲鎖存器的結果提供給下一處理級1030,并抑制隨后處理級中無延遲值的使用,可以確保計算的向前繼續(xù)進行。然而,在發(fā)生單個事件干擾并破壞了延遲值的情況下,可能損害延遲鎖存器1018中存儲的延遲信號值的可靠性。單個事件干擾實際上是脈沖,因此其可能被無延遲鎖存器錯過,而被延遲鎖存器獲得。這種單個事件干擾會使比較器檢測到延遲值和無延遲值之間的差異,作為單個事件干擾的直接結果,并然后將破壞的延遲值傳播到隨后的處理級。破壞無延遲值的單個事件干擾不會有問題,因為它將導致抑制錯誤的無延遲值的使用,并將延遲值傳播到隨后級。
圖14的配置通過提供數(shù)據(jù)完整性的交叉校驗降低了破壞的延遲值通過計算前進的可能性,該數(shù)據(jù)完整性的交叉校驗由錯誤檢測模塊1026、糾錯模塊1028和多路復用器1022提供,該多路復用器由錯誤檢測模塊1026控制,以將來自延遲鎖存器的延遲值直接提供給比較器1024,或提供由糾錯模塊1028輸出的糾錯值。通道/邏輯單元1014的上游,8位數(shù)據(jù)有效負載被糾錯編碼,并且4個冗余位被加到數(shù)據(jù)有效負載上,以組成12位信號。該12位信號通過通道/邏輯單元1014,并且無延遲鎖存器1016和延遲鎖存器1018捕獲其值。然而,來自延遲鎖存器1018的信號延遲值還作為輸入提供給錯誤檢測模塊1026,該模塊根據(jù)12位糾錯碼信號確定是否已經出現(xiàn)了影響延遲值的任何錯誤。在備選配置中,可提供另一鎖存器以將信號值提供給錯誤檢測模塊1018,該模塊在稍遲于延遲鎖存器1018的時間上捕獲信號值。必須在與捕獲延遲值相同或稍晚的時間上對捕獲的值執(zhí)行錯誤校驗,以確保檢測到無延遲值捕獲與延遲值捕獲之間出現(xiàn)的任何隨機錯誤。
給定的糾錯碼能夠檢測預定數(shù)量的錯誤,并能夠糾正給定數(shù)量的錯誤。因此,錯誤檢測模塊1026檢測是否已經出現(xiàn)了任何錯誤,并且如果出現(xiàn)了,如果錯誤數(shù)足夠小則它們都能被糾正。如果檢測到可糾正的錯誤,則將信號值提供給糾錯模塊1028,在該模塊使用糾錯碼糾正錯誤,并將糾正的延遲值提供給比較器1024。如果比較器1024確定糾正的延遲值和無延遲值不同,則啟用錯誤恢復程序,以便在隨后的處理級中抑制無延遲值的進一步傳播,并用糾正的延遲值來代替執(zhí)行操作。另一方面,如果比較器1024確定糾正的延遲值和延遲值相同,則存在進行計算的兩種備選可能性。首先,還是可以啟用錯誤恢復機制,以便在隨后的處理級中抑制無延遲值,并用正確的延遲值代替。備選地,由于確定已糾正了無延遲值(如無延遲值和糾正的延遲值的相等所證實的),因此可抑制錯誤恢復機制(不管延遲值中的錯誤檢測),從而使無延遲值可繼續(xù)通過隨后處理級前進。然而,如果錯誤檢測模塊1026檢測到延遲值中不可糾正的錯誤,則提供控制信號來抑制破壞的延遲值的使用。在此情況下,不能獲得計算的向前進行。應用的糾錯編碼的類型根據(jù)通道/處理邏輯1014的特性而不同。
處理邏輯可分類為傳值或變值。傳值處理邏輯的例子是存儲器、寄存器和多路復用器。變值處理邏輯元件的例子是加法器、乘法器和移位器。用于變值處理邏輯元件的錯誤檢測和糾正比用于傳值處理邏輯元件的更復雜,因為即使在沒出現(xiàn)錯誤時,邏輯級1014輸出的值也可能與輸入12位信號1013不同。
圖15示意性示出了通過通道的數(shù)據(jù)糾錯,其中如果沒有出現(xiàn)錯誤,則只將未改變的數(shù)據(jù)值從輸入傳到輸出。在這種傳值處理邏輯的情況下,便于使用線性分組碼,諸如用于糾錯和檢錯的漢明碼。線性分組碼通常涉及形成碼字,其中原始數(shù)據(jù)有效負載位在碼字中保持不變,只添加一些奇偶校驗位(或冗余位)。漢明碼是簡單的一位糾錯碼,并且對于(N,K)碼而言,N是碼字中的總位數(shù),K是要編碼的數(shù)據(jù)位數(shù)。通過對輸出碼字執(zhí)行多個奇偶校驗來檢測錯誤的存在和位置。漢明碼包括N-K個奇偶校驗位,根據(jù)數(shù)據(jù)中不同的位組合來計算每個奇偶校驗位。漢明碼能夠糾正一個錯誤或檢測出兩個錯誤。奇偶校驗位(或所需冗余位)數(shù)由漢明規(guī)則K+p+1≤2p給定,其中p是奇偶校驗位數(shù),且N=K+p。
如圖15所示,通道的輸入是12位碼字,其包括8個數(shù)據(jù)位和4個奇偶校驗位或冗余位。錯誤檢測/糾正模塊1116對來自通道1114的輸出執(zhí)行奇偶校驗。在錯誤檢測/糾正模塊1116輸出碼字之前,檢測并糾正12位碼字中的任一位錯誤。如果檢測的錯誤是不可糾正的,則錯誤檢測/糾正模塊1116輸出指示這種情況的信號。雖然已針對圖11描述了用于傳值處理邏輯的簡單代碼,諸如漢明碼,但要理解到也可使用諸如卷積碼的其它糾錯碼。
圖16示意性地示出了對于變值邏輯元件(諸如加法器、乘法器或移位器)如何執(zhí)行糾錯。在變值處理邏輯的情況下,可使用算術代碼,諸如AN碼、剩余碼、反剩余碼或剩余數(shù)字碼,來檢測和糾正處理邏輯輸出中的隨機錯誤。
算術代碼可用于校驗算術運算符。其中表示要校驗的運算符,必須滿足如下關系Code(XY)=code Xcode YAN碼是包括用常數(shù)因子乘以數(shù)據(jù)字的算術代碼,例如,3N碼可用于通過執(zhí)行以下比較來校驗加法運算的有效性3N(X)+3N(Y)?=3N(X+Y)3X+3Y?=3(X+Y).
算術代碼類的另一個例子是剩余碼,其中將余數(shù)(除以常數(shù)的余數(shù))加到數(shù)據(jù)位作為校驗位,例如,3R碼包括模(MOD)3操作,并且應用如下校驗X MOD 3+Y MOD 3?=(X+Y)MOD 3考慮X=14和Y=7的數(shù)字例子14 MOD 3=2(碼字111010,后兩位作為余數(shù));7 MOD 3=1(碼字011101);X+Y=21(10101);且21 MOD 3=0;余數(shù)的和MOD 3=(2+1)MOD 3=0=(X+Y)的余數(shù)。
圖16示意性示出了用于校驗圖10的通道/邏輯單元1014中的加法運算的7R算術代碼的使用。要校驗的加法運算是X+Y,其中X和Y是8位數(shù)據(jù)字。每個數(shù)據(jù)字具有4個校驗位,這4個校驗位分別具有X MOD 7和Y MOD 7的值。X MOD 7和Y MOD 7作為操作數(shù)提供給第一加法器1210,并且該加法器的輸出被提供給確定值(X MOD 7+Y MOD 7)MOD 7并將結果作為第一輸入提供給比較器1250的邏輯。第二加法器1230執(zhí)行加法(X+Y),將結果提供給邏輯單元1240,該單元計算(X+Y)MOD 7,并將結果作為第二輸入提供給比較器1250。如果比較器檢測到兩個輸入值之間的任何差異,則出現(xiàn)了錯誤。
圖17是示意性示出包括延遲鎖存值糾錯控制的圖14電路操作的流程圖。在步驟1310,將12位糾錯碼信號值輸入到通道/邏輯單元1014。下面在步驟1320,無延遲鎖存器1016在時間Ti捕獲來自通道/邏輯單元1014的輸出,并在步驟1330將捕獲值轉到隨后的i+1處理邏輯級。在步驟1340,延遲鎖存器1018在時間Ti+d捕獲輸出信號。在步驟1350,錯誤檢測邏輯在時間Ti+(d+δ)捕獲來自通道/邏輯單元1014的輸出。雖然在優(yōu)選配置中δ是0,以使實際上錯誤校驗由延遲值本身輸出的值,但備選地可在延遲鎖存器在Ti+d捕獲輸出信號之后的短時間捕獲該輸出。適當安排提供給錯誤檢測電路的值的捕獲,以可確保檢測到延遲值中的任何隨機錯誤。在步驟1360,錯誤檢測模塊1026使用冗余位來確定延遲的輸出信號是否有錯誤。如果檢測到錯誤,則在步驟1370確定該錯誤是否是可糾正的,這取決于有多少位受到影響。例如,漢明碼僅可糾正1位錯誤。如果在步驟1370確定錯誤是可糾正的,那么過程進入步驟1390,在此糾正錯誤,并在多路復用器1022上選擇糾正的延遲值,并將該值提供給比較器1024。但是,如果在步驟1370確定檢測的錯誤不可糾正,則產生指示出現(xiàn)了不可糾正錯誤的控制信號。在此情況下,不能可靠地執(zhí)行計算的向前繼續(xù)進行。在步驟1392,比較器1024確定錯誤校驗的延遲值是否等于無延遲值,并且如果等于,則繼續(xù)計算的向前進行。否則執(zhí)行針對圖4B描述的一系列步驟的過程,包括抑制無延遲值,并由隨后處理級中的延遲值代替該無延遲值。
圖18示出了使用本技術動態(tài)調節(jié)處理級間的相對同步。眾所周知,在流水線處理環(huán)境中,處理級可用不同時間來完成它們各自的操作。理想情況是,處理級都保持平衡以花相同時間,并且它們各自的時間隨周圍條件的改變以相同方式改變。然而,在許多情況下這是不實際的,并且有可能在一個工作電壓或溫度上平衡的處理級集在另一工作電壓或溫度上卻不平衡。此外,制造偏差和其它特性也可能導致處理級同步之間的較大差異,這干擾了其間的設計平衡。在這些情況下,相對于最壞情況選擇時鐘頻率和其它操作參數(shù),使得處理級充分接近平衡,以便在所有情況下都是可操作的。
本技術允許采用更有選擇性和真正動態(tài)的方法。流水線處理電路2000包括延遲鎖存器2002,該延遲鎖存器可用于檢測由無延遲鎖存器捕獲的信號值中出現(xiàn)的錯誤。出現(xiàn)的這些錯誤被反饋回時鐘相位控制電路204,該電路調節(jié)提供給主路徑中各個鎖存器(即無延遲鎖存器)的時鐘信號的相對相位。這樣進行調節(jié),借此時間被從一個處理級有效地借用,并分配給另一個處理級。這可通過利用來自傳播基本時鐘信號的延遲線內可選擇位置的各個無延遲鎖存器要使用的時鐘信號來獲得。
示出的例子,鎖存器LA和LB之間的處理邏輯在操作上要比隨后級中的處理邏輯慢。相應地,提供給無延遲鎖存器LB的時鐘信號可被移相,以便延遲時鐘信號的上升沿(假設上升沿鎖存器捕獲),并從而擴展了可用于慢處理邏輯的時間。這減少了隨后處理級內處理邏輯可用的時間,在此假設在與除鎖存器LB之外的其它級元件相同的基本時鐘信號上操作。
在電路進行操作期間,使用來自使用延遲鎖存器檢測的操作中的錯誤的反饋,來動態(tài)執(zhí)行處理級間的同步平衡。備選地,在制造測試階段期間或在集成電路的“黃金引導(golden boot)”期間,該平衡可執(zhí)行為一次性操作。圖18所示的延遲鎖存器用于處理級之間的同步平衡,并且之后可用于如上針對圖1描述的操作參數(shù)和糾錯的控制。這樣,提供延遲鎖存器還用于控制相對的時鐘同步。
圖19示出了基于全局時鐘選通的流水線錯誤恢復的簡單方法。在任一級檢測到錯誤的情況下,通過選通下一個全局時鐘邊沿,使整個流水線停止一個周期。附加時鐘周期允許每一級使用延遲鎖存器作為輸入來重新計算其結果。因此,將用來自延遲鎖存器的正確值代替任何先前轉發(fā)的錯誤值。由于所有級都用延遲鎖存器輸入來重新評估其結果,因此在單個周期中可容忍任何數(shù)量的錯誤,并保證向前繼續(xù)前進。如果所有級在每個周期都產生錯誤,則流水線將繼續(xù)運行,但速度為正常速度的1/2。
重要的是,在比較器驗證了錯誤的流水線結果之前,不將它寫入結構狀態(tài)。由于延遲值的驗證花了兩個附加周期(即,一個用于錯誤檢測,一個用于應急檢測),在上一延遲鎖存器和回寫(WB)級之間必須有兩個非推測(non-speculative)級。在設計中,存儲器對數(shù)據(jù)高速緩存的存取是非推測性的,因此,在回寫(WB)之前只需一個標記為ST用于穩(wěn)定的附加級。ST級引入寄存器旁路的附加電平。由于存儲指令必須非推測性地執(zhí)行,因此在流水線的WB級執(zhí)行這些存儲指令。
圖19給出了在流水線EX級中失效的指令的流水線恢復的流水線時序圖。第一失效級計算發(fā)生在第四周期,但只在MEM級已使用從EX級轉發(fā)的錯誤值計算出錯誤結果之后。在檢測到錯誤之后,在第六周期發(fā)生全局時鐘停止,允許由MEM級來評估Razor陰影鎖存器中的正確的EX結果。在第七周期,重新開始正常的流水線操作。
在積極的時鐘設計中,不可能在不嚴重影響處理器周期時間的情況下實現(xiàn)全局時鐘選通。因此,已實現(xiàn)了基于逆流、流水線技術的完全流水線錯誤恢復機制。圖20所示的方法,以在幾個周期上擴展流水線恢復為代價,在基線流水線設計上放置了可以忽略的同步限制。在檢測到無延遲值錯誤時,必須執(zhí)行兩個特定操作。首先,必須使失效的無延遲鎖存器之后的錯誤級計算無效。使用磁泡信號實現(xiàn)該操作,磁泡信號指示下一個及隨后級的流水線槽是空的。其次,通過斷言(assert)失效級的級ID來觸發(fā)刷新串(train)。在隨后的周期中,來自延遲鎖存器數(shù)據(jù)的糾正值被注回流水線,使錯誤指令可以繼續(xù)其正確輸入。此外,存在逆流流水線,借此刷新串開始在指令的相反方向傳播失效級的ID。在由有效刷新串訪問的每一級上,用磁泡代替相應流水線級和前一級。(必須使兩個級無效以占兩倍的主流水線相對速度。)在刷新ID到達流水線的起點時,刷新控制邏輯重新啟動錯誤指令之后指令處的流水線。當多級在同一周期發(fā)生錯誤時,所有都將開始恢復,但只有最接近回寫(WB)的無延遲錯誤將完成。后面的會刷新較早的恢復。要注意的是,逆流流水線可以和前向流水線的長度不同,以使例如逆流流水線的刷新串可以是2個流水線級深,而前向流水線可以是12級深。
圖20示出了在EX級中失效的指令的流水線恢復的流水線時序圖。與先前的例子一樣,當?shù)诙噶钣嬎懔魉€EX級中的錯誤結果時,第一失效級計算發(fā)生在第四周期。在第五周期檢測該錯誤,使得從MEM級傳播磁泡和啟動刷新串。分別在第六、第七和第八周期刷新EX、ID和IF級中的指令。最后,在第九周期在錯誤指令之后重新啟動流水線,其后重新開始正常的流水線操作。
從以上圖2的描述中可回想到,在電路102檢測到錯誤信號中的亞穩(wěn)態(tài)的情況下,斷言應急信號。在此情況下,應重新執(zhí)行當前指令(而不是下一指令)。在斷言這種應急信號時,刷新所有流水線狀態(tài),并緊隨最少指令回寫之后,重新啟動流水線。應急情況使得向前繼續(xù)進行的保證復雜化,因為檢測該情況過程中的延遲可能導致在延遲鎖存器中重寫正確結果。因此,在經歷了應急之后,電源電壓被復位到已知安全的工作電平,并重新啟動流水線。一旦重新調諧,只要返回被禁止直到該指令完成后為止,錯誤指令就應該無錯地完成。
流水線恢復控制的關鍵要求是,即使在最壞的工作條件下(例如低電壓、高溫和高加工差異)它也不失效。這個要求通過保守的設計方法來滿足,該方法以最壞情況亞臨界電壓使錯誤恢復電路的同步有效。
圖21示意性地示出了作為串行掃描鏈鎖存器的延遲鎖存器2100的再使用。這通過提供由掃描允許信號控制的多路復用器2102來實現(xiàn),該掃描允許信號允許將串行掃描數(shù)據(jù)值寫入延遲鎖存器,或根據(jù)需要從延遲鎖存器中串行地讀取該值。此外,使用允許延遲鎖存值取代無延遲鎖存值的正常機制,將串行掃描鏈值插入操作路徑中。
權利要求
1.一種用于執(zhí)行數(shù)據(jù)處理的集成電路,所述集成電路包括錯誤檢測器,可操作用于通過對所述集成電路內的數(shù)據(jù)信號值進行復式采樣來檢測所述集成電路操作中的錯誤,采樣值間的差異表示錯誤;錯誤修復邏輯,響應所述錯誤檢測器,并可操作用于修復操作中的所述錯誤;以及操作參數(shù)控制器,可操作用于控制所述集成電路的一個或多個性能控制操作參數(shù);其中所述操作參數(shù)控制器根據(jù)所述錯誤檢測器檢測的一個或多個錯誤特性來動態(tài)控制所述一個或多個性能控制參數(shù)中的至少一個,以維持操作中的非零出錯率,所述錯誤修復邏輯修復操作中的所述錯誤,以使所述集成電路的數(shù)據(jù)處理繼續(xù)。
2.如權利要求1所述的集成電路,其中所述復式采樣是在各個不同的時間檢測采樣點上的信號值。
3.如權利要求1或2中任一項所述的集成電路,其中所述操作參數(shù)控制器應用反饋控制,以根據(jù)所述錯誤檢測器檢測的所述一個或多個錯誤特性來調節(jié)所述一個或多個性能控制參數(shù)中的所述至少一個。
4.如權利要求1、2或3中任一項所述的集成電路,其中所述錯誤檢測器檢測的所述一個或多個錯誤特性至少包括以下一項由所述錯誤檢測器檢測的所述錯誤的錯誤率;以及由所述錯誤檢測器檢測的所述錯誤的所述錯誤修復邏輯的修復所引起的處理性能的下降。
5.如上述權利要求任一項所述的集成電路,其中所述一個或多個性能控制參數(shù)至少包括以下一項工作電壓;工作頻率;集成電路體偏壓;以及溫度。
6.如上述權利要求任一項所述的集成電路,包括多個處理級,來自至少一個處理級的處理級輸出信號被作為處理級輸入信號提供給后面的處理級,其中所述至少一個處理級包括處理邏輯,可操作用于對至少一個處理級輸入值執(zhí)行處理操作,以產生處理邏輯輸出信號;無延遲鎖存器,可操作用于在無延遲捕獲時間捕獲所述處理邏輯輸出信號的無延遲值,在所述無延遲捕獲時間之后,所述無延遲值被作為所述處理級輸出信號提供給所述后面的處理級;以及延遲鎖存器,可操作用于在遲于所述無延遲捕獲時間的延遲捕獲時間上捕獲所述處理邏輯輸出信號的延遲值;其中所述錯誤檢測器包括比較器,所述比較器可操作用于在所述無延遲捕獲時間之后比較所述無延遲值和所述延遲值,以檢測所述處理邏輯輸出信號中的改變,所述改變表示所述處理邏輯在所述無延遲捕獲時間沒有完成所述處理操作;并且當所述比較器檢測到所述改變時,所述錯誤修復邏輯可操作用于執(zhí)行錯誤修復操作,所述錯誤修復操作抑制所述后面的處理級使用所述無延遲值。
7.如權利要求6所述的集成電路,包括亞穩(wěn)態(tài)檢測器,所述亞穩(wěn)態(tài)檢測器可操作用于檢測所述無延遲值中的亞穩(wěn)態(tài),并在發(fā)現(xiàn)是亞穩(wěn)態(tài)的情況下,觸發(fā)所述錯誤修復邏輯,以抑制所述無延遲值的使用。
8.如權利要求6和7中任一項所述的集成電路,其中在所述比較器檢測到所述改變時,所述錯誤修復邏輯可操作用于以所述延遲值代替所述無延遲值作為所述處理級輸出信號。
9.如權利要求8所述的集成電路,其中所述延遲值提供給所述后面的處理級迫使通過處理操作向前繼續(xù)進行。
10.如權利要求6-9中任一項所述的集成電路,其中當所述比較器檢測到所述改變時,所述錯誤修復邏輯可操作用于迫使所述延遲值存儲在所述無延遲鎖存器中取代所述無延遲值。
11.如權利要求6-10中任一項所述的集成電路,其中無延遲時鐘信號驅動所述處理級和所述后面的處理級內的處理操作。
12.如權利要求11所述的集成電路,其中當所述比較器檢測到所述改變時,所述錯誤修復邏輯可操作用于選通所述無延遲時鐘信號,以為所述后面的處理級提供時間來恢復所述無延遲值的輸入,并代替使用所述延遲值。
13.如權利要求12所述的集成電路,其中所述無延遲捕獲時間來自所述無延遲時鐘信號的預定相點,所述無延遲時鐘信號的相位延遲版本用作延遲時鐘信號,并且所述延遲捕獲時間來自所述延遲時鐘信號的預定相點。
14.如權利要求6-13中任一項所述的集成電路,其中所述多個處理級是同步流水線內的各個流水線級。
15.如權利要求6-14中任一項所述的集成電路,其中所述處理操作所花的最小處理時間大于分離所述延遲捕獲時間和所述無延遲捕獲時間的時間,以使所述延遲值不受對不同輸入值進行處理操作的影響。
16.如權利要求15所述的集成電路,其中所述處理邏輯包括一個或多個延遲元件,以確保超過所述最小處理時間。
17.如權利要求6-16中任一項所述的集成電路,其中所述處理操作所花的最大處理時間小于分離所述延遲捕獲時間和所述無延遲捕獲時間的時間與無延遲捕獲時間之間的時間的總和,以使在所述延遲捕獲時間內所述處理邏輯將完成所述處理操作。
18.如權利要求6-17中任一項所述的集成電路,其中所述處理級是數(shù)據(jù)處理器的一部分。
19.如權利要求6-18中任一項所述的集成電路,包括錯誤計數(shù)器電路,所述計數(shù)器電路可操作用于存儲對應于所述改變的錯誤檢測計數(shù)。
20.如權利要求19所述的集成電路,其中所述計數(shù)可通過軟件讀取。
21.一種用于控制執(zhí)行數(shù)據(jù)處理的集成電路的方法,所述方法包括如下步驟通過對所述集成電路內的數(shù)據(jù)信號值進行復式采樣來檢測所述集成電路操作中的錯誤,采樣值間的差異表示錯誤;修復檢測的操作中錯誤;并且控制所述集成電路的一個或多個性能控制操作參數(shù);其中根據(jù)一個或多個檢測錯誤特性來控制所述一個或多個性能控制參數(shù)中的至少一個,以維持操作中的非零出錯率,修復操作中的所述錯誤,以使所述集成電路的數(shù)據(jù)處理繼續(xù)。
22.如權利要求21所述的方法,其中所述復式采樣是在各個不同的時間檢測采樣點上的信號值。
23.如權利要求21和22中任一項所述的方法,其中所述控制步驟應用反饋控制,以根據(jù)所述一個或多個檢測錯誤特性來調節(jié)所述一個或多個性能控制參數(shù)中的所述至少一個。
24.如權利要求21、22和23中任一項所述的方法,其中所述一個或多個檢測錯誤特性至少包括以下一項檢測錯誤的錯誤率;以及由檢測錯誤的修復引起的處理性能的下降。
25.如權利要求21-24中任一項所述的方法,其中所述一個或多個性能控制參數(shù)至少包括以下一項工作電壓;工作頻率;集成電路體偏壓;以及溫度。
26.如權利要求21-25中任一項所述的方法,包括如下步驟將來自多個處理級中至少一個處理級的處理級輸出信號作為處理級輸入信號提供給后面的處理級,所述至少一個處理級操作用于用數(shù)據(jù)處理邏輯對至少一個處理級輸入值執(zhí)行處理操作,以產生處理邏輯輸出信號;在無延遲捕獲時間捕獲所述處理邏輯輸出信號的無延遲值,在所述無延遲捕獲時間之后,所述無延遲值被作為所述處理級輸出信號提供給所述后面的處理級;以及在遲于所述無延遲捕獲時間的延遲捕獲時間上,捕獲所述處理邏輯輸出信號的延遲值;其中檢測錯誤包括在所述無延遲捕獲時間之后比較所述無延遲值和所述延遲值,以檢測所述處理邏輯輸出信號中的改變,所述改變表示在所述無延遲捕獲時間所述處理邏輯沒完成所述處理操作;以及所述修復檢測錯誤的步驟包括抑制所述后面的處理級使用所述無延遲值。
27.如權利要求26所述的方法,包括檢測所述無延遲值中的亞穩(wěn)態(tài),并在發(fā)現(xiàn)是亞穩(wěn)態(tài)的情況下觸發(fā)抑制所述無延遲值的使用。
28.如權利要求26和27中任一項所述的方法,其中在檢測到所述改變時,用所述延遲值代替所述無延遲值作為所述處理級輸出信號。
29.如權利要求26、27和28中任一項所述的方法,其中將所述延遲值提供給所述后面的處理級迫使通過處理操作向前繼續(xù)進行。
30.如權利要求26-29中任一項所述的方法,其中在檢測到所述改變時,迫使代替所述無延遲值而存儲所述延遲值。
31.如權利要求26-30中任一項所述的方法,其中由無延遲時鐘信號驅動所述處理級和所述后面的處理級內的處理操作。
32.如權利要求31所述的方法,其中當在所述比較步驟檢測到改變時,所述錯誤修復操作包括選通所述無延遲時鐘信號,以為所述后面的處理級提供時間來恢復所述無延遲值的輸入,并代替使用所述延遲值。
33.如權利要求32所述的方法,其中所述無延遲捕獲時間來自所述無延遲時鐘信號的預定相點,所述無延遲時鐘信號的相位延遲版本用作延遲時鐘信號,并且所述延遲捕獲時間來自所述延遲時鐘信號的預定相點。
34.如權利要求26-33中任一項所述的方法,其中所述多個處理級是同步流水線內的各個流水線級。
35.如權利要求26-34中任一項所述的方法,其中所述處理操作所花的最小處理時間大于分離所述延遲捕獲時間和所述無延遲捕獲時間的時間,以使所述延遲值不受對不同輸入值執(zhí)行的處理操作的影響。
36.如權利要求35所述的方法,其中所述處理邏輯包括一個或多個延遲元件,以確保超過所述最小處理時間。
37.如權利要求26-36中任一項所述的方法,其中所述處理操作所花的最大處理時間小于分離所述延遲捕獲時間和所述無延遲捕獲時間的時間與無延遲捕獲時間之間的時間的總和,以使所述處理邏輯在所述延遲捕獲時間內將完成所述處理操作。
38.如權利要求26-37中任一項所述的方法,其中所述處理級是數(shù)據(jù)處理器的一部分。
39.如權利要求26-38中任一項所述的方法,包括存儲對應于所述改變的錯誤檢測計數(shù)的步驟。
40.如權利要求39所述的方法,其中所述計數(shù)可通過軟件讀取。
全文摘要
集成電路包括多個處理級,每個處理級包括處理邏輯(2)、無延遲鎖存器(4)、延遲鎖存器(8)和比較器(6)。無延遲鎖存器(4)在無延遲捕獲時間從處理邏輯(2)捕獲輸出。在以后的延遲捕獲時間,延遲鎖存器(8)也捕獲來自處理邏輯(2)的值。比較器(6)比較這些值,并且如果它們不相等,則指示無延遲值捕獲得太快,并且應該由延遲值代替。緊接著無延遲值的捕獲,該無延遲值被傳遞到隨后的處理級,并相應地使用錯誤恢復機制來抑制隨后處理級已發(fā)生的錯誤處理,諸如在重新啟動時鐘之前選通時鐘,并使正確信號值可通過隨后的處理邏輯傳播。調節(jié)集成電路的操作參數(shù),諸如時鐘頻率、工作電壓、體偏壓、溫度等,以便以增加總體性能的方式維持有限的非零出錯率。
文檔編號G06F11/16GK1761946SQ200480007338
公開日2006年4月19日 申請日期2004年2月26日 優(yōu)先權日2003年3月20日
發(fā)明者K·弗勞特納, T·M·奧斯丁, D·T·布勞夫, T·N·馬奇 申請人:Arm有限公司, 密執(zhí)安大學