SlideShare a Scribd company logo
1 of 14
Message Signaled Interrupts
A look at our network controller’s
optional capability to utilize
Message Signaled Interrupts
The ‘old’ way
• In order to appreciate the benefits of using
Message Signaled Interrupts, let’s first see
how devices do interrupts in a legacy PC
Interrupt
Controller
I/O Device
I/O Device
I/O Device
I/O Device
IRR
IMR
ISR
CPU
INTR
INTA
system bus
main
memory
EFLAGS
ESP
EIP
IVT
ISR
APP
stack
IRQ0
IRQ1
IRQ2
Multi-step communication
• A device signals that it needs CPU service
• The Interrupt Controller signals the CPU
• The CPU responds with two INTA cycles
– First INTA causes bit-changes in IRR and ISR
– Second INTA puts ID-number on system bus
• CPU uses ID-number to lookup IVT entry
• CPU saves minimum context on its stack,
adjusts eflags, and jumps to specified ISR
Faster, cheaper, and more
• Faster response to interrupts is possible if
the old multi-step communication scheme
can be replaced by a single-step protocol
• Less expensive PCs can be manufactured
if their total number of signal pins and the
physical interconnections can be reduced
• More devices can have their own ‘private’
interrupt(s) if signal lines aren’t required
The ‘new’ way
• Message Signaling allows all the needed
information to arrive in a single package,
and go directly from a device to the CPU
I/O Device
system bus
CPU
main
memory
EFLAGS
ESP
EIP
IVT
ISR
APP
stack
I/O Device
I/O Device
Implementation
• The customary PCI Configuration Space is
modified to accommodate three additional
registers, which collectively are known as
the MSI Capability Register Set:
• An MSI Control Register (16 bits)
• An MSI Address Register (32 bits/64 bits)
• An MSI Data Register (32 bits)
• (In fact these additions fit within a broader
scheme of so-called “new capabilities”)
PCI Command Register
15 10 9 8 7 6 5 4 3 2 1 0
Interrupt Disable
Fast Back-to-Back Enable
SERR# Enable
Stepping Control
Parity Error Response
VGA Palette Snoop Enable
Memory Write and Invalidate Enable
Special Cycles
Bus Master Enable
Memory Space Enable
I/O Space Enable
PCI Status Register
15 14 13 12 11 10 9 8 7 6 5 4 3 0
Interrupt Status
Capabilities List
Reserved
Reserved
Fast Back-to-Back Capable
Master Data Parity Error
DEVSEL Timing
Signaled Target-Abort
Received Target-Abort
Received Master-Abort
Signaled System Error
Detected Parity-Error
MSI Control Register
reserved 1 0 0 0 0 0 0 0
15 8 7 6 4 3 1 0
64-bit address capable (1=yes, 0=no)
multiple messages enable
multiple messages capable
000 = 1 message
001 = 2 messages
010 = 4 messages
011 = 8 messages
100 = 16 messages
101 = 32 messages
110 = reserved
111 = reserved
MSI Enable (1=yes, 0=no)
MSI Address Register
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
reserved
63 32
1 1 1 1 1 1 1 0 1 1 1 0
Destination
ID
0 0
D
M
R
H
31 20 19 12 3 2 1 0
DM = Destination Mode (0=Physical,1=Logical)
Specifies how Destination ID will be interpreted
0xFEE
Specifies which processor in the system will be
the recipient the Message Signaled Interrupt
RH = Redirection Hint (0=No redirection, 1=Utilize
destination mode to determine message recipient)
MSI Data Register
reserved
reserved
31 16
15 14 11 8 7 0
vector
Delivery
Mode
T
M
T
L
Trigger Mode (0=Edge, 1=Level)
Trigger Level (1=Assert, 0=Deassert)
Delivery Mode
000=Fixed 001=Lowest Priority
010=SMI 011=Reserved
100=NMI 101=INIT
110=Reserved 111=ExtINT
Recall NIC’s interrupt registers
enum {
E1000_ICR = 0x00C0, // Interrupt Cause Read
E1000_ICS = 0x00C8, // Interrupt Cause Set
E1000_IMS = 0x00D0, // Interrupt Mask Set
E1000_IMC = 0x00D8, // Interrupt Mask Clear
};
Registers’ usage
You use Interrupt Mask Set to selectively enable the NIC’s various interrupts;
You use Interrupt Mask Clear to selectively disable any of the NIC’s interrupts;
You use Interrupt Cause Read to find out which events have caused the NIC
to generate an interrupt (and then you can ‘clear’ those bits by writing to ICR);
You can write to the Interrupt Cause Set register to selectively trigger the NIC
to generate any of its various interrupts -- provided they have been ‘enabled’
by bits being previously set in the NIC’s Interrupt Mask Register.
Demo module: ‘msidemo.c’
• This module installs an interrupt-handler
for an otherwise unused interrupt-vector
• It initializes the MSI Capability Registers
residing in our Intel Pro1000 controller’s
PCI Configuration Space, to enable the
NIC to issue Message Signaled Interrupts
• It creates a pseudo-file (‘/proc/msidemo’)
that triggers an interrupt when it’s read
Tools
• The ‘unused’ interrupt-number is selected
by examining the settings in the IOAPIC’s
Redirection Table (e.g., for serial-UART)
• Our NIC’s PCI Configuration Space can be
viewed by installing our ‘82573.c’ module
and reading its pseudo-file (‘/proc/82573’)
• We can watch interrupts being generated
with our ‘smpwatch’ application-program

