双核或双CPU如何处理外部中断?(多核社区解惑月400高分悬赏帖!)

捺捺 2007-09-14 04:55:13
注:本贴为“英特尔多核技术社区解惑月”选中的问题,以400高分悬赏征集答案。凡积极参与,提供有效回答者,将平分这400分。

> > >原贴内容:

在双核或双CPU系统中,假如有个外部中断请求(例如网卡或键盘),这个时候是两个核心或CPU同时产生中断,还是只有其中某个核心或CPU响应中断?

-------------------------

原发贴者:jamesking (您将获赠300可用分,其中100分在于奖励您提出了1个有效的问题,另外200分在于您的问题被选中作为征集答案的问题。)

关于本次活动详情请看活动页面:http://events.csdn.net/isn/jhy_mc/index.htm

整个活动结束后,所有分数和奖品将会统一发放或寄送,请各位届时查收:)
...全文
3115 39 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
nbrmn 2010-10-28
  • 打赏
  • 举报
回复
一个吧,因为将中断交给一个CPU处理就行了吧,即使这时两个cpu在执行多个相互交叉的进程,可以让另一个cpu执行等待,不过这样双核CPU效率就比较低了,但可以让另一个CPU从就绪队列中另外选一个PCB来运行,当中断处理完后,一个CPU向另一个CPU发出信号,再接着前面的任务进行
fengdawei1 2008-12-12
  • 打赏
  • 举报
回复
对于zenny_chen观点我有一个疑问! 根据INTEL官方数据资料说对同一个APIC对同一个优先级的中断只能静态的配置2个,不然就很有可能丢失! 但是blackfin561官方资料中,系统中断控制器SIC对同意优先级却映射了多与3个的中断!那在blacfin运行的时候中断响应是否会有问题呢!
julyon 2008-05-01
  • 打赏
  • 举报
回复
我觉得zenny_chen 的观点是正确的,大家要是有时间可以看参考深入理解诶LINUX内核(第二版)的335页中关于linux/smp的中断的实现。我个人认为:中断的实现应该是具体硬件以及操作系统相结合来讨论的。
zhangyixian525 2007-11-18
  • 打赏
  • 举报
回复
CPU执行的最小单位是线程,当我们考虑CPU的中断的时候我们应该首先考虑到单个线程的运行情况.
一个行程是绝对不可能运行在两个核上的.所以现在要考虑当前运行的程序是单线程还是多线程的.
不过不和种管有多少线程,每个线程只可能运行在同一个核上.这是肯定的.个人观点,请指点.
calen 2007-11-14
  • 打赏
  • 举报
回复
我认为只有一个CPU响应中断,不会有多个同时响应,例如网卡的中断响应,应该是在系统当前运行过程中,监管网卡的CPU接受中断。
zenny_chen 2007-11-14
  • 打赏
  • 举报
回复
Blackfin DSP561双核处理器中,每个核都有自己的核心中断控制器以及系统中断控制器。因此对于一个外部中断事件的到来,如果两个核的系统中断控制器都允许该中断源,并且核心中断控制器允许该中断源锁对应的中断向量组(IVG),那么两个核都会响应该中断。当然,中断处理例程可以不一样。
这是一个典型的对称多处理器构架。我想Intel的对称多处理器应该也是每个核有独立的中断控制器。至于如何控制就要看操作系统了。
其中,可以将一些中断事件分配给一个核进行处理;其余的分配给另一个核。当然,也可以将两个核分配予所有的中断事件,但做出不同的处理。比如,可以设置全局变量(critical),用来进行得到两个核对于同一个中断事件处理的状态。当然,因为多核的情况比较复杂,因为即使一个中断事件到来,两个核对其处理顺序的先后是无法预计的,在设计时必须要考虑到这一点。当然,通过这种方法可以通过加上spin lock来对一个中断事件进行先来先服务。也就说,当一个核为该事件处理时,设置某个标志,表示该事件已经被处理,那么当另一个核也为处理该事件进行中断处理时可以通过判断该标志来决定继续处理还是马上返回。
总之,处理的方法有很多种,不过对于不同环境应该要做出合适的选择。
zyren 2007-11-14
  • 打赏
  • 举报
回复
我以为如果要开发诸如一些视频编码或3维软件等应用时,使用操作系统来做桥梁或许不是很好的解决方案,那么直接对cpu进行操作就会很自由,具体什么方式我也说不上,毕竟我连开发的基本思路都没有学好呢
YSXHJQ 2007-11-06
  • 打赏
  • 举报
回复
应该是由中断处理器来决定哪个核心来处理此次中断,(比如现在一核心的正在处理网卡的中断,而网卡又发来新的中断,中断处理器就把任务交给二核心来处理,如果此时二核心也正在处理,那就中断等待,等待哪个核心先空闲)
fenggf 2007-10-02
  • 打赏
  • 举报
回复
APIC分系统APIC和处理器APIC, IO中断会首先由主板上的系统APIC进行分发,得到这个分发的处理器由自己的APIC再进行处理,这时就和单处理器类似了。中断的处理是由软件,硬件一起来完成的,并不能简单地说是由操作系统来完成,或由双核怎么怎么。操作系统对中断有一定的控制能力,如Linux可以通过proc等一些手段进行交互对其进行一些配置(如果系统有两块网卡,用户可以定置它们对中断的响应)
wenxueqian 2007-09-30
  • 打赏
  • 举报
回复
正在处理优先级相对较低事务的cpu响应并处理中断。对于外部IO中断,首先是中断仲裁进行判定和排队后,才有cpu处理。
david_xie 2007-09-26
  • 打赏
  • 举报
回复
参与一下
zy_914 2007-09-25
  • 打赏
  • 举报
回复
支持
ajq 2007-09-24
  • 打赏
  • 举报
回复
21楼的垃圾,大家给他踢出去
ztwztq864791 2007-09-22
  • 打赏
  • 举报
回复
那就是由操作系统调用APIC(Advanced Programmable Interrupt Controller),来决定由哪一个或那几个CPU来响应中断。
那必然应该有相应的算法吧?
这个算法又是什么呢?
C_247 2007-09-19
  • 打赏
  • 举报
回复
友情顶
dingroot 2007-09-17
  • 打赏
  • 举报
回复
应该是只有一个,这可能是由系统决定吧
worm_oz 2007-09-17
  • 打赏
  • 举报
回复
Intel® 64 and IA-32 Architectures Software Developer's Manuals
http://www.intel.com/products/processor/manuals/index.htm

其中Intel® 64 and IA-32 Architectures Software Developer's Manual
Volume 3A: System Programming Guide
下载地址http://www.intel.com/design/processor/manuals/253668.pdf

Chapter 8给出了详细的说明
地下室小红叔 2007-09-17
  • 打赏
  • 举报
回复
楼上垃圾
sunnyfun888 2007-09-17
  • 打赏
  • 举报
回复
多核的中断处理和单核有很大不同。多核的各处理器之间需要通过中断方式进行通信,所以芯片内部既有各个处理核心的本地中断控制器,又有负责仲裁各核之间中断分配的全局中断控制器。 具体如何响应取决于程序的编写。
middle 2007-09-16
  • 打赏
  • 举报
回复
抱歉,上面的ACPI应该是APIC(Advanced Programmable Interrupt Controller)。
加载更多回复(19)

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