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