首页> 中国专利> 确定由控制器从存储器读取的数据的有效性

确定由控制器从存储器读取的数据的有效性

摘要

本发明揭示一种方法,其包含:基于使用包含第一数据的至少一个输入的散列函数,生成第一摘要;将所述第一数据存储在存储器中;从所述存储器读取所述第一数据;基于所述读取数据生成第二摘要;将所述第一摘要与所述第二摘要进行比较;及基于将所述第一摘要与所述第二摘要进行比较,确定所述读取数据是否已损坏。

著录项

  • 公开/公告号CN112166416A

    专利类型发明专利

  • 公开/公告日2021-01-01

    原文格式PDF

  • 申请/专利权人 美光科技公司;

    申请/专利号CN201980035140.3

  • 发明设计人 A·特罗亚;A·蒙代洛;

    申请日2019-04-30

  • 分类号G06F11/10(20060101);G06F11/14(20060101);G06F3/06(20060101);

  • 代理机构11287 北京律盟知识产权代理有限责任公司;

  • 代理人王龙

  • 地址 美国爱达荷州

  • 入库时间 2023-06-19 09:23:00

说明书

本申请案主张在2018年5月29日提出申请且标题为“确定由控制器从存储器读取数据的有效性(DETERMINING VALIDITY OF DATA READ FROM MEMORY BY A CONTROLLER)”的美国专利申请案第15/991,463号的申请日期权益,所述美国专利申请案的全部揭示内容特此以引用的方式并入本文中。

技术领域

本文中所揭示的至少一些实施例大体来说且更特定来说涉及计算系统中的存储器操作,但不限于确定由计算装置(例如,控制器)从存储器(例如,易失性或非易失性存储器装置)读取的数据的有效性。

背景技术

存储器装置常常经提供作为计算机或其它电子装置中的内部半导体集成电路及/或外部可拆卸式装置。存在许多不同类型的存储器,包含易失性及非易失性存储器。易失性存储器,包含随机存取存储器(RAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)及同步动态随机存取存储器(SDRAM),以及其它存储器,可能需要外加功率来源以维护其数据。相比之下,非易失性存储器甚至在没有外部供电时也可以保留其所存储的数据。非易失性存储器可用于广泛各种技术,包含快闪存储器(例如,“与非”及“或非”)相变存储器(PCM)、电阻式随机存取存储器(RRAM)及磁性随机存取存储器(MRAM),及其它存储器。

存储器装置可以包含用于存储数据的较大存储器单元阵列,所述存储器单元阵列常常组织成行及列。个别存储器单元及/或一系列存储器单元可以通过其行及列进行寻址。在寻址存储器阵列时,可存在一或多个地址转换层,例如,在主机装置利用的逻辑地址与对应于存储器阵列中的位置的物理地址之间进行转换。尽管不常见,但在存储器装置的命令/地址总线上提供到所述存储器装置的地址信息可能会因错误而损坏,使得可对与主机装置请求不同的物理地址执行存储器装置的内部操作(例如,读取操作、写入操作、擦除操作等)。

在一些状况下,存储器装置用于存储操作自主车辆的数据。例如,车辆的控制系统可以使用所存储数据自动导航及驾驶车辆。在一个实例中,存储器装置存储关于分析车辆的传感器所提供的传感器输入的人工神经网络(ANN)的数据。

自主驾驶技术领域的最新发展使计算系统能够至少在某些条件下操作车辆的控制元件无需车辆的操作人员辅助。例如,可以在车辆上安装传感器(例如,摄像机及雷达),以检测公路上的车辆周围环境的状况。安装在车辆上的计算系统分析传感器输入,以识别状况并生成控制信号或命令,用于自动调整车辆的方向及/或速度,而无需车辆操作人员的任何输入。自主驾驶及/或高级驾驶员辅助系统(ADAS)通常涉及使用ANN来识别传感器输入中捕获的事件及/或对象。

通常,人工神经网络(ANN)使用神经元网络处理网络的输入,并从网络生成输出。网络中的每一神经元m接收一组输入p

每一神经元m具有偏差b

每一神经元m生成其输入及其偏差的加权总和s

ANN的输入与输出之间的关系通常由ANN模型定义,该模型包含表示网络中神经元的连接的数据,以及每一神经元m的偏差b

例如,到ANN网络的输入可基于摄像机输入生成;且来自ANN网络的输出可能为物项(例如,事件或对象)的识别。

例如,标题为“使用深度学习进行基于视觉的雨量检测”的美国专利申请公开案第2017/0293808号揭示使用安装在车辆上的摄像机来经由ANN模型确定车辆是处于下雨还是无雨天气的方法。

例如,标题为“道路建设检测系统及方法”的美国专利申请公开案第2017/0242436号揭示使用ANN模型检测道路建设的方法。

例如,美国专利第9,672,734号及第9,245,188号论述人类驾驶员及/或自主车辆驾驶系统的车道检测技术。

通常,ANN可以使用监督方法进行训练,其中可调整突触权重,以最小化或减少由相应输入产生的已知输出与由将输入应用于ANN而产生的计算输出之间的误差。监督学习/训练方法的实例包含强化学习及带纠错的学习。

替代地,或组合地,使用非监督方法对ANN进行训练,其中由给定输入集产生的确切输出在训练完成之前并非先验已知的。ANN可经过训练,将物项分类为多个类别,或将数据点分类为群集。多种训练算法通常用于复杂的机器学习/训练范式。

上文所论述专利文件的揭示内容特此以引用方式并入本文中。

附图说明

在附图的各图中通过实例而非限制的方式说明实施例,在附图中,相同参考编号指示相同元件。

图1根据一个实施例展示使用人工神经网络(ANN)模型的系统。

图2根据一个实施例展示经配置于图1的系统中的车辆的实例,其中车辆使用人工神经网络(ANN)模型。

图3根据一个实施例展示包含系统存储器及引导装置的用于车辆的系统。

图4根据一个实施例展示用于车辆的系统,其中系统使用与读取数据相对应的摘要比较来确定读取数据是否已损坏。

图5根据一个实施例展示计算系统,所述计算系统包含从引导装置及/或系统存储器读取数据的应用程序控制器。

图6根据一个实施例展示图5的计算系统的引导阶段的实例,其中将摘要数据存储在安全装置中。

图7根据一个实施例展示图6的计算系统的运行时操作的实例。

图8根据一个实施例展示图5的计算系统的引导阶段的实例,其中将摘要数据存储在系统存储器中。

图9根据一个实施例展示图8的计算系统的运行时操作的实例。

图10根据一个实施例展示用于确定从存储器读取的数据是否已损坏的方法。

具体实施方式

在计算系统中实施容错通常会带来一或多个技术问题。例如,如果以临时(ad-hoc)方式实施容错,那么各种容错机制本身可能成为所得架构中故障及不可靠的主要来源。

