CN113296846B - 一种基于任务调度的芯片端口配置方法与装置 - Google Patents

一种基于任务调度的芯片端口配置方法与装置 Download PDF

Info

Publication number
CN113296846B
CN113296846B CN202110623631.9A CN202110623631A CN113296846B CN 113296846 B CN113296846 B CN 113296846B CN 202110623631 A CN202110623631 A CN 202110623631A CN 113296846 B CN113296846 B CN 113296846B
Authority
CN
China
Prior art keywords
configuration
task
subtask
user
scheduling
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
CN202110623631.9A
Other languages
English (en)
Other versions
CN113296846A (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.)
Fiberhome Telecommunication Technologies Co Ltd
Wuhan Fisilink Microelectronics Technology Co Ltd
Original Assignee
Fiberhome Telecommunication Technologies Co Ltd
Wuhan Fisilink Microelectronics 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 Fiberhome Telecommunication Technologies Co Ltd, Wuhan Fisilink Microelectronics Technology Co Ltd filed Critical Fiberhome Telecommunication Technologies Co Ltd
Priority to CN202110623631.9A priority Critical patent/CN113296846B/zh
Publication of CN113296846A publication Critical patent/CN113296846A/zh
Application granted granted Critical
Publication of CN113296846B publication Critical patent/CN113296846B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • G06F9/4451User profiles; Roaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种基于任务调度的芯片端口配置方法与装置,根据用户设置的端口类型确定对象映射从属关系,并根据对象映射从属关系和用户设置的端口数量,创建芯片端口各模块的相应对象;根据用户设置的配置类型和资源类型为对应的对象创建一个用户任务并放入任务队列,在用户任务的基础上根据对象映射从属关系为各对象创建不同的子任务并放入任务队列;通过轮询调度方式不断从任务队列中取出任务并执行,实现各对象的相关配置,直至用户任务执行结束完成芯片端口配置。本发明将任务和对象挂钩,可实现在配置一个端口时最大限度的并行配置,在同时配置多个端口时也能够达到不相互影响并行配置的效果,大幅提高配置效率。

Description

