?
目前,大多數(shù)高端嵌入式SoC都屬于異質(zhì)芯片在單純地提高時鐘速度的方法退出主流之后,保持這種單線程的編程抽象,迫使通用的單處理器設(shè)計工程師采用雙處理器或四處理器的一致性系統(tǒng)(coherent system)。具有豐富軟件的高性能嵌入式系統(tǒng)也是如此,只是情況稍有不同。
這些SoC中的處理器通過非一致性(noncoherent)共享內(nèi)存,以某種形式的消息傳遞進行通訊。在第三代蜂窩電話中,通過雙端口SRAM和中斷進行通訊的經(jīng)典RISC/DSP組合,就是這些簡單機制的一個很好例子。 未來的高性能SoC將是處理器的分層和異質(zhì)系統(tǒng),即在層次結(jié)構(gòu)中嵌入由同質(zhì)多處理器組成的一致性處理器集群。這種轉(zhuǎn)變已經(jīng)出現(xiàn)在一個特定的高性能嵌入式市場中,即以一致性網(wǎng)絡(luò)多處理器實現(xiàn)的聯(lián)網(wǎng)市場。
目前,對于未來嵌入式芯片多處理器(CMP)的準(zhǔn)確特性仍存在爭議。CMP是屬于異質(zhì)型,還是用同質(zhì)處理器以分層方式實現(xiàn)的異質(zhì)型還不明確。但對于許多CMP而言,使共享內(nèi)存保持一致性至關(guān)重要。
定義和基本概念
對于一個帶有緩存的多內(nèi)核共享內(nèi)存系統(tǒng)而言,如果由任何處理器發(fā)布的任何“載入”操作所返回的值總是在該內(nèi)存位置最新“存儲”的值,則認(rèn)為該系統(tǒng)是緩存一致的。為了明確術(shù)語“最新存儲 (latest Store) ”的定義,我們需要探討一下內(nèi)存模型。
借助于順序一致性(SC)模型這個常用的內(nèi)存模型進行闡述。在SC系統(tǒng)中,可以根據(jù)一個并行程序的任何一次執(zhí)行的結(jié)果,對在一個位置完成的所有操作(主要是“載入”和“存儲”)建立全局串行順序。因此,“一致性”意味著:(1)每個處理器發(fā)出的“載入”和“存儲”操作順序,以同樣的方式出現(xiàn)在該系統(tǒng)的全局串行順序中,該處理器按照全局串行順序把這些操作傳給內(nèi)存系統(tǒng);(2)在該系統(tǒng)中,處理器每次所讀取的操作所返回的值,就是在全局串行順序中上次寫入到該位置的值。
因此,術(shù)語“全局串行順序”是由系統(tǒng)實現(xiàn)的內(nèi)存一致性模型(簡稱內(nèi)存模型)的結(jié)果,在非正式場合中以“強”和“弱”來定義。內(nèi)存模型與單處理器的指令集架構(gòu)(ISA)有關(guān),ISA定義了編譯器和硬件之間的操作約定。
ISA為多處理器系統(tǒng)(一般稱為多線程系統(tǒng))定義了程序員和內(nèi)存系統(tǒng)之間的操作約定。因此,Java等多線程語言也明確給出了內(nèi)存模型。在本文,大多數(shù)的“多處理”都可以用“多線程”代替。
順序一致性(SC)、總體存儲順序(TSO)和處理器一致性(PC)是一些常用的機器級內(nèi)存模型(從強到弱)。模型更強,意味著在并行內(nèi)存系統(tǒng)的實現(xiàn)器中加入了更多約束,從而簡化了由并行中間件或系統(tǒng)庫寫入器執(zhí)行的任務(wù)。
但從單處理器的角度來看,SC卻是內(nèi)存一致性最弱的方式,因為它只提供合理的內(nèi)存系統(tǒng)所必需的約束,而不再對內(nèi)存操作進行限制。簡言之,強的內(nèi)存模型確保并行內(nèi)存系統(tǒng)在“讀出最新存儲操作返回的值”的約束基礎(chǔ)上,還提供其它約束,從而更有利于程序員編程。這些附加的約束通??捎糜谠诰€程或處理器之間形成高效的同步機制。
為實現(xiàn)一致性,系統(tǒng)必須具備幾個基本特點。首先,在系統(tǒng)中的某一點處,向某個特定的內(nèi)存位置寫入信息的操作必須是串行化的。請注意,串行化是一個邏輯概念。對于一些探索性的高性能實現(xiàn),串行化只是對于在提交(commit)階段應(yīng)如何返回事務(wù)給出了一個指導(dǎo)性方針,它類似于“無序”處理器,這種處理器保持一個臨時狀態(tài)和一個由提交點(commit point)分隔的“架構(gòu)狀態(tài)”。
一致性系統(tǒng)的另一個特點是“寫入”傳播,它表示“寫入”操作需要最終傳播到需要這個新值的所有代理程序(agent)。第三個重要特點是“寫入”原子性,它是內(nèi)存模型而不是一致性的結(jié)果,它表示在所有處理器被串行化后,需要將寫入操作全部傳播至系統(tǒng)中的所有處理器。
這里將只討論一致性協(xié)議的常見分類方法。這種分類方式基于系統(tǒng)中緩存的穩(wěn)定狀態(tài),常見的狀態(tài)被稱為“MOESI”,即修改、自有、互斥且干凈、共享且干凈,以及無效。這些術(shù)語的意義是自我解釋的,詳細解釋很容易在教科書中找到。
基于狀態(tài)的協(xié)議分類主要區(qū)分協(xié)議是基于“更新”還是基于“無效(invalidate)”。在基于“無效”的一致性協(xié)議中,系統(tǒng)中的一條緩存線僅有一個所有者,而在基于更新的系統(tǒng)中,所有緩存線的副本都是根據(jù)“寫入”操作來更新的。
電子發(fā)燒友App















評論