在一个实例中,基本服务由容错架构提供,包含用于符合ISO26262(道路车辆—功能安全)的汽车应用中的主控制器。使用反馈机制,使得总线上从存储器装置传输到主控制器的数据不受噪声、串扰及其它软错误源引起的错误的影响。

例如,存储器装置可为易失性或非易失性,并且向控制器提供数据以便执行及/或存储信息。存储器的一部分可以存储关键代码,例如固件、软件及/或关于由在控制器上执行的进程或应用程序使用的临时计算的结果及数据。

在汽车行业,ISO26262(道路车辆—功能安全)标准提供了降低系统执行错误代码的可能性的指南。在自主驾驶应用程序中实施此标准是使用冗余及纠错机制完成的,以便检测及纠正阵列内生成的错误。

然而,在一些状况下,此错误纠正不仅实施用以纠正错误的特征,而且还可能导致技术问题。例如,如果页包含超过(过载)校正算法本身的校正能力的多个错误,那么该算法将在不同位置引入额外错误。

由于上述问题,在一些状况下,期望通知系统纠正内部错误及/或禁用内部机制,并且让外部应用程序控制器接管纠正的管理。此外,在实时操作系统中,在一些状况下,期望确保存储器装置与系统控制器之间的数据传输的正确性,以及系统控制器随后执行恰当代码。

在一些状况下,可能会出现错误,所述错误影响由控制器在命令/地址总线上提供到存储器装置的地址信息(例如,在地址转换期间、在命令/地址总线操作期间等)。此类错误可能导致在与所期望物理地址不同的物理地址处执行存储器操作。在其它状况下,由于数据的存储状态发生非所要的改变,所存储数据可变得无效。

例如,存储器中数据错误存在数个潜在原因。典型存储器系统含有用于存储ECC数据的备用区域。例如,对于“与非”快闪存储器,ECC计算为外部进行,使得存在计算并存储ECC数据的外部控制器。在另一实例中,在DRAM的状况下,ECC纠正为内部计算的,且不可用于外部控制器。一些DRAM实施方案可以在进行ECC纠正时进行外部通信。然而,在一些状况下,存储器系统中发生的数据错误的数目可能超过系统的ECC纠正功能的能力。这会将错误引入从存储器读取的数据中。

在另一数据错误的实例中,由于空间中的x射线或α粒子(alpha particle)影响存储数据的单元中的电容器电荷,因此位可以从1翻转到0,或从0翻转到1。此外,老化可导致位随时间缓慢翻转,或有时甚至会突然翻转。

错误也可能由不正确的页解码引起。从设备接口转换到存储器阵列的故障电荷泵或逻辑门可能会导致位卡在另一个位的值。这种情况可导致从错误页读取数据。在一些状况下,这不会标记计算系统中的任何错误,因为控制器发出正确的地址,并且从页读取的ECC对于所读取的页来说是正确的。然而,读取数据将来自错误页。

因此,本文中的各种实施例检验从存储器读取恰当数据(例如,以确定数据是否已损坏)。例如,这样做以检验从非易失性存储器读取的数据是否对应于控制器或其它计算装置已从中请求数据的地址。

在一些状况下,计算系统包含控制器(例如,微处理器)及存储器子系统(例如,由控制器用作系统存储器的易失性存储器)。从控制器写入到存储器并随后读回到控制器的数据可能以多种方式被损坏。一些现有的机制(例如纠错码(ECC))可以检测并修复这些错误中的一些。然而,ECC处理可能会过载,且错误将保留在从存储器读取的数据中。下文所描述的各种实施例可以检测数据损坏或解决在沿着往返控制器及存储器的数据存储或传输路径的任何位置处发生的错误。

本文中揭示的至少一些实施例提供一种使用加密散列函数来检测计算系统中的数据或地址损坏(例如,在存储器存储操作期间在读取地址中发生的错误,或在存储在存储器中时已损坏的读取数据)的方法。在一个实例中,计算系统包含实施人工神经网络(ANN)的应用程序控制器。例如,存储器(例如,DRAM)可以将与ANN的矩阵相对应的页存储在存储器中。如果为ANN所存储的数据被损坏,或在错误地返回存储在非预期地址处的数据的操作期间存在读取地址错误,那么对由ANN控制的车辆进行不当控制或操作可能会导致物理损坏及/或严重人身伤害。

在各种实施例中,当数据从控制器写入到存储器(例如,引导装置或系统存储器)时,将运行加密散列函数以生成散列摘要。散列摘要连同由控制器写入的数据一起存储在存储器中。在一些状况下,散列函数的输入可以包含与待写入的数据相关联的额外数据,例如元数据及/或将数据写入在存储器中的地址。

稍后,当数据从存储器读取回到控制器时,控制器(或另一计算装置,例如运行安全管理程序的安全装置,所述安全管理程序监视活动以提供计算系统的安全操作)重新计算关于读取数据的散列摘要,并将其与先前在将数据写入到存储器时存储的散列摘要进行比较。如果两个散列摘要不相同,那么确定数据已损坏。响应于确定读取数据已损坏,可以执行一或多个动作。例如,控制器可以采取措施来解决问题或包容损坏数据。

如本文中所描述的各种实施例可以通过使用密码术来使得系统能够检测去往或来自存储器的地址或数据的任何损坏,提供对上述数据错误问题中的一或多个的解决方案。这包含主机控制器与存储器之间的路径中任何点的任何总线错误。如果在存储器中或传输路径上的任何位置处,地址错误或数据位改变,那么由主机控制器计算的散列摘要将不同于存储在存储器中的散列摘要,并且将检测到数据错误。

在一些状况下,各种实施例使用加密引擎在读取数据时生成散列摘要,以便确定地址及读取数据是否以不寻常的方式链接,例如导致地址或数据位一起链接或停留在错误值的解码电路或高压电路的老化。

本文中所描述的实施例也可与多种不同类型的存储器一起使用。例如,实施例可与目前计算系统中主要使用的两种类型存储器一起使用:DRAM及“与非”快闪存储器。本实施例也可应用于许多其它类型的存储器,例如3D XPoint、电阻式RAM、旋转扭矩等。在下文所论述的一些非限制性实例中,存储器存储关于人工神经网络(ANN)的数据。

图1根据一个实施例展示使用人工神经网络(ANN)模型119的系统。图1的系统包含经由通信网络(102)与车辆111通信的集中式服务器(101)。

服务器(101)包含受监督的训练模块(117),用于训练、生成及更新人工神经网络(ANN)模型(119),所述ANN模型包含用于处理车辆111中生成的传感器数据的网络中的神经元的神经元偏差(121)、突触权重(123)及激活函数(125)。

一旦ANN模型(119)经设计、训练及实施,例如,用于自主驾驶及/或高级驾驶员辅助系统,ANN模型(119)就可以部署在车辆111上供实际使用。

