150 likes | 310 Views
Hardware Real-time microkernel with hardware context switch and hardware multi-scheduling for multi-processor Systems. 徐 子 傑 Hsu,Zi J ei. Department of Electrical Engineering National Cheng Kung University Tainan, Taiwan, R.O.C. Introduction(1/2).
E N D
Hardware Real-time microkernel with hardware context switch and hardware multi-schedulingfor multi-processor Systems 徐子傑 Hsu,ZiJei Department of Electrical Engineering National Cheng Kung University Tainan, Taiwan, R.O.C
Introduction(1/2) • 現在較高端的Embedded system開發都需要執行非常龐大的運算量或非常複雜的應用程式, • 傳統的單核心CPU搭配軟體即時作業系統已經無法提供如此龐大的效能和運算。 • 現在大部分的系統都已經採用多核心處理器架構搭配多核心的作業系統去達到更好的效能。 • 因此我想要設計出專用的處理器搭配支援多核心的硬體即時作業系統進而讓整個系統的效能提升。 • 使用硬體作業系統可擁有以下優點: • 1. 加快Systemcall的執行速度 • 2.Systemcall的執行時間較好預測 • 3. 讓OS和CPU可以平行執行 • CPU處理thread時可平行做contextswitch、scheduling • 4. 減少記憶體所使用的空間
Introduction(2/2) • 將作業系統硬體化首先要考慮的就是彈性和面積的問題, • 集成式架構(monolithic kernel)的作業系統包含所有的系統服務和驅動程式,雖然核心內溝通較快但是驅動程式容易造成整個kernel的crash, • 若用硬體實現集成式架構的作業系統在驅動程式上就完全失去彈性,並且需要非常龐大的面積。 • 微核心架構(Micro-kernel)的作業系統只包含必要的系統服務,例如 : 排程管理、記憶體管理、行程間溝通…, • 額外的系統服務或驅動程式則在設計在核心外(user mode), • 每個核心的系統服務都會被視為不同的行程,因此呼叫核心外的系統服務就還必須透過核心內的行程溝通,執行的速度就會慢。 • 對於micro-kernel較安全,額外的服務程式並不會危害到micro-kernel。 • 將微核心架構的作業系統架構硬體化即可利用花費最小的面積能達到最佳的效能提升, • 並且還可透過額外的軟提服務程式增加作業系統彈性。
HRTM systemoverview(1/10) Bub • CS unit ALU • CS unit • CS unit ALU ALU • CS unit ALU CS Manager Scheduler Semaphore controller Register bank1 Register bank1 Register bank1 Register bank1 Register bank2 Register bank2 Register bank2 Register bank2 D-CPU D-CPU D-CPU D-CPU Dedicated-CPU Thread control block Memory Semaphore buffer HRTMinformation HRTM HRTM : Hardware Real time Microkernel Figure 1 HRTM system architecture diagram
HRTM system overview(2/10) • Dedicated-CPU • 我計劃設計一簡單且專用的CUP,大概要滿足以下功能。 • 1.arm like指令:參考arm的指令並且取幾個較常用的指令做設計 • 一般ARM指令的典型指令編碼格式如下所示: • cond : 指令執行的條件式編碼 • opcode : 指令操作符號 • S : 指定是否在運算執行時順便更新CPRS的旗標 • Rn: 第一運算原的暫存器編號 • Rd: 目標暫存器編號 • Operand2 : 第二運算元,可為常數值或者暫存器編號 • Arithmetic instruction: • ADD: 加法指令 • SUB: 減法指令 • CMP :比較指令且改變CPSR
HRTM system overview(3/10) • Logic instruction: • AND:AND運算指令 • OR:OR運算指令 • BIC : 位元清除指令 • Branch Instruction: • B: 跳躍指令 • BL: 帶返回的跳躍指令 • Load Instruction: • LDR: 記憶體到暫存器的傳輸指令 • Move instruction: • MOV: 搬移指令 • Store instruction: • STR : 暫存器到記憶體的儲存指令 • Others: • NOP : 無動作指令 • Semaphore : 改變Semaphore的數值指令。
HRTM system overview(4/10) • 2. 擁有兩個完全一樣的registerbank,並且context switchunit和ALU都可以直接控制這些register bank。 • Register bank的設計是參考ARMuser mode的Register bank做設計,可見左圖 Figure 2。 • 每一個registerbank擁有R0~R15、CPSR共16個暫存器。 • R13=SP(stack point) • R14 = LR (link register) • R15 = PC (program counter) • 因為並沒有設計中斷的功能所以並沒有提供其它mode功能。 • Context switch unit和ALU可以透過使用不同的registerbank而達到平行執行, • 換句話說當ALU使用register bank1執行thread時,Context Switchunit可以同時使用register bank 2做context switch, • 因此context switch完全不會影響整個系統的throughput。 • 這點也是跟看的A hardware operating systemkernel不同的地方,那篇paper只有強調scheduling(包括從記憶體抓取TCB)和CPU同時執行,但是在在傳輸上CPU還是必須waiting到bus傳好。 Figure 2 ARM register bank
HRTM system overview(5/10) • 我打算在CPU的registerfile上多加設計1bit的register bank選擇位元(Register bank select bit : RBSB)訊號。 • 當ticktime處發時Scheduler就可改變RBSB訊號讓CPU去抓取另一個registerbanks來執行。 • 反之context switchunit也可以透過此訊號來判斷要使用哪一個registerbank做context switch。 • 若在一個tick內context switchunit完成多個contextswitchunit, • 則Scheduler就可以一次tick改變多個RBSB訊號去達到multi-scheduling的功能。 • 設計D-CPU主要目的在於可以執行指令並且可透過HRTM直接控制registerbank, • CPU的效能並不是放在我設計的首要目標,因此第一版的設計並不會使用一些CPU常用於提高效能的方法。 • EX: pipeline、forwarding、Tomasulo algorithm、cache、BTB… • 若整個系統都可以正常運作在第二版之後的設計會再加強CPU。
HRTM system overview(6/10) • Hardware Real time Microkernel : • Scheduler • 採用最常用Priority Round Robin scheduling並且加入aging機制避免starvation狀況。 • 越需要即時的thread擁有越高的priority,若priority一樣則輪流執行。 • Scheduler會根據Thread control block內的priority來決定ready queue內要哪一thread要被執行, • 一旦判斷那一thread要被執行則馬上通知contextswitchunit去執行context switch, • Scheduling的速度設計期望是越快越好,這樣可以在一個tick裡面做完多次contextswitch,看Figure3。 • Tick時間擁有configurability,可靠者更改參數去改變tick的速度。 • Scheduling的速度雖然會隨者thread和semaphore多寡而有變動,但理論上是維持一定。 Change RBSB Change RBSB CS CS CS CS CS CS Tick time Tick time Figure 3 context switch within tick time
HRTM system overview(7/10) • Context switch management • 接受scheduler所計算的結果,真正執行contextswitch的行為。 • 主要負責和D-CPU上的context switch unit溝通,將D-CPU的register bank和Thread Control Block的資料做對換的工作。 • 因為和scheduler是分別不同的硬體, • 因此Contextswitchmanagement和scheduler可以平行執行,在同一tick內完成越多次的contextswitch。 • Semaphore controller • 根據semaphore buffer內所記錄的資料來改變thread的狀態, • 控制thread的狀態在ready、 blocked何種狀態。 • D-CPU有特別的專屬指令可以透過semaphore controller去改變semaphore buffer內任一semaphore的值。 • 第一版的設計並不能透過D-CPU動態創立新的semaphore,指令只能改變現在semaphore的值。 • 利用此semaphore的機制就可以實現最基本IPC功能。
HRTM system overview(8/10) • Thread control block • Thread control block具備configurability,可以隨者使用者想要創立的thread數目而更變大小。 • 在第一版的設計Thread數目在一開始就必須被設定好,而且無法動態加入或減少。 • Thread control block所包含的資訊大概必須要有: • Thread ID:thread的號碼。 • Thread priority : thread的priority數值。 • Threadstate:thread是在ready或running或blocked。 • Thread aging : 紀錄在ready queue呆滯多久,進入running則清為0。 • Thread location : 若thread在runningtime則是在被哪一個D-CPU執行。 • Thread register : 此thread所執行的暫存器資料(16個register)。
HRTM system overview(9/10) • Semaphore buffer • Semaphore buffer具備configurability,可以隨者使用者想要創立的Semaphore數目而更變大小。 • 在第一版的設計Semaphore數目在一開始就必須被設定好,而且無法動態加入或減少。 • Semaphore buffer所包含的資訊大概必須要有: • Semaphore ID : 此semaphore的號碼。 • Semaphore value :semaphore的值。 • 設定的初值即是最大值,D-CPU透過指令對此值做加減值的動作。 • 若為正值則其相依的thread就可以進入readyqueue; • 若為負值則其相依的thread就進入blockedqueue。 • Semaphore depend thread :相依這個semaphore的thread。 • 可以有多個thread相依相同semaphore, • 第一版的設計此Semaphore depend thread在初值設定後就無法動態加入或減少。
HRTM system overview(10/10) • Memory: • 主要就是存取各thread的code和data和共用資料,可見Figure4。 • D-CPU可以透過Store和Load指令去更變memory的資料。 Thread 1 text Thread 1 stack Thread 2 text Thread 2 stack Thread 3 text Thread 3 stack Thread 4 text Thread 4 stack Thread ... Sharing memory Figure4 Memory section description
Implementation(1/2) • 先在電腦上利用ModelSim、Quartus設計 • 1. 首先設計單顆D-CPU • 撰寫testbench測試任意指令能否正常工作。 • 2. 連結四顆D-CPU並且可以並行執行。 • 撰寫testbench測試四顆D-CPU指令能否正常獨立工作。 • 撰寫testbench模擬HRTM的工作情況,並確定可以正常運作。 • 3. 著手設計HRTM • 將四顆D-CPU和HRTM連結, • 撰寫testbench給予memory和HRTMinformation初值,最後檢測是否可以正常運作和運算結果。 • 燒入FPGA內合成 • 將Quartus所合成的電路檔燒入FPGA並且看是否成功。
Implementation(2/2) 10110….. D-CPU D-CPU HRTM Memory HRTM information .txt D-CPU D-CPU 11010….. HRTM information Memory .txt Step1.Setmemory Step2.Running 10110….. Memory .txt Step3.Check result