專利名稱:于多模處理器中以串行位決定指令長度的裝置及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及處理器的技術(shù)領(lǐng)域,尤指一種于多模處理器中以串行 位決定指令長度的裝置及方法。
背景技術(shù):
一般多模處理器具有2N位及N位的指令模式,并在此兩種模式 切換執(zhí)行,以節(jié)省程序碼儲(chǔ)存所需的空間。
在己知的專利文獻(xiàn)中,美國專利7,149,879號(hào)公告案利用同位位 來進(jìn)行上述切換,每一 N位字組包含P位的同位位及(N-P)位的指令, 當(dāng)所擷取的2N位字組表示一偶同位時(shí),其2N位字組視為2個(gè)(N-P)位 的指令,反之,當(dāng)所擷取的2N位字組表示一奇同位時(shí),其2N位字組 視為單一的2(N-P)位的指令。
美國專利5, 758, 115號(hào)公告案是以程序計(jì)數(shù)器(Program Counter, PC)中的T位決定該處理器執(zhí)行于X位或Y位指令模式,并利用分枝 (Branch)指令來切換程序計(jì)數(shù)器中T位的值。美國專利6, 209, 079號(hào) 公告案利用特定位辨別所擷取的2N位字組為二個(gè)N位指令或一個(gè)2N 位指令。
然而,現(xiàn)有技術(shù)在數(shù)據(jù)架構(gòu)確認(rèn)后,很難再延長數(shù)據(jù)的長度,并 且于存放數(shù)據(jù)時(shí),需對(duì)齊單一寬度以方便辨識(shí),如此將造成長度不同 的數(shù)據(jù)無法交錯(cuò)存放,使數(shù)據(jù)存放密度難以提升,增加編譯器的復(fù)雜 度,因此程序碼儲(chǔ)存空間無法獲得最佳化。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種以串行位決定指令長度的裝置及方法, 以于多模指令的處理器中決定指令長度。
本發(fā)明的主要目的是提供一種于多模處理器中以串行位決定指令 長度的裝置,從而能于mXN位模式執(zhí)行mXN位指令,m、 N為大于或 等于1的整數(shù),mXN位指令由m個(gè)N位數(shù)據(jù)所組成,每一 N位數(shù)據(jù)包
含至少一串行位,此指令長度決定裝置包含指令輸入裝置、指令擷取 裝置、指令長度判斷邏輯及指令串行裝置,其中,指令輸入裝置包含 儲(chǔ)存指令或數(shù)據(jù)的存儲(chǔ)空間,以供儲(chǔ)存多個(gè)N位數(shù)據(jù);指令擷取裝置 用以由指令輸入裝置擷取N位數(shù)據(jù);指令長度判斷邏輯依據(jù)指令擷取 裝置所擷取的N位數(shù)據(jù)的串行位是否為一預(yù)定值,判斷指令長度;以 及指令串行裝置依據(jù)指令長度判斷邏輯的判斷,進(jìn)而選擇性地將所擷 取的連續(xù)整數(shù)個(gè)N位數(shù)據(jù)串行并輸出;
其中,當(dāng)指令長度判斷邏輯判斷指令擷取裝置擷取的N位數(shù)據(jù)的 串行位不為預(yù)定值時(shí),將N位數(shù)據(jù)判定為一完整指令,指令串行裝置
輸出N位數(shù)據(jù),否則,保留N位數(shù)據(jù),且指令擷取裝置擷取下一個(gè)N 位數(shù)據(jù);當(dāng)指令長度判斷邏輯判斷下一個(gè)N位數(shù)據(jù)的串行位為預(yù)定值 時(shí),判定N位數(shù)據(jù)與下一個(gè)N位組成一完整指令,指令串行裝置將N 位數(shù)據(jù)與下一個(gè)N位串行并輸出,否則,保留下一個(gè)N位數(shù)據(jù),再擷 取下一個(gè)N位數(shù)據(jù),直至指令長度判斷邏輯判斷擷取的N位數(shù)據(jù)的串 行位為預(yù)定值時(shí),判定最后擷取的N位數(shù)據(jù)與先前保留的所有N位數(shù) 據(jù)組成一完整指令,指令串行裝置將最后擷取的N位數(shù)據(jù)與先前保留 的所有N位數(shù)據(jù)串行并輸出。
依照本發(fā)明的優(yōu)選實(shí)施例所述指令長度決定裝置,上述的N值為 16,串行位預(yù)設(shè)值為T bl。
依照本發(fā)明的優(yōu)選實(shí)施例所述指令長度決定裝置,上述的串行位 位于該N位數(shù)據(jù)中的特定位置。
依照本發(fā)明的優(yōu)選實(shí)施例所述指令長度決定裝置,上述的串行位 的位數(shù)為大于或等于1的整數(shù)。
本發(fā)明的另一 目的是提供一種于多模處理器中以串行位決定指令 長度的方法,處理器可于mXN位模式執(zhí)行mXN位指令,m、 N為大于 或等于1的整數(shù),多模處理器具有一可變長度指令集,其提供不同長 度的mXN位指令,mXN位指令由m個(gè)N位數(shù)據(jù)所組成,每一個(gè)N位數(shù) 據(jù)包含至少一串行位,方法包括以下步驟
(A)擷取一個(gè)N位數(shù)據(jù);(B)判斷擷取的N位數(shù)據(jù)的串行位是否為一 預(yù)定值,否則,判定擷取的N位數(shù)據(jù)為一完整1XN位指令,若是,則 執(zhí)行步驟(C); (C)保留擷取的N位數(shù)據(jù),并擷取下一個(gè)N位數(shù)據(jù);(D)
判斷擷取的下一個(gè)N位數(shù)據(jù)的串行位是否為預(yù)定值,若否,執(zhí)行步驟
(C),若是,則執(zhí)行步驟(E);以及(E)判定最后擷取的N位數(shù)據(jù)與 先前保留的所有N位數(shù)據(jù)串行組成一完整的mX N位指令。
依照本發(fā)明的優(yōu)選實(shí)施例所述方法,上述的N值為16,串行位預(yù) 設(shè)值為l位的l。
依照本發(fā)明的優(yōu)選實(shí)施例所述方法,上述的串行位位于N位數(shù)據(jù) 中的任一特定位置。
依照本發(fā)明的優(yōu)選實(shí)施例所述方法,上述的串行位的位數(shù)為大于 或等于l。
圖1是本發(fā)明一優(yōu)選實(shí)施例的于多模處理器中以串行位決定指令 長度的裝置示意圖。
圖2是本發(fā)明一優(yōu)選實(shí)施例的于多模處理器中以串行位決定指令 長度的方法流程圖。
圖3A至3E是本發(fā)明一優(yōu)選實(shí)施例的于多模處理器中以串行位決 定指令長度的指令串行范例。
具體實(shí)施例方式
請(qǐng)參見圖1,圖1為本發(fā)明一優(yōu)選實(shí)施例的于多模處理器中以串行 位決定指令長度的裝置示意圖。處理器可于mXN位模式下執(zhí)行mXN 位指令,mXN位指令由m個(gè)N位數(shù)據(jù)所組成,m、 N為大于或等于1的 整數(shù),每一個(gè)N位數(shù)據(jù)包含至少一串行位,本實(shí)施例中以N二16、串行 位寬度為1位為例作說明,而處理器可于16位模式(m二l) 、 32位模式 (m=2) 、 48位模式(iif3)…等多種模式執(zhí)行。指令長度決定裝置100包 含指令輸入裝置110、指令擷取裝置120、指令長度判斷邏輯130及指 令串行裝置140。指令輸入裝置110包含儲(chǔ)存指令或數(shù)據(jù)的存儲(chǔ)空間, 用以提供儲(chǔ)存多個(gè)16位數(shù)據(jù);指令擷取裝置120用以由指令輸入裝置 110擷取16位數(shù)據(jù);指令長度判斷邏輯130依據(jù)指令擷取裝置120所 擷取的16位數(shù)據(jù)的串行位是否為一預(yù)定值,進(jìn)行指令長度的判斷,其 中本實(shí)施例中預(yù)定值為1;以及指令串行裝置140依據(jù)指令長度判斷邏 輯130的判斷,進(jìn)而選擇性地將所擷取的連續(xù)整數(shù)個(gè)16位數(shù)據(jù)串行并輸出;
其中,當(dāng)指令長度判斷邏輯130判斷指令擷取裝置120的擷取16 位數(shù)據(jù)的串行位不為l時(shí),判定該16位數(shù)據(jù)為一完整指令,指令串行 裝置140輸出16位數(shù)據(jù),否則,保留該16位數(shù)據(jù),且指令擷取裝置 120擷取下一個(gè)16位數(shù)據(jù);當(dāng)指令長度判斷邏輯130判斷下一個(gè)16 位數(shù)據(jù)的串行位為1時(shí),判定16位數(shù)據(jù)與下一個(gè)16位組成一完整指 令,指令串行裝置140將16位數(shù)據(jù)與下一個(gè)16位串行并輸出,否則, 保留下一個(gè)16位數(shù)據(jù),再擷取下一個(gè)16位數(shù)據(jù),直至指令長度判斷 邏輯130判斷擷取的16位數(shù)據(jù)的串行位為1時(shí),判定最后擷取的16 位數(shù)據(jù)與先前保留的所有16位數(shù)據(jù)組成一完整指令,指令串行裝置 140將最后擷取的16位數(shù)據(jù)與先前保留的所有16位數(shù)據(jù)串行并輸出。
其中,串行位可位于所擷取的16位數(shù)據(jù)中的任一特定位置,本實(shí) 施例是在16位數(shù)據(jù)的起始位置處,且串行位的位數(shù)可以是大于或等于 1的整數(shù)。
請(qǐng)參見圖2,圖2為本發(fā)明一優(yōu)選實(shí)施例的于多模處理器中以串行 位決定指令長度的方法流程圖,處理器可于mXN位模式執(zhí)行mXN位 指令,m、 N為大于或等于1的整數(shù),多模處理器具有一可變長度指令 集,其提供不同長度的mXN位指令,mXN位指令由m個(gè)N位數(shù)據(jù)所組 成,每一個(gè)N位數(shù)據(jù)包含至少一串行位,其中串行位的位數(shù)為大于或 等于1的整數(shù),方法包括以下步驟
擷取一個(gè)N位數(shù)據(jù)(步驟S201);判斷所擷取的N位數(shù)據(jù)的串行位 是否為一預(yù)定值(步驟S203),若否,判定所擷取的N位數(shù)據(jù)為一完整 的1XN位指令,并輸出所擷取的N位數(shù)據(jù)(步驟S205),若是,則保 留所擷取的N位數(shù)據(jù),并擷取下一個(gè)N位數(shù)據(jù)(步驟S207);判斷擷取 的下一個(gè)N位數(shù)據(jù)的串行位是否為預(yù)定值(步驟S209),若否,執(zhí)行步 驟207,若是,則判定最后所擷取的N位數(shù)據(jù)與先前保留的所有N位數(shù) 據(jù)串行組成一完整的mXN位指令(步驟S211)。
于本發(fā)明的優(yōu)選實(shí)施例中,上述的N值優(yōu)選為16,串行位預(yù)設(shè)值 優(yōu)選為r bl。故在此以N二16、串行位的位數(shù)為l、及預(yù)定值為l來 舉例說明,請(qǐng)先參見圖3A,首先擷取一16位數(shù)據(jù)310, 16位數(shù)據(jù)310 包含一串行位312,其中該串行位312其值為0,位于位數(shù)據(jù)310的起始位置,接著判斷所擷取的16位數(shù)據(jù)310的串行位312是否為預(yù)定值 1,由于16位數(shù)據(jù)310的串行位312不為1,輸出擷取的16位數(shù)據(jù)310, 代表此時(shí)處理器工作于16位模式。
請(qǐng)參見圖3B,首先擷取一個(gè)16位的數(shù)據(jù)320, 16位數(shù)據(jù)320包含 一寬度為l位的串行位322,其位于16位數(shù)據(jù)320的起始位置,接著 判斷擷取的16位數(shù)據(jù)320的串行位322是否為預(yù)定值1,由于判斷結(jié) 果為16位數(shù)據(jù)320的串行位322為預(yù)定值1,保留擷取的16位數(shù)據(jù) 320,并擷取下一個(gè)16位數(shù)據(jù)330 (參見圖3C), 16位數(shù)據(jù)330包含一 串行位332,判斷所擷取的16位數(shù)據(jù)330的串行位332是否為預(yù)定值 1,由于16位數(shù)據(jù)330的串行位332為預(yù)定值1,將擷取的16位數(shù)據(jù) 330與先前保留的16位數(shù)據(jù)320串行并輸出,即為一個(gè)32位數(shù)據(jù),代 表此時(shí)處理器工作于32位模式。
若擷取的16位數(shù)據(jù)330中的串行位332非為預(yù)定值1時(shí)(參見圖 3D,串行位332為0),保留所擷取的16位數(shù)據(jù)330并擷取下一個(gè)16 位數(shù)據(jù)340 (參見圖3E,串行位342為1),判斷所擷取16位數(shù)據(jù)340 的串行位是否為預(yù)定值1,由于擷取16位數(shù)據(jù)340的串行位為預(yù)定值 1,將擷取的16位數(shù)據(jù)340與先前保留的所有16位數(shù)據(jù)(16位數(shù)據(jù) 320、 16位數(shù)據(jù)330)串行并輸出,成為一48位數(shù)據(jù),代表此時(shí)處理 器系工作于48位模式。
由于在多模指令的處理器中,指令寬度可能有16位、32位、48 位等各種長度可能性,于本實(shí)施例中則是以16位為基本數(shù)據(jù)長度作說 明,而基本數(shù)據(jù)中包含一個(gè)串行位,剩余15位為數(shù)據(jù)可用內(nèi)容,將16 位數(shù)據(jù)相互串行后可形成如16位、32位、48位等各種長度指令,增 加其使用彈性及擴(kuò)充性。
因此,本發(fā)明可將原先固定長度的數(shù)據(jù)相互串行,形成不同長度 的指令或數(shù)據(jù),另外,利用串行位的不重復(fù)性,當(dāng)要從存儲(chǔ)體讀取或 儲(chǔ)存數(shù)據(jù)時(shí),可不對(duì)齊存取線的寬度,以增進(jìn)數(shù)據(jù)存放密度,并減輕 編譯器的復(fù)雜度。此外,由于串行位的位置及長度可變,因此位置或 長度本身可做為數(shù)據(jù)安全性防護(hù)在編譯及反向編譯運(yùn)作時(shí)的參考。
由上述可知,本發(fā)明無論就目的、手段及功效,在均顯示其迥異 于現(xiàn)有技術(shù)的特征,極具實(shí)用價(jià)值。但是應(yīng)注意的是,上述諸多實(shí)施
例僅為了便于說明而舉例而已,本發(fā)明所主張的權(quán)利范圍自應(yīng)以申請(qǐng) 專利范圍所述為準(zhǔn),而非僅限于上述實(shí)施例。
權(quán)利要求
1. 一種于多模處理器中利用串行位決定指令長度的裝置,使該多模處理器可于m×N位模式下執(zhí)行m×N位指令,m、N為大于或等于1的整數(shù),該m×N位指令由m個(gè)N位數(shù)據(jù)所組成,每一該N位數(shù)據(jù)包含至少一串行位,該指令長度決定裝置包含指令輸入裝置,具有存儲(chǔ)空間,用以供儲(chǔ)存多個(gè)N位數(shù)據(jù);指令擷取裝置,用以由該指令輸入裝置擷取前述N位數(shù)據(jù);指令長度判斷邏輯,其依據(jù)所擷取的前述N位數(shù)據(jù)的串行位是否為預(yù)定值,用以判斷指令長度;以及指令串行裝置,依據(jù)該指令長度判斷邏輯的輸出,進(jìn)而選擇性地將所擷取的該些N位數(shù)據(jù)串行并輸出;其中,當(dāng)指令長度判斷邏輯判斷指令擷取裝置所擷取的前述N位數(shù)據(jù)的串行位不為該預(yù)定值時(shí),判定該N位數(shù)據(jù)為完整指令,該指令串行裝置輸出該N位數(shù)據(jù),否則,保留該N位數(shù)據(jù),且該指令擷取裝置再擷取下一個(gè)N位數(shù)據(jù);當(dāng)該指令長度判斷邏輯判斷該下一個(gè)N位數(shù)據(jù)的串行位為該預(yù)定值時(shí),判定該N位數(shù)據(jù)與該下一個(gè)N位組成完整指令,該指令串行裝置將該N位數(shù)據(jù)與該下一個(gè)N位串行并輸出,否則,保留該下一個(gè)N位數(shù)據(jù),再擷取下一個(gè)N位數(shù)據(jù),直至該指令長度判斷邏輯判斷所擷取的前述N位數(shù)據(jù)的串行位為該預(yù)定值時(shí),將最后所擷取的前述N位數(shù)據(jù)與先前所有保留的該些N位數(shù)據(jù)判定為完整指令,該指令串行裝置將最后所擷取的前述N位數(shù)據(jù)與先前所有保留的該些N位數(shù)據(jù)串行并輸出。
2. 根據(jù)權(quán)利要求l所述的決定指令長度的裝置,其中,N為16,該 串行位預(yù)設(shè)值為l'bl。
3. 根據(jù)權(quán)利要求l所述的決定指令長度的裝置,其中,該串行位位 于該N位數(shù)據(jù)中的特定位置。
4. 根據(jù)權(quán)利要求3所述的決定指令長度的裝置,其中,該特定位置 為該N位數(shù)據(jù)的起始位置。
5. 根據(jù)權(quán)利要求l所述的指令長度決定裝置,其中,該串行位的位 數(shù)為大于或等于l。
6. —種于多模處理器中利用串行位決定指令長度的方法,該多模 處理器可于mXN位模式下執(zhí)行mXN位指令,其中,m、 N為大于或等 于1的整數(shù),該多模處理器具有可變長度指令集,其提供不同長度的m XN位指令,該mXN位指令由m個(gè)N位數(shù)據(jù)所組成,每一個(gè)前述N位數(shù) 據(jù)包含至少一串行位,該方法包括以下步驟(A) 擷取一個(gè)N位數(shù)據(jù);(B) 判斷所擷取的前述N位數(shù)據(jù)的串行位是否為預(yù)定值,若否, 判定所擷取的前述N位數(shù)據(jù)為一完整位指令,否則,則執(zhí)行步驟(C);(C) 保留所擷取的前述N位數(shù)據(jù),并擷取下一個(gè)N位數(shù)據(jù);(D) 判斷所擷取的該下一個(gè)N位數(shù)據(jù)的串行位是否為該預(yù)定值, 若否,執(zhí)行步驟(C),否則,則執(zhí)行步驟(E);以及(E) 判定最后所擷取的N位數(shù)據(jù)與先前所有保留的該些N位數(shù)據(jù) 完整地串行組成前述完整位指令。
7. 根據(jù)權(quán)利要求6所述的方法,其中,N為16,該串行位預(yù)設(shè)值為 l,bl。
8. 根據(jù)權(quán)利要求6所述的方法,其中,該串行位位于該N位數(shù)據(jù)中 的特定位置。
9. 根據(jù)權(quán)利要求8所述的方法,其中,該特定位置為該N位數(shù)據(jù)的 起始位置。
10. 根據(jù)權(quán)利要求6所述的方法,其中,該串行位的位數(shù)為大于或 等于l。
11. 一種于多模處理器中利用串行位決定指令長度的裝置,使該 多模處理器可于16N位模式下執(zhí)行16N位指令,該16N位指令由N個(gè)16 位數(shù)據(jù)所組成,每一該16位數(shù)據(jù)包含至少一串行位,其中,N為整數(shù), 該指令長度決定裝置包含指令輸入裝置,具有存儲(chǔ)空間,用以儲(chǔ)存多個(gè)16位數(shù)據(jù); 指令擷取裝置,用以由該指令輸入裝置擷取前述16位數(shù)據(jù); 指令長度判斷邏輯,其依據(jù)所擷取的前述16位數(shù)據(jù)的串行位是否為預(yù)定值,用以判斷指令長度;以及指令串行裝置,依據(jù)該指令長度判斷邏輯的輸出,進(jìn)而選擇性地將所擷取的該些16位數(shù)據(jù)串行并輸出;其中,當(dāng)指令長度判斷邏輯判斷指令擷取裝置所擷取的前述16位 數(shù)據(jù)的串行位不為該預(yù)定值時(shí),判定該16位數(shù)據(jù)為完整指令,該指令 串行裝置輸出該16位數(shù)據(jù),否則,保留該16位數(shù)據(jù),且該指令擷取裝置擷取下一個(gè)16位數(shù)據(jù);當(dāng)該指令長度判斷邏輯判斷該下一個(gè)16位數(shù)據(jù)的串行位為該預(yù)定值時(shí),判定該16位數(shù)據(jù)與該下一個(gè)16位組成完整 指令,該指令串行裝置將該16位數(shù)據(jù)與該下一16位數(shù)據(jù)串行并輸出, 否則,保留該下一個(gè)16位數(shù)據(jù),擷取再下一個(gè)16位數(shù)據(jù),直至該指令 長度判斷邏輯判斷所擷取的前述再下一個(gè)16位數(shù)據(jù)的串行位為該預(yù)定 值時(shí),將前述再下一個(gè)16位數(shù)據(jù)與先前所有保留的該些16位數(shù)據(jù)判定 為該完整指令進(jìn)而串行并輸出。
全文摘要
一種在多模處理器中以串行位決定指令長度的裝置及方法。當(dāng)指令長度判斷邏輯判斷指令擷取裝置擷取的N位數(shù)據(jù)的串行位不為預(yù)定值時(shí),判定N位數(shù)據(jù)為完整指令,指令串行裝置輸出N位數(shù)據(jù),否則保留N位數(shù)據(jù),且指令擷取裝置擷取下一個(gè)N位數(shù)據(jù);當(dāng)指令長度判斷邏輯判斷下一個(gè)N位數(shù)據(jù)的串行位為預(yù)定值時(shí),判定N位數(shù)據(jù)與下一個(gè)N位組成完整指令,指令串行裝置將N位數(shù)據(jù)與下一個(gè)N位串行并輸出,否則保留下一個(gè)N位數(shù)據(jù),再擷取下一個(gè)N位數(shù)據(jù),直至指令長度判斷邏輯判斷擷取的N位數(shù)據(jù)的串行位為預(yù)定值時(shí),判定最后擷取的N位數(shù)據(jù)與先前保留的所有N位數(shù)據(jù)組成完整指令,指令串行裝置將最后擷取的N位數(shù)據(jù)與先前保留的所有N位數(shù)據(jù)串行并輸出。
文檔編號(hào)G06F9/38GK101377735SQ20071014776
公開日2009年3月4日 申請(qǐng)日期2007年8月28日 優(yōu)先權(quán)日2007年8月28日
發(fā)明者宋莉安 申請(qǐng)人:凌陽科技股份有限公司