CN1296837C - 存取微处理器外部存储器的方法及单芯片微处理器 - Google Patents

存取微处理器外部存储器的方法及单芯片微处理器 Download PDF

Info

Publication number
CN1296837C
CN1296837C CNB03110374XA CN03110374A CN1296837C CN 1296837 C CN1296837 C CN 1296837C CN B03110374X A CNB03110374X A CN B03110374XA CN 03110374 A CN03110374 A CN 03110374A CN 1296837 C CN1296837 C CN 1296837C
Authority
CN
China
Prior art keywords
memory set
storehouse
memory
microprocessor
page number
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB03110374XA
Other languages
English (en)
Other versions
CN1536494A (zh
Inventor
曾宝庆
宋秉乘
陈炳盛
杜立群
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MediaTek Wuhan Inc
Original Assignee
MediaTek Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by MediaTek Inc filed Critical MediaTek Inc
Priority to CNB03110374XA priority Critical patent/CN1296837C/zh
Publication of CN1536494A publication Critical patent/CN1536494A/zh
Application granted granted Critical
Publication of CN1296837C publication Critical patent/CN1296837C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一种存取大于微处理器内部寻址线可寻址空间的外部存储器的方法,该方法包含将中断服务程序储存于多个存储器组的其中一个;在中断发生时,使用该微处理器将工作中的程序地址及存储器组寻址码存入堆栈中;将该微处理器切换至储存该中断服务程序的存储器组中执行该中断服务程序;从该堆栈中取出存入该堆栈的存储器组的寻址码及程序地址;以及将该中央处理单元切换回从该堆栈中取出的存储器组寻址码所对应的存储器组继续在该存储器组中的程序地址执行中断之前的工作。

Description

存取微处理器外部存储器的方 法及单芯片微处理器
技术领域
本发明提供一种存取存储器的方法,尤指一种存取连接于微处理器的外部存储器的方法。
背景技术
MCS(Micro Computer System)是Intel公司对微处理器的总称,而其所开发的MCS-51/52系列的微处理器更是普遍地应用在工业界中。一般而言,微处理器只含有少量的存储器及输入输出端口,以MCS-51系列的微处理器为例,它有4K字节的程序存储器、128字节的数据存储器以及32条输入输出端口,MCS-52系列的微处理器则是将程序存储器增加为8K字节,以及将数据存储器增加为256字节,而MCS-52与MCS-51系列的微处理器同样是使用一个8位的中央处理单元。程序存储器用来存放使用者所撰写的程序,属于只读存储器(ROM),数据存储器则是随机存取存储器(RAM),可供中央处理单元运作时读取或写入数据,通常是用来当程序执行时暂时存放数据的暂存器。MCS-51/52系列的微处理器都可以由外部扩充存储器,最大可扩充至64K位字节。
然而在一些应用之中,使用者可能会需要撰写很大的程序码或是使用很大的阵列表,如此一来64K位字节的外部扩充程序存储器仍然不够使用。存储器组切换(bank switch)是一种可以将存储器大幅扩充的方法,使用微处理器上多出的管脚作为解码线来对超过64K字节的存储器作寻址,若外部存储器是一个大容量的存储器装置,则多出的管脚可以直接作为地址线,若外部存储器是多个小容量的存储器装置,则多出的管脚可用来选择存储器芯片。由于微处理器最大的外部扩充存储器为64K字节,所以可用64K字节作为单一存储器组的基本容量,称为一页(page),并以微处理器多出的管脚来切换页码,以选择不同的存储器组。存储器组切换最大的问题在于中断向量表(interrupt vector table)配置的地址,因为中断向量表通常会放在存储器中某个特定的地址,虽然程序在运作时可以在各个页作切换,但是当中断发生时,程序会立刻在所在页中的特定地址去寻找中断向量表,而且此时程序并无法作存储器组切换,当程序找不到中断向量表时,便会产生错误。一般解决这个问题的方法,便是在每个存储器组中都保留共用区(common area),共用区中储存中断向量表、中断服务程序(interrupt service routine,ISR)、通用函数库以及存储器组切换程序,所以不论程序运作在那一个页,当程序发生中断时,程序都可以在所在的页中找到中断向量表继续程序的执行。
请参考图1,图1为已知外部程序存储器12配置的示意图。假设有MCS-51/52系列的微处理器使用存储器组切换的方式在外部扩充512K字节的存储器12,分为8个页,每个页为64K字节,并保留10K字节的共用区用来存放中断向量表、中断服务程序、通用函数库以及存储器组切换程序。举例来说,当在第一页的程序需要呼叫第二页的程序时,会立即跳至共用区中的存储器组切换程序,存储器组切换程序会设定所需存储器组的页码,因为对于微处理器而言,在共用区中改变页码并不会影响任何程序数据的读取,接着微处理器就可以存取第二页中所需的程序。在第二页的程序处理完毕之后,程序会先回到共用区中,由存储器组切换程序切换回原来的存储器组,再回到第一页中原来程序的地址继续执行程序。
由上述可知,已知MCS-51/52系列的微处理器所提供的程序存储器,最大只能利用扩充外部程序存储器至64K字节,但是通过存储器组切换的技巧,使用微处理器上多出的管脚,可以再将外部程序存储器作大幅的扩充,但是存储器组切换有个缺点,就是每个存储器组之中都必须保留部分的空间作为共用区,用来存放中断向量表、中断服务程序、通用函数库以及存储器组切换程序,而这些数据会复制并储存在每个存储器组的共用区之中,如此一来,存储器的空间便无法有效的被利用。
发明内容
因此本发明的主要目的是提供一种存取连接微处理器的存储器的方法,以解决上述问题。
本发明的权利要求提供一种存取连接微处理器的存储器的方法,该存储器包含多个存储器组(memory bank),其中每一存储器组的大小为该微处理器内部寻址线的最大寻址空间,该微处理器包含中断处理单元,以及用来切换存储器组的存储器组选择器,该方法包含:(a)将中断服务程序(interruptservice routine)储存在该多个存储器组的其中一个;(b)在中断发生时,使用该中央处理单元将工作中的程序地址存入(push)堆栈中,接着将工作中的存储器组的页码推入该堆栈中,再设定该存储器组选择器为储存具有该中断服务程序的存储器组的页码;(c)将该中央处理单元切换至储存该中断服务程序的存储器组中执行该中断服务程序;(d)使用该中央处理单元从该堆栈中取出(pop)在步骤(b)中存入该堆栈的存储器组的页码并将其存入该存储器组选择器,接着由该堆栈中取出在步骤(b)中存入该堆栈的程序地址;以及(e)在执行步骤(d)后,根据该存储器组选择器储存的页码及取出的程序地址,切换回该页码所对应的存储器组继续在该存储器组地址执行步骤(b)中断之前的工作。
相对于已知技术,本发明所提供的方法使微处理器的中央处理单元在发生中断时能利用堆栈起来记录执行中程序的地址数据,如此可将存在于每一个存储器组的共用区之中的中断服务程序移出,减少共用区占用的空间,一方面增加了每一个存储器组的可用空间,另一方面也减少了切换存储器组的机会,提高中央处理单元存取外部存储器的效率,已知技术在使用存储器组交换的方式扩充外部存储器时,必须在每一个存储器组中都复制一份含有中断服务程序的共用区数据,而中断服务程序占了共用区很大的一部分,相当浪费存储器的空间,而本发明则可以更有效的利用存储器的空间。
附图说明
图1为已知外部程序存储器配置的示意图。
图2为本发明外部存储器的存储器组配置的示意图。
图3为本发明在中断发生时切换存储器组的流程图。
图4为本发明切换记库时使用堆栈的示意图。
具体实施方式
请参考图2,图2为本发明微处理器的外部存储器22其存储器组配置的示意图。微处理器(图未示)的外部存储器22在使用存储器组交换的存储器配置方式时,需在每一个存储器组中皆需要复制一份共用区的数据,相当耗费存储器空间,若可以减少共用区中存放数据的大小,就能够大幅的节省存储器的空间。本发明将外部存储器22的每一个存储器组的共用区24所包含的中断服务程序取出,也就是存储器组的共用区24不包含中断服务程序,而仅在外部存储器的其中一个存储器组之中储存一份中断服务程序26,于中断发生时再切换至储存中断服务程序26的存储器组中读取数据,如此每一个存储器组的共用区就都缩小了,相对的每一个存储器组就有更多的可用空间,也能减少存储器组切换的机率。举例来说,假设外部存储器22的大小为512K字节,分成8个存储器组,每一个存储器组的大小为64K字节,而每一个存储器组需要10K字节的存储器空间来储存共用区数据,而其中中断服务程序占了4K字节,所以将每一个共用区中的中断服务程序取出而仅储存一份中断服务程序26在存储器组的第0页,除了存储器组的第0页之外,每一个数据库的可用空间由原来的54K字节增加为58K字节,共增加了4K*(8-1)=28K字节的存储器空间。因为中断服务程序26只储存在存储器组的第0页,所以当中断发生时,微处理器的中央处理单元需将工作中的存储器组切换至存储器组的第0页,首先将执行中的数据地址以及所在的存储器组页码先后存入(push)堆栈之中,接着切换至存储器组的第0页作中断处理,待完成中断处理之后再由堆栈中先后取出(pop)先前存入的存储器组页码以及数据地址,根据由堆栈中取出的存储器组页码以及数据地址切换回中断发生前的数据地址继续工作。
请参考图3,图3为本发明于中断发生时切换存储器组的流程图。本发明为了节省存储器的使用空间,将中断服务程序由共用区中取出,仅储存一份中断服务程序26于其中一个存储器组之中,如此不但增加了每一个存储器组的可用空间,也由于可用空间的增加使得切换存储器组的机率减少,提高效率。由于存储器组的共用区中不含中断服务程序,若程序在执行时发生中断,微处理器的中央处理单元会使用堆栈来记录工作中的数据地址以及所在的存储器组页码,于存储器组切换至储存中断服务程序的数据库完成中断处理之后,就可以根据堆栈中记录的数据回到中断发生前所在的地址。本发明于中断发生时切换存储器组的详细步骤内容说明如下:
步骤110:中断发生,中央处理单元接收到中断请求而必须停止正在执行的程序进行中断处理;
步骤120:将执行中的程序的地址数据存入堆栈之中,首先将记录地址数据的8位低位地址存入堆栈之中,接着再将记录地址数据的8位高位地址存入堆栈之中;
步骤130:将执行中的程序所在数据库的页码存入堆栈之中,也就是将储存页码的存储器组选择器(page selector)中的8位数据存入堆栈之中;
步骤140:切换存储器组,也就是将存储器组选择器设定为储存中断服务程序的存储器组的页码,使得中央处理单元能够切换到储存中断服务程序的存储器组作中断处理;
步骤150:执行中断服务程序,进行中断处理;
步骤160:由堆栈中取出先前工作中的存储器组的页码;
步骤170:切换回先前工作中的存储器组,也就是将存储器组选择器设定为上一步骤中由堆栈取出的页码;
步骤180:由堆栈中取出先前执行的程序的地址数据,先将记录地址数据的8位高位地址由堆栈中取出,接着再将记录地址数据的8位低位地址由堆栈中取出;
步骤190:根据上一步骤由堆栈取出的地址数据继续进行中断发生前所执行的程序。
请参考图4,图4为本发明切换存储器组时使用堆栈28的示意图。微处理器中的堆栈存储器28通常是使用堆栈指针指向内部数据存储器的一个位置作为堆栈的起始位置,堆栈通常是用来存放呼叫子程序的程序计数,或者是使用者自定的数据,而由于微处理器的中央处理单元执行8位的指令集,所以堆栈中的每一组数据也为8位。堆栈数据的处理方式为先进后出,也就是存入堆栈中的数据必须等到下一组存入堆栈中的数据被取出后才会被取出使用,而最后一组存入堆栈中的数据则会最先被取出的数据。在上述的方法中,当中央处理单元接到中断请求时,会依照上述的步骤先后将执行中程序的低位地址、高位地址以及所在的存储器组页码存入堆栈28之中,换句话说,当中断发生时,中央处理单元会先利用堆栈28来记录执行中程序的地址数据,所以在完成步骤130之后,堆栈中所存放的数据便如图4所示,接着进行步骤140来切换数据库及步骤150来作中断处理,在作中断处理时可能也会使用到堆栈28储存一些参数,但是在完成中断处理之后,堆栈28中所储存的数据仍然会如图4所示,此时中央处理单元就可以利用堆栈28中的数据进行步骤160至步骤190回到中断发生前的地址继续执行被中断的程序。
由上述可知,本发明的微处理器在外部存储器22使用存储器组交换的方法时,将每一个存储器组的共用区24的中断服务程序取出,而仅储存一份中断服务程序26在其中一个存储器组,而在中断发生时,使用堆栈28来记录中央处理单元执行中程序的地址数据,再切换至储存中断服务程序的存储器组作中断处理,待完成中断处理之后,由堆栈28中取出中断发生前中央处理单元所执行程序的地址数据,使得中央处理单元可以根据该地址数据继续执行程序。
相对于已知技术,本发明所提供的方法使微处理器的中央处理单元在发生中断时能利用堆栈起来记录执行中程序的地址数据,如此可将存在于每一个存储器组的共用区之中的中断服务程序移出,减少共用区占用的空间,一方面增加了每一个存储器组的可用空间,另一方面也减少了切换存储器组的机会,提高中央处理单元存取外部存储器的效率,已知技术在使用存储器组交换的方式扩充外部存储器时,必须在每一个存储器组中都复制一份含有中断服务程序的共用区数据,而中断服务程序占了共用区很大的一部分,相当浪费存储器的空间,而本发明则可以更有效的利用存储器的空间。
以上所述仅为本发明的优选实施例,凡依本发明权利要求书所做的相同的变化与改进,都应属本发明专利的涵盖范围。

Claims (6)

1.一种存取大于微处理器内部寻址线可寻址空间的存储器的方法,该存储器包含多个存储器组,该微处理器包含堆栈,中断处理单元,以及用来选择存储器组的存储器组选择器,该方法包含:
(a)将中断服务程序储存于该存储器组的其中一个;
(b)在中断发生时,使用该中断处理单元将工作中的程序地址存入堆栈中,接着将工作中的存储器组的页码推入该堆栈中,再设定该存储器组选择器为储存具有该中断服务程序的存储器组的页码;
(c)将该微处理器切换至储存该中断服务程序的存储器组中执行该中断服务程序;
(d)使用该中断处理单元从该堆栈中取出于步骤(b)中存入该堆栈的存储器组的页码并将其储存于该存储器组选择器,接着由该堆栈中取出于步骤(b)中存入该堆栈的程序地址;以及
(e)在执行步骤(d)后,根据该存储器组选择器储存的存储器组页码及取出的程序地址,将该微处理器切换回该存储器组页码所对应的存储器组继续在该程序地址执行步骤(b)中断之前的工作。
2.如权利要求1所述的方法,其中该微处理器是为MCS系列的微处理器。
3.如权利要求1所述的方法,其还包含在每个存储器组中储存共用区。
4.如权利要求3所述的方法,其中该共用区中的数据不包含中断服务程序。
5.如权利要求1所述的方法,其中还包括在该微处理器的程序存储器中存储程序码。
6.一种单芯片微处理器,用于存取大于该微处理器内部寻址线可寻址空间的存储器,该存储器包含多个存储器组,中断服务程序存储于该存储器组的其中一个,该处理器包括:
堆栈,用于存储程序地址和存储器组的页码;
存储器组选择器,其中存储有存储器组的页码,用于根据该存储器组的页码而选择不同的存储器组;和
中断处理单元,用于当发生中断时,将工作中的程序地址存入堆栈,接着将工作中的存储器组的页码推入该堆栈中,并将该存储器组选择器设置为存储具有该中断服务程序的存储器组的页码;所述中断处理单元还用于将该微处理器切换至具有该中断服务程序的存储器组以执行该中断服务程序;从该堆栈中取出在发生中断时存入该堆栈的存储器组的页码并将其存储于该存储器组选择器,接着从该堆栈中取出在发生中断时存入该堆栈的程序地址;和根据该存储器组选择器中存储的存储器组页码及取出的程序地址,而将该微处理器切换回该存储器组页码所对应的存储器组继续在该程序地址执行中断之前的工作。
CNB03110374XA 2003-04-10 2003-04-10 存取微处理器外部存储器的方法及单芯片微处理器 Expired - Fee Related CN1296837C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB03110374XA CN1296837C (zh) 2003-04-10 2003-04-10 存取微处理器外部存储器的方法及单芯片微处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB03110374XA CN1296837C (zh) 2003-04-10 2003-04-10 存取微处理器外部存储器的方法及单芯片微处理器

Publications (2)

Publication Number Publication Date
CN1536494A CN1536494A (zh) 2004-10-13
CN1296837C true CN1296837C (zh) 2007-01-24

Family

ID=34319678

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB03110374XA Expired - Fee Related CN1296837C (zh) 2003-04-10 2003-04-10 存取微处理器外部存储器的方法及单芯片微处理器

Country Status (1)

Country Link
CN (1) CN1296837C (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100488555C (zh) * 2005-03-29 2009-05-20 吴宝海 一种治疗胃及十二指肠溃疡的中药组合物

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9658793B2 (en) * 2015-02-20 2017-05-23 Qualcomm Incorporated Adaptive mode translation lookaside buffer search and access fault

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100488555C (zh) * 2005-03-29 2009-05-20 吴宝海 一种治疗胃及十二指肠溃疡的中药组合物

Also Published As

Publication number Publication date
CN1536494A (zh) 2004-10-13

Similar Documents

Publication Publication Date Title
US5423015A (en) Memory structure and method for shuffling a stack of data utilizing buffer memory locations
RU2405189C2 (ru) Расширение блока стековых регистров с помощью теневых регистров
KR100529995B1 (ko) 데이터베이스에 엘리먼트를 저장하는 방법
WO2001052068A1 (en) A memory device search system and method
WO1996000418A1 (en) System and method for generating a linked list in a computer memory
JPS6027964A (ja) メモリアクセス制御回路
JPH07175698A (ja) ファイルシステム
JPH03126144A (ja) 仮想アドレス式情報処理システムにおけるメモリの使用方法及びこの方法を実施するための装置
CN1426558A (zh) 带有可编程存储体选择的具有不同数据缓冲区容量的多层存储体
CN1296837C (zh) 存取微处理器外部存储器的方法及单芯片微处理器
CN101084484B (zh) 用于快速存取堆栈存储器的方法和系统
KR19990013576A (ko) 데이터 랜덤 액세스 메모리를 이용한 마이크로 콘트롤러의 강제페이지 제로 페이징 방법
TWI222597B (en) Method for accessing external memory of a microprocessor
US5794240A (en) Multi-threaded sorting system for a data processing system
CN1258147C (zh) 处理器管理外部存储器的方法
CN1261863C (zh) 经由多工器存取储存于存储体的数据的微控制器和方法
CN113900591A (zh) 延长存储器寿命的方法、装置、电子设备及存储介质
US7130857B2 (en) Method for accessing a memory unit in which sequences of notes are stored, corresponding memory unit and corresponding program
US8812813B2 (en) Storage apparatus and data access method thereof for reducing utilized storage space
JPS62151940A (ja) レジスタ退避/復帰方式
TWI284806B (en) Method for managing external memory of a processor and chip for managing external memory
Quammen et al. Flexible register management for sequential programs
CN87104487A (zh) 在具有虚拟存储地址的数据处理系统中进行页面置换的装置和方法
US7111107B2 (en) Microcontroller with dedicated memory bank for servicing interrupts
CN1534484A (zh) 增加处理器中存储器的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MEDIATEK SOFTWARE (WUHAN) CO., LTD.

Free format text: FORMER OWNER: LIANFA SCIENCE AND TECHNOLOGY CO., LTD.

Effective date: 20150825

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150825

Address after: 430070, Hubei, East Lake Wuhan Development Zone Finance port 1, A4, building 7-8

Patentee after: MediaTek software (Wuhan) Co., Ltd.

Address before: Hsinchu, Hsinchu, China Science and Technology Industrial Park, Taiwan

Patentee before: MediaTek.Inc

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20070124

Termination date: 20160410

CF01 Termination of patent right due to non-payment of annual fee