CN110471626B - 应用于Java Card的Nor Flash管理层及方法 - Google Patents
应用于Java Card的Nor Flash管理层及方法 Download PDFInfo
- Publication number
- CN110471626B CN110471626B CN201910753581.9A CN201910753581A CN110471626B CN 110471626 B CN110471626 B CN 110471626B CN 201910753581 A CN201910753581 A CN 201910753581A CN 110471626 B CN110471626 B CN 110471626B
- Authority
- CN
- China
- Prior art keywords
- data
- space
- state
- mapping area
- writable
- 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
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
-
- 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
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供的Nor Flash管理层,包括空间管理模块、逻辑空间、主映射区和辅助映射区;其中,所述逻辑空间包括多个逻辑页,所述主映射区包括多段主空间,所述辅助映射区包括多段辅助空间;每个逻辑页均映射至一主空间,且映射关系不变;逻辑页还映射至一辅助空间,且映射关系不固定;所述空间管理模块用于对主映射区和辅助映射区进行数据读写、空间回收和数据的数据状态管理,这样就能够为Java Card系统提供较快应用数据读取接口,提升应用字节码解析性能,从而达到Java Card各个应用场景的性能需求。
Description
技术领域
本发明属于智能卡技术领域,具体涉及应用于Java Card的Nor Flash管理层及方法。
背景技术
Java Card,即Java智能卡,以智能卡硬件系统为基础,通过软件的方式构造一个支持Java程序下载、安装、运行的软/硬件系统。由于引入了虚拟机技术,Java Card具备硬件无关性,即智能卡应用程序开发与智能卡硬件系统相分离,提高应用程序的可移植性与可重用性。
目前,Java Card运行的硬件系统大多是EEPROM或Embedded Flash介质的安全芯片,这种安全芯片可以称为传统安全芯片。传统安全芯片提供的存储空间一般只有1M字节左右,承载Java Card系统后留给用户的空间较少。图1为传统安全芯片上的Java Card结构示意图,其中8100表示安全芯片上的Java Card系统;8101表示Java Card系统中的JavaCard虚拟机;8102表示Java Card系统中的实现的符合Java Card规范的通用接口;8103表示Java Card系统中的实现的其他组件;8104表示安全芯片提供的非易失性存储空间读写接口,其中读操作一般都是通过地址指针获取数据,写操作一般有独立的接口。有些存储介质需要以最小擦写扇区进行写操作,擦除和写入可以合并也可以相互独立,也有些存储介质无需擦除任意地址写入。8105是用户区的读写操作接口,Java Card系统通过8105提供的读写接口进行读写操作。8106表示安全芯片上的非易失性存储单元,一般分为两部分:一部分是8107,用于存储用户数据,在系统运行时可以进行读写操作,另一部分是8112,用于存储系统代码数据,该部分在系统运行中只能读取不可进行写操作。8108是用户空间中的一个Java Card应用数据(假设该应用安装在连续的地址空间)。8109是芯片内核负责数据处理函数执行等操作。8110是供外部通讯的各类接口。8111是内核访问代码等数据的接口。
但是用户期望Java Card能够提供多个领域的行业应用,那么就需要大容量存储空间的安全芯片来承载Java Card系统。传统安全芯片中也有少数大容量的型号但成本较高,所以行业中引进了Nor Flash安全芯片,它可以提供2M字节、4M字节或者更大的空间且成本较低。但是Nor Flash安全芯片每次擦除最小擦写扇区需要的时间较长,在该类芯片上承载Java Card系统时,Nor Flash擦写的性能严重的影响了Java Card的性能,所以通常会在Java Card系统与Nor Flash之间建立一个Flash管理层(FML:Flash ManagementLayer),FML可以提供一个虚拟的逻辑空间,Java Card系统向FML提供的虚拟空间写入数据时,FML可以避免每次写入数据需要进行Nor Flash擦除,从而提高了Nor Flash上JavaCard系统数据写入的性能。
图2为Nor Flash安全芯片上使用FML层的Java Card结构示意图。相对于图1主要差异点在8200至8209。8200是空间管理层FML的示意图。8201是FML提供给系统调用的读写接口。8202是FML提供给系统的虚拟存储空间。8203是虚拟空间上的一个应用,如同传统芯片的用户空间上的应用,分布在一个连续的逻辑地址空间上。8204是Nor Flash提供的用户空间,该空间可以通过地址指针读取数据,但是数据写入时所在地址只能由比特1写成比特0,如果需要由比特0写为比特1,必须先进行擦除操作。通常Nor Flash的最小擦写扇区是4K字节,意味着即使只将某个字节由0x00写为0x01,先需要将该字节所在的整个4K字节扇区进行擦除,再把该字节由0xFF写为0x01;若由0x01写为0x00,则无需进行擦除操作。基于NorFlash的特性,FML管理Nor Flash空间时,将Nor Flash的最小擦写扇区分为多个区间进行管理,这些区间可以简单的分为有效、可写以及无效区间等,有效区间指该区间是某个逻辑地址映射的区间,其中存储的数据是有效的;可写区间是数据进行更新时可以保证数据完整写入,无效区间是进行数据更新时某些地址无法由比特0写为比特1,无法满足数据写入的完整性。8205、8206、8207是逻辑空间中8203的数据组成,在虚拟空间中8203可能在连续的逻辑地址上,实际用户空间上可能分布在不连续多个FML管理区间上。8208表示FML管理区间中一个无效的区间。8209表示FML管理区间中一个可写的区间。
图3为现有的FML结构中其中几种示意图。8300是常规的FML结构,其中8301是需要提供的逻辑空间,8302是逻辑空间8301映射的区间,所有的8301中的地址空间均可映射到8302中,8302中的可写区间是共用,该结构的对于每个逻辑地址页而言,可用于写的物理区间是相同的,数据写入速度较快,但是由于逻辑地址映射到物理地址的的区间较大,地址映射算法耗时,数据读取速度较慢。8303是8300的优化结构,其中增加了8304备用数据映射空间,相对于8300,当可写空间不足、无效空间也比较少时,进行数据写入,可利用备用映射空间进行数据存储,写入备份空间后,原数据映射区的无效空间增多从而方便进行空间回收。8305结构是在8303基础上将逻辑地址分为多段,物理映射空间也分为多段,8306是逻辑空间中的一段逻辑地址,8307是物理空间中的一段物理地址,8306中的逻辑空间映射到8307中,8306中的每个逻辑页在8307中共用相同数量的可写区间,该结构极大地提高了数据读取速度,但是每段逻辑映射的物理区间较小,对8306中的逻辑地址重复写入时,很快就会导致8307中的可写区间不足,从而使用备用区或者造成空间整理,其写入的性能相比8303结构稍慢。
应用于Nor Flash的Java Card系统,通过使用FML提供的虚拟逻辑空间,虽然更新应用数据的性能有了明显的提升,但是Java Card系统通过FML读取应用数据的性能相对于直接访问地址读取应用数据的性能有细微的下降。
Java Card系统运行用户区的应用程序时需要读取相应字节码供虚拟机解析,尽管通过FML读数据的性能相对于直接访问用户区只有细微的下降,但读取操作执行次数较多,所以对Java Card的整体性能有显著的影响。
Java Card系统需要给Java Card应用提供一套用于保证业务流程原子性操作的事务功能,图4为Java Card应用的一种业务的流程图。图5为Java Card系统一种实现事务功能的流程图。该功能提供了事务开启、事务提交、事务中止等相关接口。事务功能需要满足,事务开启直到事务提交包含的原子写操作全部成功或者全部失败;事务开启到事务提交过程中,如果需要将所有原子写操作更新的数据恢复到事务开始前的状态,执行事务中止即可到达目的。Java Card系统实现这一个功能时需要多次进行原数据的备份,才能满足事务中止的数据恢复功能。在反复执行原子性业务流程时,Java Card系统使用的备份空间被反复地更新数据,而FML提供给该虚拟空间的可写区间是有限的,当多次更新数据后,FML中可用于写入的区间不足,FML管理的区间中,不可用于写入的包含无效数据的区间越来越多,此时需要进行FML空间整理与回收,通过整理有效数据以及擦除无效数据的擦写扇区,增加可写区间的数量。Nor Flash的擦除操作比较耗时,所以应用在Nor Flash上的JavaCard即使使用了FML提高了数据写入的性能,它在Java Card事务功能上的性能方面,也比传统安全芯片有较大的损失。
因此,如何开发设计一种高效的空间管理方法来解决Nor Flash安全芯片上JavaCard系统的性能缺失,已经成为目前亟待解决的技术问题。
发明内容
针对现有技术中的缺陷,本发明提供一种应用于Java Card的Nor Flash管理层及方法,能够为Java Card系统提供较快应用数据读取接口,提升应用字节码解析以及事务的性能,从而达到Java Card各个应用场景的性能需求。
第一方面,一种应用于Java Card的Nor Flash管理层,
包括空间管理模块、逻辑空间、主映射区和辅助映射区;其中,所述逻辑空间包括多个逻辑页,所述主映射区包括多段主空间,所述辅助映射区包括多段辅助空间;
每个逻辑页均映射至一主空间,且映射关系不变;
逻辑页还映射至一辅助空间,且映射关系不固定;
所述空间管理模块用于对主映射区和辅助映射区进行数据读写、空间回收和数据的数据状态管理。
优选地,还包括备用映射区;所述逻辑页还映射至所述备用映射区,且映射关系不固定。
优选地,还包括事务管理模块,用于提供Java Card的事务功能。
优选地,所述主空间、辅助空间和备用映射区中存储有多个数据,以及对应的数据状态、逻辑页地址和逻辑页版本号;
所述数据状态包括初始化状态、可写状态、读有效状态、无效状态、事务状态。
第二方面,一种应用于Java Card的Nor Flash管理方法,在第一方面所述管理层中的空间管理模块上运行,包括以下步骤:
接收用户的第一写指令,在逻辑页写入数据;当该逻辑页对应的主空间存在可写空间时,将该数据写入该主空间中,当该逻辑页对应的主空间不存在可写空间时,将该数据写入辅助映射区或备用映射区的可写空间中;
接收用户的第二写指令,在逻辑页写入数据,将该数据写入辅助映射区或备用映射区的可写空间中。
优选地,所述当该逻辑页对应的主空间存在可写空间时,将该数据写入该主空间中,当该逻辑页对应的主空间不存在可写空间时,将该数据写入辅助映射区或备用映射区的可写空间中具体包括:
如果该主空间存在数据状态为初始化状态或可写状态的可写空间时,将该数据写入该可写空间中,设置该可写空间中该数据的数据状态为读有效状态;
如果该主空间不存在数据状态为初始化状态或可写状态的可写空间时,在辅助映射区或备用映射区中寻找数据状态为可写状态的可写空间,将该数据写入该可写空间中,并根据该逻辑页的地址和版本号更新该可写空间中新写入数据的逻辑页地址和逻辑页版本号,设置该可写空间中新写入数据的数据状态为读有效状态。
优选地,所述接收用户的第二写指令,在逻辑页写入数据,将该数据写入辅助映射区或备用映射区的可写空间中具体包括:
接收用户的第二写指令,在辅助映射区或备用映射区中寻找数据状态为可写状态的可写空间,将该数据写入该可写空间中;并根据该逻辑页的地址和版本号更新可写空间中该新写入数据的逻辑页地址和逻辑页版本号,设置可写空间中该新写入数据的数据状态为读有效状态。
优选地,所述空间回收具体包括:
在数据写入过程中,如果辅助映射区或备用映射区均不存在可写空间时,对辅助映射区或备用映射区的数据进行整理,使得辅助映射区或备用映射区中存在一最小擦写扇区中所有数据的数据状态为无效状态时,对该最小擦写扇区进行擦除,将数据写入该最小擦写扇区中。
第三方面,一种应用于Java Card的Nor Flash管理方法,在第一方面所述管理层中的事务管理模块上运行,包括以下步骤:
当接收到用户的开启事务指令时,在主映射区、辅助映射区和备用映射区中设置开启事务指令中指定的备份数据的数据状态为事务状态,在主映射区、辅助映射区或备用映射区中写入开启事务指令中指定的新数据;
当接收到用户的事务提交指令时,设置所述备份数据的数据状态为无效状态,设置该新数据的数据状态为读有效状态;
当接收到用户的事务中止指令时,将数据状态为事务状态的数据重新写入主映射区、辅助映射区或备用映射区中,并将该数据的数据状态由事务状态修改为无效状态,设置该新写入的数据的数据状态为读有效状态。
由上述技术方案可知,本发明提供的应用于Java Card的Nor Flash管理层(FML)及方法,拥有一个主映射区和一个辅助映射区,可以包含或者不包含一个备用映射区。所有的逻辑页在主映射区间均有一一对应的物理地址空间且映射关系不会发生改变,由于映射关系不变,该主空间的有效数据可以被极快地读取。如果逻辑页中的数据需要更新,该逻辑页对应的主空间已经被使用,此时该数据会被更新到辅助映射区,如果包含备用映射区,当辅助映射区没有对应的可写空间时,该数据会被更新到备用映射区。同时,该架构还拥有事务功能,开启事务功能后,事务需要保护的原数据会标记成事务状态,从而避免了被FML进行空间回收;当事务提交时,这些被标记为事务状态的数据会标记成无效状态,可以参与空间回收;当事务中止时,标记为事务状态的数据会作为源数据重新写入新的可写空间,写入后事务状态才会被标记成无效状态参与空间回收,这样能够为Java Card系统提供较快应用数据读取接口,提升应用字节码解析以及事务的性能,从而达到Java Card各个应用场景的性能需求。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。
图1为背景技术提供的传统安全芯片上的Java Card结构示意图。
图2为背景技术提供的Nor Flash安全芯片上使用FML层的Java Card结构示意图。
图3为背景技术提供的现有的FML结构中其中几种示意图。
图4为背景技术提供的Java Card应用的一种业务的流程图。
图5为背景技术提供的Java Card系统一种实现事务功能的流程图。
图6为本发明实施例一提供的数据状态的切换示意图。
图7为本发明实施例一提供的Nor Flash管理层(FML)的架构图。
图8是本申请实施例二提供的一种FML地址映射示意图。
图9是本申请实施例二提供的一种FML中一个擦写扇区分区示意图。
图10是本申请实施例二提供的一种FML主映射区映射示意图。
图11是本申请实施例二提供的一种FML辅助映射区或备用映射区映射示意图。
图12是本申请实施例三提供的FML事务流程示意图。
图13是本申请实施例三提供的Java Card平台使用FML事务的示意图。
具体实施方式
下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只作为示例,而不能以此来限制本发明的保护范围。需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
Java Card应用是以CAP文件的形式存在,先加载到Java Card系统中,再安装一个或者多个应用实例。CAP文件中包含了应用的方法、常量池等组件数据,这些数据在载入Java Card系统后,其数据值是不会改变的。安装的实例主要包含实例运行时使用的对象。虚拟机运行实例时,主要的读操作都是读取CAP载入时写入的方法、常量等数据,写操作的对象都是实例生成的对象。总体来讲,Java Card系统运行Java Card应用(实例)时,主要的读操作是在CAP数据区,主要的写都在实例生成的数据区。对于FML来讲这两个区最大区别在于,一个是更新频率较低的区间,另一个是数据更新频率高的区间。
实施例一:
一种应用于Java Card的Nor Flash管理层,参见图7,
包括空间管理模块、逻辑空间、主映射区和辅助映射区;其中,所述逻辑空间包括多个逻辑页,所述主映射区包括多段主空间,所述辅助映射区包括多段辅助空间;
每个逻辑页均映射至一主空间,且映射关系不变;
逻辑页还映射至一辅助空间,且映射关系不固定;
所述空间管理模块用于对主映射区和辅助映射区进行数据读写、空间回收和数据的数据状态管理。
优选地,还包括备用映射区;所述逻辑页还映射至所述备用映射区,且映射关系不固定。
优选地,还包括事务管理模块,用于提供Java Card的事务功能。
优选地,所述主空间、辅助空间和备用映射区中存储有多个数据,以及对应的数据状态、逻辑页地址和逻辑页版本号;
所述数据状态包括初始化状态、可写状态、读有效状态、无效状态、事务状态。
具体地,数据状态的切换示意图如图6所示。初始化状态只会在FML格式化时存在,FML格式化时,主映射区EUH中的EUS均为初始化状态。初始化状态下的主映射区对应的数据块可以进行读和写,读操作返回的数据是全0x00或者全0xFF(根据需求来定),相当于格式化完成后,在没有写的情况下,默认返回的数据。辅助映射区和备用映射区EUH中的EUS均为可写状态。
步骤1为格式化后,向数据映射区A首次写入数据时,数据映射区A对应的EUH中EUS会转变成读有效状态。
步骤2为向数据映射区A写入数据(格式化后非首次),此时数据映射区A映射的数据块i是读有效状态,FML会找到一个可写状态的数据块j保存新的数据,此时原数据块i转变成无效状态。
步骤3为数据块i所在的sector(4K)被擦除后,数据块i后转变成可写状态(数据块i参与了垃圾回收)。
步骤4为数据块i处于可写状态下,在多次写逻辑地址时,分配数据块i为新的数据存储块,当数据更新到数据块i后,数据块i的EUS更变成读有效状态。
步骤5为当前数据映射区A映射的数据块是数据块i,开启FML事务写后,向数据映射区A首次写入数据时,FML会找到一个可写状态的数据块j保存新的数据,此时数据块i不可作为无效数据,需要当做备份数据留作事务中止时恢复数据,将数据块i标记成事务状态,事务状态下的数据块只能用于事务中止时的数据恢复,不可参与垃圾回收。
步骤6为当数据块i处于事务状态时,表明已经开启了FML事务功能:当FML事务提交时,数据块i的备份作用就结束了,此时数据块i的状态更变成无效状态。当事务过程异常时,FML事务回滚开启,当数据块i中的数据作为原数据,数据块i的BAI中的逻辑地址B作为目的逻辑地址,逻辑地址B的当前映射数据块是数据块k,FML找到一个可写的数据块j,将数据块i中的内容更新到数据块j中,数据块j称为逻辑地址B新的数据映射块,数据块k和数据块i的EUS更新为无效状态。
具体地,图7中,10100是应用于Java Card平台的Nor Flash管理层的总体架构,10101是主映射区;10102是辅助映射区;10103是备用映射区,它是可选的;10104是事务管理模块,用来提高Java Card事务功能的性能;10105是空间管理模块,它实现优先将10102或10103中更新频率低的映射数据整理到主映射区中,同时也可以擦除数据全是无效状态的Nor Flash擦写扇区(即最小擦写扇区)。数据的更新频率可以通过以下方法确定:例如在逻辑页中进行数据更新时,记录逻辑页更新的次数,该次数称为逻辑页版本号。假设10102或10103中有效逻辑页的版本号为M,该逻辑页在10101中的原版本号为N,M与N的差值越大,说明逻辑页数据的更新频率越高,反之说明逻辑页数据的更新频率越低,10106是10100结构下逻辑页地址与物理地址映射关系示意图。
该管理层FML拥有一个主映射区和一个辅助映射区,可以包含或者不包含一个备用映射区。所有的逻辑页在主映射区内均有一一对应的主空间且映射关系不会发生改变,由于映射关系不变,便可以被极快地读取该主空间的有效数据,能够为Java Card系统提供较快的应用数据读取接口,提升应用字节码解析以及事务的性能,从而达到Java Card各个应用场景的性能需求。
实施例二:
一种应用于Java Card的Nor Flash管理方法,在实施例一所述管理层中的空间管理模块上运行,包括以下步骤:
接收用户的第一写指令,在逻辑页写入数据;当该逻辑页对应的主空间存在可写空间时,将该数据写入该主空间中,当该逻辑页对应的主空间不存在可写空间时,将该数据写入辅助映射区或备用映射区的可写空间中;
接收用户的第二写指令,在逻辑页写入数据,将该数据写入辅助映射区或备用映射区的可写空间中。
优选地,所述当该逻辑页对应的主空间存在可写空间时,将该数据写入该主空间中,当该逻辑页对应的主空间不存在可写空间时,将该数据写入辅助映射区或备用映射区的可写空间中具体包括:
如果该主空间存在数据状态为初始化状态或可写状态的可写空间时,将该数据写入该可写空间中,设置该可写空间中该数据的数据状态为读有效状态;
如果该主空间不存在数据状态为初始化状态或可写状态的可写空间时,在辅助映射区或备用映射区中寻找数据状态为可写状态的可写空间,将该数据写入该可写空间中,并根据该逻辑页的地址和版本号更新该可写空间中新写入数据的逻辑页地址和逻辑页版本号,设置该可写空间中新写入数据的数据状态为读有效状态。
优选地,所述接收用户的第二写指令,在逻辑页写入数据,将该数据写入辅助映射区或备用映射区的可写空间中具体包括:
接收用户的第二写指令,在辅助映射区或备用映射区中寻找数据状态为可写状态的可写空间,将该数据写入该可写空间中;并根据该逻辑页的地址和版本号更新可写空间中该新写入数据的逻辑页地址和逻辑页版本号,设置可写空间中该新写入数据的数据状态为读有效状态。
该管理方法在接收到第一写指令时,写入更新频率高的数据,如果逻辑页写入数据时,如果该逻辑页对应的主空间已经被使用,此时该数据会被更新到辅助映射区,当辅助映射区没有对应的可写空间时,该数据会被更新到备用映射区。如果接收到第二写指令时,写入更新频率低的数据,将数据写入对应的辅助映射区或备用映射区。
以下给出一具体实施例对该管理方法进行说明。
假设最小擦写扇区(Erase Sector)为4K字节、逻辑页大小为256字节。下文以及图中以Sector表示一个最小擦写扇区,将一个Sector以256字节等分,每个Sector可以分为16个块。
假设数据映射区按照图8进行划分,10200是一个实施例的主映射区,由主空间10201和10202组成。10203为辅助映射区,由10204和10205两个独立的辅助空间组成的。10206是本实施例中的备用映射区。
图9中,10300是每个Sector中的第一个等分块,将作为所在Sector的管理信息记录区,称之为EUH(Erase Unit Header),10304是Sector除去10300之外的15个等分块将用作数据存储,称为数据区,10305是数据区中一个数据存储块。10301为EUH中每个数据块的状态,即数据状态,称之为EUS(Erase Unit Status)。10302是EUH中记录每个数据存储块的逻辑页地址信息BAI(Block Address Information),即包含了逻辑页地址和逻辑页版本号。
图10说明了本实施例逻辑空间与主映射区的映射关系。逻辑页地址(LogicalPage Address)为LPAddr,该逻辑页地址在主映射区中映射的主空间的物理块地址(Physical Block Address)为PBAddr,最小擦写扇区为ES_Size,ES_Size大小为4K,逻辑页和映射物理块均为Page,Page大小为256字节,每个Sector可以分为16个块记为BNum(BlockNumber)。
通过LPAddr计算映射的PBAddr的过程如下:
LPAddr除以Page取整,再对BNum取余可以得到LPAddr在一个Sector里面的数据块编号index,由于每个Sector只有BNum-1块数据,分别编号是0到BNum-2,那么当index在0到BNum-2时,一个Sector里面的数据块刚好可以一一映射,当index为BNum-1时,LPAddr无法在同一个sector中映射,需要映射到另外一个sector中。如此将index在0到BNum-2的LPAddr的映射空间叫作主空间1,index为BNum-1的映射空间叫作主空间2。LPAddr在主空间1的Sector编号SN(Sector Number)可以通过LPAddr除以ES_Size取整可以得到。那么每一个主空间1中的Sector都会少一个数据块用来存index为BNum-1的逻辑地址,所以每BNum-1个主空间1中的Sector就会多出BNum-1个,这BNum-1个逻辑页映射数据块正好可以存在主空间2中一个Sector中,其在主空间2的Sector编号以及index是根据主空间1中的Sector的编号来计算,主空间1中的Sector的编号SN除以BNum-1得到在主空间2的Sector编号,SN对BNum-1取余再对BNum取余得到在主空间2的Sector中的index。
具体地,如果逻辑页对应的主空间的数据块处于不可写状态(除初始化状态和可写状态以外的状态)或者是无可用空间,就需要对该逻辑页进行数据更新,该逻辑页的数据会被写入辅助映射区或者备用映射区中,辅助映射区或者备用映射区中一个Sector数据映射的可能状态如图11所示。由于逻辑页的映射不固定,所以需要根据Sector查找的可写映射区,即可写空间,所以如果逻辑页的数据写入辅助映射区或者备用映射区,那么需要循环遍历BAI信息才能找到逻辑页对应的数据块。为了提高该映射区间数据读的性能,辅助映射区利用了类似图3中的8305的结构,备用映射区利用了类似图3中的8300的结构。其中辅助空间1对逻辑页地址段划分较小,辅助空间2对逻辑页地址段划分较大,如每60K字节的逻辑空间共用辅助空间1中的一个Sector,每240K字节的逻辑空间共用辅助空间2中的一个Sector。所有的逻辑空间共用备用映射区。当FML进行读取时,先查看主映射区中的数据块状态,如果是无效则查找对应的辅助空间1中sector的BAI信息找到读有效的映射数据块,如果辅助空间1没有其对应的有效数据块,则查找辅助空间2再查找备用映射区,直到获取有效数据。
综上所述,该方法能够让更新频率较低的区间有极快的读取速度,那么Java Card运行CAP实例应用时,其解析字节码的性能将有很大的提升。
优选地,所述空间回收具体包括:
在数据写入过程中,如果辅助映射区或备用映射区均不存在可写空间时,对辅助映射区或备用映射区的数据进行整理,使得辅助映射区或备用映射区中存在一最小擦写扇区中所有数据的数据状态为无效状态时,对该最小擦写扇区进行擦除,将数据写入该最小擦写扇区中。
具体地,如果进行FML写操作时,在主空间、辅助空间1、辅助空间2和备用映射区中都不能找到一个可写状态的数据块进行更新,就启动空间整理回收垃圾空间,从而得到可写数据块。
本发明实施例所提供的方法,为简要描述,实施例部分未提及之处,可参考前述产品实施例中相应内容。
实施例三:
一种应用于Java Card的Nor Flash管理方法,参见图12、13,在实施例一所述管理层中的事务管理模块上运行,包括以下步骤:
当接收到用户的开启事务指令时,在主映射区、辅助映射区和备用映射区中设置开启事务指令中指定的备份数据的数据状态为事务状态,在主映射区、辅助映射区或备用映射区中写入开启事务指令中指定的新数据;
当接收到用户的事务提交指令时,设置所述备份数据的数据状态为无效状态,设置该新数据的数据状态为读有效状态;
当接收到用户的事务中止指令时,将数据状态为事务状态的数据重新写入主映射区、辅助映射区或备用映射区中,并将该数据的数据状态由事务状态修改为无效状态,设置该新写入的数据的数据状态为读有效状态。
具体地,该方法还拥有事务功能,开启事务功能后,事务需要保护的原数据会标记成事务状态,从而避免了被FML进行空间回收;当事务提交时,这些被标记为事务状态的数据会标记成无效状态,可以参与空间回收;当事务中止时,标记为事务状态的数据会作为源数据重新写入新的可写空间,写入后事务状态才会被标记成无效状态参与空间回收,这样能够为Java Card系统提供较快应用数据读取接口,提升应用字节码解析以及事务的性能,从而达到Java Card各个应用场景的性能需求。
该方法还实现的事务功能,主要作用在于能够恢复数据,保证业务的原子性,FML在数据更新时,多数情况下原映射的数据将会标记为无效数据,更新的数据会写入另外一个可写区间,如果使用FML实现事务功能,将原数据备份的过程被替代为标记原映射有效数据为事务数据,其不再为无效数据,无需进行额外的备份,减少了无效区间的产生,同时也减少了数据的写入次数。Java Card系统实现事务功能时,调用FML提供的事务功能接口即可。
本发明实施例所提供的方法,为简要描述,实施例部分未提及之处,可参考前述产品实施例中相应内容。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。
Claims (7)
1.一种应用于Java Card的Nor Flash管理层,其特征在于,
包括空间管理模块、事务管理模块、逻辑空间、主映射区和辅助映射区;其中,所述逻辑空间包括多个逻辑页,所述主映射区包括多段主空间,所述辅助映射区包括多段辅助空间;
每个逻辑页均映射至一主空间,且映射关系不变;
逻辑页还映射至一辅助空间,且映射关系不固定;
所述空间管理模块用于对主映射区和辅助映射区进行数据读写、空间回收和数据的数据状态管理;
所述事务管理模块用于提供Java Card的事务功能,
其中,每段所述主空间和每段所述辅助空间中存储有多个数据,以及对应的数据状态、逻辑页地址和逻辑页版本号;
所述数据状态包括初始化状态、可写状态、读有效状态、无效状态和事务状态,所述事务状态下的数据块只能用于事务中止时的数据恢复,不参与垃圾回收;
所述空间管理模块优先将所述辅助映射区中更新频率小于预设值的映射数据整理到所述主映射区中,以及擦除数据全是无效状态的Nor Flash最小擦写扇区,其中,数据的更新频率基于所述数据对应的逻辑页版本号确定。
2.根据权利要求1所述应用于Java Card的Nor Flash管理层,其特征在于,
还包括备用映射区;所述逻辑页还映射至所述备用映射区,且映射关系不固定。
3.一种应用于Java Card的Nor Flash管理方法,其特征在于,在权利要求1所述管理层中的空间管理模块上运行,包括以下步骤:
接收用户的第一写指令,在逻辑页写入数据;当该逻辑页对应的主空间存在可写空间时,将该数据写入该主空间中,当该逻辑页对应的主空间不存在可写空间时,将该数据写入辅助映射区或备用映射区的可写空间中;
接收用户的第二写指令,在逻辑页写入数据,将该数据写入辅助映射区或备用映射区的可写空间中。
4.根据权利要求3所述应用于Java Card的Nor Flash管理方法,其特征在于,所述当该逻辑页对应的主空间存在可写空间时,将该数据写入该主空间中,当该逻辑页对应的主空间不存在可写空间时,将该数据写入辅助映射区或备用映射区的可写空间中具体包括:
如果该主空间存在数据状态为初始化状态或可写状态的可写空间时,将该数据写入该可写空间中,设置该可写空间中该数据的数据状态为读有效状态;
如果该主空间不存在数据状态为初始化状态或可写状态的可写空间时,在辅助映射区或备用映射区中寻找数据状态为可写状态的可写空间,将该数据写入该可写空间中,并根据该逻辑页的地址和版本号更新该可写空间中新写入数据的逻辑页地址和逻辑页版本号,设置该可写空间中新写入数据的数据状态为读有效状态。
5.根据权利要求3所述应用于Java Card的Nor Flash管理方法,其特征在于,所述接收用户的第二写指令,在逻辑页写入数据,将该数据写入辅助映射区或备用映射区的可写空间中具体包括:
接收用户的第二写指令,在辅助映射区或备用映射区中寻找数据状态为可写状态的可写空间,将该数据写入该可写空间中;并根据该逻辑页的地址和版本号更新可写空间中新写入数据的逻辑页地址和逻辑页版本号,设置可写空间中该新写入数据的数据状态为读有效状态。
6.根据权利要求3所述应用于Java Card的Nor Flash管理方法,其特征在于,所述空间回收具体包括:
在数据写入过程中,如果辅助映射区或备用映射区均不存在可写空间时,对辅助映射区或备用映射区的数据进行整理,使得辅助映射区或备用映射区中存在一最小擦写扇区中所有数据的数据状态为无效状态时,对该最小擦写扇区进行擦除,将数据写入该最小擦写扇区中。
7.一种应用于Java Card的Nor Flash管理方法,在权利要求1所述管理层中的事务管理模块上运行,包括以下步骤:
当接收到用户的开启事务指令时,在主映射区、辅助映射区和备用映射区中设置开启事务指令中指定的备份数据的数据状态为事务状态,在主映射区、辅助映射区或备用映射区中写入开启事务指令中指定的新数据;
当接收到用户的事务提交指令时,设置所述备份数据的数据状态为无效状态,设置该新数据的数据状态为读有效状态;
当接收到用户的事务中止指令时,将数据状态为事务状态的数据重新写入主映射区、辅助映射区或备用映射区中,并将该数据的数据状态由事务状态修改为无效状态,设置该新写入的数据的数据状态为读有效状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910753581.9A CN110471626B (zh) | 2019-08-15 | 2019-08-15 | 应用于Java Card的Nor Flash管理层及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910753581.9A CN110471626B (zh) | 2019-08-15 | 2019-08-15 | 应用于Java Card的Nor Flash管理层及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110471626A CN110471626A (zh) | 2019-11-19 |
CN110471626B true CN110471626B (zh) | 2023-04-25 |
Family
ID=68511513
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910753581.9A Active CN110471626B (zh) | 2019-08-15 | 2019-08-15 | 应用于Java Card的Nor Flash管理层及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110471626B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113778330B (zh) * | 2021-08-05 | 2023-04-25 | 无锡融卡科技有限公司 | 一种基于Flash存储器的事务处理方法 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1290014A (zh) * | 1999-09-29 | 2001-04-04 | 三星电子株式会社 | 快闪存储器及其控制方法 |
CN101075211A (zh) * | 2007-06-08 | 2007-11-21 | 马彩艳 | 基于sector访问的flash存储器的存储管理 |
CN101980177A (zh) * | 2010-10-21 | 2011-02-23 | 北京握奇数据系统有限公司 | 一种操作Flash的方法和装置 |
CN102063263A (zh) * | 2009-11-18 | 2011-05-18 | 成都市华为赛门铁克科技有限公司 | 固态硬盘响应主机读写操作请求的方法、设备及系统 |
CN102662849A (zh) * | 2012-03-07 | 2012-09-12 | 忆正科技(武汉)有限公司 | 多通道闪存的区块管理方法 |
CN102855162A (zh) * | 2011-06-27 | 2013-01-02 | 国民技术股份有限公司 | 一种数据更新方法、数据更新系统及存储器 |
CN102929792A (zh) * | 2012-11-12 | 2013-02-13 | 华为技术有限公司 | 数据移动方法和系统、存储设备和主机 |
CN103377135A (zh) * | 2012-04-25 | 2013-10-30 | 上海海尔集成电路有限公司 | 寻址方法、装置及系统 |
CN103514104A (zh) * | 2012-06-27 | 2014-01-15 | 安凯(广州)微电子技术有限公司 | 读取数据方法以及数据写入方法 |
CN104407813A (zh) * | 2014-11-20 | 2015-03-11 | 上海宝存信息科技有限公司 | 一种基于固态存储介质的raid系统及方法 |
CN104978154A (zh) * | 2015-07-27 | 2015-10-14 | 武汉天喻信息产业股份有限公司 | 一种基于缓存操作的flash快速读写方法及系统 |
CN105320686A (zh) * | 2014-07-29 | 2016-02-10 | 苏州融卡智能科技有限公司 | 一种优化java卡选择实例的方法 |
CN109656481A (zh) * | 2018-12-14 | 2019-04-19 | 成都三零嘉微电子有限公司 | 一种提高智能卡文件系统flash写入寿命的方法 |
-
2019
- 2019-08-15 CN CN201910753581.9A patent/CN110471626B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1290014A (zh) * | 1999-09-29 | 2001-04-04 | 三星电子株式会社 | 快闪存储器及其控制方法 |
CN101075211A (zh) * | 2007-06-08 | 2007-11-21 | 马彩艳 | 基于sector访问的flash存储器的存储管理 |
CN102063263A (zh) * | 2009-11-18 | 2011-05-18 | 成都市华为赛门铁克科技有限公司 | 固态硬盘响应主机读写操作请求的方法、设备及系统 |
CN101980177A (zh) * | 2010-10-21 | 2011-02-23 | 北京握奇数据系统有限公司 | 一种操作Flash的方法和装置 |
CN102855162A (zh) * | 2011-06-27 | 2013-01-02 | 国民技术股份有限公司 | 一种数据更新方法、数据更新系统及存储器 |
CN102662849A (zh) * | 2012-03-07 | 2012-09-12 | 忆正科技(武汉)有限公司 | 多通道闪存的区块管理方法 |
CN103377135A (zh) * | 2012-04-25 | 2013-10-30 | 上海海尔集成电路有限公司 | 寻址方法、装置及系统 |
CN103514104A (zh) * | 2012-06-27 | 2014-01-15 | 安凯(广州)微电子技术有限公司 | 读取数据方法以及数据写入方法 |
CN102929792A (zh) * | 2012-11-12 | 2013-02-13 | 华为技术有限公司 | 数据移动方法和系统、存储设备和主机 |
CN105320686A (zh) * | 2014-07-29 | 2016-02-10 | 苏州融卡智能科技有限公司 | 一种优化java卡选择实例的方法 |
CN104407813A (zh) * | 2014-11-20 | 2015-03-11 | 上海宝存信息科技有限公司 | 一种基于固态存储介质的raid系统及方法 |
CN104978154A (zh) * | 2015-07-27 | 2015-10-14 | 武汉天喻信息产业股份有限公司 | 一种基于缓存操作的flash快速读写方法及系统 |
CN109656481A (zh) * | 2018-12-14 | 2019-04-19 | 成都三零嘉微电子有限公司 | 一种提高智能卡文件系统flash写入寿命的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110471626A (zh) | 2019-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6381176B1 (en) | Method of driving remapping in flash memory and flash memory architecture suitable therefor | |
US8667213B2 (en) | Flash management techniques | |
JP2856621B2 (ja) | 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置 | |
EP2605142B1 (en) | Lba bitmap usage | |
CN109343790B (zh) | 一种基于nand flash的数据存储方法、终端设备及存储介质 | |
KR100449708B1 (ko) | 플래시 메모리 관리방법 | |
US7295479B2 (en) | Apparatus and method for managing bad blocks in a flash memory | |
KR100843543B1 (ko) | 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법 | |
JP5336060B2 (ja) | 不揮発性メモリ装置およびそれを動作させる方法 | |
US20040085849A1 (en) | Flash memory, and flash memory access method and apparatus | |
TWI423026B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
US20130151830A1 (en) | Mount-time reconciliation of data availability | |
KR20040014971A (ko) | 비휘발성 메모리의 제어방법 | |
JP4046877B2 (ja) | 一括消去型不揮発性メモリおよび携帯電話 | |
JP3421581B2 (ja) | 不揮発性半導体メモリを用いた記憶装置 | |
JP2008146253A (ja) | 記憶装置およびコンピュータシステム、並びに記憶装置のデータ処理方法 | |
CN110471626B (zh) | 应用于Java Card的Nor Flash管理层及方法 | |
CN107341049B (zh) | 一种事务处理的优化处理方法及装置 | |
KR100622113B1 (ko) | 데이터베이스 시스템을 위한 플래쉬 메모리 저장 시스템 및그 방법 | |
CN117555478A (zh) | 一种基于闪存的模拟eeprom读写方法 | |
EP1510924B1 (en) | Apparatus and method for handling transactions with writes and reads to EEPROM or Flash memories | |
US7167964B1 (en) | Memory defragmentation in chipcards | |
JP4794530B2 (ja) | 半導体装置および携帯電話 | |
CN116225332A (zh) | 存储管理方法、存储装置及嵌入式芯片 | |
CN116027973A (zh) | 一种基于闪存的数据写入方法及装置 |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: Room 501, Jinqian block, 10 Hongyi Road, Xinwu District, Wuxi City, Jiangsu Province, 214028 Applicant after: Wuxi rongka Technology Co.,Ltd. Address before: 518000 w805, north wing, west block, Shenzhen Hong Kong industry university research base, South 7th Road, Gaoxin, Nanshan District, Shenzhen City, Guangdong Province Applicant before: SHENZHEN RONGCARD Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |