我开始在计算机体系结构领域进行探索。有两个关于ISA的问题令我感到困惑。
据我所知,有各种各样的ISA,如ARM,MIPS,80x86等。我想知道CPU是否只能专门读取一种ISA。例如,处理器可以同时读取80x86和MIPS。
如果CPU是ISA独有的,我该如何检查我的PC处理器使用的是哪个ISA?我可以手动找到它吗?
谢谢
答案 0 :(得分:2)
我所知道的所有CPU / MCU只支持单指令集。
有能力将微码加载到某些较新的架构中,这些架构可能允许将指令集行为更改为某些点,因为机器人强烈怀疑它是否可以用它来更改指令集。指令集和内部 CPU / MCU 电路非常依赖。可以使用可变指令集制作通用 CPU (例如使用 FPGA )但与直接 DIE 编码相比会非常慢CPU 即可。使用类似的Die技术,时钟速度可能只有几MHz。
像i80x86这样的架构支持可以切换到不同类型的操作(16/32/64位,真实,受保护)的模式,但很难说它是不同的指令集或只是同一个东西的子集......(透视问题)
检测指令集。
这很疯狂。是的,可以通过程序检测您拥有哪种类型的指令集,但所有 CPU / MCU 具有不同的引脚排列,接口,架构并且不可互换(即使在同一架构类中也是如此)所以你检测指令集是没有意义的,因为你已经知道你正在为......做接线的架构。
无论如何,检测将如下工作:
答案 1 :(得分:1)
是的,每种类型的CPU都是指令集所特有的。 ARM的指令集不适用于x86,SPARC等。巧合可能会有一些重叠,但程序在架构之间不兼容。
根据您的操作系统,您可以运行命令来查看此信息。对于unix / Linux,uname -a
将显示您正在运行的体系结构以及dmidecode
。对于Windows操作系统,右键单击My Computer
并选择Properties
应该会显示您的体系结构。
例如(Windows 7):
对于Linux(我知道,这是一个超级发行版!):
$ 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位Intel或AMD。为了确定,您可以像前面提到的那样运行dmidecode
:
~# 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
答案 2 :(得分:0)
如果实现了支持,它实际上可以读取任何指令集。现在大多数CPU支持两个/三个指令集,由于32位/ 64位寻址而略有不同。
x86支持16位,32位和64位指令集,ARM支持32位,64位,适用于Thumb和Thumb-2等。例如,对于MIPS,类似。
原始Transmeta我相信它很灵活,并且应该将任何指令集转换为内部集并在本地运行它。然而它失败了,现在没有任何类似的东西。
无论如何,一旦你运行应用程序,它就会绑定到其标题中的特定指令集,因此它不能在运行时更改它。好吧,ARM是个例外 - 它可以在完整版和Thumb版之间切换,但它们只是不同的编码...
对于第二部分 - 在OS GUI中或者通常可以阅读它 - 在Linux中通过在环境变量for i, job in enumerate(Jobs):
res = process_job.apply_async(args=[job], queue='job_queue')
中的Windows上阅读$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = NULL;
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;
来阅读。