自底向上了解CPU的運算

文章目錄

    • 引言
    • CPU如何實現邏輯運算
      • NMOS和PMOS
      • 基于MOS管組合下的邏輯門運算
      • 邏輯運算下運算的實現
      • ALU的誕生
      • CPU的誕生
    • 關于二進制運算的研究
      • 十進制轉二進制基礎換算
      • 為什么負數要使用補碼進行表示
      • 為什么反碼就能解決正負數相加問題,我們還需要用補碼來表示負數呢?
      • 小數的二進制轉換
    • 計算機如何保存帶有小數的數據
      • 科學計數法
      • 如何用二進制空間表示科學計數法的結果
    • 詳解0.1+0.2==0.3返回false
      • 問題描述
      • 解決方案
      • 編程中運算的一點建議
    • 小結
    • 參考

引言

本文將從CPU演變的視角逐步推進說明CPU演進過程,同時也會針對計算機數學運算過程中一些常見的錯誤細節進行探討。

CPU如何實現邏輯運算

NMOS和PMOS

CPU是由晶體管構成,在邏輯上我們一般會將其通過電路符號進行抽象,即分為如下三個連接端:

  1. 柵級(gate)
  2. 源極(source)
  3. 漏極(drain)

基于NMOS而言,從語義上來理解,它是消極的MOS管(N即negative),所以它的電流是逆流而上的,這也就是為什么下圖中寄生二極管(即右邊的箭頭)的朝向是由源極(S)到漏極(D)即通過這樣的導向避免漏極電流無條件從漏極流向源極,從N的語義上理解,因為電流是消極的流向,所以輸出電流也必須付出更大的努力才能導通電源,所以NMOS的規范為:

在這里插入圖片描述

  1. 當輸入二進制1時,柵極閉合,電路導通,電流從漏極流向源極
  2. 當輸入二進制00時,柵極電源斷開,電路無法導通

在這里插入圖片描述

PMOS反之,可以看到寄生二極管從漏極指向源極避免源極無條件流向漏極,因為PMOS是積極的(P即positive),即無需過多努力即可導通電源,所以其電路運行機制為:

  1. 當輸入0時,柵極閉合,電路直接導通,從源極直接流向漏極
  2. 當輸入1,柵極斷開,電路無法導通

在這里插入圖片描述

基于MOS管組合下的邏輯門運算

基于上述電路符號的基礎上,我們將二者結合,NMOS接地、PMOS接電源,試想這樣我們輸入數字1:

  1. 對于NMOS電源導通,輸出端Y導通,接地連同
  2. 對于PMOS電源斷開,與電源端斷開
  3. 最終沒有亮起輸出0

在這里插入圖片描述

同理,我們不妨再嘗試輸入0:

  1. 對于NMOS電源斷開
  2. 對于PMOS電源導通
  3. 電源端導通,輸出1

在這里插入圖片描述

由此可知,輸出結果與輸入結果相反,就生成二進制中的非運算,而上述的組合我們也稱之為非門。同理,設計者們基于NMOS和PMOS這兩種晶體管搭建出各種各樣的門電路:

  1. 與門
  2. 或門
  3. 非門
  4. 與非門
  5. 或非門
  6. 異或門

在這里插入圖片描述

邏輯運算下運算的實現

基于邏輯門的基礎,我們開始推進計算機運算的步驟,我們都知道計算機是二進制語言,對應我們以加法為例,對應的運算為:

  1. 0+0=0 即二進制的00+00,最終輸出二進制結果為00
  2. 0+1=1 即二進制中的00+01,最終輸出二進制結果為01
  3. 1+1=2 即二進制中的01+01,最終輸出二進制結果為10

最終我們將這些數字的二進制運算轉為換下圖所示的表格,我們以1+1為例,可以看到輸出二進制結果為10,對應的低位為0,而進位為1,由此得出10。

在這里插入圖片描述

我們從最基礎的規律抓起,可以看到低位的0本質上不就是異或運算:

  1. 第一行低位的0本質上就是 0^0,對應輸出0
  2. 第一行低位的0本質上就是 0^1,對應輸出1
  3. 第一行低位的0本質上就是 1^1,對應輸出0

然后我們就需要考慮另一個問題,即進位問題,經過推理發現本質上就是按位與,同樣結合表格可以看出,對應的進位本質上就是低位運算的按位與:

  1. 第一行低位的0本質上就是 0&0,對應輸出0
  2. 第一行低位的0本質上就是 0&1,對應輸出0
  3. 第一行低位的0本質上就是 1&1,對應輸出1

最終我們完成低位的加法運算推導過程,即通過:

  1. 異或門計算低位和
  2. 與門計算進位

在這里插入圖片描述

對應的我們將上述的邏輯視圖換成如下符號表示,讀者可結合圖片中的語義自行理解:

在這里插入圖片描述

但是我們加法中還是涉及一些高位累加的,例如15+9對應9+5的進位就需要參與到高位的運算中,所以說我們目前的加法器只是一個簡單的半加法器。

關于二進制進位的運算,通過低位進位和高位和進行按位或解決,我們試想3+3j即二進制的11和11相加,對應的換算步驟為:

  1. 低位兩個1使用半加器算得和為0、進位1。
  2. 高位兩個1使用半加器算得和為0、進位1。
  3. 因為低位有個進位1,也就是10對應高位的和,兩者進行按位或得到1。
  4. 結合低位和0,高位和和低位進位按位或得到1,高位進位1,得到二進制110也就是6:

在這里插入圖片描述

同理我們再演示一下2+2也就是二進制10和10相加:

  1. 低位算得和0進位也為0
  2. 高位算得和為0進位為1
  3. 低位進位0和高位和0按位或得0
  4. 結合低位0、高位和與低位進位0算法低2位為0,高位進位為1即100
  5. 最終結果為4

在這里插入圖片描述

通過這種運算,我們推理出全加法器,在此基礎上,串聯無數個全加法器生成更高進位的加法運算。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/95588.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/95588.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/95588.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

apache poi與Office Open XML關系

以下內容來自AI https://ecma-international.org/publications-and-standards/standards/ecma-376/ 官方規范 https://poi.apache.org/components/oxml4j/index.html java中針對Office Open XML的實現 Apache poi中各個組件 https://poi.apache.org/components/index.html …

S32K328上芯片內部RTC的使用和喚醒配置

1:RTC介紹 1.1 RTC基礎功能介紹 參考《S32K3xx Reference Manual》,S32K328芯片內部自帶RTC功能,并且支持從低功耗狀態下喚醒設備;1.2 RTC電源介紹 由以下三張圖可知 1:RTC由V11供電,V11依賴外部V15供電&am…

【Python】數據可視化之分類圖

目錄 條形圖 箱形圖 散點圖 分簇散點圖 小提琴 分簇小提琴 條形圖 條形圖是一種直觀的圖表形式,它通過不同長度的矩形條(即“條形”)來展示數值變量的中心趨勢估計值,其中每個矩形的高度直接對應于該組數據的某個中心量度&…

RabbitMQ模型詳解與常見問題

項目demo地址:https://github.com/tian-qingzhao/rabbitmq-demo 一、RabbitMQ組件概念 1.1 Server:接收客戶端的連接,實現AMQP實體服務。 1.2 Connection:連接 應用程序與Server的網絡連接,TCP連接。 1.3 Channel&…

網絡:相比于HTTP,HTTPS協議到底安全在哪?

網絡:相比于HTTP,HTTPS協議到底安全在哪? 我們知道HTTPS也是一種應用層協議,它在HTTP的基礎上有一層加密,因為HTTP的數據傳輸都是以明文方式傳輸的,所以加密主要是為了防止數據在傳輸的時候被篡改 今天我…

AI 基礎設施新范式,百度百舸 5.0 技術深度解析

本文整理自 2025 年 8 月 29 日百度云智大會 —— AI 算力平臺專題論壇,百度智能云 AI 計算首席科學家王雁鵬的同名主題演講。大家下午好!昨天在主論壇,我們正式發布了百度百舸 AI 計算平臺 5.0,并展示了多項亮眼的性能數據。今天…

IO進程線程;多線程;線程互斥同步;互斥鎖;無名信號量;條件變量;0905

思維導圖多線程打印ABC運用無名面量 實現進程同步#include<myhead.h> //定義 無名信號量 sem_t sem1; sem_t sem2; sem_t sem3; //線程1 void* task1(void *arg) {while(1){sem_wait(&sem1);printf("A");fflush(stdout);sleep(1);sem_post(&sem2);} } …

固高 GTS-800 運動控制卡完全使用指南:從硬件部署到高階應用

固高 GTS-800 系列運動控制卡作為中端工業控制領域的標桿產品,以其 8-16 軸同步控制能力、豐富的插補功能和穩定的性能,廣泛應用于激光加工、PCB 制造、精密裝配等自動化設備中。本文將系統講解 GTS-800 的硬件架構、開發環境搭建、核心功能實現及工程實踐技巧,幫助工程師快…

STM32F103_Bootloader程序開發15 - 從Keil到vscode + EIDE + GCC的遷移實踐

導言 STM32 - Embedded IDE - GCC - 如何在工程中生成.bin格式固件 STM32 - Embedded IDE - GCC - 使用 GCC 鏈接腳本限制 Flash 區域 STM32 - Embedded IDE - GCC - 如何在工程中定義一段 NoInit RAM 內存 STM32 - Embedded IDE - GCC - 如何將編譯得到的.bin固件添加CRC32校驗…

HTTP協議——理解相關概念、模擬實現瀏覽器訪問自定義服務器

文章目錄HTTP協議理解相關概念HTTP相關背景知識認識URLHTTP協議在網絡通信的宏觀認識urlencode & urldecodeHTTP請求和應答的格式模擬實現瀏覽器訪問自定義服務器關于http requesthttp request的請求行——URI使用瀏覽器完成靜態資源的訪問常用的報頭屬性http response狀態…

【服務器】英偉達M40顯卡風冷方案心得

在之前的博文中&#xff0c;博主說到最近準備自己組裝一臺服務器&#xff0c;主要用于有限元仿真&#xff0c;其次兼顧一部分AI機器學習的工作&#xff0c;于是博主就入手了一張英偉達Tesla M40的12G顯卡GPU。本來博主也糾結過是買M40還是M60&#xff0c;后來在網上看到說M60看…

Java中的鎖升級機制

目錄 核心思想 Java對象頭&#xff08;Object Header&#xff09;與Mark Word 鎖升級的詳細步驟 1. 無鎖&#xff08;No Lock&#xff09; 2. 偏向鎖&#xff08;Biased Locking&#xff09; 3. 輕量級鎖&#xff08;Lightweight Lock&#xff09; 4. 重量級鎖&#xff…

Scikit-learn Python機器學習 - 特征預處理 - 標準化 (Standardization):StandardScaler

鋒哥原創的Scikit-learn Python機器學習視頻教程&#xff1a; 2026版 Scikit-learn Python機器學習 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili 課程介紹 本課程主要講解基于Scikit-learn的Python機器學習知識&#xff0c;包括機器學習概述&#xff0c;特征工程(數據…

windows下wsl2 ubuntu開發配置

配置環境變量# 設置方式 命令/文件 生效范圍 適用場景 # 臨時 export FORCE_UNSAFE_CONFIGURE1 當前終端 臨時編譯軟件 # 用戶級永久 ~/.bashrc或~/.profile 當前用戶 長期使用&#xff08;單用戶&#xff09; # 系統級永久 /etc/environment或/…

網絡編程 05:UDP 連接,UDP 與 TCP 的區別,實現 UDP 消息發送和接收,通過 URL 下載資源

一、概述 記錄時間 [2025-09-02] 前置文章&#xff1a; 網絡編程 01&#xff1a;計算機網絡概述&#xff0c;網絡的作用&#xff0c;網絡通信的要素&#xff0c;以及網絡通信協議與分層模型 網絡編程 02&#xff1a;IP 地址&#xff0c;IP 地址的作用、分類&#xff0c;通過 …

告別線纜束縛!AirDroid Cast 多端投屏,讓分享更自由

AirDroid Cast 是一款功能強大的跨平臺投屏應用&#xff0c;能夠輕松實現手機、電腦之間以及手機之間的屏幕共享與控制。無論是工作演示、在線教學還是游戲直播&#xff0c;AirDroid Cast 都能提供流暢穩定的投屏體驗。 1. 下載與安裝 您可以通過以下鏈接下載 AirDroid Cast&…

從零開始學大模型之大模型訓練流程實踐

大模型訓練流程實踐 本文較長&#xff0c;建議點贊收藏&#xff0c;以免遺失。更多AI大模型開發 學習視頻/籽料/面試題 都在這>>Github<< >>Gitee<< 6.1 模型預訓練 在上一章&#xff0c;我們逐步拆解了 LLM 的模型結構及訓練過程&#xff0c;從零手…

一文從零部署vLLM+qwen0.5b(mac本地版,不可以實操GPU單元)

第一步&#xff1a;下載anaconda for mac https://zhuanlan.zhihu.com/p/350828057 知乎保姆級教程 https://www.anaconda.com/docs/getting-started/anaconda/install#macos-linux-installation 下載地址 第二步&#xff1a;部署vllm的虛擬環境 https://www.53ai.com/news/Op…

Go語言Range用法全解析

引言Go 語言中的 range 關鍵字是集合遍歷的核心語法結構&#xff0c;它提供了一種高效且類型安全的方式來迭代各種數據結構。range 的設計完美體現了 Go 語言的工程哲學 - 通過最小化的語法提供最大化的功能。標準庫中的許多關鍵組件&#xff08;如 sync.Map、bufio.Scanner 等…

mysql進階語法(視圖)

1、視圖概念 是從一個或多個表中導出來的表&#xff0c;它是一種虛擬存在的表&#xff0c;表的結構和數據都依賴于基本表 應用場景&#xff1a; 多個地方用到同樣的查詢結果該查詢結果用到復雜的select語句 視圖優點&#xff1a; 簡化查詢語句&#xff1a;簡化用戶的查詢操作&a…