針對多數(shù)據(jù)體系結(jié)構(gòu)的精確的異常信號發(fā)送的制作方法
【專利摘要】本申請涉及針對多數(shù)據(jù)體系結(jié)構(gòu)的精確的異常信號發(fā)送。提供了利用多數(shù)據(jù)處理單元處理器對多個(gè)元素執(zhí)行一個(gè)或多個(gè)操作的方法和系統(tǒng)。處理器接收包含多個(gè)元素的輸入矢量。所述處理器判斷對第一元素執(zhí)行第一操作是否會(huì)導(dǎo)致異常,如果是,則向輸出寄存器中存儲(chǔ)的輸出矢量的第一部分寫入由所述第一操作導(dǎo)致的異常的指示。對第二元素可以執(zhí)行第二操作,第二操作的結(jié)果被寫入存儲(chǔ)在輸出寄存器中的輸出矢量的第二部分。
【專利說明】針對多數(shù)據(jù)體系結(jié)構(gòu)的精確的異常信號發(fā)送
【技術(shù)領(lǐng)域】
[0001]本發(fā)明通常涉及利用多數(shù)據(jù)處理單元處理器對一個(gè)或多個(gè)元素執(zhí)行一個(gè)或多個(gè)操作的系統(tǒng)和方法。
【背景技術(shù)】
[0002]多數(shù)據(jù)處理單元處理器,例如單指令多數(shù)據(jù)(SMD)或多指令多數(shù)據(jù)(MMD),接收多數(shù)據(jù)輸入,對輸入數(shù)據(jù)進(jìn)行操作,并將操作結(jié)果輸出至例如輸出寄存器。例如,這種處理器可能接收輸入a,b,c和d,并將它們加在一起以生成a+b和c+d的結(jié)果。有時(shí),對一個(gè)或多個(gè)數(shù)據(jù)輸入執(zhí)行指定的操作對于處理器來說是有問題的,會(huì)產(chǎn)生異常。例如,當(dāng)所述指定的操作并非用于處理器對所提供的輸入執(zhí)行的操作時(shí)會(huì)發(fā)生這種情況。在這種情景中,處理器將無法執(zhí)行該操作并會(huì)產(chǎn)生異常。
[0003]當(dāng)出現(xiàn)異常時(shí),典型地沒有結(jié)果被寫入輸出寄存器中,并且利用軟件模擬技術(shù)由異常處理機(jī)處理異常,例如,對數(shù)據(jù)輸入執(zhí)行操作或者以其他的方式來處理異常。這種方法的問題在于其可能較慢并且耗費(fèi)資源。而且,在許多實(shí)例中,當(dāng)執(zhí)行操作時(shí)只有少數(shù)的多數(shù)據(jù)輸入會(huì)導(dǎo)致異常;當(dāng)執(zhí)行操作時(shí),大多數(shù)的數(shù)據(jù)輸入并不會(huì)導(dǎo)致異常。然而,當(dāng)異常處理機(jī)不能辨別哪種數(shù)據(jù)輸入導(dǎo)致異常時(shí),對異常的處理典型地也會(huì)延遲對與所述異常沒有關(guān)聯(lián)的數(shù)據(jù)的處理。
【發(fā)明內(nèi)容】
[0004]因此,需要允許更精確的異常信號發(fā)送的系統(tǒng)和方法,從而異常處理機(jī)只需處理與有效異常相關(guān)聯(lián)的數(shù)據(jù),同時(shí)允許未導(dǎo)致異常的數(shù)據(jù)輸入能夠及時(shí)地得到一個(gè)或多個(gè)處理單元的處理。根據(jù)本發(fā)明的實(shí)施例,提供了一種利用多數(shù)據(jù)處理單元處理器對多個(gè)元素執(zhí)行一個(gè)或多個(gè)操作的方法。處理器接收包含多個(gè)元素的輸入矢量。所述處理器確定對第一元素執(zhí)行第一操作是否會(huì)導(dǎo)致異常,如果是,向輸出寄存器中存儲(chǔ)的輸出矢量的第一部分寫入異常由第一操作導(dǎo)致的指示。可以對第二元素執(zhí)行第二操作,第二操作的結(jié)果被寫入輸出寄存器中存儲(chǔ)的輸出矢量的第二部分。
[0005]本發(fā)明的實(shí)施例包括多數(shù)據(jù)處理單元處理器。該系統(tǒng)包括輸入寄存器、輸出寄存器和多數(shù)據(jù)處理單元處理器。所述輸入寄存器可以被配置為存儲(chǔ)包含多個(gè)元素的輸入矢量。所述輸出寄存器可以被配置為存儲(chǔ)多個(gè)操作的結(jié)果。所述處理器被配置為從所述輸入寄存器接收輸入矢量,確定對第一元素執(zhí)行第一操作將導(dǎo)致異常,并向所述輸出寄存器中存儲(chǔ)的輸出矢量的第一部分輸出由第一操作導(dǎo)致的異常的指示。此外,所述處理器可以被配置為對第二元素執(zhí)行第二操作,并向所述輸出寄存器中存儲(chǔ)的輸出矢量的第二部分輸出第二操作的結(jié)果。
[0006]本發(fā)明的一些實(shí)施例包括利用多數(shù)據(jù)處理單元處理器對多個(gè)元素執(zhí)行操作的方法。所述方法包括接收包含第一和第二元素的輸入矢量,并確定對第一元素執(zhí)行第一操作將導(dǎo)致異常。在這種情形中,所述方法繼續(xù)通過向輸出寄存器中存儲(chǔ)的輸出矢量的第一部分寫入由第一操作導(dǎo)致的異常的指示。此外,所述方法包括對第二元素執(zhí)行第二操作,并向所述輸出寄存器中存儲(chǔ)的輸出矢量的第二部分寫入第二操作的結(jié)果。
【專利附圖】
【附圖說明】
[0007]合并于此并組成說明書一部分的附圖和文字描述部分共同闡述了本發(fā)明,還用于解釋本發(fā)明的原理,使相關(guān)領(lǐng)域的技術(shù)人員能夠制造和使用本發(fā)明。
[0008]圖1描繪了根據(jù)本發(fā)明的不同實(shí)施例的多數(shù)據(jù)處理單元系統(tǒng)。
[0009]圖2a和2b描繪了根據(jù)本發(fā)明的不同實(shí)施例的多數(shù)據(jù)操作。
[0010]圖3闡述了根據(jù)本發(fā)明的不同實(shí)施例的處理數(shù)據(jù)元素的方法。
[0011]圖4闡述了根據(jù)本發(fā)明的不同實(shí)施例的處理數(shù)據(jù)元素的方法。
[0012]圖5闡述了根據(jù)本發(fā)明的不同實(shí)施例的處理數(shù)據(jù)元素的方法。
[0013]圖6描繪了根據(jù)本發(fā)明的不同實(shí)施例的處理器結(jié)構(gòu)。
[0014]通過下面結(jié)合附圖對本發(fā)明實(shí)施例的詳細(xì)描述,本發(fā)明的特點(diǎn)和優(yōu)勢將更加清楚,在全部附圖中,相同的參考符號標(biāo)識相同的元件。在所述附圖中,相同的參考數(shù)字通常指示相同、功能類似、和/或結(jié)構(gòu)類似的元件。由相應(yīng)參考數(shù)字最左邊的數(shù)字指示元件第一次出現(xiàn)的附圖。
【具體實(shí)施方式】
[0015]下面對本發(fā)明實(shí)施例的詳細(xì)描述將參照圖示了示范性實(shí)施例的附圖進(jìn)行。此處描述的實(shí)施例涉及低功率多處理器??赡艽嬖谄渌膶?shí)施例,在該描述的精神和范圍內(nèi)可以對實(shí)施例進(jìn)行修改。因此,詳細(xì)描述并不意在限制下面描述的實(shí)施例。
[0016]相關(guān)領(lǐng)域技術(shù)人員應(yīng)該清楚的是,可以以附圖中圖示的軟件、硬件、固件和/或?qū)嶓w的多種不同的實(shí)施例來實(shí)現(xiàn)下面描述的實(shí)施例。利用硬件的專門控制來實(shí)現(xiàn)實(shí)施例的任何實(shí)際軟件代碼并非用于限制該描述。因此,在已知此處提供的細(xì)節(jié)程度的情況下,所描述的實(shí)施例的操作行為應(yīng)按照可能存在對所述實(shí)施例的修改和變體來理解。
[0017]圖1描繪了根據(jù)本發(fā)明的實(shí)施例能夠提供精確異常處理的系統(tǒng)100。系統(tǒng)100包括處理器104、輸入A102a和輸入B102b (此處統(tǒng)稱為輸入102)。處理器104可以向輸出寄存器106輸出操作結(jié)果。指令寄存器108可以包含指示所述處理器對輸入102中包含的輸入數(shù)據(jù)元素執(zhí)行什么操作的一個(gè)或多個(gè)指令。
[0018]輸入102a和102b每個(gè)都可以包含一個(gè)或多個(gè)能夠存儲(chǔ)一個(gè)或多個(gè)輸入矢量的寄存器。此外,根據(jù)一些實(shí)施例,可以向所述處理器提供存儲(chǔ)在單獨(dú)寄存器上的單獨(dú)輸入矢量
102。輸入矢量每個(gè)都可以包括多個(gè)由處理器處理的數(shù)據(jù)元素。例如,處理器104可以對一個(gè)或多個(gè)元素的集合執(zhí)行操作以產(chǎn)生結(jié)果。舉個(gè)例子,假定輸入102包含元素X和y。處理器104可以被配置為對元素X和y執(zhí)行操作f并產(chǎn)生結(jié)果z,從而z=f (X,y)。然而,處理器104可以被配置為對來自輸入102的任意數(shù)量的元素執(zhí)行操作。
[0019]根據(jù)一些實(shí)施例,處理器104可以包含多數(shù)據(jù)處理單元處理器,例如單指令多數(shù)據(jù)(SMD)處理器。此外,處理器104可以包含多指令多數(shù)據(jù)(MMD)處理器。處理器可以被配置為基于指令輸入108執(zhí)行多種不同的操作(例如:加、減、除、乘、移位等等)。處理器也可以被配置為向輸出寄存器106輸出操作結(jié)果。[0020]根據(jù)不同的實(shí)施例,處理器104可以被配置為接收控制所述處理器是否以不發(fā)信號的異常模式操作的控制信號110。當(dāng)所述處理器不以不發(fā)信號的異常模式操作時(shí),處理器104可以被認(rèn)為是以“正常”模式操作。也就是,當(dāng)對任何元素的操作產(chǎn)生異常時(shí),所述處理器發(fā)出信號通知異常并且異常處理機(jī)處理對所有元素的操作。然而,當(dāng)處理器104以不發(fā)信號的異常模式操作時(shí),所述處理器不發(fā)送信號通知已經(jīng)發(fā)生異常,而是僅為導(dǎo)致異常的特定操作在輸出寄存器中指示異常,同時(shí)允許對其他元素的操作繼續(xù)執(zhí)行并將結(jié)果寫入輸出寄存器。
[0021]圖2a圖示了處理器104執(zhí)行的操作。例如,如圖所示,處理器104接收包含元素A0、A1、A2和A3的第一輸入矢量202。所述矢量可以具有任意長度并可以存儲(chǔ)在寄存器中。舉個(gè)例子,如果第一輸入矢量202存儲(chǔ)在64位寄存器中,則每個(gè)元素A0、Al、A2和A3包含16位。類似于第一輸入矢量202,第二輸入矢量206也可以包含多個(gè)元素B0、B1、B2和B3。此外,第二輸入矢量206可以存儲(chǔ)在任意長度的寄存器中,而且不需要與存儲(chǔ)第一輸入矢量202的寄存器的長度相同。
[0022]根據(jù)本發(fā)明的實(shí)施例,處理器104可以被配置為對輸入矢量202和206中的元素執(zhí)行操作204。操作204可以由輸入指令108定義。在一些實(shí)施例中(例如,在處理器104是SMD處理器的實(shí)施例中),將只有一條指令并且在對每個(gè)輸入元素對將執(zhí)行同樣的操作。圖2a描述了這種情形,其中每個(gè)元素對(即AO和B0,A1和BI等)被加在一起以獲得結(jié)果矢量208??梢詫⑤敵鍪噶?08組織為多個(gè)結(jié)果(例如:208a、208b、208c和208d),每個(gè)對應(yīng)于對一個(gè)或多個(gè)元素執(zhí)行操作的結(jié)果。根據(jù)其他實(shí)施例(例如,MMD實(shí)施例),處理器104可以接收多條指令或一個(gè)指令矢量,并且對不同的元素對可以執(zhí)行不同的操作。
[0023]和輸入矢量202和206 —樣,結(jié)果矢量208可以存儲(chǔ)在諸如輸出寄存器106的寄存器中。雖然輸出寄存器可以具有任意尺寸,但優(yōu)選足夠大的尺寸以在任何或大多數(shù)環(huán)境下防止溢出。例如,根據(jù)本發(fā)明的觀點(diǎn),輸出寄存器可以大于輸入矢量202和206中的任何一個(gè)。
[0024]圖2b圖示了與圖2a的描述類似的情形,但是其中在一個(gè)元素對執(zhí)行的操作會(huì)導(dǎo)致一個(gè)異常。根據(jù)實(shí)施例,對輸入矢量202和206執(zhí)行操作的處理器104可以按不發(fā)信號的異常模式運(yùn)行。如圖2b所示,輸入矢量202和206中包含的元素按照操作204的指定被加在一起。然而,在這種情形中,將A2和B2相加會(huì)導(dǎo)致異常。然而,剩余的結(jié)果不會(huì)導(dǎo)致異常并且被寫入它們的相應(yīng)位置208a、208b和208d的輸出矢量208的相應(yīng)結(jié)果部分。然而,代替結(jié)果,將A2和B2相加導(dǎo)致異常的指示寫入位于相應(yīng)位置208c的輸出矢量。異常指示可以包含標(biāo)識所發(fā)生的異常的信息(例如,異常代碼)以及關(guān)于導(dǎo)致異常的元素的信肩、O
[0025]圖3圖示了根據(jù)本發(fā)明實(shí)施例的處理數(shù)據(jù)的方法300。在步驟302,處理器可以接收一個(gè)或多個(gè)輸入矢量形式的輸入元素,所述輸入矢量每個(gè)都包含多個(gè)元素。此外,所述處理器可以接收一個(gè)或多個(gè)指示將對輸入元素執(zhí)行的操作的輸入指令。根據(jù)一些實(shí)施例,所述輸入矢量可以存儲(chǔ)在一個(gè)或多個(gè)輸入寄存器中。
[0026]在步驟304,所述處理器確定對第一元素或第一元素集執(zhí)行操作將導(dǎo)致異常。在步驟306,將對第一元素或元素集執(zhí)行操作將導(dǎo)致異常的指示輸出到輸出寄存器中的相應(yīng)位置。在步驟308,可以對第二元素執(zhí)行操作,并且在步驟310,對第二元素的操作的結(jié)果被存儲(chǔ)在輸出寄存器的相應(yīng)位置。根據(jù)一些實(shí)施例,步驟304和306可以與步驟308和310并行執(zhí)行。
[0027]圖4圖示了根據(jù)本發(fā)明實(shí)施例在處理器中使用的處理數(shù)據(jù)的方法400。在步驟402,所述處理器接收輸入元素。根據(jù)不同的實(shí)施例,所述輸入元素可以是一個(gè)或多個(gè)輸入矢量的一部分,并存儲(chǔ)在一個(gè)或多個(gè)輸入寄存器中。此外,所述處理器可以接收一個(gè)或多個(gè)指示所述處理器將要對所述元素執(zhí)行的操作的輸入指令。
[0028]在步驟404,所述處理器判斷是否已經(jīng)啟用不發(fā)信號的異常模式。根據(jù)不同的實(shí)施例,可以通過對在處理器中的控制位進(jìn)行設(shè)置或解除設(shè)置來啟用或禁用所述模式。如果所述模式被禁用,則在步驟418,所述處理器根據(jù)正常的異常發(fā)信號方法對所述元素執(zhí)行一個(gè)或多個(gè)操作。也就是,當(dāng)發(fā)生異常時(shí),所述處理器發(fā)信號通知異常,并允許異常處理機(jī)對所有的輸入元素執(zhí)行一個(gè)或多個(gè)操作,而不管哪個(gè)元素或元素集導(dǎo)致所述異常。
[0029]如果在步驟404確定不發(fā)信號的模式被啟用,則在步驟406,所述處理器判斷元素或元素集是否將產(chǎn)生異常。如果所述元素或元素集將產(chǎn)生異常,則在步驟408,所述處理器產(chǎn)生異常的指示,并在步驟410向輸出寄存器輸出指示。根據(jù)實(shí)施例,所述指示可以標(biāo)識導(dǎo)致異常的元素和操作。如果確定所述元素或元素集將不會(huì)導(dǎo)致異常,則在步驟412執(zhí)行所述操作,并且在步驟414,將對一個(gè)或多個(gè)元素的操作的結(jié)果輸出到輸出寄存器。在步驟416,如果需要考慮更多的元素,所述方法返回到步驟406,否則在420結(jié)束。雖然圖4描述了對于每個(gè)元素或元素集,順序執(zhí)行步驟406-414,但是對于所述元素或元素集的每一個(gè)都可以同時(shí)執(zhí)行這些步驟。
[0030]圖5圖示了根據(jù)本發(fā)明的實(shí)施例標(biāo)識在輸出矢量中已經(jīng)發(fā)生的異常的方法500。在步驟502,從所述輸出寄存器或矢量中讀取輸出數(shù)據(jù)元素。然后可以判斷所述數(shù)據(jù)元素是否包含操作的結(jié)果或異常的指示。在步驟504,如果所述結(jié)果是異常的指示,則在步驟506,根據(jù)所述指示可以確定適當(dāng)?shù)漠惓P畔ⅰ@?,所述指示可以包含異常代碼、關(guān)于一個(gè)或多個(gè)元素的信息以及導(dǎo)致異常的操作。在步驟508,可以將涉及異常的相關(guān)信息定送到異常處理機(jī),從而它可以通過例如軟件模擬處理異常。在步驟510,所述處理判斷是否已經(jīng)讀完所有輸出數(shù)據(jù)。如果否,則所述方法500返回到步驟502,并對輸出寄存器中的下一個(gè)元素重復(fù)進(jìn)行。然而,如果在步驟510,所述方法500確定已經(jīng)讀完所有的輸出元素,則在步驟512所述處理結(jié)束。
[0031]可以理解,通過或結(jié)合啟用不同軟件例程、模塊、元素或指令的功能的硬件組件,可以實(shí)現(xiàn)不同的實(shí)施例或使其便于實(shí)現(xiàn)。下面參照圖6進(jìn)一步描述示例硬件組件,例如,包括執(zhí)行單元602、讀取單元604、浮點(diǎn)單元606、加載/存儲(chǔ)單元608、存儲(chǔ)器管理單元(MMU) 610、指令高速緩沖存儲(chǔ)器612、數(shù)據(jù)高速緩沖存儲(chǔ)器614、總線接口單元616、乘/除單元(MDU) 620、協(xié)處理器622、通用寄存器624、高速暫存630和核擴(kuò)展單元634的處理器核600。
[0032]雖然上面已經(jīng)描述了本發(fā)明的不同實(shí)施例,應(yīng)該理解,這些實(shí)施例是通過示例的方式提出而并非用于限制。對于相關(guān)計(jì)算機(jī)領(lǐng)域的技術(shù)人員來說清楚的是,在不背離本發(fā)明的精神和范圍的情況下,可以在形式和細(xì)節(jié)上進(jìn)行不同的變化。此外,應(yīng)該理解,此處提供的本發(fā)明的詳細(xì)描述,并非概述和摘要部分,旨在用于解釋權(quán)利要求。正如發(fā)明人所預(yù)期的那樣,所述概述和摘要部分可以闡述本發(fā)明的一個(gè)或多個(gè)但并非所有的示范性實(shí)施例。[0033]例如,除了利用硬件(例如,位于中央處理單元(“CPU”)、微處理器、微控制器、數(shù)字信號處理器、處理器核、片上系統(tǒng)(“S0C”)、或任何其他可編程的或電子設(shè)備的內(nèi)部或與其相耦合)實(shí)現(xiàn),也可以采用例如放置在被配置用于存儲(chǔ)軟件的計(jì)算機(jī)可用(例如可讀取)介質(zhì)中的軟件(例如,以諸如源、目標(biāo)或機(jī)器語言等任何形式放置的計(jì)算機(jī)可讀代碼、程序代碼、指令和/或數(shù)據(jù))來實(shí)現(xiàn)。這樣的軟件例如可以啟用功能、制造、建模、仿真、描述、和/或?qū)Υ颂幟枋龅脑O(shè)備和方法進(jìn)行的測試。例如,這可以通過使用普通的編程語言(例如,C、C++),GDSII數(shù)據(jù)庫,包括Verilog HDL、VHDL的硬件描述語言(HDL),SystemC寄存器傳輸級(RTL)等等,或者其他可用程序,數(shù)據(jù)庫,和/或電路(即示意)捕獲工具來完成。實(shí)施例可以放置在任何已知的非暫時(shí)性計(jì)算機(jī)可用介質(zhì)中,包括半導(dǎo)體盤、磁盤、光盤(例如,CD-ROM、DVD-ROM 等)。
[0034]可以理解,此處描述的設(shè)備和方法的實(shí)施例可以被包括在半導(dǎo)體知識產(chǎn)權(quán)核中,例如微處理器核(例如,用HDL體現(xiàn))并且在集成電路的生產(chǎn)中轉(zhuǎn)化為硬件。此外,此處描述的設(shè)備和方法可以體現(xiàn)為硬件和軟件的組合。因此,不應(yīng)采用任何上面描述的示范性實(shí)施例來限制本發(fā)明,而應(yīng)僅依照下列權(quán)利要求和它們的等價(jià)物來進(jìn)行界定。應(yīng)該理解,利用硬件和軟件組合的實(shí)施例可以通過或結(jié)合啟用各種軟件例程、模塊、元素或指令的功能的硬件組件來實(shí)現(xiàn)或便于其實(shí)現(xiàn),例如,上面參照圖1提及的組件。
[0035]圖6是根據(jù)本發(fā)明的一個(gè)實(shí)施例用于實(shí)現(xiàn)共享寄存器池的示范性處理器核600的示意圖。處理器核600是示范性處理器,旨在說明而并非用于限制。本領(lǐng)域的技術(shù)人員應(yīng)該認(rèn)識到,根據(jù)本發(fā)明的實(shí)施例,有許多采用ISA的處理器實(shí)現(xiàn)方式可以使用。
[0036]如圖6所示,處理器核600包括執(zhí)行單元602、讀取單元604、浮點(diǎn)單元606、加載/存儲(chǔ)單元608、存儲(chǔ)器管理單元(MMU) 610、指令高速緩沖存儲(chǔ)器612、數(shù)據(jù)高速緩沖存儲(chǔ)器614、總線接口單元616、乘/除單元(MDU) 620、協(xié)處理器622、通用寄存器624、高速暫存630和核擴(kuò)展單元634。雖然此處將處理器核600描述為包括幾個(gè)獨(dú)立的組件,但是這些組件中的許多組件是可選組件,并不會(huì)出現(xiàn)在本發(fā)明的每個(gè)實(shí)施例中,或者例如組件可以進(jìn)行組合,從而兩個(gè)組件的功能存在于單個(gè)組件中。也可以增加額外的組件。因此,圖6中顯示的獨(dú)立組件是解釋性的而非旨在限制本發(fā)明。
[0037]執(zhí)行單元602優(yōu)選地利用單周期算術(shù)邏輯單元操作(例如,邏輯的、移位、加、減等)實(shí)現(xiàn)加載-存儲(chǔ)(RISC)結(jié)構(gòu)。執(zhí)行單元602與讀取單元604、浮點(diǎn)單元606、加載/存儲(chǔ)單元608、乘-除單元620、協(xié)處理器622、通用寄存器624、和核擴(kuò)展單元634相連接。
[0038]讀取單元604負(fù)責(zé)向執(zhí)行單元602提供指令。在一個(gè)實(shí)施例中,讀取單元604包括指令高速緩沖存儲(chǔ)器612的控制邏輯、重新編碼壓縮格式指令的重新編碼器、動(dòng)態(tài)分支預(yù)測和從執(zhí)行單元602解耦合讀取單元604的操作的指令緩沖器。讀取單元604與執(zhí)行單元602、存儲(chǔ)器管理單元610、指令高速緩沖存儲(chǔ)器612和總線接口單元616相連接。
[0039]浮點(diǎn)單元606與執(zhí)行單元602相連接并對非整數(shù)數(shù)據(jù)進(jìn)行操作。浮點(diǎn)單元606包括浮點(diǎn)寄存器618。在一個(gè)實(shí)施例中,浮點(diǎn)寄存器618可以位于浮點(diǎn)單元606的外部。浮點(diǎn)寄存器618可以是用于浮點(diǎn)單元606執(zhí)行浮點(diǎn)操作的32位或64位寄存器。典型的浮點(diǎn)操作是算術(shù)操作,例如加法和乘法,也可以包括指數(shù)或三角計(jì)算。
[0040]加載/存儲(chǔ)單元608負(fù)責(zé)數(shù)據(jù)加載和存儲(chǔ),并且包括數(shù)據(jù)高速緩沖存儲(chǔ)器控制邏輯。加載/存儲(chǔ)單元608與數(shù)據(jù)高速緩沖存儲(chǔ)器614和高速暫存630和/或填充緩沖器(未顯示)相連接。加載/存儲(chǔ)單元608也與存儲(chǔ)器管理單元610和總線接口單元616相連接。
[0041]存儲(chǔ)器管理單元610將虛擬地址轉(zhuǎn)換為物理地址以用于存儲(chǔ)器訪問。在一個(gè)實(shí)施例中,存儲(chǔ)器管理單元610包括轉(zhuǎn)換后備緩沖器(TLB),并且可以包括單獨(dú)的指令TLB和單獨(dú)的數(shù)據(jù)TLB。存儲(chǔ)器管理單元610與讀取單元604和加載/存儲(chǔ)單元608相連接。
[0042]指令高速緩沖存儲(chǔ)器612是組織成多路組聯(lián)或直接相聯(lián)高速緩沖存儲(chǔ)器的片上存儲(chǔ)器陣列,例如,2路組聯(lián)高速緩沖存儲(chǔ)器、4路組聯(lián)高速緩沖存儲(chǔ)器、8路組聯(lián)高速緩沖存儲(chǔ)器等等。指令高速緩沖存儲(chǔ)器612優(yōu)選地進(jìn)行虛擬索引和物理標(biāo)記,從而允許虛擬-物理地址轉(zhuǎn)換與高速緩沖存儲(chǔ)器的訪問并行發(fā)生。在一個(gè)實(shí)施例中,所述標(biāo)記除了物理地址位還包括有效位和可選的奇偶位。指令高速緩沖存儲(chǔ)器612與讀取單元604相連接。
[0043]數(shù)據(jù)高速緩沖存儲(chǔ)器614也是片上存儲(chǔ)器陣列。數(shù)據(jù)高速緩沖存儲(chǔ)器614優(yōu)選地進(jìn)行虛擬索弓I和物理標(biāo)記。在一個(gè)實(shí)施例中,所述標(biāo)記除了物理地址位還包括有效位和可選的奇偶位。數(shù)據(jù)高速緩沖存儲(chǔ)器614與加載/存儲(chǔ)單元608相連接。
[0044]總線接口單元616為處理器核心600控制外部接口信號。在一個(gè)實(shí)施例中,總線接口單元616包括崩潰寫緩沖,用于合并連續(xù)寫入業(yè)務(wù)并從未被高速緩存的存儲(chǔ)中收集寫操作。
[0045]乘/除單元620為處理器核600執(zhí)行乘法和除法操作。在一個(gè)實(shí)施例中,乘/除單元620優(yōu)選地包括管線乘法器、累加寄存器(累加器)626、乘法和除法狀態(tài)機(jī),以及執(zhí)行例如乘法、乘加、和除法功能所需的所有控制邏輯。如圖6所示,乘/除單元620與執(zhí)行單元602相連接。累加器626用于存儲(chǔ)乘/除單元620執(zhí)行的算術(shù)結(jié)果。
[0046]協(xié)處理器622為處理器核600執(zhí)行各種開銷(overhead)的功能。在一個(gè)實(shí)施例中,協(xié)處理器622負(fù)責(zé)虛擬-物理地址轉(zhuǎn)換、執(zhí)行高速緩沖存儲(chǔ)器協(xié)議、異常處理、操作模式選擇、以及啟用/禁用中斷功能。協(xié)處理器622與執(zhí)行單元602相連接。協(xié)處理器622包括狀態(tài)寄存器628和普通存儲(chǔ)器638。狀態(tài)寄存器628通常用于保存協(xié)處理器622使用的變量。狀態(tài)寄存器628也可以包括通常為處理器核600保存狀態(tài)信息的寄存器。例如,狀態(tài)寄存器628可以包括狀況寄存器。普通存儲(chǔ)器638可以用于保存例如計(jì)算過程中產(chǎn)生的系數(shù)等臨時(shí)值。在一個(gè)實(shí)施例中,普通存儲(chǔ)器638是采取寄存器文件的形式。
[0047]通用寄存器624典型地是用于標(biāo)量整數(shù)操作和地址計(jì)算的32位或64位寄存器。在一個(gè)實(shí)施例中,通用寄存器624是執(zhí)行單元602的一部分。可選地,例如在中斷和/或異常處理的過程中,可以包括一個(gè)或多個(gè)額外的寄存器文件集,例如影子寄存器文件集,以使內(nèi)容交換開銷最小化。
[0048]高速暫存630是存儲(chǔ)或向加載/存儲(chǔ)單元608提供數(shù)據(jù)的存儲(chǔ)器。當(dāng)處理器核600運(yùn)行時(shí),可以編程的方式預(yù)先配置或配置高速暫存的一個(gè)或多個(gè)特定地址區(qū)域。地址區(qū)域可以是例如通過基址和區(qū)域大小指定的連續(xù)地址范圍。當(dāng)使用基址和區(qū)域大小時(shí),所述基址指定地址區(qū)域的起點(diǎn),并且例如將區(qū)域大小加到基址上來指定地址區(qū)域的終點(diǎn)。典型地,一旦為高速暫存指定地址區(qū)域,將從所述高速暫存檢索對應(yīng)于所述指定地址區(qū)域的所有數(shù)據(jù)。
[0049]用戶定義指令(UDI)單元634使得處理器核600能夠適合特定的應(yīng)用程序。UDI634允許用戶定義和增加它們自己的可以對數(shù)據(jù)進(jìn)行操作的指令,所述數(shù)據(jù)例如存儲(chǔ)在通用寄存器624中。在保持工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)所具有的性能時(shí),UDI634允許用戶增加新的性能。UDI634包括可以用于存儲(chǔ)用戶增加的指令和計(jì)算過程中產(chǎn)生的變量的UDI存儲(chǔ)器636。在一個(gè)實(shí)施例中,存儲(chǔ)器636是采取寄存器文件的形式。
[0050]此處描述的實(shí)施例涉及共享寄存器池。正如發(fā)明人所預(yù)期的那樣,所述概述和摘要部分可以提出本發(fā)明的一個(gè)或多個(gè)但并非所有的示范性實(shí)施例,因此并不期望以任何方式限制本發(fā)明和權(quán)利要求。
[0051]借助于闡明實(shí)現(xiàn)指定功能及其關(guān)系的功能構(gòu)造塊,上面已經(jīng)描述了這里的實(shí)施例。為便于描述,此處已經(jīng)任意地定義了這些功能構(gòu)造塊的邊界。只要能夠適當(dāng)?shù)貓?zhí)行所指定的功能及其關(guān)系,可以定義替換的邊界。
[0052]前面對特定實(shí)施例的描述充分地展現(xiàn)了本發(fā)明的全面本質(zhì),從而在無需過度實(shí)驗(yàn)、不背離本發(fā)明一般概念的情況下,其他人可以通過應(yīng)用本領(lǐng)域的技術(shù)知識,容易地對這些特定實(shí)施例進(jìn)行修改和/或?yàn)椴煌膽?yīng)用程序改編這些特定實(shí)施例。因此,基于此處提供的教導(dǎo)和指導(dǎo),旨在將這些改編和修改包含在所披露實(shí)施例的等價(jià)物的意圖和范圍之內(nèi)??梢岳斫?,此處的措辭或術(shù)語是用于描述而并非限制,從而應(yīng)由熟練技術(shù)人員根據(jù)教導(dǎo)和指導(dǎo)來解釋本說明書的術(shù)語或措辭。
【權(quán)利要求】
1.一種利用多數(shù)據(jù)處理單元處理器對多個(gè)元素執(zhí)行一個(gè)或多個(gè)操作的方法,包括: 接收一個(gè)或多個(gè)輸入矢量,其中所述一個(gè)或多個(gè)輸入矢量包含第一元素集和第二元素集; 確定對第一元素集執(zhí)行第一操作將導(dǎo)致異常; 向輸出矢量的第一元素寫入由第一操作導(dǎo)致的異常的指示; 對第二元素集執(zhí)行第二操作;并且 向所述輸出矢量的第二元素寫入第二操作的結(jié)果。
2.根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括確定在處理器中啟用不發(fā)信號的異常模式。
3.根據(jù)權(quán)利要求1所述的方法,其中所述一個(gè)或多個(gè)輸入矢量包含第三元素集。
4.根據(jù)權(quán)利要求3所述的方法,進(jìn)一步包括確定對第三元素集執(zhí)行第三操作將導(dǎo)致異常,并將所述異常的指示寫入輸出矢量的第三元素。
5.根據(jù)權(quán)利要求1所述的方法,其中所述第一操作和第二操作是相同的操作。
6.根據(jù)權(quán)利要求1所述的方法,其中所述多數(shù)據(jù)處理單元處理器是單輸入多數(shù)據(jù)(SIMD)處理器。
7.根據(jù)權(quán)利要求1所述的方法,其中所述多數(shù)據(jù)處理單元處理器是多輸入多數(shù)據(jù)(MIMD)處理器。
8.根據(jù)權(quán)利要求1所述的方法,其中所述指示發(fā)信號通知異常處理機(jī)處理所述異常。
9.根據(jù)權(quán)利要求1所述的方法,其中第一元素集和第二元素集中的每一個(gè)都包含單個(gè)元素。
10.根據(jù)權(quán)利要求1所述的方法,其中第一元素集和第二元素集中的每一個(gè)都包含多個(gè)元素。
11.一種多數(shù)據(jù)處理元素系統(tǒng),包括: 輸入寄存器,被配置用于存儲(chǔ)一個(gè)或多個(gè)輸入矢量,其中所述一個(gè)或多個(gè)輸入矢量包含第一元素集和第二元素集; 輸出寄存器,被配置用于存儲(chǔ)多個(gè)操作的結(jié)果;和 多數(shù)據(jù)處理單元處理器,被配置用于: 從輸入寄存器接收一個(gè)或多個(gè)輸入矢量, 確定對第一兀素集執(zhí)行第一操作將導(dǎo)致異常,并且向輸出寄存器的第一兀素輸出由第一操作導(dǎo)致的異常的指示,以及 對第二元素集執(zhí)行第二操作并且向輸出寄存器的第二元素輸出所述操作的結(jié)果。
12.根據(jù)權(quán)利要求11所述的系統(tǒng),其中所述處理器進(jìn)一步被配置為確定在所述處理器中啟用不發(fā)信號的異常模式。
13.根據(jù)權(quán)利要求11所述的系統(tǒng),其中所述一個(gè)或多個(gè)輸入矢量進(jìn)一步包含第三元素集。
14.根據(jù)權(quán)利要求13所述的系統(tǒng),其中所述處理器進(jìn)一步被配置為確定對第三元素集執(zhí)行第三操作將導(dǎo)致異常,并向輸出寄存器的第三元素輸出異常的指示。
15.根據(jù)權(quán)利要求11所述的系統(tǒng),其中所述第一操作和第二操作是相同的操作。
16.根據(jù)權(quán)利要求11所述的系統(tǒng),其中所述多數(shù)據(jù)處理單元處理器是單輸入多數(shù)據(jù)(SIMD)處理器。
17.根據(jù)權(quán)利要求11所述的系統(tǒng),其中所述多數(shù)據(jù)處理單元處理器是多輸入多數(shù)據(jù)(MIMD)處理器。
18.根據(jù)權(quán)利要求11所述的系統(tǒng),其中所述指示被配置為發(fā)信號通知異常處理機(jī)處理所述異常。
19.根據(jù)權(quán)利要求11所述的系統(tǒng),其中第一元素集和第二元素集中的每一個(gè)都包含單個(gè)元素。
20.根據(jù)權(quán)利要求11所述的系統(tǒng),其中第一元素集和第二元素集中的每一個(gè)都包含多個(gè)元素。
【文檔編號】G06F11/00GK104008021SQ201410102598
【公開日】2014年8月27日 申請日期:2014年2月21日 優(yōu)先權(quán)日:2013年2月22日
【發(fā)明者】I·蓋巴西亞, J·羅賓森 申請人:Mips技術(shù)公司