在混合模式程序中检测源代码差错的位置的设备和方法转让专利

申请号 : CN201310407591.X

文献号 : CN103678115B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 沈熙峻安珉旭丁镇世韩渊照

申请人 : 三星电子株式会社

摘要 :

一种在混合模式程序中检测源代码差错的位置的设备和方法。公开了一种在混合模式程序中检测源代码差错位置的设备。所述设备可包括编译器、映射表产生器、仿真器、比较数据产生器和差错位置检测器。所述设备在仿真验证程序并且仿真参考程序的同时提取低级数据。低级数据被映射到验证程序和参考程序的映射表,并且通过比较验证程序和参考程序的映射表,确定在混合模式程序中是否存在差错,并且如果差错存在,则确定差错在哪里。

权利要求 :

1.一种在混合模式程序中检测源代码差错位置的设备,包括:编译器,被配置为通过在第一模式下编译源代码来产生第一程序,通过在与第一模式不同的第二模式下编译源代码来产生第二程序;

映射表产生器,被配置为产生第一程序的第一映射表以及第二程序的第二映射表;

仿真器,被配置为仿真第一程序和仿真第二程序;

低级数据提取器,被配置为从第一程序的仿真提取第一低级数据以及从第二程序的仿真提取第二低级数据;

比较数据产生器,被配置为将第一低级数据映射到第一映射表以产生验证映射表,以及将第二低级数据映射到第二映射表以产生参考映射表;

差错位置检测器,被配置为将验证映射表与参考映射表进行比较以检测验证映射表与参考映射表之间的数据的不一致记录,并且获得涉及数据的不一致记录的程序位置信息。

2.如权利要求1所述的设备,其中,第一映射表和第二映射表的每个包括指令映射信息、寄存器映射信息和存储器映射信息中的至少一个。

3.如权利要求1所述的设备,其中,低级数据提取器被配置为在仿真期间从预定时间段的第一程序和第二程序中的每个提取低级数据。

4.如权利要求1所述的设备,其中,低级数据包括寄存器数据、存储器数据、程序计数器PC和迭代计数器中的至少一个。

5.如权利要求4所述的设备,其中,差错位置检测器基于程序计数器来检测引起差错的源代码的位置。

6.一种在混合模式程序中检测源代码差错的位置的方法,包括:通过在第一模式下编译源代码来产生验证程序;

通过在与第一模式不同的第二模式下编译源代码来产生参考程序;

产生指示源代码和验证程序之间的关系的第一映射表;

产生指示源代码和参考程序之间的关系的第二映射表;

仿真验证程序;

仿真参考程序;

从验证程序的仿真提取低级数据;

从参考程序的仿真提取低级数据;

将从验证程序提取的低级数据映射到指示源代码和验证程序之间的关系的第一映射表,以产生验证映射表;

将从参考程序提取的低级数据映射到指示源代码和参考程序之间的关系的第二映射表,以产生参考映射表;

将验证映射表与参考映射表进行比较,以检测数据的不一致记录并且获得涉及数据的不一致记录的程序位置信息。

7.一种在混合模式程序中检测源代码差错的位置的方法,包括:通过在第一模式下编译源代码来产生验证程序;

通过在与第一模式不同的第二模式下编译源代码来产生参考程序;

通过将验证程序的低级数据映射到验证程序的映射表来产生验证数据表;

通过将参考程序的低级数据映射到参考程序的映射表来产生参考数据表;

将验证数据表与参考数据表进行比较,以便确定是否存在数据的不一致记录;

如果存在数据的不一致记录,则基于程序计数器PC和功能单元FU索引,在源代码中检测与数据的不一致记录相应的位置。

8.如权利要求7所述的方法,还包括:

在仿真期间从验证程序提取验证程序的低级数据。

9.如权利要求7所述的方法,还包括:

在仿真期间从参考程序提取参考程序的低级数据。

10.一种在混合模式程序中验证源代码的设备,包括:编译器,被配置为通过在第一模式下编译源代码来产生第一程序,通过在与第一模式不同的第二模式下编译源代码来产生第二程序;

映射表产生器,被配置为产生第一程序的第一映射表以及第二程序的第二映射表;

仿真器,被配置为仿真第一程序和第二程序;

低级数据提取器,被配置为从第一程序的仿真提取第一低级数据,并且从第二程序的仿真提取第二低级数据;

比较数据产生器,被配置为将第一低级数据映射到第一映射表,以产生验证映射表,并且将第二低级数据映射到第二映射表,以产生参考映射表;

差错位置检测器,被配置为将验证映射表与参考映射表进行比较以提供源代码是否有效的指示。

11.如权利要求10所述的设备,其中,第一映射表和第二映射表的每个包括指令映射信息、寄存器映射信息和存储器映射信息中的至少一个。

12.如权利要求10所述的设备,其中,低级数据提取器被配置为在仿真期间从预定时间段的第一程序和第二程序中的每个提取低级数据。

13.如权利要求10所述的设备,其中,低级数据包括寄存器数据、存储器数据、程序计数器PC和迭代计数器中的至少一个。

