CN111290973B - 数据写入方法、装置、计算机设备及存储介质 - Google Patents
数据写入方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN111290973B CN111290973B CN202010390737.4A CN202010390737A CN111290973B CN 111290973 B CN111290973 B CN 111290973B CN 202010390737 A CN202010390737 A CN 202010390737A CN 111290973 B CN111290973 B CN 111290973B
- Authority
- CN
- China
- Prior art keywords
- data
- written
- write operation
- writing
- stored
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Read Only Memory (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供一种数据写入方法,包括:从RAM内存中划分出预设大小的区间构建映射内存;获取待写入数据,根据所述待写入数据更新写操作队列,以及将所述待写入数据预存至所述映射内存中;监测传输总线的运行状态,并在传输总线空闲时,根据所述写操作队列将所述映射内存中的待写入数据写入目标存储器中。本发明通过设置映射内存替代原有的EEPROM存储器向芯片写入数据,避免现有技术通过EEPROM一直向目标存储器写入数据,可在传输总线空闲时写入,有效地解决了多字节数据写入过程中产生的堵塞程序运行的问题,提高了MCU利用率及EEPROM的读取速度。
Description
技术领域
本发明涉及信息技术领域,尤其涉及的是一种数据写入方法、装置、计算机设备及存储介质。
背景技术
在向AT24C02芯片写入数据时,现有技术采用控制芯片的带电可擦可编程只读存储器(Electrically Erasable Programmable read only memory,简称EEPROM存储器)写入数据。通过将AT24C02芯片的时钟线SCL1和数据线SDA1连接EEPROM存储器,并采用I2C总线通讯,实现将数据写入到AT24C02芯片中。
然而,程序在将数据写入AT24C02芯片的过程中,传输总线的带宽是有限的,每次最多传输有限字节的数据,如果一次写入的数据长度过大时,比如大于传输总线带宽,那么后续未写入的数据需要等前面的数据写入之后才可写入,程序无法响应其他指令,从而发生程序堵塞,影响程序运行时序、接收数据覆盖,尤其是对实时性要求高的程序。
发明内容
本发明提供一种数据写入方法、装置、计算机设备及存储介质,以解决现有技术在向芯片写入数据时存在的写入时间长、堵塞程序运行的问题。
本发明是这样实现的,一种数据写入方法,包括:
从随机存取存储器RAM内存中划分出预设大小的区间构建映射内存;
获取待写入数据,根据所述待写入数据更新写操作队列,以及将所述待写入数据预存至所述映射内存中;
监测传输总线的运行状态,并在传输总线空闲时,根据所述写操作队列将所述映射内存中的待写入数据写入目标存储器中。
可选地,所述获取待写入数据,根据所述待写入数据更新写操作队列,以及将所述待写入数据预存至所述映射内存中包括:
获取所述待写入数据及其对应的在目标存储器中的起始地址和长度信息;
将所述起始地址和长度信息保存至所述映射内存的写操作队列末尾,并更新写操作队列的预存数目、最后预存项索引;
将所述待写入数据保存至所述映射内存。
可选地,所述监测传输总线的运行状态,并在传输总线空闲时,根据所述写操作队列将所述映射内存中的待写入数据写入目标存储器中包括:
更新写操作队列的预存数目和当前预存项索引,根据更新前的所述当前预存项索引获取本次写操作的起始地址和长度信息;
获取进度写入标识,当所述进度写入标识为空闲状态时,按照所述起始地址将所述映射内存中的待写入数据分页写入所述目标存储器中。
可选地,所述将所述起始地址和长度信息保存至所述映射内存的写操作队列末尾,并更新写操作队列的预存数目、最后预存项索引包括:
根据所述起始地址和长度信息判断所述待写入数据是否超出目标存储器的物理地址范围;
当所述待写入数据未超出所述目标存储器的物理地址范围时,判断所述写操作队列中的预存数目是否超出预存数目阈值;
当所述写操作队列中的预存数目未超出预存数目阈值时,将所述起始地址和长度信息保存至所述写操作队列末尾;
将最后预存项索引加1,判断所述写操作队列的当前预存项索引与最后预存项索引是否相同;
若所述写操作队列的当前预存项索引与最后预存项索引相同时,将所述当前预存项索引加1,否则,不更新当前预存项索引;
将预存数目加1。
可选地,所述更新写操作队列的预存数目和当前预存项索引包括:
获取写操作队列中的预存数目;
当所述预存数目大于零时,判断写操作队列的当前预存项索引与最后预存项索引是否相同;
若否时,将所述当前预存项索引加1,若是时,将所述最后预存项索引加1,然后将所述当前预存项索引加1;
将所述预存数目减1。
可选地,所述获取进度写入标识,当所述进度写入标识为空闲状态时,按照所述起始地址将所述映射内存中的待写入数据分页写入所述目标存储器中包括:
获取进度写入标识;
当所述进度写入标识为空闲状态时,按照所述起始地址将所述映射内存中的待写入数据分页写入所述目标存储器中;
在完成一次分页写入后,更新起始地址和长度信息;
若更新后的长度信息不为零时,继续获取进度写入标识以进行下一次分页写入;
若更新后的长度信息为零时,结束本次写操作。
一种数据写入装置,包括:
划分模块,用于从RAM内存中划分出预设大小的区间构建映射内存;
预存模块,用于获取待写入数据,根据所述待写入数据更新写操作队列,以及将所述待写入数据预存至所述映射内存中;
写入模块,用于监测传输总线的运行状态,并在传输总线空闲时,根据所述写操作队列将所述映射内存中的待写入数据写入目标存储器中。
可选地,所述预存模块包括:
获取单元,用于获取所述待写入数据及其对应的在目标存储器中的起始地址和长度信息;
第一预存单元,用于将所述起始地址和长度信息保存至所述映射内存的写操作队列末尾,并更新写操作队列的预存数目、最后预存项索引;
第二预存单元,用于将所述待写入数据保存至所述映射内存。
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的数据写入方法。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述芯片程序的升级方法。
本发明实施例通过从RAM内存中划分出预设大小的区间构建映射内存,并建立映射内存与目标存储器之间的数据存储逻辑;在向芯片写入数据时,获取待写入数据,根据所述待写入数据更新写操作队列,以及将所述待写入数据预存至所述映射内存中;然后在传输总线空闲时,根据所述写操作队列从所述映射内存中读出待写入数据,并将所读出的待写入数据写入目标存储器中;通过设置映射内存替代原有的EEPROM存储器向芯片写入数据,避免现有技术通过EEPROM一直向目标存储器写入数据,可在传输总线空闲时写入,有效地解决了多字节数据写入过程中产生的堵塞程序运行的问题,提高了微控制单元(Microcontroller Unit,简称MCU)利用率及EEPROM的读取速度。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的数据写入方法的实现流程图;
图2是本发明一实施例提供的映射内存的预存逻辑示意图;
图3是本发明一实施例提供的数据写入方法中步骤S102的实现流程图;
图4是本发明一实施例提供的数据写入方法中步骤S302的实现流程图;
图5是本发明一实施例提供的数据写入方法中步骤S103的实现流程图;
图6是本发明一实施例提供的数据写入方法中步骤S501的实现流程图;
图7是本发明一实施例提供的数据写入方法中步骤S502的实现流程图
图8是本发明一实施例提供的数据写入装置的组成结构图;
图9是本发明一实施例中计算机设备的一示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例解决了现有技术在向芯片写入数据时存在的写入时间长、堵塞程序运行的问题,通过本发明实施例提供的数据写入方法可通过映射内存在传输总线空闲的时候将待写入数据写入目标存储器中,避免了现有技术向目标存储器写入多字节数据时无法响应其他工作,有效地解决了多字节数据写入过程中产生的堵塞程序运行的问题,提高了MCU利用率及EEPROM的读取速度。以下对本实施例提供的数据写入方法进行详细的描述。
图1是本发明提供的数据写入方法,如图1所示,所述写入方法包括:
在步骤S101中,从RAM内存中划分出预设大小的区间构建映射内存。
在这里,本实施例可应用于通过控制芯片STM32F103RC向AT24C02写入数据的场景中。其中所述STM32F103RC中包括一个64K的RAM内存,本实施例从所述RAM内存中划出预设大小的区间作为映射内存,用于预存将要写入AT24C02的待写入数据。可选地,所述预设大小与现有技术中通过EEPROM存储待写入数据的大小相同,比如EEPROM的内存也只有256个字节,那么映射内存也为256个字节,然后根据划分出来的映射内存,建立映射内存RAM的预存逻辑。
在步骤S102中,获取待写入数据,根据所述待写入数据更新写操作队列,以及将所述待写入数据预存至所述映射内存中。
在向AT24C02写入数据的过程中,当获取到待写入数据时,首先按照预存逻辑更新写操作队列,然后将待写入数据预保存至所述映射内存中,以通过所述映射内存对所述待写入数据进行缓存。
在步骤S103中,监测传输总线的运行状态,并在传输总线空闲时,根据所述写操作队列将所述映射内存中的待写入数据写入目标存储器中。
在这里,本实施例通过获取预设标志位的方式监测传输总线的运行状态。其中传输总线的运行状态包括空闲状态和忙碌状态,空闲状态是指传输总线当前没有进行数据传输,忙碌状态是指传输总线当前正在进行数据传输。当传输总线空闲时,表示控制芯片当前无操作,本实施例从所述映射内存中读出待写入数据,并将所读出的待写入数据写入目标存储器中。当所述传输总线忙碌时,表示所述控制芯片当前执行其他非数据写入操作,则不对映射内存中的待写入数据进行写入,等待直至再次监测到传输总线的运行状态为空闲状态。
本发明实施例通过从RAM内存中划分出预设大小的区间构建映射内存,并建立映射内存与目标存储器之间的数据预存逻辑;在向芯片写入数据时,获取待写入数据,根据所述待写入数据更新写操作队列,以及将所述待写入数据预存至所述映射内存中;然后在传输总线空闲时,根据所述写操作队列从所述映射内存中读出待写入数据,并将所读出的待写入数据写入目标存储器中;通过设置映射内存替代原有的EEPROM存储器向芯片写入数据,避免现有技术通过EEPROM一直向目标存储器写入数据,当且仅当在传输总线空闲时写入,有效地解决了多字节数据写入过程中产生的堵塞程序运行的问题,提高了MCU利用率及EEPROM的读取速度。
如前所述,本实施例通过划分出映射内存来对待写入数据进行预存储,其中数据预存逻辑为先进先出。如图2所示,为本实施例提供的映射内存的预存逻辑示意图。待写入数据作为一个写操作,保存在所述映射内存中。每个写操作对应的待写入数据,包括了本次写操作将要写入目标存储器中的所有信息。写入过程按照写操作队列执行,所述写操作队列中包括若干个预存项,一个所述预存项用于存储一个写操作对应的待写入数据的起始地址以及长度信息。其中所述起始地址是指待写入数据存储在目标存储器中的起始地址。所述长度信息是指待写入数据的大小。位于写操作队列头部预存项的索引信息叫做当前预存项索引,所述当前预存项索引指向当前将要执行的写操作的预存项;位于写操作队列尾部预存项的索引叫做最后预存项索引,所述最后预存项索引指向写操作队列中最后一个执行的写操作的预存项。应当理解,所述当前预存项索引和最后预存项索引是动态变化的。
如图3所示,步骤S102所述的获取待写入数据,根据所述待写入数据更新写操作队列,以及将所述待写入数据预存至所述映射内存中包括:
在步骤S301中,获取所述待写入数据及其对应的在目标存储器中的起始地址和长度信息。
在写入数据的过程中,每一次写操作对应的待写入数据都会被预先指定了在目标存储器中的起始地址和长度信息。
在步骤S302中,将所述起始地址和长度信息保存至所述映射内存的写操作队列末尾,并更新写操作队列的预存数目、最后预存项索引。
对于获取到的待写入数据,将所述待写入数据的起始地址和长度信息添加至所述写操作队列的末尾,作为写操作队列的最后预存项,然后更新写操作队列的预存数目和最后预存项索引。其中所述预存数目是指写操作队列所包括的预存项的个数。
可选地,如图4所示,步骤S302所述的将所述起始地址和长度信息保存至所述映射内存的写操作队列末尾,并更新写操作队列的预存数目、最后预存项索引包括:
在步骤S401中,根据所述起始地址和长度信息判断所述待写入数据是否超出目标存储器的物理地址范围。
在这里,由于目标存储器的空间是有限的,比如AT24C02的内存大小为256个字节,需要对待写入数据的长度进行判断,以确定目标存储器是否容纳得下待写入数据;同时也要判断待写入数据的起始地址是否在目标存储器的物理地址范围内,比如AT24C02的地址最小为0、最大为255。
在步骤S402中,当所述待写入数据未超出所述目标存储器的物理地址范围时,判断所述写操作队列中的预存数目是否超出预存数目阈值。
当所述待写入数据的起始地址在所述目标存储器的物理地址范围内,且所述待写入数据的长度信息表示所述目标存储器能容纳下所述待写入数据时,确定所述待写入数据是合法的,执行下一环节,判断所述写操作队列中的预存数目是否超出预存数目阈值。在这里,映射内存的大小在步骤S101中已经指定了,因此在写操作队列中可缓存的写操作的个数是有限的,本实施例将写操作队列可缓存的写操作的最大个数,称为预存数目阈值。
通过将所述写操作队列中当前的预存数目与所述预存数目阈值进行比较,以判断所述映射内存是否已满。若所述写操作队列中当前的预存数目超出所述预存数目阈值,表示所述写操作队列、映射内存已满,则暂停对本次待写入数据的预存。若所述写操作队列中当前的预存数目小于所述预存数目阈值,表示所述写操作队列、映射内存未满,执行下一个环节,步骤S403。
当所述待写入数据的起始地址未落在所述目标存储器的物理地址范围内,和/或,所述待写入数据的长度信息表示所述目标存储器不能容纳所述待写入数据时,确定所述待写入数据是非法的,则暂停对本次待写入数据的预存。
在步骤S403中,当所述写操作队列中的预存数目未超出预存数目阈值时,将所述起始地址和长度信息保存至所述写操作队列末尾。
若所述写操作队列中当前的预存数目小于所述预存数目阈值,表示所述映射内存中还可以缓存待写入数据,则在所述写操作队列末尾添加新的预存项,并将所述待写入数据的起始地址和长度信息添加在所述新的预存项中,生成所述写操作队列中的最后一个预存项。
由于将待写入数据的起始地址和长度信息写入写操作队列末尾产生了新的预存项,则需要对写操作队列的当前预存项索引、最后预存项索引以及预存数据进行更新。
在步骤S404中,将最后预存项索引加1,判断所述写操作队列的当前预存项索引与最后预存项索引是否相同。
在步骤S405中,若所述写操作队列的当前预存项索引与最后预存项索引相同时,将所述当前预存项索引加1。
在步骤S406中,若所述写操作队列的当前预存项索引与最后预存项索引不相同时,不更新当前预存项索引。
在这里,由于写操作队列是环形的,若所述写操作队列的当前预存项索引与最后预存项索引相同时,表示写操作队列已满,步骤S403写入所述起始地址和长度信息时已发生覆盖事件,是通过将写操作队列中的当前预存项索引挤出队列后腾出的空位来存储所述待写入数据的起始地址和长度信息。因此,通过将所述最后预存项索引加1,然后判断写操作队列的当前预存项索引和更新后的最后预存项索引是否相同,再决定是否更新当前预存项索引加1。若所述写操作队列的当前预存项索引与更新后的最后预存项索引不相同时,写操作队列未满,则仅将最后预存项索引加1,若所述写操作队列的当前预存项索引与更新后的最后预存项索引相同时,写操作队列已满,则还需要将当前预存项索引加1,从而完成对写操作队列中的当前预存项索引和最后预存项索引的更新。
在步骤S407中,将预存数目加1。
在更新完当前预存项索引和最后预存项索引后,进一步更新预存数目,将预存数目加1,表示写操作队列中增加了新的预存项。
在步骤S303中,将所述待写入数据保存至所述映射内存。
在完成将待写入数据的起始地址和长度信息写入写操作队列后,将所述待写入数据保存至映射内存中,从而完成在映射内存中预存待写入数据的过程,使得目标存储器可以直接从映射内存中读取待写入数据,有利于提高数据写入的速度。
以下给出本发明实施例提供的数据写入方法中待写入数据从映射内存写入目标存储器的过程。如图5所示,步骤S103所述的监测传输总线的运行状态,并在传输总线空闲时,根据所述写操作队列将所述映射内存中的待写入数据写入目标存储器中包括:
在步骤S501中,更新写操作队列的预存数目和当前预存项索引,根据更新前的所述当前预存项索引获取本次写操作的起始地址和长度信息。
在将待写入数据从映射内存中写入目标存储器时,先更新预存队列的预存数目和当前预存项索引,然后以更新前的当前预存项索引指向的预存项作为本次写操作的预存项,并从本次写操作的预存项中得到的待写入数据的起始地址和长度信息。可选地,如图6所示,所述步骤S501中所述的更新写操作队列的预存数目和当前预存项索引包括:
在步骤S601中,获取写操作队列中的预存数目。
在这里,写操作队列中的预存数目表示写操作队列中是否有预存项,也表示映射内存中是否有待写入数据。若所述预存数目大于零时,表示写操作队列中有预存项,也表示映射内存中有待写入数据;若所述预存数目为零时,表示写操作队列中没有预存项,也表示映射内存中没有待写入数据,无需向目标存储器中写入数据。
在步骤S602中,当所述预存数目大于零时,判断写操作队列的当前预存项索引与最后预存项索引是否相同。
在这里,通过判断写操作队列的当前预存项索引与最后预存项索引是否相同,可以确定写操作队列的当前预存项索引指向的预存项是否为队列中的最后一个预存项。
在步骤S603中,若否时,不执行任何操作。
在步骤S604中,若是时,将所述最后预存项索引加1,然后将所述当前预存项索引加1。
当写操作队列的当前预存项索引与最后预存项索引不相同时,写操作队列上的当前预存项索引指向的预存项不是队列中的最后一个,则将所述当前预存项索引加1以更新当前预存项索引,用以指示下一次写操作。
当写操作队列的当前预存项索引与最后预存项索引相同时,写操作队列上的当前预存项索引指向的预存项是队列中的最后一个,则将所述最后预存索引项加1,以将写操作队列末尾往后排,然后将所述当前预存项索引加1以更新所述当前预存项索引,用以指示下一次写操作。
在步骤S605中,将所述预存数目减1。
由于从写操作队列中取出了当前预存项索引指向的预存项,则写操作队列中的预存项减少一个,将预存数目减1,以更新写操作队列中的预存数目。
在步骤S502中,获取进度写入标识,当所述进度写入标识为空闲状态时,按照所述起始地址将所述映射内存中的待写入数据分页写入所述目标存储器中。
在这里,所述进度写入标识记录了传输总线的运行状态,用以检测传输总线的运行状态。在从写操作队列中得到起始地址和长度信息后,获取进度写入标识;若进度写入标识为传输总线空闲时,表示控制芯片当前无操作,将从所述映射内存中读出待写入数据,按照所述步骤S501中得到的起始地址写入目标存储器中。当所述进度写入标识为传输总线忙碌时,表示所述控制芯片当前执行其他非数据写入操作,不对映射内存中的待写入数据进行写入,等待直至再次检测到传输总线的运行状态为空闲状态。可选地,如图7所示,所述步骤S502还包括:
在步骤S701中,获取进度写入标识。
在步骤S702中,当所述进度写入标识为空闲状态时,按照所述起始地址将所述映射内存中的待写入数据分页写入所述目标存储器中。
在这里,待写入数据每次按照目标存储器的最大写入限度发送至目标存储器,比如最大写入限度为8字节,一页数据则为8个字节,每次将待写入数据中的8个字节写入到目标存储器,以实现对待写入数据的分页写入。
在步骤S703中,在完成一次分页写入后,更新起始地址和长度信息。
在这里,起始地址更新为分页写入后剩余的待写入数据的起始地址;长度信息更新为分页写入后剩余的待写入数据的大小。
在步骤S704中,判断更新后的长度信息是否为零,若更新后的长度信息不为零时,返回步骤S701获取进度写入标识。
在这里,若更新后的长度信息不为零时,表明本次写操作还有待写入数据需要写入到目标存储器中,继续返回步骤S701获取进度写入标识,并在进度写入标识为传输总线空闲时再次执行分页写入操作,重复步骤S702、步骤S703以及步骤S704。
在步骤S705中,若更新后的长度信息为零时,结束本次写操作。
若更新后的长度信息为零时,表明本次写操作的待写入数据已全部写入到目标存储器中,结束本次写操作。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种数据写入装置,该数据写入装置与上述实施例中数据写入方法一一对应。如图8所示,该数据写入装置包括划分模块81、预存模块82、写入模块83。各功能模块详细说明如下:
划分模块81,用于从RAM内存中划分出预设大小的区间构建映射内存;
预存模块82,用于获取待写入数据,根据所述待写入数据更新写操作队列,以及将所述待写入数据预存至所述映射内存中;
写入模块83,用于监测传输总线的运行状态,并在传输总线空闲时,根据所述写操作队列将所述映射内存中的待写入数据写入目标存储器中。
可选地,所述预存模块82包括:
第一获取单元,用于获取所述待写入数据及其对应的在目标存储器中的起始地址和长度信息;
索引单元,用于将所述起始地址和长度信息保存至所述映射内存的写操作队列末尾,并更新写操作队列的预存数目、最后预存项索引;
预存单元,用于将所述待写入数据保存至所述映射内存。
所述写入模块83包括:
第二获取单元,用于更新写操作队列的预存数目和当前预存项索引,根据更新前的所述当前预存项索引获取本次写操作的起始地址和长度信息。
写入单元,用于获取进度写入标识,当所述进度写入标识为空闲状态时,按照所述起始地址将所述映射内存中的待写入数据分页写入所述目标存储器中。
可选地,所述索引单元包括:
第一判断子单元,用于根据所述起始地址和长度信息判断所述待写入数据是否超出目标存储器的物理地址范围;
第二判断子单元,用于当所述待写入数据未超出所述目标存储器的物理地址范围时,判断所述写操作队列中的预存数目是否超出预存数目阈值;
保存子单元,用于当所述写操作队列中的预存数目未超出预存数目阈值时,将所述起始地址和长度信息保存至所述写操作队列末尾;
更新子单元,用于将最后预存项索引加1,判断所述写操作队列的当前预存项索引与最后预存项索引是否相同;若所述写操作队列的当前预存项索引与最后预存项索引相同时,将所述当前预存项索引加1,否则,不更新当前预存项索引;将预存数目加1。
可选地,所述第二获取单元包括:
获取子单元,用于获取写操作队列中的预存数目。
第三判断单元,用于当所述预存数目大于零时,判断写操作队列的当前预存项索引与最后预存项索引是否相同;
更新单元,用于若否时,将所述当前预存项索引加1,若是时,将所述最后预存项索引加1,然后将所述当前预存项索引加1;将所述预存数目减1。
可选地,所述写入单元包括:
标识获取子单元,用于获取进度写入标识;
分页写入子单元,用于当所述进度写入标识为空闲状态时,按照所述起始地址将所述映射内存中的待写入数据分页写入所述目标存储器中;
更新子单元,用于在完成一次分页写入后,更新起始地址和长度信息;
标识获取子单元还用于,若更新后的长度信息不为零时,继续获取进度写入标识以进行下一次分页写入;
结束单元,用于若更新后的长度信息为零时,结束本次写操作。
关于数据写入装置的具体限定可以参见上文中对于数据写入方法的限定,在此不再赘述。上述数据写入装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据写入方法。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
从RAM内存中划分出预设大小的区间构建映射内存;
获取待写入数据,根据所述待写入数据更新写操作队列,以及将所述待写入数据预存至所述映射内存中;
监测传输总线的运行状态,并在传输总线空闲时,根据所述写操作队列将所述映射内存中的待写入数据写入目标存储器中。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (8)
1.一种数据写入方法,其特征在于,包括:
从RAM内存中划分出预设大小的区间构建映射内存;
获取待写入数据,根据所述待写入数据更新写操作队列,以及将所述待写入数据预存至所述映射内存中;
监测传输总线的运行状态,并在传输总线空闲时,根据所述写操作队列将所述映射内存中的待写入数据写入目标存储器中;
其中,所述写操作队列中包括若干个预存项,一个所述预存项用于存储一个写操作对应的待写入数据的起始地址以及长度信息;
所述预设大小与通过EEPROM存储待写入数据的大小相同,所述获取待写入数据,根据所述待写入数据更新写操作队列,以及将所述待写入数据预存至所述映射内存中包括:
获取所述待写入数据及其对应的在目标存储器中的起始地址和长度信息;
以所述待写入数据作为一个写操作,将所述起始地址和长度信息保存至所述映射内存的写操作队列末尾,并更新写操作队列的预存数目、最后预存项索引;
将所述待写入数据保存至所述映射内存。
2.如权利要求1所述的数据写入方法,其特征在于,所述监测传输总线的运行状态,并在传输总线空闲时,根据所述写操作队列将所述映射内存中的待写入数据写入目标存储器中包括:
更新写操作队列的预存数目和当前预存项索引,根据更新前的所述当前预存项索引获取本次写操作的起始地址和长度信息;
获取进度写入标识,当所述进度写入标识为空闲状态时,按照所述起始地址将所述映射内存中的待写入数据分页写入所述目标存储器中。
3.如权利要求1所述的数据写入方法,其特征在于,所述将所述起始地址和长度信息保存至所述映射内存的写操作队列末尾,并更新写操作队列的预存数目、最后预存项索引包括:
根据所述起始地址和长度信息判断所述待写入数据是否超出目标存储器的物理地址范围;
当所述待写入数据未超出所述目标存储器的物理地址范围时,判断所述写操作队列中的预存数目是否超出预存数目阈值;
当所述写操作队列中的预存数目未超出预存数目阈值时,将所述起始地址和长度信息保存至所述写操作队列末尾;
将最后预存项索引加1,判断所述写操作队列的当前预存项索引与最后预存项索引是否相同;
若所述写操作队列的当前预存项索引与最后预存项索引相同时,将所述当前预存项索引加1,否则,不更新当前预存项索引;
将预存数目加1。
4.如权利要求2所述的数据写入方法,其特征在于,所述更新写操作队列的预存数目和当前预存项索引包括:
获取写操作队列中的预存数目;
当所述预存数目大于零时,判断写操作队列的当前预存项索引与最后预存项索引是否相同;
若否时,将所述当前预存项索引加1,若是时,将所述最后预存项索引加1,然后将所述当前预存项索引加1;
将所述预存数目减1。
5.如权利要求4所述的数据写入方法,其特征在于,所述获取进度写入标识,当所述进度写入标识为空闲状态时,按照所述起始地址将所述映射内存中的待写入数据分页写入所述目标存储器中包括:
获取进度写入标识;
当所述进度写入标识为空闲状态时,按照所述起始地址将所述映射内存中的待写入数据分页写入所述目标存储器中;
在完成一次分页写入后,更新起始地址和长度信息;
若更新后的长度信息不为零时,继续获取进度写入标识以进行下一次分页写入;
若更新后的长度信息为零时,结束本次写操作。
6.一种数据写入装置,其特征在于,所述装置包括:
划分模块,用于从RAM内存中划分出预设大小的区间构建映射内存;
预存模块,用于获取待写入数据,根据所述待写入数据更新写操作队列,以及将所述待写入数据预存至所述映射内存中;
写入模块,用于监测传输总线的运行状态,并在传输总线空闲时,根据所述写操作队列将所述映射内存中的待写入数据写入目标存储器中;
其中,所述写操作队列中包括若干个预存项,一个所述预存项用于存储一个写操作对应的待写入数据的起始地址以及长度信息;
所述预设大小与通过EEPROM存储待写入数据的大小相同,所述预存模块包括:
获取单元,用于获取所述待写入数据及其对应的在目标存储器中的起始地址和长度信息;
第一预存单元,用于以所述待写入数据作为一个写操作,将所述起始地址和长度信息保存至所述映射内存的写操作队列末尾,并更新写操作队列的预存数目、最后预存项索引;
第二预存单元,用于将所述待写入数据保存至所述映射内存。
7.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至5任一项所述的数据写入方法。
8.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述的数据写入方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010390737.4A CN111290973B (zh) | 2020-05-11 | 2020-05-11 | 数据写入方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010390737.4A CN111290973B (zh) | 2020-05-11 | 2020-05-11 | 数据写入方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111290973A CN111290973A (zh) | 2020-06-16 |
CN111290973B true CN111290973B (zh) | 2020-11-27 |
Family
ID=71024219
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010390737.4A Active CN111290973B (zh) | 2020-05-11 | 2020-05-11 | 数据写入方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111290973B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111831625B (zh) * | 2020-07-14 | 2024-03-12 | 深圳力维智联技术有限公司 | 数据迁移方法、数据迁移装置和可读存储介质 |
CN111966285B (zh) * | 2020-07-20 | 2022-09-06 | 四川虹美智能科技有限公司 | 向eeprom存储数据的方法、主控芯片和系统 |
CN114125008B (zh) * | 2020-09-01 | 2024-03-08 | 上海汽车集团股份有限公司 | 一种数据传输方法及装置 |
CN112634964B (zh) * | 2020-12-24 | 2024-07-19 | 潍柴动力股份有限公司 | 电子控制单元的数据写入方法、装置、设备及存储介质 |
CN112764673B (zh) * | 2020-12-28 | 2024-03-15 | 中国测绘科学研究院 | 高光谱线阵数据存储速率优化方法、装置和存储介质 |
CN113704588A (zh) * | 2021-08-31 | 2021-11-26 | 平安普惠企业管理有限公司 | 基于映射技术的文件读取方法及系统 |
CN115373610B (zh) * | 2022-10-25 | 2023-08-18 | 北京智芯微电子科技有限公司 | 数据写入方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101477511A (zh) * | 2008-12-31 | 2009-07-08 | 杭州华三通信技术有限公司 | 一种实现多操作系统共享存储介质的方法和装置 |
CN101651794A (zh) * | 2009-08-11 | 2010-02-17 | 深圳同方蓝色数码有限公司 | 一种拷贝电视机存储器数据的方法及智能拷贝器 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6670958B1 (en) * | 2000-05-26 | 2003-12-30 | Ati International, Srl | Method and apparatus for routing data to multiple graphics devices |
CN102843396B (zh) * | 2011-06-22 | 2018-03-13 | 中兴通讯股份有限公司 | 一种分布式缓存系统中的数据写入及读取方法及装置 |
CN104536913B (zh) * | 2014-12-10 | 2017-07-28 | 山东华芯半导体有限公司 | 一种基于多块ram的大数运算电路的数据转移方法 |
CN105871959A (zh) * | 2015-01-22 | 2016-08-17 | 阿里巴巴集团控股有限公司 | 一种消息传递的方法、系统和装置 |
CN104765575B (zh) * | 2015-04-23 | 2017-09-15 | 成都博元时代软件有限公司 | 信息存储处理方法 |
CN105224258B (zh) * | 2015-10-19 | 2018-05-22 | 深圳芯邦科技股份有限公司 | 一种数据缓冲区的复用方法与系统 |
CN108959149B (zh) * | 2018-06-28 | 2022-04-19 | 南京南瑞继保电气有限公司 | 一种基于共享内存的多核处理器交互总线设计方法 |
CN111125070A (zh) * | 2019-11-19 | 2020-05-08 | 华迪计算机集团有限公司 | 一种数据交换方法及平台 |
-
2020
- 2020-05-11 CN CN202010390737.4A patent/CN111290973B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101477511A (zh) * | 2008-12-31 | 2009-07-08 | 杭州华三通信技术有限公司 | 一种实现多操作系统共享存储介质的方法和装置 |
CN101651794A (zh) * | 2009-08-11 | 2010-02-17 | 深圳同方蓝色数码有限公司 | 一种拷贝电视机存储器数据的方法及智能拷贝器 |
Also Published As
Publication number | Publication date |
---|---|
CN111290973A (zh) | 2020-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111290973B (zh) | 数据写入方法、装置、计算机设备及存储介质 | |
CN111737173B (zh) | I2c总线通信控制方法、装置、系统及可读存储介质 | |
CN111563052A (zh) | 降低读延时的缓存方法、装置、计算机设备及存储介质 | |
KR20190047035A (ko) | 비휘발성 메모리 지속화 방법 및 컴퓨팅 디바이스 | |
US20210149594A1 (en) | Solid-state devices to reduce latency by employing instruction time slicing to non-volatile memory (nvm) sets mapped to independently programmable nvm planes | |
US10089043B2 (en) | Apparatus and methods for a distributed memory system including memory nodes | |
KR101093317B1 (ko) | 데이터 처리 시스템 내의 프리패치 제어 | |
CN103412829B (zh) | 扩大mcu程序地址空间的方法及装置 | |
CN115248791A (zh) | 基于地址监测实现内存管理的硬件设备和方法 | |
CN111488298A (zh) | 优化nvm接口命令执行顺序的方法与装置 | |
CN116633886A (zh) | 数据传输方法、数据接收端的网卡、电子设备及存储介质 | |
CN114036077B (zh) | 数据处理方法及相关装置 | |
CN109426445B (zh) | 用以优化数据储存装置的数据储存方法及其数据储存装置 | |
CN115794366A (zh) | 一种内存预取方法及装置 | |
US20050138134A1 (en) | Race free data transfer algorithm using hardware based polling | |
CN116701246B (zh) | 一种提升缓存带宽的方法、装置、设备及存储介质 | |
CN110334034B (zh) | 映射表动态加载的方法、装置、计算机设备及存储介质 | |
CN112115521B (zh) | 数据访问方法及装置 | |
US20190012279A1 (en) | Computer system, communication device, and storage control method | |
CN113253939B (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN115277644A (zh) | 一种总线数据传输系统、方法、设备及存储介质 | |
US6609168B1 (en) | Bus master read request adaptive prefetch prediction method and apparatus | |
KR20180089140A (ko) | 데이터 저장 장치 | |
CN114691347A (zh) | 一种线程内存获取方法、装置、智能终端及存储介质 | |
US10120819B2 (en) | System and method for cache memory line fill using interrupt indication |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |