CN102566974A - 基于同时多线程的取指控制方法 - Google Patents
基于同时多线程的取指控制方法 Download PDFInfo
- Publication number
- CN102566974A CN102566974A CN2012100108958A CN201210010895A CN102566974A CN 102566974 A CN102566974 A CN 102566974A CN 2012100108958 A CN2012100108958 A CN 2012100108958A CN 201210010895 A CN201210010895 A CN 201210010895A CN 102566974 A CN102566974 A CN 102566974A
- Authority
- CN
- China
- Prior art keywords
- branch
- instruction
- thread
- prediction
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Advance Control (AREA)
Abstract
本发明提供的是一种基于同时多线程的取指控制方法。在处理器的每一个时钟周期,取指部件根据程序计数器读取指令的PC值,先选定两个优先级较高的线程作为取指线程,之后计算每个线程所需的实际指令数,进行读取指令的操作;双优先级资源分配机制按照线程IPC值和Cache失效率这两项参数,计算线程在取指阶段所需的系统资源,完成资源的动态分配操作;而TBHBP分支预测器则配合取指部件的取指操作,通过将读取到分支指令Bi的全局历史信息和局部历史信息进行连接,作为二级模式匹配表PHT的索引,获取模式匹配位Sc,将计算结果输入到分支结果输出表BRT;当分支指令Bi再次被执行时,通过选择器Selector判断CONF字段是否大于等于2,如果是则直接将记录的分支结果输出,最后将取到的指令放入指令Cache中,完成取指控制的全部操作。
Description
技术领域
本发明涉及的是一种取指控制方法。具体地说是一种基于同时多线程的指令获取处理方法。
背景技术
随着计算机体系结构的发展,为顺应人们对高性能处理器的迫切需求,同时多线程处理器应运而生,成为目前主流的微处理器结构。针对同时多线程处理器的各项研究变得十分活跃,同时多线程处理器的取指控制方法作为高性能处理器领域的研究热点备受关注。
近年来,国内外许多专家学者和科研机构对其展开积极的研究和探索。在取指策略方面,美国华盛顿大学的Tullsen教授提出目前公认的性能较好的取指策略ICOUNT。ICOUNT策略授予运行速度快的线程以较高的优先级,有效地阻止某一线程阻塞指令队列,使得指令队列中的指令并行最大化,也是传统处理器中取指性能最好的,但因其取指带宽利用不均衡、指令队列冲突率高的缺点,因此极大地限制了同时多线程处理器性能的充分发挥。在分支预测器方面,由McFarling提出Gshare预测器,通过将地址高位和历史低位做“异或”处理,使得出现干扰的分支指令被映像到不同的预测表目项,有效地缓解了线程间指令互扰现象的发生,但却可能将新的分支别名干扰引入到原本不发生冲突的分支指令之间,因此分支预测性能还有待提高。
发明内容
本发明的目的在于提供一种能提高处理器的指令吞吐率,取指带宽利用均匀,能降低指令队列冲突率和提高分支预测性能的基于同时多线程的取指控制方法。
本发明的目的是这样实现的:
步骤一:在处理器的每一个时钟周期,取指部件根据程序计数器读取指令的PC值;
步骤二:通过T选2多路选择器选择指令队列项数计数器值最小的两个线程进行输出,假设线程1的优先级高于线程2;
步骤三:线程1的计数值先经加法器和乘法器执行多项表达式的运算,之后将结果值依次进行一次按位取反和模16运算操作,将输出值通过2选1选择器与取指带宽进行比较,取较小值;除读取指令的计算外,线程2的执行过程与1相同,对于线程2,读取的指令数为线程1的取指数与取指带宽的差值;
步骤四:将两个线程的输出结果送入取指部件寄存器完成取指带宽的划分;
步骤五:双优先级资源分配机制按照线程IPC值和Cache失效率这两项参数,计算线程在取指阶段所需的系统资源,完成资源的动态分配操作。
步骤六:判断是否存在分支指令;若有,则根据分支指令Bi的PC值索引分支预测信息表BPIT,读取分支指令所属线程索引号TID;反之,则将读取的指令送入指令Cache;
步骤七:通过获取的TID编号索引线程分支历史寄存器信息表TBHRIT,读取线程预测的分支历史信息BPHI,作为分支预测的全局历史信息;同时,通过获取的指令PC值索引分支目标地址历史寄存器信息表BTAHRIT,读取分支指令的目标地址BPTA,并根据指令地址读取用于分支预测的局部历史信息;
步骤八:将每个线程的分支历史信息BHR和根据目标地址读取的历史信息BHT通过哈希函数结合在一起,作为二级模式匹配表PHT的索引;
步骤九:通过拼接的历史信息索引PHT表获取分支指令的模式历史位Sc,用于实际的分支预测操作;
步骤十:将获取的模式历史位Sc输入到预测决定函数,完成分支预测结果的计算操作,同时,通过状态转换函数δ来完成模式历史位的更新操作,更新后的模式历史位将由原来的Ri,c-k Ri,c-k+1......Ri,c-1变为Ri,c-k+1Ri,c-k+2......Ri,c;
步骤十一:将分支指令Bi的预测结果写入分支结果输出表BRT中;当下次有相同的分支指令被预测时,若预测结果与BRT表中的PRED值相同,则CONF加1;反之,CONF做减1操作;
步骤十二:通过TBHRIT表的更新电路,将获取的分支输出结果Ri,c左移入线程历史寄存器中的最末位上,并将预测的历史信息更新为分支指令提交的历史信息;
步骤十三:通过BTAHRIT表的更新电路,将获取分支输出结果Ri,c所对应的目标地址历史信息左移入地址历史寄存器中的最末位上,并将预测的分支指令目标地址更新为分支指令提交时的实际地址信息;
步骤十四:当分支预测器对下一分支指令Bi+1进行分支预测时,首先根据其PC值索引BRT表中的CONF字段;若CONF大于等于2,则BPIT表中的TAG字段记为1,分支预测电路将不对指令Bi+1进行分支预测操作,而是直接将存储的分支结果输出;反之,若CONF小于2,则BPIT表中的TAG字段记为0,分支指令重新执行分支预测操作,并将预测结果与BRT表中的数据进行比对,完成CONF字段和PRED字段的更新操作;最后,将预测结果告知取指单元;
步骤十五:若在分支预测的整个过程中出现分支误预测现象,则将处理器启动误预测处理机制即时停止剩余操作,并取消误预测分支指令后所属同一线程的正在流水线中运行的全部指令,线程的PC值调整为分支后的正确目标指令地址,然后从新的地址重新开始读取指令执行;同时,根据分支的实际执行结果调整分支结果输出表BRT中相应表目项的CONF字段和PRED字段,以供该分支指令再次执行时使用。
本发明还可以包括:
1、所述计算线程在取指阶段所需的系统资源中,所述系统资源包括:取指带宽、指令队列长度、保留站队列长度,
资源分配的具体方式为:
其中,PTi和PTj分别表示线程Ti和Tj的资源分配优先级,Ni表示分配给线程Ti的资源数目,R表示系统资源的总数;
在主优先级和次优先级均不相同的情况,以线程的IPC值与次优先级数的比值作为资源分配评定的依据,资源分配的具体方式为:
其中,TLi和TLj分别表示线程Ti和Tj的主优先级;CLi和CLj分别表示线程Ti和Tj的次优先级数,其值可取1、2、3;Ni表示分配给线程Ti的资源数目,R表示系统资源的总数。
2、在将每个线程的分支历史信息BHR和根据目标地址读取的历史信息BHT通过哈希函数结合在一起,作为二级模式匹配表PHT的索引过程中,分别对BHR+BHT和BHT+BHR三种历史信息的连接方式进行分支预测性能的测试,确定两种历史信息最佳的连接方式;对于二级模式匹配表PHT的索引,采取线程历史信息和地址历史信息拼接的方式。
本发明旨于设计取指策略和分支预测器相结合的取指控制方法FCMBSMT。具体改进为:设计IFSBSMT取指策略控制取指部件的工作时序,提高处理器的取指效率。同时,设计TBHBP分支预测器辅助取指部件,提高取出指令的可用性和有效性,更为有效地提高处理器的指令吞吐率和分支预测性能,具有良好的应用前景和应用价值。
本发明主要包含如下特点:
IFSBSMT取指策略部分的整个实施过程包括线程选择、取指带宽划分和系统资源分配三个阶段。
所谓的线程选择是指在每个时钟周期内,取指部件选择多少线程和对哪些线程取指。在这里,IFSBSMT策略采取ICOUNT 2.8的线程选择方式,即每个时钟周期内选择两个线程进行取指,每次最多读取八条指令,有效避免对取指带宽划分过细导致某些线程因指令Cache失效等原因无法进行取指现象的发生。
IFSBSMT策略的第二个阶段是取指带宽的划分,也是整个策略实施的关键阶段。在这一阶段,取指部件根据线程指令的流速和线程在指令队列中的指令数计算本周期内需要读取的指令数。若指令队列中有足够的指令执行则不进行指令的读取,否则按照需求读取一定数目的指令,读取指令的最大数目为最初设定的取指带宽,取指带宽为8。线程在某一时钟周期内执行的指令数约为线程在指令队列中指令数的平方根,那么所需指令数的计算公式就应为公式(1)。
在公式(1)中,I为线程在某个时钟周期内需读取的指令数,Ifs为线程在运行过程中的指令流速,其值应为线程IPC与某一系数的乘积,I′为线程在指令队列中的指令数。将指令流速计算方式带入公式(1)后改写为公式(2)。
在处理器的实际运行过程中,由于Cache失效和分支误预测等因素的存在,系统实际获取的线程IPC值往往低于预估值,因此需乘以一系数P来纠正这一误差,即上面提到的指令流速计算方式。
在系统初始化、Cache失效和分支误预测的情况下,取指部件并不进行指令的读取操作,因此此时的线程IPC值均为0,那么线程的指令速度也相应的为0,严重影响线程的执行速度,为避免此种现象的出现,将线程的IPC进行加1处理,那么公式(2)将改写为(3)。
在IFSBSMT策略具体的硬件实现过程中,线程IPC值的计算不仅需要额外的硬件开销,并且需通过线程的预执行和采样来修正IPC值,严重影响指令的执行速度。因此,通过采用将参数I按位取反并对因子P进行取模的方式来化简繁琐的线程IPC值计算,有效地减少了IFSBSMT策略所需的硬件开销。新的公式表示见公式(4)。
在公式(4)中,需对线程在指令队列中的指令数I′进行开根号操作,其硬件实现的复杂度过高,通过采用二阶泰勒公式对根号进行处理,将公式(4)改写为(5)。
尽管利用二阶泰勒公式对公式(5)进行优化所得的结果为近似值,但并不影响取指的正确性,况且和实际取出的指令数相比,这点误差可以忽略不计。
在每个时钟周期内,某一线程所取指令数的最大值不应超过预设的取指带宽N。因此,线程需读取的指令数应为公式(5)的计算结果与取指带宽的较小值,且参数P的最优值应取16,预设的取指带宽为8。那么,最终每周期线程所取指令数的计算公式如(6)所示。
第二阶段只对取指带宽的划分进行设计,但由于在线程取指过程中L2 Cache失效现象时有发生,导致共享资源可能会被某一线程独占,影响其他后继线程的顺利执行,限制SMT(Simultaneous Multithreading)处理器总体性能的提升。因此,还需对线程的共享资源进行合理分配来解决这一问题。
IFSBSMT策略的最后阶段就是对系统资源的分配,采用线程IPC和L2 Cache失效率的双优先级方式来对线程的共享资源进行动态分配,其实现的基本原理:根据线程IPC值设定的资源分配优先级为主优先级;根据L2Cache失效率设定的优先级为次优先级,次优先级由高到低依次划分为CLevel 1、CLeve2和CLeve3,其评定的标准:线程未发生L1 data Cache和L2 Cache失效为CLevel 1、线程发生L1 data Cache失效、L2 Cache未失效为CLevel 2、线程发生L2 Cache失效为CLevel 3。在主优先级不同次优先级相同的情况下,将以主优先级作为资源分配的依据,主优先级高的线程具有较高的资源分配权限。在主优先级相同次优先级不同的情况下,将以次优先级作为资源分配的依据,次优先级高的线程具有较高的资源分配权限。资源分配的具体公式如(7)所示。
在公式(7)中,PTi和PTj分别表示线程Ti和Tj的资源分配优先级,Ni表示分配给线程Ti的资源数目,R表示系统资源的总数。
在主优先级和次优先级均不相同的情况,将以线程的IPC值与次优先级数的比值作为资源分配评定的依据。资源分配的具体公式如(8)所示。
在公式(8)中,TLi和TLj分别表示线程Ti和Tj的主优先级,CLi和CLj分别表示线程Ti和Tj的次优先级数,其值可取1、2、3,Ni表示分配给线程Ti的资源数目,R表示系统资源的总数。
TBHBP分支预测器采用两级自适应分支预测器为基础,线程间采用独立的分支历史寄存器和地址历史寄存器,对于模式匹配表则采取线程共享的方式,并应用分支结果输出表来对分支指令结果进行存储。其具体的硬件结构如图1所示。
如图1所示,TBHBP分支预测器主要包含六个部分:分支预测信息表BPIT(Branch PredictInformation Table)、线程分支历史寄存器信息表TBHRIT(Thread Branch History RegisterInformation Table)、分支目标地址历史寄存器信息表BTAHRIT(Branch Target Address HistoryRegister Information Table)、模式匹配表PHT(Pattern History Table)、分支结果输出表BRT(Branch Result Table)、以及除分支预测信息表和PHT表外,其他三个表的逻辑更新电路。
分支预测信息表BPIT是根据分支指令的PC值进行索引的,每个线程对应一组独立的表目项,每一个表目项包含4个字段:TID字段为线程的索引号,用于索引TBHRIT表;PC字段用于BTAHRIT表的索引;TAG字段用于与分支结果表的PC值进行比较,以确定该分支指令是否需要进行分支预测;CONF字段作为分支预测的阈值,以判断是否应用BRT表中的分支预测结果。当线程的某一分支指令进入流水线后,分支预测电路用其PC值索引BPIT表的某一表目项。
线程分支历史寄存器信息表TBHRIT是通过BPIT表中的TID字段进行索引的,每个线程对应一组独立的表目项,每一个表目项包含3个字段:TID字段为线程的索引号;PC字段用于对分支指令的索引;BPHI字段为预测的分支历史信息,用于分支历史信息位的拼接,并在分支指令提交时进行更新。当线程的某一指令进入流水线的译码阶段时,分支预测电路用其PC值索引TBHRIT表的某一表目项。
分支目标地址历史寄存器信息表BTAHRIT是通过BPIT表中的PC字段进行索引的,每个线程对应一组独立的表目项,每一个表目项包含3个字段:TID字段为线程的索引号;PC字段用于对分支指令的索引;BPTA字段为分支指令的目标地址信息,用于读取每个分支指令目标地址的局部分支历史信息,之后来完成分支历史信息位的拼接,并在分支指令提交时进行更新。当线程的某一分支指令进入流水线的译码阶段时,分支预测电路用其PC值索引BTAHRIT表的某一表目项。
模式匹配表PHT是通过线程的综合分支历史进行索引的,综合历史信息是由TBHRIT表记录的线程分支历史信息和BTAHRIT表中依据分支指令目标地址读取的局部分支历史信息拼接而成的,对PHT表的应用采用多线程共享的方式。
分支结果输出表BRT是通过BPIT表中的PC字段进行索引的,每个线程对应一组独立的表目项,每一个表目项包含4个字段:TID字段为线程的索引号;PC字段用于对分支指令的索引;PRED用于存储分支指令的预测结果;CONF作为分支预测的阈值。当线程的某一分支指令进入流水线的写回阶段时,分支结果更新电路用其PC值索引BRT表的所有表目项,来完成对其的更新操作。同时,对TBHRIT表和BTAHRIT表也将应用相关的更新电路来完成表目项的更新操作。
本发明在处理器的取指控制上有独到的优势,通过取指单元将IFSBSMT取指策略和TBHBP分支预测器有效的结合在一起,不仅使其能充分发挥自身的技术优势,两者的无缝融合更进一步提高了FCMBSMT方法的优越性。
在处理器的取指过程中,IFSBSMT策略通过线程选择、取指带宽划分和动态资源分配这三个实施阶段,对取指部件读取指令的操作进行控制,使处理器的取指带宽利用更为均衡,线程平均占用指令队列的长度明显减小,指令队列的冲突率接近0,极大地提高处理器的指令吞吐率。但美中不足的是,由于SMT处理器在每个时钟周期内的取指数较传统处理器大幅增多,处理器的分支预测性能呈现明显的下降趋势。
TBHBP分支预测器的实现有效的解决了这一问题,通过将线程的全局历史信息和局部历史信息结合为综合历史信息,作为模式匹配表PHT的索引,有效减少了SMT处理中分支信息过时、混乱问题的出现。同时,线程独立共享分支预测资源的模式,极大降低了在SMT处理器下发生分支别名冲突和容量冲突的概率,提高了分支执行的正确性。相比于传统分支预测器,新增的分支预测结果输出表BRT这一硬件结构,通过记录常用分支指令的预测结果,推进了分支指令的预测执行速度,避免分支指令队列堆积现象的出现,促进后续指令的顺利执行。
在两者独立发挥自身技术优势的同时,彼此之间更是通过功能互补的方式,使其各自性能都得到充分的发挥。TBHBP预测器的精度预测使得流水线中分支指令得以正常执行,有效地缓解了分支指令对取指操作的影响,促进了IFSBSMT策略在取指性能上的进一步提升。同时,IFSBSMT策略通过合理的利用取指带宽,减少高优先级线程的取指数量,使得读取的分支指令数目相对减少,减轻了TBHBP预测器的分支预测压力,提高了分支预测器的预测精度和准确性。
本发明的优点在于有效地克服了传统方法中存在的取指策略不够优化、分支预测性能低下等缺点。多次的实例分析和性能测试结果表明:FCMBSMT取指控制方法与传统的ICG方法相比,指令吞吐率提升了59.3%,指令队列的平均长度减少17.33,分支误预测率和误预测路径取指率分别下降了2.16%和3.28%,极大地促进处理器指令吞吐率和分支预测预测性能的提升,具有良好的应用前景和研究价值。
附图说明
图1是本发明的TBHBP分支预测器的硬件结构图。
图2是本发明的FCMBSMT取指控制方法的硬件结构图。
图3是本发明的FCMBSMT取指控制方法的实现流程图。
图4是本发明的处理器IPC性能测试对比图。
图5是本发明的单线程IPC性能测试对比图。
图6是本发明的指令队列平均长度性能测试对比图。
图7是本发明的分支误预测率性能测试对比图。
图8是本发明的分支误预路径取指率性能测试对比图。
具体实施方式
下面结合附图举例对本发明做更详细地描述:
FCMBSMT取指控制方法的整个实施过程分为两个阶段:读取指令、指令的分支预测,且这两者的执行顺序没有先后之分,通过两者的互相作用来完成同时多线程处理器的取指操作。结合图2和图3发明的基于同时多线程取指控制FCMBSMT的具体实现流程如下:
步骤一:在处理器的每一个时钟周期,取指部件根据程序计数器读取指令的PC值。
步骤二:通过T选2多路选择器选择指令队列项数计数器值最小的两个线程进行输出,假设线程1的优先级高于线程2。
步骤三:线程1的计数值先经加法器和乘法器执行多项表达式的运算,之后将结果值依次进行一次按位取反和模16运算操作,将输出值通过2选1选择器与取指带宽进行比较,取其较小值。
步骤四:除读取指令的计算外,线程2的执行过程与1相同。对于线程2,读取的指令数应为线程1的取指数与取指带宽的差值。
步骤五:将两个线程的输出结果送入取指部件寄存器完成取指带宽的划分。
步骤六:双优先级资源分配机制按照线程IPC值和Cache失效率这两项参数,通过公式(7)和公式(8)计算线程在取指阶段所需的系统资源,例如:取指带宽、指令队列长度、保留站队列长度等,完成资源的动态分配操作。
步骤七:判断是否存在分支指令。若有,则根据分支指令Bi的PC值索引分支预测信息表BPIT,读取分支指令所属线程索引号TID。反之,则将读取的指令送入指令Cache。
步骤八:通过获取的TID编号索引线程分支历史寄存器信息表TBHRIT,读取线程预测的分支历史信息BPHI,用其作为分支预测的全局历史信息。同时,通过获取的指令PC值索引分支目标地址历史寄存器信息表BTAHRIT,读取分支指令的目标地址BPTA,并根据指令地址读取用于分支预测的局部历史信息。
步骤九:将每个线程的分支历史信息BHR和根据目标地址读取的历史信息BHT通过哈希函数结合在一起,作为二级模式匹配表PHT的索引。在这里,分别对BHR+BHT和BHT+BHR这三种历史信息的连接方式进行分支预测性能的测试,以确定两种历史信息最佳的连接方式。实验通过运行art-perlbmk、craft-mcf和bip2-lucas这三组两线程工作负载程序,分析在不同的连接方式下分支误预测率和分支误预测路径取指率。具体分析结果如表1所示。
表1不同历史信息连接方式的分支预测性能对比表
由表1分析可知,BHR+BHT相比于其他两种历史信息的连接方式,在分支预测性能上有一定的优势。因此,对于二级模式匹配表PHT的索引,采取线程历史信息和地址历史信息拼接的方式。
步骤十:通过拼接的历史信息索引PHT表获取分支指令的模式历史位Sc,用于实际的分支预测操作。
步骤十一:将获取的模式历史位Sc输入到预测决定函数,完成分支预测结果的计算操作。同时,通过状态转换函数δ来完成模式历史位的更新操作,更新后的模式历史位将有原来的Ri,c-k Ri,c-k+1......Ri,c-1变为Ri,c-k+1Ri,c-k+2......Ri,c。
步骤十二:将分支指令Bi的预测结果写入分支结果输出表BRT中。当下次有相同的分支指令被预测时,若预测结果与BRT表中的PRED值相同,则CONF加1;反之,CONF做减1操作。
步骤十三:通过TBHRIT表的更新电路,将获取的分支输出结果Ri,c左移入线程历史寄存器中的最末位上,并将预测的历史信息更新为分支指令提交的历史信息。
步骤十四:通过BTAHRIT表的更新电路,将获取分支输出结果Ri,c所对应的目标地址历史信息左移入地址历史寄存器中的最末位上,并将预测的分支指令目标地址更新为分支指令提交时的实际地址信息。
步骤十五:当分支预测器对下一分支指令Bi+1进行分支预测时,首先根据其PC值索引BRT表中的CONF字段。若CONF大于等于2,则BPIT表中的TAG字段记为1,分支预测电路将不对指令Bi+1进行分支预测操作,而是直接将存储的分支结果输出。反之,若CONF小于2,则BPIT表中的TAG字段记为0,分支指令会按照上述的八个步骤重新执行分支预测操作,并将预测结果与BRT表中的数据进行比对,完成CONF字段和PRED字段的更新操作。最后,将预测结果告知取指单元使其正确的完成取指操作。
步骤十六:若在分支预测的整个过程中出现分支误预测现象,则将处理器会启动误预测处理机制即时停止剩余操作,并取消误预测分支指令后所属同一线程的正在流水线中运行的全部指令,线程的PC值调整为分支后的正确目标指令地址,然后从新的地址重新开始读取指令执行。同时,根据分支的实际执行结果调整分支结果输出表BRT中相应表目项的CONF字段和PRED字段,以供该分支指令再次执行时使用。
以SPEC 2000基准测试程序为例来说明FCMBSMT方法取指控制的过程,本实验还需设置性能测试基准程序参数、同时多线程模拟器、性能参照对象和性能参数指标,具体参数配置如下:
(1)设置性能测试基准程序参数。实验将选取SPEC 2000测试集中的7个定点程序和5个浮点程序,并将其随机组合为6个双线程负载集进行性能测评。同时,由于在实验中完整的模拟测试程序需要花费大量的时间,有时甚至不可能完成,因此针对不同测试程序的运行指令数也进行具体的配置。具体的测试程序参数及运行指令数配置如表2所示,运行指令数的单位为十亿。
表2FCMBSMT方法性能测试基准程序参数配置表
(2)同时多线程模拟器。实验采用西部实验室Dean.M.Tullsen等人研发的SMISIM模拟器进行实验研究。SMISIM模拟器是基于James Lames编写的SPIM模拟器进行开发的,可同时运行8个线程,每个线程运行的指令可以达到300M。同时,SMTSIM模拟器还支持Alpha可执行程序的运行,且运行速度也是目前SMT模拟器中最快的。模拟器参数的基本配置如表3所示。
表3SMTSIM模拟器参数的基本配置表
(3)性能参照对象。性能参照将采用目前取指性能最好的ICOUNT2.8和Gshare分支预测器相结合的ICG方法进行性能比对,通过与高性能的取指控制方法进行性能对比,更能显现FCMBSMT方法在取指性能上的优越性和可用性。
(4)性能参数指标。针对SMT处理器体系结构特点和FCMBSMT方法的实现原理,综合考虑各方面因素的影响,性能测试实验将采用的评估参数包括:处理器IPC、指令队列长度及队列冲突率、分支误预测率和误预测路径取指率。
处理器的IPC值是指处理器在每个时钟周期内执行的指令数,是衡量处理器指令吞吐率和加速比的重要性能指标。
指令队列长度是指基准测试程序占用定点队列、浮点队列和访存队列的长度之和。指令队列冲突率是指基准测试程序所占定点队列冲突率、浮点队列冲突率和访存队列冲突率的算术平均值。
分支误预测率是指误预测的分支指令数与分支指令总数的比值。误预测路径的取指率是指误预测路径读取的指令数与读取指令总数的比值。
同时,为了使得测试环境更为接近实际程序运行状态,实验采用12个工作负载程序两两随机组合的方式,最终形成6个复合型测试程序来其进行性能测试。具体的性能测试结果如图4所示。
由图4分析可知,相比于传统的ICG取指控制方法,在FCMBSMT方法下处理器的指令吞吐率大幅度提升。在两线程负载运行的条件下处理器的IPC性能达到2.95,而在ICG方法下处理器IPC的性能仅为1.89,工作负载程序性能的平均加权加速比约为26.1%,提升幅度相比单独的IFSBSMT策略和TBHBP预测器都有所提高。处理器指令吞吐率的提升是在IFSBSMT策略和TBHBP预测器共同的推动下实现的,IFSBSMT策略通过合理利用取指带宽和动态分配线程执行所需的系统资源,极大地提高了处理器的指令吞吐率。同时,高精度的TBHBP分支预测器通过减少分支指令的别名冲突和容量冲突,提高了处理器的取指质量和取指效率,进而促进了指令吞吐率性能的提升。
IFSBSMT策略和TBHBP分支预测器在实现的过程中都具有一定的取指公平性,因此两者相结合的FCMBSMT取指控制方法也将具有相同的优点,即在提高处理器整体指令吞吐率性能的同时,单线程的指令吞吐率性能应所有提升。下面将针对上一实验6个两线程工作负载中的12个单线程的IPC性能进行测试,具体的性能测试结果如图5所示。
由图5分析可知,与ICG方法相比,在FCMBSMT方法下的12个工作负载程序的指令吞吐率均呈现不同程度的涨幅。性能测试结果经过统计后显示,FCMBSMT方法下单线程的平均IPC值为1.45,而ICG方法仅为0.91,平均加权加速比约为29.3%。可见,FCMBSMT取指控制方法完全继承了IFSBSMT策略和TBHBP预测器的公平性这一优点,且与二者相比,单线程指令吞吐率性能的提升幅度更为明显。
IFSBSMT取指策略通过合理划分取指带宽,减少了高优先级线程的取指数,进而有效地减少了线程占用指令队列的平均长度,极大地提高了系统资源的利用率。而TBHBP分支预测器通过增加分支结果输出表BRT,有效地避免了分支指令在指令队列中堆积现象的出现,加快了分支指令的预测执行速度,推进后继指令的顺利执行,进而有效地降低了线程对指令队列等系统资源的占用率。在两种因素共同的推动作用下,FCMBSMT方法下指令队列的平均长度应有所减少。具体测试结果如图6所示。
由图6测试结果数据的统计分析可知,除applu-sixtrack程序负载外,其他程序负载占用指令队列的长度均所有减小,这主要是由于applu-sixtrack程序负载读取可用指令的数量增多,使得其占用指令队列的长度有所增加,但最终表现为工作负载IPC性能的提升。总体而言,ICG方法下程序负载的平均占用指令队列长度为36.83,而FCMBSMT方法仅为19.50,平均降幅约为47.05%。
TBHBP分支预测器精度的提升有效地提高了FCMBSMT取指控制方法的分支预测命中率,进而使得处理器的分支误预测率有所下降。具体的性能测试结果如图7所示。
由图7分析可知,除bzip2-lucas和applu-sixtrack程序负载因其自身原因外,其他程序负载的分支误预测率均呈现下降的趋势。总体而言,ICG方法下的分支误预测率为6.03%,而FCMBSMT方法下的分支误预测率仅为3.87%,平均降幅将近2.16个百分点。
由此可见,FCMBSMT方法对于处理器分支预测性能的改善非常显著。
同时,分支误预测率的下降有效地减少了取指部件在误预测路径上的取指数,处理器在误预测路径上的取指率也相应的下降。具体的性能测试结果如图8所示。
由图8分析可知,分支误预路径取指率与分支预测误预测率的降幅趋势基本保持一致,即除bzip2-lucas和applu-sixtrack程序负载外因其自身原因外,其他程序负载的分支误预测率路径取指率均有所下降。总体而言,ICG方法下的分支误预测路径取指率为10.64%,而FCMBSMT方法下的分支误预测路径取指率仅为7.42%,平均降幅将近3.28个百分点。分支误预测率和误预测路径取指率的下降有效地提高了处理器的分支预测性能,并促进了处理器指令吞吐率性能的提升。
以上是本发明的较佳实施例,凡依本发明技术方案作为改变的,所产生的功能作用未超出本发明方案范围的,均属于本发明的保护范围。
Claims (3)
1.一种基于同时多线程的取指控制方法,其特征是:
步骤一:在处理器的每一个时钟周期,取指部件根据程序计数器读取指令的PC值;
步骤二:通过T选2多路选择器选择指令队列项数计数器值最小的两个线程进行输出,假设线程1的优先级高于线程2;
步骤三:线程1的计数值先经加法器和乘法器执行多项表达式的运算,之后将结果值依次进行一次按位取反和模16运算操作,将输出值通过2选1选择器与取指带宽进行比较,取较小值;除读取指令的计算外,线程2的执行过程与1相同,对于线程2,读取的指令数为线程1的取指数与取指带宽的差值;
步骤四:将两个线程的输出结果送入取指部件寄存器完成取指带宽的划分;
步骤五:双优先级资源分配机制按照线程IPC值和Cache失效率这两项参数,计算线程在取指阶段所需的系统资源,完成资源的动态分配操作。
步骤六:判断是否存在分支指令;若有,则根据分支指令Bi的PC值索引分支预测信息表BPIT,读取分支指令所属线程索引号TID;反之,则将读取的指令送入指令Cache;
步骤七:通过获取的TID编号索引线程分支历史寄存器信息表TBHRIT,读取线程预测的分支历史信息BPHI,作为分支预测的全局历史信息;同时,通过获取的指令PC值索引分支目标地址历史寄存器信息表BTAHRIT,读取分支指令的目标地址BPTA,并根据指令地址读取用于分支预测的局部历史信息;
步骤八:将每个线程的分支历史信息BHR和根据目标地址读取的历史信息BHT通过哈希函数结合在一起,作为二级模式匹配表PHT的索引;
步骤九:通过拼接的历史信息索引PHT表获取分支指令的模式历史位Sc,用于实际的分支预测操作;
步骤十:将获取的模式历史位Sc输入到预测决定函数,完成分支预测结果的计算操作,同时,通过状态转换函数δ来完成模式历史位的更新操作,更新后的模式历史位将由原来的Ri,c-k Ri,c-k+1......Ri,c-1变为Ri,c-k+1Ri,c-k+2......Ri,c;
步骤十一:将分支指令Bi的预测结果写入分支结果输出表BRT中;当下次有相同的分支指令被预测时,若预测结果与BRT表中的PRED值相同,则CONF加1;反之,CONF做减1操作;
步骤十二:通过TBHRIT表的更新电路,将获取的分支输出结果Ri,c左移入线程历史寄存器中的最末位上,并将预测的历史信息更新为分支指令提交的历史信息;
步骤十三:通过BTAHRIT表的更新电路,将获取分支输出结果Ri,c所对应的目标地址历史信息左移入地址历史寄存器中的最末位上,并将预测的分支指令目标地址更新为分支指令提交时的实际地址信息;
步骤十四:当分支预测器对下一分支指令Bi+1进行分支预测时,首先根据其PC值索引BRT表中的CONF字段;若CONF大于等于2,则BPIT表中的TAG字段记为1,分支预测电路将不对指令Bi+1进行分支预测操作,而是直接将存储的分支结果输出;反之,若CONF小于2,则BPIT表中的TAG字段记为0,分支指令重新执行分支预测操作,并将预测结果与BRT表中的数据进行比对,完成CONF字段和PRED字段的更新操作;最后,将预测结果告知取指单元;
步骤十五:若在分支预测的整个过程中出现分支误预测现象,则将处理器启动误预测处理机制即时停止剩余操作,并取消误预测分支指令后所属同一线程的正在流水线中运行的全部指令,线程的PC值调整为分支后的正确目标指令地址,然后从新的地址重新开始读取指令执行;同时,根据分支的实际执行结果调整分支结果输出表BRT中相应表目项的CONF字段和PRED字段,以供该分支指令再次执行时使用。
2.根据权利要求1所述的基于同时多线程的取指控制方法,其特征是:所述计算线程在取指阶段所需的系统资源中,所述系统资源包括:取指带宽、指令队列长度、保留站队列长度,
资源分配的具体方式为:
其中,PTi和PTj分别表示线程Ti和Tj的资源分配优先级,Ni表示分配给线程Ti的资源数目,R表示系统资源的总数;
在主优先级和次优先级均不相同的情况,以线程的IPC值与次优先级数的比值作为资源分配评定的依据,资源分配的具体方式为:
其中,TLi和TLj分别表示线程Ti和Tj的主优先级;CLi和CLj分别表示线程Ti和Tj的次优先级数,其值可取1、2、3;Ni表示分配给线程Ti的资源数目,R表示系统资源的总数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210010895.8A CN102566974B (zh) | 2012-01-14 | 2012-01-14 | 基于同时多线程的取指控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210010895.8A CN102566974B (zh) | 2012-01-14 | 2012-01-14 | 基于同时多线程的取指控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102566974A true CN102566974A (zh) | 2012-07-11 |
CN102566974B CN102566974B (zh) | 2014-03-26 |
Family
ID=46412493
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210010895.8A Expired - Fee Related CN102566974B (zh) | 2012-01-14 | 2012-01-14 | 基于同时多线程的取指控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102566974B (zh) |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103677999A (zh) * | 2012-09-14 | 2014-03-26 | 国际商业机器公司 | 计算环境内的资源的管理 |
CN103870249A (zh) * | 2014-04-01 | 2014-06-18 | 龙芯中科技术有限公司 | 指令地址获取方法和即时编译器 |
CN104699460A (zh) * | 2013-12-04 | 2015-06-10 | 美国亚德诺半导体公司 | 线程偏差计数器 |
US9218185B2 (en) | 2014-03-27 | 2015-12-22 | International Business Machines Corporation | Multithreading capability information retrieval |
US9354883B2 (en) | 2014-03-27 | 2016-05-31 | International Business Machines Corporation | Dynamic enablement of multithreading |
US9804846B2 (en) | 2014-03-27 | 2017-10-31 | International Business Machines Corporation | Thread context preservation in a multithreading computer system |
CN107688471A (zh) * | 2017-08-07 | 2018-02-13 | 北京中科睿芯科技有限公司 | 一种动态调整数据流架构的资源带宽的计算系统及其方法 |
CN107810482A (zh) * | 2015-06-26 | 2018-03-16 | 微软技术许可有限责任公司 | 指令块到处理器指令窗口的批量分配 |
US9921848B2 (en) | 2014-03-27 | 2018-03-20 | International Business Machines Corporation | Address expansion and contraction in a multithreading computer system |
CN108089883A (zh) * | 2013-01-21 | 2018-05-29 | 想象力科技有限公司 | 基于推测度量将资源分配给线程 |
CN108319458A (zh) * | 2018-01-17 | 2018-07-24 | 南京航空航天大学 | 一种基于图形化卫式命令演算的多任务编译方法 |
US10095523B2 (en) | 2014-03-27 | 2018-10-09 | International Business Machines Corporation | Hardware counters to track utilization in a multithreading computer system |
WO2019183877A1 (zh) * | 2018-03-29 | 2019-10-03 | 深圳市大疆创新科技有限公司 | 分支预测的方法与装置 |
CN110688153A (zh) * | 2019-09-04 | 2020-01-14 | 深圳芯英科技有限公司 | 一种指令分支执行控制方法及相关设备、指令结构 |
US20200057641A1 (en) * | 2018-08-16 | 2020-02-20 | International Business Machines Corporation | Tagging target branch predictors with context with index modifiction and late stop fetch on tag mismatch |
US11048517B2 (en) | 2015-06-26 | 2021-06-29 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
CN114138341A (zh) * | 2021-12-01 | 2022-03-04 | 海光信息技术股份有限公司 | 微指令缓存资源的调度方法、装置、程序产品以及芯片 |
CN117093272A (zh) * | 2023-10-07 | 2023-11-21 | 飞腾信息技术有限公司 | 指令发送方法及处理器 |
CN118171612A (zh) * | 2024-05-14 | 2024-06-11 | 北京壁仞科技开发有限公司 | 一种指令缓存的优化方法、设备、存储介质及程序产品 |
CN118227285A (zh) * | 2024-03-07 | 2024-06-21 | 海光信息技术股份有限公司 | 资源分配方法、处理器和电子设备 |
CN118171612B (zh) * | 2024-05-14 | 2024-11-08 | 北京壁仞科技开发有限公司 | 一种指令缓存的优化方法、设备、存储介质及程序产品 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9417876B2 (en) | 2014-03-27 | 2016-08-16 | International Business Machines Corporation | Thread context restoration in a multithreading computer system |
US9594660B2 (en) | 2014-03-27 | 2017-03-14 | International Business Machines Corporation | Multithreading computer system and program product for executing a query instruction for idle time accumulation among cores |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6918033B1 (en) * | 1999-10-21 | 2005-07-12 | Samsung Electronics Co., Ltd. | Multi-level pattern history branch predictor using branch prediction accuracy history to mediate the predicted outcome |
CN1716183A (zh) * | 2004-06-30 | 2006-01-04 | 中国科学院计算技术研究所 | 一种应用于同时多线程处理器的取指控制装置及其方法 |
-
2012
- 2012-01-14 CN CN201210010895.8A patent/CN102566974B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6918033B1 (en) * | 1999-10-21 | 2005-07-12 | Samsung Electronics Co., Ltd. | Multi-level pattern history branch predictor using branch prediction accuracy history to mediate the predicted outcome |
CN1716183A (zh) * | 2004-06-30 | 2006-01-04 | 中国科学院计算技术研究所 | 一种应用于同时多线程处理器的取指控制装置及其方法 |
Non-Patent Citations (2)
Title |
---|
M.-C. CHANG等: "Branch prediction using both global and local branch history information", 《COMPUTERS AND DIGITAL TECHNIQUES,IEE PROCEEDINGS》 * |
孙彩霞等: "基于多个取指优先级的同时多线程处理器取指策略", 《电子学报》 * |
Cited By (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10489209B2 (en) | 2012-09-14 | 2019-11-26 | International Business Machines Corporation | Management of resources within a computing environment |
CN103677999A (zh) * | 2012-09-14 | 2014-03-26 | 国际商业机器公司 | 计算环境内的资源的管理 |
US9501323B2 (en) | 2012-09-14 | 2016-11-22 | International Business Machines Corporation | Management of resources within a computing environment |
US9864639B2 (en) | 2012-09-14 | 2018-01-09 | International Business Machines Corporation | Management of resources within a computing environment |
CN108089883B (zh) * | 2013-01-21 | 2021-10-01 | 美普思技术有限责任公司 | 基于推测度量将资源分配给线程 |
CN108089883A (zh) * | 2013-01-21 | 2018-05-29 | 想象力科技有限公司 | 基于推测度量将资源分配给线程 |
CN104699460B (zh) * | 2013-12-04 | 2017-11-14 | 美国亚德诺半导体公司 | 数字信号处理器、计算机可读存储介质和执行流水线多阶段循环的方法 |
CN104699460A (zh) * | 2013-12-04 | 2015-06-10 | 美国亚德诺半导体公司 | 线程偏差计数器 |
US9697005B2 (en) | 2013-12-04 | 2017-07-04 | Analog Devices, Inc. | Thread offset counter |
US10102004B2 (en) | 2014-03-27 | 2018-10-16 | International Business Machines Corporation | Hardware counters to track utilization in a multithreading computer system |
US9804847B2 (en) | 2014-03-27 | 2017-10-31 | International Business Machines Corporation | Thread context preservation in a multithreading computer system |
US9218185B2 (en) | 2014-03-27 | 2015-12-22 | International Business Machines Corporation | Multithreading capability information retrieval |
US9354883B2 (en) | 2014-03-27 | 2016-05-31 | International Business Machines Corporation | Dynamic enablement of multithreading |
US9921848B2 (en) | 2014-03-27 | 2018-03-20 | International Business Machines Corporation | Address expansion and contraction in a multithreading computer system |
US9921849B2 (en) | 2014-03-27 | 2018-03-20 | International Business Machines Corporation | Address expansion and contraction in a multithreading computer system |
US9804846B2 (en) | 2014-03-27 | 2017-10-31 | International Business Machines Corporation | Thread context preservation in a multithreading computer system |
US10095523B2 (en) | 2014-03-27 | 2018-10-09 | International Business Machines Corporation | Hardware counters to track utilization in a multithreading computer system |
CN103870249A (zh) * | 2014-04-01 | 2014-06-18 | 龙芯中科技术有限公司 | 指令地址获取方法和即时编译器 |
CN107810482A (zh) * | 2015-06-26 | 2018-03-16 | 微软技术许可有限责任公司 | 指令块到处理器指令窗口的批量分配 |
CN107810482B (zh) * | 2015-06-26 | 2021-10-22 | 微软技术许可有限责任公司 | 指令块到处理器指令窗口的批量分配 |
US11048517B2 (en) | 2015-06-26 | 2021-06-29 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
CN107688471B (zh) * | 2017-08-07 | 2021-06-08 | 北京中科睿芯科技集团有限公司 | 一种动态调整数据流架构的资源带宽的计算系统及其方法 |
CN107688471A (zh) * | 2017-08-07 | 2018-02-13 | 北京中科睿芯科技有限公司 | 一种动态调整数据流架构的资源带宽的计算系统及其方法 |
CN108319458A (zh) * | 2018-01-17 | 2018-07-24 | 南京航空航天大学 | 一种基于图形化卫式命令演算的多任务编译方法 |
CN108319458B (zh) * | 2018-01-17 | 2021-04-06 | 南京航空航天大学 | 一种基于图形化卫式命令演算的多任务编译方法 |
CN110462587A (zh) * | 2018-03-29 | 2019-11-15 | 深圳市大疆创新科技有限公司 | 分支预测的方法与装置 |
WO2019183877A1 (zh) * | 2018-03-29 | 2019-10-03 | 深圳市大疆创新科技有限公司 | 分支预测的方法与装置 |
US20200057641A1 (en) * | 2018-08-16 | 2020-02-20 | International Business Machines Corporation | Tagging target branch predictors with context with index modifiction and late stop fetch on tag mismatch |
US10740104B2 (en) * | 2018-08-16 | 2020-08-11 | International Business Machines Corporation | Tagging target branch predictors with context with index modification and late stop fetch on tag mismatch |
CN110688153A (zh) * | 2019-09-04 | 2020-01-14 | 深圳芯英科技有限公司 | 一种指令分支执行控制方法及相关设备、指令结构 |
CN110688153B (zh) * | 2019-09-04 | 2020-08-11 | 深圳芯英科技有限公司 | 一种指令分支执行控制方法及相关设备、指令结构 |
CN114138341A (zh) * | 2021-12-01 | 2022-03-04 | 海光信息技术股份有限公司 | 微指令缓存资源的调度方法、装置、程序产品以及芯片 |
CN117093272A (zh) * | 2023-10-07 | 2023-11-21 | 飞腾信息技术有限公司 | 指令发送方法及处理器 |
CN117093272B (zh) * | 2023-10-07 | 2024-01-16 | 飞腾信息技术有限公司 | 指令发送方法及处理器 |
CN118227285A (zh) * | 2024-03-07 | 2024-06-21 | 海光信息技术股份有限公司 | 资源分配方法、处理器和电子设备 |
CN118171612A (zh) * | 2024-05-14 | 2024-06-11 | 北京壁仞科技开发有限公司 | 一种指令缓存的优化方法、设备、存储介质及程序产品 |
CN118171612B (zh) * | 2024-05-14 | 2024-11-08 | 北京壁仞科技开发有限公司 | 一种指令缓存的优化方法、设备、存储介质及程序产品 |
Also Published As
Publication number | Publication date |
---|---|
CN102566974B (zh) | 2014-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102566974B (zh) | 基于同时多线程的取指控制方法 | |
CN101334766B (zh) | 一种并行微处理器及其实现方法 | |
US9582320B2 (en) | Computer systems and methods with resource transfer hint instruction | |
KR101594090B1 (ko) | 공유 메모리에 대한 액세스들의 동기화를 완화하기 위한 프로세서들, 방법들 및 시스템들 | |
US20150106819A1 (en) | Task scheduling method for priority-based real-time operating system in multicore environment | |
US9632790B2 (en) | Select logic for the instruction scheduler of a multi strand out-of-order processor based on delayed reconstructed program order | |
CN106406814A (zh) | 处理器和将架构指令转译成微指令的方法 | |
CN104899089A (zh) | 一种面向异构多核体系的任务调度方法 | |
CN101377733B (zh) | 最佳化微处理器执行x87浮点加法指令的装置及方法 | |
CN102135914B (zh) | 一种可自动调节参数的云计算系统负载预测方法 | |
US9069565B2 (en) | Processor and control method of processor | |
US20130312001A1 (en) | Task allocation optimization system, task allocation optimization method, and non-transitory computer readable medium storing task allocation optimization program | |
CN102239473A (zh) | 用于并行计算系统的基于能量的时间调度器 | |
KR101705211B1 (ko) | 분기 예측 테이블 스왑 명령(들)에 응답하여 분기 방향 히스토리(들)를 스왑하는 것, 및 관련 시스템들 및 방법들 | |
CN103677990A (zh) | 虚拟机实时任务的调度方法、装置和虚拟机 | |
US10083066B2 (en) | Processing data by using simultaneous multithreading | |
US8151097B2 (en) | Multi-threaded system with branch | |
EP3039544B1 (en) | Method and system for assigning a computational block of a software program to cores of a multi-processor system | |
US20190250919A1 (en) | Method for managing computation tasks on a functionally asymmetric multi-core processor | |
US11010170B2 (en) | Arithmetic processing apparatus which replaces values for future branch prediction upon wrong branch prediction | |
CN101488096B (zh) | 利用出入边关系的剖分信息构建超级块的方法 | |
KR102224844B1 (ko) | 선점 방식을 선택하는 방법 및 장치. | |
CN116795503A (zh) | 任务调度方法、任务调度装置、图形处理器及电子设备 | |
JP6166622B2 (ja) | 工程管理装置、工程管理方法 | |
US20210311708A1 (en) | Compiler sub expression directed acyclic graph (dag) remat for register pressure |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140326 Termination date: 20200114 |