什么是软件CPU

发布于 2022-09-23 13:33:20 字数 390 浏览 20 评论 0

软件CPU区别于硬件CPU,指用软件实现的CPU.
常见的如各种编程语言的仿真器,CPU的模拟器,或虚拟机。
像硬件CPU一样,它有自己的指令集,或专用指令或与对应硬件指令集相同。
软件CPU和硬件CPU一样,属于机器翻译的一种,当然,编译器也是机器翻译的一种。只不过翻译的结果不一样。
前者翻译为“动作”,后者翻译为另一种形式。
软件CPU应用很广,除前面介绍的,如各种EDA软件如verilog,电路仿真,PCB板级仿真 等等都会用到。
几乎目前能想到的各种仿真验证类软件都会用到?
软件CPU之所以应用很广,同硬件CPU一样,在于其可编程性,灵活性,适应性强。
软件CPU是一种通用执行机器。
正如前面介绍的,软件CPU属于机器翻译的一种,因此其实现离不开编译技术。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

盗心人 2022-09-30 13:33:20

>> 正如前面介绍的,软件CPU属于机器翻译的一种,因此其实现离不开编译技术。

两码事

岁月如刀 2022-09-30 13:33:20

应该是虚拟技术吧 比较早是在ibm的vms700(不是很确定)上就实现了 操作系统概念上提到过

初与友歌 2022-09-30 13:33:20

软件cpu,不就是虚拟机吗。
都只指令级仿真。

瞳孔里扚悲伤 2022-09-30 13:33:20

具体说的是不是编译器的问题

你如我软肋 2022-09-30 13:33:20

哦,gnu as有个模拟器,gdb也有个模拟器。还有专门的模拟器。

桃气十足 2022-09-30 13:33:20

相对硬件
其指令集可以设计的很复杂。可以不具备可读性,因为它不是给人看的。
指令读取就是编译器前端部分,但会简单些。先用词法语法分析器把
指令代码映射为语法树,随后进行语义分析,最后执行。
对软件人员,估计写个这样的CPU并不是难事。

hehe,看来大家想到的都是虚拟机,编程语言的simulator.
实际上其应用不止如此。如电路设计中的各种仿真软件。

平定天下 2022-09-30 13:33:20

原帖由 fineamy 于 2008-12-23 23:54 发表
相对硬件
其指令集可以设计的很复杂。可以不具备可读性,因为它不是给人看的。
指令读取就是编译器前端部分,但会简单些。先用词法语法分析器把
指令代码映射为语法树,随后进行语义分析,最后执行。
对软件 ...


是你自己想错了吧。
cpu 的指令解码与语言的编译器编译根本两码事,不要混为一谈

吐个泡泡 2022-09-30 13:33:20

对字节码的解释和对高级语言的编译(或者对高级语言的解释)两者还是有很大区别的。
当然,比如编译verilog、vhdl等HDL,这些属于高级语言,那是编译原理里面研究较多的编译,并且和C很容易类比,C语言看了代码比较容易想到编译出来的汇编长什么样(不优化),verilog、vhdl也相对比较容易想到编译出来的电路长啥样

谁的年少不轻狂 2022-09-30 13:33:20

高级语言抽象度太高。
如果换成汇编语言就好理解了。比如软件CPU吃汇编语言相对于硬件CPU吃二进制序列。之间的区别很小。
要说不同,可能就是软件CPU的汇编指令为字符序列,读取靠状态机(即词语法分析器)识别。
硬件CPU输入为二进制序列,其指令识别是靠简单的状态机。同样是指令序列读取,我宁可把这部分归入具有成熟理论且强大的词语法分析范畴。认为硬件CPU的指令读取是一种简单的词语法分析。
把通常的程序执行理解成
----------------------------------------------------------|
|执行高级语言的CPU                                                       |
|    --------------------------   中间代码    ------------    |
|    |  高级语言源程序识别         |  --------> |   CPU执行  |   |  
|    --------------------- ----                   ------------   |
|                                                                               |
---------------------------------------------------------
按这个模型来理解CPU,就不会把编译器与CPU隔离来看,而是应该作为系统的整体。认为编译器是CPU的一部分。这样可以解释很多现象,思路会开阔很多。

[ 本帖最后由 fineamy 于 2008-12-24 14:29 编辑 ]

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文