您的位置:首页 > 其它

cpu指令和应用程序间关系

2014-04-18 17:43 162 查看
这么说吧,CPU的控制权在操作系统内核和应用程序之间转来转去,当内核获得控制权时,CPU执行操作系统的指令,操作系统做操作系统应该做的事,也就是进程管理,内存管理,设备管理,文件管理等这一类的事情,MMX,SSE,AES/AVX这些新指令集大多是增强浮点运算,多媒体处理之类性能的,内核使用的意义不大,也尽可能不去使用这些特殊的指令集来完成,这样无需修改内核就可以在兼容的CPU上运行。

  当应用程序获得控制权时,CPU执行应用程序的指令,而应用程序可以使用任何CPU支持的指令集。一般来说,为了获得更好的性能,应用程序会尽可能使用新的指令集以更好的完成任务。

  只要在某个操作系统上运行的应用程序,就不存在什么不经过操作系统这一层这一说,必须经过操作系统,至少上面说的CPU控制权的转移就是由操作系统完成的。但是操作系统不关心应用程序使用了什么指令集,它只需要将CPU的控制权转移到应用程序就可以了。操作系统也不关心应用程序使用高级语言还是汇编语言来编写。因为最终都会变成机器语言。

  一般来说,当新的指令出来时,编译器厂商会跟进推出支持新指令集的汇编器,然后会推出支持这些新指令集的高级语言编译器,使用这些新的汇编器,编译器即可生成使用新指令集的应用程序。如果高级语言编译器暂时不支持,那么就用支持的汇编器,用汇编语言写。如果连汇编器都还没推出,那么只好用机器语言了。

  比如下面这样的新闻:
  Intel日前对Intel编译器软件进行了更新,他们面向Windows/Linux/Mac OS X操作系统发布了最新版本的Intel Compiler Professional Editions 11.1。新版本的编译器将支持Intel高级向量指令集扩展(AVX),AVX是Intel Nehalem架构的继任者Sandy Bridge中所新增的指令集扩展.这次更新还改善了编译器与微软Visual
Studio/Eclipse/Xcode等开发工具的兼容性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cpu