通常,车辆111具有传感器,诸如可见光摄像机、红外线摄像机、激光雷达、雷达、声纳及/或一组外围传感器。车辆111的传感器为自主驾驶及/或高级驾驶员辅助系统中的ANN模型(119)生成传感器输入,以生成操作指令,例如转向、制动、加速、驾驶、警报、紧急响应等。

在车辆111的操作期间,车辆111遇到在传感器数据中捕获的例如事件或对象等物项。车辆111使用ANN模型(119)提供所述物项的识别,以有利于生成用于车辆111的操作的命令,例如用于自主驾驶及/或高级驾驶员辅助。

一些所遇到的物项可能是意外的且因此在ANN模型(119)的设计、训练及/或实施中没有充分考虑。因此,ANN模型(119)可能会将所述意外物项识别为未知项,或无法将所述物项分类为单个已知类别。

车辆111的自主驾驶及/或高级驾驶员辅助的功能可以根据预先编程的政策处理此类未知物项。例如,作为对未知事件或对象的检测的响应,车辆(111)可经编程以避开所述物项,启动安全模式响应,警告操作人员进行控制,向操作人员请求辅助,通过保持距离使车辆处于更安全情景,及/或减速停车等。

当通过使用ANN模型(119)从特定传感器输入生成的输出识别未知物项(或对精度或置信水平不足的物项进行分类)时,车辆111经配置以存储负责输出的特定传感器输入及/或将传感器输入传输到集中式服务器(101)。选择并传输回到服务器(101)的传感器输入通过在训练模型(117)中实施的监督机器学习技术扩充用于训练及更新ANN模型(119)的传感器数据(103)。

例如,车辆(111)可以经由到接入点(或基站)(105)的无线连接(115)与服务器(101)进行通信,以提交传感器输入以扩充传感器数据(103)作为使用受监督的训练模块(117)实施的机器学习的额外数据集。无线连接(115)可经由无线局域网、蜂窝通信网络及/或到卫星(109)或通信气球的通信链路(107)来进行。

服务器(101)周期性地运行受监督的训练模块(117)以更新ANN模型(119)。服务器(101)可以使用利用来自车辆(111)及/或来自在相同地理区域中或在具有类似交通状况的地理区域中操作的类似车辆的传感器输入增强的传感器数据(103)来生成用于车辆(111)的ANN模型(119)的定制版本。

由于ANN模型(119)的更新版本是经由机器学习进行训练的,因此使用与先前意外或未辨识的物项相关联的传感器输入来确定且准确地辨识及/或分类这些物项及/或类似物项。因此,ANN模型(119)的能力得到了增强。

经更新的ANN模型(119)可经由通信网络(102)、接入点(或基站)(105)及通信链路(115及/或117)下载到车辆(例如,111),作为车辆(例如,111)的固件/软件的无线更新。

任选地,车辆(111)具有自学能力。在道路上长时间后,车辆(111)可使用其收集并存储在车辆(111)中的传感器输入(例如捕获意外的未知及/或未辨识的事件或对象的传感器输入)生成用于安装在车辆(111)中的ANN模型(119)的一组新的突触权重(123)、神经元偏差(121)、激活函数(125)及/或神经元连接。

例如,集中式服务器(101)可由车辆(111、...、113)的工厂、生产商或制造商或车辆111的自主驾驶及/或高级驾驶员辅助系统的供应商操作。

图2根据一个实施例展示经配置于图1的系统中的车辆的实例,其中车辆使用人工神经网络(ANN)模型119。图2的车辆(111)包含信息娱乐系统(149)、通信装置(139)、一或多个传感器(137)以及计算机(131),所述计算机连接到车辆(111)的一些控制件,例如用于车辆(111)的方向的转向控制件(141)、用于停止车辆(111)的制动控制件(143)、加速控制件(145)用于车辆(111)的速度等。

车辆(111)的计算机(131)包含一或多个处理器(133)、存储固件(或软件)(127)的存储器(135)、ANN模型(119)(例如,如在图1中所说明)及其它数据(129)。

存储器135还包含系统存储器155。例如,系统存储器155可以存储ANN的矩阵行(例如,参见下文图6到9)。如本文中所描述的摘要比较可用于确定从系统存储器155读取的数据的有效性。

一或多个传感器(137)可包含可见光摄像机、红外线摄像机、激光雷达、雷达或声纳系统及/或外围传感器,这些传感器经配置以向计算机(131)提供传感器输入。在处理器(133)中执行的固件(或软件)(127)的模块将传感器输入应用于由模型(119)定义的ANN,以生成识别或分类例如图像或视频剪辑的传感器输入中所捕获的事件或对象的输出。

由ANN模型(119)生成的事件或对象的识别或分类可由固件(或软件)(127)的自主驾驶模块或高级驾驶辅助系统使用,以生成响应。响应可能为激活及/或调整车辆控制件(141、143及145)中的一个的命令。

可选地,事件或对象的识别或分类经由信息娱乐系统(149)呈现给车辆(111)的乘员。

当欲改进当前事件或对象的识别或分类时(例如,当事件或对象被识别为未知或被识别为多个可能的事件或对象中的一个,或被识别为置信度低于阈值的事件或对象时),计算机(131)选择传感器输入(例如,图像或视频剪辑,或从图像或视频剪辑派生的ANN的数据)用于存储在存储器(135)中。随后,或实时地,计算机(131)使用通信装置(139)将选定的传感器输入传输到图1中说明的服务器(101)。

服务器(101)将所接收到的传感器输入存储为传感器数据(103)的一部分,以用于使用受监督的训练模块(117)随后进一步训练或更新ANN模型(119)。

当ANN模型(119)的经更新版本可用于服务器(101)中时,车辆(111)可以使用通信装置(139)下载经更新的ANN模型(119)以安装在存储器中(135)及/或更换先前安装的ANN模型(119)。

在其它实施例中,计算机131为控制器,例如微控制器、专用逻辑电路系统(例如,现场可编程门阵列(FPGA)、专用集成电路(ASIC)等),或其它合适处理器。计算机131可以包含处理器133,所述处理器经配置以执行存储在存储器中的指令。计算机131的存储器可以包含经配置以执行各种进程、逻辑流及例程以控制车辆111的操作的嵌入式存储器,包含管理系统存储器及处理存储器装置与主机装置(未展示)之间的通信。

在一些实施例中,嵌入式存储器可以包含存储器寄存器,所述存储器寄存器存储例如存储器指针、所提取数据等。嵌入式存储器可包含用于存储存储器寄存器的易失性存储器及/或非易失性存储器(例如,DRAM、SRAM、“与非”、“或非”、PCM),且还可以包含只读存储器(ROM)(例如,用于存储微码)。

在操作中,计算机131可以直接写入或以其它方式编写(例如,擦除)主存储器的各种存储器区域(例如,系统存储器155),例如通过写入到存储器页组及/或存储器块。在基于“与非”的存储器中,写入操作通常包含用特定数据值(例如,具有逻辑0或逻辑1值的数据位串)编程选定存储器页中的存储器单元。擦除操作类似于写入操作,除了擦除操作将整个存储器块或多个存储器块重新编程到相同的数据状态(例如,逻辑1)。

