常数资料存取系统及其方法

文档序号:6381587阅读:194来源:国知局
专利名称:常数资料存取系统及其方法
技术领域
本发明涉及一种常数存取系统及其方法。
背景技术
图1 为 Microprocessor without Interlocked Pipeline Stages 32 (MIP32)为一常见32位元已知常数存取方法。其中,其藉由二个32位元的指令,分别为取出上半立即值(Load Upper Immediate (LUI))及或立即值(Or Immediate (ORI))。如图1 所不,LUI提供携带上半32位元常数的内容而ORI提供携带下半32位元常数的内容。另一相关技术为程序计数器相关资料存取(Program-Counter-Relative DataAccess)。X86-64、ARM及DEC VAX都支源此技术。使用此技术的编译器将常数置于子程序之前或之后,并使用该程序计数器相关资料存取指令以存取该或该些常数。图2所示为一示例以解说如何使用程序计数器相关资料存取。如图2所示,程序码11是以C语言编写的一原始码,该原始码定义一简单子程序,该简单子程序用以取得一全域(global)变量(global_var)以增加其值并将该增加后的值回存于变量(global_var)所在的记忆体中。程序码13是一 ARM架构的组合码(Assembly Code),其是藉由一编译器编译前述C语言编写的程序码后而产生的组合码。于该组合码中,位址0x100的资料为该全域(global)变量(global_var)且其初始值为O,而该全域(global)变量(global_var)的位址为置于位址OxOOc的一常数资料。该全域(global)变量(global_var)的位址可藉由位于位址0x000的程序计数器相关载入指令取得。因此,用以存取常数资料的程序码大小(Code Size)为6位元组。然而,当子程序的程序码非常大时,该程序计数器相关载入指令所处的位址与该常数所处位址的距离亦会变长。若此情况发生时,该程序计数器相关载入指令的指令大小将变为4位元组。因此,存取该常数的程序码大小将变为8位元组。因此,本发明提供一种常数资料存取系统及其方法以解决上述问题。

发明内容
本发明的一个实施例为一种常数资料存取系统,包含一编译器、一指令集模组及一计算基处理器。该编译器,具有一常数集区处理器(Constant Pool Handler),该指令集模组,具有一常数集区基底暂存器(Base Register)管理指令集单元及一常数集区存取指令集单元,该计算机处理器具有一常数集区基底暂存器。其中该常数集区基底暂存器用以储存一或多个子程序(Sub-routine)的常数集区位址的值,该或该些子程序具有一或多个被存取的常数,其中该常数集区处理器用以管理及存取该或该些子程序的该或该些被存取的常数。本发明的一个实施例的该常数集区基底暂存器为一特定暂存器或该计算机处理器的多个普通目的(General Purpose)暂存器之一。本发明一个实施例为一计算机处理器,其支持一指令集模组,该计算机处理器包含一常数集区基础暂存器,该常数集区基础暂存器用以储存一或多个子程序的常数集区位址的值,该或该些子程序具有一或多个被存取的常数,其中,该指令集模组具有一常数集区基底暂存器(BaseRegister)管理指令集单元及一常数集区存取指令集单元。本发明一个实施例的该计算机处理器用以执行一编译器编译过的机械码(Machine Code),其中该编译器具有一常数集区处理器。本发明的一实施例为一种一或多个子程序的常数资料存取方法,其步骤包含置放一或多个常数于一常数集区中,判断该常数集区基础位址值,管理储存于一常数集区基础暂存器的值以及存取该或该些常数。其中,该存取该或该些常数的步骤藉由涉及(Involving)该常数集区基础暂存器的一或多个指令以达成。其中,该管理储存于该常数集区基础暂存器的值的步骤包含设定(Set)、备份(Save)及回复(Restore)该常数集区基础暂存器的该常数集区基础位址值。上文已经概略地叙述本发明的技术特征,下文的公开详细描述得以获得较佳了解。构成本发明的权利要求标的的其它技术特征将描述于下文。本发明所属技术领域中具有通常知识者应可了解,下文揭示的概念与特定实施例可作为基础而相当轻易地予以修改或设计其它结构或制程而实现与本发明相同的目的。本发明所属技术领域中具有通常知识者亦应可了解,这类等效的建构并无法脱离后附的权利要求所提出的本发明的精神和范围。


