新四季網

用於對齊寄存器的系統、裝置和方法與流程

2023-09-11 23:13:10 4


本申請是2012年03月29日提交的申請號為201280026790.x的同名專利申請的分案申請。

本發明的領域一般涉及計算機處理器體系結構,尤其涉及當被執行時引起特定結果的指令。



背景技術:

隨著處理器的單指令多數據(simd)寬度增加,應用程式開發者(和編譯器)越來越難以充分使用simd硬體,因為數據元素不會自然地與全矢量的大小對齊並且通常產生高速緩衝存儲行分裂,其中存儲器參考位於高速緩衝存儲器層級的兩個不同行上。常規地,處理高速緩衝存儲行分裂涉及到:檢測高速緩衝存儲行分裂狀態,進行兩次不同的tlb查找,進行兩次高速緩衝存儲行存取,以及因此使用兩個獨立的存儲器埠,和/或使用專用邏輯在來自存儲器途中合併來自兩個連續高速緩衝存儲行的數據片。

附圖說明

在附圖中通過舉例的方式而不是限制的方式闡述了本發明,其中相似的附圖標記表示相似的元件,並且其中:

圖1描繪了align(對齊)指令的示例性執行。

圖2描繪了align指令的示例性執行。

圖3描繪了align指令的示例性執行。

圖4示出了通過在處理器中執行對齊指令而對齊來自兩個源的數據以及將該對齊存儲到目的地位置的方法的實施例。

圖5示出了用於處理對齊指令的方法的實施例。

圖6示出了用於處理對齊指令的方法的實施例。

圖7示出了用於處理偽碼的對齊指令的方法的實施例。

圖8a是示出根據本發明的實施例的一般矢量友好指令格式及其a類指令模板的框圖。

圖8b是示出根據本發明的實施例的一般矢量友好指令格式及其b類指令模板的框圖。

圖9a-c示出了根據本發明的實施例的示例性的特定矢量友好指令格式。

圖10是根據本發明的一個實施例的寄存器體系結構的框圖。

圖11a是根據本發明的實施例的單cpu核心連同其與片上互連網絡的連接以及其2級(l2)高速緩衝存儲器的本地子集的框圖。

圖11b是根據本發明的實施例的圖11a中的cpu核心的部分的分解視圖。

圖12是示出根據本發明的實施例的示例性的無序體系結構的框圖。

圖13是依照本發明的一個實施例的系統的框圖。

圖14是依照本發明的實施例的第二系統的框圖。

圖15是依照本發明的實施例的第三系統的框圖。

圖16是依照本發明的實施例的soc的框圖。

圖17是根據本發明的實施例的具有集成的存儲器控制器和圖形的單核處理器和多核處理器的框圖。

圖18是根據本發明的實施例的對照將源指令集中的二進位指令轉換成目標指令集中的二進位指令的軟體指令轉換器的使用的框圖。

具體實施方式

在下面的說明中,闡述了多方面具體細節。然而,應當理解的是,本發明的實施例可在不具有這些具體細節的情況下實現。在其它實例中,為了不使得本說明的理解不清晰,未詳細示出公知的電路、結構和技術。

說明書中提到「一個實施例」、「實施例」、「示例性實施例」等表示所描述的實施例可包括特定的特徵、結構或特點,但是每個實施例可不必包括該特定的特徵、結構或特點。而且,這種術語不一定指的是同一實施例。此外,當結合實施例描述特定的特徵、結構或特點時,假設結合其它實施例來實現這樣的特徵、結構或特點在本領域技術人員的知識範圍內,無論是否做出明確說明。

如之前詳述的,數據元素的傳統對齊要求多次處理,得到一些不期望的結果。例如,在一些情形下,用戶經由特定記憶術指定可能的不對齊行為(諸如執行類似於vmovups的指令),導致因假設高速緩衝存儲行分裂總是將要生成而引起的更緩慢的執行。在其它情形下,硬體在運行時間檢測高速緩衝存儲器不對齊,導致額外的性能懲罰。

對齊

下文中詳細說明了矢量對齊(valign)指令的實施例,以及可用於執行這樣的指令的系統、體系結構、指令格式等的實施例。當被執行時,矢量對齊指令使處理器串接指令的第一和第二源操作數的數據元素,基於指令的偏移(立即數)值將來自該串接數據的數據元素向右移位,並且將移位後的串接數據的一個或多個元素存儲到目的地矢量寄存器中。在一些實施例中,待存儲在目的地矢量寄存器中的移位後的串接數據的元素是通過寫屏蔽寄存器的對應位確定的。第一和第二源均可是寄存器、存儲器單元或其組合。在一些實施例中,當源為存儲器單元時,其數據在串接之前被加載到寄存器中。

該指令的示例為「valigndzmm1{k1},zmm2,zmm3/m512,offset」,其中zmm1、zmm2、zmm3是矢量寄存器(諸如128、256、512位寄存器),m512是存儲在寄存器或立即數中的512位存儲器操作數,k1是寫屏蔽操作數(諸如類似於之前所詳細說明的16位寄存器),並且offset是立即數(例如,8位立即數),其指示在源的數據元素串接之後數據元素的32位元素的對齊,如下文詳述的。從存儲器取回的無論什麼都是起始於存儲器地址的集合連續位並且可以是多個尺寸(128位、256位、512位等)中的一個,這取決於目的地寄存器的尺寸,該尺寸通常與目的地寄存器的尺寸相同。在一些實施例中,寫屏蔽也具有不同的尺寸(8位、32位等)。另外,在一些實施例中,指令並不使用寫屏蔽的全部位(例如,僅使用最低有效的八位)。當然,valignd是指令的操作碼。通常,在指令中明確地定義每個操作數。可以在指令的「前綴」中定義數據元素的尺寸,諸如通過使用類似於之前所描述的「w」的數據粒度位的指示。在大多數實施例中,w將指示每個數據元素是32位或64位的。如果數據元素的尺寸是32位,並且源的尺寸是512位,則每個源中存在十六(16)個數據元素。

圖1描繪了align指令的示例性執行。在該示例中,存在兩個源,每個源具有16個數據元素。在大多數情況下,這些源中的一個是寄存器(對於該示例,源1101被處理為512位寄存器,諸如具有16個32位數據元素的zmm寄存器,然而,可以使用其它的數據元素和寄存器尺寸,諸如xmm和ymm寄存器以及16或64位數據元素)。另一個源103是寄存器或存儲器單元(在該示例中,源2為另一個源)。如果第二源是存儲器單元,則在大多數實施例中其在源的任何混合之前被置於臨時寄存器中。另外,存儲器單元的數據元素可在置於臨時寄存器中之前經過數據變換。數據103包括從a至p的十六個數據元素,並且數據103包括從q至af的十六個數據元素。

如圖所示,來自寄存器101和103的數據與第一數據寄存器101的最低有效數據元素串接105,a為串接數據105的最低有效數據元素。第二數據寄存器103的最低有效數據元素q緊跟著第一數據寄存器101的最高有效數據元素。串接數據元素105移位(對齊)三(指令的立即數值),這留下了來自原始源的數據元素d至af。當然,還可使用大端法(big-endian)方式,並且數據元素將向左移位相應的立即數值。

該經移位和串接的數據的最低有效數據元素(d至s)被寫入到指令的目的地寄存器中,直到在目的地寄存器中不存在更多的數據元素槽。在其它實施例中,最高有效數據元素被寫入目的地寄存器107中。該寫入可並行地或串行地完成。如圖所示,十六個最低有效數據元素被寫入目的地寄存器中,因其僅具有存儲該尺寸的十六個數據元素的空間。

圖2示出了相同的源數據和移位,但是使用屏蔽寄存器201的內容來確定經串接和移位的數據105中的哪些最低有效數據元素應當被寫入目的地寄存器中。在一些實施例中,該屏蔽寄存器是上文詳述的「k」屏蔽寄存器(k1-k7)。屏蔽寄存器顯示為0x878b。對於掩碼的存儲值「1」的每個位置,來自經串接和移位的數據105的相應數據元素被寫入目的地寄存器的相應位置上。例如,因為掩碼的位置「0」為「1」,則經移位和串接的數據元素中的相應數據元素位置「0」的值d被存儲到目的地寄存器的「0」位置上。對於掩碼的存儲值「0」的每個位置,目的地寄存器的相應數據元素不會被覆寫。例如,在位置「2」上,掩碼為「0」,因此目的地仍為dc,而不是被值f覆寫。儘管「1」被顯示為指示特定的數據元素位置應當被寫入目的地寄存器中並且「0」指示不進行該寫入,但是在其它實施例中使用相反的約定。另外,在一些實施例中,寫入最高有效數據元素,而不是最低有效數據元素。

圖3示出了相同的源數據和移位,但是使用屏蔽寄存器的內容來確定經串接和移位的數據105中的哪些最低有效數據元素應當被寫入目的地寄存器中。在該實例中,不使用全部的屏蔽位。這可能發生於例如具有64位數據元素和512位寄存器的一些實施例中。

圖4示出了通過在處理器中執行對齊指令而對齊來自兩個源的數據且將該對齊存儲到目的地位置上的方法的實施例。在401中,接收具有目的地操作數、第一和第二源操作數、偏移(立即數)值和掩碼操作數的對齊指令。目的地操作數和源操作數具有相同的尺寸。在一些實施例中,目的地操作數和源操作數的尺寸均為512位。然而,在其它實施例中,目的地操作數和源操作數可具有不相同的尺寸,諸如128位或256位。典型地,目的地操作數和第一源操作數均為寄存器,諸如上述矢量寄存器(xmm、ymm或zmm)中的一個。第二源操作數可以是寄存器或存儲器操作數。在一些實施例中,偏移是8位立即數。所接收到的掩碼可以是前述「k」寫屏蔽中的一個,或在一些實施例中,其可以是不同的寄存器或存儲器單元。

