CN113454607B - 调试方法、装置及片上系统 - Google Patents

调试方法、装置及片上系统 Download PDF

Info

Publication number
CN113454607B
CN113454607B CN201980091541.0A CN201980091541A CN113454607B CN 113454607 B CN113454607 B CN 113454607B CN 201980091541 A CN201980091541 A CN 201980091541A CN 113454607 B CN113454607 B CN 113454607B
Authority
CN
China
Prior art keywords
debug
component
debugged
debugging
instruction
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
CN201980091541.0A
Other languages
English (en)
Other versions
CN113454607A (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.)
Hangzhou Fabu Technology Co Ltd
Original Assignee
Hangzhou Fabu Technology Co Ltd
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 Hangzhou Fabu Technology Co Ltd filed Critical Hangzhou Fabu Technology Co Ltd
Publication of CN113454607A publication Critical patent/CN113454607A/zh
Application granted granted Critical
Publication of CN113454607B publication Critical patent/CN113454607B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • 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
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3656Software debugging using additional hardware using a specific debug interface
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions

Abstract

提供了一种调试方法、装置及片上系统。该调试方法包括:待调试组件接收来自控制器的调试指令,以及该待调试组件根据该调试指令和该待调试组件内部的状态机的配置进行调试操作。进而可以实现片上系统上的组件的SW级调试操作,从而提高片上系统上这些具有大量数据流的组件的调试效率。

Description

