iT邦幫忙

2022 iThome 鐵人賽

DAY 16
1
自我挑戰組

System Software Introduction系列 第 16

The Hardware Platform of System Software – Simulator/Emulator

  • 分享至 

  • xImage
  •  

成功把system software source code以build flow轉換成CPU可以執行的executable file之後,需要有hardware platform才可以運行,而hardware platform可分為模擬器 (simulator/emulator)與實際硬體 (real target),因為real target需要製造的流程,所以system software可以使用模擬hardware的software作為前期開發的hardware platform,而我們今天首先要介紹simulator/emulator。

What is Simulator/Emulator

Simulator/Emulator是一種application software,功能是在軟體的實作與硬體的支援下,創造模擬另一種系統行為的環境

Simulator/Emulator不一定要完整模擬一整套系統,而可以只是系統的一部分。例如: 在x86 CPU的電腦上,做一套可以解讀MIPS指令並且依照指令給出執行結果的程式,就是一種MIPS CPU的模擬器。

Simulator/emulator依照模擬的目的性而有不同的分類

Emulator

Emulator是一種可以取代被模擬系統的黑盒子,模擬一個系統的可以被觀察到的行為,但內部的狀態和實際的系統沒有關聯。例如: Mars MIPS Simulator是一套MIPS CPU的emulator,它不模擬MIPS CPU的完整5級pipeline (IF/ID/EX/MEM/WB),但能夠做到如同真實的MIPS CPU對輸入的MIPS指令給出結果。

Simulator

Simulator是一種展現出所有被模擬系統細節的機器,盡量按照真實系統模擬一個硬體上發生的每一個狀態與步驟,並且能夠紀錄下來給使用者查詢。例如:DRMIPS是一套MIPS CPU的simulator,它可以模擬出每一個CPU cycle的所有pipeline的狀態,對於MIPS CPU行為有不了解的software developer可以藉此觀察CPU的行為。

Emulator的實作通常simulator簡單快速,所以會被用在不需要知道太多細節的開發,例如compiler toolchain的測試只需要emulator模擬CPU執行指令的結果,而不需要知道CPU如何處理指令。

Simulator可以提供更多細節給使用者,所以硬體元件的驗證會在simulator上進行,例如RTL simulator會展示每個cycle的硬體內部訊號,在硬體元件被DVT發現錯誤時,可以快速追蹤根源。
https://ithelp.ithome.com.tw/upload/images/20220928/20152298x8SVIMyQ4s.jpg

Why Simulator/Emulator is Needed

縮短開發週期

System software developer可以在實際的硬體被製造出來之前進行system software開發,減少上層application software developer等待時間,提升產品推出效率。模擬器有專用的語言、工具可以採用(例如: SystemC),開發的時間比硬體短。所以system software developer可以在系統設計的早期階段就開始開發。

提前驗證硬體設計正確性

硬體製造之前需要先經過驗證,避免硬體被製造出來後才發現軟體無法控制。硬體元件設計者無法完整考慮軟體對硬體所有操控組合,所以硬體設計者需要system software developer協助從軟體角度做硬體驗證 (DVT)。例如: RTL simulator可以在硬體設計開發階段時就讓system software加入驗證,確保system software和硬體元件設計者對設計的理解沒有出入。

較完整的除錯資訊

在實際的硬體上遇到問題但無法獲得足夠資訊除錯時,會回到模擬器進行除錯。例如: 發現硬體在正確的控制流程下無法發揮正常功能時,system software developer和硬體元件設計者會利用模擬器嘗試復現問題。有部分system software在實際的硬體上要進行驗證的難度高,這些system software的developer就會選擇在模擬器上驗證。例如: BIOS在實際的硬體上不容易debug,所以BIOS的developer大部分會使用QEMU驗證正確性。

Simulator/emulator Features

資訊豐富

因為模擬器是用軟體實作硬體行為,所以模擬器可以列出系統運作過程中的細節,所以system software developer可以不需要debugger就快速除錯。

速度慢

硬體可以在一個cycle內同步產生很多狀態與訊號的變化,但模擬器是軟體,所以一個cycle內的硬體變化需要花費多倍時間才能完成。例如: MIPS CPU的5級pipeline可以在一個cycle內完成五個pipeline stage,但MIPS simulator最少需要5個步驟才能在軟體內部完成這5個pipeline stage的狀態更新。
https://ithelp.ithome.com.tw/upload/images/20220928/20152298xFZ4puRdx1.jpg

只能模擬系統當中的一部分硬體元件

一套完整的系統上有多項硬體元件,而每個硬體元件都會有一套硬體訊號與狀態運作。要模擬完整系統中的訊號會使模擬器需佔用大量RAM、執行時需要大量CPU資源,所以模擬器通常只能模擬一部分的硬體元件。例如: 模擬器若要模擬一整套wifi路由器會需要模擬很多晶片,模擬器的實作與運作都太複雜,實務上在模擬器階段會把晶片拆開來模擬功能。

軟體怎麼在模擬器上運作

模擬器模擬了真實的硬體,所以對軟體來說不需要知道模擬器的硬體的不同。
模擬器的開機方式
模擬整體系統的開機: 有部分模擬器可以模擬系統的開機流程(依BIOS、bootloader、kernel的順序),所以BIOS和bootloader可以在這種模擬器開發 (例如: QEMU)
直接把軟體放進模擬器開始跑: 有部分模擬器會簡化流程,允許使用者的軟體直接開始跑,讓軟體可以快速被驗證(例如: MARS)

我們今天認識了simulator/emulator,因為有利於開發時效性、能提供豐富的資訊,system software的早期開發依賴於simulator,在後期遇到困難問題時也會使用simulator嘗試找問題。但simulator並非萬能,它的效能與模擬範圍有限,無法替代real target,接下來我們會介紹real target。


上一篇
The Build of System Software - Build Environment​
下一篇
The Hardware Platform of System Software – Real Target
系列文
System Software Introduction30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言