新闻  |   论坛  |   博客  |   在线研讨会
计算机内存如何工作?实例分析
电子资料库 | 2022-08-11 14:01:32    阅读:1370   发布文章

image.png


一、简介

计算机内存 用于存储程序和数据。内存的主要功能是读写。对于随机存取存储器 RAM,它们的主要功能是读取和写入,而对于只读存储器 ROM,主要功能只是读取。一般来说,内存可以是卡、软盘等,它们可以是活动的,也可以是固定的,用来访问数据。

程序是计算机运行的基础,数据是计算机运行的对象。无论是程序还是数据,在内存中都是以二进制形式表示的,统称为信息。在计算机中,内存容量以字节(简称B)为基本单位表示,一个字节由8个二进制位组成。除字节外,存储容量以KB、MB、GB、TB表示(可分别称为K、M、G、T,如128MB可称为128M)。其中,1KB=1024B、1MB=1024KB、1GB=1024MB、1TB=1024GB

目录

一、简介

二、 如何存储和访问数据?

三、电脑内存有什么作用?

3.1 解释计算机内存

3.2 二进制****

3.3 片选&总线

四、例:8086微处理器

五、 技术改进

5.1 什么是直接内存访问 (DMA)?

5.2 DMA 传输模式

5.3 DMA 传输过程

5.4 DMA优缺点

六、计算机内存工作相关问题

二、 如何存储和访问数据?

在了解电子存储器的工作原理之前,有必要大致了解计算机的正常操作

打开电脑。

首先,计算机从 ROM加载数据并执行开机自检(POST),以确保所有主要部件工作正常。作为该测试的一部分,快速读/写操作会检查所有内存地址,以确保内存控制器在内存芯片中没有错误。读写操作是指将数据写入某个位,然后从该位读取。

其次,计算机从ROM加载基本输入/输出系统(BIOS)。BIOS 提供有关存储设备、启动顺序、安全性、自动识别功能和其他基本项目的最基本信息。

计算机将操作系统从硬盘驱动器加载到系统 RAM 中。通常,只要计算机开机,操作系统的关键部分就保存在 RAM 中。这允许CPU立即访问操作系统,从而增强整个系统的性能和功能。

第三,当一个应用程序打开时,它会被加载到 RAM 中。为了节省RAM空间,只加载app程序的基本部分,然后根据需要加载其他部分。加载应用程序后,所有已打开以供在 RAM 中使用的文件。保存文件和关闭应用程序时,会将文件写入指定的存储设备,然后将加载从 RAM 中清除。需要注意的是,如果更改的文件在被擦除之前没有保存到永久存储设备中,它们将会丢失。

在上述操作中,每次加载或打开内容时,都会将其放入RAM中。这只意味着它已被放入计算机的临时存储区域,以便 CPU 可以更轻松地访问信息。CPU从 RAM 请求所需的数据,对其进行处理,然后以连续的周期将新数据写回 RAM。在大多数计算机中,每秒 CPU 和 RAM 之间的数据处理达到数百万次。

image.png


三、电脑内存有什么作用?3.1 解释计算机内存

存储器由存储体、地址译码器、读写控制电路、地址总线和数据总线组成。

半导体存储器就像一个 小抽屉,里面有八个小格子。每个小网格用于存储电荷。电荷通过与其连接的导线传输或放电。很容易理解,如果把电线想象成水管,小格子里的电荷就像水一样。内存中的每个小抽屉都是存储数据的地方,我们称之为单元格。

image.png


图 1. 计算机内存

内存中有许多单元,并且线是并联的。当施加电荷时,电荷将充满所有单元格。当电荷释放时,每个电芯中的电荷都会被释放。这当然不是我们想要的。为了避免这种情况,应该稍微改变内存结构。每个单元格上都有一条控制线。你想把数据放到哪个单元,给这个单元的控制线一个信号。具体来说,这条控制线就像一个开关,开启时电荷可以自由流动,其他电池的控制线上没有信号相互影响。所以只要控制不同单元格的控制线,就可以向每个单元写入不同的数据。同理,如果要从一个单元中获取数据,只需要打开相应的控制线即可。

3.2 二进制****
image.png


图 2. ****

首先,如何控制各单元的控制线并不容易。比如27512个内存芯片里面有65536个单元,每根线都要引出来。这个集成电路必须有超过 60,000 个引脚。显然,这是笨拙的。这时候就形成了一种解码方式。简单介绍一下:一条线可以代表2种状态,2条线可以代表4种状态,以此类推,16条线可以代表65536种状态。

3.3 片选&总线

在最后一个问题之后,让我们关注另一个问题。八根线在哪里与每个细胞连接来自哪里?一般来说,有从电脑连接的,也有与除内存芯片以外的其他部分连接的。在这种情况下,就会出现问题。由于这八根线在内存和计算机之间并不是专用的,如果你总是将一个单元连接到这八根线上,这可能会造成混乱。例如,一个存储单元中的值为0FFH,其他存储单元中的值为00H,很难判断这些线代表的是高电平还是低电平。所以我们必须将它们分开。方法是,当外部导线连接到集成电路的引脚时,它们不直接连接到每个单元,而是在芯片和计算机之间增加一组开关。如果我们真的要向这个内存写入数据或从内存中读取数据,那么只需打开开关即可。

向芯片写入数据,首先选择芯片,然后发出写入信号,开关打开,数据写入芯片。如果要读取,首先选择芯片,然后发送读取信号,并且开关闭合,数据被发送出去。此外,读写信号应连接到另一个存储器。由于片选端不同,在进行读写操作时不会发生冲突。很多人还有一个疑问,这两款芯片会同时被选中吗?只要是精心设计的系统,就不会发生,因为它是通过数学计算来控制的,而不是手动控制的。如果出现同时选择两个芯片的情况,可能是电路故障。

从上面可以看出,用来传输数据的八根线并不是专用的,而是很多组件共用的,所以我们称它们为数据总线。其他 16 条地址线也连接在一起,称为地址总线。

四、 例:8086微处理器

CPU通过地址总线、数据总线和控制总线与存储单元和I/O接口电路相连。那么CPU是如何访问内存中的某个地址的呢?接下来,我们以8086微处理器架构为例,因为它的结构简单,易于介绍。

image.png


图 3. 8086 微处理器

如果CPU要读写内存数据,就必须有电线将它们连接在一起。在计算机中,这种线称为总线。如果你拆开电脑机箱,很容易看到里面有一堆电线。这些线同时发送信号,每根线要么是高电平,要么是低电平。总线按功能不同分为地址总线、数据总线和控制总线。以上图为例,CPU需要读取地址3处的信息,大致分为以下几个步骤:

  • CPU 将物理地址 3 输出到地址线。

  • 控制线需要选择相应的存储设备,然后通知设备将要从中读取数据。

  • 存储设备将数据 8 发送到数据线。

image.png


图 4. 8086 CPU

从这里我们看到 CPU 和存储设备之间存在总线连接。实际上,CPU内部有一条总线。它连接不同的组件,例如寄存器、运算符和控制器。但在计算机中,不同总线的位数不一定相同。比如8086的内部总线是16位,地址总线是20位,数据总线是16位。

还有一个问题,既然8086 CPU是16位的结构,那它怎么能输出20位的物理地址呢?事实上,这很简单。地址加法器是这样解决的:段地址(16位)x 16 +偏移地址(16位)=物理地址(20位),如B800H x 16 + 1111H = B9000H. 如果你不熟悉十六进制,那么我们可以用十进制来描述这个计算。例如,家庭、学校和图书馆在一条直线上。它们之间的距离如下图所示。显示图书馆的距离:图书馆离家200m,其实就是它的物理地址。但现在有一些限制。我们只能通过纸条与朋友交流。可惜纸上只能写2位数字,而且纸的数量没有限制,所以我们约定了:纸1x10+纸2=物理地址,比如纸1上写11,纸上写90纸2,表示学校离家110m,图书馆离学校90m。这两张纸可以表示的最大距离是99x10+99=1089。

image.png


上面提到的是段地址的偏移地址的概念。让我们想象一下,如果8086 CPU的内部总线是20位的,它可以直接表示物理地址。因此,段地址的概念在这里并不重要。更何况未来CPU硬件设计会发生变化,可能会完全不一样。

我们应该知道的是CPU是如何从内存中读取信息的,CPU又是如何知道读取到的信息是普通数据还是需要执行的程序呢?我们知道有很多寄存器在CPU(即用于存储信息)中,它指定了2个寄存器,称为CS,IP(CS用于存储段地址,IP用于存储偏移地址)。它们代表需要执行的当前机器代码的物理地址。在代码执行期间,CPU 将保持 CS 和 IP 的值。例如,对于机器代码的每一次执行,IP都会增加相应的值以指向下一条指令。以此类推,我们可以使用其他寄存器来表示数据的物理地址。因此,内存中的二进制信息对CPU没有任何区别。区分程序和数据取决于寄存器。

