1.计算机五大核心组成部分
上面的只是计算机的逻辑模型,生产出来的计算机是下面的模型
2.CPU指令结构
CPU内部结构
-
控制单元 运算单元 数据单元 三部分
3.CPU缓存结构
1.CPU读取存储器数据过程
2.CPU为何要有高速缓存
//空间局部性实践结果
//二维数组计算大小
//按行计算的速度比按列计算快
public class TwoDimensionalArraySum {
private static final int RUNS = 100;
private static final int DIMENSION_1 = 1024 * 1024;
private static final int DIMENSION_2 = 6;
private static long[][] longs;
public static void main(String[] args) throws Exception {
/*
* 初始化数组
*/
longs = new long[DIMENSION_1][];
for (int i = 0; i < DIMENSION_1; i++) {
longs[i] = new long[DIMENSION_2];
for (int j = 0; j < DIMENSION_2; j++) {
longs[i][j] = 1L;
}
}
System.out.println("Array初始化完毕....");
long sum = 0L;
long start = System.currentTimeMillis();
for (int r = 0; r < RUNS; r++) {
for (int i = 0; i < DIMENSION_1; i++) {//DIMENSION_1=1024*1024
for (int j=0;j<DIMENSION_2;j++){//6
sum+=longs[i][j];
}
}
}
System.out.println("spend time1:"+(System.currentTimeMillis()-start));
System.out.println("sum1:"+sum);
sum = 0L;
start = System.currentTimeMillis();
for (int r = 0; r < RUNS; r++) {
for (int j=0;j<DIMENSION_2;j++) {//6
for (int i = 0; i < DIMENSION_1; i++){//1024*1024
sum+=longs[i][j];
}
}
}
System.out.println("spend time2:"+(System.currentTimeMillis()-start));
System.out.println("sum2:"+sum);
}
}
3.带有高速缓存的CPU执行计算的流程
4.CPU运行安全等级
4.CPU核心与线程的关系
5.操作系统内存管理
6.虚拟机指令集架构
栈指令集架构
寄存器指令集架构
Java符合典型的栈指令集架构特征,像Python、Go都属于这种架构。课上将给大家剖析整个栈指令集架构执行链路过程。 栈指令集架构速度比较慢,数据在内存中的jvm栈空间中,变量信息放在栈的局部变量表中,在JVM学习的时候,一个a+b的操作先要从局部变量表中弹出数字,加入到操作数栈,操作数栈中的数要交给CPU去运行,由前面的缓存模型可知,数据到达cpu运算还是一个缓慢的过程,等cpu算完再放回操作数栈,操作数栈再将数据复制到局部变量表中,由此可见这么多步骤能不慢吗 但是为了可一至性,也只能使用栈指令集架构