国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      ??刂蒲b置及其方法

      文檔序號(hào):6650343閱讀:278來(lái)源:國(guó)知局
      專利名稱:??刂蒲b置及其方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及在微型信息處理機(jī)等執(zhí)行程序的過(guò)程中使用的??刂蒲b置及其方法。
      背景技術(shù)
      一直以來(lái),在微型信息處理機(jī)中,多次執(zhí)行同樣的程序時(shí),將其處理部分作為子程序可以執(zhí)行高效的程序。執(zhí)行這樣的子程序調(diào)用指令后,將該子程序之后要處理的程序的返回地址推入棧,然后跳躍到子程序的起始地址。此子程序的處理結(jié)束后,執(zhí)行子程序的返回指令,從棧中抽取返回地址并跳躍到該地址。
      這樣的微型信息處理機(jī),在執(zhí)行程序指令時(shí),為了高速進(jìn)行向堆棧的推入及彈出,在硬件內(nèi)部設(shè)置棧寄存器,隨著程序的執(zhí)行,通過(guò)硬件控制來(lái)自動(dòng)推入或彈出程序計(jì)數(shù)器值或循環(huán)計(jì)數(shù)器值、循環(huán)結(jié)束地址。
      另外,在微型信息處理機(jī)中,執(zhí)行程序并超過(guò)棧的容量時(shí),發(fā)生由意想不到的程序的停止或子程序的返回地址消失導(dǎo)致程序失控的問(wèn)題。這類問(wèn)題若只是增加棧的容量,由于硬件的規(guī)模無(wú)止境地增大,因此,采用另外的解決方案。
      例如,專利文件1中記載的存儲(chǔ)管理方式中,總線管理機(jī)構(gòu)探測(cè)出使堆棧區(qū)溢出的中斷時(shí),轉(zhuǎn)移堆棧區(qū)的棧指針?biāo)鶎?duì)應(yīng)的地址,設(shè)定RAM的空閑區(qū)地址為棧指針,可使處理繼續(xù)進(jìn)行。
      另外,專利文件2所記載的數(shù)據(jù)處理系統(tǒng)中的存儲(chǔ)擴(kuò)展棧裝置中,硬件棧大致滿溢的時(shí)候,通過(guò)向執(zhí)行中的程序插入移動(dòng)指令,將入口從硬件棧的最后移動(dòng)到存儲(chǔ)擴(kuò)展棧,硬件棧大致為空的時(shí)候,通過(guò)向程序插入移動(dòng)指令,將入口從存儲(chǔ)擴(kuò)展棧移動(dòng)到硬件棧的最后,從而,硬件可繼續(xù)執(zhí)行程序。
      特開(kāi)平8-77004號(hào)[專利文件2]特開(kāi)平8-255476號(hào)發(fā)明內(nèi)容但是,上述專利文件1中的存儲(chǔ)管理方式中,由于棧設(shè)計(jì)在主存儲(chǔ)器上,更有,分配到擴(kuò)展棧的數(shù)據(jù)是被更頻繁地使用的棧的最前部的數(shù)據(jù),因此難以高速處理。
      另外,專利文件2中的存儲(chǔ)擴(kuò)展棧裝置中,由于硬件棧及存儲(chǔ)擴(kuò)展棧等所有處理由控制邏輯回路管理及控制,控制邏輯回路變的龐大化及復(fù)雜化。
      本發(fā)明的目的是,提供??刂蒲b置及其方法,消除這種傳統(tǒng)技術(shù)的缺點(diǎn),其結(jié)構(gòu)不需要硬件規(guī)模的增大化或電路的復(fù)雜化,即使在執(zhí)行有可能超過(guò)棧寄存器容量的程序的時(shí)候,也能繼續(xù)執(zhí)行而沒(méi)有程序停止及失控的現(xiàn)象。
      本發(fā)明為了解決上述課題,其特征為,包含執(zhí)行由運(yùn)算指令或子程序調(diào)用指令等多個(gè)指令構(gòu)成的規(guī)定程序的主控制單元,將此規(guī)定程序中的程序計(jì)數(shù)器值、循環(huán)計(jì)數(shù)器值及循環(huán)結(jié)束地址等第一數(shù)據(jù)以LIFO形式存儲(chǔ)在第一棧的棧寄存器;在包含暫時(shí)存儲(chǔ)按此運(yùn)算指令處理的中間結(jié)果等第二數(shù)據(jù)的存儲(chǔ)單元的??刂蒲b置中,此存儲(chǔ)單元包含以LIFO形式存儲(chǔ)第一數(shù)據(jù)的第二棧;此裝置包含監(jiān)視第一棧的容量,其剩余容量達(dá)到規(guī)定的推入對(duì)象容量時(shí)發(fā)生推入中斷,通知該主控制單元,又,達(dá)到規(guī)定的彈出對(duì)象容量時(shí)發(fā)生彈出中斷,通知該主控制單元的中斷控制單元;該主控制單元對(duì)應(yīng)此推入中斷,從第一棧的底部取出數(shù)據(jù),推入第二棧,將此按照轉(zhuǎn)移數(shù)重復(fù)的推入中斷處理單元;對(duì)應(yīng)此彈出中斷,從第二棧彈出數(shù)據(jù)存儲(chǔ)到第一棧的底部,將此按照返回?cái)?shù)重復(fù)的彈出中斷處理單元。
      而且,主控制部中,其特征為包含執(zhí)行由運(yùn)算指令或子程序調(diào)用指令等多個(gè)指令構(gòu)成的規(guī)定程序的第一工序;在棧寄存器中,將此規(guī)定程序中的程序計(jì)數(shù)器值、循環(huán)計(jì)數(shù)器值及循環(huán)結(jié)束地址等第一數(shù)據(jù)以LIFO形式存儲(chǔ)到第一棧的第二工序;暫時(shí)將此運(yùn)算指令處理的中間結(jié)果等第二數(shù)據(jù)存儲(chǔ)到存儲(chǔ)器上的第三工序的??刂品椒?,它包含此存儲(chǔ)器中向第二棧以LIFO形式存儲(chǔ)第一數(shù)據(jù)的第四工序;包含監(jiān)視第一棧的容量,其剩余容量達(dá)到規(guī)定的推入對(duì)象容量時(shí)發(fā)生推入中斷,通知此主控制部,又,達(dá)到規(guī)定的彈出對(duì)象容量時(shí)發(fā)生彈出中斷,通知此主控制部的中斷控制工序;利用對(duì)應(yīng)此推入中斷的此主控制部,從第一棧的底部取出數(shù)據(jù)推入第二棧,將此按轉(zhuǎn)移數(shù)重復(fù)的推入中斷處理工序;利用對(duì)應(yīng)此彈出中斷的此主控制部,從第二棧彈出數(shù)據(jù)存儲(chǔ)到第一棧的底部,將此按返回?cái)?shù)重復(fù)的彈出中斷處理工序。
      根據(jù)本發(fā)明的??刂蒲b置,H/W棧的容量未滿之前,隨著中斷控制器發(fā)生推入中斷,主控制部從H/W棧的底部取出數(shù)據(jù)推入S/W棧,可做到一時(shí)間的保存,H/W棧的容量變空后,隨著中斷控制器發(fā)生彈出中斷,主控制部從S/W棧彈出數(shù)據(jù)存儲(chǔ)到H/W棧的底部而做到返回。如此,本發(fā)明的棧控制裝置中,無(wú)需增大化及復(fù)雜化主控制部,即使執(zhí)行可能超過(guò)H/W棧容量的程序,也能繼續(xù)執(zhí)行而沒(méi)有程序停止及失控的現(xiàn)象。
      而且,根據(jù)本發(fā)明的??刂蒲b置,由一次性對(duì)H/W棧進(jìn)行多個(gè)數(shù)據(jù)的保存及返回,可減少推入及彈出中斷的發(fā)生頻度,更能防止伴隨推入及彈出中斷而發(fā)生的性能降低。


      表示本發(fā)明的??刂蒲b置的一實(shí)施例的方框圖。
      表示圖1中所示??刂蒲b置中棧寄存器的一部分的方框圖。
      說(shuō)明圖1中所示棧控制裝置的推入中斷的動(dòng)作次序的流程圖。
      圖3的動(dòng)作中H/W棧及S/W棧中存儲(chǔ)的數(shù)據(jù)的示意圖。
      圖3的動(dòng)作中H/W棧及S/W棧中存儲(chǔ)的數(shù)據(jù)的示意圖。
      圖3的動(dòng)作中H/W棧及S/W棧中存儲(chǔ)的數(shù)據(jù)的示意圖。
      圖3的動(dòng)作中H/W棧及S/W棧中存儲(chǔ)的數(shù)據(jù)的示意圖。
      說(shuō)明圖1中所示的棧控制裝置的彈出中斷的動(dòng)作次序的流程圖。
      圖7的動(dòng)作中H/W棧及S/W棧中存儲(chǔ)的數(shù)據(jù)的示意圖。
      圖7的動(dòng)作中H/W棧及S/W棧中存儲(chǔ)的數(shù)據(jù)的示意圖。
      圖7的動(dòng)作中H/W棧及S/W棧中存儲(chǔ)的數(shù)據(jù)的示意圖。
      圖7的動(dòng)作中H/W棧及S/W棧中存儲(chǔ)的數(shù)據(jù)的示意圖。
      圖3的動(dòng)作中H/W棧及S/W棧中存儲(chǔ)的數(shù)據(jù)的示意圖。
      圖3的動(dòng)作中H/W棧及S/W棧中存儲(chǔ)的數(shù)據(jù)的示意圖。
      圖3的動(dòng)作中H/W棧及S/W棧中存儲(chǔ)的數(shù)據(jù)的示意圖。
      圖3的動(dòng)作中H/W棧及S/W棧中存儲(chǔ)的數(shù)據(jù)的示意圖。
      圖7的動(dòng)作中H/W棧及S/W棧中存儲(chǔ)的數(shù)據(jù)的示意圖。
      圖7的動(dòng)作中H/W棧及S/W棧中存儲(chǔ)的數(shù)據(jù)的示意圖。
      圖7的動(dòng)作中H/W棧及S/W棧中存儲(chǔ)的數(shù)據(jù)的示意圖。
      圖7的動(dòng)作中H/W棧及S/W棧中存儲(chǔ)的數(shù)據(jù)的示意圖。
      圖1中所示的棧控制裝置中執(zhí)行的程序的例圖。
      圖1中所示的??刂蒲b置的其他實(shí)施例中H/W棧及S/W棧中存儲(chǔ)的數(shù)據(jù)的示意圖。
      圖1中所示的??刂蒲b置的其他實(shí)施例中H/W棧及S/W棧中存儲(chǔ)的數(shù)據(jù)的示意圖。
      圖1中所示的??刂蒲b置的其他實(shí)施例中H/W棧及S/W棧中存儲(chǔ)的數(shù)據(jù)的示意圖。
      圖1中所示的??刂蒲b置的其他實(shí)施例中H/W棧及S/W棧中存儲(chǔ)的數(shù)據(jù)的示意圖。
      圖1中所示的棧控制裝置的其他實(shí)施例中H/W棧及S/W棧中存儲(chǔ)的數(shù)據(jù)的示意圖。
      圖1中所示的棧控制裝置的其他實(shí)施例中H/W棧及S/W棧中存儲(chǔ)的數(shù)據(jù)的示意圖。
      圖1中所示的棧控制裝置的其他實(shí)施例中H/W棧及S/W棧中存儲(chǔ)的數(shù)據(jù)的示意圖。
      圖1中所示的棧控制裝置的其他實(shí)施例中H/W棧及S/W棧中存儲(chǔ)的數(shù)據(jù)的示意圖。
      符號(hào)的說(shuō)明10??刂蒲b置12主控制部14ROM16中斷控制器18棧寄存器20RAM22控制總線24數(shù)據(jù)總線26H/W棧28S/W棧具體實(shí)施方式
      下面參照附圖詳細(xì)說(shuō)明根據(jù)本發(fā)明的??刂蒲b置的實(shí)施例。例如,如圖1所示,本發(fā)明的??刂蒲b置10在主控制部12執(zhí)行內(nèi)置在ROM(Read-Only Memory)14中的程序時(shí),將由子程序的返回地址等數(shù)據(jù)存儲(chǔ)到棧寄存器16中,為了使其數(shù)據(jù)不超過(guò)棧寄存器16的容量,由中斷控制器18控制,在棧寄存器16中的硬件(HardwareH/W)棧26及RAM(Random Access Memory)20中的軟件(SoftwareS/W)棧28之間進(jìn)行數(shù)據(jù)收發(fā)。另外,與本發(fā)明無(wú)直接關(guān)系的部分省略圖示,避免冗長(zhǎng)的說(shuō)明。
      另外,本實(shí)施例的棧控制裝置10,通過(guò)傳送控制信號(hào)的控制總線22,相互連接主控制部12、ROM14、棧寄存器16、中斷控制器18及RAM20,通過(guò)傳送數(shù)據(jù)信號(hào)的數(shù)據(jù)總線24,相互連接主控制部12、ROM14、棧寄存器16、中斷控制器18及RAM20。
      主控制部12,具有本裝置全部動(dòng)作的控制及統(tǒng)括?功能,由CPU(Central Processing Unit)等構(gòu)成,特別地,將存儲(chǔ)在ROM14中的程序指令順次讀出并執(zhí)行。而且,主控制部12具有,將與程序執(zhí)行有關(guān)的程序計(jì)數(shù)器值、循環(huán)計(jì)數(shù)器值及循環(huán)結(jié)束地址等數(shù)據(jù)推入H/W棧26、又彈出此數(shù)據(jù)的功能。
      例如,主控制部12,在執(zhí)行的指令是子程序調(diào)用指令時(shí),將子程序的返回地址推入H/W棧26后處理子程序,處理完子程序后從H/W棧26彈出其返回地址,并繼續(xù)處理其返回地址表示的指令。而且,主控制部12,從中斷控制器18接收外部中斷指令時(shí),將處理中的指令的下一個(gè)指令的返回地址推入H/W棧26后處理外部中斷,處理完外部中斷后從H/W棧26彈出其返回地址,并繼續(xù)處理其返回地址表示的指令。
      本實(shí)施例的主控制部12,特別地,響應(yīng)由中斷控制器18通過(guò)控制總線22供給的推入中斷指令及彈出中斷指令,分別執(zhí)行推入中斷處理及彈出中斷處理。主控制部12在推入中斷處理中,從H/W棧26的底部取出數(shù)據(jù)并推入S/W棧28,將此操作以規(guī)定的轉(zhuǎn)移數(shù)依次重復(fù),在彈出中斷處理中,從S/W棧28彈出數(shù)據(jù)并存儲(chǔ)到H/W棧26的底部,將此操作以規(guī)定的返回?cái)?shù)依次重復(fù)。規(guī)定的轉(zhuǎn)移數(shù)和規(guī)定的返回?cái)?shù)最好是同樣的數(shù),以下以S/W存儲(chǔ)數(shù)來(lái)表示。
      本實(shí)施例中,主控制部12參照硬件的內(nèi)部地址存取寄存器30,可向H/W棧26的底部進(jìn)行存取。內(nèi)部地址存取寄存器30如圖2所示,包含在棧寄存器16中,主控制部12若向內(nèi)部地址存取寄存器30指示讀出,則從H/W棧26的底部取出數(shù)據(jù),若指示寫(xiě)入,則向H/W棧26的底部存儲(chǔ)數(shù)據(jù)。
      ROM14具有存儲(chǔ)運(yùn)算指令或子程序調(diào)用指令等多個(gè)指令構(gòu)成的程序的功能,使用非易失性存儲(chǔ)器等。本實(shí)施例的ROM14也存儲(chǔ)著表示主控制部12中執(zhí)行的推入中斷處理及彈出中斷處理的程序。
      棧寄存器16是能夠存儲(chǔ)多個(gè)數(shù)據(jù)的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)的一種,在本實(shí)施例中,作為高速讀寫(xiě)程序指令的執(zhí)行所必要的數(shù)據(jù)的H/W棧26,例如最好包含,程序的子程序或中斷處理程序等處理程序的返回地址,即,存儲(chǔ)程序計(jì)數(shù)器值的程序計(jì)數(shù)器值棧,存儲(chǔ)多重循環(huán)中的循環(huán)次數(shù)的循環(huán)計(jì)數(shù)器值棧及存儲(chǔ)此循環(huán)的循環(huán)結(jié)束地址的循環(huán)結(jié)束地址棧。
      H/W棧26,通常以最后寫(xiě)入的數(shù)據(jù)最先讀出的后入先出(LIFOLast-In First-Out)的方式動(dòng)作,此時(shí),數(shù)據(jù)對(duì)于棧的寫(xiě)入被稱為推入,而數(shù)據(jù)由棧讀出被稱為彈出。
      本實(shí)施例中,若H/W棧26中所存儲(chǔ)的數(shù)據(jù)的字節(jié)數(shù)全部相同,則以此字節(jié)數(shù)除H/W棧26的總?cè)萘?,可算出H/W棧26中可存儲(chǔ)的最大數(shù)據(jù)量。H/W棧26若超出此最大數(shù)據(jù)量而彈出數(shù)據(jù),則溢出。
      而且,本實(shí)施例的棧寄存器16,如圖2所示,也包含內(nèi)部地址存取寄存器30及狀態(tài)寄存器32。內(nèi)部地址存取寄存器30具有H/W棧26的底部數(shù)據(jù)地址即讀出內(nèi)部地址,及從該底部數(shù)據(jù)向底部方向移動(dòng)一個(gè)數(shù)據(jù)的數(shù)據(jù)量的地址的寫(xiě)入內(nèi)部地址,被主控制部12控制而指示“讀”時(shí),基于讀出內(nèi)部地址從H/W棧26的底部取出數(shù)據(jù),指示“寫(xiě)”時(shí),基于寫(xiě)入內(nèi)部地址向H/W棧26的底部寫(xiě)入數(shù)據(jù)。
      而且,棧寄存器16可將這些讀出內(nèi)部地址及寫(xiě)入內(nèi)部地址的指針隨“讀”的指示自動(dòng)遞減,或隨“寫(xiě)”的指示自動(dòng)遞增。棧寄存器16可在H/W棧26中沒(méi)有存儲(chǔ)數(shù)據(jù)時(shí)指示“讀”的情況,或在存儲(chǔ)最大數(shù)據(jù)量時(shí)指示“寫(xiě)”的情況下,使用狀態(tài)寄存器32通知錯(cuò)誤。
      中斷控制器18,通過(guò)控制總線22控制棧寄存器16的棧指針,且通過(guò)控制總線22,將響應(yīng)外圍設(shè)備等外部裝置的中斷請(qǐng)求所發(fā)生的外部中斷通知到主控制部12。中斷控制器18具備,允許外部中斷時(shí)表示1、禁止時(shí)表示0的標(biāo)記寄存器,即外部中斷許可寄存器,當(dāng)外部裝置有中斷請(qǐng)求時(shí)參照此寄存器,限于允許的情況通知外部中斷。外部中斷許可寄存器將此初始值定為1。
      本實(shí)施例的中斷控制器18,特別地具有監(jiān)視H/W棧26的容量,響應(yīng)其容量發(fā)生中斷的功能。例如,中斷控制器18,判定H/W棧26的剩余容量為推入對(duì)象容量時(shí)發(fā)生推入中斷,判定H/W棧26的剩余容量為彈出對(duì)象容量時(shí)發(fā)生彈出中斷,分別供給主控制部12。
      中斷控制器18可以在通知推入中斷及彈出中斷之前,將外部中斷許可寄存器設(shè)定為零,由主控制部12中的推入中斷處理及彈出中斷處理返回時(shí),將外部中斷許可寄存器設(shè)定為1。
      中斷寄存器18所判定的這些對(duì)象容量,例如,最好表示為可推入H/W棧26中的數(shù)據(jù)單位,推入對(duì)象容量最好是不至于減到0的數(shù)據(jù)量,理想的是一個(gè)數(shù)據(jù)的數(shù)據(jù)量。而且,彈出對(duì)象容量最好在最小為S/W存儲(chǔ)量+一個(gè)數(shù)據(jù)的數(shù)據(jù)量,最大為H/W棧26的最大數(shù)據(jù)量的范圍內(nèi),SW存儲(chǔ)量越多,使對(duì)象容量越大為宜。
      而且,中斷寄存器18具有,允許彈出中斷時(shí)表示1、禁止時(shí)表示0的標(biāo)記寄存器,即彈出中斷許可寄存器,H/W棧26的剩余容量判定為彈出對(duì)象容量時(shí),也可以參照此寄存器,限于允許的情況通知中斷。彈出中斷許可寄存器將其初始值定為零。
      此彈出中斷許可寄存器也被主控制部12控制,主控制部12在彈出中斷處理結(jié)束之前判定S/W棧28中存儲(chǔ)的數(shù)據(jù)量,可限于此數(shù)據(jù)量為零時(shí)將彈出中斷許可寄存器設(shè)定為零。
      RAM20主要作為暫時(shí)存儲(chǔ)運(yùn)算中的結(jié)果或數(shù)據(jù)等的運(yùn)算存儲(chǔ)器使用。特別地,本實(shí)施例的RAM20設(shè)置轉(zhuǎn)移用的數(shù)據(jù)存儲(chǔ)區(qū),即,S/W棧28,可響應(yīng)主控制部12的推入中斷處理及彈出中斷處理。而且,S/W棧28可以以LIFO方式動(dòng)作。
      其次,關(guān)于本實(shí)施例中的棧控制裝置10的動(dòng)作,參照?qǐng)D3的流程圖說(shuō)明推入對(duì)象容量為一個(gè)數(shù)據(jù)的數(shù)據(jù)量、轉(zhuǎn)移數(shù)為一個(gè)數(shù)據(jù)的數(shù)據(jù)量時(shí),在中斷控制器18發(fā)生推入中斷時(shí)轉(zhuǎn)移H/W棧26中的數(shù)據(jù)的動(dòng)作。
      本實(shí)施例的??刂蒲b置10中,棧寄存器18中的H/W棧26實(shí)際上可存儲(chǔ)多個(gè)數(shù)據(jù),但是圖4中為了避開(kāi)復(fù)雜化的說(shuō)明,將最大數(shù)據(jù)量定為5個(gè),由可存儲(chǔ)數(shù)據(jù)的區(qū)域H1、H2、H3、H4及H5而構(gòu)成。圖4中的H/W棧26,其左側(cè)作為棧的起始,右側(cè)作為棧的底側(cè)。此H/W棧26中,若數(shù)據(jù)被推入,通常存儲(chǔ)到起始區(qū)域H1,之前存儲(chǔ)在H1中的數(shù)據(jù)被挪到H2區(qū)域存儲(chǔ)。同樣,響應(yīng)數(shù)據(jù)的推入,區(qū)域H2、H3、H4中存儲(chǔ)的數(shù)據(jù)被挪到區(qū)域H3、H4、H5。圖4中所示的H/W棧26中,在各區(qū)域內(nèi)表示了數(shù)據(jù)被推入的順序的索引號(hào),未標(biāo)索引號(hào)的區(qū)域當(dāng)作無(wú)數(shù)據(jù)。
      而且,本實(shí)施例的RAM20中的S/W棧28也與H/W棧26相同,如圖4所示,將最大數(shù)據(jù)量定為5個(gè),包含可存儲(chǔ)數(shù)據(jù)的區(qū)域S1、S2、S3、S4及S5,若數(shù)據(jù)被推入并存儲(chǔ)到區(qū)域S1,則之前存儲(chǔ)在區(qū)域S1、S2、S3、S4中的數(shù)據(jù)分別挪到區(qū)域S2、S3、S4、S5。圖5、圖6及圖7中的H/W棧26及S/W棧28也具有與圖4相同結(jié)構(gòu)。
      本實(shí)施例中,首先,在主控制部12中,開(kāi)始對(duì)H/W棧26的數(shù)據(jù)推入指令(S102),此數(shù)據(jù)通過(guò)數(shù)據(jù)總線24推入H/W棧26。
      但是,H/W棧26中,其剩余容量被中斷控制器18監(jiān)視著,剩余容量被判定是否為推入對(duì)象容量(S104)。此判定的結(jié)果,若H/W棧26的剩余容量為推入對(duì)象容量,即為一個(gè)數(shù)據(jù)量時(shí),進(jìn)入步驟S106,此外的情況進(jìn)入步驟S114而結(jié)束推入指令。
      本實(shí)施例中,在步驟S104中,例如圖4所示,數(shù)據(jù)被存儲(chǔ)在H/W棧26的區(qū)域H1、H2、H3及H4中,且區(qū)域H5中未存儲(chǔ)數(shù)據(jù)時(shí),判定剩余容量為一個(gè)數(shù)據(jù)量而進(jìn)入步驟S106。因此,H/W棧26的剩余容量不會(huì)減少到0個(gè)數(shù)據(jù)。而且,此時(shí),S/W棧28中,一個(gè)數(shù)據(jù)都沒(méi)有存儲(chǔ)。
      接著,在步驟S106中,中斷控制器18中,發(fā)生推入中斷,且,外部中斷被禁止,外部中斷許可寄存器被設(shè)定為零。之后,推入中斷通過(guò)控制總線22通知到主控制部12。
      主控制部12中,響應(yīng)推入中斷的通知,開(kāi)始推入中斷處理。在此,伴隨跳躍到執(zhí)行推入中斷處理的函數(shù),返回處的地址被推入H/W棧26,如圖5所示,H/W棧26中,區(qū)域H1、H2、H3、H4及H5的全部被存儲(chǔ)數(shù)據(jù),剩余容量成為零。
      然后,推入中斷處理中,將H/W棧26的底部所存儲(chǔ)的數(shù)據(jù)轉(zhuǎn)移到S/W棧28(S108),即,如圖6所示,取出存儲(chǔ)在區(qū)域H5中的數(shù)據(jù),推入?yún)^(qū)域S1。將此按轉(zhuǎn)移數(shù)重復(fù),即,僅僅重復(fù)一個(gè)數(shù)據(jù)的數(shù)據(jù)量的次數(shù)。由此,H/W棧26的剩余容量成為由區(qū)域H5構(gòu)成的一個(gè)數(shù)據(jù)的數(shù)據(jù)量。
      而且,這樣向S/W棧28彈出數(shù)據(jù)時(shí),根據(jù)其后的處理,H/W棧26的剩余容量成為彈出對(duì)象容量時(shí),因?yàn)橛斜匾憫?yīng)彈出中斷,主控制部12控制中斷控制器18,將彈出中斷寄存器設(shè)定為1(S110)。
      這樣,主控制部12中的推入中斷處理結(jié)束,返回處的地址從H/W棧26中被彈出,如圖7所示,H/W棧26的剩余容量為由區(qū)域H4及H5而構(gòu)成的2個(gè)數(shù)據(jù)的數(shù)據(jù)量。而且,中斷控制器18中,響應(yīng)來(lái)自推入中斷處理的返回,在步驟S106中禁止的外部中斷被允許(S112),外部中斷許可寄存器被設(shè)定為1。然后,進(jìn)入步驟S114,推入指令結(jié)束。
      另一方面,關(guān)于本實(shí)施例中的??刂蒲b置10的動(dòng)作,參照?qǐng)D8的流程圖說(shuō)明彈出對(duì)象容量為3個(gè)數(shù)據(jù)的數(shù)據(jù)量、轉(zhuǎn)移數(shù)為1個(gè)數(shù)據(jù)的數(shù)據(jù)量時(shí),在中斷控制器18發(fā)生彈出中斷時(shí)、將轉(zhuǎn)移到S/W棧28的數(shù)據(jù)返回到H/W棧26的動(dòng)作。
      在此,圖9、圖10、圖11及圖12中所示的H/W棧26及S/W棧28,也與圖4中所示的結(jié)構(gòu)同樣。
      本實(shí)施例中,首先,主控制部12中,開(kāi)始從H/W棧26彈出數(shù)據(jù)的指令(S202),從H/W棧26彈出一個(gè)數(shù)據(jù)。
      此時(shí),中斷控制器18中,判定監(jiān)視中的H/W棧26的剩余容量是否為彈出對(duì)象容量(S204)。此判定的結(jié)果,若H/W棧26的剩余容量為彈出對(duì)象容量,即,恢復(fù)到3個(gè)數(shù)據(jù)的數(shù)據(jù)量時(shí),進(jìn)入步驟S206,此外的情況下進(jìn)入步驟S218而結(jié)束彈出指令。
      本實(shí)施例中,在步驟S204,例如,如圖9所示,H/W棧26的區(qū)域H1及H2中存儲(chǔ)著數(shù)據(jù),且區(qū)域H3、H4及H5中沒(méi)有存儲(chǔ)數(shù)據(jù)的情況下,判定為剩余容量恢復(fù)到3個(gè)數(shù)據(jù)的數(shù)據(jù)量而進(jìn)入步驟S206。而且,此時(shí),S/W棧28中,1個(gè)數(shù)據(jù)存儲(chǔ)在區(qū)域S1。
      然后,在步驟S206,中斷控制器18中,判定彈出中斷是否為允許,即,彈出中斷許可寄存器表示1還是0,表示1時(shí)進(jìn)入步驟S208,表示0時(shí)進(jìn)入步驟S218,結(jié)束彈出指令。
      步驟S208中,中斷控制器18中,發(fā)生彈出中斷,且,外部中斷被禁止,外部中斷許可寄存器被設(shè)定為零。之后,彈出中斷通過(guò)控制總線22通知到主控制部12。
      主控制部12中,響應(yīng)彈出中斷的通知,開(kāi)始彈出中斷處理。在此,伴隨跳躍到執(zhí)行彈出中斷處理的函數(shù),返回處的地址被推入H/W棧26,如圖10所示,H/W棧26中,3個(gè)量的數(shù)據(jù)被存儲(chǔ)到區(qū)域H1、H2及H3,剩余容量成為由區(qū)域H4及H5組成的2個(gè)量的數(shù)據(jù)。
      之后,在彈出中斷處理中,使S/W棧28的起始存儲(chǔ)的數(shù)據(jù)返回到H/W棧26的底部(S210),即,如圖11所示,彈出區(qū)域S1中所存儲(chǔ)的數(shù)據(jù),存儲(chǔ)到區(qū)域H4。將此以轉(zhuǎn)移數(shù)重復(fù),即,以1個(gè)數(shù)據(jù)的數(shù)據(jù)量的次數(shù)重復(fù)。由此,S/W棧28中存儲(chǔ)的數(shù)據(jù)量成為零。
      另外,在彈出中斷處理中,判定S/W棧28中的剩余容量(S212),當(dāng)S/W棧28的剩余容量為5個(gè)數(shù)據(jù)量時(shí),即,1個(gè)數(shù)據(jù)也沒(méi)有存儲(chǔ)的情況下,進(jìn)入步驟S214,S/W棧28中尚有數(shù)據(jù)存儲(chǔ)時(shí),進(jìn)入步驟S216。
      步驟S214中,主控制部12控制中斷控制器18,禁止彈出中斷,彈出中斷許可寄存器設(shè)定為零,之后,進(jìn)入步驟S216。這樣禁止彈出中斷的理由是,當(dāng)S/W棧28中沒(méi)有數(shù)據(jù)存儲(chǔ)時(shí),H/W棧26的剩余容量成為彈出對(duì)象容量,即使主控制部12執(zhí)行彈出中斷處理,也無(wú)法從S/W棧28取出數(shù)據(jù),彈出中斷本身成為徒勞的處理。
      這樣,主控制部12中的彈出中斷處理結(jié)束,返回處的地址從H/W棧26中被彈出,如圖12所示,H/W棧26的剩余容量成為由區(qū)域H4及H5構(gòu)成的2個(gè)數(shù)據(jù)量。而且,中斷控制器18中,響應(yīng)來(lái)自彈出中斷處理的返回,在步驟S208中禁止的外部插入被允許(S216),外部中斷許可寄存器被設(shè)定為1。接著,進(jìn)入步驟S218,彈出指令結(jié)束。
      但是,關(guān)于本實(shí)施例中的??刂蒲b置10的動(dòng)作,推入對(duì)象容量為一個(gè)數(shù)據(jù)量、轉(zhuǎn)移數(shù)為二個(gè)數(shù)據(jù)量時(shí),在中斷控制器18發(fā)生推入中斷時(shí)轉(zhuǎn)移H/W棧26中的數(shù)據(jù)的動(dòng)作也可以參照?qǐng)D3的流程圖說(shuō)明。但是,此時(shí)的H/W棧26及S/W棧28內(nèi)的數(shù)據(jù)的動(dòng)作,如同圖13、圖14、圖15及圖16所示的表示。在此,圖13、圖14、圖15及圖16中表示的H/W棧26及S/W棧28,也與圖4中表示的結(jié)構(gòu)相同。
      此時(shí),圖3的S102及S104階段中,如圖13中所示,H/W棧26的區(qū)域H1、H2、H3及H4中存儲(chǔ)有數(shù)據(jù),區(qū)域H5中沒(méi)有存儲(chǔ)數(shù)據(jù)。而且,此時(shí),S/W棧28中,一個(gè)數(shù)據(jù)也未存儲(chǔ)。
      圖3的S106階段中,由于主控制部12開(kāi)始推入中斷處理,伴隨跳躍到執(zhí)行推入中斷處理的函數(shù),返回處的地址被推入H/W棧26,如圖14所示,H/W棧26的區(qū)域H1、H2、H3、H4及H5中,全部被存儲(chǔ)數(shù)據(jù),H/W棧26的剩余容量成為零。在此,S/W棧28中,也是一個(gè)數(shù)據(jù)也未存儲(chǔ)。
      圖3的S108的階段中,將存儲(chǔ)在H/W棧26的底部的數(shù)據(jù)保存到S/W棧28,將此以轉(zhuǎn)移數(shù),即,以2個(gè)數(shù)據(jù)的數(shù)據(jù)量的次數(shù)重復(fù),如同圖15中所示,H/W棧26的區(qū)域H1、H2及H3中存儲(chǔ)著數(shù)據(jù),而區(qū)域H4及H5中未存儲(chǔ)數(shù)據(jù)。
      此時(shí),為了從H/W棧26的底部依次取出數(shù)據(jù)而彈出到S/W棧28,推入中斷處理前的H/W棧26的區(qū)域H5中所存儲(chǔ)的索引號(hào)1的數(shù)據(jù),被存儲(chǔ)到S/W棧28的區(qū)域S2,存儲(chǔ)在區(qū)域S4的索引號(hào)2的數(shù)據(jù),被存儲(chǔ)到區(qū)域S1中。如此,S/W棧28中,2個(gè)數(shù)據(jù)被轉(zhuǎn)移到區(qū)域S1及S2。
      而且,圖3的S110的階段后,主控制部12中的推入中斷處理結(jié)束,在此,由于推入中斷處理的返回地址從H/W棧26中彈出,如圖16所示,H/W棧26中,從區(qū)域H1彈出索引號(hào)5的數(shù)據(jù),在區(qū)域H1及H2中存儲(chǔ)數(shù)據(jù),區(qū)域H3、H4及H5中沒(méi)有存儲(chǔ)數(shù)據(jù)。此時(shí),S/W棧28保持圖3的S110階段的狀態(tài),即,圖15中所示狀態(tài)。
      圖3的S112及S114階段中,H/W棧26及S/W棧28內(nèi)的數(shù)據(jù)保持圖16中所示的狀態(tài)。
      另外,關(guān)于本實(shí)施例的??刂蒲b置10的動(dòng)作,彈出對(duì)象容量為5個(gè)數(shù)據(jù)量、返回?cái)?shù)為2個(gè)數(shù)據(jù)量時(shí),中斷控制器18發(fā)生彈出中斷時(shí)將轉(zhuǎn)移到S/W棧28中的數(shù)據(jù)返回到H/W棧26的動(dòng)作也可以參照?qǐng)D8的流程圖說(shuō)明。但是,此時(shí)的H/W棧26及S/W棧28中的數(shù)據(jù)的動(dòng)作表示如圖17、圖18、圖19及圖20中所示。在此,圖17、圖18、圖19及圖20中表示的H/W棧26及S/W棧28也與圖4中所示的結(jié)構(gòu)相同。
      此時(shí),圖8的S202、S204及S206階段中,如圖17所示,H/W棧26中一個(gè)數(shù)據(jù)都沒(méi)有存儲(chǔ)。而且,此時(shí),S/W棧28的區(qū)域S1及S2中存儲(chǔ)著數(shù)據(jù),區(qū)域H3、H4及H5中沒(méi)有存儲(chǔ)數(shù)據(jù)。
      圖8的S208階段中,由于主控制部12開(kāi)始彈出中斷處理,伴隨跳躍到執(zhí)行彈出中斷處理的函數(shù),返回處的地址被推入H/W棧26,如圖18所示,H/W棧26的區(qū)域H1中存儲(chǔ)數(shù)據(jù),區(qū)域H2、H3、H4及H5中沒(méi)有存儲(chǔ)數(shù)據(jù)。在此,S/W棧28保持圖8的S206階段的狀態(tài),即,圖17中所示狀態(tài)。
      圖8的S210階段中,由于將S/W棧28的起始存儲(chǔ)的數(shù)據(jù)返回到H/W棧26的底部,將此操作以返回?cái)?shù)即2個(gè)數(shù)據(jù)量的次數(shù)重復(fù),因而,如圖19中所示,H/W棧26的區(qū)域H1、H2及H3中存儲(chǔ)著數(shù)據(jù),區(qū)域H4及H5中沒(méi)有存儲(chǔ)數(shù)據(jù)。在此,S/W棧28中一個(gè)數(shù)據(jù)都沒(méi)有存儲(chǔ)。
      此時(shí),為了從S/W棧28依次彈出數(shù)據(jù),存儲(chǔ)到H/W棧26的底部,彈出中斷處理前的S/W棧28的區(qū)域S1中存儲(chǔ)的索引號(hào)2的數(shù)據(jù)被存儲(chǔ)到H/W棧26的區(qū)域H2,區(qū)域S2中存儲(chǔ)的索引號(hào)1的數(shù)據(jù)被存儲(chǔ)到區(qū)域H3。如此,兩個(gè)數(shù)據(jù)從S/W棧28返回到區(qū)域H2及H3。
      圖8的S212及S214階段中,H/W棧26及S/W棧28中的數(shù)據(jù),保持圖19中表示的狀態(tài),此S214階段之后,主控制部12中的彈出中斷處理結(jié)束,在此,由于來(lái)自彈出中斷處理的返回地址從H/W棧26中彈出,因而如圖20所示,H/W棧26中,從區(qū)域H1彈出索引號(hào)3的數(shù)據(jù),區(qū)域H1及H2中存儲(chǔ)數(shù)據(jù),區(qū)域H3、H4及H5中未存儲(chǔ)數(shù)據(jù)。此時(shí),S/W棧28保持圖19所示的狀態(tài)。
      圖8的S216及S218階段中,H/W棧26及S/W棧28中的數(shù)據(jù)保持圖20所示的狀態(tài)。
      如此,本發(fā)明的棧控制電路中,可以響應(yīng)各種轉(zhuǎn)移數(shù)及返回?cái)?shù)進(jìn)行處理。此轉(zhuǎn)移數(shù)及返回?cái)?shù)為,至少需要一個(gè)數(shù)據(jù)量,而且,即使多,也希望使用可以用算式[(H/W棧的最大數(shù)據(jù)量-1)÷2](小數(shù)點(diǎn)以下舍去)算出的最佳值。而且,雖然轉(zhuǎn)移數(shù)及返回?cái)?shù)也可以超出此最佳值,但,為了使接下來(lái)的推入中斷及彈出中斷之間的時(shí)間能夠長(zhǎng)一些,希望在此算出值之內(nèi)。而且,返回?cái)?shù)在此最佳值以上時(shí),彈出對(duì)象容量可以是H/W棧26的最大數(shù)據(jù)量,即,H/W棧26中被彈出后存儲(chǔ)的數(shù)據(jù)量減少到0時(shí),可發(fā)生彈出中斷。
      但是,??刂蒲b置中,棧的轉(zhuǎn)移及返回不是那么頻繁進(jìn)行時(shí),可以通過(guò)減少轉(zhuǎn)移數(shù)及返回?cái)?shù),節(jié)約數(shù)據(jù)移動(dòng)花費(fèi)的周期。另一方面,棧控制裝置中,如容納的深部等,H/W棧幾乎被使用完時(shí),在子程序被重復(fù)調(diào)用的場(chǎng)合,若減少轉(zhuǎn)移數(shù)及返回?cái)?shù),則頻繁地發(fā)生推入中斷及彈出中斷,也會(huì)成為降低性能的原因,最好是增多轉(zhuǎn)移數(shù)及返回?cái)?shù)。
      例如,最大數(shù)據(jù)量設(shè)為5個(gè)的H/W棧26中,剩余容量為2個(gè)數(shù)據(jù)量時(shí),執(zhí)行如圖21中所示的程序40的場(chǎng)合,若轉(zhuǎn)移數(shù)及返回?cái)?shù)少,則每次調(diào)用子程序時(shí)進(jìn)行棧的轉(zhuǎn)移及返回,若轉(zhuǎn)移數(shù)及返回?cái)?shù)多,則最初子程序被調(diào)用,只一次將2個(gè)數(shù)據(jù)從H/W棧26轉(zhuǎn)移到S/W棧28,之后,能達(dá)到只用H/W棧26的高速處理,可以維持性能。
      而且,本發(fā)明的??刂苹芈?,最好是具有判定推入中斷處理及彈出中斷處理的各個(gè)最佳轉(zhuǎn)移數(shù)及返回?cái)?shù)的功能,例如,完成此功能的轉(zhuǎn)移/返回?cái)?shù)判定程序,最好是主控制部12能夠執(zhí)行的,ROM14中可存儲(chǔ)的。
      此時(shí),主控制部12,將轉(zhuǎn)移數(shù)及返回?cái)?shù)存儲(chǔ)在RAM20等存儲(chǔ)器中,當(dāng)執(zhí)行推入中斷處理及彈出中斷處理時(shí),分別讀出轉(zhuǎn)移數(shù)及返回?cái)?shù)而使用。
      而且,主控制部12,要經(jīng)?;蛎恳欢ㄩg隔執(zhí)行轉(zhuǎn)移/返回?cái)?shù)判定程序,判定現(xiàn)行處理中的最佳轉(zhuǎn)移數(shù)及返回?cái)?shù),存儲(chǔ)在存儲(chǔ)器中。由此,主控制部12可以經(jīng)常使用最佳轉(zhuǎn)移數(shù)及返回?cái)?shù),分別執(zhí)行推入中斷處理及彈出中斷處理。
      轉(zhuǎn)移/返回?cái)?shù)判定程序,例如,響應(yīng)棧的轉(zhuǎn)移及返回的頻度,可判定最佳轉(zhuǎn)移數(shù)及返回?cái)?shù),棧的轉(zhuǎn)移及返回被頻繁地進(jìn)行時(shí),增加轉(zhuǎn)移數(shù)及返回?cái)?shù)以提高性能,棧的轉(zhuǎn)移及返回不是很頻繁時(shí),減少轉(zhuǎn)移數(shù)及返回?cái)?shù),節(jié)約移動(dòng)數(shù)據(jù)所花費(fèi)的周期。
      關(guān)于使用保存/返回?cái)?shù)判定程序的??刂蒲b置10的動(dòng)作,根據(jù)轉(zhuǎn)移的頻度,執(zhí)行推入中斷及彈出中斷的動(dòng)作,可參照?qǐng)D22、圖23、圖24、圖25、圖26、圖27、圖28及圖29中所示H/W棧26及S/W棧28內(nèi)的數(shù)據(jù)的動(dòng)作說(shuō)明。在此,圖22、圖23、圖24、圖25、圖26、圖27、圖28及圖29中所示H/W棧26及S/W棧28,也與圖4中所示的結(jié)構(gòu)相同。
      此動(dòng)作中,作為初始狀態(tài),將推入對(duì)象容量、彈出對(duì)象容量、轉(zhuǎn)移數(shù)及返回?cái)?shù)分別定為一個(gè)數(shù)據(jù)量。
      首先,如圖22所示,H/W棧26中,區(qū)域H1、H2、H3及H4中存儲(chǔ)數(shù)據(jù),區(qū)域H5中無(wú)數(shù)據(jù)存儲(chǔ),S/W棧28中,一個(gè)數(shù)據(jù)也沒(méi)有存儲(chǔ)。在此,H/W棧26的剩余容量為一個(gè)數(shù)據(jù)量,即為推入對(duì)象容量,因此發(fā)生推入中斷,轉(zhuǎn)移H/W棧26的底部的一個(gè)數(shù)據(jù),如圖23所示,H/W棧26的區(qū)域H4的數(shù)據(jù)被取出,彈到S/W棧28的S1中。
      然后,如圖24所示,數(shù)據(jù)彈到H/W棧26,區(qū)域H1、H2、H3及H4中存儲(chǔ)數(shù)據(jù),剩余容量由H5成為一個(gè)數(shù)據(jù)量。
      此時(shí),H/W棧26的剩余容量為推入對(duì)象容量的緣故,發(fā)生推入中斷,H/W棧26的底部的數(shù)據(jù)以轉(zhuǎn)移數(shù)轉(zhuǎn)移即轉(zhuǎn)移一個(gè),如圖25所示,H/W棧26的區(qū)域H4的數(shù)據(jù)被取出,彈到S/W棧28的S1中。
      但是,轉(zhuǎn)移/返回?cái)?shù)判定程序若檢測(cè)出一個(gè)數(shù)據(jù)量的推入中斷以規(guī)定次數(shù)如此連續(xù)時(shí),則增加轉(zhuǎn)移數(shù)及返回?cái)?shù)到例如2個(gè)數(shù)據(jù)量,彈出對(duì)象容量為5個(gè)數(shù)據(jù)量。
      而且,對(duì)于其后的處理,如圖26所示,從H/W棧26中彈出數(shù)據(jù)的結(jié)果,H/W棧26的剩余容量成為5個(gè)量數(shù)據(jù),即,成為彈出對(duì)象容量。
      此時(shí),由于H/W棧26的剩余容量為彈出對(duì)象容量,因而發(fā)生彈出中斷,將S/W棧28的數(shù)據(jù)以返回?cái)?shù)返回即返回2個(gè),如圖27所示,區(qū)域S1及S2的數(shù)據(jù)從S/W棧28彈出,分別存儲(chǔ)到H/W棧26的區(qū)域H1及H2。
      而且,此后的處理中,如圖28所示,H/W棧26中推入數(shù)據(jù)的結(jié)果,H/W棧26的剩余容量為一個(gè)數(shù)據(jù)量,即,成為推入對(duì)象容量。
      此時(shí),由于H/W棧26的剩余容量為推入對(duì)象容量,因此發(fā)生推入中斷,將H/W棧26的底部的數(shù)據(jù)以轉(zhuǎn)移數(shù)轉(zhuǎn)移即轉(zhuǎn)移2個(gè),如圖29所示,H/W棧26的區(qū)域H3及H4的數(shù)據(jù)被取出,分別彈到S/W棧28的S1及S2中。
      如此,在??刂苹芈分?,保存/返回?cái)?shù)判定程序響應(yīng)保存及返回的頻度,即,響應(yīng)推入中斷及彈出中斷的頻度,可變更為最佳轉(zhuǎn)移數(shù)及返回?cái)?shù)。而且,此時(shí),也可變更推入對(duì)象容量及彈出對(duì)象容量。
      而且,本實(shí)施例中,轉(zhuǎn)移/返回?cái)?shù)判定程序的推入中斷以規(guī)定次數(shù)連續(xù)的事情作為頻度的條件,但也可以將下次推入中斷發(fā)生為止的時(shí)間、或其間處理的程序的量作為頻度的條件。而且,轉(zhuǎn)移/返回?cái)?shù)判定程序,不只對(duì)推入中斷,也可對(duì)彈出中斷設(shè)定頻度的條件。而且,轉(zhuǎn)移/返回?cái)?shù)判定程序也可響應(yīng)程序執(zhí)行的場(chǎng)所,判定最佳的轉(zhuǎn)移數(shù)及返回?cái)?shù)。
      本實(shí)施例中,主要假設(shè)將本發(fā)明的??刂苹芈窇?yīng)用到微型信息處理機(jī)時(shí)做了說(shuō)明,但是本發(fā)明的棧控制回路及其控制方法在內(nèi)置程序、依次處理指令的數(shù)據(jù)處理裝置中也能有效使用,例如微型控制器或數(shù)字信號(hào)處理機(jī)(Digital Signal ProcessorDSP)等。
      權(quán)利要求
      1.??刂蒲b置,具備執(zhí)行由運(yùn)算指令或子程序調(diào)用指令等多個(gè)指令構(gòu)成的程序的主控制單元;具有將上述規(guī)定程序中的程序計(jì)數(shù)器值、循環(huán)計(jì)數(shù)器值及循環(huán)結(jié)束地址等第一數(shù)據(jù)以LIFO形式存儲(chǔ)的第一棧的棧寄存器;暫時(shí)存儲(chǔ)上述運(yùn)算指令處理的中間結(jié)果等第二數(shù)據(jù)的存儲(chǔ)單元,其特征在于,上述存儲(chǔ)單元包含,以LIFO形式存儲(chǔ)第一數(shù)據(jù)的第二棧,該裝置包含中斷控制單元,其監(jiān)視第一棧的容量,在該剩余容量成為規(guī)定的推入對(duì)象容量時(shí)發(fā)生推入中斷并通知上述主控制單元,另外,在成為規(guī)定的彈出對(duì)象容量時(shí)發(fā)生彈出中斷并通知上述主控制單元,上述主控制單元包含推入中斷處理單元,其響應(yīng)上述推入中斷,從第一棧的底部抽取數(shù)據(jù)并推入第二棧,將此操作以規(guī)定的轉(zhuǎn)移數(shù)重復(fù);以及彈出中斷處理單元,其響應(yīng)上述彈出中斷,從第二棧彈出數(shù)據(jù)并存儲(chǔ)到第一棧的底部,將此操作以規(guī)定的返回?cái)?shù)重復(fù)。
      2.權(quán)利要求1中記載的??刂蒲b置,其特征在于,上述中斷控制單元包含表示上述彈出中斷的許可或禁止、初始狀態(tài)下表示禁止的第一標(biāo)記寄存器;以及表示響應(yīng)來(lái)自外圍設(shè)備等外部裝置的中斷請(qǐng)求的外部中斷的許可或禁止、初始狀態(tài)下表示許可的第二標(biāo)記寄存器;上述剩余容量達(dá)到上述規(guī)定的推入對(duì)象容量時(shí),設(shè)定第二標(biāo)記寄存器為禁止后發(fā)生推入中斷,之后,從推入中斷返回時(shí)設(shè)定第二標(biāo)記寄存器為許可;另外,上述剩余容量達(dá)到上述規(guī)定的彈出對(duì)象容量時(shí),且限于第一標(biāo)記寄存器表示許可時(shí),設(shè)定第二標(biāo)記寄存器為禁止后發(fā)生彈出中斷,之后,從彈出中斷返回時(shí)設(shè)定第二標(biāo)記寄存器為許可;上述推入中斷處理單元向第二棧推入數(shù)據(jù)時(shí),將第一標(biāo)記寄存器設(shè)定為許可;上述彈出中斷處理單元從第二棧彈出數(shù)據(jù)時(shí),且限于第二棧中存儲(chǔ)的數(shù)據(jù)量為零時(shí),將第一標(biāo)記寄存器設(shè)定為禁止。
      3.權(quán)利要求1或2所述的??刂蒲b置,其特征在于,上述棧寄存器包含內(nèi)部地址存取寄存器,此內(nèi)部地址存取寄存器具有第一棧的底部數(shù)據(jù)的地址即讀出內(nèi)部地址,和從該地址向底部方向移動(dòng)一個(gè)數(shù)據(jù)的數(shù)據(jù)量的寫(xiě)入內(nèi)部地址,上述推入中斷處理單元對(duì)上述內(nèi)部地址存取寄存器的讀出內(nèi)部地址進(jìn)行存取,從第一棧的底部取出數(shù)據(jù),上述彈出中斷處理單元對(duì)上述內(nèi)部地址存取寄存器的寫(xiě)入內(nèi)部地址進(jìn)行存取,向第一棧的底部存儲(chǔ)數(shù)據(jù)。
      4.權(quán)利要求1至3的任何一個(gè)中所述的??刂蒲b置,其特征在于,上述規(guī)定的推入對(duì)象容量為一個(gè)第一數(shù)據(jù)的數(shù)據(jù)量,上述推入中斷處理單元為由上述主控制單元可執(zhí)行的第一程序,上述彈出中斷處理單元為由上述主控制單元可執(zhí)行的第二程序,上述主控制單元,響應(yīng)上述推入中斷,將來(lái)自第一程序的第一返回地址推入第一棧后執(zhí)行第一程序,之后,結(jié)束第一程序時(shí),將第一返回地址從第一棧中彈出,返回第一返回地址表示的指令;另外,響應(yīng)上述彈出中斷,將來(lái)自第二程序的第二返回地址推入第一棧后執(zhí)行第二程序,之后,結(jié)束第二程序時(shí),將第二返回地址從第一棧中彈出,返回第一返回地址表示的指令。
      5.權(quán)利要求1至4的任何一個(gè)中所述的??刂蒲b置,其特征在于,上述規(guī)定的彈出對(duì)象容量為一個(gè)第一數(shù)據(jù)的數(shù)據(jù)量以上、第一棧能夠存儲(chǔ)的第一數(shù)據(jù)的最大數(shù)據(jù)量以下,上述規(guī)定的轉(zhuǎn)移數(shù)及上述規(guī)定的返回?cái)?shù)為,一個(gè)第一數(shù)據(jù)的數(shù)據(jù)量以上,可用算式[(上述最大數(shù)據(jù)量-1)÷2](小數(shù)點(diǎn)以下舍去)算出的值以下。
      6.權(quán)利要求5中記載的??刂蒲b置,其特征在于,上述規(guī)定的彈出對(duì)象容量、上述規(guī)定的轉(zhuǎn)移數(shù)及上述規(guī)定的返回?cái)?shù)為一個(gè)第一數(shù)據(jù)的數(shù)據(jù)量。
      7.權(quán)利要求5中所述的??刂蒲b置,其特征在于,上述規(guī)定的彈出對(duì)象容量為第一棧的全部容量,上述規(guī)定的轉(zhuǎn)移數(shù)及上述規(guī)定的返回?cái)?shù)為可用算式[(第一棧能夠存儲(chǔ)第一數(shù)據(jù)的最大數(shù)據(jù)量-1)÷2](小數(shù)點(diǎn)以下舍去)算出的值。
      8.權(quán)利要求5中記載的??刂蒲b置,其特征在于,上述中斷控制單元包含頻度監(jiān)視單元,其監(jiān)視上述推入中斷或上述彈出中斷發(fā)生的頻度,響應(yīng)該頻度,判定并設(shè)定最佳的上述彈出對(duì)象容量、上述規(guī)定的轉(zhuǎn)移數(shù)及上述規(guī)定的返回?cái)?shù)。
      9.權(quán)利要求8中記載的??刂蒲b置,其特征在于,上述頻度監(jiān)視單元,通常將上述彈出對(duì)象容量、上述規(guī)定的轉(zhuǎn)移數(shù)及上述規(guī)定的返回?cái)?shù)設(shè)定為一個(gè)第一數(shù)據(jù)的數(shù)據(jù)量,上述推入中斷或上述彈出中斷按照規(guī)定次數(shù)連續(xù)發(fā)生時(shí),增加設(shè)定上述彈出對(duì)象容量、上述規(guī)定的轉(zhuǎn)移數(shù)及上述規(guī)定的返回?cái)?shù),而且,第一棧中存儲(chǔ)的數(shù)據(jù)量達(dá)到零時(shí),再次將上述彈出對(duì)象容量、上述規(guī)定的轉(zhuǎn)移數(shù)及上述規(guī)定的返回?cái)?shù)設(shè)定為一個(gè)第一數(shù)據(jù)的數(shù)據(jù)量。
      10.??刂品椒ǎ邆湓谥骺刂撇繄?zhí)行由運(yùn)算指令或子程序調(diào)用指令等多個(gè)指令所構(gòu)成的規(guī)定程序的第一工序;棧寄存器中,上述規(guī)定程序中的程序計(jì)數(shù)器值、循環(huán)計(jì)數(shù)器值及循環(huán)結(jié)束地址等第一數(shù)據(jù)以LIFO形式存儲(chǔ)到第一棧的第二工序;暫時(shí)存儲(chǔ)上述運(yùn)算指令中處理的中間結(jié)果等第二數(shù)據(jù)到存儲(chǔ)器的第三工序,其特征在于,該方法具備在上述存儲(chǔ)器中,將第一數(shù)據(jù)以LIFO形式存儲(chǔ)到第二棧的第四工序;監(jiān)視第一棧的容量,在該剩余容量成為規(guī)定的推入對(duì)象容量時(shí)發(fā)生推入中斷并通知上述主控制部,另外,在成為規(guī)定的彈出對(duì)象容量時(shí)發(fā)生彈出中斷并通知上述主控制部的中斷控制工序;通過(guò)響應(yīng)上述推入中斷的上述主控制部,從第一棧的底部取出數(shù)據(jù)并推入第二棧,將此操作以規(guī)定的轉(zhuǎn)移數(shù)重復(fù)的推入中斷處理工序;通過(guò)響應(yīng)上述彈出中斷的上述主控制部,從第二棧彈出數(shù)據(jù)并存儲(chǔ)到第一棧的底部,將此操作以規(guī)定的返回?cái)?shù)重復(fù)的彈出中斷處理工序。
      11.權(quán)利要求10所述的棧控制方法,其特征在于,上述中斷控制工序,用初始狀態(tài)下表示禁止的第一標(biāo)記寄存器,表示上述彈出中斷的許可或禁止;用初始狀態(tài)下表示許可的第二標(biāo)記寄存器,表示響應(yīng)來(lái)自外圍設(shè)備等外部裝置的中斷請(qǐng)求的外部中斷的許可或禁止;上述剩余容量成為上述規(guī)定的推入對(duì)象容量時(shí),將第二標(biāo)記寄存器設(shè)定為禁止后發(fā)生推入中斷,之后,由推入中斷返回時(shí),將第二標(biāo)記寄存器設(shè)定為許可;另外,上述剩余容量成為上述規(guī)定的彈出對(duì)象容量時(shí),且限于第一標(biāo)記寄存器表示許可時(shí),將第二標(biāo)記寄存器設(shè)定為禁止后發(fā)生彈出中斷,之后,由彈出中斷返回時(shí),將第二標(biāo)記寄存器設(shè)定為許可;上述推入中斷處理工序向第二棧推入數(shù)據(jù)時(shí),將第一標(biāo)記寄存器設(shè)定為許可;上述彈出中斷處理工序從第二棧彈出數(shù)據(jù)時(shí),且限于第二棧中存儲(chǔ)的數(shù)據(jù)量為零時(shí),將第一標(biāo)記寄存器設(shè)定為禁止。
      12.權(quán)利要求10或11中記載的棧控制方法,其特征在于,上述棧寄存器包含內(nèi)部地址存取寄存器,其具有第一棧的底部數(shù)據(jù)的地址即讀出內(nèi)部地址,和從該地址向底部方向移動(dòng)一個(gè)數(shù)據(jù)的數(shù)據(jù)量的寫(xiě)入內(nèi)部地址;上述推入中斷處理單元,對(duì)上述棧寄存器中的內(nèi)部地址存取寄存器中存儲(chǔ)的第一棧的底部數(shù)據(jù)的地址即讀出內(nèi)部地址進(jìn)行存取,從第一棧的底部取出數(shù)據(jù),上述彈出中斷處理單元,對(duì)上述內(nèi)部地址存取寄存器中存儲(chǔ)的,從上述讀出內(nèi)部地址向底部方向移動(dòng)一個(gè)數(shù)據(jù)的數(shù)據(jù)量的寫(xiě)入內(nèi)部地址進(jìn)行存取,將數(shù)據(jù)存儲(chǔ)到第一棧的底部。
      13.權(quán)利要求10至12的任一項(xiàng)所述的??刂品椒?,其特征在于,上述規(guī)定的推入對(duì)象容量為一個(gè)第一數(shù)據(jù)的數(shù)據(jù)量,上述推入中斷處理工序作為第一程序由上述主控制部執(zhí)行,響應(yīng)上述推入中斷,將來(lái)自第一程序的第一返回地址推入第一棧后執(zhí)行第一程序,之后,結(jié)束第一程序時(shí),將第一返回地址從第一棧彈出,返回第一返回地址表示的指令,上述彈出中斷處理單元作為第二程序由上述主控制部執(zhí)行,響應(yīng)上述彈出中斷,將第二程序的第二返回地址推入第一棧后執(zhí)行第二程序,之后,結(jié)束第二程序時(shí),將第二返回地址從第一棧彈出,返回第一返回地址表示的指令。
      14.權(quán)利要求10至13的任一項(xiàng)所述的??刂品椒?,其特征在于,上述規(guī)定的彈出對(duì)象容量為一個(gè)第一數(shù)據(jù)的數(shù)據(jù)量以上,第一棧能存儲(chǔ)的第一數(shù)據(jù)的最大數(shù)據(jù)量以下,上述規(guī)定的轉(zhuǎn)移數(shù)及上述規(guī)定返回?cái)?shù)為,一個(gè)第一數(shù)據(jù)的數(shù)據(jù)量以上,可用算式[(上述最大數(shù)據(jù)量-1)÷2](小數(shù)點(diǎn)以下舍去)算出的值以下。
      15.權(quán)利要求14中所述的??刂品椒ǎ涮卣髟谟?,上述規(guī)定的彈出對(duì)象容量、上述規(guī)定的轉(zhuǎn)移數(shù)及上述規(guī)定的返回?cái)?shù)為一個(gè)第一數(shù)據(jù)的數(shù)據(jù)量。
      16.權(quán)利要求14中所述的棧控制方法,其特征在于,上述規(guī)定的彈出對(duì)象容量為第一棧的所有容量,上述規(guī)定的轉(zhuǎn)移數(shù)及上述規(guī)定的返回?cái)?shù)為,可用算式[(第一棧所能存儲(chǔ)的第一數(shù)據(jù)的最大數(shù)據(jù)量-1)÷2](小數(shù)點(diǎn)以下舍去)算出的值。
      17.權(quán)利要求14中所述的??刂品椒ǎ涮卣髟谟?,上述中斷控制工序包含頻度監(jiān)視工序,其監(jiān)視上述推入中斷或上述彈出中斷發(fā)生的頻度,響應(yīng)該頻度判定并設(shè)定最佳的上述彈出對(duì)象容量、上述規(guī)定的轉(zhuǎn)移數(shù)及上述規(guī)定的返回?cái)?shù)。
      18.權(quán)利要求17中所述的棧控制方法,其特征在于,上述頻度監(jiān)視工序,通常設(shè)定上述彈出對(duì)象容量、上述規(guī)定的轉(zhuǎn)移數(shù)及上述規(guī)定的返回?cái)?shù)為一個(gè)第一數(shù)據(jù)的數(shù)據(jù)量,上述推入中斷或上述彈出中斷按規(guī)定次數(shù)連續(xù)發(fā)生時(shí),增加設(shè)定上述彈出對(duì)象容量、上述規(guī)定的轉(zhuǎn)移數(shù)及上述規(guī)定的返回?cái)?shù),而且,第一棧中存儲(chǔ)的數(shù)據(jù)量成為零時(shí),再度設(shè)定上述彈出對(duì)象容量、上述規(guī)定的轉(zhuǎn)移數(shù)及上述規(guī)定的返回?cái)?shù)為一個(gè)第一數(shù)據(jù)的數(shù)據(jù)量。
      全文摘要
      提供在微型信息處理機(jī)等執(zhí)行程序時(shí)使用的??刂蒲b置及其方法。??刂蒲b置10,在中斷控制器18監(jiān)視H/W棧26的容量,成為推入及彈出對(duì)象容量時(shí),分別發(fā)生推入及彈出中斷并通知主控制部12,主控制部12響應(yīng)推入中斷,從H/W棧26的底部取出數(shù)據(jù),推入S/W棧28,將此操作作為推入中斷處理按規(guī)定轉(zhuǎn)移數(shù)重復(fù),響應(yīng)彈出中斷,從S/W棧28彈出數(shù)據(jù)存儲(chǔ)到H/W棧26的底部,將此操作作為彈出中斷處理按規(guī)定返回?cái)?shù)重復(fù),從而,即使執(zhí)行可能超過(guò)棧寄存器的容量的程序,也可以繼續(xù)執(zhí)行而沒(méi)有程序停止及失控的現(xiàn)象。
      文檔編號(hào)G06F7/00GK1855030SQ20051011889
      公開(kāi)日2006年11月1日 申請(qǐng)日期2005年10月31日 優(yōu)先權(quán)日2005年4月28日
      發(fā)明者本田雄士 申請(qǐng)人:沖電氣工業(yè)株式會(huì)社
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1