1265451 九、發明說明: 【發明所屬之技術領域】 本發明係關於一種直接記憶體存取系統,詳言之,係關 - 於一種用於網際網路小型電腦系統介面(iSCSI)之直接記憶 . 體存取系統。 【先前技術】 網際網路小型電腦系統介面(iSCSI)為一種新興起的儲存 網路技術及傳輸協定。此傳輸協定主要的功能是將SCSI的 命令及資料,透過iSCSI協定資料單元(PDU)在目前發展已 非常成熟的IP網路上傳送,藉由iSCSI協定,將使IP網路亦 可成為儲存網路。 以IP網路作為儲存網路時的最大優點,對使用者而言, 只需將其伺服器及儲存設備換成iSCSI介面,且使用原有的 IP網路的交換設備,就可建置出價廉物美的儲存網路。 在iSCSI協定的負載(loading)分析,得知在TCP/IP的傳送 φ 與接收工作的loading最大。其次為運算iSCSI之循環冗餘碼 (CRC)工作。由於iSCSI循環冗餘碼是重複性的運算,須耗 ^ 費大量的CPU處理時間,因此須將iSCSI循環冗餘碼之運 ^ 算,改由硬體實現較適當。但若將iSCSI循環冗餘碼之運算 以硬體化之模組實現後,若單獨使用iSCSI循環冗餘碼模 組,處理iSCSI循環冗餘碼(CRC)運算時,則必須要有讀取 記憶體時間,以及等待處理時間,因此,單獨的硬體化iSCSI 循環冗餘碼模組並非達到最佳的效能。 習知之直接記憶體存取(Direct Memory Access,DMA)機 102328.doc ⑧ 1265451 制已經是提出相當久之技術,且大多作為資料搬移的硬體 工具。參考美國專利公開第20040123013號專利申請案 Direct memory access controller system」。該習知專利申 請案係揭示在做DMA資料時-,同時嵌入計算錯誤偵測碼 (error detection codes,EDCs),以減少額外計算EDC 的時 間。然而,其係針對單一資料區塊計算EDC,並利用DMA 之訊息格式(Message Format)啟動DMA及決定EDC之操作 碼與計算。再將計算之EDC值利用DMA響應訊息(Response Message)來傳送計算的結果。 再者’該習知技術係假設資料僅有單一資料區塊(data buffer),若資料具有複數個區塊,則該dma系統之中斷次 數會增加。 因此,有必要提供一種創新且具進步性的直接記憶體存 取系統,以解決上述問題。 【發明内容】 本發明提供一種用於網際網路小型電腦系統介面(iScSI) 之直接記憶體存取系統,其包括:一第一匯流排介面、一 第二匯流排介面、一先進先出記憶體、一iSCSI循環冗餘碼 模組及一直接記憶體存取控制器。該先進先出記憶體連接 至該第一匯流排介面及該第二匯流排介面。該iscsI循環冗 餘碼模組連接至該先進先出記憶體,用以由該先進先出記 憶體取得一:iSCSI協定資料單元,依據協定資料單 元計算得一循環冗餘碼。該直接記憶體存取控制器連接至 該先進先出記憶體及%SCSI循環冗餘碼模組,用以控制該 102328.doc 1265451 先進先出記憶體及該iSCSI循環冗餘碼模組之動作。 本發明係以該iSCSI循環冗餘碼模組嵌入該直接記憶體 存取系統中,以減少讀取記憶體時間及等待處理時間,提 • 升處理iSCSI循環冗餘碼-之速度與效能。因此,在高速iSCSI 、 主匯流排配接卡(Host Bus Adapter,HBA)的設計架構中,本 發明之直接記憶體存取系統可更有效率地處理iSCSI循環 冗餘碼。本發明之直接記憶體存取系統提供iSCSI協定與 ^ TCP/IP協定的資料傳輸介面,在DMA傳送iSCSI協定資料單 元的過程中,自動產生iSCSI循環冗餘碼,且自動更新iSCSI 協定資料單元之摘要值(digest)。在不影響原有的iSCSI協定 . 與TCP/IP協定之情形下,能提供快速且高效能的iSCSI循 環冗餘碼處理。因此,利用本發明之直接記憶體存取系統 可降低CPU之負擔(loading),並減少重複讀取iSCSI協定資 料單元之時間(latency),以提升處理iSCSI循環冗餘碼的速 度與效能。 • 【實施方式】 參考圖1,其顯示本發明用於網際網路小型電腦系統介面 ^ (iSCSI)之直接記憶體存取系統之示意圖。本發明用於網際 v 網路小型電腦系統介面之直接記憶體存取系統1 〇包括:一 第一匯流排介面11、一第二匯流排介面12、一先進先出記 憶體13、一 iSCSI循環冗餘碼(CRC)模組14及一直接記憶體 存取(DMA)控制器15。該第一匯流排介面11係為一主電腦 (Host)匯流排介面。該第二匯流排介面12係為一特定應用積 體電路(Application Specific Integrated Circuit,ASIC)匯流 102328.doc 1265451 排介面。 该先進先出記憶體(First-In-First-Out Memory)13連接至 該第一匯流排介面11及該第二匯流排介面12。該先進先出 “記憶體13包括複數個記憶體單元組,每一記憶體單元組包 -括-寫入記憶體單元及-讀出記憶體單元,該寫入記憶體 單元用以儲存來自該第一匯流排介面或該第二匯流排介面 之資料,該讀出記憶體單元用以儲存讀出至該第一匯流排 鲁 介面或該第二匯流排介面之資料。 該iSCSI循環冗餘碼(CRC)模組14連接至該先進先出記憶 體13,用以由該先進先出記憶體13之寫入記憶體單元取得 . —iSCSI協定資料單元,依據該iSCSI協定資料單元計算得 . 一循環冗餘碼。該直接記憶體存取(DMA)控制器15連接至 該先進先出記憶體13及該iSCSI循環冗餘碼模組14,用以控 制該先進先出記憶體13及該iSCSI循環冗餘碼模組14啟動 之動作。s亥直接記憶體存取(DMA)控制器1 5可對該第一匯 藝 k排1面11及该弟一匯流排介面12發出讀寫資料之請求訊 號。 參考圖2,其顯示在iSCSI協定與TCP/IP協定之間利用本 發明之直接記憶體存取系統1〇直接存取iSCSI協定資料單 元之示意圖。該iSCSI協定處理方塊20中,所產生之iscsi 協定資料單元21包括:iSCSI表頭211(Header)、表頭摘要 212(Header Digest)、資料213(Data)及資料摘要 214(Data Digest)。該iSCSI協定資料單元中之資料21 3可由複數個資 料緩衝區(Data Buffer)所組成。該iSCSI協定資料單元21中 102328.doc 1265451 之表頭摘要212(Header Digest)與資料摘要214(Data
Digest),係由iSC_商過程時決定有無此功能,且當有資 料213日^ ’才會需要計算該資料摘要214。另外,該丨%§1協 疋資料單元21可以只有該iscsi表頭211。 、 將該iSCSI協定中iSCSI協定資料單元21,傳送到TCp/ip 協疋處理方塊30中,會將該18(:81協定資料單元21的資料由 ”玄直接έ己憶體存取系統1〇分送到一個或複數個TCp協定資 ❿ 料早兀31、32中。每一個TCP協定資料單元包括iCP表頭 及iSCSI協定資料單元區段。以第一TCp協定資料單元31為 例次明。遠第一TCP協定資料單元3丨包括:TCp表頭 iscsi協定資料單元第一區pDU fragment ^。 备由iSCSI協定傳資料至TCP/IP協定時(亦即為傳送模 式,Tx mode),本發明之直接記憶體存取系統1〇將一個單 一之iSCSI協定資料單元的資料分送到一個或複數個TcP協 定資料單元,並且依據該iSCSI協定資料單元計算得一循環 鲁 冗餘碼,該循環冗餘碼將取代該iScsi協定資料單元中既有 之資料摘要或表頭摘要值。 當由TCP/IP協定傳資料至iSCSI協定時(亦即為接收模 V 式,Rx mode),本發明之直接記憶體存取系統10將一個或 複數個TCP協定資料單元傳送至iSCSI所指定iSCSI協定資 料單元中,並且依據該iSCSI協定資料單元計算得一循環冗 餘碼,該循環冗餘碼會與該iSCSI協定資料單元中之資料摘 要或表頭摘要值作比較。若相同則將資料摘要或表頭摘要 值設為0 ;若不同,則不改變資料摘要或表頭摘要值。 102328.doc 1265451 參考圖3,其係為該iSCSI循環冗餘碼模組丨4之方塊示意 圖。該iSCSI循環冗餘碼模組14包括:一先進先出記憶體 (FIFO)側介面141、一直接記憶體存取(DMA)控制器側介面 142、一循環冗餘碼(CRC)計算模組及一循環冗餘碼 (CRC)控制模組144。該先進先出記憶體側介面141用以存取 至該先進先出記憶體13之資料或控制訊號。該直接記憶體 存取控制器側介面142,用以接受至該直接記憶體存取控制 器15之資料或控制訊號,亦即,將來自該直接記憶體存取 控制器15之控制訊號傳至該循環冗餘碼控制模組144 :或接 收該循環冗餘碼控制模組144之控制訊號並傳至該直接記 憶體存取控制器15。
該循環冗餘碼(CRC)計算模組143用以計算得該 定資料單元之該循環冗餘碼。該循環冗餘碼(CRC)控制模組 144用以控制該循環冗餘碼計算模組丨43之運算,及控制該 先進先出記憶體側介面141及該直接記憶體存取控制器側 介面142。該循環冗餘碼控制模組144包括:一循環冗餘碼 (CRC)控制訊號埠145、一先進先出記憶體控制訊號 埠146、一直接記憶體存取(DMA)控制訊號埠μ?、一循環 冗餘碼(CRC)暫存器檔案148。 «環冗餘碼(CRC)控制訊號埠! 45用以控制該循環冗餘 碼计异模組143之動作。該循環冗餘碼(CRC)控制訊號蜂⑷ 包括循環冗餘碼(CRC)輸出控料、—循環冗餘碼(crc) 輸出資料埠及-循環冗餘碼(CRC)輸人f料埠。該循環冗餘 碼(CRC)輪出控制埠用以重置(Reset)該循環冗餘碼計算模 I02328.doc -10· ⑧ 1265451 、、且143所計算之該循環冗 模組⑷開始計算兮循…⑽5亥循核冗餘碼計算 14 ^ ^餘m控制向該循環冗餘碼 ° "'換 取得所計算之該猶環冗餘碼。 =環冗餘碼(CRC)輸出資料崞用以傳送所需之資料至 ^ %几餘碼計算模組143。該循環冗餘碼(crc)輸入資料 =用以取得該循環冗餘碼計算模組143所計算之該循環冗 餘碼。 該先進先出記憶體(FIF0)控制訊號槔146包括:一先進先 出記憶體⑽晴料輪人埠、—先進先出記憶體(聊)資料 輪出蟑及一先進先出記憶體(FIFO)輸出控制槔。該先進先 出記憶體⑽〇)資料輸人琿用以讀取該先進先出記憶體13 中之寫入記憶體單元之該iSCSI協定資料單元。該先進先出 。己隐體(FIFO)資料輸出埠用以將修改後之該iscsi協定資 料單元寫入该先進先出記憶體〗3中之讀出記憶體單元。該 先進先出記憶體(FIFO)輸出控制埠用以傳送讀取或寫入之 控制訊號至該先進先出記憶體1 3。 該直接記憶體存取(DMA)控制訊號埠147包括··一直接記 fe體存取(DMA)輸入控制埠及一直接記憶體存取(Dma)輸 出&制璋。该直接έ己憶體存取(DMA)輸入控制璋用以接收 該直接記憶體存取(DMA)控制器15所傳送的控制訊息、設 定是否計算該iSCSI協定資料單元之表頭摘要、設定是否計 算該iSCSI協定資料單元之資料摘要、設定該iScsi協定資 料單元之表頭大小、設定該iSCSI協定資料單元之資料在該 該先進先出記憶體13的位置、判別該直接記憶體存取(DMA) 102328.doc 1265451 控制器15是否已經將資料都搬到該先進先出記憶體13之該 寫入記憶體單元中、設定目前之直接記憶體存取模式為傳 达模式(Tx她)或純模#Rx m。峨取得該循環冗餘 碼(CRC)控制模組m的狀|。該直接記憶體存取(膽A)輸 出控制相以傳送回應訊號至該直接記憶體存取_Α)控 該^環冗餘碼(CRC)暫存器槽案(Register FiIe)148包括 :循環冗餘碼(CRC)控制暫#器及—循環冗餘碼(crc)狀 態暫存器。該循環冗餘碼(CRC)控制暫存器用以儲存目前之 该直接記憶體存取(DMA)控制器15之設定、目前是否啟動 該isCsm定資料單元之表頭摘要之計算、目前是否啟動該 ⑽I協定資料單元之資料摘要之計算、目前處理之該 ⑽1敎資料單元之表頭之大小及目前該iscsm定資料 單元之資料在該先進先出記憶體13的位置。該循環冗餘碼 (CRC)狀態暫存ϋ用以儲存目前該循環冗餘碼(CRC)控制 模組144之處理狀態。 參考圖4,其顯示該循環冗餘碼控制模組144之資料處理 流程示意圖。該循環冗餘碼控制模組144另包括:一第一比 較器161、一第二比較器162、一第三比較器163、一第四比 較器164、一第五比較器165、一第六比較器166、一循環冗 餘碼(CRC)取代及比較電路167。首先由該阳〇資料輸入埠 讀取該iscsi協定資料單元的資料。由該第一比較器ΐ6ι判 別是否啟動iSCSIM冗餘碼的運算,如果沒有,就將資料 寫回該FIF〇f料輸㈣。若啟動⑽I循環冗餘碼的運算, 102328.doc 1265451 則由忒第一比較器162判別目前該iscsi協定資料單元之資 料是否為表頭(Header),若為表頭,則至該第三比較器ία; 若不是表頭而為資料,則至該第五比較器165。 該第三比教器163用以對別是否啟動表頭之循環冗餘碼 (CRC)的運异,若不啟動,則將資料寫回該FIFO資料輸出 埠;若啟動表頭之循環冗餘碼(CRC)的運算,則至該第四比 較器164。該第四比較器164用以判別是否具有表頭摘要 | (Header digest),若沒有,就將資料寫回該FIF〇資料輸出 埠,若有表頭摘要,則將資料傳至該循環冗餘碼計算模組 143以計算該循環冗餘碼。 該第五比較器I65用以判別是否啟動資料(Data)之循環冗 •餘碼(CRC)的運算,若不啟動,則將資料寫回該FIF〇資料 輸出埠;若有啟動資料之循環冗餘碼(CRC)的運算,則至該 第/、比較器166。該第六比較器166用以判別是否具有資料 摘要(Data digest),若沒有,就將資料寫回該打17〇資料輪出 .埠,右有貧料摘要,則將資料傳至該循環冗餘碼計算模組 143以計算該循環冗餘碼。 該循%冗餘碼(CRC)取代及比較電路丨67用以接收該循環 —冗餘碼計算模組143所計算之該循環冗餘碼,在傳送模^ 枯,4循環冗餘碼將取代該iscsi協定資料單元甲既有之資 料摘要或表頭摘要值;在接收模式時,該循環冗餘碼會: 該iSCSI協定資料單元中之資料摘要或表頭摘要值作比 較。若相同則將資料摘要或表頭摘要值設為〇;若不同,則 不改變資料摘要或表頭摘要值。並將修改後之該iscsi協定 102328.doc 13 1265451 資料單元傳送該FIF0資料輸出埠,以寫入該先進先出記憶 體13之該讀出記憶體單元。 本务明之直接記憶體存取系統1〇提供iscsi協定與 TCP/IP協定的資料傳輸介面,在直接存取iscsi協定資料單
元的過程中,自動產生iscsl循環冗餘碼,且自動更新iscsI 協定貧料單元之摘要值(digest)。在不影響原有的iscsl協定 與TCP/IP協定之情形下,能提供快速且高效能的iscsi循 環冗餘碼處理。因此,利用本發明之直接記憶體存取系統 可降低CPU之負擔(loading),並減少重複讀取|3(::31協定資 料單元之時間(latency),以提升處理以以以盾環冗餘碼的速 度與效能。 惟上述實施例僅為說明本發明之原理及其功效,而非用 以限制本發明。因此,習於此技術之人士可在不違背本發 月之精神對上述貫施例進行修改及變化。本發明之權利範 圍應如後述之申請專利範圍所列。 【圖式簡單說明】 圖1為本發明用於網際網路小型電腦系統介面(iscsI)之 直接記憶體存取系統之示意圖; 圖2顯示在iSCSI協定與TCp/Ip協定之間利用本發明之直 接圮憶體存取系統直接存取iscsi協定資料單元之示意圖; 囷3為本兔明之丨§〇81循壞冗餘碼模組之示意圖;及 圖4為本發明之循環冗餘碼控制模組之資料處理流程示 思圖。 【主要元件符號說明】 102328.doc -14- 1265451 10 本發明之直接記憶體存取系統 11 第一匯流排介面 12 第二匯流排介面 13 先進先出記憶體 14 iSCSI循環冗餘碼(CRC)模組 15 直接記憶體存取(DMA)控制器 20 iSCSI協定處理方塊 21 iSCSI協定資料單元 211 iSCSI表頭 212 表頭摘要 213 資料 214 資料摘要 30 TCP/IP協定處理方塊 31 第一 TCP協定資料單元 311 TCP表頭 312 iSCSI協定資料單元第一區段 32 第二TCP協定資料單元 141 先進先出記憶體(FIFO)側介面 142 直接記憶體存取(DMA)控制器 143 循環冗餘碼(CRC)計算模組 144 循環冗餘碼(CRC)控制模組 145 循環冗餘碼(CRC)控制訊號埠 146 先進先出記憶體(FIFO)控制訊 147 直接記憶體存取(DMA)控制訊 102328.doc -15 · 1265451 148 循環冗餘碼(CRC)暫存器檔案 161 第一比較器 162 第二比較器 163 第三比較器 164 第四比較器 165 第五比較器 166 第六比較器 167 循環冗餘碼(CRC)取代及比較電路 102328.doc • 16 -