欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

處理器的定制的基本操作的方法與設(shè)備的制作方法

文檔序號:6410989閱讀:291來源:國知局

專利名稱::處理器的定制的基本操作的方法與設(shè)備的制作方法引用相關(guān)申請文件本發(fā)明要求1995年9月1日提交的美國臨時申請60/003,140號和1995年9月25日提交的美國臨時申請60/004,642號的優(yōu)先權(quán)。本說明書中為討論VLIM處理系統(tǒng)引用了如下專利申請5,103,311號美國專利數(shù)據(jù)處理模塊及包括該模塊的視頻處理系統(tǒng);5,450,556號美國專利應(yīng)用由分支控制單元生成的路徑數(shù)據(jù)阻止非正確路徑上操作的VLIW處理器;5,313,551號美國專利軟件控制下的多端口存儲器旁路;1992年12月29日申請的序列號07/998,080的美國專利申請指令發(fā)布槽位數(shù)少于功能單元的VLIW處理器;1990年10月5日申請的序列號07/594,534的美國專利申請包括一存儲電路和一組功能單元的處理器;1994年12月16日申請的序列號08/358,127的美國專利申請數(shù)據(jù)處理系統(tǒng)中的例外恢復(fù)(exceptionrecovery);以及同時提交的申請應(yīng)用剪切功能的用于多媒體應(yīng)用的定制操作的方法與設(shè)備;應(yīng)用多操作數(shù)進(jìn)行單一指令控制下并行處理的定制操作的方法與設(shè)備。
背景技術(shù)
:1、發(fā)明領(lǐng)域本發(fā)明涉及應(yīng)用于執(zhí)行包括多媒體功能等功能的處理器系統(tǒng)—諸如具有處理高質(zhì)量視頻和音頻信號能力、執(zhí)行專業(yè)高級功能操作的系統(tǒng)一的定制操作。2、相關(guān)技術(shù)描述系統(tǒng)可使用一個通用CPU和附加單元來作為多功能PC增強(qiáng)器。一般來說,PC必須處理有多重標(biāo)準(zhǔn)的視頻和音頻信號流,用戶還要求盡可能有解壓和壓縮這兩種功能。盡管PC機(jī)中使用的CPU芯片功能正朝著能解壓低分辨率實(shí)時視頻信號的方向發(fā)展,它們還不可能對視頻信號進(jìn)行高質(zhì)量的解壓和壓縮。此外,用戶還要求系統(tǒng)提供生動的視頻和音頻信號,同時又不降低系統(tǒng)的響應(yīng)靈敏度。無論是通用應(yīng)用軟件還是嵌入基于微處理器的應(yīng)用軟件,人們都希望用高級語言進(jìn)行程序設(shè)計(jì)。為了有效地支持優(yōu)化編譯器和簡單化的編程模型,要求微處理器的體系結(jié)構(gòu)具有一定的特點(diǎn),例如有較大的線性地址空間、通用寄存器以及直接支持使用線性地址指針的寄存器對寄存器操作。近來微處理器體系結(jié)構(gòu)普遍采用32位線性地址、32位寄存器和32位整數(shù)操作,而64位及128位的處理器系統(tǒng)正處于研究開發(fā)之中。不過,對于許多算法中進(jìn)行的數(shù)據(jù)處理來說,如果數(shù)據(jù)運(yùn)算占用全部位數(shù)(例如,32位系統(tǒng)中的32位),是對昂貴的硅片資源的一種浪費(fèi)。有些重要的多媒體應(yīng)用(如MPEG視頻信號流的解壓縮),對長度8位的數(shù)據(jù)項(xiàng)的處理要花費(fèi)相當(dāng)長的運(yùn)算時間。用32、64、128…位類型的運(yùn)算方式來處理長度短的數(shù)據(jù)項(xiàng),不能發(fā)揮系統(tǒng)應(yīng)用的32、64、128…位類型的運(yùn)算硬件的效率。因而,定制的操作可以同時對數(shù)據(jù)項(xiàng)進(jìn)行操作,只要增加少許硬件花費(fèi),就能大大地改善運(yùn)算的效能。其它方法也能達(dá)到改善運(yùn)算效能的類似效果,例如在每個時鐘周期執(zhí)行大量的傳統(tǒng)微處理器指令。然而,所述的其它方法對于要求低成本的目標(biāo)應(yīng)用,一般來說成本驚人地昂貴。此外,用M位類型的運(yùn)算(例如32位類型的運(yùn)算)來處理長度短的N位數(shù)據(jù)項(xiàng)(N<M)不能發(fā)揮系統(tǒng)應(yīng)用的M位類型的運(yùn)算硬件的效率。常規(guī)的數(shù)據(jù)信號處理(DSP)運(yùn)算的邏輯計(jì)算模數(shù)值。本發(fā)明所述的剪切或飽和運(yùn)算方法在數(shù)據(jù)處理生成的數(shù)據(jù)超過寄存器物理限度的信號處理應(yīng)用中具有特殊的價值。按照常規(guī),當(dāng)生成的數(shù)據(jù)超過寄存器物理范圍限度時,數(shù)據(jù)就被映射到有效物理范圍的另一端。在進(jìn)行信號處理時,這種周期性的數(shù)據(jù)映射會產(chǎn)生惡劣的后果。例如,應(yīng)用常規(guī)方法,一組音量很低的音頻信號數(shù)據(jù)可能會被映射到最高音量對應(yīng)的位置上。在控制應(yīng)用和視頻/音頻信號處理應(yīng)用系統(tǒng)中,當(dāng)控制范圍或強(qiáng)度范圍飽和時,模數(shù)值對系統(tǒng)是不利的。發(fā)明概述本發(fā)明旨在在保留專用嵌入方式的優(yōu)點(diǎn),即芯片成本低廉和芯片數(shù)少,以及通用處理器可再編程性等優(yōu)點(diǎn)不變的同時,對系統(tǒng)(例如PC系統(tǒng))進(jìn)行增強(qiáng)以提供實(shí)時多媒體功能。在PC應(yīng)用中,本發(fā)明超越了固定功能多媒體芯片的功能。與此對應(yīng),本發(fā)明的一個目的是,以低廉的成本獲得極高的多媒體性能。本發(fā)明的另一個目的是,提高應(yīng)用軟件的小內(nèi)核程序的處理速度。本發(fā)明的另一個目的是,充分發(fā)揮高速緩沖存儲器/存儲器帶寬的優(yōu)點(diǎn),同時又不需要過度數(shù)量的字節(jié)操作指令。本發(fā)明的另一個目的是提供功能強(qiáng)大的專門操作,以改善多媒體應(yīng)用軟件的性能。本發(fā)明的另一個目的是提供執(zhí)行中有效地利用專門的位操作硬件的定制操作。本發(fā)明的另一個目的是提供專用于應(yīng)用系統(tǒng)(如多媒體應(yīng)用軟件)的定制操作。本發(fā)明的另一個目的是運(yùn)用能儲存多個操作數(shù)的多操作數(shù)寄存器來進(jìn)行單指令的控制下的并行處理。這對當(dāng)前信號樣本為8位或16位格式的音頻和/或視頻處理應(yīng)用軟件具有特殊的好處。本發(fā)明的另一個目的是,利用剪切操作在被截?cái)嗟姆秶恼_一端保存接收到的信號,如音頻或視頻信號。本發(fā)明的應(yīng)用范圍是從如視頻電話這樣的低價格、單用途系統(tǒng)到傳統(tǒng)個人計(jì)算機(jī)用的可重新編程的多用途插件卡。另外,本發(fā)明還可以應(yīng)用于容易實(shí)行通用多媒體標(biāo)準(zhǔn)—如MPEG-1和MPEG-2的系統(tǒng)。此外,應(yīng)用本發(fā)明能使功能強(qiáng)大的多用途CPU執(zhí)行各種無論是開放式的還是專有的多媒體算法。在源碼級定義軟件兼容性的好處是能自由地掌握成本與性能間的最佳平衡。功能強(qiáng)大的編譯器保證程序員不需要用繁瑣的匯編語言進(jìn)行程序設(shè)計(jì)。本發(fā)明允許程序員從源碼中選用功能強(qiáng)大的低級操作,用熟悉的函數(shù)調(diào)用文法調(diào)用數(shù)字信號處理那樣的操作。計(jì)算機(jī)系統(tǒng)包括,1、輸入寄存器,每個均用于接收輸入數(shù)據(jù),每個輸入數(shù)據(jù)含有M位,每個操作數(shù)包含N位,其中N小于或等于M;2、一個處理器,該處理器執(zhí)行一組以選定操作數(shù)為對象的操作,每組操作中至少含有一個操作,操作結(jié)果產(chǎn)生N位長度的數(shù)據(jù);3、一個目的寄存器,用于存放每組操作的運(yùn)算結(jié)果數(shù)據(jù)。該組操作可以包含一個剪切或飽和操作。此外,該組操作可以并行運(yùn)行,并且響應(yīng)某命令集中的一個命令。通過以下的詳細(xì)說明,本發(fā)明還有一些目的和優(yōu)點(diǎn),對熟悉本領(lǐng)域的人來說是顯而易見的。以下的說明中,只是僅僅通過對本發(fā)明最佳實(shí)施方式思想的描述,敘述和說明了本發(fā)明的較佳實(shí)施例。正如將會認(rèn)識到的,本發(fā)明還可以有其它不同的實(shí)施方式,在許多明顯的方面,可以對本發(fā)明的一些細(xì)節(jié)上作出改進(jìn),但都不會偏離本發(fā)明的本質(zhì)。同樣,附圖及說明的性質(zhì)也應(yīng)被視作是說明性的,而不是限制性的。附圖簡要說明本發(fā)明的上述目的以及其它目的的顯而易見性,體現(xiàn)在對本發(fā)明進(jìn)行的、包括以下附圖的說明中附圖1是本發(fā)明使用的一示例系統(tǒng)的方框圖;附圖2所示是CPU寄存器結(jié)構(gòu)的一個例子;附圖3(a)所示是存儲器中矩陣組織的一個例子;附圖3(b)所示是該例中要被執(zhí)行的一個任務(wù);附圖4所示是一例用定制操作進(jìn)行一個字節(jié)矩陣置換的應(yīng)用;附圖5(a)和5(b)所示是執(zhí)行附圖4所示字節(jié)矩陣置換的一列操作;附圖6所示是一個dspiadd操作;附圖7所示是一個dspuadd操作;附圖8所示是一個dspidualadd操作;附圖9所示是一個dspuquadaddui操作;附圖10所示是一個dspimul操作;附圖11所示是一個dspumul操作;附圖12所示是一個dspidualmul操作;附圖13所示是一個dspisub操作;附圖14所示是一個dspusub操作;附圖15所示是一個dspidualsub操作;附圖16所示是一個ifir16操作;附圖17所示是一個ifir8ii操作;附圖18所示是一個ifir8ui操作;附圖19所示是一個ufir16操作;附圖20所示是一個ufir8uu操作;附圖21所示是一個mergelsb操作;附圖22所示是一個mergemsb操作;附圖23所示是一個pack16lsb操作;附圖24所示是一個pack16msb操作;附圖25所示是一個packbytes操作;附圖26所示是一個quadavg操作;附圖27所示是一個quadumulmsb操作;附圖28所示是一個ume8ii操作;附圖29所示是一個ume8uu操作;附圖30所示是一個iclipi操作;附圖31所示是一個uclipi操作;附圖32所示是一個uclipu操作;較佳實(shí)施例說明附圖1是本發(fā)明使用的一示例系統(tǒng)的方框圖。該系統(tǒng)包括一個微處理器、一個同步動態(tài)隨機(jī)存取寄存器(SDRAM)和作為與多媒體入、出數(shù)據(jù)流通路接口所需的外部線路。本例中,由一個32位CPU組成VLIW處理器的內(nèi)核。該CPU使用一個32位線性地址空間和128個全部為通用型的32位寄存器。本系統(tǒng)中沒有將寄存器分類歸組,相反,任何操作可以使用任何寄存器來存放任何操作數(shù)。在本系統(tǒng)中,CPU使用VLIW指令集結(jié)構(gòu),允許同時發(fā)出多達(dá)五個同時操作。本例中,這些操作可以指向CPU內(nèi)27個功能單元中的任何五個,包括整數(shù)和浮點(diǎn)算術(shù)單元和數(shù)據(jù)并行的的數(shù)字信號處理(DSP)類單元。運(yùn)用本發(fā)明的CPU的操作集中,包括傳統(tǒng)的微處理器操作,此外還有多媒體專用操作,它們能極大地加快標(biāo)準(zhǔn)視頻信號壓縮和解壓算法的速度,一個專門操作或者定制操作,即一條指令內(nèi)的數(shù)個操作(本例中是5個)中的一個操作,能執(zhí)行多達(dá)11個傳統(tǒng)的微處理器操作。多媒體專用操作與VLIW、RISC或其它體系結(jié)構(gòu)相結(jié)合,在多媒體應(yīng)用中產(chǎn)生巨大的信息通量。本發(fā)明允許使用32、64、128…位的寄存器存放數(shù)據(jù),執(zhí)行這些“多媒體”運(yùn)算。附圖2所示是CPU寄存器結(jié)構(gòu)的一個例子。本實(shí)施例中的CPU有128個32位通用寄存器,分別以r0…r127記之。本實(shí)施例中寄存器r0和r1實(shí)際上作為專用寄存器使用,寄存器r2至r127才真正被當(dāng)作通用寄存器。本系統(tǒng)中,處理器每隔一個時鐘周期發(fā)出一條長指令,每個這種指令包括幾個操作(本實(shí)施例中有5個操作),每個操作都類似一條RISC機(jī)器指令,所不同的是操作的執(zhí)行是有條件的,取決于某通用寄存器的內(nèi)容。寄存器中的數(shù)據(jù)可以是—例如—整數(shù)表示或浮點(diǎn)表示。本實(shí)施例中,整數(shù)分為‘帶符號整數(shù)’和‘無符號整數(shù)’兩種,以二進(jìn)制數(shù)2的補(bǔ)碼位模式表示。整數(shù)算術(shù)運(yùn)算不會產(chǎn)生陷阱。如果運(yùn)算結(jié)果不可被表示,則返回的位模式是特定于操作的,如在對各運(yùn)算的說明部分所定義的。典型的情況有對常規(guī)加減類操作實(shí)行回繞式處理,DSP類型的操作返回值為可表示的最高值或最低值,64位結(jié)果(例如無符號整數(shù)積)的返回值為其中的最低32位。因?yàn)楸緦?shí)施例是32位結(jié)構(gòu)的,它不用浮點(diǎn)表示法表示多媒體運(yùn)算中使用的數(shù)據(jù)的值。不過很顯然,對64位,128位…結(jié)構(gòu)的系統(tǒng)而言,可以用浮點(diǎn)表示法來表示多媒體運(yùn)算中使用的數(shù)據(jù)值。例如,單精度(32位)IEEE-754浮點(diǎn)算術(shù)表示法和/或雙精度(64位)IEEE-754浮點(diǎn)表示法就可以用來表示數(shù)據(jù)值。在本發(fā)明的結(jié)構(gòu)體系中,所有運(yùn)算均可選用“保護(hù)”(guarded)功能。保護(hù)運(yùn)算有條件地執(zhí)行運(yùn)算,其條件值存放在保護(hù)寄存器(rguard)中。例如,一個保護(hù)的整數(shù)加法指令的寫法是IFr23iaddr14r10->r13本例的意思是,“ifr23thenr13=r14+r10”。語句“ifr23”根據(jù)r23中值的最低有效位(LSB)的內(nèi)容來判斷“真”與“假”。因此,根據(jù)r23中值的最低有效位(LSB)的內(nèi)容,r13要么不變,要么被設(shè)置為等于r14與r10的整數(shù)和。例如,在本發(fā)明的本實(shí)施例中,如果LSB被判斷為1,就對目的寄存器(rdest)(本例中為r13)進(jìn)行寫操作。保護(hù)用于控制對程序員可見的系統(tǒng)狀態(tài)—如寄存器值、存儲器內(nèi)容及設(shè)備狀態(tài)—等的影響。本發(fā)明中的存儲器是字節(jié)可尋址的。數(shù)據(jù)的寄存或存儲采用“自然對齊”方式,就是說,寄存或存儲一個16位數(shù)據(jù)時,尋找的地址數(shù)是2的倍數(shù);寄存或存儲一個32位數(shù)據(jù)時,尋找的地址數(shù)是4的倍數(shù)。熟悉本領(lǐng)域的人很容易據(jù)此修改。計(jì)算操作是寄存器對寄存器的操作。一個特定的操作,要有一個或兩個寄存器作為操作對象,操作的結(jié)果被寫入一個目的寄存器(rdest)。定制操作屬于特殊的計(jì)算操作范疇,象是正常的計(jì)算操作,而通用CPU中又沒有這些定制操作。定制操作的優(yōu)點(diǎn)在于允許執(zhí)行例如多媒體應(yīng)用軟件中的運(yùn)算。本發(fā)明的定制操作是為顯著提高重要的多媒體應(yīng)用軟件及其它應(yīng)用軟件的性能而設(shè)計(jì)的、功能強(qiáng)大的專用操作。如果在應(yīng)用程序的源碼中適當(dāng)?shù)亟Y(jié)合定制操作,會能使該應(yīng)用程序充分利用本發(fā)明的微處理器(例如Philips公司的TrimediaTM-1芯片)的高度并行操作的潛力。無論是通用應(yīng)用軟件還是基于微處理器的嵌入應(yīng)用,人們都希望用高級語言進(jìn)行程序設(shè)計(jì)。為了有效地支持優(yōu)化編譯器和簡單化的編程模型,要求微處理器的體系結(jié)構(gòu)具有一定的特點(diǎn),例如有較大的線性地址空間、通用寄存器以及直接支持使用線性地址指針的寄存器對寄存器操作功能。本發(fā)明允許利用系統(tǒng)的全部資源。舉例來說,利用32位資源同時處理兩個16位數(shù)據(jù)項(xiàng)或4個8位數(shù)據(jù)項(xiàng)。這種資源利用只需增加極少的的費(fèi)用投入就能極大地改進(jìn)系統(tǒng)的性能。而且,這種資源利用能從在標(biāo)準(zhǔn)的微處理器資源中獲得較高的執(zhí)行速度。有些功能強(qiáng)的定制操作不使用條件轉(zhuǎn)移語句,這有助于調(diào)度程序有效地利用目前系統(tǒng)中(例如使用TM-1指令的PhilipsTM-1芯片)每一條指令的五個操作槽(slot)。充滿所有五個操作槽,對于計(jì)算密集的多媒體應(yīng)用軟件中的內(nèi)部循環(huán)過程,具有特別重要的意義。定制操作幫助本發(fā)明以盡可能低的代價換取極高的多媒體操作性能。表1是本發(fā)明中定制操作一覽表。有些定制操作有不同的格式,其區(qū)別表現(xiàn)于對操作數(shù)及結(jié)果的不同處理上。表示不同格式命令的助記符,試圖對上述不同處理加以區(qū)分,以便于用戶選擇合適的操作。當(dāng)然,每個操作也可以使用完全不同的助記符或名稱。表1按功能分類的定制操作一覽表<tablesid="table1"num="001"><tablewidth="810">功能助記符說明DSP絕對值dspiabs帶符號32位值的絕對值的剪切值dspidualabs兩個帶符號16位半字的絕對值的剪切值DSP加dspiadd帶符號32位值之和的剪切值dspuadd無符號32位值之和的剪切值dspidualadd兩個帶符號16位半字值之和的剪切值dspuquadaddui四個帶符號/無符號字節(jié)值之和的剪切值DSP積dspimu1帶符號32位值乘積的剪切值dspumu1無符號32位值乘積的剪切值dspidualmu1兩個帶符號16位半字值乘積的剪切值DSP差dspisub帶符號32位值之差的剪切值dspusub無符號32位值之差的剪切值dspidualsub兩個帶符號16位半字值之差的剪切值積之和ifir16帶符號16位半字值乘積之和ifir8ii帶符號字節(jié)值乘積之和ifir8ui帶符號與無符號字節(jié)值乘積之和ufir16無符號16位半字值乘積之無符號和ufir8uu無符號字節(jié)值乘積之無符號和合并mergelsb合并最低有效字節(jié)mergemsb合并最高有效字節(jié)打包pack16lsb打包最低有效16位半字pack16msb打包最高有效16位半字packbytes打包最低有效字節(jié)字節(jié)平均值quadavg四個無符號字節(jié)的平均值字節(jié)積quadumulmsb四個8位無符號字節(jié)對的積的最高字節(jié)動態(tài)評估ume8ii帶符號8位之差的絕對值的無符號的和ume8uu無符號8位之差的絕對值之無符號和</table></tables>下面舉例說明本發(fā)明所述的一個定制操作的使用方法。本例通過一個字節(jié)矩陣變換,簡要說明了定制操作是如何顯著提高應(yīng)用軟件小型內(nèi)核的處理速度的。正如大多數(shù)定制操作應(yīng)用所反映的那樣,本例中定制操作的效能體現(xiàn)在其對多個數(shù)據(jù)項(xiàng)進(jìn)行并行處理的能力上。本例的任務(wù)是對存儲器中的一個4×4字節(jié)壓縮矩陣進(jìn)行轉(zhuǎn)置。該矩陣中的數(shù)據(jù)可以是例如8位象素值。附圖3(a)表示轉(zhuǎn)置前后矩陣數(shù)據(jù)在存儲器中的位置。附圖3(b)用標(biāo)準(zhǔn)的數(shù)學(xué)語言敘述了本例要執(zhí)行的任務(wù)。用傳統(tǒng)微處理器指令執(zhí)行這個過程,其指令直截了當(dāng),但卻耗費(fèi)時間。一種方法是,執(zhí)行12個字節(jié)加載指令來加載字節(jié)(16個字節(jié)中只有12個需要易位),再用12個字節(jié)存儲指令將它們存放回存儲器中的新位置上。另一種方法是執(zhí)行4個字(Word)加載指令,將已加載各字按字節(jié)在寄存器中重新排列,然后在執(zhí)行4個字(Word)存儲指令。不幸的是,在寄存器中將個字節(jié)重新排列,需要用大量的指令來進(jìn)行適當(dāng)?shù)淖止?jié)屏蔽和字節(jié)移位操作,而第一種方法總共進(jìn)行24次加載和存儲操作,實(shí)質(zhì)上使用了加載/存儲單元中的數(shù)據(jù)移位和數(shù)據(jù)屏蔽硬件,因而,該方法所需的指令序列長度較短。進(jìn)行24次加載和存儲操作的問題是,加載和存儲操作的本身速度并不快至少要訪問高速緩沖存儲器,可能還要訪問存儲器體系中速度更慢的某些層次;再者說,進(jìn)行字節(jié)加載和存儲操作,通過字長32位的數(shù)據(jù)接口訪問高速緩沖存儲器或存儲器,這是對高速緩沖存儲器或存儲器數(shù)據(jù)接口資源的一種浪費(fèi)。因此,需要有一種充分發(fā)揮高速緩沖存儲器/存儲器帶寬的優(yōu)點(diǎn)、同時又不需要過度數(shù)量的字節(jié)操作指令的快速算法。本發(fā)明含有對字節(jié)和16位半字(halfwords)直接和并行地進(jìn)行合并(mergemsb和mergelsb)和打包(pack16msb和pack16lsb)的操作指令。這些指令中有四條可應(yīng)用于本例中來加快將字節(jié)打包成字的處理速度。附圖4所示的是這些指令在字節(jié)矩陣置換例中的應(yīng)用。附圖5(a)所示是進(jìn)行字節(jié)矩陣置換所需的一列操作命令,將其匯編成實(shí)際指令時,這些定制操作將盡可能地被相互組合,例如組合成每個指令含有5個操作。附圖5(a)中的低級代碼在此僅作示意之用。附圖5(a)中第一組4個字加載操作(ld32d)將輸入矩陣中打包的字送入寄存器r10、r11、r12和r13;第二組4個合并操作(mergemsb和mergelsb)在寄存器r14、r15、r16和r17中生成中間結(jié)果;第三組4個打包操作命令(pack16msb和pack16lsb)對源操作數(shù)進(jìn)行替換,假如為了進(jìn)行其它計(jì)算需要保留原矩陣操作數(shù)(有一種TM-1優(yōu)化C編譯器可以自動執(zhí)行這種分析),該組操作可以將轉(zhuǎn)置后的矩陣另存到各個獨(dú)立的寄存器中。本例中,轉(zhuǎn)置矩陣被用st32d存入四個寄存器r18、r19、r20和r21中。最后4個字存儲操作命令將置換后的矩陣存回到存儲器中。因此,使用本發(fā)明的定制操作,進(jìn)行該字節(jié)矩陣置換需要4個字操作和4個字存儲操作(至少這個數(shù))以及8個寄存器到對寄存器的數(shù)據(jù)處理操作,總共是16次操作,換言之,字節(jié)矩陣置換的速度是平均每個字節(jié)一次操作。附圖5(b)是一段對應(yīng)的C語言程序。就本例而言,運(yùn)用基于定制操作的算法與需要24次字節(jié)加載和存儲操作的簡單算法相比,表面上看其優(yōu)點(diǎn)也就是減少了8次操作(減少了33%),而實(shí)際上,其優(yōu)點(diǎn)遠(yuǎn)不止于此。首先,運(yùn)用定制操作時,對存儲器的訪問次數(shù)從24次減少到8次,即減少到原需次數(shù)的三分之一,而存儲器操作速度要比寄存器間操作速度慢(本例中所用定制操作就是后一種操作),所以,減少訪問存儲器的次數(shù)非常重要。第二,基于定制操作的代碼的使用,使本系統(tǒng)采用的編譯系統(tǒng)(TM-1系統(tǒng))利用TM-1微處理器硬件潛在功能的能力得到加強(qiáng)。具體地說,當(dāng)訪問存儲器的次數(shù)與寄存器間操作的次數(shù)相當(dāng)時,編譯系統(tǒng)更容易生成一個對代碼的優(yōu)化調(diào)度方案。一般來說,高性能的微處理器在一個時鐘周期內(nèi)訪問存儲器的次數(shù)有一定的限度,如果代碼很長,又都是訪問存儲器的語句,就會在長的TM-1指令中產(chǎn)生空操作槽,從而浪費(fèi)了硬件的潛在功能。如本例所示,使用本發(fā)明的定制操作,可以減少進(jìn)行一次計(jì)算所需操作的絕對次數(shù),也有助于編譯系統(tǒng)生成充分利用所用CPU潛能的程序碼。對于諸如用于例如一個完整MPEG視頻解碼算法的MPEG圖像恢復(fù)系統(tǒng)以及動態(tài)評估(motion-estimation)內(nèi)核等其它應(yīng)用軟件,使用本發(fā)明的定制操作也有益處。當(dāng)然,本發(fā)明的定制操作的作用并不僅僅限于這些。表1所列的為本發(fā)明包含的定制操作。以下將對這些定制操作逐一地進(jìn)行詳細(xì)說明。在以下的功能語句代碼中,使用了標(biāo)準(zhǔn)符號、文法等。例如,temp1和temp2代表兩個臨時寄存器;再例如,功能temp1<-sign_ext16to32(rsrc1<150>)表示將寄存器rsrc1中150位(位0至位15)的內(nèi)容裝入tem1寄存器,其中符號位(本例中為第15位)被擴(kuò)展至16至32位(符號位擴(kuò)展);同理,temp2<-sign_ext16to32(rsrc1<1631>)表示將寄存器rsrc1中的第16位至第31位的內(nèi)容被提取(并被置于第0位至第15位用于計(jì)算),其中符號位(本例中為第31位)被擴(kuò)展至16至32位。擴(kuò)展符號位用于帶符號數(shù)值上,本例中的帶符號數(shù)值為帶符號整數(shù)。對于無符號數(shù)值,使用的是填零方法。表示填零的記法與表示符號擴(kuò)展的記法類似,例如,zero_ext8to32(rsrc1<150>)表示15至0位的值被用于計(jì)算,8至32位要被填零。源寄存器rsrc1與rsrc2及目的寄存器rdest可以是上述任何空閑的寄存器。以下所列各操作中,每個操作可以選用保護(hù)(guard)的方式,其在寄存器rguard中定義。如果采用保護(hù)方式,則在本例中,其最低有效位(LSB)決定了是否對目的寄存器進(jìn)行修改。在本例中,如果rguard中的最低有效位的值為1,則對目的寄存器rdest進(jìn)行寫操作,否則就不改變rdest的值。dspiabsdspiabs操作計(jì)算一個帶符號數(shù)的絕對值的剪切值,偽碼記作h_dspiabs(硬件dspiabs)。該操作具有以下功能<prelisting-type="program-listing"><![CDATA[ifrguardthen{ifrsrc1>=0thenrdest<-rsrc1elseifrsrc1=0x800000000thenrdest<-0x7fffffffelserdest<-rsrc1}]]></pre>dspiabs操作是一個偽操作,由調(diào)度程序轉(zhuǎn)換為h_dspiabs,其第一個參數(shù)為常量零,第二個參數(shù)等于dspiabs的參數(shù)。在匯編源程序文件中一般不使用偽操作。h_dspiabs執(zhí)行與dspiabs相同的功能,只不過前者需要一個零作為其第一個參數(shù)。dspiabs計(jì)算rsrc1的絕對值,將結(jié)果剪切(clip)成[231-1…0]即范圍內(nèi)的值,并將該剪切值存入目的寄存器rdest。所有值都是帶符號整數(shù)。dspidualabsdspidualabs操作計(jì)算兩個帶符號16位半字(halfword)的絕對值的剪切值,偽碼記作h_dspidualabs(硬件dspidualabs)。該操作具有以下功能<prelisting-type="program-listing"><![CDATA[ifrguardthen{temp1<-sign_ext16to32(rsrc1<150>)temp2<-sign_ext16to32(rsrc1<3116>)iftemp1=oxffff8000thentemp1<-0x7fffiftemp2=oxffff8000thentemp2<-0x7fffiftemp1<0thentemp1<--temp1iftemp2<0thentemp2<--temp2rdest<3116><-temp2<150>rdest<150<-temp1<150>}]]></pre>dspidualabs操作是一個偽操作,由調(diào)度程序轉(zhuǎn)換為雙參數(shù)的h_dspidualabs,本例中,其第一個參數(shù)為常量零,第二個參數(shù)等于dspidualabs的參數(shù)。dspidualabs操作功能是分別計(jì)算寄存器rsrc1內(nèi)高16位半字(halfword)和低16位半字的兩個16位帶符號數(shù)絕對值的剪切值。兩個絕對值均被剪切為范圍內(nèi)的值,并被分別存入目的寄存器rdest中的兩個對應(yīng)的半字位置。所有值都是16位帶符號整數(shù)。h_dspidualabs操作執(zhí)行與dspidualabs相同的功能,只不過前者需要一個零作為其第一參數(shù)。dspiadddspiadd操作計(jì)算帶符號數(shù)之和的剪切值,該操作具有以下功能<prelisting-type="program-listing"><![CDATA[ifrguardthen{temp<-sign_ext32to64(rsrc1)+sign_ext32to64(rsrc2)iftemp<0xffffffff80000000thenrdest<-0x80000000elseiftemp>0x00000007fffffffthenrdest<-0x7fffffffelserdest<-temp}]]></pre>如附圖6所示,dspiadd操作計(jì)算rsrc1+rsrc2的帶符號和,將結(jié)果剪切成[231-1…-231]即范圍內(nèi)的32位帶符號值,并將該剪切值存入目的寄存器rdest。所有值都是帶符號整數(shù)。dspuadddspuadd操作計(jì)算無符號數(shù)之和的剪切值,該操作具有以下功能<prelisting-type="program-listing"><![CDATA[ifrguardthen{temp<-zero_ext32to64(rsrc1)+zero_ext32to64(rsrc2)if(無符號)temp>0x00000000ffffffffthenrdest<-0xffffffffelserdest<-temp<310>}]]></pre>如附圖7所示,dspuadd操作計(jì)算rsrc1+rsrc2的無符號和,將結(jié)果剪切成[231-1…0]即范圍內(nèi)的值,并將該剪切值存入目的寄存器rdest。dspidualadddspidualadd操作計(jì)算兩個帶符號16位半字之和的剪切值,該操作具有以下功能<prelisting-type="program-listing"><![CDATA[ifrguardthen{temp1<-sign_ext16to32(rsrc1<150>)+sign_ext16to32(rsrc2<150>)temp2<sign_ext16to32(rsrc1<3116>)+sign_ext16to32(rsrc2<3116>)iftemp1<0xffff8000thentemp1<-0x8000iftemp2=0xffff8000thentemp2<-0x8000iftemp1>0x7fffthentemp1<-0x7fffiftemp2<0x7fffthentemp2<-0x7fffrdest<3116><-temp2<150>rdest<150><-temp1<150>}]]></pre>如附圖8所示,dspidualadd操作分別計(jì)算rsrc1與rsrc2中兩對16位半字的16位帶符號和的剪切值。兩個和數(shù)值均被剪切(clip)成[215-1…-215]即范圍內(nèi)的值,寫入目的寄存器rdest中對應(yīng)的半字位置。所有值均為16位帶符號整數(shù)。dspuquadadduidspuquadaddui操作計(jì)算四個帶符號與無符號字節(jié)(byte)之和的剪切值,該操作具有以下功能<prelisting-type="program-listing"><![CDATA[ifrguardthen{for(i<-0,m<-31,n<-24;i<4;i<-i+1,m<-m-8,n<-n-8){temp<-zero_ext8to32(rsrc1<mn>)+sign_ext8to32(rsrc2<mn>)iftemp<0thenrdest<mn><-0elseiftemp>0xffthenrdest<mn><-0xffelserdest<mn><-temp<70>}]]></pre>如附圖9所示,dspuquadaddui操作為rsrc1與rsrc2的四對8位字節(jié)分別計(jì)算出四個帶符號和,其中假定rsrc1中的各字節(jié)值為無符號值,rsrc2中的各字節(jié)值為帶符號值。將四個和數(shù)剪切成無符號的[255…0]即范圍內(nèi)的值,其結(jié)果是,所有四個字節(jié)和數(shù)均為無符號值。所有各計(jì)算均保留原數(shù)值精度。dspimu1dspimu1操作計(jì)算帶符號數(shù)乘法的剪切值,該操作具有以下功能<prelisting-type="program-listing"><![CDATA[ifrguardthen{temp<-sign_ext32to64(rsrc1)+sign_ext32to64(rsrc2)iftemp<0xffffffff80000000thenrdest<-0x80000000elseiftemp>0x000000007fffffffthenrdest<-0x7fffffffelserdest<-temp<310>}]]></pre>如附圖10所示,dspimu1操作計(jì)算rsrc1×rsrc2的積,將結(jié)果剪切成[231-1…-231]即范圍內(nèi)的值,并將該剪切值存入目的寄存器rdest。所有值都是帶符號整數(shù)。dspumu1dspumu1操作計(jì)算無符號數(shù)乘積的剪切值,該操作具有以下功能<prelisting-type="program-listing"><![CDATA[ifrguardthen{temp<-zero_ext32to64(rsrc1)×zero_ext32to64(rsrc2)if(無符號值)temp>0x00000000ffffffffthenrdest<-0xffffffffelserdest<-temp<310>}]]></pre>如附圖11所示,dspumu1操作計(jì)算rsrc1×rsrc2的無符號乘積值,將結(jié)果剪切成[231-1…0]即范圍內(nèi)的值,并將該剪切值存入目的寄存器rdest。dspidualmu1dspidualmu1操作計(jì)算兩個帶符號16位半字乘積的剪切值,該操作具有以下功能<prelisting-type="program-listing"><![CDATA[ifrguardthen{temp1<-sign_ext16to32(rsrc1<150>)×sign_ext16to32(rsrc2<150>)temp2<-sign_ext16to32(rsrc1<3116>)×sign_ext16to32(rsrc2<3116>)iftemp1<0xffff8000thentemp1<-0x8000iftemp2=0xffff8000thentemp2<-0x8000iftemp1>0x7fffthentemp1<-0x7fffiftemp2<0x7fffthentemp2<-0x7fffrdest<3116><-temp2<150>rdest<150><-temp1<150>}]]></pre>如附圖12所示,dspidualmu1操作分別計(jì)算rsrc1與rsrc2中兩對16位高和低半字的帶符號乘積的16位剪切值,兩個乘積數(shù)值均被剪切成[215-1…-215]即范圍內(nèi)的值,并被存入目的寄存器rdest中對應(yīng)的半字位置。所有值均為16位帶符號整數(shù)。dspisubdspisub操作計(jì)算帶符號減的剪切值,該操作具有以下功能<prelisting-type="program-listing"><![CDATA[ifrguardthen{temp<-sign_ext32to64(rsrc1)-sign_ext32to64(rsrc2)iftemp<0xffffffff80000000thenrdest<-0x80000000elseiftemp>0x000000007fffffffthenrdest<-0x7fffffffelserdest<-temp<310>}]]></pre>如附圖13所示,dspisub操作計(jì)算rsrc1-rsrc2的算術(shù)差,將結(jié)果剪切成范圍內(nèi)的值,并將該剪切值存入目的寄存器rdest。所有值都是帶符號整數(shù)。dspusubdspusub操作計(jì)算無符號減的剪切值,該操作具有以下功能<prelisting-type="program-listing"><![CDATA[ifrguardthen{temp<-zero_ext32to64(rsrc1)-zero_ext32to64(rsrc2)if(帶符號值)temp<0thenrdest<-0elserdest<-temp<310>}]]></pre>如附圖14所示,dspusub操作計(jì)算rsrc1-rsrc2的無符號差,將結(jié)果剪切成范圍內(nèi)的值,并將該剪切值存入目的寄存器rdest。dspidualsubdspidualsub操作計(jì)算兩個帶符號16位半字減的剪切值,該操作具有以下功能<prelisting-type="program-listing"><![CDATA[ifrguardthen{temp1<-sign_ext16to32(rsrc1<150>)-sign_ext16to32(rsrc2<150>)temp2<-sign_ext16to32(rsrc1<3116>)-sign_ext16to32(rsrc2<3116>)iftemp1<0xffff8000thentemp1<-0x8000iftemp2<0xffff8000thentemp2<-0x8000iftemp1>0x7fffthentemp1<-0x7fffiftemp2>0x7fffthentemp2<-0x7fffrdest<3116><-temp2<150>rdest<150><-temp1<150>}]]></pre>如附圖15所示,dspidualsub操作分別計(jì)算rsrc1與rsrc2中兩對16位高和低半字的帶符號16位算術(shù)差數(shù)值,兩個算術(shù)差數(shù)值均被剪切成[215-1…-215]即范圍內(nèi)的值,并被存入目的寄存器rdest中對應(yīng)的半字位置。所有值均為16位帶符號整數(shù)。ifir16ifir16操作計(jì)算兩個帶符號16位半字乘積之和,該操作具有以下功能<prelisting-type="program-listing"><![CDATA[ifrguardthenrdest<-signext16to32(rsrc1<3116>)×sign_ext16to32(rsrc2<3116>)+sign_ext16to32(rsrc1<150>)×sign_ext16to32(rsrc2<150>)]]></pre>如附圖16所示,ifir16操作先計(jì)算rsrc1與rsrc2中兩對16位半字的乘積,再將兩個乘積數(shù)相加后存入目的寄存器rdest。假定所有的半字均為帶符號值,因此,兩個乘積數(shù)及其和也均為帶符號數(shù)值。所有計(jì)算均保留原來的數(shù)值精度。ifir8iiifir8ii操作計(jì)算帶符號字節(jié)值乘積的帶符號和,該操作具有以下功能<prelisting-type="program-listing"><![CDATA[ifrguardthenrdest<-sign_ext8to32(rsrc1<3124>)×sign_ext8to32(rsrc2<3124>)+sign_ext8to32(rsrc1<2316>)×sign_ext8to32(rsrc2<2316>)+sign_ext8to32(rsrc1<158>)×sign_ext8to32(rsrc2<158>)+sign_ext8to32(rsrc1<70>)×sign_ext8to32(rsrc2<70>)]]></pre>如附圖17所示,ifir8ii操作先分別計(jì)算rsrc1與rsrc2中四個8位字節(jié)對的乘積,再將四個乘積數(shù)相加后寫入目的寄存器rdest。假定所有的字節(jié)值均為帶符號值,因此,四個乘積數(shù)及其和也均為帶符號數(shù)值。所有計(jì)算均保留原來的數(shù)值精度。ifir8uiifir8ui操作計(jì)算帶符號與無符號字節(jié)值乘積的帶符號和,該操作具有以下功能<prelisting-type="program-listing"><![CDATA[ifrguardthenrdest<-zero_ext8to32(rsrc1<3124>)×sign_ext8to32(rsrc2<3124>)+zero_ext8to32(rsrc1<2316>)×sign_ext8to32(rsrc2<2316>)+zero_ext8to32(rsrc1<158>)×sign_ext8to32(rsrc2<158>)+zero_ext8to32(rsrc1<70>)×sign_ext8to32(rsrc2<70>)]]></pre>如附圖18所示,ifir8ui操作先分別計(jì)算rsrc1與rsrc2中四個8位字節(jié)對的乘積,再將四個乘積數(shù)相加后存入目的寄存器rdest。假定rsrc1中的字節(jié)值為無符號值,rsrc2中的字節(jié)值為帶符號值,因此,四個乘積數(shù)及其和也均為帶符號數(shù)值。所有計(jì)算均保留原來的數(shù)值精度。ufir16ufir16操作計(jì)算無符號16位半字值乘積之和,該操作具有以下功能<prelisting-type="program-listing"><![CDATA[ifrguardthen{rdest<-zero_ext16to32(rsrc1<3116>)×zero_ext16to32(rsrc2<3116>)+zero_ext16to32(rsrc1<150>)×zero_ext16to32(rsrc2<150>)]]></pre>如附圖19所示,ufir16操作先計(jì)算rsrc1與rsrc2中兩對16位半字的乘積,再將兩個乘積數(shù)相加后存入目的寄存器rdest。假定所有的半字均為無符號值,因此,兩個乘積數(shù)及其和也均為無符號數(shù)值。所有計(jì)算均保留原來的數(shù)值精度。最后的積之和在被寫入rdest之前被剪切成范圍的值。ufir8uuufir8uu操作計(jì)算無符號字節(jié)值乘積之和的無符號和,該操作具有以下功能<prelisting-type="program-listing"><![CDATA[ifrguardthen{rdest<-zero_ext8to32(rsrc1<3124>)×zero_ext8to32(rsrc2<3124>)+zero_ext8to32(rsrc1<2316>)×zero_ext8to32(rsrc2<2316>)+zero_ext8to32(rsrc1<158>)×zero_ext8to32(rsrc2<158>)+zero_ext8to32(rsrc1<70>)×zero_ext8to32(rsrc2<70>)]]></pre>如附圖20所示,ufir8uu操作先分別計(jì)算rsrc1與rsrc2中四個8位字節(jié)對的乘積,再將四個乘積數(shù)相加后存入目的寄存器rdest。假定所有的字節(jié)值均為無符號值。所有計(jì)算均保留原精度。mergelsbmergelsb操作為合并最低有效字節(jié),該操作具有以下功能<prelisting-type="program-listing"><![CDATA[ifrguardthen{rdest<70><-rsrc2<70>rdest<158><-rsrc1<70>rdest<2316><-rsrc2<158>rdest<3124><-rsrc1<158>]]></pre>如附圖21所示,mergelsb操作從rsrc1與rsrc2各取兩對最低有效字節(jié)合并存入rdest中。其中rsrc2中的最低有效字節(jié)被組合到rdest中的最低有效字節(jié)位置,rsrc1中的最低有效字節(jié)被組合到rdest中的次低有效字節(jié)位置,rsrc2中的次低有效字節(jié)被組合到rdest中的次高有效字節(jié)位置,rsrc1中的次低有效字節(jié)被組合到rdest中的最高有效字節(jié)位置。mergemsbmergemsb操作為合并最高有效字節(jié),該操作具有以下功能<prelisting-type="program-listing"><![CDATA[ifrguardthen{rdest<70><-rsrc2<2315>rdest<158><-rsrc1<2315>rdest<2316><-rsrc2<3124>rdest<3124><-rsrc1<3124>]]></pre>如附圖22所示,mergemsb操作從rsrc1與rsrc2各取兩對最高有效字節(jié)合并存入rdest中。其中rsrc2中的次高有效字節(jié)被放置到rdest中的最低有效字節(jié)位置,rsrc1中的次高有效字節(jié)被放置到rdest中的次低有效字節(jié)位置,rsrc2中的最高有效字節(jié)被放置到rdest中的次高有效字節(jié)位置,rsrc1中的最高有效字節(jié)被放置到rdest中的最高有效字節(jié)位置。pack16lsbpack16lsb操作為打包最低有效16位半字,該操作具有以下功能<prelisting-type="program-listing"><![CDATA[ifrguardthen{rdest<150><-rsrc2<150>rdest<3116><-rsrc1<150>]]></pre>如附圖23所示,pack16lsb操作從rsrc1與rsrc2各取一個最低有效16位半字組合存入rdest中。其中rsrc1中的最低有效16位半字被放置到rdest中的最高有效半字位置,rsrc2中的最低有效16位半字被放置到rdest中的最低有效半字位置。pack16msbpack16msb操作為打包最高有效16位半字,該操作具有以下功能<prelisting-type="program-listing"><![CDATA[ifrguardthen{rdest<150><-rsrc2<3116>rdest<3116><-rsrc1<3116>]]></pre>如附圖13所示,pack16msb操作從rsrc1與rsrc2各取一個最高有效16位半字組合存入rdest中。其中rsrc1中的最高有效16位半字被放置到rdest中的最高位半字位置,rsrc2中的最高有效16位半字被放置到rdest中的最低位半字位置。packbytespackbytes操作是打包最低字節(jié),它具有以下功能<prelisting-type="program-listing"><![CDATA[ifrguardthen{rdest<70><-rsrc2<70>rdest<158><-rsrc1<70>]]></pre>如附圖25所示,packbytes操作從rsrc1與rsrc2各取一個最低有效字節(jié)組合存入rdest中。其中rsrc1中的最低有效字節(jié)被放置到rdest中的次低有效字節(jié)位置,rsrc2中的最低有效字節(jié)被放置到rdest中的最低有效字節(jié)位置。rdest中的兩個最高有效字節(jié)位置被填零。quadavgquadavg操作計(jì)算四個無符號字節(jié)的平均值。該操作具有以下功能<prelisting-type="program-listing"><![CDATA[ifrguardthen{temp<-(zero_ext8to32(rsrc1<70>)+zero_ext8to32(rsrc2<70>)+1)/2rdest<70><-temp<70>temp<-(zero_ext8to32(rsrc1<158>)+zeroext8to32(rsrc2<158>)+1)/2rdest<158><-temp<70>temp<-(zero_ext8to32(rsrc1<2316>)+zero_ext8to32(rsrc2<2316>)+1)/2rdest<2316><-temp<70>temp<-(zero_ext8to32(rsrc1<3124>)+zero_ext8to32(rsrc2<3124>)+1)/2rdest<3124><-temp<70>}]]></pre>如附圖26所示,quadavg操作對寄存器rser1與rscr2中的四對8位字節(jié)分別計(jì)算平均值。假定所有字節(jié)均為無符號字節(jié)。每對字節(jié)的平均值的最低8位被寫入目的寄存器rdest中與該對字節(jié)位置相對應(yīng)的字節(jié)位置。不對上溢與下溢情況作檢查。quadumulmsbquadumulmsb操作計(jì)算四個無符號8位字節(jié)對的積的最高字節(jié)。該操作具有以下功能<prelisting-type="program-listing"><![CDATA[ifrguardthen{temp<-(zero_ext8to32(rsrc1<70>)×zero_ext8to32(rsrc2<70>))rdest<70><-temp<158>temp<-(zero_ext8to32(rsrc1<158>)×zero_ext8to32(rsrc2<158>))rdest<158><-temp<158>temp<-(zero_ext8to32(rsrc1<2316>)×zero_ext8to32(rsrc2<2316>))rdest<2316><-temp<158>temp<-(zero_ext8to32(rsrc1<3124>)×zero_ext8to32(rsrc2<3124>))rdest<3124><-temp<158>}]]></pre>如附圖27所示,quadumulmsb操作分別計(jì)算寄存器rscr1與rscr2中的四對8位字節(jié)的積。假定所有字節(jié)均為無符號字節(jié)。每對字節(jié)的16位積的最高8位被寫入目的寄存器rdest中與該對字節(jié)位置相對應(yīng)的字節(jié)位置。ume8iiume8ii操作計(jì)算帶符號8位字節(jié)之差的絕對值的無符號之和。該操作具有以下功能<prelisting-type="program-listing"><![CDATA[ifrguardthenrdest<-abs_val(sign_ext8to32(rsrc1<3124>)-sign_ext8to32(rsrc2<3124>))+abs_val(sign_ext8to32(rsrc1<2316>)-sign_ext8to32(rsrc2<2316>))+abs_val(sign_ext8to32(rsrc1<158>)-sign_ext8to32(rsrc2<158>))+abs_val(sign_ext8to32(rsrc1<70>)-sign_ext8to32(rsrc2<70>))]]></pre>如附圖28所示,ume8ii操作分別計(jì)算寄存器rscr1與rscr2中的四對帶符號8位字節(jié)的差,并將這四個差的絕對值的和寫入目的寄存器rdest。所有計(jì)算均保留原精度。ume8uuume8uu操作計(jì)算無符號8位字節(jié)之差的絕對值之和。該操作具有以下功能<prelisting-type="program-listing"><![CDATA[ifrguardthenrdest<-abs_val(zero_ext8to32(rsrc1<3124>)-zero_ext8to32(rsrc2<3124>))+abs_val(zero_ext8to32(rsrc1<2316>)-zero_ext8to32(rsrc2<2316>))+abs_val(zero_ext8to32(rsrc1<158>)-zero_ext8to32(rsrc2<158>))+abs_val(zero_ext8to32(rsrc1<70>)-zero_ext8to32(rsrc2<70>))]]></pre>如附圖29所示,ume8uu操作分別計(jì)算寄存器rscr1與rscr2中的四對無符號8位字節(jié)的差,并將這四個差的絕對值的和寫入目的寄存器rdest。所有計(jì)算均保留原精度。iclipiiclipi操作將一帶符號值剪切為另一帶符號值。該操作具有以下功能<prelisting-type="program-listing"><![CDATA[ifrguardthenrdest<-min(max(rscr1,-rscr2-1),rscr2)]]></pre>iclipi操作返回scrc1在無符號整數(shù)范圍-rscr2-1至rscr2內(nèi)(包含邊界值)的剪切值。假定參數(shù)rsrc1是帶符號整數(shù),rscr2是0至0x7fffffff范圍內(nèi)(包含邊界值)的一個無符號整數(shù)。uclipiuclipi操作將一帶符號值剪切為另一無符號值。該操作具有以下功能<prelisting-type="program-listing"><![CDATA[ifrguardthenrdest<-min(max(rscr1,0),rscr2)]]></pre>uclipi操作返回scrc1在無符號整數(shù)范圍0至rscr2內(nèi)(包含邊界值)的剪切值。假定參數(shù)rsrc1是無符號整數(shù),rscr2無符號整數(shù)。uclipuuclipu操作將一無符號值剪切為另一無符號值。該操作具有以下功能<prelisting-type="program-listing"><![CDATA[ifrguardthen{ifrscr1>rscr2thenrdest<-rscr2elserdest<-rscr1}]]></pre>uclipu操作返回scrc1在無符號整數(shù)范圍0至rscr2內(nèi)(包含邊界值)的剪切值。假定參數(shù)rsrc1及rscr2均為帶符號整數(shù)。通過運(yùn)用以上的多媒體定制操作,應(yīng)用軟件具有以較低的成本使微處理器高度并行地執(zhí)行多媒體功能的優(yōu)點(diǎn)。從以上說明應(yīng)該了解的是,本發(fā)明可應(yīng)用于用VLIW、RISC、超標(biāo)量等指令格式的處理器高度并行處理。此外,熟悉本領(lǐng)域的人也可以容易地根據(jù)以上思想添加一些操作。例如,雖然本說明中未對四對字節(jié)剪切差的操作予以專門描述,但熟悉本領(lǐng)域的人可以容易地根據(jù)以上說明開發(fā)出這條操作命令。本文至此就描述了用于執(zhí)行多媒體功能的定制操作的方法和系統(tǒng)。本文僅描述和顯示了本發(fā)明的較佳實(shí)施例,但正如前所述,應(yīng)該清楚,本發(fā)明能被應(yīng)用于其它各種組合與環(huán)境中,并能在所表述的本發(fā)明思想的范圍內(nèi)加以修改。權(quán)利要求1.一個計(jì)算機(jī)系統(tǒng),包括接收輸入數(shù)據(jù)的輸入寄存器,每個輸入數(shù)據(jù)含有M位,每個輸入數(shù)據(jù)中具有操作數(shù),每個操作數(shù)包含M位輸入數(shù)據(jù)中N位,其中N小于或等于M;一個處理器,該處理器在某指令集中的一個指令的控制下,并行執(zhí)行Q個以輸入數(shù)據(jù)的操作數(shù)為對象的運(yùn)算操作產(chǎn)生N位的結(jié)果數(shù)據(jù);一個目的寄存器,用于存放作為M位輸出的Q組運(yùn)算結(jié)果數(shù)據(jù)。2.一個計(jì)算機(jī)系統(tǒng),包括提供M位輸入數(shù)據(jù)的輸入寄存器,每個輸入數(shù)據(jù)至少包含兩個操作數(shù),每個操作數(shù)包含N位,其中N小于或等于M;一個專用處理器,并行執(zhí)行一組以輸入數(shù)據(jù)中選定操作數(shù)為操作對象的運(yùn)算操作,每組操作產(chǎn)生N位的結(jié)果數(shù)據(jù);該處理器響應(yīng)某指令集中的某個指令而執(zhí)行操作;一個M位目的寄存器,用于存放N位結(jié)果數(shù)據(jù),用作一個M位輸出數(shù)據(jù)。3.如權(quán)利要求2中所述的計(jì)算機(jī)系統(tǒng),其中各M位輸入寄存器的每個輸入數(shù)據(jù)包括一個N位的第一操作數(shù)和一個N位的第二操作數(shù);該處理器包括將第一輸入數(shù)據(jù)中的第一操作數(shù)與第二輸入數(shù)據(jù)中的第一操作數(shù)相加產(chǎn)生一個N位的第一操作結(jié)果數(shù)據(jù)以及將第一輸入數(shù)據(jù)中的第二操作數(shù)與第二輸入數(shù)據(jù)中的第二操作數(shù)相加產(chǎn)生一個N位的第二操作結(jié)果數(shù)據(jù)的裝置,以及將各個結(jié)果數(shù)據(jù)在某限定范圍內(nèi)分別剪切成長度分別為N位的剪切結(jié)果數(shù)據(jù)的裝置;由所述目的寄存器將該分別剪切的結(jié)果數(shù)據(jù)存儲在一起。4.如權(quán)利要求2中所述的計(jì)算機(jī)系統(tǒng),其中M位的輸入數(shù)據(jù)包括長度各為N位的兩個操作數(shù);該處理器包括計(jì)算每個操作數(shù)的絕對值并分別產(chǎn)生N位長度的絕對值的結(jié)果數(shù)據(jù)的裝置,以及將各個絕對值在某限定范圍內(nèi)分別剪切成長度各為N位的剪切結(jié)果數(shù)據(jù)的裝置;由所述目的寄存器將該分別剪切的結(jié)果數(shù)據(jù)存儲在一起。5.如權(quán)利要求2中所述的計(jì)算機(jī)系統(tǒng),其中M位的輸入數(shù)據(jù)包含一個N位的第一操作數(shù)和一個N位的第二操作數(shù);該處理器包括將第一輸入數(shù)據(jù)中的第一操作數(shù)與第二輸入數(shù)據(jù)中的第一操作數(shù)相乘產(chǎn)生第一個積以及將第一輸入數(shù)據(jù)中的第二操作數(shù)與第二輸入數(shù)據(jù)中的第二操作數(shù)相乘產(chǎn)生第二個積、兩個積的長度均為N位的裝置,以及將各個積在某限定范圍內(nèi)分別剪切成長度各為N位的剪切結(jié)果數(shù)據(jù)的裝置由所述目的寄存器將該分別剪切的結(jié)果數(shù)據(jù)存儲在一起。6.如權(quán)利要求2中所述的計(jì)算機(jī)系統(tǒng),其中M位的輸入數(shù)據(jù)包含一個N位的第一操作數(shù)和一個N位的第二操作數(shù);該處理器包含將第一輸入數(shù)據(jù)中的第一操作數(shù)與第二輸入數(shù)據(jù)中的第一操作數(shù)相減產(chǎn)生第一個差、將第一輸入數(shù)據(jù)中的第二操作數(shù)與第二輸入數(shù)據(jù)中的第二操作數(shù)相減產(chǎn)生第二個差、兩個差的長度均為N位的裝置,以及將第一個差與第二個差在某限定范圍內(nèi)分別剪切成長度各為N位的剪切結(jié)果數(shù)據(jù)的裝置;由所述目的寄存器將該分別剪切的結(jié)果數(shù)據(jù)存儲在一起。7.如權(quán)利要求2中所述的計(jì)算機(jī)系統(tǒng),其中M位的輸入數(shù)據(jù)包含P個長度各為N位的操作數(shù),其中P至少是2;該處理器包含將第一輸入數(shù)據(jù)P個操作數(shù)中的每個操作數(shù)依次與第二輸入數(shù)據(jù)P個操作數(shù)中對應(yīng)的操作數(shù)相加、每次相加產(chǎn)生一個對應(yīng)的N位的和的裝置,以及將各個和在某限定范圍內(nèi)分別剪切成P個N位的剪切結(jié)果數(shù)據(jù)的裝置;由所述目的寄存器將該P(yáng)個剪切結(jié)果數(shù)據(jù)存儲在一起。8.如權(quán)利要求2中所述的計(jì)算機(jī)系統(tǒng),其中M位的輸入數(shù)據(jù)包含P個長度各為N位的操作數(shù),其中P至少是2;該處理器包含將第一輸入數(shù)據(jù)P個操作數(shù)中的每個操作數(shù)依次與第二輸入數(shù)據(jù)P個操作數(shù)中對應(yīng)的操作數(shù)相減、每次相減產(chǎn)生一個對應(yīng)的N位的差的裝置,以及將各個差在某限定范圍內(nèi)分別剪切成P個N位的剪切結(jié)果數(shù)據(jù)的裝置;由所述目的寄存器將該P(yáng)個剪切結(jié)果數(shù)據(jù)存儲在一起。9.如權(quán)利要求2中所述的計(jì)算機(jī)系統(tǒng),其中M位的輸入數(shù)據(jù)包含P個長度各為N位的操作數(shù),其中P至少是2;該處理器包含將第一輸入數(shù)據(jù)P個操作數(shù)中的每個操作數(shù)依次與第二輸入數(shù)據(jù)P個操作數(shù)中對應(yīng)的操作數(shù)相乘、每次相乘產(chǎn)生一個對應(yīng)的N位的積的裝置,以及將各個積在某限定范圍內(nèi)分別剪切成P個N位的剪切結(jié)果數(shù)據(jù)的裝置;由所述目的寄存器將該P(yáng)個剪切結(jié)果數(shù)據(jù)存儲在一起。10.如權(quán)利要求2中所述的計(jì)算機(jī)系統(tǒng),其中M位的輸入數(shù)據(jù)包含P個長度各為N位的操作數(shù),其中P至少是2;該處理器包含依次計(jì)算第一輸入數(shù)據(jù)與第二輸入數(shù)據(jù)內(nèi)P對操作數(shù)中的每對操作數(shù)的平均值、每次計(jì)算產(chǎn)生一個對應(yīng)的N位的平均值的裝置;由所述目的寄存器存儲該P(yáng)個平均值。11.如權(quán)利要求2中所述的計(jì)算機(jī)系統(tǒng),其中M位的輸入數(shù)據(jù)包含P個長度各為N位的操作數(shù),其中P至少是2;該處理器包含將第一輸入數(shù)據(jù)P個操作數(shù)中的每個操作數(shù)依次與第二輸入數(shù)據(jù)P個操作數(shù)中對應(yīng)的操作數(shù)相乘、每次相乘產(chǎn)生一個對應(yīng)的2*N位的積的裝置;由所述目的寄存器從各個積中讀取共N個選定位,形成對應(yīng)的中間數(shù)據(jù),將該P(yáng)個中間數(shù)據(jù)存儲到某目的寄存器,所述目的寄存器長度為M位。12.一個計(jì)算機(jī)系統(tǒng),包括一個輸入寄存器,用于提供M位的輸入數(shù)據(jù);一個處理器,用于從輸入數(shù)據(jù)讀取N個位的數(shù)據(jù)值用于P輸入數(shù)據(jù)N<M;一個目的寄存器,用于存放從P輸入數(shù)據(jù)的讀取的各組N位數(shù)據(jù)值。13.一個計(jì)算機(jī)系統(tǒng),包括一個輸入寄存器,用于提供M位的輸入數(shù)據(jù);一個處理器,用于從輸入數(shù)據(jù)中每個輸入數(shù)據(jù)讀取N個位的數(shù)據(jù)值用于P數(shù)據(jù),N<M,該處理器包含將該從P輸入數(shù)據(jù)的讀取的各組N位數(shù)據(jù)值組合存入一個目的寄存器的裝置。14.如權(quán)利要求12中所述的計(jì)算機(jī)系統(tǒng),其中P為2,N為M的一半,并且所述處理器讀取輸入數(shù)據(jù)的最高有效位組(bits)或輸入數(shù)據(jù)的最低有效位組之一。15.如權(quán)利要求12中所述的計(jì)算機(jī)系統(tǒng),其中提供一個第一輸入數(shù)據(jù)和一個第二輸入數(shù)據(jù);所述處理器讀取各個輸入數(shù)據(jù)的最高有效位組(msb),各個最高有效位組被分別用作最高有效位組內(nèi)的最高有效位組(mmsb)和最高有效位組內(nèi)的最低有效位組(lmsb);所述打包裝置將第一輸入數(shù)據(jù)中的最高有效位組內(nèi)的最高有效位組(mmsb)組合成目的寄存器中的最高有效位組;所述打包裝置將第二輸入數(shù)據(jù)中的最高有效位組內(nèi)的最高有效位組(mmsb)組合成寄存器中的次高有效位組;所述打包裝置將第二輸入數(shù)據(jù)中的最高有效位組內(nèi)的最低有效位組(lmsb)組合成寄存器中的最低有效位組;所述打包裝置將第一輸入數(shù)據(jù)中的最高有效位組內(nèi)的最低有效位組(lmsb)組合成寄存器中的次低有效位組。16.如權(quán)利要求12中所述的計(jì)算機(jī)系統(tǒng),其中提供一個第一輸入數(shù)據(jù)和一個第二輸入數(shù)據(jù);所述處理器讀取各個輸入數(shù)據(jù)的最低有效位組(lsb),各個最低有效位組被分別用作最低有效位組內(nèi)的最高有效位組(mlsb)和最低有效位組內(nèi)的最低有效位組(llsb);所述打包裝置將第一輸入數(shù)據(jù)中的最低有效位組內(nèi)的最高有效位組(mlsb)組合成寄存器中的最高有效位組;所述打包裝置將第二輸入數(shù)據(jù)中的最低有效位組內(nèi)的最高有效位組(mlsb)組合成寄存器中的次高有效位組;所述打包裝置將第二輸入數(shù)據(jù)中的最低有效位組內(nèi)的最低有效位組(llsb)組合成寄存器中的最低有效位組;所述打包裝置將第一輸入數(shù)據(jù)中的最低有效位組內(nèi)的最低有效位組(llsb)組合成寄存器中的次低有效位組。17.如權(quán)利要求12中所述的計(jì)算機(jī)系統(tǒng),其中提供一個第一輸入數(shù)據(jù)和一個第二輸入數(shù)據(jù);所述處理器讀取各個輸入數(shù)據(jù)的最低有效位組(lsb);所述打包裝置將第二輸入數(shù)據(jù)中的最低有效位組(lsb)組合成目的寄存器中的最低有效位組;所述打包裝置將第一輸入數(shù)據(jù)中的最低有效位組(lsb)組合成目的寄存器中的次低有效位組;所述打包裝置用預(yù)定的位值填充目的寄存器中的最高有效位組。18.一個計(jì)算機(jī)系統(tǒng),包含一個用于接收輸入數(shù)據(jù)的輸入寄存器,每個輸入數(shù)據(jù)有M位,包含Q個操作數(shù),每個操作數(shù)包含N位,其中N小于或等于M;一個用于對所述輸入數(shù)據(jù)進(jìn)行數(shù)據(jù)處理的處理器,所述數(shù)據(jù)處理包括并行執(zhí)行以選定操作數(shù)為操作對象的一組運(yùn)算操作,每組操作產(chǎn)生對應(yīng)于各個操作數(shù)的N位長度的結(jié)果數(shù)據(jù);一個用于存放作為包括M位的輸出數(shù)據(jù)的Q個結(jié)果數(shù)據(jù)的目的寄存器。19.如權(quán)利要求18中所述的計(jì)算機(jī)系統(tǒng),其中所述數(shù)據(jù)處理至少是音頻處理和視頻處理之一。20.如權(quán)利要求18中所述的計(jì)算機(jī)系統(tǒng),其中所述計(jì)算機(jī)系統(tǒng)集成在半導(dǎo)體基片上。21.一個計(jì)算機(jī)系統(tǒng),包含一個用于提供輸入數(shù)據(jù)的輸入寄存器,輸入數(shù)據(jù)包含操作數(shù);一個用于執(zhí)行以操作數(shù)為操作對象的一組運(yùn)算操作的處理器,所述操作包含剪切功能,所述處理器產(chǎn)生結(jié)果數(shù)據(jù);一個用于存放結(jié)果數(shù)據(jù)中選定數(shù)據(jù)的目的寄存器。22.如權(quán)利要求21中所述的計(jì)算機(jī)系統(tǒng),其中每個輸入數(shù)據(jù)至少包含兩個操作數(shù);所述處理器響應(yīng)某指令集中的某個指令而并行執(zhí)行選定的操作,所述操作包含剪切功能并產(chǎn)生結(jié)果數(shù)據(jù)。23.一個計(jì)算機(jī)系統(tǒng),包含一組輸入寄存器,每個存放多個操作數(shù)的連接;從輸入寄存器中接收操作數(shù)、響應(yīng)某指令并行執(zhí)行以該操作數(shù)中特定操作數(shù)為操作對象的一組操作的數(shù)據(jù)處理裝置,所述操作包括單操作數(shù)的第一種操作和多操作數(shù)的第二種操作,每個操作均產(chǎn)生結(jié)果數(shù)據(jù),每一組操作產(chǎn)生各自的輸出數(shù)據(jù),并且至少包含一個操作;一個與該數(shù)據(jù)處理裝置相連、用于將各個輸出結(jié)果數(shù)據(jù)存放一起的目的寄存器。24.一個用于信號數(shù)據(jù)處理的信號處理系統(tǒng),包含至少一個用于存儲和提供信號數(shù)據(jù)的輸入寄存器;一個處理器,用于在指令控制下,執(zhí)行系統(tǒng)硬件提供的一組機(jī)器指令,每個指令指示該處理器至少執(zhí)行一個操作并產(chǎn)生結(jié)果數(shù)據(jù),該組指令至少包含一個剪切指令,用于在將對信號數(shù)據(jù)操作的結(jié)果數(shù)據(jù)送到目的寄存器之前對該結(jié)果數(shù)據(jù)進(jìn)行剪切。25.權(quán)利要求24中的計(jì)算機(jī)系統(tǒng),其中所述計(jì)算機(jī)系統(tǒng)集成在半導(dǎo)體基片上。全文摘要定制操作可用于執(zhí)行包括多媒體功能在內(nèi)等功能的處理器系統(tǒng)。這些定制操作在保留專用嵌入方案的成本低廉芯片數(shù)少等優(yōu)點(diǎn)以及通用處理器可編程性等優(yōu)點(diǎn)不變的同時,提高系統(tǒng)(諸如PC系統(tǒng))提供實(shí)時多媒體功能的能力。這些定制操作所作用的計(jì)算機(jī)系統(tǒng),提供帶操作數(shù)的輸入數(shù)據(jù),對操作數(shù)進(jìn)行操作,并將結(jié)果送到目的寄存器。所執(zhí)行的操作包括包含剪切或飽和操作在內(nèi)的視頻與音頻信號處理。本發(fā)明也以來自輸入寄存器(rscr)的選定操作數(shù)為運(yùn)算對象進(jìn)行并行操作并將操作結(jié)果存入目的寄存器(rdes)。文檔編號G06F9/302GK1173931SQ96191245公開日1998年2月18日申請日期1996年8月30日優(yōu)先權(quán)日1995年9月1日發(fā)明者G·斯萊芬伯格,P·范德穆倫,趙鏞顯,V·梅拉,李彥志申請人:菲利浦電子北美公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
即墨市| 大冶市| 榕江县| 思南县| 卢湾区| 巨鹿县| 革吉县| 松桃| 新宁县| 荔波县| 上高县| 揭东县| 石渠县| 商水县| 宁晋县| 威远县| 白沙| 宿迁市| 饶平县| 潍坊市| 资兴市| 象州县| 连平县| 盐边县| 双柏县| 西吉县| 察哈| 元阳县| 和龙市| 荆州市| 呼图壁县| 全南县| 抚远县| 定兴县| 莒南县| 克拉玛依市| 柯坪县| 华亭县| 靖远县| 永胜县| 博爱县|