转载: 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.

PCIe设备必须支持MSI或者MSI-X中断请求机制,而可以不支持INTx中断消息。

对MSI的误解

通常有一个对MSI的误解:有人认为device可以直接向cpu发送数据作为中断的一部分。其实这部分写到MMIO的数据是给chipset的,chipset读取这段数据来决定说发送什么样的中断给CPU。Device是没有办法直接给interrupt handler传递更多的信息的。

相对于PIN-based/out-of band中断, 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 Pin assert -> CPU SMM mode -> BIOS SMI handler

SMI:(软件方式)

WriteIO(B2h) -> CPU SMM mode->BIOS SMI handler

SCI:

SCI Pin assert -> IDT -> OS ACPI driver -> ASL code(Q Evnent) ->?

转载:http://blog.csdn.net/celiaqianhj/article/details/6754172

SCI与SMI的区别与联系

SMI: System Management Interrupt,系统管理中断,进入SMM的方法,包含(但不限于)电源管理功能,对OS透明的;

SMI pin触发后,CPU进入SMM Mode,转去执行BIOS中的SMI Handler。

SMI pin--> CPU SMM Mode --> BIOS routine

SCI: System Control Interrupt,系统控制中断,是ACPI定义的,专用于ACPI电源管理的一个IRQ,需要OS支持的。

SCI pin触发后,CPU去执行某个放在中断描述表(IDT)中的程式,一般都是指向某个驱动程式(ACPI.sys),ACPI driver会通知相关的驱动程式(ACPI EC Driver),然后跟EC BIOS取得一个代码,而这个代码就是ASL code中的Qxx Number,接着OS会去执行相应的ASL Code,一般都是Method(Qxx)。

SCI pin --> OS Acpi Driver --> ASL Code (Q event) --> ? (看BIOS Spec需求)

联系:都可以用于电源管理功能
区别:SMI是CPU级别的,ACPI和非ACPI模式下都可以用;SCI是OS级别的,只有在ACPI模式才可以用。

SCI只能在ACPI的OS下发出来,如果在DOS下能触发的中断,那肯定不是SCI,那可能是SMI。SMI同样可以在OS下发出来。在进入ACPI的OS后,Bios把CPU的控制权交给OS,SMI还是可以发出来的。SMI大部分由硬件来issue,也可以发soft SMI,一般是在port 0B2h下command,然后在SMI Handle中加入对cmd的动作即可。

SCI_INT

FADT的Offset46为SCI_INT field。

它记录了在PIC Mode下,SCI连接到8259的哪个pin(通常都是IRQ9);在APIC Mode下,它记录了SCI interrupt的Global System interrupt number。

如果在PIC Mode下SCI连接到IRQ9,而在APIC Mode下IRQ9连接到INTIN11,则在FADT中SCI_INT为9, MADT中interrupt resource override entry mapping 将IRQ9 mapping到INTIN11。

如何把SCI_INT从IRQ9改成IRQ11?

三个地方要改:

1. SCI IRQ Select(D31:F0:R44h bit[2:0])由000h(IRQ9)改成010h(IRQ11)

2. FADT中SCI_INT 由9改成11

3. MADT中interrupt resource override entry, Source 0x09; GSI:由0x09改成0x0B