More Related Content

Similar to lesson24.ppt

8085 interrupts
8085 interrupts8085 interrupts
8085 interrupts
Isha Negi
 
8085 interrupts
8085 interrupts8085 interrupts
8085 interrupts
Isha Negi
 
Message Signaled Interrupts
Message Signaled InterruptsMessage Signaled Interrupts
Message Signaled Interrupts
Anshuman Biswal
 
Interrupt11
Interrupt11Interrupt11
Interrupt11
Aisu
 
Social services and human rights to know.ppt
Social services and human rights to know.pptSocial services and human rights to know.ppt
Social services and human rights to know.ppt
BharathR164555
 
63071507 interrupts-up
63071507 interrupts-up63071507 interrupts-up
63071507 interrupts-up
tt_aljobory
 

Similar to lesson24.ppt (20)

AAME ARM Techcon2013 002v02 Advanced Features
AAME ARM Techcon2013 002v02 Advanced FeaturesAAME ARM Techcon2013 002v02 Advanced Features
AAME ARM Techcon2013 002v02 Advanced Features
 
Best-embedded-corporate-training-in-mumbai
Best-embedded-corporate-training-in-mumbaiBest-embedded-corporate-training-in-mumbai
Best-embedded-corporate-training-in-mumbai
 
Interrupts.ppt
Interrupts.pptInterrupts.ppt
Interrupts.ppt
 
Chapter 4 - Interrupts of 8085
Chapter 4 - Interrupts of 8085Chapter 4 - Interrupts of 8085
Chapter 4 - Interrupts of 8085
 
8085 interrupts
8085 interrupts8085 interrupts
8085 interrupts
 
8085 interrupts
8085 interrupts8085 interrupts
8085 interrupts
 
Interrupts
InterruptsInterrupts
Interrupts
 
Ch12 microprocessor interrupts
Ch12 microprocessor interruptsCh12 microprocessor interrupts
Ch12 microprocessor interrupts
 
Message Signaled Interrupts
Message Signaled InterruptsMessage Signaled Interrupts
Message Signaled Interrupts
 
Assembly programming
Assembly programmingAssembly programming
Assembly programming
 
Class8
Class8Class8
Class8
 
INTERRUPTS OF 8086 MICROPROCESSOR
INTERRUPTS OF 8086 MICROPROCESSORINTERRUPTS OF 8086 MICROPROCESSOR
INTERRUPTS OF 8086 MICROPROCESSOR
 
AVR Fundamentals
AVR FundamentalsAVR Fundamentals
AVR Fundamentals
 
Interrupts of 8085
Interrupts of 8085Interrupts of 8085
Interrupts of 8085
 
Interrupt11
Interrupt11Interrupt11
Interrupt11
 
Atmega 128 datasheet
Atmega 128   datasheetAtmega 128   datasheet
Atmega 128 datasheet
 
Social services and human rights to know.ppt
Social services and human rights to know.pptSocial services and human rights to know.ppt
Social services and human rights to know.ppt
 
63071507 interrupts-up
63071507 interrupts-up63071507 interrupts-up
63071507 interrupts-up
 
I/O System
I/O SystemI/O System
I/O System
 
Introduction to embedded systems
Introduction to embedded systemsIntroduction to embedded systems
Introduction to embedded systems
 

More from KalimuthuVelappan (8)

rdma-intro-module.ppt
rdma-intro-module.pptrdma-intro-module.ppt
rdma-intro-module.ppt
 
