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

具有共享存儲器的改進結(jié)構(gòu)的制作方法

文檔序號:6434708閱讀:175來源:國知局
專利名稱:具有共享存儲器的改進結(jié)構(gòu)的制作方法
技術(shù)領(lǐng)域
本發(fā)明通常涉及集成電路(IC)。特別的,本發(fā)明涉及一種具有共享存儲器的改進結(jié)構(gòu)。
背景技術(shù)
圖1顯示了一種傳統(tǒng)SOC 100的一部分的框圖,如一種數(shù)字信號處理器(DSP)。如圖所示,該SOC包括一個通過一總線180與一存儲模塊耦合的處理器110。該存儲模塊存儲一包括多個指令的計算機程序。在SOC操作期間,處理器從存儲器查詢并執(zhí)行該計算機指令,以執(zhí)行所要求的功能。
一個SOC可具有例如執(zhí)行相同程序的多個處理器。取決于應(yīng)用程序,處理器可能執(zhí)行不同的程序或共享相同的程序。通常,為提高性能,每一處理器與其自身的存儲模塊相聯(lián)系,因為在每一時鐘周期內(nèi),一個存儲模塊只能被一個處理器訪問。由此,使用其自身的存儲器,處理器無須等待至存儲器空閑,因為它是唯一訪問其相聯(lián)系的存儲模塊的處理器。然而,由于對于每一處理器,需要雙倍的存儲模塊,性能的改進是以犧性芯片尺寸為代價的。
從上述的討論可以證明,迫切需要提供這樣一種系統(tǒng),其中各處理器可以共享一個存儲模塊以減小芯片尺寸,而不破傳統(tǒng)結(jié)構(gòu)的性能。

發(fā)明內(nèi)容
本發(fā)明的一個實施例中涉及了一種在多個處理器之間共享一存儲模塊的方法。將存儲模塊分成n個存儲體,該n至少是2。每一存儲體可由一個或更多的處理器在任何時間訪問。將該存儲模塊映射以分配連續(xù)地址至存儲器的交替存儲體,基于存儲器的映射而在交替存儲單元中存儲連續(xù)數(shù)據(jù)。在一個實施例中,將存儲單元分成x個區(qū)塊,x至少是1,其中每一區(qū)塊可由多個處理器中的一個在任何時間訪問。而另一實施例中,該方法進一步包括同步各處理器以在任一時間訪問不同的區(qū)塊。


圖1顯示了傳統(tǒng)SOC的框圖;圖2顯示了根據(jù)本發(fā)明的一個實施例的一個系統(tǒng);圖3-5顯示了根據(jù)本發(fā)明的不同實施例的一FCU的流程;及圖6-7顯示了根據(jù)本發(fā)明的各個實施例的存儲模塊。
具體實施例方式
圖2顯示了根據(jù)本發(fā)明的一個實施例的一系統(tǒng)200的一部分的框圖。該系統(tǒng)例如包括用于在一單個芯片上的多端口數(shù)字用戶線(DSL)應(yīng)用的多個數(shù)字信號處理器(DSP)。該系統(tǒng)包括m個處理器210,該m是等于或大于2的整數(shù)。更具體的,該系統(tǒng)包括第一和第二處理器210a-b(m=2)。在該系統(tǒng)中提供多于兩個的存儲器也是用效的。
各處理器通過各自的存儲總線218a和218b耦合于一存儲模塊260。存儲總線例如是16位寬的總線。取決于每一數(shù)據(jù)字節(jié)的寬度,也可以使用其它尺寸的總線。由處理器訪問的數(shù)據(jù)字節(jié)存儲于存儲模塊。在一個實施例中,該數(shù)據(jù)字節(jié)包括程序指令,由此處理器從存儲模塊中取出指令用以執(zhí)行。
根據(jù)本發(fā)明的一個實施例,在各處理器之間共享存儲模塊,而沒有出現(xiàn)可觀的性能劣化,也無需對于每個處理器提供雙倍的存儲模塊??捎^的性能劣化的防止是通過將存儲模塊分成n個獨立操作的存儲體265,該n是一等于或大于2的整數(shù)。優(yōu)選n=系統(tǒng)中處理器的數(shù)目(即n=m)。由于各存儲體獨立操作,各處理器可以在相同的時鐘周期內(nèi)同時訪問存儲模塊的不同存儲體。
在另一實施例中,將一存儲體再分成x個可單獨訪問的區(qū)塊275a-p,該x是一大于或等于1的整數(shù)。在一個實施例中,將每個存儲體再分成8個可單獨訪問的區(qū)塊。通常,區(qū)塊的數(shù)目越大,爭用的概率越低。在一個實施例中,選擇區(qū)塊的數(shù)目以優(yōu)化性能及減少爭用。
在一個實施例中,每個處理器(210a或210b)都有一耦合于每個存儲體的總線(218a或218b)。存儲陣列的區(qū)塊的每一個具有例如控制線路278,以將總線上的數(shù)據(jù)合適地放置至處理器。該控制電路包括例如多路復(fù)用電路或三態(tài)緩存器,以將數(shù)據(jù)導(dǎo)向正確的處理器。每個存儲體例如再分成8個區(qū)塊。通過在一個存儲體內(nèi)提供獨立區(qū)塊,處理器可以不管是否來自于同一存儲單元而訪問不同的區(qū)塊,這是有利的。通過減少了處理器之間的潛在沖突,其還提高了系統(tǒng)性能。
而且,對存儲器映射,以在不同的存儲器存儲體之間輪換連續(xù)的存儲地址。例如,在一雙存儲體存儲模塊中(如存儲體0和存儲體1),會對一個存儲體(存儲體0)分配偶數(shù)地址,而對另一個存儲體(存儲體1)分配奇數(shù)地址。這將使得在連續(xù)地址中的數(shù)據(jù)字節(jié)存儲于交替的存儲體,如在存儲體0中的數(shù)據(jù)字節(jié)1、在存儲體1中的數(shù)據(jù)字節(jié)2、在存儲體0中的數(shù)據(jù)字節(jié)3等等。在一個實施例中,數(shù)據(jù)字節(jié)包括程序中的指令。由于程序指令的執(zhí)行是除跳轉(zhuǎn)(例如分支及循環(huán)指令)之外按次序執(zhí)行的,一處理器通常會在程序執(zhí)行期間、每個周期之后訪問存儲模塊的不同存儲體。通過同步或交錯處理器來執(zhí)行程序,以使各處理器在相同的周期訪問不同的存儲體,多個處理器可以同時執(zhí)行存儲于存儲模塊260中的相同程序。
一流程控制單元(FCU)245同步處理器訪問不同的存儲區(qū)塊,以防止存儲沖突或爭用。在一存儲沖突事件(如兩個處理器同時訪問相同的區(qū)塊)中,該FCU鎖定處理器中的一個(如插入一等待狀態(tài)或周期),而使另一處理器訪問該存儲器。這將會同步處理器以在下一時鐘周期訪問不同的存儲體。一旦同步了之后,兩個處理器在相同時鐘周期內(nèi)都可以訪問該存儲模塊,直至例如由跳轉(zhuǎn)指令導(dǎo)致的存儲沖突出現(xiàn)。如果兩個處理器(210a和210b)都試圖在相同的周期訪問區(qū)塊275a,則例如在一個周期中在處理器210b中插入等待狀態(tài),使處理器210a先訪問區(qū)塊275a。在下一時鐘周期中,處理器210a訪問區(qū)塊275b而處理器210b訪問區(qū)塊275a。因此處理器210a和210b被同步從而在隨后的時鐘周期中訪問不同的存儲體。
可選的,各處理器可具有各自的臨界存儲模塊215。該臨界存儲模塊例如小于主存儲模塊260并用于存儲由處理器頻繁訪問的程序或子程序(如MIPS臨界)。通過不顯著增加芯片尺寸而減少存儲沖突,臨界存儲模塊的使用增強了系統(tǒng)性能。提供一種控制電路214。該控制電路耦合于總線217和2 18,以從存儲模塊260或臨界存儲模塊215適當(dāng)?shù)囟嗦穫鬏敂?shù)據(jù)。在一個實施例中,該控制電路包括三態(tài)緩存器,用以將合適的總線解耦或耦合于該處理器。
在一個實施例中,F(xiàn)CU作為一個狀態(tài)機實現(xiàn)。圖3顯示了根據(jù)本發(fā)明的一個實施例的一FCU狀態(tài)機的普通工作流程。如圖所示,該FCU控制處理器的訪問(例如A或B)。在步驟310處,初始化該FCU。在操作期間,處理器相應(yīng)于在下一時鐘周期中存儲器訪問,發(fā)出各自的存儲地址(AAdd或BAdd)。FCU在步驟320比較AAdd和BAdd,以確定是否存在一存儲沖突(例如各處理器訪問相同的還是不同的存儲區(qū)塊)。在一個實施例中,F(xiàn)CU檢查地址以確定是否訪問了任何臨界存儲模塊(未示出)。如果,或者處理器A,或處理器B正在訪問其各自的本地臨界存儲器,則不出現(xiàn)沖突。
如果沒有沖突存在,在步驟340,各處理器在相同的周期內(nèi)訪問該存儲模塊。如果沖突存在,F(xiàn)CU在步驟350確定處理器的訪問優(yōu)先級。如果處理器A具有一更高的優(yōu)先級,該FCU允許處理器A訪問該存儲器,而處理器B在步驟360執(zhí)行一等待狀態(tài)。如果處理器B具有一更高的優(yōu)先級,則處理器B訪問該存儲器,而處理器A在步驟370執(zhí)行一等待狀態(tài)。在步驟340、360或370之后,F(xiàn)CU返回到步驟320以比較由處理器訪問的下一存儲器的地址。例如,如果存在一沖突,如在步驟360處,則對于處理器B插入一等待狀態(tài),而處理器A訪問在地址AAdd處的存儲器。因此,兩個處理器都被同步以在接下來的周期中訪問不同的存儲區(qū)塊。
圖4顯示了根據(jù)本發(fā)明的另一個實施例的一FCU的一工作流程401。在沖突的情況下,該FCU在步驟460處通過檢測處理器A來確定是否它已執(zhí)行了一個跳轉(zhuǎn),以分配訪問的優(yōu)先級。在一個實施例中,如果處理器B已執(zhí)行了一個跳轉(zhuǎn),則鎖定處理器B(例如執(zhí)行一等待狀態(tài))而授予處理器A以訪問優(yōu)先級。反之,則鎖定處理器A而授予處理器B以訪問優(yōu)先級。
在一個實施例中,F(xiàn)CU在步驟440中比較處理器A和處理器B的地址來確定是否處理器正在訪問同一個存儲區(qū)塊。在處理器正在訪問不同的存儲區(qū)塊的事件中(即沒有沖突),在步驟430,F(xiàn)CU允許兩個處理器都能同時訪問存儲器。如果存在一沖突,在步驟460,F(xiàn)CU例如比較處理器A的當(dāng)前和在前地址的最低位以確定訪問優(yōu)先級。如果最低位不相等(即當(dāng)前和在前地址是連續(xù)的),處理器B可能已經(jīng)通過執(zhí)行一跳轉(zhuǎn)而導(dǎo)致了沖突。由此,F(xiàn)CU前進到步驟470,鎖定處理器B而允許處理器A訪問該存儲器。如果該最低位相等,則在步驟480中鎖定處理器A而允許處理器B訪問該存儲器。
圖5顯示了根據(jù)本發(fā)明的一個另一變化實施例的FCU 501。在操作之前,在步驟510初始化該FCU。在步驟520,該FCU比較處理器的地址來確定它們是否訪問不同的存儲區(qū)塊。如果處理器正在訪問不同的存儲區(qū)塊,則在步驟530允許兩個處理器都能訪問。然而,如果處理器正在訪問相同的存儲區(qū)塊,則存在沖突。在沖突期間,該FCU確定哪個處理器導(dǎo)致了該沖突,例如通過執(zhí)行了跳轉(zhuǎn)而導(dǎo)致的。在一個實施例中,在步驟550和555,比較處理器的當(dāng)前和在前地址的最低位。如果是處理器A導(dǎo)致了跳轉(zhuǎn)(例如處理器A的當(dāng)前和在前地址的最低位相等而處理器B的當(dāng)前和在前地址的最低位不相等),則FCU前進到步驟570。在步驟570,F(xiàn)CU鎖定處理器A并允許處理器B在步驟570中訪問該存儲器。如果是處理器B導(dǎo)致了跳轉(zhuǎn),則在步驟560,F(xiàn)CU鎖定處理器B允許處理器A訪問該存儲器。
可能存兩個處理器都執(zhí)行了一跳轉(zhuǎn)的狀況。在這種情況下,F(xiàn)CU前進到步驟580并檢測一優(yōu)先級寄存器,其包含表示哪一處理器具有優(yōu)先級的信息。在一個實施例中,觸發(fā)該優(yōu)先級寄存器以在處理器之間的交替優(yōu)選級。如圖5所示,在步驟580,F(xiàn)CU在確定哪一處理器具有優(yōu)先級之前觸發(fā)該優(yōu)先級寄存器。另一可選的,可以在確定了優(yōu)先級之后觸發(fā)優(yōu)先級寄存器。在一個實施例中,在優(yōu)先級寄存器中的1表示處理器A具有優(yōu)先級(步驟585),而在優(yōu)先級寄存器中的0表示處理器B具有優(yōu)先級(步驟590)。使用1來表示B具有優(yōu)先極,0表示A具有優(yōu)先級也是可以的。在沒有處理器執(zhí)行跳轉(zhuǎn)(例如處理器A或處理器B的當(dāng)前和在前地址的最低位不相同)時出現(xiàn)沖突的事件中也能夠執(zhí)行相同的方法。
在另一變化實施例中,F(xiàn)CU也可采用其它類型的判斷機制來同步處理器。在一個實施例中,可分配處理器相對于另一處理器或其它處理器的具有特定優(yōu)先級水平。
圖6-7說明了根據(jù)本發(fā)明的不同實施例的存儲器映射。參照圖6,顯示了將具有2個存儲體(存儲體0和存儲體1)的存儲模塊260,2個存儲體分別再分成8個區(qū)塊(區(qū)塊0-7)。更具體的,假定存儲模塊包括16位寬度的512Kb存儲區(qū),將每個區(qū)塊分配2K可尋址的位置(2K×16位×16區(qū)塊)。在一個實施例中,分配偶數(shù)地址至存儲體0(即0,2,4...32K-2),而分配奇數(shù)地址到存儲體1(即1,3,5...32K-1)。存儲體0的區(qū)塊0將具有地址0,2,4...4K-2;存儲體1的區(qū)塊1將具有地址1,3,5...4K-1。
參照圖7,顯示了具有4個存儲體(存儲體0-3)的存儲模塊,每一個存儲體都分別再分成8個區(qū)塊(區(qū)塊0-7)。假定存儲模塊包括16位寬度的512Kb存儲區(qū),將每個區(qū)塊分配1K可尋址的位置(1K×16位×32區(qū)塊)。在存儲模塊包括4個存儲體的情況中,如圖5所示,將如下分配地址存儲體0從0開始的每第四地址(即0,4,8等等)存儲體1從1開始的每第四地址(即1,5,9等等)存儲體2從2開始的每第四地址(即2,6,10等等)存儲體3從3開始的每第四地址(即3,7,11等等)對n個存儲體,可以如下建立存儲映射存儲體0從0開始的每第n地址(即0,n,2n,3n等等)存儲體1從1開始的每第n地址(即1,1+n,1+2n,1+3n等等)………存儲體n-1從n-1開始的每第n地址(即n-1,n-1+n,n-1+2n等等)盡管已參照不同的實施例特定的顯示和描述了本發(fā)明,在不脫離本發(fā)明的主旨和范圍的情況下,本領(lǐng)域技術(shù)人員可以對本發(fā)明作各種改進和變化。因此本發(fā)明的范圍不應(yīng)當(dāng)參照上面的描述來確定,而應(yīng)當(dāng)參照所附的權(quán)利要求連同其所有等價物的范圍來確定。
權(quán)利要求
1.一種在多個處理器之間共享一存儲模塊的方法,其包括將存儲模塊分成n個存儲體,該n至少是2,其中每個存儲體可以由一個或更多的處理器在任何一個時刻訪問;對該存儲模塊映射,以分配連續(xù)地址至存儲器的交替的存儲體;以及在存儲器中存儲數(shù)據(jù)字節(jié),其中所述的在連續(xù)地址中的數(shù)據(jù)字節(jié)依據(jù)存儲器的映射存儲于交替的存儲體中。
2.如權(quán)利要求1所述的方法,進一步包括一步驟,即將每一個存儲體分成x個區(qū)塊,該x至少是1,其中每個區(qū)塊可由多個處理器中一個在任何一個時刻訪問。
3.如權(quán)利要求2所述的方法,進一步包括一步驟,即確定是否出現(xiàn)了存儲器的訪問沖突,其中兩個或更多的處理器在任何一個時刻正在訪問相同的區(qū)塊。
4.如權(quán)利要求3所述的方法,進一步包括一步驟,即同步處理器以在任何一個時刻訪問不同的區(qū)塊。
5.如權(quán)利要求4所述的方法,進一步包括一步驟,即當(dāng)出現(xiàn)存儲器的訪問沖突時,確定各處理器的訪問優(yōu)先級。
6.如權(quán)利要求5所述的方法,其中確定訪問優(yōu)先級的步驟包括對導(dǎo)致存儲器沖突的處理器分配較低的訪問優(yōu)先級。
7.如權(quán)利要求6所述的方法,其中確定訪問優(yōu)先級的步驟包括對執(zhí)行了一跳轉(zhuǎn)的處理器分配較低的訪問優(yōu)先級。
8.如權(quán)利要求6所述的方法,其中同步處理器的步驟包括當(dāng)出現(xiàn)存儲器訪問沖突時,將具有較低優(yōu)先級的處理器鎖定一個或更多的周期。
9.一種系統(tǒng),包括多個處理器;一包括n個存儲體的存儲模塊,該n至少是2,其中每個存儲體可由一個或更多的處理器在任何一個時刻訪問;一存儲器映射,用于將連續(xù)地址分配至該存儲模塊的交替存儲體;以及存儲于一存儲器中的數(shù)據(jù)字節(jié),其中所述的在連續(xù)地址中的數(shù)據(jù)字節(jié)依據(jù)存儲器映射存儲于交替的存儲體中。
10.如權(quán)利要求9所述的系統(tǒng),其中每一個存儲體包括x個區(qū)塊,該x至少是1,其中每個區(qū)塊可由多個處理器中一個在任何一個時刻訪問。
11.如權(quán)利要求10所述的系統(tǒng),進一步包括一流程控制單元,其用于同步處理器以在任何一個時刻訪問不同的區(qū)塊。
12.如權(quán)利要求11所述的系統(tǒng),進一步包括一優(yōu)先級寄存器,其用于存儲每個處理器的訪問優(yōu)先級。
13.如權(quán)利要求9所述的系統(tǒng),其中所述的數(shù)據(jù)字節(jié)包括程序指令。
14.如權(quán)利要求9所述的系統(tǒng),進一步包括多個臨界存儲模塊,其用于對每個處理器存儲多個數(shù)據(jù)字節(jié),從而減少存儲器的訪問沖突。
全文摘要
一種具有多個處理器共享單個存儲模塊而不具有顯著的性能劣化的系統(tǒng)。該存儲模塊分成n個單獨可尋址的存儲體,該n至少為2,且對該存儲模塊映射,以在各存儲體之間輪換連續(xù)的地址。這樣的映射使得連續(xù)數(shù)據(jù)字節(jié)存儲于交替的存儲體中。每個存儲體可進一步分成多個區(qū)塊。通過交錯或同步處理器來執(zhí)行計算機程序,以使每個處理器在相同的周期訪問不同的區(qū)塊,處理器能夠同時訪問存儲器。
文檔編號G06F12/00GK1613060SQ02826818
公開日2005年5月4日 申請日期2002年11月6日 優(yōu)先權(quán)日2001年11月6日
發(fā)明者R·弗倫策爾, C·霍拉克, R·K·雅因, M·特爾施盧澤, S·烏勒曼 申請人:因芬尼昂技術(shù)股份公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
鲁山县| 临夏市| 兴仁县| 武清区| 武强县| 蒲城县| 宝应县| 奈曼旗| 和龙市| 诸暨市| 重庆市| 长子县| 建阳市| 汕头市| 鲁甸县| 祥云县| 怀仁县| 临城县| 太康县| 怀集县| 顺平县| 德昌县| 图木舒克市| 靖边县| 临夏市| 阜新市| 扶绥县| 浮梁县| 江山市| 合江县| 浠水县| 罗江县| 石柱| 安丘市| 蓬莱市| 阳谷县| 静海县| 扎兰屯市| 永兴县| 扬中市| 马龙县|