最终答辩

Download Report

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!