微处理器及其除错方法

文档序号:6356100阅读:247来源:国知局
专利名称:微处理器及其除错方法
技术领域
本发明涉及一种多核心微处理器,特别是涉及一种监控多核心微处理器的指令执 行及其除错方法。
背景技术
目前的微处理器非常复杂,且对其进行除错是个非常困难的工作。微处理器的研 发人员通常使用一软件功能模块(software functional model)来模拟微处理器的架构行 为,以作为除错工具。相较于Verilog模拟器等其他软件模块,软件功能模块会更有用,因 为它更可迅速地模拟大量指令的执行。软件功能模块是根据系统架构来的定义每次执行单 一指令,因此可有效地对单核心处理器(single core processor)进行除错。软件功能模块也可用来对多核心处理器(multi-core processor)进行除错,软 件功能模块各别不同的范例会在每核心上被用来模拟指令执行,只要各核心彼此不互相影 响,就可模拟的很好。然而,多核心处理器常产生一些错误,而这些错误通常只会出现在多 核心之间的存储器存取时,或当各核心彼此共用同一个存储器地址时,如共享一软件信号 (software semaphore)时。各核心实质上会在不同时间存取共用的存储器地址,例如,第一 核心读取一信号(semaphore)并等待第二核心来写入该信号。除非软件功能模块的两范例 执行指令时,非常近似于实际处理器在发生错误时所执行指令的顺序,否则软件功能模块 就无法有效地对多核心处理器进行除错。因此亟需提出一种控制被模拟的各核心彼此间执 行指令的顺序,其近似于后芯片(post-silicon)的多核心处理器的顺序。

发明内容
本发明揭示一微处理器的除错方法,其中微处理器具有多个核心。所述的方 法包括使微处理器去执行指令的一实际执行(actual execution),并从微处理器获得 一心跳信息,其明确指出各核心彼此间执行指令的一实际执行顺序(actual execution sequence)。所述的方法也包括,命令一软件功能模块的多个相关范例根据实际执行顺序来 执行指令,以产生指令执行的模拟结果。所述的方法还包括比较模拟结果与指令执行的实 际结果,以判断两者是否符合。本发明复揭露一种微处理器,其包括多个核心,每一个核心会输出一指令执行指 示(instruction execution indicator),用来指示各核心在每一时钟期间,所执行的指令 数目。微处理器还包括一心跳产生器(heartbeat generator),其从每个核心接收指令执 行指示。心跳产生器用来对每一个在外部总线上的处理核心产生一心跳指示(heartbeat indicator),以回应指令执行指示,而心跳指示则指出了每一核心在外部总线的每个时钟 周期中,所执行的指令数量。本发明又揭示一微处理器,其包括多个核心,每一个核心会产生一指令执行指示 (instruction execution indicator),用来指示各核心在每一时钟周期期间,所执行的指 令数目。微处理器又包括一储存阵列(memory array),其储存在一段时钟周期期间中,各核心所产生的指令执行指示。微处理器还包括一总线接口单元(bus interface unit),其耦 接于微处理器外部的一总线。总线接口单元用来将储存于储存阵列中的指令执行指示,写 入至微处理器外部的一存储器中。


