CN105608027B - 非易失存储设备和访问非易失存储设备的方法 - Google Patents

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

Info

Publication number
CN105608027B
CN105608027B CN201510963005.9A CN201510963005A CN105608027B CN 105608027 B CN105608027 B CN 105608027B CN 201510963005 A CN201510963005 A CN 201510963005A CN 105608027 B CN105608027 B CN 105608027B
Authority
CN
China
Prior art keywords
host
data
volatile memory
memory apparatus
interface module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201510963005.9A
Other languages
English (en)
Other versions
CN105608027A (zh
Inventor
李延松
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201510963005.9A priority Critical patent/CN105608027B/zh
Publication of CN105608027A publication Critical patent/CN105608027A/zh
Priority to PCT/CN2016/091997 priority patent/WO2017101452A1/zh
Priority to EP16874513.1A priority patent/EP3382564B1/en
Priority to US16/009,562 priority patent/US20180293191A1/en
Application granted granted Critical
Publication of CN105608027B publication Critical patent/CN105608027B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4234Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
    • G06F13/4243Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus with synchronous protocol
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Abstract

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

Description

非易失存储设备和访问非易失存储设备的方法
技术领域
本发明涉及计算机领域,尤其涉及计算机领域中的非易失存储设备和访问非易失存储设备的方法。
背景技术
随着信息技术的发展,特别是互联网的普及,各种类型的数据量迅速增长,尤其是视频数据的增多,给现有存储系统带来很大压力,所以迫切需要大容量、高性能的存储系统来有效保存和快速访问这些数据。
传统的机械硬盘虽然技术成熟、成本低、容量大,但是性能存在瓶颈,而且功耗较大,已经逐渐让位于固态硬盘。固态硬盘使用半导体非易失存储器来保存数据,在性能、功耗、可靠性方面具有明显优势。固态硬盘有多种形态,按照对外接口的不同可分为三类:采用串口硬盘(Serial Advanced Technology Attachment,简称“SATA”)接口或者串行SCSI接口(Serial Attached SCSI,简称“SAS”,其中,小型计算机系统接口(Small ComputerSystem Interface,简称“SCSI”))的固态硬盘、采用外围设备互连快速通道(PeripheralComponent Interface Express,简称“PCIe”)接口标准的固态硬盘以及采用内存接口的固态硬盘。其中,采用内存接口的固态硬盘称为闪存条。前面两类固态硬盘虽然技术很成熟,但是因为体积较大且存储密度不高,无法满足日益增长的数据量的存储需求,而且协议开销更大,增加了访问延时。而闪存条兼容现有的内存控制器和内存条插槽,兼具固态硬盘的大容量和内存的快速访问特点,因此越来越得到业界的重视。
虽然闪存条具有这些优点,但是仍存在一个问题需要解决。由于内存接口的速率很高,例如双数据速率3(Double Data Rate 3,简称“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是本发明一个实施例的主机的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
应理解,本发明实施例中的描述的非易失存储设备的存储芯片可以包括闪存芯片,也可以包括其他存储装置,例如相变存储器(Phase Change Random Access Memory,简称“PCRAM”)、阻变存储器(Resistive Random Access Memory,简称“ReRAM”)等。
图1示出了本发明实施例的一种应用场景的示意性架构图。如图1所示,使用固态硬盘的计算机系统可以包括:非易失存储设备10、主机20、内存接口30、内存条40、桥片50、基本输入输出系统(Basic Input Output System,简称“BIOS”)60、网卡70。该计算机系统中,主机20通过内存接口30可以访问内存条40或非易失存储设备10,该内存接口30可以是双数据速率2(Double Data Rate 2,简称“DDR2”)、双数据速率3(Double Data Rate 3,简称“DDR3”)或者双数据速率4(Double Data Rate 4,简称“DDR4”)等标准接口。桥片50连接BIOS 60,主机20和桥片50可以提供PCIe接口,用于连接PCIe固态硬盘,桥片50可以提供串口硬盘(Serial Advanced Technology Attachment,简称“SATA”)接口,用于连接SATA固态硬盘。
图2是现有技术的闪存条80的结构图。图2中示出了内存接口30和闪存条80,闪存条80包括闪存控制器81、读缓存82和闪存芯片83。闪存控制器81通过内存接口30与主机20连接,并且与闪存芯片83相连,闪存控制器81还连接了一个读缓存82,该读缓存82可以由双倍速率同步动态随机存储器(Double Data Rate,简称“DDR”)实现,它的速度与内存接口相当,可以在内存接口30要求的时间内送出主机20需要读取的数据。
当主机20对闪存条80发起读访问时,如果主机20请求读取的数据已经保存在读缓存82中,则闪存控制器81从读缓存82中取出该数据返回给该主机20,读缓存82的读取速度很快,可以和内存接口30的速度匹配,故一定会按时送出,随后当前读访问周期结束,该读访问周期包括:从主机20发送读请求信号开始,到接收完毕闪存条80发送的数据,所述内存接口30恢复空闲状态为止。
如果主机请求读取的数据不在读缓存82中,那么闪存控制器81需要从闪存芯片83中读取该数据。由于闪存芯片83的速度较慢,无法按时送出主机20所需的数据,因此闪存控制器81先送出一个预先构造的不可纠正的含有错误检查和纠正(Error Correcting Code,简称“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]:用来配置内存条上的电可擦可编程只读存储器(ElectricallyErasable Programmable Read Only Memory,简称“EEPROM”)和温度传感器的集成电路间总线(Inter Integrated Circuit,简称“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是本发明实施例的非易失存储设备的结构图。该非易失存储设备可以采用类似于内存条的双列直插式存储模块(Dual Inline Memory Modules,简称“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、DDR3 SDRAM等存储器。在读操作时,接口模块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的处理器要执行的代码是:
mov ax,bx;将bx寄存器的内容拷贝至ax寄存器
add ax,2;将ax寄存器的内容加2
如果执行第一条指令的过程中有中断产生,那么主机20继续执行第一条指令,不会立即响应中断,执行完毕后才响应并进入中断处理程序,从中断处理程序返回后接着执行第二条指令。第一条指令可以类比为主机20从非易失存储设备10读取数据,此时非易失存储设备10的内存接口30上存在着读操作周期,这个周期结束后第一条指令就执行完毕了,主机20接着执行第二条指令,第二条指令是用这个数据进行运算。如果中断产生的时刻不合适,例如等到内存接口30上的读操作周期已经完成了才发出中断,此时处理器已经开始执行第二条指令了,只有等到执行完这条指令才会响应中断,这样主机20使用的就是错误的数据了。
与内存条类似,非易失存储设备10上面也有一个EEPROM,用于保存自己所能支持的列地址选通脉冲时间延迟(Column Address Strobe Latency,简称“CAS Latency”)(指示主机20送出地址后等待多长时间开始接收数据,用于读操作)、突发长度(BurstLength)、内存行地址传输到列地址传输的延迟时间(行地址选通信号(Row AddressStrobe,简称“RAS”)to列地址选通信号(Column Address Strobe,简称“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除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
应注意,本发明实施例中的处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述各个方法实施例中的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific IntegratedCircuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
应注意,本发明实施例中的非易失性存储器可以是只读存储器(Read-OnlyMemory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (25)

1.一种非易失存储设备,其特征在于,所述非易失存储设备包括接口模块、控制模块、读缓存和存储芯片,所述接口模块用于:
接收主机发送的第一读请求信号,所述第一读请求信号包括所述存储芯片的地址;
当所述第一读请求信号请求的读数据没有保存在所述读缓存中时,指示所述控制模块从所述存储芯片中读取所述读数据;
在所述主机结束当前读操作周期之前,向所述主机发送第一中断信号和预定数据,所述预定数据用于使所述主机结束所述读操作周期,所述第一中断信号用于指示所述主机在所述读操作周期之后执行中断处理程序。
2.如权利要求1所述的非易失存储设备,其特征在于,所述控制模块用于:
根据所述接口模块的指示从所述存储芯片中读取所述读数据,并将所述读数据存储在所述读缓存中;
所述接口模块还用于:
在所述主机退出所述中断处理程序之后,接收所述主机发送的第二读请求信号,所述第二读请求信号包括所述存储芯片的地址;
将所述控制模块存储在所述读缓存中的所述读数据发送至所述主机。
3.如权利要求1或2所述的非易失存储设备,其特征在于,所述非易失存储设备还包括写缓存,所述接口模块还用于:
接收所述主机发送的第一写请求信号和所述第一写请求信号请求写入的写数据,所述第一写请求信号包括所述存储芯片的地址;
当所述写缓存中没有多余空间保存所述写数据时,丢弃所述写数据,并指示所述控制模块将所述写缓存中的已有数据保存到所述存储芯片中;
在所述主机结束当前写操作周期之前,向所述主机发送第二中断信号,所述第二中断信号用于指示所述主机在当前写操作周期之后执行所述中断处理程序。
4.如权利要求3所述的非易失存储设备,其特征在于,所述控制模块还用于:
根据所述接口模块的指示将所述写缓存中的已有数据保存到所述存储芯片中,以使得所述写缓存留出多余空间保存所述写数据;
所述接口模块还用于:
在所述主机退出所述中断处理程序之后,接收所述主机发送的第二写请求信号;
接收所述主机发送的所述写数据,并将所述写数据保存在所述写缓存中。
5.如权利要求3所述的非易失存储设备,其特征在于,所述第一中断信号和/或所述第二中断信号用于指示所述主机确定延时时间,以便于所述主机在所述中断处理程序中根据所述延时时间进行延时。
6.如权利要求5所述的非易失存储设备,其特征在于,所述接口模块包括延时时间寄存器,所述第一中断信号和/或所述第二中断信号用于指示所述主机从所述延时时间寄存器中获取所述延时时间。
7.如权利要求5所述的非易失存储设备,其特征在于,所述非易失存储设备的集成电路间总线I2C上连接通用输入/输出GPIO芯片,所述第一中断信号和/或所述第二中断信号用于指示所述主机根据所述GPIO芯片确定所述延时时间。
8.如权利要求5所述的非易失存储设备,其特征在于,所述接口模块包括第一状态寄存器,所述第一中断信号和/或所述第二中断信号用于指示所述主机根据所述第一状态寄存器确定所述延时时间,所述第一状态寄存器用于指示所述存储芯片的状态。
9.如权利要求5所述的非易失存储设备,其特征在于,所述接口模块包括第一状态寄存器,所述第一状态寄存器用于指示所述存储芯片的状态,所述非易失存储设备的I2C总线上连接电可擦可编程只读存储器EEPROM芯片,所述EEPROM芯片用于指示所述状态和所述延时时间的对应关系,所述第一中断信号和/或所述第二中断信号用于指示所述主机根据所述第一状态寄存器和所述EEPROM芯片确定所述延时时间。
10.如权利要求1,2,4-9中任一项所述的非易失存储设备,其特征在于,所述接口模块包括第二状态寄存器,所述第二状态寄存器用于指示所述主机根据所述第二状态寄存器确定在所述中断处理程序进行延时。
11.如权利要求10所述的非易失存储设备,其特征在于,所述非易失存储设备的I2C总线上连接温度传感器,所述第二状态寄存器用于指示所述温度传感器表示的所述非易失存储设备的温度没有超出门限。
12.如权利要求10所述的非易失存储设备,其特征在于,所述非易失存储设备通过内存接口和所述主机相连接,所述第二状态寄存器用于指示所述内存接口的地址和控制信号校验没有出错。
13.如权利要求1,2,4-9,11,12中任一项所述的非易失存储设备,其特征在于,所述存储芯片包括闪存芯片或相变存储器或阻变存储器。
14.一种访问非易失存储设备的方法,其特征在于,所述非易失存储设备包括接口模块、控制模块、读缓存和存储芯片,所述方法包括:
所述接口模块接收主机发送的第一读请求信号,所述第一读请求信号包括所述存储芯片的地址;
当所述第一读请求信号请求的读数据没有保存在所述读缓存中时,所述接口模块指示所述控制模块从所述存储芯片中读取所述读数据;
所述接口模块在所述主机结束当前读操作周期之前,向所述主机发送第一中断信号和预定数据,所述预定数据用于使所述主机结束当前读操作周期,所述第一中断信号用于指示所述主机在所述读操作周期之后执行中断处理程序。
15.如权利要求14所述的方法,其特征在于,所述方法还包括:
所述控制模块根据所述接口模块的指示从所述存储芯片中读取所述读数据,并将所述读数据存储在所述读缓存中;
所述接口模块在所述主机退出所述中断处理程序之后,接收所述主机发送的第二读请求信号,所述第二读请求信号包括所述存储芯片的地址;
所述接口模块将所述控制模块存储在所述读缓存中的所述读数据发送至所述主机。
16.如权利要求14或15所述的方法,其特征在于,所述非易失存储设备还包括写缓存,所述方法还包括:
所述接口模块接收所述主机发送的第一写请求信号和所述第一写请求信号请求写入的写数据,所述第一写请求信号包括所述存储芯片的地址;
当所述写缓存中没有多余空间保存所述写数据时,所述接口模块将所述写数据丢弃,并指示所述控制模块将所述写缓存中的已有数据保存到所述存储芯片中;
所述接口模块在所述主机结束当前写操作周期之前,向所述主机发送第二中断信号,所述第二中断信号用于指示所述主机在所述写操作周期之后执行所述中断处理程序。
17.如权利要求16所述的方法,其特征在于,所述方法还包括:
所述控制模块根据所述接口模块的指示将所述写缓存中的已有数据保存到所述存储芯片中,以使得所述写缓存留出多余空间保存所述写数据;
所述接口模块在所述主机退出所述中断处理程序之后,接收所述主机发送的第二写请求信号;
所述接口模块接收所述主机发送的所述写数据,并将所述写数据保存在所述写缓存中。
18.如权利要求16所述的方法,其特征在于,所述第一中断信号和/或所述第二中断信号用于指示所述主机确定延时时间,以便于所述主机在所述中断处理程序中根据所述延时时间进行延时。
19.如权利要求18所述的方法,其特征在于,所述接口模块包括延时时间寄存器,所述第一中断信号和/或所述第二中断信号用于指示所述主机从所述延时时间寄存器中获取所述延时时间。
20.如权利要求18所述的方法,其特征在于,所述非易失存储设备的集成电路间总线I2C上连接通用输入/输出GPIO芯片,所述第一中断信号和/或所述第二中断信号用于指示所述主机根据所述GPIO芯片确定所述延时时间。
21.如权利要求18所述的方法,其特征在于,所述接口模块包括第一状态寄存器,所述第一中断信号和/或所述第二中断信号用于指示所述主机根据所述第一状态寄存器确定所述延时时间,所述第一状态寄存器用于指示所述存储芯片的状态。
22.如权利要求18所述的方法,其特征在于,所述接口模块包括第一状态寄存器,所述第一状态寄存器用于指示所述存储芯片的状态,所述非易失存储设备的I2C总线上连接电可擦可编程只读存储器EEPROM芯片,所述EEPROM芯片用于指示所述状态和所述延时时间的对应关系,所述第一中断信号和/或所述第二中断信号用于指示所述主机根据所述第一状态寄存器和所述EEPROM芯片确定所述延时时间。
23.如权利要求14,15,17-22中任一项所述的方法,其特征在于,所述接口模块包括第二状态寄存器,所述第二状态寄存器用于指示所述主机根据所述第二状态寄存器确定在所述中断处理程序进行延时。
24.如权利要求23所述的方法,其特征在于,所述非易失存储设备的I2C总线上连接温度传感器,所述第二状态寄存器用于指示所述温度传感器表示的所述非易失存储设备的温度没有超出门限。
25.如权利要求23所述的方法,其特征在于,所述非易失存储设备通过内存接口和所述主机相连接,所述第二状态寄存器用于指示所述内存接口的地址和控制信号校验没有出错。
CN201510963005.9A 2015-12-18 2015-12-18 非易失存储设备和访问非易失存储设备的方法 Active CN105608027B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201510963005.9A CN105608027B (zh) 2015-12-18 2015-12-18 非易失存储设备和访问非易失存储设备的方法
PCT/CN2016/091997 WO2017101452A1 (zh) 2015-12-18 2016-07-28 非易失存储设备和访问非易失存储设备的方法
EP16874513.1A EP3382564B1 (en) 2015-12-18 2016-07-28 Non-volatile storage device and method for accessing non-volatile storage device
US16/009,562 US20180293191A1 (en) 2015-12-18 2018-06-15 Non-volatile storage device and method for accessing non-volatile storage device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510963005.9A CN105608027B (zh) 2015-12-18 2015-12-18 非易失存储设备和访问非易失存储设备的方法

Publications (2)

Publication Number Publication Date
CN105608027A CN105608027A (zh) 2016-05-25
CN105608027B true CN105608027B (zh) 2018-10-19

Family

ID=55987978

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510963005.9A Active CN105608027B (zh) 2015-12-18 2015-12-18 非易失存储设备和访问非易失存储设备的方法

Country Status (4)

Country Link
US (1) US20180293191A1 (zh)
EP (1) EP3382564B1 (zh)
CN (1) CN105608027B (zh)
WO (1) WO2017101452A1 (zh)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105608027B (zh) * 2015-12-18 2018-10-19 华为技术有限公司 非易失存储设备和访问非易失存储设备的方法
CN108139994B (zh) * 2016-05-28 2020-03-20 华为技术有限公司 内存访问方法及内存控制器
WO2018039855A1 (zh) * 2016-08-29 2018-03-08 华为技术有限公司 内存装置、内存控制器、数据缓存装置及计算机系统
KR102618699B1 (ko) 2016-09-28 2024-01-02 삼성전자주식회사 호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템
KR102471160B1 (ko) 2017-05-16 2022-11-25 삼성전자주식회사 온-다이-터미네이션 회로를 포함하는 비휘발성 메모리 및 상기 비휘발성 메모리를 포함하는 스토리지 장치
US10340022B2 (en) 2017-05-16 2019-07-02 Samsung Electronics Co., Ltd. Nonvolatile memory including on-die-termination circuit and storage device including the nonvolatile memory
CN108289063B (zh) * 2017-09-11 2021-07-27 上海金融期货信息技术有限公司 一种低延迟通讯系统
CN107995061A (zh) * 2017-11-30 2018-05-04 北京卓讯科信技术有限公司 多规格10Gbps网络信号长时采集与回放系统和方法
CN108958800B (zh) * 2018-06-15 2020-09-15 中国电子科技集团公司第五十二研究所 一种基于fpga硬件加速的ddr管理控制系统
KR102560251B1 (ko) * 2018-06-20 2023-07-26 삼성전자주식회사 반도체 장치 및 반도체 시스템
US10884659B2 (en) * 2018-06-29 2021-01-05 Micron Technology, Inc. Host timeout avoidance in a memory device
CN109313608B (zh) * 2018-09-19 2023-05-02 深圳市汇顶科技股份有限公司 图像校验系数的读取方法、闪存控制器、系统及存储介质
CN111353595A (zh) * 2018-12-20 2020-06-30 上海寒武纪信息科技有限公司 运算方法、装置及相关产品
CN111078591A (zh) * 2019-12-16 2020-04-28 深圳忆联信息系统有限公司 部分命中缓存读命令的处理方法、装置及计算机设备
US11269555B2 (en) 2020-06-22 2022-03-08 Sandisk Technologies Llc System idle time reduction methods and apparatus
CN112162692B (zh) * 2020-09-02 2023-03-21 Oppo(重庆)智能科技有限公司 一种数据处理方法及终端、存储介质
CN114449094B (zh) * 2020-10-30 2023-04-11 华为技术有限公司 管控方法及电子设备、芯片、存储介质
CN114297104B (zh) * 2021-12-30 2023-08-18 高新兴物联科技股份有限公司 一种调试数据传输方法、装置、设备及存储介质
CN115189711A (zh) * 2022-07-11 2022-10-14 天津津航计算技术研究所 一种通信设备和传输控制方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1567245A (zh) * 2003-06-26 2005-01-19 宏碁股份有限公司 远程数据存取方法及使用该方法的计算机
CN101344870A (zh) * 2008-08-19 2009-01-14 北京中星微电子有限公司 一种复用性强的fifo控制模块及其管理内存的方法
CN103389963A (zh) * 2012-05-09 2013-11-13 北京兆易创新科技股份有限公司 一种嵌入式系统控制器
CN104951412A (zh) * 2015-06-06 2015-09-30 华为技术有限公司 一种通过内存总线访问的存储装置

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6338150B1 (en) * 1997-05-13 2002-01-08 Micron Technology, Inc. Diagnostic and managing distributed processor system
US6016554A (en) * 1997-07-28 2000-01-18 Advanced Micro Devices, Inc. Method for event-related functional testing of a microprocessor
US6640312B1 (en) * 2000-08-01 2003-10-28 National Instruments Corporation System and method for handling device retry requests on a communication medium
US7248597B2 (en) * 2001-05-02 2007-07-24 Nvidia Corporation General purpose input/output controller
JP4049297B2 (ja) * 2001-06-11 2008-02-20 株式会社ルネサステクノロジ 半導体記憶装置
WO2003021439A1 (en) * 2001-08-29 2003-03-13 Analog Devices, Inc. Methods and apparatus for improving throughput of cache-based embedded processors by switching tasks in response to a cache miss
US6880047B2 (en) * 2003-03-28 2005-04-12 Emulex Design & Manufacturing Corporation Local emulation of data RAM utilizing write-through cache hardware within a CPU module
WO2005076137A1 (en) * 2004-02-05 2005-08-18 Research In Motion Limited Memory controller interface
US8452917B2 (en) * 2008-09-15 2013-05-28 Diablo Technologies Inc. Load reduction dual in-line memory module (LRDIMM) and method for programming the same
CN101477505B (zh) * 2008-12-23 2012-11-21 无锡中星微电子有限公司 一种主、从设备之间通过总线传输数据的方法
US9323320B2 (en) * 2012-05-18 2016-04-26 Mediatek Singapore Pte. Ltd. Weighted control in a voltage scaling system
US8812936B2 (en) * 2012-07-06 2014-08-19 Sandisk Technologies Inc. Using slow response memory device on a fast response interface
CN103885900B (zh) * 2012-12-20 2017-03-08 北京华为数字技术有限公司 数据访问处理方法、PCIe设备和用户设备
CN105608027B (zh) * 2015-12-18 2018-10-19 华为技术有限公司 非易失存储设备和访问非易失存储设备的方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1567245A (zh) * 2003-06-26 2005-01-19 宏碁股份有限公司 远程数据存取方法及使用该方法的计算机
CN101344870A (zh) * 2008-08-19 2009-01-14 北京中星微电子有限公司 一种复用性强的fifo控制模块及其管理内存的方法
CN103389963A (zh) * 2012-05-09 2013-11-13 北京兆易创新科技股份有限公司 一种嵌入式系统控制器
CN104951412A (zh) * 2015-06-06 2015-09-30 华为技术有限公司 一种通过内存总线访问的存储装置

Also Published As

Publication number Publication date
CN105608027A (zh) 2016-05-25
EP3382564A1 (en) 2018-10-03
EP3382564A4 (en) 2018-12-12
WO2017101452A1 (zh) 2017-06-22
US20180293191A1 (en) 2018-10-11
EP3382564B1 (en) 2021-10-27

Similar Documents

Publication Publication Date Title
CN105608027B (zh) 非易失存储设备和访问非易失存储设备的方法
JP7456083B2 (ja) ロウハンマ緩和のホスト支援のためのリフレッシュコマンド制御
CN104951412B (zh) 一种通过内存总线访问的存储装置
US10025737B2 (en) Interface for storage device access over memory bus
US9645746B2 (en) Systems and methods for support of non-volatile memory on a DDR memory channel
TWI514157B (zh) 用於寫入流量控制之記憶體模組與方法、以及電腦系統
JP2020166832A5 (zh)
US10146608B2 (en) Memory module register access
CN103366794B (zh) 用于减少接脚数内存总线接口的装置及方法
TW201709065A (zh) 記憶體裝置特定之自我更新進入與退出技術
US11320999B2 (en) System and method for retaining DRAM data when reprogramming reconfigureable devices with DRAM memory controllers incorporating a data maintenance block
US20200218457A1 (en) Extensible Storage System And Method
EP4141662A1 (en) Deferred ecc (error checking and correction) memory initialization by memory scrub hardware
US9728234B1 (en) Operating method of semiconductor memory device
US20190096459A1 (en) Memory devices for performing multiple write operations and operating methods thereof
EP4155894A1 (en) Technologies for memory mirroring across an interconnect
EP3341847B1 (en) System and method for retaining dram data when reprogramming reconfigurable devices with dram memory controllers incorporating a data maintenance block colocated with a memory module or subsystem
CN117912527A (zh) 多模态存储器设备及系统
CN109582615A (zh) 一种ddr3控制系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant