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

用于監(jiān)測(cè)和復(fù)位協(xié)處理器的方法和裝置的制作方法

文檔序號(hào):6424359閱讀:156來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):用于監(jiān)測(cè)和復(fù)位協(xié)處理器的方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明通常涉及計(jì)算機(jī)系統(tǒng)或者其他系統(tǒng)中的“掛起”(hang)的檢測(cè)和恢復(fù),并且尤其涉及到用于檢測(cè)協(xié)處理器中的掛起和提供協(xié)處理器的恢復(fù)的裝置和方法。
背景技術(shù)
對(duì)以更快的速度處理更大量的圖形數(shù)據(jù)的需求的不斷增長(zhǎng)持續(xù)推動(dòng)加速圖形渲染(rendering)領(lǐng)域中的發(fā)展。當(dāng)前的加速圖形渲染方案是一個(gè)復(fù)雜的處理過(guò)程,其需要對(duì)硬件和軟件兩者進(jìn)行精確地設(shè)計(jì)和實(shí)現(xiàn)。加速圖形渲染一般使用通常為圖形處理器的硬件,和通常為由主處理器執(zhí)行的圖形驅(qū)動(dòng)程序的軟件,以使圖形數(shù)據(jù)和視頻信息的處理最佳化。任一例如設(shè)計(jì)缺陷或者實(shí)現(xiàn)缺陷的問(wèn)題,都能損害加速圖形渲染,并能導(dǎo)致所述加速圖形渲染停止運(yùn)行。這樣的問(wèn)題可以包括有缺陷的圖形處理器,總線(xiàn)控制器,中央處理器單元(CPU),或者其他硬件。其他的問(wèn)題可能包括圖形驅(qū)動(dòng)程序、操作系統(tǒng)、圖形應(yīng)用程序或者其他軟件等方面的缺陷。由于在加速圖形渲染中使用的硬件和軟件的復(fù)雜性,以及在上述軟件、硬件以不同方式組合所增加的復(fù)雜性,圖形處理器經(jīng)常會(huì)遭遇到包括完全掛起在內(nèi)的各種渲染錯(cuò)誤。一個(gè)掛起是一個(gè)其中系統(tǒng)或者進(jìn)程變成沒(méi)有響應(yīng)的情形,比如由于處理器停轉(zhuǎn)、死鎖、 陷入死循環(huán)等造成的處理器掛斷的情形。目前,這種掛起會(huì)導(dǎo)致數(shù)據(jù)遺失以及中止整個(gè)計(jì)算機(jī)系統(tǒng)上的操作。不幸的是,新的加速圖形渲染硬件和軟件以及兩者之間的大量可能組合的不斷引入,使得很難完全識(shí)別和排除那些能夠?qū)е录铀賵D形渲染錯(cuò)誤的所有可能的錯(cuò)誤。目前,用于檢測(cè)加速圖形渲染錯(cuò)誤的方法依賴(lài)于對(duì)圖形驅(qū)動(dòng)程序中的掛起進(jìn)行的操作系統(tǒng)級(jí)檢測(cè),而并不能直接檢測(cè)相應(yīng)圖形處理器中的掛起。例如,被微軟Windows XP_ 用來(lái)檢測(cè)在圖形加速渲染進(jìn)程中是否已經(jīng)發(fā)生一個(gè)錯(cuò)誤的方法是,檢測(cè)在圖形驅(qū)動(dòng)程序中是否存在掛起。在這里,“看門(mén)狗定時(shí)器”通過(guò)執(zhí)行自旋循環(huán)(spin-loop)來(lái)測(cè)量在圖形驅(qū)動(dòng)程序中花費(fèi)的時(shí)間,然后等待所述圖形處理器來(lái)進(jìn)行響應(yīng)。死循環(huán)的檢測(cè)被操作系統(tǒng)用作圖形處理器可能掛起的一個(gè)信號(hào)。一旦超時(shí)期滿(mǎn),操作系統(tǒng)就停止所述圖形驅(qū)動(dòng)程序,向用戶(hù)顯示一個(gè)通知,并且提示用戶(hù)重啟計(jì)算機(jī)。這里,看門(mén)狗定時(shí)器周期性地執(zhí)行,而不考慮渲染命令是否當(dāng)前正被驅(qū)動(dòng)程序處理。根據(jù)一個(gè)預(yù)先設(shè)定的等待時(shí)間,由于表現(xiàn)為圖形驅(qū)動(dòng)程序中的掛起的和作為實(shí)際正在執(zhí)行的大量渲染命令的都表現(xiàn)為緩慢響應(yīng),所以微軟的Windows XP 不能把兩者區(qū)分開(kāi)來(lái)。而且,利用微軟的Windows XP ,在系統(tǒng)嘗試在不關(guān)心圖形驅(qū)動(dòng)程序是否已經(jīng)發(fā)出的任何指令,即圖形驅(qū)動(dòng)程序當(dāng)前是否是空閑的情況下判定圖形驅(qū)動(dòng)程序是否掛起時(shí),系統(tǒng)資源經(jīng)常被浪費(fèi)。另外,當(dāng)微軟的Windows XP 檢測(cè)到被認(rèn)為是一個(gè)掛起的圖形處理器時(shí), 整個(gè)系統(tǒng)必須被重啟,迫使用戶(hù)終止所有硬件和軟件組件,而不管這些組件對(duì)圖形處理器中的掛起有無(wú)貢獻(xiàn)。用于檢測(cè)一個(gè)掛起的圖形驅(qū)動(dòng)程序的另一個(gè)方法是在微軟Windows XP 的 Service Pack I(SPl)中使用的方法。這里,使用相同的“看門(mén)狗定時(shí)器”,但是響應(yīng)于檢測(cè)到一個(gè)掛起的圖形驅(qū)動(dòng)程序,所述系統(tǒng)在一次嘗試中卸載圖形驅(qū)動(dòng)程序并加載一個(gè)標(biāo)準(zhǔn)的 VGA驅(qū)動(dòng)程序來(lái)依照一種非加速模式來(lái)繼續(xù)圖形渲染操作。這種設(shè)計(jì)通過(guò)允許用戶(hù)保存其工作并重啟計(jì)算機(jī),防止了數(shù)據(jù)的丟失。然而,使用SP1,當(dāng)系統(tǒng)切換到非加速模式時(shí),加速圖形渲染模式中的操作優(yōu)勢(shì)就喪失。而且,類(lèi)似于微軟Windows XP 系統(tǒng),SPl也不能區(qū)分圖形驅(qū)動(dòng)程序的緩慢響應(yīng)和完全掛起兩者。另外,當(dāng)SPl切換到非加速模式時(shí),系統(tǒng)返回到加速圖形渲染的唯一方式就是執(zhí)行整個(gè)系統(tǒng)的重啟。而且,如果硬件和軟件組件對(duì)圖形處理器中的掛起有貢獻(xiàn),則迫使用戶(hù)來(lái)終止所有硬件和軟件組件。

發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個(gè)方面,提供一種用于監(jiān)測(cè)和復(fù)位協(xié)處理器的裝置,包括掛起檢測(cè)器模塊,用于檢測(cè)所述協(xié)處理器中的掛起;和選擇性處理器復(fù)位模塊,用于響應(yīng)于檢測(cè)到所述協(xié)處理器中的掛起,有選擇地復(fù)位所述協(xié)處理器,而不復(fù)位處理器,其中所述掛起檢測(cè)器模塊通過(guò)檢測(cè)所述協(xié)處理器的當(dāng)前狀態(tài)和所述協(xié)處理器的當(dāng)前活動(dòng)之間的差異來(lái)檢測(cè)所述協(xié)處理器中的所述掛起。根據(jù)本發(fā)明的另一個(gè)方面,提供一種用于監(jiān)測(cè)和復(fù)位協(xié)處理器的方法,包括步驟檢測(cè)所述協(xié)處理器中的掛起;且響應(yīng)于檢測(cè)到所述協(xié)處理器中的掛起,有選擇地復(fù)位所述協(xié)處理器,而不復(fù)位處
理器;其中檢測(cè)所述協(xié)處理器中的掛起包括檢測(cè)所述協(xié)處理器的當(dāng)前狀態(tài)和確定所述協(xié)處理器的活動(dòng)之間的差異。


