
多核
文章平均质量分 80
Xiaojie雷达说
微信:15903508184
展开
-
多核编程指南(十三)---系统调试
TI公司的C64XX和C66XX设备为程序可视化和设备中的数据流提供硬件支持。大部分硬件都内置在内核中,系统事件用于扩展芯片其余部分的可视性。事件还充当核心和系统之间的同步点,允许所有活动在一个事件线上"缝合在一起"。Debug and Tooling Categories在运行时,可以使用硬件和软件工具来调试特定问题。鉴于在系统升级开发的不同阶段可能出现不同的问题,可用的调试和工具资源分为几个类别进行描述。下表为对应的4个场景...原创 2021-09-26 15:16:20 · 1063 阅读 · 0 评论 -
多核编程指南(十二)---DSP代码和Data镜像
为了更好地支持多核设备的配置,理解如何定义软件项目和操作系统分区非常重要。在任何多核SOC的SYS/BIOS配置中,local L2内存(LL2RAM)和共享二级内存(SL2RAM)都有单独的内存部分。根据应用程序在多个核心之间的通用性,根据应用程序在多个核心之间的通用性,需要不同的配置来最小化操作系统和应用程序在设备内存中的占用空间。Single Image单个镜像应用程序在所有内核之间共享一些代码和数据内存。这种技术允许完全相同的应用程序在所有内核上加载和运行。如果运行完全共享的应用程序(当所有内原创 2021-09-12 10:12:56 · 1364 阅读 · 0 评论 -
多核编程指南(十一)---内存管理(三)
Peripheral Drivers所有外围设备都是共享的,任何核心都可以随时访问任何外围设备。初始化应该在引导过程中发生,可以直接通过外部主机、I2C EEPROM中的参数表,也可以通过应用程序代码本身中的初始化序列(仅一个内核)。对于所有运行时控制,由软件决定特定内核何时初始化外围设备。一般来说,直接从内存位置读写的外围设备使用内置在外围设备中或由EDMA控制器(取决于设备)提供的通用DMA资源。基于路由方案发送或接收数据的外围设备使用多核导航器(Multicore Navigator),并具有PK原创 2021-09-09 18:44:08 · 335 阅读 · 0 评论 -
多核编程指南(十)---内存管理(二)
Shared Code Program Memory Placement当CPU从共享代码映像执行时,务必注意管理本地数据缓冲区。用于堆栈或本地数据表的内存可以使用别名地址,因此对于所有核心都是相同的。此外,任何用于暂存数据的L1D SRAM(使用IDMA从L2 SRAM进行分页)都可以使用别名地址。如前所述,DMA主机必须为任何内存传输使用全局地址。因此,在任何外设中编程DMA上下文,代码必须将核心(DNUM)插入地址为了在KeyStone系列设备的内核之间划分外部内存部分,应用程序使用MPAX模块原创 2021-09-09 16:12:11 · 478 阅读 · 0 评论 -
多核编程指南(九)---内存管理(一)
在对多核设备进行编程时,考虑处理模型是非常重要的。在TCI66xx和C6xx设备上,每个内核有本地L1/L2内存,可以平等访问任何共享的内部和外部内存。通常预期每个内核将执行共享内存中的部分或全部代码映像,数据是本地内存的主要用途。这对用户不是一个限制。如果每个内核都有自己的代码和数据空间,则不应使用别名本地L1/L2地址。应该只使用全局地址,这样可以对每个存储单元的整个系统有一个共同的看法。这也意味着对于软件开发来说,每个核心都有自己的项目,独立于其他核心而构建。共享区域通常在每个内核的映射中定义,并由原创 2021-09-09 15:35:19 · 1393 阅读 · 0 评论 -
多核编程指南(八)---共享资源管理
在设备上共享资源时,系统中的所有内核遵循统一的协议至关重要。信令机制也可以用于一般的资源管理。内核之间可以使用直接信令或原子仲裁。在内核中,可以使用全局标志或操作系统信号量。不建议使用简单的全局标志进行内部仲裁,因为要确保更新是原子性的,会有很大的开销。Global Flags全局标志在使用单线程的单核中非常有用。如果有一个资源依赖于正在完成的操作(通常是硬件事件),可以设置和清除一个全局标志,以便进行简单的控制。虽然基于软件结构的全局标志可以在多核环境中使用,但不建议使用。确保跨多个内核正常运行(防原创 2021-08-28 09:42:30 · 440 阅读 · 0 评论 -
多核编程指南(七)---数据传输驱动
参考文献:《Multicore Programming Guide》原创 2021-08-18 21:08:14 · 707 阅读 · 1 评论 -
多核编程指南(六)---进程间通信(三)
Multicore Navigator封装消息,包括在称为描述符的容器中包含数据的消息,并在硬件队列之间移动它们。每个目的地都有一个或多个专用的接收队列。Multicore Navigator允许接收方使用以下方法访问接收队列中的描述符文章目录Non-blocking PollingBlocking PollingInterrupt-based NotificationDelayed (Staggered) Interrupt NotificationQoS-based NotificationNon-原创 2021-08-15 18:23:18 · 305 阅读 · 0 评论 -
多核编程指南(五)---进程间通信(二)
进程间通信包括两个主要操作:数据移动和通知(包括同步)多核模型要求能够同步核心并在核心之间发送通知。一个典型的同步用例是当一个内核执行完所有系统初始化时,所有其他内核必须等到初始化完成后才能继续执行。并行处理中的分叉点和接合点需要核心之间(可以想象是核心的子集)的同步。同步和通知可以使用Multicore Navigator或通过CPU执行来实现。将数据从一个核心传输到另一个核心需要通知。对于non-navigator数据传输,在发送方准备好通信消息数据,使用shared、dedicated或trans原创 2021-08-11 19:44:29 · 475 阅读 · 0 评论 -
多核编程指南(四)---进程间通信(一)
Texas Instruments KeyStone系列设备TCI66xx和C66xx以及较旧的TCI64xx和C64xx多核设备提供了几种支持处理器间通信的体系结构机制。所有内核都可以完全访问设备内存映射;这意味着任何内核之间都可以读取和写入任何内存。此外,还支持用于通知的内核之间的直接时间信令,以及用于第三方通知的DMA事件控制。可用的信令是灵活的,允许根据所需的通信量定制解决方案。最后,有一些硬件元素允许原子访问仲裁,可以用来传递共享资源的所有权。多核导航模块可用于大多数KeyStone设备,它提供了原创 2021-08-09 10:40:19 · 677 阅读 · 0 评论 -
多核编程指南(三)---确定并行任务实现
识别应用程序中的任务并行性是一个挑战,即使在识别并行任务之后,跨多核系统映射和调度任务也需要仔细规划根据多核架构的软件分解,提出了一个四步流程,用于指导应用程序的设计:分区-设计分区旨在为并行执行提供机会。重点是定义大量的小任务,以便对问题进行细粒度分解通信-分区生成的任务旨在并发执行,但通常不能独立执行。在一个任务中执行的计算通常需要与另一个任务关联的数据。然后,必须在任务之间传输数据,以便继续计算。此信息流在设计的通信阶段指定组合:审查分区和通信阶段的决策,以确定将在多核架构上高效执行的分组原创 2021-08-03 18:07:01 · 502 阅读 · 0 评论 -
多核编程指南(二)---并行处理模型
任务并行是软件中独立任务的执行。在单核处理器上,不同的任务必须共享同一个处理器。在多核处理器上,任务基本上彼此独立运行,从而提高了执行效率将应用程序映射到多核处理器的第一步是确定任务的并行性并且选择最适合的处理模型两个主要的模型:1. 主/从模型:其中一个核控制所有核上的工作分配2. 数据流模型:工作像流水线一样通过处理阶段文章目录主/从模型(MASTER/SLAVE MODEL)数据流模型(DATA FLOW MODEL)OpenMP Model主/从模型(MASTER/SLAVE MODE原创 2021-08-02 15:47:31 · 1280 阅读 · 0 评论 -
多核编程指南(一)---为什么要引入多核
参考文献:《Multicore Programming Guide》原创 2021-08-02 15:47:09 · 563 阅读 · 0 评论