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. 【Python学习笔记】注释,代码块,多行输出,忽略转义符的输出
  2. NPM依赖包版本号~和^的区别
  3. 控制属性修改时间,控制时间,联合主键
  4. python读取图像并相加_python给图像加上mask,并提取mask区域实例
  5. sqlserver日志文件在哪_用友SQL SERVER数据库置疑修复实例
  6. 数据结构排序系列详解之二 希尔排序
  7. 通过webService下载sharepoint文档库文件
  8. android模拟器mac版本下载,天天模拟器for Mac-天天模拟器mac版下载 V1.0.7-PC6苹果网...
  9. python培训班-python培训班哪家好
  10. 不是所有的战略规划都可以用BLM
  11. hive percentile_approx原理
  12. 初学量子力学,读读这本《见微知著》,会豁然开朗
  13. SpringBoot强制下载文件
  14. 什么是金融租赁?什么是融资租赁?
  15. 信息系统安全实验——Week 10
  16. MySQL数据文件被误删,如何进行恢复?
  17. 服务器硬件认识,关于服务器,你了解多少呢?
  18. TodoList案例
  19. 一笔画游戏路径搜索代码未优化
  20. 关于 Qt Creat

热门文章

  1. 2023年首都师范大学学科教学(历史)考研上岸前辈备考经验指导
  2. 电子狗服务器登记到本机信息,电子狗在线升级 车友在线全智能化操作
  3. VNCViewer连接KVM虚机鼠标不同步问题
  4. 6.824: Distributed Systems Spring 2020
  5. 人工智能应用加持,戴尔科技升级混合办公新体验
  6. Smart Card
  7. Programming Chirp Parameters in TI Radar Devices(TI雷达设备中的Chirp参数编程)
  8. 编译原理(8):代码优化
  9. 名著推荐 - 供大学生提高科学人文素养的60部西学名著
  10. python离线语音唤醒算法_python语音唤醒-pocketsphinx