用于在掩碼寄存器和向量寄存器之間可變地擴展的方法和裝置與流程

            文檔序號:11635132閱讀:434來源:國知局
            用于在掩碼寄存器和向量寄存器之間可變地擴展的方法和裝置與流程

            背景

            本發明總體涉及計算機處理器領域。更具體地說,本發明涉及用于在掩碼寄存器和向量寄存器之間可變地擴展的方法和裝置。

            相關技術描述

            指令集,或指令集架構(isa)是涉及編程的計算機架構的一部分,并包括原生數據類型、指令、寄存器架構、尋址模式、存儲器架構、中斷和異常處理、以及外部輸入和輸出(i/o)。應該注意,術語“指令”在本文中一般是指宏指令——即,提供給處理器供執行的指令——而不是作為由處理器的解碼器解碼宏指令產生的結果的微指令或微操作。微指令或微操作可以配置為指示處理器上的執行單元執行操作以實現與宏指令相關聯的邏輯。

            isa與微架構不同,微架構是用于實現指令集的處理器設計技術的集合。具有不同的微架構的處理器可共享共同的指令集。例如,奔騰四(pentium4)處理器、酷睿(coretm)處理器、以及來自加利福尼亞州桑尼威爾(sunnyvale)的超微半導體有限公司(advancedmicrodevices,inc.)的多個處理器執行幾乎相同版本的x86指令集(在更新的版本中加入了一些擴展),但具有不同的內部設計。例如,isa的相同寄存器架構在不同的微架構中可使用已知的技術以不同方法來實現,包括專用物理寄存器、使用寄存器重命名機制(諸如,使用寄存器別名表(rat)、重排序緩沖器(rob)、以及引退寄存器堆)的一個或多個動態分配物理寄存器。除非另作說明,否則短語“寄存器架構”、“寄存器堆”和“寄存器”在本文中用于指代對軟件/編程者以及對指令指定寄存器的方式可見的寄存器架構、寄存器堆和寄存器。在需要區分的情況下,形容詞“邏輯的”、“架構的”,或“軟件可見的”將用于指示寄存器架構中的寄存器/寄存器堆,而不同的形容詞將用于指定給定微型架構中的寄存器(例如,物理寄存器、重排序緩沖器、引退寄存器、寄存器池)。

            指令集包括一個或多個指令格式。給定指令格式定義各個字段(位的數量、位的位置)以指定要執行的操作以及對其要執行該操作的操作數等。通過指令模板(或子格式)的定義來進一步分解一些指令格式。例如,可將給定指令格式的指令模板定義為具有指令格式的字段的不同子集(所包括的字段通常按相同的順序,但是至少一些字段具有不同的位的位置,因為有較少的字段被包括)和/或定義為具有以不同的方式來解釋的給定字段。使用給定的指令格式(并且如果經定義,則以該指令格式的一個給定的指令模板)來表達給定的指令,并且該給定的指令指定操作和操作數。指令流是具體的指令序列,其中,序列中的每條指令是按照指令格式(并且如果經定義,按照該指令格式的指令模板中的一個給定的指令模板)的指令的發生。

            附圖說明

            結合以下附圖,從以下具體實施方式中可獲得對本發明更好的理解,其中:

            圖1a和1b是示出根據本發明的實施例的通用向量友好指令格式及其指令模板的框圖;

            圖2a-d是示出根據本發明的實施例的示例性專用向量友好指令格式的框圖;

            圖3是根據本發明的一個實施例的寄存器架構的框圖;以及

            圖4a是示出根據本發明的實施例的示例性有序取出、解碼、引退流水線以及示例性寄存器重命名的亂序發布/執行流水線兩者的框圖;

            圖4b是示出根據本發明的實施例的要包括在處理器中的有序取出、解碼、引退核的示例性實施例和示例性的寄存器重命名的亂序發布/執行架構核的框圖;

            圖5a是單個處理器核以及它與管芯上互連網絡的連接的框圖;

            圖5b示出根據本發明的實施例的圖5a中的處理器核的一部分的展開圖;

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

            圖7示出根據本發明的一個實施例的系統的框圖;

            圖8示出根據本發明的實施例的第二系統的框圖;

            圖9示出根據本發明的實施例的第三系統的框圖;

            圖10示出根據本發明的實施例的芯片上系統(soc)的框圖;

            圖11示出根據本發明的實施例的、對照使用軟件指令轉換器將源指令集中的二進制指令轉換成目標指令集中的二進制指令的框圖;

            圖12示出可在其上實現本發明的實施例的示例性處理器;

            圖13示出根據本發明的一個實施例的掩碼-向量擴展邏輯;

            圖14示出使用掩碼-向量擴展邏輯的一個實施例的示例;

            圖15示出使用掩碼-向量擴展邏輯的一個實施例的另一示例;

            圖16示出其中源向量元素用于更新目的地掩碼寄存器的實施例;

            圖17示出其中源向量元素用于更新目的地掩碼寄存器的另一實施例;

            圖18示出根據本發明的一個實施例的方法;以及

            圖19示出根據本發明的實施例的另一方法。

            具體實施方式

            在下面的描述中,為了進行解釋,闡述了眾多具體細節以便提供對以下描述的本發明的多個實施例的透徹理解。然而,對本領域技術人員顯而易見的是,可以在沒有這些具體細節中的一些細節的情況下實施本發明的各實施例。在其他實例中,公知的結構和設備以框圖形式示出,以避免使本發明的多個實施例的基本原理模糊。

            示例性處理器架構和數據類型

            指令集包括一個或多個指令格式。給定指令格式定義各種字段(位的數量、位的位置)以指定將要執行的操作(操作碼)以及將對其執行該操作的操作數,等等。通過指令模板(或子格式)的定義來進一步分解一些指令格式。例如,可將給定指令格式的指令模板定義為具有指令格式的字段的不同子集(所包括的字段通常按相同的順序,但是至少一些字段具有不同的位的位置,因為有較少的字段被包括)和/或定義為具有以不同的方式來解釋的給定字段。如此,isa的每一條指令使用給定的指令格式來表達(并且如果經定義,則按照該指令格式的指令模板中的給定指令模板),并包括用于指定操作和操作數的字段。例如,示例性add指令具有專用操作碼以及包括用于指定該操作碼的操作碼字段和用于選擇操作數的操作數字段(源1/目的地以及源2)的指令格式,并且該add指令在指令流中的出現將具有選擇特定操作數的操作數字段中的特定內容。已發布和/或出版了被稱為高級向量擴展(avx)(avx1和avx2)并使用向量擴展(vex)編碼方案的simd擴展集(例如,參見2011年10月的《64和ia-32架構軟件開發者手冊》(“64andia-32architecturessoftwaredevelopersmanual”);并且參見2011年6月的《高級向量擴展編程參考》(“advancedvectorextensionsprogrammingreference))。”

            示例性指令格式

            本文中所描述的指令的實施例可以不同的格式體現。另外,在下文中詳述示例性系統、架構、以及流水線。指令的實施例可在這些系統、架構、以及流水線上執行,但是不限于詳述的系統、架構、以及流水線。

            a.通用向量友好指令格式

            向量友好指令格式是適于向量指令(例如,存在專用于向量操作的特定字段)的指令格式。盡管描述了其中通過向量友好指令格式支持向量和標量運算兩者的實施例,但是替代實施例僅使用通過向量友好指令格式的向量運算。

            圖1a-1b是示出根據本發明的實施例的通用向量友好指令格式及其指令模板的框圖。圖1a是示出根據本發明的實施例的通用向量友好指令格式及其a類指令模板的框圖;而圖1b是示出根據本發明的實施例的通用向量友好指令格式及其b類指令模板的框圖。具體而言,為通用向量友好指令格式100定義了a類和b類指令模板,這兩類指令模板都包括無存儲器訪問105指令模板和存儲器訪問120指令模板。在向量友好指令格式的上下文中的術語“通用”指不束縛于任何專用指令集的指令格式。

            盡管將描述其中向量友好指令格式支持以下情況的本發明的實施例,即:64字節向量操作數長度(或大小)與32位(4字節)或64位(8字節)數據元素寬度(或大小)(并且由此,64字節向量由16個雙字大小的元素或者替代地8個四字大小的元素組成);64字節向量操作數長度(或大小)與16位(2字節)或8位(1字節)數據元素寬度(或大小);32字節向量操作數長度(或大小)與32位(4字節)、64位(8字節)、16位(2字節)、或8位(1字節)數據元素寬度(或大小);以及16字節向量操作數長度(或大小)與32位(4字節)、64位(8字節)、16位(2字節)、或8位(1字節)數據元素寬度(或大小);但是,替代實施例可支持更大、更小、和/或不同的向量操作數大小(例如,256字節向量操作數)與更大、更小或不同的數據元素寬度(例如,128位(16字節)數據元素寬度)。

            圖1a中的a類指令模板包括:1)在無存儲器訪問105的指令模板內,示出無存儲器訪問的完全舍入控制型操作110的指令模板以及無存儲器訪問的數據變換型操作115的指令模板;以及2)在存儲器訪問120的指令模板內,示出存儲器訪問的時效性的125的指令模板和存儲器訪問的非時效性的130的指令模板。圖1b中的b類指令模板包括:1)在無存儲器訪問105的指令模板內,示出無存儲器訪問的寫掩碼控制的部分舍入控制型操作112的指令模板以及無存儲器訪問的寫掩碼控制的vsize型操作117的指令模板;以及2)在存儲器訪問120的指令模板內,示出存儲器訪問的寫掩碼控制127的指令模板。

            通用向量友好指令格式100包括下文中按照圖1a-1b中所示出的順序列出的下列字段。

            格式字段140-該字段中的特定值(指令格式標識符值)唯一地標識向量友好指令格式,并且由此標識指令在指令流中以向量友好指令格式出現。由此,該字段對于僅具有通用向量友好指令格式的指令集是不需要的,在這個意義上該字段是任選的。

            基礎操作字段142-其內容區分不同的基礎操作。

            寄存器索引字段144-其內容直接或者通過地址生成來指定源和目的地操作數在寄存器中或者在存儲器中的位置。這些字段包括足夠數量的位以從pxq(例如,32x512、16x128、32x1024、64x1024)個寄存器堆中選擇n個寄存器。盡管在一個實施例中n可高達三個源和一個目的地寄存器,但是替代實施例可支持更多或更少的源和目的地寄存器(例如,可支持高達兩個源,其中這些源中的一個源還用作目的地,可支持高達三個源,其中這些源中的一個源還用作目的地,可支持高達兩個源和一個目的地)。

            修飾符(modifier)字段146-其內容將指定存儲器訪問的以通用向量指令格式出現的指令與不指定存儲器訪問的以通用向量指令格式出現的指令區分開;即在無存儲器訪問105的指令模板與存儲器訪問120的指令模板之間進行區分。存儲器訪問操作讀取和/或寫入到存儲器層次(在一些情況下,使用寄存器中的值來指定源和/或目的地地址),而非存儲器訪問操作不這樣(例如,源和/或目的地是寄存器)。盡管在一個實施例中,該字段還在三種不同的方式之間選擇以執行存儲器地址計算,但是替代實施例可支持更多、更少或不同的方式來執行存儲器地址計算。

            擴充操作字段150-其內容區分除基礎操作以外還要執行各種不同操作中的哪一個操作。該字段是針對上下文的。在本發明的一個實施例中,此字段被劃分為類字段168、α字段152以及β字段154。擴充操作字段150允許在單條指令而非2條、3條或4條指令中執行多組共同的操作。

            比例字段160-其內容允許用于存儲器地址生成(例如,用于使用2比例*索引+基址的地址生成)的索引字段的內容的按比例縮放。

            位移字段162a-其內容用作存儲器地址生成的一部分(例如,用于使用2比例*索引+基址+位移的地址生成)。

            位移因數字段162b(注意,位移字段162a直接在位移因數字段162b上的并置指示使用一個或另一個)-其內容用作地址生成的一部分,它指定通過存儲器訪問的大小(n)按比例縮放的位移因數,其中n是存儲器訪問中的字節數量(例如,用于使用2比例*索引+基址+按比例縮放的位移的地址生成)。忽略冗余的低階位,并且因此將位移因數字段的內容乘以存儲器操作數總大小(n)以生成要在計算有效地址時使用的最終位移。n的值由處理器硬件在運行時基于完整操作碼字段174(稍候在本文中描述)和數據操縱字段154c確定。位移字段162a和位移因數字段162b不用于無存儲器訪問105指令模板,和/或不同的實施例可以實現僅一者或兩者都不實現,從這個意義上說,位移字段162a和位移因數字段162b是任選的。

            數據元素寬度字段164-其內容區分將使用多個數據元素寬度中的哪一個(在一些實施例中用于所有指令,在其他實施例中僅用于指令中的一些)。如果支持僅一個數據元素寬度和/或使用操作碼的某一方面來支持數據元素寬度,則該字段是不需要的,在這個意義上該字段是任選的。

            寫掩碼字段170-其內容在每一數據元素位置的基礎上控制目的地向量操作數中的數據元素位置是否反映基礎操作和擴充操作的結果。a類指令模板支持合并-寫掩碼操作,而b類指令模板支持合并-寫掩碼操作和歸零-寫掩碼操作兩者。當合并時,向量掩碼允許在執行任何操作期間保護目的地中的任何元素集免于更新(由基礎操作和擴充操作指定);在另一實施例中,保持其中對應掩碼位具有0的目的地的每一元素的舊值。相反,當歸零時,向量掩碼允許在執行任何操作期間使目的地中的元素的任何集合歸零(由基礎操作和擴充操作指定);在一個實施例中,目的地的元素在對應掩碼位具有0值時被設為0。該功能的子集是控制執行的操作的向量長度的能力(即,從第一個到最后一個要修改的元素的跨度),然而,被修改的元素不一定要是連續的。如此,寫掩碼字段170允許部分向量操作,包括加載、存儲、算術、邏輯等等。盡管描述了其中寫掩碼字段170的內容選擇了多個寫掩碼寄存器中的包含要使用的寫掩碼的一個寫掩碼寄存器(并且由此寫掩碼字段170的內容間接地標識了要執行的掩碼操作)的本發明的實施例,但是替代實施例相反或另外允許掩碼寫字段170的內容直接地指定要執行的掩碼操作。

            立即數字段172-其內容允許對立即數的指定。該字段在實現不支持立即數的通用向量友好格式中不存在且在不使用立即數的指令中不存在,在這個意義上該字段是任選的。

            類字段168-其內容在不同類的指令之間進行區分。參考圖1a-b,該字段的內容在a類和b類指令之間進行選擇。在圖1a-b中,使用圓角方形來指示在字段中存在專用值(例如,在圖1a-b中,分別是針對類字段168的a類168a和b類168b)。

            a類指令模板

            在a類非存儲器訪問105的指令模板的情況下,α字段152被解釋為rs字段152a,其內容區分將執行不同的擴充操作類型中的哪一種(例如,分別為無存儲器訪問的舍入型操作110以及無存儲器訪問的數據變換型操作115指令模板指定的舍入152a.1和數據變換152a.2),而β字段154區別將執行指定的類型的操作中的哪一個。在無存儲器訪問105的指令模板中,比例字段160、位移字段162a以及位移比例字段162b不存在。

            無存儲器訪問的指令模板-完全舍入控制型操作

            在無存儲器訪問的完全舍入控制型操作110指令模板中,β字段154被解釋為舍入控制字段154a,其內容提供靜態舍入操作。盡管在本發明的所描述的實施例中,舍入控制字段154a包括抑制所有浮點異常(sae)字段156和舍入操作控制字段158,但是替代實施例可以支持將這兩個概念編碼為同一個字段,或僅具有這些概念/字段中的一個或另一個(例如,可以僅具有舍入操作控制字段158)。

            sae字段156-其內容區分是否禁用異常事件報告;當sae字段156的內容指示啟用抑制時,給定的指令不報告任何種類的浮點異常標志,并且不喚起任何浮點異常處理程序。

            舍入操作控制字段158-其內容區分執行一組舍入操作中的哪一個(例如,向上舍入、向下舍入、向零舍入、以及就近舍入)。如此,舍入操作控制字段158允許逐指令地改變舍入模式。在其中處理器包括用于指定舍入模式的控制寄存器的本發明的一個實施例中,舍入操作控制字段150的內容優先于該寄存器值。

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

            在無存儲器訪問的數據變換型操作115指令模板中,β字段154被解釋為數據變換字段154b,其內容區分將執行數個數據變換中的哪一個(例如,無數據變換、混合、廣播)。

            在a類存儲器訪問120的指令模板的情況下,α字段152被解釋為驅逐提示字段152b,其內容區分要使用驅逐提示中的哪一個(在圖1a中,對于存儲器訪問時效性125的指令模板和存儲器訪問非時效性130的指令模板分別指定時效性的152b.1和非時效性的152b.2),而β字段154被解釋為數據操縱字段154c,其內容區分要執行多個數據操縱操作(也稱為基元(primitive))中的哪一個(例如,無操縱、廣播、源的向上轉換以及目的地的向下轉換)。存儲器訪問120指令模板包括比例字段160,并且任選地包括位移字段162a或位移比例字段162b。

            向量存儲器指令使用轉換支持來執行來自存儲器的向量加載并將向量存儲到存儲器。如同尋常的向量指令,向量存儲器指令以數據元素式的方式與存儲器來回傳輸數據,其中實際傳輸的元素由選為寫掩碼的向量掩碼的內容規定。

            存儲器訪問的指令模板-時效性的

            時效性的數據是可能足夠快地重新使用以從高速緩存受益的數據。然而,這是提示,且不同的處理器可以不同的方式實現它,包括完全忽略該提示。

            存儲器訪問的指令模板-非時效性的

            非時效性數據是不大可能足夠快地重復使用以從第1級高緩存中的高速緩存操作獲益且應當給予驅逐優先級的數據。然而,這是提示,且不同的處理器可以不同的方式實現它,包括完全忽略該提示。

            b類指令模板

            在b類指令模板的情況下,α字段152被解釋為寫掩碼控制(z)字段152c,其內容區分由寫掩碼字段170控制的寫掩碼應當是合并還是歸零。

            在b類非存儲器訪問105指令模板的情況下,β字段154的部分被解釋為rl字段157a,其內容區分將執行不同的擴充操作類型中的哪一種(例如,分別為無存儲器訪問的寫掩碼控制部分舍入控制型操作112指令模板和無存儲器訪問的寫掩碼控制vsize型操作117指令模板指定的舍入157a.1和向量長度(vsize)157a.2),而β字段154的其余部分區分將執行指定類型的操作中的哪一個。在無存儲器訪問105的指令模板中,比例字段160、位移字段162a以及位移比例字段162b不存在。

            在無存儲器訪問的寫掩碼控制部分舍入控制型操作110指令模板中,β字段154的其余部分被解釋為舍入操作字段159a,并且異常事件報告被禁用(給定的指令不報告任何種類的浮點異常標志,并且不引發任何浮點異常處理程序)。

            舍入操作控制字段159a-正如舍入操作控制字段158,其內容區分執行一組舍入操作中的哪一個(例如,向上舍入、向下舍入、向零舍入、以及就近舍入)。由此,舍入操作控制字段159a允許在每一指令的基礎上改變舍入模式。在其中處理器包括用于指定舍入模式的控制寄存器的本發明的一個實施例中,舍入操作控制字段150的內容優先于該寄存器值。

            在無存儲器訪問的寫掩碼控制vsize型操作117指令模板中,β字段154的其余部分被解釋為向量長度字段159b,其內容區分將執行數個數據向量長度中的哪一個(例如,128、256或512字節)。

            在b類存儲器訪問120指令模板的情況下,β字段154的部分被解釋為廣播字段157b,其內容區分是否將執行廣播類型數據操縱操作,而β字段154的其余部分被解釋為向量長度字段159b。存儲器訪問120指令模板包括比例字段160,并且任選地包括位移字段162a或位移比例字段162b。

            就通用向量友好指令格式100而言,完整操作碼字段174示出為包括格式字段140、基礎操作字段142以及數據元素寬度字段164。盡管示出了其中完整操作碼字段174包括所有這些字段的一個實施例,但是,在不是支持所有這些字段的實施例中,完整操作碼字段174包括少于全部這些字段。完整操作碼字段174提供操作代碼(操作碼)。

            擴充操作字段150、數據元素寬度字段164以及寫掩碼字段170允許以通用向量友好指令格式逐指令地指定這些特征。

            寫掩碼字段和數據元素寬度字段的組合創建各種類型的指令,因為這些指令允許基于不同的數據元素寬度應用該掩碼。

            在a類和b類內出現的各種指令模板在不同的情形下是有益的。在本發明的一些實施例中,不同處理器或者處理器內的不同核可支持僅a類、僅b類、或者可支持兩類。舉例而言,旨在用于通用計算的高性能通用亂序核可僅支持b類,旨在主要用于圖形和/或科學(吞吐量)計算的核可僅支持a類,并且旨在用于兩者的核可支持兩者(當然,具有來自兩類的模板和指令的一些混合、但是并非來自兩類的所有模板和指令的核在本發明的范圍內)。同樣,單一處理器可包括多個核,所有核支持相同的類或者其中不同的核支持不同的類。舉例而言,在具有單獨的圖形和通用核的處理器中,圖形核中的旨在主要用于圖形和/或科學計算的一個核可僅支持a類,而通用核中的一個或多個可以是具有旨在用于通用計算的僅支持b類的亂序執行和寄存器重命名的高性能通用核。不具有單獨的圖形核的另一處理器可包括既支持a類又支持b類的一個或多個通用有序或亂序核。當然,在本發明的不同實施例中,來自一類的特征也可在其他類中實現。可使以高級語言撰寫的程序成為(例如,及時編譯或者靜態編譯)各種不同的可執行形式,包括:1)僅具有目標處理器支持以執行的類的指令的形式;或者2)具有使用所有類的指令的不同組合而編寫的替代例程且具有選擇這些例程以基于由當前正在執行代碼的處理器支持的指令而執行的控制流代碼的形式。

            b.示例性專用向量友好指令格式

            圖2是示出根據本發明的實施例的示例性專用向量友好指令格式的框圖。圖2示出專用向量友好指令格式200,其指定位置、大小、解釋、字段的次序、以及那些字段中的一些字段的值,在這個意義上專用向量友好指令格式200是專用的。專用向量友好指令格式200可以被用來擴展x86指令集,并且由此,這些字段中的一些與用于現有的x86指令集及其擴展(例如,avx)中的那些字段類似或相同。該格式保持與具有擴展的現有x86指令集的前綴編碼字段、實操作碼字節字段、modr/m字段、sib字段、位移字段、以及立即數字段一致。示出來自圖1的字段,來自圖2的字段映射到來自圖1的字段。

            應當理解,雖然出于說明的目的在通用向量友好指令格式100的上下文中,本發明的實施例參考專用向量友好指令格式200進行了描述,但是本發明不限于專用向量友好指令格式200,聲明的地方除外。例如,通用向量友好指令格式100構想了各種字段的各種可能的大小,而專用向量友好指令格式200示出為具有特定大小的字段。作為具體示例,盡管數據元素寬度字段164示出為專用向量友好指令格式200中的一個位字段,但是本發明不限于此(也就是說,通用向量友好指令格式100構想數據元素寬度字段164的其他大小)。

            通用向量友好指令格式100包括下文中按照圖2a中所示出的順序列出的字段。

            evex前綴(字節0-3)202——以四字節形式進行編碼。

            格式字段140(evex字節0,位[7:0])——第一字節(evex字節0)是格式字段140,并且它包含0x62(在本發明的一個實施例中用于區分向量友好指令格式的唯一值)。

            第二-第四字節(evex字節1-3)包括提供專用能力的多個位字段。

            rex字段205(evex字節1,位[7-5])-由evex.r位字段(evex字節1,位[7]–r)、evex.x位字段(evex字節1,位[6]–x)以及(157bex字節1,位[5]–b)組成。evex.r、evex.x和evex.b位字段提供與對應vex位字段相同的功能,并且使用1補碼的形式進行編碼,即zmm0被編碼為1111b,zmm15被編碼為0000b。這些指令的其他字段對如在本領域中已知的寄存器索引的較低三個位(rrr、xxx、以及bbb)進行編碼,由此可通過增加evex.r、evex.x以及evex.b來形成rrrr、xxxx以及bbbb。

            rex’字段110-這是rex’字段110的第一部分,并且是用于對擴展的32個寄存器集合的較高16個或較低16個寄存器進行編碼的evex.r’位字段(evex字節1,位[4]–r’)。在本發明的一個實施例中,該位與以下指示的其他位一起以位反轉的格式存儲以(在公知x86的32位模式下)與實操作碼字節是62的bound指令進行區分,但是在modr/m字段(在下文中描述)中不接受mod字段中的值11;本發明的替代實施例不以反轉的格式存儲該指示的位以及下文中其他指示的位。值1用于對較低16個寄存器進行編碼。換言之,r'rrrr是通過組合來自其他字段的evex.r'、evex.r以及其他rrr而形成的。

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

            數據元素寬度字段164(evex字節2,位[7]–w)-由記號evex.w表示。evex.w用于定義數據類型的粒度(大小)(32位數據元素或64位數據元素)。

            evex.vvvv220(evex字節2,位[6:3]-vvvv)——evex.vvvv的作用可包括如下:1)evex.vvvv編碼第一源寄存器操作數且對具有兩個或兩個以上源操作數的指令有效,第一源寄存器操作數以反轉(1補碼)形式被指定;2)evex.vvvv編碼目的地寄存器操作數,目的地寄存器操作數針對特定向量位移以1補碼的形式被指定;或者3)evex.vvvv不編碼任何操作數,保留該字段,并且應當包含1111b。由此,evex.vvvv字段220對以反轉(1補碼)的形式存儲的第一源寄存器說明符的4個低階位進行編碼。取決于該指令,額外不同的evex位字段用于將說明符大小擴展到32個寄存器。

            evex.u168類字段(evex字節2,位[2]-u)——如果evex.u=0,則它指示a類或evex.u0;如果evex.u=1,則它指示b類或evex.u1。

            前綴編碼字段225(evex字節2,位[1:0]-pp)——提供了用于基礎操作字段的附加位。除了對以evex前綴格式的傳統sse指令提供支持以外,這也具有緊縮simd前綴的益處(evex前綴只需要2位,而不是需要字節來表達simd前綴)。在一個實施例中,為了支持使用以傳統格式和以evex前綴格式兩者的simd前綴(66h、f2h、f3h)的傳統sse指令,將這些傳統simd前綴編碼為simd前綴編碼字段;在提供給解碼器的pla之前,在運行時可被擴展為傳統simd前綴(因此,pla可執行傳統和evex格式的這些傳統指令,而無需修改)。雖然較新的指令可以直接將evex前綴編碼字段的內容用作操作碼擴展,但是某些實施例為了一致性而以類似的方式擴展,但是允許由這些傳統simd前綴指定的不同含義。替代實施例可重新設計pla以支持2位simd前綴編碼,并且由此不需要擴展。

            α字段152(evex字節3,位[7]–eh;也稱為evex.eh、evex.rs、evex.rl、evex.寫掩碼控制、以及evex.n;也以α示出)-如先前所述,該字段是針對上下文的。

            β字段154(evex字節3,位[6:4]-sss,也稱為evex.s2-0、evex.r2-0、evex.rr1、evex.ll0、evex.llb,還被示為具有βββ)-如先前所述,該字段是內容專用的。

            rex’字段110-這是rex’字段的其余部分,并且是可用于對擴展的32個寄存器集合的較高16個或較低16個寄存器進行編碼的evex.v’位字段(evex字節3,位[3]–v’)。該位以位反轉的格式存儲。值1用于對較低16個寄存器進行編碼。換言之,v'vvvv是通過組合evex.v'、evex.vvvv而形成的。

            寫掩碼字段170(evex字節3,位[2:0]-kkk)-其內容指定寫掩碼寄存器中的寄存器索引,如先前所述。在本發明的一個實施例中,特定值evex.kkk=000具有暗示沒有寫掩碼用于特定指令的特殊行為(這可以各種方式實現,包括使用硬連線成全部為1的寫掩碼或者旁路掩碼硬件的硬件來實現)。

            實操作碼字段230(字節4)也稱為操作碼字節。操作碼的一部分在該字段中被指定。

            modr/m字段240(字節5)包括mod字段242、reg字段244以及r/m字段246。如前所述,mod字段242的內容在存儲器訪問操作與非存儲器訪問操作之間進行區分。reg字段244的作用可被歸結為兩種情形:對目的地寄存器操作數或源寄存器操作數進行編碼;或者被視為操作碼擴展且不用于對任何指令操作數進行編碼。r/m字段246的作用可包括如下:對引用存儲器地址的指令操作數進行編碼,或者對目的地寄存器操作數或源寄存器操作數進行編碼。

            比例、索引、基址(sib)字節(字節6)-如先前所述的,比例字段150的內容用于存儲器地址生成。sib.xxx254和sib.bbb256-先前已經針對寄存器索引xxxx和bbbb提及了這些字段的內容。

            位移字段162a(字節7-10)-當mod字段242包含10時,字節7-10是位移字段162a,并且它以與傳統32位位移(disp32)相同的方式工作,以字節粒度工作。

            位移因數字段162b(字節7)-當mod字段242包含01時,字節7是位移因數字段162b。該字段的位置與傳統x86指令集8位位移(disp8)的位置相同,它以字節粒度工作。由于disp8是符號擴展的,因此它僅能在-128和127字節偏移量之間尋址;在64字節高速緩存行的方面,disp8使用可被設為僅四個真正有用的值-128、-64、0和64的8位;由于常常需要更大的范圍,所以使用disp32;然而,disp32需要4個字節。與disp8和disp32對比,位移因數字段162b是disp8的重新解釋;當使用位移因數字段162b時,通過將位移因數字段的內容乘以存儲器操作數訪問的大小(n)來確定實際位移。這種類型的位移被稱為disp8*n。這減小了平均指令長度(用于位移的單個字節,但是具有大得多的范圍)。這種壓縮位移基于有效位移是存儲器訪問的粒度的倍數的假設,并且由此地址偏移量的冗余低階位不需要被編碼。換句話說,位移因數字段162b替代傳統x86指令集8位位移。由此,位移因數字段162b以與x86指令集8位位移相同的方式(因此在modrm/sib編碼規則中沒有變化)進行編碼,唯一的不同在于,將disp8超載至disp8*n。換句話說,在編碼規則或編碼長度中沒有變化,而僅在通過硬件對位移值的解釋中有變化(這需要按存儲器操作數的尺寸按比例縮放位移量以獲得字節式地址偏移量)。

            立即數字段172如先前所述那樣進行操作。

            完整操作碼字段

            圖2b是示出根據本發明的一個實施例的構成完整操作碼字段174的專用向量友好指令格式200中的字段的框圖。具體而言,完整操作碼字段174包括格式字段140、基礎操作字段142以及數據元素寬度(w)字段164。基礎操作字段142包括前綴編碼字段225、操作碼映射字段215以及實操作碼字段230。

            寄存器索引字段

            圖2c是示出根據本發明的一個實施例的構成寄存器索引字段144的具有專用向量友好指令格式200的字段的框圖。具體地,寄存器索引字段144包括rex字段205、rex’字段210、modr/m.reg字段244、modr/m.r/m字段246、vvvv字段220、xxx字段254以及bbb字段256。

            擴充操作字段

            圖2d是示出根據本發明的一個實施例的構成擴充操作字段150的具有專用向量友好指令格式200的字段的框圖。當類(u)字段168包含0時,它表示evex.u0(a類168a);當它包含1時,它表示evex.u1(b類168b)。當u=0并且mod字段242包含11(表示無存儲器訪問操作)時,α字段152(evex字節3,位[7]-eh)被解釋為rs字段152a。當rs字段152a包含1(舍入152a.1)時,β字段154(evex字節3、位[6:4]-sss)被解釋為舍入控制字段154a。舍入控制字段154a包括一位的sae字段156和兩位的舍入操作字段158。當rs字段152a包含0(數據變換152a.2)時,β字段154(evex字節3,位[6:4]-sss)被解釋為三位的數據變換字段154b。當u=0且mod字段242包含00、01或10(表明存儲器訪問操作)時,α字段152(evex字節3,位[7]–eh)被解釋為驅逐提示(eh)字段152b且β字段154(evex字節3,位[6:4]–sss)被解釋為三位的數據操縱字段154c。

            當u=1時,α字段152(evex字節3,位[7]-eh)被解釋為寫掩碼控制(z)字段152c。當u=1且mod字段242包含11(表示無存儲器訪問操作)時,β字段154的一部分(evex字節3,位[4]–s0)被解釋為rl字段157a;當它包含1(舍入157a.1)時,β字段154的其余部分(evex字節3,位[6-5]–s2-1)被解釋為舍入操作字段159a,而當rl字段157a包含0(vsize157.a2)時,β字段154的其余部分(evex字節3,位[6-5]–s2-1)被解釋為向量長度字段159b(evex字節3,位[6-5]–l1-0)。當u=1且mod字段242包含00、01或10(表示存儲器訪問操作)時,β字段154(evex字節3,位[6:4]–sss)被解釋為向量長度字段159b(evex字節3,位[6-5]–l1-0)和廣播字段157b(evex字節3,位[4]–b)。

            c.示例性寄存器架構

            圖3是根據本發明的一個實施例的寄存器架構300的框圖。在所示出的實施例中,有32個512位寬的向量寄存器310;這些寄存器被引用為zmm0到zmm31。較低的16個zmm寄存器的較低階256個位覆蓋在寄存器ymm0-16上。較低的16個zmm寄存器的較低階128個位(ymm寄存器的較低階128個位)覆蓋在寄存器xmm0-15上。專用向量友好指令格式200按下表中所示方式對這些重疊寄存器堆進行操作。

            換句話說,向量長度字段159b在最大長度與一個或多個其他較短長度之間進行選擇,其中每一這種較短長度是前一長度的一半,并且不具有向量長度字段159b的指令模板對最大向量長度操作。此外,在一個實施例中,專用向量友好指令格式200的b類指令模板對緊縮或標量單/雙精度浮點數據以及緊縮或標量整數數據操作。標量操作是對zmm/ymm/xmm寄存器中的最低階數據元素位置執行的操作;取決于本實施例,較高階數據元素位置保持與在指令之前相同或者歸零。

            寫掩碼寄存器315——在所示實施例中,有8個寫掩碼寄存器(k0到k7),每一個的尺寸都是64位。在替代實施例中,寫掩碼寄存器315的尺寸為16位。如先前所述的,在本發明的一個實施例中,向量掩碼寄存器k0無法用作寫掩碼;當正常指示k0的編碼用作寫掩碼時,它選擇硬連線的寫掩碼0xffff,從而有效地停用該指令的寫掩碼操作。

            通用寄存器325——在所示實施例中,有十六個64位通用寄存器,這些寄存器與現有的x86尋址模式一起使用來對存儲器操作數尋址。這些寄存器通過名稱rax、rbx、rcx、rdx、rbp、rsi、rdi、rsp以及r8到r15來引用。

            標量浮點棧寄存器堆(x87棧)345,在其上重疊了mmx緊縮整數平坦寄存器堆350——在所示出的實施例中,x87棧是用于使用x87指令集擴展來對32/64/80位浮點數據執行標量浮點操作的八元素棧;而使用mmx寄存器來對64位緊縮整數數據執行操作,以及為在mmx和xmm寄存器之間執行的某些操作保存操作數。

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

            d.示例性核架構、處理器和計算機架構

            處理器核可以以不同方式、出于不同目的、在不同的處理器中實現。例如,這樣的核的實現可以包括:1)旨在用于通用計算的通用有序核;2)旨在用于通用計算的高性能通用亂序核;3)旨在主要用于圖形和/或科學(吞吐量)計算的專用核。不同處理器的實現可包括:1)包括旨在用于通用計算的一個或多個通用有序核和/或旨在用于通用計算的一個或多個通用亂序核的cpu;以及2)包括旨在主要用于圖形和/或科學(吞吐量)的一個或多個專用核的協處理器。這樣的不同處理器導致不同的計算機系統架構,其可包括:1)在與cpu分開的芯片上的協處理器;2)在與cpu相同的封裝中但分開的管芯上的協處理器;3)與cpu在相同管芯上的協處理器(在該情況下,這樣的協處理器有時被稱為諸如集成圖形和/或科學(吞吐量)邏輯等的專用邏輯,或被稱為專用核);以及4)可以將所描述的cpu(有時被稱為應用核或應用處理器)、以上描述的協處理器和附加功能包括在同一管芯上的芯片上系統。接著描述示例性核架構,隨后描述示例性處理器和計算機架構。

            圖4a是示出根據本發明的實施例的示例性有序流水線和示例性的寄存器重命名的亂序發布/執行流水線的框圖。圖4b是示出根據本發明的實施例的要被包括在處理器中的有序架構核的和示例性寄存器重命名的亂序發布/執行架構核的示例性實施例的框圖。圖4a-b中的實線框示出了有序流水線和有序核,而可選增加的虛線框示出了寄存器重命名的、亂序發布/執行流水線和核。給定有序方面是亂序方面的子集的情況下,將描述亂序方面。

            在圖4a中,處理器流水線400包括取出級402、長度解碼級404、解碼級406、分配級408、重命名級410、調度(也被稱為分派或發布)級412、寄存器讀取/存儲器讀取級414、執行級416、寫回/存儲器寫入級418、異常處理級422和提交級424。

            圖4b示出了包括耦合到執行引擎單元450的前端單元430的處理器核490,且執行引擎單元和前端單元兩者都耦合到存儲器單元470。核490可以是精簡指令集計算(risc)核、復雜指令集計算(cisc)核、超長指令字(vliw)核或混合或替代核類型。作為又一選項,核490可以是專用核,諸如例如網絡或通信核、緊縮引擎、協處理器核、通用計算圖形處理單元(gpgpu)核、圖形核、等等。

            前端單元430包括耦合至指令高速緩存單元434的分支預測單元432,指令高速緩存單元434耦合至指令轉換后備緩沖器(tlb)436,指令轉換后備緩沖器436耦合至指令取出單元438,指令取出單元438耦合至解碼單元440。解碼單元440(或解碼器)可解碼指令,并生成從原始指令解碼出的、或以其它方式反映原始指令的、或從原始指令導出的一個或多個微操作、微代碼進入點、微指令、其它指令、或其它控制信號作為輸出。解碼單元440可使用各種不同的機制來實現。合適的機制的示例包括但不僅限于,查找表、硬件實現、可編程邏輯陣列(pla)、微代碼只讀存儲器(rom)等等。在一個實施例中,核490包括(例如,在解碼單元440中或以其他方式在前端單元430內的)用于存儲某些宏指令的微代碼的微代碼rom或其他介質。解碼單元440耦合至執行引擎單元450中的重命名/分配器單元452。

            執行引擎單元450包括耦合至引退單元454的重命名/分配器單元452以及一組一個或多個調度器單元456。調度器單元456表示任意數量的不同調度器,包括預留站、中心指令窗等。調度器單元456耦合到物理寄存器堆單元458。每個物理寄存器堆單元458表示一個或多個物理寄存器堆,其中不同的物理寄存器堆存儲一種或多種不同的數據類型,諸如標量整數、標量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,作為要執行的下一指令的地址的指令指針)等。在一個實施例中,物理寄存器堆單元458包括向量寄存器單元、寫掩碼寄存器單元和標量寄存器單元。這些寄存器單元可以提供架構向量寄存器、向量掩碼寄存器、和通用寄存器。物理寄存器堆單元458與引退單元454重疊以示出可以用來實現寄存器重命名和亂序執行的各種方式(例如,使用重新排序緩沖器和引退寄存器堆;使用將來的文件、歷史緩沖器和引退寄存器堆;使用寄存器映射和寄存器池等等)。引退單元454和物理寄存器堆單元458耦合到執行群集460。執行群集460包括一組一個或多個執行單元462和一組一個或多個存儲器訪問單元464。執行單元462可以對各種類型的數據(例如,標量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)執行各種操作(例如,移位、加法、減法、乘法)。盡管一些實施例可以包括專用于特定功能或功能組的數個執行單元,但是其他實施例可以僅包括一個執行單元或全部都執行所有功能的多個執行單元。調度器單元456、物理寄存器堆單元458以及執行群集460示出為可能是復數個,因為某些實施例為某些類型的數據/操作創建單獨的流水線(例如,各自都具有其自身的調度器單元、物理寄存器堆單元和/或執行群集的標量整數流水線、標量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點流水線和/或存儲器訪問流水線——并且在單獨的存儲器訪問流水線的情況下,實現了其中僅此流水線的執行群集具有存儲器訪問單元464的某些實施例)。還應當理解,在使用分開的流水線的情況下,這些流水線中的一個或多個可以是亂序發布/執行的,而其余的是有序的。

            存儲器訪問單元464的集合耦合到存儲器單元470,該存儲器單元包括耦合到數據高速緩存單元474的數據tlb單元472,其中數據高速緩存單元耦合到第2級(l2)高速緩存單元476。在一個示例性實施例中,存儲器訪問單元464可包括加載單元、存儲地址單元和存儲數據單元,其中的每一個均耦合至存儲器單元470中的數據tlb單元472。指令高速緩存單元434進一步耦合到存儲器單元470中的第2級(l2)高速緩存單元476。l2高速緩存單元476被耦合到一個或多個其他級的高速緩存,并最終被耦合到主存儲器。

            作為示例,示例性寄存器重命名的、亂序發布/執行核架構可以如下實現流水線400:1)指令取出438執行取出和長度解碼級402和404;2)解碼單元440執行解碼級406;3)重命名/分配器單元452執行分配級408和重命名級410;4)調度器單元456執行調度級412;5)物理寄存器堆單元458和存儲器單元470執行寄存器讀取/存儲器讀取級414;執行群集460執行執行級416;6)存儲器單元470和物理寄存器堆單元458執行寫回/存儲器寫入級418;7)各單元可牽涉到異常處理級422;以及8)引退單元454和物理寄存器堆單元458執行提交級424。

            核490可支持一個或多個指令集(例如,x86指令集(具有與較新版本一起添加的一些擴展);加利福尼亞州桑尼維爾市的mips技術公司的mips指令集;加利福尼州桑尼維爾市的arm控股的arm指令集(具有諸如neon等可選附加擴展)),其中包括本文中描述的各指令。在一個實施例中,核490包括用于支持緊縮數據指令集擴展(例如,avx1、avx2)的邏輯,進而允許由許多多媒體應用使用的操作通過使用緊縮數據來執行。

            應當理解,核可以支持多線程操作(執行兩個或更多個并行的操作或線程的集合),并且可以按各種方式來完成該多線程操作,各種方式包括時分多線程操作、同步多線程操作(其中,單個物理核為物理核正在同步進行多線程操作的多個線程中的每一個線程提供邏輯核)或其組合(例如,時分取出和解碼以及此后諸如利用超線程技術的同步多線程操作)。

            盡管在亂序執行的上下文中描述了寄存器重命名,但是,應當理解,寄存器重命名可以用于有序架構中。盡管所示出的處理器的實施例還包括分開的指令和數據高速緩存單元434/474以及共享l2高速緩存單元476,但替代實施例可以具有用于指令和數據兩者的單個內部高速緩存,諸如例如第1級(l1)內部高速緩存或多個級別的內部高速緩存。在一些實施例中,系統可以包括內部高速緩存以及在核和/或處理器外部的外部高速緩存的組合。或者,全部高速緩存都可以在核和/或處理器的外部。

            圖5a-b示出更具體的示例性有序核架構的框圖,該核將是芯片中的多個邏輯塊中的一個(包括相同類型和/或不同類型的其他核)。根據應用,這些邏輯塊通過高帶寬的互連網絡(例如,環形網絡)與一些固定的功能邏輯、存儲器i/o接口和其它必要的i/o邏輯通信。

            圖5a是根據本發明的實施例的單個處理器核以及它與管芯上互連網絡502的連接及其第2級(l2)高速緩存的本地子集504的框圖。在一個實施例中,指令解碼器500支持具有緊縮數據指令集擴展的x86指令集。l1高速緩存506允許對進入標量和向量單元中的高速緩存存儲器的低等待時間訪問。盡管在一個實施例中(為了簡化設計),標量單元508和向量單元510使用分開的寄存器集合(分別為標量寄存器512和向量寄存器514),并且在這些寄存器之間轉移的數據被寫入到存儲器并隨后從第一級(l1)高速緩存506讀回,但是本發明的替代實施例可以使用不同的方法(例如,使用單個寄存器集合或包括允許數據在這兩個寄存器堆之間傳輸而無需被寫入和讀回的通信路徑)。

            l2高速緩存的本地子集504是全局l2高速緩存的一部分,該全局l2高速緩存被劃分成多個分開的本地子集,即每個處理器核一個本地子集。每個處理器核具有到其自己的l2高速緩存的本地子集504的直接訪問路徑。被處理器核讀出的數據被存儲在其l2高速緩存子集504中,并且可以與其它處理器核訪問其自己的本地l2高速緩存子集并行地被快速訪問。被處理器核寫入的數據被存儲在其自己的l2高速緩存子集504中,并在必要的情況下從其它子集轉儲清除。環形網絡確保共享數據的一致性。環形網絡是雙向的,以允許諸如處理器核、l2高速緩存和其它邏輯塊之類的代理在芯片內彼此通信。每個環形數據路徑為每個方向1012位寬。

            圖5b是根據本發明的實施例的圖5a中的處理器核的一部分的展開圖。圖5b包括l1高速緩存504的l1數據高速緩存506a部分,以及關于向量單元510和向量寄存器514的更多細節。具體地說,向量單元510是16寬向量處理單元(vpu)(見16寬alu528),該單元執行整型、單精度浮點以及雙精度浮點指令中的一個或多個。該vpu通過混合單元520支持對寄存器輸入的混合、通過數值轉換單元522a-b支持數值轉換、并通過復制單元524支持對存儲器輸入的復制。寫掩碼寄存器526允許斷言所得的向量寫入。

            圖6是根據本發明的實施例的可具有多于一個的核、可具有集成存儲器控制器、以及可具有集成圖形器件的處理器600的框圖。圖6中的實線框示出具有單一核602a、系統代理610、一組一個或多個總線控制器單元616的處理器600,而任選增加的虛線框示出具有多個核602a-n、系統代理單元610中的一組一個或多個集成存儲器控制器單元614、以及專用邏輯608的替換處理器600。

            因此,處理器600的不同實現可包括:1)cpu,其中專用邏輯608是集成圖形和/或科學(吞吐量)邏輯(其可包括一個或多個核),并且核602a-n是一個或多個通用核(例如,通用的有序核、通用的亂序核、這兩者的組合);2)協處理器,其中核602a-n是旨在主要用于圖形和/或科學(吞吐量)的多個專用核;以及3)協處理器,其中核602a-n是多個通用有序核。因此,處理器600可以是通用處理器、協處理器或專用處理器,諸如例如網絡或通信處理器、緊縮引擎、圖形處理器、gpgpu(通用圖形處理單元)、高吞吐量的集成眾核(mic)協處理器(包括30個或更多核)、或嵌入式處理器等。該處理器可以被實現在一個或多個芯片上。處理器600可以是一個或多個襯底的一部分,和/或可以使用諸如例如bicmos、cmos或nmos等的多個工藝技術中的任何一個技術將該處理器實現在一個或多個襯底上。

            存儲器層次結構包括核內的一個或多個層級的高速緩存、一組或一個或多個共享高速緩存單元606以及耦合到集成存儲器控制器單元614的集合的外部存儲器(未示出)。共享高速緩存單元606的集合可以包括一個或多個中級高速緩存,諸如,第2級(l2)、第3級(l3)、第4級(l4),或其他層級的高速緩存,末級高速緩存(llc),和/或上述各項的組合。盡管在一個實施例中,基于環的互連單元612將集成圖形邏輯608、共享高速緩存單元606的集合以及系統代理單元610/集成存儲器控制器單元614互連,但替代實施例可使用任何數量的公知技術來將這些單元互連。在一個實施例中,可以維護一個或多個高速緩存單元606和核602-a-n之間的一致性。

            在一些實施例中,核602a-n中的一個或多個能夠實現多線程。系統代理610包括協調和操作核602a-n的那些組件。系統代理單元610可包括例如功率控制單元(pcu)和顯示單元。pcu可以是或可包括用于調節核602a-n和集成圖形邏輯608的功率狀態所需的邏輯和組件。顯示單元用于驅動一個或多個從外部連接的顯示器。

            核602a-n在架構指令集方面可以是同構的或異構的;即,這些核602a-n中的兩個或更多個核可能能夠執行相同的指令集,而其它核可能能夠執行該指令集的僅僅子集或不同的指令集。

            圖7-10是示例性計算機架構的框圖。本領域已知的對膝上型設備、臺式機、手持pc、個人數字助理、工程工作站、服務器、網絡設備、網絡集線器、交換機、嵌入式處理器、數字信號處理器(dsp)、圖形設備、視頻游戲設備、機頂盒、微控制器、蜂窩電話、便攜式媒體播放器、手持設備以及各種其它電子設備的其它系統設計和配置也是合適的。一般地,能夠包含本文中所公開的處理器和/或其它執行邏輯的多個系統或電子設備一般都是合適的。

            現在參考圖7,所示出的是根據本發明的一個實施例的系統700的框圖。系統700可以包括一個或多個處理器710、715,這些處理器耦合到控制器中樞720。在一個實施例中,控制器中樞720包括圖形存儲器控制器中樞(gmch)790和輸入/輸出中樞(ioh)750(其可以在分開的芯片上);gmch790包括存儲器和圖形控制器,存儲器740和協處理器745耦合到該存儲器和圖形控制器;ioh750將輸入/輸出(i/o)設備760耦合到gmch790。或者,存儲器和圖形控制器中的一個或兩者可以被集成在處理器內(如本文中所描述的),存儲器740和協處理器745直接耦合到處理器710以及控制器中樞720,控制器中樞720與ioh750處于單個芯片中。

            在圖7中以虛線表示附加的處理器715的可選的性質。每個處理器710、715可包括本文中描述的處理核中的一個或多個,并且可以是處理器600的某一版本。

            存儲器740可以是例如動態隨機存取存儲器(dram)、相變存儲器(pcm)或這兩者的組合。對于至少一個實施例,控制器中樞720經由諸如前端總線(fsb)之類的多分支總線、諸如快速通道互連(qpi)之類的點對點接口、或者類似的連接795與處理器710、715進行通信。

            在一個實施例中,協處理器745是專用處理器,諸如例如高吞吐量mic處理器、網絡或通信處理器、緊縮引擎、圖形處理器、gpgpu、或嵌入式處理器等等。在一個實施例中,控制器中樞720可以包括集成圖形加速器。

            在物理資源710、715之間會存在包括架構、微架構、熱、功耗特性等的一系列品質度量方面的各種差異。

            在一個實施例中,處理器710執行控制一般類型的數據處理操作的指令。協處理器指令可嵌入在這些指令中。處理器710將這些協處理器指令識別為應當由附連的協處理器745執行的類型。因此,處理器710在協處理器總線或者其它互連上將這些協處理器指令(或者表示協處理器指令的控制信號)發布到協處理器745。協處理器745接受并執行所接收的協處理器指令。

            現在參見圖8,所示是根據本發明的實施例的第一更具體的示例性系統800的框圖。如圖8所示,多處理器系統800是點對點互連系統,并且包括經由點對點互連850耦合的第一處理器870和第二處理器880。處理器870和880中的每一個都可以是處理器600的某一版本。在本發明的一個實施例中,處理器870和880分別是處理器710和715,而協處理器838是協處理器745。在另一實施例中,處理器870和880分別是處理器710和協處理器745。

            處理器870和880被示為分別包括集成存儲器控制器(imc)單元872和882。處理器870還包括點對點(p-p)接口876和878作為其總線控制器單元的部分;類似地,第二處理器880包括p-p接口886和888。處理器870、880可以經由使用點對點(p-p)接口電路878、888的p-p接口850來交換信息。如圖8所示,imc872和882將處理器耦合至相應的存儲器,即,存儲器832和存儲器834,它們可以是本地連接到相應的處理器的主存儲器的部分。

            處理器870、880可各自經由使用點對點接口電路876、894、886、898的各個p-p接口852、854與芯片組890交換信息。芯片組890可任選地經由高性能接口839與協處理器838交換信息。在一個實施例中,協處理器838是專用處理器,諸如例如高吞吐量mic處理器、網絡或通信處理器、緊縮引擎、圖形處理器、gpgpu、或嵌入式處理器等等。

            共享高速緩存(未示出)可以被包括在任一處理器之內,或被包括在兩個處理器外部但仍經由p-p互連與這些處理器連接,使得如果將某處理器置于低功率模式時,可將任一處理器或兩個處理器的本地高速緩存信息存儲在該共享高速緩存中。

            芯片組890可經由接口896耦合至第一總線816。在一個實施例中,第一總線816可以是外圍組件互連(pci)總線,或諸如pciexpress總線或其它第三代i/o互連總線之類的總線,但本發明的范圍并不受此限制。

            如圖8所示,各種i/o設備814可以連同總線橋818被耦合至第一總線816,總線橋818將第一總線816耦合至第二總線820。在一個實施例中,諸如協處理器、高吞吐量mic處理器、gpgpu的處理器、加速器(諸如例如圖形加速器或數字信號處理(dsp)單元)、現場可編程門陣列或任何其它處理器的一個或多個附加處理器815耦合到第一總線816。在一個實施例中,第二總線820可以是低引腳數(lpc)總線。在一個實施例中,各種設備可以耦合到第二總線820,各種設備包括例如,鍵盤和/或鼠標822、通信設備827以及存儲單元828,存儲單元828諸如,可包括指令/代碼和數據830的磁盤驅動器或其他大容量存儲設備。此外,音頻i/o824可以被耦合至第二總線820。注意,其他架構是可能的。例如,系統可實現多分支總線或者其他此類架構,而不是圖8中的點對點架構。

            現在參考圖9,所示為根據本發明的實施例的更具體的第二示例性系統900的框圖。圖8和9中的類似元件使用類似附圖標記,且在圖9中省略了圖8的某些方面以避免混淆圖9的其它方面。

            圖9示出處理器870、880可以分別包括集成存儲器和i/o控制邏輯(“cl”)872和882。因此,cl872、882包括集成存儲器控制器單元并包括i/o控制邏輯。圖9示出不僅存儲器832、834耦合到cl872、882,而且i/o設備914也耦合到控制邏輯872、882。傳統i/o設備915被耦合至芯片組890。

            現在參照圖10,所示出的是根據本發明的實施例的soc1000的框圖。圖6中相似的部件具有同樣的附圖標記。另外,虛線框是更先進的soc的可選特征。在圖10中,互連單元1002被耦合至:應用處理器1010,該應用處理器包括一個或多個核202a-n的集合以及共享高速緩存單元606;系統代理單元610;總線控制器單元616;集成存儲器控制器單元614;一組或一個或多個協處理器1020,其可包括集成圖形邏輯、圖像處理器、音頻處理器和視頻處理器;靜態隨機存取存儲器(sram)單元1030;直接存儲器存取(dma)單元1032;以及用于耦合至一個或多個外部顯示器的顯示單元1040。在一個實施例中,協處理器1020包括專用處理器,諸如例如網絡或通信處理器、緊縮引擎、gpgpu、高吞吐量mic處理器、或嵌入式處理器等等。

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

            可將程序代碼(諸如圖8中示出的代碼830)應用于輸入指令,以執行本文描述的各功能并生成輸出信息。可以按已知方式將輸出信息應用于一個或多個輸出設備。為了本申請的目的,處理系統包括具有諸如例如數字信號處理器(dsp)、微控制器、專用集成電路(asic)或微處理器之類的處理器的任何系統。

            程序代碼可以用高級程序化語言或面向對象的編程語言來實現,以便與處理系統通信。在需要時,也可用匯編語言或機器語言來實現程序代碼。事實上,本文中描述的機制不限于任何特定編程語言的范圍。在任一情形下,該語言可以是編譯語言或解釋語言。

            至少一個實施例的一個或多個方面可以由存儲在機器可讀介質上的表示性指令來實現,指令表示處理器中的各種邏輯,指令在被機器讀取時使得該機器制作用于執行本文所述的技術的邏輯。被稱為“ip核”的這些表示可以被存儲在有形的機器可讀介質上,并被提供給多個客戶或生產設施以加載到實際制造該邏輯或處理器的制造機器中。

            這樣的機器可讀存儲介質可以包括但不限于通過機器或設備制造或形成的物品的非瞬態的有形安排,其包括存儲介質,諸如:硬盤;任何其它類型的盤,包括軟盤、光盤、緊致盤只讀存儲器(cd-rom)、緊致盤可重寫(cd-rw)以及磁光盤;半導體器件,例如只讀存儲器(rom)、諸如動態隨機存取存儲器(dram)和靜態隨機存取存儲器(sram)之類的隨機存取存儲器(ram)、可擦除可編程只讀存儲器(eprom)、閃存、電可擦除可編程只讀存儲器(eeprom);相變存儲器(pcm);磁卡或光卡;或適于存儲電子指令的任何其它類型的介質。

            因此,本發明的各實施例還包括非暫態有形機器可讀介質,該介質包含指令或包含設計數據,諸如硬件描述語言(hdl),它定義本文中描述的結構、電路、裝置、處理器和/或系統特征。這些實施例也被稱為程序產品。

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

            圖11是根據本發明的各實施例的對照使用軟件指令轉換器將源指令集中的二進制指令轉換成目標指令集中的二進制指令的框圖。在所示的實施例中,指令轉換器是軟件指令轉換器,但作為替代,該指令轉換器可以用軟件、固件、硬件或其各種組合來實現。圖11示出可以使用x86編譯器1104來編譯高級語言1102形式的程序以生成可由具有至少一個x86指令集核的處理器1116原生地執行的x86二進制代碼1106。具有至少一個x86指令集核的處理器1116表示能通過兼容地執行或以其他方式處理以下內容來執行與具有至少一個x86指令集核的英特爾處理器基本相同的功能的任何處理器:(1)英特爾x86指令集核的指令集的本質部分,或(2)目標為在具有至少一個x86指令集核的英特爾處理器上運行以實現與具有至少一個x86指令集核的英特爾處理器基本相同的結果的應用或其他軟件的目標代碼版本。x86編譯器1104表示可用于生成x86二進制代碼1106(例如,目標代碼)的編譯器,該x86二進制代碼1106能夠通過附加的鏈接處理或無需附加的鏈接處理而在具有至少一個x86指令集核的處理器1116上被執行。類似地,圖11示出可以使用替代的指令集編譯器1108來編譯高級語言1102的程序以生成可由不具有至少一個x86指令集核的處理器1114(例如,具有執行加利福尼亞州桑尼維爾市的mips技術公司的mips指令集和/或執行加利福尼州桑尼維爾市的arm控股公司的arm指令集的核的處理器)原生地執行的替代的指令集二進制代碼1110。指令轉換器1112用于將x86二進制代碼1106轉換成可以由不具有x86指令集核的處理器1114原生地執行的代碼。該轉換后的代碼不大可能與替代的指令集二進制代碼1110相同,因為能夠這樣做的指令轉換器難以制造;然而,轉換后的代碼將完成通用操作,并且將由來自替代指令集的指令構成。因此,指令轉換器1112表示軟件、固件、硬件或它們的組合,這些軟件、固件、硬件或它們的組合通過仿真、模擬或任何其他過程允許不具有x86指令集處理器或核的處理器或其他電子設備執行x86二進制代碼1106。

            用于在掩碼寄存器和向量寄存器之間可變地擴展的方法和裝置

            下文描述了可變掩碼-向量擴展指令,其可變地將掩碼位擴展至向量數據元素,反之亦然。在一個特定實施例中,可變掩碼-向量擴展指令利用目的地向量寄存器來存儲結果、利用源掩碼寄存器來存儲源掩碼值、以及利用索引值來標識源掩碼值的會被擴展至目的地向量寄存器內的具體向量數據元素的部分。可變掩碼-向量擴展指令的另一實施例利用目的地掩碼寄存器來存儲結果、利用源向量寄存器來存儲會被擴展的向量值、以及利用索引值來標識特定源向量值以設置目的地掩碼寄存器中的每個位。

            下文描述的掩碼-向量擴展指令的一個實施例采取以下形式:vpvarmaskexpvec[b/w/d/q]{k1}dst_simd_reg,src_mask_reg,src_simd_dstindexreg,其中b/w/d/q指示是以字節、字、雙字還是四字值執行指令,k1是用于寫掩碼的可選掩碼寄存器;dst_simd_reg包括目的地向量寄存器,src_mask_reg包括源掩碼寄存器,并且src_simd_dstindexreg包括索引。另一實施例采取vpvarmaskexpvec[b/w/d/q]{k1}dst_mask_reg,src_simd_reg,src_simd_dstindexreg的形式,其中dst_mask_reg包括目的地掩碼寄存器,src_simd_reg包括源向量寄存器,并且src_simd_dstindexreg包括索引。當然,本發明的基本原理不限于任何特定形式的指令解碼或表示。

            可以通過使用例如向量比較指令將來自條件語句的值存儲在掩碼寄存器中。在這種情形下,每個掩碼位表示條件值(位0或1分別指示假和真)。在處理器架構的一個實施例中,存在8個架構掩碼寄存器k0-k7,k0-k7中只有k1-k7可以被尋址為斷言操作數。高性能計算(hpc)代碼包括向量循環中的大量計算和條件,增加了掩碼寄存器的壓力并且可能導致溢出-填充。此外,掩碼寄存器在將常數或值加載到通用寄存器或從通用寄存器加載時攜載開銷,導致代碼膨脹和性能損失。

            本文中描述的本發明的實施例可變地將掩碼值擴展到simd向量寄存器,反之亦然,以通過將掩碼值傳遞到simd向量寄存器中的隨機位置來改善條件計算的速度。然后可以邏輯地將條件計算與simd向量寄存器(下文中“向量寄存器”)中的掩碼值進行“and/or”操作。因此掩碼寄存器到向量寄存器以及從向量寄存器到掩碼寄存器的可變擴展將強大的和高效的工具呈現給終端用戶和編譯器向量化器。

            如圖12所示,在其上可以實現本發明的實施例的示例性處理器1255包括通用寄存器(gpr)1205的集合、向量寄存器1206的集合以及掩碼寄存器1207的集合。在一個實施例中,將多個向量數據元素緊縮到每個向量寄存器1206中,每個向量寄存器1206可以具有512位寬度以用于存儲兩個256位值、四個128位值、八個64位值、十六個32位值等等。然而,本發明的基本原理不限于任何具體大小/類型的向量數據。在一個實施例中,掩碼寄存器1207包括八個64位操作數掩碼寄存器,用于對存儲在向量寄存器1206中的值執行位掩碼操作(例如,實現為上文所描述的掩碼寄存器k0-k7)。然而,本發明的基本原理不限于任何具體的掩碼寄存器大小/類型。

            為簡單起見,在圖12中示出單個處理器核(“核0”)的細節。然而,將會理解,圖12中所示的每個核都可具有與核0相同的邏輯集合。例如,每個核可包括根據指定的高速緩存管理策略的用于高速緩存指令和數據的專用一級(l1)高速緩存1212和二級(l2)高速緩存1211。l1高速緩存1212包括用于存儲指令的單獨的指令高速緩存1220和用于存儲數據的單獨的數據高速緩存1221。存儲在各種處理器高速緩存之內的指令和數據以可以是固定尺寸(如,64字節、128字節、512字節長度的)高速緩存行的粒度被管理。該示例性實施例的每個核具有:從主存儲器1200和/或共享的三級(l3)高速緩存1216取出指令的指令取出單元1210;用于對指令進行解碼(例如,將程序指令解碼成微操作或“uops”)的解碼單元1220;用于執行指令的執行單元1240;以及用于引退指令和寫回結果的寫回單元1250。

            指令取出單元1210包括各種公知的組件,包括:用于存儲要從存儲器1200(或高速緩存中的一個)取出的下一指令的地址的下一指令指針1203;用于存儲最近使用的虛擬向物理指令地址的映射以改善地址轉換速度的指令轉換后備緩沖器(itlb)1204;用于推測地預測指令分支地址的分支預測單元1202;以及用于存儲分支地址和目標地址的分支目標緩沖器(btb)1201。一旦被取出,隨后指令被流式地傳送到指令流水線的其余的級,包括,解碼單元1230、執行單元1240和寫回單元1250。本領域普通技術人員已很好地理解這些單元中的每一個的結構和功能,將不在此詳細對其進行描述以避免使本發明的不同實施例的相關方面不清楚。

            在一個實施例中,處理器1255的每個核包括用于執行本文中所描述的可變掩碼-向量擴展操作的可變掩碼-向量擴展邏輯。具體而言,在一個實施例中,解碼單元1230包括用于解碼本文中所描述的可變掩碼-向量擴展指令(例如,在一個實施例中解碼為微操作的序列)的可變掩碼-向量擴展解碼邏輯1231,并且執行單元1240包括用于執行可變掩碼-向量擴展指令的可變掩碼-向量擴展執行邏輯1241。

            圖13示出示例性實施例,其包括用于存儲源掩碼位值b0-b7的源掩碼寄存器1301和用于將可變掩碼-向量擴展操作的結果存儲在多個64位向量數據元素(位于63:0、127:64、191:128等等)中的目的地向量寄存器1302。雖然為簡單起見在源掩碼寄存器1301中只示出了8位,將理解可以使用任意數量的位的源掩碼寄存器來實現本文中所描述的本發明的實施例。例如,在一個實施例中,每個掩碼寄存器是64位(例如,諸如上文所描述的k0-k7寄存器)。此外,雖然在圖13中目的地向量寄存器1302是具有64位向量數據元素的512位寄存器,本發明的基本原理不限于任何特定的向量寄存器大小或數據元素大小。

            在一個實施例中,可變掩碼-向量擴展邏輯1300使用存儲在索引寄存器1304(在一個實施例中,其是另一個向量寄存器)內的索引來標識來自源掩碼寄存器1301的每一位。具體而言,目的地向量寄存器1302內的每個向量數據元素可以與索引寄存器中的標識來自源掩碼1301的位的不同索引值相關聯。在一個實施例中,可變掩碼-向量擴展邏輯1300將被索引的位從源掩碼復制到相關聯的向量數據元素,用被索引的位的值填充整個向量數據元素。因此,例如,如果索引指示具有1的值的位0會被復制到向量數據元素#5,則向量數據元素#5將被設置為全1的值(例如,對于64位向量元素的十六進制表示為0xffffffffffffffff)。

            此外,可變掩碼-向量擴展邏輯1300的一個實施例可以采用使用讀取自單獨的掩碼寄存器1303的掩碼值的寫掩碼操作。例如,對于掩碼值00001111(從最高有效位到最低有效位排列),響應于可變掩碼-向量擴展指令只可以寫入目的地向量寄存器的四個最高有效數據元素(例如,511:448、447:384等等)。不寫入(與掩碼值1相關聯的)其他四個數據元素并且因此保持它們的現有值。

            在一個實施例中,可變掩碼-向量擴展邏輯1300包括由索引寄存器1304和掩碼寄存器1303控制的復用器的集合以從源掩碼寄存器1301的位位置中的每一個選擇位并且將位擴展至目的地向量寄存器1302內的向量數據元素中的每一個。

            圖14中示出使用掩碼值11010000和一組索引值5、4、7、6、1、0、2、3(兩者均從最高有效到最低有效排列)的具體示例。如上所述,每個索引值基于其位置與不同的目的地向量數據元素相關聯。因此,索引值3與向量數據元素63:0相關聯;索引值2與目的地向量數據元素127:64相關聯;索引值0與目的地向量數據元素191:128相關聯等等。每個索引值的值標識來自源掩碼寄存器1301的位。因此,索引3標識來自源掩碼寄存器1301的位3的位值0。因此,目的地向量數據元素63:0填充為全部是0。索引2標識來自源掩碼寄存器1301的位2的位值0,并且由此目的地向量數據元素127:64填充為全部是0。基于經由相關聯的索引值標識的來自源掩碼寄存器的值,剩余的向量數據元素按此方式填充,產生圖14中示出的型式。在圖14中示出的實施例中未采用寫掩碼操作。

            更具體地,使用下列形式的可變掩碼-向量擴展指令:vpvarmaskexpvec[b/w/d/q],dst_simd_reg,src_mask_reg,src_simd_dstindexreg其中:

            →src_mask_reg具有1101000的值(從位7到位0排列);

            →src_simd_dstindexreg是zmm2=5,4,7,6,1,0,3,2;以及

            →dst_simd_reg是zmm1(即,vpmaskexpandvecqzmm1,k1,zmm2),在zmm1中生成下列結果(與圖14一致):

            zmm1[0:63]=0x0

            zmm1[64:127]=0x0

            zmm1[128:191]=0x0

            zmm1[192:255]=0x0

            zmm1[256:319]=0xffffffffffffffff

            zmm1[320:383]=0xffffffffffffffff

            zmm1[384:447]=0xffffffffffffffff

            zmm1[448:511]=0x0

            圖15示出其中執行寫掩碼的示例。在掩碼寄存器1303中存儲值00001111。值1意味著對相關聯的向量數據元素執行寫掩碼。因此,可變掩碼-向量擴展邏輯1300未寫入目的地向量的四個最低有效向量數據元素(即,63:0、127:64、191:128、255:192)。由此,它們保持它們先前的值,在示出的示例中,它們先前的值是1的值。可變掩碼-向量擴展邏輯1300如上所述地更新剩余的向量元素。

            更具體地,使用下列形式的可變掩碼-向量擴展指令:vpmaskexpandvecq{k2}zmm1,k1,zmm2并且假設:

            →zmm1以全部是1開始

            →k2(掩碼值)=00001111(從msb到lsb)

            →src_mask_reg=k1具有值11010000(msb到lsb)

            →src_simd_dstindexregzmm2=5,4,7,6,1,0,2,3(msb到lsb)

            那么:

            zmm1[0:63]=0xffffffffffffffff

            zmm1[64:127]=0xffffffffffffffff

            zmm1[128:191]=0xffffffffffffffff

            zmm1[192:255]=0xffffffffffffffff

            zmm1[256:319]=0xffffffffffffffff

            zmm1[320:383]=0xffffffffffffffff

            zmm1[384:447]=0xffffffffffffffff

            zmm1[448:511]=0x0

            如上所述,可變掩碼-向量擴展指令的一個實施例執行逆操作-即,根據源向量寄存器中的數據元素的值設置目的地掩碼寄存器中的位。圖16示出一個特定實施例,其包括用于存儲源向量數據元素(例如,位于63:0、127:64、191:128等等的64位向量數據元素)的源向量寄存器1601和用于將可變掩碼-向量擴展操作的結果存儲在多個掩碼位值b0-b7中的目的地掩碼寄存器1602。同樣,雖然為簡單起見在目的地掩碼寄存器1601中只示出了8位,將理解可以使用任意數量的位的目的地掩碼寄存器來實現本文中所描述的本發明的實施例。例如,在一個實施例中,每個掩碼寄存器是64位(例如,諸如上文所描述的k0-k7寄存器)。此外,雖然在圖16中源向量寄存器1601是具有64位向量數據元素的512位寄存器,本發明的基本原理不限于任何特定的向量寄存器大小或數據元素大小。

            在一個實施例中,可變掩碼-向量擴展邏輯1300使用存儲在索引寄存器1604(在一個實施例中,其是另一個向量寄存器)內的索引來標識來自源向量寄存器1601的每個向量數據元素。具體而言,目的地掩碼寄存器1602內的每個位可以與索引寄存器中的標識來自源向量寄存器1601的向量數據元素的不同索引值相關聯。在一個實施例中,可變掩碼-向量擴展邏輯1300將向量數據元素內的位的值從源向量復制到相關聯的掩碼位(回想整個向量數據元素被1或0填充)。因此,例如,如果索引指示填充為全部是1的向量數據元素#5會被復制到掩碼位#4,則掩碼位#4將被設置為1。

            此外,如以上一些實施例中的,可變掩碼-向量擴展邏輯1300可以采用使用讀取自單獨的掩碼寄存器1603的掩碼值的寫掩碼。例如,對于掩碼值00001111(從最高有效到最低有效),響應于可變掩碼-向量擴展指令只可以寫入目的地掩碼寄存器的四個最高有效位(例如,位7:4)。不寫入(與掩碼值1相關聯的)其他四位并且因此保持它們的現有值。

            圖17示出其中索引寄存器1604存儲值5、4、7、6、1、0、2、3的具體示例。因此,索引3與目的地掩碼寄存器的位0相關聯,并且指向源向量1601的向量數據元素255:192,向量數據元素255:192全部是0。因此,位0設置為0的值。索引6與目的地掩碼寄存器的位4相關聯,并且指向向量數據元素447:384,向量數據元素447:384全部是1。因此,位4設置為1的值。在圖17中假設不執行寫掩碼。

            更具體地,使用下列形式的可變掩碼-向量擴展指令:vpvarmaskexpvec[b/w/d/q]{k1}dst_mask_reg,src_simd_reg,src_simd_dstindexreg,其中:

            src_simd_dstindexregzmm2=5,4,7,6,1,0,2,3

            src_simd_regzmm1包括下列值:

            zmm1[0:63]=0x0

            zmm1[64:127]=0x0

            zmm1[128:191]=0x0

            zmm1[192:255]=0x0

            zmm1[256:319]=0xffffffffffffffff

            zmm1[320:383]=0xffffffffffffffff

            zmm1[384:447]=0xffffffffffffffff

            zmm1[448:511]=0x0

            然后對于vpmaskexpandvecqk1,zmm1,zmm2:

            dst_mask_reg=k1具有值11010000(msb到lsb)

            此外,如果執行寫掩碼,即,vpmaskexpandvecq{k2}k1,zmm1,zmm2,其中掩碼寄存器k2=00001111(即,只擴展較高階256位元素),則k1具有值11010000。

            在圖18中示出根據本發明的一個實施例的方法。該方法可在上述架構的情境內執行,但并不限于任何特定系統架構。

            在1801處,從存儲器取出或從高速緩存(例如,l1、l2或l3高速緩存)讀出可變掩碼-向量擴展指令。在1802處,將輸入掩碼位存儲在源掩碼寄存器中,將索引存儲在索引寄存器中,并且將掩碼值存儲在掩碼寄存器中(如果使用寫掩碼操作的話)。在1803處,讀取索引以標識來自源掩碼寄存器的會被復制到目的地向量寄存器的對應的向量數據元素的每個掩碼位。在1804處,將來自源掩碼寄存器的每個位復制到目的地向量寄存器中的指定向量數據元素,用掩碼位的值(例如,全部是1或全部是0)來填充向量數據元素中的所有位。在一個實施例中,執行此操作,除非啟用寫掩碼并且1的值與向量數據元素相關聯(在此情形下不寫入向量數據元素并且保留其先前值)。最后,在1805處,可以將包括掩碼值的向量數據元素用于執行一個或多個條件操作。

            在圖19中示出根據本發明的一個實施例的用于從向量寄存器擴展到掩碼寄存器的方法。該方法可在上述架構的情境內執行,但并不限于任何特定系統架構。

            在1901處,從存儲器取出或從高速緩存(例如,l1、l2或l3高速緩存)讀出可變掩碼-向量擴展指令。在1902處,將輸入向量數據存儲在源向量寄存器中,將索引存儲在索引寄存器中,并且將掩碼值存儲在掩碼寄存器中(如果使用寫掩碼的話)。在1903處,讀取索引以標識來自源向量寄存器的會被復制到目的地掩碼寄存器的對應的位的每個向量數據元素。在1904處,將來自源向量寄存器的每個位值復制到目的地掩碼寄存器中的指定位位置。如上所述,可以用全部是1或全部是0(分別指示掩碼值1或0)來填充每個向量數據元素。在一個實施例中,執行此操作,除非啟用寫掩碼并且1的值與掩碼寄存器的位相關聯(在此情形下不寫入位并且保留其先前值)。最后,在1905處,可以將掩碼值用于執行一個或多個條件操作。

            如上所述,掩碼-向量擴展指令給予用戶和編譯器可變地將掩碼值擴展到simd向量寄存器中的任何地方的能力。此外,可以對指令進行掩碼,只允許擴展到simd向量寄存器中的某些元素。從simd向量寄存器到目的地掩碼寄存器中的任何地方的逆可變擴展也是無須涉及一組復雜的置換和混洗的強大指令。

            在前述的說明書中,已經參考本發明的特定示例性實施例描述了本發明的多個實施例。然而,顯然可對這些實施例作出各種修改和改變,而不背離如所附權利要求所述的本發明的更寬泛精神和范圍。因此,說明書和附圖應被認為是說明性而非限制性意義。

            本發明的多個實施例可包括上述各個步驟。可在可用于使通用或專用處理器執行這些步驟的機器可執行指令中具體化這些步驟。或者,可由包含用于執行這些步驟的硬連線邏輯的專用硬件組件,或可由被編程的計算機組件和自定義硬件組件的任何組合來執行這些步驟。

            如本文中所描述的,指令可以指硬件的具體配置,例如,配置成用于執行某些操作或具有預定功能的專用集成電路(asic),或者被存儲在被具體化在非暫態計算機可讀介質中的存儲器中的軟件指令。因而,附圖中示出的技術可以使用存儲在一個或多個電子設備(例如,終端站、網絡元件等等)并在其上執行的代碼和數據來實現。此類電子設備使用諸如非暫態計算機機器可讀存儲介質(例如,磁盤;光盤;隨機存取存儲器;只讀存儲器;閃存設備;相變存儲器)之類的計算機機器可讀介質和暫態計算機機器可讀通信介質(例如,電、光、聲或其他形式的傳播信號——諸如載波、紅外信號、數字信號等)來(內部地和/或在網絡上與其他電子設備之間進行)存儲和傳遞代碼和數據。另外,此類電子設備一般包括耦合至一個或多個其他組件的一個或多個處理器的集合,所述一個或多個其他組件例如是一個或多個存儲設備(非暫態機器可讀存儲介質)、用戶輸入/輸出設備(例如,鍵盤、觸摸屏和/或顯示器)以及網絡連接。該組處理器和其他組件的耦合一般是通過一個或多個總線和橋(也稱為總線控制器)實現的。存儲設備和攜帶網絡話務的信號分別表示一個或多個機器可讀存儲介質和機器可讀通信介質。因此,給定電子設備的存儲設備通常存儲用于在該電子設備的一個或多個處理器的集合上執行的代碼和/或數據。當然,本發明的實施例的一個或多個部分可使用軟件、固件和/或硬件的不同組合來實現。貫穿此具體實施方式,為了進行解釋,陳述了眾多具體細節以提供對本發明的透徹理解。然而,對本領域技術人員顯而易見的是,沒有這些具體細節中的一些細節也可實施本發明。在某些實例中,并不詳細描述公知的結構和功能,以免使本發明的主題模糊。因此,本發明的范圍和精神應根據所附權利要求書來確定。

            當前第1頁1 2 
            網友詢問留言 已有0條留言
            • 還沒有人留言評論。精彩留言會獲得點贊!
            1
            婷婷六月激情在线综合激情,亚洲国产大片,久久中文字幕综合婷婷,精品久久久久久中文字幕,亚洲一区二区三区高清不卡,99国产精品热久久久久久夜夜嗨 ,欧美日韩亚洲综合在线一区二区,99国产精品电影,伊人精品线视天天综合,精品伊人久久久大香线蕉欧美
            亚洲精品1区 国产成人一级 91精品国产欧美一区二区 亚洲精品乱码久久久久久下载 国产精品久久久久久久伊一 九色国产 国产精品九九视频 伊人久久成人爱综合网 欧美日韩亚洲区久久综合 欧美日本一道免费一区三区 夜夜爽一区二区三区精品 欧美日韩高清一区二区三区 国产成人av在线 国产精品对白交换绿帽视频 国产视频亚洲 国产在线欧美精品 国产精品综合网 国产日韩精品欧美一区色 国产日韩精品欧美一区喷 欧美日韩在线观看区一二 国产区精品 欧美视频日韩视频 中文字幕天天躁日日躁狠狠躁97 视频一二三区 欧美高清在线精品一区二区不卡 国产精品揄拍一区二区久久 99久久综合狠狠综合久久aⅴ 亚洲乱码视频在线观看 日韩在线第二页 亚洲精品无码专区在线播放 成人亚洲网站www在线观看 欧美三级一区二区 99久久精品免费看国产高清 91麻豆国产在线观看 最新日韩欧美不卡一二三区 成人在线观看不卡 日韩国产在线 在线亚洲精品 亚洲午夜久久久久中文字幕 国产精品成人久久久久久久 精品国产一区二区在线观看 欧美精品国产一区二区三区 中文在线播放 亚洲第一页在线视频 国产午夜精品福利久久 九色国产 精品国产九九 国产永久视频 久久精品人人做人人综合试看 国产一区二区三区免费观看 亚洲精品国产电影 9999热视频 国产精品资源在线 麻豆久久婷婷国产综合五月 国产精品免费一级在线观看 亚洲国产一区二区三区青草影视 中文在线播放 国产成人综合在线 国产在线观看色 国产亚洲三级 国产片一区二区三区 久久99精品久久久久久牛牛影视 亚洲欧美日韩国产 四虎永久免费网站 国产一毛片 国产精品视频在 九九热在线精品 99精品福利视频 色婷婷色99国产综合精品 97成人精品视频在线播放 精品久久久久久中文字幕 亚洲欧美一区二区三区孕妇 亚洲欧美成人网 日韩高清在线二区 国产尤物在线观看 在线不卡一区二区 91网站在线看 韩国精品福利一区二区 欧美日韩国产成人精品 99热精品久久 国产精品免费视频一区 高清视频一区 精品九九久久 欧美日韩在线观看免费 91欧美激情一区二区三区成人 99福利视频 亚洲国产精品91 久热国产在线 精品久久久久久中文字幕女 国产精品久久久久久久久99热 成人自拍视频网 国产精品视频久久久久久 久久影院国产 国产玖玖在线观看 99精品在线免费 亚洲欧美一区二区三区导航 久久久久久久综合 国产欧美日韩精品高清二区综合区 国产精品视频自拍 亚洲一级片免费 久久久久久九九 国产欧美自拍视频 视频一区二区在线观看 欧美日韩一区二区三区久久 中文在线亚洲 伊人热人久久中文字幕 日韩欧美亚洲国产一区二区三区 欧美亚洲国产成人高清在线 欧美日韩国产码高清综合人成 国产性大片免费播放网站 亚洲午夜综合网 91精品久久一区二区三区 国产无套在线播放 国产精品视频网站 国产成人亚洲精品老王 91在线网站 国产视频97 欧美黑人欧美精品刺激 国产一区二区三区免费在线视频 久久久国产精品免费看 99re6久精品国产首页 久久精品91 国产成人一级 国产成人精品曰本亚洲 日本福利在线观看 伊人成综合网 久久综合一本 国产综合久久久久久 久久精品成人免费看 久久福利 91精品国产91久久久久久麻豆 亚洲精品成人在线 亚洲伊人久久精品 欧美日本二区 国产永久视频 国产一区二 一区二区福利 国产一毛片 亚洲精品1区 毛片一区二区三区 伊人久久大香线蕉综合影 国产欧美在线观看一区 亚洲国产欧洲综合997久久 国产一区二区免费视频 国产91精品对白露脸全集观看 久久亚洲国产伦理 欧美成人伊人久久综合网 亚洲性久久久影院 久久99国产精一区二区三区! 91精品国产欧美一区二区 欧美日韩亚洲区久久综合 日韩精品一二三区 久久久夜色精品国产噜噜 国产在线精品福利91香蕉 久久久久久久亚洲精品 97se色综合一区二区二区 91国语精品自产拍在线观看性色 91久久国产综合精品女同我 日韩中文字幕a 国产成人亚洲日本精品 久久国产精品-国产精品 久久国产经典视频 久久国产精品伦理 亚洲第一页在线视频 国产精品久久久久三级 日韩毛片网 久久免费高清视频 麻豆国产在线观看一区二区 91麻豆国产福利在线观看 国产成人精品男人的天堂538 一区二区三区中文字幕 免费在线视频一区 欧美日韩国产成人精品 国产综合网站 国产资源免费观看 亚洲精品亚洲人成在线播放 精品久久久久久中文字幕专区 亚洲人成人毛片无遮挡 国产一起色一起爱 国产香蕉精品视频在 九九热免费观看 日韩亚洲欧美一区 九九热精品在线观看 精品久久久久久中文字幕专区 亚洲欧美自拍偷拍 国产精品每日更新 久久久久国产一级毛片高清板 久久天天躁狠狠躁夜夜中文字幕 久久精品片 日韩在线毛片 国产成人精品本亚洲 国产成人精品一区二区三区 九九热在线观看 国产r级在线观看 国产欧美日韩精品高清二区综合区 韩国电影一区二区 国产精品毛片va一区二区三区 五月婷婷伊人网 久久一区二区三区免费 一本色道久久综合狠狠躁篇 亚洲综合色站 国产尤物在线观看 亚洲一区亚洲二区 免费在线视频一区 欧洲精品视频在线观看 日韩中文字幕a 中文字幕日本在线mv视频精品 91精品在线免费视频 精品国产免费人成在线观看 精品a级片 中文字幕日本在线mv视频精品 日韩在线精品视频 婷婷丁香色 91精品国产高清久久久久 国产成人精品日本亚洲直接 五月综合视频 欧美日韩在线亚洲国产人 精液呈暗黄色 亚洲乱码一区 久久精品中文字幕不卡一二区 亚洲天堂精品在线 激情婷婷综合 国产免费久久精品久久久 国产精品亚洲二区在线 久久免费播放视频 五月婷婷丁香综合 在线亚洲欧美日韩 久久免费精品高清麻豆 精品久久久久久中文字幕 亚洲一区网站 国产精品福利社 日韩中文字幕免费 亚洲综合丝袜 91精品在线播放 国产精品18 亚洲日日夜夜 伊人久久大香线蕉综合影 亚洲精品中文字幕乱码影院 亚洲一区二区黄色 亚洲第一页在线视频 一区二区在线观看视频 国产成人福利精品视频 亚洲高清二区 国内成人免费视频 精品亚洲性xxx久久久 国产精品合集一区二区三区 97av免费视频 国产一起色一起爱 国产区久久 国产资源免费观看 99精品视频免费 国产成人一级 国产精品九九免费视频 欧美91精品久久久久网免费 99热国产免费 久久精品色 98精品国产综合久久 久久精品播放 中文字幕视频免费 国产欧美日韩一区二区三区在线 精品久久蜜桃 国产小视频精品 一本色道久久综合狠狠躁篇 91在线免费观看 亚洲精品区 伊人成综合网 伊人热人久久中文字幕 伊人黄色片 99国产精品热久久久久久夜夜嗨 久久免费精品视频 亚洲一区二区三区高清不卡 久久久久国产一级毛片高清板 国产片一区二区三区 久久狠狠干 99久久婷婷国产综合精品电影 国产99区 国产精品成人久久久久 久久狠狠干 青青国产在线观看 亚洲高清国产拍精品影院 国产精品一区二区av 九九热在线免费视频 伊人久久国产 国产精品久久久久久久久久一区 在线观看免费视频一区 国产精品自在在线午夜区app 国产精品综合色区在线观看 国产毛片久久久久久国产毛片 97国产免费全部免费观看 国产精品每日更新 国产尤物视频在线 九九视频这里只有精品99 一本一道久久a久久精品综合 久久综合给会久久狠狠狠 国产成人精品男人的天堂538 欧美一区二区高清 毛片一区二区三区 国产欧美日韩在线观看一区二区三区 在线国产二区 欧美不卡网 91在线精品中文字幕 在线国产福利 国内精品91久久久久 91亚洲福利 日韩欧美国产中文字幕 91久久精品国产性色也91久久 亚洲性久久久影院 欧美精品1区 国产热re99久久6国产精品 九九热免费观看 国产精品欧美日韩 久久久久国产一级毛片高清板 久久国产经典视频 日韩欧美亚洲国产一区二区三区 欧美亚洲综合另类在线观看 国产精品自在在线午夜区app 97中文字幕在线观看 视频一二三区 精品国产一区在线观看 国产欧美日韩在线一区二区不卡 欧美一区二三区 伊人成人在线观看 国内精品91久久久久 97在线亚洲 国产在线不卡一区 久久久全免费全集一级全黄片 国产精品v欧美精品∨日韩 亚洲毛片网站 在线不卡一区二区 99re热在线视频 久久激情网 国产毛片一区二区三区精品 久久亚洲综合色 中文字幕视频免费 国产视频亚洲 婷婷伊人久久 国产一区二区免费播放 久久99国产精品成人欧美 99国产在线视频 国产成人免费视频精品一区二区 国产不卡一区二区三区免费视 国产码欧美日韩高清综合一区 久久精品国产主播一区二区 国产一区电影 久久精品国产夜色 国产精品国产三级国产 日韩一区二区三区在线 久久97久久97精品免视看 久久国产免费一区二区三区 伊人久久大香线蕉综合电影网 99re6久精品国产首页 久久激情网 亚洲成人高清在线 国产精品网址 国产成人精品男人的天堂538 香蕉国产综合久久猫咪 国产专区中文字幕 91麻豆精品国产高清在线 久久国产经典视频 国产精品成人va在线观看 国产精品爱啪在线线免费观看 日本精品久久久久久久久免费 亚洲综合一区二区三区 久久五月网 精品国产网红福利在线观看 久久综合亚洲伊人色 亚洲国产精品久久久久久网站 在线日韩国产 99国产精品热久久久久久夜夜嗨 国产综合精品在线 国产区福利 精品亚洲综合久久中文字幕 国产制服丝袜在线 毛片在线播放网站 在线观看免费视频一区 国产精品久久久精品三级 亚洲国产电影在线观看 最新日韩欧美不卡一二三区 狠狠综合久久综合鬼色 日本精品1在线区 国产日韩一区二区三区在线播放 欧美日韩精品在线播放 亚洲欧美日韩国产一区二区三区精品 久久综合久久网 婷婷六月激情在线综合激情 亚洲乱码一区 国产专区91 97av视频在线观看 精品久久久久久中文字幕 久久五月视频 国产成人福利精品视频 国产精品网址 中文字幕视频在线 精品一区二区三区免费视频 伊人手机在线视频 亚洲精品中文字幕乱码 国产在线视频www色 色噜噜国产精品视频一区二区 精品亚洲成a人在线观看 国产香蕉尹人综合在线 成人免费一区二区三区在线观看 国产不卡一区二区三区免费视 欧美精品久久天天躁 国产专区中文字幕 久久精品国产免费中文 久久精品国产免费一区 久久无码精品一区二区三区 国产欧美另类久久久精品免费 欧美精品久久天天躁 亚洲精品在线视频 国产视频91在线 91精品福利一区二区三区野战 日韩中文字幕免费 国产精品99一区二区三区 欧美成人高清性色生活 国产精品系列在线观看 亚洲国产福利精品一区二区 国产成人在线小视频 国产精品久久久久免费 99re热在线视频 久久久久久久综合 一区二区国产在线播放 成人国产在线视频 亚洲精品乱码久久久久 欧美日韩一区二区综合 精品久久久久免费极品大片 中文字幕视频二区 激情粉嫩精品国产尤物 国产成人精品一区二区视频 久久精品中文字幕首页 亚洲高清在线 国产精品亚洲一区二区三区 伊人久久艹 中文在线亚洲 国产精品一区二区在线播放 国产精品九九免费视频 亚洲二区在线播放 亚洲狠狠婷婷综合久久久久网站 亚洲欧美日韩网站 日韩成人精品 亚洲国产一区二区三区青草影视 91精品国产福利在线观看 国产精品久久久久久久久99热 国产一区二区精品尤物 久碰香蕉精品视频在线观看 亚洲日日夜夜 在线不卡一区二区 国产午夜亚洲精品 九九热在线视频观看这里只有精品 伊人手机在线视频 91免费国产精品 日韩欧美中字 91精品国产91久久久久 国产全黄三级播放 视频一区二区三区免费观看 国产开裆丝袜高跟在线观看 国产成人欧美 激情综合丝袜美女一区二区 国产成人亚洲综合无 欧美精品一区二区三区免费观看 欧美亚洲国产日韩 日韩亚州 国产欧美日韩精品高清二区综合区 亚洲午夜国产片在线观看 精品久久久久久中文字幕 欧美精品1区 久久伊人久久亚洲综合 亚洲欧美日韩精品 国产成人精品久久亚洲高清不卡 久久福利影视 国产精品99精品久久免费 久久久久免费精品视频 国产日产亚洲精品 亚洲国产午夜电影在线入口 精品无码一区在线观看 午夜国产精品视频 亚洲一级片免费 伊人久久大香线蕉综合影 国产精品久久影院 久碰香蕉精品视频在线观看 www.欧美精品 在线小视频国产 亚洲国产天堂久久综合图区 欧美一区二区三区不卡 日韩美女福利视频 九九精品免视频国产成人 不卡国产00高中生在线视频 亚洲第一页在线视频 欧美日韩在线播放成人 99re视频这里只有精品 国产精品91在线 精品乱码一区二区三区在线 国产区久久 91麻豆精品国产自产在线观看一区 日韩精品成人在线 九九热在线观看 国产精品久久不卡日韩美女 欧美一区二区三区综合色视频 欧美精品免费一区欧美久久优播 国产精品网址 国产专区中文字幕 国产精品欧美亚洲韩国日本久久 日韩美香港a一级毛片 久久精品123 欧美一区二区三区免费看 99r在线视频 亚洲精品国产字幕久久vr 国产综合激情在线亚洲第一页 91免费国产精品 日韩免费小视频 亚洲国产精品综合一区在线 国产亚洲第一伦理第一区 在线亚洲精品 国产精品一区二区制服丝袜 国产在线成人精品 九九精品免视频国产成人 亚洲国产网 欧美日韩亚洲一区二区三区在线观看 在线亚洲精品 欧美一区二区三区高清视频 国产成人精品男人的天堂538 欧美日韩在线观看区一二 亚洲欧美一区二区久久 久久精品中文字幕首页 日本高清www午夜视频 久久精品国产免费 久久999精品 亚洲国产精品欧美综合 88国产精品视频一区二区三区 91久久偷偷做嫩草影院免费看 国产精品夜色视频一区二区 欧美日韩导航 国产成人啪精品午夜在线播放 一区二区视频在线免费观看 99久久精品国产自免费 精液呈暗黄色 久久99国产精品 日本精品久久久久久久久免费 精品国产97在线观看 99re视频这里只有精品 国产视频91在线 999av视频 亚洲美女视频一区二区三区 久久97久久97精品免视看 亚洲国产成人久久三区 99久久亚洲国产高清观看 日韩毛片在线视频 综合激情在线 91福利一区二区在线观看 一区二区视频在线免费观看 激情粉嫩精品国产尤物 国产成人精品曰本亚洲78 国产成人精品本亚洲 国产精品成人免费视频 国产成人啪精品视频免费软件 久久精品国产亚洲妲己影院 国产精品成人久久久久久久 久久大香线蕉综合爱 欧美一区二区三区高清视频 99热国产免费 在线观看欧美国产 91精品视频在线播放 国产精品福利社 欧美精品一区二区三区免费观看 国产一区二区免费视频 国产午夜精品一区二区 精品视频在线观看97 91精品福利久久久 国产一区福利 国产综合激情在线亚洲第一页 国产精品久久久久久久久久久不卡 九色国产 在线日韩国产 黄网在线观看 亚洲一区小说区中文字幕 中文字幕丝袜 日本二区在线观看 日本国产一区在线观看 欧美日韩一区二区三区久久 欧美精品亚洲精品日韩专 国产日产亚洲精品 久久综合九色综合欧美播 亚洲国产欧美无圣光一区 欧美视频区 亚洲乱码视频在线观看 久久无码精品一区二区三区 九九热精品免费视频 久久99精品久久久久久牛牛影视 国产精品成久久久久三级 国产一区福利 午夜国产精品视频 日本二区在线观看 99久久网站 国产亚洲天堂 精品国产一区二区三区不卡 亚洲国产日韩在线一区 国产成人综合在线观看网站 久久免费高清视频 欧美在线导航 午夜精品久久久久久99热7777 欧美久久综合网 国产小视频精品 国产尤物在线观看 亚洲国产精品综合一区在线 欧美一区二区三区不卡视频 欧美黑人欧美精品刺激 日本福利在线观看 久久国产偷 国产手机精品一区二区 国产热re99久久6国产精品 国产高清啪啪 欧美亚洲国产成人高清在线 国产在线第三页 亚洲综合一区二区三区 99r在线视频 99精品久久久久久久婷婷 国产精品乱码免费一区二区 国产在线精品福利91香蕉 国产尤物视频在线 五月婷婷亚洲 中文字幕久久综合伊人 亚洲精品一级毛片 99国产精品电影 在线视频第一页 久久99国产精品成人欧美 国产白白视频在线观看2 成人精品一区二区www 亚洲成人网在线观看 麻豆91在线视频 色综合合久久天天综合绕视看 久久精品国产免费高清 国产不卡一区二区三区免费视 欧美国产中文 99精品欧美 九九在线精品 国产中文字幕在线免费观看 国产一区中文字幕在线观看 国产成人一级 国产精品一区二区制服丝袜 国产一起色一起爱 亚洲精品成人在线 亚洲欧美精品在线 国产欧美自拍视频 99精品久久久久久久婷婷 久99视频 国产热re99久久6国产精品 视频一区亚洲 国产精品视频分类 国产精品成在线观看 99re6久精品国产首页 亚洲在成人网在线看 亚洲国产日韩在线一区 久久国产三级 日韩国产欧美 欧美在线一区二区三区 国产精品美女一级在线观看 成人午夜免费福利视频 亚洲天堂精品在线 91精品国产手机 欧美日韩视频在线播放 狠狠综合久久综合鬼色 九一色视频 青青视频国产 亚洲欧美自拍一区 中文字幕天天躁日日躁狠狠躁97 日韩免费大片 996热视频 伊人成综合网 亚洲天堂欧美 日韩精品亚洲人成在线观看 久久综合给会久久狠狠狠 日韩精品亚洲人成在线观看 日韩国产欧美 亚洲成aⅴ人片在线影院八 亚洲精品1区 99久久精品免费 国产精品高清在线观看 国产精品久久久免费视频 在线亚洲欧美日韩 91在线看视频 国产精品96久久久久久久 欧美日韩国产成人精品 91在线亚洲 热久久亚洲 国产精品美女免费视频观看 日韩在线毛片 亚洲永久免费视频 九九免费在线视频 亚洲一区网站 日本高清二区视频久二区 精品国产美女福利在线 伊人久久艹 国产精品久久久久三级 欧美成人精品第一区二区三区 99久久精品国产自免费 在线观看日韩一区 国产中文字幕一区 成人免费午夜视频 欧美日韩另类在线 久久99国产精品成人欧美 色婷婷中文网 久久天天躁夜夜躁狠狠躁2020 欧美成人伊人久久综合网 国产精品福利资源在线 国产伦精品一区二区三区高清 国产精品亚洲综合色区韩国 亚洲一区欧美日韩 色综合视频 国语自产精品视频在线区 国产高清a 成人国内精品久久久久影 国产在线精品香蕉综合网一区 国产不卡在线看 国产成人精品精品欧美 国产欧美日韩综合精品一区二区三区 韩国电影一区二区 国产在线视频www色 91中文字幕在线一区 国产人成午夜免视频网站 亚洲综合一区二区三区 色综合视频一区二区观看 久久五月网 九九热精品在线观看 国产一区二区三区国产精品 99久热re在线精品996热视频 亚洲国产网 在线视频亚洲一区 日韩字幕一中文在线综合 国产高清一级毛片在线不卡 精品国产色在线 国产高清视频一区二区 精品日本久久久久久久久久 亚洲国产午夜精品乱码 成人免费国产gav视频在线 日韩欧美一区二区在线观看 欧美曰批人成在线观看 韩国电影一区二区 99re这里只有精品6 日韩精品一区二区三区视频 99re6久精品国产首页 亚洲欧美一区二区三区导航 欧美色图一区二区三区 午夜精品视频在线观看 欧美激情在线观看一区二区三区 亚洲热在线 成人国产精品一区二区网站 亚洲一级毛片在线播放 亚洲一区小说区中文字幕 亚洲午夜久久久久影院 国产自产v一区二区三区c 国产精品视频免费 久久调教视频 国产成人91激情在线播放 国产精品欧美亚洲韩国日本久久 久久亚洲日本不卡一区二区 91中文字幕网 成人国产在线视频 国产视频91在线 欧美成人精品第一区二区三区 国产精品福利在线 久久综合九色综合精品 欧美一区二区三区精品 久久国产综合尤物免费观看 久久99青青久久99久久 日韩精品免费 久久国产精品999 91亚洲视频在线观看 国产精品igao视频 色综合区 在线亚洲欧国产精品专区 国产一区二区三区在线观看视频 亚洲精品成人在线 一区二区国产在线播放 中文在线亚洲 亚洲精品第一国产综合野 国产一区二区精品久久 一区二区三区四区精品视频 99热精品久久 中文字幕视频二区 国产成人精品男人的天堂538 99精品影视 美女福利视频一区二区 久久午夜夜伦伦鲁鲁片 综合久久久久久久综合网 国产精品国产欧美综合一区 国产99视频在线观看 国产亚洲女在线精品 婷婷影院在线综合免费视频 国产亚洲3p一区二区三区 91成人爽a毛片一区二区 亚洲一区二区高清 国产欧美亚洲精品第二区首页 欧美日韩导航 亚洲高清二区 欧美激情观看一区二区久久 日韩毛片在线播放 亚洲欧美日韩高清中文在线 亚洲日本在线播放 国产精品一区二区制服丝袜 精品国产一区二区三区不卡 国产不卡在线看 国产欧美网站 四虎永久在线观看视频精品 国产黄色片在线观看 夜夜综合 一本色道久久综合狠狠躁篇 欧美亚洲综合另类在线观看 国产91在线看 伊人久久国产 欧美一区二区在线观看免费网站 国产精品久久久久三级 久久福利 日韩中文字幕a 亚洲午夜久久久久影院 91在线高清视频 国产亚洲一区二区三区啪 久久人精品 国产精品亚洲午夜一区二区三区 综合久久久久久 久久伊人一区二区三区四区 国产综合久久久久久 日韩一区精品视频在线看 国产精品日韩欧美制服 日本精品1在线区 99re视频 无码av免费一区二区三区试看 国产视频1区 日韩欧美中文字幕一区 日本高清中文字幕一区二区三区a 亚洲国产欧美无圣光一区 国产在线视频一区二区三区 欧美国产第一页 在线亚洲欧美日韩 日韩中文字幕第一页 在线不卡一区二区 伊人久久青青 国产精品一区二区在线播放 www.五月婷婷 麻豆久久婷婷国产综合五月 亚洲精品区 久久国产欧美另类久久久 99在线视频免费 伊人久久中文字幕久久cm 久久精品成人免费看 久久这里只有精品首页 88国产精品视频一区二区三区 中文字幕日本在线mv视频精品 国产在线精品成人一区二区三区 伊人精品线视天天综合 亚洲一区二区黄色 国产尤物视频在线 亚洲精品99久久久久中文字幕 国产一区二区三区免费观看 伊人久久大香线蕉综合电影网 国产成人精品区在线观看 日本精品一区二区三区视频 日韩高清在线二区 久久免费播放视频 一区二区成人国产精品 国产精品免费精品自在线观看 亚洲精品视频二区 麻豆国产精品有码在线观看 精品日本一区二区 亚洲欧洲久久 久久中文字幕综合婷婷 中文字幕视频在线 国产成人精品综合在线观看 91精品国产91久久久久福利 精液呈暗黄色 香蕉国产综合久久猫咪 国产专区精品 亚洲精品无码不卡 国产永久视频 亚洲成a人片在线播放观看国产 一区二区国产在线播放 亚洲一区二区黄色 欧美日韩在线观看视频 亚洲精品另类 久久国产综合尤物免费观看 国产一区二区三区国产精品 高清视频一区 国产精品igao视频 国产精品资源在线 久久综合精品国产一区二区三区 www.五月婷婷 精品色综合 99热国产免费 麻豆福利影院 亚洲伊人久久大香线蕉苏妲己 久久电影院久久国产 久久精品伊人 在线日韩理论午夜中文电影 亚洲国产欧洲综合997久久 伊人国产精品 久草国产精品 欧美一区精品二区三区 亚洲成人高清在线 91免费国产精品 日韩精品福利在线 国产一线在线观看 国产不卡在线看 久久99青青久久99久久 亚洲精品亚洲人成在线播放 99久久免费看国产精品 国产日本在线观看 青草国产在线视频 麻豆久久婷婷国产综合五月 国产中文字幕一区 91久久精品国产性色也91久久 国产一区a 国产欧美日韩成人 国产亚洲女在线精品 一区二区美女 中文字幕在线2021一区 在线小视频国产 久久这里只有精品首页 国产在线第三页 欧美日韩中文字幕 在线亚洲+欧美+日本专区 精品国产一区二区三区不卡 久久这里精品 欧美在线va在线播放 精液呈暗黄色 91精品国产手机 91在线免费播放 欧美视频亚洲色图 欧美国产日韩精品 日韩高清不卡在线 精品视频免费观看 欧美日韩一区二区三区四区 国产欧美亚洲精品第二区首页 亚洲韩精品欧美一区二区三区 国产精品视频免费 在线精品小视频 久久午夜夜伦伦鲁鲁片 国产无套在线播放 久热这里只精品99re8久 欧美久久久久 久久香蕉国产线看观看精品蕉 国产成人精品男人的天堂538 亚洲人成网站色7799在线观看 日韩在线第二页 一本色道久久综合狠狠躁篇 国产一区二区三区不卡在线观看 亚洲乱码在线 在线观看欧美国产 久久福利青草精品资源站免费 国产玖玖在线观看 在线亚洲精品 亚洲成aⅴ人在线观看 精品91在线 欧美一区二三区 日韩中文字幕视频在线 日本成人一区二区 日韩免费专区 国内精品在线观看视频 久久国产综合尤物免费观看 国产精品系列在线观看 一本一道久久a久久精品综合 亚洲免费播放 久久精品国产免费 久久人精品 亚洲毛片网站 亚洲成a人一区二区三区 韩国福利一区二区三区高清视频 亚洲精品天堂在线 一区二区三区中文字幕 亚洲国产色婷婷精品综合在线观看 亚洲国产成人久久笫一页 999国产视频 国产精品香港三级在线电影 欧美日韩一区二区三区四区 日韩国产欧美 国产精品99一区二区三区 午夜国产精品理论片久久影院 亚洲精品中文字幕麻豆 亚洲国产高清视频 久久免费手机视频 日韩a在线观看 五月婷婷亚洲 亚洲精品中文字幕麻豆 中文字幕丝袜 www国产精品 亚洲天堂精品在线 亚洲乱码一区 国产日韩欧美三级 久久999精品 伊人热人久久中文字幕 久热国产在线视频 国产欧美日韩在线观看一区二区三区 国产一二三区在线 日韩国产欧美 91精品国产91久久久久 亚洲一区小说区中文字幕 精品一区二区免费视频 国产精品视频免费 国产精品亚洲综合色区韩国 亚洲国产精品成人午夜在线观看 欧美国产日韩精品 中文字幕精品一区二区精品