欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

微處理器及其執(zhí)行方法

文檔序號:6608087閱讀:222來源:國知局

專利名稱::微處理器及其執(zhí)行方法
技術領域
:本發(fā)明涉及一種微處理器的指令集結構,特別涉及一種將數(shù)據(jù)串存儲在存儲器的指令。
背景技術
:程序一般使用x86指令集的REPSTOS指令來清除(scrub)存儲器,例如以“0”來填滿存儲器或者將大量相同數(shù)據(jù)寫入至視頻緩沖器。在寄存器ECX所指定將寫入的數(shù)據(jù)量相對的大,使得許多快取列甚至是許多存儲器的頁面被寫入。對于處理器而言,此目的是為了盡可能的快速執(zhí)行寫入。一般而言,被寫入的存儲器具有回寫(write-back)存儲器特性,即是其可寫入且可快取。假使存儲區(qū)域(即被寫入的存儲器區(qū)域)已命中于快取存儲器,與存儲區(qū)域未命中于快取存儲器比較起來,REPSTOS指令將更快速地執(zhí)行。這是因為處理器必須分配未命中的快取列,即獲得快取列的所有權(gainownership)且將其由存儲器讀進快取存儲器,這導致相對多的時間消耗。
發(fā)明內容在一觀點中,本發(fā)明提供一種微處理器,其通過一總線耦接一存儲器。微處理器包括一快取存儲器以及一攫取線指令。攫取線指令用以指定涉及該存儲器的一快取列的一存儲器地址。攫取線指令指示微處理器在總線上開始執(zhí)行一零拍讀取無效異動(zero-beatread-invalidatetransaction)以獲得該快取列的所有權。假使微處理器判斷對快取列的一存儲操作會引起異常處理程序,當微處理器執(zhí)行攫取線指令時,微處理器放棄開始執(zhí)行在總線上的零拍讀取無效異動。在另一觀點中,本發(fā)明提供一種執(zhí)行方法,由一微處理器執(zhí)行。微處理器通過一總線耦接一存儲器。此執(zhí)行方法包括接收一攫取線指令以執(zhí)行。攫取線指令用來指定涉及存儲器的一快取列的一存儲器地址。此執(zhí)行方法也包括根據(jù)攫取線指令的接收,判斷對快取列的一存儲操作是否會引起異常處理程序。此執(zhí)行方法還包括假使對快取列的一存取不會引起異常處理程序,開始執(zhí)行總線上的一零拍讀取無效異動(zero-beatread-invalidatetransaction)以獲得快取列的所有權;以及假使對快取列的一存取會引起異常處理程序(exc印tion),則放棄開始執(zhí)行在總線上的零拍讀取無效異動。圖1表示根據(jù)本發(fā)明實施例的微處理器;圖2表示圖1的微處理器的操作流程圖;以及圖3A-圖3D表示圖1中微處理器的操作流程圖。主要元件符號說明圖1100微處理器;102指令快取存儲器;104指令轉譯器;106寄存器命名表(RAT);108保留站;112執(zhí)行單元與存儲器次系統(tǒng)114引退單元;116重排緩沖器(ROB);118微碼單元;122填充隊列;124數(shù)據(jù)快取存儲器;126總線接口單元(BIU);128控制邏輯單元132宏指令136微指令;134處理器總線;138寄存器(ECX/EDI);142快速REPSTOS微碼常式;圖2202、204、206、208、212、214、216、218、222、224、226步驟;圖3A-圖3D302、304、306、308、312、314、316、318、322、324、326、328、332、334、336、338、342、344、346、348、352、354步驟。具體實施例方式為使本發(fā)明的上述目的、特征和優(yōu)點能更明顯易懂,下文特舉一優(yōu)選實施例,并配合附圖,作詳細說明如下。加速REPSTOS指令(在此也稱為重復數(shù)據(jù)串存儲指令)的方法是在數(shù)據(jù)實際存儲至快取列之前,分配存儲區(qū)域的快取列。然而,本申請發(fā)明人認為,對于一長存儲數(shù)據(jù)串所涉及到每一條(entire)快取列而言,來自系統(tǒng)存儲器的快取列數(shù)據(jù)不被需要,因為處理器將存儲至整條快取列。因此,不是執(zhí)行一般總線周期來獲得快取列的專用所有權,而是(圖1的)微處理器100在(圖1的)處理器總線134上執(zhí)行零拍(zero-beat)讀取無效(read-invalidate)異動(transaction),由在此異動不具有數(shù)據(jù)周期且不需要實際對存儲器存取,因此較為快速。再者,由于微處理器100知道其將以來自REPSTOS指令的數(shù)據(jù)寫入整條快取列,微處理器100可以早在實際存儲操作之前執(zhí)行此讀取無效異動,使得存儲指令到達(圖1的)快取存儲器124那時擁有該快取列。然而,獲得一快取列的所有權而不具有來自存儲器的數(shù)據(jù),具有數(shù)據(jù)訛誤和/或處理器停擺(hang)的可能性,所以為了利用讀取無效異動,必須解決這些問題,如下文所述。舉例來說,由于微處理器100將只具有快取列的所有權,但將不具有快取列的實際數(shù)據(jù),因此,其不會執(zhí)行讀取無效異動,除非微處理器100得知其將存儲至整條快取列。舉另一例子來說明,REPSTOS指令具有其提供來被執(zhí)行作為單一(individual)STOS指令的循環(huán)的結構性的要求。因此,假使一STOS指令導致異常時,結構狀態(tài)必須反映(reflect)出那里發(fā)生異常。尤其是,寄存器ECX必須反映出有剩下多少個循環(huán)迭代(iterations)要來執(zhí)行,且寄存器EDI必須反映出導致異常的存儲器的地址。這大大地復雜化大量存儲操作與讀取無效異動的使用。7現(xiàn)在參閱圖1,其表示根據(jù)本發(fā)明實施例的微處理器100。微處理器100包括指令快取存儲器,用以快取程序指令,例如x86REPSTOS指令,也稱為宏指令132。微處理器100也包括指令轉譯器104,其將宏指令132轉譯成為由微處理器100的多個執(zhí)行單元112所執(zhí)行的微指令。當指令轉譯器104遇到某些復雜的宏指令132(例如REPSTOS指令)時,指令轉譯器104轉移控制權至微碼單元118。微碼單元118包括微碼只讀存儲器(ROM)(未顯示),用以存儲包括多個微指令136的微碼常式(routine),其實施宏指令132。特別是,微碼單元包括一快速微碼常式142用以實施REPSTOS宏指令132。微碼常式142包括傳統(tǒng)存儲指令,以存儲由REPSTOS指令所指定的數(shù)據(jù)。微碼ROM也包括以傳統(tǒng)方式來實施REPSTOS指令的常式(未顯示),例如,不需使用攫取線操作(grablineoperation)(于下文說明)且不需使用與REPSTOS指令所指定比較起來較大量的存儲操作??焖傥⒋a常式142也包括特定微指令136,稱為攫取線操作,其命令微處理器100的存儲器次系統(tǒng)112去指示微處理器100的總線接口單元126通過在總線134上執(zhí)行零拍讀取無效異動,去獲取攫取線操作所指定的存儲器地址所涉及的快取列的所有權。微處理器100與包括寄存器命名表(registeraliastable,RAT)106,其按程序順序來接收來自指令轉譯器104與微碼單元118的微指令,產生指令相依信息、并將指令發(fā)送至多個保留站108。當指令已準備執(zhí)行時,保留站108發(fā)布指令至微處理器100的執(zhí)行單元112。多個寄存器138包括微處理器100的結構寄存器與臨時寄存器,用以提供運算元和指令至執(zhí)行單元112。尤其是,寄存器138包括REPSTOS指令所使用的ECT寄存器與EDI寄存器。執(zhí)行單元與存儲器次系統(tǒng)112包括共同建立在一微處理器內的多個單元,例如,整數(shù)單元、浮點單元、SIMD單元、載入/存儲單元、以及分支單元(未表示)。存儲器次系統(tǒng)112包括數(shù)據(jù)快取存儲器124、填充隊列122、總線接口單元(businterfaceunit,BIU)126、以及控制邏輯單元128。填充隊列122包括多個項目(entry)以維持接收自系統(tǒng)存儲器的快取列,以分配進入至數(shù)據(jù)快取存儲器124。存儲器次系統(tǒng)112的操作于下文詳細說明。微處理器100也包括引退單元(retireunit)124,其按程序順序來引退指令,該程序順序依照指令在微處理器100的重排緩沖器(reorderbuffer,ROB)116內的位置所指示?,F(xiàn)在參閱圖2,其表示圖1的微處理器的操作流程圖。流程開始在步驟202。在步驟202中,指令轉譯器104遇到一大量REPSTOS指令且轉移控制權至快速REPSTOS微碼常式142。在一實施例中,“大量”REPSTOS指令是指其ECX的值大于或等于128。在一實施例中,轉移控制權至微碼常式142將禁能微處理器100以避免中斷,直到微碼常式142明確地允許中斷。在一實施例中,微碼常式142包括一特定微操作,其在微操作執(zhí)行期間內致能中斷被調用,微碼常式142也包括另一特定微操作,其在微操作的執(zhí)行期間內禁能中斷以避免被調用。流程繼續(xù)進行至步驟204。在步驟204中,微碼常式142在REPSTOS所指定的初始存儲器位置上執(zhí)行小量存儲操作,直到其到達快取列邊界(boundary)。與導致快取列邊界的這些小量存儲操作相關的區(qū)域在此稱為“標頭(head)”。這些小量存儲操作為字節(jié)、字元、雙字元、以及上至半個快取列尺寸的存儲操作。在一實施例中,一快取列為64字節(jié)。流程繼續(xù)進行至步驟206。在步驟206中,微碼常式142在對應的存儲操作之前執(zhí)行N個攫取線操作,而這些對應存儲操作是將填充攫取的快取列。在一實施例中,N為6,其稍微地小于填充隊列122項目的總數(shù)。這些攫取線操作命令存儲器次系統(tǒng)112去要求總線接口單元126,去為了攫取線操作所指定的存儲器地址所涉及的一整條快取列而在處理器總線134上執(zhí)行一讀取無效異動。有利地,在處理器總線134讀取無效異動(也稱為零拍讀取)將不存取系統(tǒng)存儲器且不在處理器總線134上傳送數(shù)據(jù)。這在處理器總線134上是更有效率的,其效率高于在未命中(miss)數(shù)據(jù)快取存儲器124中且導致快取列填滿的一存儲操作,因為此存儲操作需要在處理器總線134上進行一個異動,且需要存取系統(tǒng)存儲器以讀取快取列。然而,這需要微處理器100去保證其以有效數(shù)據(jù)(validdata)來填滿快取列,這是因為來自系統(tǒng)存儲器的有效數(shù)據(jù)無法讀入微處理器100。特別的是,微處理器100必須保證異常處理程序(exception)與中斷不會阻止每一攫取的快取列的填充。此外,在即將填充快取列的存儲操作之前,每一攫取線操作被成功地執(zhí)行,使得處理器總線134所需以執(zhí)行與攫取線操作相關在總線134上的零拍讀取異動的時間,可能部分重疊于介于攫取線操作與對應存儲操作之間的其他指令執(zhí)行。即是,微碼常式142被設計來使得攫取線操作足夠地處于其相關存儲操作之前,以建立等到相關操作被存儲器次系統(tǒng)112執(zhí)行時,在總線134上讀取無效異動將以被執(zhí)行的高度可能性,這使得相關存儲所涉及的快取列所有權將已獲得,以使相關存儲操作將命中(hit)數(shù)據(jù)快取存儲器124。在一實施例中,總線接口單元126立即執(zhí)行讀取無效異動,即是,讀取無效異動可能在攫取線操作由引退單元124所引退之前被執(zhí)行。此外,例如依據(jù)分支指令為誤預測(mispredicted)的判斷或依據(jù)未命中數(shù)據(jù)快取存儲器124的載入操作而反應執(zhí)行的微處理器100管線的清除,不會終止預測性(speculatively)執(zhí)行的攫取線操作。因此,為了避免不能填充攫取的快取列,微碼常式142必須設計來保證一攫取線操作絕不會預測性的執(zhí)行。流程繼續(xù)進行至步驟208。在步驟208中,微碼常式142執(zhí)行足夠大量多個存儲操作(例如四個16字節(jié)存儲操作)以填充一快取列,并執(zhí)行一攫取線操作。一個“大量”存儲操作是指長于REPSTOS指令的個別字節(jié)、字元、或雙字元所指定的長度的存儲操作。在一實施例中,一個大量存儲操作大小為16字節(jié)。注意到,在步驟208之一提出的舉例中所執(zhí)行的這些存儲操作將不會填充由步驟208的相同舉例所執(zhí)行的攫取線操作所攫取的快取列,而是將填充步驟208的一先前舉例所執(zhí)行的攫取線操作所攫取的一快取列。流程繼續(xù)進行到判斷步驟212中。在判斷步驟212中,微碼常式142判斷是否剩下N個快取列來存儲以滿足REPSTOS指令,其中,N是在步驟206中預攫取的快取列的數(shù)量。假使是,流程繼續(xù)進行至步驟218,否則流程繼續(xù)進行至步驟214。在判斷步驟214中,微碼常式142判斷其是否需要允許中斷。在結構上,REPSTOS必須在其執(zhí)行期間允許中斷。在一實施例中,為了滿足結構性的要求,每次46個數(shù)據(jù)快取列被寫入時,微碼常式142允許中斷。在一實施例中,通過步驟208/212/214而由流程圖說明的循環(huán)于微碼常式142中展現(xiàn)(unrolled),以改善效能。假使是時候允許中斷,流程繼續(xù)進行至步驟216,否則,流程返回至步驟208。在步驟216中,微碼常式142更新微處理器100的結構狀態(tài)以反映其已執(zhí)行多少個REPSTOS指令的STOS迭代。尤其是,微碼常式142更新ECX值與EDI值以滿足上述結9構性的要求。當伴隨異常處理程序,根據(jù)一中斷的調用,結構狀態(tài)必須反映當中斷發(fā)生時,微處理器100在REPSTOS指令執(zhí)行的何處。除非中斷被謹慎地處理,即只在受控時間上被允許,中斷可導致錯誤的結構狀態(tài)和/或停擺,其中,此停擺與不能填充其所有權已通過一零拍讀取無效異動而獲得的一快取列相關聯(lián)。在提供一短暫窗口(window)給將發(fā)生的中斷時,中斷再次被禁能且流程循環(huán)回到步驟206以執(zhí)行其他的預攫取操作。在判斷步驟218,微碼常式142執(zhí)行大量存儲操作,以填滿在步驟206和/或208中由攫取線操作所攫取的最后N個快取列。流程繼續(xù)進行至判斷步驟222。在判斷步驟222中,微碼常式142判斷是否剩余REPSTOS指令的字節(jié)以存儲。假使是,流程繼續(xù)進行至步驟224,否則流程繼續(xù)進行至步驟226。在步驟224中,微碼常式142執(zhí)行多個小量存儲操作,以完成存儲REPST0S指令的最后字節(jié)(lastbytes)。在最后填滿的快取列之后且與這些小量存儲操作相關的區(qū)域在此稱為尾端(tail)。流程繼續(xù)進行至步驟226。在步驟226中,微碼常式142更新結構狀態(tài)(ECX/EDI)以反映REPST0S指令的完成。流程結束在步驟226?,F(xiàn)在參閱圖3A-圖3D,其表示圖1中微處理器100的操作流程圖。流程開始在步驟302。在步驟302中,一攫取線操作(例如圖2中步驟206或208所執(zhí)行的攫取線操作)到達存儲器次系統(tǒng)112,其檢查此攫取線操作。在一實施例中,由在步驟206或208所執(zhí)行的攫取線操作所指定的存儲器地址指定了一存儲器位置,其處于或接近快取列的末端(end),以為了致能存儲器次系統(tǒng)112執(zhí)行各種異常情況核對,而這些異常情況核對發(fā)生在快取列的末端或接近快取列的末端,但不會較接近于快取列的起始(beginning),例如分段限制沖突(segmentlimitviolations)或中斷點。流程繼續(xù)進行至判斷步驟304。在判斷步驟304中,存儲器次系統(tǒng)112判斷是否存在與攫取線操作有關的一異常情況。一異常情況可能包括但不限制以下幾種在攫取線操作所指定的快取列內任何地方的一分段限制沖突;在包括快取列的存儲器頁面上的頁面錯誤(pagefault);除錯中斷點;快取列的存儲器特性(trait)為未知的(例如轉譯后備緩沖區(qū)(TLB)的未命中情況);頁面不能被存儲操作所使用(即頁面表查找(pagetablewalk)尚未被執(zhí)行以指示該頁面是臟的(dirty));快取列的存儲器特性是除了回寫(write-back,WB)或寫入組合(write-combine,WC)以外的。由于存儲器次系統(tǒng)112硬件為了這些情況而核對,假使沒有異常情況存在(以及存儲器特性為WB),微碼常式142有利地能以全速并伴隨在對應大量存儲操作之前甚至是跨越頁面邊界的攫取線操作而持續(xù)。假使一異常情況存在,流程繼續(xù)進行至步驟328,否則流程繼續(xù)進行至判斷步驟306。在判斷步驟306中,存儲器次系統(tǒng)112判斷快取列的存儲器特性是否為寫入組合。假使是,流程繼續(xù)進行至步驟308,否則流程繼續(xù)進行至步驟312。在步驟308中,存儲器次系統(tǒng)112不執(zhí)行(no-op)攫取線操作。換句話說,存儲器次系統(tǒng)112不會執(zhí)行讀取無效異動(例如在步驟316中)且不會分配在數(shù)據(jù)快取存儲器124或填充隊列122內的一項目(例如在步驟314中)。此外,存儲器次系統(tǒng)112不會將攫取線操作標記為異常處理程序。因此,在步驟208與218中執(zhí)行的隨后大量存儲操作被發(fā)布且進入至微處理器100的寫入組合緩沖器(未顯示),且隨后的攫取線操作也不執(zhí)行任何10作業(yè)且不執(zhí)行異常處理程序。因此,進入至存儲器之一WC區(qū)域(region)的REPSTOS指令可能享有大量存儲操作效能益處,即使其不享有攫取線的益處。流程結束在步驟308。在判斷步驟312中,存儲器次系統(tǒng)112判斷快取列的存儲器特性是否為回寫。假使是,流程繼續(xù)進行至步驟314,否則流程繼續(xù)進行至步驟328。在步驟314中,存儲器次系統(tǒng)112分配在數(shù)據(jù)快取列124的一項目以及填充隊列122的一項目給被攫取的快取列。流程繼續(xù)進行至步驟316。在步驟316中,總線接口單元126在總線134上執(zhí)行零拍讀取無效異動,以為了獲得快取列的專用(exclusive)所有權而不需自系統(tǒng)存儲器讀取任何數(shù)據(jù)。流程繼續(xù)進行至步驟318。在步驟318中,在圖2的步驟208或218執(zhí)行的存儲操作到達存儲器次系統(tǒng)112,且存儲器次系統(tǒng)112將存儲數(shù)據(jù)寫入至數(shù)據(jù)快取存儲器124中所分配出的快取列。流程繼續(xù)進行至步驟322。在步驟322中,當步驟318的存儲數(shù)據(jù)正寫入至數(shù)據(jù)快取存儲器124時,填充隊列122的項目維持住存儲數(shù)據(jù)已被寫入至的有效字節(jié)的字節(jié)遮罩(bytemask)。字節(jié)遮罩識別出(identify)對于命中快取列的隨后載入操作而言哪些字節(jié)是有效的。流程繼續(xù)進行至步驟324。在步驟324中,假使一探測(snoop)操作命中與攫取線操作相關填充隊列122的項目時,總線接口單元126重試(retry)該探測操作直到快取列完全地存儲(fullypolulate)來自存儲操作的有效數(shù)據(jù)。流程繼續(xù)進行至步驟326。在步驟326中,一旦快取列的所有字節(jié)已被有效數(shù)據(jù)填滿時,填充隊列122的項目自己解除分配(deallocateitself),其導致快取列最后被引退至數(shù)據(jù)快取存儲器124。流程結束在步驟326。在步驟328中,存儲器次系統(tǒng)112不執(zhí)行(no-op)攫取線操作。換句話說,存儲器次系統(tǒng)112不會執(zhí)行讀取無效異動(例如在步驟316中)且不會分配在數(shù)據(jù)快取存儲器124或填充隊列122內的一項目(例如在步驟314中)。然而,存儲器次系統(tǒng)112標記(mark)攫取線操作為異常處理程序。因此,在程序順序中新于異常攫取線的多個指令被清除,例如在步驟208與218中執(zhí)行的較新大量存儲操作以及在步驟206與208中執(zhí)行的較新攫取線操作。尤其是,存儲器次系統(tǒng)112標記異常攫取線操作為內部的(internally)異常處理程序,而不是在結構性的異常處理程序,詳細說明參考步驟332至348。流程繼續(xù)進行至步驟332。在步驟332中,攫取線操作已準備好引退,且引退單元114檢測到攫取線操作被標記為異常處理程序,因此引退單元114將較新于表示為異常處理程序的攫取線操作的所有指令清除,且將控制權轉移至快速REPSTOS微碼常式142的一異常處理程序處理常式(handler)0在一實施例中,存儲器次系統(tǒng)112設定一位來指示(indicate)引起內部異常處理程序的一攫取線操作,且微碼常式142讀取此位以檢測此情況。流程繼續(xù)進行至步驟334。在步驟334中,微碼異常處理程序處理常式檢測到異常處理程序已由一攫取線操作所引起并以小量存儲操作(若有的話)來填充“標頭”的任何剩下部分。在一實施例中,在圖2的步驟206中執(zhí)行的攫取線操作在程序順序中實際上處于在步驟204中執(zhí)行的小量存儲操作之前。因此,在標頭已被完全地填充之前,步驟206的攫取線操作中的一個可能為異常處理程序。步驟繼續(xù)進行至步驟336。在步驟336中,微碼異常處理程序處理常式判斷有多少快取列在最后執(zhí)行的操作之前已準備被攫取線操作所攫取,即存在多少未被填充的快取列。微碼異常處理程序處理常式接著通過執(zhí)行大量存儲操作來填充未被填充的快取列,相似在步驟208的大量存儲操作。如上所討論,存儲器次系統(tǒng)112與微碼常式142—直保證沒有結構異常處理程序或中斷發(fā)生(即控制權不會被轉移至操作系統(tǒng)),直到結構狀態(tài)為正確且由一攫取線操作所攫取的每一快取列被填充。流程繼續(xù)進行至步驟338。在步驟338中,微碼異常處理程序處理常式觸發(fā)(tickle)身為攫取線操作的目標的快取列,且此攫取線操作引起了內部異常處理程序。即是,微碼異常處理程序處理常式執(zhí)行一指令,其指示存儲器次系統(tǒng)112去實質上執(zhí)行與一存儲操作相關的功能,而不需實際上將存儲數(shù)據(jù)寫入至存儲器。尤其是,存儲器次系統(tǒng)112必須核對在一存儲操作上執(zhí)行的所有的異常處理程序。舉例來說,異常處理程序核對可能包括但不限制于其中一分段限制沖突、頁面錯誤、偵錯(debug)中斷點、快取列為非可寫入的(non-writeable)。假使必要獲得與快取列相關的頁面表信息(包括存儲器特性信息),此觸發(fā)指令將執(zhí)行一頁面表查找。流程繼續(xù)進行至判斷步驟342。在判斷步驟342中,存儲器次系統(tǒng)112判斷在步驟338中執(zhí)行的觸發(fā)是否引發(fā)結構異常處理程序情況。假使是,流程繼續(xù)進行至步驟354,否則繼續(xù)進行至步驟344。在步驟344中,微碼異常處理程序處理常式載入快取列的存儲器特性。流程繼續(xù)進行至判斷步驟346。在判斷步驟346中,微碼異常處理程序處理常式檢查載入的存儲器特性。假使此存儲器特性為回寫(WB)或寫入組合(WC),流程繼續(xù)進行至步驟352,否則流程繼續(xù)進行至步驟348。在步驟348中,微碼異常處理程序處理常式更新結構狀態(tài)(例如ECX/EDI)以反映最后引退的存儲操作、清除異常處理程序、并回復(revert)至慢速數(shù)據(jù)串存儲模式(slowstringstoremode)0即是,微碼異常處理程序處理常式將控制權轉移至一般執(zhí)行REPSTOS指令的微碼單元118內的微碼常式(未表示),即在具有REPSTOS指令所指定的尺寸(相對于大尺寸的字節(jié)、字元、或雙字元)的STOS操作循環(huán)內且不需使用攫取線操作,且允許在每一STOS操作之后的中斷。在判斷步驟304與346中的這些核對有益地允許微處理器100器執(zhí)行快速數(shù)據(jù)串存儲操作,以在總線134上執(zhí)行具有由原始REPSTOS指令所指定的尺寸的寫入,且不需對具有非可快取特性的存儲器區(qū)域進行快取操作。舉例來說,存儲器映射式輸出入(memory-mapped1/0)裝置可能被映射至在一具有非可快取特性的存儲器區(qū)域中的一個位置,這是因為(1)程序開發(fā)者(programmer)實際上要存儲走出至總線而不是至快取存儲器以及(2)程序開發(fā)者實際上要此輸出入裝置以程序所指定的尺寸存儲來被寫入(例如對輸出入裝置上字節(jié)尺寸的控制寄存器的字節(jié)尺寸寫入)而不是一較大量的存儲操作。因此,假使REPST0S由一可快取區(qū)域(于其中允許從事大量存儲操作)轉變至一非可快取區(qū)域時(于其中不被允許從事大量存儲操作),在此期望的微處理器100有益地停止從事快取/大量寫入,且從事非可快取/小量寫入。流程結束在步驟348。在步驟352中,微碼異常處理程序處理常式持續(xù)在快速數(shù)據(jù)串存儲模式(fast12stringstoremode)中。即是,流程返回至圖2的步驟206。流程結束在步驟352。在步驟354中,微碼異常處理程序處理常式結構異常處理程序導致流程轉移至微碼常式142內的另一異常處理程序處理常式,其更新結構狀態(tài)、清除異常處理程序情況、且執(zhí)行與在步驟348中由慢速數(shù)據(jù)串存儲編碼所執(zhí)行的存儲相似的多個小量存儲操作,直到這些小量存儲操作中的一個重新引起上述觸發(fā)所導致的結構異常處理程序。尤其是,為了保證允許將數(shù)據(jù)存儲至介于引起異常處理程序觸發(fā)的快取列的起點與實際引起異常處理程序的快取列內的位置之間的存儲器區(qū)域,此異常處理程序處理常式不會允許中斷。當結構異常處理程序處理常式是根據(jù)小量存儲操作而引發(fā)(invoke)時,其將正常地操作(handle)結構異常處理程序,而這是可被接受的,是因為微碼異常處理程序處理常式先前更新結構狀態(tài)且任何重要的被攫取快取列已被填充。流程結束在步驟354。由圖3可得知且如上所討論,為了接收來自圖3的效能益處,適當?shù)卦诖鎯Σ僮鳛榻Y構上的之前(即適當?shù)卦趯嶋H引退的存儲操作之前),攫取線操作在總線134上執(zhí)行。假使存儲器次系統(tǒng)112檢測到一攫取線可引起異常情況(abnormalcondition)(例如異常處理程序或其他上述指明的情況),存儲器次系統(tǒng)112使此攫取線產生一內部異常處理程序,其致能微碼異常處理程序處理常式去判斷它是引起異常處理程序的攫取線,使得異常處理程序處理常式可進行特殊攫取線處理編碼。為了致能重要的攫取線被存儲填充(例如在步驟336中),存儲器次系統(tǒng)112產生此內部異常處理程序,而不是一結構異常處理程序。否則,可能發(fā)生機器停擺(machinehang)。因此,假使整體REPSTOS指令進入至WB存儲器區(qū)域且不存在一異常情況,此處的微處理器100的實施例可能以有效地最大速率來有益地存儲REPSTOS指令所指定的整體數(shù)據(jù)串(除了標頭與尾端部分以外),而此該最大速率下,處理器總線134與存儲器次系統(tǒng)可通過利用攫取線與大量存儲操作來調和(accommodate),且在整體數(shù)據(jù)串長度中不需減慢速度。雖然已敘述攫取線操作用來執(zhí)行快速數(shù)據(jù)串存儲(REPST0S)的實施例,但可考慮使用攫取線操作在來執(zhí)行快速數(shù)據(jù)移動(REPM0VS)的實施例,即充分地在與MOVS操作相關的存儲之前來執(zhí)行攫取線操作以加速REPMOVS的效能,以導致當攫取線操作以被執(zhí)行時能命中快取存儲器。本發(fā)明的不同實施例已于本文敘述,但本領域技術人員應能了解這些實施例僅作為范例,而非限定于此。本領域技術人員可在不脫離本發(fā)明的精神的情況下,對形式與細節(jié)上做不同的變化。例如,軟件可致能本發(fā)明實施例所述的裝置與方法的功能、組建(fabrication)、建模(modeling)、仿真、描述(description)、和/或測試??赏ㄟ^一般程序語言(C、C++)、硬件描述語g(HardwareDescriptionLanguages,HDL)(包括VerilogHDL、VHDL等等)、或其他可利用的程序語言來完成。此軟件可配置在任何已知的計算機可使用介質,例如半導體、磁盤、或光盤(例如CD-R0M、DVD_R0M等等)。本發(fā)明所述的裝置與方法實施例可被包括于半導體知識產權內核,例如微處理器內核(以HDL來實現(xiàn)),并轉換成集成電路產品的硬件。此外,本發(fā)明所述的裝置與方法可實現(xiàn)為硬件與軟件的結合。因此,本發(fā)明不應局限于所公開的實施例,而是依后附的申請專利范圍與等同實施所界定。特別是,本發(fā)明可實施在使用于一般用途計算機中的微處理器裝置內。最后,本發(fā)明雖以優(yōu)選實施例公開如上,然其并非用以限定本發(fā)明的范圍,本領域技術人員,在不脫離本發(fā)明的精神和范圍內,當可做些許的更動與潤飾,因此本發(fā)明的保護范圍當視所附權利要求書所界13定者為準。權利要求一種微處理器,通過一總線耦接一存儲器,該微處理器包括一快取存儲器;以及一攫取線指令,用以指定涉及該存儲器的一快取列的一存儲器地址,其中,該攫取線指令指示該微處理器在該總線上開始執(zhí)行一零拍讀取無效異動以獲得該快取列的所有權;其中,假使該微處理器判斷對該快取列的一存儲操作會引起異常處理程序,當該微處理器執(zhí)行該攫取線指令時,該微處理器放棄開始執(zhí)行在該總線上的該零拍讀取無效異動。2.如權利要求1所述的微處理器,還包括一微碼單元,包括一結構指令,該結構指令指示該微處理器重復地將一數(shù)據(jù)串存儲至在該結構指令所指定的該存儲器中的多個相鄰位置;其中,在該存儲器中的這些相鄰位置共同包括多個快取列,該微碼單元包括用來指定多個存儲器地址的多個攫取線指令,而這些存儲器地址與這些快取列有關;以及其中,該微碼單元也包括多個存儲指令,且這些存儲指令以該數(shù)據(jù)串填充這些快取列。3.如權利要求2所述的微處理器,其中,該微碼單元更用來檢測在引退一或多個這些存儲指令之前該微處理器清除的一情況,使得其所有權通過該零拍讀取無效異動而由該微處理所獲得的一或多個這些快取列,沒有按照被清除的這些存儲指令來以該數(shù)據(jù)串來填充。4.如權利要求3所述的微處理器,其中,該微碼單元更用依據(jù)該情況的檢測而以該數(shù)據(jù)串來填充,沒有按照被清除的這些存儲指令來以該數(shù)據(jù)串來填充的一或多個這些快取列。5.如權利要求4所述的微處理器,其中,該微碼單元還根據(jù)該情況的檢測而將該數(shù)據(jù)串存儲至該結構指令所指定的該存儲器中的這些相鄰位置的一標頭部分,且該標頭部分包括在該存儲器中由該結構指令所指定的第一位置開始上至但不包括這些快取列中第一快取列的多個位置。6.如權利要求3所述的微處理器,其中,該微處理器根據(jù)在這些攫取線指令中用來指示對這些快取列的一快取列的一存儲會引起異常處理程序的一攫取線指令,來清除該一或多個這些存儲指令;以及其中,被清除的這些存儲指令在程序順序上新于在這些攫取線指令中用來指示對這些快取列中的一快取列的一存儲會引起異常處理程序的該攫取線指令。7.如權利要求6所述的微處理器,其中,假使對這些快取列的該快取列的該存儲將引起一結構異常處理程序,該微碼單元將該數(shù)據(jù)串存儲至這些快取列的該一快取列的多個相鄰位置,直到該結構異常處理程序產生。8.如權利要求7所述的微處理器,其中,該結構指令指定重復存儲至該存儲器內這些相鄰位置的該數(shù)據(jù)串的一數(shù)據(jù)串尺寸,且該微碼單元通過多個數(shù)據(jù)串尺寸存儲指令來將該數(shù)據(jù)串存儲至這些快取列的該一快取列的多個相鄰位置,直到該結構異常處理程序產生。9.如權利要求2所述的微處理器,其中,該微碼單元配置來使得這些攫取線指令短暫地處于這些存儲指令之前,以建立在這些存儲指令各自試圖以該數(shù)據(jù)串填充該快取列之前該微處理器已獲得該快取列的優(yōu)先權的高度可能性。10.如權利要求2所述的微處理器,其中,該結構指令指定重復存儲至該存儲器內的這些相鄰位置的該數(shù)據(jù)串的一尺寸,且每一該存儲指令寫入多于該結構指令所指定的該數(shù)據(jù)串的該尺寸的多個字節(jié)。11.如權利要求2所述的微處理器,其中,該微處理器還保證在該結構指令的執(zhí)行期間內,控制不會轉移至系統(tǒng)軟件,直到其所有權通過該零拍讀取無效異動而由該微處理器所獲得的這些快取列的每一快取列以該數(shù)據(jù)串來填充。12.如權利要求1所述的微處理器,其中,假使該微處理器判斷該快取列具有一寫入組合存儲器特性,當該微處理器執(zhí)行該攫取線指令時,該微處理器更放棄開始執(zhí)行在該總線上的該零拍讀取無效異動。13.如權利要求1所述的微處理器,其中,假使該快取列的存儲器特性不是寫入組合也不是回寫,當該微處理器執(zhí)行該攫取線指令時,該微處理器更放棄開始執(zhí)行在該總線上的該零拍讀取無效異動并產生一非結構異常處理程序。14.如權利要求1所述的微處理器,其中,假使該攫取線指令的該存儲器地址未命中在該微處理器的一轉譯后備緩沖區(qū),當該微處理器執(zhí)行該攫取線指令時,該微處理器更放棄開始執(zhí)行在該總線上的該零拍讀取無效異動并產生一非結構異常處理程序。15.如權利要求1所述的微處理器,其中,假使一頁面表查找尚未被執(zhí)行給包括該攫取線指令的該存儲器地址所涉及的該快取列的一存儲器頁面,當該微處理器執(zhí)行該攫取線指令時,該微處理器更放棄開始執(zhí)行在該總線上的該零拍讀取無效異動并產生一非結構異常處理程序。16.如權利要求1所述的微處理器,還包括一微碼單元,用來實施一結構指令,該結構指令指示該微處理器將一數(shù)據(jù)串由該存儲器的一第一區(qū)域移動至該存儲器的一第二區(qū)域,該存儲器的該第二區(qū)域共同地包括多個快取列;其中,該微碼單元包括用來指定多個存儲器地址的多個攫取線指令,而這些存儲器地址與這些快取列有關;以及其中,該微碼單元也包括多個存儲指令,且這些存儲指令以一部分的該數(shù)據(jù)串來填充這些快取列。17.一種執(zhí)行方法,由一微處理器執(zhí)行,該微處理器通過一總線耦接一存儲器,執(zhí)行方法包括接收一攫取線指令以執(zhí)行,該攫取線指令指定涉及該存儲器的一快取列的一存儲器地址;根據(jù)該攫取線指令的接收,判斷對該快取列的一存儲操作是否會引起異常處理程序;假使對該快取列的一存取不會引起異常處理程序,開始執(zhí)行該總線上的一零拍讀取無效異動以獲得該快取列的所有權;以及假使對該快取列的一存取會引起異常處理程序,則放棄開始執(zhí)行在該總線上的該零拍讀取無效異動。18.如權利要求17所述的執(zhí)行方法,還包括對一結構指令進行解碼,該結構指令指示該微處理器重復地將一數(shù)據(jù)串存儲至在該結構指令所指定的該存儲器中的多個相鄰位置;以及根據(jù)該結構指令的解碼,執(zhí)行該微處理器的一微碼單元,其中,該微碼單元包括用來指定多個存儲器地址的多個攫取線指令,而這些存儲器地址與這些快取列有關;其中,該微碼單元也包括多個存儲指令,且這些存儲指令以該數(shù)據(jù)串填充這些快取列。19.如權利要求17所述的執(zhí)行方法,還包括檢測在引退一或多個這些存儲指令之前該微處理器清除的一情況,使得其所有權通過該零拍讀取無效異動而由該微處理所獲得的一或多個這些快取列,沒有按照被清除的這些存儲指令來以該數(shù)據(jù)串來填充。20.如權利要求19所述的執(zhí)行方法,還包括依據(jù)該情況的檢測,而以該數(shù)據(jù)串來填充沒有按照被清除的這些存儲指令來以該數(shù)據(jù)串來填充的一或多個這些快取列。21.如權利要求19所述的執(zhí)行方法,其中,該微處理器根據(jù)在這些攫取線指令中用來指示對這些快取列的一快取列的一存儲會引起異常處理程序之一攫取線指令,來清除該一或多個這些存儲指令;以及其中,被清除的這些存儲指令在程序順序上新于在這些攫取線指令中用來指示對這些快取列的一快取列的一存儲會引起異常處理程序的該攫取線指令。22.如權利要求21所述的執(zhí)行方法,還包括判斷對這些快取列的該一快取列的該存儲將引起一結構異常處理程序;以及根據(jù)判斷對這些快取列的該一快取列的該存儲將引起該結構異常處理程序的步驟,該數(shù)據(jù)串存儲至這些快取列的該一快取列的多個相鄰位置,直到該結構異常處理程序產生。23.如權利要求18所述的執(zhí)行方法,其中,該微碼單元配置來使得這些攫取線指令短暫地處于這些存儲指令之前,以建立在這些存儲指令各自試圖以該數(shù)據(jù)串填充該快取列之前該微處理器已獲得該快取列的優(yōu)先權的高度可能性。24.如權利要求18所述的執(zhí)行方法,還包括保證在該結構指令的執(zhí)行期間內,控制不會轉移至系統(tǒng)軟件,直到其所有權通過該零拍讀取無效異動而由該微處理所獲得的這些快取列的每一快取列以該數(shù)據(jù)串來填充。25.如權利要求17所述的執(zhí)行方法,還包括假該快取列具有一寫入組合存儲器特性,當執(zhí)行該攫取線指令時,放棄開始執(zhí)行在該總線上的該零拍讀取無效異動。26.如權利要求17所述的執(zhí)行方法,還包括假使該快取列的存儲器特性不是寫入組合也不是回寫,當執(zhí)行該攫取線指令時,放棄開始執(zhí)行在該總線上的該零拍讀取無效異動并產生一非結構異常處理程序。27.如權利要求17所述的執(zhí)行方法,還包括假使該攫取線指令的該存儲器地址未命中在該微處理器的一轉譯后備緩沖區(qū),當執(zhí)行該攫取線指令時,放棄開始執(zhí)行在該總線上的該零拍讀取無效異動并產生一非結構異常處理程序。28.如權利要求17所述的執(zhí)行方法,還包括假使一頁面表查找尚未被執(zhí)行給包括該攫取線指令的該存儲器地址所涉及的該快取列的一存儲器頁面,當執(zhí)行該攫取線指令時,放棄開始執(zhí)行在該總線上的該零拍讀取無效異動并產生一非結構異常處理程序。29.如權利要求17所述的執(zhí)行方法,還包括對一結構指令進行解碼,該結構指令指示該微處理器將一數(shù)據(jù)串由該存儲器的一第一區(qū)域移動至該存儲器的一第二區(qū)域,且該存儲器的該第二區(qū)域共同地包括多個快取列;以及根據(jù)對該結構指令進行解碼的步驟,執(zhí)行該微處理器的一微碼,其中,該微碼包括用來指定多個存儲器地址的多個攫取線指令,而這些存儲器地址與這些快取列有關;其中,該微碼也包括多個存儲指令,且這些存儲指令以一部分的該數(shù)據(jù)串來填充這些快取列。全文摘要微處理器及其執(zhí)行方法。該微處理器包括一快取存儲器以及一攫取線指令。攫取線指令用以指定涉及該存儲器的一快取列的一存儲器地址。攫取線指令指示微處理器在總線上開始執(zhí)行一零拍讀取無效異動(zero-beatread-invalidatetransaction)以獲得該快取列的所有權。假使微處理器判斷對快取列的一存儲操作會引起異常處理程序(exception),當微處理器執(zhí)行攫取線指令時,微處理器放棄開始執(zhí)行在總線上的零拍讀取無效異動。文檔編號G06F9/312GK101916181SQ20101026034公開日2010年12月15日申請日期2010年8月20日優(yōu)先權日2009年8月28日發(fā)明者G·葛蘭·亨利,柯林·艾迪,羅德尼·E·虎克申請人:威盛電子股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
奎屯市| 金秀| 天等县| 竹山县| 冕宁县| 黄山市| 通渭县| 鱼台县| 台山市| 龙南县| 永修县| 阜新| 和静县| 永川市| 汉阴县| 当雄县| 蕲春县| 闻喜县| 永宁县| 泰州市| 鱼台县| 延吉市| 三门县| 寿光市| 旌德县| 长岭县| 永宁县| 博爱县| 肇州县| 高清| 拜城县| 鹿邑县| 东宁县| 金门县| 库伦旗| 当涂县| 永德县| 乐昌市| 舟山市| 迁安市| 方城县|