发明内容
有鉴于此,本申请实施例的目的在于提供一种线程调度方法、硬件电路及电子设备,以改善现有技术中存在的硬件电路工作时的调度效率较低的问题。
第一方面,本申请实施例提供了一种线程调度方法,所述方法包括:
通过处理器,对连接的功能模块、所述功能模块中执行的目标线程以及所述目标线程的内部操作节点进行标识,得到标识信号;
通过所述功能模块,根据所述标识信号,确定执行对应的所述目标线程中的所述内部操作节点的工作信息;
通过所述处理器,根据所述工作信息确定每个所述目标线程的时间信息,以根据所述时间信息对所述目标线程进行调度。
在上述实现过程中,为了了解硬件电路内部中各个硬件模块执行任务时的工作情况,可以由处理器对各个硬件模块、硬件模块中执行的各个线程以及线程内部的节点进行标识,并由功能模块根据标识信号确定硬件模块执行目标线程时的具体工作情况的工作信息,从而由处理器根据工作信息确定时间信息,根据精确的时间信息分析各个线程执行时的时间情况,从而对各个独立的执行线程的执行过程进行相应地调度,以提高硬件电路中各个线程的调度效率以及各个硬件模块的工作效率。
可选地,所述通过处理器,对每个功能模块、目标线程以及所述目标线程的内部操作节点进行标识,得到标识信号,包括:
通过所述处理器,根据所述功能模块的身份信息对所述功能模块进行标识,得到表征所述功能模块是否工作的第一标识信号;
通过所述处理器,根据所述目标线程的执行情况对所述目标线程进行标识,得到表征所述目标线程是否执行的第二标识信号;
通过所述处理器,根据所述内部操作节点的触发情况对所述内部操作节点进行标识,得到表征所述内部操作节点是否触发的第三标识信号。
在上述实现过程中,由于多个执行线程之间时完全独立且异步执行的,为了对多个功能模块执行不同的执行线程时的工作情况进行标识,可以在进行标识时,由处理器标识多种不同的信息,以对工作时的多种不同的情况进行标识。通过对功能模块的工作状态、目标线程的执行情况以及内部操作节点的触发情况进行标识,得到表征各种情况的多个标识信号,有效地提高了标识信号的唯一性和有效性,以使标识信号能够准确、实时地表征各种不同的工作情况。
可选地,所述通过所述功能模块,根据所述标识信号,确定执行对应的所述目标线程中的所述内部操作节点的工作信息,包括:
通过所述功能模块,获取生成所述第三标识信号时的时间戳;
通过所述功能模块,根据所述第一标识信号、所述第二标识信号、所述第三标识信号以及所述时间戳进行处理,得到所述工作信息。
在上述实现过程中,为了对各个内部操作节点被触发时的具体时间情况进行记录,可以获取触发时内部操作节点的时间戳,从而由功能模块根据不同类型的标识信号和时间戳进行处理,得到对应的表征线程执行时多些工作情况的工作信息,提高了工作信息的全面性和有效性,以供处理器根据工作信息对目标线程时的时间情况进行分析。
可选地,所述工作信息包括:模块信息、线程信息、触发信息和所述时间戳;
所述通过所述功能模块,根据所述第一标识信号、所述第二标识信号、所述第三标识信号以及所述时间戳进行处理,得到所述工作信息,包括:
通过所述功能模块,在识别到所述第一标识信号为工作时进行记录,得到所述模块信息;
通过所述功能模块,在识别到所述第二标识信号为执行时进行记录,得到所述线程信息;
通过所述功能模块,在识别到所述第三标识信号为触发时进行记录,得到所述触发信息;
通过所述功能模块,根据预设顺序将所述模块信息、所述线程信息、所述触发信息以及所述时间戳写入数据包中,得到所述工作信息。
在上述实现过程中,为了从标识信号中确定表征线程的工作情况的工作信息,可以由功能模块对各种类型的标识信号进行识别,在识别到相应的状态时,则进行相应地记录,以对功能模块的工作状态进行记录、对线程被执行时的状态进行记录、对关键的内部操作节点的触发状态进行记录。能够通过打点的方式,根据多种类型的标识信号对相应的工作情况进行记录,并按照预设的顺序将多种信息写入打点时的数据包中进行整合,以得到相应数据格式的工作信息,提高工作信息的实时性和有效性。
可选地,所述方法还包括:
通过所述功能模块,在识别到所述第一标识信号为未工作时进行记录,得到所述功能模块未工作时的空闲信息。
在上述实现过程中,功能模块在执行相应的线程任务时,由于存在暂停或中途执行其他任务等多种情况,功能模块可能在执行过程中存在暂停处理的状态。通过功能模块对第一标识信号进行识别,能够在第一标识信号表征功能模块未工作时进行相应地记录处理,以对暂停处理的状态进行累计记录和存储,确定功能模块在执行过程中未工作时的空闲信息。能够对功能模块未工作时的状态进行识别和记录,提高了非工作状态时的空闲信息的准确性。
可选地,所述通过所述处理器,根据所述工作信息确定每个所述目标线程的时间信息,以根据所述时间信息对所述目标线程进行调度,包括:
通过所述处理器,对每个所述工作信息进行解析,得到所述模块信息、所述线程信息、所述触发信息以及所述时间戳;
通过所述处理器,根据所述模块信息、所述线程信息、所述触发信息以及所述时间戳和所述空闲信息确定所述目标线程被所述功能模块执行时的所述时间信息;
通过所述处理器,根据所述时间信息确定对所述目标线程进行调度的调度方式。
在上述实现过程中,处理器接收对应的工作信息后能够进行解析处理,以得到工作信息中包含的表征多种情况的信息,并根据各种信息解析得到功能模块执行目标线程时的时间信息,以根据时间信息确定对目标线程进行调度的调度方式,从而能够根据线程实际的执行情况对执行时的操作进行调整和优化,以使多个执行线程能够合理地分布和被执行,有效地提高了硬件电路对线程的调度效率和线程的执行效率。
可选地,所述时间信息包括有效时长和时间节点;
所述通过所述处理器,根据所述模块信息、所述线程信息、所述触发信息、所述时间戳和所述空闲信息确定所述目标线程被所述功能模块执行时的所述时间信息,包括:
通过所述处理器,根据所述模块信息和所述线程信息确定所述功能模块在执行所述目标线程时的初始时长;
通过所述处理器,根据所述初始时长和所述空闲信息确定所述功能模块在执行所述目标线程时的所述有效时长;
通过所述处理器,根据所述触发信息和所述时间戳确定执行对应的所述内部操作节点的所述时间节点。
在上述实现过程中,可以根据模块信息确定功能模块进行工作时的时间节点,根据线程信息确定功能模块在工作时执行目标线程时的初始时长,从而根据初始时长和空闲信息进行计算,去除初始时长中执行目标线程时未工作的无效时长,得到执行目标线程时的有效时长。并根据内部操作节点的触发信息和触发时的时间戳确定多个内部操作节点的时间节点,以得到表征目标线程被执行时的时间分布、时间占用以及关键事件触发等多种信息的时间信息。有效地提高了时间信息的准确性和实时性,从而提高了调度时的准确性和效率。
可选地,所述通过所述处理器,对每个所述工作信息进行解析,得到所述模块信息、所述线程信息、所述触发信息以及所述时间戳之前,所述方法还包括:
通过所述处理器,根据接口属性,对多个所述工作信息进行拼接,得到拼接后的工作信息;
通过所述处理器,将所述拼接后的工作信息写入存储器中,得到待解析的多个所述工作信息。
在上述实现过程中,为了提高处理器与功能模块之间进行数据传输时的效率,可以根据处理器与功能模块连接接口的接口属性确定接收的数据的大小,以对多个工作信息进行相应地拼接和传输。从而能够同时对多个工作信息进行传输和处理,在进行时间信息的解析处理时在对拼接的工作信息进行分别处理,快速、准确地获取多个待解析的工作信息,有效地提高了处理器对数据的处理效率。
第二方面,本申请实施例还提供了一种硬件电路,所述电路包括处理器和功能模块,所述处理器和所述功能模块电性连接;
所述处理器,用于对连接的所述功能模块、所述功能模块中执行的目标线程以及所述目标线程的内部操作节点进行标识,得到标识信号;
所述功能模块,用于根据所述标识信号,确定执行对应的所述目标线程中的所述内部操作节点的工作信息;
所述处理器,还用于根据所述工作信息确定每个所述目标线程的时间信息,以根据所述时间信息对所述目标线程进行调度。
第三方面,本申请实施例还提供了一种电子设备,所述电子设备包括上述所述的硬件电路。
第四方面,本申请实施例还提供了一种计算机可读取存储介质,所述可读取存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行上述线程调度方法中任一实现方式中的步骤。
综上所述,本申请提供了一种线程调度方法、硬件电路及电子设备,通过对执行线程时的多种情况进行标识的方式,确定硬件模块执行线程时的具体工作情况的工作信息,以根据工作信息解析出各个线程执行时准确的时间信息,从而根据时间信息对各个线程的执行情况进行相应地调度,以提高硬件电路中各个硬件模块的工作效率以及各个线程的调度效率。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请实施例的一部分实施例,而不是全部的实施例。基于本申请实施例的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请实施例保护的范围。
在现有的硬件电路中,在执行线程时,虽然硬件电路能够将真实的硬件信息上传输出到上层的软件层面,但是由于执行时的工作情况完全由硬件控制,软件层面只能根据硬件信息对执行时的时间情况进行估算处理,而无法获取执行时准确的时间情况。并且,传输硬件信息时需要占用写数据的带宽以及硬件的存储空间,导致深度学习的硬件专用电路在进行使用时,软件无法获取硬件内部的实际工作状态,无法提高硬件电路工作时的调度效率。
为了解决上述问题,本申请实施例提供了一种线程调度方法,应用于硬件电路,硬件电路可以为多种类型的用于深度学习的专用电路,可以设置在多种类型的电子设备中,例如设置在服务器、个人电脑(Personal Computer,PC)、平板电脑、智能手机、个人数字助理(Personal Digital Assistant,PDA)等具有逻辑计算功能的电子设备中。
请参阅图1,图1为本申请实施例提供的一种硬件电路的结构示意图,硬件电路100中可以包括处理器110和功能模块120。
其中,处理器110和功能模块120电性连接,以实现数据的传输或交互。例如,处理器110和功能模块120之间可通过一条或多条通讯总线或信号线实现电性连接。
处理器110,用于对连接的功能模块120、功能模块120中执行的目标线程以及目标线程的内部操作节点进行标识,得到标识信号;
功能模块120,用于根据标识信号,确定执行对应的目标线程中的内部操作节点的工作信息;
处理器110,还用于根据工作信息确定每个目标线程的时间信息,以根据时间信息对目标线程进行调度。
在一可选的实施方式中,处理器110,还用于根据功能模块120的身份信息对功能模块120进行标识,得到表征功能模块120是否工作的第一标识信号;根据目标线程的执行情况对目标线程进行标识,得到表征目标线程是否执行的第二标识信号;根据内部操作节点的触发情况对内部操作节点进行标识,得到表征内部操作节点是否触发的第三标识信号。
在一可选的实施方式中,功能模块120,还用于获取生成第三标识信号时的时间戳;根据第一标识信号、第二标识信号、第三标识信号以及时间戳进行处理,得到工作信息。
在一可选的实施方式中,工作信息包括:模块信息、线程信息、触发信息和时间戳;功能模块120,还用于在识别到第一标识信号为工作时进行记录,得到模块信息;在识别到第二标识信号为执行时进行记录,得到线程信息;在识别到第三标识信号为触发时进行记录,得到触发信息;根据预设顺序将模块信息、线程信息、触发信息以及时间戳写入数据包中,得到工作信息。
在一可选的实施方式中,功能模块120,还用于在识别到第一标识信号为未工作时进行记录,得到功能模块120未工作时的空闲信息。
在一可选的实施方式中,处理器110,还用于对每个工作信息进行解析,得到模块信息、线程信息、触发信息以及时间戳;根据模块信息、线程信息、触发信息、时间戳和空闲信息确定目标线程被功能模块120执行时的时间信息;根据时间信息确定对目标线程进行调度的调度方式。
在一可选的实施方式中,时间信息包括有效时长和时间节点;处理器110,还用于根据模块信息和线程信息确定功能模块120在执行目标线程时的初始时长;根据初始时长和空闲信息确定功能模块120在执行目标线程时的有效时长;根据触发信息和时间戳确定执行对应的内部操作节点的时间节点。
在一可选的实施方式中,处理器110,还用于根据接口属性,对多个工作信息进行拼接,得到拼接后的工作信息;将拼接后的工作信息写入存储器中,得到待解析的多个工作信息。
可选地,上述的处理器110可能是一种集成电路芯片,具有信号的处理能力。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(digital signalprocessor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器,或者是任何常规的处理器等。
可选地,上述的功能模块120可以为安装有多种软件程序,具有多种软件功能的硬件模块。
本实施例中的硬件电路可以用于执行本申请实施例提供的各个线程调度方法中的各个步骤。下面通过几个实施例详细描述线程调度方法的实现过程。
请参阅图2,图2为本申请实施例提供的一种线程调度方法的流程示意图,该方法可以包括步骤S200-S400。
步骤S200,通过处理器,对连接的功能模块、功能模块中执行的目标线程以及目标线程的内部操作节点进行标识,得到标识信号。
其中,硬件电路中可以包括多个具有不同功能的功能模块,功能模块与处理器连接以进行数据的传输和交互。目标线程为各个功能模块中完全独立、并行执行的执行线程,例如各种类型的RDMA单元、WDMA单元、计算单元等。由于执行线程时完全由硬件控制,为了使硬件电路上层的软件层面获取硬件电路内部各个执行模块执行不同线程时的具体工作情况,能够通过与功能模块连接的处理器,对功能模块、功能模块中执行的目标线程以及目标线程中的多种内部操作节点进行标识,以得到相应的标识信号。
示例地,标识信号可以为二进制的数字信号,也可以为其他格式的信号。
步骤S300,通过功能模块,根据标识信号,确定执行对应的目标线程中的内部操作节点的工作信息。
其中,硬件电路中的各个功能模块能够根据标识信号,生成执行对应目标线程,以及执行目标线程中的内部操作节点时的工作信息,并将生成的工作信息发送给处理器,从而准确、快速地对硬件电路执行各个不同执行线程时的内部的工作情况进行反馈。
步骤S400,通过处理器,根据工作信息确定每个目标线程的时间信息,以根据时间信息对目标线程进行调度。
其中,处理器能够根据功能模块反馈的工作信息进行解析和分析,确定工作时的精确的时间信息,以根据精确的时间信息分析各个目标线程被执行时的时间情况,以使软件层面能够快速、准确地了解硬件电路内部各个线程被执行时实际的工作状态。为了对进行更有效地执行和分配,还可以通过分析得到的时间信息对相应的目标线程执行时的状态、时间、方式等进行调度,以使多个执行线程能够合理地分布和被执行。
在图2所示的实施例中,能够通过标识对线程执行时的具体时间情况和实际工作情况进行解析,从而对各个独立的执行线程的执行过程进行相应地调度,以提高硬件电路中各个线程的调度效率以及各个硬件模块的工作效率。
可选地,请参阅图3,图3为本申请实施例提供的一种步骤S200的详细流程图,步骤S200中还可以包括步骤S210-S230。
步骤S210,通过处理器,根据功能模块的身份信息对功能模块进行标识,得到表征功能模块是否工作的第一标识信号。
其中,由于硬件电路中通常具有对各不同功能的功能模块,为了对各个硬件模块进行区分,可以根据每个功能模块生成唯一的身份信息,例如,可以对多个功能模块进行编号,第一个功能模块的身份信息为0001、第二个功能模块的身份信息为0002等。在处理器对功能模块是否工作进行标识时,可以根据功能模块的工作情况生成相应的第一标识信号,例如,在功能模块工作时,第一标识信息可以为带有身份信息的标识信号,例如00001,在功能模块未工作时,则第一标识信息可以为空,例如00000等。
步骤S220,通过处理器,根据目标线程的执行情况对目标线程进行标识,得到表征目标线程是否执行的第二标识信号。
其中,由于硬件电路中还包括多个独立、异步执行的执行线程,为了对各个执行线程进行区分,也可以根据每个执行线程生成对应的线程身份信息,例如,可以对每个线程进行编码等,在功能模块接收到新的目标线程的任务时,可以根据目标线程的执行情况和编码信息对目标线程进行标识,例如,在目标线程被执行时,则第二标识信息可以为带有编码信息的标识信号,在目标线程没有被执行时,则第二标识信号可以为空。
步骤S230,通过处理器,根据内部操作节点的触发情况对内部操作节点进行标识,得到表征内部操作节点是否触发的第三标识信号。
其中,每个目标线程的内部都可能存在一个或多个内部操作节点,内部操作节点可以为一些关键事件的时间节点,即通过打点的方式对操作进行记录,打点时的触发情况仅与硬件设计相关,例如:开始进行读取数据操作时的节点、结束读取数据操作时的节点,开始进行写入数据操作时的节点,结束写入数据操作时的节点等。在功能模块执行相应的目标线程时,可以根据内部操作节点的触发情况进行标识,功能模块在触发内部操作节点时,可以在硬件内部发送单脉冲信号,处理器能够根据接收的单脉冲信号判断内部操作节点的触发情况,以进行相应地标识,得到相应的第三标识信号。示例地,第三标识信号也可以设置为二进制数据,为0时则表示未触发,为1时则表示触发。
可选地,可以将第一标识信号记为unique ID,将第二标识信号记为Segment ID,将第三标识信号记为Point ID。
其中,步骤S210-S230的执行顺序不限制,可以根据需求和实际情况对执行顺序进行调整,也可以同时执行。
在图3所示的实施例中,通过对功能模块的工作状态、目标线程的执行情况以及内部操作节点的触发情况进行标识,得到表征各种情况的多个标识信号,有效地提高了标识信号的唯一性和有效性,以使标识信号能够准确、实时地表征各种不同的工作情况。
可选地,请参阅图4,图4为本申请实施例提供的一种步骤S300的详细流程图,步骤S300中还可以包括步骤S310-S320。
步骤S310,通过功能模块,获取生成第三标识信号时的时间戳。
其中,功能模块在触发目标线程中的内部操作节点时,具有相应的触发时间。因此,可以在生成第三标识信号时,根据相应的触发时间生成关联的时间戳,记为timestamp,以表征硬件内部执行操作时的各个时间节点。
可选地,时间戳的时间单位可以根据硬件模块中设置的时钟源进行相应地设置和调整,例如,可以将时间戳的时间单位设置为1.25ns等。
步骤S320,通过功能模块,根据第一标识信号、第二标识信号、第三标识信号以及时间戳进行处理,得到工作信息。
其中,功能模块中还能够根据不同类型的标识信号和时间戳进行处理,得到对应的表征线程执行时多些工作情况的工作信息。
可选地,工作信息可以包括:模块信息、线程信息、触发信息和时间戳等根据打点操作触发的打点信息。模块信息表征模块工作时的情况,线程信息表征目标线程被执行时的情况,触发信息表征内部操作节点被执行时的触发情况。
可选地,在进行处理时,可以将多个类型的标识信号进行分类,以获取多种类型的标识信号集,再将多种类型的标识信号集和时间戳写入对应的DDR(Double Data Rate,双倍速率同步动态随机存储器)中进行存储,得到相应的工作信息。
在图4所示的实施例中,提高了工作信息的全面性和有效性,以供处理器根据工作信息对目标线程时的时间情况进行分析。
可选地,请参阅图5,图5为本申请实施例提供的一种步骤S320的详细流程图,步骤S320中还可以包括步骤S321-S324。
步骤S321,通过功能模块,在识别到第一标识信号为工作时进行记录,得到模块信息。
其中,功能模块可以对每个生成的第一标识信号进行识别,例如,在识别到第一标识信号中包含功能模块的身份信息时,则表征功能模块在工作,可以对功能模块的工作情况进行记录。
示例地,记录时可以先对时间的节点进行选取,在对应的功能模块开始工作时和结束工作时,选取相应的两个第一标识信号,并获取生成这两个标识信号时的时间戳,以得到表征功能模块进行工作时的模块信息。
步骤S322,通过功能模块,在识别到第二标识信号为执行时进行记录,得到线程信息。
其中,功能模块也可以对每个生成的第二标识信号进行识别,例如,在识别到第二标识信息中包括目标线程的编码信息时,则表征目标线程正在被执行,可以对目标线阵的执行情况进行记录。
示例地,在生成线程信息时,记录时可以采用计数操作,例如,在识别到一个表征目标线程被执行的第二标识信息时,则进行自加一的计数处理,以生成相应的线程信息。
步骤S323,通过功能模块,在识别到第三标识信号为触发时进行记录,得到触发信息。
其中,功能模块还可以对每个生成的第三标识信息进行识别,例如,在识别到第三标识信息为1时,则表征有内部操作节点被触发,可以结合内部操作节点的具体情况和触发情况进行记录。
示例地,在生成触发信息时,记录时也可以采用技术操作,例如,在识别到一个表征内部操作节点被触发的第三标识信息时,则进行自加一的计数处理,以生成相应的触发信息。
其中,步骤S321-S323的执行顺序不限制,可以根据需求和实际情况对执行顺序进行调整,也可以同时执行。
步骤S324,通过功能模块,根据预设顺序将模块信息、线程信息、触发信息以及时间戳写入数据包中,得到工作信息。
其中,由于获取了多种表征不同工作情况的相关数据,因此,在进行数据传输时,为了提高数据传输时的效率,可以对模块信息、线程信息、触发信息以及时间戳等多种信息进行整合,以预设顺序将多种类型的数据写入数据包中的相应区域中,以整合得到完整的工作信息。
可选地,由于模块信息、线程信息、触发信息以及时间戳等信息都可以使用二进制等格式的数据,因此,在进行整合时,可以预设对应大小的数据包,例如,将数据包的大小设置为64比特,并将数据包划分为四个区域,请参阅表1,表1为一种工作信息的数据格式的示意表,由表1可知,预设顺序可以为从大到小的范围,即从功能模块,到功能模块执行的线程,到执行线程内部时的操作,再到执行线程内部操作时的时间戳,也可以为其他顺序,可以根据实际情况和需求进行设置和调整。在表1所示的情况中,模块信息可以写入数据包的63-56这8个bit内,线程信息可以写入数据包的55-48这8个bit内,触发信息可以写入数据包的47-32这8个bit内,时间戳可以写入31-0这32个bit内。
表1.一种工作信息的数据格式的示意表
Bits |
63:56 |
55:48 |
47:32 |
31:0 |
描述 |
模块信息 |
线程信息 |
触发信息 |
Timestamp |
需要说明的是,由于功能模块在执行相应的线程任务时,由于存在暂停或中途执行其他任务等多种情况,功能模块可能在执行过程中存在暂停处理的状态,暂停状态仅与硬件设计相关,无法通过软件层面进行修改。因此,还可以通过功能模块,在识别到第一标识信号为未工作时进行记录,得到功能模块未工作时的空闲信息。例如,在识别到第一标识信号为空时,则表征功能模块未工作,则可以对开始未工作和结束未工作的多个标识信号的时间点进行记录,并累计目标线程的执行过程中的所有未工作的时间点,以对暂停处理的状态进行累计记录和存储,确定功能模块在执行过程中未工作时的空闲信息,空闲信息的时间单位可以与时间戳的单位保持一致,也可以根据实际情况和需求进行设置和调整。能够对功能模块未工作时的状态进行识别和记录,提高了非工作状态时的空闲信息的准确性。
可选地,在对空闲信息进行生成时,也可以采用与工作信息相同的方式进行处理,不再进行赘述。
在图5所示的实施例中,通过对各种标识信号的处理和整合,能够得到相应数据格式的工作信息,提高工作信息的实时性和有效性。
可选地,请参阅图6,图6为本申请实施例提供的一种步骤S400的详细流程图,步骤S400中还可以包括步骤S410-S430。
步骤S410,通过处理器,对每个工作信息进行解析,得到模块信息、线程信息、触发信息以及时间戳。
其中,处理器在接收到工作信息时,能够根据预设的解析方式,在工作信息中对应的多个区域中进行相应地解析,以获取多个区域中的模块信息、线程信息、触发信息以及时间戳。
步骤S420,通过处理器,根据模块信息、线程信息、触发信息、时间戳和空闲信息确定目标线程被功能模块执行时的时间信息。
其中,处理器能够结合模块信息、线程信息、触发信息、时间戳和空闲信息进行计算,以确定目标线程被功能模块执行时具体的时间情况,生成对应的时间信息。
步骤S430,通过处理器,根据时间信息确定对目标线程进行调度的调度方式。
其中,处理器能够根据时间信息对功能模块执行目标线程时的工作情况进行分析,以确定对目标线程进行调度的调度方式,从而能够根据线程实际的执行情况对执行时的操作进行调整和优化。
可选地,调度方式可以包括将某一执行线程分配到空闲的功能模块中进行执行、在某一功能模块中对某一执行线程进行优先处理、对某一执行线程暂停处理等多种不同的方式。
在图6所示的实施例中,能够根据工作信息解析的时间信息对执行线程进行调度,以使多个执行线程能够合理地分布和被执行,有效地提高了硬件电路对线程的调度效率和线程的执行效率。
可选地,时间信息可以包括有效时长和时间节点,有效时长为执行线程时工作时的时长,时间节点为各个内部操作模块被执行时的节点。
可选地,请参阅图7,图7为本申请实施例提供的一种步骤S420的详细流程图,步骤S420中还可以包括步骤S421-S423。
步骤S421,通过处理器,根据模块信息和线程信息确定功能模块在执行目标线程时的初始时长。
其中,处理器能够从模块信息和线程信息中,解析得到对应的功能模块在执行目标线程时所消耗的初始时长。
可选地,解析时可以先从模块信息中确定功能模块开始工作和结束工作之间的时间段,再在时间段的基础上,从线程信息中确定功能模块中开始工作后开始执行该目标线程和结束执行该目标线程时的初始时长。
步骤S422,通过处理器,根据初始时长和空闲信息确定功能模块在执行目标线程时的有效时长。
其中,处理器可以从空闲信息中解析得到功能模块执行目标线程时未进行工作时的无效时长,从而根据初始时长和无效时长进行计算,以初始时长减去无效时长,得到功能模块执行目标线程时保持工作时的有效时长。
步骤S423,通过处理器,根据触发信息和时间戳确定执行对应的内部操作节点的时间节点。
其中,处理器还能够根据触发信息和时间戳进行解析,以确定执行各个内部操作节点时对应的时间节点,例如功能模块执行目标线程时,在有效时长内进行读数据操作时所占用的时间节点,进行写入数据操作时所占用的时间节点等,从而对每一个执行线程在不同的任务期间所占用的时间进行了解。
在图7所示的实施例中,有效地提高了时间信息的准确性和实时性,从而提高了调度时的准确性和效率。
可选地,请参阅图8,图8为本申请实施例提供的另一种步骤S400的详细流程图,在步骤S410之前,步骤S400中还可以包括步骤S440-S450。
步骤S440,通过处理器,根据接口属性,对多个工作信息进行拼接,得到拼接后的工作信息。
其中,为了提高处理器与功能模块之间进行数据传输时的效率,可以根据处理器与功能模块连接接口的接口属性确定接收的数据的大小,以对多个工作信息进行相应地拼接和传输。示例地,在接口属性表征接口传输的数据包最大为256bit时,则可以将四个64bit的工作信息进行拼接处理,以得到拼接后的工作信息,从而能够同时对这四个工作信息进行传输,提高了工作信息的传输效率。
步骤S450,通过处理器,将拼接后的工作信息写入存储器中,得到待解析的多个工作信息。
其中,处理器在接收拼接后的工作信息后,可以对其进行拆分处理,得到多个工作信息,并将多个工作信息写入对应的存储器,例如写入DDR中以等待解析处理。
在图8所示的实施例中,能够同时对多个工作信息进行传输和处理,在进行时间信息的解析处理时在对拼接的工作信息进行分别处理,快速、准确地获取多个待解析的工作信息,有效地提高了处理器对数据的处理效率。
本申请实施例还提供了一种计算机可读取存储介质,可读取存储介质中存储有计算机程序指令,计算机程序指令被一处理器读取并运行时,执行本实施例提供的线程调度方法中任一项方法中的步骤。
综上所述,本申请实施例提供了一种线程调度方法、硬件电路及电子设备,通过对执行线程时的多种情况进行标识的方式,确定硬件模块执行线程时的具体工作情况的工作信息,以根据工作信息解析出各个线程执行时准确的时间信息,从而根据时间信息对各个线程的执行情况进行相应地调度,以提高硬件电路中各个硬件模块的工作效率以及各个线程的调度效率。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的框图显示了根据本申请的多个实施例的设备的可能实现的体系架构、功能和操作。在这点上,框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图中的每个方框、以及框图的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。