在403中對對齊指令進行解碼。根據指令的格式,可在該階段對各數據進行解釋,諸如,是否將要進行數據變換、寫入和檢索哪些寄存器、利用存儲器源操作數以及可能的偏移(如果包括的話)存取哪個存儲器地址,等等。

在405中對源操作數值進行取回/讀取。如果兩個源均為寄存器,則對那些寄存器進行讀取。如果源操作數中的一個或兩個為存儲器操作數,則取回與該操作數相關聯的數據元素。在一些實施例中,來自存儲器的數據元素被存儲到臨時寄存器中。

如果將要進行任何數據元素變換(諸如向上轉換、廣播、混合(swizzle)等),可以在407中進行。例如,來自存儲器的16位數據元素可被向上轉換成32位數據元素,或者數據元素可從一種模式混合成另一種模式(例如,從xyzwxyzwxyzw…xyzw混合成xxxxxxxxyyyyyyyyzzzzzzzzwwwwwwww)。

在409中執行對齊指令。該指令的執行使得第一和第二源操作數的數據元素串接,基於偏移將來自該串接數據的這些數據元素向右移位。在一些實施例中,第一源操作數數據元素是串接數據元素中的最低有效數據元素。在411中,經移位的串接數據中的一些數據元素可根據寫屏蔽寄存器的相應位而被存儲到目的地矢量寄存器中。儘管單獨地示出了409和411,但在一些實施例中,它們可以作為指令執行的一部分一起執行。

儘管上文在一種類型的執行環境中進行了闡述說明,但是易於修改以適應其它環境,諸如所詳述的有序環境和無序環境。

圖5示出了用於處理對齊指令的方法的實施例。在該實施例中,假設之前已經執行了操作401-407中的一些(如果不是全部),然而,為了避免使下文給出的細節不清晰,未示出這些操作。例如,未示出取出和解碼,也沒有示出操作數(源和寫屏蔽)取回。

在501中,串接第一和第二源的數據元素以形成待操作的較大「矢量」。例如,來自兩個源寄存器的數據被串接以使第一源的數據元素為較低有效位並且使第二源的數據元素為最高有效位,如圖1和圖2中所示。在一些實施例中,該較大的矢量為1024位。顯然,較大的矢量的該尺寸取決於源的尺寸。

在503中,第一和第二源的串接數據向右移位由指令的立即數值定義的數據元素的量。

可以在505中確定是否使用寫屏蔽。這是任選的,取決於基礎硬體體系結構的實現。例如,如果使用類似於上文詳述的k0的寫屏蔽寄存器,則將不使用掩碼。儘管k0是當其包括在指令中時可被寫入的寄存器,但是這表示不進行屏蔽(換言之,在所有的位位置上基本上為值「1」)。當然,在其它體系結構中,可以用作任何其它所期望的寄存器。

如果使用寫屏蔽,則對於寫屏蔽中的每個位位置,在507中確定該位位置是否指示第一和第二源的經移位的串接數據的相應元素將被存儲在目的地寄存器的相應位置上。在一些實施例中,串行地執行該確定和/或可能的稍後在511中的存儲,也就是說,對於第一位位置(即,k1[0])做出確定,然後對順序位位置進行評估。在其它實施例中,並行地執行該確定和/或可能的稍後在511中的存儲,也就是說,同時對於所有的位位置(即,k1[0]-k1[15])做出確定。另外,待評估的位位置的數量根據數據元素尺寸而變化。例如,在具有32位數據元素的512位實現中,對於該確定評估掩碼的十六個(16)位。在具有64位數據元素的512位實現中,僅對掩碼的八個(8)位進行評估。在該實例中,典型地對最低有效的八個(8)位進行評估,但是可以使用其它的約定。

當掩碼的位位置指示什麼都不應寫入到目的地寄存器的相應數據元素位置上時,在509中什麼都不寫入到目的地寄存器中。當掩碼的位位置指示經移位的串接數據的相應數據應當寫入到目的地寄存器的相應數據元素位置時,則在511中其被寫入到目的地寄存器的相應數據元素位置上。這種存儲裝置的示例顯示在圖2中。如果不使用掩碼,則在511中將經移位的串接數據的全部相應數據元素均存儲在目的地寄存器的相應數據元素位置。這種存儲裝置的示例顯示在圖1中。

一旦掩碼的最後一個位位置被視為已評估,或者可被寫的目的地中的全部數據元素位置已被評估,則方法結束。

圖6示出了用於處理對齊指令的方法的實施例。在該實施例中,假設之前已經執行了操作401-407中的一些(如果不是全部),然而,為了避免使下文給出的細節不清晰,沒有示出這些操作。例如,未示出取出和解碼,也沒有示出操作數(源和寫屏蔽)取回。

在601中將第一和第二源的數據元素串接以形成待操作的較大「矢量」。例如,來自兩個源寄存器的數據被串接以使第一源的數據元素為較低有效位並且使第二源的數據元素為最高有效,如圖1和圖2所示。在一些實施例中,該較大的矢量為1024位。顯然,較大矢量的該尺寸取決於源的尺寸。

在603中,第一和第二源的串接數據向右移位由指令的立即數值定義的數據元素的量。

還可以確定是否使用寫屏蔽(未示出)。這是任選的,取決於如之前詳述的基礎硬體體系結構的實現。如果不使用掩碼,則在605或607中不進行任何校驗。

對於寫屏蔽中的第一位位置,在605中確定該位位置是否指示第一和第二源的經移位的串接數據的相應元素將被存儲在目的地寄存器的相應位置上。如果掩碼的第一位位置指示什麼都不應寫入到目的地寄存器的相應數據元素位置上,則在609中什麼都不寫入到目的地寄存器中。如果掩碼的第一位位置指示經移位的串接數據的相應數據應被寫入到目的地寄存器的相應數據元素位置上,則在611中其被寫入到目的地寄存器的相應數據元素位置上。在圖2中示出了這種存儲的示例。

在613中,確定評估的寫屏蔽位置是否為寫屏蔽中的最後一個或者目的地的全部數據元素位置是否已經被填滿。如果為真,則操作結束。當例如數據元素尺寸為64位、目的地為512位並且寫屏蔽具有16位時,可能發生後者的情況。在該實例中,僅需要寫屏蔽中的8位。

如果不為真,則在615中寫屏蔽中的下一個位位置將被評估以確定其值。而且,在607等中評估位位置。一旦掩碼的最後一個位位置被視為已評估,或者可以寫入的目的地中的全部數據元素位置已被評估,則方法結束。

圖7示出了處理偽碼的對齊指令的方法的實施例。

程序典型地以順序方式存取存儲器。例如,在位於地址@處的第一個512位矢量處存取參考(a),在位於地址@+64個字節的第二個512位矢量處存取參考(b),並且在位於地址@+128個字節的第一個512位矢量處存取參考(c)。在該方案中,參考(a)被定位成跨越高速緩衝存儲行a和b,參考(b)被定位成跨越高速緩衝存儲行b和c,並且參考(c)被定位成跨越高速緩衝存儲行c和d。利用規律的負荷,高速緩衝存儲行b和c將被存取兩次,並且整個高速緩衝存儲行存取次數將為6(3×2)。

一般而言,高速緩衝存儲行埠是比寄存器埠更精確的資源。上文討論的對齊指令的實施例對寄存器執行數據對齊,而不是對高速緩衝存儲行執行對齊,因此,這種指令提供了性能增益。利用對齊指令,高速緩衝存儲行數據在寄存器中被對齊,並且通常僅有在每個矢量參考中取出的一個新的高速緩衝存儲行,而不是存取每一個高速緩衝存儲行兩次,僅讀取一次並且同時與高速緩衝存儲器存取對齊,平衡每個周期中一個矢量的吞吐量,而仍使用僅一個單存儲器埠。

上文所描述和具體實施的指令的實施例可以下文詳述的「一般矢量友好指令格式」來具體實施。在其它實施例中,不使用這樣的格式,而使用另一種指令格式,然而,以下對寫屏蔽寄存器、各種數據變換(混合、廣播等)、尋址等的描述通常適用於上文的指令的實施例的描述。另外,下文詳述了示例性的系統、體系結構和管線。上文的指令的實施例可在這樣的系統、體系結構和管線上執行,但是不限於所詳述的那些。

矢量友好指令格式是適合於矢量指令的指令格式(例如,存在專用於矢量運算的一些欄位)。儘管描述了通過矢量友好指令格式支持矢量運算和標量運算的實施例,但是可選的實施例僅使用矢量友好指令格式的矢量運算。

示例性的一般矢量友好指令格式-圖8a-b