调试方法、装置及片上系统
技术领域
本申请涉及调试技术领域,尤其涉及一种调试方法、装置及片上系统。
背景技术
随着人工智能(artificial intelligence,AI)的发展,AI中的一些计算可以通过设置在片上系统(system on chip,SoC)上的各种组件来完成,例如,AI中的一些计算可以通过使用AI加速器来加速,AI加速器由CPU、GPU、现场可编程门阵列(field-programmablegate array,FPGA)、专用集成电路(application specific integrated circuit,ASIC)或它们的任意组合来实现。
目前,深度神经网络(deep neural network,DNN)在AI加速器上运行,最流行的DNN是卷积神经网络(Convolution neural network,CNN)。CNN是一系列层,其在深度学习算法(deep learning algorithm)中堆叠以形成任务图形。随着用于自动驾驶的深度学习算法的出现,CNN通过向网络添加更多层以提高准确性而变得越来越深层。每一层都是一组数学运算,其将一个三维输入数据转换为另一个三维输入数据。每一层都进一步分解为块(tile)以适应片上内存尺寸(on-die memory dimension)。考虑到大量数据流经片上系统内部的若干模块,AI加速器中的后硅漏洞(post-silicon bugs)很难调试。用于深度学习算法的典型数据流要求运行到多个千兆字节(GByte)。
因此,片上系统上这些具有大量数据流的组件的调试效率非常低。
提供该背景信息以揭示申请人认为可能与本申请相关的信息。无须承认,也不应解释为,任何前述信息构成针对本申请的现有技术。
发明内容
鉴于上述内容,为了克服上述问题,本申请提供了一种调试方法、装置及片上系统。
前述和其他目的通过独立权利要求的主题实现。根据从属权利要求、说明书和附图,进一步的实施形式是显而易见的。
本申请的第一方面涉及一种调试方法,该方法包括:待调试组件接收来自控制器的调试指令;该待调试组件根据该调试指令和该待调试组件内部的状态机的配置进行调试操作。
本申请的第二方面涉及一种调试方法,该方法包括:控制器向待调试组件发送调试指令;该控制器从该待调试组件中读取调试信息,其中,该调试信息是根据该调试指令和该待调试组件内部的状态机的配置生成的。
本申请的第三方面涉及一种待调试组件,该待调试组件包括接收单元和执行单元。该接收单元用于接收来自控制器的调试指令;该执行单元用于根据该调试指令和该待调试组件内部的状态机的配置进行调试操作。
本申请的第四方面涉及一种控制器,该控制器包括发送单元和读取单元。该发送单元用于向待调试组件发送调试指令,该读取单元用于从该待调试组件中读取调试信息,其中,该调试信息是根据该调试指令和该待调试组件内部的状态机的配置生成的。
本申请的第五方面涉及一种待调试组件,该待调试组件包括接口装置、处理器装置和状态机装置。该接口装置用于接收来自控制器的调试指令,该处理器装置用于根据该调试指令和该状态机装置的配置执行调试操作。
本申请的第六方面涉及一种控制器,该控制器包括接口装置和处理器装置,该接口装置用于向待调试组件发送调试指令,该处理器装置用于从该待调试组件中读取调试信息,其中,该调试信息是根据该调试指令和该待调试组件内部的状态机的配置生成的。
本申请的第七方面涉及一种片上系统,该片上系统包括根据第三方面或第五方面的待调试组件以及根据第四方面或第六方面的控制器。
通过本申请提供的方法、装置及片上系统,可以实现片上系统上的组件的SW级调试操作,从而提高片上系统上这些具有大量数据流的组件的调试效率。
附图说明
附图用于提供对本申请的进一步理解,其构成说明书的一部分,并与以下具体实施例一起用于解释本申请,但不应理解为对本申请的限制。
图1是深度学习加速器(deep learning accelerator,DLA)的示意图;
图2是根据本申请实施例的第一调试方法的流程示意图;
图3是根据本申请实施例的第二调试方法的流程示意图;
图4是根据本申请实施例的第三调试方法的流程示意图;
图5是根据本申请实施例的第四调试方法的流程示意图;
图6是根据本申请实施例的第一待调试组件的结构视图;
图7是根据本申请实施例的第二待调试组件的结构视图;
图8是根据本申请实施例的第一控制器的结构视图;
图9是根据本申请实施例的第二控制器的结构视图;
图10是根据本申请实施例的第三待调试组件的结构视图;
图11是根据本申请实施例的第三控制器的结构视图;以及
图12是根据本申请实施例的片上系统的结构视图。
具体实施方式
在以下描述中,参考了附图,这些附图构成本公开的一部分,并且通过示例方式示出了本申请的实施例的特定方面或其中可以使用本申请的实施例的特定方面。应当理解,本申请的实施例可以用于其他方面并且包括图中未描绘的结构或逻辑变化。因此,以下详细描述不应被视为限制性的,并且本申请的范围由权利要求限定。
例如,应当理解,与所描述的方法相关的公开也可以适用于用于执行该方法的相应设备或系统,反之亦然。例如,如果描述了一个或多个具体的方法步骤,即使这样的一个或更多个单元没有在图中明确描述或说明,对应的设备可以包括一个或多个单元(例如功能单元)以执行所描述的一个或多个方法步骤(例如执行该一个或多个步骤的一个单元,或各自执行多个步骤中的一个或更多个的多个单元)。另一方面,例如,如果基于一个或多个单元(例如功能单元)来描述具体的装置,即使这样的一个或多个步骤没有在图中明确描述或说明,相应的方法可以包括一个步骤以执行一个或多个单元的功能(例如执行该一个或更多个单元的功能的一个步骤,或各自执行多个单元中的一个或更多个单元的功能的多个步骤)。此外,应当理解,除非另外特别说明,否则本文描述的各种示例性实施例和/或方面的特征可以彼此组合。
片上系统上设置的多种硬件(hardware,HW)组件需要调试,例如AI加速器。在现有技术中,这些组件的调试涉及对输出数据进行后处理以破译和调试硬件结果。由于没有能够获得中间调试结果的机制,因此,片上系统上这些具有大量数据流的组件的调试效率非常低。
本申请为在待调试组件上执行的逻辑功能引入了断点(breakpoint)功能、步入(step-in)功能、步出(step-out)功能、跳转(jump)功能、暂停(pause)功能、恢复(resume)功能,通过使用跟踪缓冲区模拟典型(typical)软件(software,SW)实现的调试能力,从而提高片上系统上这些具有大量数据流的组件的调试效率。
最需要提高调试效率的组件是运行DNN的AI加速器。图1是DLA的示意图。如图1所示,DLA由硬件基元块组成,其中,硬件基元块共享如乘法器和累加器(multiplier andaccumulator,MAC)单元、内存缓冲区、加法器等硬件资源。DLA在硬件基元块上实现DNN图形。DNN图形是多层(如卷积、最大池化、全连接等)的组合,由硬件实现这些硬件基元以及由全局控制逻辑实现状态机以执行基于可编程寄存器的图形,该寄存器存储称为代表每一层输入的超参数的图形信息,以及存储层的行为(如步幅、填充、应用整流线性单元(rectified linear unit,ReLu)/偏置设置等)。本申请为在待调试组件上执行的DNN图形引入了断点功能、步入功能、步出功能、跳转功能、暂停功能、恢复功能,通过使用跟踪缓冲区模拟典型SW实现调试能力,这是通过允许全局控制逻辑实现状态机在每个块(tile)模拟SW中的断点和阶跃(step)功能后暂停以改变此架构来实现的。内部缓冲区存储结果,该内部缓冲区可以作为跟踪缓冲区,可以跳转以查看中间执行结果。
图2是根据本申请实施例的第一调试方法的流程示意图。图2示出了由待调试组件执行的方法。需要说明的是,待调试组件可以是片上系统上的任一待调试组件(例如AI加速器),控制器可以是具有控制功能的任一组件(例如CPU)。
该方法包括以下步骤:
S201:待调试组件接收来自控制器的调试指令。
首先,调试过程是由该控制器发起的。
S202:该待调试组件根据该调试指令和该待调试组件内部的状态机的配置进行调试操作。
由于本申请的调试过程模拟了典型SW调试过程,因此需要提前配置待调试组件内部的状态机,以实现如典型SW调试过程的断点功能、步入功能、步出功能、跳转功能、暂停功能、恢复功能。一旦待调试组件接收到来自控制器的调试指令,该待调试组件根据该调试指令和该待调试组件内部的状态机的配置进行调试操作。
需要说明的是,除非另有指定,否则待调试组件内部的状态机可以是已经设置在该待调试组件(可以预先配置)内部的状态机,也可以是新增的状态机,这在本申请任一实施例中不作限定。
本申请提供了一种调试方法,其中,待调试组件接收来自控制器的调试指令,以及根据该调试指令和该待调试组件内部的状态机的配置进行调试操作。进而可以实现片上系统上的组件的SW级调试操作,从而提高片上系统上这些具有大量数据流的组件的调试效率。
图3是根据本申请实施例的第二调试方法的流程示意图。该方法示出了当接收到指示在第一位置处断点的第一调试指令时,待调试组件与控制器之间的交互操作。需要说明的是,待调试组件可以是片上系统上的任一待调试组件(例如AI加速器),控制器可以是具有控制功能的任一组件(例如CPU)。
该方法包括以下步骤:
S301:待调试组件从控制器接收指示在第一位置处断点的第一调试指令。
调试过程中的断点可以使调试过程在需要的地方中断,以便于分析。
S302:该待调试组件根据状态机的配置执行调试操作直到该第一位置。
S303:该待调试组件根据该状态机的配置在该第一位置挂起该调试操作。
S304:该待调试组件根据该状态机的配置向该控制器发送指示断点在该第一位置处命中的第一信息。
根据本实施例,当控制器从待调试组件接收指示断点在第一位置处命中的第一信息后,控制器会从待调试组件中读取调试信息,例如,从待调试组件内部的缓冲区和状态寄存器中读取调试信息。然后可以得到中间调试结果用于分析,从而提高片上系统上这些具有大量数据流的组件的调试效率。
在一种可能的实现方式中,在调试指令包括指示在第二位置阶跃的第二调试指令的情况下,S202可以是待调试组件根据状态机的配置在第二位置执行调试操作。
在这种可能的实现方式中,在接收来自控制器的指示阶跃到第二位置的第二调试指令后,待调试组件模仿典型SW调试的阶跃功能阶跃到下一位置。
在一种可能的实现方式中,调试指令包括指示恢复调试操作的第三调试指令,S202可以是待调试组件根据状态机的配置恢复调试操作。
在这种可能的实现方式中,在接收到来自控制器的指示恢复调试操作的第三调试指令后,待调试组件根据状态机的配置模拟典型SW调试的恢复功能,以恢复调试操作。
需要说明的是,图2和图3中所示的实施例以及上述可能的实现方式可以单独实施,也可以依次实施,本申请对此不作限定。
在一种可能的实现方式中,待调试组件包括运行DNN的加速器,其中,第一位置包括第X层的第Y块或第X层,其中X和Y为大于1的正整数,第二位置为第Y+1块或第X+1层。
图4是根据本申请实施例的第三调试方法的流程示意图。下面结合图4描述其中待调试组件为运行DNN(如DLA)的AI加速器,并且控制器为CPU的示例场景。
该方法包括以下步骤:
S401:CPU使能SW_DEBUG。
该步骤通过CPU发送调试指令来实现,该调试指令指示可以开始调试操作。
S402:CPU在第X层第Y块使能断点(BREAKPOINT)。
S403:DLA执行直到第X层第Y块,然后暂停。
S404:DLA向CPU发送BREAKPOINT命中信息。
S405:CPU读取内部缓冲区和状态寄存器。
目前,DNN在AI加速器上运行,最流行的DNN是CNN。CNN是一系列层,其在深度学习算法中堆叠以形成任务图形。随着用于自动驾驶的深度学习算法的出现,CNN通过向网络添加更多层以提高准确性而变得越来越深层。每一层都是一组数学运算,其将一个三维输入数据转换为另一个三维输入数据。每一层都进一步分解为块以适应片上内存尺寸。在断点(BREAKPOINT)调试的示例场景中,需要提前配置DLA内部的状态机,以在第X层第Y块处设置BREAKPOINT。一旦接收到指示在第X层第Y块处断点的调试指令,DLA执行调试操作直到第X层第Y块,挂起在第X层第Y块的调试操作,并且向CPU发送BREAKPOINT命中信息。调试操作在第X层第Y块处暂停后,CPU读取针对调试信息的内部缓冲区和状态寄存器以进行分析。
S406:CPU向DLA发送阶跃块指令。
S407:DLA在第Y+1块处执行。
S408:CPU读取内部缓冲区和状态寄存器。
在阶跃(STEP)调试的示例场景中,需要提前配置DLA内部的状态机以将步长设置为一个块(tile)。一旦调试指令指示阶跃到下一块,DLA就会在第Y+1块处执行。然后CPU读取针对调试信息的内部缓冲区和状态寄存器以进行分析。
S409:CPU向DLA发送阶跃块指令。
S410:DLA在第Y+2块处执行。
S411:CPU读取内部缓冲区和状态寄存器。
S409-S411与S406-S408类似。
S412:CPU向DLA发送阶跃层指令。
S413:DLA在第X+1层处执行。
S414:CPU读取内部缓冲区和状态寄存器。
在阶跃(STEP)调试的示例场景中,需要提前配置DLA内部的状态机以将步长设置为一个层(layer)。一旦调试指令指示阶跃到下一层,DLA就会在第X+1层处执行。然后CPU读取针对调试信息的内部缓冲区和状态寄存器以进行分析。
S415:CPU向DLA发送运行指令。
这种用于调试的架构为深度学习算法提供了SW级别的调试特征,该调试功能针对各个层在微秒内处理数十个具有数十个块的层。
在此设计中,HW架构还可以允许暂停/恢复功能并可以设置断点。芯片结构允许每层配置,在HW中实现的状态机中的HW计数器根据用户配置执行以设置断点以及SW发出的每个块的暂停/恢复命令。块类似于SW中的单个操作,其中阶跃功能允许阶跃到下一个操作命令。
根据本实施例,通过CPU和DLA之间的交互完成一层的调试操作,进而可以实现片上系统上的组件的SW级调试操作,从而提高片上系统上这些具有大量数据流的组件的调试效率。
需要注意的是,调试结果可以在必要时用于修改深度学习算法。
图5是根据本申请实施例的第四调试方法的流程示意图。该方法由控制器(如CPU)执行,该方法包括以下步骤:
S501:控制器向待调试组件发送调试指令。
S502:该控制器从该待调试组件中读取调试信息,其中该调试信息是根据该调试指令和该待调试组件内部的状态机的配置生成的。
图5中的步骤对应于图2-图4中的步骤,图5中所示的方法的描述可以参考图2-图4中所示方法的描述。
本申请提供了一种调试方法,其中,控制器向待调试组件发送调试指令,并且从该待调试组件中读取调试信息,其中该调试信息是根据该调试指令和该待调试组件内部的状态机的配置生成的。进而可以实现片上系统上的组件的SW级调试操作,从而提高片上系统上这些具有大量数据流的组件的调试效率。
在一种可能的实现方式中,其中调试指令包括指示在第一位置处断点的第一调试指令;其中,在S502之前,该方法还包括:控制器从待调试组件接收指示断点在第一位置处命中的第一信息。
在一种可能的实现方式中,调试指令包括指示在第二位置阶跃的第二调试指令;或者
调试指令包括指示恢复调试操作的第三调试指令。
在一种可能的实现方式中,待调试组件包括运行DNN的加速器,其中,第一位置包括第X层的第Y块或第X层,其中X和Y为大于1的正整数,第二位置为第Y+1块或第X+1层。
图6是根据本申请实施例的第一待调试组件的结构视图。如图6所示,其中待调试组件包括:接收单元601和执行单元602。
接收单元601用于接收来自控制器的调试指令。
执行单元602用于根据调试指令和待调试组件内部的状态机的配置进行调试操作。
本申请提供了一种待调试组件,其中,接收单元601用于接收来自控制器的调试指令;执行单元602用于根据调试指令和待调试组件内部的状态机的配置进行调试操作。进而可以实现片上系统上的组件的SW级调试操作,从而提高片上系统上这些具有大量数据流的组件的调试效率。
图7是根据本申请实施例的第二待调试组件的结构视图。如图7所示,基于图6,调试指令包括指示在第一位置处断点的第一调试指令,并且执行单元602还用于:根据状态机的配置执行调试操作到直到第一位置;根据状态机的配置挂起第一位置的调试操作,待调试组件还包括发送单元603,其中发送单元603用于根据状态机的配置向控制器发送指示断点在第一位置处命中的第一信息。
在一种可能的实现方式中,调试指令包括指示在第二位置阶跃的第二调试指令;其中,执行单元还用于根据状态机的配置在第二位置执行调试操作。
在一种可能的实现方式中,调试指令包括指示恢复调试操作的第三调试指令;其中执行单元还用于根据状态机的配置恢复调试操作。
在一种可能的实现方式中,待调试组件包括运行DNN的加速器,
在一种可能的实现方式中,第一位置包括第X层的第Y块或第X层,其中X和Y为大于1的正整数,第二位置为第Y+1块或第X+1层。
图8是根据本申请实施例的第一控制器的结构视图。如图8所示,控制器包括:发送单元801和读取单元802。
发送单元801用于向待调试组件发送调试指令。读取单元802用于从待调试组件中读取调试信息,其中调试信息是根据调试指令和待调试组件内部状态机的配置生成的。
图9是根据本申请实施例的第二控制器的结构视图。如图9所示,基于图8,调试指令包括指示在第一位置处断点的第一调试指令;其中,控制器还包括接收单元803;接收单元803用于在读取单元从待调试组件读取调试信息之前,从待调试组件接收指示断点在第一位置处命中的第一信息。
在一种可能的实现方式中,调试指令包括指示在第二位置阶跃的第二调试指令;或者调试指令包括指示恢复调试操作的第三调试指令。
在一种可能的实现方式中,待调试组件包括运行DNN的加速器,第一位置包括第X层的第Y块或第X层,其中X和Y为大于1的正整数,第二位置为第Y+1块或第X+1层。
图10是根据本申请实施例的第三待调试组件的结构视图。如图10所示,待调试组件包括:接口装置1001、处理器装置1002和状态机装置1003。
接口装置1001用于接收来自控制器的调试指令;
处理器装置1002用于根据调试指令和状态机装置的配置执行调试操作。
在一种可能的实现方式中,调试指令包括指示在第一位置处断点的第一调试指令;其中,处理器装置1002还用于:根据状态机装置的配置执行调试操作直到第一位置;根据状态机装置的配置在第一位置挂起调试操作;以及
接口装置1001,还用于根据状态机装置1003的配置向控制器发送指示断点在第一位置处命中的第一信息。
在一种可能的实现方式中,调试指令包括指示在第二位置阶跃的第二调试指令;
其中,处理器装置1002还用于根据状态机装置1003的配置在第二位置执行调试操作。
在一种可能的实现方式中,调试指令包括指示恢复调试操作的第三调试指令;
其中,处理器装置1002还用于根据状态机装置1003的配置恢复调试操作。
在一种可能的实现方式中,待调试组件包括运行DNN的加速器,第一位置包括第X层的第Y块或第X层,其中X和Y为大于1的正整数,第二位置为第Y+1块或第X+1层。
图11是根据本申请实施例的第三控制器的结构视图。如图11所示,控制器包括:接口装置1101和处理器装置1102。
接口装置1101用于向待调试组件发送调试指令;
处理器装置1102用于从待调试组件中读取调试信息,其中调试信息是根据调试指令和待调试组件内部的状态机的配置生成的。
在一种可能的实现方式中,调试指令包括指示在第一位置处断点的第一调试指令;接口装置1101用于在处理器装置1102从待调试组件读取调试信息之前,从待调试组件接收指示断点在第一位置处命中的第一信息。
在一种可能的实现方式中,调试指令包括指示在第二位置阶跃的第二调试指令;或者调试指令包括指示恢复调试操作的第三调试指令。
在一种可能的实现方式中,待调试组件包括运行DNN的加速器,其中,第一位置包括第X层的第Y块或第X层,其中X和Y为大于1的正整数,第二位置为第Y+1块或第X+1层。
图12是根据本申请实施例的片上系统的结构视图。如图12所示,片上系统包括:待调试组件1201和控制器1202。待调试组件可以是上述任一种待调试组件,并且控制器可以是上述任一种控制器。
本申请的说明书和权利要求书以及上述附图中的“第一”、“第二”等术语,旨在区分不同的对象,并不旨在限定特定的顺序。
本申请实施例中的“和/或”等术语仅用于描述关联对象之间的关联,其表示可能存在三种关系,例如A和/或B可以表示仅存在A、存在A和B以及仅存在B。
术语“一个”或“一种”(“a”or“an”)并非旨在指定一个或单个元件,而是在适当的情况下可用于表示多个元素的存在。
将进一步理解,术语“包括”、“包含”、“具有”及其变体在本说明书中使用时,指定所述的特征、步骤、操作、元件和/或组件的存在,但不排除一个或更多个其他特征、步骤、操作、元件、组件和/或它们的组群的存在或添加。相反,术语“由……组成”在本说明书中使用时,指定所述的特征、步骤、操作、元件和/或组件,并且排除附加的特征、步骤、操作、元件和/或组件。
在本申请实施例中,“示例性”或“例如”等表述用于表示示例或范例的说明。在本申请实施例中,任何描述为“示例性”或“例如”的实施例或设计方案不应被解释为优选的或优于其他实施例或设计方案的。特别地,“示例性”或“例如”的使用目的在于以特定方式呈现相关概念。
在一个或更多个示例中,所描述的功能可以在硬件、软件、固件或其任何组合中实现。如果以软件实现,则这些功能可以作为一个或更多个指令或代码存储在或传输在计算机可读介质上并由基于硬件的处理单元执行。计算机可读介质可以包括计算机可读存储介质,其对应于诸如数据存储介质之类的有形介质,或者通信介质(其包括便于将计算机程序,例如根据通信协议,从一个地方转移到另一个地方的任何介质)。以此方式,计算机可读介质通常可以对应于(1)非暂时性有形计算机可读存储介质或(2)诸如信号或载波的通信介质。数据存储介质可以是可由一台或更多台计算机或一个或更多个处理器访问,以检索用于实现本公开中描述的技术的指令、代码和/或数据结构的任何可用介质。计算机程序产品可以包括计算机可读介质。
作为示例而非限制,此类计算机可读存储介质可以包括随机存取存储器(randomaccess memory,RAM)、只读存储器(read-only memory,ROM)、电可擦除可编程ROM(electrically erasable programmable ROM,EEPROM)、压缩盘ROM(compact disc ROM,CD-ROM)或其他光盘存储、磁盘存储或其他磁存储设备、闪存或任何其他可用于以指令的形式或数据结构的形式存储所需程序代码并可由计算机访问的介质。此外,任何连接都被恰当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线(twisted pair)、数字用户线(digital subscriber line,DSL)或无线技术(如红外线、无线电和微波)从网站、服务器或其他远程源传输指令,则同轴电缆、光纤电缆、双绞线、DSL或无线技术(如红外线、无线电和微波)都包含在介质的定义中。然而,应当理解,计算机可读存储介质和数据存储介质不包括连接、载波、信号或其他瞬态介质,而是指非瞬态的、有形的存储介质。此处使用的磁盘和光盘包括压缩盘(compact disc,CD)、激光盘、光盘、数字多功能盘(digitalversatile disc,DVD)、软盘和蓝光光盘(Blu-ray disc),其中磁盘通常以磁性方式再现数据,而盘则使用激光以光学方式再现数据。上述的组合也应包括在计算机可读介质的范围内。
本公开的技术可以在多种设备或装置中实现,包括无线手机、集成电路(integrated circuit,IC)或一组IC(例如,芯片组)。本公开中描述了各种组件、模块或单元以强调用于执行所公开的技术的设备的功能方面,但不一定需要由不同的硬件单元来实现。相反,如上所述,各种单元可以结合在编解码器硬件单元中或由包括如上所述的一个或更多个处理器的互操作(inter-operative)硬件单元的集合连同合适的软件和/或固件一起提供。
应当理解,当元件或组件在本文中被提到“连接到”或“耦接到”另一个元件或组件时,它可以连接或耦接到(或者也存在中间的元件或组件)另一个元件或组件。相反,当元件或组件被提到“直接连接到”或“直接耦接到”另一个元件或组件时,它们之间不存在中间元件或组件。
虽然本文参考说明性实施例描述了本发明,但是本说明书不旨在被解释为限制性的。相反,说明性实施例的目的是使本领域技术人员更好地理解本发明的精神。为了不使本发明的范围模糊,省略了众所周知的工艺和制造技术的许多细节。在参考说明书的情况下,说明性实施例以及其他实施例的各种修改对于本领域技术人员来说将是显而易见的。因此,权利要求旨在涵盖任何此类修改。
此外,本发明的优选实施例的一些特征可以在没有其他特征的相应使用的情况下被有利地使用。因此,上述说明书应被认为仅是对本发明原理的说明,而不是对其进行限制。本领域技术人员将理解落入本发明范围内的上述实施例的变体。因此,本发明不限于以上讨论的特定实施例和说明,而是由权利要求及其等效物限制。

