处理器管理外部存储器的方法 【技术领域】
本发明提供一种存储器管理的方法,尤指一种处理器管理外部存储器的方法。
背景技术
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),可供中央处理单元运行时读取或写入数据,通常是用来当程序执行时暂时存放数据地暂存器。MCS-31/32及51/52系列的微处理器都可以由外部扩充存储器,最大可扩充至64K位组。
然而在一些应用之中,使用者可能会需要撰写很大的程序码或是使用很大的阵列表,如此一来64K位组的外部扩充程序存储器仍然不够使用。存储库切换(bank switch)是一种可以将存储器大幅扩充的方法,使用单芯片上多出的接脚作为解码线来对超过64K位组的存储器作定址,若外部存储器是一个大容量的存储器装置,则多出的接脚可以直接作为地址线,若外部存储器是多个小容量的存储器装置,则多出的接脚可用来选择存储器芯片。由于单芯片最大的外部扩充存储器为64K位组,所以可用64K位组作为存储库切换的基本单位,称为一个页(page)。存储库切换最大的问题在于中断向量表(interrupt vector table)配置的地址,因为中断向量表通常会放在存储器中某个特定的地址,虽然程序在运行时可以在各个页作切换,但是当中断发生时,程序会立刻在所在页中的特定地址去寻找中断向量表,而且此时程序并无法作存储库切换,当程序找不到中断向量表时,便会产生错误。一般解决这个问题的方法,便是在每个存储库中都保留一公用区(common area),公用区中存储中断向量表、中断服务例程(interrupt serviceroutine)、通用函式库以及存储库切换所需的数据,所以不论程序运行在哪一个页,当程序发生中断时,程序都可以于所在的页中找到中断向量表继续程序的执行。
请参考图1,图1为公知外部程序存储器12配置的示意图。MCS-51/52系列的单芯片使用存储库切换的方式在外部扩充512K位组的存储器12,分为8个页,每个页为64K位组,并保留一定大小(例如:10K位组)的公用区用来存放中断向量表、中断服务例程、通用函式库以及存储库切换所需的数据。举例来说,当在第一页的程序需要呼叫第二页的程序时,会立即跳至公用区,接着存储库设定例程会设定所需存储库的页码,因为对于单芯片而言,在公用区中改变页码并不会影响任何数据的地址,接着单芯片就可以依据设定的页码存取第二页中所需的程序。于第二页的程序处理完毕之后,程序会先回到公用区中,由存储库设定例程将页码切换回原来的存储库,再回到第一页中原来程序的地址继续执行程序。
由上述可知,公知MCS-51/52系列的单芯片所提供的程序存储器,最大只能利用扩充外部程序存储器至64K位组,但是通过存储库切换的技巧,使用单芯片上多出的接脚,可以再将外部程序存储器作大幅的扩充,但是存储库切换有个缺点,就是每个存储库之中都必须保留一部分的空间作为公用区,用来存放中断向量表、中断服务例程、通用函式库以及存储库切换所需的数据,而这些数据会复制并存储在每个存储库的公用区之中,如此一来,存储器的空间便无法有效地被利用。
【发明内容】
因此本发明的主要目的是提供一种处理器管理外部存储器的方法,以解决上述问题。
本发明提供一种处理器管理外部存储器的方法包含:(a)提供一地址转换器;(b)使用该地址转换器将该处理器的中央处理单元指向该外部存储器的页码及该页码内的地址转换为该外部存储器相对应的实体地址;以及(c)使用该中央处理器存取该实体地址的数据。该方法还包含将单一个公用区存入该外部存储器以及将该处理器的中央处理单元指向该外部存储器的页码及该页码内的公用区的地址对应至该外部存储器的公用区的实体地址。
【附图说明】
图1为公知外部程序存储器配置的示意图。
图2为本发明单芯片连接外部程序存储器的示意图。
图3为本发明外部程序存储器配置的示意图。
附图标号说明
12外部程序存储器 20单芯片
22外部程序存储器 24地址转换器
【具体实施方式】
请参考图2,图2为本发明单芯片20连接外部程序存储器22的示意图。本发明在单芯片之中加设一地址转换器24,用来转换存储器的配置方式,由于存储库交换的存储器配置方式在每一个存储库之中都必须保留一公用区来存储中断向量表、中断服务例程、通用函式库以及存储库切换所需的数据,相当耗费存储器空间,本发明的单芯片20利用地址转换器24将每一存储库中的公用区都对应到同一个公用区之中,如此便可将原本存储库中公用区的空间节省下来存储其它的数据。使用地址转换器24来重新配置存储器可以更有效地利用存储器,而节省下来的存储器空间则配置于其它的存储库之中,举例来说,原本使用存储库交换只能配置成8个存储库的存储器空间,使用地址转换器将存储器重新配置之后,可以得到9个或更多存储库,多出的存储库就是节省各个存储库中公用区所得到的空间。地址转换器24将单芯片20的端口0-2(P0,P1,P2)转换为定址接脚(A23-0),而图2中的AD7-0则是用来读取存储器的数据,由于存储器在重新配置后可能会多出多个存储库,所以地址转换器24在单芯片20的内部会多使用多只虚拟的接脚来与中央处理单元沟通,用来对多出的存储库作定址。此外,于实施时,单芯片20内部另外设有一切换装置(图未示),可由使用者自行切换是否使用连接地址转换器24,以得到较佳的使用弹性。
请参考图3,图3为本发明外部程序存储器22配置的示意图。假设在存储库交换的存储器配置方式中,每一个存储库皆需要保留10K位组的存储器空间作为公用区,由于单芯片20的外部存储器22的最大可定址范围是64K位组,所以一个512K位组的存储器可分成8页,而每一页的大小为64K位组,扣掉10K位组的公用区,每一页可以使用的空间为54K位组,因为公用区重覆在每一页之中,所以浪费了10K*(8-1)=70K位组的存储器空间。为了更有效的利用存储器空间,重新配置存储器的使用空间,如图3所示,512K位组的存储器22中仅包含一个10K位组的公用区,通常配置在存储器22的最低地址,当中央处理单元在任何一个存储库中执行到公用区时,地址转换器24便会将该位置对应到这块区域,所以新的存储器配置方式每一页的最大空间为54K位组,共用分成9页,第0页至第8页各为54K位组,第9页为16位组,而第8页及第9页就是存储器重新配置后所节省下来空间。在本实施例中,单芯片20使用端口0及端口2共16只接脚以及端口1的P1.0、P1.1、P1.2三只接脚来对512K位组的存储器22作定址,通常存储库交换会使用端口0及端口2来定址一个64K位组的存储库,而端口1的三只接脚则用来作为存储库的页码选择,而本实施例则是利用这19只接脚直接对512K位组的存储器22的实体地址作定址,再通过地址转换器24将存储库交换的存储器配置方式对应至存储器22的实体地址,如此一来,不需要改变任何的指令集,中央处理单元仍然是以存储库交换的方式来存取外部的扩充存储器,但是相同大小的存储器却有多的使用空间。
对于中央处理单元而言,使用地址转换器24重新配置存储器之后,存储器变大了,因为地址转换器24将每一个存储库中公用区的地址都指向同一个区域,所以虽然单芯片只需使用19只接脚来定址512K位组的存储器,但是经由地址转换器所产生的存储库却大于8页,所以中央处理单元除了需要16只接脚作为每一页中64K位组的定址,还需要第4只或更多的接脚用来选择存储库的页码。公用区通常配置在实体存储器的最低地址,不论中央处理单元读取到任何一页中的公用区地址,都会经由地址转换器24对应到这个区域内,而其它地址的对应方式如下:
实体地址=所在页的地址-公用区结束的地址+新所在页的起始地址
其中实体地址为存储器重新分配的地址,所在页的地址为中央处理单元在该页中所存取数据的地址,公用区结束的地址视公用区的大小而定,因为一般都将公用区由存储库的起始地址开始存储,新所在页的起始地址为中央处理单元的存取所在页相对应于存储器重新配置后的所在页的起始地址。举例来说,中央处理单元读取第3页的地址12AB时,由于这个地址在公用区内,所以地址转换器24便会将这个地址对应到存储器的实体地址012AB,若中央处理单元读取的是第3页的地址A100,则由上式可知,实体地址=A100-2800+2B000=32900,所以中央处理单元读取的地址在经由地址转换器对应到存储器的实体地址为32900。此外,虽然地址转换器可能会造成地址输出时的延迟,但是如果地址转换器只转换作为页码选择的P1.0、P1.1、P1.2以及定址高地址的端口2而保持定址低地址的端口0,则这种影响是可以忽略的。
由上述可知,利用地址转换器24将中央处理单元指向外部扩充存储器22的页码及该页码内的地址转换为外部扩充存储器的实体地址,通过地址转换器24将每一页中的公用区对应到同一个公用区,所以不论存储器包含几个存储库,都只需要在存储器中存储一个公用区,而使存储器的空间作更有效的运用,而地址转换器24也会将公用区之外的页码及地址对应至新规画存储器的实体地址。在实施时,单芯片20中所包含的切换装置只有在使用存储库交换来扩充存储器时才会将接脚切换连接至地址转换器,所以不会影响单芯片20的接脚作为其它用途时的功能。
与公知技术相比较,本发明在单芯片内部设置的地址转换器以及切换装置可以让单芯片在使用存储库交换来扩充外部存储器时更有效地运用存储器的空间,尤其是当有多个存储库切换时,使用地址转换器将每一个存储库中公用区的地址对应到同一个公用区,如此就只需在存储器中存储一份公用区,可以节省许多的存储器空间。公知技术在使用存储库交换的方式扩充外部存储器时,必须在每一个存储库中都复制一份公用区的数据,相当浪费存储器的空间,而本发明则可以更有效地利用存储器的空间。
以上所述仅为本发明的优选实施例,凡依本发明权利要求书所做的均等变化与修改,皆应属本发明专利的覆盖范围。