说明书 :

在混合模式程序中检测源代码差错的位置的设备和方法

[0001] 本申请要求于2012年9月7日提交到韩国知识产权局的第10-2012-0099609号韩国专利申请的权益,该申请的整个公开出于所有目的合并于此。

技术领域

[0002] 以下描述涉及一种多模式处理技术。例如,以下描述涉及一种由多模可重构处理器在混合模式程序中验证映射的代码的技术以及帮助找出源代码差错的调试技术。

背景技术

[0003] 可重构架构是这样一种架构:基于将由计算装置执行的任务来改变计算装置的硬件配置,从而在对于每个任务的硬件级别实现最优化。由于一块硬件能够通过改变一块硬件的设置(而非需要多块硬件(每块硬件针对一个任务被优化)或者使用不可修改的单块硬件),来很简单地执行多个任务,并因而次优地执行至少一些任务,因此这种能力是有价值的。
[0004] 当仅使用硬件来处理任务时,由于大多硬件被配置为以固定的方式运行,因此甚至执行任务的方式轻微改变,也难于有效地处理。另一方面,当仅使用软件来处理任务时,根据任务的类型来改变软件并且使用改变的软件来执行任务是可行的。然而,处理任务比使用固定硬件处理任务更慢,原因在于:对于固定硬件上的最佳性能,针对各种任务改变软件可能被不理想地改变。
[0005] 可重构硬件架构提供硬件和软件两者的优点。更具体地讲,可重构硬件架构在提供定制软件的多功能性的同时,确保定制硬件的最佳性能。由于这些原因,可重构架构的使用已经增加,特别在相同的任务经常被重复执行并且优化那些任务对于总体性能具有深远影响的数字信号处理的领域。
[0006] 存在许多种类的可重构架构。一个比较恰当的例子是粗晶阵列(CGA),CGA由彼此连接的多个处理元件(PE)构成。通过改变PE彼此连接的方式,CGA可被优化以执行特定操作或任务。
[0007] 近来,新的可重构架构已经被开发,其利用粗晶阵列的特定PE作为超长指令字(VLIW)机。在这种可重构架构中,存在两种执行模式,CGA模式和VLIW模式。在CGA模式中,一般地,一个或更多个迭代循环操作被处理,而在VLIW模式中,一般地,一般操作而非循环操作被处理。由于CGA模式可能对于处理循环更有效,因此采用此方法。
[0008] 基于CGA的可重构处理器具有非常复杂的结构。这种处理器包括多个功能单元(FU)、全局寄存器文件和本地寄存器文件。
[0009] 如果在CGA中存在数据相关性,则编译器难于分析并处理数据。数据相关性对于识别是重要的,这是因为如果非法或损坏数据产生(这不满足数据相关性),则不同的差错可能发生。例如,如果编译器无法克服数据相关性,则用户或程序员甚至不能检测在CGA中映射的二进制数据的差错。其结果是,在程序的执行期间可实现不期望的结果。为了使得可重构硬件架构能够处理数据,其必须能够避免这种运行时间差错。

发明内容

