1 / 38

基于 ARM SoC Designer 的多媒体视频处理内存模块的研究与分析

基于 ARM SoC Designer 的多媒体视频处理内存模块的研究与分析. 学生:卢思毅 指导老师:祝永新 2008.6. 目录 1. 1. 概述及研究背景. 2 . 基于 ARM SoC Designer 的解码系统设计. 3 . 多媒体内存架构. 4 . 基于 DRAMsim 的内存系统模拟. 5 . SoC 内存模块整合的探讨. 6 . 研究展望. 论文提出背景. 多媒体 SoC 系统对存储容量和吞吐率有很高的需求 ESL 工具如 ARM Soc Designer 的大量应用. SoC 系统中现有的内存模块

nanji
Download Presentation

基于 ARM SoC Designer 的多媒体视频处理内存模块的研究与分析

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 基于ARM SoC Designer的多媒体视频处理内存模块的研究与分析 学生:卢思毅 指导老师:祝永新 2008.6

  2. 目录1 1. 概述及研究背景 2. 基于ARM SoC Designer的解码系统设计 3.多媒体内存架构 4. 基于DRAMsim的内存系统模拟 5. SoC内存模块整合的探讨 6. 研究展望

  3. 论文提出背景 • 多媒体SoC系统对存储容量和吞吐率有很高的需求 • ESL工具如ARM Soc Designer的大量应用 • SoC系统中现有的内存模块 • 仅一种SDRAM 100MHZ的方案 • 仅对内存刷新行为进行建模 • 源代码封闭不可见 • 无法进行Debug和Profile • 无法了解和改进内存系统 • 期望的内存系统 • 多种内存架构 • 支持地址映射策略的选择 • 支持行缓冲器管理策略的选择 • 支持开页及闭页工作模式的选择 • 支持系统拓扑结构的选择 • 代码全部可见 • 可以进行Debug和Profile • 今后可方便升级

  4. 整体工作流程 • 搭建SoC内存多媒体模拟系统,运行H.264解码算法 • 截取Arm核与AHB Bus间通信信号及AHB Bus内经过仲裁的信号,记录解码系统的内存请求 • 对Arm Soc多媒体处理系统的内存请求进行各种内存模拟,对各类影响内存性能的因素进行了评估 • 提出了将DRAMsim整合进ARM Soc Designer中成为其新的内存模块的方法

  5. H.264和AVS编解码技术编码流程 帧间预测 消除图像间的冗余 帧内预测 消除图像内的冗余 输入图像 预测残差 消除图像内的视觉冗余 压缩压缩后的图像 将运动矢量 预测模式 量化及变换系数 用嫡编码进行压缩

  6. H.264和AVS编解码技术 许多编码功能模块需要从帧内存中调用当前或者参考的宏块内的像素数据。由功能模块的存取模式归类为“ME”模块和“MC”模块 Chen等人[8] 对于标准清晰度电视(SDTV)格式 高清晰度电视(HDTV)的720p格式 访存带宽分别为3800、5570 GByte/s Tian Song和Tomoyuki Kishida的研究 :最高4.6-5GB/s的带宽是必要的

  7. 目录2 1. 概述及研究背景 2. 基于ARM SoC Designer的解码系统设计 3.多媒体内存架构 4. 基于DRAMsim的内存系统模拟 5. SoC内存模块整合的探讨 6. 研究展望

  8. H.264及AVS开源编解码器 • 移植对象: H.264 解码器:基于jm86的H.264(x86 C++) AVS解码器:基于AVS-P2的AVS开源解码器(x86 C++) 在VC6.0下编译,测试3帧h264及10帧AVS 图像解码流程,使用YUVviewer查看输出帧, 确认软件解码器的可靠性。

  9. 软件代码移植 X86体系结构 C-Code ARM体系结构 C-Code 区分大数端和小数端 只有little-endian 一种格式 非对齐的存储访问操作 每个字单元中区分4个字节 高位和地位字节有 big-endian和little-endian 两种格式 -需要修改数据类型强制转换处 变量大数端或小数端表示 对齐的存储访问操作 -修改非字对齐的地址取数 为正确的数值大小 把软件代码放在ARM的交叉编译工具ADS编译器工具 CodeWarrior编译,测试跨平台移植后的C模型并生成.axf的arm核运行的软件镜像

  10. 硬件测试平台构建 使用Soc Designer 构建一个基于Arm核(ARM926EJ-S),包含了AMBA AHB Bus(MXAHB)的Single Memory System Simulation系统,并进行Memory Mapping。 使用SoC Designer Simulator 工具载入编译得到的软件镜像经过输入两种不同的码流测试,和原来H.264和AVS原官方测试程序结果对比,输入原始YUV码流完全一致

  11. Simulation Tracing & Profiling ARM RealView SoC Designer ESL ARM Core MaxSim.vcd Waveform Viewer Tracing Cycle iahb dahb Profile Manager Profiling AMBA2 Grant Master0.csv Master1.csv

  12. 目录3 1. 概述及研究背景 2. 基于ARM SoC Designer的解码系统设计 3.多媒体内存架构 4. 基于DRAMsim的内存系统模拟 5. SoC内存模块整合的探讨 6. 研究展望

  13. DRAM 原理 类似于一张表,DRAM拥有巨大的数据单元来储存数据。一个行地址和一个列地址能唯一对应于一个数据单元。DRAM使用Memory Controller通过两类信号来工作:地址-控制信号和数据信号。

  14. SDRAM内部结构 • SDRAM采用了多Bank存储器结构和突发模式 • 每次能传输一整块而不是一段数据 • 基于美光Micron 64Mb SDRAM Verilog Model: • MT48LC4M16A2 (1Meg x 16 x 4 Banks)

  15. 内存的拓扑结构 Channel 高级拓扑结构 Rank Rank Bank Bank Bank Column * Row Bank Column * Row Chip Cell的三维结构 Column * Row Column * Row

  16. Signals in SDRAM Module • 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)

  17. SDRAM COMMAND

  18. 目录4 1. 概述及研究背景 2. 基于ARM SoC Designer的解码系统设计 3.多媒体内存架构 4. 基于DRAMsim的内存系统模拟 5. SoC内存模块整合的探讨 6. 研究展望

  19. DRAMsim University of MarylandDRAMsim: A Detailed Memory-System Simulation Framework • 模拟多种内存种类(SDRAM,DDR,DDR2,DDR3) • 通过configuration改变他们的参数 Timing Latencys DIMMs的数量 通道的数量 地址映射策略 行缓冲器管理策略(open-page VS.closed-page) 内存存取重排策略 • 进行时序Performance以及功耗的统计 包括详尽的延迟统计,资源使用次数 Bank冲突以及Cache命中记录

  20. DRAMsim DRAMsim模拟器对于memory transaction 在离开了处理器内核后的entire cycle 进行了建模。

  21. 内存控制器事务排序的调度策略 FCFS:默认, 对所有的内存事务先进先服务 GREEDY:内存控制器当一个命令准备就绪后立即就进行流出。对于与之前内存事务相关的DRAM命令给予了优先考虑。 OPEN BANK FIRST:优先考虑流出到目前打开的bank的所有的内存事务 MOST_PENDING:“最大待定”调度策略,其中优先考虑的是有最大数量的内存事务的DRAM命令。 LEAST_PENDING: “最小待定”调度策略,其中优先考虑的是有最小数量的突出的内存事务的DRAM命令。 READ FIRST(RIFF): 对内存读事务(数据和指令取出) 给予比内存写入事务更高的优先权。

  22. 行缓冲器管理策略&地址映射策略 • 开页(Open Page)行缓冲器管理策略 • 被设计用来支持保持读出放大器打开并且保持一整行数据为存取做好准备的情况。 • 闭页(Close Page)行缓冲器管理策略 • 被设计用来支持对于内存不同的Bank进行随机读写操作。 • 内存地址映射策略 • 最小化任意给定的bank的时间和空间位置,同时为连续内存系统中不同的bank分配内存存取做准备。 • 不但依赖于行缓冲器策略,同时也依赖于DRAM内存系统的配置以及内存系统的可扩展性。 • 采取固定的地址映射策略 • Close-Page:sdram_close_page_map • Open-Page:sdram_hiperf_map

  23. Simulation Process 输入Trace文件的格式 前300000个 Cycle的Trace DRAMsim 内存读操作中平均 延迟时间 (Latency) Perl 脚本文件 实时带宽 (Bandwidth) 将一些控制开关集成在一起,包括Trace文件 链接内存SPD文件链接,调试参数,统计参数等 SPD参数文件 SDRAM,DDR400,DDRII,DDRIII 包括内存拓扑结构设置及内存时序参数(分别参考了Micron的标准以及JEDEC提议的标准)

  24. Simulation Framework • 四种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)。

  25. Workload Characteristic Bus Trace Viewer对BIU上内存请求的观察 91% Write 9% Read & Ifetch • H.264解码系统的内存请求较为有序 • 内存请求主要以写事务为主

  26. 模拟结果分析(1) (1)内存类型的影响 不同内存类型(SDRAM,DDR400,DDRII667,DDRIII1333)的横向比较 • 先进的内存架构带来了更为优秀的实时带宽和读取延迟 • 数据传输率都只能达到其峰值速率的一半不到 -> 初步可以看出是内存的行缓冲器管理策略影响了实时带宽

  27. 模拟结果分析(2) (2)内存拓扑结构的影响 DDR400系统中Rank拓扑结构比较 • 在同一种内存中,同样的Rank配置在通道越多的情况表现出的内存延时越小且实时带宽越大。 • 对于具有同样大小配置Rank的内存来说,我们应该尽量选择更多的通道数,但这样做得同时会造成成本的增加。

  28. 模拟结果分析(3) (3)行缓冲器管理策略的影响 Open-Page & Close-Page • 固定地址映射策略,以减少在系统中bank的冲突 • 打开了Open-Page后使得内存的延时和实时带宽均有大幅度的改善。 • 以写入为主,且内存存取序列在空间和时间上有高度的一致。

  29. 模拟结果分析(4) (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拓扑结构: • 各个调度策略影响的趋势与内存拓扑结构的不同无关,与上述趋势相同。

  30. 目录5 1. 概述及研究背景 2. 基于ARM SoC Designer的解码系统设计 3.多媒体内存架构 4. 基于DRAMsim的内存系统模拟 5. SoC内存模块整合的探讨 5. 总结与展望

  31. Function Call / System C Module Master (ARM Core) 发出读写指令,调用MxAHB中的 Read/Write函数 AMBA2 AHB BUS(MxAHB) 对Slave进行操作,调用Dram Module 中的Read/Write功能 驱动翻译层(函数调用) System C 硬件描述 Slave (DRAM Module)

  32. MxAHB BUS基本函数接口 内部Data 外部Data 表现AHB Signal Set的数据结构 TAHBSignals *m_pAHBSignals 调用并公布 数据结构的指针 readReq() getNumRegions() getAddressRegions() Read/Write()

  33. DRAMsim模拟器函数接口 (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文件来记录

  34. 使用Soc Designer创建一个自定义内存模块 使用MaxSim Component Wizard工具 创建一个基于一定模板的标准组件 对组件参数:例如时钟,保存/恢复,支持调用的运用程序等进行设置 对模块端口类型进行设置 对内部参数的映射进行设置 主要关注 Base port Cas Latency PageBits Mem Size 这些参数

  35. 使用Soc Designer创建一个自定义内存模块 -“My_SDRam.[h|cpp]” - “My_SDRam_MxDI.[h|cpp]” - “ahb_TS[h|.cpp]” 在底层使用System C添加自定义代码 Main() getNumRegions() getAddressRegions() Read()/Write() 用Visual Studio 2003进行编译 生成My_SDRam.dll

  36. 目录6 1. 概述及研究背景 2. 基于ARM SoC Designer的解码系统设计 3.多媒体内存架构 4. 基于DRAMsim的内存系统模拟 5. SoC内存模块整合的探讨 6. 研究展望

  37. 研究展望 1. 将每一个Cycle对内存系统的访存行为做一个可视化界面 2. 对更多内存性能的指标做自动分析处理结果 2. 对多媒体视频处理内存模块的功耗进行分析 4. 加入更多的内存种类如 FB-DIMM DDR 5. 完成本文提出的将DRAMsim整合进Arm SoC系统中作为一个新的内存模块的具体实现

  38. THANK YOU!

More Related