CN102073544B - 一种基于页操作的EEPROM cache方法 - Google Patents
一种基于页操作的EEPROM cache方法 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 27
- 230000003139 buffering effect Effects 0.000 claims description 3
- 230000002708 enhancing effect Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种用于提高Java卡虚拟机性能的EEPROM cache方法。克服Java卡的多应用性与频繁写EEPROM而导致性能低下的矛盾,采用整页事务机制,将一个交易流程内的多次写EEPROM的过程,尽量合并到一次或是几次大的事务中来,进行页内一次性提交到EEPROM中,从而取代了传统的小单元的事务操作,这种方法节约EEPROM使用成本,提高Java卡的实际性能。
Description
技术领域
本发明属于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缓冲区中的数据结构包括数据所在页地址、实际更新数据的页内起始偏移、实际更新数据的页内最终偏移。
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)
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1534475A (zh) * | 2003-03-28 | 2004-10-06 | 英特尔公司 | 使用基于堆栈跟踪高速缓存器的动态剖析的内嵌 |
Family Cites Families (3)
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 | 株式会社リコー | 画像処理装置、情報処理装置、ユーザインタフェース提供方法、画像処理システムおよびプログラム |
-
2011
- 2011-01-28 CN CN 201110031976 patent/CN102073544B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1534475A (zh) * | 2003-03-28 | 2004-10-06 | 英特尔公司 | 使用基于堆栈跟踪高速缓存器的动态剖析的内嵌 |
Non-Patent Citations (1)
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 |