堆栈存储器不共用的处理器的制作方法

文档序号:6443486阅读:197来源:国知局
专利名称:堆栈存储器不共用的处理器的制作方法
技术领域
本发明提供一种处理器,尤指一种堆栈存储器不共用的处理器。
背景技术
MCS(Micro Computer System)是Intel公司对微处理器的总称,而其所开发的MCS-31/32及51/52系列的处理器更是普遍地应用在工业界中。一般而言,微处理器只含有少量的存储器以及输入输出点,以MCS-51系列的处理器为例,它有4K字节的程序存储器、128字节的数据存储器以及32条输入输出点,MCS-52系列的处理器则是将程序存储器增加为8K字节,以及将数据存储器增加为256字节,而MCS-31/32及51/52系列的处理器同样使用一个8比特的中央处理单元。程序存储器用来存放使用者所撰写的程序,属于只读存储器(ROM),数据存储器则是随机存取存储器(RAM),可供中央处理单元运作时读取或写入数据,通常是用来当程序执行时暂时存放数据的暂存器。
请参考图1,图1为现有MCS-51系列的处理器其内部数据存储器12的示意图。内部数据存储器12为堆栈存储器、数据存储器及暂存器存储器所共用,堆栈地址、数据地址及暂存器地址都是8比特的地址,处理器的中央处理单元所执行的也是8比特的指令集,在存取内部数据存储器12时,8比特的指令及8比特的地址输入一存储器地址产生器14后,输出存储器地址来存取内部数据存储器12。MCS-51系列的处理器其内部数据存储器的容量是128字节,MCS-52系列的处理器其内部数据存储器的容量则是256字节,而MCS-51/52系列的处理器其外部数据存储器同样最大可扩充至64K字节。一般来说,使用者可采用直接定址法或间接定址法来存取内部数据存储器12,直接定址法是将数据存储器其中一个地址的内容取出作运算,并放入暂存器中,而间接定址法是使用暂存器作为指针,再取得该指针内的值。内部数据存储器12可划分下列几个部分,第一,地址00H-1FH为寄存器库,此地址共32字节被分成4个工作寄存器库(Register Bank),每一个寄存器库内含有8个暂存器,寄存器库中的数据可采直接或间接定址法来存取。第二,地址20H-2FH为比特定址区,地址20H-2FH共有16字节,也就是128个比特,使用者可利用比特运算的指令,直接对比特定址区中的比特做运算。第三,地址30H-7FH为一般用途区,此区域可供使用者规划,通常堆栈(stack)即设在此区域,只要将堆栈指针(stack pointer)指到此区即可。第四,地址80H-FFH也为一般用途区,此区域只存在于MCS-52系列的处理器中,采用间接定址法来存取数据。
请参考图2,图2为现有内部数据存储器12使用两个堆栈的示意图。内部数据存储器12的使用配置如图所示,一部分作为暂存器及数据的存储,一部分提供堆栈使用。如上所述,通常堆栈会设在内部数据存储器12的一般用途区之中,将堆栈指针指向一般用途区的一个位置作为堆栈的起始位置,这个堆栈通常是用来存放呼叫副程序的程序计数,或者是使用者自定的数据。然而很多程序在呼叫副程序时,可能会需要传参数,这时必须使用另一个堆栈来存储参数,一般都是使用参数指针(parameter pointer)由内部数据存储器12的最高地址开始向下数,由于两个堆栈必须共用有限的存储器空间,所以使用者在设计程序时需注意两个堆栈的使用数量,否则很有可能造成数据的错误。
由上述可知,现有的MCS-51/52系列的处理器仅提供有限的内部数据存储器12,而且堆栈存储器、数据存储器及暂存器存储器必须共用这个内部数据存储器。然而由于系统的发展日益复杂,所需的堆栈存储器与数据存储器都大量的增加,虽然数据存储器12可以利用外部数据存储器来作扩充,但是堆栈存储器的大小却还是受限于处理器所提供的内部数据存储器。由于堆栈存储器的大小受到限制,如此一来,复杂的程序常会有堆栈存储器不够使用的情形发生,因为程序在呼叫副程序时,必须使用堆栈来记录,但是受限于堆栈存储器的大小,程序中便只能呼叫一定数量的副程序,再者,若是副程序中需要传参数,更是需要使用大量的堆栈。在堆栈存储器的大小无法扩充的情况下,程序设计者在撰写程序必须注意使用的堆栈数量,使得程序的开发更加困难。

