计算机IO系列「零」计算机IO【硬件部分】
背景:最近遇到了io等待導(dǎo)致我整個系統(tǒng)掛掉的問題,當(dāng)然是因為其它原因。一只對io從硬件到軟件、阻塞和非阻塞這些概念一知半解,故記錄一下了解到過程
1.、總線:
IO是通過共享一條總線的方式來實現(xiàn)的,總線也就是一條或者多條物理上的導(dǎo)線,每個部件都接到這些導(dǎo)線上,導(dǎo)線上的電位每個時刻都是相等的(這個地方需要注意下,之前沒有考慮這個問題),這樣總線上的所有部件都會受到相同的信號。也就是說,這條總線是共享的,同一個時刻只能有一個部件在接收或者發(fā)送,是全單工的工作模式。(數(shù)據(jù)只在一個方向上傳輸,不能實現(xiàn)雙方通信單工、半雙工和全雙工的區(qū)別_布袋和尚-CSDN博客)
*PCI是Peripheral Component Interconnect(外設(shè)部件互連標(biāo)準(zhǔn))的縮寫
*南北橋結(jié)構(gòu)的主板上都有兩個面積比較大的芯片,靠近CPU的為北橋芯片,主要負(fù)責(zé)控制AGP顯卡、內(nèi)存與CPU之間的數(shù)據(jù)交換;靠近PCI槽的為南橋芯片,主要負(fù)責(zé)軟驅(qū)、硬盤、鍵盤以及附加卡的數(shù)據(jù)交換。
2、北橋芯片:
一塊電腦主板,以CPU插座為北的方法拿著,靠近CPU插槽的一個起連接作用的芯片稱為“北橋芯片”,英文名:North Bridge Chipset。北橋芯片(NorthBridge)是主板芯片組中起主導(dǎo)作用的組成部分,也稱為主橋(HostBridge)。北橋是個人電腦主板芯片組兩枚大規(guī)模芯片中的一枚。北橋被用來處理高速信號,通常處理CPU(處理器),RAM(內(nèi)存),AGP端口或PCI Express,和南橋芯片之間的通信。一般來說,芯片組的名稱就是以北橋芯片的名稱來命名的,例如英特爾 845E芯片組的北橋芯片是82845E,875P芯片組的北橋芯片是82875P等等。北橋芯片負(fù)責(zé)與CPU的聯(lián)系并控制內(nèi)存、AGP數(shù)據(jù)在北橋內(nèi)部傳輸,提供對CPU的類型和主頻、系統(tǒng)的前端總線頻率、內(nèi)存的類型(SDRAM,DDR SDRAM以及RDRAM等等)和最大容量、AGP插槽、ECC糾錯等支持,整合型芯片組的北橋芯片還集成了顯示核心。北橋芯片就是主板上離CPU最近的芯片,這主要是考慮到北橋芯片與處理器之間的通信最密切,為了提高通信性能而縮短傳輸距離。因為北橋芯片的數(shù)據(jù)處理量非常大,發(fā)熱量也越來越大,所以現(xiàn)在的北橋芯片都覆蓋著散熱片用來加強北橋芯片的散熱,有些主板的北橋芯片還會配合風(fēng)扇進行散熱。因為北橋芯片的主要功能是控制內(nèi)存,而內(nèi)存標(biāo)準(zhǔn)與處理器一樣變化比較頻繁,所以不同芯片組中北橋芯片是肯定不同的,當(dāng)然這并不是說所采用的內(nèi)存技術(shù)就完全不一樣,而是不同的芯片組北橋芯片間肯定在一些地方有差別。
3、南橋芯片:
南橋芯片(SouthBridge)是主板芯片組的重要組成部分,一般位于主板上離CPU插槽較遠(yuǎn)的下方,PCI插槽的附近,這種布局是考慮到它所連接的I/O總線較多,離處理器遠(yuǎn)一點有利于布線。相對于北橋芯片來說,其數(shù)據(jù)處理量并不算大,所以南橋芯片一般都沒有覆蓋散熱片。南橋芯片不與處理器直接相連,而是通過一定的方式(不同廠商各種芯片組有所不同,例如英特爾的英特爾Hub Architecture以及SIS的Multi-Threaded“妙渠”)與北橋芯片相連。
南橋芯片負(fù)責(zé)I/O總線之間的通信,如PCI總線、USB、LAN、ATA、SATA、音頻控制器、鍵盤控制器、實時時鐘控制器、高級電源管理等,這些技術(shù)一般相對來說比較穩(wěn)定,所以不同芯片組中可能南橋芯片是一樣的,不同的只是北橋芯片。所以現(xiàn)在主板芯片組中北橋芯片的數(shù)量要遠(yuǎn)遠(yuǎn)多于南橋芯片。例如早期英特爾不同架構(gòu)的芯片組Socket 7的430TX和Slot1的440LX其南橋芯片都采用82317AB,而近兩年的芯片組845E/845G/845GE/845PE等配置都采用ICH4南橋芯片,但也能搭配ICH2南橋芯片。更有甚者,有些主板廠家生產(chǎn)的少數(shù)產(chǎn)品采用的南北橋是不同芯片組公司的產(chǎn)品,例如以前升技的KG7-RAID主板,北橋采用了AMD760,南橋則是VIA 686B。南橋芯片的發(fā)展方向主要是集成更多的功能,例如網(wǎng)卡、RAID、IEEE 1394、甚至WI-FI無線網(wǎng)絡(luò)等等
新的i3、i5、i7處理器也都將將存儲控制器整新的i3合到CPU中,并且為處理器提供了更快的管道和系統(tǒng)部件的通信能力。同時新的移動處理器還“革命”性的將圖形處理核心(GPU)整合到了處理器中。這種將兩種制程工藝制造的處理器整合到一起的產(chǎn)品堪稱業(yè)界首創(chuàng),32nm的處理器核心+45nm圖形處理核心、內(nèi)存控制器共同構(gòu)成了代號為Arrandale的新款移動處理器,而與以往的分離式設(shè)計相比,這種將圖形處理核心集成在處理器內(nèi)部的做法直接提高了系統(tǒng)整體的兼容性和穩(wěn)定性。被Intel稱為“高清顯卡”的圖形處理器支持2通道的高清全硬件解碼,令高清電影的播放更為流暢,畫面更清晰逼真,令用戶的視覺體驗加倍升級。?全新的酷睿i3/i5/i7是把北橋芯片組也集成到CPU上,其內(nèi)部仍是采用QPI總線來通訊,而外部與主板芯片組通訊,其實就是以往主板上南橋與北橋通訊,采用的正是DMI總線。酷睿i3/i5/i7并沒有精簡QPI總線,只是集成度更高而已。QPI總線可以用于CPU內(nèi)部通訊,也可以用于CPU與主板北橋芯片組通訊,而Bloomfield Core i7正是利用QPI作為CPU內(nèi)部通信以及CPU與北橋通信的通道。QPI總線的傳輸速率是FSB 1600MHz的4倍多,雖然前者數(shù)據(jù)位寬較窄,但傳輸帶寬仍然是后者的2倍。通過QPI總線,可以有效地降低了處理器和各個硬件之間數(shù)據(jù)傳輸?shù)难舆t,能有效地提高系統(tǒng)性能。
關(guān)于總線的描述可以參考這部分代碼:總線概述及常見總線_fivedoumi的專欄-CSDN博客_dmi總線
4、IO案例分析:
下面我們按照“連找發(fā)” 三元素理論,去分析一個CPU向磁盤要數(shù)據(jù)的例子:
連——總線
找——首先要有分區(qū),才能有所謂“找”,這個分區(qū)體現(xiàn)在主機總線中就是設(shè)備地址映射。每個IO設(shè)備在啟動時都要向內(nèi)存中映射一個或者多個地址,這個地址有8位長,又被稱作IO端口。針對這個地址的數(shù)據(jù),統(tǒng)統(tǒng)被北橋芯片重定向到總線上實際的設(shè)備上。假如,IDE磁盤控制器地址被映射到了地址0xA0,也就是十六進制A0,CPU根據(jù)程序機器代碼,向這個地址發(fā)出多條指令來完成一個讀操作,這就是找。
發(fā)——首先CPU將這個IO地址放到系統(tǒng)總線上,北橋接收到之后,會等待CPU發(fā)送第一個針對這個外設(shè)的指令。然后CPU發(fā)送如下3條指令。?
第一條:指令中包含了表示當(dāng)前指令時讀還是寫的位,而且還包含了其他選項,比如操作完成時是否用中斷來通知CPU處理,是否啟用磁盤緩存等。
第二條:指明應(yīng)該讀取的硬盤邏輯塊號(LBA)。這個邏輯塊在我們講磁盤結(jié)構(gòu)時會講到,總之邏輯塊就是對磁盤上存儲區(qū)域的一種抽象。
第三條:給出讀取出來的內(nèi)容應(yīng)該放到內(nèi)存中哪個地址中。
這3條指令被北橋依次發(fā)送給IO?總線上的磁盤控制器來執(zhí)行。磁盤控制器收到第一條指令之后,知道這是讀指令,而且知道這個操作的一些選項,比如完成是否發(fā)中斷,是否啟用磁盤緩存等,然后磁盤控制器會繼續(xù)等待下一條指令,即邏輯塊地址。磁盤空間器收到指令后,會進行磁盤實際扇區(qū)和邏輯塊的對應(yīng)查找,可能一個邏輯塊會對應(yīng)多個扇區(qū),查找完成之后,控制器驅(qū)動磁頭尋道,等盤體旋轉(zhuǎn)到那個扇區(qū)后,磁頭開始讀出數(shù)據(jù)。在讀取數(shù)據(jù)的同時,磁盤控制器會接收都第三條指令,也就是CPU給出的數(shù)據(jù)應(yīng)該存放在內(nèi)存中的地址。有了這個地址,數(shù)據(jù)獨處之后直接通過DMA(DMA是Direct Memory Access的縮寫。其意思是“存儲器直接訪問”。它是指一種高速的數(shù)據(jù)傳輸操作,允許在外部設(shè)備和存儲器之間直接讀寫數(shù)據(jù),即不通過CPU,也不需要CPU干預(yù)。整個數(shù)據(jù)傳輸操作在一個稱為“DMA控制器”的控制下進行的。CPU除了在數(shù)據(jù)傳輸開始和結(jié)束時作一點處理外,在傳輸過程中CPU可以進行其它的工作。這樣,在大部分時間里,CPU和輸入輸出都處在并行操作。因此,使整個計算機系統(tǒng)的效率大大提高)技術(shù),也就是磁盤控制器可以直接對內(nèi)存尋址并執(zhí)行寫操作,而不必先轉(zhuǎn)到CPU,然后再從CPU存到內(nèi)存中。
磁盤可以說是計算機系統(tǒng)最慢的硬件之一,讀寫速度相差內(nèi)存 10 倍以上,所以針對優(yōu)化磁盤的技術(shù)非常的多,比如零拷貝、直接 I/O、異步 I/O 等等,這些優(yōu)化的目的就是為了提高系統(tǒng)的吞吐量,另外操作系統(tǒng)內(nèi)核中的磁盤高速緩存區(qū),可以有效的減少磁盤的訪問次數(shù)。
總結(jié)
以上是生活随笔為你收集整理的计算机IO系列「零」计算机IO【硬件部分】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机网络是如何通信的【二】
- 下一篇: 锁究竟锁住的是什么?