WO2020198220A1 - Processor and interrupt controller - Google Patents

Processor and interrupt controller Download PDF

Info

Publication number
WO2020198220A1
WO2020198220A1 PCT/US2020/024451 US2020024451W WO2020198220A1 WO 2020198220 A1 WO2020198220 A1 WO 2020198220A1 US 2020024451 W US2020024451 W US 2020024451W WO 2020198220 A1 WO2020198220 A1 WO 2020198220A1
Authority
WO
WIPO (PCT)
Prior art keywords
interrupt
priority
threshold
circuitry
highest
Prior art date
Application number
PCT/US2020/024451
Other languages
French (fr)
Inventor
Chaojun ZHAO
Xiaoyan XIANG
Chen Chen
Taotao Zhu
Original Assignee
Alibaba Group Holding Limited
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 Alibaba Group Holding Limited filed Critical Alibaba Group Holding Limited
Priority to EP20776706.2A priority Critical patent/EP3948556A4/en
Publication of WO2020198220A1 publication Critical patent/WO2020198220A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • G06F13/26Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/4031Coupling between buses using bus bridges with arbitration
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • G06F9/4818Priority circuits therefor
    • 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
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution

Definitions

  • Processors can process interrupts from interrupt sources, such as an input/output
  • I/O (“I/O”) device or a timer.
  • processors can process interrupts by executing an interrupt service routine. Since processors need to process different interrupts from a plurality of interrupt sources, each interrupt can have its respective interrupt priority and interrupt vector. An interrupt with a higher interrupt priority needs to be processed first. At the same time, it is also evaluated whether an interrupt that has been waiting for a long time can be processed in real time to avoid occupying processor resources for too long. Therefore, how the processor can efficiently process various interrupts with different priorities when processing a plurality of interrupts is a major issue in the field of processors.
  • a processor resource of a low-priority interrupt can be preempted by a high-priority interrupt. If the low-priority interrupt does not release other resources required for a processing of the high-priority interrupt, a "deadlock" situation can take place where execution of the interrupt with a higher priority cannot be executed. Therefore, it is also important for processors to be capable of efficiently processing various interrupts with different priorities.
  • a new interrupt controller solution in a processor is needed to achieve a more efficient interrupt processing mode, so as to speed up interrupt responding and processing
  • Embodiments of the present disclosure provide an interrupt controller in a processor.
  • the interrupt controller comprises an interrupt sampling circuitry configured to receive one or more interrupts from one or more interrupt sources that are communicatively coupled to the interrupt controller; and an arbitration circuitry configured to select a to-be-responded interrupt from the received one or more interrupts, the arbitration circuitry comprising: a selection circuitry configured to select from the one or more interrupts a highest-priority interrupt that has a highest priority among the one or more interrupts; and a threshold comparison circuitry communicatively coupled to the selection circuitry, the threshold comparison circuitry configured to compare the priority of the highest-priority interrupt with a preset priority threshold, wherein the arbitration circuitry is configured to select the highest-priority interrupt as the to-be-responded interrupt in response to the threshold comparison circuitry determining that the priority of the highest-priority interrupt is higher than the preset priority threshold.
  • Embodiments of the present disclosure further provides method for a method for executing interrupts in a processor.
  • the method comprises: receiving one or more interrupts from one or more interrupt sources; selecting from the one or more interrupts a highest-priority interrupt that has a highest priority among the one or more interrupts; comparing the priority of the highest- priority interrupt with a preset priority threshold; and in response to a comparison that the priority of the highest-priority interrupt is higher than the preset priority threshold, selecting the highest- priority interrupt as a to-be-responded interrupt.
  • Embodiments of the present disclosure further provides a non-transitory computer readable medium that stores a set of instructions that is executable by one or more processors of an apparatus to cause the apparatus to initiate an instruction execution method for executing interrupts in a processor.
  • the method comprises: receiving one or more interrupts from one or more interrupt sources; selecting from the one or more interrupts a highest-priority interrupt that has a highest priority among the one or more interrupts; comparing the priority of the highest-priority interrupt with a preset priority threshold; and in response to a comparison that the priority of the highest- priority interrupt is higher than the preset priority threshold, selecting the highest-priority interrupt as a to-be-responded interrupt.
  • FIG. 1 is a schematic diagram of an example processor, according to some embodiments of the present disclosure.
  • FIG. 2 is a schematic diagram of an example interrupt controller, according to some embodiments of the present disclosure.
  • FIG. 3 is a schematic diagram of an example threshold clearing module, according to some embodiments of the present disclosure.
  • FIG. 4 is a schematic diagram of an example system on chip, according to some embodiments of the present disclosure.
  • FIG. 5 is a flowchart of an example method processing interrupts in a processor, according to some embodiments of the present disclosure.
  • FIG. 1 is a schematic diagram of an example processor, according to some embodiments of the present disclosure.
  • a processing system 190 includes a processor 100 and one or more interrupt sources 210.
  • interrupt sources 210 can be I/O devices, timers, or software-based interrupts.
  • interrupt sources 210 can be I/O devices, timers, or software-based interrupts.
  • Interrupt sources 210 can be communicatively coupled to processor 100. Interrupt sources 210 can generate various types of interrupts for processor 100 to process.
  • processor 100 can include a processor core 150 and an interrupt controller 200.
  • processor core 150 can further include an instruction processing device 110 and a processor resource 120.
  • Instruction processing device 110 can be an instruction processing component in processor 100. The content to be processed can include taking out instructions for decoding and executing a variety of decoded instructions.
  • instruction processing device 110 can also make responses in the interrupts.
  • instruction processing device 110 can change a program flow executed by the instructions in processor 100, and execute a corresponding interrupt handler.
  • instruction processing device 110 can be a logical division of the functions of processor 100.
  • instruction processing device 110 can include an instruction fetching unit 112, an instruction decoding unit 114, and an instruction executing unit 116.
  • instruction fetching unit 112, instruction decoding unit 114, or instruction executing unit 116 can include circuitries.
  • Instruction fetching unit 112 can fetch a to-be-executed instruction from an instruction storage region 130, and send the fetched instruction to instruction decoding unit
  • An instruction can include an operation code and an address code.
  • the operation code can indicate an operation to be executed.
  • the address code can indicate an address or content of an operation object when the operation code is executed.
  • Instruction decoding unit 114 can decode and analyze an instruction to determine an operation code of the instruction and determine the nature and method of the operation.
  • instruction decoding unit 114 can send the decoded instruction to instruction executing unit 116, and instruction executing unit 116 can execute the instruction.
  • instruction executing unit 116 can include a variety of execution units configured to execute special instructions. It is appreciated that the present disclosure is not limited to the specific form of the instruction executing units for executing the special instructions, and all instruction executing units 116 that can execute instructions are encompassed in the protection scope of the present disclosure.
  • instruction executing unit 116 can access processor resource
  • registers 120 including a variety of registers and a data storage region 140 during execution.
  • data can be acquired from these registers and data storage region 140, and an execution result can be written to the registers or a data storage space.
  • Processor core 150 can further include an interrupt processing module 152.
  • interrupt processing module 152 can include circuitries.
  • instruction processing device 110 can perform instruction processing.
  • instruction processing device 110 can change a program being executed currently in the processor and run an interrupt service routine corresponding to the external interrupt to process the interrupt.
  • processor core 150 when processor core 150 responds to an interrupt, processor
  • interrupt processing module 152 can process the above interrupt response through instruction processing device 110.
  • interrupt controller 200 can be communicatively coupled to processor core 150. Interrupt controller 200 can select a to-be-processed interrupt and send the to- be-processed interrupt to processor core 150 for processing. In some embodiments, each interrupt has a corresponding interrupt priority and corresponding interrupt vector. Processor 100 can determine an order to process interrupts according to interrupt priorities of the interrupts. In some embodiments, when a plurality of interrupts occur at the same time, a high-priority interrupt can be processed first. Processor 100 can also determine, according to interrupt vector of an interrupt, an interrupt service routine corresponding to the interrupt. For example, a base address of the interrupt service routine can be stored in an interrupt register of processor resource 120, and processor 100 can determine, according to the base address and the interrupt vector, an entry address
  • Processor 100 can then change the execution site
  • processor 100 e.g., the PC of the processor
  • FIG. 2 is a schematic diagram of an example interrupt controller, according to some embodiments of the present disclosure.
  • interrupt controller 200 can be communicatively coupled with a plurality of interrupt sources 210.
  • interrupt sources 210 can be I/O devices, timers, or software-based interrupts.
  • Interrupt controller 200 can acquire interrupts from the plurality of interrupt sources 210 and select an interrupt to be sent to processor core 150 (not shown on FIG. 2) for processing.
  • interrupt controller 200 can include an interrupt sampling unit
  • interrupt sampling unit 220 can include circuitries.
  • Interrupt sampling unit 220 can receive one or more interrupts of various types of interrupts from the plurality of interrupt sources 210 communicatively coupled to interrupt controller 200.
  • a clock of interrupt source 210 can be asynchronous with a clock of the processor.
  • Sampling unit 220 can synchronize external interrupt source 210 with the clock of the processor, and samples external interrupt source 210 to produce effective interrupt information.
  • interrupt source 210 has two different trigger properties: level trigger and edge trigger (or pulse trigger), which can be sampled and unified into one processing manner through interrupt sampling unit 220.
  • Arbitration unit 230 can select, from the various types of interrupts received from interrupt sampling unit 220, an interrupt to be sent to processor core 150 for responding.
  • arbitration unit 230 can include a selection module 232 and a threshold comparison module 234.
  • selection module 23 and threshold comparison module 234 can include circuitries.
  • Selection module 232 can select a highest-priority interrupt from the various types of interrupts it receives.
  • each interrupt can have preconfigured interrupt information.
  • the preconfigured interrupt information can include an interrupt priority and an interrupt vector.
  • the preconfigured interrupt information can be stored in an interrupt configuring unit 240 of interrupt controller 200.
  • Interrupt information (including interrupt priorities and interrupt processing states) of the various types of interrupts can be stored in interrupt configuring unit 240.
  • An interrupt priority of an interrupt can be configured in interrupt configuring unit 240, so that processor 100 can schedule a responding process on the interrupt according to the interrupt priority.
  • the interrupt can have a plurality of processing states, including interrupt pending, interrupt active, etc.
  • the interrupt pending state indicates that the interrupt has been generated by interrupt source 210 and received by interrupt sampling unit 220 but has not been responded to or processed by processor core 150.
  • the interrupt active state indicates that the interrupt has been received by interrupt sampling unit 220 and processed by processor core 150, but the interrupt has not finished processing.
  • the interrupt can be currently processed in processor core
  • processor core 150 or processor core 150 first executes a high-priority interrupt due to interrupt nesting and the interrupt has been temporarily suspended.
  • the interrupt nesting means that processor core 150 receives a new interrupt with a higher priority when processing an interrupt with a lower priority.
  • processor core 150 can suspend the processing on the interrupt with the lower priority, store the site of the interrupt (e.g., a current program counter PC and content of a related register), and start performing processing corresponding to the interrupt with a higher priority.
  • site of the interrupt e.g., a current program counter PC and content of a related register
  • start performing processing corresponding to the interrupt with a higher priority when there are many levels involved in interrupt nesting, a lot of resources of the processor can be consumed due to storage of more interrupt information.
  • interrupt configuring unit 240 can store configuration information of the various interrupts using registers. States of the various interrupts can be modified by changing values of the registers corresponding to the interrupts.
  • enable bits of the various interrupts can also be stored in interrupt configuring unit 240 to indicate whether the interrupt is adopted and processed.
  • Interrupt sampling unit 220 can decide, according to the value of the enable bit of each interrupt, whether to adopt the interrupt.
  • selection module 232 can select an interrupt with the highest priority according to the configuration information of the interrupts stored in interrupt configuring unit 240. In some embodiments, selection module 232 can select an interrupt with the highest priority from the interrupts in a pending state and the interrupts newly adopted by sampling unit
  • the interrupt processing state in interrupt configuring unit 240 can be modified to a pending state, and then selection module 232 can select an interrupt with the highest priority from all the interrupts that are in a pending state to perform subsequent processing.
  • the present disclosure is not limited to the specific form in which selection module 232 selects an interrupt, and all the manners in which a highest-priority interrupt can be selected from interrupts not processed by processor core 150 currently are encompassed in the protection scope of the present disclosure.
  • threshold comparison module 234 can be communicatively coupled to selection module 232 and compare the priority of the highest-priority interrupt with the highest priority selected by selection module 232 with a preset priority threshold.
  • Threshold comparison module 234 in arbitration unit 230 can set the priority threshold to shield interrupts having a lower priority from being sent to processor core 150 for responding and processing.
  • the priority threshold can be cleared by not setting the value of the priority threshold, or by setting the priority threshold to an invalid value
  • a corresponding enable bit can be set to indicate whether threshold comparison module 234 is disabled. For example, when arbitration unit 230 outputs an interrupt with the highest priority without the need for priority threshold comparison, the enable bit can be set so that threshold comparison module 234 is disabled. In some embodiments, the priority threshold can be set to the lowest priority value, so that the priorities of all the interrupts can be higher than the priority threshold, and threshold comparison module 234 is practically disabled.
  • the priority threshold can be stored in a threshold register 250 and can be configured and modified.
  • the present disclosure is not limited to the specific storage form of the priority threshold, and all the manners capable of reading and modifying the priority threshold are encompassed in the protection scope of the present disclosure.
  • arbitration unit 230 can also include a threshold setting module 238 and a threshold clearing module 239.
  • threshold setting module 238 can also include a threshold setting module 238 and a threshold clearing module 239.
  • Threshold setting module 238 can be configured to set the priority threshold
  • threshold clearing module 239 can be configured to clear the priority threshold.
  • threshold clearing module 239 can automatically trigger the clearing of the priority threshold when a predetermined condition is met.
  • threshold clearing module 239 can clear the priority threshold by setting the priority threshold to the lowest priority.
  • threshold clearing module 239 can clear the priority threshold by setting the priority threshold to an invalid value (e.g.,“NULL”).
  • Threshold comparison module 234 can be enabled by setting the priority threshold through threshold setting module 238, and threshold comparison module 234 can be disabled by allowing threshold clearing module 239 to automatically clear the priority threshold when a condition is met. By setting a priority threshold for an interrupt, the interrupt can be processed quickly without affecting the processing on other interrupts.
  • interrupt controller 200 can include an interrupt vector register 260.
  • Threshold setting module 238 can, when setting the priority threshold, store interrupt vector corresponding to the priority threshold in interrupt vector register 260. For example, in order to enable an interrupt having an interrupt vector of 16 and an interrupt priority of 2 to be processed as soon as possible, threshold setting module 238 can set the priority threshold as 2 to prevent interrupts having a priority higher than or equal to the threshold of 2 from being sent to the processor core 150 for processing. At the same time, threshold setting module 238 can store the interrupt vector of 16 in interrupt vector register 260.
  • threshold clearing module 239 can acquire an interrupt vector of the current interrupt from processor core 150 and clear the priority threshold if the interrupt vector is equal to the interrupt vector stored in interrupt vector register 160, so that threshold comparison module 234 is disabled.
  • interrupt controller 200 can include a priority register 270.
  • Threshold setting module 238 can, when setting the priority threshold, store an interrupt priority of an interrupt that is to be processed first but has a priority not higher than the priority threshold in priority register 270. For example, to enable an interrupt having an interrupt priority of 2 to be processed as soon as possible, threshold setting module 238 can set the priority threshold as 2 to prevent interrupts having a priority higher than or equal to the threshold of 2 from being sent to processor core 150 for processing. At the same time, threshold setting module 238 can store the interrupt priority of 2 in priority register 270.
  • threshold clearing module 239 can acquire an interrupt priority of the current interrupt from processor core 150 and clear the priority threshold if the interrupt priority is equal to the interrupt priority stored in priority register 160, so that threshold comparison module 234 is disabled.
  • an interrupt return instruction can be executed when processor core 150 intends to complete processing on an interrupt.
  • Interrupt controller 200 or threshold clearing module 239 can be triggered when processor core 150 executes the interrupt return instruction, and can acquire an interrupt priority or an interrupt vector of an interrupt being executed currently from processor core 150.
  • threshold clearing module 239 can acquire, by reading a certain register in processor core 150, an interrupt priority or an interrupt vector of an interrupt being executed currently.
  • threshold clearing module 239 can clear the priority threshold at this point.
  • threshold clearing module 239 can determine whether there is interrupt nesting by reviewing interrupt processing states of the various interrupts stored in interrupt configuring unit 240.
  • the interrupt processing states of the various interrupts can indicate whether the corresponding interrupts have been responded to or the corresponding interrupts are being processed by processor core 150.
  • threshold clearing module 239 can clear the priority threshold accordingly.
  • threshold setting module 238 can be configured to set a priority threshold for an interrupt that is currently being responded to and processed by processor core 150, therefore preventing an interrupt having a higher interrupt priority from being responded to by processor core 150. As a result, threshold setting module 238 can set the interrupt priority of the interrupt currently being processed as the priority threshold to enable threshold comparison module 234.
  • threshold setting module 238 can set the priority threshold according to interrupt processing information of the various interrupts stored in interrupt configuring unit 240. Threshold setting module 238 can select an interrupt, for which a priority threshold needs to be set, from interrupts of which the interrupt processing states are interrupt active. Threshold setting module 238 can also set the priority threshold as the priority of the selected interrupt.
  • FIG. 3 is a schematic diagram of an example threshold clearing module according to some embodiments of the present disclosure.
  • FIG. 3 shows a logical implementation 300 of threshold clearing module 239. It is appreciated that logical implementation 300 shown in FIG. 3 can be a part of threshold clearing module 239 of FIG. 2.
  • a comparator 310 can compare a priority or an interrupt vector of the interrupt being processed in processor core 150 with a value in priority register 270 or interrupt vector register 260.
  • An“AND” gate 320 can perform an“AND” operation on an output from comparator 310 and the interrupt return instruction of the processor.
  • An“OR” gate 330 can receive an output of“AND” gate 320 and an indicator of interrupt nesting, and“OR” gate 330 can output to a 2-to-l multiplexer 340 as a control input to multiplexer 340.
  • multiplexer 340 can select a value of the lowest priority as the priority threshold when the output of“OR” gate 330 is 1, thus clearing the priority threshold. As a result, threshold comparison module 234 can be disabled.
  • an indicated value of interruption nesting can indicate that there is no interruption nesting (e.g., a value of 1) or the output of“AND” gate 320 can be 1.
  • the output of“AND” gate 320 is 1 only if the priority or interrupt vector of the interrupt being processed is equal to the value in priority register 270 or interrupt vector register
  • threshold clearing module 239 when there is no interrupt nesting, threshold clearing module 239 can clear the priority threshold to disable threshold comparison module 234. When there is interrupt nesting, threshold clearing module 239 may also clear the priority threshold to disable threshold comparison module 234 when the processing on the interrupt is completed (e.g., the processor executes the interrupt return instruction) and the priority or interrupt vector of the interrupt being processed is the value in priority register 270 or interrupt vector register 260.
  • arbitration unit 230 can further include a priority comparison module 236.
  • priority comparison module 236 can include circuitries.
  • Priority comparison module 236 can be communicatively coupled to selection module 232 and compare the priority of the highest-priority interrupt selected by selection module 232 with the priority of the interrupt being processed currently in processor core 150. In some embodiments, when the priority of the highest-priority interrupt is higher than the priority of the interrupt being processed currently, priority comparison module 236 determines that the highest-priority interrupt can be selected as an interrupt to be responded to by processor core 150.
  • Arbitration unit 230 can determine, according to the comparison results of threshold comparison module 234 and priority comparison module 236, whether to send the highest-priority interrupt to processor core 150. In some embodiments, arbitration unit 230 can send the selected highest-priority interrupt to the processor core for processing only when threshold comparison module 234 determines that the priority of the highest-priority interrupt is higher than the priority threshold and priority comparison module 236 determines that the priority of the highest-priority interrupt is higher than the priority of the interrupt being processed currently.
  • the present disclosure is not limited to the comparison order of threshold comparison module 234 and priority comparison module 236, and all the manners in which the comparison results of threshold comparison module 234 and priority comparison module 236 can be taken into account together are encompassed in the protection scope of the present disclosure.
  • processor core 150 can receive an interrupt output by interrupt controller 200.
  • processor core 150 is processing an interrupt and an interrupt priority of the interrupt output by interrupt controller 200 is higher than a priority of the interrupt being processed by processor core 150, the processing on the current interrupt can be suspended, and processing on the interrupt selected by interrupt controller 150 can start, resulting in interrupt nesting.
  • priority comparison module 236 in arbitration module 230 is disabled or arbitration module 230 does not include priority comparison module 236, if it is possible that the interrupt priority of the interrupt output by interrupt controller 200 is not higher than that of the interrupt being processed in processor core 150, processor core 150 does not process the interrupt selected by interrupt controller 200 and sets the interrupt processing state of the interrupt as pending, so that interrupt controller 200 subsequently re-attempts to send the interrupt to processor core 150 for processing.
  • FIG. 4 is a schematic diagram of an example system on chip, according to some embodiments of the present disclosure. As shown in FIG. 4, system on chip 400 can include processor 100 described with reference to FIG. 1, interrupt sources 210 described with reference to
  • system on chip 400 can be integrated on a circuit board to constitute a relatively complete processing system.
  • Interrupt sources 210 can be, for example, a variety of peripheral interfaces. Interrupt sources 210 can be configured to receive an external input and output the processed output of processor 100.
  • Storage space 430 can provide an external storage space for processor 100 to store codes to be executed by processor 100 and a variety of output data generated.
  • Co-processor 440 can be a dedicated processor configured to perform specialized processing tasks, such as image processing.
  • FIG. 5 is a flowchart of an example method processing interrupts in a processor, according to some embodiments of the present disclosure.
  • an interrupt processing method 500 can be performed in processing system 190 of FIG. 1, or interrupt controller 200 of FIG. 2. It is appreciated that some steps in method 500 have been described in the steps of processing system 190 and interrupt controller 200 in FIG. 1 and FIG. 2 and will not be repeated here.
  • step S510 one or more interrupts are received from one or more interrupt sources.
  • the one or more interrupts can be of different types, and the one or more interrupt sources can be I/O devices, clocks, or software-based interrupts. In some embodiments, the one or more interrupt sources are similar to interrupt sources 210 of FIG. 1 or FIG. 2.
  • step S520 a highest-priority interrupt with a highest priority from the one or more interrupts is selected. It is appreciated that step S520 can be executed through interrupt controller
  • a preset priority threshold is set.
  • setting the preset priority threshold includes storing an interrupt vector corresponding to the priority threshold in an interrupt vector register (e.g., interrupt vector register 260 of FIG. 2), or storing an interrupt priority of a to-be-processed interrupt having a priority not higher than a threshold in a priority register (priority register 270 of FIG. 2). It is appreciated that step S530 can be executed through interrupt controller 200 of FIG. 1 and FIG. 2 or threshold setting module 238 of FIG. 2.
  • step S540 in response to the processor executing an interrupt return instruction, it is determined if the processing on the current interrupt is completed. It is appreciated that step S540 can be executed through interrupt controller 200 of FIG. 1 and FIG. 2 or arbitration unit 230 of
  • step S550 in response to a determination that the processing on the current interrupt is completed, an interrupt vector of the current interrupt or an interrupt priority of the current interrupt is acquired. It is appreciated that step S550 can be executed through interrupt controller 200 of FIG. 1 and FIG. 2 or arbitration unit 230 of FIG. 2.
  • step S560 the priority of the highest priority interrupt is compared with a preset priority threshold. It is appreciated step S560 can be executed through interrupt controller 200 of FIG. 1 and FIG. 2 or arbitration unit 230 of FIG. 2.
  • step S570 in response to a comparison from step S560 that the priority of the highest-priority interrupt is higher than the preset priority threshold, the highest-priorily interrupt is selected as a to-be-responded interrupt. It is appreciated step S570 can be executed through interrupt controller 200 of FIG. 1 and FIG. 2 or arbitration unit 230 of FIG. 2.
  • step S580 the interrupt vector of the current interrupt is compared with the interrupt vector stored in the interrupt vector register, or the interrupt priority of the current interrupt is compared with the interrupt priority stored in the priority register. It is appreciated that step S580 can be executed through interrupt controller 200 of FIG. 1 and FIG. 2 or arbitration unit
  • step S590 in response to the comparison in step S580 that the interrupt vector of the current interrupt is same as the interrupt vector stored in the interrupt vector register, or the interrupt priority of the current interrupt is same as the interrupt priority stored in the priority register, the priority threshold is cleared.
  • an extra condition is included in step S590, and the extra condition is a determination that the processing of the current interrupt is completed. It is appreciated that step S590 can be executed through interrupt controller 200 of FIG. 1 and FIG. 2 or threshold clearing module 239 of FIG. 2.
  • a computer-readable medium may include removeable and nonremovable storage devices including, but not limited to, Read Only Memory, Random Access
  • program modules may include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types.
  • Computer-executable instructions, associated data structures, and program modules represent examples of program code for executing steps of the methods disclosed herein. The particular sequence of such executable instructions or associated data structures represents examples of corresponding acts for implementing the functions described in such steps or processes.
  • the term“or” encompasses all possible combinations, except where infeasible.
  • a database may include A or B, then, unless specifically stated otherwise or infeasible, the database may include A, or B, or A and B.
  • the database may include A, B, or C, then, unless specifically stated otherwise or infeasible, the database may include A, or B, or C, or A and
  • An interrupt controller in a processor comprising:
  • an interrupt sampling circuitry configured to receive one or more interrupts from one or more interrupt sources that are communicatively coupled to the interrupt controller
  • an arbitration circuitry configured to select a to-be-responded interrupt from the received one or more interrupts, the arbitration circuitry comprising:
  • a selection circuitry configured to select from the one or more interrupts a highest- priority interrupt that has a highest priority among the one or more interrupts;
  • threshold comparison circuitry communicatively coupled to the selection circuitry, the threshold comparison circuitry configured to compare the priority of the highest-priority interrupt with a preset priority threshold
  • arbitration circuitry is configured to select the highest-priority interrupt as the to-be-responded interrupt in response to the threshold comparison circuitry determining that the priority of the highest-priority interrupt is higher than the preset priority threshold.
  • arbitration circuitry further comprises: a threshold setting circuitry configured to set the preset priority threshold;
  • threshold clearing circuitry configured to clear the preset priority threshold. 3. The interrupt controller of clause 2, wherein the threshold clearing circuitry is further configured to:
  • the threshold setting circuitry in response to setting the preset priority threshold, is further configured to store an interrupt vector corresponding to the priority threshold in the interrupt vector register;
  • the threshold clearing circuitry is further configured to acquire an interrupt vector of an interrupt being currently processed in the processor as the interrupt vector of the current interrupt;
  • the threshold clearing circuitry is further configured to clear the priority threshold.
  • the threshold setting circuitry in response to setting the preset priority threshold, is further configured to store an interrupt priority of a to-be-processed interrupt having a priority not higher than a threshold in the priority register;
  • the threshold clearing circuitry is further configured to acquire an interrupt priority of an interrupt being processed in the processor as the interrupt priority of the current interrupt
  • the threshold clearing circuitry in response to a determination that the processing of the current interrupt is completed and a determination that the interrupt priority of the current interrupt is same as the interrupt priority stored in the priority register, the threshold clearing circuitry is further configured to clear the priority threshold. 6. The interrupt controller of any one of clauses 2-5, wherein the threshold clearing circuitry is further configured to clear the priority threshold in response to a determination that there is no interrupt nesting.
  • threshold setting circuitry is further configured to set an interrupt priority of one of the interrupts being currently processed as the priority threshold.
  • threshold clearing circuitry is further configured to clear the priority threshold by setting the priority threshold as a lowest interrupt priority.
  • an interrupt configuring circuitry configured to store interrupt priorities and interrupt processing states of the one or more interrupts, wherein:
  • the threshold clearing circuitry is further configured to determine, according to the interrupt priorities of the one or more interrupts stored in the interrupt configuring circuitry, whether there is interrupt nesting, and
  • the threshold setting circuitry is further configured to determine, according to the interrupt processing states of the one or more interrupts stored in the interrupt configuring circuitry, an interrupt being currently processed.
  • arbitration circuitry further comprises:
  • a priority comparison circuitry communicatively coupled to selection circuitry, the priority comparison circuitry configured to compare the priority of the highest-priority interrupt with the priority of an interrupt currently executed in the processor, wherein:
  • the arbitration circuitry is further configured to select the highest-priority interrupt as the to-be-responded interrupt in response to the threshold comparison circuitry determining that the priority of the highest-priority interrupt is higher than the set priority threshold and the priority comparison circuitry determining that the priority of the highest-priority intemipt is higher than the priority of the interrupt currently executed in the processor.
  • a processor comprising:
  • interrupt controller communicatively coupled with the processor core, the interrupt controller comprising:
  • an interrupt sampling circuitry configured to receive one or more interrupts from one or more interrupt sources that are communicatively coupled to the interrupt controller; and an arbitration circuitry configured to select a to-be-responded interrupt from the received one or more interrupts, the arbitration circuitry comprising:
  • a selection circuitry configured to select from the one or more interrupts a highest-priority interrupt that has a highest priority among the one or more interrupts
  • threshold comparison circuitry communicatively coupled to the selection circuitry, the threshold comparison circuitry configured to compare the priority of the highest-priority interrupt with a preset priority threshold
  • arbitration circuitry is configured to select the highest-priority interrupt as the to-be-responded interrupt in response to the threshold comparison circuitry determining that the priority of the highest-priority interrupt is higher than the preset priority threshold.
  • the processor core in response to a determination that an interrupt priority of the interrupt selected by the interrupt controller is higher than an interrupt priority of an interrupt being currently processed in the processor core, the processor core is configured to suspend processing of the interrupt being currently processed and start processing of the interrupt selected by the interrupt controller.
  • the processor core is configured to not process the interrupt selected by the interrupt controller in response to a determination that the interrupt priority of the interrupt selected by the interrupt controller is not higher than that of the interrupt being currently processed in the processor core.
  • a system on chip comprising:
  • a processor comprising:
  • interrupt controller communicatively coupled with the processor core, the interrupt controller comprising:
  • an interrupt sampling circuitry configured to receive one or more interrupts from one or more interrupt sources that are communicatively coupled to the interrupt controller
  • an arbitration circuitry configured to select a to-be-responded interrupt from the received one or more interrupts, the arbitration circuitry comprising:
  • a selection circuitry configured to select from the one or more interrupts a highest-priority interrupt that has a highest priority among the one or more interrupts
  • a threshold comparison circuitry communicatively coupled to the selection circuitry, the threshold comparison circuitry configured to compare the priority of the highest-priority interrupt with a preset priority threshold, wherein the arbitration circuitry is configured to select the highest- priority interrupt as the to-be-responded interrupt in response to the threshold comparison circuitry determining that the priority of the highest-priority interrupt is higher than the preset priority threshold, and one or more interrupt sources communicatively coupled to the processor, the one or more interrupt sources are configured to generate interrupts to be processed by the processor. 15.
  • a method for executing interrupts in a processor comprising: receiving one or more interrupts from one or more interrupt sources;
  • a non-transitory computer readable medium that stores a set of instructions that is executable by one or more processors of an apparatus to cause the apparatus to initiate an instruction execution method for executing interrupts in a processor, the method comprising:

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Bus Control (AREA)

Abstract

Embodiments of the present disclosure provide an interrupt controller in a processor, comprising: an interrupt sampling circuitry configured to receive one or more interrupts from one or more interrupt sources that are communicatively coupled to the interrupt controller; and an arbitration circuitry configured to select a to-be-responded interrupt from the received one or more interrupts, the arbitration circuitry comprising: a selection circuitry configured to select from the one or more interrupts a highest-priority interrupt that has a highest priority among the one or more interrupts; and a threshold comparison circuitry communicatively coupled to the selection circuitry, the threshold comparison circuitry configured to compare the priority of the highest-priority interrupt with a preset priority threshold, wherein the arbitration circuitry is configured to select the highest-priority interrupt as the to-be-responded interrupt in response to the threshold comparison circuitry determining that the priority of the highest-priority interrupt is higher than the preset priority threshold.

Description

PROCESSOR AND INTERRUPT CONTROLLER
CROSS REFERENCE TO RELATED APPLICATION
[001 ] This disclosure claims the benefits of priority to Chinese application number
201910238111.9, filed March 27, 2019, which is incorporated herein by reference in its entirety.
BACKGROUND
[002] Processors can process interrupts from interrupt sources, such as an input/output
(“I/O”) device or a timer. Processors can process interrupts by executing an interrupt service routine. Since processors need to process different interrupts from a plurality of interrupt sources, each interrupt can have its respective interrupt priority and interrupt vector. An interrupt with a higher interrupt priority needs to be processed first. At the same time, it is also evaluated whether an interrupt that has been waiting for a long time can be processed in real time to avoid occupying processor resources for too long. Therefore, how the processor can efficiently process various interrupts with different priorities when processing a plurality of interrupts is a major issue in the field of processors.
[003] In addition, a processor resource of a low-priority interrupt can be preempted by a high-priority interrupt. If the low-priority interrupt does not release other resources required for a processing of the high-priority interrupt, a "deadlock" situation can take place where execution of the interrupt with a higher priority cannot be executed. Therefore, it is also important for processors to be capable of efficiently processing various interrupts with different priorities. A new interrupt controller solution in a processor is needed to achieve a more efficient interrupt processing mode, so as to speed up interrupt responding and processing
SUMMARY
[004] Embodiments of the present disclosure provide an interrupt controller in a processor.
The interrupt controller comprises an interrupt sampling circuitry configured to receive one or more interrupts from one or more interrupt sources that are communicatively coupled to the interrupt controller; and an arbitration circuitry configured to select a to-be-responded interrupt from the received one or more interrupts, the arbitration circuitry comprising: a selection circuitry configured to select from the one or more interrupts a highest-priority interrupt that has a highest priority among the one or more interrupts; and a threshold comparison circuitry communicatively coupled to the selection circuitry, the threshold comparison circuitry configured to compare the priority of the highest-priority interrupt with a preset priority threshold, wherein the arbitration circuitry is configured to select the highest-priority interrupt as the to-be-responded interrupt in response to the threshold comparison circuitry determining that the priority of the highest-priority interrupt is higher than the preset priority threshold.
[005] Embodiments of the present disclosure further provides method for a method for executing interrupts in a processor. The method comprises: receiving one or more interrupts from one or more interrupt sources; selecting from the one or more interrupts a highest-priority interrupt that has a highest priority among the one or more interrupts; comparing the priority of the highest- priority interrupt with a preset priority threshold; and in response to a comparison that the priority of the highest-priority interrupt is higher than the preset priority threshold, selecting the highest- priority interrupt as a to-be-responded interrupt.
[006] Embodiments of the present disclosure further provides a non-transitory computer readable medium that stores a set of instructions that is executable by one or more processors of an apparatus to cause the apparatus to initiate an instruction execution method for executing interrupts in a processor. The method comprises: receiving one or more interrupts from one or more interrupt sources; selecting from the one or more interrupts a highest-priority interrupt that has a highest priority among the one or more interrupts; comparing the priority of the highest-priority interrupt with a preset priority threshold; and in response to a comparison that the priority of the highest- priority interrupt is higher than the preset priority threshold, selecting the highest-priority interrupt as a to-be-responded interrupt. BRIEF DESCRIPTION OF THE DRAWINGS
[007] FIG. 1 is a schematic diagram of an example processor, according to some embodiments of the present disclosure.
[008] FIG. 2 is a schematic diagram of an example interrupt controller, according to some embodiments of the present disclosure.
[009] FIG. 3 is a schematic diagram of an example threshold clearing module, according to some embodiments of the present disclosure.
[010] FIG. 4 is a schematic diagram of an example system on chip, according to some embodiments of the present disclosure.
[011] FIG. 5 is a flowchart of an example method processing interrupts in a processor, according to some embodiments of the present disclosure.
DETAILED DESCRIPTION
[012] To make the objectives, technical solutions and advantages of the embodiments of the present disclosure clearer, the technical solutions in the embodiments of the present disclosure are described below with reference to the accompanying drawings in the embodiments of the present disclosure. Obviously, the described embodiments are merely some rather than all of the embodiments of the present disclosure. Based on the embodiments in the present disclosure, all other embodiments obtained by those with ordinary skill in the art without creative efforts should fall within the protective scope of the present disclosure.
[013] FIG. 1 is a schematic diagram of an example processor, according to some embodiments of the present disclosure. As shown in FIG. 1, a processing system 190 includes a processor 100 and one or more interrupt sources 210. In some embodiments, interrupt sources 210 can be I/O devices, timers, or software-based interrupts. In some embodiments, interrupt sources
210 can be communicatively coupled to processor 100. Interrupt sources 210 can generate various types of interrupts for processor 100 to process. In some embodiments, processor 100 can include a processor core 150 and an interrupt controller 200. In some embodiments, processor core 150 can further include an instruction processing device 110 and a processor resource 120. Instruction processing device 110 can be an instruction processing component in processor 100. The content to be processed can include taking out instructions for decoding and executing a variety of decoded instructions. In some embodiments, instruction processing device 110 can also make responses in the interrupts. In addition, instruction processing device 110 can change a program flow executed by the instructions in processor 100, and execute a corresponding interrupt handler. In some embodiments, instruction processing device 110 can be a logical division of the functions of processor 100.
[014] In some embodiments, instruction processing device 110 can include an instruction fetching unit 112, an instruction decoding unit 114, and an instruction executing unit 116. In some embodiments, instruction fetching unit 112, instruction decoding unit 114, or instruction executing unit 116 can include circuitries. Instruction fetching unit 112 can fetch a to-be-executed instruction from an instruction storage region 130, and send the fetched instruction to instruction decoding unit
114.
[015] An instruction can include an operation code and an address code. The operation code can indicate an operation to be executed. The address code can indicate an address or content of an operation object when the operation code is executed. Instruction decoding unit 114 can decode and analyze an instruction to determine an operation code of the instruction and determine the nature and method of the operation.
[016] In some embodiments, instruction decoding unit 114 can send the decoded instruction to instruction executing unit 116, and instruction executing unit 116 can execute the instruction. In some embodiments, instruction executing unit 116 can include a variety of execution units configured to execute special instructions. It is appreciated that the present disclosure is not limited to the specific form of the instruction executing units for executing the special instructions, and all instruction executing units 116 that can execute instructions are encompassed in the protection scope of the present disclosure.
[017] In some embodiments, instruction executing unit 116 can access processor resource
120, including a variety of registers and a data storage region 140 during execution. For example, data can be acquired from these registers and data storage region 140, and an execution result can be written to the registers or a data storage space.
[018] Processor core 150 can further include an interrupt processing module 152. In some embodiments, interrupt processing module 152 can include circuitries. Interrupt processing module
152 can respond to an exteral interrupt while instruction processing device 110 can perform instruction processing. As a result, instruction processing device 110 can change a program being executed currently in the processor and run an interrupt service routine corresponding to the external interrupt to process the interrupt.
[019] In some embodiments, when processor core 150 responds to an interrupt, processor
150 can first store a current processor state and an execution site of the processor (e.g., a program counter PC of the processor). Further, processor 150 can acquire an entry address of the interrupt service routine according to interrupt information of the responded interrupt, and can be redirected to the address to start processing an interrupt task. After processing the interrupt task, processor core 150 can execute an interrupt return instruction, and the processor can restore the previously stored processor state and return to the previous execution site (the stored PC) to resume the execution. In some embodiments, interrupt processing module 152 can process the above interrupt response through instruction processing device 110.
[020] In some embodiments, interrupt controller 200 can be communicatively coupled to processor core 150. Interrupt controller 200 can select a to-be-processed interrupt and send the to- be-processed interrupt to processor core 150 for processing. In some embodiments, each interrupt has a corresponding interrupt priority and corresponding interrupt vector. Processor 100 can determine an order to process interrupts according to interrupt priorities of the interrupts. In some embodiments, when a plurality of interrupts occur at the same time, a high-priority interrupt can be processed first. Processor 100 can also determine, according to interrupt vector of an interrupt, an interrupt service routine corresponding to the interrupt. For example, a base address of the interrupt service routine can be stored in an interrupt register of processor resource 120, and processor 100 can determine, according to the base address and the interrupt vector, an entry address
corresponding to the interrupt service routine. Processor 100 can then change the execution site
(e.g., the PC of the processor) to point to the entry address, thus allowing processor 100 to execute the interrupt service routine.
[021] FIG. 2 is a schematic diagram of an example interrupt controller, according to some embodiments of the present disclosure. As shown in FIG. 2, interrupt controller 200 can be communicatively coupled with a plurality of interrupt sources 210. In some embodiments, interrupt sources 210 can be I/O devices, timers, or software-based interrupts. Interrupt controller 200 can acquire interrupts from the plurality of interrupt sources 210 and select an interrupt to be sent to processor core 150 (not shown on FIG. 2) for processing.
[022] As shown in FIG. 2, interrupt controller 200 can include an interrupt sampling unit
220 and an arbitration unit 230. In some embodiments, interrupt sampling unit 220 or arbitration unit 230 can include circuitries. Interrupt sampling unit 220 can receive one or more interrupts of various types of interrupts from the plurality of interrupt sources 210 communicatively coupled to interrupt controller 200. In some embodiments, a clock of interrupt source 210 can be asynchronous with a clock of the processor. Sampling unit 220 can synchronize external interrupt source 210 with the clock of the processor, and samples external interrupt source 210 to produce effective interrupt information. In addition, interrupt source 210 has two different trigger properties: level trigger and edge trigger (or pulse trigger), which can be sampled and unified into one processing manner through interrupt sampling unit 220.
[023] Arbitration unit 230 can select, from the various types of interrupts received from interrupt sampling unit 220, an interrupt to be sent to processor core 150 for responding. In some embodiments, arbitration unit 230 can include a selection module 232 and a threshold comparison module 234. In some embodiments, selection module 23 and threshold comparison module 234 can include circuitries. Selection module 232 can select a highest-priority interrupt from the various types of interrupts it receives. In some embodiments, each interrupt can have preconfigured interrupt information. The preconfigured interrupt information can include an interrupt priority and an interrupt vector.
[024] In some embodiments, the preconfigured interrupt information can be stored in an interrupt configuring unit 240 of interrupt controller 200. Interrupt information (including interrupt priorities and interrupt processing states) of the various types of interrupts can be stored in interrupt configuring unit 240. An interrupt priority of an interrupt can be configured in interrupt configuring unit 240, so that processor 100 can schedule a responding process on the interrupt according to the interrupt priority. In some embodiments, depending on how an interrupt is processed by the processor, the interrupt can have a plurality of processing states, including interrupt pending, interrupt active, etc. The interrupt pending state indicates that the interrupt has been generated by interrupt source 210 and received by interrupt sampling unit 220 but has not been responded to or processed by processor core 150. The interrupt active state indicates that the interrupt has been received by interrupt sampling unit 220 and processed by processor core 150, but the interrupt has not finished processing. For example, the interrupt can be currently processed in processor core
150, or processor core 150 first executes a high-priority interrupt due to interrupt nesting and the interrupt has been temporarily suspended.
[025] In some embodiments, the interrupt nesting means that processor core 150 receives a new interrupt with a higher priority when processing an interrupt with a lower priority. In this case, processor core 150 can suspend the processing on the interrupt with the lower priority, store the site of the interrupt (e.g., a current program counter PC and content of a related register), and start performing processing corresponding to the interrupt with a higher priority. In some embodiments, when there are many levels involved in interrupt nesting, a lot of resources of the processor can be consumed due to storage of more interrupt information.
[026] In some embodiments, interrupt configuring unit 240 can store configuration information of the various interrupts using registers. States of the various interrupts can be modified by changing values of the registers corresponding to the interrupts.
[027] In some embodiments, enable bits of the various interrupts can also be stored in interrupt configuring unit 240 to indicate whether the interrupt is adopted and processed. Interrupt sampling unit 220 can decide, according to the value of the enable bit of each interrupt, whether to adopt the interrupt.
[028] In some embodiments, selection module 232 can select an interrupt with the highest priority according to the configuration information of the interrupts stored in interrupt configuring unit 240. In some embodiments, selection module 232 can select an interrupt with the highest priority from the interrupts in a pending state and the interrupts newly adopted by sampling unit
220. In some embodiments, after each interrupt is sampled by sampling unit 220, the interrupt processing state in interrupt configuring unit 240 can be modified to a pending state, and then selection module 232 can select an interrupt with the highest priority from all the interrupts that are in a pending state to perform subsequent processing. The present disclosure is not limited to the specific form in which selection module 232 selects an interrupt, and all the manners in which a highest-priority interrupt can be selected from interrupts not processed by processor core 150 currently are encompassed in the protection scope of the present disclosure.
[029] In some embodiments, threshold comparison module 234 can be communicatively coupled to selection module 232 and compare the priority of the highest-priority interrupt with the highest priority selected by selection module 232 with a preset priority threshold. Arbitration unit
230 can select the highest-priority interrupt as an interrupt to be output to processor core 150 for responding and processing when threshold comparison module 234 determines that the priority of the highest-priority interrupt is higher than the priority threshold. Threshold comparison module 234 in arbitration unit 230 can set the priority threshold to shield interrupts having a lower priority from being sent to processor core 150 for responding and processing. As a result, when a plurality of interrupts are being processed in processor core 150 and interrupt nesting occurs, interrupts currently nested can be processed by processor core 150 first, so as to reduce the processor resource occupation caused by interrupt nesting.
[030] There can be several ways to clear the priority threshold so that threshold comparison module 234 is disabled. In some embodiments, the priority threshold can be cleared by not setting the value of the priority threshold, or by setting the priority threshold to an invalid value
(e.g.,“NULL”). In some embodiments, a corresponding enable bit can be set to indicate whether threshold comparison module 234 is disabled. For example, when arbitration unit 230 outputs an interrupt with the highest priority without the need for priority threshold comparison, the enable bit can be set so that threshold comparison module 234 is disabled. In some embodiments, the priority threshold can be set to the lowest priority value, so that the priorities of all the interrupts can be higher than the priority threshold, and threshold comparison module 234 is practically disabled.
[031] In some embodiments, the priority threshold can be stored in a threshold register 250 and can be configured and modified. The present disclosure is not limited to the specific storage form of the priority threshold, and all the manners capable of reading and modifying the priority threshold are encompassed in the protection scope of the present disclosure.
[032] In some embodiments, arbitration unit 230 can also include a threshold setting module 238 and a threshold clearing module 239. In some embodiments, threshold setting module
238 and threshold clearing module 239 can include circuitries. Threshold setting module 238 can be configured to set the priority threshold, and threshold clearing module 239 can be configured to clear the priority threshold. In some embodiments, threshold clearing module 239 can automatically trigger the clearing of the priority threshold when a predetermined condition is met. In some embodiments, threshold clearing module 239 can clear the priority threshold by setting the priority threshold to the lowest priority. In some embodiments, threshold clearing module 239 can clear the priority threshold by setting the priority threshold to an invalid value (e.g.,“NULL”). Threshold comparison module 234 can be enabled by setting the priority threshold through threshold setting module 238, and threshold comparison module 234 can be disabled by allowing threshold clearing module 239 to automatically clear the priority threshold when a condition is met. By setting a priority threshold for an interrupt, the interrupt can be processed quickly without affecting the processing on other interrupts.
[033] In some embodiments, interrupt controller 200 can include an interrupt vector register 260. Threshold setting module 238 can, when setting the priority threshold, store interrupt vector corresponding to the priority threshold in interrupt vector register 260. For example, in order to enable an interrupt having an interrupt vector of 16 and an interrupt priority of 2 to be processed as soon as possible, threshold setting module 238 can set the priority threshold as 2 to prevent interrupts having a priority higher than or equal to the threshold of 2 from being sent to the processor core 150 for processing. At the same time, threshold setting module 238 can store the interrupt vector of 16 in interrupt vector register 260.
[034] In some embodiments, when processor core 150 completes processing on a current interrupt, threshold clearing module 239 can acquire an interrupt vector of the current interrupt from processor core 150 and clear the priority threshold if the interrupt vector is equal to the interrupt vector stored in interrupt vector register 160, so that threshold comparison module 234 is disabled.
[035] In some embodiments, interrupt controller 200 can include a priority register 270.
Threshold setting module 238 can, when setting the priority threshold, store an interrupt priority of an interrupt that is to be processed first but has a priority not higher than the priority threshold in priority register 270. For example, to enable an interrupt having an interrupt priority of 2 to be processed as soon as possible, threshold setting module 238 can set the priority threshold as 2 to prevent interrupts having a priority higher than or equal to the threshold of 2 from being sent to processor core 150 for processing. At the same time, threshold setting module 238 can store the interrupt priority of 2 in priority register 270.
[036] In some embodiments, when processor core 150 completes processing on a current interrupt, threshold clearing module 239 can acquire an interrupt priority of the current interrupt from processor core 150 and clear the priority threshold if the interrupt priority is equal to the interrupt priority stored in priority register 160, so that threshold comparison module 234 is disabled.
[037] In some embodiments, an interrupt return instruction can be executed when processor core 150 intends to complete processing on an interrupt. Interrupt controller 200 or threshold clearing module 239 can be triggered when processor core 150 executes the interrupt return instruction, and can acquire an interrupt priority or an interrupt vector of an interrupt being executed currently from processor core 150. For example, threshold clearing module 239 can acquire, by reading a certain register in processor core 150, an interrupt priority or an interrupt vector of an interrupt being executed currently.
[038] In some embodiments, when interrupts in processor core 150 are not nested, it is unnecessary to set a priority threshold since there may be no interrupt or only one interrupt being processed in processor core 150. As a result, threshold clearing module 239 can clear the priority threshold at this point.
[039] In some embodiments, threshold clearing module 239 can determine whether there is interrupt nesting by reviewing interrupt processing states of the various interrupts stored in interrupt configuring unit 240. The interrupt processing states of the various interrupts can indicate whether the corresponding interrupts have been responded to or the corresponding interrupts are being processed by processor core 150. When only one interrupt or no interrupt is processed by processor core 150 according to the processing states of the various interrupts in interrupt configuring unit 240, it can be determined that there is no interrupt nesting at this time, and threshold clearing module 239 can clear the priority threshold accordingly. [040] In some embodiments, threshold setting module 238 can be configured to set a priority threshold for an interrupt that is currently being responded to and processed by processor core 150, therefore preventing an interrupt having a higher interrupt priority from being responded to by processor core 150. As a result, threshold setting module 238 can set the interrupt priority of the interrupt currently being processed as the priority threshold to enable threshold comparison module 234.
[041] In some embodiments, threshold setting module 238 can set the priority threshold according to interrupt processing information of the various interrupts stored in interrupt configuring unit 240. Threshold setting module 238 can select an interrupt, for which a priority threshold needs to be set, from interrupts of which the interrupt processing states are interrupt active. Threshold setting module 238 can also set the priority threshold as the priority of the selected interrupt.
[042] FIG. 3 is a schematic diagram of an example threshold clearing module according to some embodiments of the present disclosure. FIG. 3 shows a logical implementation 300 of threshold clearing module 239. It is appreciated that logical implementation 300 shown in FIG. 3 can be a part of threshold clearing module 239 of FIG. 2. As shown in FIG. 3, a comparator 310 can compare a priority or an interrupt vector of the interrupt being processed in processor core 150 with a value in priority register 270 or interrupt vector register 260. An“AND” gate 320 can perform an“AND” operation on an output from comparator 310 and the interrupt return instruction of the processor. An“OR” gate 330 can receive an output of“AND” gate 320 and an indicator of interrupt nesting, and“OR” gate 330 can output to a 2-to-l multiplexer 340 as a control input to multiplexer 340.
[043] In some embodiments, during execution of the logic circuit, multiplexer 340 can select a value of the lowest priority as the priority threshold when the output of“OR” gate 330 is 1, thus clearing the priority threshold. As a result, threshold comparison module 234 can be disabled.
To make the output of“OR" gate 330 be 1, an indicated value of interruption nesting can indicate that there is no interruption nesting (e.g., a value of 1) or the output of“AND” gate 320 can be 1. In some embodiments, the output of“AND” gate 320 is 1 only if the priority or interrupt vector of the interrupt being processed is equal to the value in priority register 270 or interrupt vector register
260 (e.g., the output of comparator 310 is 1 in this case) and there is a processor interrupt return instruction.
[044] In some embodiments, according to logical implementation 300 of threshold clearing module 239 in FIG. 3, when there is no interrupt nesting, threshold clearing module 239 can clear the priority threshold to disable threshold comparison module 234. When there is interrupt nesting, threshold clearing module 239 may also clear the priority threshold to disable threshold comparison module 234 when the processing on the interrupt is completed (e.g., the processor executes the interrupt return instruction) and the priority or interrupt vector of the interrupt being processed is the value in priority register 270 or interrupt vector register 260.
[045] Referring back to FIG. 2, in some embodiments, arbitration unit 230 can further include a priority comparison module 236. In some embodiments, priority comparison module 236 can include circuitries. Priority comparison module 236 can be communicatively coupled to selection module 232 and compare the priority of the highest-priority interrupt selected by selection module 232 with the priority of the interrupt being processed currently in processor core 150. In some embodiments, when the priority of the highest-priority interrupt is higher than the priority of the interrupt being processed currently, priority comparison module 236 determines that the highest-priority interrupt can be selected as an interrupt to be responded to by processor core 150.
[046] Arbitration unit 230 can determine, according to the comparison results of threshold comparison module 234 and priority comparison module 236, whether to send the highest-priority interrupt to processor core 150. In some embodiments, arbitration unit 230 can send the selected highest-priority interrupt to the processor core for processing only when threshold comparison module 234 determines that the priority of the highest-priority interrupt is higher than the priority threshold and priority comparison module 236 determines that the priority of the highest-priority interrupt is higher than the priority of the interrupt being processed currently.
[047] The present disclosure is not limited to the comparison order of threshold comparison module 234 and priority comparison module 236, and all the manners in which the comparison results of threshold comparison module 234 and priority comparison module 236 can be taken into account together are encompassed in the protection scope of the present disclosure.
[048] In some embodiments, processor core 150 can receive an interrupt output by interrupt controller 200. When processor core 150 is processing an interrupt and an interrupt priority of the interrupt output by interrupt controller 200 is higher than a priority of the interrupt being processed by processor core 150, the processing on the current interrupt can be suspended, and processing on the interrupt selected by interrupt controller 150 can start, resulting in interrupt nesting.
[049] In addition, when priority comparison module 236 in arbitration module 230 is disabled or arbitration module 230 does not include priority comparison module 236, if it is possible that the interrupt priority of the interrupt output by interrupt controller 200 is not higher than that of the interrupt being processed in processor core 150, processor core 150 does not process the interrupt selected by interrupt controller 200 and sets the interrupt processing state of the interrupt as pending, so that interrupt controller 200 subsequently re-attempts to send the interrupt to processor core 150 for processing.
[050] In some embodiments, after the priority threshold in threshold comparison module
234 is set using threshold setting module 238 and threshold clearing module 239 and after the interrupt processing state meets a predetermined condition, the priority threshold can be automatically cleared to disable threshold comparison module 234 immediately after the priority processing on the specific interrupt is completed, so that the interrupt processing can be performed more efficiently in the presence of interrupt nesting. [051] FIG. 4 is a schematic diagram of an example system on chip, according to some embodiments of the present disclosure. As shown in FIG. 4, system on chip 400 can include processor 100 described with reference to FIG. 1, interrupt sources 210 described with reference to
FIG. 1 and FIG. 2, a storage space 430, a co-processor 440, etc. In some embodiments, system on chip 400 can be integrated on a circuit board to constitute a relatively complete processing system.
Interrupt sources 210 can be, for example, a variety of peripheral interfaces. Interrupt sources 210 can be configured to receive an external input and output the processed output of processor 100.
Storage space 430 can provide an external storage space for processor 100 to store codes to be executed by processor 100 and a variety of output data generated. Co-processor 440 can be a dedicated processor configured to perform specialized processing tasks, such as image processing.
[052] Embodiments of the present disclosure further provides a method to process interrupts in a processor. FIG. 5 is a flowchart of an example method processing interrupts in a processor, according to some embodiments of the present disclosure. As shown in FIG. 5, an interrupt processing method 500 can be performed in processing system 190 of FIG. 1, or interrupt controller 200 of FIG. 2. It is appreciated that some steps in method 500 have been described in the steps of processing system 190 and interrupt controller 200 in FIG. 1 and FIG. 2 and will not be repeated here.
[053] In step S510, one or more interrupts are received from one or more interrupt sources.
In some embodiments, the one or more interrupts can be of different types, and the one or more interrupt sources can be I/O devices, clocks, or software-based interrupts. In some embodiments, the one or more interrupt sources are similar to interrupt sources 210 of FIG. 1 or FIG. 2.
[054] In step S520, a highest-priority interrupt with a highest priority from the one or more interrupts is selected. It is appreciated that step S520 can be executed through interrupt controller
200 of FIG. 1 and FIG. 2 or arbitration unit 230 of FIG. 2.
[055] In step S530, a preset priority threshold is set. In some embodiments, setting the preset priority threshold includes storing an interrupt vector corresponding to the priority threshold in an interrupt vector register (e.g., interrupt vector register 260 of FIG. 2), or storing an interrupt priority of a to-be-processed interrupt having a priority not higher than a threshold in a priority register (priority register 270 of FIG. 2). It is appreciated that step S530 can be executed through interrupt controller 200 of FIG. 1 and FIG. 2 or threshold setting module 238 of FIG. 2.
[056] In step S540, in response to the processor executing an interrupt return instruction, it is determined if the processing on the current interrupt is completed. It is appreciated that step S540 can be executed through interrupt controller 200 of FIG. 1 and FIG. 2 or arbitration unit 230 of
FIG. 2.
[057] In step S550, in response to a determination that the processing on the current interrupt is completed, an interrupt vector of the current interrupt or an interrupt priority of the current interrupt is acquired. It is appreciated that step S550 can be executed through interrupt controller 200 of FIG. 1 and FIG. 2 or arbitration unit 230 of FIG. 2.
[058] In step S560, the priority of the highest priority interrupt is compared with a preset priority threshold. It is appreciated step S560 can be executed through interrupt controller 200 of FIG. 1 and FIG. 2 or arbitration unit 230 of FIG. 2.
[059] In step S570, in response to a comparison from step S560 that the priority of the highest-priority interrupt is higher than the preset priority threshold, the highest-priorily interrupt is selected as a to-be-responded interrupt. It is appreciated step S570 can be executed through interrupt controller 200 of FIG. 1 and FIG. 2 or arbitration unit 230 of FIG. 2.
[060] In step S580, the interrupt vector of the current interrupt is compared with the interrupt vector stored in the interrupt vector register, or the interrupt priority of the current interrupt is compared with the interrupt priority stored in the priority register. It is appreciated that step S580 can be executed through interrupt controller 200 of FIG. 1 and FIG. 2 or arbitration unit
230 of FIG. 2.
[061] In step S590, in response to the comparison in step S580 that the interrupt vector of the current interrupt is same as the interrupt vector stored in the interrupt vector register, or the interrupt priority of the current interrupt is same as the interrupt priority stored in the priority register, the priority threshold is cleared. In some embodiments, an extra condition is included in step S590, and the extra condition is a determination that the processing of the current interrupt is completed. It is appreciated that step S590 can be executed through interrupt controller 200 of FIG. 1 and FIG. 2 or threshold clearing module 239 of FIG. 2.
[062] The various example embodiments described herein are described in the general context of method steps or processes, which may be implemented in one aspect by a computer program product, embodied in a computer-readable medium, including computer-executable instructions, such as program code, executed by computers to program the processors (e.g., processor 100 and processor 200). A computer-readable medium may include removeable and nonremovable storage devices including, but not limited to, Read Only Memory, Random Access
Memory, compact discs (CDs), digital versatile discs (DVD), etc. Generally, program modules may include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Computer-executable instructions, associated data structures, and program modules represent examples of program code for executing steps of the methods disclosed herein. The particular sequence of such executable instructions or associated data structures represents examples of corresponding acts for implementing the functions described in such steps or processes.
[063] In the foregoing specification, embodiments have been described with reference to numerous specific details that can vary from implementation to implementation. Certain
adaptations and modifications of the described embodiments can be made. Other embodiments can be apparent to those skilled in the art from consideration of the specification and practice of the embodiments disclosed herein. It is intended that the specification and examples be considered as exemplary only, with a true scope and spirit of the invention being indicated by the following claims. It is also intended that the sequence of steps shown in figures are only for illustrative purposes and are not intended to be limited to any particular sequence of steps. As such, those skilled in the art can appreciate that these steps can be performed in a different order while implementing the same method.
[064] As used herein, unless specifically stated otherwise, the term“or” encompasses all possible combinations, except where infeasible. For example, if it is stated that a database may include A or B, then, unless specifically stated otherwise or infeasible, the database may include A, or B, or A and B. As a second example, if it is stated that a database may include A, B, or C, then, unless specifically stated otherwise or infeasible, the database may include A, or B, or C, or A and
B, or A and C, or B and C, or A and B and C.
[065] The embodiments may further be described using the following clauses:
1. An interrupt controller in a processor, comprising:
an interrupt sampling circuitry configured to receive one or more interrupts from one or more interrupt sources that are communicatively coupled to the interrupt controller; and
an arbitration circuitry configured to select a to-be-responded interrupt from the received one or more interrupts, the arbitration circuitry comprising:
a selection circuitry configured to select from the one or more interrupts a highest- priority interrupt that has a highest priority among the one or more interrupts; and
a threshold comparison circuitry communicatively coupled to the selection circuitry, the threshold comparison circuitry configured to compare the priority of the highest-priority interrupt with a preset priority threshold,
wherein the arbitration circuitry is configured to select the highest-priority interrupt as the to-be-responded interrupt in response to the threshold comparison circuitry determining that the priority of the highest-priority interrupt is higher than the preset priority threshold.
2. The interrupt controller of clause 1, wherein the arbitration circuitry further comprises: a threshold setting circuitry configured to set the preset priority threshold; and
a threshold clearing circuitry configured to clear the preset priority threshold. 3. The interrupt controller of clause 2, wherein the threshold clearing circuitry is further configured to:
determine that processing on a current interrupt is completed in response to the processor executing an interrupt return instruction.
4. The interrupt controller of clause 3, further comprising an interrupt vector register, wherein:
in response to setting the preset priority threshold, the threshold setting circuitry is further configured to store an interrupt vector corresponding to the priority threshold in the interrupt vector register;
the threshold clearing circuitry is further configured to acquire an interrupt vector of an interrupt being currently processed in the processor as the interrupt vector of the current interrupt; and
in response to a determination that the processing of the current interrupt is completed and a determination that the interrupt vector of the current interrupt is same as the interrupt vector stored in the interrupt vector register, the threshold clearing circuitry is further configured to clear the priority threshold.
5. The interrupt controller of clause 3, further comprising a priority register, wherein:
in response to setting the preset priority threshold, the threshold setting circuitry is further configured to store an interrupt priority of a to-be-processed interrupt having a priority not higher than a threshold in the priority register;
the threshold clearing circuitry is further configured to acquire an interrupt priority of an interrupt being processed in the processor as the interrupt priority of the current interrupt; and
in response to a determination that the processing of the current interrupt is completed and a determination that the interrupt priority of the current interrupt is same as the interrupt priority stored in the priority register, the threshold clearing circuitry is further configured to clear the priority threshold. 6. The interrupt controller of any one of clauses 2-5, wherein the threshold clearing circuitry is further configured to clear the priority threshold in response to a determination that there is no interrupt nesting.
7. The interrupt controller of any one of clauses 2-6, wherein the threshold setting circuitry is further configured to set an interrupt priority of one of the interrupts being currently processed as the priority threshold.
8. The interrupt controller of any one of clauses 2-7, wherein the threshold clearing circuitry is further configured to clear the priority threshold by setting the priority threshold as a lowest interrupt priority.
9. The interrupt controller of any one of clauses 2-8, further comprising:
an interrupt configuring circuitry configured to store interrupt priorities and interrupt processing states of the one or more interrupts, wherein:
the threshold clearing circuitry is further configured to determine, according to the interrupt priorities of the one or more interrupts stored in the interrupt configuring circuitry, whether there is interrupt nesting, and
the threshold setting circuitry is further configured to determine, according to the interrupt processing states of the one or more interrupts stored in the interrupt configuring circuitry, an interrupt being currently processed.
10. The interrupt controller of any one of clauses 1-9, wherein the arbitration circuitry further comprises:
a priority comparison circuitry communicatively coupled to selection circuitry, the priority comparison circuitry configured to compare the priority of the highest-priority interrupt with the priority of an interrupt currently executed in the processor, wherein:
the arbitration circuitry is further configured to select the highest-priority interrupt as the to-be-responded interrupt in response to the threshold comparison circuitry determining that the priority of the highest-priority interrupt is higher than the set priority threshold and the priority comparison circuitry determining that the priority of the highest-priority intemipt is higher than the priority of the interrupt currently executed in the processor.
11. A processor, comprising:
a processor core; and
an interrupt controller communicatively coupled with the processor core, the interrupt controller comprising:
an interrupt sampling circuitry configured to receive one or more interrupts from one or more interrupt sources that are communicatively coupled to the interrupt controller; and an arbitration circuitry configured to select a to-be-responded interrupt from the received one or more interrupts, the arbitration circuitry comprising:
a selection circuitry configured to select from the one or more interrupts a highest-priority interrupt that has a highest priority among the one or more interrupts; and
a threshold comparison circuitry communicatively coupled to the selection circuitry, the threshold comparison circuitry configured to compare the priority of the highest-priority interrupt with a preset priority threshold,
wherein the arbitration circuitry is configured to select the highest-priority interrupt as the to-be-responded interrupt in response to the threshold comparison circuitry determining that the priority of the highest-priority interrupt is higher than the preset priority threshold.
12. The processor of clause 11, wherein:
in response to a determination that an interrupt priority of the interrupt selected by the interrupt controller is higher than an interrupt priority of an interrupt being currently processed in the processor core, the processor core is configured to suspend processing of the interrupt being currently processed and start processing of the interrupt selected by the interrupt controller. 13. The processor of clause 11 or 12, wherein the processor core is configured to not process the interrupt selected by the interrupt controller in response to a determination that the interrupt priority of the interrupt selected by the interrupt controller is not higher than that of the interrupt being currently processed in the processor core.
14. A system on chip, comprising:
a processor, comprising:
a processor core; and
an interrupt controller communicatively coupled with the processor core, the interrupt controller comprising:
an interrupt sampling circuitry configured to receive one or more interrupts from one or more interrupt sources that are communicatively coupled to the interrupt controller; and
an arbitration circuitry configured to select a to-be-responded interrupt from the received one or more interrupts, the arbitration circuitry comprising:
a selection circuitry configured to select from the one or more interrupts a highest-priority interrupt that has a highest priority among the one or more interrupts; and
a threshold comparison circuitry communicatively coupled to the selection circuitry, the threshold comparison circuitry configured to compare the priority of the highest-priority interrupt with a preset priority threshold, wherein the arbitration circuitry is configured to select the highest- priority interrupt as the to-be-responded interrupt in response to the threshold comparison circuitry determining that the priority of the highest-priority interrupt is higher than the preset priority threshold, and one or more interrupt sources communicatively coupled to the processor, the one or more interrupt sources are configured to generate interrupts to be processed by the processor. 15. A method for executing interrupts in a processor, the method comprising: receiving one or more interrupts from one or more interrupt sources;
selecting from the one or more interrupts a highest-priority interrupt that has a highest priority among the one or more interrupts;
comparing the priority of the highest-priority interrupt with a preset priority threshold; and in response to a comparison that the priority of the highest-priority interrupt is higher than the preset priority threshold, selecting the highest-priori ty interrupt as a to-be-responded interrupt.
16. The method of clause 15, further comprising:
setting the preset priority threshold;
determining that processing on a current interrupt is completed in response to the processor executing an interrupt return instruction; and
clearing the preset priority threshold.
17. The method of clause 16, further comprising:
in response to setting the preset priority threshold, storing an interrupt vector corresponding to the priority threshold in an interrupt vector register;
acquiring an interrupt vector of the current interrupt; and
in response to a determination that the processing of the current interrupt is completed and a determination that the interrupt vector of the current interrupt is same as the interrupt vector stored in the interrupt vector register, clearing the priority threshold.
18. The method of clause 17, further comprising:
in response to setting the preset priority threshold, storing an interrupt priority of a to-be- processed interrupt having a priority not higher than a threshold in a priority register;
acquiring an interrupt priority of the current interrupt; and
in response to a determination that the processing of the current interrupt is completed and a determination that the interrupt priority of the current interrupt is same as the interrupt priority stored in the priority register, clearing the priority threshold. 19. The method of any one of clauses 16-18, further comprising:
determining, according to the interrupt priorities of the one or more interrupts, whether there is interrupt nesting; and
clearing the priority threshold in response to a determination that there is no interrupt nesting.
20. A non-transitory computer readable medium that stores a set of instructions that is executable by one or more processors of an apparatus to cause the apparatus to initiate an instruction execution method for executing interrupts in a processor, the method comprising:
receiving one or more interrupts from one or more interrupt sources;
selecting from the one or more interrupts a highest-priority interrupt that has a highest priority among the one or more interrupts;
comparing the priority of the highest-priority interrupt with a preset priority threshold; and in response to a comparison that the priority of the highest-priority interrupt is higher than the preset priority threshold, selecting the highest-priority interrupt as a to-be-responded interrupt.
[066] In the drawings and specification, there have been disclosed exemplary
embodiments. Many variations and modifications, however, can be made to these embodiments.
Accordingly, although specific terms are employed, they are used in a generic and descriptive sense only and not for purposes of limitation, the scope of the embodiments being defined by the following claims.

