CN102073544B - 一种基于页操作的EEPROM cache方法 - Google Patents

一种基于页操作的EEPROM cache方法 Download PDF

Info

Publication number
CN102073544B
CN102073544B CN 201110031976 CN201110031976A CN102073544B CN 102073544 B CN102073544 B CN 102073544B CN 201110031976 CN201110031976 CN 201110031976 CN 201110031976 A CN201110031976 A CN 201110031976A CN 102073544 B CN102073544 B CN 102073544B
Authority
CN
China
Prior art keywords
eeprom
data
page
cache buffer
buffer area
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
CN 201110031976
Other languages
English (en)
Other versions
CN102073544A (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.)
Wuhan Tianyu Information Industry Co Ltd
Original Assignee
Wuhan Tianyu Information Industry 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 Wuhan Tianyu Information Industry Co Ltd filed Critical Wuhan Tianyu Information Industry Co Ltd
Priority to CN 201110031976 priority Critical patent/CN102073544B/zh
Publication of CN102073544A publication Critical patent/CN102073544A/zh
Application granted granted Critical
Publication of CN102073544B publication Critical patent/CN102073544B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种用于提高Java卡虚拟机性能的EEPROM cache方法。克服Java卡的多应用性与频繁写EEPROM而导致性能低下的矛盾,采用整页事务机制,将一个交易流程内的多次写EEPROM的过程,尽量合并到一次或是几次大的事务中来,进行页内一次性提交到EEPROM中,从而取代了传统的小单元的事务操作,这种方法节约EEPROM使用成本,提高Java卡的实际性能。

Description

一种基于页操作的EEPROM cache方法
技术领域
本发明属于java卡领域,具体涉及到一种基于页操作的EEPROM cache方法,在applet运行过程中,可以减少写EEPROM的次数,以此来提高Java卡的性能。
背景技术
Java卡是Java平台中最小的成员,其设定的执行环境为智能卡上的芯片或是有严格硬件限制的环境。Java卡的问世,一方面是为了推展Java的应用层次,一方面也是为了将Java平台的特性以及Java的好处带到智能卡上,由于在java卡之上开发应用的平台无关性和安全性,Java卡已经被用于金融和通讯等多个领域中。
从卡片软件体系结构上,我们可以将Java卡分为以下几个模块:GPAPI、Java卡API、JCVM、kernel和hal五个功能模块:
GP API:Global Platform API,用来实现Global Platform的API接口功能;
Java卡API:用来实现供Java卡applet调用的应用接口;
JCVM:实现Java卡解释器,完成JCRE功能;
Kernel:实现硬件抽象层的接口,用于连接底层与上层的通讯、写EEPROM等操作;
Hal:提供硬件接口;
在java卡之上开发应用虽然方便,但是与传统智能卡比较而言,性能是它最大的瓶颈,如果提高applet的执行性能,特别是交易过程中的性能,是我们需要研究的重点。
EEPROM cache模块能使交易流程中多次更新EEPROM操作,最大程度的统一到极少的操作次数,能有效的提供交易流程的性能。
Java卡体系JCRE、VM和API都是存储为Code段,放在ROM中的,ram仅仅是作为临时变量存储区。Java卡堆栈是在ram中申请,立即数、方法参数和局部变量都存储在Java卡堆栈中,persistent data如applet class、applet instance和其它的持久对象都存储在EEPROM中,见附图1中描述卡中三种类型的memory存储。
EEPROM提供了与RAM相同的读写模式,但是EEPROM的更新却比RAM的更新要慢1000倍,而且EEPROM存在寿命上面的限制,如下表所示。
  Memory类型   write/erase次数   写一个单元需要的时间
  RAM   无限制   70ns
  EEPROM   10,000-1,000,000   310ms
