首页> 中国专利> 非易失存储设备和访问非易失存储设备的方法

非易失存储设备和访问非易失存储设备的方法

摘要

本发明实施例提出了一种非易失存储设备,该非易失存储设备包括接口模块、控制模块、读缓存和存储芯片,该接口模块用于:接收该主机发送的第一读请求信号,该第一读请求信号包括该存储芯片的地址;当该第一读请求信号请求的读数据没有保存在该读缓存中时,指示该控制模块从该存储芯片中读取该读数据;在所述主机结束当前读操作周期之前,向该主机发送第一中断信号和预定数据,该预定数据用于使该主机结束该读操作周期,该第一中断信号用于指示该主机在该读操作周期之后执行中断处理程序。这样通过发送中断信号,使主机进入中断处理程序等待正确数据,避免了主机获取错误数据后执行后续操作。

著录项

  • 公开/公告号CN105608027A

    专利类型发明专利

  • 公开/公告日2016-05-25

    原文格式PDF

  • 申请/专利权人 华为技术有限公司;

    申请/专利号CN201510963005.9

  • 发明设计人 李延松;

    申请日2015-12-18

  • 分类号G06F13/16(20060101);

  • 代理机构11329 北京龙双利达知识产权代理有限公司;

  • 代理人王君;刘爱平

  • 地址 518129 广东省深圳市龙岗区坂田华为总部办公楼

  • 入库时间 2023-12-18 15:29:29

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-10-19

    授权

    授权

  • 2016-06-22

    实质审查的生效 IPC(主分类):G06F13/16 申请日:20151218

    实质审查的生效

  • 2016-05-25

    公开

    公开

说明书

技术领域

本发明涉及计算机领域,尤其涉及计算机领域中的非易失存储设备和访 问非易失存储设备的方法。

背景技术

随着信息技术的发展,特别是互联网的普及,各种类型的数据量迅速增 长,尤其是视频数据的增多,给现有存储系统带来很大压力,所以迫切需要 大容量、高性能的存储系统来有效保存和快速访问这些数据。

传统的机械硬盘虽然技术成熟、成本低、容量大,但是性能存在瓶颈, 而且功耗较大,已经逐渐让位于固态硬盘。固态硬盘使用半导体非易失存储 器来保存数据,在性能、功耗、可靠性方面具有明显优势。固态硬盘有多种 形态,按照对外接口的不同可分为三类:采用串口硬盘(SerialAdvanced TechnologyAttachment,简称“SATA”)接口或者串行SCSI接口(Serial AttachedSCSI,简称“SAS”,其中,小型计算机系统接口(SmallComputer SystemInterface,简称“SCSI”))的固态硬盘、采用外围设备互连快速通道 (PeripheralComponentInterfaceExpress,简称“PCIe”)接口标准的固态 硬盘以及采用内存接口的固态硬盘。其中,采用内存接口的固态硬盘称为闪 存条。前面两类固态硬盘虽然技术很成熟,但是因为体积较大且存储密度不 高,无法满足日益增长的数据量的存储需求,而且协议开销更大,增加了访 问延时。而闪存条兼容现有的内存控制器和内存条插槽,兼具固态硬盘的大 容量和内存的快速访问特点,因此越来越得到业界的重视。

虽然闪存条具有这些优点,但是仍存在一个问题需要解决。由于内存接 口的速率很高,例如双数据速率3(DoubleDataRate3,简称“DDR3”)内 存接口的等效速率可达1600MHz,带宽为12.8GB/s,而闪存条的存储芯片 读取一个页面的数据需要上百微秒,两者的速率相差很大。内存接口的时序 特点是主机发起的读写操作在一段时间之内就要结束,以读操作为例,主机 发出针对某个目的地址的读操作之后,经过数十纳秒就要开始接收数据,全 部接收完成之后当前访问周期结束。这样,如果主机向闪存条发出读操作, 但闪存条无法按时送出所需的数据,主机就会得到错误的数据。

发明内容

有鉴于此,本发明实施例提供了一种非易失存储设备和访问非易失存储 设备的方法,以解决通过高速内存接口访问低速闪存时主机无法获取正确数 据的问题。

第一方面,提供了一种非易失存储设备,所述非易失存储设备包括接口 模块、控制模块、读缓存和存储芯片,所述接口模块用于:接收所述主机发 送的第一读请求信号,所述第一读请求信号包括所述存储芯片的地址;当所 述数据没有保存在所述读缓存中时,指示所述控制模块从所述存储芯片中读 取所述数据;在所述主机结束当前读操作周期之前,向所述主机发送中断信 号和预定数据,所述预定数据用于使所述主机结束所述读操作周期,所述中 断信号用于指示所述主机在所述读操作周期之后执行中断处理程序。

因此,当主机向非易失存储设备发起读操作,但非易失存储设备不能及 时返回数据时,该非易失存储设备通过发送中断信号使得主机进入中断处理 程序等待正确数据从存储芯片中读出,从而避免了主机获取错误数据之后执 行后续的操作。

结合第一方面,在第一方面的第一种可能的实现方式中,所述控制模块 用于:根据所述接口模块的指示从所述存储芯片中读取所述数据,并将所述 数据存储在所述读缓存中;所述接口模块还用于:在所述主机退出所述中断 处理程序之后,接收所述主机发送的第二读请求信号,所述第二读请求信号 包括所述存储芯片的地址;将所述控制模块存储在所述读缓存中的所述数据 发送至所述主机。

这样,通过在主机进行延时的同时将存储芯片中的数据存储在读缓存 中,避免了主机再次发起重复访问时继续进行延时,提高了读取效率。

第二方面,提供了一种主机,所述非易失存储设备包括接口模块、读缓 存和存储芯片,所述主机包括:发送模块,用于向所述接口模块发送第一读 请求信号,所述第一读请求信号包括所述存储芯片的地址;接收模块,用于 在当前读操作周期完成之前接收所述接口模块发送的中断信号,所述中断信 号表示所述读请求信号所请求的数据没有保存在所述读缓存中;所述接收模 块,还用于接收所述接口模块发送的预定数据;处理模块,用于根据所述接 收模块接收的所述预定数据结束当前读操作周期,并在所述读操作周期完成 之后,根据所述中断信号执行中断处理程序。

因此,当向非易失存储设备发起读操作,但非易失存储设备不能及时返 回数据时,该主机通过接收非易失存储设备发送的中断信号,从而进入中断 处理程序等待正确数据,避免了获取错误数据之后执行后续操作。

结合第二方面,在第二方面的第一种可能的实现方式中,所述发送模块 还用于:在退出所述中断处理程序之后向所述接口模块发送第二读请求信 号;所述接收模块还用于:接收所述接口模块发送的所述数据。

结合第一方面或第一方面的第一种可能的实现方式,或第二方面或第二 方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式和第二 方面的第二种可能的实现方式中,所述第一中断信号和/或所述第二中断信号 用于指示所述主机确定延时时间,以便于所述主机在所述中断处理程序中根 据所述延时时间进行延时。

可选地,所述接口模块包括延时时间寄存器,所述主机根据所述中断信 号的指示从所述延时时间寄存器中获取所述延时时间。

可选地,所述非易失存储设备的集成电路间总线I2C上连接通用输入/ 输出GPIO芯片,所述主机根据所述中断信号的指示根据所述GPIO芯片确 定所述延时时间。

可选地,所述接口模块包括第一状态寄存器,所述主机根据所述中断信 号的指示根据所述第一状态寄存器确定所述延时时间,所述第一状态寄存器 用于指示所述存储芯片的状态。

可选地,所述接口模块包括第一状态寄存器,所述第一状态寄存器用于 指示所述存储芯片的状态,所述非易失存储设备的I2C总线上连接电可擦可 编程只读存储器EEPROM芯片,所述EEPROM芯片用于指示所述状态和所 述延时时间的对应关系,所述主机根据所述中断信号的指示,根据所述第一 状态寄存器和所述EEPROM芯片确定所述延时时间。

可选地,所述存储芯片的状态包括空闲状态、读状态、写状态和擦除状 态。

这样,非易失存储设备通过指示主机根据上述方式确定延时时间,使主 机针对存储芯片的不同工作状态进行不同时间的延时,避免了不必要的延 时,提高了数据读取的效率。

结合第一方面或第一方面的第一种或第二种可能的实现方式,或第二方 面或第二方面的第一种或第二种可能的实现方式,在第一方面的第三种可能 的实现方式和第二方面的第三种可能的实现方式中,所述接口模块包括第二 状态寄存器,所述第二状态寄存器用于指示所述主机根据所述第二状态寄存 器确定在所述中断处理程序进行延时。

可选地,所述非易失存储设备的I2C总线上连接温度传感器,所述接口 模块包括第二状态寄存器,所述主机在所述第二状态寄存器指示所述温度传 感器表示的所述非易失存储设备的温度没有超出门限时,确定在所述中断处 理程序进行延时。

可选地,所述非易失存储设备通过内存接口和所述主机相连,所述接口 模块包括第二状态寄存器,所述主机在所述第二状态寄存器指示所述内存接 口的地址和控制信号校验没有出错时,确定在所述中断处理程序进行延时。

这样,非易失存储设备通过指示主机根据上述方式针对不同的中断原因 进行判断,保证了主机执行中断处理程序的准确性。

可选地,所述预定数据包括能通过所述主机校验的数据和所述能通过所 述主机校验的数据的校验码。

可选地,所述非易失存储设备通过ALERT#管脚或者EVENT#管脚向所 述主机发送所述中断信号。

可选地,所述存储芯片包括闪存芯片或相变存储器或阻变存储器。

结合第二方面或第二方面的第一种至第三种可能的实现方式中的任一 种可能的实现方式,在第二方面的第四种可能的实现方式中,所述主机还包 括设置模块,所述设置模块用于:向所述接口模块发送所述第一读请求信号 之前,设置标识变量为0;执行所述中断处理程序时,设置所述标志变量为 1;退出所述中断处理程序后,判断所述标识变量的取值;当所述标识变量 为0时,指示所述主机继续执行后续指令;当所述标识变量为1时,指示所 述发送模块向所述接口模块发送所述第二读请求信号。

