主頁 > 作業系統 > 聊聊開關和CPU之間故事

聊聊開關和CPU之間故事

2023-04-28 12:50:59 作業系統

目錄
  • 開關
  • 電報和繼電器
  • 門電路
  • 材料學的發展
    • 繼電器與哈佛Mark1號
    • 真空管與巨人一號
    • 晶體管與IBM608
  • 計算機2大特性:計算能力和記憶能力

作者:小牛呼嚕嚕 | https://xiaoniuhululu.github.io

大家好,我是呼嚕嚕,在先前的一篇文章計算機中數值和字串怎么用二進制表示?中,我們知道了計算機為什么會采用 0 和 1 組成的二進制,來表示所有的資訊,比如機器指令、數字、字串、聲音、圖片、視頻等等,

我們本篇文章來看看計算機在硬體層面究竟是怎么表示二進制的,CPU究竟是怎么實作的?通過本文的學習,我們也可以反過來明白為什么計算機會采用二進制了,

開關

我們在生活中,處處都是開關,比如控制燈的開關

image

我們可以發現一個很簡單的現象:

  1. 串聯的開關,只有2個開關都閉合,燈泡才亮,這也就是布爾代數中"邏輯運算與"
  2. 并聯的開關,只要有1個開關閉合,燈泡就會亮,這也就是布爾代數中"邏輯運算或"

我們以最簡單的2個數,0和1來舉個例子,寫出其布爾代數的真值表:

image

電報和繼電器

在人類資訊傳遞發展的歷史上,長途資訊傳遞一直是非常困難的時,當時常見的方式有,比如人騎馬送信,訓練信鴿、點燃烽火,但資訊傳遞的效率都非常低效,直到電報的出現,電報思想的正式成形是在19世紀早期,它的讓人類傳遞資訊的效率得到極大的提升,

電報利用電的特性來傳遞資訊,早期設計復雜且不穩定,傳遞的資訊復雜度又比較低,1837年美國人摩爾斯通過電磁感應改良了發報機,并發明了摩爾斯電碼,他將電報劃分為2種信號,短促的"點信號"和長一點的"劃信號", 將把“點”當成“1”,把“劃”當成“0”(這不就是二進制嘛),并撰寫了個“字典”將字母及數字編碼一一對應,這樣就能傳遞復雜的資訊,在未來產生了巨大影響力,意味著現代通信的開始,

由于早期的電報傳輸,需要鋪設電線,但是隨著電線越長,其電阻就越大,電信號常常傳輸程序中被消耗點,這樣接受方就無法接收到資訊了,幸運的是,工程師發明了繼電器,其原理就是接收微弱的信號,然后不斷地通過新的電源重新放大已經開始衰減的原有信號,最后把它增強后發送出去

image

當開關是打開的話,燈泡是不亮的;但當開關是閉合的話, 電流流過圍繞在鐵棒上的線圈,會發生電磁效應,鐵棒就具有了磁性,會將彈簧片吸下來,右邊電路就通了,燈泡就會亮了,這樣通過繼電器,一段段放大信號,電報就能長距離傳輸資訊了,

雖然繼電器有放大信號的作用,但和開關一樣繼電器也可以串聯或并聯以執行邏輯中的簡單任務,繼電器比起普通的開關的優勢在于繼電器無需直接被輸入者控制,可以被其他繼電器控制,這樣就可以組合完成更復雜的操作,比如我們可以通過繼電器實作: 當我們閉合開關時,燈泡關閉;當我們打開開關時,燈泡去點亮這種燈泡的狀態和開關的閉合狀態相反的操作,普通開關是無法實作這種操作的,這些電路物理的表象下隱藏的邏輯關系,一直沒有被人發現,

直到1938年,克勞德·香農在麻省理工學院所寫的碩士論文《A Symbolic Analysis of Relay and Switching Circuits》中闡述了繼電器和開關電路中的符號分析之間的關系,他將開關、繼電器、二進制、布爾代數聯系起來,也就是發現人類可以通過開關和繼電器這些普通的電路,直接就能實作布爾代數各種邏輯運算操作,這些繼電器的組合被稱為邏輯門,他們構造基本的邏輯電路,也叫門電路

門電路

image

上面是3種最最基本的門:

  1. 與門,兩個開關只有同時打開,電流才會通過,燈泡才會亮
  2. 非門,當開關閉合時,電流會通過,燈泡會亮;開關打開,電流不能通過反而,燈泡熄滅
  3. 或門,兩個開關中只要有一個打開電流就能通過,燈就會點亮

這些門其實就是一個個"開關"的抽象, 以后我們需要的各種復雜的邏輯都可以通過這3個門來實作,真的是非常奇妙
我們再來看一個常見的門:異或門XOR

image

我們先寫出其真值表(真值表是在邏輯中使用的一類數學表,用來確定一個運算式是否為真或有效):

A B X(輸出)
0 0 0
0 1 1
1 1 0
1 0 1

其運算式也就是:
image

通過運算式我們就能知道,把非A與B的值 和非B與A的值 通過或門加起來就能得到異或門

image

材料學的發展

上世紀材料學的發展也大力推動了計算機的蓬勃發展,計算機的硬體出現了3次大的更新換代

繼電器與哈佛Mark1號

在1944年,為了給美國曼哈頓計劃跑模擬,IBM建造出來首臺自動按序控制計算機哈弗Mark1號,有76萬五千個組件,300萬個連接點和500英里長的導線,重達4500公斤,占地面積有房間那么大,其大腦是由繼電器組成的,其一秒能做3次加或減,乘法花費6秒,除法花費15秒

image

由于繼電器的金屬臂有“質量”,無法快速開關,1940年一個好的繼電器一秒鐘可以翻轉50次,但是任何會動的機械都會隨著時間出現物理磨損,部件會損壞,隨著繼電器數量增加,故障概率也會增加,真的是又慢又容易壞的大家伙,但瑕不掩瑜,其依舊具有跨時代的意義,

真空管與巨人一號

在1904年,英國物流學家弗萊明就已經開發了一種新的電子組件,叫做真空管,也就是把兩個電極裝在一個氣密的玻璃燈泡里,但弗萊明的這個電子部件,電流只能單向流動,俗稱稱為 "二極管",要想制作計算機,需要能夠控制電子的流動的東西,

在 1906 年,美國發明家"李·德富雷斯特"在"弗萊明"設計的兩個電極之間,加入了第三個"控制"電極(一 種柵欄式的金屬網,形成電子管的第三個極),向"控制"電極施加正電荷,它會允許電子流動;但如果施加負電荷,它會阻止電子流動,被命名為真空三極管,這樣就能形成一個"開關",可以“斷開或閉合電路”,

由于真空管內沒有會動的組件,想較于機械裝置,磨損更少,又沒有金屬臂的限制,每秒可以開閉數千次,繼電器一秒鐘只能翻轉50次左右,效率大大的提升,

第一個大規模使用真空管的計算機是"巨人1號",標志著計算機從機電轉向電子,電子計算機的大門自此打開,由工程師Tommy Flowers設計,完工于1943年12月,用于二戰時破解德國軍事通訊密碼,

image

晶體管與IBM608

雖然真空管做計算機的大腦,解決了繼電器許多缺陷,但是其還是容易損壞,就像燈泡一樣啥訓,到1950年代,真空管計算機都達到了極限,

1947年,貝爾實驗室發明了晶體管,其成為了新的"開關",也標志著一個全新的計算機時代到來,晶體管不僅體積小,回應速度快(每秒切換開關能達到上百萬次),而且使用壽命也非常悠遠,準確 性高,穩定性好,不易損壞,關鍵它可以做得非常小,一塊集成電路即可容納十幾億到幾十億 個晶體管,

晶體管泛指一切以半導體材料為基礎的單一元件,半導體顧名思義,可導電也可不導電,是常溫下導電性能介于導體與絕緣體之間的材料,一般有硅、鍺、砷化鎵等

IBM608第一個完全用晶體管,消費者也可以買的起計算機,該計算機有3000個晶體管,每秒執行4500次加法,80次左右的乘除法,

image

計算機2大特性:計算能力和記憶能力

通過本文的閱讀,我們知道了開關是一個生活中很普通的東西,但香農將開關、布爾代數聯系的一起后,產生了化學反應,可以用一個個開關組合起來,成為門電路,從而能夠造成CPU,

隨著材料學等發展,開關也從繼電器到真空管,再到晶體管,相應速度,提交,使用壽命,成本都得到了明顯的改善,他們制造出來的計算機也慢慢的變成了我們現在熟悉的計算機,

計算機的大腦就是CPU,我們知道CPU內最重要的2個部件是暫存器和計算單元那么如何用開關來讓計算機擁有計算能力和記憶能力?大家可以思考一下,后面的文章讓我們拋開硬體,通過抽象出來的邏輯門來一步步設計和實作一個CPU,


參考資料:
《深入理解計算機系統》
《編碼:隱匿在計算機軟硬體背后的語言》
《深入淺出計算機組成原理》
《數字電子技識訓礎》
《穿越計算機的迷霧》
百度百科


全文完,感謝您的閱讀,如果我的文章對你有所幫助的話,還請點個免費的,你的支持會激勵我輸出更高質量的文章,感謝!

原文鏡像:聊聊開關和CPU之間故事

計算機內功、原始碼決議、科技故事、專案實戰、面試八股等更多硬核文章,首發于公眾號「小牛呼嚕嚕」,我們下期再見!

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/551413.html

標籤:Linux

上一篇:快速上手Linux核心命令(九):檔案備份與壓縮

下一篇:返回列表