圖8a-b為示出根據本發明的實施例的一般矢量友好指令格式及其指令模板的框圖。圖8a為示出根據本發明的實施例的一般矢量友好指令格式及其a類指令模板的框圖;而圖8b為示出根據本發明的實施例的一般矢量友好指令格式及其b類指令模板的框圖。具體地,為一般矢量友好指令格式800限定a類和b類指令模板,兩者均包括無儲器存取805指令模板和存儲器存取820指令模板。在矢量友好指令格式的背景下術語「一般」是指不與任何具體指令集相關聯的指令格式。儘管描述了矢量友好指令格式的指令在源自於寄存器(無存儲器存取805指令模板)或寄存器/存儲器(存儲器存取820指令模板)的矢量上操作的實施例,但本發明的替代實施例可支持這些中的僅一種。而且,儘管描述了存在加載且存儲矢量指令格式的指令的本發明的實施例,但可選的實施例代替地或另外地具有將矢量移入和移出寄存器(例如,從存儲器到寄存器,從寄存器到存儲器,在寄存器之間)的不同指令格式的指令。此外,儘管描述了支持兩類指令模板的本發明的實施例,但是替代的實施例可以僅支持這些中的一個或多於兩個。

儘管描述了矢量友好指令格式支持以下的本發明的實施例:具有32位(4位元組)或64位(8位元組)數據元素寬度(或尺寸)的64位元組矢量操作數長度(或尺寸)(並且因此,64位元組矢量由16個雙倍字尺寸的元素或可替代的8個四倍字尺寸的元素構成);具有16位(2位元組)或8位(1位元組)數據元素寬度(或尺寸)的64位元組矢量操作數長度(或尺寸);具有32位(4位元組)、64位(8位元組)、16位(2位元組)或8位(1位元組)數據元素寬度(或尺寸)的32位元組矢量操作數長度(或尺寸);以及具有32位(4位元組)、64位(8位元組)、16位(2位元組)、或8位(1位元組)數據元素寬度(或尺寸)的16位元組矢量操作數長度(或尺寸);但是可選的實施例可以支持具有更多、更少、或不同的數據元素寬度(例如,128位(16位元組)數據元素寬度)的更多、更少和/或不同的矢量操作數尺寸(例如,856位元組矢量操作數)。

圖8a中的a類指令模板包括:1)在無存儲器存取805指令模板內,示出了無存儲器存取、全取整控制型操作810指令模板以及無存儲器存取、數據變換型操作815指令模板;以及2)在存儲器存取820指令模板內,示出了存儲器存取、臨時825指令模板和存儲器存取、非臨時830指令模板。圖8b中的b類指令模板包括:1)在無存儲器存取805指令模板內,示出了無存儲器存取、寫屏蔽控制、部分取整控制型操作812指令模板和無存儲器存取、寫屏蔽控制、vsize型操作817指令模板;以及2)在存儲器存取820指令模板內,示出了存儲器存取、寫屏蔽控制827指令模板。

格式

一般矢量友好指令格式800包括在圖8a-b中所示出的次序列於下面的下列欄位。

格式欄位840—在該欄位中的具體值(指令格式標識符值)唯一地標識矢量友好指令格式,並且因此唯一地表示指令流中的矢量友好指令格式的指令的出現。因此,格式欄位840的內容將第一指令格式的指令的出現與其它指令格式的指令的出現區分開,從而允許將矢量友好指令格式引入具有其它指令格式的指令集中。因此,從該欄位無需用於僅具有一般矢量友好指令格式的指令集的意義上講,該欄位是任選的。

基礎操作欄位842—其內容將不同的基礎操作區分開。如本文稍後描述的,基礎操作欄位842可包括操作碼欄位和/或作為操作碼欄位的部分。

寄存器索引欄位844—其內容直接地或者通過地址生成來指定源和目的地操作數的位置,如它們在寄存器或存儲器中。這些包括從p×q(例如,32×1012)寄存器文件中選擇n個寄存器的足量的位。儘管在一個實施例中n可多達三個源和一個目的地寄存器,但是替代的實施例可支持更多或更少的源和目的地寄存器(例如,可以支持多達兩個源,其中這些源中的一個還充當目的地;可以支持多達三個源,其中這些源中的一個還充當目的地;可以支持多達兩個源和一個目的地)。儘管在一個實施例中p=32,但是替代實施例可以支持更多或更少的寄存器(例如,16)。儘管在一個實施例中q=1012位,但替代實施例可以支持更多或更少的位(例如,128、1024)。

修飾符欄位846—其內容將指定存儲器存取的一般矢量指令格式的指令的出現與不指定存儲器存取的一般矢量指令格式的那些指令的出現區分開;也就是說,區分無存儲器存取805指令模板和存儲器存取820指令模板。存儲器存取操作對存儲器層級進行讀和/或寫(在一些情況下,利用寄存器中的值來指定源和/或目的地地址),而無存儲器存取操作不這樣(例如,源和目的地均為寄存器)。儘管在一個實施例中該欄位還在三種不同方式之間選擇以執行存儲器地址計算,但是替代的實施例可以支持更多、更少或不同的方式來執行存儲器地址計算。

擴增操作欄位850—其內容對除了基礎操作之外執行多種不同操作中的哪一個進行區分。該欄位是上下文特定的。在本發明的一個實施例中,該欄位被分成類欄位868、α(alpha)欄位852和β(beta)欄位854。擴增操作欄位允許在單個指令而不是2個、3個或4個指令中執行共同組的操作。下文是使用擴增欄位850來減少所需指令數量的指令的一些示例(其術語稍後將在下文中進行更詳細的說明)。

其中,[rax]是用於地址生成的基址指針,並且其中{}表示數據操縱欄位所指定的轉換操作(下文將進行更加詳細的說明)。

標度欄位860—其內容允許對索引欄位的內容進行縮放以用於存儲器地址生成(例如,用於使用2標度*索引+基址的地址生成)。

位移欄位862a—其內容用作存儲器地址生成的部分(例如,用於使用2標度*索引+基址+位移的地址生成)。

位移因子欄位862b(注意,位移欄位862a直接並置在位移因子欄位862b之上表示使用一個或另一個)—其內容用作地址生成的部分;其指定要按存儲器存取的尺寸(n)縮放的位移因子,其中n為存儲器存取中的字節數量(例如,用於使用2標度*索引+基址+所縮放的位移的地址生成)。冗餘低階位被忽略,並且因此,位移因子欄位的內容乘以存儲器操作數的總尺寸(n),從而生成待用於計算有效地址的最終位移。n的值是通過處理器硬體在運行時間基於全操作碼欄位874(下文稍後說明)和如下文稍後說明的數據操縱欄位854c來確定的。從不用於無存儲器存取805指令模板和/或不同的實施例可僅實現兩個中的一個或不實現任一個的意義上講,位移欄位862a和位移因子欄位862b是任選的。

數據元素寬度欄位864—其內容對將使用多個數據元素寬度中的哪一個進行區分(在一些實施例中,對於所有指令;在其它實施例中,僅對於指令中的一些指令)。從如果僅支持一個數據元素寬度和/或利用操作碼的某方面來支持數據元素寬度則不需要該欄位的意義上講,該欄位是任選的。

寫屏蔽欄位870—其內容基於每個數據元素位置來控制目的地矢量操作數中的數據元素位置是否反映基礎操作和擴增操作的結果。a類指令模板支持合併-寫屏蔽,而b類指令模板支持合併-寫屏蔽以及歸零-寫屏蔽兩者。當合併時,矢量掩碼允許目的地中的任何元素集合被保護以免在任何操作(由基礎操作和擴增操作指定的)執行期間更新;在另一實施例中,保留相應屏蔽位具有0的目的地的每個元素的舊值。相反,當歸零時,矢量掩碼允許目的地中的任何元素集合在任何操作(由基礎操作和擴增操作指定的)執行期間被歸零;在一個實施例中,當相應的屏蔽位具有0值時,目的地的元素被設定為0。該功能的子集是控制所執行的操作的矢量長度(即,所修改的元素從第一個到最後一個的跨度)的能力;然而,被修改的元素不必是連續的。因此,寫屏蔽欄位870允許部分矢量操作,包括加載、存儲、算術運算、邏輯等。而且,該屏蔽能夠用於故障抑制(即,通過屏蔽目的地的數據元素位置來防止接收可能/將要引起故障的任何操作的結果,例如,假設存儲器中的矢量跨過了頁面邊界並且第一頁面而不是第二頁面將導致頁面故障,如果通過寫屏蔽來屏蔽位於第一頁面中的矢量的全部數據元素,則能夠忽略該頁面故障)。此外,寫屏蔽允許包含某些類型的條件語句的「矢量化循環」。儘管描述了其中寫屏蔽欄位870的內容選擇包含待使用的寫屏蔽的多個寫屏蔽寄存器中的一個(並且因此,寫屏蔽欄位870的內容間接地標識了待執行的該屏蔽)的本發明的實施例,但是替代的實施例代替地或者另外允許寫屏蔽欄位870的內容直接指定待執行的屏蔽。此外,歸零允許當在如下情況下時的性能提高:1)在目的地操作數不也是源的指令(還稱為非三元指令)上使用寄存器重命名,因為在寄存器重命名管線階段中,目的地不再是隱式源(來自當前目的地寄存器的數據元素無需複製到重命名後的目的地寄存器,或者連同操作一起以某種方式攜載,因為不是操作結果的任何數據元素(任何被屏蔽的數據元素)將被歸零);以及2)在寫回階段中,因為零正在被寫入。

立即數欄位872—其內容允許立即數的具體說明。從其不存在於不支持立即數的一般矢量友好格式的實現中並且其不存在於不使用立即數的指令中的意義上講,該欄位是任選的。

指令模板類選擇

