470 likes | 611 Views
嵌入式系统与结构 第六课 嵌入式系统的存储器. 本章内容. 存储器分类 按照写入能力和存储永久性进行区分 嵌入式系统存储器类型 常用存储器类型 高级 RAM 类型 嵌入式系统存储器组合 存储器的层次与 Cache. 概述. 嵌入式系统的功能涵盖 处理功能 利用处理器实现 通信 处理器和存储器之间的数据传递 用总线来实现 称为接口技术 存储功能 用 Memory 实现. m × n 存储器. …. M 个字. …. 每个字 n 位. memory external view. r/w.
E N D
嵌入式系统与结构 第六课 嵌入式系统的存储器
本章内容 • 存储器分类 • 按照写入能力和存储永久性进行区分 • 嵌入式系统存储器类型 • 常用存储器类型 • 高级RAM类型 • 嵌入式系统存储器组合 • 存储器的层次与Cache
概述 • 嵌入式系统的功能涵盖 • 处理功能 • 利用处理器实现 • 通信 • 处理器和存储器之间的数据传递 • 用总线来实现 • 称为接口技术 • 存储功能 • 用Memory实现
m × n 存储器 … M个字 … 每个字n位 memory external view r/w 2k × n read and write memory enable A0 … Ak-1 … Qn-1 Q0 什么是存储器 • 存储大量的位(bit) • m x n: m个字,每个字n 位 • k = Log2(m) 地址输入信号 • 或者 m = 2^k 个字 • e.g., 4,096 x 8 存储器: • 32,768 bits • 12 地址输入信号 • 8 输入输出数据信号 • 存储器访问 • r/w: 选择是读出还是写入 • enable: 只有当确认后才能进行读写操作 • multiport: 同时对多个位置进行访问 • 处理器的寄存器文件结构
本章内容 • 存储器分类 • 按照写入能力和存储永久性进行区分 • 嵌入式系统存储器类型 • 常用存储器类型 • 高级RAM类型 • 嵌入式系统存储器组合 • 存储器的层次与Cache
写入能力和存储永久性 • 传统ROM/RAM区分方式 • ROM • 只读,断电时数据仍然保存 • RAM • 读写,断电时数据丢失 • 传统划分的缺陷 • 高级 ROMs也能写入 • e.g., EEPROM • 高级 RAMs也能断电保存 • e.g., NVRAM • 写入能力 • 存储器写入数据的方式和速度 • 存储永久性 • 数据写入后存储器保存数据的能力
permanence Storage Mask-programmed ROM Ideal memory OTP ROM Life of product EPROM Tens of EEPROM FLASH years Battery NVRAM Nonvolatile life (10 years) In-system SRAM/DRAM programmable Near Write zero ability During External External External External In-system, fast fabrication programmer, programmer, programmer programmer writes, 1,000s OR in-system, OR in-system, only one time only unlimited 1,000s block-oriented of cycles cycles writes, 1,000s of cycles of cycles 写入能力和存储永久性,延坐标轴显示了相对的程度 写入能力和存储永久性
本章内容 • 存储器分类 • 按照写入能力和存储永久性进行区分 • 嵌入式系统存储器类型 • 常用存储器类型 • 高级RAM类型 • 嵌入式系统存储器组合 • 存储器的层次与Cache
Internal view 8 × 4 ROM word 0 3×8decoder enable word 1 word 2 A0 word line A1 A2 data line programmable connection wired-OR Q3 Q2 Q1 Q0 ROM: “Read-Only” Memory • 需要在放入嵌入式系统之前进行“编程” • 使用 • 保存GPP的软件 • 程序指令可以是一个或多个ROM字 • 保存系统需要的常量数据 • 组合电路实现
OTP ROM: 一次可编程ROM • 由用户进行可编程连接 • 很低的写入能力 • 需要编程器,并且只能写入一次 • 非常高的存储永久性 • 采用熔丝技术 • 一般应用在最终产品中 • 便宜,难以修改
0V floating gate drain source (a) +15V source drain (b) 5-30 min drain source (c) (d) EPROM: 可擦除的可编程 ROM • 可编程部件是一个MOS晶体管 • 晶体管具有浮动栅 • (a)负电荷形成一个源和漏的沟道保存逻辑1 • (b)栅极大的正电压引起负电荷移出沟道,得到浮动栅中的一个陷阱来保存逻辑0 • (c) (擦除) 紫外线照射浮栅引起负电荷从浮栅返回沟道保存逻辑1 • 更好的写入能力 • 能够擦除和重编程上千次 • 存储永久性降低 • 程序能够保存10年以上 • 在设计开发阶段使用 .
EEPROM: 电可擦除可编程 ROM • 电可编程和擦除 • 要使用比工作电压高的电压进行编程 • 可编程或擦除独立的字 • 更好的写能力 • 能够进行系统内编程 • 由于擦除和编程,写入时速度较慢 • 可以擦除上万次 • 存储永久性与EPROM 相同(大约 10 years) • 使用更方便,但是成本更贵 • 应用于电话机,身份证等
Flash 存储器 • EEPROM的扩展 • 相同的浮栅原理 • 相同的写入能力和存储持久性 • 快速擦除 • 可一次擦除一个块数据,而不是一次一个字。 • 块容量典型为数千个字节 • 写单字时可能更慢 • 必须读一个数据块,然后更新字,再将整个块回写。 • 嵌入式系统中用非易失存储器存储大数据 • e.g., digital cameras, TV set-top boxes, cell phones
internal view I3 I2 I1 I0 external view r/w 2k × n read and write memory 4×4 RAM enable 2×4 decoder enable A0 … A0 A1 Ak-1 Memory cell … rd/wr To every cell Qn-1 Q0 Q3 Q2 Q1 Q0 RAM: “随机访问” 存储器 • 典型的易失性存储器 • 断电后比特不被保存 • 内部结构比ROM更复杂 • 一个字由几个存储器单元组成,每个保存1位。 • 每个输入输出数据线连接到这一列的每个单元上 • rd/wr线连接到每个单元(cell) • 来自解码器的字使能线连接到所在行的每个单元; • 存储单元必须具有必要的逻辑,使r/w指示写入且该行使能时能存储输入数据位,在r/w指示读取且该行使能时能输出该单元保存的数据位
SRAM Data' Data W DRAM Data W 基本RAM类型 memory cell internals • SRAM:静态(Static) RAM • 存储器单元使用 flip-flop 来保存位数据 • 需要6个晶体管 • 只要有电就保持数据 • DRAM: 动态 Dynamic RAM • 存储器单元使用MOS晶体管和电容来保持数据位 • 比SRAM更复杂; • 由于电容泄漏,需要“刷新” • 当读取时,字单元要被刷新 • 典型刷新率为15.625 ms. • 访问速度慢于SRAM
Ram的变型 • PSRAM: 伪静态Pseudo-static RAM • 带有内建存储器刷新控制器的DRAM • 比较流行的低成本高密度的替代SRAM的一种存储器 • NVRAM: 非易失Nonvolatile RAM • 外部电源移除时仍然保持数据 • 电池后备 Battery-backed RAM • SRAM具有永久连接的电池 • 写入和读取一样快
data<7…0> 11-13, 15-19 data<7…0> 11-13, 15-19 addr<12...0> 2,23,21,24, addr<14...0> 27,26,2,23,21, 25, 3-10 24,25, 3-10 /OE 22 /OE 22 /WE 27 /CS 20 /CS1 20 27C256 HM6264 CS2 26 block diagrams Device Access Time (ns) Standby Pwr. (mW) Active Pwr. (mW) Vcc Voltage (V) HM6264 85-100 .01 15 5 27C256 90 .5 100 5 device characteristics Read operation Write operation data data addr addr WE OE /CS1 /CS1 CS2 CS2 timing diagrams 举例: HM6264 & 27C256 RAM/ROM devices • 低成本的容量存储器 • 一般在8-bit MCU中应用 • 头两个数字指示器件类型 • RAM: 62 • ROM: 27 • 其后数字指示Kbit容量
data<31…0> addr<15…0> addr<10...0> /CS1 /CS2 CS3 /WE /OE MODE /ADSP /ADSC /ADV CLK TC55V2325FF-100 Device Access Time (ns) Standby Pwr. (mW) Active Pwr. (mW) Vcc Voltage (V) TC55V23 10 na 1200 3.3 25FF-100 device characteristics A single read operation CLK /ADSP /ADSC /ADV addr <15…0> /WE /OE /CS1 and /CS2 CS3 data<31…0> block diagram timing diagram Example:TC55V2325FF-100 存储器 • 2-Mbit 同步流水线突发SRAM 存储器 • 设计用于32-bit 处理器接口 • 能够快速的顺序读取或写入,也能够实现单字节输入输出
FSM description GO=0 GO=1 ADSP=1, ADSC=1 ADV=1, OE=1, Addr = ‘Z’ ADSP=0, ADSC=0 ADV=1, OE=1, Addr = Addr0 S0 S1 Specification for a single read operation GO=0 Data is ready here! CLK /ADSP /ADSC /ADV addr <15…0> /WE /OE /CS1 and /CS2 CS3 data<31…0> GO=0 GO=1 ADSP=1, ADSC=0 ADV=1, OE=1, Addr = ‘Z’ ADSP=1, ADSC=1 ADV=0, OE=0, Addr = ‘Z’ S2 S3 GO=1 GO=1 GO=0 实例:更复杂的存储器协议 • 产生控制信号来驱动流水线读取模式的TC55V2325FF存储器芯片 • Addr0是起始地址 • GO是使能/禁止信号
本章内容 • 存储器分类 • 按照写入能力和存储永久性进行区分 • 嵌入式系统存储器类型 • 常用存储器类型 • 高级RAM类型 • 嵌入式系统存储器组合 • 存储器的层次与Cache
高级RAM • DRAMs 通常用于嵌入式系统处理器的主存储器 • 高容量,低成本 • 许多DRAMs存储器的改进型被提出 • 需要能够跟上处理器运行速度 • FPM DRAM: 快页模式 DRAM • EDO DRAM: 扩展数据输出 DRAM • SDRAM/ESDRAM: 同步和增强型同步 DRAM • RDRAM: rambus DRAM
data Refresh Circuit . Buffer In Buffer Sense Addr Amplifiers Data Col Decoder cas rd/ wr Col ras, clock Buffer Out Buffer cas, Row Decoder Addr. Data ras Row address Bit storage array 基本 DRAM • 地址总线行列复用 • 行、列地址分别由行地址选择信号ras和列地址选择信号cas被顺序的锁存 • 刷新电路可以在DRAM存储器的外部或者内部 • 周期性选通连续的存储器地址,进行存储器内容刷新 • 在读写操作期间刷新电路不起作用
clock ras cas address data row col data data data 同步(S)/增强型同步(ES) DRAM • SDRAM 在有效时钟边沿锁存数据 • 同步接口消除DRAM监测ras/cas和rd/wr信号所需的时间 • 列地址计数器写入有效列地址,然后在时钟沿递增计数器来访问连续的内存地址 • ESDRAM 改进 SDRAM • 在感应放大器中加入高速缓冲使列地址发生重叠。 • 更快的时钟和更低的读/写延迟时间
SDRAM 存储器芯片举例 • MT48LC4M32B2 4 Meg x 32bit SDRAM功能框图
DRAM 集成问题 • SRAM容易与处理器一起集成到同一个芯片中 • DRAM 非常困难 • DRAM 与传统逻辑电路的制造工艺不同 • 传统逻辑(IC)设计师的目标: • 使寄生电容最小以减小功耗和信号传播延迟 • DRAM 设计师的目标: • 创建电容单元保存存储的信息 • 集成工艺已经开始出现
存储器管理单元(MMU) • MMU的任务 • 处理DRAM的刷新,总线接口的仲裁 • 考虑存储器在多个处理器之间的共享 • 翻译逻辑存储器地址到DRAM的物理地址 • 现代CPUs经常将MMU集成到芯片中 • 可以用单用途处理器来完成
2m × 3n ROM 2m × n ROM 2m × n ROM 2m × n ROM enable A0 … … … Am … … … Q3n-1 Q2n-1 Q0 增加字的宽度和数量 增加字宽度 … A enable outputs 存储器组合 增加字数量 2m+1 × n ROM 2m × n ROM • 所需要的Memory大小与实际可得到的Memory器件容量不符 • 单可用的Memory容量更小,就需要组合几个更小的memories 成为一个更大的Memory • 位扩展:肩并肩连接增加字宽度 • 字扩展: 头尾连接增加字的数量 • 组合两种技术增加字宽度和字数量 A0 … … Am-1 1 × 2 decoder … Am 2m × n ROM enable … … Qn-1 Q0
处理器 寄存器 Cache 主存储器 磁盘 磁带 存储器层次 • 希望便宜快速的存储器 • 主存储器 • 容量大,便宜,慢,,保存全部程序和数据 • Cache • 小、贵,快速,保存主存储器可能被访问的数据的一个副本 • 可以有多级Cache
Cache • 通常用SRAM来设计 • 速度更快但是比DRAM贵很多 • 与处理器在一个芯片上 • 受空间限制,比离片内存要小很多 • 更快的访问速度 ( 1 cycle vs. 主存储器的几个cycles for) • Cache 操作: • 在进行内存访问(read or write)时才需要进行Cache操作 • 首先检查cache中有没有被请求数据的副本 • cache hit • 直接从cache中进行数据访问 • cache miss • 从内存中将数据块读入cache • Cache的设计考虑 • Cache映射, 替换策略和 写入技术
Cache 映射 • Cache的容量与内存相比非常少,那怎样把内存地址的内容放到Cache中呢? • Cache映射就是用来分配内存地址到Cache地址,并决定是 hit 还是 miss • 三种基本技术 • 直接映射 • 全关联映射 • 组关联映射
3. Cache/主存系统基本结构 为实现映射,将其分为定长的块,每块K个字,有M=2n/K个块 主存储器由多达2n个可寻址地址单位组成。每一个字有n位地址 Cache由C行组成。每行K个字(C<<M ); 每行有一个Tag,用来识别当前存储是哪一个块。Tag一般是主存地址的一部分
Tag Index Offset V T D Data Valid = 4. 直接映射 • 内存地址被分成2个字段 • 索引字段 Index • 代表cache地址 • 位数决定了Cache的容量 • 标记Tag • 索引指示的Cache地址的标记与内存地址的标记进行比较 • 如果标记匹配,则检查有效位 • 有效位 Valid bit • 指出是否数据已从内存中载入 • 偏移量Offset • 用来在cache line中找到特定数据
4 Cache的直接映射 (1) Tag用来识别块号
Tag Offset Data V T D V T D V T D … Valid = = = 5.全关联映射 • 完全的内存地址保存在每个Cache地址中 • 全部保存在Cache中的地址与访问地址同时比较 • 有效位Valid bit 和偏移量与直接映射相同
Tag Index Offset V T D V T D Data Valid = = 6. 组关联映射 • 直接映射和全关联的折衷 • 索引Index与直接映射相同 • 但是每个Cache地址包含2个或者更多的内存地址的数据和标记 • 组标记被同时比较,象全关联映射方式 • 带有N个组的 Cache 称为N-路组关联 • 2-way, 4-way, 8-way are common
7.Cache 对系统性能的影响 • 影响性能的重要参数: • Cache的容量 • Cache能容纳的数据字节数量 • 标记和有效位没有计入该容量内 • 关联度 • 数据块的大小 • 大容量caches能达到更低的失误率但是访问成本更高 • 例., • 2 Kbyte cache: 失误率=15%, hit成本=2 cycles, miss成本=20 cycles • 平均存储器访问成本 = (0.85 * 2) + (0.15 * 20) = 4.7 cycles • 4 Kbyte cache:失误率= 6.5%, hit成本= 3 cycles, miss成本不便 • 平均存储器访问成本 = (0.935 * 3) + (0.065 * 20) = 4.105 cycles • 8 Kbyte cache:失误率= 5.565%, hit成本= 4 cycles, miss成本不便 • 平均存储器访问成本 = (0.94435 * 4) + (0.05565 * 20) = 4.8904 cycles
0.16 0.14 0.12 0.1 1 way % cache miss 2 way 0.08 4 way 0.06 8 way 0.04 0.02 0 cache size 1 Kb 2 Kb 4 Kb 8 Kb 16 Kb 32 Kb 64 Kb 128 Kb 7. Cache 的性能均衡 • 不增加Cache的总大小来改进Cache的命中率 • 增加 line 长度 • 改变组关联
8. Xscale 255的Cache组织 共32组 每行32字节 • Xscale 数据Cache • 32KB容量,32路组关联结构; • 采用循环替换算法。 每组32路