ti8168平台的tiler memory
DM8168 DMM/TILER简介
1.概述
如图4-1,DMM定位在SDRAM控制器的前端,是所有initiator产生的内存存取的接口。
动态内存管理器DMM,是一个专门的管理模块,广义上说,包括内存存取的方方面面。比如:
- initiator索引化的优先级产生。
- 多区域SDRAM内存交织配置
- 块目标传输优化:tiling和子tiling
- 集中的低延迟页翻译:类似MMU
内存的动态管理表现为软件可配置,天性为运行时,由DMM操作的内存管理有4个方面:
- 添加基于Initiator的优先级到任何输入的请求中
- 执行tiled请求的tiling转换
- 提供优化的低延迟基于页的翻译以便管理内存碎片:MMU
- 在两个内存控制器间按照交织配置分配交通。
TILER是DMM内的一个子模块,目的是高效操作2D数据,比如HDVICP2通过使用tiled格式进行视频/图像存取。
- 优化管理内存碎片,通过页为粒度的翻译实现0 copy物理帧缓冲交换。
- 产生高速0浪费的变换:90/180/270度旋转,带水平或垂直镜像。
2.特征
- 延迟特别低的互联端口:ELLA,用于Cortex A8存取
- 在两个EMIF bank之间的DDR数据可以是交织的,使用可编程的多区域DRAM内存映射,这增加了2倍内存通过率,支持多达4个独立的内存区域(Section)
- 基于优先级请求扩展的可编程Initiator,多达16个initiator组。
- 支持tiled数据的地址翻译,在4KB页粒度中使用PAT,这有助于管理内存碎片。
- 2个内部地址查找表(LUT),每个有256x128个入口,4个可重填引擎用于编程LUTs,带自动同步重加载。
- 支持4个独立的PAT视窗。
3.功能模块图
图4-2显示了DMM宏结构。DMM组成是6个模块:
- PEG:优先级扩展产生器,用来产生SDRAM控制器要求的优先级。注意这些优先级并不在DMM中使用。
- ELLA:极低延迟存取,它有自己的互联从端口,用来提供对内存的极低延迟存取。
- LISA:局部互联和同步代理,用来同步所有的DMM子系统和提供对配置寄存器的存取。
- PAT:物理地址翻译,用来管理内存碎片。
- ROBIN:重定序缓冲和Intiator节点,共有2个,它们有自己的互联Master端口,用来向SDRAM控制器发出请求,允许tiled数据、tiled响应和分裂的响应重构,ROBIN模块仅能管理重定序缓冲和执行数据由于定向而需要的数据重定序。
- TILER:2个,它有自己的互联从端口,用于在输入虚拟地址模式和输出物理tiled地址之间进行转换请求。注意,tiling请求转换,写数据和响应完全由TILER模块执行,

