專利名稱:數(shù)據(jù)處理裝置、和數(shù)據(jù)處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及對比特序列進行比特操作的數(shù)據(jù)處理技術(shù)。
背景技術(shù):
通常,在計算機系統(tǒng)中,數(shù)據(jù)被寫入存儲設(shè)備以及從存儲設(shè)備讀出,是以由8比特的整數(shù)倍構(gòu)成的I個字(例如,16比特)為單元來進行的。
以往,為了有效地使用存儲裝置中的存儲區(qū)域,已知有如下的計算機系統(tǒng),S卩,當(dāng)寫入到存儲裝置的多個數(shù)據(jù)由包括小于字單位的分數(shù)(fraction)的比特數(shù)構(gòu)成時,將這些多個數(shù)據(jù)打包(packing)成字單位的整數(shù)倍的比特數(shù)的數(shù)據(jù)后,進行數(shù)據(jù)的寫入。作為在計算機系統(tǒng)中利用的用于相對有效地進行數(shù)據(jù)的打包的裝置,例如有專利文獻I、專利文獻2中記載的比特字段(bit field)操作電路。專利文獻I中所描述的比特字段操作電路(后面被稱為“比特字段操作電路A”),進行如圖21所示的比特字段操作。在該圖中,數(shù)據(jù)A2000和數(shù)據(jù)B2001在比特字段操作電路A進行比特字段操作的情況下,是被輸入比特字段操作電路A的η比特的比特序列,而數(shù)據(jù)C2002在比特字段操作電路A進行比特字段操作的情況下,是從比特字段操作電路A輸出的η比特的比特序列。比特字段操作電路A進行如下比特字段操作,即,當(dāng)被輸入用于指定數(shù)據(jù)Α2000、數(shù)據(jù)Β2001、偏移量2010、和寬度量(width) 2011的指令時,在數(shù)據(jù)A2000中的從最低位比特的位置向左移位了偏移量2010后的位置上,插入數(shù)據(jù)B2001中的包括最低位比特并由寬度量2011表示的比特數(shù)的比特序列后生成數(shù)據(jù)C2002。專利文獻2中描述的比特字段操作電路(以下,簡稱為“比特字段操作電路B”),進行圖22中所示的比特字段操作。在該圖中,數(shù)據(jù)A2100在比特字段操作電路B進行比特字段操作的情況下,是被輸入到比特字段操作電路B的η比特的比特序列,數(shù)據(jù)Β2101在比特字段操作電路A進行比特字段操作的情況下,是從比特字段操作電路B輸出的η比特的比特序列。當(dāng)被輸入用于指定數(shù)據(jù)Α2100、偏移量2110、和移位量2111的指令時,比特字段操作電路B對將數(shù)據(jù)Α2100向右邏輯移位了移位量后的數(shù)據(jù),進行比特字段操作,插入數(shù)據(jù)Α2100中的由偏移量2110所示的比特數(shù)的包含最低位比特的比特序列,生成數(shù)據(jù)Β2101?,F(xiàn)有技術(shù)文獻專利文獻專利文獻I :日本特開2008-83795號公報專利文獻2 :日本特開2000-99327號公報
發(fā)明概要發(fā)明所要解決的課題但是,當(dāng)從存儲裝置讀出已打包的數(shù)據(jù)并利用的情況下,需要對讀出的數(shù)據(jù)進行解包。因此,在打包及解包數(shù)據(jù)并加以利用的計算機系統(tǒng)中,除了執(zhí)行相對高效率的數(shù)據(jù)的打包之外,還希望能夠相對高效率地進行打包后數(shù)據(jù)的解包。
發(fā)明內(nèi)容
因此,本發(fā)明是鑒于相關(guān)問題而做出的,其目的是提供一種數(shù)據(jù)處理裝置,能夠相對高效率地進行打包后數(shù)據(jù)的解包。用于解決課題的手段用于解決上述課題的本發(fā)明的數(shù)據(jù)處理裝置,其特征在于,具有,解碼器,從I個指令中,讀取用于指定存放N比特的對象比特序列的比特序列存放區(qū)域的信息、N比特的比特序列中所包含的表示該N比特的比特序列中包含第I端比特的第I比特范圍的信息、和該N比特的比特序列中所包含的在該第I比特范圍中連續(xù)的比特范圍即該N比特的比特序·列中不包含第2端比特的第2比特范圍的信息,并將與所讀取的信息對應(yīng)的解碼信號輸出,其中,N是2以上的整數(shù);以及比特操作電路,當(dāng)從所述解碼器輸出解碼信號時,根據(jù)該解碼信號,基于存放在所述比特序列存放區(qū)域中的所述對象比特序列,生成由N比特構(gòu)成的輸出比特序列并輸出,所述比特操作電路為,通過在所述輸出比特序列中的所述第I比特范圍中,配置與所述對象比特序列中的所述第I比特范圍的比特序列等值的比特序列,在所述輸出比特序列中的包含所述第2端比特并由所述第2比特范圍的比特長度構(gòu)成的第3比特范圍中,配置與所述對象比特序列中的所述第2比特范圍的比特序列等值的比特序列,在所述輸出比特序列中的不屬于所述第I比特范圍和所述第3比特范圍中任意比特范圍的部分中,配置同一規(guī)定值,由此來生成所述輸出比特序列。發(fā)明效果根據(jù)具有如上所述結(jié)構(gòu)的本發(fā)明的數(shù)據(jù)處理裝置,按照根據(jù)一個指令解碼后的解碼信號進行動作的比特操作電路,將向比特序列存放區(qū)域存放的比特序列中的被打包在第一比特范圍和第二比特范圍中的數(shù)據(jù),以在第一比特范圍和第二比特范圍之間插入由同一規(guī)定值構(gòu)成的比特序列的方式解包并輸出。由此,該數(shù)據(jù)處理裝置能夠相對高效率地進行打包后數(shù)據(jù)的解包。
圖I是表示數(shù)據(jù)處理裝置100的主要硬件結(jié)構(gòu)的框圖。圖2是由4字節(jié)構(gòu)成的I個指令的比特字段結(jié)構(gòu)圖。圖3是表示比特操作種指令與解碼信號的對應(yīng)關(guān)系的解碼信號對應(yīng)表。圖4是表示比特操作電路150的電路結(jié)構(gòu)的電路結(jié)構(gòu)圖。圖5是表示符號擴展電路330的電路結(jié)構(gòu)的電路結(jié)構(gòu)圖。圖6是表示解碼器450進行解碼的真值表。圖7是掩碼數(shù)據(jù)生成電路350進行的解碼的真值表。圖8是shrnhN指令解碼時的數(shù)據(jù)結(jié)構(gòu)圖。圖9是shrnlN指令解碼時的數(shù)據(jù)結(jié)構(gòu)圖。圖10是shrnlsN指令解碼時的數(shù)據(jù)結(jié)構(gòu)圖。圖11是extrhN指令解碼時的數(shù)據(jù)結(jié)構(gòu)圖。
圖12是extrlN指令解碼時的數(shù)據(jù)結(jié)構(gòu)圖。圖13是extrlsN指令解碼時的數(shù)據(jù)結(jié)構(gòu)圖。圖14是數(shù)據(jù)處理裝置100進行的比特操作處理的流程圖。圖15是具體例的數(shù)據(jù)結(jié)構(gòu)圖。圖16是表示數(shù)據(jù)處理裝置1500的主要硬件結(jié)構(gòu)的框圖。圖17是表示SMD型比特操作種指令與解碼信號的對應(yīng)關(guān)系的解碼信號對應(yīng)表。圖18是表示數(shù)據(jù)處理裝置1700的主要硬件結(jié)構(gòu)的框圖。圖19 (a)是以助記符(mnemonic)形式示意地表示指令形式的示意圖之一,圖19(b)是以助記符形式示意地表示指令形式的示意圖之二。 圖20是表示數(shù)據(jù)處理裝置2200的結(jié)構(gòu)的框圖。圖21是現(xiàn)有的比特字段操作電路A的數(shù)據(jù)結(jié)構(gòu)圖。圖22是現(xiàn)有的比特字段操作電路B的數(shù)據(jù)結(jié)構(gòu)圖。圖23是底部對齊(bottom alignment)解包處理中的數(shù)據(jù)結(jié)構(gòu)圖。圖24是頂部對齊(top alignment)解包處理中的數(shù)據(jù)結(jié)構(gòu)圖。
具體實施例方式<實施方式1>在對作為本發(fā)明的數(shù)據(jù)處理裝置的一實施方式的數(shù)據(jù)處理裝置100的結(jié)構(gòu)進行詳細說明之前,這里首先對開發(fā)出數(shù)據(jù)處理裝置100的經(jīng)過進行說明。圖23是表示作為數(shù)據(jù)解包處理的一例的底部對齊數(shù)據(jù)解包處理中的數(shù)據(jù)結(jié)構(gòu)的圖,該數(shù)據(jù)結(jié)構(gòu)包括底部對齊數(shù)據(jù)解包處理前的數(shù)據(jù)結(jié)構(gòu)和底部對齊數(shù)據(jù)解包處理后的數(shù)據(jù)結(jié)構(gòu)。這里,該底部對齊數(shù)據(jù)解包處理是指如下處理,即,被數(shù)據(jù)打包了的多個比特序列的各個比特序列,以分別被配置在字單位的整數(shù)倍的比特序列的各個比特序列的最低位比特側(cè)的方式被解包的處理。該圖中,數(shù)據(jù)A2300是底部對齊數(shù)據(jù)解包處理前的32比特的比特序列,包括由7比特的有效比特序列2301和9比特的有效比特序列2302構(gòu)成的16比特的比特序列、以及16比特的邏輯值為“O”的無用比特序列2303。數(shù)據(jù)B2310是底部對齊數(shù)據(jù)解包處理后的32比特的比特序列,是如下的數(shù)據(jù),即,以在高位16比特中的最低位比特側(cè)位置配置有效比特序列2301,并在低位16比特中的最低位比特側(cè)位置配置有效比特序列2302的方式,被施以底部對齊數(shù)據(jù)解包處理后得到的數(shù)據(jù)。另外,在將數(shù)據(jù)B2310中的低位16比特的比特序列,例如作為在以16比特單位進行的算術(shù)運算等中利用的整數(shù)而進行處理的情況下,比特序列2311的部分(以下,稱為“擴展比特序列2311”)需要用相同的規(guī)定值填滿。即,在作為不帶符號的整數(shù)進行處理的情況下,擴展比特序列2311需要用值“O”填滿,而在作為帶符號的整數(shù)進行處理的情況下,擴展比特序列2311需要用有效比特序列2302中的最高位比特的值填滿。然而,現(xiàn)有的比特字段操作電路A以及現(xiàn)有的比特字段操作電路B不能用I個指令來實現(xiàn)將擴展比特序列2311用規(guī)定值填滿的類型的底部對齊數(shù)據(jù)解包處理(下面稱為“第I數(shù)據(jù)解包處理”)。因此,在現(xiàn)有的數(shù)據(jù)處理裝置中,為了實現(xiàn)該第I數(shù)據(jù)解包處理,需要組合并執(zhí)行至少2個指令。圖24是表示作為數(shù)據(jù)解包處理的一例的頂部對齊數(shù)據(jù)解包處理中的數(shù)據(jù)結(jié)構(gòu)的一個具體例的圖,該數(shù)據(jù)結(jié)構(gòu)包括頂部對齊數(shù)據(jù)解包處理前的數(shù)據(jù)結(jié)構(gòu)、和頂部對齊數(shù)據(jù)解包處理后的數(shù)據(jù)結(jié)構(gòu)。這里,該頂部對齊數(shù)據(jù)解包處理是指如下的處理,S卩,被數(shù)據(jù)打包了的多個比特序列中的各個比特序列,以配置在字單位的整數(shù)倍的比特序列的各個比特序列中的最高位比特側(cè)的方式被解包的處理。該圖中,數(shù)據(jù)A2400是頂部對齊數(shù)據(jù)解包處理前的32比特的比特序列,包括由7比特的有效比特序列2401和9比特的有效比特序列2402構(gòu)成的16比特的比特序 列、以及16比特的邏輯值為“O”的無用比特序列2403。數(shù)據(jù)B2410是頂部對齊數(shù)據(jù)解包處理后的32比特的比特序列,是如下數(shù)據(jù),S卩,以在高位16比特中的最高位比特側(cè)位置配置有效比特序列2401,并在低位16比特中的最高位比特側(cè)位置配置有效比特序列2402的方式,被施以頂部對齊數(shù)據(jù)解包處理后而得到的數(shù)據(jù)。另外,在將數(shù)據(jù)B2410中的由有效比特序列2402和比特序列2411構(gòu)成的16比特的比特序列,例如作為在以16比特單位進行的算術(shù)運算等中利用的整數(shù)而進行處理的情況下,比特序列2411的部分(以下,稱為“擴展比特序列2411”)需要用相同的規(guī)定值填滿。即,在作為不帶符號的整數(shù)進行處理的情況下,擴展比特序列2411需要用值“O”填滿,在作為帶符號的整數(shù)進行處理的情況下,擴展比特序列2411需要用有效比特序列2402中的最高位比特的值填滿。然而,現(xiàn)有的比特字段操作電路A以及現(xiàn)有的比特字段操作電路B不能用I個指令來實現(xiàn)將擴展比特序列2411用規(guī)定值填滿的類型的頂部對齊數(shù)據(jù)解包處理(以下,稱為“第2數(shù)據(jù)解包處理”)。因此,為了實現(xiàn)該第2數(shù)據(jù)解包處理,通過現(xiàn)有的數(shù)據(jù)處理裝置需要組合并執(zhí)行至少2個指令。通常,在計算機系統(tǒng)中,每單位時間能夠被執(zhí)行的指令的數(shù)量是有限的。因此,在現(xiàn)有的數(shù)據(jù)處理裝置中,希望將需要組合并執(zhí)行至少2個指令的上述第一數(shù)據(jù)解包處理和第2數(shù)據(jù)解包處理由I個指令來執(zhí)行。因此,研發(fā)出數(shù)據(jù)處理裝置100的目的是提供能夠用I個指令來執(zhí)行上述第I數(shù)據(jù)解包處理和第2數(shù)據(jù)解包處理的數(shù)據(jù)處理裝置。該數(shù)據(jù)處理裝置100具有指令解碼器、寄存器文件和比特操作電路,比特操作電路基于從指令解碼器輸出的解碼信號,對存放在寄存器文件中的數(shù)據(jù)進行與移位處理有關(guān)的比特操作。以下,使用附圖對數(shù)據(jù)處理裝置100進行詳細說明。<數(shù)據(jù)處理裝置100的結(jié)構(gòu)>圖I是表示數(shù)據(jù)處理裝置100的主要硬件結(jié)構(gòu)的框圖。數(shù)據(jù)處理裝置100由指令取出單元(instruction fetch unit) 110、指令解碼器120、裝入存儲單元(load store unit) 130、寄存器文件140、比特操作電路150、和時鐘脈沖發(fā)生器160構(gòu)成,例如是半導(dǎo)體集成電路。
時鐘脈沖發(fā)生器160具有生成并輸出如下信號的功能,該信號是提供給指令取出單元110、指令解碼器120、裝入存儲單元130、寄存器文件140和比特操作電路150的信號,例如是IOOMHz的時鐘信號。指令取出單元110與指令解碼器120和外部存儲器連接,具有以下的兩個功能。功能I :與從時鐘脈沖發(fā)生器160提供的時鐘信號同步,讀出存儲在外部存儲器中的4字節(jié)(byte)的I個指令,并將讀出的指令輸出給指令解碼器120的功能。功能2 :將從外部存儲器讀出指令的情況下使用的地址,相對于前一次從外部存儲器讀出指令時使用的地址,增加了 4字節(jié)的功能。圖2是存儲在外部存儲器中的由4字節(jié)構(gòu)成的I個指令的比特字段結(jié)構(gòu)圖。正如該圖所示,存儲在外部存儲器中的由4字節(jié)構(gòu)成的I個指令,由I比特的sign字段201、I比特的mask_dir字段202、I比特的operation字段203、6比特的N字段204、 5比特的width字段205,5比特的shift_len字段206,4比特的read_addr字段207,4比特的write_addr字段208和5比特的其他字段209構(gòu)成。再次返回圖1,繼續(xù)數(shù)據(jù)處理裝置100的結(jié)構(gòu)的說明。指令解碼器120與指令取出單元110、裝入存儲單元130、寄存器文件140、和比特操作電路150連接,并具有如下功能,即,將從指令取出單元110輸入并由預(yù)先確定的格式記述的指令,根據(jù)預(yù)先確定的算法解碼的功能。成為指令解碼器120的解碼對象的指令中,具有使用裝入存儲單元130和寄存器文件140進行的裝入存儲處理的裝入存儲種指令、和使用寄存器文件140和比特操作電路150進行的比特操作處理的比特操作種指令這兩種。這里,對指令解碼器120進行的比特操作種指令的解碼利用附圖在下面進行說明。圖3是解碼信號對應(yīng)表200,表示指令解碼器120解碼比特操作種指令的情況下的,成為解碼對象的比特操作種指令與解碼信號之間的對應(yīng)關(guān)系。該圖中,指令形式210表示成為解碼對象的比特操作種指令在助記符形式下的指令形式。比特操作種指令中包括如下六種指令,即,操作碼成為shrnhN (N是8、16或32中的某一個。以下同樣)的shrnhN指令、操作碼成為shrnlN的shrnlN指令、操作碼成為shrnlsN的shrnlsN指令、操作碼成為extrhN的extrhN指令、操作碼成為extrlN的extrlN指令、以及操作碼成為extrlsN的extrlsN指令。并且,這些指令將如下內(nèi)容作為操作碼,S卩,指定寄存器文件140內(nèi)的目的寄存器的寄存器名B、指定寄存器文件140內(nèi)的源寄存器的寄存器名A、表示成為小于N的第I比特長度的shift_len、以及表示成為小于N的第2比特長度的width。sign220、mask_dir230> operation240> N250、width260、shift_len270> read_addr280、write_addr290,分別是指令解碼器120解碼比特操作種指令時輸出的解碼信號。sign220是在操作碼的第6個文字是“s”的情況下,邏輯值是“ I ”,而在操作碼的第6個文字不是“s”的情況下,邏輯值是“O”的信號,被輸出給比特操作電路150。該sign220是表示比特操作電路150進行的比特操作處理是伴隨有符號擴展的符號擴展處理,還是不伴隨有符號擴展的零擴展處理的信號。
并且,sign220是基于圖2中的sign字段201而被解碼得到的信號。mask_dir230是在操作碼的第5個文字是“h”的情況下邏輯值為“0”,而在操作碼的第5個文字不是“h”的情況下,也就是在是“I”的情況下邏輯值為“I”的信號,其被輸出給比特操作電路150。該mask_dir230是在比特操作電路150進行的比特操作處理中,用于確定不成為移位處理對象的比特序列的信號。后面將對不成為移位處理對象的比特序列進行說明。并且,mask_dir230是基于圖2中的mask_dir字段202而被解碼得到的信號。operation240是在操作碼的第I個文字 第4個文字為“shrn”的情況下邏輯值為“0”,而在操作碼的第I個文字 第4個文字不是“shrn”的情況下,也就是在是“extr”的情況下邏輯值為“I”的信號,被輸出到比特操作電路150。該operation240是在比特操作電路150進行的比特操作處理中,用于確定成為移位處理對象的比特序列相對于不成為移位處理對象的比特序列的移位方向的信號。后面將對成為移位處理對象的比特序列進行說明?!げ⑶遥琽peration240是基于圖2中的operation字段203而被解碼得到的信號。N250是用二進制數(shù)表示操作碼中包含的數(shù)字N的6比特的信號,被輸出給比特操作電路150。該N250是表示成為比特操作電路150進行的比特操作處理對象的比特序列的比特長度的信號。并且,N250是基于圖2中的N字段204而被解碼得到的信號。width260是用二進制數(shù)表示操作數(shù)width的數(shù)值的5比特的信號,被輸出給比特操作電路150。該width260是在比特操作電路150進行的比特操作處理中,表示成為移位對象的比特序列的比特長度的信號。并且,width260是基于圖2中的width字段205而被解碼得到的信號。shift_len270是用二進制數(shù)表示操作數(shù)shift_len的數(shù)值的5比特的信號,被輸出給比特操作電路150。該shift_len270是表示成為比特操作電路150進行的比特操作處理對象的比特序列的移位量的信號。并且,shift_len270是基于圖2中的shift_len字段206而解碼得到的信號。read_addr280是由操作數(shù)A指定的,表示寄存器文件140內(nèi)的源寄存器的4比特的地址的信號(addrA),被輸出給寄存器文件140。該read_addr280是基于圖2中的read_addr字段207而被解碼得到的信號。write_addr290是表示用操作數(shù)B指定的,表示寄存器文件140內(nèi)的源寄存器的4比特的地址的信號(addrB),被輸出給寄存器文件140。該write_addr290是基于圖2中規(guī)定write_addr字段208而被解碼得到的信號。再次返回圖1,繼續(xù)對數(shù)據(jù)處理裝置100的結(jié)構(gòu)進行說明。裝入存儲單元130與指令解碼器120、寄存器文件140和外部存儲器連接,具有以下的兩個功能。功能I :當(dāng)從指令解碼器120輸入在解碼裝入存儲種指令時輸出的表示外部存儲器的地址的信號ld_addr時,與由時鐘脈沖發(fā)生器160提供的時鐘信號同步地,從外部存儲器讀出以由IcLaddr表示的地址所指定的在外部存儲器中的存儲區(qū)域的4字節(jié)的數(shù)據(jù),并輸出給寄存器文件140的功能。
功能2 :當(dāng)從指令解碼器120輸入在解碼裝入存儲種指令時輸出的表示外部存儲器的地址的信號st_addr時,與由時鐘脈沖發(fā)生器160提供的時鐘信號同步地,將從寄存器文件140輸入的4字節(jié)的數(shù)據(jù)寫入以由st_addr表示的地址所指定的在外部存儲器的存儲區(qū)域中的功能。寄存器文件140與指令解碼器120、裝入存儲單元130和比特操作電路150連接,在內(nèi)部具有16個由4字節(jié)構(gòu)成的通用寄存器,并具有以下兩個功能。功能I :當(dāng)從指令解碼器120輸入reacLaddr時,與從時鐘脈沖發(fā)生器160提供的時鐘信號同步地,輸出在由read_addr指定的源寄存器中存放的4字節(jié)的數(shù)據(jù)的功能。功能2 :當(dāng)從指令解碼器120輸入write_addr時,與從時鐘脈沖發(fā)生器160供給的時鐘信號同步地,將從裝入存儲單元130或比特操作電路150在相同時鐘循環(huán)內(nèi)輸出的4字節(jié)的數(shù)據(jù)存放到由write_addr所指定的目的寄存器的功能。
比特操作電路150與指令解碼器120和寄存器文件140連接,具有對于從寄存器文件140輸入的數(shù)據(jù)dataA,根據(jù)從指令解碼器120輸入的解碼信號進行處理并生成數(shù)據(jù)dataB,并將其輸出的功能。圖4是表示比特操作電路150的電路結(jié)構(gòu)的電路結(jié)構(gòu)圖。正如該圖所示,比特操作電路150包括異或門310、左右移位器320、符號擴展電路330、加法器340、掩碼(mask)數(shù)據(jù)生成電路350、和第I比特選擇器360。異或門310是與解碼信號mask_dir的信號線、解碼信號operation的信號線和左右移位器320連接的二輸入異或電路。該異或門310被輸入mask_dir和operation這2個解碼信號時,將表示左右移位器320的移位方向的I比特的信號shift_dir向左右移位器320輸出。左右移位器320是與解碼信號sign的信號線、解碼信號shift_len的信號線、異或門310、輸入數(shù)據(jù)dataA的信號線和符號擴展電路330連接的左右桶形移位器,具有基于作為控制信號的sign、shift_len、以及shift_dir,將輸入數(shù)據(jù)dataA移位而輸出輸出數(shù)據(jù)dataAA的功能。以下,分別對輸入的控制信號進行說明。shift_dir :是控制移位方向是右方向(低位比特側(cè))還是左方向(高位比特側(cè))的信號。左右移位器320在shift_dir的邏輯值為“I”時進行向右方向的移位,在shift_dir的邏輯值為“ O ”時進行向左方向的移位。shift_len :是表示移位量的控制信號。左右移位器320向右或左移位由shift_Ien所示出的移位量。sign :是用于將右移位時的移位方式控制為伴隨符號擴展的右移位,即、算術(shù)移位,或者控制為不伴隨符號擴展的右移位,即、邏輯移位的信號。左右移位器320在右移位時sign的邏輯值為“I”的情況下,進行伴隨符號擴展的右移位,在右移位時sign的邏輯值為“O”的情況下,進行不伴隨符號擴展的右移位。符號擴展電路330與解碼信號sign的信號線、解碼信號mask_dir的信號線、解碼信號operation的信號線、解碼信號N的信號線、解碼信號width的信號線、左右移位器320和第I比特選擇器360連接,并具有基于作為控制信號的sign、mask_dir、operation、N、以及width,在輸入數(shù)據(jù)dataAA中的規(guī)定的比特序列的位置上復(fù)制規(guī)定的比特位置的信號,或者插入邏輯值“O”而輸出輸出數(shù)據(jù)dataAAA的功能。圖5是表示符號擴展電路330的電路結(jié)構(gòu)的電路結(jié)構(gòu)圖。正如該圖所示,符號擴展電路330包括減法器410、第I選擇器420、第2選擇器430、第3選擇器440、解碼器450和第2比特選擇器460。減法器410與解碼信號width的信號線、解碼信號N的信號線和第I選擇器420連接,具有從N的值減去width的值,輸出6比特的信號N-width的功能。第I選擇器420是與解碼信號mask_dir的信號線、解碼信號width的信號線和減法器410連接的、6比特的二輸入一輸出選擇器,并具有在作為控制信號的mask_dir的邏輯值為“I”的情況下選擇width,在mask_dir的邏輯值為“O”的情況下選擇N_width,并輸出6比特的信號sign_offset的功能。該sign_offset是表示在作為比特操作處理對象的N比特的比特序列中上述規(guī)定的比特的位置的信號。
·
第2選擇器430是與輸入數(shù)據(jù)dataAA的信號線、第I選擇器420和第3選擇器440連接的、I比特的三十二輸入一輸出選擇器,并具有從作為32比特的比特序列的輸入數(shù)據(jù)dataAAA,選擇由作為控制信號的sign_offset所示出的位置的比特,并輸出I比特的信號sign_data的功能。第3選擇器440是與解碼信號sign的信號線、第2選擇器430和第2比特選擇器460連接的、I比特的二輸入一輸出選擇器,并具有在作為控制信號的sign的邏輯值為“I”時選擇sign_data,在sign的邏輯值為“O”時選擇邏輯值“O”,輸出I比特的信號ext_data的功能。解碼器450是與解碼信號operation的信號線、解碼信號mask_dir的信號線、解碼信號width的信號線、解碼信號N的信號線和第2比特選擇器460連接的解碼器,并具有根據(jù)所輸入的operation、mask_dir、width、以及N將32比特的ext_mask信號解碼的功倉泛。圖6表示解碼器450進行的解碼的真值表。在該圖中,operation510、mask_dir520和width530是輸入到解碼器450中的信號,ext_mask (Nbit>540是由32比特的解碼信號ext_mask中的低位N比特構(gòu)成的比特序列。由32比特構(gòu)成的ext_mask中的除去低位N比特的部分的值成為無關(guān)值(未圖示)。解碼器450輸入operation、mask_dir、width、以及N時,按照該圖所示的真值表,輸出 ext_mask。再次返回圖5,繼續(xù)說明符號擴展電路330。第2比特選擇器460與輸入數(shù)據(jù)dataAA的信號線、第3選擇器440、解碼器450和第I比特選擇器360 (參照圖4)連接,由32個二輸入一輸出選擇器構(gòu)成,并具有對于dataAA,向由ext_mask指定的比特位置插入ext_data的比特而生成dataAAA的功能。構(gòu)成第2比特選擇器460的選擇器,分別具有將extjnask的各比特作為控制信號,選擇對應(yīng)的dataAA的比特和ext_data中的某一方并輸出的功能。再次返回圖4,繼續(xù)說明比特操作電路150。加法器340與解碼信號width的信號線、解碼信號shif_len的信號線和掩碼數(shù)據(jù)生成電路350連接,并具有將width的值和shift_len的值相加,并輸出作為6比特的信號的mask_width的功能。
掩碼數(shù)據(jù)生成電路350是與解碼信號mask_dir的信號線、解碼信號N的信號線、加法器340和第I比特選擇器360連接的解碼器,并具有根據(jù)所輸入的mask_dir、N、以及mask_width解碼32比特的mask信號的功能。圖7是掩碼數(shù)據(jù)生成電路350進行的解碼的真值表。在該圖中,mask_dir610和mask_width620是輸入到掩碼數(shù)據(jù)生成電路350中的信號,mask (Nbit)630是由32比特的解碼信號mask中的低位N比特構(gòu)成的比特序列。由32比特構(gòu)成的mask中的除了低位N比特的部分的值成為無關(guān)值(未圖示)。掩碼數(shù)據(jù)生成電路350在被輸入mask_dir、mask_width以及N時,按照該圖所示的真值表,輸出mask。
再次返回圖4,繼續(xù)說明比特操作電路150。第I比特選擇器360與輸入數(shù)據(jù)dataA的信號線、符號擴展電路330、掩碼數(shù)據(jù)生成電路350和輸出數(shù)據(jù)dataB的信號線連接,由32個二輸入一輸出選擇器構(gòu)成,并具有向dataA中的由mask指定的比特位置,插入dataAAA的數(shù)據(jù)而生成dataB的功能。這些選擇器分別具有如下功能,將mask的各比特作為控制信號,選擇對應(yīng)的dataA的比特和對應(yīng)的dataAAA的比特中的某一方并輸出的功能。下面使用附圖對具有上述結(jié)構(gòu)的數(shù)據(jù)處理裝置100在指令解碼器120解碼了比特操作種指令的情況下的比特操作電路150的動作進行說明。<比特操作電路150的動作>圖8是表示在指令解碼器120解碼了 shrnhN指令的情況下比特操作電路150所利用以及生成的數(shù)據(jù)的結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)圖。在該圖中,dataA700是在與指令解碼器120輸出了解碼信號的時鐘循環(huán)相同的循環(huán)中,從寄存器文件140輸出的32比特的輸入數(shù)據(jù)中的低位N比特的部分的比特序列。dataAA710是與從寄存器文件140輸入的dataA對應(yīng),并從左右移位器320輸出的32比特的數(shù)據(jù)dataAA中的低位N比特的部分的比特序列。dataAAA720是與從左右移位器320輸入的dataAA對應(yīng),并從符號擴展電路330輸出的32比特的數(shù)據(jù)dataAAA中的低位N比特的部分的比特序列。dataB730是與從符號擴展電路330輸入的dataAAA對應(yīng),并從第I比特選擇器360輸出的32比特的數(shù)據(jù)dataB中的低位N比特的部分的比特序列。width740是通過從指令解碼器120輸入的解碼信號width所指定的比特長度。shift_len750是通過從指令解碼器120輸入的解碼信號shift_len所指定的移位量。在從指令解碼器120輸入與shrnhN指令對應(yīng)的解碼信號時,異或門310 (參照圖4)將邏輯值“O”的shift_dir向左右移位器320輸出。于是,左右移位器320將dataA700向左方向移位由shift_len750所指定的移位量,并輸出dataAA710。并且,當(dāng)從指令解碼器120輸入與shrnhN指令對應(yīng)的解碼信號時,解碼器450 (參照圖5)將低位N比特全部的邏輯值為“O”的extjnask向第2比特選擇器460輸出。于是,第2比特選擇器460將dataAA710直接作為dataAAA720輸出。另一方面,加法器340 (參照圖4)將width740的值和shift_len750的值相加,并輸出mask_width。而且,掩碼數(shù)據(jù)生成電路350向第I比特選擇器360輸出低位N比特中的由mask_width的值所示出的包含最低位比特的比特序列的邏輯值為“1”,低位N比特中的除此以外的比特的邏輯值為“O”的mask。
因此,第I比特選擇器360從dataAAA720選擇width740的值與shift_len750的值之和的值的比特寬(bit width)的包含最低位比特的比特序列,除此以外的比特從dataA700中選擇,從而作為dataB730輸出。這樣,在指令解碼器120解碼了 shrnhN指令的情況下,比特操作電路150從dataA700中,將由width740所指定的比特長度的包含最低位比特的比特序列,左移位由shift_len750所指定的移位量,并不將由N — (width740+shift_len750)的值所指定的比特長度的包含最高位比特的比特序列移位,由此生成比特序列dataB730并輸出。圖9是表示指令解碼器120解碼了 shrnlN指令的情況下的比特操作電路150所利用及生成的數(shù)據(jù)的結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)圖。在該圖中,dataA800、dataAA810、dataAAA820、dataB830、width840、以及shift_len850 分別與圖 8 中的 dataA700、dataAA710、dataAAA720、dataB730、width740、以及shift_len750相同。因此,這里省略對它們的說明。 當(dāng)從指令解碼器120輸入與shrnlN指令對應(yīng)的解碼信號時,異或門310將邏輯值為“I”的shift_dir向左右移位器320輸出。于是,左右移位器320將dataA800向右方向進行由shift_len850指定的移位量的不伴隨符號擴展的移位,并輸出dataAA810。這里,左右移位器320進行的移位是不伴隨符號擴展的移位,在圖9中的零擴展區(qū)域860中插入邏輯值“O”。并且,當(dāng)從指令解碼器120輸入與shrnlN指令對應(yīng)的解碼信號時,解碼器450將低位N比特全部的邏輯值為“O”的extjnask向第2比特選擇器460輸出。于是,第2比特選擇器460將dataAA810直接作為dataAAA820輸出。另一方面,加法器340將width840的值與shift_len850的值相加,并輸出mask_width。而且,掩碼數(shù)據(jù)生成電路350向第I比特選擇器360輸出低位N比特中的由N —(width840+shift_len850)的值所指定的比特長度的包含最低位比特的比特序列的邏輯值為“1”,低位N比特中的除此以外的比特的邏輯值為“O”的mask。因此,第I比特選擇器360從dataAAA820選擇width840的值與shift_len850的值之和的值的比特寬的包含最高位比特的比特序列,并從dataASOO選擇除此以外的比特,從而作為dataB830而輸出。這樣,在指令解碼器120解碼了 shrnlN指令的情況下,比特操作電路150從dataA800中,將由width840所指定的比特長度的包含最高位比特的比特序列不伴隨符號擴展地右移位由shift_len850所指定的移位量,并不將由N — (width840+shift_len850)的值所指定的比特長度的包含最低位比特的比特序列移位,由此生成比特序列dataB830并輸出。圖10是表示指令解碼器120解碼了 shrnlsN指令的情況下的比特操作電路150所利用以及生成的數(shù)據(jù)的結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)圖。在該圖中,dataA900、dataAA910、dataAAA920、dataB930、width940、以及shift_len950 分別與圖 8 中的 dataA700、dataAA710、dataAAA720、dataB730、width740、以及shift_len750相同。因此,這里省略對它們的說明。當(dāng)從指令解碼器120輸入與shrnlsN指令對應(yīng)的解碼信號時,異或門310將邏輯值為“I”的shift_dir向左右移位器320輸出。于是,左右移位器320將dataA800向右方向進行由shift_len850所指定的移位量的伴隨符號擴展的移位,并輸出dataAA810。這里,左右移位器320進行的移位因為伴隨符號擴展,所以在圖10中的符號擴展區(qū)域960中dataA900的最高位比特被符號擴展。并且,當(dāng)從指令解碼器120輸入與shrnlsN指令對應(yīng)的解碼信號時,解碼器450將低位N比特全部的邏輯值為“O”的ext_mask向第2比特選擇器460輸出。于是,第2比特選擇器460將dataAA910直接作為dataAAA920輸出。另一方面,加法器340將width940的值與shift_len950的值相加,并輸出mask_width。而且,掩碼數(shù)據(jù)生成電路350向第I比特選擇器360輸出低位N比特中的由N —(width940+shift_len950)的值所指定的比特長度的包含最低位比特的比特序列的邏輯值為“1”,低位N比特中的除此以外的比特的邏輯值為“O”的mask。 因此,第I比特選擇器360從dataAAA920選擇width940的值與shift_len950的值之和的值的比特寬的包含最高位比特的比特序列,除此以外的比特從dataA900中選擇,從而作為dataB930輸出。這樣,在指令解碼器120解碼了 shrnlN指令的情況下,比特操作電路150從dataA900中,將由width940所指定的比特長度的包含最高位比特的比特序列伴隨符號擴展而右移位由shift_len950所指定的移位量,并不移位由N — (width940+shift_len950)的值所指定的比特長度的包含最低位比特的比特序列,由此生成比特序列dataB830并輸出。圖11是表示在指令解碼器120解碼了 extrhN指令的情況下的比特操作電路150所利用以及生成的數(shù)據(jù)的結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)圖。在該圖中,dataAlOOO、dataAAlOlO、dataAAA1020、dataB1030>widthl040> 以及shift_lenl050 分別與圖 8 中的 dataA700、dataAA710、dataAAA720、dataB730、width740、以及shift_len750相同。因此,這里省略對它們的說明。當(dāng)從指令解碼器120輸入與extrhN指令對應(yīng)的解碼信號時,異或門310將邏輯值為“I”的shift_dir向左右移位器320輸出。于是,左右移位器320將dataAlOOO向右方向進行不伴隨符號擴展的由shift_lenl050所指定的移位量的移位,并輸出dataAAlOlO。這里,左右移位器320進行的移位由于不伴隨符號擴展,所以在圖11中的第I零擴展區(qū)域1060中插入邏輯值“O”。并且,由于從指令解碼器120輸入的sign的邏輯值為“0”,所以第3選擇器440將邏輯值“O”作為ext_data輸出。而且,當(dāng)從指令解碼器120輸入與extrhN指令對應(yīng)的解碼信號時,解碼器450輸出低位N比特中的由widthl040的值所指定的比特長度的包含最低位比特的比特序列的邏輯值為“1”,低位N比特中的除此以外的比特的邏輯值為“O”的ext_mask。于是,第2比特選擇器460從dataAAlOlO中,選擇由widthl040所指定的比特長度的包含最低位比特的比特序列,對除此以外的比特選擇邏輯值“0”,從而生成比特序列dataAAA1020并輸出。因此,圖11中的第2零擴展區(qū)域1070的邏輯值為“O”。另一方面,加法器340將widthl040的值與shift_lenl050的值相加,并輸出mask_width。而且,掩碼數(shù)據(jù)生成電路350向第I比特選擇器360輸出低位N比特中的由widthl040+shift_lenl050的值所指定的比特長度的包含最低位比特的比特序列的邏輯值為“ I”,低位N比特中的除此以外的比特的邏輯值為“O”的mask。
因此,第I 比特選擇器 360 從 dataAAA1020 選擇 widthl040 的值與 shift_lenl050的值之和的值的比特寬的包含最低位比特的比特序列,并從dataAlOOO選擇除此以外的比特,從而作為dataB1030輸出。這樣,在指令解碼器120解碼了 extrhN指令的情況下,比特操作電路150從dataAlOOO中,將由widthl040+shift_lenl050的值所指定的比特長度的包含最低位比特的比特序列不伴隨符號擴展地右移位由shift_lenl050所指定的移位量,并不移位由N —(widthl040+shift_lenl050)的值所指定的比特長度的包含最高位比特的比特序列,由此生成比特序列dataB1030并輸出。圖12是表示在指令解碼器120解碼了 extrlN指令的情況下的比特操作電路150所利用以及生成的數(shù)據(jù)的結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)圖。在該圖中,dataAllOO、dataAAlllO、dataAAA1120、dataB1130、widthll40、以及shift_lenll50 分別與圖 8 中的 dataA700、dataAA710、dataAAA720、dataB730、width740、 以及shift_len750相同。因此,這里省略了對它們的說明。當(dāng)從指令解碼器120輸入與extrlN指令對應(yīng)的解碼信號時,異或門310(參照圖4)將邏輯值為“O”的shift_dir向左右移位器320輸出。于是,左右移位器320將dataAllOO向左方向移位由shift_lenll50所指定的移位量,并輸出dataAAlllO。并且,由于從指令解碼器120輸入的sign的邏輯值為“0”,第3選擇器440將邏輯值“O”作為ext_data輸出。而且,當(dāng)從指令解碼器120輸入與extrlN指令對應(yīng)的解碼信號時,解碼器450輸出低位N比特中的由widthl040的值所指定的比特長度的包含最高位比特的比特序列的邏輯值為“1”,低位N比特中的除此以外的比特的邏輯值為“O”的ext_mask。于是,第2比特選擇器460從dataAAlllO中,選擇由widthl 140所指定的比特長度的包含最高位比特的比特序列,對除此以外的比特選擇邏輯值“0”,由此,生成比特序列dataAAA1120并輸出。因此,圖12中的第I零擴展區(qū)域1160的邏輯值成為“O”。另一方面,加法器340將widthll40的值與shift_lenll50的值相加,輸出mask_width。而且,掩碼數(shù)據(jù)生成電路350向第I比特選擇器360輸出低位N比特中的由widthl 140+shift_lenl 150的值所指定的比特長度的包含最高位比特的比特序列的邏輯值為“ I”,低位N比特中的除此以外的比特的邏輯值為“O”的mask。因此,第I 比特選擇器 360 從 dataAAA1120 選擇 widthl 140 的值與 shift_lenll50的值之和的值的比特寬的包含最高位比特的比特序列,從dataAllOO選擇除此以外的比特,并作為dataB1130輸出。這樣,比特操作電路150在指令解碼器120解碼了 extrlN指令的情況下,從dataAllOO中,將由widthll40+shift_lenll50的值所指定的比特長度的包含最高位比特的比特序列向左移位由shift_lenll50所指定的移位量,并不將由N —(widthll40+shift_lenll50)的值所指定的比特長度的包含最低位比特的比特序列移位,并將圖12中的第2零擴展區(qū)域1170的部分的邏輯值設(shè)為0,由此生成比特序列dataB1130并輸出。圖13是表示在指令解碼器120解碼了 extrlsN指令的情況下的比特操作電路150所利用及生成的數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)圖。在該圖中,dataA1200、dataAA1210、dataAAA1220、dataB1230、widthl240、以及shift_lenl250,分別與圖 8 中的 dataA700、dataAA710、dataAAA720、dataB730、width740、以及shift_len750相同。因此,這里省略對它們的說明。當(dāng)從指令解碼器120輸入與extrlN指令相對應(yīng)的解碼信號時,異或門310 (參照圖4)將邏輯值為“O”的shift_dir向左右移位器320輸出。于是,左右移位器320將dataAllOO向左方向移位由shift_lenll50所指定的移位量,并輸出dataAAlllO。并且,由于從指令解碼器120輸出的mask_dir的邏輯值為“1”,所以第I選擇器420選擇從減法器410輸出的N-width,并作為sign_off set輸出。于是,第2選擇器430將dataAA1210中的第N_width比特的信號作為sign_data輸出。而且,由于從指令解碼器120輸入的sign的邏輯值為“1”,第3選擇器440將dataAA1210中的第N_width比特的信號作為ext_data輸出。而且,當(dāng)從指令解碼器120輸入與extrlsN指令相對應(yīng)的解碼信號時,解碼器450輸出低位N比特中的由widthl040的值所指定的比特長度的包含最高位比特的比特序列的邏輯值為“1”,低位N比特中的除此以外的比特的邏輯值為“O”的extjnask。于是,第2比特選擇器460從dataAA1210選擇由widthl 140所指定的比特長度的包含最高位比特的比特序列,對除此以外的比特選擇dataAA1210中的第N_width比特的信號,由此生成比特序列dataAAA1120并輸出。因此,圖13中的第I符號擴展區(qū)域1260的邏輯值成·為dataAA1210中的第N_width比特的邏輯值。另一方面,加法器340將widthl240的值與shift_lenl250的值相加,并輸出mask_width。而且,掩碼數(shù)據(jù)生成電路350向第I比特選擇器360輸出低位N比特中的由widthl240+shift_lenl250的值所指定的比特長度的包含最高位比特的比特序列的邏輯值為“1”,低位N比特中的除此以外的比特的邏輯值成為dataAA1210中的第N_width比特的邏輯值的mask。因此,第I 比特選擇器 360 從 dataAAA1220 選擇 widthl240 的值與 shift_lenl250的值之和的值的比特寬的包含最高位比特的比特序列,從dataA1200選擇除此以外的比特,并作為dataB 1230輸出。這樣,在指令解碼器120解碼了 extrlsN指令的情況下,比特操作電路150從dataA1200中,將由widthl240+shift_lenl250的值所指定的比特長度的包含最高位比特的比特序列左移位由shift_lenl250所指定的移位量,并不將由N — (widthl240+shift_lenl250)的值所指定的比特長度的包含最低位比特的比特序列移位,在圖13中的第2符號擴展區(qū)域1270的部分中,復(fù)制dataAA1210中的第N_width比特的信號,由此生成比特序列dataB1230 并輸出?!磩幼鳌禂?shù)據(jù)處理裝置100進行的特征動作中,包括比特操作處理。以下,使用附圖對該比特操作處理進行說明?!幢忍夭僮魈幚怼当忍夭僮魈幚硎窃谥噶钊〕鰡卧?10 (參照圖I)從外部存儲器讀出比特操作種指令的情況下,使指令解碼器120、寄存器文件140和比特操作電路150協(xié)同動作而進行的處理。圖14是數(shù)據(jù)處理裝置100進行的比特操作處理的流程圖。比特操作處理通過指令取出單元110從外部存儲器讀出比特操作種指令而開始。當(dāng)從外部存儲器讀出比特操作種指令時,指令取出單元110將讀出的比特操作種指令向指令解碼器120輸出。于是,指令解碼器120開始該輸入的比特操作種指令的解碼(步驟 S1310)。當(dāng)解碼比特操作種指令時,指令解碼器120將解碼信號reacLaddr和解碼信號write_addr向寄存器文件140輸出,將解碼信號sign、解碼信號mask_dir、解碼信號operation、解碼信號N、解碼信號width和解碼信號shift_len向比特操作電路150輸出(步驟 S1320)。當(dāng)從指令解碼器120輸入read_addr時,寄存器文件140將在由read_addr所指定的寄存器中存放的數(shù)據(jù)輸出(步驟S1330)。對于從寄存器文件140輸入的數(shù)據(jù),比特操作電路150執(zhí)行基于從指令解碼 器120輸入的sign、mask_dir、operation、N、width、以及shift_len的比特操作,并將通過執(zhí)行比特操作而生成的數(shù)據(jù)向由寄存器文件140中的write_addr所指定的寄存器寫入(步驟S1340)。當(dāng)結(jié)束步驟S1340時,數(shù)據(jù)處理裝置100結(jié)束該比特操作處理。〈考量〉數(shù)據(jù)處理裝置100能夠通過I個指令進行頂部對齊解包處理。下面,使用附圖對數(shù)據(jù)處理裝置100進行的頂部對齊解包處理的具體例進行說明。這里所例示的具體例是對于在寄存器文件140中的第I寄存器中存放的32比特的數(shù)據(jù)執(zhí)行頂部對齊解包處理,并將執(zhí)行結(jié)果存放于寄存器文件140中的第2寄存器的情況的例子。圖15是表示例示的具體例中比特操作電路150所利用及生成的數(shù)據(jù)的結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)圖。在該圖中,dataA1400是存放于寄存器文件140中的第I寄存器中的32比特的數(shù)據(jù),包括由7比特的有效比特序列1401與9比特的有效比特序列1402所構(gòu)成的16比特的比特序列、和16比特的邏輯值為“O”的無用比特序列1403。dataAA1410對應(yīng)于從寄存器文件140輸入的dataA1400,是從左右移位器320(參照圖4)輸出的32比特的比特序列。dataAAA1420對應(yīng)于從左右移位器320輸入的dataAA1410,是從符號擴展電路330輸出的32比特的比特序列。dataB1430對應(yīng)于從符號擴展電路330輸入的dataAAA,是從第I比特選擇器360輸出的32比特的比特序列。widthl440的比特長度是由從指令解碼器120輸入的解碼信號width所指定的比特長度,如后所述,在這里它的值為16。shift_lenl450是由從指令解碼器120輸入解碼信號shift_len所指定的移位量,如后所述,在這里它的值為9。在dataA1400存放于寄存器文件140中的第I寄存器中的情況下,通過向指令解碼器120輸入如下指令,數(shù)據(jù)處理裝置100開始本具體例中的作為頂部對齊解包處理的比特操作處理,該指令的操作碼為extrh32,操作數(shù)B為第2寄存器的寄存器名,操作數(shù)A為第I寄存器的寄存器名,操作數(shù)shift_len是作為有效比特序列1402的比特長度的9,操作數(shù)width是作為拆開(unpack)處理后的數(shù)據(jù)的單位比特長度的16。 當(dāng)比特操作處理開始時,指令解碼器120將解碼信號向比特操作電路150輸出,寄存器文件140將存放于第I寄存器的dataA1400向比特操作電路150輸出。
當(dāng)向比特操作電路150輸入解碼信號和dataA1400時,左右移位器320(參照圖4)進行將dataA1400向右方向不伴隨由shift_lenl450所指定的9比特的量的符號擴展的移位,并輸出dataAA1410。并且,當(dāng)輸入解碼信號時,解碼器450輸出作為由widthl040所指定的16比特的比特長度的包含最低位比特的比特序列的邏輯值為“1”,除此以外的比特的邏輯值為“O”的ext_mask。于是,第2比特選擇器460從dataAA1410選擇包含最低位比特的16比特的比特序列,對除此以外的比特選擇邏輯值“0”,由此,生成比特序列dataAAA1420并輸出。另一方面,掩碼數(shù)據(jù)生成電路350向第I比特選擇器360輸出作為widthl440(=16) +shift_lenl450 (=9)的值,S卩25比特的比特長度的包含最低位比特的比特序列的邏輯值為“1”,除此以外的比特的邏輯值為“O”的mask。因此,第I比特選擇器360從dataAAA1420選擇25比特的比特寬的包含最低位比特的比特序列,從dataA1400選擇除此以外的比特,作為dataB1430輸出。
·
之后,寄存器文件140將從比特操作電路150輸出的dataB1430存放到第2寄存器。這樣,數(shù)據(jù)處理裝置100能夠通過I個指令執(zhí)行如下的頂部對齊解包處理,該頂部對齊解包處理是將存放于第I寄存器的數(shù)據(jù)中的高位側(cè)16比特之中的7比特的有效比特序列1401、和9比特的有效比特序列1402分別配置在16比特的比特序列的最高位比特側(cè)并存放到第2寄存器中。<實施方式2>以下,作為本發(fā)明的數(shù)據(jù)處理裝置的一實施方式,對將實施方式I的數(shù)據(jù)處理裝置100的一部進行變形后的數(shù)據(jù)處理裝置1500進行說明。該數(shù)據(jù)處理裝置1500具有與實施方式I的比特操作電路150相同的多個比特操作電路,通過并列執(zhí)行該多個比特操作電路,能夠進行SIMD (Single Instruction MultiData,單指令多數(shù)據(jù))型數(shù)據(jù)處理。以下,對本實施方式2的數(shù)據(jù)處理裝置1500的結(jié)構(gòu),參照附圖,并以與實施方式I的數(shù)據(jù)處理裝置100的結(jié)構(gòu)的不同點為中心進行說明。<數(shù)據(jù)處理裝置1500的結(jié)構(gòu)>圖16是表示數(shù)據(jù)處理裝置1500的主要硬件結(jié)構(gòu)的框圖。正如該圖所示,數(shù)據(jù)處理裝置1500是從實施方式I的數(shù)據(jù)處理裝置100進行了如下變更的裝置,即,指令解碼器120變更為指令解碼器1520,寄存器文件140變更為寄存器文件1540,追加了校準器(aligner) 1570,而且,將所具有的比特操作電路變更為第I比特操作電路1551 第8比特操作電路1558共8個電路。指令解碼器1520是從實施方式I的指令解碼器120進行了如下變形的解碼器,即,追加了解碼SMD型比特操作種指令的功能。圖17是表示在指令解碼器120解碼SMD型比特操作種指令的情況下,作為解碼對象的SMD型比特操作種指令與解碼信號之間的對應(yīng)關(guān)系的解碼信號對應(yīng)表1600。在該圖中,指令形式1610表示作為解碼對象的SMD型比特操作種指令的助記符形式中的指令形式。SIMD型比特操作種指令包括如下6種指令,即,操作碼為shrnhNxM (N為8、16或32中的某一個。M為2、4或8中的某一個。以下相同)的shrnhNxM指令、操作碼為ShrnlNxM的shrnlNxM指令、操作碼為shrnlsNxM的shrnlsNxM指令、操作碼為extrhNxM的extrhNxM指令、操作碼為extrlNxM的extrlNxM指令、以及操作碼為extrlsNxM的extrlsNxM指令。而且,這些指令是以如下內(nèi)容為操作數(shù),S卩,用于指定寄存器文件1540內(nèi)的目的寄存器的寄存器名、用于指定寄存器文件1540內(nèi)的源寄存器的寄存器名A、表示小于N的第I比特長度的shift_len、以及表示小于N的第2比特長度的width。signl620、mask_dirl630> operationl640> N1650、M1655、widthl660> shift_Ienl670、read_addrl680、和write_addrl690分別是指令解碼器1520在解碼比特操作種指令時輸出的解碼信號。這些解碼信號中,signl620、mask_dirl630>operationl640> N1650、widthl660、shift_lenl670、read_addrl680、和 write_addrl690 分別與實施方式 I 中的 sign220、mask_dir230> operation240> N250、width260> shift_len270> read_addr280、和 write_addr290 相同。因此,這里省略對它們的說明。M1655是用二進制數(shù)表示操作碼中包含的數(shù)字M的4比特的信號,被輸出給寄存器文件1540。該M1655是表示在寄存器文件1540讀出數(shù)據(jù)或?qū)懭霐?shù)據(jù)時作為讀出對象或?qū)懭雽ο蟮募拇嫫鞯膫€數(shù)的信號。再次返回到圖16,繼續(xù)對數(shù)據(jù)處理裝置1500的結(jié)構(gòu)進行說明。寄存器文件1540是從實施方式I的寄存器文件140進行了如下變形后的文件,即,將16個通用寄存器各自的比特長度從4字節(jié)變?yōu)?字節(jié)。校準器1570與指令解碼器120、寄存器文件1540、第I比特操作電路1551 第8比特操作電路1558連接,并具有以下的6個功能。功能I :在從指令解碼器1520輸入M1655的情況下,M1655表示“2”時,當(dāng)從寄存器文件1540輸入64比特的比特序列時,將輸入比特序列中的由高位32比特構(gòu)成的比特序列向第I比特操作電路1551輸出,將輸入比特序列中的由低位32比特構(gòu)成的比特序列向第2比特操作電路1552輸出的功能。功能2 :在從指令解碼器1520輸入M1655的情況下,M1655表示“2”時,當(dāng)從第I比特操作電路1551輸入32比特的比特序列(后面稱為比特序列A)、從第2比特操作電路1552輸入32比特的比特序列(后面稱為比特序列B)時,生成比特序列A成為高位側(cè)、比特序列B成為低位側(cè)的64比特的比特序列,并向寄存器文件1540輸出的功能。功能3 :從指令解碼器1520輸入M1655的情況下,M1655表示“4”時,當(dāng)從寄存器文件1540輸入64比特的比特序列時,以使輸入比特序列中的由最高位16比特構(gòu)成的比特序列成為32比特的比特序列的方式向高位側(cè)進行比特擴展并輸出給第I比特操作電路1551,以使輸入比特序列中的由第2高位的16比特構(gòu)成的比特序列成為32比特的比特序列的方式向高位側(cè)進行比特擴展并輸出給第2比特操作電路1552,以使由第3高位的16比特構(gòu)成的比特序列成為32比特的比特序列的方式向高位側(cè)進行比特擴展并輸出給第3比特操作電路1553,以使由最低位16比特構(gòu)成的比特序列成為32比特的比特序列的方式向高位側(cè)進行比特擴展并輸出給第4比特操作電路1554的功能。這里,比特擴展例如是通過向擴展的部分插入邏輯值“O”而實現(xiàn)的。功能4 :在從指令解碼器1520輸入M1655的情況下,M1655表示“4”時,當(dāng)從第I比特操作電路1551輸入16比特的比特序列(后面稱為比特序列C)、從第2比特操作電路1552輸入16比特的比特序列(后面稱為比特序列D)、從第3比特操作電路1553輸入16比特的比特序列(后面稱為比特序列E)、從第4比特操作電路1554輸入16比特的比特序列(后面稱為比特序列F)時,生成從高位側(cè)開始順序成為比特序列C、比特序列D、比特序列E、比特序列F的64比特的比特序列,并向寄存器文件1540輸出的功能。功能5 :在從指令解碼器1520輸入M1655的情況下,M1655表示“8”時,當(dāng)從寄存器文件1540輸入64比特的比特序列時,以使輸入比特序列中的由最高位18比特構(gòu)成的比特序列成為32比特的比特序列的方式向高位側(cè)進行比特擴展并輸出給第I比特操作電路1551,以使輸入比特序列中的由第2高位的8比特構(gòu)成的比特序列成為32比特的比特序列的方式向高位側(cè)進行比特擴展并輸出給第2比特操作電路1552,以使由第3高位的8比特構(gòu)成的比特序列成為32比特的比特序列的方式向高位側(cè)進行比特擴展并輸出給第3比特操作電路1553,以使由第4高位的8比特構(gòu)成的比特序列成為32比特的比特序列的方式向高位側(cè)進行比特擴展并輸出給第4比特操作電路1554,以使由第5高位的8比特構(gòu)成的比特序列成為32比特的比特序列的方式向高位側(cè)進行比特擴展并輸出給第5比特操作電路1555,以使由第6高位的8比特構(gòu)成的比特序列成為32比特的比特序列的方式向高位側(cè)進 行比特擴展并輸出給第6比特操作電路1556,以使由第7高位的8比特構(gòu)成的比特序列成為32比特的比特序列的方式向高位側(cè)進行比特擴展并輸出給第7比特操作電路1557,以使由最低位8比特構(gòu)成的比特序列成為32比特的比特序列的方式向高位側(cè)進行比特擴展并輸出給第8比特操作電路1554的功能。這里,比特擴展例如是通過向擴展的部分插入邏輯值“O”而實現(xiàn)的。功能6 :當(dāng)從指令解碼器1520輸入M1655的情況下,M1655表示“8”時,當(dāng)從第I比特操作電路1551輸入8比特的比特序列(后面稱為比特序列G)、從第2比特操作電路1552輸入8比特的比特序列(后面稱為比特序列H)、從第3比特操作電路1553輸入8比特的比特序列(后面稱為比特序列I)、從第4比特操作電路1554輸入8比特的比特序列(后面稱為比特序列J)、從第5比特操作電路1555輸入8比特的比特序列(后面稱為比特序列K)、從第6比特操作電路1556輸入8比特的比特序列(后面稱為比特序列L)、從第7比特操作電路1557輸入8比特的比特序列(后面稱為比特序列M)、從第8比特操作電路1558輸入8比特的比特序列(后面稱為比特序列N)時,生成從高位側(cè)開始順序成為比特序列G、比特序列H、比特序列I、比特序列J、比特序列K、比特序列L、比特序列M、比特序列N的64比特的比特序列,并向寄存器文件1540輸出的功能。第I比特操作電路1551 第8比特操作電路1558分別具有與實施方式I的比特操作電路150相同的功能和相同的結(jié)構(gòu),并分別與指令解碼器1520和校準器1570連接,并分別輸入來自相互共用的指令解碼器1520的解碼信號?!纯偨Y(jié)〉具有上述結(jié)構(gòu)的數(shù)據(jù)處理裝置1500能夠通過I個指令對存放于寄存器文件1540的寄存器中的數(shù)據(jù)并列地執(zhí)行與由實施方式I的數(shù)據(jù)處理裝置100進行的比特操作處理相同的處理。即,能夠執(zhí)行所謂的SMD型比特操作處理。<實施方式3>以下,作為本發(fā)明的數(shù)據(jù)處理裝置的一實施方式,對將實施方式I的數(shù)據(jù)處理裝置100的一部分進行變形后的數(shù)據(jù)處理裝置1700進行說明。在指令解碼器解碼了操作碼為extrhN、extrlN、extrlsN的指令(下面將這些指令稱為“伸展指令(extension instructions)”)中的某一種指令的情況下,該數(shù)據(jù)處理裝置1700對于從寄存器文件輸出的數(shù)據(jù),實施預(yù)解包(pre-unpack)處理后輸入比特操作電路,在指令解碼器解碼了操作碼為shrnhN、shrnlN、shrnlsN的指令(下面將這些指令稱為“收縮指令”)中的某一種指令的情況下,該數(shù)據(jù)處理裝置1700對于從比特操作電路輸出的數(shù)據(jù),實施后打包(post-pack)處理后向寄存器文件輸出。這里,預(yù)解包處理是指,在作為解包處理的對象的比特序列中,對比特長度進行O擴展或者符號擴展的處理,后打包處理是指,在打包處理后的比特序列中,使存放有無用比特序列的部分的數(shù)據(jù)無效的處理。下面,參照附圖對本實施方式3的數(shù)據(jù)處理裝置1700的結(jié)構(gòu)以與實施方式I的數(shù)據(jù)處理裝置100的結(jié)構(gòu)的不同點為中心進行說明。<數(shù)據(jù)處理裝置1700的結(jié)構(gòu)>·圖18是表示數(shù)據(jù)處理裝置1700的主要硬件結(jié)構(gòu)的框圖。正如該圖所示,數(shù)據(jù)處理裝置1700是對于實施方式I的數(shù)據(jù)處理裝置100以追加了預(yù)解包電路1710和后打包電路1720的方式變形而成的裝置。在該圖中,預(yù)解包電路1710與指令解碼器120、寄存器文件140、和比特操作電路150連接,并具有以下的4個預(yù)解包功能。預(yù)解包功能I :在指令解碼器120解碼了伸展指令的情況下,當(dāng)從指令解碼器120輸入的解碼信號sign的邏輯值為“O”且解碼信號mask_dir的邏輯值為“O”時,對于從寄存器文件140輸入的32比特的比特序列中的低位N比特的比特序列,將比特長度為N/2的包含最低位比特的比特序列向左移位N/2比特,向移位后的、且比特長度為N/2的包含最低位比特的比特序列的部分,插入由邏輯值“O”構(gòu)成的比特序列,而后輸出的功能。預(yù)解包功能2 :在指令解碼器120解碼了伸展指令的情況下,當(dāng)從指令解碼器120輸入的解碼信號sign的邏輯值為“O”且解碼信號mask_dir的邏輯值為“I”時,對于從寄存器文件140輸入的32比特的比特序列中的低位N比特的比特序列,向比特長度為N/2的包含最高位比特的比特序列插入邏輯值“0”,而后輸出的功能。預(yù)解包功能3 :在指令解碼器120解碼了伸展指令的情況下,當(dāng)從指令解碼器120輸入的解碼信號sign的邏輯值為“I”時,對于從寄存器文件140輸入的32比特的比特序列中的低位N比特的比特序列,向比特長度為N/2比特的包含最高位比特的比特序列插入比特長度為N/2的包含最低位比特的比特序列的最高位比特的復(fù)制,而后輸出的功能。預(yù)解包功能4 :在指令解碼器120解碼了收縮指令的情況下,將從寄存器文件140輸入的32比特的比特序列原樣輸出的功能。后打包電路1720與指令解碼器120、比特操作電路150、和寄存器文件140連接,并具有以下的3個后打包功能。后打包功能I :在指令解碼器120解碼了收縮指令的情況下,當(dāng)從指令解碼器輸出的解碼信號mask_dir的邏輯值為“O”時,對于從比特操作電路150輸入的32比特的比特序列中的低位N比特的比特序列,將比特長度為N/2的包含最高位比特的比特序列向右移位N/2比特,并向移位后的、且比特長度為N/2的包含最高位比特的比特序列的部分,插入由邏輯值“ O ”構(gòu)成的無效比特序列,而后輸出的功能。后打包功能2 :在指令解碼器120解碼了收縮指令的情況下,當(dāng)從指令解碼器輸出的解碼信號mask_dir的邏輯值為“I”時,對于從比特操作電路150輸入的32比特的比特序列中的低位N比特的比特序列,向比特長度為N/2的包含最高位比特的比特序列插入由邏輯值“ O ”構(gòu)成的無效比特序列,而后輸出的功能。后打包功能3 :在指令解碼器120解碼了伸展指令的情況下,將從比特操作電路150輸入的32比特的比特序列原樣輸出的功能。〈總結(jié)〉在具有上述結(jié)構(gòu)的數(shù)據(jù)處理裝置1700中,在指令解碼器120解碼了伸展指令的情 況下,在預(yù)解包電路1710實施了預(yù)解包處理之后,比特操作電路150能夠進行比特操作,在指令解碼器120解碼了收縮指令的情況下,比特操作電路150進行了比特操作之后,后打包電路1720能夠進行后打包處理。< 補充 >上面,作為本發(fā)明的數(shù)據(jù)處理裝置的一實施方式,在實施方式I、實施方式2中對數(shù)據(jù)處理裝置的例子進行了說明,還能夠進行如下的變形,本發(fā)明當(dāng)然不限定于由上述實施方式所示的數(shù)據(jù)處理裝置。(I)在實施方式I中,對于作為指令解碼器120的解碼對象的指令為4字節(jié)、即32比特的比特長度的結(jié)構(gòu)為例進行了說明,但如果是能夠表現(xiàn)比特操作種指令的比特數(shù),不必須限定為32比特的比特長度的結(jié)構(gòu),例如也可以是64比特的比特長度的結(jié)構(gòu)。而且,作為指令解碼器的解碼對象的指令也可以是可變長指令的結(jié)構(gòu)。(2)在實施方式I中,以比特操作電路150對32比特的比特長度的數(shù)據(jù)進行比特操作處理的結(jié)構(gòu)為例進行了說明,但如果能夠基于來自指令解碼器120的解碼信號,進行比特操作處理,則不必須限定為對32比特的比特長度的數(shù)據(jù)進行比特操作處理的結(jié)構(gòu),例如,也可以是對128比特或16比特的比特長度的數(shù)據(jù)進行比特操作處理的結(jié)構(gòu)。(3)在實施方式I中,以操作碼中包含的“N”是8、16或32中某一個的結(jié)構(gòu)為例進行了說明,但如果是在作為比特操作電路150的比特操作處理對象的數(shù)據(jù)的比特數(shù)以下,則不必須限定為8、16或32中某一個的結(jié)構(gòu),例如也可以是作為12的結(jié)構(gòu)。(4)在實施方式I中,以寄存器文件140構(gòu)成為具有16個寄存器為例進行了說明,但如果能夠基于來自指令解碼器120的解碼信號,讀出寄存器的值,或者寫入寄存器的值,則不必須限定于具有16個寄存器的結(jié)構(gòu),例如也可以是具有32個寄存器的結(jié)構(gòu)。(5)在實施方式I中,以比特操作電路150是圖4、圖5所示的結(jié)構(gòu)為例進行了說明,但如果是具有與圖4、圖5所示的結(jié)構(gòu)的電路相同功能的電路,則不必須限定于圖4、圖5所示的結(jié)構(gòu)。作為一例,對于記述與圖4、圖5所示的比特操作電路150具有的功能相同的功能的RTL (RegsisterTransfer Language,寄存器傳輸語言)記述,考慮利用邏輯合成工具而獲得的邏輯合成電路。(6)在實施方式I中,mask_dir、operation和shift_dir具有如下的關(guān)系,即,通過這3個信號中的任意的2個信號,另外的I個信號也被唯一地確定。因此,在實施方式I中,對數(shù)據(jù)處理裝置100為如下結(jié)構(gòu)的例子進行了說明,即,指令解碼器120將mask_dir、和operation作為解碼信號輸出,比特操作電路150從這些信號中生成shift_dir并利用,但如果指令解碼器120將mask_dir、operation和shift_dir中的任意2個信號作為解碼信號而輸出,比特操作電路150從該2個信號生成另外的I個信號并利用,則不必須限定為指令解碼器120將mask_dir和operation作為解碼信號而輸出,比特操作電路150從這些信號生成shift_dir并利用的結(jié)構(gòu)。另外,根據(jù)從指令解碼器120輸出的解碼信號,當(dāng)(I)解碼對象的指令為收縮指令和伸展指令中的任一種指令時,如果能夠確定(2)不成為移位對象的比特序列是包含最高位比特的比特序列和包含最低位比特的比特序列中的某一種比特序列,則不必須限定為指令解碼器120將mask_dir、operation和shift_dir中的任意2個信號作為解碼信號輸出的結(jié)構(gòu)。例如,考慮有如下的結(jié)構(gòu)的例子,即,將表示解碼對象的指令是收縮指令和伸展指令中的某一種指令的信號(operation)、和表示作為移位對象的比特序列的移位方向是高位比特側(cè)和低位比特側(cè)中的某一方向的信號這2種信號作為解碼信號輸出。(7)在實施方式I中,¥丨(1111、811丨;1^_1611、和1]^81^_¥丨(1111具有如下的關(guān)系,即,根據(jù)這3個信號中的任意2個信號,另外的I個信號也被唯一地確定。 因此,在實施方式I中,以數(shù)據(jù)處理裝置100的如下結(jié)構(gòu),即,指令解碼器120將width和shift_len作為解碼信號輸出,比特操作電路150根據(jù)這些信號生成mask_width并利用的結(jié)構(gòu)為例進行了說明,但如果是指令解碼器120將width、shift_len、和mask_width中的任意2個信號作為解碼信號輸出,比特操作電路150根據(jù)這2個信號生成另外的I個信號并利用的結(jié)構(gòu),則不必須限定為指令解碼器120將width和shift_len作為解碼信號輸出,比特操作電路150根據(jù)這些信號生成mask_width并利用的結(jié)構(gòu)。另外,如果能夠根據(jù)從指令解碼器120輸出的解碼信號,確定成為移位對象的比特序列的比特長度、和不成為移位對象的比特序列的比特長度,則不必須限定為指令解碼器120將width、shift_len、和mask_width中的任意2個作為解碼信號輸出的結(jié)構(gòu)。例如,考慮有如下結(jié)構(gòu)的例子,即,將表示成為移位對象的比特序列的比特長度的信號(width)、和表示不成為移位對象的比特序列的比特長度的信號這2個信號作為解碼信號輸出的結(jié)構(gòu)。并且,例如,考慮有如下結(jié)構(gòu)的例子等,即,將表示不成為移位對象的比特序列的比特長度的信號、和表示不成為移位對象的比特序列的比特長度與成為移位對象的比特序列的比特長度之差的信號這2個信號作為解碼信號輸出的結(jié)構(gòu)。(8)在實施方式I中,以作為指令解碼器120的解碼對象的比特操作種指令相互獨立地指定源寄存器和目的寄存器的結(jié)構(gòu)為例進行了說明,但也可以以使源寄存器和目的寄存器為同一寄存器的方式,將源寄存器和目的寄存器指定為單一的寄存器。(9)在實施方式I中,以數(shù)據(jù)處理裝置100的如下結(jié)構(gòu),即,作為比特操作處理的對象的比特序列被存放在寄存器文件140的寄存器中的結(jié)構(gòu)為例進行了說明,但只要是存放在能夠唯一確定的存儲區(qū)域的比特序列,則不必須限定于作為比特操作處理的對象的比特序列被存放在寄存器文件140的寄存器中的結(jié)構(gòu),例如也可以是將存放在存儲器等的外部存儲裝置中的比特序列作為比特操作處理的對象的結(jié)構(gòu)。(10)在實施方式2中,以數(shù)據(jù)處理裝置1500具有8個比特操作電路的結(jié)構(gòu)為例進行了說明,但如果各個比特操作電路構(gòu)成為基于來自相互共用的指令解碼器120的解碼信號進行動作,則不必須構(gòu)成為具有8個比特操作電路,例如也可以構(gòu)成為具有16個比特操作電路。
(11)在實施方式3中,作為指令解碼器120的解碼對象的比特操作種指令以圖3所示的指令結(jié)構(gòu)為例進行了說明,但如果指令解碼器120能夠?qū)刂萍拇嫫魑募?40、比特操作電路150、和預(yù)解包電路1710的信號進行解碼,則也可以構(gòu)成為在I個指令中包含用于使預(yù)解包電路1710動作的部分、和用于使比特操作電路150動作的部分的復(fù)合指令。并且,作為指令解碼器120的解碼對象的比特操作種指令以圖3所示的指令的結(jié)構(gòu)為例進行了說明,但如果指令解碼器120能夠?qū)刂萍拇嫫魑募?40、比特操作電路150、和后打包電路1720的信號進行解碼,則也可以構(gòu)成為在I個指令中包含用于使后打包電路1720動作的部分、和用于使比特操作電路150動作的部分的復(fù)合指令。(12)在實施方式I中,數(shù)據(jù)處理裝置100例示了指令解碼器120將由圖3所示的指令形式210構(gòu)成的比特操作種指令設(shè)為解碼對象的結(jié)構(gòu)。然而,指令解碼器120如果能夠輸出包含比特操作電路150所需的全部控制信號的解碼信號,則作為解碼對象的比特操作種指令的指令形式不必須限定于圖3所示的指令形式210。作為一例,考慮有圖19所例示的指令形式的例子等。
·
圖19 Ca)所例示的指令形式是以助記符形式示意地示出作為解碼對象的比特操·意地表示作為解碼對象的比特操作種指令是收縮指令的情況下的指令形式。如圖19 (a)、(b)所示,這些指令形式是由I個操作碼和3個操作數(shù)構(gòu)成的指令。這里,由操作數(shù)shl5、操作數(shù)sh25所示的移位量,可以是能夠指定任意的值的形式,也可以是指定多個固定移位量中的某一個固定移動量的形式。并且,由操作數(shù)mskl6、操作數(shù)msk26所示的比特長度,可以是能夠指定任意的值的形式,也可以是指定多個固定比特長度中的某一個固定比特長度的形式。(13)下面,進一步對本發(fā)明的一實施方式的數(shù)據(jù)處理裝置的結(jié)構(gòu)以及其變形例和各效果進行說明。(a)本發(fā)明的一實施方式的數(shù)據(jù)處理裝置,其特征在于,具有解碼器,從I個指令中,讀取用于指定存放N比特的對象比特序列的比特序列存放區(qū)域的信息、表示N比特的比特序列中的第I比特范圍的信息、和表示該N比特的比特序列中的第2比特范圍的信息,并將與所讀取的信息對應(yīng)的解碼信號輸出,該第I比特范圍包含該N比特的比特序列中的第I端比特,該第2比特范圍是與該第I比特范圍連續(xù)的比特范圍,并且不包含該N比特的比特序列中的第2端比特,其中,N是2以上的整數(shù);以及比特操作電路,當(dāng)從所述解碼器輸出解碼信號時,根據(jù)該解碼信號,基于存放在所述比特序列存放區(qū)域中的所述對象比特序列,生成由N比特構(gòu)成的輸出比特序列并輸出,所述比特操作電路為,通過在所述輸出比特序列中的所述第I比特范圍中,配置與所述對象比特序列中的所述第I比特范圍的比特序列等值的比特序列,并在所述輸出比特序列中的第3比特范圍中,配置與所述對象比特序列中的所述第2比特范圍的比特序列等值的比特序列,并在所述輸出比特序列中的不屬于所述第I比特范圍和所述第3比特范圍中任一比特范圍的部分中,配置相同的規(guī)定值,由此來生成所述輸出比特序列,該第3比特范圍包含所述第2端比特并由所述第2比特范圍的比特長度構(gòu)成。根據(jù)具有上述結(jié)構(gòu)的本實施方式的數(shù)據(jù)處理裝置,根據(jù)由I個指令解碼得到的解碼信號進行動作的比特操作電路,對存放在比特序列存放區(qū)域中的比特序列之中的被打包在第I比特范圍和第2比特范圍中的數(shù)據(jù),以在第I比特范圍和第2比特范圍之間插入由相同的規(guī)定值構(gòu)成的比特序列的方式進行解包并輸出。由此,該數(shù)據(jù)處理裝置能夠相對高效率地執(zhí)行被打包的數(shù)據(jù)的解包。圖20是表示上述變形例中的數(shù)據(jù)處理裝置2200的結(jié)構(gòu)的框圖。如該圖所示,數(shù)據(jù)處理裝置2200由解碼器2210和比特操作電路2220構(gòu)成。解碼器2210與比特操作電路2220連接,并具有如下功能,即,從I個指令中,讀取用于指定存放N比特的對象比特序列的比特序列存放區(qū)域的信息、表示N比特的比特序列中的第I比特范圍的信息、和表示該N比特的比特序列中的第2比特范圍的信息,并將與所讀取的信息對應(yīng)的解碼信號輸出,該第I比特范圍包含該N比特的比特序列中的第I端 比特,該第2比特范圍是與該第I比特范圍連續(xù)的比特范圍,并且不包含該N比特的比特序列中的第2端比特,其中,N是2以上的整數(shù)。作為一例,以實施方式I中的指令解碼器120來實現(xiàn)。比特操作電路2220與解碼器2210連接,并具有如下功能,即,當(dāng)從解碼器2210輸出解碼信號時,根據(jù)該解碼信號,基于存放在所述比特序列存放區(qū)域中的所述對象比特序列,生成由N比特構(gòu)成的輸出比特序列并輸出,所述比特操作電路為,通過在所述輸出比特序列中的所述第I比特范圍中,配置與所述對象比特序列中的所述第I比特范圍的比特序列等值的比特序列,并在所述輸出比特序列中的第3比特范圍中,配置與所述對象比特序列中的所述第2比特范圍的比特序列等值的比特序列,并在所述輸出比特序列中的不屬于所述第I比特范圍和所述第3比特范圍中任一比特范圍的部分中,配置相同的規(guī)定值,由此來生成所述輸出比特序列,該第3比特范圍包含所述第2端比特并由所述第2比特范圍的比特長度構(gòu)成。(b)并且,也可以是,所述解碼器還從I個指令中讀取表示是否進行符號擴展的符號擴展信息,并將與該符號擴展信息對應(yīng)的表示是否進行符號擴展的符號擴展信號包含在要輸出的解碼信號中,在從所述解碼器輸出的解碼信號中包含的符號擴展信號表示進行符號擴展的情況下,所述比特操作電路將所述輸出比特序列中的如下比特序列中的最高位比特的值設(shè)為所述規(guī)定值,該比特序列被配置在所述第I比特范圍和所述第3比特范圍之中相對處于低位側(cè)的比特范圍中,在從所述解碼器輸入的解碼信號中包含的所述符號擴展信號表示不進行符號擴展的情況下,所述比特操作電路將數(shù)值零設(shè)為所述規(guī)定值。根據(jù)這樣的結(jié)構(gòu),通過使作為解碼器的解碼對象的I個指令包含符號擴展信息,能夠?qū)τ跀?shù)據(jù)處理裝置指定使其進行符號擴展的處理和零揷入的處理中的某一種處理。(c)并且,也可以是,作為所述解碼器的解碼對象的I個指令,是包含比特長度信號的比特序列,該比特長度信號用于指定所述第I比特范圍的比特長度和所述第2比特范圍的比特長度,所述解碼器使所述解碼信號包含與所述比特長度信號對應(yīng)的用于指定所述第I比特范圍的比特長度和所述第2比特范圍的比特長度的比特長度解碼信號,并輸出包含該比特長度解碼信號的所述解碼信號,所述比特操作電路根據(jù)從所述解碼器輸出的解碼信號中所包含的比特長度解碼信號,生成所述輸出比特序列。根據(jù)這樣的結(jié)構(gòu),能夠使用比特長度信號進行第I比特范圍的比特長度和第2比特范圍的比特長度的指定。(d)并且,也可以是,所述比特長度信號包含表示所述第I比特范圍的比特長度的信號、表示所述第2比特范圍的比特長度的信號、和表示由N比特構(gòu)成的比特序列中的所述第2比特范圍與所述第3比特范圍的差分比特數(shù)的信號之中的任意兩種信號。根據(jù)這樣的結(jié)構(gòu),能夠使用表示第I比特范圍的比特長度的信號、和表示第2比特范圍的比特長度的信號、和由N比特構(gòu)成的比特序列中的表示第2比特范圍與第3比特范圍之間的差分比特數(shù)的信號之中的某兩個來進行第I比特范圍的比特長度和第2比特范圍的比特長度的指定。(e)并且,也可以是,作為所述解碼器的解碼對象的I個指令,還包含表示所述第I端比特是最高位比特和最低位比特中的哪一種比特的端比特信號,所述解碼器還使所述解碼信號包含與所述端比特信號對應(yīng)的表示最高位比特和最低位比特中的哪一種比特的端比特解碼信號,并輸出還包含該端比特解碼信號的該解碼信號,所述比特操作電路還利用從所述解碼器輸出的解碼信號中所包含的端比特解碼信號,生成所述輸出比特序列。
根據(jù)這樣的結(jié)構(gòu),能夠使用端比特信號進行第I端比特是最高位比特和最低位比特中的哪一種比特的指定(f)并且,也可以是,所述解碼器還從I個指令中讀取表示是否進行預(yù)解包處理的預(yù)解包信息,并將與該預(yù)解包信息對應(yīng)的表示是否進行預(yù)解包處理的預(yù)解包信號包含在要輸出的解碼信號中,在從所述解碼器輸出的解碼信號中包含的預(yù)解包信號表示進行預(yù)解包處理的情況下,所述比特操作電路進行預(yù)解包處理。根據(jù)這樣的結(jié)構(gòu),通過使成為解碼器的解碼對象的I個指令包含預(yù)解包信息,能夠使數(shù)據(jù)處理裝置進行預(yù)解包處理。(g)并且,也可以是,具有追加比特操作電路,當(dāng)從所述解碼器輸出解碼信號時,該追加比特操作電路根據(jù)該解碼信號,基于追加對象比特序列生成由N比特構(gòu)成的追加輸出比特序列并輸出,該追加對象比特序列由存放在與所述比特序列存放區(qū)域建立了對應(yīng)的追加比特序列存放區(qū)域中的N比特構(gòu)成,所述追加比特操作電路通過在所述追加輸出比特序列中的所述第I比特范圍中,配置與所述追加對象比特序列中的所述第I比特范圍的比特序列等值的比特序列,并在所述追加輸出比特序列中的所述第3比特范圍中,配置與所述追加對象比特序列中的所述第2比特范圍的比特序列等值的比特序列,并在所述追加輸出比特序列中的不屬于所述第I比特范圍和所述第3比特范圍中任一比特范圍的部分中,配置相同的追加規(guī)定值,由此來生成所述追加輸出比特序列。根據(jù)這樣的結(jié)構(gòu),能夠在I個指令中,根據(jù)存放在比特序列存放區(qū)域中的對象比特序列和存放在追加比特序列存放區(qū)域中的追加對象比特序列,基于該各個比特序列,生成輸出比特序列和追加輸出比特序列并輸出。工業(yè)實用性本發(fā)明的數(shù)據(jù)處理裝置能夠廣泛地利用于處理由多個比特構(gòu)成的數(shù)字信號的設(shè)備。符號說明100數(shù)據(jù)處理裝置110指令取出單元120指令解碼器130裝入存儲單元
140寄存器文件150比特操作電路 160時鐘脈沖發(fā)生器。
權(quán)利要求
1.一種數(shù)據(jù)處理裝置,其特征在于,具有 解碼器,從I個指令中,讀取用于指定存放N比特的對象比特序列的比特序列存放區(qū)域的信息、表示N比特的比特序列中的第I比特范圍的信息、和表示該N比特的比特序列中的第2比特范圍的信息,并將與所讀取的信息對應(yīng)的解碼信號輸出,該第I比特范圍包含該N比特的比特序列中的第I端比特,該第2比特范圍是與該第I比特范圍連續(xù)的比特范圍,并且不包含該N比特的比特序列中的第2端比特,其中,N是2以上的整數(shù);以及 比特操作電路,當(dāng)從所述解碼器輸出解碼信號時,根據(jù)該解碼信號,基于存放在所述比特序列存放區(qū)域中的所述對象比特序列,生成由N比特構(gòu)成的輸出比特序列并輸出, 所述比特操作電路為,通過在所述輸出比特序列中的所述第I比特范圍中,配置與所述對象比特序列中的所述第I比特范圍的比特序列等值的比特序列,并在所述輸出比特序列中的第3比特范圍中,配置與所述對象比特序列中的所述第2比特范圍的比特序列等值的比特序列,并在所述輸出比特序列中的不屬于所述第I比特范圍和所述第3比特范圍中 任一比特范圍的部分中,配置相同的規(guī)定值,由此來生成所述輸出比特序列,該第3比特范 圍包含所述第2端比特并由所述第2比特范圍的比特長度構(gòu)成。
2.如權(quán)利要求I所述的數(shù)據(jù)處理裝置,其特征在于, 所述解碼器還從I個指令中讀取表示是否進行符號擴展的符號擴展信息,并將與該符號擴展信息對應(yīng)的表示是否進行符號擴展的符號擴展信號包含在要輸出的解碼信號中, 在從所述解碼器輸出的解碼信號中包含的符號擴展信號表示進行符號擴展的情況下,所述比特操作電路將所述輸出比特序列中的如下比特序列中的最高位比特的值設(shè)為所述規(guī)定值,該比特序列被配置在所述第I比特范圍和所述第3比特范圍之中相對處于低位側(cè)的比特范圍中, 在從所述解碼器輸入的解碼信號中包含的所述符號擴展信號表示不進行符號擴展的情況下,所述比特操作電路將數(shù)值零設(shè)為所述規(guī)定值。
3.如權(quán)利要求2所述的數(shù)據(jù)處理裝置,其特征在于, 作為所述解碼器的解碼對象的I個指令,是包含比特長度信號的比特序列,該比特長度信號用于指定所述第I比特范圍的比特長度和所述第2比特范圍的比特長度, 所述解碼器使所述解碼信號包含與所述比特長度信號對應(yīng)的用于指定所述第I比特范圍的比特長度和所述第2比特范圍的比特長度的比特長度解碼信號,并輸出包含該比特長度解碼信號的所述解碼信號, 所述比特操作電路根據(jù)從所述解碼器輸出的解碼信號中所包含的比特長度解碼信號,生成所述輸出比特序列。
4.如權(quán)利要求3所述的數(shù)據(jù)處理裝置,其特征在于, 所述比特長度信號包含表示所述第I比特范圍的比特長度的信號、表示所述第2比特范圍的比特長度的信號、和表示由N比特構(gòu)成的比特序列中的所述第2比特范圍與所述第3比特范圍的差分比特數(shù)的信號之中的任意兩種信號。
5.如權(quán)利要求3所述的數(shù)據(jù)處理裝置,其特征在于, 作為所述解碼器的解碼對象的I個指令,還包含表示所述第I端比特是最高位比特和最低位比特中的哪一種比特的端比特信號, 所述解碼器還使所述解碼信號包含與所述端比特信號對應(yīng)的表示最高位比特和最低位比特中的哪一種比特的端比特解碼信號,并輸出還包含該端比特解碼信號的所述解碼信號, 所述比特操作電路還利用從所述解碼器輸出的解碼信號中所包含的端比特解碼信號,生成所述輸出比特序列。
6.如權(quán)利要求2所述的數(shù)據(jù)處理裝置,其特征在于, 所述解碼器還從I個指令中讀取表示是否進行預(yù)解包處理的預(yù)解包信息,并將與該預(yù)解包信息對應(yīng)的表示是否進行預(yù)解包處理的預(yù)解包信號包含在要輸出的解碼信號中, 在從所述解碼器輸出的解碼信號中包含的預(yù)解包信號表示進行預(yù)解包處理的情況下,所述比特操作電路進行預(yù)解包處理。
7.如權(quán)利要求I所述的數(shù)據(jù)處理裝置,其特征在于, 具有追加比特操作電路,當(dāng)從所述解碼器輸出解碼信號時,該追加比特操作電路根據(jù)該解碼信號,基于追加對象比特序列生成由N比特構(gòu)成的追加輸出比特序列并輸出,該追加對象比特序列由存放在與所述比特序列存放區(qū)域建立了對應(yīng)的追加比特序列存放區(qū)域中的N比特構(gòu)成, 所述追加比特操作電路通過在所述追加輸出比特序列中的所述第I比特范圍中,配置與所述追加對象比特序列中的所述第I比特范圍的比特序列等值的比特序列,并在所述追加輸出比特序列中的所述第3比特范圍中,配置與所述追加對象比特序列中的所述第2比特范圍的比特序列等值的比特序列,并在所述追加輸出比特序列中的不屬于所述第I比特范圍和所述第3比特范圍中任一比特范圍的部分中,配置相同的追加規(guī)定值,由此來生成所述追加輸出比特序列。
8.一種數(shù)據(jù)處理方法,是數(shù)據(jù)處理裝置進行的數(shù)據(jù)處理方法,該數(shù)據(jù)處理裝置包含解碼指令的解碼器、和根據(jù)從該解碼器輸出的解碼信號進行處理的比特操作電路,該數(shù)據(jù)處理方法的特征在于, 具有 解碼步驟,所述解碼器從I個指令中,讀取用于指定存放N比特的對象比特序列的比特序列存放區(qū)域的信息、表示N比特的比特序列中的第I比特范圍的信息、和表示該N比特的比特序列中的第2比特范圍的信息,并將與所讀取的信息對應(yīng)的解碼信號輸出,該第I比特范圍包含該N比特的比特序列中的第I端比特,該第2比特范圍是與該第I比特范圍連續(xù)的比特范圍,并且不包含該N比特的比特序列中的第2端比特,其中,N是2以上的整數(shù);以及 比特操作步驟,當(dāng)在所述解碼步驟中從所述解碼器輸出解碼信號時,所述比特操作電路根據(jù)該解碼信號,基于存放在所述比特序列存放區(qū)域中的所述對象比特序列,生成由N比特構(gòu)成的輸出比特序列并輸出, 所述比特操作步驟中,通過在所述輸出比特序列中的所述第I比特范圍中,配置與所述對象比特序列中的所述第I比特范圍的比特序列等值的比特序列,并在所述輸出比特序列中的第3比特范圍中,配置與所述對象比特序列中的所述第2比特范圍的比特序列等值的比特序列,并在所述輸出比特序列中的不屬于所述第I比特范圍和所述第3比特范圍中任一比特范圍的部分中,配置相同的規(guī)定值,由此來生成所述輸出比特序列,該第3比特范圍包含所述第2端比特并由所述第2比特范圍的比特長度構(gòu)成。
全文摘要
具有解碼器,從1個指令中,讀取用于指定存放N比特的對象比特序列的比特序列存放區(qū)域的信息、表示N比特的比特序列中的第1比特范圍的信息、和表示該N比特的比特序列中的第2比特范圍的信息,并將與所讀取的信息對應(yīng)的解碼信號輸出,該第1比特范圍包含該N比特的比特序列中的第1端比特,該第2比特范圍是與該第1比特范圍連續(xù)的比特范圍,并且不包含該N比特的比特序列中的第2端比特,其中,N是2以上的整數(shù);以及比特操作電路,當(dāng)從解碼器輸出解碼信號時,根據(jù)該解碼信號,基于存放在比特序列存放區(qū)域中的對象比特序列,生成由N比特構(gòu)成的輸出比特序列并輸出。
文檔編號G06F9/305GK102884505SQ201280001280
公開日2013年1月16日 申請日期2012年3月19日 優(yōu)先權(quán)日2011年4月8日
發(fā)明者馬場大介 申請人:松下電器產(chǎn)業(yè)株式會社