This application provides a method for executing speculative multithreading and an on-chip multicore processor CMP, which includes a processor core, a cache controller and a cache. The method includes: the processor core receives a speculative multithreading program, which includes at least one speculative thread; and the processor core generates a speculative multithreading program based on the speculative multithreading program. As a first request message for the speculative thread to access the cache, the first request message includes the first tag, the first tag includes the speculative thread's information, and the cache controller accesses the cache according to the first request message, in which the cache includes the second tag and the second tag is used to record the latency of access. Thread information stored. The embodiment of this application can realize the isolation of intermediate data and secure data, and can accomplish a task by using both TLS mode and non-TLS mode, so as to realize the compatibility between speculative thread and non-speculative thread.
【技术实现步骤摘要】
执行推测线程的方法以及片上多核处理器
本申请涉及计算机领域,并且更具体地,涉及计算机领域中的执行推测多线程的方法以及片上多核处理器(ChipMultiprocessor,CMP)。
技术介绍
在未来低功耗高效能的CMP的设计中,无法通过提高频率来获得性能的提升,而是通过集成更多的低电压低功耗的核、通过并行度的提高来兼顾性能和功耗。但并行化能解决整体性能的问题,却无法解决单线程性能弱的问题。随着越来越多的核被集成到一个芯片上,一方面在实际运行的过程中会有一些核处于空闲的状态;另一方面,受功耗的限制集成到片上的单个核计算能力相对较弱,导致片上多核的单线程能力受到制约。现有技术中一个有效的方案是使用推测多线程技术(ThreadLevelSpeculation,TLS),利用片上的空闲资源加速单线程和串行程序的执行。现有技术中的一种对推测多线程机制进行支持的系统结构通过在层1缓存(L1Cache)和层2缓存(L2Cache)之间增加一个层1.5缓存(L1.5Cache)来保存推测线程执行过程中的推测数据,通过专门的推测总线进行推测数据共享的通道,并通过选择开关来控制数据是 ...
【技术保护点】
1.一种执行推测多线程的方法,其特征在于,所述方法由片上多核处理器CMP执行,所述CMP包括处理器核、缓存控制器和缓存,所述方法包括:所述处理器核接收推测多线程程序,所述推测多线程程序包括至少一个推测线程;所述处理器核根据所述推测多线程程序,生成用于所述推测线程访存所述缓存的第一请求消息,所述第一请求消息包括第一标签,所述第一标签包括所述推测线程的信息;所述缓存控制器根据所述第一请求消息对所述缓存进行访存操作,其中,所述缓存包括第二标签,所述第二标签用于记录访存所述缓存的线程的信息。
【技术特征摘要】
1.一种执行推测多线程的方法,其特征在于,所述方法由片上多核处理器CMP执行,所述CMP包括处理器核、缓存控制器和缓存,所述方法包括:所述处理器核接收推测多线程程序,所述推测多线程程序包括至少一个推测线程;所述处理器核根据所述推测多线程程序,生成用于所述推测线程访存所述缓存的第一请求消息,所述第一请求消息包括第一标签,所述第一标签包括所述推测线程的信息;所述缓存控制器根据所述第一请求消息对所述缓存进行访存操作,其中,所述缓存包括第二标签,所述第二标签用于记录访存所述缓存的线程的信息。2.根据权利要求1所述的方法,其特征在于,所述CMP包括处理器簇,所述处理器簇包括至少两个所述处理器核、所述缓存控制器和所述缓存,所述缓存包括TLS缓存、L2缓存和与所述至少一个所述处理器核一一对应的L1缓存。3.根据权利要求2所述的方法,其特征在于,所述缓存控制器根据所述第一请求消息对所述缓存进行访存操作,包括:若所述第一请求消息表示推测线程请求读所述缓存中的第一数据,则所述缓存控制器根据所述第一标签和所述第二标签,依次在所述处理器核的对应的L1缓存、所述处理器核所在的处理器簇中的其它处理器核的L1缓存和所述处理器簇中的第一TLS缓存中查询是否存在所述第一数据;若查询到所述第一数据,则所述处理器核停止查询并读取所述第一数据;若在所述L1缓存和所述第一TLS缓存中没有查询到所述第一数据,则将所述第一请求消息更新为非推测线程请求读缓存中的所述第一数据。4.根据权利要求2所述的方法,其特征在于,所述缓存控制器根据所述第一请求消息对所述缓存进行访存操作,包括:若所述第一请求消息表示推测线程请求向所述缓存写入第二数据,则所述缓存控制器将所述第二数据写入所述处理器核的L1缓存中,并根据所述第一标签更新所述第二标签。5.根据权利要求4所述的方法,其特征在于,所述缓存控制器将所述第二数据写入所述处理器核的L1缓存中,包括:若所述L1缓存中已经存满,则将从所述L1缓存中替换出来的数据写入到所述TLS缓存中。6.根据权利要求4或5所述的方法,其特征在于,所述方法还包括:确定所述第二数据是否与除所述推测线程之外的其它推测线程冲突,若发生冲突,则撤销并重新运行所述其它推测线程。7.根据权利要求2-6任一项所述的方法,其特征在于,所述缓存还包括TLS缓存联合缓冲,所述方法还包括:所述TLS缓存联合缓冲将至少两个所述L1缓存中存储的同一个地址的数据整合为第五数据,其中,所述第五数据为所述同一个地址中的距当前时间最近的数据;所述TLS缓存联合缓冲将所述第五数据存储至所述TLS缓存中;所述TLS缓存联合缓冲将至少两个所述L1缓存中的所述地址的缓存行设置为无效。8.根据权利要求2-7任一项所述的方法,其特征在于,所述缓存中还包括第一缓存状态目录,所述第一缓存状态目录用于记录所述L1缓存中的缓存块、所述TLS缓存中的缓存块和所述L2缓存中的缓存块的第一缓存状态,所述第一缓存状态包括所述缓存块被所述处理器簇修改、独占、共享或无效。9.根据权利要求2-8任一项所述的方法,其特征在于,所述缓存中还包括第二缓存状态目录,所述第二缓存状态目录用于记录所述L1缓存中的缓存块、所述TLS缓存中的缓存块和所述L2缓存中的缓存块的第二缓存状态,所述第二缓存状态包括所述缓存块被所述处理器簇中的每个处理器核修改、独占、共享或无效。10.根据权利要求1-9任一项所述的方法,其特征在于,所述处理器核根据所述推测多线程程序,生成用于所述推测线程访存所述缓存的第一请求消息,包括:所述处理器核根据所述推测多线程程序,更新任务表,所述任务表用于记录所述至少一个推测线程的信息;所述处理器根据所述任务表,生成所述第一请求消息。11.根据权利要求10所述的方法,其特征在于,所述任务表包括所述推测线程的线程号、状态信息和上下文信息,其中,所述线程号用于标识所述推测线程,所述状态信息用于表示所述推测线程的运行状态,所述上下文信息包括所述推测线程的程序计数器、栈指针和指向下一个空闲任务表项的指针。12.根据权利要求1-11中任一项所述的方法,其特征在于,所述第一标签包括所述推测线程的线程号和状态信息,所述第二标签包括访存所述缓存的线程的线程号和状态信息,其中,所述线程号用于标识线程,所述状态信息用于表示线程的运行状态。13.根据权利要求1-12任一项所述的方法,其特征在于,所述缓存中还包括线程表,所述线程表用于记录所述缓存中关联的推测线程和/或非推测线程的信息,其中,所述线程表包括线程的线程号、状态信息、缓存行和任务表指针,其中,所述线程号用于标识所述线程,所述状态信息用于指示线程的运行状态,所述缓存行包括在所述缓存中属于所述线程的缓存行。14.根据权利要求11-13任一项所述的方法,其...
【专利技术属性】
技术研发人员:李艳华,宋昆鹏,王海彬,
申请(专利权)人:华为技术有限公司,
类型:发明
国别省市:广东,44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。