2019-09-20

CPU架構分類

從CPU發(fā)明到現(xiàn)在技掏,有非常多種架構铃将,從我們熟悉的X86,ARM哑梳,到不太熟悉的MIPS劲阎,IA64等

X86 ARM
指令集 復雜指令集(CISC) 精簡指令集(RISC)
功耗
性能
擴展能力 X86結構的電腦采用“橋”的方式與擴展設備(如:硬盤、內存等)進行連接鸠真,其配套擴展的設備種類多悯仙、價格也比較便宜,所以x86結構的電腦能很容易進行性能擴展 ARM結構的電腦是通過專用的數(shù)據(jù)接口使CPU與數(shù)據(jù)存儲設備進行連接吠卷,所以ARM的存儲锡垄、內存等性能擴展難以進行
操作系統(tǒng)的兼容性 兼容Windows、Linux Linux

X86架構來由

IBM 開始做 IBM PC 時祭隔,一開始并沒有讓最牛的華生實驗室去研發(fā)货岭,而是交給另一個團隊。一年時間疾渴,軟硬件全部自研根本不可能完成千贯,于是他們采用了英特爾的 8088 芯片作為 CPU,使用微軟的 MS-DOS 做操作系統(tǒng)搞坝。

誰能想到 IBM PC 賣的超級好搔谴,好到因為壟斷市場而被起訴。IBM 就在被逼的情況下公開了一些技術桩撮,使得后來無數(shù) IBM-PC 兼容機公司的出現(xiàn)己沛,也就有了后來占據(jù)市場的惠普、康柏距境、戴爾等等申尼。
英特爾的技術因此成為了行業(yè)的開放事實標準。由于這個系列開端于 8086垫桂,因此稱為 x86 架構师幕。


image.png

X86架構組成

先看下計算機的工作模式


image.png

對于一個計算機來講,最核心的就是CPU(Central Processing Unit,中央處理器)霹粥。這是這臺計算機的大腦灭将,所有的設備都圍繞它展開。
CPU 和其他設備連接后控,要靠一種叫作總線(Bus)的東西庙曙,其實就是主板上密密麻麻的集成電路,這些東西組成了 CPU 和其他設備的高速通道浩淘。

CPU組件圖

image.png
image.png

運算單元

只管算捌朴,例如做加法、做位移等等张抄。但是砂蔽,它不知道應該算哪些數(shù)據(jù),運算結果應該放在哪里署惯。

數(shù)據(jù)單元

包括 CPU 內部的緩存和寄存器組左驾,空間很小,但是速度飛快极谊,可以暫時存放數(shù)據(jù)和運算結果诡右。

  • 通用寄存器
    AX、BX轻猖、CX稻爬、DX、SP蜕依、BP桅锄、SI、DI样眠。8個通用寄存器友瘤,用于在計算過程中暫存數(shù)據(jù)。

控制單元

控制單元是一個統(tǒng)一的指揮中心檐束,它可以獲得下一條指令辫秧,然后執(zhí)行這條指令。這個指令會指導運算單元取出數(shù)據(jù)單元中的某幾個數(shù)據(jù)被丧,計算出個結果盟戏,然后放在數(shù)據(jù)單元的某個地方。

  • 指令指針寄存器IP(Instruction Pointer Register)
    指向代碼段中下一條指令的位置甥桂。CPU 會根據(jù)它來不斷地將指令從內存的代碼段中柿究,加載到 CPU 的指令隊列中,然后交給運算單元去執(zhí)行黄选。
  • 代碼段寄存器(Code Segment Register)
    存放代碼段的起始地址蝇摸。代碼段的偏移量在 IP 寄存器中。通過它們可以找到代碼在內存中的位置
  • 數(shù)據(jù)段的寄存器(Data Segment Register)
    存放數(shù)據(jù)段的起始地址。數(shù)據(jù)段的偏移量會放在通用寄存器中貌夕。通過它們可以找到數(shù)據(jù)在內存中的位置
  • 棧寄存器(Stack Register)
  • 擴展段寄存器(extend Segment Register)

