半导体装置和存储器访问控制方法与流程

文档序号:11235379阅读:441来源:国知局
半导体装置和存储器访问控制方法与流程

相关申请的交叉引用

包括说明书、附图和摘要的于2016年3月2日提交的日本专利申请no.2016-039566所公开的内容以引用的方式全部并入本文。



背景技术:

例如,本发明涉及一种半导体装置和存储器访问控制方法,并且涉及将数据和由该数据生成的错误检测代码存储在存储器中的技术。

专利文献1在过去公开了一种存储器控制电路作为示例,如专利文献1的图4所示的。该存储器控制电路包括地址/控制线控制电路和ecc电路。当将地址和数据从cpu发送至存储器控制电路时,ecc电路从数据生成ecc数据并且将其写入存储器的指定地址。当读取数据时,ecc电路通过从存储器读取的数据创建新ecc数据,并且将从存储器读取到的ecc数据与新创建的ecc数据进行比较,并且进行错误检测和数据的校正。

然而,在该存储器控制电路中,存在一个问题,在地址/控制线控制电路用来将地址指定至存储器的地址信号线中的任何一条线中,在值固定故障发生时,难以检测地址错误。这是因为要将数据和由数据创建的ecc数据写入指定至存储器的地址;因此,即使从不符合预期的地址读取数据和ecc数据,在将读取到的ecc数据与新创建的ecc数据进行比较时,也不会检测到分歧。

此处,为了解决这个问题,专利文献1所公开的计算机系统分别指定写入数据的地址和写入ecc数据的地址。然而,在解决上述问题时,该技术与本说明书所公开的技术完全不同。

(专利文献1)日本专利申请公开no.hei5(1993)-88992。



技术实现要素:

如上所述,专利文献1所公开的技术具有一个问题,难以检测地址信号系统在存储器访问中的故障。

通过本说明书的说明和附图,本发明的其它问题和新特征将变得清晰。

根据一个实施例,半导体装置通过修改用于存储数据的第一地址的至少一个位的值,以使错误检测代码的存储位置偏移到数据的存储位置,并且通过使其它位当中的规定的数量的位的值反转或者使规定的数量的位的顺序,来生成地址作为用于存储错误检测代码的第二地址。

根据一个实施例,可以检测地址信号系统在存储器访问中的故障。

附图说明

图1是示出了根据实施例1的cpu系统的配置的框图;

图2是示出了根据实施例1的i/f转换电路的配置的框图;

图3是示出了根据实施例1的adr反转电路的配置的框图;

图4是根据实施例1的内部存储器的存储器映射的概念图;

图5是示出了根据实施例1的i/f转换电路的操作的概念图;

图6是示出了在未执行adr反转时的操作的概念图;

图7是示出了根据实施例1的地址信号在固定型故障发生时的值改变的附图;

图8是示出了在未执行adr反转时地址信号在固定型(stuck-at)故障发生时的值改变的附图;

图9是示出了根据实施例2的i/f转换电路的配置的框图;

图10是示出了根据实施例2的adr旋转电路的配置的框图;

图11是根据实施例2的内部存储器的存储器映射的概念图;

图12是示出了根据实施例2的i/f转换电路的操作的概念图(第一示例);

图13是示出了根据实施例2的地址信号在固定型故障发生时的值改变的附图(第一示例);

图14是示出了根据实施例2的i/f转换电路的操作的概念图(第二示例);

图15是示出了在执行adr反转时的操作的概念图(第二示例);

图16是示出了根据实施例2的地址信号在固定型故障发生时的值改变的附图(第二示例);

图17是示出了在执行adr反转时地址信号在固定型故障发生时的值改变的附图(第二示例);

图18是示出了根据实施例3的adr旋转电路的配置的框图;

图19是根据实施例3的内部存储器的存储器映射的概念图;

图20是示出了根据实施例3的地址信号在固定型故障发生时的值改变的附图;

图21是示出了根据实施例3的地址信号在另一固定型故障发生时的值改变的附图;

图22是示出了根据实施例4的i/f转换电路的配置的框图;

图23是示出了根据实施例4的adr位顺序反转电路的配置的框图;

图24是示出了根据实施例4的另一adr位顺序反转电路的配置的框图;

图25是示出了2位地址的地址位更改形式的附图;

图26是示出了3位地址的地址位更改形式的附图;

图27是示出了4位地址的地址位更改形式的附图;

图28是示出了计算地址位更改形式的数量的公式的附图;

图29是示出了根据实施例5的adr旋转电路的配置的框图;

图30是示出了根据实施例5的另一adr旋转电路的配置的框图;

图31是根据实施例5的内部存储器的存储器映射的概念图;

图32是示出了根据实施例6的i/f转换电路的配置的框图;

图33是示出了根据实施例6的adr移位&偏移设置电路的配置的框图;

图34是示出了当n=4个位时的adr移位&偏移设置电路的配置的框图;

图35是根据实施例6的内部存储器的存储器映射的概念图;

图36是示出了根据实施例6的地址信号在固定型故障发生时的值改变的附图;

图37是示出了根据实施例7的在i/f转换电路中的adr转换电路的配置的框图;

图38是示出了根据实施例7的adr移位&偏移设置电路的配置的框图;

图39是根据实施例7的内部存储器的存储器映射的概念图;

图40是示出了根据实施例8的adr移位&偏移设置电路的配置的框图;

图41是示出了根据实施例9的i/f转换电路的配置的框图;

图42是示出了根据实施例9的adr反转移位&偏移设置电路的配置的框图;

图43是示出了根据实施例10的adr移位&偏移设置电路的配置的框图;

图44是示出了根据实施例10的adr选择电路的配置的框图;

图45是示出了根据实施例11的cpu系统的配置的框图;

图46是示出了根据实施例11的转换电路的配置的框图;

图47是用于阐释实施例11的效果的附图;

图48是示出了根据实施例12的i/f转换电路的配置的框图;

图49是根据实施例12的内部存储器的存储器映射的概念图;

图50是示出了根据实施例12的通过地址转换对地址进行的改变的附图;以及

图51是用作实施例1至12的概述配置的半导体装置的附图。

具体实施方式

在下文中,参照附图阐释优选实施例。在以下实施例中示出的具体数值仅仅是利于理解实施例的示例,而不是对值的限制,除非另有明确规定。在以下描述和附图中,为了澄清阐释,对本领域的技术人员显而易见的内容适当地进行缩写和简写。

<实施例1>

首先,参照附图阐释实施例1的配置和操作。参照图1,阐释根据实施例1的cpu(中央处理单元)系统的配置。如图1所示,cpu系统1包括cpu10、控制输入i/f11、命令输出i/f12、i/f转换电路13、内部存储器14、dmac(直接存储器存取控制器)15、其它各种外围电路16、和其它各种i/f17。

cpu10、控制输入i/f11、命令输出i/f12、i/f转换电路13、dmac15、其它各种外围电路16、和其它各种i/f17经由系统总线相互耦合。该内部存储器14经由i/f转换电路13与系统总线耦合。

实施例1阐释了采用cpu系统1作为安装在车辆中的车载控制系统的示例。然而,示例并不限于此。cpu系统1可以安装在任何设备中,该任何设备包括:输入单元,该输入单元用于将数据输入至cpu系统1;以及控制单元,cpu系统1基于从输入单元输入的数据来对该控制单元进行控制(设备包括:例如,传输机械(诸如车辆或者摩托车)、施工机械(诸如重型工业机器)、或者工业机械(诸如制造机器人))。只要设备包括存储器和对存储器可访问的装置(例如,cpu),cpu系统1就可以是安装在任何设备中的信息处理系统(例如,信息设备,诸如个人计算机或者智能电话)。

例如,cpu系统1建立在微控制器(半导体装置)中。然后,该cpu系统1可以控制车辆,与其它微控制器(图1中的“子微型计算机”)协作。

输入单元是安装在车辆中的装置。输入单元接收来自用户的指令控制单元的控制的输入。例如,输入单元是键单元或者开关(图1中的“sw”)。响应于来自用户的输入,输入单元将指示输入内容的输入数据传输至cpu系统1。

控制单元是安装在车辆中的装置。控制单元由cpu系统1控制。例如,控制单元是门或者镜。cpu系统1基于由从输入单元接收到的输入数据指示的输入内容,来生成用作指示控制单元的控制内容的控制数据的命令,并且将生成的命令传输至控制单元。响应于来自cpu系统1的命令,控制单元根据由命令指示的控制内容操作。

cpu10基于来自输入单元的输入数据来生成控制数据。例如,当控制数据针对门时,cpu10生成指示门打开和关闭的控制数据作为控制内容。例如,当控制数据针对镜时,cpu10生成指令调节镜的位置的控制数据作为控制内容。

控制输入i/f11是将输入单元耦合至系统总线的接口电路。即,将对控制单元进行控制的输入数据从输入单元输入至控制输入i/f11。命令输出i/f12是将控制单元与系统总线耦合的接口电路。即,命令输出i/f12将用于对控制单元进行控制的命令输出至控制单元。

i/f转换电路13是将内部存储器14与系统总线耦合的接口电路。响应于将来自cpu10和dmac15中的每一个的数据写入的请求,i/f转换电路13将数据写入到内部存储器14中。响应于从cpu10和dmac15中的每一个读取数据的请求,i/f转换电路13从内部存储器14读取数据。当响应于来自cpu10和dmac15中的每一个的请求来访问内部存储器14(将数据写入内部存储器14或者从内部存储器14读取数据)时,i/f转换电路13执行用于检测在数据信号系统和地址信号系统中的故障的处理。

更具体地,当i/f转换电路13将数据写入到内部存储器14中时,i/f转换电路13还将由数据生成的ecc(错误校准代码)写入到内部存储器14中。当i/f转换电路13从内部存储器14读取数据时,i/f转换电路13从读取数据生成ecc,并且通过将生成的ecc与已经写入在具有数据的内部存储器14中的ecc进行比较来检测故障。在实施例1中,如稍后将描述的,通过从存储数据的地址生成存储ecc的地址,不仅可以检测在数据信号系统中的故障,还可以检测在地址信号系统中的故障。

内部存储器14是存储有各种类型的数据的存储电路。即,例如,上述输入数据、控制数据(命令)、ecc等存储在内部存储器14中。

dmac15实现在耦合至系统总线的电路10至13、16和17之中的数据传递。例如,dmac15将从输入单元输入至控制输入i/f11的输入数据传递至i/f转换电路13,并且请求i/f转换电路13将传递的输入数据写入到内部存储器14中。例如,dmac15请求i/f转换电路13从内部存储器14读取命令,并且将从i/f转换电路13读取到的命令传递至命令输出i/f12。因此,将命令输出至控制单元。

此处,cpu10请求i/f转换电路13读取由dmac15存储在内部存储器14中的输入数据,并且获取由i/f转换电路13读取的输入数据。cpu10基于获取到的输入数据来生成命令,并且请求i/f转换电路13将生成的命令写入到内部存储器14中。因此,存储在内部存储器14中的命令由dmac15传递,如上所述。

cpu系统1可以包括任意电路作为其它各种外围电路16。其它各种i/f17是将设置在车载控制系统中的其它单元(诸如子微型计算机)耦合至系统总线的接口电路。

如上所述,cpu10和dmac15作为总线主控器操作。其它电路11至13、16和17作为总线受控器操作。

接下来,参照图2,阐释根据实施例1的i/f转换电路13的配置。如图2所示,i/f转换电路13包括i/f控制电路110、adr转换电路120、wdt转换电路130、和rdt转换电路140。此处,“adr”、“wdt”、和“rdt”是分别指示地址、写入数据、和读取数据的缩写名称。

总线主控器经由系统总线将启用(选择)信号、写入/读取信号、地址信号、和写入数据输出至i/f转换电路13。i/f转换电路13经由系统总线将等待#信号、读取数据、和错误通知信号输出至总线主控器。i/f转换电路13和内部存储器14与从时钟生成电路(未示出)输入的时钟信号同步操作。等待#信号的“#”是指示等待#信号是低有效信号的符号。

此处,基于以下假设来阐释示例:启用信号是1个位;写入/读取信号是1个位;地址信号是n个位(n是规定正整数);写入数据是8个位;等待#信号是1个位;读取数据是8个位;和错误通知信号是1个位。

当将数据写入到内部存储器14中时,总线主控器将请求写入数据的信号、断言的启用信号(例如,值为“1”)、指定数据写入的写入/读取信号(例如,值为“0”)、指示写入数据的地址的地址信号、和用作待写入数据的写入数据输出至i/f转换电路13。响应于此,i/f转换电路13将写入数据写入由在内部存储器14中的地址信号指示的地址。在这种情况下,i/f转换电路13还将从写入数据生成的ecc写入到内部存储器14中。

当从内部存储器14读取数据时,总线主控器将断言的启用信号(值为“1”)、指定数据读取的写入/读取信号(值为“1”)、和指示读取数据的地址的地址信号输出至i/f转换电路13。响应于此,i/f转换电路13读取存储在由在内部存储器14中的地址信号指示的地址处的数据,并且将读取到的数据输出至总线主控器,作为读取数据。在这种情况下,i/f转换电路13读取与来自内部存储器14的数据对应的ecc,并且基于读取的ecc和数据来确定数据中是否发生错误。当通过该确定检测到数据的错误时,i/f转换电路13输出错误通知信号以向总线主控器通知错误。然而,在一位错误的情况下,对待输出至总线主控器的读取数据进行校正。

当总线主控器访问内部存储器14时,i/f控制电路110通过将等待一个时钟周期应用于总线主控器,来使访问延长到两个时钟周期。然后,i/f控制电路110进行控制以使adr转换电路120、wdt转换电路130、和rdt转换电路140执行关于在第一时钟周期中的数据的操作和关于在第二时钟周期中的ecc的操作。即,通过将由总线主控器输出的信号的输出延长到第二时钟周期,i/f控制电路110可以基于在第二时钟周期中的信号来执行关于ecc的操作。

i/f控制电路110包括启用信号保持电路111和等待信号生成电路112。

当总线主控器访问内部存储器14时,启用信号保持电路111保持在第一时钟周期中的断言的启用信号的值,并且与时钟信号同步地,在第二时钟周期中将作为保持的值的反转输出的信号输出至等待信号生成电路112。即,从总线主控器输出的启用信号在经由i/f转换电路13时被输入至内部存储器14,并且还被输入至i/f控制电路110。例如,启用信号保持电路111是ff(触发器)电路。

即,在第一时钟周期中,基于在一个先前时钟周期中的去断言的启用信号(值为“0”),启用信号保持电路111将作为反转输出的信号(值为“1”)输出至等待信号生成电路112。接下来,在第二时钟周期中,基于在一个先前时钟周期(第一时钟周期)中的断言的启用信号(值为“1”),启用信号保持电路111将作为反转输出的信号(值为0)输出至等待信号生成电路112。

此处,启用信号指示是否启用或者禁用数据的写入和读取。当启用数据的写入和读取时,断言启用信号。当禁用数据的写入和读取时,去断言启用信号。

当输入断言的启用信号时,内部存储器14基于从i/f转换电路13输入的写入/读取信号(指定写入)、地址信号、和写入数据来将数据写入到内部存储器14中,如稍后将描述的。另一方面,当输入去断言的启用信号时,内部存储器14不执行将数据写入到内部存储器14中,不管写入/读取信号、地址信号、和等待数据的输入。

当输入断言的启用信号时,内部存储器14基于从i/f转换电路13输入的写入/读取信号(指定读取)、和地址信号来从内部存储器14读取数据,如稍后将描述的。另一方面,当输入去断言的启用信号时,内部存储器14不执行从内部存储器14读取数据,不管写入/读取信号和地址信号的输入。

等待信号生成电路112将作为从总线主控器输入的启用信号和从启用信号保持电路111输入的信号的nand操作结果的信号输出至总线主控器,作为等待#信号。例如,等待信号生成电路112是nand电路。

即,在第一时钟周期中,等待信号生成电路112基于来自启用信号保持电路111的断言的启用信号(例如,值为“1”)和信号(例如,值为“1”),来将断言的等待#信号(例如,值为“0”)输出至总线主控器。在输入该断言的等待#信号的同时,总线主控器停止操作。接下来,在第二时钟周期中,等待信号生成电路112基于来自启用信号保持电路111的保持断言的启用信号(例如,值为“1”)和信号(例如,值为“0”),来将去断言的等待#信号(例如,值为“1”)输出至总线主控器。在输入该去断言的等待#信号的同时,总线主控器停止操作。

以这种方式,当总线主控器访问内部存储器14时,通过输入断言的等待#信号来将访问周期延长一个时钟周期。然后,总线主控器对内部存储器14的访问通过两个时钟周期完成。因此,当总线主控器访问内部存储器14时,维持启用信号、写入/读取信号、地址信号、和写入数据的输出两个时钟周期。

等待#信号还用作对adr转换电路120、wdt转换电路130、和rdt转换电路140的操作进行切换的数据/ecc信号。即,等待信号生成电路112将等待#信号输出至adr转换电路120、wdt转换电路130、和rdt转换电路140的每一个,作为数据/ecc信号。

等待#信号还用作指示在内部存储器14中的写入数据的地址或者在内部存储器14中的读取数据的地址的最高阶位的值的信号。即,等待信号生成电路112将等待#信号输出至内部存储器14,作为指示地址的最高阶位的信号。

在第一时钟周期中,为了将写入或者读取数据的地址指定至内部存储器14,adr转换电路120实际上将从总线主控器输入的地址信号输出至内部存储器14。另一方面,在第二时钟周期中,为了将写入或者读取与待写入或者待读取的数据配对的ecc的地址指定至内部存储器14,adr转换电路120基于从总线主控器输入的地址信号,来生成指示写入或者读取ecc的地址的地址信号,并且将生成的地址信号输出至内部存储器14。

adr转换电路120包括adr反转电路121和选择器122。将从总线主控器输出的地址信号输入到adr反转电路121中。adr反转电路121反转由输入的地址信号指示的地址的所有位的每个值,并且将地址信号输出至选择器122。将来自总线主控器的地址信号和来自adr反转电路121的地址信号输入到选择器122中。选择器122选择来自总线主控器的地址信号和来自adr反转电路121的地址信号中的一个,并且将选择的地址信号输出至内部存储器14。

当其是将数据/ecc信号(例如,值为“0”)从等待信号生成电路112输入的第一时钟周期时,选择器122选择从总线主控器输入的地址信号,并且将选择的地址信号输出至内部存储器14。另一方面,当其是将数据/ecc信号(例如,值为1)从等待信号生成电路112输入的第二时钟周期时,选择器122选择从adr反转电路121输入的地址信号,并且将选择的地址信号输出至内部存储器14。

因此,在最后输入到内部存储器14中的(n+1)位地址信号中,较低阶n位变成adr转换电路120已经输出的n位地址信号,并且最高阶的一个位变成等待信号生成电路112已经输出的数据/ecc信号。

然后,内部存储器14执行将数据写入由在第一时钟周期中的(n+1)位地址信号指示的地址或者从该地址读取数据。内部存储器14执行将ecc写入由在第二时钟周期中的(n+1)位地址信号指示的地址或者从该地址读取数据。

在第一时钟周期中,为了将数据写入到内部存储器14中,wdt转换电路130实际上将从总线主控器输入的写入数据输出至内部存储器14。另一方面,在第二时钟周期中,为了将与写入数据配对的ecc写入到内部存储器14中,wdt转换电路130基于从总线主控器输入的写入数据来生成ecc,并且将生成的ecc输出至内部存储器14。

wdt转换电路130包括ecc生成电路131和选择器132。将来自总线主控器的写入数据输入到ecc生成电路131中。ecc生成电路131从输入的写入数据生成ecc,并且将生成的ecc输出至选择器132。

将来自总线主控器的写入数据和来自ecc生成电路131的ecc输入到选择器132中。选择器132选择来自总线主控器的写入数据和来自ecc生成电路131的ecc中的一个,并且将选择的一个输出至内部存储器14。

当其是将数据/ecc信号(例如,值为“0”)从等待信号生成电路112输入的第一时钟周期时,选择器132选择从总线主控器输入的写入数据,并且将选择的写入数据输出至内部存储器14。另一方面,当其是将数据/ecc信号(例如,值为1)从等待信号生成电路112输入的第二时钟周期时,选择器132选择从ecc生成电路131输入的ecc,并且将选择的ecc输出至内部存储器14。

因此,当输入指定数据写入的写入/读取信号时,在第一时钟周期中,内部存储器14将从总线主控器输入的写入数据存储在由(n+1)位地址信号指示的地址处。在第二时钟周期中,内部存储器14将从wdt转换电路130输入的ecc(准确地说,包括虚拟位和ecc的数据,如稍后将描述的)存储在由(n+1)位地址信号指示的地址处。经由i/f转换电路13,实际上将从总线主控器输出的写入/读取信号输入至内部存储器14。

另一方面,当输入指定数据读取的写入/读取信号时,在第一时钟周期中,内部存储器14将存储在由(n+1)位地址信号指示的地址处的数据输出至rdt转换电路140,作为读取数据。在第二时钟周期中,内部存储器14将存储在由(n+1)位地址信号指示的地址处的ecc输出至rdt转换电路140。

当总线主控器从内部存储器14读取数据时,rdt转换电路140基于从内部存储器14输入的读取数据和ecc来确定错误是否已经发生在读取数据中。当错误还未发生在读取数据中时,rdt转换电路140实际上将从内部存储器14输入的读取数据输出至总线主控器。另一方面,当错误已经发生在读取数据中时,rdt转换电路140基于ecc来对在从内部存储器14输入的读取数据中的错误进行校正,并且然后将校正后的读取数据输出至总线主控器。

rdt转换电路140包括数据保持电路141、ecc检查电路142、和错误校正电路143。

当总线主控器访问内部存储器14时,数据保持电路141在第一时钟周期中取回从内部存储器输入的读取数据,并且与时钟信号同步地,在第二时钟周期将保持的读取数据输出至ecc检查电路142和错误校正电路143。例如,数据保持电路141是ff电路。

ecc检查电路142不在第一时钟周期中操作;然而,在第二时钟周期中操作,ecc检查电路142基于从数据保持电路141输入的读取数据和从内部存储器14输入的ecc,来确定数据的错误是否已经发生。

即,在第一时钟周期中,当将数据/ecc信号(例如,值为“0”)从等待信号生成电路112输入时,ecc检查电路142不执行确定故障。另一方面,在第二时钟周期中,当将数据/ecc信号(例如,值为“1”)从等待信号生成电路112输入时,ecc检查电路142确定数据的错误是否已经发生。换言之,数据/ecc信号用作指示是否启用或者禁用ecc检查电路142的操作的启用信号。

当ecc检查电路142确定错误已经发生在数据的任何一个位中时,ecc检查电路142将指示错误位的位置的错误校正信号输出至错误校正电路143。当ecc检查电路142确定无法校正的2位或者多位错误已经发生在数据中时,ecc检查电路142将断言的错误通知信号(例如,值为“1”)输出至总线主控器,作为通知错误发生的信号。另一方面,当ecc检查电路142确定无法校正的2位或者多位错误还未发生在数据中时,ecc检查电路142将去断言的错误通知信号(例如,值为“0”)输出至总线主控器,作为通知错误没有发生的信号。

当错误还未发生在数据中时,错误校正电路143实际上将在第二时钟周期中从数据保持电路141输入的读取数据输出至总线主控器。另一方面,当错误已经发生在数据中时,错误校正电路143对在第二时钟周期中从数据保持电路141输入的读取数据的错误进行校正,并且然后将校正后的读取数据输出至总线主控器。更具体地,错误校正电路143将在从数据保持电路141输入的读取数据中的通过使在由从ecc检查电路142输入的错误校正信号指示的位的位置处的值反转而获得的数据输出至总线主控器,作为在错误校正之后的读取数据。例如,错误校正电路143包括nxor(异or)电路。

参照图3,下面阐释包括在根据实施例1的adr转换电路120中的adr反转电路121的配置。如图3所示,adr转换电路120包括n段位值反转电路1210。此处,阐释了具有n个位的地址信号的示例。

n段位值反转电路1210中的每一个与n位地址信号的位a0、a1、a2、……、a(n-1)中的每一个对应。n段位值反转电路1210中的每一个使地址信号的对应位的值反转,并且输出在反转之后的值。从n段位值反转电路1210中的每一个输出的位a’0、a’1、a’2、……、a’(n-1)被收集作为n位地址信号,并且被输出至内部存储器14。此处,在“a”之后的数字指示随着数字的增大,其为更高阶的位。即,在n个位中,“0”指示其是最低阶位,并且“n-1”指示其是最高阶位。对于其它位同样也是如此。例如,位值反转电路1210是not(逻辑not)电路。

接下来,参照图4,阐释根据实施例1的内部存储器14的存储器映射的配置。此处,对内部存储器14的数据宽度是8个位、内部存储器14的地址宽度是(n+1)个位、内部存储器14的数据量是(8×2(n+1))个位,并且n=3的示例做出阐释。

内部存储器14将图4中的低阶的一半用作存储初始数据的区域,并且将高阶的一半用作存储与初始数据配对的ecc的区域。即,将在内部存储器14中的区域区分为在将地址的最高阶位的值(图4中的a3)设置为在地址空间中的“0”时存储有数据的区域,并且区分为在将地址的最高阶位的值设置为“1”时存储有ecc的区域。在实施例1中,针对存储有数据的地址的低阶n位(图4中的a2至a0)的值,存储有与数据配对的ecc的地址的低阶n位的值是通过图3所示的adr反转电路121(a2至a0的值被标记为图4中的“adr反转”的部分)的操作使位置反转而获得的值。

即,如图4所示,地址adr-0(“0000”)的数据(“data0”)与地址adr-f(“1111”)的ecc(“ecc0”)配成一对。地址adr-1(“0001”)的数据(“data1”)与地址adr-e(“1110”)的ecc(“ecc1”)配成一对。地址adr-2(“0010”)的数据(“data2”)与地址adr-d(“1101”)的ecc(“ecc2”)配成一对。地址adr-3(“0011”)的数据(“data3”)与地址adr-c(“1100”)的ecc(“ecc3”)配成一对。地址adr-4(“0100”)的数据(“data4”)与地址adr-b(“1011”)的ecc(“ecc4”)配成一对。地址adr-5(“0101”)的数据(“data5”)与地址adr-a(“1010”)的ecc(“ecc5”)配成一对。地址adr-6(“0110”)的数据(“data6”)与地址adr-9(“1001”)的ecc(“ecc6”)配成一对。地址adr-7(“0111”)的数据(“data7”)与地址adr-8(“1000”)的ecc(“ecc7”)配成一对。

此处,与图4所示的“adr-n”的“n”对应的部分是地址的十六进制数记法。即,“adr-0”指定地址是“0000”,并且“adr-f”指定地址是“1111”。

从8位数据生成的ecc具有5个位。因此,通过将虚拟位(例如,值为“0”)添加至3个高阶位来将ecc改变为8位数据,并且将该ecc存储在内部存储器14中。

内部存储器14如上所述配置,并且与内部存储器14对应设置的i/f转换电路13也如上所述操作。因此,当错误发生在写入内部存储器14中的数据的任何一个位中时,i/f转换电路13的rdt转换电路140在读取数据时会检测到数据的错误。然后,当检测到一位错误时,对错误进行校正。当检测到二位或者多位错误时,发出指示错误无法校正的错误通知信号。

因此,当固定型故障(固定至0或者1)因在待从i/f转换电路13的wdt转换电路130输出至内部存储器14的写入数据(8位)的8条信号线当中的任何一条或者多条线的故障(断开连接)而发生在相互配对的数据和ecc中时,在与断开的信号线对应的位的位置处的值变成与初始值不同的值(反转值)。因此,当读取数据时,肯定将值改变检测为在ecc检查电路142中的一位错误或者二位或者更多位错误。当固定型故障(固定至0或者1)因在i/f转换电路13的rdt转换电路140从内部存储器14输入的读取数据(8位)的8条信号线当中的任何一条或者多条线的故障(断开连接)而发生时,这也成立。

另一方面,下面阐释固定型故障(固定至0或者1)因在待从i/f转换电路13的adr转换电路120输入到内部存储器14中的地址信号(n位)的n条信号线当中的任何一条或者多条线的故障(断开连接)而发生的情况。

参照图5,下面阐释了在固定型1故障(固定至1)发生在待输入到内部存储器14中的地址信号(n位)的a2位中的情况下的操作。假设内部存储器14具有n=3,如图4所示。此处,对通过以下流程执行数据的写入和读取的情况做出阐释。

(1)将数据(“data5”)写入地址adr-5(“0101”),并且将与数据配对的ecc(“ecc5”)写入地址adr-a(“1010”)。在附图中,“data5”和“ecc5”被表示在括号中。

(2)重新将数据(“data1”)写入地址adr-1(“0001”),并且将与数据配对的ecc(“ecc1”)写入地址adr-e(“1110”)。

(3)此处,固定型1故障发生在与地址的a2位对应的地址信号线中。因此,访问内部存储器14的地址adr-0至adr-3和地址adr-8至adr-b是不可能的。

(4)目的在于读取数据(“data1”)和与数据配对的ecc(“ecc1”),该数据和该ecc在(2)中已经被写入。

(4)’此时,事实上,由于在(3)中已经发生的地址信号线的故障,从内部存储器14的地址adr-5(“0101”),而不是从存储有数据(“data1”)的地址adr-1(“0001”)读取数据(“data5”)。另一方面,存储有ecc(“ecc1”)的地址adr-e(“1110”)不受地址信号线的故障影响。因此,正常读取ecc(“ecc1”)。即,读取在(2)中未被写入的数据的数据(“data5”)和不与数据配对的ecc(“ecc1”)。

(5)结果,包括在rdt转换电路140中的ecc检查电路142肯定将固定型1故障检测为一位错误或者二位错误或者更多位错误。以这种方式,还可以检测在地址信号系统中的故障;因此,从功能安全性的观点来看,实施例1很好。

此外,参照图6,下面阐释在未对存储ecc的区域执行“adr反转”的情况(删除在图2所示的i/f转换电路13中的adr转换电路120的情况)下,按照与图5相同的方式来执行数据的写入和读取时的操作。

(1)将数据(“data5”)写入地址adr-5(“0101”),并且将与数据配对的ecc(“ecc5”)写入地址adr-d(“1101”)。在附图中,“data5”和“ecc5”被表示在括号中。

(2)重新将数据(“data1”)写入地址adr-1(“0001”),并且将与数据配对的ecc(“ecc1”)写入地址adr-9(“1001”)。

(3)此处,固定型1故障发生在与地址的a2位对应的地址信号线中。因此,访问内部存储器14的地址adr-0至adr-3和地址adr-8至adr-b是不可能的。

(4)目的在于读取数据(“data1”)和与数据配对的ecc(“ecc1”),该数据和该ecc在(2)中已经被写入。

(4)’此时,事实上,由于在(3)中已经发生的地址信号线的故障,从内部存储器14的地址adr-5(“0101”),而不是从存储有数据(“data1”)的地址adr-1(“0001”)读取数据(“data5”)。存储有ecc(“ecc1”)的地址adr-9(“1001”)受地址信号线的故障影响。因此,从内部存储器14的地址adr-d(“1101”)读取ecc(“ecc5”)。即,读取在(2)中未被写入的数据(“data5”)和与数据配对的ecc(“ecc1”)。

(5)因此,包括在rdt转换电路140中的ecc检查电路142认为数据(“data5”)与ecc(“ecc5”)成正常对。因此,只要位错误还未发生在数据中,将故障检测为一位错误或者二位或者更多位错误是不可能的。

图5示出了在固定型1故障(固定至1)发生在待输入到内部存储器14中的地址信号的a2位中时的操作。然而,根据实施例1,同样可以检测地址信号线的故障,即使在固定型0故障(固定至0)发生在a2位中时、或者在固定型1故障或者固定型0故障发生在其它地址(具体为a1位和a0位)中时。

至于图4所示的n=3的情况,图7是表格,该表格示出了超过8行的(按照从上面起的顺序编号为“0”至“7”)地址信号的低阶3位a2至a0的值,约8个不同对“data0”与“ecc0”、“data1”与“ecc1”、……、以及“data7”与“ecc7”。在图7中,将由在读取数据时输入到内部存储器14中的地址信号指示的地址表示为“地址(数据)”,并且将由在读取ecc时输入到内部存储器14中的地址信号指示的地址表示为“地址(ecc)”。

该表格从左到右示出了以下7种不同的情况:

(1)没有故障发生在地址的所有位中的情况;

(2)固定型1故障发生在地址的a2位中的情况(这与图5所示的情况对应);

(3)固定型0故障发生在地址的a2位中的情况;

(4)固定型1故障发生在地址的a1位中的情况;

(5)固定型0故障发生在地址的a1位中的情况;

(6)固定型1故障发生在地址的a0位中的情况;以及

(7)固定型0故障发生在地址的a0位中的情况。

按照顺序将在每个位的位置处的三个值(0或者1)设置为a2至a0的值。在其值已经因故障而改变的位的位置处的值下面划线。

图7所示的表格的第二行(编号为1)是示出了同时存储有待在图5的(2)中被写入的数据(“data1”)和与数据配对的ecc(“ecc1”)的地址的行。当故障还未发生在地址的所有位中时,地址具有在最左边分别示出的低阶3位(“001”)adr-1、和低阶3位(“110”)adr-e。在图7所示的表格中,a2至a0的这些值的对被实线包围。

此处,当固定型1故障发生在a2位中时,在表格的右方立即示出地址,其中,地址(数据)的adr-1受到故障的影响变成不同的adr-5(低阶3位是“101”),并且在不受故障影响的情况下,地址(ecc)的adr-e(低阶3位是“1-1”)保持为adr-e。在表格中,在a2至a0的这些值的对的故障的影响之后的值被虚线包围,并且,同时,在a2至a0的这些值的对的故障的影响之后的值中的每一个中被实际访问的地址(数据)和地址(ecc)被实线包围并且在表格中用粗线联接。因此,访问数据(“data5”)和ecc(“ecc1”)。即,数据与ecc的配对显然已经崩溃,如图5的(4)’所示。

同样,作为其它示例,在表格中的进一步右方示出了固定型1故障发生在a1位中的情况和固定型1故障发生在a0位中的情况,其中,按照与上述方式相同的方式来示出值a2至a0的对。数据与ecc的配对显然已经崩溃。

作为其它示例,在图7所示的表格的第7行(编号为6)中涉及同时存储有数据(“data6”)和与数据配对的ecc(“ecc6”)的地址,同样,示出了固定型0故障发生在a2位中的情况、固定型0故障发生在a1位中的情况、和固定型0故障发生在a0位中的情况。在任何情况下,数据与ecc的配对崩溃,如同预期的一样。通过该表格,显而易见的是,当固定型故障发生在地址的位中的任何一个中时,肯定可以检测到故障。

