欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

多線程處理器的制作方法

文檔序號:6566511閱讀:195來源:國知局
專利名稱:多線程處理器的制作方法
技術領域
本發(fā)明涉及一種多線程處理器和一種用于編譯并行循環(huán)的方法, 該多線程處理器具有用于并行處理多個任務的處理單元。
背景技術
典型地,處理器執(zhí)行來自線程的指令,并包括針對指令將參照的 數據的寄存器文件、以及用于并行執(zhí)行的指令的地址程序計數器(即 指令地址寄存器)。為了減少處理器因為等待數據或來自存儲器的其他 指令而不執(zhí)行指令的時間,在處理器上并行執(zhí)行多個線程。如果一個 線程的執(zhí)行停止,則切換到下一個線程。這種切換也稱為上下文切換。 為了能夠有效且快速地切換,必須在處理器中保持多個線程的上下文。 因此,多線程處理器必須包括針對每個線程的寄存器文件和程序計數 器。為了增強多線程處理器的性能,需要附加資源來存儲多個上下文。 然而,從晶元上所需面積和較高的設計復雜度方面來看,附加資源增 加了附加成本。US 6,351,808 Bl涉及一種具有復制的寄存器文件結構的多線程 處理器。US 6,092,175公開了一種支持多個上下文或線程的多線程處理 器。為了減少寄存器的數量,寄存器文件中的一些在線程之間共享, 并在需要時將其分配到線程。發(fā)明內容因此,本發(fā)明的目的是提供一種硬件成本降低的多線程處理器、 以及一種針對多線程處理器的編譯并行循環(huán)的方法。此目的通過權利要求1所述的多線程處理器以及權利要求4所述 的用于編譯并行循環(huán)的方法來實現。因此,多線程處理器包括處理單元,用于并行處理多個線程。提 供了具有多個寄存器的寄存器文件裝置,其中將至少一個第一寄存器 用于存儲循環(huán)不變量值,以及將N個第二寄存器或N個另外的寄存器集合中的每一個用于存儲循環(huán)變量值。此外,提供了 N個程序計數器, 其中的每一個都與多個線程之一相關聯,其中N是正在處理的線程的數量。因此,對于多線程處理器而言,因為只復制程序計數器以及寄存 器文件的一部分,所以可以降低硬件復雜度以及硬件成本。根據本發(fā)明的方面,N個第二寄存器中的每一個與多個線程之一相關聯,并且在多個線程之間共享至少一個第一寄存器。因此,通過在多個線程之間共享第一寄存器,不需要為每個線程提供這種第一寄存器。這將提高寄存器文件中的寄存器的利用率。只將一個第一寄存器分配到所有線程,即在線程之間共享該第一寄存器,而不是為每個線程分配用于存儲該線程的循環(huán)不變量值的第一寄存器。根據本發(fā)明的另一方面,在每個循環(huán)中,將寄存器文件裝置中的 多個寄存器劃分或分配為第一和第二寄存器。由于每個循環(huán)的需求可能變化,所以可以針對每個循環(huán),執(zhí)行對于循環(huán)不變量和循環(huán)變量值 的寄存器的劃分或分配。本發(fā)明還涉及一種方法,用于編譯指令集內的并行循環(huán)。檢測具 有寄存器文件的多線程處理器的指令集內循環(huán)中的循環(huán)不變量和循環(huán) 變量值。將寄存器文件的多個寄存器劃分或分配為至少一個用于存儲 循環(huán)不變量值的第一寄存器、以及每一個都用于存儲循環(huán)變量值的N 個第二寄存器或N個寄存器集合,其中N是正在處理的線程的數量。本發(fā)明基于將循環(huán)編譯成多個線程的思想。因此,不用復制所有 的寄存器文件,而只復制程序計數器。根據現有技術,寄存器文件需 要N個循環(huán)不變量寄存器和N個循環(huán)變量寄存器,而本發(fā)明只需要針 對循環(huán)不變量值的寄存器(在線程之間共享)以及針對循環(huán)變量值的、 各自與N個線程相關聯或專用于該線程的N個寄存器。將寄存器文件中的現有寄存器劃劃分或分配成針對循環(huán)變量寄存器的寄存器以及針
對循環(huán)不變量寄存器的寄存器,g卩,將寄存器劃分成不相交的子集。 通過將并行循環(huán)轉化為兩個或多個循環(huán),將多線程應用于并行循環(huán)。


參考下文中描述的實施例,本發(fā)明的這些和其他方面將變得顯而 易見,并對其加以說明。圖1示出了根據第一實施例的多線程處理器的基本結構。
具體實施方式
圖1示出了根據第一實施例的多線程處理器的基本結構。該處理器包括能夠并行處理N個線程的處理單元PU。根據圖1的實施例, 對三個線程進行處理,即N-3。因此,程序計數器PC實現為包括針 對每個線程的程序計數器單元,即,第一、第二和第三程序計數器單 元PC1、 PC2、 PC3。此外,寄存器文件RF具有多個寄存器。這里,只示出了8個寄存器。從寄存器文件RF的多個寄存器中,針對每個 線程的循環(huán)變量值,對多個寄存器集合LV1-LV3進行劃分或分配,艮口, 根據線程的數量來復制針對循環(huán)變量值的寄存器LV1-LV3,以使針對 循環(huán)變量的一個寄存器集合LV1-LV3與線程中的每一個相關聯。換言 之,執(zhí)行對寄存器文件中的寄存器的劃分,以便給循環(huán)變量值分配N 個(每個線程一個)寄存器。寄存器文件RF還包括針對循環(huán)不變量 值的寄存器集合LI (將一個寄存器分配給循環(huán)不變量值,并在線程之 間共享該寄存器),這樣寄存器文件RF包括針對循環(huán)不變量值的寄存 器LI以及針對循環(huán)變量值的3 (N)個寄存器集合LV。寄存器中的4 個未使用。應該注意,N的值僅作為示例,而并不限制實施例。例如,寄存器文件RF可以包括32個寄存器。對于一個特定循環(huán), 為循環(huán)不變量值分配32個寄存器中的10個,為循環(huán)變量值分配3x5 個寄存器(3個集合,每個集合中有5個寄存器),而7個寄存器未使 用。在另一個循環(huán)中,為循環(huán)不變量值分配4個寄存器,為循環(huán)變量 值分配3x8個寄存器,而4個寄存器未使用。換言之,可以針對每個 待執(zhí)行的循環(huán),為循環(huán)不變量值和循環(huán)變量值來分配現有的寄存器。
在一些情況下,寄存器文件RF中的所有32個寄存器并未全部使用。 應注意的是,分配用以存儲循環(huán)不變量值的寄存器在多個線程之間共 享,而分配用以存儲循環(huán)變量值的那些寄存器至少在循環(huán)的持續(xù)時間 內是排他性地與多個線程之一相關聯的或專用于該線程的。還應注意 的是,寄存器文件可以包括不同數量的寄存器。由于只復制針對循環(huán)不變量值的寄存器LV1-LV3的分配,所以可 以基于多個線程來處理的應用程序是有限的。例如,因為對寄存器文 件RF的要求沒有那么嚴格,所以將多線程應用于處理并行循環(huán)。根 據本實施例,將并行循環(huán)轉化為兩個循環(huán)。并行循環(huán)可以通過以下代碼實現For(i=0;i<n;i++) Si并將其轉化為以下代碼for k L/* create a second thread, initial pc=L */ for(i=0;i<n/2;i++)Wait /*wait on termination of second thread */L: for(i=n/2;i<n;i++)Exit/*stop thread*/將并行循環(huán)轉化為兩個循環(huán),即, 一個循環(huán)是從0到<11/2,而另 一個循環(huán)是從n/2到<11。然后,將這兩個循環(huán)作為兩個線程并行進行 處理。循環(huán)中的數據值可以是循環(huán)變量(即在循環(huán)處理期間改變)或 循環(huán)不變量(即在循環(huán)期間不改變)。循環(huán)不變量值的示例是數組的基 址指針。寄存器U或寄存器集合LI用于分配所有不變量值,并寄存 器LV或寄存器集合LV用于分配所有循環(huán)變量值。因此,為了實現上
述代碼,因為存在兩個線程,所以需要一個寄存器LI和2個寄存器 LVo根據第二實施例,考慮SAXPY循環(huán)類型,,即S, A, X, P, Y, 其用于將標量可變量A與矢量X相乘,并將其與矢量Y相加??紤] 以下循環(huán)For(i=0;i<1000;i++)a[i]=b[i]+S*c[i];相應的匯編代碼可以如下實現loadi#a -> r10load說b -〉 rl 1loa譜c -> r12loadi#s -> rl3loadi#0 -> rl4loadi rll,rl4 -> rl5loadi rl2,rl4 -> rl6mult rl6,rl3 -> rl6add rl6,rl5 -> rl6store rl0,rl4 <- rl6add#l rl4 ->rl4bless rl4,#1000,Ll在上述循環(huán)中,因為rl0或rl2包括數組a, b和c的基址,所以 寄存器LI^(r10, rll, rl2和rl3)包括循環(huán)不變量值。寄存器rl3用于 存儲標量值s。因為所有這些值在循環(huán)執(zhí)行期間是不變的,所以它們 構成了循環(huán)不變量值。寄存器rl4或rl6包括循環(huán)變量值,因為這些 值在循環(huán)執(zhí)行期間改變。根據第二實施例,可以將上述循環(huán)轉化為以下代碼,其中第一線 程利用針對不變量值的寄存器LVl={rl4-rl6},而第二線程利用針對 變量值的寄存器LV2={r24-r26}:load說a -> rlOload說b ->rll/* load b[i]*//* loadc[i]*//* compute s*c[i]*//* add b[i]*//* store result in a[i]*/loadi#c -> r12 load說s -> r13 loa禱-> rl4for k L2 /* start second thread */LI: 1oadirll,r14->rl5 /*loadb[i]*/ loadi rl2,rl4-> rl6 /*loadc[i]*/ mult rl6,rl3 -> rl6 /* compute s*c[i]*/addrl6,r15->rl6 /* add b[i]*/store rl0,rl4 <- rl6 /* store result in a[i]*/add#l rl4 ->rl4bless rl4,#500,Ll /* loop until 500 */waitL2: loadi #500 ->r24 /* start at i=500 " loadi rll,r24 -> r25 /* load b[i]*/loadi rl2,r24 -> r26 /* load c[i]*/mult r26,rl3 -> r26 /* compute s*c[i]*/add r26,r25 -> r26 /* add b[i]*/store rl0,r24 <- r26 /* store result in a[i]*/add#l r24 -> r24bless r24,#500,Ll /* loop until 1000 */waitexit /* stop second thread*/由于通過多線程處理器來并行執(zhí)行用于實現第一和第二循環(huán)(從 0到499的循環(huán),以及從500到1000的循環(huán))的兩個線程,所以如果 一個線程停止,仍然可以處理另一個線程。由此,減少了執(zhí)行時間, 并且提高了處理器的利用率。通過將并行循環(huán)轉化為兩個或多個循環(huán),可以將多線程應用于并 行循環(huán)。確定循環(huán)變量和循環(huán)不變量值。將并行循環(huán)化分成或轉化為
多個循環(huán)。從寄存器文件中的寄存器中,將對應于線程數量的多個寄 存器分配或劃分為是針對循環(huán)不變量值的,這樣每個線程與一個寄存 器相關聯,以便存儲其變量值。此外,從寄存器文件中的寄存器中, 分配至少一個寄存器用于存儲循環(huán)不變量值,并在線程之間共享該寄 存器。應注意的是,上面所提到的實施例示出而并非限制本發(fā)明,在不 偏離所附權利要求范圍的前提下,本領域的技術人員能夠設計許多可 選的實施例。在權利要求中,括號之間的任何附圖標記不應理解為限 制本發(fā)明。詞"包括"不排除權利要求中所列出的元件或步驟之外的其他元件或步驟的存在。元素之前的冠詞"a"或"an"不排除多個這 種元件的存在。在列舉了多個裝置的設備權利要求中,這些裝置中的 一些可由同一個硬件項來體現。特定措施位于彼此不同的從屬權利要 求中的這一事實并不表示不能有利地使用這些措施的組合。此外,權利要求中的任意附圖標記不應視作對權利要求的范圍有 所限制。
權利要求
1.一種多線程處理器,包括-處理單元(PU),用于并行處理多個線程;-寄存器文件裝置(RF),包括多個寄存器(LI,LV),其中,將至少一個第一寄存器(LI)用于存儲循環(huán)不變量值,并將N個第二寄存器(LV1-LVN)中的每一個用于存儲循環(huán)變量值;以及-N個程序計數器(PC1-PCN),每一個都與多個線程之一相關聯;其中,N是正在處理的線程的數量。
1. 一種多線程處理器,包括-處理單元(PU),用于并行處理多個線程;-寄存器文件裝置(RF),包括多個寄存器(LI, LV),其中,將 至少一個第一寄存器(LI)用于存儲循環(huán)不變量值,并將N個第二寄 存器(LV1-LVN)中的每一個用于存儲循環(huán)變量值;以及-N個程序計數器(PCl-PCN),每一個都與多個線程之一相關聯; 其中,N是正在處理的線程的數量。
2. 如權利要求1所述的多線程處理器,其中,N個第二寄存器 (LV1-LVN)中的每一個都與多個線程之一相關聯,以及在多個線程之間共享所述至少一個第一寄存器(LI)。
3. 如權利要求1或2所述的多線程處理器,其中,在每次循環(huán)中, 將寄存器文件裝置(RF)中的多個寄存器劃分成第一和第二寄存器(LI; LV1-LV3)。
4. 一種用于編譯指令集內的并行循環(huán)的方法,包括以下步驟-針對具有寄存器文件(RF)的多線程處理器(PU),檢測指令 集內循環(huán)中的循環(huán)不變量和循環(huán)變量值;以及-將寄存器文件(RF)的多個寄存器(LI; LV1-LVN)劃分成用 于存儲循環(huán)不變量值的至少一個第一寄存器(LI)、以及每一個均用于 存儲循環(huán)變量值的N個第二寄存器(LV1-LVN); N是正在處理的線 程的數量。
5. 如權利要求4所述的方法,其中,N個第二寄存器(LV1-LVN) 中的每一個都與多個線程之一相關聯,以及在多個線程之間共享所述 至少一個第一寄存器(LI)。
6. 如權利要求4或5所述的方法,包括步驟針對至少一個循環(huán), 將寄存器文件裝置(RF)中的多個寄存器劃分成第一和第二寄存器(LI; LV1-LV3)。全文摘要
一種多線程處理器,包括處理單元(PU),用于并行處理多個線程。提供了具有多個寄存器的寄存器文件裝置(RF),其中將第一寄存器(LI)用于存儲循環(huán)不變量值,以及將N個第二存儲器(LV1-LVN)中的每一個用于存儲循環(huán)變量值。此外,提供了N個程序計數器(PC1-PCN),其中每一個都與多個線程之一相關聯,N是正在處理的線程的數量。
文檔編號G06F9/38GK101151590SQ200680002878
公開日2008年3月26日 申請日期2006年1月17日 優(yōu)先權日2005年1月25日
發(fā)明者J·胡格布魯格 申請人:Nxp股份有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
石渠县| 定西市| 五峰| 襄城县| 丹寨县| 华宁县| 梅河口市| 上杭县| 齐河县| 高密市| 天津市| 茶陵县| 枞阳县| 抚顺市| 石首市| 高青县| 宜城市| 濮阳市| 贵溪市| 博乐市| 南丹县| 汉沽区| 上饶县| 周至县| 舒兰市| 三亚市| 尚义县| 郸城县| 西华县| 宜城市| 当阳市| 阜平县| 衡山县| 弥渡县| 保定市| 瑞昌市| 马山县| 聂荣县| 奈曼旗| 额尔古纳市| 甘谷县|