怎么让intel芯片开启芯片虚拟化(芯片也是一个硬件实现的虚拟机)

芯片虚拟机相同点是什么?,下面我们就来说一说关于怎么让intel芯片开启芯片虚拟化?我们一起去了解并探讨一下这个问题吧!

怎么让intel芯片开启芯片虚拟化(芯片也是一个硬件实现的虚拟机)

怎么让intel芯片开启芯片虚拟化

芯片虚拟机相同点是什么?

它们都使用二进制的指令。

芯片和虚拟机的不同点是什么?

芯片是用硬件电路实现的,而虚拟机是用软件代码实现的。

物理上来说两者的区别很大,但从数学上来说,两者没有区别。

1,计算机是一个分层次信息处理系统,

计算机系统是分层次、分模块的,而且不同的层次和模块之间的耦合度很低

如果耦合度高了,那说明设计的不好,例如英特尔CISC指令集[捂脸]

指令的选择和寄存器的分配,在编译器里本来是互不干扰的两个步骤,但是intel的乘法因为使用默认寄存器(eax, edx),给软件带来了额外的复杂度。

所以,CISC指令集就不是一个好的设计,因为指令和寄存器之间的耦合度太大。

正常的设计应该是像ARM那样:指令只做指令的事,寄存器只做寄存器的事,井水不犯河水

实际上,ARM的各个指令之间也分的很详细:

1)LDR指令只负责把数据从内存加载到寄存器,

2)STR指令只负责把数据从寄存器保存到内存,

3)其他指令只负责在寄存器内运算,不访问内存,

所以,ARM是一个层次划分的非常好的指令集。

同样是写(机器码生成的)代码,ARM的就可以用for循环,而intel的就会有更多的if else[笑哭]

if else多了之后,代码就会非常难看。

所以说,最好的代码是这样的:

for (i = 0; i < N; i ) {

int ret = layers[i]->handler(ctx);

if (ret < 0)

return ret;

}

return 0;

总之,不管分了多少层,每一层要做什么,不同的层次之间是不能互相干扰的。

这是计算机系统的设计原则。

2,在分层设计之后,更换个别层次的实现方式,不该对整个系统产生影响。

所以,Linux既可以在CPU上跑,也可以在qemu虚拟机上跑。

甚至,虚拟机都可以装在windows上,然后Linux还是一样跑。

为什么可以这样?

就是因为计算机是个分层次的、耦合度很低的系统。

每一层的实现对于其他层来说是个“黑盒”,每一层的运行不依赖其他层的细节,只需要API

所以,指令集就是底层系统(芯片、虚拟机)与上层软件之间的API

至于底层系统使用虚拟机去实现,还是使用硬件电路去实现,都不会对上层软件造成干扰。

当然硬件电路的速度会更快,因为它是直接基于自然界的电磁理论的[呲牙]

但是,除了运行速度不同之外,虚拟机和硬件电路之间没有数学和哲学上的不同。

3,芯片的指令集可以做成虚拟机虚拟机的指令集也可以做成芯片

在信息处理的意义上,它们是等价的。

抽象代数认为,加法乘法都是,就是因为它们都是二元运算符,都能把集合上的两个数变成一个数。

不管是虚拟机还是芯片电路,都能把指令码跑起来。

所以从抽象的角度看,它们是相同的。

“道德经”上说,“谓之玄”。

所以C 能做的事,java也能做[捂脸]

java就是在虚拟机上跑的,C 编译之后是在CPU上跑的。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页