免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 18522 | 回复: 70
打印 上一主题 下一主题

什么是软件CPU [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-23 18:12 |只看该作者 |倒序浏览
软件CPU区别于硬件CPU,指用软件实现的CPU.
常见的如各种编程语言的仿真器,CPU的模拟器,或虚拟机。
像硬件CPU一样,它有自己的指令集,或专用指令或与对应硬件指令集相同。
软件CPU和硬件CPU一样,属于机器翻译的一种,当然,编译器也是机器翻译的一种。只不过翻译的结果不一样。
前者翻译为“动作”,后者翻译为另一种形式。
软件CPU应用很广,除前面介绍的,如各种EDA软件如verilog,电路仿真,PCB板级仿真 等等都会用到。
几乎目前能想到的各种仿真验证类软件都会用到?
软件CPU之所以应用很广,同硬件CPU一样,在于其可编程性,灵活性,适应性强。
软件CPU是一种通用执行机器。
正如前面介绍的,软件CPU属于机器翻译的一种,因此其实现离不开编译技术。

论坛徽章:
0
2 [报告]
发表于 2008-12-23 18:25 |只看该作者
>> 正如前面介绍的,软件CPU属于机器翻译的一种,因此其实现离不开编译技术。

两码事

论坛徽章:
0
3 [报告]
发表于 2008-12-23 18:37 |只看该作者
应该是虚拟技术吧 比较早是在ibm的vms700(不是很确定)上就实现了 操作系统概念上提到过

论坛徽章:
0
4 [报告]
发表于 2008-12-23 20:50 |只看该作者
软件cpu,不就是虚拟机吗。
都只指令级仿真。

论坛徽章:
0
5 [报告]
发表于 2008-12-23 20:50 |只看该作者

回复 #1 fineamy 的帖子

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

论坛徽章:
0
6 [报告]
发表于 2008-12-23 21:42 |只看该作者
哦,gnu as有个模拟器,gdb也有个模拟器。还有专门的模拟器。

论坛徽章:
0
7 [报告]
发表于 2008-12-23 23:54 |只看该作者

软件CPU

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

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

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



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

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
9 [报告]
发表于 2008-12-24 09:06 |只看该作者
对字节码的解释和对高级语言的编译(或者对高级语言的解释)两者还是有很大区别的。
当然,比如编译verilog、vhdl等HDL,这些属于高级语言,那是编译原理里面研究较多的编译,并且和C很容易类比,C语言看了代码比较容易想到编译出来的汇编长什么样(不优化),verilog、vhdl也相对比较容易想到编译出来的电路长啥样

论坛徽章:
0
10 [报告]
发表于 2008-12-24 14:25 |只看该作者

回复 #8 mik 的帖子

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

[ 本帖最后由 fineamy 于 2008-12-24 14:29 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP