Shared interrupt control method and system for a digital signal processor

Techniques for the design and use of a digital signal processor, including (but not limited to) processing transmissions in a communications (e.g., CDMA) system. The disclosed method and system process interrupts arising in a multithreaded processor by receiving in an interrupt register a plurality of interrupts of a statistically indeterminate interrupt type and then associating a plurality of processing threads with the interrupt register for receiving the interrupt from the interrupt register. The method and system mask at least a subset of the plurality of processing threads so as to receive within each of the threads within the subset only ones of the plurality of interrupts of one or more predetermined types, thereby controlling on a per thread basis the processing of the plurality of interrupts according to the mask associated with a particular thread.

FIELD

The disclosed subject matter relates to data communications. More particularly, this disclosure relates to a novel and improved shared interrupt control method and system for a digital signal processor.

DESCRIPTION OF THE RELATED ART

Increasingly, electronic equipment and supporting software applications involve signal processing. Home theatre, computer graphics, medical imaging and telecommunications all rely on signal-processing technology. Signal processing requires fast math in complex, but repetitive algorithms. Many applications require computations in real-time, i.e., the signal is a continuous function of time, which must be sampled and converted to digital, for numerical processing. The processor must thus execute algorithms performing discrete computations on the samples as they arrive. The architecture of a digital signal processor (DSP) is optimized to handle such algorithms. The characteristics of a good signal processing engine include fast, flexible arithmetic computation units, unconstrained data flow to and from the computation units, extended precision and dynamic range in the computation units, dual address generators, efficient program sequencing, and ease of programming.

One promising application of DSP technology includes communications systems such as a code division multiple access (CDMA) system that supports voice and data communication between users over a satellite or terrestrial link. The use of CDMA techniques in a multiple access communication system is disclosed in U.S. Pat. No. 4,901,307, entitled “SPREAD SPECTRUM MULTIPLE ACCESS COMMUNICATION SYSTEM USING SATELLITE OR TERRESTRIAL REPEATERS,” and U.S. Pat. No. 5,103,459, entitled “SYSTEM AND METHOD FOR GENERATING WAVEFORMS IN A CDMA CELLULAR TELEHANDSET SYSTEM,” both assigned to the assignee of the claimed subject matter.

A CDMA system is typically designed to conform to one or more standards. One such first generation standard is the “TIA/EIA/IS-95 Terminal-Base Station Compatibility Standard for Dual-Mode Wideband Spread Spectrum Cellular System,” hereinafter referred to as the IS-95 standard. The IS-95 CDMA systems are able to transmit voice data and packet data. A newer generation standard that can more efficiently transmit packet data is offered by a consortium named “3rdGeneration Partnership Project” (3GPP) and embodied in a set of documents including Document Nos. 3G TS 25.211, 3G TS 25.212, 3G TS 25.213, and 3G TS 25.214, which are readily available to the public. The 3GPP standard is hereinafter referred to as the W-CDMA standard.

Because DSPs are intended for operation in real-time systems, efficient, sophisticated, and predictable interrupt handling is critical to a DSP. Context switches should be very fast. Advanced DSPs, like floating-point family support complete sets of alternative registers, allowing a single-cycle switch of context to support interrupt handling. An advanced DSP may support at least four or more independent external interrupts in addition to internal interrupts. Interrupt latency in such devices can be kept to just a few cycles and must be predictable. Interrupts should also be nestable and prioritizable. In addition, it should be easy to enable and disable particular interrupts in real time.

With known DSPs interrupt handling occurs on either a per-processor basis or, in the case of a multithreaded processor, a per-thread basis. In some multi-threaded DSPs both per-processor and per-thread interrupt handling may exist. Unfortunately, with either per-processor or per-thread processing, unnecessary and undesirable complexities in both hardware design and programming result. With both per-processor and per-thread handling, even more complexities may arise.

Accordingly, a need exists for a method and system for processing interrupts in a multi-threaded DSP that avoids per-processor and per-thread hardware design and software programming complexities.

SUMMARY

