①内存的数据读取到该内存另一块地方上会不会经过cpu
②芯片的作用主要是计算吗?硬盘,内存,显卡,网卡,声卡这些部件里都有芯片?数据对它们进行传入传出时都要经过芯片这个数据处理器?也就是说,比如cpu处理好的数据结果送到硬盘时,数据要先经过硬盘上的一块处理数据的芯片?cpu处理好的数据结果送到网卡声卡这些时,也要先经过它们上面的一块处理数据的芯片?这块芯片决定了它们对传来的数据的处理能力?
③最后一个问题:
既然c语言速度比c#快那么多,那么对于一个耗时间的程序相同情况下岂不是c#要花很多的时间,比如说同一个算法c连续让cpu算了一分钟,那岂不是c#要算几十分钟才能算完?
(请稍微专业点的大神回答啊谢谢!)
①内存的数据读取到该内存另一块地方上会不会经过cpu
会。
②芯片的作用主要是计算吗?硬盘,内存,显卡,网卡,声卡这些部件里都有芯片?数据对它们进行传入传出时都要经过芯片这个数据处理器?也就是说,比如cpu处理好的数据结果送到硬盘时,数据要先经过硬盘上的一块处理数据的芯片?cpu处理好的数据结果送到网卡声卡这些时,也要先经过它们上面的一块处理数据的芯片?这块芯片决定了它们对传来的数据的处理能力?
所谓“计算”一般说的是具有通用计算的能力(专业术语叫图灵完备,一个图灵完备的机器,理论上可以完成任何别的计算机能做的事情)。
目前不但你说的这些都包含可以通用计算的芯片,就是键盘、鼠标甚至硬盘盒、你的汽车钥匙都有通用的cpu。通用的cpu廉价,而且易于通过重新编程扩展各种功能。所以现在的厂商都愿意这么做。但是,这并不意味着,“硬盘,内存,显卡,网卡,声卡”必须具有通用计算的能力。在80年代以前,它们可能是不具备的。
③最后一个问题:
既然c语言速度比c#快那么多,那么对于一个耗时间的程序相同情况下岂不是c#要花很多的时间,比如说同一个算法c连续让cpu算了一分钟,那岂不是c#要算几十分钟才能算完?
你对C语言的效率和C#的效率的认识是完全不对的。在极端情况下,C#甚至可以比C语言写出更快的程序。但是大多数情况下,两者的效率相仿。
顺便说一个可能让你觉得惊讶的事情。
cpu里面其实还藏着一台计算机!
intel目前最新的处理器里不但有可以重新编程的计算机,甚至还有自己的操作系统,更神奇的是,操作系统里还有web服务器软件。
http://bbs.ngacn.cc/read.php?tid=12808142
MINIX 在处理器内部拥有自己的 CPU 内核和专属固件,完全独立于其他部分,而且完全隐形,操作系统和用户均不可见,运行权限更是达到了 Ring -3。
所以,现在的一部个人计算机,其实可以说相当于一个由无数计算机和各种网络连在一起的计算机网络。我不知道一部计算机上可以称之为计算机科学里说的计算机的部件有多少,也许有100台或者更多。
1、需要CPU参与,转移数据。
2、CPU进行计算。有芯片,如硬盘有芯片控制把存储的数据以标准接口传出。需要这些芯片,需要这些芯片转换,CPU出来的数字信号要经过这些芯片的专用逻辑处理转化为对应的物理信号。如你上网需要网卡,网卡芯片最后按照你实际用的是网线还是无线传出。
决定处理能力。
3、现在的CPU已经很快,一般的程序(不涉及特殊算法或图像处理)根本不会受影响。一段代码就ms级对用户没什么感觉,不用纠结这个。单纯的C和C#都只是语法,没多大的区别。单纯的C做界面很困难,需要调用Windows api函数很不方便,而C#可以利用.net框架,就是微软帮你把底层都封装好,你直接调用,像搭积木一样很方便。如果是做服务器需要大量运算的化,要跑的快主要还是自己要优化算法,更直接的是汇编,用更少的指令去实现要进行的运算。
CPU的主要作用核心就是进行运算和控制。
还有,当外部在放在计算机中的数据时,这个数据可能在cpu和寄存器中同时存在,因为如果大量的数据同时访问cpu,cpu效率就会降低,所以就会把一部分数据也同时存放在寄存器中,寄存器的速度也非常快。但是由于寄存器存储并没有很大不会将cpu中的数据完全copy过来,因此寄存器只是包含一部分经常被访问的数据,并且会常常更新寄存器。
所以当读取访问数据时,可能不会经过cpu。
给你推荐一本书:计算机组成原理。这学期刚学过……
1.不一定经过CPU,不过会控制传输过程。DMA。
2.并不一定是设备芯片限制了设备的能力,相反很多设备芯片是为了更好的发挥设备的能力,比如硬盘,性能瓶颈不在芯片。
3.一般来说语言快慢的原因是实现相同的功能,不同语言最终编译成(或者间接)机器指令的数目不同,这就造成了不同语言性能的差距,一般越高层的或者运行在虚拟机上的语言性能越差。主流语言之间的性能差异没有几十倍这么大,多的也就差个几倍,有个网站比较过主流语言的性能,我忘了。
1.不一定经过CPU,不过会控制传输过程。DMA。
2.并不一定是设备芯片限制了设备的能力,相反很多设备芯片是为了更好的发挥设备的能力,比如硬盘,性能瓶颈不在芯片。
3.一般来说语言快慢的原因是实现相同的功能,不同语言最终编译成(或者间接)机器指令的数目不同,这就造成了不同语言性能的差距,一般越高层的或者运行在虚拟机上的语言性能越差。主流语言之间的性能差异没有几十倍这么大,多的也就差个几倍,有个网站比较过主流语言的性能,我忘了。
1.不一定经过CPU,不过会控制传输过程。DMA。
2.并不一定是设备芯片限制了设备的能力,相反很多设备芯片是为了更好的发挥设备的能力,比如硬盘,性能瓶颈不在芯片。
3.一般来说语言快慢的原因是实现相同的功能,不同语言最终编译成(或者间接)机器指令的数目不同,这就造成了不同语言性能的差距,一般越高层的或者运行在虚拟机上的语言性能越差。主流语言之间的性能差异没有几十倍这么大,多的也就差个几倍,有个网站比较过主流语言的性能,我忘了。
1.不一定经过CPU,不过会控制传输过程。DMA。
2.并不一定是设备芯片限制了设备的能力,相反很多设备芯片是为了更好的发挥设备的能力,比如硬盘,性能瓶颈不在芯片。
3.一般来说语言快慢的原因是实现相同的功能,不同语言最终编译成(或者间接)机器指令的数目不同,这就造成了不同语言性能的差距,一般越高层的或者运行在虚拟机上的语言性能越差。主流语言之间的性能差异没有几十倍这么大,多的也就差个几倍,有个网站比较过主流语言的性能,我忘了。
①内存的数据读取到该内存另一块地方上会不会经过cpu
会。
②芯片的作用主要是计算吗?硬盘,内存,显卡,网卡,声卡这些部件里都有芯片?数据对它们进行传入传出时都要经过芯片这个数据处理器?也就是说,比如cpu处理好的数据结果送到硬盘时,数据要先经过硬盘上的一块处理数据的芯片?cpu处理好的数据结果送到网卡声卡这些时,也要先经过它们上面的一块处理数据的芯片?这块芯片决定了它们对传来的数据的处理能力?
所谓“计算”一般说的是具有通用计算的能力(专业术语叫图灵完备,一个图灵完备的机器,理论上可以完成任何别的计算机能做的事情)。
目前不但你说的这些都包含可以通用计算的芯片,就是键盘、鼠标甚至硬盘盒、你的汽车钥匙都有通用的cpu。通用的cpu廉价,而且易于通过重新编程扩展各种功能。所以现在的厂商都愿意这么做。但是,这并不意味着,“硬盘,内存,显卡,网卡,声卡”必须具有通用计算的能力。在80年代以前,它们可能是不具备的。
③最后一个问题:
既然c语言速度比c#快那么多,那么对于一个耗时间的程序相同情况下岂不是c#要花很多的时间,比如说同一个算法c连续让cpu算了一分钟,那岂不是c#要算几十分钟才能算完?
你对C语言的效率和C#的效率的认识是完全不对的。在极端情况下,C#甚至可以比C语言写出更快的程序。但是大多数情况下,两者的效率相仿。
1.不一定经过CPU,不过会控制传输过程。DMA。
2.并不一定是设备芯片限制了设备的能力,相反很多设备芯片是为了更好的发挥设备的能力,比如硬盘,性能瓶颈不在芯片。
会的,语言的差别不是cpu的差别,耗时是因为c#做了很多额外的工作
内存的数据读取到该内存另一块地方上会不会经过cpu
会。
1.不一定经过CPU,不过会控制传输过程。DMA。
2.并不一定是设备芯片限制了设备的能力,相反很多设备芯片是为了更好的发挥设备的能力,比如硬盘,性能瓶颈不在芯片。
我也不懂,求解求解求解求解!
内存的数据读取到该内存另一块地方上会不会经过cpu
肯定会的
既然c语言速度比c#快那么多,那么对于一个耗时间的程序相同情况下岂不是c#要花很多的时间,比如说同一个算法c连续让cpu算了一分钟,那岂不是c#要算几十分钟才能算完?
关键是看你的算法吧,你这样思考问题有点片面了。多看点书自然就好了。
①内存的数据读取到该内存另一块地方上会不会经过cpu 看是什么访问,如果是DMA 那就不需要,如果不是,那就需要经过CPU
②芯片的作用主要是计算吗
针对各个部件的芯片,并不是做计算,而是缓存或者数据校验等功能会多一些。。。因为传送数据的过程中,不一定能做到数据速率匹配,所需要缓存
另外,如果传输过程中数据有错,那就需要重传和检验功能能。
最后一个问题:理论上是这样的,除非c写的太烂。。。
硬件性能不过关,跟代码无关
该好好看一下,计算机原理