C1103A-2 H9971S500
内存分为只读存储器(ROM)、随机读写存储器(RAM)以及高速缓冲存储器(Cache),本文将针对内存的相关原理进行总结
内存的种类
ROM
ROM工作原理及特性
ROM是非易失的存储器,掉电后不丢失,但是一旦存储资料便无法改变或删除。经常存放一些比较关键的内容,例如BIOS
RAM
DRAM工作原理及特性
基本工作原理
DRAM实际就是一个电容和二极管组成的二维矩阵,下图展示了DRAM的电气结构,一个4*4的矩阵。矩阵的每一个节点代表一个二进制bit。具体表示如下
- 当电容充电,代表1
- 当电容未充电,代表0
由于晶体管有漏电电流,因此DRAM需要动态刷新,且掉电后数据挥发,所以被成为动态存储。
读写操作2
由于DRAM电路是矩阵形式,所以操作也是二维操作,先定位行,再定位列,接下来我们针对内存中的读写操作进行总结。
读操作
DRAM相关特性
优点
与SRAM相比,DRAM结构简单,一个bit需要一个二极管一个电容进行表示,所以存储密度高,成本较低。
缺点
访问速度慢,耗电量大
内存结构3
这里我们以2GB的DDR3内存为例,对内存结构进行讲解,内存结构图如下所示:
Rank
:内存的一排,上面的内存由两个rank组成,每个rank有8个clipClip
:颗粒,一个rank包含8个颗粒,每个128MB,共提供1GB内存Bank
:存储数据的矩阵单元,一个颗粒8个bank,根据行列定位随机存储的数据块Cell
:单元,用于存储一个数据单位,DDR3为8bit,如果CPU是32位,那么可以一次读写4个cell
内存特点
- 速度较快(1.3GHz左右)
- 价格较高
内存单元
定义
如果我们把内存看作是一个大的存储箱,那么内存单元就是这个存储箱中一个个小隔间,内存单元是我们唯一的一种使用内存的方式。内存单元是可以寻址的,我们在计算机中的地址实际就是指向一个内存单元。一般来说,内存单元是字节寻址的,即内存的划分粒度为字节,一个内存单元的大小是一个字节,我们可以访问内存中单个的字节。这个是由计算机的硬件决定的,你可以将内存想象为一个$n\times 8$的矩阵电路,$n$代表的是地址数,根据CPU总线数决定;而$8$代表一次能够读取8个位,即一个字节。字节寻址的机器又叫做“字节机”。对于字节寻址的内存,我们需要注意如下两点:
- 一个地址总是指向一个字节的空间
- 一个字是一个字节组,根据CPU数据总线的大小,可以是2、4或8个字节
计算
假设我们现在有一个指针nextfree,显示下一个空闲的内存单元的地址,其值为0xff105000,而我们需要存储4096字节的数据。那么存储完后,nextfree的值是多少?
答:由于一个内存单元大小为一个字节,而一个地址指向一个内存单元大小的空间,那么我们的计算非常简单,公式如下:
所以$\textrm{nextfree}=\textrm{0xff105000}{H}+4096{D}=\textrm{0xff106000}$
FIFO
FIFO是FPGA设计中常用的IP核,即一个先进先出的内存结构,可以分为同步(读写同时钟)与异步(读写时钟分开)两种。最重要的功能就是进行缓存。异步FIFO还有跨时钟域的作用。FIFO中关键信号如下:
- 写时钟/数据/使能
- 读时钟/数据/使能
- 复位信号
- 空/满信号(抑制读写)