Techniques for providing a shared interrupt control method and system for a digital signal processor are disclosed, which techniques improve both the operation of a digital signal processor and the efficient use of digital signal processor instructions for processing increasingly robust software applications for personal computers, personal digital assistants, wireless handsets, and similar electronic devices, as well as increasing the associated digital processor speed and service quality.

According to one aspect of the disclosed subject matter, there is provided a shared interrupt control method and system for a digital signal processor that receives in an interrupt register a plurality of interrupts of a statistically indeterminate interrupt type. The method and system associate a plurality of processing threads with the interrupt register for receiving the interrupt from the interrupt register. Then, the plurality of processing threads are masked so as to receive within each of the threads only ones of the plurality of interrupts of one or more predetermined types, thereby controlling on a per thread basis the processing of the plurality of interrupts according to the mask associated with a particular thread.

According to another aspect of the disclosed subject matter, there is provided a method and system for processing an external interrupt in a digital signal processor serving multiple threads, which method and system include associating an interrupt controller with a plurality of processor pipeline threads. The process further receives a first external interrupt in the interrupt controller, the first external interrupt being of an arbitrary type. Then, the process associates a first mask with the first external interrupt for enabling a set of the plurality of processor pipeline threads to accept the first external interrupt. The disclose subject matter then directs the first external interrupt to a first available processor pipeline thread capable of accepting the first external interrupt and the first mask. The method and system then allow receiving a second external interrupt in the interrupt controller. The second external interrupt may be of an arbitrary type and associates a second mask with the second external interrupt for enabling a set of the plurality of processor pipeline threads to accept the second external interrupt. The second external interrupt is directed to a next available processor pipeline thread capable of accepting the second external interrupt and the second mask. This process may be repeated and the disclosed system permits repeating the receiving steps, the associating steps, and the directing steps as external interrupts stream to the interrupt controller for processing by the digital signal processor, thereby providing to each of the set of the plurality of processor pipeline threads a flow of arbitrary external interrupts and associated masks in a distributed flow.

These and other advantages of the disclosed subject matter, as well as additional novel features, will be apparent from the description provided herein. The intent of this summary is not to be a comprehensive description of the claimed subject matter, but rather to provide a short overview of some of the subject matter's functionality. Other systems, methods, features and advantages here provided will become apparent to one with skill in the art upon examination of the following FIGUREs and detailed description. It is intended that all such additional systems, methods, features and advantages be included within this description, be within the scope of the accompanying claims.

Another example embodiment of the present invention is directed to a computer usable medium having computer readable program code means embodied therein for processing instructions on digital signal processor, the computer usable medium including computer readable program code means for receiving in an interrupt register a plurality of interrupts of a statistically indeterminate interrupt type, computer readable program code means for associating a plurality of processing threads with said interrupt register for receiving said interrupt from said interrupt register, computer readable program code means for masking at least a subset of said plurality of processing threads so as to receive within each of said threads within said subset only ones of said plurality of interrupts of one or more predetermined types, thereby controlling on a per thread basis the processing of said plurality of interrupts according to the mask associated with a particular thread. In an example, the computer readable program code means for masking said at least a subset of said plurality of processing threads may use a mask selected from a programmable set of masks corresponding to a predetermined set of interrupt types.

DETAILED DESCRIPTION OF THE SPECIFIC EMBODIMENTS

The disclosed subject matter for a shared interrupt control method and system for digital signal processor has application literally in a digital signal processing application involving multi-thread processing of any type for which the benefits here presented may be advantageous. One such application appears in telecommunications and, in particular, in wireless handsets that employ one or more digital signal processing circuits. For the purpose of explaining how such a wireless handset may be used,FIG. 1provides a simplified block diagram of a communications system10that can implement the presented embodiments of the disclosed interrupt processing method and system. At a transmitter unit12, data is sent, typically in blocks, from a data source14to a transmit (TX) data processor16that formats, codes, and processes the data to generate one or more analog signals. The analog signals are then provided to a transmitter (TMTR)18that modulates, filters, amplifies, and up converts the baseband signals to generate a modulated signal. The modulated signal is then transmitted via an antenna20to one or more receiver units.