这样,主机通过设置标志变量获知读访问是否正常完成和是否需要再次 发起重复访问,避免了数据出错。

第三方面,提供了一种非易失存储设备,所述非易失存储设备包括接口 模块、控制模块、写缓存和存储芯片,所述接口模块用于:接收所述主机发 送的第一写请求信号和所述第一写请求信号请求写入的数据,所述第一写请 求信号包括所述存储芯片的地址;当所述写缓存中没有多余空间保存所述数 据时,丢弃所述数据,并指示所述控制模块将所述写缓存中的已有数据保存 到所述存储芯片中;在所述主机结束当前写操作周期之前,向所述主机发送 中断信号,所述中断信号用于指示所述主机在当前写操作周期之后执行所述 中断处理程序。

因此,当主机发起写操作但非易失存储设备没有多余空间保存数据时, 该非易失存储设备通过向主机发送中断信号,使得主机进入中断处理程序等 待空间以保存数据,避免了数据丢失。

结合第三方面,在第三方面的第一种可能的实现方式中,所述控制模块 用于:根据所述接口模块的指示将所述写缓存中的已有数据保存到所述存储 芯片中,以使得所述写缓存留出多余空间保存所述数据;所述接口模块还用 于:在所述主机退出所述中断处理程序之后,接收所述主机发送的第二写请 求信号;接收所述主机发送的所述数据,并将所述数据保存在所述写缓存中。

第四方面,提供了一种主机,所述主机包括:发送模块,用于向所述非 易失存储设备发送第一写请求信号;接收模块,用于在当前写操作周期完成 之前,接收所述非易失存储设备发送的中断信号,所述中断信号表示所述非 易失存储设备的写缓存中没有多余空间保存待写入数据;所述发送模块,还 用于向所述非易失存储设备发送所述待写入数据;处理模块,用于根据所述 发送模块发送的所述待写入数据完成当前写操作周期,并在所述写操作周期 完成之后,根据所述中断信号执行中断处理程序。

因此,当向非易失存储设备发起写操作,但非易失存储设备没有多余空 间保存数据时,该主机通过接收非易失存储设备发送的中断信号,进入中断 处理程序等待空间以保存该数据,避免了数据丢失。

结合第四方面,在第四方面的第一种可能的实现方式中,所述发送模块 还用于:在退出所述中断处理程序之后,向所述非易失存储设备发送第二写 请求信号;向所述非易失存储设备发送所述待写入数据,以使得所述待写入 数据保存在所述非易失存储设备的写缓存中。

结合第三方面或第三方面的第一种可能的实现方式,或第四方面或第四 方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式和第四 方面的第二种可能的实现方式中,所述第一中断信号和/或所述第二中断信号 用于指示所述主机确定延时时间,以便于所述主机在所述中断处理程序中根 据所述延时时间进行延时。

可选地,所述接口模块包括延时时间寄存器,所述主机根据所述中断信 号的指示从所述延时时间寄存器中获取所述延时时间。

可选地,所述非易失存储设备的集成电路间总线I2C上连接通用输入/ 输出GPIO芯片,所述主机根据所述中断信号的指示,根据所述GPIO芯片 确定所述延时时间。

可选地,所述接口模块包括第一状态寄存器,所述主机根据所述中断信 号的指示,根据所述第一状态寄存器确定所述延时时间,所述第一状态寄存 器用于指示所述存储芯片的状态。

可选地,所述接口模块包括第一状态寄存器,所述第一状态寄存器用于 指示所述存储芯片的状态,所述非易失存储设备的I2C总线上连接电可擦可 编程只读存储器EEPROM芯片,所述EEPROM芯片用于指示所述状态和所 述延时时间的对应关系,所述主机根据所述中断信号的指示,根据所述第一 状态寄存器和所述EEPROM芯片确定所述延时时间。

可选地,所述存储芯片的状态包括空闲状态、读状态、写状态和擦除状 态。

这样,非易失存储设备通过指示主机根据上述实现方式确定延时时间, 使主机针对存储芯片的不同工作状态进行不同时间的延时,避免了不必要的 延时,提高了数据读取的效率。

结合第三方面或第三方面的第一种或第二种可能的实现方式,或第四方 面或第四方面的第一种或第二种可能的实现方式,在第三方面的第三种可能 的实现方式和第四方面的第三种可能的实现方式中,所述接口模块包括第二 状态寄存器,所述第二状态寄存器用于指示所述主机根据所述第二状态寄存 器确定在所述中断处理程序进行延时。

可选地,所述非易失存储设备的I2C总线上连接温度传感器,所述接口 模块包括第二状态寄存器,所述主机在所述第二状态寄存器指示所述温度传 感器表示的所述非易失存储设备的温度没有超出门限时,确定在所述中断处 理程序进行延时。

可选地,所述非易失存储设备通过内存接口和所述主机相连,所述接口 模块包括第二状态寄存器,所述主机在所述第二状态寄存器指示所述内存接 口的地址和控制信号校验没有出错时,确定在所述中断处理程序进行延时。

这样,非易失存储设备通过指示主机根据上述实现方式,针对不同的中 断原因进行判断,保证了主机执行中断处理程序的准确性。

可选地,所述主机接收所述非易失存储设备通过ALERT#管脚或者 EVENT#管脚发送的所述中断信号。

可选地,所述存储芯片包括闪存芯片或相变存储器或阻变存储器。

结合第四方面或第四方面的第一种至第三种可能的实现方式中的任一 种可能的实现方式,在第四方面的第四种可能的实现方式中,所述主机还包 括设置模块,所述设置模块用于:向所述接口模块发送所述第一写请求信号 之前,设置标识变量为0;执行所述中断处理程序时,设置所述标志变量为 1;退出所述中断处理程序后,判断所述标识变量的取值;当所述标识变量 为0时,指示所述主机继续执行后续指令;当所述标识变量为1时,指示所 述发送模块向所述接口模块发送所述第二写请求信号。

这样,主机通过设置标志变量获知写访问是否正常完成和是否需要再次 发起重复访问,避免了数据出错。

第五方面,提供了一种读取非易失存储设备的方法,通过上述第一方面 或第一方面的任一种可能的实现方式中的非易失存储设备实现。

第六方面,提供了一种读取非易失存储设备的方法,通过上述第二方面 或第二方面的任一种可能的实现方式中的主机实现。

第七方面,提供了一种写入非易失存储设备的方法,通过上述第三方面 或第三方面的任一种可能的实现方式中的非易失存储设备实现。

第八方面,提供了一种写入非易失存储设备的方法,通过上述第四方面 或第四方面的任一种可能的实现方式中的主机实现。

第九方面,提供了一种主机,所述主机包括:接收器、发送器、存储器、 处理器和总线系统。其中,所述接收器、所述发送器、所述存储器和所述处 理器通过所述总线系统相连,所述存储器用于存储指令,所述处理器用于执 行所述存储器存储的指令,以控制接收器接收信号,并控制发送器发送信号, 并且当所述处理器执行所述存储器存储的指令时,所述执行使得所述处理器 执行第六方面或第六方面的任一种可能的实现方式中的方法,以及第八方面 或第八方面的任一种可能的实现方式中的方法。

第十方面,提供了一种非易失存储设备,所述非易失存储设备通过内存 接口与主机连接,所述非易失存储设备包括接口模块、控制模块、读缓存、 写缓存和存储芯片,所述非易失存储设备用于执行所述第五方面的任一种可 能的实现方式的方法,以及所述第七方面的任一种可能的实现方式的方法。

这样,由于并没有采用现有技术中返回错误数据的方式构造中断,而是 通过向主机发送中断信号构造中断,因此,能够同时适用于读和写两种情况。

第十一方面,提供了一种计算机可读介质,用于存储计算机程序,该计 算机程序包括用于执行第六方面或第六方面的任一种可能的实现方式,以及 第八方面或第八方面的任一种可能的实现方式中的方法的指令。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中 所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的 前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例的一种应用场景的示意图;

图2是现有技术的闪存条的结构图;

图3是本发明一个实施例的非易失存储设备的结构图;

图4是本发明一个实施例的读取非易失存储设备的方法的流程交互图;

图5是本发明一个实施例的写入非易失存储设备的方法的流程交互图;

图6是本发明一个实施例的主机的结构图;

图7是本发明一个实施例的主机的结构图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行 清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不 是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创 造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。

应理解,本发明实施例中的描述的非易失存储设备的存储芯片可以包括 闪存芯片,也可以包括其他存储装置,例如相变存储器(PhaseChangeRandom AccessMemory,简称“PCRAM”)、阻变存储器(ResistiveRandomAccess Memory,简称“ReRAM”)等。

图1示出了本发明实施例的一种应用场景的示意性架构图。如图1所示, 使用固态硬盘的计算机系统可以包括:非易失存储设备10、主机20、内存 接口30、内存条40、桥片50、基本输入输出系统(BasicInputOutputSystem, 简称“BIOS”)60、网卡70。该计算机系统中,主机20通过内存接口30可 以访问内存条40或非易失存储设备10,该内存接口30可以是双数据速率2 (DoubleDataRate2,简称“DDR2”)、双数据速率3(DoubleDataRate3, 简称“DDR3”)或者双数据速率4(DoubleDataRate4,简称“DDR4”)等 标准接口。桥片50连接BIOS60,主机20和桥片50可以提供PCIe接口, 用于连接PCIe固态硬盘,桥片50可以提供串口硬盘(SerialAdvanced TechnologyAttachment,简称“SATA”)接口,用于连接SATA固态硬盘。

图2是现有技术的闪存条80的结构图。图2中示出了内存接口30和闪 存条80,闪存条80包括闪存控制器81、读缓存82和闪存芯片83。闪存控 制器81通过内存接口30与主机20连接,并且与闪存芯片83相连,闪存控 制器81还连接了一个读缓存82,该读缓存82可以由双倍速率同步动态随机 存储器(DoubleDataRate,简称“DDR”)实现,它的速度与内存接口相当, 可以在内存接口30要求的时间内送出主机20需要读取的数据。

