WO2019000398A1 - 事务调度方法、处理器、分布式系统和无人机 - Google Patents

事务调度方法、处理器、分布式系统和无人机 Download PDF

Info

Publication number
WO2019000398A1
WO2019000398A1 PCT/CN2017/091105 CN2017091105W WO2019000398A1 WO 2019000398 A1 WO2019000398 A1 WO 2019000398A1 CN 2017091105 W CN2017091105 W CN 2017091105W WO 2019000398 A1 WO2019000398 A1 WO 2019000398A1
Authority
WO
WIPO (PCT)
Prior art keywords
processor
transaction
time
scheduling
virtual
Prior art date
Application number
PCT/CN2017/091105
Other languages
English (en)
French (fr)
Inventor
唐上昌
陈学义
Original Assignee
深圳市大疆创新科技有限公司
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 深圳市大疆创新科技有限公司 filed Critical 深圳市大疆创新科技有限公司
Priority to PCT/CN2017/091105 priority Critical patent/WO2019000398A1/zh
Priority to CN201780004456.7A priority patent/CN108401454B/zh
Publication of WO2019000398A1 publication Critical patent/WO2019000398A1/zh

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/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/465Distributed object oriented systems
    • 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/466Transaction processing

Definitions

  • the present application relates to the field of distributed systems, and more particularly, to a transaction scheduling method, a processor, a distributed system, and a drone.
  • a distributed system generally consists of multiple subsystems, each of which can cooperate to coordinate one or more transactions.
  • processors In a distributed system, in order to achieve coordinated scheduling, processors generally need to interact with each other through a dedicated communication interface, and then the software on each processor performs a synchronization process, and after each processor synchronizes, each processing is performed.
  • the cooperative scheduling of transactions causes the process of collaborative scheduling to be complicated. Therefore, there is an urgent need to improve the collaborative scheduling process of distributed systems.
  • the present application provides a transaction scheduling method, a processor, a distributed system, and a drone, which can improve a collaborative scheduling process of a distributed system.
  • a transaction scheduling method is provided, the method being applicable to a distributed system having multiple processors, each processor in the distributed system being configured with a virtual clock, and in the distributed system Synchronizing the virtual clocks of the processors, the method comprising: the first processor of the distributed system acquiring the first transaction to be scheduled; the first processor determining the first transaction relative to the first a scheduling time of a virtual clock of a processor; the first processor scheduling the first transaction according to a scheduling time of the first transaction relative to a virtual clock of the first processor.
  • a processor comprising a module capable of performing the method of the first aspect.
  • a processor is provided, where the processor is a first processor in a distributed system, each processor in the distributed system is configured with a virtual clock, and each of the distributed systems a virtual clock synchronization of the processor, the first processor comprising: a memory for storing computer instructions; and a controller for executing computer instructions stored in the memory to perform the operation of: acquiring a first transaction to be scheduled Determining a scheduling time of the virtual clock of the first transaction relative to the first processor; scheduling the first transaction according to a scheduling time of the first transaction relative to a virtual clock of the first processor.
  • a distributed system comprising the processor of the third aspect.
  • a drone comprising the distributed system of the fourth aspect.
  • a computer readable storage medium is provided, the instructions being stored in the computer readable storage medium, when executed on a processor, causing the processor to perform the method of the first aspect.
  • a computer program product comprising instructions, when executed on a processor, causes the processor to perform the method of the first aspect.
  • the present application can improve the collaborative scheduling process of a distributed system.
  • FIG. 1 is a diagram showing an example of the overall architecture of a distributed system.
  • FIG. 2 is a schematic flowchart of virtual clock synchronization provided by an embodiment of the present invention.
  • FIG. 3 is a schematic flowchart of a transaction scheduling method according to an embodiment of the present invention.
  • FIG. 4 is a schematic structural diagram of a processor according to an embodiment of the present invention.
  • FIG. 5 is a schematic structural diagram of a processor according to another embodiment of the present invention.
  • FIG. 6 is a schematic structural diagram of a distributed system according to an embodiment of the present invention.
  • FIG. 7 is a schematic structural diagram of a drone according to an embodiment of the present invention.
  • the technical solution provided by the present application can be used as one of the underlying supporting technologies of a distributed system, and is applied to a scenario that requires coordinated scheduling or clock synchronization.
  • the technical solution provided by the present application can be applied to telecommunication base station clock synchronization or basic network clock synchronization.
  • the technical solution provided by the present application can be applied to an on-board distributed control system, a high-speed distributed servo control system, an unmanned aerial vehicle, an unmanned vehicle, a mobile robot, and the like.
  • a distributed system usually includes multiple processors, and the processors can pass through The signal channels are connected.
  • the communication channel can be responsible for interacting with clock synchronization messages and/or scheduling dispatch messages between different processors.
  • the control system of the traditional four-axis drone only needs to control the four-axis motor and the remote control device, and the control system has a simple demand. Therefore, the traditional four-axis UAV control system only needs to set up a processor (such as a microcontroller unit (MCU), or a system-on-a-chip (SOC)). Complete control of the drone.
  • a processor such as a microcontroller unit (MCU), or a system-on-a-chip (SOC)
  • the control system of the drone may include multiple types of subsystems for implementing different functions.
  • the control system of the drone may include a flight control subsystem, a pan/tilt subsystem, a camera subsystem, an obstacle avoidance subsystem, a map transmission subsystem, an application subsystem, and the like.
  • the control system of the drone may include an MCU, a SOC, a digital signal processing (DSP), and a dedicated hardware accelerator.
  • DSP digital signal processing
  • the processor in the UAV control system can be set up with a dedicated communication interface, such as a universal serial bus (USB) interface, a serial peripheral interface (SPI), and a universal asynchronous transceiver (universal).
  • a dedicated communication interface such as a universal serial bus (USB) interface, a serial peripheral interface (SPI), and a universal asynchronous transceiver (universal).
  • the processors in the drone control system can be interconnected via a communication channel. It can be seen that the current UAV control system has gradually evolved into a distributed system containing multiple processors.
  • the control system of the drone in order to control the drone to perform a complex task, it is usually necessary to coordinate the processors of the various subsystems to accomplish the task together. For example, when it is desired to take an image of a target scene through a drone, the drone is subjected to strong winds, causing the body to shake. In this case, the PTZ subsystem and camera subsystem of the UAV can be coordinated, so that under the influence of strong winds, the UAV can still stably shoot the target scene.
  • one processor in the distributed system sends a cooperative message to another processor, if the processor as the receiver is for some reason (for example, the processor is currently scheduling some computationally intensive transactions) Failure to respond to the collaborative message in time may result in the co-scheduling process of the co-transaction failing.
  • the application scenario of the technical solution provided by the embodiment of the present invention is not limited to the UAV scenario, and may be applied to require clock synchronization or In any distributed system that is cooperatively scheduled, it is especially applicable to distributed systems that are not connected by a real-time bus between processors.
  • the embodiment of the present invention configures a virtual clock for the processor in the distributed system.
  • the virtual clocks of the processors in the distributed system can have the same clock frequency.
  • the clock frequency or clock cycle granularity of the virtual clock can be different.
  • the clock period of the virtual clock may be a clock cycle on the order of microseconds, or a clock cycle on the order of milliseconds.
  • the virtual clock can be a variable, and the value of the variable can represent the count value of the virtual clock, thereby indicating the time of the virtual clock (the time of the virtual clock can be referred to as the virtual time).
  • the embodiment of the present invention does not specifically limit the format of the variable used to represent the virtual clock, and may be selected as a 32-bit variable or a 64-bit variable.
  • the larger the length of the variable the less likely the variable will reach its maximum value during the operation of the distributed system, so that it can effectively avoid the computational problem caused by the fast flipping of the variable after reaching the maximum value (ie, counting from 0). , which simplifies the complexity of software processing.
  • the variable length of the virtual clock can be set by considering the life time of the drone, and the variable of the virtual clock will not be quickly flipped during the power-on operation of the drone.
  • the variable length of the virtual clock can be defined as 64 bits.
  • Each processor in a distributed system can be responsible for initializing and calibrating the respective virtual clocks.
  • the variables for characterizing the virtual clock of the first processor may be first performed. Initializing; determining a virtual time of the virtual clock of the first processor; and assigning a value to the variable according to the virtual time of the virtual clock of the first processor to calibrate the virtual clock of the first processor.
  • the first processor can then communicate with other processors to obtain the virtual time of the virtual clock. This virtual time can be represented by the count value of the virtual clock. Then, the first processor can use the count value as the first processing
  • the variable of the virtual clock of the device is assigned to complete the calibration of the virtual clock of the first processor.
  • the first processor can also be responsible for synchronizing the time precision of the virtual clock, updating the virtual clock, and maintaining the current time and state of the virtual clock. For example, the first processor may continuously perform an incrementing operation on the value of the variable of the virtual clock according to the clock frequency of the virtual clock.
  • the clock frequency or accuracy of the virtual clock may be determined according to the application of the distributed system.
  • the precision of the cooperative scheduling is high, the clock frequency or accuracy of the virtual clock may be set to be high, and the cooperative scheduling may be performed.
  • the clock frequency or accuracy of the virtual clock can be set lower to simplify the implementation.
  • the embodiment of the present invention does not specifically limit the synchronization mode of the virtual clock, and may select different clock synchronization modes and algorithms according to the application of the distributed system.
  • the control system of the drone can use the master-slave mode for clock synchronization.
  • the virtual clock of the distributed system can be synchronized based on the clock synchronization algorithm provided by the 1588V2 protocol.
  • a master-slave clock synchronization mode provided by an embodiment of the present invention is described in detail below.
  • a processor in a distributed system can be defined as a master processor, and other processors in a distributed system can be defined as slave processors.
  • the main processor can use its own virtual clock as the clock synchronization source of the distributed system, and communicate with the slave processor, so that the virtual clock of the slave processor is synchronized with the virtual clock of the master processor, thereby making the slave processor virtual.
  • the clock is consistent with the frequency and phase of the master processor's virtual clock.
  • the first processor can communicate with the host processor to obtain line delay information between the first processor and the host processor; then, the first processor can Determining, according to the line delay information, a time difference between the virtual clock of the first processor and the virtual clock of the main processor; then, the first processor may adjust the virtual clock of the first processor according to the time difference, so that the virtual clock of the first processor Synchronized with the virtual clock of the main processor.
  • the first processor receives the synchronization message sent by the main processor, and records the virtual time t2 that the first processor receives the synchronization message; the first processor receives the synchronization message sent by the main processor.
  • the message, the follow message includes a virtual time t1 at which the main processor sends the synchronization message; the first processor sends a delay request message to the main processor, and records a virtual time t3 at which the first processor sends the delay request message; the first processor receives the main message
  • the delay response message sent by the processor, the delayed response message includes a virtual time t4 at which the main processor receives the delay request message.
  • the first processor determining, according to the line delay information, the time difference between the virtual clock of the first processor and the virtual clock of the main processor may include: the first processor according to the virtual time t1, the virtual time t2 The virtual time t3 and the virtual time t4 determine the time difference.
  • the first processor may also be a main processor in a distributed system, and the first processor may send a synchronization message and a follow message of the synchronization message to other processors, and the following message includes the first processor sending a virtual time t1 of the synchronization message; the first processor receives the delay request message sent by the other processor; the first processor sends a delay response message to the other processor, where the delay response message includes the first processor receiving the delay request message Virtual time t4, so that other processors determine the time difference between the virtual clock of the first processor and the virtual clock of the other processor based on the virtual time t1 and the virtual time t4, and adjust the virtual clocks of other processors based on the time difference, so that other processing
  • the virtual clock of the device is synchronized with the virtual clock of the first processor.
  • This embodiment is exemplified by taking the first processor as the main processor and the other processors as the slave processor as an example.
  • the specific synchronization process of the other processors is similar to the synchronization process of the first processor described in the previous embodiment as a slave processor. To avoid repetition, details are not described herein.
  • the synchronization process of the virtual clock is mainly described above. It should be understood that the synchronization process of the virtual clock described above is only an example. In fact, other traditional clock synchronization algorithms may be used to synchronize the virtual clocks of the processors in the distributed system. Specifically limited.
  • the processor in the distributed system can schedule transactions in a unified time (ie, the virtual time corresponding to the virtual clock), in a distributed system. As long as the processors maintain the virtual clocks on a regular basis and maintain the synchronization between them, it is not necessary to send the collaborative messages through the application layer protocol before each collaborative scheduling, as in the traditional distributed system, thereby simplifying the software implementation.
  • FIG. 3 is a schematic flowchart of a transaction scheduling method according to an embodiment of the present invention.
  • FIG. 3 is mainly exemplified by a transaction scheduling process of a first processor in a distributed system.
  • the processor can be any one of the distributed systems.
  • the method of FIG. 3 may include steps 310-330, which are described in detail below.
  • step 310 the first processor acquires a first transaction to be scheduled.
  • the first one of the plurality of processors acquires a target task to be scheduled.
  • step 320 the first processor determines a scheduling time of the first transaction relative to the virtual clock of the first processor.
  • the first transaction may be any one of the transactions, and the manner of triggering the first transaction and the scheduling time of the first transaction relative to the virtual clock of the first processor may be determined in various manners, for example, the first processor may autonomously trigger the first Transaction, and allocating a scheduling time of the first transaction relative to the virtual clock of the first processor; for example, the first transaction may be triggered by another processor, and the scheduling time of the first transaction relative to the virtual clock of the first processor is allocated, and then The other processor sends the scheduled time of the first transaction and its relative virtual clock to the first processor through a message (such as a task dispatch message).
  • a message such as a task dispatch message
  • step 330 the first processor schedules the first transaction according to the scheduling time of the first transaction relative to the virtual clock of the first processor.
  • the transaction scheduling processes of the processors in the distributed system are independent of each other, except that the scheduling time of the transaction is based on a unified virtual clock.
  • each processor schedules its own transaction with the same virtual clock as the reference.
  • the processor may not even need to know that it is co-scheduling with other processors.
  • the synergy between them is due to the common time benchmark. It’s done.
  • step 330 The implementation of step 330 is described in detail below.
  • step 330 may include the first processor converting the scheduling time of the first transaction relative to the virtual clock of the first processor to the local scheduling time of the first transaction, wherein the local scheduling time of the first transaction is The scheduling time of a transaction relative to the local clock of the first processor; the first processor schedules the first transaction according to the local scheduling time of the first transaction.
  • the first processor may convert the scheduling time of the virtual clock of the first processor to the local scheduling time of the first transaction based on a relationship between a clock frequency of the virtual clock of the first processor and a clock frequency of the local clock of the first processor .
  • the clock frequency of the virtual clock of the first processor is twice the clock frequency of the local clock
  • the current time of the virtual clock of the first processor is 300 (the time here is represented by the count value of the virtual clock)
  • first The scheduling time of the transaction relative to the virtual clock of the first processor is 305
  • the current time of the local clock of the first processor is 500 (where the time is represented by the count value of the local clock), according to the clock frequency of the two clocks Relationship
  • the local scheduling time for the first transaction is calculated to be 510.
  • the manner in which the first processor schedules the first transaction based on the local scheduling time of the first transaction may be various.
  • the first transaction can be scheduled using traditional transaction scheduling. Specifically, the first transaction may be added to the scheduling queue of the first processor, and then a periodically triggered timer is set. Each time the timer triggers an interrupt signal, the first processor checks whether there is a need in the scheduling queue. Scheduled transactions. Although such a transaction scheduling method is simple, there is a problem of power waste. For example, when a timer sends an interrupt signal, if there is no transaction to be scheduled at this time, the transmit power of the interrupt signal of the timer is wasted.
  • the method of FIG. 3 may further include: receiving, by the first processor, the first timer a first interrupt signal, the first interrupt signal is used to indicate a local scheduling time of the previous transaction of the first processor to the first transaction; and in response to the first interrupt signal, the first processor schedules the previous one of the first transaction Transaction, and adjusting the timing duration of the first timer, so that the trigger time of the next interrupt signal of the first timer is the local scheduling time of the first transaction; the first processor is first according to the local scheduling time of the first transaction
  • the scheduling of the transaction may include, in response to the next interrupt signal, the first processor scheduling the first transaction.
  • a first timer is introduced, where the first timer does not periodically trigger an interrupt signal, indicating that the first processor schedules a transaction, but resets the timing of the first timer every time a transaction is scheduled.
  • the duration of the first timer is equal to the time interval from the current time to the local scheduling time of the next transaction, which can save system power and improve the accuracy of transaction scheduling.
  • the method of FIG. 3 may further include: the first processor determining the first a scheduling end time of the transaction; when the time interval between the scheduling end time of the first transaction and the local scheduling time of the next transaction of the first transaction is less than a preset time interval, the first processor The first transaction and the next transaction of the first transaction are merged into one transaction.
  • the foregoing preset time interval may be a clock cycle granularity of a scheduling transaction of the first processor.
  • the first processor schedules a transaction (hereinafter referred to as transaction 1) at 340 ms, and transaction 1 executes 2.95 ms, that is, the scheduling end time of transaction 1 is 342.95 ms.
  • transaction 2 If the local scheduled time of the next scheduled transaction (hereinafter referred to as transaction 2) is 343ms, then the transaction from transaction 2 The scheduling time is still 50 ⁇ s.
  • the first processor can directly start scheduling transaction 2 without waiting for 50 ⁇ s to re-stimulate the first processor, which is equivalent to Transaction 1 and transaction 2 are combined into one transaction for scheduling.
  • the embodiment of the invention optimizes the transaction scheduling mode of the processor.
  • the scheduling, by the first processor, the first transaction according to the local scheduling time of the first transaction may include: in response to the first processor scheduling the transaction in the first scheduling queue, The local time of the first processor reaches the local scheduling time of the first transaction, and the first processor schedules the first transaction, where the first scheduling queue is one of the multiple scheduling queues of the first processor, and multiple scheduling queues
  • the second scheduling queue includes a transaction in which the local scheduling time is located in the current time period
  • the second scheduling queue includes a transaction in which the local scheduling time is in the first time period
  • the third scheduling queue includes the local scheduling time in the local scheduling time.
  • a transaction after the first time period, wherein the first time period is the next time period of the current time period.
  • the method of FIG. 3 may further include: receiving, by the first processor, a second interrupt signal triggered by the second timer, the second interrupt signal is used to indicate that the current time period ends; and responding to the second interrupt a signal, the first processor schedules a transaction in the second scheduling queue, and updates the transaction in the first scheduling queue and the third scheduling queue, so that the first scheduling queue includes a transaction in which the local scheduling time is in the second period, and the third The scheduling queue includes a transaction in which the local scheduling time is after the second time period, wherein the second time period is the next time period of the first time period.
  • the embodiment of the present invention does not specifically limit the form of the scheduling queue.
  • the transaction to be scheduled may be recorded in the form of a scheduling table.
  • the following is an example of a schedule.
  • the first scheduling queue may be referred to as a ping schedule of the first processor
  • the second scheduling queue may be referred to as a paging schedule of the first processor
  • the third scheduling queue may be referred to as a remaining transaction schedule.
  • the ping schedule can contain transactions whose local scheduling time is in the current time period.
  • the pow schedule can contain transactions whose local scheduling time is in the next time period.
  • the remaining transaction schedules may contain the remaining to-be-scheduled transactions of the first processor.
  • the ping schedule may include a transaction with a local scheduling time of 0-10 ms, and the ping schedule may include a transaction with a local scheduling time of 10-20 ms.
  • the remaining transaction schedules can contain transactions with a local schedule time of 20ms.
  • the first processor first schedules the transaction in the ping schedule at 0-10ms; after the end of 10ms, the first processor points to the pagin schedule to schedule the transaction with the local scheduling time of 10-20ms.
  • the first processor also needs to update the ping schedule and the remaining transaction schedules, and locate the remaining transaction schedules.
  • a 20-30ms transaction is added to the ping schedule. After the end of 20ms, the first processor re-points to the ping schedule to schedule transactions with a local scheduling time of 20-30ms, and so on.
  • the first processor alternately uses the ping schedule (or the first dispatch queue) and the pong schedule (or the second dispatch queue) as the current schedule (or the current schedule queue), thus
  • the software scheduler inside the first processor does not need to find the transaction that needs to be scheduled in all the transactions to be scheduled, and only needs to look in the current scheduling table (or the current scheduling queue), thereby effectively reducing the scheduling process of the first processor. Implementation complexity.
  • the first processor when it acquires a new transaction to be scheduled, it may add it to the corresponding scheduling table (or scheduling queue) according to the local scheduling time of the new transaction.
  • the current schedule as a ping schedule (first scheduling queue) as an example, if the local scheduling time of the new transaction is in the current time period, a new transaction may be added to the ping schedule, if the local scheduling time of the new transaction is at the current In the next time period of the time period, a new transaction can be added to the pong schedule (second scheduling queue), otherwise, a new transaction can be added to the remaining transaction schedule (third scheduling queue).
  • the embodiment of the present invention introduces a second timer, which may periodically send an interrupt signal to the first processor according to the length of the current time period (eg, 10 ms), triggering the first processor to the current The schedule (or the current dispatch queue) is updated.
  • a second timer may periodically send an interrupt signal to the first processor according to the length of the current time period (eg, 10 ms), triggering the first processor to the current The schedule (or the current dispatch queue) is updated.
  • FIG. 4 is a schematic structural diagram of a processor according to an embodiment of the present invention.
  • the processor of FIG. 4 may be the first processor described above, and the first processor 400 may include an obtaining module 410, a first determining module 420 and a scheduling module 430, and the following modules in the first processor 400 The function is described in detail.
  • the obtaining module 410 can acquire the first transaction to be scheduled.
  • the first determining module 420 can determine a scheduling time of the first transaction relative to a virtual clock of the first processor 400.
  • the scheduling module 430 can schedule the first transaction according to a scheduling time of the first transaction relative to a virtual clock of the first processor 400.
  • the scheduling module 430 is specifically configured to convert a scheduling time of the first transaction relative to a virtual clock of the first processor 400 to a local scheduling time of the first transaction, where The local scheduling time of the first transaction is a scheduling time of the first transaction relative to a local clock of the first processor 400; according to the local scheduling time of the first transaction The first transaction is scheduled.
  • the first processor 400 is further configured to receive a first interrupt signal triggered by the first timer, where the first interrupt signal is used to indicate that the local clock of the first processor 400 arrives a local scheduling time of a previous transaction of the first transaction; scheduling a previous transaction of the first transaction in response to the first interrupt signal, and adjusting a timing duration of the first timer, such that the first The trigger time of the next interrupt signal of a timer is the local scheduling time of the first transaction; the scheduling module 430 is specifically configured to: in response to the next interrupt signal, the first processor 400 schedules the first transaction .
  • the first processor 400 determines a scheduling end time of the first transaction; when a scheduling end time of the first transaction is local to a next transaction of the first transaction When the time interval between scheduling times is less than a preset time interval, the first processor 400 merges the first transaction and the next transaction of the first transaction into one transaction.
  • the scheduling module 430 is specifically configured to respond to the local time of the first processor 400 during the scheduling of the transaction in the first scheduling queue by the first processor 400.
  • the multiple scheduling queues Arranging the first transaction by the local scheduling time of the first transaction, where the first scheduling queue is one of a plurality of scheduling queues of the first processor 400, the multiple scheduling queues
  • the second scheduling queue includes a transaction in which the local scheduling time is located in the current time period
  • the second scheduling queue includes a transaction in which the local scheduling time is in the first time period
  • the third scheduling The queue includes a transaction whose local scheduling time is after the first time period, wherein the first time period is a next time period of the current time period.
  • the first processor 400 may further include a receiving module, configured to receive a second interrupt signal triggered by the second timer, where the second interrupt signal is used to indicate that the current time period ends.
  • the scheduling module 430 is further configured to: in response to the second interrupt signal, schedule a transaction in the second scheduling queue, and update a transaction in the first scheduling queue and the third scheduling queue, so that the The first scheduling queue includes a transaction whose local scheduling time is in a second time period, and the third scheduling queue includes a transaction whose local scheduling time is after the second time period, wherein the second time period is a next time of the first time period Time period.
  • the first processor 400 may further include a communication processing module for communicating with other processors in the distributed system to virtualize the first processor 400 The clock is synchronized with the virtual clock of the other processors.
  • the first processor 400 is the one of the multiple processors a slave processor, the plurality of processors further including a main processor, the communication processing module is specifically configured to communicate with the main processor to obtain between the first processor 400 and the main processor Line delay information; determining, according to the line delay information, a time difference between a virtual clock of the first processor 400 and a virtual clock of the main processor; adjusting a virtual clock of the first processor 400 according to the time difference
  • the virtual clock of the first processor 400 is synchronized with the virtual clock of the main processor.
  • the communication processing module is specifically configured to receive a synchronization message sent by the main processor, and record a virtual time t2 that the first processor 400 receives the synchronization message; a follow message of the synchronization message sent by the main processor, the following message includes a virtual time t1 at which the main processor sends the synchronization message; a delay request message is sent to the main processor, and the A processor 400 transmits a virtual time t3 of the delay request message; and receives a delayed response message sent by the main processor, the delayed response message including a virtual time t4 at which the main processor receives the delay request message.
  • the communication processing module is specifically configured to determine the time difference according to the virtual time t1, the virtual time t2, the virtual time t3, and the virtual time t4.
  • the time difference T (t2-t1-t4 + t3).
  • the first processor 400 is a main processor of the plurality of processors, and the other processor is a slave main processor of the distributed system, the communication
  • the processing module is specifically configured to send, to the other processor, a synchronization message and a follow message of the synchronization message, where the following message includes a virtual time t1 at which the first processor 400 sends the synchronization message; and receiving the other processing a delay request message sent by the device; sending a delay response message to the other processor, the delay response message including a virtual time t4 at which the first processor 400 receives the delay request message, so that the other processing Determining a time difference between a virtual clock of the first processor 400 and a virtual clock of the other processor based on the virtual time t1 and the virtual time t4, and adjusting the other processor based on the time difference
  • the virtual clock synchronizes the virtual clock of the other processor with the virtual clock of the first processor 400.
  • the first processor 400 may further include an initialization module, a third determining module, and an evaluation module.
  • the initialization module is configured to initialize a variable used to characterize a virtual clock of the first processor 400.
  • the third determining module is configured to determine a virtual time of the virtual clock of the first processor 400.
  • the evaluation module is configured to assign a value to the variable according to a virtual time of the virtual clock of the first processor 400 to calibrate the first processor 400 Virtual clock.
  • the first processor 400 may further include a fourth determining module and an updating module.
  • the fourth determining module is configured to determine a clock frequency of the virtual clock of the first processor 400, wherein clock frequencies of the virtual clocks in the distributed system are the same.
  • the update module is configured to update a count value of the variable according to a clock frequency of the virtual clock of the first processor 400.
  • FIG. 5 is a schematic structural diagram of a processor according to another embodiment of the present invention.
  • the processor of Figure 5 can be any one of the first processors in a distributed system. Each processor in the distributed system is configured with a virtual clock, and the virtual clocks of the processors in the distributed system are synchronized.
  • the first processor 500 includes a memory 510 and a controller 520.
  • Memory 510 can be used to store computer instructions.
  • the controller 520 is configured to execute the computer instructions stored in the memory to: acquire a first transaction to be scheduled; determine a scheduling time of the first transaction relative to the virtual clock of the first processor 500; The scheduling time of the virtual clock of the processor 500 is scheduled for the first transaction.
  • scheduling the first transaction according to a scheduling time of the first transaction relative to the virtual clock of the first processor 500 may include: virtualizing the first transaction with respect to the first processor 500 The scheduling time of the clock is converted to the local scheduling time of the first transaction, where the local scheduling time of the first transaction is the scheduling time of the first transaction relative to the local clock of the first processor 500; The transaction is scheduled.
  • the controller 520 before scheduling the first transaction according to the local scheduling time of the first transaction, is further configured to: receive the first interrupt signal triggered by the first timer, An interrupt signal is used to indicate that the local clock of the first processor 500 reaches the local scheduling time of the previous transaction of the first transaction; in response to the first interrupt signal, schedule the previous transaction of the first transaction, and adjust the first timer
  • the timing duration is such that the trigger time of the next interrupt signal of the first timer is the local scheduling time of the first transaction; and the scheduling the first transaction according to the local scheduling time of the first transaction may include: responding to the next interrupt signal , scheduling the first transaction.
  • the controller 520 before scheduling the first transaction according to the local scheduling time of the first transaction, is further configured to: determine a scheduling end time of the first transaction; And when the time interval between the scheduling end time of the first transaction and the local scheduling time of the next transaction of the first transaction is less than a preset time interval, the first transaction and The next transaction of the first transaction is merged into one transaction.
  • the scheduling the first transaction according to the local scheduling time of the first transaction may include: in response to the first processor 500 scheduling a transaction in the first scheduling queue
  • the local time of a processor 500 reaches the local scheduling time of the first transaction, and the first transaction is scheduled, wherein the first scheduling queue is one of multiple scheduling queues of the first processor 500, and the multiple scheduling queues further include
  • the second scheduling queue includes a transaction in which the local scheduling time is located in the current time period
  • the second scheduling queue includes a transaction in which the local scheduling time is located in the first time period
  • the third scheduling queue includes the local scheduling time in the first time period. Subsequent transactions, where the first time period is the next time period of the current time period.
  • the controller 520 is further configured to: receive a second interrupt signal triggered by the second timer, the second interrupt signal is used to indicate that the current time period ends; and in response to the second interrupt signal, Scheduling a transaction in the second scheduling queue, and updating the transactions in the first scheduling queue and the third scheduling queue, so that the first scheduling queue includes a transaction in which the local scheduling time is in the second period, and the third scheduling queue includes the local scheduling time.
  • the controller 520 may further be configured to perform the following operations: Other processors in the system communicate to synchronize the virtual clock of the first processor 500 with the virtual clocks of other processors.
  • the first processor 500 is a slave processor of the plurality of processors, and the plurality of processors further includes a host processor, wherein the plurality of processors communicate with other processors in the distributed system to Synchronizing the virtual clock of the first processor 500 with the virtual clocks of the other processors may include: communicating with the main processor to obtain line delay information between the first processor 500 and the main processor; determining, according to the line delay information, The time difference between the virtual clock of the first processor 500 and the virtual clock of the main processor; adjusting the virtual clock of the first processor 500 according to the time difference, so that the virtual clock of the first processor 500 is synchronized with the virtual clock of the main processor.
  • the communicating with the main processor to obtain line delay information between the first processor 500 and the main processor may include: receiving a synchronization message sent by the main processor, and recording the A processor 500 receives the virtual time t2 of the synchronization message; receives a follow message of the synchronization message sent by the main processor, the following message includes a virtual time t1 at which the main processor sends the synchronization message; sends a delay request message to the main processor, and records the A processor 500 sends a virtual request for a delayed request message Time t3; receiving a delay response message sent by the main processor, the delay response message including a virtual time t4 at which the main processor receives the delay request message.
  • determining, according to the line delay information, a time difference between the virtual clock of the first processor 500 and the virtual clock of the main processor may include: according to the virtual time t1, the virtual time t2, and the virtual time t3 And the virtual time t4, the time difference is determined.
  • the time difference T (t2-t1-t4 + t3).
  • the controller 520 may further be configured to perform the following operations: The variable of the virtual clock of the first processor 500 is initialized; the virtual time of the virtual clock of the first processor 500 is determined; the variable is assigned a value according to the virtual time of the virtual clock of the first processor 500 to calibrate the first processor 500 Virtual clock.
  • the controller 520 is further configured to: determine a clock frequency of the virtual clock of the first processor 500, where clock frequencies of the virtual clocks in the distributed system are the same; The clock frequency of the virtual clock of the processor 500 updates the count value of the variable.
  • the embodiment of the invention also provides a distributed system.
  • the distributed system 600 includes the first processor 500 described above.
  • each processor in distributed system 600 can perform the functions performed by first processor 500 as described above.
  • the embodiment of the invention further provides a drone.
  • the drone 700 can include a distributed system 600 as shown in FIG.
  • the computer program product includes one or more computer instructions.
  • the computer can be a general purpose computer, a special purpose computer, a computer network, or other programmable device.
  • the computer instructions can be stored in a computer readable storage medium or transferred from one computer readable storage medium to another computer readable storage medium, for example, the computer instructions can be from a website site, computer, server or data center Transmission to another website site, computer, server or data center via wired (eg coaxial cable, fiber optic, digital subscriber line (DSL)) or wireless (eg infrared, wireless, microwave, etc.).
  • the computer readable storage medium can be any available media that can be accessed by a computer or a data storage device such as a server, data center, or the like that includes one or more available media.
  • the usable medium may be a magnetic medium (for example, a floppy disk, a hard disk, a magnetic tape), an optical medium (such as a digital video disc (DVD)), or a semiconductor medium (such as a solid state disk (SSD)).
  • a magnetic medium for example, a floppy disk, a hard disk, a magnetic tape
  • an optical medium such as a digital video disc (DVD)
  • a semiconductor medium such as a solid state disk (SSD)
  • the disclosed systems, devices, and methods may be implemented in other manners.
  • the device embodiments described above are merely illustrative.
  • the division of the unit is only a logical function division.
  • there may be another division manner for example, multiple units or components may be combined or Can be integrated into another system, or some features can be ignored or not executed.
  • the mutual coupling or direct coupling or communication connection shown or discussed may be an indirect coupling or communication connection through some interface, device or unit, and may be in an electrical, mechanical or other form.
  • the units described as separate components may or may not be physically separated, and the components displayed as units may or may not be physical units, that is, may be located in one place, or may be distributed to multiple network units. Some or all of the units may be selected according to actual needs to achieve the purpose of the solution of the embodiment.
  • each functional unit in each embodiment of the present application may be integrated into one processing unit, or each unit may exist physically separately, or two or more units may be integrated in one unit. In the unit.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Hardware Redundancy (AREA)

Abstract

提供一种事务调度方法、处理器、分布式系统和无人机。该方法可应用于具有多处理器的分布式系统,分布式系统中的各处理器均配置有虚拟时钟,且分布式系统中的各处理器的虚拟时钟同步,该方法包括:分布式系统中的任意一个第一处理器获取待调度的第一事务(310);第一处理器确定第一事务相对第一处理器的虚拟时钟的调度时间(320);第一处理器根据第一事务相对第一处理器的虚拟时钟的调度时间,对第一事务进行调度(330)。上述技术方案可以改善分布式系统的协同调度过程。

Description

事务调度方法、处理器、分布式系统和无人机
版权申明
本专利文件披露的内容包含受版权保护的材料。该版权为版权所有人所有。版权所有人不反对任何人复制专利与商标局的官方记录和档案中所存在的该专利文件或者该专利披露。
技术领域
本申请涉及分布式系统领域,更为具体地,涉及一种事务调度方法、处理器、分布式系统和无人机。
背景技术
分布式系统一般由多个子系统组成,各子系统之间可以相互配合,以协同调度一个或多个事务。
在分布式系统中,为了实现协同调度,处理器之间一般需要先通过专用的通信接口交互协同消息,再由各处理器上的软件执行同步过程,等各处理器同步之后,再由各处理器对事务进行协同调度,导致协同调度的过程复杂。因此,亟需改善分布式系统的协同调度过程。
发明内容
本申请提供一种事务调度方法、处理器、分布式系统和无人机,能够改善分布式系统的协同调度过程。
第一方面,提供一种事务调度方法,所述方法可应用于具有多处理器的分布式系统,所述分布式系统中的各处理器均配置有虚拟时钟,且所述分布式系统中的各处理器的虚拟时钟同步,所述方法包括:所述分布式系统中的任意一个第一处理器获取待调度的第一事务;所述第一处理器确定所述第一事务相对所述第一处理器的虚拟时钟的调度时间;所述第一处理器根据所述第一事务相对所述第一处理器的虚拟时钟的调度时间,对所述第一事务进行调度。
第二方面,提供一种处理器,包含能够执行第一方面中的方法的模块。
第三方面,提供一种处理器,所述处理器为分布式系统中的第一处理器,所述分布式系统中的各处理器均配置有虚拟时钟,且所述分布式系统中的各 处理器的虚拟时钟同步,所述第一处理器包括:存储器,用于存储计算机指令;控制器,用于执行所述存储器中存储的计算机指令,以执行以下操作:获取待调度的第一事务;确定所述第一事务相对所述第一处理器的虚拟时钟的调度时间;根据所述第一事务相对所述第一处理器的虚拟时钟的调度时间,对所述第一事务进行调度。
第四方面,提供一种分布式系统,所述分布式系统包括如第三方面所述的处理器。
第五方面,提供一种无人机,包括如第四方面所述的分布式系统。
第六方面,提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在处理器上运行时,使得处理器执行如第一方面所述的方法。
第七方面,提供一种包含指令的计算机程序产品,当其在处理器上运行时,使得处理器执行如第一方面所述的方法。
本申请可以改善分布式系统的协同调度过程。
附图说明
图1是分布式系统的总体架构示例图。
图2是本发明实施例提供的虚拟时钟同步的示意性流程图。
图3是本发明实施例提供的事务调度方法的示意性流程图。
图4是本发明一个实施例提供的处理器的示意性结构图。
图5是本发明另一实施例提供的处理器的示意性结构图。
图6是本发明实施例提供的分布式系统的示意性结构图。
图7是本发明实施例提供的无人机的示意性结构图。
具体实施方式
本申请提供的技术方案可作为分布式系统的底层支撑技术之一,应用于需要进行协同调度或对时钟同步有要求的场景。例如,本申请提供的技术方案可应用于电信基站时钟同步或基础网络时钟同步。又如,本申请提供的技术方案可应用于车载分布式控制系统、高速分布式伺服控制系统、无人机、无人车、移动机器人等自动化系统中。
如图1所示,分布式系统通常包括多个处理器,处理器之间可以通过通 信信道相连。该通信信道可以负责在不同的处理器之间交互时钟同步报文和/或调度分派报文。
为了便于理解,下面以无人机的控制系统为例,对传统分布式系统的协同调度过程进行举例说明。
传统的四轴无人机的控制系统仅需要对四个轴的电机以及遥控设备进行控制,控制系统的需求简单。因此,传统的四轴无人机的控制系统内部仅需要设置一个处理器(如一个微控制单元(microcontroller unit,MCU),或一个片上系统(system-on-a-chip,SOC))即可完成对该无人机的控制。
随着无人机技术的发展,无人机对控制系统的需求越来越高。例如,目前的无人机的控制系统一般包含用于实现不同功能的多种类型的子系统。例如,无人机的控制系统可以包含飞控子系统、云台子系统、相机子系统、避障子系统、图传子系统、应用子系统等。由于子系统功能越来越复杂,且不同子系统对处理器的处理性能的要求也可能不同,许多子系统由之前共用一个处理器逐步发展成使用专用的处理器。因此,目前无人机的控制系统通常包含不同类型的多个处理器。作为一个示例,无人机的控制系统可以包含MCU,SOC,数字信号处理(digital signal processing,DSP)以及专用硬件加速器等。无人机控制系统中的处理器可以设置专用的通信接口,如通用串行总线(universal serial bus,USB)接口、串行外设接口(serial peripheral interface,SPI)、通用异步收发传输器(universal asynchronous receiver/transmitter,UART)、移动产业处理器接口(mobile industry processor interface,MIPI)等。进一步地,无人机控制系统中的处理器可以通过通信信道互联。由此可见,目前的无人机的控制系统逐渐演变成包含多处理器的分布式系统。
随着无人机技术的复杂化,在无人机的控制系统中,为了控制无人机执行某项复杂的任务,通常需要各个子系统的各处理器进行协调,以共同完成该任务。例如,当希望通过无人机拍摄目标场景的图像时,无人机受到强风影响,导致机身出现抖动。在这种情况下,可以协调无人机的云台子系统和相机子系统,使得在强风影响下,无人机仍然能够对目标场景进行稳定的拍摄。
分布式系统中的处理器需要协同调度时,一般需要先通过专用的通信接口交互协同消息,再由各处理器上的软件执行同步过程,等各处理器同步之 后,再由各处理器对事务进行协同调度,导致协同调度的过程复杂。
进一步地,当分布式系统中的一个处理器向另一处理器发送协同消息时,如果作为接收方的处理器由于某种原因(比如该处理器当前正在调度某些计算量较大的事务)未及时响应该协同消息,就会导致协事务的协同调度过程失败。
上文以无人机为例,对分布式系统在协同调度时存在的问题进行举例说明的,但本发明实施例提供的技术方案应用场景不限于无人机场景,可应用于需要时钟同步或协同调度的任意分布式系统中,尤其可应用于处理器之间没有通过实时总线相连的分布式系统。
为了改善分布式系统的协同调度方式,本发明实施例为分布式系统中的处理器配置了虚拟时钟。分布式系统中的各处理器的虚拟时钟可以具有相同的时钟频率。针对不同需求的分布式系统,虚拟时钟的时钟频率或时钟周期的粒度可以不同。例如,虚拟时钟的时钟周期可以是微秒量级的时钟周期,也可以是毫秒量级的时钟周期。虚拟时钟可以是一个变量,该变量的取值可以表示虚拟时钟的计数值,从而表示虚拟时钟的时间(可以将虚拟时钟的时间称为虚拟时间)。本发明实施例对用于表征虚拟时钟的变量的格式不做具体限定,可以选取为32位的变量,也可以选取为64位的变量。变量的长度越大,在分布式系统工作期间,该变量达到最大值的可能性就越小,从而可以有效避免变量达到最大值之后快速翻转(即从0开始重新计数)而带来的计算问题,进而简化了软件处理的复杂度。以无人机为例,可以综合考虑无人机的续航时间来设定虚拟时钟的变量长度,尽量使得无人机上电工作过程中,该虚拟时钟的变量不会发生快速翻转。例如,对无人机而言,可以将虚拟时钟的变量长度定义为64位。
分布式系统中的各处理器可以负责对各自的虚拟时钟进行初始化和校准。以分布式系统中的任意一个处理器(下称第一处理器)为例,在第一处理器使用其自身的虚拟时钟之前,可以先对用于表征第一处理器的虚拟时钟的变量进行初始化;确定第一处理器的虚拟时钟的虚拟时间;并根据第一处理器的虚拟时钟的虚拟时间,为变量赋值,以校准第一处理器的虚拟时钟。
对变量初始化时,可以将变量的初始值设置为0。然后,第一处理器可以与其他处理器进行通信,以获取虚拟时钟的虚拟时间。该虚拟时间可以采用虚拟时钟的计数值表示。然后,第一处理器可以使用该计数值为第一处理 器的虚拟时钟的变量赋值,从而完成第一处理器的虚拟时钟的校准。
此外,第一处理器还可以负责同步虚拟时钟的时间精度,对虚拟时钟进行更新,并维护虚拟时钟的当前时间和状态。例如,第一处理器可以按照虚拟时钟的时钟频率对虚拟时钟的变量的取值不断执行加1操作。
需要说明的是,虚拟时钟的时钟频率或精度可以根据分布式系统的应用场合而定,对协同调度的精度要求高的场合,可以将虚拟时钟的时钟频率或精度设置的较高,对协同调度的精度要求低的场合,可以将虚拟时钟的时钟频率或精度设置的低一些,以简化实现。
本发明实施例对虚拟时钟的同步方式不做具体限定,可以根据分布式系统的应用场合选取不同的时钟同步方式及算法。以无人机为例,无人机的控制系统可以采用主从的方式进行时钟同步,如可以基于1588V2协议提供的时钟同步算法对分布式系统的虚拟时钟进行同步。
下面对本发明实施例提供的一种主从时钟同步方式进行详细介绍。
首先,可以将分布式系统中的某个处理器定义为主处理器,分布式系统中的其他处理器定义为从处理器。主处理器可以将自身的虚拟时钟作为分布式系统的时钟同步源,并与从处理器进行通信,使得从处理器的虚拟时钟与主处理器的虚拟时钟进行同步,从而使得从处理器的虚拟时钟与主处理器的虚拟时钟的频率和相位保持一致。
假设第一处理器是分布式系统中的从处理器,第一处理器可以与主处理器通信,以获取第一处理器与主处理器之间的线路延迟信息;然后,第一处理器可以根据线路延迟信息,确定第一处理器的虚拟时钟和主处理器的虚拟时钟的时间差;接着,第一处理器可以根据时间差,调整第一处理器的虚拟时钟,使得第一处理器的虚拟时钟与主处理器的虚拟时钟同步。
具体地,如图2所示,第一处理器接收主处理器发送的同步消息,并记录第一处理器接收同步消息的虚拟时间t2;第一处理器接收主处理器发送的同步消息的跟随消息,跟随消息包含主处理器发送同步消息的虚拟时间t1;第一处理器向主处理器发送延迟请求消息,并记录第一处理器发送延迟请求消息的虚拟时间t3;第一处理器接收主处理器发送的延迟响应消息,延迟响应消息包含主处理器接收延迟请求消息的虚拟时间t4。
上述第一处理器根据线路延迟信息,确定第一处理器的虚拟时钟和主处理器的虚拟时钟的时间差可包括:第一处理器根据虚拟时间t1、虚拟时间t2、 虚拟时间t3和虚拟时间t4,确定时间差。
例如,第一处理器可以先计算主到从的延迟delay1=(t2-t1),再计算从到主的延迟delay2=(t4-t3)。假设主到从的延迟和从到主的延迟相等,则第一处理器可以计算出第一处理器的虚拟时钟和主处理器的虚拟时钟的时间差T=(delay1-delay2)。当然,第一处理器也可以无需计算延迟,直接基于公式T=(t2-t1-t4+t3)计算出第一处理器的虚拟时钟和主处理器的虚拟时钟的时间差。
在其他实施例中,上述第一处理器也可以是分布式系统中的主处理器,第一处理器可以向其他处理器发送同步消息以及同步消息的跟随消息,跟随消息包含第一处理器发送同步消息的虚拟时间t1;第一处理器接收其他处理器发送的延时请求消息;第一处理器向其他处理器发送延时响应消息,延时响应消息包含第一处理器接收延迟请求消息的虚拟时间t4,以便其他处理器基于虚拟时间t1和虚拟时间t4确定第一处理器的虚拟时钟和其他处理器的虚拟时钟之间的时间差,并基于时间差调整其他处理器的虚拟时钟,使得其他处理器的虚拟时钟与第一处理器的虚拟时钟同步。
该实施例是以第一处理器为主处理器,其他处理器作为从处理器为例进行举例说明的。在该实施例中,其他处理器的具体同步过程与前一实施例描述的第一处理器作为从处理器时的同步过程类似,为避免重复,此处不再详述。
上文主要描述了虚拟时钟的同步过程。应理解,以上描述的虚拟时钟的同步过程仅是举例说明,实际上,还可以采用其他传统的时钟同步算法对分布式系统中的处理器的虚拟时钟进行同步,本发明实施例对此不做具体限定。通过保持分布式系统中的各处理器的虚拟时钟同步,使得分布式系统中的处理器可以以统一的时间(即虚拟时钟对应的虚拟时间)为基准对各项事务进行调度,分布式系统中的各处理器只要定期维护虚拟时钟,保持它们之间的同步性即可,无需像传统分布式系统那样,在每次协同调度前均通过应用层协议发送协同消息,从而简化了软件实现。
在虚拟时钟同步的基础上,下面结合图3,详细描述本发明实施例提供的事务调度方法。
图3是本发明实施例提供的事务调度方法的示意性流程图。图3主要是以分布式系统中的第一处理器的事务调度过程为例进行举例说明的。第一处 理器可以是分布式系统中的任意一个处理器。图3的方法可以包括步骤310-330,下面对图3的步骤进行详细描述。
在步骤310中,第一处理器获取待调度的第一事务。所述多个处理器中的第一处理器获取待调度的目标任务。
在步骤320中,第一处理器确定第一事务相对第一处理器的虚拟时钟的调度时间。
第一事务可以是任意一个事务,第一事务的触发方式以及第一事务相对第一处理器的虚拟时钟的调度时间的确定方式可以有多种,例如,可以由第一处理器自主触发第一事务,并分配第一事务相对第一处理器的虚拟时钟的调度时间;又如,可以由其他处理器触发第一事务,并分配第一事务相对第一处理器的虚拟时钟的调度时间,然后,其他处理器通过报文(如任务分派报文)将第一事务及其相对虚拟时钟的调度时间发送至第一处理器。
在步骤330中,第一处理器根据第一事务相对第一处理器的虚拟时钟的调度时间,对第一事务进行调度。
从图3对应的实施例的描述可以看出,分布式系统中的各处理器的事务调度过程相互独立,只不过事务的调度时间以统一的虚拟时钟作为基准。换句话说,各处理器以相同的虚拟时钟作为基准对各自的事务进行调度,处理器甚至可能无需获知其正在与其他处理器进行协同调度,它们之间的协同由于有了共同的时间基准自然而言地完成了。
下面对步骤330的实现方式进行详细描述。
在一些实施例中,步骤330可包括:第一处理器将第一事务相对第一处理器的虚拟时钟的调度时间转换为第一事务的本地调度时间,其中第一事务的本地调度时间为第一事务相对第一处理器的本地时钟的调度时间;第一处理器根据第一事务的本地调度时间对第一事务进行调度。
第一处理器可以基于第一处理器的虚拟时钟的时钟频率与第一处理器的本地时钟的时钟频率的关系,将第一处理器的虚拟时钟的调度时间转换为第一事务的本地调度时间。假设第一处理器的虚拟时钟的时钟频率是本地时钟的时钟频率的2倍,第一处理器的虚拟时钟的当前时间为300(这里的时间是以虚拟时钟的计数值表示的),第一事务相对第一处理器的虚拟时钟的调度时间为305,第一处理器的本地时钟的当前时间为500(这里的时间是以本地时钟的计数值表示的),则根据两个时钟的时钟频率的关系,可以计 算出第一事务的本地调度时间为510。
第一处理器基于第一事务的本地调度时间对第一事务进行调度的方式可以有多种。
作为一个示例,可以采用传统的事务调度方式对第一事务进行调度。具体地,可以先将第一事务添加到第一处理器的调度队列中,然后设置一个周期性触发的定时器,该定时器每触发一个中断信号,第一处理器查看调度队列中是否有需要调度的事务。这样的事务调度方式虽然简单,但存在功率浪费的问题。比如,当定时器发送某个中断信号时,如果此时并不存在需要调度的事务,该定时器的该中断信号的发射功率则被浪费。
可选地,在一些实施例中,在第一处理器根据第一事务的本地调度时间对第一事务进行调度之前,图3的方法还可包括:第一处理器接收第一定时器触发的第一中断信号,第一中断信号用于指示第一处理器的本地时钟到达第一事务的前一事务的本地调度时间;响应于第一中断信号,第一处理器调度第一事务的前一事务,并调整第一定时器的定时时长,使得第一定时器的下一中断信号的触发时间为第一事务的本地调度时间;上述第一处理器根据第一事务的本地调度时间对第一事务进行调度可包括:响应于下一中断信号,第一处理器调度第一事务。
本发明实施例中引入第一定时器,该第一定时器并非周期性触发中断信号,指示第一处理器对事务进行调度,而是每调度一个事务,就重新设置该第一定时器的定时时长,使得该第一定时器的定时时长等于当前时间到下一事务的本地调度时间的时间间隔,这样可以节省系统功率,也可以提高事务调度的精度。
可选地,在一些实施例中,在第一处理器根据第一事务的本地调度时间对第一事务进行调度之前,图3的方法还可包括:所述第一处理器确定所述第一事务的调度结束时间;当所述第一事务的调度结束时间与所述第一事务的下一事务的本地调度时间之间的时间间隔小于预设的时间间隔时,所述第一处理器将所述第一事务和所述第一事务的下一事务合并为一项事务。
具体地,上述预设时间间隔可以是第一处理器的调度事务的时钟周期粒度。例如,第一处理器在340ms调度了一项事务(下称事务1),且事务1执行了2.95ms,也就是说事务1的调度结束时间是342.95ms。如果下一个被调度的事务(下称事务2)的本地调度时间是343ms,此时离事务2的本 地调度时间还差50μs,如果第一处理器的调度事务的最小时钟粒度是100μs,则无需等待50μs再激励第一处理器调度事务2,第一处理器可以直接开始调度事务2,相当于将事务1和事务2合并成一项事务进行调度。本发明实施例优化了处理器的事务调度方式。
可选地,在一些实施例中,第一处理器根据第一事务的本地调度时间对第一事务进行调度可包括:在第一处理器调度第一调度队列中的事务的过程中,响应于第一处理器的本地时间到达第一事务的本地调度时间,第一处理器对第一事务进行调度,其中第一调度队列为第一处理器的多个调度队列中的一个,多个调度队列还包括第二调度队列和第三调度队列,第一调度队列包含本地调度时间位于当前时段的事务,第二调度队列包含本地调度时间位于第一时段的事务,第三调度队列包含本地调度时间位于第一时段之后的事务,其中第一时段为当前时段的下一时段。
可选地,在一些实施例中,图3的方法还可包括:第一处理器接收第二定时器触发的第二中断信号,第二中断信号用于指示当前时段结束;响应于第二中断信号,第一处理器调度第二调度队列中的事务,并对第一调度队列和第三调度队列中的事务进行更新,使得第一调度队列包含本地调度时间位于第二时段的事务,第三调度队列包含本地调度时间位于第二时段之后的事务,其中第二时段为第一时段的下一时段。
本发明实施例对调度队列的形式不做具体限定,例如可以采用调度表的形式记录待调度的事务。下面以调度表为例进行说明。
上述第一调度队列可以称为第一处理器的乒调度表,第二调度队列可以称为第一处理器的乓调度表,第三调度队列可以称为其余事务调度表。乒调度表可以包含本地调度时间位于当前时段的事务。乓调度表可以包含本地调度时间位于下一时段的事务。其余事务调度表可以包含第一处理器的剩余的待调度事务。
以时段长度为10ms为例,则乒调度表可以包含本地调度时间位于0-10ms的事务,乓度表可以包含本地调度时间位于10-20ms的事务。其余事务调度表可以包含本地调度时间位于20ms之后的事务。第一处理器在0-10ms先调度乒调度表中的事务;10ms结束之后,第一处理器指向乓调度表,以对本地调度时间位于10-20ms的事务进行调度。此外,第一处理器还需要对乒调度表和其余事务调度表进行更新,将其余事务调度表中的位于 20-30ms的事务添加至乒调度表中。20ms结束之后,第一处理器重新指向乒调度表,以对本地调度时间位于20-30ms的事务进行调度,以此类推。
从上文的描述可以看出,第一处理器交替将乒调度表(或第一调度队列)和乓调度表(或第二调度队列)作为当前调度表(或当前调度队列),这样一来,第一处理器内部的软件调度器无需在待调度的所有事务中查找当前需要调度的事务,仅需要在当前调度表(或当前调度队列)中查找即可,有效降低第一处理器调度过程的实现复杂度。
需要说明的是,第一处理器获取到某个待调度的新事务时,可以根据该新事务的本地调度时间将其添加至相应的调度表(或调度队列)。以当前调度表为乒调度表(第一调度队列)为例,如果该新事务的本地调度时间位于当前时段,则可以将新事务添加至乒调度表,如果该新事务的本地调度时间位于当前时段的下一时段,则可以将新事务添加至乓调度表(第二调度队列),否则,可以将新事务添加至其余事务调度表(第三调度队列)。
此外,本发明实施例引入了第二定时器,该第二定时器可以以当前时段的长度为定时时长(如10ms),向第一处理器周期性发送中断信号,触发第一处理器对当前调度表(或当前调度队列)进行更新。
下面对本发明的装置实施例进行描述,由于装置实施例可以执行上述方法,因此未详细描述的部分可以参见前面各方法实施例。
图4是本发明一个实施例提供的处理器的示意性结构图。图4的处理器可以是上文描述的第一处理器,该第一处理器400可以包括获取模块410,第一确定模块420和调度模块430,下面对第一处理器400中的模块的功能进行详细说明。
获取模块410可获取待调度的第一事务。
第一确定模块420可确定所述第一事务相对所述第一处理器400的虚拟时钟的调度时间。
调度模块430可根据所述第一事务相对所述第一处理器400的虚拟时钟的调度时间,对所述第一事务进行调度。
可选地,在一些实施例中,调度模块430可具体用于将所述第一事务相对所述第一处理器400的虚拟时钟的调度时间转换为所述第一事务的本地调度时间,其中所述第一事务的本地调度时间为所述第一事务相对所述第一处理器400的本地时钟的调度时间;根据所述第一事务的本地调度时间对所述 第一事务进行调度。
可选地,在一些实施例中,第一处理器400还可用于接收第一定时器触发的第一中断信号,所述第一中断信号用于指示所述第一处理器400的本地时钟到达所述第一事务的前一事务的本地调度时间;响应于所述第一中断信号,调度所述第一事务的前一事务,并调整所述第一定时器的定时时长,使得所述第一定时器的下一中断信号的触发时间为所述第一事务的本地调度时间;调度模块430具体用于响应于所述下一中断信号,所述第一处理器400调度所述第一事务。
可选地,在一些实施例中,所述第一处理器400确定所述第一事务的调度结束时间;当所述第一事务的调度结束时间与所述第一事务的下一事务的本地调度时间之间的时间间隔小于预设的时间间隔时,所述第一处理器400将所述第一事务和所述第一事务的下一事务合并为一项事务。
可选地,在一些实施例中,所述调度模块430具体用于在所述第一处理器400调度第一调度队列中的事务的过程中,响应于所述第一处理器400的本地时间到达所述第一事务的本地调度时间,对所述第一事务进行调度,其中所述第一调度队列为所述第一处理器400的多个调度队列中的一个,所述多个调度队列还包括第二调度队列和第三调度队列,所述第一调度队列包含本地调度时间位于当前时段的事务,所述第二调度队列包含本地调度时间位于第一时段的事务,所述第三调度队列包含本地调度时间位于所述第一时段之后的事务,其中所述第一时段为所述当前时段的下一时段。
可选地,在一些实施例中,第一处理器400还可包括接收模块,用于接收第二定时器触发的第二中断信号,所述第二中断信号用于指示所述当前时段结束。所述调度模块430还用于响应于所述第二中断信号,调度第二调度队列中的事务,并对所述第一调度队列和所述第三调度队列中的事务进行更新,使得所述第一调度队列包含本地调度时间位于第二时段的事务,所述第三调度队列包含本地调度时间位于所述第二时段之后的事务,其中所述第二时段为所述第一时段的下一时段。
可选地,在一些实施例中,所述第一处理器400还可包括通信处理模块,用于与所述分布式系统中的其他处理器通信,以将所述第一处理器400的虚拟时钟与所述其他处理器的虚拟时钟同步。
可选地,在一些实施例中,所述第一处理器400为所述多个处理器中的 从处理器,所述多个处理器还包括主处理器,所述通信处理模块具体用于与所述主处理器通信,以获取所述第一处理器400与所述主处理器之间的线路延迟信息;根据所述线路延迟信息,确定所述第一处理器400的虚拟时钟和所述主处理器的虚拟时钟的时间差;根据所述时间差,调整所述第一处理器400的虚拟时钟,使得所述第一处理器400的虚拟时钟与所述主处理器的虚拟时钟同步。
可选地,在一些实施例中,所述通信处理模块具体用于接收所述主处理器发送的同步消息,并记录所述第一处理器400接收所述同步消息的虚拟时间t2;接收所述主处理器发送的所述同步消息的跟随消息,所述跟随消息包含所述主处理器发送所述同步消息的虚拟时间t1;向所述主处理器发送延迟请求消息,并记录所述第一处理器400发送所述延迟请求消息的虚拟时间t3;接收所述主处理器发送的延迟响应消息,所述延迟响应消息包含所述主处理器接收所述延迟请求消息的虚拟时间t4。
可选地,在一些实施例中,所述通信处理模块具体用于根据所述虚拟时间t1、虚拟时间t2、虚拟时间t3和虚拟时间t4,确定所述时间差。
可选地,在一些实施例中,所述时间差T=(t2-t1-t4+t3)。
可选地,在一些实施例中,所述第一处理器400为所述多个处理器中的主处理器,所述其他处理器为所述分布式系统的从主处理器,所述通信处理模块具体用于向所述其他处理器发送同步消息以及所述同步消息的跟随消息,所述跟随消息包含所述第一处理器400发送所述同步消息的虚拟时间t1;接收所述其他处理器发送的延时请求消息;向所述其他处理器发送延时响应消息,所述延时响应消息包含所述第一处理器400接收所述延迟请求消息的虚拟时间t4,以便所述其他处理器基于所述虚拟时间t1和所述虚拟时间t4确定所述第一处理器400的虚拟时钟和所述其他处理器的虚拟时钟之间的时间差,并基于所述时间差调整所述其他处理器的虚拟时钟,使得所述其他处理器的虚拟时钟与所述第一处理器400的虚拟时钟同步。
可选地,在一些实施例中,所述第一处理器400还可包括初始化模块,第三确定模块和赋值模块。所述初始化模块用于对用于表征所述第一处理器400的虚拟时钟的变量进行初始化。所述第三确定模块用于确定所述第一处理器400的虚拟时钟的虚拟时间。所述赋值模块用于根据所述第一处理器400的虚拟时钟的虚拟时间,为所述变量赋值,以校准所述第一处理器400 的虚拟时钟。
可选地,在一些实施例中,所述第一处理器400还可包括第四确定模块和更新模块。所述第四确定模块用于确定所述第一处理器400的虚拟时钟的时钟频率,其中所述分布式系统中的各虚拟时钟的时钟频率相同。所述更新模块用于根据所述第一处理器400的虚拟时钟的时钟频率,更新所述变量的计数值。
图5是本发明另一实施例提供的处理器的示意性结构图。图5的处理器可以为分布式系统中的任意一个第一处理器。分布式系统中的各处理器均配置有虚拟时钟,且分布式系统中的各处理器的虚拟时钟同步。该第一处理器500包括存储器510和控制器520。
存储器510可用于存储计算机指令。
控制器520可用于执行存储器中存储的计算机指令,以执行以下操作:获取待调度的第一事务;确定第一事务相对第一处理器500的虚拟时钟的调度时间;根据第一事务相对第一处理器500的虚拟时钟的调度时间,对第一事务进行调度。
可选地,在一些实施例中,所述根据第一事务相对第一处理器500的虚拟时钟的调度时间,对第一事务进行调度可包括:将第一事务相对第一处理器500的虚拟时钟的调度时间转换为第一事务的本地调度时间,其中第一事务的本地调度时间为第一事务相对第一处理器500的本地时钟的调度时间;根据第一事务的本地调度时间对第一事务进行调度。
可选地,在一些实施例中,在根据第一事务的本地调度时间对第一事务进行调度之前,控制器520还用于执行以下操作:接收第一定时器触发的第一中断信号,第一中断信号用于指示第一处理器500的本地时钟到达第一事务的前一事务的本地调度时间;响应于第一中断信号,调度第一事务的前一事务,并调整第一定时器的定时时长,使得第一定时器的下一中断信号的触发时间为第一事务的本地调度时间;所述根据第一事务的本地调度时间对第一事务进行调度可包括:响应于下一中断信号,调度第一事务。
可选地,在一些实施例中,在所述根据第一事务的本地调度时间对第一事务进行调度之前,控制器520还用于执行以下操作:确定所述第一事务的调度结束时间;当所述第一事务的调度结束时间与所述第一事务的下一事务的本地调度时间之间的时间间隔小于预设的时间间隔时,将所述第一事务和 所述第一事务的下一事务合并为一项事务。
可选地,在一些实施例中,所述根据第一事务的本地调度时间对第一事务进行调度可包括:在第一处理器500调度第一调度队列中的事务的过程中,响应于第一处理器500的本地时间到达第一事务的本地调度时间,对第一事务进行调度,其中第一调度队列为第一处理器500的多个调度队列中的一个,多个调度队列还包括第二调度队列和第三调度队列,第一调度队列包含本地调度时间位于当前时段的事务,第二调度队列包含本地调度时间位于第一时段的事务,第三调度队列包含本地调度时间位于第一时段之后的事务,其中第一时段为当前时段的下一时段。
可选地,在一些实施例中,控制器520还可用于执行以下操作:接收第二定时器触发的第二中断信号,第二中断信号用于指示当前时段结束;响应于第二中断信号,调度第二调度队列中的事务,并对第一调度队列和第三调度队列中的事务进行更新,使得第一调度队列包含本地调度时间位于第二时段的事务,第三调度队列包含本地调度时间位于第二时段之后的事务,其中第二时段为第一时段的下一时段。
可选地,在一些实施例中,在所述根据第一事务相对第一处理器500的虚拟时钟的调度时间,对第一事务进行调度之前,控制器520还可用于执行以下操作:与分布式系统中的其他处理器通信,以将第一处理器500的虚拟时钟与其他处理器的虚拟时钟同步。
可选地,在一些实施例中,第一处理器500为多个处理器中的从处理器,多个处理器还包括主处理器,所述与分布式系统中的其他处理器通信,以将第一处理器500的虚拟时钟与其他处理器的虚拟时钟同步可包括:与主处理器通信,以获取第一处理器500与主处理器之间的线路延迟信息;根据线路延迟信息,确定第一处理器500的虚拟时钟和主处理器的虚拟时钟的时间差;根据时间差,调整第一处理器500的虚拟时钟,使得第一处理器500的虚拟时钟与主处理器的虚拟时钟同步。
可选地,在一些实施例中,所述与主处理器通信,以获取第一处理器500与主处理器之间的线路延迟信息可包括:接收主处理器发送的同步消息,并记录第一处理器500接收同步消息的虚拟时间t2;接收主处理器发送的同步消息的跟随消息,跟随消息包含主处理器发送同步消息的虚拟时间t1;向主处理器发送延迟请求消息,并记录第一处理器500发送延迟请求消息的虚拟 时间t3;接收主处理器发送的延迟响应消息,延迟响应消息包含主处理器接收延迟请求消息的虚拟时间t4。
可选地,在一些实施例中,所述根据线路延迟信息,确定第一处理器500的虚拟时钟和主处理器的虚拟时钟的时间差可包括:根据虚拟时间t1、虚拟时间t2、虚拟时间t3和虚拟时间t4,确定时间差。
可选地,在一些实施例中,时间差T=(t2-t1-t4+t3)。
可选地,在一些实施例中,第一处理器500为多个处理器中的主处理器,其他处理器为分布式系统的从主处理器,所述与分布式系统中的其他处理器通信,以将第一处理器500的虚拟时钟与其他处理器的虚拟时钟同步可包括:向其他处理器发送同步消息以及同步消息的跟随消息,跟随消息包含第一处理器500发送同步消息的虚拟时间t1;接收其他处理器发送的延时请求消息;向其他处理器发送延时响应消息,延时响应消息包含第一处理器500接收延迟请求消息的虚拟时间t4,以便其他处理器基于虚拟时间t1和虚拟时间t4确定第一处理器500的虚拟时钟和其他处理器的虚拟时钟之间的时间差,并基于时间差调整其他处理器的虚拟时钟,使得其他处理器的虚拟时钟与第一处理器500的虚拟时钟同步。
可选地,在一些实施例中,在根据第一事务相对第一处理器500的虚拟时钟的调度时间,对第一事务进行调度之前,控制器520还可用于执行以下操作:对用于表征第一处理器500的虚拟时钟的变量进行初始化;确定第一处理器500的虚拟时钟的虚拟时间;根据第一处理器500的虚拟时钟的虚拟时间,为变量赋值,以校准第一处理器500的虚拟时钟。
可选地,在一些实施例中,控制器520还用于执行以下操作:确定第一处理器500的虚拟时钟的时钟频率,其中分布式系统中的各虚拟时钟的时钟频率相同;根据第一处理器500的虚拟时钟的时钟频率,更新变量的计数值。
本发明实施例还提供一种分布式系统。如图6所示,该分布式系统600包括上文描述的第一处理器500。例如,分布式系统600中的每个处理器均可以执行如上文中的第一处理器500所执行的功能。
本发明实施例还提供一种无人机。如图7所示,该无人机700可以包括如图6所示的分布式系统600。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其他任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的 形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一 个单元中。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (30)

  1. 一种事务调度方法,其特征在于,所述方法可应用于具有多处理器的分布式系统,所述分布式系统中的各处理器均配置有虚拟时钟,且所述分布式系统中的各处理器的虚拟时钟同步,
    所述方法包括:
    所述分布式系统中的任意一个第一处理器获取待调度的第一事务;
    所述第一处理器确定所述第一事务相对所述第一处理器的虚拟时钟的调度时间;
    所述第一处理器根据所述第一事务相对所述第一处理器的虚拟时钟的调度时间,对所述第一事务进行调度。
  2. 如权利要求1所述的方法,其特征在于,所述第一处理器根据所述第一事务相对所述第一处理器的虚拟时钟的调度时间,对所述第一事务进行调度,包括:
    所述第一处理器将所述第一事务相对所述第一处理器的虚拟时钟的调度时间转换为所述第一事务的本地调度时间,其中所述第一事务的本地调度时间为所述第一事务相对所述第一处理器的本地时钟的调度时间;
    所述第一处理器根据所述第一事务的本地调度时间对所述第一事务进行调度。
  3. 如权利要求2所述的方法,其特征在于,在所述第一处理器根据所述第一事务的本地调度时间对所述第一事务进行调度之前,所述方法还包括:
    所述第一处理器接收第一定时器触发的第一中断信号,所述第一中断信号用于指示所述第一处理器的本地时钟到达所述第一事务的前一事务的本地调度时间;
    响应于所述第一中断信号,所述第一处理器调度所述第一事务的前一事务,并调整所述第一定时器的定时时长,使得所述第一定时器的下一中断信号的触发时间为所述第一事务的本地调度时间;
    所述第一处理器根据所述第一事务的本地调度时间对所述第一事务进行调度,包括:
    响应于所述下一中断信号,所述第一处理器调度所述第一事务。
  4. 如权利要求2所述的方法,其特征在于,在所述第一处理器根据所 述第一事务的本地调度时间对所述第一事务进行调度之前,所述方法还包括:
    所述第一处理器确定所述第一事务的调度结束时间;
    当所述第一事务的调度结束时间与所述第一事务的下一事务的本地调度时间之间的时间间隔小于预设的时间间隔时,所述第一处理器将所述第一事务和所述第一事务的下一事务合并为一项事务。
  5. 如权利要求2所述的方法,其特征在于,所述第一处理器根据所述第一事务的本地调度时间对所述第一事务进行调度,包括:
    在所述第一处理器调度第一调度队列中的事务的过程中,响应于所述第一处理器的本地时间到达所述第一事务的本地调度时间,所述第一处理器对所述第一事务进行调度,其中所述第一调度队列为所述第一处理器的多个调度队列中的一个,所述多个调度队列还包括第二调度队列和第三调度队列,所述第一调度队列包含本地调度时间位于当前时段的事务,所述第二调度队列包含本地调度时间位于第一时段的事务,所述第三调度队列包含本地调度时间位于所述第一时段之后的事务,其中所述第一时段为所述当前时段的下一时段。
  6. 如权利要求5所述的方法,其特征在于,所述方法还包括:
    所述第一处理器接收第二定时器触发的第二中断信号,所述第二中断信号用于指示所述当前时段结束;
    响应于所述第二中断信号,所述第一处理器调度第二调度队列中的事务,并对所述第一调度队列和所述第三调度队列中的事务进行更新,使得所述第一调度队列包含本地调度时间位于第二时段的事务,所述第三调度队列包含本地调度时间位于所述第二时段之后的事务,其中所述第二时段为所述第一时段的下一时段。
  7. 如权利要求1所述的方法,其特征在于,在所述第一处理器根据所述第一事务相对所述第一处理器的虚拟时钟的调度时间,对所述第一事务进行调度之前,所述方法还包括:
    所述第一处理器与所述分布式系统中的其他处理器通信,以将所述第一处理器的虚拟时钟与所述其他处理器的虚拟时钟同步。
  8. 如权利要求7所述的方法,其特征在于,所述第一处理器为所述多个处理器中的从处理器,所述多个处理器还包括主处理器,
    所述第一处理器与所述分布式系统中的其他处理器通信,以将所述第一处理器的虚拟时钟与所述其他处理器的虚拟时钟同步,包括:
    所述第一处理器与所述主处理器通信,以获取所述第一处理器与所述主处理器之间的线路延迟信息;
    所述第一处理器根据所述线路延迟信息,确定所述第一处理器的虚拟时钟和所述主处理器的虚拟时钟的时间差;
    所述第一处理器根据所述时间差,调整所述第一处理器的虚拟时钟,使得所述第一处理器的虚拟时钟与所述主处理器的虚拟时钟同步。
  9. 如权利要求8所述的方法,其特征在于,所述第一处理器与所述主处理器通信,以获取所述第一处理器与所述主处理器之间的线路延迟信息,包括:
    所述第一处理器接收所述主处理器发送的同步消息,并记录所述第一处理器接收所述同步消息的虚拟时间t2;
    所述第一处理器接收所述主处理器发送的所述同步消息的跟随消息,所述跟随消息包含所述主处理器发送所述同步消息的虚拟时间t1;
    所述第一处理器向所述主处理器发送延迟请求消息,并记录所述第一处理器发送所述延迟请求消息的虚拟时间t3;
    所述第一处理器接收所述主处理器发送的延迟响应消息,所述延迟响应消息包含所述主处理器接收所述延迟请求消息的虚拟时间t4。
  10. 如权利要求9所述的方法,其特征在于,所述第一处理器根据所述线路延迟信息,确定所述第一处理器的虚拟时钟和所述主处理器的虚拟时钟的时间差,包括:
    所述第一处理器根据所述虚拟时间t1、虚拟时间t2、虚拟时间t3和虚拟时间t4,确定所述时间差。
  11. 如权利要求10所述的方法,其特征在于,所述时间差T=(t2-t1-t4+t3)。
  12. 如权利要求7所述的方法,其特征在于,所述第一处理器为所述多个处理器中的主处理器,所述其他处理器为所述分布式系统的从主处理器,
    所述第一处理器与所述分布式系统中的其他处理器通信,以将所述第一处理器的虚拟时钟与所述其他处理器的虚拟时钟同步,包括:
    所述第一处理器向所述其他处理器发送同步消息以及所述同步消息的 跟随消息,所述跟随消息包含所述第一处理器发送所述同步消息的虚拟时间t1;
    所述第一处理器接收所述其他处理器发送的延时请求消息;
    所述第一处理器向所述其他处理器发送延时响应消息,所述延时响应消息包含所述第一处理器接收所述延迟请求消息的虚拟时间t4,以便所述其他处理器基于所述虚拟时间t1和所述虚拟时间t4确定所述第一处理器的虚拟时钟和所述其他处理器的虚拟时钟之间的时间差,并基于所述时间差调整所述其他处理器的虚拟时钟,使得所述其他处理器的虚拟时钟与所述第一处理器的虚拟时钟同步。
  13. 如权利要求1所述的方法,其特征在于,在所述第一处理器根据所述第一事务相对所述第一处理器的虚拟时钟的调度时间,对所述第一事务进行调度之前,所述方法还包括:
    所述第一处理器对用于表征所述第一处理器的虚拟时钟的变量进行初始化;
    所述第一处理器确定所述第一处理器的虚拟时钟的虚拟时间;
    所述第一处理器根据所述第一处理器的虚拟时钟的虚拟时间,为所述变量赋值,以校准所述第一处理器的虚拟时钟。
  14. 如权利要求13所述的方法,其特征在于,所述方法还包括:
    所述第一处理器确定所述第一处理器的虚拟时钟的时钟频率,其中所述分布式系统中的各虚拟时钟的时钟频率相同;
    所述第一处理器根据所述第一处理器的虚拟时钟的时钟频率,更新所述变量的计数值。
  15. 一种处理器,其特征在于,所述处理器为分布式系统中的第一处理器,所述分布式系统中的各处理器均配置有虚拟时钟,且所述分布式系统中的各处理器的虚拟时钟同步,
    所述第一处理器包括:
    存储器,用于存储计算机指令;
    控制器,用于执行所述存储器中存储的计算机指令,以执行以下操作:
    获取待调度的第一事务;
    确定所述第一事务相对所述第一处理器的虚拟时钟的调度时间;
    根据所述第一事务相对所述第一处理器的虚拟时钟的调度时间,对所述 第一事务进行调度。
  16. 如权利要求15所述的处理器,其特征在于,所述根据所述第一事务相对所述第一处理器的虚拟时钟的调度时间,对所述第一事务进行调度,包括:
    将所述第一事务相对所述第一处理器的虚拟时钟的调度时间转换为所述第一事务的本地调度时间,其中所述第一事务的本地调度时间为所述第一事务相对所述第一处理器的本地时钟的调度时间;
    根据所述第一事务的本地调度时间对所述第一事务进行调度。
  17. 如权利要求16所述的处理器,其特征在于,在所述根据所述第一事务的本地调度时间对所述第一事务进行调度之前,所述控制器还用于执行以下操作:
    接收第一定时器触发的第一中断信号,所述第一中断信号用于指示所述第一处理器的本地时钟到达所述第一事务的前一事务的本地调度时间;
    响应于所述第一中断信号,调度所述第一事务的前一事务,并调整所述第一定时器的定时时长,使得所述第一定时器的下一中断信号的触发时间为所述第一事务的本地调度时间;
    所述根据所述第一事务的本地调度时间对所述第一事务进行调度,包括:
    响应于所述下一中断信号,调度所述第一事务。
  18. 如权利要求16所述的处理器,其特征在于,在所述根据所述第一事务的本地调度时间对所述第一事务进行调度之前,所述控制器还用于执行以下操作:
    确定所述第一事务的调度结束时间;
    当所述第一事务的调度结束时间与所述第一事务的下一事务的本地调度时间之间的时间间隔小于预设的时间间隔时,所述第一处理器将所述第一事务和所述第一事务的下一事务合并为一项事务。
  19. 如权利要求16所述的处理器,其特征在于,所述根据所述第一事务的本地调度时间对所述第一事务进行调度,包括:
    在所述第一处理器调度第一调度队列中的事务的过程中,响应于所述第一处理器的本地时间到达所述第一事务的本地调度时间,对所述第一事务进行调度,其中所述第一调度队列为所述第一处理器的多个调度队列中的一 个,所述多个调度队列还包括第二调度队列和第三调度队列,所述第一调度队列包含本地调度时间位于当前时段的事务,所述第二调度队列包含本地调度时间位于第一时段的事务,所述第三调度队列包含本地调度时间位于所述第一时段之后的事务,其中所述第一时段为所述当前时段的下一时段。
  20. 如权利要求19所述的处理器,其特征在于,所述控制器还用于执行以下操作:
    接收第二定时器触发的第二中断信号,所述第二中断信号用于指示所述当前时段结束;
    响应于所述第二中断信号,调度第二调度队列中的事务,并对所述第一调度队列和所述第三调度队列中的事务进行更新,使得所述第一调度队列包含本地调度时间位于第二时段的事务,所述第三调度队列包含本地调度时间位于所述第二时段之后的事务,其中所述第二时段为所述第一时段的下一时段。
  21. 如权利要求15所述的处理器,其特征在于,在所述根据所述第一事务相对所述第一处理器的虚拟时钟的调度时间,对所述第一事务进行调度之前,所述控制器还用于执行以下操作:
    与所述分布式系统中的其他处理器通信,以将所述第一处理器的虚拟时钟与所述其他处理器的虚拟时钟同步。
  22. 如权利要求21所述的处理器,其特征在于,所述第一处理器为所述多个处理器中的从处理器,所述多个处理器还包括主处理器,
    所述与所述分布式系统中的其他处理器通信,以将所述第一处理器的虚拟时钟与所述其他处理器的虚拟时钟同步,包括:
    与所述主处理器通信,以获取所述第一处理器与所述主处理器之间的线路延迟信息;
    根据所述线路延迟信息,确定所述第一处理器的虚拟时钟和所述主处理器的虚拟时钟的时间差;
    根据所述时间差,调整所述第一处理器的虚拟时钟,使得所述第一处理器的虚拟时钟与所述主处理器的虚拟时钟同步。
  23. 如权利要求22所述的处理器,其特征在于,所述与所述主处理器通信,以获取所述第一处理器与所述主处理器之间的线路延迟信息,包括:
    接收所述主处理器发送的同步消息,并记录所述第一处理器接收所述同 步消息的虚拟时间t2;
    接收所述主处理器发送的所述同步消息的跟随消息,所述跟随消息包含所述主处理器发送所述同步消息的虚拟时间t1;
    向所述主处理器发送延迟请求消息,并记录所述第一处理器发送所述延迟请求消息的虚拟时间t3;
    接收所述主处理器发送的延迟响应消息,所述延迟响应消息包含所述主处理器接收所述延迟请求消息的虚拟时间t4。
  24. 如权利要求23所述的处理器,其特征在于,所述根据所述线路延迟信息,确定所述第一处理器的虚拟时钟和所述主处理器的虚拟时钟的时间差,包括:
    根据所述虚拟时间t1、虚拟时间t2、虚拟时间t3和虚拟时间t4,确定所述时间差。
  25. 如权利要求24所述的处理器,其特征在于,所述时间差T=(t2-t1-t4+t3)。
  26. 如权利要求21所述的处理器,其特征在于,所述第一处理器为所述多个处理器中的主处理器,所述其他处理器为所述分布式系统的从主处理器,
    所述与所述分布式系统中的其他处理器通信,以将所述第一处理器的虚拟时钟与所述其他处理器的虚拟时钟同步,包括:
    向所述其他处理器发送同步消息以及所述同步消息的跟随消息,所述跟随消息包含所述第一处理器发送所述同步消息的虚拟时间t1;
    接收所述其他处理器发送的延时请求消息;
    向所述其他处理器发送延时响应消息,所述延时响应消息包含所述第一处理器接收所述延迟请求消息的虚拟时间t4,以便所述其他处理器基于所述虚拟时间t1和所述虚拟时间t4确定所述第一处理器的虚拟时钟和所述其他处理器的虚拟时钟之间的时间差,并基于所述时间差调整所述其他处理器的虚拟时钟,使得所述其他处理器的虚拟时钟与所述第一处理器的虚拟时钟同步。
  27. 如权利要求15所述的处理器,其特征在于,在所述根据所述第一事务相对所述第一处理器的虚拟时钟的调度时间,对所述第一事务进行调度之前,所述控制器还用于执行以下操作:
    对用于表征所述第一处理器的虚拟时钟的变量进行初始化;
    确定所述第一处理器的虚拟时钟的虚拟时间;
    根据所述第一处理器的虚拟时钟的虚拟时间,为所述变量赋值,以校准所述第一处理器的虚拟时钟。
  28. 如权利要求27所述的处理器,其特征在于,所述控制器还用于执行以下操作:
    确定所述第一处理器的虚拟时钟的时钟频率,其中所述分布式系统中的各虚拟时钟的时钟频率相同;
    根据所述第一处理器的虚拟时钟的时钟频率,更新所述变量的计数值。
  29. 一种分布式系统,其特征在于,所述分布式系统包括如权利要求15-28中任一项所述的处理器。
  30. 一种无人机,其特征在于,包括如权利要求29所述的分布式系统。
