计算机cpu原理(计算机原理)

  • 计算机结构组成

内外存储器: 实现记忆功能的部件⽤来存放计算程序及参与运算的各种数据

CPU运算器: 负责数据的算术运算和逻辑运算即数据的加⼯处理

CPU控制器:负责对程序规定的控制信息进⾏分析,控制并协调输⼊,输出操作或内存访问

输⼊设备: 实现计算程序和原始数据的输⼊

输出设备: 实现计算结果输出1、2、2 计算机系统组成1、2、3 程序和指令

指令是对计算机进⾏程序控制的最⼩单位。

计算机cpu原理(计算机原理)(1)

计算机系统组成

计算机cpu原理(计算机原理)(2)

1、2、3 程序和指令

指令是对计算机进⾏程序控制的最⼩单位。

所有的指令的集合称为计算机的指令系统。

程序是为完成⼀项特定任务⽽⽤某种语⾔编写的⼀组指令序列。

  • CPU结构

中央处理器(CPU,central processing unit)作为计算机系统的运算和控制核⼼,是信息处理、程序运⾏的最终执⾏单元。

计算机cpu原理(计算机原理)(3)

cpu

该图表现了在指令执⾏周期中相互交互部件之间的关系。在从内存读取程序指令之前,将其地址放到地址总线上。然后,内存控制器将所需代码送到数据总线上,存⼊代码⾼速缓存 (code cache)。指令指针的值决定下⼀条将要执⾏的指令。指令由指令译码器分析,并产⽣相应的数值信号送往控制单元,其协调 ALU 和浮点单元。虽然图中没有画出控制总线,但是其上传输的信号⽤系统时钟协调不同 CPU 部件之间的数据传输。

  • CPU构成

CPU主要由运算器控制器寄存器组内部总线构成。

运算器:由算术逻辑单元ALU、通⽤寄存器、数据暂存器等组成。程序状态字寄存器接受从控制器送来的命令并执⾏相应的动作,主要负责对数据的加工和处理。

控制器:由程序计数器PC、指令寄存器IR、地址寄存器AR、数据寄存器DR、指令译码器等。负责对程序规定的控制信息进⾏分析,控制并协调输⼊,输出操作或内存访问

寄存器:寄存器的功能是存储⼆进制代码,它是由具有存储功能的触发器组合起来构成的。

总线:总线是⼀种内部结构,它是cpu、内存、输⼊、输出设备传递信息的公⽤通道,主机的各个部件通过总线相连接,外部设备通过相应的接⼝电路再与总线相连接。

  • 寄存器

CPU 本身只负责运算,不负责储存数据。数据⼀般都储存在内存之中,CPU 要⽤的时候就去内存读写数据。但是,CPU 的运算速度远⾼于内存的读写速度,为了避免被拖慢,CPU 都⾃带⼀级缓存和⼆级缓存。基本上,CPU 缓存可以看作是读写速度较快的内存。但是,CPU 缓存还是不够快,另外数据在缓存⾥⾯的地址是不固定的,CPU 每次读写都要寻址也会拖慢速度。因此,除了缓存之外,CPU 还⾃带了寄存器(register),⽤来储存最常⽤的数据。也就是说,那些最频繁读写的数据(⽐如循环变量),都会放在寄存器⾥⾯,CPU 优先读写寄存器,再由寄存器跟内存交换数据。

计算机cpu原理(计算机原理)(4)

寄存器名字

寄存器、缓存、内存三者关系

按与CPU远近来分,离得最近的是寄存器,然后缓存(CPU缓存),最后内存。

CPU计算时,先预先把要⽤的数据从硬盘读到内存,然后再把即将要⽤的数据读到寄存器。于是

CPU〈---〉寄存器〈---〉内存,这就是它们之间的信息交换。

