CN114579208B - 一种Java卡的自适应调整执行速度提升方法 - Google Patents
一种Java卡的自适应调整执行速度提升方法 Download PDFInfo
- Publication number
- CN114579208B CN114579208B CN202210480459.0A CN202210480459A CN114579208B CN 114579208 B CN114579208 B CN 114579208B CN 202210480459 A CN202210480459 A CN 202210480459A CN 114579208 B CN114579208 B CN 114579208B
- Authority
- CN
- China
- Prior art keywords
- java
- ram
- array
- execution
- instruction
- 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
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44557—Code layout in executable memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44568—Immediately runnable code
- G06F9/44578—Preparing or optimising for loading
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种Java卡的自适应调整执行速度提升方法,该方法实现了Java卡程序根据不同的Applet执行过程中使用到的Java指令的次数多少,将执行频率最高的Java指令拷贝到ram中执行,形成热码区,执行频率低的Java指令在flash中执行,形成冷码区。通过此方法不仅比通常的Java指令都在flash中执行的JAVA卡执行速度快,而且针对不同客户的Java Applet的执行,也做了速度优化。从而总体上实现了JAVA卡的自适应的执行速度的最优最快。
Description
技术领域
本发明涉及智能卡技术领域,尤其涉及一种Java卡的自适应调整执行速度提升方法。
背景技术
目前的Java卡程序是存储在flash中,执行时,是cpu从flash中读取,执行程序指令。flash由于与工艺有关,读取flash的速度是固定的,读取速度比较慢,不会随着cpu主频提高而提高,但是ram的读取速度与cpu的主频有关,主频越高,读取速度就越快,正常情况下ram的读取速度是Flash的几倍,甚至几十倍,几百倍,同时ram的写速度也非常快。
基于上述缺点,因此需要找到一种能够将执行频率较高的指令程序从flash拷贝到ram上,由cpu直接从ram中读取指令,从而提升执行速度的方法。
发明内容
本发明的目的在于提供一种JAVA卡的自适应调整执行速度提升方法,从而解决现有技术中存在的前述问题。
为了实现上述目的,本发明采用的技术方案如下:
一种Java卡的自适应调整执行速度提升方法,通过构建冷热码模板表将Java平台由此划分热码区域和冷码区域,热码区域放置高频执行代码,在ram中执行,冷码区域放置低频执行代码,在flash中执行;所述构建冷热码模板表可以通过客户Applet的前期执行自学习实现,具体包括以下步骤:
S1,定义两个Java指令函数数组Java_byteCode_Array0[]和Java_byteCode_Array1[],所述数组Java_byteCode_Array0[]存储Java指令函数的地址和长度,Java指令函数体存储在flash程序区;所述数组Java_byteCode_Array1[],包含对应Java指令函数的函数体起始地址,并将其存储在flash程序区中;
S2,Java卡上电复位过程中,将数组Java_byteCode_Array1[]从flash拷贝到ram中,同时判断其中的Java指令程序地址是否在ram中,如在ram中,该Java指令的flash地址从数组Java_byteCode_Array0[]中对应索引位置的指令存储地址获取,将对应的函数体从flash拷贝到ram中;若不在ram中,则不拷贝函数体;
S3,执行Java Applet,如果在执行前收到统计counter指令,则进入步骤S4,否则直接正常执行Java Applet直至结束;
S4,在ram中创建couter_Array[]数组,将couter_Array[]数组清为0,并统计Java Applet执行过程中各个Java指令执行的次数;
S5,根据执行Applet过程中Java指令执行的次数统计,将执行次数最多的Java指令函数体拷贝到ram中,从而下次执行时,Java指令程序由cpu从ram中读取执行。
优选的,步骤S1中定义的数组Java_byteCode_Array0[]的长度为0xB9,每个数组成员由Java指令函数体起始地址和函数体长度组成,Java_byteCode_Array0[]数组中按照Java指令的索引排序。如nop指令的索引为0x00,所以放在数组索引为0的位置,putfield_i_this的索引为0xB9,其执行指令函数体起始地址就放在数组索引为0xB9的位置上。
优选的,所述数组Java_byteCode_Array1[]形成一个固定模板,模板采用链表式存储组成,其中所有内部方法函数的链表,均可支持增删改查,动态更新管理。
优选的,步骤S4中创建的数组counter_Array[],用于Java指令执行的次数统计;根据执行Applet过程中Java指令执行的次数统计,将执行次数最多的几个Java指令函数体拷贝到ram中,从而下次执行时,Java指令程序由cpu从ram中读取执行,同时修改指令nop和sconst_m1在数组Java_byteCode_Array1[]中的Java指令函数地址,该地址为ram中的对应的函数体起始地址。
优选的,在确认拷贝的指令个数时,需要考虑的是空闲的ram空间大小,拷贝到ram中的Java函数体的大小不能超过空闲的RAM空间大小,然后将Java_byteCode_Array1[]数组回写到flash中原来位置,下次复位后,就将修改后的执行最优的Java_byteCode_Array1[]数组作为整体从flash中拷贝到ram中。
本发明的有益效果是:
本发明提供了一种Java卡的自适应调整执行速度提升方法,该方法实现了Java卡程序根据不同的Applet执行过程中使用到的Java指令的次数多少,将执行频率最高的Java指令拷贝到ram中执行,形成热码区,执行频率低的Java指令在flash中执行,形成冷码区。通过此方法不仅比通常的Java指令都在flash中执行的JAVA卡执行速度快,而且针对不同客户的Java Applet的执行,也做了速度优化。从而总体上实现了JAVA卡的自适应的执行速度的最优最快。
附图说明
图1是实施例1中提供的JAVA卡的自适应调整执行速度提升方法流程示意图;
图2是实施例1中提供的数组Java_byteCode_Array0[]的原理示意图;
图3是实施例1中提供的数组Java_byteCode_Array1[]的原理示意图;
图4是实施例1中提供的数组counter_Array[]原理示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
实施例1
本实施例提供了一种Java卡的自适应调整执行速度提升方法,如图1所示,通过构建冷热码模板表将JAVA平台由此划分热码区域和冷码区域,热码区域放置高频执行代码,在ram中执行,冷码区域放置低频执行代码,在flash中执行;所述构建冷热码模板表可以通过客户Applet的前期执行自学习实现,包括以下步骤:
S1,定义2个Java指令函数数组Java_byteCode_Array0[]和Java_byteCode_Array1[],其中一个数组Java_byteCode_Array0[]存储了Java指令函数的地址和长度,Java指令函数体存储在flash程序区,数组Java_byteCode_Array1[],包含了Java指令函数体起始地址,这两个数组都存储在flash程序区中。
S2,Java卡上电复位过程中,将数组Java_byteCode_Array1[]从flash拷贝到ram中,同时判断其中的Java指令程序地址是否在ram中,如在ram中,指令的flash地址从Java_byteCode_Array0[]数组中对应索引位置的指令存储地址获取,将对应的函数体从flash拷贝到ram中;若不在ram中,则不拷贝函数体;
S3,执行Java Applet,如果在执行前收到统计counter指令,则进入步骤S4,否则直接正常执行Java Applet直至结束;
S4,在ram中创建couter_Array[]数组,将couter_Array[]数组清为0,并统计Java Applet执行过程中各个Java指令执行的次数;
S5,根据执行Applet过程中Java指令执行的次数统计,将执行次数最多的Java指令函数体拷贝到ram中,从而下次执行时,Java指令程序由cpu从ram中读取执行。
本实施例中,步骤S1中定义的数组Java_byteCode_Array0[]存储了Java指令函数的地址和长度,Java指令函数体存储在flash程序区,如图2所示,由于Java卡的指令有0xB9个,所以结构数组Java_byteCode_Array0[]的长度为0xB9,每个数组成员由Java指令函数体起始地址和函数体长度组成,Java_byteCode_Array0[]数组中按照Java指令的索引排序,如nop指令的索引为0x00,所以放在数组索引为0的位置,putfield_i_this的索引为0xB9,其执行指令函数体起始地址就放在数组索引为0xB9的位置上。
定义的数组Java_byteCode_Array1[],其中包含了Java指令函数体起始地址,如图3所示,该数组也存储在flash中,Java卡上电复位过程中,从flash拷贝到ram中。
步骤S4中创建的数组counter_Array[],用于Java指令执行的次数统计。根据执行Applet过程中Java指令执行的次数统计,将执行次数最多的几个Java指令函数体拷贝到ram中,从而下次执行时,Java指令程序由cpu从ram中读取执行。如图4所示,在Java applet执行过程中,指令nop和sconst_m1执行次数较多,就将其执行函数体从flash拷贝到ram中,同时修改指令nop和sconst_m1在数组Java_byteCode_Array1[]中的Java指令函数地址,该地址为ram中的对应的函数体起始地址。
基于上述的修改,使得下次上电复位时,对应的Java指令nop和sconst_m1函数体也会提前从flash拷贝到ram中,指令的flash地址从Java_byteCode_Array0[]数组中对应索引位置的指令存储地址获取,从而实现快速执行过程。
需要注意的是,在确认拷贝的指令个数时,需要考虑的是空闲的RAM空间大小,比如空余2KB的ram,那拷贝到ram中的Java函数体的大小不能超过2KB,然后将Java_byteCode_Array1[]数组回写到flash中原来位置,下次复位后,就将修改后的执行最优的Java_byteCode_Array1[]数组作为整体从flash中拷贝到ram中。如复位开始没有收到清counter指令,就是正常的执行过程。
通过这种方法可以根据具体的加载到Java卡上的Applet动态调整拷贝到ram中的Java指令,从而达到速度最快。
通过采用本发明公开的上述技术方案,得到了如下有益的效果:
本发明提供了一种JAVA卡的自适应调整执行速度提升方法,该方法实现了JAVA卡程序根据不同的Applet执行过程中使用到的Java指令的次数多少,将执行频率最高的Java指令拷贝到ram中执行,形成热码区,执行频率低的Java指令在flash中执行,形成冷码区。通过此方法不仅比通常的Java指令都在flash中执行的JAVA卡执行速度快,而且针对不同客户的Java Applet的执行,也做了速度优化。从而总体上实现了JAVA卡的自适应的执行速度的最优最快。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
Claims (5)
1.一种Java卡的自适应调整执行速度提升方法,其特征在于,通过构建冷热码模板表将JAVA平台由此划分热码区域和冷码区域,热码区域放置高频执行代码,在ram中执行,冷码区域放置低频执行代码,在flash中执行;所述构建冷热码模板表通过客户Applet的前期执行自学习实现,具体包括以下步骤:
S1,定义两个Java指令函数数组Java_byteCode_Array0[]和Java_byteCode_Array1[],所述数组Java_byteCode_Array0[]存储Java指令函数的地址和长度,Java指令函数体存储在flash程序区;所述数组Java_byteCode_Array1[],包含对应Java指令函数的函数体起始地址,并将其存储在flash程序区中;
S2,Java卡上电复位过程中,将数组Java_byteCode_Array1[]从flash拷贝到ram中,同时判断其中的Java指令程序地址是否在ram中,如在ram中,该Java指令的flash地址从数组Java_byteCode_Array0[]中对应索引位置的指令存储地址获取,将对应的函数体从flash拷贝到ram中;若不在ram中,则不拷贝函数体;
S3,执行Java Applet,如果在执行前收到统计counter指令,则进入步骤S4,否则直接正常执行Java Applet直至结束;
S4,在ram中创建couter_Array[]数组,将couter_Array[]数组清为0,并统计JavaApplet执行过程中各个Java指令执行的次数;
S5,根据执行Applet过程中Java指令执行的次数统计,将执行次数最多的Java指令函数体拷贝到ram中,从而下次执行时,Java指令程序由cpu从ram中读取执行。
2.根据权利要求1所述的Java卡的自适应调整执行速度提升方法,其特征在于,步骤S1中定义的数组Java_byteCode_Array0[]的长度为0xB9,每个数组成员由Java指令函数体起始地址和函数体长度组成,Java_byteCode_Array0[]数组中按照Java指令的索引排序。
3.根据权利要求1所述的Java卡的自适应调整执行速度提升方法,其特征在于,所述数组Java_byteCode_Array1[]形成一个固定模板,模板采用链表式存储组成,其中所有内部方法函数的链表,均可支持增删改查,动态更新管理。
4.根据权利要求1所述的Java卡的自适应调整执行速度提升方法,其特征在于,步骤S4中创建的数组counter_Array[],用于Java指令执行的次数统计;根据执行Applet过程中Java指令执行的次数统计,将执行次数最多的几个Java指令函数体拷贝到ram中,从而下次执行时,Java指令程序由cpu从ram中读取执行,同时修改指令nop和sconst_m1在数组Java_byteCode_Array1[]中的Java指令函数地址,该地址为ram中的对应的函数体起始地址。
5.根据权利要求1所述的Java卡的自适应调整执行速度提升方法,其特征在于,在确认拷贝的指令个数时,需要考虑空闲的ram空间大小,拷贝到ram中的Java函数体的大小不能超过空闲的ram空间大小,然后将Java_byteCode_Array1[]数组回写到flash中原来位置,下次复位后,就将修改后的执行最优的Java_byteCode_Array1[]数组作为整体从flash拷贝到ram中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210480459.0A CN114579208B (zh) | 2022-05-05 | 2022-05-05 | 一种Java卡的自适应调整执行速度提升方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210480459.0A CN114579208B (zh) | 2022-05-05 | 2022-05-05 | 一种Java卡的自适应调整执行速度提升方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114579208A CN114579208A (zh) | 2022-06-03 |
CN114579208B true CN114579208B (zh) | 2022-08-26 |
Family
ID=81778845
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210480459.0A Active CN114579208B (zh) | 2022-05-05 | 2022-05-05 | 一种Java卡的自适应调整执行速度提升方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114579208B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6101580A (en) * | 1997-04-23 | 2000-08-08 | Sun Microsystems, Inc. | Apparatus and method for assisting exact garbage collection by using a stack cache of tag bits |
CN102662806A (zh) * | 2012-02-29 | 2012-09-12 | 浙江大学 | 一种针对Java卡不同性能指标的自适应测试方法 |
CN103927187A (zh) * | 2014-05-09 | 2014-07-16 | 成都凯智科技有限公司 | 嵌入式系统程序执行方法 |
CN104077173A (zh) * | 2013-03-31 | 2014-10-01 | 宋浩 | 智能卡内java程序指令的执行方法及智能卡 |
CN111443991A (zh) * | 2020-03-26 | 2020-07-24 | 恒宝股份有限公司 | 智能卡控制方法、装置及智能卡 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7412581B2 (en) * | 2003-10-28 | 2008-08-12 | Renesas Technology America, Inc. | Processor for virtual machines and method therefor |
US10740316B2 (en) * | 2015-10-14 | 2020-08-11 | Dr Holdco 2, Inc. | Cache optimization for data preparation |
CN108090341A (zh) * | 2017-12-15 | 2018-05-29 | 深圳市文鼎创数据科技有限公司 | Java卡控制方法及Java卡 |
-
2022
- 2022-05-05 CN CN202210480459.0A patent/CN114579208B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6101580A (en) * | 1997-04-23 | 2000-08-08 | Sun Microsystems, Inc. | Apparatus and method for assisting exact garbage collection by using a stack cache of tag bits |
CN102662806A (zh) * | 2012-02-29 | 2012-09-12 | 浙江大学 | 一种针对Java卡不同性能指标的自适应测试方法 |
CN104077173A (zh) * | 2013-03-31 | 2014-10-01 | 宋浩 | 智能卡内java程序指令的执行方法及智能卡 |
CN103927187A (zh) * | 2014-05-09 | 2014-07-16 | 成都凯智科技有限公司 | 嵌入式系统程序执行方法 |
CN111443991A (zh) * | 2020-03-26 | 2020-07-24 | 恒宝股份有限公司 | 智能卡控制方法、装置及智能卡 |
Non-Patent Citations (1)
Title |
---|
Java智能卡指令折叠优化算法的研究与实现;刘天华等;《International Conference on Computer,Communications and Information Technology(CCIT 2014)》;20140116;第410-413页 * |
Also Published As
Publication number | Publication date |
---|---|
CN114579208A (zh) | 2022-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7908443B2 (en) | Memory controller and method for optimized read/modify/write performance | |
CN106156278B (zh) | 一种数据库数据读写方法和装置 | |
CN107239392B (zh) | 一种测试方法、装置、终端及存储介质 | |
CN109997118B (zh) | 在永久存储器系统中以超高速一致地存储大量数据的方法 | |
JP2008537618A (ja) | 自動化ページベースのramシャドウイングを備えるコンピュータ装置、及び、操作方法 | |
US11526960B2 (en) | GPU-based data join | |
CN114398318B (zh) | 用户空间文件系统的文件操作方法及用户空间文件系统 | |
TW202109513A (zh) | 在區塊鏈中同時執行交易的方法和裝置及電腦可讀儲存媒體與計算設備 | |
CN109508301A (zh) | 终端、应用数据的处理方法、数据处理设备及存储介质 | |
CN102662714A (zh) | 一种Linux操作系统及其启动方法 | |
US9110791B2 (en) | Optimistic object relocation | |
CN114579208B (zh) | 一种Java卡的自适应调整执行速度提升方法 | |
CN106293790A (zh) | 基于Firefox操作系统的应用程序升级方法和装置 | |
CN109324929B (zh) | 一种快照创建方法、装置、设备及可读存储介质 | |
CN112487028A (zh) | 服务器数据存储的方法、系统、电子装置和存储介质 | |
US20050268157A1 (en) | Method for writing data to a non-volatile memory embedded in an integrated circuit and corresponding circuit | |
CN107315632A (zh) | 一种双调合并排序方法及系统 | |
US6532532B1 (en) | Instruction execution mechanism | |
CN114691549A (zh) | 一种文件写入方法、装置及计算设备 | |
CN111651124B (zh) | Ssd映射表多核分区并行重建方法、装置、设备及介质 | |
CN114691537A (zh) | 一种访问存储器的方法及信息处理设备 | |
CN110955515A (zh) | 一种文件的处理方法、装置、电子设备及存储介质 | |
US20050251795A1 (en) | Method, system, and program for optimizing code | |
CN112130961B (zh) | 基于numa架构的容器绑定方法及系统 | |
CN117393046B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |