專利名稱:用于影響數(shù)據(jù)處理器中的順序指令處理的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)處理器,尤其涉及一種影響數(shù)據(jù)處理器中的順序指令處理的方法和裝置。
數(shù)據(jù)處理器被越來(lái)越多地用于實(shí)時(shí)控制系統(tǒng)中,需要新的技術(shù)保證系統(tǒng)資源的有效利用。例如,在許多多任務(wù)系統(tǒng)中,具有幾個(gè)任務(wù)試圖共享某些相同的系統(tǒng)資源,例如存儲(chǔ)器,打印機(jī),或顯示屏的一個(gè)端口。在這種多任務(wù)系統(tǒng)中,重要的是,以盡可能高的效率共享系統(tǒng)資源。例如,如果多個(gè)任務(wù)正在共享一個(gè)資源,則必須有一種方法用于指示當(dāng)前哪個(gè)任務(wù)正在使用該資源,以及是否這一任務(wù)正在執(zhí)行必須不被干擾的功能。在許多多任務(wù)系統(tǒng)中,對(duì)于這種功能使用信號(hào)量(semaphore)。
信號(hào)量是一種反應(yīng)系統(tǒng)資源的當(dāng)前狀態(tài)的標(biāo)記類型或狀態(tài)指示器。通常在信號(hào)量中的狀態(tài)信息指示系統(tǒng)資源當(dāng)前是否正在被使用。在一些多任務(wù)系統(tǒng)中,信號(hào)量也可以包括關(guān)于哪個(gè)任務(wù)正在使用該資源的信息,并且甚至包括正在該資源上執(zhí)行的功能的類型。
例如,在存儲(chǔ)器中的一個(gè)具體位置可被指定作為對(duì)于共享的變量X的信號(hào)量的位置。如果任何任務(wù)想使用該共享變量X,該任務(wù)必須通過(guò)讀存儲(chǔ)器中的那一具體位置讀出共享變量X的信號(hào)量。變量X信號(hào)量含有關(guān)于變量X的狀態(tài)的信息,例如變量X當(dāng)前是否被保留被特定的任務(wù)獨(dú)自訪問(wèn)。如果變量X信號(hào)量指示當(dāng)前被保留因而處于忙狀態(tài),則新的任務(wù)必須等待。新的任務(wù)可以通過(guò)定期地讀變量X信號(hào)量繼續(xù)輪詢變量X信號(hào)量,看是否其仍然被占用或已經(jīng)成為可利用的。
一旦變量X信號(hào)量指示其不再被保留并因而是可利用的,則等待的任務(wù)對(duì)變量X信號(hào)量進(jìn)行寫操作,以便改變其狀態(tài)為忙或不可利用的。等待的任務(wù)因而便有效地鎖定變量X資源為其自己所利用。當(dāng)變量X的信號(hào)量指示變量X正在被使用時(shí)沒有其它任務(wù)可以使用變量X。一旦等待任務(wù)完成使用變量X,它便在變量X的信號(hào)量位置寫入新的值,以便改變變量X信號(hào)量,表明其又再次成為可利用的。
在使用信號(hào)量分配共享的系統(tǒng)資源的系統(tǒng)中有一個(gè)嚴(yán)重問(wèn)題。當(dāng)一個(gè)以上的任務(wù)輪詢共享的系統(tǒng)資源看該資源是否已經(jīng)成為可利用的時(shí)候便產(chǎn)生問(wèn)題。例如假設(shè)任務(wù)#1和任務(wù)#2二者都輪詢變量X信號(hào)量。在變量X信號(hào)量已經(jīng)被改變,表明其是可利用的之后,任務(wù)#1第一個(gè)讀出變量X信號(hào)量?,F(xiàn)在任務(wù)#2讀變量X信號(hào)量,并且也得知其是可利用的。任務(wù)#1和任務(wù)#2都不知道有另一個(gè)任務(wù)在競(jìng)爭(zhēng)變量X的使用。
如果任務(wù)#1收到一個(gè)中斷,在從中斷處重新開始之前它必須執(zhí)行軟件中斷程序。同時(shí),任務(wù)#2對(duì)變量X信號(hào)量寫入一個(gè)值,表明變量X現(xiàn)在忙。然后,任務(wù)#2使用變量X進(jìn)行處理。任務(wù)#1完成其中斷程序并從其軟件程序中的中斷處重新開始。任務(wù)#1不知道已被使用。因而任務(wù)#1對(duì)變量X寫入一個(gè)值,表明變量X現(xiàn)在忙,然后嘗試使用變量X。然而變量X正在被任務(wù)#2使用。這樣便發(fā)生沖突。結(jié)果,變量X可能是錯(cuò)誤的,因而任務(wù)可能收到變量X的一個(gè)錯(cuò)誤的值。因而,需要一種能夠使多任務(wù)可行地且高效地共享公共資源的方法。
圖1以方塊圖的形式說(shuō)明按照本發(fā)明的一個(gè)實(shí)施例的數(shù)字處理器10;圖2以方塊圖的形式說(shuō)明按照本發(fā)明的一個(gè)實(shí)施例的圖1的中央處理單元(CPU)12的一部分;圖3以表的形式說(shuō)明按照本發(fā)明的一個(gè)實(shí)施例的延遲中斷識(shí)別指令的一個(gè)實(shí)施例;圖4以表的形式說(shuō)明按照本發(fā)明的一個(gè)實(shí)施例進(jìn)行測(cè)試和設(shè)置功能的指令序列的一個(gè)實(shí)施例;圖5以表的形式說(shuō)明按照本發(fā)明的一個(gè)實(shí)施例進(jìn)行交換存儲(chǔ)器操作數(shù)功能的指令序列的一個(gè)實(shí)施例;以及圖6以表的形式說(shuō)明按照本發(fā)明的一個(gè)實(shí)施例進(jìn)行增加基于存儲(chǔ)器的計(jì)數(shù)器功能的指令序列的一個(gè)實(shí)施例。
圖1說(shuō)明數(shù)據(jù)處理器10,在一個(gè)實(shí)施例中,數(shù)據(jù)處理器10包括中央處理單元(CPU)12,存儲(chǔ)器14,總線接口模塊16,和其它模塊18,它們都通過(guò)總線20相互雙向連接。總線接口模塊16可以通過(guò)外部總線26使外部和數(shù)據(jù)處理器10相連。其它模塊18通過(guò)一個(gè)或幾個(gè)集成電路端子28選擇地使外部和數(shù)據(jù)處理器10相連。存儲(chǔ)器14通過(guò)一個(gè)或幾個(gè)集成電路端子24選擇地從外部連接數(shù)據(jù)處理器10。中央處理單元12通過(guò)一個(gè)或幾個(gè)集成電路端子22使外部和數(shù)據(jù)處理器10相連。
仍然參看圖1,本發(fā)明的另一個(gè)實(shí)施例可以使用任何結(jié)構(gòu)類型的數(shù)據(jù)處理器10。此外,數(shù)據(jù)處理器10可以完成各種功能。例如,數(shù)據(jù)處理器10可以使用RISC(Reduced Instruction Set Computer)結(jié)構(gòu),可以使用Harvard結(jié)構(gòu),可以是矢量處理器,可以是SIMD(Single InstructionMutiple Data)處理器,可以進(jìn)行浮點(diǎn)運(yùn)算,可以進(jìn)行數(shù)字信號(hào)處理計(jì)算等。
圖2說(shuō)明圖1的CPU12的一部分。在一個(gè)實(shí)施例中,CPU12包括指令輸送(pipe)電路30,指令譯碼電路32,寄存器34,算術(shù)邏輯單元(ALU)40,以及CPU控制電路42。CPU控制電路42通過(guò)控制/狀態(tài)信號(hào)58雙向地和指令輸送電路30、指令譯碼電路32、寄存器34以及ALU40相連,以便提供控制信息和接收狀態(tài)信息。指令輸送電路30通過(guò)總線20接收指令。指令輸送電路30可以存儲(chǔ)要被執(zhí)行的一個(gè)或幾個(gè)指令。指令輸送電路30通過(guò)導(dǎo)線54向指令譯碼電路32提供指令。指令譯碼電路32譯碼從指令輸送電路30接收的指令并通過(guò)導(dǎo)線56把輸出提供給CPU控制電路42。CPU控制電路42包括異常控制電路44,中斷控制電路46和計(jì)數(shù)器/計(jì)時(shí)器電路48。
在本發(fā)明的一個(gè)實(shí)施例中,中斷控制電路46雙向地和計(jì)時(shí)器/計(jì)數(shù)器電路48相連。CPU控制電路42通過(guò)中斷信號(hào)50接收來(lái)自總線20的一個(gè)或幾個(gè)中斷請(qǐng)求信號(hào)。其它模塊18(見圖1)或和外部總線26(未示出)相連的電路可以是通過(guò)中斷信號(hào)50被CPU控制電路42接收的一個(gè)或幾個(gè)中斷請(qǐng)求的源。CPU控制電路42可以通過(guò)中斷信號(hào)50向總線20提供一個(gè)或幾個(gè)中斷通知信號(hào)或其它的和中斷有關(guān)的信號(hào)。CPU控制電路42可以通過(guò)異常(exception)信號(hào)52選擇地接收一個(gè)或幾個(gè)異常發(fā)生信號(hào)。在本發(fā)明的一些實(shí)施例中,CPU控制電路42可以向總線提供一個(gè)或幾個(gè)異常通知信號(hào)或其它的異常狀態(tài)信號(hào)。
仍然參看圖2,在本發(fā)明的一個(gè)實(shí)施例中,異??刂齐娐?4和異常信號(hào)52相連,中斷控制電路46和中斷信號(hào)50相連。異常控制電路44和中斷控制電路46都和導(dǎo)線56以及控制/狀態(tài)信號(hào)58相連。中斷控制電路46可以選擇地包括超越電路47。在本發(fā)明的另一些實(shí)施例中,超越電路47可以位于CPU控制電路42中的其它位置。CPU控制電路42可以通過(guò)集成電路端子22選擇地使外部和數(shù)據(jù)處理器10相連。寄存器34雙向地和總線20相連,以便接收和提供數(shù)據(jù)值。寄存器34包括寄存器36。寄存器36包括條件位38。寄存器34通過(guò)導(dǎo)線60和導(dǎo)線62與ALU40相連,以便提供計(jì)算的值。ALU40的輸出通過(guò)導(dǎo)線64和寄存器34相連,以便提供來(lái)自ALU40的輸出值。
圖3說(shuō)明可以由圖2的CPU12執(zhí)行的延遲中斷識(shí)別指令的一個(gè)實(shí)施例。
圖4說(shuō)明可以通過(guò)使用圖3的延遲中斷識(shí)別指令被用來(lái)實(shí)現(xiàn)測(cè)試和設(shè)置功能的指令序列的一個(gè)實(shí)施例。
圖5說(shuō)明可以通過(guò)使用圖3的延遲中斷識(shí)別指令被用來(lái)實(shí)現(xiàn)交換存儲(chǔ)器操作數(shù)功能的指令序列的一個(gè)實(shí)施例。
圖6說(shuō)明可以通過(guò)使用圖3的延遲中斷識(shí)別指令被用來(lái)實(shí)現(xiàn)增加基于存儲(chǔ)器的計(jì)數(shù)器功能的一個(gè)實(shí)施例。
現(xiàn)在說(shuō)明最佳實(shí)施例的操作。在一個(gè)實(shí)施例中,本發(fā)明提供一種有效的方法和裝置,用于把中斷識(shí)別延遲一個(gè)被控制的間隔,或者一個(gè)預(yù)定的時(shí)間間隔,或者一個(gè)預(yù)定的指令數(shù),使得指令的讀/修改/寫順序可以不用限定修改操作的專用指令來(lái)執(zhí)行。
術(shù)語(yǔ)“總線”用來(lái)指可以用來(lái)傳遞一個(gè)或幾個(gè)各種類型的信息,例如數(shù)據(jù),地址,控制或狀態(tài)的一組信號(hào)或?qū)Ь€。術(shù)語(yǔ)“肯定”和“否定”分別用來(lái)指信號(hào)、狀態(tài)位或類似的裝置的邏輯值為真或假。如果邏輯真狀態(tài)的邏輯值為1,則邏輯假狀態(tài)的邏輯值為0。并且如果邏輯真狀態(tài)的邏輯值為0,則邏輯假狀態(tài)的邏輯值為1。
參看圖3,在本發(fā)明的一個(gè)實(shí)施例中,在使用加載/存儲(chǔ)結(jié)構(gòu)的處理器,例如圖1和2所示的數(shù)據(jù)處理器10中,延遲中斷識(shí)別指令(例如IDLY4)可用來(lái)使中斷識(shí)別延遲一個(gè)預(yù)定的指令數(shù)。
在本發(fā)明的一個(gè)實(shí)施例中,中斷識(shí)別被延遲的預(yù)定的立即相繼的指令數(shù)可以是固定的值(例如4個(gè)指令)。本發(fā)明的另一個(gè)實(shí)施例可以把這預(yù)定的指令數(shù)固定為任何正整數(shù)。圖3所示的本發(fā)明的一個(gè)實(shí)施例把中斷識(shí)別延遲4個(gè)指令,這在執(zhí)行延遲中斷識(shí)別指令(IDLY4)立即執(zhí)行。這樣,執(zhí)行延遲中斷識(shí)別指令,則在隨后的4個(gè)指令期間,沒有中斷被識(shí)別,在開始執(zhí)行跟隨IDLY4指令的第五個(gè)指令時(shí),中斷識(shí)別開始。
要說(shuō)明的是,本發(fā)明的一些實(shí)施例可以計(jì)數(shù)執(zhí)行的指令作為用作預(yù)定的相繼指令數(shù)部分的異常處理部分。而本發(fā)明的其它實(shí)施例可以不計(jì)數(shù)執(zhí)行的指令作為用作預(yù)定的相繼指令數(shù)部分的異常處理部分。
在本發(fā)明的第一實(shí)施例中,在已經(jīng)執(zhí)行延遲中斷識(shí)別指令之后,在執(zhí)行預(yù)定的指令數(shù)期間,中斷識(shí)別被禁止或延遲。中斷識(shí)別被禁止或延遲的這一預(yù)定的指令數(shù)可用多種方法確定。例如,延遲中斷識(shí)別指令本身可以包括確定中斷識(shí)別被延遲的指令數(shù)的字段(例如圖3中的選擇的說(shuō)明符字段70)。在其它的實(shí)施例中,可由用戶編程的控制寄存器(例如圖2的寄存器34中的一個(gè))包含用于確定中斷識(shí)別被延遲的預(yù)定的指令數(shù)的值。本發(fā)明的其它實(shí)施例可以使用任何類型的方法來(lái)選擇預(yù)定的指令數(shù),例如通過(guò)集成電路端子或通過(guò)掩模可編程存儲(chǔ)裝置提供預(yù)定的指令數(shù)。
在本發(fā)明的一個(gè)實(shí)施例中,如果延遲中斷識(shí)別指令在執(zhí)行預(yù)定的相繼指令數(shù)期間延遲中斷的識(shí)別,則圖2所示的電路的操作方式如下。借助于指令管道30從總線20接收延遲中斷識(shí)別指令。然后,指令管道30把這指令在合適的時(shí)刻提供給指令譯碼電路。然后指令譯碼電路32通過(guò)導(dǎo)線56把對(duì)延遲中斷識(shí)別指令進(jìn)行正確譯碼的信號(hào)提供給CPU控制電路42。CPU控制電路42然后使用中斷控制電路46延遲借助于中斷信號(hào)50接收的中斷請(qǐng)求的識(shí)別。CPU控制電路42將延遲中斷請(qǐng)求識(shí)別一個(gè)預(yù)定的指令數(shù)。CPU控制電路42可以使用計(jì)數(shù)器/計(jì)時(shí)器48和借助于信號(hào)58從指令管道30和指令譯碼電路32接收的信息,確定在執(zhí)行延遲中斷識(shí)別指令之后緊接執(zhí)行了多少指令。
對(duì)于本發(fā)明的一些實(shí)施例,尤其是使用流水線處理器結(jié)構(gòu)的那些實(shí)施例,CPU控制電路42可以只計(jì)數(shù)執(zhí)行完畢的隨后的指令,或者可以計(jì)數(shù)任何隨后的指令,對(duì)于這些指令在每個(gè)指令的取出、譯碼、和執(zhí)行周期期間已達(dá)到預(yù)定的級(jí)。
代替延遲中斷的識(shí)別一個(gè)預(yù)定的隨后指令數(shù),本發(fā)明的另外的實(shí)施例可以規(guī)定一個(gè)中斷識(shí)別被延遲的預(yù)定的時(shí)間間隔。在這些另外的實(shí)施例中,可以使用計(jì)時(shí)器或計(jì)時(shí)器(例如圖2中的計(jì)時(shí)器/計(jì)時(shí)器48)計(jì)數(shù)預(yù)定的時(shí)鐘周期數(shù),或計(jì)數(shù)中斷識(shí)別被延遲的納秒數(shù)。
在本發(fā)明的一個(gè)實(shí)施例中,如果延遲中斷識(shí)別指令在執(zhí)行預(yù)定的隨后時(shí)鐘周期數(shù)或納秒數(shù)期間延遲中斷的識(shí)別,圖2中所示的CPU控制電路42將使用計(jì)時(shí)器/計(jì)時(shí)器48計(jì)數(shù)納秒數(shù)或時(shí)鐘周期數(shù),而不計(jì)數(shù)正在被執(zhí)行的指令數(shù)。此外,可以使用用戶可編程的機(jī)構(gòu),例如指令本身(例如圖3中的選擇的說(shuō)明符字段70),寄存器值或另外的可編程的方法,向計(jì)時(shí)器/計(jì)時(shí)器48提供納秒數(shù)或時(shí)鐘周期數(shù),以便確定在執(zhí)行延遲中斷識(shí)別指令之后中斷不被識(shí)別的時(shí)間間隔的長(zhǎng)度。
在本發(fā)明的一個(gè)實(shí)施例中,在執(zhí)行完畢延遲中斷識(shí)別指令之后,CPU控制電路42開始計(jì)數(shù)不識(shí)別中斷的時(shí)間間隔。不過(guò),在本發(fā)明的另一個(gè)實(shí)施例中,CPU控制電路42可以在延遲中斷識(shí)別指令的譯碼開始之后的任何時(shí)刻開始計(jì)數(shù)不識(shí)別中斷的時(shí)間間隔。
對(duì)于本發(fā)明的一些實(shí)施例,在延遲中斷識(shí)別指令之后可以跟隨著任何類型的指令。不過(guò),在一些情況下,把需要周期數(shù)多的指令例如除指令放在跟隨延遲中斷識(shí)別指令的指令序列中可能引起中斷的時(shí)間間隔過(guò)長(zhǎng)。為了解決這一問(wèn)題,本發(fā)明的一些實(shí)施例限制緊跟著延遲中斷識(shí)別指令的指令的類型。例如,參見圖3,緊跟著延遲中斷識(shí)別指令的4個(gè)指令可被限制為一個(gè)周期的算術(shù)或邏輯指令、分支指令和加載或存儲(chǔ)指令。限制在其期間中斷識(shí)別被延遲的指令的目的在于減少最大的中斷等待時(shí)間間隔。本發(fā)明的另一個(gè)實(shí)施例可以限制或不限制在其期間中斷識(shí)別被延遲的指令的類型,因而可以限制或不限制可以跟隨延遲中斷識(shí)別指令的指令類型。對(duì)于不同的處理器10,可以跟隨延遲中斷識(shí)別指令的指令的具體設(shè)置可以不同,并且在一些實(shí)施例中,可以是用戶可編程的。
本發(fā)明的另外的實(shí)施例可用不同的方式借助于異常處理來(lái)改變。在圖3所示的本發(fā)明的實(shí)施例中,在中斷不被識(shí)別的時(shí)間間隔期間一直檢測(cè)異常并被取出。不過(guò)本發(fā)明的其它實(shí)施例可以檢測(cè)而不處理發(fā)生在中斷識(shí)別被延遲的時(shí)間間隔內(nèi)的異常。還有其它的另外的實(shí)施例在中斷不被識(shí)別的時(shí)間間隔內(nèi)甚至可以不檢測(cè)因而也不處理異常。此外,本發(fā)明的另外的實(shí)施例可以處理不同地處理不同類型的異常。例如,圖3所示的延遲中斷識(shí)別指令(IDLY4)允許發(fā)生非跟蹤和非間斷點(diǎn)異常,以便在中斷不被識(shí)別的時(shí)間間隔內(nèi)清除條件位38(見圖2),而跟蹤和間斷點(diǎn)異常不影響條件位38。
在本發(fā)明的一些實(shí)施例中,可以使用一種機(jī)構(gòu)用于在執(zhí)行延遲中斷識(shí)別指令之后的非識(shí)別時(shí)間間隔重新允許中斷。例如,在一個(gè)預(yù)定的時(shí)間間隔期間,計(jì)時(shí)器/計(jì)時(shí)器48可用于檢測(cè)一個(gè)特定等級(jí)的中斷在這段時(shí)間間隔已被掛起,并因而在中斷非識(shí)別間隔過(guò)去之前需要被識(shí)別。這樣,在本發(fā)明的一些實(shí)施例中,使用超越電路47,即使在執(zhí)行仍然保留在中斷非識(shí)別間隔內(nèi)時(shí)(即由預(yù)定的指令數(shù)、時(shí)鐘周期、或納秒數(shù)限定的),可以重新允許中斷。如果中斷識(shí)別不被重新允許,當(dāng)前指令可在數(shù)據(jù)流中間被中斷,或在中斷再被識(shí)別之前被允許繼續(xù)并完成執(zhí)行。
本發(fā)明的一些實(shí)施例可以延遲所有中斷的識(shí)別,而本發(fā)明的另一些實(shí)施例可能僅延遲在預(yù)定的中斷等級(jí)以下的中斷的識(shí)別。預(yù)定的中斷等級(jí)可用任何方式規(guī)定。例如預(yù)定的中斷等級(jí)可規(guī)定作為延遲中斷識(shí)別指令格式本身的部分,或者可以通過(guò)在用戶可編程的寄存器中存儲(chǔ)一個(gè)值來(lái)規(guī)定,可以通過(guò)集成電路端子提供一個(gè)值來(lái)規(guī)定,或者可以通過(guò)在掩??删幊檀鎯?chǔ)電路中存儲(chǔ)一個(gè)值來(lái)規(guī)定。
在另一個(gè)實(shí)施例中,本發(fā)明允許第一指令改變隨后的指令影響狀態(tài)標(biāo)記的方式。在本發(fā)明的一個(gè)實(shí)施例中,圖3所示的延遲中斷識(shí)別指令(IDLY4)的執(zhí)行可以改變一個(gè)或幾個(gè)隨后的指令影響圖2的條件位38的方式。例如,參看圖4-6,在本發(fā)明的一個(gè)實(shí)施例中,IDLY4指令肯定條件位38。然后,如果在4個(gè)隨后的指令的任何一個(gè)期間發(fā)生異常,在異常發(fā)生時(shí)正在被執(zhí)行的指令將否定條件位38。這樣,在正常情況下被規(guī)定永不清除或否定條件位38的指令(例如加載指令),當(dāng)加載指令是在IDLY4指令之后的4個(gè)隨后指令之一時(shí),如果在加載指令的執(zhí)行期間發(fā)生異常,則現(xiàn)在可以清除條件代碼位38。這樣,IDLY4指令可以影響隨后指令(例如加載指令)影響條件位38的方式。用這種方式使用條件位38的一個(gè)目的是表明4個(gè)隨后的指令沒有以各自的方式被執(zhí)行,以及異常處理可能已影響共享的資源。
注意圖4-圖6所示的指令序列都包括檢查條件位38,以便確定在IDLY4指令(即如果條件代碼位38等于0,則轉(zhuǎn)換到SEQUENCE-FAILED)之后,在4個(gè)非異常處理指令期間是否已收到異常并被處理。如果在IDLY4指令之后已收到異常并被處理,則“BF”指令轉(zhuǎn)換到一個(gè)稱為SEQUENCE-FAILED的指令的子程序,其可用于表明在IDLY4指令之后的4個(gè)指令沒有以各自的方式被執(zhí)行,并且異常處理可能已經(jīng)影響共享的資源,例如信號(hào)量。
圖4說(shuō)明一系列的指令,它們使用圖3所示的延遲中斷識(shí)別指令(IDLY4)以實(shí)現(xiàn)測(cè)試和設(shè)置功能。圖4所示的測(cè)試和設(shè)置功能測(cè)試存儲(chǔ)器操作數(shù),以便確定存儲(chǔ)器操作數(shù)的當(dāng)前值是否都是0,并把存儲(chǔ)器操作數(shù)的值都改變成1(即設(shè)置存儲(chǔ)器操作數(shù)的所有的位)。因而,圖4所示的指令序列可以用來(lái)根據(jù)在存儲(chǔ)器中存儲(chǔ)的信號(hào)量值實(shí)現(xiàn)測(cè)試和設(shè)置功能。延遲中斷識(shí)別指令(IDLY4)可被用來(lái)保證測(cè)試和設(shè)置功能以不可分割的方式被實(shí)現(xiàn),從而使得信號(hào)量值不會(huì)由在測(cè)試操作和在設(shè)置操作之間的中斷圖4所示的軟件程序的不同的任務(wù)搞錯(cuò)。
注意圖4所示的指令序列實(shí)際上在進(jìn)行測(cè)試操作之前進(jìn)行設(shè)置操作。這是可能的,因?yàn)镮DLY4指令可被用于保證設(shè)置和測(cè)試兩種操作在另一個(gè)任務(wù)被允許中斷之前被完成,并且因?yàn)樵诒纠械男盘?hào)量值只有兩個(gè)可能的值,即全部為1或全部為0。因此如果信號(hào)量的起始值全部為1,則設(shè)置信號(hào)量的步驟將不改變信號(hào)量的值。注意執(zhí)行測(cè)試和設(shè)置功能的另一個(gè)指令序列可以在設(shè)置操作之前執(zhí)行測(cè)試操作。
圖5說(shuō)明使用圖3所示的延遲中斷識(shí)別指令(IDLY4)的一個(gè)指令序列,其執(zhí)行“交換存儲(chǔ)器操作數(shù)和寄存器操作數(shù)”功能。圖5所示的“交換存儲(chǔ)器操作數(shù)和寄存器操作數(shù)”功能實(shí)際上從其存儲(chǔ)器的起始位置中的被稱為“EXCHANGE-VALUE”的值移動(dòng)到寄存器R1,然后移動(dòng)到信號(hào)量值的位置。注意信號(hào)量值的位置由稱為“SEMAPHORE”的指針指定。該信號(hào)量的值被從其存儲(chǔ)器中的初始位置移動(dòng)到寄存器R3。在圖5所示的特定的指令序列中,最后的“OR”指令除去完成在IDLY4指令之后的4個(gè)指令序列之外,不進(jìn)行有用的操作,并因而停止中斷識(shí)別的延遲。因此,最后的“OR”指令和no operation(NOP)指令具有相同的效果,并可以用不同的指令替代。
圖6說(shuō)明使用圖3所示的延遲中斷識(shí)別指令(IDLY4)完成“增加基于存儲(chǔ)器的計(jì)數(shù)器”功能的一系列指令。圖6所示的“增加基于存儲(chǔ)器的計(jì)數(shù)器”功能實(shí)際上把信號(hào)量值從其存儲(chǔ)器中的初始位置移動(dòng)到寄存器R3中,然后使信號(hào)量值增加1。注意信號(hào)量值的位置由稱為“SEMAPHORE”的指針指定。然后把增加的信號(hào)量值從寄存器R3移動(dòng)回到其存儲(chǔ)器的初始位置。
雖然參照特定的實(shí)施例對(duì)本發(fā)明進(jìn)行了說(shuō)明,對(duì)于本領(lǐng)域的技術(shù)人員,會(huì)有其它的改型和改進(jìn)。因此,應(yīng)該理解,本發(fā)明不限于所說(shuō)明的特定的形式,所附的權(quán)利要求包括了不脫離本發(fā)明的構(gòu)思的所有的改型。
權(quán)利要求
1.一種影響數(shù)據(jù)處理器中隨后的指令處理的方法,其特征在于包括以下步驟接收一個(gè)或幾個(gè)構(gòu)成數(shù)據(jù)處理器的一個(gè)指令組的一組指令;對(duì)接收的一個(gè)或幾個(gè)一組指令譯碼;執(zhí)行被譯碼的一個(gè)或幾個(gè)一組指令;接收一個(gè)預(yù)定的指令,所述預(yù)定的指令是包含在指令組內(nèi)的一個(gè)指令;以及響應(yīng)所述的譯碼,由數(shù)據(jù)處理器延遲處理其遇到的任何異常,所延遲的時(shí)間或者是跟隨預(yù)定指令的譯碼的一個(gè)預(yù)定的指令數(shù),或者是跟隨預(yù)定指令的譯碼的一個(gè)預(yù)定的時(shí)間間隔。
2.如權(quán)利要求1所述的方法,其特征在于還包括在延遲處理任何異常之前執(zhí)行預(yù)定的指令的步驟。
3.如權(quán)利要求1所述的方法,其中延遲處理任何異常的步驟還包括以下步驟延遲任何異常的處理直到完成執(zhí)行跟隨著預(yù)定指令的譯碼由數(shù)據(jù)處理器處理的4個(gè)隨后的指令。
4.如權(quán)利要求1所述的方法,其中延遲處理任何異常的步驟還包括以下步驟使用計(jì)數(shù)器作為計(jì)時(shí)器,用于確定跟隨著預(yù)定指令的譯碼的預(yù)定的時(shí)間間隔。
5.如權(quán)利要求1所述的方法,其中由數(shù)據(jù)處理器延遲處理任何異常的步驟還包括只響應(yīng)中斷條件異常延遲處理的步驟。
6.一種數(shù)據(jù)處理器,其特征在于指令執(zhí)行電路,其執(zhí)行預(yù)定的指令組,預(yù)定的指令組包括至少一個(gè)指令,該指令當(dāng)由指令執(zhí)行電路執(zhí)行時(shí),使數(shù)據(jù)處理器延遲和數(shù)據(jù)處理器的操作相關(guān)的中斷條件的識(shí)別一個(gè)跟隨著至少一個(gè)指令的執(zhí)行的一個(gè)預(yù)定的指令數(shù)。
7.如權(quán)利要求6所述的數(shù)據(jù)處理器,其中數(shù)據(jù)處理器延遲中斷條件的識(shí)別的預(yù)定的指令數(shù)是可以由數(shù)據(jù)處理器的用戶編程的。
8.如權(quán)利要求6所述的數(shù)據(jù)處理器,其中預(yù)定的指令數(shù)是4。
全文摘要
一種方法和裝置影響數(shù)據(jù)處理器(10)內(nèi)的隨后指令的處理,在一個(gè)實(shí)施例中,由數(shù)據(jù)處理器(10)執(zhí)行延遲中斷識(shí)別指令(IDLY4),從而延遲或有條件地延遲中斷識(shí)別一個(gè)被控制的時(shí)間間隔,或者是一個(gè)預(yù)定的時(shí)間段,或者是一個(gè)預(yù)定的指令數(shù),使得指令的讀/修改/寫順序可以不用限定修改操作的專用指令來(lái)執(zhí)行。IDLY4指令可以影響隨后指令影響條件位(38)的方式。因而條件位(38)可被用于確定在執(zhí)行IDLY4指令之后的不識(shí)別中斷的時(shí)間間隔期間是否發(fā)生異常處理。
文檔編號(hào)G06F9/32GK1216375SQ9812145
公開日1999年5月12日 申請(qǐng)日期1998年11月2日 優(yōu)先權(quán)日1997年11月3日
發(fā)明者威廉姆·C·莫葉, 杰福里·W·斯考特 申請(qǐng)人:摩托羅拉公司