图1为本发明所揭示的具有双核心处理器的计算机系统的功能方块图。图2为本发明所揭示的软件功能模块模拟环境的功能方块图。图3为本发明所揭示的图2的操作模拟环境的方法流程图。图4为本发明所揭示的双核心处理器的一具体实施例的功能方块图。图5为本发明所揭示的依据图4实施例的速率控制器的操作例示表。图6为本发明所揭示的双核心处理器的另一具体实施例的功能方块图。图7为本发明所揭示的依据图6实施例的速率控制器的操作例示表。图8为本发明所揭示的双核心处理器的又一具体实施例的功能方块图。图9为本发明所揭示的依据图8实施例的速率控制器的操作例示表。图10为本发明所揭示的双核心处理器的再一具体实施例的功能方块图。图11为本发明所揭示的依据图10实施例的速率控制器的操作例示表。图12为本发明所揭示的双核心处理器的更一具体实施例的功能方块图。图13为本发明所揭示的依据图12实施例的速率控制器的操作例示表。图14为本发明所揭示的图2的操作模拟环境的方法流程图。图15为本发明所揭示的双核心处理器的更一具体实施例的功能方块图。图16为本发明所揭示的依据图15实施例的速率控制器的操作例示表。附近图符号说明100102103104A104B105,105A,105B106,106A,106B108112114116118122124202204206A
5
计算机系统 双核心处理器 心跳产生器 第一核心 第二核心 指令执行指示 心跳讯号 逻辑分析器 存储器 处理器总线 数据夹
处理器总线传输信息 心跳讯号信息 软件功能模块模拟环境 模拟初始状态产生器 速率控制器
第一核心的软件功能模块范例
206B第二核心的软件功能模块范例
208实际结果产生器
226比较单元
212模拟初始存储器映像
214A第一核心的模拟初始状态
214B第二核心的模拟初始状态
222实际结果存储器映像
224A第一核心的实际结果状态
224B第二核心的实际结果状态
232模拟结果存储器映像
234A第一核心的模拟结果状态
234B第二核心的模拟结果状态
218A,218B命令
228取否指示器
1212除错存储器阵列
1214L2快取存储器
1216总线接口单元
S302-S312步骤
S1402-S1418步骤
具体实施例方式本发明实施例中提到的多核心处理器,用来产生心跳讯号(heartbeat signal), 以指示各核心彼此间的执行指令速率。处理器的研发人员可如同处理器运作般获得心跳 讯号,并使用得到的心跳信息,来动态地控制每一核心的软件功能模块对每一核心所的执 行指令的速率。藉此,心跳讯号提供明显指标给软件功能模块,使其得以窥见所需的多核 心处理器的内部操作,以控制被模拟的各核心彼此间执行指令的顺序,此顺序会近似于 实际出现错误的多核心处理器的执行指令顺序。在某些实施例中,处理器会在系统总线 (architectural processor bus)上提供心跳讯号信息,但这样会影响在多核心处理器上 执行程序的时序间,而导致当致能(enable)心跳时,错过一些错误。因此,在本发明实施例 中,处理器是非侵入性地在外部边带总线(external sideband bus)上提供心跳讯号,而不 是在系统总线上提供心跳讯号。请参考图1,其为本发明所揭示的具有双核心处理器102的计算机系统100的功 能方块图,双核心处理器(dual-core processor) 102会产生心跳讯号106。计算机系统 (computing system) 100包括一双核心处理器102,其包括两个核心,如图中的第一核心 104A以及一第二核心104B,两者可合并以核心104统称。在本发明实施例中,双核心处理器 102的每一核心104是微处理器核心,其符合威盛电子股份有限公司(VIA Technologies, Inc)所设计的威盛凌珑处理器架构(VIA Nano architecture) 0虽然本实施例是以双核 心处理器举例,但其他利用心跳讯号106提供信息给多个核心的处理器,亦为本发明所保 护的范围。
双核心处理器102还包括一心跳产生器(heartbeat generator) 103,其耦接于每 一个核心104。具体来说,第一核心104A产生一指令执行指示(instruction execution indicator) 105A,用来指示在一时钟周期中所执行的指令数目;第二核心104B产生一指令 执行指示(instruction execution indicator) 105B,用来指示在一时钟周期中所执行的 指令数目,心跳产生器103则产生心跳讯号106来指示核心104已执行的指令,以回应指令 执行指示105。在本发明实施例中,核心104执行指令的假设执行,且指令执行指示105告 知心跳产生器103指令已被完成,意即,不同于假设执行而已,其仍会更新核心104的系统 状态。计算机系统100还包括一存储器112,其耦接于双核心处理器102,双核心处理器 102的每一核心104可编写成周期性地停止执行使用者程序指令,并储存(dump)目前状态 至存储器112的一预定地址,以及读出(flush)本身快取存储器的内容至存储器112,在此 视为一检查点(checkpoint)。核心104的状态包括其内部暂存器的状态,在此视为一检查 点状态(checkpoint state)。更具体地说,每一核心104可藉由研发人员编写成持续执行 一预定数量的指令(如100,000个指令)后,便进行停止执行指令、储存检查点状态、读出 快取存储器、重新执行指令等动作,直到下次累积预定数量指令,再重复上述动作,以此类 推。计算机系统100又包括一逻辑分析器(logic analyzer) 108,在本发明实施例中, 逻辑分析器108包括双核心处理器102里其中一个核心104。逻辑分析器108监控处理器 总线114以及取得上面的传输(transaction),包括写入检查点状态至存储器112以及读出 快取存储器等数据传输。逻辑分析器108也监控并取得心跳讯号106,其储存所撷取到的信 息至一数据夹(file) 116,如一磁盘(disk drive)中,而数据夹116包括撷取到的处理器总 线传输信息118以及心跳讯号信息122。在本发明实施例中,心跳讯号106会在一边带总线 (Sideband Bus)上被提供给双核心处理器102,举例来说,边带总线为JTAG总线,其可被双 核心处理器102芯片内部的一分散服务处理器(s印arate service processor)使用。计算机系统100又包括一软件功能模块模拟环境(software functional model simulation environment) 124,其包括一个或多个模拟计算机系统,其有别于包含微处理 器102的计算机系统100。软件功能模块模拟环境IM使用撷取到并储存于数据夹116中 的处理器总线传输信息118以及心跳讯号信息122,来模拟双核心处理器102的操作情形, 以下会有详细说明。请再参考图2,其为本发明所揭示的软件功能模块模拟环境124的功能方块 图。软件功能模块模拟环境1 包括一模拟初始状态产生器(simulated initial state generator) 202、一速率控制器(rate contro 11 er) 204、一第一核心的软件功能模块范 例206A、一第二核心的软件功能模块范例206B、一实际结果产生器208、以及一比较单元 (comparison function) 2沈。虽然这些元件都是由软件实作出的,但部份或全部元件亦可 由硬件来实作,以增加执行速度。模拟初始状态产生器202接收撷取到的处理器总线信息118,以用来产生一模拟 初始存储器映像(simulated initial memory image) 212、一第一核心的模拟初始状态 214A、以及一第二核心的模拟初始状态214B。随后,模拟初始存储器映像212被复制为一 模拟结果存储器映像(simulated result memory image) 232,且第一核心的模拟初始状态214A到被复制为一第一核心的模拟结果状态234A、而第二核心的模拟初始状态214B则 被复制为到一第二核心的模拟结果状态234B。为方便说明,假设每一核心104都已储存一 第一检查点状态(包括上述的内部暂存器的状态)、并已读出(flush)本身快取存储器的 内容、重新执行预定数量指令后、又储存一第二检查点及读出快取存储器的内容。此外,更 假设处理器总线传输信息118包括了第一与第二检查点的总线传输以及两者之间的所有 传输,这些传输藉由执行预定数量指令后而产生。请见美国临时专利申请案第61Λ97,505 号,其于2010年1月22日申请,当中描述两核心104之间的检查点进行同步的方法。根据本发明实施例,模拟初始状态产生器202藉由以下方法来产生模拟初始存储 器映像212 (1)检测在双核心处理器102中的第一检查点以及第二检查点之间,读取存储器 112中一地址的传输。(2)判断上述的读取传输是否为第一、第二检查点之间,第一次对这个地址作读取 的传输。(3)如果是,则对此传输产生一存储器地址记录(memory location record),其包 括存储器地址以及读取的数据值。藉由上述方法,模拟初始状态产生器202便产生少量的 模拟初始存储器映像212。然而,少量的存储器映像已能满足软件功能模块范例206需求, 因为在第一、第二检查点之间,软件功能模块范例206只需要读取之前产生的存储器地址, 若否,即表示在实际的双核心处理器102上有错误产生。模拟初始状态产生器202可直接从撷取于处理器总线传输信息118的第一检查点 状态,以产生第一核心的模拟初始状态214A。在本发明实施例中,如上所述,在每个检查点 上,每个核心104根据一预定格式来分别写入自身状态信息至存储器112中的一预定地址, 其使得模拟初始状态产生器202能在处理器总线传输信息118的内部找到第一核心104A 的第一检查点状态。同样地,模拟初始状态产生器202亦直接从撷取于处理器总线传输信 息118的第一检查点状态,来产生第二核心的模拟初始状态214B。实际结果产生器208接收图1中的处理器总线传输信息118,用以产生一第一核心 的实际结果状态224A、一第二核心的实际结果状态224B以及一实际结果存储器映像222。 实际结果产生器208直接从撷取于处理器总线传输信息118的第二检查点状态,来产生第 一核心的实际结果状态224A。根据一在本发明实施例中,如上所述,在每个检查点上,每个 核心104根据一预定格式来分别写入自身检查点状态至存储器112中一预定地址,其致能 使得实际结果产生器208来发现能在处理器总线传输信息118的内部的找到第一核心104A 的第二检查点状态。同样地,实际结果产生器208亦直接从撷取于处理器总线传输信息118 的第二检查点状态,来产生第二核心的实际结果状态224B。比较单元2 将第一核心的实 际结果状态224A与一第一核心的模拟结果状态234A进行比较,并将第二核心的实际结果 状态224B与一第二核心的模拟结果状态234B进行比较的情形,将在后面做更进一步的讨 论。在本发明实施例中,实际结果产生器208藉由以下方法来产生实际结果存储器映 像 222 (1)检测在双核心处理器102中的第一检查点以及第二检查点之间,写入存储器 112中一地址的传输,所述传输包括每个核心104在第二检查点将自身快取存储器内容写
8入至存储器112中。(2)判断上述写入传输是否为第一、第二检查点之间,最后一次对这个地址做写入 传输。(3)如果是,则对此传输产生一存储器地址记录(memory location record),其包 括存储器地址以及写入的数据值。藉由上述方法,实际结果产生器208便产生少量的实际 结果存储器映像222。然而,少量的存储器映像已能满足软件功能模块范例206需求,因为 在第一、第二检查点之间,软件功能模块范例206只需要写入之前产生的存储器地址。若 否,则表示在实际的双核心处理器102上有错误产生。至于比较单元2 将会拿实际结果 存储器映像222与一模拟结果存储器映像232进行比较的情形,将在后面做更进一步的讨 论。速率控制器204接收图1中所撷取到的心跳讯号信息122,用以产生命令218A至 第一核心的软件功能模块范例206A,以及产生命令218B至第二核心的软件功能模块范例 206B。命令218A动态控制软件功能模块范例206彼此间执行指令的速率。在本发明实施例 中,每一命令218控制软件功能模块范例执行N个指令,其中N是定义于命令中。在另一实 施例中,软件功能模块范例206为多线程(multi-threaded)且通过诸如信号(semaphore) 来相互通讯。在本发明实施例中,命令会控制一个核心104的软件功能模块范例206去执 行X个指令,直到另一核心104的软件功能模块范例206执行Y个指令后才停止。接下来 的图示将详细说明速率控制器204如何使用心跳讯号信息122来发出命令218,以动态地控 制软件功能模块范例206彼此间执行指令的速率。每个软件功能模块范例206模拟了核心104的系统行为。第一核心的软件功能模 块范例206A存取(read/write)第一核心的模拟结果状态234A,而第二核心的软件功能模 块范例206B存取(read/write)第二核心的模拟结果状态234B。此外,每个软件功能模块 范例206也会在执行存储器存取指令时,依据速率控制器204的命令来读取且/或写入模 拟结果存储器映像232。特别是,由第一核心的软件功能模块范例206A写入数据至模拟结 果存储器映像232时,第二核心的软件功能模块范例206B会知道,反之亦然,如此便分别影 响了软件功能模块范例206的模拟结果状态234。每个软件功能模块范例206执行完预定 数量(例如100,000个)指令后,被复制到第一核心的模拟结果状态234A的第一核心的模 拟初始状态214A,将会被更新变成真正的第一核心的模拟结果状态234A,且被复制到第二 核心的模拟结果状态234B的第二核心的模拟初始状态214B,也将会被更新变成真正的第 二核心的模拟结果状态234B。比较单元2 将第一核心的模拟结果状态234A与第一核心 的实际结果状态224A进行比较,并将第二核心的模拟结果状态234B与第二核心的实际结 果状态224B进行比较,以判断真正的双核心处理器102是否在第一及第二检查点之间出现 了错误,而比较结果则由取否指示器(pass/fail indicator) 2 所指出。此外,每个软件 功能模块范例206执行完预定数量(例如100,000个)指令后,被复制到模拟结果存储器 映像232的模拟初始存储器映像212的值,将会被更新而变成真正的模拟结果存储器映像 232。比较单元2 将模拟结果存储器映像232与实际结果存储器映像222进行比较,以判 断真正的双核心处理器102是否在第一及第二检查点之间出现了错误,比较结果则由取/ 否指示器所指出。因此,经由使用速率控制器204作中介的优势,心跳讯号信息122可用来动态地控制每个软件功能模块范例206执行指令的速率。也就是说,速率控制器204可控制软件功 能模块范例206彼此间执行指令的顺序,如此而指令可按照核心104存取存储器的适当顺 序来定适当的来执行顺序,于是能以精确地从各核心104与存储器112的实际初始状态来 模拟实际的双核心处理器102的运作行为,此即比较单元2 可将实际双核心处理器102 的运作行为与其模拟的运作行为进行比较的原因。请参考图3,其为本发明所揭示的图2的操作模拟环境124的方法流程图。如图3 所示,软件功能模块模拟环境1 首先根据图14中的步骤S1406,来产生一模拟结果存储器 映像232以及模拟结果状态234,其会分别与实际结果存储器映像222以及进行实际结果状 态2M进行比较(步骤S1408)。流程开始于步骤S302。在步骤S302中,速率控制器204从数据夹116接收心跳讯号信息122。接着流程 前往步骤S304。步骤S304中,在心跳讯号信息122所指出的心跳讯号106的下一个时钟周期中, 速率控制器204检查每个核心104的心跳讯号106的值。心跳讯号106的值会于下列各实 施例与图示中再作说明。接着流程前往步骤S306。在步骤S306中,速率控制器204判断核心N (第一核心104A或第二核心104B)是 否产生心跳。如果是,则执行步骤S308 ;否则回到步骤304去检测下一个时钟周期。在步骤S308中,速率控制器204发出命令218以驱使核心N的软件功能模块范例 206根据所判断出的心跳信息来执行一个或多个指令,这部份后面会再详述。接着流程前往 步骤S312。接着,步骤S312中,核心N的软件功能模块范例206执行下一指令或与模拟结果 存储器映像232及模拟结果状态234相关的指令。如果是执行一存储器读取指令,则核心 N的软件功能模块范例206将读取模拟结果存储器映像232。如果是执行一存储器写入指 令,则软件功能模块范例206会对核心N更新模拟结果存储器映像232。之后又回到步骤 S304继续检查下一时钟周期。以下将说明指令执行指示105、心跳产生器103、心跳讯号106、及其被速率控制器 204所使用的各种实施例。请参考图4,其为本发明所揭示的双核心处理器的一具体实施例的功能方块图。在 图4、图5中,核心104与心跳讯号106的时钟速率相同。此外,核心104在每一核心时钟 周期可执行完一个指令。如图所示,每个核心104的指令执行指示105都是一个比特,若核 心104在核心时钟周期内完成一个指令时,则该比特为真(true),否则为假(false)。同样 地,心跳产生器103产生一比特的心跳讯号106A,若第一核心104A有在核心时钟周期内完 成一个指令时,则该比特为真,否则为假;且心跳产生器103产生一比特的心跳讯号106B, 若第二核心104B有在核心时钟周期内完成一个指令时,则该比特为真,否则为假。然而,须 注意在指令执行指示105及其相关心跳讯号106产生时可能会有延迟时间。在实施例中, 由于核心104和心跳讯号106会根据不同的时钟来源运作,因此心跳产生器103包括同步 逻辑电路,用以同步指令执行指示105及心跳讯号106。请参考图5,其揭示在图4实施例中,速率控制器204的操作例示表。图表中包括 六个时钟周期,标示为0-5,其对应于速率控制器204在图3步骤S302中,所收到的心跳讯 号信息122中的六个时钟。速率控制器204从心跳讯号信息122中收到的第一核心104A
10的心跳讯号106A以及第二核心104B的心跳讯号106B,亦如图所示。此外,在每个时钟周期 中,根据图3中的步骤S306的判断,图表标示了速率控制器204在所对应的模拟时钟周期 期间,是否控制第一核心的软件功能模块范例206A去执行指令,以及是否控制第二核心的 软件功能模块范例206B去执行指令。在本例示中,第一核心106A在时钟1,3-5的心跳讯 号106A为真,因此速率控制器204在模拟的时钟1,3-5期间,将命令第一核心的软件功能 模块范例206A执行指令。另一方面,第二核心106B在时钟0-2,4的心跳讯号106B为真, 因此速率控制器204在模拟的时钟0-2,4期间,将命令第二核心的软件功能模块范例206B 执行指令。请再参考图6,其为本发明所揭示的双核心处理器另一实施例的功能方块图。图 6、图7相似于图4、图5,核心104与心跳讯号106的时钟速率相同。然而,在本实施例中, 核心104在每一核心时钟周期可执行完多个指令,例如三个,亦可为其他数量,不以所揭示 的为限。如图所示,每个核心104的指令执行指示105都是两个比特,用来指出核心104在 一个核心时钟周期内执行完的指令数量。同样地,心跳产生器103产生两比特的心跳讯号 106A,用来指出第一核心104A在一个核心时钟周期内所执行完的指令数量,并产生两比特 的心跳讯号106B,用来指出第二核心104B在一个核心时钟周期内执行完的指令数量。请参考图7,其为本发明所揭示的依据图6实施例的速率控制器的操作例示表,其 与图5的图表相似。然而,如图所示,在每个时钟周期中,速率控制器204从心跳讯号信息 122中收到的第一核心104A的心跳讯号106A的数值会包含0_3,而不是0 (假)或1 (真)。 同样地,在每个时钟周期中,根据图3中的步骤S306的判断,图表标示了速率控制器204在 所对应的模拟时钟周期期间,是否根据图3中的步骤S308,会控制第一核心的软件功能模 块范例206A去执行指令(如果是,会标示有多少指令被执行)、以及是否控制第二核心的软 件功能模块范例206B去执行指令(如果是,会标示有多少指令被执行)。本例示中,第一 核心104A在时钟0,2的心跳讯号106A是0,在时钟4时是1,在时钟3时是2,以及在时钟 1,5时是3,因此,速率控制器204将命令第一核心的软件功能模块范例206A在模拟的时钟 0,2期间,执行0个指令;在模拟的时钟4期间,执行1个指令;在模拟的时钟3期间,执行 2个指令;以及在模拟的时钟1,5期间,执行3个指令。另一方面,第二核心104B在时钟3, 5的心跳讯号106B是0,在时钟0,4时是1,在时钟1,2时是2,而没有任一时钟的心跳讯号 106B为3,因此,速率控制器204命令第二核心的软件功能模块范例206B在模拟的时钟3, 5期间,执行0个指令;在模拟的时钟0,4期间,执行1个指令;在模拟的时钟1,2期间,执 行2个指令;而不会有任一时钟执行3个指令。请参考图8,其为本发明所揭示的双核心处理器的又一具体实施例的功能方块图。 图8、图9相似于图6、图7,每个核心104在每一核心时钟周期可完成多个指令。然而,在本 实施例中,核心104的时钟速率是心跳讯号106的时钟速率的好几倍,例如十倍,亦可为其 他数量,不以所揭示的为限。此外,每个核心104的指令执行指示105都是一个比特,当核 心104完成一预订数量指令,则该比特为真(true),否则为假(false)。在实施例中,所述 的预订数量为32个,但不以所揭示的为限。具体来说,预订数量至少要与时钟比率(clock ratio)以及每一核心104可于一时钟周期中完成的最大数量指令的积一样大。一实施例 中,核心104的完成单元(retire unit)包括一计数器(counter),用来计数每时钟周期中 所完成的指令数量,而指令执行指示105是计数器的有效比特(effectively bit)M(M =log2N),其中N是时钟比率以及核心104可于一时钟周期中完成的最大数量指令的积。同 样地,心跳产生器103依据指令执行指示105A产生一比特的心跳讯号106A,以及依据指令 执行指示105B产生一比特的心跳讯号106B。请参考图9,其为本发明所揭示的依据图8实施例的操作速率控制器的操作例示 表。本实施例的图表与图5相似,但须注意图5和图7中,因为核心104的时钟速率与心跳 讯号106的时钟速率是一样的,每时钟周期的心跳讯号信息122指出在相对应的核心时钟 周期中完成一或多个指令,因此,图中的核心和心跳讯号106的时钟周期是相互对应的(时 钟0-5)。然而,在图9中,每时钟周期的心跳讯号信息122是指出在多个时钟周期中所完 成的指令数量,因此,图中所示的时钟周期仅与心跳讯号106相对应。此外,在每个时钟周 期中,根据图3中的步骤S306的判断,图表指出了速率控制器204在所对应的模拟时钟周 期期间,是否如图3的步骤S308所述,是控制通过命令218A指示第一核心的软件功能模块 范例206A去执行32个指令,以及是否控制通过命令218B指示第二核心的软件功能模块范 例206B去执行32个指令。本例示中,第一核心106A在时钟1,5的心跳讯号106A为真, 因此,在心跳讯号106的时钟1,5时会模拟出32个时钟,速率控制器204便在模拟出的32 个时钟期间,通过命令218A指示第一核心的软件功能模块范例206A执行32个指令。另一 方面,由于第二核心106B在时钟0,2,4的心跳讯号106B为真,因此,在心跳讯号106的时 钟0,2,4时会模拟出32个时钟,而速率控制器204便在模拟出的32个时钟期间,通过命令 218B指示第一核心的软件功能模块范例206B执行32个指令。请参考图10,其为本发明所揭示的双核心处理器的再一具体实施例的功能方块 图。图10、图11相似于图8、图9,核心104在每一核心时钟周期可完成多个指令,且当核 心104完成一预订数量指令(如32个),则一比特的心跳讯号106为真,否则指令执行指示 105为假(false)。然而,本实施例中与图6相似,每个指令执行指示105是两比特,用来指 出在每时钟周期中,核心104完成的指令数量。本实施例中,一旦核心104完成预定数量的 指令,心跳产生器103便在心跳讯号106上产生一真值。在实施例中,心跳产生器103包括 一计数器(counter),用来计数每时钟周期中已完成的指令数量,而心跳讯号106是计数器 的有效比特M (M= log2N)。请参考图11,其为本发明所揭示的依据图10实施例的速率控制器的操作例示表。 本实施例图表与图9相似,所接收到的心跳讯号信息122、图示意思也相同,在此就不予赘 述。请参考图12,其为本发明所揭示的双核心处理器的更一具体实施例的功能方块 图。图12、图13相似于图10、图11,核心104在每一核心时钟周期可完成多个指令,且核心 104的时钟速率是心跳讯号106的时钟速率的好几倍。每个指令执行指示105是两比特, 用来指出在每时钟周期中,核心104所完成的指令数量。然而,本实施例还包括一除错存储 器阵列(debug memory array) 1212,心跳产生器103根据指令执行指示105来写入心跳讯 号信息122至除错存储器阵列1212。一在实施例中,心跳产生器103是将每个时钟周期所 收到的指令执行指示105写进除错存储器阵列1212。心跳产生器103随后再从除错存储 器阵列1212读出心跳讯号信息122,并在通过处理器总线114上将其写入系统存储器112 中。当心跳讯号信息122写进系统存储器112时,逻辑分析器108便撷取了心跳讯号信息 122。心跳产生器103是将心跳讯号信息122写入系统存储器112的一预定地址,如此便致
12能一来逻辑分析器108便能将其储存至数据夹116,而写入的心跳讯号信息122在之后会被 速率控制器204使用,一如图3的所示。本实施例的心跳讯号信息122是与图6、图7的相 似,亦即每时钟的心跳讯号信息122用以指出核心104在该时钟所完成的指令数量。心跳 产生器103会对双核心处理器102的一总线接口单元(bus interface unit) 1216产生需 求(requests),总线接口单元1216是使双核心处理器102连接至处理器总线114的接口。 根据在一实施例中,心跳产生器103产生的需求是最低优先权的需求,其可传至总线接口 单元1216,并当处理器总线114闲置(idle)时,总线接口单元1216才试着产生在处理器总 线114上的传输,以将心跳讯号信息122从除错存储器阵列1212写进系统存储器112。如 此可能减少因侵入性地在处理器总线114写入心跳讯号信息122(相对于图4至图11以及 图15至图16中,在非侵入式的边带总线(noninvasive sideband bus)上写入心跳讯号信 息122),因而影响双核心处理器102操作时序的可能性,是以当心跳特征被启动后错误不 再出现。心跳产生器103监控整个除错存储器阵列1212,当发现除错存储器阵列1212快被 写满时,便与总线接口单元1216通讯来提高需求的优先权,以尽快写入心跳讯号信息122。 在实施例中,除错存储器阵列1212是类似于双核心处理器102的L2快取存储器(L2cache memory) 1214的存储器阵列,都被核心104共享。双核心处理器102可更佳地设计成将除错 存储器阵列1212设计成为L2快取存储器1214的附属物备份,藉此可共享通用的控制逻辑 与电路布局。在一实施例中,除错存储器阵列1212的容量是够大的,以至于在两个检查点 的间隔便相对够小,所以在检查点到达之前心跳产生器103都不需要再写入心跳讯号信息 122,这个好处是基于利用非侵入性的方式来写入心跳信息而来。请参考图13,其为本发明所揭示的依据图12实施例的速率控制器的操作例示表。 本实施例图表与图7相似,所接收到的心跳讯号信息122、图示意思也相同,在此就不予赘 述。但须注意相对于图12而言本实施例没有心跳讯号106,因此每时钟周期的心跳讯号信 息122指出每时钟所完成的指令数量,其中图中所示的时钟周期0-5是与核心时钟周期相 对应。上述实施例的相对优缺点将在以下详述。图4、图5以及图8至图13的优点是,仅 需在多核心处理器封装上安置较小数量的外部接脚(Pin),亦即每核心104—个接脚。因 此,这些实施例会比图6、图7在芯片大小上更具优势(scalable),因为图6、图7的其每个 核心104需要多个接脚,若核心104数量更多,这个问题更明显。但有鉴于目前时下的微处 理器都是超纯量架构(superscalar),且能于每时钟周期执行多个指令,图4、图5的实施例 却限制每核心104只能在每核心时钟周期中完成单一指令。相反地,图6至图13的实施例 的优点在于,可支持核心104于每时钟周期中完成多个指令。此外,图4至图7的实施例限 制核心周期与心跳讯号106总线的周期速率相同,但有鉴于许多时下的微处理器的时钟速 率都很高,使得实作上无法随核心时钟速率来运作一外部总线。相反地,图8至图13以及 图15至图16 (描述在后)的优点在于,可支持核心周期频率为心跳讯号106的总线频率的 倍数的架构。如上所述,图12、图13的实施例的缺点是,其为具侵入性而可能会影响多核心 处理器的程序执行的时序,如此当致能心跳时,可能会导致错过一些错误。然而,图12、图 13的实施例的优点在于,不需要额外的外部接脚,而这个优点在某些应用上却是必须的。请参考图14,其为本发明所揭示的图2的操作模拟环境的方法流程图。软件功能 模块模拟环境1 被用来判断在第一及第二检查点之间是否有发生错误,亦可被运用在系统100操作了一段时间且产生许多组检查点之后,用以判断储存在图1的数据夹116中的 多组第一及第二检查点之间是否有发生错误。流程起始于步骤S1402。首先,步骤S1402中,实际结果产生器208使用处理器总线传输信息118来产生由 双核心处理器102在两检查点之间,执行预定数量指令的实际结果存储器映像222以及实 际结果状态224,一如图2的所示。流程接着前往步骤S1404。接着,步骤S1404中,模拟初始状态产生器202使用处理器总线传输信息118来产 生模拟初始存储器映像212以及模拟初始状态214,一如图2的所示。流程接着前往步骤 S1406。步骤S1406中,复制模拟初始存储器映像212到模拟结果存储器映像232,且复制 第一核心的模拟初始状态214A到第一核心的模拟结果状态234A,以及复制第二核心的模 拟初始状态214B到第二核心的模拟结果状态234B。随后,速率控制器204以及软件功能 模块范例206使用复制的映像来更新模拟结果存储器映像232以及模拟结果状态234,一 如图3的所示。须注意在图3的操作中,于每个核心的指令执行里,可能发生其中一个核心 104执行一存储器写入指令、而另一个核心104执行一存储器读取指令,诸如上述的信号写 入与读取(semaphore write and read)的情形。如果在这类的读写动作之间的指令数量 小于心跳讯号信息122的间隔(granularity),则在双核心处理器102的实际执行期间,会 存在多种可能影响实际存储器存取的顺序。因此,软件功能模块模拟环境1 若检测到这 个情形,将假设存储器存取的可能顺序,再依照该可能顺序来执行步骤S1406,并记录操作 情形。须注意图8至图11的实施例所产生的心跳讯号信息122,其间隔大于图6至图7以 及图12至图13 ;而图12至图13的实施例所产生的心跳讯号信息122的间隔又大于图4至 图5。较大的间隔会使软件功能模块模拟环境124需要更多的时间来完成图14的操作程 序,因为存储器存取顺序的数量可能会很多。流程接着前往步骤S1408。步骤S1408中,比较单元2 将步骤S1406产生的模拟结果与步骤S1402产生的 实际结果进行比较,流程接着前往步骤S1412。在步骤S1412中,将判断比较结果是否相符合,如果是,则进行步骤S1414,否则进 行步骤S1416。步骤S1414中,比较单元2 在取否指示器2 上产生一取值(pass value),流程 中止于步骤S1414。在步骤S1416中,软件功能模块模拟环境IM判断是否有其他可能的存储器存取 顺序未被执行,如果有,则回到步骤S1406,并使用不同的存储器存取顺序来操作;否则,则 进行步骤S1418。在步骤S1418中,比较单元2 在取否指示器2 上产生一否值(fail value)。 流程中止于步骤S1418。请参考图15,其为本发明图1所揭示双核心处理器102的另一实施例的功能方块 图。图15、图16相似于图10、图11,每个核心104在每一核心时钟周期可完成多个指令,且 核心104的时钟速率是心跳讯号106的时钟速率的好几倍,每个指令执行指示105是两比 特,用来指出每时钟周期中,核心104所完成的指令数量。然而,本在图15的实施例里,的 在每个总线时钟周期中,心跳产生器103产生两比特的心跳讯号106A,106B,其分别指出第 一核心104A及第二核心104B执行所完成的指令数量为0,8,16,或32。
请参考图16,其为本发明图2所揭示的速率控制器204,在图15实施例下的操作 例示表。本实施例图表部份与图7、图9、图11相似,如图所示,每核心时钟中,速率控制器 204从心跳讯号信息122中接收的心跳讯号106的值从0至3。同样地,在每个时钟周期中, 根据图3中的步骤S306的判断,图表标示了速率控制器204根据图3中的步骤S308,在所 对应的模拟时钟周期期间,是否通过命令218A以控制第一核心的软件功能模块范例206A 去执行指令(如果是,会标示有多少指令被执行),以及是否通过命令218B来控制第二核 心的软件功能模块范例206B去执行指令(如果是,会标示有多少指令被执行)。在本例示 中,第一核心104A在时钟0,2的心跳讯号106A是0,在时钟4时是1,在时钟3时是2,以及 在时钟1,5时是3。因此,速率控制器204通过命令218A指示第一核心的软件功能模块范 例206A在模拟的时钟0,2期间执行0个指令;在模拟的时钟4期间执行8个指令;在模拟 的时钟3期间执行16个指令;以及在模拟的时钟1,5期间执行32个指令。另一方面,第二 核心1048在时钟3,5的心跳讯号106B是0,在时钟0,4时是1,在时钟1,2时是2,而没有 任一时钟的心跳讯号为3。因此,速率控制器204会通过命令218B控制第二核心的软件功 能模块范例206B在模拟的时钟3,5期间执行0个指令;在模拟的时钟0,4期间执行8个指 令;在模拟的时钟1,2期间执行16个指令;而不会有任一时钟执行32个指令。图15、图16的实施例的优点,是在图14的操作下,可提供的间隔比图8至图11的 实施例更好。此外,本发明实施例中的心跳讯号106,亦可用在具有更细间隔的例子中,而在 这种情形下的错误模式并不需要让每个核心104皆重新产生错误。例如,假设在边带总线 上有八个心跳讯号106,多核心处理器包括四个核心104,但只必须运作两个核心104来重 新产生错误。这个情况下,心跳产生器103编写成只使用八个心跳讯号106比特中的四个, 用来分别指出每个核心104完成的指令数量(0,2,4,6,8,10,12,14,16,18,20,22,24,26, 28,或 32 个)。虽然上述实施例中,每核心104执行单一线程,但亦可设计成同时执行多个线程, 并由心跳信息指出线程所完成的指令。此外,虽然上述实施例中,两核心104具有相同的核心时钟周期,但亦可具有不同 的核心时钟周期,而由心跳讯号信息122指出两核心速率,而速率控制器204在产生命令 218时便可以列入考量。另一实施例是使用Verilog模拟器来模拟实际的处理器,其致能除错器,以在任 何时间存取处理器的任何通信连结(net),包括用来标示每核心执行指令及存取存储器的 次数的讯号。这些讯号可致能除错器来提供信息给软件功能模块,如此便如同实际的处理 器(或至少如石继处理器的Verilog模拟),可同时执行指令及存取存储器。然而,这样会 带来三个缺点第一,取决于模拟中的时钟周期/指令的数量,Verilog模拟器会耗费非常 大量的系统资源及时间,因而使Verilog模拟变成是不太可能实施的方式,而且无法解决 某些类型的错误。第二,Verilog模拟器模拟出的运作行为,一定与实际的处理器的运作行 为不同。第三,Verilog模拟器模拟出的解决方法,需要把处理器设计成具有理想每时钟一 状态重现功能(perfect state-per-clock replay)的能力,这是很难实作出的。一般来说, 具有理想每时钟一状态重现功能的微处理器可随一输入状态(input state)被载入,该输 入状态定义整个处理器的状态,意即,没有任何处理器的状态不能藉由载入输入状态来获 得初始化。而本发明所提的实施例并不会有上述Verilog模拟器的缺点。
尽管本发明描述各种实施例,但不以所揭示的为限,计算机相关技术领域的技术 人员,皆可依据需求修改本发明所揭示的实施例,然所有不脱离本发明精神的变更仍应 包含在本发明的权利要求中。例如,软件可实作功能、架构、模块、模拟和/或上述各装 置、方法。藉由使用一般程序语言(如C,C++)、硬件描述语言(hardware description languages, HDL),包括Verilog硬件描述语言等,或其他可用的程序,来实作本发明所述的 软件。这样的软件可储存于任何计算机可用的储存媒体,如磁带(magnetic tape)、半导 体、磁盘(magnetic disk)、或光盘(optical disc)(例如 CD-ROM, DVD-ROM 等)、网络、有 线/无线或其他通讯媒体。本发明所述的装置及方法实施例可包含于一半导体智能核心 (semiconductor intellectual property core),如一为处理器核心(例如内嵌于硬件描 述语言中),且可转成硬件形式,以生产于集成电路上。此外,本发明所述的装置及方法亦可 是硬件和软件的组合,不以所揭示的为限。以上所述仅为本发明的较佳实施例而已,并非用以限定本发明的权利要求的范 围;凡其它未脱离发明所揭示的精神下所完成的等效改变或修饰,诸如将本发明应用在一 般用途计算机的处理器装置等,均应包含在本发明的权利要求内。
权利要求
1.一种微处理器的除错方法,该微处理器具有多个核心,包含使微处理器去执行指令的一实际执行;从该微处理器获得一心跳信息,其指出这些核心彼此间执行指令的一实际执行顺序;命令一软件功能模块的多个相关范例根据该实际执行顺序来执行指令,以产生执行该 指令的一模拟结果;及比较该模拟结果与执行该指令的一实际结果,以判断两者是否符合。
2.如权利要求1所述的方法,其中该实际结果以及该模拟结果包含这些核心在执行完 后的一状态。
3.如权利要求2所述的方法,其中该实际结果以及该模拟结果还包含执行完后的一存 储器状态。
4.如权利要求1所述的方法,还包含若该模拟结果与该实际结果不符合,则标示一错误。
5.如权利要求1所述的方法,其中在对同一个存储器地址进行一存储器写入指令以及 一存储器读取指令之间执行的指令数量,小于该心跳信息的间隔,则存在多个可能影响存 储器存取的可能执行顺序,其中命令该软件功能模块的多个相关范例执行指令的步骤中, 是根据这些可能执行顺序来命令该软件功能模块的这些相关范例执行指令,直到该模拟结 果与该实际结果符合为止。
6.如权利要求5所述的方法,还包含若所有这些执行顺序的该模拟结果都与该实际结果不符合,则标示一错误。
7.如权利要求1所述的方法,其中该心跳信息包含多个记录,其为在指令的该实际执 行期间的多个心跳,其中每一该记录指出这些核心实际执行的指令数量,而命令该软件功 能模块的多个相关范例执行指令的步骤中,包含对每笔的这些记录,命令该软件功能模块的每一该相关范例去实际执行这些记录中记 录的指令数量。
8.如权利要求1所述的方法,其中从该微处理器获得该心跳信息的步骤中,包含撷取 在一外部总线上实际执行指令期间,该微处理器产生的心跳讯号。
9.一种微处理器,包含多个核心,每一这些核心输出一指令执行指示,用来指出这些核心在每一时钟周期中 所执行的指令数目;及一心跳产生器,其从每一这些核心接收该指令执行指示,并对每一个在一外部总线上 的这些核心产生一心跳指示,其中该心跳指示指出了每一这些核心在该外部总线的每个时 钟中,所执行的指令数量。
10.如权利要求9所述的微处理器,其中这些核心的时钟周期速率与该外部总线的时 钟周期速率相同。
11.如权利要求9所述的微处理器,其中这些核心的时钟周期速率大于该外部总线的 时钟周期速率,其中每一该心跳指示指出的指令执行数量比在每一该指令执行指示指出的 可完成指令的最大数量还大。
12.如权利要求11所述的微处理器,其中这些核心的时钟周期速率与该外部总线的时 钟周期速率的比率为J,每一该指令执行指示指出的可完成指令的最大数量为K,每一该心跳指示指出的指令执行数量为L,其中L大于或等于J和K的积。
13.如权利要求11所述的微处理器,其中每一该心跳指示包含一单一比特。
14.如权利要求9所述的微处理器,其中每一这些核心包含一计数器,用来计数每时钟 周期中已执行的指令数量,其中该指令执行指示为该计数器的计数值的一输出比特。
15.如权利要求14所述的微处理器,其中该计数器的计数值的该输出比特是比特M,且 M= log2N,其中N是该核心的时钟与该外部总线的时钟的比率以及该核心于每时钟周期中 可完成的最大数量指令的积。
16.如权利要求9所述的微处理器,其中该心跳产生器包含一与每一这些核心相关的 计数器,用来计数每时钟周期中已执行的指令数量,其中该指令执行指示为该计数器的计 数值的一输出比特。
17.如权利要求16所述的微处理器,其中该计数器的计数值的该输出比特是比特M,且 M= log2N,其中N是该核心的时钟与该外部总线的时钟的比率以及该核心于每时钟周期中 可完成的最大数量指令的积。
18.如权利要求17所述的微处理器,其中每一该指令执行指示为一比特,且每一该心 跳指示包含一单一比特。
19.如权利要求9所述的微处理器,其中该外部总线包含一边带总线,其耦接于该微处 理器,该边带总线不同于耦接于微处理器的主处理器总线。
20.如权利要求19所述的微处理器,其中至少有部份的该边带总线为一JTAG总线。
21.如权利要求19所述的微处理器,其中该边带总线为一服务处理器总线,其耦接于 该微处理器内部的一服务处理器。
22.一种微处理器,包含多个核心,每一个核心会产生一指令执行指示,用来指示各核心在每一时钟期间,所执 行的指令数目;一储存阵列,其储存在一段时钟期间中,由这些核心所产生的指令执行指示;及一总线接口单元,其耦接于该微处理器的一外部总线,其中该总线接口单元用来将储 存于储存阵列中的该指令执行指示写入至该微处理器的一外部存储器中。
23.如权利要求22所述的微处理器,其中该总线接口单元以相较于其他处理该外部总 线上的传输的最低优先权来将该指令执行指示写入至该外部存储器中。
24.如权利要求19所述的微处理器,还包含一心跳产生器,耦接于该储存阵列以及该总线接口单元,用来从每一这些核心接收该 指令执行指示,其中该心跳产生器是在该段时钟期间中写入该指令执行指示至储存阵列, 并从该储存阵列读出该指令执行指示,使该总线接口单元将其写至该外部存储器。
25.如权利要求M所述的微处理器,其中该心跳产生器等候从该储存阵列中读出该指 令执行指示,并在该段时钟期间结束后以使该总线接口单元将该指令执行指示写至该外部 存储器。
26.如权利要求M所述的微处理器,其中该心跳产生器周期性地从该储存阵列中读出 该指令执行指示,以使该总线接口单元将其写至该外部存储器。
全文摘要
一种微处理器及其除错方法。该微处理器的除错方法,其中微处理器具有多个核心。所述的方法包括首先,使微处理器去执行指令的一实际执行(actual execution),并从微处理器获得一心跳信息,其明确指出核心彼此间执行指令的一实际执行顺序(actual execution sequence)。接着,命令一软件功能模块的多个相关范例根据实际执行顺序来执行指令,以产生指令执行的模拟结果。最后,比较模拟结果与指令执行的实际结果,以判断两者是否符合。每个核心输出一指令执行指示,用以指出在每个核心时序中由核心所执行指令数量;心跳产生器则对每个在外部总线上的核心产生一心跳指示,用以指出在每个外部总线时序周期中,由每个核心所执行的指令数量。
文档编号G06F11/00GK102096607SQ20111006308
公开日2011年6月15日 申请日期2011年3月16日 优先权日2010年3月16日
发明者杰森.陈, 罗德尼.E.虎克, 达鲁斯.D.嘉斯金斯 申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1