2015-04-30 29 views
1

我們面臨兩個事實: 1.系統調用很貴。程序應該將其狀態保存在堆棧中,陷入內核,導致緩存和TLB失效等。 2.使用新技術(如14nm),芯片上有足夠的空間。爲什麼不能有兩組寄存器和兩個TLB?一個用於用戶空間進程,另一個用於內核。每個系統調用只是將處理器從用戶空間寄存器+ tlb切換到內核,這應該非常快。爲什麼不將快速系統調用的寄存器數加倍?

顯然我在這裏錯過了一些東西。

回答

2

某些處理器體系結構具有影子寄存器。例如,中斷時,Z80切換到備用寄存器文件。限制寄存器文件大小的一個因素是時鐘週期。如果重命名錶變得太大,那將會減慢前端的管道階段。

TLB通常具有較高的命中率,因爲每個條目都對應一整頁,並且它們通常可以爲多個地址空間標記條目。您的第一次系統調用的TLB缺失開銷可能很高,但如果您正在進行大量的系統調用,那麼您的TLB可能會保留內核內存的映射。

0

寄存器用於在系統調用中交換值。有些系統具有內核模式堆棧,所以堆棧不能用於交換值。

相關問題