可以為CPU增加一套暫存器堆來提高微核心作業系統的效能嗎?

時間 2021-05-31 16:03:49

1樓:kevin

其實當時我搞rtos的時候,也有這樣的想法,但是,細想一下,儲存現場這個工作是很難避免的。

因為除了使用者態會進行系統呼叫進入核心外,其他一些外部裝置也有可能觸發中斷進入核心態。所以,乙個中斷,可能打斷另乙個正在執行的中斷(使用者態呼叫也是中斷)。這時候硬體上只有兩者選擇:

要麼,不支援中斷巢狀,這時候就不需要儲存核心態暫存器狀態,但是會導致,大量的中斷延遲,甚至是丟失。

要麼,就支援中斷巢狀,那麼這時候,就需要在中段開始和結束的地方增加上下的文儲存和恢復工作,支援巢狀的好處就是中斷響應實時性高。

對於大部分CPU來說,選擇第2種,顯然是一種更通用的策略。

還有使用者執行緒之間的切換,也是必須要儲存上下文的。

如果按題主的思路,硬體就需要維護,不確定套數的暫存器才能避免所有的上下文儲存,顯然是不現實的。

但如果僅僅是節省應使用者態進入核心態時上下文切換,又沒有多大意義,因為進入核心態之後,暫存器上下文的切換,時時刻刻都在發生。

以上是個人的一些淺薄理解,如果有大神請指正。

2樓:MUTE

可以通過增加一套reg file來增加多程序的效能。

The future of microprocessor,這篇文獻中就有通過新增多個reg file來提供多個程序的效能(在發生mem stall是切換至其他程序,需要將mem的相關部件流水化)。

3樓:

MIPS差不多就是這個意思,26和27號暫存器僅供核心態使用,上下文切換時不做儲存和恢復。

使用者態不是不能用,只是用了不保證值的正確性。

所以有些中斷,比如說TLB充填,根本不用儲存上下文,直接用26和27號進行所有核心態計算就行了。

4樓:CMOS

armv7分了好幾種模式,然後暫存器也是幾組,armv8裡沒這樣搞了。

sparc有暫存器視窗。

不過從實際來說也有不少問題。比如你要在核心態訪問使用者態暫存器,那麼暫存器定址就複雜了,比如對於一條add指令,通常的模式是

add 源暫存器1 源暫存器2 目的暫存器但是現在多了核心態暫存器,就會多很多模式,例如add 源暫存器1(核心) 源暫存器2(核心) 目的暫存器(使用者)add 源暫存器1(使用者) 源暫存器2(核心) 目的暫存器(使用者)排列組合下,你會發現有很多模式。給add指令來一大堆不同版本麼?肯定不行。

然後有人會想,我在暫存器編號上多加一位來區分核心態和使用者態暫存器,這樣意義不大。一是本身這個其實等價於通用暫存器數量翻倍,還不如不區分核心態和使用者態。另外考慮到指令編碼,這樣會多用三個位來表示暫存器(兩個源,乙個目的),會減少編碼空間。

例如現在常見的32bit指令編碼,32個暫存器時,兩個源加目的暫存器,占去15位,如果多加一位區分暫存器,就18位了,留給指令編碼用的位數就比較少了。

5樓:Dream穿越

可以,但是需要你進行從相容性,以及如何在已有的暫存器的基礎之上繼續提公升效能的思路需要時間來進行思考,如果說相容性沒問題的話,那麼就可以從效能提公升方面研究了!

自以為關係和他們很好,可是他們當面一套背後一套,我掏心掏肺,人家不領情,在後面戳你一刀我應該怎麼辦?

疲疲 我覺得,這已經不是朋友了。已經不是小孩子了,要學會孤獨,保護自己。我最近也遇到了相同的人,我覺得大家是朋友,幫忙無所謂。結果使喚著使喚著,就成習慣了,甚至讓我給他以及他的工具人當工具人,日被他常言語暴力是常態,仗著是師兄吧,所以出口成髒。後來我發現,我為什麼要忍?冷靜下來想了很多,我們之間的關...

怎樣可以練成一套屬於自己的投資系統?

期貨交易員xbk 因為你學得太多了,一定程度上阻礙了你。交易中的技術指標或分析方法少說也有一萬種,每種你都去學,樣樣都想參透,一輩子都會在求學的路上,不可能有終點的。交易市場如同海洋,做交易如同去海浬撈魚,技術指標如同撈魚工具,只要撐握一種撈魚的技能,熟練使用一種工具,撈得到魚就夠了。開始沒有工具,...

可以幫忙配一套amd和intel中高配台式電腦嗎不算顯示器,預算8k左右?

霸氣機器貓 又是乙個電腦幹什麼用不說的題主 腦殼痛 不說的一律預設為沉迷遊戲的肥宅 Intel平台 CPU Intel i7 10700F 8核16執行緒 主機板 微星B460M迫擊炮套裝 2799 AMD平台 CPU AMD 銳龍R5 5600X 6核12執行緒 主機板 微星B550M迫擊炮套裝 ...