关于SMI、MSI、SCI、INTx各种中断小结【转】
转载自http://blog.csdn.net/huangkangying/article/details/11178425
MSI VS INTx(Pin-based interrupt)
MSI的全称是Message Signaled Interrupt.MSI出现在PCI 2.2和PCIe的规范中,是一种内部中断信号机制。传统的中断都有专门的中断pin,当中断信号产生是,中断PIN电平产生变化(一般是拉低)。INTx就是传统的外部中断触发机制,它使用专门的通道来产生控制信息。然而PCIe并没有多根独立的中断PIN,它使用特殊的信号来模拟中断PIN的置位和复位。MSI允许设备向一段指定的MMIO地址空间写一小段数据,然后chipset以此产生相应的中断给CPU.
对MSI的误解
通常有一个对MSI的误解:有人认为device可以直接向cpu发送数据作为中断的一部分。这得看CPU。如果使用的是Client CPU而且PCIe总线经过南桥,这部分写到MMIO的数据是给chipset的,chipset读取这段数据来决定说发送什么样的中断给CPU。Device是没有办法直接给interrupt handler传递更多的信息的。
但对于Intel的至强sever处理器,处理器中有IIO(Integrated I/O Controller), 如果PCIe的device是直接接在cpu的root port上的,那么MSI会被直接发送到cpu的IIO, IIO又会将MSI转给UBox, 由UBox把MSI发送给目标CPU。
MSI Capability结构
相对于PIN-based/out-ofband中断, MSI的好处
虽然MSI相对比较复杂一点,但它是有不少好处的:
1. 从电气机械的角度,MSI减少了对interrupt pin个数的需求。从而使得连接头变得更简单,更便宜。
2. MSI增加了中断号的数量。传统的PCI中断只允许每个device拥有4个中断,并且由于这些中断都是共享的,大部分device都只有一个中断。MSI允许每个device有1,2,4,8,16或者是32个中断。
3. 使用MSI也有一点点性能上的优势。使用传统的PIN中断,当中断到来时,程序去读内存获取数据时有可能会产生冲突。其原因device的数据主要通过DMA来传输,而在PIN中断到达时,DMA传输还未能完成,此时cpu不能获取到数据,只能空转。而MSI不会存在这个问题,因为MSI都是发生在DMA传输完成之后的。
SCI VS SMI
SCI:System Control Interrupt, 系统控制中断。专门用于ACPI电源管理的一个IRQ,需要OS支持。
SMI:System Management Interrupt, 系统管理中断,使用系统进入SMM的特殊中断。
两者区别:
SMI是CPU级别的,ACPI和非ACPI模式下都可以使用,而SCI是OS级别的,只有在ACPI support的OS中才能见到。比如说DOS下触发的中断肯定不是SCI,但有可能是SMI。
两者联系:
两者可以用于电源管理,但SMI不限于电源管理。
触发过程:
SMI: (硬件方式)
SMI Pinassert -> CPU SMM mode -> BIOS SMI handler
SMI:(软件方式)
WriteIO(B2h) -> CPU SMM mode->BIOS SMI handler
SCI:
SCI Pinassert->IDT->OS ACPI driver->ASL code(Q Evnent)->?
关于SMI、MSI、SCI、INTx各种中断小结【转】的更多相关文章
- SMI#、SCI#信号在OS、BIOS、EC中的中断方式(Linux)
EC资料有个很好的CSDN博客推荐去看看:zhao_longwei的专栏 EC固件代码架构:https://blog.csdn.net/zhao_longwei/article/details/510 ...
- 中断MSI INTA
转载https://blog.csdn.net/huangkangying/article/details/11178425 MSI VS INTx(Pin-based interrupt) MSI的 ...
- x86架构中的外部中断结构-Part 1:中断控制器的演化
本文主要讲解了x86体系架构从外部设备接受中断的过程,本文是系列文章的第一部分,试图回答以下问题: 什么是PIC以及它的用途是什么? 什么是APIC以及它的用途是什么?LAPIC和I/O APIC的目 ...
- 【C51】单片机中断
引言 其实人的一生和单片机的运行很类似.就拿人的一生来说:有些事只需要做一次,比如得了水痘以后,体内产生免疫,以后就不会再生这个病了.有些事需要反复做,比如反复读书,反复工作,反复与困苦打交道,反复地 ...
- MSI/MSI-X
MSI PCI2.2规范引进了MSI作为传统的基于线的中断的替代方案.MSI允许设备通过向一个特定的地址写入一个特定的值来允许中断,而不是使用一个专有的引脚来触发中断.注意消息的目的地址和消息数据被当 ...
- 6.2 PowerPC处理器如何处理MSI中断请求
PowerPC处理器使用OpenPIC中断控制器或者MPIC中断控制器,处理外部中断请求.其中MPIC中断控制器基于OpenPIC中断控制器,但是作出了许多增强,目前Freescale新推出的Powe ...
- Cstyle的UEFI导读:第20.0篇 IGD OpRegion interface && IGD OpRegion PROTOCOL
ACPI IGD OpRegion interface是用SCI来实现IGD driver,OS,BIOS之间沟通的桥梁,IGD OpRegion PROTOCOL是UEFI BIOS构建桥梁 ...
- PCIe 驱动流程(LTSSM)
本次的工作是完成刚流片的FPGA中PCIe IP核的bring up,也就是芯片的中PCIe的第一个使用者,将PCIe IP核正常使用起来,并配合公司的EDA团队,完成PCIe IP核到用户的呈现. ...
- 怎么理解Linux软中断?
1.什么是中断 中断是系统用来响应硬件设备请求的一种机制,它会打断进程的正常调度和执行,然后调用内核中的中断处理程序来响应设备的请求. 2.为什么要有中断呢? "举个生活中的例子" ...
随机推荐
- 【Spark】为什么没有任务调度到新增的Worker之上???
参考资料: https://stackoverflow.com/questions/34818880/spark-why-tasks-assigned-only-to-one-worker?utm_m ...
- MySQL查看数据库表容量大小
本文介绍MySQL查看数据库表容量大小的命令语句,提供完整查询语句及实例,方便大家学习使用. 1.查看所有数据库容量大小 select table_schema as '数据库', sum(table ...
- Unity Alpha融合参数(便查)
Alpha Blending,中文译作Alpha混合 Blending就是控制透明的.处于光栅化的最后阶段. 这里例如我们给一个模型贴一个材质,那么在某个点计算出来颜色值称为源,而该点之前累积的颜色值 ...
- SQLSERVER 2012 之 “代理 XP”组件已作为此服务器安全配置的一部分被关闭
新建维护计划的时候遇到下图的报错信息 标题: Microsoft SQL Server Management Studio ------------------------------ “代理 XP” ...
- 关于FMDatabase executeQuery的问题
如果你碰到这个问题,请查看idx的值,并查看SQL语句中第6个字段的值有问题(从0开始),比如你给的值是NSInteger会报错,需要将其转成NSString.
- syslog之三:建立Windows下面的syslog日志服务器
目录: <syslog之一:Linux syslog日志系统详解> <syslog之二:syslog协议及rsyslog服务全解析> <syslog之三:建立Window ...
- Chrome F12 温故而知新 :因为重定向导致清空Network信息
虽然我以前都是用Fiddler 4来作为解决方案.但实际上可以勾选 [Preserve log]来保存日志 这样就不担心因为页面重定向导致清空了日志了
- 安装配置OSA运维管理平台
1.下载完整包V1.0.2wget http://www.osapub.com/download/OSA_BETA_V1.0.2.tar.gzV1.0.5wget http://www.osapub. ...
- js正则表达式验证身份证号和密码
//验证身份证号只能输入15位或者18位的身份证号 /^\d{14}[X|\d]{1}$|^\d{18}$/ig //验证只能输入字母和数字组合6到16位 /^[a-z][a-z0-9]{6,16}$ ...
- java 生成Http 头部date格式的string-RFC 1123 Date Representation in java
https://blog.csdn.net/lvzhuyiyi/article/details/51770148 ******************************************* ...