Claims

WHAT IS CLAIMED IS:
1. An intermpt controller in a processor, comprising:
an interrupt sampling circuitry configured to receive one or more interrupts from one or more interrupt sources that are communicatively coupled to the interrupt controller; and
an arbitration circuitry configured to select a to-be-responded interrupt from the received one or more interrupts, the arbitration circuitry comprising:
a selection circuitry configured to select from the one or more interrupts a highest- priority interrupt that has a highest priority among the one or more interrupts; and
a threshold comparison circuitry communicatively coupled to the selection circuitry, the threshold comparison circuitry configured to compare the priority of the highest-priority interrupt with a preset priority threshold,
wherein the arbitration circuitry is configured to select the highest-priority interrupt as the to-be-responded interrupt in response to the threshold comparison circuitry determining that the priority of the highest-priority interrupt is higher than the preset priority threshold.
2. The interrupt controller of claim 1, wherein the arbitration circuitry further comprises: a threshold setting circuitry configured to set the preset priority threshold; and
a threshold clearing circuitry configured to clear the preset priority threshold.
3. The interrupt controller of claim 2, wherein the threshold clearing circuitry is further configured to:
determine that processing on a current interrupt is completed in response to the processor executing an interrupt return instruction.
4. The interrupt controller of claim 3, further comprising an interrupt vector register, wherein:
in response to setting the preset priority threshold, the threshold setting circuitry is further configured to store an interrupt vector corresponding to the priority threshold in the interrupt vector register;
the threshold clearing circuitry is further configured to acquire an interrupt vector of an interrupt being currently processed in the processor as the interrupt vector of the current interrupt; and
in response to a determination that the processing of the current interrupt is completed and a determination that the interrupt vector of the current interrupt is same as the interrupt vector stored in the interrupt vector register, the threshold clearing circuitry is further configured to clear the priority threshold.
5. The interrupt controller of claim 3, further comprising a priority register, wherein:
in response to setting the preset priority threshold, the threshold setting circuitry is further configured to store an interrupt priority of a to-be-processed interrupt having a priority not higher than a threshold in the priority register;
the threshold clearing circuitry is further configured to acquire an interrupt priority of an interrupt being processed in the processor as the interrupt priority of the current interrupt; and
in response to a determination that the processing of the current interrupt is completed and a determination that the interrupt priority of the current interrupt is same as the interrupt priority stored in the priority register, the threshold clearing circuitry is further configured to clear the priority threshold.
6. The interrupt controller of claim 2, wherein the threshold clearing circuitry is further configured to clear the priority threshold in response to a determination that there is no interrupt nesting.
7. The interrupt controller of claim 2, wherein the threshold setting circuitry is further configured to set an interrupt priority of one of the interrupts being currently processed as the priority threshold.
8. The interrupt controller of claim 2, wherein the threshold clearing circuitry is further configured to clear the priority threshold by setting the priority threshold as a lowest interrupt priority.
9. The interrupt controller of claim 2, further comprising:
an interrupt configuring circuitry configured to store interrupt priorities and interrupt processing states of the one or more interrupts, wherein:
the threshold clearing circuitry is further configured to determine, according to the interrupt priorities of the one or more interrupts stored in the interrupt configuring circuitry, whether there is interrupt nesting, and
the threshold setting circuitry is further configured to determine, according to the interrupt processing states of the one or more interrupts stored in the interrupt configuring circuitry, an interrupt being currently processed.
10. The interrupt controller of claims 1, wherein the arbitration circuitry further comprises: a priority comparison circuitry communicatively coupled to selection circuitry, the priority comparison circuitry configured to compare the priority of the highest-priority interrupt with the priority of an interrupt currently executed in the processor, wherein: the arbitration circuitry is further configured to select the highest-priority interrupt as the to-be-responded interrupt in response to the threshold comparison circuitry determining that the priority of the highest-priority interrupt is higher than the set priority threshold and the priority comparison circuitry determining that the priority of the highest-priority interrupt is higher than the priority of the interrupt currently executed in the processor.
11. A processor, comprising:
a processor core; and
an interrupt controller communicatively coupled with the processor core, the interrupt controller comprising:
an interrupt sampling circuitry configured to receive one or more interrupts from one or more interrupt sources that are communicatively coupled to the interrupt controller; and an arbitration circuitry configured to select a to-be-responded interrupt from the received one or more interrupts, the arbitration circuitry comprising:
a selection circuitry configured to select from the one or more interrupts a highest-priority interrupt that has a highest priority among the one or more interrupts; and
a threshold comparison circuitry communicatively coupled to the selection circuitry, the threshold comparison circuitry configured to compare the priority of the highest-priority interrupt with a preset priority threshold,
wherein the arbitration circuitry is configured to select the highest-priority interrupt as the to-be-responded interrupt in response to the threshold comparison circuitry determining that the priority of the highest-priority interrupt is higher than the preset priority threshold.
12. The processor of claim 11, wherein: in response to a determination that an interrupt priority of the interrupt selected by the interrupt controller is higher than an interrupt priority of an interrupt being currently processed in the processor core, the processor core is configured to suspend processing of the interrupt being currently processed and start processing of the interrupt selected by the interrupt controller.
13. The processor of claim 11, wherein the processor core is configured to not process the interrupt selected by the interrupt controller in response to a determination that the interrupt priority of the interrupt selected by the interrupt controller is not higher than that of the interrupt being currently processed in the processor core.
14. A system on chip, comprising:
a processor, compnsmg:
a processor core; and
an interrupt controller communicatively coupled with the processor core, the interrupt controller comprising:
an interrupt sampling circuitry configured to receive one or more interrupts from one or more interrupt sources that are communicatively coupled to the interrupt controller; and
an arbitration circuitry configured to select a to-be-responded interrupt from the received one or more interrupts, the arbitration circuitry comprising:
a selection circuitry configured to select from the one or more interrupts a highest-priority interrupt that has a highest priority among the one or more interrupts; and
a threshold comparison circuitry communicatively coupled to the selection circuitry, the threshold comparison circuitry configured to compare the priority of the highest-priority interrupt with a preset priority threshold, wherein the arbitration circuitry is configured to select the highest- priority interrupt as the to-be-responded interrupt in response to the threshold comparison circuitry determining that the priority of the highest-priority interrupt is higher than the preset priority threshold, and one or more interrupt sources communicatively coupled to the processor, the one or more interrupt sources are configured to generate interrupts to be processed by the processor.
15. A method for executing interrupts in a processor, the method comprising:
receiving one or more interrupts from one or more interrupt sources;
selecting from the one or more interrupts a highest-priority interrupt that has a highest priority among the one or more interrupts;
comparing the priority of the highest-priority interrupt with a preset priority threshold; and in response to a comparison that the priority of the highest-priority interrupt is higher than the preset priority threshold, selecting the highest-priority interrupt as a to-be-responded interrupt.
16. The method of claim 15, further comprising:
setting the preset priority threshold;
determining that processing on a current interrupt is completed in response to the processor executing an interrupt return instruction; and
clearing the preset priority threshold.
17. The method of claim 16, further comprising:
in response to setting the preset priority threshold, storing an interrupt vector corresponding to the priority threshold in an interrupt vector register;
acquiring an interrupt vector of the current interrupt; and in response to a determination that the processing of the current interrupt is completed and a determination that the interrupt vector of the current interrupt is same as the interrupt vector stored in the interrupt vector register, clearing the priority threshold.
18. The method of claim 17, further comprising:
in response to setting the preset priority threshold, storing an interrupt priority of a to-be- processed interrupt having a priority not higher than a threshold in a priority register;
acquiring an interrupt priority of the current interrupt; and
in response to a determination that the processing of the current interrupt is completed and a determination that the interrupt priority of the current interrupt is same as the interrupt priority stored in the priority register, clearing the priority threshold.
19. The method of claims 16, further comprising:
determining, according to the interrupt priorities of the one or more interrupts, whether there is interrupt nesting; and
clearing the priority threshold in response to a determination that there is no interrupt nesting.
20. A non-transitory computer readable medium that stores a set of instructions that is executable by one or more processors of an apparatus to cause the apparatus to initiate an instruction execution method for executing interrupts in a processor, the method comprising:
receiving one or more interrupts from one or more interrupt sources;
selecting from the one or more interrupts a highest-priority interrupt that has a highest priority among the one or more interrupts;
comparing the priority of the highest-priority interrupt with a preset priority threshold; and in response to a comparison that the priority of the highest-priority interrupt is higher than the preset priority threshold, selecting the highest-priority interrupt as a to-be-responded interrupt.
PCT/US2020/024451 2019-03-27 2020-03-24 Processor and interrupt controller WO2020198220A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
EP20776706.2A EP3948556A4 (en) 2019-03-27 2020-03-24 Processor and interrupt controller

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201910238111.9 2019-03-27
CN201910238111.9A CN111752877A (en) 2019-03-27 2019-03-27 Processor and interrupt controller therein

