2013-01-10 62 views
4

有人可以啓發我CAS工具如http://www.ptlsim.org/如何工作嗎?如果沒有信息,每個指令使用多少個週期,CPU分支預測邏輯是否已知,他們如何實現週期精度?還是一切都可用於NDA?我想他們可能是非常準確的緩存被擊中或錯過(也許我錯了,但我認爲這是更容易預測內部算法),但沒有知識如何實現流水線和superscalarity我很困惑如何使模擬週期準確。CAS仿真器如PTLsim如何實現對x86硬件的週期精確仿真?

因此,理論上可以在基於x86的硬件上實現hard rtos?或者應該簽署某種NDA來估算每條指令所需的時間?

+0

查看常見問題,關注他們的「協同模擬」技術。這是通過在主處理器上實際執行模擬代碼來實現的。 –

+0

@HansPassant我認爲你誤解了「合作模擬」的概念。循環精確模擬完全基於用戶提供的處理器模型。主處理器僅用於加速和/或驗證模擬。 –

+0

這只是簡單的模擬,沒有「co」。 –

回答

4

第一個問題:如果沒有信息,那麼它們如何實現循環精度?每條指令使用多少個週期,CPU分支預測邏輯是否已知?

該模擬器確實提供了一個週期精確的模擬,以獲得足夠精確的CPU型號,但沒有提供適用於英特爾或AMD當前產品的開箱即用型號。有人在英特爾或AMD可以訪問所需的信息可以創建一個RTL級別模型,併爲當前處理器獲得週期精確的模擬。英特爾和AMD之外的人不能。您仍然可以將公開已知的信息提供給模擬器並獲得合理的結果。這些結果將不會與真實硬件相同。

如果您是一位軟件開發人員並且想要對真實硬件進行基準測試,請使用真實硬件!像PLTsim這樣的模擬器專爲想要測試新硬件特性而無需在新芯片上花費數十萬美元的(學術)硬件開發人員而設計。

第二個問題:理論上可以在基於x86的硬件上實現硬rtos嗎?

當然是理論上可能。在所有情況下,您都需要考慮所有輸入的每個代碼段的絕對最差情況。實際的問題是像酷睿2這樣的處理器非常複雜,處理器的狀態非常龐大。此外,這些處理器的設計並不是針對時序確定性的。一個非常困難的RTOS必須非常保守。最後,正如您正確觀察的那樣,英特爾和AMD以外的人員無法獲得進行這些保守假設所需的所有信息。在實踐中,傳遞最新和最好的cpus是合理的,而是使用具有確定性時序的更舊,更簡單的cpus。另一方面,如果實時操作系統不一定非常難以實時操作,那麼您總是可以包含一些安全邊界和希望達到最佳效果。 ;-)

2

這不是兩個問題的答案;我只會回答第二個問題。隨時upvote,雖然麥基的答案似乎一般更好。

硬RTOS是要在x86上實現。一個可以殺死RTOS所做承諾的特殊事情是SMM或系統管理模式。 CPU在系統管理中斷之後輸入它,可能因爲不同的原因而觸發 - 硬件故障,在某些特殊的MMIO位置寫入,out指令指向某個特殊端口。您無法禁用它,您無法真正預測SMI何時發生,並且SMI處理程序可能需要很長時間才能完成。

從本質上講,您完全不知道CPU何時處於SMM狀態,直到CPU在處理SMI時花費很長時間才發現某些操作失敗。在某些特殊情況下,即使是非實時操作系統也可能成爲問題,更不用說硬RTOS了。

還有this thread可以提供一些關於x86上RTOSing的更多觀點。

0

在您鏈接的網站上有諸如;

PTLsim是本領域週期精確微處理器仿真器和用於x86和x86-64指令集虛擬機的狀態。

它直接運行它模擬同一平臺(一個或x86-64的x86機器上運行Linux)

這不是很清楚,我再怎麼上這不同於任何其他x86虛擬機技術,如QEMU,VirtualBox,VMWare或Virtual PC,由於實際上直接在硬件上運行指令(以及以核心速度運行),因此循環精確。它是模擬器還是虛擬機?在我看來,他們不是一回事;例如bochs是一個模擬器而不是一個虛擬機,PTLsim似乎處於中間的某個位置?