亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于提供向量分散操作和聚集操作功能的指令和邏輯的制作方法

文檔序號:12362720閱讀:314來源:國知局
用于提供向量分散操作和聚集操作功能的指令和邏輯的制作方法與工藝

技術(shù)領(lǐng)域

本公開涉及處理邏輯、微處理器以及相關(guān)的指令集體系結(jié)構(gòu)的領(lǐng)域,這些指令集體系結(jié)構(gòu)在被處理器或其他處理邏輯所執(zhí)行時運(yùn)行邏輯、數(shù)學(xué)或其他功能性操作。具體而言,本公開涉及用于提供向量分散操作和/或聚集操作功能的指令和邏輯。



背景技術(shù):

目前的諸多處理器通常包括用于提供計(jì)算密集型操作但提供高度數(shù)據(jù)并行性的指令,這些指令可通過使用多種數(shù)據(jù)存儲設(shè)備的高效實(shí)現(xiàn)來使用,這些數(shù)據(jù)存儲設(shè)備諸如:單指令多數(shù)據(jù)(SIMD)向量寄存器。

將應(yīng)用或軟件代碼向量化可包括使該應(yīng)用在特定系統(tǒng)或指令集體系結(jié)構(gòu)(諸如例如寬或大寬度向量體系結(jié)構(gòu))上編譯、安裝和/或運(yùn)行。對于一些應(yīng)用,由于向量寬度增加(例如用于諸如三維(3D)圖像渲染之類的操作),存儲器訪問可能是復(fù)雜的、不一致的或不連續(xù)的。用于向量化進(jìn)程的存儲器可能被存儲在不連續(xù)或不鄰近的存儲器位置中。多種體系結(jié)構(gòu)可能需要額外的指令,這些額外的指令最小化了指令吞吐量,并顯著增加在執(zhí)行任何算術(shù)操作之前對寄存器中的數(shù)據(jù)進(jìn)行排序所需的時鐘周期的數(shù)量。

用于改善存儲器訪問和對去往和來自更寬向量的數(shù)據(jù)進(jìn)行排序的機(jī)制可包括實(shí)現(xiàn)聚集和分散操作,以針對來自其他非本地和/或不連續(xù)的存儲器位置的數(shù)據(jù)產(chǎn)生本地連續(xù)的存儲器訪問。聚集操作可從存儲裝置中的一組不連續(xù)或隨機(jī)的存儲器位置收集數(shù)據(jù),并將不同的數(shù)據(jù)組合到打包結(jié)構(gòu)中。分散操作可將打包結(jié)構(gòu)中的元素散開至一組不連續(xù)或隨機(jī)的存儲器位置。這些存儲器位置中的一些可能未被高速緩存,或已經(jīng)被移出物理存儲器的分頁。

如果聚集操作由于頁面錯誤或一些其他原因而中斷,在一些體系結(jié)構(gòu)下,機(jī)器的狀態(tài)可能未保存,從而需要重復(fù)整個聚集操作,而不是在聚集操作中斷的位置處重新開始。由于在任一聚集操作上可能需要多次存儲器訪問,所以可能需要許多時鐘周期來完成,任何后續(xù)的依賴算術(shù)操作必須等待該聚集操作完成。這樣的延遲代表瓶頸,該瓶頸會限制例如從寬或大寬度向量體系結(jié)構(gòu)原本預(yù)期的性能優(yōu)勢。

到目前為止,尚未充分探索針對這樣的性能受限問題和瓶頸的潛在解決方案。

附圖說明

在附圖的各圖中通過示例而非限制地示出本發(fā)明。

圖1A是執(zhí)行用于提供向量分散操作和/或聚集操作功能的指令的系統(tǒng)的一個實(shí)施例的框圖。

圖1B是執(zhí)行用于提供向量分散操作和/或聚集操作功能的指令的系統(tǒng)的另一實(shí)施例的框圖。

圖1C是執(zhí)行用于提供向量分散操作和/或聚集操作功能的指令的系統(tǒng)的另一實(shí)施例的框圖。

圖2是執(zhí)行用于提供向量分散操作和/或聚集操作功能的指令的處理器的一個實(shí)施例的框圖。

圖3A示出根據(jù)一個實(shí)施例的打包數(shù)據(jù)類型。

圖3B示出根據(jù)一個實(shí)施例的打包數(shù)據(jù)類型。

圖3C示出根據(jù)一個實(shí)施例的打包數(shù)據(jù)類型。

圖3D示出根據(jù)一個實(shí)施例的編碼成用于提供向量分散操作和/或聚集操作功能的指令。

圖3E示出根據(jù)另一實(shí)施例的編碼成用于提供向量分散操作和/或聚集操作功能的指令。

圖3F示出根據(jù)另一實(shí)施例的編碼成用于提供向量分散操作和/或聚集操作功能的指令。

圖3G示出根據(jù)另一實(shí)施例的編碼成用于提供向量分散操作和/或聚集操作功能的指令。

圖3H示出根據(jù)另一實(shí)施例的編碼成用于提供向量分散操作和/或聚集操作功能的指令。

圖4A示出用于執(zhí)行提供向量分散操作和/或聚集操作功能的指令的處理器微體系結(jié)構(gòu)的一個實(shí)施例的要素。

圖4B示出用于執(zhí)行提供向量分散操作和/或聚集操作功能的指令的處理器微體系結(jié)構(gòu)的另一實(shí)施例的要素。

圖5是用于執(zhí)行提供向量分散操作和/或聚集操作功能的指令的處理器的一個實(shí)施例的框圖。

圖6是用于執(zhí)行提供向量分散操作和/或聚集操作功能的指令的計(jì)算機(jī)系統(tǒng)的一個實(shí)施例的框圖。

圖7是用于執(zhí)行提供向量分散操作和/或聚集操作功能的指令的計(jì)算機(jī)系統(tǒng)的另一實(shí)施例的框圖。

圖8是用于執(zhí)行提供向量分散操作和/或聚集操作功能的指令的計(jì)算機(jī)系統(tǒng)的另一實(shí)施例的框圖。

圖9是用于執(zhí)行提供向量分散操作和/或聚集操作功能的指令的芯片上系統(tǒng)的一個實(shí)施例的框圖。

圖10是用于執(zhí)行提供向量分散操作和/或聚集操作功能的指令的處理器的實(shí)施例的框圖。

圖11是提供向量分散操作和/或聚集操作功能的IP核開發(fā)系統(tǒng)的一個實(shí)施例的框圖。

圖12示出提供向量分散操作和/或聚集操作功能的體系結(jié)構(gòu)仿真系統(tǒng)的一個實(shí)施例。

圖13示出用于轉(zhuǎn)換提供向量分散操作和/或聚集操作功能的指令的系統(tǒng)的一個實(shí)施例。

圖14示出用于提供向量聚集操作功能的過程的一個實(shí)施例的流程圖。

圖15示出用于提供向量聚集操作功能的過程的另一實(shí)施例的流程圖。

圖16示出用于提供向量分散操作功能的過程的一個實(shí)施例的流程圖。

圖17示出用于提供向量分散操作功能的過程的另一實(shí)施例的流程圖。

具體實(shí)施方式

下文描述了位于處理器、計(jì)算機(jī)系統(tǒng)或其他處理設(shè)備之內(nèi)或與處理器、計(jì)算機(jī)系統(tǒng)或其他處理設(shè)備相關(guān)聯(lián)的用于提供向量分散操作和/或聚集操作功能的指令和處理邏輯。

在一些實(shí)施例中,響應(yīng)于指定例如聚集和第二操作、目的地寄存器、操作數(shù)寄存器以及存儲器地址的指令,執(zhí)行單元讀取掩碼寄存器中的值,其中掩碼寄存器中的字段對應(yīng)于存儲器中的數(shù)據(jù)元素的索引寄存器中的偏移量索引。第一掩碼值指示該元素尚未從存儲器中被聚集,而第二值指示該元素?zé)o需被聚集或已經(jīng)被聚集。對于具有第一值的每個數(shù)據(jù)元素,將該數(shù)據(jù)元素從存儲器聚集到相應(yīng)的目的地寄存器位置中,并且將掩碼寄存器中的相應(yīng)值改成第二值。當(dāng)所有的掩碼寄存器字段具有第二值時,利用目的地和操作數(shù)寄存器中的相應(yīng)數(shù)據(jù)來執(zhí)行第二操作以產(chǎn)生結(jié)果。在一些替代實(shí)施例中,響應(yīng)于指定例如分散和第一操作、目的地寄存器、操作數(shù)寄存器以及存儲器地址的指令,執(zhí)行單元可在使用或不使用掩碼寄存器的情況下執(zhí)行第一操作,并且掩碼值可用來指示所得的元素是否已被分散至存儲器,或者指示該元素?zé)o需被分散至存儲器或已經(jīng)被分散至存儲器。

在以下描述中,陳述了諸如處理邏輯、處理器類型、微體系結(jié)構(gòu)狀況、事件、啟用機(jī)制等多種特定細(xì)節(jié),以提供對本發(fā)明實(shí)施例的更透徹理解。然而,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)領(lǐng)會,沒有這些具體細(xì)節(jié)也可實(shí)踐本發(fā)明。此外,沒有詳細(xì)示出一些公知的結(jié)構(gòu)、電路等等,以避免不必要地模糊本發(fā)明的實(shí)施例。

雖然下述的諸個實(shí)施例參照處理器來描述,但其他實(shí)施例也適用于其他類型的集成電路和邏輯設(shè)備。本發(fā)明的實(shí)施例的類似技術(shù)和教導(dǎo)可應(yīng)用于其它類型的電路或半導(dǎo)體器件,這些其它類型的電路或半導(dǎo)體器件也可受益于更高的流水線吞吐量和提高的性能。本發(fā)明的諸個實(shí)施例的教示適用于執(zhí)行數(shù)據(jù)操縱的任何處理器或機(jī)器。然而,本發(fā)明不限于執(zhí)行512位、256位、128位、64位、32位、或16位數(shù)據(jù)運(yùn)算的處理器或機(jī)器,并適用于執(zhí)行數(shù)據(jù)操縱或管理的任何處理器和機(jī)器。此外,下述描述提供了示例,并且附圖出于示意性目的示出了多個示例。然而,這些示例不應(yīng)該被理解為具有限制性目的,因?yàn)樗鼈儍H僅旨在提供本發(fā)明的諸個實(shí)施例的示例,而并非對本發(fā)明的實(shí)施例的所有可能實(shí)現(xiàn)方式進(jìn)行窮舉。

雖然下述的示例描述了在執(zhí)行單元和邏輯電路情況下的指令處理和分配,但本發(fā)明的其他實(shí)施例也可通過存儲在機(jī)器可讀有形介質(zhì)上的數(shù)據(jù)和/或指令來完成,這些數(shù)據(jù)和/或指令在被機(jī)器執(zhí)行時使得機(jī)器執(zhí)行與本發(fā)明至少一個實(shí)施例相一致的功能。在一個實(shí)施例中,與本發(fā)明的實(shí)施例相關(guān)聯(lián)的功能被具體化在機(jī)器可執(zhí)行指令中。這些指令可用來使通過這些指令編程的通用處理器或?qū)S锰幚砥鲌?zhí)行本發(fā)明的步驟。本發(fā)明的諸個實(shí)施例也可以作為計(jì)算機(jī)程序產(chǎn)品或軟件來提供,該計(jì)算機(jī)程序產(chǎn)品或軟件可包括其上存儲有指令的機(jī)器或計(jì)算機(jī)可讀介質(zhì),這些指令可被用來對計(jì)算機(jī)(或其他電子設(shè)備)進(jìn)行編程來執(zhí)行根據(jù)本發(fā)明的實(shí)施例的一個或多個操作。另選地,本發(fā)明的諸個實(shí)施例的這些步驟可由包含用于執(zhí)行這些步驟的固定功能邏輯的專用硬件組件來執(zhí)行,或由經(jīng)編程的計(jì)算機(jī)組件以及固定功能硬件組件的任何組合來執(zhí)行。

被用于對邏輯進(jìn)行編程以執(zhí)行本發(fā)明的諸個實(shí)施例的指令可被存儲在系統(tǒng)中的存儲器(諸如,DRAM、高速緩存、閃存、或其他存儲器)內(nèi)。進(jìn)一步的,指令可經(jīng)由網(wǎng)絡(luò)或其他計(jì)算機(jī)可讀介質(zhì)來分發(fā)。因此,計(jì)算機(jī)可讀介質(zhì)可包括用于以機(jī)器(諸如,計(jì)算機(jī))可讀的格式存儲或發(fā)送信息的任何機(jī)制,但不限于:磁盤、光盤、致密盤只讀存儲器(CD-ROM)、磁光盤、只讀存儲器(ROM)、隨機(jī)存取存儲器(RAM)、可擦除可編程只讀存儲器(EPROM)、電可擦除可編程只讀存儲器(EEPROM)、磁卡或光卡、閃存、或在經(jīng)由互聯(lián)網(wǎng)通過電、光、聲、或其他形式的傳播信號(諸如,載波、紅外信號、數(shù)字信號等)發(fā)送信息中所用的有形機(jī)器可讀存儲器。因此,計(jì)算機(jī)可讀介質(zhì)包括用于存儲或發(fā)送機(jī)器(例如,計(jì)算機(jī))可讀形式的電子指令或信息的任何類型的有形機(jī)器可讀介質(zhì)。

設(shè)計(jì)會經(jīng)歷多個級,從創(chuàng)新到模擬到制造。表示設(shè)計(jì)的數(shù)據(jù)可用多種方式來表示該設(shè)計(jì)。首先,如模擬中將有用的,可使用硬件描述語言或其他功能性描述語言來表示硬件。此外,具有邏輯和/或晶體管門電路的電路級模型可在設(shè)計(jì)流程的其他級產(chǎn)生。此外,大多數(shù)設(shè)計(jì)在某些級都達(dá)到表示硬件模型中多種設(shè)備的物理配置的數(shù)據(jù)水平。在使用常規(guī)半導(dǎo)體制造技術(shù)的情況下,表示硬件模型的數(shù)據(jù)可以是在不同掩模層上對用于生成集成電路的掩模指示不同特征的存在與否的數(shù)據(jù)。在任何的設(shè)計(jì)表示中,數(shù)據(jù)可被存儲在任何形式的機(jī)器可讀介質(zhì)中。存儲器或磁/光存儲器(諸如,盤)可以是存儲信息的機(jī)器可讀介質(zhì),這些信息是經(jīng)由光學(xué)或電學(xué)波來發(fā)送的,這些光學(xué)或電學(xué)波被調(diào)制或以其他方式生成以傳送這些信息。當(dāng)發(fā)送指示或承載代碼或設(shè)計(jì)的電學(xué)載波時,執(zhí)行電信號的復(fù)制、緩沖或重傳情況時,制作一個新的副本。因此,通信提供商或網(wǎng)絡(luò)提供商會在有形機(jī)器可讀介質(zhì)上至少臨時地存儲具體化本發(fā)明的諸個實(shí)施例的技術(shù)的物品(諸如,編碼在載波中的信息)。

在現(xiàn)代處理器中,多個不同執(zhí)行單元被用于處理和執(zhí)行多種代碼和指令。并不是所有指令都被同等地創(chuàng)建,因?yàn)槠渲杏幸恍└斓乇煌瓿啥硪恍┬枰鄠€時鐘周期來完成。指令的吞吐量越快,則處理器的總體性能越好。因此,使大量指令盡可能快地執(zhí)行將會是有利的。然而,某些指令具有更大的復(fù)雜度,并需要更多的執(zhí)行時間和處理器資源。例如,存在浮點(diǎn)指令、加載/存儲操作、數(shù)據(jù)移動等等。

因?yàn)楦嗟挠?jì)算機(jī)系統(tǒng)被用于互聯(lián)網(wǎng)、文本以及多媒體應(yīng)用,所以逐漸地引進(jìn)更多的處理器支持。在一個實(shí)施例中,指令集可與一個或多個計(jì)算機(jī)體系結(jié)構(gòu)相關(guān)聯(lián),一個或多個計(jì)算機(jī)體系結(jié)構(gòu)包括數(shù)據(jù)類型、指令、寄存器體系結(jié)構(gòu)、尋址模式、存儲器體系結(jié)構(gòu)、中斷和異常處理、外部輸入輸出(I/O)。

在一個實(shí)施例中,指令集體系結(jié)構(gòu)(ISA)可由一個或更多微體系結(jié)構(gòu)來執(zhí)行,微體系結(jié)構(gòu)包括用于實(shí)現(xiàn)一個或多個指令集的處理器邏輯和電路。相應(yīng)地,具有不同微體系結(jié)構(gòu)的諸個處理器可共享公共指令集的至少一部分。例如,奔騰四(Pentium 4)處理器、酷睿(CoreTM)處理器、以及來自加利福尼亞州桑尼威爾(Sunnyvale)的超微半導(dǎo)體有限公司(Advanced Micro Devices,Inc.)的諸多處理器執(zhí)行幾乎相同版本的x86指令集(在更新的版本中加入了一些擴(kuò)展),但具有不同的內(nèi)部設(shè)計(jì)。類似地,由其他處理器開發(fā)公司(諸如,ARM控股有限公司、MIPS或它們的授權(quán)方或兼容方)所設(shè)計(jì)的諸多處理器可共享至少一部分公共指令集,但可包括不同的處理器設(shè)計(jì)。例如,ISA的相同寄存器體系結(jié)構(gòu)在不同的微體系結(jié)構(gòu)中可使用新的或已知的技術(shù)以不同方法來實(shí)現(xiàn),包括專用物理寄存器、使用寄存器重命名機(jī)制(諸如,使用寄存器別名表RAT、重排序緩沖器ROB、以及隱退寄存器組)的一個或多個動態(tài)分配物理寄存器。在一個實(shí)施例中,寄存器可包括:可由軟件編程者尋址或不可尋址的一個或多個寄存器、寄存器體系結(jié)構(gòu)、寄存器組、或其他寄存器集合。

在一個實(shí)施例中,指令可包括一個或多個指令格式。在一個實(shí)施例中,指令格式可指示多個字段(位的數(shù)目、位的位置等)以特別指定將要被執(zhí)行的操作以及將要被執(zhí)行的操作的操作數(shù)。一些指令格式可進(jìn)一步被指令模板(或子格式)所細(xì)分定義。例如,給定指令格式的指令模板可被定義為具有指令格式字段的不同的子集,和/或被定義為具有不同解釋的給定字段。在一個實(shí)施例中,使用指令格式(并且,如果定義過,則以該指令格式的一個給定指令模板)來表示指令,并且該指令指定或指示操作以及該操作將操作的操作數(shù)。

科學(xué)應(yīng)用、金融應(yīng)用、自動向量化通用應(yīng)用、RMS(識別、挖掘和合成)應(yīng)用以及視覺和多媒體應(yīng)用(諸如,2D/3D圖形、圖像處理、視頻壓縮/解壓縮、語音識別算法和音頻處理)可能需要對大量數(shù)據(jù)項(xiàng)執(zhí)行相同的操作。在一個實(shí)施例中,單指令多數(shù)據(jù)(SIMD)指的是使得處理器在多個數(shù)據(jù)元素上執(zhí)行一操作的一種類型的指令。SIMD技術(shù)可被用于處理器中,這些處理器將寄存器中的諸個位(bit)邏輯地劃分入多個固定大小或可變大小的數(shù)據(jù)元素,每個數(shù)據(jù)元素表示單獨(dú)的值。例如,在一個實(shí)施例中,64位寄存器中的諸個位可被組織為包含四個單獨(dú)的16位數(shù)據(jù)元素的源操作數(shù),每個數(shù)據(jù)元素表示單獨(dú)的16位值。該數(shù)據(jù)類型可被稱為“打包”數(shù)據(jù)類型或“向量”數(shù)據(jù)類型,并且該數(shù)據(jù)類型的操作數(shù)被稱為打包數(shù)據(jù)操作數(shù)或向量操作數(shù)。在一個實(shí)施例中,打包數(shù)據(jù)項(xiàng)或向量可以是存儲在單個寄存器中的打包數(shù)據(jù)元素的序列,并且打包數(shù)據(jù)操作數(shù)或向量操作數(shù)可以是SIMD指令(或“打包數(shù)據(jù)指令”或“向量指令”)的源操作數(shù)或目的地操作數(shù)。在一個實(shí)施例中,SIMD指令指定了將要對兩個源向量操作數(shù)執(zhí)行的單個向量操作,以生成具有相同或不同大小的、具有相同或不同數(shù)量的數(shù)據(jù)元素的、具有相同或不同數(shù)據(jù)元素次序的目的地向量操作數(shù)(也被稱為結(jié)果向量操作數(shù))。

諸如由酷睿(CoreTM)處理器(具有包括x86、MMXTM、流SIMD擴(kuò)展(SSE)、SSE2、SSE3、SSE4.1、SSE4.2指令的指令集)、ARM處理器(諸如,ARM處理器族,具有包括向量浮點(diǎn)(VFP)和/或NEON指令的指令集)、MIPS處理器(諸如,中國科學(xué)院計(jì)算機(jī)技術(shù)研究所(ICT)開發(fā)的龍芯處理器族)所使用的SIMD技術(shù)之類的SIMD技術(shù)在應(yīng)用性能上帶來了極大的提高(CoreTM和MMXTM是加利福尼亞州圣克拉拉市的英特爾公司的注冊商標(biāo)或商標(biāo))。

在一個實(shí)施例中,目的地寄存器/數(shù)據(jù)和源寄存器/數(shù)據(jù)是表示對應(yīng)數(shù)據(jù)或操作的源和目的地的通用術(shù)語。在一些實(shí)施例中,它們可由寄存器、存儲器或具有與所示出的那些名稱或功能不同的名稱或功能的其他存儲區(qū)域所實(shí)現(xiàn)。例如,在一個實(shí)施例中,“DEST1”可以是臨時存儲寄存器或其他存儲區(qū)域,而“SRC1”和“SRC2”是第一和第二源存儲寄存器或其他存儲區(qū)域,等等。在其他實(shí)施例中,SRC和DEST存儲區(qū)域中的兩個或更多區(qū)域可對應(yīng)于相同存儲區(qū)域中的不同數(shù)據(jù)存儲元素(例如,SIMD寄存器)。在一個實(shí)施例中,例如通過將對第一和第二源數(shù)據(jù)執(zhí)行的操作的結(jié)果寫回至兩個源寄存器中作為目的地寄存器的那個寄存器,源寄存器中的一個也可以作為目的地寄存器。

圖1A是根據(jù)本發(fā)明的一個實(shí)施例的示例性計(jì)算機(jī)系統(tǒng)的框圖,該計(jì)算機(jī)系統(tǒng)被形成為具有包括執(zhí)行單元以執(zhí)行指令的處理器。根據(jù)本發(fā)明,諸如根據(jù)在此所描述的實(shí)施例,系統(tǒng)100包括諸如處理器102之類的組件,以采用包括邏輯的執(zhí)行單元來執(zhí)行算法以處理數(shù)據(jù)。系統(tǒng)100代表基于可從美國加利福尼亞州圣克拉拉市的英特爾公司獲得的III、Xeontm、XScaletm和/或StrongARMtm微處理器的處理系統(tǒng),不過也可使用其它系統(tǒng)(包括具有其它微處理器的PC、工程工作站、機(jī)頂盒等)。在一個實(shí)施例中,樣本系統(tǒng)100可執(zhí)行可從美國華盛頓州雷蒙德市的微軟公司買到的WINDOWStm操作系統(tǒng)的一個版本,不過也可使用其它操作系統(tǒng)(例如UNIX和Linux)、嵌入式軟件、和/或圖形用戶界面。因此,本發(fā)明的各實(shí)施例不限于硬件和軟件的任何具體組合。

實(shí)施例不限于計(jì)算機(jī)系統(tǒng)。本發(fā)明的替換實(shí)施例可被用于其他設(shè)備,諸如手持式設(shè)備和嵌入式應(yīng)用。手持式設(shè)備的一些示例包括:蜂窩電話、互聯(lián)網(wǎng)協(xié)議設(shè)備、數(shù)碼相機(jī)、個人數(shù)字助理(PDA)、手持式PC。嵌入式應(yīng)用可包括:微控制器、數(shù)字信號處理器(DSP)、芯片上系統(tǒng)、網(wǎng)絡(luò)計(jì)算機(jī)(NetPC)、機(jī)頂盒、網(wǎng)絡(luò)中樞、廣域網(wǎng)(WAN)交換機(jī)、或可執(zhí)行參照至少一個實(shí)施例的一個或多個指令的任何其他系統(tǒng)。

圖1A是計(jì)算機(jī)系統(tǒng)100的框圖,計(jì)算機(jī)系統(tǒng)100被形成為具有處理器102,處理器102包括一個或多個執(zhí)行單元108以執(zhí)行算法,以執(zhí)行根據(jù)本發(fā)明的一個實(shí)施例的至少一個指令。參照單處理器桌面或服務(wù)器系統(tǒng)來描述了一個實(shí)施例,但替代實(shí)施例可被包括在多處理器系統(tǒng)中。系統(tǒng)100是“中樞”系統(tǒng)體系結(jié)構(gòu)的示例。計(jì)算機(jī)系統(tǒng)100包括處理器102以處理數(shù)據(jù)信號。處理器102可以是復(fù)雜指令集計(jì)算機(jī)(CISC)微處理器、精簡指令集計(jì)算(RISC)微處理器、超長指令字(VLIW)微處理器、實(shí)現(xiàn)指令集組合的處理器或任意其它處理器設(shè)備(諸如數(shù)字信號處理器)。處理器102耦合至處理器總線110,處理器總線110可在處理器102和系統(tǒng)100內(nèi)的其他組件之間傳輸數(shù)據(jù)信號。系統(tǒng)100的諸個元素執(zhí)行本領(lǐng)域所熟知的常規(guī)功能。

在一個實(shí)施例中,處理器102包括第一級(L1)內(nèi)部高速緩存存儲器104。取決于體系結(jié)構(gòu),處理器102可具有單個內(nèi)部高速緩存或多級內(nèi)部高速緩存。或者,在另一個實(shí)施例中,高速緩存存儲器可位于處理器102的外部。其他實(shí)施例也可包括內(nèi)部高速緩存和外部高速緩存的組合,這取決于特定實(shí)現(xiàn)和需求。寄存器組106可在多個寄存器(包括整數(shù)寄存器、浮點(diǎn)寄存器、狀態(tài)寄存器、指令指針寄存器)中存儲不同類型的數(shù)據(jù)。

