【计算机原理】CPU部分.md

本文由CPU阿甘改编而得,主要讲的是系统启动和程序执行时CPU做的工作。

CPU的构成

中央处理器(CPU,Central Processing Unit)由运算器、控制器、Cache等。

  • 控制器:主要是对指令进行译码。
  • 运算器:主要是执行定点或者浮点运算等。
  • 寄存器:主要功能是保存计算的中间结果

可以看出CPU的主要功能是接收指令,执行指令。不过CPU不能保存指令。

最大的优点在于速度快,以ns为单位,内存比它慢了100倍,硬盘比它慢了1000多万倍。

下面我们主要介绍一下计算机从加电到加载操作系统中,CPU主要做了什么事情。

启动

当计算机上电了以后,CPU就先会执行内存最顶端的指令,现是一条跳转指令,所以会去执行BIOS里面的代码。

我们知道BIOS的主要功能是系统自检,看看内存、硬盘、显卡等是否有问题。自检完成以后,会产生中断,BIOS会告诉CPU是多少号中断。

中断了以后,CPU怎么知道去哪里执行响应中断的指令呢?我们可以用一张表来保存中断指令的响应代码,但是为了让这张表不那么臃肿,可以让这张表只保存响应代码的入口地址

比如

中断类型号 响应指令的地址
0x01 地址A
0x02 地址B
…… ……

这张表就称为中断向量表,保存的是响应中断的指令的入口地址,类似于响应代码的房间号。

CPU可以通过中断向量表查找到对应的指令,这条指令的目的是把磁盘的第一扇区(磁盘的BIOS)运到内存中

到目前为止,硬件的初始化就完成了,下面应该加载操作系统

运行程序

操作系统加载入内存中以后,会接管整个系统的管理工作。

下面我们来谈一下如何运行程序。

首先操作系统会为CPU分配进程,不过对CPU而言,它只关心自己的寄存器程序计数器

  • 寄存器:工作现场,包括一些计算的中间结果
  • 程序计数器:要执行的下一条指令的地址。

要运行程序,首先需要从硬盘上加载程序。但是从硬盘上读程序实在太慢,CPU没有必要一直等着它,完全可以异步处理。

硬盘把返回的数据通过直接内存访问(DMA)把数据装载到内存中。这样CPU就解放出来,切换到另一个进程里面,当然相关的运行环境(寄存器、程序计数器)发生了改变。

但是上一个进程不可能放弃不执行了吧,所以等到当上一个进程的数据已经装载到了内存以后,CPU会收到一个中断,这样就可以切换回去了。

总结一下CPU的主要工作是,从内存中取出指令,进行译码,分解成为一系列的微操作,然后发出各种控制命令。

对CPU而言,主要关心的是它的寄存器和程序计数器,其中寄存器保存了计算的中间结果,而程序计数器可以用告诉CPU下一条指令去那里执行。

性能参数

CPU的主要性能参数有:

  • 主频:表示CPU内数字脉冲信号震荡的速度,与实际的运算速度没有直接的联系,比如1GHz的Itanium芯片与2.66GHz的至强芯片一样快,因为CPU的运算速度除了有主频的因素,还有CPU的流水线、总线等各方面的影响。
  • 外频:CPU的基准频率,MHz,可以决定主板的运行速度,如果把CPU超频了,可以CPU与主板会异步运行,所以整个系统有可能不稳定,一般来说服务器CPU不允许超频。
  • 总线频率:指的是前端总线的频率,而前端总线指的是CPU与北桥之间的总线。

    那么总线频率其实直接影响CPU与内存的之间的交互速率,即每秒CPU能接收的数据传输量。这点与外频不一样,外频是整块主板的运行速度。

  • Cache:因为CPU与内存之间存在速度差,同时我们发现程序的加载有局部性的特点,也就是说一个内存位置被访问了,附近的位置很快也会访问到。那么我们完全可以把内存中的部分代码提前加载到Cache里面。

    既然Cache的主要作用是CPU与内存的缓冲层,那么Cache的速度应该接近于CPU,基本上是与CPU同频运作。

    缓存都集成在CPU芯片上,而CPU单位面积的价格很昂贵,Cache一般都很小。

指令集

我们知道CPU的主要功能是解析指令,执行指令,也就是说CPU是靠一条一条的指令来计算和控制整个系统的。

也就是说不管是什么CPU,都有与之相匹配的指令系统。常用的指令集有两种

  • 复杂指令集:一般来说程序的指令是按照顺序串行执行的,而指令中的各个操作也是串行执行的。这样控制简单,但是利用率不高。

    x86架构的CPU主要使用的就是复杂指令集,AMD属于后起之秀,所以一定会兼容x86架构,它也是复杂指令架构的。

  • 精简指令集:

    复杂指令集最大的缺点在于微处理器太过复杂,所以研发成本高。而精简指令集,顾名思义,其指令系统得到大量的精简,而且指令格式统一,所以可以使用流水线结构,处理速度就上去了。

    服务器中采用RSIC指令的CPU主要有:PowerPC、MIPS处理器。

处理技术

本章主要介绍一下CPU体系架构里面常用的技术

流水线

每条指令都会经过取指(Fetch),译码(D1, main decode),转址(D2, translate),执行(EX, execute),写回(WB)结果等步骤。

那么当CPU预取完毕,进行译码的时候,预取部分的电路单元其实是空闲的。那么能不能让下一条指令进来执行预取的过程呢?答案是完全可以。

如下图所示,我们可以每过一个周期放入一条指令,这样在第5个时刻,最开始放入的指令其实已经执行到了最后一步WB了,第2条进入执行的指令比它晚一拍,执行到了EX上,其他的一次类推。

这样不断的有新的指令进入,同一时刻5条指令都在执行,只是说他们执行的阶段不一样。这样就实现了并行处理。

原文地址:https://www.cnblogs.com/dy2903/p/8453676.html

时间: 2024-10-10 08:41:05

【计算机原理】CPU部分.md的相关文章

计算机原理学习(7)-- x86-32 CPU和内存管理之分段管理

前言 前一篇我们介绍了内存管理中的分页试内存管理,分页的主要作用就是使得每个进程有一个独立的,完整的内存空间,通过虚拟内存技术,使得程序可以在较小的内存上运行,而进程之间内存空间相互独立,提高了安全性.这一篇将主要介绍内存管理中分段管理,以及两种的结合,也是目前计算机普遍采用的段页式内存管理.这也直接决定了的后面程序的编译,加载以及允许时的内存布局. 1. 内存分段 1.1 为什么分段? 在x86-16体系中,为了解决16位寄存器对20位地址线的寻址问题,引入了分段式内存管理.而CPU则使用CS

计算机原理学习(1)-- 冯诺依曼体系和CPU工作原理

前言 对于我们80后来说,最早接触计算机应该是在95年左右,那个时候最流行的一个词语是多媒体. 依旧记得当时在同学家看同学输入几个DOS命令就成功的打开了一个游戏,当时实在是佩服的五体投地.因为对我来说,屏幕上的东西简直就是天书.有了计算机我们生活发生了巨大的变化,打游戏,上网,聊天,甚至到现在以此为业.有时无不感叹计算机的强大. 人类总是聪明的而又懒惰的.即便是1+1这种简单的计算都不想自己做,1623年Wilhelm Schickard 制作了一个能进行六位以内数加减法,并能通过铃声输出答案

计算机原理学习(2)-- 存储器和I/O设备和总线

前言 前一篇文章介绍了冯诺依曼体系结构的计算机的基本工作原理,其中主要介绍了CPU的结构和工作原理.这一篇主要来介绍存储区,总线,以及IO设备等其他几大组件,来了解整个计算机是如何工作的. 这些东西都是看得见摸得着的硬件,平时我们买电脑时最关注的就是CPU的速度,内存的大小,主板芯片等等的参数. 1. 存储器 前面我们以一个简单通用的计算机模型来介绍了CPU的工作方式,CPU执行指令,而存储器为CPU提供指令和数据. 在这个简单的模型中,存储器是一个线性的字节数组.CPU可以在一个常数的时间内访

python全栈 day02 计算机原理 -- 硬件

day02 计算机原理 学习总结! 一.编程语言: 计算机编程语言,也就是所谓的机械码(二进制0101),是由早期的八卦阵图演变而来,再后来的继电器(强电接触通1,不接触解除0),根据这种情况演变而来的机械码计算,及二进制. 任何一种编程语言要想实现其功能,不管怎么转变,都必须转换成计算机可以识别的机械码,及二进制码,计算机才能识别. 二.计算机构成: 计算机是可以进行数值运算和逻辑运算,按照程序顺序来执行,并具备存储分析能力的电子设备,它由硬件和软件两部分构成. 硬件主要五大部分是:运算器(C

【转】计算机原理学习

前言 前一篇文章介绍了冯诺依曼体系结构的计算机的基本工作原理,其中主要介绍了CPU的结构和工作原理.这一篇主要来介绍存储区,总线,以及IO设备等其他几大组件,来了解整个计算机是如何工作的. 这些东西都是看得见摸得着的硬件,平时我们买电脑时最关注的就是CPU的速度,内存的大小,主板芯片等等的参数. 1. 存储器 前面我们以一个简单通用的计算机模型来介绍了CPU的工作方式,CPU执行指令,而存储器为CPU提供指令和数据. 在这个简单的模型中,存储器是一个线性的字节数组.CPU可以在一个常数的时间内访

一、计算机原理前世今生

计算机,言外之意,最初人民设计出来它的时候就是为了解决“计算calculation”的事情,而除了最早期的的算盘以外,最早的是在美国的一次人口普查用的,公元1880年,美国举行了一次全国性人口普查,为当时5000余万的美国人口登记造册.当时美国经济正处于迅速发展的阶段,人口流动十分频繁:再加上普查的项目繁多,统计手段落后,从当年1月开始的这次普查,花了7年半的时间才把数据处理完毕.也就是说,直到快进行第二次人口普查时,美国政府才能得知第一次人口普查期间全国人口的状况. 直到有一位叫“霍列瑞斯”的

计算机原理 发展简史

1发展简史编辑 1943——1946年美国宾夕法尼亚大学研制的电子数字积分器和计算机ENIAC(Electronic Numerical And Computer)是世界上第一台电子计算机.一般认为它是现代计算机的始祖. 早期计算机 与ENIAC计算机研制的同时,冯·诺依曼(Von Neumann)与莫尔小组合作研制EDVAC计算机,采用了存储程序方案,其后开发的计算机都采用这种方式,称为冯·诺依曼计算机. 2诺依曼机编辑 冯·诺依曼机具有以下特点: (1)计算机由运算器.控制器.存储器.输入设

我对计算机原理的理解

一.cpu是如何识别010101二进制机器码的? cpu都会有预定义的指令集,每一个指令代表了一种操作:不同cpu可能有不同的指令集:当cpu运行一个程序时,会顺序地执行程序的指令. 首先控制器会读取一条指令,当cpu执行完后,控制器会生成下一条指令,不断执行: 二.编程语言的诞生和发展 1.因为计算机智能识别二进制指令,因此最开始的程序是人工输入,然后采用纸袋打孔输入,都是直接对计算机输入二进制指令: 2.由于可读性差,不易维护等诸多因素,采用了汇编语言,即用符号来代表二进制指令,代码完成后需

计算机常识——CPU、服务器

CPU:计算机中控制数据操控的电路 (central processing unit )另称为中央处理器.处理器 CPU的构成: 1) 算术/逻辑单元 它包含在数据上执行运算的电路 2) 控制单元 它包含协调机器活动的电路 3)寄存器单元 它包含称为寄存器的数据存储单元(与主存单元相似),用作CPU内部的信息临时存储:包含通用寄存器及专用寄存器两种 举例展示CPU的用作: 两个数据的加法: 1)从主存储器中取出一个要加的值放入寄存器中(涉及控制单元.寄存器单元) 2)从主存储器中取出另一个要加的