PCT/CN2017/091105 2017-06-30 2017-06-30 事务调度方法、处理器、分布式系统和无人机 WO2019000398A1 (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/CN2017/091105 WO2019000398A1 (zh) 2017-06-30 2017-06-30 事务调度方法、处理器、分布式系统和无人机
CN201780004456.7A CN108401454B (zh) 2017-06-30 2017-06-30 事务调度方法、处理器、分布式系统和无人机

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2017/091105 WO2019000398A1 (zh) 2017-06-30 2017-06-30 事务调度方法、处理器、分布式系统和无人机

Publications (1)

Publication Number Publication Date
WO2019000398A1 true WO2019000398A1 (zh) 2019-01-03

Family

ID=63094892

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2017/091105 WO2019000398A1 (zh) 2017-06-30 2017-06-30 事务调度方法、处理器、分布式系统和无人机

Country Status (2)

Country Link
CN (1) CN108401454B (zh)
WO (1) WO2019000398A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114090269A (zh) * 2022-01-21 2022-02-25 北京阿丘科技有限公司 业务调度均衡方法、装置、设备及存储介质

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110795506A (zh) * 2019-10-23 2020-02-14 广州巨杉软件开发有限公司 基于分布式逻辑时间戳的分布式数据库管理方法及装置
WO2021208868A1 (zh) * 2020-04-13 2021-10-21 华为技术有限公司 确定时钟的方法和相关装置
CN115396060B (zh) * 2022-08-30 2023-07-14 深圳市智鼎自动化技术有限公司 一种基于激光的同步控制方法及相关装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030177163A1 (en) * 2002-03-18 2003-09-18 Fujitsu Limited Microprocessor comprising load monitoring function
CN104598306A (zh) * 2014-12-05 2015-05-06 中国航空工业集团公司第六三一研究所 Phm仿真验证中的一种进程调度方法
CN105959079A (zh) * 2016-07-14 2016-09-21 深圳市旗众智能自动化有限公司 一种基于分布式控制系统的时钟同步方法
CN106126332A (zh) * 2016-06-27 2016-11-16 北京京东尚科信息技术有限公司 分布式定时任务调度系统及方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0519981D0 (en) * 2005-09-30 2005-11-09 Ignios Ltd Scheduling in a multicore architecture
CN101086711B (zh) * 2006-06-11 2012-02-29 上海全成通信技术有限公司 一种多任务运行系统中的任务管理方法
US7787486B2 (en) * 2006-11-13 2010-08-31 Honeywell International Inc. Method and system for achieving low jitter in real-time switched networks
US9813225B2 (en) * 2013-11-05 2017-11-07 National Instruments Corporation Lossless time based data acquisition and control in a distributed system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030177163A1 (en) * 2002-03-18 2003-09-18 Fujitsu Limited Microprocessor comprising load monitoring function
CN104598306A (zh) * 2014-12-05 2015-05-06 中国航空工业集团公司第六三一研究所 Phm仿真验证中的一种进程调度方法
CN106126332A (zh) * 2016-06-27 2016-11-16 北京京东尚科信息技术有限公司 分布式定时任务调度系统及方法
CN105959079A (zh) * 2016-07-14 2016-09-21 深圳市旗众智能自动化有限公司 一种基于分布式控制系统的时钟同步方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114090269A (zh) * 2022-01-21 2022-02-25 北京阿丘科技有限公司 业务调度均衡方法、装置、设备及存储介质

Also Published As

Publication number Publication date
CN108401454B (zh) 2021-10-22
CN108401454A (zh) 2018-08-14

Similar Documents

Publication Publication Date Title
WO2019000398A1 (zh) 事务调度方法、处理器、分布式系统和无人机
US7199820B2 (en) Synchronizing image pickup process of a plurality of image pickup apparatuses
EP3367733B1 (en) Method, device, and system for synchronizing clocks of processors
JP5569299B2 (ja) 通信システム及び通信インタフェース装置、並びに同期方法
JP7394986B2 (ja) データパケットを送信する方法、及びこの方法を実施する装置
WO2021003685A1 (zh) 时间同步方法、多传感器系统及可移动平台
WO2015196685A1 (zh) 时钟同步方法及装置
JP6359098B2 (ja) 分散リアルタイムシステムにおいて周期的なタスクの間で適時にデータを引き渡す方法
JP7309579B2 (ja) 通信装置、通信方法及びプログラム
JP7396393B2 (ja) 制御システム、装置および制御方法
WO2016012866A1 (en) Methods and apparatus for enabling spontaneous location determination in a scheduled wireless communication environment
JP5780157B2 (ja) 計算機、並列計算機システム、同期方法、及びコンピュータプログラム
US20190229885A1 (en) Computing device and control system
EP3582445A1 (en) Control device and communication device
JP2022112621A (ja) 通信装置、通信システム、通知方法及びプログラム
CN110572234A (zh) 一种基于串口实现时钟同步的方法、智能终端及存储介质
CN110912634B (zh) 基于spi实现时钟同步的方法、存储介质及终端设备
CN115102651A (zh) 数据处理方法
JP6612006B1 (ja) 時刻同期装置、通信システム、時刻同期方法および時刻同期プログラム
KR101485328B1 (ko) 플레이어를 위한 다중싱크 제어시스템
JP7480002B2 (ja) 伝送装置、及び伝送システム
CN115884229B (zh) 传输时延的管理方法、电子设备和存储介质
CN114978805B (zh) 基于低功耗蓝牙的指令同步方法及系统
US20230179312A1 (en) Time synchronization device, time synchronization system, and recording medium
US20230198650A1 (en) Method for synchronizing time in multiple time domains, and apparatus implementing the same method

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 17915760

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 17915760

Country of ref document: EP

Kind code of ref document: A1