簡介
隨著
處理器及存儲速度物理極限的漸漸接近,用多處理器來增強計算機的能力變得越來越有吸引力。目前,緊密禍合的共享存儲多處理器和鬆散禍合的分散式存儲多處理器較為流行。一個緊密藕合的多處理器系統包括多個CPU及一個全局的物理存儲,是單個CPU系統的一個自然擴展,比較容易編程。但是,這種類型的多處理器存在一個很嚴重的瓶頸:通過一條公共匯流排訪問主存,限制了系統規模,而且過多地增加了匯流排的負擔(當然,為解決上述問題,也有通過多條公共匯流排訪問主存的)。鬆散禍合分散式存儲多處理器卻沒有這個問題。通過一個高速的網際網路連線起來的一些獨立計算機組成了這種系統。如果設計人員精心設計網路的拓撲結構,這個系統往往可以比一個緊密禍合系統包含更多數量級的處理器。但是,這種系統井發執行的所有通信都必須在網路上進行,編程模式局限於信息傳輸方式,增加了編寫程式的難度。
分散式共享存儲(DSM)系統兼有緊密禍合分散式系統容易編程和鬆散藕合分散式系統容易打充規模的優點。所以,從20世紀8()年代初開如,DSM就一直是一個很活躍的研究領域。
特點
編程的簡易性
分散式共享存儲系統是在鬆散耦合的分散式環境下,實現的一個虛擬的MIMD-SM模型,在這個模型中的並行計算、進程間通信是通過動態讀取共享存儲器中的共享數據進行的,進程間的通信和共享數據對程式設計師透明,減輕了程式設計者的負擔.
可移植性
就目前的軟體技術發展水平,我們在設計、實現及使用分散式系統上沒有太多的經驗,專門為分散式系統編寫的軟體更是非常的少.所以,分散式系統的一個研究目標就是能夠把現有的適合於單機的作業系統移植到分散式系統中.使用“共享存儲”是解決“分散式系統軟體危機”的一種重要方法.由於在分散式系統中,程式可見的地址空間是給鬆散耦合處理器提供的一個虛擬地址空間,所以面向單一空間的現有的軟體可以很方便地移植到使用共享存儲方式的分散式系統中.相反,如果使用純粹的鬆散耦合系統,則所有的軟體都必須經過艱難的過程才能夠移植過來.
廉價性
分散式系統必然需要大量的存儲.和緊密耦合系統相比,分散式存儲的好處是可通過若干相對容量較小的存儲的疊加來代替單個海量存儲器,從而降低了成本.可以說,這一特點也是繼承了分散式系統的廉價性的特點.
大規模模型
分散式系統存在的硬體瓶頸在於通信網路的容量.分散式共享存儲的使用,一方面降低了使用單個匯流排進行數據傳輸所帶來的過載問題;另一方面也會依賴於現有網路的頻寬,網路的可能飽和約束著分散式共享存儲系統的發展.但是,隨著硬體技術的發展,通信網路的容量和速度瓶頸正在逐步消除,這一工業變革必然對分散式共享存儲系統產生影響.由於採用了分散式共享存儲的方式,則處理機的數量可以更容易地擴充,從而可以在更大規模的環境下建立分散式系統.
分散式存儲系統對進程的影響在多處理機系統中,兩個或者多個進程之間對象的共享非常重要,許多情況下都是一個問題由一組在不同CPU上並行運行的協同進程共同解決的.這些進程可能需要不斷訪問共同的快取、表或者其他數據結構.作業系統允許這種共享的發生十分必要.共享的另一個重要用途是進程的創建.傳統創立進程的方法是複製所有必要的頁面,然後將這些拷貝映射到子進程的地址空間.如果沒有採用共享存儲,則必須在每一個處理機的存儲器上拷貝一個父進程的拷貝,這樣導致對整個系統的存儲器浪費過大.
設計方法
分散式共享存儲系統的研究目標及問題類似於對多處理器高速快取、網路檔案系統、多處理器存儲訪問及分散式資料庫管理系統的研究.由於種種相似性,這些領域中的許多算法和經驗可以套用於分散式共享存儲系統.一般而言,分散式共享存儲系統由下述3種方法實現.
硬體實現,將傳統的緩衝技術擴展為較大規模的結構.
作業系統及庫實現.通過虛擬存儲管理機制實現共享和一致性.
編譯器實現.通過編譯器,將共享訪問自動轉換成並發和耦合單元.
這3種方法都以工作站或者微機的公共網路、專用訊息傳輸機、定製硬體甚至異構系統的方式設計.具體來說,設計分散式共享存儲系統需要考慮以下幾方面問題.
共享地址空間的結構和粒度
共享地址空間結構是指存儲器中共享數據的布局方法,它依賴於應用程式類型,地址空間可以是平面的、分段的或物理的.粒度是指共享單元的大小,可以是位元組、字、頁或者複雜的數據結構.
一致性協定
一致性問題的關鍵是保證讀操作時總是返回最近修改的值.如果共享數據沒有拷貝,那么存儲一致性就沒有問題,但是這樣就會產生系統瓶頸並丟失並行性這一優點.為了增加並行性,系統通常允許複製共享數據.複製導致了一致性協定的複雜性.控制複製有兩種協定:寫無效和寫更新協定.在寫無效方式下,一塊數據可能有多個唯讀副本,但只有一個可寫副本,每進行一次寫操作,除了一個有效以外,其他副本都無效;在寫更新方式下,每次寫都要對所有的副本進行更新.
同步
在並發訪問的情況下,為維護共享數據的一致性,除一致性協定以外,還需要對訪問共享數據的活動進行同步,例如通過信號量,事件計數或者加鎖等方式來實現同步.
替換策略
在允許數據遷移的系統中,當共享數據占滿了快取器的有效空間時,必須決定將那些數據移出,同時,還要考慮移向何方.
異構性
如何實現對兩個具有不同體系結構的存儲器享是很難解決的問題,兩個存儲器對基本數據類型有不同的表達方式(比如採用數制編碼方式不同)等,此類問題仍在探索中.
關鍵性問題
目前,分散式共享存儲系統研究中涉及的幾個關鍵性問題包括:
一致性算法.分散式共享存儲研究的關鍵就是對存儲訪問的一致性,而一致性算法一直是研究人員關注的焦點.
執行緒分配算法.已有的分散式共享存儲系統大多採用單執行緒的機制,而對多執行緒分散式共享存儲系統中的通信開銷和執行緒分配問題還處在探索階段.
可靠性.分散式系統因為通過網路傳輸數據,那么可靠性就是一個很突出的問題.
性能評測.評測分散式系統的性能對於進一步改進工作、驗證已有的成果有著很大的益處.
數據傳輸速度.加快分散式共享存儲系統的數據傳輸,對於加快運算速度有著至關重要的作用.
檔案系統的集成.只有在作業系統中把分散式共享存儲技術、存儲器管理和檔案系統結合起來,才能充分發揮分布共享存儲技術所具有的能力.