当主机20对闪存条80发起读访问时,如果主机20请求读取的数据已 经保存在读缓存82中,则闪存控制器81从读缓存82中取出该数据返回给 该主机20,读缓存82的读取速度很快,可以和内存接口30的速度匹配,故 一定会按时送出,随后当前读访问周期结束,该读访问周期包括:从主机20 发送读请求信号开始,到接收完毕闪存条80发送的数据,所述内存接口30 恢复空闲状态为止。

如果主机请求读取的数据不在读缓存82中,那么闪存控制器81需要从 闪存芯片83中读取该数据。由于闪存芯片83的速度较慢,无法按时送出主 机20所需的数据,因此闪存控制器81先送出一个预先构造的不可纠正的含 有错误检查和纠正(ErrorCorrectingCode,简称“ECC”)错误的数据,同 时启动对闪存芯片83的访问,得到该数据后将其保存到读缓存82中。

主机20的内存控制器在收到闪存控制器81发送的该数据后,会对这个 数据进行检查,如果发现存在不可纠正的ECC错误,则向主机20的处理器 内核发出中断命令。由于内存控制器接收的数据是一个预先构造的含有ECC 错误的数据,因此,主机20的内存控制器收到该错误数据后,最终会向处 理器内核发出中断命令,使处理器执行中断处理程序。

主机20在该中断处理程序里面进行一段固定时间的延时,目的是等待 该数据从闪存芯片83中读出来。

当主机20退出该中断处理程序之后,再次向闪存条80发起读操作,这 次该数据已经储存在读缓存82中,于是闪存芯片83可以向主机20送出正 确的数据。

这种方法虽然可以在内存接口和闪存条之间进行数据传输时避免主机 获取错误数据,但是存在以下问题:

首先,内存数据的ECC错误属于严重故障,例如,可以由Linux内核 的异常处理程序来处理,想要区分这种错误是真实的还是人为构造的,就需 要修改Linux内核,所以可能存在不兼容标准版本Linux的风险。

第二,当主机20发起对闪存条80的读操作时,闪存芯片83可能正在 执行写操作或者擦除操作,则此时不能执行该读操作。前者需要数百微秒, 后者需要几个毫秒,这些在闪存芯片的器件资料中都是有明确规定的。现有 技术中只是选择一段固定时间做延时,没有考虑这种差异,所以会增加不必 要的延时。现有技术中会根据最差的情况确定延时时间,例如,选择最耗时 的一个操作(如闪存芯片83正在处于擦除状态),但实际上,可能并不需要 进行这么久的延时,如果闪存芯片83此时正处在空闲状态,则主机20则无 需等待这么久,只需要等待一个很短的时间即可。

第三,这种方式只适用于读操作,无法用于写操作。例如,当该主机20 往闪存条80中写入大量数据时,需要先写入缓存中,如果缓存此时已满, 则不能继续接收该数据,闪存条80就会将主机20发来的数据丢弃,但是主 机20并不知道该数据被丢弃,并且无法使用预先构造ECC错误的数据来触 发延时,因此这种方式只能在读操作时使用。

为此,本发明实施例提出一种非易失存储设备,当主机通过内存接口向 非易失存储设备发起读操作,但非易失存储设备不能及时返回数据时,该非 易失存储设备通过向该主机发送中断信号,避免主机获取错误的数据。

目前常见的处理器都集成了内存控制器,例如x86处理器,可以直接连 接非易失存储设备。为了提高性能和内存容量,通常支持多个内存通道,每 个内存通道又可以支持多个内存条。例如某款x86处理器支持4个内存通道, 每个通道最多支持3个内存条,这样总共可以支持12个内存条。如果每个 内存条的容量是16GB,那么总容量是192GB。

内存条的接口经过多年的发展和更新换代,目前主流的是DDR3接口, 速率可达1600MHz,数据线宽度64位,总带宽为12.8GB/s,而DDR4接口 也正在普及中。以DDR3接口的内存条为例,DDR3接口可以包括以下信号:

101,地址信号A[0:15],用来提供内存芯片地址,例如行地址和列地址。

102,BA[2:0],bank地址,用来选择内存芯片内部的逻辑bank。

103,CK0,CK0#,差分时钟,提供内存芯片访问的时序同步。

104,CKE[0:1],时钟使能信号。

105,ODT[0:1],信号端接使能信号。

106,Par_In,地址信号、写信号WE#、行选通信号RAS#、列选通信号 CAS#的校验位。

107,RAS#、CAS#、WE#,分别是行选通信号、列选通信号和写信号, 用来组合成各种操作命令字。

108,RESET#,复位信号。

109,CS[3:0]#,片选信号。

110,SA[2:0]:用来配置内存条上的电可擦可编程只读存储器(Electrically ErasableProgrammableReadOnlyMemory,简称“EEPROM”)和温度传感 器的集成电路间总线(InterIntegratedCircuit,简称“I2C”)地址。

111,SCL,SDA,I2C总线信号,连接内存条上的EEPROM和温度传 感器。

112,CB[7:0],数据校验信号。

113,DQ[63:0],数据信号。

114,DQS[8:0],DQS[8:0]#,数据选通信号。

115,DM[8:0],数据屏蔽信号。

116,ALERT#管脚发出的信号,低电平表示地址和命令信号校验出错, 即A[0:15]、RAS#,CAS#、WE#、Par_In信号组合的校验出错。

117,EVENT#管脚发出的信号,低电平表示内存条的温度超出了门限。

118,电源信号和地信号,电源信号包括内存芯片的1.5V核心电压,0.75V 的参考电压、0.75V的端接电压和3.3V的EEPROM、温度传感器工作电压。

本发明的非易失存储设备借用了上述的内存条的外形和接口信号,可以 直接插到现有的内存条插座上,计算机系统的硬件不需要任何修改,不需要 额外增加开销。

对于DDR3内存条插槽来说,一共有240个信号触点,但是非易失存储 设备只需要实现部分必备的信号,例如地址信号A[0:15]和BA[2:0],数据信 号DQ[63:0],控制信号CS[3:0]#、RAS#、CAS#和WE#,以及电源信号等, 而有的信号是可选的,例如校验信号CB[7:0]。

图3是本发明实施例的非易失存储设备的结构图。该非易失存储设备可 以采用类似于内存条的双列直插式存储模块(DualInlineMemoryModules, 简称“DIMM”)的外形,可以插入现有的内存条插槽中。该非易失存储设 备10通过内存接口30安装在计算机主机20的内存条插座中,该非易失存 储设备10的所有存储容量映射到主机20的内存空间,主机20可以像访问 内存条40一样访问该非易失存储设备10,所有操作可以按照内存总线接口 的协议进行规范。

图3中示出了内存接口30和非易失存储设备10。非易失存储设备10 包括接口模块11、控制模块12、读缓存13、存储芯片14以及写缓存18。

应理解,该非易失存储设备中可以包括一个存储芯片例如存储芯片14, 也可以包括多个存储芯片,例如存储芯片15、存储芯片16、存储芯片17等 等,本发明对非易失存储设备中的存储芯片的数量不作限定。

读缓存13和写缓存18可以是同一个存储芯片中划分的两个区域,也可 以是两个独立的存储芯片,读写速度与内存总线匹配,可以采用DDR2、 DDR3SDRAM等存储器。在读操作时,接口模块11可以先将数据保存在读 缓存13里面,下次主机再次发出读请求时,接口模块11确认目标地址对应 的数据已经保存在读缓存13中,就可以不必访问存储芯片14,而是直接从 读缓存13里面取出数据发给主机,从而提高了读操作的速度。在写操作时, 主机下发的数据可以先保存在写缓存18中,当前访问周期结束,主机20可 以继续执行其他指令,然后接口模块11再将数据从写缓存18中取出,通过 控制模块12写入存储芯片14,这样可以提高写操作的速度。

控制模块12从接口模块11获取主机下发的读写请求,将目标地址转换 为存储芯片14的物理地址,启动读写操作,还可以将目标地址对应的存储 芯片14的工作状态(例如空闲状态、写状态、擦除状态)发送给接口模块 11,以供主机20读取。此外,控制模块12还具有磨损平衡、坏块管理等功 能,用来提高存储芯片14的寿命。

存储芯片14用于保存数据,为了提高容量和访问速度,一般采用多通 道并行的阵列方式将多个存储芯片连接到控制模块上,可以同时进行读写操 作。可理解,本发明实施例中所述的访问非易失存储芯片既包括读取非易失 存储设备,也包括写入非易失存储设备。图4是本发明实施例的读取该非易 失存储设备10的方法的流程交互图。如图4所示,主机20读取非易失存储 设备10的流程具体包括:

步骤401,主机20向接口模块11发送第一读请求信号。

具体地,当主机20向非易失存储设备10发起读请求操作时,该非易失 存储设备10的接口模块11通过内存接口接收该主机20发送的第一读请求 信号,第一读请求信号包括存储芯片14的地址。接口模块11管理着一份地 址表,其中包括读缓存13中的已有数据所对应的目标地址,如果有数据从 存储芯片14读取出来发送给主机10,可以在读缓存13中做一个备份,同时 刷新这个地址表。

可选地,主机20在向接口模块11发送第一读请求信号之前,设置标识 变量为0。

具体地,主机20发起读访问时,从内存接口时序上看都是成功完成的, 但是它并不知道读出的数据是否正确,所以可以通过设置一个标志变量判断 是否需要重复执行上次的读访问。主机20在发出第一读请求信号之前,可 以设置该标志变量为0。

步骤402,接口模块11判断该地址对应的存储芯片14中的数据是否已 保存在非易失存储设备10的读缓存13中。

如果该数据已经在读缓存13中,则接口模块11直接从读缓存13读取 该数据并通过内存接口30返回给主机。如果该数据不在读缓存13中,则执 行步骤403和步骤404。

步骤403,接口模块11向控制模块12发送指示消息。

具体地,当主机20所请求的数据不在读缓存13中时,接口模块11向 控制模块12发送指示消息,该指示消息指示控制模块12从存储芯片14中 读取该数据。

