專利名稱:多處理器延遲執(zhí)行的制作方法
技術(shù)領(lǐng)域:
本公開一般涉及程序代碼在多個處理器上的延遲執(zhí)行。
背景技術(shù):
實(shí)現(xiàn)步調(diào)一致的處理包含布置兩個相同的處理器以并排執(zhí)行,其中,一個處理器在與另一個處理器相同的情況下執(zhí)行。步調(diào)一致的處理的實(shí)現(xiàn)可以包含:在系統(tǒng)啟動期間將每一個處理器初始化為相同的狀態(tài),并且向每一個處理器提供相同的輸入(代碼、總線操作和異步事件),使得每一個處理器可以基于時鐘信號在正常的執(zhí)行期間在相同的情況下執(zhí)行。步調(diào)一致的處理可以用于通過檢測源自在步調(diào)一致的系統(tǒng)中監(jiān)控的處理器的狀態(tài)的比較的差別,來檢測在處理器的任何一個中的錯誤。步調(diào)一致的處理用于在其中一個處理器可以監(jiān)控和驗(yàn)證另一個處理器的操作的微處理器系統(tǒng)中實(shí)現(xiàn)高可靠性。一些系統(tǒng)使用延遲的步調(diào)一致處理,其中,在比較兩個處理器的輸出之前,一個處理器的執(zhí)行被延遲,并且實(shí)現(xiàn)另一個處理的輸出的對應(yīng)延遲。這樣的延遲的步調(diào)一致處理器架構(gòu)可以提供用于檢測諸如與公共時鐘或電源電壓相關(guān)聯(lián)的芯片操作溫度或電壓降的非確定類型的故障的方法。
發(fā)明內(nèi)容
在一個特定實(shí)施例中,一種方法可以包括:在第一先入先出(FIFO)存儲器處從包括第一處理器的第一處理器組接收第一處理器輸入。所述第一處理器組可以被配置為基于所述第一處理器輸入執(zhí)行程序代碼,所述第一處理器輸入包括一組輸入信號、時鐘信號和用于執(zhí)行所述程序代碼的對應(yīng)數(shù)據(jù)。所述方法可以包括:在所述第一 FIFO存儲器處存儲所述第一處理器輸入。所述第一 FIFO存儲器可以連接到第二處理器。所述方法可以進(jìn)一步包括:根據(jù)第一延遲從所述第一 FIFO存儲器向第二 FIFO存儲器和第二處理器輸出所述第一處理器輸入。所述方法可以包括:響應(yīng)于所述第一處理器輸入而在所述第二處理器處執(zhí)行所述程序代碼的至少第一部分。所述方法也可以包括:在所述第二 FIFO存儲器處存儲所述第一處理器輸入。所述第二 FIFO存儲器可以連接到第三處理器。所述方法可以進(jìn)一步包括:根據(jù)第二延遲從所述第二FIFO存儲器向第三處理器輸出所述第一處理器輸入??梢皂憫?yīng)于所述第一處理器輸入,在所述第三處理器處執(zhí)行所述程序代碼的至少第二部分。在另一個特定實(shí)施例中,一種系統(tǒng)包括:第一 FIFO存儲器,其可以被配置為從可以包括第一處理器的第一處理器組接收第一處理器輸入。所述第一處理器輸入可以包括一組輸入信號、時鐘信號和用于通過所述第一處理器執(zhí)行所述程序代碼的對應(yīng)數(shù)據(jù)。所述第一 FIFO存儲器可以包括用于存儲所述第一處理器輸入并且向第二 FIFO存儲器和向第二處理器輸出所述第一處理器輸入的邏輯。所述第一 FIFO存儲器可以根據(jù)第一延遲向第二處理器輸出所述第一處理器輸入。所述第二處理器可以連接到所述第一 FIFO存儲器,并且可以被配置為響應(yīng)于所述第一處理器輸入而執(zhí)行所述程序代碼的至少第一部分。所述第二FIFO存儲器可以包括用于存儲所述第一處理器輸入并且根據(jù)第二延遲向第三處理器輸出所述第一處理器輸入的邏輯。第三處理器可以連接到所述第二 FIFO存儲器。所述第三處理器可以被配置為響應(yīng)于所述第一處理器輸入而執(zhí)行所述程序代碼的至少第二部分。在另一個特定實(shí)施例中,一種可裝卸計算機(jī)卡可以包括接口,所述接口可以連接到計算機(jī)系統(tǒng)板的擴(kuò)展槽。所述可裝卸計算機(jī)卡也可以包括第一 FIFO存儲器,所述第一FIFO存儲器可以被配置為從可以包括第一處理器的第一處理器組接收第一處理器輸入。所述第一處理器輸入可以包括一組輸入信號、時鐘信號和用于通過所述第一處理器執(zhí)行程序代碼的對應(yīng)數(shù)據(jù)。所述第一處理器組可以位于所述計算機(jī)系統(tǒng)板上。所述第一FIFO存儲器可以包括用于存儲所述第一處理器輸入并且向第二 FIFO存儲器和第二處理器輸出所述第一處理器輸入的邏輯。所述第二處理器可以連接到所述第一 FIFO存儲器。所述第一 FIFO存儲器可以根據(jù)第一延遲向所述第二處理器輸出所述第一處理器輸入。所述第二處理器可以被配置為響應(yīng)于所述第一處理器輸入執(zhí)行所述程序代碼的至少第一部分。所述第二 FIFO存儲器可以包括用于存儲所述第一處理器輸入并且根據(jù)第二延遲向第三處理器輸出所述第一處理器輸入的邏輯。第三處理器可以連接到所述第二 FIFO存儲器,并且可以被配置為響應(yīng)于所述第一處理器輸入執(zhí)行所述程序代碼的至少第二部分。在所列出的權(quán)利要求中給出了表征本公開的實(shí)施例的本公開的這些和其他優(yōu)點(diǎn)和特征。然而,為了更好地理解本公開和通過其使用獲得的優(yōu)點(diǎn)和目的,應(yīng)當(dāng)參考附圖和伴隨的說明事項(xiàng),其中描述了本公開的示例性實(shí)施例。
圖1是一種系統(tǒng)的第一特定實(shí)施例的系統(tǒng)圖,該系統(tǒng)根據(jù)延遲并且響應(yīng)于來自第一處理器組的輸入,在第二處理器和第三處理器上執(zhí)行程序代碼。圖2是一種方法的第一特定實(shí)施例的流程圖,該方法根據(jù)延遲并且響應(yīng)于來自第一處理器組的輸入,在第二處理器和第三處理器上執(zhí)行程序代碼。圖3是一種方法的第二特定實(shí)施例的流程圖,該方法根據(jù)延遲并且響應(yīng)于來自第一處理器組的輸入,在第二處理器和第三處理器上執(zhí)行程序代碼。該第二特定實(shí)施例包括在程序代碼的執(zhí)行期間檢測指示符。圖4是一種方法的第三特定實(shí)施例的流程圖,該方法根據(jù)延遲并且響應(yīng)于來自第一處理器組的輸入,在第二處理器和第三處理器上執(zhí)行程序代碼。該第三特定實(shí)施例包括檢測與程序代碼的執(zhí)行相關(guān)的事件的出現(xiàn)。圖5是一種系統(tǒng)的第二特定實(shí)施例的方框圖,該系統(tǒng)根據(jù)延遲并且響應(yīng)于來自第一處理器組的輸入,在第二處理器和第三處理器上執(zhí)行程序代碼。圖6是一種系統(tǒng)的第三特定實(shí)施例的系統(tǒng)圖,該系統(tǒng)根據(jù)延遲并且響應(yīng)于來自第一處理器組的輸入,在第二處理器和第三處理器上執(zhí)行程序代碼。圖7是一種方法的第四特定實(shí)施例的系統(tǒng)圖,該方法根據(jù)延遲并且響應(yīng)于來自第一處理器組的輸入,在第二處理器和第三處理器上執(zhí)行程序代碼。圖8是一種系統(tǒng)的第四特定實(shí)施例的方框圖,該系統(tǒng)根據(jù)延遲并且響應(yīng)于來自第一處理器組的輸入,在第二處理器和第三處理器上執(zhí)行程序代碼。圖9是一種系統(tǒng)的第四特定實(shí)施例的系統(tǒng)圖,該系統(tǒng)根據(jù)延遲并且響應(yīng)于來自第一處理器組的輸入,在第二處理器和第三處理器上執(zhí)行一組指令。
具體實(shí)施例方式包括多個處理器的計算機(jī)系統(tǒng)可以被實(shí)現(xiàn)為在使用單組計算機(jī)系統(tǒng)資源的同時,根據(jù)延遲在每一個處理器上執(zhí)行計算機(jī)程序。例如,測試者可以通過下述方式來調(diào)試計算機(jī)系統(tǒng):在具有多個處理器的計算機(jī)系統(tǒng)上執(zhí)行計算機(jī)程序代碼,每一個處理器能夠使用在計算機(jī)系統(tǒng)中可獲得的單組計算機(jī)系統(tǒng)資源,根據(jù)延遲來執(zhí)行計算機(jī)程序代碼。該計算機(jī)系統(tǒng)的實(shí)現(xiàn)可以包括計算機(jī)系統(tǒng)板,該計算機(jī)系統(tǒng)板包括處理器組和用于連接計算機(jī)卡的輸入/輸出連接槽。處理器組可以包括一個處理器和可以存儲計算機(jī)程序代碼的一個存儲器。當(dāng)執(zhí)行計算機(jī)程序代碼時,處理器組可以接收包括輸入信號、時鐘信號和處理器組響應(yīng)于其而執(zhí)行計算機(jī)程序代碼的對應(yīng)數(shù)據(jù)的一組輸入。計算機(jī)卡可以可操作地連接到計算機(jī)系統(tǒng)板的擴(kuò)展槽。在處理器組基于該組輸入執(zhí)行計算機(jī)程序代碼之前、期間或之后,可以向計算機(jī)卡輸出該組輸入。計算機(jī)卡可以包括兩個先入先出(FIFO)存儲器處理器對,其中,每一個第一 FIFO存儲器處理器對包括處理器和第一 FIFO存儲器。第一 FIFO存儲器處理器對的第一 FIFO存儲器可以存儲該組輸入,并且可以根據(jù)第一延遲向第一 FIFO存儲器處理器對的處理器和第二 FIFO存儲器處理器對的第一 FIFO存儲器輸出該組輸入。第一 FIFO存儲器處理器對的處理器可以響應(yīng)于該組輸入而執(zhí)行計算機(jī)程序代碼。第二 FIFO存儲器處理器對的第一 FIFO存儲器可以存儲該組輸入,并且可以根據(jù)第二延遲向第二 FIFO存儲器處理器對的處理器輸出該組輸入。第二 FIFO存儲器處理器對的處理器可以響應(yīng)于該組輸入來執(zhí)行計算機(jī)程序代碼。通過將計算機(jī)卡連接到計算機(jī)系統(tǒng)板,在計算機(jī)卡上的第一 FIFO存儲器處理器對的處理器和第二 FIFO存儲器處理器對的處理器可以根據(jù)從處理器組接收的該組輸入執(zhí)行計算機(jī)程序代碼。然而,第一 FIFO存儲器處理器對的處理器和第二 FIFO存儲器處理器對的處理器可以執(zhí)行計算機(jī)程序代碼,而不訪問在計算機(jī)系統(tǒng)板上可獲得的該組資源。在計算機(jī)卡上的處理器的每一個上的計算機(jī)程序代碼的執(zhí)行中的延遲可以允許人們通過監(jiān)控在程序代碼執(zhí)行期間的結(jié)果來檢測在程序代碼執(zhí)行中的錯誤。參見圖1,描述了根據(jù)延遲并且響應(yīng)于來自第一處理器組的輸入,在第二處理器和第三處理器上執(zhí)行程序代碼的計算機(jī)系統(tǒng)的第一特定實(shí)施例的系統(tǒng)圖,并且被一般地指定為100。計算機(jī)系統(tǒng)100包括使用由第一處理器共享的輸入、根據(jù)時延來執(zhí)行程序代碼的多個處理器。計算機(jī)系統(tǒng)100可以包括計算機(jī)系統(tǒng)板110,計算機(jī)系統(tǒng)板110可以包括第一處理器組112。第一處理器組112可以包括連接到存儲器116的第一處理器114。雖然計算機(jī)系統(tǒng)100包括具有單個處理器組(即,第一處理器組112)的單個計算機(jī)系統(tǒng)板(即,計算機(jī)系統(tǒng)板110)。但是可以基于處理考慮來增加和配置計算機(jī)處理板和處理器組的數(shù)量。第一處理器組112可以被配置為根據(jù)第一處理器輸入124執(zhí)行程序代碼118。第一處理器輸入124可以包括一組輸入信號、時鐘信號和由第一處理器組112利用來執(zhí)行程序代碼118的對應(yīng)數(shù)據(jù)。第一處理器114可以是多核處理器、單指令多數(shù)據(jù)處理器、可配置單指令多數(shù)據(jù)或另一種處理器。存儲器116可以駐留在第一處理器組112內(nèi),并且可以被配置為存儲程序代碼118。替代地,計算機(jī)系統(tǒng)板110可以具有主系統(tǒng)存儲器(未示出),該主系統(tǒng)存儲器可以被配置為存儲程序代碼118,使得第一處理器組112能夠訪問程序代碼118。替代地,存儲器116可以是與第一處理器114相關(guān)聯(lián)或位于第一處理器114上的高速緩存。程序代碼118可以是可由第一處理器114執(zhí)行的硬件試驗(yàn)程序或另一組指令。計算機(jī)系統(tǒng)板110可以包括支持到可裝卸計算機(jī)卡130 (例如,實(shí)驗(yàn)室測試計算機(jī)卡)的連接122的擴(kuò)展槽120。計算機(jī)系統(tǒng)板110可以根據(jù)所使用的計算機(jī)系統(tǒng)板的類型而進(jìn)一步包括另外的擴(kuò)展槽(未示出)。計算機(jī)系統(tǒng)板110可以包括端口 126,端口 126可以被配置為使得另一個計算機(jī)系統(tǒng)能夠訪問或配置計算機(jī)系統(tǒng)板110。在一個實(shí)施例中,當(dāng)?shù)诙嬎銠C(jī)系統(tǒng)180 (例如,計算機(jī)實(shí)驗(yàn)室測試站或計算機(jī)測試系統(tǒng))可操作地經(jīng)由端口 126連接(164)到計算機(jī)系統(tǒng)板110時,第二計算機(jī)系統(tǒng)180可以訪問計算機(jī)系統(tǒng)板110,以訪問第一處理器114、存儲器116或計算機(jī)系統(tǒng)板110的系統(tǒng)信息。該系統(tǒng)信息可以用于檢查在程序代碼118的執(zhí)行期間在第一處理器114遇到故障點(diǎn)的時間或附近的第一處理器114的狀態(tài)。例如,該系統(tǒng)信息可以包括總線軌跡、掃描轉(zhuǎn)儲和訪問寄存器,該訪問寄存器可以提供與第一處理器114的狀態(tài)相關(guān)的信息??梢酝ㄟ^執(zhí)行測試并且向第一處理器組112或第一處理器114應(yīng)用調(diào)試技術(shù)(例如,使用調(diào)試器、軌跡或轉(zhuǎn)儲存儲器),來檢索獲得另外的系統(tǒng)信息。在另一個實(shí)施例中,第二計算機(jī)系統(tǒng)180可以訪問計算機(jī)系統(tǒng)板110,以當(dāng)?shù)诙嬎銠C(jī)系統(tǒng)180可操作地經(jīng)由端口 126連接(164)到計算機(jī)系統(tǒng)板110時,禁止/停止在第一處理器114上的時鐘。在一個實(shí)例中,可以使用調(diào)試器軟件來停止第一處理器114的執(zhí)行,其中,調(diào)試器軟件可操作地被配置為控制在第一處理器上執(zhí)行程序代碼118??裳b卸計算機(jī)卡130可以包括接口 170,接口 170被配置為:當(dāng)接口 170可操作地連接到計算機(jī)系統(tǒng)板110的擴(kuò)展槽120時,促進(jìn)與計算機(jī)系統(tǒng)板110的通信??裳b卸計算機(jī)卡130可以包括第一 FIFO存儲器142,第一 FIFO存儲器142被配置為:當(dāng)接口 170可操作地連接到擴(kuò)展槽120時,從第一處理器組112接收第一處理器輸入124。第一 FIFO存儲器142可以包括用于存儲第一處理器輸入124的邏輯144。可裝卸計算機(jī)卡130可以包括第二處理器148,第二處理器148基于向第二處理器148提供的系統(tǒng)輸入而執(zhí)行程序代碼118。該系統(tǒng)輸入可以是來自第一處理器組112的第一處理器輸入124。邏輯144可以被適配為根據(jù)第一延遲向第二處理器148輸出第一處理器輸入124。在一個實(shí)施例中,第一 FIFO存儲器142可以是第二處理器148的高速緩存。第一 FIFO存儲器142也可以向第二 FIFO存儲器152輸出第一處理器輸入124。第二 FIFO存儲器152可以是可裝卸計算機(jī)卡130的部件,可以是計算機(jī)系統(tǒng)板110的部件,或者可以是第二可裝卸計算機(jī)卡(未示出)的部件。在另一個實(shí)施例中,可以在計算機(jī)系統(tǒng)板110的主系統(tǒng)存儲器(未示出)的一部分中指定第一 FIFO存儲器142、第二 FIFO存儲器152或兩者??梢栽谟嬎銠C(jī)系統(tǒng)板110的嵌入隨機(jī)存取存儲器(RAM)或寄存器陣列存儲器的一部分中指定第一FIFO存儲器142、第二 FIFO存儲器152或兩者。在另一個實(shí)施例中,可以在連接到計算機(jī)系統(tǒng)板110的計算機(jī)存儲介質(zhì)的一部分中指定第一 FIFO存儲器142、第二 FIFO存儲器152或兩者,其中,計算機(jī)存儲介質(zhì)包括計算機(jī)可讀存儲介質(zhì)、計算機(jī)盤驅(qū)動器、快閃存儲器驅(qū)動器和因特網(wǎng)存儲介質(zhì)之一。第一 FIFO存儲器142可以包括端口 146,端口 146被配置為使能對于第一 FIFO存儲器142的內(nèi)容的訪問。端口 146可以使能第一 FIFO存儲器142的配置。例如,端口 146可以支持禁止/使能第一 FIFO存儲器142,導(dǎo)致第一 FIFO存儲器142在程序代碼118的執(zhí)行期間不可操作。當(dāng)被禁止時,第一 FIFO存儲器142可以不向第二 FIFO存儲器152和第二處理器148輸出第一處理器輸入124。在該情況下,第二處理器148可以不執(zhí)行程序代碼118,不接收第一處理器輸入124。因此,第二處理器148可以在第一 FIFO存儲器142的禁止時被禁止。在另一個示例中,端口 146可以允許第一 FIFO存儲器142被配置有與程序代碼118的執(zhí)行相關(guān)聯(lián)的第一指示符。在另一個示例中,端口 146可以允許第一 FIFO存儲器142被修改以調(diào)整第一延遲。第二處理器148可以被配置為響應(yīng)于第一處理器輸入142而執(zhí)行程序代碼118的至少第一部分。在程序代碼118的執(zhí)行期間由第二處理器148產(chǎn)生的輸出可以被忽略,因?yàn)榈诙幚砥?48在模擬程序代碼118的執(zhí)行。模擬程序代碼118的執(zhí)行指的是基于第一處理器輸入124執(zhí)行程序代碼118,以便復(fù)制由第一處理器組112執(zhí)行的功能,使得第二處理器148的行為非常類似于第一處理器組112的行為。第二處理器148可以導(dǎo)致類似于第一處理器組112基于程序代碼118的執(zhí)行的對應(yīng)狀態(tài)改變的第二處理器148的狀態(tài)改變。然而,第二處理器148不能導(dǎo)致對計算機(jī)系統(tǒng)100的資源或數(shù)據(jù)的改變,因?yàn)榈诙幚砥?48在模擬執(zhí)行。第二 FIFO存儲器152可以被配置為從第一 FIFO存儲器142接收第一處理器輸入124。第二 FIFO存儲器152可以包括用于存儲第一處理器輸入124的邏輯154。第二 FIFO存儲器152也可以包括用于根據(jù)第二延遲向第三處理器158輸出第一處理器輸入124的邏輯154。在一個實(shí)施例中,第二 FIFO存儲器152可以是第三處理器158的高速緩存。第二 FIFO存儲器152可以包括端口 156,端口 156被配置為使能對于第二 FIFO存儲器152的內(nèi)容的訪問。端口 156可以使能第二 FIFO存儲器152的配置。例如,端口 156可以支持禁止/使能第二 FIFO存儲器152,導(dǎo)致在程序代碼的執(zhí)行期間第二 FIFO存儲器152的不可操作。當(dāng)被禁止時,第二 FIFO存儲器152可以不向第三處理器158輸出第一處理器輸入124。在該情況下,第三處理器可以不執(zhí)行程序代碼118,不接收第一處理器輸入124。因此,第三處理器158可以在第二 FIFO存儲器152的禁止時被禁止。在另一個示例中,端口 156可以允許第二 FIFO存儲器152被配置有與程序代碼118的執(zhí)行相關(guān)聯(lián)的第二指示符。在另一個示例中,端口 156可以允許第二FIFO存儲器152被修改以調(diào)整第二延遲??裳b卸計算機(jī)卡130可以包括第三處理器158,第三處理器158可以基于第一處理器輸入124來執(zhí)行程序代碼118。第三處理器158可以被配置為響應(yīng)于第一處理器輸入124執(zhí)行程序代碼118的至少第二部分??梢院雎杂傻谌幚砥?58在程序代碼118的執(zhí)行期間產(chǎn)生的輸出,因?yàn)榈谌幚砥?58在模擬程序代碼118的執(zhí)行。第三處理器158的狀態(tài)可以以模擬第一處理器組112的方式在程序代碼118的第二部分執(zhí)行期間改變。然而,第三處理器158不引起與計算機(jī)系統(tǒng)100的資源或數(shù)據(jù)相關(guān)的改變,因?yàn)榈谌幚砥?58在模擬執(zhí)行。第一延遲和第二延遲可以是可變的,使得它們可以被系統(tǒng)100的用戶編程(例如,在程序代碼118的每一個執(zhí)行之前)。編程第一延遲、第二延遲或兩者可以包括限定在與每一個延遲對應(yīng)的FIFO存儲器142、152中使用的存儲量,并且可以包括指定作為FIFO存儲器142、152的儲存器或存儲器結(jié)構(gòu)的類型。而且,第一延遲可以不等于第二延遲。所使用的存儲量和所選擇的存儲類型可以確定在程序代碼118的執(zhí)行期間在FIFO存儲器142、152中存儲的信息的歷史數(shù)量,并且可以確定第一延遲、第二延遲或兩者的數(shù)量。第一延遲可以是在向第二處理器148輸出第一處理器輸入124之前第一 FIFO存儲器142等待的特定時間量。類似地,第二延遲可以是在向第三處理器158輸出第一處理器輸入124前第二 FIFO存儲器152等待的特定時間量。例如,第一延遲、第二延遲或兩者可以是基于時鐘信號的用于延遲的預(yù)定數(shù)量的時鐘周期。為了說明,第一延遲、第二延遲或兩者可以超過兩個時鐘周期,以在程序代碼118的執(zhí)行中提供足夠的延遲量,以允許檢測錯誤。在一個實(shí)施例中,第一 FIFO存儲器142和第二處理器148可以表示第一 FIFO處理器對140,并且第二 FIFO存儲器152和第三處理器158可以表示第二 FIFO處理器對150。第一 FIFO處理器對140、第二 FIFO處理器對150或兩者可以被包含在計算機(jī)芯片中。在特定實(shí)施例中,計算機(jī)芯片可以是專用集成電路(ASIC)或現(xiàn)場可編程門陣列(FPGA)??梢栽谛酒拇鎯ζ鞯囊徊糠种兄付ǖ谝?FIFO存儲器142、第二 FIFO存儲器152或兩者,該芯片的存儲器可以包括計算機(jī)芯片的嵌入隨機(jī)存取存儲器(RAM)或寄存器陣列存儲器??裳b卸計算機(jī)卡130的端口 160可以被配置為使另一個計算機(jī)系統(tǒng)能訪問或配置可裝卸卡130。在一個實(shí)施例中,當(dāng)?shù)诙嬎銠C(jī)系統(tǒng)180可操作地經(jīng)由端口 160連接(162)到可裝卸計算機(jī)卡130時,第二計算機(jī)系統(tǒng)180可以訪問可裝卸計算機(jī)卡130,以控制和監(jiān)控程序代碼118的執(zhí)行。例如,端口 160可以允許第二計算機(jī)系統(tǒng)180訪問第一 FIFO存儲器142、第二 FIFO存儲器152或兩者的內(nèi)容,以確定是否已經(jīng)達(dá)到指示符。在另一個示例中,端口 160可以使第二計算機(jī)系統(tǒng)180能配置第一 FIFO存儲器142,以調(diào)整第一延遲,配置第二 FIFO存儲器152以調(diào)整第二延遲,或兩者。進(jìn)一步地,端口 160可以使第二計算機(jī)系統(tǒng)180能訪問來自第二處理器148和來自第三處理器158的系統(tǒng)信息,以調(diào)試程序代碼118的執(zhí)行。可裝卸計算機(jī)卡130可以包括FIFO控制寄存器166,用于控制第一 FIFO存儲器142、第二 FIFO存儲器152或兩者。第二計算機(jī)系統(tǒng)180可以通過端口 160訪問FIFO控制寄存器166。FIFO控制寄存器166可以被配置或修改為控制FIFO存儲器142、152的深度或大小,這可能影響在第一 FIFO存儲器142的第一延遲和在第二 FIFO存儲器152的第二延遲的數(shù)量。FIFO控制寄存器166可以被配置或修改為通過允許用戶修改對FIFO存儲器142、152的每一個指定的計算機(jī)存儲而指定FIFO存儲器142、152的位置。在另一個實(shí)施例中,F(xiàn)IFO控制寄存器166可以被包括在第二計算機(jī)系統(tǒng)180內(nèi),這可以向用戶提供用于訪問在此所述的FIFO控制寄存器166的方式。在運(yùn)行中,可裝卸計算機(jī)卡130可以可操作地連接到擴(kuò)展槽120。系統(tǒng)100的用戶(例如,系統(tǒng)管理員、操作員或測試者)可以在第一處理器組112處開始執(zhí)行程序代碼118。第一處理器組112可以接收第一處理器輸入124,并且可以響應(yīng)于第一處理器輸入124而執(zhí)行程序代碼118。第一 FIFO存儲器142可以從第一處理器組112接收第一處理器輸入124。在一個實(shí)施例中,在第一處理器組112根據(jù)第一處理器輸入124執(zhí)行程序代碼118之前,第
一FIFO存儲器142接收第一處理器輸入124。例如,可以同時向第一 FIFO存儲器142和第一處理器114發(fā)送第一處理器輸入124。替代地,可以在第一處理器組112已經(jīng)開始根據(jù)第一處理器輸入124執(zhí)行程序代碼118之后,向第一 FIFO存儲器142發(fā)送第一處理器輸Λ 124。第一 FIFO存儲器142可以存儲第一處理器輸入124,并且可以根據(jù)第一延遲向第
二FIFO存儲器152和第二處理器148輸出第一處理器輸入124。第二處理器148可以響應(yīng)于第一處理器輸入而執(zhí)行程序代碼118。第二 FIFO存儲器152可以存儲第一處理器輸入124,并且可以根據(jù)第二延遲向第三處理器158輸出第一處理器輸入124。第三處理器158可以響應(yīng)于第一處理器輸入124而執(zhí)行程序代碼118。在一個特定實(shí)施例中,在第一處理器組112處執(zhí)行程序代碼118的同時可能遇到故障點(diǎn)。用戶可以在故障點(diǎn)之前選擇第二處理器148和第三處理器158之一以分析程序代碼118的執(zhí)行。用戶可以建立經(jīng)由端口 160從第二計算機(jī)系統(tǒng)180向可裝卸計算機(jī)卡130的操作連接162。以訪問在可裝卸計算機(jī)卡130上的信息。用戶可以試圖經(jīng)由端口 146訪問第一 FIFO存儲器142,經(jīng)由端口 156訪問第二 FIFO存儲器152,或者兩個端口 146、156可以可操作地連接到端口 160,以使能用戶的訪問。用戶可以試圖訪問第一 FIFO存儲器142或第二 FIFO存儲器152確定執(zhí)行了程序代碼118的第二處理器148或第三處理器158的任何一個是否通過故障點(diǎn)的內(nèi)容。用戶可以訪問第二處理器148或第三處理器158的每一個的系統(tǒng)信息,以檢查在第一處理器114遇到故障點(diǎn)的時間或附近的處理器148、158的狀態(tài)。例如,用戶可以檢索可以向用戶提供與處理器114、148、158的一個或多個的狀態(tài)相關(guān)的信息的、與處理器114、148、158的一個或多個相關(guān)的系統(tǒng)信息(例如,總線軌跡、掃描轉(zhuǎn)儲和訪問寄存器)。用戶可以通過執(zhí)行測試并且應(yīng)用調(diào)試技術(shù)(例如,使用調(diào)試器、軌跡或轉(zhuǎn)儲存儲器)來檢索另外的系統(tǒng)信息。在一種測試情況中,可以設(shè)置第一延遲和第二延遲使得每一個不等于另一個,以根據(jù)第三延遲在第三處理器158上執(zhí)行程序代碼以前,允許用戶基于第一延遲并且在程序代碼118的執(zhí)行中的特定點(diǎn)處訪問來自第二處理器148的系統(tǒng)信息,并且然后對特定點(diǎn)修改第三處理器158的系統(tǒng)信息。在多個延遲的處理器上執(zhí)行程序代碼可以降低與在多個處理器上的程序代碼的多個實(shí)例的執(zhí)行相關(guān)聯(lián)的成本,每一個處理器位于獨(dú)立的處理器系統(tǒng)中。包括多個延遲的處理器的單個計算機(jī)系統(tǒng)可以允許用戶模擬程序代碼的多個實(shí)例的執(zhí)行,由此消除對為步調(diào)一致的處理布置的完整的處理器系統(tǒng)執(zhí)行程序代碼的多個實(shí)例的需要。因?yàn)樵诙鄠€延遲的處理器上模擬程序代碼的執(zhí)行,所以單個系統(tǒng)能夠在單個系統(tǒng)上執(zhí)行程序代碼,同時允許多個延遲的處理器使用單個系統(tǒng)的系統(tǒng)資源來執(zhí)行程序代碼。根據(jù)各種延遲來執(zhí)行程序代碼可以允許用戶驗(yàn)證或調(diào)試程序代碼的執(zhí)行,同時代碼通過使用由未延遲的處理器與延遲的處理器共享的一組輸入、分析未延遲的處理器或任何其他延遲的處理器的狀態(tài)來執(zhí)行。該組輸入可以包括輸入信號和對應(yīng)的數(shù)據(jù),該對應(yīng)的數(shù)據(jù)識別在檢查該組輸入時的時刻在程序執(zhí)行中的點(diǎn)。因此,在延遲的處理器響應(yīng)于該組輸入前,在檢查該組輸入時的任何給定時間,用戶可以識別在程序代碼內(nèi)采用的特定路徑,并且可以指示進(jìn)一步識別在該給定時間的未延遲處理器的狀態(tài)的特定變量的值。在故障可能不頻繁出現(xiàn)或可能因?yàn)殄e誤的特性而未被發(fā)現(xiàn)、并且直到幾個時鐘周期后執(zhí)行時才出現(xiàn)的情況下,用戶可以通過能夠查看在可以表示故障點(diǎn)的一個或多個興趣點(diǎn)前的系統(tǒng)的狀態(tài)而得到幫助。每一個延遲的處理器可以向用戶提供在興趣點(diǎn)檢查未延遲的處理器的狀態(tài)的機(jī)會。因?yàn)槊恳粋€延遲的處理器正在模擬程序代碼的執(zhí)行、基于未延遲的處理器的執(zhí)行而建模執(zhí)行,所以除了由未延遲的處理器遇到的故障之外,每一個延遲的處理器可以不遇到明顯的故障。因此,用戶可以專注于檢測未延遲的處理器的錯誤,并且可以將系統(tǒng)“倒回”到較早的狀態(tài)以檢測不能檢測到的錯誤,直到在遇到該錯誤后的許多周期,該錯誤才會出現(xiàn)。在增加了 FIFO存儲器處理器對(例如,F(xiàn)IFO處理器對140、150)的情況下,可裝卸計算機(jī)卡(例如,可裝卸計算機(jī)卡130)可以增強(qiáng)測試系統(tǒng)(例如,系統(tǒng)100)的可擴(kuò)展性,F(xiàn)IFO存儲器處理器對向用戶提供了更多的處理器來實(shí)現(xiàn)程序代碼(例如,程序代碼118)的延遲執(zhí)行。具有更多FIFO存儲器處理器對的可裝卸計算機(jī)卡可以在程序代碼的執(zhí)行期間提供延遲的更多變化。具有短的、間歇的延遲的程序代碼的執(zhí)行可以允許與程序代碼的特性部分相關(guān)聯(lián)的問題的隔離。例如,測試者可以具有在程序代碼的特定部分的執(zhí)行期間檢查不明顯的系統(tǒng)改變的更大能力,因?yàn)槎痰?、間歇的延遲使得測試者能夠根據(jù)更頻繁的延遲來更頻繁地檢查系統(tǒng)。在測試環(huán)境中,可裝卸計算機(jī)卡130可以向測試者提供的更大靈活性,以利用在其他測試系統(tǒng)上的可裝卸計算機(jī)卡130來進(jìn)一步執(zhí)行或分析??梢栽谄渌麥y試系統(tǒng)上使用可裝卸計算機(jī)卡130,因?yàn)榭裳b卸計算機(jī)卡130需要可裝卸計算機(jī)卡130可以可操作地連接到的計算機(jī)系統(tǒng)的可裝卸計算機(jī)卡130和計算機(jī)系統(tǒng)板110的系統(tǒng)資源?,F(xiàn)在,參考圖2,描述了用于根據(jù)延遲并且響應(yīng)于來自第一處理器組的輸入而在第二處理器和第三處理器上執(zhí)行程序代碼的方法的第一特定實(shí)施例的流程圖,一般地指定為200。系統(tǒng)100、500、500和800的一個或多個可以執(zhí)行方法200。在202,第一 FIFO存儲器可以從第一處理器組接收第一處理器輸入124。例如,在計算機(jī)系統(tǒng)100中,第一 FIFO存儲器142可以從第一處理器組112接收第一處理器輸入124。在一個實(shí)施例中,在第一處理器組112開始響應(yīng)于第一處理器輸入124執(zhí)行程序代碼118之前,接收第一處理器輸入124。在另一個實(shí)施例中,在第一處理器組112已經(jīng)開始根據(jù)第一處理器輸入124執(zhí)行程序代碼118后,接收第一處理器輸入124。繼續(xù)到204,第一 FIFO存儲器可以在第一 FIFO存儲器中存儲第一處理器輸入。在206,第一 FIFO存儲器可以根據(jù)第一延遲向第二 FIFO存儲器和第二處理器輸出第一處理器輸入。例如,第一處理器輸入可以被存儲在第一 FIFO存儲器處的第一 FIFO存儲器的高速緩存線內(nèi),其中,每條高速緩存線基于第一處理器輸入的時鐘信號,對應(yīng)于與每一個時鐘周期相關(guān)聯(lián)的第一處理器輸入。在208,第二處理器可以響應(yīng)于第一處理器輸入而執(zhí)行程序代碼的至少第一部分。在210,第二 FIFO存儲器可以在第二 FIFO存儲器中存儲第一處理器輸入。例如,與第一FIFO存儲器類似地功能,第二 FIFO存儲器可以在第二 FIFO存儲器的高速緩存線內(nèi)存儲第一處理器輸入,其中,每條高速緩存線基于第一處理器輸入的時鐘信號,對應(yīng)于與每一個時鐘周期相關(guān)聯(lián)的第一處理器輸入。在212,第二 FIFO存儲器可以根據(jù)第二延遲向第三處理器輸出第一處理器輸入。第三處理器可以在214響應(yīng)于第一處理器輸入而執(zhí)行程序代碼的至少第二部分。方法200可以在216處結(jié)束。替代地,方法200可以通過下述方式繼續(xù):向一個或多個另外的FIFO存儲器提供第一處理器輸入,并且一個或多個另外的處理器根據(jù)延遲至少部分地執(zhí)行該程序代碼。方法200使得能夠根據(jù)各種延遲來執(zhí)行程序代碼,這可以允許用戶基于檢查在第
一FIFO存儲器和第二 FIFO存儲器內(nèi)存儲的第一處理器輸入而驗(yàn)證或調(diào)試程序代碼的執(zhí)行。而且,用戶能夠基于檢查第一處理器輸入而分析第二處理器或第三處理器的狀態(tài)。圖3是根據(jù)延遲并且響應(yīng)于來自第一處理器組的輸入而在第二處理器和第三處理器上執(zhí)行程序代碼的方法的第二特定實(shí)施例的流程圖,該方法被一般地指定為300??梢酝ㄟ^系統(tǒng)100、500、600和800的一個或多個來執(zhí)行方法300。在302,第一 FIFO存儲器可以從第一處理器組接收第一處理器輸入124。在304,第一 FIFO存儲器可以在第一 FIFO存儲器中存儲第一處理器輸入。在306,第一 FIFO存儲器可以(根據(jù)第一延遲)向第二 FIFO存儲器和第二處理器輸出來自第一 FIFO存儲器的第一處理器輸入。在308,第二處理器可以響應(yīng)于第一處理器輸入而執(zhí)行程序代碼的至少第一部分。在310,第二 FIFO存儲器可以在第二 FIFO存儲器處存儲第一處理器輸入。在312,第
二FIFO存儲器根據(jù)第二延遲向第三處理器輸出第一處理器輸入。在314,第三處理器響應(yīng)于第一處理器輸入而執(zhí)行程序代碼的至少第二部分。在316,用戶可以在第一 FIFO存儲器和第二 FIFO存儲器之一或兩者處檢測與程序代碼的執(zhí)行相關(guān)的指示符。例如,可以從由第一 FIFO存儲器或第二 FIFO存儲器的配置使能的單個比特來檢測該指示符??梢酝ㄟ^基于與第一處理器輸入相關(guān)的條件,在任何一個FIFO存儲器內(nèi)編程邏輯來配置第一 FIFO存儲器或第二 FIFO存儲器,該邏輯使能該單個比特。在318,基于指示符的檢測,可以同時停止第一處理器、第二處理器和第三處理器的執(zhí)行。例如,通過禁止/停止處理器的每一個的時鐘,可以停止第一處理器、第二處理器和第三處理器的執(zhí)行。在另一個示例中,可以使用調(diào)試器軟件來停止處理器的每一個的執(zhí)行,其中,調(diào)試器軟件可操作地被配置為控制在處理器的每一個上執(zhí)行程序代碼。如上所述,第一 FIFO存儲器、第二 FIFO存儲器或兩者可以被配置具有與程序代碼的執(zhí)行相關(guān)的指示符。該指示符可以是用于在執(zhí)行期間識別程序代碼的特定部分的標(biāo)記、控制氣泡、標(biāo)志或任何其他類型的控制點(diǎn)。FIFO存儲器的配置不限于指示符。第一 FIFO存儲器、第二 FIFO存儲器或兩者可以被配置或修改為用于與在程序代碼的執(zhí)行期間的檢測或監(jiān)控相關(guān)的特定目的。例如,該指示符可以用于但是不限于諸如相對于程序代碼118的執(zhí)行來測試、調(diào)試和分析計算機(jī)系統(tǒng)100的應(yīng)用。在一個實(shí)例中,指示符可以是被插入或編程到第一 FIFO存儲器142或第二 FIFO存儲器152的指示符邏輯(未示出)內(nèi)的比特或標(biāo)記。在320,可以從第一處理器、第二處理器和第三處理器的至少一個提取第一信息。第一信息可以涉及處理器系統(tǒng)信息,諸如涉及與程序代碼的執(zhí)行相關(guān)的處理器(例如第一處理器、第二處理器和第三處理器)的狀態(tài)的信息。這樣的信息可以在系統(tǒng)100中用于調(diào)試程序代碼118,并且分析在程序代碼118的執(zhí)行期間遇到的硬件錯誤。在322,響應(yīng)于檢測到指示符,可以從第一 FIFO存儲器和第二 FIFO存儲器的至少一個提取第二信息。第二信息可以涉及FIFO存儲器的內(nèi)容。例如,可以通過經(jīng)由第二計算機(jī)系統(tǒng)180訪問第一 FIFO存儲器142或第二 FIFO存儲器152來執(zhí)行提取第二信息。在324,可以對于第一信息、第二信息或兩者的至少一個執(zhí)行分析,以確定用于第二處理器和第三處理器的至少一個的程序代碼的執(zhí)行的狀態(tài)。例如,用戶可能期望確定在第二處理器和第三處理器上的程序代碼的執(zhí)行狀態(tài),以確定任何一個是否遇到指示符,這可以幫助用戶選擇處理器來恢復(fù)程序代碼的執(zhí)行。指示符可以與其中已知已經(jīng)出現(xiàn)了故障的程序代碼的特定部分相關(guān)聯(lián)。對于第一信息執(zhí)行分析可以包含:檢查用于第二處理器和第三處理器的處理器系統(tǒng)信息,以確定存儲器的特定部分或特定寄存器是否指示故障的存在。用戶可以對第二信息執(zhí)行分析,以相對于指示符確定在第二處理器和第三處理器上的程序代碼的執(zhí)行,可以從FIFO存儲器的內(nèi)容識別指示符?;谠摲治?,用戶可以選擇處理器來恢復(fù)用于還沒有執(zhí)行通過指示符并且還沒有執(zhí)行通過故障的處理器的程序代碼的執(zhí)行。在326,可以在第二處理器和第三處理器的至少一個上恢復(fù)程序代碼的至少一部分的執(zhí)行,方法300在328處結(jié)束。圖4是根據(jù)延遲并且響應(yīng)于來自第一處理器組的輸入在第二處理器和第三處理器上執(zhí)行程序代碼的方法的第三特定實(shí)施例的流程圖,該方法被一般地指定為400。可以通過系統(tǒng)100、500、600和800的一個或多個來執(zhí)行方法400。在402,第一 FIFO存儲器可以從第一處理器組接收第一處理器輸入。在404,第一FIFO存儲器可以在第一 FIFO存儲器中存儲第一處理器輸入。在406,第一 FIFO存儲器可以根據(jù)第一延遲向第二 FIFO存儲器和第二處理器輸出來自第一 FIFO存儲器的第一處理器輸入。在408,第二處理器可以響應(yīng)于第一處理器輸入而執(zhí)行程序代碼的至少第一部分。例如,響應(yīng)于第一處理器輸入124,第二處理器148可以執(zhí)行第一處理器114執(zhí)行的程序代碼118的較早部分(第一部分),因?yàn)榈诙幚砥?48根據(jù)第一延遲來執(zhí)行。在410,第二 FIFO存儲器可以在第二 FIFO存儲器處存儲第一處理器輸入。在412,第二 FIFO存儲器根據(jù)第二延遲向第三處理器輸出第一處理器輸入。在414,第三處理器可以響應(yīng)于第一處理器輸入而執(zhí)行程序代碼的至少第二部分。在416,基于與程序代碼的執(zhí)行相關(guān)的事件的出現(xiàn)的檢測,可以同時停止第一處理器、第二處理器和第三處理器的執(zhí)行。在418,可以從第二處理器和第三處理器的至少一個提取處理器系統(tǒng)信息。例如,系統(tǒng)信息可以包括寄存器、存儲器的內(nèi)容和識別能夠從處理器的每一個訪問的程序代碼的執(zhí)行的其他系統(tǒng)相關(guān)信息。在420,可以基于分析處理器系統(tǒng)信息選擇至少一個處理器(例如,第二處理器或第三處理器),來恢復(fù)程序代碼的至少一部分的執(zhí)行。例如,用戶可以分析處理器系統(tǒng)信息的寄存器和存儲器,以檢測在程序代碼執(zhí)行期間的已知硬件故障的出現(xiàn)??梢允褂么鎯ζ骰蚣拇嫫鞯膬?nèi)容來檢測硬件故障的出現(xiàn),存儲器或寄存器的內(nèi)容的任何一個可以作為硬件故障的結(jié)果而已經(jīng)改變?yōu)殄e誤的值,直到當(dāng)程序代碼基于錯誤值執(zhí)行時的稍后時間,才能檢測該硬件故障。如上關(guān)于圖1的計算機(jī)系統(tǒng)100所述,分析處理器系統(tǒng)信息可以包含:確定用于第二處理器148和第三處理器158的至少一個的程序代碼118的執(zhí)行的狀態(tài)。在步驟422,可以修改被選擇為恢復(fù)執(zhí)行的至少一個處理器的處理器系統(tǒng)信息。例如,圖1的第二計算機(jī)系統(tǒng)180可以訪問第二處理器148和第三處理器158,以修改第二處理器148或第三處理器158的任何一個的系統(tǒng)信息。為了說明,用戶在420已經(jīng)確定特定寄存器的內(nèi)容具有指示硬件錯誤的特定類型的值。為了基于在選擇的處理器的不同寄存器中指定特定值來測試可能的解決方案,用戶可以修改選擇的處理器的處理器系統(tǒng)信息,以確定當(dāng)用戶恢復(fù)在選擇的處理器上的程序代碼的執(zhí)行時可能的解決方案是否可行。在424,可以對第二處理器148和第三處理器158的至少一個恢復(fù)程序代碼的至少一部分的單步驟執(zhí)行。例如,可以通過使用支持程序代碼的受控操作的調(diào)試器軟件來執(zhí)行單個步驟執(zhí)行。通過單個步驟的執(zhí)行可以允許用戶執(zhí)行程序代碼,直到故障點(diǎn)出現(xiàn)或直到一些其他的興趣點(diǎn)出現(xiàn),這可以允許用戶明白在故障點(diǎn)處的程序代碼的執(zhí)行的環(huán)境。方法400在426處結(jié)束。圖5是根據(jù)延遲并且響應(yīng)于來自第一處理器組的輸入而在第二處理器和第三處理器上執(zhí)行程序代碼的系統(tǒng)的第二特定實(shí)施例的框圖,該系統(tǒng)被一般地指定為500。在系統(tǒng)500中,系統(tǒng)A510表示第一處理器組,其可以包括在測試中的中央處理單元(CPU) 512,該CPU基于一組輸入信號來執(zhí)行程序代碼。多個延遲的在測試中的CPU (例如,CPU B522、CPU C532和CPU D542)的每個可以基于包括由公共時鐘輸入560向系統(tǒng)A510提供的時鐘信號的一組輸入信號570、根據(jù)在時鐘周期(例如,Dx周期、Dy周期和Dz周期)中的不同延遲來執(zhí)行程序代碼。延遲的在測試中的CPU522、532、542的每一個可以作為與系統(tǒng)A510步調(diào)一致地運(yùn)行的模擬CPU運(yùn)行。延遲的在測試中的CPU522、532、542的每一個可以不像系統(tǒng)A510那樣在沒有完整的一組系統(tǒng)資源的情況下運(yùn)行,并且可以根據(jù)基于時鐘周期的延遲來執(zhí)行程序代碼。在測試中的CPU522、532、542的每一個可以接收由系統(tǒng)A510接收的相同的一組輸入信號570,包括與和程序代碼的執(zhí)行相關(guān)的數(shù)據(jù)和指令對應(yīng)的信號。來自延遲的在測試中的CPU522、532、542的每一個的輸出可以不被系統(tǒng)500用于執(zhí)行程序代碼的隨后部分。例如,當(dāng)系統(tǒng)A510的CPU512引發(fā)對于來自系統(tǒng)A510的存儲器的請求數(shù)據(jù)的高速緩存未中(cache miss)時,來自該存儲器的相同結(jié)果(S卩,高速緩存未中)將去往在測試中的CPU522、532,542的每一個。在測試中的CPU522、532、542的每一個將基于系統(tǒng)A510的同一組輸入信號570、根據(jù)與系統(tǒng)A510相同的高速緩存未中來執(zhí)行。因此,在測試中的CPU522、532、542的每一個可以根據(jù)基于時鐘周期的延遲而被延遲。用于在測試中的CPU522、532、542的每一個的延遲可以基于根據(jù)延遲來自FIFO存儲器520、530、540之一的一組輸入信號570的輸出。系統(tǒng)A510可以向連接于系統(tǒng)A510的第一 FIFO存儲器520輸出該組輸入信號570。第一 FIFO存儲器520可以根據(jù)第一延遲向第一在測試中的CPU522和第二 FIFO存儲器530輸出該組輸入信號570。第二 FIFO存儲器530可以根據(jù)第二延遲向第二在測試中的CPU532和第三FIFO存儲器540輸出該組輸入信號570。第三FIFO存儲器540可以根據(jù)第三延遲向第三在測試中的CPU542輸出該組輸入信號570。在CPU512和在測試中的CPU522、532、542的每一個上的程序代碼的執(zhí)行可以被同時停止,以保留在測試中的CPU522、532、542的每一個的狀態(tài),這些狀態(tài)與CPU512的狀態(tài)不同,這是因?yàn)榕c在FIFO存儲器520、530、540的每一個處的該組輸入信號570相關(guān)聯(lián)的延遲。因此,用戶可以將系統(tǒng)“倒回”到在測試中的CPU532、542之一上的較早狀態(tài),以檢測不可檢測的錯誤,直到在遇到錯誤后的許多周期才會出現(xiàn)該錯誤。像在系統(tǒng)500中那樣連接在測試中的CPU522、532、542可以使得系統(tǒng)管理員(例如,測試者和操作員)能夠監(jiān)控用于系統(tǒng)A510的在測試中的CPU512的程序代碼的執(zhí)行。用于監(jiān)控程序代碼的執(zhí)行的一種方式是訪問FIFO存儲器520、530、540的一個或多個的內(nèi)容,并且將FIFO存儲器520、530、540的一個或多個的內(nèi)容格式化為事件軌跡,該事件軌跡可以示出與在每一個時鐘周期處的輸入信號相關(guān)聯(lián)的改變。系統(tǒng)管理員可以基于查看FIFO存儲器520、530、540的一個或多個的內(nèi)容的一個或多個事件軌跡而選擇性地“倒回”系統(tǒng)500中的程序代碼的執(zhí)行。當(dāng)系統(tǒng)管理員停止在所有在測試中的CPU522、532、542上的程序代碼的執(zhí)行時,系統(tǒng)管理員可以檢查用于在測試中的CPU522、532、542的每一個的狀態(tài)信息,以相對于程序代碼的執(zhí)行來進(jìn)行進(jìn)一步的分析。而且,系統(tǒng)管理員可以通過選擇性地重啟在測試中的CPU522、532、542之一處的程序代碼的執(zhí)行直到識別了興趣點(diǎn)來“倒回”程序代碼的執(zhí)行。系統(tǒng)管理員然后能夠根據(jù)每一個時鐘周期檢查從系統(tǒng)A510提供的輸入。系統(tǒng)管理員可以對在測試中的CPU522、532、542中的所選擇的CPU執(zhí)行程序代碼的單個步驟執(zhí)行,其中,選擇的在測試中的CPU用于部分地基于對選擇的在測試中的CPU的輸入來定位興趣點(diǎn)。圖6是根據(jù)延遲并且響應(yīng)于來自第一處理器組的輸入、在第二處理器和第三處理器上執(zhí)行程序代碼的系統(tǒng)的第三特定實(shí)施例的系統(tǒng)圖,該系統(tǒng)被一般地指定為600。系統(tǒng)600包括在測試中的系統(tǒng)610。在測試中的系統(tǒng)610可以包括計算機(jī)芯片620,該芯片具有多個核(core)(例如,處理器核)626、632、642。它們每一個能夠使用在測試中的系統(tǒng)610的系統(tǒng)資源來執(zhí)行處理操作。核626、632、642可以串聯(lián)地互連,并且核626、632、642的每一個可以與獨(dú)立的和不同的高速緩存628、630、640相關(guān)聯(lián)。例如,與每一個核626、632、642相關(guān)聯(lián)的高速緩存628、630、640可以是在核內(nèi)的高速緩存。核626、632、642和高速緩存628、630、640可以通過高速緩存控制邏輯和互連線互連。在運(yùn)行期間,第一核626可以根據(jù)可以由計算機(jī)芯片620的系統(tǒng)輸入總線624提供的單組輸入執(zhí)行程序代碼。連接到系統(tǒng)輸入總線624并且與計算機(jī)芯片620進(jìn)行通信的存儲器控制器(MC) 622可以對諸如隨機(jī)存取存儲器(RAM) 612的在測試中的系統(tǒng)610的存儲器訪問程序代碼。每一個核626、632、642可以響應(yīng)于用于執(zhí)行程序代碼的單組輸入。該單組輸入可以包括一組輸入信號、時鐘信號和與程序代碼的執(zhí)行相關(guān)的對應(yīng)數(shù)據(jù)。在系統(tǒng)600的特定實(shí)施例中,在測試中的系統(tǒng)610可以被配置為使得包括一系列核(未示出)的第一核626可以響應(yīng)于從沒有延遲地輸出單組輸入的高速緩存628接收單組輸入。在系統(tǒng)600的另一個特定實(shí)施例,高速緩存628可以根據(jù)與時鐘信號相關(guān)聯(lián)的延遲來延遲向第一核626的單組輸入的輸出。在測試中的系統(tǒng)610可以在核626響應(yīng)于單組輸入而執(zhí)行程序之前、期間或之后,向高速緩存630輸出該組輸入。高速緩存630可以根據(jù)第一延遲向核632和隨后的高速緩存(例如,640)輸出單組輸入。核632可以響應(yīng)于單組輸入而執(zhí)行程序代碼。高速緩存640可以根據(jù)第二延遲向核642輸出單組輸入。在系統(tǒng)600的一個實(shí)施例中,系統(tǒng)600可以包括一個或多個另外的核和與每一個另外的核對應(yīng)的另外的高速緩存。另外的高速緩存的每一個可以通過下述方式來與高速緩存628、630、640類似地工作:從諸如另一個高速緩存630、640的另一個高速緩存接收單組輸入,并且根據(jù)延遲向另外的核632、642之一輸出單組輸入。高速緩存628、630、640的每一個可以存儲單組輸入,使得時鐘信號的一個時鐘周期對應(yīng)于一條高速緩存線。高速緩存628、630、640的每一個的大小可以取決于幾個因素,包括基于與用于一個時鐘周期的單組輸入相關(guān)聯(lián)的數(shù)據(jù)量的高速緩存類型、存儲容量和存儲考慮或其任何組合。計算機(jī)芯片620可以是多核處理器,包括多個核,每一個與一個高速緩存相關(guān)聯(lián)。使用單個計算機(jī)芯片的系統(tǒng)600的實(shí)現(xiàn)方式可以降低與實(shí)現(xiàn)支持用于根據(jù)在多個核處理器的每一個上的各種時延來執(zhí)行程序代碼的多核處理器的測試系統(tǒng)相關(guān)聯(lián)的硬件的成本。該實(shí)現(xiàn)方式可以減少否則用于支持在諸如在測試中的系統(tǒng)610的獨(dú)立系統(tǒng)上的程序代碼的執(zhí)行所需要的硬件的數(shù)量,每一個獨(dú)立系統(tǒng)利用不同的一組系統(tǒng)資源。圖7是根據(jù)延遲并且響應(yīng)于來自第一處理器組的輸入而在第二處理器和第三處理器上執(zhí)行程序代碼的方法的第四特定實(shí)施例的流程圖,該方法被一般地指定為700??梢酝ㄟ^系統(tǒng)100、500、600和800的至少一個來執(zhí)行方法700。在710處,用戶(例如,管理員、操作員或測試者)可以開始在系統(tǒng)的每個核上的硬件試驗(yàn)程序的執(zhí)行。硬件試驗(yàn)程序是用于生成和測試用于測試計算機(jī)硬件的測試軟件的程序。STPSM、HTX> Trash和Grub是單獨(dú)硬件試驗(yàn)程序的示例。這些硬件試驗(yàn)程序可以直接地在存儲器中產(chǎn)生測試,并且可以分支到測試區(qū)域,以基于產(chǎn)生的測試之一執(zhí)行實(shí)際測試。通過core [O]-core [η]來表示執(zhí)行硬件試驗(yàn)程序的核,其中,core [m]表示不與時延相關(guān)聯(lián)的主核,其中,硬件試驗(yàn)程序執(zhí)行。在715,用戶可以從可獲得的核core
-core[n]之一中選擇core[m]。在720,用戶可以在核core
-[n]的每一個上執(zhí)行由硬件試驗(yàn)程序產(chǎn)生的隨機(jī)播種的測試。在725,在完成在至少一個核上的硬件試驗(yàn)程序時,用戶可以確定核之一是否在硬件試驗(yàn)程序的執(zhí)行期間遇到故障。在730處,方法700以當(dāng)硬件試驗(yàn)程序未遇到故障地完成隨機(jī)播種的測試的執(zhí)行時要調(diào)試的故障而結(jié)束。方法700在確定在硬件試驗(yàn)程序的執(zhí)行期間出現(xiàn)錯誤時繼續(xù)。在735,停止在核的每一個上的時鐘信號以暫停硬件試驗(yàn)程序在每一個核上的執(zhí)行。用戶可以識別在硬件試驗(yàn)程序的執(zhí)行期間發(fā)生故障的特定核,并且將與硬件試驗(yàn)程序的執(zhí)行相關(guān)的故障的點(diǎn)定位在特定核上。替代地,用戶可以相對于在至少一個核上的故障的出現(xiàn)而識別在硬件試驗(yàn)程序的執(zhí)行中的興趣點(diǎn)。在特定實(shí)施例中,用戶可以選擇性地分析根據(jù)還沒有遇到故障點(diǎn)的延遲執(zhí)行的核的至少一個。為了幫助用戶執(zhí)行分析,用戶可以配置系統(tǒng)以與在每一個核上的硬件試驗(yàn)程序的執(zhí)行相結(jié)合地利用調(diào)試器軟件(例如,RiscWatch)。通過在已經(jīng)停止時鐘信號后分析每一個核,用戶可以識別根據(jù)延遲執(zhí)行的核,該核剛好在興趣點(diǎn)前停止了硬件試驗(yàn)程序的執(zhí)行,該興趣點(diǎn)在故障點(diǎn)之前或與其重合。在740,用戶可以借助于調(diào)試器軟件選擇一個核,在該核上,在故障點(diǎn)前的興趣點(diǎn)處停止執(zhí)行。主核(即,c0re[m])被改變?yōu)樗x擇的核。在745,用戶可以分析所選擇的核(BP, core[m])ο分析選擇的核可以包括:執(zhí)行多個任務(wù)的一個或多個以確定核的狀態(tài)。例如,用戶可以提取系統(tǒng)輸入總線的總線軌跡,執(zhí)行處理器核的掃描轉(zhuǎn)儲,并且分析該軌跡和轉(zhuǎn)儲的至少一個。在750,用戶可以關(guān)于是否已經(jīng)識別了在硬件試驗(yàn)程序中的故障的根本起因進(jìn)行確定。當(dāng)core[m]的狀態(tài)的分析提供了用于確定故障的根本起因的足夠信息時,用戶進(jìn)行到755,其中,使用硬件試驗(yàn)程序的調(diào)試分析結(jié)束,并且其中方法700完成。當(dāng)C0re[m]的狀態(tài)的分析未提供足以確定故障的根本起因信息時,方法700進(jìn)行到760。在760,為了對core[m]執(zhí)行進(jìn)一步的分析,進(jìn)行關(guān)于是否在core[m]上的停止時間前的硬件試驗(yàn)程序的執(zhí)行中的一個點(diǎn)處出現(xiàn)了故障的確定。當(dāng)在core[m]上的停止時間后出現(xiàn)故障時,方法700通過在770選擇m的另一個值以改變被分析的core [m]來繼續(xù)。用戶可以應(yīng)用諸如二進(jìn)制搜索的等式來選擇下一個核來分析。
當(dāng)在core[m]上的停止時間前出現(xiàn)故障時,可以在765確定是否繼續(xù)調(diào)試core[m]以確定故障的起因。例如,用戶可以得出結(jié)論:雖然core[m]在故障點(diǎn)之前停止執(zhí)行,但是調(diào)試在core[m]上完成。在一個實(shí)例中,用戶可以確定core[m]在故障點(diǎn)之前但是在興趣點(diǎn)后停止執(zhí)行,其允許用戶更好地理解故障。在770,用戶可以通過改變m的值來選擇核core [O]-core [η]之一,以表示與當(dāng)前core [m]不同的新的core [m]。用戶也可以利用調(diào)試器、通過下述方式設(shè)置與在core[m]上的硬件試驗(yàn)程序的執(zhí)行相關(guān)聯(lián)的斷點(diǎn):使用調(diào)試器軟件來設(shè)置一個或多個斷點(diǎn)以指示在硬件試驗(yàn)程序的代碼中的興趣點(diǎn)。方法700可以在775繼續(xù)以恢復(fù)在core[m]上的執(zhí)行。可以通過以多種方式將硬件試驗(yàn)程序的處理前進(jìn)來進(jìn)行在core[m]上的執(zhí)行。利用調(diào)試器軟件,用戶可以通過執(zhí)行單個步驟執(zhí)行來恢復(fù)在選擇的core[m]上的硬件試驗(yàn)程序。例如,可以使用調(diào)試器軟件來執(zhí)行硬件試驗(yàn)程序的單個步驟執(zhí)行,以當(dāng)?shù)竭_(dá)斷點(diǎn)時分析硬件試驗(yàn)程序的執(zhí)行。用戶可以恢復(fù)執(zhí)行,直到core[m]到達(dá)故障點(diǎn),在該點(diǎn)處,可以停止硬件試驗(yàn)程序的執(zhí)行。用戶可以恢復(fù)硬件試驗(yàn)程序的執(zhí)行,直到軌跡陣列觸發(fā)期望的條件。在780,當(dāng)在core[m]上的硬件試驗(yàn)程序的執(zhí)行停止時,可以在具有被使能的時鐘的核core
-core [η]的每一個上停止執(zhí)行。返回到745,可以執(zhí)行當(dāng)前core [m]的分析以確定故障的根本起因。當(dāng) 確定了故障的根本起因時,方法700進(jìn)行到755,方法700結(jié)束。方法700可以使得能夠識別在程序代碼的執(zhí)行期間在故障點(diǎn)前與程序代碼的執(zhí)行相關(guān)聯(lián)的興趣點(diǎn)。識別興趣點(diǎn)可以使得人們能夠執(zhí)行起因和效果分析,以確定導(dǎo)致故障的情況。圖8是根據(jù)延遲并且響應(yīng)于來自第一處理器組的輸入而在第二處理器和第三處理器上執(zhí)行程序代碼的系統(tǒng)的第四特定實(shí)施例的框圖,該系統(tǒng)被一般地指定為800。計算機(jī)系統(tǒng)800可以包括計算機(jī)系統(tǒng)814,其可以被用戶(例如,實(shí)驗(yàn)室技術(shù)人員、系統(tǒng)管理員或操作員)810控制。系統(tǒng)800可以用于在幾個延遲的處理器核(例如,core
、core [I]、core [2]、…、core [n] )840、850、860之一上、借助于調(diào)試器軟件812來執(zhí)行程序代碼(例如,硬件試驗(yàn)程序、測試程序或測試情況),每個延遲的處理器核840、850、860被實(shí)現(xiàn)使得根據(jù)延遲提供向每個延遲的處理器核840、850、860的輸入836、844、856。延遲的處理器核840、850、860可以被包括在實(shí)驗(yàn)室測試計算機(jī)卡(例如,實(shí)驗(yàn)室啟動卡(lab bring-up card))830上。實(shí)驗(yàn)室測試計算機(jī)卡830可以被擴(kuò)展,以包括基于用戶801的確定而需要的另外的延遲處理器核。例如,圖8示出可以在連接到與計算機(jī)系統(tǒng)814相關(guān)聯(lián)的槽816的輸入/輸出卡(10卡)上的實(shí)驗(yàn)室測試計算機(jī)卡830的實(shí)現(xiàn)方式。為了說明,系統(tǒng)800可以對應(yīng)于計算機(jī)系統(tǒng)100,并且實(shí)驗(yàn)室測試計算機(jī)卡830可以是可裝卸計算機(jī)卡130,其被配置為連接到擴(kuò)展槽120。實(shí)驗(yàn)室測試計算機(jī)卡830可以包括幾個延遲的處理器核840、850、860,它們可以根據(jù)延遲被提供一組輸入836、844、856。處理器核840、850、860可以串聯(lián)地互連,每一個接收該組輸入836、844、856,以通過計算機(jī)系統(tǒng)814執(zhí)行來自具有該組輸入的core
832的程序代碼。每個處理器核840、850、860可以根據(jù)來自與處理器核840、850、860相關(guān)聯(lián)的FIFO 存儲器 834、842、854 的延遲接收輸入 836、844、856。FIFO 存儲器 834、842、852、854可以串聯(lián)成鏈。使得除了初始從計算機(jī)系統(tǒng)814接收該組輸入的第一核832之外,每一個FIFO存儲器834、842、852、854從前一個FIFO接收該組輸入??梢曰诙喾N因素來確定可以在實(shí)驗(yàn)室測試計算機(jī)卡830上配置的處理器核的數(shù)量,這些因素諸如是用于保持處理器核和處理器核的類型的實(shí)驗(yàn)室測試計算機(jī)卡的容量。用戶可以修改實(shí)驗(yàn)室測試計算機(jī)卡830以識別與程序代碼的執(zhí)行相關(guān)聯(lián)的一個或多個興趣點(diǎn)。例如,用戶可以修改或在一個或多個FIFO存儲器834、842、852、854中插入邏輯,以布置與程序代碼的特定部分相關(guān)聯(lián)的標(biāo)記或一組標(biāo)記(例如,標(biāo)志、指示符或氣泡)。用戶可以隨后執(zhí)行一個或多個FIFO存儲器的掃描轉(zhuǎn)儲,以產(chǎn)生所有事件軌跡(AET),該軌跡可以幫助用戶確定對于與程序代碼的執(zhí)行相關(guān)聯(lián)的特定興趣點(diǎn)要關(guān)注的下一個處理器核。而且,標(biāo)記的使用可以允許用戶建立狀態(tài)機(jī)或應(yīng)用算法,以關(guān)注與程序代碼的執(zhí)行相關(guān)聯(lián)的一個或多個事件。圖9是根據(jù)延遲并且響應(yīng)于來自第一處理器組的輸入而在第二處理器和第三處理器上執(zhí)行程序代碼的系統(tǒng)的第四特定實(shí)施例的系統(tǒng)圖,該系統(tǒng)被一般地指定為900。計算機(jī)系統(tǒng)900包括計算機(jī)芯片910,其具有多個同質(zhì)的核(例如,處理器核)922、932、942,它們每個能夠使用在計算機(jī)芯片910內(nèi)可獲得的一組系統(tǒng)資源來執(zhí)行處理操作。核922、932、942可以串聯(lián)地互連,并且核922、932、942的每一個可以與獨(dú)立的和不同的FIFO高速緩存920、930、940相關(guān)聯(lián)。例如,與每個核922、932、942相關(guān)聯(lián)的FIFO高速緩存920,930,940可以是在核內(nèi)部的高速緩存。核922、932、942和高速緩存920、930、940可以通過高速緩存控制邏輯和互連線互連。高速緩存920、930、940的每一個可以連接到計算機(jī)芯片910的系統(tǒng)輸入總線916。系統(tǒng)輸入總線916可以連接到計算機(jī)芯片910的存儲器控制器(MC) 912。MC912可以訪問存儲器914,諸如隨機(jī)存取存儲器(RAM)。該存儲器可以在計算機(jī)芯片910上,或遠(yuǎn)離而連接到計算機(jī)芯片910。存儲器914可以包括由MC912可訪問的一組指令。在運(yùn)行期間,第一核922可以根據(jù)來自系統(tǒng)輸入總線916的單組輸入來執(zhí)行該組指令。MC912可以訪問存儲器914以獲得該組指令。每個核922、932、942可以響應(yīng)于單組輸入以執(zhí)行該組指令。單組輸入可以例如包括一組輸入信號、時鐘信號和與該組指令的執(zhí)行相關(guān)的對應(yīng)數(shù)據(jù)。可以從存儲器914獲得一組數(shù)據(jù),并且將該組數(shù)據(jù)通過MC912提供到每個高速緩存920、930、940。每個高速緩存920、930、940可以向連接到該高速緩存的每個核922、932、942提供該組數(shù)據(jù)。在特定實(shí)施例中,該組數(shù)據(jù)可以相對于每個核922、932、942是唯一的。在系統(tǒng)900的另一個特定實(shí)施例中,高速緩存920可以無延遲地向第一核922輸出單組輸入,并且第一核922可以響應(yīng)于從高速緩存920接收到單組輸入而執(zhí)行該組指令。在系統(tǒng)900的另一個特定實(shí)施例中,高速緩存920可以根據(jù)與時鐘信號相關(guān)聯(lián)的延遲來延遲向第一核922的單組輸入的輸出。向核922提供的單組輸入可以在核922響應(yīng)于單組輸入而執(zhí)行該組指令之前、期間或之后被輸出到高速緩存930。高速緩存930可以根據(jù)第一延遲向核932和隨后的高速緩存(例如,940)輸出該單組輸入。核932可以根據(jù)從存儲器914獲得的該組數(shù)據(jù)并且響應(yīng)于該單組輸入來執(zhí)行該組指令。高速緩存940可以根據(jù)第二延遲向核942輸出單組輸入。核942可以根據(jù)從存儲器914獲得的該組數(shù)據(jù)并且響應(yīng)于該單組輸入來執(zhí)行該組指令。在系統(tǒng)900的一個實(shí)施例中,計算機(jī)芯片910可以包括一個或多個另外的核和與每個另外的核對應(yīng)的一個或多個另外的高速緩存。另外的高速緩存的每一個可以通過下述方式與高速緩存920、930、940類似地工作:從另一個高速緩存接收單組輸入,并且根據(jù)延遲向另外的核之一輸出該單組輸入。另外的高速緩存的每個可以接收從經(jīng)由MC912設(shè)置的存儲器914獲得該組數(shù)據(jù)。另外的高速緩存的每一個可以向連接到該另外的高速緩存的另外的核提供該組數(shù)據(jù)。高速緩存920、930、940的每一個可以存儲單組輸入,使得時鐘信號的一個時鐘周期對應(yīng)于高速緩存線。高速緩存920、930、940的每一個的大小可以取決于幾個因素,包括基于與用于一個時鐘周期的單組輸入相關(guān)聯(lián)的數(shù)據(jù)量的高速緩存類型、存儲容量和存儲考慮或其任何組合。計算機(jī)芯片910可以是多核處理器,包括多個核,每一個與一個高速緩存相關(guān)聯(lián)。在一個實(shí)施例中,計算機(jī)芯片910的實(shí)現(xiàn)方式可以表示與可配置的單指令多數(shù)據(jù)(RC-SIMD)架構(gòu)類似地工作的計算機(jī)架構(gòu)。然而,該實(shí)現(xiàn)方式可以與RC-SMD架構(gòu)的傳統(tǒng)實(shí)現(xiàn)方式不同在于:向每個核922、932、942提供單組輸入,以允許每個核922、932、942基于單組系統(tǒng)資源來執(zhí)行一組指令。該實(shí)現(xiàn)方式可以與RC-SMD架構(gòu)的傳統(tǒng)實(shí)現(xiàn)方式類似地工作,使得系統(tǒng)輸入總線916可以支持一組延遲線,以允許根據(jù)該組延遲線、基于時間向高速緩存920、930、940分布該組數(shù)據(jù)。該實(shí)現(xiàn)方式可以允許系統(tǒng)輸入總線916的該組延遲線的每條被重新配置,使得向高速緩存920、930、940的每一個提供的一組數(shù)據(jù)是不同的。具有單個計算機(jī)芯片的系統(tǒng)900的實(shí)現(xiàn)方式可以通過下述方式與RC-SMD架構(gòu)類似地工作:根據(jù)在多核處理器的每一個上的各種時延,支持由一組指令表示的多個工作負(fù)荷(例如,多媒體工作負(fù)荷)的執(zhí)行。根據(jù)系統(tǒng)900的、根據(jù)在計算機(jī)芯片上的延遲執(zhí)行一組指令可以有助于調(diào)節(jié)處理器存儲器業(yè)務(wù),使得每一個處理器(或核)不試圖在同一時刻訪問存儲器。該實(shí)現(xiàn)方式可以通過下述方式降低與實(shí)現(xiàn)RC-SMD架構(gòu)相關(guān)聯(lián)的硬件的成本:降低用于支持在獨(dú)立系統(tǒng)上的一組指令的執(zhí)行的硬件的數(shù)量,該獨(dú)立系統(tǒng)每一個使用獨(dú)立的一組系統(tǒng)資源,來用于在每個處理器上執(zhí)行一組指令。在此所述的實(shí)施例的說明意欲提供各個實(shí)施例的結(jié)構(gòu)的總體理解。該說明不意欲作為利用在此所述的結(jié)構(gòu)或方法的設(shè)備和系統(tǒng)的全部元件和特征的的完整說明。許多其他實(shí)施例對于閱讀了本公開的本領(lǐng)域內(nèi)的技術(shù)人員可以是明顯的??梢岳煤蛷谋竟_得出其他實(shí)施例,使得可以在不偏離本公開的范圍的情況下進(jìn)行結(jié)構(gòu)和邏輯替換與改變,例如,可以以與在附圖中所示不同的順序來執(zhí)行方法步驟,或者,可以省略一個或多個方法步驟。因此,本公開和附圖要被看作說明性的而不是限定性的。而且,雖然已經(jīng)在此說明和描述了特定實(shí)施例,但是應(yīng)當(dāng)明白,被設(shè)計來實(shí)現(xiàn)相同或類似結(jié)果的任何隨后的結(jié)構(gòu)可以替代所示的特定實(shí)施例。本公開意欲涵蓋各個實(shí)施例的任何和全部的隨后的適配或變化。上面的實(shí)施例和在此未具體描述的其他實(shí)施例的組合將對于閱讀了說明書的本領(lǐng)域內(nèi)的技術(shù)人員是顯然的。在明白本公開的摘要將不用于解釋或限制權(quán)利要求的范圍或含義的情況下,提交了本公開的摘要。另外,在上述的詳細(xì)說明中,可以將各種特征編組在一起或在單個實(shí)施例中描述,以用于使得本公開流暢。本公開不要被解釋為反映下述意愿:所要求保護(hù)的實(shí)施例要求比在每個權(quán)利要求中明確陳述的更多的特征。而是,如所附的權(quán)利要求所反映,所要求保護(hù)的主題可以涉及比所公開的實(shí)施例的任何一個的全部特征少的特征。
權(quán)利要求
1.一種方法,包括: 在第一先入先出(FIFO)存儲器處從包括第一處理器的第一處理器組接收第一處理器輸入,其中所述第一處理器組被配置為基于所述第一處理器輸入執(zhí)行程序代碼,所述第一處理器輸入包括一組輸入信號、時鐘信號和用于執(zhí)行所述程序代碼的對應(yīng)數(shù)據(jù); 在所述第一 FIFO存儲器處存儲所述第一處理器輸入; 向第二 FIFO存儲器和第二處理器輸出來自所述第一 FIFO存儲器的所述第一處理器輸入,其中所述第二處理器連接到所述第一 FIFO存儲器,其中所述第一處理器輸入根據(jù)第一延遲被輸出到所述第二處理器; 響應(yīng)于所述第一處理器輸入,在所述第二處理器處執(zhí)行所述程序代碼的至少第一部分; 在所述第二 FIFO存儲器處存儲所述第一處理器輸入; 向連接到所述第二 FIFO存儲器的第三處理器輸出來自所述第二 FIFO存儲器的所述第一處理器輸入,其中所述第一處理器輸入根據(jù)第二延遲被輸出到所述第三處理器;以及響應(yīng)于所述第一處理器輸入,在所述第三處理器處執(zhí)行所述程序代碼的至少第二部分。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述第一延遲和所述第二延遲每一個超過兩個時鐘周期,并且所述第一延遲不等于所述第二延遲。
3.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括:同時停止所述第一處理器、所述第二處理器和所述第三處理器 的執(zhí)行。
4.根據(jù)權(quán)利要求3所述的方法,進(jìn)一步包括:在同時停止所述第一處理器、所述第二處理器和所述第三處理器的執(zhí)行后,從所述第一處理器、所述第二處理器和所述第三處理器的至少一個提取第一信息,其中,所述第一信息涉及處理器系統(tǒng)信息。
5.根據(jù)權(quán)利要求4所述的方法,進(jìn)一步包括: 在所述第一 FIFO存儲器和所述第二 FIFO存儲器之一處檢測指示符,其中,所述指示符與所述程序代碼的執(zhí)行相關(guān),并且其中,所述同時停止所述第一處理器、所述第二處理器和所述第三處理器的執(zhí)行是基于所述指示符的檢測; 響應(yīng)于所述指示符的檢測,從所述第一 FIFO存儲器和所述第二 FIFO存儲器的至少一個提取第二信息,其中,所述第二信息涉及從其提取了所述第二信息的所述第一 FIFO存儲器和所述第二 FIFO存儲器的所述至少一個的內(nèi)容;以及 對于所述第一信息和所述第二信息的至少一個執(zhí)行分析,以確定在所述第二處理器和所述第三處理器的至少一個處的所述程序代碼的執(zhí)行的狀態(tài)。
6.根據(jù)權(quán)利要求5所述的方法,進(jìn)一步包括:基于所述分析來恢復(fù)在所述第二處理器和所述第三處理器的至少一個處的所述程序代碼的至少一部分的執(zhí)行。
7.根據(jù)權(quán)利要求3所述的方法,其中,同時停止所述第一處理器、所述第二處理器和所述第三處理器的執(zhí)行是基于與所述程序代碼的執(zhí)行相關(guān)的事件的出現(xiàn)的檢測,所述方法進(jìn)一步包括: 從所述第二處理器和所述第三處理器之一提取處理器系統(tǒng)信息; 基于所述處理器系統(tǒng)信息來選擇至少一個處理器來恢復(fù)所述程序代碼的至少一部分的執(zhí)行,其中,被選擇來恢復(fù)執(zhí)行的所述至少一個處理器包括所述第二處理器和所述第三處理器的至少一個;并且 在被選擇來恢復(fù)執(zhí)行的所述至少一個處理器處恢復(fù)所述程序代碼的所述至少一部分的單步驟執(zhí)行。
8.根據(jù)權(quán)利要求7所述的方法,進(jìn)一步包括:在恢復(fù)單步驟執(zhí)行之前修改所述處理器系統(tǒng)信息。
9.一種系統(tǒng),包括: 第一先入先出(FIFO)存儲器,被配置為從包括第一處理器的第一處理器組接收第一處理器輸入,所述第一處理器輸入包括一組輸入信號、時鐘信號和用于通過所述第一處理器執(zhí)行所述程序代碼的對應(yīng)數(shù)據(jù),其中,所述第一 FIFO存儲器包括用于存儲所述第一處理器輸入并且向第二 FIFO存儲器和向第二處理器輸出所述第一處理器輸入的邏輯,其中,所述第一 FIFO存儲器根據(jù)第一延遲向所述第二處理器輸出所述第一處理器輸入; 所述第二處理器,連接到所述第一 FIFO存儲器,其中,所述第二處理器被配置為響應(yīng)于所述第一處理器輸入而執(zhí)行所述程序代碼的至少第一部分; 所述第二 FIFO存儲器,其中,所述第二 FIFO存儲器包括用于存儲所述第一處理器輸入并且根據(jù)第二延遲向第三處理器輸出所述第一處理器輸入的邏輯;以及 所述第三處理器,連接到所述第二 FIFO存儲器,其中,所述第三處理器被配置為響應(yīng)于所述第一處理器輸入而執(zhí)行所述程序代碼的至少第二部分。
10.根據(jù)權(quán)利要求O所述的系統(tǒng),其中,所述第一延遲和所述第二延遲是基于所述時鐘信號的延遲,其中,所述第一延遲和所述第二延遲對應(yīng)于不同數(shù)量的時鐘周期。
11.根據(jù)權(quán)利要求10所述的系統(tǒng),其中,所述第一延遲和所述第二延遲每一個是預(yù)定數(shù)量的時鐘周期。
12.根據(jù)權(quán)利要求9所述的系統(tǒng),其中,所述系統(tǒng)作為可配置單個輸入多數(shù)據(jù)(RC-SIMD)架構(gòu)來工作。
13.根據(jù)權(quán)利要求9所述的系統(tǒng),其中,所述第一處理器、所述第二處理器和所述第三處理器是多核處理器芯片的一部分。
14.根據(jù)權(quán)利要求9所述的系統(tǒng),其中,所述第一FIFO存儲器和所述第二 FIFO存儲器可配置來被禁止,其中,當(dāng)所述第一 FIFO存儲器被禁止時,所述第二處理器被禁止執(zhí)行所述程序代碼,并且其中,當(dāng)所述第二 FIFO存儲器被禁止時,所述第三處理器被禁止執(zhí)行所述程序代碼。
15.一種可裝卸計算機(jī)卡,包括: 接口,可連接到計算機(jī)系統(tǒng)板的擴(kuò)展槽; 第一先入先出(FIFO)存儲器,被配置為當(dāng)所述接口可操作地連接到所述擴(kuò)展槽時,從計算機(jī)系統(tǒng)板的第一處理器組接收第一處理器輸入,其中,所述第一處理器組包括第一處理器,所述第一處理器輸入包括一組輸入信號、時鐘信號和用于通過所述第一處理器執(zhí)行所述程序代碼的對應(yīng)數(shù)據(jù),其中,所述第一 FIFO存儲器包括用于存儲所述第一處理器輸入并且向第二 FIFO存儲器和向第二處理器輸出所述第一處理器輸入的邏輯,其中,所述第一FIFO存儲器根據(jù)與所述第一處理器輸入相關(guān)聯(lián)的第一延遲向所述第二處理器輸出所述第一處理器輸入; 所述第二處理器,連接到所述第一 FIFO存儲器,其中,所述第二處理器被配置為響應(yīng)于所述第一處理器輸入而執(zhí)行所述程序代碼的至少第一部分; 所述第二 FIFO存儲器,其中,所述第二 FIFO存儲器包括用于存儲所述第一處理器輸入并且根據(jù)與所述第一處理器輸入相關(guān)聯(lián)的第二延遲向第三處理器輸出所述第一處理器輸入的邏輯;以及 所述第三處理器,連接到所述第二 FIFO存儲器,其中,所述第三處理器被配置為響應(yīng)于所述第一處理器輸入而執(zhí)行所述程序代碼的至少第二部分。
16.根據(jù)權(quán)利要求15所述的可裝卸計算機(jī)卡,進(jìn)一步包括端口,所述端口被配置為使能到第二計算機(jī)系統(tǒng)的連接。
17.根據(jù)權(quán)利要求15所述的可裝卸計算機(jī)卡,其中,所述第一FIFO存儲器是所述第二處理器的高速緩存,并且其中,所述第二 FIFO存儲器是所述第三處理器的高速緩存。
18.根據(jù)權(quán)利要求15所述的可裝卸計算機(jī)卡,其中,所述第一FIFO存儲器和所述第二處理器都被包含在專用集成電路(ASIC)和現(xiàn)場可編程門陣列(FPGA)的至少一個中。
19.根據(jù)權(quán)利要求15所述的可裝卸計算機(jī)卡,其中,所述第一FIFO存儲器和所述第二處理器都被包含在計算機(jī)芯片上。
20.根據(jù)權(quán)利要求15所述的可裝卸計算機(jī)卡,其中,所述第一FIFO存儲器具有至少一個端口,所述至少一個端口使能所述第一 FIFO存儲器的配置,并且使得能夠訪問所述第一FIFO存儲器的 內(nèi)容。
全文摘要
公開了一種方法、系統(tǒng)和可裝卸計算機(jī)卡。第一先入先出(FIFO)存儲器可以從包括第一處理器的第一處理器組接收第一處理器輸入。第一處理器組被配置為基于包括一組輸入信號、時鐘信號和對應(yīng)數(shù)據(jù)的第一處理器輸入來執(zhí)行程序代碼。第一FIFO可以存儲第一處理器輸入,并且可以根據(jù)第一延遲向第二FIFO存儲器和第二處理器輸出第一處理器輸入。第二FIFO存儲器可以存儲第一處理器輸入,并且可以根據(jù)第二延遲向第三處理器輸出第一處理器輸入。響應(yīng)于第一處理器輸入,第二處理器可以執(zhí)行程序代碼的至少第一部分,第三處理器可以執(zhí)行程序代碼的至少第二部分。
文檔編號G06F11/36GK103197914SQ20131000212
公開日2013年7月10日 申請日期2013年1月4日 優(yōu)先權(quán)日2012年1月5日
發(fā)明者M.D.貝洛斯, M.S.弗雷德里克森, S.D.弗賴, S.P.瓊斯, C.B.麥克布萊德 申請人:國際商業(yè)機(jī)器公司