计算机131可以通过主机装置接口与主机装置(未展示)通信。在一些实施例中,主机装置及计算机131可以经由串行接口进行通信,例如串行附接的SCSI(SAS)、串行AT附接(SATA)接口、快速外围组件互连(PCIe)或其它合适的接口(例如,并行接口)。主机装置可以向计算机131发送各种请求(例如呈数据包或数据包流的形式)。请求可以包含写入、擦除、返回信息及/或执行特定操作(例如,TRIM操作)的命令。请求还可以包含中断或指示状况改变(例如,功率损耗事件)的另一命令,其可以触发功率损耗算法的实施。

主机装置(未展示)可以为能够利用存储器临时或永久存储信息的多个电子装置中的任一者,或其组件。例如,主机装置可为计算装置,例如台式或便携式计算机、服务器、手持装置(例如,移动电话、平板、数字阅读器、数字媒体播放器),或其一些组件(例如,中央处理单元、协处理器、专用存储器控制器等)。主机装置可为联网装置(例如,交换机、路由器等),或数字图像、音频及/或视频的记录器、车辆、家电、玩具,或多个其它产品中的任一个。在一个实施例中,主机装置可直接连接到存储器装置,但在其它实施例中,主机装置可间接连接到存储器装置(例如,通过联网连接或通过中间装置)。

图3根据一个实施例展示用于车辆的系统,所述系统包含系统存储器154、引导装置156及存储装置150。例如,引导装置156可通过固件更新来配置。例如,更新可经固件接收到引导装置156的非易失性存储器中。

在一个实施例中,固件由应用程序控制器152的无线接口(未展示)接收。所接收到的更新经发送到引导装置156的存储器158。

各种类型的应用程序可由应用程序控制器152控制及/或支持。此类应用程序的实例包含群集、娱乐或信息娱乐系统、运载工具的座椅控制以及运载工具的动力系统。

在一个实施例中,使用加密引擎(未展示)生成各种加密值(例如,数据的散列摘要)。在一个实施例中,加密引擎比较散列摘要以确定数据的有效性(例如,由应用程序控制器152从引导装置156或系统存储器154读取)。在一个实例中,由加密引擎在比较中用于确定读取数据有效性的摘要是使用例如SHA256、SHA2等算法来生成。例如,加密引擎基于摘要比较(例如,如与从存储器读取的数据的摘要比较,在存储在存储器中之前的数据的摘要)确定是接受还是拒绝数据。响应于此确定,可执行各种动作,例如下文所描述。在一个实例中,加密引擎包含位于引导装置156上的一或多个处理器及存储器。在另一实例中,加密引擎位于执行安全管理程序的安全装置上,或在应用程序控制器152本身上。

数据可经由互连件168、170、172在系统的组件之间传送,互连件中的每一个可为例如内部或外部数据或其它总线(例如,外围组件互连(PCI)、扩展的PCI(PCI-X)、快速PCI(PCIe))、通信部分及/或计算机网络。

在一个实施例中,存储装置150、应用程序控制器152及系统存储器154中的一或多个为单片系统(SOC)装置的部分(例如,所有这些组件均位于同一SOC芯片上)。在一个实施例中,引导装置156可被包含为SOC芯片的一部分。在其它实施例中,这些组件中的每一个可在单独芯片上实施(例如,安装在硬件卡或其它结构上并通过在其上布线进行连接)。

在一个实例中,应用程序控制器152为运行系统的主MCU(例如,INTEL corei7为计算机的应用程序控制器)。周围系统中的各种控制器(例如,存储器控制器)服务应用程序控制器152以执行功能。

在一个实施例中,经由应用程序控制器152,从引导装置156或系统存储器154接收固件或运行时代码。基于上述摘要比较做出拒绝数据的确定。响应于确定拒绝数据,应用程序控制器152例如更新引导装置156及/或系统存储器154中的数据的至少一部分。

例如,所更新数据可为包含被拒绝的数据的软件程序。拒绝数据的确定可从加密引擎传递到应用程序控制器152。在一个实施例中,使用如本文中所描述的摘要比较检查固件或运行时代码的安全性。

在一个实例中,来自OTA更新的更新代码页被接收,并写入到引导装置156或系统存储器154中。在一个实例中,页具有至少4K字节的大小。

在一个实例中,如果拒绝OTA固件更新,那么将对应于更新的整个固件或运行时代码内容视为有缺陷或不安全。在此类状况下,例如,通过新请求的安全无线更新来更新固件或运行时代码。

在一个实施例中,使用应用程序控制器152来将数据存储到系统存储器154中。应用程序控制器152使用散列函数生成第一摘要。散列数据的输入包含待存储在系统存储器154中的数据页,且还包含所述页将存储在系统存储器154中的地址。在生成第一摘要后,应用程序控制器152在所述地址处存储页。

稍后,应用程序控制器152通过提供上述用于存储页的地址,从系统存储器154读取所存储页。应用程序控制器152使用读取页及地址生成第二摘要,作为散列函数的输入。然后,应用程序控制器152将第一摘要与第二摘要进行比较,并基于此比较做出确定读取页是否已损坏。例如,由于存储在系统存储器154中的数据中的错误及/或由于提供到系统存储器154的寻址错误,读取页可能已损坏。

在一个实施例中,存储数据之前生成的第一摘要存储在系统存储器154中。例如,数据页可以连同所生成的第一摘要一起存储。在一些状况下,第一摘要可以存储在系统存储器154的备用区域中。

在另一实例中,数据页存储在非易失性存储器中(例如,引导装置156)中。在此实例中,第一摘要可以存储在添加到非易失性存储器的备用区域中或可用于所述备用区域中的额外单元中。例如,第一摘要可以存储为与存储数据页的存储器的一行相关联。

在一个实例中,期望对以下模式进行编程:Data=控制器需要存储的数据页。模式Data将存储在地址位置n处。控制器152(或另一装置的加密引擎)计算表示与页及其地址相关联的摘要的Digest(n)=HASH(Data||Page n Address)。如前述中所描述,待存储的数据与用于存储页的地址级联(由"||"表示)。

控制器存储Data、address、ECC(与没有签名的页及Digest(n)值相关联)及Digest(n)。例如,生成摘要,如下:Digest(n)=HASH(Data||metadata(if any)||Page nAddress)。在一个实例中,页n地址为行地址。

在一个实例中,用于从存储器读取数据页的读取机制是用于与控制器152通信的机制(例如,“与非”ONFI、SPI、特定协议、“或非”CFI、DRAM等)。应用程序控制器发送页的地址n,存储器接收地址,且然后根据特定接口协议发送以下数据:

Data+metadata(if any)

ECC(if used)

Digest(n)

当控制器152接收到上述信息时,控制器152执行以下流程:

使用ECC(if used)读取(并纠正)Data;以及

