详解Linux系统CPU的内部架构和工作原理

系统 Linux
今天主要以Intel为例对CPU的工作原理做简单介绍,通过这简单介绍,达到对AMD,ARM,MIPS甚至PowerPC触类旁通。

 概述

今天主要以Intel为例对CPU的工作原理做简单介绍,通过这简单介绍,达到对AMD,ARM,MIPS甚至PowerPC触类旁通。

[[284896]]

CPU发展历程

1968年7月18日,鲍勃-诺斯和戈登-摩尔的新公司在美国加利福尼亚州,美丽的圣弗朗西斯科湾畔芒延维尤城的梅多费大街365号开张了。并在成立不久斥资15000美元从一家叫INTELCO的公司手中买下了Intel名称的使用权。由此Intel这位半导体巨人开始了他在IT行业传奇般的历史。

1971年11月15日,这一天被当作全球IT界具有里程碑意义的日子而被写入许多计算机专业教科书。Intel公司的工程师特德·霍夫发明了世界上第一个微处理器—4004,这款4位微处理器虽然只有45条指令,而且每秒只能执行5万条指令。甚至比不上1946年由美国陆军宾夕法尼亚大学研制的世界第一台计算机ENIAC。但它的集成度却要高很多,一块4004的重量还不到一盅司。 他因发明了微处理器,被英国《经济学家》杂志称为“第二次世界大战以来最有影响的科学家之一”。Intel公司的CPU发展历程如下表所示:

 

详解Linux系统CPU的内部架构和工作原理

 

以及后面的Pentium 1,2,3和4,再到酷睿、酷睿2,这里就不再一一列举。

Intel从8086开始,就进入了我们所谓的x86时代。而80386的诞生则标志着Intel正是进入了32位微处理器的时代。从80386到Pentium 4这个年代的CPU,就是传说中的IA-32时代。

cpu工作原理

我们都知道CPU的根本任务就是执行指令,对计算机来说最终都是一串由“0”和“1”组成的序列。CPU从逻辑上可以划分成3个模块,分别是控制单元、运算单元和存储单元,这三部分由CPU内部总线连接起来。

如下所示:

 

详解Linux系统CPU的内部架构和工作原理

 

控制单元:控制单元是整个CPU的指挥控制中心,由指令寄存器IR(Instruction Register)、指令译码器ID(Instruction Decoder)和操作控制器OC(Operation Controller)等,对协调整个电脑有序工作极为重要。它根据用户预先编好的程序,依次从存储器中取出各条指令,放在指令寄存器IR中,通过指令译码(分析)确定应该进行什么操作,然后通过操作控制器OC,按确定的时序,向相应的部件发出微操作控制信号。操作控制器OC中主要包括节拍脉冲发生器、控制矩阵、时钟脉冲发生器、复位电路和启停电路等控制逻辑。

运算单元:是运算器的核心。可以执行算术运算(包括加减乘数等基本运算及其附加运算)和逻辑运算(包括移位、逻辑测试或两个值比较)。相对控制单元而言,运算器接受控制单元的命令而进行动作,即运算单元所进行的全部操作都是由控制单元发出的控制信号来指挥的,所以它是执行部件。

存储单元:包括CPU片内缓存和寄存器组,是CPU中暂时存放数据的地方,里面保存着那些等待处理的数据,或已经处理过的数据,CPU访问寄存器所用的时间要比访问内存的时间短。采用寄存器,可以减少CPU访问内存的次数,从而提高了CPU的工作速度。但因为受到芯片面积和集成度所限,寄存器组的容量不可能很大。寄存器组可分为专用寄存器和通用寄存器。专用寄存器的作用是固定的,分别寄存相应的数据。而通用寄存器用途广泛并可由程序员规定其用途,通用寄存器的数目因微处理器而异。

将上图细化一下,可以得出CPU的工作原理概括如下:

 

详解Linux系统CPU的内部架构和工作原理

 

总的来说,CPU从内存中一条一条地取出指令和相应的数据,按指令操作码的规定,对数据进行运算处理,直到程序执行完毕为止。

总结

CPU的运行原理:控制单元在时序脉冲的作用下,将指令计数器里所指向的指令地址(这个地址是在内存里的)送到地址总线上去,然后CPU将这个地址里的指令读到指令寄存器进行译码。对于执行指令过程中所需要用到的数据,会将数据地址也送到地址总线,然后CPU把数据读到CPU的内部存储单元(就是内部寄存器)暂存起来,最后命令运算单元对数据进行处理加工。周而复始,一直这样执行下去,直到停电。

责任编辑:武晓燕 来源: 今日头条
相关推荐

2023-09-27 12:22:50

Kafka架构

2010-09-26 08:50:11

JVM工作原理

2009-07-09 14:01:22

JVM工作原理

2012-05-31 11:23:13

Linux路由

2022-06-21 09:05:51

LinuxHost

2023-09-18 23:37:50

Kubernetes架构

2010-03-11 16:49:55

Linux CPU利用

2020-10-30 09:00:00

JavaScriptJavaScript引前端

2009-06-03 09:11:03

Hibernate工作原理体系结构

2022-06-08 09:56:46

静态链接Linux命令

2011-03-11 09:41:17

JavaGC

2023-05-30 09:07:06

CPU性能火焰图

2023-10-07 08:41:42

JavaJVM

2023-12-07 12:45:58

进程共享数据

2020-10-16 08:30:00

foreach编程语言C#

2011-01-04 18:15:21

2020-05-19 21:40:35

Tomcat架构Connector

2012-02-01 13:42:19

2010-06-04 09:42:47

Linux 测试cpu

2010-06-18 15:49:41

ACPId服务
点赞
收藏

51CTO技术栈公众号