Claims (22)

1.一种调试方法,包括:
待调试组件接收来自控制器的调试指令;
所述待调试组件根据所述调试指令和所述待调试组件内部的状态机的配置进行调试操作;
其中,所述待调试组件包括运行深度神经网络DNN的加速器;所述调试指令包括指示在第一位置处断点的第一调试指令和/或指示在第二位置阶跃的第二调试指令,所述第一位置包括第X层的第Y块或第X层,所述第二位置为第Y+1块或第X+1层,其中X和Y为大于1的正整数。
2.根据权利要求1所述的方法,其中,当所述调试指令包括所述第一调试指令时;
所述待调试组件进行所述调试操作,包括:
所述待调试组件根据所述状态机的配置执行所述调试操作直到所述第一位置;
所述待调试组件根据所述状态机的配置在所述第一位置挂起所述调试操作;以及
所述待调试组件根据所述状态机的配置向所述控制器发送指示断点在所述第一位置处命中的第一信息。
3.根据权利要求1所述的方法,其中,当所述调试指令包括所述第二调试指令时;
所述待调试组件进行所述调试操作,包括:
所述待调试组件根据所述状态机的配置在所述第二位置执行所述调试操作。
4.根据权利要求1所述的方法,其中,所述调试指令还包括指示恢复所述调试操作的第三调试指令;
所述待调试组件进行所述调试操作包括:
所述待调试组件根据所述状态机的配置恢复所述调试操作。
5.一种调试方法,包括:
控制器向待调试组件发送调试指令;
所述控制器从所述待调试组件中读取调试信息,其中,所述调试信息是根据所述调试指令和所述待调试组件内部的状态机的配置生成的;
其中,所述待调试组件包括运行深度神经网络DNN的加速器;所述调试指令包括指示在第一位置处断点的第一调试指令和/或指示在第二位置阶跃的第二调试指令,所述第一位置包括第X层的第Y块或第X层,所述第二位置为第Y+1块或第X+1层,其中X和Y为大于1的正整数。
6.根据权利要求5所述的方法,其中,当所述调试指令包括所述第一调试指令时;
在所述控制器从所述待调试组件中读取所述调试信息之前,所述方法还包括:
所述控制器从所述待调试组件接收指示断点在所述第一位置处命中的第一信息。
7.根据权利要求5所述的方法,其中,所述调试指令还包括指示恢复调试操作的第三调试指令。
8.一种待调试组件,包括:
接收单元,用于接收来自控制器的调试指令;
执行单元,用于根据所述调试指令和所述待调试组件内部的状态机的配置进行调试操作;
其中,所述待调试组件还包括运行深度神经网络DNN的加速器;所述调试指令包括指示在第一位置处断点的第一调试指令和/或指示在第二位置阶跃的第二调试指令,所述第一位置包括第X层的第Y块或第X层,所述第二位置为第Y+1块或第X+1层,其中X和Y为大于1的正整数。
9.根据权利要求8所述的组件,其中,当所述调试指令包括所述第一调试指令时;
所述执行单元还用于:
根据所述状态机的配置执行所述调试操作直到所述第一位置;
根据所述状态机的配置在所述第一位置挂起所述调试操作;以及
所述组件还包括发送单元,所述发送单元用于根据所述状态机的配置向所述控制器发送指示断点在所述第一位置处命中的第一信息。
10.根据权利要求8所述的组件,其中,当所述调试指令包括所述第二调试指令时;
所述执行单元还用于根据所述状态机的配置在所述第二位置执行所述调试操作。
11.根据权利要求8所述的组件,其中,所述调试指令还包括指示恢复所述调试操作的第三调试指令;
所述执行单元还用于根据所述状态机的配置恢复所述调试操作。
12.一种控制器,包括:
发送单元,用于向待调试组件发送调试指令;
读取单元,用于从所述待调试组件中读取调试信息,其中,所述调试信息是根据所述调试指令和所述待调试组件内部的状态机的配置生成的;
其中,所述待调试组件包括运行深度神经网络DNN的加速器;所述调试指令包括指示在第一位置处断点的第一调试指令和/或指示在第二位置阶跃的第二调试指令,所述第一位置包括第X层的第Y块或第X层,所述第二位置为第Y+1块或第X+1层,其中X和Y为大于1的正整数。
13.根据权利要求12所述的控制器,其中,当所述调试指令包括所述第一调试指令时;
所述控制器还包括接收单元;
所述接收单元用于在所述读取单元从所述待调试组件中读取所述调试信息之前,从所述待调试组件接收指示断点在所述第一位置处命中的第一信息。
14.根据权利要求12所述的控制器,其中,所述调试指令还包括指示恢复调试操作的第三调试指令。
15.一种待调试组件,包括接口装置、处理器装置和状态机装置;
所述接口装置用于接收来自控制器的调试指令;
所述处理器装置用于根据所述调试指令和所述状态机装置的配置执行调试操作;
其中,所述待调试组件还包括运行深度神经网络DNN的加速器;所述调试指令包括指示在第一位置处断点的第一调试指令和/或指示在第二位置阶跃的第二调试指令,所述第一位置包括第X层的第Y块或第X层,所述第二位置为第Y+1块或第X+1层,其中X和Y为大于1的正整数。
16.根据权利要求15所述的组件,其中,当所述调试指令包括所述第一调试指令时;
所述处理器装置还用于:
根据所述状态机装置的配置执行所述调试操作到直到所述第一位置;
根据所述状态机装置的配置在所述第一位置挂起所述调试操作;以及
所述接口装置还用于根据所述状态机装置的配置向所述控制器发送指示断点在所述第一位置处命中的第一信息。
17.根据权利要求15所述的组件,其中,当所述调试指令包括所述第二调试指令时;
所述处理器装置还用于根据所述状态机装置的配置在所述第二位置执行所述调试操作。
18.根据权利要求15所述的组件,其中,所述调试指令还包括指示恢复所述调试操作的第三调试指令;
所述处理器装置还用于根据所述状态机装置的配置恢复所述调试操作。
19.一种控制器,包括接口装置和处理器装置;
所述接口装置用于向待调试组件发送调试指令;
所述处理器装置用于从所述待调试组件中读取调试信息,其中,所述调试信息是根据所述调试指令和所述待调试组件内部的状态机的配置生成的;
其中,所述待调试组件包括运行深度神经网络DNN的加速器;所述调试指令包括指示在第一位置处断点的第一调试指令和/或指示在第二位置阶跃的第二调试指令,所述第一位置包括第X层的第Y块或第X层,所述第二位置为第Y+1块或第X+1层,其中X和Y为大于1的正整数。
20.根据权利要求19所述的控制器,其中,当所述调试指令包括所述第一调试指令时;
所述接口装置用于在所述处理器装置从所述待调试组件中读取所述调试信息之前,从所述待调试组件接收指示断点在所述第一位置处命中的第一信息。
21.根据权利要求19所述的控制器,其中,所述调试指令还包括指示恢复调试操作的第三调试指令。
22.一种片上系统,包括如权利要求8-11或15-18中任一项所述的待调试组件以及如权利要求12-14或19-21中任一项所述的控制器。
CN201980091541.0A 2019-03-21 2019-03-21 调试方法、装置及片上系统 Active CN113454607B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/079075 WO2020186518A1 (en) 2019-03-21 2019-03-21 Method and apparatus for debugging, and system on chip