五、 技术改进

无论是PC卡还是存储系统中的高速读写盘,都离不开硬件DMA的支持。

image.png


图 5. 8237 DMA 控制器

5.1 什么是直接内存访问 (DMA)?

DMA是指外部设备不经过CPU直接与系统内存交换数据的接口技术。它是一种高速数据传输方式,允许在外部设备和内存之间直接读写数据,既不通过 CPU 也不通过 CPU 干预。

将外设的数据读入内存或将内存的数据传送给外设,一般是通过CPU控制来完成的,例如CPU程序查询或中断方式。使用中断进行数据传输可以大大增加 CPU 利用率。但它有缺点。对于高速I/O设备和批量交换数据的情况,可以使用 DMA 方法解决效率和速度问题。DMA直接在外设和内存之间交换数据,所以数据传输的速度取决于内存和外设的工作速度。

数据传输操作在“ DMA 控制器”下执行。CPU除了在开始和结束时做一点处理外,在传输过程中CPU还可以执行其他任务。这样,CPU 和 I/O 就处于并行运行状态。因此,计算机系统的效率大大提高。

image.png


图 6. DMA 控制器

在实现DMA传输时,总线直接由DMA控制器控制。因此,存在总线控制转移的问题。即在DMA传输之前,CPU应将总线控制权交给DMA控制器,传输完成后,DMA控制器应立即将总线控制权交还给CPU。

5.2 DMA 传输模式

外设可以通过DMA控制器直接访问内存,同时CPU可以继续执行程序。那么DMA控制器和CPU如何同时使用内存呢?一般采用以下三种模式:

(1) 突发模式:停止 CPU 访问。

(2) 循环窃取模式:DMA 每次传输一个字后将总线控制权返回给 CPU。

(3) 透明模式:DMA 和 CPU 交替访问内存。

  • 突发模式

当外围设备请求传输一批数据时,DMA控制器向CPU发出停止信号,请求CPU放弃使用地址总线、数据总线和相关的控制总线。DMA控制器获得总线控制权后,开始数据传输。在传输了一批数据后,DMA 控制器通知 CPU 它可以使用内存并将总线控制权返回给它。图(a)是这种传输方法的时序图。显然,在这个DMA传输过程中,CPU基本处于非工作状态或者待机。

image.png


优点:适用于对数据传输速率要求高的设备的群传。

缺点:在DMA控制器的内部访问阶段,内存性能没有被充分利用,也就是说内存工作周期有相当一部分是空闲的。这是因为外围设备传输的两个数据之间的间隔通常总是大于内存存储周期,即使对于高速 I/O 设备也是如此。例如,一张软盘读取一个8位二进制数需要大约32us,而半导体存储器的存储周期小于0.5us,所以CPU不能使用很多空闲存储周期。

  • 循环窃取模式

当 I/O 设备没有 DMA 请求时,CPU 会按照程序的要求访问内存。一旦 I/O 设备执行 DMA 请求,就会占用一个或几个内存周期。

这种传输方式的分时如下: 

image.png


1)此时CPU不需要访问RAM,例如CPU正在执行一条乘法指令。由于这条指令的执行时间较长,所以I/O访问和CPU访问没有冲突,即I/O设备窃取一两个内存周期对CPU执行没有影响。

2) 当 I/O 设备访问时,CPU 也会访问,这会造成访问冲突。在这种情况下,I/O 设备先取,因为它有访问时间要求,必须在下一个请求到达之前访问之前的 I/O 数据。很明显,I/O设备偷走了一两个内存周期,这意味着CPU延迟了指令的执行。更具体地说,在 CPU 执行访问中指令期间插入 DMA 请求会占用一个或两个内存周期。与停止 CPU 访问的方法相比,循环窃取不仅实现了 I/O 传输,而且极大地利用了内存和 CPU 的效率。这是一种双赢的方法。而I/O设备分流有申请总线控制、建立线路控制、返回总线控制的过程。传输一个字对于 RAM 来说需要一个周期,但对于 DMA 控制器来说一般是 2-5 个存储器周期(取决于逻辑线的延迟)。因此,该方法适用于I/O设备的读写周期大于RAM存储周期的情况。

  • 透明模式

