一種硬件虛擬端口及處理器系統(tǒng)的制作方法
【專利摘要】本發(fā)明實(shí)施例涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,公開了一種硬件虛擬端口和處理器。所述硬件虛擬端口連接處理器,所述硬件虛擬端口包括:隊(duì)列分配單元,用于為處理器包括的硬件單元?jiǎng)討B(tài)的分配隊(duì)列;接收單元,用于接收應(yīng)用程序發(fā)送的訪問(wèn)處理器中第一硬件單元的待處理數(shù)據(jù);判斷單元,用于判斷第一硬件單元是否被分配有至少一個(gè)隊(duì)列;緩存單元,用于判斷結(jié)果為否時(shí),將待處理數(shù)據(jù)緩存在硬件虛擬端口的內(nèi)部隊(duì)列;數(shù)據(jù)推送單元,用于判斷結(jié)果為是時(shí),將待處理數(shù)據(jù)推送至第一硬件單元的隊(duì)列,以及用于當(dāng)判斷結(jié)果為否,將內(nèi)部隊(duì)列緩存的待處理數(shù)據(jù)分時(shí)推送至第一硬件單元。實(shí)施本發(fā)明實(shí)施例,提高虛擬化性能,實(shí)現(xiàn)處理器中隊(duì)列資源的共享,減少冗余設(shè)計(jì)。
【專利說(shuō)明】一種硬件虛擬端口及處理器系統(tǒng)
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,具體涉及一種硬件虛擬端口及處理器系統(tǒng)。
【背景技術(shù)】
[0002] 硬件虛擬化是一種對(duì)計(jì)算機(jī)或操作系統(tǒng)的虛擬,虛擬化對(duì)用戶隱藏了真實(shí)的計(jì)算 機(jī)硬件,表現(xiàn)出另一個(gè)抽象計(jì)算平臺(tái)。
[0003] 為了實(shí)現(xiàn)高性能的支持嵌入式系統(tǒng)虛擬化,軟件模擬硬件虛擬化性能已經(jīng)難以滿 足需求,需要硬件支持虛擬化,除了 CPU(中央處理器,Central Processing Unit)需要支 持虛擬化以外,各種硬件加速器和I/Odnput/Output,輸入/輸出)也需要輔助支持虛擬 化。然而現(xiàn)有硬件系統(tǒng)中,很多加速器和I/O本身不支持虛擬化,這就需要通過(guò)一些軟件或 硬件的虛擬化方案來(lái)輔助加速器和I/O實(shí)現(xiàn)虛擬化。
[0004] 現(xiàn)有技術(shù)存在如下一些硬件虛擬化方案:
[0005] 方案一、軟件虛擬方案,利用軟件輔助HAC (硬件加速器)或I/O虛擬化,具體包括 利用軟件實(shí)現(xiàn)多隊(duì)列、隊(duì)列調(diào)度模塊、對(duì)上層應(yīng)用抽象建模,來(lái)配合實(shí)現(xiàn)原有HAC和I/O的 虛擬化。
[0006] 該方案的缺點(diǎn)是延時(shí)大、吞吐率低,其性能無(wú)法滿足高性能的支持嵌入式系統(tǒng)虛 擬化的需求。
[0007] 方案二、硬件虛擬方案,為每個(gè)硬件加速器或I/O分配一定數(shù)量的隊(duì)列,都加上多 隊(duì)列隔離、隊(duì)列模塊等設(shè)計(jì),來(lái)輔助實(shí)現(xiàn)虛擬化,其中分配給每個(gè)硬件加速器或I/O的隊(duì)列 個(gè)數(shù)是固定的。
[0008] 當(dāng)硬件加速器或I/O數(shù)量較多,該方案存在以下問(wèn)題:(1)為了滿足硬件加速器的 處理能力,每個(gè)硬件加速器或I/O都需要配置多個(gè)隊(duì)列,存在一定的冗余浪費(fèi),成本較高; (2)各個(gè)硬件加速器或I/O的隊(duì)列個(gè)數(shù)不能靈活指定,隊(duì)列資源不能靈活分配。
【發(fā)明內(nèi)容】
[0009] 本發(fā)明實(shí)施例所要解決的技術(shù)問(wèn)題是提供一種硬件虛擬端口和處理器系統(tǒng),用于 輔助處理器包括的硬件單元進(jìn)行虛擬化,并為硬件單元?jiǎng)討B(tài)的分配隊(duì)列。
[0010] 本發(fā)明實(shí)施例提供一種硬件虛擬端口,所述硬件虛擬端口連接處理器,所述硬件 虛擬端口包括:
[0011] 隊(duì)列分配單元,用于為所述處理器包括的硬件單元?jiǎng)討B(tài)的分配隊(duì)列;所述隊(duì)列為 所述處理器包括的隊(duì)列;
[0012] 接收單元,用于接收應(yīng)用程序發(fā)送的訪問(wèn)所述處理器中第一硬件單元的待處理數(shù) 據(jù);所述第一硬件單元為所述處理器中的任意一個(gè)硬件單元;
[0013] 判斷單元,用于判斷所述第一硬件單元是否被分配有至少一個(gè)隊(duì)列;
[0014] 緩存單元,用于當(dāng)所述判斷單元的判斷結(jié)果為否時(shí),將所述待處理數(shù)據(jù)緩存在所 述硬件虛擬端口的內(nèi)部隊(duì)列;
[0015] 數(shù)據(jù)推送單元,用于當(dāng)所述判斷單元的判斷結(jié)果為是時(shí),將所述待處理數(shù)據(jù)推送 至所述第一硬件單元的隊(duì)列,以及用于當(dāng)所述判斷單元的判斷結(jié)果為否時(shí),將所述硬件虛 擬端口的內(nèi)部隊(duì)列緩存的所述待處理數(shù)據(jù)分時(shí)推送至所述第一硬件單元;
[0016] 發(fā)送單元,用于將所述第一硬件單元對(duì)所述待處理數(shù)據(jù)進(jìn)行處理后得到的數(shù)據(jù)向 所述應(yīng)用程序發(fā)送。
[0017] 相應(yīng)的,本發(fā)明實(shí)施例還提供一種處理器系統(tǒng),所述處理器包括如前所述的硬件 虛擬端口以及與所述硬件虛擬端口連接的處理器。
[0018] 本發(fā)明實(shí)施例提供的硬件虛擬端口和處理器系統(tǒng),能夠?yàn)橛布卧獎(jiǎng)討B(tài)的分配隊(duì) 列,并且通過(guò)為硬件單元分配的隊(duì)列或者硬件虛擬端口的內(nèi)部隊(duì)列實(shí)現(xiàn)了處理器中硬件單 元的虛擬化,相比現(xiàn)有技術(shù)中的軟件虛擬方案,可以有較大的性能提升,相比現(xiàn)有技術(shù)中的 硬件虛擬方案,能夠進(jìn)行隊(duì)列的動(dòng)態(tài)分配,實(shí)現(xiàn)隊(duì)列資源的共享,減少隊(duì)列冗余設(shè)計(jì),提高 隊(duì)列資源的利用率。
【專利附圖】
【附圖說(shuō)明】
[0019] 為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例中所 需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施 例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲 得其他的附圖。
[0020] 圖1是本發(fā)明實(shí)施例提供的一種硬件虛擬端口的結(jié)構(gòu)第一示意圖;
[0021] 圖2是本發(fā)明實(shí)施例提供的一種硬件虛擬端口的結(jié)構(gòu)第二示意圖;
[0022] 圖3是本發(fā)明實(shí)施例提供的一種硬件虛擬端口的結(jié)構(gòu)第三示意圖。
【具體實(shí)施方式】
[0023] 下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;?本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0024] 本發(fā)明的說(shuō)明書和權(quán)利要求書及上述附圖中的術(shù)語(yǔ)"第一"、"第二"、"第三""第 四"等(如果存在)是用于區(qū)別類似的對(duì)象,而不必用于描述特定的順序或先后次序。應(yīng)該 理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例例如能夠以 除了在這里圖示或描述的那些以外的順序?qū)嵤4送?,術(shù)語(yǔ)"包括"和"具有"以及他們的任 何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過(guò)程、方法、系統(tǒng)、 產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ?這些過(guò)程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
[0025] 如圖1所示,本發(fā)明實(shí)施例提供一種硬件虛擬端口(VP0RT) 100,該硬件虛擬端口 100與處理器200連接,處理器200可以包括至少一個(gè)硬件單元,該硬件虛擬端口 100可以 包括:
[0026] 隊(duì)列分配單元101,用于為處理器200包括的硬件單元?jiǎng)討B(tài)地分配隊(duì)列;其中上述 隊(duì)列指的是處理器包括的隊(duì)列;
[0027] 接收單元102,用于接收應(yīng)用程序發(fā)送的訪問(wèn)所述處理器中第一硬件單元的待處 理數(shù)據(jù);
[0028] 所述第一硬件單元為所述處理器中的任意一個(gè)硬件單元;
[0029] 判斷單元103,用于判斷所述第一硬件單元是否被分配有至少一個(gè)隊(duì)列;
[0030] 緩存單元104,用于當(dāng)所述判斷單元的判斷結(jié)果為否時(shí),將所述待處理數(shù)據(jù)緩存在 所述硬件虛擬端口的內(nèi)部隊(duì)列;
[0031] 數(shù)據(jù)推送單元105,用于當(dāng)所述判斷單元的判斷結(jié)果為是時(shí),將所述待處理數(shù)據(jù)推 送至所述第一硬件單元的隊(duì)列,以及用于當(dāng)所述判斷單元的判斷結(jié)果為否時(shí),將所述硬件 虛擬端口的內(nèi)部隊(duì)列緩存的所述待處理數(shù)據(jù)分時(shí)(time sharing)推送至所述第一硬件單 元;
[0032] 發(fā)送單元106,用于將所述第一硬件單元對(duì)所述待處理數(shù)據(jù)進(jìn)行處理后得到的數(shù) 據(jù)向所述應(yīng)用程序發(fā)送。
[0033] 本實(shí)施例中提供的硬件虛擬端口可以為與其連接的處理器包括的各個(gè)硬件單元 動(dòng)態(tài)地分配隊(duì)列,并且通過(guò)為硬件單元分配的隊(duì)列或者硬件虛擬端口的內(nèi)部隊(duì)列實(shí)現(xiàn)了處 理器中硬件單元的虛擬化,相比現(xiàn)有技術(shù)中的軟件虛擬方案,可以有較大的性能提升,相比 現(xiàn)有技術(shù)中的硬件虛擬方案,能夠進(jìn)行隊(duì)列的動(dòng)態(tài)分配,實(shí)現(xiàn)隊(duì)列資源的共享,減少隊(duì)列冗 余設(shè)計(jì),提高隊(duì)列資源的利用率。
[0034] 舉例來(lái)說(shuō),本實(shí)施例中所說(shuō)的處理器200包括的硬件單元可以是硬件加速器 (HAC,Hardware Accelerator)或者 I/O (輸入 / 輸出,Input/Output)。
[0035] 需要說(shuō)明的是,處理器200可以包括多個(gè)硬件加速器、多個(gè)I/O以及多個(gè)隊(duì)列,處 理器200中可以向硬件虛擬端口 100開放全部或部分硬件加速器(或I/O)的控制權(quán)限,則 隊(duì)列分配單元102可以為取得控制權(quán)限的硬件加速器或I/O進(jìn)行隊(duì)列分配,以硬件加速器 為例,為每個(gè)硬件加速器分配的隊(duì)列可以是〇個(gè)、1個(gè)或多個(gè),具體的為哪個(gè)硬件加速器分 配幾個(gè)隊(duì)列,可以根據(jù)Q0S(服務(wù)質(zhì)量,Quality of Service)進(jìn)行調(diào)度,相關(guān)內(nèi)容不是本發(fā) 明描述的重點(diǎn),在此不再贅述。
[0036] 舉例來(lái)說(shuō),發(fā)送單元106可以是硬件虛擬端口的輸出隊(duì)列。
[0037] 在上述的實(shí)施方式中,對(duì)于擁有至少一個(gè)隊(duì)列的硬件單元,應(yīng)用程序發(fā)送的待處 理數(shù)據(jù)(訪問(wèn)數(shù)據(jù))可以直接推送到硬件單元的隊(duì)列中,例如應(yīng)用程序1和應(yīng)用程序2同 時(shí)訪問(wèn)第一硬件單元,則應(yīng)用程序1和應(yīng)用程序2的訪問(wèn)數(shù)據(jù)都被推送到第一硬件單元的 隊(duì)列中,第一硬件單元可以先后對(duì)應(yīng)用程序1和2的訪問(wèn)數(shù)據(jù)進(jìn)行處理,此時(shí)相當(dāng)于第一硬 件單元被虛擬成為兩個(gè)虛擬硬件單元,以供應(yīng)用程序1和2同時(shí)訪問(wèn)。
[0038] 如果第一硬件單元并被分配有多個(gè)隊(duì)列時(shí),數(shù)據(jù)推送子單元可以將多個(gè)應(yīng)用程序 發(fā)送的待處理數(shù)據(jù)分別推送到相應(yīng)的多個(gè)隊(duì)列,實(shí)現(xiàn)多個(gè)應(yīng)用程序?qū)Φ谝挥布卧耐瑫r(shí) 訪問(wèn)。
[0039] 例如APP1和APP2同時(shí)訪問(wèn)第一硬件單元,可以將APP1需要處理的數(shù)據(jù)推送給第 一硬件單元的隊(duì)列Q1,將APP2需要處理的數(shù)據(jù)推送給第一硬件的隊(duì)列Q2。
[0040] 在上述的實(shí)施方式中,如果第一硬件單元沒有被分配隊(duì)列,則利用硬件虛擬端口 的內(nèi)部隊(duì)列對(duì)第一硬件單元進(jìn)行虛擬化,例如應(yīng)用程序1和2同時(shí)訪問(wèn)第一硬件單元,則應(yīng) 用程序1和2的訪問(wèn)數(shù)據(jù)可被緩存在硬件虛擬端口內(nèi)部隊(duì)列中,再根據(jù)分時(shí)調(diào)度先后將應(yīng) 用程序1和2的訪問(wèn)數(shù)據(jù)發(fā)送給第一硬件單元進(jìn)行處理,這樣也相當(dāng)于將第一硬件單元虛 擬成為了兩個(gè)虛擬硬件單元,以供應(yīng)用程序1和2同時(shí)訪問(wèn)。
[0041] 優(yōu)選地,如圖2所示,該硬件虛擬端口 100還可包括:
[0042] 前端頁(yè)表隔離單元107,用于將分配給硬件單元的各個(gè)隊(duì)列的訪問(wèn)地址分別對(duì)應(yīng) 到不同的物理地址,并將各個(gè)隊(duì)列的物理地址通過(guò)頁(yè)表映射給需要訪問(wèn)硬件單元的應(yīng)用程 序。
[0043] 在虛擬化場(chǎng)景下,可能存在多個(gè)應(yīng)用程序同時(shí)訪問(wèn)同一個(gè)硬件單元,如果該硬件 單元被分配有多個(gè)隊(duì)列,支持不同的應(yīng)用程序同時(shí)訪問(wèn),例如:隊(duì)列Q0分配給應(yīng)用程序 APP (Application,應(yīng)用程序)0訪問(wèn),隊(duì)列Q1被分配給APP1訪問(wèn),但可能有些軟件或數(shù)據(jù) 上的錯(cuò)誤(例如軟件的程序漏洞),導(dǎo)致ΑΡΡ0訪問(wèn)Q1或者APP1訪問(wèn)Q0的情況出現(xiàn)。前端 頁(yè)表隔離單元103可將各個(gè)隊(duì)列進(jìn)行頁(yè)表隔離,這樣就使得ΑΡΡ0不可能訪問(wèn)Q1,APP1不可 能訪問(wèn)Q0,防止隊(duì)列訪問(wèn)錯(cuò)誤情況的出現(xiàn)。
[0044] 通過(guò)上述的前端頁(yè)表隔離,處理器200內(nèi)部就不再需要進(jìn)行多隊(duì)列隔離的設(shè)計(jì), 節(jié)省設(shè)計(jì)制造成本。
[0045] 進(jìn)一步地,硬件虛擬端口 100還可以包括:
[0046] 物理中斷 / 事件控制(P(I |E)C,Physical Interrupt/Event Controller)單兀, 作為硬件虛擬端口 100和處理器200中物理加速器(或者I/O)中斷/事件的接口,用于接 收來(lái)自處理器200中物理加速器的中斷/事件;
[0047] 事件隊(duì)列(EQ,Event Queue)單元,用于對(duì)上述中斷/事件進(jìn)行識(shí)別和調(diào)度,處理 器200中的物理加速器(或者I/O)被虛擬成為一個(gè)或多個(gè)虛擬加速器(或者I/O)之后, 其中斷/事件由事件隊(duì)列單元進(jìn)行識(shí)別和調(diào)度管理;
[0048] 虛擬中斷控制(VIC, Virtual Interrupt Controller)單元,作為硬件虛擬端口 100和上層應(yīng)用程序的接口,用于將物理加速器的中斷/事件通知到相應(yīng)的應(yīng)用程序。
[0049] 處理器200中的硬件單元對(duì)應(yīng)用程序的訪問(wèn)數(shù)據(jù)處理之后得到的數(shù)據(jù)可以通過(guò) 中斷/事件的方式發(fā)送給應(yīng)用程序,例如硬件單元對(duì)訪問(wèn)數(shù)據(jù)處理完之后得到的數(shù)據(jù)存儲(chǔ) 在輸出隊(duì)列中,向應(yīng)用程序發(fā)送中斷以使應(yīng)用程序讀取輸出隊(duì)列中的數(shù)據(jù),具體的是硬件 單元將中斷發(fā)送給物理中斷/事件控制單元,經(jīng)過(guò)事件隊(duì)列單元的調(diào)度之后,由虛擬中斷 控制單元發(fā)送至應(yīng)用程序。
[0050] 優(yōu)選地,為了對(duì)各個(gè)硬件做功能抽象,硬件虛擬端口 100可以對(duì)二個(gè)或二個(gè)以上 的硬件單元進(jìn)行級(jí)聯(lián)或組合,如圖3所示,該硬件虛擬端口 100還可包括:
[0051] 級(jí)聯(lián)單元108,用于將處理器200包括的至少二個(gè)硬件單元級(jí)聯(lián)起來(lái)形成第一邏 輯硬件單元;和/或,
[0052] 組合單元109,用于將處理器200包括的至少二個(gè)硬件組合起來(lái)形成第二邏輯硬 件單兀。
[0053] 舉例來(lái)說(shuō),級(jí)聯(lián)單元108可以包括:
[0054] 第一接收子單元,用于接收應(yīng)用程序向上述第一邏輯硬件單元發(fā)送的待處理數(shù) 據(jù);
[0055] 舉例來(lái)說(shuō),第一接收子單元可以是硬件虛擬端口的輸入隊(duì)列;
[0056] 第一調(diào)度子單元,用于根據(jù)預(yù)先配置的級(jí)聯(lián)路由表對(duì)上述待處理數(shù)據(jù)進(jìn)行調(diào)度, 使第一邏輯硬件單元包括的至少二個(gè)硬件單元依次對(duì)上述待處理數(shù)據(jù)進(jìn)行處理;
[0057] 第一發(fā)送子單元,用于將上述待處理數(shù)據(jù)經(jīng)過(guò)上述第一邏輯硬件單元的至少二個(gè) 硬件單元依次處理后得到的數(shù)據(jù)發(fā)送給應(yīng)用程序;
[0058] 舉例來(lái)說(shuō),第一發(fā)送子單元可以是硬件虛擬端口的輸出隊(duì)列。
[0059] 以硬件加速器為例,例如硬件加速器1和硬件加速器2被級(jí)聯(lián)單元級(jí)聯(lián),對(duì)上層的 應(yīng)用程序來(lái)說(shuō),呈現(xiàn)出的即是一個(gè)邏輯硬件加速器,該邏輯硬件加速器可供上層應(yīng)用程序 進(jìn)行訪問(wèn),在接收到應(yīng)用程序發(fā)送的待處理數(shù)據(jù)后,可由硬件加速器1和硬件加速器2依次 對(duì)待處理數(shù)據(jù)進(jìn)行處理,具體的即是待處理數(shù)據(jù)被硬件加速器1處理后輸出的數(shù)據(jù),由第 一調(diào)度子單元調(diào)度給硬件加速器2進(jìn)行再次處理。
[0060] 硬件虛擬端口 100中可以保存有級(jí)聯(lián)路由表,該級(jí)聯(lián)路由表可由用戶通過(guò)軟件配 置,級(jí)聯(lián)路由表規(guī)定了接收到的待處理數(shù)據(jù)在各個(gè)硬件單元中的處理順序,例如是先由硬 件加速器1處理,然后再由硬件加速器2處理,還是先由硬件加速器2處理,然后再由硬件 加速器1處理。
[0061] 一般來(lái)說(shuō),對(duì)于不同種類或功能的多個(gè)硬件單元來(lái)說(shuō),級(jí)聯(lián)之后得到的硬件單元 可以具備各個(gè)硬件單元的功能,得到了功能上的增強(qiáng),同時(shí)也可以根據(jù)需要靈活配置級(jí)聯(lián) 之后得到的硬件單元的功能。
[0062] 舉例來(lái)說(shuō),組合單元109可以包括:
[0063] 第二接收子單元,用于接收應(yīng)用程序向上述第二邏輯硬件單元發(fā)送的待處理數(shù) 據(jù);
[0064] 舉例來(lái)說(shuō),第二接收子單元可以是硬件虛擬端口的輸入隊(duì)列;
[0065] 第二調(diào)度子單元,用于將上述待處理數(shù)據(jù)調(diào)度給上述至少二個(gè)硬件單元中的其中 一個(gè)硬件單元進(jìn)行處理;
[0066] 具體地,第二調(diào)度子單元可以根據(jù)Q0S來(lái)進(jìn)行調(diào)度;
[0067] 第二發(fā)送子單元,用于將上述待處理數(shù)據(jù)經(jīng)過(guò)上述至少二個(gè)硬件單元中的其中一 個(gè)硬件單元進(jìn)行處理后得到的數(shù)據(jù)發(fā)送給應(yīng)用程序;
[0068] 舉例來(lái)說(shuō),第二發(fā)送子單元可以是硬件虛擬端口的輸出隊(duì)列。
[0069] 具體地,如果第二邏輯硬件單元包括的硬件單元被分配有隊(duì)列,則可將待處理數(shù) 據(jù)推送至其隊(duì)列,如果沒有隊(duì)列,則可將數(shù)據(jù)緩存在硬件虛擬端口的內(nèi)部隊(duì)列,再根據(jù)Q0S 調(diào)度到硬件單元進(jìn)行處理。
[0070] 假設(shè)硬件加速器3和硬件加速器4被組合成第二邏輯硬件加速器,對(duì)上層的應(yīng)用 來(lái)說(shuō),呈現(xiàn)的即是一個(gè)邏輯硬件加速器,可供上層應(yīng)用程序進(jìn)行訪問(wèn),在接收到應(yīng)用程序發(fā) 送的待處理數(shù)據(jù)后,第二調(diào)度子單元可以根據(jù)Q0S進(jìn)行調(diào)度,將待處理數(shù)據(jù)發(fā)送至硬件加 速器3或硬件加速器4進(jìn)行處理。
[0071] -般來(lái)說(shuō),對(duì)于同種類型的硬件單元,通過(guò)組合之后得到的邏輯硬件單元,相比單 個(gè)硬件單元增加了帶寬和處理能力。
[0072] 從上述內(nèi)容可以看出本實(shí)施例提供的硬件虛擬端口可以實(shí)現(xiàn)硬件的級(jí)聯(lián)或組 合,相比軟件進(jìn)行級(jí)聯(lián)的方案,可以提高響應(yīng)速度等方面的性能,也并不需要引入新的 switch (交換)硬件來(lái)實(shí)現(xiàn),實(shí)現(xiàn)成本較低,配置靈活。
[0073] 需要說(shuō)明的,以上的描述多以硬件單元為硬件加速器為例進(jìn)行說(shuō)明,硬件單元為 輸入輸出I/O的情形與之相同或相似,在此不再贅述。
[0074] 本發(fā)明實(shí)施例還提供一種處理器系統(tǒng),該處理器系統(tǒng)包括如前所述的硬件虛擬端 口 100以及與該硬件虛擬端口 100連接的處理器,該硬件虛擬端口可以輔助實(shí)現(xiàn)處理器中 各個(gè)硬件單元(硬件加速器或I/O)的虛擬化,并為各個(gè)硬件單元?jiǎng)討B(tài)的分配隊(duì)列,同時(shí)還 可實(shí)現(xiàn)硬件單元的級(jí)聯(lián)或者組合。
[0075] 需要說(shuō)明的是,以上各實(shí)施例均屬于同一發(fā)明構(gòu)思,各實(shí)施例的描述各有側(cè)重,在 個(gè)別實(shí)施例中描述未詳盡之處,可參考其他實(shí)施例中的描述。
[0076] 本領(lǐng)域普通技術(shù)人員可以理解上述實(shí)施例的各種方法中的全部或部分步驟是可 以通過(guò)程序來(lái)指令相關(guān)的硬件來(lái)完成,該程序可以存儲(chǔ)于一計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,存儲(chǔ) 介質(zhì)可以包括:閃存盤、只讀存儲(chǔ)器(Read-Only Memory,ROM)、隨機(jī)存取器(Random Access Memory, RAM)、磁盤或光盤等。
[0077] 以上對(duì)本發(fā)明實(shí)施例所提供的硬件虛擬端口和處理器系統(tǒng)進(jìn)行了詳細(xì)介紹,本文 中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫 助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思 想,在【具體實(shí)施方式】及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書內(nèi)容不應(yīng)理解為對(duì) 本發(fā)明的限制。
【權(quán)利要求】
1. 一種硬件虛擬端口,其特征在于,所述硬件虛擬端口連接處理器,所述硬件虛擬端口 包括: 隊(duì)列分配單元,用于為所述處理器包括的硬件單元?jiǎng)討B(tài)的分配隊(duì)列;所述隊(duì)列為所述 處理器包括的隊(duì)列; 接收單元,用于接收應(yīng)用程序發(fā)送的訪問(wèn)所述處理器中第一硬件單元的待處理數(shù)據(jù); 所述第一硬件單元為所述處理器中的任意一個(gè)硬件單元; 判斷單元,用于判斷所述第一硬件單元是否被分配有至少一個(gè)隊(duì)列; 緩存單元,用于當(dāng)所述判斷單元的判斷結(jié)果為否時(shí),將所述待處理數(shù)據(jù)緩存在所述硬 件虛擬端口的內(nèi)部隊(duì)列; 數(shù)據(jù)推送單元,用于當(dāng)所述判斷單元的判斷結(jié)果為是時(shí),將所述待處理數(shù)據(jù)推送至所 述第一硬件單元的隊(duì)列,以及用于當(dāng)所述判斷單元的判斷結(jié)果為否時(shí),將所述硬件虛擬端 口的內(nèi)部隊(duì)列緩存的所述待處理數(shù)據(jù)分時(shí)推送至所述第一硬件單元; 發(fā)送單元,用于將所述第一硬件單元對(duì)所述待處理數(shù)據(jù)進(jìn)行處理后得到的數(shù)據(jù)向所述 應(yīng)用程序發(fā)送。
2. 根據(jù)權(quán)利要求1所述的硬件虛擬端口,其特征在于,所述硬件虛擬端口還包括: 前端頁(yè)表隔離單元,用于將分配給所述硬件單元的各個(gè)隊(duì)列的訪問(wèn)地址分別對(duì)應(yīng)到不 同的物理地址,并將各個(gè)隊(duì)列的物理地址通過(guò)頁(yè)表映射給需要訪問(wèn)所述硬件單元的應(yīng)用程 序。
3. 根據(jù)權(quán)利要求1所述的硬件虛擬端口,其特征在于,所述硬件虛擬端口還包括: 級(jí)聯(lián)單元,用于將所述處理器包括的至少二個(gè)硬件單元級(jí)聯(lián)起來(lái)形成第一邏輯硬件單 J Li 〇
4. 根據(jù)權(quán)利要求3所述硬件虛擬端口,其特征在于,所述級(jí)聯(lián)單元包括: 第一接收子單元,用于接收應(yīng)用程序向所述第一邏輯硬件單元發(fā)送的待處理數(shù)據(jù); 第一調(diào)度子單元,用于根據(jù)預(yù)先配置的級(jí)聯(lián)路由表對(duì)所述待處理數(shù)據(jù)進(jìn)行調(diào)度,使第 一邏輯硬件單元包括的至少二個(gè)硬件單元依次對(duì)所述待處理數(shù)據(jù)進(jìn)行處理; 第一發(fā)送子單元,用于將所述待處理數(shù)據(jù)經(jīng)過(guò)所述第一邏輯硬件單元的至少二個(gè)硬件 單元依次處理后得到的數(shù)據(jù)發(fā)送給應(yīng)用程序。
5. 根據(jù)權(quán)利要求1所述的硬件虛擬端口,其特征在于,所述硬件虛擬端口還包括: 組合單元,用于將所述處理器包括的至少二個(gè)硬件單元組合起來(lái)形成第二邏輯硬件單 J Li 〇
6. 根據(jù)權(quán)利要求5所述的硬件虛擬端口,其特征在于,所述組合單元包括: 第二接收子單元,用于接收應(yīng)用程序向所述第二邏輯硬件單元發(fā)送的待處理數(shù)據(jù); 第二調(diào)度子單元,用于將所述待處理數(shù)據(jù)調(diào)度給所述至少二個(gè)硬件單元中的其中一個(gè) 硬件單元進(jìn)行處理; 第二發(fā)送子單元,用于將所述待處理數(shù)據(jù)經(jīng)過(guò)所述至少二個(gè)硬件單元中的其中一個(gè)硬 件單元進(jìn)行處理后得到的數(shù)據(jù)發(fā)送給應(yīng)用程序。
7. 根據(jù)權(quán)利要求1-6任一項(xiàng)所述的硬件虛擬端口,其特征在于,所述處理器包括的硬 件單元為硬件加速器HAC或輸入/輸出I/O。
8. 根據(jù)權(quán)利要求1-6任一項(xiàng)所述的硬件虛擬端口,其特征在于,所述硬件虛擬端口還 包括: 物理中斷/事件控制單元,用于接收來(lái)自處理器中硬件單元的中斷/事件; 事件隊(duì)列單元,用于對(duì)上述中斷/事件進(jìn)行識(shí)別和調(diào)度; 虛擬中斷控制單元,用于將物理加速器的中斷/事件通知到相應(yīng)的應(yīng)用程序。
9. 一種處理器系統(tǒng),其特征在于,所述處理器系統(tǒng)包括如權(quán)利要求1-8任一項(xiàng)所述的 硬件虛擬端口以及與所述硬件虛擬端口連接的處理器。
【文檔編號(hào)】G06F21/55GK104156663SQ201410374591
【公開日】2014年11月19日 申請(qǐng)日期:2014年7月31日 優(yōu)先權(quán)日:2014年7月31日
【發(fā)明者】李泉, 仇永成, 趙慧斌 申請(qǐng)人:上海華為技術(shù)有限公司