图8是表格,该表格在未对存储有ecc的区域执行“adr反转”的情况(即,删除了图2所示的i/f转换电路13的adr转换电路120的情况)下,按照与图7中的方式相似的方式示出了地址(数据)和地址(ecc)的低阶3位a2至a0的值。固定型1故障已经发生在存在于该表格的第二行(编号为1)中的左侧的第二故障示例中的地址的a2位中的情况与图6所示的情况对应。

在这种情况下,如从图8所示的表格中所看见的,当固定型故障发生在地址的位中的任何一个中时,在受到影响的情况下变得不可能访问的地址处的数据和ecc的对被认为是在另一地址处的数据和ecc的对(即,地址变得退化)。因此,在读取数据时检测地址信号线的故障是不可能的。

对从总线主控器输入的n位地址信号的所有位的值被反转的示例做出上述阐释。然而,本发明并不限于该示例。例如,通过使n位地址信号的规定的数量的位(任何数量的n位至一位)的值反转来获得某种程度的效果。可以将规定的数量的位设置为来自n个位的最高阶位的规定的数量的位、或者来自最低阶位的规定的数量的位。可以将该规定的数量的位设置为n个位的连续位或者不连续位。然而,如上所述,可以检测多个故障,优选通过使n位地址信号的所有位的值反转。

如上所述,在实施例1中,adr转换电路120基于用于将数据存储在内部存储器14中的第一地址,来生成用于存储从数据生成的错误检测代码的第二地址。当请求将数据写入第一地址时,wdt转换电路130将数据写入第一地址并且将错误检测代码写入第二地址。当请求从第一地址读取数据时,rdt转换电路104从第一地址读取数据,从第二地址读取错误检测代码,并且基于数据和错误检测代码来检测错误。

此处,i/f控制电路110修改第一地址(与(n+1)位地址对应)的至少一个位(与(n+1)位地址的最高阶位对应)的值,并且使错误检测代码的存储位置偏移到数据的存储位置。adr转换电路120通过使其它位(与低阶n位对应)的规定的数量的位的值反转,来生成地址作为第二地址。在上述示例中,adr转换电路120通过使所有其它位(n个位)的值反转,来生成地址作为第二地址。

因此,当在已经将数据和由数据生成的ecc的对写入在内部存储器14之后固定型故障(固定至0或者1)发生在通向内部存储器14的地址信号线中的任何一条中时,可以在读取写入数据时检测地址信号线的故障。

这对两条或者多条地址信号线的故障同样有效。还可以检测影响地址的值的故障,这发生在adr转换电路120中以生成和输出待输入到内部存储器14中的地址信号,并且发生在内部存储器14中的地址信号处理电路(未示出)中。

在实施例1中,总线主控器在执行数据的写入或者读取的单位时间(与时钟周期对应)内将启用数据的写入或者读取的启用信号输出至内部存储器14。响应于启用数据的写入或者读取的从总线主控器输出的启用信号,i/f控制电路110输出等待信号以在单位时间内抑制总线主控器的操作,而不是输出等待信号以允许总线主控器的操作。

响应于抑制总线主控器的操作的从i/f控制电路110输出的等待信号,wdt转换电路130将数据写入第一地址(与第一时钟周期对应)。随后,响应于允许总线主控器的操作的从i/f控制电路110输出的等待信号,wdt转换电路130将错误检测代码写入第二地址(与第二时钟周期对应)。

响应于抑制总线主控器的操作的从i/f控制电路110输出的等待信号,rdt转换电路140随后从第一地址读取数据,并且响应于允许总线主控器的操作的从i/f控制电路110输出的等待信号,rdt转换电路140从第二地址读取错误检测代码。

因此,可以通过总线主控器维持数据的写入或者读取的请求,并且,同时,利用持续的时间,可以将错误检测代码写入到内部存储器14中,或者从内部存储器14读取错误检测代码。还可以转移等待信号,以利用更简单的配置来实现数据的写入的请求的继续、和在数据的写入与错误检测代码的写入之间的切换。可以进一步转移等待信号,以利用更简单的配置来实现数据的读取的请求的继续、和在数据的读取与错误检测代码的读取之间的切换。

在实施例1中,将抑制总线主控器的操作的等待信号用作第一地址的至少一个位的值。将允许总线主控器的操作的等待信号用作在修改之后的第一地址的至少一个位的值。

因此,可以转移等待信号,以利用更简单的配置来实现数据的写入的请求的继续、和错误检测代码的存储位置到数据的存储位置的偏移。

在实施例1中,响应于抑制总线主控器的操作的从i/f控制电路110输出的等待信号,rdt转换电路140保持从内部存储器14读取到的数据。随后,响应于允许总线主控器的操作的从i/f控制电路110输出的等待信号,rdt转换电路140基于从内部存储器14读取到的错误检测代码和保持的数据来检测错误。

因此,可以转移等待信号,以利用更简单的配置来实现数据的写入或者读取的请求的继续、和用于错误检测的操作的改变。

<实施例2>

接下来,参照附图阐释实施例2的配置和操作。根据实施例2的cpu系统1的配置和操作与图1所示的根据实施例1的cpu系统1的配置和操作基本上相同。因此,省略了对其的阐释。然而,在实施例2中,包括在cpu系统1中的i/f转换电路13的一部分的配置和操作与根据实施例1的i/f转换电路13的配置和操作不同。

接下来,参照图9,阐释根据实施例2的i/f转换电路13的配置。与根据实施例1的i/f转换电路13相比较,根据实施例2的i/f转换电路13包括adr旋转电路123来代替在adr转换电路120中的adr反转电路121。根据实施例2的i/f控制电路110、wdt转换电路130、和rdt转换电路140的配置和操作与根据实施例1的对应部分的配置和操作相同。

将从总线主控器输出的地址信号输入到adr旋转电路123中。adr旋转电路123使由输入的地址信号指示的地址的所有位旋转(移位),并且将旋转后的地址信号输出至选择器122。因此,在实施例2中,选择器122选择从总线主控器输出的地址信号和从adr旋转电路123输出的地址信号中的一个,并且将选择的地址信号输出至内部存储器14。

接下来,参照图10,阐释根据实施例2的包括在adr转换电路120中的adr旋转电路123的配置。此处,阐释了具有n个位的地址信号的示例。

如图10所示,adr旋转电路123使由地址信号指示的地址向左旋转(至高阶位方向)一个位,以重排n位地址信号的每个位的位置。即,adr旋转电路123使地址信号的n个位向左移位了一个位,并且使溢出的最高阶位移动至最低阶位。

如图10所示,这是通过使n位地址信号线在输入阶段和在输出阶段在adr旋转电路123中的每个位位置移位和耦合来实现的。即,将输入到adr旋转电路123中的n位地址信号的位a0、a1、a2、……、a(n-1)中的每一个设置为待从adr旋转电路123输出的n位地址信号的a’1、a’2、……、a’(n-1)、a’0中的每一个。在该adr旋转电路123中,n位地址信号线的每个位的信号由n个缓冲器1230中的每一个接收,并且使连接目的地的位位置移位。

接下来,参照图11,阐释根据实施例2的内部存储器14的存储器映射。与图4所示的根据实施例1的内部存储器14一样,此处,对内部存储器14的数据宽度是8个位、内部存储器14的地址宽度是(n+1)个位、内部存储器14的数据量是(8×2(n+1))个位,并且n=3的示例做出阐释。

在实施例2中,针对存储有数据的地址的低阶n位(图11中的a2至a0)的值,存储有与数据配对的ecc的地址的低阶n位的值被改变为一种布置,在该布置中,通过图10所示的adr旋转电路123(a2至a0的值被标记为图11中的“adr反转”的部分)的操作来重排每个位。

即,如图11所示,地址adr-0(“0000”)的数据(“data0”)与地址adr-8(“1000”)的ecc(“ecc0”)配成一对。地址adr-1(“0001”)的数据(“data1”)与地址adr-a(“1010”)的ecc(“ecc1”)配成一对。地址adr-2(“0010”)的数据(“data2”)与地址adr-c(“1100”)的ecc(“ecc2”)配成一对。地址adr-3(“0011”)的数据(“data3”)与地址adr-e(“1110”)的ecc(“ecc3”)配成一对。地址adr-4(“0100”)的数据(“data4”)与地址adr-9(“1001”)的ecc(“ecc4”)配成一对。地址adr-5(“0101”)的数据(“data5”)与地址adr-b(“1011”)的ecc(“ecc5”)配成一对。地址adr-6(“0110”)的数据(“data6”)与地址adr-d(“1101”)的ecc(“ecc6”)配成一对。地址adr-7(“0111”)的数据(“data7”)与地址adr-f(“1111”)的ecc(“ecc7”)配成一对。

与实施例1一样,通过将虚拟位(例如,值为“0”)添加至高阶3位来将ecc改变为8位数据,并且将ecc存储在内部存储器14中。与实施例1一样,当固定型故障(固定至0或者1)因在待从i/f转换电路13的wdt转换电路130输出至内部存储器14的写入数据(8位)的八条信号线当中的任何一条或者多条线的故障(断开连接)而发生在相互形成对的数据和ecc中时,在与断开的信号线对应的位的位置处的值变成鱼初始值不同的值(反转值)。因此,当读取数据时,肯定将值改变检测为在ecc检查电路142中的一位错误或者二位或者更多位错误。当固定型故障(固定至0或者1)因在i/f转换电路13的rdt转换电路140从内部存储器14输入的读取数据(8位)的8条信号线当中的任何一条或者多条线的故障(断开连接)而发生时,这也是相同的。

另一方面,下面阐释固定型故障(固定至0或者1)因在待从i/f转换电路13的wdt转换电路130输入到内部存储器14中的地址信号(n位)的n条信号线当中的任何一条或者多条线的故障(断开连接)而发生的情况。

参照图12,与实施例1的图5一样,下面阐释了在固定型1故障(固定至1)发生在待输入到内部存储器14中的地址信号(n位)的a2位中的情况下的操作。假设内部存储器14具有n=3,如图11所示。此处,对通过以下流程执行数据的写入和读取的情况做出阐释。

(1)将数据(“data3”)写入地址adr-3(“0011”),并且将与数据配对的ecc(“ecc3”)写入地址adr-e(“1110”)。将数据(“data5”)写入地址adr-5(“0101”),并且将与数据配对的ecc(“ecc5”)写入地址adr-b(“1011”)。在附图中,它们被表示在括号中。

(2)重新将数据(“data1”)写入地址adr-1(“0001”),并且将与数据配对的ecc(“ecc1”)写入地址adr-a(“1010”)。

(3)此处,固定型1故障发生在与地址的a2位对应的地址信号线中。因此,访问内部存储器14的地址adr-0至adr-3和地址adr-8至adr-b是不可能的。

(4)目的在于读取数据(“data1”)和与数据配对的ecc(“ecc1”),该数据和该ecc在(2)中已经被写入。

(4)’此时,事实上,由于在(3)中已经发生的地址信号线的故障,从内部存储器14的地址adr-5(“0101”),而不是从存储有数据(“data1”)的地址adr-1(“0001”)读取数据(“data5”)。从地址adr-e(“1110”),而不是从存储有ecc(“ecc1”)的地址adr-a(“1010”)读取ecc(“ecc3”)。即,读取在(2)中未被写入的数据的数据(“data5”)和不与数据配对的ecc(“ecc3”)。

(5)结果,包括在rdt转换电路140中的ecc检查电路142肯定将固定型1故障检测为一位错误或者二位错误或者更多位错误。以这种方式,还可以检测在地址信号系统中的故障;因此,从功能安全性的观点来看,实施例2很好。

图12示出了在固定型1故障(固定至1)发生在待输入到内部存储器14中的地址信号的a2位中时的操作。然而,根据实施例2,同样可以检测地址信号线的故障,即使在固定型0故障(固定至0)发生在a2位中时、或者在固定型1故障或者固定型0故障发生在其它地址(具体为a1位和a0位)中时。

至于图11所示的n=3的情况,图13是表格,该表格示出了超过8行的(按照从上面起的顺序编号为“0”至“7”)地址信号的低阶3位a2至a0的值,约8个不同对“data0”与“ecc0”、“data1”与“ecc1”、……、以及“data7”与“ecc7”。在图13中,将由在读取数据时输入到内部存储器14中的地址信号指示的地址表示为“地址(数据)”,并且将由在读取ecc时输入到内部存储器14中的地址信号指示的地址表示为“地址(ecc)”。

该表格从左到右示出了以下7种不同的情况:

(1)没有故障发生在地址的所有位中的情况;

(2)固定型1故障发生在地址的a2位中的情况(这与图12所示的情况对应);

(3)固定型0故障发生在地址的a2位中的情况;

(4)固定型1故障发生在地址的a1位中的情况;

(5)固定型0故障发生在地址的a1位中的情况;

(6)固定型1故障发生在地址的a0位中的情况;以及

(7)固定型0故障发生在地址的a0位中的情况。

按照顺序将在每个位的位置处的三个值(0或者1)设置为a2至a0的值。在其值已经因故障而改变的位的位置处的值下面划线。

图13所示的表格的第二行(编号为1)是示出了同时存储有待在图12的(2)中被写入的数据(“data1”)和与数据配对的ecc(“ecc1”)的地址的行。当故障还未发生在地址的所有位中时,地址具有在最左边分别示出的adr-1的低阶3位(“001”)、adr-e的低阶3位(“110”)。在图13所示的表格中,a2至a0的这些值的对被实线包围。

此处,当固定型1故障发生在a2位中时,在表格的右方立即示出地址,其中,地址(数据)的adr-1受到故障的影响变成不同的adr-5(低阶3位是“101”),并且地址(ecc)的adr-a受到故障的影响变成不同的adr-e(低阶3位是“110”)。在表格中,在a2至a0的这些值的对的故障的影响之后的值被虚线包围,并且,同时,在a2至a0的这些值的对的故障的影响之后的值中的每一个中被实际访问的地址(数据)和地址(ecc)被实线包围并且在表格中用粗线联接。因此,访问数据(“data5”)和ecc(“ecc3”)。即,要理解,数据与ecc的配对已经崩溃,如图12的(4)’所示。

同样,作为其它示例,在表格中的进一步右方示出了固定型1故障发生在a1位中的情况和固定型1故障发生在a0位中的情况,其中,按照与上述方式相同的方式来示出a2至a0的值的对。数据与ecc的配对显然已经崩溃。

作为其它示例,在图13所示的表格的第7行(编号为6)中涉及同时存储有数据(“data6”)和与数据配对的ecc(“ecc6”)的地址,同样,示出了固定型0故障发生在a2位中的情况、固定型0故障发生在a1位中的情况、和固定型0故障发生在a0位中的情况。在任何情况下,数据与ecc的配对崩溃,如同预期的一样。通过该表格,显而易见的是,当固定型故障发生在地址的位中的任何一个中时,肯定可以检测到故障。

此外,在实施例2中,即使当在固定型故障(固定至0或者1)因待从i/f转换电路13的adr转换电路120输入到内部存储器14中的地址信号(n位)的n条信号线中的任何一条的故障(断开连接)而发生之后,执行数据的写入和读取时,也可以检测故障,如下面将阐释的。

参照图14,下面阐释了在固定型1故障(固定至1)发生在待输入到内部存储器14中的地址信号(n位)的a2位中之后执行数据的写入和读取的情况下的操作。假设内部存储器14具有n=3,如图11所示。此处,对通过以下流程执行数据的写入和读取的情况做出阐释。

(1)将数据(“data3”)写入地址adr-3(“0011”),并且将与数据配对的ecc(“ecc3”)写入地址adr-e(“1110”)。将数据(“data5”)写入地址adr-5(“0101”),并且将与数据配对的ecc(“ecc5”)写入地址adr-b(“1011”)。将数据(“data1”)写入地址adr-1(“0001”),并且将与数据配对的ecc(“ecc1”)写入地址adr-a(“1010”)。在附图中,它们被表示在括号中。

(2)此处,固定型1故障发生在与地址的a2位对应的地址信号线中。因此,访问内部存储器14的地址adr-0至adr-3和地址adr-8至adr-b是不可能的。

(3)目的在于重新将数据(“data2”)写入地址adr-2(“0010”),并且将与数据配对的ecc(“ecc2”)写入地址adr-c(“1100”)。此时,事实上,由于在(2)中已经发生的地址信号线的故障,将数据(“data2”)写入地址adr-6(“0110”),而不是写入内部存储器14的地址adr-2(“0010”)。另一方面,将ecc(“ecc2”)正常写入地址adr-c(“1100”)。

(4)接下来,目的在于将数据(“data6”)写入地址adr-6(“0110”),并且将与数据配对的ecc(“ecc6”)写入地址adr-d(“1101”)。此时,在不受在(2)中已经发生的地址信号线的故障影响的情况下,将数据(“data6”)和ecc(“ecc6”)都写入正常地址。

(4)’此时,通过数据(“data6”)来重写在(3)中已经写入地址adr-6(“0110”)的数据(“data2”)。

(5)目的在于读取数据(“data2”)和与数据配对的ecc(“ecc2”),该数据和该ecc在(3)中已经被写入。

(5)’此时,事实上,从内部存储器14的地址adr-6(“0110”),而不是从已经存储有数据(“data2”)的地址adr-2(“0010”)读取数据(“data6”)。这是因为在该地址adr-6(“0110”)处,在(3)中一旦写入数据(“data2”),就可以在(4)’中重写数据(“data6”)。从存储有ecc(“ecc2”)的地址adr-c(“1100”)正常读取ecc(“ecc2”)。因此,读取数据(“data6”)和与数据的配对崩溃的ecc(“ecc2”)。

