Skip to main content

Priority Interrupts | (S/W Polling and Daisy Chaining)

Priority Interrupts | (S/W Polling and Daisy Chaining)



To summarize, when I/O devices are ready for I/O transfer, they generate an interrupt request signal to the computer. The CPU receives this signal, suspends the current instructions it is executing and then moves forward to service that transfer request. But what if multiple devices generate interrupts simultaneously. In that case, we have to have a way to decide which interrupt is to be serviced first. In other words, we have to set a priority among all the devices for systemic interrupt servicing.
The concept of defining the priority among devices so as to know which one is to be serviced first in case of simultaneous requests is called priority interrupt system. This could be done with either software or hardware methods.


SOFTWARE METHOD – POLLING

  In this method, all interrupts are serviced by branching to the same service program. This program then checks with each device if it is the one generating the interrupt. The order of checking is determined by the priority that has to be set. The device having the highest priority is checked first and then devices are checked in descending order of priority. If the device is checked to be generating the interrupt, another service program is called which works specifically for that particular device.
The structure will look something like this-

  • if (device[0].flag)
        device[0].service();
    else if (device[1].flag)
        device[1].service();
    .
    .
    .
    .
    .
    .
    else
        //raise error 
     
     
    
    
    The major disadvantage of this method is that it is quite slow. To 
    overcome this, we can use hardware solution, one of which involves 
    connecting the devices in series. This is called Daisy-chaining method.
     
     
     

    HARDWARE METHOD – DAISY CHAINING


      The daisy-chaining method involves connecting all the devices that can request an interrupt in a serial manner. This configuration is governed by the priority of the devices. The device with the highest priority is placed first followed by the second highest priority device and so on. The given figure depicts this arrangement. 

     WORKING:
    There is an interrupt request line which is common to all the devices and goes into the CPU.

    • When no interrupts are pending, the line is in HIGH state. But if any of the devices raises an interrupt, it places the interrupt request line in the LOW state.
    • The CPU acknowledges this interrupt request from the line and then enables the interrupt acknowledge line in response to the request.
    • This signal is received at the PI(Priority in) input of device 1.
    • If the device has not requested the interrupt, it passes this signal to the next device through its PO(priority out) output. (PI = 1 & PO = 1)
    • However, if the device had requested the interrupt, (PI =1 & PO = 0)
    1.  The device consumes the acknowledge signal and block its further use by placing 0 at its PO(priority out) output.
    2. The device then proceeds to place its interrupt vector address(VAD) into the data bus of CPU.
    3. The device puts its interrupt request signal in HIGH state to indicate its interrupt has been taken care of.

Comments

Popular posts from this blog

What is the difference between a direct and an indirect address instruction ?

Direct addressing means the instruction refers directly to the address being accessed. That is, the instruction encoding itself contains the address of the location. Depending on the instruction set, it may also allow computing a small index relative to the address. When used that way, you can think of that as a direct-indexed mode. (Note: Some processors call ‘direct’ mode ‘absolute’, such as the 6502.)

Indirect addressing uses an address held in a register or other location to determine what memory location to read or write. The idea here is that the instruction itself isn’t directly telling you the address to access, but rather indirectly telling the CPU where to find that address. The processor may also allow you to add a small offset to the indirect address, giving an indirect-indexed addressing mode.
Also Read : 5 Best Terminal Emulators for Linux The 6502 one is a little quirky: The 6502 doesn’t have general-purpose registers large enough to store addresses, so i…

What is ASP.NET? and it's ARCHITECTURE

What is ASP.Net?ASP.Net is a web development platform provided by Microsoft. It is used for creating web-based applications. ASP.Net was first released in the year 2002.
The first version of ASP.Net deployed was 1.0. The most recent version of ASP.Net is version 4.6. ASP.Net is designed to work with the HTTP protocol. This is the standard protocol used across all web applications.

ASP.Net applications can also be written in a variety of .Net languages. These include C#, VB.Net, and J#. In this chapter, you will see some basic fundamental of the .Net framework.

The full form of ASP is Active Server Pages, and .NET is Network Enabled Technologies.
ASP.NET Architecture and its Components ASP.Net is a framework which is used to develop a Web-based application. The basic architecture of the ASP.Net framework is as shown below.
 he architecture of the.Net framework is based on the following key components

Language – A variety of languages exists for .net framework. They are VB.n…

What Is Defensive Programming ?

Defensive programming is a form of defensive design intended to ensure the continuing function of a piece of software under unforeseen circumstances. Defensive programming practices are often used where high availability, safety or security is needed. – WikiPedia


Introduction Defensive programming is a form of defensive design intended to ensure the continuing function of a piece of software under under unforeseen circumstances. Defensive programming practices are often used where high availability, safety or security is needed.
Advantages Defensive programming is an approach to improve software and source code, in terms of:
General qualityMaking the source code comprehensibleMaking the software behave in a predictable mannerDrawback Overly defensive programming, however, may safeguard against errors that will never be encountered, thus incurring run-time and maintenance costs. There is also the risk that the code traps or prevents too many exceptions, potentially resulting i…