At a receiver unit22, the transmitted signal is received by an antenna24and provided to a receiver (RCVR)26. Within receiver26, the received signal is amplified, filtered, down converted, demodulated, and digitized to generate in phase (I) and (Q) samples. The samples are then decoded and processed by a receive (RX) data processor28to recover the transmitted data. The decoding and processing at receiver unit22are performed in a manner complementary to the coding and processing performed at transmitter unit12. The recovered data is then provided to a data sink30.

The signal processing described above supports transmissions of voice, video, packet data, messaging, and other types of communication in one direction. A bi-directional communications system supports two-way data transmission. However, the signal processing for the other direction is not shown inFIG. 1for simplicity. Communications system10can be a code division multiple access (CDMA) system, a time division multiple access (TDMA) communications system (e.g., a GSM system), a frequency division multiple access (FDMA) communications system, or other multiple access communications system that supports voice and data communication between users over a terrestrial link. In a specific embodiment, communications system10is a CDMA system that conforms to the W-CDMA standard.

FIG. 2illustrates DSP40architecture that may serve as the transmit data processor16and receive data processor28ofFIG. 1. One more, emphasis is made that DSP40only represents one embodiment among a great many of possible digital signal processor embodiments that may effectively use the teachings and concepts here presented. In DSP40, therefore, threads T0:T5(reference numerals42through52), contain sets of instructions from different threads. Circuit54represents the instruction access mechanism and is used for fetching instructions for threads T0:T5. Instructions for circuit54are queued into instruction queue56. Instructions in instruction queue56are ready to be issued into processor pipeline66(see below). From instruction queue56, a single thread, e.g., thread T0, may be selected by issue logic circuit58. Register file60of selected thread is read and read data is sent to execution data paths62for SLOT0through SLOT3. Slot0through SLOT3, in this example, provide for the packet grouping combination employed in the present embodiment.

Output from execution data paths62goes to register file write circuit64, also configured to accommodate individual threads T0:T5, for returning the results from the operations of DSP40. Thus, the data path from circuit54and before to register file write circuit64being portioned according to the various threads forms a processing pipeline66.

The present embodiment may employ a hybrid of a heterogeneous element processor (HEP) system using a single microprocessor with up to six threads, T0:T5. Processor pipeline66has six stages, matching the minimum number of processor cycles necessary to fetch a data item from circuit54to registers60and64. DSP40concurrently executes instructions of different threads T0:T5within a processor pipeline66. That is, DSP40provides six independent program counters, an internal tagging mechanism to distinguish instructions of threads T0:T5within processor pipeline66, and a mechanism that triggers a thread switch. Thread-switch overhead varies from zero to only a few cycles.

DSP40, therefore, provides a general-purpose digital signal processor designed for high-performance and low-power across a wide variety of signal, image, and video processing applications.FIG. 3provides a brief overview of the DSP40architecture, including some aspects of the associated instruction set architecture for one manifestation of the disclosed subject matter. Implementations of the DSP40architecture support interleaved multithreading (IMT). In this execution model, the hardware supports concurrent execution of multiple hardware threads T0:T5by interleaving instructions from different threads in the pipeline. This feature allows DSP40to include an aggressive clock frequency while still maintaining high core and memory utilization. IMT provides high throughput without the need for expensive compensation mechanisms such as out-of-order execution, extensive forwarding networks, and so on. Moreover, the DSP40may include variations of IMT, such as those variations and novel approaches disclosed in the commonly-assigned U.S. Patent Applications by M. Ahmed, et al, Ser. No. 11/080 239 and entitled “Variable Interleaved Multithreaded Processor Method and System” and Ser. No. 11/089.474 “Method and System for Variable Thread Allocation and Switching in a Multithreaded Processor.”

