screen_计算机组成与体系结构_第13周_星期四_第2大节_原文 2026年01月01日 17:51 好,咱们开始今天的课程。上节课咱们主要是开始了有关第八章总线与IO系统的学习。在上一次课,我们说过了总线内容、外设内容我们都去讲,咱们直接就是切入到这个IO系统的内容。在咱们教科书上实际上是从8.3开始。8.3这一节是一个综述性的内容,就讲一下计算机与外设是怎么连接的。然后引入一个概念头的接口的概念,这是第一块。然后第二块,是有关主机与外设通讯的一个宏观元素。这个8.4这一级。主机与外设的通讯方式目前我们总结为四个,分别是程序查询、通道DMA和通道各种形式。
一会儿我们会讲,上节课咱们学习了有关主机与外设的连接,主要通过一个被称为接口的这样一个。连接装置为什么要引入接口这个连接装置主要是因为现在计算机最大的特点是高速的CPU与低慢速的各种外设进行通讯。如果我们不引入接口这样一个主机与外部设备的一个中间转换的装置的话,那么意味着我们CPU或我们主机的运行性能或者效率会大幅度降低,这是它最有特点。之所以引入接口主要解决速度不匹配。
大家可以看一下,接口事实上是包含了三部分内容。也就说C主机向外设会发出地址信息,数据交换的数据信息以及我们的控制信息。大家可以看一下,主机向外侧发出的地址信息,在接口里面通过接口识别电路转变为对具体外部社会的一个。选取或者激活的过程。也就是说我们通过接口的外设识别电路,将CPU发出的外设转变为具体的外设的一个激活。这是第一块有关地理信息。
数据信息大家可以看一下,在我们接口里面会提供一组通用寄存器组。这些空气存器组是作为主机与外设进行数据交换的一个中间过程。换句说主机向外设写数据,对于主机来说,它将数据写入到接口中的数据缓冲区。他认为他的外设如果不在一些特定情况下,那么CPU会认为他的I操作就结束了。剩下的事就是接口与外设利用什么定这个并行传输方式还是串行传输方式,进行低慢速的设备与接口之间的交换。与此同时CPU可以干其他的一些事情。事实上接口上咱们概念在咱们书上有还有个概念,有个端口的概念。所谓的端口就指的是我们数据缓冲区的那些寄存器的编号,就称为端口,这是非常关键的。
除此之外,我们CPU发出的控制信号,那么与之对应这里面有控制电路是吧?就是控制电路。一个是CPU对外设的控制,以及外设运行过程的一个状态反馈都成为控制信号。
这是我们主机与外设物理连接,是通过这三部分,就是主机外设中间加个接口来实现物理的连接。大家注意下我讨论的物理连接,而我们待会儿这第三节主机与外设连接我刚才已经说过了,他主要讨论的是物理连接,这是我们上级节课讲的内容。那么这一节课我们会从3.4,不是8.4这节开始。有了连接之后,我们看一下我们逻辑连接方面,就软连接方面,我们主机与外设进行通讯的通讯方法。
事实上在我们计算机组成与体系结构这门课,或者经典的计算机从原理的课程,这个主机与外设传输连接方式就四个,分别是程序查询跟程序查询。咱们这就是这人民邮件这一套教材里面是没有把它单独一节拿出来的。在过去清华版之前的所有的家长教科书的是单独一节,也就是说我们这里讲的这个CPU与外设的传输控制方式有4种。第一种叫程序查询方式。除此之外还有三种,分别在8.5、8.6、8.7,用白眼公司把它标出来,只不过是程序查询方式咱们没标。但是如果我们说讨论主机与外设这种进行IO信息传输的控制方式,要是这点大家一定要牢记。我们说为什么把程序查询方式现在弱化了呢?因为这个主要咱们内容也比较多。
所谓的程序查询方式身上是在座每位同学。在读大学期间,每个同学基本上都干过的事儿。比如说我们C语言的老师,或者是小学期教程序设计的老师,都会要求大家利用各种语言。无论是C语言、java语言还是python语言,进行一个文就是磁盘文件操作。大家想想你们写的那个程序,我对磁盘上的文件进行操作那种方式就是什么?CU执行一段读写文件信息的程序。这种方式就是我们这里所谓的程序查询方式,只不过是咱们的外这个设备直接就默认。为什么我的磁盘把我们外部存储器,只不过是。而我们这个查询方式,要比大家写文件来的更宽泛一点?
但不管怎么样,这个程序查询方式最本质的一点是什么?由CPU去执行一段进行IO操作的程序,来完成数据的对外设的读写操作。这种方式每个同学都干过?优点这方式人人都会,就是这里我们所说的它最大优点是控制简单。缺点也很明显,就是主机与外设不能同时工作,而且多个外设之间也不能同时工作。总的来说是执系统执行效率比较低?
你想让大家写C?那么写C就是利用C源写文件操作,那是标准的几个操作,是吧?没什么好说的。Java也是很多jar,java要一个IOIO0是吧?这是它的一个特点。
下面咱们看一下宏观的站在一个抽象的一个程序查询方式的他的宏观处理流程。这种处理流程我们是什么?站在一个比较高的。层面上去去去描述的。但是你记得你说声圆加上圆是吧?
你不同的语言对于这些,比如说我这里一进行巡查方式,第一件事我要设置预置传输参数。主要是一个数据缓冲区储存数据缓冲区的手地址和传输数量。但是你要进行文件操作,是不是我有一个文件结束的标记,不太一样,但是它大致的思路是一样的。我们看一下我们宏观的程序查询方式的工作流程。
第一件事儿,CPU需在进行真正的数据传输之前,由CPU执行一段程序来预制传输参数。这才这里我们讨论那个传输参数主要是什么?存取数据的储存缓冲缓冲区的地址,以及我需要进行传输的数据的个数。就这两个概念就两个,一个是地址,一个传输。就比如说我的数据在主存中哪一段存放,它的起始位置是多是是多少,然后我传输的总的信息量是多少,就是这两个需要一致。
第二,当我预置好参数以后,当CPU选中我们需要进行交数据交换的外设之后,CPU会通过通用的IO指令或者是专用IO指令向IO接口发出命令。来启动外设,为接收或者是发送数据的操作做好准备。我们先把大家看可以看到是CPU是先自己准备好,然后在向外设发出这个IIO操作病毒,对吧?这是第二步。
第三步。大家可以看一下,需要从I接口里面取出状态字,就是我们通过控制信号线它的那个反馈?那么来这个状态字,对于这个状态字,事实上CPU需要对这个外设反馈的状态是进行一个检测,来判定数据是否可以传输。这个主要是一个,这个状态是主要是什么?一个是什么?是否就绪?说白了就是否就绪。
如果外设接收到这个CPU,那么他已经准备好之后,他会反馈的我已就绪的这种状态反馈信息。那么CPU检测到某某外设以及就绪的这个信号再进行传输是吧?这是理想状况是吧?
如果。外设反馈的这状态字是什么?我处于工作状态,我正在忙。那么什么CPU在这需要一个时间上等待等待外设完成自己的手头工作,然后反馈一个状态字,就是准备就绪状态字,否则CPU要循环等待。那么第五步假定,第四步循环等待。
等到了外设反馈了一个我已就绪的这种状态资之后,程序查询方就进入了数据传输过程。希望大家注意一下,为什么说程序查询方式这种效率很低呢?因为第一个高速的CPU就要等待外设就绪。你相当于高速的什么干不了,就等待外设,这是一块。第二个我进行数据传输的时候,每一次只能进行若干字节或若干个字的数据传输,就每次传输量是非常小的。每传输一个单位的数据,大家可以看一下,我传输过程中我需要修改。
刚才我们第一步所预知的词参数。说白了一个地址就主存缓冲区的地址要加一,而我传输数据的那个总的个数要减1。一个加一地址加一,传输个数要减1。Ok那么怎么判定为零呢?当我们传输各自的那个减一减减减减到数值为零的时候,就意味着。可以传输终止,如果不为零的话,那么我们要返回第三步。大家看一下不规律什么?大家可以看一下,如果这个传输就我修改,就我点这个值不为零的话,那么CPU做下面的数据传输,读取当前的外设状态,直到他就绪为止再进行一次数据传输。
这是个两个循环,一个是判定外受准备就绪的循环,还有一个法案结构。这是程序查询方式。这种程序查询方式大家可以看一下,是我们进行IO操作中最最基础,每个同学都能做到的。当然我的如果数据量非常大的话,显然这种方式远远不能满足我们的需要。
第一种程序查询方式,说白了它的就是执行效率太低,对吧?高速的CPU要等待低慢速的外设进行IU操作,也是说CPU有很多的。计算资源被浪费了,那么怎么办呢?我们就解决这个CPU大量宝贵的计算资源浪费的问题。就引入了我们第二种方式,中断方式。
中断方式是解决程序查询方式的一些弱点的。哪些弱点?说白了第一条大家可以看一下,就是一个CPU的执行效率太低。也说由于在我们CPU执行程序查询方式,在查询过程中CPU处于踏步等待状态,使得计算机系统性能大到前期说把程序查询方式的查询过程,CPU是什么什么事都干不了,只能高速设备等待低慢速设备状态就绪,这是第一个。第21个不足的缺点是什么?CPU在一段时间内,他只能跟一个外设进行信息交换,因为现在计算机同时连接的外设很多,你这种方式显然不能满足这个主机与外设并发工作的需求。
第三点是不能发现和处理预先无法估计的错误和异常情况。为什么这个怎么理解呢?因为大家可以看一下我们刚才这张图是吧?我读取怪罪状态,判定一半就是我就绪。如果不就绪,这就是一个循环等待过程。
假定某个怪兽在使用过程中,刚开始结构传输是正确的,但是突然在某一步里面这个外设坏,大家会发现我琢磨一下会发生什么样的问题。就我传的过程中,突然间CPU与之吞吞正在通讯的某个外设突然损坏了。那么是不是这个实际台上是不是在这出现了无限死循环,因为它检测不到外界就去做始终在读状态检测。那么对于这个外设突发的。这个损坏或其他的对这种无法预先估计的错误或异常情况,程序查询方式是无法解决和处理的。针对这几个问题,我们就引入了中断方式。大家注意一下,中断方式最开始是解决程序查询方面的那三方面的不足引入的。说白了,通过引入中断方式,首先解决了CPU可以同时为多个外设进行数据传输出的需求,就提高主机与外部的并行性。
具体的讲程序中断方式是这样的,在CPU执行。在这个CPU通过程序执行在某个环节里面,因为我的操作CPU与外设的操作一般来说都是我们事先设定好的?因此大家可以看一下CPU在通过程序,因为因为主机与外设的这种通讯都是事先安排好的。因此程序CQ在执行某一段程序中,他先说就给外设发出一个启动某个外设的信号之后,CPU继续执行其他工作是吧?就是说白了启动外设在过去启动外设以后,CPU是等待是吧?你用中断方式是它要占的。
CPU发出启动外设信号之后,CPU不等待去同时处理别的事情。别的事情当外设中就是CPU相当于你CPU发出启动信号以后,外设在工作CPU同时干与该外设无关的其他事儿?那么说白了CEO在干的同时外头启动,启动就绪以后,那么外设会。向CPU发出一个中断请求。发出的中断请求。那么这个中断请求按照我们计算机系统对中断系统设计,那么CPU什么时候能接收中断请求?当一条指令执行完毕,下一条指令还没有执行,这个就一个指令周期结束,下一个指令周期还没开始的这个节点处,CPU是可以响应中断的。也是大家也就说白了外设准备好以后,他会发出一个中断请求。
CQ在当前指令执行完毕以后,会根据中断请求的优先级判定优先处理某一个中断请求?那么最终的请求一旦响应了,CPU做一个现场切换,去执行中断服务程序,以实现我的IO操作。当我的中断程序执行完毕以后,他又回到他原有程序继续执行。大家看这是一个中断请求的处理。这种方式大家可以琢磨一下,后面我们还会作为对于中断更做进一步讨论。
这个过程或者这种方式,大家看一下它有什么一个特点。也就是说由于大家发现我利用中断颈椎病操作,我们是通过执行一个中断服务程序进行IO操作。换句话说,就执行数据传输的性能来说,中断请求这种处理方式跟程序查询方式的处理性能是一样的。大家注意一下,中断请求这种方式就IO操作的就性能处理性能,数据IO交换的性能来说,他们是一个档次的。
但是中断方式最大的优点是什么?提高和优化了CPU同时为多个外设服务的并发能力,使得CPU的性能、使用性能或者它的效计算机系统的效率大大提高。这是他最核心的一点,这个我们先简单说一下,大家可以看一下,这个描述了两种两两种是操作CPU在这儿。对应的是什么?来看一下CU在执行现有程序,在执行期间,CPU发布一个启动外设的操作是吧?那么大家可以看一下外设在进行准备这个过程。
与CPU直行线程序,这是一个同步进行的操作。看是吧?这同步进行的操作来说,在这就是在这CPU在执行某段程序的时候,我们编代码是有意识的有一个加启动某某外设范围的命令发出来。那这周继续执行原来的程序,与此同时外设进行一个设备的准备或者数据的准备是吧?当准备好以后,外设发出中断请求,CPU决定响应该中断。大家可以看一下,响应该中断闪开中断以后,C就是暂停当前程序的执行,转而执行中断服务程序。
通过中断服务程序的执行,实现了我们的IO操作。把它记清楚,他也是执行中断服务。说白了跟程序查询方式的那个程序都是程序是吧?就这个程序的执行效率来说,无论中断方式还是程序查询方式,它的传输性能是一样的。但是区别在哪呢?他有很多情况下CPU和外侧是并行工作的,而不像之前。大家看一下程序查询方式,他执行了这一小段之后,CPU转而去执行它原有程序是吧?转而执行原有程序,而外设准备下一个数据,他准备好以后再发中断请求CPU,再以执行中断服务程序的方式进行OK,这是一个过程。
中外方式最早引入的目的是解决程序查询方式。我的船计算机系统利用率低的这个目的引入的。但是现在计算机就现在计算机所有的计算机都有中断器。实际上咱们在我们第七章在讲控制器的时候,包括控制器内部都有中断机构。换句话说,现代计算机利用中断主要目标不是解决IO操作,而是什么?我们利用中断处理响应机制,对于计算机系统的突发事件做一个快速响应,这是现在计算机应用中断系统的主要目的。最早引入终端系统,我们解决IO操作。
现在计算机系统的中断服务操作是解决CPU对异常突发情况的快速响应,这是一个情况。什么叫异常突发情况?比如说计算机突然掉电了,比如说计算机出现了故障,或者是我的工控机,我在监控化工生产过程中的某一个设备状态。比如说化工产品,比如说它的反应炉压力增加,那突然增加了超出你的预值,改成预知的上限,那么这种公共机会中断系统向中央控制室发出报警信号,这报信号啥时候发出不知道?但一触发这个阈值我就要发报警。这种动乱的处理,就是对这个现代计算机的一些异常突发情况的快速响应,我们将大量在使用中药。
大家看一下,我们说中断的处理过程,说白了它核心还是什么?程序切换。程序切换就传输I操作的传输性能来说,跟程序发生关完全一样的。现场切换这块内容后面我们第五节会讲一讲,然后。我们只是以中断方式去讲。
大家注意一下,你们下学期有一门课程叫操作系统。操作系统有五大管理,最核心的就是进程或者CPU管理。CPU管理它一般会讲什么?CPU的进程的现场保护保护了跟我们这里讲的中断现场切换是具体就这些事儿。不同的课程有不同的提法?我们这里叫做中断现场的保护,而你们CPU操作系统有关进程管理叫做进程的调度与什么什么是吧?这个相当要注意一下。不要到最后这就全弄混了是吧?大家注意一下,CPU由于是由当前程序切换到中断服务程序,这种切换过程需要对于中CPU执行的位置进行一个保存,执行位置叫做断是吧?
保护断点,保护现场。保护断点说白了就是记录当前程序接收器PC的值,保护现场保护什么?就是记录当前CPU执行现行程序,它此时影响的一些通用或者专用寄存器里面的内容,这就叫保护现场。大家可以清楚,保护现场就是除了PC之外,其他CPU内部的专用寄存器和一些通用寄存器里面的内容我要需要保存,这个保存叫做保护现场保护把这个PC的内容保护了,现场保护了以后,我要加载中断服务程序。加载是不是中断服务区的入口地址我写入到PC里面,执行某个中断服务程序,是不是它对于一些通用寄存器和专用吸尘器只需要重新设置的,当重要服务程序执行完毕,你要返回原有程序执行,就把原来的PCR寄存器的值恢复出来,那么CPU就可以执行原有现所谓的原有的程序。
这个我强调一下,因为你们讲操作系统会讲这一点,会讲这一段,但我不知道他讲的细不细是吧?因为我们计算机组成讲到硬件的部分,哪些寄存器受影响我们会知道。因为再往上都是高层的分装,有时候他不讲那么多。
下面咱们看一下,有个概念就是程序中断和自渎要命的区别。这罗列了几点。这个每年我们无论是老的教科书或老的处理器,这些都有。这个说白了这就是所谓的概念?如果408考试,这就是一些选择题?
具体来讲我们说程序中断和子程序调用是有区别的。区别第一点,子程序的调用。比如说你调用函数调整的过程都是程序员事先安排好的。就说白了我调某个函数,你在编程序的时候,你事先给他写好的。而中断服务程序的执行由随机的中断事件而引发的,就是中断程序的执行,我们事先是没法预估的,只能说就是说我有中断系统是吧?中所谓的中断系统是把。
历史某些阶段中所有的中断情况,第一我统计出来了。第二我把所有这种中断可能问引起的问题的解决方案编好了是吧?假定你后面也有可能遇到,当你遇到的时候直接执行这个服务程序。
当然有的同学说了,老师你这种方法是有缺陷的,是什么呢?有一些终端我事先就不知道是吧?那么不知道了,你说我执行啥,哪一个重大服务程序肯定不知道。这种情况就是我们重要服务程序,我们说了由随机的中断事件引起的那这个中断是说白了这个事后的统计,对于刚刚我说的有些损的中断事件。
以前没见过像这种就成为什么软件缺陷或软件的因为比如说这个windows操作是吧,每每每每个月都他都会推送安全补丁包,那么这些补丁包就是以前他们他必须你开发超前的,你没必要联系,只能通过普通话去跟他求证是吧一样也说我们。但是这个中断事件这块应该是也是一个多少年的历史积累?应该说99%的问题都能解决,实际上人家要是不一定能解决,这第一点。
第二点,这个程子程序的执行与调用子程序的主程序之间是有千丝万缕的关系。比如说我调用子程序或者调用程序的时候,我进行需要进行什么参数传递,就子孙约定的执行是完全受控的,而中断服务程序的执行与原有现行程序是毫无关系的。就中断服务程序和现行之间彼此是没有关系的。
第三点是什么?就是病情。我们不存在CPU能够同时调用多个子程序的情况,我们不存在这个,但是我可以发生多个外设同时通过中断请求。向CPU提出仲裁请求,申请为我这个设备服务。
这个相当尽管刚才我们说了这个不会存在多个子程序同时调用多个子子程序。一般来说这个程序就程序员要么先后次序挨个去调用,要么进行子程序的嵌套调用,对吧?但是他子程与程子程序之间是一个线性的连接,对吧?它不可能同时。在某一时刻CPU可以接受多个中断请求,就可以接收到多个中断请求。最终他通过中断判优电路只能选择优先级最高的那个进行执行是吧?这点就是我们后面再讲一下这个好。
中断的分类大家可以自己看一下。什么自愿中断、强迫中断、自愿中断。因为你们咱们是软通专业是吧?你们不学会编身上,我们上大学的时候我们会有会变。一般来说像我们早期我们上大学的时候讲的是刀子操作系统。刀子操作系统他有很经典的英特尔21H英特尔13H这个。
这就属于这种类似于这个自愿中报自愿工作是吧?这这是这是东段的入口地址,它下面有有多具体的功能。那么这个我就说我大家自己去看什么内中断、外中断向量中断、非向量中断这多重端单中单重中断,多重中断。其实这个概念自己去看好,这是有关这个中断方式。下面咱们看一下第三种L传输IO信息传输方式,所谓的DMA方式。DMA是direct memory,thanks.
这种方式刚才我们说了,无论你程序查询方式还是通话方式,就数据传输性能来说都是非常低效的。每一次只能传输若干个字节或少量的几个字,它的传输信息量是非常小的。但是我们有一种需求,我们希望主存和外设进行快速的信息交换。比如说打不恰当的比方,我过去,过去我们现在咱们一般就是比如说我想看看电影,在电影看看电影就是要么直接在网络上,过去网络性能不是很低。
一般来说我们买一个一般是网上去当一部片子以后,我电脑上播放是吧?电脑上播放,这相当于。这个硬盘中我的数据通过播放软件?要快速的向屏幕上,向显示上这样进行输出。这属于短时间,需要大量的在硬盘、内存、显示器上的数据进行传输是吧?他当天写完之后再答辩。
一班和2班的80的第七装车的教育。
直接接棒就行了。
裁判进行。
好,咱们接着刚才的讲。也就是说在实际的使用外设过程中,我们需要主机和不外设和内存之间进行短时间的数据的快速交换。我们传统的无论程序查询方式还是中断方式,都不能满足这种短时间内外设和主存之间进行数据化交换。怎么办呢?我们就提出了这种方案DMA方案。
换句话说,这种方案最大的特点是什么?他是在主机外设和主存之间建立一个专用的数据通路,像DMA身上我们也称为DMA控制器。所谓DMA控制器就是一种专用的接口,这种专用接口可以实现外设和内存之间的数据快速交换。那么就DIV控制器,这DIV控制器首先大家明确它是一种特殊的接口。装置是吧?特殊的接口不是通用接口。我们就说我们前面换句话说,既然是它,那么它最终实现效果在数据传输过程中,既不需要CPU的干预,也不需要软件的介入,就可以在DIV控制器这种专用的这种接口控制器的控制下,实现主存与外设的数据高度传输。这个我们后面会展开去讲。这是DMA控DMA方式。这种方式。
那么DMA方式大家可以看一下它的特点。第一,DIV方式使得主存与CPU的固定联系发生了变化。过去我们说CPU能够储存,能够C被CPU直接访问是吧?但是有引入了DMA方式之后,主存既可以被CPU访问,也可以被外设访问,这就是跟之前我们讲的是不一样的。
第二,在DIA进行数据传输过程中,为了进一步优化它的传输速度,主存地址的确定,传输数据的技术都由硬件电路来实现。第三,为了实现数据的快速交换,主存中需要开辟专用的数据缓冲区,用于及时提供或者接收外设数据。就说你要与与第二名公司进行配合的话,你主持中间你要专门进行处理。
第四,由DMA这个证传速度比较快,CPU可与外设进行并行工作。第五。DIA传输过程中,由DMA控制器负责数据的具体的传输。但是DMA在进行数据传输准备期间,CPU会执行专用程序进行预处理。当CDIA传输结束之后,会以中断方式向CPU发出请求,要求CPU进行善后处理。这个DMA传输方式只是在数据传输过程中,他来用电源控制器控制传输之前的数据准备,之后的这个善后处理,都是由CPU来完成的。
当然尽管我们说这种方式有很多不足和缺陷,但是比起前面两种CPU与外界的病因工作的性能要大大的提高,这是他的一个DIA和中段的区别。大家可以看一下第一中断说白了做IU操作的时候,它是实现了程序的切换是吧?由CPU由当前程序转变为执行中断服务程序。中断服务程序结束完毕以后,他又回原有程序,他需要什么现场的保护与恢复。而DMADMA传输方式在数据传输过程中不占有c to任何资源,这是第一点。
第二点也是非常关键的。刚才我说过了,我们什么时候响应中断请求。当一个指令周期结束,下一个指令周期还没有开始的时候,就一个指令到下个指令执行这个位置上,CPU才能响应中断请求。你看刚才我们写的对于中中断响应请求的响应发生在每一条指令B之后,RDMA的响应是在每一个基机器周期结束之后。那么大家想一下,一个指令周期至少有两个机器周期。比如说你一个直立周期,你最多想一次中药检修,而你至少能响应两次以及两次以上的电力,这个响应时间是不一样的。这是这一点是非常关键的。
第三点,这个中断进行数据传输过程中,CPU是要干预。说白了CPU就要执行中断服务程序,那肯定CPU而DMA方式在数据传输过程中,CPU是不参与这个数据传输管理,这个传输管理由DMA控制器来完成。像第四点,第二个请求的优先级高于中等请求。高铭烁,这第四点跟我们第二点完全一样的是吧?一个是责任周期,一个责任周期结束,下个责任周期没有开始在切换的节点可以向前一次中断,而DMA中断一个指令周期,至少两个机器周期,我可以至少写两次或两次以上的第二请求。
这是第三点、第四点、第五点说明了这个中断方式和DMA方式的使用特点。DMA方式只要解决外设与主存之间的快速的信息IO操作。而DMA方式大家可以看一下,我们现在计算机利用中断方式主要解决对于计算机系统的异常事件的处理。说白了对计算机系统的突发事件,我的快速响应和处理是用的中断方式来实现是吧?我们引入中断方式主要解决CPU与外设并行工作,然后进行数据传输,这最早期中断的目的。但是现在计算机这个功能已经很弱化了,基本没人用。而利用中断就要解决对计算机系统的异常事件的处理,这是第五点。这是这块儿。
下面咱们看一下通道怎么去。这个。这个后面我们再说。通道方式是我们I信息传输方式的最后一步。通道方式事实上什么是通道,大家一定要明确。通道叫PU大家看一下,通道叫PU如果前面加个C就是CPU是吧?通道它前面没有C那么这说明什么?
所谓的通道是一种专门进行IO操作控制管理的处理器。这跟我们前面的完全不一样。在这里我们也写了通过这种说具有特殊功能的处理器,它具有自己的指令和程序,通过执行通道程序来实现数据传输。
我们说白了通道的引入是在过去我们大型机,比如说像银行是吧,银行最最典型的这种它的应用场景。比如说工商银行在全球有两个数据中心,一个在北京西三旗那边,还有一个数据中心在上海。就中国工商银行全球就两个数据中心。这两个中两个数据中心的这个服务器一般都是高性能的服务器,是吧?咱们学院有人谈,应该是工商银行前些年会议下来的一个服务器。它就是这样一个特点,就工商银行的服务器是为全球所有的工商银行的服务网点ATM机手机手机上的那个以工行APP服务的那你想这些服务器它同时要挂接多少个终端设备?如果全靠你工商银行的中央服务器,他啥也不干是吧?
那么怎么办呢?对于这种大型机来说,它将IO操作专门指定给通道来完成管理。通道这就说白了就是一个PU,是一个进行IO操作服务的处理器。他有自己的指令,有自己的程序。这些指令,这些程序就是专门进行IO操作是吧?说白了在早期我们讲计算机组成原理的时候,这个就属于多机器。现在咱们不刻意去加强这个点了。
具体讲通道是独立的执行通道程序产生什么?相应的控制信号,以实现对外设的统一管理,以及外设与股东之间的数据传输。但是希望大家注意一下,尽管我们说了通告是一个专用的处理器,但是它和我们的主机的CPU2者不能同日而语。应该来说通道受中央处理器就PU需要受到CPU的授权和控制。也就是说CPU可以决定哪些通道,哪些处理器启动关闭授权,哪些通道管理,哪些区域的排油设备,它有授权的过程。
好,这因为这块内容蒋老师坦率讲他这个PPT没有以前写的好是吧?他换他把后面东西给放在前面了。好,下面咱们看一下中断系统。实际上咱们第五节中断系统,应该是作为咱们第八章的一个非常重要的一个东西。因为是现代计算机与DMA可能用不上,通道可能用不上,但是任何计算机都有中断系统。下面咱们看一下有关中断性的内容。
首先咱们要给一个中断系统定义,所谓的中断系统是计算机实现中断功能的软硬件总称,这叫中断系统。硬件方面大家注意一下,硬件方面在CPU内部我有中断机构。这个咱们在第七章讲控制器已经明确的给大家进行指出来。也就是说中断系统的硬件部分,包括CPU内部有中断机构,主要是控制器。除此之外,在外设接口里面有中断控制器。有了中断控制器,外设可以向CPU发出中断请求。如果没有中断控制器,你这请求中断请求是没有的。这是硬件,这个CPU和外设各有装置。
除此之外。我们在软件设计过程中,我们编写了中断服务程序。这个中断服务程序有两种中断服务程序。一种是系统根据多少年的历史经验,历史数的历史数据来知道它有可能这种设备它能发出什么样的中断。我是先被编写好各种中网服务程序,以公需要时候使用。除此之外每个同学还根据自己的需求编写特殊目的的终端服务程序。事实上我们汇编语言学习的目的就是要求大家最终掌握中断服务程序的设计。
咱们因为软件工程专业,因为咱们现在计算机就分的转分的专业越来越细了,过去就叫计算机科学技术专业。那么他们一定会学习汇编这门课,汇编这门课就是解决中断服务程序的联系。可能咱们现在都讲了什么大数据AI是吧?但是你想想在很多生产制造业,生产线上的很多操作都会遇到突发情况。对于突发情况的快速响应就是利用终端服务程序。你说你用什么python,用java甚至用什么C有时候都不一定是吧?都是非常底层的对硬件设备的快速的一个代码变现。那用什么会有量的?好,那么这有关中断系统的定义。
下面咱们对中断由中断信号产生到它出处理全生命周期进行逐阶段的学习和掌握。比如说外设从发出诉讼请求到这个中断程序执行结束,看一下它有哪些环节我们需要掌握。实际上我们咱们教科书上把它掌握,不是掌握就分成了五大部分。
第一件事是什么?中断员发出中断请求。首先这引入了第一个概念,所谓的中断源的概念。所谓的中断源就只能够引起计算机中断的事件,就是中断源。通常一个计算机有多个中断源。希望大家注意一下,由于每个被告人向CPU发出规范请求,发出的时间是随机的。我们计算机系统对随机发生的事件,我如何找到和判定呢?
以及后续的服务工作,大家都下现在计算机为每一个中断员,我要配置一个中断请求触发器。就每一个中断源它对应一个中断请求触发器。当你这个中断源发出中断请求,就意味着就他相应的中断请求触发器被置位了。这个置位大家听清我说的置位什么意思?有的计算机系统是低电频有效,有的计算机系统是高电频有效,说白了置0或者至一是吧?
当这个中断解除触发器被置位以后,就意味着与这个中断请求触发器对应的中断源发出了中断请求。也说计算机把这个随机。发生的中断请求信号我如何记记录呢?就是利用中断请求触发器,而且每个中断源唯一对应一个中断请求触发器,就二者是一一对应的。你判知道了某个中断请求触发器被置位,那么就知道了某个中断源发出了中断请求,就是他们一一对应的。
刚才我说了每个中断源对一个中断请求触发器?比如这里INTR中断请求触发器,它是高电频有效。也就是当这一位请求触发器被质疑的时候,就意味着该中断源向CPU发出了中断请求是吧?这个意思也是我们计算机把不确定的事情变确定这个过程就是每个中断源我给你一个触发器智能或者第一是吧?
每一个中断员对这个请求触发器。但是在任意时刻大家可以设想下,计算机系统可以同时接收到若干个中断源,同时发出中断请求。换句话说,有若干个中断请求触发器被质疑了,就在同一时刻有若干个中断减刑处罚被质疑。大家想一下,CPU只能执行一个终端服务程序,那么我执行哪一个呢?这是需要我们中断探幽电路来进行中断判优。
通常计算机系统会将它全部中断源,根据中断的性质和处理的轻重缓急设定优先级。大家看一下这个,因为我们在设计这一套中断系统的时候,由于我要设定中断请求触发器,是不是意味着所有的中断源我事先都知道是吧?你不可能随机产生一个中中断源,反正CPU你现在给他配置一个中断紧迫关系是不可能的。
一个事情是设定好的。因此我们首先根据所有中断人它对应的中断性质和处理的这个重要程度设定一个优先级。优先级高的我先处理,优先级低的我后处理。通常确定中断优先级的原则是什么?对于那些提出中断请求以后需要立刻处理的,否则会造成严重后果,中断员设定最高优先级,而可以延迟处理的中断员设定较低优先级。
一般来说设备故障对应的中断请求优先级高,然后是简单中断,最后才是IO中断。那么硬件故障这是优先级最高的。有设备故障,有什么掉电,还有什么突发异常?这个优先级你可以人为的设定?但是一旦设定好以后,优先级是不能更改的。大家听清楚中断源的优先级是不能更改。反正我们到后面我们有一些别的手段,但是不是改的这个优先级,把它弄清楚。
有了优先级的概念,当一个计算机系统同时获取到了多个中断源发出的中断请求,我们进行什么中断判忧?一般来说我们分为软件判优和硬件判优两种。一般来说我们以硬件判优为主。为什么?因为我们目前终端服务系统和终端处理机构是对于计算机的异常突发情况要做快速响应。你还用软件的方式,显然根据异常突发情况的处理是不相匹配。咱们一起来看一下这个软件盘优是怎么做的,硬件盘幽又是怎么做的。
软件盘优说白了通过执行判优程序,大家可以看这种判优程序的的过程。也要第一段判决程序,首先我挨个去访问中断员。什么叫挨着房中状元就挨着读琴。它对应的中断请求触发器里面的信号的值?哪个值有效?
就第一个就我默认的就是大家看一下INT1、INT2、RNT3、RNT41到ITN这个查找中断源的这个先后次序,就是隐含了一种什么中断优先级的排序。也就按照目前我PPT画的这张图,INT1的优先级是最高的,然后底下是2,然后三可以保证了?换句话说,如果你要改变中断人的优先请求,把中断这个中断原房屋的先后次序进行调整,就可以改变它的优先级。软件是可以改,但硬件是改不了。这点就是比如说通过查找中断源的这个先后顺序,就代表了他中断优先级的,是吧?这种方式优点我可以灵活修改中断文的优先级,但是缺点速度太慢是吧?
战略速度慢,因此我们主要以硬件占优为主,那么硬件判优。事实上我们,我看一下过去交割书上会画那个快速电路。现在不怕了。
我们说硬件判优电路,优点是什么?快运速度快,但是成本比较高。而且这个什么判优硬件判定一旦设计好以后,对应的中断源的优先指令是不可更改的,是吧?他喷漆就他用固化了,他一点固化,你次序就没法更改了,这是一点相当注意的好。
中断请求中断判优是吧,判决完了以后就开始中断响应和中断处理。咱们看一下。按理说你看中断发生请求,请求完以后中断判忧是吧,然后应该是中断执行。实际上派出过程之前是一个中断响应一个条件的问题。就中断响应并不是说CPU在任何时刻都响应外部中断,他也有不能响应中断的时候。
下面咱们看一下CPU响应中断条件有几种,有几个就是几种就是说CPU响应中断的条件。第一比较简单,CPU要接收到中断请求信号,这是第一点。第二点是CPU容许中断。什么叫CPU容许中断?CPU开工后应在CPU执行生命周期里面并不是时时刻刻都处于开放的。它也有观众我的时候,这个我们后面会讲,它有我运输的图给他画一下,说有CPU在任何时刻并不是处于开放的状态。
大家注意一下,所谓的CPU开中断关中断,我们对应一个中断允许触发器。当这个容器触发器被制备的时候,CPU还能够响应中断请求。如果这个中断情容许复发起会复位的话,CPU处于不可中断状态。有人说他有一个这样一个请求,触发中断允许触发器。如果这个被质疑,咱们假定高价率有效,被质疑就意味着CPU可以接收中断请求信号。如果这个信号被置零的话,是CPU暂时不能接受重要情绪信号。待会我们会看什么时候,这是第二点,第一是发生中断请求。第二容许中断。第31条指令周期结束了也说一条指令执行完毕,下一条指令还没有开始执行。这个位置上就一个指令周期结束,下一个指令周期还没开始的时候,你这时候才可以响应中断,这是允许中断了三年长效。
当你前面中状元发出诉讼请求,CPU响应了中断,我要做中断现场的切换。就比如说C端正在执行当前现行程序,你要换到多少服务程序。那么有关保存PC的值,保存通用寄存器的值等等的这一些操作。就这个操作过程,在咱们教科书上把它称为中断。是这过程的保险厂就保存PC的值,保存通用寄存器专用寄存器的值,这个过程在我们这把它称。为什么执行中断停止?
执行中另外同事是吧?但是大家注意,在这我们孔子给大家提醒,中断引指令并不是指令系统中的一条真正指令。他说白了在互动教科书上我们叫法不一样。有这种现场保护,我们称为中软银指令是吧?但操作系统就不是这种叫法是吧?
具体来讲,中断零指令的执行,大家看一下他要干几件事。第一,保存断点。什么样叫断奶?这样一写,所以保存的断点就保存程序寄存器的内容,这就好公断。第二,什么暂不允许中断,叫关中断是吧?这里遇到了刚才我们所谓CPU响应中断的条件的第二条,当然说开中断,当我执行中断引指令的时候需要关中断。也就是说你执行CTO到中断服务程序切换的的这个过程是需要端中端。换句话说,你在执行中断引指令这个期间,哪怕有新的CPU,CPU新的中断要发生了请求他也是护理。
关注了以后,我要进行中断现场的保护。大家看一下在这我们说的一所谓的中断保护,只要什么?将CPU主要寄存器的状态进行一个保存。一般这种广告一般最常见的套路就是什么我的信息寄存器的信息故障,我保存那个对账,就PC的内容和寄存器的内容我入账。
这是这关通了以后,我进行现场保护,然后。这个刮弯中断以后。关中断以后,上这个现场保护完以后,实际上有个开中断的过程。对,后面说就是然后将所有引出中断服务程序,大家可以看一下,看他干什么。说白了把中断服务程序的入口地址装入到程序提出器TC。这就中断音指令的工作。那么我们还是把后面一张图调出来吧。
大家可以看一下。这张图。这张图还差一丢丢是吧?大家可以看看这张图,贾老师多少年都没有变。
事实上我们执行中断银指令,在整个中断服务有生命周期期间有两部分。一个是由当前线程序到公共服务程序的切换,需要关断,但是最上面应该写个关中断,然后保护现场,判定中断员,然后开中断。然后执行中断途径,就刚才这样判定中断园还有什么?把中断服务区的入口地加进去是吧?这是一个环节。然后执行中断服务程序这里已经开了是吧?
说白了执行中断服务程序期间,我可以响应优先级更高的工作,重大服务程序之结束结束之后大家看一下关中断恢复现场开工段。实际上咱们这个页PPT里面对于结尾部分关中断开中断,这是对应种类部分上嵌称上面写一个关中断是吧?关中断开中断中间是保护现场加装载我的终端服务器的入口地。结尾部分关站开通端恢复现场,这是保存现场。这个恢复现场OK也就在这两个阶段里,这个关中段到开工段这中间这整个完整过程,我们都称为中断民指令的执行。
好。这个PPT是把我们刚才的操作用一个具体的代码形式进行描述。这个你们自己去看一下,我就不多说了。也就是说通过中断引指令的执行,我们最终是将CPU执行的原有程序的现场进行保护。然后将我们中断服务程序的入口地址给装载到PC里是吧?
那么这个过程用这张图进行描述。你看这就通过判决决定对某个中断员响应。然后对于响应中断员获取中断员的服务程序的入口地为所谓的相关地址,然后再将下进行一个加载是吧?这个我就再不啰嗦了。
对于这下面入口地址有两种形式。最简单的一种形式销量地址就是中断服务程序的入口地址。这种形式一般来说属于什么?我们程序员个人定制的一种形式。
而你要调用系统默认的一些中断服务程序,一般我们会用第二种形式,就是所谓的向量地址是中断向量表的指针。比如说我刚才说的英特尔21H英特13H你们可以查一下我们这个8086汇编英特13H英特尔21H它代表什么含义?它就是相当于中断向量表的入口地址。在英特尔13H下面有很多具体的子功能,英特1英特13、英特尔21都是有账目。你需要调用来英特尔H下面的具体某一个提供的OK对,这是第一个。
第二个就是你要调系统的中断服务程序,一般就是采用下面地址是中断向量表的指针这种形式最多如果自己写,尤其工控机,我们过去讲工业控制因为我们说工业控制上很多东西并不是想象全是AI大模型?还有很多很多基础底层的东西。那么这个中断服务程序的编写使用,这是一个最基本的操作。
刚才东到现场的保护与恢复,我大概给大家说了一下。说白了就是两样东西,PC和主要寄存器。主要是这两块,别的就基本上这个就没有什么。好,下面咱们。
好,那就一会就下了,课间休息了。好,咱们休息五分钟,待会再讲。
记录。
可能。
请同学们把你们手机拿出来到咱们爱里群里面看得到。
五分钟之内有效。
你看是。只能还是会自己去打,你给我截个图,让发刚才发个微信,你换一下你这个酒。我的家。我们对这个。
好。
这个就是35到40之间,这个签到是有效的。
好,咱们接着刚才我讲。刚才这个我们有讲到了有关那个中断嵌套。也就是说按照我们刚才的这个描述,大家可以看一下,也就是说在我们中断服务程序执行期间,由于这个中断允许触发器处于开中断的状态。因此在执行中断服务程序期间,如果CPU接收到了新的中断请求,而且这个中断请求你当前正在执行的中断服务程序的那个中断请求优先级更高的话,那么我依然在中断服务程序里执行期间,可以暂停当前这个中断程序的执行,转而推行新的中断服务程序,那么就会出现这个图所描述的一个状态。也就是说,在执行中断某个中断服务程序的期间,如果有新的中断服务请求出现,而且最终判定这个中断服务程序的优先级高于当前正在执行的公告诉讼请求。那么我会暂停当前的这个中断服务程序,转而去执行优先级更高的中断服务程序。这就是中断服务程序的嵌套。
这是这块,对于这个开中断和关中断,刚才我们已经用这个图进行跟大家描述了。也就是说在中在整个中断服务程序执行的全生命周期,大家注意一下,在中断服务程序全生命周期,这个在中断服务程序执行期间,我可以响应新工作。但是在这之前之后都是我们中断您指定的执行过程。换句话说,他都有是什么关中段保护现场,然后再开工段,关中段恢复现场开工作。在这个期间就执行中断已久的期间,哪怕有新的中断请求,我们一样不会想到共享。说这是我们需要跟大家去讲的一件事儿。
好,下面咱们要讨论一个比较有意思的问题,所谓的中断屏蔽。那么什么叫中断屏蔽?说白了。我们是一种。对于已经设定好中断优先级次序,在这个前提下,我们能不能根据实际的需要去决定中断服务程序的执行的先后次序呢?大家听清楚,就是我中二人的优先级是不是我事先已经约定好了是吧?但是在实际的程序执行期间,你原来约定好的终端优先级可能不满足我的实际需要,那么怎么办?实际上就用到了我们这里的中断屏蔽的概念。
这里向大家注意下中断响应和中断。是两个不同的环节中断响应。和中断处理。
中断响应。就中断响应的先后次序,由我们事先约定好的中断优先级来决定。大家听清楚就是中断我先响应A中断源发出请求,而先响应中断员B的这个中断请求是由我们事先约定好的中断源优先级决定的,是吧?响应次序。但是我比如说我的中断员A的优先级高于中断员B的。这个优先级是要约定好的优先,那么也就是中高元A的优先。即由于高于中状元B的优先级,因此A中状元的优先级中断状元我优先响应优中二元B的优先级由于它这个优先级的弱点它后响,但是我可以通过某种手段使得先响应的A中案源的服务程序。晚于中端园B的服务程序的执行。
这就是什么?中断响应和中断处理的趋势。比如说中断员A先响应,但是他服务程序后执行。因此大家会想在我们中断的过程中,中断响应的次序和中断处理的次序是两个分开的事情。中断的响应次序由事先约定好的优先级决定,而中断的处理次序要用到我们这样的中断屏蔽技术。也是说当中断人发出中断请求之后,该请求并不一定送给CPU去执行,而且可以根据我们用户的约定有选择的封锁。也不是封锁,应该是改变本案服务程序的处执行的先后次序。
我们怎么去做呢?事实上大家看一下我们的皮肤量也是很清楚,我们为每一个中断员。刚才我们给说了我们每个中断员刚才我们说了我们每个中断人员都有中断请求触发器是吧?与此同时我为每一个中断员再配备一个中断屏蔽孵化器,也是一个督导员,一个请求触发器,一个屏蔽放弃。我就利用这个中断屏蔽触发器的电路的设计,使得我动态改变中断服务程序的执行的次序。就所谓的先响应后处理,我可以做到这一点。
大家注意一下,我们说了每一个中断源对应一个中断触发器是吧?每个中断源还对应一个中断请求触发器。事实上我们将多个,比如这个屏蔽触发器,我组成一个屏蔽寄存器?因为所谓的触发器就对应的每一个比特位,你们每个笔特别引出来很麻烦,肯定是把这若干笔特别连到一起。我构成屏蔽处罚器。
还有中断请求,中断请求寄存器,中断屏蔽这两个寄存器。里面装的信息这里叫什么?屏蔽字或者屏蔽吗?这个是我们可以动态改变屏蔽寄存器里的数值。通过对它的设定,我完成先响应后执行的一个处理流程。所谓的中断屏蔽就是通过设定中断屏蔽寄存器里面的内容,来动态的满足我的实际的需要。
在这儿这两个概念大家一定要记,中断的响应次序和中断处理程序。中断响应次序是由中断事先规定好的优先级来决定。而中断的处理次序,我可以利用调整中断屏蔽寄存器里面的0101状态,来改变真实最终的中断服务程序的执行的先后秩序。
大家可以看一下。这是中断员,每个中断源都对应一段中断频率触发器和中断请求触发器是吧?大家可以看一下,你一触发器就是有0101的那个状态,只不过把所有的请求触发器屏蔽触发器转变为请求寄存器和屏蔽,就把所有的连接在一起就成了吸尘器了,是吧?而且大家看一下,两两都是通过语文对外肯定输出的,是吧?你这个请求次序你改变不了,但是平均值可以改变,是吧?好,那么一般这种情况下,我们这个中断请求就中断屏蔽。
中断比如咱们看一下某一个中断系统说有16个中断源,每个中断源按照优先级赋予一个屏蔽字,零表示开放,一表示屏蔽。那么我们画一张表,这16个中段的1到16对应的评级是大家可以看一下。因为他有16个中断源,对应的这个屏蔽字就16位。大家看一下,一中断原因的有这个对应的屏蔽字是全交是吧?中断元16的屏蔽值10 000001个1。
大家可以看一下,由这张图我们得到证据结论,中断原一的优先级最高。他禁止本级或和更低一级的重要请求。中断源16优先级是最低的,他只能禁止本级的中断请求,这是默认的情况。如果我要动态的改变,那我就去改变这个屏蔽这里面内容。
大家在这就是这一页PPT就讲,就是所谓的中段升级。大家看一下还是两件事,中断响应和中断处理。我们同样文字给它标注了中断响应次序,由中断优先级来决定。而中断处理秩序可以利用屏蔽码来改变。
好,刚才我们讲了一个例子,那例子要写16集,写太麻烦。我们又给大家举个例子说某计算机系统有四个中断源,它对它的响应优先级次序,中断响应的优先级次序1234。因此它默认的中断处理程序和响应次序是一致的,因此它从立马就写成这样,因为1234就说明他优先级,他是两级优先级,第一级的评定,1111401100110001OK。
然后如果按照这个次序,假定我们有当前的程序的执行状况。我们画一个曲线的图,大家看一下,在某一时刻我同时有中断员一、中断员2、中断员四发出中断请求。由于我的优先级是1234,我的屏蔽码也是1234,按照14点。因此我的执行的过程大家可以看一下,这一时刻124都发生了中断请求。那按照我的优先级次序的话,因为中断员一的优先级是最高,先执行中断程序一对应的操作,这个执行完毕以后,我去执行中断原二发出的中断请求。大家可以看一下,我们这张图是画的是非常有讲究的。
大家看一下,我由现行程序接切换到中断服务程序一,由现行程序由服务程序一切换到原程序,然后再切换到中断服务程序是吧?这一小块。那么这个时间对应的什么?对应的中断停止另一个执行,先恢复现场,然后再保存现场是吧?这实际上是发展就中断零指是执行了两段中断零指令,这两项大家一定要注意一下。
我记得在过去有些其他老师编的教科书,在这儿写的是比较粗的,但是咱们蒋老师这块写的是比较细的。你们蒋总这个写法是对的,其他教科书如果跟这不一样,是吧?那么以蒋老师这本书为准OK。也说一执行完以后恢复就切换到原有程序,然后紧接着又切换到中断服务程序。
二的执行,执行完毕以后再执行四个好,这是某一时刻同时由中断员一二次发生的点球和执行过程,然后再过一段时间,中断缘三发出了中断请求是吧?那么由现行程序转而到中断服务程序三日执行,在中断服务程序三日执行期间。中断服务程序中断员一和二分别先后次序进行,就分别发出中断请求。由于中断服务程序中断原因的优先级高于3。
我实现了中断服务程序的嵌套调用是吧?那么由三变成了一一执行期间中断原发中断原二发生中断期间中断员二优先级低于一的。中断源中断服务程序一不理会他,只有中断服务程序一执行完毕以后切回3,然后再紧接着切回到二去执行。就二执行完以后再回中断服务程序三执行,然后再执行。这是说按照我的响应次序和处理次序都是12341致的。现我通过屏蔽码将中断次序改成1432。大家看一下我的中断处理次序改为1432之后,我对应的评定法是怎么写的。
对于中断员一的屏蔽,他没有做任何修改,还是1111。下一个是四大家,看一下对于中断源四的频率码写的是0111,是不是跟我们刚才的平码写的是不一样的,是吧?刚才是00001个1,先变成一个0111,紧接着是三个。0110的这个写法不是你随便写的。这个零代表是优先,中断员一的是吧?中断员一的他肯定要开放。
然后这个零是对代表中外元气,他要开放对吧?011那么中断元二的屏蔽码是0100。除了对于本级的中断员,他要跟锁信仰的重要开放。
好,有了这个屏码的设计,我们还是刚才程序某一时刻,1243个中断员,八个中断请求,在关键时刻先后出现2312对应的CPU的执行运动轨迹应该是什么样?大家可以想一想。由于时间关系,我给大家直接画出来。
按照现在我们的相应的处理的,我们响应次序没有变,但是我的中端处理器就发生了改变。同样模式和124同质化中断请求,首先我优先奖励优先级最高五一执行完毕,执一执行完后紧接着交换现场再切2。这个二是表示它的响应过程是吧?但是它响应不执行,然后二切换到4,我想。4、执行完毕以后再执行。然后后面是312。大家可以看一下,就画出了跟刚才不一样的一个曲线,对吧?这个大家注意下,这是我们的中断的执行过程。
因此我们说中断响应和中断处理是两个阶段,相应的不一定先处理是吧?这个点核心一点讲完了,这样我们有关中断服务程序的学习,我们归纳总结一下。中断全过程是指当中断员发出中断请求到中断服务程序执行的全过程。这个全过程我们分了五个阶段。刚才薛总都已经讲过了,中断请求、中断判决、中断响应、中断处理和中断法规是吧?响应和处理是两件事是吧?响应是先天的,也是有硬件。我们是由于我们现在都用的是硬件判优电路,由于硬件发生电路决定了中断源的优先级是固定好的。
2、我先响应后处理,我动的是什么中断屏蔽。就中这个用他的职责修正改变了真实的中网服务程序的执行的先后的顺序是吧?然后是中段返回OK,这是全过程。因此我们说所谓中断处理就执行中断服务程序。就是宏观讲他就分成三大部分,准备执行和返回。也就是说在第一部分准备过程,返回过程都需要关中断开中断。也就说在执行中断引指令期间,我是CPU不响应任何中断请求,哪怕优先级更高的,我也不想,我真的不想。
这个讨论现代计算机有关中断的中断概率。因为现在计算机分成内中断和外中断。外中断一般来说是事先约定好的执行特定功能的操作。而我们一般来说,现在计算机主要解决是内中断的一个操作,对于异常和突发情况的快速响应。
对异常和突发事件我们又分为故障、自线和终止这三种情况。故障是什么?内线是什么?终止是什么?在这我们有明确。
您说对于所谓的现代计算机利用中断系统进行异常突发情况的处理,就讲的是我们这里故障内线和中,尤其是后面两种。后面内向和终止。这点希望大家一定要注意一下,这个就回头大家看书就行。因为不同的计算机系统对于这一部分的约定是有差异的。
终止特指是在指令执行过程中,发生了使机器无法继续执行的硬件故障。比如说电源掉电,比如说某一个部件损坏无法工作等等等等。这需要调用服务程终端服务程序的重启系统,或者是做更其他的一些工作是吧?这个就对于这属于中断优先级最高的,一般都是硬件故障是吧?咱们这个就是人人油版的教科书,对于这块做了细分,过去我们不这么细分。
好,这我简单说一下,下面咱们看一下DMA。这个DMA传输方式的一些内容。DMA方式我们说了,首先什么是DMA控制器?我们这里将DMA传输方式对应的接口电路就能够执行DMA传输的接口电路被称为DMA控制器是吧?
这是在通用接口的基础上一个特例化的改造。就他做了一些强化,尤其是有一些比如说这个技术装置,比如说这里的内存地址计数器。如果不做改造,这内存地址计数器我可以由软件实现,也可以用硬件实现。
由于DIA要强调数据在主存与外公之间进行快速交换,因此这里的地址储存地址计数器是由硬件装置来快速完成。也就说也就是说该计数器的初始值是什么?主存缓冲区的首位值。在进行数据传输的时候,该储存计数器的值不断的增加。一以增量的方式给出在主存中进行信息交换的那批数据的地址是吧?这是第一个。
第二个传输长度计数器。这个传输长度计数器是完成一个快速的简易操作。它的初始值是我进行传输这批数据的总量是10K20K还是多少。你总量这个总量值个数量,然后写入到这个传输计数器,传输长度计数器,然后数据缓冲计时器,这个也是需要快速交换的时候。用到大家看数据缓冲寄存器,它的作用就是暂存每次进行传输的数据。
大家注意下,这里有输入和输出的概念。在我们对过去我们有IO设备,我们这里的输入和输出是站在CPU角度来说的当CPU接收数据,这就是对CPU来说它是输入是吧?如果CPU将他预算结果要对外写写硬盘,在显示器上播放,这就叫输出。这个大家注意一下,就是有时候输入输出站在不同位置上,输入和输出可能就弄反了。我们这里讲到强调就是这里所讲的输入和输出操作都是站在CPU的视角上看。这数据是给我CPU的,它就叫输入。如果我CPU往外推的数据叫输出,这个相当于如果说在这基础上大家可以看一下。
我们是怎么进行数据传输的?比如说输入,首先数据从外设输入到数据缓冲区里面,就接口一般我们这有数据缓冲区是吧?就是你先把数据在这个数据缓冲区里面所有准备好以后,再一次性的内存和这个接口寄存器中的接口中的数据缓冲区进行快速数据交换。反之CPU要外设写数据,也是CPU将数据写入入到接口中的数据缓冲区里面。CPU认为他的写作就是写操作就结束了,CPU就干别的事儿了。然后剩下的事儿就是接口寄存器与外设,按照外设的处理速度去写数据的,这是第二块,第三块,第四块是叫做DMA请求触发器。
DMA请求触发器。大家要明确DMA请求触发器位于什么DV控制器里面。先拉住一下。
DIN请求触发器的作用是什么?当外设准备好数据之后,外设向DIN请求触发器发出的信号叫做DMA请求信号。这信号过来以后会将这个DMA请求触发器置为,就DMA请求是由外设发给DMA控制器。大家听清楚,就DIA请求指的是外设发给DMA控制器的请求信号和DMA请求。
大家想一下,外设发给DV控制器的叫DMA请求,DV请DMA控制器发给CPU是什么信号?那个也叫DF启动信号吗?待会我们一起来看一下。然后是这个控制电路还有中断机构。大家注意下,DI控制器里面还有中批中断机构。
为什么?刚才我们说过了当DI传输完毕之后,D控制器会发出中断请求给CPU,叫CPU进行收尾结尾处理或收尾处理。那么咱们一起来看一下。这一张图描述了储存CPUDMA控制器外设之间的连接。大家看一下,这是储存,这是CPU,这DM控制器就是外设。
那么想一想咱们DMA干什么的?外设和组合集的要进行快速的数据交换是吧?当外设将数据准备好之后,搭再搭配一下外设将数据准备好以后,向DIA请对控制器发出什么?DMA请求。大家注意一下,外设向DMA控制器是发出DMA请求。
大家注意一下。
大家注意一下,咱们看一下外设发出DMA请求给DMA控制器,DIV控制器向CPU发出的是HQ,HRQ是什么?这是总线请求信号,就是总线请求信号。那么你看外教发给DIV控制器是DIV请求。DI控制器收到DIA请求之后,他向CPU转发的是总线的请求信号。因为说白了储存和外部之间传输主要是看谁控制,这个属于总线进行总线是吧?也就说当DMA控制器向C98总线请求信号以后,如果CPU允许的话,那么DIA请控制器或接管总线控制信号。
大家看一下,有的数据外设的数据是要先传输到KMA控制器里面,然后PMA控制器里组成之间进行信息交换。然后当这个传输完毕以后,我在进行相应的操作。你看你外设监控器到农村是吧?这是这一块,然后执行完毕以后。就是传输完毕以后,DMA控制器会发出一个中断请求,就电动瑞发中断请求。那么DIVCPU回收总线控制权,然后完成后续的收尾操作。这个我是在描述这个PPPT的换单上对应的操作,到那个PPT上用文字加一个描述,大家从底下去自己看一下。
好吧,今天由于时间关系,咱们就上到这。我们这个学期还有两次课,下一次课我会讲有关华为的鲲鹏处理器。这个在咱们最后期末考试里面会有一部分的占比,这是我下一次就要上的课。换句话说咱们书上第九章我们是不讲的,也是第八章我们讲完之后会花一节多课的时间。
将基于ARM v8架构的分层处理器。我们看一下现在这个昆仑公司到底长什么样?它内部结构是怎么回事?好吧,咱们先上到这儿下课。
这个我。
说发生费用的好吧,其实时间又晚了一那就41条是就上述内容,其实谢谢中心,行好。
我是这个原因,知道是因为没更新,对吧?
电动车过来。