带有事务功能以及报告事务操作的日志记录电路的处理器的制造方法

文档序号:8430497阅读:345来源:国知局
带有事务功能以及报告事务操作的日志记录电路的处理器的制造方法
【技术领域】
[0001]本发明的领域涉及计算科学,更具体而言,涉及带有事务功能以及报告事务操作的日志记录电路的处理器。
【背景技术】
[0002]多核处理器和/或处理核内的多线程指令执行流水线导致软件程序员开发多线程软件程序(而不是单个线程软件程序)。由于并行地执行的不同的进程,多线程软件必然复杂。然而,由于按其执行的方式的“非确定性”的方面,多线程软件更难以调试。具体而言,多线程软件程序可以跨两个不同的运行时以不同的方式执行,即使程序从相同的输入状态开始。
[0003]由于这些原因,使用“日志记录”来记录多线程软件程序的执行中的某些紧要关头。处理器目前设计有日志记录电路,日志记录电路观察处理器的软件的执行,并记录电路被设计为检测的某些关键事件。如果软件程序崩溃,则分析日志记录以研宄导致崩溃的程序的执行。
[0004]附图简述
[0005]本发明是通过示例说明的,而不仅局限于各个附图的图示,在附图中,类似的参考标号表示类似的元件,其中:
[0006]图1 (现有技术)示出了处理器;
[0007]图2示出了改善的处理器;
[0008]图3a示出了可以由所述处理器执行的第一方法;
[0009]图3b示出了可以由所述处理器执行的第二方法;
[0010]图3c示出了可以由所述处理器执行的第三方法;
[0011]图3d示出了可以由所述处理器执行的第四方法;
[0012]图4示出了分组结构;
[0013]图5示出计算系统。
[0014]详细描述
[0015]图1示出了在半导体芯片上实现的现有技术处理器100,具有日志记录电路101_1到101_N,用于跟踪多线程程序流的特定的方面,并且从外部记录来自处理器100的这样的方面,以便以后研宄并理解程序的执行。在一种实现中,处理器日志记录电路101_1到101_N的每一个实例被设计成监视其本地处理核的每一个线程(当其在“块”中执行时),其中,某些,特定的被监视的事件结束块。通过将每一个线程的块序列存储到诸如系统存储器103之类的存储位置,可以详尽地分析或许跨所有核105_1到105_X执行线程的较大的多线程程序的多线程执行。
[0016]给日志记录电路的每一个实例指定了系统存储器103要在其中存储其相应的块的特定的区域。给由特定核执行的每一个硬件线程分配了分配给日志记录电路的系统存储器区域内的其自己的相应的空间。这里,如在本领域内已知的,单指令执行流水线可以并行地执行多个硬件线程(例如,8个硬件线程)。此外,每一个处理核都可以包含一个以上的指令执行流水线(例如,图1示出了每一个核具有两个指令执行流水线106)。
[0017]硬件线程被理解为在指令执行流水线内被积极地执行的线程。指令执行流水线通常被设计为并行地执行最大/有限数量的硬件线程,其中,最大/极限是由流水线的硬件设计设置的。软件线程被理解为程序代码指令的单个流。由一个处理器支持的软件线程的数量可以大大地超出硬件线程的数量。当线程的状态/上下文信息被切换到指令执行流水线时,软件线程也被认为是硬件线程。当其状态/上下文从指令执行流水线切换走时,软件线程丧失其硬件线程状态。在一个实施例中,每个硬件线程,有日志记录电路的一个实例(为简明起见,图1只示出了每个核,一个日志记录电路)。
[0018]在一种实现中,日志记录电路实例(例如,实例101_1)被设计成在下列条件中的任何一个条件下结束线程的块:1)存储器竞争状况;2)线程从有效状态切换到休眠状态;3)转换后援缓冲器(TLB)失效;4)线程过渡到超出为其配置的特权级别外面(例如,响应于中断或异常,线程从“用户”特权级别过渡到“内核”特权级别);5)线程试图访问不可缓存的存储器区域。这里,上文所描述的事件中的任何一个都对多线程程序的执行的非确定的方式有贡献。
[0019]图1还示出了特定线程的块的分组的现有技术结构的插图120。如在插图120中观察到的,分组包括:1)分组格式标识符(FMT) ;2)块的结束原因(CTR) ;3)差分时间戳(此分组和前一块的分组之间的时间)(TSD) ;4)在线程的前一块的结束和该块的结束之间由该块执行的指令的数量(CS) ;5)对于该块的未完成的写入的数量(即,退役但还没有全局可见的(提交的)存储操作的数量)(RSW) ;6)最老的还没有退役的宏指令的退役的加载/存储操作的数量(NTB)。在一个实施例中,由软件层添加核ID和线程ID,它们两者都可以基于块被存储在系统存储器103中的位置来确定。
[0020]这里,每一个日志记录电路实例101_1到101_N都耦合到处理器的其相应的处理核105_1到105_N中的“挂钩”104_1到104_N(例如,在执行各种软件线程的相应的指令流的指令执行流水线106_1到106_N附近),“挂钩”104_1到104_N被设计为检测被监视的块结束事件。在特定线程的执行过程中,各种挂钩检测线程的块结束事件,并将事件报告给日志记录电路101。作为响应,日志记录电路101根据插图120的结构,形成分组,并导致分组被写入到外部存储器103。
[0021]每一个核内的这些挂钩中的一个耦合到存储器竞争检测电路107_1到107_N。如在图1中观察到的,对于在核的LI缓存108_1到108_N附近耦合的每一个处理核,有一个存储器竞争检测电路。每一个存储器竞争电路107_1到107_N都被设计成在其相关联的LI缓存中检测存储器竞争。
[0022]当两个不同的软件进程(例如,两个不同的线程)试图访问同一个存储器位置时,发生存储器竞争。这里,每一个线程都记住当前块的所有存储器访问(地址)。当检测到与当前块记住的地址之一冲突时(不管此访问在过去有多长),结束一个块,创建新的块。
[0023]值得注意的是,当同一核上两个不同的线程试图访问相同存储器位置或当两个不同的核上的两个不同的线程试图访问相同存储器位置时,会导致竞争。在后一种情况下,第一核将监听第二核的LI缓存。这里,互连网络109被用来传输这样的监听。
[0024]每一个存储器竞争检测电路107_1到107_N都跟踪最近的读取操作和最近的写入操作(被称为“读取集”和“写入集”),并将它们与传入的读取请求和传入的写入请求进行比较。无论何时存储器竞争电路检测到指向相同存储器地址的并行“写后读”(RAW)、“写后写”(WAW)或“读后写”(WAR)操作,它都将检测到存储器竞争状况。在各实施例中,相互冲突的地址的身份可以可任选地被包括在被记录了存储器竞争的块中(取决于希望较大的还是较小的块)。
[0025]图2示出了对图1的现有技术处理器的改善。这里,在一个实施例中,图2的改善的处理器假设上文参考图1所描述的全部功能加上紧邻下面所描述的额外的改善。
[0026]如在图2中观察到的,处理器的单个核205_1到205_N包括执行“
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1