计算机系统 【技术领域】
本发明涉及具有多个 CPU 的微控制器等计算机系统, 例如涉及有效适用于汽车的 控制系统等的技术。背景技术
微控制器 ( 以下也简称 “微机” ) 是被组装到家电产品、 AV 设备、 移动电话、 汽车和 工业机械等设备中, 按照存储在存储器中的程序进行处理, 从而对各个设备进行控制的半 导体集成电路。
在汽车中, 由于控制装置的故障可能会导致事故, 所以对包含微机的部件要求其 具有高可靠性, 并且将其设计成在发生故障时检测故障并启动安全功能, 以使汽车不陷入 危险状态。 微机不仅对传感器、 传动装置进行诊断来检测这些部件的故障, 也需要检测微机 自身的故障。 微机的故障检测有各种方法, 常用的是通过将 CPU 二重化来使其进行同一处理, 并始终比较总线值的方法。在非专利文献 1 中公开了主 CPU 和比较用 CPU 同时执行同一处 理、 用比较电路比较各自的结果的方法。
非专利文献 2 中提出了能够使 2 个 CPU 切换执行并行工作和二重化 ( 冗长 ) 比较 工作的方式。当 CPU 取得 Switch 命令这一特殊命令时, 其 CPU 停止工作, 成为用于模式切 换的待机状态。当 2 个 CPU 取得 switch 命令成为用于模式切换的待机状态时, CPU 以新模 式开始工作。在性能模式 ( 并行工作 ) 下性能得以提高, 在安全模式 ( 二重化比较工作 ) 下用比较器对照 CPU 的输出, 从而能够检测 CPU 的故障, 安全性得以提高。
非专利文献 1 : “IEEE MICRO December 1984” 杂志、 “Fault Tolerance Achieved in VLSI”
非专利文献 2 : 论文集 “International Conference on Dependable Systems and Networks 2006” 、 45-54 页、 论文 “A ReconfigurableGeneric Dual-Core Architecture”
发明内容 但是, 上述的非专利文献 1 中, 2 个 CPU 总是进行二重化比较工作, 安全性提高, 但 性能只是 1 个 CPU 的性能。
上述的非专利文献 2 中, 由于是根据处理所必须的安全性的程度来切换并行工作 和二重化比较工作, 能够确保必要的安全性并提高性能。但是, 由于 2 个 CPU 使用 switch 命令这一命令进行模式切换, 因此先取得 switch 命令的 CPU, 在另一 CPU 取得 switch 命令 之前的期间, 成为待机状态。
在安全模式下, 2 个 CPU 同时取得 switch 命令, 但在性能模式下, 在不同的时刻取 得命令。通常利用中断开始模式切换。通常, 在微机中可以设定中断处理的优先级, 选择中 断请求中优先级最高的中断, 在其高于 CPU 的中断屏蔽级时, CPU 接受该中断。
在性能模式下, 有时 2 个 CPU 的中断屏蔽级不同, 一个 CPU 接受进行模式切换的中
断请求, 另一个 CPU 不接受该中断请求。在该情况下, 先接受中断的 CPU 执行 switch 命令 的模式切换, 成为待机状态, 后接受中断的 CPU 在取得 switch 命令之前成为待机状态, 虽然 是性能模式, 但是单个 CPU 进行工作, CPU 的处理效率降低。
因此, 本发明的代表性目的在于提供一种在从性能模式切换到安全模式时, 缩短 CPU 的待机时间, 提高性能模式的 CPU 处理效率的计算机系统。
本发明的上述及其他目的和新特征, 将通过本说明书的记载和附图而得以明确。
简要说明本申请公开的发明中的代表性技术方案如下。
即, 代表性技术方案的概要是 : 一种计算机系统, 具有至少 2 个 CPU 和进行对 CPU 的中断的可编程的中断控制器, 能够按中断主要原因设定 1 个或多个要中断的 CPU, 在设定 多个要中断的 CPU 时, 有如下两种接受方法 : 从处于能接受中断的状态的 CPU 开始依次接受 中断的方法, 在所有要中断的 CPU 成为能够接受状态之后一起接受中断的方法。由此, 在用 至少 2 个的多个 CPU 进行同一中断处理时, 出于交换结果并用软件对照来检测故障的目的, 由于在作为对象的所有 CPU 成为能够接受中断状态之后才接受中断, 因此能够缩短先成为 能够接受中断的状态的 CPU 的待机时间。
代表性另一技术方案的概要是 : 一种计算机系统, 具有至少 2 个 CPU、 进行对 CPU 的中断的可编程的中断控制器和比较 CPU 的输出的比较器, 该计算机系统能够切换性能模 式和安全模式来进行工作, 上述性能模式是 CPU 分别执行不同的处理而提高性能的模式, 上述安全模式是通过 CPU 执行相同处理并用比较器对照结果来检测故障的模式, 能够按中 断主要原因设定 1 个或多个要中断的 CPU, 能够按上述中断主要原因设定以上述性能模式 执行还是以上述安全模式执行的模式。由此, 例如, 在当前正在执行的模式为性能模式时, 当所选择的中断主要原因的模式为安全模式时, 能够抑制向 CPU 输出其中断请求, 在所有 中断 CPU 成为能够接受中断的状态之后, 使 CPU 的处理中断, 将工作模式从性能模式切换到 安全模式, 向 CPU 输出中断请求, 因此, 在从性能模式向安全模式切换时, 能够缩短 CPU 的待 机时间。
简要说明本申请公开的发明中的代表性技术方案所得到的效果如下。
即, 由代表性技术方案得到的效果是 : 在用至少 2 个的多个 CPU 进行同一中断处理 时, 作为对象的所有 CPU 成为可接受中断的状态而接受中断, 从而能够缩短先成为可接受 状态的 CPU 的待机时间。
由代表性技术方案得到的另一效果是 : 在从性能模式切换到安全模式时, 能够缩 短 CPU 的待机时间。 附图说明 图 1 是表示应用了本发明的计算机系统的第一实施方式中, 具有 2 个 CPU 的双核 微机一例的图。
图 2 是表示在第一实施方式中的中断请求优先级设定寄存器一例的图。
图 3 是表示第一实施方式中的中断 CPU 设定寄存器一例的图。
图 4 是表示第一实施方式中的中断模式设定寄存器一例的图。
图 5 是表示第一实施方式中的图 1 的中断控制器的内部构成及 CPUA 和 CPUB 的连 接一例的图。
图 6 是详细表示第一实施方式中的图 5 的中断控制器的综合控制的工作一例的图。 图 7 是表示第一实施方式中的单独模式中断一例的时序图。
图 8 是表示第一实施方式中的同时模式中断一例的时序图。
图 9 是表示应用了本发明的计算机系统的第二实施方式中, 具有 2 个 CPU, 可动态 切换进行并行处理的性能模式和进行二重化对照处理的安全模式的双核微机一例的图。
图 10 是表示第二实施方式中的图 9 的中断控制器的内部构成及 CPUA 和 CPUB 的 连接一例的图。
图 11 是详细表示第二实施方式中的图 10 的中断控制器的综合控制的工作一例的 图。
图 12 是表示第二实施方式中在性能模式下工作中出现安全模式的中断时一例的 时序图。
图 13 是表示第二实施方式中的 CPU 的状态寄存器 ( 中断关系 ) 一例的图。
图 14 是表示第一实施方式中、 微机附带的使用说明书中关于中断接受方法的记 载一例的图。
图 15 是表示第一实施方式中、 微机附带的使用说明书中关于中断接受方法的记 载一例的图。
图 16 是表示第一实施方式中、 微机附带的使用说明书中关于中断接受方法的记 载一例的图。
图 17 是表示第一实施方式中、 微机附带的使用说明书中关于中断接受方法的记 载一例的图。
图 18 是表示第一实施方式中、 微机附带的使用说明书中关于中断接受方法的记 载一例的图。
图 19 是表示第一实施方式中、 微机附带的使用说明书中关于中断接受方法的记 载一例的图。
图 20 是表示第二实施方式中、 微机附带的使用说明书中关于中断接受方法的记 载一例的图。
图 21 是表示第二实施方式中、 微机附带的使用说明书中关于中断接受方法的记 载一例的图。
图 22 是表示第二实施方式中、 微机附带的使用说明书中关于中断接受方法的记 载一例的图。
图 23 是表示第二实施方式中、 微机附带的使用说明书中关于中断接受方法的记 载一例的图。
图 24 是表示第二实施方式中、 微机附带的使用说明书中关于中断接受方法的记 载一例的图。
图 25 是表示第二实施方式中、 微机附带的使用说明书中关于中断接受方法的记 载一例的图。
图 26 是表示第二实施方式中、 微机附带的使用说明书中关于中断接受方法的记 载一例的图。
图 27 是表示第二实施方式中、 微机附带的使用说明书中关于中断接受方法的记 载一例的图。
标号说明
1... 微机
2...CPUA
3... 存储器 A
4...CPUA 总线
5... 总线桥 A
6...CPUB
7... 存储器 B
8...CPUB 总线
9... 总线桥 B
10... 系统总线
11... 中断控制器
12... 外围组件 A
13... 外围组件 L 14... 比较器 1100-1103... 中断请求优先级设定寄存器 1104、 1105... 中断 CPU 设定寄存器 1106... 中断模式设定寄存器 1107... 优先顺序判定 A 1108... 比较器 1109... 屏蔽 1110... 优先顺序判定 B 1111... 比较器 1112... 屏蔽 1113... 综合控制具体实施方式
以下, 参照附图来详细说明本发明的实施方式。 并且, 在用于说明实施例的所有附 图中, 对同样的构件标注相同附图标记且省略其重复说明。
< 第一实施方式 >
图 1 是表示应用了本发明的计算机系统的第一实施方式中, 具有 2 个 CPU 的双核 微机一例的图。本实施方式的微机 (MCU)1 由 CPUA2 和 CPUB6、 存储器 A3 和存储器 B7、 CPUA 总线 4 和 CPUB 总线 8、 总线桥 A5 和总线桥 B9、 系统总线 10、 中断控制器 11、 外围组件 A12 ~ 外围组件 L13 等构成。
CPUA2 是执行命令来进行运算和数据传输等处理的处理器。存储器 A3 存储 CPUA2 所执行的命令和处理的数据。CPUA 总线 4 是用于 CPUA2 访问存储器 A3 等组件的总线。总 线桥 A5 是在 CPUA2 访问利用系统总线 10 与外部连接的组件时对 CPUA 总线 4 和系统总线10 进行连接控制的控制器。
CPUB6 是执行命令来进行运算和数据传输等处理的处理器。存储器 B7 存储 CPUB6 所执行的命令和处理的数据。CPUB 总线 8 是用于 CPUB6 访问存储器 B7 等组件的总线。总 线桥 B9 是在 CPUB6 访问利用系统总线 10 与外部连接的组件时对 CPUB 总线 8 和系统总线 10 进行连接控制的控制器。
中断控制器 11 是在存在外部中断 110 或来自外围组件 A12 ~ L13 的中断请求时 选择预先设定的请求优先级最高的请求, 使 CPU 进行中断的组件。
中断控制器 11 和外围组件 A12 的接口 112 包括来自外围组件 A12 的中断请求信 号和表示接受到来自中断控制器 11 的中断的响应信号。
中断控制器 11 和外围组件 L13 的接口 113 包括来自外围组件 L13 的中断请求信 号和表示接受到来自中断控制器 11 的中断的响应信号。
中断控制器 11 和 CPUA2 的接口 114 包括来自中断控制器 11 的中断请求信号和来 自 CPUA2 的中断屏蔽信号。中断控制器 11 在所选择的中断主要原因的请求优先级为来自 CPUA2 的中断屏蔽信号的屏蔽级以上时输出中断请求。
中断控制器 11 和 CPUB6 的接口 115 包括来自中断控制器 11 的中断请求信号和来 自 CPUB6 的中断屏蔽信号。中断控制器 11 在所选择的中断主要原因的请求优先级为来自 CPUB6 的中断屏蔽信号的屏蔽级以上时输出中断请求。 外围组件 A12 是例如将模拟输入 120 转换为数字信号的 A/D 转换器。
外围组件 L13 是例如经由通信接口 130 进行通信处理的组件。
图 2 是表示设定中断主要原因的请求优先级的中断请求优先级设定寄存器一例 的图。该中断请求优先级设定寄存器例如内置于中断控制器 11 中。在此, 表示存在 4 个外 部中断主要原因和 12 个外围组件中断主要原因的情况。 中断请求优先级设定寄存器 IPR0、 IPR1、 IPR2、 IPR3 是 16 位的寄存器, 分别用 4 位设定 4 个中断主要原因的请求优先级。IPR0 的位 15 ~ 12 设定外部中断 0(EO)、 位 11 ~ 8 设定外部中断 1(E1)、 位 7 ~ 4 设定外部中断 2(E2)、 位 3 ~ 0 设定外部中断 3(E3)。设定值是从 B0000(B 表示二进制数 ) 到 B1111 这 16 个, 数值越大, 请求优先级越高。IPR1、 IPR2、 IPR3 对外围组件中断 A(PA) ~ L(PL) 设定请 求优先级。
图 3 是表示按中断主要原因设定中断 CPU 的中断 CPU 设定寄存器一例的图。该中 断 CPU 设定寄存器例如内置于中断控制器 11 中。有设定对 CPUA2 的中断的中断 CPU 设定 寄存器 0(ICP0)、 和设定对 CPUB6 的中断的中断 CPU 设定寄存器 1(ICP1)。寄存器的各位与 中断主要原因相对应, 例如 15 位进行外部中断 0 的设定。当设定 0 时, 即使有中断请求也 不进行中断。当设定 1 时, 进行中断请求。通过 ICP0 和 ICP1 的设定, 能够按中断主要原因 来选择不进行中断、 CPUA 中断、 CPUB 中断、 CPUA 和 CPUB 中断这 4 种中断方法。
图 4 是表示关于对 CPUA 和 CPUB 这二者进行中断设定的中断主要原因进行单独模 式、 同时模式的设定的中断模式设定寄存器 IMD 一例的图, 上述单独模式是对成为可接受 中断请求状态的 CPU 单独提出请求的模式, 上述同时模式是在 CPUA 和 CPUB 这二者成为可 接受状态之后同时提出请求的模式。该中断模式设定寄存器例如内置于中断控制器 11 中。 寄存器的各位与中断主要原因相对应, 例如 11 位进行外围组件中断 A(PA) 的设定。0 表示 单独模式, 1 表示同时模式。
图 5 是表示中断控制器 11 的内部构成及 CPUA2 和 CPUB6 的连接一例的图。中断 控制器 11 由 IPR0(1100) ~ IPR3(1103)、 ICP0(1104) 及 ICP1(1105)、 IMD(1106) 等各寄存 器、 优先顺序判定 A1107 及优先顺序判定 B1110、 比较器 1108 及比较器 1111、 屏蔽 1109 及 屏蔽 1112、 综合控制 1113 等各电路构成。
IPR0(1100)、 IPR1(1101)、 IPR2(1102)、 IPR3(1103) 是中断请求优先级设定寄存 器。ICP0(1104)、 ICP1(1105) 是中断 CPU 设定寄存器。IMD(1106) 是中断模式设定寄存器。
优先顺序判定 A1107 按照寄存器 1100 ~ 1106 的设定, 从中断请求 E0 ~ PL 中选 择对 CPUA2 的请求优先级最高的请求、 输出其请求优先级 11070。将所选择的请求的模式 ( 单独模式或同时模式 )、 中断编号 ( 例如、 E0 是 15、 E1 是 14、 ...、 PL 是 0 等 ) 作为属性信 号 11071 而输出。
比较器 1108 比较对 CPUA2 的中断请求优先级 11070 和存储在 CPUA2 的状态寄存 器 SR 的中断屏蔽位 I3、 I2、 I1、 I0(200), 在中断请求优先级 11070 高于中断屏蔽级 200 时, 比较结果 11080 为 1( 有请求 )。在中断请求优先级 11070 与中断屏蔽级 200 相同或比其小 时, 比较结果 11080 为 0( 无请求 )。
屏蔽 1109 按照来自综合控制 1113 的屏蔽信号 11130, 进行比较结果 11080 的无效 化。 优先顺序判定 B1110 按照寄存器 1100 ~ 1106 的设定, 从中断请求 E0 ~ PL 中选 择对 CPUB6 的请求优先级最高的请求, 并输出其请求优先级 11100。将所选择的请求的模 式、 中断编号作为属性信号 11101 而输出。
比较器 1111 比较对 CPUB6 的中断请求优先级 11100 和存储在 CPUB6 的状态寄存 器 SR 的中断屏蔽位 I3、 I2、 I1、 I0(600), 在中断请求优先级 11100 高于中断屏蔽级 600 时, 比较结果 11110 为 1( 有请求 )。在中断请求优先级 11100 与中断屏蔽级 600 相同或比其小 时, 比较结果 11110 为 0( 无请求 )。
屏蔽 1112 按照来自综合控制 1113 的屏蔽信号 11131, 进行比较结果 11110 的无效 化。
综合控制 1113 进行对 CPUA2 的中断和对 CPUB6 的中断的综合控制。输入中断属 性信号 11071、 11101、 比较结果 11080、 11110, 并输出比较结果屏蔽信号 11130、 11131。 若要 仅述综合控制 1113 的要点, 则是对 CPUA2 的中断和对 CPUB6 的中断仅在是单独模式的中断 时不进行屏蔽。存在同时模式的中断请求时进行屏蔽。
图 6 是详细表示综合控制 1113 的工作一例的图。 通过比较器输出、 请求的模式、 中 断编号 ( 一致 / 不一致 ) 的组合认为有 10 种情况。A 表示对 CPUA2 的中断, B 表示对 CPUB6 的中断。
情况 1 是, 比较器输出的 AB 都是 0( 无请求 ) 时, 无论请求的模式、 中断编号如何, 屏蔽信号为 0( 不屏蔽 )。
情况 2 是, 比较器输出的 A 是 1( 有请求 ) 为单独模式, B 为 0, 该情况下屏蔽信号 为 0。
情况 3 是, 比较器输出的 B 是 1 为单独模式, A 为 0, 该情况下屏蔽信号为 0。
情况 4 是, 比较器输出的 A 是 1 为单独模式, B 是 1 为单独模式, 该情况下屏蔽信 号为 0。
情况 5 是, 比较器输出的 A 是 1 为同时模式, B 是 0, 该情况下屏蔽信号 A 是 1。这 表示中断请求优先级高于 CPUA2 的屏蔽级, 但不高于 CPUB6 的屏蔽级。为了在 CPUB6 的屏 蔽级降低达到能接受中断请求之前不发出对 CPUA2 的中断请求, 使屏蔽信号 A 为 1, 使请求 无效。
情况 6 是, 比较器输出的 B 是 1 为同时模式, A 是 0, 该情况下屏蔽信号 B 是 1。这 表示中断请求优先级高于 CPUB6 的屏蔽级, 但不高于 CPUA2。 为了在 CPUA2 的屏蔽级降低达 到能接受中断请求之前, 不发出对 CPUB6 的中断请求, 使屏蔽信号 B 为 1, 使请求无效。
情况 7 是, 比较器输出的 A 是 1 为单独模式, 比较器输出的 B 是 1 为同时模式, 该 情况下屏蔽信号 B 是 1。这表示 CPUA2 选择的单独模式的中断请求的优先级比 CPUB6 选择 的同时模式的中断请求的优先级高。输出对 CPUA2 的中断请求, 使对 CPUB6 的中断请求无 效。
情况 8 是, 比较器输出的 A 是 1 为同时模式, 比较器输出的 B 是 1 为同时模式, 该 情况下屏蔽信号 A 是 1。这表示 CPUB6 选择的单独模式的中断请求的优先级比 CPUA2 选择 的同时模式的中断请求的优先级高。输出对 CPUB6 的中断请求, 使对 CPUA2 的中断请求无 效。
情况 9 是, 比较器输出的 AB 都是 1 为同时模式、 中断编号不一致, 该情况下屏蔽信 号 AB 为 1。这表示 CPUA2 和 CPUB6 选择的同时模式的中断主要原因不同。但是, 由于优先 级的设定不是按每一 CPU 单独进行的, 因此不可能出现该情况。
情况 10 是, 比较器输出的 AB 都是 1 为同时模式, 中断编号一致, 该情况下屏蔽信 号 AB 是 0。在该条件下对 CPUA2 和 CPUB6 同时输出同时模式的中断。
图 7 是表示单独模式中断一例的时序图。CLK 是用于使以 CPU 为首的微机的各功 能组件工作的时钟。
(1) 输入来自外围组件 A12 的中断请求 PA。PA 是使 CPUA2 和 CPUB6 这二者单独中 断的请求。
(2) 由 于 对 CPUA2 的 中 断 请 求 模 式 INTMDA 为 0( 单 独 )、 中断请求优先级 INTLVLA[3:0] 为 12 大于 CPUA2 的中断屏蔽级 SRA_I[3:0] 即 11, 因此中断控制器 11 使对 CPUA2 的中断请求 INTREQA 为 1( 有请求 )。
(3)CPUA2 在执行任务 T1 过程中接受中断, 分支到 PA 的中断处理程序 T10。 将中断 请求优先级 INTLVLA[3:0] 的值 12 复制到状态寄存器的屏蔽位, 将 SRA_I[3:0] 更新为 12。 由于 INTLVLA[3:0] 和 SRA_I[3:0] 成为相同的值, 因此中断控制器 11 使 INTREQA 从 1 变为 0, 撤销中断请求。
(4)CPUB6 执行了任务 T2( 中断处理程序 ), 但由于处理已结束, 执行中断复原命令 RTE。退避到栈的值返回状态寄存器, 从而中断屏蔽级 SRB_I[3:0] 返回为 11。
(5) 由 于 对 CPUB6 的 中 断 请 求 模 式 INTMDB 为 0( 单 独 )、 中断请求优先级 INTLVLB[3:0] 为 12 大于 CPUB6 的中断屏蔽级 SRB_I[3:0] 即 11, 因此中断控制器 11 使对 CPUB6 的中断请求 INTREQB 为 1( 有请求 )。
(6)CPUB6 接 受 中 断, 分 支 到 PA 的 中 断 处 理 程 序 T10。 将 中 断 请 求 优 先 级 INTLVLB[3:0] 的 值 12 复 制 到 状 态 寄 存 器 的 屏 蔽 位, 将 SRB_I[3:0] 更 新 为 12。 由 于 INTLVLB[3:0] 和 SRB_I[3:0] 成为相同的值, 因此中断控制器 11 使 INTREQB 从 1 变为 0, 撤销中断请求。
如此, 单独模式的中断在 CPUA2 和 CPUB6 分别成为可接受请求的时刻可被接受。
图 8 是表示同时模式中断一例的时序图。
(1) 输入来自外围组件 A12 的中断请求 PA。PA 是对 CPUA2 和 CPUB6 二者同时中断 的请求。
(2) 由 于 对 CPUA2 的 中 断 请 求 模 式 INTMDA 是 1( 同 时 ), 中断请求优先级 INTLVLA[3:0] 是 12 大于 CPUA2 的中断屏蔽级 SRA_I[3:0] 即 11, 但对 CPUB6 的中断请求优 先级 INTLVLB[3:0] 是 12 与 CPUB6 的中断屏蔽级 SRB_I[3:0] 即 12 相同, 因此中断控制器 11 使对 CPUA2 的中断请求 INTREQA 为 0( 无请求 )。
(3)CPUB6 执行了任务 T2( 中断处理程序 ), 但处理已结束, 因此执行中断复原命令 RTE。退避到栈的值返回状态寄存器, 从而中断屏蔽级 SRB_I[3:0] 返回为 11。 。
(4) 由 于 中 断 请 求 优 先 级 INTLVLA[3:0] 是 12 大 于 CPUA2 的 中 断 屏 蔽 级 SRA_ I[3:0] 即 11, 对 CPUB 6 的中断请求优先级 INTLVLB[3:0] 是 12 大于 CPUB 6 的中断屏蔽级 SRB_I[3:0] 即 11, 因此中断控制器 11 使对 CPUA2 的中断请求 INTREQA 为 1( 有请求 )。
(5) 中断控制器 11 与 (4) 相同, 使对 CPUB6 的中断请求 INTREQB 为 1。
(6)CPUA2 在执行任务 T1 过程中接受中断, 分支到 PA 的中断处理程序 T10。 将中断 请求优先级 INTLVLA[3:0] 的值 12 复制到状态寄存器的屏蔽位, 将 SRA_I[3:0] 更新为 12。 由于 INTLVLA[3:0] 和 SRA_I[3:0] 成为相同的值, 因此中断控制器 11 使 INTREQA 从 1 变为 0, 撤销中断请求。
(7)CPUB6 接 受 中 断, 分 支 到 PA 的 中 断 处 理 程 序 T10。 将 中 断 请 求 优 先 级 INTLVLB[3:0] 的 值 12 复 制 到 状 态 寄 存 器 的 屏 蔽 位, 将 SRB_I[3:0] 更 新 为 12。 由 于 INTLVLB[3:0] 和 SRB_I[3:0] 成为相同的值, 因此中断控制器 11 使 INTREQB 从 1 变为 0, 撤 销中断请求。
如此, 同时模式的中断在 CPUA2 和 CPUB6 都成为可接受请求的时刻可被接受。
图 14 ~图 19 是本实施方式的微机 1 附带的使用说明书中关于中断的接受方法的 记载一例的图。使用说明书中记载了图 14 ~图 19 所示的中断的接受方法。
例如, 在图 14 所示使用说明书中记载了 : 关于中断控制器 11 的中断 CPU 设定寄存 器等, 能够按中断主要原因来设定 1 个或多个中断 CPU, 在设定了多个中断 CPU 时, 有从成为 可接受该中断状态的 CPU 开始依次接受中断、 和在所有要中断 CPU 均成为可接受状态之后 一起接受中断这两种接受方法。
在图 15 及图 16 所示的使用说明书记载了中断控制器 11 的中断 CPU 设定寄存器 和中断模式设定寄存器等, 其内容如图 15 及图 16 所示。
而且, 在图 17 ~图 19 所示的使用说明书中记载了中断控制器 11 的中断 CPU 设定 寄存器、 中断模式设定寄存器、 中断请求优先级设定寄存器、 CPUA2 及 CPUB6 的状态寄存器 等, 其内容如图 17 ~图 19 所示。
根据以上说明的本实施方式, 单独模式的中断是在 CPUA2 和 CPUB6 分别成为可接 收请求状态的时刻可被接受, 同时模式的中断是在 CPUA2 和 CPUB6 都成为可接收请求状态 的时刻可被接受, 因此在用 2 个 CPUA2 和 CPUB6 进行同一中断处理时, 作为对象的所有 CPU 在成为可接受中断的状态之后接受中断, 能够缩短先接受的 CPU 的待机时间。结果, 能够缩短 CPU 的待机时间, 提高 CPU 的处理效率。
< 第二实施方式 >
图 9 是表示应用了本发明的计算机系统的第二实施方式的、 具有 2 个 CPU, 可动态 切换进行并行处理的性能模式和进行二重化对照处理的安全模式的双核微机一例的图。 本 实施方式的微机 (MCU)1, 与图 1 相比, 增加了用于比较 CPUA2 和 CPUB6 的输出的比较器 14、 和中断控制器 11 与比较器 14 之间的接口 116。
在性能模式下, CPUA2 和 CPUB6 分别独立处理不同的程序。在该性能模式下, 比较 器 14 不工作。在安全模式下, CPUA2 和 CPUB6 同步处理相同的程序。在该安全模式下, 比 较器 14 工作, CPUA2 和 CPUB6 的输出不同时, 输出错误。来自中断控制器 11 的接口 116 包 括表示是性能模式 ( 值为 0) 还是安全模式 ( 值为 1) 的模式信号。
图 10 是表示中断控制器 11 的内部构成及 CPUA2 和 CPUB6 连接一例的图。
IPR0(1100)、 IPR1(1101)、 IPR2(1102)、 IPR3(1103) 是中断请求优先级设定寄存 器。ICP0(1104)、 ICP1(1105) 是中断 CPU 设定寄存器。IMD(1106) 是中断模式设定寄存器。
优先顺序判定 A1107 按照寄存器 1100 ~ 1106 的设定, 从中断请求 E0 ~ PL 中选 择对 CPUA2 的请求优先级最高的请求, 输出其请求优先级 11070。将所选择的请求的模式 ( 性能模式或安全模式 )、 中断编号 ( 例如、 E0 为 15、 E1 为 14、 ...、 PL 为 0 等 ) 作为属性信 号 11071 而输出。 比较器 1108 比较对 CPUA2 的中断请求优先级 11070 和存储在 CPUA2 的状态寄存 器 SR 中的中断屏蔽位 I3、 I2、 I1、 I0(200), 在中断请求优先级 11070 大于中断屏蔽级 200 时将比较结果 11080 设为 1( 有请求 )。在中断请求优先级 11070 与中断屏蔽级 200 相同或 比其小时, 将比较结果 11080 设为 0( 无请求 )。
屏蔽 1109 按照来自综合控制 1113 的屏蔽信号 11130, 使比较结果 11080 无效。
优先顺序判定 B1110 按照寄存器 1100 ~ 1106 的设定从中断请求 E0 ~ PL 中选择 对 CPUB6 的请求优先级最高的请求, 并输出其请求优先级 11100。将所选择的请求的模式、 中断编号作为属性信号 11101 而输出。
比较器 1111 比较对 CPUB6 的中断请求优先级 11100 和存储在 CPUB6 的状态寄存 器 SR 的中断屏蔽位 I3、 I2、 I1、 I0(600), 在中断请求优先级 11100 大于中断屏蔽级 600 时 将比较结果 11110 设为 1( 有请求 )。在中断请求优先级 11100 与中断屏蔽级 600 相同或比 其小时, 将比较结果 11110 设为 0( 无请求 )。
屏蔽 1112 按照来自综合控制 1113 的屏蔽信号 11131, 使比较结果 11110 无效。
综合控制 1113 进行对 CPUA2 的中断和对 CPUB6 的中断的综合控制。 输入中断属性 信号 11071、 11101、 比较结果 11080、 11110, 输出比较结果屏蔽信号 11130、 11131。在 CPUA2 和 CPUB6 增加模式切换功能 201、 601。 寄存器也有 2 组, 分别用于性能模式和用于安全模式, 按模式切换。中断控制器 11 的综合控制 1113 在 CPU 成为可接收与当前执行中的模式不同 的模式的中断请求的状态后, 输出模式切换请求 (11132 的一部分、 11133 的一部分 )。CPU 取消执行中的命令, 将最后执行的命令的下一命令地址保持于程序计数器, 停止工作。 接着 将寄存器切换为与当前不同的模式用的寄存器, 对中断控制器 11 输出模式切换响应信号 (11132 的一部分、 11133 的一部分 )。当从 CPUA2 和 CPUB6 这二者返回模式切换响应信号 时, 综合控制 1113 切换工作模式 11134, 输出模式切换完成信号 (11132 的一部分、 11133 的
一部分 )。由于工作模式和中断请求的模式变成相同, 因此比较结果屏蔽信号 11130、 11131 从 1( 屏蔽 ) 变为 0( 不屏蔽 ), 可输出中断请求信号 11090、 11120。
图 11 是详细表示综合控制 1113 的工作一例的图。通过工作中的模式、 比较器输 出、 请求的模式、 中断编号 ( 一致 / 不一致 ) 的组合认为有 20 种情况。A 表示对 CPUA2 的中 断, B 表示对 CPUB6 的中断。
情况 1 ~ 10 是当前模式为性能模式的情况。
情况 1 是, 比较器输出的 AB 都是 0( 无请求 ), 该情况下无论请求的模式、 中断编号 如何, 屏蔽信号是 0( 不屏蔽 )。
情况 2 是, 比较器输出的 A 是 1( 有请求 ) 为性能模式, B 是 0, 该情况下屏蔽信号 是 0。即、 输出对 CPUA2 的中断请求。
情况 3 是, 比较器输出的 B 是 1 为性能模式, A 是 0, 该情况下屏蔽信号是 0。即、 输出对 CPUB6 的中断请求。
情况 4 是, 比较器输出的 A 是 1 为性能模式, B 是 1 为性能模式, 该情况下屏蔽信 号是 0。即、 对 CPUA2 和 CPUB6 输出中断请求。
情况 5 是, 比较器输出的 A 是 1 为安全模式, B 是 0, 该情况下屏蔽信号 A 是 1。这 表示中断请求优先级大于 CPUA2 的屏蔽级, 但不大于 CPUB6 的屏蔽级。为了在 CPUB6 的屏 蔽级下降到可接受中断请求之前不发出对 CPUA2 的中断请求, 使屏蔽信号 A 为 1, 使请求无 效。 情况 6 是, 比较器输出的 B 是 1 为安全模式, A 是 0, 该情况下屏蔽信号 B 是 1。这 表示中断请求优先级大于 CPUB6 的屏蔽级, 但不大于 CPUA2 的屏蔽级。为了在 CPUA2 的屏 蔽级下降到可接受中断请求之前不发出对 CPUB6 的中断请求, 使屏蔽信号 B 为 1, 使请求无 效。
情况 7 是, 比较器输出的 A 是 1 为性能模式, 比较器输出的 B 是 1 为安全模式, 该 情况下屏蔽信号 B 是 1。这表示 CPUA2 选择的性能模式的中断请求的优先级高于 CPUB6 选 择的安全模式的中断请求的优先级。输出对 CPUA2 的中断请求, 使对 CPUB6 的中断请求无 效。
情况 8 是, 比较器输出的 A 是 1 为安全模式, 比较器输出的 B 是 1 为性能模式, 该 情况下屏蔽信号 A 是 1。这表示 CPUB6 选择的性能模式的中断请求的优先级高于 CPUA2 选 择的安全模式的中断请求的优先级。输出对 CPUB6 的中断请求, 使对 CPUA2 的中断请求无 效。
情况 9 是, 比较器输出的 AB 都是 1 为安全模式, 中断编号不一致, 该情况下屏蔽信 号 AB 是 1。这表示 CPUA2 和 CPUB6 选择的安全模式的中断主要原因不同。但是, 优先级的 设定不是对每一 CPU 单独进行的, 因此不可能出现该情况。
情况 10 是, 比较器输出的 AB 都是 1 为安全模式, 中断编号一致, 该情况下屏蔽信 号 AB 是 1。由于 CPUA2 和 CPUB6 二者都成为可接收安全模式的请求的状态, 因此模式切换 为 1( 进行模式切换 )。
情况 11 ~ 20 是当前模式为安全模式的情况。
情况 11 是, 比较器输出的 AB 都是 0( 无请求 ), 该情况下无论请求的模式、 中断编 号如何, 屏蔽信号是 0( 不屏蔽 )。
情况 12 是, 比较器输出 A 是 1( 有请求 ) 为性能模式, B 是 0, 该情况下屏蔽信号 A 是 1。由于 CPUA2 是可接受性能模式的中断的状态, 因此模式切换是 1。
情况 13 是, 比较器输出 B 是 1 为性能模式, A 是 0, 该情况下屏蔽信号是 0。由于 CPUB6 是可接受性能模式的中断的状态, 因此模式切换是 1。
情况 14 是, 比较器输出 A 是 1 为性能模式, B 是 1 为性能模式, 该情况下屏蔽信号 AB 是 1。由于 CPUA2 和 CPUB6 是可接受中断的状态, 因此模式切换是 1。
情况 15 是, 比较器输出 A 是 1 为安全模式、 B 是 0, 该情况下屏蔽信号 A 是 1。这 表示中断请求优先级大于 CPUA2 的屏蔽级, 但不大于 CPUB6 的屏蔽级。为了在 CPUB6 的屏 蔽级下降到可接受中断请求之前不发出对 CPUA2 的中断请求, 使屏蔽信号 A 为 1, 使请求无 效。
情况 16 是, 比较器输出的 B 是 1 为安全模式, A 是 0, 该情况下屏蔽信号 B 是 1。这 表示中断请求优先级大于 CPUB6 的屏蔽级, 但不大于 CPUA2 的屏蔽级。为了在 CPUA2 的屏 蔽级下降到可接受中断请求之前不发出对 CPUB6 的中断请求, 使屏蔽信号 B 为 1, 使请求无 效。
情况 17 是, 比较器输出的 A 是 1 为性能模式, 比较器输出的 B 是 1 为安全模式, 该 情况下屏蔽信号 AB 是 1。这表示 CPUA2 选择的性能模式的中断请求的优先级高于 CPUB6 选 择的安全模式的中断请求的优先级。 使对 CPUA2 和 CPUB6 的中断请求无效。 并且由于 CPUA2 成为可接受性能模式的中断的状态, 因此模式切换是 1。
情况 18 是, 比较器输出的 A 是 1 为安全模式, 比较器输出的 B 是 1 为性能模式, 该 情况下屏蔽信号 AB 是 1。这表示 CPUB6 选择的性能模式的中断请求的优先级高于 CPUA2 选 择的安全模式的中断请求的优先级。 使对 CPUA2 和 CPUB6 的中断请求无效。 并且由于 CPUB6 成为可接受性能模式的中断的状态, 因此模式切换是 1。
情况 19 是, 比较器输出的 AB 都是 1 为安全模式, 中断编号不一致, 该情况下屏蔽 信号 AB 是 1。这表示 CPUA2 和 CPUB6 选择的安全模式的中断主要原因不同。但是, 优先级 的设定不是对每一 CPU 单独进行的, 因此不可能出现该情况。
情况 20 是, 比较器输出的 AB 都是 1 为安全模式, 中断编号一致, 该情况下屏蔽信 号 AB 是 0。在该条件下对 CPUA2 和 CPUB6 同时输出安全模式的中断。
图 12 是表示在性能模式下工作中存在安全模式的中断时一例的时序图。
(1) 输入来自外围组件 A12 的中断请求 PA。
(2) 由 于 对 CPUA2 的 中 断 请 求 模 式 INTMDA 为 1( 安 全 )、 中断请求优先级 INTLVLA[3:0] 是 12 大于 CPUA2 的中断屏蔽级 SRA_I[3:0] 即 11, 但对 CPUB6 的中断请求优 先级 INTLVLB[3:0] 是 12 与 CPUB6 的中断屏蔽级 SRB_I[3:0] 即 12 相同, 因此中断控制器 11 使对 CPUA2 的中断请求 INTREQA 为 0( 无请求 )。
(3)CPUB6 执行了任务 TP2( 中断处理程序 ), 由于处理已结束, 所以执行中断复原 命令 RTE。退避到栈的值返回状态寄存器, 由此中断屏蔽级 SRB_I[3:0] 返回为 11。
(4) 由 于 中 断 请 求 优 先 级 INTLVLA[3:0] 是 12 大 于 CPUA2 的 中 断 屏 蔽 级 SRA_ I[3:0] 即 11, 对 CPUB6 的中断请求优先级 INTLVLB[3:0] 是 12 大于 CPUB6 的中断屏蔽级 SRB_I[3:0] 即 11, 因此中断控制器 11 对 CPUA2 和 CPUB6 输出模式切换请求。按照该请求 CPUA2 执行模式切换。 取消执行中的命令, 将最后执行的命令的下一命令地址保持于程序计数器。 (5)CPUB6 也同样执行模式切换。
(6)CPUA2 停止工作, 将寄存器切换为安全模式用寄存器, 对中断控制器 11 输出模 式切换响应信号。
(7)CPUB6 也同样停止, 将寄存器切换为安全模式用寄存器, 对中断控制器 11 输出 模式切换响应信号。
(8) 中断控制器 11 输出的模式信号 CPUMD 从 0( 性能模式 ) 变为 1( 安全模式 )。
(9) 由于工作模式成为安全模式, 因此中断控制器 11 使对 CPUA2 的中断请求 INTREQA 为 1( 有请求 )。
(10) 同样使对 CPUB6 的中断请求 INTREQB 为 1。
(11)CPUA2 再次开始工作, 继续执行在切换到性能模式之前执行的任务 TS1。
(12)CPUB6 再次开始工作, 继续执行在切换到性能模式之前执行的任务 TS1。
(13)CPUA2 接 受 INTREQA, 分 支 到 PA 的 中 断 处 理 程 序 TS2。 将 中 断 请 求 优 先 级 INTLVLA[3:0] 的值 12 复制到状态寄存器的屏蔽位, 将 SRA_I[3:0] 更新为 12。由于 INTLVLA[3:0] 和 SRA_I[3:0] 成为相同的值, 因此中断控制器 11 使 INTREQA 从 1 变为 0, 撤 销中断请求。
(14)CPUB6 接受 INTREQB, 分支到 PA 的中 断 处理 程序 TS 2。将 中 断请求 优 先 级 INTLVLB[3:0] 的 值 12 复 制 到 状 态 寄 存 器 的 屏 蔽 位, 将 SRB_I[3:0] 更 新 12。 由 于 INTLVLB[3:0] 和 SRB_I[3:0] 成为相同的值, 因此中断控制器 11 使 INTREQB 从 1 变为 0, 撤 销中断请求。
如此, 对于在性能模式下工作中发生的安全模式的中断, 在 CPUA2 和 CPUB6 都成为 可接收请求的状态的时刻, 从性能模式切换到安全模式之后, 才可接受上述中断。
图 13 是表示 CPU(CPUA2、 CPUB6) 的状态寄存器 ( 中断关系 ) 一例的图。位 7 ~ 4 是中断屏蔽位 I3、 I2、 I1、 I0。位 8 是模式切换位 MC。MC 为 0 表示无模式切换, MC 为 1 表 示有模式切换。
状态寄存器具有 2 组, 分别用于性能模式和用于安全模式, 可根据模式而切换。MC 通过复位而被初始化为 0。模式切换后, 状态寄存器的 MC 为 1。当接受中断时, 状态寄存器 退避到栈。中断请求优先级被写入中断屏蔽位, MC 为 0。中断处理结束, 状态寄存器的值从 栈复原, 则 MC 是 1。 由于得知在进入中断之前进行了模式切换, 因此能够进行模式切换处理 后返回原来的模式。
图 20 ~图 27 表示本实施方式的微机附带的使用说明书中关于中断的接受方法的 记载一例的图。使用说明书中记载了图 20 ~图 27 所示的中断的接受方法。
例如, 在图 20 所示的使用说明书中记载了 : 在能够切换性能模式和安全模式来进 行工作的构成中, 所述性能模式是使 CPU 分别执行不同处理来提高性能的模式, 所述安全 模式是使 CPU 执行相同处理并用比较器对照结果由此检测故障的模式, 对于中断控制器 11 的中断 CPU 设定寄存器、 中断模式设定寄存器和综合控制 1113 等, 按中断主要原因能够设 定 1 个或多个中断 CPU, 能够按中断主要原因设定在性能模式下执行还是在安全模式下执 行, 当前执行中的模式是性能模式时, 所选择的中断主要原因的模式是性能模式时, 向 CPU 输出其中断请求。
在图 21 ~图 23 所示的使用说明书记载了关于中断控制器 11 的中断 CPU 设定寄 存器、 中断模式设定寄存器和综合控制 1113 等, 其内容如图 21 ~图 23 所示。
在图 24 ~图 27 所示的使用说明书记载了关于中断控制器 11 的中断 CPU 设定寄存 器、 中断模式设定寄存器和中断请求优先级设定寄存器、 CPUA2 及 CPUB6 的状态寄存器等, 其内容如图 24 ~图 27 所示。
根据以上说明的本实施方式, 与实施方式 1 相同, 在用 2 个 CPUA2 和 CPUB6 进行同 一中断处理时, 作为对象的所有 CPU 成为可接受中断状态之后接受中断, 因此可缩短先接 受的 CPU 的待机时间。尤其是在本实施方式中, 在性能模式下工作中发生的安全模式的中 断, 是在 CPUA2 和 CPUB6 都成为可接受请求状态的时刻、 从性能模式切换到安全模式之后才 可被接受, 因此, 在从性能模式向安全模式切换时, 可缩短 CPU 的待机时间, 提高性能模式 的 CPU 处理效率。
以上根据上述实施方式来具体说明了本发明人完成的发明, 但本发明并不限于上 述实施方式, 在不脱离其要旨的范围内, 当然可进行各种变更。
例如, 在上述第一及第二实施方式中以具有 2 个 CPU 的双核微机为例进行了说明, 但本发明不限于具有 2 个 CPU, 也广泛适用于具有 3 个以上等、 至少 2 个以上的 CPU 的计算 机系统。
本发明的计算机系统涉及具有多个 CPU 的微控制器等的计算机系统, 可利用于例 如汽车的控制系统等。