一种基于任务调度的芯片端口配置方法与装置
技术领域
本发明属于交换芯片软件配置技术领域,更具体地,涉及一种基于任务调度的芯片端口配置方法与装置。
背景技术
交换芯片的端口配置是一种常见的芯片软件配置,在芯片运行前需要根据设备的需要将端口配置成需要的数量和类型。随着交换芯片带宽的增加,端口类型需要支持的数量和种类也在持续增加,目前支持的端口类型主要有1G、5G、10G、25G、40G、50G、100G等。而芯片端口又主要有多媒体访问控制器(Media Access Controller,简写为MAC)、物理编码子层(Physical Coding Sublayer,简写为PCS)以及串行和解串行编码解码(Serializer/deserializer,简写为Serdes)这三大类相关模块需要配置,每一类模块下又包括对应类型的多个小模块,模块与模块之间还存在部分关联的关系。
在当前的设备中,交换芯片的端口配置方法方案中多采取的是顺序配置,即按照一定的顺序直接配置;例如,先配置Serdes模块相关配置,再配置Pcs模块相关配置,最后再配置Mac模块相关配置。如图1所示,假设Serdes类的小模块有n1个,Pcs类的小模块有n2个,Mac类的小模块有n3个,则对于每个端口来说,均需要先配置Serdes类的n1个小模块相关配置,再配置Pcs类的n2个小模块相关配置,最后再配置Mac类的n3个小模块相关配置。假设总共需要进行多个端口的配置,则端口列表中记录了这多个端口,配置时需要按照上述方法依次对端口列表中的每个端口进行相关配置,直至端口列表中的所有端口配置完毕。
上述配置方式虽然结构简单,但是代码的可扩展性不好,配置时需要按照顺序依次进行,即所有模块的配置需要串行执行,导致配置效率不高,尤其是当模块数量较多时;而且每当新增一种类型端口时就需要新添加一个相应的端口配置函数和配置文件,容易造成代码冗余。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于任务调度的芯片端口配置方法与装置,其目的在于将模块对象化和配置任务化,通过任务调度的方法实现并行配置,由此解决传统的串行配置方式配置效率低以及增加端口类型容易造成代码冗余的技术问题。
为实现上述目的,按照本发明的一个方面,提供了一种基于任务调度的芯片端口配置方法,包括:
根据用户设置的端口类型确定对象映射从属关系,并根据所述对象映射从属关系和用户设置的端口数量,创建芯片端口各模块的相应对象;
根据用户设置的配置类型和资源类型为对应的对象创建一个用户任务并放入任务队列,在所述用户任务的基础上根据所述对象映射从属关系为各对象创建不同的子任务并放入任务队列;
通过轮询调度方式不断从所述任务队列中取出任务并执行,实现各对象的相关配置,直至所述用户任务执行结束时完成芯片端口配置。
优选地,当用户设置的资源类型为A时,为对应的对象A创建所述用户任务,则在所述端口数量为1的情况下,从所述任务队列中取出所述用户任务后,对应的执行方法包括:
根据所述对象映射从属关系和用户设置的配置类型,创建一个与对象B相关的子任务并放入所述任务队列;其中,所述对象B从属于所述对象A;
根据用户设置的配置类型对所述对象A进行相关配置,如果需要和芯片硬件进行寄存器交互,则创建交易相关的子任务并放入所述任务队列;
当所述对象A的相关配置完成时,创建一个用于查询所述对象B的相关配置是否完成的定时子任务并放入调度队列;其中,当查询到所述对象B的相关配置完成时,表示所述用户任务执行结束,完成芯片端口配置。
优选地,所述如果需要和芯片硬件进行寄存器交互,则创建交易相关的子任务并放入任务队列,具体为:
如果所述对象A需要和芯片硬件进行寄存器交互,则创建一个交易并放入交易队列,并将所述对象A的状态置位为等待硬件同步的标志位;
当芯片硬件的相应消息通过软件开发包上送时,从所述交易队列中取出该交易,然后根据该交易创建交易相关的子任务并放入所述任务队列;
当通过轮询调度方式从所述任务队列中取出交易相关的该子任务时,通过执行该子任务完成与芯片硬件的交易同步,并将所述对象A的状态置位为可继续配置状态,继续完成所述对象A的相关配置。
优选地,在所述创建一个用于查询所述对象B的相关配置是否完成的定时子任务并放入调度队列之后,所述方法还包括:
根据调度时间从所述调度队列中取出该定时子任务,并将该定时子任务放入所述任务队列中等待调度执行;
当从所述任务队列中取出该定时子任务执行时,如果返回结果为所述对象B的相关配置未完成,则重新将该定时子任务放入所述调度队列中等待下轮调度;如果返回结果为所述对象B的相关配置完成,则将所述用户任务的状态置位为执行结束状态。
优选地,在所述用户任务的执行过程中,所述方法还包括:
当芯片硬件有中断事件需要上报给用户时,创建一个子任务并放入所述任务队列中等待调度执行;当从所述任务队列中取出该子任务执行时,将相应的中断事件放入事件队列中,等待通告时间满足要求后通告给用户。
优选地,当通过轮询调度方式从所述任务队列中取出所述与对象B相关的子任务后,对应的执行方法包括:
根据所述对象映射从属关系和用户设置的配置类型,创建一个与对象C相关的子任务并放入所述任务队列;其中,所述对象C从属于所述对象B;
根据用户设置的配置类型对所述对象B进行相关配置,如果需要和芯片硬件进行寄存器交互,则创建交易相关的子任务并放入所述任务队列;
当所述对象B的相关配置完成时,创建一个用于查询所述对象C的相关配置是否完成的定时子任务并放入调度队列;其中,当查询到所述对象C的相关配置完成时,创建一个用于向所述对象A通告所述对象B的相关配置完成的子任务并放入所述任务队列。
优选地,当所述端口数量为大于1的N时,从所述任务队列中取出所述用户任务后,对应的执行方法包括:
根据用户设置的端口数量N为所述用户任务创建N个子任务,并将所述N个子任务放入所述任务队列中等待调度执行;其中,所述N个子任务的任务内容均与所述用户任务相同。
优选地,所述配置类型包括创建、删除和修改中的一种或多种。
优选地,所述资源类型包括Mac、Pcs、PcsLane、PcsMux和SerdesLane中的一种或多种。
按照本发明的另一方面,提供了一种基于任务调度的芯片端口配置装置,包括至少一个处理器和存储器,所述至少一个处理器和存储器之间通过数据总线连接,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令在被所述处理器执行后,用于完成第一方面所述的基于任务调度的芯片端口配置方法。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有如下有益效果:本发明提供的芯片端口配置方法中,将芯片端口相关的各个模块对象化,并将模块配置任务化,将端口的配置由一个大的任务拆分为多个不同的小配置任务,通过任务调度的方法取出各任务并执行,使各模块配置能够并行配置,从而完成芯片端口配置。本发明通过将任务和对象挂钩,可以实现在配置一个端口时最大限度的并行配置,在同时配置多个端口时也能够达到不相互影响并行配置的效果,大幅提高了配置效率,还可减少端口类型增加带来的代码冗余。
附图说明
图1是现有技术中一种按顺序直接进行芯片端口配置的逻辑示意图;
图2是本发明实施例提供的一种芯片端口实现并行配置的逻辑示意图;
图3是本发明实施例提供的一种任务调度器的框架示意图;
图4是本发明实施例提供的一种基于任务调度的芯片端口配置流程图;
图5是本发明实施例提供的一种通过任务调度机制执行任务的流程图;
图6是本发明实施例提供的一种芯片端口配置的逻辑过程示意图;
图7是本发明实施例提供的一种端口模块的对象映射从属关系示意图;
图8是本发明实施例提供的一种基于任务调度的芯片端口配置架构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
实施例1
传统的芯片端口配置通常是先配置Serdes模块相关配置,再配置Pcs模块相关配置,最后再配置Mac模块相关配置,如图1所示。为解决这种串行配置方式配置效率低、增加端口类型容易造成代码冗余的问题,本发明将模块对象化、将模块配置任务化,再利用任务调度机制达到各模块并行配置的目的,最终完成芯片端口配置。具体可参考图2:
首先将各端口的配置任务化,每个端口上均将Mac、Pcs、Serdes模块的各种配置创建成不同小颗粒的配置任务,从而将一个大的任务拆分为多个小的配置任务;将任务放入任务队列等待调度,各类任务之间的依赖关系由状态机保证;当所有任务均执行完毕后,芯片端口配置结束;在配置多个端口的时候,可完成多端口的并行配置。以图2为例,对于每个端口,对应Mac模块相关配置创建了m1个小任务,对应Pcs模块相关配置创建了m2个小任务,对应Serdes模块相关配置创建了m3个小任务,这些小任务可并行执行;总共需要进行n个端口的配置,则每个端口均需要执行这些创建的小任务,且n个端口的任务可并行执行,从而大幅提高配置效率。
为实现上述目的,本发明实施例首先提供了一种基于任务调度的芯片端口配置装置,主要包括对象资源管理单元、任务资源管理单元和任务调度器这三个模块。其中:
所述对象资源管理单元主要用于管理对象映射从属关系,并根据所述对象映射从属关系将各模块对象化,即创建芯片端口各模块的相应对象。例如,对应Mac模块则创建Mac对象,对应Pcs模块则创建Pcs对象,对应Serdes模块则创建Serdes对象。所述对象映射从属关系是指各对象之间的映射和从属关系,例如完成一个Mac对象需要对应多少个Pcs对象,一个Pcs对象又对应多少个Serdes对象,基于所述对象映射从属关系可确定每种对象创建的数量。具体的对象创建过程将在实施例2和实施例3中介绍,在此不做赘述。
所述任务资源管理单元主要用于将模块配置任务化,为各对象创建任务,包括任务类型的配置、任务资源的分配回收以及任务从属关系的管理。具体创建任务时先根据用户设置的配置类型和资源类型为对应的对象创建一个用户任务,再在此基础上根据所述对象映射从属关系为各对象创建不同的子任务,各任务均放入任务队列中等待调度执行。具体的任务创建过程将在实施例2和实施例3中介绍,在此不做赘述。
其中,所述任务类型主要有三大类:用户任务(即UserTask)、系统任务(即ChipTask)和通用任务(即RalTask);用户任务主要是来自于命令行或者用户主动配置的任务,系统任务主要是来自于底层芯片硬件主动上报中断事件的任务,通用任务主要由任务调度器根据状态机和配置需求产生的中间调度任务。任务资源的回收是指任务执行结束后进行资源回收。任务从属关系主要是指任务与任务之间的父子关系,在本发明实施例中,开始创建的所述用户任务是一个总的父任务,其余各任务均为所述用户任务的子任务或者子任务的子任务等。
所述任务调度器用于通过轮询调度方式不断从所述任务队列中取出任务并执行,实现各对象的相关配置,例如完成芯片硬件与寄存器的交互、定时任务的分配调度以及芯片硬件中断事件上报给用户的工作等,直至所述用户任务执行结束时完成芯片端口配置。其中,每个任务执行结束后将相应的结束标志位置位,即将对应的状态置位为执行结束状态;当所述任务队列中的所有子任务均执行结束后,将所述用户任务的结束标志位置位,表明整个端口配置完成。具体的任务调度执行过程将在实施例2和实施例3中介绍,在此不做赘述。
进一步参考图3,所述任务调度器包括四个先进先出队列和三个调度线程。其中:
所述四个先进先出队列包括任务队列(即TaskQueue)、调度队列(即ScheduleQueue)、交易队列(即TransactionQueue)和事件队列(即EventQueue)。所述任务队列是最主要的一个队列,用于存放需要配置的各种任务,类型包括用户任务、系统任务和通用任务;所述调度队列用于存放需要定时或者延时处理的各种任务;所述交易队列用于存放需要和芯片硬件交互的具体寄存器配置;所述事件队列用于存放芯片硬件需要上报给用户的中断事件。
所述三个调度线程包括分发线程(即DispathThread)、接收线程(即ReceiveThread)和调度线程(即ScheduleThread),如图中虚线圈所示。所述分发线程用于从所述任务队列中取出任务并执行,这个过程中会产生0个或一个或多个与寄存器交互的交易,并会根据当前的状态机生成一个新的RalTask重新入队;所述接收线程用于在芯片硬件接收到消息后从所述交易队列中取出相应的交易完成同步;所述调度线程主要是用来做定时器的工作,用于根据设置的调度时间从所述调度队列中取出任务并放入所述任务队列中去。
通过本发明实施例提供的上述芯片端口配置装置,可将芯片端口相关的各个模块对象化,并将模块配置任务化,将端口的配置由一个大的任务拆分为多个不同的小配置任务,利用任务调度器通过任务调度的方法取出各任务并执行,使各模块配置能够并行配置,从而完成芯片端口配置。通过将任务和对象挂钩,可以实现在配置一个端口时最大限度的并行配置,在同时配置多个端口时也能够达到不相互影响并行配置的效果,大幅提高了配置效率,还可减少端口类型增加带来的代码冗余。
实施例2
在上述实施例1的基础上,本发明实施例提供了一种基于任务调度的芯片端口配置方法,可采用实施例1中提供的芯片端口配置装置完成,具体方法如图4所示,主要包括以下步骤:
步骤10,根据用户设置的端口类型确定对象映射从属关系,并根据所述对象映射从属关系和用户设置的端口数量,创建芯片端口各模块的相应对象。
用户可根据实际配置需求自行设置需要配置的端口类型和端口数量,端口类型可以是1G、5G、10G、25G、40G、50G、100G等。端口类型不同,各模块之间的映射和从属关系就不同,相应的对象映射从属关系也就不同。因此,所述对象资源管理单元会先根据端口类型确定对象映射从属关系,然后再根据该对象映射从属关系为每个端口创建各模块的相应对象,例如对应Mac模块创建Mac对象,每个Mac对象再对应创建多少个Pcs对象,每个Pcs对象再对应创建多少个Serdes对象。通常每个端口会对应创建多个对象,假设每个端口需要创建m个对象,需要配置的端口数量为n,则总共需要创建n*m个对象。
步骤20,根据用户设置的配置类型和资源类型为对应的对象创建一个用户任务并放入任务队列,在所述用户任务的基础上根据所述对象映射从属关系为各对象创建不同的子任务并放入任务队列。
用户可根据实际配置需求自行设置需要的配置类型和资源类型。其中,所述配置类型主要包括创建(即create)、删除(即delete)和修改(即update)这三大类;所述资源类型则与对象的类型相对应,有多少种对象就对应多少种资源类型。当用户输入配置类型和资源类型后,所述任务资源管理单元会根据输入参数获取对应对象的ID,然后根据输入参数为对应对象创建一个对应配置类型的用户任务,并放入所述任务队列中等待调度执行。
在各类对象中,有些是可由用户直接配置的,而有些是不能由用户直接配置的。假设某个对象A属于用户能够配置的对象,当用户设置的资源类型为A时,则用户是通过对象A来进行配置,此时所述任务资源管理单元会直接根据配置类型为对象A创建一个用户任务UserTask,并放入所述任务队列中等待调度执行。
需要说明的是,所述任务队列中最初仅有一个用户任务,但后续在取出该用户任务执行的过程中,所述任务资源管理单元还会以该用户任务作为总的父任务,根据配置需求以及所述对象映射从属关系来逐级为各对象创建新的子任务,并将子任务继续放入所述任务队列中等待调度执行。因此,所述任务队列中包含一个用户任务以及一个或多个子任务,子任务的创建将在步骤30中一并介绍。
步骤30,通过轮询调度方式不断从所述任务队列中取出任务并执行,实现各对象的相关配置,直至所述用户任务执行结束时完成芯片端口配置。
所述任务调度器中的分发线程会以周期性轮询调度的方式从所述任务队列中取出任务并执行,以便对各模块进行相关配置;每次取出任务执行时,所述任务资源管理单元会根据配置需求以及所述对象映射从属关系,为当前取出的任务创建一个或多个子任务并继续放入所述任务队列中等待调度执行。每个任务在执行结束后,将对应的状态置位为执行结束状态;当所述任务队列中的所有子任务均执行结束后,将所述用户任务的状态置位为执行结束状态,此时整个端口配置完成。
以用户设置的端口数量为1为例,当用户设置的资源类型为A时,所述用户任务与对象A相关,则当通过轮询调度方式从所述任务队列中取出所述用户任务后,对应的执行方法可参考图5,具体包括:
步骤301,根据所述对象映射从属关系和用户设置的配置类型,创建一个与对象B相关的子任务并放入所述任务队列;其中,所述对象B从属于所述对象A。
由于所述对象B从属于所述对象A,所述对象A的相关配置大多数情况下需要依赖于所述对象B的相关配置,因此执行所述对象A相关的用户任务时,需要进一步创建一个与对象B相关的子任务,并放入所述任务队列中等待调度执行;该子任务的创建相当于是对下级的所述对象B进行通知,通知所述对象B来开启自身的相关配置。该子任务的配置类型与所述用户任务的配置类型相同,资源类型为B,任务类型属于RalTask。特殊地,当配置类型为修改时,所述对象A的配置修改不需要依赖于所述对象B的配置修改,此时可无需创建该子任务。
步骤302,根据用户设置的配置类型对所述对象A进行相关配置,如果需要和芯片硬件进行寄存器交互,则创建交易相关的子任务并放入所述任务队列。
所述对象A在通知下级的所述对象B进行相关配置的同时,会开启自身模块的相关配置。例如,当配置类型为创建时则对所述对象A创建相关配置,当配置类型为删除时则对所述对象A删除相关配置,当配置类型为修改时则对所述对象A修改相关配置。
结合图3,如果需要和芯片硬件进行寄存器交互,则创建交易相关的子任务并放入所述任务队列,具体过程如下:如果所述对象A需要和芯片硬件进行寄存器交互,则创建一个交易并放入交易队列,并将所述对象A的状态置位为等待硬件同步的标志位;当芯片硬件的相应消息通过驱动软件开发包上送至所述接收线程中时,所述接收线程从所述交易队列中取出该交易,然后根据该交易创建交易相关的子任务并放入所述任务队列,该子任务的任务类型属于RalTask;当所述分发线程通过轮询调度方式从所述任务队列中取出交易相关的该子任务时,通过执行该子任务完成与芯片硬件的交易同步,并将所述对象A的状态置位为可继续配置状态,以便继续完成所述对象A的相关配置。
进一步结合图3,在所述用户任务的执行过程中,所述方法还包括:当芯片硬件有中断事件需要上报给用户时,创建一个ChipTask类型的子任务并放入所述任务队列中等待调度执行;当所述分发线程从所述任务队列中取出该子任务执行时,将相应的中断事件放入事件队列中,等待通告时间满足要求后通告给用户。
其中,如果碰到一些配置需要等待一段时间才能生效时,可以利用所述调度线程来完成,比如对Mac模块进行复位时,需要等待一定的时间之后去确定芯片硬件的状态,则需要利用所述调度线程来完成。具体是先创建一个延时子任务放入所述调度队列,等到调度时间后再从所述调度队列中取出放入所述任务队列,等待调度执行。
步骤303,当所述对象A的相关配置完成时,创建一个用于查询所述对象B的相关配置是否完成的定时子任务并放入调度队列;其中,当查询到所述对象B的相关配置完成时,表示所述用户任务执行结束,完成芯片端口配置。
在创建用于查询所述对象B的相关配置是否完成的定时子任务并放入调度队列之后,所述调度线程会根据设置好的调度时间从所述调度队列中取出该定时子任务,并将该定时子任务放入所述任务队列中等待调度执行。当所述分发线程从所述任务队列中取出该定时子任务执行时,如果返回结果为所述对象B的相关配置未完成,则重新将该定时子任务放入所述调度队列中等待下轮调度,或者重新创建一个定时子任务放入所述调度队列中等待下轮调度;如果返回结果为所述对象B的相关配置完成,则将所述用户任务的状态置位为执行结束状态,此时完成整个芯片的端口配置。
进一步地,当通过轮询调度方式继续从所述任务队列中取出所述与对象B相关的子任务(即步骤301中创建的子任务)后,对应的执行方法与所述用户任务类似,继续参考图5,具体包括:
步骤304,根据所述对象映射从属关系和用户设置的配置类型,创建一个与对象C相关的子任务并放入所述任务队列;其中,所述对象C从属于所述对象B。具体实施过程可参考步骤301中的相关介绍,在此不做赘述。
步骤305,根据用户设置的配置类型对所述对象B进行相关配置,如果需要和芯片硬件进行寄存器交互,则创建交易相关的子任务并放入所述任务队列。具体实施过程可参考步骤302中的相关介绍,在此不做赘述。
步骤306,当所述对象B的相关配置完成时,创建一个用于查询所述对象C的相关配置是否完成的定时子任务并放入调度队列;其中,当查询到所述对象C的相关配置完成时,创建一个用于向所述对象A通告所述对象B的相关配置完成的子任务并放入所述任务队列。具体实施过程如下:
在创建一个用于查询所述对象C的相关配置是否完成的定时子任务并放入调度队列后,所述调度线程会根据设置好的调度时间从所述调度队列中取出该定时子任务,并将该定时子任务放入所述任务队列中等待调度执行。当所述分发线程从所述任务队列中取出该定时子任务执行时,如果返回结果为所述对象C的相关配置未完成,则重新将该定时子任务放入所述调度队列中等待下轮调度,或者重新创建一个定时子任务放入所述调度队列中等待下轮调度;如果返回结果为所述对象C的相关配置完成,则将所述与对象B相关的子任务的状态置位为执行结束状态,并创建一个用于向所述对象A通告所述对象B的相关配置完成的子任务放入所述任务队列。
进一步地,当通过轮询调度方式继续从所述任务队列中取出所述与对象C相关的子任务(即步骤304中创建的子任务)后,对应的执行方法可参考步骤304-306;而后续根据所述对象映射从属关系创建的各子任务的执行方法均可以此类推,在此不做赘述。
在上述实施例中,是以用户设置的端口数量为1为例,当用户设置的端口数量为大于1的N时,任务执行过程略有区别。在这种情况下,从所述任务队列中取出所述用户任务后,对应的执行方法包括:
根据用户设置的端口数量N为所述用户任务创建N个子任务,并将所述N个子任务放入所述任务队列中等待调度执行;其中,所述N个子任务的任务内容均与所述用户任务相同。例如,配置类型为创建,资源类型为Mac时,所述用户任务为“创建Mac”,则取出该用户任务执行时需要对应创建N个“创建Mac”子任务。其中,对于所述N个子任务中的任一子任务,其执行方法均与端口数量为1时用户任务的执行方法相同,可参考步骤301-306,相当于将这一个总的用户任务分成N个独立分支来进行模块相关配置,且每个独立分支可并行,具体过程在此不做赘述。
综上所述,整个芯片端口配置的逻辑过程可参考图6,简单总结如下:当用户输入配置类型和资源类型后,根据输入参数获取对应对象的ID;然后根据输入参数为对应对象创建一个对应配置类型的用户任务,并放入所述任务队列中等待调度执行;所述分发线程通过轮询调度方式从所述任务队列中取出任务并执行,在这个执行过程中可能会不断创建新的子任务继续放入所述任务队列中;每当取出一个任务执行后,可检查所述用户任务的结束标志位是否置位,如果是则说明芯片端口配置结束,如果否则继续从所述任务队列中取出任务执行,直至所述用户任务的结束标志位置位,芯片端口配置结束。
本发明实施例提供的上述芯片端口配置方法中,将芯片端口相关的各个模块对象化,并将模块配置任务化,将端口的配置由一个大的任务拆分为多个不同的小配置任务,通过任务调度的方法取出各任务并执行,使各模块配置能够并行配置,从而完成芯片端口配置。本发明通过将任务和对象挂钩,可以实现在配置一个端口时最大限度的并行配置,在同时配置多个端口时也能够达到不相互影响并行配置的效果,大幅提高了配置效率,还可减少端口类型增加带来的代码冗余。
实施例3
在上述实施例2的基础上,为便于更深入地理解方案,本发明继续通过一个具体的实施例来对整个芯片端口配置的过程展开介绍。
如图7所示,根据芯片模块的设计,本发明实施例将Serdes类模块、Pcs类模块和Mac类模块划分为以下几类对象:Mac对象、Pcs对象、PcsLane对象(即Pcs通道对象)、PcsMux对象(即Pcs多路复用对象)以及SerdesLane对象(即Serdes通道对象)。其中,按照从左到右的顺序,SerdesLane从属于PcsMux,PcsMux从属于PcsLane,PcsLane从属于Pcs,Pcs从属于Mac,因此配置类型为创建或删除时需要按照从右到左的顺序逐级通知。
从图中可以看到,SerdesLane和PcsMux之间是1:1的关系,PcsMux和PcsLane之间是m:n的关系,PcsLane和Pcs之间是n:1的关系,Pcs和Mac之间是1:1的关系。具体的映射比例与端口类型相关,例如配置一个100G的端口则需要创建1个Mac对象、1个Pcs对象、20个PcsLane对象、4个PcsMux对象和4个SerdesLane对象。在图7中,下方的3个框分别表示Serdes资源管理对象(即Capri)、Pcs资源管理对象(即IpuPcs)、Mac资源管理对象(即Ipu),相当于所述对象资源管理单元中的三个结构,分别用于管理对应类型的资源使用情况。最上面的3个配置方块Conf对应的是能够通过用户来配置的资源类型,即用户能够配置的对象有SerdesLane、PcsMux、Mac。
基于上述给出的对象划分方法,本发明实施例以用户输入的配置类型为“创建”、资源类型为“Mac”,创建1个100G端口为例,提供了一种基于任务调度的芯片端口配置方法,具体包括:
步骤1,根据端口类型100G确定对象映射从属关系,并根据所述对象映射从属关系利用各资源管理对象来创建各模块的相应对象。
由前述介绍可知,根据100G端口对应的对象映射从属关系,一个100G端口需要创建1个Mac对象、1个Pcs对象、20个PcsLane对象、4个PcsMux对象和4个Serdes对象,为方便描述可分别记为Mac0对象、Pcs0对象、PcsLane0-19对象、PcsMux0-3对象和Serdes0-4对象,共30个对象。由于只需要配置1个端口,因此总共只需要创建30个对象即可。
步骤2,根据用户输入的参数为Mac0对象创建一个配置类型为“创建”、资源类型为“Mac”的用户任务,并放入任务队列中等待调度执行。
步骤3,所述分发线程通过轮询调度的方式查找所述任务队列中的任务,如果所述任务队列中不为空,则取出所述任务队列中的任务并执行。各任务的执行过程具体如步骤4-步骤7。
步骤4,当从所述任务队列中取出“创建Mac”的用户任务时,需要对Mac0对象进行相关配置。此时执行方法具体如下:
步骤401,根据用户输入的参数和所述对象映射从属关系,创建一个配置类型为“创建”、资源类型为“Pcs”的子任务,以通知下一级的Pcs0对象进行自身的相关配置,并将该子任务放入任务队列中等待调度执行。
步骤402,根据配置类型继续进行Mac0对象的相关配置,例如端口的使能、速率、模式等等。如果Mac0对象需要和芯片硬件进行寄存器的交互,则创建一个交易放入所述交易队列中,同时将当前Mac0对象的状态置位为等待硬件同步的标志位。
步骤403,当芯片硬件的相应消息通过软件开发包上送到接收线程中时,所述接收线程从所述交易队列中取出该交易,通过Mac0对象再创建一个交易相关的子任务,并放入所述任务队列等待调度执行。
步骤404,当所述分发线程从所述任务队列中取出交易相关的该子任务时,执行该子任务相应的方法,完成与芯片硬件的交易同步;同时将Mac0对象的状态置位为可继续配置状态,继续完成Mac0对象的相关配置。
其中,如果碰到一些配置需要等待一段时间才能生效时,可以利用所述调度线程来完成,比如对Mac0模块进行复位时,需要等待一定的时间之后去确定芯片硬件的状态,则需要利用所述调度线程来完成。具体是先创建一个延时子任务放入所述调度队列,等到调度时间后再从所述调度队列中取出放入所述任务队列,等待调度执行。步骤405也是一个利用调度线程来完成的例子。
步骤405,当Mac0对象的相关配置全部完成时,创建一个定时子任务去查询下一级Pcs0对象的配置是否完成,即步骤401中创建的“创建Pcs”的子任务是否完成,并将该定时子任务放入所述调度队列中;等待调度时间到达后,所述调度线程从所述调度队列中取出该定时子任务,并放入所述任务队列中等待调度执行。
步骤406,如果返回结果为Pcs0对象配置未完成,则重新将该定时子任务放入所述调度队列中等待下轮调度,或者重新创建一个定时子任务放入所述调度队列中等待下轮调度;如果返回结果为Pcs0对象配置完成,代表整个端口的配置完成,则将所述用户任务的状态置位为执行结束状态,从而完成1个100G端口的配置的全部过程。
步骤5,当从所述任务队列中取出步骤401中创建的“创建Pcs”的子任务时,需要对Pcs0对象进行相关配置。执行方法具体如下:
步骤501,根据用户输入的参数和所述对象映射从属关系,创建20个配置类型为“创建”、资源类型为“PcsLane”的子任务,以分别通知下一级的PcsLane0-19对象进行自身的相关配置,并将这20个子任务放入任务队列中等待调度执行。
步骤502,根据配置类型继续进行Pcs0对象的相关配置,如果需要和芯片硬件进行寄存器的交互,则创建一个交易放入所述交易队列中,同时将当前Pcs0对象的状态置位为等待硬件同步的标志位。
步骤503,当芯片硬件的相应消息通过软件开发包上送到接收线程中时,所述接收线程从所述交易队列中取出该交易,通过Pcs0对象再创建一个交易相关的子任务,并放入所述任务队列等待调度执行。
步骤504,当所述分发线程从所述任务队列中取出交易相关的该子任务并执行时,完成与芯片硬件的交易同步;同时将Pcs0对象的状态置位为可继续配置状态,继续完成Pcs0对象的相关配置。
步骤505,当Pcs0对象的相关配置全部完成时,需要创建20个定时子任务分别去查询下一级PcsLane0-19对象的配置是否完成,即步骤501中创建的20个“创建PcsLane”的子任务是否完成,并将这20个定时子任务放入所述调度队列中;等待调度时间到达后,所述调度线程从所述调度队列中取出相应的定时子任务,并放入所述任务队列中等待调度执行。
步骤506,当Pcs0对象查询到所有的PcsLane0-19对象全部配置完成时,会创建一个子任务向Mac0对象通告Pcs0对象配置完成,并将该子任务放入任务队列中等待调度执行。
步骤6,当从所述任务队列中取出步骤501中创建的“创建PcsLane i”的子任务时,需要对PcsLane i对象进行相关配置(i=0,1,2,...,19)。执行方法具体如下:
步骤601,根据用户输入的参数和所述对象映射从属关系,创建4个配置类型为“创建”、资源类型为“PcsMux”的子任务,以分别通知下一级的PcsMux0-3对象进行自身的相关配置,并将这4个子任务放入任务队列中等待调度执行。
需要说明的是,根据100G端口时的所述对象映射从属关系可知,PcsLane与PcsMux是20:4的关系,即20个PcsLane子任务对应4个PcsMux子任务,因此需要每5个PcsLane子任务对应创建1个PcsMux子任务,而具体哪5个PcsLane子任务创建1个PcsMux子任务可由编号决定的。例如,可分别在PcsLane子任务编号为0、5、10、15时创建1个PcsMux子任务;具体为在执行PcsLane0、PcsLane5、PcsLane10、PcsLane15这4个PcsLane子任务时,分别创建PcsMux0、PcsMux1、PcsMux2、PcsMux3子任务,进而分别通知PcsMux0-3对象进行自身的相关配置;执行PcsLane0、PcsLane5、PcsLane10、PcsLane15这4个以外的PcsLane子任务时则无需创建PcsMux子任务。
步骤602,根据配置类型继续进行PcsLane i对象的相关配置,如果需要和芯片硬件进行寄存器的交互,则创建一个交易放入所述交易队列中,同时将当前PcsLane i对象的状态置位为等待硬件同步的标志位。
步骤603,当芯片硬件的相应消息通过软件开发包上送到接收线程中时,所述接收线程从所述交易队列中取出该交易,通过PcsLane i对象再创建一个交易相关的子任务,并放入所述任务队列等待调度执行。
步骤604,当所述分发线程从所述任务队列中取出交易相关的该子任务并执行时,完成与芯片硬件的交易同步;同时将PcsLane i对象的状态置位为可继续配置状态,继续完成PcsLane i对象的相关配置。
步骤605,当PcsLane i对象的相关配置全部完成时,需要创建4个定时子任务分别去查询下一级PcsMux0-3对象的配置是否完成,即步骤601中创建的4个“创建PcsMux”的子任务是否完成,并将这4个定时子任务放入所述调度队列中;等待调度时间到达后,所述调度线程从所述调度队列中取出相应的定时子任务,并放入所述任务队列中等待调度执行。
步骤606,当PcsLane i对象查询到所有的PcsMux0-3对象全部配置完成时,会创建一个子任务向Pcs0对象通告PcsLane i对象配置完成,并将该子任务放入任务队列中等待调度执行。
需要说明的是,步骤605中同样是每5个PcsLane子任务对应创建1个定时子任务,具体是哪5个PcsLane子任务创建1个定时任务,可与步骤601中创建PcsMux子任务时保持一致。例如,当PcsLane 0对象的相关配置全部完成时,对应创建一个定时子任务去查询PcsMux0对象的配置是否完成;当PcsLane 5对象的相关配置全部完成时,对应创建一个定时子任务去查询PcsMux1对象的配置是否完成;以此类推;PcsLane0、PcsLane5、PcsLane10、PcsLane15以外的对象则无需创建定时子任务。相应地,当PcsLane 0对象查询到对应的PcsMux 0对象配置完成时,会创建一个子任务向Pcs0对象通告PcsLane 0对象配置完成,以此类推;当PcsLane 5对象查询到对应的PcsMux1对象配置完成时,会创建一个子任务向Pcs0对象通告PcsLane 5对象配置完成,以此类推;即哪个对象创建的子任务就由哪个对象来查询。
步骤7,当从所述任务队列中取出步骤601中创建的“创建PcsMuxj”的子任务时,需要对PcsMuxj对象进行相关配置(j=0,1,2,3)。执行方法具体如下:
步骤701,根据用户输入的参数和所述对象映射从属关系,创建4个配置类型为“创建”、资源类型为“SerdesLane”的子任务,以分别通知下一级的SerdesLane0-3对象进行自身的相关配置,并将这4个子任务放入任务队列中等待调度执行。
需要说明的是,根据100G端口时的所述对象映射从属关系可知,PcsMux与SerdesLane是4:4的关系,即4个PcsMux子任务对应4个SerdesLane子任务,因此每个PcsMux子任务对应创建1个SerdesLane子任务即可。具体为在执行PcsMux0、PcsMux1、PcsMux2、PcsMux3这4个PcsMux子任务时,分别创建SerdesLane0、SerdesLane1、SerdesLane2、SerdesLane3子任务,进而分别通知SerdesLane0-3对象进行自身的相关配置。
步骤702,根据配置类型继续进行PcsMuxj对象的相关配置,如果需要和芯片硬件进行寄存器的交互,则创建一个交易放入所述交易队列中,同时将当前PcsMuxj对象的状态置位为等待硬件同步的标志位。
步骤703,当芯片硬件的相应消息通过软件开发包上送到接收线程中时,所述接收线程从所述交易队列中取出该交易,通过PcsMuxj对象再创建一个交易相关的子任务,并放入所述任务队列等待调度执行。
步骤704,当所述分发线程从所述任务队列中取出交易相关的该子任务并执行时,完成与芯片硬件的交易同步;同时将PcsMuxj对象的状态置位为可继续配置状态,继续完成PcsMuxj对象的相关配置。
步骤705,当PcsMuxj对象的相关配置全部完成时,需要创建4个定时子任务分别去查询下一级SerdesLane0-3对象的配置是否完成,即步骤701中创建的4个“创建SerdesLane”的子任务是否完成,并将这4个定时子任务放入所述调度队列中;等待调度时间到达后,所述调度线程从所述调度队列中取出相应的定时子任务,并放入所述任务队列中等待调度执行。
步骤706,当PcsMuxj对象查询到所有的SerdesLane0-3对象全部配置完成时,会创建一个子任务向PcsLane i对象通告PcsMuxj对象配置完成,并将该子任务放入任务队列中等待调度执行。
需要说明的是,步骤705中同样是每个PcsMux子任务对应创建1个定时子任务,与步骤701中创建SerdesLane子任务时一致。例如,当PcsMux0对象的相关配置完成时,创建一个定时子任务去查询SerdesLane0对象的配置是否完成;当PcsMux 1对象的相关配置完成时,创建一个定时子任务去查询SerdesLane1对象的配置是否完成,以此类推。相应地,当PcsMux 0对象查询到对应的SerdesLane0对象配置完成时,会创建一个子任务向PcsLane 0对象通告PcsMux 0对象配置完成;当PcsMux 1对象查询到对应的SerdesLane1对象配置完成时,会创建一个子任务向PcsLane 5对象通告PcsMux 1对象配置完成,以此类推。
步骤8,当从所述任务队列中取出步骤701中创建的“创建SerdesLane k”的子任务时,需要对SerdesLane k对象进行相关配置(k=0,1,2,3)。执行方法具体如下:
步骤801,根据配置类型进行SerdesLane k对象的相关配置,如果需要和芯片硬件进行寄存器的交互,则创建一个交易放入所述交易队列中,同时将当前SerdesLane k对象的状态置位为等待硬件同步的标志位。
步骤802,当芯片硬件的相应消息通过软件开发包上送到接收线程中时,所述接收线程从所述交易队列中取出该交易,通过SerdesLane k对象再创建一个交易相关的子任务,并放入所述任务队列等待调度执行。
步骤803,当所述分发线程从所述任务队列中取出交易相关的该子任务并执行时,完成与芯片硬件的交易同步;同时将SerdesLane k对象的状态置位为可继续配置状态,继续完成SerdesLane k对象的相关配置。
步骤804,当SerdesLane k对象的相关配置全部完成时,会创建一个子任务向PcsMuxj对象通告SerdesLane k对象配置完成,并将该子任务放入任务队列中等待调度执行。
需要说明的是,在上述实施例中,步骤4-8中的任务并不是按照步骤顺序进行,而是穿插地并行进行配置,即各对象的相关配置可以并行执行。例如,在步骤402进行Mac0对象的相关配置时,只要所述分发线程空闲下来,就可继续从所述任务队列中取出“创建Pcs”的子任务对Pcs0对象进行相关配置,此时Mac0对象和Pcs0对象的配置实际上是并行的;同样地,此时所述分发线程空闲下来后继续从所述任务队列中取出“创建PcsLane i”的子任务对PcsLane i对象进行相关配置,以此类推,因此可达到各模块并行配置的效果,大大提高配置效率。
实施例4
在上述实施例2和实施例3提供的基于任务调度的芯片端口配置方法的基础上,本发明还提供了另一种可用于实现上述方法的基于任务调度的芯片端口配置装置,如图8所示,是本发明实施例的装置架构示意图。本实施例的基于任务调度的芯片端口配置装置包括一个或多个处理器21以及存储器22。其中,图8中以一个处理器21为例。
所述处理器21和所述存储器22可以通过总线或者其他方式连接,图8中以通过总线连接为例。
所述存储器22作为一种基于任务调度的芯片端口配置方法非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如实施例1中的基于任务调度的芯片端口配置方法。所述处理器21通过运行存储在所述存储器22中的非易失性软件程序、指令以及模块,从而执行基于任务调度的芯片端口配置装置的各种功能应用以及数据处理,即实现实施例2和实施例3的基于任务调度的芯片端口配置方法。
所述存储器22可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,所述存储器22可选包括相对于所述处理器21远程设置的存储器,这些远程存储器可以通过网络连接至所述处理器21。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述程序指令/模块存储在所述存储器22中,当被所述一个或者多个处理器21执行时,执行上述实施例1中的基于任务调度的芯片端口配置方法,例如,执行以上描述的图4-图6所示的各个步骤。
本领域普通技术人员可以理解实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁盘或光盘等。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (6)

1.一种基于任务调度的芯片端口配置方法,其特征在于,包括:
根据用户设置的端口类型确定对象映射从属关系,并根据所述对象映射从属关系和用户设置的端口数量,创建芯片端口各模块的相应对象;
根据用户设置的配置类型和资源类型为对应的对象创建一个用户任务并放入任务队列,在所述用户任务的基础上根据所述对象映射从属关系为各对象创建不同的子任务并放入任务队列,其中,所述配置类型包括创建、删除和修改中的一种或多种,所述资源类型包括Mac、Pcs、PcsLane、PcsMux和SerdesLane中的一种或多种;
通过轮询调度方式不断从所述任务队列中取出任务并执行,实现各对象的相关配置,直至所述用户任务执行结束时完成芯片端口配置,其中,当用户设置的资源类型为A时,为对应的对象A创建所述用户任务,则在所述端口数量为1的情况下,根据所述对象映射从属关系和用户设置的配置类型,创建一个与对象B相关的子任务并放入所述任务队列;其中,所述对象B从属于所述对象A,根据用户设置的配置类型对所述对象A进行相关配置,如果需要和芯片硬件进行寄存器交互,则创建交易相关的子任务并放入所述任务队列,当所述对象A的相关配置完成时,创建一个用于查询所述对象B的相关配置是否完成的定时子任务并放入调度队列;其中,当查询到所述对象B的相关配置完成时,表示所述用户任务执行结束,完成芯片端口配置,其中,如果所述对象A需要和芯片硬件进行寄存器交互,则创建一个交易并放入交易队列,并将所述对象A的状态置位为等待硬件同步的标志位;当芯片硬件的相应消息通过软件开发包上送时,从所述交易队列中取出该交易,然后根据该交易创建交易相关的子任务并放入所述任务队列;当通过轮询调度方式从所述任务队列中取出交易相关的该子任务时,通过执行该子任务完成与芯片硬件的交易同步,并将所述对象A的状态置位为可继续配置状态,继续完成所述对象A的相关配置。
2.如权利要求1所述的基于任务调度的芯片端口配置方法,其特征在于,在所述创建一个用于查询所述对象B的相关配置是否完成的定时子任务并放入调度队列之后,所述方法还包括:
根据调度时间从所述调度队列中取出该定时子任务,并将该定时子任务放入所述任务队列中等待调度执行;
当从所述任务队列中取出该定时子任务执行时,如果返回结果为所述对象B的相关配置未完成,则重新将该定时子任务放入所述调度队列中等待下轮调度;如果返回结果为所述对象B的相关配置完成,则将所述用户任务的状态置位为执行结束状态。
3.如权利要求1所述的基于任务调度的芯片端口配置方法,其特征在于,在所述用户任务的执行过程中,所述方法还包括:
当芯片硬件有中断事件需要上报给用户时,创建一个子任务并放入所述任务队列中等待调度执行;当从所述任务队列中取出该子任务执行时,将相应的中断事件放入事件队列中,等待通告时间满足要求后通告给用户。
4.如权利要求1所述的基于任务调度的芯片端口配置方法,其特征在于,当通过轮询调度方式从所述任务队列中取出所述与对象B相关的子任务后,对应的执行方法包括:
根据所述对象映射从属关系和用户设置的配置类型,创建一个与对象C相关的子任务并放入所述任务队列;其中,所述对象C从属于所述对象B;
根据用户设置的配置类型对所述对象B进行相关配置,如果需要和芯片硬件进行寄存器交互,则创建交易相关的子任务并放入所述任务队列;
当所述对象B的相关配置完成时,创建一个用于查询所述对象C的相关配置是否完成的定时子任务并放入调度队列;其中,当查询到所述对象C的相关配置完成时,创建一个用于向所述对象A通告所述对象B的相关配置完成的子任务并放入所述任务队列。
5.如权利要求1所述的基于任务调度的芯片端口配置方法,其特征在于,当所述端口数量为大于1的N时,从所述任务队列中取出所述用户任务后,对应的执行方法包括:
根据用户设置的端口数量N为所述用户任务创建N个子任务,并将所述N个子任务放入所述任务队列中等待调度执行;其中,所述N个子任务的任务内容均与所述用户任务相同。
6.一种基于任务调度的芯片端口配置装置,其特征在于,包括至少一个处理器和存储器,所述至少一个处理器和存储器之间通过数据总线连接,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令在被所述处理器执行后,用于完成权利要求1-5任一所述的基于任务调度的芯片端口配置方法。
CN202110623631.9A 2021-06-04 2021-06-04 一种基于任务调度的芯片端口配置方法与装置 Active CN113296846B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110623631.9A CN113296846B (zh) 2021-06-04 2021-06-04 一种基于任务调度的芯片端口配置方法与装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110623631.9A CN113296846B (zh) 2021-06-04 2021-06-04 一种基于任务调度的芯片端口配置方法与装置

