第四节:C64+ DSP 的CPU及存储器体系中存储器关系
来源:互联网 发布:mysql主键可以为空吗 编辑:程序博客网 时间:2024/06/08 13:59
这里以DM6437为例,这个DSP是非常经典的一个。
我们首先看memry-map
表4.1 memry map
通过上表可以看到L1P,L1D,L2的存储器区间范围。真正有用的是从C64+和EDMA peripheral memory map 视角都能访问的内存范围,若是有一方是reserved状态,则
不能访问。因此
LIP RAM/CACHE的范围是0x10e08000~0x10e0ffff 共32K
L1D RAM的范围是0x10f04000~0x10f0fff 共48K
L1D RAM/CACHE的范围是0x10f10000~0x10f17fff 共32K
L2 RAM/CACHE 的范围是0x10800000~0x1081ffff 共128K
总结:除了L1D有一段48K的是纯RAM外(不可作缓存使用),其他几段都是可以作为存储器或者缓存混合使用的。
从某种意义上说,这是6437的先进之处,正是因为L1D中多了这么一段RAM。所以性能很好。
当然,你可以通过DSPBIOS或者cmd文件去配置RAM或者CACHE的范围,
这里给出示例代码
MEMORY { CACHE_L2 : origin = 0x10810000, len = 0x10000 CACHE_L1D : origin = 0x10f10000, len = 0x8000 DDR2 : origin = 0x80000000, len = 0x2000000 L1DSRAM : origin = 0x10f04000, len = 0xc000 IRAM : origin = 0x10800000, len = 0x10000 CACHE_L1P : origin = 0x10e08000, len = 0x8000}
注意:
DDR2的区间是肯定从0X8000000开始的。
IRAM和CACHE_L2共同分配了L2的地址范围。前者表示RAM,后者表示cache
L1DSRAM和CACHE_L1D共同分配了L2的地址范围。前者表示RAM,后者表示cache
可能有些人还是不明白RAM和CACHE到底啥区别:这里简单的说下
RAM即可你可以访问的区域,比如通过malloc申请的区域。你可以往这区域内写数据,也可以读数据。
CACHE即你不可以访问的区域,一般由CPU自己控制,你不可以往这个区域内写数据,也不可以读数据,完全是CPU在控制
- 第四节:C64+ DSP 的CPU及存储器体系中存储器关系
- 操作系统中存储器管理及CPU对存储器的访问
- 24C16 与24C64系列 存储器的区别
- NIOS中各程序存储器的关系
- NIOS中各程序存储器的关系
- 存储器与CPU的连接
- CPU对存储器的读写
- 基于BF531 DSP的存储器映射
- 关于DSP外扩存储器的几个问题
- 交叉问题:存储器分级体系的设计
- C64+系列DSP的总结
- CPU的高速缓存存储器的理解
- 存储器
- 存储器
- 存储器
- 存储器
- 存储器
- 存储器
- oracle存储过程异常信息的显示
- heap算法,binary_search
- makefile学习
- 策略模式
- Sed命令简明教程
- 第四节:C64+ DSP 的CPU及存储器体系中存储器关系
- includes,lower_bound,upper_bound,equal_range
- Unable to handle kernel paging request at virtual address错误的解决
- a##b,在c语言中是什么运算?
- 【黑马程序员】 What is .NET?
- set_union,set_intersection,set_difference,set_symmetric_difference
- hdu1242 Rescue
- C++内存对齐
- accumulate,inner_product,partial_sum,adjacent_difference