類欄位868—其內容區分不同類的指令。參考圖8a-b,該欄位的內容在a類和b類指令之間進行選擇。在圖8a-b中,圓角方形用於表示具體值存在於欄位中(例如,分別在圖8a-b中的類欄位868的a類868a和b類868b)。

a類的無存儲器存取指令模板

在a類的無存儲器存取805指令模板的情況下,α欄位852被解釋為rs欄位852a,其內容區分待執行不同擴增操作類型中的哪一個(例如,對於無存儲器存取、取整型操作810和無存儲器存取、數據變換型操作815指令模板,分別指定取整852a.1和數據變換852a.2);而β欄位854區分待執行指定類型中的哪些。在圖8中,圓角方框用於指示存在特定值(例如,修飾符欄位846中的無存儲器存取846a;用於α欄位852/rs欄位852a的取整852a.1和數據變換852a.2)。在無存儲器存取805指令模板中,不存在標度欄位860、位移欄位862a和位移標度欄位862b。

無存儲器存取指令模板-全取整控制型操作

在無存儲器存取全取整控制型操作810指令模板中,β欄位854被解釋為取整控制欄位854a,其內容提供了靜態取整。儘管在本發明的所述實施例中,取整控制欄位854a包括抑制全部浮點異常(sae)欄位856和取整操作控制欄位858,可選的實施例可以支持這些構思,並且可以將這些構思編碼成相同的欄位或者僅具有這些構思/欄位中的一個或另一個(例如,可以僅具有取整操作控制欄位858)。

sae欄位856—其內容對是否禁用異常事件報告進行區分;當sae欄位856的內容指示啟用抑制時,既定的指令不對任何類型的浮點異常標記進行報告並且不喚起任何浮點異常處理程序。

取整操作控制欄位858—其內容對執行一組取整操作中的哪一個進行區分(例如,上取整、下取整、向零取整和就近取整)。因此,取整操作控制欄位858允許基於每個指令來改變取整模式,並且因此當需要時尤其有用。在處理器包括用於指定取整模式的控制寄存器的本發明的一個實施例中,取整操作控制欄位850的內容覆蓋該寄存器值(能夠選擇取整模式,而不必在這樣的控制寄存器上執行保存-修改-恢復是有益的)。

無存儲器存取指令模板-數據變換型操作

在無存儲器存取數據變換型操作815指令模板中,β欄位854被解釋為數據變換欄位854b,其內容對待執行多個數據變換中的哪一個進行區分(例如,無數據變換、混合、廣播)。

a類的存儲器存取指令模板

在a類的存儲器存取820指令模板的情況下,α欄位852被解釋為驅逐(eviction)暗示欄位852b,其內容對將待使用哪一個驅逐暗示進行區分(在圖8a中,分別為存儲器存取、臨時825指令模板和存儲器存取、非臨時830指令模板指定臨時852b.1和非臨時852b.2),而β欄位854被解釋為數據操縱欄位854c,其內容對待執行多個數據操縱操作(也稱為基元)中的哪一個進行區分(例如,無操縱;廣播;源的向上轉換;以及目的地的向下轉換)。存儲器存取820指令模板包括標度欄位860,並且任選地包括位移欄位862a或位移標度欄位862b。

矢量存儲器指令通過轉換支持來執行來自存儲器的矢量加載以及到存儲器的矢量存儲。如同常規的矢量指令,矢量存儲器指令以逐數據元素(element-wise)的方式傳遞數據至存儲器/從存儲器傳遞數據,通過被選為寫屏蔽的矢量掩碼的內容來規定實際上傳遞的元素。在圖8a中,圓角方形用於表示在欄位中存在特定值(例如,用於修飾符欄位846的存儲器存取846b;用於α欄位852/驅逐暗示欄位852b的臨時852b.1和非臨時852b.2)。

存儲器存取指示模板-臨時

臨時數據是可能足夠迅速地被重新使用以受益於高速緩衝存儲的數據。然而,這是暗示,並且不同的處理器可以不同的方式來實現,包括完全忽略暗示。

存儲器存取指令模板-非臨時

非臨時數據是不太可能足夠迅速地被重新使用而受益於1級高速緩衝存儲器的高速緩存並且應當給予驅逐的優選級的數據。然而,這是暗示,並且不同的處理器可以不同的方式來實現,包括完全忽略暗示。

b類的指令模板

在b類的指令模板的情況下,α欄位852被解釋為寫屏蔽控制(z)欄位852c,其內容對寫屏蔽欄位870所控制的寫屏蔽是否應當合併或歸零進行區分。

b類的無存儲器存取指令模板

在b類的無存儲器存取805指令模板的情況下,β欄位854的部分被解釋為rl欄位857a,其內容對待執行不同擴增操作類型中的哪一種進行區分(例如,分別為無存儲器存取、寫屏蔽控制、部分取整控制型操作812指令模板和無存儲器存取、寫屏蔽控制、矢量長度(vsize)型操作817指令模板指定取整857a.1和vsize857a.2),而β欄位854的其餘部分對待執行指定類型的哪些操作進行區分。在圖8b中,圓角方框用於指示存在特定值(例如,修飾符欄位846中的無存儲器存取846a;用於rl欄位857a的取整857a.1和vsize857a.2)。在無存儲器存取805指令模板中,不存在標度欄位860、位移欄位862a和位移標度欄位862b。

無存儲器存取指令模板—寫屏蔽控制、部分取整控制型操作

在無存儲器存取、寫屏蔽控制、部分取整控制型操作810指令模板中,β欄位854的其餘部分被解釋為取整操作欄位859a,並且異常事件報告被禁用(既定指令不報告任何類型的浮點異常標記並且不喚起任何浮點異常處理程序)。

取整操作控制欄位859a-恰如取整操作控制欄位858一樣,其內容對執行一組取整操作中的哪一個進行區分(例如,上取整、下取整、向零取整和就近取整)。因此,取整操作控制欄位859a允許在每個指令的基礎上改變取整模式,並且因此在需要時尤其有用。在處理器包括用於指定取整模式的控制寄存器的本發明的一個實施例中,取整操作控制欄位850的內容覆蓋該寄存器值(能夠選擇取整模式,而不必在這樣的控制寄存器上執行保存-修改-恢復是有益的)。

無存儲器存取指令模板—寫屏蔽控制、vsize型操作

在無存儲器存取、寫屏蔽控制、vsize型操作817指令模板中,β欄位854的其餘部分被解釋為矢量長度欄位859b,其內容對待執行多個數據矢量長度中的哪一個進行區分(例如,128、856、或1012位元組)。

b類的存儲器存取指令模板

在a類的存儲器存取820指令模板的情況下,β欄位854的部分被解釋為廣播欄位857b,其內容對是否執行廣播型數據操縱操作進行區分,而β欄位854的其餘部分被解釋為矢量長度欄位859b。存儲器存取820指令模板包括標度欄位860,且任選的包括位移欄位862a或位移標度欄位862b。

關於欄位的附加注釋

關於一般矢量友好指令格式800,示出了全操作碼欄位874,其包括格式欄位840、基礎操作欄位842和數據元素寬度欄位864。儘管示出了全操作碼欄位874包括所有這些欄位的一個實施例,但是在不支持其全部的實施例中全操作碼欄位874不包括全部這些欄位。全操作碼欄位874提供了操作代碼。

擴增操作欄位850、數據元素寬度欄位864和寫屏蔽欄位870允許在每指令基礎上以一般矢量友好指令格式來指定這些特徵。

寫屏蔽欄位和數據元素寬度欄位的組合形成了類型確定的(typed)指令,因為它們允許基於不同的數據元素寬度來應用掩碼。

指令格式要求相對少量的位,因為其基於其它欄位的內容而為不同目的重新使用不同的欄位。例如,一個視點在於,修飾符欄位的內容在圖8a-b上的無存儲器存取805指令模板和圖8a-b上的存儲器存取8250指令模板之間進行選擇;而類欄位868的內容在圖8a的指令模板810/815和圖8b的指令模板812/817之間的那些無存儲器存取805指令模板內進行選擇;而類欄位868的內容在圖8a的指令模板825/830和圖8b的827之間的那些存儲器存取820指令模板內進行選擇。從另一視點看,類欄位868的內容在圖8a和圖8b的各自的a類和b類指令模板之間進行選擇;而修飾符欄位的內容在圖8a的指令模板805和820之間的那些a類指令模板內進行選擇;而修飾符欄位的內容在圖8b的指令模板805和820之間的那些b類指令模板內進行選擇。在類欄位的內容表示a類指令模板的情況下,修飾符欄位846的內容選擇α欄位852(在rs欄位852a和eh欄位852b之間)的解釋。通過有關的方式,修飾符欄位846和類欄位868的內容選擇是否將α欄位解釋為rs欄位852a、eh欄位852b或寫屏蔽控制(z)欄位852c。在類欄位和修飾符欄位表示a類無存儲器存取操作的情況下,擴增欄位的β欄位的解釋基於rs欄位的內容而改變;而在類欄位和修飾符欄位表示b類無存儲器存取操作的情況下,β欄位的解釋取決於rl欄位的內容。在類欄位和修飾符欄位表示a類存儲器存取操作的情況下,擴增欄位的β欄位的解釋基於基礎操作欄位的內容而改變;而在類欄位和修飾符欄位表示b類存儲器存取操作的情況下,擴增欄位的β欄位的廣播欄位857b的解釋基於基礎操作欄位的內容而改變。因此,基礎操作欄位、修飾符欄位和擴增操作欄位的組合允許指定甚至更加多樣的擴增操作。

