【IT168 评测】一般的RAID HBA 有下面型態的硬體架構
IOP +IOC
ASIC IOP +IOC
FPGA ,CPLD 的 IOP +ASIC IOC
ROC (Raid on Chop)
ASIC 的ROC
FPGA的ROC
ASIC (Application-specific Ic) 這種要Tape out的(好像1000萬起跳吧 忘了價格..) ,要有量才合算
LSI 這種Fabless SOC Designer 廠商當然都是ASIC 產品...
FPGA or CPLD 可程式邏輯閥陣列,這就比較有彈性了.
比如說一些SSD Raid ,DRAM Raid.都是用FPGA實現.
但是如果量大是有點不合算
像H牌這類,部份XOR 就是用 FPGA or CPLD,PH
至於FPGA 做SAS PHY 仿真就不多了
從RAID Controller的觀點來看, 他是基於單純的SAS/SATA HBA上提供了RAID功能(RAID 0, RAID 1, RAID 5, RAID 6,甚至是混合陣列等等..), 有些RAID Controller在單顆Storage情況下可以直接被識別, 有些則是必須要建立陣列(Array)才能使用, 可能根據Option ROM載入的內容而有所差異. 下面是一張AMCC/3ware早期的9690SA-8i RAID Controller, 這是一款Hardware RAID, 由PowerPC processor, ASIC XOR Accelerator和Emulex IOC組成經典的StorSwitch分離式架構. 在3ware還沒被LSI買下以前. 長年以來都是應用這種架構, 3ware對於早期開發SATA產品中, 面對SCSI產品, 這個架構有相當的優勢性, 不過現在頗老矣...:
▲
最左邊那塊是存放韌體代碼的flash, 由於StorSwitch架構沒有太多的詳細資料, 所以我的猜測是這樣的. 那顆PowerPC的processor-PPC405CR提供266MHz的時脈, 這顆處理器一般的用途可能是一些平常I/O處理, 例如中斷執行, flow control, 另外還包括了對於RAID code的執行, AMCC握有PowerPC的授權後, 不用白不用. 中間那顆是AMCC特製的ASIC XOR加速器-G133 RAID engine, 提供大量的DMA通道(32條, StorSwitch架構的特色之一)給更多的Storage使用, 附加XOR和RAID 6所使用的GF硬線加速設計, PPC405CR加上G133 RAID engine應該就是一個完整的IOP(I/O Processor)架構. 根據AMCC/3ware之前相關產品資料來看, Cache Memory部分應該是從AMCC ASIC XOR加速器連接, IOC則是使用Emulex的IOC 500S, 提供兩個wide-port的連接.
就我以前拿4顆Seagate的15k.6 146GB組成RAID 5後進行測試, 非常好的的情況都無法突破1GB/s的循序讀寫傳輸速度, 故此我是認為bottleneck應該是卡在host-bus的頻寬問題,也許有可能的情況就是AMCC ASIC XOR加速器連接IOC 500S是用PCI-X bus. 當然, 這些僅僅是我的一些猜測, 其實蹤觀3ware後期產品來看, 並沒有太多的改善, 不管是9550系列或著9650系列, software部分我倒是認為作的不差. 下面是一張LSI的SAS 9211-8i的HBA, 提供了IT/IR雙模式, 在單顆Storage連接情況下, 可以直接被識別使用:
▲
這張HBA使用了LSISAS2008晶片, 是Hardware RAID架構, 內置了一顆PowerPC-PPC440 at 533MHz的processor, LSISAS2008的特點是支持了6Gb/s介面的SAS 2.0規格, 目前被廣泛應用在HBA, ROMB方案下. 這顆晶片提供了基礎RAID功能, 可以從官方文件來看是用來取代LSISAS1068/E的, 僅擁有入門級(entry-level)的性能, 他跟同門師兄-LSISAS2108相比, 可以說是差了一大截, 他沒有任何XOR硬線加速設計, 無實作記憶體控制器來連接外部記憶體作為Cache Memory, 光缺少這兩種特徵, 足以讓RAID性能受到嚴重的打擊. 從Intel的一份文件顯示, 晶片裡面有整合一塊2MB的context RAM可以用來做為buffer; 支持MSI-X特性, IRQ x15, 對於SMP/CMP系統來說, 在大量I/O的情況下會有所助益.
在HBA方案中, 提供IT(Initiator and Target)模式作為原生SAS模式支持 (thx 注 這是很特別狀況),
另一種IR(Integrated RAID)模式提供了基礎RAID功能實現(RAID 0, RAID 1, RAID 10和RAID 1E), 在LSI專屬的Fusion-MPT架構, 應用了子處理器(processor)來執行對I/O的相關操作或著有關RAID的運算. 另外ROMB設計方案中, 提供一種RAID key的小塊物理PCB插件,如下圖所示:
▲
透過這個插件而外提供RAID 5模式, 不過前面說過, 由於沒有了XOR硬線加速設計和記憶體控制器的實作, 因此RAID 5性能可以說是不堪入目.在使用RAID key的情況下, BIOS模式會切成IMR(Integrated MegaRAID)模式, 這個模式就是MegaRAID產品系列所採用的, 提供更多的特性, 這與LSI SAS MegaRAID 9240系列是相同的. 當切換成IMR模式後, 就必須強制建立陣列才能使用, 而且使用的IRQ數量只有4組, block size可以選擇, 但最高只能到64k, 支持SSD Guard技術.下面是一張LSI MegaRAID SAS 9240-8i的RAID HBA,歸屬於MegaRAID產品線,所以可以提供對RAID 5模式的支持:
▲
一般RAID就設計上來說分成兩種形式: Software RAID和Hardware RAID, 我想這玩過或著知悉相關RAID知識的人大致上都清楚, 在說明這兩種設計差異之前, 並不包含一些特殊的實務設計, 例如某家RAID廠商早期某款產品使用某種程度的XOR硬線加速設計(CPLD/FPGA)來提高性能.
Hardware RAID比較好講,基本的架構就是IOP+IOC的組合,IOC可以說是SAS/SATA HBA部分,IOP通常只是拿來加速運算用的。先來講講Software RAID,根據Adaptec早期提供的一份基礎文獻(Hardware RAID vs. Software RAID: Which Implementation is Best for my Application?),對於了解Software RAID和Hardware RAID差異是值得參考的,就Software RAID的特徵,Software RAID拆成兩個部分:Pure Software Model – Operating System Software RAID和Hybrid Model – Hardware-Assisted Software RAID。在Pure Software Model下,這個模式是非常容易瞭解的,RAID功能與實作上的決定完全取決於作業系統而定,此模式提供最低成本的考量,但是缺點不少,最大的缺點在於 他I/O性能不佳,而且受到Software層級上的限制,意味著它容易被作業系統綁死,下圖是一張Pure Software Model的基礎示意圖:
▲
Pure Software Model在一般情況下,是不會去應用的,尤其最近這幾年來,Hybrid Model – Hardware-Assisted Software RAID反而是最常被用到的,基本上就是SAS/SATA HBA with a RAID BIOS或著是RAID BIOS integrated onto the motherboard,例如Intel的ICHxR就是一個Hardware-Assisted Software RAID,透過額外的硬體加入RAID的支持(將RAID Option ROM寫在BIOS裡),RAID功能部份可以獨立於作業系統,資料安全上也高於Pure Software Model,透過系統啟動BIOS初始化階段,可以預先檢測到RAID模式的狀況,並且提供獨立的GUI設定RAID組態,當然在某些RAID模式 下,IO性能依然會受到限制,例如典型的RAID 5模式。下面是一張基本的示意圖:
▲
這張描述的是以HBA with a RAID BIOS的模型,RAID Software與HBA部分包起來,RAID Software意指著將有關RAID代碼部分寫在NVRAM裡,作為系統啟動初始化的時候,獲得RAID的相關功能,也包括專屬的組態設定 (dedicated GUI and software to build and maintain the RAID)。
這張是我取自DELL網站加以修改的基本HBA with a RAID BIOS結構:
▲
另外這張表示圖則是ICHxR實現RAID功能,將RAID Option ROM寫到主機板上的System BIOS裡,以提供RAID Configuration Utility建立RAID:
▲
Software RAID的相反就是Hardware RAID,如之前所提,典型就是IOP+IOC(A Discrete RAID Controller Card)的組合,IOP作為某些模式(例如RAID 5)的運算加速時,可以提供某種程度上的效益(得視該硬體處理性能而定),並且IOP會包含一些額外的硬線加速設計,當然Hardware RAID花費的建置成本都高於Software RAID,以下是來自DELL的IOP+IOC示意圖:
▲
這種結構大多都會包含對Cache Memory的支持,藉以提供Read/Write Cache算法來增強I/O性能,透過BBU來提供某種程度上的資料安全性。幾年前IOP+IOC的分離設計代表最經典的就是Intel IOP333,也就是說IOC部分透過額外的RAID HBA晶片來連接,以下是IOP333的方塊圖:
▲
上述有一個AAU(Application Accelerator Unit),這個硬線加速設計可以增強RAID6的運算性能,但是IOP333面臨到的最大瓶頸問題在於IOP與IOC之間的連接頻寬,基本上是透過 PCI-X拉過去的,最大提供1GB/s的帳面有效頻寬,這反而成了I/O性能上的問題,原因很簡單!就SAS 1.0規範來說好了,一條narrow link連接到Storage所支持的帳面頻寬為3Gbps,而wide port包含4 narrow links,3Gbps x4=12Gbps=1.5GB/s x80%=1.2GB/s,在1.2GB/s的頻寬下早就打爆PCI-X了,當然實際情況不是這樣,一個wide port還不太容易衝爆,但是wide port x2的結果就不是如此了,PCI-X頻寬不敷使用也是遲早的事。如下圖來自DELL PERC 5文件所示:
▲
可以看到使用IOP333與IOC接通,IOC是使用LSI1068控制晶片,LSI1068面對的Host Bus支持為PCI-X,IOP333與LSI1068之間的頻寬只有1GB/s,導致連接多顆Storage後,性能上的問題會愈來愈嚴重。以下是經典 的DELL PERC 5:
▲
IOC部分則是使用LSI1068(沒蓋散熱片的那顆),提供SAS/SATA HBA功能,在另一款的LSI 8344ELP也是這樣的設計,主要差別在於Connector連接規格不同與Cache Memory的可擴展性,如下圖所示:
▲
下面這張是早期Adaptec優秀的IOP333產品-4805SAS:
▲
IOC部分是採用與Vitesse合作的AIC-9410W晶片,提供wide port x2(4 narrow links/per port)。
這張是相反的4800SAS,採用的IOP為IOP331:
▲
IOP331面向的Host Bus為PCI-X,結果跟4805SAS是一樣的。
另外3ware經典的StorSwitch結構也是IOP+IOC的分離設計,而且韌體代碼的操作交由獨立的PPC來處理,下面是一張3ware的 9650SE-2LP:
▲
最左邊包含了PPC+韌體部分,中間則是一顆IOP,最右邊是Marvell的IOC,來提供對Storage的連接,這張好幾年前有玩過,實在不怎麼樣 的玩意兒,Host Bus部分為PCIe Gen1 x1,頻寬很小,提供Cache Memory支持,但是BBU功能被拿掉,且Connector是discrete的,也就是2 SATA ports,價格到現在還不便宜,因此可以列為最不划算的RAID產品之一XD。
Intel從IOP33x之後,大幅改進推出IOP34x的優秀產品,這是一個RoC架構的產物,基本上IOP與IOC完全被整合,所以不必考慮之間的頻 寬問題,以下是IOP348的方塊圖:
▲
IOP34x是雙處理器結構,並且整合IOC部分,提供wide port x2(4 narrow links/per port),Cache Memory支持DDR2-533規格。RoC架構是這幾年的發展趨勢,雖然他不是創新的架構,不過這一兩年來的RAID硬體發展可以說是他的天下。下面 是Areca的優秀RAID產品-ARC-1680ix-24:
▲
可以看到這款可以支持到2 wide ports以上,因此這絕對是透過SAS Expander方式(右邊的那顆晶片)去擴展更多的wide port來連接大量的Storage。
Roc架構的一個經典產品是LSI的1078系列,下面可以看到一張來自DELL對PERC 6採用LSI1078的基本結構圖,事實上它是用來跟IOP333產品-PERC 5去做比較:
▲
PERC 6是前一兩年當紅的產品,因為它比LSI同期產品還要便宜不少,加了BBU也沒多加少錢,要注意!LSI的BBU實在貴到翻掉=_="",一塊就擁有跟 LSI 8888ELP(LSI1078)差不多的性能,缺點是相容性上的問題要注意。
▲
DELL PERC 6,Connector規格標準為非主流的SFF-8484標準,256MB DDR2-667 Cache Memory,後期的韌體支持SSD Guard(印象是要刷LSI的firmware...)。下圖則是前幾年LSI Internal/External RAID最高端的產品-MegaRAID 8888ELP:
▲
Connector規格標準為現今主流的Internal SFF-8087 x2和External SFF-8088 x2,透過SAS Expander連接可以達到240個Storage,Cache Memory可擴展,最高可以達到1GB,在當時無論如何都是非常強悍的RAID產品。而關於LSI1078的方塊圖如下:
▲
基本上塞一顆PPC440(@500MHz)的IOP,還包含了XOR Engine的硬線加速設計。LSI1078目前的最大缺顯在於Host Bus的頻寬瓶頸,因為PCIe Gen1 x8最大僅能支持到2GB/s的帳面有效頻寬,明顯略有不足,在後來的LSI2108就改善了這個問題,透過PCIe Gen2 x8提供了4GB/s的Host Bus帳面有效頻寬,可以說是大幅緩和!如下基本示意圖所示:
▲
LSI2108不僅僅是提高了PCIe頻寬的需求,並且提升了PPC440的性能(@800MHz),Cache Memory的支持提供到DDR2-800。下面是一張性能極為優秀的LSI MegaRAID 9260-8i:
▲
當然價格也是相當難看,而且BBU這部分實在貴得離譜,一顆BBU07要將近9k=.="",性能是很好沒錯,不過整體價格實在是OOXX的。
目前拿Intel和LSI的例子來舉,僅是說明RoC成為這幾年來發展的主流,當然並不單單是只有這兩家,另外還包括了Marvell的88RC9580 和PMC-Sierria的PM8011。
另外Intel目前已捨棄ARM架構的Xscale IOP設計,轉向以Nahalem架構為主的x86架構(Xeon C5500/C3500[Jasper Forest]),走的方向也比較與眾不同,HBA部分透過SBB總線架構用來與Backplane(with SAS Expander),SBB連接至Backplane提供相當高的I/O傳輸頻寬,對於一個mini-SAS Port的連結達到24Gbps的頻寬(並不一定如此,得視硬體設計!),不過現階段看到的透過x86 CPU僅能加速RAID 5/6運算性能,沒有包含對SATA/SAS連接器上的支持,依然還是得透過外接SAS/SATA HBA來提供(例如使用LSI2008作為IOC上的支持),而且x86架構的情況下,整個配套的軟體方案就顯得更重要了,就個人詢問得知目前比較完善在 Linux部分,Windows部分還是有待加強,這是我所得知的部分。以下是自繪的SBB架構的一部分:
▲
可以看到,透過Intel C5500/C3500[Jasper Forest]提供了一種XOR/P+Q硬線加速設計,用來提升對RAID 5/RAID6的性能,由於並沒有IOC的部分,必須另外接一塊做連接,例如這邊可以連接LSI2008作為與SAS Expander的溝通,最後利用SAS Expander透過Backplane與Storage建立連接(通過AMC)。
如果把Intel排除的話,那這幾年的Hardware RAID設計可以說是殊途同歸,清一色都是RoC架構,不管是LSI/3ware、Marvell、Areca(採用Marvell RoC)、Promise(採用PMC-Sierria RoC)或著PMC-Sierria/Adaptec等等...,都是朝向這個方向發展,這不僅僅是性能上的提升,高度整合對於成本上的控制也有所助益, 整個PCB的規模也有助於精簡。此外,SSD的逐漸發展,也將為成為各家RAID廠商的優化議題,尤其以LSI來說,提供的LSI優化方案較為齊 全,Advanced Software Options包含了兩項對於SSD的非常好的實作,當然這些都是要購買License的,至於其他,被PMC-Sierria買下來的Adaptec先前也 提供一種MaxIQ技術,只是這種技術花費成本相當昂貴。而Marvell在較低階的88SE9128未來也將會提供類似MaxIQ的低成本混合加速技術 -HyperHDD, 事實上這顆晶片有整合一顆ARM-based的processor用來分擔CPU上的I/O操作, 成為一個子I/O系統, 所以姑且判定為一種IOC-based的Hardware RAID架構吧, 很可惜的是他只支持2 SATA ports, 也因此不太占用到很大的host-bus頻寬, 所以只支持PCIe Gen2 lane x1, 提供500MB的理論傳輸速率。
▲
大致上關於SAS/SATA HBA和RAID HBA,所想到的就這些(以後還想到甚麼再去補..)。接下來就是一些RAID硬體資訊的收集,往後作為備忘查詢之用途XD!