我们从2011年坚守至今,只想做纯粹的技术论坛,请不要发布和技术无关的话题。  本站有两万多份高大上的PCB和原理图下载,每日更新中,欢迎常回来看看

 找回密码
 立即注册
搜索
查看: 2012|回复: 8

[技术讨论] 微处理器工作原理

[复制链接]

1362

主题

0

回帖

633

积分

二级逆天

积分
633

社区居民忠实会员社区劳模原创达人终身成就奖原创先锋奖优秀斑竹奖

QQ
发表于 2015-11-10 20:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
微处理器工作原理


1. 引言 2. 微处理器的结构 3. 微处理器指令 4. 微处理器的性能和发展趋势
引言
您在浏览本页面时使用的计算机便通过微处理器来完成其工作。微处理器是所有标准计算机的心脏,无论该计算机是桌面计算机、服务器还是笔记本电脑。您正在使用的微处理器可能是奔腾、K6、PowerPC、Sparc或者其他任何品牌和类型的微处理器,但是它们的作用大体相同,工作方式也基本类似。
如果您曾经疑惑计算机中的微处理器是干什么用的,或者对各种类型的微处理器之间的差异感到迷惑,请继续阅读下面的内容。在本文中,您将了解到简简单单的数字逻辑电路技术如何让计算机完成诸如玩游戏或是对文档进行拼写检查的工作。


<--
-->Intel4004
芯片

微处理器(又称为CPU或中央处理单元)是装配在单颗芯片上的一个完整的计算引擎。第一颗微处理器是1971年问世的Intel 4004。4004的能力不算强大_它只能执行加减运算,而且每次只能对4位的数据进行运算。但是它是一个很奇妙的产品,因为所有东西都集成在一颗芯片中。在4004出现之前,工程师们要么使用一堆芯片来制造计算机,要么使用零散部件来搭建出计算机(一次连接一个晶体管)。4004曾被用来生产第一款便携式电子计算器。


<--
-->Intel8080

使计算机进入寻常百姓家的第一款微处理器是Intel 8080,它是一个完整的8位计算机芯片,于1974年问世。而迅速在市场中走红的第一款微处理器则是1979年推出的Intel 8088,大概在1982年左右面世的IBM PC便使用了此微处理器。如果您熟悉PC市场及其历史,便会知道PC市场经历了从8088到80286、80386、80486,再到奔腾、奔腾II、奔腾III乃至奔腾4的发展过程。所有这些微处理器都是由英特尔制造的,而且都是对8088基本设计的改进。奔腾4可以执行最初的8088所能运行的所有代码,但是它的速度是8088的5000倍。
微处理器的发展过程:Intel
下表可帮助您了解 Intel 在不同时间推出的不同处理器之间的差异。


名称

日期

晶体管数量

微米

时钟频率

数据宽度

MIPS

8080

1974

6,000

6

2 MHz

8位

0.64

8088

1979

29,000

3

5 MHz

16位
8
位总线

0.33

80286

1982

134,000

1.5

6 MHz

16位

1

80386

1985

275,000

1.5

16 MHz

32位

5

80486

1989

1,200,000

1

25 MHz

32位

20

奔腾

1993

3,100,000

0.8

60 MHz

32位
64
位总线

100

奔腾 II

1997

7,500,000

0.35

233 MHz

32位
64
位总线

~300

奔腾 III

1999

9,500,000

0.25

450 MHz

32位
64
位总线

~510

奔腾 4

2000

42,000,000

0.18

1.5 GHz

32位
64
位总线

~1,700

奔腾 4“Prescott”

2004

125,000,000

0.09

3.6 GHz

32 位
64
位总线

~7,000

数据来自Intel微处理器快速参考指南和TSCP基准测试成绩
与此表有关的信息:

什么是芯片?
芯片又称集成电路。通常,它是一个很小、很薄的硅片,上面蚀刻有组成微处理器的晶体管。芯片可能只有2.5厘米见方大小,但是却包含几千万个晶体管。较简单的处理器可能在几毫米见方的芯片上刻有几千个晶体管。
[list=disc][li]日期是该款处理器首次推出的年份。许多处理器会在首次发布之后在多年中不断推出具有更高时钟频率的型号。 [/li][li]晶体管数量是指芯片上晶体管的数量。可以看到,芯片上包含的晶体管数量在逐年稳步上升。 [/li][li]微米是指芯片上最细的电路的宽度(单位为微米)。可以用人的头发做个比较,头发的宽度为100微米。随着芯片外形尺寸不断缩小,晶体管数量却在不断增加。 [/li][li]时钟频率是指芯片的最大时钟速度。我们将在下一节中详细介绍时钟频率。 [/li][li]数据宽度是指 ALU的宽度。8位的ALU可以对两个8位(8比特)数字进行加减乘除运算,而32位的ALU可以计算32位的数字。8位ALU如果要对两个 32位数字进行加法操作,必须执行四条相加指令,而32位ALU则只需要执行一条指令。很多情况下,外部数据总线的宽度与ALU相同,但也有不同的情况。8088的ALU为16位,而总线为8位,而现代的奔腾处理器的数据总线宽度为64位,ALU为32位。 [/li][li]MIPS代表“每秒百万条指令”,是衡量CPU性能的粗略标准。对于现代 CPU的许多工作,MIPS指标在很大程度上已经失去了意义,但是您可以将它作为一个大致的量度,根据本栏中的数据来了解CPU的性能强弱。 [/li]
从本表中可以看到,总体来说,时钟频率和MIPS之间存在一定关系。最大时钟频率与制造工艺和芯片内的延迟密切相关。此外,在晶体管数量和MIPS之间也存在一定联系。例如,8088的时钟频率为5MHz,但是只能以0.33MIPS的速度执行指令(大约每15个周期执行1条指令)。现代的处理器经常可以在每个时钟周期内执行两条指令。这种能力改进与晶体管的数量有直接关系,我们将在下一节中对此加以讨论。
微处理器的结构
为了理解微处理器的工作原理,首先看看它的内部结构和了解其工作逻辑会很有帮助。在这个过程中,您还可以了解到汇编语言——微处理器的固有语言——以及工程师们为了提高处理器速度所做的大量工作。
微处理器执行一组机器指令,这组指令可向处理器告知应执行哪些操作。微处理器就会根据指令执行三种基本工作: [list=disc][li]通过使用ALU(算术/逻辑单元),微处理器可以执行数学计算。例如:加法、减法、乘法和除法。现代的微处理器包含完整的浮点处理器,它可以对很大的浮点数执行非常复杂的浮点运算。 [/li][li]微处理器可以将数据从一个内存位置移动到另一个位置。 [/li][li]微处理器可以做出决定,并根据这些决定跳转到一组新指令。 [/li]
微处理器能够执行许多非常复杂的工作,但是所有工作都属于这三种基本操作的范畴。下图显示了一个能够执行上述三种操作的非常简单的微处理器:


这是一个进行了最大程度简化的微处理器。此微处理器具有: [list=disc][li]一条地址总线(总线宽度可以8位、16位或32位),用于向内存发送一个地址 [/li][li]一条数据总线(总线宽度可以是8位、16位或32位),能够将数据发送到内存或从内存取得数据 [/li][li]一条RD(读)和WR(写)线路,告诉内存它是希望写入某个地址位置还是获得某个地址位置的内容 [/li][li]一条时钟线路,将时钟脉冲序列发送到处理器 [/li][li]复位线路,用于将程序计数器重置为零(或者其他内容)并重新开始执行 [/li]
在本例中,我们假定地址和数据总线的宽度都是8位的。
以下是这个简单的微处理器的各个组成部分: [list=disc][li]寄存器A、B和C就是一些用触发器制造的锁存器。(有关详细信息,请参见布尔逻辑的应用一文的“边缘触发锁存器”部分。) [/li][li]地址锁存器与寄存器A、B和C极其类似。 [/li][li]程序计数器也是一个锁存器,但是它有一种额外的能力,也就是能够在执行每条语句后将计数器加一,并在被告知应进行重置时将计数器重置为零。 [/li][li]ALU可以像一个8位加法器一样简单(有关详细信息,请参见布尔逻辑的应用一文中有关加法器的部分),也可以较为复杂,能够对8位的值进行加法、减法、乘法和除法运算。我们假定是后面一种加法器。 [/li][li]测试寄存器是一种特殊的锁存器,可以存放在ALU中执行的比较运算的结果。ALU通常可以比较两个数字,并确定它们是否相等以及其中一个数字是否大于另一个数字等。测试寄存器通常还可以保存加法器上一次计算产生的进位。它将这些值存放在触发器中,随后指令解码器可以使用这些值做出决定。 [/li][li]图中有六个标记有“3-State”(三态)的方框。它们是三态缓冲区。三态缓冲区可以输出1、0或者彻底断开其输出(可以将其想像为一个将输出线从电路中彻底断开的开关)。三态缓冲区能够将多种输出连接到电路中,但是线路上的某一个输出实际上代表的是1或0。 [/li][li]指令寄存器和指令解码器负责控制所有其他组件。 [/li]

