Transcript 最终答辩
LOGO 基于ARM SoC Designer的多媒体 视频处理内存模块的研究与分析 学生:卢思毅 指导老师:祝永新 2008.6 目录1 LOGO 1. 概述及研究背景 2. 基于ARM SoC Designer的解码系统设计 3.多媒体内存架构 4. 基于DRAMsim的内存系统模拟 5. SoC内存模块整合的探讨 6. 研究展望 论文提出背景 LOGO 多媒体SoC系统对存储容量和吞吐率有很高的需求 ESL工具如ARM Soc Designer的大量应用 SoC系统中现有的内存模块 •仅一种SDRAM 100MHZ的方案 •仅对内存刷新行为进行建模 •源代码封闭不可见 •无法进行Debug和Profile •无法了解和改进内存系统 期望的内存系统 •多种内存架构 •支持地址映射策略的选择 •支持行缓冲器管理策略的选择 •支持开页及闭页工作模式的选择 •支持系统拓扑结构的选择 •代码全部可见 •可以进行Debug和Profile •今后可方便升级 整体工作流程 LOGO 搭建SoC内存多媒体模拟系统,运行H.264解码算法 截取Arm核与AHB Bus间通信信号及AHB Bus内经过 仲裁的信号,记录解码系统的内存请求 对Arm Soc多媒体处理系统的内存请求进行各种内存 模拟,对各类影响内存性能的因素进行了评估 提出了将DRAMsim整合进ARM Soc Designer中成为 其新的内存模块的方法 H.264和AVS编解码技术编码流程 帧间预测 消除图像间的冗余 帧内预测 消除图像内的冗余 输入图像 压缩压缩后的图像 LOGO 预测残差 消除图像内的视觉冗余 将运动矢量 预测模式 量化及变换系数 用嫡编码进行压缩 H.264和AVS编解码技术 LOGO 许多编码功能模块需要从帧内存中调用当前或者参考的宏块内的像素 数据。由功能模块的存取模式归类为“ME”模块和“MC”模块 Chen等人[8] Tian Song和Tomoyuki Kishida的研究 对于标准清晰度电视(SDTV)格式 :最高4.6-5GB/s的带宽是必要的 高清晰度电视(HDTV)的720p格式 访存带宽分别为3800、5570 GByte/s 目录2 LOGO 1. 概述及研究背景 2. 基于ARM SoC Designer的解码系统设计 3.多媒体内存架构 4. 基于DRAMsim的内存系统模拟 5. SoC内存模块整合的探讨 6. 研究展望 H.264及AVS开源编解码器 移植对象: H.264 解码器:基于jm86的H.264(x86 C++) AVS解码器:基于AVS-P2的AVS开源解码器(x86 C++) 在VC6.0下编译,测试3帧h264及10帧AVS 图像解码流程,使用YUVviewer查看输出帧, 确认软件解码器的可靠性。 LOGO 软件代码移植 X86体系结构 C-Code 区分大数端和小数端 只有little-endian 一种格式 非对齐的存储访问操作 LOGO ARM体系结构 C-Code 每个字单元中区分4个字节 高位和地位字节有 big-endian和little-endian 两种格式 -需要修改数据类型强制转换处 变量大数端或小数端表示 对齐的存储访问操作 -修改非字对齐的地址取数 为正确的数值大小 把软件代码放在ARM的交叉编译工具ADS编译器工具 CodeWarrior编译,测试跨平台移植后的C模型并生成.axf的arm核运行的软件镜像 硬件测试平台构建 LOGO 使用Soc Designer 构建一个基于Arm核(ARM926EJ-S),包含了 AMBA AHB Bus(MXAHB)的Single Memory System Simulation 系统,并进行Memory Mapping。 使用SoC Designer Simulator 工具载入编译得到的软件镜像经过输入两种 不同的码流测试,和原来H.264和AVS原官方测试程序结果对比,输入原始 YUV码流完全一致 Simulation Tracing & Profiling LOGO ARM RealView SoC Designer ESL MaxSim.vcd ARM Core iahb dahb Cycle Waveform Viewer Tracing Profile Manager Profiling AMBA2 Grant Cycle Grant Wait Grant OK Read Wait Read OK addr Value status type Master0.csv Master1.csv Write Wait Write OK 目录3 LOGO 1. 概述及研究背景 2. 基于ARM SoC Designer的解码系统设计 3.多媒体内存架构 4. 基于DRAMsim的内存系统模拟 5. SoC内存模块整合的探讨 6. 研究展望 DRAM 原理 LOGO 类似于一张表,DRAM拥有巨大的数据单元来储存数据。 一个行地址和一个列地址能唯一对应于一个数据单元。 DRAM使用Memory Controller通过两类信号来工作: 地址-控制信号和数据信号。 SDRAM内部结构 SDRAM采用了多Bank存储器结构和突发模式 每次能传输一整块而不是一段数据 基于美光Micron 64Mb SDRAM Verilog Model: MT48LC4M16A2 (1Meg x 16 x 4 Banks) LOGO 内存的拓扑结构 LOGO Channel 高级拓扑结构 Rank Bank Rank Bank Bank Column * Row Chip Cell的三维结构 Bank Column * Row Column * Row Column * Row Signals in SDRAM Module LOGO inout [data_bits - 1 : 0] Dq; 数据输入输出接口 input [addr_bits - 1 : 0] Addr;地址信号 input [1 : 0] Ba; Bank地址输入信号引脚,BA信号决定了由 激活哪一个bank、进行读写或者预充电操作; input Clk; 时钟信号 input Cke; 时钟使能信号 input Cs_n; 选择进行存取操作的芯片 input Ras_n; 行地址选择信号 input Cas_n; 列地址选择信号 input We_n; 写使能信号 input [3 : 0] Dqm;屏蔽输入/输出,功能相 当于/OE引脚( Output Enable) SDRAM COMMAND LOGO 功能 /CS /RAS /CAS /WE DQM addr Command inhibit(nop) H X X X X X No operation(nop) L H H H X X Active(选择bank并且激活相应的 行) L L H H X Bank/Row Read(选择bank和列地址,并且 开始突发读取) L H L H X Bank/Col Write(选择 bank和列地址,并且 开始突发写入) L H L L X Bank/Col Burst terminate(停止当前的突发 状态) L H H L X X Precharge (让相应的bank中的行 失活或者让该bank失活) L L H L X Code Auto refresh(进入自动刷新模式) L L L H X X Load mode register L L L L X Operation Code 写入启用/输出启用 L 写入禁止/输出禁止 H 目录4 LOGO 1. 概述及研究背景 2. 基于ARM SoC Designer的解码系统设计 3.多媒体内存架构 4. 基于DRAMsim的内存系统模拟 5. SoC内存模块整合的探讨 6. 研究展望 DRAMsim LOGO University of Maryland DRAMsim: A Detailed Memory-System Simulation Framework 模拟多种内存种类(SDRAM,DDR,DDR2,DDR3) 通过configuration改变他们的参数 Timing Latencys DIMMs的数量 通道的数量 地址映射策略 行缓冲器管理策略(open-page VS.closed-page) 内存存取重排策略 进行时序Performance以及功耗的统计 包括详尽的延迟统计,资源使用次数 Bank冲突以及Cache命中记录 DRAMsim LOGO DRAMsim模拟器对于memory transaction 在离开 了处理器内核后的entire cycle 进行了建模。 内存控制器事务排序的调度策略 LOGO FCFS:默认, 对所有的内存事务先进先服务 GREEDY:内存控制器当一个命令准备就绪后立即就进行流出。对于与之前内 存事务相关的DRAM命令给予了优先考虑。 OPEN BANK FIRST:优先考虑流出到目前打开的bank的所有的内存事务 MOST_PENDING:“最大待定”调度策略,其中优先考虑的是有最大数量 的内存事务的DRAM命令。 LEAST_PENDING: “最小待定”调度策略,其中优先考虑的是有最小数量 的突出的内存事务的DRAM命令。 READ FIRST(RIFF): 对内存读事务(数据和指令取出) 给予比内存写入 事务更高的优先权。 行缓冲器管理策略 &地址映射策略 LOGO 开页(Open Page)行缓冲器管理策略 被设计用来支持保持读出放大器打开并且保持一整行数据为存取做好准备的 情况。 闭页(Close Page)行缓冲器管理策略 被设计用来支持对于内存不同的Bank进行随机读写操作。 内存地址映射策略 •最小化任意给定的bank的时间和空间位置,同时为连续内存系统中不同的 bank分配内存存取做准备。 •不但依赖于行缓冲器策略,同时也依赖于DRAM内存系统的配置以及内存系 统的可扩展性。 •采取固定的地址映射策略 Close-Page:sdram_close_page_map Open-Page:sdram_hiperf_map Simulation Process 输入Trace文 件的格式 Cycle LOGO 前300000个 Cycle的Trace Activity Time Stamp 内存读操作中平均 延迟时间 (Latency) READ WRITE IFETCH Perl 脚本文件 DRAMsim 将一些控制开关集成在一起,包括Trace文件 链接内存SPD文件链接,调试参数,统计参数等 SPD参数文件 SDRAM,DDR400,DDRII,DDRIII 包括内存拓扑结构设置及内存时序参数(分 别参考了Micron的标准以及JEDEC提议的标准) 实时带宽 (Bandwidth) Simulation Framework LOGO •四种DRAM类型: SDRAM@133MHZ DDR400@400MHZ DDR2@667MHZ DDR3@1333MHZ •所有内存大小都被设定为256MB,每个Chip有4个Bank •该模拟中对一些参数的变化进行研究,他们包括: (1)Ranks的数量以及他们的配置方式,我们研究了他们对于性能连续性上的影 响。 (2)行缓冲器管理策略,我们对Open-Page和Close-Page配置的系统都进行了 研究。 (3)调度策略,包括了:FCFS/GREEDY/OPEN BANK FIRST(OBF) /MOST_PENDING/LEAST_PENDING/READ FIRST(RIFF) 研究了两个表现系统性能的关键参数: 内存读操作中平均的延迟时间(Latency),和实时的带宽(Bandwidth)。 Workload Characteristic Bus Trace Viewer对BIU上内存请求的观察 •H.264解码系统的内存请求较为有序 •内存请求主要以写事务为主 LOGO 模拟结果分析(1) (1)内存类型的影响 LOGO 不同内存类型 (SDRAM,DDR400,DDRII667,DDRIII1333) 的横向比较 •先进的内存架构带来了更为优秀的实时带宽和读取延迟 •数据传输率都只能达到其峰值速率的一半不到 -> 初步可以看出是内 存的行缓冲器管理策略影响了实时带宽 模拟结果分析(2) (2)内存拓扑结构的影响 LOGO DDR400系统中Rank拓扑结构比较 •在同一种内存中,同样的Rank配置在通道越多的情况表现出的内存延时越小 且实时带宽越大。 •对于具有同样大小配置Rank的内存来说,我们应该尽量选择更多的通道数, 但这样做得同时会造成成本的增加。 模拟结果分析(3) (3)行缓冲器管理策略的影响 LOGO Open-Page & Close-Page •固定地址映射策略,以减少在系统中bank的冲突 •打开了Open-Page后使得内存的延时和实时带宽均有大幅度的改善。 •以写入为主,且内存存取序列在空间和时间上有高度的一致。 模拟结果分析(4) LOGO (4)内存控制器调度策略的影响 •在Open-Page中比较: 各个调度策略没有明显的优胜者,但是可以发现默认的FCFS策略的Latency是最差的 ,而Greedy,OBF和RIFF的Latency表现较优。 •在Close-Page中比较: 我们可以将FVFS和OBF归为一类,他们比其他策略的延迟表现差39%,带宽表现差 3%。Greedy,Least Pending,Most Pending表现得类似,给出了优秀的带宽和较 好的延迟,RIFF则表现出了较为优秀的读取延迟和较好的带宽。 •对比SDRAM和DDR400系统 : 各个调度策略影响的趋势与内存架构的不同无关,与上述趋势相同。 •对比了SDRAM中不同的Rank拓扑结构: 各个调度策略影响的趋势与内存拓扑结构的不同无关,与上述趋势相同。 目录5 LOGO 1. 概述及研究背景 2. 基于ARM SoC Designer的解码系统设计 3.多媒体内存架构 4. 基于DRAMsim的内存系统模拟 5. SoC内存模块整合的探讨 5. 总结与展望 Function Call / System C Module LOGO Master (ARM Core) 发出读写指令,调用MxAHB中的 Read/Write函数 AMBA2 AHB BUS(MxAHB) 对Slave进行操作,调用Dram Module 中的Read/Write功能 驱动翻译层(函数调用) System C 硬件描述 Slave (DRAM Module) MxAHB BUS基本函数接口 LOGO 内部Data 表现AHB Signal Set的数据结构 TAHBSignals *m_pAHBSignals 调用并公布 数据结构的指针 readReq() getNumRegions() getAddressRegions() Read/Write() 外部Data DRAMsim模拟器函数接口 LOGO (1)初始化: 用函数init_dram进行初始化 (2)配置: 用configure_sim_dram函数接受配置数据结构变量 (dram_config_info)的设定。同时通过SPD文件传入内存时序配置 (3)请求分配: 用dram_access_memory对内存子系统发送请求 用数据结构(dram_access_t)传递特定的存取信息 (4)周期更新管理: 通过dram_update_system函数进行操作 (5)请求返回 : 在invole_callback_fn中实现,显示了DRAM模拟器是否激活请求 (6)统计: 通过dram_stats_init函数对统计信息的收集进行初始化 通过dram_print_stats_common文件来记录 使用Soc Designer创建一个自定义内存模块 使用MaxSim Component Wizard工具 创建一个基于一定模板的标准组件 对组件参数:例如时钟,保存/恢复,支持调 用的运用程序等进行设置 对模块端口类型进行设置 对内部参数的映射进行设置 主要关注 Base port Cas Latency PageBits Mem Size 这些参数 LOGO 使用Soc Designer创建一个自定义内存模块 在底层使用System C添加自定义代码 Main() 用Visual Studio 2003进行编译 生成My_SDRam.dll LOGO -“My_SDRam.[h|cpp]” - “My_SDRam_MxDI.[h|cpp]” - “ahb_TS[h|.cpp]” getNumRegions() getAddressRegions() Read()/Write() 目录6 LOGO 1. 概述及研究背景 2. 基于ARM SoC Designer的解码系统设计 3.多媒体内存架构 4. 基于DRAMsim的内存系统模拟 5. SoC内存模块整合的探讨 6. 研究展望 研究展望 LOGO 1. 将每一个Cycle对内存系统的访存行为做一个可视化界面 2. 对更多内存性能的指标做自动分析处理结果 2. 对多媒体视频处理内存模块的功耗进行分析 4. 加入更多的内存种类如 FB-DIMM DDR 5. 完成本文提出的将DRAMsim整合进Arm SoC系统中作为一 个新的内存模块的具体实现 LOGO THANK YOU!