下面的看法只是本人阅读了一些简单的文献,自己用自己能理解的方式写出来的文章,如果有不对的希望大家指出。我了解这些比较底层的东西只是为了更好的理解JAVA多线程的一些知识,对底层的一些具体实现原理并没有深究(深究也学不会,呃呃)。
1.寄存器、缓存、内存
下图以多CPU的情况举例。
cpu:中央处理器,一台计算机的控制核心和运算核心。
register:通用寄存器,主要存储cpu当次运算所需要使用到的指令集和数据的位置。
引申概念:
地址总线:
数据总线表示cpu的寻址能力,这与寄存器的位数有关,如果寄存器是n位的,那么寻址能力就是2的n次方,他也可以理解为寄存器存储的最大数字。
数据总线:
由地址寄存器指出要存取数据或指令的位置后,接下来就是到该地址把数据或指令找到,并用数据总线传输给CPU。假设数据总线有m位,则传输的数据或指令也有m位。
字长:字长指CPU同一时间内可以处理的二进制数的位数,所以数据总线传输的数据或指令的位数要与字长一致。否则,如果数据总线宽度大于字长则一条数据或指令要分多次传输,则分开传输的几组数据也就没有意义了;如果数据总线宽度小于字长