Publications (1)

Publication Number Publication Date
WO2020198220A1 true WO2020198220A1 (en) 2020-10-01

Family

ID=72607848

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2020/024451 WO2020198220A1 (en) 2019-03-27 2020-03-24 Processor and interrupt controller

Country Status (4)

Country Link
US (1) US11182318B2 (en)
EP (1) EP3948556A4 (en)
CN (1) CN111752877A (en)
WO (1) WO2020198220A1 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112559403B (en) * 2019-09-25 2024-05-03 阿里巴巴集团控股有限公司 Processor and interrupt controller therein
CN112286657A (en) * 2020-10-23 2021-01-29 海光信息技术股份有限公司 Electronic device and interrupt processing method
CN113419450A (en) * 2021-06-29 2021-09-21 北京猎户星空科技有限公司 Motor FOC control and operation method, device, electronic equipment and medium
GB2624384A (en) * 2022-11-15 2024-05-22 Advanced Risc Mach Ltd Exception signalling

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110016295A1 (en) * 2009-07-20 2011-01-20 Microchip Technology Incorporated Programmable exception processing latency
US20190050356A1 (en) * 2017-08-10 2019-02-14 Infineon Technologies Ag Virtual Machine Monitor Interrupt Support for Computer Processing Unit (CPU)

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4402042A (en) * 1980-11-24 1983-08-30 Texas Instruments Incorporated Microprocessor system with instruction pre-fetch
JPS63238630A (en) * 1987-03-26 1988-10-04 Toshiba Corp Interruption controller for microprocessor
US5410710A (en) * 1990-12-21 1995-04-25 Intel Corporation Multiprocessor programmable interrupt controller system adapted to functional redundancy checking processor systems
US5530804A (en) * 1994-05-16 1996-06-25 Motorola, Inc. Superscalar processor with plural pipelined execution units each unit selectively having both normal and debug modes
JPH10260849A (en) * 1997-03-19 1998-09-29 Mitsubishi Electric Corp Information processor and interrupt controlling method
JPH11184806A (en) * 1997-12-18 1999-07-09 Fujitsu Ltd Bus controller
US6807595B2 (en) * 2001-05-10 2004-10-19 Qualcomm Incorporated Mobile communication device having a prioritized interrupt controller
JP2003015886A (en) * 2001-07-05 2003-01-17 Nec Eng Ltd Interruption control circuit and interruption priority order changing system using the circuit
GB2396445B (en) * 2002-12-19 2005-12-21 Advanced Risc Mach Ltd An interrupt controller and interrupt controlling method for prioritizing interrupt requests generated by a plurality of interrupt sources
US20060112208A1 (en) * 2004-11-22 2006-05-25 International Business Machines Corporation Interrupt thresholding for SMT and multi processor systems
GB2462258B (en) * 2008-07-28 2012-02-08 Advanced Risc Mach Ltd Interrupt control for virtual processing apparatus
JP5512383B2 (en) * 2010-05-12 2014-06-04 ルネサスエレクトロニクス株式会社 Computer system
CN103019835A (en) * 2011-09-26 2013-04-03 同方股份有限公司 System and method for optimizing interruption resources in multi-core processor
WO2013145288A1 (en) * 2012-03-30 2013-10-03 富士通株式会社 Information processing device, virtual machine stop method and program
US9009368B2 (en) * 2012-10-23 2015-04-14 Advanced Micro Devices, Inc. Interrupt latency performance counters
US9075789B2 (en) * 2012-12-11 2015-07-07 General Dynamics C4 Systems, Inc. Methods and apparatus for interleaving priorities of a plurality of virtual processors
US9430421B2 (en) * 2014-03-12 2016-08-30 Arm Limited Interrupt signal arbitration
CN105095128B (en) * 2014-05-22 2020-04-03 中兴通讯股份有限公司 Interrupt processing method and interrupt controller
CN105094976A (en) * 2015-10-09 2015-11-25 天津国芯科技有限公司 Interrupt control method and interrupt controller
US11061857B2 (en) * 2016-01-26 2021-07-13 Huawei Technologies, Co., Ltd. Data processing method and device
CN105824768B (en) * 2016-03-15 2018-09-07 杭州中天微系统有限公司 A kind of vectored interrupt controller for supporting multilayer interrupt priority level to control
CN109376000B (en) * 2018-10-24 2022-02-15 芯来科技(武汉)有限公司 Quick interrupt control system and method for RISC-V architecture

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110016295A1 (en) * 2009-07-20 2011-01-20 Microchip Technology Incorporated Programmable exception processing latency
US20190050356A1 (en) * 2017-08-10 2019-02-14 Infineon Technologies Ag Virtual Machine Monitor Interrupt Support for Computer Processing Unit (CPU)