執(zhí)行單元108(包括執(zhí)行整數(shù)和浮點(diǎn)操作的邏輯)也位于處理器102中。處理器102還包括微代碼(ucode)ROM,其存儲用于特定宏指令的微代碼。對于一個實(shí)施例,執(zhí)行單元108包括處理打包指令集109的邏輯。通過將打包指令集109包括在通用處理器102的指令集內(nèi)并包括相關(guān)的電路以執(zhí)行這些指令,可使用通用處理器102中的打包數(shù)據(jù)來執(zhí)行許多多媒體應(yīng)用所使用的操作。因此,通過將處理器數(shù)據(jù)總線的全帶寬用于對打包數(shù)據(jù)進(jìn)行操作,許多多媒體應(yīng)用可獲得加速,并更為有效率地執(zhí)行。這能減少在處理器數(shù)據(jù)總線上傳輸更小數(shù)據(jù)單元以在一個時間對一個數(shù)據(jù)元素執(zhí)行一個或多個操作的需要。

執(zhí)行單元108的替換實(shí)施例也可被用于微控制器、嵌入式處理器、圖形設(shè)備、DSP以及其他類型的邏輯電路。系統(tǒng)100包括存儲器120。存儲器設(shè)備120可以是動態(tài)隨機(jī)存取存儲器(DRAM)設(shè)備、靜態(tài)隨機(jī)存取存儲器(SRAM)設(shè)備、閃存設(shè)備或其他存儲器設(shè)備。存儲器120可存儲可由處理器102執(zhí)行的指令和/或數(shù)據(jù),數(shù)據(jù)由數(shù)據(jù)信號表示。

系統(tǒng)邏輯芯片116耦合至處理器總線110和存儲器120。在所示出的實(shí)施例中的系統(tǒng)邏輯芯片116是存儲器控制器中樞(MCH)。處理器102可經(jīng)由處理器總線110與MCH 116通信。MCH 116提供至存儲器120的高帶寬存儲器路徑118,用于指令和數(shù)據(jù)存儲,以及用于存儲圖形命令、數(shù)據(jù)和文本。MCH 116用于引導(dǎo)處理器102、存儲器120以及系統(tǒng)100內(nèi)的其他組件之間的數(shù)據(jù)信號,并在處理器總線110、存儲器120和系統(tǒng)I/O 122之間橋接數(shù)據(jù)信號。在一些實(shí)施例中,系統(tǒng)邏輯芯片116可提供耦合至圖形控制器112的圖形端口。MCH 116經(jīng)由存儲器接口118耦合至存儲器120。圖形卡112通過加速圖形端口(AGP)互連114耦合至MCH 116。

系統(tǒng)100使用外圍設(shè)備中樞接口總線122以將MCH 116耦合至I/O控制器中樞(ICH)130。ICH 130經(jīng)由局部I/O總線提供至一些I/O設(shè)備的直接連接。局部I/O總線是高速I/O總線,用于將外圍設(shè)備連接至存儲器120、芯片組以及處理器102。一些示例是音頻控制器、固件中樞(閃存BIOS)128、無線收發(fā)機(jī)126、數(shù)據(jù)存儲器124、包括用戶輸入和鍵盤接口的傳統(tǒng)I/O控制器、串行擴(kuò)展端口(諸如通用串行總線USB)以及網(wǎng)絡(luò)控制器134。數(shù)據(jù)存儲設(shè)備124可以包括硬盤驅(qū)動器、軟盤驅(qū)動器、CD-ROM設(shè)備、閃存設(shè)備、或其他大容量存儲設(shè)備。

對于系統(tǒng)的另一個實(shí)施例,根據(jù)一個實(shí)施例的指令可被用于芯片上系統(tǒng)。芯片上系統(tǒng)的一個實(shí)施例包括處理器和存儲器。用于這樣一個系統(tǒng)的存儲器是閃存存儲器。閃存存儲器可位于與處理器和其他系統(tǒng)組件相同的管芯上。此外,諸如存儲器控制器或圖形控制器之類的其他邏輯塊也可位于芯片上系統(tǒng)上。

圖1B示出數(shù)據(jù)處理系統(tǒng)140,數(shù)據(jù)處理系統(tǒng)140實(shí)現(xiàn)本發(fā)明的一個實(shí)施例的原理。本領(lǐng)域的技術(shù)人員將容易理解,在此描述的諸個實(shí)施例可用于替代處理系統(tǒng),而不背離本發(fā)明的實(shí)施例的范圍。

計(jì)算機(jī)系統(tǒng)140包括處理核159,處理核159能執(zhí)行根據(jù)一個實(shí)施例的至少一個指令。對于一個實(shí)施例,處理核159表示任何類型的體系結(jié)構(gòu)的處理單元,包括但不限于:CISC、RISC或VLIW類型體系結(jié)構(gòu)。處理核159也可適于以一種或多種處理技術(shù)來制造,并且通過充分詳細(xì)地表示在機(jī)器可讀介質(zhì)上可以便于其制造。

處理核159包括執(zhí)行單元142、一組寄存器組145以及解碼器144。處理核159也包括對于理解本發(fā)明的實(shí)施例不是必需的額外電路(沒有示出)。執(zhí)行單元142用于執(zhí)行處理核159所接收到的指令。除了執(zhí)行典型的處理器指令外,執(zhí)行單元142也執(zhí)行打包指令集143中的指令,用于對打包數(shù)據(jù)格式執(zhí)行操作。打包指令集143包括用于執(zhí)行本發(fā)明的諸個實(shí)施例的指令以及其他打包指令。執(zhí)行單元142通過內(nèi)部總線而耦合至寄存器組145。寄存器組145表示處理核159上的存儲區(qū)域,用于存儲包括數(shù)據(jù)的信息。如前所述的,可以理解,該存儲區(qū)域被用于存儲打包數(shù)據(jù)不是關(guān)鍵。執(zhí)行單元142耦合至解碼器144。解碼器144用于將處理核159所接收到的指令解碼為控制信號和/或微代碼進(jìn)入點(diǎn)。響應(yīng)于這些控制信號和/或微代碼進(jìn)入點(diǎn),執(zhí)行單元142執(zhí)行合適的操作。在一個實(shí)施例中,解碼器用于解釋指令的操作碼,操作碼指示應(yīng)當(dāng)對該指令內(nèi)所指示的對應(yīng)數(shù)據(jù)執(zhí)行何種操作。

處理核159耦合至總線141,用于與多個其他系統(tǒng)設(shè)備進(jìn)行通信,這些系統(tǒng)設(shè)備包括但不限于:例如,同步動態(tài)隨機(jī)存取存儲器(SDRAM)控制器146、靜態(tài)隨機(jī)存取存儲器(SRAM)控制器147、猝發(fā)閃存接口148、個人計(jì)算機(jī)存儲卡國際協(xié)會(PCMCIA)/致密閃存(CF)卡控制器149、液晶顯示器(LCD)控制器150、直接存儲器存取(DMA)控制器151、以及替代的總線主接口152。在一個實(shí)施例中,數(shù)據(jù)處理系統(tǒng)140也包括I/O橋154,用于經(jīng)由I/O總線153與多個I/O設(shè)備進(jìn)行通信。這樣的I/O設(shè)備可包括但不限于:例如,通用異步接收機(jī)/發(fā)射機(jī)(UART)155、通用串行總線(USB)156、藍(lán)牙無線UART 157、以及I/O擴(kuò)展接口158。

數(shù)據(jù)處理系統(tǒng)140的一個實(shí)施例提供了移動通信、網(wǎng)絡(luò)通信和/或無線通信,并提供了能夠執(zhí)行SIMD操作的處理核159,SIMD操作包括文本串比較操作。處理核159可編程有多種音頻、視頻、圖像和通信算法,包括離散變換(諸如Walsh-Hadamard變換、快速傅立葉變換(FFT)、離散余弦變換(DCT)、以及它們相應(yīng)的逆變換)、壓縮/解壓縮技術(shù)(諸如色彩空間變換)、視頻編碼運(yùn)動估計(jì)或視頻解碼運(yùn)動補(bǔ)償、以及調(diào)制/解調(diào)(MODEM)功能(諸如脈沖編碼調(diào)制PCM)。

圖1C示出了能夠執(zhí)行用于提供向量分散操作和/或聚集操作功能的指令的數(shù)據(jù)處理系統(tǒng)的其他替換實(shí)施例。根據(jù)一個替代實(shí)施例,數(shù)據(jù)處理系統(tǒng)160可包括主處理器166、SIMD協(xié)處理器161、高速緩存處理器167以及輸入/輸出系統(tǒng)168。輸入/輸出系統(tǒng)168可選地耦合至無線接口169。SIMD協(xié)處理器161能夠執(zhí)行包括根據(jù)一個實(shí)施例的指令的操作。處理核170可適于以一種或多種處理技術(shù)來制造,并且通過充分詳細(xì)地表示在機(jī)器可讀介質(zhì)上可以便于包括處理核170的數(shù)據(jù)處理系統(tǒng)160的全部或一部分的制造。

對于一個實(shí)施例,SIMD協(xié)處理器161包括執(zhí)行單元162以及一組寄存器組164。主處理器166的一個實(shí)施例包括解碼器165,用于識別指令集163的指令,指令集163包括根據(jù)一個實(shí)施例的用于由執(zhí)行單元162所執(zhí)行的指令。對于替換實(shí)施例,SIMD協(xié)處理器161也包括解碼器165B的至少一部分以解碼指令集163的指令。處理核170也包括對于理解本發(fā)明的實(shí)施例不是必需的額外電路(沒有示出)。

在操作中,主處理器166執(zhí)行數(shù)據(jù)處理指令流,數(shù)據(jù)處理指令流控制通用類型的數(shù)據(jù)處理操作,包括與高速緩存存儲器167以及輸入/輸入系統(tǒng)168的交互。SIMD協(xié)處理器指令嵌入數(shù)據(jù)處理指令流中。主處理器166的解碼器165將這些SIMD協(xié)處理器指令識別為可由附連的SIMD協(xié)處理器161來執(zhí)行的類型。因此,主處理器166在協(xié)處理器總線171上發(fā)出這些SIMD協(xié)處理器指令(或表示SIMD協(xié)處理器指令的控制信號),任何附連的SIMD協(xié)處理器從協(xié)處理器總線171接收到這些指令。在該情況中,SIMD協(xié)處理器161將接受并執(zhí)行任何接收到的針對該SIMD協(xié)處理器的SIMD協(xié)處理器指令。

可經(jīng)由無線接口169接收數(shù)據(jù)以通過SIMD協(xié)處理器指令進(jìn)行處理。對于一個示例,語音通信可以數(shù)字信號的形式被接收到,其將被SIMD協(xié)處理器指令所處理,以重新生成表示該語音通信的數(shù)字音頻采樣。對于另一個示例,壓縮音頻和/或視頻可以數(shù)字位流的形式被接收到,其將被SIMD協(xié)處理器指令所處理,以重新生成數(shù)字音頻采樣和/或運(yùn)動視頻幀。對于處理核170的一個實(shí)施例,主處理器166和SIMD協(xié)處理器161被集成在單個處理核170中,該單個處理核170包括執(zhí)行單元162、一組寄存器組164、以及解碼器165以識別指令集163的指令,指令集163包括根據(jù)一個實(shí)施例的指令。

圖2是包括邏輯電路以執(zhí)行根據(jù)本發(fā)明的一個實(shí)施例的指令的處理器200的微體系結(jié)構(gòu)的框圖。在一些實(shí)施例中,根據(jù)一個實(shí)施例的指令可被實(shí)現(xiàn)為對具有字節(jié)大小、字大小、雙字大小、四字大小等并具有諸多數(shù)據(jù)類型(諸如單精度和雙精度整數(shù)和浮點(diǎn)數(shù)據(jù)類型)的數(shù)據(jù)元素執(zhí)行操作。在一個實(shí)施例中,有序前端201是處理器200的一部分,其獲取將要被執(zhí)行的指令,并準(zhǔn)備這些指令以在稍后供處理器流水線使用。前端201可包括諸個單元。在一個實(shí)施例中,指令預(yù)取器226從存儲器獲取指令,并將指令饋送至指令解碼器228,指令解碼器228隨后解碼或解釋指令。例如,在一個實(shí)施例中,解碼器將所接收到的指令解碼為機(jī)器可執(zhí)行的被稱為“微指令”或“微操作”(也稱為微操作數(shù)或uop)的一個或多個操作。在其他實(shí)施例中,解碼器將指令解析為操作碼和對應(yīng)的數(shù)據(jù)及控制字段,它們被微體系結(jié)構(gòu)用于執(zhí)行根據(jù)一個實(shí)施例的操作。在一個實(shí)施例中,追蹤高速緩存230接受經(jīng)解碼的微操作,并將它們組裝為程序有序序列或微操作隊(duì)列234中的蹤跡,以用于執(zhí)行。當(dāng)追蹤高速緩存230遇到復(fù)雜指令時,微代碼ROM232提供完成操作所需的微操作。

一些指令被轉(zhuǎn)換為單個微操作,而其他指令需要若干個微操作以完成整個操作。在一個實(shí)施例中,如果需要超過四個微操作來完成指令,則解碼器228訪問微代碼ROM 232以進(jìn)行該指令。對于一個實(shí)施例,指令可被解碼為少量的微操作以用于在指令解碼器228處進(jìn)行處理。在另一個實(shí)施例中,如果需要若干微操作來完成操作,則可將指令存儲在微代碼ROM 232中。追蹤高速緩存230參考進(jìn)入點(diǎn)可編程邏輯陣列(PLA)來確定正確的微指令指針,以從微代碼ROM 232讀取微代碼序列以完成根據(jù)一個實(shí)施例的一個或多個指令。在微代碼ROM 232完成對于指令的微操作序列化之后,機(jī)器的前端201恢復(fù)從追蹤高速緩存230提取微操作。

