处理器的底部和四周有大量的引脚,可以接受外界发来传送的电信号。每个引脚都有自己的用处。有些引脚用来将参与运算的数字输送到处理器内部,有些引脚可以重复使用的。
假如要进行加法运算,这些引脚将依次把加数和被加数送入处理器,处理器一旦接受信号,将会以二进制数组成的电信号反应在引脚相连的内部线路上,是一组高低电平的组合,代表着二进制数的每一位,此时必须用寄存器(Register)(是双向器件)的暂时存储,之所以这样做,是因为相同的引脚和线路马上要输入被加数,重复之前的工作,也正因为这个原因,这些内部线路称为处理数据总线。它们之间通过控制器发出指令,控制各个器件在某个正确的时间做某个动作。
图中寄存器(Register A)和寄存器(Register B)将分别参与运算,假设寄存器(Register A)暂时存储的是加数,寄存器(Register B)暂时存储的是被加数。此时寄存器(Register A)和寄存器(Register B)都暂时存储了数据,将不再受外部数据的影响。运算逻辑部件输出结果,结果被输送到寄存器(Register C),通过数据总线输送到处理器外面,或再次送入到寄存器(Register A)和寄存器(Register B)参与运算。
程序计数器(PC寄存器)
JVM中PC寄存器是对计算机中硬件寄存器的一个抽象模拟,不是一个东西的.PC寄存器就是作用跟物理寄存器差不多,都是存储数据的作用.它是一块很小的内存空间,几乎可以忽略不记。也是运行速度最快的存储区域。PC寄存器的名字起为PC计数器其实更准确。
作用:用来存储 指向下一条指令的地址。
public class Test{
public static void main(String[] args){
int a = 138;
int b = 362;
int c = a+b;
}
}
反编译查看字节码:javap -v Test.class
图片寄存器的好处
因为一个线程一个寄存器,这样线程在来回切换的时候,知道要继续执行哪行代码.所以寄存器肯定是不能多个线程共享的。
PC寄存器可以理解为: 值日表;数据库中的结果集,可以一行一行取数据;集合中的迭代器,一次一次调用next()来获取数据。
注意:
[1]PC寄存器不存在垃圾回收,因为他一直指向下一个地址,直接被下一个地址覆盖了之前的。
[2]PC寄存器永远不存在内存溢出: OutOfMemory
网友评论