kerch04.ppt
kerch04.pptkerch04.ppt
kerch04.ppt
 
Netlink-Optimization.pptx
Netlink-Optimization.pptxNetlink-Optimization.pptx
Netlink-Optimization.pptx
 
memory_mapping.ppt
memory_mapping.pptmemory_mapping.ppt
memory_mapping.ppt
 
DPKG caching framework-latest .pptx
DPKG caching framework-latest .pptxDPKG caching framework-latest .pptx
DPKG caching framework-latest .pptx
 
memory.ppt
memory.pptmemory.ppt
memory.ppt
 
stack.pptx
stack.pptxstack.pptx
stack.pptx
 
lesson05.ppt
lesson05.pptlesson05.ppt
lesson05.ppt
 

Recently uploaded

CORS (Kitworks Team Study 양다윗 발표자료 240510)
CORS (Kitworks Team Study 양다윗 발표자료 240510)CORS (Kitworks Team Study 양다윗 발표자료 240510)
CORS (Kitworks Team Study 양다윗 발표자료 240510)
Wonjun Hwang
 

Recently uploaded (20)

AI mind or machine power point presentation
AI mind or machine power point presentationAI mind or machine power point presentation
AI mind or machine power point presentation
 
Top 10 CodeIgniter Development Companies
Top 10 CodeIgniter Development CompaniesTop 10 CodeIgniter Development Companies
Top 10 CodeIgniter Development Companies
 
Generative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdfGenerative AI Use Cases and Applications.pdf
Generative AI Use Cases and Applications.pdf
 
Introduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptxIntroduction to FIDO Authentication and Passkeys.pptx
Introduction to FIDO Authentication and Passkeys.pptx
 
Design Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptxDesign Guidelines for Passkeys 2024.pptx
Design Guidelines for Passkeys 2024.pptx
 
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
TEST BANK For, Information Technology Project Management 9th Edition Kathy Sc...
 
الأمن السيبراني - ما لا يسع للمستخدم جهله
الأمن السيبراني - ما لا يسع للمستخدم جهلهالأمن السيبراني - ما لا يسع للمستخدم جهله
الأمن السيبراني - ما لا يسع للمستخدم جهله
 
Cyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptx
Cyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptxCyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptx
Cyber Insurance - RalphGilot - Embry-Riddle Aeronautical University.pptx
 
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
Observability Concepts EVERY Developer Should Know (DevOpsDays Seattle)
 
Microsoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - QuestionnaireMicrosoft CSP Briefing Pre-Engagement - Questionnaire
Microsoft CSP Briefing Pre-Engagement - Questionnaire
 
ADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptxADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptx
 
State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 Warsaw
 
ERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage IntacctERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage Intacct
 
How to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cfHow to Check CNIC Information Online with Pakdata cf
How to Check CNIC Information Online with Pakdata cf
 
Introduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDMIntroduction to use of FHIR Documents in ABDM
Introduction to use of FHIR Documents in ABDM
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform Engineering
 
CORS (Kitworks Team Study 양다윗 발표자료 240510)
CORS (Kitworks Team Study 양다윗 발표자료 240510)CORS (Kitworks Team Study 양다윗 발표자료 240510)
CORS (Kitworks Team Study 양다윗 발표자료 240510)
 
JavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate GuideJavaScript Usage Statistics 2024 - The Ultimate Guide
JavaScript Usage Statistics 2024 - The Ultimate Guide
 
Portal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russePortal Kombat : extension du réseau de propagande russe
Portal Kombat : extension du réseau de propagande russe
 

