一種power指令集向量協(xié)處理器的譯碼電路的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種譯碼電路。特別是涉及一種POWER指令集向量協(xié)處理器的譯碼電路。
【背景技術(shù)】
[0002]SIMD (Single Instruct1n Multiple Data)是一種實(shí)現(xiàn)數(shù)據(jù)級并行的技術(shù),對多個(gè)數(shù)據(jù)執(zhí)行相同的操作。S頂D技術(shù)的關(guān)鍵是在一條單獨(dú)的指令中同時(shí)執(zhí)行多個(gè)運(yùn)算操作,以增加處理器的吞吐量,這一特點(diǎn)使得sn?技術(shù)特別適合于多媒體應(yīng)用等數(shù)據(jù)密集型運(yùn)算?,F(xiàn)在主流的處理器都有其S頂D指令子集,如X86的MMX或SSE,ARM的NEON指令子集,PowerPC的Altivec指令子集等。在現(xiàn)代的多核處理器中,處理器上的每個(gè)核通常都會配有一個(gè)專屬的SIMD協(xié)處理器,也稱為Vector Coprocessor (VP)。作為協(xié)處理器整體性能的關(guān)鍵部分,傳統(tǒng)協(xié)處理器的一級譯碼電路對每條指令的全部指令位進(jìn)行校驗(yàn)后產(chǎn)生該指令所對應(yīng)功能單元的使能信號和指令類型信號,相應(yīng)的功能單元二級譯碼電路在經(jīng)由一級譯碼電路產(chǎn)生的使能信號為高時(shí)對指令類型信號進(jìn)行譯碼,產(chǎn)生相應(yīng)的控制信號。整個(gè)譯碼過程相當(dāng)于一個(gè)先編碼、再譯碼的過程,從而造成資源的浪費(fèi)以及功耗的增加。
【發(fā)明內(nèi)容】
[0003]本發(fā)明所要解決的技術(shù)問題是,提供一種能夠在使用組合邏輯來識別指令時(shí),所需要的組合邏輯的數(shù)量達(dá)到最小,從而降低系統(tǒng)功耗的POWER指令集向量協(xié)處理器的譯碼電路。
[0004]本發(fā)明所采用的技術(shù)方案是:一種POWER指令集向量協(xié)處理器的譯碼電路,包括有依次連接的第一判斷器、第一設(shè)置器、第二判斷器和第二設(shè)置器,其中,
[0005]所述第一判斷器的輸入端連接主處理器的輸出端,用于接收來自主處理器的指令,并且判斷所述指令是否為有效的向量協(xié)處理器指令,并將判斷結(jié)果發(fā)送給第一設(shè)置器;
[0006]所述第一設(shè)置器的輸出還連接主處理器的輸入端,用于向主處理器反饋主處理器所發(fā)的指令是一條有效的向量協(xié)處理器指令,還是一條無效的向量協(xié)處理器指令的信息;當(dāng)?shù)谝辉O(shè)置器得到第一判斷器的判斷結(jié)果為當(dāng)前指令是一條有效的向量協(xié)處理器指令時(shí),將向量協(xié)處理器指令有效標(biāo)志位置為高,否則將向量協(xié)處理器指令有效標(biāo)志位置為低,并將協(xié)處理器指令有效標(biāo)志位置為高和為低的信息發(fā)送給第二判斷器;
[0007]所述第二判斷器的輸入端還連接主處理器的輸出端接收主處理器的指令,當(dāng)?shù)诙袛嗥魇盏降谝辉O(shè)置器發(fā)過來的協(xié)處理器指令有效標(biāo)志位置為高的信息時(shí),判斷主處理器的指令所屬的功能執(zhí)行單元及功能單元所需操作數(shù)的數(shù)據(jù)來源,并將判斷結(jié)果送入第二設(shè)置器;
[0008]所述第二設(shè)置器根據(jù)第二判斷器的判斷結(jié)果將相應(yīng)的控制信號及指令所要讀取的操作數(shù)交給不同的功能執(zhí)行單元。
[0009]當(dāng)所述第一設(shè)置器將協(xié)處理器指令有效標(biāo)志位不為高,則表示當(dāng)前譯碼指令是一條非向量協(xié)處理器有效指令,該指令無法由向量協(xié)處理器執(zhí)行。
[0010]當(dāng)主處理器的指令是一條無效的向量協(xié)處理器指令,則向量協(xié)處理器流水線停滯,等待主處理器發(fā)送一條新的向量協(xié)處理器有效指令,直到第一判斷器判斷接收到主處理器發(fā)送的向量協(xié)處理器指令為有效的向量協(xié)處理器指令后,將向量協(xié)處理器指令有效標(biāo)志位置為高。
[0011]所述第二設(shè)置器為了使在使用組合邏輯來識別指令時(shí),所需要的組合邏輯的數(shù)量能達(dá)到最小,只將必要的指令位發(fā)送給功能單元,而無需發(fā)送冗余的指令位。
[0012]所述第二判斷器所判斷的全部向量協(xié)處理器指令包括:仿存類指令、置換類指令、簡單定點(diǎn)類指令、復(fù)雜定點(diǎn)類指令和浮點(diǎn)類指令,其中仿存類指令指讀寫內(nèi)存和特殊寄存器類指令;置換類指令指完成置換操作的單周期定點(diǎn)類指令;簡單定點(diǎn)類指令指單周期完成的算術(shù)定點(diǎn)類指令;復(fù)雜定點(diǎn)類指令指多周期完成的算術(shù)定點(diǎn)類指令;浮點(diǎn)類指令指多周期完成的算術(shù)浮點(diǎn)類指令。
[0013]第二設(shè)置器將仿存類指令送入功能單元中用于執(zhí)行仿存類指令的仿存單元,將置換類指令送入功能單元中用于執(zhí)行置換類指令的置換單元,將簡單定點(diǎn)類指令送入功能單元中用于執(zhí)行簡單定點(diǎn)類指令的簡單定點(diǎn)單元,將復(fù)雜定點(diǎn)類指令送入功能單元中用于執(zhí)行復(fù)雜定點(diǎn)類指令的復(fù)雜定點(diǎn)單元,將浮點(diǎn)類指令送入功能單元中用于執(zhí)行浮點(diǎn)類指令的浮點(diǎn)單元。
[0014]所述第二判斷器接收主處理器的一條指令是32位向量協(xié)處理器有效指令的第26位為1,則所述的指令為一條VA格式指令,對于VA格式指令,根據(jù)指令的第28-30位判斷所述指令類型,當(dāng)所述指令的第28-30位為111時(shí),所述指令為浮點(diǎn)類指令;當(dāng)所述指令的第28-30位為101或110時(shí),所述指令為置換類指令;否則,所述指令為復(fù)雜定點(diǎn)類指令。
[0015]所述第二判斷器接收主處理器的一條指令是32位向量協(xié)處理器有效指令的第26位為0,則所述指令為一條VC格式指令、或VX格式指令,或X格式指令,則根據(jù)所述指令的第21、24、25、28-30位共同判斷所述指令的指令類型,當(dāng)所述指令的第28-30位為000、001或011時(shí),所述指令為簡單定點(diǎn)類指令;當(dāng)所述指令的第28-30位為100時(shí),所述指令為復(fù)雜定點(diǎn)類指令;當(dāng)所述指令的第28-30位為110或111時(shí),所述指令為置換類指令;當(dāng)所述指令的第28-30位為101時(shí),根據(jù)所述指令的第21位判斷指令類型,若第21位為1,則所述指令為簡單定點(diǎn)類指令,若第21位為0,則所述指令為浮點(diǎn)類指令;當(dāng)所述指令的第28-30位為010時(shí),根據(jù)所述指令的21、24、25位判斷指令類型,若第21、24、25位為011,則所述指令為置換類指令,否則,所述指令為簡單定點(diǎn)類指令。
[0016]當(dāng)經(jīng)由第二判斷器判斷所接收的一條指令為簡單定點(diǎn)功能單元指令時(shí),第二設(shè)置器將指令的第21-25,28-30位共8位送往簡單定點(diǎn)功能單元;當(dāng)經(jīng)由第二判斷器判斷所接收的一條指令為復(fù)雜定點(diǎn)功能單元指令時(shí),第二設(shè)置器將指令的第21-26,28-31位共10位送往復(fù)雜定點(diǎn)功能單元;當(dāng)經(jīng)由第二判斷器判斷所接收的一條指令為浮點(diǎn)類指令時(shí),第二設(shè)置器將指令的第22-25,26,31位共6位或指令的第22-25,29,31位共6位送往浮點(diǎn)功能單元;當(dāng)經(jīng)由第二判斷器判斷所接收的一條指令為置換類指令時(shí),第二設(shè)置器將指令的第
21-26,29,30位共8位或指令的第21-26,30,31位共8位送往置換單元;當(dāng)經(jīng)由第二判斷器判斷所接收的一條指令為仿存類指令時(shí),第二設(shè)置器將指令的第22-25,30位共5位送往仿存單元。
[0017]本發(fā)明的一種POWER指令集向量協(xié)處理器的譯碼電路,使在使用組合邏輯來識別一條指令所屬的功能單元和操作數(shù)的數(shù)據(jù)來源時(shí),所需要的組合邏輯的數(shù)量能達(dá)到最小,不僅降低了譯碼電路的硬件開銷,提高了譯碼電路和功能單元間信號傳輸?shù)姆€(wěn)定性,也使功能單元在識別所接收指令的具體指令類型時(shí)所需的判斷邏輯更為簡單。
【附圖說明】
[0018]圖1是本發(fā)明的整體構(gòu)成框圖。
[0019]圖中
[0020]100:向量協(xié)處理器譯碼電路110:第一判斷器
[0021]120:第一設(shè)置器130:第二判斷器
[0022]140:第二設(shè)置器150:仿存單元
[0023]160:置換單元170:簡單定點(diǎn)單元
[0024]180:復(fù)雜定點(diǎn)單元190:浮點(diǎn)單元
【具體實(shí)施方式】
[0025]下面結(jié)合實(shí)施例和附圖對本發(fā)明的一種POWER指令集向量協(xié)處理器的譯碼電路做出詳細(xì)說明。
[0026]如圖1所示,本發(fā)明的一種POWER指令集向量協(xié)處理器的譯碼電路,包括有依次連接的第一判斷器110、第一設(shè)置器120、第二判斷器130和第二設(shè)置器140,其中,
[0027]所述第一判斷器110的輸入端連接主處理器200的輸出端,用于接收來自主處理器200的指令,并且判斷所述指令是否為有效的向量協(xié)處理器指令,并將判斷結(jié)果發(fā)送給第一設(shè)置器120 ;
[0028]所述第一設(shè)置器120的輸出還連接主處理器200的輸入端,用于向主處理器200反饋主處理器200所發(fā)的指令是一條有效的向量協(xié)處理器指令,還是一條無效的向量協(xié)處理器指令的信息;當(dāng)?shù)谝辉O(shè)置器120得到第一判斷器110的判斷結(jié)果為當(dāng)前指令是一條有效的向量協(xié)處理器指令時(shí),將向量協(xié)處理器指令有效標(biāo)志位置為高,否則將向量協(xié)處理器指令有效標(biāo)志位置為低,并將協(xié)處理器指令有效標(biāo)志位置為高和為低的信息發(fā)送給第二判斷器(130);
[0029]所述第二判斷器130的輸入端還連接主處理器200的輸出端接收主處理器200的指令,當(dāng)?shù)诙袛嗥?30收到第一設(shè)置器120發(fā)過來的協(xié)處理器指令有效標(biāo)志位置為高的信息時(shí),判斷主處理器200的指令所屬的功能執(zhí)行單元及功能單元所需操作數(shù)的數(shù)據(jù)來源,并將判斷結(jié)果送入第二設(shè)置器140 ;
[0030]所述第二設(shè)置器140根據(jù)第二判斷器130的判斷結(jié)果將相應(yīng)的控制信號及指令所要讀取的操作數(shù)交給不同的功能執(zhí)行單元。所述第二設(shè)置器140為了使在使用組合邏輯來識別指令時(shí),所需要的組合邏輯的數(shù)量能達(dá)到最小,降低系統(tǒng)功耗,只將必要的指令位發(fā)送給功能單元,而無需發(fā)送冗余的指令位。所述必要的指令位,是指一條指令中用于識別一條指令所屬功能單元所必須的位。
[0031]當(dāng)所述第一設(shè)置器120將協(xié)處理器指令有效標(biāo)志位不為高,則表示當(dāng)前譯碼指令是一條非向量協(xié)處理器有效指令(包括POWER指令集之外的指令和非向量協(xié)處理器專屬指令),該指令無法由向量協(xié)處理器執(zhí)行。
[0032]當(dāng)主處理器200的指令是一條無效的向量協(xié)處理器指令,則向量協(xié)處理器流水線停滯,等待主處理器200發(fā)送一條新的向量協(xié)處理器有效指令,直到第一判斷器110判斷接收到主處理器發(fā)送的向量協(xié)處理器指令為有效的向量協(xié)處理器指令后,將向量協(xié)處理器指令有效標(biāo)志位置為高。
[0033]所述第二判斷器130所判斷的全部向量協(xié)處理器指令包括:仿存類指令、置換類指令、簡單定點(diǎn)類指令、復(fù)雜定點(diǎn)類指令和浮點(diǎn)類指令,其中仿存類指令指讀寫內(nèi)存和特殊寄存器類指令;置換類指令指完成置換操作的單周期定點(diǎn)類指令;簡單定點(diǎn)類指令指單周期完成的算術(shù)定點(diǎn)類指令如定點(diǎn)加減法指令及浮點(diǎn)比大小、浮點(diǎn)求最值指令;復(fù)雜定點(diǎn)類指令指多周期完成的算術(shù)定點(diǎn)類指令如定點(diǎn)乘法指令;浮點(diǎn)類指令指多周期完成的算術(shù)浮點(diǎn)類指令如浮點(diǎn)加減法。
[0034]第二設(shè)置器140將仿存類指令送入功能單元中用于執(zhí)行仿存類指令的仿存單元150,將置換類指令送入功能單元中用于執(zhí)行置換類指