具有獨立進位鏈的加法指令的制作方法
【專利摘要】提供了彼此之間沒有數據依賴性的多個加法指令。第一加法指令將它的進位輸出存儲在標志寄存器的第一標志內,并且不修改標志寄存器內的第二標志。第二加法指令將它的進位輸出存儲在標志寄存器的第二標志內,并且不修改標志寄存器內的第一標志。
【專利說明】具有獨立進位鏈的加法指令
【技術領域】
[0001]本發(fā)明的實施例一般涉及計算機處理器架構,更具體而言,涉及當被執(zhí)行時導致特定結果的指令。
[0002]相關技術的描述
[0003]加法指令通常被包括在指令集架構(ISA)內。大量加法指令通常出現在乘法中。例如,公鑰加密一般涉及需要多精度乘法的長整數運算。諸如模取冪之類的這些操作是高度計算密集的且涉及大量加法。負責設立企業(yè)的安全套接字層(SSL)事務的服務器可在短時間跨度內從企業(yè)客戶機接收大量連接請求。每一個事務涉及包括大量整數乘法和加法的加密操作。低效的加法操作可減緩整體性能。
【專利附圖】
【附圖說明】
[0004]在各個附圖的圖形中,本發(fā)明的各實施例是作為示例而不是顯示說明的,在附圖中,類似的參考編號表示類似的元件。應注意,在本公開中對“一”或“一個”實施例的不同引用不一定指相同實施例,且這種引用表示至少一個。此外,當參考一個實施例描述特定特征、結構或特性時,認為在本領域技術人員學識范圍內,可以與其他實施例一起實施這樣的特征、結構或特性,不論是否有明確描述。
[0005]圖1是具有含一個或多個加法指令的指令集的處理器的示例實施例的框圖。
[0006]圖2示出包括加法操作的乘法操作的示例。
[0007]圖3示出包括加法指令的樣本代碼的示例。
[0008]圖4示出加法指令的并行執(zhí)行的實施例。
[0009]圖5是具有執(zhí)行單元的指令處理裝置的示例實施例的框圖,該執(zhí)行單元可操作用于執(zhí)行包含加法指令的示例實施例的指令。
[0010]圖6示出標志寄存器的實施例。
[0011]圖7是示出用于處理加法指令的方法的示例實施例的流程圖。
[0012]圖8是根據本發(fā)明一個實施例的系統的框圖。
[0013]圖9是根據本發(fā)明的實施例的第二系統的框圖。
[0014]圖10是根據本發(fā)明的實施例的第三系統的框圖。
[0015]圖11是根據本發(fā)明的實施例的芯片上系統(SoC)的框圖。
[0016]圖12是根據本發(fā)明的實施例的具有集成的存儲器控制器和圖形器件的單核處理器和多核處理器的框圖。
[0017]圖13是根據本發(fā)明的實施例的對比使用軟件指令變換器將源指令集中的二進制指令變換成目標指令集中的二進制指令的框圖。
【具體實施方式】
[0018]在下面的描述中,闡述了很多具體細節(jié)。然而,應當理解,本發(fā)明的各實施例可以在不具有這些具體細節(jié)的情況下得到實施。在其他實例中,公知的電路、結構和技術未被詳細示出以免混淆對本描述的理解。
[0019]在下面的描述中,闡述了很多具體細節(jié)。然而,應當理解,本發(fā)明的各實施例可以在不具有這些具體細節(jié)的情況下得到實施。在其他實例中,公知的電路、結構和技術未被詳細示出以免混淆對本描述的理解。
[0020]本發(fā)明的實施例提供了有效地加長整數的機制。特定地,本發(fā)明的實施例提供了與加法操作并行地有效地乘大量長整數的機制。
[0021]圖1是處理器100的示例實施例的框圖。該處理器100可以是各種復雜指令集計算(CISC)處理器、各種精簡指令集計算(RISC)處理器、各種超長指令字(VLIW)處理器、其各種混合、或完全其他類型的處理器中的任何處理器。在一個或多個實施例中,處理器100可以是通用處理器(例如由美國加利福尼亞州圣克拉拉市的英特爾公司制造的類型的通用微處理器),盡管這不是必需的。替換地,指令處理處理裝置可以是專用處理器。合適的專用處理器的示例包括但不限于,網絡處理器、通信處理器、加密處理器、圖形處理器、協處理器、嵌入式處理器、數字信號處理器(DSP)以及控制器(例如,微控制器),僅列舉數例。
[0022]處理器100具有指令集架構(ISA) 101。指令集架構101表示與編程相關的處理器100的架構的一部分指令集架構101通常包括本地指令、架構寄存器、數據類型、尋址模式、存儲器架構、中斷和異常處理以及處理器100的外部輸入和輸出(I/O)。指令集架構101與微架構不同,微架構通常表示選擇用于實現指令集架構的特定處理器設計技術。帶有不同的微架構的處理器可以共享共同的指令集架構。例如,加利福尼亞州圣克拉拉的英特爾公司的某些微處理器和加利福尼亞州桑尼威爾(Sunnyvale)的超微半導體有限公司(Advanced Micro Devices, Inc.)的某些微處理器使用本質上不同的內部微架構來實現x86指令集的類似部分。
[0023]指令集架構101包括架構寄存器(例如,架構寄存器組)106。在一個實施例中,架構寄存器106包括通用(GP)寄存器、標志寄存器、向量寄存器、寫掩碼寄存器、標量浮點寄存器、以及其他寄存器。架構寄存器106表示板上處理器存儲位置。架構寄存器106此處也可以被簡稱為寄存器。短語架構寄存器、寄存器組、以及寄存器在本文中用于表示對軟件和/或編程器(例如,軟件可見的)和/或由宏指令指定來標志操作數(operand)的寄存器,除非另外予以指定或清楚明顯可知。這些寄存器106與給定微架構(例如,臨時寄存器、重排序緩沖器、引退(retirement)寄存器等)中的其他非架構寄存器形成對比。
[0024]所示的指令集架構101還包括由處理器100支持的指令集102。指令集102包括若干不同類型的指令。指令集102的這些指令表示宏指令(例如,提供給處理器100以供執(zhí)行的指令),與微指令或微操作(例如,從處理器100的解碼器129解碼宏指令得到的)不同。
[0025]在一個實施例中,指令集102包括一個或多個加法指令103 (如,ADCX指令104和ADOX指令105),這些指令可操作來造成或使得處理器100將兩個操作數(如,兩個四字(Qwords)、兩個雙字(Dwords)或具有其他數據寬度的兩個操作數)加起來。ADCX104和AD0X105指令使用兩個獨立的進位鏈且因此一旦它們各自數據輸入可用就可并行地指令。
[0026]處理器100還包括執(zhí)行邏輯109。執(zhí)行邏輯109可操作用于執(zhí)行或處理指令集102的指令。執(zhí)行邏輯109可包括執(zhí)行單元、功能單元、算術邏輯單元、邏輯單元、算術單元等。處理器100還包括解碼器,用以將宏指令解碼成微指令或微操作以供執(zhí)行邏輯109執(zhí)行。[0027]為了進一步說明加法指令103的實施例,考慮其中需要加法的示例性場景可能是有幫助的。圖2是示出計算表達式(S[7:0] = AixB[7:0]+S[7:0])的示例性場景的圖,其中Ai是四字(Qword),且每一AB1^PSn(η = O, I,…7)也是四字。每一個四字有64位寬。在圖2中,位于頂部的S[7:0](表示為230)是初始的部分和,且位于底部的S[7:0](表示為240)是作為結果的部分和。對于每一個乘法操作210 (AiXBn, η = O, I,…7),生成(64x64)=128位的乘積。每一個乘積被表示為(Hin=Lon),如圖的對角線中的條目所示,其中叫是高階部分(即,最高有效的一半)且Lon是低階部分(即,最低有效的一半)。以最少數量的微操作(μ ops)和延時,可將這個乘積加到部分和sn。將這個乘積加到部分和的一個方式花費兩個加法操作,每一個加法操作使用一個獨立的進位鏈:
[0028]Sn = Sn+Lon (式 I),
[0029]Sn = Sn+Hin_i (式 2)。
[0030]假設S[7:0] —開始全都為零。在由圖2中的垂直虛線所示的示例性加法操作220之后,加法操作等效于:S0 = S0+Lo0, S1 = Si+LOi+Hig, S2 = SjLofHi1, S3 = S3+Lo3+Hi2 等。
[0031]在圖2的示例中,Ai與Bn相乘,η = O, I,…7,其中Ai可以是第一長整數A的一部分,且每一個Bn可以是第二長整數B的一部分。該乘法使用Sn,n = O, I, ".7來存儲該部分和。在(AtlXBn, η = O, I,…7)的乘法操作后,計算可移至AlXBn,Α2χΒη,以此類推,直到長整數A的所有部分都被處理。每一個乘法操作可使用Sn來累加部分和。最后,S [7:0] 240具有最終結果。
[0032]本發(fā)明的實施例提供可高效地執(zhí)行的加法指令103。特定地,在具有多個算術邏輯單元(ALU)的處理器中,一旦它們各自數據輸入(LowHilri)可用,就可并行地由兩個不同的ALU來執(zhí)行(式I)和(式2)中 的加法。在一個實施例中,可由ADCX104/AD0X105指令之一來執(zhí)行(式I)中的加法,且可由ADCX104/AD0X105指令中的另一個來執(zhí)行(式2)中的加法。
[0033]在一個實施例中,ADCX104除了 CF (進位標志)外不修改算術標志,且AD0X105除了 OF(溢出標志)外不修改算術標志。即,ADCX104僅讀取和寫入CF標志而不改變其他標志,且AD0X105僅讀取和寫入OF標志而不改變其他標志。通過將每一次加法指令限制為僅訪問一個標志,可定義并執(zhí)行兩個或更多個這樣的加法指令(每個訪問不同標志),而不導致任何數據依賴性。這與重寫多個或全部算術標志且因此不能各自獨立執(zhí)行的現有加法指令相反。
[0034]在可選實施例中,ADCX104和AD0X105使用它們各自相關聯的標志(即,分別是CF和0F)來實現進位輸入和進位輸出,且沒有修改各自的相關聯的標志。然而,如,通過將其他算術標志(如,SF, PF, AF, ZF等)設置為零或另一個預定值,ADCX104和AD0X105也可以修改這些算術標志。
[0035]在一個實施例中,將加法指令的實施例定義如下:
[0036]ADCX104:
[0037]CF:regdst = regl+reg2+CF ;且
[0038]AD0X105:
[0039]0F:regdst = regl+reg2+0F。
[0040]盡管在說明書中描述了標志CF和0F,但是應該理解,可對于(式I)和(式2)的加法操作使用處理器的標志寄存器的任何兩個不同算術標志。進一步,如上所述,還可使用不同算術標志來類似地定義其他加法指令;如,可將ADAX指令定義為僅讀取和寫入AF標志而不改變其他標志,可將ADPF指令定義為僅讀取和寫入PF標志而不改變其他標志,等等。regl、reg2、和regdst的數據寬度是相同的且可以是任何大小。在一些實施例中,目標regdst可以與regl或reg2相同(即,該和可重寫源寄存器之一)。
[0041]圖3是樣本代碼300的示例,在兩個長的數的乘法Α[0:Ν-1]χΒ[0:Ν-1]中包括ADCX 和 ADOX (圖1 的 ADCX104 和 AD0X105)。A 和中 Bn(n = 0,….,N-1)的每一個是四字(但是可使用不同數據寬度)。樣本代碼300將計算分解為AiXB[0:N-l] (i = O, -.N-1)序列,諸如圖2的圖中對角線序列??蓪⒃撚嬎惴纸M為MULX、ADCX、和AD0X。在一個實施例中,其中數據寬度是64位,MULX指令定義為執(zhí)行64位數字與另一個64位數字(存儲于RDX寄存器中,作為隱操作數)的無符號乘法,并且不影響任何算術標志。
[0042]MULX: r64a, r64b, r/m64,
[0043]其中r64a表不存儲乘法積的最高有效的一半的第一個64位寄存器,r64b表不存儲乘法積的最低有效的一半的第二個64位寄存器,且r/m64表示用作乘法的輸入的64位寄存器或存儲器位置。在樣本代碼300開始時,假設64位值Ai被分配至RDX寄存器,且執(zhí)行XOR來清除所有算術標志。在一個實施例中,rax、rbx、和RDX的每一個是64位寄存器,諸如通用目的寄存器。
[0044]使用圖2的示例,樣本代碼300對應于如下運算:
[0045]Hi0: Lo0 = AiXB0
[0046]CF:S0 = S0+Lo0+CF
[0047]OF = S1 = SAHic^OF
[0048]Hi1: Lo1 = AiXB1
[0049]Cf = S1 = SALoACF
[0050]OF = S2 = SdHiJOF
[0051]Hi2: Lo2 = AiXB2
[0052]CFiS2 = S2+Lo2+CF
[0053]OF: S3 = S3+Hi2+0F
[0054]由于ADCX和ADOX使用兩個不同標志,只要它們各自數據輸入可用,它們可被并行地執(zhí)行。在具有3個分配端口(即,3ALU)的一些實施例中,假設MULX、ADCX和ADOX在全都具有I的吞吐量的不同的ALU上,單個yopMULX、單個μ op ADCX和單個μ op ADOX可實現每乘法三元組(即,三元組MULT/ADCX/AD0X) —個周期的最大吞吐量。在另一個實施例中,MULX花費2 μ ops且ADCX和ADOX各一個μ op。因此,假設全都在具有吞吐量I的不同ALU上,需要至少4個ALU來實現每個乘法三元組一個周期的最大吞吐量。MULX、ADCXjPADOX可在具有較少A LU的機器上起作用,但是將不能獲得最大性能。
[0055]圖4是示出乘法三元組的并行處理的實施例的框圖。該圖示出在每一周期期間,MULT可開始執(zhí)行。當執(zhí)行繼續(xù)時,在每一周期(如,I μ op)中,新的MULT可與一對ADCX和ADOX同時地開始執(zhí)行(如,在周期3-6的每一個中所示)。特定地,可并行地在同一周期期間,處理ADCX和AD0X。只要在每一周期時存在足夠數量的ALU來支持新的MULT的開始,MULT的長度可就花費任何數量的周期(如,一個、兩個、或更多個),且不管MULT操作的長度,可實現每個三元組一個周期的吞吐量。
[0056]圖4的示例示出在相同周期內并行地執(zhí)行ADCX和AD0X。然而,只要它們各自數據輸入可用,可在不同周期執(zhí)行這兩個指令。由于在這兩個指令之間不存在任何數據依賴性(即,進位輸入/輸出),只要它們相關聯的乘法結果的最高有效的一半/最低有效的一半可用,就可執(zhí)行ADCX/AD0X。例如,如果在第η個周期內生成乘法結果的最低有效一半,且在第η+1個周期內生成乘法結果的最高有效一半,在這些周期后當它們各自的最后源可用時(即,分別在連續(xù)周期第(Ν+1)個和第(Ν+2)個周期)可盡早執(zhí)行使用這些結果的ADCX和AD0X。即,可在沒有任何數據依賴性的情況下,并行地或以任何順序來執(zhí)行ADCX和AD0X。
[0057]圖5是具有執(zhí)行單元540的指令處理裝置515的實施例的框圖,該執(zhí)行單元440可操作用于執(zhí)行包含圖1的加法指令103的示例實施例的指令。在一些實施例中,指令處理裝置515可以是處理器,和/或可被包括在處理器(例如,圖1的處理器100或類似裝置)中。替換地,指令處理裝置515可被包括在不同的處理器或電子系統中。
[0058]指令處理裝置515接收一個或多個加法指令103 (如,圖1的ADCX104和AD0X105)。解碼器530可以是圖1的解碼器129或一個類似裝置,該解碼器530接收高級機器指令或宏指令形式的指令,并且將所述指令解碼以生成低級微操作、微代碼進入點、微指令或其他低級指令或控制信號,它們反映了原始的高級指令和/或從原始的高級指令導出。較低級指令或控制信號可通過較低級(例如,電路級或硬件級)操作來實現較高級指令的操作。解碼器530可使用各種不同的機制來實現。合適機制的示例包括但不限于微代碼、隨機存取存儲器(ROM)、查找表、硬件實現、可編程邏輯陣列(PLA)、用于實現本領域已知的解碼器的其他機制等。在一些微架構的實施例中,可在不首先由解碼器解碼的情況下直接執(zhí)行宏指令。
[0059]執(zhí)行單元540耦合至解碼器530。執(zhí)行單元540可從解碼器530接收一個或多個微操作、微代碼進入點、微指令、其他指令或其他控制信號,它們反映了所接收的加法指令103或者是從所接收的加法指令103導出的。執(zhí)行單元540包括加法邏輯542來執(zhí)行加法。
[0060]執(zhí)行單元540還從寄存器接收輸入,諸如通用(GP)寄存器570。執(zhí)行單元540從標志寄存器580接收進位輸入,且將進位輸出存儲在標志寄存器580內。在一個實施例中,第一加法指令(如,ADCX104)使用第一標志581進行進位輸出和進位輸出,且第二加法指令(如,AD0X105)使用第二標志582進行進位輸出和進位輸出。如上所述,可提供更多加法指令,各自使用不同的標志進行進位輸出和進位輸出。
[0061]為了避免混淆描述,已示出和描述了相對簡單的指令處理裝置515。應當理解,其他實施例可具有超過一個執(zhí)行單元。例如,裝置可包括多個不同類型的執(zhí)行單元,諸如例如算術單元、算術邏輯單元(ALU)、整數單元、浮點單元等。這些單元中的至少一個可響應于如本文公開的循環(huán)對齊指令的實施例。指令處理裝置或處理器的再其他實施例可具有多個核、邏輯處理器或執(zhí)行引擎??刹僮饔糜趫?zhí)行一個或多個循環(huán)對齊指令的執(zhí)行單元可被包含在核、邏輯處理器或執(zhí)行引擎中的至少一個、至少兩個、大多數或全部中。
[0062]指令處理裝置515或處理器還可以可任選地包括一個或多個其他已知的組件。例如,其它實施例可包括指令取出邏輯、調度邏輯、分支預測邏輯、指令和數據緩存、指令和數據轉換后備緩沖器、預取緩沖器、微指令隊列、微指令序列發(fā)生器、總線接口單元、第二或更高級緩存、指令調度邏輯、引退邏輯、寄存器重命名邏輯等中的一個或多個或它們的各種組合。應意識到實際上在處理器中存在這些組件的多種不同的組合和配置,并且本發(fā)明的范圍不限于任意已知的這些組合配置。
[0063]圖6示出表示具有多個標志的標志寄存器的示例實施例的EFLAGS寄存器600。在一個實施例中,EFLAGS寄存器600是32位寄存器,包括一組狀態(tài)寄存器(也稱為算術標志,諸如COSPAZ標志)、控制標志、和一組系統標志。
[0064]狀態(tài)標志包括進位標志(CF,位O) 610、奇偶標志(PF,位2)、輔助進位標志(AFji
4)、零標志(ZF,位6)、符號標志(SF,位7)、和溢出標志(0F,位11)620。如上所述,在一個或多個實施例中,進位標志(CF,位O)和溢出標志(0F,位11)可用作與此處公開的加法指令相關聯的第一和第二標志581、582。為此理由強調了 CF和0F,但是不要求使用這些特定
O
[0065]系統標志包括陷入標志(TF,位8)、中斷啟用標志(IF,位9)、1/0特權級(10PL,位12-13)、嵌套任務(NT,位14)、恢復標志(RF,位16)、虛擬-8086模式(VM,位17)、對齊檢查(AC,位18)、虛擬中斷標志(VIF,位19)、虛擬中斷未決標志(VIP,位20)、和ID標志(ID,位21)??刂茦酥景ǚ较驑酥?DF,位10)。保留EFLAGS的位22-31。
[0066]EFLAGS寄存器600是具有合適標志用于實現一個或多個實施例的寄存器的一個特定示例實施例,但是并非特定地要求這個特定寄存器和這些特定標志。
[0067]圖7是處理加法指令(諸如圖1的加法指令103)的示例實施例的方法700的示例實施例的流程圖。在各實施例中,方法700的方法可由通用處理器、專用處理器(例如,圖形處理器或數字信號 處理器)、或另一種類型的數字邏輯設備或指令處理裝置執(zhí)行。在一些實施例中,方法700可由圖1的處理器100、圖5的指令處理裝置515或類似的處理器或指令處理裝置執(zhí)行?;蛘?,方法700可由處理器或指令處理裝置的不同實施例執(zhí)行。此外,圖1的處理器100和圖5的指令處理裝置515可執(zhí)行與方法700的操作和方法相同、類似或不同的操作和方法的實施例。
[0068]在一個實施例中,方法700包括處理器接收第一加法指令(框710)。第一加法指令指示在標志寄存器內的第一標志。然后該處理器接收第二加法指令(框720)。第二加法指令指示在標志寄存器內的第二標志。執(zhí)行第一加法指令和第二加法指令,在第一加法指令和第二加法指令之間沒有數據依賴性(框730)。處理器在第一標志中存儲來自第一加法指令的進位輸出,并且不修改標志寄存器內的第二標志(框740)。處理器還在第二標志中存儲來自第二加法指令的進位輸出,并且不修改標志寄存器內的第一標志(框750)。
[0069]所示的方法包括從處理器或指令處理裝置外部可見的操作(例如,從軟件觀點)。在其它實施例中,方法可任選地包括一個或多個其它操作(例如,在處理器或指令處理器裝置內部發(fā)生的一個或多個操作)。作為示例,在接收到指令之后,可將指令解碼、轉換、仿真或以其它方式變換成一個或多個其它指令或控制信號。
[0070]示例性計算機系統和處理器-圖8-12
[0071]圖8-12是示例性計算機系統和處理器。本領域已知的對膝上型設備、臺式機、手持PC、個人數字助理、工程工作站、服務器、網絡設備、網絡集線器、交換機、嵌入式處理器、數字信號處理器(DSP)、圖形設備、視頻游戲設備、機頂盒、微控制器、蜂窩電話、便攜式媒體播放器、手持設備以及各種其他電子設備的其他系統設計和配置也是合適的。一般來說,能夠納入本文中所公開的處理器和/或其它執(zhí)行邏輯的大量系統和電子設備一般都是合適的。
[0072]現在參考圖8,所示出的是根據本發(fā)明實施例的系統1300的框圖。系統1300可包括耦合至圖形存儲器控制器中樞(GMCH) 1320的一個或多個處理器1310、1315。附加處理器1315的任選性質用虛線表示在圖8中。
[0073]每一處理器1310、1315可以是處理器1700的某種版本。然而,應該注意,集成圖形邏輯和集成存儲器控制單元未必存在于處理器1310、1315中。
[0074]圖8示出GMCH1320可耦合至存儲器1340,該存儲器1340可以是例如動態(tài)隨機存取存儲器(DRAM)。對于至少一個實施例,DRAM可以與非易失性緩存相關聯。
[0075]GMCH1320可以是芯片組或芯片組的一部分。GMCH1320可以與處理器1310、1315進行通信,并控制處理器1310、1315與存儲器1340之間的交互。GMCHl320還可用作處理器1310、1315和系統1300的其它元件之間的加速總線接口。對于至少一個實施例,GMCH1320經由諸如前端總線(FSB) 1395之類的多分支總線與處理器1310、1315進行通信。
[0076]此外,GMCHl320耦合至顯示器1345(諸如平板顯示器)。GMCHl320可包括集成圖形加速器。GMCH1320還耦合至輸入/輸出(I/O)控制器中樞(ICH) 1350,該輸入/輸出(I/O)控制器中樞(ICH) 1350可用于將各種外圍設備耦合至系統1300。在圖8的實施例中作為示例示出了外部圖形設備1360以及另一外圍設備1370,該外部圖形設備1360可以是耦合至ICH1350的分立圖形設備。
[0077]可選地,系統1300中還可存在附加或不同的處理器。例如,附加處理器1315可包括與處理器1310相同的附加處理器、與處理器1310異類或不對稱的附加處理器、加速器(諸如圖形加速器或數字信號處理(DSP)單元)、現場可編程門陣列或任何其它處理器。按照包括架構、微架構、熱、功耗特征等等一系列品質度量,物理資源1310、1315之間存在各種差別。這些差別會有效顯示為處理元件1310、1315之間的不對稱性和異類性。對于至少一個實施例,各種處理元件1310、1315可駐留在同一管芯封裝中。
[0078]現在參照圖9,所示出的是根據本發(fā)明一實施例的第二系統1400的框圖。如圖9所示,多處理器系統1400是點對點互連系統,并包括經由點對點互連1450耦合的第一處理器1470和第二處理器1480。如圖9所示,處理器1470和1480中的每個可以是處理器1700的某一版本。
[0079]可選地,處理器1470、1480中的一個或多個可以是除處理器之外的元件,諸如加速器或現場可編程門陣列。
[0080]雖然僅以兩個處理器1470、1480來示出,但應理解本發(fā)明的范圍不限于此。在其它實施例中,在給定處理器中可存在一個或多個附加處理元件。
[0081]處理器1470還可包括集成存儲器控制器中樞(MC) 1472和點對點(P-P)接口1476和1478。類似地,第二處理器1480包括MC1482和P-P接口 1486和1488。處理器1470、1480可以經由使用點對點(PtP)接口電路1478、1488的點對點(PtP)接口 1450來交換數據。如圖9所示,IMC1472和1482將處理器耦合到相應的存儲器,即存儲器1442和存儲器1444,這些存儲器可以是本地附連到相應處理器的主存儲器部分。
[0082]處理器1470、1480可各自經由使用點對點接口電路1476、1494、1486、1498的各個P-P接口 1452、1454與芯片組1490交換數據。芯片組1490還可經由高性能圖形接口 1439與高性能圖形電路1438交換數據。[0083]共享高速緩存(未示出)可以被包括在任一處理器之內或被包括兩個處理器外部但仍經由P-P互連與這些處理器連接,從而如果將某處理器置于低功率模式時,可將任一處理器或兩個處理器的本地高速緩存信息存儲在該共享高速緩存中。
[0084]芯片組1490可經由接口 1496耦合至第一總線1416。在一個實施例中,第一總線1416可以是外圍部件互連(PCI)總線,或諸如PCI Express總線或其它第三代I/O互連總線之類的總線,但本發(fā)明的范圍并不受此限制。
[0085]如圖9所示,各種I/O設備1414可以連同總線橋1418耦合到第一總線1416,總線橋1418將第一總線1416耦合至第二總線1420。在一個實施例中,第二總線1420可以是低引腳數(LPC)總線。在一個實施例中,各設備可耦合到第二總線1420,包括例如鍵盤和/或鼠標1422、通信設備1426、以及可包括代碼1430的諸如盤驅動器或其它大容量存儲設備的數據存儲單元1428。進一步地,音頻1/01424可以耦合到第二總線1420。注意,其它架構是可能的。例如,取代圖9的點對點架構,系統可以實現多分支總線或其它這類架構。
[0086]現在參照圖10,所示出的是根據本發(fā)明實施例的第三系統1500的框圖。圖9和圖10中的相同部件用相同附圖標記表示,并從圖10中省去了圖9中的某些方面,以避免使圖10的其它方面變得難以理解。
[0087]圖10示出處理元件1470、1480可分別包括集成存儲器和I/O控制邏輯(“CL”)1472和1482。對于至少一個實施例,CL1472、1482可包括諸如以上結合圖8、9和14所描述的存儲器控制器中樞邏輯(MC)。此外。CL1472U482還可包括I/O控制邏輯。圖15不僅示出耦合至CL1472、1482的存儲器1442、1444,而且還示出同樣耦合至控制邏輯1472、1482的I/O設備1514。傳統I/O設備1515被耦合至芯片組1490。
[0088]現在參考圖11,示出了根據本發(fā)明的一個實施例的SoC1600的框圖。在圖12中,相似的部件具有同樣的附圖標記。另外,虛線框是更先進的SoC的可選特征。在圖11中,互連單元1602被耦合至:應用處理器1610,包括一個或多個核1702A-N的集合和共享高速緩存單元1706 ;系統代理單元1710 ;總線控制器單元1716 ;集成存儲器控制器單元1714 ;一個或多個媒體處理器1620的集合,可包括集成圖形邏輯1708、用于提供靜態(tài)和/或視頻照相機功能的圖像處理器1624、用于提供硬件音頻加速的音頻處理器1626、以及用于提供視頻編碼/解碼加速的視頻處理器1628 ;靜態(tài)隨機存取存儲器(SRAM)單元1630 ;直接存儲器存取(DMA)單元1632 ;以及顯示單元1640,用于耦合至一個或多個外部顯示器。
[0089]本文公開的機制的各實施例可以被實現在硬件、軟件、固件或這些實現方法的組合中。本發(fā)明的實施例可實現為在可編程系統上執(zhí)行的計算機程序或程序代碼,該可編程系統包括至少一個處理器、存儲系統(包括易失性和非易失性存儲器和/或存儲元件)、至少一個輸入設備以及至少一個輸出設備。
[0090]可將程序代碼應用至輸入數據以執(zhí)行本文描述的功能并產生輸出信息。輸出信息可以按已知方式被應用于一個或多個輸出設備。為了本申請的目的,處理系統包括具有諸如例如數字信號處理器(DSP)、微控制器、專用集成電路(ASIC)或微處理器之類的處理器的任何系統。
[0091]程序代碼可以用高級程序化語言或面向對象的編程語言來實現,以便與處理系統通信。程序代碼也可以在需要的情況下用匯編語言或機器語言來實現。事實上,本文中描述的機制不僅限于任何特定編程語言的范圍。在任一情形下,語言可以是編譯語言或解釋;五古
P口口 O
[0092]至少一個實施例的一個或多個方面可以由存儲在機器可讀介質上的表征性指令來實現,該指令表示處理器中的各種邏輯,該指令在被機器讀取時使得該機器制作用于執(zhí)行本文所述的技術的邏輯。被稱為“IP核”的這些表示可以被存儲在有形的機器可讀介質上,并被提供給多個客戶或生產設施以加載到實際制造該邏輯或處理器的制造機器中。
[0093]此類機器可讀存儲介質可包括但不限于通過機器或設備制造或形成的非易失性的粒子有形排列,包括存儲介質,諸如:硬盤;包括軟盤、光盤、壓縮盤只讀存儲器(CD-ROM)、可重寫壓縮盤(CD-RW)以及磁光盤的任何其它類型的盤;諸如只讀存儲器(ROM)之類的半導體器件;諸如動態(tài)隨機存取存儲器(DRAM)、靜態(tài)隨機存取存儲器(SRAM)之類的隨機存取存儲器(RAM);可擦除可編程只讀存儲器(EPROM);閃存;電可擦除可編程只讀存儲器(EEPROM);磁卡或光卡;或適于存儲電子指令的任何其它類型的介質。
[0094]因此,本發(fā)明的各實施例還包括非瞬態(tài)、有形機器可讀介質,該介質包含向量友好指令格式的指令或包含設計數據,諸如硬件描述語言(HDL),它定義本文中描述的結構、電路、裝置、處理器和/或系統特性。這些實施例也被稱為程序產品。
[0095]在某些情況下,指令轉換器可用來將指令從源指令集轉換至目標指令集。例如,指令轉換器可以變換(例如使用靜態(tài)二進制變換、包括動態(tài)編譯的動態(tài)二進制變換)、變形、仿真或以其它方式將指令轉換成將由核來處理的一個或多個其它指令。指令轉換器可以用軟件、硬件、固件、或其組合實現。指令轉換器可以在處理器上、在處理器外、或者部分在處理器上部分在處理器外。
[0096]圖13是根據本發(fā)明的實施例的對比使用軟件指令變換器將源指令集中的二進制指令變換成目標指令集中的二進制指令的框圖。在所示的實施例中,指令轉換器是軟件指令轉換器,但作為替代該指令轉換器可以用軟件、固件、硬件或其各種組合來實現。圖13示出可以使用x86編譯器1802來編譯高級語言1804的程序,以便生成可以由具有至少一個x86指令集核的處理器1816原生執(zhí)行的x86 二進制代碼1806 (假設指令中的一些是以向量友好指令格式編譯)。具有至少一個x86指令集核的處理器1816表示任何處理器,該處理器能夠通過兼容地執(zhí)行或以其它方式處理(I)英特爾x86指令集核的指令集的大部分或
(2)旨在具有至少一個x86指令集核的英特爾處理器上運行的應用或其它軟件的目標代碼版本來執(zhí)行與具有至少一個x86指令集核的英特爾處理器基本相同的功能,以實現與具有至少一個x86指令集核的英特爾處理器基本相同的結果。x86編譯器1804表示用于生成x86 二進制代碼1806 (例如,對象代碼)的編譯器,該二進制代碼1806可通過或不通過附加的鏈接處理在具有至少一個x86指令集核的處理器1816上執(zhí)行。類似地,圖13示出用高級語言1802的程序可以使用替代的指令集編譯器1808來編譯,以生成可以由不具有至少一個x86指令集核的處理器1814(例如具有執(zhí)行加利福尼亞州桑尼維爾市的MIPS技術公司的MIPS指令集,和/或執(zhí)行加利福尼亞州桑尼維爾市的ARM控股公司的ARM指令集的核的處理器)原生執(zhí)行的替代指令集二進制代碼1810。指令轉換器1812被用來將x86 二進制代碼1806轉換成可以由不具有x86指令集核的處理器1814原生執(zhí)行的代碼。該轉換后的代碼不大可能與替換性指令集二進制代碼1810相同,因為能夠這樣做的指令轉換器難以制造;然而,轉換后的代碼將完成一般操作并由來自替換性指令集的指令構成。因此,指令轉換器1812通過仿真、模擬或任何其它過程來表示允許不具有x86指令集處理器或核的處理器或其它電子設備執(zhí)行x86 二進制代碼1806的軟件、固件、硬件或其組合。
[0097]本文公開的向量友好指令格式的指令的某些操作可由硬件組件執(zhí)行,且可體現在機器可執(zhí)行指令中,該指令用于導致或至少致使電路或其它硬件組件以執(zhí)行該操作的指令編程。電路可包括通用或專用處理器、或邏輯電路,這里僅給出幾個示例。這些操作還可任選地由硬件和軟件的組合執(zhí)行。執(zhí)行邏輯和/或處理器可包括響應于從機器指令導出的機器指令或一個或多個控制信號以存儲指令指定的結果操作數的專用或特定電路或其它邏輯。例如,本文公開的指令的實施例可在圖8-12的一個或多個系統中執(zhí)行,且向量友好指令格式的指令的實施例可存儲在將在系統中執(zhí)行的程序代碼中。另外這些附圖的處理元件可利用本文詳細描述的詳細描述的流水線和/或架構(例如有序和無序架構)之一。例如,有序架構的解碼單元可解碼指令、將經解碼的指令傳送到向量或標量單元等。
[0098]上述描述旨在說明本發(fā)明的優(yōu)選實施例。根據上述討論,還應當顯而易見的是,在發(fā)展迅速且進一步的進展難以預見的此【技術領域】中,本領域技術人員可在安排和細節(jié)上對本發(fā)明進行修改,而不背離落在所附權利要求及其等價方案的范圍內的本發(fā)明的原理。例如,方法的一個或多個操作可組合或進一步分開。
[0099]可選實施例
[0100]盡管已經描述了將本地執(zhí)行向量友好指令格式的實施例,但本發(fā)明的可選實施例可通過運行在執(zhí)行不同指令集的處理器(例如,執(zhí)行美國加利福亞州桑尼維爾的MIPS技術公司的MIPS指令集的處理器、執(zhí)行加利福亞州桑尼維爾的ARM控股公司的ARM指令集的處理器)上的仿真層來執(zhí)行向量友好指令格式。同樣,盡管附圖中的流程圖示出本發(fā)明的某些實施例的特定操作順序,按應理解該順序是示例性的(例如,可選實施例可按不同順序執(zhí)行操作、組合某些操作、使某些操作重疊等)。
[0101]在以上描述中,為解釋起見,闡明了眾多具體細節(jié)以提供對本發(fā)明的實施例的透徹理解。然而,將對本領域技術人員明顯的是,沒有這些具體細節(jié)中的一些也可實踐一個或多個其他實施例。提供所描述的具體實施例不是為了限制本發(fā)明而是為了說明本發(fā)明的實施例。本發(fā)明的范圍不是由所提供的具體示例確定,而是僅由所附權利要求確定。
[0102]應當理解,以上描述旨在是說明性的而非限制性的。在閱讀并理解以上描述之后,許多其它實施方式對本領域內技術人員而言將是顯而易見的。因此,本發(fā)明的范圍應參考所附權利要求書以及使這些權利要求享有權利的等效方案的完全范圍來確定。
【權利要求】
1.一種方法,包括: 接收第一加法指令; 接收第二加法指令; 執(zhí)行所述第一加法指令和所述第二加法指令,所述第一加法指令和所述第二加法指令之間沒有數據依賴性; 將所述第一加法指令的第一進位輸出存儲在標志寄存器的第一標志中,并且不修改標志寄存器中的第二標志;以及 將所述第二加法指令的第二進位輸出存儲在所述標志寄存器的所述第二標志中,并且不修改所述第一標志。
2.如權利要求1所述的方法,其特征在于,還包括: 接收乘法指令來將第一因數和第二因數相乘;且 將所述第一因數和所述第二因數相乘來產生乘積,所述乘積包括最低有效的一半和最高有效的一半,且所述最低有效的一半是所述第一加法指令的源操作數,所述最高有效的一半是所述第二加法指令的源操作數。
3.如權利要求2所述的方法,其特征在于,還包括: 接收所述乘法指令、所述第一加法指令、和所述第二加法指令作為三個連續(xù)指令。
4.如權利要求1所述的方法,其特征在于,所述第一加法指令讀取所述第一標志以獲得進位輸入,且所述第二加法指令讀取所述第二標志以獲得進位輸入。
5.如權利要求4所述的方法,其特征在于,所述第一標志是進位標志與溢出標志中的一個,且所述第二標志是所述進位標志與溢出標志中的另一個。
6.如權利要求1所述的方法,其特征在于,還包括: 接收第三加法指令,所述第三加法指令讀取所述標志寄存器的第三標志作為進位輸入;且 將第三進位輸出存儲到所述第三標志中,并且不修改所述標志寄存器中的所述第一標志、所述第二標志、和其他標志。
7.如權利要求1所述的方法,其特征在于,還包括: 接收減法指令,所述減法指令讀取所述標志寄存器的第三標志作為借位輸入;且 將借位輸出存儲到所述第三標志中,并且不修改所述標志寄存器中的所述第一標志、所述第二標志、和其他標志。
8.一種裝置,包括: 包括至少第一標志和第二標志的標志寄存器; 耦合至所述標志寄存器的執(zhí)行邏輯,用于執(zhí)行所述第一加法指令和所述第二加法指令、將所述第一加法指令的第一進位輸出存儲在所述第一標志中并且不修改所述第二標志、以及將所述第二加法指令的第二進位輸出存儲在所述第二標志中并且不修改所述第一標志,第一加法指令和第二加法指令之間沒有數據依賴性。
9.如權利要求8所述的裝置,其特征在于,所述執(zhí)行邏輯將第一因數和第二因數相乘且從而藉此產生乘積,所述乘積包括最低有效的一半和最高有效的一半,且所述最低有效的一半是所述第一加法指令的源操作數,且所述最高有效的一半是所述第二加法指令的源操作數。
10.如權利要求9所述的裝置,其特征在于,所述執(zhí)行邏輯用于接收所述乘法指令、所述第一加法指令、和所述第二加法指令作為三個連續(xù)指令。
11.如權利要求8所述的裝置,其特征在于,所述第一加法指令讀取所述第一標志以獲得進位輸入,且所述第二加法指令讀取所述第二標志以獲得進位輸入。
12.如權利要求11所述的裝置,其特征在于,所述第一標志是進位標志與溢出標志中的一個,且所述第二標志是所述進位標志與溢出標志中的另一個。
13.如權利要求8所述的裝置,其特征在于,所述執(zhí)行邏輯用于接收第三加法指令,所述第三加法指令讀取所述標志寄存器的第三標志作為進位輸入,且所述執(zhí)行邏輯用于將第三進位輸出存儲到所述第三標志中并且不修改所述標志寄存器中的所述第一標志、所述第二標志、和其他標志。
14.如權利要求8所述的裝置,其特征在于,所述執(zhí)行邏輯用于接收減法指令,所述減法指令讀取所述標志寄存器的第三標志作為借位輸入,且所述執(zhí)行邏輯用于將借位輸出存儲到所述第三標志中并且不修改所述標志寄存器中的所述第一標志、所述第二標志和其他
O
15.—種系統,包括: 互連; 與所述互連耦合的 處理器,所述處理器包括: 包括至少第一標志和第二標志的標志寄存器; 耦合至所述標志寄存器的執(zhí)行邏輯,用于執(zhí)行所述第一加法指令和所述第二加法指令、將所述第一加法指令的第一進位輸出存儲在所述第一標志中并且不修改所述第二標志、以及將所述第二加法指令的第二進位輸出存儲在所述第二標志中并且不修改所述第一標志,第一加法指令和第二加法指令之間沒有數據依賴性;以及 耦合到所述互連的動態(tài)隨機存取存儲器(DRAM)。
16.如權利要求15所述的系統,其特征在于,所述執(zhí)行邏輯用于將第一因數和第二因數相乘且從而藉此產生乘積,所述乘積包括最低有效的一半和最高有效的一半,且所述最低有效的一半是所述第一加法指令的源操作數,且所述最高有效的一半是所述第二加法指令的源操作數。
17.如權利要求16所述的系統,其特征在于,所述執(zhí)行邏輯用于接收所述乘法指令、所述第一加法指令、和所述第二加法指令作為三個連續(xù)指令。
18.如權利要求15所述的系統,其特征在于,所述第一加法指令讀取所述第一標志以獲得進位輸入,且所述第二加法指令讀取所述第二標志以獲得進位輸入。
19.如權利要求18所述的系統,其特征在于,所述第一標志是進位標志與溢出標志中的一個,且所述第二標志是所述進位標志與溢出標志中的另一個。
20.如權利要求15所述的系統,其特征在于,所述執(zhí)行邏輯用于接收第三加法指令,所述第三加法指令讀取所述標志寄存器的第三標志作為進位輸入,且所述執(zhí)行邏輯用于將第三進位輸出存儲到所述第三標志中并且不修改所述標志寄存器中的所述第一標志、所述第二標志、和其他標志。
21.如權利要求15所述的系統,其特征在于,所述執(zhí)行邏輯用于接收減法指令,所述減法指令讀取所述標志寄存器的第三標志作為借位輸入,且所述執(zhí)行邏輯用于將借位輸出存儲到所述第三標志中并且不修改所述標志寄存器中的所述第一標志、所述第二標志、和其他標 志。
【文檔編號】G06F9/305GK104011666SQ201180075816
【公開日】2014年8月27日 申請日期:2011年12月22日 優(yōu)先權日:2011年12月22日
【發(fā)明者】V·戈帕爾, J·D·吉爾福德, G·M·沃爾里齊, W·K·費格哈利, E·奧茲圖科, M·G·迪克森, S·P·米萊克斯, M·C·梅爾騰, 李瞳, B·L·托爾 申請人:英特爾公司