Publications (2)

Publication Number Publication Date
CN113296846A CN113296846A (zh) 2021-08-24
CN113296846B true CN113296846B (zh) 2023-04-18

Family

ID=77327296

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110623631.9A Active CN113296846B (zh) 2021-06-04 2021-06-04 一种基于任务调度的芯片端口配置方法与装置

Country Status (1)

Country Link
CN (1) CN113296846B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102045608A (zh) * 2010-12-29 2011-05-04 福建星网锐捷网络有限公司 用于光通信的网络设备及其自动配置交换接口的方法
CN102891813A (zh) * 2012-09-05 2013-01-23 盛科网络(苏州)有限公司 支持多传输模式的以太网端口架构
US9886072B1 (en) * 2013-06-19 2018-02-06 Altera Corporation Network processor FPGA (npFPGA): multi-die FPGA chip for scalable multi-gigabit network processing
CN108920261A (zh) * 2018-05-23 2018-11-30 中国航天系统科学与工程研究院 一种适于大规模并行数据处理任务的两级自适应调度方法
CN111274016A (zh) * 2020-01-20 2020-06-12 中国人民解放军国防科技大学 基于模块融合的动态部分可重构系统应用划分与调度方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102045608A (zh) * 2010-12-29 2011-05-04 福建星网锐捷网络有限公司 用于光通信的网络设备及其自动配置交换接口的方法
CN102891813A (zh) * 2012-09-05 2013-01-23 盛科网络(苏州)有限公司 支持多传输模式的以太网端口架构
US9886072B1 (en) * 2013-06-19 2018-02-06 Altera Corporation Network processor FPGA (npFPGA): multi-die FPGA chip for scalable multi-gigabit network processing
CN108920261A (zh) * 2018-05-23 2018-11-30 中国航天系统科学与工程研究院 一种适于大规模并行数据处理任务的两级自适应调度方法
CN111274016A (zh) * 2020-01-20 2020-06-12 中国人民解放军国防科技大学 基于模块融合的动态部分可重构系统应用划分与调度方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"基于FPGA芯片的1000M光以太网自适应技术的设计与实现";杨春梅;《中国优秀硕士学位论文全文数据库 信息科技》;20131215;全文 *
光纤通道网络交换芯片虚拟验证平台设计与实现;霍卫涛等;《信息通信》;20190315(第03期);全文 *

