620 likes | 1.2k Views
計算機組織與結構 - 效能設計. 第七章 I/O ( 輸入 / 輸出 ). I/O(Input-Output). I/O 通常包含 I/O 模組和外部設備 外部設備 : 各種不同的週邊裝置 使用不同的速度 使用不同的格式 傳送不等量的資料 I/O 模組:外部設備需要 I/O 模組,連接到系統 然而,相對 CPU 和 RAM 而言, I/O 的速度很慢. 7.1 外部設備. 人類可讀設備 比如:螢幕、印表機、鍵盤 … 等 機器可讀設備 比如:磁碟、磁帶 通訊設備 比如:數據機、網路介面卡 (NIC). 外部設備方塊圖. I/O 資料傳輸過程.
E N D
計算機組織與結構-效能設計 第七章 I/O(輸入/輸出)
I/O(Input-Output) • I/O通常包含I/O模組和外部設備 • 外部設備:各種不同的週邊裝置 • 使用不同的速度 • 使用不同的格式 • 傳送不等量的資料 • I/O模組:外部設備需要I/O模組,連接到系統 • 然而,相對CPU和RAM而言,I/O的速度很慢
7.1 外部設備 • 人類可讀設備 • 比如:螢幕、印表機、鍵盤…等 • 機器可讀設備 • 比如:磁碟、磁帶 • 通訊設備 • 比如:數據機、網路介面卡 (NIC)
I/O資料傳輸過程 處理器詢問I/O模組,以了解外部設備的狀態。 I/O模組傳回外部設備的狀態。 如果外部設備處於運轉狀態,而且已經準備好傳送資料,則處理器會對I/O模組發出命令,要求進行資料的傳輸。 I/O模組會由外部設備取得一個單位的資料。 該筆資料由I/O模組傳送到處理器內。
7.2 I/O模組 • CPU(記憶體)和週邊裝置之間的介面 • 一個I/O模組可以連接多個週邊裝置
I/O模組功能 控制和時序 CPU通訊 設備通訊 資料緩衝 錯誤偵測
I/O主要技術 • 程式I/O • 中斷I/O • DMA(直接記憶體存取)
I/O主要技術流程圖 (a)程式I/O (b)中斷I/O (c)DMA
7.3 程式I/O (Programmed I/O) • 程式I/O就是軟體I/O、輪詢I/O • CPU執行程式來直接控制I/O動作 • 感測狀態 • 讀寫命令 • 傳送資料 • 通常CPU必須等待I/O的回應,可惜I/O很慢,往往需要時間才有能力回答CPU的詢問,因此,很浪費CPU時間
程式I/O運作程序 CPU請求I/O動作 定址I/O模組 發佈I/O命令 I/O模組開始動作 I/O模組設定狀態位元 CPU定期地檢查狀態位元 請注意: I/O模組不會主動通知CPU I/O模組也不會中斷CPU I/O慢速,CPU必須等待
定址I/O模組 記憶體對映I/O 設備和記憶體共用相同的位址空間 I/O讀寫方式就像記憶體的讀寫方式 沒有特殊I/O指令,使用記憶體指令即可存取 隔離式I/O 分開成不同的位址空間 要先選擇I/O或記憶體 使用特殊的I/O指令,但所提供的相關指令通常不多
發佈I/O命令 控制命令-用來啟動某個週邊裝置,指示動作 比如:旋轉磁片 測試命令-用來測試與I/O模組和週邊裝置的狀態 比如:電源?錯誤? 讀寫命令-經由設備彼此傳輸資料 類似記憶體存取
7.4 中斷驅動I/O • 克服CPU的等待問題 • CPU不必重複地檢查設備 • 等到I/O內部動作完成,I/O會主動對CPU發出中斷要求
中斷I/O 動作方式 CPU發佈I/O模組的讀取命令 然後,CPU繼續執行其它工作 同時,I/O模組開始從週邊裝置取得資料 等到I/O模組取得所有的資料後,中斷CPU CPU暫停其它工作,再對I/O模組請求資料 最後,I/O模組把所有的資料傳輸給CPU
重新以CPU觀點來看中斷I/O CPU發佈讀取命令 不管I/O模組,轉而執行其它工作 在每個指令週期尾,檢查使否有中斷要求 如果有中斷要求的話 儲存某些可能會被中斷破壞的內容(暫存器) 執行中斷處理程序,以擷取資料和儲存資料
中斷設計主題 如何辨識是那個I/O模組發出中斷要求? 同時發生數個中斷要求時,該優先執行哪一個中斷處理程序?
辨識誰發出中斷要求?(1) 多重中斷線路 有幾個I/O模組,就給幾條中斷線路 I/O設備數目會受到限制 軟體輪詢 CPU依序輪流詢問每個模組 很慢
辨識誰發出中斷要求?(2) 菊花鏈(硬體輪詢) I/O模組以向量方式串接一起 CPU送出中斷認可到鏈結線路上 發出中斷要求的I/O模組,會指出向量位址指標,指向其中斷服務常式 匯流排仲裁 使用中斷之前,必須先取得匯流排控制權 比如:PCI & SCSI
中斷優先順序 以上各種中斷有各自的優先順序 高優先權可以中斷較低優先權
8259A 中斷控制器 80x86有一條中斷線 80x86採用8259A中斷控制器,擴充中斷線 8259A可直接外接八條中斷線
8259A中斷事件順序 8259A接收中斷要求 8259A決定優先順序 8259A通知8086 (拉起INTR線) CPU發出認可訊號 8259A在資料匯流排上,置放正確的中斷向量位址 CPU開始進行中斷
串接的8259A 可以把兩個8259A直接串接起來 經由IR2串接起這兩個8259A 因此,總共可外接15個中斷線 目前常把這些8259A合併到晶片組內
DMA(直接記憶體存取) • 中斷I/O和程式I/O仍然需要CPU中介 • 傳輸速度受限 • CPU仍需管理資料傳輸過程 • DMA是比較好的解答
DMA功能 在匯流排上,加入DMA控制器 DMA控制器的功能類似CPU中介資料傳輸的角色,直接存取記憶體,而不再依賴CPU
DMA動作方式 CPU會告知DMA控制器執行以下訊息: 讀取/寫入 設備位址 資料記憶體區塊的啟始位址 傳輸資料區塊大小 然後,CPU轉而執行其它工作 DMA控制器開始接手資料傳輸工作 確定整個傳輸結束後,DMA控制器才送出中斷給CPU
DMA傳輸的週期匯流排偷削技術 DMA必須等CPU不用系統匯流排時,才可以使用。 或者, 可以在處理器使用系統匯流排時,強迫CPU暫停一個週期,讓DMA控制器取得暫時的匯流排控制權 通常會在運算元、資料擷取、資料寫入週期之前 DMA一次傳輸一字組資料 這種方法稱為匯流排偷削(Cycle stealing)技術 偷削技術仍會降低處理器的執行效率(但相對影響較輕) DMA並非中斷,因為CPU並沒有切換去執行其它工作
DMA組態(1) 單一匯流排,分離式DMA控制器 每次傳輸總是使用兩個匯流排週期 I/O - DMA,DMA-記憶體 CPU會被暫停兩次
DMA組態(2) 單一匯流排,整合型DMA控制器 控制器可以支援多個設備 每次傳輸使用一個匯流排週期 DMA - memory CPU被暫停一次
DMA組態(3) 在DMA下,使用I/O匯流排連接所有I/O模組 每個傳輸使用一次匯流排週期 DMA - memory CPU被暫停一次
DMA模組把記憶體資料區塊轉移給磁碟 週邊裝置(比如:磁碟控制器)將會把DREQ(DMA request)訊號拉升,請求DMA服務。 DMA會把HRQ(hold request)變成high,藉由HOLD訊號,通知CPU它需要使用匯流排。 CPU會結束目前匯流排週期,把HLDA變成high,來回應DMA請求,並且允許8237 DMA使用匯流排,來執行任務,當DMA正在執行任務時,HOLD必須一直保留該請求狀態。 DMA啟用DACK(DMA acknowledge)訊號,告訴週邊裝置,它要開始轉移資料。 DMA會把區塊第一個位元組位址放在位址匯流排上,開始把記憶體的資料轉移到週邊裝置,並且啟動MEMR來讀取記憶體的位元組進入資料匯流排;然後,啟動IOW將資料寫入週邊裝置。最後DMA遞減計數器,增加位址指標,不斷地重複這個程序…,直到計數器歸零,整個任務結束。 DMA結束任務,關閉HRQ,通知CPU,歸還匯流排控制權,CPU再度重新掌控匯流排。
7.6 I/O通道和I/O處理器 • 由於,I/O設備日趨複雜(比如:3D影像卡) • 因此,CPU指揮所有I/O模組進行傳輸的過程,也愈來愈複雜。 • I/O通道把程式執行能力加入I/O模組中。 • 使得I/O控制器可以自行執行I/O傳輸作業,讓CPU不再涉及這些細節。 • I/O通道好處在於:改善速度、減輕CPU負擔。
7.7 外部介面: FireWire和 InfiniBand • 介面連接設備 • 並列介面 (一次多位元傳輸) • 串列介面(一次一位元傳輸) • 並列介面技術必須注意平行線路之間的串音干擾。 • 高速串列介面出現後,並列介面變得愈來愈少! • 比如:FireWire(火線串列匯流排) • 比如:InfiniBand(無限頻寬)
FireWire(火線串列匯流排) 火線又稱為IEEE 1394 是一種高效能的串列匯流排 高速 低成本 容易實現 常用於數位相機、 VCR、和 TV
火線組態 菊花鏈組態 單一埠最多可連結63個設備 實際上是64個設備,但須扣除介面該部設備 藉由橋接器連接1022個火線匯流排 自動組態 不需匯流排終端器 不一定菊花鏈組態,也可以改用樹狀結構
火線協定(三層通訊) 實體層(Physical layer) 定義傳輸媒介、媒介的電氣特性、和訊號特性 連結層(Link layer) 使用封包傳輸資料 傳輸層(Transaction layer) “請求-回應”協定
火線 – 實體層 資料傳輸率由25至400Mbps 兩種仲裁方式 樹狀結構基底 根節點如同仲裁器 先到先服務 同時數個請求出現時,如何決定優先權等級? 何者較近根節點者優先 公平仲裁 緊急仲裁
火線–連結層 非同步傳輸 把數量不等的資料和數個位元組,以封包方式傳送 隱含位址 認可回覆 等時傳輸 把數量不等的資料,在固定的時間間隔內,分成固定大小的封包傳送 簡化的定址方式 無認可回覆