可选地,接口模块11指示控制模块12从存储芯片14中读取该数据并 将该数据存储在读缓存13中。这样,主机20可以从该读缓存13中读取所 需的该数据。

步骤404,接口模块11向主机20发送中断信号。

具体地,当主机20所请求的数据不在读缓存13中时,接口模块11在 当前读操作周期完成之前向主机20发送中断信号,主机20根据该中断信号 的指示在当前读操作周期结束之后立即进入中断处理程序,并在该中断处理 程序中确定延时时间,从而根据该延时时间进行延时。由于主机20在完成 当前的读操作周期之前接收到了接口模块11发送的中断信号,所以主机20 在完成该读周期之后不会接着执行后面的指令,而是立即响应中断信号进入 中断处理程序。

这样,接口模块11通过发送中断信号使得主机20进入中断处理程序等 待正确数据,从而避免了主机20获取错误数据之后执行后续的操作。

步骤405,接口模块11向主机20发送预定数据。

其中,该预定数据用于使主机20结束当前读操作周期,也就是说,上 述读操作周期包括从主机20发送第一读请求信号开始到主机20接收到接口 模块11发送的该预定数据且内存接口恢复空闲状态为止,该预定数据可以 包括能通过主机20校验的数据和该数据的校验码。

由于主机20在一条指令执行完毕之后才能响应中断信号,故接口模块 11可以向主机20发送一个预定的数据,以使得主机20完成当前的指令,从 而能够响应该中断信号,进入中断处理程序。例如,接口模块11可以在404 之后的一段预设时长内,向主机20发送该预定数据,如果有ECC功能的话 还可以包括正确的ECC校验码,从而使主机20完成当前指令,即结束该读 操作后可以立即进入中断处理程序。主机20在退出中断处理程序后再次发 起重复的读访问,从而可以获取主机20所请求的数据。

接口模块11向主机20发送中断信号的时刻是在当前内存接口30的读 操作周期完成之前,以使得主机20在当前读操作周期完成之后立即进入中 断处理程序,否则主机20会继续执行后面的指令,使用了错误的数据。因 为主机20的处理器在执行某条指令的时候如果发生了中断,它会等到这条 指令执行完毕后再响应中断,也就是跳到中断处理程序中执行,执行完毕该 指令后退出中断,继续执行该指令后面的一条指令。

例如,假设主机20的处理器要执行的代码是:

movax,bx;将bx寄存器的内容拷贝至ax寄存器

addax,2;将ax寄存器的内容加2

如果执行第一条指令的过程中有中断产生,那么主机20继续执行第一 条指令,不会立即响应中断,执行完毕后才响应并进入中断处理程序,从中 断处理程序返回后接着执行第二条指令。第一条指令可以类比为主机20从 非易失存储设备10读取数据,此时非易失存储设备10的内存接口30上存 在着读操作周期,这个周期结束后第一条指令就执行完毕了,主机20接着 执行第二条指令,第二条指令是用这个数据进行运算。如果中断产生的时刻 不合适,例如等到内存接口30上的读操作周期已经完成了才发出中断,此 时处理器已经开始执行第二条指令了,只有等到执行完这条指令才会响应中 断,这样主机20使用的就是错误的数据了。

与内存条类似,非易失存储设备10上面也有一个EEPROM,用于保存 自己所能支持的列地址选通脉冲时间延迟(ColumnAddressStrobeLatency, 简称“CASLatency”)(指示主机20送出地址后等待多长时间开始接收数据, 用于读操作)、突发长度(BurstLength)、内存行地址传输到列地址传输的延 迟时间(行地址选通信号(RowAddressStrobe,简称“RAS”)to列地址 选通信号(ColumnAddressStrobe,简称“CAS”)Delay,简称“tRCD”)(指 示主机20发起写操作后多长时间开始送出数据)等参数,主机20在启动的 时候会通过BIOS读取这些参数并对非易失存储设备10进行配置,于是非易 失存储设备10就能知道读写操作的持续时间,即读写访问周期长度,从而 控制何时发出中断信号。

应理解,当主机20请求的数据没有保存在该读缓存13中时,接口模块 11向控制模块12发送指示消息并向主机20发送中断信号,本发明对步骤 403中“向控制模块12发送指示消息”和步骤404中“向主机20发送中断 信号”的顺序并不作限定。但接口模块11先向控制模块12发送指示消息, 再向该主机20发送中断信号,即先执行步骤403,再执行步骤404,可以使 控制模块12尽快从存储芯片14中读取出该数据。

可选地,接口模块11通过ALERT#管脚或者EVENT#管脚向主机20发 送该中断信号。

步骤406,主机20执行中断处理程序。

具体地,非易失存储设备10向主机20发送中断信号指示主机20执行 中断处理程序,主机20在接收该中断信号后,接收上述预定数据以结束当 前读操作周期,从而立即响应中断信号,执行中断处理程序,并在该中断处 理程序中确定延时时间,进行相应时间的延时以等待正确数据,避免了获取 错误数据后执行后续的处理。主机20在退出中断处理程序后会再次发起重 复的读访问,获取所请求的数据。

主机20发起对非易失存储设备10的读操作时,存储芯片14可能正在 执行读操作、写操作或者擦除操作,此时不能执行该读操作,存储芯片14 也可能正处于空闲状态,可以立即执行该读操作。存储芯片14的器件资料 中有明确规定,对于存储芯片14正处于写操作状态时,结束该状态可能需 要数百微秒,而存储芯片14正处于擦除状态时,完成该状态可能需要几个 毫秒。主机20可以确定一段固定时间作为延时时间,例如可以是最耗时的 操作所对应延时时间。

可选地,主机20可以针对这些不同情况进行有针对性的延时,确定合 适的延时时间。这样,非易失存储设备通过指示主机针对存储芯片的不同工 作状态进行不同时间的延时,使主机避免了不必要的延时,提高了数据读取 的效率。

其中,主机20可以通过以下方式确定中断处理程序的延时时间。

可选地,接口模块11中有延时时间寄存器,主机20从该延时时间寄存 器中获取该延时时间。

具体地,可以在接口模块11中定义一个存储芯片14的延时时间寄存器, 接口模块11自动根据控制模块15发来的存储芯片14的状态信息,确定对 应的延时时间,例如存储芯片14空闲时,延时时间可以设为100微秒;存 储芯片14处于写状态时,延时时间可以设为500+100=600微秒(因为等待 500微秒后写操作结束,还需要100微秒才能读出数据);存储芯片14处于 擦除状态时,延时时间可以设为2+0.1=2.1毫秒(因为等待2毫秒后擦除操 作结束,还需要100微秒才能读出数据)。主机20根据中断信号的指示获取 这些延时时间后直接进行相应时间的延时即可。

可选地,非易失存储设备10的I2C总线上连接有GPIO芯片,主机20 根据该GPIO芯片确定该延时时间。

具体地,非易失存储设备10的I2C总线上可以连接一个GPIO芯片, 这个芯片与接口模块11或控制模块12相连,接口模块11或控制模块12可 以将当前存储芯片14的状态或需要的延时时间传递给GPIO芯片,主机20 在中断处理程序中可以通过I2C总线访问该GPIO芯片,得到存储芯片14 的当前状态或者需要的延时时间。主机20可以获取该延时时间,然后根据 这些延时时间信息进行对应时间的延时;也可以获取存储芯片14的状态信 息,并根据这些状态信息确定需要延时的时间,然后根据确定的延时时间进 行对应时间的延时。考虑到I2C总线的速度较慢,例如频率为400KHz时, 每个时钟周期就有2.5微秒,读取一次数据需要大约36个时钟周期,约90 微秒,主机20的实际延时时间应该减去这段时间。

可选地,接口模块11中有第一状态寄存器,该第一状态寄存器指示了 该存储芯片14的当前状态,主机20根据该第一状态寄存器表示的存储芯片 14的状态,确定该延时时间。

具体地,可以在接口模块11中定义第一状态寄存器,主机20可以在中 断处理程序中通过读取该第一状态寄存器从而确定延时时间,该第一状态寄 存器表示了该存储芯片14的当前状态,该状态可以包括空闲状态、读状态、 写状态和擦除状态。接口模块11在确认读缓存13中没有主机所需的数据时, 将第一读请求消息中的地址发给控制模块12,由于控制模块12具体执行存 储芯片14的读写操作和擦除操作,所以它知道该地址对应的存储芯片14处 于何种状态,于是它将该状态信息发送给接口模块11,接口模块11将这个 信息体现在该第一状态寄存器中。例如可以将该状态信息可以定义为:00 表示存储芯片14空闲,01表示存储芯片14处于写状态,10表示存储芯片 14处于擦除状态,然后主机20根据存储芯片14当前的状态自己确定对应的 延时时间,空闲的延时可以为数十微秒,写操作的延时可以为数百微秒,擦 除操作的延时可以为几个毫秒,最后根据确定好的延时时间启动相应时间的 延时。

可选地,该非易失存储设备的I2C总线上连接有EEPROM芯片,该 EEPROM芯片中储存了存储芯片14的状态和该延时时间的对应关系,主机 20根据第一状态寄存器和该EEPROM芯片确定该延时时间。

具体地,非易失存储设备10与主机20之间有一个I2C总线,用来连接 非易失存储设备上的一个EEPROM芯片,该芯片里面保存着非易失存储设 备的一些规格参数,例如可以是接口类型、容量、厂家名称、时序参数等, 可以在该EEPROM芯片中增加新的内容,例如存储芯片14的状态和延时时 间的对应关系。主机20可以从接口模块11中获取存储芯片14的状态信息, 然后在需要延时的时候,根据接口模块中的这些状态信息和EEPROM芯片 中的这些对应关系,进行相应时间的延时。

当主机20进入中断处理程序后,在根据上述确定的延时时间进行相应 延时之前,该方法还可以包括:主机20判断中断产生的来源。

具体地,主机20接收的中断来源可以分为两类,如果是因为地址、命 令信号校验出错或者温度超出门限,则主机上报告警,对于前者一般主机会 重启,对于后者主机会调整系统风扇的转速。如果不属于这两种情况,那么 则为延时请求,主机20可以根据延时时间启动相应时间的延时。主机20判 断接收的该中断信号是否为指示主机20进行延时的中断信号,当主机20确 定接收的中断信号指示其进行延时时,根据接口模块11发送的延时指示信 息确定延时时间,或者根据已经确定好的延时时间进行相应时间的延时。

应注意,如果非易失存储设备10是通过ALERT#管脚发出中断信号的, 则主机20在中断处理程序中,可以判断是内存接口30的地址、控制信号校 验出错,还是非易失存储设备10发出的延时请求中断;如果非易失存储设 备10是通过EVENT#管脚发出中断信号的,则主机20可以判断是温度超出 门限,还是非易失存储设备10发出的延时请求中断。各种中断来源都复用 非易失存储设备10的同一个管脚ALERT#管脚或者EVENT#管脚,所以可 以在中断处理程序里面进行区分和对应处理。如果是内存接口30的地址、 控制信号校验出错或温度超出门限,这些情况属于故障,主机20上报告警。 如果是非易失存储设备10发出的延时请求,则主机20需要在中断处理程序 中进行延时。

这样,主机通过针对不同的中断原因进行判断,保证了执行中断处理程 序的准确性。其中,主机20可以通过以下方式判断中断产生的来源。

可选地,非易失存储设备10的I2C总线上连接有温度传感器,主机20 通过该温度传感器判断中断来源。

具体地,主机20在中断处理程序中可以通过I2C总线读取该温度传感 器,并判断非易失存储设备10的温度是否超出门限,如果温度没有超出门 限,则说明该中断信号是指示主机20进行延时的信号。

可选地,接口模块11包括第二状态寄存器,主机20通过该第二状态寄 存器判断中断来源。

具体地,可以在接口模块11内部定义第二状态寄存器,主机20可以根 据该第二寄存器判断中断信号的来源。该第二状态寄存器可以包括3个比特 位,有效值为1,可以用第一位表示温度是否超出门限,用第二位表示地址 和控制信号校验是否出错,用第三位表示能否在当前总线周期内返回所需的 数据,即是否需要做延时。主机20直接读取这个状态寄存器,就可以根据 该第二状态寄存器确定是否需要进行该延时。该第二寄存器也可以包括2个 比特位,分别表示温度是否超出门限以及地址和控制信号校验是否出错,主 机20读取这个状态寄存器,当温度没有超出门限且地址和控制信号校验没 有出错时,就可以确定需要在中断处理程序中进行延时。对于该第二寄存器 每个比特位具体所表示的含义,本发明不作限定,例如也可以是用第一位表 示地址和控制信号校验是否出错,第二位表示温度是否超出门限。

当主机对中断来源进行判断,确定了从接口模块11接收的中断信号是 指示主机20在中断处理程序中进行延时的中断信号后,主机20根据接口模 块11发送的延时指示信息确定延时时间,或者根据已经确定好的延时时间 启动相应时间的延时。

可选地,该读取非易失存储设备10的方法还包括:主机20在中断处理 程序中根据中断信号的指示进行延时时,设置上述标志变量为1;主机20 在退出该中断处理程序后,判断上述标识变量的取值;当该标识变量为0时, 主机20继续执行后续指令;当该标识变量为1时,主机20向接口模块11 发送相同的读请求信号。

具体地,在中断处理程序中,主机20可以将在向接口模块11发送第一 读请求信号之前设置成0的标识变量重新设置为1,用来表示主机20所请求 的数据没有在读缓存13中因此进入了中断处理程序。

主机20在接收到非易失存储设备10发送的数据后,并不知道该数据是 主机20所请求的数据,还是接口模块11发送的预定数据,或者是其他数据, 所以要判断该标志变量的取值。主机20在退出该中断处理程序后,判断该 标识变量的值,如果该标志变量是1,则说明主机刚刚经历中断处理程序, 所接收的数据可能是接口模块11发送的预定数据,那么主机20可以在中断 处理程序结束后,向非易失存储设备10重复发出相同的读请求,即执行409, 请求获取所需要的数据;如果该标志变量是0,则说明主机20获取的数据是 其所请求的数据,可以继续执行后面的指令。

因此,本发明实施例的读取非易失存储设备的方法,通过设置标志变量 获知读访问是否正常完成和是否需要再次发起重复访问,避免了数据出错。

与步骤406同时,非易失存储设备10可以执行步骤407和步骤408。

步骤407,控制模块12从存储芯片14中读取该数据。

具体地,主机20在中断处理程序里面进行一段固定时间的延时,目的 是等待所请求的数据从该存储芯片14中读出来。例如,控制模块12可以 与406同时地,根据接口模块11的指示从存储芯片14中读取主机20所请 求的数据。存储芯片14具有自己的芯片地址,主机20向非易失存储设备 10的接口模块11发送的读请求信号中包括存储芯片14的地址,从而控制 模块12可以根据该地址从存储芯片14中读取主机20所请求的数据。

步骤408,控制模块12将从存储芯片14中读取的该数据存储在读缓存 13中。

具体地,主机20在进行中断处理程序时,非易失存储设备10可以同时 准备待读取的数据,控制模块12在从存储芯片14中读取该数据后,可以将 该数据存储在读缓存13中,这样,当主机20再次发起重复访问时,需要读 取的数据已经在缓存13中准备好了,就不用再继续延时了。

因此,本发明实施例的读取非易失存储设备的方法,通过在主机进行延 时的同时将存储芯片中的数据存储在读缓存中,避免了主机再次发起重复访 问时继续进行延时,提高了读取效率。

步骤409,主机20向接口模块11发送第二读请求信号。

具体地,主机20完成第一读请求信号的读操作周期后,执行中断处理 程序,主机20在该中断处理程序中进行延时是为了使控制模块12在该时间 内从存储芯片14中读取主机20所请求的数据。主机20获取的该延时时间 可以是非易失存储设备10根据存储芯片14当前的状态和其数据处理速度确 定的。因此,主机20在退出中断处理程序后需要再次向非易失存储设备10 发起相同的读请求操作,以获取所请求的正确的数据。

主机20向接口模块11发送第二读请求信号是为了获取411中接口模块 11发送的数据,该第二读请求信号包括存储芯片14的地址。

应注意,该第二读请求信号和步骤401中主机20发送的第一读请求信 号所请求的是同样的数据。

可理解,接口模块11在接收到主机20发送的第二读请求信号后,可以 判断第二读请求信号所请求的数据是否已经保存在读缓存13中,如果该数 据已经在读缓存13中,则接口模块11直接从读缓存13读取该数据并通过 内存接口30返回给主机;如果因为某种原因,例如延时时间不足等,控制 模块12还没有来得及从存储芯片14中读取完该数据,则第二读请求信号所 请求的数据不在读缓存13中,这时接口模块11可以指示主机20重复执行 上述步骤,直至控制模块12从存储芯片14中读取完毕该数据。

步骤410,读缓存13向接口模块11发送主机20所请求的数据。

具体地,接口模块11接收主机20发送的第二读请求信号后,由于控制 模块12已将从存储芯片14中读取的该数据存储在读缓存13中,读缓存13 可以将保存的该数据发送给接口模块11,以使得接口模块11可以向主机20 返回该数据。

步骤411,接口模块11向主机20发送该数据。

具体地,当主机20通过向接口模块11发送第二读请求信号请求该数据 时,接口模块11将控制模块12读取并保存在读缓存13中的数据通过内存 接口30发送至主机20。

因此,本发明实施例的读取非易失存储设备的方法,当主机通过内存接 口向非易失存储设备发起读操作,但非易失存储设备不能及时返回数据时, 非易失存储设备通过向主机发送中断信号,使得主机进入中断处理程序等待 正确数据,避免了主机获取错误数据之后执行后续处理。

图5是本发明实施例的写入非易失存储设备10的方法的流程交互图。 如图5所示,主机20写入该非易失存储设备10的流程具体包括:

步骤501,主机20向接口模块11发送第一写请求信号。

具体地,当主机20向非易失存储设备10发起写操作请求写入数据时, 该非易失存储设备10的接口模块11通过内存接口接收该主机20发送的第 一写请求信号。

可选地,主机20在向接口模块11发送第一写请求信号之前,设置标识 变量为0。

具体地,主机20发起写访问时,从内存接口时序上看都是成功完成的, 但是它并不知道写入的数据是否被非易失存储设备10保存,所以可以通过 设置一个标志变量判断是否需要重复执行上次的写访问。主机20在发出第 一写请求信号之前,可以设置该标志变量为0。

步骤502,接口模块11判断写缓存18中是否有多余空间保存待写入数 据。

当主机20对非易失存储设备10发起写操作时,由于非易失存储设备10 来不及将主机20请求写入的数据及时写入存储芯片14,一般会先将该待写 入数据保存到非易失存储设备10的写缓存18中,以后再将该数据写入存储 芯片14。但是当待写入的数据量很大时,写缓存18可能没有多余的空间保 存从内存接口30收到的数据,这时,和读操作类似,也需要采取延时策略。

非易失存储设备10的接口模块11从内存接口30收到主机20发来的有 效的写信号后,确认当前是写操作,判断写缓存18中是否有多余空间保存 待写入数据。如果写缓存18中有多余空间保存待写入数据,则将待写入数 据保存到非易失存储设备10的写缓存18中;如果写缓存的空间不足,无法 保存待写入的数据,则接口模块11将该数据丢弃,并执行步骤503和步骤 504。

步骤503,接口模块11向控制模块12发送指示消息。

具体地,当写缓存18中没有多余的空间保存主机请求写入的数据,接 口模块11向控制模块12发送指示消息,以指示控制模块12将写缓存18当 前保存的数据存储到存储芯片14中,从而留出多余的空间保存该待写入数 据。

步骤504,接口模块11向主机20发送中断信号。

具体地,当写缓存18中没有多余的空间保存主机20请求写入的数据时, 接口模块11在当前写操作周期完成之前向主机20发送中断信号,主机20 根据该中断信号的指示在当前写操作周期结束之后立即进入中断处理程序, 并在该中断处理程序中确定延时时间,从而根据该延时时间进行延时。由于 主机20在完成当前的写操作周期之前接收到了接口模块11发送的中断信 号,所以主机20在完成该写周期之后不会接着执行后面的指令,而是立即 响应中断信号进入中断处理程序。