無序執(zhí)行引擎203是將指令準(zhǔn)備好用于執(zhí)行的單元。無序執(zhí)行邏輯具有若干個緩沖器,用于將指令流平滑并且重排序,以優(yōu)化指令流進(jìn)入流水線后的性能,并調(diào)度指令流以供執(zhí)行。分配器邏輯分配每個微操作需要的機(jī)器緩沖器和資源,以用于執(zhí)行。寄存器重命名邏輯將諸個邏輯寄存器重命名為寄存器組中的條目。在指令調(diào)度器(存儲器調(diào)度器、快速調(diào)度器202、慢速/通用浮點(diǎn)調(diào)度器204、簡單浮點(diǎn)調(diào)度器206)之前,分配器也將每個微操作的條目分配在兩個微操作隊(duì)列中的一個之中,一個微操作隊(duì)列用于存儲器操作,另一個微操作隊(duì)列用于非存儲器操作。微操作調(diào)度器202、204、206基于對它們的依賴輸入寄存器操作數(shù)源的準(zhǔn)備就緒以及微操作完成它們的操作所需的執(zhí)行資源的可用性來確定微操作何時準(zhǔn)備好用于執(zhí)行。一個實(shí)施例的快速調(diào)度器202可在主時鐘周期的每半個上進(jìn)行調(diào)度,而其他調(diào)度器可僅僅在每個主處理器時鐘周期上調(diào)度一次。調(diào)度器對分配端口進(jìn)行仲裁以調(diào)度微操作以便執(zhí)行。

寄存器組208、210位于調(diào)度器202、204、206和執(zhí)行塊211中的執(zhí)行單元212、214、216、218、220、222、224之間。也存在單獨(dú)的寄存器組208、210,分別用于整數(shù)和浮點(diǎn)操作。一個實(shí)施例的每個寄存器組208、210也包括旁路網(wǎng)絡(luò),旁路網(wǎng)絡(luò)可將剛完成的還沒有被寫入寄存器組的結(jié)果旁路或轉(zhuǎn)發(fā)給新的依賴微操作。整數(shù)寄存器組208和浮點(diǎn)寄存器組210也能夠彼此通信數(shù)據(jù)。對于一個實(shí)施例,整數(shù)寄存器組208被劃分為兩個單獨(dú)的寄存器組,一個寄存器組用于低階的32位數(shù)據(jù),第二個寄存器組用于高階的32位數(shù)據(jù)。一個實(shí)施例的浮點(diǎn)寄存器組210具有128位寬度的條目,因?yàn)楦↑c(diǎn)指令通常具有從64至128位寬度的操作數(shù)。

執(zhí)行塊211包括執(zhí)行單元212、214、216、218、220、222、224,在執(zhí)行單元212、214、216、218、220、222、224中實(shí)際執(zhí)行指令。該區(qū)塊包括寄存器組208、210,寄存器組208、210存儲微指令需要執(zhí)行的整數(shù)和浮點(diǎn)數(shù)據(jù)操作數(shù)值。一個實(shí)施例的處理器200由若干個執(zhí)行單元所組成。一個實(shí)施例的處理器200包括有若干個執(zhí)行單元:地址生成單元(AGU)212、AGU 214、快速ALU 216、快速ALU 218、慢速ALU 220、浮點(diǎn)ALU222、浮點(diǎn)移動單元224。對于一個實(shí)施例,浮點(diǎn)執(zhí)行塊222、224執(zhí)行浮點(diǎn)、MMX、SIMD、SSE以及其他操作。一個實(shí)施例的浮點(diǎn)ALU 222包括64位/64位浮點(diǎn)除法器,用于執(zhí)行除法、平方根、以及余數(shù)微操作。對于本發(fā)明的諸個實(shí)施例,涉及浮點(diǎn)值的指令可使用浮點(diǎn)硬件來處理。在一個實(shí)施例中,ALU操作進(jìn)入高速ALU執(zhí)行單元216、218。一個實(shí)施例的高速ALU216、218可執(zhí)行高速操作,有效等待時間為半個時鐘周期。對于一個實(shí)施例,大多數(shù)復(fù)雜整數(shù)操作進(jìn)入慢速ALU 220,因?yàn)槁貯LU 220包括用于長等待時間類型操作的整數(shù)執(zhí)行硬件,諸如,乘法器、移位器、標(biāo)記邏輯和分支處理。存儲器加載/存儲操作由AGU 212、214來執(zhí)行。對于一個實(shí)施例,整數(shù)ALU 216、218、220被描述為對64位數(shù)據(jù)操作數(shù)執(zhí)行整數(shù)操作。在替換實(shí)施例中,ALU 216、218、220可被實(shí)現(xiàn)為支持大范圍的數(shù)據(jù)位,包括16、32、128、256等等。類似地,浮點(diǎn)單元222、224可被實(shí)現(xiàn)為支持具有多種寬度的位的操作數(shù)范圍。對于一個實(shí)施例,浮點(diǎn)單元222、224可結(jié)合SIMD和多媒體指令對128位寬度打包數(shù)據(jù)操作數(shù)進(jìn)行操作。

在一個實(shí)施例中,在父加載完成執(zhí)行之前,微操作調(diào)度器202、204、206就分派依賴操作。因?yàn)樵谔幚砥?00中微操作被投機(jī)地調(diào)度和執(zhí)行,所以處理器200也包括處理存儲器未命中的邏輯。如果數(shù)據(jù)加載在數(shù)據(jù)高速緩存中未命中,則可能存在帶有臨時錯誤數(shù)據(jù)離開調(diào)度器并運(yùn)行在流水線中的依賴操作。重放機(jī)制跟蹤使用錯誤數(shù)據(jù)的指令,并重新執(zhí)行這些指令。僅僅依賴操作需要被重放,而允許獨(dú)立操作完成。處理器的一個實(shí)施例的調(diào)度器和重放機(jī)制也被設(shè)計(jì)為捕捉提供向量分散操作和/或聚集操作功能的指令。

術(shù)語“寄存器”指代被用作為指令的一部分以標(biāo)識操作數(shù)的板上處理器存儲位置。換句話說,寄存器是那些處理器外部(從編程者的角度來看)可用的處理器存儲位置。然而,一實(shí)施例的寄存器不限于表示特定類型的電路。相反,一實(shí)施例的寄存器能夠存儲并提供數(shù)據(jù),能夠執(zhí)行在此所述的功能。在此所述的寄存器可由處理器中的電路使用任何數(shù)量不同技術(shù)來實(shí)現(xiàn),諸如,專用物理寄存器、使用寄存器重命名的動態(tài)分配物理寄存器、專用和動態(tài)分配物理寄存器的組合,等等。在一個實(shí)施例中,整數(shù)寄存器存儲三十二位整數(shù)數(shù)據(jù)。一個實(shí)施例的寄存器組也包含八個多媒體SIMD寄存器,用于打包數(shù)據(jù)。對于以下討論,寄存器應(yīng)被理解為設(shè)計(jì)成保存打包數(shù)據(jù)的數(shù)據(jù)寄存器,諸如來自美國加利福尼亞州圣克拉拉市的英特爾公司的啟用了MMX技術(shù)的微處理器的64位寬MMXtm寄存器(在一些實(shí)例中也稱為“mm寄存器)。”這些MMX寄存器(可用在整數(shù)和浮點(diǎn)格式中)可與伴隨SIMD和SSE指令的打包數(shù)據(jù)元素一起操作。類似地,涉及SSE2、SSE3、SSE4或更新的技術(shù)(統(tǒng)稱為“SSEx”)的128位寬XMM寄存器也可被用于保持這樣打包數(shù)據(jù)操作數(shù)。在一個實(shí)施例中,在存儲打包數(shù)據(jù)和整數(shù)數(shù)據(jù)時,寄存器不需要區(qū)分這兩類數(shù)據(jù)類型。在一個實(shí)施例中,整數(shù)和浮點(diǎn)數(shù)據(jù)可被包括在相同的寄存器組中,或被包括在不同的寄存器組中。進(jìn)一步的,在一個實(shí)施例中,浮點(diǎn)和整數(shù)數(shù)據(jù)可被存儲在不同的寄存器中,或被存儲在相同的寄存器中。

在下述附圖的示例中,描述了多個數(shù)據(jù)操作數(shù)。圖3A示出根據(jù)本發(fā)明的一個實(shí)施例的多媒體寄存器中的多種打包數(shù)據(jù)類型表示。圖3A示出了打包字節(jié)310、打包字320、打包雙字(dword)330的用于128位寬操作數(shù)的數(shù)據(jù)類型。本示例的打包字節(jié)格式310是128位長,并且包含十六個打包字節(jié)數(shù)據(jù)元素。字節(jié)在此被定義為是8位數(shù)據(jù)。每一個字節(jié)數(shù)據(jù)元素的信息被存儲為:對于字節(jié)0存儲在位7到位0,對于字節(jié)1存儲在位15到位8,對于字節(jié)2存儲在位23到位16,最后對于字節(jié)15存儲在位120到位127。因此,在該寄存器中使用了所有可用的位。該存儲配置提高了處理器的存儲效率。同樣,因?yàn)樵L問了十六個數(shù)據(jù)元素,所以現(xiàn)在可對十六個數(shù)據(jù)元素并行地執(zhí)行一個操作。

通常,數(shù)據(jù)元素是單獨(dú)的數(shù)據(jù)片,與具有相同長度的其他數(shù)據(jù)元素一起存儲在單個寄存器或存儲器位置中。在涉及SSEx技術(shù)的打包數(shù)據(jù)序列中,存儲在XMM寄存器中的數(shù)據(jù)元素的數(shù)目是128位除以單個數(shù)據(jù)元素的位長。類似地,在涉及MMX和SSE技術(shù)的打包數(shù)據(jù)序列中,存儲在MMX寄存器中的數(shù)據(jù)元素的數(shù)目是64位除以單個數(shù)據(jù)元素的位長。雖然圖3A中所示的數(shù)據(jù)類型是128位長,但本發(fā)明的諸個實(shí)施例也可操作64位寬、256位寬、512位寬或其他大小的操作數(shù)。本示例的打包字格式320是128位長,并且包含八個打包字?jǐn)?shù)據(jù)元素。每個打包字包含十六位的信息。圖3A的打包雙字格式330是128位長,并且包含四個打包雙字?jǐn)?shù)據(jù)元素。每個打包雙字?jǐn)?shù)據(jù)元素包含三十二位信息。打包四字是128位長,并包含兩個打包四字?jǐn)?shù)據(jù)元素。

圖3B示出了替代的寄存器內(nèi)數(shù)據(jù)存儲格式。每個打包數(shù)據(jù)可包括超過一個獨(dú)立數(shù)據(jù)元素。示出了三個打包數(shù)據(jù)格式:打包半數(shù)據(jù)元素314、打包單數(shù)據(jù)元素342、以及打包雙數(shù)據(jù)元素343。打包半數(shù)據(jù)元素341、打包單數(shù)據(jù)元素342、打包雙數(shù)據(jù)元素343的一個實(shí)施例包含定點(diǎn)數(shù)據(jù)元素。對于替代實(shí)施例中,一個或多個打包半數(shù)據(jù)元素341、打包單數(shù)據(jù)元素342、打包雙數(shù)據(jù)元素343可包含浮點(diǎn)數(shù)據(jù)元素。打包半數(shù)據(jù)元素341的一個替代實(shí)施例是一百二十八位長度,包含八個16位數(shù)據(jù)元素。打包單數(shù)據(jù)元素342的一個替代實(shí)施例是一百二十八位長度,且包含四個32位數(shù)據(jù)元素。打包雙數(shù)據(jù)元素343的一個實(shí)施例是一百二十八位長度,且包含兩個64位數(shù)據(jù)元素。可以理解的是,這樣的打包數(shù)據(jù)格式進(jìn)一步可被擴(kuò)展至其他寄存器長度,例如,96位、160位、192位、224位、256位、512位或更長。

圖3C示出了根據(jù)本發(fā)明的一個實(shí)施例的多媒體寄存器中的多種有符號和無符號打包數(shù)據(jù)類型表示。無符號打包字節(jié)表示344示出了SIMD寄存器中的無符號打包字節(jié)的存儲。每一個字節(jié)數(shù)據(jù)元素的信息被存儲為:對于字節(jié)0存儲在位7到位0,對于字節(jié)1存儲在位15到位8,對于字節(jié)2存儲在位23到位16,等等,最后對于字節(jié)15存儲在位120到位127。因此,在該寄存器中使用了所有可用的位。該存儲配置可提高處理器的存儲效率。同樣,因?yàn)樵L問了十六個數(shù)據(jù)元素,所以可對十六個數(shù)據(jù)元素并行地執(zhí)行一個操作。有符號打包字節(jié)表示345示出了有符號打包字節(jié)的存儲。注意到,每個字節(jié)數(shù)據(jù)元素的第八位是符號指示符。無符號打包字表示346示出了SIMD寄存器中字7到字0如何被存儲。有符號打包字表示347類似于無符號打包字寄存器內(nèi)表示346。注意到,每個字?jǐn)?shù)據(jù)元素的第十六位是符號指示符。無符號打包雙字表示348示出了雙字?jǐn)?shù)據(jù)元素如何存儲。有符號打包雙字表示349類似于無符號打包雙字寄存器內(nèi)表示348。注意到,必要的符號位是每個雙字?jǐn)?shù)據(jù)元素的第三十二位。