FIG. 3, in particular, provides an architecture block diagram of one embodiment of a programming model for a single thread that may employ the teachings of the disclosed subject matter, including a shared interrupt control method and system for a digital signal processor. Block diagram70depicts private instruction caches72which receive instructions from AXI Bus74, which instructions include mixed 16-bit and 32-bit instructions to sequencer76, user control register78, and supervisor control register80of threads T0:T5. Sequencer76provides hybrid two-way superscalar instructions and four-way VLIW instructions to S-Pipe unit82, M-Pipe unit84, Ld-Pipe86, and Ld/St- Pipe unit88. AXI Bus74also communicates with shared data cache90LD/ST instructions to threads T0:T5. With external DMA master96shared data TOM98communicates LD/ST instructions, which LD/ST instructions further flow to threads T0:T5. From AHB peripheral bus100MSM specific controller102communicates interrupt pins with T0:T5, including interrupt controller instructions, debugging instructions, and timing instructions. Global control registers102communicates control register instructions with threads T0:T5.

FIG. 4presents a functional block diagram of the event handling of the disclosure. In the event handler architecture ofFIG. 4, MSM specific blocks112include interrupt controller block114, debug and performance monitor block116, and timers block118. MSM specific blocks112provides sixteen (16) general interrupts120to global control register122and non-maskable interrupts (NMI)124to event handling register126. Global control register122includes IPEND register128, vector base register130, mode control register132. From IPEND Register128,16interrupt types129may go to event handling register126. Vector base register130may send20interrupts131to event handling register126, while mode control register132may provide a 1 .times.6 reset interrupt133to event handling register126.

Event handling register126includes interrupt mask (IMASK) register134, which provides masks data to process event register136. Process event register136also receives internal exception requests, including TLB miss, error, and trap instruction requests. From global control registers122communications occur with general instructions registers (R0-R31)90and supervisor control register80.

Therefore, interrupt processing with the disclosed subject matter includes three types of external interrupts, which include the soft reset interrupt133, general maskable interrupts120,129, and131, and the non-maskable interrupt124. There are 16 maskable general interrupts that are shared between all the threads. When one of the 16 general interrupts120is raised, the corresponding bit in the global IPEND register128is set indicating that this interrupt is pending. Threads determine if they are able to take an interrupt by logical ANDing the global IPEND register with the local IMASK register.

If a thread T0:T5(a) has interrupts enabled (IE=1) and (b) is not in an exception handler (EX=0), and (c) the result of (IPEND & IMASK) is non-zero, then an interrupt can be taken by that thread. The thread is then to be qualified to take the interrupt. In the case that more than one interrupt is pending, the priority is interrupt 0 (highest priority) to interrupt 15 (lowest priority). When a global interrupt comes in and is marked in the IPEND register, any of the six hardware threads may potentially service the interrupt. Of the set of hardware threads that are qualified for the interrupt, only one in the set will take the interrupt.

An important aspect of the disclosed subject matter benefits from the randomness of the qualified threads and maskable interrupts. That is, it cannot be determined which of the qualified threads will service the interrupt, because the process and the arrival of any given type of interrupt is random. The hardware will choose a thread from the qualified set, that thread will be interrupted, and the interrupt will then be cleared from IPEND register128so that no further threads will service that interrupt.

The software may direct particular interrupts to particular hardware threads with appropriate IMASK register134programming. For example, if only hardware thread T1:T5has the IMASK bit for interrupt6set, then only hardware thread T1:T5may receive that interrupt. When an interrupt is accepted by a thread, the machine will first clear the appropriate bit in IPEND register128. Interrupts will then be disabled for the chosen thread, the exception bit will be set to indicate the thread is now in supervisor mode, the cause field in SSR will be filled with the interrupt number, and the machine will jump to the appropriate interrupt service routine.

One embodiment ofFIG. 5shows a mask register format140for use with the disclosed subject matter, which includes IMASK bits0through15for containing the particular mask. Bits16through31may be reserved for the present embodiment, while permitting the establishment. Mask register140, therefore, contains 16-bit read/write field142for the mask allowing software to individually mask off each of the 16 external interrupts120from interrupt controller114. If a particular bit in the mask field142is set, then that corresponding interrupt of the 16 external interrupts120is enabled and will be accepted by this thread. Alternatively, if the bit is clear, then that corresponding interrupt will not be accepted.

FIG. 6presents an example of the IPEND register format150for one embodiment of the disclosed subject matter. In particular, IPEND register format150includes reserved field152, which may be filled in later versions and IPEND register bit field154for containing the general interrupt type bits. In IPEND register bit field154, bit0assumes a 1 value designating the highest priority interrupt type. The lowest priority interrupt type may be designated by bit15assuming the value 1. There may be other ways to designate different general interrupt types, all of which are consistent with the teaching of the claimed subject matter.

FIG. 7provides flow diagram160for illustrating certain novel functions of the disclosed subject matter in determining that a particular thread T0:T5may process a given interrupt type. Flow diagram160begins as step162, at which point interrupt controller114provides at least a subset of 16 general interrupt types120to IPEND register128of general control register122. At step164, IMASK register134may store one or more masks for associating with the various threads T0:T5of DSP40. Thus, with IPEND containing one or more general interrupt types120and IMASK register134potentially storing a corresponding mask, flow diagram160first determines whether thread interrupt processing is enabled for a particular thread at query166. Then, at query168, the process determines that the particular thread is not operating as an exception handler. At query170, after taking the logical AND of IPEND register128and IMASK register134a test of whether the result is non-zero occurs, thereby determining a match between the IPEND register128and IMASK register134contents. If a non-zero result occurs, then flow continues to step172at which the particular thread processes an interrupt corresponding to the particular mask. If the tests of any of queries166,168, or170fails, then processing goes to step174at which process flow160determines that the thread cannot process the interrupt(s) being examined.

Exemplary pseudo-code for performing one embodiment of the shared interrupt handling functions of the disclosed subject matter may be as here provided. The hardware behavior for servicing an interrupt is illustrated in the following pseudo-code:

The present embodiment may not support automatic nesting of interrupts in DSP40hardware. However, nesting may be performed under software control by first saving all relevant information to the supervisor stack upon receiving an interrupt. Then, the process may re-enable interrupts, perform the relevant ISR task, then disable interrupts, restore to context, and return. An example of such a process may be for following:

A software interrupt instruction (SWI) causes a specified interrupt to be posted in IPEND register128. The purpose of this instruction is to allow threads to interrupt one another. When one thread executes a SWI instruction, it is processed through the normal external interrupt mechanism. A random hardware thread from the set of qualified threads will be interrupted in response to the SWI instruction. This instruction can be used to construct software abstractions such as fork( ), join( ), etc.

The soft reset interrupt is non-maskable and operates on a per-thread basis. One reset interrupt input exists for each of the six threads. The subsystem interrupt controller can individually reset threads. The exact methods for triggering a soft reset interrupt to a particular thread are interrupt controller specific, however, one way to cause a soft reset exception is to invoke a transition from OFF mode on supervisor mode. Upon receiving the non-maskable soft reset interrupt, the thread will clear the SSR register, and jump to the reset vector.

In the case a non-maskable interrupt (NMI)124, event handling circuitry110may choose at random one of the six threads T0:T5and deliver the NMI124to that thread. The chosen thread then will perform the following actions:

ELR = PC // save PC in the exception link registerSSR[EX] = 1 // set exception bit in SSRSSR[CAUSE] = #NMI // set reason to NMIPC = (EVB) | (1<<2)
Note that any NMI124should not be considered a recoverable interrupt. If a thread T0:T5is inside an event handler and an NMI124occurs, the ELR and CAUSE registers will be overwritten making return to the original interrupt or exception-causing code impossible.

The processing features and functions described herein can be implemented in various manners. For example, not only may DSP40perform the above-described operations, but also the present embodiments may be implemented in an application specific integrated circuit (ASIC), a microcontroller, a microprocessor, or other electronic circuits designed to perform the functions described herein. The foregoing description of the preferred embodiments, therefore, is provided to enable any person skilled in the art to make or use the claimed subject matter. Various modifications to these embodiments will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other embodiments without the use of the innovative faculty. Thus, the claimed subject matter is not intended to be limited to the embodiments shown herein but is to be accorded the widest scope consistent with the principles and novel features disclosed herein.