在a類和b類內發現的各種指令模板在不同情形下是有益的。當由於性能原因而期望歸零-寫屏蔽或較小矢量長度時,a類是有用的。例如,當使用重命名時,歸零允許避免虛假相關性,因為我們不再需要與目的地人為地合併;作為另一示例,當用矢量掩碼來仿真較短的矢量尺寸時,矢量長度控制使得存儲-加載轉送問題變得容易。當期望如下情形時b類是有用的:1)在使用取整模式控制的同時,允許浮點異常(即,當sae欄位的內容指示無時);2)能夠使用向上轉換、混合、交換和/或向下轉換;3)在圖形數據類型上操作。例如,向上轉換、混合、交換、向下轉換和圖形數據類型減少了當用不同格式的源工作時所要求的指令數量;作為另一示例,允許異常的能力提供了定向的取整模式的完全ieee符合。

示例性的特定矢量友好指令格式

圖9a-c示出了根據本發明的實施例的示例性的特定矢量友好指令格式。圖9a-c示出了特定矢量友好指令格式900,其在它指定欄位的位置、尺寸、解釋和順序以及用於那些欄位中的一些欄位的值的意義上是特定的。特定矢量友好指令格式900可用於擴展x86指令集,並且因此一些欄位與現有的x86指令集及其擴展(例如,avx)中使用的那些欄位相似或相同。該格式保持與具有擴展的現有x86指令集的前綴編碼欄位、真實操作碼字節欄位、modr/m欄位、sib欄位、位移欄位和立即數欄位一致。圖示了圖9a-c的欄位映射到圖8a-b中的欄位。

應當理解的是,儘管為了說明的目的在一般矢量友好指令格式800的背景下參照特定矢量友好指令格式900對本發明的實施例進行了說明,但本發明不限於特定矢量友好指令格式900,除了被主張的場合之外。例如,一般矢量友好指令格式800構思了用於各種欄位的各種可能的尺寸,而特定矢量友好指令格式900被顯示為具有特定尺寸的欄位。通過具體示例,儘管數據元素寬度欄位864被圖示為特定矢量友好指令格式900的一位欄位,但本發明不受此限制(即,一般矢量友好指令格式800構思了數據元素寬度欄位864的其它尺寸)。

格式-圖9a-c

一般矢量友好指令格式800包括按圖9a-c中所示的次序列於下文的下列欄位。

evex前綴(字節0-3)

evex前綴902-以四字節形式進行編碼。

格式欄位840(evex字節0,位[7:0])—第一字節(evex字節0)為格式欄位840,並且其包含0x62(在本發明的一個實施例中用於區分矢量友好指令格式的唯一值)。

第二-第四字節(evex字節1-3)包括提供特定能力的多個位欄位。

rex欄位905(evex字節1,位[7-5])—由evex.r位欄位(evex字節1,位[7]-r)、evex.x位欄位(evex字節1,位[6]-x)和857bex字節1,位[5]-b)組成。evex.r、evex.x和evex.b位欄位提供了與相應的vex位欄位相同的功能,並且利用1s補碼形式進行編碼,即,zmm0被編碼為1111b,zmm15被編碼為0000b。指令的其它欄位對寄存器索引的較低三位進行編碼,這是本領域公知的(rrr、xxx和bbb),以使rrrr、xxxx、和bbbb可通過添加evex.r、evex.x和evex.b來形成。

rex欄位910—其為rex欄位910的第一部分,並且是用於對擴增的32寄存器集的較高16或較低16進行編碼的evex.r』位欄位(evex字節1,位[4]-r』)。在本發明的一個實施例中,該位連同如下文所示出的其它位一起以位反轉格式存儲以與bound指令區分開(以公知的x8632位模式),其真實操作碼字節為62,但是在modr/m欄位(下面描述)中不接受mod欄位中的值11;本發明的可替代實施例不以反轉格式來存儲該位以及其它示於下文的位。值1用於對較低16個寄存器進行編碼。換言之,r』rrrr是通過將evex.r』、evex.r和來自其它欄位的其它rrr組合而形成的。

操作碼映射欄位915(evex字節1,位[3:0]-mmmm)—其內容對隱含的前置操作碼字節(0f、0f38或0f3)進行編碼。

數據元素寬度欄位864(evex字節2,位[7]-w)—由記號evex.w表示。evex.w用於限定數據類型的粒度(尺寸)(32位數據元素或64位數據元素)。

evex.vvvv920(evex字節2,位[6:3]-vvvv)—evex.vvvv的作用可包括下列:1)evex.vvvv對以反轉(1s補碼)形式指定的第一源寄存器操作數進行編碼,並且對於具有2個或更多個源操作數的指令有效;2)evex.vvvv對以用於一定矢量移位的1s補碼形式指定的目的地寄存器操作數進行編碼;或者3)evex.vvvv不對任何操作數進行編碼,欄位被保留並且應當包含1111b。因此,evex.vvvv欄位920對以反轉(1s補碼)形式存儲的第一源寄存器說明符的4個低階位進行編碼。根據指令,額外的不同evex位欄位用於將說明符尺寸擴展至32個寄存器。

evex.u868類欄位(evex字節2,位[2]-u)—如果evex.u=0,則其表示a類或evex.u0;如果evex.u=1,則其表示b類或evex.u1。

前綴編碼欄位925(evex字節2,位[1:0]-pp)—為基礎操作欄位提供了附加位。除了為evex前綴格式的傳統sse指令提供支持之外,這還具有壓縮simd前綴的益處(不是需要字節來表達simd前綴,evex前綴僅需要2個位)。在一個實施例中,為了支持使用傳統格式和evex前綴格式的simd前綴(66h、f2h、f3h)的傳統sse指令,這些傳統simd前綴被編碼到simd前綴編碼欄位中;並且在提供給解碼器的pla之前在運行時間被擴展成傳統simd前綴(因此,pla能夠執行這些傳統指令的傳統和evex格式,而無需進行修改)。儘管較新的指令可將evex前綴編碼欄位的內容直接用作操作碼擴展,一些實施例以相似方式擴展以確保一致性,但是允許由這些傳統simd前綴指定不同的含義。可選的實施例可以重新設計pla以支持2位simd前綴編碼,並且因此不需要擴展。

α欄位852(evex字節3,位[7]-eh;也稱為evex.eh、evex.rs、evex.rl、evex.寫屏蔽控制、以及evex.n;還可由α表示)—如之前所述,該欄位是上下文特定的。本文稍後將提供進一步的描述。

β欄位854(evex字節3,位[6:4]-sss;也稱為evex.s2-0、evex.r2-0、evex.rr1、evex.ll0、evex.llb;還由可由βββ表示)—如之前所述,該欄位是上下文特定的。本文稍後將提供進一步的描述。

rex』欄位910—這是rex』欄位的其餘部分並且是evex.v』位欄位(evex字節3,位[3]-v』),其可用於對擴展的32寄存器集的較高16或較低16進行編碼。該位以位反轉格式存儲。值1用於對較低16個寄存器進行編碼。換言之,v』vvvv是通過將evex.v』、evex.vvvv組合而形成的。

寫屏蔽欄位870(evex字節3,位[2:0]-kkk)—其內容指定寫屏蔽寄存器中的寄存器的索引,如之前所描述的。在本發明的一個實施例中,特定值evex.kkk=000具有特殊行為,其暗示沒有寫屏蔽用於特定指令(這可多種方式來實現,包括使用硬連線到全1的寫屏蔽或繞過屏蔽硬體的硬體)。

真實操作碼欄位930(字節4)

這還稱為操作碼字節。操作碼的一部分在該欄位中被指定。

modr/m欄位940(字節5)

修飾符欄位846(modr/m.mod,位[7-6]-mod欄位942)—如之前所述,mod欄位942的內容在存儲器存取操作和無存儲器存取操作之間進行區分。本文稍後將對該欄位進行進一步說明。

modr/m.reg欄位944,位[5-3]—modr/m.reg欄位的作用能夠被概述為如下兩種情況:modr/m.reg對目的地寄存器操作數或源寄存器操作數進行編碼,或者modr/m.reg被處理為操作碼擴展且不用於對任何指令操作數進行編碼。

modr/m.r/m欄位946,位[2-0]—modr/m.r/m欄位的作用可包括下述情況:modr/m.r/m對參考存儲器地址的指令操作數進行編碼,或者modr/m.r/m對目的地寄存器操作數或源寄存器操作數進行編碼。

標度、索引、基礎(sib)字節(字節6)

