- 论坛徽章:
- 0
|
把时间的范围拉大,可能就稍微好理解一点了,不知道如下理解有没有问题???
1.假设cpu在1秒时间内能发起100次写内存操作,而从cpu发出写内存操作到数据真正
存储到内存中需要1秒的话,从cpu发出读内存操作到数据真正从内存读到cpu自己的
寄存器中也需要1秒的话,那么如下的指令序列:
mov eax, mem // 读内存
mov mem, eax // 写内存
就需要执行2秒钟,且写汇编(或机器语言)的人并不需要关心内存是否读/写成功的
问题(读写一定由硬件执行成功了)。但执行第一条指令之后,cpu休息了999倍的时间,
才自动在第2秒开始执行写内存操作(也就是说在硬件电气上cpu和内存之间遵守了cjaizss
兄的所说的“协议”)
2.对于8139网卡的驱动来说,执行完
RTL_W8 (ChipCmd, CmdReset);
这一句后,其后再执行的指令会自动等事实上网卡的控制寄存器中已经写入了我们
所希望写入的值后才去真正开始执行(类比于第1点)(无论RTL_W8还是RTL_R8
最终不是都要翻译成汇编的形式?)
也就是说
RTL_W8和RTL_R8之间不需要udelay(10) ??? 因为硬件已经保证了这个语义???
那么这里执行的udelay是什么意思呢?还是有点模棱两可啊
[ 本帖最后由 redac 于 2010-1-14 16:59 编辑 ] |
|