Publications (2)

Publication Number Publication Date
CN113454607A CN113454607A (zh) 2021-09-28
CN113454607B true CN113454607B (zh) 2023-08-22

Family

ID=72514352

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980091541.0A Active CN113454607B (zh) 2019-03-21 2019-03-21 调试方法、装置及片上系统

Country Status (3)

Country Link
US (1) US11403206B2 (zh)
CN (1) CN113454607B (zh)
WO (1) WO2020186518A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11467946B1 (en) * 2019-03-28 2022-10-11 Amazon Technologies, Inc. Breakpoints in neural network accelerator
US11829279B2 (en) * 2021-09-23 2023-11-28 Intel Corporation Systems, apparatus, and methods to debug accelerator hardware
US11669381B1 (en) * 2021-11-15 2023-06-06 International Business Machines Corporation Real-time error debugging

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101154183A (zh) * 2006-09-29 2008-04-02 上海海尔集成电路有限公司 一种微控制器嵌入式在线仿真调试系统
CN105550118A (zh) * 2016-01-27 2016-05-04 珠海格力电器股份有限公司 调试系统和调试方法
WO2018081145A1 (en) * 2016-10-25 2018-05-03 Xilinx, Inc. Debugging system and method

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060248391A1 (en) * 2005-05-02 2006-11-02 Glover Jeffrey C State machine-based command line debugger
CN102214137B (zh) * 2010-04-06 2014-01-22 华为技术有限公司 调试方法和调试设备
US8566645B2 (en) * 2010-12-02 2013-10-22 Advanced Micro Devices, Inc. Debug state machine and processor including the same
WO2013169767A1 (en) * 2012-05-07 2013-11-14 Microchip Technology Incorporated Device having configurable breakpoint based on interrupt status
CN105224454B (zh) * 2015-09-25 2018-06-05 华为技术有限公司 一种调试方法、多核处理器和调试设备
JP6930428B2 (ja) * 2016-01-21 2021-09-01 ソニーグループ株式会社 情報処理装置、情報処理方法、およびプログラム
CN107436842A (zh) * 2016-05-25 2017-12-05 中兴通讯股份有限公司 一种微码调试方法及单板
US10235272B2 (en) * 2017-03-06 2019-03-19 Xilinx, Inc. Debugging system and method
US11086816B2 (en) * 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
EP3707572B1 (en) * 2017-11-10 2023-08-23 Nvidia Corporation Systems and methods for safe and reliable autonomous vehicles
US20190228308A1 (en) * 2018-01-24 2019-07-25 Alibaba Group Holding Limited Deep learning accelerator system and methods thereof
US10769050B2 (en) * 2018-05-16 2020-09-08 Texas Instruments Incorporated Managing and maintaining multiple debug contexts in a debug execution mode for real-time processors

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101154183A (zh) * 2006-09-29 2008-04-02 上海海尔集成电路有限公司 一种微控制器嵌入式在线仿真调试系统
CN105550118A (zh) * 2016-01-27 2016-05-04 珠海格力电器股份有限公司 调试系统和调试方法
WO2018081145A1 (en) * 2016-10-25 2018-05-03 Xilinx, Inc. Debugging system and method

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于硬件仿真加速平台的PCIE系统级调测试方法;柏颖;马玲芝;郭嘉;陈少辉;;电子技术应用(第08期);全文 *

