數據存儲產業服務平臺

2.2.2 CPU、內存和磁盤之間通過網絡來通信

2.2.2  CPU、內存和磁盤之間通過網絡來通信

CPU是一個芯片,磁盤是一個有接口的盒子,它們不是一體的而是分開的,而且都連接在這個網橋上。那么CPU向磁盤要數據,也就是兩個節點之間的通信,必定要通過一種通路來獲取,這個通路當然是電路!

凡是分割的節點之間,需要接觸和通信,就可以成為網絡。那么就不由地使我們往OSI模型上去靠,這個模型定義得很好。既然通信是通過電路,也就是物理層的東西,那么鏈路層都有什么內容呢?

大家知道,鏈路層相當于一個司機,它把貨物運輸到對端。司機的作用就是駕駛車輛,而且要判斷交通規則做出配合。那么在這個計算機總線組成的網絡中,是否也需要這樣一個角色呢?答案是不需要。因為各個節點之間的路實在是太短、太穩定了!主板上那些電容、電阻和蛇行線,這一切都是為了保障這些電路的穩定和高速。在這樣的一條高速、高成本的道路上,是不需要司機的,更不需要押運員!所以,計算機總線網絡是一個只有物理層、網絡層和上三層的網絡!

下面我們就按照"連找發"三元素理論,去分析一個CPU向磁盤要數據的例子。

CPU與硬盤數據交互的過程

首先看"連"這個元素,這個當然已經具備了,因為總線已經提供了"連"所需的       條件。

再看"找"這個元素,前面說了,首先要有區分,才能有所謂"找",這個區分體現在主機總線中就是設備地址映射。每個IO設備在啟動時都要向內存中映射一個或者多個地址,這個地址有8位長,又被稱作IO端口。針對這個地址的數據,統統被北橋芯片重定向到總線上實際的設備上。假如,IDE磁盤控制器地址被映射到了地址0xA0,也就是十六進制A0,CPU根據程序機器代碼,向這個地址發出多條指令來完成一個讀操作,這就是"找"。"找"的條件也具備了。

接下來我們看看"發"這個元素!首先CPU將這個IO地址放到系統總線上,北橋接收到之后,會等待CPU發送第一個針對這個外設的指令。然后CPU發送如下3條指令。

第一條指令:指令中包含了表示當前指令是讀還是寫的位,而且還包含了其他選項,比如操作完成時是否用中斷來通知CPU處理,是否啟用磁盤緩存等。

第二條指令:指明應該讀取的硬盤邏輯塊號(LBA)。這個邏輯塊在我們講磁盤結構時會講到,總之邏輯塊就是對磁盤上存儲區域的一種抽象。

第三條指令:給出了讀取出來的內容應該存放到內存中哪個地址中。

這3條指令被北橋依次發送給IO總線上的磁盤控制器來執行。磁盤控制器收到第一條指令之后,知道這是讀指令,而且知道這個操作的一些選項,比如完成是否發中斷,是否啟用磁盤緩存等,然后磁盤控制器會繼續等待下一條指令,即邏輯塊地址(號)。磁盤控制器收到指令之后,會進行磁盤實際扇區和邏輯塊的對應查找,可能一個邏輯塊會對應多個扇區,查找完成之后,控制器驅動磁頭尋道,等盤體旋轉到那個扇區后,磁頭開始讀出數據。在讀取數據的同時,磁盤控制器會接收到第三條指令,也就是CPU給出的數據應該存放在內存中的地址。有了這個地址,數據讀出之后直接通過DMA技術,也就是磁盤控制器可以直接對內存尋址并執行寫操作,而不必先轉到CPU,然后再從CPU存到內存中。數據存到內存中之后,CPU就從內存中取數據,進行其他運算。

上面說的過程是"讀","寫"的過程也可以以此類推,而且CPU向磁盤讀寫數據,和向內存讀寫數據大同小異,只不過CPU和內存之間有更高速的緩存。緩存對于計算機很重要,對于磁盤陣列同樣重要,后面內容將會介紹到。

那么控制器對磁盤發出的一系列指令是怎么定義的呢?它們形成了兩大體系,一個是ATA指令集,一個是SCSI指令集。SCSI指令集比ATA指令集高效,所以廣泛用于服務器和磁盤陣列環境中。這些指令集,也可以稱為協議,協議就是語言,就是讓通信雙方知道對方傳過來的bit流里面到底包含了什么,怎么由筆劃組成字,由字組成詞,詞組成句子,等等。

未經允許不得轉載:存儲在線-存儲專業媒體 » 2.2.2 CPU、內存和磁盤之間通過網絡來通信
精品国产午夜肉伦伦影院,双性老师灌满浓jing上课h,天天做天天爱夜夜爽,攵女乱h边做边走