有用的文章
如果您不熟悉数字逻辑电路,以下文章可以帮您理解这部分内容:
·  位和字节
·  布尔逻辑的应用
·  电子门工作原理

虽然没有显示在此图中,但实际上存在一些来自指令解码器的控制线,它们的作用是: [list=disc][li]通知A寄存器锁存当前在数据总线上传递的值 [/li][li]通知B寄存器锁存当前在数据总线上传递的值 [/li][li]通知C寄存器锁存当前由ALU输出的值 [/li][li]通知程序计数器寄存器锁存当前在数据总线上传递的值 [/li][li]通知地址寄存器锁存当前在数据总线上传递的值 [/li][li]通知指令寄存器锁存当前在数据总线上传递的值 [/li][li]通知程序计数器进行递增 [/li][li]通知程序计数器重置为零 [/li][li]激活所有六个三态缓冲区(六条单独的线路) [/li][li]通知ALU要执行的操作 [/li][li]通知测试寄存器锁存ALU的测试位 [/li][li]激活RD线路 [/li][li]激活WR线路 [/li]
来自测试寄存器和时钟线路(以及指令寄存器)的数据位会进入到指令解码器中。
RAM和ROM
上一节中我们讨论了地址和数据总线,以及RD和WR线路。这些总线和线路连接到RAM或ROM——通常是同时连接到二者。在我们作为例子的微处理器中,有一个宽度为8位的地址总线和一个宽度为8位的数据总线。也就是说,该微处理器可以寻址(28) 256个字节的内存空间,并且可以向内存读取或写入8位的数据。我们假定这个简单的微处理器有128字节的ROM,其地址从0开始,此外还有128字节的RAM,其地址从128开始。


<--
-->ROM
芯片

ROM代表只读内存。ROM芯片使用永久性的预设字节进行了编程。地址总线通知ROM芯片应取出哪些字节并将它们放在数据总线上。当RD线的状态更改后,ROM芯片会将选择的字节放在数据总线上。


<--
-->RAM
芯片

RAM代表随机存取内存。它包含多个字节的信息,微处理器可以读取或写入这些字节,而具体操作取决于信号是由RD线路给出的还是 WR 线路给出的。RAM 芯片的一个缺点是,在电源中断后,保存的所有信息都会消失。这也就是为何计算机需要使用 ROM 的原因。
顺便说一下,几乎所有计算机都包含一定数量的 ROM(可以制造出不包括任何RAM的简单计算机——许多微控制器便做到了这一点,方法是将少量的RAM字节放在处理器芯片自身中——但是,通常不可能制造出不包含任何ROM的计算机)。在PC中,ROM称作BIOS(基本输入输出系统)。在微处理器启动时,它开始执行在BIOS中找到的指令。BIOS指令会执行对计算机中的硬件进行测试这样的工作,然后访问硬盘以读取启动扇区(有关详细信息,请参见硬盘工作原理)。该启动扇区是另一个小型程序,在将其从磁盘中读出后,BIOS将它存储在RAM中。然后,微处理器开始从 RAM中执行启动扇区的指令。启动扇区程序会通知微处理器将其余指令从硬盘读入RAM,微处理器随后又会执行这些指令,以此类推。这就是微处理器加载和执行整个操作系统的过程。
微处理器指令
虽然前面例子中的微处理器非常简单,但是它仍然可以执行相当多的指令。指令集通过位模式的方式实现,每一个位模式在加载到指令寄存器中后都有不同的含义。由于人们不能很好记住这些位模式,所以定义了一些简短的单词来表示不同的位模式。这些单词的集合称作处理器的汇编语言。汇编程序可以将这些单词轻松翻译成它们的位模式,然后会将汇编程序的输出放在内存中供处理器执行。
以下是设计人员可以为例子中的微处理器建立的一组汇编语言指令: [list=disc][li]LOADA mem——将某个内存地址的数据加载到寄存器A中 [/li][li]LOADB mem——将某个内存地址的数据加载到寄存器B中 [/li][li]CONB con——将一个常量值加载到寄存器B中 [/li][li]SAVEB mem——将寄存器B的内容保存到某个内存地址 [/li][li]SAVEC mem——将寄存器C的内容保存到某个内存地址 [/li][li]ADD——将A和B相加并将结果保存在C中 [/li][li]SUB——将A和B相减并将结果保存在C中 [/li][li]MUL——将A和B相乘并将结果保存在C中 [/li][li]DIV——将A和B相除并将结果保存在C中 [/li][li]COM——将A和B进行比较并将结果保存在测试寄存器中 [/li][li]JUMP addr——跳转到某个地址 [/li][li]JEQ addr——如果相等则跳转到某个地址 [/li][li]JNEQ addr——如果不相等则跳转到某个地址 [/li][li]JG addr——如果大于则跳转到某个地址 [/li][li]JGE addr——如果大于或等于则跳转到某个地址 [/li][li]JL addr——如果小于则跳转到某个地址 [/li][li]JLE addr——如果小于或等于则跳转到某个地址 [/li][li]STOP——停止执行 [/li]
  • 打卡等级:以坛为家II
  • 打卡总天数:116
  • 打卡月天数:0
  • 打卡总奖励:405
  • 最近打卡:2026-09-14 11:04:54

