內存擴展系統及方法
【專利摘要】本申請實施例公開了一種內存擴展系統及方法,該系統包括:處理器、擴展內存、擴展芯片和多個處理器安裝位,每個處理器安裝位上都設置有內存安裝位;多個處理器安裝位之間通過快速通道互聯QPI接口相連接,至少一個處理器安裝位上安裝有處理器,其它至少一個處理器安裝位作為擴展安裝位;至少一個擴展安裝位上安裝有擴展芯片;擴展內存安裝在與擴展芯片相連接的內存安裝位上。該內存擴展系統,在其它處理器位安裝擴展芯片替代處理器,使得已有的處理器可以通過擴展芯片訪問擴展芯片所帶的擴展內存,從而在沒有增加處理能力的情況下增加了已有處理器的內存容量,解決了現有技術通過增加處理器來擴展內存導致處理能力冗余的問題。
【專利說明】內存擴展系統及方法
【技術領域】
[0001]本申請涉及信息存儲【技術領域】,特別是涉及一種內存擴展系統及方法。
【背景技術】
[0002]對于計算機系統來說,處理器的計算能力、內存容量、輸入/輸出接口的帶寬是三個重要的性能評價指標。為了提高計算能力,系統需要配置高性能的處理器,例如多核多線程的處理器,而且常常將多個處理器互連起來形成SMP (Symmetrical Multi Processing,對稱多處理器)或NUMA (Non Uniform Memory Access,非均勻性內存訪問)結構,實現業務的并發處理。為了擴大內存容量,處理器通常集成了多個內存控制器,每個控制器可以支持多個內存條,結合上述多處理器技術,可以將內存容量擴大到數百GB的規模。為了提高輸入/輸出接口的帶寬,近十年來業界推出了 PCI Express (Peripheral ComponentInterconnect Express,外設互聯標準總線)、RapidIO、Interlaken、10G以太網等高速接口,速率也隨著協議版本的升級在不斷提高。
[0003]一般來說,計算能力、內存容量和輸入/輸出接口帶寬應該均衡配置,否則容易出現性能瓶頸,影響計算機系統的整體性能。但在某些特殊應用場景下,例如服務器用于不同的業務類型(Web服務器、數據庫服務器、流媒體服務器等),對這三個指標的要求有不同的側重點。對于以控制功能為主的應用場景,處理器的計算能力最重要,相對來說內存容量不是太迫切;而對于虛擬化應用場景來說,由于需要將多種業務部署在同一個處理器的多個內核上,每種業務都要分配一定的內存空間,因此對內存容量的需求相對更為迫切。
[0004]而目前的服務器一般都是采用通用多路處理器設計,雖然可以支持多種業務,但具體執行何種業務是由客戶自行決定的,例如安裝不同的應用程序完成不同的業務功能,因此服務器可能在處理能力或內存容量方面存在一定的冗余,增加硬件成本和運行功耗。舉例來說,假設有一個四路服務器,里面最多可以安裝四個處理器,每個處理器都集成了內存控制器,可以外接內存條。在上述虛擬化場景下,可能不需要安裝所有四個處理器,只安裝兩個處理器即可滿足計算能力的需求,但內存容量需求卻可能超過了兩個處理器自帶內存的容量,如果把另兩個處理器也裝上去,會增加成本和功耗,而如果不把另兩個處理器裝上去,很顯然內存容量又不夠用。
【發明內容】
[0005]本申請實施例中提供了一種內存擴展系統及方法,以解決現有技術中通過增加處理器來擴展內存容量導致處理能力冗余的問題。
[0006]為了解決上述技術問題,一方面,本申請實施例提供了一種內存擴展系統,包括:處理器、擴展內存、擴展芯片和多個處理器安裝位,其中,每個所述處理器安裝位上都設置有與所述處理器安裝位相連接的內存安裝位;多個所述處理器安裝位之間通過快速通道互聯QPI接口相連接,至少一個處理器安裝位上安裝有所述處理器,其它至少一個處理器安裝位作為擴展安裝位;至少一個擴展安裝位上安裝有所述擴展芯片,所述擴展芯片具有唯一的標識號碼;所述擴展內存安裝在與所述擴展芯片相連接的內存安裝位上,所有所述擴展內存的地址都在所述處理器的地址空間范圍內。
[0007]在第一方面第一種可能的實現方式中,所述擴展芯片的管腳與所述處理器的管腳兼容。
[0008]結合第一方面或第一方面的第一種可能的實現方式,在第一方面第二種可能的實現方式中,所述處理器包括:查詢指令生成模塊,用于生成標識號碼查詢指令;查詢指令發送模塊,用于將所述標識號碼查詢指令通過所述處理器所在處理器安裝位上的QPI接口發送;標識號碼接收模塊,用于通過所述處理器所在處理器安裝位上的QPI接口接收標識號碼;標識號碼判斷模塊,用于判斷接收到的所述標識號碼是否為擴展芯片的標識號碼;配置模塊,用于當所述標識號碼為擴展芯片的標識號碼時,為所述擴展芯片配置內存控制器,在所述處理器的地址空間中分配與所述擴展芯片相連接的擴展內存相對應的內存地址。
[0009]結合第一方面的第二種可能的實現方式,在第一方面第三種可能的實現方式中,該處理器還包括:報文生成模塊,用于生成用于讀取數據或寫入數據的、協議為QPI協議的報文;報文發送模塊,用于將所述報文通過所述處理器所在處理器安裝位上的QPI接口發送;數據接收模塊,用于通過所述處理器所在處理器安裝位上的QPI接口接收所述擴展芯片根據所述報文讀取得到的數據。
[0010]結合第一方面的第三種可能的實現方式,在第一方面第四種可能的實現方式中,所述擴展芯片包括:查詢指令接收模塊,用于通過所述擴展芯片所在擴展安裝位上的QPI接口接收標識號碼查詢指令;標識號碼獲取模塊,用于根據所述標識號碼查詢指令獲取所述擴展芯片的標識號碼;標識號碼發送模塊,用于將獲取得到的標識號碼通過所述擴展芯片所在擴展安裝位上的QPI接口發送。
[0011]結合第一方面的第四種可能的實現方式,在第一方面第五種可能的實現方式中,所述擴展芯片還包括=QPI接口模塊、協議轉換模塊和內存接口模塊,其中,所述QPI接口模塊與所述擴展芯片所在擴展安裝位上的QPI接口相連接,用于接收所述處理器發送的、協議為QPI協議的報文;所述協議轉換模塊,用于將QPI協議的報文轉成內存接口協議后向所述內存接口模塊發送;所述內存接口模塊與位于所述擴展芯片所在擴展安裝位上內存安裝位上的擴展內存相連接,用于根據協議轉換后的報文在所述擴展內存中讀取數據或寫入數據,將讀取到的數據向所述協議轉換模塊發送;所述協議轉換模塊還用于將讀取到的數據由內存接口協議轉換成QPI協議后向所述QPI接口模塊發送,所述QPI接口模塊還用于將協議轉換后的數據通過所述擴展芯片所在擴展安裝位上的QPI接口發送。
[0012]第二方面,本申請實施例提供了一種內存擴展方法,所述方法包括:處理器生成標識號碼查詢指令,將所述標識號碼查詢指令通過所述處理器所在處理器安裝位上的快速通道互聯QPI接口發送;擴展芯片通過所述擴展芯片所在處理器安裝位上的QPI接口接收查詢指令,根據所述標識號碼查詢指令獲取所述擴展芯片的標識號碼,將獲取得到的標識號碼通過所述擴展芯片所在處理器安裝位上的QPI接口發送;所述處理器通過所述處理器所在處理器安裝位上的QPI接口接收標識號碼,判斷所述標識號碼是否為擴展芯片的標識號碼,當所述標識號碼為擴展芯片的標識號碼時,為所述擴展芯片配置內存控制器,在所述處理器的地址空間中分配與所述擴展芯片相連接的擴展內存相對應的內存地址。
[0013]在第二方面的第一種可能的實現方式中,該方法還包括:所述處理器判斷是否向所述處理器所在處理器安裝位上的所有QPI接口發送標識號碼查詢指令;如果否,所述處理器向未發送標標識號碼查詢指令的QPI接口發送標識號碼查詢指令。
[0014]結合第一方面或第二方面第一種可能的實現方式,在第二方面第二種可能的實現方式中,該方法還包括:所述處理器生成用于讀取數據或寫入數據的、協議為QPI協議的報文,將所述報文通過所述處理器所在處理器安裝位上的QPI接口發送;所述擴展芯片通過所述擴展芯片所在處理器安裝位上的QPI接口接收所述報文,將所述報文轉換成內存接口協議后,根據協議轉換后的報文在與所述擴展芯片相連接的擴展內存中讀取數據或寫入數據,將讀取到的數據由內存接口協議轉換成QPI協議后通過所述擴展芯片所在處理器安裝位上的QPI接口發送;所述處理器通過所述處理器所在處理器安裝位上的QPI接口接收協議轉換后的數據。
[0015]由以上技術方案可見,本申請實施例提供的該內存擴展系統,在一些處理器安裝位上設置有處理器,在其它處理器安裝位上設置擴展芯片,處理器與擴展芯片之間可以通過處理器安裝位之間的QPI接口進行數據交互,每個擴展芯片都可以單獨連接有自己的擴展內存,處理器通過擴展芯片可以對與每個擴展芯片連接的擴展內存進行訪問。
[0016]與現有技術相比,當處理能力滿足要求但內存容量需求超過處理器自帶內存的容量的情況,該內存擴展系統,采用在其它處理器安裝位擴展芯片替代處理器,已有的處理器可以通過擴展芯片訪問擴展芯片所帶的擴展內存,從而可以在沒有增加處理能力的情況下增加了已有處理器的內存容量,避免現有技術通過增加處理器來擴展內存容量導致處理能力冗余的問題。
【專利附圖】
【附圖說明】
[0017]為了更清楚地說明本申請實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,對于本領域普通技術人員而言,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其它的附圖。
[0018]圖1為本申請實施例提供的一種內存擴展系統的結構示意圖;
[0019]圖2為本申請實施例提供的一種第一處理器的結構示意圖;
[0020]圖3為本申請實施例提供的一種擴展芯片的結構示意圖;
[0021]圖4為本申請實施例提供的另一種內存擴展系統的結構示意圖;
[0022]圖5為本申請實施例提供的另一種第一處理器的結構示意圖;
[0023]圖6為本申請實施例提供的另一種擴展芯片的結構示意圖;
[0024]圖7為本申請實施例提供的一種內存擴展方法的流程示意圖;
[0025]圖8為本申請實施例提供的另一種內存擴展方法的流程示意圖;
[0026]圖9為本申請實施例提供的又一種內存擴展方法的流程示意圖。
【具體實施方式】
[0027]本申請如下實施例提供了一種內存擴展系統及方法,該內存擴展系統在多路處理器設計的系統中,當處理能力滿足要求但內存容量需求超過處理器自帶內存的容量的情況,可以在其它處理器安裝位上安裝擴展芯片以替代處理器,并且在擴展芯片所在的處理器安裝位的內存安裝位上安裝需要的擴展內存,這樣已有的處理器就可以通過QPI接口與擴展芯片進行通信,實現對擴展芯片連接的擴展內存進行訪問,因此可以解決現有多處理器設計的服務器通過增加處理器來擴展內存容量導致處理能力冗余的問題。
[0028]為了使本【技術領域】的人員更好地理解本申請實施例中的技術方案,并使本申請實施例的上述目的、特征和優點能夠更加明顯易懂,下面結合附圖對本申請實施例中技術方案作進一步詳細的說明。
[0029]一個實施例:
[0030]參見圖1,為本申請實施例提供的內存擴展系統的一種結構示意圖,圖中以三個處理器安裝座的多處理器設計的系統為例,該內存擴展系統可以包括:第一處理器1、第一內存2、、第一擴展芯片3、第一擴展內存4、第二擴展內存5和第二擴展芯片6,其中,第一處理器1、第一擴展芯片3和第二擴展芯片6分別安裝在三個處理器安裝位上(圖中未示出),三個處理器安裝位之間通過QPI (Quick Path Interconnect,快速通道互聯)接口相連接,第一內存2為第一處理器I的自帶內存,第一擴展內存4與第一擴展芯片3相連接,第二擴展內存5與第二擴展芯片6相連接。
[0031]為了敘述方便,在本申請實施例中,可以將第一處理器I所在的處理器安裝位稱為第一處理器安裝位,將第一擴展芯片3所在的處理器安裝位稱為第一擴展安裝位,將第二擴展芯片6所在的處理器安裝位稱為第二擴展安裝位。第一處理器I可以直接焊接在第一處理器安裝位,另外,為了方便拆卸或方便對多處理器系統進行組合,第一處理器I還可以通過插拔接口安裝在第一處理器安裝位上,插拔接口可以為相互匹配的管腳和插孔,或者,相互匹配的插卡和插槽。第一擴展芯片3和/或第二擴展芯片6可以通過焊接的方式固定在相應的擴展安裝位上,當然為了方便拆卸或方便對多處理器系統進行組合,也可以通過插拔接口的方式與相應的擴展安裝位相連接。三個處理器安裝位之間通過QPI接口進行數據交互,QPI接口由20對差分發送信號、20對差分接收信號和兩對差分時鐘信號組成,信號速率可到6.4GT/s,雙向帶寬為25.6GB/s,此外還支持高速緩沖存儲器一致性,可以執行對外圍設備的配置訪問和對內存的讀寫操作。
[0032]在每個處理器安裝位上都設置有一個或多個內存安裝位,用于增加內存空間。第一內存2設置在第一處理器安裝位上的內存安裝位上,第一擴展內存4設置在第一擴展安裝位上的內存安裝位上,第二擴展內存5設置在第二擴展安裝位上的內存安裝位上。處理器安裝位與相連接的內存安裝位之間通過內存接口相連接,并且處理器安裝位與相連接的內存安裝位之間交互數據的協議格式為內存接口協議。
[0033]每個擴展芯片都有唯一的標識號碼,通過該標識號碼可以識別出處理器安裝位上的是否為擴展芯片。每個擴展芯片都可以連接一個或多個擴展內存,并且所有擴展芯片相連接的擴展內存的地址都在第一處理器I的地址空間范圍內。另外,為了保證每個擴展芯片都可以安裝在處理器安裝位上,在本申請實施例中,每個擴展芯片的管腳與處理器的管腳都相兼容。在本申請實施例中,可以將擴展芯片的以下管腳定義與處理器的管腳兼容:
[0034]1、電源。處理器的電源種類較多,例如核心電壓、I/O電壓等,都由單板上的電源模塊提供。擴展芯片的核心電壓可以與處理器相同,也可以通過擴展芯片內部電路將單板提供的電壓轉換為自己所需的電壓。擴展芯片的I/o電壓用于給I/O接口電路供電,由于擴展芯片也要提供QPI接口,因此這部分電路可以直接利用單板提供的電壓,管腳位置與處理器保持一致。[0035]2、地。地可以為各種電源和信號提供回路,同時為高速信號提供屏蔽功能,擴展芯片可以直接利用處理器已有的地信號。
[0036]3、時鐘。時鐘為處理器內部模塊、I/O接口提供參考時鐘,處理器內部有鎖相環可以將單板提供的外部時鐘倍頻到更高的頻率,還會產生內存接口時鐘來同步對內存條的讀寫訪問。擴展芯片可以直接利用處理器的輸入參考時鐘,并倍頻得到自己所需的工作時鐘,同時必須接收和產生QPI接口時鐘與對端處理器通信,還要產生內存接口時鐘來同步對內存條的訪問,管腳位置、功能和電氣特性與處理器保持一致。
[0037]4、復位。復位可以將處理器和單板上的其它器件置為確定的初始狀態,然后處理器從第一條指令開始執行。擴展芯片可以直接利用處理器的復位信號,管腳位置、功能和電氣特性與處理器保持一致。
[0038]5、QPI接口。擴展芯片也要提供QPI接口,管腳位置、功能和電氣特性與處理器保
持一致。
[0039]6、內存接口。擴展芯片也要提供內存接口,包括用于讀取內存條信息的12C接口,管腳位置、功能和電氣特性與處理器保持一致。
[0040]圖1中的9為橋片,10為BIOS (Basic Input Output System,基本輸入輸出系統),第一處理器I通過DMI接口(Direct Media Interface,直接媒體接口)與橋片9 ( 一般稱為南橋)相連接,通過橋片9,第一處理器I可以訪問B10S10。通常將可以訪問橋片9的第一處理器I稱為主處理器,將其它處理器稱為從處理器(圖1所示實施例中沒有設置從處理器),每次上電復位結束后都是主處理器先啟動,執行外圍設備的初始化,然后控制從處理器啟動。
[0041]參見圖2,為本申請實施例提供的第一處理器的一種結構示意圖。第一處理器I可以包括:
[0042]查詢指令生成模塊21,用于生成標識號碼查詢指令;
[0043]查詢指令發送模塊22,用于將標識號碼查詢指令通過第一處理器安裝位上的QPI接口發送;
[0044]標識號碼接收模塊23,用于通過第一處理器安裝位上的QPI接口接收標識號碼;
[0045]標識號碼判斷模塊24,用于判斷接收到的標識號碼是否為擴展芯片的標識號碼;
[0046]配置模塊25,用于當標識號碼為擴展芯片的標識號碼時,為擴展芯片配置內存控制器,在處理器的地址空間中分配與擴展芯片相連接的擴展內存相對應的內存地址。
[0047]相對應圖2所示的第一處理器,參見圖3,為本申請實施例提供的擴展芯片的一種結構示意圖。擴展芯片可以包括:
[0048]查詢指令接收模塊31,用于通過擴展芯片所在擴展安裝位上的QPI接口接收標識號碼查詢指令;
[0049]標識號碼獲取模塊32,用于根據標識號碼查詢指令獲取擴展芯片的標識號碼;
[0050]標識號碼發送模塊33,用于將獲取得到的標識號碼通過擴展芯片所在擴展安裝位上的QPI接口發送。
[0051]由此,可以看到,在第一處理器I通過對擴展芯片的標識號碼進行查詢,就可以對擴展芯片進行初始化。
[0052]在本申請實施例中,處理器的數量以I個為例。在實際應用中,處理器的數量根據系統對計算能力的需要可以自由設定,可以為兩個或多個,當處理器為多個時,需要處理器能夠提供的QPI接口更多。
[0053]參見圖4,為本申請實施例提供的內存擴展系統的另一種結構示意圖。圖中,內存擴展系統還可以包括:第二處理器7和第二內存8,第二處理器7所在的處理器安裝位為第二處理器安裝位,并且第二內存8是第二處理器7的自帶內存。
[0054]第一處理器I和第二處理器7通過QPI接口直連,兩個處理器都集成有內存控制器,并且每個處理器都可以外掛一個或多個屬于自己的內存,同時兩個處理器還支持彼此內存之間的相互訪問。圖4所示實施例中,第一處理器I可以稱為主處理器,第二處理器2為從處理器。當系統上電或復位結束后主處理器最先啟動,執行BIOS中的代碼,在完成外圍設備的初始化并為從處理器準備好啟動代碼后才控制其它從處理器啟動,然后加載操作系統,開始在所有處理器上運行。
[0055]在系統上電后,第一處理器I在外圍設備初始化完成后以及加載操作系統成功后,就可以對擴展芯片上的擴展內存進行訪問。在本申請實施例中,如圖5所示,第一處理器I還可以包括:
[0056]報文生成模塊51,用于生成用于讀取數據或寫入數據的、協議為QPI協議的報文;
[0057]報文發送模塊52,用于將報文通過第一處理器安裝位上的QPI接口發送;
[0058]數據接收模塊53,用于通過第一處理器安裝位上的QPI接口接收擴展芯片根據所述報文讀取得到的數據。
[0059]相對應圖5所示的第一處理器,如圖6所示,擴展芯片還可以包括:QPI接口模塊61、協議轉換模塊62和內存接口模塊63。
[0060]QPI接口模塊61與擴展芯片所在擴展安裝位上的QPI接口相連接,用于接收第一處理器發送的、協議為QPI協議的報文。由于處理器安裝位之間通過QPI接口進行數據交互,所以第一處理器發送的報文為QPI協議格式。
[0061]協議轉換模塊62,用于將QPI協議的報文轉成內存接口協議后向內存接口模塊63發送。對于擴展芯片和擴展內存,兩者之間通過內存接口相連接,即兩者之間的交互的數據為內存接口協議格式。所以,協議轉換模塊62在接收到QPI接口發送的QPI協議格式的報文后,首先根據QPI協議對報文進行解析,識別出報文內包含的:要訪問的內存地址、訪問類型(讀或寫)、數據長度和待寫入的數據(對于寫操作),然將識別得到的信息轉換成內存接口協議格式后,發送給內存接口模塊63,由內存接口模塊63發送給擴展內存。另外,當內存接口模塊63接收到擴展內存發送的數據后,協議轉換模塊62還用于將接收到的數據轉換成QPI協議格式,然后由QPI接口模塊61發送給第一處理器I。
[0062]內存接口模塊63與位于擴展芯片所在擴展安裝位上的內存安裝位上的擴展內存相連接,用于根據協議轉換后的報文在擴展內存中讀取數據或寫入數據,將讀取到的數據向協議轉換模塊62發送。
[0063]由以上技術方案可見,本申請實施例提供的該內存擴展系統,在一些處理器安裝位上設置有處理器,在其它處理器安裝位上設置擴展芯片,處理器與擴展芯片之間可以通過處理器安裝位之間的QPI接口進行數據交互,每個擴展芯片都可以單獨連接有擴展內存,并且處理器可以對與每個擴展芯片連接的擴展內存進行訪問。
[0064]與現有技術相比,該內存擴展系統,當處理能力滿足要求但內存容量需求超過處理器自帶內存的容量的情況,通過在其它處理器位安裝擴展芯片替代處理器,通過擴展芯片訪問擴展芯片所帶的擴展內存,從而可以避免出現現有技術通過增加處理器來擴展內存導致處理能力冗余的問題。
[0065]另外,相對于處理器,擴展芯片的作用主要是進行協議轉換,擴展芯片的成本和功耗都很小,所以本申請實施例提供的該內存擴展系統用較小的成本和功耗就可以實現增加
內存容量。
[0066]此外,在本申請實施例中,都是以第一處理器為例進行說明,第一擴展芯片和第二擴展芯片都附屬于第一處理器。在本申請其他實施例中,每個擴展芯片都可以與不同處理器之間建立聯系,例如:第二擴展芯片既可以附屬于第一處理器,也可以附屬于第二處理器,同樣,第一擴展芯片也是如此,當第二處理器有附屬的擴展芯片時,第二處理器的結構可以參見上述實施例中描述的第一處理器的結構,在此不再贅述。這里,擴展芯片與處理器之間的對應關系,可以根據實際使用情況自由設定,例如:在本申請實施例中,第一擴展芯片和第二擴展芯片都屬于第一處理器,那么第一處理器的軟件設計和控制就需要專門設計,例如第一處理器通過控制是否允許第二處理器檢測擴展芯片,進而實現對第二處理器進行控制。
[0067]另一實施例:
[0068]對應圖1所示的內存擴展系統,參見圖7,為本申請實施例提供的一種內存擴展方法的流程示意圖。所述內存擴展方法可以包括:
[0069]SlOl:處理器生成標識號碼查詢指令,將標識號碼查詢指令發送。
[0070]處理器將生成標識號碼查詢指令通過處理器所在處理器安裝位上的QPI接口發送,用于對與處理器所在處理器安裝位相連接的擴展芯片進行確定。
[0071]S102:擴展芯片接收標識號碼查詢指令,根據標識號碼查詢指令獲取擴展芯片的標識號碼,將獲取得到的標識號碼發送。
[0072]每個擴展芯片所在的處理器安裝位都通過QPI接口與處理器所在處理器安裝位相連接,所以每個擴展芯片都可以通過所在處理器安裝位上的QPI接口接收處理器發送的標識號碼查詢指令。根據標識號碼查詢指令,擴展芯片可以在查詢自身存儲的標識號碼,并且將查詢到的標識號碼通過所在處理器安裝位上的QPI接口返回給處理器。
[0073]S103:處理器接收標識號碼,判斷標識號碼是否為擴展芯片的標識號碼,當標識號碼為擴展芯片的標識號碼時,為擴展芯片配置內存控制器,在處理器的地址空間中分配與擴展芯片相連接的擴展內存相對應的內存地址。
[0074]在本申請實施例中,處理器通過向所在處理器安裝位上的各個QPI接口發送標識號碼查詢指令,并接收返回的標識號碼,通過對標識號碼進行識別可以確認與所在處理器安裝位相連接的擴展芯片,當識別出擴展芯片后,可以對擴展芯片以及與擴展芯片連接的擴展內存進行初始化操作,包括:為擴展芯片配置的內存控制器,為擴展內存分配地址空間,其中,配置內存控制器可以對與擴展芯片相連接的擴展內存進行數據讀取或寫入等操作,為擴展內存分配地址空間,可以將擴展內存映射成處理器自己地址空間的一部分。初始化操作完成后,處理器就可以對與擴展芯片相連接的擴展內存進行訪問。當然,處理器還可以對自帶的內存也進行初始化操作,例如:圖1中第一處理器I的自帶內存為第一內存2,第一處理器I可以為第一內存2配置內存控制器以及為第一內存2分配地址空間。[0075]參見圖8,為本申請實施例提供的內存擴展方法的另一種流程示意圖。該內存擴展方法還可以包括:
[0076]S201:第一處理器生成用于讀取數據或寫入數據的報文,將報文發送。
[0077]第一處理器根據數據讀取或寫入的需要,在第一處理器內生成讀取數據或寫入數據的報文,并將報文通過第一處理器安裝位上與擴展芯片相連接的QPI接口發送出去。由于處理器安裝位之間都是通過QPI接口進行數據交互,所以生成的讀取數據或寫入數據的報文的格式為QPI協議。
[0078]S202:擴展芯片接收報文,將報文轉換成內存接口協議后,根據協議轉換后的報文在擴展內存中讀取數據或寫入數據,將讀取到的數據由內存接口協議轉換成QPI協議后發送。
[0079]擴展芯片通過擴展芯片所在的擴展安裝位上的QPI接口接收第一處理器I發送報文。由于第一處理器發送的報文為QPI協議格式,而對于擴展芯片和擴展內存,兩者之間通過內存接口相連接,即兩者之間的交互的數據為內存接口協議格式,所以,在擴展芯片接收到QPI協議格式的報文后,首先根據QPI協議對報文進行解析,識別出報文內包含的:要訪問的內存地址、訪問類型(讀或寫)、數據長度和待寫入的數據(對于寫操作),然將識別得到的信息轉換成內存接口協議格式后,發送給擴展內存,在擴展內存中進行數據讀取或數據寫入。當從擴展內存讀取到數據后,擴展芯片接收擴展內存發送的數據,并且將數據轉換成QPI協議格式,然后由擴展芯片所在的擴展安裝位上的QPI接口發送給第一處理器I。
[0080]通過上述描述,可見,擴展芯片在數據讀取或數據寫入過程中,其主要作用是進行協議轉換,與現有技術需要增加內存容量采用安裝新的處理器而言,安裝擴展芯片來增加內存容量的方式,不僅成本大大降低,而且擴展芯片的功耗相對處理器也非常小。
[0081]S203:第一處理器接收擴展芯片發送的數據。
[0082]第一處理器I通過第一處理器安裝位上的QPI接口接收擴展芯片發送的QPI協議格式的數據。
[0083]由以上技術方案可見,本申請實施例提供的該內存擴展方法,通過查找與處理器相連接的擴展芯片的標識號碼,對擴展芯片進行初始化操作,包括:為擴展芯片配置內存控制器、在所述處理器的地址空間中為擴展內存分配相對應的內存地址,向擴展內存加載啟動程序。因此,當處理器需要數據讀取或寫入時,可以通過擴展芯片直接訪問與擴展芯片相連接的擴展內存,即以較小的成本和功耗,就可以解決處理能力冗余的問題。
[0084]另外,對于圖4所示的多處理器內存擴展系統,第一處理器I作為主處理器,第二處理器7作為從處理器,在具體的執行過程中,作為主處理器的第一處理器I還可以執行圖9所示的步驟:
[0085]S301:系統復位結束后第一處理器啟動;
[0086]S302:通過QPI接口查詢標識號碼;
[0087]S303:判斷標識號碼是否為擴展芯片的標識號碼,如果是,執行步驟S304,如果否,轉入步驟S305 ;
[0088]S304:為擴展芯片配置內存控制器,為擴展內存分配相應的內存空間;
[0089]S305:判斷第一處理器安裝位上所有QPI接口是否遍歷完畢;當第一處理器安裝位上所有QPI接口遍歷完畢時,執行步驟S306 ;當第一處理器安裝位上所有QPI接口未遍歷完畢時,轉入步驟S302 ;
[0090]S306:為第二處理器加載啟動程序;
[0091]S307:控制第二處理器啟動;
[0092]S308:加載操作系統運行。
[0093]通過上述步驟的配置,可以對與第一處理器相連接的外圍設備(指擴展芯片)進行初始化,并且為其它從處理器準備好啟動代碼,控制其它從處理器開始啟動,最后第一處理器加載操作系統,并進行運行。對擴展芯片初始化后,第一處理器就可以對與擴展芯片相連接的擴展內存進行訪問。
[0094]通過以上的方法實施例的描述,所屬領域的技術人員可以清楚地了解到本申請可借助軟件加必需的通用硬件平臺的方式來實現,當然也可以通過硬件,但很多情況下前者是更佳的實施方式。基于這樣的理解,本申請的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執行本申請各個實施例所述方法的全部或部分步驟。而前述的存儲介質包括:只讀存儲器(ROM)、隨機存取存儲器(RAM)、磁碟或者光盤等各種可以存儲程序代碼的介質。
[0095]可以理解的是,本申請可用于眾多通用或專用的計算系統環境或配置中。例如:個人計算機、服務器計算機、手持設備或便攜式設備、平板型設備、多處理器系統、基于微處理器的系統、置頂盒、可編程的消費電子設備、網絡PC、小型計算機、大型計算機、包括以上任何系統或設備的分布式計算環境等等。
[0096]本申請可以在由計算機執行的計算機可執行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執行特定任務或實現特定抽象數據類型的例程、程序、對象、組件、數據結構等等。也可以 在分布式計算環境中實踐本申請,在這些分布式計算環境中,由通過通信網絡而被連接的遠程處理設備來執行任務。在分布式計算環境中,程序模塊可以位于包括存儲設備在內的本地和遠程計算機存儲介質中。
[0097]需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其它變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其它要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
[0098]以上所述僅是本申請的【具體實施方式】,應當指出,對于本【技術領域】的普通技術人員來說,在不脫離本申請原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本申請的保護范圍。
【權利要求】
1.一種內存擴展系統,其特征在于,包括:處理器、擴展內存、擴展芯片和多個處理器安裝位,其中, 每個所述處理器安裝位上都設置有與所述處理器安裝位相連接的內存安裝位; 多個所述處理器安裝位之間通過快速通道互聯QPI接口相連接,至少一個處理器安裝位上安裝有所述處理器,其它至少一個處理器安裝位作為擴展安裝位; 至少一個擴展安裝位上安裝有所述擴展芯片,所述擴展芯片具有唯一的標識號碼;所述擴展內存安裝在與所述擴展芯片相連接的內存安裝位上,所有所述擴展內存的地址都在所述處理器的地址空間范圍內。
2.根據權利要求1所述的系統,其特征在于,所述擴展芯片的管腳與所述處理器的管腳兼容。
3.根據權利要求1或2所述的系統,其特征在于,所述處理器包括: 查詢指令生成模塊,用于生成標識號碼查詢指令; 查詢指令發送模塊,用于將所述標識號碼查詢指令通過所述處理器所在處理器安裝位上的QPI接口發送; 標識號碼接收模塊,用于通過所述處理器所在處理器安裝位上的QPI接口接收標識號碼; 標識號碼判斷模塊,用于判斷接收到的所述標識號碼是否為擴展芯片的標識號碼; 配置模塊,用于當所述標識號碼 為擴展芯片的標識號碼時,為所述擴展芯片配置內存控制器,在所述處理器的地址空間中分配與所述擴展芯片相連接的擴展內存相對應的內存地址。
4.根據權利要求3所述的系統,其特征在于,該處理器還包括: 報文生成模塊,用于生成用于讀取數據或寫入數據的、協議為QPI協議的報文; 報文發送模塊,用于將所述報文通過所述處理器所在處理器安裝位上的QPI接口發送; 數據接收模塊,用于通過所述處理器所在處理器安裝位上的QPI接口接收所述擴展芯片根據所述報文讀取得到的數據。
5.根據權利要求4所述的系統,其特征在于,所述擴展芯片包括: 查詢指令接收模塊,用于通過所述擴展芯片所在擴展安裝位上的QPI接口接收標識號碼查詢指令; 標識號碼獲取模塊,用于根據所述標識號碼查詢指令獲取所述擴展芯片的標識號碼;標識號碼發送模塊,用于將獲取得到的標識號碼通過所述擴展芯片所在擴展安裝位上的QPI接口發送。
6.根據權利要求5所述的系統,其特征在于,所述擴展芯片還包括:QPI接口模塊、協議轉換模塊和內存接口模塊,其中, 所述QPI接口模塊與所述擴展芯片所在擴展安裝位上的QPI接口相連接,用于接收所述處理器發送的、協議為QPI協議的報文; 所述協議轉換模塊,用于將QPI協議的報文轉成內存接口協議后向所述內存接口模塊發送; 所述內存接口模塊與位于所述擴展芯片所在擴展安裝位上內存安裝位上的擴展內存相連接,用于根據協議轉換后的報文在所述擴展內存中讀取數據或寫入數據,將讀取到的數據向所述協議轉換模塊發送; 所述協議轉換模塊還用于將讀取到的數據由內存接口協議轉換成QPI協議后向所述QPI接口模塊發送,所述QPI接口模塊還用于將協議轉換后的數據通過所述擴展芯片所在擴展安裝位上的QPI接口發送。
7.—種內存擴展方法,其特征在于,所述方法包括: 處理器生成標識號碼查詢指令,將所述標識號碼查詢指令通過所述處理器所在處理器安裝位上的快速通道互聯QPI接口發送; 擴展芯片通過所述擴展芯片所在處理器安裝位上的QPI接口接收查詢指令,根據所述標識號碼查詢指令獲取所述擴展芯片的標識號碼,將獲取得到的標識號碼通過所述擴展芯片所在處理器安裝位上的QPI接口發送; 所述處理器通過所述處理器所在處理器安裝位上的QPI接口接收標識號碼,判斷所述標識號碼是否為擴展芯片的標識號碼,當所述標識號碼為擴展芯片的標識號碼時,為所述擴展芯片配置內存控制器,在所述處理器的地址空間中分配與所述擴展芯片相連接的擴展內存相對應的內存地址。
8.根據權利要求7所述的方法,其特征在于,所述方法還包括: 所述處理器判斷是否向所述處理器所在處理器安裝位上的所有QPI接口發送標識號碼查詢指令;如果否,所述處理器向未發送標標識號碼查詢指令的QPI接口發送標識號碼查詢指令。
9.根據權利要求7或8所述的方法,其特征在于,所述方法還包括: 所述處理器生成用于讀取數據或寫入數據的、協議為QPI協議的報文,將所述報文通過所述處理器所在處理器安裝位上的QPI接口發送; 所述擴展芯片通過所述擴展芯片所在處理器安裝位上的QPI接口接收所述報文,將所述報文轉換成內存接口協議后,根據協議轉換后的報文在與所述擴展芯片相連接的擴展內存中讀取數據或寫入數據,將讀取到的數據由內存接口協議轉換成QPI協議后通過所述擴展芯片所在處理器安裝位上的QPI接口發送; 所述處理器通過所述處理器所在處理器安裝位上的QPI接口接收協議轉換后的數據。
【文檔編號】G06F3/06GK103488436SQ201310442041
【公開日】2014年1月1日 申請日期:2013年9月25日 優先權日:2013年9月25日
【發明者】李延松, 鄭玉林 申請人:華為技術有限公司