那为什么有缓存呢?因为如果经常操作内存中的同⼀址地的数据,就会影响速度。于是就在寄存器与内存之间设置⼀个缓存。因为从缓存提取的速度远⾼于内存。当然缓存的价格肯定远远⾼于内存,不然的话,机器⾥就没有内存的存在。

由此可以看出,从远近来看:CPU〈---〉寄存器〈---〉缓存 〈---〉内存。

  • 进制

进制也就是进位制,是⼈们规定的⼀种进位⽅法。 对于任何⼀种进制—X进制,就表示某⼀位置上的数运算时是逢X进⼀位。 ⼗进制是逢⼗进⼀,⼗六进制是逢⼗六进⼀,⼆进制就是逢⼆进⼀,以此类推,x进制就是逢x进位。

计算机cpu原理(计算机原理)(5)

  • ⼆进制

⼆进制是计算技术中⼴泛采⽤的⼀种数制。⼆进制数据是⽤0和1两个数码来表示的数。它的基数为2,进位规则是“逢⼆进⼀”,借位规则是“借⼀当⼆”。

当前的计算机系统使⽤的基本上是⼆进制系统,数据在计算机中主要是以补码的形式存储的。

计算机cpu原理(计算机原理)(6)

⼗进制转化⼆进制的⽅法:⽤⼗进制数除以2,分别取余数和商数,商数为0的时候,将余数倒着

计算机cpu原理(计算机原理)(7)

数就是转化后的结果。⼗进制的⼩数转换成⼆进制:⼩数部分和2相乘,取整数,不⾜1取0,每次相乘都是⼩数部分,顺序看取整后的数就是转化后的结果。

计算机cpu原理(计算机原理)(8)

  • ⼋进制

⼋进制,Octal,缩写OCT或O,⼀种以8为基数的计数法,采⽤0,1,2,3,4,5,6,7⼋个数字,逢⼋进1。⼀些编程语⾔中常常以数字0开始表明该数字是⼋进制。⼋进制的数和⼆进制数可以按位对应(⼋进制⼀位对应⼆进制三位),因此常应⽤在计算机语⾔中。⼗进制转化⼋进制的⽅法:

计算机cpu原理(计算机原理)(9)

⽤⼗进制数除以8,分别取余数和商数,商数为0的时候,将余数倒着数就是转化后的结果。

  • ⼗六进制

⼗六进制(英⽂名称:Hexadecimal),同我们⽇常⽣活中的表示法不⼀样,它由0-9,A-F组成,字⺟不区分⼤⼩写。与10进制的对应关系是:0-9对应0-9,A-F对应10-15。

⼗六进制的数和⼆进制数可以按位对(⼗六进制⼀位对应⼆进制四位),因此常应⽤在计算机语⾔中。

计算机cpu原理(计算机原理)(10)

⼗进制转化⼗六进制的⽅法:

⽤⼗进制数除以16,分别取余数和商数,商数为0的时候,将余数倒着数就是转化后的结果。

计算机cpu原理(计算机原理)(11)

十进制转十六进制

  • 进制在代码中表现形式

计算机cpu原理(计算机原理)(12)

