现在研究一下编译器优化会对生成的指令产生什么影响,在此基础上介绍C语言的volatile限定符。首先看下面的C程序:

/* artificial device registers */
unsigned char recv;
unsigned char send;
/* memory buffer */
unsigned char buf[];
int main(void)
{
buf[] = recv;
buf[] = recv;
buf[] = recv;
send = ~buf[];
send = ~buf[];
send = ~buf[]; return ;
}

  我们用recv和send这两个全局变量来模拟设备寄存器。假设某平台采用内存映射I/O,串口发送寄存器和串口接收寄存器位于固定的内存地址,而recv和send这两个全局变量也有固定的内存地址。所以在这个例子中我们把它们假想成串口接收寄存器和串口发送寄存器。在main函数中,首先从串口接收三个字节存到buf中,然后把这三个字节取反,依次从串口发送出去。我们查看这段代码的反汇编结果:

  aaarticlea/png;base64,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" alt="" />

  movz指令把字节较短的值存到字节较长的存储单元中,存储单元的高位用0填充。该指令可以有b(byte)、w(word)、l(long)三种后缀,分别表示单字节、两字节和四字节。比如movzbl 0x804a019, %eax表示把地址0x804a019处的一个字节存到eax寄存器中,而eax寄存器是四字节的,高三字节用0填充,而下一条指令mov %al,0x804a01a中的al寄存器正是eax寄存器的低字节,把这个字节存到地址0x804a01a处的一个字节中。可以用不同的名字单独访问x86寄存器的低8位、次低8位、低16位或者完整的32位,以eax为例,al表示低8位,ah表示次低8位,ax表示低16位。如下图所示:

  aaarticlea/png;base64,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" alt="" />

  但如果指定优化选项-O编译,反汇编的结果就不一样了:

  aaarticlea/png;base64,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" alt="" />

  前三条语句从串口接收三个字节,而编译生成的指令显然不符合我们的意图(设备寄存器的内容是在变化的需要每次重新从对应的内存地址取值):只有第一条语句从内存地址0x804a019读一个字节到寄存器eax中,然后从寄存器al保存到buf[0],后两条语句就不再从内存地址0x804a019读取,而是直接把寄存器al的值保存到buf[1]、buf[2]。后三条语句把buf中的三个字节取反再发送到串口,编译生成的指令也不符合我们的意图:只有最后一条语句把eax的值取反写到内存地址0x804a018了,前两条形同虚设,根本不生成指令。

  为什么编译器优化的结果会错呢?因为编译器并不知道0x804a018和0x804a019是设备寄存器的地址,把它们当成普通的内存单元了。如果是普通的内存单元,只要程序不去改写它,它就不会变,可以先把内存单元里的值读到寄存器缓存起来,以后每次用到这个值就直接从寄存器读取,这样效率更高,我们知道读寄存器远比读内存要快。另一方面,如果对一个普通的内存单元连续做三次写操作,只有最后一次的值会保存到内存单元中,所以前两次写操作是多余的,可以优化掉。访问设备寄存器的代码这样优化就错了,因为设备寄存器往往具有以下特性:

  • 设备寄存器中的数据不需要改写就可以自己发生变化,每次读上来的值都可能不一样。
  • 连续多次向设备寄存器中写数据并不是在做无用功,而是有特殊意义的。

  用优化选项编译生成的指令明显效率更高,但使用不当会出错,为了避免编译器自作聪明,把不该优化的也优化了,程序员应该明确告诉编译器哪些内存单元的访问是不能优化的,在C语言中可以用 volatile 限定符修饰变量,就是告诉编译器,即使在编译时指定了优化选项,每次读这个变量仍然要老老实实从内存读取,每次写这个变量也仍然要老老实实写回内存,不能省略任何步骤。我们把代码的开头几行改成:

  

/* artificial device registers */
volatile unsigned char recv;
volatile unsigned char send;

  然后指定优化选项 -O 编译,查看反汇编的结果:

  aaarticlea/png;base64,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" alt="" />

  gcc 的编译优化选项有 -O0 、 -O 、 -O1 、 -O2 、 -O3 、 -Os 几种。 -O0 表示不优化,这是缺省的选项。 -O1 、 -O2 和 -O3 这几个选项一个比一个优化得更多,编译时间也更长。 -O 和 -O1 相同。 -Os 表示为缩小目标代码尺寸而优化。

  有了 volatile 限定符,是可以防止编译器优化对设备寄存器的访问,但是对于有Cache的平台,仅仅这样还不够,还是无法防止Cache优化对设备寄存器的访问。在访问普通的内存单元时,Cache对程序员是透明的,比如执行了 movzbl 0x804a019,%eax 这样一条指令,我们并不知道 eax 的值是真的从内存地址0x804a019读到的,还是从Cache中读到的,如果Cache已经缓存了这个地址的数据就从Cache读,如果Cache没有缓存就从内存读,这些步骤都是硬件自动做的,而不是用指令控制Cache去做的,程序员写的指令中只有寄存器、内存地址,而没有Cache,程序员甚至不需要知道Cache的存在。同样道理,如果执行了 mov %al,0x804a01a 这样一条指令,我们并不知道寄存器的值是真的写回内存了,还是只写到了Cache中,以后再由Cache写回内存,即使只写到了Cache中而暂时没有写回内存,下次读0x804a01a这个地址时仍然可以从Cache中读到上次写的数据。然而,在读写设备寄存器时Cache的存在就不容忽视了,如果串口发送和接收寄存器的内存地址被Cache缓存了会有什么问题呢?如下图所示。

  aaarticlea/png;base64,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" alt="" />

  如果串口发送寄存器的地址被Cahce缓存,CPU执行单元对串口发送寄存器做写操作都写到Cache中去了,串口发送寄存器并没有及时得到数据,也就不能及时发送,CPU执行单元先后发出的1、2、3三个字节都会写到Cache中的同一个单元,最后Cache中只保存了第3个字节,如果这时Cache把数据写回到串口发送寄存器,只能把第3个字节发送出去,前两个字节就丢失了。与此类似,如果串口接收寄存器的地址被Cache缓存,CPU执行单元在读第1个字节时,Cache会从串口接收寄存器读上来缓存,然而串口接收寄存器后面收到的2、3两个字节Cache并不知道,因为Cache把串口接收寄存器当作普通内存单元,并且相信内存单元中的数据是不会自己变的,以后每次读串口接收寄存器时,Cache都会把缓存的第1个字节提供给CPU执行单元。通常,有Cache的平台都有办法对某一段地址范围禁用Cache,一般是在页表中设置的,可以设定哪些页面允许Cache缓存,哪些页面不允许Cache缓存,MMU不仅要做地址转换和访问权限检查,也要和Cache协同工作。
  除了设备寄存器需要用 volatile 限定之外,当一个全局变量被同一进程中的多个控制流程访问时也要用 volatile 限定,比如信号处理函数和多线程。

04-17 10:27