專利名稱:基于公平性考慮的短作業(yè)優(yōu)先內(nèi)存請(qǐng)求調(diào)度方法
技術(shù)領(lǐng)域:
本發(fā)明屬于信息處理系統(tǒng)的多核處理器內(nèi)存控制器請(qǐng)求調(diào)度技術(shù)領(lǐng)域,具體涉及一種考慮各線程訪存公平性、平均等待時(shí)間最短并且維護(hù)線程本身固有并行性的策略。
背景技術(shù):
半導(dǎo)體集成電路的發(fā)展符合摩爾定律,即每隔18個(gè)月集成電路的集成規(guī)模會(huì)增加一倍。然而,隨著處理器設(shè)計(jì)越來(lái)越復(fù)雜,散熱、功耗等問(wèn)題成為了追求單核處理器性能不斷提高的瓶頸。于是,片上多核處理器成為了發(fā)展的必然趨勢(shì),并且已經(jīng)取得了相當(dāng)不錯(cuò)的成績(jī)。在計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)中,內(nèi)存系統(tǒng)是最重要的一級(jí)共享存儲(chǔ)層次。隨著處理器計(jì)算速度越來(lái)越快,內(nèi)存存取速度增長(zhǎng)卻慢了很多。此外,多核處理器多線程應(yīng)用同時(shí)訪問(wèn)共享的內(nèi)存資源,請(qǐng)求集中存于內(nèi)存控制器緩沖中,造成內(nèi)存資源競(jìng)爭(zhēng),這些都讓“內(nèi)存墻”現(xiàn)象也越來(lái)越明顯。所謂內(nèi)存墻,指的是內(nèi)存性能嚴(yán)重限制CPU性能發(fā)揮的現(xiàn)象。傳統(tǒng)單核體系結(jié)構(gòu)下,內(nèi)存控制器的行緩沖優(yōu)先(FR-FCFS)調(diào)度策略優(yōu)先服務(wù)命中行緩沖的訪存請(qǐng)求,充分地利用線程的數(shù)據(jù)局部性,提高了內(nèi)存系統(tǒng)的吞吐率,從而使全系統(tǒng)性能最優(yōu)。然而,在多核處理器系統(tǒng)結(jié)構(gòu)下,它缺乏考慮線程間的公平性訪問(wèn)和線程本身固有的并行性,單純地追求內(nèi)存系統(tǒng)的吞吐率,忽略了計(jì)算機(jī)整體性能。行緩沖優(yōu)先 (FR-FCFS)調(diào)度策略的這些限制表現(xiàn)在,存在某些訪存稀疏型或數(shù)據(jù)局部性差的線程餓死的現(xiàn)象,簡(jiǎn)單地同等看待所有線程請(qǐng)求使平均等待時(shí)間長(zhǎng),沒(méi)有能夠利用線程本身的并行性達(dá)到內(nèi)存訪問(wèn)并行化。公平性考慮的短作業(yè)優(yōu)先調(diào)度策略(FAR-SJFS),通過(guò)設(shè)定訪存請(qǐng)求最長(zhǎng)等待時(shí)間閾值來(lái)保證各線程訪問(wèn)內(nèi)存時(shí)的公平性,通過(guò)短作業(yè)優(yōu)先策略來(lái)縮短訪存請(qǐng)求的平均等待時(shí)間,使訪存請(qǐng)求在內(nèi)存不同內(nèi)存體(Bank)間具有統(tǒng)一的優(yōu)先級(jí),從而保證了線程本身的并行性,從而同一線程對(duì)不同Bank的訪問(wèn)可以同時(shí)得到服務(wù),實(shí)現(xiàn)了訪存時(shí)間重疊,達(dá)到了內(nèi)存訪問(wèn)并行化(MLP)的目的?,F(xiàn)代的SDRAM內(nèi)存系統(tǒng)(圖I)包含了一個(gè)(或幾個(gè))內(nèi)存控制器,實(shí)現(xiàn)處理器訪存請(qǐng)求緩存,請(qǐng)求調(diào)度,地址轉(zhuǎn)化等功能(圖2)。內(nèi)存控制器之外的部分是內(nèi)存體,存儲(chǔ)數(shù)據(jù)的記憶部件。內(nèi)存體包含一個(gè)(或幾個(gè))Rank,每個(gè)Rank包含幾個(gè)設(shè)備。這是由于處理器與內(nèi)存之間的數(shù)據(jù)總線是64位(或128位),但是實(shí)際工藝由于封裝、功耗等問(wèn)題只會(huì)生產(chǎn)8位或16的內(nèi)存設(shè)備,所以需要8個(gè)設(shè)備共同湊成64位數(shù)據(jù)總線的位數(shù)。一個(gè)Rank 內(nèi)的各個(gè)設(shè)備并聯(lián)在一起,使用相同的地址、命令總線。每個(gè)設(shè)備都是由多個(gè)二維存儲(chǔ)芯片組成,于是一個(gè)Rank包含了多個(gè)Bank。每個(gè)Bank都是橫跨一個(gè)Rank的所有設(shè)備。每個(gè)內(nèi)存存儲(chǔ)芯片直觀上就是一個(gè)二維陣列,通過(guò)行選通、列選通,數(shù)據(jù)信息就存在行列地址交叉處。內(nèi)存存取操作是首先都是將一個(gè)Bank中的一行數(shù)據(jù)全部取出,存放在叫做行緩沖(或者信號(hào)放大器)的硬件中,其次進(jìn)行列讀取或者列寫入操作,最后,當(dāng)讀取或者寫入操作完成后再將這一行數(shù)據(jù)全部寫回到內(nèi)存芯片。Bank的一行數(shù)據(jù)在1-4KB之間,具體大小對(duì)操作系統(tǒng)頁(yè)框大小有影響。根據(jù)之前介紹的內(nèi)存體的結(jié)構(gòu),處理器Load或Store指令在最后一級(jí)Cache缺失后,會(huì)進(jìn)行內(nèi)存訪問(wèn)操作。訪問(wèn)請(qǐng)求的物理地址被分解成Rank Id、Bank Id.Row IdXol Id幾項(xiàng),當(dāng)然在更加復(fù)雜的情況下,存在多內(nèi)存控制器的情況下,還會(huì)分解成Channel Id。每一次的內(nèi)存訪問(wèn)首先通過(guò)Rank Id找到相應(yīng)的Rank,再通過(guò)Bank Id找到相應(yīng)的Bank,注意Bank是橫跨Rank內(nèi)所有設(shè)備,然后再通過(guò)給出Row Id進(jìn)行行激活操作,即把請(qǐng)求的整行數(shù)據(jù)從二維陣列取到相應(yīng)的緩沖中,再給出Col Id進(jìn)行讀寫操作,讀寫操作的粒度根據(jù)塊大小的設(shè)定、總線傳輸能力等決定。每次內(nèi)存請(qǐng)求操作的完成時(shí)間依靠行緩沖的狀態(tài),可以分為以下三類1、行命中 訪存請(qǐng)求訪問(wèn)的Bank處于行激活狀態(tài)并且行緩沖中的數(shù)據(jù)正好是請(qǐng)求所要訪問(wèn)的行數(shù)據(jù)。于是內(nèi)存控制器只需要發(fā)出一個(gè)列讀取或?qū)懭朊罴纯?。第I種的訪問(wèn)的延遲時(shí)間是 Tclo 2、行關(guān)閉請(qǐng)求訪問(wèn)的Bank行緩沖沒(méi)有數(shù)據(jù)。此時(shí)首先由內(nèi)存控制器發(fā)送一個(gè)行激活命令把相應(yīng)行數(shù)據(jù)取到行緩沖中,然后再發(fā)送列讀取或?qū)懭朊?。?種的訪問(wèn)延遲時(shí)間是T-+TW 3、行沖突請(qǐng)求訪問(wèn)的Bank行緩沖中存在數(shù)據(jù),但是卻不是請(qǐng)求所要訪問(wèn)的行。內(nèi)存控制器需要先發(fā)送充電命令,然后再發(fā)送行激活命令,最后再發(fā)送列讀取或?qū)懭朊?。?種的訪問(wèn)延遲是T11^UTcl。內(nèi)存控制器含有緩存隊(duì)列,用來(lái)緩存訪存的所有處理器請(qǐng)求。這些請(qǐng)求等待內(nèi)存控制器調(diào)度。調(diào)度請(qǐng)求時(shí)需要考慮Bank的狀態(tài)和總線的狀態(tài)。一個(gè)請(qǐng)求可以被調(diào)度,必須保證它不能引起共享資源(比如Bank和地址、數(shù)據(jù)、命令總線)的競(jìng)爭(zhēng),同時(shí)也不能違反任何內(nèi)存體的物理時(shí)序限制。因?yàn)槊行芯彌_的請(qǐng)求只需要發(fā)送一個(gè)列讀取或?qū)懭氲拿罹涂梢酝瓿稍L存操作。所以工業(yè)的內(nèi)存控制器都是采用行緩沖優(yōu)先(FR-FCFS)的請(qǐng)求調(diào)度策略。這種策略比先來(lái)先服務(wù)(FCFS)策略充分利用了行緩沖的數(shù)據(jù)局部性,取得了很大的性能提升。本發(fā)明因此而來(lái)。
發(fā)明內(nèi)容
本發(fā)明目的在于解決現(xiàn)代流行的虛擬機(jī)系統(tǒng)中通信效率和資源共享的問(wèn)題。為了解決現(xiàn)有技術(shù)中的這些問(wèn)題,本發(fā)明提供的技術(shù)方案是一種基于公平性考慮的短作業(yè)優(yōu)先內(nèi)存請(qǐng)求調(diào)度方法,用于片上多核處理器訪問(wèn)共享內(nèi)存資源時(shí),內(nèi)存控制器調(diào)度各線程訪存請(qǐng)求;其特征在于所述方法中內(nèi)存控制器設(shè)定CPU訪存線程的最大等待時(shí)間Tmax、時(shí)間窗口 Twin,計(jì)數(shù)每個(gè)CPU訪存線程的等待時(shí)間和每個(gè)CPU訪存線程在Twin時(shí)間內(nèi)的訪存次數(shù)Cm ;所述操作系統(tǒng)按照以下步驟進(jìn)行調(diào)度CPU 訪存線程對(duì)緩存進(jìn)行訪問(wèn)(I)內(nèi)存控制器判斷CPU訪存線程列表中是否存在某個(gè)CPU訪存線程的等待時(shí)間達(dá)到或者超過(guò)Tmax ;如果判斷結(jié)果肯定,則出現(xiàn)該情況的CPU訪存線程為最高優(yōu)先級(jí)的訪存線程;否則進(jìn)行步驟(2);(2)內(nèi)存控制器判斷CPU訪存線程列表中是否存在行緩沖命中的CPU訪存線程請(qǐng)求;如果判斷結(jié)果肯定,則出現(xiàn)該情況的CPU訪存線程為次優(yōu)先級(jí)的訪存線程;否則進(jìn)行步驟⑶;(3)內(nèi)存控制器判斷CPU訪存線程列表中請(qǐng)求訪問(wèn)的CPU訪存線程是否是Cttoead最小的線程請(qǐng)求;如果判斷結(jié)果肯定,則出現(xiàn)該情況的CPU訪存線程為下一優(yōu)先級(jí)的訪存線程;否則進(jìn)行步驟(4);(4)內(nèi)存控制器調(diào)度CPU訪存線程列表中所有CPU訪存線程按照先來(lái)先服務(wù) (FCFS)策略進(jìn)行對(duì)緩存進(jìn)行訪問(wèn)。優(yōu)選的,所述方法中當(dāng)CPU訪存線程請(qǐng)求進(jìn)入內(nèi)存控制器緩存時(shí),內(nèi)存控制器開始對(duì)CPU訪存線程的請(qǐng)求打一個(gè)時(shí)間戳TimeAdded,CPU訪存線程輪轉(zhuǎn)每個(gè)內(nèi)存時(shí)鐘周期時(shí),當(dāng)前時(shí)間減去TimeAdded即為請(qǐng)求的等待時(shí)間。本發(fā)明稱為公平性考慮的短作業(yè)優(yōu)先內(nèi)存請(qǐng)求調(diào)度策略,目的在于(I)各線程公平性訪問(wèn)內(nèi)存資源(2)降低平均等待時(shí)間以求高吞吐率訪問(wèn)(3)實(shí)現(xiàn)內(nèi)存級(jí)別訪問(wèn)并行化 (MLP)為了實(shí)現(xiàn)以上目的,采取以下方法。⑴通過(guò)在內(nèi)存控制器中設(shè)定CPU訪存請(qǐng)求最大等待時(shí)間Tmax,對(duì)每個(gè)請(qǐng)求進(jìn)行等待時(shí)間計(jì)時(shí),并對(duì)等待時(shí)間達(dá)到或超過(guò)Tmax的請(qǐng)求優(yōu)先處理來(lái)保證各線程公平性(2)通過(guò)短作業(yè)優(yōu)先策略來(lái)優(yōu)先處理早完成的請(qǐng)求,使請(qǐng)求的平均等待時(shí)間最短,從而提高系統(tǒng)性能(3)通過(guò)上一步對(duì)線程優(yōu)先級(jí)的設(shè)定,使同一線程可以在不同Bank間并行訪問(wèn),維護(hù)了線程本身的并行性,從而加快了訪存時(shí)間。I、訪存請(qǐng)求最大等待時(shí)間閾值Tmax的確定根據(jù)多次實(shí)驗(yàn)結(jié)果可以測(cè)得,內(nèi)存請(qǐng)求的訪問(wèn)時(shí)間大概在200個(gè)處理器時(shí)鐘周期左右。這里采取經(jīng)驗(yàn)值方法在內(nèi)存控制器里設(shè)定Tmax為800個(gè)處理器時(shí)鐘周期。當(dāng)然根據(jù)各線程負(fù)載情況以及內(nèi)存配置情況,Tmax的最優(yōu)值可能會(huì)發(fā)生變化,需要?jiǎng)討B(tài)調(diào)整,這里只是一種啟發(fā)式的策略,爭(zhēng)取達(dá)到最優(yōu)情況。在后來(lái)的實(shí)驗(yàn)方法中只需要要在仿真器里設(shè)定Tmax為時(shí)間常量800即可。2、內(nèi)存請(qǐng)求等待時(shí)間的計(jì)時(shí)方法如圖2所示,內(nèi)存系統(tǒng)框圖中主要部分有內(nèi)存控制器和內(nèi)存體,其中內(nèi)存控制器又包含了請(qǐng)求緩存單元、地址映射單元、請(qǐng)求調(diào)度單元。處理器來(lái)的請(qǐng)求首先緩存在請(qǐng)求緩存單元里,每個(gè)請(qǐng)求包含了以下數(shù)據(jù)結(jié)構(gòu)
權(quán)利要求
1.一種基于公平性考慮的短作業(yè)優(yōu)先內(nèi)存請(qǐng)求調(diào)度方法,用于片上多核處理器訪問(wèn)共享內(nèi)存資源時(shí),內(nèi)存控制器調(diào)度各線程訪存請(qǐng)求;其特征在于所述方法中內(nèi)存控制器設(shè)定CPU訪存線程的最大等待時(shí)間Tmax、時(shí)間窗口 Twin,計(jì)數(shù)每個(gè)CPU訪存線程的等待時(shí)間和每個(gè)CPU訪存線程在Twin時(shí)間內(nèi)的訪存次數(shù)Cm ;所述操作系統(tǒng)按照以下步驟進(jìn)行調(diào)度CPU 訪存線程對(duì)緩存進(jìn)行訪問(wèn)(1)內(nèi)存控制器判斷CPU訪存線程列表中是否存在某個(gè)CPU訪存線程的等待時(shí)間達(dá)到或者超過(guò)Tmax ;如果判斷結(jié)果肯定,則出現(xiàn)該情況的CPU訪存線程為最高優(yōu)先級(jí)的訪存線程;否則進(jìn)行步驟(2);(2)內(nèi)存控制器判斷CPU訪存線程列表中是否存在行緩沖命中的CPU訪存線程請(qǐng)求; 如果判斷結(jié)果肯定,則出現(xiàn)該情況的CPU訪存線程為次優(yōu)先級(jí)的訪存線程;否則進(jìn)行步驟(3);(3)內(nèi)存控制器判斷CPU訪存線程列表中請(qǐng)求訪問(wèn)的CPU訪存線程是否是Cthread最小的線程請(qǐng)求;如果判斷結(jié)果肯定,則出現(xiàn)該情況的CPU訪存線程為下一優(yōu)先級(jí)的訪存線程; 否則進(jìn)行步驟(4);(4)內(nèi)存控制器調(diào)度CPU訪存線程列表中所有CPU訪存線程按照先來(lái)先服務(wù)(FCFS)策略進(jìn)行對(duì)緩存進(jìn)行訪問(wèn)。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于所述方法中當(dāng)CPU訪存線程請(qǐng)求進(jìn)入內(nèi)存控制器緩存時(shí),內(nèi)存控制器開始對(duì)CPU訪存線程的請(qǐng)求打一個(gè)時(shí)間戳TimeAdded,CPU訪存線程輪轉(zhuǎn)每個(gè)內(nèi)存時(shí)鐘周期時(shí),當(dāng)前時(shí)間減去TimeAdded即為請(qǐng)求的等待時(shí)間。
全文摘要
本發(fā)明公開了一種公平性考慮的短作業(yè)優(yōu)先內(nèi)存請(qǐng)求調(diào)度方法(FAR-SJFS),用于片上多核處理器(CMP)訪問(wèn)共享內(nèi)存資源時(shí),內(nèi)存控制器調(diào)度各線程訪問(wèn)請(qǐng)求,所述方法考慮了多線程訪問(wèn)內(nèi)存時(shí)的公平性,減少請(qǐng)求平均等待時(shí)間,維護(hù)各線程本身固有的并行性。該方法對(duì)訪存請(qǐng)求進(jìn)行等待時(shí)間計(jì)數(shù),通過(guò)實(shí)驗(yàn)設(shè)定請(qǐng)求最大等待時(shí)間閾值Tmax來(lái)保證各線程公平性。通過(guò)短作業(yè)優(yōu)先策略,讓請(qǐng)求少的線程盡快完成訪存,從而使線程平均等待時(shí)間最短。在內(nèi)存各Bank體之間對(duì)各線程設(shè)置統(tǒng)一優(yōu)先級(jí),讓同一線程在不同Bank上的請(qǐng)求同時(shí)得到服務(wù),實(shí)現(xiàn)內(nèi)存級(jí)別并行性(MLP)。本發(fā)明保證了內(nèi)存系統(tǒng)的吞吐率,又全面提升整體系統(tǒng)性能。
文檔編號(hào)G06F9/50GK102609312SQ20121000551
公開日2012年7月25日 申請(qǐng)日期2012年1月10日 優(yōu)先權(quán)日2012年1月10日
發(fā)明者吳俊敏, 蔣楠, 趙小雨, 金瑛棋 申請(qǐng)人:中國(guó)科學(xué)技術(shù)大學(xué)蘇州研究院