对于传统的Java卡,applet流程中的每一次对对象域、数组域(非暂态)的赋值操作,都会写一次EEPROM,而且为了保证原子性,每一次都会启动一次事务,并且进行提交。这种做法,在对于对象的频繁赋值中,性能会下降的很厉害,而且频繁的启动事务,对EEPROM的寿命也会大打折扣,如图3。
发明内容
为了克服对EEPROM频繁操作而使得Java卡性能低下的矛盾,本发明提出了一种基于页操作的EEPROM cache方法,将对象的多次赋值操作,在页内进行cache,先放到缓冲区保存,然后在整个流程完成后,进行一次统一的提交,这样既能提高Java卡的应用性能,又能节约EEPROM的使用寿命。
本发明的技术方案是:
一种基于页操作的EEPROM缓冲(cache)方法,包括如下步骤:
(1)写EEPROM,对对象域进行更新操作(这里只包含对对象的访问):
putfield_x由原来的直接原子写,修改为现在的更新到RAM中的cache缓冲区中,整个过程结束后,一次性提交到EEPROM中。具体为:
(1.1)如果缓存缓冲区为空,直接将对象域数据所在页拷贝到用于cache的缓存缓冲区。
(1.2)如果cache中有数据,判断所写对象域数据是否和已经缓存在cache中的数据在同一页中,如果是,直接在cache中更新数据,否则进入步骤(2)。
(2.3)判断是否有空闲的cache块,如果没有,提交上述已经缓存在cache中的数据,然后进入步骤(1.1);如果有,进入步骤(1.1)。
(2)提交cache:
如果虚拟机运行发生异常,直接清空cache数据;如果正常结束,提交cache到目的EEPROM(在发送数据前提交cache)。
(3)读EEPROM(这里只包含对对象的访问):
首先根据目的EEPROM地址判断该地址是否在cache中,如果在,从cache中读取该数据,如果不在,则从EEPROM中读取。
本发明的有益效果是:
显著的提高了Java卡虚拟机的运行速度,并且增加的EEPROM的使用寿命。
本发明采用整页事务机制,将一个交易流程内的多次写EEPROM的过程,尽量合并到一次或是几次大的事务中来,进行页内一次性提交到EEPROM中,从而取代了传统的小单元的事务操作,这种方法节约EEPROM使用成本,提高Java卡的实际性能。
该方法可以在一定程度上将多次写EEPROM的过程压缩成一次。具有提高应用交易性能和节约EEPROM寿命的特点。
对于applet访问对象,绝大多数情况对应的是访问EEPROM的内容(如附图2),对于Java卡applet运行时,我们将多次更新EEPROM的过程进行了优化,以期望达到更新EEPROM次数达到最少的效果。
附图说明
图1为applet语句与字节码之间的对应关系示意图。
图2为java语言与实际字节码的隐射示意图。
图3为传统Java卡赋值操作示意图。
图4为基于页操作的cache机制赋值操作示意图。
具体实施方式
下面参照附图,将详细叙述本发明的具体实施方式。
研究发现,虚拟机的一个apdu的Process过程,并没有在处理开始就启动一个全局的事务,流程的完整性,是需要用户调用JCSystem的启动事务接口来启动的,而对于对象域、数据域的赋值,都是原子写的过程,这就导致了很多局部的原子事务操作,而且对象的赋值操作,局部性比较明显。
图4中显示了Java卡在进行array数组赋值中的更新流程,对于每一次赋值过程,新流程并没有马上更新到相应的EEPROM中,而是先将要更新的数据cache到缓冲区中,等到整个流程结束,然后把cache中的数据一次性的更新到目的EEPROM中,通过图3和图4的对比,我们可以看出,对于同一页的多次更新,新流程可以缩减为一次,这样可以极大的提高Java卡的性能(写EEPROM的时间所占比重比较大)。
具体设计如下:
将getfield_X字节码访问EEPROM对象,由原来的直接读取EEPROM内容,修改为cache读EEPROM内容;
将_aaload、_baload、_saload、_iaload字节码访问EEPROM对象,由原来的直接读取EEPROM内容,修改为cache读EEPROM内容;
将_putfield_a、_putfield_a_w、_putfield_a_this、_putfield_b、_putfield_b_w、_putfield_b_this、_putfield_s、_putfield_s_w、_putfield_s_this、_putfield_i、_putfield_i_w、_putfield_i_this字节码更新EEPROM对象,由原来的直接更新EEPROM内容,修改为cache更新EEPROM内容;
将_aastore、_bastore、_sastore、_iastore字节码更新EEPROM对象,由原来的直接更新EEPROM内容,修改为cache更新EEPROM内容;
Cache数据结构包括cache数据所在页地址、实际更新数据的页内起始偏移、实际更新数据的页内最终偏移。提交数据的时候,只需要提交页内起始偏移到页内最终偏移之间的数据,这样可以保证写备份区数据很大概率不会超过一页,而写目的数据终于只在一个页内操作,不会出现跨页的情形。
当用户主动提交事务、发送数据给用户的时候,要确保cache数据已经提交,以保证原子性。
注:对于字节码的意义,见Java Card 2.2 Virtual Machine Specification涉及到写EEPROM的具体实例:
非Transient对象的赋值操作,都会涉及到对EEPROM的写操作,比如:
byte array[]=new byte[256];
array[0]=(byte)0xA5;
array[1]=(byte)0x5A;
这里的array就是存储到EEPROM的一个对象,对它的成员进行赋值,也都发生在EEPROM上,对应的字节码如下:
sspush            256
newarray
astore_3
aload_3
sconst_0
bspush            xa5
bastore
aload_3
sconst_1
bspush            x5a
bastore
基于页操作的cache机制,会将对对象成员的赋值操作,bastore采用EEPROM cache的接口,首先保存到RAM中,然后等所有赋值都完成,进行一次性提交,同一页的数据,只需要提交一次,由此我们可以看出,对于一般对象的频繁赋值,采用基于页操作的EEPROM cache机制,可以显著提高Java卡的性能。