[0010] 在一个总体方面,提供了一种在混合模式程序中检测源代码差错位置的设备,包括:仿真器,被配置为仿真第一程序和仿真第二程序;低级数据提取器,被配置为从第一程序的仿真提取第一低级数据以及从第二程序的仿真提取第二低级数据;比较数据产生器,被配置为将第一低级数据映射到从第一程序产生的第一映射表以产生验证映射表,以及将第二低级数据映射到从第二程序产生的第二映射表以产生参考映射表;差错位置检测器,被配置为将验证映射表与参考映射表进行比较以检测验证映射表与参考映射表之间的数据的不一致记录,并且获得涉及数据的不一致记录的程序位置信息。
[0011] 所述设备可还包括:编译器,被配置为通过在第一模式下编译源代码来产生第一程序,通过在第二模式下编译源代码来产生第二程序。
[0012] 所述设备可还包括:映射表产生器,被配置为产生第一程序的第一映射表以及第二程序的第二映射表。
[0013] 所述设备可提供:第一映射表和第二映射表的每个包括指令映射信息、寄存器映射信息和存储器映射信息中的至少一个。
[0014] 低级数据提取器可被配置为在仿真期间从预定时间段的第一程序和第二程序中的每个提取低级数据。
[0015] 低级数据可包括寄存器数据、存储器数据、程序计数器(PC)和迭代计数器中的至少一个。
[0016] 差错位置检测器可基于程序计数器来检测引起差错的源代码的位置。
[0017] 在另一方面,提供了一种在混合模式程序中检测源代码差错的位置的方法,包括:仿真验证程序;仿真参考程序;从验证程序的仿真提取低级数据;从参考程序的仿真提取低级数据;将从验证程序提取的低级数据映射到指示源代码和验证程序之间的关系的验证映射表,以产生验证映射表;将从参考程序提取的低级数据映射到指示源代码和参考程序之间的关系的参考映射表,以产生参考映射表;将验证映射表与参考映射表进行比较,以检测数据的不一致记录并且获得涉及数据的不一致记录的程序位置信息。
[0018] 所述方法可还包括:通过在第一模式下编译源代码来产生验证程序;通过在第二模式下编译源代码来产生参考程序。
[0019] 所述方法可还包括:产生指示源代码和验证程序之间的关系的第一映射表,并且产生指示源代码和参考程序之间的关系的第二映射表。
[0020] 在另一方面,提供了一种在混合模式程序中检测源代码差错的位置的方法,包括:产生验证数据表;产生参考数据表;将验证数据表与参考数据表进行比较,以便确定是否存在数据的不一致记录。
[0021] 所述方法可还包括:如果存在数据的不一致记录,则基于程序计数器(PC)和功能单元(FU)索引,在源代码中检测与数据的不一致记录相应的位置。
[0022] 所述方法可提供:通过将在第一模式下编译的验证程序的低级数据映射到验证程序的映射表,来执行产生验证数据表的步骤。
[0023] 所述方法可提供:通过将在与第一模式不同的第二模式下编译的参考程序的低级数据存储到参考程序的映射表,来执行产生参考数据表的步骤。
[0024] 所述方法可还包括:在仿真期间从验证程序提取验证程序的低级数据。
[0025] 所述方法可还包括:在仿真期间从参考程序提取参考程序的低级数据。
[0026] 在另一方面,提供了一种在混合模式程序中验证源代码的设备,包括:仿真器,被配置为仿真第一程序和第二程序;低级数据提取器,被配置为从第一程序的仿真提取第一低级数据,并且从第二程序的仿真提取第二低级数据;比较数据产生器,被配置为将第一低级数据映射到从第一程序产生的第一映射表,以产生验证映射表,并且将第二低级数据映射到从第二程序产生的第二映射表,以产生参考映射表;差错位置检测器,被配置为将验证映射表与参考映射表进行比较以提供源代码是否有效的指示。
[0027] 在所述设备中,第一映射表和第二映射表的每个可包括指令映射信息、寄存器映射信息和存储器映射信息中的至少一个。
[0028] 低级数据提取器可被配置为在仿真期间从预定时间段的第一程序和第二程序中的每个提取低级数据。
[0029] 低级数据可包括寄存器数据、存储器数据、程序计数器(PC)和迭代计数器中的至少一个。
[0030] 在一个总体方面,提供了一种在混合模式程序中检测源代码差错位置的设备,包括:仿真器,被配置为仿真第一程序,其中,通过在第一模式下编译源代码来产生第一程序,并且仿真第二程序,其中,通过在第二模式下编译第二源代码来产生第二程序;低级数据提取器,被配置为在仿真期间从第一程序提取第一低级数据,并且在仿真期间从第二程序提取第二低级数据;比较数据产生器,被配置为将第一低级数据映射到从第一程序产生的第一映射表,从而产生验证映射表,并且将第二低级数据映射到从第二程序产生的第二映射表,从而产生参考映射表;差错位置检测器,被配置为将验证映射表与参考映射表进行比较以确定在验证映射表与参考映射表之间是否存在数据的不一致记录,并且响应于确定存在数据的不一致记录,获得涉及数据的不一致记录的程序位置信息。
[0031] 所述设备可提供:第一映射表和第二映射表的每个包括指令映射信息、寄存器映射信息和存储器映射信息中的至少一个。
[0032] 低级数据提取器可被配置为在仿真期间从预定时间段的第一程序和第二程序中的每个提取低级数据。
[0033] 低级数据可包括寄存器数据、存储器数据、程序计数器(PC)和迭代计数器中的至少一个。
[0034] 差错位置检测器可基于程序计数器来检测引起差错的源代码的位置。
[0035] 在另一方面,提供了一种在混合模式程序中检测源代码差错的位置的方法,包括:从验证程序提取低级数据,其中,通过在第一模式下编译源代码来产生验证程序,同时仿真验证程序,从参考程序提取低级数据,其中,通过在第二模式下编译源代码来产生参考程序,同时仿真参考程序;将从验证程序提取的低级数据映射到指示源代码和验证程序之间的关系的验证映射表,从而产生验证映射表,将从参考程序提取的低级数据映射到指示源代码和参考程序之间的关系的参考映射表,从而产生参考映射表;将验证映射表与参考映射表进行比较以确定是否存在数据的不一致记录,响应于确定存在数据的不一致记录,获得涉及数据的不一致记录的程序位置信息。
[0036] 在另一方面,提供了一种在混合模式程序中检测源代码差错的位置的方法,包括:产生验证数据表;产生参考数据表;将验证数据表与参考数据表进行比较以便确定是否存在数据的不一致记录。
[0037] 所述方法可还包括:如果存在数据的不一致记录,则基于程序计数器(PC)和功能单元(FU)索引在源代码中检测与数据的不一致记录相应的位置。
[0038] 所述方法可还包括:通过将在第一模式下编译的验证程序的低级数据映射到验证程序的映射表来执行产生验证数据表的步骤。
[0039] 所述方法可还包括:通过将在与第一模式不同的第二模式下编译的参考程序的低级数据存储在参考程序的映射表中来执行产生参考数据表的步骤。
[0040] 所述方法可还包括:在仿真期间从验证程序提取验证程序的低级数据。
[0041] 所述方法可还包括:在仿真期间从参考程序提取参考程序的低级数据。
[0042] 在另一方面,提供了一种在混合模式程序中验证源代码的设备,包括:仿真器,被配置为仿真第一程序,其中,通过在第一模式下编译源代码来产生第一程序,仿真第二程序,其中,通过在第二模式下编译源代码来产生第二程序;低级数据提取器,被配置为在仿真期间从第一程序提取第一低级数据,在仿真期间从第二程序提取第二低级数据;比较数据产生器,被配置为将第一低级数据映射到从第一程序产生的第一映射表,从而产生验证映射表,并将第二低级数据映射到从第二映射表产生的第二映射表,从而产生参考映射表;差错位置检测器,被配置为将验证映射表与参考映射表进行比较以确定在验证映射表和参考映射表之间是否存在数据的不一致记录,响应于确定存在数据的不一致记录,则提供源代码有效的指示。
[0043] 所述设备可提供:第一映射表和第二映射表的每个包括指令映射信息、寄存器映射信息和存储器映射信息中的至少一个。
[0044] 低级数据提取器可被配置为在仿真期间从预定时间段的第一程序和第二程序中的每个提取低级数据。
[0045] 低级数据可包括寄存器数据、存储器数据、程序计数器(PC)和迭代计数器中的至少一个。
[0046] 从以下详细描述、附图和权利要求,其他特征和方面可是清楚的。