4.一些关键词和缩写词汇
bpp:Bits per pixel 每个像素使用的位数
DMM:Dynamic Memory Manager 动态内存管理
ELLA:Extra Low Latency Access 极底延迟的存取
GB,GiB:Both imply Giga Byte 都是千兆字节的意思
Initiator:器件里的一个节点,可以是CPI、外设、或DMA等,它可能是内部总线管理者(MASTER)。每个Initiator由一个ConnID(connection ID连接ID)来标识,ConnID最大限制是16,某些Initiator被分组在一起,使用一个ConnID号。
Interlaced:Qualifier for access skipping one line every line 可以跳行交织存取
IVA:Image Video Accelerator, Also called HDVICP2, IVA_HD 视频图像加速器,又称HDVICP2,IVA_HD
LISA:Local Interconnect and Synchronisation Agent 本地互联和同步代理
KB,KiB:Both imply Kilo Byte 都是千字节的意思
LUT:Look Up Table 查找表
MMU:Memory Management Unit 内存管理单元
MPU:Main Processing Unit. For the Device, it is Cortex A8 主处理器,这里指Cortex A8
PAT:Physical Address Translator 物理地址翻译
PEG:Priority Extension Generator 优先级扩展发生器
Progressive:与Interlaced相反,必须一行行连续存取。
ROBIN:Re-Ordering Buffer and Initiator Node 重新定序缓冲和发起者节点
Tiled access:对tiled区域的1D或者2D存取。在这儿,图像以2D方式读出和写入。改善了2D存取的效率,例如对图像的宏块存取,TILER 简化为一个简单的1D线性读写请求,DMM负责在连续内存中完成请求中指定的地址读写。
2D access:HDVICP2和HDVPSS能对2D图像缓存产生一个特殊的存取,带有读/写请求,高度和宽度信息。DMM-TILER基于高度宽度和地址来译码存取类型,负责读/写数据到物理内存,基于粒度为子tile的坐标。
http://blog.csdn.net/shanghaiqianlun/article/details/762048
HDVPSS 使用TI开发的算法,灵活的复合和融合引擎,各种高质量外部视频接口,实现视频/图像显示和采集处理功能。
2.1.3 缩略语
|
名称 |
定义 |
|
|
COMP |
Compositor |
复合器 |
|
DEI |
De-Interlacer |
去隔行 |
|
DEIH |
High quality De-Interlacer |
高质量去隔行 |
|
DVO |
Digital Video Output |
数字视频输出 |
|
GRPX |
Graphics Pipeline |
图形流水 |
|
HD |
High Definition |
高清 |
|
HDCOMP |
High Definition Component |
高清分量 |
|
HDMI |
High Definition Multimedia Interface |
HDMI接口 |
|
HDVPSS |
High Definition Video Processing Subsystem |
高清视频处理子系统 |
|
NF |
Noise Filter |
噪声滤波 |
|
NTSC |
National Television System Committee |
NTSC |
|
PAL |
Phase Alternating Line |
PAL |
|
SC |
Scaler |
缩放 |
|
SD |
Standard Definition |
标清 |
|
SDK |
Software Development Kit |
软件开发包 |
|
TILER |
Tiling and Isometric Light weight Engine for Rotation |
平铺和等容积轻量级旋转引擎 |
|
VENC |
Video Encoder |
视频信号调制编码器 |
|
VIP |
Video Input Port |
视频输入口 |
|
VPDMA |
Video Port Direct Memory Access |
视频口DMA |
2.1.4 数据格式
表2列出了HDVPSS的数据格式。注意对于T422 YUV422I_YUYV数据格式最大输入数据宽度是960个像素。
|
名称 |
数据格式 |
对齐方式 |
TILER功能 |
|
422I |
YUV422I_YUYV |
单一缓存:Y U Y V Y U Y V |
不支持 |
|
420T |
YUV420SP_UV |
Y缓存:Y Y Y Y UV缓存:U V U V |
Y:8-bit UV:16-bit |
|
422T |
YUV422SP_UV |
Y缓存:Y Y Y Y UV缓存:U V U V |
Y:8-bit UV:16-bit |
|
422T |
YUV422I_YUYV |
单一缓存:Y U Y V Y U Y V |
不支持 |
0
ti8168平台的tiler memory的更多相关文章
- c语言string.h和memory.h某些函数重复问题
在C语言中,为了使用memset()函数,你是选择#include <string.h>还是<memory.h>?两个都可以,如何选择? <string.h>,标准 ...
- Linux内存初始化(三) 内存布局
一.前言 同样的,本文是内存初始化文章的一份补充文档,希望能够通过这样的一份文档,细致的展示在初始化阶段,Linux 4.4.6内核如何从device tree中提取信息,完成内存布局的任务.具体的c ...
- 【NX二次开发】NX内部函数,libugui.dll文件中的内部函数
本文分为两部分:"带参数的函数"和 "带修饰的函数". 浏览这篇博客前请先阅读: [NX二次开发]NX内部函数,查找内部函数的方法 带参数的函数: bool A ...
- 【翻译自mos文章】Windows平台下的 Oraagent Memory Leak
来源于: Oraagent Memory Leak (文档 ID 1956840.1) APPLIES TO: Oracle Database - Enterprise Edition - Versi ...
- 在Linux和Windows平台上操作MemoryMappedFile(简称MMF)
操作系统很早就开始使用内存映射文件(Memory Mapped File)来作为进程间的共享存储区,这是一种非常高效的进程通讯手段..NET 4.0新增加了一个System.IO. MemoryMap ...
- 操作系统课程设计--Linux平台哲学家问题
哲学家问题是操作系统中资源分配的经典问题 linux平台下的系统api不同于Windows下的实现 要求:一个正确的哲学家程序(不会发生死锁) 一个错误的哲学家程序(会发生死锁) 系统环境:Eleme ...
- 使用MAT(Memory Analyzer Tool)工具分析dump文件--转
原文地址:http://gao-xianglong.iteye.com/blog/2173140?utm_source=tuicool&utm_medium=referral 前言 生产环境中 ...
- 用Vagrant和Ansible搭建持续交付平台
这是一个关于Vagrant的学习系列,包含如下文章: Vagrant入门 创建自己的Vagrant box 用Vagrant搭建Jenkins构建环境 用Vagrant和Ansible搭建持续交付平台 ...
- 搭建基于 STM32 和 rt-thread 的开发平台
我们需要平台 如果说,SharePoint 的价值之一在于提供了几乎开箱即用的 innovation 环境,那么,智能设备的开发平台也一样.不必每次都从头开始,所以需要固定的工作室和开发平台作为创新的 ...
随机推荐
- UNIX网络编程读书笔记:基本TCP套接口编程
编写一个完整的TCP客户和服务器程序所需要的基本套接口函数: 1.socket函数(客户端.服务器端都必须调用) 参数family指明协议族(family),该参数也往往被称为协议域(domain). ...
- 算法笔记_033:十六进制转八进制(Java)
目录 1 问题描述 2 解决方案 2.1 注意问题 2.2 具体实现代码 1 问题描述 具体问题描述 给定n个十六进制正整数,输出它们对应的八进制数. 输入格式 输入的第一行为一个正整数n (1& ...
- MySQL中group_concat函数
本文通过实例介绍了MySQL中的group_concat函数的使用方法,比如select group_concat(name) .MySQL中group_concat函数完整的语法如下:group_c ...
- JS 校验,检测,验证,判断函数集合
http://jc-dreaming.iteye.com/blog/754690 /** *判断对象是否为空 *Check whether string s is empty. */ funct ...
- ie6 javascript:void(0);
遇到过几次这种问题,现在总结一下. 代码: <a onclick="window.location.href='http://www.google.com'" href=&q ...
- Linux命令-权限管理命令:chmod
特别注意:在linux中,目录通常是有r和x两个权限的.删除文件的前题是要对文件所在的目录有w的权限才可以. cd /tmp 切换到tmp目录下面 touch chengshi.list 在当前目录中 ...
- ajax表单提交较慢原因的解决办法
ajax提交表单时,发现过了好长时间才有反应.使用F12打开开发人员工具一看,发现提示“provisional headers are shown”. 百度了一下,才知道可能是ajax异步提交和for ...
- 本地ubuntu下pycharm 如何利用远程开发环境时显示图片
最近使用pycharm远程开发tensorflow,每次在想显示图像时,苦于不知怎么操作,就通过保存后再看结果,使得调试很不方便.今天打算解决这个问题,收获也是很多啊. 我首先参考了这两篇博客: ht ...
- Redis(十二):redis两种持久化方法对比分析
前言 最近在项目中使用到Redis做缓存,方便多个业务进程之间共享数据.由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数 ...
- Atitit.软件仪表盘(2)--vm子系统--资源占用监测
Atitit.软件仪表盘(2)--vm子系统--资源占用监测 1. Jvisualvm.exe 2. jprofile 3. Heap //permgen monitor 作者::老哇的爪子At ...