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

一個(gè)最簡(jiǎn)單的事件驅(qū)動(dòng)的IO libevent編程例子

一個(gè)簡(jiǎn)單例子講清楚指針的應(yīng)用

評(píng)論