Also Published As

Publication number Publication date
US20200301819A1 (en) 2020-09-24
CN113454607A (zh) 2021-09-28
US11403206B2 (en) 2022-08-02
WO2020186518A1 (en) 2020-09-24

Similar Documents

Publication Publication Date Title
CN113454607B (zh) 调试方法、装置及片上系统
US9607116B2 (en) Distributed hardware device simulation
US11675613B2 (en) Flexible physical function and virtual function mapping
US8711160B1 (en) System and method for efficient resource management of a signal flow programmed digital signal processor code
US7895376B2 (en) Hardware configuration information system, method, and computer program product
JP2023545818A (ja) チップ・システム、仮想割り込み処理方法および対応する装置
CN107203465A (zh) 系统接口测试方法及装置
CN110825435B (zh) 用于处理数据的方法和装置
CN107102950A (zh) 一种应用程序测试方法和装置
CN113849433A (zh) 一种总线控制器的执行方法、装置、总线控制器、计算机设备和存储介质
CN110941934A (zh) 一种fpga原型验证开发板分割仿真系统、方法、介质及终端
US7895027B2 (en) HDL re-simulation from checkpoints
US10228422B2 (en) Driving pervasive commands using breakpoints in a hardware-accelerated simulation environment
CN107908552A (zh) 一种基于链接的测试方法、装置及设备
US10445218B2 (en) Execution of graphic workloads on a simulated hardware environment
CN108334313A (zh) 用于大型soc研发的持续集成方法、装置及代码管理系统
KR102463123B1 (ko) 뉴럴 네트워크 가속기의 효율적인 제어, 모니터링 및 소프트웨어 디버깅 방법
KR102325612B1 (ko) 시뮬레이터를 구현하는 방법, 장치, 기기 및 매체
US10958597B2 (en) General purpose ring buffer handling in a network controller
CN103970027B (zh) 一种综合电子软件仿真环境中的遥测处理单元模拟方法
CN103077069B (zh) 指令解析的方法及装置
CN111782271A (zh) 一种软硬件交互方法及装置、存储介质
CN108733678B (zh) 一种数据搜索的方法、装置和相关设备
CN113396425A (zh) 加速方法、装置和片上系统
WO2018103045A1 (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