專(zhuān)利名稱(chēng):支持多種數(shù)據(jù)類(lèi)型的單指令多數(shù)據(jù)移位裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種微處理器體系結(jié)構(gòu)設(shè)計(jì),尤其涉及單指令多數(shù)據(jù)的移位部件。
背景技術(shù):
為了滿(mǎn)足日益增加的多媒體運(yùn)算性能需求,如數(shù)字音頻解碼,圖像處理以及視頻處理。在高性能的微處理器中,多媒體運(yùn)算單元以其良好的功耗及性能效益成為微處理器一個(gè)不可或缺的部件,比如ARM公司的neon擴(kuò)展單元。而為了獲得更好的多媒體處理性能,多媒體處理單元往往需要更寬的數(shù)據(jù)位寬(通常為128位的數(shù)據(jù)位寬),以期望獲得更大的單位處理能力,而增加的數(shù)據(jù)位寬無(wú)疑大大的增加了矢量處理單元的資源和功耗,從而大大的增加了成本,在多媒體處理單元中控制資源和成本無(wú)疑成為設(shè)計(jì)的一個(gè)重點(diǎn)。多媒體運(yùn)算中包含了大量的移位操作,單指令多數(shù)據(jù)移位處理單元是多媒體處理單元的一個(gè)重要部件。現(xiàn)有的設(shè)計(jì)方法主要是,處理單元中包含了處理器所支持的所有數(shù)據(jù)元素寬度的移位部件,通常,I個(gè)128位的數(shù)據(jù),需要包含了 4個(gè)32位的全移位器、8個(gè)16位的全移位器和16個(gè)8位的全移位器,然后根據(jù)當(dāng)前指令的數(shù)據(jù)元素寬度從上述的移位器中選擇最終移位結(jié)果。這種設(shè)計(jì)方法的缺點(diǎn)在于第一,沒(méi)有資源復(fù)用,耗費(fèi)大量邏輯資源,不利于成本控制;第二,邏輯時(shí)序性能不好,通常在高性能處理器中,單指令多數(shù)據(jù)的移位操作無(wú)法在一級(jí)流水線中完成,需要兩級(jí)甚至更多,而對(duì)上述移位部件的時(shí)序的劃分會(huì)非常困難,會(huì)造成功能上劃分不夠清晰,中間寄存器過(guò)多等缺點(diǎn)。
發(fā)明內(nèi)容
為了克服現(xiàn)有單指令多數(shù)據(jù)移位部件的資源耗費(fèi)過(guò)大,時(shí)序不好劃分的不足,本發(fā)明提供了一種資源復(fù)用,結(jié)構(gòu)簡(jiǎn)單且時(shí)序性能較好的支持多種數(shù)據(jù)類(lèi)型的單指令多數(shù)據(jù)移位裝置。本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案是一種支持多種數(shù)據(jù)類(lèi)型的單指令多數(shù)據(jù)移位裝置,包括N個(gè)原子移位陣列,N為正整數(shù),每個(gè)原子移位陣列支持32位數(shù)據(jù)寬度的移位操作,所述移位操作包括I個(gè)32位元素移位,即將32位數(shù)據(jù)當(dāng)作一個(gè)32位整型操作數(shù)元素進(jìn)行移位;2個(gè)16位元素并行移位,即將32位數(shù)據(jù)當(dāng)作2個(gè)16位整型操作數(shù)元素進(jìn)行移位;和4個(gè)8位元素并行移位,即將32位數(shù)據(jù)當(dāng)作4個(gè)8位整型操作數(shù)元素進(jìn)行移位;每個(gè)原子移位陣列包括格式轉(zhuǎn)換器,用于依據(jù)輸入的數(shù)據(jù)類(lèi)型信息,對(duì)輸入的32位原始數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換;第一移位器,用于接收格式轉(zhuǎn)換器輸出的32位數(shù)據(jù),并依據(jù)輸入的數(shù)據(jù)類(lèi)型信息與移位量,對(duì)32位數(shù)據(jù)進(jìn)行第一階段移位;第二移位器,用于接收第一移位器的輸出結(jié)果,以字節(jié)為單位對(duì)數(shù)據(jù)進(jìn)行第二階段移位;
移位結(jié)果封裝器,用于接收第二移位器的移位結(jié)果,并依據(jù)輸入的數(shù)據(jù)類(lèi)型控制信息,對(duì)移位后的字節(jié)數(shù)據(jù)整合封裝為最終移位結(jié)果。進(jìn)一步,所述格式轉(zhuǎn)換器中,格式轉(zhuǎn)換如下對(duì)于無(wú)符號(hào)左移操作,保持各個(gè)元素原數(shù)據(jù)不變;對(duì)于有符號(hào)左移操作,保持各個(gè)元素原數(shù)據(jù)不變;對(duì)于無(wú)符號(hào)右移操作,保持各個(gè)元素原數(shù)據(jù)不變;對(duì)于有符號(hào)右移操作若元素為正數(shù),則保持元素原數(shù)據(jù)不變;若元素為負(fù)數(shù),則將元素原數(shù)據(jù)取反。再進(jìn)一步,所述第一移位器中,所述第一階段移位對(duì)數(shù)據(jù)元素完成移位量為0/8/16/24/32的移位操作,具體操作方式如下當(dāng)數(shù)據(jù)元素寬度為8位時(shí),第一移位器不做操作;當(dāng)數(shù)據(jù)元素寬度為16位時(shí),第一移位器分別對(duì)2個(gè)16位元素采取如下操作若元素移位量小于8,則第一移位器不做操作;若兀素移位量大于等于8,且小于16,則第一移位器移位8位;若兀素移位量大于等于16,則該第一移位器移位16位;當(dāng)數(shù)據(jù)元素寬度為32位時(shí),第一移位器對(duì)32位元素采取如下操作若元素移位量小于8,則第一移位器不做操作;若兀素移位量大于等于8,且小于16,則第一移位器移位8位;若兀素移位量大于等于16,且小于24,則第一移位器移位16位;若元素移位量大于等于24,且小于32,則第一移位器移位24位;若元素移位量大于等于32,則該階段移位32位。所述第二移位器包括4個(gè)Sbit的左移位器和右移位器,將32位輸入數(shù)據(jù)劃分為4個(gè)8位子數(shù)據(jù),由低到高分別記為第一子數(shù)據(jù)、第二子數(shù)據(jù)、第三子數(shù)據(jù)和第四子數(shù)據(jù),并對(duì)各子數(shù)據(jù)按照如下方式擴(kuò)展后再移位對(duì)于左移操作,在各子數(shù)據(jù)高位O擴(kuò)展一倍位寬后進(jìn)行左移位器操作;對(duì)于右移操作,在各子數(shù)據(jù)低位O擴(kuò)展一倍位寬后進(jìn)行右移位器操作。所述第二移位器根據(jù)移位方向選擇輸出數(shù)據(jù),對(duì)各子數(shù)據(jù)的移位結(jié)果由低到高分別記輸出數(shù)據(jù)為第一輸出子數(shù)據(jù)、第二輸出子數(shù)據(jù)、第三輸出子數(shù)據(jù)和第四輸出子數(shù)據(jù)。再進(jìn)一步,所述移位結(jié)果封裝器中,對(duì)第二移位器四個(gè)輸出子數(shù)據(jù)按照如下方式進(jìn)行初步封裝對(duì)于數(shù)據(jù)元素寬度為8的操作,對(duì)各輸出子數(shù)據(jù)按如下方式初步封裝對(duì)于左移操作,直接舍棄第二移位器的各輸出子數(shù)據(jù)的高8位擴(kuò)展數(shù)據(jù),保留低8位數(shù)據(jù);對(duì)于右移操作,舍棄第二移位器的各輸出子數(shù)據(jù)的低8位擴(kuò)展數(shù)據(jù),保留高8位數(shù)據(jù);對(duì)于數(shù)據(jù)元素寬度為16位的操作,按照如下方式初步封裝對(duì)于左移的操作,舍棄第四輸出子數(shù)據(jù)和第二輸出子數(shù)據(jù)的高8位擴(kuò)展位,將第四輸出子數(shù)據(jù)低8位與第三輸出子數(shù)據(jù)的高8位求或?yàn)榻Y(jié)果第四字節(jié),第三輸出子數(shù)據(jù)的低8位為結(jié)果第三字節(jié),第二輸出子數(shù)據(jù)低8位與第一輸出子數(shù)據(jù)高8位求或后為結(jié)果第二字節(jié),第一輸出子數(shù)據(jù)的低8位為結(jié)果第一字節(jié);對(duì)于右移的操作,舍棄第三輸出子數(shù)據(jù)和第一輸出子數(shù)據(jù)的低8位,第四輸出子數(shù)據(jù)高8位為結(jié)果第四字節(jié),第四輸出子數(shù)據(jù)的低8位與第三輸出子數(shù)據(jù)的高8位求或后為結(jié)果第三字節(jié),第二輸出子數(shù)據(jù)的高8位為結(jié)果第二字節(jié),第二輸出子數(shù)據(jù)的低8為與第一輸出子數(shù)據(jù)的高8位求或后為結(jié)果第一字節(jié)。對(duì)于數(shù)據(jù)元素寬度為32位的操作,按照如下方式初步封裝對(duì)于左移的操作,舍棄第四輸出子數(shù)據(jù)的高8位擴(kuò)展位,第四輸出子數(shù)據(jù)的低8位與第三輸出子數(shù)據(jù)的高8位求或后為結(jié)果第四字節(jié),第三輸出子數(shù)據(jù)低8位與第二輸出子數(shù)據(jù)的高8位求或后為結(jié)果第三字節(jié),第二輸出子數(shù)據(jù)低8位與第一輸出子數(shù)據(jù)高8位求或后為結(jié)果第二字節(jié),第一輸出子數(shù)據(jù)低8位為結(jié)果第一字節(jié);對(duì)于右移的操作,舍棄第一輸出子數(shù)據(jù)的低8位擴(kuò)展位,第四輸出子數(shù)據(jù)高8位為結(jié)果第四字節(jié),第四輸出子數(shù)據(jù)低8位與第三輸出子數(shù)據(jù)高8位求或后為結(jié)果第三字節(jié),第三輸出子數(shù)據(jù)低8位與第二輸出子數(shù)據(jù)高8位求或后為結(jié)果第二字節(jié),第二輸出子數(shù)據(jù)低8位與第一輸出子數(shù)據(jù)高8位求或后為結(jié)果第一字節(jié)。更進(jìn)一步,所述移位結(jié)果封裝器中,對(duì)初步封裝后的結(jié)果數(shù)據(jù)按照如下方式獲取最終移位結(jié)果對(duì)于無(wú)符號(hào)左移操作,初步封裝結(jié)果為最終結(jié)果;對(duì)于有符號(hào)左移操作,初步封裝結(jié)果為最終結(jié)果;對(duì)于無(wú)符號(hào)右移操作,初步封裝結(jié)果為最終結(jié)果;對(duì)于有符號(hào)右移操作若元素為正數(shù),初步封裝結(jié)果為最終結(jié)果;若元素為負(fù)數(shù),初步封裝結(jié)果取反后為最終結(jié)果。進(jìn)一步,所述移位結(jié)果封裝器中,第一移位器移位量與第二移位器的移位量之和等于最終移位結(jié)果。本發(fā)明的有益效果主要表現(xiàn)在降低單指令多數(shù)據(jù)移位部件資源,提升部件的時(shí)序性能。
圖1為支持多數(shù)據(jù)寬度的單指令多數(shù)據(jù)的移位裝置的原子移位陣列的示意圖。圖2為原子移位陣列中格式轉(zhuǎn)換器示意圖。圖3為原子移位陣列中第一移位器的移位結(jié)果示意圖。圖4為原子移位陣列中第一移位器示意圖。圖5為原子移位陣列中第二移位器示意圖。圖6為原子移位整列中結(jié)果封裝器示意圖。
具體實(shí)施例方式下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步描述。參照?qǐng)D廣圖6,一種支持多種數(shù)據(jù)類(lèi)型的單指令多數(shù)據(jù)移位裝置,包括N個(gè)原子移位陣列,每個(gè)原子陣列支持32位數(shù)據(jù)寬度的移位操作,包括I個(gè)32位元素移位(將32位元素看作一個(gè)32位的整型數(shù)據(jù)進(jìn)行移位)或2個(gè)16位元素并行移位(將32位元素看作2個(gè)16位的整型數(shù)據(jù)進(jìn)行移位)或4個(gè)8位元素并行移位(將32位元素看作4個(gè)8位的整型數(shù)據(jù)進(jìn)行移位)。進(jìn)一步,每個(gè)原子移位陣列包括格式轉(zhuǎn)換器,依據(jù)輸入的數(shù)據(jù)類(lèi)型信息,對(duì)輸入的32位原始數(shù)據(jù)進(jìn)行如下格式轉(zhuǎn)換對(duì)于無(wú)符號(hào)左移操作,保持各個(gè)元素原數(shù)據(jù)不變;對(duì)于有符號(hào)左移操作,保持各個(gè)元素原數(shù)據(jù)不變;對(duì)于無(wú)符號(hào)右移操作,保持各個(gè)元素原數(shù)據(jù)不變;對(duì)于有符號(hào)右移操作若元素為正數(shù),則保持元素原數(shù)據(jù)不變;若元素為負(fù)數(shù),則將元素原數(shù)據(jù)取反。如圖2所示的格式轉(zhuǎn)換器,以操作是否為有符號(hào)且右移作為選擇信號(hào),選擇原始數(shù)據(jù)或求反后的數(shù)據(jù);以元素?cái)?shù)據(jù)寬度為3選I的選擇信號(hào),選擇從哪個(gè)子格式轉(zhuǎn)換器的輸出數(shù)據(jù)為最終格式轉(zhuǎn)換器結(jié)果。使用這種方法之后,后級(jí)移位過(guò)程只需統(tǒng)一移入O值。圖2中格式轉(zhuǎn)換器中包含了I個(gè)32位求反、2個(gè)16位求反、4個(gè)8位求反的邏輯以及若干選擇器邏輯。第一移位器,接收格式轉(zhuǎn)換器輸出的32位數(shù)據(jù),并依據(jù)輸入的數(shù)據(jù)類(lèi)型信息與移位量,對(duì)32位數(shù)據(jù)進(jìn)行第一階段移位,第一階段移位對(duì)數(shù)據(jù)元素完成移位量為0/8/16/24/32的移位操作,具體操作方式如下當(dāng)數(shù)據(jù)元素寬度為8位時(shí),第一移位器不做移位操作,圖3以及圖4中8位元素第一移位圖示可以看到若移位寬度為O到8,第一移位結(jié)果為原值(即移O位)。若移位寬度大于等于8,則移位結(jié)果為O (即移8位)。當(dāng)數(shù)據(jù)元素寬度為16位時(shí),第一移位器對(duì)2個(gè)16位元素采取分別的移位操作,如圖3及圖4的中16位元素第一移位可以看到,每個(gè)16位元素的移位結(jié)果有6種情況,左移和右移分別3中情況若元素移位量小于8,則第一移位器不做操作(即左移或右移O位);若兀素移位量大于等于8,且小于16,則第一移位器移位8位;若兀素移位量大于等于16,則該第一移位器移位16位(則移位結(jié)果為O)。當(dāng)數(shù)據(jù)元素寬度為32位時(shí),第一移位器對(duì)32位元素整體看作一個(gè)元素進(jìn)行移位操作,圖3和圖4中的32位元素第一移位可以看到,對(duì)32為元素,第一移位的結(jié)果共有10種情況,左移和右移分別5中情況若兀素移位量小于8,則第一移位器不做操作;若兀素移位量大于等于8,且小于16,則第一移位器移位8位;若兀素移位量大于等于16,且小于24,則第一移位器移位16位;若兀素移位量大于等于24,且小于32,則第一移位器移位24位;若元素移位量大于等于32,則該階段移位32位。本實(shí)施例中圖4所示,第一移位器包含了 I個(gè)32位的5個(gè)移位結(jié)果選擇器和2個(gè)16位的3個(gè)移位結(jié)果選擇器以及4個(gè)8位的2個(gè)移位結(jié)果選擇器,移位結(jié)果的選擇信號(hào)根據(jù)不同的元素寬度和整體移位量而采用上述的方式進(jìn)行選擇,例如,一個(gè)32位的數(shù)據(jù)元素,左移26位,移位量落在24到32的區(qū)間,則,第一移位器的移位結(jié)果應(yīng)選擇左移24位的結(jié)果。圖3中羅列了部分移位結(jié)果示例。最后如圖1中所示,第一移位器根據(jù)數(shù)據(jù)元素的寬度選擇上述的移位選擇器的結(jié)果作為第一移位器的輸出結(jié)果。第二移位器,接收第一移位器的輸出結(jié)果,以字節(jié)為單位對(duì)數(shù)據(jù)進(jìn)行第二階段移位,將32位輸入數(shù)據(jù)劃分為4個(gè)8位子數(shù)據(jù),由低到高分別記為第一子數(shù)據(jù)、第二子數(shù)據(jù)、第三子數(shù)據(jù)和第四子數(shù)據(jù),并對(duì)各子數(shù)據(jù)按照如下方式擴(kuò)展后再移位對(duì)于左移操作,在各子數(shù)據(jù)高位O擴(kuò)展一倍位寬后進(jìn)行左移位器操作;對(duì)于右移操作,在各子數(shù)據(jù)低位O擴(kuò)展一倍位寬后進(jìn)行右移位器操作。圖5所示的第二移位器對(duì)第一移位器的移位結(jié)果進(jìn)行補(bǔ)充移位。它包含了 4個(gè)8位的左移位器和4個(gè)8位的右移位器,如圖5所示,將第一移位器的結(jié)果按照字節(jié)劃分為Bl、4,左移位器在數(shù)據(jù)高位擴(kuò)展了 8個(gè)O,右移位器在數(shù)據(jù)的低位擴(kuò)展了 8個(gè)O。對(duì)擴(kuò)展后的16位數(shù)據(jù)進(jìn)行移位,可以看到第二移位器的移位量始終小于8,第二移位器的將得到64位的移位結(jié)果。進(jìn)一步,第二移位器根據(jù)移位方向選擇輸出數(shù)據(jù),對(duì)各子數(shù)據(jù)的移位結(jié)果由低到高分別記輸出數(shù)據(jù)為第一輸出子數(shù)據(jù)、第二輸出子數(shù)據(jù)、第三輸出子數(shù)據(jù)和第四輸出子數(shù)據(jù)。第一移位器移位量與第二移位器的移位量之和等于最終移位量。移位結(jié)果封裝器,接收第二移位器的移位結(jié)果,并依據(jù)輸入的數(shù)據(jù)類(lèi)型控制信息,對(duì)移位后的字節(jié)數(shù)據(jù)整合封裝為最終移位結(jié)果。圖6所示的移位結(jié)果封裝器,將第二移位器得到的64位數(shù)據(jù)封裝為最終的32位的移位結(jié)果,它包含了 I個(gè)32位封裝單元,I個(gè)16位封裝單元,I個(gè)8位封裝單元。下面根據(jù)不同數(shù)據(jù)元素寬度對(duì)封裝單元一一介紹對(duì)于數(shù)據(jù)元素寬度為8的操作,對(duì)各輸出子數(shù)據(jù)按如下方式進(jìn)行封裝對(duì)于左移操作,直接舍棄第二移位器的各輸出子數(shù)據(jù)的高8位擴(kuò)展數(shù)據(jù),保留低8位數(shù)據(jù),具體實(shí)施如圖6中的8位左移封裝,舍棄了字節(jié)4’、字節(jié)3’、字節(jié)2’、字節(jié)I’ ;對(duì)于右移操作,舍棄第二移位器的各輸出子數(shù)據(jù)的低8位擴(kuò)展數(shù)據(jù),保留高8位數(shù)據(jù),具體實(shí)施如圖6中的8位右移封裝,舍棄字節(jié)4、字節(jié)3、字節(jié)2、字節(jié)1,保留字節(jié)4’、字節(jié)3’、字節(jié)2’、字節(jié)I’為封裝的結(jié)果。最后,如圖6所示,對(duì)于封裝的結(jié)果進(jìn)行最后的格式轉(zhuǎn)換,轉(zhuǎn)換的功能與上述的格式轉(zhuǎn)換器一致,根據(jù)元素是否為有符號(hào)且右移做選擇信號(hào),選擇是否將結(jié)果取反。對(duì)于數(shù)據(jù)元素寬度為16位的操作,按照如下方式進(jìn)行封裝對(duì)于左移的操作,舍棄第四輸出子數(shù)據(jù)和第二輸出子數(shù)據(jù)的高8位擴(kuò)展位,將第四輸出子數(shù)據(jù)低8位與第三輸出子數(shù)據(jù)的高8位求或?yàn)榻Y(jié)果第四字節(jié),第三輸出子數(shù)據(jù)的低8位為結(jié)果第三字節(jié),第二輸出子數(shù)據(jù)低8位與第一輸出子數(shù)據(jù)高8位求或后為結(jié)果第二字節(jié),第一輸出子數(shù)據(jù)的低8位為結(jié)果第一字節(jié),具體實(shí)施方式
如圖6中的16位左移封裝所示,舍棄字節(jié)4’和字節(jié)2’,字節(jié)4與字節(jié)3’求或后為第四字節(jié)數(shù)據(jù),字節(jié)3為第三字節(jié)的結(jié)果,字節(jié)2與字節(jié)I’求或后為第二字節(jié)數(shù)據(jù),字節(jié)I為第一字節(jié)的結(jié)果;對(duì)于右移的操作,舍棄第三輸出子數(shù)據(jù)和第一輸出子數(shù)據(jù)的低8位,第四輸出子數(shù)據(jù)高8位為結(jié)果第四字節(jié),第四輸出子數(shù)據(jù)的低8位與第三輸出子數(shù)據(jù)的高8位求或后為結(jié)果第三字節(jié),第二輸出子數(shù)據(jù)的高8位為結(jié)果第二字節(jié),第二輸出子數(shù)據(jù)的低8為與第一輸出子數(shù)據(jù)的高8位求或后為結(jié)果第一字節(jié),具體實(shí)施方式
如圖6中的16位右移封裝所示,舍棄字節(jié)3和字節(jié)1,字節(jié)4’為第四字節(jié)的結(jié)果,字節(jié)4與字節(jié)3’求或后為第三字節(jié)數(shù)據(jù),字節(jié)2’為第二字節(jié)的結(jié)果,字節(jié)2與字節(jié)I’求或后為第一字節(jié)數(shù)據(jù)。最后,如圖6所示,對(duì)于封裝的結(jié)果進(jìn)行最后的格式轉(zhuǎn)換,轉(zhuǎn)換的功能與上述的格式轉(zhuǎn)換器一致,根據(jù)元素是否為有符號(hào)且右移做選擇信號(hào),選擇是否將結(jié)果取反。對(duì)于數(shù)據(jù)元素寬度為32位的操作,按照如下方式初步封裝對(duì)于左移的操作,舍棄第四輸出子數(shù)據(jù)的高8位擴(kuò)展位,第四輸出子數(shù)據(jù)的低8位與第三輸出子數(shù)據(jù)的高8位求或后為結(jié)果第四字節(jié),第三輸出子數(shù)據(jù)低8位與第二輸出子數(shù)據(jù)的高8位求或后為結(jié)果第三字節(jié),第二輸出子數(shù)據(jù)低8位與第一輸出子數(shù)據(jù)高8位求或后為結(jié)果第二字節(jié),第一輸出子數(shù)據(jù)低8位為結(jié)果第一字節(jié),具體實(shí)施如圖6中32位左移封裝所示,舍棄圖6所示字節(jié)4’,字節(jié)4與字節(jié)3’按位求或?yàn)榈谒淖止?jié)的數(shù)據(jù),字節(jié)3與字節(jié)2’按位求或?yàn)榈谌止?jié)的數(shù)據(jù),字節(jié)2與字節(jié)I’按位求或?yàn)榈诙止?jié)的數(shù)據(jù),字節(jié)I為第一字節(jié)的結(jié)果;對(duì)于右移的操作,舍棄第一輸出子數(shù)據(jù)的低8位擴(kuò)展位,第四輸出子數(shù)據(jù)高8位為結(jié)果第四字節(jié),第四輸出子數(shù)據(jù)低8位與第三輸出子數(shù)據(jù)高8位求或后為結(jié)果第三字節(jié),第三輸出子數(shù)據(jù)低8位與第二輸出子數(shù)據(jù)高8位求或后為結(jié)果第二字節(jié),第二輸出子數(shù)據(jù)低8位與第一輸出子數(shù)據(jù)高8位求或后為結(jié)果第一字節(jié),舍棄圖中的字節(jié)1,字節(jié)4’為第四字節(jié)數(shù)據(jù),字節(jié)4與字節(jié)3’按位求或?yàn)榈谌止?jié)的數(shù)據(jù),字節(jié)3與字節(jié)2’按位求或?yàn)榈诙止?jié)的數(shù)據(jù),字節(jié)2與字節(jié)I’按位求或?yàn)榈谝蛔止?jié)的數(shù)據(jù)。最后,如圖6所示,對(duì)于封裝的結(jié)果進(jìn)行最后的格式轉(zhuǎn)換,轉(zhuǎn)換的功能與上述的格式轉(zhuǎn)換器一致,根據(jù)元素是否為有符號(hào)且右移做選擇信號(hào),選擇是否將結(jié)果取反。
權(quán)利要求
1.一種支持多種數(shù)據(jù)類(lèi)型的單指令多數(shù)據(jù)移位裝置,其特征在于:所述裝置包括N個(gè)原子移位陣列,N為正整數(shù),每個(gè)原子移位陣列支持32位數(shù)據(jù)寬度的移位操作,所述移位操作包括I個(gè)32位元素移位,即將32位數(shù)據(jù)當(dāng)作一個(gè)32位整型操作數(shù)元素進(jìn)行移位;2個(gè)16位元素并行移位,即將32位數(shù)據(jù)當(dāng)作2個(gè)16位整型操作數(shù)元素進(jìn)行移位;和4個(gè)8位元素并行移位,即將32位數(shù)據(jù)當(dāng)作4個(gè)8位整型操作數(shù)元素進(jìn)行移位; 每個(gè)原子移位陣列包括: 格式轉(zhuǎn)換器,用于依據(jù)輸入的數(shù)據(jù)類(lèi)型信息,對(duì)輸入的32位原始數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換;第一移位器,用于接收格式轉(zhuǎn)換器輸出的32位數(shù)據(jù),并依據(jù)輸入的數(shù)據(jù)類(lèi)型信息與移位量,對(duì)32位數(shù)據(jù)進(jìn)行第一階段移位; 第二移位器,用于接收第一移位器的輸出結(jié)果,以字節(jié)為單位對(duì)數(shù)據(jù)進(jìn)行第二階段移位; 移位結(jié)果封裝器,用于接收第二移位器的移位結(jié)果,并依據(jù)輸入的數(shù)據(jù)類(lèi)型控制信息,對(duì)移位后的字節(jié)數(shù)據(jù)整合封裝為最終移位結(jié)果。
2.如權(quán)利要求1所述的支持多種數(shù)據(jù)類(lèi)型的單指令多數(shù)據(jù)移位裝置,其特征在于:所述格式轉(zhuǎn)換器中,格式轉(zhuǎn)換如下:對(duì)于無(wú)符號(hào)左移操作,保持各個(gè)元素原數(shù)據(jù)不變; 對(duì)于有符號(hào)左移操作,保持各個(gè)元素原數(shù)據(jù)不變; 對(duì)于無(wú)符號(hào)右移操作,保持各個(gè)元素原數(shù)據(jù)不變; 對(duì)于有符號(hào)右移操作: 若元素為正數(shù),則保持元素原數(shù)據(jù)不變;若元素為負(fù)數(shù),則將元素原數(shù)據(jù)取反。
3.如權(quán)利要求1或2所述的支持多種數(shù)據(jù)類(lèi)型的單指令多數(shù)據(jù)移位裝置,其特征在于:所述第一移位器中,所述第一階段移位對(duì)數(shù)據(jù)元素完成移位量為0/8/16/24/32的移位操作,具體操作方式如下: 當(dāng)數(shù)據(jù)元素寬度為8位時(shí),第一移位器不做操作; 當(dāng)數(shù)據(jù)元素寬度為16位時(shí),第一移位器分別對(duì)2個(gè)16位元素采取如下操作: 若兀素移位量小于8,則第一移位器不做操作; 若兀素移位量大于等于8,且小于16,則第一移位器移位8位; 若兀素移位量大于等于16,則該第一移位器移位16位; 當(dāng)數(shù)據(jù)元素寬度為32位時(shí),第一移位器對(duì)32位元素采取如下操作: 若兀素移位量小于8,則第一移位器不做操作; 若兀素移位量大于等于8,且小于16,則第一移位器移位8位; 若兀素移位量大于等于16,且小于24,則第一移位器移位16位; 若兀素移位量大于等于24,且小于32,則第一移位器移位24位; 若元素移位量大于等于32,則該階段移位32位。
4.如權(quán)利要求1或2所述的支持多種數(shù)據(jù)類(lèi)型的單指令多數(shù)據(jù)移位裝置,其特征在于:所述第二移位器包括4個(gè)Sbit的左移位器和右移位器,將32位輸入數(shù)據(jù)劃分為4個(gè)8位子數(shù)據(jù),由低到高分別記為第一子數(shù)據(jù)、第二子數(shù)據(jù)、第三子數(shù)據(jù)和第四子數(shù)據(jù),并對(duì)各子數(shù)據(jù)按照如下方式擴(kuò)展后再移位: 對(duì)于左移操作,在各子數(shù)據(jù)高位O擴(kuò)展一倍位寬后進(jìn)行左移位器操作; 對(duì)于右移操作,在各子數(shù)據(jù)低位O擴(kuò)展一倍位寬后進(jìn)行右移位器操作。
5.如權(quán)利要求1或2所述的支持多種數(shù)據(jù)類(lèi)型的單指令多數(shù)據(jù)移位裝置,其特征在于:所述第二移位器根據(jù)移位方向選擇輸出數(shù)據(jù),對(duì)各子數(shù)據(jù)的移位結(jié)果由低到高分別記輸出數(shù)據(jù)為第一輸出子數(shù)據(jù)、第二輸出子數(shù)據(jù)、第三輸出子數(shù)據(jù)和第四輸出子數(shù)據(jù)。
6.如權(quán)利要求5所述的支持多種數(shù)據(jù)類(lèi)型的單指令多數(shù)據(jù)移位裝置,其特征在于:所述移位結(jié)果封裝器中,對(duì)第二移位器四個(gè)輸出子數(shù)據(jù)按照如下方式進(jìn)行初步封裝: 對(duì)于數(shù)據(jù)元素寬度為8的操作,對(duì)各輸出子數(shù)據(jù)按如下方式初步封裝: 對(duì)于左移操作,直接舍棄第二移位器的各輸出子數(shù)據(jù)的高8位擴(kuò)展數(shù)據(jù),保留低8位數(shù)據(jù); 對(duì)于右移操作,舍棄第二移位器的各輸出子數(shù)據(jù)的低8位擴(kuò)展數(shù)據(jù),保留高8位數(shù)據(jù); 對(duì)于數(shù)據(jù)元素寬度為16位的操作,按照如下方式初步封裝: 對(duì)于左移的操作,舍棄第四輸出子數(shù)據(jù)和第二輸出子數(shù)據(jù)的高8位擴(kuò)展位,將第四輸出子數(shù)據(jù)低8位與第三輸出子數(shù)據(jù)的高8位求或?yàn)榻Y(jié)果第四字節(jié),第三輸出子數(shù)據(jù)的低8位為結(jié)果第三字節(jié),第二輸出子數(shù)據(jù)低8位與第一輸出子數(shù)據(jù)高8位求或后為結(jié)果第二字節(jié),第一輸出子數(shù)據(jù)的低8位為結(jié)果第一字節(jié); 對(duì)于右移的操作,舍棄第三輸出子數(shù)據(jù)和第一輸出子數(shù)據(jù)的低8位,第四輸出子數(shù)據(jù)高8位為結(jié)果第四字節(jié),第四輸出子數(shù)據(jù)的低8位與第三輸出子數(shù)據(jù)的高8位求或后為結(jié)果第三字節(jié),第二輸出子數(shù)據(jù)的高8位為結(jié)果第二字節(jié),第二輸出子數(shù)據(jù)的低8為與第一輸出子數(shù)據(jù)的高8位求或后為結(jié)果第一字節(jié)。
對(duì)于數(shù)據(jù)元素寬度為32位的操作,按照如下方式初步封裝: 對(duì)于左移的操作,舍棄第四輸出子數(shù)據(jù)的高8位擴(kuò)展位,第四輸出子數(shù)據(jù)的低8位與第三輸出子數(shù)據(jù)的高8位求或后為結(jié)果第四字節(jié),第三輸出子數(shù)據(jù)低8位與第二輸出子數(shù)據(jù)的高8位求或后為結(jié)果第三字節(jié),第二輸出子數(shù)據(jù)低8位與第一輸出子數(shù)據(jù)高8位求或后為結(jié)果第二字節(jié),第一輸出子數(shù)據(jù)低8位為結(jié)果第一字節(jié); 對(duì)于右移的操作,舍棄第一輸出子數(shù)據(jù)的低8位擴(kuò)展位,第四輸出子數(shù)據(jù)高8位為結(jié)果第四字節(jié),第四輸出子數(shù)據(jù)低8位與第三輸出子數(shù)據(jù)高8位求或后為結(jié)果第三字節(jié),第三輸出子數(shù)據(jù)低8位與第二輸出子數(shù)據(jù)高8位求或后為結(jié)果第二字節(jié),第二輸出子數(shù)據(jù)低8位與第一輸出子數(shù)據(jù)高8位求或后為結(jié)果第一字節(jié)。
7.如權(quán)利要求1或2所述的支持多種數(shù)據(jù)類(lèi)型的單指令多數(shù)據(jù)移位裝置,其特征在于:所述移位結(jié)果封裝器中,對(duì)初步封裝后的結(jié)果數(shù)據(jù)按照如下方式獲取最終移位結(jié)果: 對(duì)于無(wú)符號(hào)左移操作,初步封裝結(jié)果為最終結(jié)果; 對(duì)于有符號(hào)左移操作,初步封裝結(jié)果為最終結(jié)果; 對(duì)于無(wú)符號(hào)右移操作,初步封裝結(jié)果為最終結(jié)果; 對(duì)于有符號(hào)右移操作: 若元素為正數(shù),初步封裝結(jié)果為最終結(jié)果; 若元素為負(fù)數(shù),初步封裝結(jié)果取反后為最終結(jié)果。
8.如權(quán)利要求1或2所述的支持多種數(shù)據(jù)類(lèi)型的單指令多數(shù)據(jù)移位裝置,其特征在于:所述移位結(jié)果封裝器中,第一移位器移位量與第二移位器的移位量之和等于最終移位結(jié)果。
全文摘要
一種支持多種數(shù)據(jù)類(lèi)型的單指令多數(shù)據(jù)移位裝置,包括N個(gè)原子移位陣列,N為正整數(shù),每個(gè)原子移位陣列支持32位數(shù)據(jù)寬度的移位操作,每個(gè)原子移位陣列包括格式轉(zhuǎn)換器,用于依據(jù)輸入的數(shù)據(jù)類(lèi)型信息,對(duì)輸入的32位原始數(shù)據(jù)進(jìn)行格式轉(zhuǎn)換;第一移位器,用于接收格式轉(zhuǎn)換器輸出的32位數(shù)據(jù),并依據(jù)輸入的數(shù)據(jù)類(lèi)型信息與移位量,對(duì)32位數(shù)據(jù)進(jìn)行第一階段移位;第二移位器,用于接收第一移位器的輸出結(jié)果,以字節(jié)為單位對(duì)數(shù)據(jù)進(jìn)行第二階段移位;移位結(jié)果封裝器,用于接收第二移位器的移位結(jié)果,并依據(jù)輸入的數(shù)據(jù)類(lèi)型控制信息,對(duì)移位后的字節(jié)數(shù)據(jù)整合封裝為最終移位結(jié)果。本發(fā)明資源復(fù)用,結(jié)構(gòu)簡(jiǎn)單且時(shí)序性能較好。
文檔編號(hào)G06F5/01GK103077004SQ20131000970
公開(kāi)日2013年5月1日 申請(qǐng)日期2013年1月10日 優(yōu)先權(quán)日2013年1月10日
發(fā)明者嚴(yán)曉浪, 趙朝君, 陳志堅(jiān), 孟建熠 申請(qǐng)人:浙江大學(xué)