企業(yè)級SSD需要在大量企業(yè)數據讀寫(xiě)下保持超高穩定性,以及24 小時(shí)全天候運行,SSD的讀寫(xiě)速度、使用壽命、穩定性及可靠性是企業(yè)級用戶(hù)關(guān)注的重點(diǎn)。為滿(mǎn)足用戶(hù)對企業(yè)級SSD高性能、低延時(shí)、輕量級、高可靠等需求,憶聯(lián)設計并開(kāi)發(fā)了適合SSD的嵌入式操作系統(Operating System,縮寫(xiě):OS),并在其上構建了可復制性強的SSD 控制器軟件系統。
嵌入式軟件分為三個(gè)層次,即驅動(dòng)層、OS層、業(yè)務(wù)層。業(yè)務(wù)層集結了龐大復雜的產(chǎn)品功能,負責處理業(yè)務(wù)邏輯的部分,通常包括接口協(xié)議、業(yè)務(wù)功能實(shí)現、系統數據保存等;驅動(dòng)層把設備的硬件訪(fǎng)問(wèn)抽象成軟件接口,為OS層和業(yè)務(wù)層服務(wù);OS層為業(yè)務(wù)層提供軟件平臺服務(wù),讓業(yè)務(wù)層可以聚焦在實(shí)現龐大復雜的軟件功能上。
圖1
通用的OS功能很多,包括處理器管理、內存管理、設備管理、文件管理、作業(yè)管理等,而對于嵌入式OS來(lái)說(shuō),主要聚焦在處理器管理、內存管理等核心功能上,本文則重點(diǎn)闡述處理器管理、互斥、通信。
SSD系統的處理器架構和OS部署
在PCIe 4.0時(shí),SSD的讀寫(xiě)帶寬達到8GB/s, PCIe 5.0時(shí)SSD的讀寫(xiě)帶寬可能達到16GB/s。為了實(shí)現SSD的高性能,通常SSD控制器會(huì )使用多CPU、甚至多Cluster的處理器架構,分別用于SSD業(yè)務(wù)計算和Nand flash操作。
圖2
在多處理器、多Cluster架構下,業(yè)務(wù)部署時(shí)可以選擇SMP模式、AMP模式、或者SMP和AMP混合模式。在SSD系統里,基本上都是SMP模式和AMP模式混合,OS要負責程序調度、互斥、通信功能。在嵌入式系統中的AMP模式的通信,可以類(lèi)比為通用系統里多進(jìn)程之間的通信,因為沒(méi)有全局數據可用,要借助外部存儲空間進(jìn)行通信。
憶聯(lián)OS的調度策略
常規的OS調度對象都是線(xiàn)程,且每個(gè)線(xiàn)程有自己的堆棧和優(yōu)先級,具有搶占機制。憶聯(lián)在設計SSD嵌入式系統時(shí),通過(guò)分析發(fā)現,線(xiàn)程調度開(kāi)銷(xiāo)大、線(xiàn)程之間存在較為復雜的互斥問(wèn)題、容易出現優(yōu)先級逆轉死鎖問(wèn)題,加之線(xiàn)程運行的隨機性和無(wú)序性,讓系統時(shí)刻處于“不確定”狀態(tài)。因此,憶聯(lián)SSD選擇了自創(chuàng )的“功能代碼(入口函數及其調用的全部函數)”調度策略。為了描述方便,本文把這些可以被OS調度的“功能代碼(入口函數及其調用的全部函數)”,稱(chēng)為SSD系統里的“事務(wù)”。
在SSD系統里的程序,不再以線(xiàn)程方式組織,而是以一個(gè)個(gè)不會(huì )阻塞的獨立“事務(wù)處理流程”方式組織。這些“事務(wù)處理流程”可以以各種方式被OS調度。
事務(wù)的主要特征:
(1)不會(huì )阻塞。一個(gè)事務(wù)完成一個(gè)特定的計算,它在計算過(guò)程中,不需要等待外設動(dòng)作,會(huì )一直運行到結束。如果一個(gè)流程會(huì )被阻塞,則需要在阻塞點(diǎn)切分為多個(gè)獨立的事務(wù)。一旦一個(gè)事務(wù)被CPU執行,則一定會(huì )執行到事務(wù)結束。在系統里,除了每個(gè)CPU正在執行的事務(wù)是運行狀態(tài),其他事務(wù)都處在結束狀態(tài)。比起線(xiàn)程的阻塞狀態(tài),事務(wù)狀態(tài)變得極其簡(jiǎn)單。
(2) 事務(wù)共享堆棧。事務(wù)執行完成時(shí),不再有局部變量需要保存在堆棧里。事務(wù)共享堆棧,堆棧需求小,調度時(shí)也沒(méi)有了堆棧切換的開(kāi)銷(xiāo)。
(3)同一個(gè)CPU,事務(wù)串行執行。一個(gè)CPU里的事務(wù),一定是執行完畢一個(gè)事務(wù)后,才能開(kāi)始執行下一個(gè)事務(wù)。同一個(gè)事務(wù),在一個(gè)CPU上不會(huì )重入。
(4)SMP模式下事務(wù)間互斥變得簡(jiǎn)單。見(jiàn)圖3。
圖3
備注:
(1)事務(wù)完成時(shí),不會(huì )持有全局變量的訪(fǎng)問(wèn)鎖。
(2)AMP之間不存在全局共享數據,不存在互斥。
事務(wù)的調度方式
圖4
事務(wù)優(yōu)先級和實(shí)時(shí)性
一次性事務(wù)具有事務(wù)優(yōu)先級功能。OS接受一次性事務(wù)調度請求,通過(guò)高優(yōu)先級來(lái)處理系統里一些緊急事務(wù),以此達成特定事件的實(shí)時(shí)處理。
圖5
中斷與事務(wù)
前面已經(jīng)講述在憶聯(lián)OS里,同一個(gè)CPU里事務(wù)之間不會(huì )出現搶占,只有當一個(gè)事務(wù)運行完成后,才會(huì )運行另外一個(gè)事務(wù),但是中斷依然具有搶占功能。
中斷處理程序遵循常規的中斷處理流程,中斷到來(lái)時(shí),還是會(huì )搶占當前事務(wù)。當中斷到來(lái)時(shí),OS會(huì )把當前運行的事務(wù)程序壓棧,跳轉到中斷處理程序運行,中斷處理程序完成后,被中斷的事務(wù)程序被恢復運行。
中斷處理程序運行時(shí)也是使用事務(wù)程序運行時(shí)的堆棧。
中斷處理程序具備的搶占功能,可以滿(mǎn)足系統里對于實(shí)時(shí)性要求高的場(chǎng)景,但同時(shí)也帶來(lái)了中斷和事務(wù)之間的互斥問(wèn)題。中斷和事務(wù)的互斥方式如圖六。
圖6
中斷處理程序實(shí)現時(shí),可分為中斷上半部和下半部。上半部讀取外設數據,下半部發(fā)送事務(wù)消息到OS調度處理。中斷下半部的互斥就變成了事務(wù)之間的簡(jiǎn)單互斥方式了。中斷發(fā)給OS的事務(wù)調度消息,可以根據需要選擇使用“緊急、高、常規”優(yōu)先級。
中斷處理舉例:IPC中斷
一般來(lái)說(shuō),IPC中斷用于A(yíng)MP與 CPU之間的通信。
發(fā)送方把數據寫(xiě)入共享的DDR后,發(fā)送IPC中斷給接受方。
接收方的IPC中斷程序讀取DDR里的通信數據,然后發(fā)送事務(wù)消息到自己的OS,OS按照事務(wù)進(jìn)行調度處理該事務(wù)消息。
中斷處理程序讀取DDR里的通信數據,就是中斷上半部。讀取通信數據并做具體處理,則是事務(wù)完成,是中斷的下半部。
總結
通過(guò)事務(wù)調度思路,憶聯(lián)實(shí)現了旗下企業(yè)級SSD產(chǎn)品的高性能和高可靠性,業(yè)務(wù)功能的設計、實(shí)現、擴展都變得更加簡(jiǎn)單和靈活,業(yè)務(wù)功能的代碼復用也變得更簡(jiǎn)單,這讓?xiě)浡?lián)在開(kāi)發(fā)新代次SSD時(shí),可以很好地繼承已有代次SSD產(chǎn)品的功能和品質(zhì),保障憶聯(lián)可以持續為客戶(hù)提供高品質(zhì)SSD產(chǎn)品與存儲解決方案。
地址:深圳市南山區記憶科技后海中心B座19樓
電話(huà):0755-2681 3300
郵箱:support@unionmem.com