參考下圖,本發(fā)明可以更清楚的理解,其中相同參考標(biāo)記表示類(lèi)似的單元,其中圖1是例示依照本發(fā)明的一個(gè)實(shí)施例的用于監(jiān)測(cè)和復(fù)位協(xié)處理器的電路的一個(gè)實(shí)例的方框圖;圖2是例示依照本發(fā)明的一個(gè)實(shí)施例的用于監(jiān)測(cè)和復(fù)位協(xié)處理器的方法的一個(gè)實(shí)例的流程圖;圖3是例示依照本發(fā)明的一個(gè)實(shí)施例的用于監(jiān)測(cè)和復(fù)位協(xié)處理器的電路的一個(gè)實(shí)例的方框圖;圖4是例示依照本發(fā)明的一個(gè)實(shí)施例的用于監(jiān)測(cè)和復(fù)位協(xié)處理器的方法的一個(gè)實(shí)例的流程圖;圖5是舉例說(shuō)明依照本發(fā)明的一個(gè)實(shí)施例的用于監(jiān)測(cè)和復(fù)位協(xié)處理器的系統(tǒng)的一個(gè)實(shí)例的方框圖;圖6是依照本發(fā)明的一個(gè)實(shí)施例的用于監(jiān)測(cè)和復(fù)位協(xié)處理器的系統(tǒng)的實(shí)例的方框圖;圖7是依照本發(fā)明的一個(gè)實(shí)施例的用于監(jiān)測(cè)和復(fù)位協(xié)處理器的系統(tǒng)的一個(gè)實(shí)例的方框圖,包括一個(gè)圖形處理器;圖8是依照本發(fā)明的一個(gè)實(shí)施例的用于監(jiān)測(cè)和復(fù)位圖形處理器的系統(tǒng)的一個(gè)實(shí)例的方框圖;圖9例示了依照本發(fā)明的一個(gè)實(shí)施例的用于監(jiān)測(cè)和復(fù)位圖形處理器的系統(tǒng)的一個(gè)實(shí)例;圖10是例示依照本發(fā)明的一個(gè)實(shí)施例的用于監(jiān)測(cè)和復(fù)位協(xié)處理器的方法的一個(gè)實(shí)例的流程圖;和圖11是例示依照本發(fā)明的一個(gè)實(shí)施例的用于監(jiān)測(cè)和復(fù)位協(xié)處理器的方法的一個(gè)實(shí)例的流程圖。發(fā)明詳述簡(jiǎn)單地說(shuō),電路對(duì)協(xié)處理器進(jìn)行監(jiān)測(cè)和復(fù)位。所述電路包括掛起檢測(cè)器模塊,用于檢測(cè)協(xié)處理器中的掛起。所述電路還包括選擇性處理器復(fù)位模塊,用來(lái)響應(yīng)于檢測(cè)到協(xié)處理器中的掛起,只對(duì)所述協(xié)處理器進(jìn)行復(fù)位,而無(wú)需對(duì)處理器進(jìn)行復(fù)位。如同在本文檔中所使用的,術(shù)語(yǔ)模塊是指一個(gè)功能電路系統(tǒng)的較大集合中的一個(gè)功能子集合。術(shù)語(yǔ)電路系統(tǒng)至少包括下列之一一個(gè)或多個(gè)執(zhí)行指令的處理器,如微處理器、數(shù)字信號(hào)處理器(DSP),微控制器或離散邏輯,狀態(tài)機(jī),或硬件、軟件和/或固件的任何適當(dāng)組合。本領(lǐng)域的一個(gè)普通技術(shù)人員可以認(rèn)識(shí)到,一個(gè)或者多個(gè)模塊可被組合為電路系統(tǒng)的所述功能集合的所述較大集合。此外,任何來(lái)自一個(gè)模塊的功能可以從一個(gè)模塊轉(zhuǎn)移到另一個(gè)模塊。如同在本文檔中所使用的,術(shù)語(yǔ)協(xié)處理器是指相對(duì)于第一處理器的第二處理器。 這樣的協(xié)處理器例如可以包括通用處理器,外圍設(shè)備處理器(例如圖形處理器,音頻處理器等等),或者其他的相似處理器。如同在本文檔中所使用的,術(shù)語(yǔ)處理器掛起被用來(lái)描述比如當(dāng)處理器處于死循環(huán)時(shí),其對(duì)來(lái)自該處理器外部的輸入不再作出響應(yīng)。在這種情況下,所述處理器需要重新引導(dǎo)或者復(fù)位以使所述處理器再一次對(duì)外部輸入作出響應(yīng),并且另外按照所述設(shè)備被設(shè)計(jì)的方式來(lái)進(jìn)行操作。在協(xié)處理器復(fù)位期間,通常,與所述處理器有關(guān)的一個(gè)或者多個(gè)軟件和/或硬件組件被復(fù)位,使得處理器能夠依照其預(yù)期設(shè)計(jì)進(jìn)行操作。復(fù)位可以包括在上電或者引導(dǎo)時(shí)執(zhí)行的復(fù)位類(lèi)型,就如同通常在處理裝置上電時(shí)執(zhí)行一樣。但是,可以執(zhí)行與上電復(fù)位不同的其他復(fù)位。一種復(fù)位可以是為特定的協(xié)處理器可用的多種不同復(fù)位類(lèi)型。在一個(gè)實(shí)施例中,響應(yīng)于檢測(cè)到協(xié)處理器中的一個(gè)掛起,可以執(zhí)行多個(gè)不同類(lèi)型的復(fù)位。在此實(shí)施例中, 在復(fù)位時(shí)刻或在此之前,使各個(gè)不同復(fù)位適合于協(xié)處理器或者其他相關(guān)組件的檢測(cè)狀態(tài)或者狀況。執(zhí)行復(fù)位的一般目的是復(fù)位的結(jié)果消除協(xié)處理器中的所述掛起并允許處理器恢復(fù)對(duì)指令的成功處理。在一個(gè)實(shí)施例中,提供一個(gè)優(yōu)點(diǎn),使得所述特定協(xié)處理器中的一個(gè)掛起不必需要對(duì)除了所述掛起的協(xié)處理器以外的任何其他處理器進(jìn)行復(fù)位。同樣,在相同處理設(shè)備上運(yùn)行的其他應(yīng)用程序通常不受掛起和任何隨后的復(fù)位的影響。例如用于處理其他協(xié)處理器的指令或者其他應(yīng)用程序的處理器不會(huì)受到所述協(xié)處理器的復(fù)位的影響。在一個(gè)實(shí)施例中,所述處理器執(zhí)行針對(duì)用于監(jiān)測(cè)和復(fù)位所述協(xié)處理器的電路的指令。此外,當(dāng)所述掛起的協(xié)處理器復(fù)位時(shí),所述處理器繼續(xù)執(zhí)行指令。在一個(gè)實(shí)施例中,提供一個(gè)優(yōu)點(diǎn),使得從由操作系統(tǒng)通常提供的那些過(guò)程中提供單獨(dú)的過(guò)程,這些單獨(dú)的過(guò)程分別監(jiān)測(cè)一個(gè)特定的應(yīng)用/協(xié)處理器是否被掛起。因?yàn)樗鲞^(guò)程與通過(guò)操作系統(tǒng)的可使用的相應(yīng)過(guò)程是分離的,所以所述分離過(guò)程可以適合包含特定功能,該特定功能尤其適合對(duì)特定處理器的掛起進(jìn)行檢測(cè)和復(fù)位。例如,可以使得一個(gè)掛起檢測(cè)過(guò)程適合于所述特定處理器,使得對(duì)那個(gè)特定處理器的掛起檢測(cè)而言,對(duì)某一個(gè)軟件和/或硬件狀況的具體檢查是最有效的。在一個(gè)實(shí)施例中,提供一個(gè)優(yōu)點(diǎn),使得只有在處理器忙時(shí),才會(huì)執(zhí)行確定目的協(xié)處理器中是否已經(jīng)出現(xiàn)一個(gè)掛起的過(guò)程。這里,還未執(zhí)行任何指令且不太可能遭受掛起的空閑處理器,就不必為掛起的存在進(jìn)行檢查。即使因某種原因這個(gè)處理器經(jīng)受一個(gè)掛起,事實(shí)上,當(dāng)前不需要該處理器,并且有可能永遠(yuǎn)不需要,現(xiàn)有系統(tǒng)提供的好處是,忽略特定處理器的掛起狀態(tài)直到實(shí)際需要所述過(guò)程。不管這樣的處理器是否需要而進(jìn)行關(guān)于這樣的處理器是否被掛起的周期性檢查的系統(tǒng),不僅浪費(fèi)了系統(tǒng)資源,而且引入了一種可能性,即因?yàn)闄z測(cè)到系統(tǒng)還不需要的掛起過(guò)程而需要重新引導(dǎo)所述系統(tǒng)。在一個(gè)實(shí)施例中,提供一個(gè)優(yōu)點(diǎn),使得特別旨在協(xié)處理器的應(yīng)用程序現(xiàn)在可以接管關(guān)于確定相關(guān)協(xié)處理器是否經(jīng)歷一個(gè)掛起的那些責(zé)任。這可能釋放那些通常被操作系統(tǒng)使用來(lái)確定是否有一個(gè)掛起已經(jīng)發(fā)生的掛起檢測(cè)過(guò)程。在一個(gè)實(shí)施例中,所述系統(tǒng)可以在所述處理器復(fù)位期間,暫停與所述掛起的處理器的通信。這提供了防止協(xié)處理器的任何進(jìn)一步的不穩(wěn)定的優(yōu)點(diǎn)。在一個(gè)實(shí)施例中,在嘗試復(fù)位一個(gè)已掛起的處理器之后,所述系統(tǒng)在允許這個(gè)處理器繼續(xù)執(zhí)行之前,進(jìn)行檢查以確定所述復(fù)位是否成功。這提供了一個(gè)優(yōu)點(diǎn),即防止處理器在失敗的復(fù)位之后繼續(xù)進(jìn)行處理。在一個(gè)實(shí)施例中,在已經(jīng)復(fù)位所述處理器之后,通過(guò)確定先前已掛起的處理器現(xiàn)在是否完全起作用,所述系統(tǒng)決定是否恢復(fù)協(xié)處理器的操作,這提供一個(gè)優(yōu)點(diǎn),即在確定為所述處理器還沒(méi)有完全起作用時(shí),防止處理器嘗試重啟處理。在一個(gè)實(shí)施例中,所述系統(tǒng)首先進(jìn)行檢查以判斷復(fù)位是否成功,并且如果成功,判斷先前已掛起的處理器是否完全起作用,如果起作用,則允許這個(gè)處理器的恢復(fù)使用。在一個(gè)實(shí)施例中,出于調(diào)試系統(tǒng)來(lái)判斷處理器掛起發(fā)生的原因的目的,所述系統(tǒng)保存著相關(guān)硬件和軟件的狀況的一個(gè)瞬像(snapshot)。這提供了一個(gè)優(yōu)點(diǎn),即保存可被用來(lái)識(shí)別處理問(wèn)題的信息,使得能夠在以后軟件和/或硬件的升級(jí)中解決這種問(wèn)題。在一個(gè)實(shí)施例中,所述保存的信息包括下列中一個(gè)或者多個(gè)軟件或驅(qū)動(dòng)程序版本,錯(cuò)誤報(bào)告格式版本,加速圖形端口(AGP)速度;所支持的AGP版本、圖形處理器設(shè)備ID、圖形處理器供應(yīng)商ID、圖形處理器子系統(tǒng)ID、芯片組設(shè)備ID、芯片組供應(yīng)商ID、誤差標(biāo)志、系統(tǒng)存儲(chǔ)器大小、 圖形幀緩存大小、引擎時(shí)鐘、存儲(chǔ)器時(shí)鐘,和內(nèi)部協(xié)處理器狀況,包括寄存器值和命令隊(duì)列數(shù)據(jù)。在一個(gè)實(shí)施例中,所述系統(tǒng)允許將硬件和軟件狀況發(fā)送到一個(gè)遠(yuǎn)程位置,比如協(xié)處理器供應(yīng)商的電子郵件地址。這提供了一個(gè)優(yōu)點(diǎn),即供應(yīng)商能夠接到有關(guān)其產(chǎn)品在一定范圍內(nèi)存在缺點(diǎn)的有價(jià)值信息,并且因此能夠較早地和更為詳細(xì)地認(rèn)識(shí)到與當(dāng)前技術(shù)相比的處理問(wèn)題。圖1例示了處理器100、協(xié)處理器102,和用于對(duì)協(xié)處理器進(jìn)行監(jiān)測(cè)和復(fù)位的電路 104、掛起檢測(cè)器模塊106、選擇性處理器復(fù)位模塊108、掛起通知信號(hào)110、和合適連接112, 該連接將所述協(xié)處理器102連接到所述處理器100。用于對(duì)協(xié)處理器102進(jìn)行監(jiān)測(cè)和復(fù)位的所述電路包括所述掛起器檢測(cè)模塊106和所述選擇性處理器復(fù)位模塊108。在此例中,用于對(duì)協(xié)處理器進(jìn)行監(jiān)測(cè)和復(fù)位的所述電路 104的形式是由處理器100執(zhí)行的一個(gè)或者多個(gè)軟件模塊,比如由所述協(xié)處理器104執(zhí)行的一個(gè)驅(qū)動(dòng)程序。用于對(duì)所述協(xié)處理器進(jìn)行監(jiān)測(cè)和復(fù)位的所述電路104包括所述掛起檢測(cè)器模塊106和所述選擇性處理器復(fù)位模塊108。所述掛起檢測(cè)器模塊106用于檢測(cè)協(xié)處理器中的掛起。所述掛起檢測(cè)器模塊106在一次努力中監(jiān)測(cè)協(xié)處理器102以識(shí)別在協(xié)處理器 102中何時(shí)發(fā)生一個(gè)掛起。例如,所述掛起檢測(cè)器模塊106可以周期地檢查所述協(xié)處理器 102以判斷其當(dāng)前是否被掛起。在一個(gè)實(shí)施例中,只有當(dāng)針對(duì)所述協(xié)處理器的新指令被發(fā)送時(shí),所述掛起檢測(cè)器模塊106才嘗試判斷所述協(xié)處理器102是否被掛起。在另一個(gè)實(shí)施例中,在獲知所述協(xié)處理器102已經(jīng)被分配執(zhí)行指令時(shí),所述掛起檢測(cè)器模塊106嘗試判斷所述協(xié)處理器102是否被掛起。例如,所述掛起檢測(cè)器模塊106檢查用于表明所述協(xié)處理器102當(dāng)前是否正在執(zhí)行指令的標(biāo)記,如果是正在執(zhí)行指令,那么所述同一掛起檢測(cè)器模塊106隨后檢查與所述協(xié)處理器102有關(guān)的相應(yīng)寄存器,以判斷在這些寄存器中,反映這些指令的實(shí)際執(zhí)行的活動(dòng)是否正在發(fā)生。在這樣的寄存器中的所述活動(dòng)或者缺少活動(dòng)之間的差異被檢測(cè)到的情況下,所述掛起檢測(cè)器模塊106隨后會(huì)向所述選擇性處理器復(fù)位模塊108返回一個(gè)掛起通知信號(hào)110,以表明在所述協(xié)處理器102中已經(jīng)檢測(cè)到一個(gè)掛起。在一個(gè)實(shí)施例中,更準(zhǔn)確地說(shuō),所述掛起檢測(cè)器模塊106首先進(jìn)行檢查以查看一個(gè)忙標(biāo)志是否被設(shè)定。如果所述“忙”標(biāo)志被判斷為未設(shè)定,所述掛起檢測(cè)器模塊106向所述選擇處理器復(fù)位模塊108返回一個(gè)無(wú)掛起通知信號(hào)(沒(méi)有顯示)。如果所述“忙”標(biāo)志被判斷為已經(jīng)設(shè)定,特定寄存器的狀況或者內(nèi)容會(huì)被審查并且被保存(這些通常用于監(jiān)測(cè)協(xié)處理器102的活動(dòng))。接著,允許經(jīng)過(guò)一等待周期,以允許所述特定寄存器中的活動(dòng)發(fā)生。再次,特定寄存器的狀況或者內(nèi)容會(huì)被保存,或者至少他們的內(nèi)容會(huì)被審查并用來(lái)發(fā)生比較。 最后,分別在等待周期任一側(cè)發(fā)生的所述寄存器的兩組內(nèi)容被比較。如果檢測(cè)到一個(gè)差別, 那么隨后向所述選擇性處理器復(fù)位模塊108發(fā)送無(wú)掛起通知信號(hào)(沒(méi)有顯示)。否則,如果檢測(cè)不到差別,所述掛起檢測(cè)器模塊106會(huì)向所述選擇性處理器復(fù)位模塊108返回一個(gè)掛起通知信號(hào)110。當(dāng)所述選擇性處理器復(fù)位模塊108接收到表明了協(xié)處理器102中已經(jīng)發(fā)生了一個(gè)掛起的掛起通知信號(hào)110時(shí),所述選擇處理器復(fù)位模塊108有選擇地復(fù)位所述協(xié)處理器 102而不復(fù)位所述處理器100。在一個(gè)實(shí)施例中,由所述選擇性處理器復(fù)位模塊108執(zhí)行的所述復(fù)位與上電和重新引導(dǎo)時(shí)執(zhí)行的復(fù)位完全相同。在這種實(shí)施例中,整個(gè)協(xié)處理器可能會(huì)被復(fù)位。在另外一個(gè)實(shí)施例中,被執(zhí)行的所述復(fù)位可以只包括通常在上電時(shí)復(fù)位的硬件的子集合的復(fù)位。在一個(gè)實(shí)施例中,多個(gè)子處理器(未顯示)與所述協(xié)處理器102相關(guān)聯(lián)。 在這種實(shí)施例中,所述復(fù)位在各個(gè)子處理器上執(zhí)行,而在另一個(gè)實(shí)施例中,只有所述子處理器的一個(gè)子集合被復(fù)位。與一個(gè)圖形處理器有關(guān)的這種子處理器的一個(gè)例子是二維渲染引擎,三維渲染引擎、三維像素管道等。在另一個(gè)實(shí)施例中,所述復(fù)位功能被稱(chēng)為多重定時(shí),如16定時(shí),以確保復(fù)位成功。 在另一個(gè)實(shí)施例中,被執(zhí)行的所述復(fù)位可以是通過(guò)模擬總線(xiàn)上的復(fù)位信號(hào)來(lái)對(duì)整個(gè)協(xié)處理器進(jìn)行的一種復(fù)位(如當(dāng)重新引導(dǎo)系統(tǒng)時(shí)執(zhí)行的復(fù)位)。在這種實(shí)施例中,一個(gè)特定值被寫(xiě)入外圍組件互連(PCI)地址空間的的特定位置。這種實(shí)施例提供了一個(gè)優(yōu)點(diǎn),即能執(zhí)行所有硬件掛起的復(fù)位,這些硬件掛起是可以被用于對(duì)協(xié)處理器進(jìn)行監(jiān)測(cè)和復(fù)位的所述電路 108檢測(cè)到。在另一個(gè)實(shí)施例中,被執(zhí)行的所述復(fù)位是這樣一種復(fù)位,即特別被設(shè)計(jì)來(lái)在所述掛起檢測(cè)器模塊106檢測(cè)到所述協(xié)處理器102中的一個(gè)掛起后執(zhí)行的復(fù)位。雖然在當(dāng)前實(shí)施例中,所述選擇處理器復(fù)位模塊108僅復(fù)位102,但是在另外一個(gè)實(shí)施例中,也可以對(duì)另外的處理器執(zhí)行復(fù)位。在一個(gè)實(shí)施例中,所述掛起檢測(cè)器模塊106由所述處理器100執(zhí)行。在另一個(gè)實(shí)施例中,所述處理器100為一個(gè)CPU。在一個(gè)實(shí)施例中,所述掛起檢測(cè)器模塊106檢測(cè)協(xié)處理器102中的一個(gè)掛起,并向所述選擇性處理器復(fù)位模塊108發(fā)送一個(gè)掛起通知信號(hào)110, 該掛起通知信號(hào)110表明一個(gè)掛起已被檢測(cè)到。在一個(gè)實(shí)施例中,所述選擇性處理器復(fù)位模塊108由所述處理器100執(zhí)行,且在允許所述處理器100繼續(xù)執(zhí)行用于對(duì)一個(gè)協(xié)處理器進(jìn)行監(jiān)測(cè)和復(fù)位的所述電路104的所述指令的同時(shí),對(duì)所述協(xié)處理器102執(zhí)行復(fù)位。在一個(gè)實(shí)施例中,所述協(xié)處理器102為一個(gè)圖形處理器,并且被圖形處理器執(zhí)行的指令為圖形渲染命令。所述圖形處理器包含一個(gè)忙標(biāo)志,以表明圖形處理器當(dāng)前是否正在執(zhí)行指令。在一個(gè)實(shí)施例中,所述圖形處理器具有被用來(lái)執(zhí)行圖形渲染指令的寄存器。為了判斷在圖形處理器中是否發(fā)生了一個(gè)掛起,所述掛起檢測(cè)器模塊106檢測(cè)所述忙標(biāo)志被設(shè)定且繼續(xù)檢查所述圖形處理器中的一個(gè)或者多個(gè)的所述活動(dòng),以確定其中的所述活動(dòng)是否代表圖形渲染命令的執(zhí)行。如果忙標(biāo)記和在圖形處理器寄存器中被觀察到的活動(dòng)之間存在差異,那么所述掛起檢測(cè)器模塊106將發(fā)送一個(gè)掛起通知信號(hào)110至所述選擇性處理器復(fù)位模塊108。所述選擇性處理器復(fù)位模塊108隨后將執(zhí)行所述圖形處理器的復(fù)位。在一個(gè)實(shí)施例中,如果所述忙標(biāo)記表明所述處理器非忙,那么所述系統(tǒng)就不檢查在相關(guān)寄存器中是否存在活動(dòng)。圖2顯示了一種方法200,其使用用于對(duì)協(xié)處理器進(jìn)行監(jiān)測(cè)和復(fù)位的所述電路 104。在步驟202中執(zhí)行開(kāi)始節(jié)點(diǎn)后,執(zhí)行步驟204,在步驟204中,所述系統(tǒng)檢測(cè)所述協(xié)處理器中的一個(gè)掛起。在一個(gè)實(shí)施例中,如同上述關(guān)于圖1的討論,通過(guò)識(shí)別與協(xié)處理器102 有關(guān)的忙標(biāo)志和所述相應(yīng)寄存器之間的差異,完成檢測(cè)所述協(xié)處理器102中的一個(gè)掛起的所述步驟。在這個(gè)實(shí)施例中,所述掛起檢測(cè)器模塊106判斷為一個(gè)忙標(biāo)記被設(shè)定但所述相應(yīng)寄存器中的所述活動(dòng)表明所述協(xié)處理器102被掛起。而且,如上所述,在一個(gè)實(shí)施例中, 當(dāng)所述一個(gè)新指令或多個(gè)新指令被發(fā)送給所述協(xié)處理器102時(shí),所述系統(tǒng)檢測(cè)所述協(xié)處理器102中的掛起。但是,在另一個(gè)實(shí)施例中,在所述忙標(biāo)志被設(shè)定的任何時(shí)刻,所述掛起檢測(cè)器模塊106識(shí)別所述協(xié)處理器中的一個(gè)掛起。在一個(gè)實(shí)施例中,只要所述忙標(biāo)記被設(shè)定, 所述檢測(cè)器模塊106會(huì)周期性地持續(xù)識(shí)別所述協(xié)處理器102中的掛起。一旦所述掛起檢測(cè)器模塊106檢測(cè)到一次掛起,所述掛起檢測(cè)器模塊106就向選擇性處理器復(fù)位模塊108發(fā)送掛起通知信號(hào)110。在步驟206中,在接收到表明所述協(xié)處理器被掛起的掛起通知信號(hào)110之后,所述選擇性處理器復(fù)位模塊108有選擇地對(duì)所述協(xié)處理器102進(jìn)行復(fù)位而不對(duì)所述處理器104 進(jìn)行復(fù)位。同樣,如同上述關(guān)于圖1的討論,未復(fù)位的所述處理器為正在執(zhí)行用于對(duì)協(xié)處理器進(jìn)行監(jiān)測(cè)和復(fù)位的所述電路104的所述處理器。在另一個(gè)實(shí)施例中,處理器104為主處理器或者CPU,且除了執(zhí)行用于對(duì)協(xié)處理器104進(jìn)行監(jiān)測(cè)和復(fù)位的所述電路之外,還執(zhí)行一個(gè)或者多個(gè)系統(tǒng)程序或者應(yīng)用程序。圖3例示了處理器100,協(xié)處理器102,用于對(duì)協(xié)處理器進(jìn)行監(jiān)測(cè)和復(fù)位的電路 104,掛起檢測(cè)器模塊106,選擇性處理器復(fù)位模塊108和合適連接112,該連接用于將協(xié)處理器102連接到處理器100。另外,可選的組件也被示出并用虛線(xiàn)表示,且包括中止通信模塊300,復(fù)位檢查模塊302,重啟通信模塊304,掛起通知信號(hào)110,復(fù)位通知信號(hào)306,復(fù)位成功通知信號(hào)308和操作系統(tǒng)310。在一個(gè)實(shí)施例中,響應(yīng)于從掛起檢測(cè)器模塊106處接收到表明所述協(xié)處理器102 中的掛起的掛起通知報(bào)告110,所述中止通信模塊300被用來(lái)中止與所述協(xié)處理器102的命令通信。響應(yīng)于接收到掛起通知信號(hào)110,所述中止通信模塊300停止向所述協(xié)處理器102 發(fā)送指令。在一個(gè)實(shí)施例中,這是通過(guò)當(dāng)所述中止通信模塊300把發(fā)送標(biāo)志設(shè)定為關(guān)以防止進(jìn)一步向所述協(xié)處理器102發(fā)送指令來(lái)實(shí)現(xiàn)的。在另一個(gè)實(shí)施例中,所述中止通信模塊 300把一個(gè)接收標(biāo)志設(shè)定為關(guān)以表明沒(méi)有從圖形處理器接收回任何東西,或者換句話(huà)說(shuō),在所述協(xié)處理器102上當(dāng)前沒(méi)有執(zhí)行懸掛指令,協(xié)處理器102將返回信號(hào)、數(shù)據(jù)等等。在另一個(gè)實(shí)施例中,所述發(fā)送標(biāo)志和接收標(biāo)志都被相應(yīng)地設(shè)定。然而,在另一個(gè)實(shí)施例中,所述接收標(biāo)志的功能被忙標(biāo)志代替,使得當(dāng)忙標(biāo)志被設(shè)定時(shí),可以認(rèn)為所述協(xié)處理器102將返回一個(gè)信號(hào)、數(shù)據(jù)等等,且在所述忙標(biāo)志為關(guān)時(shí),可以認(rèn)為協(xié)處理器102不會(huì)返回這種信息。 因而,在這個(gè)實(shí)施例中,所述選擇性處理器復(fù)位模塊108把所述忙標(biāo)志設(shè)定為關(guān),并復(fù)位所述協(xié)處理器102。響應(yīng)于從所述選擇性處理器復(fù)位模塊108接收到復(fù)位通知信號(hào)306,所述復(fù)位檢查模塊302判斷所述復(fù)位是否成功完成,并且如果成功完成,那么所述復(fù)位檢查模塊302產(chǎn)生復(fù)位成功通知信號(hào)308。在一個(gè)實(shí)施例中,所述復(fù)位成功通知信號(hào)308被發(fā)送給重啟通信模塊304。在一個(gè)實(shí)施例中,使用重啟通信模塊304。這里,所述重啟通信模塊304響應(yīng)于接收到復(fù)位成功通知信號(hào)308,重啟與協(xié)處理器102的命令通信。在一個(gè)實(shí)施例中,這是通過(guò)將發(fā)送標(biāo)志設(shè)定為開(kāi)來(lái)實(shí)現(xiàn)的(參考圖6)。在另一個(gè)實(shí)施例中,這是通過(guò)將發(fā)送標(biāo)志和接收標(biāo)志都設(shè)定為開(kāi)來(lái)實(shí)現(xiàn)的。但是,如同以上有關(guān)所述中止通信模塊300的討論,一個(gè)實(shí)施例將忙標(biāo)志設(shè)定為開(kāi),代替將接收標(biāo)志設(shè)定為開(kāi)。除了舉例說(shuō)明虛線(xiàn)中的三個(gè)可選步驟402、404、406和顯示在實(shí)線(xiàn)中的兩個(gè)必須步驟204、206,圖4還舉例說(shuō)明了與所述步驟204有關(guān)的兩個(gè)可選步驟限制408和410,和與步驟206有關(guān)的可選步驟限制412。這里,所述始節(jié)點(diǎn)和終節(jié)點(diǎn)202和208與圖2中顯示的相同。另外,所述步驟204和206表示與圖2中描述和顯示的同樣的步驟。在步驟402 中,所述系統(tǒng)響應(yīng)于檢測(cè)到所述協(xié)處理器中的一個(gè)掛起,中止與所述協(xié)處理器102的命令通信。在步驟404中,所述系統(tǒng)檢測(cè)所述協(xié)處理器102是否響應(yīng)于所述協(xié)處理器102的所述復(fù)位而已經(jīng)被成功復(fù)位。在步驟406中,所述系統(tǒng)響應(yīng)于檢測(cè)到所述協(xié)處理器已經(jīng)被成功復(fù)位,重啟與所述協(xié)處理器102的命令通信如步驟限制408中所示,步驟204被限制為通過(guò)檢測(cè)所述協(xié)處理器102的當(dāng)前狀態(tài)與所述協(xié)處理器102的當(dāng)前活動(dòng)之間的差異來(lái)檢測(cè)所述協(xié)處理器中的掛起。步驟限制 410對(duì)步驟限制408中引入的所述限制進(jìn)行進(jìn)一步的限制,使得可以利用檢測(cè)到當(dāng)前忙狀態(tài)和檢測(cè)到當(dāng)前活動(dòng)沒(méi)有進(jìn)展來(lái)檢測(cè)到差異,當(dāng)前忙狀態(tài)在忙標(biāo)記中反映出,當(dāng)前活動(dòng)沒(méi)有進(jìn)展在協(xié)處理器寄存器缺少活動(dòng)中反映出。步驟限制412限制步驟206使得操作系統(tǒng) 310在所述處理器100上執(zhí)行。圖5例示了用于對(duì)所述協(xié)處理器102進(jìn)行監(jiān)測(cè)和復(fù)位的系統(tǒng)500,其包括處理器 100,協(xié)處理器102,存儲(chǔ)器502,指令504,掛起檢測(cè)器模塊指令506,選擇性處理器復(fù)位模塊指令508,合適連接510,512,514和516,其位于所述存儲(chǔ)器502和所述處理器100、和協(xié)處理器設(shè)備102之間。此外,當(dāng)在協(xié)處理器102中檢測(cè)到掛起時(shí),所述掛起檢測(cè)器模塊指令 506產(chǎn)生所述掛起通知信號(hào)110給所述選擇處理器復(fù)位模塊指令508。如在此處使用的,存儲(chǔ)器可以為以下中任何一個(gè)隨機(jī)存儲(chǔ)器、只讀存儲(chǔ)器、光或磁存儲(chǔ)器,或者能夠存儲(chǔ)數(shù)字信息的任何合適存儲(chǔ)器。所述存儲(chǔ)器可以是系統(tǒng)處理器、可為系統(tǒng)訪問(wèn)的其他存儲(chǔ)器或協(xié)處理器的特定本地存儲(chǔ)器。所述指令集合504為適合在適當(dāng)處理器100上執(zhí)行的指令,其包括所述掛起檢測(cè)器模塊指令506和所述選擇性處理器復(fù)位模塊指令508。連接510,512,514和516,代表合適的電連接,其包括硬接線(xiàn)連接,橋接線(xiàn)或者總線(xiàn)等等。在一個(gè)實(shí)施例中,連接516表示主機(jī)總線(xiàn)。在圖5中說(shuō)明的所述系統(tǒng)的詳細(xì)操作與上面關(guān)于圖1和圖2的描述類(lèi)似。圖6例示了用于對(duì)協(xié)處理器102進(jìn)行監(jiān)測(cè)和復(fù)位的系統(tǒng)600,所述系統(tǒng)600包括在圖5中顯示的組件,除了把所述處理器100替換為主處理器602之外。在一個(gè)實(shí)施例中,所述主處理器為CPU。此外,下述可選指令模塊包括中止通信模塊指令604,功能檢查模塊指令606,復(fù)位檢查模塊指令608和重啟通信模塊指令610。在這個(gè)實(shí)施例中,協(xié)處理器102 包含忙標(biāo)志612和寄存器614。此外,存儲(chǔ)器502包含發(fā)送標(biāo)志616,接收標(biāo)志618和命令隊(duì)列620。如同上面關(guān)于圖1的描述,發(fā)送標(biāo)志616用于控制發(fā)送給所述協(xié)處理器102的信息。同樣如圖1所述,所述接收標(biāo)志618用于控制從所述協(xié)處理器102接收信息。通過(guò)執(zhí)行所述指令504,命令隊(duì)列620被填充。在操作中,當(dāng)發(fā)送標(biāo)志616為開(kāi)時(shí),指令504的執(zhí)行可以通過(guò)所述命令隊(duì)列620,自由發(fā)送給協(xié)處理器102。當(dāng)所述協(xié)處理器102準(zhǔn)備好執(zhí)行下一條指令時(shí),所述協(xié)處理器102從所述命令隊(duì)列620檢索所述下一條命令。因此,將發(fā)送標(biāo)志616設(shè)定為關(guān)可以防止所述指令504執(zhí)行來(lái)填充所述命令隊(duì)列620,因而,防止協(xié)處理器 102訪問(wèn)新的附加指令。如上面圖1所述,忙標(biāo)記612可以與寄存器614—起使用,以判斷所述協(xié)處理器當(dāng)前是否在經(jīng)歷一個(gè)掛起。同樣如上圖1所述,所述忙標(biāo)志612還可以作為接收標(biāo)志618使用。圖7例示了用于監(jiān)測(cè)和請(qǐng)求所述圖形處理器702的選擇性處理器復(fù)位的系統(tǒng)700, 除了用主處理器602代替所述協(xié)處理器104,用圖形處理器702代替所述協(xié)處理器102夕卜, 所述系統(tǒng)和圖5中示出的類(lèi)似。圖8例示了用于監(jiān)測(cè)和請(qǐng)求所述圖形處理器702的選擇性處理器復(fù)位的系統(tǒng)800,除了用一個(gè)圖形處理器702代替所述協(xié)處理器102,所述系統(tǒng)和圖6中示出的類(lèi)似。此外, 用所述圖形處理器忙標(biāo)志802和所述相應(yīng)圖形寄存器804代替所述協(xié)處理器忙標(biāo)志612和所述相應(yīng)寄存器614。圖9例示了用于監(jiān)視和請(qǐng)求圖形處理器702的選擇性處理器復(fù)位的系統(tǒng)900。除了所述存儲(chǔ)器502還包括圖形命令隊(duì)列902和八個(gè)附加指令模塊外,圖9中的系統(tǒng)與圖8 的系統(tǒng)類(lèi)似。所述八個(gè)新的指令模塊包括所述顯示模式切換模塊指令904,所述軟件渲染模塊指令906,所述掛起已解決提示模塊指令908,所述報(bào)告發(fā)送提示模塊指令910,所述報(bào)告發(fā)送模塊指令912,所述掛起未被解決提示模塊指令914,所述功能檢查模塊指令606和所述保存瞬像模塊指令915。同樣與圖8不同的是,所述復(fù)位檢查模塊指令608,所述中止通信模塊指令604和所述重啟通信模塊指令610不是可選的。所述顯示模式切換模塊指令904響應(yīng)于接收到復(fù)位通知信號(hào)306而進(jìn)行操作,以執(zhí)行顯示模式切換。顯示模式切換是發(fā)送一個(gè)請(qǐng)求到主系統(tǒng),請(qǐng)求刷新在顯示器上的所有窗口。在一個(gè)實(shí)施例中,如果有多個(gè)子處理器(未顯示),所述顯示模塊切換模塊指令904 運(yùn)行來(lái)導(dǎo)致只有所述子處理器的一個(gè)子集合被復(fù)位。所述軟件渲染模塊指令906響應(yīng)于檢測(cè)到功能失敗通知信號(hào)916或者復(fù)位失敗通知信號(hào)918而進(jìn)行操作,使得執(zhí)行到軟件渲染模式的動(dòng)態(tài)切換。到軟件渲染模式的動(dòng)態(tài)切換的調(diào)用,導(dǎo)致系統(tǒng)依照軟件渲染模式運(yùn)行,在這種模式中,所述系統(tǒng)允許用戶(hù)在執(zhí)行圖形處理器重新引導(dǎo)之前,保存其工作。掛起已解決提示模塊指令908響應(yīng)于功能成功通知信號(hào)920而執(zhí)行,使得顯示用于表明一個(gè)掛起被檢測(cè)到并被解決的提示。一個(gè)實(shí)施例中不包括所述掛起已解決提示模塊908,并且同樣不執(zhí)行顯不。報(bào)告發(fā)送提示模塊指令910響應(yīng)掛起通知信號(hào)110而進(jìn)行操作。顯示請(qǐng)求來(lái)自用戶(hù)的關(guān)于用戶(hù)是否希望將錯(cuò)誤報(bào)告發(fā)送到遠(yuǎn)程位置的輸入的提示。在一個(gè)實(shí)施例中,所述遠(yuǎn)程位置為設(shè)計(jì)和擁有正在運(yùn)行和試圖運(yùn)行在所述圖形處理器上的應(yīng)用程序的供應(yīng)商。在一個(gè)實(shí)施例中,報(bào)告中包括的信息包括以上參照?qǐng)D3討論的硬件和軟件的狀況信息。報(bào)告發(fā)送模塊指令912響應(yīng)于發(fā)送請(qǐng)求通知信號(hào)922而進(jìn)行操作,所述發(fā)送請(qǐng)求通知信號(hào)922 是響應(yīng)于將報(bào)告發(fā)送給遠(yuǎn)程位置的請(qǐng)求而發(fā)送的。報(bào)告發(fā)送模塊指令912向遠(yuǎn)程位置發(fā)送包括硬件和軟件狀況的錯(cuò)誤報(bào)告。接著,掛起未解決提示模塊指令914響應(yīng)于初始由所述復(fù)位檢查模塊608產(chǎn)生的復(fù)位失敗報(bào)告信號(hào)918而進(jìn)行操作,(或者響應(yīng)由所述功能檢查模塊指令606產(chǎn)生的功能失敗通知信號(hào)916而進(jìn)行操作),所述掛起未解決提示模塊914生成一個(gè)提示,該提示表示掛起被檢測(cè)到且在沒(méi)有復(fù)位主處理器的情況下不能解決。在一個(gè)實(shí)施例中,缺少掛起未解決提示模塊914,并且同樣,不執(zhí)行顯示。在一個(gè)實(shí)施例中,在使用功能檢查模塊指令606,并響應(yīng)于接收到復(fù)位通知信號(hào) 306來(lái)判斷協(xié)處理器是否完全起作用的情況下,所述功能檢查模塊指令606判斷所述圖形處理器702是否完全起作用。如果完全起作用,功能檢查模塊指令606產(chǎn)生被發(fā)送給重啟通信模塊指令610的功能成功通知信號(hào)920,該重啟通信模塊指令隨后只執(zhí)行圖形處理器 702的重啟。在另一個(gè)實(shí)施例中,功能檢查模塊指令606產(chǎn)生將由掛起已解決提示模塊指令 908處理的功能成功通知信號(hào)920。在另一個(gè)實(shí)施例中,功能檢查模塊指令606產(chǎn)生將由軟件渲染模塊指令906處理的功能失敗通知信號(hào)916。在一個(gè)實(shí)施例中,功能檢查模塊指令606執(zhí)行判斷協(xié)處理器102是否已被完全復(fù)位的功能。這是通過(guò)如下來(lái)完成的,即發(fā)送一個(gè)或者多個(gè)指令到協(xié)處理器102,以指示其將數(shù)據(jù)從一個(gè)存儲(chǔ)單元復(fù)制到另一個(gè)存儲(chǔ)單元,并比較在兩個(gè)單元中存儲(chǔ)的數(shù)據(jù)以判斷復(fù)制命令是否被成功執(zhí)行。這里,重要的是協(xié)處理器 102執(zhí)行一個(gè)操作,對(duì)該操作的結(jié)果進(jìn)行分析以判斷操作是否被成功執(zhí)行。在一個(gè)實(shí)施例中,如果復(fù)位成功通知信號(hào)308已經(jīng)由復(fù)位檢查模塊指令302產(chǎn)生, 那么僅僅調(diào)用功能檢查模塊指令606。同樣,在這種實(shí)施例中,如果檢測(cè)到協(xié)處理器102的成功復(fù)位,那么僅僅執(zhí)行功能檢查模塊指令606。在一個(gè)實(shí)施例中,如果處理器被判斷為沒(méi)有完全起作用,那么CPU接管圖形處理器渲染的工作。在這種情況下,圖形加速被丟棄,由在CPU上執(zhí)行的非加速圖形渲染取代。保存瞬像模塊指令915用來(lái)保存與所述協(xié)處理器102有關(guān)的硬件和軟件的一個(gè)瞬像。響應(yīng)于接收到從掛起檢查模塊指令506產(chǎn)生的掛起通知信號(hào)110,產(chǎn)生瞬像。在一個(gè)實(shí)施例中,硬件和軟件狀況包括與協(xié)處理器102相關(guān)的寄存器數(shù)據(jù),與協(xié)處理器102相關(guān)的圖形命令隊(duì)列,芯片信息,AGP端口信息。硬件和軟件的瞬像用來(lái)捕獲與所述協(xié)處理器操作有關(guān)的數(shù)據(jù),以便對(duì)這種數(shù)據(jù)的分析有益于調(diào)試協(xié)處理器為何會(huì)經(jīng)受掛起的原因。圖10示出了詳細(xì)描述特定實(shí)施例的操作的流程圖1000。所述過(guò)程開(kāi)始于節(jié)點(diǎn) 1001。接著,在步驟1102中,系統(tǒng)嘗試檢測(cè)協(xié)處理器102中的掛起。在步驟1004中,系統(tǒng)嘗試判斷協(xié)處理器102的檢測(cè)是否表明被掛起。如果不是掛起,那么系統(tǒng)返回到步驟1002, 否則系統(tǒng)繼續(xù)到步驟1006,其中系統(tǒng)中止與協(xié)處理器102的渲染命令通信。在步驟1006之后,步驟1008保存硬件和軟件狀況的一個(gè)瞬像。步驟1008之后是步驟1010,在步驟1010, 系統(tǒng)有選擇地復(fù)位協(xié)處理器102,而并不復(fù)位處理器104。步驟1010之后是步驟1012,在步驟1012,系統(tǒng)檢測(cè)協(xié)處理器102是否已經(jīng)成功被復(fù)位。步驟1014然后執(zhí)行顯示模式切換。執(zhí)行步驟1016,在該步驟中,系統(tǒng)判斷協(xié)處理器102是否已經(jīng)成功被復(fù)位。如果檢測(cè)為所述協(xié)處理器還沒(méi)有成功地復(fù)位,那么開(kāi)始一個(gè)即將被討論的過(guò)程,在該過(guò)程中,系統(tǒng)將需要被重啟。如果系統(tǒng)檢測(cè)到所述協(xié)處理器102被成功復(fù)位,那么執(zhí)行步驟1018,在步驟 1018,系統(tǒng)檢測(cè)協(xié)處理器102是否完全起作用。接下來(lái)是步驟1020,在步驟1020,系統(tǒng)判斷協(xié)處理器102是否完全起作用或者沒(méi)有完全起作用。如果系統(tǒng)沒(méi)有完全起作用,那么終止于系統(tǒng)重啟的過(guò)程重新被跟隨。否則,如果系統(tǒng)被發(fā)現(xiàn)完全起作用,那么執(zhí)行步驟1022。在步驟1022中,系統(tǒng)重啟與協(xié)處理器102的渲染命令通信。隨后是步驟1024,在步驟1024, 系統(tǒng)顯示掛起被檢測(cè)和已解決的提示。接著,在步驟10 中,系統(tǒng)顯示請(qǐng)求用戶(hù)是否希望將錯(cuò)誤報(bào)告發(fā)送到遠(yuǎn)程位置的提示。在步驟10 中,系統(tǒng)判斷是否要發(fā)送一個(gè)錯(cuò)誤報(bào)告。如果判斷為錯(cuò)誤報(bào)告沒(méi)有被請(qǐng)求,那么系統(tǒng)返回到步驟1002中的過(guò)程。如果報(bào)告被請(qǐng)求,那么在步驟1030中,包括硬件和軟件狀況的報(bào)告被發(fā)送到遠(yuǎn)程位置。在步驟1030后,系統(tǒng)返回到步驟1002,在步驟1002, 系統(tǒng)再次嘗試檢測(cè)協(xié)處理器中的新的掛起。響應(yīng)于在步驟1016中檢測(cè)到協(xié)處理器不是完全復(fù)位或者在步驟1020中判斷協(xié)處理器沒(méi)有完全起作用,系統(tǒng)進(jìn)行到節(jié)點(diǎn)A,節(jié)點(diǎn)A是在必須重啟相應(yīng)處理器的序列中的第一個(gè)步驟。在圖11中,節(jié)點(diǎn)A被示出,接著是步驟1100,1102,1104,1106,1108,和最后節(jié)點(diǎn) 1110。在步驟1100,系統(tǒng)執(zhí)行軟件渲染方式的動(dòng)態(tài)切換。步驟1100之后是步驟1102,其中系統(tǒng)顯示掛起被檢測(cè)且在沒(méi)有執(zhí)行系統(tǒng)復(fù)位的情況下不能被解決的提示。步驟1102之后是步驟1104,其中系統(tǒng)執(zhí)行對(duì)請(qǐng)求用戶(hù)是否希望發(fā)送一個(gè)錯(cuò)誤報(bào)告給一個(gè)遠(yuǎn)程位置的提示的顯示。在步驟1106中,用戶(hù)的響應(yīng)被分析,并且如果請(qǐng)求被拒絕,那么系統(tǒng)進(jìn)行到步驟 1110,在步驟1110中,重啟是必需的,否則,如果一個(gè)報(bào)告被請(qǐng)求,那么包括硬件和/或軟件狀況的錯(cuò)誤報(bào)告被發(fā)送到一個(gè)遠(yuǎn)程位置。在發(fā)送報(bào)告之后,系統(tǒng)進(jìn)行步驟1110,在步驟 1110中,隨后將需要重新引導(dǎo)。 應(yīng)該理解的是,對(duì)于本領(lǐng)域的技術(shù)人員而言,本發(fā)明其他變化和修改的實(shí)現(xiàn)以及其各個(gè)方面是顯而易見(jiàn)的,且本發(fā)明并不局限于所描述的具體實(shí)施例。例如,可以按照任何合適的順序來(lái)執(zhí)行上述步驟。因此,期望的是,本發(fā)明包括落在這里公開(kāi)和要求的基本原理的精神和范圍內(nèi)的所有修改、變形或等價(jià)物。
權(quán)利要求
1.一種用于監(jiān)測(cè)和復(fù)位協(xié)處理器的裝置,包括掛起檢測(cè)器模塊,用于檢測(cè)所述協(xié)處理器中的掛起;和選擇性處理器復(fù)位模塊,用于響應(yīng)于檢測(cè)到所述協(xié)處理器中的掛起,有選擇地復(fù)位所述協(xié)處理器,而不復(fù)位處理器,其中所述掛起檢測(cè)器模塊通過(guò)檢測(cè)所述協(xié)處理器的當(dāng)前狀態(tài)并確定所述協(xié)處理器的活動(dòng)之間的差異來(lái)檢測(cè)所述協(xié)處理器中的所述掛起。
2.如權(quán)利要求1所述的裝置,其中,操作系統(tǒng)在所述處理器上執(zhí)行。
3.如權(quán)利要求1所述的裝置,其中,所述掛起檢測(cè)器模塊通過(guò)確定所述當(dāng)前狀態(tài)是表明是否執(zhí)行掛起檢測(cè)的狀態(tài)并且在等待周期的任一側(cè)確定與所述協(xié)處理器相關(guān)聯(lián)的相應(yīng)寄存器內(nèi)的數(shù)據(jù)之間的差異,來(lái)檢測(cè)所述協(xié)處理器的活動(dòng)之間的差異,其中在所述相應(yīng)寄存器內(nèi)的數(shù)據(jù)表示所述協(xié)處理器的活動(dòng)。
4.如權(quán)利要求3的裝置,其中所述掛起檢測(cè)器模塊還用于確定所述相應(yīng)寄存器內(nèi)的數(shù)據(jù)是否反映了所述協(xié)處理器對(duì)指令的處理。
5.如權(quán)利要求3的裝置,其中所述協(xié)處理器的當(dāng)前狀態(tài)是由存儲(chǔ)在與所述協(xié)處理器相關(guān)聯(lián)的所述相應(yīng)寄存器內(nèi)的數(shù)據(jù)表示的。
6.如權(quán)利要求3所述的裝置,其中,通過(guò)檢測(cè)到所述當(dāng)前狀態(tài)為忙和檢測(cè)到當(dāng)前活動(dòng)上沒(méi)有進(jìn)展而檢測(cè)到所述差異,其中通過(guò)檢測(cè)到忙標(biāo)志被設(shè)定而檢測(cè)到所述當(dāng)前狀態(tài)為忙,通過(guò)檢測(cè)在等待周期之前和之后檢查的協(xié)處理器寄存器中具有相同內(nèi)容而檢測(cè)到當(dāng)前活動(dòng)上沒(méi)有進(jìn)展。
7.如權(quán)利要求1的所述的裝置,還包括中止通信模塊,用于響應(yīng)于檢測(cè)到所述協(xié)處理器中的掛起,中止與所述協(xié)處理器的命令通信;復(fù)位檢查模塊,用于響應(yīng)于對(duì)所述協(xié)處理器進(jìn)行所述復(fù)位,檢測(cè)所述協(xié)處理器是否已經(jīng)被成功復(fù)位;以及重啟通信模塊,用于響應(yīng)于檢測(cè)到所述協(xié)處理器已經(jīng)被成功復(fù)位,重啟與所述協(xié)處理器的命令通信。
8.如權(quán)利要求1的所述的裝置,其中,所述處理器為主處理器,且所述協(xié)處理器為圖形處理器。
9.一種用于監(jiān)測(cè)和復(fù)位協(xié)處理器的方法,包括步驟檢測(cè)所述協(xié)處理器中的掛起;且響應(yīng)于檢測(cè)到所述協(xié)處理器中的掛起,有選擇地復(fù)位所述協(xié)處理器,而不復(fù)位處理器;其中檢測(cè)所述協(xié)處理器中的掛起包括檢測(cè)所述協(xié)處理器的當(dāng)前狀態(tài)和確定所述協(xié)處理器的活動(dòng)之間的差異。
10.如權(quán)利要求9的方法,其中確定所述協(xié)處理器的活動(dòng)之間的差異包括在等待周期任一側(cè)檢測(cè)與所述協(xié)處理器相關(guān)聯(lián)的相應(yīng)寄存器內(nèi)的數(shù)據(jù)之間的差異,其中在所述相應(yīng)寄存器內(nèi)的數(shù)據(jù)表示所述協(xié)處理器的當(dāng)前活動(dòng)。
11.如權(quán)利要求10的方法,還包括確定所述相應(yīng)寄存器內(nèi)的數(shù)據(jù)是否反映了所述協(xié)處理器對(duì)指令的處理。
12.如權(quán)利要求10的方法,其中所述協(xié)處理器的當(dāng)前狀態(tài)是由存儲(chǔ)在與所述協(xié)處理器相關(guān)聯(lián)的所述相應(yīng)寄存器內(nèi)的數(shù)據(jù)表示的。
13.如權(quán)利要求9所述的方法,其中,通過(guò)檢測(cè)到所述當(dāng)前狀態(tài)為忙和檢測(cè)到當(dāng)前活動(dòng)上沒(méi)有進(jìn)展而檢測(cè)到所述差異,其中通過(guò)檢測(cè)到忙標(biāo)志被設(shè)定而檢測(cè)到所述當(dāng)前狀態(tài)為忙,通過(guò)檢測(cè)在等待周期之前和之后檢查的協(xié)處理器寄存器中具有相同內(nèi)容而檢測(cè)到當(dāng)前活動(dòng)上沒(méi)有進(jìn)展。
14.如權(quán)利要求9所述的方法,其中,操作系統(tǒng)在所述處理器上執(zhí)行。
15.如權(quán)利要求9所述的方法,還包括步驟響應(yīng)于檢測(cè)到所述協(xié)處理器中的掛起,中止與所述協(xié)處理器的命令通信; 響應(yīng)于對(duì)所述協(xié)處理器進(jìn)行復(fù)位,檢測(cè)所述協(xié)處理器是否已經(jīng)被成功復(fù)位;以及響應(yīng)于檢測(cè)到所述協(xié)處理器已經(jīng)被成功復(fù)位,重啟與所述協(xié)處理器的命令通信。
全文摘要
一種電路監(jiān)測(cè)和復(fù)位協(xié)處理器,所述電路包括掛起檢測(cè)器模塊,用于檢測(cè)協(xié)處理器中的掛起。所述電路還包括選擇性處理器復(fù)位模塊,用于響應(yīng)于檢測(cè)到所述協(xié)處理器中的掛起,有選擇地復(fù)位所述協(xié)處理器,而不復(fù)位處理器。
文檔編號(hào)G06F11/14GK102193840SQ20111012881
公開(kāi)日2011年9月21日 申請(qǐng)日期2004年9月20日 優(yōu)先權(quán)日2003年9月26日
發(fā)明者程公先, 蔣依南, 陳興邦 申請(qǐng)人:Ati技術(shù)無(wú)限責(zé)任公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1