专利名称:一种实现片上影子堆栈存储器的电路的制作方法
技术领域:
本实用新型涉及一种存储器控制方法及电路,尤其涉及一种实现片上影子堆 栈存储器的电路。
二背景技术:
当前的嵌入式系统,特别是片上系统(System-On-a-chip),正越来越多的应 用在手持设备和消费类电子中,如手机、MP4播;故器、PS2等。这些应用不仅需 要嵌入式系统有非常高的性能来支持日益复杂的功能需求,而且需要不断降低功 耗来实现设备的长时间工作。因此,性能和功耗成为了嵌入式系统研究的两个核 心问题。
在典型的嵌入式系统应用中,处理器总是取指令和数据,并借助堆栈来实现 程序的运行。在这一过程中,处理器需要不断的访问片外存储器,如 SDRAM/DRAM ( Synchronous Dynamic Random Access Memory/Dynamic Random Access Memory,同步动态随机存储器/动态随机存储器)。而SDRAM/DRAM等 片外存储器是以页面的形式组织,每一页的大小通常为512Bytes-2048Bytes。当 处理器对SDRAM/DRAM访问时,首先需激活命令Ac激活所要访问数据/指令或 堆栈所在的页面,将该页的内容存放到敏感放大器中才能被访问到,激活操作通 常需要2~4个时钟周期的时间At (总线频率为133MHz时),如图1所示。如 果是读片外存储器,还需要一个额外的等待时间,即CAS等待,通常为2-3个 时钟周期,如果是写操作,则可以直接写到外部存储器中。当处理器在下一次访 问SDRAM/DRAM时,如^i匕时所要访问的数据/指令或堆栈不在敏感放大器 中,需要先将敏感放大器中的内容通过预充电命令Pr写回到SDRAM/DRAM 中,然后再选取所要访问的页面,并通过激活命令Ac将其放在敏感放大器中, 预充电操作通常需要2-4个时钟周期的时间Pt (总线频率为133MHz时),如 图2所示。
通常,程序最终代码的布局是指令在最前面,后面紧跟着全局数据。当程序 运行时,首先将指令和数据加载到存储器中,然后在程序运行时设置堆栈的起始 地址和大小。堆栈一般设置在数据的后面,运行时的程序布局如图3所示。在程序运行过程中,指令的访问比较连续,所以当进行取指令操作时,可以在激活的 一个页面上顺序读取指令。当遇到页面被读取完毕、执行长跳转指令或是访问不 在本页面内的数据或堆栈时,将出现片外存储器页面不命中,此时需要进行换页 操作,其中以访问数据或堆栈时产生的页面不命中概率最高。因为数据通常被链 接到指令代码的后面,堆栈则常被设置在数据的结尾处,所以数据和堆栈都不与 指令存放在同一个页面内。当访问数据或堆栈时,往往发生页面不命中,需要预 充电和激活等命令对外部存储器进行换页操作,增加了访问时间,造成了程序执 行的延迟。
一些研究人员对此提出了片上存储器(SPM),把一些常用的数据通过静态 分析后,采用链接器或编译器将有价值的指令或数据加载到SPM中。因为SPM 位于芯片内部,所以对它的访问不需要任何的等待时间(无CAS等待),也不 会出现换页情况,片上存储器通常是由一块片上RAM组成。
传统的面向堆栈的SPM设计通常是将程序使用到的整个堆栈区都存放在 SPM中,以加速对堆栈的访问速度,同时减少因为访问堆栈而产生的换页操作。 但如果程序的堆栈使用地址范围很大,则需要大量的SPM容量来支持。
三
实用新型内容
本实用新型的目的在于克服现有技术之不足,提供一种实现片上影子堆栈存 储器的其电路,采用小容量的片上存储器,动态配置堆栈地址,降低堆栈访问时 存储器的等待延迟时间,从而提高微处理器运行的速度。
本实用新型的上述目的由以下技术方案实现
本实用新型的一种实现片上影子堆栈存储器的方法,包括有处理器内核通过 总线与片外存储器相连,由存储控制器完成对片外存储器的访问控制,片上影子 堆栈存储器采用分为多段方式存储,并设置有与分段数量相同的配置寄存器存放 各段的首地址,访问片外存储器堆栈单元的地址经总线送到地址译码电路,地址 比较电路比较来自地址译码电路的要访问存储单元的地址与配置寄存器中的各段 首地址,将比较结果送到片选电路用于选择片外存储器或者片上影子堆栈存储 器,完成对片外存储器或者片上影子堆栈存储器中存储单元的访问,用配置寄存 器中的段首地址及总线中地址总线的地址作为段内偏移量来选择片上影子堆栈存 储器中的相应段和段内的相应存储单元,片上影子堆栈存储器的读写控制信号来 自存储控制器。
片上影子堆栈存储器映射配置阶段处理器内核执行指令通过总线读取配置 寄存器的段首地址内容,将片外存储器已经映射到片上影子堆栈存储器的内容重新放回到片外存储器中相应的存储单元。根据需要重新设定配置寄存器的段首地 址内容,并将片外存储器相应堆栈段的内容映射到片上影子堆栈存储器中,所述 的将片外存储器已经映射到片上影子堆栈存储器的内容重新;j文回到片外存储器中
以及将片外存储器相应堆栈段的内容映射到片上影子堆栈存储器中可以采用处理
器内核执行指令、硬件中断方式或者DMA方式传输。
片上影子堆栈存储器工作阶段当处理器内核执行堆栈操作指令或者硬件中 断进行堆栈操作时,向总线申请读写片外存储器堆栈段数据,地址译码电路将处 理器内核申请访问的地址进行地址解析,并通过地址比较电路判断当前所访问的 地址是否与配置寄存器的某一个内容相同,相同则片选电路产生选择片上影子堆 栈存储器信号,选择地址吻合的那个片上堆栈存储器段进行访问;否则片选电路 产生选择片外存储器的信号,由存储控制器完成对外部存储器的访问。
所述一种实现片上影子堆栈存储器方法的电路,如图4所示,包括有总线、 片外存储器、存储控制器,地址译码电路、片选电路、配置寄存器和片上影子堆 栈存储器。总线与片外存储器连接,存储控制器控制对片外存储器的访问。地址 译码器接受总线来的地址信号,其输出连到地址比较电路的一路输入端,地址比 较电路的另一路输入端的信号来自配置寄存器,其输出连到片选电路,配置寄存 器通过总线由处理器内核对其进行首地址配置,片选电路的两路输出信号, 一路 为选择片外存储器信号送到存储控制器,另一路为选择片上影子堆栈存储器信号 送到片上影子堆栈存储器,配置寄存器地另一路输出连到片上影子堆栈存储器, 片上影子堆栈存储器还与总线相连。
片上影子堆栈存储器采用分为多段方式存储,配置寄存器数量的设置与片上 影子堆栈存储器分段数量相同,其用于存放片上影子堆栈存储器各段的首地址, 访问片外存储器堆栈中数据的地址经总线送到地址译码电路,地址比较电路比较 来自地址译码电路的要访问堆栈的地址与配置寄存器中的各段首地址,将比较结 果送到片选电路用于选择片外存储器或者片上影子堆栈存储器,完成对片外存储 器或者片上影子堆栈存储器的访问。
片上影子堆栈存储器工作时,当处理器内核向总线申请读写片外存储器堆栈 数据时,地址译码电路将总线来的处理器内核申请访问的地址进行地址解析输出 到地址比较电路,地址比较电路判断当前所访问的地址是否与配置寄存器送来的 某一个内容相同,相同则片选电路产生选择片上影子堆栈存储器信号,选择地址 吻合的那个片上影子堆栈存储器段进行访问;否则片选电路产生选择片外存储器 的信号,由存储控制器完成对外部存储器的访问。一般片上影子堆栈存储器的容量可以为512字节,分为四个段,每个段的容 量为128字节。配置寄存器共有四个分别与片上影子堆栈存储器的四个段对应。 片上影子堆栈存储器可以采用静态随机存储器,同时,其有边界对齐要求,所以 在比较时只需要比较边界以上的地址,这样做可以加快比较速度,减化比较电路 的硬件实现。
堆栈的访问在局部地址上其特征体现为连续性,但堆栈的地址使用范围很 大,且该范围内的各个地址并不是平均使用,所以整体表现为离散性。本实用新 型的优点及效果是提供一种实现片上影子堆栈存储器的方法及其电路,采用了具 有影子特征且存储面积较小的高速片上影子堆栈存储器来映射具有高访问频率的 堆栈地址。该片上影子堆栈存储器以段的方式进行组织,与常见的片上存储器 (Scratch-Pad-Memory简称SPM)不同,它的实际地址并不可见,但可以配置各 个段的首地址。当处理器内核访问到片上堆栈存储器所配置的段地址时,将直接 访问该片上影子堆栈存储器。通过小面积片上存储器的段映射,使得高频率访问 的堆栈地址能够在高速片上存储器中进行,减少了对外部存储器的访问次数,在 很大程度上提高了执行的速度,并降低了外部存储器访问带来的功耗。
四
图l 是SDRAM/DRAM页命中时的读写时序图2 是SDRAM/DRAM页不命中时的读写时序图3 是一般程序静态布局与运行时的布局图4 是本实用新型的片上影子堆栈存储器电路图5 是本实用新型的片上影子堆栈存储器映射逻辑关系图6 是本一般程序流程图7 是本一般程序进行堆栈映射配置后的流程图8 是MPEG-4解码程序的各堆栈地址上的使用频率图9 是MPEG-4解码程序堆栈地址使用的时间序列图。
附图符号说明
At::激活等待时间;
Pt:预充电等待时间;
CAS:读操作等待时间;
Ac:激活命令;
Pr:预充电命令;RD:读操作; WR:写操作; Dx:总线上的传输数据。
五具体实施方式
实施例1:
以下结合附图与具体实施方式
对本实用新型作进一步详细描述, 以MPEG-4多媒体解码程序为例。
首先进行静态分析,图6为一般程序流程,对其建立一个程序代码执行的跟 踪模型,用来记录指令和数据在存储器上的访问情况,然后将程序加载到该模型 上运行,以得出存储访问信息,之后按照访问的频率的高低对指令和数据进行排 序,并将具有高访问频率的指令和数据标记为重要的指令和数据。
图8为MPEG-4多媒体解码程序的各堆栈地址上的使用频率图,可以看出, 堆栈的地址使用范围非常大,各个地址的使用频率都不 一样,有的地方被经常使 用,而有的地方却很少使用。图9为MPEG-4解码程序堆栈地址使用的时间序列 图,从图中可以看出,堆栈一开始的使用集中在高地址处0x308F FC18左右,随 着程序的运行,堆栈地址使用转到了相对较低的地址处0x308F F254与0x308F F63C之间。这是因为一开始程序在进行初始化并建立MPEG-4解码环境,此时 比较集中的使用了堆栈;随着解码的开始,函数的不断深入调用,堆栈的地址也 就不断的向低地址延伸。解码是一个反复不断调用解码库的过程,因解码的复 杂,在解码中出现了大量的局部变量和因计算需求而保存的临时变量,使得堆栈 的使用变得十分频繁。
通过MPEG-4多媒体解码程序在堆栈上的使用情况分析,程序对堆栈的整体 离散、局部连续的访问特性,根据堆栈访问的这种特性,选择具有高访问率、访 问连续且访问地址经常重复的地方作为访问优化对象,将这段地址映射到片上影 子堆栈存储器上。在正常使用时,片上堆栈存储器对于程序员而言是不可见,它 是一个影子存储器,类CACHE结构。在原MPEG-4多i某体解码程序中插入堆栈 段映射配置程序块,如图7所示,对原程序进行动态地进行堆栈段映射,使得片 外存储器上的相应的堆栈段地址范围的存储单元被片上影子堆栈存储器所替换。 并在接下来的堆栈访问中直接访问片上影子堆栈存储器而不是片外存储器,如图 5所示片上影子堆栈存储器映射逻辑关系图。段的容量根据应用范围而定,如每 个段的容量为128Bytes。配置寄存器内容的配置是安排在插入的堆栈段映射配置程序块中,当程序通
过代码执行跟踪模型运行后,将生成一份堆栈地址的使用信息;然后根据该信息 确定出哪些堆栈地址需要进行片上存储器映射。映射时,片上影子堆栈存储器会 将所要映射的那段片外存储器的内容拷贝到片上影子堆栈存储器所配置的那段存 储器中。当取消映射时,为了保证映射地址中数据的完整性,片上影子堆栈存储 器会将它的片上存储器的内容重新拷贝回相应的片外存储器中。本实用新型设置 了四个配置寄存器,使用时可以根据需要灵活配置,即可以同时进行多个配置, 也可以进4于个别配置。
片上影子堆栈存储器采用段的形式组织,由程序通过设定配置寄存器的值来 实现。程序设定的值即为对应的片外存储器中需要映射堆栈段的首地址。配置寄 存器与片上存储器的段相对应,即每个配置寄存器对应一段片上存储器。在片上 影子堆栈存储器中,如果有四个配置寄存器,那么片上存储器最多也就被分为四 个段。存储器在物理上是连续的,即四个段组成了一个完整的片上存储器。但在 逻辑访问时,则根据配置寄存器所配置的首地址而呈现出不同的段。如当只配 置一个配置寄存器时,则整个片上存储器即为一个段,该片上存储器的首地址即 为配置寄存器内的首地址,它将映射了与之相对应的片外存储器的地址,映射容 量的大小也就是整个片上存储器的大小。当设定了两个配置寄存器的值时,片上 存储器被平均分为了两个段,当四个配置寄存器都被设定时,每个配置寄存器对 应了四分之一的片上存储器。片上影子堆栈存储器以分段的方式组织,每一段的 大小和段的数量根据实际应用来设计,通常每段的大小在128Bytes 512Bytes之 间。每一段片上存储器都有独立的首地址,该首地址需要程序员配置。当程序设 置了某一I5:的首地址后,处理器内核对该地址进行访问时,将访问片上影子堆栈 存储器该段的内容,而不是片外存储器中的内容,即片外存储器在这段地址上被 屏蔽了 。程序员可以才艮据对片外存储器地址的访问频繁度和执行序列,选择性的 改变片上影子堆栈存储器的首地址,让它们对片外存储器的存储区进行映射和替 换。这里需要注意的是,片上影子堆栈存储器之间的地址映射范围不能有重叠, 而且映射的地址需要16Bytes边界对齐,以方便地址片选电路的实现。
当处理器内核发出的堆栈访问地址在经过地址比较器比较后发现所要访问的 地址落在片上影子堆栈存储器的映射范围内,则处理器内核直接v^人片上影子堆栈 存储器中执行访问操作。访问时,首先通过相应的配置寄存器得到片上影子堆栈 存储器的相应段,将当前地址减去该配置寄存器中的地址(即该段的首地址), 得出段内偏移量。然后将该偏移量加上配置寄存器对应的段地址,即可访问到正 确的堆栈内容(即如果此时访问的是第二段,就从第二段存储器的开始处加上偏移量来获取正确的地址)。如果处理器内核发出的堆栈访问地址在经过地址比较 器比较后发现不在片上影子堆栈存储器的映射范围内,则通过存储控制器访问片 外存储器。
在采用片上影子堆栈存储器后,使得处理器加快了对堆栈的访问,减少了片 外存储器访问时因指令和堆栈之间来回切换页面所带来的时间延迟,加快了系统 的执行速度。同时因为减少了访问外部存储器和换页的操作,使得片外存储器的 功耗也随着降低。
权利要求1.一种实现片上影子堆栈存储器方法的电路,包括有总线、片外存储器、存储控制器,总线与片外存储器连接,存储控制器控制对片外存储器的访问,其特征还包括有地址译码电路、片选电路、配置寄存器和片上影子堆栈存储器;地址译码器接受总线来的地址信号,其输出连到地址比较电路的一路输入端,地址比较电路的另一路输入端的信号来自配置寄存器,其输出连到片选电路,配置寄存器通过总线由处理器内核对其置数,片选电路的两路输出信号,一路为选择片外存储器信号送到存储控制器,另一路为选择片上影子堆栈存储器信号送到片上影子堆栈存储器,配置寄存器地另一路输出连到片上影子堆栈存储器,片上影子堆栈存储器还与总线相连;片上影子堆栈存储器采用分为多段方式存储,配置寄存器数量的设置与片上影子堆栈存储器分段数量相同,其用于存放片上影子堆栈存储器各段的首地址,访问片外存储器堆栈中数据的地址经总线送到地址译码电路,地址比较电路比较来自地址译码电路的要访问堆栈的地址与配置寄存器中的各段首地址,将比较结果送到片选电路用于选择片外存储器或者片上影子堆栈存储器,完成对片外存储器或者片上影子堆栈存储器的访问;片上影子堆栈存储器映射配置阶段处理器内核执行指令通过总线读取配置寄存器的段首地址内容,将片外存储器已经映射到片上影子堆栈存储器的内容通过总线重新放回到片外存储器相应的地址单元中;根据需要重新设定配置寄存器的段首地址的内容,并将片外存储器相应堆栈段的内容通过总线映射到片上影子堆栈存储器中;所述的将片外存储器已经映射到片上影子堆栈存储器的内容重新放回到片外存储器相应的地址单元中以及将片外存储器相应堆栈段的内容映射到片上影子堆栈存储器中,可以采用处理器内核执行指令、硬件中断方式或者DMA方式传输;片上影子堆栈存储器工作阶段当处理器内核向总线申请读写片外存储器堆栈数据时,地址译码电路将总线来的处理器内核申请访问的地址进行地址解析输出到地址比较电路,地址比较电路判断当前所访问的地址是否与配置寄存器送来的某一个内容相同,相同则片选电路产生选择片上影子堆栈存储器信号,选择地址吻合的那个片上影子堆栈存储器段进行访问;否则片选电路产生选择片外存储器的信号,由存储控制器完成对外部存储器的访问。
2. 根据权利要求1所述的片上影子堆栈存储器电路,其特征是所述的片 上影子堆栈存储器的容量为512字节,分为四个段,每个段的容量为128 字节;所述的配置寄存器共有四个分别与片上影子堆栈存储器的四个段 对应。
3. 根据权利要求1或2所述的片上影子堆栈存储器电路,其特征是所述 的片上影子堆栈存储器采用静态随机存储器。
专利摘要本实用新型公开了一种实现片上影子堆栈存储器的电路,涉及微处理器内部堆栈操作方法和存储电路。包括片上影子堆栈存储器,配置寄存器,片选电路,地址比较电路,地址译码电路,存储控制器,片外存储器等。采用动态配置的方法,将在片外存储器中高频率访问的堆栈段单元的数据映射到片上影子堆栈存储器中,在微处理器进行堆栈操作时,访问片上影子堆栈存储器。因此,可以避免因访问堆栈而使得存储器页面缺失的问题,减少了不必要的页面切换时间。同时利用该片上影子堆栈存储器还降低了存储功耗,加快了微处理器的运行速度使得片上系统性能大为提升,解决了当前手持终端和消费类电子在性能和功耗上的问题。
文档编号G06F12/00GK201060485SQ200720041320
公开日2008年5月14日 申请日期2007年8月3日 优先权日2007年8月3日
发明者明 凌, 宇 张, 时龙兴, 建 肖, 陆生礼, 明 陈 申请人:东南大学