在一個(gè)方面中,以下公開涉及微處理器微架構(gòu),在更具體的方面中,涉及微處理器存儲(chǔ)器存取。更具體地,設(shè)備、系統(tǒng)和方法涉及一種與數(shù)據(jù)處于小端序格式還是大端序(endian)格式無關(guān)的更好的管理數(shù)據(jù)的。具體地,設(shè)備、系統(tǒng)和方法提供單個(gè)加載指令和單個(gè)存儲(chǔ)指令,而與由該單個(gè)加載指令加載的或由該單個(gè)存儲(chǔ)指令存儲(chǔ)的數(shù)據(jù)中編碼的數(shù)據(jù)元素尺寸無關(guān)。
背景技術(shù):
在處理器架構(gòu)和處理器架構(gòu)的實(shí)施中,術(shù)語“端序”指的是計(jì)算機(jī)的存儲(chǔ)器中數(shù)據(jù)的排序。具體地,“端序”指的是多分量數(shù)據(jù)元素的分量元素在存儲(chǔ)器中儲(chǔ)存的相對順序。在許多實(shí)施中,各分量是字節(jié),并且多分量數(shù)據(jù)元素是四字節(jié)或更大的數(shù)據(jù)元素。通常有兩種類型的“端序”:大和小。大端序意味著被存儲(chǔ)的值的最高有效部分存儲(chǔ)在最低(最小)存儲(chǔ)器地址中。相反,小端序意味著被存儲(chǔ)的值的最低有效部分存儲(chǔ)在最高(最大)存儲(chǔ)器地址中。例如,從字節(jié)尋址存儲(chǔ)器中的地址a開始,大端序機(jī)器中的4字節(jié)值0a0b0c0dh(十六進(jìn)制)會(huì)在地址a處存儲(chǔ)0a,在地址a+1處存儲(chǔ)0b,在地址a+2處存儲(chǔ)0c并且在地址a+3處存儲(chǔ)0d。相反,小端序機(jī)器會(huì)在地址a處存儲(chǔ)值0d,以此類推。雖然指令和數(shù)據(jù)存取這兩者必須遵守?cái)?shù)據(jù)的儲(chǔ)存與檢索之間的端序規(guī)則,但存儲(chǔ)器中指令的布局更有可能是編譯器自動(dòng)化的,而數(shù)據(jù)的儲(chǔ)存可以由編程器較直接地控制,由此遵守合適的端序?qū)τ跀?shù)據(jù)存取可能更受到關(guān)注。
通常使用大和小端序機(jī)器這兩者。網(wǎng)絡(luò)字節(jié)順序是大端序。一些處理器架構(gòu)僅是大端序的,而一些僅是小端序的。一些處理器架構(gòu)允許任一種。mips精簡指令集計(jì)算(risc)架構(gòu)是這種架構(gòu)的示例。
技術(shù)實(shí)現(xiàn)要素:
提供該發(fā)明內(nèi)容,以以簡化形式介紹概念的選擇,下面在具體實(shí)施方式中進(jìn)一步描述概念。該發(fā)明內(nèi)容不旨在標(biāo)識(shí)所要求保護(hù)主題的關(guān)鍵特征或基本特征,也不旨在用于限制所要求保護(hù)主題的范圍。
在一個(gè)方面中,本公開涉及一種系統(tǒng)(例如,被實(shí)施為處理器、多處理器系統(tǒng)中的處理器內(nèi)核、在物理處理資源上執(zhí)行的虛擬內(nèi)核等),該系統(tǒng)可以根據(jù)大端序或小端序規(guī)則來操作,并且利用寄存器內(nèi)容執(zhí)行從存儲(chǔ)器到寄存器的加載操作和從寄存器到存儲(chǔ)器的存儲(chǔ)操作,該寄存器內(nèi)容基于系統(tǒng)的當(dāng)前端序模式而變化。這種系統(tǒng)可以針對不同尺寸的元素,諸如128或更大位寬的寄存器中的字節(jié)、半字、字、和雙字長的元素)支持對寄存器的單指令多數(shù)據(jù)(simd)操作。該系統(tǒng)加載和存儲(chǔ)數(shù)據(jù)和/或指令,而對所加載或存儲(chǔ)的元素的尺寸不敏感,但對端序模式(也稱為“端序性”)敏感。因?yàn)榧拇嫫鲀?nèi)容基于端序模式而變化,所以至少一些simd操作對端序模式和操作的元素尺寸這兩者都敏感。
這種系統(tǒng)可以借助根據(jù)指令集架構(gòu)(isa)確定的指令來控制。根據(jù)公開的一些方面,isa包括加載指令和存儲(chǔ)指令,為了對數(shù)據(jù)進(jìn)行simd操作的目的,其可以用于從存儲(chǔ)器加載數(shù)據(jù)和將數(shù)據(jù)存儲(chǔ)到存儲(chǔ)器。這些加載指令和存儲(chǔ)指令不具有對要對這種數(shù)據(jù)執(zhí)行的simd操作的元素尺寸敏感的變量。根據(jù)公開的一些方面,isa包括對固定寄存器尺寸內(nèi)的不同元素尺寸操作的算術(shù)操作(例如,128位寄存器中的四倍長字乘法)。這些指令指定數(shù)據(jù)元素尺寸,并且最終執(zhí)行該指令的執(zhí)行單元使用端序模式的指示來確定在源寄存器內(nèi)何處找到用于執(zhí)行該指令的特定元素。根據(jù)本公開,isa還可以提供搜索寄存器內(nèi)所指定的字節(jié)值的首次出現(xiàn)的指令。被設(shè)置以執(zhí)行這種指令的執(zhí)行單元還對端序模式敏感,使得可以標(biāo)識(shí)和實(shí)施對寄存器的正確搜索順序。
附圖說明
圖1描繪了字節(jié)尋址存儲(chǔ)器位置的組織,其中示出了存儲(chǔ)器到寄存器21的小端序映射;
圖2描繪了從圖1的存儲(chǔ)器到寄存器中的位置的小端序(le)映射的現(xiàn)有技術(shù)示例,使得最低有效字節(jié)存儲(chǔ)在字節(jié)的起始(右手側(cè)),并且越來越有效的字節(jié)存儲(chǔ)在連續(xù)位置中,圖2還描繪了字節(jié)、半字、字等的陣列中元素的不同尺寸,其中示出了存儲(chǔ)器到寄存器28的大端序映射;
圖3描繪了根據(jù)不同尺寸的元素(諸如字節(jié)、半字、字、雙字)從存儲(chǔ)器到寄存器的大端序(be)映射;
圖4描繪了針對加載指令對于be和le這兩者的操作的示例,加載指令可以用于加載simd操作中要使用的數(shù)據(jù),但不指定從存儲(chǔ)器加載到所描繪的寄存器中的元素的尺寸;
圖5描繪了可以實(shí)施這里的公開的系統(tǒng)的一部分的框圖;
圖6描繪了對正在操作的寄存器的端序和寄存器中的元素的尺寸這兩者敏感的simd處理邏輯的示例;
圖7描繪了可以由根據(jù)本公開的系統(tǒng)實(shí)施的示例性處理;
圖8描繪了示例性實(shí)施中的be四倍長字乘法,其中示出了大端序模式下的4字封裝simd乘法,其中i[0]*i[4]、i[1]*i[5]、i[2]*i[6]、i[7]*i[3];
圖9描繪了示例性實(shí)施中的le四倍長字乘法,其中示出了小端序模式下的4字封裝simd乘法,其中i[0]*i[4]、i[1]*i[5]、i[2]*i[6]、i[7]*i[3];
圖10-圖13描繪了本公開的另選實(shí)施,其中,寄存器內(nèi)容對字節(jié)順序而言不改變,但處理邏輯對字節(jié)順序以及用于simd操作的元素尺寸敏感,其中圖11示出了大端序模式下的4字封裝simd乘法,圖13示出了用于輸入到流水線的大端序重排序的字節(jié);
圖14提供了對寄存器內(nèi)容的字節(jié)順序敏感的搜索指令的示例,其中,寄存器內(nèi)容根據(jù)本公開的示例性實(shí)施而填充,其中示出了用于搜索指定字節(jié)值的首次出現(xiàn)的指令;以及
圖15a和圖15b描繪了可以諸如在所描繪的存儲(chǔ)單元中和無序流水線中實(shí)施本公開的處理系統(tǒng)的示例性框圖。
具體實(shí)施方式
一些處理器架構(gòu)被設(shè)計(jì)成支持向/從存儲(chǔ)器傳送數(shù)據(jù)的指令,或?qū)拇嫫髦械闹祱?zhí)行操作,但不支持對駐留在存儲(chǔ)器中的數(shù)據(jù)執(zhí)行操作的指令(即,執(zhí)行操作的指令可以僅具有寄存器源和寄存器目的地)。加載指令和存儲(chǔ)指令分別從存儲(chǔ)器向寄存器中加載數(shù)據(jù),或從寄存器向存儲(chǔ)器存儲(chǔ)數(shù)據(jù)。具有這些類型的“加載/存儲(chǔ)”和“寄存器-寄存器”指令的架構(gòu)稱為精簡指示集計(jì)算(risc)架構(gòu)。
處理器可以包括算術(shù)單元,該算術(shù)單元可以使用給定尺寸的寄存器在不同數(shù)據(jù)寬度上執(zhí)行單指令多數(shù)據(jù)(simd)操作。例如,寄存器可以是64、128或256位寬等。在示例中,處理器可以支持128位寄存器中在8、16、32或64位數(shù)據(jù)寬度上的simd操作。例如,字長(32位)乘法指令將128位寄存器中的四字?jǐn)?shù)據(jù)乘以另一個(gè)128位寄存器中的四字?jǐn)?shù)據(jù)。
通常并且如圖2和圖3例示,對于小端序和大端序這兩種模式,對于寄存器中存儲(chǔ)的各個(gè)元素(i[n]),現(xiàn)有技術(shù)傳統(tǒng)地從低(右)到高(左)對寄存器中的元素編號(hào)。例如,為了在小端序機(jī)器中以le模式從具有字長的元素的存儲(chǔ)器加載單個(gè)(即,非simd)128位數(shù)據(jù)元素,lsb(最低存儲(chǔ)器地址)總是放在第一元素(i[0])的最低部分,并且依次增大的地址的字節(jié)被彼此相鄰放置直到達(dá)到元素中的msb為止。通常,在le模式下,具有字長的元素的非simd128位加載會(huì)將最低有效地址放置在元素的右手側(cè),并且最低有效地址處的位在be模式下會(huì)被放置在元素的左手側(cè)。
由此,支持大端序和小端序這兩種模式的處理器中的加載指令和存儲(chǔ)指令具有附加的復(fù)雜性,這是因?yàn)樗鼈儽仨毮軌騾^(qū)分大端序和小端序,使得值的lsb和msb(無論大還是小)在存儲(chǔ)器與寄存器之間正確移動(dòng)。目前,其還應(yīng)用于在執(zhí)行simd操作時(shí)出現(xiàn)的加載和存儲(chǔ)。具體地,對不同寬度的simd數(shù)據(jù)操作的加載指令和存儲(chǔ)指令在大端序與小端序操作之間需要不同的處理。換言之,給定的寄存器寬度需要在大端序與小端序機(jī)器之間對于不同的操作數(shù)寬度對數(shù)據(jù)進(jìn)行不同映射。實(shí)際上,這意味著對于不同寬度的simd加載,需要有不同的指令。例如,需要用于加載字節(jié)的不同指令、對于用于加載字的不同指令、用于加載雙字的不同指令等。這還意味著加載和存儲(chǔ)指令的操作碼(opcode)部分需要位以指定什么尺寸的數(shù)據(jù)存儲(chǔ)在加載和存儲(chǔ)指令中。本領(lǐng)域技術(shù)人員將理解一些加載和存儲(chǔ)指令中的opcode位是稀缺的,并且期望盡可能少使用opcode位。
圖1例示了從十六進(jìn)制地址0x1000至地址0x100f的存儲(chǔ)器的小16字節(jié)部,其在le模式下加載到128位寄存器21(圖2)中并且在be模式下加載到128位寄存器28(圖3)中。如所例示且之前提到的,來自存儲(chǔ)器的各個(gè)字節(jié)從地址0x1000處的存儲(chǔ)器中的第一位置加載到所例示的寄存器21、28的lsb。如所例示的,來自存儲(chǔ)器地址0x1000的字節(jié)“0”被加載到寄存器21、28的lsb位置。來自存儲(chǔ)器地址0x1001的字節(jié)“1”被加載到其旁邊,以此類推,直到最后字節(jié)“15”被加載在寄存器21、28的msb位置為止。
圖2示出了對于包括字節(jié)數(shù)據(jù)元素25(i[0]-i[15])、半字?jǐn)?shù)據(jù)元素26(i[0]-i[8])、和字?jǐn)?shù)據(jù)元素27(i[0]-i[3])在內(nèi)的數(shù)據(jù)元素,對應(yīng)于le模式的排列25-27。圖3示出了對于包括字節(jié)數(shù)據(jù)元素30(i[0]-i[15])、半字?jǐn)?shù)據(jù)元素31(i[0]-i[8])、字?jǐn)?shù)據(jù)元素32(i[0]-i[3])以及雙字長數(shù)據(jù)元素33(i[0]-i[2])在內(nèi)的數(shù)據(jù)元素,分別對于be模式的排列30-33。
如從將le模式和be模式下寄存器的內(nèi)容進(jìn)行比較而顯而易見的,在be模式下,寄存器需要基于希望執(zhí)行的操作的元素尺寸來加載。由此可見,如在示例中,支持be操作的處理器架構(gòu)會(huì)需要能夠?qū)⒋鎯?chǔ)器的內(nèi)容映射到寄存器中。由此,當(dāng)希望對寄存器中的數(shù)據(jù)的子集執(zhí)行某種操作時(shí),諸如,但不排外地,simd操作,這種架構(gòu)需要具有指定希望加載的數(shù)據(jù)元素尺寸的加載指令。例如,長度為128位的加載指令并且包含字長(各32位)的數(shù)據(jù)元素,使得該示例性指令包含四個(gè)32位字?jǐn)?shù)據(jù)元素。由此,該示例加載針對simd指令的源數(shù)據(jù),使得寄存器28包含用于執(zhí)行四個(gè)不同命令的源數(shù)據(jù)。由此,圖4例示了單個(gè)加載/存儲(chǔ)指令利用單個(gè)加載/存儲(chǔ)命令加載/寫入多個(gè)指令操作數(shù)的概念。要注意的是,在圖3中,第一字i[0]的字?jǐn)?shù)據(jù)元素包含四個(gè)字節(jié),這四個(gè)字節(jié)已經(jīng)被重排序?yàn)槌勺止?jié)3在最左側(cè)的msb位置、字節(jié)2緊挨著字節(jié)3、字節(jié)1緊挨著字節(jié)2并且字節(jié)0在lsb位置的順序。由此,字?jǐn)?shù)據(jù)元素32被重排序,以將其msb置于左側(cè),而將其lsb置于右側(cè)。如所看到的,字?jǐn)?shù)據(jù)元素32具有與在它們于存儲(chǔ)器10中不同的字節(jié)依次排序;因此,在被加載到寄存器28之前,這些字節(jié)需要被對齊(例如,拌和(swizzle))到正確位置中。
因?yàn)橹T如算術(shù)邏輯單元(alu)指令這樣的simd指令可以包含多個(gè)數(shù)據(jù)元素,所以總是提供寄存器內(nèi)容的相同排列、而不管端序模式的優(yōu)點(diǎn)在于寄存器到寄存器指令無需對端序模式敏感。換言之,假定根據(jù)以上描述數(shù)據(jù)一旦被加載到寄存器中,對于端序性標(biāo)準(zhǔn)化的是,僅對寄存器操作的指令,即,僅讀取寄存器作為源并且將結(jié)果寫到寄存器(例如,數(shù)學(xué)運(yùn)算))無需遵守基于操作模式變化的端序規(guī)則。
如下面參照圖4討論的,對于寄存器/寄存器(例如,alu)操作處理器架構(gòu)不需包括針對大端序和小端序操作的不同指令。例如,,不需要對于大端序和小端序操作用于字長乘法的不同乘法指令,也不需要輸入到流水線的指示這種操作模式的信號(hào)。
雖然這呈現(xiàn)一些優(yōu)點(diǎn),但其有時(shí)也可能在機(jī)器在be和le模式下如何運(yùn)轉(zhuǎn)之間呈現(xiàn)非對稱。該非對稱起因于以下隱含要求:對于大端序和小端序這兩者,lsb(和msb)是相同的。換言之,執(zhí)行僅寄存器操作的指令(例如,加法或乘法)對于be和le操作這兩者把寄存器的lsb看作在相同位置。
圖4描繪了當(dāng)前發(fā)明的一個(gè)方面,其中,單個(gè)加載指令可以用于對40寄存器加載任意數(shù)據(jù)元素尺寸的數(shù)據(jù)。換言之,具有單個(gè)加載指令的isa無需另一個(gè)加載指令來加載字節(jié)、加載字等。在所提出的示例中,執(zhí)行加載指令的加載/存儲(chǔ)單元(lsu)對端序模式敏感。然而,lsu僅將起始地址字節(jié)0處的字節(jié)用于加載(這里,有效地址#1000),并且對于be或le模式,如所示出的進(jìn)行加載。圖4示出了在be模式下,起始地址字節(jié)0在寄存器40的最左邊找到,并且對于le模式,起始地址字節(jié)0在最右邊找到。當(dāng)考慮到數(shù)據(jù)作為特定尺寸(這里,是字長)的元素陣列來加載時(shí),元素在寄存器40內(nèi)的位置在be模式與le模式之間是不同的。
例如,認(rèn)為字?jǐn)?shù)據(jù)元素i[0]的陣列位置在be模式下在寄存器40的最左邊找到,并且相同的字?jǐn)?shù)據(jù)元素i[0]在le模式下在寄存器40的最右邊找到。在之前的架構(gòu)中,對于be和le這兩種模式,如在le模式下,字?jǐn)?shù)據(jù)元素i[0]的陣列位置會(huì)被加載在最右邊。圖4還描繪了針對be和le模式中的每個(gè)的字?jǐn)?shù)據(jù)元素i[0-4]的最高有效字節(jié)。如圖4的示例中理解的,針對be和le這兩者的msb位于這些字?jǐn)?shù)據(jù)元素i[0]中的每個(gè)的左側(cè)處。然而,在le模式下,字?jǐn)?shù)據(jù)元素i[0]的msb是字節(jié)3,并且在be模式下,i[0]的msb是字節(jié)0。
由此可見,根據(jù)圖4的實(shí)施方式中出現(xiàn)的數(shù)據(jù)排列比標(biāo)準(zhǔn)架構(gòu)中要求的數(shù)據(jù)排列簡單,其中,陣列的相同數(shù)據(jù)元素在寄存器中位于相同位置,并且對于be和le這兩種模式而言排序相同。再次,這是因?yàn)槿鐖D2和圖3例示的,針對be和le這兩種模式,現(xiàn)有標(biāo)準(zhǔn)架構(gòu)初始地將元素加載在相同位置。在be模式下,對于半字長和更大的數(shù)據(jù)元素,需要字節(jié)重排序,以確保msb在各個(gè)數(shù)據(jù)元素的左側(cè)。相反,當(dāng)如圖4中例示的單個(gè)加載指令在be模式下對寄存器40進(jìn)行加載時(shí),其將msb、字節(jié)0加載在寄存器40的左端處,以此類推,并且將lsb、字節(jié)15加載在右端處。這確保不需要字節(jié)重排序來確保msb在寄存器40的左端處,并且還在是半字或更大的各個(gè)數(shù)據(jù)元素的左端處。
圖5描繪了存儲(chǔ)器300、存儲(chǔ)器接口302和寄存器304,存儲(chǔ)器接口302包含通道排列邏輯306。在一個(gè)配置中,存儲(chǔ)器接口302如圖4的示例所示響應(yīng)于單個(gè)加載指令加載任何尺寸的數(shù)據(jù)元素,并且響應(yīng)于單個(gè)存儲(chǔ)指令將數(shù)據(jù)存儲(chǔ)到存儲(chǔ)器。這種存儲(chǔ)器接口302會(huì)根據(jù)端序模式但獨(dú)立于寄存器304中數(shù)據(jù)的元素尺寸來執(zhí)行逆操作以執(zhí)行存儲(chǔ)。例如,當(dāng)執(zhí)行l(wèi)e模式加載時(shí),存儲(chǔ)器接口302會(huì)從存儲(chǔ)器10得字節(jié)15至0(圖4),并且將它們存儲(chǔ)在寄存器304中,字節(jié)0在寄存器304的最右側(cè)并且msb(le)字節(jié)15在寄存器304的最左側(cè)。因?yàn)檫@是與存儲(chǔ)器10中找到的相同的字節(jié)順序,所以通道排列邏輯306無需重排序/改變字節(jié)的通道。例如,當(dāng)執(zhí)行be模式加載時(shí),存儲(chǔ)器接口302會(huì)從存儲(chǔ)器10(圖4)再次取得字節(jié)15至0,并且將它們存儲(chǔ)在寄存器304中,msb(be)字節(jié)0在寄存器321的最左側(cè)并且字節(jié)15在寄存器321的最左側(cè)。這是因?yàn)閷τ赽e字節(jié)排序中的msb是字節(jié)0,并且lsb是字節(jié)15,這需要在將從存儲(chǔ)器10加載的字節(jié)放置在寄存器304中之前通道排列邏輯306對它們重排序。
如這里所使用的,“處理器”和“邏輯”包括(但不限于)硬件、固件、軟件和/或各個(gè)組合,以執(zhí)行功能或動(dòng)作和/或造成來自另一個(gè)邏輯、方法和/或系統(tǒng)的功能或動(dòng)作。例如,基于期望的應(yīng)用或需要,邏輯和/或處理器可以包括軟件控制的微處理器、離散邏輯、專用集成電路(asic)、已編程的邏輯裝置、包含指令等的存儲(chǔ)裝置。邏輯和/或處理器可以包括一個(gè)或更多個(gè)門、門的組合、或其他電路部件。邏輯和/或處理器還可以被完全具體實(shí)施為軟件。在描述多個(gè)邏輯和/或處理器的情況下,可以將多個(gè)邏輯和/或處理器合并到一個(gè)物理邏輯(或處理器)中。類似地,在描述單個(gè)邏輯和/或處理器的情況下,可以在多個(gè)物理邏輯和/或處理器之間分布單個(gè)邏輯和/或處理器。
圖6描繪了作為指令執(zhí)行流水線的一部分的算術(shù)單元320的示例。算術(shù)單元320可以是無需考慮正在操作于的端序模式的、未修改的現(xiàn)有算術(shù)單元。這是因?yàn)檩斎胫嘏判蜻壿?15和可選的輸出重排序邏輯325在需要時(shí)具有重新排列輸入和輸出數(shù)據(jù)元素使得它們被正確對齊的能力。如下面所討論的,復(fù)用器和其他數(shù)據(jù)總線轉(zhuǎn)向邏輯根據(jù)一個(gè)或更多個(gè)指令配置輸入323,基于算術(shù)單元320在何種bl/le模式310下操作,可以對輸入字節(jié)和輸出字節(jié)重排序。在一些配置中,指令配置輸入323可以描述諸如字、雙字等的數(shù)據(jù)元素的排序,其可以依賴于不只是le/be模式310并且可以通過所執(zhí)行的指令來指定。圖8和圖9例示了針對各種示例性simd乘法指令的輸入字節(jié)的一些示例性排序。在需要時(shí),輸出排序邏輯325對數(shù)據(jù)元素或其他輸出重排序,使得輸出數(shù)據(jù)存儲(chǔ)在目的地寄存器的正確位置。
圖7例示了基于操作方法400操作于的端序模式來排列源寄存器字節(jié)并且產(chǎn)生目的地寄存器字節(jié)的示例性方法400。該示例性方法400參照流程圖例示。雖然為了簡單說明的目的,所例示的方法被示出和描述為一系列框,但要理解的是,方法不被框的順序限制,這是因?yàn)橐恍┛蚩梢耘c其他框以與所示出和描述的不同的順序和/或同時(shí)發(fā)生。而且,可能需要少于所有例示的框,以實(shí)現(xiàn)示例性方法。框可以被組合或分離成多個(gè)成分。而且,附加和/或另選方法可以采用附加、未例示的框。
示例性方法400開始于403,其中對之前取得的指令解碼以確定其源和目的地操作數(shù)以及要執(zhí)行什么類型的指令。接著,經(jīng)解碼的指令在405被路由到保留站。如后面所討論的,保留站為無序流水線提供在完全收回編程順序中的指令之前寫入執(zhí)行指令的推測性中間結(jié)果的方式。當(dāng)指令要求從存儲(chǔ)器加載時(shí),在410在加載存儲(chǔ)單元(lsu)流水線中執(zhí)行加載,其從存儲(chǔ)器對一個(gè)或更多個(gè)寄存器進(jìn)行加載。該加載至少部分地基于端序模式(be或le)執(zhí)行。然而,加載與寄存器是否是利用simd加載的或simd數(shù)據(jù)的數(shù)據(jù)元素尺寸無關(guān)。例如,基于端序模式,寄存器可以如圖4例示被加載,并且單個(gè)加載指令可以用任何數(shù)據(jù)元素尺寸對寄存器進(jìn)行加載。
在與保留站中的條目關(guān)聯(lián)之后,指令被調(diào)度以在415執(zhí)行。由于準(zhǔn)備執(zhí)行該指令,在423,從對應(yīng)的寄存器獲得與該指令關(guān)聯(lián)的源操作數(shù)。當(dāng)需要時(shí),在425,源操作數(shù)字節(jié)/位至少部分地基于端序模式以及該指令的simd操作的數(shù)據(jù)元素尺寸(字節(jié)、半字、字、雙字)對齊。指令在428執(zhí)行/進(jìn)行,并且當(dāng)需要時(shí),在430,所產(chǎn)生的字節(jié)/位至少部分地基于端序模式對齊。在432,目的地寄存器和如果需要?jiǎng)t保留站用執(zhí)行結(jié)果更新。當(dāng)需要存儲(chǔ)以將結(jié)果寫到存儲(chǔ)器時(shí),方法400在434將要存儲(chǔ)的數(shù)據(jù)發(fā)送到lsu流水線,使得基于端序模式,結(jié)果被存儲(chǔ)到存儲(chǔ)器,但與寄存器是否存儲(chǔ)simd數(shù)據(jù)無關(guān),并且與正在存儲(chǔ)的simd數(shù)據(jù)的尺寸無關(guān)。
圖8描繪了be模式下四倍長字乘法的示例。在該示例中,源寄存器rs1在be模式下與源寄存器rs2相乘。圖9描繪了le模式下的類似乘法。在這些示例兩者中,數(shù)據(jù)元素字i[0]與i[4]相乘、i[1]與i[5]相乘、以此類推。在這些示例中,simd指令的字相乘,但在其他示例中,simd數(shù)據(jù)的字節(jié)、半字、雙字或其他數(shù)據(jù)元素尺寸可以類似地相乘。圖8和圖9例示了因?yàn)檫@些數(shù)據(jù)元素字位于各自不同的位置,所以如果少于四個(gè)alu可用,則不同對的數(shù)據(jù)元素可以在不同時(shí)間一起相乘。如果四個(gè)或更多的alu可用于執(zhí)行利用四個(gè)字的該simd,則四個(gè)乘法可以平行執(zhí)行。通常,如果一個(gè)alu可用,則在be模式下,隨著simd指令流過alu流水線,字i[0]和i[4]首先一起相乘,然后字i[1]和i[5]一起相乘,接著字i[2]和i[6]一起相乘,然后字i[3]和i[7]一起相乘。在le模式下,字i[3]和i[7]首先一起相乘,然后字i[2]和i[6]一起相乘,接著字i[1]和i[5]一起相乘,然后字i[0]和i[4]一起相乘。對于少量的其他指令,alu/執(zhí)行單元還要求針對字/元素尺寸的輸入,以確定何時(shí)確定如何對齊一些輸入數(shù)據(jù)和一些輸出數(shù)據(jù)。如所例示的,用于字的乘法的流水線階段之間的傳播屏障在兩個(gè)字已經(jīng)被相乘之后終止進(jìn)位傳播。在各個(gè)字?jǐn)?shù)據(jù)元素的各個(gè)乘法內(nèi),字節(jié)具有相同的排序,使得在這兩個(gè)示例中,不需要進(jìn)行逐字節(jié)重新映射。
返回參照圖4,當(dāng)執(zhí)行單元針對特定數(shù)據(jù)元素值搜索圖4的寄存器40時(shí),其在be模式下開始于寄存器的左端處的元素,并且行進(jìn)到右端處的元素,而在le模式下開始于寄存器的右端處的元素,并且行進(jìn)到左端處的元素。這是因?yàn)閷τ趌e和be模式這兩者,最低地址處的字節(jié)總是被加載在右端處,而最高地址處的字節(jié)總是被加載在寄存器的左端處,但寄存器中的各個(gè)字節(jié)到元素的分配改變。搜索指令按照定義開始于寄存器的最低有效元素,并且針對特定值逐個(gè)元素搜索,直到其達(dá)到最高有效元素為止。在le模式下,第一元素在寄存器的右端處,而在be模式下,第一元素在寄存器的左端處。如果在寄存器中未找到該搜索值,則搜索指令可以返回指示沒有找到匹配的信號(hào)。
與圖4的加載指令示例不同,圖10-圖13描繪了可以用于用任何尺寸的數(shù)據(jù)元素來加載寄存器的單個(gè)加載指令的不同示例。在某種程度上,該加載指令類似于經(jīng)典的加載指令。然而,圖10-圖13的加載指令在加載時(shí)未考慮數(shù)據(jù)元素的可能尺寸。在圖10中,當(dāng)加載指令(加載d1#1000)被執(zhí)行時(shí),陣列要素的相同相對排列在be與le模式之間被維持(例如,i[0]會(huì)在相同位置處,與加載be模式還是le模式無關(guān))。如圖10所例示,寄存器d1加載有包含字節(jié)3-0的字?jǐn)?shù)據(jù)元素i[0]、包含字節(jié)7-4的字?jǐn)?shù)據(jù)元素i[1]、包含字節(jié)11-8的字?jǐn)?shù)據(jù)元素i[2]、以及包含字節(jié)15-12的字?jǐn)?shù)據(jù)元素i[3]。然而,在該配置中,并且如圖11和圖13例示,當(dāng)實(shí)施be模式時(shí),如圖13中針對i[0]和i[4]所示例的,寄存器中各個(gè)元素內(nèi)的數(shù)據(jù)在使用之前需要重排序。
類似于圖8,圖11和圖12例示了be模式下源寄存器一(rs1)205和源寄存器二(rs2)210的4字封裝的smid乘法。如圖11例示,rs1205已經(jīng)加載有數(shù)據(jù)元素字(例如,元素)i[3]、i[2]、i[1]、i[0]并且rs1205已經(jīng)加載有數(shù)據(jù)元素字i[7]、i[6]、i[5]、i[4]。rs2210的對應(yīng)字節(jié)位置如圖12中例示。該指令將字i[3]與字i[7]相乘、將字i[2]與字i[6]相乘、將字i[1]與字i[5]相乘、以及將字i[0]與字i[4]相乘。在le模式下,各個(gè)字的字節(jié)被正確對齊。然而,在be模式下,如圖13中針對字i[0]和i[4]例示的,各個(gè)字的字節(jié)必須重新對齊。該重新對齊或拌和可以利用類似于上面參照圖5描述的通道排列邏輯306的通道排列/對齊邏輯來進(jìn)行,或利用類似于圖6的輸入重排序邏輯315的邏輯來進(jìn)行。本領(lǐng)域技術(shù)人員將理解可以類似于在圖形處理單元(gpu)中實(shí)施的對齊邏輯來實(shí)施該對齊邏輯。
圖14描繪了搜索指令的示例,該搜索指令在搜索具有較小地址值的元素(例如,字節(jié))至具有較大地址值的元素的同時(shí)標(biāo)識(shí)元素(例如,字節(jié))值的首次出現(xiàn)。在本公開的實(shí)施中,這些搜索指令由根據(jù)端序模式敏感的執(zhí)行單元來執(zhí)行。具體地,如圖14所例示的,排序邏輯在be模式與le模式之間顛倒。如所例示的,在be模式下,寄存器的搜索開始于寄存器的左側(cè),并且朝向寄存器的右側(cè)逐元素行進(jìn),直到寄存器中找到匹配搜索值的元素或搜索了整個(gè)寄存器為止。在一些配置中,如果沒發(fā)現(xiàn)匹配,則執(zhí)行單元將生成該寄存器中沒有匹配元素的指令。在le模式下,搜索被反轉(zhuǎn)并且寄存器的搜索開始于右側(cè),并且朝向寄存器的左側(cè)逐元素行進(jìn),直到寄存器中找到匹配搜索值的元素或搜索了整個(gè)寄存器為止。
圖15a和圖15b呈現(xiàn)出可以實(shí)施本公開的處理器50的示例性框圖。具體地,加載存儲(chǔ)單元(lsu)66可以執(zhí)行根據(jù)本公開的加載指令和存儲(chǔ)指令,以針對各個(gè)模式執(zhí)行存儲(chǔ)器與寄存器之間描述的映射。指令執(zhí)行流水線70(可以有序或無序)被設(shè)置有指示操作模式的端序模式信號(hào)。該端序模式信號(hào)還可以是被置位以指示端序模式的寄存器位。
取得邏輯52從存儲(chǔ)器預(yù)先取得處理器50將要執(zhí)行的軟件指令。這些預(yù)先取得的指令被放置在指令緩存器54中。這些指令之后經(jīng)由解碼和重命名邏輯56從指令緩存器54去除,并且被解碼成處理器能夠處理的指令。這些指令還被重命名并且放置在指令隊(duì)列58中。解碼器和重命名邏輯56還向分支預(yù)測器和轉(zhuǎn)譯后備緩沖器(itlb)60提供與分支指令關(guān)聯(lián)的信息。分支預(yù)測器和itlb60預(yù)測分支并且向取得邏輯52提供分支預(yù)測信息,從而所預(yù)測的指令被取得。
重排序緩沖器62存儲(chǔ)推測性完成指令的結(jié)果,該指令可能未準(zhǔn)備好以編程順序收回。重排序緩沖器62還可以用于展開誤預(yù)測的分支。保留站68提供指令的位置,以寫入它們的結(jié)果,而不要求寄存器變?yōu)榭捎?。保留?8還提供寄存器重命名和動(dòng)態(tài)指令重新調(diào)度。提交單元60確定指令數(shù)據(jù)值何時(shí)準(zhǔn)備好提交/加載到寄存器堆72中的一個(gè)或更多個(gè)寄存器中。加載和存儲(chǔ)單元66檢測對存儲(chǔ)器和從存儲(chǔ)器的加載指令和存儲(chǔ)指令,以確保該存儲(chǔ)數(shù)據(jù)遵循依次的程序順序,即使處理器50推測性地?zé)o序地執(zhí)行指令。例如,加載和存儲(chǔ)單元將不允許從尚未由掛起的舊存儲(chǔ)指令寫入的存儲(chǔ)位置加載數(shù)據(jù)的加載。
指令在一個(gè)或更多個(gè)無序流水線70中執(zhí)行,在指令以編程順序執(zhí)行時(shí)這些無序流水線70是不需要的。通常,指令最終將它們的結(jié)果寫到寄存器堆72。圖15b例示了示例性寄存器堆,其具有32個(gè)寄存器reg#0至寄存器reg#31。依賴于指令,來自寄存器堆72的數(shù)據(jù)結(jié)果可以在達(dá)到存儲(chǔ)層級(jí)78之前最終寫到一個(gè)或更多個(gè)一級(jí)(l1)數(shù)據(jù)緩存器74和n路組關(guān)聯(lián)二級(jí)(l2)緩存器76中。
根據(jù)上述公開的處理器可以享受以下益處(雖然這種益處不必呈現(xiàn)在所有實(shí)施中):在一些處理器架構(gòu)中,加載指令和存儲(chǔ)指令這兩者很大程度上需要比寄存器對寄存器指令多的opcode空間來表達(dá)。例如,具有源、目的地和16位偏移的加載會(huì)通常要求五位來標(biāo)識(shí)32個(gè)源寄存器中的1個(gè)以及五位標(biāo)識(shí)32個(gè)目的地寄存器中的1個(gè),并且針對總共26位opcode空間的16個(gè)地址偏移位,使得32位opcode的最后六位空閑來標(biāo)識(shí)指令為加載。另選地,無偏移的寄存器對寄存器指令將需要15位來指定三個(gè)寄存器,留下較多的opcode位可用于標(biāo)識(shí)加載指令的類型。在另一個(gè)配置中,架構(gòu)可以具有32個(gè)寄存器,每個(gè)寄存器利用五位來標(biāo)識(shí),并且可以具有六位的opcode。這種架構(gòu)會(huì)僅使用21位來對這種寄存器到寄存器操作進(jìn)行編碼。雖然risc架構(gòu)可以仍然在32位中存儲(chǔ)指令,但僅使用21位空間允許了對較多的指令進(jìn)行編碼。另選地,可以對較多的寄存器或其某些組合進(jìn)行尋址。進(jìn)一步地,存儲(chǔ)器接口302(圖5)中的通道排列邏輯306可以比在現(xiàn)有系統(tǒng)中的簡單,在于無需執(zhí)行字節(jié)特定重排序。雖然處理單元可能需要對端序模式敏感,但通常會(huì)有足夠的通道重排序邏輯,以支持對不同尺寸的指定通道的可變邏輯或算術(shù)操作??梢匝a(bǔ)充該邏輯以將端序模式考慮在內(nèi)。
術(shù)語“處理器”還包括可以處理數(shù)據(jù)的各種機(jī)器結(jié)構(gòu)中的任意結(jié)構(gòu),包括例如,數(shù)字信號(hào)處理器、固定功能電路、輸入/輸出(i/o)、或甚至處理器內(nèi)的功能單元。更進(jìn)一步地,“處理器”包括虛擬化執(zhí)行資源,使得一組物理執(zhí)行資源可以被抽象為多個(gè)物理處理器。操作差別是是否提供用于將數(shù)據(jù)預(yù)取得到相對本地儲(chǔ)存器的支持,并且可以需要實(shí)施本公開的輔助差別是從無序處理、多線程或這兩者重排序要求請求的能力。
現(xiàn)代通用處理器規(guī)則地需要實(shí)施超過二十億個(gè)晶體管,同時(shí)圖形處理單元可以具有超過五十億個(gè)晶體管。這種晶體管計(jì)數(shù)可能增大。這種處理器已經(jīng)使用了這些晶體管,以實(shí)施增大復(fù)雜操作重排序、預(yù)測、更加并行化、更大的存儲(chǔ)器(包括更多和更大的緩存)等。由此可見,需要能夠以適合于正被論述的技術(shù)的細(xì)節(jié)級(jí)別來描述或討論關(guān)于這種處理器的技術(shù)主題(不管通用還是專用)。通常,應(yīng)用概念的層級(jí),以允許本領(lǐng)域技術(shù)人員聚焦于正在被論述的主題的細(xì)節(jié)。
例如,高級(jí)別特征(諸如處理器支持什么指令)傳遞架構(gòu)級(jí)別細(xì)節(jié)。當(dāng)描述高級(jí)別技術(shù)(諸如編程模塊)時(shí),這種級(jí)別的抽象是合適的。微架構(gòu)細(xì)節(jié)描述了關(guān)于架構(gòu)的實(shí)施的高級(jí)別細(xì)節(jié)(甚至因?yàn)橄嗤奈⒓軜?gòu)可以能夠執(zhí)行不同的isa)。然而,微架構(gòu)細(xì)節(jié)通常描述了不同的功能單元和他們的相互關(guān)系,諸如如何和何時(shí)數(shù)據(jù)在這些不同的功能單元之間移動(dòng)。由此可見,參考這些單元的功能也是合適水平的抽象,而不是論述這些功能單元的實(shí)施,這是因?yàn)檫@些功能單元中的每一個(gè)本身可以包括幾十萬或上百萬的門。當(dāng)論述這些功能單元的某個(gè)特定特征時(shí),可以適當(dāng)標(biāo)識(shí)這些單元的被代替的功能,并且使這些抽象化,同時(shí)更詳細(xì)地論述功能單元的相關(guān)部分。
最終,可以指定實(shí)施這些功能單元的(在整個(gè)處理器的背景下)、門和互連(網(wǎng)絡(luò)列表)的精準(zhǔn)邏輯排列。然而,這種邏輯排列如何在特定芯片中物理實(shí)現(xiàn)(邏輯和互連在特定設(shè)計(jì)中如何布局)仍可以在不同的處理技術(shù)中不同,并且由于各種其他原因。關(guān)于制作用于功能單元的網(wǎng)絡(luò)列表以及實(shí)際布局的許多細(xì)節(jié)使用設(shè)計(jì)自動(dòng)化來確定,從要實(shí)現(xiàn)的邏輯的高級(jí)別邏輯進(jìn)行(例如,“硬件描述語言”)。
術(shù)語“電路”不意味著單個(gè)電連接的電路組。電路可以是固定功能、可配置或可編程的。通常,與實(shí)施功能單元的特定部分的電路相比,實(shí)施功能單元的電路更有可能可配置,或可以是更大程度地配置。例如,處理器的算術(shù)邏輯單元(alu)在執(zhí)行不同的算術(shù)或邏輯運(yùn)算時(shí)可以不同地重新使用電路的相同部分。由此可見,電路的該部分在被配置成執(zhí)行或以其他方式互連以執(zhí)行各個(gè)不同操作時(shí)是對于各個(gè)不同操作有效的電路,或電路的一部分。這種配置可以例如來自或基于指令或微代碼。
在所有這些情況下,從功能的角度描述處理器的部分向本領(lǐng)域技術(shù)人員表達(dá)結(jié)構(gòu)。在該公開的背景下,術(shù)語“單元”在一些實(shí)施中指的是實(shí)施歸因于該單元的功能的一類或一組電路。這種電路可以實(shí)施附加功能,所以執(zhí)行一個(gè)功能的電路的標(biāo)識(shí)不意味著相同電路,或其一部分,也無法執(zhí)行其他功能。在一些情況下,可以標(biāo)識(shí)功能單元,然后可以描述不同地執(zhí)行特定特征或?qū)嵤┬绿卣鞯碾娐返墓δ苊枋?。例如,“解碼單元”指的是實(shí)施處理器指令的解碼的電路。描述說明了在一些方面中,這種解碼單元,因此實(shí)施這種解碼單元的電路支持特定指令類型的解碼。指令的解碼在不同的架構(gòu)和微架構(gòu)之間不同,并且除了權(quán)利要求的明確要求之外,術(shù)語不對其進(jìn)行排除。例如,根據(jù)該實(shí)施的設(shè)計(jì)目標(biāo),不同的微架構(gòu)可以有點(diǎn)不同地實(shí)施指令解碼和指令調(diào)度。類似地,存在結(jié)構(gòu)已經(jīng)從他們執(zhí)行的功能取得他們的名字的情況。例如,以規(guī)定方式表現(xiàn)的程序指令的“解碼器”描述了支持該行為的結(jié)構(gòu)。在一些情況下,結(jié)構(gòu)可以與不支持這種行為的解碼器具有永久的物理差異或改編。然而,這種結(jié)構(gòu)還可以由臨時(shí)改編或配置來制造,諸如一個(gè)在程序控制、微代碼、或配置的其他源下產(chǎn)生。
存在設(shè)計(jì)電路的不同方法。例如,電路可以相對于時(shí)鐘同步或異步。電路可以被設(shè)計(jì)成靜態(tài)或動(dòng)態(tài)。不同的電路設(shè)計(jì)原理可以用于實(shí)施不同的功能單元或其一部分。無特定文本專用基礎(chǔ),“電路”包含所有這種設(shè)計(jì)方法。
雖然這里描述的電路或功能單元可以由電路最經(jīng)常地實(shí)施(且更具體地,由主要依賴于在半導(dǎo)體中被實(shí)施為一次開關(guān)元件的晶體管的電路),但該術(shù)語被理解為與所公開的技術(shù)相關(guān)。例如,不同的物體處理可以用于實(shí)施本公開的方面的電路,諸如光學(xué)、納米管、微電機(jī)械元件、量子開關(guān)或存儲(chǔ)儲(chǔ)存器、磁抗邏輯元件等。雖然根據(jù)本技術(shù)的用于構(gòu)建電路或功能單元的技術(shù)的選擇可以隨時(shí)間改變,但該選擇是根據(jù)技術(shù)的當(dāng)前狀態(tài)進(jìn)行的實(shí)施決定。這由從使用真空管作為開關(guān)元件到使用具有離散晶體管的電路、到使用集成電路的過渡,并且存儲(chǔ)技術(shù)的進(jìn)步在于雖然在這些領(lǐng)域中的各個(gè)領(lǐng)域中有許多發(fā)明,但這些方法不必從根本上改變計(jì)算機(jī)如何根本地工作。例如,具有從指令集構(gòu)架選擇的一系列指令的所存儲(chǔ)的程序的使用是從計(jì)算機(jī)的重要改變,該計(jì)算機(jī)需要物理重寫,以改變程序,但隨后,這種存儲(chǔ)的程序計(jì)算機(jī)程序內(nèi)的各種功能單元有很多進(jìn)步。
功能模塊可以由電路組成,其中,這種電路可以是固定功能、在程序控制下可配置或在其他配置信息下可配置,或其某個(gè)組合。功能模塊本身由此可以由它們執(zhí)行的功能來描述,以有助于抽象化可以如何實(shí)施這種功能的構(gòu)成部分中的一些。
在一些情況下,電路和功能模塊可以從功能角度部分地描述,和從結(jié)構(gòu)角度部分描述。在一些情況下,這種描述的結(jié)構(gòu)部分可以從應(yīng)用于電路或功能模塊或這兩者的配置的角度來描述。
雖然某個(gè)主題已經(jīng)以特定于結(jié)構(gòu)特征和/或方法步驟的示例的語言來描述,但將理解的是,所附權(quán)利要求中限定的主題不必限于這些描述的特征或行為。例如,給定結(jié)構(gòu)特征可以歸入在另一個(gè)結(jié)構(gòu)元素內(nèi),或這種特征可以在特有部件之間分離或分配。類似地,處理的示例性部分可以被實(shí)現(xiàn)為副產(chǎn)品或與另一個(gè)行為或處理同時(shí)執(zhí)行,或在一些實(shí)施中可以作為多個(gè)分開的行為執(zhí)行。由此可見,根據(jù)本公開的實(shí)施不限于與具有所描繪和/或描述的示例具有1:1對應(yīng)的那些。
上述,說明了計(jì)算硬件和/或軟件編程的各種示例,以及這種硬件/軟件如何可以互通的示例。硬件或被配置有軟件和這種通信接口的硬件的這些示例提供用于完成歸因于彼此的功能的手段。例如,用于執(zhí)行這里描述的軟件處理的實(shí)施的手段包括機(jī)器可執(zhí)行代碼,用于對機(jī)器進(jìn)行配置以執(zhí)行這種處理。本公開的一些方面屬于由有限的可配置性或固定的功能電路執(zhí)行的處理,并且在這種情況下,用于執(zhí)行這種處理的手段包括專用和有限可編程性硬件中的一個(gè)或更多個(gè)。這種硬件可以通過軟件在通用計(jì)算機(jī)上執(zhí)行來控制或調(diào)用。
本公開的實(shí)施可以提供用于嵌入式系統(tǒng),諸如電視、電器、車輛,或個(gè)人計(jì)算機(jī)、桌上型計(jì)算機(jī)、膝上型計(jì)算機(jī)、消息處理器、手持裝置、多處理器系統(tǒng)、基于微處理器的或可編程的消費(fèi)者電子器件、游戲控制器、網(wǎng)絡(luò)pc、微計(jì)算機(jī)、大型計(jì)算機(jī)、移動(dòng)電話、pda、平板電腦等。
除了硬件實(shí)施方式(例如,在中央處理單元(“cpu”)內(nèi)或耦合到中央處理單元(“cpu”)、微處理器、微控制器、數(shù)字信號(hào)處理器、處理器芯、片上系統(tǒng)(“soc”)、或任意其他可編程或電子裝置),實(shí)施還可以具體實(shí)施在軟件(例如,計(jì)算機(jī)可讀代碼、程序代碼、指令和/或以任意形式設(shè)置的數(shù)據(jù),諸如源、對象或機(jī)器語言)中,軟件設(shè)置例如在被配置成存儲(chǔ)軟件的計(jì)算機(jī)可用(例如,可讀)介質(zhì)中。這種軟件可以能夠?qū)崿F(xiàn)例如功能、制造、建模、模擬、描述、和/或這里描述的設(shè)備和方法的測試。例如,這可以借助使用以下來實(shí)施:普通編程語言(例如,c、c++)、gdsii數(shù)據(jù)庫、硬件描述語言(hdl)(包括veriloghdl、vhdl、系統(tǒng)c寄存器傳送級(jí)(rtl)等)、或其他可用程序、數(shù)據(jù)庫、和/或電路(即,示意性)捕捉工具。實(shí)施方式可以設(shè)置在計(jì)算機(jī)可用介質(zhì)中,包括永久性存儲(chǔ)器,諸如使用半導(dǎo)體、磁盤、光盤的存儲(chǔ)器、鐵、電阻存儲(chǔ)器等。
作為特定示例,理解的是,所公開的設(shè)備和方法的實(shí)施可以實(shí)施在具體實(shí)施為硬件描述語言(hdl)的半導(dǎo)體知識(shí)產(chǎn)權(quán)核(諸如微處理器核)中,或其一部分中,可以用于制造專用集成電路實(shí)施。計(jì)算機(jī)可讀介質(zhì)可以具體實(shí)施或存儲(chǔ)這種描述語言數(shù)據(jù),并且由此構(gòu)成制品。永久性機(jī)器可讀介質(zhì)是計(jì)算機(jī)可讀介質(zhì)的示例。其他實(shí)施方式的示例包括存儲(chǔ)寄存器傳送語言(rtl)描述的計(jì)算機(jī)可讀介質(zhì),可以適用于特定架構(gòu)或微架構(gòu)實(shí)施中。另外,這里描述的設(shè)備和方法可以具體實(shí)施為配置或編程硬件的硬件和軟件的組合。
而且,在一些情況下,這里已經(jīng)使用了術(shù)語,這是因?yàn)檎J(rèn)為向普通技術(shù)人員更合理地傳達(dá)特征點(diǎn),但這種術(shù)語不應(yīng)當(dāng)被認(rèn)為意味著對于由所公開的示例和其他方面包含的實(shí)施的范圍的限制。前述公開中已經(jīng)例示和描述了多個(gè)示例。必然地,不是每個(gè)示例都可以例示每個(gè)方面,并且示例不例示這種方面的排外構(gòu)成。相反,相對于一個(gè)附圖或示例例示和描述的方面可以與相對于其他附圖例示和描述的方面一起使用或組合。由此可見,普通技術(shù)人員會(huì)從這些公開理解上述公開不限于根據(jù)權(quán)利要求的實(shí)施方式的構(gòu)成,而是權(quán)利要求的范圍這里限定發(fā)明實(shí)施方式的寬度和范圍。發(fā)明內(nèi)容和摘要部分可以闡述一個(gè)或更多個(gè),但不是權(quán)利要求的范圍內(nèi)本發(fā)明的所有示例性實(shí)施方式和方面。