C64x+ megamodule包含:C64x+ CPU、L1P、L1D、L2、IDMA(内部DMA)、BWM(带宽管理)、INTC(中断控制器)、PDC(power-down控制器)和EMC(外部存储器控制器)。

1. C64x+ CPU

C64x+ CPU是C64x CPU的增强版,提供了下面一些新特征:

l  扩展了新的指令

l  增加了代码压缩

l  软硬件的异常中断

C64x+目标码与C64x兼容。

2. L1P控制器

L1P控制器是CPU取指流水线与L1P内存的接口。你可以配置L1P内存作为one-way set-associative cache。Cache尺寸可以配置为0KB、4KB、8KB、16KB、32KB。

L1P提供带宽管理、内存保护和power-down支持。L1P复位后初始化配置全部为SRAM或最大容量的CACHE,这取决于具体的芯片。

3. L1D控制器

L1D控制器是CPU数据通道与L1D内存之间的接口,L1D内存可以配置为two-way set-associative cache。Cache尺寸可以配置为0KB、4KB、8KB、16KB、32KB。

L1D支持带宽管理、内存保护、power-down。L1D上电复位后总是初始化为全部为SRAM或最大容量的CACHE,这取决于具体芯片。

4. L2控制器

L2控制器是L1内存与更高层内存之间的接口。L2内存的一部分可以配置为four-way set-associative cahe,cache尺寸可以配置为0KB、32KB、64KB、128KB、256KB。

L2支持带宽管理、内存保护、power-down。L2上电复位时总是全部初始化为SRAM,如果你想将其中一部分作为CACHE实用,你必须在运行时自己配置。

如果你配置L2内存一部分作为cache,L2控制器提供Writebacks操作或同时Invalidation操作,这些操作可以基于全局或块。你可以指定这些内存一致性的操作,也可以自动发生,这取决于cache结构。

5. IDMA

IDMA是megamodule的局部DMA。它在megamodule内部(L1P、L1D、L2和CFG)执行数据搬移操作。

有两个通道的IDMA(通道0和通道1):

l  通道0允许在外设配置空间(CFG)和任何局部内存(L1P、L1D、L2)之间搬移数据。

l  通道1在局部内存(L1P、L1D、L2)之间搬移数据。

IDMA数据搬移发生在CPU操作后台,也就是说IDMA可以与CPU并发进行操作,而不需要消耗任何附加的CPU资源。

IDMA不能传输数据到或去内部的MMR空间。

6. BWM(带宽管理)

C64x+ Megamodule包括一套资源(L1P、L1D、L2和配置总线)以及对这些资源进行请求的一个请求集(CPU、SDMA、IDMA和一致性操作),为了避免一个请求对一个资源的长期存取而造成的阻塞,C64x+ Megamodule采用一个带宽管理方案,以确保所有请求者都能够获得一定大带宽资源。

带宽管理的大概机制是:每个请求者被分配一个优先级,共9个优先级:0-8,0优先级最高,8最低。当多个请求竞争一个资源时,优先级最高的获得服务。当竞争持续发生多个连续周期时,一个竞争计数器允许较低优先级请求者在每n个竞争周期获得1个周期对资源的存取。这里n可编程。在竞争发生时,BWM通过每个周期使竞争计数器+1,当请求被允许时,这个计数器1复位到0。当这个计数器到达n时,较低优先级请求者的优先级设为-1,从而至少获得一次存取。当然这个计数器对你来说不可见。

7. INTC(中断控制器)

C64x+ CPU提供两种类型的异步事件服务:

l  中断

l  异常

当出现外部或内部硬件事件,即可能产生中断,中断使正常的程序流发生重定向。异常在程序流重定向方面与中断是类似的,但通常与一个系统错误条件相关联。

C64x+ CPU能接收12个可屏蔽/可配置中断、1个可屏蔽异常和一个不可屏蔽中断/异常。CPU能响应内部种种异常条件。

Megamodule包括一个中断控制器,允许124个系统事件路由到CPU的中断/异常输入。这124个事件也能直接连接到可屏蔽中断,或分组一起作为中断和异常。这些不同的路由选择使事件的处理具有很大的灵活性。

当一个中断通知给CPU,而同时对于这个中断正好已经有一个悬挂标志,这时会产生错误事件,除了路由事件外,当CPU丢失一个中断时,中断控制器会检测。当丢失一个实时事件时,你可以用这个错误事件通知CPU。INTC硬件在一个寄存器里保存丢失中断的中断号,以便采取纠正行为。

8. MPA(内存保护结构)

C64x+ Megamodule提供内存保护,支持L1P、L1D和L2。系统及内存保护取决于每个器件,并不是所有器件都支持。

内存保护全局定义,但局部实现。这样总的保护方案是为整个C64x+ Megamodule定义的,但是每个资源实现它自己的保护硬件。这种内存保护分布式方法使你只要掌握一个内存保护接口就可以了。同时C64x+仍保留足够的灵活性以支持将来的外设和内存。

为了实现内存保护方案,内存映射被划分为页,每个页有一个相关的允许集,非法存取将产生一个异常并以内存错误寄存器器报告给系统。另外,MPA支持优先级模式(超级、用户)和内存锁。

9. PDC(Power-Down控制器)

PDC允许软件对C64x+ Megamodule各部分实施power-down管理。CPU可以基于自己执行的线程或对外部激励的响应来管理C64x+ Megamodule各部分的power-down。

10.            EMC(外部内存控制器)

