在操作系統(tǒng)中,有一種重要的進程間的同步機制稱作信號量機制。信號量即當(dāng)前可用資源的計數(shù)。信號量是一個用來實現(xiàn)同步的整型或記錄型(Record)變量,除了初始化外,對它只能執(zhí)行等待和釋放這兩種原子操作。一次對信號量的等待操作是獲得信號量的過程,讀取當(dāng)前信號量的值,如果發(fā)現(xiàn)有可利用資源,則將信號量減1,否則進入等待狀態(tài)。一次對信號量的釋放過程即將信號量加1。一個進程對信號的讀取、計算新的信號量值、更新信號量的值,這三個步驟是不允許被其他進程打破的,如果被打破,則信號量的值將會發(fā)生錯誤,RMW操作的最大用途在于信號量操作。當(dāng)然,用戶也可以將總線精簡為不支持RWM操作。
一次RMW操作對于總線來說,本質(zhì)上是兩次子操作,一次讀,一次寫,只不過這兩次子操作必須由同一個主設(shè)備的完成,且讀數(shù)據(jù)和寫數(shù)據(jù)的地址相同。"改"是不發(fā)生在總線上的,它發(fā)生在主設(shè)備內(nèi)部。一個RMW操作的例子如圖19所示,其過程如下:
時鐘上升沿0:
·主機將有效地址置于ADR_O()和TGA_O();
·主機將WE_O復(fù)位,以表明進入讀周期;
·主機輸出SEL_O()(bank select)表明其操作的數(shù)據(jù)地址;
·主機將CYC_O和TGC_O()置位,以表明周期的開始;
·主機將STB_O置位。
注意:主機可以在時鐘上升沿1到來之前的任意時間將CYC_O和TGC_O()置位,而TAGN_O信號是可選的。
時鐘上升沿1(SETUP):
·從機解碼輸入,并對ACK_I的置位做出響應(yīng);
·從機將有效數(shù)據(jù)置于DAT_I()和TGD_I()上;
·主機監(jiān)控ACK_I信號,并準(zhǔn)備鎖存DAT_I()和TGD_I()上的信號;
時鐘上升沿1:
·主機鎖存DAT_I()和TGD_I()上的數(shù)據(jù);
·主機將STB_O復(fù)位,以插入一個等待周期(-WSW-)。
時鐘上升沿2(SETUP):
·從機將ACK_I復(fù)位以響應(yīng)STB_O信號;
·主機將WE_O置位,以表明進入寫周期。
注意:實際上主機可以在本過程之前插入任意多個周期。
時鐘上升沿2:
·主機將寫數(shù)據(jù)置于DAT_O()和TGD_O()上;
·主機輸出SEL_O()(bank select)表明其操作的數(shù)據(jù)地址;
·主機置位STB_O信號。
時鐘上升沿3(SETUP):
·從機解碼輸入,并響應(yīng)ACK_I的置位;
·從機準(zhǔn)備鎖存DAT_O()和TGD_O()上的數(shù)據(jù);
·主機監(jiān)控ACK_I信號,并準(zhǔn)備結(jié)束數(shù)據(jù)段(phase)傳輸。
注意:實際上從機可以在本過程之前插入任意多個周期。
時鐘上升沿3:
·從機將DAT_O()和TGD_O()上的數(shù)據(jù)鎖存;
·主機復(fù)位STB_O和CYC_O信號,以表明本周期的結(jié)束;
·從機將ACK_I信號復(fù)位,以響應(yīng)STB_O信號的復(fù)位。
圖19 RWM周期
-
進程
+關(guān)注
關(guān)注
0文章
202瀏覽量
13948 -
信號量
+關(guān)注
關(guān)注
0文章
53瀏覽量
8315
原文標(biāo)題:【博文連載】Wishbone總線周期之RMW操作
文章出處:【微信號:ChinaAET,微信公眾號:電子技術(shù)應(yīng)用ChinaAET】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論