相關術語

地址總線

地址總線的位數(shù)律歼,決定了能訪問的地址范圍到底有多廣。例如只有兩位啡专,那 CPU 就只能認 00险毁,01,10们童,11 四個位置畔况,超過四個位置,就區(qū)分不出來了病附。位數(shù)越多,能夠訪問的位置就越多亥鬓,能管理的內存的范圍也就越廣完沪。

數(shù)據(jù)總線

數(shù)據(jù)總線的位數(shù),決定了一次能拿多少個數(shù)據(jù)進來嵌戈。例如只有兩位覆积,那 CPU 一次只能從內存拿兩位數(shù)。要想拿八位熟呛,就要拿四次宽档。位數(shù)越多,一次拿的數(shù)據(jù)就越多庵朝,訪問速度也就越快吗冤。

CPU 各種性能指標

CPU使用率

CPU 使用率描述了非空閑時間占總 CPU 時間的百分比

  • 用戶 CPU 使用率,包括用戶態(tài) CPU 使用(user和低優(yōu)先級用戶態(tài) CPU 使用率(nice)九府,表示 CPU 在用戶態(tài)運行的時間百分比椎瘟。用戶 CPU 使用率高,通常說明有應用程序比較繁忙侄旬。
  • 系統(tǒng) CPU 使用率肺蔚,表示 CPU 在內核態(tài)運行的時間百分比(不包括中斷)。系統(tǒng) CPU使用率高儡羔,說明內核比較繁忙宣羊。
  • 等待 I/O 的 CPU 使用率,通常也稱為 iowait汰蜘,表示等待 I/O 的時間百分比仇冯。iowait高,通常說明系統(tǒng)與硬件設備的 I/O 交互時間比較長族操。
  • 軟中斷和硬中斷的 CPU 使用率赞枕,分別表示內核調用軟中斷處理程序、硬中斷處理程序的時間百分比。它們的使用率高炕婶,通常說明系統(tǒng)發(fā)生了大量的中斷姐赡。
  • steal(通常縮寫為 st)柠掂,代表當系統(tǒng)運行在虛擬機中的時候项滑,被其他虛擬機占用的CPU 時間
    常用工具: top

平均負載

平均負載是指單位時間內,系統(tǒng)處于可運行狀態(tài)和不可中斷狀態(tài)的平均進程數(shù)涯贞,也就是平均活躍進程數(shù)枪狂,它和 CPU 使用率并沒有直接關系。
理想情況下宋渔,平均負載等于邏輯 CPU 個數(shù)州疾,這表示每個 CPU 都恰好被充分利用。如果平均負載大于邏輯 CPU 個數(shù)皇拣,就表示負載比較重了严蓖。
常用工具: top uptime

上下文切換

上下文切換,本身是保證 Linux 正常運行的一項核心功能氧急。但過多的上下文切換颗胡,會將原本運行進程的 CPU 時間,消耗在寄存器吩坝、內核棧以及虛擬內存等數(shù)據(jù)的保存和恢復上毒姨,縮短進程真正運行的時間,成為性能瓶頸

  • 自愿上下文切換
    是指進程無法獲取所需資源钉寝,導致的上下文切換弧呐。比如說,I/O嵌纲、內存等系統(tǒng)資源不足時泉懦,就會發(fā)生自愿上下文切換。
  • 非自愿上下文切換
    是指進程由于時間片已到等原因疹瘦,被系統(tǒng)強制調度崩哩,進而發(fā)生的上下文切換。比如說言沐,大量進程都在爭搶 CPU 時邓嘹,就容易發(fā)生非自愿上下文切換。
常用工具
  • vmstat 查看系統(tǒng)整體的上下文切換數(shù) (cpu-cs context switch)
[work@ros-dev-29 ~]$ vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 740092 325876 1174820    0    0     1     7    0    0  0  0 100  0  0
  • pidstat -w
    cswch
    表示每秒自愿上下文切換(voluntary context switches)的次數(shù)
    nvcswch
    表示每秒非自愿上下文切換(non voluntary context switches)的次數(shù)
[work@ros-dev-29 ~]$ pidstat -w
Linux 2.6.32-573.22.1.el6.x86_64 (ros-dev-29)   09/20/2019      _x86_64_        (4 CPU)

11:17:19 AM       PID   cswch/s nvcswch/s  Command
11:17:19 AM         1      0.00      0.00  init
11:17:19 AM         2      0.00      0.00  kthreadd
11:17:19 AM         3      0.00      0.00  migration/0
11:17:19 AM         4      0.17      0.00  ksoftirqd/0
11:17:19 AM         5      0.00      0.00  stopper/0
11:17:19 AM         6      0.08      0.00  watchdog/0
11:17:19 AM         7      0.07      0.00  migration/1

指標工具指南

image.png
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末险胰,一起剝皮案震驚了整個濱河市汹押,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌起便,老刑警劉巖棚贾,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件窖维,死亡現(xiàn)場離奇詭異,居然都是意外死亡妙痹,警方通過查閱死者的電腦和手機铸史,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來怯伊,“玉大人琳轿,你說我怎么就攤上這事」⑶郏” “怎么了崭篡?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵管嬉,是天一觀的道長实檀。 經(jīng)常有香客問我斋枢,道長掖蛤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任装黑,我火速辦了婚禮胃碾,結果婚禮上易稠,老公的妹妹穿的比我還像新娘拿霉。我一直安慰自己吟秩,他們只是感情好咱扣,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布绽淘。 她就那樣靜靜地躺著,像睡著了一般闹伪。 火紅的嫁衣襯著肌膚如雪沪铭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天偏瓤,我揣著相機與錄音杀怠,去河邊找鬼。 笑死厅克,一個胖子當著我的面吹牛赔退,可吹牛的內容都是我干的。 我是一名探鬼主播证舟,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼硕旗,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了女责?” 一聲冷哼從身側響起漆枚,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎抵知,沒想到半個月后墙基,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體软族,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年残制,在試婚紗的時候發(fā)現(xiàn)自己被綠了立砸。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡痘拆,死狀恐怖仰禽,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情纺蛆,我是刑警寧澤吐葵,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站桥氏,受9級特大地震影響温峭,放射性物質發(fā)生泄漏。R本人自食惡果不足惜字支,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一凤藏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧堕伪,春花似錦揖庄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至富俄,卻和暖如春禁炒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背霍比。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工幕袱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人悠瞬。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓们豌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親浅妆。 傳聞我的和親對象是個殘疾皇子望迎,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內容

  • 0 前言 在過去單CPU時代,單任務在一個時間點只能執(zhí)行單一程序狂打。之后發(fā)展到多任務階段擂煞,計算機能在同一時間點并行執(zhí)...
    七寸知架構閱讀 9,936評論 6 95
  • 什么是嵌入式 IEEE(Institute of Electrical and Electronics Engin...
    Leon_Geo閱讀 3,707評論 1 20
  • 計算機系統(tǒng)漫游 代碼從文本到可執(zhí)行文件的過程(c語言示例):預處理階段,處理 #inlcude 趴乡, #defin...
    willdimagine閱讀 3,584評論 0 5
  • 1 嵌入式操作系統(tǒng) 為什么要用嵌入式操作系統(tǒng) 普通的單片機編程:程序(軟件)——單片機硬件对省; 嵌入式操作系統(tǒng)開發(fā):...
    安安zoe閱讀 786評論 0 1
  • 忽然發(fā)現(xiàn)一個很嚴肅的問題蝗拿,就是當我們規(guī)劃出一段時間來學習,到底是充分利用了時間蒿涎,還是我們只是在殺時間哀托? 其實講到底...
    bluseSu閱讀 151評論 0 0