陳益
【摘 要】主存和CPU之間的速度差距導致了CPU執(zhí)行效率的降低。對主存進行結構優(yōu)化、采用高效性能存儲芯片、增加存儲器帶寬及構建多層次存儲結構在改善二者速度差距上都有積極的作用。相比而言,以單體多字和多體并行的方法對主存結構進行優(yōu)化,能用更小的成本獲得更理想的效果,尤其是多體并行系統(tǒng)的低位交叉方式,對縮小主存和CPU之間速度差距有積極作用。對比得知,從結構上對主存進行調整,可以在一定程度上縮小主存與CPU之間的速度差距。
【關鍵詞】存儲芯片;帶寬;主存結構優(yōu)化;單體多字;多體并行
【中圖分類號】G642 【文獻標識碼】A 【文章編號】1674-0688(2022)04-0035-03
0 引言
隨著半導體技術和集成電路技術的發(fā)展,精簡指令芯片(RISC)技術的應用,主存(或存儲器)運行速度和CPU運行速度的差異日趨增大,造成了計算機主機系統(tǒng)的不均衡發(fā)展[1]。采用高性能的存儲芯片,能讓速度更快、帶寬更大、訪問延遲更小,但對高速器件性能的挖掘存在達到物理極限的問題;主存-Cache結構,在主存和CPU之間放一個小容量的Cache,將CPU常用的信息放在Cache中,整機的速度能得到很大的提高,但Cache的集成度低、功耗大、價格高、容量小,增加了Cache的容量,這必然增大了硬件成本開銷[2]。這些方法對提高訪存速度有一定的作用,但都有各自的局限[3]。本文以調整主存自身結構為研究對象,通過對主存結構優(yōu)化,提高訪存速度。
1 單體多字系統(tǒng)
現(xiàn)代計算機結構中,最影響機器效率和速度的就是主存。CPU執(zhí)行程序時所需的指令、數(shù)據(jù)均來自主存,運行的結果保存到主存,如主存運行速度很慢,CPU無論運行速度多快都無法提高整機速度。CPU得不到所需要的指令和數(shù)據(jù),只能空等,這種現(xiàn)象在計算機系統(tǒng)結構中稱為“主存墻”,主存墻是影響計算機系統(tǒng)性能的主要因素之一。通過對主存的結構進行優(yōu)化可在一定程度上緩解主存墻現(xiàn)象。
CPU執(zhí)行一條指令,至少要完成取指令和執(zhí)行指令兩個步驟。假設主機的存儲字長、機器字長、指令字長3者相等,取指令時在存儲器中只能取出一條指令;執(zhí)行指令時在存儲器中取數(shù)據(jù),一次也只能取出和機器字長等長的數(shù)據(jù)。此時,存儲器和CPU速度存在的差異,可以通過單體多字系統(tǒng)調整主存結構的方式得以調整。
單體多字的核心是在單個存儲體中增加存儲器的存儲字長。假如CPU的機器字長是16位,存儲器的存儲字長設成64位,CPU每次訪問存儲器,可以訪問4個機器字,每個機器字都是一條機器指令或長度為16位的數(shù)據(jù),CPU一次性把4個值從主存中取出放在數(shù)據(jù)寄存器(MDR)中,下一次直接從MDR中把需要的指令或數(shù)據(jù)取走,這個方法可以增加存儲器的帶寬[4]。
單體多字方式每一個存儲單元包括4個機器字,但是4個機器字存取時是以整體的方式進行的,因此存在一些問題:其一,CPU向存儲器的某存儲單元寫長度為16位的字,它先將字寫入單字長寄存器中,再寫入4個字長的MDR中,最后寫入存儲器中。對16位數(shù)據(jù)寫入的操作,會導致其他48位也被寫入給定的存儲單元中,并且這48位被修改的還可能是錯誤的信息。如果要讓這樣的存儲器完成16位單字長的寫入,需要在存儲器的內(nèi)部增加專門的硬件,使存儲器結構更加復雜。其二,如果要取的指令或數(shù)據(jù)不是連續(xù)存放在相鄰的地址中,或不是連續(xù)存放在一個存儲字中,用戶一次性取出了4條指令,執(zhí)行完第1條指令后,由(PC)+1的下一條指令,即第2條指令若是跳轉指令且跳轉的范圍大大超出了4個儲存字,那么所取的4條指令僅第1條有用,其他3條均無用,浪費了資源。基于以上分析,需要對單體多字方式做相應的改進。
2 多體并行系統(tǒng)
多體并行的基本思想是在不提高存儲器效率、不擴展數(shù)據(jù)通路位數(shù)的前提下,通過對存儲芯片的組織布局,提高CPU單位時間內(nèi)訪問的數(shù)據(jù)量,以此緩解CPU與主存之間的速度差異問題。多體并行是一種采用多體模塊組成的存儲器系統(tǒng),分為高位交叉和低位交叉兩種方式。以下對兩種交叉方式的介紹,均以4個存儲體為例,編號從M0~M3。
2.1 高位交叉方式
所謂高位交叉,是指給存儲體構成的存儲器編址時,從M0存儲體開始,依次為M0中每個存儲單元編址,直到最后一個存儲單元為止,然后以同樣的方式為存儲體M1、M2、M3編址,直到為存儲體M3的最后一個存儲單元編址完為止(也稱為“順序交叉”)。
2.1.1 高位交叉執(zhí)行過程
分析4個存儲體的執(zhí)行過程,假定M0~M3的每個存儲體包括16個存儲單元,地址分配空間為00 0000-11 1111,前面的兩位00-11,這是存儲體的編號,選中M0~M3中的任意一個存儲體,后面的4位0000-1111是體內(nèi)地址,經(jīng)地址譯碼后選中0~15號的任意一個存儲單元。CPU給出一個地址,地址的前兩位作為存儲體的體號,完成對存儲體的尋址,選中M0~M3的任意一個存儲體;后4位是體內(nèi)地址,經(jīng)地址譯碼后選定體內(nèi)的某一個存儲單元。如果CPU給出的6位地址中前2位是00,即選中存儲體M0,對后4位譯碼得到存儲體M0內(nèi)部的一個具體存儲單元。假如每一個存儲體都有自己的控制電路(MAR、MDR、地址譯碼器等),能夠對讀寫信號進行鎖存,4個存儲體就可以并行工作。
此方法將多個存儲體進行了獨立,并且每個存儲體都有自己獨立的控制電路用于完成各種操作,4個存儲體有并行工作的基礎。執(zhí)行過程如圖1所示[5]。
2.1.2 高位交叉應用分析
在4個存儲體的高位交叉方式中,高2位選中存儲體,低4位作為體內(nèi)地址尋找指定存儲單元的過程,其實質是對存儲器容量進行擴展,尤其是對地址范圍(字)的擴展。高位交叉的方式雖然具備了并行工作的基礎,但是對程序或數(shù)據(jù)存取的特征分析不難發(fā)現(xiàn),存在各個存儲體工作強度不一致的狀況。程序在計算機中是按順序存儲的,用戶使用一個程序,如果第1條指令存放在M0的第0號存儲單元,下一條指令存在第1號存儲單元……第16條指令存在第15號存儲單元,指令按序執(zhí)行,執(zhí)行程序的過程中,M0這個存儲體不停地被CPU訪問,工作繁忙,其他的3個存儲體是空閑的。
高位交叉執(zhí)行過程出現(xiàn)了并行的雛形,但以程序或數(shù)據(jù)組織的特征進行分析,相鄰地址的數(shù)據(jù)處于同一存儲體、一個地址寄存器,多模塊串行(局部性原理)性能無提升,但為擴充容量提供了方便。此方式容易造成某個存儲體頻繁地被CPU訪問,其他的存儲體卻是空閑的,因此必須想辦法解決高位交叉中存在的問題。
2.2 低位交叉方式
高位交叉方式是對一個存儲體進行編址完后,再對另一個存儲體進行編址,屬于縱向編址方式,存在的問題是每個存儲體的工作不均等?,F(xiàn)在改變編碼方式,進行橫向編址。
2.2.1 低位交叉地址編址
以存儲體M0~M3為例,M0的首址是0000 00,M1的首址是0000 01,M2的首址是0000 10,M3的首址是0000 11,按照這種順序給每個存儲體的每個存儲單元進行編址。地址特征后2位對M0來說是00,M1是01,M2是10,M3是11,用來選中某個存儲體,前4位是存儲體的體內(nèi)地址,經(jīng)譯碼后選擇具體的存儲單元。CPU任意給出一個地址,分為低2位的體號地址和高4位的體內(nèi)地址2個部分。低位地址譯碼后選定存儲體,高位地址譯碼后選定存儲體內(nèi)的某個存儲單元。如果4個存儲體完全獨立,獨立地讀寫控制電路,能進行地址、數(shù)據(jù)、控制信號的鎖存,能并行工作,采用輪流的方式對每個存儲體編址。這便是低位交叉方式的編址全過程[6]。
2.2.2 低位交叉執(zhí)行過程
低位交叉執(zhí)行一個程序的過程為代碼在存儲體中按照地址進行順序存儲,第1條指令存放在M0的第一個存儲單元,第2條存放在M1的第一個存儲單元,第3條存放在M2的第一個存儲單元,第4條存放在M3的第一個存儲單元,第5條存放在M0的第二個存儲單元,以此類推直到最后一條存放在M3的最后一個存儲單元為止。CPU在取指令時,在一個訪存周期的開始給出訪問的地址,包括體號和體內(nèi)地址,這個信號假如訪問的是M0,它將內(nèi)部地址和讀寫命令進行鎖存,然后完成讀操作,之后CPU在同一個主存周期中再次傳輸?shù)刂贰⒖刂泼罱oM1,輪流對M0~M3進行訪問,如果M0準備好數(shù)據(jù),在一個存取周期要結束的時候向CPU進行數(shù)據(jù)傳送。低位交叉方式從總線通信控制角度看,屬于分離式方式,提高了主存的帶寬。低位交叉編址的多體存儲器如圖2所示。
低位交叉方式數(shù)據(jù)組織特點:相鄰地址處于不同存儲體中,每個存儲體均需地址寄存器多模塊并行(局部性原理),性能得以提升,也能方便地擴充容量。
2.2.3 低位交叉特點及應用
低位交叉方式的優(yōu)點是可以在不改變存取周期的前提下,增加存儲器的帶寬。在單體訪問周期中,將一個訪問周期分為4段,第1段啟動M0,對M0讀寫操作,之后在第2個時間啟動M1,對M1存取操作,在第3個時間啟動M2,在第4個時間啟動M3,相當于用流水的方式訪問不同的存儲體,在一個存取周期內(nèi)訪問了4個存儲字(如圖3所示)。
假設四體低位交叉的存儲器存取周期為T,地址、數(shù)據(jù)、控制信號在總線上進行傳輸,總線的傳輸周期為τ,為實現(xiàn)流水方式的存取,應滿足T=4。實際上是把一個完整的訪問時間分成4段,每一段的長度正好是總線的傳輸周期(如圖4所示)。
在T時間啟動對M0的存取操作,經(jīng)過一段時間后(1/4T),啟動對M1的存取操作,再經(jīng)過后啟動對M2的存取操作。一個存取周期結束,M0會給出存或取的一個結果完成存取操作,再經(jīng)過一段時間后,M1也會完成存取操作,直到M3為止。如果用戶需要連續(xù)讀取4個存儲字需要的時間計算過程為第1個字需要T時間,第1個字結束后,每經(jīng)過一個總線傳輸周期會完成一個訪問(讀取)操作[7]。
以上為單體多字、多體并行方式提高存儲器速度的處理過程。多體并行中的高位交叉更像是對存儲器容量進行擴展,低位交叉是真正實現(xiàn)了存儲器帶寬或訪問速度的提高。
3 高性能存儲芯片
為進一步提高主存的性能,增強主存結構功能,可以采用高性能的存儲芯片。同步動態(tài)隨機存取內(nèi)存(Synchro-
nous Dynamic Random-access Memory,SDRAM)就是一種高性能的存儲芯片,SDRAM采用同步DRAM方式通信,要求存儲器和CPU之間在給定的時間點必須開始或完成給定的操作,存儲器的速度可以和CPU的速度保持一致,CPU不需要等待,SDRAM要求存儲器的速度非常快[8]。SDRAM在計算機中被廣泛使用,從起初的SDRAM到后來的DDR1,接著DDR2和DDR3進入市場,2015年DDR4開始進入市場。
CDRAM是帶Cache的DRAM。工作過程為CPU給出要訪問存儲器的地址,存儲器先把地址和上一次訪問的行地址進行比較,若相等,說明這行已經(jīng)被寫入Cache中,用列選信號直接輸入Cache里面選中指定的存儲單元。若不相等,將這行寫入Cache中,以備下一次使用。CDRAM中的第一個數(shù)據(jù)是從主存開始的,速度較慢,在從主存中讀取第一個數(shù)據(jù)時,根據(jù)程序訪問的局部性原理,會將第一個數(shù)據(jù)連同它所在的數(shù)據(jù)塊一起送入緩沖存儲器Cache中,方便CPU下次直接從Cache讀取想要的數(shù)據(jù),后續(xù)數(shù)據(jù)的讀取速度非??臁?/p>
RDRAM主要解決存儲器帶寬問題。RDRAM的數(shù)據(jù)存儲是16位,遠低于DDR和SDRAM的64位,但在頻率方面遠遠高于二者,可以達到400 MHz或更高。RDRAM在一個時鐘周期內(nèi)傳輸兩次數(shù)據(jù),能夠在時鐘的上升期和下降期各傳輸一次數(shù)據(jù),主存帶寬能達到1.6 GBps。
4 結束語
本文以尋找縮小主存和CPU速度差距的方法為訖點,重點以調整主存結構的方式為依托,對單體多字系統(tǒng)、多體并行系統(tǒng)和高性能存儲芯片3種方式進行分析,研究發(fā)現(xiàn),多體并行系統(tǒng)中的低位交叉方式是最能有效縮小存儲器和CPU速度差異,提高存儲器帶寬,使計算機主機系統(tǒng)均衡發(fā)展的方法。
參 考 文 獻
[1]邱賜云,李禮,張歡,等.大數(shù)據(jù)時代——從馮·諾依曼到計算存儲融合[J].計算機科學,2018(11):71-75.
[2]胡森森,計衛(wèi)星,王一拙,等.片上多核處理器Cache一致性協(xié)議優(yōu)化研究綜述[J].軟件學報,2017,28(4):1027-1047.
[3]邵雄凱,葉志偉,歐陽勇,等.基于系統(tǒng)能力培養(yǎng)的計算機組成原理課程教學探討[J].計算機教育,2018(11):140-144.
[4]唐朔飛.計算機組成原理[M].3版.北京:高等教育出版社,2021:6.
[5]袁春風,張澤生,楊若瑜,等.“計算機組成與系統(tǒng)結構”課程建設思路與教學實踐[J].計算機教育,2012(2):62-66.
[6]譚志虎,胡迪青,秦磊華.計算機組成原理課程設計的改革[J].電氣電子教學學報,2016(6):110-112.
[7]聶小龍.DDR3 SDRAM控制器與PHY的設計與仿真[D].濟南:山東大學,2017.
[8]石曉敬,呂小萍,郭文秀.基于計算思維的計算機網(wǎng)絡課程教學改革[J].中華醫(yī)學圖書情報雜志,2017(6):63-66.