计算第二摘要(例如,Expected_Digest(n))如下:

Digest(n)=HASH(Data||metadata(if any)||Page n Address)

控制器152可通过查看在存储数据之前生成的第一摘要与读取所存储数据时预期(及计算)的第二摘要的比较来解释读取的数据内不匹配的存在。如果预期的摘要与先前存储的摘要不匹配,那么确定数据为无效。

图4根据一个实施例展示用于车辆(例如,图1到2的车辆111)的系统,其中系统使用与读取数据相对应的摘要比较来确定读取数据是否已损坏。在各种实施例中,系统存储器154可以存储各种类型的数据。在一个实例中,通过缓冲器204经由应用程序控制器152的无线接口(未展示)接收OTA更新,作为存储在系统存储器154中的数据部分(例如,数据部分可为页或一组页)的流。

在一个实施例中,响应于加密引擎202基于摘要比较确定数据页为无效的,应用程序控制器152丢弃先前存储在系统存储器154中的最初从中获得所述无效数据页的软件。在一个实例中,响应于确定拒绝数据页,加密引擎202致使应用程序控制器152进入或保持处于救援模式。

在一个实施例中,在从引导装置156读取及/或使用数据之前,应用程序控制器152检验引导装置156的识别码(例如,以避免需要替换引导装置组件)。在本实施例中,识别检验可以部分地基于存储在引导装置156中的块摘要(例如,下文图6的块摘要511)。

在一个实施例中,先前所存储软件为较早通过应用程序控制器152请求的无线更新获得。响应于丢弃先前存储软件,应用程序控制器152做出对新的安全无线更新的请求(例如,来自相同或不同来源)。

在一个实施例中,无线更新是从例如服务器(例如,图1的服务器101)的计算装置接收。当应用程序控制器152处于救援模式时,应用程序控制器152可从引导装置156加载救援模式代码,并使用救援模式代码的至少一部分从服务器获得先前被拒绝的所述软件的新更新。

在一个实施例中,由缓冲器204接收的数据为从存储装置150获得的代码。响应于确定接受数据为有效的,应用程序控制器152将数据从缓冲器204拷贝到系统存储器154。

在另一实施例中,由缓冲器204接收的数据为存储在系统存储器154中的运行时代码的一部分。使用本文中所描述的摘要比较做出确定代码是否有效。响应于确定接受运行时代码的所有数据部分,运行时代码由应用程序控制器152执行。

在一个实施例中,在引导装置156、存储装置150及/或系统存储器154上使用的存储器可为非易失性存储媒体(例如,快闪存储器)及/或易失性存储器。此存储器可例如存储引导代码及/或救援代码。

例如,在由应用程序控制器152引导应用程序期间,引导代码、操作系统(OS)及软件代码/应用程序将(以压缩方式)从存储装置150移动到系统存储器154。然后,此数据未经压缩,且开始由应用程序控制器152执行。当系统在引导后起始时,系统存储器(例如,易失性存储器)含有例如整个操作系统及所有软件代码/应用程序。

在一个实施例中,引导装置156具有硬件安全模块能力,且实施以下特征:经验证命令集、对重放攻击的保护;存储在引导装置156的存储器内部的秘密密钥(例如,秘密密钥与作为源的系统开发者共享);具有内置基于密钥的MAC计算器的加密引擎;以及可用于程序操作的本地存储器。

在一个实施例中,应用程序控制器152在执行引导装置156的一些或全部操作时存取所述引导装置。此存取涉及使用秘密密钥、算法及经鉴别命令集。所述命令集经保护以防止重放攻击。应用程序控制器152可认证存储在系统RAM及/或存储装置150中的数据的有效性,且还可认证安全无线更新的有效性,例如用于固件更新或引导装置更新(安全固件及摘要)。

在一个实例中,如果发现任何所接收数据部分中的一或多个无效,那么丢弃系统存储器的全部内容。应用程序控制器152从引导装置156加载救援模式代码,并运行具有基本功能性的安全固件。在一个实例中,这些功能性包含请求来自另一源的新经认证更新。

在另一实施例中,在系统通电时,应用程序控制器152接收待执行的存储在存储装置150中的安全代码。在由应用程序控制器152执行进一步的操作之前,将所述安全代码认证为有效。引导代码用于起始应用程序控制器152的应用程序。

现在在下文描述关于安全无线(SOTA)更新的各种实施例。在一个实施例中,所述更新用于更新引导装置156中的代码及/或存储装置150中的代码。例如,更新可为真实的软件更新。在另一实例中,可以执行更新,以修复通过摘要比较确定的所辨识攻击的代码。

在一个实施例中,应用程序控制器152从远程位置接收更新。此更新可为例如存储装置内容更新。系统提供者可例如使用此方法来更新应用程序,例如改进功能性及/或安全性。在一个实施例中,应用程序控制器152将所接收到的更新存储在系统存储器154内部及/或将更新的签名存储在系统存储器154内部。

在一个实施例中,如果所接收到的数据经验证,那么更新被接受。例如,更新被拷贝在存储装置150内部用于系统固件更新,或拷贝在引导装置156内部用于引导固件更新。软件更新的签名可例如存储在引导装置156内部,用于认证后续操作(例如,引导及/或运行时期间的操作)。如果所接收的数据未通过验证,那么系统可以进入或保持处于救援模式。

在一个实施例中,当应用程序控制器152下载更新时,首先将图像存储在系统存储器(例如,DRAM)中,及/或不时存储在存储装置150中。对更新进行签名(通过计算其MAC),且所述签名为确保存储器内部的已下载内容为真实的机制。为了执行对签名的检查,下载所有数据,并对照内部应用程序秘密密钥对数据进行测量,且然后将最终签名与所接收到的签名进行比较。

图5根据一个实施例展示计算系统,所述计算系统包含从引导装置507及/或系统存储器505安全地读取数据的应用程序控制器503。例如,应用程序控制器503为现场可编程门阵列(FPGA)或图形处理单元(GPU)。在一个实例中,应用程序控制器503为图2的计算机131。

安全装置509用于监视及保护计算系统内的通信。例如,安全装置509确定从存储器读取的数据是否有效或被视为已损坏。例如,安全装置509为FPGA。

在一个实施例中,使用图5的计算系统来实施人工神经网络(ANN)。在此实施方案中,主应用程序控制器501为系统的主处理装置。主应用程序控制器501接收来自车辆(例如,图1的车辆111)的传感器(例如激光雷达、制动、摄像机)的传感器输入,及例如加速、制动、发动机控制等致动器输出。

可例如使用感测可见光及/或红外线光的相机,或LIDAR、RADAR或声纳系统,以捕获例如事件或对象等物项的图像或视频的形式来生成传感器输入。传感器输入可以包含表示图像或视频的数据,及/或从图像或视频提取或导出的输入数据。致动器(例如,用以控制制动、发动机、转向等)用于实施基于传感器输入从ANN确定的控制动作。

在一个实施例中,应用程序控制器503实施ANN。应用程序控制器503耦合到系统存储器505(例如,DRAM系统存储器)及引导装置507(例如,引导装置507含有运行应用程序控制器503所需的固件)。安全装置509包含安全管理程序及安全控制器。在一个实例中,安全控制器实施在FPGA中。在其它实例中,安全控制器可以实施在其它类型的控制器中。在一个实施例中,安全装置509为外部装置,其可接收数据(例如,从存储器读取的数据)、用于读取数据的地址以及用于进行摘要比较的摘要,如本文中所描述。

ANN的代码存储在系统存储器505中。例如,所述代码包含输入p1、p2等,且输出a1、a2等。例如,ANN可以具有多个层。将输入(例如传感器数据)传输到第一层。输入数据在第一层中经处理,且然后发送用于进行进一步处理。例如,可以将数据发送到下一层、到当前层内的另一节点、到先前层,或返回到同一节点以进行进一步处理。

在各种实施例中,如下文进一步所描述,ANN从系统存储器505执行。ANN移动到系统存储器505(例如,DRAM)的代码区域。在一个实例中,DRAM的每一页含有ANN的一部分(例如,ANN的矩阵的一或多个行)。

图6根据一个实施例展示图5的计算系统的引导阶段的实例,其中将摘要数据(例如,摘要1、摘要2、…、摘要n)存储在安全装置509中。在一个实施例中,摘要数据对应于为待存储的数据生成的第一摘要,如上文所论述。摘要数据包含为存储在存储器中的每一矩阵行(例如,矩阵行1、2、...n)生成的摘要。为待存储的数据生成第一摘要。在一个实施例中,第一摘要然后与所存储数据一起存储(例如,存储在引导装置507中)。

在一个实施例中,引导装置507含有ANN矩阵的层和存储在多个行中的相关联摘要。可以存在每一矩阵层一个行,每层多个行,每行多个层。

引导装置507还含有块摘要511。例如,块摘要511为囊括所有单个摘要(例如,摘要1、摘要2、…、摘要n)的机制,且可用于确定数据块(例如,存储在引导装置507中的阵列中的许多数据行)中是否存在任何数据损坏。

在一个实施例中,存在两个级别的检查:层级别的单个摘要及装置级别的块摘要511汇总检查。在系统引导期间,首先检查块摘要511以确保引导装置内容正确。如果引导装置内容正确,将矩阵行摘要拷贝到在安全装置509上执行的安全管理程序作为一组所存储摘要(如所说明)。例如,在引导阶段期间将存储在引导装置507中的第一摘要拷贝到安全装置509,供以后在运行时期间使用,如下文所论述。

在一个实施例中,块摘要511是使用散列函数通过使用ANN的一些或所有矩阵数据行作为散列函数的输入来生成。块摘要111也可以例如通过图1的服务器101发送。

此外,矩阵行从引导装置507拷贝到系统存储器505的代码区域(参见下文图7)。矩阵行将在从系统存储器505执行ANN期间使用。

图7根据一个实施例展示图6的计算系统的运行时操作的实例。系统存储器505含有两个矩阵行的副本,一个存储在代码区域(例如,如所说明的代码区域)且一个存储在运行时区域(例如,如所说明的运行时区域)中。在运行时,矩阵行例如逐一地从代码区域拷贝到运行时区域,以在系统存储器中建构ANN。同一数据行也拷贝到安全装置509。

当安全装置509接收每一行时,安全装置509计算摘要,并将其与先前加载(例如,在上述的引导阶段)的所存储摘要进行比较。如果所计算摘要与所存储摘要不匹配,那么在安全装置509上执行的管理程序会标记应用程序控制器503的错误。安全装置509及管理程序可以将摘要存储在易失性存储器或非易失性存储器中,例如本地RAM、“或非”快闪存储器、“与非”快闪存储器或3D XPoint存储器。

在一个实施例中,安全装置509包含加密引擎,所述加密引擎在接收每一行时生成第二摘要。安全装置509执行所存储第一摘要与为所拷贝的每一行所生成的第二摘要的比较。

图8根据一个实施例展示图5的计算系统的引导阶段的实例,其中将摘要数据存储在系统存储器505中。图8的系统的操作与上文针对图6所论述的操作相似。在本实施例中,第一摘要(摘要1、2、...、n)从引导装置507拷贝并存储在系统存储器505的代码区域中。

在一个实施例中,安全装置509将每一生成的摘要拷贝回系统存储器的运行时区域,以实现连续检查数据有效性。在一个实施例中,安全装置509将第一摘要值存储在易失性存储器中。

在一个实施例中,应用程序控制器503处理关于ANN的矩阵中的数据的正确性的通信。在此实施例中,第一摘要存储在系统存储器505的代码区中,而不是在图6的安全装置509中的引导阶段存储第一摘要。

图9根据一个实施例展示图8的计算系统的运行时操作的实例。当系统在运行时模式下执行ANN时,每一矩阵行逐一地从代码区域移动到系统存储器505的运行时区域。每一对应的矩阵行也移动到安全装置509。另外,对应的摘要从系统存储器505的代码区域移动到安全装置509。

当安全装置509接收每一行及其相关联的所存储第一摘要时,计算新的预期(第二)摘要,例如,如上文所描述。将新计算的第二摘要与所接收的第一摘要进行比较,如上文所描述。在一个实例中,基于此比较,在存在不匹配的情况下,将警告信号发送到应用程序控制器503。