lesson24.ppt

  • 1. Message Signaled Interrupts A look at our network controller’s optional capability to utilize Message Signaled Interrupts
  • 2. The ‘old’ way • In order to appreciate the benefits of using Message Signaled Interrupts, let’s first see how devices do interrupts in a legacy PC Interrupt Controller I/O Device I/O Device I/O Device I/O Device IRR IMR ISR CPU INTR INTA system bus main memory EFLAGS ESP EIP IVT ISR APP stack IRQ0 IRQ1 IRQ2
  • 3. Multi-step communication • A device signals that it needs CPU service • The Interrupt Controller signals the CPU • The CPU responds with two INTA cycles – First INTA causes bit-changes in IRR and ISR – Second INTA puts ID-number on system bus • CPU uses ID-number to lookup IVT entry • CPU saves minimum context on its stack, adjusts eflags, and jumps to specified ISR
  • 4. Faster, cheaper, and more • Faster response to interrupts is possible if the old multi-step communication scheme can be replaced by a single-step protocol • Less expensive PCs can be manufactured if their total number of signal pins and the physical interconnections can be reduced • More devices can have their own ‘private’ interrupt(s) if signal lines aren’t required
  • 5. The ‘new’ way • Message Signaling allows all the needed information to arrive in a single package, and go directly from a device to the CPU I/O Device system bus CPU main memory EFLAGS ESP EIP IVT ISR APP stack I/O Device I/O Device
  • 6. Implementation • The customary PCI Configuration Space is modified to accommodate three additional registers, which collectively are known as the MSI Capability Register Set: • An MSI Control Register (16 bits) • An MSI Address Register (32 bits/64 bits) • An MSI Data Register (32 bits) • (In fact these additions fit within a broader scheme of so-called “new capabilities”)
  • 7. PCI Command Register 15 10 9 8 7 6 5 4 3 2 1 0 Interrupt Disable Fast Back-to-Back Enable SERR# Enable Stepping Control Parity Error Response VGA Palette Snoop Enable Memory Write and Invalidate Enable Special Cycles Bus Master Enable Memory Space Enable I/O Space Enable
  • 8. PCI Status Register 15 14 13 12 11 10 9 8 7 6 5 4 3 0 Interrupt Status Capabilities List Reserved Reserved Fast Back-to-Back Capable Master Data Parity Error DEVSEL Timing Signaled Target-Abort Received Target-Abort Received Master-Abort Signaled System Error Detected Parity-Error
  • 9. MSI Control Register reserved 1 0 0 0 0 0 0 0 15 8 7 6 4 3 1 0 64-bit address capable (1=yes, 0=no) multiple messages enable multiple messages capable 000 = 1 message 001 = 2 messages 010 = 4 messages 011 = 8 messages 100 = 16 messages 101 = 32 messages 110 = reserved 111 = reserved MSI Enable (1=yes, 0=no)
  • 10. MSI Address Register 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 reserved 63 32 1 1 1 1 1 1 1 0 1 1 1 0 Destination ID 0 0 D M R H 31 20 19 12 3 2 1 0 DM = Destination Mode (0=Physical,1=Logical) Specifies how Destination ID will be interpreted 0xFEE Specifies which processor in the system will be the recipient the Message Signaled Interrupt RH = Redirection Hint (0=No redirection, 1=Utilize destination mode to determine message recipient)
  • 11. MSI Data Register reserved reserved 31 16 15 14 11 8 7 0 vector Delivery Mode T M T L Trigger Mode (0=Edge, 1=Level) Trigger Level (1=Assert, 0=Deassert) Delivery Mode 000=Fixed 001=Lowest Priority 010=SMI 011=Reserved 100=NMI 101=INIT 110=Reserved 111=ExtINT
  • 12. Recall NIC’s interrupt registers enum { E1000_ICR = 0x00C0, // Interrupt Cause Read E1000_ICS = 0x00C8, // Interrupt Cause Set E1000_IMS = 0x00D0, // Interrupt Mask Set E1000_IMC = 0x00D8, // Interrupt Mask Clear }; Registers’ usage You use Interrupt Mask Set to selectively enable the NIC’s various interrupts; You use Interrupt Mask Clear to selectively disable any of the NIC’s interrupts; You use Interrupt Cause Read to find out which events have caused the NIC to generate an interrupt (and then you can ‘clear’ those bits by writing to ICR); You can write to the Interrupt Cause Set register to selectively trigger the NIC to generate any of its various interrupts -- provided they have been ‘enabled’ by bits being previously set in the NIC’s Interrupt Mask Register.
  • 13. Demo module: ‘msidemo.c’ • This module installs an interrupt-handler for an otherwise unused interrupt-vector • It initializes the MSI Capability Registers residing in our Intel Pro1000 controller’s PCI Configuration Space, to enable the NIC to issue Message Signaled Interrupts • It creates a pseudo-file (‘/proc/msidemo’) that triggers an interrupt when it’s read
  • 14. Tools • The ‘unused’ interrupt-number is selected by examining the settings in the IOAPIC’s Redirection Table (e.g., for serial-UART) • Our NIC’s PCI Configuration Space can be viewed by installing our ‘82573.c’ module and reading its pseudo-file (‘/proc/82573’) • We can watch interrupts being generated with our ‘smpwatch’ application-program