很久很久以前,有这样一个世界,这个世界有着现实世界一样的元素:那里的人又有一个别的名字叫做“数据”,人有0有1;人们也有住房,这些住房在这个世界叫做“存储器”;地上有路,这些路叫做“总线”;这里也有行政部门,比如公安局之类的,又有个名字叫“寄存器”;有中央政府,政府又叫做“中央处理器”等。为了让大家清楚这些设定,我画了一个图如下。
用这些设定可以形容很多“微机世界”发生的事:比如“人走路回家(人进门)"就是“数据经过总线存入存储器中(存数据)”的过程,“人出门”就是“读数据”的过程;比如有人大三还不知道的一个问题:“寄存器和存储器的区别是什么”,从这个比喻就很直观能明白,住房(存储器)和行政机关(寄存器)里都是人,但是一个是住人的(存储数据),一个是管人的(操作数据)的。类似于这种类比和面试问题这篇文章中会用蓝色标出。接下来,我将将详细介绍“微机世界”的各个元素。
我们把存储器比作住房,住房又可以按照不同依据分为很多类,分类依据有工艺、楼层连接方式以及材料,微机世界里对应的是“电梯房/楼梯房"、“楼梯/电梯”数量、读写特点和易失性质
现实世界里,装了电梯住房叫电梯房,没装电梯的则称为楼梯房;在微机世界里,住房(存储器)中的电梯房又有一个名字叫“双极性”存储器,楼梯房又有一个名字叫“MOS”型存储器。二者的区别如下图所示,黑体字是现实世界的比喻,蓝色字是微机世界的含义,红色是区别的指标。
现实世界中,在建筑工地和施工单位,常见一种叫彩钢板房,能快速拆卸、搭建和移动;也有一种最常见的居民区的住房——土砖房,固定且不容易更改;在微机世界里,住房中的彩钢板房又叫作RAM(随机存取存储器),土砖房又叫作ROM(只读存储器),二者的区别如下图所示。
下面是几道嵌入式考研复试常问的几个关于存储器的问题:
基于上面的设定就相当清楚了,最主要的是以下两个方面的区别:
(1)读写能力和速度:RAM叫随机存储器(彩钢板房),允许数据被快速读取和写入(可快速搭建和拆卸),是动态存储,需要不断刷新才能保持数据; ROM叫只读寄存器(土砖房),信息一次缓慢写入后只能被读出(搭好后就不好拆了),是预先编程,写入数据通常在制造过程中完成。
(2)存储数据的性质:RAM是易失性的存储器,当电源关闭时(发生自然灾害),存储在RAM中的数据会丢失(房子容易塌),因此用来临时存储正使用的数据(临时住人); ROM是非易失性存储器,它在电源关闭后可以保存数据,因此用来存储固件或不会频繁改变的软件(长期住人)。
基于上面的设定,假设你有一块地,这块地划分成两个部分,一半用来建了一座土砖房(ROM),另一半建了一座建彩钢板房(RAM)。尽管两类房子所在同一片土地上,门牌号相同(共用地址空间),但当你(数据)如果想去两座房子中的一座时,一定不会走错,因为它们物理上是分开的,而且各自的房门都有一把锁,每把锁都有政府(CPU)发的独一无二的钥匙(控制信号)。彩钢板房的开门钥匙型号是RD(RD信号有效),土砖房的开门钥匙型号是PSEN(PSEN有效),在任何时候一个人开门时只会有一把锁打开(程序执行时只能有一个信号有效),因此即便有相同的地址也不会发挥数据冲突。
基于上面的设定,如果住房(存储器)的容量不够用,居民(数据)们就需要更多的空间来“居住”。以下是几种扩展“住房”空间的方法:
(1)位扩展(增加每个存储单元可容纳的位数):现有房子增加几层或在一层里增加房间;
(2)字扩展(增加存储单元的数量):增加新房子;
(3)字位同时扩展(同时增加存储器的存储单元数量和每个存储单元的位数):增加新房子的同时把老房子的房间或楼层增加;
(1)容量(住房的大小),容量越大的房子(存储器),可以住(储存)更多的人(数据);
(2)速度(住房的便利程度),比如电梯房(双极性存储器)与楼梯房(MOS存储器)的差异,决定了居民(数据)进出的速度。电梯房的居民可以更快地进出,就像双极性存储器的数据访问速度通常比MOS存储器快。
(3)每位价格(每平米价格),存储器的每位价格是指每存储一个数据位的成本。成本效益高的存储器在购买和维护时更加经济。
这些因素共同决定了微机世界中“住房区”(存储器)的整体性能和适用性,影响着居民(数据)的居住体验。
(1)集成度(居住密度):
1)动态RAM (DRAM): 就像设计为"集体宿舍"式的彩钢板房,每个房间虽然相对较小,但整个宿舍可以容纳很多居民(数据),像这样很多的房间被紧凑地放置在同一块地上,所以具有更高的居住密度。
2)静态RAM (SRAM): 像是由几套独立房间构成的"精品公寓"式的彩钢板房,每个房间都较大,意味着整个建筑容纳的居民(数据)数量较少,但是每个房间都更为宽敞,提供更快的服务(速度)。
(2)功耗(能源消耗):
1)动态RAM (DRAM): 这个"宿舍"需要定期的维修和检查(刷新),因此虽然造价低,但在长期运营中会消耗更多的能源。
2)静态RAM (SRAM): 精品公寓因其设计优良,不需要频繁的维护,从而在能源消耗上更为高效。
(3)价格(建设和维护成本):
1)动态RAM (DRAM): 由于其结构简单,建造和维护成本都相对较低,因此对于有限预算的住房需求(存储需求)来说是一个经济的选择。
2)静态RAM (SRAM): 高级的设计和更少的维护需求使得它的建设成本高昂,也反映在了它的售价上。
(4)行列地址传输顺序(访问逻辑):
1)动态RAM (DRAM): "宿舍"的居民(数据)需要先报告他们的楼层(行地址),然后是他们的房间号(列地址),这样的分步过程会使得进出宿舍的速度相对较慢。
2)静态RAM (SRAM): 在这个"精品公寓"里,因为房间不多,居民(数据)可以几乎同时报告他们的楼层(行地址)和房间号(列地址),使得他们进出公寓的速度更快。
总的来说,在微机世界里,动态RAM像是为大量居民设计的经济型“宿舍”式彩钢板房,而静态RAM则是较少居民的“高端公寓”式彩钢板房。
电源正常:
城市(单片机)需要稳定的电力供应来维持其行政机构(中央处理器),交通系统(数据总线),公共服务设施(存储器)和其他基础设施的运作。如果电源供应不稳定或中断,那么城市的所有活动都会停止,灯会熄灭,交通会停滞,办公室(寄存器)将无法工作。因此,单片机需要稳定的电源来确保其内部组件能够正常工作。时钟正常:
时钟在单片机中相当于城市里的时钟塔,它为所有活动提供节拍和顺序。政府(CPU),居民(数据),和交通工具(指令)根据时钟的节拍进行同步移动。如果时钟塔停止工作或者不准确,那么公交车(数据传输)可能会错过站点,行政流程会混乱,居民和官员可能会错过重要的会议。同样,单片机需要准确的时钟信号,以保持内部操作的同步。复位正常:
复位对于单片机来说,就像是城市的紧急重置按钮。如果城市(系统)在一场大灾难(错误或故障)之后需要重新开始,市长(复位电路)可以使用这个按钮来重启所有的服务,确保每个人都回到初始位置,所有的系统都重新以正确的状态开始运作。同样地,单片机的复位功能确保在启动时或遇到错误时能将系统重置到初始状态,从而可以开始或重新开始正常操作。堆栈(stack)是是行政官员(CPU)用来暂时存放文件或数据的的高楼,每个楼层代表堆栈中的一个存储位置,这座楼遵循“后进先出”(LIFO)的原则(一种按照“先进后出”为原则的线性表数据结构),这意味着最后放进去的文件会是第一个被取出来。行政官员在处理大量紧急任务时,可能需要临时存放一些文件以便稍后处理,此时他们就会把这些文件放在堆栈的顶层。待处理完当前任务后,官员会从堆栈的顶层取回文件继续工作。
堆栈指针(stack pointer)是告诉行政官员(CPU)堆栈中最新文件所在楼层的电子显示屏。这个显示屏始终指向堆栈的顶部,(是存放堆栈的栈顶地址的寄存器(8位),系统复位后SP为07H)确保行政官员能够迅速找到最新的文件。每当一个新文件被置于堆栈上时,显示板的指示就会上升一个楼层,每当一个文件被取走时,显示板就会下降一个楼层。这样,无论何时行政官员都能通过这个显示板轻松地找到和访问堆栈中的数据。
在MCS-51系统的单片机的城市中,存在几个特别的建筑物,这些建筑物不像普通的住宅,而是用来应对特殊情况的关键设施。这些建筑物的数量和位置是固定的,它们的地址被所有城市居民(数据和中央处理器)所知, 这些建筑物代表的是中断向量,也就是在特定情况下,中央处理器会转去执行紧急事件的地点。在标准的8051单片机城市中,有五个这样的特殊建筑物。
复位入口(Reset Vector) - 地址0000H
这就像是城市的中心广场,每当城市重新启动或“醒来”时,所有的活动都会从这里开始。这个地址是中央政府(CPU)开始执行程序的地方。外部中断0入口(External Interrupt 0 Vector) - 地址0003H
这个地点就像紧急服务中心,当城市的外围防御系统(比如边界感应器)检测到需要立即反应的情况时,紧急服务人员会立刻集结在这里准备应对。定时器0溢出入口(Timer 0 Overflow Interrupt Vector) - 地址000BH
可以想象成一个有计时功能的大钟楼,当计时器到时间了,就会有一个信号告诉中央政府该做某件事情了。外部中断1入口(External Interrupt 1 Vector) - 地址0013H
这又是另一个紧急服务中心,负责处理另一边界区域的紧急事件。定时器1溢出入口(Timer 1 Overflow Interrupt Vector) - 地址001BH
这是另一座钟楼,有着自己的计时任务和信号,独立于第一个计时器工作。串行通讯入口(Serial Communication Interrupt Vector) - 地址0023H
这可以比作是邮局或通信中心,当远方的消息抵达时(串行通讯完成时),中央政府会被通知去处理这些消息。这些建筑物的作用是让中央政府(中央处理器CPU)能够在紧急情况发生时迅速响应,不必在城市中漫无目的地寻找下一个行动方向。当特定的事件发生时,它们提供了一个预先定义好的位置,允许中央政府快速定位并执行必要的程序来处理事件,这样保证了城市(单片机系统)可以高效且有序地运行。