x86指令集都有哪些劣势
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了x86指令集都有哪些劣势相关的知识,希望对你有一定的参考价值。
x86通用寄存器少,64位架构下只有16个。32位的只有8个。而且很多指令隐形的依赖或修改通用寄存器。8个使用有严格的限制,8个可以自由使用。这造成为了遵守这些寄存器使用规则,经常需要将寄存器之间的数据互相移动。
因为有限的通用寄存器数量以及其中还有限制使用规则,为指令分配使用的寄存器时,经常会出现一些指令本没有依赖关系,现在共用同一个寄存器而出现了依赖关系。
这对于处理器流水线技术来说非常不友好,因为指令之间存在依赖关系时,后一个指令需要等待前一个指令执行完毕才能执行。这不能发挥流水线的优点了。而为了实现高性能,则需要添加寄存器重命名技术,将指令之间虚拟的依赖关系取出。
x86指令可变长度,而且是其中最糟糕的一种,确定一条指令有多少字节,需要从指令第一个字节逐个检测。现有x86指令结构最长15个字节,内部结构最多可划分成七八个部分。前一个部分确定了,才能确定下一个部分,直至确定指令末尾。
这种复杂结构,对处理器指令解码模块非常不好,需要很多数量晶体管实现解码功能。
而MIPS结构指令长度固定的,32位,4个字节。也就是说解码无须了解指令内部特征,就可以快速知道下一个指令的位置。指令地址+4就可以了。而且MIPS指令内部结构也非常简单。同样的解码模块使用很少 的晶体管就可以是实现解码了。
8086实现为了提供20位地址空间,1兆字节的能力,设计了一个分段机制,因为16位通用寄存器只有16位地址访问能力。所以专门设计了一组段寄存器。每次访问内存时,都用段寄存器内的段基地址加上通用寄存器内的地址,得到一个20位地址。
到了32位时代,其实这种分段机制可以彻底去掉,因为32位通用寄存器就有32位地址访问能力,4G字节内存。但是x86依然保留了这种分段机制,而且结果比原来的段寄存器还更复杂了。可是实际的操作系统不管WINDOWS还是LINUX都没有使用这种分段机制。这些操作系统通过对段寄存器以及相关结构通过合理设置,使得段基地址值为0。在软件层面相当于没有使用分段机制。但是处理器却必须实现这个分段机制。每次指令访问内存时,都需要段基地址加上通用寄存器内的地址,哪怕段基地址为0。实际上处理器上实现分段机制的模块完全多余,但是x86必须实现该功能。
x86有很多种寻址机制。有几种寻址方式极少使用,结构也非常复杂,对于处理器设计有非常不友好。为了实现寻址机制,也需要大量的处理器设计。
x86中有很多为了减少程序中指令数量而设计的指令,就是将多条指令的功能合并到一条指令上。虽然在效果上它们是相等的。但是这种超级指令,也对处理器设计增加了负担。
x86到目前为止指令总数非常大,处理器内对指令的解码和执行指令的功能,相关的晶体管数量需要很大数量。其实x86中很多指令都可以拆解成多个功能更基本的指令。
虽然现在的x86内部采取了RISC精简指令的设计思想,内部使用少量基本的指令表示。x86指令被解码器处理后可能拆解成多个x86内部RISC指令,再做后续处理。但是这本身还是需要一定复杂的结构实现它的。
总之,指令结构复杂,增加了解码模块的负担。指令数量多,增加功能执行模块的负担。 参考技术A 喜见外弟又言别(李益) 参考技术B 通用集群器组 —— X86指令集只用8个通用寄存器。所以,CISC的CPU执行是大多数时间实在访问储存器中的数据,而不是寄存器中的。这就拖慢了整个系统的速度。而RISC系统旺旺具有非常多的通用寄存器,并采用了重叠寄存器窗口和寄存器堆等技术使寄存器资源得到充分的利用。
解码 —— 这是X86 CPU才有的东西。其作用是吧长度不定的X86指令转换为长度固定的类似RISC的指令,并交给RISC内核。解码分为硬件解码和微解码,对于简单的X86指令只要硬件解码即可,速度较快,而遇到复杂的X86指令则需要进行微解码,并把它分成若干条简单指令,速度较慢且很复杂。
寻址范围小 —— 约束了用户需要
计算机各部分的利用率不高,执行速度慢。
打字不易求采纳
unity3d都有哪些优势和劣势
1、智能界面设计,可视化编程界面完成各种开发工作,高效脚本编辑,实现高效率开发2、面向组件开发,不同的游戏项目,整个逻辑需要用C#重新写,但是资源都是可以沿用原来项目的。
3、跨平台性,只需一键即可完成作品的多平台开发和部署,支持PC、移动、主机三大不同的平台
4、入门简单,开发语言C#相对于C/C++更简单,而且unity的使用已相对成熟,学习视频较多
5、支持ARVR,U3D是实现ARVR最主流的开发引擎
对于零基础学习游戏开发的话,建议还是考虑学习unity引擎,入门更容易,应用的也更加广泛。优就业课程内容围绕unity引擎展开,涉及游戏开发、游戏策划、ARVR多种就业岗位所需技能,零基础学习或者职业晋升都可考虑。 参考技术A
Unity的优势:
轻量级,安装、调试和打包方便;
配置VR项目十分简单;
学习成本低,文档完善;
开发成本低;
UI系统;
在PS4上调试方便,有批处理文件可以一键运行;
Asset Store;
提供了一些VR下的Demo作为参考
Unity的劣势:
本回答被提问者采纳 参考技术B 优势:内建工具不够完善;
渲染差,光照系统糟糕,阴影bake有bug,只能勉强达到2A游戏入门水平;
对于控制器支持较差,一些如手柄震动、VR控制器空间定位的功能引擎未集成,需要第三方插件或额外代码;
没有材质编辑器,需要第三方插件;
Prefab不支持继承;
没有内建的Level Stream支持
易于上手但功能强大
对新手很友好,有很多教学
劣势:
渲染,光照系统远不如虚幻
以上是关于x86指令集都有哪些劣势的主要内容,如果未能解决你的问题,请参考以下文章