Also Published As

Publication number Publication date
CN113296846A (zh) 2021-08-24

Similar Documents

Publication Publication Date Title
CN112465129B (zh) 片内异构人工智能处理器
CN108920261B (zh) 一种适于大规模并行数据处理任务的两级自适应调度方法
KR100649107B1 (ko) 실시간 동작 수행방법 및 시스템
WO2016112701A9 (zh) 异构多核可重构计算平台上任务调度的方法和装置
CN101452404B (zh) 一种嵌入式操作系统的任务调度装置及方法
US20080288949A1 (en) Interprocess Resource-Based Dynamic Scheduling System and Method
CN112463709A (zh) 可配置的异构人工智能处理器
CN104063279B (zh) 任务调度方法、装置和终端
CN109445944A (zh) 一种基于dpdk的网络数据采集处理系统及其方法
CN105893126A (zh) 一种任务调度方法及装置
CN102750132B (zh) 多线程虚拟流水线处理器的线程控制和调用方法及其处理器
CN103197968A (zh) 一种融合同步异步特点的线程池处理方法及系统
CN101963922B (zh) 任务处理方法和装置
CN102541640A (zh) 一种集群gpu资源调度系统和方法
CN110297661B (zh) 基于amp构架dsp操作系统的并行计算方法、系统及介质
WO2014110702A1 (zh) 协同并发式消息总线、主动构件组装模型及构件拆分方法
CN103412755A (zh) 一种硬件实时操作系统
WO2017206151A1 (zh) 在单任务系统中实现多任务的方法、装置及单任务系统
CN110515713A (zh) 一种任务调度方法、设备和计算机存储介质
CN111597044A (zh) 任务调度方法、装置、存储介质及电子设备
CN112925616A (zh) 任务分配方法、装置、存储介质及电子设备
CN113296846B (zh) 一种基于任务调度的芯片端口配置方法与装置
CN112346835B (zh) 一种基于协程的调度处理方法及系统
CN101189579A (zh) 基于行为模型的多线程体系结构
CN109656716B (zh) 一种Slurm作业调度方法及系统

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