專(zhuān)利名稱:帶有微處理器和堆棧存儲(chǔ)器的電路裝置的制作方法
各微處理器為了處理由它們應(yīng)實(shí)施的各程序需要一個(gè)堆棧存儲(chǔ)器。每當(dāng)處理器在處理程序時(shí)不僅要處理在順序上依此相接的各程序指令,而且例如在子程序調(diào)用上要實(shí)施程序轉(zhuǎn)移時(shí),此堆棧存儲(chǔ)器(也稱“堆?!?用來(lái)容納處理器在結(jié)束子程序后向其返回的返回地址,以便在處理器已從其進(jìn)行子程序轉(zhuǎn)移的同一地點(diǎn)上繼續(xù)程序的處理。存在著一個(gè)所謂的堆棧指示器或Stack Pointer(堆棧指示器)用于管理堆棧存儲(chǔ)器,該堆棧指示器通常含有進(jìn)入堆棧存儲(chǔ)器的最后登錄的地址和在進(jìn)入堆棧存儲(chǔ)器的新的登錄時(shí)是相應(yīng)地增量的。也通常在各返回地址之外還在堆棧存儲(chǔ)器中存儲(chǔ)各變量。
為此目的在處理器的通常由RAM(隨機(jī)存取存儲(chǔ)器)實(shí)現(xiàn)的內(nèi)存中裝上一個(gè)要由此處理器處理的程序。在此該內(nèi)存位于一個(gè)經(jīng)處理器的各地址輸出端可直接訪問(wèn)的邏輯地址空間中。
通常也在所述邏輯地址空間中布置此堆棧存儲(chǔ)器。其后果在于堆棧存儲(chǔ)器與內(nèi)存分享供支配的邏輯地址空間,此地址空間的大小是由處理器的地址輸出端的數(shù)目確定的。在例如像8051型微控制器上存在的僅僅八個(gè)地址輸出端時(shí)直接經(jīng)控制器的這些輸出端可訪問(wèn)的邏輯空間只有256字節(jié)大。按要處理的程序的復(fù)雜性不同和按要付諸實(shí)施的各子程序調(diào)用的最大數(shù)目產(chǎn)生所需堆棧存儲(chǔ)器用的大小。因此堆棧存儲(chǔ)器大小是直接取決于要處理程序的種類(lèi)的。在制作微處理器時(shí)但是通常不知道,應(yīng)由此微處理器最終處理何種軟件。堆棧微處理器因而通常是設(shè)計(jì)得比較大的,以致于也能勝任處理器的各種復(fù)雜的程序。對(duì)于許多其它的,不那么復(fù)雜的各種用途此堆棧處理器則卻是過(guò)于大地設(shè)計(jì)的。
堆棧存儲(chǔ)器通常是布置在微處理器的邏輯地址空間的上部地址范圍中的。為此目的在處理器投入運(yùn)行或初始化時(shí)將堆棧指示器預(yù)調(diào)整到堆棧存儲(chǔ)器的最下部的地址上。如果隨后在堆棧存儲(chǔ)器中存放數(shù)據(jù),則相應(yīng)地增量此堆棧指示器。然后在邏輯地址空間中只有從堆棧指示器的開(kāi)始至堆棧存儲(chǔ)器的起始的范圍供處理器的內(nèi)存支配。對(duì)于上面已提到的帶有僅為256字節(jié)邏輯地址空間的8051型微控制器,在例如為64字節(jié)的堆棧存儲(chǔ)器大小時(shí)僅僅為內(nèi)存剩下192字節(jié)。此剩下的內(nèi)存大小卻是對(duì)編程員的各種布局可能性和對(duì)于由處理器能用其處理各程序的速度是決定性的。
基于本發(fā)明的任務(wù)在于,創(chuàng)立一種帶有一個(gè)微處理器和此微處理器用的一個(gè)堆棧存儲(chǔ)器的電路裝置,在此電路裝置上由處理器經(jīng)其各地址輸出端直接可訪問(wèn)的邏輯空間的盡可能大的范圍可供內(nèi)存支配,并且由堆棧存儲(chǔ)器占用邏輯地址空間的盡可能小的部分。
按權(quán)利要求1的一種電路裝置解決此任務(wù)。按本發(fā)明安排了,在微處理器直接可訪問(wèn)的邏輯地址空間之外至少布置堆棧存儲(chǔ)器的一個(gè)部分。
采用堆棧存儲(chǔ)器被劃分成各自同等大的存儲(chǔ)區(qū)的辦法,是特別容易實(shí)現(xiàn)這一點(diǎn)的,從這些存儲(chǔ)區(qū)中只有一個(gè)存儲(chǔ)區(qū)是布置在直接可訪問(wèn)的邏輯地址空間中的。然后以簡(jiǎn)單的方式能夠經(jīng)微處理器的各地址輸出端直接訪問(wèn)各存儲(chǔ)區(qū)的那個(gè)位于邏輯地址空間中的存儲(chǔ)區(qū),而需要一個(gè)負(fù)責(zé)不同存儲(chǔ)區(qū)之間轉(zhuǎn)接的專(zhuān)用邏輯電路用于訪問(wèn)堆棧存儲(chǔ)器的各其余存儲(chǔ)區(qū)。
當(dāng)此電路裝置具有一個(gè)第一寄存器時(shí)因此是尤其有利的,在此寄存器中是可存儲(chǔ)一個(gè)用于選擇各存儲(chǔ)區(qū)之一的信息的,并且此電路裝置具有一個(gè)第二寄存器,在此第二寄存器中是可存儲(chǔ)一個(gè)用于選擇包含在各自選出的存儲(chǔ)區(qū)中的各存儲(chǔ)器單元的信息的。此第二寄存器可有利地符合常規(guī)的堆棧指示器。每個(gè)存儲(chǔ)區(qū)的這些存儲(chǔ)器單元可以用于容納各一個(gè)數(shù)據(jù)字。當(dāng)在各存儲(chǔ)區(qū)中的每一個(gè)中存在著各一個(gè)帶有可存儲(chǔ)在第二寄存器中或在堆棧存儲(chǔ)器中的同一地址的存儲(chǔ)器單元時(shí),則是有利的。由第一寄存器的內(nèi)容和由此決定的相應(yīng)存儲(chǔ)區(qū)的選擇來(lái)確定,各自訪問(wèn)這些帶有各相同地址的存儲(chǔ)器單元中的哪一個(gè)。
本發(fā)明這個(gè)實(shí)施例的作用方式在此是如下進(jìn)行的在電路裝置投入運(yùn)行時(shí)在第一寄存器中存儲(chǔ)了用于選擇第一存儲(chǔ)區(qū)的信息。如果充滿此堆棧存儲(chǔ)器的話,首先將這些相應(yīng)的數(shù)據(jù)(各返回地址或各變量)依次存儲(chǔ)在第一存儲(chǔ)區(qū)的各存儲(chǔ)器單元中。在此相應(yīng)地增加第二寄存器的或堆棧指示器的內(nèi)容。如果用數(shù)據(jù)占用了第一存儲(chǔ)區(qū)的全部存儲(chǔ)器單元的話,則增加第一寄存器的內(nèi)容和因此選擇第二存儲(chǔ)區(qū)。隨后在需要時(shí)經(jīng)第二寄存器的內(nèi)容用數(shù)據(jù)充填其各存儲(chǔ)器單元等。
無(wú)需大的花費(fèi)和在僅稍微改變具有微處理器和相應(yīng)堆棧存儲(chǔ)器的各常規(guī)電路裝置的條件下,通過(guò)在邏輯地址空間中布置堆棧存儲(chǔ)器的盡可能小的部分,本發(fā)明能使得邏輯地址空間的最大可能的部分供微處理器的內(nèi)存支配,在此同時(shí)可實(shí)現(xiàn)一個(gè)任意大的堆棧存儲(chǔ)器,此堆棧存儲(chǔ)器的最大部分是布置在邏輯地址空間之外的。采用盡可能低地選擇每個(gè)存儲(chǔ)區(qū)的存儲(chǔ)器單元的數(shù)目和盡可能高地選擇堆棧存儲(chǔ)器存儲(chǔ)區(qū)數(shù)目的辦法,可以在所描述的實(shí)施例上特別簡(jiǎn)單地實(shí)現(xiàn)這兩個(gè)目的。
本發(fā)明的一個(gè)進(jìn)一步發(fā)展安排此電路裝置具有一個(gè)檢測(cè)手段,在寫(xiě)入或讀出堆棧存儲(chǔ)器中數(shù)據(jù)時(shí),此檢測(cè)手段用來(lái)檢測(cè)堆棧存儲(chǔ)器界限的超越。如果同時(shí)安排了取決于檢測(cè)手段的結(jié)果信號(hào)在超出堆棧存儲(chǔ)器的上界限或低于堆棧存儲(chǔ)器的下界限的情況下進(jìn)行堆棧存儲(chǔ)器的至少局部地卸載的話,可避免由于溢出或下溢而引起的各差錯(cuò)功能。
通過(guò)檢測(cè)手段的這個(gè)結(jié)果信號(hào)是可有利地釋放中斷,由此此處理器在現(xiàn)行的位置上中斷當(dāng)時(shí)程序的處理,并且向預(yù)定的其它程序地址轉(zhuǎn)移。在那里應(yīng)處理的各程序指令則能通過(guò)強(qiáng)制的中止最后起動(dòng)的各子程序來(lái)促使堆棧存儲(chǔ)器的卸載。替代由中斷各子程序處理的堆棧存儲(chǔ)器的卸載能夠至少部分地將堆棧存儲(chǔ)器的內(nèi)容至少暫時(shí)地轉(zhuǎn)調(diào)到一個(gè)其它的存儲(chǔ)區(qū)中,例如到內(nèi)存的那個(gè)存儲(chǔ)區(qū)中或者轉(zhuǎn)調(diào)到由處理器可直接訪問(wèn)的地址空間之外的一個(gè)存儲(chǔ)器中。通過(guò)將要轉(zhuǎn)調(diào)的數(shù)據(jù)復(fù)制到所希望的位置上來(lái)實(shí)現(xiàn)這一點(diǎn)。
基于檢測(cè)手段的結(jié)果信號(hào),附加地或另外選擇堆棧存儲(chǔ)器的卸載,如果由中斷生成一個(gè)相應(yīng)的差錯(cuò)通知的話的是有意義的,此差錯(cuò)通知向處理器用戶指出堆棧存儲(chǔ)器的功能差錯(cuò)。
當(dāng)電路裝置具有一個(gè)在其中存儲(chǔ)了存儲(chǔ)區(qū)數(shù)目的第三寄存器時(shí),以致于借助檢測(cè)手段通過(guò)將第三寄存器的內(nèi)容與在其中存儲(chǔ)了各自選擇的存儲(chǔ)區(qū)地址的第一寄存區(qū)的內(nèi)容的比較是可以檢測(cè)堆棧存儲(chǔ)器的溢出,這對(duì)用于避免堆棧存儲(chǔ)器上部界限的溢出是特別有利的。
以下用各圖詳述本發(fā)明。
圖1展示本發(fā)明的一個(gè)實(shí)施例。
圖2展示出自圖1的細(xì)節(jié)。
圖1展示一種微處理器1,它帶有用于經(jīng)一個(gè)相應(yīng)的地址譯碼器20訪問(wèn)邏輯地址空間3的有限數(shù)目的地址輸出端2。在此實(shí)施例上假設(shè)微處理器1具有八個(gè)地址輸出端2。例如當(dāng)微處理器1是8051型微控制器時(shí)則是此情況。從圖1中同樣可獲知邏輯地址空間3之內(nèi)的各存儲(chǔ)器單元的各二進(jìn)制地址。邏輯地址空間的最下部的地址為00000000。最上方的地址為1111 1111。這些存儲(chǔ)器單元可以是各自有一個(gè)或多個(gè)字節(jié)大小的各數(shù)據(jù)字。應(yīng)假設(shè)這些存儲(chǔ)器單元有一個(gè)字節(jié)的大小。然后經(jīng)此八個(gè)地址輸出端2是可用譯碼器20訪問(wèn)256字節(jié)的。
在圖1中的實(shí)施例上存在著一個(gè)劃分為四個(gè)同等大的存儲(chǔ)區(qū)5(Page1至Page4)的堆棧存儲(chǔ)器4。這些存儲(chǔ)區(qū)5中的每一個(gè)是劃分成單個(gè)可訪問(wèn)的存儲(chǔ)器單元9的。各自經(jīng)位于處理器1的各地址輸出端2上的這些同一地址是可訪問(wèn)各存儲(chǔ)區(qū)5之中每一個(gè)的這些存儲(chǔ)器單元9的。這些地址相當(dāng)于介于各地址1111 0000和11111 1111之間的邏輯地址空間3的最上部范圍中的16位。
經(jīng)一個(gè)第二譯碼器30進(jìn)行選擇帶有各自自己地址的各存儲(chǔ)器單元9中的一個(gè)存儲(chǔ)器單元基于用于選擇各存儲(chǔ)區(qū)5之一的,在一個(gè)第一寄存器6中可存儲(chǔ)的信息或地址是可經(jīng)第二譯碼器30選擇各存儲(chǔ)區(qū)5之一的。如果因此此邏輯地址空間3的一個(gè)分配給堆棧存儲(chǔ)器4的地址位于處理器1的這些地址輸出端2上面的話,則用第一寄存器6和第二譯碼器30確定,在各存儲(chǔ)區(qū)5的哪個(gè)存儲(chǔ)區(qū)中用相應(yīng)的地址分離此存儲(chǔ)器單元。由相當(dāng)于常規(guī)堆棧指示器或Stack Pointer的第二寄存器7的內(nèi)容確定,各存儲(chǔ)區(qū)5之內(nèi)的各存儲(chǔ)器單元9中的哪一個(gè)由處理器1來(lái)詢問(wèn)。
迄今曾通常在邏輯地址空間3之內(nèi)布置此整個(gè)堆棧存儲(chǔ)器4。在所示的實(shí)施例上,在其上堆棧存儲(chǔ)器4包括四個(gè)各帶有16字節(jié)的總共64字節(jié)的存儲(chǔ)區(qū)5,在將這整個(gè)堆棧存儲(chǔ)器4布置在邏輯地址空間3中時(shí),在此地址空間中還僅剩余下256-64=192字節(jié)用于處理器1的一個(gè)內(nèi)存10。通過(guò)本發(fā)明以有利的方式實(shí)現(xiàn)了,如圖1中所示的內(nèi)存10是256-16=240字節(jié)大的。通過(guò)各存儲(chǔ)區(qū)5之內(nèi)的一個(gè)其它數(shù)目的存儲(chǔ)器單元9還可以擴(kuò)大或縮小剩余內(nèi)存10的大小。通過(guò)更大數(shù)目的存儲(chǔ)區(qū)5可以提高堆棧存儲(chǔ)器4的整個(gè)大小,而不降低剩余的內(nèi)存10。
如同也在當(dāng)今技術(shù)水準(zhǔn)上那樣,在處理器1投入運(yùn)行時(shí)首先進(jìn)行初始化第二寄存器7或堆棧存儲(chǔ)器。在此將第二寄存器7的內(nèi)容首先預(yù)調(diào)整到堆棧存儲(chǔ)器4的各存儲(chǔ)器單元9的最下部地址上,即11110000在初始化時(shí)也如此來(lái)調(diào)整在當(dāng)今技術(shù)水準(zhǔn)上不存在的第一寄存器6的內(nèi)容,使得經(jīng)第二譯碼器30分離第一存儲(chǔ)區(qū)Page1。如果像在圖1中的實(shí)施例上那樣僅存在四個(gè)存儲(chǔ)區(qū)5的話,第一寄存器6只須具有用于這些存儲(chǔ)區(qū)的訪問(wèn)的兩個(gè)位。可是可以安排大得很多地選擇第一寄存器6的地址位數(shù)目和也相應(yīng)地提高可選擇的存儲(chǔ)區(qū)數(shù)目。如已提及那樣,堆棧4的存儲(chǔ)器需求取決于子程序轉(zhuǎn)移的數(shù)目和取決于除此之外在堆棧存儲(chǔ)器4中要存儲(chǔ)的變量。
堆棧存儲(chǔ)器4的布置在處理器1的邏輯地址空間3之外的那些存儲(chǔ)區(qū)5是可以布置在不同于那個(gè)在其中布置了第一存儲(chǔ)區(qū)Page1的存儲(chǔ)器的一個(gè)或多個(gè)存儲(chǔ)器中的。這些其它的存儲(chǔ)器像第一存儲(chǔ)區(qū)Page1和內(nèi)存10那樣位于相同的集成電路上是合理的。當(dāng)整個(gè)堆棧存儲(chǔ)器4和內(nèi)容10是一個(gè)共同存儲(chǔ)器的各組成部分時(shí)是尤其有利的,從此共同的存儲(chǔ)器中僅那個(gè)包含有內(nèi)存10和第一存儲(chǔ)區(qū)Page1的部分位于直接由微處理器1的各地址輸出端2可訪問(wèn)的邏輯地址空間3中。
如果第一寄存器6初始化到值YY=00上和第二寄存器7初始化到值1111 0000上的話,并且如果隨后(基于例如各子程序轉(zhuǎn)移)將各相應(yīng)的返回地址或變量存儲(chǔ)在堆棧存儲(chǔ)器4中的話,則如也在當(dāng)今技術(shù)水準(zhǔn)上那樣首先相應(yīng)地增量此第二寄存器7或堆棧指示器。在從堆棧存儲(chǔ)器4中讀出數(shù)據(jù)時(shí)進(jìn)行相應(yīng)的減量。以此方式保證了總是最后寫(xiě)入堆棧存儲(chǔ)器4的信息作為第一個(gè)重新讀出。
本發(fā)明現(xiàn)在能使得,只要第一存儲(chǔ)區(qū)Page1是用數(shù)據(jù)充滿的,意即堆棧指示器7具有地址1111 1111的話,通過(guò)堆棧指示器7的最后4位的溢出在堆棧指示器中作為下一步重新含有了地址1111 0000。通過(guò)堆棧指示器7的開(kāi)始四位是不改變地調(diào)整到1111來(lái)實(shí)現(xiàn)這一點(diǎn)。同時(shí)由第一寄存器6寄存第二寄存器7的溢出和相應(yīng)地增量此第二寄存器,使得從現(xiàn)在起在第二存儲(chǔ)區(qū)Page2中經(jīng)處理器1的這些地址輸出端2是可訪問(wèn)帶有地址1111 0000的存儲(chǔ)器單元9的。對(duì)于向其它各存儲(chǔ)區(qū)Page3,Page4的更換是適用相應(yīng)的.同樣在從堆棧存儲(chǔ)器4讀出數(shù)據(jù)時(shí)相應(yīng)地減量堆棧指示器7。
再次強(qiáng)調(diào)堆棧指示器的最上部四位是固定調(diào)整到1111上的,而只有最下部的四位×××××是改變的。如果帶有地址1111 0000的各存儲(chǔ)區(qū)5之一的下界限達(dá)到了的話,并且讀出一個(gè)其它的日期,則此減除或減量在第二寄存器7中產(chǎn)生一個(gè)新的計(jì)數(shù)器讀數(shù)1111 1111。第一寄存器6同時(shí)寄存此下溢和相應(yīng)地減量,隨即經(jīng)第二譯碼器30是可分離下一個(gè)下部的存儲(chǔ)區(qū)5。
圖1也展示一個(gè)檢測(cè)手段11,此檢測(cè)手段通過(guò)監(jiān)控第一寄存器6的內(nèi)容檢測(cè)堆棧存儲(chǔ)器4的溢出或下溢。在為YY=00的第一寄存器6的一個(gè)先前內(nèi)容上和在一個(gè)隨后出現(xiàn)的其它減量上該檢測(cè)手段11將一個(gè)相應(yīng)的結(jié)果信號(hào)給到處理器1上,隨即此處理器暫時(shí)中斷繼續(xù)處理存儲(chǔ)在內(nèi)存10中的程序,并且首先進(jìn)行第一寄存器6和第二寄存器7的重新初始化,以此辦法防止下溢。
此電路裝置具有一個(gè)在其中存儲(chǔ)著可利用的存儲(chǔ)區(qū)5數(shù)目的第三寄存器8用于寄存溢出。相似于剛才所描述的第一寄存器6下溢的情況,檢測(cè)手段11通過(guò)將第一寄存器的內(nèi)容與第三寄存器8的那個(gè)內(nèi)容作比較來(lái)檢測(cè)堆棧存儲(chǔ)器4的溢出,并且發(fā)送一個(gè)相應(yīng)的結(jié)果信號(hào)到處理器1上。此處理器又暫時(shí)中斷處理正在實(shí)施的程序,并且首先進(jìn)行堆棧存儲(chǔ)器4的至少部分的卸載,緊跟著的是第一寄存器6和第二寄存器7的相應(yīng)的初始化。
圖1也展示一種數(shù)據(jù)總線40,處理器1經(jīng)此數(shù)據(jù)總線可將數(shù)據(jù)寫(xiě)入此內(nèi)存10或堆棧存儲(chǔ)器4中或從其中重又讀出。
圖2再一次展示來(lái)自圖1的第一寄存器6和第二寄存器7。用圖2應(yīng)再一次闡述增量和減量的過(guò)程。在子程序調(diào)用(call)情況下將堆棧存儲(chǔ)器4的相應(yīng)的返回地址存放到那個(gè)由兩個(gè)寄存器6和7的內(nèi)容確定的地址上。同時(shí)使第二寄存器7的最后4位××××增量1,使得堆棧指示器7指向堆棧存儲(chǔ)器4中的下一個(gè)空著的存儲(chǔ)器單元9。如果在此出現(xiàn)溢出的話,意即第二寄存器7的內(nèi)容從1111 1111轉(zhuǎn)移到1111 0000的話,一個(gè)邏輯電路60寄存這一點(diǎn),并且使第一寄存器6的內(nèi)容增量為1的值。相反地在從一子程序返回(Return)時(shí)從堆棧存儲(chǔ)器4中取出相應(yīng)的返回地址,并且堆棧指示器7的最后四位××××減量1的值。相反地當(dāng)從子程序返回(Return)時(shí)從堆棧存儲(chǔ)器4取出此相應(yīng)的返回地址,并且堆棧指示器7的最后四位××××減量1的值。如果在此導(dǎo)致最后四位××××的下溢,邏輯電路60則寄存這一點(diǎn)和使第一寄存器6的內(nèi)容減量1。
代替各自為1的增量或減量,也可安排與此偏離的增量值或減量值(例如2)。這取決于各自應(yīng)存儲(chǔ)在堆棧存儲(chǔ)器4中的數(shù)據(jù)有何種范圍。在針對(duì)圖1所描述的實(shí)施例上,在此實(shí)施例上這些存儲(chǔ)器單元有各自為一字節(jié)的大小,當(dāng)要存儲(chǔ)的各返回地址或變量具有為兩字節(jié)的大小時(shí),可能應(yīng)選擇各自為2的增量或減量。
從圖2中也可獲悉一個(gè)其它的邏輯電路50,用此邏輯電路可實(shí)現(xiàn)對(duì)于堆棧指示器7是相對(duì)的,或者改變此堆棧指示器7的各指令,如同這些指令在各微處理器上是通常的那樣。在這些情況下此處理器置放一個(gè)新地址到數(shù)據(jù)總線上,應(yīng)將在當(dāng)今技術(shù)水準(zhǔn)上通常的各電路裝置上的堆棧指示器內(nèi)容提高或降低此新地址。為了也在本發(fā)明上使這樣的相對(duì)的或改變的各指令成為可能,安排了一個(gè)其它的邏輯電路50,此邏輯電路通過(guò)加或減將兩個(gè)寄存器6,7的各內(nèi)容調(diào)整到各正確的值上。
本發(fā)明的優(yōu)點(diǎn)在于,是可同時(shí)實(shí)現(xiàn)一個(gè)大的內(nèi)存10和一個(gè)大的堆棧存儲(chǔ)器4。此外按本發(fā)明的電路裝置有能力如同各常規(guī)的電路裝置那樣實(shí)施各同一的堆棧存儲(chǔ)器指令。
按本發(fā)明的電路裝置的其它優(yōu)點(diǎn)在于,在僅微量改動(dòng)常規(guī)的這類(lèi)各電路裝置是可實(shí)現(xiàn)此電路裝置的。因此是可采用帶有常規(guī)數(shù)據(jù)總線40和各地址輸出端2的一種常規(guī)的微處理器1和一種常規(guī)的譯碼器20。只要所希望的位數(shù)目是不改變的,才可改變迄今通常的堆棧指示器。在圖1中的實(shí)施例上在堆棧指示器7上四個(gè)最上部的位是不改變地調(diào)整到1111上的。此外需要一個(gè)大于邏輯地址空間3的存儲(chǔ)器,以便安置堆棧存儲(chǔ)器4的布置在此地址空間之外的各存儲(chǔ)區(qū)5。按本發(fā)明的電路裝置額外地需要用于各自分離各存儲(chǔ)區(qū)5之一的第一寄存器6和第二譯碼器30。
本發(fā)明尤其在只有一個(gè)帶有很小數(shù)目地址輸出端2的處理器1供支配的場(chǎng)合是有利的,正如這例如在微控制器8051上的情況那樣。恰恰在一種這樣小的供支配的邏輯地址空間3上無(wú)條件地必需將在此邏輯地址空間3上的堆棧存儲(chǔ)器4的份額保持盡可能地小。雖然也已經(jīng)公開(kāi)了大量帶有較大數(shù)目地址輸出端的處理器,經(jīng)這些地址輸出端則是可訪問(wèn)大得多的邏輯地址空間,可是這些處理器通常是要比例如微控制器8051占大得多的面積。尤其在制作各芯片卡時(shí),在此制作時(shí)必須在卡片型塑料殼體之內(nèi)安置一個(gè)或多個(gè)集成半導(dǎo)體電路,芯片面積盡可能小是重要的,因?yàn)樾酒ㄖ械母鞣N機(jī)械負(fù)荷是很大的,以致于容易破壞各大面積芯片。出于此原因采用當(dāng)今供支配的帶有少量地址輸出端2的各種小面積芯片(如這在8051上的情況那樣)是有巨大好處的。通過(guò)本發(fā)明可以部分地取消芯片的僅很小的,直接可訪問(wèn)的邏輯地址空間3的各種缺點(diǎn)。帶有較大數(shù)目地址輸出端2的較大的處理器也是昂貴得很多的。
由于按本發(fā)明的電路裝置是對(duì)迄今通常的堆棧存儲(chǔ)器指令完全兼容的,用于由處理器1應(yīng)實(shí)施的各軟件用途的各開(kāi)發(fā)手段的適配是不需要的。
按本發(fā)明的電路裝置使堆棧存儲(chǔ)器區(qū)的地址擴(kuò)展成為可能,而不必?cái)U(kuò)展處理器1的直接可訪問(wèn)的邏輯地址空間。
必須將各堆棧存儲(chǔ)器指令從所有其它的指令區(qū)分開(kāi)來(lái)。因此以有利方式只將在相對(duì)的或改變的指令上的那些大于1111 0000的地址接受進(jìn)堆棧指示器7中。通過(guò)一個(gè)簡(jiǎn)單的比較電路是可檢查這一點(diǎn)的。在所有其它的地址上去活用于選擇各存儲(chǔ)區(qū)5的第二譯碼器30的各選擇線。
用堆棧指示器7的一個(gè)進(jìn)位可識(shí)別堆棧指示器7的溢出或下溢。這兩種情況下此進(jìn)位改變自己。當(dāng)先前曾是××××=0000時(shí),涉及一種下溢。當(dāng)先前曾是××××=1111時(shí),涉及一種上溢。
可能的是,第一寄存器6和第二寄存器7是一個(gè)單一寄存器的組成部分,在此第一寄存器6占用該寄存器的各最高位(MSBS最重要的各位),并且第二寄存器7占用各下部的位。然后通過(guò)第二寄存器7的溢出自動(dòng)產(chǎn)生增量,并且通過(guò)下溢產(chǎn)生第一寄存器6的減量。
權(quán)利要求
1.電路裝置,其特征在于,-帶有一個(gè)具有經(jīng)其可直接訪問(wèn)一個(gè)邏輯地址空間(3)的各地址輸出端(2)的微處理器(1),-帶有一個(gè)位于邏輯地址空間(3)的一個(gè)下部范圍中的內(nèi)存(10),-帶有一個(gè)劃分為至少兩個(gè)同等大的存儲(chǔ)區(qū)(5)的堆棧存儲(chǔ)器(4),從這些存儲(chǔ)區(qū)中一個(gè)是布置在邏輯地址空間(3)的一個(gè)上部范圍中的,而其余各存儲(chǔ)區(qū)是布置在邏輯地址空間(3)之外的,在此如此地在堆棧存儲(chǔ)器(4)中存儲(chǔ)應(yīng)存儲(chǔ)的各數(shù)據(jù),使得在將各數(shù)據(jù)存儲(chǔ)在各其它的存儲(chǔ)區(qū)(5)中之前,充滿布置在邏輯地址空間(3)中的存儲(chǔ)區(qū)(5)
2.按權(quán)利要求1的電路布置,其特征在于,-帶有一個(gè)用于存儲(chǔ)用來(lái)選擇各存儲(chǔ)區(qū)(5)之一的信息的第一寄存器(6),-并且?guī)в幸粋€(gè)用于存儲(chǔ)一個(gè)信息的第二寄存器(7),此信息用于在各自由第一寄存器(6)的內(nèi)容選擇的存儲(chǔ)區(qū)(5)之內(nèi)選擇各存儲(chǔ)器單元(9)。
3.按權(quán)利要求2的電路裝置,其特征在于,-在此電路裝置上第二寄存器(7)是與一個(gè)第一地址譯碼器(20)連接的,經(jīng)此地址譯碼器可訪問(wèn)在各存儲(chǔ)區(qū)(5)之內(nèi)的各存儲(chǔ)器單元(9),在此第一地址譯碼器(20)也用于經(jīng)各地址輸出端(2)訪問(wèn)共同的邏輯地址空間(3),并且在此電路裝置上第一寄存器(6)是與第二地址譯碼器(30)連接的,經(jīng)此地址譯碼器是可訪問(wèn)這些存儲(chǔ)區(qū)(5)的。
4.按權(quán)利要求2或3的電路裝置,其特征在于,在此電路裝置上第一寄存器(6)是通過(guò)第二寄存器(7)的溢出或下溢而增量或減量的。
5.按先前各權(quán)利要求之一的電路裝置,其特征在于,-在此電路裝置上存在一種檢測(cè)手段(11)以用于在寫(xiě)入或讀出數(shù)據(jù)時(shí)檢測(cè)超溢堆棧存儲(chǔ)器(4)的界限。在此電路裝置上取決于檢測(cè)手段(11)的結(jié)果信號(hào)在超溢的情況上是可進(jìn)行堆棧存儲(chǔ)器(4)的至少部分的卸載。
6.按權(quán)利要求5的電路裝置,其特征在于,-此電路裝置具有一個(gè)用于存儲(chǔ)存儲(chǔ)區(qū)(5)數(shù)目的第三寄存器(8),-由檢測(cè)手段(11)通過(guò)將各自選出的存儲(chǔ)區(qū)(5)與第三寄存器(8)的內(nèi)容作比較是可識(shí)別堆棧存儲(chǔ)器(4)上部界限的超溢的。
全文摘要
微處理器有一個(gè)經(jīng)各地址輸出端(2)可直接訪問(wèn)的邏輯地址空間(3)。堆棧存儲(chǔ)器(4)是至少部分地布置在此邏輯地址空間(3)之外的。優(yōu)點(diǎn):可以使剩余在邏輯地址空間(3)中的內(nèi)存(10)最大化。
文檔編號(hào)G06F12/00GK1232564SQ97198398
公開(kāi)日1999年10月20日 申請(qǐng)日期1997年9月30日 優(yōu)先權(quán)日1996年9月30日
發(fā)明者K·奧伯萊恩德, M·巴爾迪施維勒, S·普法布 申請(qǐng)人:西門(mén)子公司