CN108121686B - 多处理器和多处理器系统 - Google Patents

多处理器和多处理器系统 Download PDF

Info

Publication number
CN108121686B
CN108121686B CN201711202502.2A CN201711202502A CN108121686B CN 108121686 B CN108121686 B CN 108121686B CN 201711202502 A CN201711202502 A CN 201711202502A CN 108121686 B CN108121686 B CN 108121686B
Authority
CN
China
Prior art keywords
core
debug
register
program
multiprocessor
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.)
Active
Application number
CN201711202502.2A
Other languages
English (en)
Other versions
CN108121686A (zh
Inventor
高畠志秦
盐田恒
中村淳
千叶雄司
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Renesas Electronics Corp filed Critical Renesas Electronics Corp
Publication of CN108121686A publication Critical patent/CN108121686A/zh
Application granted granted Critical
Publication of CN108121686B publication Critical patent/CN108121686B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/177Initialisation or configuration control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)
  • Microcomputers (AREA)

Abstract

本发明涉及多处理器和多处理器系统。即使当处理器核心的数量增加时,也能防止多处理器的大小增加。所述多处理器包含多个核心和调试控制单元。所述多个核心中的至少一个是调试核心,所述调试核心连接到所述调试控制单元,使得所述调试控制单元能参考并更新所述调试核心中的寄存器信息。所述调试控制单元将第一核心中的寄存器信息传送到所述调试核心,所述第一核心是所述多个核心之一,并且是待调试的核心。所述调试核心通过使用所传送的寄存器信息来调试程序,将在所述第一核心中执行所述程序。

Description

多处理器和多处理器系统
相关申请的交叉引用
本申请基于于2016年11月28日提交的第2016-230039号日本专利申请,并要求其优先权,所述日本专利申请整体通过引用并入本文。
技术领域
本公开涉及一种多处理器和一种多处理器系统。例如,本公开涉及一种用于调试由核心处理器执行的程序的多处理器和多处理器系统。
背景技术
第2000-76199号日本未经审查专利申请公开案公开了一种有关包含调试终端的多处理器装置的技术。第2000-76199号日本未经审查专利申请公开案中公开的多处理器装置包含用于每个处理器的调试接口(I/F)。
第2006-302162号日本未经审查专利申请公开案公开了一种有关多处理器系统的技术。第2006-302162号日本未经审查专利申请公开案中公开的多处理器系统包含用于每个处理器的调试功能单元,并且还包含控制电路中的调试功能单元。
发明内容
然而,本发明人已发现以下问题。第2000-76199号和第2006-302162号日本未经审查专利申请公开案中的每一者包含例如调试I/F的调试控制单元或调试功能单元,以便直接调试每个处理器核心。因此,存在处理器大小根据处理器核心数量而增加的问题。
从以下说明书描述和附图中将更清楚其它目的和新颖特征。
根据一个实施例,多处理器中包含的调试控制单元被配置为将第一核心中的寄存器信息传送到调试核心,第一核心是多个核心之一并且是待调试的核心,调试核心连接到调试控制单元,使得调试控制单元可以参考并更新调试核心中的寄存器信息。
根据上述方面,即使当处理器核心的数量增加时,也有可能防止处理器的大小增加。
附图说明
从以下结合附图从某些实施例的描述中,将更加清楚上述以及其它方面、优点和特征,其中:
图1是示出根据第一实施例的多处理器和调试器系统的配置的框图;
图2是示出根据第一实施例的多处理器的核心的内部配置的框图;
图3是示出根据第一实施例的多处理器的核心之间环形总线配置的框图;
图4是示出根据第一实施例的调试过程的流程的流程图;
图5是示出根据第一实施例的替换多处理器核心中的数据的过程流程的流程图;
图6是示出根据第二实施例的多处理器和调试器系统的配置的框图;
图7是示出根据第二实施例的替换多处理器核心中的数据的过程流程的流程图;
图8是示出根据第三实施例的替换多处理器核心中的数据的过程流程的流程图;
图9是示出根据第三实施例在多处理器中恢复程序执行之前进行的过程流程的流程图;以及
图10是示出根据第四实施例的多处理器系统的配置的框图。
具体实施方式
以下参照附图详细说明应用上述解决程序的方式的具体实施例。在整个附图中相同符号被指定给相同部件,并且为了使说明更清楚,视情况省略其重复说明。
在以下实施例中,当需要时,通过使用单独的部分或单独的实施例来说明本公开。然而,除非另有说明,否则这些实施例彼此并不相关。也就是说,它们以这样的方式相关,即一个实施例是另一个实施例的一部分或全部的修改实例、应用实例、详细实例或补充实例。此外,在以下实施例中,在提及元件数目等(包含数目、值、数量、范围等)的情况下,除了明确指定所述数目或所述数目基于其原理显然限定于特定数目的情况之外,所述数目不限于所述特定数目。也就是说,也可以使用比特定数目更大的数目或更小的数目。
此外,在以下实施例中,除了明确指定部件或部件基于其原理显然不可缺少的情况之外,这些部件(包含操作步骤等)不一定是必不可少的。类似地,在以下实施例中,当提及部件等的形状、位置关系等时,基本上类似于或相似所述形状的形状等也包含在所述形状内,除了明确指定形状或基于其原理排除该形状的情况之外。对于上述数目等(包含数目、值、数量、范围等)也是如此。
下文说明发明人如何达成下述实施例的思想的细节。作为用于车载信息系统的片上系统(SoC)的实例,存在通过处理从相机提供的图像来识别人或车辆的图像识别处理的处理器。这样的图像识别处理处理器是包含多个核心处理器(核心)的并行处理处理器。为了调试在多个核心上运行的程序,有必要在程序执行过程中同时检查多个核心的状态。因此,期望每个核心具有调试功能。然而,当每个核心都具有调试功能时,电路大小就会增加。同时,处理器的大小与制造成本直接相关。因而,希望处理器的大小尽可能小。因此,发明人已经发现以下实施例。
<第一实施例>
图1是示出根据第一实施例的多处理器101和调试器系统102的配置的框图。调试器系统102连接到多处理器101,并调试在多处理器101上运行的程序。调试器系统102例如是信息处理系统,例如计算机,并包含调试器108。作为在调试器系统102上运行的调试程序的调试器108从用户接收指令,向多处理器101提供与调试相关的指令,并输出调试结果等。
多处理器101包含调试控制单元103以及核心0_104、1_105、2_106和3_107。应注意,核心数目不一定是四个。也就是说,核心数目应至少为两个。调试控制单元103连接到作为调试核心的核心0_104(以下称为调试核心),使得调试控制单元103可以参考并更新核心0_104中的寄存器信息。调试控制单元103控制核心0_104,以便调试在核心0_104中运行的程序。调试控制单元103将作为多个核心之一且作为待调试的核心的第一核心中的寄存器信息传送到调试核心。
核心0_104至3_107中的每一个将寄存器信息存储在其内部寄存器、程序计数器、状态寄存器等中。寄存器信息被称为核心独特数据。核心0_104至3_107通过环形总线以环形配置连接。
图2是示出根据第一实施例的多处理器101的核心0_104的内部配置的框图。核心0_104包含寄存器信息1040、断点1044和I/F 0_301。如上所述,寄存器信息1040是存储在寄存器1041、程序计数器(PC)1042、状态寄存器1043等中的值。此外,调试控制单元103连接到核心0_104,使得它可以参考并更新寄存器1041、PC 1042和状态寄存器1043中的值。
断点1044是存储指令地址的区域,在开始调试之前该指令地址被设置并且在该指令地址中在某个中点程序被停止。I/F 0_301包含接收缓冲器3011和传输缓冲器3012。接收缓冲器3011是用于接收从邻近核心0_104的核心(例如核心3_107)传送的独特数据并且临时存储所接收到的独特数据的存储区。传输缓冲器3012是用于临时存储核心0_104的独特数据(即寄存器信息1040)以便将其传送到邻近核心0_104的核心(例如核心1_105)的存储区。也就是说,当核心0_104传送寄存器信息1040时,它将最初存储在寄存器1041、PC 1042和状态寄存器1043中的寄存器信息1040存储到传输缓冲器3012中。此外,核心0_104用存储在接收缓冲器3011中的寄存器信息来重写寄存器1041、PC 1042和状态寄存器1043。
应注意,每个核心1_105、2_106和3_107的内部配置类似于图2所示的配置,除了所述核心未连接到调试控制单元103以使所述调试控制单元能参考并更新所述核心中的寄存器信息之外。因此,所述核心既未在附图中图形化的示出,也未在说明书中被说明。
图3是示出连接根据第一实施例的多处理器101的核心的环形总线配置的框图。核心0_104、1_105、2_106和3_107分别包含与总线接口连接的I/F 0_301、1_302、2_303和3_304。具体地,I/F 0_301连接到I/F 1_302和3_304,并且I/F 1_302连接到I/F 0_301和2_303。此外,I/F 2_303连接到I/F 1_302和3_304,并且I/F 3_304连接到I/F 0_301和2_303。也就是说,每个核心通过总线I/F以环形配置连接到其相邻核心。此外,每个核心的独特数据沿图3中的箭头指示的方向传送。应注意,箭头指示的方向仅仅是实例,它可能是相反的方向。此外,核心的连接顺序也不限于此实例。
当每个核心从调试控制单元103接收到替换所述核心的独特数据的指令时,所述核心以预定顺序将其自身的独特数据传送到相邻核心之一。具体地,核心0_104的独特数据通过I/F 0_301的传输缓冲器传送到I/F 1_302的接收缓冲器。此外,核心1_105的独特数据通过I/F1_302的传输缓冲器传送到I/F 2_303的接收缓冲器。此外,核心2_106的独特数据通过I/F 2_303的传输缓冲器传送到I/F 3_304的接收缓冲器。此外,核心3_107的独特数据通过I/F 3_304的传输缓冲器传送到I/F 0_301的接收缓冲器。此外,每个核心将存储在其I/F的接收缓冲器中的独特数据存储到其内部寄存器中。
图4是示出根据第一实施例的调试过程的流程的流程图。在图4中,各个事件通过箭头连接,从而指示事件根据箭头的方向以时间顺序发生。应注意,在图4中,根据事件发生的地点,各个事件被分为调试器108的事件、调试控制单元103的事件和核心0_104的事件。
针对在调试期间程序可呈现的程序执行状态定义模式。具体来说,模式包含其中执行程序的执行模式和正在实施调试的调试模式。在图4所示的实例中,从调试器108开始流程的模式是调试模式。
此外,一般来说,在调试期间执行的任务包含(1)设置断点、(2)更改待调试的核心、(3)逐步执行,以及(4)恢复程序。此外,在任务(1)至(4)中的每个任务中参考并更新(即读取和写入)核心中的信息。
应注意,(2)更改待调试的核心意味着由调试器108操作的核心更改为由调试的操作者(以下称为“调试操作者”)指定的核心。执行调试时,首先进行核心的这种更改。也就是说,确定待调试的程序的一部分正在其中运行的核心。之后,使所确定的核心进行逐步执行的过程,和/或设置断点并且将由核心执行的程序提前到断点。图4示出了流程的实例。
(1)设置断点
当程序将在某个指令地址处停止时,在每个内核中设置断点。具体来说,首先,调试器108从调试操作者接收程序中的指令地址的指定,并向调制控制单元103输出将接收到的指令地址设置为断点的指令(以下称为“断点设置指令”)(200)。调试控制单元103响应于断点设置指令将指令地址写入每个核心的断点1044中(210)。
之后,调试器108响应于来自调试操作者的指令向调试控制单元103输出执行程序的指令(以下称为“程序执行指令”)(201)。调试控制单元103将模式更改为执行模式(211),并使核心0_104执行程序(220)。应注意,在其它核心1_105至3_107中也并行执行程序。
当核心0_104上运行的程序到达断点处的指令地址时,核心0_104停止其操作(221),并将该停止通知调试控制单元103。在被通知停止时,调试控制单元103将模式更改为调试模式(212),停止所有核心,并将该停止通知调试器108。
在被通知停止时,调试器108通过调试控制单元103参考并更新停止的核心0_104中的寄存器信息(202)。
(2)更改待调试的核心
当待调试的核心从核心0_104更改为另一个核心时,待调试的核心的独特数据被传送到核心0_104。通过这样做,可以调试在未连接到调试控制单元103的核心上运行的程序的一部分。
具体地,调试器108响应于来自调试操作者的指令向调试控制单元103输出更改待调试的核心的指令(以下称为“调试目标更改指令”)(203)。在接收到此指令后,调试控制单元103替换核心的数据(213)。应注意,稍后将说明用于替换核心数据的方法的细节。作为此替换的结果,调试器108通过调试控制单元103参考并更新停止的核心0_104中的寄存器信息(204)。此时,核心0_104中的寄存器信息已经被待调试的核心的寄存器信息替换。
(3)逐步执行
当进行逐步执行时,调试器108响应于来自调试操作者的指令向调试控制单元103输出逐步执行的指令(以下称为“逐步执行指令”)(205)。在接收到此指令后,调试控制单元103设置进行逐步执行的步骤的数目,并将模式更改为执行模式(214)。核心0_104通过步骤214中设置的步骤数目来执行程序(222)。之后,核心0_104停止其操作(223)并将该停止通知调试控制单元103。
在被通知停止后,调试控制单元103将模式更改为调试模式(215),并通知调试器108模式更改为调试模式。在被通知模式更改后,调试器108通过调试控制单元103参考并更新已经完成逐步执行的核心0_104中的寄存器信息(206)。
(4)恢复程序
当程序恢复时,调试器108响应于来自调试操作者的指令向调试控制单元103输出恢复程序的指令(以下称为“程序恢复指令”)(207)。在接收到指令后,调试控制单元103将模式更改为执行模式(216),使核心0_104至3_107恢复程序的执行(224)。
当核心0_104上运行的程序到达断点处的指令地址时,核心0_104停止其操作(225),并将该停止通知调试控制单元103。在被通知停止时,调试控制单元103将模式更改为调试模式(217),停止所有核心,并将该停止通知调试器108。
在被通知停止后,调试器108通过调试控制单元103参考并更新核心0_104中的寄存器信息(208)。应注意,当程序在步骤225中尚未到达断点时,核心0_104至3_107继续操作,直到完成程序执行。通过重复上述过程,实施将待调试的核心的独特数据传送到核心0_104的过程。
图5是示出根据第一实施例的替换处理器核心中的数据的过程流程的流程图。图5中的过程对应于图4的步骤213中的核心数据替换过程。首先,调试控制单元103参考核心0_104的寄存器信息1040,从而确定所述寄存器信息是否是待调试的核心的独特数据(401)。这里,假设原始核心的识别信息包含在寄存器信息1040中。接着,当调试控制单元103确定寄存器信息不是待调试的核心的独特数据时,核心0_104指示每个核心将其独特数据传送到相邻核心(402)。接着,过程返回到步骤401。在步骤401中,当调试控制单元103确定寄存器信息是待调试的核心的独特数据时,这意味着调试控制单元103可以参考并更新的寄存器信息是待调试的核心的独特数据。因此,调试控制单元103完成核心数据替换过程。也就是说,独特数据被重复地传送到以环形配置连接的核心之间的相邻核心,直到待调试的核心的独特数据被传送到核心0_104。也就是说,待调试的核心的独特数据以桶队方式传送到核心0_104。
如上所述,在此实施例中,调试控制单元可以参考并更新存储在多个核心之一中的寄存器信息,即存储在调试核心中的寄存器信息。此外,核心以环形配置连接,使得作为核心独特数据的寄存器信息可以在核心之间传送。因此,甚至调试控制单元不能参考的核心中的寄存器信息也可以被相继传送到调试核心。通过这样做,有可能在调试核心中基本上执行在待调试的核心上运行的程序的一部分的调试。此外,由于仅需要一个调试控制单元,即使处理器包含多个核心也可以减小处理器的大小。
应注意,此实施例也可以表示如下。也就是说,多处理器包含多个核心和调试控制单元。多个核心中的至少一个是调试核心,调试核心连接到调试控制单元,使得调试控制单元可以参考并更新调试核心中的寄存器信息。调试控制单元将第一核心中的寄存器信息传送到调试核心,第一核心是多个核心之一并且是待调试的核心。以这种方式,即使增加处理器核心的数目,也能够防止或减少处理器的大小增加。
此外,调试核心通过使用传送的寄存器信息来调试将在第一核心中执行的程序。以这种方式,能够基本上在第一核心中执行调试。
多个核心以环形配置连接。当调试核心中的寄存器信息不是待调试的第一核心的寄存器信息时,调试控制单元将寄存器信息传送到与调试核心相邻的核心。这样,即使对于调试控制单元不能直接参考和更新的寄存器信息,调试控制单元也能够通过调试核心来参考和更新所述寄存器信息。
<第二实施例>
第二实施例是上述第一实施例的修改实例。根据第二实施例的多处理器进一步包含保存区。调试控制单元将调试核心中的寄存器信息传送到保存区后,将第一个核心中的寄存器信息传送到调试核心。以这种方式,与第一实施例相比,能够使数据替换过程的时间一致,从而提高调试操作的平均速度。
图6是示出根据第二实施例的多处理器101a和调试器系统102的配置的框图。多处理器101a包含调试控制单元103、核心0_104、1_105、2_106和3_107以及保存区501。保存区501是可以存储作为核心独特数据的寄存器信息的存储区。应注意,核心0_104至3_107中的每一个通过总线连接到保存区501。也就是说,核心独特数据可以在任意核心之间传送,并且核心独特数据也可以在任意核心与保存区501之间传送。
应注意,除了步骤213中的核心数据替换过程之外,调试过程流程大致类似于图4所示的第一实施例中的流程。图7是示出根据第二实施例的替换处理器核心中的数据的过程流程的流程图。图7示出了通过使用保存区501在核心0_104与待调试的核心之间交换独特数据的过程。
首先,调试控制单元103确定连接到调试控制单元103的核心0_104的寄存器信息是否是待调试的核心的独特数据,从而确定是否替换数据(601)。当调试控制单元103确定替换数据时,其将核心0_104中的寄存器信息复制到保存区501,从而保存数据(602)。接下来,调试控制单元103指示将待调试的核心的寄存器信息复制到核心0_104(603)。也就是说,调试控制单元103将待调试的核心的独特数据传送到调试核心。接着,调试控制单元103指示将存储在保存区501中的数据复制到待调试的核心(604)。也就是说,调试控制单元103将保存的数据传送到待调试的核心。应注意,当调试控制单元103在步骤601中确定核心0_104的寄存器信息是待调试的核心的独特数据时,调试控制单元103完成数据替换过程。
如上所述,第二实施例包含其中保存调试核心的原始独特数据的保存区501,以及将核心彼此连接并将每个核心连接到保存区501的总线。在前述第一实施例中,当核心数目大并且待调试的核心位于远离调试核心的位置时,数据替换的次数(传送的次数(以下简称为传送次数))增加,因此有可能延长调试操作。与此相反,在第二实施例中,数据替换过程中的数据传送次数是三次。因而,能够使数据替换过程的时间一致。因此,与第一实施例相比,可以提高调试操作的平均速度。
<第三实施例>
第三实施例是上述第二实施例的修改实例。当待调试的核心更改为多个核心中的第二核心时,根据第三实施例的调试控制单元将调试核心中的寄存器信息传送到第一核心,并将第二核心中的寄存器信息传送到调试核心。以这种方式,与第二实施例相比,可以提高核心数据替换过程的速度。
此外,当调试核心被更改为第二核心时,调试控制单元确定调试核心中的寄存器信息是否被重写。接着,当调试控制单元确定调试核心中的寄存器信息已被重写时,其将所述寄存器信息传送到第一核心。以这种方式,当寄存器信息尚未被重写时,不传送寄存器信息。因此,能够减少传送次数,并且能够进一步提高处理速度。
应注意,所述配置类似于图6所示的第二实施例中的配置,并且调试过程流程与图4所示的第一实施例中的流程大致相似。然而,图4的步骤213中的核心数据替换过程以及步骤211和216中更改为执行模式的过程不同。
在前述第二实施例中,当更改了待调试的核心时,总是需要图7的步骤602、603和604中的三次数据传送。也就是说,在第二实施例中,在作为调试核心的核心0_104与待调试的核心之间交换数据。与此相反,在第三实施例中,假设多次更改待调试的核心。首先将核心0_104的独特数据保存在保存区501中,接着将待调试的核心的独特数据传送到核心0_104。然后,在读取和写入核心0_104的寄存器信息之后,将作为此寄存器信息的核心独特数据写回到待调试的原始核心。
图8是示出根据第三实施例的替换多处理器101a的核心中的数据的过程流程的流程图。首先,调试控制单元103确定待调试的核心是否是核心0_104(701)。当待调试的核心是核心0_104时,过程进行到步骤702,而当待调试的核心不是核心0_104时,过程进行到步骤706。
当在步骤701中待调试的核心是核心0_104时,调试控制单元103确定核心0_104中的寄存器信息是否是核心0_104的独特数据(702)。当核心0_104中的寄存器信息是核心0_104的独特数据时,调试控制单元103完成所述过程。这是因为由于核心0_104中的寄存器信息是核心0_104的独特数据,所以可以通过使用核心0_104的独特数据来进行调试,因此不需要替换数据。
另一方面,当步骤702中核心0_104中的寄存器信息不是核心0_104的独特数据时,调试控制单元103确定核心0_104的寄存器信息是否已被调试器108重写(703)。应注意,调试器108通过调试控制单元103重写(更新)核心0_104的寄存器信息。因此,调试控制单元103可以确定寄存器信息是否被重写。
当在步骤703中寄存器信息尚未被重写时,过程进行到步骤705。这是因为由于寄存器信息尚未被重写,核心0_104中的寄存器信息与待调试的原始核心的寄存器信息相同。因此,不需要重写寄存器信息,并且可以在不重写寄存器信息的情况下进行调试。
另一方面,当在步骤703中核心0_104的寄存器信息已被调试器108重写时,调试控制单元103传送核心0_104中已被重写的寄存器信息并由此将其返回到待调试的原始核心(704)。
之后,调试控制单元103将保存在保存区501中的核心0_104的寄存器信息(独特数据)传送到核心0_104(705)。
接下来,当在步骤701中待调试的核心不是核心0_104时,调试控制单元103确定核心0_104中的寄存器信息是否是核心0_104的独特数据(706)。当核心0_104中的寄存器信息是核心0_104的独特数据时,过程进行到步骤710,而当寄存器信息不是独特数据时,过程进行到步骤707。
当在步骤706中核心0_104中的寄存器信息不是核心0_104的独特数据时,调试控制单元103确定核心0_104的寄存器信息是否已被调试器108重写(707)。
当在步骤707中寄存器信息尚未被重写时,过程进行到步骤709。这是因为由于寄存器信息尚未被重写,所以核心0_104中的寄存器信息与待调试的原始核心的寄存器信息相同。因此,不需要重写寄存器信息,并且可以在不重写寄存器信息的情况下进行调试。
另一方面,当在步骤707中核心0_104的寄存器信息已被调试器108重写时,调试控制单元103传送核心0_104中已被重写的寄存器信息并由此将其返回到待调试的原始核心(708)。
之后,调试控制单元103将保存在保存区501中的核心0_104的寄存器信息(独特数据)传送到核心0_104(709)。
当在步骤706中核心0_104中的寄存器信息是核心0_104的独特数据时,调试控制单元103复制核心0_104的寄存器信息并由此将其保存在保存区501中(710)。之后,过程进行到步骤709。
下面说明使用图8所示的流程进行调试的实例。具体地,在实例中,核心1_105成为待调试的核心,因此读取核心1_105的独特数据。之后,核心2_106成为待调试的核心,因此读取核心2_106的独特数据。
首先,在步骤701中,由于待调试的核心是核心1_105,所以过程进行到步骤706。接下来,在步骤706中,由于核心0_104中的寄存器信息是核心0_104的独特数据,所以过程进行到步骤710。接着,在步骤710中,将核心0_104的独特数据保存在保存区501中。
之后,过程进行到步骤709,将作为待调试的核心的核心1_105的独特数据传送到核心0_104。以这种方式,调试器108可以通过连接到核心0_104的调试控制单元103读取独特数据,以获取核心1_105的独特数据。此外,到目前为止,数据传送的次数是两次。
之后,核心2_106成为待调试的核心。接着,在步骤701中,由于待调试的核心是核心2_106,所以过程进行到步骤706。此外,由于核心0_104中的寄存器信息是核心1_105的独特数据,所以过程进行到步骤707。
在步骤707中,由于位于核心0_104中的核心1_105的独特数据尚未被重写,所以过程进行到步骤709。接着,在步骤709中,将核心2_106的独特数据传送到核心0_104。
以这种方式,调试器108可以通过连接到核心0_104的调试控制单元103读取独特数据,以获取核心2_106的独特数据。此外,当待调试的核心从核心1_105更改为核心2_106时进行的数据传送的次数是一次。
在图8所示的流程中,当替换待调试的核心的数据时,仅核心0_104的独特数据被存储在保存区501中。因此,需要将保存的数据传送到核心0_104以恢复程序的执行。相应地,图9是示出根据第三实施例在处理器中恢复程序执行之前进行的过程流程的流程图。
首先,调试控制单元103确定核心0_104中的寄存器信息是否已被调试器108重写(801)。当在步骤801中寄存器信息尚未被重写时,过程进行到步骤803。另一方面,当在步骤801中核心0_104中的寄存器信息已被调试器108重写时,调试控制单元103传送核心0_104中已被重写的寄存器信息并由此将其返回到待调试的原始核心(802)。
之后,调试控制单元103将保存在保存区501中的核心0_104的寄存器信息(独特数据)传送到核心0_104(803)。以这种方式,能够恢复所有核心的独特数据,从而恢复程序的执行。
如前所述,在第二实施例中,总是进行三次数据传送,以替换待调试的核心的独特数据和核心0_104的独特数据。与此相反,在第三实施例中,当必须完成的所有事情是参考并更新核心中的寄存器信息时,进行两次传送就足够,即传送到保存区501以及从待调试的核心传送到核心0_104。此外,当待调试的核心进一步更改为另一个核心时,当存储在核心0_104中的待调试的核心的独特数据尚未被重写时,只须进行一次传送。此外,即使独特数据已被重写,也只须进行两次传送。
然而,当程序的执行恢复时,需要将数据从保存区501传送到核心0_104。因此,当存储在核心0_104中的待调试的核心的独特数据尚未被重写时,需要额外进行一次传送,而当独特数据已被重写时,需要额外进行两次传送。也就是说,当待调试的核心被更改且程序的执行被恢复时,在某些情况下最多需要进行四次数据传送。
第三实施例在停止执行程序的状态中参考多个核心中的数据的情况下是有效的。与第二实施例相比通过减少数据传送的次数,可以提高调试操作的速度。
<第四实施例>
第四实施例是上述第一至第三实施例的修改实例。也就是说,第四实施例是多处理器系统,其包含:根据第一至第三实施例之一的多处理器;以及包含多个保存区的存储器,每个保存区对应于多个核心中的相应一个核心,且被配置为存储相应核心的寄存器信息。也就是说,使用现有的存储器作为核心的寄存器信息的保存区。
图10是示出根据第四实施例的多处理器系统100的配置的框图。多处理器系统100包含多处理器101b和存储器901。多处理器101b包含调试控制单元103以及核心0_104、1_105、2_106和3_107。核心0_104至3_107中的每一个通过总线连接到存储器901。
存储器901是设置在多处理器101b外部的存储器设备,并存储程序等(未示出)。此外,存储器901存储核心0数据902、核心1数据903、核心2数据904和核心3数据905。核心0数据902是核心0_104的寄存器信息的副本。类似地,核心1数据903是核心1_105的寄存器信息的副本,核心2数据904是核心2_106的寄存器信息的副本。此外,核心3数据905是核心3_107的寄存器信息的副本。
调试控制单元103在调试时指示每个核心将其寄存器信息保存在存储器901中。以这种方式,调试控制单元103可以通过核心0_104来参考并更新存储器901中的核心0数据902至核心3数据905。
<其它实施例>
此外,尽管在上述实施例中将本公开解释为硬件配置,但是本公开不限于硬件配置。通过使诸如中央处理单元(CPU)的处理器执行计算机程序来实现任意过程,可以实现本公开。
在上述实例中,可以使用任何类型的非暂时性计算机可读介质将程序存储至计算机并提供给计算机。非暂时性计算机可读介质包含任何类型的有形存储介质。非暂时性计算机可读介质的实例包含磁存储介质(例如软盘、磁带、硬盘驱动器等)、光磁存储介质(例如磁光盘)、CD-ROM(压缩盘只读存储器)、CD-R(可记录压缩盘)、CD-R/W(可重写压缩盘)和半导体存储器(例如掩模ROM、PROM(可编程ROM)、EPROM(可擦除PROM)、闪存ROM、RAM(随机存取存储器)等)。可以使用任何类型的暂时性计算机可读介质来将程序提供给计算机。暂时性计算机可读介质的实例包含电信号、光信号和电磁波。暂时性计算机可读介质可以经由有线通信线路(例如电线和光纤)或无线通信线路向计算机提供程序。
上文已经基于实施例具体地解释了本申请的发明人所作的本公开。然而,本公开不限于上述实施例,毋庸置疑,在不脱离本公开的精神和范围的情况下可以进行各种修改。
第一、第二、第三和第四实施例可以由所属领域的普通技术人员按需要进行组合。
虽然已经根据几个实施例描述了本发明,但是所属领域的技术人员将认识到,可以在所附权利要求书的精神和范围内以各种修改来实施本发明,并且本发明不限于上述实例。
此外,权利要求书的范围不受上述实施例的限制。
另外,应注意的是,申请人的意图是涵盖所有权利要求要素的等同内容,即使在审查期间后续会有所修改。

Claims (20)

1.一种多处理器,包括:
第一核心,所述第一核心包括第一寄存器;
第二核心,所述第二核心耦合到所述第一核心并且包括第二寄存器;以及
调试控制电路,所述调试控制电路耦合到所述第一核心,并且响应于来自调试器的指令来控制在所述第一核心和所述第二核心中执行的第一程序和第二程序的调试过程,其中
所述第一核心执行所述第一程序,以在所述第一寄存器中存储根据所述第一程序的第一信息,
所述第二核心执行所述第二程序,以在所述第二寄存器中存储根据所述第二程序的第二信息,
所述第一程序和所述第二程序被并行执行,
在所述第一程序和所述第二程序被并行执行后,
响应于来自所述调试器的指令,所述调试控制电路参考并更新在所述第一寄存器中存储的所述第一信息,
当所述调试控制电路接收到来自所述调试器的调试目标更改指令时,所述调试控制电路将所述第二寄存器中存储的所述第二信息传送到所述第一寄存器,并且
所述第一核心通过使用从所述第二核心传送的所述第二信息来执行所述第二程序。
2.根据权利要求1所述的多处理器,还包括第三核心,所述第三核心耦合到所述第一核心和所述第二核心,并且包括第三寄存器,其中
所述第三核心执行第三程序,以在所述第三寄存器中存储根据所述第三程序的第三信息,
所述第一程序、所述第二程序和所述第三程序被并行执行,以及
在所述第一程序、所述第二程序和所述第三程序被并行执行后,当所述调试控制电路接收到来自所述调试器的调试目标更改指令时,所述调试控制电路将所述第二寄存器中存储的所述第二信息传送到所述第一寄存器,并且将所述第一寄存器中存储的所述第一信息传送到所述第三寄存器。
3.根据权利要求1所述的多处理器,其中寄存器信息包含程序计数器或状态寄存器中的至少一项的值。
4.根据权利要求1所述的多处理器,还包括耦合到所述第一核心的保存区,其中
当所述第二寄存器中存储的所述第二信息被传送到所述第一寄存器时,所述调试控制电路将所述第一寄存器中存储的所述第一信息传送到所述保存区。
5.根据权利要求1所述的多处理器,还包括断点存储部分,所述断点存储部分存储所述第一程序中包含的指令的第一断点集合和所述第二程序中包含的指令的第二断点集合,其中
所述第一程序和所述第二程序被并行执行,直到所述第一核心执行所述第一断点集合的所述第一程序的所述指令。
6.根据权利要求1所述的多处理器,还包括存储器,所述存储器包括保存区,在所述保存区中存储作为核心独特数据的、来自所述第一寄存器和所述第二寄存器的寄存器信息。
7.根据权利要求1所述的多处理器,其中所述第一核心、所述第二核心和所述调试控制电路被形成在与调试系统分离的芯片中,所述调试系统包括所述调试器,所述调试器运行调试器程序以调试所述第一核心和所述第二核心。
8.一种多处理器系统,包括:
根据权利要求1所述的多处理器,以及
存储器,所述存储器包括多个保存区,所述保存区中的每一个保存区对应于多个核心中的相应的核心并且被配置为存储该相应的核心的寄存器信息。
9.一种多处理器,包括:
多个核心;
调试控制电路;以及
保存区,其中
所述多个核心中的至少一个核心是调试核心,所述调试核心被连接到所述调试控制电路,从而所述调试控制电路参考并更新所述调试核心中的寄存器信息,以及
所述调试控制电路将第一核心中的寄存器信息传送到所述调试核心,所述第一核心是所述多个核心中的一个核心并且是待调试的核心,
所述调试控制电路在将所述调试核心中的所述寄存器信息传送到所述保存区之后,将所述第一核心中的所述寄存器信息传送到所述调试核心。
10.根据权利要求9所述的多处理器,其中
当所述待调试的核心被更改为所述多个核心中的第二核心时,所述调试控制电路将所述调试核心中的所述寄存器信息传送到所述第一核心,以及
所述调试控制电路将所述第二核心中的寄存器信息传送到所述调试核心。
11.根据权利要求10所述的多处理器,其中
当所述待调试的核心被更改为所述第二核心时,所述调试控制电路确定所述调试核心中的所述寄存器信息是否已被重写,以及
当所述调试控制电路确定了所述调试核心中的所述寄存器信息已被重写时,所述调试控制电路将所重写的所述寄存器信息传送到所述第一核心。
12.根据权利要求9所述的多处理器,其中所述调试核心通过使用所传送的所述寄存器信息来调试程序。
13.根据权利要求9所述的多处理器,还包括存储器,所述存储器包括所述保存区,在所述保存区中存储作为对于核心而言独特的数据的寄存器信息。
14.根据权利要求9所述的多处理器,其中当所述调试控制电路确定寄存器信息不是待调试的核心的独特数据时,所述调试控制电路指示所述多个核心中的每个核心将其独特数据传送到相邻核心。
15.根据权利要求9所述的多处理器,其中当待调试的核心从所述多个核心之中被更改时,所述待调试的核心的独特数据被传送到所述多个核心中的另一核心,以调试在未连接到所述调试控制电路的核心上运行的程序的一部分。
16.一种多处理器,包括:
多个核心;
调试控制器;以及
存储器,所述存储器包含保存区,其中
所述多个核心中的至少一个核心是调试核心,所述调试核心被连接到所述调试控制器,使得所述调试控制器参考并更新所述调试核心中的寄存器信息,以及
所述调试控制器将第一核心中的寄存器信息传送到所述调试核心,所述第一核心是所述多个核心中的一个核心并且是待调试的核心,
所述调试控制器在将所述调试核心中的所述寄存器信息传送到所述保存区之后,将所述第一核心中的所述寄存器信息传送到所述调试核心。
17.根据权利要求16所述的多处理器,其中当所述待调试的核心被更改为所述多个核心中的第二核心时,所述调试控制器将所述调试核心中的所述寄存器信息传送到所述第一核心。
18.根据权利要求17所述的多处理器,其中所述调试控制器将所述第二核心中的寄存器信息传送到所述调试核心。
19.根据权利要求17所述的多处理器,其中
当所述待调试的核心被更改为所述第二核心时,所述调试控制器确定所述调试核心中的所述寄存器信息是否已被重写。
20.根据权利要求19所述的多处理器,其中当所述调试控制器确定了所述调试核心中的所述寄存器信息已被重写时,所述调试控制器将所重新的所述寄存器信息传送到所述第一核心。
CN201711202502.2A 2016-11-28 2017-11-27 多处理器和多处理器系统 Active CN108121686B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2016-230039 2016-11-28
JP2016230039A JP6744806B2 (ja) 2016-11-28 2016-11-28 マルチプロセッサ

