對用于快速pci高速多功能設(shè)備地址解碼的數(shù)據(jù)解碼的制作方法
【專利摘要】一種利用目標(biāo)函數(shù)數(shù)據(jù)查找表的快速PCIe多功能設(shè)備地址解碼的裝置和方法。在PCIe請求分組內(nèi)提供一個(gè)或者多個(gè)解碼指示(例如,作為目標(biāo)的函數(shù)),由此消除在端點(diǎn)設(shè)備中在解碼過程期間對于目標(biāo)函數(shù)搜索的需要。這支持單個(gè)解碼器在復(fù)雜的多功能設(shè)備中的單步解碼實(shí)現(xiàn)。
【專利說明】對用于快速PCI高速多功能設(shè)備地址解碼的數(shù)據(jù)解碼
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)通信領(lǐng)域,并且更特別地涉及一種利用目標(biāo)函數(shù)數(shù)據(jù)查找表的快速PCIe多功能設(shè)備地址解碼的裝置和方法。
【背景技術(shù)】
[0002]外圍部件互聯(lián)高速(PCIe)是被設(shè)計(jì)用于舊的PC1、PC1-X和AGP總線標(biāo)準(zhǔn)的計(jì)算機(jī)擴(kuò)展卡標(biāo)準(zhǔn)。PCIe標(biāo)準(zhǔn)的當(dāng)前版本支持硬件I/O虛擬化。PCIe基于點(diǎn)對點(diǎn)拓?fù)洌渲蟹蛛x的串行鏈路將每個(gè)設(shè)備連接到根聯(lián)合體(root complex)(主機(jī))。PCIe總線鏈路支持在任何兩個(gè)端點(diǎn)(endpoint)之間的全雙工通信,而對跨多個(gè)端點(diǎn)的并發(fā)訪問沒有限制。PCIe通信被封裝在分組中,其中對數(shù)據(jù)和狀態(tài)消息流量分組化和解分組化的工作由PCIe端口的事務(wù)層處理。
【發(fā)明內(nèi)容】
[0003]因此,根據(jù)本發(fā)明提供了一種PCI高速(PCIe)地址解碼的方法,該方法包括:在PCIe主機(jī)中提供查找表,查找表操作用于執(zhí)行從地址范圍向目標(biāo)函數(shù)的映射;以及利用查找表,向PCIe端點(diǎn)發(fā)送地址和建議的目標(biāo)函數(shù);在PCIe端點(diǎn)利用建議的目標(biāo)函數(shù)對接收的地址解碼;以及核實(shí)建議的目標(biāo)函數(shù)信息。
[0004]還根據(jù)本發(fā)明提供了一種用于在PCI高速(PCIe)主機(jī)中使用的PCIe地址解碼的方法,該方法包括:接收PCIe請求,每個(gè)PCIe請求具有地址;根據(jù)每個(gè)所述地址確定目標(biāo)設(shè)備函數(shù);以及向被發(fā)布給PCIe端點(diǎn)的請求指派目標(biāo)函數(shù)。
[0005]還根據(jù)本發(fā)明提供了一種用于在PCI高速(PCIe)主機(jī)中使用的PCIe地址解碼的方法,該方法包括:在PCIe總線初始化階段期間掃描PCIe設(shè)備和函數(shù);向函數(shù)指派地址范圍;以及構(gòu)建向目標(biāo)函數(shù)映射地址范圍的查找表。
[0006]還根據(jù)本發(fā)明提供了一種用于在PCI高速(PCIe)主機(jī)中使用的PCIe地址解碼的方法,該方法包括:接收來自PCIe主機(jī)的讀取/寫入請求分組;確定請求分組是否包括建議的目標(biāo)函數(shù)數(shù)據(jù);以及如果是的話,驗(yàn)證在所述分組中接收的所述目標(biāo)函數(shù)數(shù)據(jù)。
【專利附圖】
【附圖說明】
[0007]在此僅通過示例的方式參考附圖描述本發(fā)明,在附圖中:
[0008]圖1是圖示了示例PCIe網(wǎng)絡(luò)的框圖,該P(yáng)CIe網(wǎng)絡(luò)并入了本發(fā)明的PCIe快速地址解碼機(jī)制;
[0009]圖2是圖示了用于PCIe端點(diǎn)中的地址解碼的第一示例并行方式的示圖;
[0010]圖3是圖示了用于PCIe端點(diǎn)中的地址解碼的第一示例依序方式的示圖;
[0011]圖4是圖示了用于PCIe端點(diǎn)中的地址解碼的第三示例并行解碼數(shù)據(jù)方式的示圖;
[0012]圖5是圖示了本發(fā)明的PCIe快速地址解碼方法的流程圖。
【具體實(shí)施方式】
[0013]對PCI高速(PCIe)標(biāo)準(zhǔn)的當(dāng)前增強(qiáng)(比如交替請求者ID解譯(ARI)和單根I/O虛擬化(SR-1OV))在單個(gè)PCIe上引入了提高了水平的多功能應(yīng)用集成。此類應(yīng)用利用在被實(shí)施于設(shè)備上的各種函數(shù)之間共享的到主機(jī)的共同PCIe連接。在圖1中示出了圖示了示例PCIe網(wǎng)絡(luò)的系統(tǒng)視圖,該P(yáng)CIe網(wǎng)絡(luò)并入了本發(fā)明的PCIe快速地址解碼機(jī)制。
[0014]被一般地識別為10的系統(tǒng)包括PCI主機(jī)12、PCIe交換機(jī)22和多個(gè)PCIe端點(diǎn)24。PCIe交換機(jī)22經(jīng)由PCI鏈路20連接到PCIe主機(jī)和端點(diǎn)。PCIe主機(jī)12包括一個(gè)或者多個(gè)處理器核14和包括到函數(shù)映射表18的地址的PCIe根聯(lián)合體16。PCIe端點(diǎn)24包括地址解碼電路26、多個(gè)函數(shù)0、1、".Ν28和多個(gè)配置空間29。
[0015]每個(gè)函數(shù)28實(shí)施其自己的PCIe配置29,該P(yáng)CIe配置29提供在函數(shù)的操作之上的標(biāo)準(zhǔn)控制手段。函數(shù)的配置空間邏輯的大部分致力于配置和控制向這一函數(shù)指派的地址區(qū)域。每個(gè)傳入事務(wù)穿過地址解碼邏輯以便確定目標(biāo)設(shè)備。PCIe標(biāo)準(zhǔn)允許地址空間指派和編程中的重要靈活性,從而導(dǎo)致針對每個(gè)函數(shù)需要的復(fù)雜地址解碼邏輯。
[0016]利用提高了水平的多功能應(yīng)用集成,邏輯設(shè)計(jì)者在實(shí)施快速和高效的地址解碼中面對挑戰(zhàn)。一種方式是執(zhí)行如在圖2中所示的并行解碼方式。被一般地引用為30的該并行方案包括多個(gè)配置空間F0、FU…、Fn34、BAR解碼器32和RX地址信息38。RX地址被同時(shí)向所有BAR解碼器應(yīng)用以生成解碼的函數(shù)/BAR36。
[0017]利用并行解碼方式,PCI端點(diǎn)設(shè)備針對每個(gè)函數(shù)實(shí)施專用的解碼邏輯(BAR解碼器)。在單個(gè)步驟中為所有函數(shù)并行執(zhí)行地址解碼。這種方式要求使用許多解碼邏輯實(shí)例,從而導(dǎo)致具有潛在的控制信號路由問題的非常大的解碼邏輯尺寸。
[0018]第二方式是執(zhí)行如在圖3中所示的依序地址解碼。被一般地引用為40的該依序方案包括多個(gè)配置空間H)、F1、...、Fn46、串行BAR選擇復(fù)用器44和BAR解碼器42。串行BAR選擇復(fù)用器接收來自配置空間46和選擇控制52的數(shù)據(jù)。BAR解碼器電路42接收在讀取/寫入請求分組中接收的RX地址信息48和串行BAR選擇復(fù)用器的輸出并且操作用于生成解碼的函數(shù)/BAR50。串行BAR選擇復(fù)用器依序選擇函數(shù)配置空間數(shù)據(jù)中的每個(gè)函數(shù)配置空間數(shù)據(jù)以用于由BAR解碼器42匹配。
[0019]利用依序解碼方式,端點(diǎn)為每個(gè)支持的函數(shù)執(zhí)行地址解碼直至目標(biāo)函數(shù)被標(biāo)識。使用單個(gè)共享的地址解碼器42執(zhí)行地址解碼。地址解碼在多個(gè)步驟中被執(zhí)行,由此在每個(gè)步驟中,函數(shù)之一向解碼器中加載它的地址配置46并且解碼結(jié)果被評估。解碼序列在積極解碼(positive decode)被確定時(shí)停止。雖然這種方式利用了最小邏輯資源,但是它要求重大解碼延時(shí),從而導(dǎo)致帶寬退化。
[0020]在第三方式中,在PCIe請求頭部內(nèi)提供一個(gè)或者多個(gè)解碼指示(decodedirective)(例如,作為目標(biāo)的函數(shù)),由此消除了在端點(diǎn)中在解碼過程期間對于目標(biāo)函數(shù)搜索的需要。這支持單個(gè)解碼器在復(fù)雜的多功能設(shè)備中的單步解碼實(shí)現(xiàn)。
[0021]在圖4中示出了圖示了用于PCIe端點(diǎn)中的地址解碼的第三示例并行解碼數(shù)據(jù)方式的示圖。被一般地引用為60的該解碼數(shù)據(jù)方案包括多個(gè)配置空間R)、F1、...、Fn66、BAR選擇復(fù)用器64和BAR解碼器62。BAR選擇復(fù)用器接收來自配置空間66的數(shù)據(jù)并且直接使用從主機(jī)接收的選擇地址配置之一的擴(kuò)展的解碼數(shù)據(jù)70。BAR解碼器62接收在讀取/寫入請求分組中接收的RX地址信息68和BAR選擇復(fù)用器64的輸出并且操作用于生成確認(rèn)的(驗(yàn)證的)函數(shù)/BAR72。BAR選擇復(fù)用器選擇函數(shù)配置空間數(shù)據(jù)以用于由BAR解碼器62匹配(驗(yàn)證)。
[0022]在一個(gè)實(shí)施例中,根據(jù)解碼數(shù)據(jù)機(jī)制,PCIe主機(jī)(或者任何其他請求者)在PCIe請求分組中包括目標(biāo)函數(shù)數(shù)據(jù)。端點(diǎn)中的PCIe函數(shù)實(shí)施配置空間能力,該配置空間能力提供在使用在請求中的目標(biāo)函數(shù)解碼信息之上的控制。注意,這一特征可以是可選的。因此,并不實(shí)施解碼數(shù)據(jù)機(jī)制的設(shè)備簡單地忽略讀取/寫入請求分組中的目標(biāo)函數(shù)數(shù)據(jù)并且使用在前描述的并行方案或者依序方案執(zhí)行地址解碼。
[0023]在圖5中示出了圖示了本發(fā)明的PCIe快速地址解碼方法的流程圖。PCIe端點(diǎn)設(shè)備接收PCIe讀取/寫入請求(步驟80)。分組的內(nèi)容然后被驗(yàn)證為被正常執(zhí)行(步驟82)PCIe端點(diǎn)檢查目標(biāo)函數(shù)數(shù)據(jù)是否已被包括在請求分組中(步驟84)。
[0024]PCIe端點(diǎn)然后檢查目標(biāo)函數(shù)數(shù)據(jù)的使用是否被支持(步驟86)。注意,在一個(gè)實(shí)施例中,解碼數(shù)據(jù)特征可以通過在設(shè)備配置空間中設(shè)置標(biāo)記被控制。如果目標(biāo)函數(shù)數(shù)據(jù)未被包括在請求分組中或者目標(biāo)函數(shù)數(shù)據(jù)的使用在設(shè)備配置空間中未被支持,則端點(diǎn)設(shè)備使用在前描述的并行方案或者依序方案執(zhí)行地址解碼序列(例如,在依序方案中,端點(diǎn)為每個(gè)支持的函數(shù)執(zhí)行地址解碼直至目標(biāo)函數(shù)被標(biāo)識)(步驟92)。
[0025]如果目標(biāo)函數(shù)存在于請求分組中并且目標(biāo)函數(shù)數(shù)據(jù)的使用在設(shè)備配置空間中被支持,則端點(diǎn)設(shè)備檢查請求地址是否與建議的目標(biāo)函數(shù)的地址范圍之一匹配(步驟88)。如果目標(biāo)函數(shù)地址被積極地檢測到,則地址解碼被驗(yàn)證并且完成(步驟90)。如果地址范圍不再解碼的配置函數(shù)地址內(nèi),則設(shè)備端點(diǎn)可以采取進(jìn)一步的行動,包括例如由于目標(biāo)函數(shù)數(shù)據(jù)的錯(cuò)誤使用而報(bào)告錯(cuò)誤或者嘗試并行或者依序地址解碼。
[0026]注意,PCIe主機(jī)如何執(zhí)行地址范圍到目標(biāo)函數(shù)映射以及目標(biāo)函數(shù)信息如何被傳達(dá)到端點(diǎn)并非關(guān)鍵。在一個(gè)實(shí)施例中,請求發(fā)起器(例如,PCIe主機(jī))在PCIe總線初始化階段期間在PCIe地址范圍和目標(biāo)設(shè)備/函數(shù)之間創(chuàng)建映射。在這一初始化階段期間,主機(jī)軟件掃描所有PCIe設(shè)備和函數(shù)從而詢問它們的地址范圍要求并且隨后指派地址范圍。在這一階段期間,在主機(jī)中構(gòu)建在地址范圍和目標(biāo)函數(shù)之間的表鏈接。這一查找表然后用于向被發(fā)布給PCIe端點(diǎn)的請求指派目標(biāo)函數(shù)屬性。
[0027]目標(biāo)函數(shù)數(shù)據(jù)按照任何適當(dāng)?shù)姆绞奖徊⑷隤CIe請求中,以下呈現(xiàn)了若干可能的示例。
[0028]在第一方案中,部分或者完整目標(biāo)函數(shù)數(shù)據(jù)被包括在被正常保留的PCIe請求頭部比特中。在第二方案中,PCIe頭部擴(kuò)展機(jī)制被用來容納函數(shù)解碼數(shù)據(jù)。在第三方案中,目標(biāo)函數(shù)數(shù)據(jù)被包括在數(shù)據(jù)負(fù)載內(nèi),其中定義的頭部字段指示目標(biāo)數(shù)據(jù)在負(fù)載中的存在。在第四方案中,目標(biāo)數(shù)據(jù)代替被包括在請求分組的末尾處的端到端循環(huán)冗余校驗(yàn)(ECRC)元數(shù)據(jù)。
[0029]以下描述用于構(gòu)建根端口查找表以及確定目標(biāo)函數(shù)號碼的不例方法的描述。在一個(gè)實(shí)施例中,根端口實(shí)施固定尺寸查找表,該固定尺寸查找表保持用于地址范圍的具有關(guān)鍵延時(shí)要求的子集的地址到函數(shù)號碼解譯。對其他函數(shù)的請求在沒有函數(shù)解碼的情況下被發(fā)送。注意,這可能由于穿過依序解碼路徑而引發(fā)更高的處理延時(shí)。
[0030]第一,主機(jī)軟件針對地址范圍要求(例如,針對每個(gè)設(shè)備/函數(shù)的范圍的數(shù)目和范圍大小)掃描所有PCIe設(shè)備的配置空間。注意,典型地這是標(biāo)準(zhǔn)PCIe過程。第二,主機(jī)軟件創(chuàng)建存儲器映射從而向設(shè)備/函數(shù)指派地址范圍并且向函數(shù)的配置空間寫入基地址值。第三,主機(jī)軟件隨著PCIe范圍被指派為所有PCIe范圍創(chuàng)建完整地址到函數(shù)映射表。該表被存儲在主存儲器中。
[0031]接著,主機(jī)軟件為性能關(guān)鍵函數(shù)利用地址到函數(shù)號碼映射初始化根端口映射表。該表可以被飛速(on the fly)更新/重載以支持改變的系統(tǒng)要求。接著,根端口映射表可以充當(dāng)本地高速緩存。例如,如果請求未在根端口映射表中找到函數(shù)信息,則它的地址被捕獲并且軟件例程被調(diào)用以確定具有用于這種類型的請求的轉(zhuǎn)譯是否關(guān)鍵。如果軟件或者其他機(jī)制決定需要該轉(zhuǎn)譯,則函數(shù)信息從主存儲器中的映射表被取讀并且存儲在本地根端口表中。如果表為滿,則現(xiàn)存條目之一可以被刪除。
[0032]在一個(gè)實(shí)施例中,根端口查找表?xiàng)l目結(jié)構(gòu)包括以下各項(xiàng):(1)有效比特;(2)基地址(例如,上至64比特);(3)范圍大小,其是系統(tǒng)依賴的并且作用以指示范圍大小的log2值(假設(shè)范圍總是2的冪);以及⑷目標(biāo)函數(shù)信息(例如,上至16比特)。
[0033]這里使用的術(shù)語僅出于描述特定實(shí)施例的目的并且并不旨在于限制本發(fā)明。如這里所使用的,單數(shù)形式的“一”、“一個(gè)”和“該”旨在于也包括復(fù)數(shù)形式,除非上下文明確地另有指示。還將理解,術(shù)語“包括”和/或“包含”當(dāng)在本說明書中被使用時(shí)指定所陳述的特征、整體、步驟、操作、元件和/或部件的存在,但并不排除一個(gè)或者多個(gè)其他特征、整體、步驟、操作、元件、部件和/或其分組的存在或添加。
[0034]以下權(quán)利要求中的所有裝置或者步驟加功能元素的對應(yīng)結(jié)構(gòu)、材料、動作和等效物旨在于包括用于結(jié)合如具體要求保護(hù)的其他要求保護(hù)的元素執(zhí)行功能的任何結(jié)構(gòu)、材料或者動作。本發(fā)明的描述已經(jīng)出于例示和描述的目的而被呈現(xiàn),但是并非旨在于是窮盡的或者限于按照所公開形式的本發(fā)明。由于本領(lǐng)域技術(shù)人員將容易地想起許多修改和改變,因此本發(fā)明旨在于并未限于這里描述的有限數(shù)目的實(shí)施例。因此,將領(lǐng)會到,可以借助的所有適當(dāng)變型、修改和等效物落入本發(fā)明的范圍內(nèi)。實(shí)施例被選擇和描述以便最佳地說明本發(fā)明的原理和實(shí)際應(yīng)用,以及使得本領(lǐng)域普通技術(shù)人員能夠理解如適合于所預(yù)期的特定使用的、對于具有各種修改的各種實(shí)施例的本發(fā)明。
【權(quán)利要求】
1.一種PCI高速(PCIe)地址解碼的方法,所述方法包括,在PCIe主機(jī)中: 接收PCIe請求,每個(gè)PCIe請求具有地址; 根據(jù)每個(gè)所述地址確定目標(biāo)設(shè)備函數(shù);以及 向被發(fā)布給PCIe端點(diǎn)的請求指派所述目標(biāo)函數(shù)。
2.根據(jù)權(quán)利要求1所述的方法,所述方法包括,在PCIe主機(jī)中: 在PCIe總線初始化階段期間掃描PCIe設(shè)備和函數(shù); 向函數(shù)指派地址范圍;以及 構(gòu)建向所述目標(biāo)函數(shù)映射所述地址范圍的查找表。
3.根據(jù)權(quán)利要求2所述的方法,還包括利用所述查找表以根據(jù)PCI請求地址確定目標(biāo)設(shè)備函數(shù)。
4.根據(jù)權(quán)利要求3所述的方法,還包括向PCIe端點(diǎn)發(fā)送并入了所述請求地址和所述目標(biāo)函數(shù)信息的PCIe讀取/寫入請求分組。
5.根據(jù)任一前述權(quán)利要求所述的方法,所述方法包括,在PCIe端點(diǎn)中: 接收來自PCIe主機(jī)的讀取/寫入請求分組; 確定所述請求分組是否包括建議的目標(biāo)函數(shù)數(shù)據(jù);以及 如果是的話,驗(yàn)證在所述分組中接收的所述目標(biāo)函數(shù)數(shù)據(jù)。
6.根據(jù)權(quán)利要求5所述的方法,其中所述目標(biāo)函數(shù)數(shù)據(jù)針對于基地址寄存器(BAR)內(nèi)容被驗(yàn)證。
7.根據(jù)權(quán)利要求5所述的方法,其中使用正常保留的頭部比特向所述端點(diǎn)傳達(dá)所述目標(biāo)函數(shù)信息。
8.根據(jù)權(quán)利要求5所述的方法,其中使用PCIe頭部擴(kuò)展向所述端點(diǎn)傳達(dá)所述目標(biāo)函數(shù)信息。
9.根據(jù)權(quán)利要求5所述的方法,其中在數(shù)據(jù)負(fù)載內(nèi)向所述端點(diǎn)傳達(dá)所述目標(biāo)函數(shù)信息,所述數(shù)據(jù)負(fù)載在對應(yīng)的頭部中具有指示目標(biāo)函數(shù)信息在所述負(fù)載中存在的字段。
10.根據(jù)權(quán)利要求14所述的方法,其中向所述端點(diǎn)傳達(dá)所述目標(biāo)函數(shù)信息以代替在分組的末尾處被正常包括的端到端循環(huán)冗余校驗(yàn)(ECRC)元數(shù)據(jù)。
11.根據(jù)權(quán)利要求1所述的方法,所述方法包括: 在PCIe主機(jī)中提供查找表,所述查找表操作用于執(zhí)行從地址范圍向目標(biāo)函數(shù)的映射;以及 利用所述查找表,向PCIe端點(diǎn)發(fā)送地址和建議的目標(biāo)函數(shù); 在所述PCIe端點(diǎn)利用所述建議的目標(biāo)函數(shù)對接收的所述地址解碼;以及 核實(shí)建議的目標(biāo)函數(shù)信息。
12.根據(jù)權(quán)利要求1或11所述的方法,其中使用正常保留的頭部比特向所述端點(diǎn)傳達(dá)所述目標(biāo)函數(shù)信息。
13.根據(jù)權(quán)利要求1或11所述的方法,其中使用PCIe頭部擴(kuò)展向所述端點(diǎn)傳達(dá)所述目標(biāo)函數(shù)信息。
14.根據(jù)權(quán)利要求1或11所述的方法,其中在數(shù)據(jù)負(fù)載內(nèi)向所述端點(diǎn)傳達(dá)所述目標(biāo)函數(shù)信息,所述數(shù)據(jù)負(fù)載在對應(yīng)的頭部中具有指示目標(biāo)函數(shù)信息在所述負(fù)載中存在的字段。
15.根據(jù)權(quán)利要求14所述的方法,其中向所述端點(diǎn)傳達(dá)所述目標(biāo)函數(shù)信息以代替在分 組的末尾處被正常包括的端到端循環(huán)冗余校驗(yàn)(ECRC)元數(shù)據(jù)。
【文檔編號】G06F13/38GK104169897SQ201380012163
【公開日】2014年11月26日 申請日期:2013年2月25日 優(yōu)先權(quán)日:2012年3月2日
【發(fā)明者】I·格拉諾維斯基, E·阿達(dá) 申請人:國際商業(yè)機(jī)器公司