Also Published As

Publication number Publication date
EP3948556A4 (en) 2022-04-20
EP3948556A1 (en) 2022-02-09
US11182318B2 (en) 2021-11-23
CN111752877A (en) 2020-10-09
US20200311000A1 (en) 2020-10-01

Similar Documents

Publication Publication Date Title
US11182318B2 (en) Processor and interrupt controller
EP1685486B1 (en) Interrupt handling in an embedded multi-threaded processor to avoid priority inversion and maintain real-time operation
KR20210011451A (en) Embedded scheduling of hardware resources for hardware acceleration
EP3757771A1 (en) Methods, apparatuses, and media for processing loop instruction set
CN110678847A (en) Continuous analysis task for GPU task scheduling
US10248463B2 (en) Apparatus and method for managing a plurality of threads in an operating system
US9798582B2 (en) Low latency scheduling on simultaneous multi-threading cores
US11868780B2 (en) Central processor-coprocessor synchronization
CN113190427B (en) Method and device for monitoring blocking, electronic equipment and storage medium
US7805557B2 (en) Interrupt controller and method for handling interrupts
CN108241522B (en) Sleep state switching method and device in virtualization environment and electronic equipment
US6968410B2 (en) Multi-threaded processing of system management interrupts
CN110955503B (en) Task scheduling method and device
CN110851297A (en) Method, device, system and medium for processing interface jitter state
US11237994B2 (en) Interrupt controller for controlling interrupts based on priorities of interrupts
US20110161982A1 (en) Task Controlling A Multitask System
US11360702B2 (en) Controller event queues
CN112840309B (en) Command scheduling method, device and storage medium
CN109491771B (en) Task processing method based on system performance optimization and related equipment
US6112274A (en) Method and apparatus for processing more than one interrupts without reinitializing the interrupt handler program
US7984446B1 (en) Method and system for multitasking BIOS initialization tasks
KR101678607B1 (en) Method of processing a sensitive instruction by delaying a processing time and apparatus performing the same
US20150220465A1 (en) Speculative interrupt signalling
EP3131004A1 (en) Processor and method
CN112445587A (en) Task processing method and task processing device

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: 20776706

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

ENP Entry into the national phase

Ref document number: 2020776706

Country of ref document: EP

Effective date: 20211027