国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      用于提供向量橫向多數(shù)表決功能的處理器、設(shè)備和處理系統(tǒng)的制作方法

      文檔序號(hào):12122764閱讀:461來(lái)源:國(guó)知局
      用于提供向量橫向多數(shù)表決功能的處理器、設(shè)備和處理系統(tǒng)的制作方法與工藝

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

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



      背景技術(shù):

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

      對(duì)于一些算法,無(wú)法利用這樣的高度數(shù)據(jù)并行性,并且因此未能充分利用向量資源。

      另一方面,在高產(chǎn)處理器中通常不將容錯(cuò)和故障檢測(cè)特征應(yīng)用于諸如算術(shù)邏輯單元(ALU)之類的數(shù)據(jù)變換單元,因?yàn)樵搶?shí)現(xiàn)方式的成本超過(guò)了利潤(rùn)。然而,減小封裝中的晶體管的尺寸并增加其數(shù)量、同時(shí)使器件更快和更高效會(huì)提高源于α粒子和其他偶然因素的故障概率。

      此外,存在一些極端環(huán)境,其中容錯(cuò)是計(jì)算機(jī)系統(tǒng)的高度期望具有的特征。例如,海軍研究生院(Naval Postgraduate School)的空間系統(tǒng)學(xué)術(shù)組(Space Systems Academic Group)曾使用現(xiàn)場(chǎng)可編程門陣列(FPGA)開(kāi)發(fā)了可配置的容錯(cuò)處理器(CFTP)。然后它作為實(shí)驗(yàn)負(fù)載被部署在美國(guó)海軍學(xué)院(USNA)MidSTAR-1衛(wèi)星上。第二個(gè)CFTP系統(tǒng)CFTP-2則被部署為完全的陸基系統(tǒng),并利用加州大學(xué)戴維斯分校的回旋加速器在質(zhì)子束中被測(cè)試。

      這樣的FPGA實(shí)現(xiàn)方式可能限制原本可從例如超大規(guī)模集成(VLSI)之類所獲得的性能優(yōu)勢(shì),并且它們的實(shí)現(xiàn)方式還會(huì)更大和/或更重,且需要更高的供電電壓。

      到目前為止,尚未充分探索針對(duì)這樣的性能和效率受限問(wèn)題的潛在解決方案。

      附圖說(shuō)明

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

      圖1A是執(zhí)行用于提供向量橫向多數(shù)表決功能的指令的系統(tǒng)的一個(gè)實(shí)施例的框圖。

      圖1B是執(zhí)行用于提供向量橫向多數(shù)表決功能的指令的系統(tǒng)的另一實(shí)施例的框圖。

      圖1C是執(zhí)行用于提供向量橫向多數(shù)表決功能的指令的系統(tǒng)的另一實(shí)施例的框圖。

      圖2是執(zhí)行用于提供向量橫向多數(shù)表決功能的指令的處理器的一個(gè)實(shí)施例的框圖。

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

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

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

      圖3D示出根據(jù)一個(gè)實(shí)施例的用于提供向量橫向多數(shù)表決功能的指令編碼。

      圖3E示出根據(jù)另一實(shí)施例的用于提供向量橫向多數(shù)表決功能的指令編碼。

      圖3F示出根據(jù)另一實(shí)施例的用于提供向量橫向多數(shù)表決功能的指令編碼。

      圖3G示出根據(jù)另一實(shí)施例的用于提供向量橫向多數(shù)表決功能的指令編碼。

      圖3H示出根據(jù)另一實(shí)施例的用于提供向量橫向多數(shù)表決功能的指令編碼。

      圖4A示出用于執(zhí)行提供向量橫向多數(shù)表決功能的指令的處理器微體系結(jié)構(gòu)的一個(gè)實(shí)施例的要素。

      圖4B示出用于執(zhí)行提供向量橫向多數(shù)表決功能的指令的處理器微體系結(jié)構(gòu)的另一實(shí)施例的要素。

      圖5是用于執(zhí)行提供向量橫向多數(shù)表決功能的指令的處理器的一個(gè)實(shí)施例的框圖。

      圖6是用于執(zhí)行提供向量橫向多數(shù)表決功能的指令的計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例的框圖。

      圖7是用于執(zhí)行提供向量橫向多數(shù)表決功能的指令的計(jì)算機(jī)系統(tǒng)的另一實(shí)施例的框圖。

      圖8是用于執(zhí)行提供向量橫向多數(shù)表決功能的指令的計(jì)算機(jī)系統(tǒng)的另一實(shí)施例的框圖。

      圖9是用于執(zhí)行提供向量橫向多數(shù)表決功能的指令的芯片上系統(tǒng)的一個(gè)實(shí)施例的框圖。

      圖10是用于執(zhí)行提供向量橫向多數(shù)表決功能的指令的處理器的實(shí)施例的框圖。

      圖11是提供向量橫向多數(shù)表決功能的IP核開(kāi)發(fā)系統(tǒng)的一個(gè)實(shí)施例的框圖。

      圖12示出提供向量橫向多數(shù)表決功能的體系結(jié)構(gòu)仿真系統(tǒng)的一個(gè)實(shí)施例。

      圖13示出用于轉(zhuǎn)換提供向量橫向多數(shù)表決功能的指令的系統(tǒng)的一個(gè)實(shí)施例。

      圖14A示出用于提供向量橫向多數(shù)表決功能的裝置的一個(gè)實(shí)施例。

      圖14B示出用于提供向量橫向多數(shù)表決功能的裝置的替代實(shí)施例。

      圖15示出用于提供向量橫向多數(shù)表決功能的過(guò)程的一個(gè)實(shí)施例的流程圖。

      圖16示出用于提供向量橫向多數(shù)表決功能的過(guò)程的替代實(shí)施例的流程圖。

      圖17示出用于提供向量橫向多數(shù)表決功能的過(guò)程的另一替代實(shí)施例的流程圖。

      具體實(shí)施方式

      以下描述公開(kāi)了用于提供處理器、計(jì)算機(jī)系統(tǒng)或其他處理裝置之內(nèi)或與處理器、計(jì)算機(jī)系統(tǒng)或其他處理裝置相關(guān)聯(lián)的向量橫向多數(shù)表決功能的指令和處理邏輯。

      本申請(qǐng)中公開(kāi)了用于提供向量橫向多數(shù)表決功能的指令和邏輯。在一些實(shí)施例中,響應(yīng)于一指令,該指令指定了目的地操作數(shù)、向量元素的大小、源操作數(shù)、以及與源操作數(shù)中的向量元素?cái)?shù)據(jù)字段的部分相對(duì)應(yīng)的掩碼,從源操作數(shù)中的與由該指令指定的掩碼相對(duì)應(yīng)的指定大小的數(shù)據(jù)字段讀取多個(gè)值,并且將結(jié)果值存儲(chǔ)至目的地操作數(shù)中的相同數(shù)量的相應(yīng)數(shù)據(jù)字段,該結(jié)果值是根據(jù)從源操作數(shù)的多個(gè)數(shù)據(jù)字段讀取的值中的多數(shù)而計(jì)算得出的。在一些實(shí)施例中,結(jié)果值表示從源操作數(shù)的多個(gè)數(shù)據(jù)字段讀取的值的逐位多數(shù)。在一些實(shí)施例中,結(jié)果值表示從源操作數(shù)的多個(gè)數(shù)據(jù)字段讀取的匹配值的多數(shù)的值。

      向量橫向多數(shù)表決功能可提供容錯(cuò)和故障檢測(cè)特征,這些容錯(cuò)和故障檢測(cè)特征在沒(méi)有高昂的實(shí)現(xiàn)成本的情況下在高產(chǎn)處理器中通常不可用。由于減少封裝中的晶體管的尺寸并且增加晶體管的數(shù)量會(huì)提高由于α粒子和其他偶然因素引起的故障的概率,所以這些容錯(cuò)和故障檢測(cè)特征越來(lái)越合乎需要。

      在容錯(cuò)是計(jì)算機(jī)系統(tǒng)的高度期望具有的特征的一些極端環(huán)境下,具有向量橫向多數(shù)表決功能的商用處理器可提供容錯(cuò)和故障檢測(cè)以及可從高度集成獲得的優(yōu)勢(shì),同時(shí)更小且更輕,并且具有比諸如FPGA技術(shù)之類的其他替代技術(shù)更好的功率效率。

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

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

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

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

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

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

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

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

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

      科學(xué)應(yīng)用、金融應(yīng)用、自動(dòng)向量化通用應(yīng)用、RMS(識(shí)別、挖掘和合成)應(yīng)用以及視覺(jué)和多媒體應(yīng)用(諸如,2D/3D圖形、圖像處理、視頻壓縮/解壓縮、語(yǔ)音識(shí)別算法和音頻處理)可能需要對(duì)大量數(shù)據(jù)項(xiàng)執(zhí)行相同的操作。在一個(gè)實(shí)施例中,單指令多數(shù)據(jù)(SIMD)指的是使得處理器在多個(gè)數(shù)據(jù)元素上執(zhí)行一操作的一種類型的指令。SIMD技術(shù)可被用于處理器中,這些處理器將寄存器中的諸個(gè)位(bit)邏輯地劃分入多個(gè)固定大小或可變大小的數(shù)據(jù)元素,每個(gè)數(shù)據(jù)元素表示單獨(dú)的值。例如,在一個(gè)實(shí)施例中,64位寄存器中的諸個(gè)位可被組織為包含四個(gè)單獨(dú)的16位數(shù)據(jù)元素的源操作數(shù),每個(gè)數(shù)據(jù)元素表示單獨(dú)的16位值。該數(shù)據(jù)類型可被稱為“打包”數(shù)據(jù)類型或“向量”數(shù)據(jù)類型,并且該數(shù)據(jù)類型的操作數(shù)被稱為打包數(shù)據(jù)操作數(shù)或向量操作數(shù)。在一個(gè)實(shí)施例中,打包數(shù)據(jù)項(xiàng)或向量可以是存儲(chǔ)在單個(gè)寄存器中的打包數(shù)據(jù)元素的序列,并且打包數(shù)據(jù)操作數(shù)或向量操作數(shù)可以是SIMD指令(或“打包數(shù)據(jù)指令”或“向量指令”)的源操作數(shù)或目的地操作數(shù)。在一個(gè)實(shí)施例中,SIMD指令指定了將要對(duì)兩個(gè)源向量操作數(shù)執(zhí)行的單個(gè)向量操作,以生成具有相同或不同大小的、具有相同或不同數(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處理器(諸如,中國(guó)科學(xué)院計(jì)算機(jī)技術(shù)研究所(ICT)開(kāi)發(fā)的龍芯處理器族)所使用的SIMD技術(shù)之類的SIMD技術(shù)在應(yīng)用性能上帶來(lái)了極大的提高(CoreTM和MMXTM是加利福尼亞州圣克拉拉市的英特爾公司的注冊(cè)商標(biāo)或商標(biāo))。

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

      圖1A是根據(jù)本發(fā)明的一個(gè)實(shí)施例的示例性計(jì)算機(jī)系統(tǒng)的框圖,具有包括執(zhí)行單元以執(zhí)行指令的處理器。根據(jù)本發(fā)明,諸如根據(jù)在此所描述的實(shí)施例,系統(tǒng)100包括諸如處理器102之類的組件,以采用包括邏輯的執(zhí)行單元來(lái)執(zhí)行算法以處理數(shù)據(jù)。系統(tǒng)100代表基于可從美國(guó)加利福尼亞州圣克拉拉市的英特爾公司獲得的III、4、Xeontm、XScaletm和/或StrongARMtm微處理器的處理系統(tǒng),不過(guò)也可使用其它系統(tǒng)(包括具有其它微處理器的PC、工程工作站、機(jī)頂盒等)。在一個(gè)實(shí)施例中,樣本系統(tǒng)100可執(zhí)行可從美國(guó)華盛頓州雷蒙德市的微軟公司買到的WINDOWStm操作系統(tǒng)的一個(gè)版本,不過(guò)也可使用其它操作系統(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ī)、個(gè)人數(shù)字助理(PDA)、手持式PC。嵌入式應(yīng)用可包括:微控制器、數(shù)字信號(hào)處理器(DSP)、芯片上系統(tǒng)、網(wǎng)絡(luò)計(jì)算機(jī)(NetPC)、機(jī)頂盒、網(wǎng)絡(luò)中樞、廣域網(wǎng)(WAN)交換機(jī)、或可執(zhí)行參照至少一個(gè)實(shí)施例的一個(gè)或多個(gè)指令的任何其他系統(tǒng)。

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

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

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

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

      系統(tǒng)邏輯芯片116耦合至處理器總線110和存儲(chǔ)器120。在所示出的實(shí)施例中的系統(tǒng)邏輯芯片116是存儲(chǔ)器控制器中樞(MCH)。處理器102可經(jīng)由處理器總線110與MCH 116通信。MCH 116提供至存儲(chǔ)器120的高帶寬存儲(chǔ)器路徑118,用于指令和數(shù)據(jù)存儲(chǔ),以及用于存儲(chǔ)圖形命令、數(shù)據(jù)和紋理。MCH 116用于引導(dǎo)處理器102、存儲(chǔ)器120以及系統(tǒng)100內(nèi)的其他組件之間的數(shù)據(jù)信號(hào),并在處理器總線110、存儲(chǔ)器120和系統(tǒng)I/O總線122之間橋接數(shù)據(jù)信號(hào)。在一些實(shí)施例中,系統(tǒng)邏輯芯片116可提供耦合至圖形控制器112的圖形端口。MCH 116經(jīng)由存儲(chǔ)器接口118耦合至存儲(chǔ)器120。圖形卡112通過(guò)加速圖形端口(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è)備連接至存儲(chǔ)器120、芯片組以及處理器102。一些示例是音頻控制器、固件中樞(閃存BIOS)128、無(wú)線收發(fā)機(jī)126、數(shù)據(jù)存儲(chǔ)器124、包括用戶輸入和鍵盤(pán)接口的傳統(tǒng)I/O控制器、串行擴(kuò)展端口(諸如通用串行總線USB)以及網(wǎng)絡(luò)控制器134。數(shù)據(jù)存儲(chǔ)設(shè)備124可以包括硬盤(pán)驅(qū)動(dòng)器、軟盤(pán)驅(qū)動(dòng)器、CD-ROM設(shè)備、閃存設(shè)備、或其他大容量存儲(chǔ)設(shè)備。

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

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

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

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

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

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

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

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

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

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

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

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

      無(wú)序引擎203是將指令準(zhǔn)備好用于執(zhí)行的單元。無(wú)序執(zhí)行邏輯具有若干個(gè)緩沖器,用于將指令流平滑并且重排序,以優(yōu)化指令流進(jìn)入流水線后的性能,并調(diào)度指令流以供執(zhí)行。分配器邏輯分配每個(gè)微操作需要的機(jī)器緩沖器和資源,以用于執(zhí)行。寄存器重命名邏輯將諸個(gè)邏輯寄存器重命名為寄存器組中的條目。在指令調(diào)度器(存儲(chǔ)器調(diào)度器、快速調(diào)度器202、慢速/通用浮點(diǎn)調(diào)度器204、簡(jiǎn)單浮點(diǎn)調(diào)度器206)之前,分配器也將每個(gè)微操作的條目分配入兩個(gè)微操作隊(duì)列中的一個(gè),一個(gè)隊(duì)列用于存儲(chǔ)器操作,另一個(gè)隊(duì)列用于非存儲(chǔ)器操作。微操作調(diào)度器202、204、206基于對(duì)它們的依賴輸入寄存器操作數(shù)源的準(zhǔn)備就緒以及微操作完成它們的操作所需的執(zhí)行資源的可用性來(lái)確定微操作何時(shí)準(zhǔn)備好用于執(zhí)行。一個(gè)實(shí)施例的快速調(diào)度器202可在主時(shí)鐘周期的每半個(gè)上進(jìn)行調(diào)度,而其他調(diào)度器可僅僅在每個(gè)主處理器時(shí)鐘周期上調(diào)度一次。調(diào)度器對(duì)分配端口進(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)操作。一個(gè)實(shí)施例的每個(gè)寄存器組208、210也包括旁路網(wǎng)絡(luò),旁路網(wǎng)絡(luò)可將剛完成的還沒(méi)有被寫(xiě)入寄存器組的結(jié)果旁路或轉(zhuǎn)發(fā)給新的依賴微操作。整數(shù)寄存器組208和浮點(diǎn)寄存器組210也能夠彼此通信數(shù)據(jù)。對(duì)于一個(gè)實(shí)施例,整數(shù)寄存器組208被劃分為兩個(gè)單獨(dú)的寄存器組,一個(gè)寄存器組用于低階的32位數(shù)據(jù),第二個(gè)寄存器組用于高階的32位數(shù)據(jù)。一個(gè)實(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存儲(chǔ)微指令需要執(zhí)行的整數(shù)和浮點(diǎn)數(shù)據(jù)操作數(shù)值。一個(gè)實(shí)施例的處理器200由多個(gè)執(zhí)行單元組成:地址產(chǎn)生單元(AGU)212、AGU 214、快速ALU(算術(shù)邏輯單元)216、快速ALU 218、慢速ALU 220、浮點(diǎn)ALU 222、浮點(diǎn)移動(dòng)單元224。對(duì)于一個(gè)實(shí)施例,浮點(diǎn)執(zhí)行塊222、224執(zhí)行浮點(diǎn)、MMX、SIMD、SSE以及其他操作。一個(gè)實(shí)施例的浮點(diǎn)ALU 222包括64位/64位浮點(diǎn)除法器,用于執(zhí)行除法、平方根、以及余數(shù)微操作。對(duì)于本發(fā)明的諸個(gè)實(shí)施例,涉及浮點(diǎn)值的指令可使用浮點(diǎn)硬件來(lái)處理。在一個(gè)實(shí)施例中,ALU操作進(jìn)入高速ALU執(zhí)行單元216、218。一個(gè)實(shí)施例的高速ALU 216、218可執(zhí)行高速操作,有效等待時(shí)間為半個(gè)時(shí)鐘周期。對(duì)于一個(gè)實(shí)施例,大多數(shù)復(fù)雜整數(shù)操作進(jìn)入慢速ALU 220,因?yàn)槁貯LU 220包括用于長(zhǎng)等待時(shí)間類型操作的整數(shù)執(zhí)行硬件,諸如,乘法器、移位器、標(biāo)記邏輯和分支處理。存儲(chǔ)器加載/存儲(chǔ)操作由AGU 212、214來(lái)執(zhí)行。對(duì)于一個(gè)實(shí)施例,整數(shù)ALU 216、218、220被描述為對(duì)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ù)范圍。對(duì)于一個(gè)實(shí)施例,浮點(diǎn)單元222、224可結(jié)合SIMD和多媒體指令對(duì)128位寬度打包數(shù)據(jù)操作數(shù)進(jìn)行操作。

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

      術(shù)語(yǔ)“寄存器”指代被用作為指令的一部分以標(biāo)識(shí)操作數(shù)的板上處理器存儲(chǔ)位置。換句話說(shuō),寄存器是那些處理器外部(從編程者的角度來(lái)看)可用的處理器存儲(chǔ)位置。然而,一實(shí)施例的寄存器不限于表示特定類型的電路。相反,一實(shí)施例的寄存器能夠存儲(chǔ)并提供數(shù)據(jù),并且能夠執(zhí)行在此所述的功能。在此所述的寄存器可由處理器中的電路使用任何數(shù)量不同技術(shù)來(lái)實(shí)現(xiàn),諸如,專用物理寄存器、使用寄存器重命名的動(dòng)態(tài)分配物理寄存器、專用和動(dòng)態(tài)分配物理寄存器的組合,等等。在一個(gè)實(shí)施例中,整數(shù)寄存器存儲(chǔ)三十二位整數(shù)數(shù)據(jù)。一個(gè)實(shí)施例的寄存器組也包含八個(gè)多媒體SIMD寄存器,用于打包數(shù)據(jù)。對(duì)于以下討論,寄存器應(yīng)被理解為設(shè)計(jì)成保存打包數(shù)據(jù)的數(shù)據(jù)寄存器,諸如來(lái)自美國(guó)加利福尼亞州圣克拉拉市的英特爾公司的啟用了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ù)。在一個(gè)實(shí)施例中,在存儲(chǔ)打包數(shù)據(jù)和整數(shù)數(shù)據(jù)時(shí),寄存器不需要區(qū)分這兩類數(shù)據(jù)類型。在一個(gè)實(shí)施例中,整數(shù)和浮點(diǎn)數(shù)據(jù)可被包括在相同的寄存器組中,或被包括在不同的寄存器組中。進(jìn)一步的,在一個(gè)實(shí)施例中,浮點(diǎn)和整數(shù)數(shù)據(jù)可被存儲(chǔ)在不同的寄存器中,或被存儲(chǔ)在相同的寄存器中。

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

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

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

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

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

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

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

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

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

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

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

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

      當(dāng)原始指令中存在第二跳出代碼時(shí),或當(dāng)需要使用REX字段中的額外的位(例如XB和W字段)時(shí)。在下文示出的替代實(shí)施例中,將第一傳統(tǒng)跳出和傳統(tǒng)前綴按照上述類似地壓縮,并且將第二跳出代碼壓縮在“映射”字段中,在未來(lái)映射或特征空間可用的情況下,重新添加新的特征(例如增加的向量長(zhǎng)度和附加的源寄存器區(qū)分符)。

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

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

      evex l RXBmmmmm WvvvLpp evex4 opcode modrm[sib][disp][imm].

      對(duì)于一個(gè)實(shí)施例,根據(jù)EVEX格式398來(lái)編碼的指令可具有額外的“荷載”位,其被用于提供掩碼寄存器與通用寄存器之間的轉(zhuǎn)換,并具有附加的新特征,諸如例如,用戶可配置掩碼寄存器、附加的操作數(shù)、從128位、256位或512位向量寄存器或待選擇的更多的寄存器中的選擇、等等。

      例如,VEX格式397或EVEX格式398可用于提供向量橫向多數(shù)表決功能。此外,對(duì)于128位、256位、512位或更大(或更小)的向量寄存器,VEX格式397或EVEX格式398可用于提供向量橫向多數(shù)表決功能。

      通過(guò)以下示例示出用于提供向量橫向多數(shù)表決功能的示例指令:

      對(duì)于包括對(duì)多個(gè)元素的值的完整值比較的向量橫向多數(shù)表決指令的一些實(shí)施例,當(dāng)未找到具有匹配值的多數(shù)(或小于k個(gè)匹配值)時(shí),可能導(dǎo)致默認(rèn)行為(諸如導(dǎo)致陷入(trap))。對(duì)于包括逐位多數(shù)值的向量橫向多數(shù)表決指令的一些實(shí)施例,當(dāng)未掩蔽元素的數(shù)量是偶數(shù)時(shí)出現(xiàn)平局的情況下,可使用一(1)或零(0)的默認(rèn)偏移值。對(duì)于一些實(shí)施例,這樣的偏移值可能由用戶控制,例如通過(guò)指令參數(shù)控制。類似地,在多數(shù)完整值比較導(dǎo)致元素值的正好半數(shù)匹配的情況下,一些實(shí)施例可提供默認(rèn)行為,諸如返回該匹配值、或?qū)е孪萑搿⒒蛟O(shè)置標(biāo)志、或返回默認(rèn)值(諸如非數(shù)字(NaN))等等。雖然在本申請(qǐng)中參考掩碼和未掩蔽向量元素等等示出了用于提供向量橫向多數(shù)表決功能的指令,但掩碼和掩蔽或未被掩蔽的向量元素對(duì)于這些指令的一些實(shí)施例的使用而言不是必須的,并且本發(fā)明可在不使用此類特征的情況下實(shí)施。類似地,在一些實(shí)施例中,可在不考慮掩碼的情況下,將多數(shù)值廣播至由指令所指定的目的地操作數(shù)中的所有目的地元素。替代地,可將多數(shù)值存儲(chǔ)至目的地操作數(shù)中的僅一個(gè)目的地元素,或不存儲(chǔ)該多數(shù)值。在一些實(shí)施例中,也可將多數(shù)元素計(jì)數(shù)存儲(chǔ)在目的地操作數(shù)中,或以其他方式報(bào)告給用戶(例如作為掩碼報(bào)告給用戶)。向量橫向多數(shù)表決指令的一些實(shí)施例還可實(shí)現(xiàn)大小的指定,例如通過(guò)直接參數(shù)或編碼到指令操作碼中。在一些實(shí)施例中,也可指定該大小以包括多個(gè)數(shù)據(jù)元素,例如128位,其中可對(duì)例如512位向量執(zhí)行向量橫向多數(shù)表決指令,以提供容錯(cuò)和/或?qū)鹘y(tǒng)向量算法(諸如例如傳統(tǒng)SSE代碼)的修正。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      GMCH 620可以是芯片組或芯片組的一部分。GMCH 620可以與(多個(gè))處理器610、615進(jìn)行通信,并控制處理器610、615與存儲(chǔ)器640之間的交互。GMCH 620還可擔(dān)當(dāng)(多個(gè))處理器610、615和系統(tǒng)600的其它元件之間的加速總線接口。對(duì)于至少一個(gè)實(shí)施例,GMCH 620經(jīng)由諸如前端總線(FSB)695之類的多站總線與(多個(gè))處理器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中還可存在附加或不同的處理器。例如,附加(多個(gè))處理器615可包括與處理器610相同的附加(多個(gè))處理器、與處理器610異類或不對(duì)稱的附加(多個(gè))處理器、加速器(諸如圖形加速器或數(shù)字信號(hào)處理(DSP)單元)、現(xiàn)場(chǎng)可編程門陣列或任何其它處理器。按照包括體系結(jié)構(gòu)、微體系結(jié)構(gòu)、熱、功耗特征等等優(yōu)點(diǎn)的度量譜,物理資源610、615之間存在各種差別。這些差別會(huì)有效顯示為處理器610、615之間的不對(duì)稱性和異類性。對(duì)于至少一個(gè)實(shí)施例,各種處理器610、615可駐留在同一管芯封裝中。

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

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

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

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

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

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

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

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

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

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

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

      在一些實(shí)施例中,受益于高度并行吞吐量的指令可由GPU來(lái)執(zhí)行,而受益于處理器(這些處理器受益于深度流水線體系結(jié)構(gòu))的性能的指令可由CPU來(lái)執(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、閃存存儲(chǔ)器控制器1055、雙數(shù)據(jù)率(DDR)控制器1060、安全引擎1065、I2S/I2C(集成跨芯片聲音/跨集成電路)接口1070。其他邏輯和電路可被包括在圖10的處理器中,包括更多的CPU或GPU以及其他外圍設(shè)備接口控制器。

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

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

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

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

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

      圖14A示出用于提供向量橫向多數(shù)表決功能的裝置1401的一個(gè)實(shí)施例。如果多個(gè)輸入中的多數(shù)等于一(1),則多數(shù)函數(shù)(也稱為中值運(yùn)算符)計(jì)算得到一(1),如果多個(gè)輸入中的多數(shù)等于零(0),則多數(shù)函數(shù)計(jì)算得到零(0)。當(dāng)輸入的半數(shù)或更多為假(零)時(shí),默認(rèn)該操作的值會(huì)是假(零),但在平局的情況下,可限定該操作具有向真(1)的偏移。對(duì)于三個(gè)輸入x、y和z,可利用布爾邏輯與或操作將三元多數(shù)函數(shù)(3-MAJ)表示為:

      xy+yz+zx.

      對(duì)于四個(gè)輸入x、y和z,可利用布爾邏輯與或操作將具有向假(零)偏移的四輸入多數(shù)函數(shù)(4-MAJ)表示為:

      xyz+wyz+wxz+wxy.

      在一個(gè)實(shí)施例中,可利用這樣的4輸入多數(shù)函數(shù)邏輯4-MAJ 1425和部分排序網(wǎng)絡(luò)1410來(lái)實(shí)現(xiàn)裝置1401邏輯,以執(zhí)行8個(gè)輸入的多數(shù)函數(shù)。部分排序網(wǎng)絡(luò)1410將低值(零)排序到左側(cè),并將高值(一)排序到右側(cè)。將理解,不需要將這些值完全排序以向4輸入多數(shù)函數(shù)邏輯4-MAJ 1425提供輸入。如果四個(gè)中間信號(hào)中的至少三個(gè)攜帶高值(1),則4輸入多數(shù)函數(shù)邏輯4-MAJ 1425在輸出1405產(chǎn)生高值(1)作為輸出信號(hào)??蛇x地,例如,可使用偏移值B作為對(duì)部分排序網(wǎng)絡(luò)1415的輸入1420,以給8輸入多數(shù)函數(shù)提供可選擇的偏移:1(當(dāng)B=1時(shí))或0(當(dāng)B=0時(shí))。替代地,可使用5輸入多數(shù)函數(shù)邏輯,其輸入中的一個(gè)被固定于可選擇的偏移值B。

      將理解,可使用各種大小的多數(shù)函數(shù)1425和部分排序網(wǎng)絡(luò)1410。此外,通過(guò)經(jīng)由多路復(fù)用器1460強(qiáng)制高值(1)作為部分排序網(wǎng)絡(luò)1410和4-MAJ 1425的輸入,可將裝置1401邏輯精簡(jiǎn)為執(zhí)行七個(gè)輸入的多數(shù)功能。此外,然后通過(guò)經(jīng)由多路復(fù)用器1455強(qiáng)制低值(0)作為部分排序網(wǎng)絡(luò)1410和4-MAJ 1425的輸入,可將裝置1401邏輯精簡(jiǎn)為執(zhí)行六個(gè)輸入的多數(shù)功能。

      因此,例如,將理解,通過(guò)選擇性地使用高值(和低值),可精簡(jiǎn)裝置1401邏輯以執(zhí)行:當(dāng)所有使能信號(hào)E2條到E8條被斷言(為低)以分別控制多路復(fù)用器1430到1460時(shí),執(zhí)行八個(gè)輸入的多數(shù)函數(shù);當(dāng)僅有使能信號(hào)E2條到E7條被斷言(為低)以分別控制多路復(fù)用器1430到1455時(shí),執(zhí)行七個(gè)輸入的多數(shù)函數(shù);當(dāng)僅有使能信號(hào)E2條到E6條被斷言(為低)以分別控制多路復(fù)用器1430到1450時(shí),執(zhí)行六個(gè)輸入的多數(shù)函數(shù);當(dāng)僅有使能信號(hào)E2條到E5條被斷言(為低)以分別控制多路復(fù)用器1430到1445時(shí),執(zhí)行五個(gè)輸入的多數(shù)函數(shù);當(dāng)僅有使能信號(hào)E2條到E4條被斷言(為低)以分別控制多路復(fù)用器1430到1440時(shí),執(zhí)行四個(gè)輸入的多數(shù)函數(shù);當(dāng)僅有使能信號(hào)E2條到E3條被斷言(為低)以分別控制多路復(fù)用器1430到1435時(shí),執(zhí)行三個(gè)輸入的多數(shù)函數(shù);當(dāng)僅有使能信號(hào)E2條被斷言(為低)以控制多路復(fù)用器1430時(shí),執(zhí)行兩個(gè)輸入的多數(shù)函數(shù);以及當(dāng)沒(méi)有使能信號(hào)被斷言(為低)至任何多路復(fù)用器,并且通過(guò)選擇性地使用高值和低值來(lái)有效地禁用僅一個(gè)輸入(第一個(gè))時(shí),執(zhí)行一個(gè)輸入的多數(shù)函數(shù)。將理解,可使用相似的技術(shù)來(lái)構(gòu)造或?qū)崿F(xiàn)任何預(yù)先確定和/或選擇性期望的輸入數(shù)量的多數(shù)函數(shù)邏輯。

      還將理解,由于8輸入多數(shù)函數(shù)裝置1401邏輯在8個(gè)輸入中的至少五個(gè)輸入都為1時(shí)將正常輸出1,所以通過(guò)經(jīng)由多路復(fù)用器1460強(qiáng)制第八個(gè)輸入處為零(代替如圖所示的1),也可將裝置1401邏輯精簡(jiǎn)以執(zhí)行七個(gè)輸入中的5路多數(shù)。類似地,例如,通過(guò)將排序網(wǎng)絡(luò)1410擴(kuò)展為執(zhí)行附加的輸入,可將裝置1401邏輯擴(kuò)展至12個(gè)輸入信號(hào),這可提供k路多數(shù)功能以執(zhí)行至多8個(gè)輸入上的7路多數(shù)。

      圖14B示出用于提供向量橫向多數(shù)表決功能的裝置1402的替代實(shí)施例。裝置1402包括比較邏輯1403,用于比較輸入元素1-8的值是否相等。對(duì)于一些實(shí)施例,元素1-8可以是字節(jié)、字、雙字、單精度浮點(diǎn)值、雙精度浮點(diǎn)值、或要作比較是否相等的任何其他數(shù)據(jù)類型。將理解,在一些實(shí)施例中,可按照比所說(shuō)明的相等比較的數(shù)量要少的數(shù)量并且不考慮元素的數(shù)據(jù)類型來(lái)執(zhí)行這樣的相等比較。

      在比較邏輯1403的相等比較之后,將相應(yīng)的相等比較的真(例如1)或假(例如0)值作為輸入提供給多數(shù)函數(shù)邏輯8-MAJ1 1470、8-MAJ2 1475、……、8-MAJ7 1480以及8-MAJ81485。將理解,多數(shù)函數(shù)邏輯8-MAJ1 1470、8-MAJ2 1475、……、8-MAJ7 1480以及8-MAJ81485的一些實(shí)施例可包括與裝置1401邏輯相似的多數(shù)功能邏輯。多數(shù)函數(shù)邏輯8-MAJ11470、8-MAJ2 1475、……、8-MAJ7 1480以及8-MAJ8 1485各自的輸出可用于確定輸入元素1-8的哪個(gè)值匹配輸入元素1-8的多數(shù)。還將理解,如果需要k路多數(shù),則可容易地根據(jù)其值為真(例如1)的輸出M1、M2……M7以及M8的個(gè)數(shù)來(lái)確定狀況。因此,裝置1402可利用輸入元素的值的完整值比較來(lái)提供向量橫向多數(shù)表決功能。

      圖15示出用于提供向量橫向多數(shù)表決功能的過(guò)程1501的一個(gè)實(shí)施例的流程圖。過(guò)程1501和本文中公開(kāi)的其他過(guò)程通過(guò)處理塊來(lái)執(zhí)行,處理塊可包括專用硬件或可由通用機(jī)器或?qū)S脵C(jī)器或其某種組合執(zhí)行的軟件或固件操作碼。

      在過(guò)程1501的處理塊1510,用于提供向量橫向多數(shù)表決功能的指令的執(zhí)行開(kāi)始。在處理塊1520,對(duì)于首次逐位多數(shù)表決,將位的位置初始化為零(0)。將理解,雖然過(guò)程1501被示為迭代性的(即每次一個(gè)位的位置),但優(yōu)選在可能的時(shí)候并行地執(zhí)行這些操作中的許多操作。在處理塊1530,計(jì)算由該指令所指定的源操作數(shù)中的所有未掩蔽源元素的當(dāng)前位的位置的逐位多數(shù)的值M。在該操作的一些實(shí)施例中,當(dāng)所有未掩蔽源元素的當(dāng)前位的位置的輸入的一半輸入或更多輸入是零(0)時(shí),該值M可以是零(0),但在一些其他實(shí)施例中,在平局的情況下,可將該操作定義為具有向一(1)的偏移。在處理塊1560,將計(jì)算得出的逐位多數(shù)的值M存儲(chǔ)到由該指令所指定的目的地操作數(shù)中的所有未掩蔽目的地元素的當(dāng)前位的位置。在處理塊1570,將當(dāng)前位的位置遞增,以開(kāi)始下一次逐位多數(shù)計(jì)算。然后在處理塊1580,針對(duì)由該指令指定的元素大小來(lái)檢查當(dāng)前位的位置的值,以確定是否已經(jīng)完成所有位的位置。如果未完成所有位的位置,則處理重復(fù)在處理塊1530中開(kāi)始,直到已經(jīng)完成對(duì)于由該指令指定的大小的元素的所有位的位置的逐位多數(shù)計(jì)算。

      否則,在當(dāng)前位的位置到達(dá)由該指令指定的元素大小時(shí),處理從處理塊1580繼續(xù)至處理塊1590,在處理塊1590,用于提供向量橫向多數(shù)表決功能的指令的執(zhí)行結(jié)束。

      將理解,在一些實(shí)施例中,例如在諸如上述的裝置1401邏輯之類的裝置中,可預(yù)先確定和/或硬件置位平局情況下的向零(0)偏移或向一(1)偏移,但在一些其他實(shí)施例中,例如,可編程地選擇這樣的偏移以作為指令類型或指令參數(shù)。

      圖16示出用于提供向量橫向多數(shù)表決功能的過(guò)程1601的另一實(shí)施例的流程圖。在過(guò)程1601的處理塊1610,用于提供向量橫向多數(shù)表決功能的指令的執(zhí)行開(kāi)始。在處理塊1615,確定多數(shù)值K。在一些實(shí)施例中,可根據(jù)未被掩蔽的源元素的數(shù)量來(lái)確定K的值,例如確定為由未被掩蔽的源元素的中值所占據(jù)的位置的編號(hào)。在另一些實(shí)施例中,可編程地將K(例如作為指令參數(shù))選擇為未被掩蔽的源元素的數(shù)量的至少一半。在處理塊1620,對(duì)于首次逐位多數(shù)表決,將位的位置初始化為零(0)。在處理塊1630,獲取由該指令所指定的源操作數(shù)中的所有未被掩蔽的源元素的當(dāng)前位位置中的設(shè)置為等于一(1)和設(shè)置為等于零(0)的那些值的數(shù)量的計(jì)數(shù)。然后在處理塊1635,將零(0)的計(jì)數(shù)與多數(shù)值K作比較,以確定它是否至少與K一樣大。如果是,則在處理塊1640中將逐位多數(shù)的值M設(shè)置為等于零(0)。否則,在處理塊1645,將一(1)的計(jì)數(shù)與多數(shù)值K作比較,以確定它是否至少與K一樣大。如果是,則在處理塊1650中將M的值設(shè)置為等于一(1)。否則,在處理塊1655中采取陷入(trap)。

      如果發(fā)現(xiàn)了至少K個(gè)零或至少K個(gè)一的多數(shù),則處理繼續(xù)至處理塊1660,在處理塊1660,將逐位多數(shù)的值M存儲(chǔ)在由該指令指定的目的地操作數(shù)的當(dāng)前位位置中。在一些實(shí)施例中,將逐位多數(shù)M存儲(chǔ)在目的地操作數(shù)中的所有未被掩蔽的目的地元素的當(dāng)前位位置中。在處理塊1670,將當(dāng)前位位置遞增,以開(kāi)始下一次逐位多數(shù)計(jì)算。然后在處理塊1680,針對(duì)由該指令指定的元素大小來(lái)檢查當(dāng)前位位置的值,以確定是否已經(jīng)完成所有位位置。如果未完成所有位位置,則處理重復(fù)在處理塊1630中開(kāi)始,直到已經(jīng)完成對(duì)于由該指令指定的大小的元素的所有位位置的逐位多數(shù)計(jì)算。

      在當(dāng)前位位置到達(dá)由該指令指定的元素大小時(shí),處理從處理塊1680繼續(xù)至處理塊1690,在處理塊1690,用于提供向量橫向多數(shù)表決功能的指令的執(zhí)行結(jié)束。

      同樣,雖然過(guò)程1601被示為迭代性,但在可能時(shí),諸個(gè)操作中的許多操作可并行地執(zhí)行。

      圖17示出用于提供向量橫向多數(shù)表決功能的過(guò)程1701的另一實(shí)施例的流程圖。在過(guò)程1701的處理塊1710,用于提供向量橫向多數(shù)表決功能的指令的執(zhí)行開(kāi)始。在處理塊1715,確定多數(shù)值K。如上所述,在一些實(shí)施例中,可根據(jù)未被掩蔽的源元素的數(shù)量來(lái)確定K的值,或在另一些實(shí)施例中,可編程地將作為指令參數(shù)的K選擇為等于未被掩蔽的源元素的數(shù)量的至少一半,以計(jì)算至少K路多數(shù)函數(shù)。在處理塊1720,將陷入標(biāo)志初始化為一(1),將多數(shù)元素計(jì)數(shù)ME初始化為一(1),并且將多數(shù)值MV初始化為零(0),以進(jìn)行多數(shù)表決。在處理塊1725,將下一個(gè)未被掩蔽的源元素的值讀入變量V。將理解,雖然過(guò)程1701被示為迭代性的,但優(yōu)選在可能的時(shí)候并行地執(zhí)行這些操作中的許多操作。在處理塊1730,獲得由該指令所指定的源操作數(shù)中的所有未被掩蔽的源元素中的那些元素值等于V的元素E的數(shù)量的計(jì)數(shù)。然后在處理塊1735,將該計(jì)數(shù)E與最大多數(shù)元素計(jì)數(shù)ME作比較,以確定E是否大于ME。如果是,則在處理塊1740中將最大多數(shù)元素計(jì)數(shù)ME的值設(shè)置成等于計(jì)數(shù)E,并且在處理塊1745中將多數(shù)值MV設(shè)置成等于當(dāng)前元素值V。否則,處理僅繼續(xù)至處理塊1750,在處理塊1750,將計(jì)數(shù)E與多數(shù)值K作比較,以確定它是否至少與K一樣大。如果是,則在處理塊1755中將陷入標(biāo)志設(shè)置為零(0),以指示已經(jīng)發(fā)現(xiàn)實(shí)際的多數(shù)值。然后處理繼續(xù)至處理塊1760,在處理塊1760,進(jìn)行檢查以確定是否已經(jīng)讀取所有未被掩蔽的源元素并且處理已經(jīng)到達(dá)掩碼的結(jié)尾。如果否,則處理重復(fù)在處理塊1730中開(kāi)始,直到已經(jīng)完成對(duì)于由該指令指定的源操作數(shù)中的所有未被掩蔽的源元素的多數(shù)值計(jì)算。

      如果是,則處理繼續(xù)至處理塊1770,在處理塊1770,檢查陷入標(biāo)志以確定它是否已被設(shè)置為零(0)以指示已經(jīng)發(fā)現(xiàn)實(shí)際的多數(shù)值。如果否,在處理塊1775中采取陷入(trap)。

      如果是,則處理繼續(xù)至處理塊1780,在處理塊1780,將多數(shù)值MV的值存儲(chǔ)至由該指令指定的目的地操作數(shù)中的所有未被掩蔽的目的地元素。然后,處理從處理塊1780繼續(xù)至處理塊1790,在處理塊1790,用于提供向量橫向多數(shù)表決功能的指令的執(zhí)行結(jié)束。

      將能理解,在過(guò)程1701以及諸如過(guò)程1501和過(guò)程1601之類的其它過(guò)程中,雖然示出了用于提供向量橫向多數(shù)表決功能的指令的執(zhí)行,但也可能出現(xiàn)其它步驟或級(jí),例如流水線400的級(jí)402-414和/或流水線400的級(jí)418-424中的一個(gè)或多個(gè),以充分地便于或響應(yīng)于該指令來(lái)提供向量橫向多數(shù)表決功能。雖然在本申請(qǐng)中參考掩碼和未掩蔽向量元素等等示出了用于提供向量橫向多數(shù)表決功能的指令,但掩碼和掩蔽或未被掩蔽的向量元素對(duì)于這些指令的一些實(shí)施例的使用而言不是必須的,并且本發(fā)明可在不使用此類特征的情況下實(shí)施。類似地,在一些實(shí)施例中,可在不考慮掩碼的情況下,將多數(shù)值MV存儲(chǔ)至由指令指定的目的地操作數(shù)中的所有目的地元素。替代地,可將多數(shù)值MV存儲(chǔ)至目的地操作數(shù)中的僅一個(gè)目的地元素,或不存儲(chǔ)該多數(shù)值MV。在一些實(shí)施例中,也可將最大多數(shù)元素計(jì)數(shù)ME存儲(chǔ)在目的地操作數(shù)中,或以其他方式報(bào)告給用戶(例如作為掩碼報(bào)告給用戶)。

      還將理解,支持向量橫向多數(shù)表決功能的一些實(shí)施例可在不顯著增加實(shí)現(xiàn)成本的情況下提供高產(chǎn)能處理器中不常見(jiàn)的容錯(cuò)和/或故障檢測(cè)特征。在容錯(cuò)是計(jì)算機(jī)系統(tǒng)的高度期望具有的特征的一些極端環(huán)境下,具有向量橫向多數(shù)表決功能的商用處理器可提供容錯(cuò)和故障檢測(cè)以及可從高度集成獲得的優(yōu)勢(shì),同時(shí)更小且更輕,并且具有比諸如FPGA技術(shù)之類的其他替代技術(shù)更好的功率效率。由于減少封裝中的晶體管的尺寸并且增加晶體管的數(shù)量會(huì)提高由于α粒子和其他偶然因素引起的故障的概率,所以這些容錯(cuò)和故障檢測(cè)特征越來(lái)越合乎需要。

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

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

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

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

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

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

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

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

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