0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA之外中断是什么?这个场景跟中断有什么关系呢?

DIri_ALIFPGA 来源:未知 作者:李倩 2018-06-25 10:42 次阅读

中断是什么?

中断的汉语解释是半中间发生阻隔、停顿或故障而断开。那么,在计算机系统中,我们为什么需要“阻隔、停顿和断开”呢?

举个日常生活中的例子,比如说我正在厨房用煤气烧一壶水,这样就只能守在厨房里,苦苦等着水开——如果水溢出来浇灭了煤气,有可能就要发生一场灾难了。等啊等啊,外边突然传来了惊奇的叫声“怎么不关水龙头?”于是我惭愧的发现,刚才接水之后只顾着抱怨这份无聊的差事,居然忘了这事,于是慌慌张张的冲向水管,三下两下关了龙头,声音又传到耳边,“怎么干什么都是这么马虎?”。伸伸舌头,这件小事就这么过去了,我落寞的眼神又落在了水壶上。

门外忽然又传来了铿锵有力的歌声,我最喜欢的古装剧要开演了,真想夺门而出,然而,听着水壶发出“咕嘟咕嘟”的声音,我清楚:除非等到水开,否则没有我享受人生的时候。

这个场景跟中断有什么关系呢?

如果说我专心致志等待水开是一个过程的话,那么叫声、电视里传出的音乐不都让这个过程“半中间发生阻隔、停顿或故障而断开”了吗?这不就是活生生的“中断”吗?

在这个场景中,我是唯一具有处理能力的主体,不管是烧水、关水龙头还是看电视,同一个时间点上我只能干一件事情。但是,在我专心致志干一件事情时,总有许多或紧迫或不紧迫的事情突然出现在面前,都需要去关注,有些还需要我停下手头的工作马上去处理。只有在处理完之后,方能回头完成先前的任务,“把一壶水彻底烧开!”

中断机制不仅赋予了我处理意外情况的能力,如果我能充分发挥这个机制的妙用,就可以“同时”完成多个任务了。回到烧水的例子,实际上,无论我在不在厨房,煤气灶总是会把水烧开的,我要做的,只不过是及时关掉煤气灶而已,为了这么一个一秒钟就能完成的动作,却让我死死地守候在厨房里,在10分钟的时间里不停地看壶嘴是不是冒蒸气,怎么说都不划算。我决定安下心来看电视。当然,在有生之年,我都不希望让厨房成为火海,于是我上了闹钟,10分钟以后它会发出“尖叫”,提醒我炉子上的水烧开了,那时我再去关煤气也完全来得及。我用一个中断信号——闹铃——换来了10分钟的欢乐时光,心里不禁由衷地感叹:中断机制真是个好东西。

正是由于中断机制,我才能有条不紊地“同时”完成多个任务,中断机制实质上帮助我提高了并发“处理”能力。它也能给计算机系统带来同样的好处:如果在键盘按下的时候会得到一个中断信号,CPU就不必死守着等待键盘输入了;如果硬盘读写完成后发送一个中断信号,CPU就可以腾出手来集中精力“服务大众”了——无论是人类敲打键盘的指尖还是来回读写介质的磁头,跟CPU的处理速度相比,都太慢了。没有中断机制,就像我们苦守厨房一样,计算机谈不上有什么并行处理能力。

跟人相似,CPU也一样要面对纷繁芜杂的局面——现实中的意外是无处不在的——有可能是用户等得不耐烦,猛敲键盘;有可能是运算中碰到了0除数;还有可能网卡突然接收到了一个新的数据包。这些都需要CPU具体情况具体分析,要么马上处理,要么暂缓响应,要么置之不理。无论如何应对,都需要CPU暂停“手头”的工作,拿出一种对策,只有在响应之后,方能回头完成先前的使命,“把一壶水彻底烧开!”

计算机系统实现中断机制是非常复杂的一件工作,再怎么说人都是高度智能化的生物,而计算机作为一个铁疙瘩,没有程序的教导就一事无成。而处理一个中断过程,它受到的限制和需要学习的东西太多了。

首先,计算机能够接收的外部信号形式非常有限。中断是由外部的输入引起的,可以说是一种刺激。在烧水的场景中,这些输入是叫声和电视的音乐,我们这里只以声音为例。其实现实世界中能输入人类CPU——大脑的信号很多,图像、气味一样能被我们接受,人的信息接口很完善。而计算机则不然,接受外部信号的途径越多,设计实现就越复杂,代价就越高。因此个人计算机(PC)给所有的外部刺激只留了一种输入方式——特定格式的电信号,并对这种信号的格式、接入方法、响应方法、处理步骤都做了规约(具体内容本文后面部分会继续详解),这种信号就是中断或中断信号,而这一整套机制就是中断机制。

其次,计算机不懂得如何应对信号。人类的大脑可以自行处理外部输入,我从来不用去担心闹钟响时会手足无措——走进厨房关煤气,这简直是天经地义的事情,还用大脑想啊,小腿肚子都知道——可惜计算机不行,没有程序,它就纹丝不动。因此,必须有机制保证外部中断信号到来后,有正确的程序在正确的时候被执行。

还有,计算机不懂得如何保持工作的持续性。我在看电视的时候如果去厨房关了煤气,回来以后能继续将电视进行到底,不受太大的影响。而计算机则不然,如果放下手头的工作直接去处理“意外”的中断,那么它就再也没有办法想起来曾经作过什么,做到什么程度了。自然也就没有什么“重操旧业”的机会了。这样的处理方式就不是并发执行,而是东一榔头,西一棒槌了。

那么,通用的计算机系统是如何解决这些问题的呢?它是靠硬件和软件配合来协同实现中断处理的全过程的。我们将通过Intel X86架构的实现来介绍这一过程。

CPU执行完一条指令后,下一条指令的逻辑地址存放在cs和eip这对寄存器中。在执行新指令前,控制单元会检查在执行前一条指令的过程中是否有中断或异常发生。如果有,控制单元就会抛下指令,进入下面的流程:

1. 确定与中断或异常关联的向量i (0£i£255)

2. 寻找向量对应的处理程序

3. 保存当前的“工作现场”,执行中断或异常的处理程序

4. 处理程序执行完毕后,把控制权交还给控制单元

5. 控制单元恢复现场,返回继续执行原程序

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10428

    浏览量

    206519
  • 中断
    +关注

    关注

    5

    文章

    884

    浏览量

    41020
  • 计算机系统
    +关注

    关注

    0

    文章

    213

    浏览量

    23876

原文标题:FPGA之外,了解一下中断

文章出处:【微信号:ALIFPGA,微信公众号:FPGA极客空间】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    28335的pwm中断和cap中断是怎么实现的

    28335的pwm中断和cap中断是怎么实现的,CPUtimer什么关系
    发表于 09-04 10:30

    STM32的 ENIC和EXTI两者什么关系

    初学stm32,遇到一个棘手的问题,望各位大神不吝赐教STM32的 ENIC和EXTI两者什么关系?EXTI线 与 中断通道什么联系?具体点,谢谢
    发表于 07-26 22:54

    请问BSPBootLoader和内核什么关系

    各位老师: 请问BSP是啥?BootLoader和内核什么关系啊?韦老师的课程里讲这方面吗?韦老师的书上有这么一张图,BSP处于哪部分
    发表于 10-09 21:18

    请问ucosiii系统定义中断函数和裸机中的中断函数是什么关系

    请问ucosiii中的系统定义中断函数和裸机中的中断函数是什么关系,二者是怎么联系起来的????????比如ucos中断(void)BSP_IntHandlerEXTI1(void)和
    发表于 04-23 04:11

    什么是区块链?比特币区块链什么关系

    什么是区块链?比特币区块链什么关系区块链的实例吗?
    发表于 05-17 06:47

    什么是概率?信息和概率什么关系

    什么是概率?什么是信息?信息和概率什么关系
    发表于 07-19 08:49

    MCU、DSP和FPGA什么关系

    为什么MCU、DSP和FPGA会同时存在?MCU、DSP和FPGA什么关系
    发表于 09-22 08:39

    什么是中断源?识别中断哪些方法

    什么是内部中断?8086/8088CPU哪些内部中断?触发器、寄存器及存储器之间什么关系
    发表于 10-26 08:04

    STM32的中断线怎么IO口对应

    口都有可以作为外部中断输入,IO口很多,STM32供IO使用的中断线只有16个,那么中断线怎么IO口对应
    发表于 01-13 06:11

    定时器中断的应用都有哪些

    中断产生和单片机什么关系?定时器中断的应用都有哪些
    发表于 01-19 06:59

    flashEEPROM之间什么关系

    flashEEPROM之间什么关系
    发表于 01-29 20:24

    单片机学习教程之外中断和定时器及串口中断的资料和程序说明

    本文档的主要内容详细介绍的是单片机学习教程之外中断和定时器及串口中断的资料和程序说明。CPU收到中断请求,停下正在处理的工作A,去处理事件B,处理完后继续回到
    发表于 04-18 17:27 5次下载
    单片机学习教程<b class='flag-5'>之外</b>部<b class='flag-5'>中断</b>和定时器及串口<b class='flag-5'>中断</b>的资料和程序说明

    while(1)和中断关系

    菜鸟自结,大神飘过。发现自己以前学习51单片机存在很多问题!今天被问到一个问题才发现自己的学习态度很糟糕。初学51时,不是很理解51中断和while(1)的关系,一直以为中断就应该有while
    发表于 11-15 12:51 11次下载
    while(1)和<b class='flag-5'>中断</b>的<b class='flag-5'>关系</b>

    51单片机之外中断方式 ——— INT0 中断

    51单片机之外中断方式 ——— INT0 中断
    发表于 11-22 11:51 146次下载
    51单片机<b class='flag-5'>之外</b>部<b class='flag-5'>中断</b>方式 ———  INT0 <b class='flag-5'>中断</b>

    FPGA中Bank和Clock Region之前有什么关系

    FPGA中的Bank和Clock Region有什么关系
    的头像 发表于 05-15 09:32 659次阅读
    <b class='flag-5'>FPGA</b>中Bank和Clock Region之前有<b class='flag-5'>什么关系</b>?