標度欄位860(sib.ss,位[7-6]—如之前所述,標度欄位860的內容用於存儲器地址生成。本文稍後將對該欄位進行進一步說明。

sib.xxx954(位[5-3]和sib.bbb956(位[2-0])—之前關於寄存器索引xxxx和bbbb提到了這些欄位的內容。

位移字節(字節7或字節7-10)

位移欄位862a(字節7-10)—當mod欄位942包含10時,字節7-10是位移欄位862a,並且其作用與傳統32位位移(disp32)相同並且按字節粒度工作。

位移因子欄位862b(字節7)—當mod欄位942包含01時,字節7是位移因子欄位862b。該欄位的位置與按字節粒度工作的傳統x86指令集8位位移(disp8)的位置相同。因為disp8是符號擴展的,所以其僅能夠在-128和127位元組偏移之間進行尋址;按照64位元組高速緩衝存儲行,disp8使用能夠被設定為僅四個實際可用的值-128、-64、0和64的8個位;因為通常需要更大的範圍,所以使用disp32;然而,disp32需要4個字節。與disp8和disp32相反,位移因子欄位862b是disp8的重新解釋;當使用位移因子欄位862b時,實際的位移由位移因子欄位的內容乘以存儲器操作數存取的尺寸(n)來確定。這種類型的位移被稱為disp8*n。這減少了平均指令長度(所使用的單個字節用於位移,但是具有更大的範圍)。這種壓縮位移基於如下假設:有效位移是存儲器存取的粒度的倍數,並且因此,無需對地址偏移的冗餘低階位進行編碼。換言之,位移因子欄位862b替代傳統x86指令集8位位移。因此,位移因子欄位862b以與x86指令集8位位移相同的方式進行編碼(因此,modrm/sib編碼規則不變),僅除了disp8被過載為disp8*n。換言之,編碼規則或編碼長度無變化,而僅僅是硬體對位移值的解釋發生了變化(這需要按照存儲器操作數的尺寸縮放位移以獲得逐字節地址偏移)。

立即數

立即數欄位872如之前所描述的那樣操作。

示例性的寄存器體系結構-圖10

圖10為根據本發明的一個實施例的寄存器體系結構1000的框圖。寄存器體系結構的寄存器文件和寄存器列於下面:

矢量寄存器文件1010—在圖示的實施例中,存在1012位寬的32個矢量寄存器;這些寄存器被稱為zmm0至zmm31。較低16個zmm寄存器的較低階的856位疊加在寄存器ymm0-16之上。較低16個zmm寄存器的較低階的128位(ymm寄存器的較低階的128位)疊加在寄存器xmm0-15之上。特定矢量友好指令格式900如下表中所圖示的那樣在這些疊加的寄存器文件上操作。

換言之,矢量長度欄位859b在最大長度和一個或多個其它較短長度之間選擇,其中每個這樣的較短長度為前一長度的一半;並且不具有矢量長度欄位859b的指令模板在最大矢量長度上操作。此外,在一個實施例中,特定矢量友好指令格式900的b類指令模板在封包的或標量單/雙精度浮點數據和封包的或標量整數數據上操作。標量操作是在zmm/ymm/xmm寄存器中的最低階數據元素位置上執行的操作;更高階數據元素位置保持與它們在該指令之前相同或者根據實施例進行歸零。

寫屏蔽寄存器1015—在圖示的實施例中,存在8個寫屏蔽寄存器(k0至k7),每個的尺寸為64位。如之前所述,在本發明的一個實施例中,矢量屏蔽寄存器k0不能用作寫屏蔽;當通常表示k0的編碼用於寫屏蔽時,其選擇0xffff的硬接線寫屏蔽,有效地對該指令禁用寫屏蔽。

多媒體擴展控制狀態寄存器(mxcsr)1020—在圖示的實施例中,該32位寄存器提供了在浮點運算中使用的狀態位和控制位。

通用寄存器1025—在圖示的實施例中,存在十六個64位通用寄存器,其連同現有的x86尋址模式一起用於對存儲器操作數進行尋址。這些寄存器按名稱rax、rbx、rcx、rdx、rbp、rsi、rdi、rsp和r8至r15進行參考。

擴展標記(eflags)寄存器1030—在圖示的實施例中,該32位寄存器用於記錄許多指令的結果。

浮點控制字(fcw)寄存器1035和浮點狀態字(fsw)寄存器1040—在圖示的實施例中,這些寄存器由x87指令集擴展使用來在fcw情況下設定取整模式、異常掩碼和標記,並且在fsw的情況下跟蹤異常。

標量浮點堆棧寄存器文件(x87堆棧)1045,其又名mmx封包整數平面寄存器文件1050—在圖示的實施例中,x87堆棧為利用x87指令集擴展對32/64/80位浮點數據執行標量浮點操作的八元素堆棧;而mmx寄存器用於對64位封包整數數據執行操作,以及為在mmx和xmm寄存器之間執行的一些操作保持操作數。

段寄存器1055—在圖示的實施例中,存在六個16位寄存器,其用於存儲分段地址生成所使用的數據。

rip寄存器1065—在圖示的實施例中,該64位寄存器存儲指令指針。

本發明的替代實施例可以使用更寬或更窄的寄存器。另外,本發明的可替代實施例可以使用更多、更少、或不同的寄存器文件和寄存器。

示例性的有序處理器體系結構—圖11a-11b

圖11a-11b圖示了示例性的有序處理器體系結構的框圖。圍繞擴增有寬矢量處理器(vpu)的有序cpu核心的多個實例來設計這些示例性的實施例。核心通過高帶寬互連網絡與某些固定功能邏輯、存儲器i/o接口和其它必要的i/o邏輯進行通信,取決於el3t應用。例如,該實施例實現為獨立式gpu通常包括pci總線。

圖11a是根據本發明的實施例的單cpu核心連同其與片上互連網絡1102的連接及其2級(l2)高速緩衝存儲器1104的本地子集的框圖。指令解碼器1100支持帶有包括特定矢量指令格式900的擴展的x86指令集。儘管在本發明的一個實施例中(為了簡化設計),標量單元1108和矢量單元1110使用單獨的寄存器集(分別是標量寄存器1112和矢量寄存器1114),並且在它們之間傳遞的數據被寫入存儲器並且然後從1級(l1)高速緩衝存儲器1106中讀回,但是本發明的替代實施例可以使用不同的方法(例如,使用單個寄存器集或者包括允許數據在兩個寄存器文件之間傳遞的通信路徑,而不進行寫入和讀回)。

l1高速緩衝存儲器1106允許低時延存取高速緩衝存儲器的標量和矢量單元。連同矢量友好指令格式的load-op指令,這表示能夠有點類似於擴展寄存器文件來處理l1高速緩衝存儲器1106。這顯著地提高了許多算法的性能,尤其是利用驅逐暗示欄位852b。

l2高速緩衝存儲器1104的本地子集是被劃分成單獨的本地子集的全局l2高速緩衝存儲器的一部分,每個cpu核心各一個本地子集。每個cpu具有通往其l2高速緩衝存儲器1104的自身本地子集的直接存取路徑。由cpu核心讀取的數據被存儲在其l2高速緩衝存儲器子集1104中,並且能夠與存取其自身局部l2高速緩衝存儲器子集的其它cpu並行地被快速地存取。由cpu核心寫入的數據被存儲在其自身的l2高速緩衝存儲器子集1104中,並且如果有必要的話從其它子集中清除。環形網絡確保共享數據的一致性。

圖11b是根據本發明的實施例的圖11a中的cpu核心的部分的分解視圖。圖11b包括l1高速緩衝存儲器1104的l1數據高速緩衝存儲器1106a部分,以及關於矢量單元1110和矢量寄存器1114的更多細節。具體地,矢量單元1110是16-寬矢量處理單元(vpu)(參見16-寬alu1128),其執行整數、單精度浮點和雙精度浮點指令。vpu支持用混合單元1120混合寄存器輸入、用數字轉換單元1122a-b進行數字轉換、以及在存儲器輸入上用複製單元1124進行複製。寫屏蔽寄存器1126允許預測作為結果的矢量寫入。

寄存器數據能夠以多種方式進行混合,例如,支持矩陣乘法。來自存儲器的數據能夠跨越vpu通道而被複製。這是圖形和非圖形並行數據處理的共同操作,顯著地提高了高速緩衝存儲效率。

環形網絡是雙向的,以允許諸如cpu核心、l2高速緩衝存儲器和其它邏輯塊的代理在晶片內彼此通信。每個環形數據路徑在每個方向上為1012位寬。

示例性的無序體系結構—圖12

圖12是示出根據本發明的實施例的示例性的無序體系結構的框圖。具體地,圖12示出了公知的示例性無序體系結構,其已被修改而併入了矢量友好指令格式及其執行。在圖12中,箭頭表示在兩個或更多個單元之間的耦合,並且箭頭的方向指示在那些單元之間的數據流方向。圖12包括前端單元1205,其與執行引擎單元1210和存儲器單元1215耦合;執行引擎單元1210進一步與存儲器單元1215耦合。

前端單元1205包括1級(l1)分支預測單元1220,其與2級(l2)分支預測單元1222耦合。l1和l2分支預測單元1220和1222與l1指令高速緩衝存儲單元1224耦合。l1指令高速緩衝存儲單元1224與指令轉換後援緩衝器(tlb)1226耦合,指令轉換後援緩衝器1226進一步與指令取回和預解碼單元1228耦合。指令取回和預解碼單元1228與指令隊列單元1230耦合,指令隊列單元1230進一步與解碼單元1232耦合。解碼單元1232包括複雜解碼器單元1234和三個簡單解碼器單元1236、1238和1240。解碼單元1232包括微代碼rom單元1242。解碼單元1232可如前所述在解碼階段部分中那樣操作。l1指令高速緩衝存儲單元1224進一步與存儲器單元1215中的l2高速緩衝存儲單元1248耦合。指令tlb單元1226進一步與存儲器單元1215中的第二級tlb單元1246耦合。解碼單元1232、微代碼rom單元1242和循環流探測器單元1244各自與執行引擎單元1210中的重命名/分配器單元1256耦合。

執行引擎單元1210包括重命名/分配器單元1256,重命名/分配器單元1256與引退單元(retirementunit)1274和統一調度器單元1258耦合。引退單元1274進一步與執行單元1260耦合併且包括重排序緩衝單元1278。統一調度器單元1258進一步與物理寄存器文件單元1276耦合,物理寄存器文件單元1276與執行單元1260耦合。物理寄存器文件單元1276包括矢量寄存器單元1277a、寫屏蔽寄存器單元1277b、和標量寄存器單元1277c;這些寄存器單元可以提供矢量寄存器1010、矢量屏蔽寄存器1015、以及通用寄存器1025;並且物理寄存器文件單元1276可以包括未示出的附加寄存器文件(例如,標量浮點堆棧寄存器文件1045,又名mmx封包整數平面寄存器文件1050)。執行單元1260包括三個混合標量和矢量單元1262、1264和1272;加載單元1266;存儲地址單元1268;存儲數據單元1270。加載單元1266、存儲地址單元1268和存儲數據單元1270各自進一步與存儲器單元1215中的數據tlb單元1252耦合。

存儲器單元1215包括與數據tlb單元1252耦合的第二級tlb單元1246。數據tlb單元1252與l1數據高速緩衝存儲單元1254耦合。l1數據高速緩衝存儲單元1254與l2高速緩衝存儲單元1248進一步耦合。在一些實施例中,l2高速緩衝存儲單元1248進一步與存儲器單元1215內部和/或外部的l3和更高的高速緩衝存儲單元1250耦合。

通過舉例的方式,示例性的無序體系結構可以實現如下的過程管線8200:1)指令取回和預解碼單元1228執行取回和長度解碼階段;2)解碼單元1232執行解碼階段;3)重命名/分配器單元1256執行分配階段和重命名階段;4)統一調度器1258執行調度階段;5)物理寄存器文件單元1276、重排序緩衝單元1278和存儲器單元1215執行寄存器讀取/存儲器讀取階段;執行單元1260執行執行/數據變換階段;6)存儲器單元1215和重排序緩衝單元1278執行寫回/存儲器寫入階段1960;7)引退單元1274執行rob讀取階段;8)各個單元可在異常處理階段中被涉及;以及9)引退單元1274和物理寄存器文件單元1276執行提交階段。

