发明名称 一种基于片上多核处理器共享cache的动态公平划分方法
摘要 本发明涉及一种基于片上多核处理器共享cache的动态公平划分方法,属于计算机体系结构领域。公平性是一个关键的优化问题,当系统缺乏公平时,会出现线程饿死和优先级反转等问题。而目前CMP的设计以提高系统吞吐量为主要目标,这样往往会牺牲系统的公平性。本发明提出了一种新的公平性参数和划分方法。划分方法分成三个步骤:初始化、回溯和重划分。初始化在线程运行前等分cache。回溯阶段是撤销上一次重划分反而公平性降低的划分。重划分阶段是若未发生回溯且公平性参数大于重划分阈值,则对所有线程重新划分Cache。采用本发明提出的共享Cache划分方法显著提高了系统公平性,并且系统吞吐量也有小幅提高。
申请公布号 CN101739299B 申请公布日期 2013.04.03
申请号 CN200910243653.1 申请日期 2009.12.18
申请人 北京工业大学 发明人 方娟;蒲江
分类号 G06F9/50(2006.01)I 主分类号 G06F9/50(2006.01)I
代理机构 北京思海天达知识产权代理有限公司 11203 代理人 刘萍
主权项 一种基于片上多核处理器共享cache的动态公平划分方法,其特征在于,包括以下步骤:初始化、回溯和重划分;将应用程序的运行时间均匀分块,每一块时间称为一个时间片t;初始化只在应用程序运行前执行一次,回溯和重划分步骤则在每个时间片t结束后执行;设S2t为时间片t的公平性指标,回溯阶段是若公平性指标S2t大于前一时间片的公平性指标S2t‑1,且S2t与S2t‑1的差大于回溯阈值,则撤销前一次重划分;重划分阶段是若未发生回溯且S2t大于重划分阈值,则对所有线程重新划分高速缓存Cache;在该方法中,有四个基本的参数:回溯阈值Srollback、重划分阈值Srepartition、划分粒度gran和时间片t;Srollback取值在1%~50%之间,Srepartition取值在1%~10%之间,划分粒度gran即是划分的最小单位取值在64B~64KB之间,t取值在100000~5000000个时钟周期之间;具体过程如下:(1)初始化:1.1)所有线程等分高速缓存Cache,Pi=Cache总容量/n,Pi表示线程i所分配的Cache大小,n表示线程总数,Pti表示时间片t时线程i所分配的Cache大小;1.2)设M1为每指令的一级Cache缺失次数,E1为访问一级Cache命中开销,E2为一级Cache缺失时访问二级Cache的命中开销,E3为二级Cache缺失时访问主存的命中开销,CPIbase为平均每指令执行周期数;M1、E1、E2、E3和CPIbase的值由所使用的计算机体系结构决定;1.3)令α=CPIbase+E1+M1×E2,β=E3,计算出α和β;(2)回溯阶段:在时间片t结束时,2.1)计算时间片t时划分方案的公平性指标S2t:2.1.1)读指令计数器获得时间片t内各线程执行的指令数Inum,读独占缺失计数器获得各线程独占cache状态下的缺失数Missdi;2.1.2)根据公式(I)计算出Tdedi,Tshri等于时间片t的长度,公式(I)如下:Tdedi=α×Inum+β×Missdi    (I)2.1.3)根据公式(II)计算Xi和Xi的均值,公式(II)如下: <mrow> <msub> <mi>X</mi> <mi>i</mi> </msub> <mo>=</mo> <mfrac> <msub> <mi>Tshr</mi> <mi>i</mi> </msub> <msub> <mi>Tded</mi> <mi>i</mi> </msub> </mfrac> <mo>,</mo> <mover> <mi>X</mi> <mo>&OverBar;</mo> </mover> <mo>=</mo> <mfrac> <mn>1</mn> <mi>n</mi> </mfrac> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>n</mi> </munderover> <msub> <mi>X</mi> <mi>i</mi> </msub> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mi>II</mi> <mo>)</mo> </mrow> </mrow>2.1.4)根据公式(III)计算S2t,公式(III)如下: <mrow> <msup> <mi>S</mi> <mn>2</mn> </msup> <mo>=</mo> <mfrac> <mn>1</mn> <mrow> <mi>n</mi> <mo>-</mo> <mn>1</mn> </mrow> </mfrac> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>1</mn> </mrow> <mi>n</mi> </munderover> <msup> <mrow> <mo>(</mo> <msub> <mi>X</mi> <mi>i</mi> </msub> <mo>-</mo> <mover> <mi>X</mi> <mo>&OverBar;</mo> </mover> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mi>III</mi> <mo>)</mo> </mrow> </mrow>2.2)若S2t<S2t‑1,或|S2t‑S2t‑1|/S2t<Srollback则转到步骤(3);2.3)若S2t≥S2t‑1,且|S2t‑S2t‑1|/S2t≥Srollback,令Pt+1i=Pt‑1i,转到步骤(4);(3)重划分阶段:回溯阶段结束后,3.1)若S2t<Srepartition,则转到步骤(4);3.2)若S2t≥Srepartition,则设Yi=Xi‑∑Xi/n,划分集PS={Pt1,Pt2,…,Ptn}和候选集CS={1,2,…,n};3.3)如|CS|≥2,选出Yi中的最大值m axYk和最小值minYj,k和j分别是最大值和最小值的线程号;若maxYk≤0或minYj≥0则转到步骤3.6);3.4)如Ptj=gran,则CS′=CS‑{j},转到步骤3.3);3.5)Pt+1k=Ptk+gran,Pt+1j=Ptj‑gran,CS′=CS‑{k,j},转到步骤3.3);3.6)若CS′中还有剩余的线程号i,则令Pt+1i=Pti;(4)转到步骤(2),直至n个线程运行结束。
地址 100124 北京市朝阳区平乐园100号