33

主题

2928

回帖

5854

积分

二级逆天

积分
5854

社区居民忠实会员社区劳模最爱沙发原创达人终身成就奖特殊贡献奖优秀斑竹奖

QQ
发表于 2015-11-11 08:40 | 显示全部楼层
回复

使用道具 举报

  • 打卡等级:以坛为家III
  • 打卡总天数:742
  • 打卡月天数:0
  • 打卡总奖励:2905
  • 最近打卡:2026-08-20 09:00:04

3

主题

9037

回帖

1万

积分

三级逆天

积分
13662

社区居民终身成就奖特殊贡献奖原创先锋奖

QQ
发表于 2020-12-11 08:52 | 显示全部楼层
回复

使用道具 举报

  • 打卡等级:初入少年
  • 打卡总天数:7
  • 打卡月天数:0
  • 打卡总奖励:26
  • 最近打卡:2025-11-10 15:56:06

29

主题

1127

回帖

1568

积分

二级逆天

积分
1568

终身成就奖特殊贡献奖原创先锋奖

发表于 2023-2-15 08:47 | 显示全部楼层
回复

使用道具 举报

  • 打卡等级:以坛为家III
  • 打卡总天数:448
  • 打卡月天数:0
  • 打卡总奖励:2425
  • 最近打卡:2026-09-06 09:58:08

43

主题

1081

回帖

2564

积分

Allegro261021初级班

积分
2564

终身成就奖

发表于 2026-7-5 08:57 | 显示全部楼层
回复

使用道具 举报

  • 打卡等级:初入少年
  • 打卡总天数:1
  • 打卡月天数:0
  • 打卡总奖励:1
  • 最近打卡:2026-07-11 15:26:25

0

主题

5

回帖

2

积分

一级逆天

积分
2
发表于 2026-7-11 15:26 | 显示全部楼层
回复

使用道具 举报

  • 打卡等级:常住青年
  • 打卡总天数:41
  • 打卡月天数:3
  • 打卡总奖励:65
  • 最近打卡:2026-11-09 11:01:02

1

主题

641

回帖

200

积分

二级逆天

积分
200
发表于 2026-7-12 15:12 | 显示全部楼层
回复

使用道具 举报

  • 打卡等级:常住青年
  • 打卡总天数:27
  • 打卡月天数:0
  • 打卡总奖励:44
  • 最近打卡:2026-08-15 16:46:22

22

主题

259

回帖

289

积分

二级逆天

积分
289
发表于 2026-7-12 20:42 | 显示全部楼层
回复

使用道具 举报

  • 打卡等级:以坛为家III
  • 打卡总天数:732
  • 打卡月天数:9
  • 打卡总奖励:2620
  • 最近打卡:2026-11-10 09:02:57

3

主题

2456

回帖

5409

积分

二级逆天

积分
5409

终身成就奖特殊贡献奖原创先锋奖

发表于 2026-7-13 00:10 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请举报投诉

本站所有资料仅限参考学习交流,PCB原理图源码等所有资料不保证准确没问题,请不要用作生产。否则后果自负。

闽公网安备35062302000276号 | 闽ICP备2024076463号-1 | 论坛技术支持QQ群171867948 | 论坛问题,充值问题请联系QQ1308068381

平平安安
TOP
快速回复 返回顶部 返回列表