但與之相伴,由于程序計數(shù)器115的值每次增加1,所以從存儲器模塊120讀取的地址值不斷更新。當通過解碼器113將分支指令解碼時,將該分支目標地址值配置到程序計數(shù)器115。當判斷為從分支指令檢測部132接收的分支目標地址值與程序計數(shù)器115的值一致時,PC監(jiān)視器150將預(yù)定的觸發(fā)信號分別輸出至切換控制部131以及訪問控制部140 (時刻t3)。
[0095]當檢測到預(yù)定的觸發(fā)信號時,切換控制部131輸出選擇信號SELJf I/O信號線從第一閃存器120A切換至第二閃存器120B (時刻t4)。訪問控制部140與其大致同時并行地將向第一閃存器120A提供的啟動信號ENAl變?yōu)椤癓”,將向第二閃存器120B提供的啟動信號ENA2變?yōu)椤癏”。據(jù)此,停止向第一閃存器120A提供時鐘CLK1,而開始向第二閃存器120B提供時鐘CLK2,由此能夠從第二閃存器120B讀取分支程序的指令(時刻t5)。
[0096]如以上所述,根據(jù)本實施方式,準備儲存有指令代碼的能夠進行切換選擇的例如兩個閃存器,存儲器I/F130在通過CPU 110執(zhí)行運算之前,從由一個閃存器讀取的數(shù)據(jù)中檢測出特定的指令,由此,訪問控制部140進行另一個閃存器的讀取準備,因此在通過CPU110對該特定的指令進行運算執(zhí)行的時刻,能夠立即從該另一個閃存器中讀取后續(xù)指令。即,即使在讀取的地址不具有連續(xù)性的情況下,通過預(yù)先使與讀取數(shù)據(jù)的閃存器不同的閃存器處于能夠讀取的狀態(tài),能夠減少CPU的等待時間,由此能夠高效地利用CPU。
[0097](第二實施方式)
[0098]本實施方式公開了一種在半導(dǎo)體裝置100中,按照子程序指令在第一閃存器120A和第二閃存器120B之間進行切換控制的技術(shù)。在以下的說明中,參照圖3對分支指令檢測部132檢測取代分支指令的子程序指令,或者在分支指令的基礎(chǔ)上檢測子程序指令來進行閃存器的切換控制的例子進行說明。
[0099]在本實施方式中,例如第一閃存器120A儲存構(gòu)成主程序的第一指令組,第二閃存器120B儲存構(gòu)成子程序的第三指令組,該子程序取代構(gòu)成分支程序的第二指令組,或者在第二指令組的基礎(chǔ)上根據(jù)第一指令組中包含的子程序指令而執(zhí)行。
[0100]如上所述,當半導(dǎo)體裝置100被初始化時,訪問控制部140控制為向第一閃存器120A提供啟動信號ENA1,從而將時鐘CLKl (未圖示)提供給第一閃存器120A,并且控制為能夠從第一閃存器120A的預(yù)定的地址(例如,程序計數(shù)器115所表示的地址)讀取數(shù)據(jù)列。在該狀態(tài)下,切換控制部131通過選擇第一閃存器120A的I/O信號線而開始從第一閃存器120A讀取數(shù)據(jù)列。
[0101]在將從第一閃存器120A讀取的數(shù)據(jù)列緩沖到預(yù)取緩沖區(qū)時,分支指令檢測部132進行預(yù)解碼,判斷是否有子程序指令。在判斷為預(yù)解碼后的指令是子程序指令(以及分支指令)以外的指令時,分支指令檢測部132經(jīng)由指令總線,將該指令提供給CPU 110,據(jù)此,該指令被保存在CPU 110的指令寄存器112。另一方面,在判斷為預(yù)解碼后的指令是子程序指令時,分支指令檢測部132將該子程序指令提供給CPU 110,并且獲取該子程序指令所表示的跳轉(zhuǎn)目標地址值,將其分別輸出至訪問控制部140以及PC監(jiān)視部150。
[0102]在接收到跳轉(zhuǎn)目標地址值時,訪問控制部140以提供啟動信號ENA2而將時鐘CLK2 (未圖示)提供給第二閃存器120B的方式進行控制,并以第二閃存器120B能夠從該跳轉(zhuǎn)目標地址讀取數(shù)據(jù)列的方式進行控制。在檢測到從第二閃存器120B接收例如READY信號(未圖示),第二閃存器120B成為能夠讀取的狀態(tài)時,訪問控制部140暫時使第二閃存器120B處于空閑狀態(tài)。另一方面,PC監(jiān)視部150暫時將跳轉(zhuǎn)目標地址值儲存在未圖示的寄存器中。
[0103]另一方面,在CPU 110中,在通過解碼器113對子程序指令進行解碼時,按照堆棧指針,將子程序的返回目標地址值(即,PC = PC+1)堆棧在程序計數(shù)器115,并且,將該子程序指令所表示的跳轉(zhuǎn)目標地址值堆棧。
[0104]在將檢測到跳轉(zhuǎn)目標地址值被配置在程序計數(shù)器115時,PC監(jiān)視部150判斷從分支指令檢測部132接收的跳轉(zhuǎn)目標地址值與程序計數(shù)器115的值是否一致。即,在將跳轉(zhuǎn)目標地址值被配置在程序計數(shù)器115,并判斷為從分支指令檢測部132接收的跳轉(zhuǎn)目標地址值與程序計數(shù)器115的值一致時,PC監(jiān)視部150將預(yù)定的觸發(fā)信號輸出至切換控制部131以及訪問控制部140。并且,PC監(jiān)視部150按照程序計數(shù)器115的堆棧指針將子程序的返回目標地址值儲存在寄存器。
[0105]在接收預(yù)定的觸發(fā)信號時,切換控制部131將I/O信號從第一閃存器120A切換至第二閃存器120B。另外,訪問控制部140停止向第一閃存器120A提供啟動信號ENA1,再次開始向可能處于空閑狀態(tài)的第二閃存器120B提供啟動信號ENA2。據(jù)此,再次開始向第二閃存器120B提供時鐘CLK2,能夠立即從第二閃存器120B依次讀取按照跳轉(zhuǎn)目標地址值的子程序的指令。
[0106]如果從由第二閃存器120B讀取的數(shù)據(jù)列中檢測出表示子程序結(jié)束的返回指令,則分支指令檢測部132將返回信號輸出到PC監(jiān)視部150。PC監(jiān)視部150接收返回信號,將儲存在寄存器中的返回目標地址值輸出到訪問控制部140。
[0107]在接收到返回目標地址值時,訪問控制部140以提供啟動信號ENA2,從而將時鐘CLKl提供給第一閃存器120A的方式進行控制,并使第一閃存器120A能夠從該返回目標地址的位置讀取數(shù)據(jù)列的方式進行控制。在檢測出從第一閃存器120A接收例如READY信號,第一閃存器120A成為能夠讀取的狀態(tài)時,訪問控制部140暫時使第一閃存器120A處于空閑狀態(tài)。
[0108]另一方面,在CPU 110中,在通過解碼器113對返回指令進行解碼時,按照堆棧指針,將程序計數(shù)器115的值重置為子程序的返回地址。據(jù)此,PC監(jiān)視部150檢測出儲存在寄存器中的返回目標地址值與程序計數(shù)器115的值一致,將預(yù)定的觸發(fā)信號分別輸出至切換控制部131以及訪問控制部140,并且重置寄存器的內(nèi)容。
[0109]在接收預(yù)定的觸發(fā)信號時,切換控制部131將I/O信號線從第二閃存器120B切換為第一閃存器120A。并且,訪問控制部140停止向第二閃存器120B提供啟動信號ENA2,再次開始向可能處于空閑狀態(tài)的第一閃存器120A提供啟動信號ENA1。據(jù)此,重新開始向第一閃存器120A提供時鐘CLKl,立即根據(jù)程序計數(shù)器115的值,從第一閃存器120A依次讀取按照返回地址的指令。
[0110]應(yīng)予說明,在本實施方式中,作為來自子程序的返回目標地址值,使用了程序計數(shù)器115當前值的接下來的值,但并不限于此。即,根據(jù)子程序,有可能指定例外的返回目標地址,那樣的地址值也可以堆棧至程序計數(shù)器115。
[0111]如上所述,根據(jù)本實施方式,能夠得到與上述第一實施方式同樣的優(yōu)點或者效果。即,根據(jù)本實施方式,準備儲存有指令代碼的能夠進行切換選擇的例如兩個閃存器,在通過CPU 110執(zhí)行運算之前,存儲器I/F130從由一個閃存器讀取的數(shù)據(jù)中檢測出特定的指令(子程序指令),由此,訪問控制部140進行另一個閃存器的讀取準備,因此在通過CPU 110對該特定的指令執(zhí)行運算的時刻,能夠從該另一個閃存器即刻讀取后續(xù)指令。另外,根據(jù)本實施方式,由于在利用CPU 110執(zhí)行運算前檢測出返回指令,由此,進行最初的閃存器的讀取準備,所以在通過CPU 110對該返回指令執(zhí)行運算的時刻,能夠從該另一個閃存器的返回目標地址的位置立即讀取后續(xù)指令。
[0112](第三實施方式)
[0113]本實施方式公開了一種在半導(dǎo)體裝置100中,通過產(chǎn)生CPU中斷,而在第一閃存器120A與第二閃存器120B之間進行切換控制的技術(shù)。在以下的說明中,參照圖3對通過中斷控制器160檢測CPU中斷的發(fā)生而進行閃存器的切換控制的例子進行說明。
[0114]在本實施方式中,例如,第一閃存器120A儲存構(gòu)成主程序的第一指令組,第二閃存器120B儲存代替構(gòu)成分支程序的第二指令組以及/或者構(gòu)成子程序的第三指令組的構(gòu)成中斷程序的第四指令組;或者儲存在構(gòu)成分支程序的第二指令組以及/或者構(gòu)成子程序的第三指令組的基礎(chǔ)上的構(gòu)成中斷程序的第四指令組。
[0115]如上所述,從第一閃存器120A讀取數(shù)據(jù)列。在該狀態(tài)下,在從外部的外圍設(shè)備等輸出中斷請求信號時,中斷控制器160檢測該情況,將基于中斷信號的中斷跳轉(zhuǎn)目標地址輸出到訪問控制部140。由此,訪問控制部140以提供啟動信號ENA2,從而將時鐘CLK2 (未圖示)提供給第二閃存器120B的方式進行控制,并以使第二閃存器120B能夠從該中斷跳轉(zhuǎn)目標地址讀取數(shù)據(jù)列的方式進行控制。在檢測出從第二閃存器120B接收例如READY信號(未圖示),第二閃存器120B成為能夠讀取的狀態(tài)時,訪問控制部140暫時使第二閃存器120B處于空閑狀態(tài)。另一方面,PC監(jiān)視部150將跳轉(zhuǎn)目標地址值暫時儲存在未圖示的寄存器中。
[0116]另一方面,在CPU 110中,在利用中斷控制器160執(zhí)行中斷時,按照堆棧指針,將按照該中斷的中斷程序的返回目標地址值(g卩,PC = PC+1)堆棧到程序計數(shù)器115,并且,將該中斷程序所表示的跳轉(zhuǎn)目標地址值被堆棧。并且,中斷控制器160將按照該中斷的跳轉(zhuǎn)目標地址值輸出到PC監(jiān)視部150。
[0117]PC監(jiān)視部150在檢測出在程序計數(shù)器115中配置了跳轉(zhuǎn)目標地址值時,判斷儲存在寄存器的跳轉(zhuǎn)目標地址值與程序計數(shù)器115的值是否一致。在判斷為跳轉(zhuǎn)目標地址值被配置到程序計數(shù)器115,并且從分支指令檢測部132接收的跳轉(zhuǎn)目標地址值與程序計數(shù)器115的值一致時,PC監(jiān)視部150將預(yù)定的觸發(fā)信號輸出至切換控制部131以及訪問控制部140,并且將來自中斷程序的返回目標地址值儲存到寄存器中。
[0118]切換控制部131在接收預(yù)定的觸發(fā)信號時,將I/O信號線從第一閃存器120A切換至第二閃存器120B。并且,