Claims (3)

1.一种基于页操作的EEPROM缓冲方法,将对对象的访问和更新操作以页为单位进行缓冲处理,然后进行一次统一的提交,该方法具体包括读EEPROM的步骤和写EEPROM的步骤;其中,
所述写EEPROM的步骤具体为:
(1)如果cache缓冲区为空,直接将对象数据所在页缓冲到cache缓冲区;
(2)如果cache缓冲区中有数据,判断所写数据是否和已经缓冲的数据在同一页中,如果是,直接在cache缓冲区中更新数据,否则提交cache缓冲区中的数据;
(3)判断是否有空闲的cache缓冲区块,如果没有,提交cache缓冲区中的数据;
所述读EEPROM的步骤具体为:
首先根据目的EEPROM地址判断该地址是否在cache缓冲区中,如果在,从该cache缓冲区中读取数据;如果不在,则直接从目的EEPROM中读取。
2.根据权利要求1所述的方法,其特征在于,所述提交cache缓冲区中的数据具体过程为:如果发生异常,直接清空cache缓冲区中的数据;否则,提交cache缓冲区中的数据到目的EEPROM。
3.根据权利要求1或2所述的方法,其特征在于,所述cache缓冲区中的数据结构包括数据所在页地址、实际更新数据的页内起始偏移、实际更新数据的页内最终偏移。
CN 201110031976 2011-01-28 2011-01-28 一种基于页操作的EEPROM cache方法 Active CN102073544B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201110031976 CN102073544B (zh) 2011-01-28 2011-01-28 一种基于页操作的EEPROM cache方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201110031976 CN102073544B (zh) 2011-01-28 2011-01-28 一种基于页操作的EEPROM cache方法

Publications (2)

Publication Number Publication Date
CN102073544A CN102073544A (zh) 2011-05-25
CN102073544B true CN102073544B (zh) 2012-11-21

Family

ID=44032090

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201110031976 Active CN102073544B (zh) 2011-01-28 2011-01-28 一种基于页操作的EEPROM cache方法

Country Status (1)

Country Link
CN (1) CN102073544B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102495754B (zh) * 2011-10-27 2014-03-26 飞天诚信科技股份有限公司 基于缓存的java卡事务处理方法
CN102591787B (zh) * 2011-12-19 2015-09-02 北京握奇数据系统有限公司 Java卡的数据处理方法及装置
CN103198038B (zh) * 2012-01-06 2016-11-09 国民技术股份有限公司 一种电可擦可编程只读存储器EEprom的操作控制方法及系统
CN106155941B (zh) * 2016-07-28 2019-08-20 河南西瑞医疗电子技术有限公司 利用sram缓存降低eeprom无效擦除写入操作的方法
CN109933340B (zh) * 2019-03-04 2022-12-09 北京空间飞行器总体设计部 一种航天器eeprom基于页模式的在轨写入和自检方法
CN111241008B (zh) * 2019-12-31 2022-09-23 潍柴动力股份有限公司 用于校正eeprom变量与地址的方法、装置和控制器
CN112948172B (zh) * 2021-02-01 2023-01-20 北京中电华大电子设计有限责任公司 一种基于具有页原子性flash芯片的镜像保护方法和数据结构

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1534475A (zh) * 2003-03-28 2004-10-06 英特尔公司 使用基于堆栈跟踪高速缓存器的动态剖析的内嵌

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7146607B2 (en) * 2002-09-17 2006-12-05 International Business Machines Corporation Method and system for transparent dynamic optimization in a multiprocessing environment
US7526771B2 (en) * 2003-11-12 2009-04-28 Ntt Docomo, Inc. Method and apparatus for configuring an application while the application is running
JP5608985B2 (ja) * 2009-02-25 2014-10-22 株式会社リコー 画像処理装置、情報処理装置、ユーザインタフェース提供方法、画像処理システムおよびプログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1534475A (zh) * 2003-03-28 2004-10-06 英特尔公司 使用基于堆栈跟踪高速缓存器的动态剖析的内嵌

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JP特开2004-110824A 2004.04.08

Also Published As

Publication number Publication date
CN102073544A (zh) 2011-05-25

Similar Documents

Publication Publication Date Title
CN102073544B (zh) 一种基于页操作的EEPROM cache方法
US10831376B2 (en) Flash-based accelerator and computing device including the same
KR100484485B1 (ko) 비휘발성 메모리에의 데이터 저장 방법 및 장치
CN103164346B (zh) 使用lba位图的方法与系统
US6272607B1 (en) Method and apparatus for transactional writing of data into a persistent memory
CN113785275B (zh) Flash数据掉电保护方法及设备
KR102434170B1 (ko) 하이브리드 메모리 시스템
US7461065B2 (en) Method and system for utilizing shared numeric locks
CN110175001A (zh) 一种nor-flash数据存储方法、计算机设备及存储介质
US11340808B2 (en) Latency-based storage in a hybrid memory system
CN102985910A (zh) 对无用存储单元收集的gpu支持
CN108897642A (zh) 持久性事务内存系统中日志机制的优化方法及装置
US20150268989A1 (en) Methods and Systems for Extending the Object Store of an Application Virtual Machine
CN115543224B (zh) 基于zns ssd的文件系统控制方法、装置及设备
US11327892B2 (en) Latency-based storage in a hybrid memory system
US20030042318A1 (en) Method and apparatus for linking converted applet files
CN107341049B (zh) 一种事务处理的优化处理方法及装置
US20080034022A1 (en) System and method for updating references when incrementally compacting a heap
CN106919344B (zh) 非易失性存储器及其存储方法
Choi et al. Efficient execution of application applets based on persistent object caching in Java card system
EP3948550A1 (en) An apparatus, method and computer program for managing memory page updates within non-volatile memory
Jin et al. A study on fast JCVM with new transaction mechanism and caching-buffer based on Java card objects with a high locality
Yu et al. Optimization of transaction mechanism on Java card
Loinig et al. Performance Improvement and Energy Saving Based on Increasing Locality of Persistent Data in Embedded Systems
EP1724677A1 (en) Memory management system and method in portable device

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant