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

實(shí)現(xiàn)矢量存儲(chǔ)器操作的制作方法

文檔序號(hào):6564165閱讀:145來源:國知局
專利名稱:實(shí)現(xiàn)矢量存儲(chǔ)器操作的制作方法
技術(shù)領(lǐng)域
本發(fā)明的實(shí)施例涉及數(shù)據(jù)處理,并且更具體地涉及處理諸如矢量存儲(chǔ)器操作的矢量操作。
背景技術(shù)
諸如微處理器的某些處理器被配置為對(duì)不同類型的數(shù)據(jù)進(jìn)行操作。一些處理器包括對(duì)矢量數(shù)據(jù)操作的支持。這種矢量數(shù)據(jù)典型地具有比標(biāo)量操作數(shù)更寬的長(zhǎng)度。例如,矢量數(shù)據(jù)可由多個(gè)矢量元素構(gòu)成,每個(gè)矢量元素對(duì)應(yīng)于一個(gè)標(biāo)量操作數(shù)。不同的指令集體系結(jié)構(gòu)(ISA)包括對(duì)某些矢量操作的支持。在一些指令集中,存在這樣一些指令其目標(biāo)在于執(zhí)行仲裁步幅式(arbitrary-strided)和非步幅式矢量存儲(chǔ)器訪問。這些指令通常被稱為收集(加載或存儲(chǔ)器讀取)和分散(存儲(chǔ)或存儲(chǔ)器寫入)指令。在收集/分散指令中,用戶提供一組隨機(jī)地址或偏移。收集和分散指令是程序設(shè)計(jì)器和矢量編譯器的基本工具,用于產(chǎn)生處理一級(jí)或多級(jí)存儲(chǔ)器間接尋址的有效矢量代碼。
因此,大多數(shù)矢量指令集提供一種允許讀取或?qū)懭胍慌S機(jī)存儲(chǔ)器位置的存儲(chǔ)器訪問。矢量ISA中的典型的收集/分散指令呈如下形式收集[v1]->v2;以及分散v1->[v2]其中v1和v2是矢量寄存器,每個(gè)矢量寄存器都包括多個(gè)基址寄存器。在收集指令中,將包含在源寄存器v1中的數(shù)據(jù)用作一組存儲(chǔ)器地址。對(duì)于每個(gè)地址,能夠執(zhí)行該指令的處理器會(huì)提取位于存儲(chǔ)器中指定地址處的對(duì)應(yīng)數(shù)據(jù)并將該數(shù)據(jù)放置在目標(biāo)寄存器v2中的對(duì)應(yīng)位置處。
分散指令執(zhí)行相反的操作,其中源寄存器v1包含隨機(jī)數(shù)據(jù),而目標(biāo)寄存器v2包含一組存儲(chǔ)器地址。將v1中的每個(gè)數(shù)據(jù)元素都存儲(chǔ)在存儲(chǔ)器中由v2中的相應(yīng)地址所指示的位置。一些矢量指令集具有全局寄存器,將該全局寄存器添加到所述地址中以構(gòu)建最終的存儲(chǔ)器地址。
存在兩種在硬件中實(shí)現(xiàn)收集/分散指令的基本策略。在第一種策略中,硬件在收集/分散中按序產(chǎn)生每個(gè)地址,并按序分配(dispatch)存儲(chǔ)器請(qǐng)求(讀取或?qū)懭?。這種策略有些麻煩且效果低,并降低了設(shè)法在多個(gè)數(shù)據(jù)上同時(shí)執(zhí)行單個(gè)指令的矢量操作的效率。第二種策略設(shè)法執(zhí)行對(duì)最近的存儲(chǔ)器單元(例如,高速緩存)的多個(gè)同步訪問。
但是在執(zhí)行這些同時(shí)訪問的過程中,應(yīng)該避免數(shù)據(jù)元素和存儲(chǔ)器分級(jí)體系的部分之間的沖突。也就是,當(dāng)發(fā)出多個(gè)矢量元素至高速緩沖存儲(chǔ)器時(shí),高速緩沖存儲(chǔ)器的一部分在一個(gè)周期中只能接收單個(gè)數(shù)據(jù)元素。因此,采用不同的控制方案以避免這種沖突。但是這些解決機(jī)制相對(duì)而言效果不佳,并且對(duì)于特定數(shù)據(jù)或者存儲(chǔ)器單元并無優(yōu)化。因此需要改善矢量操作并且更具體地是矢量存儲(chǔ)器操作的實(shí)現(xiàn)。


圖1是根據(jù)本發(fā)明一個(gè)實(shí)施例的處理器的框圖。
圖2是根據(jù)本發(fā)明實(shí)施例的處理器的數(shù)據(jù)通路的一部分的框圖。
圖3是根據(jù)本發(fā)明另一個(gè)實(shí)施例的處理器的數(shù)據(jù)通路的一部分的框圖。
圖4是根據(jù)本發(fā)明一個(gè)實(shí)施例的片緩沖器的框圖。
圖5是根據(jù)本發(fā)明又一個(gè)實(shí)施例的處理器的數(shù)據(jù)通路的框圖。
圖6是根據(jù)本發(fā)明實(shí)施例的示例存儲(chǔ)器隊(duì)列。
圖7是根據(jù)本發(fā)明實(shí)施例的處理器的數(shù)據(jù)通路的另一個(gè)實(shí)施方式的框圖。
圖8是根據(jù)本發(fā)明一個(gè)實(shí)施例的地址生成器的框圖。
圖9是根據(jù)本發(fā)明一個(gè)實(shí)施例的方法的流程圖。
圖10是根據(jù)本發(fā)明實(shí)施例的系統(tǒng)的框圖。
具體實(shí)施例方式
利用例如存儲(chǔ)體式高速緩存(banked cache)的分段存儲(chǔ)器結(jié)構(gòu),這些實(shí)施例可用于實(shí)現(xiàn)仲裁步幅式和非步幅式矢量存儲(chǔ)器操作(vector memoryoperation)。這些操作對(duì)于優(yōu)化各種各樣的軟件可以是有用的,特別是密碼學(xué)、圖形學(xué)和媒體應(yīng)用。為這些存儲(chǔ)器操作提供高帶寬改善了任何矢量機(jī)器實(shí)現(xiàn)的性能。
地址生成單元中的邏輯或獨(dú)立的邏輯可用于檢測(cè)地址沖突,這些地址沖突例如映射至同一高速緩沖存儲(chǔ)器或存儲(chǔ)體的地址對(duì)或地址組,并因此不能被并行分配??刹捎貌煌臎_突檢測(cè)機(jī)制。例如,可使用直接多對(duì)多(all-to-all)地址比較或者內(nèi)容可尋址存儲(chǔ)器(CAM)檢測(cè)匹配。如果出現(xiàn)沖突,這些沖突的請(qǐng)求可被停止或緩沖直到訪問變?yōu)榭赡艿碾S后的周期。
在不同的實(shí)施例中,一種或多種方案可被實(shí)現(xiàn)以執(zhí)行具有高效率并避免沖突的矢量存儲(chǔ)器操作。一些實(shí)施方式通過經(jīng)指令接受相應(yīng)的存儲(chǔ)器操作(例如,分散或收集)不與在先的存儲(chǔ)器操作相沖突或者該操作未在分段寄存器堆或存儲(chǔ)器中引起沖突的指示可最小化沖突檢測(cè)邏輯。在其它的實(shí)施例中,最小的沖突檢測(cè)邏輯可用于確保無沖突的存儲(chǔ)器操作具有減少的開銷和能耗。
現(xiàn)在參照?qǐng)D1,示出根據(jù)本發(fā)明一個(gè)實(shí)施例的處理器的框圖。如圖1所示,處理器10可以是包括對(duì)矢量操作的支持的多核處理器。具體地,如圖1所示,處理器10包括由多個(gè)標(biāo)量核(scalar core)20a-20n(通常是標(biāo)量核20)構(gòu)成的標(biāo)量部分。此外,處理器10包括一個(gè)或多個(gè)矢量單元30a-30n(通常是矢量單元30)。盡管圖1中以高級(jí)別示出,應(yīng)當(dāng)理解每個(gè)標(biāo)量核20和矢量單元30都可包括處理器流水線(processor pipeline)的各種組件以執(zhí)行ISA的指令。盡管在圖1的實(shí)施例中示有這種實(shí)施方式,但提供對(duì)矢量指令的支持的其它方式也是可行的。例如,替代單獨(dú)的矢量單元,可將一個(gè)或多個(gè)標(biāo)量核的數(shù)據(jù)通路擴(kuò)展以處理矢量操作的更寬的寬度,或者可將用于處理擴(kuò)展寬度的操作數(shù)的從屬數(shù)據(jù)通路添加至標(biāo)量數(shù)據(jù)通路。此外,可包括一個(gè)或多個(gè)附加的執(zhí)行單元以支持這種矢量指令。
仍舊參照?qǐng)D1,標(biāo)量核20和矢量單元30通過互連接35連接至高速緩沖存儲(chǔ)器40。在不同的實(shí)施例中,互連接35可以是總線或其它互連,諸如交叉開關(guān)(crossbar)或與處理如本文所述的矢量數(shù)據(jù)的分布的邏輯結(jié)合的其它互連接。在不同的實(shí)施例中,至少矢量單元30的組件可被分段,使得可同時(shí)在不同矢量數(shù)據(jù)元素上執(zhí)行多個(gè)操作。為此,高速緩沖存儲(chǔ)器40可以是存儲(chǔ)體式高速緩存或者其它分段存儲(chǔ)器結(jié)構(gòu),該其它分段存儲(chǔ)器結(jié)構(gòu)包括多個(gè)可單獨(dú)尋址的部分,每個(gè)部分都能夠在單個(gè)周期中接收或發(fā)射數(shù)據(jù)。盡管在圖1中示有該高級(jí)視圖,根據(jù)本發(fā)明的其它實(shí)施例,在處理器中也可包括附加的結(jié)構(gòu)和組件。
現(xiàn)在參照?qǐng)D2,示出根據(jù)本發(fā)明一個(gè)實(shí)施例的處理器的數(shù)據(jù)通路的一部分的框圖。如圖2所示,處理器100包括寄存器堆110。寄存器堆110可包括對(duì)矢量寄存器的支持。這種寄存器可采用不同的形式。例如,矢量寄存器可以比處理器的例如256位或更多位的普通數(shù)據(jù)通路更寬,盡管本發(fā)明的范圍不限于此。在某些實(shí)施例中,每個(gè)矢量寄存器都可包括多個(gè)標(biāo)量元素。例如,在一個(gè)實(shí)施方式中,每個(gè)矢量寄存器都可以是擴(kuò)展長(zhǎng)度的寄存器,其包括對(duì)例如128個(gè)標(biāo)量值的存儲(chǔ)。當(dāng)然,其它的實(shí)施方式也是可行的。
為進(jìn)行矢量存儲(chǔ)器操作,寄存器堆110每個(gè)周期可發(fā)送多個(gè)地址(例如,N個(gè)地址)。具體地,如圖2所示,寄存器堆110可與多個(gè)地址生成單元(AGU)1201-N(通常是AGU120)連接。每個(gè)AGU120都適合于接收來自寄存器堆110的存儲(chǔ)器值并相應(yīng)地處理它。例如,AGU120可接受進(jìn)來的寄存器地址并將其轉(zhuǎn)換例如變成物理地址或執(zhí)行一些其它的地址計(jì)算。
仍舊參照?qǐng)D2,在AGU1201-120N中所產(chǎn)生的地址可通過例如交叉開關(guān)或其它連接網(wǎng)絡(luò)的互連網(wǎng)絡(luò)130連接至高速緩沖存儲(chǔ)器。更具體地,如圖2所示,地址可連接至多個(gè)高速緩沖存儲(chǔ)體1401-140N(通常是高速緩沖存儲(chǔ)體140)。即,可將高速緩沖存儲(chǔ)器分段為多個(gè)存儲(chǔ)體,其中在單個(gè)周期中,每個(gè)存儲(chǔ)體可被同時(shí)訪問。換言之,高速緩沖存儲(chǔ)器的每個(gè)分區(qū)都可單獨(dú)尋址并可因此同時(shí)接收輸入。此外如圖2中所示,高速緩沖存儲(chǔ)體1401-140N可通過互連網(wǎng)絡(luò)145連接回寄存器堆110。以這種方式,從高速緩沖存儲(chǔ)器獲得的數(shù)據(jù)可被提供至寄存器堆。
因此,為了進(jìn)行改善的存儲(chǔ)器操作,每個(gè)單獨(dú)的高速緩沖存儲(chǔ)體都可在單個(gè)周期中被訪問。但是,如果在單個(gè)周期中,單個(gè)存儲(chǔ)體的多個(gè)地址被提供至該存儲(chǔ)體,則出現(xiàn)沖突。因此可提供沖突檢測(cè)器和調(diào)度程序150(本文稱為“沖突檢測(cè)器150”)。沖突檢測(cè)器150可用于確定在AGU1201-N中產(chǎn)生的地址是否是無沖突的。如果不是,則沖突檢測(cè)器150可發(fā)送反饋信號(hào)至適當(dāng)?shù)腁GU以停止并等待隨后的周期來分配存儲(chǔ)器操作。下面描述處理這種沖突的其它方式。
因此圖2示出從寄存器堆110至高速緩沖存儲(chǔ)器140的N路數(shù)據(jù)通路,例如,第一可用的高速緩存級(jí)。盡管在圖2的實(shí)施方式中示為包括N個(gè)高速緩沖存儲(chǔ)體以及相應(yīng)的N個(gè)AGU,應(yīng)當(dāng)理解的是本發(fā)明的范圍不限于此。正如下面將要進(jìn)一步討論的,在一些實(shí)施方式中,可將寄存器堆劃分成多個(gè)不同的被稱為通道(lane)的段。例如,寄存器堆可包括與相應(yīng)的高速緩沖存儲(chǔ)器的存儲(chǔ)體數(shù)量相同的通道(例如,寄存器堆可包括L個(gè)通道,其中L=N),盡管本發(fā)明的范圍不限于此。盡管在圖2的實(shí)施方式中未示出,但是可提供用于提高存儲(chǔ)器操作效率的附加邏輯,例如,通過在單個(gè)周期中合并多個(gè)存儲(chǔ)器操作。
在不同的實(shí)施例中,正如下面將要進(jìn)一步描述的,沖突檢測(cè)器150可包括完全的沖突檢測(cè)邏輯以及流線型沖突檢測(cè)邏輯。
在許多實(shí)施方式中,對(duì)于每個(gè)通道,寄存器堆110可具有至少一個(gè)讀/寫端口,并且對(duì)于每個(gè)存儲(chǔ)體,高速緩沖存儲(chǔ)器140可具有至少一個(gè)讀/寫端口,并且在一些實(shí)施例中,可提供兩個(gè)讀/寫端口。寄存器堆110可以是簇式矢量寄存器堆,其中所有的簇都可獨(dú)立讀/寫,并且其中單個(gè)矢量寄存器的所有元素都是均勻分布的(一般以循環(huán)的方式)。采用這種配置,在單個(gè)周期中,L個(gè)寄存器單元可讀并且存儲(chǔ)體中的N個(gè)線路可寫,只要它們屬于不同的通道和存儲(chǔ)體。在一個(gè)實(shí)施例中,基于其在矢量中的位置,每個(gè)矢量元素都被物理映射到通道中,并且,基于該地址的位的子集,每個(gè)存儲(chǔ)器地址都被物理映射到存儲(chǔ)體中。用于例如分散或收集的矢量操作的地址可由用戶提供并從寄存器堆110中讀取。如上所述,這些地址可在AGU1201-N中被處理并提供至沖突檢測(cè)器150。在一些實(shí)施例中,在沖突檢測(cè)器150中可產(chǎn)生片。在無沖突的單個(gè)周期中,片可對(duì)應(yīng)于提供至例如高速緩存的存儲(chǔ)器結(jié)構(gòu)的多個(gè)存儲(chǔ)器地址。每個(gè)片都應(yīng)當(dāng)由B個(gè)存儲(chǔ)桶(bucket)組成,每個(gè)存儲(chǔ)桶都能夠存有一個(gè)地址加上有效位。片中的每個(gè)地址都應(yīng)當(dāng)來自寄存器堆110中的不同通道。滿足該條件的片在本文都可稱為“無通道沖突”(LCF)片。因此,在單個(gè)周期中,LCF片的全部地址都可讀。
沖突檢測(cè)器150可處理片并產(chǎn)生滿足下面兩個(gè)約束的新的片(1)將這些片保持為L(zhǎng)CF;以及(2)確保這些片是“無存儲(chǔ)體沖突”(BCF)。換言之,片的每個(gè)地址都被映射至不同的高速緩沖存儲(chǔ)體以及不同的寄存器堆通道。在多個(gè)實(shí)施方式中,沖突檢測(cè)器150可以以順序的方式處理片,同時(shí)尋求將迭代數(shù)量最小化的機(jī)會(huì)。為了這么做,沖突檢測(cè)器150可將來自不同輸入片的地址合并入同一個(gè)輸出片。在不同的實(shí)施方式中,提供給沖突檢測(cè)器150的地址可以是邏輯的也可以是物理的。
在某些實(shí)施方式中,轉(zhuǎn)換后備緩沖器(translation lookaside buffer)(TLB)可與地址生成單元連接以將邏輯地址轉(zhuǎn)變?yōu)橛糜谠L問存儲(chǔ)器分級(jí)體系的物理地址?,F(xiàn)在參照?qǐng)D3,示出根據(jù)本發(fā)明另一實(shí)施例的處理器的數(shù)據(jù)通路的一部分的框圖。如圖3所示,處理器200可包括TLB225。盡管示為單個(gè)TLB,應(yīng)當(dāng)理解的是,在某些實(shí)施方式中,可提供多個(gè)這種緩沖器,每個(gè)對(duì)應(yīng)的AGU(圖3中未示出)一個(gè)這種緩沖器,TLB225連接至該對(duì)應(yīng)的AGU以接收地址。如上所述,TLB225可將進(jìn)來的地址轉(zhuǎn)換為物理地址。這些物理地址可被提供給緩沖器260,該緩沖器在本文稱為片隊(duì)列。片隊(duì)列260可緩沖TLB轉(zhuǎn)換后的地址,這些地址可作為單獨(dú)的片由TLB225發(fā)送,每個(gè)單獨(dú)的片都包括多個(gè)存儲(chǔ)器地址。因此,這些片最初以到達(dá)的順序被緩沖在片隊(duì)列260中。
仍舊參照?qǐng)D3,再填充鎖存器270連接至片隊(duì)列260。盡管圖3中示出再填充鎖存器270與片隊(duì)列260分離,但在某些實(shí)施方式中,再填充鎖存器270可以是片隊(duì)列260的一部分。再填充鎖存器270可由存儲(chǔ)體選擇器250使用以從存儲(chǔ)的輸入片中形成無沖突片,該存儲(chǔ)體選擇器250可以是沖突解決和調(diào)度程序邏輯。由存儲(chǔ)體選擇器250這樣從再填充鎖存器270中提取的無沖突片可通過交叉開關(guān)230或其它互連網(wǎng)絡(luò)(如果存在)連接至高速緩沖存儲(chǔ)器240,該高速緩沖存儲(chǔ)器240可以是包括N個(gè)存儲(chǔ)體的存儲(chǔ)體式高速緩存。當(dāng)然,盡管在圖3的實(shí)施例中示有這種實(shí)施方式,可以理解的是,本發(fā)明的范圍不限于此,并且產(chǎn)生無沖突片的其它方式可以存在于其它實(shí)施例中。此外,盡管在本實(shí)施方式中描述為使用TLB,但是在其它實(shí)施例中,未轉(zhuǎn)換的地址也可以類似地被處理。
圖4示出根據(jù)一個(gè)實(shí)施例的片緩沖器和對(duì)應(yīng)的再填充鎖存器的細(xì)節(jié)。在圖4中采用標(biāo)記Aij來表示片緩沖器260中的特定的地址,其中i表示在片中的存儲(chǔ)桶位置(其中存儲(chǔ)桶對(duì)應(yīng)于單個(gè)地址,例如,存儲(chǔ)器的單個(gè)存儲(chǔ)體的地址),而j表示在隊(duì)列中的片位置。注意,在一些實(shí)施方式中,僅可存儲(chǔ)每個(gè)地址用于確定存儲(chǔ)體的位。除地址之外,每個(gè)存儲(chǔ)桶都可包括一個(gè)或多個(gè)諸如有效位(即V)的狀態(tài)指示符,其中有效位(當(dāng)復(fù)位時(shí))用于標(biāo)記空的存儲(chǔ)桶(即非有效地址或已經(jīng)處理的地址)。因此再填充鎖存器270可以是暫時(shí)的再填充鎖存器以合并入隊(duì)的片。再填充鎖存器270還可包括具有存儲(chǔ)桶地址和有效位的B個(gè)存儲(chǔ)桶。
在每個(gè)周期期間,片隊(duì)列260被掃描以尋找在第一階段中的有效位。在一個(gè)示例中,如果每個(gè)存儲(chǔ)桶的最早的(隊(duì)列順序)有效地址對(duì)應(yīng)的存儲(chǔ)桶位置為空,那么該有效地址被選擇并被復(fù)制到再填充鎖存器270中。對(duì)于第x個(gè)再填充鎖存器存儲(chǔ)桶Rx,只有在同一個(gè)存儲(chǔ)桶位置(即Kx)中的地址可用于(再)填充它。換言之,Rx可包含具有i=x的任意Kij??紤]到該排序,在再填充鎖存器270中產(chǎn)生的片保持LCF條件。
再參照?qǐng)D3,在周期的第二階段中,存儲(chǔ)體選擇器250讀取再填充鎖存器270并選擇存儲(chǔ)桶的子集,其中設(shè)有有效位并且地址存儲(chǔ)體是不同的。所選擇的地址的有效位被清零以防止它們被不止一次地使用。由于再填充鎖存器270包括LCF片,輸出片滿足LCF和BCF約束。在圖3中,所設(shè)的有效位示為實(shí)心,而復(fù)位的有效位示為空心。
因而存儲(chǔ)體選擇器250的選擇邏輯本質(zhì)上是順序的,因?yàn)橐坏┑刂繁贿x擇,沒有其它采用同一存儲(chǔ)體的地址能夠用于同一個(gè)片中。因此,該算法根據(jù)存儲(chǔ)桶位置進(jìn)行有序選擇。首先,選擇存儲(chǔ)桶0中的地址(除非其有效位關(guān)閉),并且將其存儲(chǔ)體標(biāo)記為使用,接著選擇存儲(chǔ)桶1中的地址(除非其有效位關(guān)閉或者其存儲(chǔ)體被標(biāo)記為已經(jīng)使用)。對(duì)再填充鎖存器270中的所有剩余存儲(chǔ)桶重復(fù)該過程。在一些實(shí)施例中,每個(gè)周期啟動(dòng)在再填充鎖存器270的不同存儲(chǔ)桶中的讀取過程可提高該算法的效率并因此增加在輸出片中的有效地址的數(shù)目。因此,在每個(gè)周期,初始存儲(chǔ)桶可被增大(具有回繞)而不考慮片緩沖器260的狀態(tài)。
注意,來自再填充鎖存器270的輸出片遵循LCF和BCF條件。但是,不能保證給定存儲(chǔ)體B的地址將位于任意特定的存儲(chǔ)桶中。因此,交叉開關(guān)230可用于經(jīng)路由選擇將每個(gè)地址發(fā)送至高速緩存240中對(duì)應(yīng)的存儲(chǔ)體。由于這些地址對(duì)于給定的片是BCF,高速緩存可并行地處理所有的片地址。在收集的情況下,由高速緩存240發(fā)回的數(shù)據(jù)可被寫入寄存器堆,并假設(shè)高速緩存系統(tǒng)不會(huì)將不同片的元素相混合,打破LCF特性,所有的數(shù)據(jù)都能夠在單個(gè)周期中被寫回。而且,交叉開關(guān)可用于經(jīng)路由選擇將每塊數(shù)據(jù)都發(fā)送至寄存器堆對(duì)應(yīng)的通道??紤]到LCF條件,用于分散的數(shù)據(jù)也可在單個(gè)周期中從寄存器堆中被讀取。
取決于系統(tǒng)的存儲(chǔ)器排序要求,來自不同指令的片可被一起處理(即混合在輸出片中)或者不被一起處理。同時(shí),如果對(duì)于操作而言(例如,對(duì)于分散而言)需要原子性,則在第一個(gè)輸出片被產(chǎn)生之前,所有的片都可存儲(chǔ)在片緩沖器260中以防止存儲(chǔ)器子系統(tǒng)經(jīng)歷部分寫(partial write)。增加的片緩沖器深度可有助于最大化平均吞吐量并最小化系統(tǒng)的等待時(shí)間。
在某些實(shí)施方式中,片可被優(yōu)化以減少用于存儲(chǔ)器操作的片的數(shù)量,同時(shí)保持無沖突操作。出于解釋的目的,假設(shè)具有如下表1所示的7個(gè)地址的收集操作表1

如表1所示,示出多個(gè)矢量元素,每個(gè)元素都具有不同的地址,每個(gè)地址都指定有高速緩沖存儲(chǔ)器的特定的存儲(chǔ)體。盡管本文是關(guān)于高速緩沖存儲(chǔ)器的存儲(chǔ)體來描述的,應(yīng)當(dāng)理解的是,實(shí)施例可結(jié)合諸如主存儲(chǔ)器或其它這種結(jié)構(gòu)的其它存儲(chǔ)器單元的劃分來使用。
片由允許同時(shí)處理的一組地址構(gòu)成。此外,每個(gè)地址都對(duì)應(yīng)于操作單元。當(dāng)片的此概念用在每個(gè)存儲(chǔ)體都包含整個(gè)高速緩存線的高速緩存體系結(jié)構(gòu)中時(shí),那么該片的每個(gè)單個(gè)的地址都是指不同的高速緩存線,并且在片中的地址的最大數(shù)量等于高速緩存中的存儲(chǔ)體的數(shù)量。注意,在單存儲(chǔ)體式高速緩存中,片可包括單個(gè)地址。
現(xiàn)在參照表2,示出從表1中所示的收集操作產(chǎn)生的片的示例實(shí)施方式。
表2

如表2中所示,每個(gè)片都包括多個(gè)具有不同地址的元素,這些不同地址對(duì)應(yīng)于不同存儲(chǔ)體中的位置,其訪問存儲(chǔ)體中的不同的高速緩存線。
當(dāng)然,對(duì)于示例收集操作,其它調(diào)度是可行的,例如,通過創(chuàng)建包含地址@0000,@1234,@2000,@3000的更密集地填裝的片。如果這種填裝完成,那么第一個(gè)片具有四個(gè)地址,而第三個(gè)片只有一個(gè)地址。其它調(diào)度啟發(fā)法可在不同的實(shí)施例中實(shí)施。
通過放寬一些涉及無沖突協(xié)議的條件以實(shí)現(xiàn)緊密片,由矢量存儲(chǔ)器操作產(chǎn)生的片的數(shù)目可得到減少。緊密片包含一組“幾乎”無存儲(chǔ)體沖突的地址。具體地,只要兩個(gè)或更多個(gè)沖突的地址訪問同一高速緩存線,可允許存儲(chǔ)體沖突。
采用這種實(shí)施例,表2中所示的片可被減少為如表3中所示的兩個(gè)壓縮片表3

如表3所示,第一個(gè)片可包括訪問同一存儲(chǔ)體的多個(gè)元素,因?yàn)檫@些元素訪問存儲(chǔ)體中的同一高速緩存線的數(shù)據(jù)。例如,元素1和5都訪問存儲(chǔ)體0的高速緩存線000,而元素4和6都訪問存儲(chǔ)體1的高速緩存線123。根據(jù)高速緩存的觀點(diǎn),這些緊密片可正如常規(guī)的片那樣被同時(shí)處理,因?yàn)閷母咚倬彺嬷凶x取的所有不同的線都將來自不同的存儲(chǔ)體。唯一的區(qū)別在于一些線將由片中多于一個(gè)的元素使用。
不同的硬件、軟件和/或固件可用于產(chǎn)生并使用壓縮片。作為一個(gè)例子,第一硬件電路可被包括以產(chǎn)生片,而第二硬件電路可用于解壓縮從存儲(chǔ)器獲得的片式數(shù)據(jù)?,F(xiàn)在參照?qǐng)D5,示出根據(jù)本發(fā)明另一個(gè)實(shí)施例的處理器的數(shù)據(jù)通路的框圖。如圖5所示,處理器300可包括寄存器堆310,該寄存器堆310可包括對(duì)矢量寄存器和矢量操作的支持。多個(gè)AGU3201-320N(通常是AGU320)連接至寄存器堆310。AGU320可用于產(chǎn)生地址,例如,產(chǎn)生對(duì)應(yīng)于矢量存儲(chǔ)器操作的地址。在圖5所示的實(shí)施方式中,從AGU320產(chǎn)生的地址可連接至多個(gè)轉(zhuǎn)換后備緩沖器3251-325N(通常是TLB325)。TLB325可用于將邏輯地址轉(zhuǎn)換為物理地址。
仍然參照?qǐng)D5,從TLB325產(chǎn)生的地址可被提供至片壓縮器/生成器330(本文稱為片生成器330)。如圖所示,片生成器330可包括多個(gè)緩沖器3321-332N(通常是緩沖器332)。這些緩沖器可用于存儲(chǔ)進(jìn)來的地址以改善操作。例如,在存在沖突的情況下,沖突的地址可存儲(chǔ)在緩沖器332中。以這種方式,可避免處理器流水線的停止或其它損傷。
片生成器330可實(shí)現(xiàn)例如上述的算法以產(chǎn)生緊密片。例如,可產(chǎn)生片,其中,訪問在存儲(chǔ)體的單個(gè)高速緩存線中的存儲(chǔ)器位置的矢量元素可被壓縮到單個(gè)片中,在保持無沖突操作的同時(shí)提高效率。
因此當(dāng)準(zhǔn)備執(zhí)行收集/分散時(shí),其元素的所有的基址都可從寄存器堆310中讀出并通過AGU320和TLB325驅(qū)動(dòng)。接著,該組地址-元素對(duì)被提供給片生成器330。然后,片生成器330可產(chǎn)生兩種信息,即一片要被提供至高速緩存/存儲(chǔ)器的無存儲(chǔ)體沖突的存儲(chǔ)器線路地址,以及描述收集/分散元素映射至該片的地址的數(shù)據(jù),因?yàn)樵趬嚎s片中一個(gè)以上的元素可映射至同一地址。
因此片生成器330可產(chǎn)生壓縮片335,其被提供給多個(gè)高速緩沖存儲(chǔ)體3401-340N(通常是高速緩存340)。基于壓縮片335中的信息,訪問高速緩存340,并且結(jié)果被提供給片解壓縮器350,該片解壓縮器還可包括交叉開關(guān)。
片解壓縮器350可接收來自高速緩沖存儲(chǔ)體3401-340N的數(shù)據(jù)結(jié)果并還接收來自片生成器330的映射信息?;趶钠善?30接收的信息,片解壓縮器350可獲得對(duì)應(yīng)于存儲(chǔ)器操作的存儲(chǔ)器位置(例如,在高速緩存線中)的正確的進(jìn)來的數(shù)據(jù),并將其提供至例如寄存器堆310以滿足例如收集操作。因此,在收集操作的情況下,解壓縮器350確定如何從高速緩存線中提取對(duì)應(yīng)于元素的精確的數(shù)據(jù)部分,這些高速緩存線基于來自片生成器330的數(shù)據(jù)被讀出。在分散操作的情況下,解壓縮器350可確定如何修改帶有數(shù)據(jù)元素的高速緩存線。因此在不同的實(shí)施例中,緊密收集/分散片可減小給定收集/分散操作所需的片的數(shù)目,以及從高速緩存讀取寫入的線的數(shù)目。
當(dāng)收集/分散用于訪問來自裝入少數(shù)高速緩存線的小矩陣的元素時(shí),這種減少可能特別顯著。這種矩陣通常存在于加密/解密算法中,這些算法通常訪問不同的小陣列的多個(gè)分散位置。這樣,在功率和定時(shí)兩方面中收集/分散指令的更有效執(zhí)行受到影響。
關(guān)于存儲(chǔ)器排序,不同的處理器類型具有不同的要求。例如,一些處理器是操作有序進(jìn)行的有序機(jī)器。相反,另一些處理器是無序機(jī)器,其中操作能夠被無序地執(zhí)行以通過在每個(gè)周期中執(zhí)行有用功而改善性能。但是即使在無序機(jī)器中,也可存在不同的存儲(chǔ)器排序要求。例如,在不同的機(jī)器中,關(guān)于在存儲(chǔ)器寫和讀操作之間的排序及諸如此類,可存在不同的要求。為了遵循在例如寫和讀的不同存儲(chǔ)器操作之間的排序,處理器可檢測(cè)存儲(chǔ)器讀是否與任何在先的存儲(chǔ)器寫相沖突,并可進(jìn)一步檢測(cè)存儲(chǔ)器寫是否與在先的存儲(chǔ)器讀/寫相沖突。假設(shè)收集/分散操作由隨機(jī)的多組地址組成,通常沖突計(jì)算是二次問題,并且因此該沖突分析在面積和功率方面會(huì)消耗巨大的投資。
因此,在一些實(shí)施例中,用戶級(jí)指令或操作碼可被提供以向處理器指示對(duì)應(yīng)于這些操作碼的操作與不與待處理的存儲(chǔ)器操作相沖突的地址相關(guān)。如本文所使用的,這些操作碼可稱為“無混疊(alias-free)”收集/分散。在一個(gè)實(shí)施例中,這些操作碼可如下無沖突收集[v1]->v2;以及無沖突分散v1->[v2]“無沖突收集”指令的語義可以類似于普通“收集”指令的語義,差別在于程序設(shè)計(jì)器(例如,向硬件)保證在索引矢量寄存器(例如v1)的地址中不存在依賴關(guān)系,并且保證硬件不需要檢查收集相對(duì)在先的存儲(chǔ)器寫的地址。換言之,用戶保證相對(duì)于在先指令的該收集的存儲(chǔ)器讀的無序執(zhí)行是合法的并且該硬件不必關(guān)于在先的存儲(chǔ)器操作優(yōu)化收集指令的執(zhí)行。
“無沖突分散”指令的語義類似于普通“分散”指令的語義,差別在于程序設(shè)計(jì)器告訴硬件它不需要檢查該分散相對(duì)在先的存儲(chǔ)器寫或在先的存儲(chǔ)器讀的地址。換言之,用戶保證相對(duì)于在先指令的該分散的存儲(chǔ)器寫的無序執(zhí)行是合法的,并且硬件不必關(guān)于在先的存儲(chǔ)器操作優(yōu)化分散指令的執(zhí)行。當(dāng)然,在不同的處理器中,相對(duì)于其存儲(chǔ)器排序規(guī)則,可存在對(duì)于存儲(chǔ)器操作的執(zhí)行的其它限制。
作為結(jié)果,無混疊收集/分散指令可避免沖突檢測(cè)邏輯,從而縮短等待時(shí)間并還通過避免沖突檢測(cè)邏輯的同步(clocking)節(jié)約能量和功率。此外,這種指令的使用可加速總體的執(zhí)行。
現(xiàn)在參照?qǐng)D6,示出根據(jù)本發(fā)明實(shí)施例的示例存儲(chǔ)器隊(duì)列。如圖6所示,處理器400可包括存儲(chǔ)器隊(duì)列410,該存儲(chǔ)器隊(duì)列可用于按程序順序存儲(chǔ)待處理的存儲(chǔ)器操作。作為一個(gè)例子,存儲(chǔ)器隊(duì)列410可適用于存儲(chǔ)矢量存儲(chǔ)器操作,盡管本發(fā)明的范圍不限于此。如圖6所示,存儲(chǔ)器隊(duì)列410可包括多個(gè)項(xiàng)目,每個(gè)項(xiàng)目都對(duì)應(yīng)于矢量存儲(chǔ)器操作。這些已編號(hào)的項(xiàng)目1-5的每一個(gè)都以到達(dá)的順序被示出,最早的指令被列舉為1(即,矢量加載操作)等等。
如圖6中進(jìn)一步所示,沖突檢測(cè)器和調(diào)度程序420(本文稱為沖突檢測(cè)器420)可連接至存儲(chǔ)器隊(duì)列410。作為一個(gè)示例,沖突檢測(cè)器420可以是獨(dú)立的存儲(chǔ)器排序邏輯。但是,在許多實(shí)施方式中,沖突檢測(cè)器420可進(jìn)一步包括如上所述處理寄存器堆的通道和存儲(chǔ)體之間的沖突的解決的邏輯。一般,沖突檢測(cè)器420可基于給定處理器的存儲(chǔ)器排序協(xié)議控制在存儲(chǔ)器隊(duì)列410中的存儲(chǔ)器操作的執(zhí)行。但是,關(guān)于包括無混疊存儲(chǔ)器操作的項(xiàng)目4和5,即在項(xiàng)目4中的無沖突收集操作和在項(xiàng)目5中的無沖突分散操作,沖突檢測(cè)器420可在更早的存儲(chǔ)器指令之前將這些操作排序。
具體地,可在項(xiàng)目1、2和3中的指令之前執(zhí)行在項(xiàng)目4中的無沖突收集指令,如果沖突檢測(cè)器420這樣選擇的話。可在項(xiàng)目3和4中的指令之前執(zhí)行項(xiàng)目5處的無沖突分散指令,如果沖突檢測(cè)器420這樣選擇的話。無沖突分散指令是否可在項(xiàng)目2中的指令之前被執(zhí)行可取決于該體系結(jié)構(gòu)的其它存儲(chǔ)器排序規(guī)則。此外,該例子假設(shè)寫操作在讀操作之前進(jìn)行,盡管其它實(shí)施方式也是可行的。因此,沖突檢測(cè)器420可省略這些收集和分散指令的存儲(chǔ)器地址檢查機(jī)制。
在仍有的其它實(shí)施例中,附加的用戶級(jí)操作碼可用于指示在相應(yīng)的存儲(chǔ)器操作中列舉的地址是無沖突的(例如無通道沖突和無存儲(chǔ)體沖突),并且這些操作碼可被稱為“無沖突”收集/分散操作。換言之,采用這些操作碼的程序設(shè)計(jì)器保證在索引矢量寄存器(上面的收集示例的v1,以及上面的分散示例的v2)中所含的地址是無沖突的。即,在索引矢量中,每組M<=N的地址保證映射至M個(gè)不同的存儲(chǔ)體,其中N是由高速緩存或存儲(chǔ)器支持的存儲(chǔ)器或高速緩沖存儲(chǔ)體的數(shù)目。
實(shí)施這些程序設(shè)計(jì)器保證的操作碼(例如,無混疊或無沖突操作碼)的不同方式可被接納。例如,在一些實(shí)施方式中,由程序設(shè)計(jì)器提供的保證可被本文所描述的用于確定是否存在沖突或者是否可避免存儲(chǔ)器排序邏輯的不同的機(jī)制和硬件所接受,從而減小計(jì)算復(fù)雜性以及功率消耗。但是,在其它實(shí)施方式中,可提供有限的硬件支持以使得處理器能夠檢驗(yàn)這些保證是準(zhǔn)確的。以這種方式,可避免由不合適的程序設(shè)計(jì)器保證產(chǎn)生的不準(zhǔn)確的操作。
在一個(gè)實(shí)施例中,邏輯可被包括在例如沖突檢測(cè)器中以檢查地址的存儲(chǔ)體索引位。例如,在一個(gè)實(shí)施方式中,地址<i>可包括log2(N)個(gè)地址存儲(chǔ)體位??蛇M(jìn)行測(cè)試以確定存儲(chǔ)體地址位是否等于“i模(mod)N”。如果這樣,索引矢量寄存器中的地址是循環(huán)地?zé)o存儲(chǔ)體沖突。在一個(gè)實(shí)施例中,k位比較器可用于實(shí)現(xiàn)該測(cè)試,其中k=ceil(log2(N)),盡管其它變形也是可行的。如果索引矢量寄存器中的地址無法進(jìn)行存儲(chǔ)體位測(cè)試,可產(chǎn)生中斷(trap)以將控制傳給系統(tǒng)軟件來采取進(jìn)一步行動(dòng)。
在另一個(gè)變形中,用戶級(jí)操作碼可保證索引矢量寄存器中的每組N個(gè)連續(xù)地址都映射至N個(gè)不同存儲(chǔ)體。但是,地址的順序不必與存儲(chǔ)體順序完全匹配。在這種情況下,硬件可檢查在同一組中不存在對(duì)同一存儲(chǔ)體的兩個(gè)訪問。在一些實(shí)施例中,N個(gè)解碼器,或者N個(gè)N輸入的OR設(shè)備和最終的N輸入的AND設(shè)備可用于執(zhí)行該檢查。
在另一個(gè)實(shí)施例中,通過將存儲(chǔ)體位插入索引寄存器中的地址的中間,硬件可證實(shí)無存儲(chǔ)體沖突的特性。例如上部地址位可被移位或者,可替代地,現(xiàn)有存儲(chǔ)體位可被替換。為了實(shí)現(xiàn)該測(cè)試,可提供位替代設(shè)備和移位器。
結(jié)果,無沖突收集/分散指令可避免沖突檢測(cè)邏輯,從而減少它們的等待時(shí)間并節(jié)約功率或者通過最小的沖突檢測(cè)邏輯運(yùn)行。
為了改善包括步幅式操作的其它矢量存儲(chǔ)器操作的性能,地址生成器每個(gè)周期可產(chǎn)生與存儲(chǔ)器分級(jí)體系的存儲(chǔ)體的最大數(shù)量一樣多的地址。為了這么做,地址生成器依賴于包括在矢量存儲(chǔ)器加載或存儲(chǔ)指令中的信息。具體地,矢量存儲(chǔ)器加載/存儲(chǔ)可定義一組具有四個(gè)不同參數(shù)的存儲(chǔ)器地址有效地址(Effa),該有效地址是第一元素的地址;矢量長(zhǎng)度,該矢量長(zhǎng)度是地址的數(shù)目;矢量步幅,該矢量步幅是矢量的兩個(gè)連續(xù)地址之間的存儲(chǔ)器的距離;以及數(shù)據(jù)大小,該數(shù)據(jù)大小是每個(gè)單獨(dú)訪問的大小?;诮邮盏降牡刂沸畔⒌呐帕锌僧a(chǎn)生由該指令定義的存儲(chǔ)器地址,以使得在每個(gè)周期中地址不會(huì)訪問同一個(gè)存儲(chǔ)體(即是BCF);涉及那些來自/去向矢量寄存器堆的地址的數(shù)據(jù)不會(huì)讀取/寫入同一個(gè)矢量寄存器堆通道(即,是LCF);并且順序的地址訪問順序的存儲(chǔ)體(即,第一地址訪問存儲(chǔ)體0,第二地址訪問存儲(chǔ)體1,依此類推)。
基于由矢量存儲(chǔ)器指令給出的信息,可產(chǎn)生地址排列。采用這種排列,在每個(gè)周期中,可產(chǎn)生一組地址,這些地址在任何存儲(chǔ)體中都不沖突并且轉(zhuǎn)到按順序排序的存儲(chǔ)體,而在同一時(shí)刻每個(gè)周期從寄存器堆簇讀取/寫入寄存器堆簇的數(shù)據(jù)不沖突。
現(xiàn)在參照?qǐng)D7,示出根據(jù)本發(fā)明實(shí)施例的處理器的數(shù)據(jù)通路的另一個(gè)實(shí)施方式的框圖。如圖7所示,處理器500包括地址生成器520。如上所述,地址生成器520可接收包括有關(guān)有效地址、矢量長(zhǎng)度、矢量步幅以及數(shù)據(jù)大小的信息的矢量存儲(chǔ)器指令(例如,矢量存儲(chǔ)器加載和/或存儲(chǔ))。當(dāng)然,在不同的實(shí)施方式中,不同的信息可提供有矢量存儲(chǔ)器指令。基于該信息,地址生成器520可產(chǎn)生地址以實(shí)現(xiàn)符合BCF和LCF的存儲(chǔ)器指令。以這種方式,在每個(gè)周期中,存儲(chǔ)器操作可訪問不同的存儲(chǔ)體5300-5303(通常是存儲(chǔ)體530)。此外,在存儲(chǔ)體530中訪問的數(shù)據(jù)可通過交叉開關(guān)540提供至寄存器堆的不同通道。具體地,如圖7中所示,寄存器堆可由多個(gè)寄存器堆通道5100-5103(通常是寄存器通道510)構(gòu)成。盡管在圖7的實(shí)施例中示為包括四個(gè)存儲(chǔ)體和四個(gè)寄存器通道,應(yīng)當(dāng)理解的是,本發(fā)明的范圍不限于此,并且在其它實(shí)施例中可提供附加的分段。
地址生成器520的不同的實(shí)施方式可用于提供既是BCF又是LCF的這些地址。此外,提供至存儲(chǔ)體530的地址可以以順序的方式被提供。在一個(gè)實(shí)施例中,地址生成器520可包括公共矢量存儲(chǔ)器指令處理單元560和多個(gè)獨(dú)立的地址生成器570?,F(xiàn)在參照?qǐng)D8,示出根據(jù)本發(fā)明一個(gè)實(shí)施例的地址生成器的框圖。如圖8所示,地址生成器520包括公共處理單元560和多個(gè)獨(dú)立的地址生成器570。在不同的實(shí)施例中,對(duì)于每個(gè)存儲(chǔ)體可存在單個(gè)獨(dú)立的地址生成器。
如圖8所示,地址生成器520可包括公共處理單元560(本文還稱為Aunit)。此外,地址生成器520包括多個(gè)獨(dú)立的地址生成器5701-570N(通常是獨(dú)立的地址生成器570)。盡管在圖8的實(shí)施例中示為只包括兩個(gè)這種獨(dú)立的地址生成器,在不同的實(shí)施例中可提供附加的獨(dú)立的地址生成器。
公共處理單元560可接收矢量存儲(chǔ)器指令參數(shù)并廣播控制信息至獨(dú)立的地址生成器570。在其它實(shí)施例中,公共處理單元560可被復(fù)制并集成在獨(dú)立的地址生成器中。
每個(gè)獨(dú)立的地址生成器570都可為存儲(chǔ)器分級(jí)體系(不考慮組成其的物理存儲(chǔ)體的數(shù)目)的一個(gè)邏輯存儲(chǔ)體產(chǎn)生地址。在每個(gè)周期中,每個(gè)獨(dú)立的地址生成器570可輸出地址至由其控制的存儲(chǔ)體。所有的地址生成器570都可被初始化并操作以使得在每個(gè)周期中,沒有存儲(chǔ)體被訪問兩次(因?yàn)椴煌牡刂飞善髫?fù)責(zé)不同的存儲(chǔ)體),而且沒有寄存器簇被讀取/寫入兩次。如圖8所示,每個(gè)地址單元都包括三個(gè)主塊,即排序計(jì)算器(Imj)575(通常);地址計(jì)算器(AM)585(通常);和控制單元(即,通道控制單元)580(通常)。
無論何時(shí)新的矢量存儲(chǔ)器指令到達(dá)公共處理單元560,矢量步幅和數(shù)據(jù)大小可用于產(chǎn)生并廣播三個(gè)不同的參數(shù)至每個(gè)獨(dú)立的地址生成器570。具體地,公共處理單元560產(chǎn)生因式分解步幅(factorized stride)(vs’)、使得矢量步幅變?yōu)関s=vs’xz的步幅因數(shù)(z,其是2的冪)、以及由諸如只讀存儲(chǔ)器(ROM)的表所影響的德爾塔(delta)(Δ)因數(shù)。該Δ因數(shù)描述順序元素(考慮到矢量的自然排序)之間的距離,這些順序元素在位于同一存儲(chǔ)體內(nèi)的兩個(gè)地址和連續(xù)的線位置(即,對(duì)準(zhǔn))之間,或者在順序存儲(chǔ)體中,這取決于存儲(chǔ)器交織。
當(dāng)獨(dú)立的地址生成器570接收來自公共處理單元560的信息時(shí),控制單元580計(jì)算其負(fù)責(zé)產(chǎn)生的地址的數(shù)目。此外,控制單元580初始化要產(chǎn)生的到第一存儲(chǔ)體的第一地址和在該存儲(chǔ)體內(nèi)部的給定位置。該過程是公共組件信息和單獨(dú)的地址生成器的索引的函數(shù)。該初始化準(zhǔn)許無簇沖突地址的產(chǎn)生。
在一個(gè)實(shí)施例中,存儲(chǔ)體內(nèi)部的初始位置可計(jì)算如下Pos=(addr_generator_index/(#addr_generators/(words_per bank/z)))*z+effa%z[公式1]其中addr_generator_index是單獨(dú)的地址生成器的索引,#addr_generators是生成器的總數(shù),以及words_per_bank是被讀取/寫入每個(gè)存儲(chǔ)體的字?jǐn)?shù)。
在每個(gè)周期,每個(gè)獨(dú)立的地址生成器570都可執(zhí)行下面的操作序列。首先,元素排序可被確定為Pos、Δ、#banks和z的函數(shù)。其次,可產(chǎn)生等于元素排序*矢量步幅+effa的地址(addr)。之后控制單元570可確定這樣產(chǎn)生的地址是否有效。
此外,獨(dú)立的地址生成器570可產(chǎn)生更新的位置,該位置對(duì)應(yīng)于Pos=Pos+z(mod(#bank x#words_per_bank/#address generators))[公式2]
其中#bank是存儲(chǔ)體的數(shù)目。
結(jié)果,每個(gè)地址生成器570在每個(gè)周期都可以輸出下面的信息用于訪問相關(guān)聯(lián)存儲(chǔ)體的地址(addr);指示該地址是否有效的有效位;以及標(biāo)識(shí)在矢量?jī)?nèi)部的元素的排序的索引(其可用于索引該寄存器堆)。
因此,采用例如根據(jù)圖7和8的上述實(shí)施例,可避免經(jīng)路由選擇將地址發(fā)送至適當(dāng)?shù)拇鎯?chǔ)體的交叉開關(guān)。此外,可避免使用附加的沖突檢測(cè)邏輯。因此,矢量地址生成器520可同時(shí)準(zhǔn)許無存儲(chǔ)體沖突的訪問和無寄存器堆簇沖突的地址。此外,地址生成器570可以以獨(dú)立方式工作,允許分布的實(shí)施方式。因此,仲裁步幅式和非步幅式矢量存儲(chǔ)器操作可得到實(shí)現(xiàn)。由于這些輸出片是BCF,已經(jīng)存在的存儲(chǔ)體式高速緩存設(shè)計(jì)可用于支持矢量存儲(chǔ)器操作。
現(xiàn)在參照?qǐng)D9,示出根據(jù)本發(fā)明一個(gè)實(shí)施例的方法的流程圖。如圖9中所示,方法600可用于執(zhí)行矢量存儲(chǔ)器操作。方法600可由接收矢量存儲(chǔ)器操作(塊610)開始。例如,這種操作可從處理器的指令高速緩存中接收,其中該指令被解碼為一個(gè)或多個(gè)微指令以執(zhí)行預(yù)期操作。
然后,可以確定該操作是否是仲裁或非步幅式操作(菱形615)。換言之,可以確定該操作是針對(duì)分散/收集或者其它這種操作,其中矢量元素處于仲裁位置,或者相反地該操作是例如矢量加載或存儲(chǔ),其中矢量元素相互間處于某一預(yù)定步幅位置或者其它設(shè)置值。如果確定該操作是步幅式操作,那么控制可傳遞到塊620。在塊620處,基于用指令接收的信息,可產(chǎn)生無沖突的地址(塊620)。具體地,這些地址可以基于所接收到的信息的排列而產(chǎn)生,例如上面根據(jù)圖7和8所述的。計(jì)算這些地址之后,控制可傳遞到塊675,在該塊675處執(zhí)行操作。
如果相反地,在菱形615處確定該操作是例如分散或收集,控制傳遞至菱形630。在該菱形630處,可以確定該操作是否指示為無混疊或者順序無關(guān)(菱形630)。如果是,控制可傳遞至塊635。在塊635處,諸如本文所述的不同的沖突檢測(cè)分析可被完全繞過或者至少最小化(塊635)。換言之,可產(chǎn)生用于存儲(chǔ)器操作的地址而不考慮或者有限地考慮這種沖突檢測(cè)邏輯。因此控制傳遞至塊640,如下所述。
仍舊參照?qǐng)D9,如果相反地,在菱形630處確定操作不示為無混疊或者順序無關(guān)操作,控制傳遞至塊640。在塊640處,地址可被產(chǎn)生并載入片緩沖器(塊640)。接著控制傳遞至菱形642,在該菱形處確定操作是否無沖突。如果是,控制傳遞至塊675,如上所述。如果操作不是無沖突的,下一步可確定片緩沖器中的一個(gè)或多個(gè)地址是否訪問同一例如高速緩存線的存儲(chǔ)器線路(菱形645)。如果是這樣,可產(chǎn)生一個(gè)或多個(gè)壓縮的無沖突片(塊650)。因此,這些片可被發(fā)送至相應(yīng)的存儲(chǔ)器以執(zhí)行操作(塊675)。
如果相反地,在菱形645處確定地址不訪問同一存儲(chǔ)器線路,那么控制可傳遞至塊660。在塊660處,可產(chǎn)生無沖突片(塊660)。例如,可根據(jù)本文所述的不同實(shí)施例產(chǎn)生一個(gè)或多個(gè)片。最后,在產(chǎn)生這種無沖突片之后,它們可被提供給相應(yīng)的存儲(chǔ)器以執(zhí)行操作(塊675)。盡管以圖9中的實(shí)施例中的該特定實(shí)施方式進(jìn)行了描述,但應(yīng)當(dāng)理解的是本發(fā)明的范圍不限于此,并且執(zhí)行矢量操作的其它方法可被執(zhí)行。
這些實(shí)施例可以在許多不同的系統(tǒng)類型中實(shí)現(xiàn)?,F(xiàn)在參照?qǐng)D10,示出根據(jù)本發(fā)明實(shí)施例的系統(tǒng)的框圖。如圖10所示,點(diǎn)對(duì)點(diǎn)互連系統(tǒng)包括通過點(diǎn)對(duì)點(diǎn)互連750連接的第一處理器770和第二處理器780。如圖10所示,處理器770和780的每一個(gè)都可以是包括第一和第二處理器核(即,處理器核774a和774b以及處理器核784a和784b)的多核處理器。第一處理器770還包括存儲(chǔ)控制器集線器(MCH)772和點(diǎn)對(duì)點(diǎn)(P-P)接口776和778。類似地,第二處理器780包括MCH782和P-P接口786和788。如圖10所示,MCH的772和782將處理器連接至各自的存儲(chǔ)器,即存儲(chǔ)器732和存儲(chǔ)器734,其可以是本地連接至各自的處理器的主存儲(chǔ)器的部分。
第一處理器770和第二處理器780可分別通過P-P接口752和754連接至芯片組790。如圖10所示,芯片組790包括P-P接口794和798。此外,芯片組790包括將芯片組790與高性能圖形引擎738相連的接口792。在一個(gè)實(shí)施例中,高級(jí)圖形端口(AGP)總線739可用于將圖形引擎738連接至芯片組790。AGP總線739可符合由Intel公司(Santa Clara,California)于1998年5月7日出版的Accelerated Graphics Port Interface Specification,Revision 2.0。可替代地,點(diǎn)對(duì)點(diǎn)互連739可連接這些組件。
然后,芯片組790可通過接口796連接至第一總線716。在一個(gè)實(shí)施例中,第一總線716可以是外設(shè)部件互連(PCI)總線,如由日期為1995年6月的PCILocal Bus Specification,Production Version,Revision 2.1所定義的PCI總線,或者第一總線716可以是諸如PCI Express總線的總線或另一種第三代輸入/輸出(I/O)互連總線,盡管本發(fā)明的范圍不限于此。
如圖10所示,不同的I/O設(shè)備714可與將第一總線716連接至第二總線720的總線橋718一起連接至第一總線716。在一個(gè)實(shí)施例中,第二總線720可以是低管腳數(shù)(LPC)總線。在一個(gè)實(shí)施例中,不同的設(shè)備可連接至第二總線720,這些設(shè)備包括例如鍵盤/鼠標(biāo)722、通信設(shè)備726和可包括代碼730的數(shù)據(jù)存儲(chǔ)單元728。此外,音頻I/O724可連接至第二總線720。
這些實(shí)施例可以以代碼方式被實(shí)施并可以存儲(chǔ)在其上存儲(chǔ)有指令的存儲(chǔ)介質(zhì)上,其可用于為系統(tǒng)編程以執(zhí)行這些指令。該存儲(chǔ)介質(zhì)可包括,但不限于,任何類型的盤,該盤包括軟盤、光盤、光盤只讀存儲(chǔ)器(CD-ROM)、可重寫光盤(CR-RW)和磁光盤、例如只讀存儲(chǔ)器(ROM)、例如動(dòng)態(tài)隨機(jī)訪問存儲(chǔ)器(DRAM)、靜態(tài)隨機(jī)訪問存儲(chǔ)器(SRAM)的隨機(jī)訪問存儲(chǔ)器(RAM)、可擦寫可編程只讀存儲(chǔ)器(EPROM)、閃存、電可擦寫可編程只讀存儲(chǔ)器(EEPROM)、磁或光卡的半導(dǎo)體設(shè)備或者適合于存儲(chǔ)電子指令的任何其它類型的介質(zhì)。
盡管已經(jīng)根據(jù)有限數(shù)量的實(shí)施例描述了本發(fā)明,但是本領(lǐng)域技術(shù)人員可以理解對(duì)其的多種修改和變化。其意圖在于,附加的權(quán)利要求書覆蓋落入本發(fā)明的真正的精神和范圍之內(nèi)的所有這種修改和變化。
權(quán)利要求
1.一種系統(tǒng),包括地址生成器,所述地址生成器接收對(duì)應(yīng)于矢量存儲(chǔ)器指令的信息,并從所述矢量存儲(chǔ)器指令中產(chǎn)生多個(gè)地址,其中所述地址生成器將所述信息排列為所述多個(gè)地址,其中所述多個(gè)地址提供對(duì)存儲(chǔ)器的多個(gè)分區(qū)的第一無沖突訪問和對(duì)寄存器堆的多個(gè)簇的第二無沖突訪問;以及連接至所述地址生成器的動(dòng)態(tài)隨機(jī)訪問存儲(chǔ)器(DRAM)。
2.根據(jù)權(quán)利要求1的系統(tǒng),其中所述地址生成器包括全局單元和多個(gè)獨(dú)立的地址生成器。
3.根據(jù)權(quán)利要求1的系統(tǒng),其中所述多個(gè)地址被無交叉地連接至所述存儲(chǔ)器。
4.根據(jù)權(quán)利要求2的系統(tǒng),其中所述多個(gè)獨(dú)立的地址生成器接收來自所述全局單元的排列后的信息,并從中產(chǎn)生所述多個(gè)地址。
5.根據(jù)權(quán)利要求4的系統(tǒng),其中所述地址生成器在片中產(chǎn)生所述多個(gè)地址,所述多個(gè)地址具有順序地訪問所述存儲(chǔ)器的多個(gè)分區(qū)的順序。
6.根據(jù)權(quán)利要求2的系統(tǒng),其中所述全局單元基于步幅信息產(chǎn)生因式分解步幅。
7.一種裝置,包括存儲(chǔ)矢量數(shù)據(jù)的寄存器堆;連接至所述寄存器堆以產(chǎn)生用于矢量存儲(chǔ)器操作的地址的地址生成器;連接至所述地址生成器以在多個(gè)輸入片中存儲(chǔ)所述地址的緩沖器;以及控制器,所述控制器從在所述緩沖器中的多個(gè)輸入片中的至少一個(gè)中產(chǎn)生輸出片,所述輸出片包括多個(gè)地址,每個(gè)所述地址都對(duì)應(yīng)于存儲(chǔ)器的單獨(dú)可尋址部分。
8.根據(jù)權(quán)利要求7的裝置,其中所述緩沖器包括存儲(chǔ)所述輸出片的多個(gè)地址的鎖存器。
9.根據(jù)權(quán)利要求7的裝置,其中所述多個(gè)輸入片的每個(gè)都包括多個(gè)段,每個(gè)所述段都具有所述地址中的一個(gè)和狀態(tài)指示符,其中所述多個(gè)段的每個(gè)都對(duì)應(yīng)于所述存儲(chǔ)器的單獨(dú)可尋址部分中的一個(gè)。
10.根據(jù)權(quán)利要求9的裝置,其中所述控制器將地址插入所述鎖存器,使得在所述多個(gè)輸入片的多個(gè)段的第一段中的最早的地址被存儲(chǔ)在所述鎖存器的第一部分中,并且在所述多個(gè)輸入片的多個(gè)段的第二段中的最早的地址被存儲(chǔ)在所述鎖存器的第二部分中。
11.根據(jù)權(quán)利要求8的裝置,其中所述控制器按順序讀取所述鎖存器,所述順序按周期改變。
12.根據(jù)權(quán)利要求8的裝置,其中所述鎖存器中的有效地址在單個(gè)周期中被發(fā)送至所述存儲(chǔ)器。
13.根據(jù)權(quán)利要求12的裝置,還包括連接至所述控制器以經(jīng)路由選擇將所述有效地址發(fā)送給所述存儲(chǔ)器的互連網(wǎng)絡(luò)。
14.根據(jù)權(quán)利要求7的裝置,其中所述控制器將所述多個(gè)輸入片的至少兩個(gè)輸入片的地址合并入所述輸出片中。
15.根據(jù)權(quán)利要求7的裝置,其中如果多個(gè)對(duì)應(yīng)于所述存儲(chǔ)器的單獨(dú)可尋址部分的地址對(duì)應(yīng)于在所述存儲(chǔ)器的單獨(dú)可尋址部分中的單個(gè)存儲(chǔ)器線路,則所述控制器產(chǎn)生具有所述多個(gè)地址的輸出片。
16.根據(jù)權(quán)利要求7的裝置,還包括連接至所述存儲(chǔ)器以選擇從所述存儲(chǔ)器輸出的對(duì)應(yīng)于收集操作的數(shù)據(jù)的解壓縮器。
17.根據(jù)權(quán)利要求16的裝置,其中所述控制器發(fā)送消息至所述解壓縮器以指示對(duì)應(yīng)于所述收集操作的數(shù)據(jù)的位置。
18.根據(jù)權(quán)利要求7的裝置,還包括繞過所述控制器并經(jīng)路由選擇將在所述多個(gè)輸入片中的地址發(fā)送至所述存儲(chǔ)器的旁路互連,其中所述矢量存儲(chǔ)器操作指示對(duì)所述存儲(chǔ)器的無沖突訪問。
19.根據(jù)權(quán)利要求7的裝置,其中所述地址生成器包括多個(gè)單元,每個(gè)所述單元都與所述存儲(chǔ)器的單獨(dú)可尋址部分相關(guān)聯(lián)。
20.一種方法,包括接收指令以對(duì)多個(gè)矢量元素執(zhí)行存儲(chǔ)器操作,其中所述指令指示所述存儲(chǔ)器操作是無沖突的;以及繞過沖突分析的至少一部分并執(zhí)行所述存儲(chǔ)器操作。
21.根據(jù)權(quán)利要求20的方法,其中所述指令指示在所述存儲(chǔ)器操作和在先的存儲(chǔ)器操作之間不存在沖突,并在所述在先的存儲(chǔ)器操作的至少一個(gè)之前執(zhí)行所述存儲(chǔ)器操作。
22.根據(jù)權(quán)利要求21的方法,還包括執(zhí)行所述存儲(chǔ)器操作而不檢查所述多個(gè)矢量元素和所述在先的存儲(chǔ)器操作之間的沖突。
23.根據(jù)權(quán)利要求20的方法,還包括產(chǎn)生對(duì)應(yīng)于所述多個(gè)矢量元素的多個(gè)地址;以及用所述多個(gè)地址訪問多個(gè)存儲(chǔ)體,所述多個(gè)地址的每個(gè)都對(duì)應(yīng)于所述多個(gè)存儲(chǔ)體中的一個(gè)。
24.根據(jù)權(quán)利要求23的方法,還包括從所述多個(gè)地址中產(chǎn)生片,所述片包括所述多個(gè)地址的子集,其中所述子集的每個(gè)地址都對(duì)應(yīng)于所述多個(gè)存儲(chǔ)體中的不同的一個(gè)。
25.根據(jù)權(quán)利要求23的方法,還包括發(fā)送所述多個(gè)地址至所述多個(gè)存儲(chǔ)體,繞過沖突檢測(cè)邏輯。
26.一種包括機(jī)器可讀存儲(chǔ)介質(zhì)的物品,所述機(jī)器可讀存儲(chǔ)介質(zhì)包括指令,所述指令如果由機(jī)器執(zhí)行的話使所述機(jī)器能夠執(zhí)行包括以下步驟的方法接收指令以對(duì)多個(gè)矢量元素執(zhí)行存儲(chǔ)器操作,其中所述指令指示所述多個(gè)矢量元素訪問存儲(chǔ)器的不同部分;以及發(fā)送所述存儲(chǔ)器操作至所述存儲(chǔ)器的不同部分而不檢查在所述多個(gè)矢量元素中的沖突。
27.根據(jù)權(quán)利要求26的物品,其中所述方法還包括確定所述多個(gè)矢量元素的存儲(chǔ)體索引部分是否與第一值相對(duì)應(yīng)。
28.根據(jù)權(quán)利要求27的物品,其中所述方法還包括如果所述多個(gè)矢量元素的存儲(chǔ)體索引部分與所述第一值不對(duì)應(yīng),則指示錯(cuò)誤。
29.根據(jù)權(quán)利要求26的物品,其中所述方法還包括產(chǎn)生對(duì)應(yīng)于所述多個(gè)矢量元素的多個(gè)地址;以及用所述多個(gè)地址訪問所述存儲(chǔ)器的不同部分,所述多個(gè)地址的每個(gè)都對(duì)應(yīng)于所述存儲(chǔ)器的不同部分中的一個(gè)。
30.根據(jù)權(quán)利要求29的物品,其中所述方法還包括將在所述存儲(chǔ)器的不同部分中訪問的數(shù)據(jù)直接傳遞至寄存器堆的對(duì)應(yīng)的不同部分。
全文摘要
在一個(gè)實(shí)施例中,本發(fā)明包括一種裝置,具有存儲(chǔ)矢量數(shù)據(jù)的寄存器堆、連接至該寄存器堆以產(chǎn)生用于矢量存儲(chǔ)器操作的地址的地址生成器以及控制器,該控制器從一個(gè)或多個(gè)片中產(chǎn)生輸出片,該一個(gè)或多個(gè)片的每個(gè)都包括多個(gè)地址,其中該輸出片包括各自對(duì)應(yīng)于存儲(chǔ)器的單獨(dú)可尋址部分的地址。描述了其它實(shí)施例并要求保護(hù)這些實(shí)施例。
文檔編號(hào)G06F12/02GK1952911SQ20061016464
公開日2007年4月25日 申請(qǐng)日期2006年10月21日 優(yōu)先權(quán)日2005年10月21日
發(fā)明者J·科爾巴桑阿德里安, R·厄斯帕薩, J·埃默, R·格拉穆恩特, F·阿達(dá)納茨, S·加蘭, A·祖安, I·赫曼德茨, G·洛尼 申請(qǐng)人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1