资源描述
,*,盛建伦jlsheng,*,计算机组成原理,Principles of,Computer Organization,广义双语教学课程,211.64.192.109/skyclass25/,青岛理工大学,校级精品课程,,jx,.,qtech,.,edu,.,cn,/,ec,/C84/,1,盛建伦jlsheng,异步清零并行置数三态输出的16位寄存器,16位寄存器应该有16位的数据输入端口,D,和数据输出端口,Q,,还有时钟脉冲,CLK、,置数控制,load、,清零,clear,和输出允许(输出三态门控制),OE,等端口,16位寄存器,的系统框图,16位,寄存器,VHDL,程序,2,盛建伦jlsheng,异步清零并行置数三态输出的16位寄存器,library,ieee,;-,异步清零并行置数三态输出的16位寄存器,use,ieee,.std_logic_1164.all;,entity reg16THR is,port(,clk,clear,load,oe,_l:in std_logic;,d:in std_logic_vector(15,downto,0);,q:out std_logic_vector(15,downto,0);,end entity reg16THR;,architecture v1 of reg16THR is,signal q1:std_logic_vector(15,downto,0);,begin,3,盛建伦jlsheng,异步清零并行置数三态输出的16位寄存器,process(clock,clear),begin,if(,oe,_l=0)then q=q1;,else q=ZZZZZZZZZZZZZZZZ;-,不允许输出时为高阻态,end if;,if clear=1 then,q1 0);-,异步清零,elsif,rising_edge(clock)then,if(load=1)then,q1=d;-,并行置数,end if;,end if;,end process;,end architecture v1;,4,盛建伦jlsheng,第,10,章,输入输出系统,Chapter 10 Input/output System,Computer Engineering(also called Electronic and Computer Engineering,or Computer Systems Engineering)is a discipline that combines both Electronic Engineering and Computer Science,.,Computer engineers usually have training in electronic engineering,software design and hardware-software integration instead of only software engineering or electronic engineering.,Computer engineers are involved in many aspects of computing,from the design of individual microprocessors,personal computers,and supercomputers,to circuit design.,(,2),10.2 程序中断输入输出方式,中断,(,Interrupt),是由,I/O,设备或其它非预期的急需处理的事件引起的。,它使,CPU,暂时中断当前正在执行的程序,而转去执行另一个 中断服务程序,(,Interrupt-service Routine),去处理这些事件,(,为中断源服务,)。,处理完后再返回原来的程序断点继续执行原来的程序。,A,程序,中断请求,中断服务程序,指令,i,指令,i+1,断点,开始,返回,6,引起中断的事件称为中断源,(,Interrupt Source),。,外中断,内中断,软中断,由处理机外部的,I/O,设备,、,定时器,、,电源等引起的中断,。,程序运行出错或处理器硬件故障引起的中断,(,异常,)。,由自陷指令产生的中断。,外中断又可分为:可屏蔽中断,(,Maskable,Interrupt),,非屏蔽中断,(,Non,Maskable,Interrupt)。,7,盛建伦jlsheng,在计算机系统中,中断有以下作用:,CPU,与,I/O,设备并行工作。,硬件故障处理。,实现人机联系。,实现多道程序和分时操作。,实现实时处理。,实现应用程序和操作系统的联系。,多处理机系统中各处理机之间的联系。,8,盛建伦jlsheng,中断系统需解决的问题,中断源如何向,CPU,发出中断请求,?,有多个中断源同时申请中断时,,如何确定应该先响应哪个中断请求,?,CPU,以什么方式响应中断,,,什么时候允许响应中断请求,?,CPU,响应中断后,,如何保护现场,?,CPU,响应中断时,,如何停止原程序的执行,,如何转到中断服务程序的入口地址,?,中断处理结束时,,,如何恢复现场,,,返回到原程序的间断点,?,如果在中断处理过程中出现新的中断请求,,,应如何处理,?,9,盛建伦jlsheng,CPU,有若干条中断输入引脚:,中断源如何向,CPU,发出中断请求,Interrupt Request,?,中断应答,Interrupt acknowledge,可屏蔽中断,Maskable,Interrupt,非屏蔽中断,Non,Maskable,Interrupt,CPU,INTR,NMI,INTA,中断输出引脚,10,盛建伦jlsheng,每个中断源有不同的中断优先级,Interrupt Priority,。,有多个中断源同时申请中断时,如何确定应该先响应哪个中断请求?,首先响应优先级最高的中断请求。,11,盛建伦jlsheng,中断方式,Interrupt Mode,:,向量中断,非向量中断,等。,向量中断,(,Vectored Interrupt),方式要求中断源向,CPU,提供一个唯一代表该中断源的特征代码。,CPU,以什么方式响应中断,在什么时候允许响应中断请求?,CPU,不是在任意时刻都可以响应中断。如果中断没有被屏蔽,至少要等到当前正在执行的这一条指令执行完,然后才能响应中断。,12,盛建伦jlsheng,保护现场就是保护程序被中断时的状态(程序的断点地址,寄存器的内容),以保证在处理完中断服务后还能够继续正确执行原来的程序。,CPU,响应中断后,如何保护现场?,通常采用将,现场信息压入堆栈的方法。,13,盛建伦jlsheng,CPU,响应中断时,如何停止原程序的执行,如何转到中断服务程序的入口地址?,每个中断源都有自己的中断服务程序(在主存储器中)。,必须根据响应的是哪个中断源的中断请求,找到其中断服务程序的入口地址。,把中断服务程序的入口地址送入程序计数器,PC,,按新的地址取指令,就转而执行中断服务程序,原程序的执行自然就停止了。,14,盛建伦jlsheng,中断处理结束时,,,如何恢复现场,,,返回到原程序的间断点,。,在中断处理完成后,中断返回之前,必须恢复现场,将堆栈中保存的各个寄存器的内容弹出到原来的寄存器中。,15,盛建伦jlsheng,一般的计算机都支持多重中断(中断嵌套)。,如果在中断处理过程中出现了新的中断请求,,,应如何处理,?,允许响应新的,中断,为优先级更高的中断请求服务。从而形成多重中断,或称为中断嵌套。,中断的全过程,包括5个阶段:中断请求,中断判优,中断响应,中断处理,中断返回。,16,盛建伦jlsheng,1中断请求,Interrupt Request,外部设备完成指定的工作,,,或者发生意外事件,,,向,CPU,申请中断,。,一般的,CPU,有数条中断请求输入引脚。每条线可能要连接多个中断源。,中断寄存器,1,01,01,01,01,01,01,01,01,中断源,A,INTR,中断源,D,中断源,H,每个中断源有一个中断触发器,组成一个中断寄存器。,申请中断的外部设备使中断控制器/接口的中断触发器置1。,中断控制器/接口使中断请求线为有效电平,向,CPU,发出中断请求。,17,盛建伦jlsheng,2中断判优,如果有多个中断源同时请求中断,,CPU,只能响应处理其中的一个。,将每个中断源按其紧急与重要的程度分高低优先级,,CPU,只接受优先级最高的一个中断请求。,中断判优的方法有:软件查询法,硬件排队法。,硬件排队是在,CPU,响应中断之前完成的,软件查询是在,CPU,响应中断之后进行的。,An interrupt controller circuit such as the IBM PCs Programmable Interrupt Controller(PIC)may be connected between the interrupting device and to the processors interrupt pin to multiplex several sources of interrupt onto the one or two CPU lines typically available.,18,盛建伦jlsheng,软件查询法,Software Polling,转,中断源,A,的中断服务程序,中断源,A,?,中断源,B,?,中断源,C,?,Y,转,中断源,B,的中断服务程序,转,中断源,C,的中断服务程序,Y,Y,N,N,N,按中断源的优先级别高低,由程序按优先数的顺序,依次查询中断请求标志寄存器的各个中断源是否发出中断请求。,先发现的中断请求是优先权最高的,得到,CPU,的响应,用跳转指令直接转到该中断源的中断服务程序入口执行。,软件查询法的速度低。,19,盛建伦jlsheng,硬件排队法,通常有两类方法:菊花链,,,中断控制器。,中断控制器,Interrupt Controller,中断控制器是一个专门的逻辑电路。每个中断控制器可以连接多个,(一般是8个),中断源的中断请求线。,在中断控制器内有中断寄存器和优先权排队逻辑。,如果有两个或多个中断源同时请求中断,只把优先权最高的一个中断源的中断请求传递给,CPU,,并封锁优先权低的中断源的中断请求。,20,盛建伦jlsheng,优先权最高的设备排在队列的最前面,距离,CPU,最近。只要有中断请求就可以向,CPU,发出,不会被封锁。,INTR,INTA,CPU,D,0,D,7,INTR INTA,设备,A,IEI,IEO,D,0,D,7,1,INTR INTA,设备,B,IEI,IEO,D,0,D,7,INTR INTA,设备,N,IEI,IEO,D,0,D,7,INTR INTA,设备,C,IEI,IEO,D,0,D,7,菊花链,Daisy Chain,用一个专门的电路,将各个中断源的中断请求逻辑按优先权由高到低的顺序连接起来。,21,盛建伦jlsheng,INTR,INTA,CPU,D,0,D,7,INTR INTA,设备,A,IEI,IEO,D,0,D,7,1,INTR INTA,设备,B,IEI,IEO,D,0,D,7,INTR INTA,设备,N,IEI,IEO,D,0,D,7,INTR INTA,设备,C,IEI,IEO,D,0,D,7,CPU,在响应中断时不需要再进行中断优先权判断,所响应的就是当时优先权最高的一个中断源的中断请求。,菊花链,Daisy Chain,只要一个设备被允许发出中断请求,则自动封锁优先权低于它的所有设备的中断申请,一直到该优先权高的设备的中断服务程序执行完。,保证了在排队链上,同一时间只有一个设备能够向,CPU,发出中断请求,而,CPU,也只会接到一个中断源的中断请求。,22,盛建伦jlsheng,3中断响应,Interrupt Response,CPU,响应中断的条件,CPU,在每个机器周期都检测中断请求线是否为有效电平。但是,如果,INTR,为有效电平,,CPU,是否响应,(可屏蔽),中断还取决于以下3个条件:,中断响应被允许,CPU,收到中断请求,一条指令执行完毕,(非流水线机器),23,盛建伦jlsheng,中断响应被允许,CPU,内有一个“中断允许触发器”。,执行“开中断”指令,使中断允许触发器置1。,执行“关中断”指令,使中断允许触发器置0。,中断允许触发器只屏蔽可屏蔽中断请求,不能屏蔽非屏蔽中断请求。,若该触发器为0状态,就不允许,CPU,响应中断,(中断被屏蔽)。,若该触发器为1状态,就允许,CPU,响应,(可屏蔽),中断。,24,盛建伦jlsheng,CPU,收到中断请求,当,CPU,检测中断请求线状态的时刻,中断请求线上必须是有效电平,,CPU,才能收到中断请求。,如果中断源的中断请求没有维持足够长的时间,就会丢失申请。,所以,中断控制逻辑要在接收到,CPU,发出的中断应答信号,INTA,后才撤消中断请求信号。,0 1 2 3 0,T,INTR,Typically,the processor samples the interrupt input at predefined times during each bus cycle such as state T2 for the Z80 microprocessor.If the interrupt isnt active when the processor samples it,the CPU doesnt see it.,25,盛建伦jlsheng,如果中断没有被屏蔽,,CPU,响应中断,停止现行程序的运行,执行一条,中断隐指令,将断点地址(,PC,内容)压入堆栈并关中断,然后要找到该中断源的中断服务程序入口地址,把该地址送入程序计数器,PC,,就可以转去执行中断服务程序了。,寻找中断服务程序入口地址的方法,寻找中断服务程序入口地址有3种方法:中断向量法,软件查询法,非屏蔽中断有固定的入口。,一条指令执行完毕,(非流水线机器),即被中断的是程序,当前正在执行的指令还得执行完。,对于非屏蔽中断请求,,CPU,必须在当前正在执行的指令执行完后无条件响应。,26,盛建伦jlsheng,软件查询法,Software Polling,软件查询法是和中断判优一起完成的。找到中断源后,用一条转移指令直接转到中断服务程序入口地址执行。,转,中断源,A,的中断服务程序,中断源,A,?,中断源,B,?,中断源,C,?,Y,转,中断源,B,的中断服务程序,转,中断源,C,的中断服务程序,Y,Y,N,N,N,27,盛建伦jlsheng,中断向量法,Vectored Interrupt,中断向量,(,Interrupt Vector),是中断服务程序的入口地址。每个中断源都有自己的中断向量。,CPU,在响应中断时,发出中断应答信号,INTA。,中断控制器或有中断功能的接口逻辑收到中断应答信号就将代表发出中断请求的中断源的一个特征代码送上数据总线。,该特征代码又称为“向量地址,”(,Intel X86,称为“中断类型码”),,一般是一个8位的字,唯一地对应一个中断源。,CPU,接着从数据总线读入该向量地址。不同的,CPU,有不同的方法,根据该向量地址寻找或形成中断服务程序入口地址。,例如,,Z80,的中断方式0,中断源(或中断控制器)向,CPU,提供的特征代码是一条,RST,指令。它指向主存储器的0000,H,、,0008H、0038H,等8个地址。这些就是中断服务程序的入口地址,每个地址有8个单元。如果中断服务程序比较长,则在该入口地址放一条转移指令,转到中断服务程序入口。,又如,,Z80,的中断方式2,向量地址是中断向量表(中断服务程序入口地址表)指针的低8位。高8位在中断向量寄存器,I,中。,Intel 8086,也采用这种方法。在中断向量表中,每个表项是2个字节的指令指针,IP,的值和2个字节的代码段寄存器,CS,的值。,控制器把中断向量寄存器的内容与从数据总线读入的向量地址合成一个完整的16位地址指针。用该地址指针去查表,在中断服务程序入口地址表中取出中断服务程序入口地址。,将中断服务程序入口地址置入程序计数器,PC,中,接着按该地址取指令就转到中断服务程序入口执行了。,29,盛建伦jlsheng,CPU,响应中断时的现场保护,CPU,响应中断时需要保护的现场有两类:一是程序的断点地址,二是,CPU,内一些寄存器的内容。,断点地址的保护由硬件完成:,CPU,响应中断时自动执行一条中断隐指令,将程序计数器,PC,的内容压栈。,为了保证保护断点地址的过程不被新的中断打乱(否则不能保证正确地返回到断点),所以,CPU,在响应中断时自动关中断(将中断允许触发器置0)。,30,盛建伦jlsheng,CPU,响应中断时的现场保护,如果在中断服务程序中使用某个寄存器,或者有算术逻辑运算指令(影响程序状态字寄存器),则需要将受影响的寄存器内容压入堆栈。,由于在不同程序中需要保护的寄存器是不同的,所以,对于这些寄存器的保护,不宜由硬件完成。,通常在中断服务程序的开始部分安排几条压栈指令,将它们的内容压入堆栈。,31,盛建伦jlsheng,4中断处理,Interrupt Processing,这一程序段是中断服务程序中完成对事件的处理,或输入/输出,或,I/O,设备的启动/停止,等操作的实质性工作的程序。,32,盛建伦jlsheng,5中断返回,Interrupt Return,当,CPU,完成中断服务后,应该立即返回原程序的断点。,在中断服务程序的末尾安排一条中断返回指令。中断返回指令的功能是把堆栈栈顶的内容弹出到,PC,中。,如果在保护现场时曾经把一些寄存器内容压栈,则在中断返回前必须恢复现场。按与压栈时相反的次序弹出到相应的寄存器中。,注意:,在中断服务程序中压栈和出栈的次数必须相等。,谨慎使用条件返回指令。,由于,CPU,在响应中断时已经自动关中断,所以,如果在本次中断后还允许,CPU,响应中断,就应该在中断服务程序中安排一条开中断指令。,33,盛建伦jlsheng,多重中断,Multiple,Interrupt,当,CPU,正在为一个中断源,A,服务时,又响应另外一个优先级更高的中断源,B,的中断请求,在执行完后者的中断服务程序之后再返回继续执行前者的中断服务程序,这样就形成了中断嵌套,Interrupt nesting,,,或者叫多重中断,。,多重中断的原则是:优先级高的中断源可以中断优先级低的中断服务程序。,程序,中断服务程序,A,中断服务程序,B,中断服务程序,C,中断请求,中断源,A,中断源,C,中断源,B,34,盛建伦jlsheng,由于,CPU,在响应中断时已经自动关中断,所以,要想实现中断嵌套就必须在进入中断服务程序后执行开中断指令,使得,CPU,能够再次响应新的中断请求。一般把开中断指令安排在保护现场之后。,如果一个中断服务程序不允许被中断,但是,在本次中断服务之后仍然允许,CPU,响应中断,则开中断指令必须安排在恢复现场之后,中断返回指令之前。,中断服务程序,保护现场,中断返回,开中断,中断服务程序,保护现场,中断返回,开中断,35,盛建伦jlsheng,Homework,10-1,3,5,6,7,Interrupts can be categorized into:,maskable,interrupt(IRQ),non-,maskable,interrupt(NMI),interprocessor,interrupt(IPI),software interrupt,and spurious interrupt,.,A,maskable,interrupt(IRQ)is a hardware interrupt that may be ignored by setting a bit in an interrupt mask registers(IMR)bit-mask.,Likewise,a non-,maskable,interrupt(NMI)is a hardware interrupt that does not have a bit-mask associated with it-meaning that it can never be ignored.,36,盛建伦jlsheng,本节的重点内容:,中断(,Interrupt),是由,I/O,设备或其它非预期的急需处理的事件引起的,它使,CPU,暂时中断当前正在执行的程序,而转去执行另一个中断服务程序(,Interrupt-service Routine),去处理这些事件(为中断源服务),处理完后再返回原来的程序断点继续执行原来的程序。,引起中断的事件称为,中断源(,Interrupt Source),。,外中断,内中断,软中断,外中断又可分为:可屏蔽中断(,Maskable,Interrupt),,非屏蔽中断(,Non,Maskable,Interrupt)。,37,盛建伦jlsheng,中断处理的全过程包括5个阶段:中断请求,中断判优,中断响应,中断处理,中断返回。,1中断请求,Interrupt Request,外部设备完成指定的工作,,,或发生意外事件,,,向,CPU,申请中断,。,2中断判优,将每个中断源按其紧急与重要的程度分高低优先级,,CPU,只接受优先级最高的一个中断请求。,中断判优的方法有:软件查询法,硬件排队法。,硬件排队是在,CPU,响应中断之前完成的,软件查询是在,CPU,响应中断之后进行的。,38,盛建伦jlsheng,3中断响应,Interrupt Response,CPU,响应中断的条件,中断响应被允许,CPU,收到中断请求,一条指令执行完毕(非流水线机器),5中断返回,Interrupt Return,在中断服务程序的末尾安排一条中断返回指令。中断返回指令的功能是把堆栈栈顶的内容弹出到,PC,中。,如果在保护现场时曾经把一些寄存器内容压栈,则在中断返回前必须恢复现场。按与压栈时相反的次序弹出到相应的寄存器中。,执行“开中断”指令,使中断允许触发器置1。,执行“关中断”指令,使中断允许触发器置0。,39,盛建伦jlsheng,中断嵌套,Interrupt nesting,当,CPU,正在为一个中断源,A,服务时,又响应另外一个优先级更高的中断源,B,的中断请求,在执行完后者的中断服务程序之后再返回继续执行前者的中断服务程序,这样就形成了中断嵌套,或者叫多重中断,Multiple,Interrupt,。,多重中断的原则是:优先级高的中断源可以中断优先级低的中断服务程序。,由于,CPU,在响应中断时已经自动关中断,所以,要想实现中断嵌套就必须在进入中断服务程序后执行开中断指令,使得,CPU,能够再次响应新的中断请求。一般把开中断指令安排在保护现场之后。,如果一个中断服务程序不允许被中断,但是,在本次中断服务之后仍然允许,CPU,响应中断,则开中断指令必须安排在恢复现场之后,中断返回指令之前。,程序,中断服务程序,A,中断服务程序,B,中断服务程序,C,
展开阅读全文