CN116126591B - 一种嵌入式系统的事务机制 - Google Patents
一种嵌入式系统的事务机制 Download PDFInfo
- Publication number
- CN116126591B CN116126591B CN202211665802.5A CN202211665802A CN116126591B CN 116126591 B CN116126591 B CN 116126591B CN 202211665802 A CN202211665802 A CN 202211665802A CN 116126591 B CN116126591 B CN 116126591B
- Authority
- CN
- China
- Prior art keywords
- transaction
- lpm
- physical page
- current
- address
- 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
- 238000013507 mapping Methods 0.000 claims abstract description 46
- 238000000034 method Methods 0.000 claims abstract description 8
- 238000012795 verification Methods 0.000 claims description 3
- 238000000889 atomisation Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Retry When Errors Occur (AREA)
Abstract
本发明涉及一种嵌入式系统的事务机制,所述事务机制具体包括:开启事务,拷贝一份lpm_current命名为lpm_snapshot;从lpm_current查找事务指定的逻辑地址所对应的物理页索引,计算物理地址,读出该物理地址所对应物理页存储的数据;更新所读出的数据,将更新后的数据写入到空闲物理页;将所查找到的物理页索引,改为该空闲物理页的物理页索引;判断执行事务过程中是否有错误,如果否,且未接收到撤销事务指令,提交事务,包括:更新lpm_current中的version和checksum值,把更新后的地址映射管理表写入到地址映射管理表区,并删除lpm_snapshot;如果是,或接收到撤销事务指令,回滚事务,把lpm_snapshot的内容复制回lpm_current,删除lpm_snapshot。本发明的事务机制,解决了传统事务机制缩减Flash使用寿命、降低系统运行效率的问题。
Description
技术领域
本发明涉及资源受限系统的开发领域,尤其是一种嵌入式系统的事务机制。
背景技术
近年来随着Flash(闪存)技术的发展,Flash以大容量、高速度、低功耗、非易失性等优点成为众多嵌入式系统的主要存储介质。嵌入式系统资源受限,如ARM、MCU、SE等系统,经常会利用片内Flash来保存程序和数据,也保存一些需要修改的配置信息或运行数据。这类系统资源有限,无法安装通用文件系统,无法利用文件系统来实现数据的可靠存储,但Flash具有按块/页擦写的物理特性,即需要先擦除整块/页然后再写入数据,以致这类系统一旦发生掉电或电源不稳定,就有可能造成数据丢失或损坏,甚至系统紊乱无法正常运行。
由此,需要为嵌入式系统设计一种事务机制来实现数据的可靠存储,即实现数据写入操作的原子化,数据更新要么成功全部更新、要么不成功全都不更新,以防出现数据一半新一半旧的状态。
事务机制的关键是数据备份和恢复,其原理为:先备份目标地址的数据,然后修改目标地址的数据,若期间发生错误或掉电,则可以从备份区恢复目标地址的旧数据回去,相当于倒退到事务启动之前;若事务撤销,也可以从备份区恢复目标地址的旧数据;若事务执行完成,则擦除备份数据或置备份无效标识。数据备份可以只备份被修改范围内的数据,以一条记录形式保存到备份区,也可以备份整页,实际操作中一般的也会同时保存数据的目标地址、长度、校验等。
从上述描述可知,一个传统的事务流程需要:备份旧数据、备份旧数据完成标识、擦写目标页更新数据、删除备份数据或设置备份数据无效标识,一个完整的事务流程需要4次Flash页擦写操作,降低了系统的运行效率。另一方面,每次事务期间都要使用数据备份区,导致备份区Flash页的擦写寿命极速消耗,形成Flash寿命瓶颈,为此必然需要多个备份页进行均衡,但是均衡页数少则起不到延长备份区Flash寿命的效果,均衡页数多则直接占用大量的系统空间,构成系统性能瓶颈。
发明内容
有鉴于此,本发明的主要目的在于提供一种嵌入式系统的事务机制,解决了传统事务机制一次事务流程需要多次擦写Flash页,以致缩减了Flash使用寿命、降低了系统运行效率的问题。
为达到上述目的,本申请提供了一种嵌入式系统的事务机制,包括
开启事务,执行:拷贝一份lpm_current命名为lpm_snapshot;从lpm_current查找事务指定的逻辑地址所对应的物理页索引,依据该物理页索引计算物理地址,读出该物理地址所对应物理页存储的数据;依事务要求更新所读出的数据,将更新后的数据写入到空闲物理页;将lpm_current中所查找到的物理页索引,改为该空闲物理页的物理页索引;
判断开启事务后执行事务过程中是否有错误,如果否,且未接收到撤销事务指令,提交事务,包括:更新lpm_current中的version和checksum值,把lpm_current中更新后的地址映射管理表写入到地址映射管理区,删除lpm_snapshot;如果是,或接收到撤销事务指令,则回滚事务,把lpm_snapshot的内容复制回lpm_current,删除lpm_snapshot。
在一个可能的实现中,还包括:系统启动时,选择地址映射管理区中校验合法且版本号最新的地址映射管理表,将选择的地址映射管理表读取到RAM的lpm_current中。
基于上述,本发明提供的一种嵌入式系统的事务机制,具有以下优点和特点:
1、不需要划定备份区,将数据写到新的页,旧页的数据自然就可以用作备份数据,解决了难以兼顾备份区Flash页的擦写寿命和均衡页数占用系统空间的问题,提升了Flash空间的利用率;且将数据写到新的页,不存在热数据反复在同一个物理页更新的情况,解决了Flash写均衡的问题,避免了热数据所在页被反复擦写乃至失效的问题。
2、提交事务时,旧数据所在页的物理地址页索引已从地址映射管理表移除,即被当做空闲物理页管理,不需要删除备份数据或设置无效标识,提升了系统运行效率。
3、回滚事务,丢弃lpm_current中的地址映射管理表即可,无需操作Flash,进一步提升了系统运行效率。
4、若发生掉电,因事务期间写入的映射关系没有被固化到Flash,lpm_current仅在RAM中,而地址映射管理表区固化的依然是事务开启之前的记录,上电搜索地址映射管理表区,即恢复到掉电之前的映射状态,保障了数据的一致性。
附图说明
图1为本发明实施例一种嵌入式系统的事务机制的流程示意图;
图2为Flash的映射关系示意图。
具体实施方式
如图1所示,本发明实施例一种嵌入式系统的事务机制的流程,包括步骤101~104;
步骤101:开启事务,执行:拷贝一份lpm_current并命名为lpm_snapshot,从lpm_current查找事务指定的逻辑地址所对应的物理页索引,依据该物理页索引计算物理地址,读出该物理地址所对应物理页存储的数据;依事务要求更新所读出的数据,将更新后的数据写入到空闲物理页;将lpm_current中所查找到的物理页索引,改为该空闲物理页的物理页索引。
步骤102:判断开启事务后执行事务过程中是否有错误,如果否,且未接收到撤销事务指令,执行步骤103;如果是,或接收到撤销事务指令,则执行步骤104。
步骤103:提交事务,包括:更新lpm_current中的版本号(version)和校验值(checksum)值,把lpm_current中更新后的地址映射管理表写入到地址映射管理表区,然后删除lpm_snapshot。
步骤104:回滚事务,将lpm_snapshot的内容拷回到lpm_current,然后删除lpm_snapshot。
其中,Flash的地址映射如图2所示,地址映射管理区包括M个页,每个地址映射管理表占用一个页,可存储M个地址映射管理表。为了保障地址映射管理表的安全,地址映射管理区由系统管理,业务层和应用程序无权访问。
逻辑地址到物理地址的转换使用地址映射管理表中的地址映射表(addrMap)进行管理,地址映射表中的一个字节对应Flash的一个物理页,addrMap的下标即逻辑地址(logicAddr)的页索引,存储的值为物理地址的页索引(phyAddrIdx)。
地址映射表长度为N,当N=80时,表示80个字节可以记录80个页的索引号。例如:addrMap[1]=2代表逻辑页1对应的物理页索引为2。若使用一个256字节的数组就可以管理256个页,当1页的大小为512字节时可以寻址128KB空间。若大容量的Flash寻址空间可能超过256页,那么使用2字节映射一个物理页就能实现65536个页的地址映射。
由此,步骤101中所述查找物理页索引(phyAddrIdx)具体为:
步骤a、从逻辑地址(logicAddr)计算逻辑地址页索引(addrMapIdx)和地址在页内的偏移(addrOffset):
addrMapIdx=(logicAddr-logicBaseAddr)/pageSize
addrOffset=(logicAddr-logicBaseAddr)%pageSize
步骤b、查询地址映射表中addrMap[addrMapIdx]的值,即为物理地址页索引。
进一步的,所述依据该物理页索引计算物理地址(phyAddr)具体为:
phyAddr=phyBaseAddr+pageSize*phyAddrIdx+addrOffset
这里,所述空闲物理页指当前lpm_current中各逻辑地址页索引均没有指向的Flash数据区的物理页。相应的,为了更加合理均衡的写数据区,在一个可能的实现中,所述将数据写入到空闲物理页前还包括查找空闲物理页,具体为:
系统每次上电可以随机选择一个物理地址页索引,从选择的物理地址页索引指向的物理页开始往后搜索空闲物理页;
或者,以lpm_current中的空闲页索引(free_page_id)字段指向的物理页为起点,往后搜索空闲物理页,搜索到最后一页时回到首页循环查找。相应的,在步骤103中,更新lpm_current时,还需更新lpm_current的free_page_id字段为所查找到的空闲物理页的物理页索引。
步骤103中,所述更新lpm_current中的version和checksum值具体为:
以version加1后所得值替换原version;
重新计算校验值,并以算得的校验值替换原校验值。
这里,为更加合理均衡的写地址映射管理表区,将更新后的地址映射管理表写入到地址映射管理表区中的第一个空闲页,如果向后搜索已没有空闲页,则从0页重新开始循环。
步骤103中,把lpm_current中更新后的地址映射管理表写入到地址映射管理表区,保持lpm_current和地址映射管理区中版本号最新的地址映射管理表的内容一致,以便事务能够从lpm_current正确寻址。
在一个可能的实现中,系统启动时,选择地址映射管理区中校验合法且版本号最新的地址映射管理表,将选择的地址映射管理表读取到RAM的lpm_current中。
为了节约系统资源空间,地址映射表管理区的大小根据实际应用场景进行调整;地址映射表可以通过一个索引或指针指向该表在Flash实际存储的地址;地址映射管理表不需要占用一页,而是以一条条记录的方式保存等。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (2)
1.一种嵌入式系统的事务机制,其特征在于,包括:开启事务,执行:拷贝一份RAM中的lpm_current命名为lpm_snapshot;从lpm_current查找事务指定的逻辑地址所对应的物理页索引,依据该物理页索引计算物理地址,读出该物理地址所对应物理页存储的数据;依事务要求更新所读出的数据,将更新后的数据写入到空闲物理页;将lpm_current中所查找到的物理页索引,改为该空闲物理页的物理页索引;
判断开启事务后执行事务过程中是否有错误,如果否,且未接收到撤销事务指令,提交事务,包括:更新lpm_current中的version和checksum值,把lpm_current中更新后的地址映射管理表写入到地址映射管理表区,删除lpm_snapshot;如果是,或接收到撤销事务指令,回滚事务,把lpm_snapshot的内容复制回lpm_current,删除lpm_snapshot。
2.根据权利要求1所述的事务机制,其特征在于,还包括:系统启动时,选择地址映射管理区中校验合法且版本号最新的地址映射管理表,将选择的地址映射管理表读取到RAM的lpm_current。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211665802.5A CN116126591B (zh) | 2022-12-23 | 2022-12-23 | 一种嵌入式系统的事务机制 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211665802.5A CN116126591B (zh) | 2022-12-23 | 2022-12-23 | 一种嵌入式系统的事务机制 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116126591A CN116126591A (zh) | 2023-05-16 |
CN116126591B true CN116126591B (zh) | 2023-12-15 |
Family
ID=86307245
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211665802.5A Active CN116126591B (zh) | 2022-12-23 | 2022-12-23 | 一种嵌入式系统的事务机制 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116126591B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102591748A (zh) * | 2011-12-29 | 2012-07-18 | 记忆科技(深圳)有限公司 | 固态硬盘及其掉电保护方法、系统 |
CN103678180A (zh) * | 2013-11-29 | 2014-03-26 | 武汉天喻信息产业股份有限公司 | 智能卡非易失性存储器的管理方法 |
DE102013106242A1 (de) * | 2012-07-02 | 2014-04-17 | Infomicro Electronics Industrial Park (Shenzhen) Ltd. | Halbleiterlaufwerk mit Konvertierungsschicht (ETL) und Umleitung von temporären Dateien zur Verschleissminderung von Flashspeichern |
CN107992269A (zh) * | 2017-12-08 | 2018-05-04 | 华中科技大学 | 一种基于去重ssd的事务写入方法 |
CN112597072A (zh) * | 2020-12-17 | 2021-04-02 | 北京华弘集成电路设计有限责任公司 | 一种Flash存储器的数据更新方法和装置 |
CN112988611A (zh) * | 2019-12-17 | 2021-06-18 | 国民技术股份有限公司 | 非易失性存储器的数据写入方法、终端和可读存储介质 |
CN113419678A (zh) * | 2021-06-18 | 2021-09-21 | 上海盈方微电子有限公司 | 一种用于嵌入式系统的存储管理方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130080687A1 (en) * | 2011-09-23 | 2013-03-28 | Avalanche Technology, Inc. | Solid state disk employing flash and magnetic random access memory (mram) |
CN105930500A (zh) * | 2016-05-06 | 2016-09-07 | 华为技术有限公司 | 数据库系统中事务恢复的方法与数据库管理系统 |
-
2022
- 2022-12-23 CN CN202211665802.5A patent/CN116126591B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102591748A (zh) * | 2011-12-29 | 2012-07-18 | 记忆科技(深圳)有限公司 | 固态硬盘及其掉电保护方法、系统 |
DE102013106242A1 (de) * | 2012-07-02 | 2014-04-17 | Infomicro Electronics Industrial Park (Shenzhen) Ltd. | Halbleiterlaufwerk mit Konvertierungsschicht (ETL) und Umleitung von temporären Dateien zur Verschleissminderung von Flashspeichern |
CN103678180A (zh) * | 2013-11-29 | 2014-03-26 | 武汉天喻信息产业股份有限公司 | 智能卡非易失性存储器的管理方法 |
CN107992269A (zh) * | 2017-12-08 | 2018-05-04 | 华中科技大学 | 一种基于去重ssd的事务写入方法 |
CN112988611A (zh) * | 2019-12-17 | 2021-06-18 | 国民技术股份有限公司 | 非易失性存储器的数据写入方法、终端和可读存储介质 |
CN112597072A (zh) * | 2020-12-17 | 2021-04-02 | 北京华弘集成电路设计有限责任公司 | 一种Flash存储器的数据更新方法和装置 |
CN113419678A (zh) * | 2021-06-18 | 2021-09-21 | 上海盈方微电子有限公司 | 一种用于嵌入式系统的存储管理方法 |
Non-Patent Citations (1)
Title |
---|
持久化内存文件系统的磨损攻击与防御机制;杨朝树;诸葛晴凤;沙行勉;陈咸彰;吴林;吴挺;;软件学报(第06期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116126591A (zh) | 2023-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101515276B (zh) | 一种文件数据写操作的方法、文件数据恢复方法及系统 | |
EP3724764B1 (en) | Write-ahead style logging in a persistent memory device | |
JP3708047B2 (ja) | フラッシュメモリの管理方法 | |
US5043871A (en) | Method and apparatus for database update/recovery | |
US9183236B2 (en) | Low level object version tracking using non-volatile memory write generations | |
CN108431783B (zh) | 访问请求处理方法、装置及计算机系统 | |
WO2017190604A1 (zh) | 数据库系统中事务恢复的方法与数据库管理系统 | |
US20080177961A1 (en) | Partial Backup and Restore with Backup Versioning | |
US20060224818A1 (en) | Method for fast access to flash-memory media | |
CN106951375B (zh) | 在存储系统中删除快照卷的方法及装置 | |
US20060200500A1 (en) | Method of efficiently recovering database | |
US6636941B1 (en) | Enhanced stable disk storage | |
US11030092B2 (en) | Access request processing method and apparatus, and computer system | |
CN103996412A (zh) | 一种用于智能卡非易失性存储器的掉电保护方法 | |
US20060036802A1 (en) | Flash file system management | |
CN1701300B (zh) | 用于分解与一共用逻辑块相关联的物理块的方法和设备 | |
CN111124294B (zh) | 一种扇区映射信息的管理方法及装置、存储介质和设备 | |
KR100622113B1 (ko) | 데이터베이스 시스템을 위한 플래쉬 메모리 저장 시스템 및그 방법 | |
CN116126591B (zh) | 一种嵌入式系统的事务机制 | |
CN114327292B (zh) | 文件管理方法、系统、电子设备和存储介质 | |
Lee et al. | RMSS: an efficient recovery management scheme on NAND flash memory based solid state disk | |
WO2010145967A1 (en) | Memory device for managing the recovery of a non volatile memory | |
CN109960611B (zh) | 数据恢复的方法、装置、电子设备及机器可读存储介质 | |
CN110471626B (zh) | 应用于Java Card的Nor Flash管理层及方法 | |
JPH0816881B2 (ja) | データベース更新方法 |
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 |