首页 > 编程知识 正文

冯诺依曼计算机的结构图,冯诺依曼模型示意图

时间:2023-05-03 07:19:20 阅读:46118 作者:2704

计算机在运行时,首先从内存中取出第一个指令,通过控制器的解码,根据指令的要求,从内存中取出数据进行指定的运算和逻辑操作等加工,然后按地址将结果发送到内存中。 然后,取出第二个指令,在控制器的指挥下完成规定的操作。 在此基础上进行。 直到遇到停止指令。 程序和数据一样被存储,按照程序编制的顺序,一步一步地取出指令,自动完成指令规定的操作,这是计算机最基本的工作模式。 这个原理是美国匈牙利数学家冯诺依曼在1945年提出的,被称为冯诺依曼的计算机模型

计算机的五个核心组成部分1 .控制器(Control )是整个计算机的中枢神经,其功能是解释程序规定的控制信息,按其要求进行控制,调度程序、数据、地址,实现计算机2 .运算器(Datapath )运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据的加工处理。 3 .内存(Memory ) :内存的功能是存储程序、数据、各种信号、指令等信息,并在必要时提供这些信息。 4 .输入(Inputsystem ) )输入装置是计算机的重要组成部分,输入装置和输出装置合称为外部装置,简称外围装置,输入装置的作用是将程序、原始数据、文字、文字、控制命令和现场收集的数据等信息输入计算机典型的输入设备包括键盘、鼠标、光输入设备、磁带驱动器、磁盘设备和光盘设备。 5 .输出(输出系统)输出设备与输入设备一样是计算机的重要组成部分,输出外部计算机的中间结果、最终结果、机内的各种数据符号、文字和各种控制信号等信息。 微机常用的输出设备有显示终端CRT、打印机、激光打印机、绘图仪和磁带、光盘机等。 下图-冯诺依曼计算机模型图

在上图的硬件结构中,附件很多,但最核心的只有CPU、存储器这两个部分。 所以我们重点学习的也是这两个部分。 CPU命令结构CPU内部结构控制单元运算单元数据单元

控制单元控制单元是CPU整体的指令控制中心,由指令寄存器IR(InstructionRegister、指令解码器ID(InstructionDecoder和操作控制器oc (OOC ) 这是根据用户预先生成的程序,依次从存储器中取出各指令,存储在指令寄存器IR中,通过指令的解码(分析)决定应该进行什么样的操作,通过操作控制器OC,在决定的定时相应操作控制器OC主要包括差拍脉冲发生器、控制矩阵、时钟脉冲发生器、复位电路、起停电路等控制逻辑。 运算单元运算单元是运算器的核心。 您可以执行基本运算(如加减乘除)、包含附加运算的算术运算,以及包含移位、逻辑测试或比较两个值的逻辑运算。 对于控制单元,运算器接受控制单元的指令进行动作。 也就是说,运算单元进行的所有操作由来自控制单元的控制信号指挥,因此是执行手段。 存储器单元存储器单元由片上CPU高速缓存和寄存器组构成,是在CPU中暂时存储数据的地方,存储有等待处理的数据和处理后的数据,CPU访问寄存器的时间比访问存储器的时间长寄存器是CPU内部的元件,寄存器具有非常高的读写速度,所以寄存器之间的数据传输非常快。 使用寄存器,可以减少CPU访问内存的次数,提高CPU的动作速度。 寄存器组可以分为专用寄存器和通用寄存器。 专用寄存器的作用是固定的,注册各自对应的数据; 通用寄存器用途广泛,编程人员可以规定其用途。 下表介绍了CPU关键技术的发展历史和代表系列。 各主要技术的诞生是以环相结合的,处理器的这些技术发展历史围绕着“CPU无暇”的核心目标展开。

存储器存储区域大小:存储器L3L2L1寄存器; 内存速度快速排序:寄存器L1L2L3内存; 另一个值得注意的是,高速缓存由最小的内存块高速缓存线组成,高速缓存线的大小通常为64字节。 高速缓存线是什么意思? 例如,在L1高速缓存大小为512kb、cacheline=64byte情况下,在L1中512*1024/64个cachelineCPU读取存储器数据的进程1、CPU取得寄存器x的值,只要一步即可2、CPU需要1-3步(或更高)才能获得具有L1cache的值。 锁定cache行,带来某个数据,解除锁定。 如果没有锁,就晚了。 3、CPU为了取L2cache的某个值,先去L1cache取。 L1中不存在。 在L2中,L2开始上锁。 锁定后,执行将L2中的数据复制到L1并读取L1的过程。 在上面的三步中,解除锁定。 4、CPU取L3cache也同样,但首先从L3复制到L2,从L2复制到L1,从L1复制到CPU。 5、CPU取内存是最复杂的。 通知存储器控制器占用总线带宽,通知存储器锁定,开始存储器读取请求,等待响应,将响应数据保存在L3中,从L3/2到L1,从L1到CPU,然后解除总线锁定。 CPU需要缓存CPU的原因根据摩尔定律,每18个月翻一倍,但内存和硬盘的增长速度远远赶不上CPU。 因此,高性能内存和硬盘的价格和成本都很高。 但是,CPU的高级运算需要高速数据。 为了解决

此问题解决了CPU制造商在CPU中内置少量高速缓存的I/o速度与CPU速度不匹配的问题。 无论是CPU访问存储设备、访问数据还是访问命令,CPU都容易聚集在称为本地原理的连续区域中。 时间局部性(Tempor

alLocality):如果一个信息项正在被访问,那么在近期它很可能还会被再次访问。比如循环、递归、方法的反复调用等。空间局部性(SpatialLocality):如果一个存储器的位置被引用,那么将来他附近的位置也会被引用。比如顺序执行的代码、连续创建的两个对象、数组等。举个空间局部性原则例子:

29System.out.println(“spendtime1:”+(System.currentTimeMillis()‐start));30System.out.println(“sum1:”+sum);3132sum=0L;33start=System.currentTimeMillis();34for(intr=0;r<RUNS;r++){35for(intj=0;j<DIMENSION_2;j++){//636for(inti=0;i<DIMENSION_1;i++){//1024*102437sum+=longs[i][j];38}39}40}41System.out.println(“spendtime2:”+(System.currentTimeMillis()‐start));42System.out.println(“sum2:”+sum);43}44}带有高速缓存的CPU执行计算的流程1.程序以及数据被加载到主内存2.指令和数据被加载到CPU的高速缓存3.CPU执行指令,把结果写到高速缓存4.高速缓存中的数据写回主内存CPU运行安全等级CPU有4个运行级别,分别为:ring0ring1ring2ring3Linux与Windows只用到了2个级别:ring0、ring3,操作系统内部内部程序指令通常运行在ring0级别,操作系统以外的第三方程序运行在ring3级别,第三方程序如果要调用操作系统内部函数功能,由于运行安全级别不够,必须切换CPU运行状态,从ring3切换到ring0,然后执行系统函数,说到这里相信同学们明白为什么JVM创建线程,线程阻塞唤醒是重型操作了,因为CPU要切换运行状态。下面我大概梳理一下JVM创建线程CPU的工作过程step1:CPU从ring3切换ring0创建线程

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。