CN1095121C - 用小规模硬件灵活应付多个中断处理的中断控制装置 - Google Patents
用小规模硬件灵活应付多个中断处理的中断控制装置 Download PDFInfo
- Publication number
- CN1095121C CN1095121C CN96108433A CN96108433A CN1095121C CN 1095121 C CN1095121 C CN 1095121C CN 96108433 A CN96108433 A CN 96108433A CN 96108433 A CN96108433 A CN 96108433A CN 1095121 C CN1095121 C CN 1095121C
- Authority
- CN
- China
- Prior art keywords
- interrupt
- start address
- mentioned
- level
- address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Microcomputers (AREA)
- Executing Machine-Instructions (AREA)
- Bus Control (AREA)
Abstract
中断控制装置具备将与中断请求信号各中断级对应的多个中断处理程序存储于地址连续区域的程序存储器、为各中断级保持中断处理程序的开始地址可改写的开始地址保持器、为各从多个i/o输入的中断信号保持中断级可改写的等级保持器、当一个以上中断信号成为有效时,接收最高中断级的中断信号输出中断请求信号的中断接收器、当输出中断请求信号时,从开始地址保持器取出与中断级对应的开始地址,按程序计数器设定分支控制的控制器。
Description
发明领域
本发明涉及提高微机中断程序设计的灵活性的中断控制装置。
背景技术
近年来,由于电子技术和信息处理技术的发展,提高了微处理器的性能,被装入所有机器机内而得以广泛利用。
在现有微处理器等的信息处理机内的中断控制装置中,对每个中断因素,可采用任意改变处理程序的开始地址的方式(下面称为向量方式)和每中断级固定中断处理开始地址的方式(下面称为固定地址方式)。
向量中断方式已为例如美国英特尔公司等的8086系列微处理器和株式会社日立制作所的SH7032微处理器等所采用。就这种方式而言,对每个中断因素分配特定的向量号码,而同时与向量号码对应参照存入中断处理程序的开始地址的向量表,进行中断处理分支。通常,向量号码要用8位表示,其构成之多可与256种中断因素对应。另外,用32位表示地址情况下,向量表成为1K字节大小。
向量中断方式的中断装置,如果发生中断,则发生与中断因素对应的向量号,从上述向量表读取与向量号对应的中断处理程序的开始地址,从现在执行中的地址的开始地址执行分支控制。这种控制取决于微程序等的硬件。在开始地址分支后,执行中断处理程序。如中断处理程序执行完了,通过硬件控制执行返回原程序地址的控制。
对于向量中断方式处理器程序而言,每个中断因素制成中断处理程序,只要把各程序开头地址作为开始地址保存在向量表上就可以了。因此每个中断因素的处理程序都受硬件控制而开始。具有通用性强,是适于实行各种应用的信息处理装置。
另外,固定地址方式C用于例如日本电气株式会社V810微处理器等中,对16个中断级n(n=0-Fh),中断处理开始地址固定于FFFFFEnOh。而16个固定开始地址分配于每个16字节。
固定地址方式的方式的中断控制装置,如发生中断,则由硬件施行从当前执行中的地址的相应中断级的固定开始地址处进行分支控制。由于不必参照向量表,所以与向量方式比较,就有能够高速分支的优点。
不过,根据上述已有技术的向量式中断控制装置,为进行所述向量号码的生成,参照向量表处理方式会使硬件变得复杂,电路规模变大,而且,从发生中断到分支为止的时间较长也是个问题。特别是,用作装入微处理器的中断控制装置的情况下,因内装ROM容量受限制,就有设置向量表而挤压其他程序的问题;因实际使用的中断数比通常向量数少得多,就有在向量表中分布未使用的区域,ROM使用效率低,浪费大的问题。
另外,根据固定地址中断控制装置,由于用较短间隔(例如每个16字节)分配与中断级对应的多个固定开始地址,所以用硬件控制,在中断处理程序的固定开始地址处分支之后,而且有必要在中断处理程序的最前面设置分支指令,不必插入不必要的分支指令,就有此分段中断处理时间时滞的问题。假设,仅仅扩大配置中断处理程序的多个固定开始地址间隔的大小,通过分支指令的插入,就能消除处理的延迟。然而,宽阔隔间配置的固定开始地址会变成反而发生ROM使用效率恶化的问题。
特别是,装入应用微机的中断控制装置有以下非常强烈的需求。即,装入应用的微机,对每个用户使种类不同的多个i/o单片化,对每个用户i/o的组合也不同。来自i/o的中断信号,每个用户操作不同,因而要求可以对每个中断信号灵活地设定表示其优先度的中断级。但是,由于要求在1个芯片内安装更多的i/o,所以中断控制装置的芯片面积必须是小型的。
发明技术方案
本发明的目的在于提供一种硬件规模小,而且多个i/o不管在什么样的组合情况下,都能灵活地应付的适合于机内应用的微机内的中断控制装置。
达到上述目的的中断控制装置,它是在机内应用的微机内具备的包括多个i/o和中央处理器的中断控制装置,还包括下列各部分:·程序存储器
将与每个中断请求信号的中断级对应的多个中断处理程序存储于地址连续的区域内;·开始地址保持器
为每个中断级保持中断处理程序的开始地址且是可改写的;·等级保持器
对多个i/o输入的多个中断信号的每一个保持中断级,且是可改写的;·中断接收器
当上述多个中断信号的一个以上成为有效时,就接收具有最高中断级的中断信号,输出具有该中断级的中断请求信号;·控制器
当输出中断请求信号时,从开始地址保持器内取出与此中断级相对应的开始地址,遵照程序计数器设定,进行分支控制。
根据这种结构,由外部来的中断信号,将具有保持在等级保持器内的中断级,变成中断请求信号,所以可对由多个i/o来的中断信号灵活地设定等级。而且,使由向量表或向量变换成中断请求信号的硬件变成不需要,因而可使硬件规模小型化。所以,可把机内应用微机的中断控制装置的芯片面积做小、对这部分每个用户,都可灵活地设定顾客的多个i/o的中断处理,并且可把安装面积做大。
在这里,上述开始地址保持器可包括以下部分:·低位地址保持器
对每个中断级保持中断处理程序的开始地址的低位侧地址;·常数发生器
发生成为上述开始地址高位端地址的常数;
当发生中断请求时,在与该中断级相对应的保持器的低位端和常数发生器的高位端的地址构成的开始地址,由上述控制器进行分支控制。
根据这种结构,通过把开始地址的高位端地址,对全部中断级通用化,使硬件规模更小型化,会有降低成本的效果。
在这里,上述开始地址保持器可包括下列部分:·第1保持器
将在程序存储器内的多个中断处理程序的存储区域的开头地址作为基本地址进行保持;·第2保持器
将用各中断处理程序的开始地址与基本地址的差值所表示的相对开始地址,与中断级对应地进行保持;
当发生中断请求时,在将与该中断级对应的相对开始地址与基本地址进行相加而得出的开始地址,由上述控制器进行分支控制。
根据本结构,能够很灵活地算出开始地址。而且,即使在变更分配多个插入处理程序的存储区域的情况下,仅仅对应变更基本地址,另外,即使对个别中断处理程序的变更,也可以只是变更相对开始地址,所以可以很灵活地进行程序设计。
在这里,上述中断控制装置还可包括下列:·固定地址发生器
用以发生对于不可屏蔽的特定中断信号的中断处理程序的开始地址;
当上述特定中断发生时,上述控制器将在固定地址发生器所发生的开始地址进行分支控制。
根据本结构,作为主要将紧急使用的不可能屏蔽的特定中断信号和由于应用而频繁使用的中断信号进行严格区别,可以有效地做成适应各种特性的结构。
在这里,上述程序存储器的所存储的多个中断处理程序,对于比预定等级高的等级中断请求信号,中断请求信号与中断处理程序一对一对应,对于预定等级以下的中断请求信号,则中断请求信号和中断处理程序按几对一对应的中断处理程序进行存储。
上述开始地址保持器可包括如下:·第1保持器
对于比预定等级高的中断级,中断级和开始地址保持一对一对应的开始地址;·第2保持器
对于预定等级以下的中断级,则中断级和开始地址保持几对一对应的开始地址。
根据此结构,对于优先等级高的中断请求信号而言,能完全确保高速性和即时性处理,而且,由于把优先等级不高的中断信号叠成一个中断处理程序,能简化硬件结构,其结果,能够有效果地随着每个中断处理所要求的特性而灵活地进行中断控制。
在这里,上述等级保持器可包括如下:·多个中断控制寄存器
设置与多个中断信号相同个数的中断控制寄存器,各中断控制寄存器具有中断级设定字段;
在这里,上述中断控制装置又包括如下:·第1初始化器
在上述微机刚起动之后,在上述开始地址保持器内设定上述多个中断处理程序的每个开始地址;·第2初始化器
在上述微机刚起动之后,在上述多个的中断控制寄存器内设定上述多个中断处理程序的每个等级。
根据本结构,能够动态地转换与一个中断信号对应的中断处理程序。例如,中断信号IPT6的中断因素是计时器的中断,假想用于计算蜂鸣器响动间隔的场合和在显示器上计算报警显示的间隔的场合。这时,必须响应支持前者中断处理程序的开始地址和支持后者中断处理程序的开始地址,通过在开始地址保持器内进行设定,就能够简单地进行转换。
在这里,上述控制装置还可以包括如下:·设定变更器
在上述微机的起动中,动态地至少变更与中断处理程序对应的中断控制寄存器内的等级和开始地址保持器内的开始地址之一。
在这里,上述程序存储器还可以做成存储第1程序和第2程序的结构。在上述微机刚起动后执行第1程序,而该第1程序是在上述开始地址保持器内设定上述多个中断处理程序的各个开始地址的程序;在上述微机刚起动后执行第2程序,而该第2程序是在上述多个中断控制寄存器内设定上述多个中断处理的各等级的程序。通过处理器执行第1和第2程序。
在这里,上述程序存储器还可以有存储第3程序的结构。在上述微机起动中动态地执行第3程序,至少变更与中断处理程序对应的中断控制寄存器内的等级,及开始地址保持器内的开始地址中的一种。该第3程序通过中央处理器被执行。
附图简介
本发明的这些和其它目的、优点和特点,从结合说明本发明的具体实施例的附图作出的下面描述,将变得更清楚。附图中:
图1是表示具有本发明第1实施例的中断控制装置的处理器结构的框图。
图2A是表示同一实施例的IRQVn寄存器的设定例说明图。
图2B表示为进行同一实施例的上述设定的程序例。
图3是表示具有本发明第2实施例的中断控制装置的处理器结构的框图。
图4表示同一实施例的控制寄存器的(二进制)位构成例。
图5A表示同一实施例的中断控制寄存器ICR0~6的设定例。
图5B表示同一实施例的开始地址寄存器IRQV0~6的设定例。
图5C表示为进行同一实施例的上述设定的程序。
实施例描述
图1是表示具有本发明的第1实施例中的中断控制装置的处理器结构框图。
本处理器设有:ROM101、RAM102、寄存器单元103、开始地址寄存器104、选择器105、选择器106、预取计数器107、增量器108、译码程序计数器109、执行程序计数器110、驱动器111、指令寄存器112、状态寄存器113、译码器114、微指令寄存器115、算术逻辑运算单元116、处理器状态字117、运算结果缓冲器118、操作地址寄存器119、选择器120、选择器121、驱动器122~130、选择器131、132、内部地址总线140、内部数据总线141、内部数据总线142、中断信号150、中断接收部151、常数发生器153,在译码器114内部的中断控制部154。
在同一图中,ROM101、RAM102各自存储指令和数据。为方便说明起见,指令字长假定量32位定长、地址长、数据长也是32位。
寄存器装置103由多个寄存器构成。本实施例中,具有多个数据寄存器、多个地址寄存器和堆栈指示器,在本实施例中假设各自长均为32位。
中断地址寄存器104具有与0~6共7个等级的中断级信号152相对应的7个寄存器(以下简称为IRQV0~IRQV6)。IRQV0~6保持与各个中断级对应的对应中断处理程序的开始地址的低16位。例如,以IRQV2寄存器来说,就是保持中断级2的中断处理程序的开始地址的低位16位。这些开始地址用通常的传送指令(MOV指令)根据程序(主程序)在开始或者必要时进行设定。所设定的开始地址,当中断请求发生时由中断控制单元154控制,附加预定的高位16位,作为取数供给ROM101,同时存入预取计数器107。
选择器105、106从RAM102的数据和内部地址总线140的数据的两者中选择其一,分别输出到开始地址寄存器104、寄存器103。
由预取计数器107、增量器108构成的电路受译码器114的控制,构成依次生成应该取数指令的地址的计数器。
译码程序计数器109保持在指令译码阶段的指令地址。
执行程序计数器110,保持在指令执行阶段的指令地址。
驱动器111按照译码器114的控制,把执行程序计数器110的指令地址输出到内部数据总线141。
指令寄存器112保持来自ROM101的取数指令。
状态寄存器113保持指令译码所必需的各种状态标志。
译码器114读出指令寄存器112的指令和状态寄存器113的内容,输出实现该指令的微指令。另外,译码器114在内部具有控制向中断处理的移位、返回的中断控制单元154。
微指令寄存器115按照译码器114来自微指令,进行实现指令的控制。
算术逻辑运算单元116受译码器114的控制,进行数据运算或地址计算。
处理器状态字117保持指定等级中断的接收范围包含IMSK字段指示处理器内部状态的各种标志。
运算缓冲器118保持在算术逻辑计算术单元116的运算结果。
操作地址寄存器119保持在与RAM102对应的地址。
选择器120把来自增量器108的取出地址、运算结果缓冲器11内的结果,操作地址寄存器119的地址的任何一个,受译码器114的控制,有选择地输出到ROM101。
选择器121把运算结果缓冲器118内的结果、操作地址寄存器119的地址中的一个,通过译码器114的控制,有选择地输出到RAM102。
驱动器122~130分别是按照微指令寄存器115来的控制信号驱动数据/地址的3状态驱动器。
选择器131把内部数据总线141和内部数据总线142任一个来的数据,选择地输出到算术逻辑运算单元的一个输入端。
选择器132把内部数据总线142、内部地址总线140、运算结果缓冲器118、常数发生器153中的任一个数据,选择输入到算术逻辑运算部分116的另一个输入端。
内部了地址总线140,第1内部数据总线141、第2数据总线14都是处理器内部总线。
中断信号150是通知来自外部的各种I/O单元中断请求的7种信号(IPT0~6)。
中断接收装置151接收等级中断、不可屏蔽的中断和清除中断并通知译码器114。等级中断把中断信号(IPT0~6)作为因素,每个因素具有从0到6依次优先顺序转换成中断等级信号。不可屏蔽的中断是优先顺序比等级中断还要高的的不能屏蔽的(总是被接受)中断。清除中断的优先顺序最高,在清除时是为进行必要处理的中断。中断接收单元151具有与内部各中断信号(IPT0~6)相应的中断控制寄存器,当接到中断信号时,按照中断控制寄存器的内容,输出中断级信号(IRQ0~IRQ6)。各个中断控制寄存器是当输入该中断信号时,设定发生应该中断级的寄存器,但在本实施例中,IPT0~6按相同次序一一对应设定输出IRQ0~IRQ6。同样,中断接收单元151当输入不可屏蔽中断信号(以下为NMI)和清除中断信号时,就照原样输出到译码器114。
中断级信号152具有从IRQ0到IRQ6依次升高的优先度,是对译码器114请求中断处理的信号。
常数发生器153发生16位常数和32位常数。这里,16位常数表示等级中断的开始地址的高位16位。32位的常数产生两次,表示NMI的中断处理的开始地址和清除中断的中断处理的开始地址。在本实施例中,上述16位定数设为4000h(h表示16进位数)、NMI的中断处理开始地址为40000008h、清除中断的中断开始地址为40000000h。
中断控制单元154实际上是译码器114的一部分,但如输入中断级信号152,则发生控制向中断处理移行的微指令。
更详细说,从中断接收单元151来的IRQn(n为0~6任何一个)如被输入,则发生:(1.1)更新堆栈指示字的内容、(1.2)使执行程序计数110的内容退到堆栈的微指令(EXPC→(SP-4))、(1.3)使处理器状态字117的内容保存在堆栈的微指令(PSW→SP)、(1.4)把处理器状态字117内的IMSK字段改写成接收到的中断级的微指令、(1.5)使与该IRQn的等级n对应的IRQVn内容和常数发生器153的上述16位常数在算术逻辑运算单元进行相加的微指令、(1.6)将相加的结果输出到ROM101的同时,寄存到预取计数器107的微指令。
输入清除中断的情况下,中断控制单元154发出:(2.1)通过算术逻辑运算单元116使常数发生器153的清除中断的开始地址表示32位常数输出的微指令、(2.2)与使算术逻辑运算单元116的输出结果输出到ROM101的同时存入预取计数器107的微指令。
在输入NMI中断的情况下,中断控制部分154发出:(3.1)更新堆栈指示字内容的微指令(SP-8→SP)、(3.2)使执行程序计数器110的内容保存在堆栈的微指令(EXPC→(SP-4))、(3.3)使处理器状态字117的内容保存在堆栈的微指令(PSW→SP)、(3.4)通过算术逻辑运算单元使常数发生器153的NMI中断的开始地址表示32位常数输出的微指令、(3.5)与使相加结果输出到ROM101同时,存入预取计数器107的微指令。
上述的微指令,如果把上述的(1.1)~(1.6)、(2.1)(2.2)、(3.1)~(3.5)作为内容,则可以是一个微指令,也可以是多个微指令。
对于如上所述的构成本发明的第1实施例的中断控制单元,说明其工作。
首先,说明有关开始地址寄存器IRQVn的设定。
图2A是表示IRQVn的设定例子说明图。如该图所示,从等级0到6的中断处理程序假定分别具有8K字节(16进制为2000h字节)、4K字节(1000h)、2K字节(800h)、1K字节(400h)、0.5K字节(200h)、0.5K字节(200h)及0.5KZ牯200h)的程序大小。这时,例如把级别0的中断处理程序的开始地址,设定在40000010h时,就变成把低位16位的0010h设定为IRQV0。该中断处理程序的配置区域变成40000010h~4000200Fh 。该区域之后,就分配等级1的中断处理程序来说,如可把2010h设定为1RQV1。以下按同样办法,如设定3010h、3810h、3C10h、3E10h和4110h分别为IRQV2、IRQV3、IRQV4、IRQV5和IRQV6,就可以没有间隙地分配中断处理程序。
图2B表示为进行上述设定的程序例。如图所示通过转送指令(MOV)设定每个IRQVn 。
接着,说明有关向等级中断的中断处理的移行工作。
现在仍如上述一样设定各IRQVn,进行输入中断信号150之内的中断请求信号IPT3 。
这个中断请求信号IPT3,由中断接收部151变换成对应的等级3的中断级信号IRQ3而输出到译码器114。如输入中断级信号IRQ3,译码器114内的中断控制部154就发出:(1.1)更新堆栈指示字的内容的微指令(SP→8→SP)、(1.2)使执行程序计数器的内容保存在堆栈的微指令(EXPC→(SP-4))、(1.3)使处理器状态字117的内容保存在堆栈的微指令(PSW→SP)、(1.4)把处理器状态字117内的IMSK字段改写成所接收的中断级的微指令、(1.5)使与该IRQ3对应的IRQV3的内容、常数发生器153的上述16位常数在算术逻辑运算部进行相加的微指令以及(1.6)与使相加结果输出到ROM101的同时,存入预取计数器的微指令。
按照这些微指令,从微指令寄存器115输出输出执行这些指令的各种控制信号。按照所输出的微指令(1.1)~(1.4),进行微指令寄存器115堆栈指示字的更新、回到原地址及PSW的保存。
而且,按照(1.5)的微指令,在算术逻辑运算单元116内对来自与该IRQ3对应的IRQV3的中断处理程序开始地址的低位16位(3810h)和作为高位16位的常数发生器153的上述16位常数(4000h)进行相加(IRQV3→驱动器124→选择器131→算术逻辑运算单元116的A侧输入、算术逻辑运算单元116→运算结果缓冲器118)。
接着,按照(1.6)微指令,把相加结果作为取数地址输出到ROM101(运算结果缓冲器118→选择器120→ROM101)并同时存入预取计数器107(选择器120→预取计数器107)。由此,在40003810h地址进行分支,变成执行ROM101中40003810h~40003C0Fh地址所存储的等级3的中断处理程序。
根据上述本实施例的中断控制装置,对于中断级信号152(IRQ0~6),用常数发生器153和开始地址寄存器104所赋予的地址,因可任意设定,所以可把每级的中断处理程序分配到ROM101内的连续区域里,可使ROM101的使用效率提高。而且由于开始地址和中断处理程序的主体部分不是分配在不连续的区域里,在开始地址分支之后,为了再在主体部分执行分支的单纯分支指令,对必要点可以执行高速中断处理。
另外,在本中断控制装置中,由于不需要向量表,所以用简单的硬件结构也能实现参照向量表所进行的处理。
还有,上述实施例中,算术逻辑运算单元116虽然由常数发生器153的高位16位和开始地址寄存器104的低位16位合成,示出计算32位开始地址的具体例,但因算术逻辑运算单元116具有更为复杂的地址计算功能,用任何不是单纯合成的一种运算也可以组成算出开始地址的算术逻辑运算单元。例如,用(32位基本地址)+(16位相对地址)的形式,也可以算出中断处理程序开始地址。这时,设置把ROM101内所存储的多个中断处理程序的一系列区域的开头地址作为基本地址保持的基本地址寄存器来替代常数发生器153,就开始地址寄存器104来说这样构成也行,使由各中断处理程序开始地址与基本地址之差所表示的相对开始地址与中断级相应而保持。因此,可得到很灵活的程序设计。
图3是表示具有本发明的第2实施例的中断控制装置的处理器结构框图。对与图1示出的第1实施例的处理器相同的结构元件,标以相同的标号。下面省略去对有关相同结构元件的说明,而以不同点作为说明中心。
图3的处理器与图1相比不同处是:开始地址寄存器304、译码器314、微指令寄存器315、驱动器324、选择器332、中断接收部351、常数发生器353及中断控制部354的功能。
开始地址寄存器304与第1实施例相同点在于与等级0~6的7级中断级信号152相对应的7个寄存器(以下略记为IRQV0~IRQV6)。各个IRQV0~6不是与各自中断级对应的对应中断处理程序开始地址的低位16位,而是保持32位这点不同。
译码器314与第1实施例的译码器114相比,除内部有中断控制部354这点外都相同的。
微指令寄存器315按照从译码器314来的微指令,进行实现指令的控制。
驱动器324输入来自开始地址寄存器304的32位开始地址,而向选择器120输出。选择器332与第1实施例的选择器132相比,除删除从常数发生器153的输入这点外都相同。
中断接收部351虽与第1实施例的中断接收部151是同样的,但在本实施例中,还将详细说明内部控制寄存器的内容。图4中,示出控制寄存器的位组成例。同一图中,ICR0~6表示与中断信号150(IPT0~6)对应而设置的7个控制寄存器。L2~L0的3位表示设定各中断信号优先级的等级字段;IE的1位表示许可中断/不许可中断,即表示中断启动位。位11~位0在本实施例中作为不使用的位。中断接收部351例如若输入中断信号(IPT0),对应的中断控制寄存器(ICR0)的启动位表示许可的情况下,就输出在等级字段所设定等级的中断级信号(IRQ0~IRQ6中的任一个信号)。
常数发生器353与第1实施例的常数发生器153相比,不同点是不发生16位常数。关于32位常数则是相同的。
中断控制部354实际上虽然是译码器114的一部分,但如输入中断级信号,就会发生控制向中断处理移行的微指令。
若更详细地说,如输入则从中断接收部351发出:(4.1)更新堆栈指示字的微指令(SP-8→SP)、(4.2)使执行程序计数器110的内容保存在堆栈的微指令(EXPC→(SP-4))、(4.3)使处理器状态字117的内容保存在堆栈的微指令(PSW→SP)、(4.4)把处理器状态字117内的IMSK字段改写成接收的中断级以及(4.5)通过选择器120使与该IRQn的等级n对应的IRQVn的内容输出到ROM101,与此同时存入预取计数器107的微指令。另外,清除中断被输入的情况下,在输入NMI中断时,分别发出与第1实施例的(2.1)、(2.2)、(3.3)~(3.5)相同的微指令。上述的微指令如果把上述(4.1)~(4.5)作为内容,既可以是一个微指令,也可以是多个微指令。
下面将说明有关上述结构的本发明的第2实施例的中断控制装置。
首先,说明有关中断控制寄存器ICR0~6和开始地址寄存器IRQV0~6的设定。
图5A~5C是分别表示设定中断控制寄存器ICR0~6的设定例、开始地址寄存器IRQV0~6的设定例的程序例说明图。
如图5A所示,在中断控制寄存器ICRO内设定为等级0、ICR1内的等级1、ICR2~ICR5内为等级2、ICR6内为等级3。亦即,把外部来的中断信号之中,等级0分配在IRT0、等级1分配在IRT1。等级2分配在IPT2~IPT5 。等级3分配在IPT6之中。这时,等级0的中断处理程序把与中断信号IPT0对应的处理作为内容,等级1的中断处理程序把与IPT1对应的处理作为内容。等级2的中断处理程序把与中断信号IPT2~5的三个因素相对应的处理作为内容。本设定例,例如设想为连接于处理器的极高速通信I/O装置的情况。在这里,使由通信I/O装置所接收到的每一数据从通信I/O装置转送给处理器的接收处理和从通信I/O装置应送出的数据由处理器转送给通信I/O装置的发送处理分别通过中断处理执行。这些接收中断处理和发送中断处理由于有必要以赶得上各自的通信速度地执行(在各个数据的每个收发间隔内),所以要求及时性和高速性。这种情况下,如图2A所示那样,将接收中断信号和发送中断信号作为IPT0、IPT1,可以分别设定为等级0、等级1。另外,IP2~6如果不是要求实时性、高速性的中断处理,则全部设定为同极,如同图那样,可以适当集中设定等级。
如图5B所示,从等级0的3个中断处理假定分别具有8K字节(16进制中为2000h字节)、4K字节(1000h)、16K字节(4000h)、1K字节(400h)的程序大小。这时,例如把等级0的中断处理程序的开始地址设定在40000010h的情况,变成把32位地址40000010h设定为IRQV0。此中断处理程序的分配区域变为40000010h~4000200Fh。在该区域之后以分配等级1的中断处理程序来说,则可把40002010h设定为IRQV1。另外,等级2的中断处理程序,作为中断因素,把中断信号IPT2~5的各个对应的处理作为内容,可以把40003010h设定为IRQV2。下面同样地如把40007010h设定为IRQV3,则能无间隙地分配中断处理程序。
图5C示出为作出上述设定的程序例。如同一图那样,通过转送指令(MOV指令)设定各个ICR0~6和IRQV0~3。这里由于不使用IRQV4~6,所以不必设定。
接着,说明有关向等级中断的中断处理的移行操作。
现在,如图5那样,设定ICR0~6,及IRQV0~3,进行中断信号150之中的中断请求信号IPT0输入。
该中断请求信号IPT0,用中断接收部351转换成在对应的ICR0寄存器的等级字段所指定的等级0的中断级信号IRQ0,并输出到译码器314。如果输入中断级信号IRQ0,译码器314内的中断控制部354就发出:(4.1)更新堆栈指示字内容的微指令(SP→8→SP)、(4.2)使译码器程序计数器109保存在堆栈的微指令(EXPC→(SP-4))、(4.3)把处理器状态字117的内容保存在堆栈内的微指令、(4.4)把处理器状态字117内的IMSK字段改写为已接收的中断级的微指令、(4.5)使与该IRQ0对应的IRQV0的内容输出到ROM101,同时存入预取计数器107的微指令。
按这些微指令,实现微指令的各种控制信号就从微指令寄存器115输出。按所输出的(4.1)~(4.5)的微指令进行微指令寄存器115堆栈指示字的更新、回到原地址的保存PSW。
而且,按(4.5)的微指令,来自与该IRQ0对应的IRQV0的中断处理程序的开始地址32位(40000010h)作为取数地址而输出到ROM101(开始地址304→选择器120→ROM101),同时被存入预取计数器107(选择器120→预取计数器107)。因此,在40000010h地址处分支,变成执行存入ROM101中的40000010h~4000200Fh地址的等级0的中断处理程序。
在上述的操作中,设定中断控制寄存器虽然是对固定情况而说明,但能很容易实现可动地变更中断级。例如,在图5A所示的例中,完成中断信号IPT0、IPT1发收信号后不再使用时,使中断信号IPT6的优先级比中断信号IPT2~5更优先的情况下,与把ICR6的等级字段重新设定为0同时,可以把等级6中断处理程序的开始地址(40007010h)重新设定为开始地址寄存器IRQV0。这种重新设定也和图5C一样进行,可用转送指令进行。而且此后,对有必要进行用中断信号IPT0、IPT1发收信号时,最好使设定内容回到原样。
另外,使对于一种中断因素的中断处理程序可动地转换也是可能的。例如,中断信号IPT6的中断因素是定时器中断,如计数蜂鸣器的响动间隔时,设想用于在显示器上显示报警间隔而计数的情况。这时,必须响应支持前者的中断处理程序的开始地址和支持后者的中断处理程序的开始地址,按照IRQV6内存储,可以简单地进行转换。
根据上述的本实施例的中断控制装置,对于中断信号150而言,用中断控制寄存器按所指定的等级,由开始地址寄存器304所给出的开始地址处进行分支。开始地址由于可以任意设定,所以可以把每级的中断处理程序分配于ROM101内的连续区域内。而且,开始地址和中断处理程序主体部分由于不是分配在不连续的区域内,在开始地址分支后,而且已无需用于在主体部分进行分支的单纯分支指令,以此就能够执行高速中断处理。而且,可以任意地设定中断信号150的等级,所以要求中断处理实时而高速的中断因素单独分配在高的中断级,相反,多个不需要实时而高速的中断因素则集中分配在低的中断级这样的方式,使灵活性高的中断控制成为可能。
另外,在本中断控制装置中,无需参照向量表的处理也不需向量表,所以用简单的硬件结构就能实现。
还有,在上述实施例中,虽然把开始地址寄存器104、304作为内部寄存器而示出构成的例子,但开始地址寄存器也可以作为I/O寄存器而构成。这时,ROM101或RAM102同样地都转换成存储器空间上的存贮区。
另外,在第1、第2实施例中,清除中断和NM1中断,虽用常数发生器153(353)固定的开始地址表示出确定的结构,但也可以与等级中断一样处理而设置清除中断用IRQV、NMI用IRQV。
本发明虽经参照附图通过实施例完整地作了描述,但应注意到各种各样的改变和修改对本领域的技术人员都是显而易见的。因此,除非另有不同于本发明范围的改变和修改,否则应包括在本发明构成之中。
Claims (10)
1.一种包括多个I/O和中央处理器的机内应用的微机内配置的中断控制装置,它包括下列:·程序存储器
将与每个中断请求信号的中断级对应的多个中断处理程序存储在地址连续的区域内;·开始地址保持器
为每个中断级保持中断处理程序的开始地址,且是可改写的;·等级保持器
对来自多个i/o输入的多个中断信号的每一个保持中断级,且是可改写的;·中断接收器
当上述多个中断信号的一个以上成为有效时,就接收具有最高中断级中断信号,输出具有该中断级的中断请求信号;·控制器
中断请求信号输出之时,从开始地址保持器内取出与该中断级对应的开始地址,按程序计数器设定进行分支控制。
2.根据权利要求1的中断控制装置,其特征在于上述开始地址保持器包括:·低位地址保持器
对每个中断级保持中断处理程序开始地址的低位端地址;·常数发生器
发生成为上述开始地址的高位端地址的常数;
当中断请求发生时,在与该中断级对应的保持器的低位端和常数发生器的高位端地址构成的开始地址处,由上述控制器进行分支控制。
3.根据权利要求1的中断控制装置,其特征在于上述开始地址保持器包括:·第1保持器
将在程序存储器内的多个中断处理程序的存储区域的开头地址作为基本地址进行保持;·第2保持器
将用各中断处理程序开始地址与基本地址之差值所表示的相对开始地址与中断级对应而进行保持;
当中断请求发生时,在与该中断级对应的相对开始地址与基本地址进行相加而得到的开始地址,由上述控制器进行分支控制。
4.根据权利要求1的中断控制装置,其特征在于还包括:·固定地址发生器
发生对特定不可屏蔽的特定中断信号的中断处理程序的开始地址;
当上述特定中断发生时,在固定地址发生器所发生的开始地址,由上述控制器进行分支控制。
5.根据权利要求1的中断控制装置,其特征在于上述程序存储器,对于比按照中断因素所要求的即时性而预先决定的预定等级高的等级的中断请求信号,存储1对1对应的中断处理程序,而对于上述预定等级以下的中断请求信号,则存储多个对1对应的中断处理程序,
上述开始地址保持器包括:·第1保持器,
对于比上述预定等级高的中断级,保持1对1对应的开始地址;·第2保持器,
对于上述预定等级以下的中断级,保持多个对1对应的开始地址。
6.根据权利要求1的中断控制装置,其特征在于上述等级保持器包括:·多个中断控制寄存器
设置与多个中断信号相同个数的中断控制寄存器,各中断控制寄存器具有中断级设定字段。
7.根据权利要求6的中断控制装置,其特征在于还包括:·第1初始化器
在上述微机刚启动之后,将上述多个中断处理程序的各开始地址设定在上述开始地址保持器内;·第2初始化器
在上述微机启动之后,将上述多个中断处理程序的各等级设定在上述多个中断控制寄存器内。
8.根据权利要求1的中断控制装置,其特征在于还包括:·设定变更器
在上述微机启动中,动态地至少变更与中断处理程序对应的中断控制寄存器内的级和开始地址保持器内的开始地址之一。
9.根据权利要求6的中断控制装置,其特征在于上述程序存储器还存储第1程序和第2程序,
在上述微机启动之后执行第1程序,它是在上述开始地址保持器内设定上述多个中断处理程序的各开始地址的程序,
在上述微机启动之后执行第2程序,它是在上述多个中断控制寄存器内,设定上述多个中断处理程序的各级的程序,
其中第1和第2程序由中央处理器执行。
10.根据权利要求9的中断控制装置,其特征在于上述程序存储器还存储第3程序,
在上述微机启动中动态地执行第3程序,至少变更与中断处理程序对应的中断控制寄存器内的中断级和开始地址保持器内的开始地址中的一种。
其中第3程序用中央处理器执行。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP113130/95 | 1995-05-11 | ||
JP7113130A JPH08305585A (ja) | 1995-05-11 | 1995-05-11 | 割込制御装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1148704A CN1148704A (zh) | 1997-04-30 |
CN1095121C true CN1095121C (zh) | 2002-11-27 |
Family
ID=14604313
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN96108433A Expired - Fee Related CN1095121C (zh) | 1995-05-11 | 1996-05-11 | 用小规模硬件灵活应付多个中断处理的中断控制装置 |
Country Status (7)
Country | Link |
---|---|
US (1) | US5748970A (zh) |
EP (2) | EP2077503A1 (zh) |
JP (1) | JPH08305585A (zh) |
KR (1) | KR100403995B1 (zh) |
CN (1) | CN1095121C (zh) |
DE (1) | DE69637971D1 (zh) |
TW (1) | TW331605B (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10260849A (ja) * | 1997-03-19 | 1998-09-29 | Mitsubishi Electric Corp | 情報処理装置および割り込み制御方法 |
US6044430A (en) | 1997-12-17 | 2000-03-28 | Advanced Micro Devices Inc. | Real time interrupt handling for superscalar processors |
KR100289098B1 (ko) * | 1997-12-24 | 2001-05-02 | 서평원 | 인터럽트 신호통합처리장치 |
US5987559A (en) * | 1998-02-02 | 1999-11-16 | Texas Instruments Incorporated | Data processor with protected non-maskable interrupt |
US20030005269A1 (en) * | 2001-06-01 | 2003-01-02 | Conner Joshua M. | Multi-precision barrel shifting |
US7003543B2 (en) * | 2001-06-01 | 2006-02-21 | Microchip Technology Incorporated | Sticky z bit |
US6985986B2 (en) * | 2001-06-01 | 2006-01-10 | Microchip Technology Incorporated | Variable cycle interrupt disabling |
US20030005268A1 (en) * | 2001-06-01 | 2003-01-02 | Catherwood Michael I. | Find first bit value instruction |
US6937084B2 (en) * | 2001-06-01 | 2005-08-30 | Microchip Technology Incorporated | Processor with dual-deadtime pulse width modulation generator |
US7467178B2 (en) * | 2001-06-01 | 2008-12-16 | Microchip Technology Incorporated | Dual mode arithmetic saturation processing |
US6975679B2 (en) * | 2001-06-01 | 2005-12-13 | Microchip Technology Incorporated | Configuration fuses for setting PWM options |
US20030028696A1 (en) * | 2001-06-01 | 2003-02-06 | Michael Catherwood | Low overhead interrupt |
US20020184566A1 (en) * | 2001-06-01 | 2002-12-05 | Michael Catherwood | Register pointer trap |
US20030023836A1 (en) * | 2001-06-01 | 2003-01-30 | Michael Catherwood | Shadow register array control instructions |
US6934728B2 (en) * | 2001-06-01 | 2005-08-23 | Microchip Technology Incorporated | Euclidean distance instructions |
US6952711B2 (en) * | 2001-06-01 | 2005-10-04 | Microchip Technology Incorporated | Maximally negative signed fractional number multiplication |
US7007172B2 (en) * | 2001-06-01 | 2006-02-28 | Microchip Technology Incorporated | Modified Harvard architecture processor having data memory space mapped to program memory space with erroneous execution protection |
US7020788B2 (en) * | 2001-06-01 | 2006-03-28 | Microchip Technology Incorporated | Reduced power option |
US6976158B2 (en) * | 2001-06-01 | 2005-12-13 | Microchip Technology Incorporated | Repeat instruction with interrupt |
US8984199B2 (en) * | 2003-07-31 | 2015-03-17 | Intel Corporation | Inter-processor interrupts |
JP2005316599A (ja) * | 2004-04-27 | 2005-11-10 | Matsushita Electric Ind Co Ltd | 割込制御装置 |
CN108280030B (zh) * | 2018-01-12 | 2020-11-10 | 厦门科灿信息技术有限公司 | 一种寄存器地址的分配方法、系统及相关装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0063802A2 (de) * | 1981-04-28 | 1982-11-03 | Industrialexport | Fettschmiervorrichtung zum Schmieren der Kettenbolzen einer laufenden Kette |
US4438489A (en) * | 1980-09-27 | 1984-03-20 | International Business Machines Corporation | Interrupt pre-processor with dynamic allocation of priority levels to requests queued in an associative CAM |
JPH0728991A (ja) * | 1993-07-13 | 1995-01-31 | Konica Corp | メモリを用いたデータ処理回路 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4217638A (en) * | 1977-05-19 | 1980-08-12 | Tokyo Shibaura Electric Co., Ltd. | Data-processing apparatus and method |
JPS5757345A (en) * | 1980-09-24 | 1982-04-06 | Toshiba Corp | Data controller |
US4523277A (en) * | 1982-09-30 | 1985-06-11 | Ncr Corporation | Priority interrupt system for microcomputer |
FI884026A (fi) * | 1987-09-03 | 1989-03-04 | Honeywell Bull | Mikroprocessors vektoravbrott. |
JPH0212432A (ja) * | 1988-06-30 | 1990-01-17 | Nec Corp | データ処理装置 |
JPH0795277B2 (ja) * | 1988-11-25 | 1995-10-11 | 日本電気株式会社 | データ処理装置 |
JPH04169937A (ja) * | 1990-11-02 | 1992-06-17 | Nec Corp | マイクロ・プロセッサ |
US5557766A (en) * | 1991-10-21 | 1996-09-17 | Kabushiki Kaisha Toshiba | High-speed processor for handling multiple interrupts utilizing an exclusive-use bus and current and previous bank pointers to specify a return bank |
US5473763A (en) * | 1993-08-02 | 1995-12-05 | Advanced Micro Devices, Inc. | Interrupt vector method and apparatus |
-
1995
- 1995-05-11 JP JP7113130A patent/JPH08305585A/ja active Pending
-
1996
- 1996-04-30 US US08/640,082 patent/US5748970A/en not_active Expired - Lifetime
- 1996-05-02 KR KR1019960014173A patent/KR100403995B1/ko not_active IP Right Cessation
- 1996-05-06 TW TW085105385A patent/TW331605B/zh active
- 1996-05-08 EP EP09157347A patent/EP2077503A1/en not_active Withdrawn
- 1996-05-08 EP EP96303193A patent/EP0742521B1/en not_active Expired - Lifetime
- 1996-05-08 DE DE69637971T patent/DE69637971D1/de not_active Expired - Fee Related
- 1996-05-11 CN CN96108433A patent/CN1095121C/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4438489A (en) * | 1980-09-27 | 1984-03-20 | International Business Machines Corporation | Interrupt pre-processor with dynamic allocation of priority levels to requests queued in an associative CAM |
EP0063802A2 (de) * | 1981-04-28 | 1982-11-03 | Industrialexport | Fettschmiervorrichtung zum Schmieren der Kettenbolzen einer laufenden Kette |
JPH0728991A (ja) * | 1993-07-13 | 1995-01-31 | Konica Corp | メモリを用いたデータ処理回路 |
Also Published As
Publication number | Publication date |
---|---|
TW331605B (en) | 1998-05-11 |
US5748970A (en) | 1998-05-05 |
KR100403995B1 (ko) | 2003-12-31 |
EP0742521B1 (en) | 2009-07-22 |
KR960042344A (ko) | 1996-12-21 |
EP2077503A1 (en) | 2009-07-08 |
DE69637971D1 (de) | 2009-09-03 |
JPH08305585A (ja) | 1996-11-22 |
CN1148704A (zh) | 1997-04-30 |
EP0742521A1 (en) | 1996-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1095121C (zh) | 用小规模硬件灵活应付多个中断处理的中断控制装置 | |
CN1253800C (zh) | 多处理器无线网络中微处理器通信的方法和数据处理系统 | |
CN1128406C (zh) | 数据处理系统及其中断处理方法 | |
CN1099078C (zh) | 在多处理器系统中的处理器之间传送消息的方法与装置 | |
CN100345124C (zh) | 利用共享专用高速缓存减少高速缓存失误率的方法和系统 | |
CN1920781A (zh) | 任务执行装置及方法 | |
CN1117318A (zh) | 多处理器数据存储器共享 | |
CN1279472C (zh) | 多处理器数据处理系统 | |
CN1494690A (zh) | 用于宽带网络的计算机体系结构和软件单元 | |
CN101040256A (zh) | 用于多核处理器的存储指令排序 | |
CN1496517A (zh) | 用于宽带网络的计算机体系结构的数据同步系统和方法 | |
CN1716187A (zh) | 预载控制器、由处理器控制将数据预载至临时存储器的预载控制方法和程序 | |
CN1337628A (zh) | 总线系统 | |
CN105808328A (zh) | 任务调度的方法、装置和系统 | |
CN1531684A (zh) | 数据处理器及运行数据处理器的方法 | |
CN1881934A (zh) | 微处理器、网络系统和通信方法 | |
CN111639044B (zh) | 一种支持中断优先级轮询仲裁派发的方法和装置 | |
CN1237737A (zh) | 在面向对象系统中用于接收器类型的联机数据库 | |
CN101040270A (zh) | 命令传输控制装置和命令传输控制方法 | |
CN1627728A (zh) | 在计算机服务器中共享以太网适配器的方法和装置 | |
CN1610880A (zh) | 使处理器与协处理器接口的方法和设备 | |
CN1517895A (zh) | 用于向多个信道分配多个来源的系统和方法 | |
CN104380272A (zh) | 用于中断结合的装置和方法 | |
CN101043282A (zh) | 多通道语音处理的数据存储方法 | |
CN1426560A (zh) | 具有不同资源访问方案的系统集成代理程序 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20021127 Termination date: 20120511 |