新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 片上多核處理器共享資源分配與調度策略研究綜述(二)

        片上多核處理器共享資源分配與調度策略研究綜述(二)

        作者: 時間:2013-05-08 來源:網絡 收藏

        接上文

        本文引用地址:http://www.104case.com/article/148027.htm

        片上多核(一)

        1 基于緩存分區的分配概述

        1.1 緩存分區的背景

        在CMP 系統中,一級緩存通常是私有的,而最后一級緩存(last level cache,LLC)則在各個核間(下文提到的緩存如無特別說明都是指LLC)。

        緩存使得多個線程可以共享某些數據,降低通訊延遲,同時減少數據的冗余備份,提高緩存空間利用率。但是,線程間對于有限共享緩存空間的爭奪,也會導致緩存失效率的上升,影響系統的吞吐量和公平性。

        在單核單線程中最為常用的緩存替換算法是LRU.LRU 不區分訪存請求的線程來源,同等對待所有訪存請求,每次發生緩存失效時替換最近最少訪問的緩存塊。LRU 在單線程環境中能夠有效地提高緩存利用率。然而,在多線程環境下,由于線程間對于共享緩存空間的爭奪,仍然采用LRU 算法的話,一個頻繁發生緩存失效的線程(例如,流媒體應用)會不公平地替換掉其他線程的有用數據塊,占用大量乃至全部緩存空間,從而導致其他線程的緩存失效率(MissRate)①大幅上升,破壞系統的公平性;另外,一個產生大量緩存失效的線程,其數據的復用率(reused)可能很低,而其他線程被替換掉的卻可能是一些常用數據,從而降低了共享緩存的利用率,導致總的緩存失效率上升。無論哪種情況,最終結果都會使得系統的性能受到嚴重影響。

        1.2 緩存分區的基本思想

        為了降低線程間爭奪緩存空間帶來的影響,一種直觀的想法是對緩存進行分區,通過明確地把緩存空間分配給各個核來避免線程間的干擾。一旦某部分緩存被劃分給某個線程,由該線程獨享這部分緩存空間,其他線程無權替換這部分緩存空間中的數據,避免了由于緩存爭奪所帶來的額外緩存失效,使得所有線程的請求都能夠得到合理服務。緩存分區之后,對單個線程而言,相當于運行在單線程環境中一樣,因此,在各緩存分區內可以仍然采用LRU算法。

        最簡單也最容易實現的的緩存分區方式是在程序運行前將緩存平均劃分給CMP 系統中的各個核,稱之為靜態分區。但這種做法的缺點是明顯的,不同線程對于緩存空間需求不一樣,并且即使同一個線程在不同的執行階段對緩存空間的需求也可能不一樣,而靜態分區不能有效反映這種情況。部分線程可能劃分到超出需求的緩存空間,導致緩存空間的浪費,而另一部分線程對于緩存空間的需求卻沒有得到滿足。靜態緩存分區策略實際上是把二級緩存當做了各個的一級私有緩存的擴充,失去了多核共享緩存所能帶來的好處。近年來的大量中都不再采用靜態分區策略。

        1.3 動態緩存分區

        顯然,只有知道各線程的具體訪存行為特征和緩存需求,才能作出最優的緩存分區決策。制定一個公平有效的緩存分區策略,需要一個明確的性能優化目標,并且根據線程所處的具體執行環境與執行階段,充分利用線程訪存行為的動態特征。在共享緩存分區中用到的程序動態特征一般指線程在劃定不同大小的緩存空間下所對應產生的緩存失效率。

        動態緩存分區策略的優化目標一般包括兩類,吞吐量和公平性。吞吐量是針對系統的整體性能而言。對于動態緩存分區策略,一個常用的評估吞吐量的指標是共享緩存產生的總緩存失效率,通過最小化緩存失效率達到最大化系統吞吐量的目標;同時,緩存失效率低,意味著處理器核等待數據返回的阻塞等待時間減少,提交指令的速度更快,因此,另一個與系統吞吐量相關的指標是IPC(instructiONsper cycle)。公平性則是指系統中并行運行的多個線程能夠公平的使用共享緩存,不會存在某些線程占有大部分緩存空間,導致其他線程的緩存失效率大幅增長,性能受到重大影響;公平性同時關注系統中的每個線程,盡量保證所有線程的服務質量得到同等程度的改善。

        基于不同的性能優化目標,提出的緩存分區策略通常有很大分別。Hsu 等人在其相關中即根據優化目標的不同,命名了3 類策略:第1類緩存調度策略可稱為“capitalist”,該類策略對于各線程的訪存請求無限制,任其自由爭奪共享資源,“適者生存”,最為常見的即為通用的LRU 替換策略,但是這類調度策略在多線程環境下通常對于系統的吞吐量和公平性都有影響;第2 類是以最大化系統吞吐量為優化目標的“utilitarian”,該類策略忽視公平性,無法保證單個線程的性能表現;最后一類是以系統公平性為目標的“communist”,該類策略盡量確保并行執行的各線程的服務質量得到同等程度的改善,不會有某些線程的性能受到嚴重影響。

        在現代商業通用處理器上通常有用于計算系統總緩存失效率的部件,但是制定動態緩存分區策略需要更詳細地知道各個線程的訪存特征信息。一些特別用于獲取線程訪存行為特征的輔助硬件是必要的,本文將在1.3.1 節中給出相關介紹。

        在取得必需的訪存信息后,即可以根據不同的優化目標制定相應的緩存分區策略,在1.3.2 節和1.3.3 節中將分別從追求最大化吞吐量和公平性的角度對緩存分區進行研究。在1.3.4 節則針對緩存分區粒度過大(通常是按路分區)的問題介紹了一些解決方案。

        1.3.1 訪存監控器

        大多數商業通用處理器都有一個硬件緩存監控器。緩存監控器包括兩類計數器,一類用于計數系統總的訪存數,另一類計數系統總的緩存失效數,由此可以計算出系統的緩存失效率。但如前所述,要制定動態緩存分區策略,還需要一些特別的輔助硬件來獲取各個線程訪存行為的特征信息。對于緩存分區而言,線程在各種可能的緩存空間下對應產生的緩存失效率是一個極其有用的信息。一種簡單的做法是把每個線程在各種緩存配置下分別執行一次以獲取相應緩存失效率。顯然,這種方法過于低效,沒有實用性。

        當多個線程并行運行時,為了在不實際改變緩存配置的前提下,獲取各線程在不同緩存空間對應的緩存失效率,Hsu 等人在文獻[2-3]中提出一種訪存監控器(memory monitor,MON)。對于N 路組相聯緩存,每個MON 有N 個路計數器(way-counter)。

        這組路計數器根據線程對緩存各路的使用情況按照LRU 次序排列。當對一個MRU(most recently used)緩存路中的緩存行發生緩存命中時,counter(0)增加1;當對一個LRU 緩存路中的緩存行發生緩存命中時,counter(N-1)增加1,以此類推。MON 另有一個計數器用于計數一個線程對共享緩存的總訪存次數。


        上一頁 1 2 3 4 5 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 浦江县| 南岸区| 宜君县| 崇左市| 百色市| 凤城市| 永靖县| 龙南县| 始兴县| 庆城县| 保定市| 绍兴市| 黎川县| 班戈县| 乌兰县| 且末县| 称多县| 兴仁县| 兴义市| 邵东县| 淮北市| 福建省| 玉田县| 宣威市| 武城县| 车险| 正蓝旗| 改则县| 山东省| 滦南县| 武胜县| 陈巴尔虎旗| 若羌县| 新建县| 巴青县| 同德县| 衡水市| 平阳县| 湘阴县| 临武县| 阳山县|