具有位域操縱指令的數(shù)據(jù)處理裝置及方法
【專(zhuān)利說(shuō)明】
[0001] 本申請(qǐng)是基于申請(qǐng)?zhí)枮?01180056035. 1、申請(qǐng)日為2011年9月29日、申請(qǐng)人為 ARM有限公司、發(fā)明名稱為"具有位域操縱指令的數(shù)據(jù)處理裝置及方法"的發(fā)明提出的分案 申請(qǐng)。
技術(shù)領(lǐng)域
[0002] 本發(fā)明關(guān)于數(shù)據(jù)處理的領(lǐng)域。
【背景技術(shù)】
[0003] 在數(shù)據(jù)處理系統(tǒng)中,數(shù)據(jù)值有時(shí)可含有若干相鄰位,這些位的值獨(dú)立于數(shù)據(jù)值的 其余位而受關(guān)注。這樣一組相鄰位可被認(rèn)為是位域(bitfield),且該組中的相鄰位的數(shù)目 可被認(rèn)為是位域的寬度。例如,表示RGB色值的數(shù)據(jù)值可包括分別表示紅色成分、綠色成分 及藍(lán)色成分的位域。有時(shí),可能希望操縱含有位域的數(shù)據(jù)值以便將位域與該位域的周?chē)?離。例如,有人可能希望僅提取或替換RGB色值中的綠色成分。本技術(shù)試圖提供位域操縱 指令的有效編碼,該位域操縱指令可控制處理裝置執(zhí)行各式各樣不同種類(lèi)的位域操縱。
[0004] 在本申請(qǐng)案中,記法〈X :Y>指示從位位置X處的最高有效位延伸至位位置Y處的 最低有效位的一組相鄰位。由<Χ:Υ>所描述的組寬度為Χ-Υ+1位。例如,表述〈4:0>指示 位位置4至0處的5位寬度,其中位〈4>比位〈0>更有效。應(yīng)注意,記法〈X :Υ>并非暗示儲(chǔ) 存位置內(nèi)的位的任何特定儲(chǔ)存次序,因?yàn)閮?chǔ)存次序不必與有效性的次序相同(例如,可使 用大端或小端儲(chǔ)存格式)。
[0005] 在本申請(qǐng)案中,跟隨有一系列1及0的前綴Ob表示二進(jìn)制記數(shù)法中的數(shù)值。例如, ObllO表示十進(jìn)制記數(shù)法中的值6。
【發(fā)明內(nèi)容】
[0006] 從一個(gè)方面來(lái)看,本發(fā)明提供一種數(shù)據(jù)處理裝置,該數(shù)據(jù)處理裝置包含:
[0007] 處理電路,該處理電路被配置為執(zhí)行處理操作;
[0008] 指令譯碼器,該指令譯碼器響應(yīng)于程序指令產(chǎn)生用于控制該處理電路執(zhí)行所述處 理操作的控制信號(hào);其中:
[0009] 所述程序指令包括位域操縱指令,該位域操縱指令至少識(shí)別第一源數(shù)據(jù)值、第二 源數(shù)據(jù)值及控制值,該第第一源數(shù)據(jù)值包含各自具有N位〈Ν-1 :0>的至少一個(gè)第一源數(shù)據(jù) 元素,該第二源數(shù)據(jù)值包含各自具有N位〈Ν-1 :0>的至少一個(gè)第二源數(shù)據(jù)元素;
[0010] 該控制值包括用于指示位域?qū)挾萕、源位位置A及結(jié)果位位置B的信息,其中 1彡W彡Ν,0彡A彡(N-W)及0彡B彡(N-W);以及
[0011] 該指令譯碼器響應(yīng)于該位域操縱指令以產(chǎn)生用于控制該處理電路產(chǎn)生結(jié)果數(shù)據(jù) 值的控制信號(hào),該結(jié)果數(shù)據(jù)值包含至少一個(gè)結(jié)果數(shù)據(jù)元素,每個(gè)結(jié)果數(shù)據(jù)元素對(duì)應(yīng)于相應(yīng) 第一源數(shù)據(jù)元素及相應(yīng)第二源數(shù)據(jù)元素,每個(gè)結(jié)果數(shù)據(jù)元素具有N位〈Ν-1 :0>,這些位包 含:
[0012] (a)具有與該相應(yīng)第一源數(shù)據(jù)元素的位〈A+W-l :A>相對(duì)應(yīng)的位值的位〈B+W-l : B> ;
[0013] (b)若B+W < N,則為具有與前綴值相對(duì)應(yīng)的位值的位〈N-1 :B+W>,根據(jù)該控制值 選擇該前綴值為以下中的一者:(i)第一前綴值,該第一前綴值包含各自具有零值的位, (ii) 第二前綴值,該第二前綴值具有該相應(yīng)第二源數(shù)據(jù)元素的位〈N-1 :B+W>的位值,以及 (iii) 第三前綴值,該第三前綴值具有與該相應(yīng)第一源數(shù)據(jù)元素的位〈A+W-l :A>的符號(hào)擴(kuò) 展相對(duì)應(yīng)的位值;以及
[0014] (C)若B > 0,則為具有與后綴值相對(duì)應(yīng)的位值的位〈B-1 :0>,根據(jù)該控制值選擇 該后綴值為以下中的一者:(i)第一后綴值,該第一后綴值包含各自具有零值的位,以及 (ii)第二后綴值,該第二后綴值具有該相應(yīng)第二源數(shù)據(jù)元素的位〈B-1 :0>的位值;
[0015] 其中,該位域操縱指令具有位域插入形式,其中該源位位置A = 0而該結(jié)果位位 置B > 0,并且具有位域提取形式,其中該源位位置A多0而該結(jié)果位位置B = 0 ;以及
[0016] 該控制值指定用于確定該位域?qū)挾萕、該源位位置A及該結(jié)果位位置B的最高有效 位位置S和旋轉(zhuǎn)參數(shù)R ;
[0017] 若S彡R,則該源位位置A = R且該結(jié)果位位置B = 0,該位域?qū)挾萕 = (S+l) -R, 且該位域操縱指令具有該位域提取形式;以及
[0018] 若S < R,則該源位位置A = 0且該結(jié)果位位置B = N-R,該位域?qū)挾萕 = S+1,且 該位域操縱指令具有該位域插入形式。
[0019] 處理裝置被提供有處理電路及指令譯碼器,該指令譯碼器響應(yīng)于位域操縱指令以 控制處理電路執(zhí)行位域操縱操作。位域操縱指令至少識(shí)別第一源數(shù)據(jù)值及第二源數(shù)據(jù)值, 該第一源數(shù)據(jù)值包含至少一個(gè)第一源數(shù)據(jù)元素,該第二源數(shù)據(jù)值包含至少一個(gè)第二源數(shù)據(jù) 元素。響應(yīng)于位域操縱指令,處理電路被控制來(lái)產(chǎn)生結(jié)果數(shù)據(jù)值,該結(jié)果數(shù)據(jù)值包含至少一 個(gè)結(jié)果數(shù)據(jù)元素。每一個(gè)第一源數(shù)據(jù)元素、第二源數(shù)據(jù)元素及結(jié)果數(shù)據(jù)元素具有N位〈N-1 : 0>〇
[0020] 每一個(gè)N位結(jié)果數(shù)據(jù)元素包括W位〈B+W-l :B>,所述W位〈B+W-l :B>具有與第一 源數(shù)據(jù)值的相應(yīng)第一源數(shù)據(jù)元素的位〈A+W-l :A>相對(duì)應(yīng)的位值。因此,每一個(gè)結(jié)果數(shù)據(jù)元 素包括自相應(yīng)第一源數(shù)據(jù)元素提取的W位位域。源位位置A指示第一源數(shù)據(jù)元素內(nèi)位域的 最低有效位的位置,結(jié)果位位置B指示結(jié)果數(shù)據(jù)元素內(nèi)位域的最低有效位,且位域?qū)挾萕指 示位域所包含的位數(shù)目。量A、量B及量W位于1彡W彡N,0彡A彡N-W及0彡B彡N-W的 范圍內(nèi),且由位域操縱指令內(nèi)的控制值識(shí)別。控制值可直接識(shí)別A、B及W,或使用可用于推 導(dǎo)A、B及W的任何參數(shù)組間接識(shí)別A、B及W。應(yīng)注意,控制值不必為位域操縱指令編碼內(nèi) 的一組連續(xù)的位,但亦可包含分布于指令編碼中各處的兩組或更多組的位。
[0021] 若控制值指示B+W < N,則每一個(gè)結(jié)果數(shù)據(jù)元素將包括前綴部分,該前綴部分包含 位比結(jié)果數(shù)據(jù)元素內(nèi)位域的最高有效位〈B+W-1〉更有效的〈N-1 :B+W>。本技術(shù)為設(shè)定前綴 部分的位值提供了不同的選擇。位域操縱指令的控制值包括指示何種類(lèi)型的前綴部分將用 于特定位域操縱的信息。根據(jù)控制值,前綴值被選擇為第一前綴值、第二前綴值及第三前 綴值中的一個(gè)。
[0022] 第一前綴值包含各自具有零值的位。當(dāng)選定第一前綴值時(shí),每一個(gè)結(jié)果數(shù)據(jù)元素 含有從該相應(yīng)源數(shù)據(jù)元素提取的位域,其中比該位域更有效的任何位被設(shè)定為〇。此舉可 用于隔離源數(shù)據(jù)元素的位域,以便可以與源數(shù)據(jù)元素的其他部分相分離地來(lái)處理該位域的 值。
[0023] 第二前綴值具有該相應(yīng)第二源數(shù)據(jù)元素的位〈N-1 :B+W>的位值。因此,當(dāng)選定第 二前綴值時(shí),則位域操縱產(chǎn)生這樣的結(jié)果,該結(jié)果等效于將第一源數(shù)據(jù)元素的位域插入第 二源數(shù)據(jù)元素內(nèi),其中第二源數(shù)據(jù)元素的任何更有效的位保持無(wú)變化。此舉可用于將兩個(gè) 或兩個(gè)以上數(shù)據(jù)值的各部分組合成為單個(gè)數(shù)據(jù)值。例如,通過(guò)使用第二前綴形式的位域操 縱指令將與另外兩種成分相對(duì)應(yīng)的位域插入含有RGB成分中的一種成分的數(shù)據(jù)值內(nèi),可從 分離的RGB成分值組裝成組合RGB色值。
[0024] 第三前綴值具有與相應(yīng)第一源數(shù)據(jù)元素的位〈A+W-l :A>的符號(hào)擴(kuò)展相對(duì)應(yīng)的位 值。此舉適用于表示帶符號(hào)值的位域,因?yàn)楫?dāng)符號(hào)擴(kuò)展被包括于結(jié)果數(shù)據(jù)元素內(nèi)時(shí)符號(hào)擴(kuò) 展保存第一源數(shù)據(jù)元素的位域的符號(hào)。例如,若自第一源數(shù)據(jù)元素提取的位域〈A+W-l :A> 表示負(fù)數(shù),則由第三前綴值提供的符號(hào)擴(kuò)展維持結(jié)果數(shù)據(jù)元素內(nèi)的位域的負(fù)號(hào)。
[0025] 通過(guò)選擇第一前綴值、第二前綴值及第三前綴值中的合適的一個(gè)前綴值,可通過(guò) 相同的位域操縱指令來(lái)對(duì)不同種類(lèi)的位域操縱編碼。由于單個(gè)位域操縱指令可提供多個(gè)不 同的操縱操作,故可高效率地使用指令集的編碼空間。熟習(xí)此項(xiàng)技術(shù)者將了解:用于實(shí)施位 域操縱指令的硬件可具有各式各樣的不同形式,且處理電路及指令譯碼器可包含用于產(chǎn)生 具有上述形式的至少一個(gè)結(jié)果數(shù)據(jù)元素的結(jié)果值的任何種類(lèi)的硬件。
[0026] 取決于用于數(shù)據(jù)值的符號(hào)表示的類(lèi)型,第三前綴值的符號(hào)擴(kuò)展位可具有不同形 式。然而,在一個(gè)示例中,第三前綴值可包含各自具有相應(yīng)第一源數(shù)據(jù)元素的位〈A+W-1〉的 位值的位。在許多二進(jìn)制帶符號(hào)數(shù)表示中,指示數(shù)據(jù)值為正或?yàn)樨?fù)的符號(hào)位為該數(shù)據(jù)值的 最高有效位。自第一源數(shù)據(jù)元素提取的位域的最高有效位為位〈A+W-1〉,且因此通過(guò)在第 三前綴值的各位中復(fù)制該位,當(dāng)將該位域插入結(jié)果數(shù)據(jù)值內(nèi)時(shí),被提取位域的符號(hào)得到維 持。
[0027] 若控制值將結(jié)果位位置B定義為大于0,則結(jié)果數(shù)據(jù)元素具有這樣的后綴部分,該 后綴部分包括不及位域的最低有效位<B>有效的至少一個(gè)位〈B-1 :0>。根據(jù)控制值,后綴 值可被選定為第一后綴值及第二后綴值中的一個(gè),該第一后綴值包含各自具有零值的位, 該第二后綴值具有相應(yīng)第二源數(shù)據(jù)元素的位〈B-1 :0>的位值。通過(guò)選擇第一后綴值,可將 位域在結(jié)果數(shù)據(jù)元素內(nèi)與具有零值的較低有效位隔離。通過(guò)使用第二后綴值,位域操縱將 第一源數(shù)據(jù)元素的位域有效地插入第二源數(shù)據(jù)元素內(nèi),其中第二源數(shù)據(jù)元素的較低有效位 無(wú)變化。
[0028] 盡管在隨后所述示例中,描述了指令編碼,其中當(dāng)選定第二前綴值時(shí)則選定了第 二后綴值,且當(dāng)選定第一前綴值及第三前綴值中的一個(gè)時(shí)則選定了第一后綴值,但應(yīng)了解, 亦可使用第一、第二及第三前綴值中的一個(gè)與第一及第二后綴值中的一個(gè)的任何任意組 合。
[0029] 該數(shù)據(jù)處理裝置可包含復(fù)數(shù)個(gè)儲(chǔ)存位置,被配置為儲(chǔ)存供處理電路處理的數(shù)據(jù) 值;
[0030] 其中該位域操縱指令至少識(shí)別用于儲(chǔ)存第一源數(shù)據(jù)值的第一源儲(chǔ)存位置及目的 地儲(chǔ)存位置;并且
[0031] 該指令譯碼器響應(yīng)于位域操縱指令,產(chǎn)生用于控制處理電路將該結(jié)果數(shù)據(jù)值儲(chǔ)存 于目的地儲(chǔ)存位置中的控制信號(hào)。
[0032] 在位域操縱指令的一個(gè)示例中,該指令至少識(shí)別第一源儲(chǔ)存位置及目的地儲(chǔ)存位 置,該第一源儲(chǔ)存位置用于儲(chǔ)存第一源數(shù)據(jù)值,該目的地儲(chǔ)存位置用于儲(chǔ)存所產(chǎn)生的結(jié)果 數(shù)據(jù)值。例如,儲(chǔ)存位置可為寄存器、存儲(chǔ)器位置或用于儲(chǔ)存供處理電路處理的數(shù)據(jù)的任何 其他數(shù)據(jù)儲(chǔ)存器。
[0033] 可選地,位域操縱指令可指定用于儲(chǔ)存第二源數(shù)據(jù)值的第二源儲(chǔ)存位置,或第二 源數(shù)據(jù)值可為在該指令內(nèi)立即識(shí)別的瞬時(shí)值。
[0034] 或者,在一個(gè)示例中,第二源數(shù)據(jù)值可為在執(zhí)行位域操縱指令之前存在于目的地 儲(chǔ)存位置中的數(shù)據(jù)值。在此情況下,結(jié)果數(shù)據(jù)值覆寫(xiě)目的地儲(chǔ)存位置內(nèi)的第二源數(shù)據(jù)值。 若位域操縱指令的控制值使得第二前綴值及第二后綴值被選定,則位域操縱的結(jié)果為:將 來(lái)自第一源數(shù)據(jù)值的位域插入目的地儲(chǔ)存位置內(nèi),其中目的地儲(chǔ)存位置的其他位保持無(wú)變 化。
[0035] -些處理裝置可允許儲(chǔ)存位置(例如,寄存器)作為復(fù)數(shù)個(gè)不同儲(chǔ)存位置大小的 儲(chǔ)存位置進(jìn)行存取。因此,位域操縱指令的控制值可包括用于識(shí)別第一源儲(chǔ)存位置及目的 地儲(chǔ)存位置的儲(chǔ)存位置大小的信息??梢砸圆煌绞絹?lái)實(shí)現(xiàn)儲(chǔ)存位置。在一個(gè)示例中,可 能存在實(shí)體上不同的儲(chǔ)存位置,所述儲(chǔ)存位置具有不同的大?。ɡ纾唤M64位儲(chǔ)存位置 及另一組32位儲(chǔ)存位置)?;蛘撸唤M共同的儲(chǔ)存位置可以以不同儲(chǔ)存位置大小進(jìn)行存取。 例如,相同的64位儲(chǔ)存位置可經(jīng)受64位數(shù)據(jù)存取及32位數(shù)據(jù)存取。在64位儲(chǔ)存位置的 32位數(shù)據(jù)存取期間,僅可讀取儲(chǔ)存位置的位中的32個(gè)位,或者替代地,可讀取儲(chǔ)存位置的 所有64個(gè)位但在執(zhí)行數(shù)據(jù)值的任何進(jìn)一步處理之前可摒棄所述位中的32個(gè)位。同樣地, 當(dāng)將32位數(shù)據(jù)值寫(xiě)入64位儲(chǔ)存位置時(shí),其他32個(gè)位可被設(shè)定為一些預(yù)定值,或可設(shè)定為 32位數(shù)據(jù)的符號(hào)擴(kuò)展,或者保持無(wú)變化。
[0036] 在一些實(shí)施例中,包括于第一源數(shù)據(jù)值、第二源數(shù)據(jù)值及結(jié)果數(shù)據(jù)值內(nèi)的一個(gè)或 多個(gè)數(shù)據(jù)元素可具有數(shù)據(jù)元素大小N,該數(shù)據(jù)元素大小N選自復(fù)數(shù)個(gè)不同的數(shù)據(jù)元素大小。 在此情況下,于是位域操縱指令的控制值亦可包括用于直接或間接地識(shí)別數(shù)據(jù)元素大小N 的信息。提供可變的數(shù)據(jù)元素大小例如可適用于單個(gè)指令多個(gè)數(shù)據(jù)(single instruction multiple data ;SMD)處理操作,其中位域操縱被并行應(yīng)用于第一源數(shù)據(jù)值、第二源數(shù)據(jù)值 及結(jié)果數(shù)據(jù)值內(nèi)的多組相應(yīng)的數(shù)據(jù)元素。
[0037] 由位域操縱指令的控制值來(lái)識(shí)別位位置A及位位置B,位位置A及位位置B指示第 一源數(shù)據(jù)元素及結(jié)果數(shù)據(jù)元素內(nèi)位域的位置。在位域操縱指令的一個(gè)示例中,控制值可識(shí) 別A及B的任何任意值,使得可將來(lái)自源數(shù)據(jù)元素內(nèi)的任何位置的位域復(fù)制至結(jié)果數(shù)據(jù)元 素內(nèi)的任何位置。
[0038] 然而,在一個(gè)示例中,位域操縱指令具有這樣的編碼,該編碼使得源位位置A及結(jié) 果位位置B中的一個(gè)具有零值。本技術(shù)認(rèn)為:對(duì)于最通常希望類(lèi)型的位域操縱操作而言,源 位位置A及結(jié)果位位置B中的至少一個(gè)為0。通過(guò)將A及B中的一者設(shè)定為等于0,隨后A 及B中的僅非零的一個(gè)需要由控制值識(shí)別,且因此指令編碼變得更高效。在該指令的位域 插入形式中,A = 0而B(niǎo) > 0,以使得位于源數(shù)據(jù)元素的最低有效部分〈W-1 :0>處的位域被 插入結(jié)果數(shù)據(jù)元素的任意部分〈B+W-l :B>中。在該指令的位域提取形式中,A多0而B(niǎo) = 〇,以使得位域從源數(shù)據(jù)元素的任意部分〈A+W-l :A>被提取,且被復(fù)制至結(jié)果數(shù)據(jù)元素的最 低有效部分<w-l:0>。指令的提取形式及插入形式滿足最常用形式的位域操縱。然而,若 需要希望A及B兩者為非零值的位域操縱,則仍可使用如下兩個(gè)位域操縱指令執(zhí)行此操作: 位域提取形式