EMC是Megamodule与设备其它部分的桥,它包括三个端口:

l  配置寄存器(CFG):这个端口提供对内存映射的寄存器的存取。这些寄存器控制C64x+芯片的不同的外设和资源。

l  Master DMA(MDMA):MDMA提供对Megamodule外部资源的存取,传输的启动是由Megamodule,也就是说在这儿Megamodule是传输的Master。MDMA典型用于CPU/Cache对L2外的内存存取。这些存取可能是一个cache line定位、writebacks和不可cache对系统内存的load、store。

l  SLAVE DMA(SDMA):SDMA是对megamodule内部资源的存取,发起者在megamodule外部,比如一个DMA控制器、HPI等,这时megamodule处于从位置。

CFG总线总是32bits宽,总应当以32bits LOAD/STORE指令存取或IDMA。MDMA和SDMA端口可以是32、64或128bits宽。它们的实际宽度取决于每个器件。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wjdvt/archive/2009/08/20/4467519.aspx

C64x+ Megamodule概述相关推荐

  1. Java 多线程概述

    多线程技术概述 1.线程与进程 进程:内存中运行的应用程序,每个进程都拥有一个独立的内存空间. 线程:是进程中的一个执行路径,共享一个内存空间,线程之间可以自由切换.并发执行,一个进程最少有一个线程, ...

  2. 【SpringMVC】概述

    概述: SpringMVC:是基于spring的一个框架, 实际上就是spring的一个模块, 专门是做web开发的.                       理解是servlet的一个升级 Sp ...

  3. 梯度下降优化算法概述

    本文原文是 An overview of gradient descent optimization algorithms,同时作者也在 arXiv 上发了一篇同样内容的 论文. 本文结合了两者来翻译 ...

  4. Redis概述和基础

    Redis 1.NoSQL NoSQL = Not Only SQL(不仅仅是SQL) 泛指非关系型数据库的,随着web2.0互联网的诞生!传统的关系型数据库很难对付web2.0时代!尤其是超大规模的 ...

  5. OpenCL™(开放计算语言)概述

    OpenCL™(开放计算语言)概述 异构系统并行编程的开准 OpenCL™(开放计算语言)是一种开放的.免版税的标准,用于对超级计算机.云服务器.个人计算机.移动设备和嵌入式平台中的,各种加速器进行跨 ...

  6. 自动驾驶QNX,Linux,Autosar概述

    自动驾驶QNX,Linux,Autosar概述 QNX是一个分布式.嵌入式.可规模扩展的实时操作系统.遵循POSIX.1 (程序接口)和POSIX.2 (Shell和工具).部分遵循POSIX.1b( ...

  7. Tengine MLOps概述

    Tengine MLOps概述 大幅提高产业应用从云向边缘迁移的效率 MLOps Cloud Native 聚焦于提升云端的运营过程效率 MLOps Edge Native 聚焦于解决边缘应用开发及异 ...

  8. Tengine Web服务器概述

    Tengine Web服务器概述 Tengine是由淘宝网发起的Web服务器项目.在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性.目的是打造一个高效.安全的Web平台. 发展 ...

  9. Docker基本原理概述

    Docker基本原理概述 Docker是一个用于开发,交付和运行应用程序的开放平台.Docker能够将应用程序与基础架构分开,从而可以快速交付软件.借助Docker,可以以与管理应用程序相同的方式来管 ...

最新文章

  1. c库的rand/random随机数产生函数性能差?
  2. activity中fragment 返回键不退出_分享一波阿里Android客户端面经,我竟连这都答不上来?...
  3. python小游戏代码大全-python贪吃蛇游戏代码
  4. Python 08 面向对象
  5. 电脑数据存储工具----光盘驱动器
  6. 使用Lock and Load X 插件时导致Final Cat Pro意外退出的解决办法
  7. Qt C/C++统计运行时间
  8. SpringMVC @ResponseBody 406
  9. error: Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual C++ Build Tools“:解决方案
  10. kettlejava脚本的api_kettle java api 执行 Kettle 的作业和 转换
  11. Spring框架之控制反转和依赖注入
  12. 在r中弄方差分析表_使用R语言进行单因素方差分析
  13. PDF图纸怎么导入CAD中?尝试这样操作一下
  14. ES6,ES5,ES3,对比学习~
  15. 使用TensorFlow XLA辅助实现BERT预训练加速
  16. 普通用户登录出现“sorry, that didn‘t work please try again”
  17. 怎么修改背景图片大小的HTML代码,css如何改变背景图片大小?
  18. 2014 CVPR-DeepReID Deep Filter Pairing Neural Network for Person Re-Identification
  19. pandas操作excel,matplotlib.pyplot画图插入到excel,处理复杂excel简单练习
  20. 【杂题】cf1041fF. Ray in the tube

热门文章

  1. MC我的世界 模拟城市模组 Sim-U 1.8.9正式发布
  2. CodeCombat
  3. 基于DDSRF正负序分离方法的不平衡电网PQ控制策略_平衡电流控制
  4. 基于XLINX的PWM控制LED模块设计
  5. 虾米音乐爬虫实战分析 批量下载虾米音乐到本地
  6. php mov格式,mov和mp4区别是什么
  7. [MTK]lk USB与下载工具交互简图
  8. 全球与中国用于AR-MR的高折射率玻璃基板市场运营模式与投资战略规划研究报告2022-2028年
  9. 使用TensorFlow训练神经网络识别MNIST数据一
  10. 纳尼?不用码代码,就可回归主流程,一只海豚就可以做到