通過標記cpu流量為特殊來避免死鎖的制作方法
【專利說明】通過標記CPU流量為特殊來避免死鎖
[0001 ] 本申請是分案申請,其原申請的中國國家申請?zhí)枮?00910249698.X,申請日為2009年12月14日,發(fā)明名稱為“通過標記CPU流量為特殊來避免死鎖”。
技術(shù)領(lǐng)域
[0002]本發(fā)明一般地涉及計算機硬件,并更特別地涉及通過標記CPU流量為特殊來避免死鎖的方法和系統(tǒng)。
【背景技術(shù)】
[0003]常規(guī)的計算機系統(tǒng)包括中央處理單元(CPU)且也可以包括已知為并行處理單元(PPU)的協(xié)處理器。CPU將一定的處理操作卸下給PPU以減少CPU的處理工作量。其中,這些處理操作包括壓縮和解壓縮操作。當(dāng)CPU需要這些處理操作時,CPU發(fā)出請求給PPU,包括讀請求和/或?qū)懻埱?。例如,CPU可能需要將數(shù)據(jù)寫到可能以壓縮的格式存儲的系統(tǒng)存儲器中。CPU發(fā)送寫請求給PPU,然后PHJ可以讀和解壓縮與該寫請求相關(guān)的數(shù)據(jù)并將解壓縮的和與新數(shù)據(jù)合并的原始數(shù)據(jù)寫到系統(tǒng)存儲器中。
[0004]有時,CPU發(fā)出的寫請求可能引起PPU發(fā)出必須在初始寫請求能完成之前完成的一個或多個“派生的”讀請求。例如,PPU可以發(fā)出以與CPU相關(guān)的系統(tǒng)存儲器單元為目標的派生的讀請求。當(dāng)讀事務(wù)完成時,系統(tǒng)存儲器發(fā)出讀完成給PPU,這通知PPU該事務(wù)完成。
[0005]但是,當(dāng)CPU和PPU通過具有一個或多個待決寫請求的外圍部件接口快速(PCIe)總線連接時,可能產(chǎn)生問題。由于PCIe總線的排序規(guī)則,讀完成不能超過寫請求,因此任何派生的讀請求不能返回讀完成給PPU。因此,初始的寫請求不能完成。這種情況在本領(lǐng)域中已知為循環(huán)依存或“死鎖”。死鎖使在CPU和PPU之間的一些或所有的通信停止并不利地影響計算機系統(tǒng)的處理吞吐量。下面討論死鎖條件的一些例子。
[0006]在第一個例子中,如果PHJ需要從存儲在系統(tǒng)存儲器中的頁表讀且寫請求在PCIe總線中待決,則可能發(fā)生死鎖。當(dāng)PPU向發(fā)出讀請求給系統(tǒng)存儲器以從頁表中獲取項目時,與讀請求相關(guān)的讀完成不能返回給PPU,因此初始的寫請求不能完成。
[0007]當(dāng)CPU發(fā)出以在與PPU相關(guān)的高速緩存存儲器單元中的高速緩存行為目標的寫請求給PPU時,也可能發(fā)生死鎖。為了完成寫請求,PPU首先通過檢查標簽存儲件確定高速緩存行是否壓縮。標簽存儲件指示與在高速緩存存儲器單元中的最近訪問的高速緩存行相關(guān)的壓縮狀態(tài)。當(dāng)標簽存儲件不包括由寫請求指定的高速緩存行的壓縮狀態(tài)時,PPU發(fā)出讀請求給系統(tǒng)存儲器以訪問包括在高速緩存存儲器單元中的每個高速緩存行的壓縮狀態(tài)的后備存儲件。后備存儲件返回指定的高速緩存行的壓縮狀態(tài)并發(fā)出讀完成。但是,當(dāng)寫請求在PCIe中待決時,由于與讀請求相關(guān)的讀完成不能超過這些待決的寫請求,因此可能發(fā)生死鎖。
[0008]當(dāng)CPU試圖寫數(shù)據(jù)到壓縮的系統(tǒng)存儲器的區(qū)域中(本領(lǐng)域中已知為“壓縮片”)時,可能發(fā)生第三種死鎖,。CPU發(fā)出指定壓縮片和包括寫數(shù)據(jù)的寫請求給PPU。PPU發(fā)出讀請求給系統(tǒng)存儲器以讀壓縮片。當(dāng)寫請求在PCIe中待決時,由于與讀請求相關(guān)的讀完成又不能超過這些待決的寫請求,因此可能發(fā)生死鎖。
[0009]除了這三個例子外,還有數(shù)個其他情況可能導(dǎo)致死鎖。因此,本領(lǐng)域中仍然需要避免死鎖的方法和系統(tǒng)。
【發(fā)明內(nèi)容】
[0010]本發(fā)明的實施例提供了在計算機系統(tǒng)中避免死鎖的方法和系統(tǒng),該計算機系統(tǒng)具有第一處理單元、第二處理單元、存儲器橋、系統(tǒng)存儲器和將第二處理單元連接到第一處理單元、存儲器橋和系統(tǒng)存儲器的總線。當(dāng)讀或?qū)懻埱髲牡谝惶幚韱卧l(fā)送到第二處理單元時避免了死鎖。
[0011]根據(jù)本發(fā)明實施例的避免死鎖的方法包括:在總線的第一虛擬通道上在第二處理單元接收讀或?qū)懻埱?;在處理讀或?qū)懻埱髸r在第二處理單元產(chǎn)生派生的讀請求;通過總線的第二虛擬通道將派生的讀請求發(fā)送給系統(tǒng)存儲器;在總線的第二虛擬通道上接收派生的讀請求的完成;和完成接收的讀或與請求。
[0012]根據(jù)本發(fā)明實施例的避免死鎖的系統(tǒng)包括在第二處理單元中的總線接口單元。該總線接口單元配置為在第一虛擬通道上從第一處理單元接收讀或?qū)懻埱?,并將在處理讀或?qū)懻埱髸r產(chǎn)生的派生的讀請求通過第二虛擬通道發(fā)送。
【附圖說明】
[0013]為了詳細地理解本發(fā)明的上述特征,對于以上簡要說明的本發(fā)明,將參照實施例進行更為具體的描述,其中對一些實施例在附圖中進行了圖示。然而,需要注意的是,附圖只是圖示本發(fā)明的代表性實施例,因此不能認為附圖限制了本發(fā)明的范圍,本發(fā)明可以允許其他同樣有效的實施例。
[0014]圖1是圖示配置為實現(xiàn)本發(fā)明的一個或多個方面的計算機系統(tǒng)的框圖;
[0015]圖2是根據(jù)本發(fā)明一個實施例的圖1中的計算機系統(tǒng)的并行處理子系統(tǒng)的框圖;
[0016]圖3A是根據(jù)本發(fā)明一個實施例的在圖2的并行處理單元(PPU)之一中的通用處理簇(GPC)的框圖;
[0017]圖3B是根據(jù)本發(fā)明一個實施例的在圖2中的并行處理單元之一中的分區(qū)單元的框圖;
[0018]圖4是根據(jù)本發(fā)明一個實施例的配置為避免死鎖的計算機系統(tǒng)的框圖;和
[0019]圖5是根據(jù)本發(fā)明一個實施例的避免死鎖的方法步驟的流程圖。
【具體實施方式】
[0020]在下文的描述中,給出了大量具體的細節(jié)以便提供對本發(fā)明更為徹底的理解。然而,對于本領(lǐng)域技術(shù)人員來說顯而易見的是,本發(fā)明可以無需一個或多個這些具體細節(jié)而得以實施。在其他的例子中,為了避免與本發(fā)明發(fā)生混淆,公知的一些特征未進行描述。
[0021]系統(tǒng)概述
[0022]圖1是圖示配置為實現(xiàn)本發(fā)明一個或多個方面的計算機系統(tǒng)100的框圖。計算機系統(tǒng)100包括中央處理單元(CPU) 102和系統(tǒng)存儲器104,二者通過存儲器橋105經(jīng)由總線路徑進行通信。存儲器橋105可以如圖1所示集成到CPU 102中。作為替換,存儲器橋105可以是慣常設(shè)備例如北橋芯片,其通過總線連接到CPU 102。存儲器橋105通過通信路徑106 (例如HyperTransport (超傳輸)鏈路)與1/0(輸入/輸出)橋107相連接。I/O橋107例如可以是南橋芯片,其從一個或多個用戶輸入設(shè)備108 (例如鍵盤、鼠標)接收用戶輸入,并將該輸入通過路徑106和存儲器橋105轉(zhuǎn)發(fā)給CPU 102。并行處理子系統(tǒng)112通過總線或其他通信路徑113 (例如PCI Express、加速圖形端口或超傳輸鏈路)與存儲器橋105相耦合;在一個實施例中,并行處理子系統(tǒng)112是將像素提供給顯示設(shè)備110 (例如傳統(tǒng)的CRT或基于IXD的顯示器)的圖形子系統(tǒng)。系統(tǒng)盤114同樣連接于I/O橋107。開關(guān)116提供了 I/O橋107和諸如網(wǎng)絡(luò)適配器118以及各種插卡120和121的其他部件之間的連接。包括USB或其他端口連接、CD驅(qū)動器、DVD驅(qū)動器、電影記錄設(shè)備等的其他部件(圖中沒有明確示出),也可以與I/O橋107相連接。將圖1中的各種部件相互連接的通信路徑可以用任何適用的協(xié)議來實現(xiàn),比如PCI (外設(shè)部件互連)、PCI Express (PC1-E)、AGP (加速圖形端口)、超傳輸或任何其他總線或點對點通信協(xié)議,并且不同設(shè)備之間的連接可以使用不同協(xié)議,如本領(lǐng)域已知的。
[0023]在一個實施例中,并行處理子系統(tǒng)112包括為圖形和視頻處理優(yōu)化的電路,包括例如視頻輸出電路,并構(gòu)成了圖形處理單元(GPU)。在另一實施例中,并行處理子系統(tǒng)112包括為通用處理優(yōu)化,并保留了底層計算架構(gòu)的電路,本文將更加詳細地描述。在另一實施例中,并行處理子系統(tǒng)112可以集成一個或多個其他系統(tǒng)元件,例如存儲器橋105、CPU 102和I/O橋107,以形成片上系統(tǒng)(SoC)。
[0024]可以理解的是,這里示出的系統(tǒng)只是示意性的,可以對其進行變化和修改。包括橋的數(shù)量和排列的連接拓撲結(jié)構(gòu)可以根據(jù)需要修改。例如,在一些實施例中,系統(tǒng)存儲器104直接與CPU 102相連接而不是通過橋相連接,其他設(shè)備通過存儲器橋105和CPU 102與系統(tǒng)存儲器104相通信。在其他可選擇的拓撲結(jié)構(gòu)中,并行處理系統(tǒng)112與I/O橋107相連接或直接與CPU 102相連接,而不是和存儲器橋105相連接。在其他實施例中,CPU102、I/0橋107、并行處理子系統(tǒng)112和存儲器橋105的一個或多個被集成到一個或多個芯片上。這里示出的特定部件是可選的;例如,可以支持任何數(shù)量的插卡或外設(shè)。在一些實施例中,省去了開關(guān)116,網(wǎng)