func main() { a := 10 //⼗进制 b := 010 //⼋进制 c := 0x10 //⼗六进制 //%d 占位符 表示输出⼀个⼗进制整型数据 fmt.Printf("%d\n",a) //%o 占位符 表示输出⼀个⼗进制整型数 fmt.Printf("%o\n",b) //%x %X 占位符 表示输出⼀个⼗进制整型数据 fmt.Printf("%x\n",c) }

  • 原码

⼀个数的原码(原始的⼆进制码)有如下特点:

  • 最⾼位做为符号位,0表示正,为1表示负
  • 其它数值部分就是数值本身绝对值的⼆进制数
  • 负数的原码是在其绝对值的基础上,最⾼位变为1

计算机cpu原理(计算机原理)(13)

原码表示法简单易懂,与带符号数本身转换⽅便,只要符号还原即可,但当两个正数相减或不同符号数相加时,必须⽐较两个数哪个绝对值⼤,才能决定谁减谁,才能确定结果是正还是负,所以原码不便于加减运算。

  • 反码

计算机cpu原理(计算机原理)(14)

对于正数,反码与原码相同

对于负数,符号位不变,其它部分取反(1变0,0变1)

反码运算也不⽅便,通常⽤来作为求补码的中间过渡。

  • 补码

在计算机系统中,数值⼀律⽤补码来存储。

补码特点:

  • 对于正数,原码、反码、补码相同
  • 对于负数,其补码为它的反码加1
  • 补码符号位不动,其他位求反,最后整个数加1,得到原码

计算机cpu原理(计算机原理)(15)

  • 补码的意义

⽤8位⼆进制数分别表示 0和-0⼗进制数

计算机cpu原理(计算机原理)(16)

不管以原码⽅式存储,还是以反码⽅式存储,0也有两种表示形式。为什么同样⼀个0有两种不同的表示⽅法呢?

但是如果以补码⽅式存储,补码统⼀了零的编码:

计算9-6的结果

计算机cpu原理(计算机原理)(17)

以原码⽅式相加:

最⾼位的1溢出,剩余8位⼆进制表示的是3,正确。

计算机cpu原理(计算机原理)(18)

在计算机系统中,数值⼀律⽤补码来存储,主要原因是:

  • 统⼀了零的编码
  • 将符号位和其它位统⼀处理
  • 将减法运算转变为加法运算
  • 两个⽤补码表示的数相加时,如果最⾼位(符号位)有进位,则进位被舍弃
  • 指针和内存

内存

内存含义:

存储器:计算机的组成中,⽤来存储程序和数据,辅助CPU进⾏运算处理的重要部分。

内存:内部存贮器,暂存程序/数据——掉电丢失 SRAM、DRAM、DDR、DDR2、DDR3。

外存:外部存储器,⻓时间保存程序/数据—掉电不丢ROM、ERRROM、FLASH(NAND、

NOR)、硬盘、光盘。

内存是沟通CPU与硬盘的桥梁:暂存放CPU中的运算数据

暂存与硬盘等外部存储器交换的数据

  • 物理存储器和存储地址空间

有关内存的两个概念:物理存储器和存储地址空间。

物理存储器:实际存在的具体存储器芯⽚。

主板上装插的内存条

显示卡上的显示RAM芯⽚

各种适配卡上的RAM芯⽚和ROM芯⽚

存储地址空间:对存储器编码的范围。我们在软件上常说的内存是指这⼀层含义。

编码:对每个物理存储单元(⼀个字节)分配⼀个号码

寻址:可以根据分配的号码找到相应的存储单元,完成数据的读写

  • 内存地址

将内存抽象成⼀个很⼤的⼀维字符数组。

编码就是对内存的每⼀个字节分配⼀个32位或64位的编号(与32位或者64位处理器相关)。

这个内存编号我们称之为内存地址。

内存中的每⼀个数据都会分配相应的地址:

char:占⼀个字节分配⼀个地址

int: 占四个字节分配四个地址

flfloat、struct、函数、数组等

  • 指针

只要将数据存储在内存中都会为其分配内存地址。内存地址使⽤⼗六进数据表示。

内存为每⼀个字节分配⼀个32位或64位的编号(与32位或者64位处理器相关)。

  • 内存区的每⼀个字节都有⼀个编号,这就是“地址”。
  • 如果在程序中定义了⼀个变量,在对程序进⾏编译或运⾏时,系统就会给这个变量分配内存单元,并确定它的内存地址(编号)
  • 指针的实质就是内存“地址”。指针就是地址,地址就是指针。
  • 指针是内存单元的编号,指针变量是存放地址的变量。
  • 通常叙述时会把指针变量简称为指针,实际他们含义并不⼀样。

计算机cpu原理(计算机原理)(19)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页