用于運(yùn)行指令的方法和處理器、用于對(duì)指令進(jìn)行編碼的方法和裝置以及用于其的記錄介質(zhì)的制作方法
【專利摘要】在一種運(yùn)行指令的方法中,基于多個(gè)指令中的每一個(gè)中所包括的信息來獲取在預(yù)定周期中運(yùn)行的至少一個(gè)指令,并且獲取所述至少一個(gè)指令中所包括的代碼?;诜治鼋Y(jié)果將指令分配給至少一個(gè)槽位,并且選擇性地使用運(yùn)行所述指令所必要的槽位。因此,可以減少使用所述方法的設(shè)備的功耗。
【專利說明】
用于運(yùn)行指令的方法和處理器、用于對(duì)指令進(jìn)行編碼的方法和裝置以及用于其的記錄介質(zhì)
技術(shù)領(lǐng)域
[0001]本發(fā)明的一個(gè)或多個(gè)實(shí)施例涉及用于運(yùn)行指令的方法和處理器、用于對(duì)指令進(jìn)行編碼的方法和裝置以及用于其的記錄介質(zhì)。
【背景技術(shù)】
[0002]基于處理器的設(shè)備的電力效率已經(jīng)變得更加重要,并且特別是,電池操作設(shè)備的電力效率已經(jīng)變成需要高度關(guān)注的核心問題。因此,已經(jīng)進(jìn)行研究以提高此類設(shè)備的電力效率。
[0003]提高各種設(shè)備的電力效率的方法的示例包括設(shè)計(jì)使用低功率的單獨(dú)電路設(shè)備的方法和設(shè)計(jì)管理功耗的處理器的方法。
[0004]然而,當(dāng)單獨(dú)電路設(shè)備被設(shè)計(jì)并實(shí)施時(shí),由于額外硬件的使用而發(fā)生額外功耗。另夕卜,當(dāng)單獨(dú)指令被添加來設(shè)計(jì)過程以便管理功耗時(shí),將處理的指令的總尺寸增加。
[0005]發(fā)明公開
[0006]技術(shù)問題
[0007]當(dāng)單獨(dú)電路設(shè)備被設(shè)計(jì)并實(shí)施時(shí),由于額外硬件的使用而發(fā)生額外功耗。另外,當(dāng)單獨(dú)指令被添加來設(shè)計(jì)過程以便管理功耗時(shí),將處理的指令的總尺寸增加。
[0008]解決方案
[0009]本發(fā)明的一個(gè)或多個(gè)實(shí)施例包括用于運(yùn)行指令的方法和處理器、用于對(duì)指令進(jìn)行編碼的方法和裝置以及用于其的記錄介質(zhì)。
[0010]有益效果
[0011]可以高效地設(shè)計(jì)在處理器中用于同時(shí)運(yùn)行多個(gè)指令的多個(gè)槽位(slot)。
【附圖說明】
[0012]這些和/或其他方面從下文結(jié)合附圖對(duì)實(shí)施例的描述中將變得清楚并且更加容易理解,其中:
[0013]圖1是根據(jù)本發(fā)明的實(shí)施例的指令存儲(chǔ)器系統(tǒng)的方框圖;
[0014]圖2是根據(jù)本發(fā)明的實(shí)施例的用于運(yùn)行指令的系統(tǒng)的方框圖;
[0015]圖3是示出根據(jù)本發(fā)明的實(shí)施例的用于對(duì)指令進(jìn)行編碼的方法的流程圖;
[0016]圖4是示出根據(jù)本發(fā)明的實(shí)施例生成的指令的結(jié)構(gòu)的示圖;
[0017]圖5是示出根據(jù)本發(fā)明的實(shí)施例的用于運(yùn)行指令的方法的流程圖;
[0018]圖6是示出根據(jù)本發(fā)明的實(shí)施例的用于基于指令執(zhí)行操作的方法的流程圖;
[0019]圖7是示出根據(jù)本發(fā)明的實(shí)施例的用于將指令分配給第一復(fù)用器中所包括的至少一個(gè)槽位的方法的表格;
[0020]圖8是示出根據(jù)本發(fā)明的實(shí)施例的用于在處理器中運(yùn)行至少一個(gè)指令的方法的示圖;
[0021]圖9是根據(jù)本發(fā)明的實(shí)施例的用于對(duì)指令進(jìn)行編碼的裝置的方框圖;并且
[0022]圖10是根據(jù)本發(fā)明的實(shí)施例的處理器的方框圖。
[0023]最佳實(shí)施方式
[0024]本發(fā)明的一個(gè)或多個(gè)實(shí)施例包括用于運(yùn)行指令的方法和處理器、用于對(duì)指令進(jìn)行編碼的方法和裝置以及用于其的記錄介質(zhì)。
[0025]額外方面將在下文描述中部分地闡述并且部分將從描述中顯然,或者可以通過實(shí)踐呈現(xiàn)的實(shí)施例了解。
[0026]根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,一種用于在處理器中運(yùn)行指令的方法包括:基于多個(gè)指令中的每一個(gè)中所包括的停止位來獲取在預(yù)定周期中運(yùn)行的至少一個(gè)指令;從所述至少一個(gè)指令提取類型碼,所述類型碼包括基于所述至少一個(gè)指令執(zhí)行的操作的類型信息;基于所提取的類型碼來將所述至少一個(gè)指令分配給第一復(fù)用器的至少一個(gè)槽位;以及執(zhí)行所述所分配的槽位中的所述操作。
[0027]所述至少一個(gè)指令的獲取可包括:當(dāng)?shù)谝恢噶钪兴ǖ耐V刮痪哂械谝恢禃r(shí),在所述預(yù)定周期中獲取作為第一指令之后的下一個(gè)指令的第二指令;以及當(dāng)?shù)谝恢噶钪兴ǖ乃鐾V刮痪哂械诙禃r(shí),在所述預(yù)定周期之后的下一個(gè)周期中獲取第二指令。
[0028]所述操作的執(zhí)行可包括:將電力供應(yīng)給第一復(fù)用器的所述至少一個(gè)槽位中的所分配的槽位;并且中斷供應(yīng)給第一復(fù)用器的所述至少一個(gè)槽位中所分配的槽位之外的所有槽位的電力。
[0029]所述操作的執(zhí)行可包括:基于操作數(shù)的類型信息在至少一個(gè)寄存器中選擇用于獲取操作數(shù)的寄存器;以及從選定寄存器獲取所述操作數(shù)。
[0030]所述寄存器的選擇可包括:將電力供應(yīng)給使所述選定寄存器與第一復(fù)用器的所分配的槽位相連接的第二復(fù)用器的槽位;以及中斷供應(yīng)給使所述至少一個(gè)寄存器中的未選定寄存器與第一復(fù)用器的所分配的槽位相連接的第三復(fù)用器的槽位的電力。
[0031]根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,一種用于在設(shè)備中對(duì)指令進(jìn)行編碼的方法包括:生成類型碼,所述類型碼包括在處理器中可執(zhí)行的預(yù)定操作的類型信息和在預(yù)定操作中處理的操作數(shù)的類型信息;生成停止位,所述停止位包括關(guān)于在預(yù)定周期中執(zhí)行的至少一個(gè)操作的信息;以及基于所述類型碼和所述停止位來生成用于執(zhí)行預(yù)定操作的指令。
[0032]所述停止位的生成可包括:當(dāng)在所述預(yù)定周期中執(zhí)行作為第一指令之后的下一個(gè)指令的第二指令時(shí),在所述停止位中表示第一值;以及當(dāng)在所述預(yù)定周期之后的下一個(gè)周期中運(yùn)行第二指令時(shí),在所述停止位中表示第二值。
[0033]根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,一種運(yùn)行指令的處理器包括:輸入單元,其被配置來基于多個(gè)指令中的每一個(gè)中所包括的停止位來獲取在預(yù)定周期中運(yùn)行的至少一個(gè)指令;控制單元,其被配置來從所述至少一個(gè)指令提取類型碼,所述類型碼包括基于所述至少一個(gè)指令執(zhí)行的操作的類型信息,并且基于所提取的類型碼將所述至少一個(gè)指令分配給第一復(fù)用器的至少一個(gè)槽位;以及操作單元,其被配置來執(zhí)行所述所分配的槽位中的所述操作。
[0034]當(dāng)?shù)谝恢噶钪兴ǖ耐V刮痪哂械谝恢禃r(shí),所述輸入單元可在所述預(yù)定周期中獲取作為第一指令之后的下一個(gè)指令的第二指令;以及當(dāng)?shù)谝恢噶钪兴ǖ乃鐾V刮痪哂械诙禃r(shí),可在所述預(yù)定周期之后的下一個(gè)周期中獲取第二指令。
[0035]所述操作單元可將電力供應(yīng)給第一復(fù)用器的所述至少一個(gè)槽位中的所分配的槽位,并且中斷供應(yīng)給第一復(fù)用器的所述至少一個(gè)槽位中所分配的槽位之外的所有槽位的電力。
[0036]所述操作單元可基于所述操作數(shù)的所述類型信息在至少一個(gè)寄存器中選擇用于獲取所述操作數(shù)的寄存器,并且從所述選定寄存器獲取所述操作數(shù)。
[0037]所述操作單元可將電力供應(yīng)給使所述選定寄存器與第一復(fù)用器的所分配的槽位相連接的第二復(fù)用器的槽位,并且中斷供應(yīng)給使所述至少一個(gè)寄存器中的未選定寄存器與第一復(fù)用器的所分配的槽位相連接的第三復(fù)用器的槽位的電力。
[0038]所述操作單元可在連接到第一復(fù)用器的所分配的槽位的至少一個(gè)操作執(zhí)行單元中選擇執(zhí)行所述操作的操作執(zhí)行單元,并且可基于所獲取的操作數(shù)來在所述選定操作執(zhí)行單元中執(zhí)行所述操作。
[0039]根據(jù)本發(fā)明的一個(gè)或多個(gè)實(shí)施例,一種用于運(yùn)行指令的裝置包括:代碼生成單元,其被配置來生成類型碼,所述類型碼包括在處理器中可執(zhí)行的預(yù)定操作的類型信息和在所述預(yù)定操作中處理的操作數(shù)的類型信息;停止位生成單元,其被配置來生成停止位,所述停止位包括關(guān)于在預(yù)定周期中執(zhí)行的至少一個(gè)操作的信息;以及指令生成單元,其被配置來基于所述類型碼和所述停止位來生成用于執(zhí)行所述預(yù)定操作的指令。
[0040]當(dāng)在所述預(yù)定周期中運(yùn)行作為第一指令之后的下一個(gè)指令的第二指令時(shí),所述停止位生成單元可在所述停止位中表示第一值,以及當(dāng)在所述預(yù)定周期之后的下一個(gè)周期中運(yùn)行第二指令時(shí),可在所述停止位中表示第二值。
【具體實(shí)施方式】
[0041]現(xiàn)將詳細(xì)參考實(shí)施例,這些實(shí)施例的示例在附圖中示出,其中遍及附圖相同參考數(shù)字指代相同元素。在此方面,本發(fā)明的實(shí)施例可以具有不同的形式并且不應(yīng)被解釋為限制于在此闡述的描述。因此,這些實(shí)施例僅是通過參考附圖在下文描述以解釋本發(fā)明的多個(gè)方面。如本文所使用,術(shù)語(yǔ)“和/或”包括一個(gè)或多個(gè)相關(guān)所列項(xiàng)目的任何和所有組合。諸如“……中的至少一個(gè)”的表達(dá)當(dāng)在元素列表之后時(shí),修飾整個(gè)元素列表而不是修飾所述列表的單獨(dú)元素。
[0042]下文將參考附圖詳細(xì)地描述本發(fā)明的實(shí)施例以便本領(lǐng)域普通技術(shù)人員可容易實(shí)施本發(fā)明的實(shí)施例。在此方面,本發(fā)明的實(shí)施例可以具有不同的形式并且不應(yīng)被解釋為限于在此闡述的這些描述。另外,為了對(duì)本發(fā)明的實(shí)施例的清楚描述,與本發(fā)明的實(shí)施例的描述不相關(guān)的部分將在圖中被省略,并且遍及本說明書,相同參考標(biāo)號(hào)將表示相同元素。
[0043]應(yīng)理解當(dāng)一元素被稱為是“連接到”另一個(gè)元素時(shí),它能夠直接連接到其他元素或可在其間介入其它元素時(shí)電連接到其他元素。還將理解,術(shù)語(yǔ)“包括”、“包含”和“具有”在本文使用時(shí),指定所述元素的存在,但并不排除其他元素件的存在或添加,除非另外定義。
[0044]在下文中,本發(fā)明的實(shí)施例將參考附圖詳細(xì)地描述。
[0045]圖1是根據(jù)本發(fā)明的實(shí)施例的指令存儲(chǔ)器系統(tǒng)10的方框圖。
[0046]在圖1的指令存儲(chǔ)器系統(tǒng)10中,僅示出與本實(shí)施例有關(guān)的組件。因此,本領(lǐng)域那些或普通技術(shù)人員將理解,指令存儲(chǔ)器系統(tǒng)10還可包括除圖1所示的組件之外的其他通用組件。
[0047]參考圖1,指令存儲(chǔ)器系統(tǒng)10可包括指令編碼裝置100、外部存儲(chǔ)器15和指令高速緩沖存儲(chǔ)器18。
[0048]指令存儲(chǔ)器系統(tǒng)10可基于存儲(chǔ)在外部存儲(chǔ)器15中的用于定義指令的編碼信息來生成指令。在本文中,指令編碼裝置100可以是編譯器。然而,這僅僅是本發(fā)明的實(shí)施例,并且指令編碼裝置100可以是可根據(jù)本發(fā)明的實(shí)施例生成指令的任何設(shè)備。
[0049]根據(jù)本發(fā)明的實(shí)施例,指令編碼裝置100可基于編碼信息生成將在超長(zhǎng)指令字(VLIW)處理器中運(yùn)行的指令。VLIW是用于執(zhí)行同時(shí)運(yùn)行多個(gè)指令的操作的設(shè)備中的一種。根據(jù)本發(fā)明的實(shí)施例的指令編碼裝置100可基于從外部存儲(chǔ)器15獲取的編碼信息和預(yù)定條件來生成指令。例如,當(dāng)指令編碼裝置100生成在VLIW處理器中同時(shí)執(zhí)行的多個(gè)指令時(shí),條件可被如此設(shè)定使得執(zhí)行標(biāo)量操作的指令(在下文中,稱為標(biāo)量指令)必須在執(zhí)行矢量操作的指令(在下文中,稱為矢量指令)之前生成。也就是,當(dāng)必須在當(dāng)前第一周期中執(zhí)行一個(gè)標(biāo)量操作和兩個(gè)矢量操作時(shí),指令編碼裝置100可按照標(biāo)量指令、第一矢量指令和第二矢量指令的次序生成多個(gè)指令。
[0050]當(dāng)指令編碼裝置100基于預(yù)定條件生成指令時(shí),可以高效地設(shè)計(jì)處理器中用于同時(shí)運(yùn)行多個(gè)指令的多個(gè)槽位。稍后將參考圖8詳細(xì)地描述這種情況。
[0051]外部存儲(chǔ)器15可存儲(chǔ)根據(jù)本發(fā)明的實(shí)施例用于定義指令的編碼信息。例如,指令可包括:操作碼、基于操作碼處理的操作數(shù)的地址碼、或存儲(chǔ)操作結(jié)果的結(jié)果值的地址碼。所述指令中所包括的詳細(xì)信息(例如,執(zhí)行預(yù)定功能的代碼)可根據(jù)操作而變化,所述操作根據(jù)所述指令來執(zhí)行。
[0052]根據(jù)本發(fā)明的實(shí)施例的指令的結(jié)構(gòu)還可包括除操作碼、操作數(shù)的地址和結(jié)果值的地址碼之外的類型碼和停止位。
[0053]類型碼可包括基于指令執(zhí)行的操作的類型信息。在本文中,操作的類型可包括標(biāo)量操作或矢量操作。另外,類型碼可包括基于指令執(zhí)行的操作數(shù)的類型信息。在本文中,操作數(shù)的類型可包括標(biāo)量數(shù)據(jù)或矢量數(shù)據(jù)。
[0054]指令中所包括的至少一個(gè)代碼或位可根據(jù)指令的預(yù)定結(jié)構(gòu)來布置。在下文中,例如,假設(shè)停止位被部署在構(gòu)成指令的多個(gè)位中的第一位,并且類型碼被部署在其最后一位。然而,這僅僅是本發(fā)明的實(shí)施例,并且本發(fā)明的實(shí)施例不限于此。
[0055]圖2是根據(jù)本發(fā)明的實(shí)施例的用于運(yùn)行指令的系統(tǒng)20的方框圖。
[0056]在圖2的系統(tǒng)20中,僅示出與本實(shí)施例有關(guān)的組件。因此,本領(lǐng)域那些或普通技術(shù)人員將理解,系統(tǒng)20還可包括除圖2所示的組件之外的其他通用組件。
[0057]參考圖2,系統(tǒng)20可包括指令隊(duì)列22、第一寄存器24、第二寄存器26和處理器200。
[0058]指令隊(duì)列22可包括在處理器200中可運(yùn)行的多個(gè)指令。根據(jù)本發(fā)明的實(shí)施例,指令隊(duì)列22可從圖1所示的指令存儲(chǔ)器系統(tǒng)10的指令高速緩沖存儲(chǔ)器18接收指令。根據(jù)另一個(gè)實(shí)施例,指令隊(duì)列22可獲取存儲(chǔ)在外部設(shè)備中的指令。
[0059]指令可基于由指令編碼裝置100生成的指令的次序來存儲(chǔ)在指令隊(duì)列22中。例如,當(dāng)指令編碼裝置100按照標(biāo)量指令、第一矢量指令和第二矢量指令的次序生成多個(gè)指令時(shí),多個(gè)指令可按照標(biāo)量指令、第一矢量指令和第二矢量指令的次序存儲(chǔ)在指令隊(duì)列22中。
[0060]指令隊(duì)列22可同時(shí)輸出預(yù)定數(shù)量的指令。例如,當(dāng)預(yù)定數(shù)量是4時(shí),指令隊(duì)列22可同時(shí)輸出第一標(biāo)量指令、第二標(biāo)量指令、第一矢量指令和第二矢量指令。
[0061]處理器200可從指令隊(duì)列22中輸出的多個(gè)指令中獲取將在預(yù)定周期中運(yùn)行的至少一個(gè)指令。根據(jù)本發(fā)明的實(shí)施例的處理器200可基于從指令隊(duì)列22輸出的多個(gè)指令中的每一個(gè)中所包括的停止位來確定將在預(yù)定周期中運(yùn)行的至少一個(gè)指令。
[0062]另外,處理器200可基于將在預(yù)定周期中運(yùn)行的指令來執(zhí)行操作。處理器200可通過分析指令中所包括的操作碼、操作數(shù)的地址碼和結(jié)果值的地址碼來執(zhí)行操作。
[0063]根據(jù)本發(fā)明的實(shí)施例的處理器200可基于指令中所包括的類型碼來確定用于運(yùn)行所述指令的槽位。例如,處理器200可通過所確定的槽位從指令隊(duì)列22獲取指令。在本文中,處理器200中所包括的第一復(fù)用器可包括用于從指令隊(duì)列22獲取至少一個(gè)指令的至少一個(gè)槽位。
[0064]由處理器200確定的槽位可包括使預(yù)定寄存器與第一復(fù)用器的槽位相連接的至少一個(gè)復(fù)用器,所述預(yù)定寄存器存儲(chǔ)基于指令處理的操作數(shù)。在以下描述中,假設(shè)處理器200包括第二復(fù)用器和第三復(fù)用器。
[0065]第一寄存器24和第二寄存器26可存儲(chǔ)基于處理器200獲取的指令處理的操作數(shù)。存儲(chǔ)操作數(shù)的寄存器的地址信息可被存儲(chǔ)在處理器200中。
[0066]根據(jù)存儲(chǔ)在第一寄存器24和第二寄存器26中的每一個(gè)中的操作數(shù)的類型,第一寄存器24和第二寄存器26可被分類為矢量寄存器和標(biāo)量寄存器。例如,當(dāng)標(biāo)量數(shù)據(jù)被存儲(chǔ)器在第一寄存器24中時(shí),第一寄存器24可以是標(biāo)量寄存器。另外,當(dāng)矢量數(shù)據(jù)被存儲(chǔ)在第二寄存器26中時(shí),第二寄存器26可以是矢量寄存器。
[0067]圖3是示出根據(jù)本發(fā)明的實(shí)施例的用于對(duì)指令進(jìn)行編碼的方法的流程圖。
[0068]在操作310中,指令編碼裝置100可生成包括預(yù)定操作的類型信息和操作數(shù)的類型信息的類型碼。在本文中,操作的類型可包括標(biāo)量操作或矢量操作。另外,操作數(shù)的類型可包括標(biāo)量數(shù)據(jù)或矢量數(shù)據(jù)。
[0069]例如,根據(jù)本發(fā)明的實(shí)施例的指令可包括32位。關(guān)于操作類型的信息可由32位指令的第32位表示。例如,當(dāng)由指令執(zhí)行的操作是標(biāo)量操作時(shí),第32位可以是O。另外,當(dāng)由指令執(zhí)行的操作是矢量操作時(shí),第32位可以是I。然而,這僅僅是本發(fā)明的實(shí)施例,并且關(guān)于操作類型的信息不限于在第32位中表示。例如,關(guān)于操作類型的信息可由兩個(gè)或更多個(gè)位表示,并且關(guān)于操作類型的信息可在第32位之外的位中表示。另外,例如,指示標(biāo)量操作的位可表示為I,并且指示矢量操作的位可表示為O。
[0070]根據(jù)本發(fā)明的實(shí)施例,關(guān)于操作數(shù)的類型的信息可由32位指令的預(yù)定數(shù)量的位表示。當(dāng)由指令執(zhí)行的操作是標(biāo)量操作時(shí),操作數(shù)可以是標(biāo)量數(shù)據(jù)。當(dāng)由指令執(zhí)行的操作是矢量操作時(shí),操作數(shù)可僅包括矢量數(shù)據(jù)或可包括矢量數(shù)據(jù)和標(biāo)量數(shù)據(jù)兩者。
[0071]在標(biāo)量操作的情況下,因?yàn)椴僮鲾?shù)是標(biāo)量數(shù)據(jù),所以操作數(shù)的類型可不通過額外使用指示標(biāo)量操作的第32位之外的位來表示。在矢量操作的情況下,當(dāng)操作數(shù)僅包括矢量數(shù)據(jù)時(shí),例如,第27位可表示為O。另外,在矢量操作的情況下,當(dāng)操作數(shù)包括矢量數(shù)據(jù)和標(biāo)量數(shù)據(jù)兩者時(shí),第27位可表示為I。
[0072]在操作320中,指令編碼裝置100可生成停止位,所述停止位包括關(guān)于在預(yù)定周期中執(zhí)行的至少一個(gè)操作的信息。停止位可用來從多個(gè)操作中確定將在預(yù)定周期中執(zhí)行的至少一個(gè)操作。
[0073]例如,在實(shí)施例中,在VLIW處理器中同時(shí)可運(yùn)行的指令的最大數(shù)量可以是4個(gè)。當(dāng)四個(gè)指令中的每一個(gè)中所包括的停止位是例如OOll時(shí),可在預(yù)定周期中執(zhí)行三個(gè)操作。根據(jù)本發(fā)明的實(shí)施例,當(dāng)停止位具有第一值(例如O)時(shí),可在預(yù)定周期中執(zhí)行預(yù)定操作之后的下一個(gè)操作。另一方面,當(dāng)停止位具有第二值(例如I)時(shí),可在預(yù)定周期之后的下一個(gè)周期中執(zhí)行預(yù)定操作之后的下一個(gè)操作。
[0074]根據(jù)本發(fā)明的實(shí)施例的指令編碼裝置100可在構(gòu)成指令的多個(gè)位中的第一位中表示停止位。然而,這僅僅是本發(fā)明的實(shí)施例,并且本發(fā)明的實(shí)施例不限于此。
[0075]在操作330中,指令編碼裝置100可基于所生成的類型碼和停止位來生成用于執(zhí)行預(yù)定操作的指令。
[0076]指令編碼裝置100可通過根據(jù)指令的預(yù)定結(jié)構(gòu)部署類型碼和停止位來生成指令。在本文中,所述指令可包括:操作碼、基于操作碼處理的操作數(shù)的地址碼和存儲(chǔ)操作結(jié)果的結(jié)果值的地址碼。指令中所包括的詳細(xì)信息(例如,執(zhí)行預(yù)定功能的代碼)可根據(jù)操作而變化,所述操作由所述指令執(zhí)行。
[0077]圖4是示出根據(jù)本發(fā)明的實(shí)施例生成的指令的結(jié)構(gòu)的圖。
[0078]參考圖4,在實(shí)施例中,圖4中示出第(η-1)個(gè)指令420、第(η)個(gè)指令440和第(n+1)個(gè)指令460。在本文中,可在同一周期中從指令隊(duì)列22(見圖2)輸出第(n-1)個(gè)指令420、第(η)個(gè)指令440、第(n+1)個(gè)指令460和第(n+2)個(gè)指令(未示出)。
[0079]例如,根據(jù)本發(fā)明的實(shí)施例的指令可包括32位。基于指令的預(yù)定結(jié)構(gòu),停止位的值可在32位中的位0(第一位)中表示。包括關(guān)于操作類型的信息和關(guān)于操作數(shù)的類型的信息的類型碼可在多個(gè)位中表示,例如,位31 (第32位)至位26(第27位)或位31至位27(第28位)。詳細(xì)地,基于指令執(zhí)行的操作的類型信息可在位31中表示。在本文中,當(dāng)位31的值是O時(shí),操作是標(biāo)量操作,并且當(dāng)位31的值是I時(shí),操作是矢量操作。另外,操作數(shù)的類型信息可在多個(gè)位中表示,例如,位30(第31位)至位27(第28位)或位30至位26(第27位)。將參考每個(gè)指令的結(jié)構(gòu)詳細(xì)描述操作數(shù)的類型信息。
[0080]參考圖4,在實(shí)施例中,類型碼421可在第(η-1)個(gè)指令420的多個(gè)位中表示,例如,位31至位27(第28位)。在圖4中,第(η-1)個(gè)指令420的位31的值是O。當(dāng)位31的值是O時(shí),基于第(η-1)個(gè)指令420執(zhí)行的操作可以是標(biāo)量操作。第(η-1)個(gè)指令420的位30至位27的值是O。在標(biāo)量操作的情況下,操作數(shù)總是標(biāo)量數(shù)據(jù)。在標(biāo)量操作的情況下,可以不單獨(dú)設(shè)定用于標(biāo)識(shí)操作數(shù)類型的信息。然而,這僅僅是本發(fā)明的實(shí)施例,第(η-1)個(gè)指令420中的位30至位27的值可被設(shè)定為O以指示操作數(shù)是標(biāo)量數(shù)據(jù)。
[0081 ] 操作碼423可在第(η-1)個(gè)指令420的位26至位19(第20位)中表示。另外,存儲(chǔ)操作數(shù)的寄存器的地址425和427可在第(η-1)個(gè)指令420的位18(第19位)至位13(第14位)和位6(第7位)至位1(第二位)中表示。存儲(chǔ)操作結(jié)果的結(jié)果值的地址426可在第(η-1)個(gè)指令420的位12(第13位)至位7(第8位)中表示。
[0082]停止位的值可在32位中的位0(第一位428)中表示。因?yàn)镺在第(η-1)個(gè)指令420的位0(第一位428)中表示為停止位的值,所以可在處理器200的預(yù)定周期中獲取第(η)個(gè)指令440,所述第(η)個(gè)指令440是作為當(dāng)前指令的第(η-1)個(gè)指令420之后的下一個(gè)指令。
[0083]類型碼可在第(η)個(gè)指令440的多個(gè)位中表示,例如,位31至位27 (第28位)。例如,第(η)個(gè)指令440的位31的值是I。當(dāng)位31的值是I時(shí),基于第(η)個(gè)指令440執(zhí)行的操作的類型可以是矢量操作。第(η)個(gè)指令440的位30至位27的值是O。在矢量操作的情況下,操作數(shù)可包括矢量數(shù)據(jù)和標(biāo)量數(shù)據(jù)兩者或可僅包括矢量數(shù)據(jù)。第(η)個(gè)指令440的位30至位27的值可設(shè)定為O以指示操作數(shù)僅包括矢量數(shù)據(jù)。
[0084]操作碼可在第(η)個(gè)指令440的位26至位18(第19位)中表示。另外,存儲(chǔ)操作數(shù)的寄存器的地址可在第(η)個(gè)指令440的位17(第18位)至位13(第14位)和位5(第6位)至位I(第二位)中表示。存儲(chǔ)操作結(jié)果的結(jié)果值的地址446可在第(η)個(gè)指令440的位12(第13位)至位7 (第8位)中表示。
[0085]停止位的值可在32位中的位0(第一位448)中表示。因?yàn)镺在第(η)個(gè)指令440的位O(第一位448)中表示為停止位的值,所以可在處理器200的預(yù)定周期中獲取第(n+1)個(gè)指令460,所述第(n+1)個(gè)指令460是作為當(dāng)前指令的第(η)個(gè)指令440之后的下一個(gè)指令。
[0086]類型碼461可在第(n+1)個(gè)指令460的多個(gè)位中表示,例如,位31至位26(第27位)。例如,第(η+1)個(gè)指令460的位31的值是I。當(dāng)位31的值是I時(shí),基于第(η+1)個(gè)指令460執(zhí)行的操作可以是矢量操作。第(n+1)個(gè)指令460的位30至位27的值是O。在矢量操作的情況下,操作數(shù)可包括矢量數(shù)據(jù)和標(biāo)量數(shù)據(jù)兩者或可僅包括矢量數(shù)據(jù)。值0、0、0、1、0可分別在第(n+l)個(gè)指令460的位30至位26(第27位)中表示以指示操作數(shù)類型包括矢量數(shù)據(jù)和標(biāo)量數(shù)據(jù)兩者。
[0087]操作碼463可在第(n+1)個(gè)指令460的位25(第26位)至位19(第20位)中表示。另外,存儲(chǔ)操作數(shù)的寄存器的地址465和467可在第(n+1)個(gè)指令460的位18(第19位)至位13(第14位)和位5(第6位)至位1(第二位)中表示。存儲(chǔ)操作結(jié)果的結(jié)果值的地址466可在第(n+1)個(gè)指令460的位12至位7中表示。
[0088]停止位的值可在32位中的位O(第一位468)中表示。因?yàn)镮在第(n+1)個(gè)指令460的位0(第一位468)中表示為停止位的值,所以可在處理器200的預(yù)定周期中獲取第(n+2)個(gè)指令,所述第(n+2)個(gè)指令是作為當(dāng)前指令的第(n+1)個(gè)指令460之后的下一個(gè)指令。
[0089]圖5是示出根據(jù)本發(fā)明的實(shí)施例的用于運(yùn)行指令的方法的流程圖。
[0090]在操作510中,處理器200可基于多個(gè)指令中的每一個(gè)中所包括的停止位來獲取在預(yù)定周期中運(yùn)行的至少一個(gè)指令。
[0091]處理器200可基于從指令隊(duì)列22接收的多個(gè)指令中的每一個(gè)中所包括的停止位來在預(yù)定周期中獲取至少一個(gè)指令。在本文中,指令隊(duì)列22可在每個(gè)周期中輸出預(yù)定數(shù)量的指令。
[0092]當(dāng)由處理器200接收的第一指令中所包括的停止位具有第一值(例如O)時(shí),處理器200可在預(yù)定周期中獲取第二指令,所述第二指令是第一指令之后的下一個(gè)指令。在本文中,可以基于將多個(gè)指令存儲(chǔ)在指令隊(duì)列22中的次序來確定下一個(gè)指令。也就是,當(dāng)?shù)谝恢噶詈偷诙噶铐樞虻卮鎯?chǔ)在指令隊(duì)列22中時(shí),第二指令可以是第一指令之后的下一個(gè)指令。
[0093]當(dāng)由處理器200接收的第一指令中所包括的停止位具有第二值(例如I)時(shí),處理器200可在預(yù)定周期之后的下一個(gè)周期中獲取第二指令,所述第二指令是第一指令之后的下一個(gè)指令。也就是,當(dāng)停止位具有第二值時(shí),處理器200可在預(yù)定周期中獲取第一指令并且在下一個(gè)周期中獲取第二指令。
[0094]例如,處理器200可接收從指令隊(duì)列22輸出的四個(gè)指令(也就是,圖4所示的第(n-1)個(gè)指令420、第(η)個(gè)指令440、第(n+1)個(gè)指令460和第(n+2)個(gè)指令)。所接收的四個(gè)指令的停止位分別可以是0、0、1和I。在識(shí)別出預(yù)定周期中所接收的第(n-1)個(gè)指令420中所包括的停止位的值是O時(shí),處理器200可獲取作為第(η-1)個(gè)指令420之后的下一個(gè)指令的第(η)個(gè)指令440。在識(shí)別出第(η)個(gè)指令440的停止位的值是O時(shí),處理器200可獲取作為第(η)個(gè)指令440之后的下一個(gè)指令的第(n+1)個(gè)指令460。在識(shí)別出第(n+1)個(gè)指令460的停止位的值是I時(shí),處理器200可以不獲取作為第(n+1)個(gè)指令460之后的下一個(gè)指令的第(n+2)個(gè)指令。處理器200可在預(yù)定周期之后的下一個(gè)周期中獲取第(n+2)個(gè)指令。
[0095]在操作520中,處理器200可從至少一個(gè)指令提取類型碼,所述類型碼包括基于至少一個(gè)指令執(zhí)行的操作的類型信息。在本文中,操作可以是標(biāo)量操作或矢量操作。
[0096]處理器200可識(shí)別所提取的類型碼中所包括的操作類型信息。例如,在由第32位表示操作類型的指令的情況下,當(dāng)?shù)?2位的值是O時(shí),處理器200可將操作類型識(shí)別為標(biāo)量操作。另外,當(dāng)?shù)?2位的值是I時(shí),處理器200可將操作類型識(shí)別為矢量操作。
[0097]在操作530中,處理器200可基于所提取的類型碼來將至少一個(gè)指令分配給第一復(fù)用器的至少一個(gè)槽位。例如,當(dāng)?shù)谝粡?fù)用器包括四個(gè)槽位時(shí),處理器200可將執(zhí)行標(biāo)量操作的標(biāo)量指令分配給第一槽位和第二槽位。另外,處理器200可將執(zhí)行矢量操作的矢量指令分配給第三槽位和第四槽位。
[0098]參考圖4,處理器200可獲取第(η-1)個(gè)指令420、第(η)個(gè)指令440和第(n+1)個(gè)指令460。在本文中,第(η-1)個(gè)指令420是標(biāo)量指令,第(η)個(gè)指令440是矢量指令,并且第(n+1)個(gè)指令460是矢量指令。處理器200可將第(n-1)個(gè)指令420分配給第一復(fù)用器的第一槽位。另外,處理器200可將第(η)個(gè)指令440分配給第一復(fù)用器的第三槽位并且將第(n+1)個(gè)指令460分配給第一復(fù)用器的第四槽位。
[0099]在操作540中,處理器200可執(zhí)行所分配的槽位中的操作。處理器200可將電力供應(yīng)給第一復(fù)用器的至少一個(gè)槽位中分配有指令的槽位。因?yàn)樵诓僮?30中將指令分配給四個(gè)槽位中的第一槽位、第三槽位和第四槽位,所以處理器200可將電力供應(yīng)給第一槽位、第三槽位和第四槽位。
[0100]另一方面,處理器200可中斷對(duì)第一復(fù)用器的至少一個(gè)槽位中分配有指令的槽位之外的槽位的電力供應(yīng)。例如,因?yàn)樵诓僮?30中沒有將指令分配給四個(gè)槽位中的第二槽位,所以處理器200可中斷對(duì)第二槽位的電力供應(yīng)。因?yàn)閮H將電力供應(yīng)給多個(gè)槽位中分配有指令的槽位,并且不將電力供應(yīng)給未分配指令的槽位,所以可以高效地使用電力。
[0101]圖6是示出根據(jù)本發(fā)明的實(shí)施例的用于基于指令執(zhí)行操作的方法的流程圖。
[0102]在操作610中,處理器200可基于從至少一個(gè)指令提取的類型碼來將至少一個(gè)指令分配給第一復(fù)用器的至少一個(gè)槽位。例如,當(dāng)?shù)谝粡?fù)用器包括四個(gè)槽位時(shí),處理器200可將執(zhí)行標(biāo)量操作的標(biāo)量指令分配給第一槽位和第二槽位。另外,處理器200可將執(zhí)行矢量操作的矢量指令分配給第三槽位和第四槽位。
[0103]在操作620中,處理器200可基于類型碼中所包括的操作數(shù)的類型信息來在至少一個(gè)寄存器中選擇用于獲取操作數(shù)的寄存器。在本文中,操作數(shù)可包括標(biāo)量數(shù)據(jù)或矢量數(shù)據(jù)。[0?04]在標(biāo)量指令的情況下,操作數(shù)是標(biāo)量數(shù)據(jù)。因此,處理器200可選擇存儲(chǔ)標(biāo)量數(shù)據(jù)的標(biāo)量寄存器。在矢量指令的情況下,操作數(shù)可以是標(biāo)量數(shù)據(jù)或矢量數(shù)據(jù)。例如,矢量指令可包括僅處理作為操作數(shù)的矢量數(shù)據(jù)的第一矢量指令和處理作為操作數(shù)的矢量數(shù)據(jù)和標(biāo)量數(shù)據(jù)兩者的第二矢量指令。因此,處理器200可基于表示操作數(shù)的類型信息的類型碼來識(shí)別在預(yù)定矢量指令中處理的操作數(shù)的類型。
[0105]在操作630中,處理器200可確定是否選擇了至少一個(gè)寄存器。
[0106]在操作640中,處理器200可將電力供應(yīng)給使選定寄存器與第一復(fù)用器的所分配槽位相連接的第二復(fù)用器的槽位。在本文中,第二復(fù)用器可包括使選定寄存器與第一復(fù)用器中所包括的至少一個(gè)槽位相連接的多個(gè)槽位。
[0107]在操作650中,處理器200可中斷供應(yīng)給第三復(fù)用器的使未選定寄存器與第一復(fù)用器的所分配槽位相連接的槽位的電力。在本文中,第三復(fù)用器可包括使未選定寄存器與第一復(fù)用器中所包括的至少一個(gè)槽位相連接的多個(gè)槽位。
[0108]根據(jù)本發(fā)明的實(shí)施例的處理器200中斷供應(yīng)給未在指令運(yùn)行過程中使用的第三復(fù)用器的槽位,進(jìn)而使得可能高效地使用電力。
[0109]在操作660中,處理器200可從選定寄存器獲取操作。處理器200可基于從預(yù)定指令提取的操作數(shù)的地址信息來從選定寄存器獲取操作數(shù)。
[0110]在操作670中,處理器200可從連接到第一復(fù)用器的所分配槽位的至少一個(gè)操作單元中選擇對(duì)應(yīng)于指令的操作單元。處理器200可提取預(yù)定指令中所包括的操作碼,并且基于所提取的操作碼來選擇操作單元。
[0111]在操作680中,處理器200可基于從選定操作單元獲取的操作數(shù)來執(zhí)行操作。基于指令中所包括的結(jié)果值的地址信息,處理器200可將結(jié)果值存儲(chǔ)在存儲(chǔ)器的對(duì)應(yīng)于地址信息的預(yù)定區(qū)域中,所述結(jié)果值通過執(zhí)行操作來生成。
[0112]圖7是示出根據(jù)本發(fā)明的實(shí)施例的用于將指令分配給第一復(fù)用器中所包括的至少一個(gè)槽位的方法的表格。
[0113]參考圖7,圖7的表格包括從指令隊(duì)列22輸出的多個(gè)指令、所述多個(gè)指令中的每一個(gè)中所包括的停止位以及關(guān)于根據(jù)多個(gè)指令中的每一個(gè)中所包括的停止位分配的第一復(fù)用器的槽位的信息。
[0114]指令隊(duì)列22可在同一周期中同時(shí)輸出預(yù)定數(shù)量的指令。例如,指令隊(duì)列22可同時(shí)輸出四個(gè)指令。
[0115]指令隊(duì)列22可輸出分別具有停止位0、0、0和I的第一標(biāo)量指令、第二標(biāo)量指令、第一矢量指令和第二矢量指令。處理器200可基于各個(gè)指令的停止位來將全部四個(gè)指令分配給第一復(fù)用器的槽位。當(dāng)預(yù)定指令的停止位的值是I時(shí),處理器200可在當(dāng)前周期中運(yùn)行預(yù)定指令并且在當(dāng)前周期之后的周期中運(yùn)行隨后的指令。因此,在分別具有停止位0、0、0和I的四個(gè)指令中,可將至最后次序的第二矢量指令的全部指令分配給第一復(fù)用器的槽位。
[0116]在另一個(gè)示例中,指令隊(duì)列22可輸出分別具有停止位0、0、I和X的第一標(biāo)量指令、第二標(biāo)量指令、第一矢量指令和X指令。在本文中,停止位是X的情況意味著停止位是O或I的情況。另外,X指令意指指令是標(biāo)量指令或矢量指令的情況。
[0117]在停止位具有值I的時(shí)間點(diǎn)之后,即使當(dāng)停止位具有值O或I時(shí),不會(huì)影響確定在當(dāng)前周期中輸出的指令。這是因?yàn)?,?dāng)預(yù)定指令的停止位是I時(shí),不在當(dāng)前周期中運(yùn)行預(yù)定指令之后的指令。
[0118]處理器200可將分別具有停止位0、0、I和X的四個(gè)指令(也就是,第一標(biāo)量指令、第二標(biāo)量指令、第一矢量指令和X指令)分配給第一復(fù)用器的槽位。
[0119]在另一個(gè)示例中,指令隊(duì)列22可輸出分別具有停止位0、1、χ和X的第一標(biāo)量指令、第二標(biāo)量指令和兩個(gè)X指令。處理器200可將分別具有停止位0、1、χ和X的四個(gè)指令中的第一標(biāo)量指令和第二標(biāo)量指令分配給第一復(fù)用器的槽位。
[0120]在另一個(gè)示例中,指令隊(duì)列22可輸出分別具有停止位0、0、I和X的第一標(biāo)量指令、第一矢量指令、第二標(biāo)量指令和X指令。處理器200可將分別具有停止位0、0、1和X的四個(gè)指令中的第一標(biāo)量指令、第一矢量指令和第二矢量指令分配給第一復(fù)用器的槽位。
[0121]在另一個(gè)示例中,指令隊(duì)列22可輸出分別具有停止位0、1、χ和X的第一標(biāo)量指令、第一矢量指令和兩個(gè)X指令。處理器200可將分別具有停止位0、1、χ和X的四個(gè)指令中的第一標(biāo)量指令和第一矢量指令分配給第一復(fù)用器的槽位。
[0122]在另一個(gè)示例中,指令隊(duì)列22可輸出分別具有停止位l、x、x和X的第一標(biāo)量指令和三個(gè)X指令。處理器200可將分別具有停止位l、x、x和X的四個(gè)指令中的第一標(biāo)量指令分配給第一復(fù)用器的槽位。
[0123]在另一個(gè)示例中,指令隊(duì)列22可輸出分別具有停止位0、1、χ和X的第一矢量指令、第二矢量指令和兩個(gè)X指令。處理器200可將分別具有停止位0、1、χ和X的四個(gè)指令中的第一矢量指令和第二矢量指令分配給第一復(fù)用器的槽位。
[0124]在另一個(gè)示例中,指令隊(duì)列22可輸出分別具有停止位l、x、x和X的第一矢量指令和三個(gè)X指令。處理器200可將分別具有停止位l、x、x和X的四個(gè)指令中的第一矢量指令分配給第一復(fù)用器的槽位。
[0125]圖8是示出根據(jù)本發(fā)明的實(shí)施例的用于在處理器200中運(yùn)行至少一個(gè)指令的方法的示圖。如圖8所示,處理器200包括輸入單元(或輸入)210、控制單元(或控制器)230和操作單元(或操作器)250。
[0126]指令隊(duì)列22可包括在處理器200中可運(yùn)行的多個(gè)指令。指令可基于由指令編碼裝置100生成的指令的次序來存儲(chǔ)在指令隊(duì)列22中。
[0127]指令隊(duì)列22可同時(shí)輸出預(yù)定數(shù)量的指令。例如,當(dāng)預(yù)定數(shù)量是4時(shí),指令隊(duì)列22可同時(shí)輸出四個(gè)指令。在圖8中,指令隊(duì)列22可同時(shí)輸出第一標(biāo)量指令mul32、第一矢量指令v_and、第二矢量指令vs_add_w^P第二標(biāo)量指令and32。
[0128]從指令隊(duì)列22輸出的四個(gè)指令的停止位分別是0、0、1和I。當(dāng)停止位是I時(shí),可在當(dāng)前周期之后的下一個(gè)周期運(yùn)行在具有停止位I的指令之后的指令。處理器200可在預(yù)定周期中運(yùn)行從指令隊(duì)列22輸出的四個(gè)指令中的、停止位中首先表示I的第二矢量指令。也就是,處理器200可在預(yù)定周期中運(yùn)行第一標(biāo)量指令、第一矢量指令和第二矢量指令。
[0129]處理器200可從指令隊(duì)列22獲取第一標(biāo)量指令、第一矢量指令和第二矢量指令。處理器200可基于所獲取的每個(gè)指令中所包括的類型碼來將每個(gè)指令分配給第一復(fù)用器252的至少一個(gè)槽位。在本文中,第一復(fù)用器252可包括例如四個(gè)槽位,255-1至255-4。處理器200可將執(zhí)行標(biāo)量操作的標(biāo)量指令分配給四個(gè)槽位中的第一槽位255-1和第二槽位255-2。另外,處理器200可將執(zhí)行矢量操作的矢量指令分配給四個(gè)槽位中的第三槽位255-3和第四槽位255-4。例如,處理器200可將第一標(biāo)量指令分配給第一槽位255-1。另外,處理器200可將第一矢量指令分配給第三槽位255-3并且將第二矢量指令分配給第四槽位255-4。
[0130]處理器200可通過分析分配給槽位255-1、255_3和255_4中的每一個(gè)的指令中所包括的操作碼、操作數(shù)的地址碼和結(jié)果值的地址碼來執(zhí)行操作。
[0131]處理器200可基于預(yù)定指令中所包括的操作數(shù)的類型信息來在至少一個(gè)寄存器中選擇用于獲取操作數(shù)的寄存器24和26。具體地說,在可處理作為操作數(shù)的標(biāo)量數(shù)據(jù)和矢量數(shù)據(jù)兩者的矢量指令的情況下,處理器200可選擇存儲(chǔ)標(biāo)量數(shù)據(jù)的標(biāo)量寄存器24和存儲(chǔ)矢量數(shù)據(jù)的矢量寄存器26中的至少一種。
[0132]例如,處理器200可運(yùn)行僅處理作為操作數(shù)的矢量數(shù)據(jù)的第一矢量指令。參考圖8,可將第一矢量指令分配給第三槽位255-3。首先,處理器200可使第三槽位255-3與矢量寄存器26相連接以便運(yùn)行第一矢量指令。因?yàn)榈谝皇噶恐噶畈恍枰獦?biāo)量操作數(shù),所以處理器200可中斷對(duì)使標(biāo)量寄存器與第三槽位255-3相連接的第三復(fù)用器254的電力供應(yīng)。
[0133]在另一個(gè)示例中,處理器200可運(yùn)行處理作為操作數(shù)的矢量數(shù)據(jù)和標(biāo)量數(shù)據(jù)兩者的第二矢量指令。參考圖8,可將第二矢量指令分配給第四槽位。首先,處理器200可使第四槽位與矢量寄存器相連接以便運(yùn)行第二矢量指令。因?yàn)椴煌诘谝皇噶恐噶?,第二矢量指令需要?biāo)量操作數(shù),所以處理器200可使標(biāo)量寄存器與第四槽位相連接。根據(jù)本發(fā)明的實(shí)施例的處理器200可將電力供應(yīng)給使標(biāo)量寄存器與第四槽位255-4相連接的第二復(fù)用器253。處理器200可將分配給各個(gè)槽位255-1、255-2、255-3和255-4的各個(gè)指令發(fā)送給對(duì)應(yīng)于各個(gè)槽位255-1、255-2、255-3 和 255-4 的解碼單元 256-1、256-2、256-3 和 256-4。例如,處理器 200可將分配給第一槽位255-1的第一指令發(fā)送給對(duì)應(yīng)于第一槽位255-1的第一標(biāo)量指令解碼單元256-1。第一標(biāo)量指令解碼單元256-1可分析第一標(biāo)量指令中所包括的操作碼,并且將第一標(biāo)量指令發(fā)送給對(duì)應(yīng)于第一標(biāo)量指令的操作執(zhí)行單元260。
[0134]根據(jù)本發(fā)明的實(shí)施例,操作執(zhí)行單元260可分析解碼單元256-1、256-2、256-3和256-4中所包括的各個(gè)指令中所包括的操作碼,并且執(zhí)行對(duì)應(yīng)于各個(gè)指令的操作。在本文中,操作執(zhí)行單元260可包括可執(zhí)行各種操作的單元。操作執(zhí)行單元260中所包括的各個(gè)單元可執(zhí)行對(duì)應(yīng)于從解碼單元256-1、256-2、256-3和256-4接收的各個(gè)指令的操作。
[0135]圖9是根據(jù)本發(fā)明的實(shí)施例的指令編碼裝置100的方框圖。
[0136]在圖9中,僅示出與本實(shí)施例有關(guān)的組件。因此,本領(lǐng)域那些或普通技術(shù)人員將理解,指令編碼裝置100還可包括除圖9所示的組件之外的其他通用組件。
[0137]參考圖9,指令編碼裝置100可包括代碼生成單元110、停止位生成單元130和指令生成單元150。
[0138]代碼生成單元110可生成類型碼,所述類型碼包括在處理器中可執(zhí)行的預(yù)定操作的類型信息和在預(yù)定操作中處理的操作數(shù)的類型信息。在本文中,操作可以是標(biāo)量操作或矢量操作。另外,操作數(shù)可包括標(biāo)量數(shù)據(jù)或矢量數(shù)據(jù)。
[0139]根據(jù)本發(fā)明的實(shí)施例的指令可包括32位。關(guān)于操作類型的信息可由32位指令的第32位表示。然而,這僅僅是本發(fā)明的實(shí)施例,并且關(guān)于操作類型的信息不限于在第32位中表示。例如,關(guān)于操作類型的信息可由兩個(gè)或更多個(gè)位表示,并且關(guān)于操作類型的信息可在第32位之外的位中表示。
[0140]根據(jù)本發(fā)明的實(shí)施例,關(guān)于操作數(shù)類型的信息可由32位指令的預(yù)定數(shù)量的位表示。當(dāng)由指令執(zhí)行的操作是標(biāo)量操作時(shí),操作數(shù)可以是標(biāo)量數(shù)據(jù)。當(dāng)由指令執(zhí)行的操作是矢量操作時(shí),操作數(shù)可僅包括矢量數(shù)據(jù)或可包括矢量數(shù)據(jù)和標(biāo)量數(shù)據(jù)兩者。
[0141]停止位生成單元130可生成停止位,所述停止位包括關(guān)于在預(yù)定周期中執(zhí)行的至少一個(gè)操作的信息。
[0142]當(dāng)在預(yù)定周期中運(yùn)行作為第一指令之后的下一個(gè)指令的第二指令時(shí),停止位生成單元130可在停止位中表示第一值,例如O。當(dāng)在預(yù)定周期之后的下一個(gè)周期中運(yùn)行第二指令時(shí),停止位生成單元130可在停止位中表示第二值,例如I。
[0143]例如,根據(jù)本發(fā)明的實(shí)施例在VLIW處理器中同時(shí)可運(yùn)行的指令的最大數(shù)量可以是4個(gè)。當(dāng)四個(gè)指令中的每一個(gè)中所包括的停止位是0011時(shí),可在預(yù)定周期中執(zhí)行三個(gè)操作。詳細(xì)地,在四個(gè)指令(也就是,第(m)個(gè)指令、第(m+Ι)個(gè)指令、第(m+2)個(gè)指令和第(m+3)個(gè)指令)中,首先具有停止位值I的指令是第(m+2)個(gè)指令。在這種情況下,可在預(yù)定周期之后的下一個(gè)周期中運(yùn)行作為第(m+2)個(gè)指令之后的下一個(gè)指令的第(m+3)個(gè)指令,并且可在預(yù)定周期中運(yùn)行第(m)個(gè)指令、第(m+Ι)個(gè)指令和第(m+2)個(gè)指令。
[0144]指令生成單元150可基于類型碼和停止位來生成用于執(zhí)行預(yù)定操作的指令。
[0145]指令生成單元150可通過根據(jù)指令的預(yù)定結(jié)構(gòu)布置類型碼和停止位來生成指令。在本文中,指令可包括:操作碼、基于所述操作碼處理的操作數(shù)的地址碼和存儲(chǔ)操作結(jié)果的結(jié)果值的地址碼。指令中所包括的詳細(xì)信息(例如,執(zhí)行預(yù)定功能的代碼)可根據(jù)操作而變化,所述操作由所述指令執(zhí)行。
[0146]圖10是根據(jù)本發(fā)明的實(shí)施例的處理器200的方框圖。
[0147]在圖10中,僅示出與本實(shí)施例有關(guān)的組件。因此,本領(lǐng)域那些或普通技術(shù)人員將理解,處理器200還可包括除圖10所示的組件之外的其他通用組件。
[0148]參考圖10,處理器200可包括輸入單元210、控制單元230和操作單元250。
[0149]輸入單元210可基于多個(gè)指令中的每一個(gè)中所包括的停止位來獲取在預(yù)定周期中運(yùn)行的至少一個(gè)指令。根據(jù)本發(fā)明的實(shí)施例,輸入單元210可基于從指令隊(duì)列22接收的多個(gè)指令中的每一個(gè)中所包括的停止位來在預(yù)定周期中獲取至少一個(gè)指令。在本文中,指令隊(duì)列22可在每個(gè)周期中輸出預(yù)定數(shù)量的指令。
[0150]當(dāng)由輸入單元210接收的第一指令中所包括的停止位具有第一值(例如O)時(shí),輸入單元210可在預(yù)定周期中獲取作為第一指令之后的下一個(gè)指令的第二指令。在本文中,可以基于將多個(gè)指令存儲(chǔ)在指令隊(duì)列22中的次序來確定下一個(gè)指令。也就是,當(dāng)?shù)谝恢噶詈偷诙噶铐樞虻卮鎯?chǔ)在指令隊(duì)列22中時(shí),第二指令可以是第一指令之后的下一個(gè)指令。
[0151]當(dāng)由輸入單元210接收的第一指令中所包括的停止位具有第二值(例如I)時(shí),輸入單元210可在預(yù)定周期之后的下一個(gè)周期中獲取作為第一指令之后的下一個(gè)指令的第二指令。也就是,當(dāng)停止位具有第二值時(shí),輸入單元210可在預(yù)定周期中獲取第一指令并且在下一個(gè)周期中獲取第二指令。
[0152]控制單元230可從至少一個(gè)指令提取類型碼,所述類型碼包括基于由輸入單元210所獲取的至少一個(gè)指令執(zhí)行的操作的類型信息。在本文中,操作可以是標(biāo)量操作或矢量操作。
[0153]控制單元230可識(shí)別所提取類型碼中所包括的操作類型信息。例如,在由第32位表示操作類型的指令的情況下,當(dāng)?shù)?2位的值是O時(shí),控制單元230可將操作識(shí)別為標(biāo)量操作。另外,當(dāng)?shù)?2位的值是I時(shí),控制單元230可將操作識(shí)別為矢量操作。
[0154]根據(jù)本發(fā)明的實(shí)施例,控制單元230可基于所提取的類型碼來將至少一個(gè)指令分配給第一復(fù)用器252的至少一個(gè)槽位。例如,當(dāng)?shù)谝粡?fù)用器252包括四個(gè)槽位時(shí),控制單元230可將執(zhí)行標(biāo)量操作的標(biāo)量指令分配給第一槽位255-1和第二槽位255-2。另外,控制單元230可將執(zhí)行矢量操作的矢量指令分配給第三槽位255-3和第四槽位255-4。
[0155]操作單元250可執(zhí)行所分配的槽位中的操作。詳細(xì)地,為了執(zhí)行所分配的槽位中的操作,操作單元250可將電力供應(yīng)給第一復(fù)用器252的至少一個(gè)槽位中分配有指令的槽位。例如,因?yàn)閷⒅噶罘峙浣o四個(gè)槽位中的第一槽位255-1、第三槽位255-3和第四槽位255-4,所以操作單元250可將電力供應(yīng)給第一槽位255-1、第三槽位255-3和第四槽位255-4。
[0156]另一方面,操作單元250可中斷供應(yīng)給第一復(fù)用器252的至少一個(gè)槽位中分配有指令的槽位之外的槽位的電力。例如,當(dāng)不將指令分配給四個(gè)槽位中的第二槽位255-2時(shí),操作單元250可中斷供應(yīng)給第二槽位255-2的電力。因?yàn)閮H將電力供應(yīng)給多個(gè)槽位中分配有指令的槽位,并且不將電力供應(yīng)給未分配指令的槽位,所以可以高效地使用電力。
[0157]操作單元250可基于類型碼中所包括的操作數(shù)的類型信息來在至少一個(gè)寄存器中選擇用于獲取操作數(shù)的寄存器。在本文中,操作數(shù)可包括標(biāo)量數(shù)據(jù)或矢量數(shù)據(jù)。
[0158]在標(biāo)量指令的情況下,操作數(shù)是標(biāo)量數(shù)據(jù)。因此,操作單元250可選擇存儲(chǔ)標(biāo)量數(shù)據(jù)的標(biāo)量寄存器。在矢量指令的情況下,操作數(shù)可以是標(biāo)量數(shù)據(jù)或矢量數(shù)據(jù)。例如,矢量指令可包括僅處理作為操作數(shù)的矢量數(shù)據(jù)的第一矢量指令和處理作為操作數(shù)的矢量數(shù)據(jù)和標(biāo)量數(shù)據(jù)兩者的第二矢量指令。因此,操作單元250可基于表示操作數(shù)的類型信息的類型碼來識(shí)別在預(yù)定矢量指令中處理的操作數(shù)的類型。
[0159]根據(jù)本發(fā)明的實(shí)施例的操作單元200可將電力供應(yīng)給使選定寄存器與第一復(fù)用器252的所分配的槽位相連接的第二復(fù)用器253的槽位。在本文中,第二復(fù)用器253可包括使選定寄存器與第一復(fù)用器252中所包括的至少一個(gè)槽位相連接的多個(gè)槽位。
[0160]操作單元250可中斷電力使未選定寄存器與第一復(fù)用器252的所分配的槽位相連接的第三復(fù)用器254的槽位的電力供應(yīng)。在本文中,第三復(fù)用器254可包括使未選定寄存器與第一復(fù)用器252中所包括的至少一個(gè)槽位相連接的多個(gè)槽位。操作單元250中斷供應(yīng)給未在指令執(zhí)行過程中使用的第三復(fù)用器254的槽位的電力,進(jìn)而使得可能高效地使用電力。
[0161]操作單元250可從選定寄存器獲取操作。詳細(xì)地,操作單元250可基于從預(yù)定指令提取的操作數(shù)的地址信息來從選定寄存器獲取操作數(shù)。
[0162]操作單元250可在連接到第一復(fù)用器252的所分配的槽位的操作執(zhí)行單元260(參見圖8)中選擇可以運(yùn)行指令的單元。在本文中,操作執(zhí)行單元260可包括可執(zhí)行對(duì)應(yīng)于各個(gè)指令的操作的至少一個(gè)單元。另外,參考圖8,操作執(zhí)行單元260可被包括在操作單元250中。然而,這僅僅是本發(fā)明的實(shí)施例,并且操作執(zhí)行單元260可位于操作單元250外部。
[0163]操作單元250可提取預(yù)定指令中所包括的操作碼,并且基于所提取的操作碼來選擇操作執(zhí)行單元260中所包括的單元。操作執(zhí)行單元160中選定的單元可基于所獲取的操作數(shù)來執(zhí)行操作?;谥噶钪兴ǖ慕Y(jié)果值的地址信息,操作單元250可將通過執(zhí)行操作生成的結(jié)果值存儲(chǔ)在存儲(chǔ)器的對(duì)應(yīng)于地址信息的預(yù)定區(qū)域中。
[0164]根據(jù)本發(fā)明的實(shí)施例的裝置可包括處理器、用于存儲(chǔ)和運(yùn)行程序數(shù)據(jù)的存儲(chǔ)器、永久性存儲(chǔ)裝置諸如磁盤驅(qū)動(dòng)器、用于與外部設(shè)備通信的通信端口以及用戶接口(UI)設(shè)備諸如觸控面板、鍵和按鈕。由軟件模塊或算法實(shí)施的方法可作為在處理器上可運(yùn)行的計(jì)算機(jī)可讀代碼或程序命令存儲(chǔ)在計(jì)算機(jī)可讀記錄介質(zhì)上。計(jì)算機(jī)可讀記錄介質(zhì)的示例包括磁性存儲(chǔ)介質(zhì)(例如,只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)、軟盤和硬盤)和光學(xué)記錄介質(zhì)(例如,光盤只讀存儲(chǔ)器(⑶-ROM)和數(shù)字通用光盤(DVD))。計(jì)算機(jī)可讀記錄介質(zhì)還可分布于網(wǎng)絡(luò)耦合計(jì)算機(jī)系統(tǒng)中,以便計(jì)算機(jī)可讀代碼可以以分布方式來存儲(chǔ)并運(yùn)行。計(jì)算機(jī)可讀記錄介質(zhì)通過計(jì)算機(jī)可讀,并且可存儲(chǔ)在存儲(chǔ)器中并且在處理器中運(yùn)行。
[0165]本文所引用的所有參考文件,包括公開、專利申請(qǐng)和專利,按照相同的程度以引用方式并入本文中,如同每個(gè)參考文件都單個(gè)地和特別地指示為以弓I用方式并入到本文中并且其全部?jī)?nèi)容都進(jìn)行了闡述。
[0166]為了達(dá)到促進(jìn)對(duì)本發(fā)明構(gòu)思的理解的目的,已經(jīng)參考附圖中所示的示例性實(shí)施例,并且已經(jīng)使用特定術(shù)語(yǔ)來描述本發(fā)明的實(shí)施例。然而,本發(fā)明的范圍不被特定術(shù)語(yǔ)限制,并且本發(fā)明可涵蓋可由本領(lǐng)域普通技術(shù)人員通常想到的所有元素。
[0167]可以在功能塊組件和各種處理操作方面來描述本發(fā)明的實(shí)施例。此類功能塊可由運(yùn)行特定功能的任何數(shù)量的硬件和/或軟件組件來實(shí)施。例如,本發(fā)明的實(shí)施例可采用各種集成電路(IC)組件,諸如存儲(chǔ)器元件、處理元件、邏輯元件和查找表,其可在一個(gè)或多個(gè)微處理器或其他控制設(shè)備的控制下運(yùn)行各種功能。類似地,在本發(fā)明的元件由軟件編程或軟件元件實(shí)施的情況下,本發(fā)明的實(shí)施例可由任何編程或腳本語(yǔ)言諸如C、C++、Java或匯編語(yǔ)言來實(shí)施,其中各種算法由數(shù)據(jù)結(jié)構(gòu)、過程、例程或其他編程元素的任何組合實(shí)施。功能方面可由在一個(gè)或多個(gè)處理器中運(yùn)行的算法來實(shí)施。另外,本發(fā)明的實(shí)施例可采用用于電子環(huán)境設(shè)定、信號(hào)處理和/或數(shù)據(jù)處理的相關(guān)技術(shù)。諸如“機(jī)構(gòu)”、“元件”、“單元”和“配置”的術(shù)語(yǔ)可在廣泛意義上使用并且不限于機(jī)械和物理配置。所述術(shù)語(yǔ)可包括軟件例程結(jié)合處理器等的意義。
[0168]本文所述的特定實(shí)現(xiàn)方式僅僅是示例性的,并且不以任何方式限制本發(fā)明的范圍。為了簡(jiǎn)潔起見,可省略相關(guān)技術(shù)電子配置、控制系統(tǒng)、軟件和系統(tǒng)的其他功能方面的描述。另外,附圖中所示的連接線或連接部件表示各種元件之間的示例性功能關(guān)系和/或物理或邏輯連接,并且各種替代或額外功能關(guān)系、物理連接或邏輯連接可存在于實(shí)際裝置中。另夕卜,沒有元件可對(duì)于本發(fā)明的實(shí)施例的實(shí)踐是本質(zhì)的,除非所述元件特別描述為“本質(zhì)的”或“關(guān)鍵的”。
[0169]應(yīng)理解,在此描述的示例性實(shí)施例應(yīng)僅以描述意義考慮而不是用于限制目的。每個(gè)實(shí)施例中對(duì)特征或方面的描述應(yīng)典型地被認(rèn)為可用于其他實(shí)施例中的其他相似特征或方面。
[0170]雖然本發(fā)明的一個(gè)或多個(gè)實(shí)施例已參考附圖進(jìn)行了描述,但是本領(lǐng)域普通技術(shù)人員將理解其中在不脫離所附權(quán)利要求定義的本發(fā)明范圍的精神和范圍的情況下可做出形式和細(xì)節(jié)上的各種變化。
【主權(quán)項(xiàng)】
1.一種在處理器中運(yùn)行指令的方法,包括: 基于多個(gè)指令中的每一個(gè)中所包括的停止位來獲取在預(yù)定周期中運(yùn)行的至少一個(gè)指令; 從所述至少一個(gè)指令提取類型碼,所述類型碼包括基于所述至少一個(gè)指令執(zhí)行的操作的類型信息; 基于所提取的類型碼來將所述至少一個(gè)指令分配給第一復(fù)用器的至少一個(gè)槽位;以及 執(zhí)行所分配的槽位中的所述操作。2.如權(quán)利要求1所述的方法,其中所述至少一個(gè)指令的獲取包括: 當(dāng)?shù)谝恢噶钪兴ǖ耐V刮痪哂械谝恢禃r(shí),在所述預(yù)定周期中獲取作為第一指令之后的下一個(gè)指令的第二指令;而 當(dāng)?shù)谝恢噶钪兴ǖ耐V刮痪哂械诙禃r(shí),在所述預(yù)定周期之后的下一個(gè)周期中獲取第二指令。3.如權(quán)利要求1所述的方法,其中所述操作的類型包括標(biāo)量操作或矢量操作。4.如權(quán)利要求1所述的方法,其中所述操作的類型包括標(biāo)量操作或矢量操作。5.如權(quán)利要求1所述的方法,其中所述類型碼包括所述操作中處理的操作數(shù)的類型信息。6.如權(quán)利要求5所述的方法,其中所述操作數(shù)的類型包括標(biāo)量數(shù)據(jù)或矢量數(shù)據(jù)。7.如權(quán)利要求5所述的方法,其中所述操作的執(zhí)行包括: 基于所述操作數(shù)的類型信息從至少一個(gè)寄存器中選擇用于獲取操作數(shù)的寄存器;以及 從所述選定寄存器獲取所述操作數(shù)。8.如權(quán)利要求7所述的方法,其中所述寄存器的選擇包括: 將電力供應(yīng)給使所述選定寄存器與第一復(fù)用器的所分配的槽位相連接的第二復(fù)用器的槽位;以及 中斷供應(yīng)給使所述至少一個(gè)寄存器中的未選定寄存器與第一復(fù)用器的所分配的槽位相連接的第三復(fù)用器的槽位的電力。9.如權(quán)利要求7所述的方法,其中所述操作的執(zhí)行包括: 從連接到第一復(fù)用器的所分配的槽位的至少一個(gè)操作執(zhí)行單元中選擇執(zhí)行所述操作的操作執(zhí)行單元;以及 基于所獲取的操作數(shù)來在所述選定操作執(zhí)行單元中執(zhí)行所述操作。10.如權(quán)利要求1所述的方法,其中所述處理器是超長(zhǎng)指令字VLIW處理器。11.一種用于在設(shè)備中對(duì)指令進(jìn)行編碼的方法,包括: 生成類型碼,所述類型碼包括處理器中可執(zhí)行的預(yù)定操作的類型信息和在所述預(yù)定操作中處理的操作數(shù)的類型信息; 生成停止位,所述停止位包括關(guān)于在預(yù)定周期中執(zhí)行的至少一個(gè)操作的信息;以及 基于所述類型碼和所述停止位來生成用于執(zhí)行所述預(yù)定操作的指令。12.—種運(yùn)行指令的處理器,包括: 輸入單元,其被配置來基于多個(gè)指令中的每一個(gè)中所包括的停止位來獲取在預(yù)定周期中運(yùn)行的至少一個(gè)指令; 控制單元,其被配置來從所述至少一個(gè)指令提取類型碼,所述類型碼包括基于所述至少一個(gè)指令執(zhí)行的操作的類型信息,并且基于所提取的類型碼將所述至少一個(gè)指令分配給第一復(fù)用器的至少一個(gè)槽位;以及 操作單元,其被配置來執(zhí)行所分配的槽位中的所述操作。13.—種運(yùn)行指令的裝置,包括: 代碼生成單元,其被配置來生成類型碼,所述類型碼包括在處理器中可執(zhí)行的預(yù)定操作的類型信息和在所述預(yù)定操作中處理的操作數(shù)的類型信息; 停止位生成單元,其被配置來生成停止位,所述停止位包括關(guān)于在預(yù)定周期中執(zhí)行的至少一個(gè)操作的信息;以及 指令生成單元,其被配置來基于所述類型碼和所述停止位來生成用于執(zhí)行所述預(yù)定操作的指令。14.一種非暫態(tài)計(jì)算機(jī)可讀記錄介質(zhì),其存儲(chǔ)程序,所述程序當(dāng)由計(jì)算機(jī)運(yùn)行時(shí)執(zhí)行權(quán)利要求I所述的方法。15.一種非暫態(tài)計(jì)算機(jī)可讀記錄介質(zhì),其存儲(chǔ)程序,所述程序當(dāng)由計(jì)算機(jī)運(yùn)行時(shí)執(zhí)行權(quán)利要求11所述的方法。
【文檔編號(hào)】G06F1/32GK105980980SQ201480074517
【公開日】2016年9月28日
【申請(qǐng)日】2014年11月24日
【發(fā)明人】樸哉彥, 金碩鎮(zhèn), 金度亨
【申請(qǐng)人】三星電子株式會(huì)社