这样,接口模块11通过发送中断信号使得主机20进入中断处理程序等 待写缓存18留出空间以保存该待写入数据,从而避免了数据丢失。

步骤505,主机20向接口模块11发送请求写入的数据。

其中,当主机20向接口模块11发送完毕全部的待写入数据,内存接口 30回到空闲状态后,主机完成当前写请求周期,也就是说,上述写操作周期 包括从主机20发送第一写请求信号开始到接口模块11接收到主机20发送 的全部待写入数据且内存接口恢复空闲状态为止。

由于主机20在一条指令执行完毕之后才能响应中断信号,故主机20将 全部待写入数据发送给接口模块11,以使得主机20完成当前的指令,从而 能够响应该中断信号,进入中断处理程序。例如,主机20可以在504之后 的一段预设时长内,向接口模块11发送该待写入数据,从而在接口模块11 接收该数据后,主机20完成当前指令,即结束该写操作。之后,主机20可 以立即进入中断处理程序。主机20在退出中断处理程序后再次发起重复的 写访问,从而可以将请求写入的数据保存到非易失存储设备10中。

接口模块11向主机20发送中断信号的时刻是在当前内存接口30的写 操作周期完成之前,以使得主机20在当前写操作周期完成之后立即进入中 断处理程序,否则主机20会继续执行后面的指令,造成数据丢失。因为主 机20的处理器在执行某条指令的时候如果发生了中断,它会等到这条指令 执行完毕后再响应中断,也就是跳到中断处理程序中执行,执行完毕该指令 后退出中断,继续执行该指令后面的一条指令。

例如,如果执行第一条指令的过程中有中断产生,那么主机20继续执 行第一条指令,不会立即响应中断,执行完毕后才响应并进入中断处理程序, 从中断处理程序返回后接着执行第二条指令。第一条指令可以类比为主机20 向非易失存储设备10写入数据,此时非易失存储设备10的内存接口30上 存在着写操作周期,这个周期结束后第一条指令就执行完毕了,主机20接 着执行第二条指令。如果中断产生的时刻不合适,例如等到内存接口30上 的写操作周期已经完成了才发出中断,此时处理器已经开始执行第二条指令 了,只有等到执行完这条指令才会响应中断。这样主机20写入的数据就会 因写缓存18中没有多余空间保存而被丢弃,但主机20自己并不知道。

应理解,当写缓存18没有多余空间保存主机20请求写入的数据时,接 口模块11向控制模块12发送指示消息并向主机20发送中断信号,本发明 对步骤503中“向控制模块12发送指示消息”和步骤504中“向主机20发 送中断信号”的顺序并不作限定。但接口模块11先向控制模块12发送指示 消息,再向该主机20发送中断信号,即先执行步骤503,再执行步骤504, 可以使控制模块12尽快将写缓存18中的已有数据存储到存储芯片14中。

可选地,接口模块11通过非易失存储设备10的ALERT#管脚或者 EVENT#管脚向主机20发送该中断信号。

步骤506,主机20执行中断处理程序。

具体地,非易失存储设备10向主机20发送中断信号指示主机20执行 中断处理程序,主机20向接口模块11发送完毕所有的待写入数据以结束当 前写操作周期,之后立即响应中断信号,执行中断处理程序,并在该中断处 理程序中确定延时时间,进行相应时间的延时,以等待写缓存18为主机20 留出多余的空间保存其请求写入的数据,避免了数据被丢弃。主机20在退 出中断处理程序后会再次发起重复的写访问,请求向非易失存储设备10写 入数据。

和读操作相似,主机20发起对非易失存储设备10的写操作时,存储芯 片14可能正在执行读操作、写操作或者擦除操作,此时不能执行写操作, 存储芯片14也可能正处于空闲状态,可以立即执行写操作。存储芯片14的 器件资料中有明确规定,对于存储芯片14正处于写操作状态时,结束该状 态可能需要数百微秒,而存储芯片14正处于擦除状态时,完成该状态可能 需要几个毫秒。主机20可以确定一段固定时间作为延时时间,例如可以是 最耗时的操作所对应延时时间。

可选地,主机20可以针对这些不同情况进行有针对性的延时,确定合 适的延时时间。这样,非易失存储设备通过指示主机针对存储芯片的不同工 作状态进行不同时间的延时,使主机避免了不必要的延时,提高了数据写入 的效率。

可理解,主机20确定中断处理程序的延时时间所使用的方法,可以参 见前述图4中描述的主机20确定延时时间的各个方式,为了简洁,这里不 再赘述。

当主机20进入中断处理程序后,在根据该延时时间进行延时之前,还 可以包括:主机20判断中断产生的来源。

具体地,主机20接收的中断来源可以分为两类,如果是因为地址、命 令信号校验出错或者温度超出门限,则主机上报告警,对于前者一般主机会 重启,对于后者主机会调整系统风扇的转速。如果不属于这两种情况,那么 则为延时请求,主机20可以根据延时时间启动相应时间的延时。主机20判 断接收的该中断信号是否为指示主机20进行延时的中断信号,当主机20确 定接收的中断信号指示其进行延时时,根据接口模块11发送的延时指示信 息确定延时时间,或者根据已经确定好的延时时间进行相应时间的延时。

应注意,如果非易失存储设备10是通过ALERT#管脚发出中断信号的, 则主机20在中断处理程序中,可以判断是内存接口30的地址、控制信号校 验出错,还是非易失存储设备10发出的延时请求中断;如果非易失存储设 备10通过EVENT#管脚发出中断信号的,则主机20可以判断是温度超出门 限,还是非易失存储设备10发出的延时请求中断。各种中断来源都复用非 易失存储设备10的同一个管脚ALERT#或EVENT#,所以可以在中断处理 程序里面进行区分和对应处理。如果是内存接口30的地址、控制信号校验 出错或温度超出门限,这些情况属于故障,主机20上报告警。如果是非易 失存储设备10发出的延时请求,则主机20需要在中断处理程序中进行延时。

这样,主机20通过针对不同的中断原因进行判断,保证了执行中断处 理程序的准确性。

可理解,主机20判断中断来源的方法,可以参见前述图4中描述的主 机20判断中断来源的各个方法,为了简洁,这里不再赘述。

当主机对中断来源进行判断,确定了从接口模块11接收的中断信号是 指示主机20在中断处理程序中进行延时的中断信号后,主机20根据接口模 块11发送的延时指示信息确定延时时间,或者根据已经确定好的延时时间 启动相应时间的延时。

可选地,该写入非易失存储设备的方法还包括:主机20在中断处理程 序中根据中断信号的指示进行延时时,设置上述标志变量为1;主机20在退 出该中断处理程序后,判断上述标识变量的取值;当该标识变量为0时,主 机20继续执行后续指令;当该标识变量为1时,主机20向接口模块11发 送相同的写请求信号。

具体地,在中断处理程序中,主机20可以将在向接口模块11发送第一 写请求信号之前设置成0的标识变量重新设置为1,用来表示非易失存储设 备10的写缓存18中没有多余的空间保存待写入数据因此进入了中断处理程 序。

主机20在向非易失存储设备10写入数据后,并不知道该数据是被保存 到了非易失存储设备10的写缓存18中,还是被接口模块11丢弃了,所以 要判断该标志变量的取值。主机20在退出该中断处理程序后,判断该标识 变量的值,如果该标志变量是1,则说明主机刚刚经历中断处理程序,所写 入的数据可能被接口模块11丢弃了,那么主机20可以在中断处理程序结束 后,向非易失存储设备10重复发出相同的写请求,即执行步骤408,请求写 入数据;如果该标志变量是0,则说明主机20写的数据已被保存到了非易失 存储设备10的写缓存18中,可以继续执行后面的指令。因此,本发明实施 例的写入非易失存储设备的方法,通过设置标志变量获知写访问是否正常完 成和是否需要再次发起重复访问,避免了数据出错。

与步骤506同时,非易失存储设备10可以执行步骤507。

步骤507,控制模块12将写缓存18中的数据存储到存储芯片14中。

具体地,主机20在中断处理程序里面进行一段固定时间的延时,目的 是等待写缓存18将其中已保存的数据转移到存储芯片14中,从而可以留 出空间保存主机20发送的待写入数据。例如,控制模块12可以与步骤506 同时地,根据接口模块11的指示将写缓存18中的数据存储在存储芯片14 中。

步骤508,主机20向接口模块11发送第二写请求信号。

具体地,主机20完成第一写请求信号的写操作周期后,执行中断处理 程序,主机20在该中断处理程序中进行延时是为了使控制模块12在该时间 内将写缓存18中的数据储存在存储芯片14中,从而留出写缓存18的空间。 主机20获取的该延时时间可以是非易失存储设备10根据存储芯片14当前 的状态和其数据处理速度确定的。因此,主机20在退出中断处理程序后需 要再次向非易失存储设备10发起相同的写请求操作,将写入的数据保存在 写缓存18中。

应注意,该第二写请求信号和步骤501中主机20发送的第一写请求信 号所请求写入的是同样的数据。

可理解,接口模块11在接收到主机20发送的第二写请求信号后,可以 判断写缓存18中是否有多余空间保存待写入数据,如果写缓存18中有多余 空间保存待写入数据,则接口模块11将该待写入数据保存到非易失存储设 备10的写缓存18中;如果因为某种原因,例如延时时间不足等,写缓存14 中的数据还没有完全转移到存储芯片14中,写缓存14的剩余空间仍不足以 保存主机20发送的待写入数据,这时接口模块11可以指示主机20重复执 行上述步骤,直至写缓存18有多余的空间保存主机20请求写入的数据。

步骤509,主机20向接口模块11发送待写入数据。

具体地,接口模块11接收主机20发送的第二写请求信号后,由于写缓 存18中的数据已经存储到存储芯片14中,写缓存18中就可以有多余的空 间保存第二写请求信号请求写入的数据。