发明内容
因此本发明的主要目的是提供一种堆栈存储器不共用的处理器,以解决上述问题。
本发明提供一种处理器,其包含一中央处理单元,用来处理数据以及指令;一数据存储器,用来存储非堆栈数据及作为暂存器;一堆栈存储器,用来存储堆栈数据;一存储器地址产生器,用来产生存取该固定存储器的地址;以及一堆栈指针产生器,用来产生存取该堆栈存储器的指针。
因此,根据本发明提供的堆栈存储器不共用的处理器,堆栈数据不需与其它数据共用存储器,解决堆栈存储器不够使用的情形。


图1为现有MCS-51系列的处理器其内部数据存储器的示意图。
图2为现有内部数据存储器使用两个堆栈的示意图。
图3为本发明处理器的内部存储器的示意图。
图4为本发明堆栈存储器配置两个堆栈的示意图。
附图符号说明12内部数据存储器 14存储器地址产生器20处理器 22数据存储器24堆栈存储器 26中央处理单元28存储器地址产生器 30堆栈地址产生器具体实施方式
请参考图3,图3为本发明处理器20的内部存储器的示意图。内部存储器包含一数据存储器22以及一堆栈存储器24。由于处理器20的中央处理单元26仅能处理8比特的指令集,最多只能表示到FFH,在不改变指令集的情况下,中央处理单元26能存取的数据存储器22与堆栈存储器24的最大范围皆为256字节。数据存储器22一方面用来存储程序执行时所需的数据以及执行程序所产生的数据,一方面也用来作为中央处理单元26运算时的暂存器,中央处理单元26在存取数据存储器22时,会将存取的数据或暂存器地址以及相关的指令传送至一存储器地址产生器28,由存储器地址产生器28将数据或暂存器地址对映至数据存储器22的实体地址,并根据指令将数据读出或写入数据存储器22之中。数据存储器22仅用来存储执行程序所需的数据、执行程序产生的数据以及作为中央处理单元26的暂存器,并不用来存储堆栈数据,当中央处理单元26所执行的程序需要使用堆栈时,会将堆栈数据存储于堆栈存储器24之中,而堆栈存储器24仅用来存储堆栈数据,并不作为其它数据的共用存储器。中央处理单元26在使用堆栈时,通过一堆栈指针产生器30将一堆栈指针指向堆栈存储器24的一个存储器地址作为堆栈的起始位置,当存入(push)一笔堆栈数据时,堆栈指针产生器30就会将堆栈指针指向下一个地址,当取出(pop)一笔堆栈数据时,则堆栈指针产生器30会将堆栈指针会指向前一个地址。
请参考图4,图4为本发明堆栈存储器24配置两个堆栈的示意图。使用者在撰写程序时常会使用到两个堆栈,并且分别以一堆栈指针以及一参数指针来存取这两个堆栈。第一个堆栈为堆栈指针所指的堆栈,通常是用来存放呼叫副程序的程序计数,或者是使用者自定的数据。第二个堆栈为参数指针所指的堆栈,通常用来存放程序在呼叫副程序时所需要传的参数。一般来说,第一个堆栈是使用堆栈指针由设定的地址开始向上递增指向下一个地址,而第二个堆栈则是使用参数指针由设定的地址开始向下递减指向下一个地址。由于堆栈存储器24仅提供中央处理单元26存取堆栈数据时使用,并不用来存储其它的非堆栈数据,所以当堆栈存储器24中需要配置两个堆栈时,较佳的存储器配置方式为将堆栈指针指向00H作为第一个堆栈的起始地址,而将参数指针指向FFH作为第二个堆栈的起始地址,第一个堆栈以及第二个堆栈的大小可由使用者决定,第一个堆栈的堆栈指针由堆栈存储器24的最低地址开始向上递增指向下一个地址,第二个堆栈的参数指针由堆栈存储器24的最高地址开始向下递减向下一个地址,使用者在设计程序时要注意堆栈指针与参数指针不可以重合,也就是两个堆栈的最大使用空间加起来不可超过堆栈存储器24的大小范围256字节。此外,如果使用者想配置两个大小相同的堆栈,则可将堆栈指针指向80H作为第一个堆栈的起始地址,而将参数指针指向7F作为第二个堆栈的起始地址,如此堆栈指针由80H向上递增最大可到地址FFH,所以第一个堆栈配置在堆栈存储器24的地址80H-FFH的存储器空间,而参数指针由7FH向下递减最小可到地址00H,所以第二个堆栈配置在堆栈存储器24的地址00H-7FH的存储器空间,两个堆栈各占用堆栈存储器24一半的存储器空间,分别为128字节。
由上述可知,本发明的处理器包含中央处理单元26、数据存储器22、堆栈存储器24、存储器地址产生器28以及堆栈指针产生器30。中央处理单元26在执行程序时,经由存储器地址产生器28存取数据存储器22,由数据存储器22中读取执行程序所需的数据,并将执行程序所产生的数据写入数据存储器22中,而数据存储器22也用来作为中央处理单元26执行特定指令时的暂存器。但是当中央处理单元26所执行的指令与堆栈相关时,则会经由堆栈指针产生器30来存取堆栈存储器24,换句话说,中央处理单元26在执行堆栈相关的指令时,并不会将堆栈数据存储于数据存储器22,而是将堆栈数据存储于堆栈存储器24。由于中央处理单元26在执行堆栈相关的指令时才会去存取堆栈存储器24,所以堆栈存储器24为堆栈数据单独使用,而数据存储器22则由其它非堆栈的数据所共用。
相较于现有技术,本发明提供一种堆栈存储器不共用的处理器,现有的处理器仅提供有限的内部数据存储器,而且堆栈存储器、数据存储器及暂存器存储器必须共用这个内部数据存储器。虽然数据存储器可以利用外部数据存储器来作扩充,但是堆栈存储器的大小却还是受限于处理器所提供的内部数据存储器,而有堆栈存储器不够使用的情形发生,更何况很多复杂的程序常需要使用到两个堆栈存储器。本发明在处理器中设置一个数据存储器以及一个堆栈存储器,数据存储器仅用来存储处理器的中央处理单元执行程序所需的数据与产生的数据,以及作为中央处理单元的暂存器,而堆栈存储器仅用来提供中央处理单元存取堆栈数据,如此堆栈数据不需与其它数据共用存储器,解决堆栈存储器不够使用的情形。
以上所述仅为本发明的优选实施例,凡依本发明权利要求所做的均等变化与修饰,皆应属本发明专利的涵盖范围。
权利要求
1.一种处理器,其包含一中央处理单元,用来处理数据以及指令;一数据存储器,用来存储非堆栈数据及作为暂存器;一堆栈存储器,用来存储堆栈数据;一存储器地址产生器,用来产生存取该固定存储器的地址;以及一堆栈指针产生器,用来产生存取该堆栈存储器的指针。
2.如权利要求1所述的处理器,其是为MCS系列的处理器。
3.如权利要求1所述的处理器,其中该中央处理单元是处理8比特的指令集。
4.如权利要求3所述的处理器,其中该数据存储器的大小为256字节。
5.如权利要求3所述的处理器,其中该堆栈存储器的大小为256字节。
全文摘要
一种处理器,其包含一中央处理单元、一数据存储器、一堆栈存储器、一存储器地址产生器以及一堆栈指针产生器。该中央处理单元用来处理数据以及指令。该数据存储器用来存储非堆栈数据及作为暂存器。该堆栈存储器用来存储堆栈数据。该存储器地址产生器用来产生存取该数据存储器的地址。该堆栈指针产生器用来产生存取该堆栈存储器的指针。
文档编号G06F15/78GK1532724SQ0310792
公开日2004年9月29日 申请日期2003年3月25日 优先权日2003年3月25日
发明者杜立群, 陈炳盛, 曾宝庆, 郭弘政 申请人:联发科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1