在一个实施例中,第一摘要(在将数据存储在存储器中之前生成是在工厂级别及/或在安全更新期间(例如,固件及/或数据的OTA更新)存储。例如,第一摘要可通过图1的服务器101发送到车辆111。

图10根据一个实施例展示用于确定从存储器读取的数据是否已损坏的方法。例如,图10的方法可以在图2到5的计算系统中的一个中实施。图10的方法包含,在框1010处,为待存储在存储器中的第一数据(例如,ANN的数据页)生成第一摘要。第一摘要是基于散列函数生成,所述散列函数使用包含待存储的第一数据的至少一个输入。在一个实例中,散列函数的输入包含第一数据及第一数据将被存储的地址。

在框1020处,将第一数据存储在存储器中。在一个实例中,将第一数据存储在引导装置507或系统存储器505中。

在框1030处,从存储器读取第一数据。例如,应用程序控制器503从系统存储器505的代码区域读取数据行,并将所述行拷贝到系统存储器505的运行时区域。

在框1040处,基于读取数据生成第二摘要。例如,第二摘要由安全装置509在接收到待拷贝到系统存储器505的运行时区域的数据行的副本之后进行计算。

在框1050处,将第一摘要与第二摘要进行比较。例如,安全装置509从引导阶段将第一摘要存储在存储器中。稍后在运行时期间,安全装置509生成第二摘要,以供与所存储第一摘要进行比较。

在框1060处,基于第一摘要与第二摘要的比较,做出确定读取数据是否已损坏。例如,安全装置509做出确定读取数据是否已损坏。在一个实例中,安全装置509向应用程序控制器503发送信号,指示读取数据无效。

现在在下文描述各种其它实施例。在一个实施例中,在至少一个计算装置中实施的方法包括:基于使用包含第一数据的至少一个输入的散列函数,生成第一摘要;将所述第一数据存储在存储器中;从所述存储器读取所述第一数据;基于所述读取数据,生成第二摘要;将所述第一摘要及所述第二摘要进行比较;及基于将所述第一摘要与所述第二摘要进行比较,确定所述读取数据是否已损坏。

在一个实施例中,由散列函数所使用的至少一个输入进一步包含以下各项中的至少一个:第一数据存储在存储器中的地址;或与第一数据关联的元数据。

在一个实施例中,存储器为控制器的引导装置,且所述方法进一步包括:将读取数据及第一摘要拷贝到控制器的系统存储器。

在一个实施例中,从存储器读取第一数据包括:通过第一计算装置读取第一数据,且所述方法进一步包括:将读取数据发送到第二计算装置,其中通过第二计算装置执行将第一摘要与第二摘要进行比较。

在一个实施例中,所述方法进一步包括:响应于确定读取数据已损坏,执行至少一个动作。

在一个实施例中,第一数据由控制器存储在存储器中,且至少一个动作包括以下各项中的一个:向控制器发送指示第一数据已损坏的信号;从存储器重新读取第一数据;终止在控制器上执行的进程;或包容经识别为已损坏的数据。

在一个实施例中,存储器为引导装置,且所述方法进一步包括:通过控制器将多个数据行从引导装置拷贝到控制器的系统存储器,其中所述行包含第一行及第二行,第一数据存储在第一行中,及在拷贝第二行之前,执行将第一摘要与第二摘要进行比较。

在一个实施例中,存储器为第一计算装置的系统存储器的代码区域,且所述方法进一步包括将多个数据行从代码区域拷贝到系统存储器的运行时区域,其中所述行包含第一行及第二行,第一数据存储在第一行中,且在拷贝第二行之前执行将第一摘要与第二摘要进行比较。

在一个实施例中,所述方法进一步包括:将第一摘要发送到第二计算装置,且通过第二计算装置执行生成第二摘要。

在一个实施例中,第一计算装置为现场可编程门阵列(FPGA),且第二计算装置为FPGA、控制器,或执行管理程序的计算装置。

在一个实施例中,所述方法进一步包括:将第一摘要在存储器中存储为与所存储第一数据相关联;为存储在存储器中的数据块生成第三个摘要,其中数据块包含多个数据行,且所述行包含存储第一数据的第一行;及使用第三摘要确定数据块是否已损坏。

在一个实施例中,存储第一数据包括:通过控制器将第一数据写入到易失性存储器或非易失性存储器。

在一个实施例中,第一数据存储在存储器中所存储的多个行中的第一行中,并且多个行对应于人工神经网络的矩阵。

在一个实施例中,存储第一数据包括:通过控制器写入第一数据,且所述方法进一步包括:在读取第一数据之后,将读取数据存储在控制器的系统存储器中。

在一个实施例中,存储第一数据包括:通过控制器写入第一数据,且存储器为控制器的系统存储器。

在一个实施例中,存储第一数据包括:通过第一计算装置存储第一数据,且所述方法进一步包括:将第一摘要发送到第二计算装置,其中通过第二计算装置执行将第一摘要与第二摘要进行比较。

在一个实施例中,存储第一数据包括:将第一数据存储在存储器中所存储的多个行中的第一行中,且所述方法进一步包括:为存储在存储器中的数据块生成第三摘要(例如,块摘要511),其中块包含多个行,且其中第三摘要是使用散列函数及包含以下各项中的至少一个的至少一个输入来生成:存储在多个行中的数据;或多个相应摘要(例如,图8的摘要1、2、...、n),其中每一相应摘要对应为多个行中的相应行生成的摘要。

在一个实施例中,系统包括:至少一个处理器;及存储器,其含有指令,所述指令经配置以指示至少一个处理器:基于使用数据作为输入的散列函数生成第一摘要;将数据存储在第一存储器中;从第一存储器读取数据;基于读取数据生成第二摘要;及基于第一摘要与第二摘要的比较确定读取数据是否已损坏。

在一个实施例中,第一存储器包括系统存储器,或引导装置的存储器;至少一个处理器包括控制器、现场可编程门阵列或执行管理程序的计算装置;且所述方法进一步包括将第一摘要存储在第一存储器或第二存储器中的至少一个中。

在一个实施例中,非临时性计算机存储媒体存储指令,所述指令当由至少一个处理器执行时致使至少一个处理器:使用散列函数生成第一摘要,其中散列函数使用包含数据页的输入,以及待在生成第一摘要之后存储所述页的第一地址;将所述页存储在存储器中的第一地址处;从存储器的第一地址读取所述页;基于读取页及第一地址生成第二摘要;基于第一摘要与第二摘要的比较确定读取页是否已损坏。

在一个实例中,非临时性计算机存储媒体可用于存储固件127的指令或应用程序控制器152的固件。当指令由计算机131或应用程序控件器152执行时,指令致使相应计算机131或应用程序控制器152执行上文所论述方法中的任一者。

现在在下文描述各种额外非限制性实施例。在一个实施例中,加密散列用于确保控制器与存储器装置之间的正确通信。控制器检测计算系统中何时出现错误,识别错误类型,并采取对策防止传播错误数据。

在一个实施例中,计算系统识别并拦截错误。如果存在错误纠正,应用程序或其它控制器将被告知是否存在错误,以防止将来出现问题或传播错误。在一个实施例中,计算系统具有能力禁用内部错误纠正,且使外部控制器修复错误且将纠正后的数据写回到DRAM。在一个实施例中,外部系统测量错误率且确定ECC是否正纠正错误,以及何时发生纠正。在一个实例中,DRAM具有可纠正页上的一个错误的纠错码(ECC)。错误纠正在内部执行,且不与DRAM外部通信。

在一个实施例中,一种机制用于通知外部控制器主应用程序正在等待含有错误的数据,或主应用程序正在评估可能含有错误的数据(例如,因为错误数超过ECC纠正错误的能力)。如果存在过多错误而使得ECC无法纠正,那么ECC可将更多错误插入到数据中。

如果错误数目超过ECC纠正能力,那么系统可以通过尝试校正已正确的位来添加更多错误。例如,ECC实施方案可检测到两个位错误并纠正一个位错误。如果一页中存在三个错误,那么将不会检测到前两个错误。将检测到第三个错误。例如,ECC算法将尝试纠正第三个错误,并在尝试纠正时引入第四个错误。本文中所描述的各种实施例提供对此问题的解决方案。

在一个实施例中,当内部ECC操作时,管理程序在执行纠正时接收通知。这准许评估发生另一错误的概率,或准许计算修复内部错误的方法。

在一个实施例中,如果禁用内部ECC,那么管理程序可以指导纠正动作。外部控制器可以采取对策,在非易失性存储器的状况下重新写入数据或擦除块,并将其替换为正确的数据。

在一个实施例中,在实时操作(RTO)系统中,在适当位置中执行指令。指令指针从一个位置跳到另一位置,没有时间实施实时纠正。本文中的各种实施例可以提供一种视需要对人工智能系统进行纠正的方法。

例如,在自主驾驶汽车应用程序中,需要及时传达地图错误。例如,如果车辆的传感器检测到道路上有一只猫,但由于未知原因,内部状态机指示其为其它类似人的东西,安全控制器可以告知主控制器存在算法错误,并且算法可以重新运行,或使用另一方法来识别障碍物。

现在论述关于摘要比较的另一实例,将待存储数据的地址与待存储的数据级联且在此级联上运行散列函数。在此实例中,如果数据为4K字节阵列,并且地址为例如256,那么4K字节阵列及地址(256)将均被存储。然后,将4K字节的数据及地址级联,并计算散列函数摘要。散列摘要将存储在例如存储器的备用区域中。在稍后回读数据时,将摘要与数据一起读取。使用从存储装置读取的数据重新计算散列摘要,并且将地址及所计算摘要与从存储装置读取的摘要进行比较。如果两个摘要匹配,那么数据及地址均有效。如果两个摘要不匹配,那么视为存在错误。

在一个实例中,在存储器装置中,DRAM实施方案使用从行地址开始的若干级地址解码作为第一级地址解码。然后,行地址解码与第二级地址解码(列地址解码)组合。然后将所得地址发送到高压地址解码,以存取存储器阵列。此地址还连同待写入到加密算法以计算散列摘要的数据页(以及元数据(如果存在)一起发送。将数据页及元数据写入到存储器阵列,且将所计算散列摘要写入到存储器中用于所述页的备用区域。在一些状况下,每行将存在一个摘要。在其它状况下,由于每行可存在多个页,因此每页最多可存在一个摘要。

在各种实施例中,上述元数据可以包含例如ECC位的数据。ECC可用于纠正单位错误,但通常对检测多位错误没有用处。本实施例中的散列摘要显著提高了系统检测多位错误的能力。

在一个实施例中,如果包含ECC数据,那么在计算散列摘要之前对从存储器读取的数据进行ECC纠正。这确保摘要检测到由于存在比ECC系统可恰当处理的更多位错误(由于功能限制)而引入的任何额外错误。

在一个实施例中,使用散列摘要比较也提供了针对数据总线上引入的任何错误的保护。由于主控制器基于其置于总线上的地址及其接收回的数据计算摘要,因此在数据检索或传输的任何点处引入的任何错误均将改变所计算摘要,此导致检测到错误。

在此描述中,各种功能及操作可被描述为由计算机指令执行或由计算机指令引起,以简化描述。然而,所属领域的技术人员将认识到,此类表达的意思为功能是由一或多个控制器或处理器(例如,微处理器)执行计算机指令而产生。替代地或组合地,可使用具有或不具有软件指令的专用电路系统来实施功能及操作,例如使用专用集成电路(ASIC)或现场可编程门阵列(FPGA)。可使用没有软件指令的硬连线电路系统或结合软件指令来实施实施例。因此,所述技术既不限于硬件电路系统与软件的任何特定组合,也不限于由数据处理系统执行的指令的任何特定源。

虽然一些实施例可在功能齐全的计算机及计算机系统中实施,但各种实施例能够以各种形式作为计算产品分布,且能够应用而无论用于实际实现分布的机器或计算机可读媒体的特定类型如何。

所揭示的至少一些方面可至少部分地体现在软件中。即,所述技术可在计算机系统或其它数据处理系统中响应于其处理器(例如,微处理器或微控制器)执行在存储器(例如,ROM、易失性RAM、非易失性存储器、高速缓冲存储器或远程存储装置)中所含有的指令序列而被实施。

被执行以实施实施例的例程可经实施为操作系统或被称为“计算机程序”的特定应用程序、组件、程序、对象,模块或指令序列的一部分。所述计算机程序通常包括一或多个指令,所述指令是在不同时间设置在计算机中的各种存储器及存储装置中,且所述指令在由计算机中的一或多个处理器读取及执行时致使计算机执行执行涉及各种方面的元素所需的操作。

有形的非暂时性计算机存储媒体可用于存储软件及数据,所述软件及数据在由数据处理系统执行时,致使系统执行各种方法。可执行软件和数据可存储在各种位置中,包含例如ROM、易失性RAM、非易失性存储器及/或高速缓冲存储器。此软件及/或数据的部分可存储在这些存储装置中的任何一个中。此外,数据及指令可从集中式服务器或对等网络获得。可在不同的时间、在不同的通信会话中或在同一通信会话中,从不同的集中式服务器及/或对等网络获得数据及指令的不同部分。可在执行应用程序之前完整获得数据及指令。替代地,可在执行需要时及时地动态获得部分数据及指令。因此,不要求数据及指令在特定时刻全部在机器可读媒体中上。

计算机可读存储媒体的实例包含但不限于可记录和不可记录类型的媒体,例如易失性和非易失性存储装置、只读存储器(ROM)、随机存取存储器(RAM)、快闪存储器装置、软盘和其它可拆卸磁盘、磁盘存储媒体和光学存储媒体(例如,光盘只读存储器(CD ROM),数字多功能磁盘(DVD)等)以及其它媒体。指令可体现在暂时性媒体中,例如电、光、声学或其它形式的传播信号,例如载波、红外线信号、数字信号等。暂时性媒体通常用于传输指令,但不能视为能够存储指令。

在各种实施例中,硬连线电路系统可与软件指令结合使用以实施技术。因此,所述技术既不限于硬件电路系统与软件的任何特定组合,也不限于由数据处理系统执行的指令的任何特定源。

尽管一些图式以特定次序说明多个操作,但不依赖顺序的操作可被重新排序,且其它操作可经组合或分解。虽然具体提到一些重新排序或其它分组,但其它分组对于所属领域普通技术人员而言将为显而易见的,且因此并未呈现替代方案的穷尽列表。此外,应认识到,这些阶段可以硬件、固件、软件或其任何组合来实施。

上文描述及附图为说明性的,且不应解释为限制性的。描述许多具体细节以提供透彻的理解。然而,在某些情况下,为了避免使描述不清楚,没有描述众所周知的或常规的细节。在本发明中对一或多个实施例的引用不一定是对同一实施例的引用;且此类参考文献意指至少一个。

在前述说明书中,已参考本发明的特定示范性实施例描述本发明。将显而易见,在不背离如以下权利要求书中所陈述的较宽广精神及范围的情况下,可对本发明做出各种修改。因此,说明书及图式应考虑说明性而非限制性。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号