一種擴(kuò)展同步內(nèi)存總線功能的方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種擴(kuò)展同步內(nèi)存總線功能的方法和裝置。
【背景技術(shù)】
[0002]隨著多核時(shí)代的進(jìn)化和大數(shù)據(jù)時(shí)代的來(lái)臨,計(jì)算機(jī)系統(tǒng)對(duì)于大容量?jī)?nèi)存的需求不斷加強(qiáng)。多核處理器可以將多個(gè)并發(fā)應(yīng)用放在一個(gè)芯片上運(yùn)行,需要的內(nèi)存也就是所有應(yīng)用數(shù)據(jù)需求的總和。而最新出現(xiàn)的以Spark為代表的內(nèi)存計(jì)算模式,在處理大數(shù)據(jù)應(yīng)用時(shí),會(huì)嘗試將工作集常駐內(nèi)存,以避免緩慢的磁盤(pán)操作。這都說(shuō)明大容量?jī)?nèi)存已成為影響性能的決定性因素。
[0003]近年來(lái)以電阻存儲(chǔ)器(RRAM, Resistive random-access memory)、鐵電存儲(chǔ)器(FeRAM,F(xiàn)erroelectric random-access memory)、相變存儲(chǔ)器(PCM,Phase Change Memory)等為代表的新興非易失性隨機(jī)存儲(chǔ)介質(zhì)(NVM, Non-volatile memory)的訪問(wèn)性能在逐步逼近動(dòng)態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器(DRAM, Dynamic Random Access Memory)。基于新型存儲(chǔ)器件和傳統(tǒng)DRAM設(shè)計(jì)新型混合內(nèi)存體系的思想也逐漸被人們所接受。異構(gòu)存儲(chǔ)可以在保持成本和能耗優(yōu)勢(shì)的前提下大幅提升內(nèi)存容量,克服內(nèi)存和外存之間的1/0性能不匹配,將成為優(yōu)化大數(shù)據(jù)處理的重要思路。
[0004]經(jīng)過(guò)以上分析可以看出,內(nèi)存系統(tǒng)在容量、介質(zhì)等方面都面臨更高的要求,需要不斷的擴(kuò)展。但是處理器和內(nèi)存之間傳輸數(shù)據(jù)的業(yè)界標(biāo)準(zhǔn)SDRAM (Synchronous DynamicRandom Access Memory,同步動(dòng)態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器)總線采用固定時(shí)序訪問(wèn)內(nèi)存顆粒,而固定的響應(yīng)延遲不利于實(shí)現(xiàn)容量級(jí)聯(lián)擴(kuò)充,也給搭建混合內(nèi)存系統(tǒng)帶來(lái)困難。
[0005]為了解決現(xiàn)有技術(shù)中存在的問(wèn)題,現(xiàn)有的技術(shù)是通過(guò)擴(kuò)展芯片連接多個(gè)內(nèi)存芯片或者其他存儲(chǔ)介質(zhì)實(shí)現(xiàn)容量的擴(kuò)展。下面根據(jù)圖1進(jìn)行說(shuō)明,圖1中包括處理器(Processor) 101,系統(tǒng)內(nèi)存102,內(nèi)存擴(kuò)展芯片103,以及擴(kuò)展內(nèi)存104,其中,處理器系統(tǒng)101中集成了處理器1011,內(nèi)存控制器1012和10控制器1013,其中,在處理器系統(tǒng)101內(nèi)部,處理器1011和內(nèi)存控制器1012以及10控制器1013通過(guò)片上總線1014相連。系統(tǒng)內(nèi)存102通過(guò)內(nèi)存總線105和處理器系統(tǒng)101相連,擴(kuò)展內(nèi)存104通過(guò)內(nèi)存總線105和內(nèi)存擴(kuò)展芯片103相連,處理器系統(tǒng)101通過(guò)10控制器1012和內(nèi)存擴(kuò)展芯片103可以采用多種方式總線相連接。
[0006]現(xiàn)有技術(shù)一的實(shí)現(xiàn)方式是采用1/0總線或處理器間互聯(lián)總線來(lái)連接處理器系統(tǒng) 101 和內(nèi)存擴(kuò)展芯片 103,常用的總線為 PC1-E (Peripheral Component InterconnectExpress,高速外設(shè)部件互連標(biāo)準(zhǔn))、Intel QPI (Quick Path Interconnect,快速通道互連)或者AMD HT (Hyper Transport,超級(jí)傳輸)總線。采用上述總線,會(huì)存在延遲較大的問(wèn)題,且需要對(duì)內(nèi)存擴(kuò)展芯片103進(jìn)行精細(xì)的流水線設(shè)計(jì),以此掩蓋數(shù)據(jù)訪問(wèn)的延遲。另外,由于內(nèi)存擴(kuò)展芯片采用了不同的1/0總線,處理器會(huì)與內(nèi)存擴(kuò)展芯片之間存在兼容性問(wèn)題,比如基于ARM處理器搭建的服務(wù)器系統(tǒng),如果沒(méi)有Intel的授權(quán),就無(wú)法通過(guò)IntelQPI內(nèi)存擴(kuò)展芯片擴(kuò)充內(nèi)存系統(tǒng)的容量。
[0007]現(xiàn)有技術(shù)二的實(shí)現(xiàn)方式是采用內(nèi)存總線來(lái)連接處理器系統(tǒng)101和內(nèi)存擴(kuò)展芯片103,采用內(nèi)存總線105能夠使得內(nèi)存擴(kuò)展芯片103和處理器系統(tǒng)101能夠直接共享擴(kuò)展內(nèi)存104,訪存的延遲較小,也具備了更好的兼容性。但是現(xiàn)有技術(shù)二中也存在如下問(wèn)題:由于在處理器系統(tǒng)101和擴(kuò)展內(nèi)存104之間存在內(nèi)存擴(kuò)展芯片103,當(dāng)處理器系統(tǒng)101發(fā)出對(duì)擴(kuò)展內(nèi)存104中的數(shù)據(jù)進(jìn)行訪問(wèn)的內(nèi)存訪問(wèn)請(qǐng)求后,集成內(nèi)存控制器1011接受該內(nèi)存訪問(wèn)請(qǐng)求后,采用DDR協(xié)議訪問(wèn)擴(kuò)展內(nèi)存104時(shí),內(nèi)存擴(kuò)展芯片103的存在帶來(lái)了額外的時(shí)延,使得內(nèi)存訪問(wèn)請(qǐng)求的處理結(jié)果無(wú)法按照DDR協(xié)議要求的時(shí)延內(nèi)返回,從而影響上述計(jì)算機(jī)系統(tǒng)對(duì)擴(kuò)展內(nèi)存104訪問(wèn)的可行性。為了解決時(shí)延的問(wèn)題,現(xiàn)有技術(shù)二一般采用修改內(nèi)存控制器的時(shí)序參數(shù)的方式,即通過(guò)對(duì)處理器內(nèi)部集成的內(nèi)存控制器的時(shí)序參數(shù)進(jìn)行修改,使得處理器的時(shí)序參數(shù)大于內(nèi)存實(shí)際的內(nèi)存訪問(wèn)延遲,但是由于處理器支持的最大時(shí)序參數(shù)設(shè)置范圍有限,很難補(bǔ)償訪問(wèn)擴(kuò)展內(nèi)存過(guò)程中額外的訪問(wèn)延遲。
【發(fā)明內(nèi)容】
[0008]針對(duì)現(xiàn)有技術(shù)的不足,本發(fā)明提出一種擴(kuò)展同步內(nèi)存總線功能的方法和裝置。
[0009]本發(fā)明還提出一種擴(kuò)展同步內(nèi)存總線功能的裝置,包括:
[0010]處理器、輔助訪存模塊、擴(kuò)展內(nèi)存控制器;
[0011 ] 其中,處理器用于生成內(nèi)存訪問(wèn)請(qǐng)求,并將所述內(nèi)存訪問(wèn)請(qǐng)求發(fā)送給輔助訪存模塊;
[0012]所述輔助訪存模塊,用于根據(jù)所述內(nèi)存訪問(wèn)請(qǐng)求中所包含的地址屬性信息,判斷所述內(nèi)存訪問(wèn)請(qǐng)求為訪問(wèn)系統(tǒng)內(nèi)存或是擴(kuò)展內(nèi)存,若為訪問(wèn)所述系統(tǒng)內(nèi)存,則將所述內(nèi)存訪問(wèn)請(qǐng)求發(fā)送給內(nèi)存控制器,若為訪問(wèn)擴(kuò)展內(nèi)存,則生成目標(biāo)地址為擴(kuò)展內(nèi)存控制器的訪存請(qǐng)求;
[0013]所述擴(kuò)展內(nèi)存控制器,用于接收所述目標(biāo)地址為擴(kuò)展內(nèi)存控制器的訪存請(qǐng)求,并將所述訪問(wèn)請(qǐng)求發(fā)給擴(kuò)展內(nèi)存。
[0014]所述的擴(kuò)展同步內(nèi)存總線功能的裝置,所述輔助訪存模塊,還用于根據(jù)所述擴(kuò)展內(nèi)存控制器的返回結(jié)果判斷訪問(wèn)擴(kuò)展內(nèi)存是否結(jié)束,如果所述返回結(jié)果為除例外標(biāo)記數(shù)據(jù)之外的數(shù)據(jù),則將所述返回結(jié)果發(fā)給處理器,否則再生成一條新的目標(biāo)地址為所述擴(kuò)展內(nèi)存控制器的訪存請(qǐng)求。
[0015]所述的擴(kuò)展同步內(nèi)存總線功能的裝置,所述輔助訪存模塊還包括令牌計(jì)數(shù)器,所述令牌計(jì)數(shù)器的初始值設(shè)為擴(kuò)展內(nèi)存控制器可緩存的最大寫(xiě)請(qǐng)求數(shù)目,每當(dāng)所述輔助訪存模塊發(fā)出一個(gè)寫(xiě)請(qǐng)求后,所述令牌計(jì)數(shù)器的值減1,當(dāng)所述令牌計(jì)數(shù)器的值降為O后,所述輔助訪存模塊就停止接收處理器訪問(wèn)擴(kuò)展內(nèi)存的寫(xiě)請(qǐng)求;令牌釋放計(jì)數(shù)器,在擴(kuò)展內(nèi)存控制器,所述擴(kuò)展內(nèi)存控制器將緩存的寫(xiě)請(qǐng)求數(shù)據(jù)寫(xiě)到擴(kuò)展內(nèi)存中后,所述令牌釋放計(jì)數(shù)器的值加I,所述輔助訪存模塊定時(shí)訪問(wèn)所述令牌釋放計(jì)數(shù)器,并恢復(fù)所述令牌計(jì)數(shù)器的值。
[0016]所述的擴(kuò)展同步內(nèi)存總線功能的裝置,所述內(nèi)存控制器用于根據(jù)所述內(nèi)存訪問(wèn)請(qǐng)求中所包含的地址屬性信息,判斷所述內(nèi)存訪問(wèn)請(qǐng)求訪問(wèn)系統(tǒng)內(nèi)存或是擴(kuò)展內(nèi)存,當(dāng)確定為訪問(wèn)系統(tǒng)內(nèi)存,將所述內(nèi)存訪問(wèn)請(qǐng)求發(fā)送給所述系統(tǒng)內(nèi)存,當(dāng)確定為訪問(wèn)所述擴(kuò)展內(nèi)存時(shí),將所述內(nèi)存訪問(wèn)請(qǐng)求發(fā)送給所述擴(kuò)展內(nèi)存控制器。
[0017]所述的擴(kuò)展同步內(nèi)存總線功能的裝置,擴(kuò)展內(nèi)存控制器至少包括執(zhí)行模塊,用于執(zhí)行對(duì)所述擴(kuò)展內(nèi)存中待訪問(wèn)數(shù)據(jù)的讀取操作;數(shù)據(jù)緩沖器,用于暫存所述執(zhí)行模塊從所述擴(kuò)展內(nèi)存中讀取待訪問(wèn)數(shù)據(jù);
[0018]其中執(zhí)行模塊每收到一個(gè)訪問(wèn)所述擴(kuò)展內(nèi)存的請(qǐng)求,優(yōu)先檢查所述數(shù)據(jù)緩沖器中是否保存了需要的數(shù)據(jù),如果有,則在內(nèi)存總線上直接返回所述需要的數(shù)據(jù),否則返回一個(gè)例外標(biāo)記數(shù)據(jù),并訪問(wèn)所述擴(kuò)展內(nèi)存,將獲取到的數(shù)據(jù)存入所述數(shù)據(jù)緩沖器。
[0019]所述的擴(kuò)展同步內(nèi)存總線功能的裝置,還包括片上總線,所述片上總線支持請(qǐng)求亂序返回,請(qǐng)求發(fā)起者的每一個(gè)讀請(qǐng)求都附帶一個(gè)請(qǐng)求標(biāo)記,當(dāng)請(qǐng)求接收方返回?cái)?shù)據(jù)的時(shí)候同時(shí)返回?cái)?shù)據(jù)所屬請(qǐng)求的請(qǐng)求標(biāo)記。
[0020]本發(fā)明還提出一種實(shí)施于本發(fā)明裝置的擴(kuò)展同步內(nèi)存總線功能的方法,包括:
[0021]步驟1,生成內(nèi)存訪問(wèn)請(qǐng)求,并將所述內(nèi)存訪問(wèn)請(qǐng)求發(fā)送給輔助訪存模塊;
[0022]步驟2,根據(jù)所述內(nèi)存訪問(wèn)請(qǐng)求中所包含的地址屬性信息,判斷所述內(nèi)存訪問(wèn)請(qǐng)求為訪問(wèn)系統(tǒng)內(nèi)存或是擴(kuò)展內(nèi)存,若為訪問(wèn)所述系統(tǒng)內(nèi)存,則將所述內(nèi)存訪問(wèn)請(qǐng)求發(fā)送給內(nèi)存控制器,若為訪問(wèn)擴(kuò)展內(nèi)存,則生成目標(biāo)地址為擴(kuò)展內(nèi)存控制器的訪存請(qǐng)求;
[0023]步驟3,擴(kuò)展內(nèi)存控制器接收所述目標(biāo)地址為擴(kuò)展內(nèi)存控制器的訪存請(qǐng)求,并將所述訪問(wèn)請(qǐng)求發(fā)給擴(kuò)展內(nèi)存。
[0024]所述的擴(kuò)展同步內(nèi)存總線功能的方法,所述步驟2還包括根據(jù)所述擴(kuò)展內(nèi)存控制器的返回結(jié)果判斷訪問(wèn)擴(kuò)展內(nèi)存是否結(jié)束,如果所述返回結(jié)果為除例外標(biāo)記數(shù)據(jù)之外的數(shù)據(jù),則將所述返回結(jié)果發(fā)給處理器,否則再生成一條新的目標(biāo)地址為所述擴(kuò)展內(nèi)存控制器的訪存請(qǐng)求。
[0025]所述的擴(kuò)展同步內(nèi)存總線功能的方法,還包括存儲(chǔ)所述處理器執(zhí)行過(guò)程中的運(yùn)算數(shù)據(jù)。
[0026]所述的擴(kuò)展同步內(nèi)存總線功能的方法,還包括:每收到一個(gè)訪問(wèn)所述擴(kuò)展內(nèi)存的請(qǐng)求,優(yōu)先檢查所述數(shù)據(jù)緩沖器中是否保存了需要的數(shù)據(jù),如果有,則在內(nèi)存總線上直接返回所述需要的數(shù)據(jù),否則返回一個(gè)例外標(biāo)記數(shù)據(jù),并訪問(wèn)所述擴(kuò)展內(nèi)存,將獲取到的數(shù)據(jù)存入所述數(shù)據(jù)緩沖器。
[0027]由以上發(fā)明可知,本發(fā)明的優(yōu)點(diǎn)在于:
[0028]輔助訪存模塊是一個(gè)支持標(biāo)準(zhǔn)片上總線的硬件模塊,可以方便的在處理器和內(nèi)存控制器之間插入而無(wú)需修改其他模塊。輔助訪存模塊監(jiān)測(cè)處理器的訪存請(qǐng)求,識(shí)別出屬于訪問(wèn)擴(kuò)展內(nèi)存的請(qǐng)求并代替處理器與內(nèi)存擴(kuò)展芯片交互,運(yùn)行在處理器上的軟件不用修改就可以順利訪問(wèn)擴(kuò)展內(nèi)存而無(wú)需考慮延遲不匹配,帶寬不匹配等問(wèn)題。采用本發(fā)明的方案,即可以應(yīng)用于不同型號(hào)的處理器(只要其提供了標(biāo)準(zhǔn)SDRAM接口,如DDR、DDR2、DDR3、DDR4等),內(nèi)存擴(kuò)展芯片也可以連接不同介質(zhì)的存儲(chǔ)資源,能廣泛用于各種場(chǎng)景下搭建高擴(kuò)展能力的內(nèi)存子