本發明涉及用于高效輸入/輸出(I/O)操作的系統及方法。
背景技術:
現代計算機系統可包含多個輸入/輸出(I/O)裝置。舉例來說,典型的計算機服務器系統可包含使用具有整合式及外部I/O裝置兩者的芯片多處理器(CMP)的單芯片或多芯片對稱多處理器(SMP)。I/O裝置可使用例如(舉例來說)PCI-Express(PCIe)的I/O互連而連接到處理器及存儲器。計算機服務器系統中的I/O裝置的實例可包含磁盤控制器、磁盤、快閃控制器、固態驅動機(SSD)、高速網絡連線組件、通用串行總線(USB)控制器、通用非同步接收器/傳輸器(UART)控制器及其它裝置。在這些計算機系統中,每一I/O裝置可為I/O互連上的單獨實體。雖然I/O裝置可執行各種不同功能,但I/O裝置中的每一者可包含所述裝置上的相同或類似功能集,所述功能集可為無效的。計算機系統中的數據移動也可為無效的。可期望具有包含更高效I/O操作的計算機系統。
技術實現要素:
此文件描述用于多個輸入/輸出裝置及處理器或多處理器(例如,對稱多處理器(SMP)單元)當中的輸入/輸出(I/O)操作的系統及技術。一種系統可包含共享I/O單元,其組合多個共享I/O功能作為所述共享I/O單元的部分,其中從I/O裝置中的每一者移除所述共享功能。所述共享I/O單元可為所述系統中的單獨組件或可為處理器或多處理器的一部分。以此方式,可為多個I/O裝置所共有的功能可從I/O裝置移除且替代地由共享I/O單元執行。所述處理器及所述I/O裝置可與所述共享I/O單元互動且使用所述共享I/O單元來執行所述共享功能中的一者或一者以上。所述I/O裝置及所述處理器或所述多處理器可使用所述共享I/O單元互動作為總線上的同級。所述I/O裝置可留存控制一組寄存器及其它組件以執行特定I/O裝置特有的功能。根據一個一股方面,一種系統包含:總線;處理器,其可操作地耦合到所述總線;存儲器,其可操作地耦合到所述總線;多個輸入/輸出(I/O)裝置,其可操作地耦合到所述總線,其中所述I/O裝置中的每一者具有一組控制寄存器;及第一共享I/O單元,其可操作地耦合到所述總線。所述第一共享I/O單元具有多個共享功能且經配置以執行所述共享功能,其中所述共享I/O功能不包含為所述I/O裝置上的功能且所述I/O裝置及所述處理器與所述第一共享I/O單元互動以使用由所述第一共享I/O單元執行的所述共享功能中的一者或一者以上。根據另一一股方面,一種系統包含:總線;多處理器,其具有至少兩個處理器,所述多處理器可操作地耦合到所述總線;存儲器,其可操作地耦合到所述總線;多個輸入/輸出(I/O)裝置,其可操作地耦合到所述總線;及第一共享I/O單元,其可操作地耦合到所述總線。所述第一共享I/O單元包含多個共享功能且經配置以執行所述共享功能,其中所述I/O裝置及所述多處理器與所述第一共享I/O單元互動以使用由所述第一共享I/O單元執行的所述共享功能中的一者或一者以上。所述共享I/O功能包含一個或一個以上中斷控制器、一個或一個以上I/O存儲器管理單元(MMU)及多個數據隊列。根據另一一股方面,一種用于執行多個輸入/輸出(I/O)裝置當中的I/O操作的方法包含在系統處接收數據,其中所述系統包含:總線;處理器,其可操作地耦合到所述總線;多個I/O裝置,其可操作地耦合到所述總線;及共享I/O單元,其可操作地耦合到所述總線,其中所述共享I/O單元包含多個共享功能。所述方法包含在所述I/O裝置中的一者或一者以上、所述處理器及所述共享I/O裝置之間傳遞所述數據以及由所述共享I/O單元對所述數據中執行所述共享功能中的一者或一者以上。根據另一一股方面,一種系統包含:用于傳遞的構件(例如,總線);用于處理的構件(例如,處理器),其可操作地耦合到用于傳遞的所述構件;用于存儲的構件(例如,存儲器),其可操作地耦合到用于傳遞的所述構件;多個輸入/輸出(I/O)裝置,其可操作地耦合到用于傳遞的所述構件,其中所述I/O裝置中的每一者具有一組控制寄存器;及用于共享I/O功能的構件(例如,共享I/O單元),其可操作地耦合到用于傳遞的所述構件。用于共享I/O功能的所述構件具有多個共享功能且經配置以執行所述共享功能,其中所述共享I/O功能不包含為所述I/O裝置上的功能且所述I/O裝置及用于處理的所述構件與用于共享I/O功能的所述構件互動以使用由用于共享I/O功能的所述構件執行的所述共享功能中的一者或一者以上。在附圖及下文說明中陳述一個或一個以上實施方案的細節。從所述說明及圖式且從權利要求書將明了其它特征。附圖說明圖1是具有共享輸入/輸出(I/O)單元的系統的實例性框圖。圖2是圖1的系統的共享I/O單元的實例性框圖。圖3是具有共享I/O單元的系統的實例性框圖。圖4是具有共享I/O單元的系統的實例性框圖。圖5是具有多個共享I/O單元的系統的實例性框圖。圖6是圖解說明圖1到圖5的系統的實例性操作的實例性流程圖。具體實施方式圖1是系統100的實例性框圖。系統100包含:總線102;存儲器104,其可操作地耦合到所述總線102;處理器106,其可操作地耦合到總線102;多個輸入/輸出(I/O)裝置,其可操作地耦合到總線102;及共享I/O單元108,其可操作地耦合到總線102。在一些實例性實施方案中,系統100可以是將系統的所有組件整合于單個芯片上的集成電路(例如,系統單芯片(SOC))。在一些實例性實施方案中,系統100可以是其中系統的組件可在多個不同芯片上的多芯片上系統。舉例來說,系統100的組件中的每一者可在單獨的芯片上。在其它實例中,系統100的組件中的一些組件可在一個芯片上且其它組件可在單獨的芯片上。在一個實例性實施方案中,系統100可用以接收數據、處理數據及/或將數據(或經處理的數據)發送到另一組件或系統。舉例來說,系統100可與網絡(例如,有線或無線網絡)通信且可經由網絡從另一組件或系統接收數據。系統100可使用組件(包含處理器106)中的一者或一者以上來操縱數據。系統100可將數據(包含經操縱或經處理的數據)發送到另一組件或系統,例如(比如)存儲裝置(例如,快閃存儲器存儲裝置、基于磁盤的存儲裝置等)或其它類型的裝置或系統。在一個實例性實施方案中,系統100可用于計算裝置中,例如(比如)計算機、服務器、膝上型計算機、筆記本計算機、平板計算機、移動裝置、智能電話或其它類型的計算裝置。系統100可包含用作完整計算裝置(例如,服務器或其它計算裝置)所需的所有組件(包含未圖解說明的其它組件)。在其它實施方案中,系統100可為計算裝置中的組件,所述組件與計算裝置中的其它系統及組件協作工作。在系統100中,總線102可以可操作地連接系統100的其它組件以實現組件之間的通信。總線102使得能夠在系統100的組件之間傳送數據。總線102可為任一類型的互連,包含串行總線、并行總線、專有總線及I/O互連(例如,高速外圍組件互連(PCIe))。在系統100中,存儲器104可經配置以暫時、永久、半永久或其一組合地存儲一個或一個以上數據片段。此外,存儲器104可包含易失性存儲器、非易失性存儲器或其一組合。存儲器104或存儲器104的部分可配置為存儲裝置,所述存儲裝置經配置以存儲用于由處理器106執行的指令。所述指令可為軟件、固件或其一組合的機器可執行指令或片段。存儲器104可為非暫時性存儲媒體。處理器106可經配置以執行軟件、固件或其一組合的一個或一個以上機器可執行指令或片段。舉例來說,處理器106可經配置以執行存儲于存儲器104中的指令。處理器106可包含單個處理器或可包含多個處理器,如下文更詳細地圖解說明且描述。處理器106可與系統100的其它組件互動以處理數據且致使其它組件執行一個或一個以上動作。系統100可包含多個I/O裝置。如圖1中所圖解說明,系統100包含具有控制寄存器111的磁盤控制器110、具有控制寄存器113的快閃控制器112或用于其它高性能非易失性存儲裝置的控制器、具有控制寄存器115的PCIe控制器114、具有控制寄存器117的網絡信息控制器116及具有控制寄存器119的雜項I/O裝置118。I/O裝置110到118可為整合式I/O裝置或可為外部I/O裝置。I/O裝置110到118中的每一者包含一組控制寄存器111到119。個別組的控制寄存器111到119可包含為I/O裝置所特有的配置信息,所述配置信息是使得I/O裝置能夠按編程及期望起作用的一部分。在典型配置中,I/O裝置可已用作系統內的單獨、自含式組件。也就是說,I/O裝置中的每一者可已包含執行其特定功能所需的所有功能,包含可為I/O裝置中的每一者所共有的一組功能。在系統100中,I/O裝置110到118可不用作系統100內的自含式組件。系統100包含經配置以具有一組共享功能的共享I/O單元108。所述組共享功能可不包含于I/O裝置110到118中的每一者上且可從I/O裝置110到118中的每一者移除。以此方式,I/O裝置110到118與共享I/O單元108互動以供所述組共享功能中的一者或一者以上使用。所述組共享功能可在共享I/O單元108上的供系統100的組件使用的單個位置中。在其它實例性實施方案中,所述組共享功能可跨越多個位置分布。在圖1的所圖解說明實例中,共享I/O單元108圖解說明為總線102上的單獨組件。在其它實例性實施方案中,如所圖解說明及下文更詳細地描述,共享I/O單元108可為例如(舉例來說)處理器106的另一組件的一部分。處理器106連同I/O裝置110到118一起可與共享I/O單元108互動以使用由共享I/O單元108執行的共享功能中的一者或一者以上,不管共享I/O單元108是否為總線102上的單獨組件或不管共享I/O單元108是否為例如處理器106的另一組件的部分。此外參考圖2,圖解說明共享I/O單元108的實例性框圖。共享I/O單元108可包含由一個或一個以上組件或塊執行的多個共享功能,所述一個或一個以上組件或塊是共享I/O單元的部分。貫穿本說明及權利要求書,術語“共享功能”及術語“共享組件”可互換地使用以意指辨認其可為共享I/O單元108上的正執行共享功能的共享組件的同一事件。共享功能作為共享I/O單元108的部分位于單個位置處。共享功能包含一個或一個以上中斷控制器220、一個或一個以上存儲器管理單元(MMU)222、一個或一個以上隊列224、一個或一個以上連接狀態結構225、一個或一個以上加速引擎226及一個或一個以上RDMA引擎228。共享功能還可包含其它雜項共享功能230。共享I/O單元108上的共享功能220到230還可稱為共享共用接口。以此方式,共享共用接口已從個別I/O裝置110到118移除且位于共享I/O單元108上的單個位置中。共享接口使得I/O裝置110到118及系統100的其它組件(包含處理器106)能夠以比在共用接口位于個別I/O裝置110到118中的每一者上的情況下更高效的方式接收數據、處理數據及/或發送數據(包含經處理的數據)。在一個實例性實施方案中,共享I/O單元108上的共享中斷控制器220可針對I/O裝置110到118執行中斷控制功能。I/O裝置110到118可不包含具有中斷控制功能的中斷控制器且替代地可使用具有中斷控制功能的共享中斷控制器220。以此方式,處理器106還可與共享I/O單元108上的共享中斷控制器220互動并使用共享I/O單元108上的中斷控制器220。在一個實例性實施方案中,共享I/O單元108上的共享MMU222可針對I/O裝置110到118執行存儲器管理功能。I/O裝置110到118可不包含具有存儲器管理功能的MMU且替代地可使用具有存儲器管理功能的共享MMU222。以此方式,處理器106還可與共享I/O單元108上的共享MMU222互動并使用共享I/O單元108上的共享MMU222。在一個實例性實施方案中,共享I/O單元108上的共享隊列224可針對I/O裝置110到118執行排隊功能。I/O裝置110到118可不包含具有排隊功能的隊列且替代地可使用具有排隊功能的共享隊列224。以此方式,處理器106還可與共享I/O單元108上的共享隊列224互動并使用共享I/O單元108上的共享隊列224。I/O裝置110到118可在每一個別裝置上包含緩沖器(未展示)。每一I/O裝置110到118上的緩沖器可經配置以輔助數據流控制及等待時間從而輔助適當數據流穿過系統100。在一個實例性實施方案中,共享I/O單元108上的共享連接狀態結構225(也稱為隊列對結構)可針對I/O裝置110到118執行與連接相關的功能。I/O裝置110到118可不包含具有與連接相關的功能的連接狀態結構且替代地可使用具有與連接相關的功能的共享連接狀態結構225。以此方式,處理器106還可與共享I/O單元108上的共享連接狀態結構225互動并使用共享I/O單元108上的共享連接狀態結構225。舉例來說,共享連接狀態結構225可包含關于通信單元或端點之間的特定邏輯連接的元數據信息。端點可為運行于計算機節點處理器、網絡連線控制器、存儲控制器或其它類型的控制器中的處理程序。在一個實例性實施方案中,共享I/O單元108上的共享加速引擎226可針對I/O裝置110到118執行加速功能。I/O裝置110到118可不包含具有加速功能的加速引擎且替代地可使用具有加速功能的共享加速引擎226。以此方式,處理器106還可與共享I/O單元108上的共享加速引擎226互動并使用共享I/O單元108上的共享加速引擎226。在一個實例性實施方案中,共享I/O單元108上的共享RDMA引擎228可針對I/O裝置110到118執行RDMA功能。I/O裝置110到118可不包含具有RDMA功能的RDMA引擎且替代地可使用具有RDMA功能的共享RDMA引擎228。以此方式,處理器106還可與共享I/O單元108上的共享RDMA引擎228互動并使用共享I/O單元108上的共享RDMA引擎228。在一個實例性實施方案中,共享I/O單元108上的共享雜項功能230針對I/O裝置110到118執行一個或一個以上各種雜項功能。I/O裝置110到118可不包含這些雜項功能中的一者或一者以上且替代地可使用共享雜項功能230。以此方式,處理器106還可與共享I/O單元108上的共享雜項功能230互動并使用共享I/O單元108上的共享雜項功能230。在一個實例性實施方案中,系統100及對共享I/O單元108的使用可實現系統100的組件之間的更高效數據移動且可減少與在I/O裝置110到118中的每一者上具有共享功能中的每一者的多個復本相關聯的額外開銷。舉例來說,可從系統100外部的組件或系統接收數據。數據(例如,網絡上的數據)可流動到網絡信息控制器116中且流動到共享I/O單元108中的共享隊列224中。如果經接收數據需要處理,那么處理器106可從共享隊列224存取數據且對數據執行處理。接著,經處理數據可移動到共享隊列224,且接著可通過I/O裝置中的一者(例如,舉例來說在數據將移動到基于磁盤的存儲裝置的情況下通過磁盤控制器110、在數據將移動到快閃存儲器的情況下通過快閃控制器112)或在數據移動到網絡上的另一組件的情況下通過網絡信息控制器116從共享隊列224中串流出。如果經接收數據不需要處理,那么可通過RDMA引擎226與其它I/O裝置110到118中的一者配合地將數據直接移動到所要位置。以此方式,通往系統100中、在系統100的組件之間及從系統100中的數據移動由于共享I/O單元108上的共享功能的使用而更高效且連成流線型。可通過使用共享I/O單元108上的共享I/O功能而需要發生較少數據復制。由于由共享中斷控制器220針對I/O裝置110到118協調中斷處理,因此可需要較少中斷。可通過使用共享I/O單元108上的共享I/O功能而減少計算循環的數目及其它處理額外開銷。在其它實例性實施方案中,可跨越多個位置分布共享I/O單元上的共享功能。舉例來說,共享功能中的一者或一者以上可在一個位置中的一個共享I/O單元中且其它共享功能可在另一位置中的另一共享I/O單元中。比如,共享RDMA引擎及共享加速引擎可在一個位置中的一個共享I/O單元中且其它共享功能可在不同位置中的不同共享I/O單元中。在一些實施方案中,共享功能可分布于兩個以上位置中。可使用共享I/O單元來實施系統100的其它實例性實施方案及變化形式。參考圖3,圖解說明系統300的實例性框圖。系統300可包含圖1的系統100的組件及功能性。在系統300中,共享I/O單元108可不是單獨組件,而替代地可以是處理器106的一部分。共享I/O單元108可包含所有與上文關于圖2所描述相同的組件及功能。參考圖4,圖解說明系統400的實例性框圖。系統400可類似于圖1的系統100及圖3的系統300的組件及功能性。系統400包含具有多個處理器440a及440b的多處理器406(例如,分布式共享存儲器(DSM)系統或對稱多處理器(SMP)單元)。多處理器406包含至少第一處理器440a及至少第二處理器440b。多處理器406可為單芯片單元或可為多芯片單元。在所圖解說明實例中,共享I/O單元108可為多處理器406的一部分。在其它實例性實施方案中,共享I/O單元108可與多處理器406分離。在系統400中,共享I/O單元108可以與上文所描述相同的方式起作用且針對I/O裝置110到118提供并執行共享共用功能。系統400可至少部分地由于多個處理器440a及440b而具有更大處理能力。參考圖5,圖解說明系統500的實例性框圖。系統500可類似于圖1的系統100、圖3的系統300及圖4的系統400的組件及功能性。系統400包含多個共享I/O單元508a及508b。多個共享I/O單元508a及508b可包含與上文關于圖1到4所描述的共享I/O單元108相同的組件及功能且經配置而以與上文關于圖1到4所描述相同的方式起作用。多個共享I/O單元508a及508b可提供關于共享I/O裝置110到118及多處理器406當中的功能的額外冗余及/或配置選項。在一個實施方案中,舉例來說,I/O裝置110到118的部分可與共享I/O單元中的一者(例如,共享I/O單元508a)共享功能。I/O裝置110到118的另一部分可與另一共享I/O單元508b共享功能。在其它實例性實施方案中,其它配置是可能的。在一個實例性實施方案中,共享I/O單元508a及508b可在同一位置中。在其它實例性實施方案中,共享I/O單元508a及508b可在不同位置中。在一個實例性實施方案中,共享I/O單元508a及508b可包含相同組的共享I/O功能。在其它實例性實施方案中,共享I/O單元508a及508b可各自包含共享I/O功能的部分而存在或不存在共享I/O功能中的一者或一者以上的重復。在上文所描述且圖解說明的實例性實施方案中,I/O裝置110到118可為圖1及圖3的處理器106以及圖4及圖5的多處理器406的同級。也就是說,I/O裝置110到118可不需要I/O裝置110到118與處理器之間的I/O互連且替代地可以同級間為基礎地彼此通信。PCIe控制器114可經配置以針對系統的其它裝置及組件(notshown)或系統外部的其它裝置及組件執行PCIe功能。共享I/O單元108的使用可實現此同級間通信。在其它實例性實施方案中,I/O裝置可使用I/O互連來與處理器通信,其中總線102可以是I/O互連且PCIe控制器114可為通信及數據移動提供控制功能性。參考圖6,圖解說明方法600的實例性流程圖。方法600可由上文關于圖1到5所描述的系統及組件執行。方法600包含在系統處接收數據(610)。系統包含:總線;處理器,其可操作地耦合到總線;多個I/O裝置,其可操作地耦合到總線;及共享I/O單元,其可操作地耦合到總線,其中共享I/O單元包含多個共享功能(610)。方法600包含在I/O裝置中一者或一者以上、處理器及共享I/O裝置之間傳遞數據(620)。方法600還包含由共享I/O單元對數據執行共享功能中的一者或一者以上(630)。共享功能可不包含為I/O裝置上的功能。本文中所描述的各種技術的實施方案可以數字電子電路或者以計算機硬件、固件、軟件或以其組合來實施。實施方案可實施為計算機程序產品,即,有形地體現于信息載體中(例如,體現于機器可讀存儲裝置中)的計算機程序,以由數據處理設備(例如,可編程處理器、一計算機或多個計算機)執行或控制所述數據處理設備的操作。可以任何形式的編程語言(包包含編譯語言或解譯語言)來寫入計算機程序(例如,上文所描述的計算機程序),且可以任何形式來部署所述計算機程序,包含部署為獨立程序或部署為模塊、組件、子例程或適合在計算環境中使用的其它單元。計算機程序可經部署以在一個計算機上或在位于一個位點處或跨越多個位點分布且由通信網絡互連的多個計算機上執行。方法步驟可由執行計算機程序的一個或一個以上可編程處理器執行,以通過對輸入數據進行操作并產生輸出來執行功能。方法步驟還可由專用邏輯電路(例如,FPGA(場可編程門陣列)或ASIC(專用集成電路))執行,且設備可實施為專用邏輯電路。通過舉例的方式,適于執行計算機程序的處理器包含通用微處理器及專用微處理器兩者,以及任何種類的數字計算機的任何一個或一個以上處理器。一股來說,處理器將從只讀存儲器或隨機存取存儲器或兩者接收指令及數據。計算機的元件可包含用于執行指令的至少一個處理器及用于存儲指令及數據的一個或一個以上存儲器裝置。一股來說,計算機還可包含用于存儲數據的一個或一個以上大容量存儲裝置(例如,磁盤、磁光盤或光盤)或經操作地耦合以從所述一個或一個以上大容量存儲裝置接收數據或向其傳送數據或既接收數據又傳送數據。適合體現計算機程序指令及數據的信息載體包含所有形式的非易失性存儲器,包含(舉例來說):半導體存儲器裝置,例如EPROM、EEPROM及快閃存儲器裝置;磁盤,例如內部硬磁盤或可裝卸磁盤;磁光盤;及CD-ROM及DVD-ROM磁盤。所述處理器及存儲器可由專用邏輯電路補充或并入于專用邏輯電路中。為提供與用戶的互動,實施方案可實施于計算機上,所述計算機具有用于向用戶顯示信息的顯示裝置(例如,陰極射線管(CRT)或液晶顯示器(LCD)監視器)及用戶可通過其來向計算機提供輸入的鍵盤及指向裝置(例如,鼠標或軌跡球)。也可使用其它種類的裝置來提供與用戶的互動;舉例來說,提供給用戶的反饋可為任何形式的感觀反饋,例如,視覺反饋、聽覺反饋或觸覺反饋;且來自用戶的輸入可以任何形式來接收,其中包含聲音、語音或觸覺輸入。實施方案可實施于計算系統(包含后端組件,例如,作為數據服務器;或包含中間件組件,例如,應用程序服務器;或包含前端組件,例如,具有用戶可經由其來與實施方案互動的圖形用戶接口或Web瀏覽器的客戶端計算機)或此類后端、中間件或前端組件的任一組合中。組件可由任何數字數據通信形式或媒體(例如,通信網絡)互連。通信網絡的實例包含局域網(LAN)及廣域網(WAN),例如因特網。雖然如本文中所描述已圖解說明了所描述實施方案的某些特征,但所屬領域的技術人員現將能想出許多修改、替代、改變及等效形式。因此,應理解,所附權利要求書打算涵蓋歸屬于所述實施例的范圍內的所有此類修改及改變。