日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【OS学习笔记】十二 现代处理器的结构和特点

發布時間:2023/12/10 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【OS学习笔记】十二 现代处理器的结构和特点 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文是一個銜接點,上一篇文章以前都是學習8086實模式的知識。本文開始學習80386這種現代處理器的編程架構。由此進入保護模式的學習。點擊鏈接查看上一篇文章:上一篇文章

1、現代處理器的結構和特點

1 流水線技術

處理器可以做很多事情,能夠執行各種不同的指令,完成不同的功能,但這些事情大多不會再一個時鐘周期內完成。執行一條指令,需要從內存中取指令,譯碼,訪問操作數和結果,并進行移位、加法、減法、乘法以及其他任何操作。

為了提高處理器的執行效率和速度,可以把一條指令的執行過程分解成若干個細小的步驟,并分配給相應的單元來完成。各個單元的執行都是獨立的、并行的。如此一來,各個步驟在時間上就會重疊起來,這種執行指令的方法,就是流水線(Pipe-Line)技術。

比如,一條指令的執行過程分為取指令、譯碼和執行三個步驟的話。假設每個步驟都要花一個時鐘周期,那么如下圖所示,如果采用順序執行,則執行三條指令就要花9個時鐘周期,沒3個時鐘周期才能得到一條指令的執行結果;如果采用3級流水線技術的話,則執行這三條指令只需要5個時鐘周期,每隔一個時鐘周期就能夠得到一條指令的執行結果。

2、高速緩存技術

高速緩存,在以前的文章中有講的很詳細,這里不再贅述,直接查看以前的文章即可。

點解下面鏈接查看:

高速緩存

其實簡單來說高速緩存就是為了彌補外存(內存條)的讀寫速度過于緩慢的缺陷。將內存中的一些指令和數據,緩存到高速緩存中,那么CPU可以不用訪問內存而直接訪問高速緩存,這樣會快的多!!!

3、亂序執行技術

為了實現流水線技術,需要將指令拆分成更小的可獨立執行部分,即拆分成微操作。

一旦將指令拆分成微操作,處理器就可以在必要的時候亂序執行。考慮以下程序:

mov eax , [mem1] shl eax , 5 add eax , [mem2] mov [mem3] , eax

這里add eax , [mem2]可以拆分成兩個微操作。先從mem2對應的地址取數據,然后將數據與eax寄存器中存的數據相加,得到的結果存入eax寄存器。如此一來,在執行邏輯左移指令的同時,處理器可以提前從內存中讀取mem2的內容。典型的,如果數據不在高速緩存中,那么處理器在獲取mem1的內容后,會立即開始獲取mem2的內容,與次同時,shl指令的執行早就開始了。

類似的這種亂序執行很多很多,總給不在贅述。

4、寄存器重命名技術

考慮以例子:

mov eax , [mem1] shl eax , 3 mov [mem2] , eax mov eax , [mem3] add eax , 2 mov [mem4] , eax

以上代碼做了兩件事情,但是互不相干。

  • 將mem1的內容左移3次后,傳給mem2
  • 將mem3的內容加2后,傳給mem4

如果我們為最后三條指令使用不同的寄存器,就更能清楚的看明白,這兩件事的互不相干性。事實上,處理器也是這么做的。處理器為最后三條指令使用了另一個不用的臨時寄存器,因此,左移和加法指令可以并行的處理。

IA-32架構的處理器只有8個32位的通用寄存器,但通常都會被我們全部派上用場(甚至還覺得不夠)。因此我們不能奢望在每個計算機中都使用新的寄存器。不過在處理器內部,卻有大量的臨時寄存器可用,處理器可以重命名這些寄存器,但是以代表一個邏輯寄存器,比如上述的EAX寄存器。

寄存器重命名以一種完全自動和非常簡單的方式工作。每當指令寫一個邏輯寄存器時,處理器就為那個邏輯寄存器分配一個新的臨時寄存器。

在所有操作都完成之后,那個代表EAX的臨時寄存器里面存的內容就會被寫入真實的EAX寄存器,該處理過程稱為引退。

所有通用寄存器,棧指針寄存器,標志寄存器,浮點寄存器,甚至段寄存器都有可能被重命名。

5、 分支目標預測技術

流水線并不是百分之百完美的解決方案。實際上,有很多潛在的因素會使得流水線不能達到最佳的效率。一個典型的情況是,如果遇到一條轉移指令,則后面那些已經進入流水線的指令就都無效了。換句話說,我們必須清空流水線,從要轉移到的目標位置處重新取指令放入到流水線。

隨著復雜架構下的流水線變得越來越長,程序分支帶來的問題變得很大。為了解決這個問題,引入了分支預測技術。

從統計學的角度來看,有些事情一旦發生,下一次發生的概率很大。比如下面的程序片段:

xor si , silops:......cmp si , 20jnz lops

當jnz指令第一次執行時,轉移一定會發生。那么處理器就可以預測,下一次它還會轉移到標號lops處,而不是順序往下執行。事實上,這個預測通常是很準的。

在處理器內部,有一個小容量的高速緩存器,叫做 分支目標緩存器(BTB)。當處理器執行了一條分支語句后,它會在BTB中記錄當前指令的地址、分支目標的地址。以及本次分支預測的結果。下一次,在那條轉移指令實際執行之前,處理器會查找BTB中,看有沒有最近的轉移記錄。如果能找到最近的條目,則推測執行和上次相同的分支,把該分支的指令送入流水線。

當該指令執行時,如果預測是失敗的,那么清空流水線,同時刷新BTB中的記錄。這個代價很大。

細心的人早已發現,這其實就是一個緩存的思想!!!這個思想很牛逼!!!

2、總結

理解現代處理器的結構特點:

  • 流水線技術
  • 高速緩存思想
  • 亂序執行思想
  • 寄存器重命名
  • 分支目標預測技術

其實這些思想,在以后的上層軟件開發中,也是經常遇到。

筆記記得不是很全,如果有不懂的可以加我聯系方式一起交流。

學習探討加個人:
qq:1126137994
微信:liu1126137994

總結

以上是生活随笔為你收集整理的【OS学习笔记】十二 现代处理器的结构和特点的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。