示例性的單核心和多核心處理器—圖17

圖17是根據本發明的實施例的帶有集成存儲器控制器和圖形的單核心處理器和多核心處理器1700的框圖。圖17中的實線框示出了帶有單核心1702a、系統代理1710、一組一個或多個總線控制器單元1716的處理器1700,而虛線框的任選添加示出了帶有多個核心1702a-n、系統代理單元1710中的一組一個或多個集成存儲器控制器單元1714、以及集成圖形邏輯1708的可選處理器1700。

存儲器層級包括核心內的一級或多級高速緩衝存儲器、一組或一個或多個共享高速緩衝存儲單元1706以及與一組集成存儲器控制器單元1714耦合的外部存儲器(未顯示)。這組共享高速緩衝存儲單元1706可包括一個或多個中級高速緩衝存儲器,諸如2級(l2)、3級(l3)、4級(l4)或其它級的高速緩衝存儲器、最後一級高速緩衝存儲器(llc)、和/或其組合。儘管在一個實施例中,基於環的互連單元1712將集成圖形邏輯1708、一組共享高速緩衝存儲單元1706和系統代理單元1710互連,可選的實施例可以使用任何數量的用於將這些單元互連的公知技術。

在一些實施例中,核心1702a-n中的一個或多個能夠為多線程的。系統代理1710包括協調並操作核心1702a-n的那些部件。系統代理單元1710可包括例如功率控制單元(pcu)和顯示單元。pcu可以是或包括調整核心1702a-n和集成圖形邏輯1708的功率狀態所需要的邏輯和部件。顯示單元用於驅動一個或多個外部連接的顯示器。

從體系結構和/或指令集方面看,核心1702a-n可以是同類的或異構的。例如,核心1702a-n中的一些可以是有序的(例如,類似於圖11a和圖11b中所示的),而其它核心是無序的(例如,類似於圖12中所示的)。作為另一示例,核心1702a-n中的兩個或更多個可以能夠執行相同的指令集,而其它核心可能夠僅執行該指令集的子集或不同的指令集。至少一個核心能夠執行本文所描述的矢量友好指令格式。

處理器可以是通用處理器,諸如可從santaclara,calif的英特爾公司獲得的coretmi3、i5、i7、2duo和quad、xeontm、或itaniumtm處理器。可選地,處理器可以來自其它公司。處理器可以是專用處理器,例如網絡或通信處理器,壓縮引擎、圖形處理器、協同處理器、嵌入式處理器等等。處理器可在一個或多個晶片上實現。處理器1700可以利用例如bicmos、cmos或nmos的多種處理技術中的任一種成為一個或多個基板的一部分和/或可在一個或多個基板上實現。

示例性的計算機系統和處理器—圖13-15

圖13-15是適於包括處理器1700的示例性系統,而圖17是可包括一個或多個核心1702的示例性的片上系統(soc)。本領域公知的用於膝上型計算機、臺式計算機、手持式pc、個人數字助理、工程工作站、伺服器、網絡設備、網絡集線器、交換機、嵌入式處理器、數位訊號處理器(dsp)、圖形設備、視頻遊戲設備、機頂盒、微控制器、蜂窩電話、可攜式媒體播放器、手持式設備和各種其它電子設備的其它系統設計和配置也是適用的。一般地,如本文所公開的能夠合併處理器和/或其它執行邏輯的大量系統或電子設備一般是適用的。

現參考圖13,示出了依照本發明的一個實施例的系統1300的框圖。系統1300可包括與圖形存儲器控制器中心(gmch)1320耦合的一個或多個處理器1310、1315。在圖13中用虛線表示了附加處理器1315的可選特性。

每個處理器1310、1315可以是某種型號的處理器1700。然而,應當理解,集成圖形邏輯和集成存儲器控制單元不可能存在於處理器1310、1315中。

圖13示出了gmch1320可與存儲器1340耦合,存儲器1340可以例如是動態隨機存取存儲器(dram)。對於至少一個實施例,dram可以與非易失性高速緩衝存儲器相關聯。

gmch1320可以是晶片組或晶片組的一部分。gmch1320可以與處理器1310、1315通信並且控制處理器1310、1315和存儲器1340之間的交互。gmch1320還可充當處理器1310、1315和系統1300的其它元件之間的加速總線接口。對於至少一個實施例,gmch1320經由諸如前端總線(fsb)1395的多點分支總線與處理器1310、1315通信。

此外,gmch1320與顯示器1345(諸如平板顯示器)耦合。gmch1320可以包括集成圖形加速器。gmch1320進一步與輸入/輸出(i/o)控制器中心(ich)1350耦合,其可用於將各種外圍設備與系統1300耦合。例如,在圖13的實施例中顯示了外部圖形設備1360連同另外的外圍設備1370,外部圖形設備1360可以是與ich1350耦合的分立圖形設備。

可選地,附加的或不同的處理器也可以存在於系統1300中。例如,附加的處理器1315可以包括與處理器1310相同的附加處理器、與處理器1310異構或非對稱的附加處理器、加速器(例如圖形加速器或數位訊號處理(dsp)單元)、現場可編程門陣列、或任何其它處理器。從包括體系結構、微體系結構、熱力、功率消耗特性等指標的度量範圍看,物理資源1310、1315之間可存在多種差別。這些差別可有效地將其自身展現為處理元件1310、1315中的非對稱和異構的。對於至少一個實施例,各種處理元件1310、1315可駐存在同一片封裝中。

現在參考圖14,該圖示出了依照本發明的實施例的第二系統1400的框圖。如圖14所示,微處理器系統1400是點對點互連繫統,並且包括經由點對點互連1450耦合的第一處理器1470和第二處理器1480。如圖14所示,處理器1470和1480中的每個可以是某種型號的處理器1700。

可選地,一個或多個處理器1470、1480可以是除了處理器之外的元件,諸如加速器或現場可編程門陣列。

儘管顯示為僅具有兩個處理器1470、1480,但應當理解,本發明的範圍不受此限制。在其它實施例中,一個或多個附加的處理元件可存在於既定的處理器中。

處理器1470還可以包括集成存儲器控制器中心(imc)1472和點對點(p-p)接口1476和1478。類似地,第二處理器1480可以包括imc1482和p-p接口1486和1488。處理器1470、1480可以利用ptp接口電路1478、1488經由點對點(ptp)接口1450交換數據。如圖14所示,imc的1472和1482將處理器與相應的存儲器(即,存儲器1442和存儲器1444)耦合,該存儲器可以是在本地附接至相應的處理器的主存儲器的部分。

處理器1470、1480可以各自利用點對點接口電路1476、1494、1486、1498經由單獨的p-p接口1452、1454與晶片組1490交換數據。晶片組1490還可以經由高性能圖形接口1439與高性能圖形電路1438交換數據。

共享高速緩衝存儲器(未顯示)可包括在兩個處理器之外的任一處理器中,而經由p-p互連與處理器連接,以使得在處理器被置於低功率模式時任一個或兩個處理器的本地高速緩衝存儲器信息可被存儲在共享高速緩衝存儲器中。

晶片組1490可以經由接口1496與第一總線1416耦合。在一個實施例中,第一總線1416可以是外圍部件互連(pci)總線、或諸如pci快速總線或另一第三代i/o互連總線的總線,但是本發明的範圍不受此限制。

