一个RMW操作的例子

在操作系统中,有一种重要的进程间的同步机制称作信号量机制。信号量即当前可用资源的计数。信号量是一个用来实现同步的整型或记录型(record)变量,除了初始化外,对它只能执行等待和释放这两种原子操作。一次对信号量的等待操作是获得信号量的过程,读取当前信号量的值,如果发现有可利用资源,则将信号量减1,否则进入等待状态。一次对信号量的释放过程即将信号量加1。一个进程对信号的读取、计算新的信号量值、更新信号量的值,这三个步骤是不允许被其他进程打破的,如果被打破,则信号量的值将会发生错误,rmw操作的最大用途在于信号量操作。当然,用户也可以将总线精简为不支持rwm操作。
一次rmw操作对于总线来说,本质上是两次子操作,一次读,一次写,只不过这两次子操作必须由同一个主设备的完成,且读数据和写数据的地址相同。改是不发生在总线上的,它发生在主设备内部。一个rmw操作的例子如图19所示,其过程如下:
时钟上升沿0:
·主机将有效地址置于adr_o()和tga_o();
·主机将we_o复位,以表明进入读周期;
·主机输出sel_o()(bank select)表明其操作的数据地址;
·主机将cyc_o和tgc_o()置位,以表明周期的开始;
·主机将stb_o置位。
注意:主机可以在时钟上升沿1到来之前的任意时间将cyc_o和tgc_o()置位,而tagn_o信号是可选的。
时钟上升沿1(setup):
·从机解码输入,并对ack_i的置位做出响应;
·从机将有效数据置于dat_i()和tgd_i()上;
·主机监控ack_i信号,并准备锁存dat_i()和tgd_i()上的信号;
时钟上升沿1:
·主机锁存dat_i()和tgd_i()上的数据;
·主机将stb_o复位,以插入一个等待周期(-wsw-)。
时钟上升沿2(setup):
·从机将ack_i复位以响应stb_o信号;
·主机将we_o置位,以表明进入写周期。
注意:实际上主机可以在本过程之前插入任意多个周期。
时钟上升沿2:
·主机将写数据置于dat_o()和tgd_o()上;
·主机输出sel_o()(bank select)表明其操作的数据地址;
·主机置位stb_o信号。
时钟上升沿3(setup):
·从机解码输入,并响应ack_i的置位;
·从机准备锁存dat_o()和tgd_o()上的数据;
·主机监控ack_i信号,并准备结束数据段(phase)传输。
注意:实际上从机可以在本过程之前插入任意多个周期。
时钟上升沿3:
·从机将dat_o()和tgd_o()上的数据锁存;
·主机复位stb_o和cyc_o信号,以表明本周期的结束;
·从机将ack_i信号复位,以响应stb_o信号的复位。
图19 rwm周期

一个高集成度的掉电检测电路应用
dfrobot心电图电极片简介
3D变电站三维建模可视化数字孪生系统建设
在CES2017:量子点、OLED、激光三大阵营角逐激烈
压铸铝双金属复合散热器介绍
一个RMW操作的例子
Mentor Graphics推出新的Mentor EZ-VIP PCI Express验证IP
IDC预测:全球区块链支出2022年将达117亿美元
相位和占空比可控的方波发生器
APS排程助动力电池企业充分利用产能
Google对Google Camera进行了改进
ParkMobile携手REACH NOW让私家车过渡至公共交通
专业的微信小说源码分销平台开发分销系统分销小程序定制开发公司
两大因素指出工业机器人目前的重而道远
谈起对讲机为什么大家都在谈论全双工对讲
M.2 eMMC将替代SSD在笔记本电脑中的应用
IoT技术如何通过混合云与边缘协同帮助大型制造企业处理庞杂数据
基于ARM Cortex-A5微处理器——SAMA5D4系列
介绍HBM3标准的一些关键功能
ModWright HA300 电子管合并放大器