專利名稱:訪問多個(gè)存儲器的數(shù)據(jù)處理設(shè)備和數(shù)據(jù)處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于控制對多個(gè)存儲器的數(shù)據(jù)讀取操作的數(shù)據(jù)處理設(shè)備和數(shù)據(jù) 處理方法,更具體地涉及一種響應(yīng)于一個(gè)或多個(gè)讀引擎分別向多個(gè)存儲器發(fā)出的多個(gè)讀請 求而從所述多個(gè)存儲器讀取數(shù)據(jù),并以正確的順序?qū)⑺鰯?shù)據(jù)提供給相應(yīng)的讀引擎的數(shù)據(jù) 處理設(shè)備和數(shù)據(jù)處理方法。
背景技術(shù):
在數(shù)據(jù)存取領(lǐng)域,常常出現(xiàn)這樣的場景,S卩,一個(gè)或多個(gè)讀引擎向多個(gè)彼此獨(dú)立的 存儲器發(fā)送讀請求以讀取存儲在其中的數(shù)據(jù),其中,一個(gè)讀引擎只有一個(gè)讀端口且一次只 能訪問一個(gè)存儲器,在每個(gè)讀引擎與各個(gè)存儲器之間各有一條訪問路徑,并且在各個(gè)讀引 擎與同一個(gè)存儲器之間只有一條公共的訪問路徑。響應(yīng)于該讀請求而執(zhí)行的操作大致分為 兩個(gè)階段,即尋址階段和數(shù)據(jù)階段。在尋址階段,將讀請求發(fā)送到目標(biāo)存儲器,在數(shù)據(jù)階段, 接收從目標(biāo)存儲器輸出的所請求的數(shù)據(jù)并且將其分配給讀引擎。在這兩個(gè)階段之間存在一 時(shí)間段,即目標(biāo)存儲器響應(yīng)于所述讀請求而輸出所請求的數(shù)據(jù)的時(shí)間段,該時(shí)間段被稱為 存儲器的響應(yīng)時(shí)間(latency)。為了使讀引擎正常工作,在一個(gè)或多個(gè)讀引擎發(fā)送了多個(gè)讀請求的情況下,必須 將從存儲器輸出的數(shù)據(jù)按照讀請求發(fā)出的順序分配給相應(yīng)的讀引擎。然而,由于各個(gè)存儲 器的響應(yīng)時(shí)間無法預(yù)估,因此可能會出現(xiàn)數(shù)據(jù)分配順序錯(cuò)亂或數(shù)據(jù)沖突的問題。以一個(gè)讀 引擎的情況為例。假設(shè)該讀引擎在第一時(shí)刻向第一存儲器發(fā)出第一個(gè)讀請求,然后在第二 時(shí)刻向第二存儲器發(fā)出第二個(gè)讀請求。如果第二存儲器的響應(yīng)時(shí)間短于第一存儲器的響應(yīng) 時(shí)間,則從第二存儲器返回的數(shù)據(jù)比從第一存儲器返回的數(shù)據(jù)更早到達(dá)讀引擎,即,數(shù)據(jù)返 回順序與請求所述數(shù)據(jù)的順序不一致,這使得讀引擎接收到的數(shù)據(jù)不是所請求的數(shù)據(jù),從 而發(fā)生錯(cuò)誤。此外,如果這兩個(gè)存儲器同時(shí)將數(shù)據(jù)返回給讀引擎,則由于該讀引擎只有一個(gè) 讀端口,因此在讀端口處產(chǎn)生數(shù)據(jù)沖突。在多個(gè)讀引擎的情況下,由于在各個(gè)讀引擎與同一 個(gè)存儲器之間只有一條公共的訪問路徑,上述數(shù)據(jù)順序錯(cuò)亂和數(shù)據(jù)沖突的問題將變得更加 嚴(yán)重。因此,需要一種響應(yīng)于一個(gè)或多個(gè)讀引擎分別向多個(gè)存儲器發(fā)出的多個(gè)讀請求而 從所述多個(gè)存儲器讀取數(shù)據(jù),并以正確的順序?qū)⑺鰯?shù)據(jù)提供給相應(yīng)的讀引擎的數(shù)據(jù)處理 設(shè)備和數(shù)據(jù)處理方法。
發(fā)明內(nèi)容
本發(fā)明提供一種數(shù)據(jù)處理設(shè)備和數(shù)據(jù)處理方法,其能夠以正確的順序?qū)㈨憫?yīng)于一 個(gè)或多個(gè)讀引擎分別向多個(gè)存儲器發(fā)出的多個(gè)讀請求而從所述多個(gè)存儲器讀取的數(shù)據(jù)提 供給相應(yīng)的讀引擎,從而防止讀引擎接收的數(shù)據(jù)順序發(fā)生錯(cuò)亂,并且避免數(shù)據(jù)沖突。根據(jù)本發(fā)明的一個(gè)實(shí)施例,提供了一種數(shù)據(jù)處理設(shè)備,用于依序接受由讀引擎向 多個(gè)外部存儲設(shè)備發(fā)出的多個(gè)讀請求,并且將響應(yīng)于所述多個(gè)讀請求而分別從所述多個(gè)外
4部存儲設(shè)備讀取的數(shù)據(jù)依序分配給讀引擎。該數(shù)據(jù)處理設(shè)備包括跟蹤存儲器,用于按照 接受所述多個(gè)讀請求的順序,存儲各個(gè)讀請求的信息,并且按照先入先出的方式輸出各個(gè) 讀請求的所述信息;指針控制器,用于計(jì)算各個(gè)讀請求的寫指針,每個(gè)讀請求的寫指針用于 指示響應(yīng)于該讀請求而從相應(yīng)的外部存儲設(shè)備讀取的數(shù)據(jù)在數(shù)據(jù)存儲器中的存儲地址,其 中,所述寫指針是按照接受所述讀請求的順序依次累加的;所述數(shù)據(jù)存儲器用于接收響應(yīng) 于每個(gè)讀請求而從相應(yīng)的外部存儲設(shè)備讀取的數(shù)據(jù),并且根據(jù)該讀請求的寫指針指示的存 儲地址存儲所接收的數(shù)據(jù);數(shù)據(jù)分配器,用于讀取數(shù)據(jù)存儲器中的數(shù)據(jù),并且根據(jù)跟蹤存 儲器所輸出的每個(gè)讀請求的信息將其分配給相應(yīng)的讀引擎,其中,僅在讀取和分配了對應(yīng) 于在先接受的讀請求的數(shù)據(jù)之后,數(shù)據(jù)分配器才讀取和分配對應(yīng)于在后接受的讀請求的數(shù) 據(jù)。根據(jù)本發(fā)明的另一實(shí)施例,提供了一種數(shù)據(jù)處理方法,用于依序接受由讀引擎向 多個(gè)外部存儲設(shè)備發(fā)出的多個(gè)讀請求,并且將響應(yīng)于所述多個(gè)讀請求而分別從所述多個(gè)外 部存儲設(shè)備讀取的數(shù)據(jù)依序分配給讀引擎,該數(shù)據(jù)處理方法包括以下步驟按照接受所述 多個(gè)讀請求的順序,存儲各個(gè)讀請求的信息于跟蹤存儲器中;計(jì)算各個(gè)讀請求的寫指針,每 個(gè)讀請求的寫指針用于指示響應(yīng)于該讀請求而從相應(yīng)的外部存儲設(shè)備讀取的數(shù)據(jù)在數(shù)據(jù) 存儲器中的存儲地址,其中,所述寫指針是按照接受所述讀請求的順序依次累加的;接收響 應(yīng)于每個(gè)讀請求而從相應(yīng)的外部存儲設(shè)備讀取的數(shù)據(jù),并且根據(jù)該讀請求的寫指針指示的 存儲地址在所述數(shù)據(jù)存儲器內(nèi)存儲所接收的數(shù)據(jù);跟蹤存儲器按照先入先出的方式輸出各 個(gè)讀請求的所述信息;讀取存儲在數(shù)據(jù)存儲器中的對應(yīng)于所述多個(gè)請求的數(shù)據(jù),并且根據(jù) 每個(gè)讀請求的信息將其分配給相應(yīng)的讀引擎,其中,僅在讀取和分配了對應(yīng)于在先接受的 讀請求的數(shù)據(jù)之后,才讀取和分配對應(yīng)于在后接受的讀請求的數(shù)據(jù)。本發(fā)明實(shí)施例的數(shù)據(jù)處理設(shè)備和數(shù)據(jù)處理方法按照所述多個(gè)讀請求被接受的順 序,存儲和分配從存儲器讀取的用于這些讀請求的數(shù)據(jù),從而防止讀引擎接收的數(shù)據(jù)順序 發(fā)生錯(cuò)亂,并且避免了數(shù)據(jù)沖突。
通過結(jié)合附圖對本發(fā)明的實(shí)施例進(jìn)行詳細(xì)描述,本發(fā)明的上述和其它目的、特征、 優(yōu)點(diǎn)將會變得更加清楚,其中圖1是示出根據(jù)本發(fā)明的數(shù)據(jù)讀取設(shè)備的一般性框圖;圖2是示出根據(jù)本發(fā)明第一實(shí)施例的數(shù)據(jù)讀取設(shè)備的框圖;圖3是示出圖2所示的跟蹤FIFO的存儲格式的圖;圖4是示出在圖2所示的路徑狀態(tài)控制器中實(shí)現(xiàn)的有限狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)移圖;圖5A和圖5B是示出根據(jù)本發(fā)明第一實(shí)施例的數(shù)據(jù)處理方法的流程圖;圖6是示出根據(jù)本發(fā)明第二實(shí)施例的數(shù)據(jù)讀取設(shè)備的框圖;圖7是示出圖6所示的跟蹤FIFO的存儲格式的圖;圖8A和圖8B是示出根據(jù)本發(fā)明第二實(shí)施例的數(shù)據(jù)處理方法的流程圖;圖9示意性地示出了根據(jù)本發(fā)明第一實(shí)施例的數(shù)據(jù)處理設(shè)備和根據(jù)本發(fā)明第二 實(shí)施例的數(shù)據(jù)處理設(shè)備的數(shù)據(jù)讀取時(shí)序圖;圖10是示出根據(jù)本發(fā)明第三實(shí)施例的數(shù)據(jù)處理設(shè)備的框圖。
圖11是例示計(jì)算和存儲讀請求的寫指針的方法的圖;圖12是示出圖10所示的第一和第二寫指針FIFO的存儲格式的圖;圖13A至13C是示出根據(jù)本發(fā)明第三實(shí)施例的數(shù)據(jù)處理方法的流程圖。
具體實(shí)施例方式下面將參照附圖來描述根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)處理設(shè)備和數(shù)據(jù)處理方法。在附 圖中,自始至終使用相同的參考標(biāo)號來表示相同的部分。應(yīng)當(dāng)理解這里描述的實(shí)施例僅僅 是說明性的,而不應(yīng)被解釋為限制本發(fā)明的范圍。圖1是示出根據(jù)本發(fā)明的數(shù)據(jù)讀取設(shè)備的一般性框圖。如圖1所示,讀引擎100-1、 100-2和100-3連接到數(shù)據(jù)處理設(shè)備200。數(shù)據(jù)處理設(shè)備200連接到第一存儲器300-1和 第二存儲器300-11。應(yīng)當(dāng)注意,在圖1以及下文所述的各個(gè)實(shí)施例中,雖然只示出了兩個(gè)存 儲器和三個(gè)讀引擎,但是應(yīng)當(dāng)認(rèn)識到,這只是示例性的,實(shí)際上,存儲器和讀引擎的數(shù)目也 可以是其它數(shù)目。在讀引擎100-1、100_2和100-3與同一個(gè)存儲器之間,只存在一條訪問路徑,其 中,從仲裁單元201經(jīng)由數(shù)據(jù)處理單元202到第一存儲器300-1的路徑為路徑I,從仲裁單 元201經(jīng)由數(shù)據(jù)處理單元202到第二存儲器300-11的路徑為路徑II。也就是說,對于每個(gè) 存儲器,這三個(gè)讀引擎共享同一條訪問路徑。讀引擎100-1、100-2或100-3可以分別發(fā)送讀請求REQ_1、REQ_2或REQ_3以訪問 第一存儲器300-1或第二存儲器300-11。該讀請求至少包括PATH標(biāo)志、LEN標(biāo)志和地址 ADDR。PATH標(biāo)志指示該讀請求的目標(biāo)路徑(路徑I或路徑II),從而指示要從中讀取數(shù)據(jù) 的目標(biāo)存儲器。在圖1所示的兩個(gè)存儲器的情況下,PATH標(biāo)志為1比特。為了便于描述, 假設(shè)當(dāng)PATH = 0時(shí),目標(biāo)存儲器為第一存儲器300-1,當(dāng)PATH = 1時(shí),目標(biāo)存儲器為第二存 儲器300-11。LEN標(biāo)志指示該讀請求要讀取的數(shù)據(jù)的長度。作為示例,將LEN標(biāo)志設(shè)為2 比特,其中,當(dāng)LEN = 00時(shí),要讀取1筆數(shù)據(jù),當(dāng)LEN = 01時(shí),要讀取2筆數(shù)據(jù),當(dāng)LEN = 10 時(shí),要讀取3筆數(shù)據(jù),LEN= 11的情況被預(yù)留以供將來使用。在本說明書中,數(shù)據(jù)總線的寬 度為128比特,因此將每筆數(shù)據(jù)設(shè)為128比特,但這不是限制性的,也可以將每筆數(shù)據(jù)設(shè)為 包括其它數(shù)目的比特。地址ADDR指示要讀取的數(shù)據(jù)在目標(biāo)存儲器中的起始存儲地址。由 于數(shù)據(jù)被依序存儲在目標(biāo)存儲器中,因此根據(jù)地址ADDR和LEN標(biāo)志,可以獲得要讀取的全 部數(shù)據(jù)在目標(biāo)存儲器中的地址。此外,所述讀請求還可以包括TYPE標(biāo)志,其指示發(fā)送該讀 請求的讀引擎,在本說明書中,由于使用了三個(gè)讀引擎的示例,因此可以將TYPE標(biāo)志設(shè)為2 比特,其中,當(dāng)TYPE為00,01和01時(shí),對應(yīng)的讀引擎分別為讀引擎100-1、100-2或100-3。 應(yīng)當(dāng)了解,上述PATH標(biāo)志、LEN標(biāo)志和TYPE標(biāo)志的長度和含義僅僅是示例性的,它們可以 根據(jù)讀引擎的數(shù)目、存儲器的數(shù)目、以及要讀取的數(shù)據(jù)長度等變化。數(shù)據(jù)處理設(shè)備200包括仲裁單元201和數(shù)據(jù)處理單元202。仲裁單元201根據(jù)預(yù)定的仲裁算法以及數(shù)據(jù)處理單元202的狀態(tài),對來自讀引擎 100-1,100-2和100-3的讀請求執(zhí)行仲裁,以確定對哪個(gè)讀請求給予許可(grant)。在執(zhí)行 仲裁確定了所述讀請求之后,仲裁單元201向發(fā)送該讀請求的讀引擎發(fā)送ACK信號以通知 其讀請求已經(jīng)獲得許可,從而完成尋址階段的握手(handshake),然后將該讀請求發(fā)送給數(shù) 據(jù)處理單元202以進(jìn)行后續(xù)處理。仲裁單元201使用的仲裁算法可以是固定優(yōu)先級算法或
6循環(huán)(round robin)算法,或者可以是本領(lǐng)域公知的其它仲裁算法。數(shù)據(jù)處理單元202根據(jù)讀請求中的TYPE標(biāo)志,將仲裁單元201發(fā)送的讀請求轉(zhuǎn)發(fā) 給該讀請求的目標(biāo)存儲器,使得該目標(biāo)存儲器(第一存儲器300-1或第二存儲器300-11) 根據(jù)讀請求中的地址ADDR和LEN標(biāo)志而將所請求的數(shù)據(jù)以及指示所述數(shù)據(jù)已經(jīng)就緒的 RRDY信號返回給數(shù)據(jù)處理單元202。然后,數(shù)據(jù)處理單元202執(zhí)行適當(dāng)?shù)目刂疲沟脤㈨憫?yīng)于各個(gè)讀請求而從存儲器 讀取的數(shù)據(jù)按照仲裁單元201發(fā)送讀請求的順序發(fā)送給相應(yīng)的讀引擎。下面,將參照具體的實(shí)施例來描述根據(jù)本發(fā)明的數(shù)據(jù)處理設(shè)備和數(shù)據(jù)處理方法。(第一實(shí)施例)首先,將參照圖2來描述根據(jù)本發(fā)明第一實(shí)施例的數(shù)據(jù)處理設(shè)備。如圖2所示,根據(jù)本發(fā)明第一實(shí)施例的數(shù)據(jù)處理設(shè)備400包括仲裁單元401和數(shù) 據(jù)處理單元402(為清楚起見,以虛線示出)。仲裁單元401相當(dāng)于圖1所示的仲裁單元201, 數(shù)據(jù)處理單元402相當(dāng)于圖1所示的數(shù)據(jù)處理單元202,數(shù)據(jù)處理單元402包括用于路徑I 的第一請求先入先出存儲器(FIFO) 4021、用于路徑II的第二請求FIFO 4022、路徑狀態(tài)控 制器4023、跟蹤(tracking) FIFO 4024、選擇器4025和4026、以及讀取數(shù)據(jù)分配器4027,其 中,路徑I是從仲裁單元401經(jīng)由第一請求FIFO 4021到第一存儲器300-1的訪問路徑,路 徑II是從仲裁單元401經(jīng)由第二請求FIFO 4022到第二存儲器300-11的訪問路徑。當(dāng)讀引擎100-1、100-2和100-3分別發(fā)出讀請求REQ_1、REQ_2和REQ_3時(shí),仲裁 單元401首先根據(jù)預(yù)定仲裁算法執(zhí)行仲裁以便確定接收哪個(gè)讀請求于數(shù)據(jù)處理設(shè)備400中 進(jìn)行處理。為了便于描述,在這里假設(shè)仲裁單元401決定接收來自讀引擎100-1的讀請求 REQ_1。然后,仲裁單元401將讀請求REQ_1中的PATH標(biāo)志提供給路徑狀態(tài)控制器4023, 使得路徑狀態(tài)控制器4023檢查當(dāng)前工作路徑(即,當(dāng)前正在其上執(zhí)行讀請求的訪問路徑), 并且判斷當(dāng)前工作路徑是否與讀請求REQ_1的目標(biāo)路徑相同。如果當(dāng)前工作路徑與讀請 求REQ_1的目標(biāo)路徑相同,則仲裁單元401在當(dāng)前工作路徑上執(zhí)行與讀請求REQ_1相關(guān)聯(lián) 的事務(wù),即,根據(jù)讀請求REQ_1中的PATH標(biāo)志的值,將讀請求REQ_1發(fā)送給第一請求FIFO 4021 (當(dāng)PATH = 0時(shí))或第二請求FIFO 4022 (當(dāng)PATH = 1時(shí))以及跟蹤FIF04024,以進(jìn) 一步確定是否向讀請求REQ_1給予許可。反之,如果當(dāng)前工作路徑與讀請求REQ_1的目標(biāo)路 徑不同,則仲裁單元401保持(hold)讀請求REQ_1,并且直到跟蹤緩沖器4024變空且路徑 狀態(tài)控制器4023將當(dāng)前工作路徑切換為讀請求REQ_1的目標(biāo)路徑時(shí),才將該讀請求REQ_1 發(fā)送給第一請求FIFO 4021或第二請求FIFO 4022以及跟蹤FIFO 4024。接著,當(dāng)與讀請求 REQ_1相對應(yīng)的請求FIFO和跟蹤FIFO 4024均未滿時(shí),仲裁單元401向讀引擎100-1發(fā)送 ACK信號以通知讀請求REQ_1已經(jīng)獲得許可(被接受),從而完成尋址階段的握手。反之, 當(dāng)這兩個(gè)FIFO中的任何一個(gè)已滿時(shí),握手失敗,此時(shí)仲裁單元401保持所述讀請求,而不發(fā) 送ACK信號。其中,第一請求FIFO 4021用于存儲訪問第一存儲器300-1的讀請求。即在讀請求 REQ.1的目標(biāo)路徑為路徑I的情況下,當(dāng)從仲裁單元401接收到該讀請求時(shí),第一請求FIFO 4021檢查自己的存儲空間是否已滿,并且將該檢查結(jié)果通知給仲裁單元401。第二請求FIFO 4022用于暫存訪問第二存儲器300-11的讀請求。即在讀請求REQ_1的目標(biāo)路徑為路徑II的情況下,當(dāng)從仲裁單元401接收到該讀請求時(shí),第二請求 FIFO 4022檢查自己的存儲空間是否已滿,并且將該檢查結(jié)果通知給仲裁單元401。第一請求FIFO 4021和第二請求FIFO 4022以乒乓方式(ping-pong)工作,使得 將存儲在這兩個(gè)FIFO中的讀請求依序輸出到第一存儲器300-1或第二存儲器300-11。這 兩個(gè)FIFO的大小可以根據(jù)實(shí)際需要設(shè)定,在本實(shí)施例中,作為示例,將它們的大小均設(shè)置 為2X30比特。跟蹤FIFO 4024用于存儲讀請求的TYPE標(biāo)志和LEN標(biāo)志。該存儲是在完成尋址 階段的握手時(shí)進(jìn)行的。與上述第一請求FIFO 4021和第二請求FIF04022類似,當(dāng)從仲裁單 元401接收到讀請求REQ_1時(shí),跟蹤FIFO 4024也會檢查自己的存儲空間是否已滿,并且將 該檢查結(jié)果通知給仲裁單元401。當(dāng)跟蹤FIFO 4024為空時(shí),其可主動地或者響應(yīng)于路徑 狀態(tài)控制器4023的請求而將跟蹤FIFO空標(biāo)志輸出到路徑狀態(tài)控制器4023。之后,當(dāng)跟蹤 FIFO 4024從選擇器4025接收到來自第一存儲器300-1的RRDY_I信號或來自第二存儲器 300-11的RRDY_II信號時(shí),跟蹤FIFO 4024按照先入先出的方式依序輸出最前面的讀請求 (即,當(dāng)前讀請求)的TYPE標(biāo)志和LEN標(biāo)志至讀取數(shù)據(jù)分配器4027。在本實(shí)施例中,將跟蹤FIFO 4024設(shè)置為最多可以存儲32個(gè)讀請求的TYPE標(biāo)志 和LEN標(biāo)志,由于每個(gè)讀請求的TYPE標(biāo)志和LEN標(biāo)志均為2比特,因此,跟蹤FIFO 4024的 大小為32X4比特。圖3示出了跟蹤FIFO 4024的存儲格式。如圖3所示,用于每個(gè)讀請 求的條目包括2比特的LEN標(biāo)志(LEN0和LEW)和2比特的TYPE標(biāo)志(TYPE0和TYPE1)。 當(dāng)然,跟蹤FIFO 4024的大小也可以根據(jù)需要而設(shè)為其它值。路徑狀態(tài)控制器4023用于根據(jù)從仲裁單元401接收的讀請求的目標(biāo)路徑以及跟 蹤FIFO 4024是否為空來控制當(dāng)前工作路徑在路徑I和路徑II之間的切換,并且將指示當(dāng) 前工作路徑的路徑狀態(tài)信號輸出到選擇器4025和4026的控制端(sel)。具體地,在數(shù)據(jù) 處理設(shè)備400啟動的時(shí)候,從仲裁單元401接收到第一個(gè)讀請求時(shí),路徑狀態(tài)控制器4023 將該讀請求的目標(biāo)路徑設(shè)為當(dāng)前工作路徑。之后,每當(dāng)從仲裁單元401接收到后續(xù)的讀請 求時(shí),路徑狀態(tài)控制器4023都查看當(dāng)前工作路徑,并且檢查該讀請求的目標(biāo)路徑是否與當(dāng) 前工作路徑相同。如果這兩個(gè)路徑相同,則路徑狀態(tài)控制器4023不需切換當(dāng)前工作路徑, 從而數(shù)據(jù)處理單元402在當(dāng)前工作路徑上繼續(xù)處理后續(xù)的讀請求。反之,當(dāng)這兩個(gè)路徑不 同時(shí),路徑狀態(tài)控制器4023進(jìn)一步檢查跟蹤FIFO 4024是否為空(例如,通過從跟蹤FIFO 4024輸出的跟蹤FIFO空標(biāo)志來檢測),以確定當(dāng)前工作路徑上的所有讀請求是否都已經(jīng)處 理完畢。只有在所接收的讀請求的目標(biāo)路徑與當(dāng)前工作路徑不同,且跟蹤FIFO 4024為空 (即,當(dāng)前工作路徑上的所有讀請求都已經(jīng)處理完畢)時(shí),路徑狀態(tài)控制器4023才會將當(dāng)前 工作路徑切換為所接收的讀請求的目標(biāo)路徑,從而在新的當(dāng)前工作路徑上處理所接收的讀 請求。實(shí)際上,路徑狀態(tài)控制器4023形成圖4所示的有限狀態(tài)機(jī)。如圖4所示,該狀態(tài) 機(jī)具有兩個(gè)狀態(tài),即,“路徑I”和“路徑II”,這兩個(gè)狀態(tài)分別表示當(dāng)前工作路徑為路徑I和 當(dāng)前工作路徑為路徑II。當(dāng)該狀態(tài)機(jī)處于“路徑I”狀態(tài)時(shí),只有在所接收的讀請求的目標(biāo) 路徑為路徑II且跟蹤FIFO 4024為空時(shí),該狀態(tài)機(jī)才轉(zhuǎn)移到“路徑II ”狀態(tài),即,路徑狀態(tài) 控制器4023將當(dāng)前工作路徑切換為路徑II,對于其它情況,該狀態(tài)機(jī)的狀態(tài)不發(fā)生轉(zhuǎn)移。 另一方面,當(dāng)該狀態(tài)機(jī)處于“路徑II”狀態(tài)時(shí),只有在所接受的讀請求的目標(biāo)路徑為路徑I
8且跟蹤FIFO 4024為空時(shí),該狀態(tài)機(jī)才轉(zhuǎn)移到“路徑I”狀態(tài),對于其他情況,該狀態(tài)機(jī)的狀 態(tài)不發(fā)生轉(zhuǎn)移。當(dāng)完成尋址階段的握手時(shí),與讀請求REQ_1相對應(yīng)的請求FIFO存儲該讀請求中的 地址ADDR和LEN標(biāo)志,跟蹤FIFO 4024存儲該讀請求中的TYPE標(biāo)志和LEN標(biāo)志。之后,第 一請求FIFO 4021或第二請求FIFO 4022將這些讀請求依序發(fā)送到第一存儲器300-1或第 二存儲器300-11。作為對所述讀請求的響應(yīng),第一存儲器300-1或第二存儲器300-11向相應(yīng)的請求 FIFO發(fā)送ACK信號(ACK_I或ACK_II),然后經(jīng)過一段響應(yīng)時(shí)間之后,將所請求的數(shù)據(jù)(數(shù)據(jù) _1或數(shù)據(jù)_11)輸出到選擇器4026,同時(shí)將指示所述數(shù)據(jù)已經(jīng)就緒的RRDY_I信號或RRDY_ II信號輸出到選擇器4025。如本領(lǐng)域公知的,對于存儲器輸出的每筆數(shù)據(jù),都伴隨有一個(gè) RRDY_I信號或RRDY_II信號。選擇器4025根據(jù)來自路徑狀態(tài)控制器4023的路徑狀態(tài)信號而將RRDY_I信號或 RRDY-II信號作為RRDY信號而輸出到跟蹤FIFO 4024和讀取數(shù)據(jù)分配器4027。例如,當(dāng)路 徑狀態(tài)信號值為0時(shí),選擇器4025輸出RRDY_I信號作為RRDY信號,而當(dāng)路徑狀態(tài)信號值 為1時(shí),選擇器4025輸出RRDY_II信號作為RRDY信號。選擇器4026根據(jù)所述路徑狀態(tài)信號而將來自第一存儲器300-1或第二存儲器 300-11的數(shù)據(jù)輸出到讀取數(shù)據(jù)分配器4027。具體地,當(dāng)路徑狀態(tài)信號指示當(dāng)前工作路徑為 路徑I時(shí),選擇器4026輸出來自第一存儲器300-1的數(shù)據(jù),而當(dāng)路徑狀態(tài)信號指示當(dāng)前工 作路徑為路徑II時(shí),選擇器4026輸出來自第二存儲器300-11的數(shù)據(jù)。讀取數(shù)據(jù)分配器4027不斷地檢查是否接收到RRDY_I信號或RRDY_II信號,并且 在接收到它們中的任何一個(gè)時(shí),從跟蹤FIFO 4024讀取當(dāng)前讀請求的TYPE標(biāo)志和LEN標(biāo) 志,并且根據(jù)這兩個(gè)標(biāo)志確定發(fā)出該讀請求的讀引擎以及所請求的數(shù)據(jù)長度L(筆數(shù))。然 后,讀取數(shù)據(jù)分配器4027接收從選擇器4026輸出的長度L的數(shù)據(jù),并且將該數(shù)據(jù)與從選擇 器4025輸出的相應(yīng)的RRDY信號一起分配給到所確定的讀引擎。對于跟蹤FIFO 4024中記錄的每個(gè)讀請求,讀取數(shù)據(jù)分配器4027都執(zhí)行上述操 作,從而將響應(yīng)于各個(gè)讀請求而從存儲器讀取的數(shù)據(jù)并分配給相應(yīng)的讀引擎。在根據(jù)第一實(shí)施例的數(shù)據(jù)處理設(shè)備中,通過使用請求FIFO和跟蹤FIFO,各個(gè)讀引 擎發(fā)送的針對同一存儲器的讀請求被依序接收和處理,并且響應(yīng)于這些讀請求而從該存儲 器輸出的數(shù)據(jù)被按照相同的順序返回給相應(yīng)的讀引擎。另一方面,通過路徑狀態(tài)控制器的 控制,只有在一條訪問路徑上的跟蹤FIFO內(nèi)的所有讀請求都已經(jīng)處理完畢時(shí),才能開始執(zhí) 行另一條訪問路徑上的讀請求,使得針對不同存儲器的讀請求被分時(shí)處理。由此,即使各個(gè) 存儲器的響應(yīng)時(shí)間不同,根據(jù)各個(gè)讀請求讀取的數(shù)據(jù)也會以正確的順序被分配給相應(yīng)的讀 引擎。從而避免了數(shù)據(jù)順序錯(cuò)亂和數(shù)據(jù)沖突的問題。下面,參照圖5A和圖5B來描述根據(jù)本發(fā)明第一實(shí)施例的數(shù)據(jù)處理方法。該數(shù)據(jù) 處理方法是由圖2所示的數(shù)據(jù)處理設(shè)備400執(zhí)行的。圖5A是示出根據(jù)本發(fā)明第一實(shí)施例的數(shù)據(jù)處理方法的尋址階段的操作的流程 圖。如圖5A所示,在步驟S1001,仲裁單元401判斷讀引擎100-1、100-2和100-3是否發(fā)出 了讀請求。如果所述讀引擎沒有發(fā)出讀請求,則該過程返回步驟S1001。反之,如果所述讀引 擎發(fā)出了讀請求,則在步驟S1002,仲裁單元401根據(jù)預(yù)定仲裁算法執(zhí)行仲裁,以確定將哪個(gè)讀請求接收到數(shù)據(jù)處理設(shè)備400中。在這里,假設(shè)仲裁單元401決定接收讀請求REQ_1。然后,在步驟S1003,路徑狀態(tài)控制器4023檢查當(dāng)前工作路徑,然后在步驟S1004, 確定讀請求REQ_1的目標(biāo)路徑是否與當(dāng)前工作路徑相同。路徑狀態(tài)控制器4023可以根據(jù) 仲裁單元401提供的讀請求REQ_1中的PATH標(biāo)志來檢查讀請求REQ_1的目標(biāo)路徑,從而執(zhí) 行所述確定。如果在步驟S1004中確定所述目標(biāo)路徑與當(dāng)前工作路徑相同,則讀請求REQ_1與 在當(dāng)前工作路徑上正在執(zhí)行的讀請求針對的是同一存儲器,此時(shí)不需要切換工作路徑。因 此,在步驟S1005,仲裁單元401開始在當(dāng)前工作路徑上執(zhí)行與所述讀請求相關(guān)聯(lián)的事務(wù), 即,根據(jù)讀請求REQ_1中的PATH標(biāo)志的值,將讀請求REQ_1發(fā)送給與其對應(yīng)的請求FIFO (第 一請求FIFO 4021或第二請求FIFO 4022)以及跟蹤FIFO 4024。接下來,在步驟S1006,仲裁單元401確定與讀請求REQ_1對應(yīng)的請求FIFO以及跟 蹤FIFO 4024是否已滿,以確定是否向讀請求REQ_1給予許可。具體地,如果與讀請求REQ_1 對應(yīng)的請求FIFO為第一請求FIFO 4021,則響應(yīng)于仲裁單元401發(fā)送的讀請求REQ_1,第一 請求FIFO 4021檢查自己的存儲空間是否已滿,并且將該檢查結(jié)果通知給仲裁單元401,反 之,如果與讀請求REQ_1對應(yīng)的請求FIFO為第二請求FIFO 4022,則響應(yīng)于仲裁單元401發(fā) 送的讀請求REQ_1,第二請求FIFO 4022檢查自己的存儲空間是否已滿,并且該檢查結(jié)果通 知給仲裁單元401。此外,跟蹤FIFO 4024也響應(yīng)于該讀請求REQ_1而檢查自己的存儲空 間是否已滿,并且將該檢查結(jié)果通知給仲裁單元401。然后,仲裁單元401通過查看與讀請 求REQ_1對應(yīng)的請求FIFO以及跟蹤FIFO 4024的檢查結(jié)果,來執(zhí)行步驟S1006中的確定操 作。如果在步驟S1006中確定與讀請求REQ_1對應(yīng)的請求FIFO以及跟蹤FIFO 4024中 的至少一個(gè)已滿,則握手失敗,該過程返回步驟S1005,以等待該已滿的FIFO釋放出空間。 反之,如果這兩個(gè)FIFO均未滿,則在步驟S1007,仲裁單元401向讀引擎100-1發(fā)送ACK信 號以通知其讀請求已經(jīng)獲得許可,從而完成握手。然后,在步驟S1008中,與讀請求REQ_1對應(yīng)的請求FIFO以及跟蹤FIF04024分別 存儲與該讀請求有關(guān)的信息。具體地,與讀請求REQ_1對應(yīng)的請求FIFO存儲讀請求REQ_1 中的地址ADDR和LEN標(biāo)志,跟蹤FIFO 4024存儲讀請求REQ_1中的TYPE標(biāo)志和LEN標(biāo)志。另一方面,當(dāng)在步驟S1004確定讀請求REQ_1的目標(biāo)路徑與當(dāng)前工作路徑不同時(shí), 該過程進(jìn)行到步驟S1009,在該步驟中,仲裁單元401保持讀請求REQ_1,并且檢查跟蹤FIFO 4024是否為空,以確定當(dāng)前工作路徑上的所有讀請求是否都已經(jīng)處理完畢。如果跟蹤FIFO 4024不為空,則該過程返回步驟S1009,以等待跟蹤FIFO 4024變空。反之,如果跟蹤FIFO 4024為空,則當(dāng)前工作路徑上的所有讀請求已經(jīng)處理完畢,此時(shí),在步驟S1010,路徑狀態(tài) 控制器4023將當(dāng)前工作路徑切換為讀請求REQ_1的目標(biāo)路徑。然后,該過程進(jìn)行到步驟 S1005,并且按照上述方式執(zhí)行該步驟以及隨后的步驟。當(dāng)執(zhí)行完步驟S1008之后,針對讀請求REQ_1的尋址階段結(jié)束。對于從讀引擎100-1、100_2和100-3發(fā)送的每個(gè)讀請求,都執(zhí)行圖5A所示的操 作,使得按照接受各個(gè)讀請求的順序,將各個(gè)讀請求被依序存儲在相應(yīng)的請求FIFO和跟蹤 FIFO 4024 中。存儲在第一請求FIFO 4021或第二請求FIFO 4022中的讀請求根據(jù)PATH標(biāo)志的值而被依序發(fā)送給第一存儲器300-1或第二存儲器300-11。接收到該讀請求的存儲器根 據(jù)該請求中的地址ADDR和LEN標(biāo)志,將所請求的數(shù)據(jù)輸出到選擇器4026,同時(shí)將指示所述 數(shù)據(jù)已經(jīng)就緒的RRDY_I或RRDY_II信號輸出到選擇器4025。選擇器4025和4026根據(jù)路 徑狀態(tài)控制器4023施加到其控制端的路徑狀態(tài)信號而分別選擇性地輸出來自第一存儲器 300-1的RRDY_I信號和數(shù)據(jù)或者來自第二存儲器300-11的RRDY_II信號和數(shù)據(jù)。如上所 述,對于每筆數(shù)據(jù),伴隨有一個(gè)RRDY信號。在執(zhí)行了針對每個(gè)讀請求的尋址階段的操作之后,經(jīng)過一段響應(yīng)時(shí)間,開始執(zhí)行 該讀請求的數(shù)據(jù)階段的操作。圖5B示出了本發(fā)明第一實(shí)施例的數(shù)據(jù)處理方法的數(shù)據(jù)階段 的操作的流程圖。如圖5B所示,在步驟S1101中,讀取數(shù)據(jù)分配器4027確定是否接收到來自第一存 儲器300-1的RRDY_I信號或者來自第二存儲器300-11的RRDY_II信號。如果沒有接收到來自RRDY_I信號和RRDY_II信號中的任何一個(gè),則該過程返回步 驟S1101。反之,如果接收到RRDY_I信號或RRDY_II信號,則在步驟S1102,讀取數(shù)據(jù)分配 器4027讀取由跟蹤FIFO 4024輸出的當(dāng)前讀請求的TYPE標(biāo)志和LEN標(biāo)志,并且確定發(fā)送 當(dāng)前讀請求的讀引擎以及該讀請求要讀取的數(shù)據(jù)長度L。然后,在步驟S1103,讀取數(shù)據(jù)分配器4027讀取從選擇器4026輸出的一筆數(shù)據(jù),并 且將該筆數(shù)據(jù)與指示該筆數(shù)據(jù)已經(jīng)就緒的RRDY信號一起發(fā)送給所確定的讀引擎。接下來,在步驟S1104,讀取數(shù)據(jù)分配器4027確定是否已經(jīng)讀取了所請求的數(shù)據(jù) 長度(即,長度L)的數(shù)據(jù)。如果尚未讀取所請求的數(shù)據(jù)長度的數(shù)據(jù),則說明該讀請求所請求的數(shù)據(jù)尚未被讀 取完畢,因此,該過程進(jìn)行到步驟S1105,其中,讀取數(shù)據(jù)分配器4027確定是否接收到RRDY_ I信號或RRDY_II信號。當(dāng)接收到RRDY_I信號或RRDY_II信號時(shí),該過程進(jìn)行到步驟S1103, 并且按照上述方式執(zhí)行后續(xù)步驟。反之,如果沒有接收到任何一個(gè)RRDY信號,則該過程返 回步驟S1105。另一方面,如果在步驟S1104確定已經(jīng)讀取了所請求的數(shù)據(jù)長度的數(shù)據(jù),則說明 該讀請求所請求的數(shù)據(jù)都已經(jīng)被發(fā)送給讀引擎,因此,針對跟蹤FIF04024中的當(dāng)前讀請求 的數(shù)據(jù)階段的操作結(jié)束。對于跟蹤FIFO 4024中存儲的每個(gè)讀請求,讀取數(shù)據(jù)分配器4027都執(zhí)行圖5B所 示的操作,從而完成針對各個(gè)讀請求的數(shù)據(jù)讀取和分配??梢钥吹?,在根據(jù)本發(fā)明第一實(shí)施例的數(shù)據(jù)處理方法中,針對同一存儲器的讀請 求被依序處理,同時(shí),由于路徑I和路徑II分時(shí)工作,針對不同存儲器的讀請求在時(shí)間上被 分開處理。由此,避免了數(shù)據(jù)順序錯(cuò)亂或者數(shù)據(jù)沖突的問題。然而,從另一角度來說,由于這兩條路徑不能同時(shí)工作,因此在當(dāng)前工作路徑上的 讀請求尚未處理完畢的情況下,目標(biāo)路徑與當(dāng)前工作路徑不同的讀請求不會獲得許可,這 使得讀請求的處理效率較低,從而根據(jù)本發(fā)明第一實(shí)施例的數(shù)據(jù)處理設(shè)備和數(shù)據(jù)處理方法 性能較差。為了解決這一問題,提出了根據(jù)本發(fā)明第二實(shí)施例的數(shù)據(jù)處理設(shè)備和數(shù)據(jù)處理 方法。(第二實(shí)施例)首先,將參照圖6來描述根據(jù)本發(fā)明第二實(shí)施例的數(shù)據(jù)處理設(shè)備。
11
如圖6所示,根據(jù)本發(fā)明第二實(shí)施例的數(shù)據(jù)處理設(shè)備600包括仲裁單元601和數(shù) 據(jù)處理單元602(為清楚起見,以虛線示出)。仲裁單元601相當(dāng)于圖1所示的仲裁單元 201,數(shù)據(jù)處理單元602相當(dāng)于圖1所示的數(shù)據(jù)處理單元202,并且包括用于路徑I的第一請 求FIFO 6021、用于路徑II的第二請求FIFO 6022、跟蹤FIFO 6024、選擇器6025和6026、讀 取數(shù)據(jù)分配器6027、用于第一存儲器300-1的第一數(shù)據(jù)FIFO 6028、用于第二存儲器300-11 的第二數(shù)據(jù)FIFO 6029、以及反相器6030。第二實(shí)施例中的路徑I和路徑II與第一實(shí)施例 相同。當(dāng)讀引擎100-1、100-2或100-3發(fā)出讀請求時(shí),仲裁單元601根據(jù)預(yù)定仲裁算法 執(zhí)行仲裁以便確定將哪個(gè)讀請求接收到數(shù)據(jù)處理設(shè)備600中以進(jìn)行后續(xù)處理。假設(shè)仲裁單 元601決定接收來自讀引擎100-1的讀請求REQ_1。然后,仲裁單元601根據(jù)讀請求REQ_1中的PATH標(biāo)志,將讀請求REQ_1發(fā)送給與 其對應(yīng)的請求FIFO(第一請求FIFO 6021或第二請求FIFO 6022)。此外,仲裁單元601還 將讀請求REQ_1發(fā)送到跟蹤FIFO 6024。第一請求FIFO 6021和第二請求FIFO 6022分別與圖2所示的第一請求FIFO 4021和第二請求FI0 4022相同。當(dāng)?shù)谝徽埱驠IFO 6021或第二請求FIF06022接收到讀請 求時(shí),其檢查自己的存儲空間是否已滿,并且將該檢查結(jié)果通知給仲裁單元601。跟蹤FIFO 6024與圖2所示的跟蹤FIFO 4024略有不同。具體地,除了存儲讀請 求REQ_1的TYPE標(biāo)志和LEN標(biāo)志以外,跟蹤FIFO 6024還存儲該讀請求的PATH標(biāo)志。該 存儲是在完成尋址階段的握手時(shí)進(jìn)行的。由于PATH標(biāo)志為1比特,因此跟蹤FIFO 6024的 大小為32X5比特,其存儲格式如圖7所示。此外,跟蹤FIFO 6024將指示最前面的讀請求 (當(dāng)前讀請求)的目標(biāo)路徑的PATH_F信號輸出到選擇器6025和6026的控制端以及第二數(shù) 據(jù)FIF06029,該P(yáng)ATH_F信號還經(jīng)由反相器6030輸出到第一數(shù)據(jù)FIFO 6028。當(dāng)接收到仲裁單元601發(fā)送的讀請求REQ_1時(shí),跟蹤FIFO 6024檢查自己的存儲 空間是否已滿,并且將該檢查結(jié)果通知給仲裁單元601。仲裁單元601根據(jù)與讀請求REQ_1對應(yīng)的請求FIFO和跟蹤FIFO 6024通知的檢 查結(jié)果,確定是否向讀請求REQ_1給予許可。具體地,當(dāng)與讀請求REQ_1對應(yīng)的請求FIFO 和跟蹤FIFO 6024均未滿時(shí),仲裁單元601向發(fā)送該讀請求的讀引擎100-1發(fā)送ACK信號 以通知其讀請求已經(jīng)獲得許可,從而完成尋址階段的握手。反之,如果所述請求FIFO和跟 蹤FIFO 6024中的至少一個(gè)已滿,則握手失敗,此時(shí),仲裁單元601保持所述讀請求,而不發(fā) 送所述ACK信號。當(dāng)完成尋址階段的握手時(shí),與讀請求REQ_1對應(yīng)的請求FIFO存儲讀請求REQ_1中 的地址ADDR和LEN標(biāo)志,跟蹤FIFO 6024存儲讀請求REQ_1中的TYPE標(biāo)志、LEN標(biāo)志和 PATH標(biāo)志。之后,第一請求FIFO 6021或第二請求FIFO 6022將這些讀請求依序發(fā)送到第 一存儲器300-1或第二存儲器300-11。作為對所述讀請求的響應(yīng),第一存儲器300-1或第二存儲器300-11向相應(yīng)的請求 FIFO發(fā)送ACK信號(ACK_I或ACK_II),然后經(jīng)過一段響應(yīng)時(shí)間之后,輸出所請求的數(shù)據(jù)(數(shù) 據(jù)_1或數(shù)據(jù)_11)以及相應(yīng)的讀取就緒信號(RRDY_I信號或RRDY_II信號)。第一數(shù)據(jù)FIFO 6028響應(yīng)于RRDY_I信號而存儲從存儲器300-1讀取的數(shù)據(jù)。第 二數(shù)據(jù)FIFO 6029響應(yīng)于RRDY_II信號而存儲從存儲器300-11讀取的數(shù)據(jù)。在本實(shí)施例中,這兩個(gè)數(shù)據(jù)FIFO的大小均設(shè)置為128 X 128比特。當(dāng)跟蹤FIFO 6024輸出的PATH_F信 號為0(路徑I)時(shí),第一數(shù)據(jù)FIFO 6028按照先入先出的方式將存儲在其中的數(shù)據(jù)輸出到 選擇器6026的第一輸入端,并且將指示第一數(shù)據(jù)FIFO 6028非空的第一數(shù)據(jù)FIFO狀態(tài)信 號輸出到選擇器6025的第一輸入端,此時(shí)第二數(shù)據(jù)FIFO 6029不輸出數(shù)據(jù)。反之,當(dāng)PATH_ F信號為1(路徑II)時(shí),第二數(shù)據(jù)FIFO 6029按照先入先出的方式將存儲在其中的數(shù)據(jù)輸 出到選擇器6026的第二輸入端,并且將指示第二數(shù)據(jù)FIFO 6029非空的第二數(shù)據(jù)FIFO狀 態(tài)信號輸出到選擇器6025的第二輸入端,此時(shí)第一數(shù)據(jù)FIFO 6028不輸出數(shù)據(jù)。選擇器6025根據(jù)從跟蹤FIFO 6024施加到其控制端的PATH_F信號(例如,0和 1),選擇性地輸出其第一輸入端的信號(第一數(shù)據(jù)FIFO狀態(tài)信號)(PATH_F = 0時(shí))或其 第二輸入端的信號(第二數(shù)據(jù)FIFO狀態(tài)信號)(PATH_F= 1時(shí)),作為要輸出到讀引擎的 RRDY信號。選擇器6026根據(jù)從跟蹤FIFO 6024施加到其控制端的所述PATH_F信號的值,選 擇性地將其第一輸入端的數(shù)據(jù)(來自第一數(shù)據(jù)FIFO 6028的數(shù)據(jù)_I) (PATH_F = 0時(shí))或 且第二輸入端的數(shù)據(jù)(來自第二數(shù)據(jù)FIFO 6029的數(shù)據(jù)_II) (PATH_F = 1時(shí))輸出到讀取 數(shù)據(jù)分配器6027。讀取數(shù)據(jù)分配器6027將從選擇器6025輸出的RRDY信號和從選擇器6026輸出的 數(shù)據(jù)輸出到對應(yīng)的讀引擎。具體地,讀取數(shù)據(jù)分配器6027不斷地檢查跟蹤FIFO 6024是否 為空,以確定是否存在要處理的讀請求。如果跟蹤FIFO 6024為空,則不存在要處理的讀 請求,因此讀取數(shù)據(jù)分配器6027不對數(shù)據(jù)FIFO執(zhí)行數(shù)據(jù)讀取操作。反之,如果跟蹤FIFO 6024非空,則讀取數(shù)據(jù)分配器6027從跟蹤FIFO 6024讀取PATH_F信號,并且根據(jù)PATH_F 信號的值來確定應(yīng)當(dāng)從哪個(gè)數(shù)據(jù)FIFO讀取數(shù)據(jù)。當(dāng)PATH_F = 0時(shí),應(yīng)當(dāng)從第一數(shù)據(jù)FIFO 6028讀取數(shù)據(jù),因此,讀取數(shù)據(jù)分配器6027檢查第一數(shù)據(jù)FIFO 6028的存儲狀態(tài),并且確定 第一數(shù)據(jù)FIFO 6028是否為空,而當(dāng)PATH_F= 1時(shí),應(yīng)當(dāng)從第二數(shù)據(jù)FIFO 6029讀取數(shù)據(jù), 因此,讀取數(shù)據(jù)分配器6027檢查第一數(shù)據(jù)FIFO 6028的存儲狀態(tài),并且確定第一數(shù)據(jù)FIFO 6028是否為空。在PATH_F = 0的情況下,如果第一數(shù)據(jù)FIFO 6028為空,則說明所述讀請求所請 求的數(shù)據(jù)尚未從存儲器返回,因此,讀取數(shù)據(jù)分配器6027不執(zhí)行數(shù)據(jù)讀取操作。反之,如果 第一數(shù)據(jù)FIFO 6028非空,則讀取數(shù)據(jù)分配器6027從跟蹤FIFO 6024讀取當(dāng)前讀請求的 TYPE標(biāo)志和LEN標(biāo)志以確定發(fā)送該讀請求的讀引擎以及所請求的數(shù)據(jù)長度L,然后將從選 擇器6026輸出的長度L的數(shù)據(jù)和從選擇器6025輸出的對應(yīng)的RRDY信號發(fā)送給所確定的 讀引擎。在PATH_F= 1的情況下,除了將第一數(shù)據(jù)FIFO 6028替換為第二數(shù)據(jù)FIF06029 以外,讀取數(shù)據(jù)分配器6027執(zhí)行與上面所述相同的操作,在這里不再贅述。對于跟蹤FIFO 6024中記錄的每個(gè)讀請求,讀取數(shù)據(jù)分配器6027都執(zhí)行上述操 作,從而將響應(yīng)于各個(gè)讀請求而從存儲器讀取的數(shù)據(jù)并分配給相應(yīng)的讀引擎。在根據(jù)本發(fā)明第二實(shí)施例的數(shù)據(jù)處理設(shè)備中,響應(yīng)于針對不同存儲器的讀請求而 從存儲器讀取的數(shù)據(jù)被存儲在不同的數(shù)據(jù)FIFO中,并且各個(gè)讀請求的信息被依序存儲在 跟蹤FIFO中。由此,在分配數(shù)據(jù)時(shí),利用從跟蹤FIFO依序輸出的指示各個(gè)讀請求的目標(biāo)路 徑的PATH_F標(biāo)志,可以準(zhǔn)確地找到存儲用于該讀請求的數(shù)據(jù)的數(shù)據(jù)FIFO并且將其分配給 相應(yīng)的讀引擎,從而避免了數(shù)據(jù)順序錯(cuò)亂和數(shù)據(jù)沖突的問題。
下面,參照圖8A和圖8B來描述根據(jù)本發(fā)明第二實(shí)施例的數(shù)據(jù)處理方法。該數(shù)據(jù) 處理方法是由圖6所示的數(shù)據(jù)處理設(shè)備600執(zhí)行的。圖8A是出根據(jù)本發(fā)明第二實(shí)施例的 數(shù)據(jù)處理方法的尋址階段的操作的流程圖,圖8B是示出根據(jù)本發(fā)明第二實(shí)施例的數(shù)據(jù)處 理方法的數(shù)據(jù)階段的操作的流程圖。 如圖8A所示,在步驟S2001,仲裁單元601判斷讀引擎100-1、100-2和100-3是否 發(fā)出了讀請求。如果所述讀引擎沒有發(fā)出讀請求,則該過程返回步驟S2001。反之,如果所 述讀引擎發(fā)出了讀請求,則在步驟S2002,仲裁單元601根據(jù)預(yù)定仲裁算法執(zhí)行仲裁,以確 定將哪個(gè)讀請求接收到數(shù)據(jù)處理設(shè)備600中。在這里,假設(shè)仲裁單元601決定接收來自讀 引擎100-1的讀請求REQ_1。然后,在步驟S2003,仲裁單元601檢查與讀請求REQ_1相對應(yīng)的請求FIFO(第一 請求FIFO 6021或第二請求FIFO 6022)以及跟蹤FIFO 6024是否已滿。如果與讀請求REQ_1相對應(yīng)的請求FIFO和跟蹤FIFO 6024中的至少一個(gè)已滿,則 該過程返回步驟S2003,以等待已滿的FIFO釋放出空間。反之,如果與讀請求REQ_1相對應(yīng) 的請求FIFO和跟蹤FIFO 6024均未滿,則該過程進(jìn)行到步驟S2004,其中,仲裁單元601向 發(fā)送讀請求REQ_1的讀引擎100-1發(fā)送ACK信號以通知其讀請求已經(jīng)獲得許可,從而完成 尋址階段的握手。然后,在步驟S2005,與讀請求REQ_1相對應(yīng)的請求FIFO和跟蹤FIF06024分別存 儲讀請求REQ_1的相關(guān)信息。具體地,與讀請求REQ_1相對應(yīng)的請求FIFO存儲讀請求REQ_1 中的地址ADDR和LEN標(biāo)志,跟蹤FIFO 6024存儲讀請求REQ_1中的TYPE標(biāo)志、LEN標(biāo)志和 PATH標(biāo)志。至此,針對讀請求REQ_1的尋址階段結(jié)束。對于來自讀引擎100-1、100_2和100-3的每個(gè)讀請求,都執(zhí)行圖8A所示的操作, 使得按照接受各個(gè)讀請求的順序,將各個(gè)讀請求依序存儲在對應(yīng)的請求FIFO和跟蹤FIFO 6024 中。存儲在第一請求FIFO 6021或第二請求FIFO 6022中的讀請求被以乒乓方式發(fā)送 給第一存儲器300-1或第二存儲器300-11。根據(jù)這些讀請求中包括的地址ADDR和LEN標(biāo) 志,第一存儲器300-1或第二存儲器300-11輸出所請求的數(shù)據(jù),所述數(shù)據(jù)被存儲在與第一 存儲器300-1或第二存儲器300-11對應(yīng)的數(shù)據(jù)FIFO中。在執(zhí)行了針對每個(gè)讀請求的尋址階段的操作之后,經(jīng)過一段響應(yīng)時(shí)間,執(zhí)行數(shù)據(jù) 階段的操作。如圖8B所示,在步驟S2101中,讀取數(shù)據(jù)分配器6027檢查跟蹤FIFO 6024是否為 空。如果跟蹤FIFO 6024為空,則說明當(dāng)前不存在要處理的讀請求,因此,該過程返回步驟 S2101。反之,當(dāng)跟蹤FIFO 6024非空時(shí),存在要處理的讀請求,因此,在步驟S2102,讀取數(shù) 據(jù)分配器6027讀取從跟蹤FIF06024輸出的指示最前面的讀請求(以下稱為當(dāng)前讀請求) 的目標(biāo)路徑的PATH_F信號,并且在步驟S2103確定PATH_F是否為1,以確定應(yīng)當(dāng)從哪個(gè)數(shù) 據(jù)FIFO讀取用于該當(dāng)前讀請求的數(shù)據(jù)。如果PATH_F = 0,則這意味響應(yīng)于當(dāng)前讀請求而讀取的數(shù)據(jù)將被存儲在第一存儲 器300-1中,因此應(yīng)當(dāng)對第一數(shù)據(jù)FIFO 6028進(jìn)行讀取。因而,在步驟S2104,讀取數(shù)據(jù)分配 器6027檢查第一數(shù)據(jù)FIFO 6028的狀態(tài),并且在步驟S2105中判斷第一數(shù)據(jù)FIFO 6028是 否為空。
14
如果在步驟S2105中發(fā)現(xiàn)第一數(shù)據(jù)FIFO 6028為空,則說明用于該讀請求的數(shù)據(jù) 尚未被存儲在第一數(shù)據(jù)FIFO 6028中,因此,該過程返回步驟S2104。反之,如果第一數(shù)據(jù) FIFO 6028非空,則在步驟S2106,讀取數(shù)據(jù)分配器6027從跟蹤FIFO 6024讀取當(dāng)前讀請求 的TYPE標(biāo)志和LEN標(biāo)志,以確定發(fā)送該讀請求的讀引擎以及該讀請求要讀取的數(shù)據(jù)長度L。 然后,在步驟S2107,讀取數(shù)據(jù)分配器6027將從選擇器6026輸出的長度L的數(shù)據(jù)和從選擇 器6025輸出的對應(yīng)的RRDY信號發(fā)送給該讀引擎。另一方面,如果在步驟S2103中確定PATH_F* 1,則在步驟S2108,讀取數(shù)據(jù)分配 器6027檢查第二數(shù)據(jù)FIFO 6029的狀態(tài),并且在步驟S2109中判斷第二數(shù)據(jù)FIFO 6029 是否為空。如果第二數(shù)據(jù)FIFO 6029為空,則該過程返回步驟S2108。反之,如果第二數(shù)據(jù) FIFO 6029非空,則在步驟S2110,讀取數(shù)據(jù)分配器6027從跟蹤FIFO 6024讀取當(dāng)前讀請求 的TYPE標(biāo)志和LEN標(biāo)志,以確定發(fā)送該讀請求的讀引擎以及該讀請求要讀取的數(shù)據(jù)長度L, 然后在步驟S2111,將從選擇器6026輸出的長度L的數(shù)據(jù)和從選擇器6025輸出的對應(yīng)的 RRDY信號發(fā)送給該讀引擎。至此,針對跟蹤FIFO 6024中的當(dāng)前讀請求的數(shù)據(jù)階段的操作結(jié)束。對于跟蹤FIFO 6024中存儲的每個(gè)讀請求,讀取數(shù)據(jù)分配器6027都執(zhí)行圖8B所 示的操作,從而完成針對各個(gè)讀請求的數(shù)據(jù)讀取和分配。在根據(jù)本發(fā)明第二實(shí)施例的數(shù)據(jù)處理設(shè)備和數(shù)據(jù)處理方法中,路徑I和路徑II可 以同時(shí)工作。也就是說,即使正在一條訪問路徑正在執(zhí)行讀請求,針對另一條訪問路徑的讀 請求也可以接收和處理。由此,當(dāng)讀引擎發(fā)出了針對不同存儲器的多個(gè)讀請求時(shí),與第一實(shí) 施例相比,根據(jù)本發(fā)明第二實(shí)施例的數(shù)據(jù)處理設(shè)備和數(shù)據(jù)處理方法可以顯著加快讀請求的 處理速度,從而提高處理效率。圖9示意性地示出了根據(jù)本發(fā)明第一實(shí)施例的數(shù)據(jù)處理設(shè)備和根據(jù)本發(fā)明第二 實(shí)施例的數(shù)據(jù)處理設(shè)備的數(shù)據(jù)讀取時(shí)序圖。在圖9中,REQ_MEMI和REQ_MEMII (高電平)分 別表示針對第一存儲器300-1和第二存儲器300-11的第一讀請求和第二讀請求,ACK_MEMI 和ACK_MEMII (高電平)分別表示完成尋址階段的握手時(shí)針對這兩個(gè)讀請求向讀引擎發(fā)送 的ACK信號,RRDY_MEMI和RRDY_MEMII (高電平)分別表示第一存儲器和第二存儲器在輸 出所請求的數(shù)據(jù)的同時(shí)輸出的數(shù)據(jù)就緒信號。如圖9所示,在第一實(shí)施例中,直到第一讀請 求所請求的數(shù)據(jù)被返回給讀引擎,第二讀請求才獲得許可。相比之下,在第二實(shí)施例中,一 旦第一讀請求被解除斷定(de-assert)(例如,發(fā)出ACK信號),第二讀請求就獲得許可。顯 然,當(dāng)存在多個(gè)讀請求時(shí),根據(jù)第二實(shí)施例的數(shù)據(jù)處理設(shè)備的總響應(yīng)時(shí)間減少,因而效率更 尚o可以看到,在根據(jù)本發(fā)明第二實(shí)施例的數(shù)據(jù)處理設(shè)備中,使用了兩個(gè)數(shù)據(jù)FIFO。 由于跟蹤FIFO 6024最多可以存儲32個(gè)讀請求,每個(gè)讀請求最多可以請求4筆數(shù)據(jù),即 4X128比特的數(shù)據(jù),因此,在32個(gè)讀請求均針對同一存儲器且每個(gè)讀請求要讀取4筆數(shù)據(jù) 的最壞情況下,每個(gè)數(shù)據(jù)FIFO必須能夠存儲32X4X128比特的數(shù)據(jù),才能避免由于數(shù)據(jù) FIFO容量不夠而不能接收從存儲器返回的數(shù)據(jù)。因此,在第二實(shí)施例中,考慮到該最壞情況 而將每個(gè)數(shù)據(jù)FIFO的大小設(shè)置為128X128比特。然而,這樣的兩個(gè)數(shù)據(jù)FIFO將占用較大 的電路面積,從而增大了數(shù)據(jù)處理設(shè)備的尺寸。而且,由于上述最壞情況很少出現(xiàn),因此,按 照該最壞情況設(shè)計(jì)的數(shù)據(jù)FIFO的利用效率較低。
15
為了解決上述問題,提出了根據(jù)本發(fā)明第三實(shí)施例的數(shù)據(jù)處理設(shè)備和數(shù)據(jù)處理方法。(第三實(shí)施例)首先,將參照圖10來描述根據(jù)本發(fā)明第三實(shí)施例的數(shù)據(jù)處理設(shè)備。如圖10所示,根據(jù)本發(fā)明第三實(shí)施例的數(shù)據(jù)處理設(shè)備800包括仲裁單元801和 數(shù)據(jù)處理單元802 (為清楚起見,以虛線示出)。仲裁單元801相當(dāng)于圖1所示的仲裁單元 201,數(shù)據(jù)處理單元802相當(dāng)于圖1所示的數(shù)據(jù)處理單元202,并且包括用于路徑I的第一 請求FIFO 8021、用于路徑II的第二請求FIFO 8022、跟蹤FIFO 8024、包括控制模塊80251 的數(shù)據(jù)緩沖器8025、讀寫指針控制器8026、讀取數(shù)據(jù)分配器8027、第一寫指針FIFO 8028和 第二寫指針FIFO 8029。第三實(shí)施例中的路徑I和路徑II與第一實(shí)施例相同。當(dāng)讀引擎100-1、100-2和100-3發(fā)出讀請求時(shí),仲裁單元801根據(jù)預(yù)定仲裁算法 執(zhí)行仲裁以確定哪個(gè)讀請求接收到數(shù)據(jù)處理設(shè)備800中。在這里,假設(shè)仲裁單元801決定 接收讀引擎100-1發(fā)送的讀請求REQ_1。然后,仲裁單元801根據(jù)讀請求REQ_1中的PATH標(biāo)志將讀請求REQ_1發(fā)送給第一 請求FIFO 8021或第二請求FIFO 8022,并且還將讀請求REQ_1發(fā)送給跟蹤FIFO 8024以及 讀寫指針控制器8026。第一請求FIFO 8021和第二請求FIFO 8022分別與圖2所示的第一請求FIFO 4021和第二請求FIFO 4022相同。當(dāng)?shù)谝徽埱驠IFO 8021或第二請求FIFO 8022接收到讀 請求REQ_1時(shí),其檢查自己的存儲空間是否已滿,并且將檢查結(jié)果通知給仲裁單元801。跟蹤FIFO 8024與圖2所示的跟蹤FIFO 4024相同,其大小為32X4比特。當(dāng)接 收到仲裁單元801發(fā)送的讀請求REQ_1時(shí),跟蹤FIFO 8024檢查自己的存儲空間是否已滿, 并且將檢查結(jié)果通知給仲裁單元801。仲裁單元801根據(jù)從與讀請求REQ_1相對應(yīng)的請求FIFO (第一請求FIFO 8021或 第二請求FIFO 8022)和跟蹤FIFO 8024通知的檢查結(jié)果,確定是否向讀請求REQ_1給予 許可(即,是否接受讀請求REQ_1)。具體地,當(dāng)與讀請求REQ_1相對應(yīng)的請求FIFO和跟蹤 FIFO 8024均未滿時(shí),仲裁單元801向發(fā)送該讀請求的讀引擎100-1發(fā)送ACK信號以通知 其 請求已經(jīng)獲得許可,從而完成尋址階段的握手。反之,如果所述請求FIFO和跟蹤FIFO 8024中的至少一個(gè)已滿,則握手失敗,此時(shí),仲裁單元801保持所述讀請求,而不發(fā)送所述 ACK信號。當(dāng)完成尋址階段的握手時(shí),第一請求FIFO 8021或第二請求FIFO 8022存儲讀請 求REQ_1中的地址ADDR和LEN標(biāo)志,跟蹤FIFO 8024存儲讀請求REQ_1中的TYPE標(biāo)志和 LEN標(biāo)志。讀寫指針控制器8026用于控制對數(shù)據(jù)緩沖器8025的數(shù)據(jù)讀寫。在讀寫指針控制 器8026中預(yù)先設(shè)置了寫指針WP和讀指針RP,該寫指針WP指示響應(yīng)于每個(gè)讀請求而從相 應(yīng)的存儲器返回的數(shù)據(jù)在數(shù)據(jù)緩沖器8025中的存儲地址,該讀指針RP指示讀請求所請求 的數(shù)據(jù)在數(shù)據(jù)緩沖器8025中的存儲地址。在本實(shí)施例中,由于數(shù)據(jù)緩沖器8025的大小為 128 X 128比特,即,最多可以存儲128筆數(shù)據(jù),因此,將寫指針WP和讀指針RP的長度設(shè)置為 7比特,并且寫指針WP和讀指針RP的初始值為0。當(dāng)完成尋址階段的握手時(shí),讀寫指針控制器8026接收讀請求REQ_1的PATH標(biāo)志,然后根據(jù)該P(yáng)ATH標(biāo)志的值來確定該讀請求的寫指針WP應(yīng)當(dāng)被存儲在第一寫指針FIFO 8028中還是第二寫指針FIFO 8029中。如果PATH = 0,則讀寫指針控制器8026確定讀請 求REQ_1的寫指針WP,并且將該寫指針WP與讀請求REQ_1的LEN標(biāo)志一起寫入第一寫指針 FIFO 8028。反之,如果PATH = 1,則讀寫指針控制器8026確定讀請求REQ_1的寫指針WP, 并且將該寫指針WP與讀請求REQ_1的LEN標(biāo)志一起寫入第二寫指針FIFO 8029中。稍后 將描述第一寫指針FIFO 8028和第二寫指針FIFO 8029。讀寫指針控制器8026確定每個(gè)讀請求的寫指針的方法如下。假設(shè)讀寫指針控制 器8026依序接收到M個(gè)讀請求,每個(gè)讀請求要讀取Lm筆數(shù)據(jù)(由LEN標(biāo)志表示),每個(gè)讀 請求的寫指針為WPm。對于第一個(gè)讀請求,讀寫指針控制器8026將預(yù)先設(shè)置在其中的寫指 針WP的當(dāng)前值(0)確定為該讀請求的寫指針WPi,然后將該當(dāng)前值遞增k,使得寫指針WP的 當(dāng)前值變?yōu)?WPi+Li)。當(dāng)接收到第二個(gè)讀請求時(shí),讀寫指針控制器8026將寫指針WP的當(dāng)前 值(WPi+Li)確定為其寫指針WP2,然后將該當(dāng)前值遞增L2。依次類推,當(dāng)接收到第m(m彡M) 個(gè)讀請求時(shí),讀寫指針控制器8026將寫指針WP的當(dāng)前值(WPy+D確定為其寫指針WPm, 然后將該當(dāng)前值遞增Lm。由此,可以依次確定各個(gè)讀請求的寫指針。下面,通過圖11來進(jìn)一步例示讀寫指針控制器8026計(jì)算和存儲讀請求的寫指針 的方法。最初,寫指針WP的當(dāng)前值為0。在時(shí)刻tl,讀引擎發(fā)出了針對第一存儲器300-1的第一讀請求(參見“REQ_ MEMI”),其要讀取1筆數(shù)據(jù)(“REQ_LENI = 00”)。讀寫指針控制器8026將在其中預(yù)先設(shè) 置的寫指針WP的當(dāng)前值0確定為第一讀請求的寫指針WPi,并且將其寫入第一寫指針FIFO 8028。然后,讀寫指針控制器8026將寫指針WP的當(dāng)前值0遞增1,使得寫指針WP的當(dāng)前值 變?yōu)?。在時(shí)刻t2,讀引擎發(fā)出了針對第二存儲器的第二讀請求(參見“REQ_MEMII”),其 要讀取2筆數(shù)據(jù)(“REQ_LENII = 01”)。讀寫指針控制器8026將寫指針WP的當(dāng)前值1 確定為第二讀請求的寫指針,并且將其寫入第二寫指針FIFO 8029。然后,讀寫指針控制器 8026將寫指針WP的當(dāng)前值1加“2”,使得寫指針WP的當(dāng)前值變?yōu)?。在時(shí)刻t3,讀引擎發(fā)出了針對第一存儲器的第三讀請求(參見“REQ_MEMI”),其要 讀取4筆數(shù)據(jù)(“REQ_LENI = 11”)。讀寫指針控制器8026將寫指針WP的當(dāng)前值3確定 為第三讀請求的寫指針,并且將其寫入第一寫指針FIFO 8028。然后,讀寫指針控制器8026 將寫指針WP的當(dāng)前值3加“4”,使得寫指針WP的當(dāng)前值變?yōu)?。在時(shí)刻t4,讀引擎發(fā)出了針對第二存儲器的第四讀請求(參見“REQ_MEMII”),其 要讀取4筆數(shù)據(jù)(“REQ_LENII = 11”)。讀寫指針控制器8026將寫指針WP的當(dāng)前值7 確定為第四讀請求的寫指針,并且將其寫入第二寫指針FIFO 8029。然后,讀寫指針控制器 8026將寫指針WP的當(dāng)前值7加“4”,使得寫指針WP的當(dāng)前值變?yōu)?1。由此,確定了第一到第四讀請求的寫指針,并且將這些寫指針分別寫入兩個(gè)寫指 針 FIFO。對于仲裁單元801接受的各個(gè)讀請求,讀寫指針控制器8026都按照上述方式依序 確定其讀指針??梢钥吹?,各個(gè)讀請求的寫指針是按照仲裁單元801接受所述讀請求的順 序而依次累加的,而與各個(gè)讀請求所針對的存儲器無關(guān)。
第一寫指針FIFO 8028與第一存儲器300-1相對應(yīng),其存儲針對第一存儲器300-1 的讀請求的寫指針以及該讀請求的LEN標(biāo)志。此外,響應(yīng)于從第一存儲器300-1接收到的每 個(gè)RRDY_I信號,第一寫指針FIFO 8028輸出指示最前面的讀請求(即,當(dāng)前讀請求)要讀 取的數(shù)據(jù)中對應(yīng)的每筆數(shù)據(jù)的寫地址WP_I_F。該寫地址WP_I_F是基于該讀請求的寫指針 WP計(jì)算的,其中,對于第m筆數(shù)據(jù),其寫地址WP_I_F為該讀請求的寫指針WP的值與(m-1) 之和。第二寫指針FIFO 8029與第二存儲器300-11相對應(yīng),其存儲針對第二存儲器 300-11的讀請求的寫指針以及該讀請求的LEN標(biāo)志。此外,響應(yīng)于從第二存儲器300-11接 收到的每個(gè)RRDY_II信號,第二寫指針FIFO 8029輸出指示最前面的讀請求(S卩,當(dāng)前讀請 求)要讀取的數(shù)據(jù)中對應(yīng)的每筆數(shù)據(jù)的寫地址WP_II_F。該寫地址WP_II_F是基于該讀請 求的寫指針WP計(jì)算的,其中,對于第m筆數(shù)據(jù),其寫地址WP_II_F為該讀請求的寫指針WP 的值與(m-1)之和。在本實(shí)施例中,由于跟蹤FIFO 8027可以存儲32個(gè)讀請求的相關(guān)信息,而寫指針 為7比特,LEN標(biāo)志為2比特,因此,第一寫指針FIFO 8028和第二寫指針FIFO 8029的大 小均被設(shè)置為32X比特,其存儲格式在圖12中示出。在與讀請求相對應(yīng)請求FIFO和跟蹤FIFO 8024未滿的情況下,仲裁單元801和 數(shù)據(jù)處理單元802對從讀引擎接收的每個(gè)讀請求都執(zhí)行上述操作,使得按照接受各個(gè)讀請 求的順序,將這些讀請求分別存儲在第一請求FIF08021或第二請求FIFO 8022中,將這些 讀請求的相關(guān)信息存儲在跟蹤FIF06024中,并且將每個(gè)讀請求的寫指針根據(jù)該讀請求的 PATH標(biāo)志而存儲在第一寫指針FIFO 8028或第二寫指針FIFO 8029中。存儲在請求FIFO 中的讀請求被依序輸出到相應(yīng)存儲器。第一存儲器300-1在接收到讀請求時(shí),根據(jù)該讀請求中的地址ADDR和LEN標(biāo)志, 將所請求的數(shù)據(jù)(數(shù)據(jù)_1)以及相應(yīng)的RRDY_I信號輸出到數(shù)據(jù)緩沖器8025。另一方面,第 二存儲器300-11在接收到讀請求時(shí),根據(jù)該讀請求中的地址ADDR和LEN標(biāo)志,將所請求的 數(shù)據(jù)(數(shù)據(jù)_11)以及相應(yīng)的RRDY_II信號輸出到數(shù)據(jù)緩沖器8025。對于數(shù)據(jù)_1或數(shù)據(jù)_ II中的每筆數(shù)據(jù),都伴隨有一個(gè)RRDY_I或RRDY_II信號。數(shù)據(jù)緩沖器8025是具有兩個(gè)寫數(shù)據(jù)端口和一個(gè)讀數(shù)據(jù)端口的緩沖器。從第一存 儲器300-1和第二存儲器300-11輸出的數(shù)據(jù)分別經(jīng)由這兩個(gè)寫數(shù)據(jù)端口而被輸入到數(shù)據(jù) 緩沖器8025中,讀取數(shù)據(jù)分配器8027經(jīng)由所述讀數(shù)據(jù)端口而讀取存儲在數(shù)據(jù)緩沖器8025 中的數(shù)據(jù)。數(shù)據(jù)緩沖器8025的大小為128X 128比特。此外,在數(shù)據(jù)緩沖器8025中,對于每 筆數(shù)據(jù)的存儲地址設(shè)置一個(gè)VALID標(biāo)志,用于表示在所述存儲地址上是否存儲了有效的數(shù) 據(jù)(即響應(yīng)于讀請求而從存儲器讀取的數(shù)據(jù))。當(dāng)在數(shù)據(jù)緩沖器8025中存儲一筆數(shù)據(jù)時(shí), 將對應(yīng)的VALID標(biāo)志設(shè)為1。反之,如果在數(shù)據(jù)緩沖器8025中的某些存儲地址上沒有存儲 數(shù)據(jù),或者存儲在這些存儲地址上的數(shù)據(jù)已經(jīng)被讀取,則對應(yīng)的VALID標(biāo)志被設(shè)置為0。數(shù)據(jù)緩沖器8025中的控制模塊80251不斷地檢查是否從第一存儲器300-1或第 二存儲器300-11接收到數(shù)據(jù)就緒信號(RRDY_I或RRDY_II信號),以確定是否從存儲器 接收到數(shù)據(jù)。當(dāng)從第一存儲器300-1接收到RRDY_I信號時(shí),控制模塊80251讀取從第一 寫指針FIFO 8028輸出的當(dāng)前讀請求的寫地址WP_I_F,將從第一存儲器300-1接收到的 數(shù)據(jù)存儲在數(shù)據(jù)緩沖器8025中的寫地址WP_I_F上,并且將與各筆數(shù)據(jù)的存儲地址對應(yīng)的VALID標(biāo)志設(shè)置為1。另一方面,當(dāng)從第二存儲器300-11接收到RRDY_II信號時(shí),控制模塊 80251讀取從第二寫指針FIFO 8029輸出的當(dāng)前讀請求的寫地址WP_II_F,將從第一存儲器 300-11接收到的數(shù)據(jù)存儲在數(shù)據(jù)緩沖器8025中的寫地址WP_I I_F上,并且將與各筆數(shù)據(jù)的 存儲地址對應(yīng)的VALID標(biāo)志設(shè)置為1。由此,按照仲裁單元801接受各個(gè)讀請求的順序,將 響應(yīng)于各個(gè)讀請求而從存儲器讀取的數(shù)據(jù)存儲在數(shù)據(jù)緩沖器8025中。除了對數(shù)據(jù)緩沖器8025的寫入進(jìn)行上述控制以外,讀寫指針控制器8026還控制 對數(shù)據(jù)緩沖器8025的數(shù)據(jù)讀取。具體地,在接收到來自第一存儲器300-1的RRDY_I信號的情況下,讀寫指針控制 器8026接收從第一寫指針FIFO 8028輸出的寫地址WP_I_F,作為讀取用于當(dāng)前讀請求的數(shù) 據(jù)的讀指針RP,并且將該讀指針RP提供給控制模塊80251。然后,控制模塊80251檢查在數(shù) 據(jù)緩沖器8025中與該讀指針RP指示的地址相對應(yīng)的VALID標(biāo)志,以確定該地址上是否存 儲了有效數(shù)據(jù)。如果VALID標(biāo)志為0,則說明該讀請求所請求的數(shù)據(jù)尚未被存儲在數(shù)據(jù)緩沖 器8025中,因此控制模塊80251不輸出讀指針RP指示的地址上的數(shù)據(jù)。反之,如果VALID 標(biāo)志為1,則控制模塊80251輸出該讀指針RP指示的地址上的數(shù)據(jù),并且將對應(yīng)的VALID標(biāo) 志改變?yōu)?。讀取數(shù)據(jù)分配器8027從跟蹤FIFO 8024讀取當(dāng)前讀請求的TYPE標(biāo)志,以確定發(fā) 送該讀請求的讀引擎,然后,讀取從數(shù)據(jù)緩沖器8025輸出的數(shù)據(jù),并且將該數(shù)據(jù)與對應(yīng)的 RRDY信號一起發(fā)送給該讀引擎。在根據(jù)本發(fā)明第三實(shí)施例的數(shù)據(jù)處理設(shè)備中,按照仲裁單元801接受各個(gè)讀請求 (即,各個(gè)讀請求獲得許可)的順序,通過累加而確定這些讀請求的寫指針,使得響應(yīng)于各 個(gè)讀請求而從存儲器讀取的數(shù)據(jù)也按照接受各個(gè)讀請求的順序而被存儲在數(shù)據(jù)FIFO中。 然后,利用VALID標(biāo)志,僅在用于被先接受的讀請求的數(shù)據(jù)被讀取并分配給讀引擎之后,才 讀取和分配用于被后接受的讀請求的數(shù)據(jù),從而確保將用于各個(gè)讀請求的數(shù)據(jù)依序分配給 對應(yīng)的讀引擎,避免了數(shù)據(jù)順序錯(cuò)亂和數(shù)據(jù)沖突的問題。而且,在根據(jù)本發(fā)明第三實(shí)施例的 數(shù)據(jù)處理設(shè)備中,只使用了一個(gè)128X128比特的數(shù)據(jù)FIFO,相對于根據(jù)第二實(shí)施例的數(shù)據(jù) 處理設(shè)備,減小了設(shè)備的尺寸。下面,將參照圖13A到圖13C來描述根據(jù)本發(fā)明第三實(shí)施例的數(shù)據(jù)處理方法。圖13A示出根據(jù)本發(fā)明第三實(shí)施例的數(shù)據(jù)處理方法的尋址階段的操作的流程圖。如圖13A所示,在步驟S3001,仲裁單元801判斷讀引擎100-1、100-2和100-3是 否發(fā)出了讀請求。如果所述讀引擎沒有發(fā)出讀請求,則該過程返回步驟S3001。反之,如果 所述讀引擎發(fā)出了讀請求,則在步驟S3002,仲裁單元801根據(jù)預(yù)定仲裁算法執(zhí)行仲裁,以 確定將哪個(gè)讀請求接收到數(shù)據(jù)處理設(shè)備800中。假設(shè)仲裁單元801決定接收來自讀引擎 100-1的讀請求REQ_1,其要讀取長度L (筆數(shù))的數(shù)據(jù)。然后,在步驟S3003,仲裁單元801檢查與讀請求REQ_1相對應(yīng)的請求FIFO以及跟 蹤FIFO 8024是否已滿。執(zhí)行該檢查的方式與在上文中針對第二實(shí)施例描述的方式相同, 因此在這里省略其描述。如果與讀請求REQ_1相對應(yīng)的請求FIFO和跟蹤FIFO 8024中的至少一個(gè)已滿,則 該過程返回步驟S3003,以等待已滿的FIFO變空。反之,如果所述請求FIFO和跟蹤FIFO 8024均未滿,則該過程進(jìn)行到步驟S3004,在該步驟中,仲裁單元801向發(fā)送讀請求REQ_1
19的讀引擎100-1發(fā)送ACK信號以通知其讀請求已經(jīng)獲得許可,從而完成握手。然后,在步驟S3005,與讀請求REQ_1相對應(yīng)的請求FIFO和跟蹤FIF08024分別存 儲讀請求REQ_1的相關(guān)信息。具體地,與讀請求REQ_1相對應(yīng)的請求FIFO存儲讀請求REQ_1 中的地址ADDR和LEN標(biāo)志,跟蹤FIFO 8024存儲讀請求REQ_1中的TYPE標(biāo)志和LEN標(biāo)志。接下來,在步驟S3006,讀寫指針控制器8026確定讀請求REQ_1的PATH標(biāo)志是否 為1,以確定存儲該讀請求的寫指針的寫指針FIFO。如果在步驟S3006確定PATH標(biāo)志為0,則在步驟S3007,讀寫指針控制器8026確 定讀請求REQ_1的寫指針,并且將該寫指針與讀請求REQ_1中的LEN標(biāo)志一起寫入第一寫 指針FIFO 8028。反之,如果PATH標(biāo)志為1,則在步驟S3008,讀寫指針控制器8026確定讀 請求REQ_1的寫指針,并且將該寫指針與讀請求REQ_1中的LEN標(biāo)志一起寫入第二寫指針 FIFO 8029。如上所述,讀寫指針控制器8026將在其中預(yù)先設(shè)置的寫指針WP的當(dāng)前值確定 為讀請求REQ_1的寫指針。接下來,在步驟S3009,讀寫指針控制器8026將在其中預(yù)先設(shè)置的寫指針WP的當(dāng) 前值遞增L,以便在確定下一個(gè)讀請求的寫指針時(shí)使用。然后,該尋址階段的操作結(jié)束。對于來自讀引擎100-1、100-2和100-3的每個(gè)讀請求,都執(zhí)行上述流程,使得按照 接受各個(gè)讀請求的順序,將各個(gè)請求依序存儲在對應(yīng)的請求FIFO以及跟蹤FIFO 8024中。存儲在第一請求FIFO 8021或第二請求FIFO 8022中的讀請求被以乒乓方式發(fā) 送給第一存儲器300-1或第二存儲器300-11。根據(jù)這些讀請求中包括的地址ADDR和LEN 標(biāo)志,所請求的數(shù)據(jù)被從第一存儲器300-1或第二存儲器300-11讀出并輸出到數(shù)據(jù)FIFO 8025。然后,執(zhí)行根據(jù)本發(fā)明第三實(shí)施例的數(shù)據(jù)處理方法的數(shù)據(jù)階段的操作。圖13B示出了該數(shù)據(jù)處理方法的數(shù)據(jù)階段中的數(shù)據(jù)寫入過程的流程圖。如圖13B所示,在步驟S3101,數(shù)據(jù)緩沖器8025中的控制模塊80251檢查是否接收 到RRDY_I信號或RRDY_II信號。如果接收到RRDY_I信號,則在步驟S3102,控制模塊80251讀取從第一寫指針 FIFO 8028輸出的當(dāng)前讀請求的寫地址WP_I_F。如上文所述,寫地址WP_I_F是在第一寫指 針FIFO 8028中基于當(dāng)前讀請求的寫指針確定的。然后,在步驟S3103,控制模塊80251將 從第一存儲器300-1輸出的一筆數(shù)據(jù)存儲在數(shù)據(jù)緩沖器8025內(nèi)的所述寫地址WP_I_F上。 接下來,該過程返回步驟S3101,以便接收和存儲下一筆數(shù)據(jù)。反之,如果接收到RRDY_II信號,則在步驟S3104,控制模塊80251讀取從第二寫指 針FIFO 8029輸出的當(dāng)前讀請求的寫地址WP_II_F。寫地址WP_II_F是在第二寫指針FIFO 8029中基于當(dāng)前讀請求的寫指針確定的。然后,在步驟S3105,控制模塊80251將從第二存 儲器300-11輸出的一筆數(shù)據(jù)存儲在數(shù)據(jù)緩沖器8025內(nèi)的所述寫地址WP_I_F上,并且將對 應(yīng)的VALID標(biāo)志設(shè)置為1。接下來,該過程返回步驟S3101,以便接收和存儲下一筆數(shù)據(jù)。另一方面,如果在步驟S3101發(fā)現(xiàn)沒有接收到RRDY_I信號和RRDY_II信號中的任 何一個(gè),則這說明第一和第二存儲器均未輸出數(shù)據(jù),因此,該過程結(jié)束??刂颇K80251不斷地執(zhí)行圖13B所示的流程,從而將存儲器輸出的數(shù)據(jù)存儲在 數(shù)據(jù)FIFO 8025中。隨后,執(zhí)行根據(jù)本發(fā)明第三實(shí)施例的數(shù)據(jù)處理方法的數(shù)據(jù)階段中的數(shù)據(jù)讀取過
20程。圖13C示出了該數(shù)據(jù)讀取過程的操作的流程圖。如圖13C所示,在步驟S3201,讀寫指針控制器8026確定是否接收到來自第一存儲 器300-1的RRDY_I信號或者來自第二存儲器300-11的RRDY_II信號,以確定是否在數(shù)據(jù) FIFO 8025中是否有數(shù)據(jù)可讀。如果沒有接收到RRDY_I信號和RRDY_II中的任何一個(gè),則該過程返回步驟S3201。 反之,如果接收到RRDY_I信號和RRDY_II中的任何一個(gè),則在步驟S3202,讀寫指針控制器 8026確定當(dāng)前讀請求的讀指針RP。如上所述,讀寫指針控制器8026接收從第一寫指針FIFO 8028輸出的寫地址WP_I_F,作為當(dāng)前讀請求的讀指針RP。該讀指針RP被發(fā)送給控制模塊 80251。然后,在步驟S3203,控制模塊80251檢查在數(shù)據(jù)緩沖器8025中與該讀指針RP指 示的地址上是否存儲了有效數(shù)據(jù)(即響應(yīng)于當(dāng)前讀請求而從存儲器讀取的數(shù)據(jù))。如上所 述,可以通過查看與所述地址對應(yīng)的VALID標(biāo)志來執(zhí)行該檢查。如果在所述地址上沒有存 儲有效數(shù)據(jù),則該過程返回步驟S3203。反之,如果存儲了有效數(shù)據(jù),則在步驟S3204,讀取 數(shù)據(jù)分配器8027從跟蹤FIFO 8024讀取當(dāng)前讀請求的TYPE標(biāo)志,以確定發(fā)送該讀請求的 讀引擎,然后在步驟S3205將該讀指針RP所指示的地址上的數(shù)據(jù)發(fā)送給所確定的讀引擎, 并且將對應(yīng)的VALID標(biāo)志設(shè)置為0。 接下來,在步驟S3206,讀寫指針控制器8029確定是否已經(jīng)讀取了由LEN標(biāo)志指示 的長度L的數(shù)據(jù)。如果沒有,則表示尚未讀取當(dāng)前讀請求所請求的全部數(shù)據(jù)。因此,在步驟 S3207,讀寫指針控制器8026將當(dāng)前讀指針遞增1。然后,該過程返回步驟S3203,并且依序 執(zhí)行后續(xù)步驟。反之,如果在步驟S3206確定已經(jīng)讀取了長度L的數(shù)據(jù),則該數(shù)據(jù)讀取過程結(jié)束??梢钥吹?,通過使用讀寫指針控制器和VALID標(biāo)志,即使只使用了一個(gè)數(shù)據(jù)FIFO, 根據(jù)本發(fā)明第三實(shí)施例的數(shù)據(jù)處理設(shè)備和數(shù)據(jù)處理方法也仍然能夠以正確的順序?qū)㈨憫?yīng) 于各個(gè)讀請求而從多個(gè)存儲器讀取的數(shù)據(jù)提供給相應(yīng)的讀引擎。應(yīng)當(dāng)注意,上文描述的根據(jù)各個(gè)實(shí)施例的數(shù)據(jù)處理設(shè)備和數(shù)據(jù)處理方法只是說明 性的,而不是限制性的。例如,盡管在上文中以一筆數(shù)據(jù)為128比特進(jìn)行了描述,但是也可 以將1筆數(shù)據(jù)的比特?cái)?shù)設(shè)為其它數(shù)目,例如1比特或64比特等。此外,盡管在上文中將數(shù) 據(jù)處理設(shè)備劃分為仲裁單元和數(shù)據(jù)處理單元,并且將數(shù)據(jù)處理單元進(jìn)一步劃分為各個(gè)子部 件,但是,也可以以其它方式來劃分或數(shù)據(jù)處理設(shè)備,只要劃分后的各個(gè)部件能夠共同完成 上文所述的數(shù)據(jù)處理設(shè)備的操作或功能即可。盡管已經(jīng)示出和描述了本發(fā)明的若干示例實(shí)施例,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,在 不背離權(quán)利要求及其等價(jià)物中限定的本發(fā)明的范圍和精神的情況下,可以對這些示例實(shí)施 例做出各種形式和細(xì)節(jié)上的變化。
權(quán)利要求
一種數(shù)據(jù)處理設(shè)備,用于依序接受由讀引擎向多個(gè)外部存儲設(shè)備發(fā)出的多個(gè)讀請求,并且將響應(yīng)于所述多個(gè)讀請求而分別從所述多個(gè)外部存儲設(shè)備讀取的數(shù)據(jù)依序分配給讀引擎,該數(shù)據(jù)處理設(shè)備包括跟蹤存儲器,用于按照接受所述多個(gè)讀請求的順序,存儲各個(gè)讀請求的信息,并且按照先入先出的方式輸出各個(gè)讀請求的所述信息;指針控制器,用于計(jì)算各個(gè)讀請求的寫指針,每個(gè)讀請求的寫指針用于指示響應(yīng)于該讀請求而從相應(yīng)的外部存儲設(shè)備讀取的數(shù)據(jù)在數(shù)據(jù)存儲器中的存儲地址,其中,所述寫指針是按照接受所述讀請求的順序依次累加的;所述數(shù)據(jù)存儲器用于接收響應(yīng)于每個(gè)讀請求而從相應(yīng)的外部存儲設(shè)備讀取的數(shù)據(jù),并且根據(jù)該讀請求的寫指針指示的存儲地址存儲所接收的數(shù)據(jù);數(shù)據(jù)分配器,其讀取數(shù)據(jù)存儲器中的數(shù)據(jù),并且根據(jù)跟蹤存儲器所輸出的每個(gè)讀請求的信息將其分配給相應(yīng)的讀引擎,其中,僅在讀取和分配了對應(yīng)于在先接受的讀請求的數(shù)據(jù)之后,數(shù)據(jù)分配器才讀取和分配對應(yīng)于在后接受的讀請求的數(shù)據(jù)。
2.如權(quán)利要求1所述的數(shù)據(jù)處理設(shè)備,還包括分別與所述多個(gè)外部存儲設(shè)備相對應(yīng)的多個(gè)請求存儲器,分別用于存儲針對相應(yīng)的外 部存儲設(shè)備的讀請求,并以乒乓方式將存儲在各個(gè)請求存儲器中的讀請求輸出到相應(yīng)的外 部存儲設(shè)備。
3.如權(quán)利要求1所述的數(shù)據(jù)處理設(shè)備,其中所述讀請求的信息包括指示發(fā)送該讀請求的讀引擎的信息和指示該讀請求要讀取的 數(shù)據(jù)長度的信息。
4.如權(quán)利要求1所述的數(shù)據(jù)處理設(shè)備,還包括仲裁單元,用于從讀引擎接收所述多個(gè)讀請求,并且根據(jù)預(yù)定仲裁算法以及數(shù)據(jù)存儲 器和跟蹤存儲器的狀態(tài)來確定接受所述多個(gè)讀請求的順序。
5.如權(quán)利要求1所述的數(shù)據(jù)處理設(shè)備,還包括分別與所述多個(gè)外部存儲設(shè)備相對應(yīng)的多個(gè)寫指針存儲器,分別用于存儲針對相應(yīng)的 外部存儲設(shè)備的讀請求的寫指針。
6.如權(quán)利要求1所述的數(shù)據(jù)處理設(shè)備,其中,在讀取存儲在數(shù)據(jù)存儲器中的數(shù)據(jù)之前, 所述指針控制器確定該讀請求的讀指針,并且數(shù)據(jù)分配器根據(jù)所述讀指針來從數(shù)據(jù)存儲器 中讀取對應(yīng)于該讀請求的數(shù)據(jù)。
7.如權(quán)利要求6所述的數(shù)據(jù)處理設(shè)備,其中,僅在讀請求的讀指針指示的存儲地址上 存儲了有效數(shù)據(jù)時(shí),數(shù)據(jù)分配器才讀取和分配對應(yīng)于該讀請求的數(shù)據(jù)。
8.一種數(shù)據(jù)處理方法,用于依序接受由讀引擎向多個(gè)外部存儲設(shè)備發(fā)出的多個(gè)讀請 求,并且將響應(yīng)于所述多個(gè)讀請求而分別從所述多個(gè)外部存儲設(shè)備讀取的數(shù)據(jù)依序分配給 讀引擎,該數(shù)據(jù)處理方法包括以下步驟按照接受所述多個(gè)讀請求的順序,存儲各個(gè)讀請求的信息于跟蹤存儲器中;計(jì)算各個(gè)讀請求的寫指針,每個(gè)讀請求的寫指針用于指示響應(yīng)于該讀請求而從相應(yīng)的 外部存儲設(shè)備讀取的數(shù)據(jù)在數(shù)據(jù)存儲器中的存儲地址,其中,所述寫指針是按照接受所述 讀請求的順序依次累加的;接收響應(yīng)于每個(gè)讀請求而從相應(yīng)的外部存儲設(shè)備讀取的數(shù)據(jù),并且根據(jù)該讀請求的寫指針指示的存儲地址在所述數(shù)據(jù)存儲器內(nèi)存儲所接收的數(shù)據(jù);跟蹤存儲器按照先入先出的方式輸出各個(gè)讀請求的所述信息;讀取存儲在數(shù)據(jù)存儲器中的對應(yīng)于所述多個(gè)請求的數(shù)據(jù),并且根據(jù)每個(gè)讀請求的信息 將其分配給相應(yīng)的讀引擎,其中,僅在讀取和分配了對應(yīng)于在先接受的讀請求的數(shù)據(jù)之后, 才讀取和分配對應(yīng)于在后接受的讀請求的數(shù)據(jù)。
9.如權(quán)利要求8所述的數(shù)據(jù)處理方法,還包括以下步驟使用與所述多個(gè)外部存儲設(shè)備相對應(yīng)的多個(gè)請求存儲器存儲針對相應(yīng)的外部存儲設(shè) 備的讀請求,并且以乒乓方式將存儲在各個(gè)請求存儲器中的讀請求輸出到相應(yīng)的外部存儲 設(shè)備。
10.如權(quán)利要求8所述的數(shù)據(jù)處理方法,其中所述讀請求的信息包括指示發(fā)送該讀請求的讀引擎的信息和指示該讀請求要讀取的 數(shù)據(jù)長度的信息。
11.如權(quán)利要求8所述的數(shù)據(jù)處理方法,還包括以下步驟從讀引擎接收所述多個(gè)讀請求,并且根據(jù)預(yù)定仲裁算法以及數(shù)據(jù)存儲器和跟蹤存儲器 的狀態(tài)來確定接受所述多個(gè)讀請求的順序。
12.如權(quán)利要求8所述的數(shù)據(jù)處理方法,還包括分別存儲針對相應(yīng)的外部存儲設(shè)備的讀請求的寫指針。
13.如權(quán)利要求8所述的數(shù)據(jù)處理方法,在讀取存儲在數(shù)據(jù)存儲器中的數(shù)據(jù)之前,確定 該讀請求的讀指針,并根據(jù)所述讀指針來從數(shù)據(jù)存儲器中讀取對應(yīng)于該讀請求的數(shù)據(jù)。
14.如權(quán)利要求13所述的數(shù)據(jù)處理方法,其中,僅在每個(gè)讀請求的讀指針指示的存儲 地址上存儲了有效數(shù)據(jù)時(shí),才讀取和分配用于該讀請求的數(shù)據(jù)。
全文摘要
本發(fā)明提供一種數(shù)據(jù)處理設(shè)備和數(shù)據(jù)處理方法,其依序接受由讀引擎向多個(gè)外部存儲設(shè)備發(fā)出的多個(gè)讀請求,并將由此從多個(gè)外部存儲設(shè)備讀取的數(shù)據(jù)依序分配給讀引擎。該設(shè)備包括跟蹤存儲器,按照接受所述多個(gè)讀請求的順序,存儲各個(gè)讀請求的信息,并按先入先出的方式輸出各個(gè)讀請求的信息;指針控制器,計(jì)算各個(gè)讀請求的寫指針,每個(gè)讀請求的寫指針用于指示響應(yīng)于該讀請求而從相應(yīng)外部存儲設(shè)備讀取的數(shù)據(jù)在數(shù)據(jù)存儲器中的存儲地址;數(shù)據(jù)分配器,讀取數(shù)據(jù)存儲器中的數(shù)據(jù),并根據(jù)跟蹤存儲器輸出的每個(gè)讀請求的信息將其分配給相應(yīng)讀引擎,其中僅在讀取和分配了對應(yīng)于在先接受的讀請求的數(shù)據(jù)之后,數(shù)據(jù)分配器才讀取和分配對應(yīng)于在后接受的讀請求的數(shù)據(jù)。
文檔編號G06F9/34GK101907986SQ201010269838
公開日2010年12月8日 申請日期2010年8月30日 優(yōu)先權(quán)日2010年8月30日
發(fā)明者李文佳, 鄒勝 申請人:威盛電子股份有限公司