如圖14中所示,各個i/o設備1414可以連同將第一總線1416與第二總線1420耦合的總線橋1418一起與第一總線1416耦合。在一個實施例中,第二總線1420可以是低引腳數(lpc)總線。各種設備可與第二總線1420耦合,包括例如鍵盤/滑鼠1422、通信設備1426和數據存儲單元1428,諸如在一個實施例中可包括代碼1430的磁碟驅動或其它大容量存儲設備。此外,音頻i/o1424可與第二總線1420耦合。注意的是,其它體系結構是可能的。例如,除了圖14的點對點體系結構之外,系統可以實現多點分支總線(multi-dropbus)或其它這樣的體系結構。

現在參考圖15,該圖示出了依照本發明的實施例的第三系統1500的框圖。圖14和圖15中相似的元件使用了相似附圖標記,為了避免使圖15的其它方面不清晰而從圖15中省去了圖14的一些方面。

圖15圖示出處理元件1470、1480可以分別包括集成存儲器和i/o控制邏輯(「cl」)1472和1482。對於至少一個實施例,cl1472、1482可以包括存儲器控制中心邏輯(imc),諸如上文結合圖14中所描述的。另外,cl1472、1482還可以包括i/o控制邏輯。圖15中不僅示出了與cl1472、1482耦合的存儲器1442、1444,而且示出了i/o設備1514也與控制邏輯1472、1482耦合。傳統i/o設備1515與晶片組1490耦合。

現在參考圖16,示出了依照本發明的實施例的soc1600的框圖。圖17中的相似元件使用了相似的附圖標記。而且,虛線框是更高級的soc上的可選特徵。在圖16中,互連單元1602與如下部件耦合:應用處理器1610,其包括一組一個或多個核心1702a-n和共享高速緩衝存儲單元1706;系統代理單元1710;總線控制器單元1716;集成存儲器控制器單元1714;一組或一個或多個媒體處理器1620,其可包括集成圖形邏輯1708、用於提供靜態和/或視頻攝像機功能的圖像處理器1624、用於提供硬體音頻加速的音頻處理器1626、以及用於提供視頻編碼/解碼加速的視頻處理器1628;靜態隨機存取存儲器(sram)單元1630;直接存儲器存取(dma)單元1632;以及用於與一個或多個外部顯示器耦合的顯示單元1640。

本文所公開的機制的實施例可在硬體、軟體、固件或這些實現方法的組合中實現。本發明的實施例可實現為在包括至少一個處理器、存儲系統(包括易失性和非易失性存儲器和/或存儲元件)、至少一個輸入設備以及至少一個輸出設備的可編程系統上執行的電腦程式或程序代碼。

程序代碼可應用於輸入數據以執行本文所述的功能並且生成輸出信息。輸出信息可以已知方式應用於一個或多個輸出設備。為了本申請的目的,處理器系統包括具有例如數位訊號處理器(dsp)、微控制器、專用集成電路(asic)或微處理器的處理器的任何系統。

程序代碼可以用高級過程程式語言或面向對象的程式語言來實施,以與處理系統通信。根據需要,程序代碼還可以用彙編或機器語言來實施。事實上,本文所描述的機制的範圍不限於任何特定的程式語言。在任何情況下,語言可以是經編譯的或經解釋的語言。

至少一個實施例的一個或多個方面可通過存儲在機器可讀介質上的代表處理器內的各種邏輯的代表性指令來實施,當由機器讀取時,指令使機器裝配邏輯來執行本文所描述的技術。這種稱為「ip核心」的代表可存儲在有形的機器可讀介質上,並且供給各個顧客或製造設施以加載到實際上製作邏輯或處理器的製造機器中。

這種機器可讀存儲介質可包括但不限於通過機器或設備製造或形成的非暫態性的有形物品布置,包括:存儲介質,諸如硬碟、包括軟盤、光碟(光碟只讀存儲器(cd-rom)、可重寫光碟(cd-rw))和磁光碟的任何其它類型的磁碟;半導體器件,諸如只讀存儲器(rom)、隨機存取存儲器(ram),諸如動態隨機存取存儲器(dram)、靜態隨機存取存儲器(sram)、可擦除可編程只讀存儲器(eprom)、快閃記憶體、電可擦除可編程只讀存儲器(eeprom)、磁卡或光卡;或者適用於存儲電子指令的任何其它類型的介質。

因此,本發明的實施例還包括非暫態性的有形機器可讀介質,其包含矢量友好指令格式的指令或者包括設計數據,諸如硬體描述語言(hdl),這限定了本文中描述的結構、電路、裝置、處理器和/或系統特徵。這些實施例還可稱為程序產品。

在一些情況下,指令轉換器可用於將指令從源指令集轉換成目標指令集。例如,指令轉換器可以將指令變換(例如,利用靜態二進位變換、包括動態編譯的動態二進位變換)、變形、仿真或以其它方式轉換成待由核心處理的一個或多個其它指令。指令轉換器可以軟體、硬體、固件或其組合來實施。指令轉換器可以在處理器上、不在處理器上、或部分在處理器上和部分不在處理器上。

圖18是根據本發明的實施例的對比將源指令集中的二進位指令轉換成目標指令集中的二進位指令的軟體指令轉換器的使用的框圖。在圖示的實施例中,指令轉換器是軟體指令轉換器,但是可選地指令轉換器可以軟體、固件、硬體或其各種組合來實現。圖18示出了高級語言1802的程序可利用x86編譯器1804進行編譯以生成x86二進位代碼1806,x86二進位代碼1806可由具有至少一個x86指令集核心1816的處理器本機執行(假設經編譯的一些指令呈矢量友好指令格式)。具有至少一個x86指令集核心1816的處理器代表能夠通過兼容地執行或其它方式處理如下來執行與具有至少一個x86指令集核心的英特爾處理器基本相同的功能的任何處理器:(1)英特爾x86指令集核心的指令集的實質部分,或者(2)旨在於具有至少一個x86指令集核心的英特爾處理器上運行的應用程式或其它軟體的對象代碼版本,從而實現與具有至少一個x86指令集核心的英特爾處理器基本相同的結果。x86編譯器1804代表了可操作以生成x86二進位代碼1806(例如,對象代碼)的編譯器,x86二進位代碼1806能夠通過或不通過額外的連結處理而在具有至少一個x86指令集核心1816的處理器上執行。類似地,圖18示出了高級語言1802的程序可以利用可選的指令集編譯器1808進行編譯以生成可選的指令集二進位代碼1810,指令集二進位代碼1810可由不具有至少一個x86指令集核心1814的處理器(例如,具有執行ca,sunnyvale的mipstechnologies的mips指令集和/或執行ca,sunnyvale的armholdings的arm指令集的核心的處理器)本機執行。指令轉換器1812用於將x86二進位代碼1806轉換成可由不具有x86指令集核心1814的處理器本機執行的代碼。該經轉換的代碼不大可能與可選的指令集二進位代碼1810相同,這是因為能夠實現這點的指令轉換器很難製造;然而,經轉換的代碼將實現通常的操作並且由來自可選的指令集的指令構成。因此,指令轉換器1812代表了通過仿真、模擬或任何其它處理而允許不具有x86指令集處理器或核心的處理器或其它電子設備來執行x86二進位代碼1806的軟體、固件、硬體或其組合。

本文所公開的矢量友好指令格式的指令的一些操作可通過硬體部件來執行,並且可以用於使或至少使得電路或其它硬體部件被編程有執行操作的指令的機器可執行指令來具體實施。電路可以包括通用或專用處理器,或邏輯電路,僅列舉了幾個示例。操作還可任選地通過硬體和軟體的組合來執行。執行邏輯和/或處理器可以包括響應機器指令或從機器指令得到的一個或多個控制信號以存儲指令指定結果操作數的專門或特定的電路或其它邏輯。例如,本文公開的指令的實施例可以在圖13-16的一個或多個系統中執行,並且矢量友好指令格式的指令的實施例可以存儲在程序代碼中以在系統中執行。另外,這些圖的處理元件可以使用本文詳述的詳細管線和/或體系結構(例如,有序和無序體系結構)中的一個。例如,有序體系結構的解碼單元可以對指令進行解碼,將經解碼的指令傳遞到矢量或標量單元,等等。

上面的描述旨在說明本發明的優選實施例。從上面的討論還應當顯知,尤其在該技術領域,增長快速且進一步的發展不易於預見,本領域技術人員能夠對本發明的布置和細節進行修改而在隨附權利要求書及其等同內容的範圍內不偏離本發明的原理。例如,方法的一個或多個操作可組合或進一步分離。

替代的實施例

儘管已經描述了本機執行矢量友好指令格式的實施例,但是本發明的替代實施例可以通過在執行不同指令集的處理器(例如,執行ca,sunnyvale的mipstechnologies的mips指令集的處理器,執行ca,sunnyvale的armholdings的arm指令集的處理器)上運行的仿真層來執行矢量友好指令格式。而且,儘管圖中的流程圖示出了本發明的一些實施例所執行的操作的特定次序,但應當理解這樣的次序是示例性的(例如,替代的實施例可以按不同的次序執行操作,組合一些操作,重疊一些操作,等等)。

在上文的描述中,為了說明的目的,已經闡述了多方面具體細節從而提供本發明的實施例的全面理解。然而,本領域技術人員顯而易見,可在不具有這些具體細節中的一些細節的情況下來實施一個或多個其它實施例。所描述的特定實施例被提供不是為了限制本發明而是說明本發明的實施例。本發明的範圍不是由上文提供的具體示例確定的,而是僅由下面的權利要求書確定。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