步骤510,接口模块11将从主机20接收的待写入数据保存在写缓存18 中。

因此,本发明实施例的写入非易失存储设备的方法,当主机通过内存接 口向非易失存储设备发起写操作,但非易失存储设备没有多余空间保存数据 时,该非易失存储设备通过向主机发送中断信号,使得主机进入中断处理程 序等待空间以保存该数据,避免了数据丢失。

而且,由于并没有采用现有技术中返回错误数据的方式构造中断,而是 通过向主机发送中断信号构造中断,因此,能够同时适用于读和写两种情况。

应理解,上述各过程的序号的大小并不意味着执行顺序的先后,各过程 的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程 构成任何限定。

图3是本发明实施例的非易失存储设备10的结构图。非易失存储设备 10可以同时适用于读操作和写操作,如图3所示,非易失存储设备10通过 内存接口30与主机20连接。该存储芯片14用于存储数据,当主机20通过 内存接口30读取非易失存储设备10中的数据时,该接口模块11用于:

接收主机20发送的第一读请求信号,该第一读请求信号包括存储芯片 14的地址。

当该第一读请求信号请求的数据没有保存在读缓存13中时,指示控制 模块12从存储芯片14中读取该数据。

在主机20结束当前读操作周期之前,向主机20发送中断信号和预定数 据,该预定数据用于指示主机20结束当前读操作周期,该第一中断信号用 于指示主机20在该读操作周期之后执行中断处理程序。

因此,本发明实施例的非易失存储设备,当接收到主机通过内存接口发 起读操作,但非易失存储设备不能及时返回数据时,该非易失存储设备通过 向该主机发送中断信号使得主机进入中断处理程序等待正确数据,避免了主 机获取错误数据之后执行后续指令。

可选地,作为另一个实施例,控制模块12用于:根据接口模块11的指 示从存储芯片14中读取该数据,并将该数据存储在该读缓存中。

接口模块11还用于:在主机20退出该中断处理程序之后,接收主机20 发送的第二读请求信号,该第二读请求信号包括存储芯片14的地址;将控 制模块12存储在读缓存13中的该数据发送至主机20。

因此,本发明实施例的非易失存储设备,通过在主机进行延时的同时将 存储芯片中的数据存储在读缓存中,避免了主机再次发起重复访问时继续进 行延时,提高了读取效率。

可选地,该中断信号用于指示主机20确定延时时间,以便于主机20在 该中断处理程序中根据该延时时间进行延时。

具体地,主机20发起对非易失存储设备10的读操作时,存储芯片14 可能正处于其他操作状态,此时不能执行该读操作,存储芯片14也可能正 处于空闲状态,可以立即执行该读操作。存储芯片14结束不同状态需要的 时间各不相同,故主机20可以针对存储芯片14处于不同状态的情况进行有 针对性的延时,确定合适的延时时间。

这样,通过指示主机20针对存储芯片14的不同工作状态进行不同时间 的延时,使主机20避免了不必要的延时,提高了数据读取的效率。

可选地,作为另一个实施例,接口模块11包括延时时间寄存器,该中 断信号用于指示主机20从该延时时间寄存器中获取延时时间。

可选地,作为另一个实施例,非易失存储设备10的集成电路间总线I2C 上连接通用输入/输出GPIO芯片,该中断信号用于指示主机20根据该GPIO 芯片确定该延时时间。

可选地,作为另一个实施例,接口模块11包括第一状态寄存器,该中 断信号用于指示主机20根据该第一状态寄存器确定该延时时间,该第一状 态寄存器用于指示存储芯片14的状态。

可选地,作为另一个实施例,接口模块11包括第一状态寄存器,该第 一状态寄存器用于指示存储芯片14的状态,非易失存储设备10的I2C总线 上连接电可擦可编程只读存储器EEPROM芯片,该EEPROM芯片用于指示 该状态和该延时时间的对应关系,该中断信号用于指示主机20根据该第一 状态寄存器和该EEPROM芯片确定该延时时间。

可选地,该存储芯片14的状态包括空闲状态、读状态、写状态和擦除 状态。

在中断处理程序中,主机20在根据延时时间进行延时之前,还可以先 判断中断信号的来源,当主机20确定接收到的中断信号是指示进行延时的 中断信号时,再根据接口模块11发送的延时指示信息确定延时时间,或者 根据已经确定好的延时时间进行相应时间的延时。

这样,非易失存储设备10通过指示主机20针对不同的中断原因进行判 断,保证了主机20执行中断处理程序的准确性。

可选地,作为另一个实施例,接口模块11包括第二状态寄存器,该第 二状态寄存器用于指示主机20根据该第二状态寄存器确定在所述中断处理 程序中进行延时。

可选地,作为另一个实施例,非易失存储设备10的I2C总线上连接温 度传感器,该第二状态寄存器用于指示该温度传感器表示的非易失存储设备 10的温度没有超出门限。

可选地,作为另一个实施例,该第二状态寄存器用于指示内存接口30 的地址和控制信号校验没有出错。

可选地,作为一个实施例,该预定数据包括能通过主机校验的数据及该 数据的校验码。

上面描述了本发明实施例的非易失存储设备10如何实现主机20发起的 读操作,下面描述写操作的情况。当主机20通过内存接口30向非易失存储 设备10中写入数据时,该接口模块11用于:

接收主机20发送的第一写请求信号和该第一写请求信号请求写入的数 据,该第一写请求信号包括存储芯片14的地址。

当写缓存18中没有多余空间保存该待写入数据时,丢弃该数据,并指 示控制模块12将写缓存18中的已有数据保存到存储芯片14中。

在主机20结束当前写操作周期之前,向主机20发送第二中断信号,该 第二中断信号用于指示主机20在当前写操作周期之后执行该中断处理程序。

因此,本发明实施例的写入非易失存储设备的方法,当主机通过内存接 口向非易失存储设备发起写操作,但非易失存储设备没有多余空间保存数据 时,该非易失存储设备通过向主机发送中断信号,使得主机进入中断处理程 序等待空间以保存该数据,避免了数据丢失。

而且,由于并没有采用现有技术中返回错误数据的方式构造中断,而是 通过向主机发送中断信号构造中断,因此,能够同时适用于读和写两种情况。

可选地,作为另一个实施例,控制模块12用于:根据接口模块11的指 示将写缓存18中的该写数据保存到存储芯片14中,以使得写缓存18留出 多余空间保存该数据。

接口模块11还用于:在主机20退出该中断处理程序之后,接收主机20 发送的第二写请求信号;接收主机20发送的该待写入数据,并将该待写入 数据保存在写缓存18中。

可选地,该中断信号用于指示主机20确定延时时间,以便于主机20在 该中断处理程序中根据该延时时间进行延时。

具体地,和读操作类似地,存储芯片14结束当前所处的不同状态需要 的时间各不相同,故非易失存储设备10可以指示主机20可以针对存储芯片 14处于不同状态的情况进行有针对性的延时,确定合适的延时时间。这样, 通过指示主机20针对存储芯片14的不同工作状态进行不同时间的延时,使 主机20避免了不必要的延时,提高了数据读取的效率。

可选地,作为另一个实施例,接口模块11包括延时时间寄存器,所述 中断信号用于指示主机20从该延时时间寄存器中获取该延时时间。

可选地,作为另一个实施例,非易失存储设备10的集成电路间总线I2C 上连接通用输入/输出GPIO芯片,该中断信号用于指示主机20根据该GPIO 芯片确定该延时时间。

可选地,作为另一个实施例,接口模块11包括第一状态寄存器,该中 断信号用于指示主机20根据该第一状态寄存器确定该中断处理程序的延时 时间,该第一状态寄存器用于指示存储芯片14的状态。

可选地,作为另一个实施例,接口模块11包括第一状态寄存器,该第 一状态寄存器用于指示存储芯片14的状态,非易失存储设备10的I2C总线 上连接电可擦可编程只读存储器EEPROM芯片,该EEPROM芯片用于指示 该状态和该延时时间的对应关系,该中断信号用于指示主机20根据该第一 状态寄存器和该EEPROM芯片确定该延时时间。

可选地,该存储芯片14的状态包括空闲状态、读状态、写状态和擦除 状态。

和读操作类似地,主机20在根据延时时间进行延时之前,还可以先判 断中断信号的来源,当主机20确定接收到的中断信号是指示进行延时的中 断信号时,再根据接口模块11发送的延时指示信息确定延时时间,或者根 据已经确定好的延时时间进行相应时间的延时。这样,非易失存储设备10 通过指示主机20针对不同的中断原因进行判断,保证了主机20执行中断处 理程序的准确性。

可选地,作为另一个实施例,接口模块11包括第二状态寄存器,该第 二状态寄存器用于指示主机20根据该第二状态寄存器确定在该中断处理程 序中进行延时。

可选地,作为另一个实施例,非易失存储设备10的I2C总线上连接温 度传感器,该第二状态寄存器用于指示该温度传感器表示的非易失存储设备 10的温度没有超出门限。

可选地,作为另一个实施例,该第二状态寄存器用于指示内存接口30 的地址和控制信号校验没有出错。

在非易失存储设备10进行读操作或者写操作时,可选地,作为一个实 施例,接口模块11是通过非易失存储设备10的ALERT#管脚或者EVENT# 管脚向主机20发送中断信号的。

图6是本发明实施例的主机20的结构图。主机20可以针对非易失存储 设备10同时发起读操作和写操作,非易失存储设备10包括接口模块11、控 制模块12、读缓存13、存储芯片14和写缓存18。如图6所示,主机20包 括接收模块21、发送模块22和处理模块23。当主机20通过内存接口30读 取非易失存储设备10中的数据时:

发送模块21,用于向接口模块11发送第一读请求信号,该第一读请求 信号包括存储芯片14的地址。

接收模块22,用于在当前读操作周期完成之前接收接口模块11发送的 中断信号,该中断信号表示该读请求信号所请求的数据没有保存在读缓存13 中。

接收模块22还用于:接收接口模块11发送的预定数据。

处理模块23,用于根据接收模块11接收的该中断信号,确定延时时间, 并根据该延时时间进行延时。