附图说明

[0047] 图1是示出可重构处理器的示例的示图。
[0048] 图2是示出产生混合模式程序的多模式处理器的示例的框图。
[0049] 图3是示出在图2中显示的多模式处理器中编译的两模式程序的示图。
[0050] 图4是示出根据实施例的在混合模式程序中检测源代码差错的位置的方法的示例的流程图。
[0051] 图5是示出根据实施例的在混合模式程序中检测源代码差错的位置的设备的示例的框图。
[0052] 图6是示出由在混合模式程序中检测源代码差错的位置的设备执行的差错位置检测处理的示例的示图。
[0053] 图7是示出映射表的示例的示图;
[0054] 图8是示出提取的低级数据的示例的示图;
[0055] 图9是示出根据另一实施例的在混合模式程序中检测源代码差错的位置的方法的示例的流程图。

具体实施方式

[0056] 提供以下详细描述以帮助读者获得对本文中描述的方法、设备和/或系统的全面理解。然而,本文中描述的系统、设备和/或方法的各种修改、改变和等同形式对于本领域的普通技术人员将是清楚的。另外,为了更加清楚和简明,可省略对本领域的普通技术人员公知的功能和构造的描述。
[0057] 贯穿附图和详细描述,相同的标号指示相同的元件。附图不可被测量,而为了清楚、示出和方便,可放大附图中的元件的相对尺寸、比例和描绘。
[0058] 在本文中描述的特征可以以不同的形式来实施,并且不被解释为受限于在本文中描述的示例。当然,在本文中描述的示例已经提供,从而此公开将是彻底和完整的,并将本公开的全部范围传达给本领域的普通技术人员。
[0059] 将注意,本文中使用的术语“源代码”是指源代码的一个或更多个文件,一个或更多个文件可随意地包括库,所述库按照至少一个计算机编程语言包括指令,使得指令由计算机执行一系列步骤。在实施例中,这种源代码被编译,从而这种源代码可运行在硬件上。
[0060] 图1是示出可重构处理器的示例的示图。
[0061] 参照图1,可重构处理器100包括可重构阵列110和存储器120。
[0062] 本文中,术语“迭代”指示循环操作的每次执行。例如,当循环执行三次时,全部循环操作的第一、第二和第三执行被称为循环操作的第一、第二和第三迭代。包括在相同迭代中的指令可被映射到不同的处理元件(PE),如果PE同时操作,则映射到不同的PE的指令可被并行处理,使得可重构处理器100的操作速度更快。存在各种用于将指令映射到多个处理元件以允许同时执行多个任务的技术,诸如多任务和多线程。由于如果多个PE可用并且处理被划分,则并行处理提供在其他任务完成之前开始一些任务以减小完成计算任务的总时间消耗的方式,因此并行处理是希望的。
[0063] 在一些实施例中,可重构处理器100能够被设置为在粗晶阵列(CGA)模式或超长指令字(VLIW)模式下被驱动。例如,可重构处理器100在CGA模式下处理循环操作,而能够在VLIW模式下处理一般操作和循环操作两者。尽管可重构处理器100能够在CGA模式或VLIW模式下处理循环操作,但是在VLIW模式下处理循环操作的效率可能低于在CGA模式下处理循环操作的效率。为了最大化在这种情况下的效率,实施例被配置为在CGA模式下处理循环操作(这是执行循环操作更有效的方式),随后在VLIW模式下处理其他操作,由于CGA模式不能处理那些其他操作。其结果是,可重构处理器100可在特定程序的执行期间在CGA模式和VLIW模式下选择地被驱动,以实现对于程序的执行最好的可能的结果。
[0064] 可重构阵列110包括寄存器文件111和多个处理元件(PE)112。在实施例中,可重构阵列110改变硬件配置以最佳地执行操作。例如,可重构阵列110可根据操作的类型改变PE112彼此连接并且彼此交互的方式。如果PE被改变为以不同的方式彼此连接,则改变可重构阵列110处理数据的方式,潜在地更适应给定种类的操作。
[0065] 寄存器文件111用于PE112之间的数据传送。寄存器文件111用作工作存储器,使用该工作存储器,PE112可读和写在处理任务时使用的数据。此外,寄存器文件111还可存储执行指令所需的数据。例如,每个PE112能够访问寄存器文件111,以便读或写执行指令所需的数据。然而,并非每个PE112需要连接到所有其他PE112或者直接连接到寄存器文件111,从而特定PE112可经由另一PE112访问寄存器文件111。
[0066] 每个PE112可执行分配的指令。PE112彼此连接的方式以及PE112的操作顺序可根据将被处理的任务而改变。如上讨论,通过改变给定的架构中的PE的连接和顺序,允许PE被重构为使得PE适合于特定处理任务。
[0067] 存储器120可存储关于PE112彼此连接的方式的信息、诸如执行处理所需的指令的信息以及处理结果。指令可以是将提供给可重构阵列110的指令,诸如指定将采用作为数据处理方法的一部分的动作的操作。例如,存储器120可存储在由可重构阵列110处理之前的将被处理的数据、或者由可重构阵列110产生的数据处理结果。在另一示例中,存储器120可存储用于驱动可重构处理器110所需的信息、关于包括在可重构阵列110中的PE112彼此连接的方式的信息、关于包括在可重构阵列110中的多个PE112对数据操作的信息以及PE112产生的结果。
[0068] 图2是示出产生混合模式程序的多模式处理器的示例的框图。
[0069] 被配置为具有两种或更多种模式以及被设计为在两种或更多种模式下操作的硬件的多模式处理器20在每种模式下不同地操作。也就是,多模式处理器20具有第一模式块220和第二模式块210(例如,CGA模式和VLIW模式),并且硬件可在不同的模式下不同地操作。多模式处理器可在特定时间或者当特定事件发生时在第一模式块220和第二模式块210之间转换。在示例中,PE112被分离,每个PE被分配为属于特定模式。在另一示例中,不同的编译模式可共享PE112的至少一部分或全部,并且特定PE112有时被一个模式使用而有时被另一模式使用。
[0070] 然而,由于硬件配置和操作方法在每种模式下是不同的,因此调度处理和映射处理的结果在每种模式下在编译器之间是不同的。因此,为了使不同的模式针对编译的代码针对彼此被适当地运行,必需针对编译的代码协调调度和映射以确保多种模式以各模式考虑彼此对资源的使用的方式来共享资源。
[0071] 图2中描述的多模式程序是“连续(sequential)”程序。连续程序是产生相同结果的程序,而不管编译方法或执行的条件。
[0072] 针对“连续”的程序,需要程序的编译能够产生两种或更多种混合模式程序(产生相同结果)。因此,需要将限制施加到程序的运行在不同模式下的部分,从而程序的不同部分不对彼此的操作进行干涉,将使得它们丢失“连续”程序的特性。
[0073] 图3是示出在图2中显示的多模式处理器中编译的两模式程序的示图。
[0074] 在第一模式下从t=0时刻到t=t1时刻、在第二模式下从t=t1时刻到t=t2时刻、随后在第一模式下从t=t2时刻到t=t3时刻,通过编译源代码来产生混合模式程序30。在不同时间段期间通过编译源代码产生的程序的部分通过标号300、310和320来区分。
[0075] 同时,在第一模式下通过编译整个源代码来产生混合模式程序31。在此示例中,假设混合模式程序31在第一模式和第二模式之间具有1:1的执行比率。
[0076] 假设第一模式是VLIW模式,第二模式是CGA模式。如果在CGA模式下存在数据相关性,则编译器难于分析并处理数据相关性。更加详细地,如果编译器无法克服和执行数据相关性,则用户或程序员甚至不能检测到在CGA模式下映射的二进制数据中的差错。因此,有时候不期望的结果在程序的执行期间发生。这种运行时间差错对于程序的正确操作是有害的并且需要被消除,因为它们阻碍了程序的正确顺序操作。
[0077] 然而,当在CGA模式下映射混合模式程序30时可产生错误的二进制数据。为了确定错误的二进制数据是否被产生,实施例产生允许实施例确保二进制数据正确的参考数据。例如,实施例使用以下方法。为了使二进制数据有效,实施例通过在倾向最少差错模式(例如VLIW模式)下编译混合模式程序30的源代码来产生混合模式程序31,随后将混合模式程序31的二进制数据与在CGA模式下映射的混合模式程序30的二进制数据进行比较。由于混合模式程序31是倾向较少差错的,因此如果混合模式程序30的低级数据(作为验证的对象)与混合模式程序31的低级数据(作为参考)一致,则能够确定在混合模式程序30中不存在差错。可选择地,如果存在差错,比较还可确定差错的源。
[0078] 图4是示出根据实施例的在混合模式程序中检测源代码差错的位置的方法的示例的流程图。
[0079] 参照图4,在混合模式程序中检测源代码差错的位置的方法包括:编译1100、执行仿真和提取低级数据1110、产生比较数据1120和检测差错位置1130。
[0080] 在操作1100,源代码(也就是,高级数据)在第一模式下被编译,从而产生验证程序,而相同的源代码在第二模式下被编译,从而产生参考程序。在一些实施例中,产生指示高级数据和低级数据之间的关系的映射表的操作1105(未显示)被进一步执行以帮助后续处理。
[0081] 在操作1110,在仿真期间,从验证程序和参考程序的每个提取基本低级数据。此时,一些实施例从预定时间段(而非整个仿真时间段)的每个程序提取低级数据。由于仅一个时间段可能是在验证程序中使用的模式是需要验证并且该时间段外的代码有效性可能没问题的时间段,因此可从预定时间段提取低级数据。
[0082] 在操作1120,在仿真操作1120期间从验证程序和参考程序中的每个提取的低级数据被转换为适合于比较的形式。一些实施例需要此操作,这是因为在不同模式下提取而没有数据转换的低级数据不适合在那些实施例中的比较。在低级数据被映射到在操作1110中产生的映射表时执行数据转换。
[0083] 在操作1130,映射表,即,“验证映射表”(从验证程序提取的低级数据映射到该验证映射表)与映射表,即“参考映射表”(从参考程序提取的低级数据映射到该参考映射表)进行比较,从而确定在两个映射表之间是否存在相应数据的不一致性。如果在这两个映射表之间发现相应数据的不一致性,则涉及数据的不一致记录的程序位置信息被获得。使用映射表(低级数据映射到该映射表),能够搜索与特定低级数据相应的高级数据。也就是,能够搜索源代码位置。为了进行此操作,例如如上讨论的映射技术被使用,从而确定源代码的哪部分导致与异常相关的低级数据的创建。基于识别源代码的该部分,变得能够随后向用户通知问题区域处于源代码中的哪里以用于调试目的。
[0084] 图5是示出根据实施例的在混合模式程序中检测源代码差错的位置的设备的示例的框图。
[0085] 参照图5,用于在混合模式程序中检测源代码差错的位置的设备50包括编译器500、映射表产生器510、仿真器520、低级数据提取器530、比较数据产生器540和差错位置检测器550。
[0086] 编译器500通过编译源代码(也就是,高级数据)来产生连续混合模式程序。
[0087] 当编译器500产生混合模式程序时,映射表产生器510产生与对于混合模式程序指定的模式有关的映射表。
[0088] 映射表指示编译器500如何转换高级数据。如果难于产生映射表,则编译器500可减小优化级别。用于优化的操作包括删除、值改变和顺序改变。
[0089] 此外,映射表包括指令映射信息、寄存器映射信息和存储器映射信息。此外,在一些实施例中,映射表包括关于时隙的信息以及有效映射信息。通过将此信息记录在映射表中,能够跟踪源代码和低级数据之间的数据相关性,在某种程度上帮助确定是否存在关于数据相关性的潜在问题。
[0090] 仿真器520仿真验证程序和参考程序。通过仿真验证程序和参考程序,可通过捕获随着程序运行而产生的低级数据来确定程序的效果怎样。
[0091] 低级数据提取器530在仿真器520进行的仿真期间从验证程序和参考程序的每个提取低级数据。
[0092] 低级数据提取器530能够在仿真期间提取与仿真的部分时间段而非整个时间段对应的低级数据。如以上针对操作1110所讨论的,在一些实施例中,仅被仿真的一部分时间段对于分析处理是必需的。
[0093] 提取的低级数据可包括关于各种存储和操作的信息,该信息体现了当验证程序和参考程序被仿真时硬件的操作的特征。作为仿真处理的部分,验证程序和参考程序处理数据,作为数据处理的部分,信息被传送到寄存器文件111和存储器120,以及从寄存器文件111和存储器120传送信息。提取的低级数据捕获此信息流。例如,提取的低级数据可包括寄存器数据和存储器数据。此外,提取的低级数据可包括存储器访问历史(诸如存储器的地址和数据)。此外,提取的低级数据可包括指示特定数据在程序中的位置的信息,诸如程序计数器(PC)和迭代计数器。通过跟踪此数据,实施例能够估计什么信息实现由作为仿真的部分执行验证程序和参考程序得到的结果。
[0094] 比较数据产生器540将在仿真期间从验证程序和参考程序的每个提取的低级数据转换为适合于比较的形式。例如,验证程序和参考程序的映射表的实施例。为了执行比较,比较数据产生器将低级数据编译为映射表,从而映射表可被使用在比较处理中。
[0095] 通过将由低级数据提取器530提取的低级数据映射到在映射表产生器510中产生的映射表来执行低级数据的数据转换。
[0096] 差错位置提取器550将验证映射表与参考映射表进行比较,从而确定两个映射表之间是否存在数据的不一致记录。这种数据的不一致记录指示可存在需要被调试的问题,例如数据相关性问题。
[0097] 如果在两个映射表之间发现数据的不一致记录,则涉及数据的不一致记录的程序位置信息被获得。
[0098] 这样,使用低级数据所映射到的映射表,能够搜索与低级数据对应的高级数据。也就是,能够在低级代码中搜索引起问题的源代码的位置。例如,在提取的低级数据的PC值被映射到参考映射表的情况下,如果在验证映射表中的PC值与参考映射表中的PC之间发现不一致,则能够找出访问存储的特定部分的代码的位置(在该位置发现不一致)。
[0099] 图6是示出由在混合模式程序中检测源代码差错的位置的设备检测差错位置的过程的示例的示图。
[0100] 在图6的实施例中,多模式处理器被配置为具有VLIW模式和CGA模式两者。
[0101] 此外,验证程序是在VLIW模式和CGA模式下编译的程序,而参考程序是仅在VLIW模式下编译的程序。
[0102] 在实施例中,用于检测源代码差错的位置的设备60和61被构造为物理上相同的设备。然而,其他实施例可将附加或不同的结构元件包括在设备60和61中。然而,假设设备60指示VLIW加CGA混合模式下的设备,而设备61指示VLIW模式下的设备。此外,在VLIW和CGA混合模式下编译的程序是验证程序,而仅在VLIM模式下编译的程序是参考程序。编译处理假设在VLIM模式下产生的参考程序将是确保VLIW和CGA混合模式验证程序是连续程序的正确标准。
[0103] 编译器600和601的每个编译源代码,从而产生程序。
[0104] 如果编译的源代码具有循环部分,则循环部分针对预先优化被预处理,随后被映射在CGA结构上。由于预先优化,CGA映射代码的输出可与包括在源代码中的循环的输出不同。因此,不能通过执行主机编译和仿真来获得CGA映射代码的参考输出。然而,在图6的实施例中,通过在VLIW模式下映射相等源代码(在CGA模式下被映射)来获得参考值。因此,通过将在VLIW和CGA混合模式仿真期间提取的数据与在VLIW模式仿真期间提取的数据进行比较,由于如果VLIW和CGA混合模式仿真与VLIW模式仿真的结果匹配,则指示VLIW和CGA混合模式映射还没有破坏任何数据相关性,因此数据验证可能是可行的。
[0105] 在VLIW加CGA混合模式编译器600中,在CGA模式下被映射的源代码的输出数据在VLIW模式下被映射。映射表产生器610和611产生结果输出数据的寄存器分配映射表。
[0106] 与当在CGA模式下映射源代码时不同,当在VLIW模式下映射源代码时,由于虚拟寄存器溢出导致写存储器访问可能发生。在这种情况下,任何提取的数据不应用于比较。因此,仅VLIW模式的映射表可进一步包括程序计数器以及功能单元索引中的信息,指示将特别执行的指令是由于寄存器溢出还是用于访问存储器中的变量。
[0107] 当寄存器晶体管逻辑(RTL)仿真器620和621正在执行仿真时,低级数据提取器630和631中的每个对于每个写存储器访问提取地址和值。在仅VLIW模式下,低级数据提取器631进一步在每次存储器访问提取PC值和FU索引。当结束仿真时,低级数据提取器630和631分别提取从编译器600和601接收的物理寄存器的最终值。
[0108] 在对于相同地址的写存储器访问的几个数据的情况下,比较数据产生器640和641仅记录最终写存储器访问的数据。在VLIW模式下,比较数据产生器641提取PC值和FU索引,但是由于虚拟存储器溢出而不提取写存储器访问的值。
[0109] 同时,关于相同地址,读访问和写访问的顺序不改变。因此,如果在每个地址中的值的顺序彼此比较,则能够找出存储器相关性破坏。
[0110] 同时,在VLIW模式下,添加指示对映射表的写存储器访问是否由于寄存器溢出而发生的信息。此外,如果存储器相关性破坏的位置被发现,则与PC值或FU索引对应的源代码的位置(诸如,源代码的文件名和行数)可被提供。以这种方式,用户可发现差错发生的源代码的行数。一旦此信息对于用户可用,则用户随后可使用它来帮助调试处理以解决可能已经创建这些问题的代码中的潜在差错或者缺陷。此外,可进一步提供循环索引映射到的寄存器信息或存储器位置信息。
[0111] 寄存器晶体管逻辑(RTL)仿真器620和621提取涉及对存储器的读/写访问的地址。在VLIW模式下,PC值、将被执行的FU的索引信息、循环索引被映射到的寄存器的值或者存储器位置值被存储在一起。
[0112] 图7示出映射表的示例。
[0113] 参照图7,映射表存储涉及高级数据与低级数据的信息。在示例中,高级数据包括源代码的文件名、行号和变量名称。高级数据涉及在特定时间(时间=n,n+1,n+2)的特定PC以及低级数据(诸如寄存器地址和存储器地址)。
[0114] 图8示出提取的低级数据的示例。
[0115] 如图8所示,对于每个循环(时间=n,n+1,n+2,…),值和PC被映射到每个寄存器地址(或者存储器地址)。
[0116] 图9是示出根据另一实施例的在混合模式程序中检测源代码差错位置的方法的示例的流程图。
[0117] 参照图9,在混合模式程序中检测源代码差错的位置的方法包括:在操作2200产生验证数据表;在操作2210产生参考数据表;在操作2220将验证数据表与参考数据表进行比较;在操作2230检测差错位置。
[0118] 在操作2200,通过将在第一模式下编译的验证程序的低级数据映射到与验证程序有关的映射表来产生验证数据表。示例映射表已经显示在图7至图8中。当验证正被编译时产生映射表,并且在仿真期间可从验证程序提取低级数据。低级信息包括例如寄存器和/或存储器地址信息以及寄存器或存储器在给定时间关联的值。实施例能够确定源代码中的哪个高级指令导致这些低级改变。
[0119] 在操作2210,通过将在第二模式下编译的参考程序的低级数据映射到与参考程序有关的映射表来产生参考数据表。以与在操作2200产生验证数据表的方式类似的方式产生参考数据表。
[0120] 在操作2220,实施例通过将验证数据表与参考数据表进行比较来确定在验证数据表和参考数据表之间是否存在数据的不一致记录。如果不存在不一致,则实施例确定已经针对参考验证了将被验证的代码。
[0121] 在发现不一致记录的情况下,在操作2230,使用PC值和FU索引来获得涉及不一致记录的程序位置信息。
[0122] 因此,如果差错发生,用户可被提供指示触发差错的源代码的行号的信息。这种信息允许用户检查代码或者使用调试工具来纠错。
[0123] 执行在本文中描述的方法的程序指令或其一个或更多操作可被记录、存储或固定在一个或更多个计算机可读存储介质中。可由计算机来执行程序指令。例如,计算机可使得处理器执行程序指令。介质可单独地或与程序指令组合地包括数据文件、数据结构等。计算机可读存储介质的示例包括磁介质(诸如硬盘、软盘和磁带);光学介质(诸如CD ROM盘和DVD);磁光介质(诸如光盘);专门配置来存储和执行程序指令的硬件装置(诸如只读存储器(ROM)、随机存取存储器(RAM)、闪存等)。程序指令的示例包括机器代码(诸如由编译器产生)以及包括高级代码的文件,可由计算机使用解释器来执行高级代码。程序指令(也就是软件)可分布在联网的计算机系统上,从而软件以分布式方式被存储和执行。例如,可由一个或更多个计算机可读存储介质来存储软件和数据。另外,用于实现在本文中公开的示例实施例的功能程序、代码和代码段可由实施例所属领域的程序员基于或使用附图中的流程图和框图以及其在本文中提供的它们的相应描述而被容易地解释。另外,执行操作或方法的所述单元可以是硬件、软件或硬件和软件的一些组合。例如,单元可以是运行在计算机上的软件包或者运行软件的计算机。
[0124] 仅作为非详尽示出,在本文中描述的终端/装置/单元可指示移动装置(诸如,蜂窝电话、个人数字助理(PDA)、数字相机、便携式游戏平台和MP3播放器)、便携式/个人多媒体播放器(PM)、手持电子书、便携式膝上型PC、全球定位系统(GPS)导航、写字板、传感器和能够与本文中公开一致的无线通信或网络通信的装置(诸如,桌上型PC、高清晰电视(HDTV)、光盘播放器、机顶盒、家用电器等)。
[0125] 计算系统或计算机可包括与总线、用户接口和存储器控制器电连接的微处理器。还可包括闪存装置。闪存装置可经由存储器控制存储N比特数据。N比特数据被微处理器处理或将由微处理器处理,N可以是1或者大于1的整数。在计算系统或计算机是移动设备的情况下,电池可被附加地提供以供应计算系统或计算机的操作电压。对本领域的普通技术人员将是清楚的,计算系统或计算机可进一步包括应用芯片组、相机图像处理器(CIS)、移动动态随机存取存储器(DRAM)等。存储器控制器和闪存装置可构成使用非易失性存储器来存储数据的固态驱动器/盘(SSD)。
[0126] 以上已经描述了多个示例。然而,将理解,可做出各种修改。例如,如果描述的技术以不同顺序执行和/或如果在描述的系统、架构、装置或电路中的组件以不同方式组合和/或由其他组件或它们的等同物代替或补充,则可实现合适的结果。因此,其他实施在权利要求的范围内。