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的更多相关文章

  1. c语言string.h和memory.h某些函数重复问题

    在C语言中,为了使用memset()函数,你是选择#include <string.h>还是<memory.h>?两个都可以,如何选择? <string.h>,标准 ...

  2. Linux内存初始化(三) 内存布局

    一.前言 同样的,本文是内存初始化文章的一份补充文档,希望能够通过这样的一份文档,细致的展示在初始化阶段,Linux 4.4.6内核如何从device tree中提取信息,完成内存布局的任务.具体的c ...

  3. 【NX二次开发】NX内部函数,libugui.dll文件中的内部函数

    本文分为两部分:"带参数的函数"和 "带修饰的函数". 浏览这篇博客前请先阅读: [NX二次开发]NX内部函数,查找内部函数的方法 带参数的函数: bool A ...

  4. 【翻译自mos文章】Windows平台下的 Oraagent Memory Leak

    来源于: Oraagent Memory Leak (文档 ID 1956840.1) APPLIES TO: Oracle Database - Enterprise Edition - Versi ...

  5. 在Linux和Windows平台上操作MemoryMappedFile(简称MMF)

    操作系统很早就开始使用内存映射文件(Memory Mapped File)来作为进程间的共享存储区,这是一种非常高效的进程通讯手段..NET 4.0新增加了一个System.IO. MemoryMap ...

  6. 操作系统课程设计--Linux平台哲学家问题

    哲学家问题是操作系统中资源分配的经典问题 linux平台下的系统api不同于Windows下的实现 要求:一个正确的哲学家程序(不会发生死锁) 一个错误的哲学家程序(会发生死锁) 系统环境:Eleme ...

  7. 使用MAT(Memory Analyzer Tool)工具分析dump文件--转

    原文地址:http://gao-xianglong.iteye.com/blog/2173140?utm_source=tuicool&utm_medium=referral 前言 生产环境中 ...

  8. 用Vagrant和Ansible搭建持续交付平台

    这是一个关于Vagrant的学习系列,包含如下文章: Vagrant入门 创建自己的Vagrant box 用Vagrant搭建Jenkins构建环境 用Vagrant和Ansible搭建持续交付平台 ...

  9. 搭建基于 STM32 和 rt-thread 的开发平台

    我们需要平台 如果说,SharePoint 的价值之一在于提供了几乎开箱即用的 innovation 环境,那么,智能设备的开发平台也一样.不必每次都从头开始,所以需要固定的工作室和开发平台作为创新的 ...

随机推荐

  1. Unity3D 多平台_预编译相关宏定义

    http://www.cnblogs.com/zhaoqingqing/p/3510332.html API地址:http://docs.unity3d.com/Documentation/Manua ...

  2. CentOS如何安装linux桌面?

    CentOS如何安装linux桌面? 以前默认安装分centos没有图形界面,今天想用下, yum groupinstall "GNOME Desktop" "Graph ...

  3. UML和模式应用学习笔记-2(迭代和进化式开发)

    一:什么是迭代和进化式开发 1:迭代和进化式开发:通常会在还没有详细定义所有需求的情况下假设开发开始,同时使用反馈来明确和改进演化中的规格说明: 2:迭代方法与较高的成功率.生产率和低缺陷率具有关系: ...

  4. OpenERP财务管理若干概念讲解

    来自:http://shine-it.net/index.php/topic,2431.0.html 一.记账凭证(Account Move) 会计上的记账凭证,也叫会计分录,在OpenERP中叫&q ...

  5. 【BIRT】修改BIRT的背景颜色

    修改BIRT报表的背景颜色都在这里了 在BIRT的webcontent/birt/styles/目录下有如下文件列表: dialogbase.css文件修改 dialogbase_rtl.css文件修 ...

  6. mysql 简单介绍

    mysql 不允许修改数据库名,一些客户端可以变通的方式来修改数据库名称 mysql 1064错误,语法错误 更改表名: rename table jian to song; 删除表 drop tab ...

  7. CentOS 6.3系统安装配置KVM虚拟机

      作业环境 服务器端 操作系统:CentOS 6.3 final x86_64 IP: 133.133.10.50 Hostname:myKVM KVM:qemu-kvm-0.12.1.2-2.29 ...

  8. 演示unity内存管理机制的缺陷

    概述 这是最近做项目时发现的一个内存管理机制上的一个缺陷,但是我并不知道这究竟是不是一个bug,因为他可以造成内存泄漏,但是却能避开野指针. 详细 代码下载:http://www.demodashi. ...

  9. Android--从路径中提取文件名

    方法一:利用String类 public String getFileName(String pathandname){ int start=pathandname.lastIndexOf(" ...

  10. vsftp 无法启动,500 OOPS: bad bool value in config file for: anonymous_enable

    朋友的FTP启动不了,叫我帮他看,启动时出现以下错误信息: 500 OOPS: bad bool value in config file for: anonymous_enable 看似配置文件错误 ...