簡介
並行是指兩個或者多個事件在同一時刻發生。擴充並行I/O能力是指提高I/O設備並行輸入輸出速度,或是指是計算機系統能同時處理更多的I/O請求。擴充並行I/O能力一般可以從軟體和硬體角度考慮,軟體角度是指對I/O並行程式進行最佳化,硬體角度擴充I/O設備的
並行接口,提高數據傳輸速度,增加數據線的數目。
並行接口
並行接口,指採用並行傳輸方式來傳輸數據的接口標準。從最簡單的一個並行數據暫存器或專用接口積體電路晶片如8255、6820等,一直至較複雜的SCSI或IDE並行接口,種類有數十種。一個並行接口的接口特性可以從兩個方面加以描述:1. 以並行方式傳輸的數據通道的寬度,也稱接口傳輸的位數;2. 用於協調並行數據傳輸的額外接口控制線或稱互動信號的特性。 數據的寬度可以從1~128位或者更寬,最常用的是8位,可通過接口一次傳送8個數據位。在計算機領域最常用的並行接口是通常所說的LPT接口。
並行程式設計
能同時執行兩個以上運算或邏輯操作的程式設計方法。所謂並行性,嚴格地說,有兩種含義:一是同時性,亦即平行性,指兩個或多個事件在同一時刻發生;二是並發性,指兩個或多個事件在同一時間間隔內發生。程式並行性分為控制並行性和數據並行性。並行程式的基本計算單位是進程。並行程式有多種模型,包括: 共享存儲;分布存儲 (訊息傳遞);數據並行;面向對象。與並行程式設計相適應的硬體也有不同類型,如多處理機,向量機,大規模並行機和機群系統等,相應有不同的並行程式設計方法。具體解題效率還與並行算法有關。
單片機擴充並行I/O的兩種類型
並行擴展的兩種類型: (1)並行匯流排擴展採用三匯流排方式: 採用三匯流排方式: DB -AB -CB -(2)並行 口擴展並行I/O口擴展 數據與互動信息均由I/O口來完成 數據與互動信息均由口來完成。
1.MCS-51單片機的片外匯流排結構 . 單片機的片外匯流排結構 MCS-51系列單片機片外引腳可以構成如圖所 系列單片機片外引腳可以構成如圖所 示的三匯流排結構: 示的三匯流排結構: 地址匯流排、 地址匯流排(AB) 數據匯流排、數據匯流排(DB) 控制匯流排、控制匯流排(CB) 所有外部晶片都通過這三組匯流排進行擴展。 所有外部晶片都通過這三組匯流排進行擴展。
2. MCS-51單片機並行 口的擴展 單片機並行I/O口的擴展 單片機並行 問題的提出: 問題的提出:
當不擴展外部存儲器時, 當不擴展外部存儲器時,有P0 ~ P3四個連線埠可 四個連線埠可 以作為I/O口用 當擴展外部存儲器時,由於P0與 口用; 以作為 口用;當擴展外部存儲器時,由於 與 P2口被匯流排占用,只有 與 P3連線埠可以作為 口被匯流排占用, 連線埠可以作為I/O 口被匯流排占用 只有P1 連線埠可以作為 口用。無論哪種情況, 口用。無論哪種情況,這幾個連線埠都難以滿足大部 分套用系統的要求。因此並行I/O的擴展是一項常分套用系統的要求。因此並行的擴展是一項常 見的技術問題。
擴充並行I/O能力的目的
提高系統資源利用率。在未配置 OS 的計算機系統中,諸如 CPU、I/O 設備等各種資源,都會因它們經常處於空閒狀態而得不到充分利用;記憶體及外存中所存放的數據太少或者無序而浪費了大量的存儲空間。配置了 OS 之後,可使 CPU 和 I/O 設備由於能保持忙碌狀態而得到有效的利用,且可使記憶體和外存中存放的數據因有序而節省了存儲空間。
提高系統的吞吐量。作業系統還可以通過合理地組織計算機的工作流程,而進一步改善資源的利用率,加速程式的運行,縮短程式的運行周期,從而提高系統的吞吐量。
MPI 的並行 I/O 實現
MPI- IO 概述
MPI- IO作為 MPI- 2 規範的一部分, 提供了執行可移植的、有效的 I/O 操作的接口。可通過該接口在檔案和進程間傳送數據。MPI- IO 允許用戶說明整個非連續訪問形式, 並以一個
單一的 I/O 函式請求讀寫所有數據; 它也允許用戶集中地說明一組進程的 I/O 請求。 MPI- IO 的數據訪問程式可從三個方面進行分類。
讀寫定位。 MPI 提供了三種數據訪問的定位方式: 顯示偏移量, 獨立檔案指針, 已分享檔案指針。不同的定位方式可在同一程式中混用, 互不影響。使用顯示偏移量的數據訪問函式可由
參數直接指定檔案的讀寫位置, 來執行數據訪問,而不使用檔案指針,也不需要對其進行更新,該操作與 seek- read 和 seek-write 的原子操作等同。使用獨立檔案指針指定檔案讀寫位置的數據操作,MPI 支持每一個進程都有一個獨立的檔案指針,讀寫位置由當前檔案指針指定。讀寫完成後,檔案指針自動指下一項有效數據的位置。在這種檔案操作方式中, 需要每一個進程都定義各自在同一檔案中的視口,即視口是相對某一進程而言的,它是特定進程所能看到的檔案。某一進程的檔案視口可以是整個檔案,但多數情況下,檔案視口只是整個檔案的一部分或幾部分。檔案視口在整個檔案中對應的部分可以是不連續的, 但各個進程看到的其檔案視口中的數據卻是連續的。各個進程對各自檔案視口的操作, 相當於對各自獨立打開的檔案進行操作。定義視口的優點是: 定義一次, 可多次使用,從而增加了數據訪問的靈活性,也降低了數據訪問開銷。使用已分享檔案指針對讀寫位置定位的函式是由打開該檔案的一組進程所共享的通用檔案指針來說明數據的訪問位置的。已分享檔案指針又分為全局已分享檔案指針和分散式已分享檔案指針,二者的區別是,分散式已分享檔案指針可避免兩個進程存取同一數據塊,允許每個進程存取同一檔案不同位置的數據。
同步。 MPI- 2 支持阻塞和非阻塞的 I/O 程式。 阻塞 I/O請求直到 I/O 請求完成才返回; 非阻塞 I/O 請求啟動一個 I/O 操作後,並不等待 I/O 請求完成。假定具有合適的硬體支持, 該操作允許數據在用戶緩衝區中進行讀寫的同時,繼續進行計算,另外我們還需使用一些請求以等待 I/O 完成,以確保數據讀寫的完成和用戶重新使用緩衝區的安全性。
協調。 MPI- 2 支持非集中式 I/O 操作和集中式 I/O 操作。 另外,非阻塞的集中式操作支持一種限定形式, 稱為 split-collective I/O 操作。
並行 I/O 的實現
在 MPI的並行 I/O 實現中, 各進程同時打開檔案, 在各進程確定了自己所讀區域的起始行和終止行後, 對檔案數據不同區域進行同時讀寫, 而不是有由根進程單獨完成。不需要轉發。基於 MPI- 1 的並行 I/O 實現中, 讀真彩色圖像數據的核心代碼為:
for ( i=brow ; i<erow ; i++ ) for ( j=0 ; j<col ; j++ ) for ( k=0 ; k<3 ; k++ ) fwrite ( &buf1[i][j][k] , 1 , 1 , fp ) ;