图1所示为藉由二个32位元指令所建构的具有32位元内容的现有常数存取方法;图2所示为一示例以解说如何使用程序计数器相关资料存取;图3所示为本发明一实施例的示意图;图4所示为本发明一实施例的该常数集区处理器的一或多个子程序的常数资料存取流程图;图5所示为本发明一实施例的该常数集区位置示意图;图6所示为本发明一实施例的该常数集区基础位址的位置示意图;图7所示为本发明一实施例设定、备份及回复子程序中常数集区基础位址值的示意图;图8所示为本发明另一实施例设定、备份及回复子程序中常数集区基础位址值的示意图;图9所示为本发明再一实施例设定、备份及回复子程序中常数集区基础位址值的示意图;图10所示为本发明再一实施例设定、备份及回复子程序中常数集区基础位址值的不意图;图11所示为本发明再一实施例设定、备份及回复子程序中常数集区基础位址值的不意图;图12所示为本发明再一实施例设定、备份及回复子程序中常数集区基础位址值的不意图;图13所示为本发明再一实施例设定及备份子程序中常数集区基础位址值的示意图;及图14所示为本发明再一实施例设定及备份子程序中常数集区基础位址值的示意图。附图标记说明11程序码13程序码20常数资料存取系统21编译器22原始码23计算机处理器24机械码25指令集模组26常数集区基底暂存器27常数集区处理器28常数集区基底暂存器管理指令集单元29常数集区存取指令集单元31常数集区33子程序41常数集区43常数集区基础位址S501 S507步骤
具体实施例方式本发明公开一常数资料存取系统。图3所示为本发明一实施例的示意图,如图3所示,该常数资料存取系统20包含一计算机处理器23、一编译器21及一指令集模组25。该计算机处理器23具有一常数集区基底暂存器26,该编译器21具有一常数集区处理器27,该指令集模组25具有一常数集区基底暂存器管理指令集单元28及一常数集区存取指令集单元29。该常数集区基底暂存器26用以储存储存一或多个子程序的常数集区位址的值,该或该些子程序具有一或多个可被存取的常数。其中该常数集区基底暂存器26为一特定暂存器或该计算机处理器的多个普通目的(General Purpose)暂存器之一。于该系统20中,该编译器21的主要功能为将一原始码22编译成一机械码24,该机械码24可被该计算机处理器23执行,另外,该编译器21使用该指令集模组25以编译该原始码22。于该编译器21中, 该常数集区处理器27用以管理及存取该或该些子程序的该或该些被存取的常数。图4所示为本发明一实施例的该常数集区处理器27的一或多个子程序的常数资料存取流程图。如图4所示,该常数资料存取方法的步骤包含如下,于步骤S501中,一或多个常数被置放于一常数集区中,于步骤S503中,一常数集区基础位址的值将被判断。于步骤S505中,于一常数集区基础暂存器中管理该常数集区基础位址值,其中于该常数集区基础暂存器中管理该常数集区基础位址值的步骤包含设定(Set)、备份(Save)及回复(Restore)该常数集区基础暂存器的该常数集区基础位址值。于步骤S507中,藉由涉及(Involving)该常数集区基础暂存器的一或多个指令以存取该或该些常数,该或该些多个指令是来自该常数集区存取指令集单元29。于步骤S501中,一或多个常数被置放于一常数集区中。如图5所示,图5所示为本发明一实施例的该常数集区位置示意图。该常数集区31位于一子程序33之后或之前。于步骤S503中,一常数集区基础位址的值将被判断。如图6所示,图6所示为本发明一实施例的该常数集区基础位址的位置示意图。该常数集区基础位址43是位于一常数集区41的一起始位址或该起始位址之前、该常数集区41的该起始位址及该常数集区的一结束位址之间、该结束位址或该结束位址之后。该常数集区基础暂存器26用以储存一或多个子程序(Sub-routine)的常数集区位址的值,该或该些子程序具有一或复数个被存取的常数,当该程序流程进入一新的子程序且该新的子程序是在子程序呼叫(Subroutine Call)及子程序返回(SubroutineReturn)时,该常数集区基础暂存器系使用该常数集区基础暂存器管理指令集单元28所管理,如步骤S505所示。该常数集区基础暂存器的管理方法的步骤包含:1.在呼叫程序(Caller)或一被呼叫程序(Callee)中使用推入-常数集区基础暂存器(Push-CPBR)指令在被呼叫程序的常数集区基础暂存器被设定之前备份该呼叫程序的常数集区基础暂存器。2.于该被呼叫程序的第一次常数存取之前设定该被呼叫程序的常数集区基础暂存器。前述步骤2有两种方式可以达成:甲、在该呼叫程序进行子程序呼叫时使用呼叫-并-设定常数集区基础暂存器(Call-and-Set-CPBR)指令。乙、在该被呼叫程序中使用设定-常数集区基础暂存器(Set-CPBR)指令。3.于该被呼叫程序的最后的常数存取之后且于该呼叫程序的下一常数存取之前还原该呼叫程序的常数集区基础暂存器。此步骤有两种方式可以达成:甲、在该被呼叫程序返回时使用取出-常数集区基础暂存器-且-返回(Pop-CPBR-and-return)指令。乙、在该呼叫程序或该被呼叫程序中使用取出-常数集区基础暂存器(Pop-CPBR)指令。另,为了更进一步简化程序码,步骤I的推入-常数集区基础暂存器(Push-CPBR)指令与步骤2的方法甲的呼叫-并-设定常数集区基础暂存器(Call-and-Set-CPBR)指令可合并成为一单一指令推入-常数集区基础暂存器-并-呼叫-并-设定常数集区基础暂存器(Push-CPBR-and-Call-and-Set-CPBR)。此外,步骤I的推入-常数集区基础暂存器(Push-CPBR)指令与步骤2的方法乙的设定-常数集区基础暂存器(Set-CPBR)指令可合并成为一单一指令推入-常数集区基础暂存器-并-设定常数集区基础暂存器(Push-CPBR-and-Set-CPBR)。下列示例为常数集区基础暂存器管理者于呼叫程序的子程序及被呼叫程序的子程序的组合。图7所示为本发明一实施例设定、备份及回复子程序中常数集区基础位址值的示意图。如图7所示,设定、备份及回复常数集区基础位址值于呼叫程序的子程序中。图8所示为本发明另一实施例设定、备份及回复子程序中常数集区基础位址值的示意图。如图8所示,设定及备份常数集区基础位址值于呼叫程序的子程序中并回复常数集区基础位址值于被呼叫程序的子程序中。图9所示为本发明再一实施例设定、备份及回复子程序中常数集区基础位址值的示意图。如图9所示,设定及回复常数集区基础位址值于呼叫程序的子程序中并备份常数集区基础位址值于被呼叫程序的子程序中。图10所示为本发明再一实施例设定、备份及回复子程序中常数集区基础位址值的示意图。如图10所示,备份常数集区基础位址值于呼叫程序的子程序中并设定及回复常数集区基础位址值于被呼叫程序的子程序中。图11所示为本发明再一实施例设定、备份及回复子程序中常数集区基础位址值的示意图。如图11所示,回复常数集区基础位址值于呼叫程序的子程序中并备份及设定常数集区基础位址值于被呼叫程序的子程序中。图12所示为本发明再一实施例设定、备份及回复子程序中常数集区基础位址值的示意图。如图12所示,回复、备份及设定常数集区基础位址值于被呼叫程序的子程序中。图13所示为本发明再一实施例设定及备份子程序中常数集区基础位址值的示意图。如图13所示,仅设定常数集区基础位址值于呼叫程序的子程序中。图14所示为本发明再一实施例设定及备份子程序中常数集区基础位址值的示意图。如图14所示,仅设定常数集区基础位址值于被呼叫程序的子程序中。本发明的技术内容及技术特点已揭示如上,然而熟悉本项技术之人士仍可能基于本发明的教示及揭示而作种种不背离本揭露精神的替换及修饰。因此,本发明的保护范围应不限于实施例所揭示的,而应包括各种不背离本发明的替换及修饰,并为以下的权利要求所涵盖。
权利要求
1.一种常数资料存取系统,包含: 一编译器,具有一常数集区处理器; 一指令集模组,具有一常数集区基底暂存器管理指令集单元及一常数集区存取指令集单元;以及 一计算机处理器,具有一常数集区基底暂存器; 其中,该常数集区基底暂存器用以储存一或多个子程序的常数集区位址的值,该或该些子程序具有一或多个被存取的常数; 其中,该常数集区处理器用以管理及存取该或该些子程序的该或该些被存取的常数。
2.如权利要求1所述的常数资料存取系统,其中该常数集区基底暂存器为一特定暂存器或该计算机处理 器的多个普通目的暂存器之一。
3.一计算机处理器,其支持一指令集模组,包含: 一常数集区基础暂存器,用以储存一或多个子程序的常数集区位址的值,该或该些子程序具有一或多个被存取的常数; 其中,该指令集模组具有一常数集区基底暂存器管理指令集单元及一常数集区存取指令集单元。
4.如权利要求3所述的计算机处理器,其中该计算机处理器用以接收一编译器编译过的机械码,其中该编译器具有一常数集区处理器。
5.如权利要求3所述的计算机处理器,其中该常数集区基础暂存器为一特定暂存器或该计算机处理器的多个普通目的暂存器之一。
6.一种一或多个子程序的常数资料存取方法,其步骤包含: 置放一或多个常数于一常数集区中; 判断该常数集区基础位址值; 管理该常数集区基础位址值于一常数集区基础暂存器;以及 存取该或该些常数; 其中,所述存取该或该些常数的步骤藉由涉及该常数集区基础暂存器的一或多个指令以达成;以及 其中,所述管理该常数集区基础位址值于一常数集区基础暂存器的步骤包含设定、备份及回复该常数集区基础暂存器的该常数集区基础位址值。
7.如权利要求6所述的常数资料存取方法,其中该常数集区位于一子程序之前或之后。
8.如权利要求6所述的常数资料存取方法,其中该常数集区基础位址位于该常数集区的一起始位址、该起始位址之前、该常数集区的该起始位址及该常数集区的一结束位址之间、位于该常数集区的该结束位址或该结束位址之后。
9.如权利要求7所述的常数资料存取方法,其中该常数集区相邻于该子程序。
全文摘要
一种常数资料存取系统,包含一编译器、一指令集模组及一计算基处理器。该编译器,具有一常数集区处理器(Constant Pool Handler),该指令集模组,具有一常数集区基底暂存器(Base Register)管理指令集单元及一常数集区存取指令集单元,该计算机处理器具有一常数集区基底暂存器,其中该常数集区基底暂存器用以储存一或多个子程序(Sub-routine)的常数集区位址的值,该或该些子程序具有一或多个被存取的常数,其中该常数集区处理器用以管理及存取该或该些子程序的该或该些被存取的常数。
文档编号G06F12/02GK103218302SQ20121046643
公开日2013年7月24日 申请日期2012年11月16日 优先权日2011年11月16日
发明者乔伟豪, 蔡浩伦, 张辰玮, 苏泓萌 申请人:晶心科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1