(6)结果,包括在rdt转换电路140中的ecc检查电路142肯定将固定型1故障检测为一位错误或者二位或者多个位错误。

以这种方式,也可以检测在地址信号系统中的故障;因此,从功能安全性的观点来看,实施例2很好。

参照图15,对存储ecc的区域执行“adr反转”的实施例1的情况下,对在按照与图14相同的方式来执行数据的写入和读取时的操作做出阐释。

(1)将数据(“data5”)写入地址adr-5(“0101”),并且将与数据配对的ecc(“ecc5”)写入地址adr-a(“1010”)。将数据(“data1”)写入地址adr-1(“0001”),并且将与数据配对的ecc(“ecc1”)写入地址adr-e(“1110”)。在附图中,它们被表示在括号中。

(2)此处,固定型1故障发生在与地址的a2位对应的地址信号线中。因此,访问内部存储器14的地址adr-0至adr-3和地址adr-8至adr-b是不可能的。

(3)目的在于重新将数据(“data2”)写入地址adr-2(“0010”),并且将与数据配对的ecc(“ecc2”)写入地址adr-d(“1101”)。此时,事实上,由于在(2)中已经发生的地址信号线的故障,将数据(“data2”)写入地址adr-6(“0110”),而不是写入内部存储器14的地址adr-2(“0010”)。另一方面,将ecc(“ecc2”)正常写入地址adr-d(“1101”)。

(4)接下来,目的在于将数据(“data6”)写入地址adr-6(“0110”),并且将与数据配对的ecc(“ecc6”)写入地址adr-9(“1001”)。此时,事实上,由于在(2)中已经发生的地址信号线的故障,将ecc(“ecc6”)写入地址adr-d(“1101”),而不是写入内部存储器14的地址adr-9(“1001”)。另一方面,将数据(“data6”)正常写入地址adr-6(“0110”)。

(4)’此时,通过数据(“data6”)来重写在(3)中已经写入地址adr-6(“0110”)的数据(“data2”)。通过ecc(“ecc6”)来重写写入地址adr-d(“1101”)的ecc(“ecc2”)。

(5)目的在于读取数据(“data2”)和与数据配对的ecc(“ecc2”),该数据和该ecc在(3)中已经被写入。

(5)’此时,事实上,从内部存储器14的地址adr-6(“0110”),而不是从已经存储有数据(“data2”)的地址adr-2(“0010”)读取数据(“data6”)。这是因为在该地址adr-6(“0110”)处,在(3)中一旦写入数据(“data2”),就可以在(4)’中重写数据(“data6”)。从已经存储有ecc(“ecc2”)的地址adr-d(“1101”)读取ecc(“ecc6”)。这是因为在该地址adr-d(“1101”)处,在(3)中一旦写入ecc(“ecc2”),就可以在(4)’中重写ecc(“ecc6”)。即,读取在(3)中未被写入的数据的数据(“data6”)和不与数据配对的ecc(“ecc6”)。

(6)结果,包括在rdt转换电路140中的ecc检查电路142认为数据(“data6”)与ecc(“ecc6”)形成正常对。因此,只要位错误还未发生在数据中,将故障检测为一位错误或者二位或者更多位错误就是不可能的。

图14示出了在固定型1故障(固定至1)发生在待输入到内部存储器14中的地址信号的a2位中时的操作。然而,根据实施例2,同样可以检测地址信号线的故障,即使在固定型0故障(固定至0)发生在a2位中时、或者在固定型1故障或者固定型0故障发生在其它地址(具体为a1位和a0位)中时。

至于图11所示的n=3的情况,图16是表格,该表格示出了超过8行的(按照从上起的顺序编号为“0”至“7”)地址信号的低阶3位a2至a0的值,约8个不同对“data0”与“ecc0”、“data1”与“ecc1”、……、以及“data7”与“ecc7”。在图16中,将由在读取数据时输入到内部存储器14中的地址信号指示的地址表示为“地址(数据)”,并且将由在读取ecc时输入到内部存储器14中的地址信号指示的地址表示为“地址(ecc)”。与图13一样,该表格从左到右示出了发生了7种不同的故障(1)至(7)的情况。固定型1故障已经发生在存在于该表格的第三行(编号为2)中的左侧的第二故障示例中的地址的a2位中的情况与图14所示的情况对应。

按照顺序将在每个位的位置处的三个值(0或者1)设置为a2至a0的值。在其值已经因故障而改变的位的位置处的值下面划线。

图16所示的表格的第三行(编号为2)是示出了同时存储有待在图14的(3)中被写入的数据(“data2”)和与数据配对的ecc(“ecc2”)的地址的行。当故障还未发生在地址的所有位中时,地址具有在最左边分别示出的adr-2的低阶3位(“010”)、和adr-c的低阶3位(“100”)。在图16所示的表格中,a2至a0的这些值的对被虚线包围。

此处,当固定型1故障发生在a2位中时,在表格的右方立即示出地址,其中,地址(数据)的adr-2受到故障的影响变成不同的adr-6(低阶3位是“110”),并且在不受故障影响的情况下,地址(ecc)的adr-c(低阶3位是“100”)保持为adr-c。在表格中,在a2至a0的这些值的对的故障的影响之后的值被虚线包围,并且,同时,在a2至a0的这些值的对的故障的影响之后的值中的每一个中被实际访问的地址(数据)和地址(ecc)被实线包围并且在表格中用粗线联接。因此,访问数据(“data6”)和ecc(“ecc2”)。即,要理解,数据与ecc的配对已经崩溃,如图14的(5)’所示。

除了在第三行中的受到a2至a0的值的对的故障的影响之后的值之外,在表格中的第1行、第5行和第7行中的受到a2至a0的值的对的故障的影响之后的值也被虚线包围。然而,在这4行中示出的a2至a0的值中的两个的对是四类地址的组合:adr-6(低阶3位是“110”)或者adr-4(低阶3位是“100”)的地址(数据)、和adr-c(低阶3位是“100”)或者adr-d(低阶3位是“101”)的地址(ecc)。因此,如图14的(4)’所示,即使当将数据和ecc的对写入与初始对不同的地址(数据)和地址(ecc)时,也可以重写初始对的数据和ecc中的一个;然而,不会同时重写数据和ecc。

针对相同的第三行的右方,作为另一示例,在固定型1故障发生在a1位中的情况和固定型1故障发生在a0位中的情况下,按照与上述方式相同的方式来示出a2至a0的值的对。在两种情况下,数据与ecc的配对显然都已经崩溃。显然也不会发生同时重写数据和ecc。

作为其它示例,在图16所示的表格的第6行(编号为5)中,涉及存储有数据(“data5”)和与数据配对的ecc(“ecc5”)中的一个的地址,同样,示出了固定型0故障发生在a2位中的情况、固定型0故障发生在a1位中的情况、和固定型0故障发生在a0位中的情况。在情况中的任何一种情况下,数据与ecc的配对已经崩溃。不会发生同时重写初始对的数据和ecc。通过该表格,显而易见的是,当固定型故障发生在地址的位中的任何一个中时,肯定可以检测到故障。

关于对存储ecc的区域执行“adr反转”的实施例1的情况,与图16一样,图17是表格,该表格示出了a2至a0的值,作为地址(数据)和地址(ecc)的低阶3位。固定型1故障已经发生存在于该表的第三行(编号为2)中的左方的第二故障示例中的地址的a2位中的情况与图15所示的情况对应。

在目前的情况下,通过图17所示的表格,当在固定型故障发生在地址的任何位中之后执行数据的写入和读取时,地址(数据)和地址(ecc)的对变得与初始对不同,但是与地址(数据)和地址(ecc)的另一不同对一致(即,地址变得退化)。因此,在读取数据时或许不能检测地址信号线的故障。

在这种情况下,显而易见的是,可以忽略地址信号线的故障,因为地址(数据)和地址(ecc)的两类对会使彼此退化。然而,当计算在退化之前的地址(数据)和地址(ecc)的两类对中的每一类的a2至a0的3位地址奇偶性时,一类的值变成“0”并且另一类的值变成“1”。因此,可以通过利用这一事实来区分两类。即,可以设计为使得即使在这种情况下,也肯定可以检测到故障。

例如,由连续的(000或111)三个地址奇偶性值组成的3位可以用作被附加到5位ecc的虚拟高阶3位。即,在地址(数据)的a2至a0的3位地址中,当包括奇数“1”时,生成“111”作为虚拟位,并且当包括偶数“1”时,生成“000”作为虚拟位。当读取ecc时,ecc检查电路142确定3位中的每一个的大多数值中的频遇值是地址奇偶性的值。然后,取决于确定的值是否是“0”或者“1”,ecc检查电路142对数据和ecc的对在右方的事实和因地址信号线的故障来同时重写在初始对中的数据和ecc的事实进行区分。以这种方式,ecc检查电路142检测地址信号线的故障。

更具体地,当采用这种故障检测方法时,也在ecc生成电路131和ecc检查电路142中输入从总线主控器输入的地址信号。然后,ecc生成电路131基于由输入的地址信号指示的地址来生成虚拟位。ecc检查电路142基于由输入的地址信号指示的地址来生成地址奇偶性,并且确定生成的地址奇偶性是否与从被附加加到从内部存储器14输入的ecc的虚拟位确定的地址奇偶性一致。然后,当进行比较的地址奇偶性不一致时,ecc检查电路142确定地址信号线发生故障,并且输出通知错误的错误通知信号(例如,值为“1”)。

此处,ecc生成电路131可以将地址奇偶性的值设置为一位或者二位,但不将其设置为虚拟位的所有3位。然后,ecc检查电路142可以根据一位或者二位的值来确定地址奇偶性的值。在这种情况下,然而,虽然可以校正数据,但是当一位错误发生并且改变了地址奇偶性的值时,发出通知无法校正的错误发生的错误通知信号(例如,值为“1”)。因此,如上所述,优选将地址奇偶性的值设置为虚拟位的所有3位。

对从总线主控器输入的n位地址信号的所有位被旋转(移位)的示例做出上述阐释。本发明并不限于该示例。例如,如果n位地址信号的规定的数量的位(任何数量的n位至1位)被旋转,那么获得某种程度的效果。与上述情况一样,可以将该规定的数量的位设置为高阶位、低阶位、连续位、或者非连续位。然而,如上所述,优选通过使n位地址信号的所有位旋转,可以检测多个故障。

如上所述,在实施例2中,adr转换电路120通过重排除了第一地址(与(n+1)位地址对应)的至少一个位的值之外的位(与低阶n位对应)中的规定的数量的位,来生成地址作为第二地址。在上述示例中,adr转换电路120通过重排除了第一地址的至少一个位的值之外的所有位(n个位),来生成地址作为第二地址。更具体地,adr转换电路120通过使除了第一地址的至少一个位的值之外的所有位(n个位)在高阶方向上移位规定数量的位(在上述示例中为1个位),来生成地址作为第二地址。

因此,当在已经将数据和由数据生成的ecc的对写入在内部存储器14之后固定型故障(固定至0或者1)发生在通向内部存储器14的地址信号线中的任何一条中时,可以在读取写入数据时检测地址信号线的故障。

这对两条或者多条地址信号线的故障同样有效。还可以检测影响地址的值的故障,这发生在adr转换电路120中以生成和输出待输入到内部存储器14中的地址信号,并且发生在内部存储器14中的地址信号处理电路中。

此外,根据实施例2,即使当在固定型故障(固定至0或者1)发生在地址信号线中的任何一条中之后执行数据的写入和读取时,由于重写数据和ecc两者,在没有忽略地址信号线的故障的情况下,也肯定可以检测到故障。

<实施例3>

接下来,参照附图阐释实施例3的配置和操作。根据实施例3的cpu系统1的配置和操作与图1所示的根据实施例1的cpu系统1的配置和操作基本上相同。因此,省略了对其的阐释。根据实施例3的i/f转换电路13的配置和操作与图9所示的根据实施例2的i/f转换电路13的配置和操作基本上相同。因此,省略了对其的阐释。然而,在实施例3中,包括在i/f转换电路13中的adr转换电路120中的adr旋转电路123与根据实施例2的adr旋转电路123不同。

接下来,参照图18,阐释根据实施例3的adr旋转电路123的配置。此处,阐释了具有n个位的地址信号的示例。在下文中,为了对在实施例2和实施例3中的地址的旋转进行区分,在实施例3中将地址的位的旋转表示为“adr旋转2”,并且在实施例2中将地址的位的旋转表示为“adr旋转”。

根据实施例2的adr旋转电路123使由地址信号指示的地址向左旋转(至高阶位方向)了一个位,以重排n位地址信号线的每个位的位置。与此相反,在实施例3中,使地址旋转至相反方向。即,根据实施例3的adr旋转电路123使地址向右旋转(至低阶位方向)了一个位。

如图18所示,这是通过使n位地址信号线在输入阶段和在输出阶段在adr旋转电路123中的每个位位置移位和耦合来实现的。即,将输入到adr旋转电路123中的n位地址信号的每个位a0、a1、a2、……、a(n-1)设置为待从adr旋转电路123输出的n位地址信号的每个位a’(n-1)、a’0、a’1、……、a’(n-2)。同样,在该adr旋转电路123中,n位地址信号线的每个位的信号由n个缓冲器1230中的每一个接收,并且使连接目的地的位位置移位。

接下来,参照图19,阐释根据实施例3的内部存储器14的存储器映射的配置。与图11所示的根据实施例2的内部存储器14一样,此处,对内部存储器14的数据宽度是8个位、内部存储器14的地址宽度是(n+1)个位、内部存储器14的数据量是(8×2(n+1))个位,并且n=3的示例做出阐释。

在实施例3中,针对存储有数据的地址的低阶n位(图19中的a2至a0)的值,存储有与数据配对的ecc的地址的低阶n位的值是通过图18所示的adr旋转电路123(a2至a0的值被标记为图19中的“adr旋转2”的部分)的操作来重排每个位置而获得的值。

即,如图19所示,地址adr-0(“0000”)的数据(“data0”)与地址adr-8(“1000”)的ecc(“ecc0”)配成一对。地址adr-1(“0001”)的数据(“data1”)与地址adr-c(“1100”)的ecc(“ecc1”)配成一对。地址adr-2(“0010”)的数据(“data2”)与地址adr-9(“1001”)的ecc(“ecc2”)配成一对。地址adr-3(“0011”)的数据(“data3”)与地址adr-d(“1101”)的ecc(“ecc3”)配成一对。地址adr-4(“0100”)的数据(“data4”)与地址adr-a(“1010”)的ecc(“ecc4”)配成一对。地址adr-5(“0101”)的数据(“data5”)与地址adr-e(“1110”)的ecc(“ecc5”)配成一对。地址adr-6(“0110”)的数据(“data6”)与地址adr-b(“1011”)的ecc(“ecc6”)配成一对。地址adr-7(“0111”)的数据(“data7”)与地址adr-f(“1111”)的ecc(“ecc7”)配成一对。

与实施例1和实施例2一样,通过将虚拟位(例如,值为“0”)添加至高阶3位来将ecc改变为8位数据,并且将ecc存储在内部存储器14中。与实施例1和实施例2一样,当读取数据时,肯定可以检测到因在写入数据(8位)的8条信号线当中的任何一条或者多条线的故障(断开连接)而产生的值改变,作为在ecc检查电路142中的一位错误或者二位错误。上述情况也适用于读取数据(8位)的8条信号线的故障(断开连接)。

至于图19所示的n=3的情况,图20是表格,该表格示出了超过8行的(按照从上面起的顺序编号为“0”至“7”)地址信号的低阶3位a2至a0的值,约8个不同对“data0”与“ecc0”、“data1”与“ecc1”、……、以及“data7”与“ecc7”。在图20中,将由在读取数据时输入到内部存储器14中的地址信号指示的地址表示为“地址(数据)”,并且将由在读取ecc时输入到内部存储器14中的地址信号指示的地址表示为“地址(ecc)”。

该表格从左到右示出了以下7种不同的情况:

(1)没有故障发生在地址的所有位中的情况;

(2)固定型1故障发生在地址的a2位中的情况;

(3)固定型0故障发生在地址的a2位中的情况;

(4)固定型1故障发生在地址的a1位中的情况;

(5)固定型0故障发生在地址的a1位中的情况;

(6)固定型1故障发生在地址的a0位中的情况;以及

(7)固定型0故障发生在地址的a0位中的情况。

按照顺序将在每个位的位置处的三个值(0或者1)设置为a2至a0的值。在其值已经因故障而改变的位的位置处的值下面划线。

图20所示的表格的第二行(编号为1)是示出了同时存储有数据(“data1”)和与数据配对的ecc(“ecc1”)的地址的行。当故障还未发生在地址的所有位中时,地址具有在最左边分别示出的adr-1的低阶3位(“001”)、和adr-c的低阶3位(“100”)。在图20所示的表格中,a2至a0的这些值的对被实线包围。

此处,当固定型1故障发生在a2位中时,在表格的右方立即示出地址,其中,地址(数据)的adr-1受到故障的影响变成不同的adr-5(低阶3位是“101”),并且地址(ecc)的adr-c(低阶3位是“100”)不受故障影响。在表格中,在a2至a0的这些值的对的故障的影响之后的值被虚线包围,并且,同时,在a2至a0的这些值的对的故障的影响之后的值中的每一个中被实际访问的地址(数据)和地址(ecc)被实线包围并且在表格中用粗线联接。因此,访问数据(“data5”)和ecc(“ecc1”)。即,数据与ecc的配对显然已经崩溃。

同样,作为其它示例,在表格中的进一步右方示出了固定型1故障发生在a1位中的情况和固定型1故障发生在a0位中的情况,其中,按照与上述方式相同的方式来示出a2至a0的值的对。显然,在两种情况下,数据与ecc的配对都已经崩溃。

作为其它示例,在图20所示的表格的第7行(编号为6)中涉及同时存储有数据(“data6”)和与数据配对的ecc(“ecc6”)的地址,同样,示出了固定型0故障发生在a2位中的情况、固定型0故障发生在a1位中的情况、和固定型0故障发生在a0位中的情况。在情况中的任何一种情况下,数据与ecc的配对已经崩溃。通过该表格,显而易见的是,当固定型故障发生在地址的位中的任何一个中时,肯定可以检测到故障。

至于图19所示的n=3的情况,图21是表格,该表格示出了超过8行的(按照从上面起的顺序编号为“0”至“7”)地址信号的低阶3位a2至a0的值,约8个不同对“data0”与“ecc0”、“data1”与“ecc1”、……、以及“data7”与“ecc7”。在图21中,将由在读取数据时输入到内部存储器14中的地址信号指示的地址表示为“地址(数据)”,并且将由在读取ecc时输入到内部存储器14中的地址信号指示的地址表示为“地址(ecc)”。与图20一样,该表格从左到右示出了发生了7种不同的故障(1)至(7)的情况。

图21所示的表格的第三行(编号为2)是示出了同时存储有数据(“data2”)和与数据配对的ecc(“ecc2”)的地址的行。当故障还未发生在地址的所有位中时,地址是在最左边分别示出的adr-2的低阶3位(“010”)、和adr-9的低阶3位(“001”)。在图21所示的表格中,a2至a0的这些值的对被虚线包围。

此处,当固定型1故障发生在a2位中时,在表格的右方立即示出地址,其中,地址(数据)的adr-2受到故障的影响变成不同的adr-6(低阶3位是“110”),并且地址(ecc)的adr-9(低阶3位是“001”)受到故障的影响变成不同的adr-d(低阶3位是“101”)。在表格中,在a2至a0的这些值的对的故障的影响之后的值被虚线包围,并且,同时,在a2至a0的这些值的对的故障的影响之后的值中的每一个中被实际访问的地址(数据)和地址(ecc)被实线包围并且在表格中用粗线联接。因此,访问数据(“data6”)和ecc(“ecc3”)。即,显然,数据与ecc的配对已经崩溃。

除了在第三行中的受到a2至a0的值的对的故障的影响之后的值之外,在表格中的第5行、第7行和第8行中的受到a2至a0的值的对的故障的影响之后的值也被虚线包围。然而,在这4行中示出的a2至a0的值中的两个的对是四类地址的组合:adr-6(低阶3位是“110”)或者adr-7(低阶3位是“111”)的地址(数据)、和adr-d(低阶3位是“101”)或者adr-f(低阶3位是“111”)的地址(ecc)。因此,即使当将数据和ecc的对写入与初始对不同的地址(数据)和地址(ecc)时,也可以重写初始对的数据和ecc中的一个;然而,不会同时重写数据和ecc。

针对相同的第三行的右方,作为其它示例,示出了固定型1故障发生在a1位中的情况和固定型1故障发生在a0位中的情况,其中,按照与上述方式相同的方式来示出a2至a0的值的两个的对。显然,在两种情况下,数据与ecc的配对都已经崩溃。同样,显然,不会发生同时重写数据和ecc。

作为其它示例,在图21所示的表格的第6行(编号为5)中,涉及同时存储有数据(“data5”)和与数据配对的ecc(“ecc5”)的地址,同样,示出了固定型0故障发生在a2位中的情况、固定型0故障发生在a1位中的情况、和固定型0故障发生在a0位中的情况。在情况中的任何一种情况下,数据与ecc的配对已经崩溃。不会发生同时重写初始对的数据和ecc。通过该表格,显而易见的是,当固定型故障发生在地址的位中的任何一个中时,肯定可以检测到故障。

同样,在实施例3中,可以使n位地址信号的规定的数量的位(n位至1位)旋转,如实施例2所阐释的。

如上所述,在实施例3中,adr转换电路120通过重排除了第一地址(与(n+1)位地址对应)的至少一个位的值之外的位(与低阶n位对应)中的规定的数量的位,来生成地址作为第二地址。在上述示例中,adr转换电路120通过重排除了第一地址的至少一个位的值之外的所有位(n个位),来生成地址作为第二地址。更具体地,adr转换电路120通过使除了第一地址的至少一个位的值之外的所有位(n个位)在高阶方向上移位规定数量的位(在上述示例中为1个位),来生成地址作为第二地址。

因此,获得与实施例2相同的效果。即,当在已经将数据和由数据生成的ecc的对写入在内部存储器14之后固定型故障(固定至0或者1)发生在通向内部存储器14的地址信号线中的任何一条中时,可以在读取写入数据时检测地址信号线的故障。

此外,根据实施例3,即使当在固定型故障(固定至0或者1)发生在地址信号线中的任何一条中之后执行数据的写入和读取时,由于重写数据和ecc两者,在没有忽略地址信号线的故障的情况下,也肯定可以检测到故障。

<实施例4>

接下来,参照附图阐释实施例4的配置和操作。根据实施例4的cpu系统1的配置和操作与图1所示的根据实施例1的cpu系统1的配置和操作基本上相同。因此,省略了对其的阐释。然而,在实施例4中,包括在cpu系统1中的i/f转换电路13的一部分的配置和操作与根据实施例1的i/f转换电路13的配置和操作不同。

接下来,参照图22,阐释根据实施例4的i/f转换电路13的配置。与根据实施例1的i/f转换电路13相比较,根据实施例4的i/f转换电路13包括adr位顺序反转电路124来代替在adr转换电路120中的adr反转电路121。根据实施例4的i/f控制电路110、wdt转换电路130、和rdt转换电路140的配置和操作与根据实施例1的对应部分的配置和操作相同。

将从总线主控器输出的地址信号输入到adr位顺序反转电路124中。adr位顺序反转电路124使由输入的地址信号指示的地址的所有位的布置顺序反转,并且将反转地址输出至选择器122。因此,在实施例4中,选择器122选择从总线主控器输出的地址信号和从adr位顺序反转电路124输出的地址信号中的一个,并且将选择的地址信号输出至内部存储器14。

参照图23,下面阐释根据实施例4的包括在adr转换电路120中的adr位顺序反转电路124的配置。此处,阐释了具有n个位的地址信号的示例。

在实施例2中,为了重排n位地址信号的位,使地址向左旋转(至高阶位方向)了一个位,并且在实施例3中,使地址向右旋转(至低阶位方向)了一个位。与此相反,在实施例4中,重排地址信号的每个位在倒置方向上的位置,以使位的顺序反转。即,adr位顺序反转电路124使地址信号的n个位的布置顺序反转。

如图23所示,这是通过使n位地址信号线在输入阶段和在输出阶段在adr位顺序反转电路124中的每个位位置移位和耦合来实现的。即,将输入到adr位顺序反转电路124中的n位地址信号的每个位a0、a1、a2、……、a(n-2)、a(n-1)设置为待从adr位顺序反转电路124输出的n位地址信号的每个a’(n-1)、a’(n-2)、……、a’1、a’2、和a’0。在该adr位顺序反转电路124中,n位地址信号线的每个位的信号由n个缓冲器1240中的每一个接收,并且使连接目的地的位位置移位。

然而,必须重排n位地址的所有位的位置。因此,在实施例4中,假设n是偶数。例如,在n=4的情况下,adr位顺序反转电路124的配置如图24所示。

同样,在实施例4中,如实施例2和实施例3所阐释的,也优选重排n位地址信号的规定的数量的位(n个位至1个位中的一个)。

如上所述,在实施例4中,adr转换电路120通过重排除了第一地址(与(n+1)位地址对应)的至少一个位的值之外的位(与低阶n位对应)中的规定的数量的位,来生成地址作为第二地址。更具体地,adr转换电路120通过重排除了第一地址的至少一个位的值之外的所有位(n个位),来生成地址作为第二地址。在上述示例中,adr转换电路120通过使除了第一地址的至少一个位的值之外的所有位(n个位)的布置顺序反转,来生成地址作为第二地址。

因此,显然,获得与实施例2和实施例3完全相同的效果。因此,省略了对其的详细阐释。

在上面阐释的实施例2、实施例3、和实施例4中,共同点在于,与数据配对的ecc的地址由地址重排电路(诸如adr旋转电路123或adr位顺序反转电路124)转换。

存在重排n位地址的所有位的位置的地址重排方法的多种模式。此处,假设模式数量是sn(在sn中的“n”是输入到上述i/f转换电路13中的地址信号的位的数量)。在n=2的情况下,仅仅存在图25所示的一个模式(s2=1)。在n=3的情况下,存在图26所示的两个模式(s3=2)。在图26上方示出的第一模式与实施例2所示的“adr旋转”对应。图26所示的第二模式与实施例3所示的“adr旋转2”对应。

在n=4的情况下,存在图27所示的9个模式(s4=9)。在左手边的一列的上方的第一模式与实施例2所示的“adr旋转”对应,第二模式与实施例3所示的“adr旋转2”对应,并且第三模式与实施例4中的“adr位顺序反转”对应。此处,在图26的最下方的行中示出的三个模式是每两个位被重排的地址位的两个集合。因此,如果故障同时发生在包括在两个集合中的一个中的2位地址信号线中,那么存在无法执行故障检测的约束。

一般而言,针对n位地址(n≥3)的地址重排方法的数量由图28所示的公式1给出。

即,如图27所示,由adr转换电路120执行的地址的位的位置的重排并不限于在实施例2至4中阐释的“adr旋转”、“adr旋转2”、和“adr位顺序反转”。在以下的实施例5中,阐释通过图27的最下行的中间的“adr旋转3”的地址重排方法。

<实施例5>

此外,参照附图阐释实施例5的配置和操作。根据实施例5的cpu系统1的配置和操作与图1所示的根据实施例1的cpu系统1的配置和操作基本上相同。因此,省略了对其的阐释。根据实施例5的i/f转换电路13的配置和操作与图9所示的根据实施例2的i/f转换电路13的配置和操作基本上相同。因此,省略了对其的阐释。然而,在实施例5中,包括在i/f转换电路13中的adr转换电路120中的adr旋转电路123的配置和操作与根据实施例2和实施例3的adr旋转电路123的配置和操作不同。

接下来,参照图29,阐释根据实施例5的adr旋转电路123的配置。此处,阐释了具有n个位的地址信号的示例。在下文中,将根据实施例5的地址的旋转表示为“adr旋转3”。

根据实施例2的adr旋转电路123使由地址信号指示的地址向左旋转(至高阶位方向)了一个位,以重排n位地址信号线的每个位的位置。在实施例3中,使地址向右旋转(至低阶位方向)了一个位。然而,在实施例5中,使地址向右旋转(至高阶位方向)了两个位。

如图29所示,这是通过使n位地址信号线在输入阶段和在输出阶段在adr旋转电路123中的每个位位置移位和耦合来实现的。即,将输入到adr旋转电路123中的n位地址信号的每个位a0、a1、a2、……、a(n-1)设置为待从adr旋转电路123输出的n位地址信号的每个位a’(n-2)、a’(n-1)、a’0、a’1、……、a’(n-3)。同样,在该adr旋转电路123中,n位地址信号线的每个位的信号由n个缓冲器1230中的每一个接收,并且使连接目的地的位位置移位。

此处,在n=4的情况下,在图30中示出配置。如通过图30显而易见的,在n=4的情况下,这等同于使地址向左旋转(至低阶位方向)了两个位。这恰好与在图27的最下方的行的中间的“adr旋转3”所示的对应。

接下来,参照图31,阐释根据实施例5的内部存储器14的存储器映射的配置。此处,对内部存储器14的数据宽度是8个位、内部存储器14的地址宽度是(n+1)个位、内部存储器14的数据量是(8×2(n+1))个位,并且n=4的示例做出阐释。

内部存储器14将图31中的左边一半用作存储初始数据的区域,并且将右边一半用作存储与初始数据配对的ecc的区域。即,将在内部存储器14中的区域区分为在将地址的最高阶位的值(图31中的a4)设置为“0”时存储有数据的区域,并且区分为在将地址的最高阶位的值设置为“1”时存储有ecc的区域。

在实施例5中,针对存储有数据的地址的低阶n位(图31中的a3至a0)的值,存储有与数据配对的ecc的地址的低阶n位的值被改变为一种布置,在该布置中,通过图30所示的adr旋转电路123(在图31中,a3至a0的值被标记为“adr旋转3”的部分,即在右边一半中示为a4=1的区域)的操作来重排每个位。

即,如图31所示,地址adr-00(“00000”)的数据(“data0”)与地址adr-10(“10000”)的ecc(“ecc0”)配成一对。地址adr-01(“00001”)的数据(“data1”)与地址adr-14(“10100”)的ecc(“ecc1”)配成一对。地址adr-02(“00010”)的数据(“data2”)与地址adr-18(“11000”)的ecc(“ecc2”)配成一对。地址adr-03(“00011”)的数据(“data3”)与地址adr-1c(“11100”)的ecc(“ecc3”)配成一对。地址adr-04(“00100”)的数据(“data4”)与地址adr-11(“10001”)的ecc(“ecc4”)配成一对。地址adr-05(“00101”)的数据(“data5”)与地址adr-15(“10101”)的ecc(“ecc5”)配成一对。地址adr-06(“00110”)的数据(“data6”)与地址adr-19(“11001”)的ecc(“ecc6”)配成一对。地址adr-07(“00111”)的数据(“data7”)与地址adr-1d(“11101”)的ecc(“ecc7”)配成一对。可以按照与图31相似的方式来理解在其它地址的数据(“data8”)至数据(“dataf”)中的每一个和其它地址的ecc(“ecc8”)至ecc(“eccf”)中的每一个中进行配对的对应关系。

在实施例2和实施例3中,假设n=3,如图11和图19所示,对内部存储器14包括存储数据和对应ecc中的每一个的8个地址(地址的低阶3位a2至a0的组合)的示例做出阐释。与此相反,在实施例5中,假设n=4,图31示出了内部存储器14包括存储数据和对应ecc中的每一个的16个地址(两倍之多)的示例。

如实施例2和实施例3所阐释的,同样,在实施例5中,也优选使n位地址信号的规定的数量的位(n个位至1个位中的一个)旋转。

如上所述,在实施例5中,adr转换电路120通过重排除了第一地址(与(n+1)位地址对应)的至少一个位的值之外的位(与低阶n位对应)中的规定的数量的位,来生成地址作为第二地址。在上述示例中,adr转换电路120通过重排除了第一地址的至少一个位的值之外的所有位(n个位),来生成地址作为第二地址。更具体地,adr转换电路120通过使除了第一地址的至少一个位的值之外的所有位(n个位)在高阶方向上移位规定数量的位(在上述示例中为2个位),来生成地址作为第二地址。

因此,显然,获得与实施例2至实施例4完全相同的效果。因此,省略了对其的详细阐释。

<实施例6>

接下来,参照附图阐释实施例6的配置和操作。根据实施例6的cpu系统1的配置和操作与图1所示的根据实施例1的cpu系统1的配置和操作基本上相同。因此,省略了对其的阐释。然而,在实施例6中,包括在cpu系统1中的i/f转换电路13的一部分的配置和操作与根据实施例1的i/f转换电路13的配置和操作不同。

接下来,参照图32,阐释根据实施例6的i/f转换电路13的配置。与根据实施例1的i/f转换电路13相比较,根据实施例6的i/f转换电路13包括adr移位&偏移设置电路125来代替在adr转换电路120中的adr反转电路121。根据实施例6的i/f控制电路110、wdt转换电路130、和rdt转换电路140的配置和操作与根据实施例1的对应部分的配置和操作相同。

将从总线主控器输出的地址信号和2位偏移信号输入到adr移位&偏移设置电路125中。adr移位&偏移设置电路125使输入的地址信号的规定的多个位移位,将其它位修改为由偏移信号指示的偏移值,并且将修改后的地址信号输出至选择器122。因此,在实施例6中,选择器122选择从总线主控器输出的地址信号和从adr移位&偏移设置电路125输出的地址信号中的一个,并且将选择的地址信号输出至内部存储器14。

接下来,参照图33,阐释根据实施例6的包括在adr转换电路120中的adr移位&偏移设置电路125的配置。此处,对假设地址信号为n位并且偏移信号为m位(m=2)的示例做出阐释。

如图33所示,根据实施例6的adr移位&偏移设置电路125与图29所示的根据实施例5的adr旋转电路123的不同在于,由偏移信号指示的2个位用于高阶2位,代替使用以另外的方式被移位到高阶2位的低阶2位(a1和a0)。

即,adr移位&偏移设置电路125包括偏移设置寄存器1251。将2位偏移信号取回到偏移设置寄存器1251,作为偏移值。将存储在偏移设置寄存器1251中的2位偏移值中的每一个从adr移位&偏移设置电路125输出,作为n位地址信号的高阶2位。

因此,分别将由输入到adr移位&偏移设置电路125中的n位地址信号指示的地址的高阶(n-m)位的a2、……、a(n-1)设置为待从adr移位&偏移设置电路125输出的n位地址信号的低阶(n-m)位的a’0、a’1、……、a’(n-3)。分别将由输入到adr移位&偏移设置电路125中的偏移信号指示的偏移值的b(n-2)和b(n-1)设置为待从adr移位&偏移设置电路125输出的n位地址信号的剩余的高阶m位的a’(n-2)和a’(n-1)。

同样,在adr移位&偏移设置电路125中,来自a2至a(n-1)的(n-m)位地址信号线的每个位的信号由(n-m)个缓冲器1250中的每一个接收,并且使连接目的地的位位置移位。

此处,在n=4的情况下,adr移位&偏移设置电路125如图34所示的一样配置。即,分别将输入到adr移位&偏移设置电路125中的地址信号的高阶2位(a2和a3)设置为待从adr移位&偏移设置电路125输出的地址信号的低阶2位(a’0和a’1)。分别将输入到adr移位&偏移设置电路125中的偏移信号的2个位(b2和b3)设置为待从adr移位&偏移设置电路125输出的地址信号的高阶2位(a’2和a’3)。

接下来,参照图35,阐释根据实施例6的内部存储器14的存储器映射的配置。此处,对内部存储器14的数据宽度是8个位、内部存储器14的地址宽度是(n+1)个位、内部存储器14的数据量是(8×2(n+1))个位,并且n=4的示例做出阐释。

内部存储器14将图35中的左边一半用作存储初始数据的区域,并且将右边一半的一部分用作存储与初始数据配对的ecc的区域。即,将在内部存储器14中的区域区分为在将地址的最高阶位的值(图35中的a4)设置为“0”时存储有数据的区域,并且区分为在将地址的最高阶位的值设置为“1”时存储有ecc的区域。

在实施例6中,针对存储有数据的地址的低阶n位(图35中的a3至a0)的值,存储有与数据配对的ecc的地址的低阶n位的值被改变为位值,该位值是通过图34所示的adr移位&偏移设置电路125(在图35中a3至a0的值被标记为“adr移位&偏移设置”的部分、或者在右边一半的一部分中示为a4=1的区域当中的a3=1和a2=1的区域)的操作来转换的。即,示出了将由偏移信号指示的2位偏移值的位b2和b3来自设置为“1”的示例。

即,如图35所示,地址adr-00(“00000”)至adr-03(“00011”)的数据(“data0”至“data3”)与地址adr-1c(“11100”)的ecc(“ecc0(0、1、2、3)”)配成一对。地址adr-04(“00100”)至adr-07(“00111”)的数据(“data4”至“data7”)与地址adr-1d(“11101”)的ecc(“ecc1(4、5、6、7)”)配成一对。地址adr-08(“01000”)至adr-0b(“01011”)的数据(“data8”至“datab”)与地址adr-1e(“11110”)的ecc(“ecc2(8、9、a、b)”)配成一对。地址adr-0c(“01100”)至adr-0f(“01011”)的数据(“datac”至“dataf”)与地址adr-1f(“11111”)的ecc(“ecc3(c、d、e、f)”)配成一对。即,都将偏移值的2个位设置为“1”;因此,不使用adr-10(“10000”)至adr-1b(“11011”)的12个地址。

此处,在实施例1至实施例5中,5位ecc由8位数据生成,并且通过将虚拟位(值为0)附加到高阶3位而被改变为8位数据,然后被存储在内部存储器14中。然而,在实施例6中,7位ecc由32位(四个地址)数据生成,并且通过将虚拟位(值为0)附加到最高阶的一个位而被改变为8位数据,然后被存储在内部存储器14中。

因此,在实施例6中,当将32位数据写入内部存储器14中时,总线主控器以每8个位的四个步骤来写入32位数据,指定连续的地址。例如,当将32位数据(“data0”至“data3”)写入内部存储器14中时,第一次,总线主控器将指示地址adr-00(“00000”)的地址信号和写入数据(“data0”)输出至i/f转换电路13。第二次,总线主控器将指示地址adr-01(“00001”)的地址信号和写入数据(“data1”)输出至i/f转换电路13。第三次,总线主控器将指示地址adr-02(“00010”)的地址信号和写入数据(“data2”)输出至i/f转换电路13。第四次,总线主控器将指示地址adr-03(“00011”)的地址信号和写入数据(“data3”)输出至i/f转换电路13。

ecc生成电路131将通过四次写入输入的四段写入数据组合,以生成32位数据,并且基于生成的32位数据来生成ecc。ecc生成电路131通过输出在最后一次写入(第四次)时涉及的生成的ecc,来将生成的ecc写入内部存储器14中。因此,即使第一次至第三次将不确定值写入地址adr-1c(“11100”),在第四次写入时也通过由32位数据生成的ecc来重写该不确定值。因此,不会出现问题。

在实施例6中,当从内部存储器14读取32位数据时,总线主控器通过指定连续的地址,以每8个位的四个步骤来读取32位数据。例如,当从内部存储器14读取32位数据(“data0”至“data3”)时,第一次,总线主控器将指示地址adr-00(“00000”)的地址信号输出至i/f转换电路13。第二次,总线主控器将指示地址adr-01(“00001”)的地址信号输出至i/f转换电路13。第三次,总线主控器将指示地址adr-02(“00010”)的地址信号输出至i/f转换电路13。第四次,总线主控器将指示地址adr-03(“00011”)的地址信号输出至i/f转换电路13。

ecc检查电路142和错误检测电路143将通过四次读取输入的四段读取数据组合在一起,并且生成32位数据。ecc检查电路142基于生成的32位数据来生成ecc,并且基于生成的ecc和第四次读取到的ecc来检测32位数据的错误。然后,根据ecc检查电路142得出的确定结果,错误校正电路143实际上输出32位数据,或者,在对该32位数据进行校正之后,将其输出至总线主控器作为读取数据。然而,在实施例6中,以每8个位的四个步骤来将待从错误校正电路143输出的32位读取数据输出至总线主控器。

至于图35所示的n=4的情况,图36示出了地址信号的低阶4位(a3至a0)的值的表格,其是关于四类对:“data0”至“data3”与“ecc0”、“data4”至“data7”与“ecc1”、“data8”至“datab”与“ecc2”、以及“datac”至“dataf”与“ecc3”。在图36中,将由在读取数据时输入到内部存储器14中的地址信号指示的地址表示为“地址(数据)”,并且将由在读取ecc时输入到内部存储器14中的地址信号指示的地址表示为“地址(ecc)”。

该表格从左到右示出了以下7种不同的情况:

(1)没有故障发生在地址的所有位中的情况;

(2)固定型1故障发生在地址的a3位中的情况;

(3)固定型0故障发生在地址的a3位中的情况;

(4)固定型1故障发生在地址的a2位中的情况;

(5)固定型0故障发生在地址的a2位中的情况;

(6)固定型1故障发生在地址的a1位中的情况;以及

(7)固定型0故障发生在地址的a1位中的情况。

固定型1故障发生在地址的a0位中的情况和固定型0故障发生在地址的a0位中的情况中的每一种情况与固定型1故障发生在地址的a1位中的情况和固定型0故障发生在地址的a1位中的情况中的每一种情况相似。因此,从该表省略它们。按照顺序将在每个位的位置处的四个值(0或者1)设置为a3至a0的值。在其值已经因故障而改变的位的位置处的值下面划线。

图36所示的表格的第二行(编号为4至7)是示出了同时存储有数据(“data4”至“data7”)和与数据配对的ecc(“ecc1”)的地址的行。当故障还未发生在地址的所有位中时,地址具有在最左边分别示出的adr-4至adr-07的低阶4位(“0100”至“0111”)、和adr-a的低阶4位(“1101”)。在图36所示的表格中,地址(数据)的四个地址和地址(ecc)的单个地址的对被实线包围。

此处,在固定型1故障发生在a3位中时的地址中,地址adr-04至adr-07(低阶4位为“0100”至“0111”)受到故障影响变成不同的地址adr-0c至adr-0f(低阶4位为“1100”至“1111”),并且地址adr-1d(低阶4位为“1101”)不受故障影响。在表格中,在a3至a0的值的对的故障的影响之后的值被虚线包围,并且,同时,在a3至a0的这些值的对的故障的影响之后的值中的每一个中被实际访问的地址(数据)和地址(ecc)被实线包围并且在表格中用粗线联接。如本文所示,访问第四行的数据(“datac”至“dataf”)和第二行的ecc(“ecc2”)。即,显然,数据与ecc的配对已经崩溃。

作为另一示例,在表格的进一步右方示出了固定型0故障发生在a3位中的情况,其中,按照与上述方式相同的方式来示出a3至a0的值的对。在这种情况下,地址adr-1d(低阶4位为“1101”)受到故障影响变成不同的地址adr-15(低阶4位为“0101”),并且地址不用于存储ecc。因此,显然,数据与ecc的配对已经崩溃。

作为又一示例,在相同的第二行的最右方示出了固定型0故障发生在a1位中的情况,其中,按照与上述方式相同的方式来示出a3至a0的值的对。在这种情况下,使地址adr-04至adr-07(低阶4位为“0100”至“0111”)退化为两个地址adr-04和adr-05(低阶4位为“0100”和“0101”)。因此,读取分别存储在地址adr-06和adr-07处的数据(“data6”)和数据(“data7”)是不可能的。因此,显然,数据与ecc的配对已经崩溃。

作为又一示例,在图36所示的表格的第三行中,涉及同时存储有数据(“data8”至“datab”)和与数据配对的ecc(“ecc2”)的地址,同样,示出了固定型1故障发生在a2位中的情况、固定型0故障发生在a2位中的情况、和固定型1故障发生在a1位中的情况。在情况中的任何一种情况下,数据与ecc的配对已经崩溃。通过该表格,显而易见的是,当固定型故障发生在地址的位中的任何一个中时,肯定可以检测到故障。阐释了将偏移(2个位)都设置为“1”的情况。然而,即使在将偏移设置为其它值“0”的情况下,显然也会获得与上述效果相同的效果。因此,省略了对其的详细阐释。

此外,当在固定型故障发生在地址的位的任何一个中之后执行数据的写入和读取时,地址(数据)和地址(ecc)的对变成与初始对不同的对。然而,该不同的对显然与地址(数据)和地址(ecc)(即,不会退化的地址)的另一不同对不一致。因此,不会发生同时重写数据和ecc。因此,甚至在固定型故障发生在地址的位中的任何一个中之后,显然也肯定可以检测到故障。

如上所述,在实施例6中,通过在除了第一地址(与(n+1)位地址对应)的至少一个位之外的位(与低阶n位对应)当中,使从低阶起除了规定的偏移位数量的位之外的位向低阶方向移位偏移位数量,并且,同时,通过将从高阶起偏移位数量(与m个位对应)的偏移位修改为设置偏移值,来生成地址作为第二地址。

据此,显然会获得与实施例2至实施例5完全相同的效果。因此,省略了对其的详细阐释。

<实施例7>

接下来,参照附图阐释实施例7的配置和操作。根据实施例7的cpu系统1的配置和操作与图1所示的根据实施例1的cpu系统1的配置和操作基本上相同。因此,省略了对其的阐释。根据实施例7的i/f转换电路13的配置和操作与图32所示的根据实施例6的i/f转换电路13的配置和操作基本上相同。因此,省略了对其的阐释。然而,在根据实施例7的i/f转换电路13中,adr转换电路120的一部分的配置和操作与根据实施例6的adr转换电路120的配置和操作不同。根据实施例7的i/f控制电路110、wdt转换电路130、和rdt转换电路140的配置和操作与根据实施例6的对应部分的配置和操作相同。

接下来,参照图37,阐释根据实施例7的adr转换电路120的配置。

如图37所示,与根据实施例6的adr转换电路120相比较,根据实施例7的adr转换电路120进一步包括adr范围限制电路126。

adr范围限制电路126限制地址(数据)。将从总线主控器输入的地址信号输入到adr范围限制电路126中。当在预先确定为能够存储数据的范围中不包括由输入的地址信号指示的地址时,adr范围限制电路126对地址进行修改,从而使其可以在范围内,并且将指示修改后的地址的地址信号输出至选择器122和adr移位&偏移设置电路125。另一方面,当在预先确定为能够存储数据的范围中包括由输入的地址信号指示的地址时,adr范围限制电路126实际上将指示修改后的地址的地址信号输出至选择器122和adr移位&偏移设置电路125。

接下来,参照图38,阐释根据实施例7的adr移位&偏移设置电路125的配置。此处,阐释了n位地址信号的示例。

如图38所示,根据实施例7的adr移位&偏移设置电路125与图34所示的根据实施例6的adr移位&偏移设置电路125的不同在于删除了偏移设置寄存器1251。即根据实施例7的adr移位&偏移设置电路125将在实施例6中任意设置的偏移(2个位)的每个位值固定到预先确定的值(此处假设为“1”)。

因此,分别将由输入到adr移位&偏移设置电路125中的n位地址信号指示的地址的高阶(n-m)位a2和a3设置为由待从adr移位&偏移设置电路125输出的n位地址信号指示的地址的低阶(n-m)位a’0和a'1。分别将规定偏移值的位b2和b3(值均为“1”)设置为待从adr移位&偏移设置电路125输出的n位地址信号的剩余的高阶m位a’(n-2)=a’2和a’(n-1)=a’3。

接下来,参照图39,阐释根据实施例7的内部存储器14的存储器映射。此处,对内部存储器14的数据宽度是8个位、内部存储器14的地址宽度为n个位、内部存储器14的数据量是(8×2n)个位,并且n=4的示例做出阐释。即,在实施例7中,未将等待#信号用作指示地址的高阶位的信号。

内部存储器14使用图39上方的12个地址作为存储数据的区域,并且使用以下四个地址作为存储ecc的区域。即,在内部存储器14的区域中,针对存储数据的地址的n个位(图39中的a3至a0)的值,存储与数据配对的ecc的地址的n个位的值是通过图38所示的adr移位&偏移设置电路125(在图39中的a3至a0的值被标记为“adr移位&偏移设置”的部分、或者从底部的四个地址的区域)的操作来转换的值。

即,如图39所示,地址adr-0(“0000”)至adr-3(“0011”)的数据(“data0”至“data3”)与地址adr-c(“1100”)的ecc(“ecc0(0、1、2、3)”)配成一对。地址adr-4(“0100”)至adr-7(“0111”)的数据(“data4”至“data7”)与地址adr-d(“1101”)的ecc(“ecc1(4、5、6、7)”)配成一对。地址adr-8(“1000”)至adr-b(“1011”)的数据(“data8”至“datab”)与地址adr-1e(“1110”)的ecc(“ecc2(8、9、a、b)”)配成一对。未使用最后一个地址adr-f(“1111”)的区域。

因此,当由地址信号指示的地址指示存储有ecc的地址adr-c(“1100”)至adr-f(“1111”)中的一个时,adr范围限制电路126将地址修改为在存储有数据的地址adr-0(“0000”)至adr-b(“1011”)当中的预先确定的地址。

如上所述,在实施例7中,通过使除了规定的偏移位数量的位之外的位从第一地址(与n位地址对应)的低阶向低阶方向移位偏移位数量,并且,同时,通过将偏移位数量(与m个位对应)的偏移位从高阶修改为设置偏移值,来生成地址作为第二地址。

据此,显然会获得与实施例2至实施例6完全相同的效果。因此,省略了对其的详细阐释。根据实施例7,可以减小在内部存储器14中未被使用的地址的区域。

在实施例7中,当在预先确定为第二地址可以采取的范围的范围中包括由总线主控器指定的第一地址时,adr范围限制电路126将由总线主控器指定的地址修改为预先确定为第一地址可以采取的地址的地址。

因此,即使总线主控器指定存储ecc的地址并且准备好数据的写入,如在根据实施例7的配置中的一样,也可以防止总线主控器将除了ecc之外的数据写入存储有ecc的地址。

<实施例8>

接下来,参照附图阐释实施例8的配置和操作。根据实施例8的cpu系统1的配置和操作与图1所示的根据实施例1的cpu系统1的配置和操作基本上相同。因此,省略了对其的阐释。根据实施例8的i/f转换电路13的配置和操作与图32所示的根据实施例6的i/f转换电路13的配置和操作基本上相同。然而,在根据实施例8的i/f转换电路13中,包括在adr转换电路120中的adr移位&偏移设置电路125的一部分的配置和操作与根据实施例6的adr移位&偏移设置电路125的配置和操作不同。

在实施例8中,可以将ecc模式切换为两个ecc模式。在第一ecc模式下,总线主控器执行将8位数据写入内部存储器14并且从内部存储器14读取8位数据,并且将5位ecc生成为8位数据并且将5位ecc存储在内部存储器14中。在第二ecc模式下,总线主控器执行将32位数据写入内部存储器14并且从内部存储器14读取32位数据,并且将7位ecc生成为32位数据并且将7位ecc存储在内部存储器14中。

根据实施例8的adr移位&偏移设置电路125可以将操作切换为图29所示的根据实施例5的adr旋转电路123的操作、或者图33所示的根据实施例6的adr移位&偏移设置电路125的操作。

即,根据实施例8的adr转换电路120可以根据设置ecc模式将操作切换为“adr旋转”或者“adr移位&偏移设置”。

接下来,参照图40,阐释根据实施例8的adr移位&偏移设置电路125的配置。

如图40所示,与根据实施例6的adr移位&偏移设置电路125相比较,根据实施例8的adr移位&偏移设置电路125进一步包括与偏移信号的位的数量一样多的选择器1252。对地址信号是n位并且偏移信号是m位(m=2)的示例做出阐释。

将输入到adr移位&偏移设置电路125中的地址信号的低阶m位a0和a1中的每一个输入到两个选择器1252中的每一个选择器1252中。将指示存储在偏移设置寄存器1251中的2位偏移值的偏移信号b(n-2)和b(n-1)中的每一个偏移信号输入到两个选择器1252中的每一个选择器1252中。

选择器1252中的每一个选择器1252选择从总线主控器输入的地址信号的低阶m位a0和a1中的每一个或者从偏移设置寄存器1251输入的偏移信号b(n-2)和b(n-1)中的每一个,并且输出选择的信号,作为待从adr移位&偏移设置电路125输出的地址信号的高阶m位a’(n-2)和a’(n-1)。

将指定ecc模式的ecc模式信号输入到选择器1252中的每一个选择器1252中。当输入指定第一ecc模式的ecc模式信号(“0”)时,选择器1252中的每一个选择器1252选择地址信号的低阶m位a0和a1中的每一个。另一方面,当输入指定第二ecc模式的ecc模式信号(“1”)时,选择器1252中的每一个选择器1252选择偏移信号b(n-2)和b(n-1)中的每一个偏移信号。

分别将输入到adr移位&偏移设置电路125中的地址信号的高阶(n-m)位a2、……、a(n-1)的每一个设置为待从adr移位&偏移设置电路125输出的地址信号的低阶(n-m)位a’0、a’1、……、a’(n-3)。即,该操作与图29所示的根据实施例5的adr旋转电路123的操作、和图33所示的根据实施例6的adr移位&偏移设置电路125的操作相同。同样,在adr移位&偏移设置电路125中,在n个缓冲器1250的每一个已经接收到n位地址信号线a0至a(n-1)的每个位的信号之后,利用该信号。

如上所述,在实施例8中,当指定第一模式时,adr移位&偏移设置电路125通过使除了第一地址(与(n+1)位地址对应)的至少一个位之外的所有位向较低方向移位规定的偏移位数量,来生成地址作为第二地址。当指定第二模式时,adr移位&偏移设置电路125通过,在除了第一地址的至少一个位之外的位当中,使从低阶起除了偏移位数量的位之外的位向低方向移位偏移位数量,并且通过将从高阶起偏移位数量(与m位对应)的偏移位修改为设置偏移值,来生成地址作为第二地址。

据此,在第一ecc模式下,显然选择性地获得与实施例5完全相同的效果。因此,省略了对其的详细阐释。同样,在第二ecc模式下,显然选择性地获得与实施例6完全相同的效果。因此,省略了对其的详细阐释。

<实施例9>

接下来,参照附图阐释实施例9的配置和操作。根据实施例9的cpu系统1的配置和操作与图1所示的根据实施例1的cpu系统1的配置和操作基本上相同。因此,省略了对其的阐释。根据实施例9的i/f转换电路13的配置和操作与图32所示的根据实施例6的i/f转换电路13的配置和操作基本上相同。然而,在根据实施例9的i/f转换电路13中,adr转换电路120的一部分的配置和操作与根据实施例6的adr转换电路120的配置和操作不同。

接下来,参照图41,阐释根据实施例9的i/f转换电路13的配置。与根据实施例6的i/f转换电路13相比较,根据实施例9的i/f转换电路13包括adr反转移位&偏移设置电路127来代替在adr转换电路120中的adr移位&偏移设置电路125。根据实施例9的i/f控制电路110、wdt转换电路130、和rdt转换电路140的配置和操作与根据实施例6的对应部分的配置和操作相同。

在实施例9中,可以将ecc模式切换为两个ecc模式。在第一ecc模式下,总线主控器执行将8位数据写入内部存储器14并且从内部存储器14读取8位数据,并且将5位ecc生成为8位数据并且将5位ecc存储在内部存储器14中。在第二ecc模式下,总线主控器执行将32位数据写入内部存储器14并且从内部存储器14读取32位数据,并且将7位ecc生成为32位数据并且将7位ecc存储在内部存储器14中。

在使除了来自低阶的预定数量的位之外的位的值反转,向低阶移位了预定数量的位,并且将由偏移信号指示的偏移值设置为来自高阶的预定数量的位的位之后,根据实施例9的adr反转移位&偏移设置电路127可以将操作切换为图3所示的根据实施例1的adr反转电路121的操作、或者将地址信号输出至选择器122的操作。因此,在实施例9中,选择器122选择从总线主控器输出的地址信号和从adr反转移位&偏移设置电路127输出的地址信号中的一个,并且将选择的地址信号输出至内部存储器14。

即,根据实施例9的adr转换电路120可以根据设置ecc模式将操作切换为“adr反转”或者“adr移位&偏移设置”。

接下来,参照图42,阐释根据实施例9的adr反转移位&偏移设置电路127的配置。

如图42所示,adr反转移位&偏移设置电路127包括n段位值反转电路1270、偏移设置寄存器1271、和n段选择器1272。对地址信号是n个位并且偏移信号是m个位(m=2)的示例做出阐释。

位值反转电路1270的n段中的每一段与n位地址信号的位a0、a1、a2、……、a(n-1)中的每一个对应。位值反转电路1270的n段中的每一段使地址信号的对应位的值反转,并且输出反转后的值。例如,位值反转电路1270是not电路。

此处,将地址信号的n个位a0、a1、……、a(n-2)和a(n-1)的反转值中的每一个输入至输出地址信号的n个位a’0、a’1、……、a’(n-2)和a’(n-1)的选择器1272的n段中的每一段。将地址信号的高阶(n-m)位a2、a3、……、a(n-2)和a(n-1)的反转值中的每一个输入至输出地址信号的低阶(n-m)位a’0、a’1、……、a’(n-4)和a’(n-3)的选择器1272的(n-m)段中的每一段。

将m位偏移信号取回到偏移设置寄存器1271,作为偏移值。将存储在偏移设置寄存器1271中的m位偏移值中的每一个输入到输出地址信号的高阶m位a’(n-2)和a’(n-1)的选择器1272的m段中的每一段中。

输出地址信号的低阶(n-m)位a’0、a’1、……、a’(n-4)和a’(n-3)中的每一个的选择器1272的(n-m)段中的每一段选择和输出地址信号的低阶(n-m)位a0、a1、……、a(n-4)和a(n-3)的反转值中的每一个、或者地址信号的高阶(n-m)位a2、a3、……、a(n-2)和a(n-1)的反转值中的每一个。

将指定ecc模式的ecc模式信号输入到选择器1272中的每一个中。当输入指定第一ecc模式的ecc模式信号(“0”)时,选择器1272的(n-m)段中的每一段选择地址信号的低阶(n-m)位a0、a1、……、a(n-4)和a(n-3)的反转值中的每一个。另一方面,当输入指定第二ecc模式的ecc模式信号(“1”)时,选择器1272的(n-m)段中的每一段选择地址信号的高阶(n-m)位a2、a3、……、a(n-2)和a(n-1)的反转值中的每一个。

输出地址信号的高阶m位a’(n-2)和a’(n-1)中的每一个的m个选择器1272中的每一个选择器选择和输出地址信号的高阶m位a(n-2)和a(n-1)的反转值中的每一个、或者偏移值b(n-2)和b(n-1)中的每一个。

当输入指定第一ecc模式的ecc模式信号(“0”)时,m个选择器1272中的每一个选择器选择地址信号的高阶m位a(n-2)和a(n-1)的反转值中的每一个。另一方面,当输入指定第二ecc模式的ecc模式信号(“1”)时,选择器1272中的每一个选择器1272选择偏移值b(n-2)和b(n-1)中的每一个。

如上所述,在实施例9中,当指定第一模式时,adr反转移位&偏移设置电路127通过使除了第一地址(与n+1位对应)的至少一个位之外的位的所有值反转,来生成地址作为第二地址。当指定第二模式时,adr反转移位&偏移设置电路127通过使除了第一地址的至少一个位之外的位的值反转,通过使从低阶起除了规定的偏移位数量的位之外的位向低阶方向移位偏移位数量,并且通过将从高阶起偏移位数量(与m位对应)的偏移位改变为设置偏移值,来生成地址作为第二地址。

据此,在第一ecc模式下,显然选择性地获得与实施例1完全相同的效果。因此,省略了对其的详细阐释。同样,在第二ecc模式下,显然选择性地获得与实施例6完全相同的效果。因此,省略了对其的详细阐释。

<实施例10>

接下来,参照附图阐释实施例10的配置和操作。根据实施例10的cpu系统1的配置和操作与图1所示的根据实施例1的cpu系统1的配置和操作基本上相同。因此,省略了对其的阐释。根据实施例10的i/f转换电路13的配置和操作与图32所示的根据实施例6的i/f转换电路13的配置和操作基本上相同。然而,在根据实施例10的i/f转换电路13中,包括在adr转换电路120中的adr移位&偏移设置电路125的一部分的配置和操作与根据实施例6的adr移位&偏移设置电路125的配置和操作不同。

在实施例10中,可以将ecc模式切换为两个ecc模式。在第一ecc模式下,总线主控器执行将8位数据写入内部存储器14并且从内部存储器14读取8位数据,并且将5位ecc生成为8位数据并且将5位ecc存储在内部存储器14中。在第二ecc模式下,总线主控器执行将32位数据写入内部存储器14并且从内部存储器14读取32位数据,并且将7位ecc生成为32位数据并且将7位ecc存储在内部存储器14中。

根据实施例10的adr移位&偏移设置电路125可以将操作切换为图3所示的根据实施例1的adr反转电路121的操作、或者图33所示的根据实施例6的adr移位&偏移设置电路125的操作。

即,根据实施例10的adr转换电路120可以根据设置ecc模式将操作切换为“adr反转”或者“adr移位&偏移设置”。

接下来,参照图43,阐释根据实施例10的adr移位&偏移设置电路125的配置。

如图43所示,与根据实施例6的adr移位&偏移设置电路125相比较,根据实施例10的adr移位&偏移设置电路125进一步包括adr选择电路1253的n段。对地址信号是n位并且偏移信号是m位(m=2)的示例做出阐释。

经由缓冲器1250将地址信号的n个位a0、a1、……、a(n-2)、a(n-1)的值的每一个输入至输出地址信号的n个位a’0、a’1、……、a’(n-2)和a’(n-1)的adr选择电路1253的n段中的每一段。经由缓冲器1250将地址信号的高阶(n-m)位a2、a3、……、a(n-2)和a(n-1)的值的每一个输入至输出地址信号的低阶(n-m)位a’0、a’1、……、a’(n-4)和a’(n-3)的adr选择电路1253的(n-m)段中的每一段。

将m位偏移信号取回到偏移设置寄存器1251,作为偏移值。将存储在偏移设置寄存器1251中的m位偏移值b(n-2)和b(n-1)输入到输出地址信号的高阶m位a’(n-2)和ma’(n-1)中的每一个的adr选择电路1253的m段中的每一段中。

输出地址信号的低阶(n-m)位a’0、a’1、……、a’(n-4)和a’(n-3)中的每一个的adr选择电路1253的(n-m)段中的每一段选择和输出地址信号的低阶(n-m)位a0、a1、……、a(n-4)和a(n-3)的反转值中的每一个、或者地址信号的高阶(n-m)位a2、a3、……、a(n-2)和a(n-1)的值中的每一个。

将指定ecc模式的ecc模式信号输入到adr选择电路1253中的每一个中。当输入指定第一ecc模式的ecc模式信号(“0”)时,adr选择电路1253的(n-m)段中的每一段选择地址信号的低阶(n-m)位a0、a1、……、a(n-4)和a(n-3)的值中的每一个,并且输出选择值的反转值。稍后将在此选择的值描述为“第一值”。另一方面,当输入指定第二ecc模式的ecc模式信号(“1”)时,adr选择电路1253的(n-m)段中的每一段选择和输出地址信号的高阶(n-m)位a2、a3、……、a(n-2)和a(n-1)的值中的每一个。稍后将在此选择的值描述为“第二值”。

输出地址信号的高阶m位a’(n-2)和a’(n-1)中的每一个的adr选择电路1253的m段中的每一段选择和输出地址信号的高阶m位a(n-2)和a(n-1)的反转值中的每一个、或者偏移值b(n-2)和b(n-1)中的每一个。

当输入指定第一ecc模式的ecc模式信号(“0”)时,adr选择电路1253的m段中的每一段选择地址信号的高阶m位a(n-2)和a(n-1)的值中的每一个,并且输出选择值的反转值。稍后将在此选择的值描述为“第一值”。另一方面,当输入指定第二ecc模式的ecc模式信号(“1”)时,adr选择电路1253的m段中的每一段选择和输出偏移值b(n-2)和b(n-1)中的每一个。稍后将在此选择的值描述为“第二值”。

接下来,参照图44,阐释根据实施例10的adr选择电路1253的配置。

如图44所示,adr选择电路1253包括nor电路12531、and电路12532、和or电路12533。

nor电路12531将信号输出至or电路12533,作为第一值和ecc模式信号的值的nor(负逻辑加法)的运算结果。and电路12532将信号输出至or电路12533,作为第二值和ecc模式信号的值的and(逻辑积)的运算结果。or电路12533输出信号,作为从nor电路12531输入的信号和从and电路12532输入的信号的or(逻辑加法)的运算结果。

如上所述,在实施例10中,当指定第一模式时,adr移位&偏移设置电路125通过使除了第一地址(与n+1位对应)的至少一个位之外的位的所有值反转,来生成地址作为第二地址。当指定第二模式时,adr移位&偏移设置电路125通过,在除了第一地址的至少一个位之外的位当中,使从低阶起不包括规定的偏移位数量的位的位向低方向移位偏移位数量,并且通过将从高阶起偏移位数量(与m位对应)的偏移位修改为设置偏移值,来生成地址作为第二地址。

因此,在第一ecc模式下,显然选择性地获得与实施例1完全相同的效果。因此,省略了对其的详细阐释。同样,在第二ecc模式下,显然选择性地获得与实施例6完全相同的效果。因此,省略了对其的详细阐释。

<实施例11>

接下来,参照附图阐释实施例11的配置和操作。参照图45,阐释根据实施例11的cpu系统1的配置。如图45所示,与图1所示的根据实施例1的cpu系统1进行的比较表明,根据实施例1的cpu系统1不包括控制输入i/f11、命令输出i/f12和i/f转换电路13,但是包括硬件加速器20、传感器i/fi/f21、致动器i/f22、转换电路23、ddri/f24、和ddr存储器25。

在实施例11中,车辆设置有作为输入单元的传感器单元。传感器单元观测车辆的周围并且将指示观测结果的传感器数据发送至cpu系统1,作为输入数据。例如,传感器单元是雷达或者照相机。

车辆设置有由cpu系统1控制的致动器单元,作为控制单元。例如,控制单元是方向盘或者刹车。

在根据实施例11的cpu系统1中,cpu10具有多核结构。cpu10基于来自传感器单元的传感器数据来生成控制数据。例如,当控制数据针对方向盘时,cpu10生成指令修改方向盘的转向角度的控制数据作为控制内容。例如,当控制数据针对刹车时,cpu10生成指令调节刹车油压的控制数据作为控制内容。

硬件加速器20是多核结构的硬件并且补充地执行cpu10的处理。例如,硬件加速器20是gpu(图形处理单元)或者dsp(数字信号处理器)。

传感器i/f21是将传感器单元耦合至系统总线的接口电路。即,将来自传感器单元的传感器数据输入到传感器i/f21中。致动器i/f22是将致动器单元耦合至系统总线的接口电路。即,致动器i/f22将用于控制致动器单元的命令输出至致动器单元。

转换电路23是将ddri/f24耦合至系统总线的接口电路。如稍后所描述的,与根据实施例1至10的i/f转换电路13一样,转换电路23执行检测数据信号系统和地址信号系统的故障的处理,当每个总线主控器(cpu10、dmac15、和硬件加速器20)经由系统总线在ddri/f24的辅助下访问ddr存储器25(将数据写入ddr存储器25或者从ddr存储器25读取数据)。

更具体地,当将数据写入到ddr存储器25中时,转换电路23也将由数据生成的ecc写入到ddr存储器25中。当从ddr存储器25读取数据时,转换电路23从读取数据生成ecc,并且将生成的ecc与写入到具有数据的ddr存储器25中的ecc进行比较,并且因此检测故障。同样,在实施例11中,通过从存储数据的地址生成存储ecc的地址,不仅可以检测数据信号系统的故障,还可以检测地址信号系统的故障。

ddri/f24根据经由转换电路23从总线主控器输入的分组来执行从ddr存储器25读取数据或者将数据写入到ddr存储器25。即,在实施例11中,总线主控器通过按照分组的形式将指示写入地址的数据和指示写入数据的数据输出至转换电路23,来执行数据的写入。总线主控器通过按照分组形式将指示读取地址的数据输出至转换电路23,来执行数据的读取。

ddr存储器25是存储各类数据的存储电路。即,ddr存储器25存储,例如,上述传感器数据、控制数据(命令)、和ecc。

接下来,参照图46,阐释根据实施例11的转换电路23的配置。如图46所示,转换电路23包括wadr转换电路210、radr转换电路220、wdt转换电路230、和rdt转换电路240。此处,“wadr”指示写入地址,并且“radr”指示读取地址。“wdt”和“rdt”如实施例1所阐释。

总线主控器经由系统总线将指示写入地址的分组、指示读取地址的分组、和指示写入数据的分组输出至转换电路23。转换电路23经由系统总线将指示读取数据的分组和错误通知信号输出至总线主控器。转换电路23基于从时钟生成电路(未示出)输入的时钟信号来操作。

当将数据写入到ddr存储器25中时,总线主控器将指示用作写入数据的地址的写入地址的分组、和指示用作写入数据的写入数据的分组输出至转换电路23。响应于此,转换电路23将这些分组输出至ddri/f24,并且,另外,将指示用作写入与写入数据对应的ecc的地址的ecc地址的分组、和指示待写入到ddr存储器25中的ecc的分组输出至ddri/f24。

ddri/f24将由来自转换电路23的分组指示的写入数据写入由来自转换电路23的分组指示的ddr存储器25的写入地址。ddri/f24还将由来自转换电路23的分组指示的ecc写入由来自转换电路23的分组指示的ddr存储器25的ecc地址。

当从ddr存储器25读取数据时,总线主控器将指示用作读取数据的地址的读取地址的分组输出至转换电路23。响应于此,转换电路23将该分组输出至ddri/f24,并且,另外,将指示用作读取与作为待读取数据的读取数据对应的ecc的地址的ecc地址的分组输出至ddri/f24。

ddri/f24从由来自转换电路235的分组指示的ddr存储器25的读取地址读取读取数据,并且将指示读取到的读取数据的分组输出至转换电路23。ddri/f24还从由来自转换电路23的分组指示的ddr存储器25的ecc地址读取ecc,并且将指示读取到的ecc的分组输出至转换电路23。

然后,当通过使用由来自ddri/f24的分组指示的读取数据和由来自ddri/f24的分组指示的ecc,通过检查来检测数据的错误时,转换电路23将通知错误的错误通知信号输出至总线主控器。

如图46所示,wadr转换电路210包括地址缓冲器211、ecc指定的adr生成电路212、切换控制电路213、和选择器214。

地址缓冲器211是将来自总线主控器的指示写入地址的分组输出至选择器214并且随后暂时保持该分组的存储器。

ecc特定的adr生成电路212基于由存储在地址缓冲器211中的分组指示的写入地址,来生成指示ecc地址的分组。从写入地址生成ecc地址的操作与根据实施例1的adr反转电路121的操作相同。因此,省略了对其的详细阐释。ecc特定的adr生成电路212将生成的分组输出至选择器214。然而,要注意,在实施例11中,ecc特定的adr生成电路212对在实施例1中由等待#信号切换的地址信号的最高阶位的值进行切换。

当将指示写入地址的分组从地址缓冲器211输出至选择器214时,切换控制电路213指示选择器214选择分组。更具体地,切换控制电路213将数据/ecc信号(“0”)输出至选择器214。在完成将指示写入地址的分组从地址缓冲器211输出至选择器214之后,在将指示ecc地址的分组从ecc特定的adr生成电路212输出至选择器214的同时,切换控制电路213指示选择器214选择分组。更具体地,切换控制电路213将数据/ecc信号(“1”)输出至选择器214。

当从切换控制电路213输入数据/ecc信号(“0”)时,选择器214选择从地址缓冲器211输入的分组,并且将选择的分组输出至ddri/f24。另一方面,当从切换控制电路213输入数据/ecc信号(“1”)时,选择器214选择从ecc特定的adr生成电路212输入的分组,并且将选择的分组输出至ddri/f24。

radr转换电路220的配置和操作与wadr转换电路210的配置和操作相同。因此省略了对其的阐释。

如图46所示,wdt转换电路230包括数据缓冲器231、ecc生成电路232、切换控制电路233、和选择器234。

数据缓冲器231是将来自总线主控器的指示写入数据的分组输出至选择器234并且随后暂时保持该数据的存储器。

ecc生成电路232基于由存储在数据缓冲器231中的分组指示的写入数据,来生成指示ecc的分组。从写入数据生成ecc的操作与根据实施例1的ecc生成电路131的操作相同。因此,省略了对其的详细阐释。ecc生成电路232将生成的分组输出至选择器234。

在将指示写入数据的分组从数据缓冲器231输出至选择器234的同时,切换控制电路233指示选择器234选择分组。更具体地,切换控制电路233将数据/ecc信号(“0”)输出至选择器234。在完成将指示写入数据的分组从数据缓冲器231输出至选择器234之后,在将指示ecc地址的分组从ecc生成电路232输出至选择器234的同时,切换控制电路233指示选择器234选择分组。更具体地,切换控制电路233将数据/ecc信号(“1”)输出至选择器234。

当从切换控制电路233输入数据/ecc信号(“0”)时,选择器234选择从数据缓冲器231输入的分组,并且将选择的分组输出至ddri/f24。另一方面,当从切换控制电路233输入数据/ecc信号(“1”)时,选择器234选择从ecc生成电路232输入的分组,并且将选择的分组输出至ddri/f24。

rdt转换电路240包括数据缓冲器241、启用控制电路242、ecc检查电路243、和错误校正电路244。

数据缓冲器241是将来自ddri/f24的指示读取数据的分组输出至ecc检查电路243和错误校正电路244,并且随后暂时存储分组的存储器。数据缓冲器241存储来自ddri/f24的指示ecc的分组。

当将指示ecc的分组存储在数据缓冲器241时,启用控制电路242输出启用信号,以确定由存储在数据缓冲器241中的分组指示的数据的错误是否发生。更具体地,启用控制电路242将断言的启用信号(“1”)输出至ecc检查电路243。在其余的时候,启用控制电路242将去断言的启用信号(“0”)输出至ecc检查电路243。例如,当完成稍后将描述的由ecc检查电路243进行的确定时,启用控制电路242将去断言的启用信号(“0”)输出至ecc检查电路243。

响应于来自启用控制电路242的断言的启用信号(“1”),ecc检查电路243基于由存储在数据缓冲器241中的分组指示的数据和由存储在数据缓冲器241中的分组指示的ecc,来确定数据的错误是否已经发生。

当ecc检查电路243确定错误已经发生在数据的任何一个位中时,ecc检查电路243将指示位的位置的错误校正信号输出至错误校正电路244。当ecc检查电路243确定无法校正的2位或者多位错误已经发生在数据中时,ecc检查电路243将通知错误的错误通知信号输出至总线主控器。

当错误还未发生在数据中时,错误校正电路244实际上将从数据缓冲器241输入的指示数据的分组输出至总线主控器,作为读取数据。另一方面,当错误已经发生在数据中时,错误校正电路244对由从数据缓冲器241输入的分组指示的数据的错误进行校正,并且然后将数据输出至总线主控器。数据的具体错误校正的方法和配置与根据实施例1的错误校正电路143的方法和配置相同。因此,省略了对其的阐释。

此处,在ddr存储器25中,通过指定列地址和行地址,可以指定读取数据的地址或者写入数据的地址。ddri/f24通过将由分组指示的地址分解为列地址和行地址并且以两个步骤将指示每个地址的地址信号传输至ddr存储器25,来实现对ddr存储器25的访问。因此,减少在ddri/f24与ddr存储器25之间的地址信号线的数量。然而,例如,当ddr存储器25的数据信号线的数量为32时,由分组指示的地址的低阶2位毫无意义;因此不将它们输出至ddr存储器25。

然而,当固定型故障发生在地址信号线中的一条中时,上述配置等同于受2位的固定型故障影响的地址。然而,根据实施例11,可以如上所述检测2位或者多位错误;因此,肯定也可以检测到这种错误。

此处,参照图47阐释实施例11的其它效果。更具体地,如图47所示,ddri/f24包括ddr控制电路310和高速缓冲存储器320。

ddr控制电路310根据从转换电路23输出的指示读取地址的分组来读取存储在ddr存储器25的读取地址处的数据。当将数据缓存至高速缓冲存储器320时,ddr控制电路310从高速缓冲存储器320读取数据,而不是从ddr存储器25读取。然后,ddr控制电路310生成指示读取到的数据的分组,作为读取数据,并且将生成的分组输出至转换电路23。

高速缓冲存储器320利用设置关联方案来管理并且包括多个路径。当采用n路设置关联方案时,高速缓冲存储器320包括存储有多种数据的n个区域。n个区域中的每一个用n类不同的路径地址的每一个加以标记。

在图47中采用4路设置关联方案。图47示出了四个区域中的每一个用四类路径地址(“00”、“01”、“10”和“11”)中的每一类加以标记。此处,假设路径地址使用n位读取地址的高阶2位。

在实施例11中,radr转换电路220使读取在地址的(n+1)位当中的低阶n位的ecc的地址的位值反转为读取数据的地址。因此,当读取数据的路径地址是“00”时,读取ecc的路径地址变成“11”。即,根据实施例11,低阶1位的值在存储数据的路径的标记与存储ecc的路径的标记之间是彼此不同的。

因此,当固定型故障发生在地址信号线当中的与路径地址的低阶1位对应的信号线中时,从在低阶1位中具有相同的值的标记读取数据和ecc。因此,数据与ecc的配对崩溃。结果,故障由rdt转换电路240检测。即,要理解,实施例11可以适当地应用于这种ddri/f24。

对在通过使用根据实施例11的分组来执行数据的写入和读取的配置中执行根据实施例1的地址转换的示例做出阐释。然而,示例并不限于此。在通过使用根据实施例11的分组来执行数据的写入和读取的配置中,也优选执行根据其它实施例2至10中的一个的地址转换。当使地址信号的作为规定的数量的位的数量小于n的位的值反转或者重排时,高速缓冲存储器320的每个路径用包括地址信号的规定的数量的位的至少一个位的位加以标记。

如上所述,在实施例11中,地址缓冲器211存储从总线主控器接收到的指示第一地址的第一分组。wadr转换电路210和radr转换电路220基于由存储在地址缓冲器211中的第一分组指示的第一地址,来生成指示第二地址的第二分组。wadr转换电路210将从总线主控器接收到的第一分组发送至ddri/f24,并且将生成的第二分组发送至ddri/f24。因此,wadr转换电路210执行将数据写入第一地址并且将错误检测代码写入第二地址。radr转换电路220将从总线主控器接收到的第一分组发送至ddri/f24,并且将生成的第二分组发送至ddri/f24。因此,radr转换电路220执行从第一地址读取数据并且从第二地址读取错误检测代码。

因此,即使当按照来自总线主控器的分组的形式来执行数据的写入和读取时,也可以检测地址信号系统的故障。当为了提高数据访问效率而提供连续访问连续的多个地址的突发访问模式时,优选输出初始值,作为与通过一次突发访问访问的范围对应的地址的低阶多位,将其从在wadr转换电路210和radr转换电路220的ecc特定的adr生成电路212中的地址转换的目标排除。即使在这种情况下,当固定型故障发生在ddri/f14与ddr存储器25之间的地址信号线中的一条中时,经由与低阶多位相同的地址信号线,在被分解为列地址和行地址之后发送的对应的高阶多位也会受到固定型故障的影响。因此,也可以检测这种故障。

在实施例11中,ddri/f24包括利用设置关联方案来缓存ddr存储器25的数据的高速缓冲存储器320。通过使在除了第一地址(与(n+1)位地址对应)的至少一个位的值之外的位(与低阶n位对应)当中的规定的数量的位的值反转,来生成地址作为第二地址。高速缓冲存储器的每个路径用包括规定的数量的位中的至少一个位的位来标记。

因此,可以通过转移在ddri/f24的高速缓冲存储器320中的功能来检测地址信号系统的故障。

<实施例12>

接下来,参照附图阐释实施例12的配置和操作。根据实施例12的cpu系统1的配置和操作与图1所示的根据实施例1的cpu系统1的配置和操作基本上相同。因此,省略了对其的阐释。然而,在实施例12中,包括在cpu系统1中的i/f转换电路13的一部分的配置和操作与根据实施例1的i/f转换电路13的配置和操作不同。

接下来,参照图48,阐释根据实施例12的i/f转换电路13的配置。与根据实施例10的i/f转换电路13相比较,根据实施例12的i/f转换电路13进一步包括ecc模式控制电路150。

ecc模式控制电路150包括ecc模式设置寄存器151。ecc模式设置寄存器151存储与ecc模式有关的各类设置值。ecc模式控制电路150根据存储在ecc模式设置寄存器151中的设置值,来执行对启用或者禁用ecc模式的控制和对在启用ecc模式时切换ecc模式的控制。

此处,例如,将以下(1)-(4)设置至ecc模式设置寄存器151,作为设置值。此处,在(2)-(4)中,可以设置各自相关联的多个组。

(1)启用/禁用ecc模式

(2)ecc模式

(3)ecc模式的范围(例如,由范围的开始地址和结束地址指定)

(4)从存储数据的区域到存储ecc的区域的偏移

当将禁用ecc模式的设置值存储在ecc模式设置寄存器151中时,ecc模式控制电路150抑制在i/f控制电路110、adr转换电路120、wdt转换电路130、和rdt转换电路140中的与ecc有关的处理(将ecc写入到内部存储器14中、从内部存储器14读取ecc、和基于ecc来确定数据错误)。

例如,ecc模式控制电路150将去断言的ecc启用信号(“0”)输出至i/f控制电路110。当从ecc模式控制电路150输入去断言的ecc启用信号(“0”)时,i/f控制电路110抑制在第一时钟周期内输出断言的等待#信号(“0”)。

另一方面,当将启用ecc模式的设置值存储在ecc模式设置寄存器151中时,ecc模式控制电路150允许在i/f控制电路110、adr转换电路120、wdt转换电路130、和rdt转换电路140中的与ecc有关的处理(将ecc写入到内部存储器14中、从内部存储器14读取ecc、和基于ecc来确定数据错误)。

例如,ecc模式控制电路150将断言的ecc启用信号(“1”)输出至i/f控制电路110。当从ecc模式控制电路150输入断言的ecc启用信号(“1”)时,i/f控制电路110在第一时钟周期内输出断言的等待#信号(“0”)。

也将从总线主控器输入到adr转换电路120中的地址信号输入到ecc模式控制电路150中。当启用ecc模式时,ecc模式控制电路150确定由地址信号指示的地址是否包括在(3)的ecc模式的范围内。当由地址信号指示的地址包括在ecc模式的范围内时,ecc模式控制电路150将指定按照相关联的方式设置在ecc模式设置寄存器151的ecc模式的范围内的ecc模式的ecc模式信号输出至adr转换电路120。

ecc模式控制电路150将从总线主控器输入的地址信号的高阶l位的值修改为与按照相关联的方式设置在ecc模式设置寄存器151的ecc模式的范围内的上述(4)的偏移值相加的值。ecc模式控制电路150将指示修改后的值的信号输出至内部存储器14。l位信号用作待输入到内部存储器14中的(n+l)位地址信号的高阶l位的信号。

因此,如图49所示,至于存储在内部存储器14中的具体范围内的数据,可以在第一ecc模式下存储与数据对应的ecc,并且至于存储在其它具体范围内的数据,可以在第二ecc模式下存储与数据对应的ecc。

因此,如图50所示,对地址进行转换。即,在图50的上部分所示的第一ecc模式下,将偏移添加至(n+l)位地址的高阶l位的值,并且使低阶n位的值反转。在图50的下部分所示的第二ecc模式下,将偏移添加至(n+l)位地址的高阶l位的值。至于低阶n位的值,将高阶m位修改为设置在偏移设置寄存器1251中的偏移,并且低阶(n-m)位改变为高阶(n-m)位向低方向移位的值。

对根据实施例12的ecc模式控制电路150应用于根据实施例10的i/f转换电路的示例做出阐释。然而,示例并不限于此。根据实施例12的ecc模式控制电路150可以应用于根据实施例8和9中的一个的i/f转换电路13。

<实施例的概述配置>

参照图51,下面将阐释半导体装置9的配置作为根据上述实施例1至12的cpu系统1的概述配置。即,如图51所示,提取在根据实施例1至12的cpu系统1中的特性配置的一部分。

如图51所示,半导体装置9包括地址转换电路91、写入电路92、和读取电路93。

地址转换电路91基于用于将数据存储在存储器94中的第一地址,来生成用于存储由数据生成的错误检测代码的第二地址。地址转换电路91与adr转换电路120对应。

当请求将数据写入至第一地址时,写入电路92将数据写入第一地址中并且同时将错误检测代码写入第二地址中。写入电路92与wdt转换电路130对应。

当请求从第一地址读取数据时,读取电路93从第一地址读取数据,从第二地址读取错误检测代码,并且基于数据和错误检测代码来检测错误。读取电路93与rdt转换电路140对应,

在此,地址转换电路91通过修改第一地址的至少一个位的值,通过使错误检测代码的存储位置向数据的存储位置偏移,并且通过使其它位当中的规定的数量的位的值反转或者重排,来生成地址作为所述第二地址。

如上所述,已经基于实施例来具体地阐释了由本发明人完成的本发明。然而,不得不强调本发明并不限于上述实施例,并且可以在不偏离要点的范围内以各种方式变化。

在上述实施例1至12中,列入对启用一位错误校正和2位或者多位错误检测的ecc(错误校正代码)被用作用于检测数据的错误的错误检测代码进行阐释。然而,示例并不限于此。也优选利用crc(循环冗余检查)或者奇偶性代码,作为错误检测代码。然而,更优选利用不仅启用错误检测还启用错误校正的ecc,如上所述。

在上述内部存储器14或者ddri/f24的地址信号处理电路中,即使在执行在逻辑地址与物理地址之间转换地址的处理的情况下,也可以应用本实施例。

上述各类信号的位的数量和值并不限于上述示例。例如,启用信号和错误通知信号可以将断言的值设置为“0”,并且将否定的值设置为“1”。等待#信号可以是高态有效信号。写入/读取信号可以将值设置为将写入指定为“1”,并且将值设置为将读取指定为“0”。等待#信号可以是指定地址的规定的高阶位的多个位。

上述内部存储器14的数据宽度、地址宽度和数据量并不限于上述示例。偏移值的位m的数量并不限于上述两个位的示例。偏移值并不限于上述值。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1