- 一,什么是處理器
- 二,指令集基礎
- 什么是 ISA
- ISA 功能
- 三,CPU 設計與實作
- 整數范圍
- 時鐘頻率
- 指令周期(Instruction cycle)
- 指令流水線(Instruction pipeline)
- 指令并行(Instruction-level parallelism)
- 資料并行(Data parallelism):
- 并發與并行
- 執行緒級并行(Thread-Lever Parallelism)
- 性能
- 參考資料
本文的知識點比較零散,主要是關于處理器的一些基本知識,大部分內容來源于參考資料并給出了自己的理解和整理,
一,什么是處理器
先描述下一般處理器的概念,維基百科的定義是 “In computing, a processor is an electronic circuit which performs operations on some external data source, usually memory or some other data stream”,最為常見的處理器有 CPU(可以運行任何程式)、GPU(圖形影像處理)和 DSP(處理數字信號),還有專門用來做 DNN 應用神經網路處理器,
處理器或處理單元是對外部資料源(通常是記憶體或其他資料流)執行操作的電子組件(數字電路),
CPU 的主要運作原理,不論其外觀,都是執行儲存于被稱為程式里的一系列指令,在此討論的是遵循普遍的馮·諾伊曼結構(von Neumann architecture)設計的設備,程式以一系列數字儲存在計算機存盤器中,差不多所有的馮·諾伊曼 CPU 的運作原理可分為四個階段:提取、解碼、執行和寫回,
而專用處理器就是針對特定應用或者領域的處理器,類似于是我們經常說的 Domain Specific Architecture 的概念,
二,指令集基礎
什么是 ISA
指令集(Instruction Set Architecture, ISA)是計算機抽象模型的一部分,它定義了軟體如何控制 CPU,ISA 充當硬體和軟體的介面,指示了處理器能夠實作什么功能以及如何實作,簡單來說,ISA 就是傳統上軟體和硬體的分界線,是用戶和硬體互動的唯一方式,
ISA 定義了硬體支持的資料型別、暫存器、硬體如何管理記憶體、關鍵特性(如虛擬記憶體)、微處理器可以執行哪些指令,以及多個 ISA 實作的輸入輸出模型,ISA 可以通過添加指令或其他功能或通過添加對更大地址和資料值的支持來擴展,
來源 What is Instruction Set Architecture (ISA)? - Arm
ISA 功能
大多數 ISA(典型如 x86-Intel CPU 的指令集),將程式的行為描述成每條指令都是順序執行的,一條指令結束后,下一條在開始,
ISA 提供的主要指令可以分為四大類功能:
- 執行運算或處理的功能,比如算術操作指令;
- 控制程式流,比如回圈、判斷分支和跳轉指令;
- 實作資料搬移,如記憶體到暫存器,暫存器之間資料搬移等指令;
- 最后就是一些輔助指令,如
debug、中斷和cache之類的指令,
三,CPU 設計與實作
整數范圍
CPU 數字表示方法是一個設計上的選擇,這個選擇影響了設備的作業方式,一些早期的數字計算機內部使用電氣模型來表示通用的十進制(基于 10進位)記數系統數字,還有一些罕見的計算機使用三進制表示數字,幾乎所有的現代的 CPU 使用二進制系統來表示數字,這樣數字可以用具有兩個值的物理量來表示,例如高低電平等等,
時鐘頻率
主頻=外頻×倍頻,大部分的 CPU,甚至大部分的時序邏輯設備,本質上都是同步的,即它們被設計和使用的前題是假設都在同一個同步信號中作業,
指令周期(Instruction cycle)
指令周期是指 CPU 要執行一潭訓器指令經過的步驟,由若干機器周期組成,一般會經歷“取指”,“譯碼”,“發射/執行”和“寫回”這些操作,處理器執行程式的程序就是不斷重復這幾個操作,
指令流水線(Instruction pipeline)
在1978年的 Intel 8086 處理器都只能一次執行單指令, Intel首次在486芯片中開始使用,原理是:當指令之間不存在相關時,它們在流水線中是可以重疊起來并行執行,
當一條指令,完成了“取指”操作,開始進行“譯碼”的時候,取指模塊就可以取程式的下一條指令了,這樣可以讓這些模塊不至于閑著沒用,即指令流水線可以兩個以上的指令同時執行(類似車間流水線),一般的四層流水線架構如下圖所示,不同的顏色格表示不同的指令,

指令并行(Instruction-level parallelism)
同時執行多條指令,比如,一邊從 memory 讀資料,一邊進行 fft 處理,我們經常聽到的超標量(Superscalar),超長指令字(VLIW),亂序執行( Out-of-order execution)等等技術都是發掘指令級并行的技術,
資料并行(Data parallelism):
一個人指令同時處理多個資料,我們常聽到的向量處理器(vector procesor),張量處理器(Tensor processor)多數都是利用了 SIMD(一條指令可以處理多個資料,比如一個向量乘法)技術,
并發與并行
并發與并行的通俗理解參考知乎問答-指令級并行,執行緒級并行,資料級并行區別?執行緒的概念是什么?如下:

執行緒級并行(Thread-Lever Parallelism)
執行緒級并行主要由下面兩種技術的支撐:
- 超執行緒技術:2004年,奔騰4實作了Hyper-Threading.(單核心雙執行緒)
- 多核技術-物理核心: 2005年,英特爾宣布他的第一個雙核心 EM64T 處理器,和 Pentium D840
超執行緒技術實作了單個物理核心同時兩個執行緒,也就是別人常說的虛擬內核數,比如單物理核心實作的雙執行緒,它同時可以處理兩個執行緒,它的物理核心數其實是是1個,通過Hyperthreading技術實作的執行緒級并行(Thread Lever Parallelism),至于技術細節的實作,這涉及到高速快取的知識,
執行緒級并行的好處:
- 當運行多任務時,它減少了之前的作業系統模擬出來的并發,那么用戶進行多任務處理時可以運行更多的程式進行并發了,
- 它可以使單個程式運行更快,(僅當該程式有大量執行緒可以并行處理時)
雖然在 1960 年代已經通過作業系統已經實作了執行緒級并發, 但這種頻繁的背景關系切換意味損失了
CPU的處理效率,
性能
CPU 的性能和速度取決于時鐘頻率(一般以赫茲或十億赫茲計算,即 hz 與 Ghz)和每周期可處理的指令(IPC),兩者合并起來就是每秒可處理的指令(IPS),IPS 值代表了 CPU 在幾種人工指令序列下“高峰期”的執行率,指示和應用,
參考資料
- 深入理解計算機系統-第三版
- 專用處理器設計
- https://www.zhihu.com/question/21823699/answer/111606716
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/538177.html
標籤:其他
