暫存器堆(register file)是什麼?

時間 2021-06-05 18:30:30

1樓:櫻木花道

暫存器堆(register

file)是CPU中多個暫存器組成的陣列,通常由快速的靜態隨機讀寫儲存器(SRAM)實現。這種RAM具有專門的讀埠與寫埠,可以多路併發訪問不同的暫存器。

CPU的指令集架構總是定義了一批暫存器,用於在記憶體與CPU運算部件之間暫存資料。在更為簡化的CPU,這些架構暫存器(architectural

registers)一一對應與CPU內的物理存在的暫存器。在更為複雜的CPU,使用暫存器重新命名技術,使得執行期間哪個架構暫存器對應於哪個暫存器堆的物理儲存條目(physical

entry stores)是動態改變的。暫存器堆是指令集架構的一部分,程式可以訪問,這與透明的CPU快取記憶體(cache)不同。

實現通常的設計布局是乙個簡單的陣列,在水平方向的一行就是暫存器的全字長寬度,一行的每一位元的儲存單元(bit cell)通過位線(Bit

Line)讀/寫其資料。在垂直方向把暫存器一次即能全字長讀出。放大電路(Sense

amplifier)通常設在底部,把讀出的小幅值的兩根位線(組成了一對差分電路)的電位差,放大為全幅值的邏輯值電位。更大的暫存器堆的設計是映象與旋轉後(tiling

mirrored and rotated)拼貼這種簡單的暫存器陣列。

暫存器堆的每個條目(entry,即乙個物理暫存器)對每個埠(port)都有一條字線(word

line),每個位元的基本儲存單元,對每個讀埠有1條位線,對每個寫埠有2條位線。每個位元的基本儲存單元都連線到了供電的Vdd(高電平)與Vss(低電平或者接地),這裡的d是指組成SRAM的場效電晶體的漏極(drain),s是指場效電晶體的源極(source)。因此,佈線所佔面積隨埠的平方增加,電晶體是線性增加。

多個冗餘的具有較少讀埠的暫存器堆可能會比具有全套多個讀埠的單一暫存器堆,面積更小、讀取更快。MIPS

R8000的整數單元,有乙個暫存器堆的實現,有32個條目,字長64位,具有9個讀埠及4個寫埠。

摘自:暫存器堆

JMP指令的轉移位址是暫存器定址或暫存器間接定址時,基本操作是什麼?

rayhunter jmp 有兩種常見的定址,一種是間接定址,一種直接定址。間接 jmp relN,彙編指令運算元 EB,E9 RIP RIP offset,間接定址,不直接設定PC值,將當前PC值加上一定的偏移量 直接 JMP r m,彙編指令運算元,FF 直接定址,設定PC的值,不是加乙個偏移量...

現代CPU的暫存器以及暫存器檔案是怎麼做的,應該不是D觸發器做的吧?

超級飛俠 籠統的說,看暫存器的多少而定。有些處理器的暫存器很多,很可能使用RAM來實現 有些比較少暫存器的會傾向於用觸發器實現。至於暫存器檔案 這個概念隱含有比較多的memory空間 幾乎沒有使用觸發器來實現的。這種情況下,相比RAM,DFF占用的物理面積太大,功耗太大了。晶元的成本直接跟面積相關。...

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

kevin 其實當時我搞rtos的時候,也有這樣的想法,但是,細想一下,儲存現場這個工作是很難避免的。因為除了使用者態會進行系統呼叫進入核心外,其他一些外部裝置也有可能觸發中斷進入核心態。所以,乙個中斷,可能打斷另乙個正在執行的中斷 使用者態呼叫也是中斷 這時候硬體上只有兩者選擇 要麼,不支援中斷巢...