首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CPU是否只兼容一种指令集体系结构?

CPU是否只兼容一种指令集体系结构?
EN

Stack Overflow用户
提问于 2016-02-01 07:29:57
回答 3查看 2K关注 0票数 3

我开始探索计算机架构领域。关于ISA有两个问题让我困惑。

  1. 据我所知,有不同种类的ISA,如ARM、MIPS、80x86等,我不知道CPU是否只能专门读取一种ISA。例如,处理器可以同时读取80x86和MIPS。
  2. 如果CPU是ISA特有的,我如何检查我的PC处理器正在使用的ISA?我能手动找出来吗?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-01 07:47:16

  1. 所有的CPU/MCU我知道只支持单指令集. 有能力将微代码加载到一些较新的体系结构中,这些体系结构可能允许将指令集行为更改到某个点,bot强烈怀疑它是否可以使用它更改指令集。指令集和内部CPU/单片机电路具有很强的依赖性。使用可变指令集来实现通用CPU是可能的(例如使用FPGA),但与直接DIE编码的CPU相比将非常慢。如果采用类似的模具技术,时钟速度可能只有很少的MHz。 像i80x86这样的体系结构支持可以切换到不同类型的操作的模式(16/32/64位,真实的,受保护的),但是很难说它是不同的指令集或同一事物的子集.(透视问题)
  2. 指令集的检测. 这太疯狂了。是的,可以通过程序检测您拥有哪种类型的指令集,但是所有CPU/MCU的都有不同的插脚、接口、体系结构,并且是不可互换的(即使是在同一个体系结构类中),所以您检测指令集是没有意义的,因为您已经知道您正在为其布线的架构。 不管怎么说,检测结果会是这样的:
代码语言:javascript
复制
- have set of test programs of each supported instruction set/architecture that will set specific memory or IO to predefined state if working properly
- have watch dog cycling between all the detections and stop on first valid result.

票数 3
EN

Stack Overflow用户

发布于 2016-02-01 07:39:45

  1. 是的,每种类型的CPU对于指令集来说都是独一无二的。ARM的指令集不适用于x86、SPARC等,可能会有一些重叠,但程序在体系结构之间并不兼容。
  2. 根据操作系统的不同,您可以运行一些命令来查看这些信息。对于unix/Linux,uname -a将向您展示您正在运行的架构以及dmidecode。对于Windows,右键单击My Computer并选择Properties将显示您的体系结构。

例如(Windows 7):

对于Linux (我知道,这是一个超级老版本!):

代码语言:javascript
复制
$ uname -a
Linux hostname 2.6.35-22-generic #33-Ubuntu SMP Sun Sep 19 20:32:27 UTC 2010 x86_64 GNU/Linux

(在本例中,架构是x86_64),它是64位英特尔或AMD。要确定地说,您可以像我前面提到的那样运行dmidecode

代码语言:javascript
复制
~# dmidecode |grep -i proc
Processor Information
        Type: Central Processor
        Version: AMD Opteron(tm) Processor 154
Processor Information
        Type: Central Processor
        Version: AMD Opteron(tm) Processor 154
票数 1
EN

Stack Overflow用户

发布于 2016-02-01 07:40:46

如果实现了支持,它实际上可以读取任何指令集。目前大多数CPU支持两/三指令集,但由于32位/64位寻址而略有不同。

x86支持16位,32位和64位指令集,ARM支持32位,64位,拇指和拇指-2,等等。

原版Transmeta,我相信它是灵活的,并被认为是将任何指令集转换为内部集,并在本地运行它。然而,它失败了,现在没有类似的东西了。

无论如何,一旦您运行了应用程序,它就会绑定到其头中的特定指令集,因此在运行时不能更改它。嗯,ARM是个例外-它可以在完全版本和拇指版本之间切换,但是它们只是对相同的.

对于第二部分--无论是在您的OS中还是通常可以阅读它--在Linux中通过读取/proc/cpuinfo,在环境变量PROCESSOR_ARCHITECTURE上读取。

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

https://stackoverflow.com/questions/35125055

复制
相关文章

相似问题

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