因此,本发明实施例的主机,当主机通过内存接口向非易失存储设备发 起读操作,但非易失存储设备不能及时返回数据时,主机通过接收非易失存 储设备发送的中断信号,从而进入中断处理程序等待正确数据,避免了获取 错误数据之后执行后续操作。

可选地,作为另一个实施例,发送模块21还用于:在退出该中断处理 程序之后向接口模块11发送第二读请求信号。

接收模块22还用于:接收接口模块11发送的该数据。

主机20发起对非易失存储设备10的读操作时,存储芯片14可能正处 于其他操作状态,此时不能执行该读操作,存储芯片14也可能正处于空闲 状态,可以立即执行该读操作。存储芯片14结束不同状态需要的时间各不 相同,故主机20可以针对存储芯片14处于不同状态的情况进行有针对性的 延时,确定合适的延时时间。这样,主机20通过针对存储芯片14的不同工 作状态进行不同时间的延时,避免了不必要的延时,提高了数据读取的效率。

可选地,作为另一个实施例,处理模块23具体用于:从接口模块11的 延时时间寄存器中获取该中断处理程序的延时时间。

可选地,作为另一个实施例,处理模块23具体用于:根据非易失存储 设备10的集成电路间总线I2C上连接的通用输入/输出GPIO芯片确定该中 断处理程序的延时时间。

可选地,作为另一个实施例,处理模块23具体用于:根据接口模块11 的第一状态寄存器确定该延时时间,该第一状态寄存器用于指示存储芯片14 的状态。

可选地,作为另一个实施例,处理模块23具体用于:根据接口模块11 包括的第一状态寄存器和非易失存储设备10的I2C总线上连接的EEPROM 芯片,确定该中断处理程序的延时时间,该第一状态寄存器用于指示存储芯 片14的状态,该EEPROM芯片用于指示该状态和该延时时间的对应关系。

可选地,存储芯片14的状态包括空闲状态、读状态、写状态和擦除状 态。

在中断处理程序中,主机20在根据延时时间进行延时之前,还可以设 定一个预设条件,当主机20满足该预设条件时,再根据接口模块11发送的 延时指示信息确定延时时间,或者根据已经确定好的延时时间进行相应时间 的延时。这样,通过设定预设条件触发主机20进行延时,保证了主机20执 行中断处理程序的准确性。

可选地,作为另一个实施例,处理模块23具体用于:当满足预设条件 时,确定该中断处理程序的延时时间。

可选地,作为另一个实施例,非易失存储设备10的I2C总线上连接温 度传感器,该预设条件包括:该温度传感器指示内存接口30的温度没有超 出门限。

可选地,作为另一个实施例,接口模块11包括第二状态寄存器,该预 设条件包括:该第二状态寄存器指示该温度传感器表示的内存接口30的温 度没有超出门限。

可选地,作为另一个实施例,接口模块11包括第二状态寄存器,该预 设条件包括:该第二状态寄存器指示内存接口30的地址和控制信号校验没 有出错。

可选地,作为另一个实施例,主机20还包括设置模块24,设置模块24 用于:向所述接口模块发送该第一读请求信号之前,设置标识变量为0;满 足该预设条件时,设置该标志变量为1;主机20退出中断处理程序之后,判 断该标识变量的取值;当该标识变量为0时,指示主机20继续执行后续指 令;当该标识变量为1时,指示发送模块22向接口模块11发送该第二读请 求信号。

因此,本发明实施例的主机,通过设置标志变量获知读访问是否正常完 成和是否需要再次发起重复访问,避免了数据出错。

上面描述了本发明实施例的主机20如何完成读操作,下面描述写操作 的情况。当主机20向非易失存储设备10中写入数据时:

发送模块21,用于向非易失存储设备10发送第一写请求信号。

接收模块22,用于在当前写操作周期完成之前接收非易失存储设备10 发送的中断信号,该中断信号表示非易失存储设备10的写缓存18中没有多 余空间保存待写入数据。

所述发送模块21,还用于向接口模块11发送所述待写入数据。

处理模块23,用于根据发送模块21发送的待写入数据完成当前写操作 周期,并在该写操作周期完成之后,根据该中断信号的指示执行中断处理程 序。

因此,本发明实施例的主机,当通过内存接口向非易失存储设备发起写 操作,但非易失存储设备没有多余空间保存数据时,主机通过接收该非易失 存储设备发送的中断信号,进入中断处理程序等待空间以保存该数据,避免 了数据丢失。

而且,由于并没有采用现有技术中返回错误数据的方式构造中断,而是 通过向主机发送中断信号构造中断,因此,能够同时适用于读和写两种情况。

可选地,作为另一个实施例,发送模块21还用于:在退出该中断处理 程序之后向非易失存储设备10发送第二写请求信号;向非易失存储设备10 发送该待写入数据,以使得该待写入数据保存在非易失存储设备10的写缓 存18中。

和读操作类似地,存储芯片14结束当前所处的不同状态需要的时间各 不相同,故主机20可以针对存储芯片14处于不同状态的情况进行有针对性 的延时,确定合适的延时时间。这样,主机20通过针对存储芯片14的不同 工作状态进行不同时间的延时,避免了不必要的延时,提高了数据读取的效 率。

可选地,作为另一个实施例,处理模块23具体用于:从接口模块11的 延时时间寄存器中获取该中断处理程序的延时时间。

可选地,作为另一个实施例,处理模块23具体用于:根据非易失存储 设备10的集成电路间总线I2C上连接的通用输入/输出GPIO芯片确定该中 断处理程序的延时时间。

可选地,作为另一个实施例,处理模块23具体用于:根据接口模块11 的第一状态寄存器确定该延时时间,该第一状态寄存器用于指示存储芯片14 的状态。

可选地,作为另一个实施例,根据接口模块11包括的第一状态寄存器 和非易失存储设备10的I2C总线上连接的电可擦可编程只读存储器 EEPROM芯片,确定该中断处理程序的延时时间,该第一状态寄存器用于 指示存储芯片14的状态,该EEPROM芯片用于指示该状态和该延时时间的 对应关系。

可选地,存储芯片14的状态包括空闲状态、读状态、写状态和擦除状 态。

和读操作类似地,主机20在根据延时时间进行延时之前,还可以先判 断中断信号的来源,当主机20确定接收到的中断信号是指示进行延时的中 断信号时,再根据接口模块11发送的延时指示信息确定延时时间,或者根 据已经确定好的延时时间进行相应时间的延时。这样,主机20通过针对不 同的中断原因进行判断,保证了执行中断处理程序的准确性。

在中断处理程序中,主机20在根据延时时间进行延时之前,还可以设 定一个预设条件,当主机20满足该预设条件时,再根据接口模块11发送的 延时指示信息确定延时时间,或者根据已经确定好的延时时间进行相应时间 的延时。这样,通过设定预设条件触发主机20进行延时,保证了主机20执 行中断处理程序的准确性。

可选地,作为另一个实施例,处理模块23具体用于:当满足预设条件 时,确定该中断处理程序的延时时间。

可选地,作为另一个实施例,非易失存储设备10的I2C总线上连接温 度传感器,该预设条件包括:该温度传感器指示内存接口30的温度没有超 出门限。

可选地,作为另一个实施例,接口模块包11括第二状态寄存器,该预 设条件包括:该第二状态寄存器指示该温度传感器表示的内存接口30的温 度没有超出门限。

可选地,作为另一个实施例,接口模块11包括第二状态寄存器,该预 设条件包括:该第二状态寄存器指示内存接口30的地址和控制信号校验没 有出错。

可选地,作为另一个实施例,主机20还包括设置模块24,设置模块24 用于:向接口模块11发送该第一写请求信号之前,设置标识变量为0;满足 该预设条件时,设置该标志变量为1;主机20退出中断处理程序之后,判断 该标识变量的取值;当该标识变量为0时,指示主机20继续执行后续指令; 当该标识变量为1时,指示发送模块22向接口模块11发送该第二写请求信 号。

因此,本发明实施例的主机,通过设置标志变量获知写访问是否正常完 成和是否需要再次发起重复访问,避免了数据出错。

在非易失存储设备10进行读操作或者写操作时,可选地,作为另一个 实施例,接收模块21是通过接收非易失存储设备10的ALERT#管脚或者 EVENT#管脚发送该中断信号的。

应注意,本发明实施例中,发送模块21可以由发送器实现,接收模块 22可以由接收器实现,处理模块23可以由处理器实现。如图7所示,主机 20可以包括发送器71、接收器72、处理器73和存储器74。其中,存储器 74可以用于存储处理器73执行时的代码等,该处理器73用于执行该存储器 74存储的指令,以控制该接收器72接收信号,并控制该发送器71发送指令。

主机20中的各个组件通过总线系统75耦合在一起,其中总线系统75 除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述 描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对 应过程,在此不再赘述。

应注意,本发明实施例中的处理器可能是一种集成电路芯片,具有信号 的处理能力。在实现过程中,上述各个方法实施例中的各步骤可以通过处理 器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是 通用处理器、数字信号处理器(DigitalSignalProcessor,DSP)、专用集成电 路(ApplicationSpecificIntegratedCircuit,ASIC)、现场可编程门阵列(Field ProgrammableGateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶 体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的 各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以 是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体 现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合 执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读 存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该 存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方 法的步骤。

应注意,本发明实施例中的非易失性存储器可以是只读存储器 (Read-OnlyMemory,ROM)、可编程只读存储器(ProgrammableROM, PROM)、可擦除可编程只读存储器(ErasablePROM,EPROM)、电可擦除 可编程只读存储器(ElectricallyEPROM,EEPROM)或闪存。应注意,本 文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型 的存储器。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各 示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结 合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特 定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方 法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和 方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示 意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可 以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个 系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间 的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合 或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作 为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方, 或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或 者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元 中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一 个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使 用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明 的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部 分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质 中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器, 或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前 述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、 随机存取存储器(RandomAccessMemory,RAM)、磁碟或者光盘等各种可 以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限 于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易 想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围 之内。因此,本发明的保护范围应以权利要求的保护范围为准。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号