Publications (2)

Publication Number Publication Date
CN108121686A CN108121686A (zh) 2018-06-05
CN108121686B true CN108121686B (zh) 2023-06-09

Family

ID=60043048

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711202502.2A Active CN108121686B (zh) 2016-11-28 2017-11-27 多处理器和多处理器系统

Country Status (5)

Country Link
US (1) US10489271B2 (zh)
EP (1) EP3327573B1 (zh)
JP (1) JP6744806B2 (zh)
CN (1) CN108121686B (zh)
TW (1) TW201820169A (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108897714B (zh) * 2018-07-03 2022-05-24 中国人民解放军国防科技大学 一种区域自治的多核或众核处理器芯片
US10824540B2 (en) 2018-12-28 2020-11-03 Datalogic Ip Tech S.R.L. Terminal failure buster
JP7378254B2 (ja) * 2019-09-19 2023-11-13 キヤノン株式会社 マルチプロセッサデバイス
CN116340188B (zh) * 2023-05-26 2023-08-04 深流微智能科技(深圳)有限公司 Gpu芯片渲染任务的调试方法及系统

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08147189A (ja) * 1994-11-25 1996-06-07 Hitachi Ltd 並列計算機のオペレーティングシステムのデバッグ方法
JP2000076199A (ja) 1998-08-28 2000-03-14 Nec Corp デバッグ端子を有するマルチプロセッサ装置
KR100802606B1 (ko) * 2001-04-13 2008-02-13 엘지전자 주식회사 데이터의 천이 상태에 따른 디버깅 장치 및 방법
US7080283B1 (en) * 2002-10-15 2006-07-18 Tensilica, Inc. Simultaneous real-time trace and debug for multiple processing core systems on a chip
US20050262396A1 (en) * 2004-04-26 2005-11-24 Agilent Technologies, Inc Apparatus and method for automated test setup
US7627784B1 (en) * 2005-04-06 2009-12-01 Altera Corporation Modular processor debug core connection for programmable chip systems
JP4600134B2 (ja) 2005-04-25 2010-12-15 富士通セミコンダクター株式会社 マルチプロセッサシステム
US7665002B1 (en) * 2005-12-14 2010-02-16 Advanced Micro Devices, Inc. Multi-core integrated circuit with shared debug port
US8533530B2 (en) * 2006-11-15 2013-09-10 Qualcomm Incorporated Method and system for trusted/untrusted digital signal processor debugging operations
CN101710300B (zh) * 2009-11-03 2011-11-02 龙芯中科技术有限公司 实现多核处理器ejtag可调试性的装置及系统
CN102117241A (zh) * 2009-12-30 2011-07-06 华为技术有限公司 一种多核系统调试方法和多核系统
TW201145016A (en) * 2010-06-15 2011-12-16 Nat Univ Chung Cheng Non-intrusive debugging framework for parallel software based on super multi-core framework
TW201235833A (en) * 2011-02-16 2012-09-01 Ind Tech Res Inst System and method for multi-core synchronous debugging of a multi-core platform
WO2012127955A1 (ja) * 2011-03-24 2012-09-27 ルネサスエレクトロニクス株式会社 半導体装置
JP5660010B2 (ja) * 2011-11-21 2015-01-28 トヨタ自動車株式会社 情報処理装置、データ復帰方法
CN102880536B (zh) * 2012-09-07 2015-06-03 杭州中天微系统有限公司 一种多核处理器的jtag调试方法
US9404970B2 (en) * 2014-11-14 2016-08-02 Cavium, Inc. Debug interface for multiple CPU cores

Also Published As

Publication number Publication date
EP3327573A1 (en) 2018-05-30
EP3327573B1 (en) 2023-09-06
JP6744806B2 (ja) 2020-08-19
TW201820169A (zh) 2018-06-01
JP2018088048A (ja) 2018-06-07
US10489271B2 (en) 2019-11-26
CN108121686A (zh) 2018-06-05
US20180150386A1 (en) 2018-05-31

Similar Documents

Publication Publication Date Title
CN108121686B (zh) 多处理器和多处理器系统
CN109726163B (zh) 一种基于spi的通信系统、方法、设备和储存介质
RU2665307C2 (ru) Восстановление приложения из моментального снимка
CN109933348A (zh) 一种电子控制单元中Bootloader的更新方法和装置
US20180101304A1 (en) Configuration control system and configuration control method
CN104598402A (zh) 一种闪存控制器和闪存控制器的控制方法
JP6257506B2 (ja) 電子制御装置のメモリ内のソフトウェアを変更する方法
CN108694052B (zh) 一种固件升级方法、固件升级装置及固件升级系统
US20240045787A1 (en) Code inspection method under weak memory ordering architecture and corresponding device
CN107315449B (zh) 计算机设备、读取时间的方法和写入时间的方法
US9606923B2 (en) Information processing device with shared memory, memory order guarantee method using counters fence instructions in relation to cache-oriented requests, and recording medium storing program
US9223697B2 (en) Computer reprogramming method, data storage medium and motor vehicle computer
JP2008198060A (ja) 情報処理装置、パッチコード実装システム、電子機器及びパッチコードの実装方法
US20030084232A1 (en) Device and method capable of changing codes of micro-controller
CN105138308A (zh) 一种更新寄存器的方法及装置
US10216679B2 (en) Semiconductor device and control method thereof
CN110609705B (zh) 一种提高mcu总线效率的方法、智能终端、存储介质及芯片
JP5641181B2 (ja) 二重化処理装置
CN105630690A (zh) 异构硬件中大数据处理的方法及装置
CN112802527B (zh) 嵌入式闪存高速编程的实现方法、嵌入式闪存的编程系统
CN103593320B (zh) 多处理器系统、装置和方法
JP2003108513A (ja) ハードウェア・チェーン・プル
US20240302961A1 (en) Memory system, firmware update method, and program field
CN107025144B (zh) 用于写入以及读取数据集的方法
CN112148201A (zh) 数据写入方法、装置及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant