趙陽洋 陳明宇 金 旭 阮 元 張雪琳
(*中國(guó)科學(xué)院計(jì)算技術(shù)研究所計(jì)算機(jī)體系結(jié)構(gòu)國(guó)家重點(diǎn)實(shí)驗(yàn)室 北京 100190) (**中國(guó)科學(xué)院大學(xué) 北京 100049) (***鵬城實(shí)驗(yàn)室 深圳 518055)
計(jì)算機(jī)領(lǐng)域已進(jìn)入以數(shù)據(jù)為中心的大數(shù)據(jù)時(shí)代,大數(shù)據(jù)所催生的內(nèi)存計(jì)算和具有越來越多核心的處理器,對(duì)內(nèi)存的速度、容量、功耗和可靠性等提出了更高的要求。近年來新興非易失性隨機(jī)存儲(chǔ)介質(zhì)(non-volatile memory, NVM) 的訪問性能在逐步逼近動(dòng)態(tài)隨機(jī)訪問存儲(chǔ)器(dynamic random-access memory, DRAM),因此產(chǎn)生了越來越多的基于新型存儲(chǔ)器件和傳統(tǒng)DRAM設(shè)計(jì)新型混合內(nèi)存的研究[1,2],旨在實(shí)現(xiàn)內(nèi)存的擴(kuò)展和加速。
新型內(nèi)存系統(tǒng)需要在總線上接入不同延遲的部件,方便實(shí)現(xiàn)網(wǎng)絡(luò)化或混合存儲(chǔ),為此往往選用異步傳輸總線,每個(gè)事務(wù)的請(qǐng)求階段和響應(yīng)階段是相互獨(dú)立的,以提供更好的靈活性。例如,Intel、AMD和Sun等公司早期曾推出支持全緩沖內(nèi)存(fully buffered DIMM, FBDIMM)[3]的處理器,但因其無法兼容市場(chǎng)上的通用內(nèi)存模塊,因此沒有普及。
在主板芯片組上完成總線事務(wù)轉(zhuǎn)換,可以實(shí)現(xiàn)兼容通用內(nèi)存,目前服務(wù)器市場(chǎng)的很多公司采用了類似的技術(shù)。Intel可擴(kuò)展內(nèi)存緩沖(scalable memory buffer, SMB)應(yīng)用于其高端服務(wù)器系統(tǒng)[4]。IBM公司 Power8處理器的內(nèi)存控制器通過高速串行總線與一個(gè)Centaur緩沖芯片相連[5]。這類板上緩沖提供了良好的內(nèi)存擴(kuò)展能力,但是處理器與板上緩沖芯片之間的總線事務(wù)傳輸還未形成標(biāo)準(zhǔn),一是緩沖芯片與其他廠商的處理器不兼容,二是緩沖芯片之間互相不兼容。
混合內(nèi)存立方體(hybrid memory cube, HMC)[6]是內(nèi)存顆粒廠商Micron 聯(lián)合Intel 提出的一種新型內(nèi)存總線標(biāo)準(zhǔn),處理器與內(nèi)存之間只有異步傳輸總線,內(nèi)存顆粒采用3維堆疊封裝技術(shù)將類似緩沖芯片的邏輯晶粒和存儲(chǔ)晶粒封裝到一個(gè)芯片中。HMC提供了良好的帶寬和功能擴(kuò)展性,并可支持存儲(chǔ)顆粒的級(jí)聯(lián)。但是HMC架構(gòu)下的處理器和內(nèi)存都無法與之前的器件兼容。
綜上,各種新型內(nèi)存系統(tǒng)在異步傳輸事務(wù)時(shí)缺乏統(tǒng)一標(biāo)準(zhǔn),導(dǎo)致兼容性問題。當(dāng)前主流計(jì)算機(jī)系統(tǒng)基本仍采用雙倍速率(double data rate,DDR)總線協(xié)議,為此,產(chǎn)業(yè)界一直在積極探索通過DDR總線實(shí)現(xiàn)新型內(nèi)存系統(tǒng)訪問的方法,異步傳輸DDR有可能在未來幾年被市場(chǎng)所接受。
利用DDR總線訪問閃存(flash) 的產(chǎn)品已經(jīng)面世,Diablo Technologies[7]公司提出了基于DDR3接口訪問閃存的內(nèi)存通道存儲(chǔ)(memory channel storage, MCS) 技術(shù),這套技術(shù)被JEDEC 組織采納為NVDIMM-F標(biāo)準(zhǔn)[8]。但MCS訪問閃存依然是按照存儲(chǔ)資源的方式讀寫,只是利用DDR 總線傳輸數(shù)據(jù),還不能被處理器識(shí)別為內(nèi)存。UniMA[9]通過一個(gè)修改的DDR總線擴(kuò)展內(nèi)存容量,支持不同延遲的存儲(chǔ)介質(zhì)如相變存儲(chǔ)器(phase change memory, PCM) 等。該方案雖然基于DDR總線,但修改了協(xié)議,內(nèi)存控制器需要相應(yīng)做修改。
Intel一種新的內(nèi)存模組(Apache Pass) 通過DDR4物理兼容的總線與處理器相連[10]。DDR4物理兼容總線DDR-T修改了一組不用的使能、片選信號(hào)方向,變成由緩沖端驅(qū)動(dòng)才實(shí)現(xiàn)異步傳輸請(qǐng)求。Samsung也與Netlist聯(lián)合推出了NVDIMM-P[11],以兼容DDR4的方式實(shí)現(xiàn)高性能閃存訪問。
上述研究都不可避免地對(duì)現(xiàn)有DDR協(xié)議做了修改,難以直接應(yīng)用到當(dāng)前主流計(jì)算機(jī)系統(tǒng)中。本文提出了一種在現(xiàn)有的標(biāo)準(zhǔn)DDRx協(xié)議上實(shí)現(xiàn)異步傳輸事務(wù)的方案,解決新型內(nèi)存系統(tǒng)的兼容性問題,并進(jìn)行了流片驗(yàn)證。
根據(jù)上一節(jié)分析,本文的主要目標(biāo)是在不修改現(xiàn)有的DDR時(shí)序協(xié)議基礎(chǔ)上,實(shí)現(xiàn)基于DDR總線的異步數(shù)據(jù)傳輸,以使當(dāng)前主流處理器可以通過標(biāo)準(zhǔn)DDR總線接口,連接支持可變延遲訪問的新型內(nèi)存系統(tǒng)。內(nèi)存擴(kuò)展芯片的外部連接和內(nèi)部主要功能模塊如圖1 所示。
圖1 系統(tǒng)整體架構(gòu)
其中,處理器通過標(biāo)準(zhǔn)DDR總線接口與內(nèi)存擴(kuò)展芯片連接。DDR從設(shè)備接收來自主機(jī)的訪存命令,經(jīng)過芯片內(nèi)部的事務(wù)處理緩沖模塊后,由片上集成的內(nèi)存控制器訪問新型內(nèi)存。
從圖1 中可以看到,處理器的從設(shè)備不再是標(biāo)準(zhǔn)內(nèi)存顆粒,而是自定制的內(nèi)存擴(kuò)展芯片,其訪問新型內(nèi)存的請(qǐng)求延遲不是固定的。為滿足DDR協(xié)議的時(shí)序要求,即在等待一個(gè)固定的延遲(如讀命令該延遲為tCL)之后及時(shí)返回請(qǐng)求信息,在內(nèi)存擴(kuò)展芯片中設(shè)計(jì)了DDR從設(shè)備模塊。該模塊嚴(yán)格滿足DDR協(xié)議讀寫時(shí)序要求[12]。
另外,處理器在開機(jī)后,首先會(huì)進(jìn)入基本輸入輸出系統(tǒng)(basic input output system, BIOS)。BIOS會(huì)按照DDR協(xié)議完成內(nèi)存的初始化,執(zhí)行一些標(biāo)準(zhǔn)讀寫操作,訓(xùn)練好DDR總線,確??梢愿鶕?jù)DDR總線上DQS信號(hào)采樣到準(zhǔn)確的數(shù)據(jù)(DQ)。在內(nèi)存初始化階段,DDR從設(shè)備模塊負(fù)責(zé)處理讀寫命令,使內(nèi)存擴(kuò)展芯片通過讀寫訓(xùn)練過程,為此在芯片上增加1個(gè)8 kB大小的片上隨機(jī)存儲(chǔ)器(random access memory, RAM),在初始化完成后,該片上RAM又可用于存儲(chǔ)配置或調(diào)試信號(hào)。對(duì)處理器來講,訪問內(nèi)存擴(kuò)展芯片和訪問標(biāo)準(zhǔn)內(nèi)存顆粒的時(shí)序是一樣的。
但是DDR從設(shè)備模塊返回?cái)?shù)據(jù)僅能保證滿足DDR總線的時(shí)序要求,卻無法保證數(shù)據(jù)的正確性。例如,在讀新型內(nèi)存或者調(diào)用內(nèi)存擴(kuò)展功能時(shí),獲取到讀請(qǐng)求數(shù)據(jù)的延遲通常會(huì)超過tCL這一DDR總線讀延遲要求,即DDR從設(shè)備按時(shí)序要求返回的讀數(shù)據(jù)是自定義的無效數(shù)據(jù)。
為保證數(shù)據(jù)正確性,采用twin-load (2次訪存)的方法[13]。2次訪存是處理器端用一個(gè)完整的DDR命令作為訪問請(qǐng)求的請(qǐng)求階段,然后根據(jù)請(qǐng)求類型等待合適的時(shí)間,再用一個(gè)DDR命令作為訪問請(qǐng)求的響應(yīng)階段。2個(gè)DDR命令配對(duì)實(shí)現(xiàn)異步傳輸事務(wù)。在處理器端,僅需要對(duì)發(fā)送訪問請(qǐng)求的軟件做修改,產(chǎn)生可以獲取正確數(shù)據(jù)的DDR讀寫命令序列。
為支持2次訪存方法,內(nèi)存擴(kuò)展芯片在事務(wù)處理緩沖模塊中,分別為讀事務(wù)和寫事務(wù)定制專屬的狀態(tài)機(jī),以響應(yīng)DDR訪存命令序列中不同階段的命令,且負(fù)責(zé)產(chǎn)生與各階段匹配的訪存命令發(fā)送給內(nèi)存控制器。
異步傳輸事務(wù)由不同的DDR命令序列組合而成,處理時(shí)不能只看當(dāng)前命令信息,必須考慮其上下文。而且,同一命令序列中,各訪存請(qǐng)求并沒有固定的延遲,內(nèi)存擴(kuò)展芯片無法預(yù)測(cè)下一條命令會(huì)在何時(shí)到達(dá)。
為保證數(shù)據(jù)正確性,需要為每一個(gè)處理中的事務(wù)建立一條記錄,維護(hù)其狀態(tài)和處理時(shí)占用的資源。針對(duì)未完成的請(qǐng)求,事務(wù)處理緩沖模塊維護(hù)一個(gè)事務(wù)信息表(transaction info table, TIT),TIT記錄了每一個(gè)訪存命令的狀態(tài),根據(jù)其對(duì)應(yīng)表項(xiàng),確定每個(gè)DDR命令的返回?cái)?shù)據(jù)。
傳統(tǒng)內(nèi)存一直被DDR協(xié)議的讀寫時(shí)序限定成一種簡(jiǎn)單、被動(dòng)的裝置,缺乏有效的擴(kuò)充功能的手段。如上節(jié)所述,應(yīng)用2次訪存的方法后,處理器將單一的讀寫請(qǐng)求拆分為異步傳輸?shù)腄DR讀寫命令序列,內(nèi)存擴(kuò)展芯片按照每一條事務(wù)記錄的狀態(tài),響應(yīng)訪存請(qǐng)求。該方法同樣適用于實(shí)現(xiàn)復(fù)雜訪存指令。為了區(qū)別于常規(guī)的讀寫請(qǐng)求,處理器可以為每一種類別的復(fù)雜訪存指令設(shè)定特殊的訪存地址,則內(nèi)存擴(kuò)展芯片根據(jù)訪存地址即可判斷復(fù)雜訪存指令類別,并啟動(dòng)相應(yīng)的狀態(tài)機(jī)響應(yīng)請(qǐng)求。
為實(shí)現(xiàn)訪存指令的擴(kuò)展,內(nèi)存擴(kuò)展芯片還需要完成復(fù)雜訪存指令的解析和處理。為此,在事務(wù)處理緩沖模塊中設(shè)置了一個(gè)簡(jiǎn)單的可編程事務(wù)處理單元(transaction processing unit, TPU),用以解析和處理復(fù)雜訪存指令[14]。
TPU將一條復(fù)雜指令看作一個(gè)需完整執(zhí)行的事務(wù),也就是在當(dāng)前事務(wù)完成前不接收其他指令。這樣設(shè)計(jì)的好處是,事務(wù)處理單元一旦啟動(dòng)一條復(fù)雜指令的處理,就可以按照一個(gè)預(yù)先設(shè)定好的流程進(jìn)行,期間無需考慮其他訪存請(qǐng)求的干擾,功能簡(jiǎn)單,易于硬件實(shí)現(xiàn)。若要支持同時(shí)處理多條復(fù)雜指令,只需支持事務(wù)級(jí)的并行,即硬件實(shí)例化多個(gè)事務(wù)處理單元,簡(jiǎn)單方便。
目前實(shí)現(xiàn)的版本中,內(nèi)存擴(kuò)展芯片支持的復(fù)雜訪存指令,包括內(nèi)存拷貝(memcpy)、預(yù)取讀(prefetch)、沖刷寫(flush)、分散聚集讀寫(scatter-gather)、清除(clear)、原子加(atom-add)、測(cè)試并置位(test & set)、比較并交換(compare & swap)。
上述復(fù)雜訪存操作在主流計(jì)算機(jī)系統(tǒng)中經(jīng)常使用,往往由處理器維護(hù)一個(gè)訪存指令序列,序列中每一條指令的處理都要處理器讀源數(shù)據(jù)或?qū)懭肽康臄?shù)據(jù),數(shù)據(jù)經(jīng)由復(fù)雜存儲(chǔ)層次進(jìn)出處理器。但在內(nèi)存擴(kuò)展芯片中增加TPU后,處理器僅需將復(fù)雜訪存指令處理所需的信息,用一個(gè)DDR寫命令寫入特殊的訪存地址,然后在一段時(shí)間之后,用一個(gè)DDR讀命令獲取該地址的響應(yīng)信息即可。對(duì)指令序列的解析和處理,全部交由TPU完成,避免處理器大量讀寫動(dòng)作,從而提高帶寬利用率,降低數(shù)據(jù)進(jìn)出處理器的功耗。
內(nèi)存擴(kuò)展芯片基于DDR總線實(shí)現(xiàn)了異步傳輸訪存請(qǐng)求,支持新型內(nèi)存可變的訪問延遲,其代價(jià)是增加了單條訪存指令的訪問延遲。但是當(dāng)訪存指令序列批量傳輸時(shí),仍有可能通過優(yōu)化訪存請(qǐng)求序列,或應(yīng)用預(yù)取、分散聚集讀寫等復(fù)雜訪存指令,實(shí)現(xiàn)批量訪存請(qǐng)求的加速。
為此,在事務(wù)處理緩沖模塊中,增加了命令調(diào)度模塊,以調(diào)度所有訪存請(qǐng)求并轉(zhuǎn)發(fā)給內(nèi)存控制器。同時(shí),增加了一個(gè)以64字節(jié)為單位的內(nèi)部RAM作為行緩存(讀寫位寬是標(biāo)準(zhǔn)的DDR突發(fā)長(zhǎng)度),以存儲(chǔ)從內(nèi)存中讀入的數(shù)據(jù),加速處理器端的訪問請(qǐng)求。
本文基于DDR3 SDRAM標(biāo)準(zhǔn)內(nèi)存接口,設(shè)計(jì)內(nèi)存擴(kuò)展芯片,命名為Memory Extension Chip,可用于內(nèi)存加速和內(nèi)存擴(kuò)展。芯片內(nèi)部結(jié)構(gòu)如圖2 所示,其中DDR從設(shè)備部分按照DDR協(xié)議讀寫時(shí)序響應(yīng)訪存請(qǐng)求,事務(wù)處理緩沖部分實(shí)現(xiàn)讀寫事務(wù)異步傳輸以及復(fù)雜訪存指令擴(kuò)展。
圖2 內(nèi)存擴(kuò)展芯片內(nèi)部結(jié)構(gòu)圖
內(nèi)存擴(kuò)展芯片除上述功能模塊外,為方便測(cè)試和調(diào)試,片內(nèi)集成了一個(gè)單發(fā)射32位結(jié)構(gòu)的GS132處理器核,一個(gè)反向DDR3的PHY(物理層)控制器,一個(gè)SPI(串行外設(shè)接口)控制器,一個(gè)UART(串口)控制器。另外,還包含一個(gè)用于控制測(cè)試信號(hào)的寄存器測(cè)試模塊。
整個(gè)芯片工作流程如下,芯片接收DDR3命令及數(shù)據(jù),然后經(jīng)過緩沖,發(fā)送相應(yīng)的訪存命令及數(shù)據(jù)到標(biāo)準(zhǔn)內(nèi)存條;從標(biāo)準(zhǔn)內(nèi)存條返回的數(shù)據(jù)存放在緩沖中,下次DDR訪問命令到達(dá)后直接返回結(jié)果。該過程中內(nèi)存擴(kuò)展芯片可以進(jìn)行重發(fā)送操作,從而實(shí)現(xiàn)內(nèi)存加速功能。
基于DDR3 SDRAM標(biāo)準(zhǔn)接口的內(nèi)存擴(kuò)展芯片,采用中芯國(guó)際40 nm工藝,經(jīng)流片得到芯片基本信息如表1 所示。芯片正常工作表面溫度區(qū)間為-40~85 ℃。
表1 內(nèi)存擴(kuò)展芯片基本信息
內(nèi)存擴(kuò)展芯片板卡如圖3 所示。其底部可以直接插入標(biāo)準(zhǔn)內(nèi)存插槽,頂部可連接標(biāo)準(zhǔn)內(nèi)存條。中間方框部分為內(nèi)存擴(kuò)展芯片。
圖3 內(nèi)存擴(kuò)展芯片板卡
本文主要驗(yàn)證DDR從設(shè)備和事務(wù)處理緩沖兩部分的功能,因此當(dāng)前芯片版本未選用新型NVM內(nèi)存。如果要連接新型內(nèi)存,只要適配專門的控制器和總線接口即可。
芯片測(cè)試在龍芯3A2000主板進(jìn)行,主頻950 MHz,測(cè)試平臺(tái)如圖4 所示,共占用2個(gè)內(nèi)存通道(memory channel,MC),MC1槽和MC0槽都是靠近風(fēng)扇的通道。其中MC1槽插入標(biāo)準(zhǔn)2 GB內(nèi)存條,用于啟動(dòng)操作系統(tǒng);MC0槽插入內(nèi)存擴(kuò)展芯片子卡,有4 GB尋址空間,子卡上又插了4 GB標(biāo)準(zhǔn)內(nèi)存條,作為2次訪存操作的實(shí)際內(nèi)存。過程監(jiān)控裝置(Process Monitor, PMON) 為閃存芯片,存儲(chǔ)3A2000開機(jī)啟動(dòng)時(shí)的BIOS源碼。
圖4 龍芯3A2000測(cè)試平臺(tái)
測(cè)試結(jié)果表明,在DDR3-1066頻率下,內(nèi)存擴(kuò)展芯片的全部邏輯模塊功能正確,運(yùn)行穩(wěn)定。性能評(píng)估結(jié)果如表2~表5所示。
表2列出了內(nèi)存擴(kuò)展芯片單次訪存請(qǐng)求獲取正確數(shù)據(jù)的延遲。在大量(大于5 000次)隨機(jī)讀請(qǐng)求測(cè)試下,單個(gè)讀請(qǐng)求的平均延遲時(shí)間約為400 ns。在大量連續(xù)地址訪存時(shí),單個(gè)讀請(qǐng)求的平均延遲時(shí)間小于100 ns。在2次訪存機(jī)制下,單個(gè)讀請(qǐng)求需連續(xù)讀取同一地址,而內(nèi)存控制器處理相同地址的連續(xù)讀間隔要遠(yuǎn)大于不同地址的連續(xù)讀間隔。因此,讀請(qǐng)求并行執(zhí)行可以降低平均延遲。經(jīng)測(cè)試,當(dāng)并行度為4時(shí),單個(gè)讀請(qǐng)求的平均延遲為300 ns。
因2次訪存機(jī)制,內(nèi)存擴(kuò)展芯片單個(gè)讀請(qǐng)求的平均延遲大于標(biāo)準(zhǔn)DDR3 SDRAM讀延遲。但相比PCIe接口約800 ns的延遲,內(nèi)存擴(kuò)展芯片約300 ns的讀延遲仍有優(yōu)勢(shì)。
表2 單個(gè)讀請(qǐng)求平均延遲
Random Access是高性能計(jì)算挑戰(zhàn)基準(zhǔn)(HPC challenge benchmark, HPCC) 中用于評(píng)測(cè)內(nèi)存隨機(jī)訪問性能的程序。它測(cè)量了計(jì)算機(jī)對(duì)隨機(jī)生成的內(nèi)存地址每秒可以進(jìn)行多少次更新操作。測(cè)試數(shù)據(jù)量為1 GB,測(cè)試結(jié)果單位為每秒千兆更新(Giga-uPdates per second, GUPS)。內(nèi)存系統(tǒng)在訪存請(qǐng)求序列為大量隨機(jī)讀寫時(shí),性能最差。因?yàn)獒槍?duì)大量訪存序列的優(yōu)化調(diào)度基本失效,而應(yīng)用2次訪存(twin-load)方法又會(huì)造成額外訪存開銷,導(dǎo)致性能下降。在測(cè)試時(shí),軟件將標(biāo)準(zhǔn)測(cè)試程序中對(duì)目標(biāo)數(shù)據(jù)元素的讀寫操作改為twin-load 2次訪存方式。如表3 所示,加入內(nèi)存擴(kuò)展芯片后,隨機(jī)訪問性能僅能達(dá)到原系統(tǒng)的17%。但考慮到新型NVM內(nèi)存系統(tǒng)的讀延遲大約是DRAM的3~4倍,寫延遲更是大了一個(gè)數(shù)量級(jí),因此內(nèi)存擴(kuò)展芯片如果用于NVM擴(kuò)展,即便在其性能最差的場(chǎng)景下,仍然不會(huì)成為系統(tǒng)的性能瓶頸。
表3 Random Access性能測(cè)試
應(yīng)用復(fù)雜訪存指令會(huì)提升訪存性能。在芯片設(shè)計(jì)中,scatter-gather一次讀操作可以讀出8個(gè)隨機(jī)64字節(jié)的數(shù)據(jù)。雖然在建立TIT(1次訪存)、配置TPU(1次訪存)和讀回?cái)?shù)據(jù)(2次訪存)階段增加了訪存操作,但理論上仍然會(huì)有性能提升。為此,進(jìn)行了數(shù)據(jù)量為1 GB的隨機(jī)讀測(cè)試,比較scatter-gather讀和使用本地內(nèi)存讀數(shù)據(jù)的效率,結(jié)果如表4所示,時(shí)間單位是時(shí)鐘周期數(shù)(T),加入內(nèi)存擴(kuò)展芯片后,scatter-gather隨機(jī)訪問性能為原系統(tǒng)的2.32倍。
表4 Scatter-gather性能測(cè)試
復(fù)雜訪存指令在內(nèi)存擴(kuò)展芯片上獨(dú)立執(zhí)行,有可能避免CPU大量數(shù)據(jù)的讀寫動(dòng)作,從而提高帶寬的利用率。為此,進(jìn)行了內(nèi)存拷貝(memcpy)帶寬測(cè)試,其功能為從源地址的起始位置開始,拷貝若干字節(jié)到目標(biāo)地址中。結(jié)果如表5 所示,其中,基準(zhǔn)(baseline)為處理器運(yùn)行函數(shù)memcpy()訪問本地內(nèi)存;過芯片內(nèi)存拷貝(Chip_memcpy)為加入內(nèi)存擴(kuò)展芯片后,處理器向芯片發(fā)送內(nèi)存拷貝復(fù)雜指令訪問內(nèi)存,數(shù)據(jù)不經(jīng)過CPU和高速緩存。在基準(zhǔn)情況下,分別測(cè)試了8 kB、128 kB、1 MB、4 MB、32 MB、256 MB等多種數(shù)據(jù)量的帶寬,隨數(shù)據(jù)量增加,帶寬會(huì)有所下降,達(dá)到32 MB數(shù)據(jù)量以后,帶寬趨于穩(wěn)定。這是高速緩沖(cache)容量有限導(dǎo)致的。而在過芯片內(nèi)存拷貝時(shí),帶寬基本不受數(shù)據(jù)量影響。表5中基準(zhǔn)選擇穩(wěn)定帶寬測(cè)試結(jié)果,過芯片內(nèi)存拷貝選擇4MB帶寬測(cè)試結(jié)果,可見利用芯片加速內(nèi)存拷貝可以將性能提升67%。
表5 Memcpy性能測(cè)試
本文基于現(xiàn)有的DDR協(xié)議,設(shè)計(jì)實(shí)現(xiàn)了內(nèi)存擴(kuò)展芯片,在滿足DDR總線標(biāo)準(zhǔn)時(shí)序要求的同時(shí),支持可變延遲的擴(kuò)展內(nèi)存訪問,支持訪存加速指令的擴(kuò)展,實(shí)現(xiàn)了為內(nèi)存端增加智能性,可用于內(nèi)存加速和內(nèi)存擴(kuò)展。經(jīng)過測(cè)試驗(yàn)證,該芯片邏輯功能正確,運(yùn)行穩(wěn)定。在DDR3-1066頻率下,該芯片可滿足標(biāo)準(zhǔn)DDR3 SDRAM讀寫時(shí)序,并在龍芯3A系列主板上順利啟動(dòng)Linux內(nèi)核。其性能評(píng)估結(jié)果為,單次訪存請(qǐng)求獲取正確數(shù)據(jù)的平均延遲約為300 ns。增加內(nèi)存擴(kuò)展芯片后,隨機(jī)訪問性能可達(dá)到原系統(tǒng)的17%。在應(yīng)用復(fù)雜指令訪存后,隨機(jī)訪問性能則可達(dá)原系統(tǒng)的2.32倍。與系統(tǒng)函數(shù)實(shí)現(xiàn)軟件內(nèi)存拷貝相比,內(nèi)存擴(kuò)展芯片獨(dú)立執(zhí)行內(nèi)存拷貝,帶寬可達(dá)其1.67倍。
內(nèi)存擴(kuò)展芯片主要面向數(shù)據(jù)中心領(lǐng)域應(yīng)用,板卡通過連接標(biāo)準(zhǔn)內(nèi)存插槽,可以方便地接入系統(tǒng)。未來的工作可以修改更多應(yīng)用程序,將讀寫事務(wù)分解為內(nèi)存擴(kuò)展芯片可以識(shí)別的復(fù)雜訪存序列,以使用內(nèi)存擴(kuò)展芯片的加速功能;進(jìn)一步擴(kuò)展復(fù)雜訪存指令,以提升內(nèi)存智能性;適配新的控制器和總線接口,以連接新型內(nèi)存。