如果 CPU 的工作周期远长于内存访问周期,这种方法可以使 CPU 和 DMA 同时访问的效率最高。假设CPU工作周期为1.2μs,内存访问周期小于0.6μs,那么一个CPU周期可以分为两个子周期C1和C2,其中C1为DMA控制器访问,C2为CPU访问.

这种传输方式的分时如下:

image.png


下图是DMA和CPU交替访问的详细时间。C1 专用于 DMA 控制器,C2 专用于 CPU。

image.png


此方法不需要总线使用权。它是通过C1C2分配的。CPU 和 DMA 控制器各有自己的控制寄存器,例如内部地址寄存器、数据寄存器和读/写信号。在C1周期内,如果DMA控制器有访问请求,可以向总线发送地址、数据等信号。在 C2 周期,如果 CPU 有访问请求,它也会做同样的过程。其实对于总线来说,这是一个由C1和C2控制的多路复用器。这种总线控制权的传输几乎不需要时间,所以DMA传输的效率非常高。

它对CPU就像透明的玻璃,没有任何影响。工作在透明 DMA 模式下,CPU 既不会停止主程序运行,也不会进入待机状态。是一种高效的工作方式,对应的硬件逻辑比较复杂。

5.3 DMA 传输过程
image.png


图 7. DMA 工作流程

  • 要求

CPU 初始化 DMA 控制器并向 I/O 接口发出操作命令,然后 I/O 接口发出 DMA 请求。

  • 回复

DMA控制器确定DMA请求的优先级和屏蔽,向总线裁决逻辑发出总线请求。当 CPU 执行当前总线周期时,可以释放总线控制。此时,总线仲裁逻辑输出总线响应,表示DMA已经响应,并通知I/O接口通过控制器进行DMA传输。

  • 转移

DMA控制器获得总线控制权后,CPU立即停止或只进行内部操作。DMA 控制器输出读写命令来直接控制 RAM 和 I/O 接口。在 DMA 控制器的控制下,数据在存储器和外部设备之间直接传输。此外,还需要提供要传输的数据的起始位置和长度。

  • 上升中断

当指定批次的数据传输完成后,DMA控制器释放总线控制权并向I/O接口发送结束信号。I/O 接口收到后,一方面停止 I/O 设备,另一方面向 CPU 发出中断请求。CPU从不干预状态中解放出来,执行一段检查DMA传输操作码的正确性。最后,CPU 将显示传输结果并执行原始程序。

可以看出,DMA传输方式不需要CPU直接控制传输,也没有在有中断过程时保留和恢复场景的过程。通过硬件,为 RAM 和 I/O 设备开辟了一条直接的数据传输路径,即 DMA。

5.4 DMA优缺点

优点:DMA减少了读取或写入数据块所需的时钟周期,从而提高了系统运行效率。

缺点:作为硬件设备,运行DMA控制会增加成本。DMA 会导致缓存一致性问题。

六、 计算机内存工作相关问题

1.电脑内存的用途是什么?
计算机随机存取存储器 (RAM) 是决定系统性能的最重要组件之一。RAM 为应用程序提供了一个短期存储和访问数据的场所。它存储您的计算机正在积极使用的信息,以便可以快速访问它。

2. 内存在计算机系统中的作用是什么?
计算机内存或随机存取存储器 (RAM) 是您系统的短期数据存储;它存储您的计算机正在积极使用的信息,以便可以快速访问它。您的系统运行的程序越多,您需要的内存就越多。

3. 8086微处理器用在什么地方?
8086微处理器是英特尔于1976年设计的8085微处理器的增强版。它是一个16位微处理器,具有20条地址线和16条数据线,可提供高达1MB的存储空间。它由强大的指令集组成,可轻松提供乘法和除法等操作。

4. 直接内存访问 DMA 是如何工作的?
对于 DMA,CPU 首先启动传输,然后在传输过程中执行其他操作,最后在操作完成时从 DMA 控制器 (DMAC) 接收中断。... DMA 还可用于“内存到内存”复制或移动内存中的数据。

5、为什么DMA比CPU快?
在所有数据传输模式中,数据传输的直接内存访问或 DMA 模式速度更快。...设备通过 DMA 控制器请求 cpu 保存其数据、地址和控制总线,以便设备可以直接将数据传输到内存或从内存传输数据。


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客