一种高效率堆栈入栈出栈装置,作为处理器的一个组成部分,按照处理器的操作过程,在数据存储单元中执行堆栈入栈出栈操作,所述装置包括:指令存储单元,用来存储将要执行的指令代码;指令读取单元,该单元将指令代码从指令存储单元中读取并发送给执行单元;存储器访问单元,该单元用于访问程序所需的存储的数据和接口;数据寄存器组,包含数据寄存器R0,R1,…,Rn,用来存放程序需要的数据。堆栈指针寄存器SP,用于存储堆栈的地址指针。
【技术实现步骤摘要】
本专利技术涉及微处理器和计算机系统领域,具体地说,涉及一种提高堆栈进出效率的装置及方法,作为处理器的一个组成部分,用于提高处理器的并行处理能力。
技术介绍
随着处理器技术的进步,处理器的速度不断提高,性能不断增强,同时用户对计算机或者处理器的要求越来越高。但是仅仅依靠电子元件的加速来满足需求是远远不够的,因此提高计算机的并行处理能力及増加有效的处理指令变得尤其重要。现有的处理器中,堆栈的入栈出栈指令是在中断处理过程中的常用操作。用于保护现场和恢复现场。同时由于堆栈的入栈和出栈一般会同时操作多个寄存器,也就是说要同时保护和恢复多个寄存器,操作只能串行处理,所以堆栈的入栈和出栈操作在中断处理 中会消耗比较多的系统周期,大大增加了系统中断的开销。例如,堆栈需要对R0,Rl. . R7等寄存器进行堆栈入栈和出栈操作,则一般做ー些操作。Push RO (R0 入栈)Push Rl (Rl 入栈)Push R2 (R2 入栈)Push R3 (R3 入栈)Push R4 (R4 入栈)Push R5 (R5 入栈)Push R6 (R6 入栈)Push R7 (R7 入栈)故,R0,Rl.. R7入栈共需8个指令周期。Pop RO (R0 出栈)Pop Rl (Rl 出栈)Pop R2 (R2 出栈)Pop R3 (R3 出栈)Pop R4 (R4 出栈)Pop R5 (R5 出栈)Pop R6 (R6 出栈)Pop R7 (R7 出栈)故,RO,Rl.. R7出栈共需8个指令周期。以上可以得出RO,Rl. . R7入栈出栈共需16个指令周期。
技术实现思路
为了解决上述问题,本专利技术提出一种堆栈入栈出栈装置。所述堆栈入栈出栈装置作为处理器的一个组成部分,按照处理器的操作过程,在存储器访问单元中执行堆栈入栈出栈操作;所述入栈出栈装置包括指令存储单元、指令读取单元、存储器访问单元、数据寄存器组、堆栈指针寄存器SP。所述指令存储单元,用来存储将要执行的指令代码;所述指令读取单元,用于将指令代码从指令存储单元中读取并发送给执行单元;所述存储器访问单元,用于访问程序所需的存储的数据和接ロ;所述数据寄存器组,包含数据寄存器R0,R1,…,Rn,用来存放程序需要的数据;所述堆栈指针寄存器SP,用于存储堆栈的地址指针。所述指令读取单元从所述指令存储单元中读取堆栈入栈或出栈指令,然后发给所述存储器访问单元,所述存储器访问单元根据所述堆栈入栈或出栈指令执行堆栈入栈或出栈操作。所述存储器访问单元根据所述堆栈入栈指令将待入栈的n个寄存器组成ー个n倍 寄存器宽度的数据存储到外部存储器中,所述n个寄存器由入栈指令决定,所述外部存储器地址由堆栈地址指针SP決定。所述的堆栈入栈装置用于同时对多个数据寄存器进行堆栈入栈操作。所述存储器访问单元根据所述堆栈出栈指令从外部存储器中一次读出ー个n倍寄存器宽度的数据,并将该数据分配给n个出栈的寄存器,所述n个寄存器由出栈指令决定,所述外部存储器地址由堆栈地址指针SP決定。 所述的堆栈入栈装置用于同时对多个数据寄存器进行堆栈出栈操作。ー种堆栈入栈方法,通过一条指令周期即完成对多个寄存器中入栈操作,所述堆栈入栈方法包括如下步骤步骤1,将执行堆栈入栈指令由指令存储单元中读取到指令读取单元中,再出来送至存储器访问单元;步骤2,根据所述堆栈入栈指令,将待入栈的n个寄存器数据组成ー个n倍长的数据;步骤3,堆栈指针寄存器sp减去n得到新的sp指针;步骤4,对所述n倍长得数据,存储到地址为(sp减去n),数据宽度为n倍寄存器的目标存储器。—种堆栈出栈方法,通过一条指令周期即完成对多个寄存器中出栈操作,所述堆栈出栈方法包括如下步骤步骤1,将执行堆栈出栈指令由指令存储单元中读取到指令读取单元中,再出来送至存储器访问单元;步骤2,根据所述堆栈出栈指令,从地址为sp,数据宽度为n倍的存储器中读取n倍宽度的数据;步骤3,将读取的n倍宽度的数据分给n个寄存器;步骤4,堆栈指针寄存器sp加上n得到新的sp指针。本专利技术仅仅通过堆栈入栈出栈一条指令周期即完成n个寄存器的入栈或出栈操作,实现单周期多个寄存器的入栈出栈,減少了中断处理的开销,提高了处理器的计算速度,大大減少了中断的开销。附图说明參照如下附图将更加易于理解本专利技术图I所示为普通方法下8个寄存器 入栈的示例。图2所示为普通方法下8个寄存器出栈的示例。图3所示为本专利技术快速方法下8个寄存器入栈的示例。 图4所示为本专利技术快速方法下8个寄存器出栈的示例。图5所示为本专利技术提出的快速堆栈入栈方法总体流程图。图6所示为本专利技术提出的快速堆栈出栈方法总体流程图。图7所示为用于实现本专利技术的堆栈快速入栈出栈装置的结构框图。具体实施例方式本专利技术通过以下实施得以实现。本专利技术的快速堆栈入栈出栈装置,如图7所示,包括指令存储单元,指令读取单元,存储器访问单元,数据寄存器组,堆栈指针寄存器SP。所述堆栈的入栈或出栈是按照处理器的操作过程在存储器访问单元中完成。所述指令存储单元,用来存储将要执行的指令代码;所述指令读取单元,用于将指令代码从指令存储单元中读取并发送给执行单元;所述存储器访问单元,用于访问程序所需的存储的数据和接ロ ;所述数据寄存器组,包含数据寄存器R0,R1,…,Rn,用来存放程序需要的数据;所述堆栈指针寄存器SP,用于存储堆栈的地址指针。所述指令读取单元从所述指令存储单元中读取堆栈入栈或出栈指令,然后发给所述存储器访问单元,所述存储器访问单元根据所述堆栈入栈或出栈指令执行堆栈入栈或出栈操作。所述存储器访问单元根据所述堆栈入栈指令将待入栈的n个寄存器组成ー个n倍寄存器宽度的数据存储到外部存储器中,所述n个寄存器由入栈指令决定,所述外部存储器地址由堆栈地址指针SP決定。所述的堆栈入栈装置用于同时对多个数据寄存器进行堆栈入栈操作。所述存储器访问单元根据所述堆栈出栈指令从外部存储器中一次读出ー个n倍寄存器宽度的数据,并将该数据分配给n个出栈的寄存器,所述n个寄存器由出栈指令决定,所述外部存储器地址由堆栈地址指针SP決定。所述的堆栈入栈装置用于同时对多个数据寄存器进行堆栈出栈操作。在完成一次堆栈的入栈或出栈过程中,首先将堆栈入栈或出栈指令由指令存储单元中读入到指令读取单元中,再由指令读取单元将堆栈入栈或出栈指令分发到存储器访问単元中,由存储器访问单元执行堆栈入栈或出栈操作。ー种堆栈入栈方法,通过一条指令周期即完成对多个寄存器中入栈操作,所述堆栈入栈方法,如图5所示,包括如下步骤步骤1,将执行堆栈入栈指令由指令存储单元中读取到指令读取单元中,再出来送至存储器访问单元;步骤2,根据所述堆栈入栈指令,将待入栈的n个寄存器数据组成ー个n倍长的数据;步骤3,堆栈指针寄存器sp减去n得到新的sp指针;步骤4,对所述n倍长得数据,存储到地址为(sp减去n),数据宽度为n倍寄存器的目标存储器。ー种堆栈出栈方法,通过一条指令周期即完成对多个寄存器中出栈操作,所述堆栈出栈方法,如图6所示,包括如下步骤步骤1,将执行堆栈出栈指令由指令存储单元中读取到指令读取单元中,再出来送至存储器访问单元;步骤2,根据所述堆栈出栈指令,从地址为sp,数据宽度为n倍的存储器中读取n倍宽度的数据;步骤3,将读取的n倍宽度的数据分给n个寄存器本文档来自技高网...
【技术保护点】
【技术特征摘要】
【专利技术属性】
技术研发人员:孙瑞琛,
申请(专利权)人:江苏中科芯核电子科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。