加快程序执行的系统及其执行方法 【技术领域】
本发明是关于一种节省存储器空间的系统及其执行方法,尤指一种加快程序执行的系统及其执行方法。
背景技术
Java程序在虚拟机器(VM)上执行时,虚拟机器可以利用更改程序码的方式来加快执行速度。亦即,程序码储存在存储器(例如:动态随机存取存储器(RAM))中,并在执行后写回存储器,其中,程序码在执行过程中会被加上一些资讯而成为较复杂的快速指令,供下次再执行同样的一段程序(例如.class中的某函式)时,可以参考该等资讯以增快执行速度,但这种加快指令执行速度的方法有一个限制,即所有的程序码必须放置于动态随机存取存储器中。
然而,以目前的嵌入式系统或存储器有限的系统(例如:手机),其动态随机存取存储器约仅有500K位元组的空间,而系统程序库便占用了110K位元组,若再加上原本手机所提供应用程序的空间,其空间将占用400K左右,则将大大地减少整个系统的可用动态随机存取存储器,即占用了太多动态随机存取存储器,造成存储器资源运用的困难,进而导致系统执行效能的降低。
【发明内容】
本发明的主要目的在于提供一种加快程序执行系统及其执行方法,能大幅减少Java虚拟机器的存储器使用量。
为实现上述目的,本发明所提供的加快程序执行的系统包括:
一静态存储器,用以储存至少一系统程序库,其包括复数系统程序码,每一系统程序码具有一相对应的程序位址索引值;以及
一动态存储器,具有复数记录空间(Entries),每一记录空间包括一第一资料单元与一第二资料单元,该第一资料单元用以置放一第一比对值,该第二资料单元用以置放一执行资料,其中,执行该等系统程序码通过一程序指位器(IP),该程序指位器包括一程序位址索引值与一第二比对值,以供通过该程序位址索引值对应其中一记录空间,并由该第一比对值与该第二比对值确认该执行资料。
其中,该静态存储器为只读存储器(ROM)。
其中,该静态存储器为快取存储器(Cache)。
其中还包括一随机存取存储器,以用来储存由网络端下载或使用者程序的复数程序码,并提供该等程序码执行空间。
其中,该等系统程序码与该等程序码为Java程序码。
本发明提供的加快程序执行的方法,主要包括下述步骤:
(A)撷取一程序指令,若该程序指令为一不能加速的指令集,则执行该程序指令;
(B)若该程序指令为一快速指令集,则利用该程序指令先前执行时所增加地资料来快速执行;
(C)若该程序指令为一可加速的指令集,则利用一程序指位器(IP)作为索引值,以确认动态存储器内有储存该指令的加速资料;
(D)若该程序指令于动态存储器内有储存加速资料,则通过该动态存储器内容来快速执行;
(E)若该程序指令于动态存储器内没有储存加速资料,且该程序指令为在一随机存取存储器中的程序,则执行该程序指令,并在该程序指令增加加速资料;以及
(F)若该程序指令于动态存储器内没有储存加速资料,且该程序指令为在一静态存储器中的程序,则执行该程序指令,并更改该动态存储器内容,且将其相对应的至少一加速资料置于该动态存储器。
其中,该程序指令为Java程序指令。
其中,该动态存储器为快取存储器。
【附图说明】
图1为本发明的系统示意图。
图2为本发明的动作流程图。
【具体实施方式】
有关本发明的较佳实施例,是以一手机平台上执行Java程序来加以说明。敬请参照图1所示的系统示意图,其主要包括静态存储器1、动态存储器2及随机存取存储器(RAM)3。其中,动态存储器2包含复数记录空间(Entry)21,每一记录空间21包含第一资料单元211与第二资料单元212,以分别用来暂存比对资料与加速资料。
于本实施例中,静态存储器1较佳为只读存储器(ROM),以用来储存系统函式库。动态存储器2较佳为快取存储器(Cache),以用来暂存静态存储器1中的系统函式库执行后的可加速资料。动态存储器2的大小较佳为4K位元组,每一记录空间21的大小较佳为4个位元组,即动态存储器2具有1024个记录空间21。第一资料单元211的大小较佳为1个位元组,第二资料单元212的大小较佳为3个位元组。随机存取存储器3用来储存由网络端下载的应用程序或一般使用者程序,并提供该等应用程序执行快速指令的空间。
有关本发明的动作流程,敬请参照图2显示的动作流程图,当Java虚拟机器(VM)在执行一段程序码时(例如.class中的某一个函式(Function)),Java虚拟机器先由静态存储器1或随机存取存储器3撷取程序指令(步骤S201)。接著,判断该程序指令的型态,若程序指令已经执行过且属于快速指令集,则利用先前在这个指令加上的一些资料来执行所需执行的动作,以快速执行该程序指令,此类快速指令集指令为储存于随机存取存储器3中的程序指令(步骤S202)。
若程序指令属于不能加速的一般指令集,则以一般模式来执行(即以正常速度来执行)(步骤S203)。若该程序指令尚未执行过且属于可以加速的一般指令,则以VM的程序指位器(IP)为索引值,找寻这段程序是否在动态存储器(cache)2中。此程序指位器(IP)主要包含程序位址索引值与比对值,程序位址索引值为对应至动态存储器2中的1024个记录空间21,比对值则用来与动态存储器2的第一资料单元211相比对。于本实施例中,程序位址索引值较佳为位元1-位元10,比对值较佳为位元11-位元18。例如:程序指位器为0×12345,48为比对值,345为索引值,并对应至动态存储器2的第345个记录空间21,以对第345个记录空间21的内容确认。
若第345个记录空间21的211的内容为48,则代表这个Java指令已经执行过。所以,利用动态存储器2的第二资料单元212中的加速资料执行所需的动作(步骤S204)。若程序指令尚未被执行过,则确认此程序指令是否为随机存取存储器(RAM)3中的程序。
若程序指令非储存于随机存取存储器(RAM)3中的程序(即储存于静态存储器1中的系统函式库),则执行程序指令,并将程序指位器所对应的第345个记录空间21中的第一资料单元211与第二资料单元212予以更改,其主要将第一资料单元211的比对值更改为48,且将加速资料放入第二资料单元212。当然,若第345个记录空间21中的第一资料单元的11的比对值不同时,即此记录空间21可能已经储存有其他程序指令相对应的加速资料,则在程序指令执行完后,将第一资料单元211与第二资料单元212内容更改(步骤S205)。
若程序指令储存于随机存取存储器(RAM)3中的程序,则执行此程序指令,并将其更改为快速指令集,且增加加速资料,供下次执行此程序指令能直接通过加速资料来快速执行(步骤S206)。本实施例,经验证后,执行一般程序的击中率将达97%以上,若再将加速资料和没有加速资料分开成两个动态存储器2来放置,则使得击中率到达98%以上。
由以上说明可知,本发明主要利用一静态存储器来放置系统函式库,并增加一动态存储器来提供系统函式库指令执行。其中,程序指位器具有一比对值与一索引值,动态存储器中的每一笔记录空间可暂存一比对值与加速资料,供程序指位器对应至特定记录空间,并比对该等比对值,以执行指令,能大幅减少Java虚拟机器的存储器使用量。
上述实施例仅为了方便说明而举例而已,本发明所主张的权利范围自应以申请专利范围所述为准,而非仅限于上述实施例。