標籤雲
其他(158258) Python(38107) JavaScript(25396) Java(18003) C(15218) 區塊鏈(8260) C#(7972) AI(7469) 爪哇(7425) MySQL(7152) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5870) 数组(5741) R(5409) Linux(5334) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4565) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2432) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1964) Web開發(1951) HtmlCss(1928) python-3.x(1918) 弹簧靴(1913) C++(1912) xml(1889) PostgreSQL(1874) .NETCore(1857) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • 聊聊開關和CPU之間故事

    作者:小牛呼嚕嚕 | https://xiaoniuhululu.github.io 大家好,我是呼嚕嚕,在先前的一篇文章計算機中數值和字串怎么用二進制表示?中,我們知道了計算機為什么會采用 0 和 1 組成的二進制,來表示所有的資訊,比如機器指令、數字、字串、聲音、圖片、視頻等等。 我們本篇文 ......

    uj5u.com 2023-04-28 12:50:59 more
  • 快速上手Linux核心命令(九):檔案備份與壓縮

    (檔案備份與壓縮) 這期呢主要說一說Linux中檔案備份與壓縮命令,一共6個命令。這6個命令都是平常作業中非常非常常用的。 tar 打包備份 1、簡介 tar 可以將多個檔案壓縮打包、壓縮。是作業中經常用到的命令 2、語法格式 tar [引數選項] [檔案或目錄] 3、引數說明 | 引數 | 引數說 ......

    uj5u.com 2023-04-28 12:38:53 more
  • 明解STM32—GPIO應用設計篇之API函式及配置使用技巧

    一、前言 本篇開始對STM32的GPIO在實際開發設計中的使用配置和技巧進行探討,可以先去回顧下之前介紹的GPIO的相關理論基礎知識包括基本結構,作業模式和暫存器原理。 了解過STM32的GPIO相關的理論知識,這樣在應用GPIO開發程序中,能更好的理解GPIO的特點,應用起來會更加的得心應手。 后 ......

    uj5u.com 2023-04-27 10:02:09 more
  • Linux查看各用戶硬碟占用大小

    Linux查看各用戶硬碟占用大小 在Linux中,如果要統計各用戶占用硬碟的大小,可以執行如下的命令 du -sh /home/* 這條命令會以K、M、G等單位輸出 /home 下各用戶目錄占用硬碟的總大小,例如下面這樣: [root@localhost ~]# du -sh /home/* 24K ......

    uj5u.com 2023-04-27 10:01:31 more
  • 快速上手Linux核心命令(六):Linux的文本編輯器vi和vim

    @(Linux的文本編輯器) 前言 上一篇中已經預告,我們這篇主要說Linux中vi/vim 編輯器。它是我們使用Linux系統不可缺少的工具,學會了,你就可以在Linux世界里暢通無阻,學廢了,常用操作你也會了,也是夠用了,O(∩_∩)O 簡介 vi是Linux系統下標準編輯器,就相當于Windo ......

    uj5u.com 2023-04-27 10:00:55 more
  • CentOS搭建squid正向代理

    squid介紹 官網地址:http://www.squid-cache.org/ Squid cache(簡稱為 Squid)是一個流行的自由軟體(GNU 通用公共許可證)的代理服務器和 Web 快取服務器。Squid 有廣泛的用途,從作為網頁服務器的前置 cache 服務器快取相關請求來提高 We ......

    uj5u.com 2023-04-27 10:00:29 more
  • 明解STM32—GPIO應用設計篇之API函式及配置使用技巧

    一、前言 本篇開始對STM32的GPIO在實際開發設計中的使用配置和技巧進行探討,可以先去回顧下之前介紹的GPIO的相關理論基礎知識包括基本結構,作業模式和暫存器原理。 了解過STM32的GPIO相關的理論知識,這樣在應用GPIO開發程序中,能更好的理解GPIO的特點,應用起來會更加的得心應手。 后 ......

    uj5u.com 2023-04-27 09:59:24 more
  • Linux查看各用戶硬碟占用大小

    Linux查看各用戶硬碟占用大小 在Linux中,如果要統計各用戶占用硬碟的大小,可以執行如下的命令 du -sh /home/* 這條命令會以K、M、G等單位輸出 /home 下各用戶目錄占用硬碟的總大小,例如下面這樣: [root@localhost ~]# du -sh /home/* 24K ......

    uj5u.com 2023-04-27 09:58:05 more
  • 快速上手Linux核心命令(六):Linux的文本編輯器vi和vim

    @(Linux的文本編輯器) 前言 上一篇中已經預告,我們這篇主要說Linux中vi/vim 編輯器。它是我們使用Linux系統不可缺少的工具,學會了,你就可以在Linux世界里暢通無阻,學廢了,常用操作你也會了,也是夠用了,O(∩_∩)O 簡介 vi是Linux系統下標準編輯器,就相當于Windo ......

    uj5u.com 2023-04-27 09:44:14 more
  • CentOS搭建squid正向代理

    squid介紹 官網地址:http://www.squid-cache.org/ Squid cache(簡稱為 Squid)是一個流行的自由軟體(GNU 通用公共許可證)的代理服務器和 Web 快取服務器。Squid 有廣泛的用途,從作為網頁服務器的前置 cache 服務器快取相關請求來提高 We ......

    uj5u.com 2023-04-27 09:26:12 more