圖3D是與可從美國加利福尼亞州圣克拉拉市的英特爾公司的萬維網(wǎng)(www)intel.com/products/processor/manuals/上獲得的“64和IA-32英特爾體系結(jié)構(gòu)軟件開發(fā)者手冊組合卷2A和2B:指令集參考A-Z(64and IA-32Intel Architecture Software Developer's Manual Combined Volumes2A and 2B:Instruction Set Reference A-Z,)”中描述的操作碼格式類型相對應(yīng)的具有32或更多位的操作編碼(操作碼)格式360以及寄存器/存儲器操作數(shù)尋址模式的一個實(shí)施例的描述。在一個實(shí)施例中,可通過一個或更多個字段361和362來編碼指令??梢詷?biāo)識每個指令高達(dá)兩個操作數(shù)位置,包括高達(dá)兩個源操作數(shù)標(biāo)識符364和365。對于一個實(shí)施例,目的地操作數(shù)標(biāo)識符366與源操作數(shù)標(biāo)識符364相同,而在其他實(shí)施例中它們不相同。對于替代實(shí)施例,目的地操作數(shù)標(biāo)識符366與源操作數(shù)標(biāo)識符365相同,而在其他實(shí)施例中它們不相同。在一個實(shí)施例中,由源操作數(shù)標(biāo)識符364和365所標(biāo)識的源操作數(shù)中的一個被指令的結(jié)果所覆寫,而在其他實(shí)施例中,標(biāo)識符364對應(yīng)于源寄存器元素,而標(biāo)識符365對應(yīng)于目的地寄存器元素。對于一個實(shí)施例,操作數(shù)標(biāo)識符364和365可被用于標(biāo)識32位或64位的源和目的地操作數(shù)。

圖3E示出了具有四十個或更多位的另一個替代操作編碼(操作碼)格式370。操作碼格式370對應(yīng)于操作碼格式360,并包括可選的前綴字節(jié)378。根據(jù)一個實(shí)施例的指令可通過字段378、371和372中的一個或多個來編碼。通過源操作數(shù)標(biāo)識符374和375以及通過前綴字節(jié)378,可標(biāo)識每個指令中高達(dá)兩個操作數(shù)位置。對于一個實(shí)施例,前綴字節(jié)378可被用于標(biāo)識32位或64位的源和目的地操作數(shù)。對于一個實(shí)施例,目的地操作數(shù)標(biāo)識符376與源操作數(shù)標(biāo)識符374相同,而在其他實(shí)施例中它們不相同。對于替代實(shí)施例,目的地操作數(shù)標(biāo)識符376與源操作數(shù)標(biāo)識符375相同,而在其他實(shí)施例中它們不相同。在一個實(shí)施例中,指令對由操作數(shù)標(biāo)識符374和375所標(biāo)識的一個或多個操作數(shù)進(jìn)行操作,并且由操作數(shù)標(biāo)識符374和375所標(biāo)識的一個或多個操作數(shù)被指令的結(jié)果所覆寫,然而在其他實(shí)施例中,由標(biāo)識符374和375所標(biāo)識的操作數(shù)被寫入另一個寄存器中的另一個數(shù)據(jù)元素中。操作碼格式360和370允許由MOD字段363和373以及由可選的比例-變址-基址(scale-index-base)和位移(displacement)字節(jié)所部分指定的寄存器到寄存器尋址、存儲器到寄存器尋址、由存儲器對寄存器尋址、由寄存器對寄存器尋址、直接對寄存器尋址、寄存器至存儲器尋址。

接下來轉(zhuǎn)到圖3F,在一些替換實(shí)施例中,64位(或128位、或256位、或512位或更多)單指令多數(shù)據(jù)(SIMD)算術(shù)操作可經(jīng)由協(xié)處理器數(shù)據(jù)處理(CDP)指令來執(zhí)行。操作編碼(操作碼)格式380示出了一個這樣的CDP指令,其具有CDP操作碼字段382和389。對于替代實(shí)施例,該類型CDP指令操作可由字段383、384、387和388中的一個或多個來編碼??梢詫γ總€指令標(biāo)識高達(dá)三個操作數(shù)位置,包括高達(dá)兩個源操作數(shù)標(biāo)識符385和390以及一個目的地操作數(shù)標(biāo)識符386。協(xié)處理器的一個實(shí)施例可對8、16、32和64位值操作。對于一個實(shí)施例,對整數(shù)數(shù)據(jù)元素執(zhí)行指令。在一些實(shí)施例中,使用條件字段381,可有條件地執(zhí)行指令。對于一些實(shí)施例,源數(shù)據(jù)大小可通過字段383來編碼。在一些實(shí)施例中,可對SIMD字段執(zhí)行零(Z)、負(fù)(N)、進(jìn)位(C)和溢出(V)檢測。對于一些指令,飽和類型可通過字段384來編碼。

現(xiàn)在轉(zhuǎn)到圖3G,其描繪了根據(jù)另一實(shí)施例的與可從美國加利福尼亞州圣克拉拉市的英特爾公司的萬維網(wǎng)(www)intel.com/products/processor/manuals/上獲得的“高級向量擴(kuò)展編程參考(Advanced Vector Extensions Programming Reference)中描述的操作碼格式類型相對應(yīng)的用于提供向量分散操作和/或聚集操作功能的另一替代操作編碼(操作碼)格式397。

原始x86指令集向1字節(jié)操作碼提供多種地址字節(jié)(syllable)格式以及包含在附加字節(jié)中的直接操作數(shù),其中可從第一個“操作碼”字節(jié)中獲知附加字節(jié)的存在。此外,特定字節(jié)值被預(yù)留給操作碼作為修改符(稱為前綴prefix,因?yàn)樗鼈儽环胖迷谥噶钪?。當(dāng)256個操作碼字節(jié)的原始配置(包括這些特殊前綴值)耗盡時,指定單個字節(jié)以跳出(escape)到新的256個操作碼集合。因?yàn)樘砑恿讼蛄恐噶?諸如,SIMD),即便通過使用前綴進(jìn)行了擴(kuò)展以后,也需要產(chǎn)生更多的操作碼,并且“兩字節(jié)”操作碼映射也已經(jīng)不夠。為此,將新指令加入附加的映射中,附加的映射使用兩字節(jié)加上可選的前綴作為標(biāo)識符。

除此外,為了便于在64位模式中實(shí)現(xiàn)額外的寄存器,在前綴和操作碼(以及任何的用于確定操作碼所需的跳出字節(jié))之間使用額外的前綴(被稱為“REX”)。在一個實(shí)施例中,REX具有4個“有效載荷”位,以指示在64位模式中使用附加的寄存器。在其他實(shí)施例中,可具有比4位更少或更多的位。至少一個指令集的通用格式(一般對應(yīng)于格式360和/或格式370)被一般地示出如下:

[prefixes][rex]escape[escape2]opcode modrm(等等)

操作碼格式397對應(yīng)于操作碼格式370,并包括可選的VEX前綴字節(jié)391(在一個實(shí)施例中,以十六進(jìn)制的C4開始)以替換大部分的其他公共使用的傳統(tǒng)指令前綴字節(jié)和跳出代碼。例如,以下示出了使用兩個字段來編碼指令的實(shí)施例,其可在原始指令中存在第二跳出代碼時、或在需要在REX字段中使用額外位(諸如,XB和W字段)時被使用。在以下所示的實(shí)施例中,傳統(tǒng)跳出由新的跳出值所表示,傳統(tǒng)前綴被完全壓縮為“有效載荷(payload)”字節(jié)的一部分,傳統(tǒng)前綴被重新申明并可用于未來的擴(kuò)展,第二跳出代碼被壓縮在“映射(map)”字段中且未來的映射或特征空間可用,并且加入新的特征(諸如,增加的向量長度以及額外的源寄存器區(qū)分符)。

根據(jù)一個實(shí)施例的指令可通過字段391和392中的一個或多個來編碼。通過字段391與源操作碼標(biāo)識符374和375以及可選的比例-變址-基址(scale-index-base,SIB)標(biāo)識符393、可選位移標(biāo)識符394以及可選直接字節(jié)395相結(jié)合,可以為每個指令標(biāo)識高達(dá)四個操作數(shù)位置。對于一個實(shí)施例,VEX前綴字節(jié)391可被用于標(biāo)識32位或64位的源和目的地操作數(shù)和/或128位或256位SIMD寄存器或存儲器操作數(shù)。對于一個實(shí)施例,由操作碼格式397所提供的功能可與操作碼格式370形成冗余,而在其他實(shí)施例中它們不同。操作碼格式370和397允許由MOD字段373以及由可選的SIB標(biāo)識符393、可選的位移標(biāo)識符394以及可選的直接標(biāo)識符395所部分指定的寄存器到寄存器尋址、存儲器到寄存器尋址、由存儲器對寄存器尋址、由寄存器對寄存器尋址、直接對寄存器尋址、寄存器至存儲器尋址。

現(xiàn)在轉(zhuǎn)到圖3H,其描繪了根據(jù)另一實(shí)施例的用于提供向量分散操作和/或聚集操作功能的另一替代操作編碼(操作碼)格式398。操作碼格式398對應(yīng)于操作碼格式370和397,并包括可選的EVEX前綴字節(jié)396(在一個實(shí)施例中,以十六進(jìn)制的62開始)以替換大部分的其他公共使用的傳統(tǒng)指令前綴字節(jié)和跳出代碼,并提供附加的功能。根據(jù)一個實(shí)施例的指令可通過字段396和392中的一個或多個來編碼。通過字段396與源操作碼標(biāo)識符374和375以及可選規(guī)?;笜?biāo)(scale-index-base SIB)標(biāo)識符393、可選位移標(biāo)識符394以及可選直接字節(jié)395相結(jié)合,可以標(biāo)識每個指令高達(dá)四個操作數(shù)位置和掩碼。對于一個實(shí)施例,EVEX前綴字節(jié)396可被用于標(biāo)識32位或64位的源和目的地操作數(shù)和/或128位、256位或512位SIMD寄存器或存儲器操作數(shù)。對于一個實(shí)施例,由操作碼格式398所提供的功能可與操作碼格式370或397形成冗余,而在其他實(shí)施例中它們不同。操作碼格式398允許由MOD字段373以及由可選的(SIB)標(biāo)識符393、可選的位移標(biāo)識符394以及可選的直接標(biāo)識符395所部分指定的利用掩碼的寄存器到寄存器尋址、存儲器到寄存器尋址、由存儲器對寄存器尋址、由寄存器對寄存器尋址、直接對寄存器尋址、寄存器至存儲器尋址。至少一個指令集的通用格式(一般對應(yīng)于格式360和/或格式370)被一般地示出如下:

evex1RXBmmmmm WvvvLpp evex4opcode modrm[sib][disp][imm]

對于一個實(shí)施例,根據(jù)EVEX格式398編碼的指令可具有附加的“有效載荷”位,這些附加的“有效載荷”位可利用附加的新特征來提供向量分散操作和/或聚集操作功能,附加的新特征諸如例如用戶可配置的掩碼寄存器、或附加的操作數(shù)、或來自于128位、256位或512位向量寄存器或備選的更多寄存器的選擇等等。

例如,在VEX格式397可用于利用隱式掩碼來提供向量分散操作和/或聚集操作功能的場合中,或該附加操作是一元操作(諸如類型轉(zhuǎn)換)的場合中,EVEX格式398可被用于利用顯式用戶可配置掩碼來提供向量分散操作和/或聚集操作功能,當(dāng)該附加操作是二元操作(諸如加法或乘法)時,需要一附加操作數(shù)。EVEX格式398的一些實(shí)施例還可用于在該附加操作是三元操作的場合時提供向量分散操作和/或聚集操作功能以及隱式完成掩碼。附加地,在VEX格式397可用于在128位或256位寄存器上提供向量分散操作和/或聚集操作功能的場合,EVEX格式398可用于在128位、256位、512位或更大(或更小)的向量寄存器上提供向量分散操作和/或聚集操作功能。因此,用于提供向量分散操作和/或聚集操作功能的指令可消除用于附加操作的指令與用于存儲器操作(諸如聚集或分散數(shù)據(jù))的指令之間的依賴關(guān)系。

通過以下示例說明用于提供向量分散操作和/或聚集操作功能的示例指令:

圖4A是示出根據(jù)本發(fā)明的至少一個實(shí)施例的有序流水線以及寄存器重命名級、無序發(fā)布/執(zhí)行流水線的框圖。圖4B是示出根據(jù)本發(fā)明的至少一個實(shí)施例的要被包括在處理器中的有序體系結(jié)構(gòu)核以及寄存器重命名邏輯、無序發(fā)布/執(zhí)行邏輯的框圖。圖4A中的實(shí)線框示出了有序流水線,虛線框示出了寄存器重命名、無序發(fā)布/執(zhí)行流水線。類似地,圖4B中的實(shí)線框示出了有序體系結(jié)構(gòu)邏輯,而虛線框示出了寄存器重命名邏輯以及無序發(fā)布/執(zhí)行邏輯。

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

在圖4B中,箭頭指示兩個或更多個單元之間的耦合,且箭頭的方向指示那些單元之間的數(shù)據(jù)流的方向。圖4B示出了包括耦合到執(zhí)行引擎單元450的前端單元430,且執(zhí)行引擎單元和前端單元兩者都耦合到存儲器單元470的處理器核490。

核490可以是精簡指令集合計(jì)算(RISC)核、復(fù)雜指令集合計(jì)算(CISC)核、非常長的指令字(VLIW)核或混合或替代核類型。作為另一個選項(xiàng),核490可以是專用核,諸如網(wǎng)絡(luò)或通信核、壓縮引擎、圖形核或類似物。

前端單元430包括耦合到指令高速緩存單元432的分支預(yù)測單元434,該高速緩存單元436被耦合到指令翻譯后備緩沖器(TLB)438,該指令翻譯后備緩沖器被耦合到解碼單元440。解碼單元或解碼器可解碼指令,并生成一個或多個微操作、微代碼進(jìn)入點(diǎn)、微指令、其他指令、或其他控制信號作為輸出,這些輸出是從原始指令中解碼出、或以其他方式反映原始指令、或是從原始指令中推導(dǎo)而出的。解碼器可使用各種不同的機(jī)制來實(shí)現(xiàn)。合適的機(jī)制的示例包括但不限于:查找表、硬件實(shí)現(xiàn)、可編程邏輯陣列(PLA)、微代碼只讀存儲器(ROM)等等。指令高速緩存單元434進(jìn)一步耦合至存儲器單元470中的第二級(L2)高速緩存單元476。解碼單元440耦合至執(zhí)行引擎單元450中的重命名/分配器單元452。

執(zhí)行引擎單元450包括重命名/分配器單元452,該重命名/分配器單元454耦合至隱退單元456和一個或多個調(diào)度器單元1056的集合。調(diào)度器單元456表示任何數(shù)目的不同調(diào)度器,包括預(yù)留站、中央指令窗等。調(diào)度器單元456被耦合到物理寄存器組單元458。物理寄存器組單元458中的每一個表示一個或多個物理寄存器組,其中不同的物理寄存器組存儲一個或多個不同的數(shù)據(jù)類型(諸如標(biāo)量整數(shù)、標(biāo)量浮點(diǎn)、打包整數(shù)、打包浮點(diǎn)、向量整數(shù)、向量浮點(diǎn)、等等)、狀態(tài)(諸如,指令指針是將要被執(zhí)行的下一個指令的地址)等等。物理寄存器組單元458被隱退單元454所覆蓋,以示出可實(shí)現(xiàn)寄存器重命名和無序執(zhí)行的多種方式(諸如,使用重排序緩沖器和隱退寄存器組、使用未來文件(future file)、歷史緩沖器、隱退寄存器組、使用寄存器映射和寄存器池等等)。通常,體系結(jié)構(gòu)寄存器從處理器外部或從編程者的視角來看是可見的。這些寄存器不限于任何已知的特定電路類型。多種不同類型的寄存器可適用,只要它們能夠存儲并提供在此所述的數(shù)據(jù)。合適的寄存器的示例包括但不限于:專用物理寄存器、使用寄存器重命名的動態(tài)分配物理寄存器、專用物理寄存器和動態(tài)分配物理寄存器的組合等等。隱退單元454和物理寄存器組單元458耦合至執(zhí)行群集460。執(zhí)行群集460包括一個或多個執(zhí)行單元462的集合和一個或多個存儲器訪問單元464的集合。執(zhí)行單元462可以執(zhí)行各種操作(例如,移位、加法、減法、乘法),以及對各種類型的數(shù)據(jù)(例如,標(biāo)量浮點(diǎn)、打包整數(shù)、打包浮點(diǎn)、向量整型、向量浮點(diǎn))執(zhí)行。盡管某些實(shí)施例可以包括專用于特定功能或功能集合的多個執(zhí)行單元,但其他實(shí)施例可包括僅一個執(zhí)行單元或全部執(zhí)行所有函數(shù)的多個執(zhí)行單元。調(diào)度器單元456、物理寄存器組單元458、執(zhí)行群集460被示出為可能是復(fù)數(shù)個,因?yàn)槟承?shí)施例為某些數(shù)據(jù)/操作類型創(chuàng)建了諸個單獨(dú)流水線(例如,均具有各自調(diào)度器單元、物理寄存器組單元和/或執(zhí)行群集的標(biāo)量整數(shù)流水線、標(biāo)量浮點(diǎn)/打包整數(shù)/打包浮點(diǎn)/向量整數(shù)/向量浮點(diǎn)流水線、和/或存儲器訪問流水線,以及在單獨(dú)的存儲器訪問流水線的情況下特定實(shí)施例被實(shí)現(xiàn)為僅僅該流水線的執(zhí)行群集具有存儲器訪問單元464)。還應(yīng)當(dāng)理解,在分開的流水線被使用的情況下,這些流水線中的一個或多個可以為無序發(fā)布/執(zhí)行,并且其余流水線可以為有序發(fā)布/執(zhí)行。

存儲器訪問單元464的集合被耦合到存儲器單元470,該存儲器單元472包括耦合到數(shù)據(jù)高速緩存單元474的數(shù)據(jù)TLB單元472,其中數(shù)據(jù)高速緩存單元474耦合到二級(L2)高速緩存單元476。在一個示例性實(shí)施例中,存儲器訪問單元464可包括加載單元、存儲地址單元和存儲數(shù)據(jù)單元,其中的每一個均耦合至存儲器單元470中的數(shù)據(jù)TLB單元472。L2高速緩存單元476被耦合到一個或多個其他級的高速緩存,并最終耦合到主存儲器。

作為示例,示例性寄存器重命名的、無序發(fā)布/執(zhí)行核體系結(jié)構(gòu)可以如下實(shí)現(xiàn)流水線400:1)指令提取438執(zhí)行提取和長度解碼級402和404;2)解碼單元440執(zhí)行解碼級406;3)重命名/分配器單元452執(zhí)行分配級408和重命名級410;4)調(diào)度器單元456執(zhí)行調(diào)度級412;5)物理寄存器組單元458和存儲器單元470執(zhí)行寄存器讀/存儲器讀級414;執(zhí)行群集460執(zhí)行執(zhí)行級416;6)存儲器單元470和物理寄存器組單元458執(zhí)行寫回/存儲器寫級418;7)各單元可牽涉到異常處理級422;以及8)隱退單元454和物理寄存器組單元458執(zhí)行提交級424。

核490可支持一個或多個指令集(諸如,x86指令集(具有增加有更新版本的一些擴(kuò)展)、加利福尼亞州桑尼威爾的MIPS技術(shù)公司的MIPS指令集、加利福尼亞州桑尼威爾的ARM控股公司的ARM指令集(具有可選附加擴(kuò)展,諸如NEON))。

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

盡管在無序執(zhí)行的上下文中描述了寄存器重命名,但應(yīng)當(dāng)理解,可以在有序體系結(jié)構(gòu)中使用寄存器重命名。雖然處理器的所示出的實(shí)施例也包括單獨(dú)的指令和數(shù)據(jù)高速緩存單元434/474以及共享的L2高速緩存單元476,但替代的實(shí)施例也可具有用于指令和數(shù)據(jù)的單個內(nèi)部高速緩存,諸如例如第一級(L1)內(nèi)部高速緩存、或多個級別的內(nèi)部高速緩存。在某些實(shí)施例中,該系統(tǒng)可包括內(nèi)部高速緩存和在核和/或處理器外部的外部高速緩存的組合。或者,所有高速緩存都可以在核和/或處理器的外部。

圖5是根據(jù)本發(fā)明的實(shí)施例的單核處理器和多核處理器500的框圖,具有集成的存儲器控制器和圖形器件。圖5的實(shí)線框示出了處理器500,處理器500具有單個核502A、系統(tǒng)代理510、一組一個或多個總線控制器單元516,而可選附加的虛線框示出了替代的處理器500,其具有多個核502A-N、位于系統(tǒng)代理單元510中的一組一個或多個集成存儲器控制器單元514以及集成圖形邏輯508。

存儲器層次結(jié)構(gòu)包括在各核內(nèi)的一個或多個級別的高速緩存、一個或多個共享高速緩存單元506的集合、以及耦合至集成存儲器控制器單元514的集合的外部存儲器(未示出)。該共享高速緩存單元506的集合可以包括一個或多個中間級高速緩存,諸如二級(L2)、三級(L3)、四級(L4)或其他級別的高速緩存、末級高速緩存(LLC)、和/或其組合。雖然在一個實(shí)施例中基于環(huán)形的互連單元512將集成圖形邏輯508、該組共享高速緩存單元506和系統(tǒng)代理單元510進(jìn)行互連,但替代的實(shí)施例也使用任何數(shù)量的公知技術(shù)來互連這些單元。

在一些實(shí)施例中,核502A-N中的一個或多個核能夠多線程化。系統(tǒng)代理510包括協(xié)調(diào)和操作核502A-N的那些組件。系統(tǒng)代理單元510可包括例如功率控制單元(PCU)和顯示單元。PCU可以是或包括調(diào)整核502A-N和集成圖形邏輯508的功率狀態(tài)所需的邏輯和組件。顯示單元用于驅(qū)動一個或多個外部連接的顯示器。

核502A-N可以是在體系結(jié)構(gòu)和/或指令集上同構(gòu)的或異構(gòu)的。例如,核502A-N中的一些可以是有序的,而另一些是無序的。如另一個示例,核502A-N中的兩個或多個核能夠執(zhí)行相同的指令集,而其他核能夠執(zhí)行該指令集中的一個子集或執(zhí)行不同的指令集。

處理器可以是通用功能處理器,諸如酷睿(CoreTM)i3、i5、i7、2Duo和Quad、至強(qiáng)(XeonTM)、安騰(ItaniumTM)、XScaleTM或StrongARMTM處理器,這些均可以從加利福尼亞圣克拉拉市的Intel公司獲得?;蛘?,處理器可以來自另一個公司,諸如來自ARM控股公司、MIPS、等等。處理器可以是專用處理器,諸如,例如,網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、協(xié)處理器、嵌入式處理器、或類似物。該處理器可以被實(shí)現(xiàn)在一個或多個芯片上。處理器500可以是一個或多個襯底的一部分,和/或可以使用諸如例如BiCMOS、CMOS或NMOS等的多個加工技術(shù)中的任何一個技術(shù)將其實(shí)現(xiàn)在一個或多個襯底上。

圖6-8是適于包括處理器500的示例性系統(tǒng),圖9是可包括一個或多個核502的示例性芯片上系統(tǒng)(SoC)。本領(lǐng)域已知的對膝上型設(shè)備、臺式機(jī)、手持PC、個人數(shù)字助理、工程工作站、服務(wù)器、網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)集線器、交換機(jī)、嵌入式處理器、數(shù)字信號處理器(DSP)、圖形設(shè)備、視頻游戲設(shè)備、機(jī)頂盒、微控制器、蜂窩電話、便攜式媒體播放器、手持設(shè)備以及各種其他電子設(shè)備的其他系統(tǒng)設(shè)計(jì)和配置也是合適的。一般來說,能夠納入本文中所公開的處理器和/或其它執(zhí)行邏輯的大量系統(tǒng)和電子設(shè)備一般都是合適的。

現(xiàn)在參考圖6,所示出的是根據(jù)本發(fā)明一個實(shí)施例的系統(tǒng)600的框圖。系統(tǒng)600可包括耦合至圖形存儲器控制器中樞(GMCH)620的一個或多個處理器610、615。附加處理器615的可選性質(zhì)用虛線表示在圖6中。

每個處理器610、615可以是處理器500的某些版本。然而,應(yīng)該理解,集成圖形邏輯和集成存儲器控制單元不太可能出現(xiàn)在處理器610、615中。圖6示出GMCH 620可耦合至存儲器640,該存儲器640可以是例如動態(tài)隨機(jī)存取存儲器(DRAM)。對于至少一個實(shí)施例,DRAM可以與非易失性高速緩存相關(guān)聯(lián)。

GMCH 620可以是芯片組或芯片組的一部分。GMCH 620可以與(多個)處理器610、615進(jìn)行通信,并控制處理器610、615與存儲器640之間的交互。GMCH 620還可擔(dān)當(dāng)(多個)處理器610、615和系統(tǒng)600的其它元件之間的加速總線接口。對于至少一個實(shí)施例,GMCH 620經(jīng)由諸如前端總線(FSB)695之類的多點(diǎn)總線與(多個)處理器610、615進(jìn)行通信。

此外,GMCH 620耦合至顯示器645(諸如平板顯示器)。GMCH 620可包括集成圖形加速器。GMCH 620還耦合至輸入/輸出(I/O)控制器中樞(ICH)650,該輸入/輸出(I/O)控制器中樞(ICH)650可用于將各種外圍設(shè)備耦合至系統(tǒng)600。在圖6的實(shí)施例中作為示例示出了外部圖形設(shè)備660以及另一外圍設(shè)備670,該外部圖形設(shè)備660可以是耦合至ICH 650的分立圖形設(shè)備。

替代地,系統(tǒng)600中還可存在附加或不同的處理器。例如,附加(多個)處理器615可包括與處理器610相同的附加(多個)處理器、與處理器610異類或不對稱的附加(多個)處理器、加速器(諸如圖形加速器或數(shù)字信號處理(DSP)單元)、現(xiàn)場可編程門陣列或任何其它處理器。按照包括體系結(jié)構(gòu)、微體系結(jié)構(gòu)、熱、功耗特征等等優(yōu)點(diǎn)的度量譜,(多個)物理資源610、615之間存在各種差別。這些差別會有效顯示為處理器610、615之間的不對稱性和異類性。對于至少一個實(shí)施例,各種處理器610、615可駐留在同一管芯封裝中。

現(xiàn)在參照圖7,所示出的是根據(jù)本發(fā)明實(shí)施例的第二系統(tǒng)700的框圖。如圖7所示,多處理器系統(tǒng)700是點(diǎn)對點(diǎn)互連系統(tǒng),并包括經(jīng)由點(diǎn)對點(diǎn)互連750耦合的第一處理器770和第二處理器780。處理器770和780中的每一個可以是處理器500的一些版本,如處理器610、615中的一個或多個一樣。

雖然僅以兩個處理器770、780來示出,但應(yīng)理解本發(fā)明的范圍不限于此。在其它實(shí)施例中,在給定處理器中可存在一個或多個附加處理器。

處理器770和780被示為分別包括集成存儲器控制器單元772和782。處理器770還包括作為其總線控制器單元的一部分的點(diǎn)對點(diǎn)(P-P)接口776和778;類似地,第二處理器780包括點(diǎn)對點(diǎn)接口786和788。處理器770、780可以使用點(diǎn)對點(diǎn)(P-P)電路778、788經(jīng)由P-P接口750來交換信息。如圖7所示,IMC 772和782將各處理器耦合至相應(yīng)的存儲器,即存儲器732和存儲器734,這些存儲器可以是本地附連至相應(yīng)的處理器的主存儲器的一部分。

處理器770、780各自可使用點(diǎn)對點(diǎn)接口電路776、794、786、798經(jīng)由單獨(dú)的P-P接口752、754與芯片組790交換信息。芯片組790還可經(jīng)由高性能圖形接口739與高性能圖形電路738交換信息。

共享高速緩存器(未示出)可以被包括在任一處理器中或者兩個處理器的外面,通過P-P互連,與處理器相連接,以便如果處理器被置于低功率模式下,處理器中的任何一個或兩者的本地緩存信息可以存儲在共享高速緩存器中。

芯片組790可經(jīng)由接口796耦合至第一總線716。在一個實(shí)施例中,第一總線716可以是外圍部件互連(PCI)總線,或諸如PCI Express總線或其它第三代I/O互連總線之類的總線,但本發(fā)明的范圍并不受此限制。

如圖7所示,各種I/O設(shè)備714可以連同總線橋718耦合到第一總線716,總線橋718將第一總線716耦合至第二總線720。在一個實(shí)施例中,第二總線720可以是低引腳數(shù)(LPC)總線。在一個實(shí)施例中,多個設(shè)備可以耦合到第二總線720,包括例如鍵盤和/或鼠標(biāo)722、通信設(shè)備727以及可以包括指令/代碼和數(shù)據(jù)730的存儲單元728(諸如盤驅(qū)動器或其它海量存儲設(shè)備)。進(jìn)一步地,音頻I/O 724可以耦合到第二總線720。注意,其它體系結(jié)構(gòu)是可能的。例如,取代圖7的點(diǎn)對點(diǎn)體系結(jié)構(gòu),系統(tǒng)可以實(shí)現(xiàn)多站總線或其它這類體系結(jié)構(gòu)。

現(xiàn)在參照圖8,所示出的是根據(jù)本發(fā)明實(shí)施例的第三系統(tǒng)800的框圖。圖7和8中的類似元件使用類似附圖標(biāo)記,且在圖8中省略了圖7的某些方面以避免混淆圖8的其它方面。

圖8示出了處理器870、880可以分別包括集成的存儲器和I/O控制邏輯(“CL”)872和882。對于至少一個實(shí)施例,CL 872、882可包括諸如以上聯(lián)系圖5和7所描述的集成存儲器控制器單元。此外。CL 872、882還可包括I/O控制邏輯。圖8不僅解說了耦合至CL 872、882的存儲器832、834,而且還解說了同樣耦合至控制邏輯872、882的I/O設(shè)備814。傳統(tǒng)I/O設(shè)備815被耦合至芯片組890。

現(xiàn)在參照圖9,所示出的是根據(jù)本發(fā)明一個實(shí)施例的SoC 900的框圖。在圖5中,相似的部件具有同樣的附圖標(biāo)記。另外,虛線框是更先進(jìn)的SoC的可選特征。在圖9中,互連單元902被耦合至:應(yīng)用處理器910,包括一個或多個核502A-N的集合和共享高速緩存單元506;系統(tǒng)代理單元510;總線控制器單元516;集成存儲器控制器單元514;一個或多個媒體處理器920的集合,可包括集成圖形邏輯508、用于提供靜態(tài)和/或視頻照相機(jī)功能的圖像處理器924、用于提供硬件音頻加速的音頻處理器926、以及用于提供視頻編碼/解碼加速的視頻處理器928;靜態(tài)隨機(jī)存取存儲器(SRAM)單元930;直接存儲器存取(DMA)單元932;以及顯示單元940,用于耦合至一個或多個外部顯示器。

圖10示出處理器,包括中央處理單元(CPU)和圖形處理單元(GPU),該處理器可執(zhí)行根據(jù)一個實(shí)施例的至少一個指令。在一個實(shí)施例中,執(zhí)行根據(jù)至少一個實(shí)施例的操作的指令可由CPU來執(zhí)行。在另一個實(shí)施例中,指令可以由GPU來執(zhí)行。在還有一個實(shí)施例中,指令可以由GPU和CPU所執(zhí)行的操作的組合來執(zhí)行。例如,在一個實(shí)施例中,根據(jù)一個實(shí)施例的指令可被接收,并被解碼用于在GPU上執(zhí)行。然而,經(jīng)解碼的指令中的一個或多個操作可由CPU來執(zhí)行,并且結(jié)果被返回給GPU用于指令的最終隱退。相反,在一些實(shí)施例中,CPU可作為主處理器,而GPU作為協(xié)處理器。

在一些實(shí)施例中,受益于高度并行吞吐量的指令可由GPU來執(zhí)行,而受益于處理器(這些處理器受益于深度流水線體系結(jié)構(gòu))的性能的指令可由CPU來執(zhí)行。例如,圖形、科學(xué)應(yīng)用、金融應(yīng)用以及其他并行工作負(fù)荷可受益于GPU的性能并相應(yīng)地執(zhí)行,而更多的序列化應(yīng)用,諸如操作系統(tǒng)內(nèi)核或應(yīng)用代碼更適于CPU。

在圖10中,處理器1000包括:CPU 1005、GPU 1010、圖像處理器1015、視頻處理器1020、USB控制器1025、UART控制器1030、SPI/SDIO控制器1035、顯示設(shè)備1040、高清晰度多媒體接口(HDMI)控制器1045、MIPI控制器1050、閃存存儲器控制器1055、雙數(shù)據(jù)率(DDR)控制器1060、安全引擎1065、I2S/I2C(集成跨芯片聲音/跨集成電路)接口1070。其他邏輯和電路可被包括在圖10的處理器中,包括更多的CPU或GPU以及其他外圍設(shè)備接口控制器。

至少一個實(shí)施例的一個或多個方面可以由存儲在機(jī)器可讀介質(zhì)上的代表性數(shù)據(jù)來實(shí)現(xiàn),該數(shù)據(jù)表示處理器中的各種邏輯,其在被機(jī)器讀取時使得該機(jī)器生成執(zhí)行本文描述的技術(shù)的邏輯。此類表示即所謂“IP核”可以存儲在有形的機(jī)器可讀介質(zhì)(“磁帶”)上并提供給各種顧客或制造商,以加載到實(shí)際制作該邏輯或處理器的編制機(jī)器中去。例如,IP核(諸如由ARM控股公司所開發(fā)的CortexTM處理器族以及由中國科學(xué)院計(jì)算機(jī)技術(shù)研究所(ICT)所開發(fā)的龍芯IP核)可被授權(quán)或銷售給多個客戶或受許可方,諸如德州儀器、高通、蘋果、或三星,并被實(shí)現(xiàn)在由這些客戶或受許可方所制造的處理器中。

圖11示出根據(jù)一個實(shí)施例的IP核開發(fā)的框圖。存儲器1130包括模擬軟件1120和/或硬件或軟件模型1110。在一個實(shí)施例中,表示IP核設(shè)計(jì)的數(shù)據(jù)可經(jīng)由存儲器1140(諸如,硬盤)、有線連接(諸如,互聯(lián)網(wǎng))1150或無線連接1160而被提供給存儲器1130。由模擬工具和模型所生成的IP核信息可隨后被發(fā)送給制造工廠,在制造工廠可由第三方來進(jìn)行生產(chǎn)以執(zhí)行根據(jù)至少一個實(shí)施例的至少一個指令。

在一些實(shí)施例中,一個或多個指令可以對應(yīng)于第一類型或體系結(jié)構(gòu)(例如x86),并且在不同類型或體系結(jié)構(gòu)的處理器(例如ARM)上被轉(zhuǎn)換或仿真。根據(jù)一個實(shí)施例,指令可以在任何處理器或處理器類型上執(zhí)行,包括ARM、x86、MIPS、GPU或其它處理器類型或體系結(jié)構(gòu)。

圖12示出了根據(jù)一個實(shí)施例的第一類型的指令如何被不同類型的處理器所仿真。在圖12中,程序1205包含一些指令,這些指令可執(zhí)行與根據(jù)一個實(shí)施例的指令相同或基本相同的功能。然而,程序1205的指令可以是與處理器1215所不同或不兼容的類型和/或格式,這意味著程序1205中的類型的指令不能原生地被處理器1215所執(zhí)行。然而,借助于仿真邏輯1210,程序1205的指令可被轉(zhuǎn)換成能夠由處理器1215所原生執(zhí)行的指令。在一個實(shí)施例中,仿真邏輯被具體化在硬件中。在另一實(shí)施例中,仿真邏輯具體化在有形的機(jī)器可讀介質(zhì)中,該機(jī)器可讀介質(zhì)包含將程序1205中的該類指令翻譯成直接能由處理器1215執(zhí)行的類型的軟件。在其它實(shí)施例中,仿真邏輯是固定功能或可編程硬件和存儲在有形的機(jī)器可讀介質(zhì)上的程序的組合。在一個實(shí)施例中,處理器包含仿真邏輯,但在其它實(shí)施例中,仿真邏輯在處理器之外并由第三方提供。在一個實(shí)施例中,處理器能夠通過執(zhí)行包含在處理器中或者與之相關(guān)聯(lián)的微代碼或固件,加載具體化在包含軟件的有形的機(jī)器可讀介質(zhì)中的仿真邏輯。

圖13是根據(jù)本發(fā)明的實(shí)施例的對比使用軟件指令轉(zhuǎn)換器將源指令集中的二進(jìn)制指令轉(zhuǎn)換成目標(biāo)指令集中的二進(jìn)制指令的方框圖。在所示的實(shí)施例中,指令轉(zhuǎn)換器是軟件指令轉(zhuǎn)換器,但作為替代該指令轉(zhuǎn)換器可以用軟件、固件、硬件或其各種組合來實(shí)現(xiàn)。圖13示出了用高級語言1306的程序可以使用x86編譯器1304來編譯,以生成可以由具有至少一個x86指令集核的處理器1316原生執(zhí)行的x86二進(jìn)制代碼1306。具有至少一個x86指令集核的處理器1316表示任何處理器,該處理器能夠通過兼容地執(zhí)行或以其它方式處理(1)英特爾x86指令集核的指令集的大部分或(2)旨在具有至少一個x86指令集核的英特爾處理器上運(yùn)行的應(yīng)用或其它軟件的目標(biāo)代碼版本來執(zhí)行與具有至少一個x86指令集核的英特爾處理器基本相同的功能,以實(shí)現(xiàn)與具有至少一個x86指令集核的英特爾處理器基本相同的結(jié)果。x86編譯器1304表示用于生成x86二進(jìn)制代碼1306(例如,對象代碼)的編譯器,該二進(jìn)制代碼1306可通過或不通過附加的關(guān)聯(lián)處理在具有至少一個x86指令集核的處理器1316上執(zhí)行。類似地,圖13示出用高級語言1306的程序可以使用替代的指令集編譯器1308來編譯,以生成可以由不具有至少一個x86指令集核的處理器1314(例如具有執(zhí)行加利福尼亞州桑尼維爾市的MIPS技術(shù)公司的MIPS指令集,和/或執(zhí)行加利福尼亞州桑尼維爾市的ARM控股公司的ARM指令集的核的處理器)原生執(zhí)行的替代指令集二進(jìn)制代碼1310。指令轉(zhuǎn)換器1312被用來將x86二進(jìn)制代碼1306轉(zhuǎn)換成可以由不具有x86指令集核的處理器1314原生執(zhí)行的代碼。該轉(zhuǎn)換后的代碼不大可能與替代指令集二進(jìn)制代碼1310相同,因?yàn)槟軌蜻@樣做的指令轉(zhuǎn)換器難以制造;然而,轉(zhuǎn)換后的代碼將完成一般操作并由來自替代指令集的指令構(gòu)成。因此,指令轉(zhuǎn)換器1312通過仿真、模擬或任何其它過程來表示允許不具有x86指令集處理器或核的處理器或其它電子設(shè)備執(zhí)行x86二進(jìn)制代碼1306的軟件、固件、硬件或其組合。

圖14示出用于提供向量聚集操作功能的過程1401的一個實(shí)施例的流程圖。過程1401和在此描述的其他過程由處理塊來執(zhí)行,處理塊可包括由通用功能機(jī)器或由特定功能機(jī)器或由它們的組合可執(zhí)行的專用硬件或軟件或固件操作代碼。

在過程1401的處理塊1409,可選地,從執(zhí)行第二操作時將使用的掩碼中創(chuàng)建副本。然后處理繼續(xù)至處理塊1410,在處理塊1410,從掩碼寄存器中的多個掩碼字段中的每個字段讀取下一值。將理解,雖然過程1401被示為迭代性的,但優(yōu)選在可能的時候并行地執(zhí)行這些操作中的許多操作。掩碼寄存器中的多個掩碼字段中的每一個可對應(yīng)于存儲器中的數(shù)據(jù)元素的偏移量,并且對于掩碼寄存器中的每個字段,第一值表明相應(yīng)的元素尚未從存儲器中被聚集,而第二值表明相應(yīng)的數(shù)據(jù)元素?zé)o需被聚集或已經(jīng)從存儲器中被聚集。在一個實(shí)施例中,掩碼寄存器是在體系結(jié)構(gòu)上可見的寄存器。在另一實(shí)施例中,掩碼寄存器可以是隱式的,例如其中所有字段最初指示相應(yīng)的元素尚未從存儲器中被聚集。在處理塊1420,將掩碼寄存器的字段與第一值作比較,該第一值指示相應(yīng)元素尚未從存儲器被聚集。如果不等于第一值,則處理繼續(xù)至處理塊1450,在處理塊1450重復(fù)聚集操作直到完成。否則,在處理塊1430,從存儲器聚集相應(yīng)的數(shù)據(jù)元素并將其存儲到具有多個數(shù)據(jù)字段的向量寄存器中,多個數(shù)據(jù)字段的一部分用于存儲被聚集的數(shù)據(jù)元素。一旦成功完成處理塊1430,就在處理塊1440中將掩碼寄存器中的相應(yīng)字段改變?yōu)榈诙?,該第二值指示相?yīng)的數(shù)據(jù)元素已經(jīng)從存儲器中被聚集。

將理解,在一個替代實(shí)施例中,可通過如下方式構(gòu)建處理塊1409的復(fù)制掩碼:當(dāng)掩碼寄存器中的相應(yīng)字段在處理塊1440中被改變至第二值時,將復(fù)制掩碼寄存器中的字段設(shè)置為第一值,以供第二操作使用。因此,通過在部分復(fù)制的掩碼下完成第二操作以及在存儲器錯誤之后利用新掩碼來重啟聚集操作指令,可僅跟蹤仍需要執(zhí)行聚集操作指令的元素。

在處理塊1450,判斷聚集操作是否完成(即,掩碼寄存器中的多個掩碼字段中的每個字段均具有第二值)。如果未完成,則處理重復(fù)在處理塊1410中開始。如果完成,則處理繼續(xù)至處理塊1460,在處理塊1460執(zhí)行第二操作。在一個實(shí)施例中,可利用來自可選的處理塊1409的復(fù)制掩碼來執(zhí)行第二操作。在另一實(shí)施例中,可在不使用掩碼的情況下執(zhí)行第二操作。然后在處理塊1470,將SIMD聚集操作指令的結(jié)果存儲在向量寄存器中。

圖15示出用于提供向量聚集操作功能的過程1501的另一實(shí)施例的流程圖。在過程1501的處理塊1505,解碼聚集操作指令。處理繼續(xù)至處理塊1509,在處理塊1509可選地從執(zhí)行第二操作時將使用的掩碼創(chuàng)建副本。然后處理繼續(xù)至處理塊1510,在處理塊1510,從掩碼寄存器中的多個掩碼字段中的每個字段讀取下一值。同樣,雖然過程1501被示為迭代性,但在可能時,諸個操作中的許多操作可并行地執(zhí)行。在處理塊1520,將掩碼寄存器的下一字段與第一值作比較,該第一值指示相應(yīng)元素尚未從存儲器被聚集。如果不等于第一值,則處理繼續(xù)至處理塊1550,在處理塊1550重復(fù)聚集操作直到完成。否則,在處理塊1530,從存儲器聚集相應(yīng)的數(shù)據(jù)元素并在處理塊1535將其存儲到具有多個數(shù)據(jù)字段的向量寄存器中,多個數(shù)據(jù)字段的一部分用于存儲被聚集的數(shù)據(jù)元素。一旦成功完成處理塊1535,就在處理塊1540中將掩碼寄存器中的相應(yīng)字段改變?yōu)榈诙担摰诙抵甘鞠鄳?yīng)的數(shù)據(jù)元素已經(jīng)從存儲器中被聚集。

同樣,將理解,在替代實(shí)施例中,可通過如下方式構(gòu)建處理塊1509的復(fù)制掩碼:當(dāng)掩碼寄存器中的相應(yīng)字段在處理塊1540中被改變至第二值時,將復(fù)制掩碼寄存器中的字段設(shè)置為第一值,以供第二操作使用。因此,通過在部分復(fù)制的掩碼下完成第二操作以及在存儲器錯誤之后利用新掩碼來重啟聚集操作指令,可僅跟蹤仍需要執(zhí)行聚集操作指令的元素。

在處理塊1550,判斷聚集操作是否完成(即,掩碼寄存器中的多個掩碼字段中的每個字段均具有第二值)。如果未完成,則處理重復(fù)在處理塊1510中開始。如果完成,則處理繼續(xù)至處理塊1565,在處理塊1565對來自目的地寄存器的元素和來自第二操作數(shù)寄存器的元素執(zhí)行第二操作。在一個實(shí)施例中,可利用來自可選的處理塊1509的復(fù)制掩碼來執(zhí)行第二操作。在另一實(shí)施例中,可在不使用掩碼的情況下執(zhí)行第二操作。然后在處理塊1570,將SIMD聚集操作指令的結(jié)果存儲在向量目的地寄存器中。

將理解,可通過硬件(尤其是在無序微體系結(jié)構(gòu)中)有效地處理聚集操作與第二操作之間的依賴關(guān)系,由此允許進(jìn)一步的編譯器優(yōu)化和改善的指令吞吐量。

圖16示出了用于提供向量分散操作功能的過程1601的一個實(shí)施例的流程圖。在過程1601的處理塊1610,對來自第一操作數(shù)寄存器的元素和來自第二操作數(shù)寄存器的相應(yīng)元素執(zhí)行第一操作。然后處理繼續(xù)至處理塊1620,在處理塊1620從掩碼寄存器中的多個掩碼字段中的字段讀取下一值。將理解,雖然過程1601被示為迭代性的,但優(yōu)選在可能的時候并行地執(zhí)行這些操作中的許多操作。掩碼寄存器中的多個掩碼字段中的每一個可對應(yīng)于存儲器中的數(shù)據(jù)元素的偏移量,并且對于掩碼寄存器中的每個字段,第一值表明相應(yīng)的元素尚未被分散至存儲器,而第二值表明相應(yīng)的數(shù)據(jù)元素?zé)o需被分散或已經(jīng)被分散至存儲器。在一個實(shí)施例中,掩碼寄存器是在體系結(jié)構(gòu)上可見的寄存器。在另一實(shí)施例中,掩碼寄存器可以是隱式的,例如其中所有字段最初指示相應(yīng)的元素尚未被分散至存儲器。在處理塊1630,將掩碼寄存器的字段與第一值作比較,該第一值指示相應(yīng)元素尚未被分散至存儲器。如果不等于第一值,則處理繼續(xù)至處理塊1660,在處理塊1660重復(fù)分散操作直到完成。否則在處理塊1640,將相應(yīng)的數(shù)據(jù)元素分散至存儲器。一旦成功完成處理塊1640,就在處理塊1650中將掩碼寄存器中的相應(yīng)字段改變?yōu)榈诙?,該第二值指示相?yīng)的數(shù)據(jù)元素已經(jīng)被分散至存儲器。

在處理塊1660,判斷分散操作是否完成(即掩碼寄存器中的多個掩碼字段中的每個字段具有第二值)。如果未完成,則處理重復(fù)在處理塊1620中開始。如果完成,則處理繼續(xù)至處理塊1670,在處理塊1670中將SIMD分散操作指令的結(jié)果存儲在向量寄存器中。

圖17示出用于提供向量分散操作功能的過程1701的另一實(shí)施例的流程圖。在過程1701的處理塊1705,解碼分散操作指令。處理繼續(xù)至處理塊1720,在處理塊1720中從掩碼寄存器中的多個掩碼字段中的字段讀取下一值。將理解,雖然過程1701被示為迭代性的,但優(yōu)選在可能的時候并行地執(zhí)行這些操作中的許多操作。

在一個實(shí)施例中,掩碼寄存器是在體系結(jié)構(gòu)上可見的寄存器。在另一實(shí)施例中,掩碼寄存器可以是隱式的,例如其中所有字段最初指示相應(yīng)的元素尚未被分散至存儲器。在處理塊1730,將掩碼寄存器的字段與第一值作比較,該第一值指示相應(yīng)元素尚未被分散至存儲器。如果不等于第一值,則處理繼續(xù)至處理塊1760,在處理塊1760中重復(fù)分散操作直到完成。否則,在處理塊1710,對來自第一操作數(shù)/目的地寄存器的相應(yīng)元素和來自第二操作數(shù)寄存器的相應(yīng)元素執(zhí)行第一操作。在處理塊1740,將相應(yīng)的數(shù)據(jù)元素分散至存儲器。一旦成功完成處理塊1740,就在處理塊1750中將掩碼寄存器中的相應(yīng)字段改變?yōu)榈诙?,該第二值指示相?yīng)的數(shù)據(jù)元素已經(jīng)被分散至存儲器。

在處理塊1760,判斷分散操作是否完成(即,掩碼寄存器中的多個掩碼字段中的每個字段均具有第二值)。如果未完成,則處理重復(fù)在處理塊1720中開始。如果完成,則處理繼續(xù)至處理塊1770,在處理塊1770中將SIMD分散操作指令的結(jié)果存儲在向量寄存器中。

本發(fā)明的實(shí)施例涉及用于提供向量分散操作和/或聚集操作功能的指令,其中可通過硬件(尤其是在無序微體系結(jié)構(gòu)中)有效地處理聚集或分散操作與另一操作之間的依賴關(guān)系,由此允許進(jìn)一步的編譯器優(yōu)化和改善的指令吞吐量。

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

可將程序代碼應(yīng)用至輸入指令以執(zhí)行本文描述的功能并產(chǎn)生輸出信息。輸出信息可以按已知方式被應(yīng)用于一個或多個輸出設(shè)備。為了本申請的目的,處理系統(tǒng)包括具有諸如例如數(shù)字信號處理器(DSP)、微控制器、專用集成電路(ASIC)或微處理器之類的處理器的任何系統(tǒng)。

程序代碼可以用高級程序化語言或面向?qū)ο蟮木幊陶Z言來實(shí)現(xiàn),以便與處理系統(tǒng)通信。程序代碼也可以在需要的情況下用匯編語言或機(jī)器語言來實(shí)現(xiàn)。事實(shí)上,本文中描述的機(jī)制不僅限于任何特定編程語言的范圍。在任一情形下,語言可以是編譯語言或解釋語言。

至少一個實(shí)施例的一個或多個方面可以由存儲在機(jī)器可讀介質(zhì)上的代表性指令來實(shí)現(xiàn),該指令表示處理器中的各種邏輯,其在被機(jī)器讀取時使得該機(jī)器生成執(zhí)行本文描述的技術(shù)的邏輯。被稱為“IP核”的這樣的表示可以存儲在有形的機(jī)器可讀介質(zhì)中,并提供給各種客戶或生產(chǎn)設(shè)施,以加載到實(shí)際制造邏輯或處理器的制造機(jī)器中。

此類機(jī)器可讀存儲介質(zhì)可包括但不限于通過機(jī)器或設(shè)備制造或形成的粒子的有形排列,包括存儲介質(zhì),諸如:硬盤;包括軟盤、光盤、壓縮盤只讀存儲器(CD-ROM)、可重寫壓縮盤(CD-RW)以及磁光盤的任何其它類型的盤;諸如只讀存儲器(ROM)之類的半導(dǎo)體器件;諸如動態(tài)隨機(jī)存取存儲器(DRAM)、靜態(tài)隨機(jī)存取存儲器(SRAM)之類的隨機(jī)存取存儲器(RAM);可擦除可編程只讀存儲器(EPROM);閃存;電可擦除可編程只讀存儲器(EEPROM);磁卡或光卡;或適于存儲電子指令的任何其它類型的介質(zhì)。

因此,本發(fā)明的各實(shí)施例還包括非瞬態(tài)、有形機(jī)器可讀介質(zhì),該介質(zhì)包含指令或包含設(shè)計(jì)數(shù)據(jù),諸如硬件描述語言(HDL),它定義本文中描述的結(jié)構(gòu)、電路、裝置、處理器和/或系統(tǒng)特性。這些實(shí)施例也被稱為程序產(chǎn)品。

在某些情況下,指令轉(zhuǎn)換器可用來將指令從源指令集轉(zhuǎn)換至目標(biāo)指令集。例如,指令轉(zhuǎn)換器可以變換(例如使用靜態(tài)二進(jìn)制變換、包括動態(tài)匯編的動態(tài)二進(jìn)制變換)、變形、模擬或以其它方式將指令轉(zhuǎn)換成將由核來處理的一個或多個其它指令。指令轉(zhuǎn)換器可以用軟件、硬件、固件、或其組合實(shí)現(xiàn)。指令轉(zhuǎn)換器可以在處理器上、在處理器外、或者部分在處理器上部分在處理器外。

因此,揭示了用于執(zhí)行根據(jù)至少一個實(shí)施例的一個或多個指令的技術(shù)。雖然已經(jīng)描述了特定示例實(shí)施例,并示出在附圖中,可以理解到,這些實(shí)施例僅僅是示例性的且不限制本發(fā)明的翻譯,并且本發(fā)明不限于所示出和所描述的特定結(jié)構(gòu)和配置,因?yàn)楸绢I(lǐng)域技術(shù)人員在研究了本公開文本之后可以料知到多種其他修改方式。在本技術(shù)領(lǐng)域中,因?yàn)榘l(fā)展很快且未來的進(jìn)步未曾可知,本公開的諸個實(shí)施例可通過受益于技術(shù)進(jìn)步而容易地獲得配置和細(xì)節(jié)上的改動,而不背離本公開的原理和所附的權(quán)利要求書的范圍。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1