PCI總線的存儲器讀寫總線事務
PCI總線使用單端并行數(shù)據(jù)線,采用地址譯碼方式進行數(shù)據(jù)傳遞,而采用ID譯碼方式進行配置信息的傳遞。其中地址譯碼方式使用地址信號,而ID譯碼方式使用PCI設備的ID號,包括Bus Number、Device Number、Function Number和Register Number。下文將以圖1?1中的處理器系統(tǒng)為例,簡要介紹PCI總線支持的總線事務及其傳送方式。
本文引用地址:http://www.2s4d.com/article/201612/330476.htm如表1?2所示,PCI總線支持多種總線事務。而本節(jié)重點介紹存儲器讀寫總線事務,I/O讀寫總線事務,并在第2.4節(jié)詳細介紹配置讀寫總線事務。值得注意的是,PCI設備只有在系統(tǒng)軟件初始化配置空間之后,才能夠被其他主設備訪問。
當PCI設備的配置空間被初始化之后,該設備在當前的PCI總線樹上將擁有一個獨立的PCI總線地址空間,即BAR((Base Address Register)寄存器所描述的空間,有關(guān)BAR寄存器的詳細說明見第2.3.2節(jié)。
處理器與PCI設備進行數(shù)據(jù)交換,或者PCI設備之間進行存儲器數(shù)據(jù)交換時,都將通過PCI總線地址完成。而PCI設備與主存儲器進行DMA操作時,使用的也是PCI總線域的地址,而不是存儲器域的地址,此時HOST主橋?qū)⑼瓿蒔CI總線地址到存儲器域地址的轉(zhuǎn)換,不同的HOST主橋進行地址轉(zhuǎn)換時使用的方法并不相同。
PCI總線的配置讀寫總線事務與HOST主橋與PCI橋相關(guān),因此讀者需要了解HOST主橋和PCI橋的詳細實現(xiàn)機制之后,才能深入理解這部分內(nèi)容。本篇將在第2.4節(jié)詳細介紹這些內(nèi)容。在下文中,我們假定所使用的PCI設備的配置空間已經(jīng)被系統(tǒng)軟件初始化。
PCI總線支持以下幾類存儲器讀寫總線事務。
(1)
(2)
(3)
1.3.1PCI總線事務的時序
PCI總線使用第1.2節(jié)所述的信號進行數(shù)據(jù)和配置信息的傳遞,一個PCI總線事務的基本訪問時序如圖1?3所示,與PCI總線事務相關(guān)的控制信號有FRAME#、IRDY#、TRDY#、DEVSEL#等其他信號。
當一個PCI主設備需要使用PCI總線時,需要首先發(fā)送REQ#信號,通過總線仲裁獲得總線使用權(quán),即GNT#信號有效后,使用以下步驟完成一個完整PCI總線事務,對目標設備進行存儲器或者I/O地址空間的讀寫訪問。
(1)
(2)
(3)
(4)
一個完整的PCI總線事務遠比上述過程復雜的多,因為PCI總線還支持許多傳送方式,如雙地址周期、fast back-to-back(快速背靠背)、插入等待狀態(tài)、重試和斷連、總線上的錯誤處理等一系列總線事務。本篇不一一介紹這些傳送方式。
1.3.2Posted和Non-Posted傳送方式
PCI總線規(guī)定了兩類數(shù)據(jù)傳送方式,分別是Posted和Non-Posted數(shù)據(jù)傳送方式。其中使用Posted數(shù)據(jù)傳送方式的總線事務也被稱為Posted總線事務;而使用Non-Posted數(shù)據(jù)傳送方式的總線事務也被稱為Non-Posted總線事務。
其中Posted總線事務指PCI主設備向PCI目標設備進行數(shù)據(jù)傳遞時,當數(shù)據(jù)到達PCI橋后,即由PCI橋接管來自上游總線的總線事務,并將其轉(zhuǎn)發(fā)到下游總線。采用這種數(shù)據(jù)傳送方式,在數(shù)據(jù)還沒有到達最終的目的地之前,PCI總線就可以結(jié)束當前總線事務,從而在一定程度上解決了PCI總線的擁塞。
而Non-Posted總線事務是指PCI主設備向PCI目標設備進行數(shù)據(jù)傳遞時,數(shù)據(jù)必須到達最終目的地之后,才能結(jié)束當前總線事務的一種數(shù)據(jù)傳遞方式。
顯然采用Posted傳送方式,當這個Posted總線事務通過某條PCI總線后,就可以釋放PCI總線的資源;而采用Non-Posted傳送方式,PCI總線在沒有結(jié)束當前總線事務時必須等待。這種等待將嚴重阻塞當前PCI總線上的其他數(shù)據(jù)傳送,因此PCI總線使用Delayed總線事務處理Non-Posted數(shù)據(jù)請求,使用Delayed總線事務可以相對緩解PCI總線的擁塞。Delayed總線事務的詳細介紹見第1.3.5節(jié)。
PCI總線規(guī)定只有存儲器寫請求(包括存儲器寫并無效請求)可以采用Posted總線事務,下文將Posted存儲器寫請求簡稱為PMW(Posted Memory Write),而存儲器讀請求、I/O讀寫請求、配置讀寫請求只能采用Non-Posted總線事務。
評論