首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sse2矢量化与虚拟机

sse2矢量化与虚拟机
EN

Stack Overflow用户
提问于 2017-01-18 22:48:19
回答 2查看 560关注 0票数 5

我正在考虑用sse2内部函数向量化一些()调用,然后测量性能增益。但最终二进制文件将在我无法访问的虚拟机上运行。

我真的不知道VM是如何工作的。二进制程序是否完全在软件模拟的虚拟cpu上执行?

如果不是,假设VM运行在带有SSE2的cpu上,那么VM在从我的二进制文件执行SSE2指令时能使用他的cpu SSE2指令吗?

我的矢量化对VM有好处吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-18 22:56:16

我真的不知道VM是如何工作的。二进制程序是否完全在软件模拟的虚拟cpu上执行?

为了严肃的目的,不,因为太慢了。(例如,博克斯;它可以用于内核调试以及其他方面)

二进制文件将尽可能多地“正常”执行。这通常意味着任何不试图与操作系统交互的代码都将直接执行。例如,系统调用可能需要VM实现的参与。

如果不是,假设VM运行在带有SSE2的cpu上,那么VM在从我的二进制文件执行SSE2指令时能使用他的cpu SSE2指令吗?

是。

我的矢量化对VM有好处吗?

是。

票数 4
EN

Stack Overflow用户

发布于 2017-01-18 23:04:41

取决于VM技术和CPU能力。首先,x86 VM(如32位计算机上的VMWare )使用重新编译。他们查看VM的二进制代码,以寻找有害的指令(比如访问原始内存或特殊寄存器),用超级调用替换它们。

由于SSE2指令并不有害,所以它们只会保持原样,并且在VM中不会增加性能损失。此外,现代x86 CPU使用“硬件虚拟化”来避免重新编译。有害的指令被CPU捕获并产生中断,但是SSE2指令不应该触发它。

当然,也有像QEMU (不是QEMU)或Bochs这样的全处理器仿真器,但情况不同。例如,Bochs仿真CPU比主机CPU慢1000倍.

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41730860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档