关于SMI、MSI、SCI、INTx各种中断小结相关推荐

  1. java调用BIOS中断,SMI#、SCI#信号在OS、BIOS、EC中的中断方式(Linux)

    EC资料有个很好的CSDN博客推荐去看看:zhao_longwei的专栏 小弟是学硬件的,苦苦修行中, SCI VS SMI SCI:System Control Interrupt, 系统控制中断. ...

  2. TMS320F28335的SCI通信-FIFO中断通信实验

    这两天在调28335的SCI通信,现在把实验过程跟大家分享:1.实验过程:通过串口调试助手1向DSP的SCIA接口发送一段代码,DSP接收到数据之后通过SCIB接口发送到串口软件2.同样串口软件通过S ...

  3. DSP28335的SCI的FIFO中断使用心得

    自学了一段时间的DSP28335的串口设置,写下来帮助更多的新手,遇到了很多问题也记录一些解决办法. 以下全都是我个人的理解,可能说的不对,大家讨论. 1.关于为什么必须用FIFO 一般的DSP系统, ...

  4. 2021年三月上旬推荐阅读文章

    Linux用户抢占和内核抢占详解(概念, 实现和触发时机)--Linux进程的管理与调度(二十)https://cloud.tencent.com/developer/article/1368153, ...

  5. PCIPCIE MSI中断

    1.什么是MSI?(Message Signaled Interrupts) 用简单的一句话就可以说明msi的原理:cpu有一段特殊的寄存器空间,往这个寄存器里面写数据,就会触发cpu的中断.pci设 ...

  6. BIOS知识枝桠——SCI SMI IRQ

    SCI SMI 中断 中断分析 SCI SMI SMM SCI和SMI的异同 特殊的GPE: Q event SMI的几种常见的注册 SWSMI的触发 常见SMI的应用 中断 中断: 指当出现需要时, ...

  7. 32 配置引脚中断_PCIe的中断机制

    出于向下兼容的需要,PCIe完全继承了PCI的所有的中断特性(包括INTx,MSI/MSIx).但是与PCI不同的是,PCIe使用串行总线尽量减少pin的使用,所以对于INTX类型的中断,它没有使用s ...

  8. 扩展中断控制器8259实验_PCIe的中断机制

    出于向下兼容的需要,PCIe完全继承了PCI的所有的中断特性(包括INTx,MSI/MSIx).但是与PCI不同的是,PCIe使用串行总线尽量减少pin的使用,所以对于INTX类型的中断,它没有使用s ...

  9. x86架构中断基础介绍

    BIOS/UEFI基础--x86架构中断基础介绍 说明 本文讲的是Intel的x86架构下的中断. 参考的文档主要是<64-ia-32-architectures-software-develo ...

最新文章

  1. 用户空间增加、缩减内存
  2. java中集合和数据库中_java中list集合的内容,如何使用像数据库中group by形式那样排序...
  3. 【机器视觉】 repeat算子
  4. python内置输入函数_python内置函数 print()
  5. 51单片机温度控制系统报警器,不会做课程设计的就拿走
  6. html期末作业代码网页设计 我的家乡网站设计——我的家乡-四川成都(4页) HTML+CSS+JavaScript
  7. [Camera Drv]Factory mode下camera图像rotate了180度 - MTK物联网在线解答 - 技术论坛
  8. 蔽月山房---作者,王阳明
  9. 【论文写作技巧】Endnote参考文献统一输出格式
  10. mysql答题系统android_Android答题APP的设计与实现
  11. 51单片机非阻塞串口中断收发数据
  12. 喜欢游戏的人,福利来啦,这个岗位可以边打游戏边工作
  13. 投资组合业绩评价指标-夏普测度、特雷纳测度、詹森测度以及信息与卡玛比率...
  14. 台积电全球员工薪酬中位数约46万,CEO约899万;苹果上调日本的 iPhone 售价 ;Vim 9.0 发布|极客头条...
  15. 隐函数(组)存在定理
  16. 第九章总结 java常用类
  17. 「操作系统」深入理解死锁(什么是死锁?死锁形成条件?如何避免死锁?如何排查死锁?)
  18. 【Spring教程】2.spring入门
  19. java启动器_打造java启动器步骤三
  20. printf彩色字体颜色打印输出

热门文章

  1. Nebo Preview - Nebo 手写笔记 笔迹识别OCR笔记本 安卓移动端版本 apk
  2. 20170724_Linux常用基本命令
  3. PHP 1000只狗,从第一头起算,求最后活着的狗 代码实现
  4. nginx下禁止垃圾蜘蛛爬取网站,只保留百度蜘蛛和搜狗360神马等
  5. element 手机适配_移动端常用适配(完美解决)
  6. 材质(LearnOpenGL With Qt)
  7. 什么是非线性编辑?_百度知道
  8. Go执行CMD或者Shell命令并且实时输出到控制台,效果和CMD执行结果方式完全一样
  9. [架构之路-171]-《软考-系统分析师》-5-数据库系统-4- 数 据 库 的 控 制 功 能(并发控制、性能优化)
  10. 手机显示无法启动服务器失败是什么意思啊,绝地求生进不去显示启动服务器失败怎么回事 | 手游网游页游攻略大全...