
cpu到底是怎么计算的?
这问题太大了,你需要去学,微电子学理论,数字电路理论,计算机理论。才能***楚IC电路中电子的去向。打个比方就像我们都知道1+1=2,大家都是直接使用,你非要搞清楚为什么1+1=2。
CPU其实很笨的。内部只有加法器、寄存器、控制器和三种总线。也就是说,这个家伙就会加法。智力也就是小学一年级水平。可他的计算速度非常快。而且非常听话。严格按程序办事。由于采用二进制,加法用加法、减法也用加法、乘法也用加法,除法还用加法。这一切都要靠各种层次的程序完成。比方一个乘法要由程序员事先编好程序储存在固化的内存中备用。运算的结果可以控制总线的状态。如果需要显示,他可以通过数据总线把显示数据送到显示器。接受键盘信息也一样。一个完整的计算机由各种各样的CPU组成系统协同完成任务。主板上的芯片内部几乎都有CPU。只不过是一种嵌入式的。比方微软的计算机系统底层的程序系统叫bios,然后DOS、Windos、应用程序。普通老百姓只是使用各种应用程序。
开关控制其实靠温度了!至于温度其实靠的是短路升温,半导体的电阻对于温度来说特别敏感,学过初中物理都知道不同温度下电阻是不一样的,至于做芯片用的硅是高温电阻大还是低温电阻大我懒得查了,但个人猜测是低温电阻小!至于第二个问题,确实电子迁移有时会扰乱计算,但是晶体管大于一定距离的时候不会发生!硅晶体管间的距离小于5纳米的时候就会产生量子隧穿而扰乱计算,为什么石墨烯又能做到3纳米呢?因为石墨烯是碳元素,在元素周期表上处在第六位,只有两个电子轨道,而硅处在第14位,有3条电子轨道,所以硅只能做到5纳米!
我早就在思考这个问题,百思不得琪姐。之前问过许多人自称知道原理,但也只是懂点皮毛,知其然不知其所以然。此外U盘存储和读写,说的都是个结果,而不能说运行机制,还有软件的运行等等。真正懂的人极少,现在我还没遇到。
CPU重要的一个地方是算术逻辑单元——一个“开关”,它比较两个电子信号——1:0,0:1,1:1,0:0。这样的信号被传送到硅的薄片上,其微小的“孔”和不规则的现象形成了各种不同的电路形成,使得电子可以在不同的地方(空穴)(隧道)之间流动。
在这个电子运动的过程中,电信号(电压)通过一系列的导管,也许有点像水在管道上流走。但水一般流向同一个方向(水往低处流),通过循环-反向-自身构造,使得信号(1或0)可以永久地存储在该位置。想想成百上千万个这样的电子,通过无数的电路会产生什么样的变化。
所以现在我们知道如何将数据(1和0,二进制)作为信号在硅片上传输,以及如何在电子水管线中存储数据(1和0)快速标记。为了让计算机处理器对这些简单的1/0结构做一些有用的事情,我们需要将制作它们更多的组合。
如果一台典型的计算机现在有16g的内存(16g=128,000,000,000),那么所有这些零位的地址就会有很多的位置。计算机需要开始给所有不同的位置提供它们自己唯一的地址(内存地址),比如0x00000000001、0x0000000002等等。
同样的,因为如果我们能告诉计算机“去地址0x000000001,在那里移动1或0”,那么信号只会将无法到达那里而不会迷路去其他地方,计算机硬件设计者将一组非常简单的指令集(机器语言,汇编语言)集成到硅中。
然后我们使用这些指令发出信号,让处理器根据我的指令进行电路运行,从而让正常运行。
CPU指令集存储位置在哪里?
cpu能执行的叫微指令。微指令的***叫微指令集,一个微指令集对应汇编语言的一条指令。指令刚开始是用打孔纸表示的。cpu微指令集放在主板ROM里,ROM内容一般不能变化。启动时,微指令集载入电脑内存条。专用软件afuwin可以刷新微指令集。所以主板支持的cpu是有数量限制的。比如775针的主板不一定能支持771针的cpu的指令集,有软件的原因和硬件的原因。厂家为了迫使用户升级,进行了软件和硬件的限制。
问者是程序员吧?学点计算机基础原理对理解程序很重要。
指令集肯定在cpu内部啊。这是cpu电路的一部分。cpu里面就像工厂,指令集就像流水线配套的各种工具,机器。工具机器不同的排列方式可以加工不同的产品,这个根据使用时的情况临时排列。这个产品就是数据,程序。不同的指令集只能支持特定的程序。
需要提到的是,精简指令集就是只有那几套通用型工具和机器灵活调用,复杂指令集有很多特定的机器放在流水线上。只为加工特定的产品用的,平时用不到就让产品流过去不开动。所以复杂指令集的x86处理器很大功耗很高,而精简指令集的ARM很小巧。
指令集是一系列指令的统称,是由CPU内部的逻辑电路来执行的,是CPU最底层的运算部门。它包括加法器,乘法器,寄存器,比较器等等,执行程序中一个个的指令。例如当前一个指令是加法,则在后续的一个个时钟信号下,依次读取源数据中的加数和被加数,送到加法器,产生的计算结果,再送到指定位置。
指令系统其实是有相当大的随意性的,例如可以用任意数[_a***_]加法指令,但是一旦确定下来,就不能更改,形成一个标准体系。这个标准体系会随着技术发展不断扩充,提高性能,又要保持向下兼容。因为这个体系事实上是个标准,所以起初Intel,Motorola,Zilog等等公司各自建了自己的指令集,互相竞争。但是现在剩下的也就是x86和RISC了,其它很少见了。
虽然各种指令集各不相同,但是功能基本相同。基本的指令可以相互翻译,经过翻译之后一种指令集的软件可以在另一种指令集的CPU上运行,除非某些指令为独有。
如果我们要做一个运算,如z=x+y,这么写属于自然语言,只有人能看得懂,计算机反正是不懂的,它只认得0和1,所以就要制定一套规则,让计算机能准确地执行这个运算。
所以计算机中会有运算器(ALU),加法就是其中一个运算操作码,还要有存储单元(寄存器和内存),用来存放x、y、z这些操作数,***设我们将运算器中的加法规定为01,存储器中三个地址分别规定00、01、11,那个z=x+y翻译成机器指令就是01 00 01 11(将存储器中00和01相加存储到11中),当然这是最直观的理解,实际中的规则会更完善。
而CPU指令集就是这样一套规范的***,它告诉我们CPU能做什么样的工作,或者说能执行哪些机器码。
这些指令就像是天书,当CPU取得指令后,还要进行译码,解析出操作码和操作数,然后才能真的执行,这个译码的过程就是对指令集规范内的机器码进行解码。
那指令集到底存在哪儿?在冯·诺伊曼型计算机中,CPU的工作可以分为取指、译码、执行、存取、回写这几个过程,只有在译码这个过程中会用到指令集,虽然指令集并没有真正的实体存储地,它是CPU的电路设计逻辑,但是一定要找个地方的话,也就只有在译码电路这一块了。
闲话少说,直接来看一下指令集到底是什么东西?
这是我的办公笔记本,顺手打开CPU-z就可以看到我这个i5-7200U的参数,其中就有指令集。
指令集到底是什么东西?
可能有朋友觉得指令集是类似于显卡驱动,或者主板BIOS一样的程序,可以用来指挥协调CPU的工作,所以需要有某个实体的部分去储存它,其实这种理解是不对的。
“指令集”从字面意思上理解,就是一个“***”,这个“***”里面包涵了许多的指令。
那么指令有什么用?
在回答这个问题之前我们先来搞清楚CPU处理文件的过程:
软件层面上理解,指令就像是一个CPU的“法律”,汇编语言只有通过指令集的要求才可以被转化成机器码,如果产生的机器码包含于本CPU的指令集,那么在硬件处理的时候就会报错。
硬件层面上来看,指令集并不需要任何的储存介质去储存,而是一种实实在在硬件层面上的东西。CPU内部由数量惊人的逻辑门组成复杂的电路,只有符合译码电路的机器码才可以被处理。
附:本题涉及到的软硬件知识十分复杂,以上为个人理解内容,如有遗漏、错误之处欢迎评论交流,点击关注数码神侃er更多硬件知识等你来看!