410 likes | 770 Vues
第六章. 軟硬體介面. 本章學習重點. 指令集架構、資料路徑、控制單元 匯流排、 DMA 、暫存器架構 AMBA. 微處理器架構. Neumann Harvard 混合式. Neumann 架構 . Harvard 架構. 混合式架構. 指令集架構 . 就 軟體 而言,指令集架構提供了組合語言。一連串的組合語言,形成一段程式碼,描述了微處理器應有的行為動作,同時也意味著微處理器該有的運作流程。
E N D
第六章 軟硬體介面
本章學習重點 • 指令集架構、資料路徑、控制單元 • 匯流排、DMA、暫存器架構 • AMBA
微處理器架構 • Neumann • Harvard • 混合式
指令集架構 • 就軟體而言,指令集架構提供了組合語言。一連串的組合語言,形成一段程式碼,描述了微處理器應有的行為動作,同時也意味著微處理器該有的運作流程。 • 就硬體而言,指令集架構提供了暫存器。所謂暫存器,就是可以暫時擺放資料的空間。在微處理器的架構中,會提供一組使用者可以使用的暫存器,當然,微處理器中有很多的暫存器是使用者無法控制的。
運算元與運算子 • Y = X + Z • 運算元:雖然不同的微處理器會有不同的語法,但可歸類有Arithmetic、Logic、Shift、Compare、Branch、Load/Store等幾類的運算指令 • 運算子:微處理器都是以暫存器的形式來表示運算子,但又可分類為累加器(accumulator)形式、堆疊(stack) 形式、暫存器到記憶體(register-memory) 形式、暫存器到暫存器(register-register) 形式
資料流路徑/控制單元 • 資料流路徑指的是指令,或是指令處理的資料,從擷取(fetch)開始,一直到執行(execute)完畢,在微處理器中經過的路徑。 • 指令從記憶體中擷取出來,經指令暫存器、控制單元的解碼(decode),然後從暫存器檔案(register file)或是記憶體中將所需的資料,傳送到算數邏輯單元(ALU),執行(execute)指令所要求的命令,最後將結果寫回暫存器檔案或是記憶體中。而整個流程的控制,就完全交代給控制單元來處理了。
匯流排架構 • 匯流排是微處理器核心對外聯絡溝通的管道,不論是對記憶體或是對週邊,微處理器核心都必須透過匯流排,將電氣訊號傳遞出去,控制外部電路的邏輯。而相對的,這些記憶體、週邊等裝置,也透過匯流排,接收電氣訊號,了解微處理器核心的命令,然後提供適當的回應。
仲裁器(arbiter) • 仲裁器(arbiter)的裝置,用來管理匯流排使用權的問題,就像是交通警察一樣,負責指揮,哪輛車可以先行,哪輛車要先等一等。
直接記憶體存取(DMA) • 直接記憶體存取(Direct Memory Access)對於系統效能的改進上,扮演著一個非常重要的角色。對於微處理器核心而言,透過匯流排到記憶體或是週邊搬移資料是一件非常耗時的動作,而且微處理器核心的重點在於「計算」資料,而非在「搬移」資料,就如同一位土木工程師的工作重點在於計算建築材料的用量,而非親自去搬磚頭。因此DMA就像是一位秘書,幫忙微處理器核心處理大量資料搬移的工作。
DMA的行為 • 微處理器核心必須先將資料搬移的資訊告訴DMA,包含了目的地位置、原始位置以及資料的長度,然後DMA控制器就會準備就緒。 • 一但DMA要開始動作時,會先透過req要求匯流排的使用權,這時候微處理器核心或是匯流排仲裁器會依據當時匯流排的使用情況來決定是否給予使用權。 • 當DMA得到ack的訊號時,表示DMA獲得了匯流排的使用權,於是從原始位置,把第一筆資料搬移到目的地位置 • 接著DMA會把目的地位置、原始位置以及資料計數的值遞減,然後檢查資料計數的值是否為零,若非零,則重複3的動作 • 當資料計數值為零,或是週邊的資料尚未準備好,則DMA會釋出匯流排的控制權。
快取單元 • 快取的觀念,是利用所謂的時間區域性(temporal locality)以及空間區域性(spatial locality)的想法,將微處理器核心「可能」會常用到的程式或是資料,從主記憶體中,拷貝一份,存放在高速的記憶體中,往後微處理器核心需要任何的資料,就會先到快取中尋找。 • 所謂的時間區域性,是指在記憶體中的某筆資料,若是被存取過後,則再一次被使用的機率會很高;空間區域性,是指在記憶體中的某筆資料,若是曾被存取過,則該資料附近的其他資料,會被使用的機率也很高。 • 舉個圖書館的例子來說,在圖書館裡,書櫃就像是主記憶體,而每一張書桌就像是快取,如果讀者被指派要到圖書館去收集和嵌入式系統有關的資料,一定會先在書櫃中收集幾本相關的書籍,然後拿到書桌上稍微閱讀,覺得有用的,就會先留在桌上,等會兒慢慢再細讀(時間區域性),有些不適當的資料,就會拿回書架上放,然後再從附近的位置繼續找尋有關的資料(空間區域性)。
記憶體管理 • 而分頁記憶體管理方法(paging),是目前最常見的方式,可以有效避免系統記憶體碎塊問題(external fragmentation)。分頁記憶體管理方法就是將記憶體以頁為單位。有個表格來紀錄這些頁的使用情況,而這個表格就稱為頁表格(page table)。這個分頁表所扮演的角色,除了紀錄管理有哪些分頁可使用之外,最重要的是提供關於把分頁所在之虛擬位址(或稱為邏輯位置)轉為實體位址的資訊。 • 虛擬位址(邏輯位置)與實體位址則是另一種記憶體管理的技巧,。使用這種方式好處是為了讓系統的執行更加穩定,通常會讓每個執行程式在一個獨立不受影響的空間中執行,也就是這些程式彼此互相是看不見的,所以A程式就不會去影響到B程式,當A程式發生問題時,或是當掉了,也就不會去干擾到B程式,甚至是作業系統核心。而這種系統就必須要有虛擬位址與實體位址的概念在。
讀取暫存器 (軟體) #define LCD_Control_Register ((unsigned int *)(0xFFFEC000)) example () { …….. *LCD_Control_Register = 0x01 ; …….. }
結論 • 不論是負責應用程式的撰寫,還是系統底層驅動程式的設計,對於嵌入式系統的開發者而言,了解系統的軟硬體介面是一項重要的基礎工作,當開發者能夠徹底了解系統軟硬體介面時,將可以讓系統效能再提升。 • 從處理機(Processor)的架構設計,匯流排(Bus)的協定,週邊裝置的通訊溝通等,幾乎都是軟硬介面的範疇,因此,本章從處理機內部資料路徑(Data path)與控制電路(Control)開始介紹,說明軟體如何在硬體中執行,接著再由匯流排、直接記憶體存取(DMA)、快取(Cache)、記憶體管理單元(MMU)、週邊(Devices)與暫存器(Register)等角度來探討軟硬體介面,最後利用一個簡單的介面電路範例,再作一次整理說明。