首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Host1x HW sync and SW architecture in orin /thor

Host1x HW sync and SW architecture in orin /thor

作者头像
用户9732312
发布2026-03-18 21:01:20
发布2026-03-18 21:01:20
280
举报

Host1x 为orin/thor中的硬件模块,为各子系统(isp/codec/gpu/pva/ofa/cpu等) 提供编程与控制接口。cmd既可从内存中的push-buffer提供,也可由CPU直接提供,随后通过host1x通道传输至主机控制器后端的客户端。这些通道还通过硬件同步点信号(Syncpts)实现了软件与独立模块之间,以及各模块之间的同步机制,当Syncpts 到达时,以中断的方式通知ACPU,完成数据(camera picture、模型推理数据、vi、isp等)在各子系统间的流转,从而完成相关功能。

有如下功能

  • 63 Channels
  • 704 Sync Points
  • 32-bit Syncpt Comparison
  • 32-bit Timeout Register
  • Unit Activity Monitor (ACTMON): NVENC, VIC, NVDEC, and NVJPG
  • Support for VI, ISP, SOR0, SOR1, SOR2, SOR3, DPAUX0, PVA, and DLA clients
  • TrustZone® secure bit in Push Buffer (PB) path
  • Master Interface protocol: AXI 3.0
  • Client Interface protocol: HWR/HRD
  • 40-bit Host1x2MC address
  • Virtualization support: eight Guest OSs and one Central RM
  • Syncpt protection per channel
  • RAM-based Syncpts
  • Asymmetric client MMIO address range

Sync Points 原理

Host1x使用同步点 (Sync Points) 的硬件机制,利用硬件计数器和中断实现以下功能:

  • 实现软件与Host1x客户端之间(子系统),以及Host1x 与客户端彼此之间的同步。
  • 暂停 (Stalling) 发往Host1x客户端的命令流

同步点是一种用于在软件与Host1x客户端之间,以及Host1x客户端彼此之间实现同步的机制。该机制通过32位计数器实现,每当特定的预设条件(或事件)发生时,计数器值递增1。当计数器达到其最大值时,下一次递增操作将使其回绕 (Wraps) 归零。

利用同步点进行同步通过以下方式实现:

  • 当同步点计数器达到预设值时,中断 (Interrupt) CPU。
  • Host1x通道可包含等待命令 (Wait Commands),使通道等待同步点计数器达到预设值
  • 同步点计数器通常不进行复位 (Reset),但会发生回绕;同步点比较逻辑在设计时已考虑回绕的可能性。

所有主机控制器客户端(例如,视频输入模块 VI)均实现以下递增同步点的方法,

Incr_Syncpt<条件><索引>

主机控制器客户端接收 Incr_Syncpt 方法指令,并为每个条件存储对应的索引值。每当指定的"条件 (Condition)"事件发生时,客户端将该索引值返回给主机控制器。

同步点计数器递增有两种基本方式:

  • CPU 写入索引:CPU 向主机控制器的 syncpt_cpu_incr 寄存器写入一个索引值
  • 客户端条件满足:主机控制器客户端在接收到 incr_syncpt 方法指令后,当该方法指定的条件变为真(即事件发生)

同步点逻辑(Syncpt Logic)中的寄存器(包括同步点计数器寄存器 (Syncpt Registers) 和阈值寄存器 (Threshold Registers))均采用 RAM (随机存取存储器) 实现,以减小芯片面积 (Reduce Area)。 同步点寄存器可被多个客户端 (Clients) 进行读写访问。

具有写访问权限的客户端包括:

  • Host Controller clients
  • Command processing logic
  • Register write logic (direct and indirect paths)
  • GPU interface

具有读访问权限的客户端包括:

  • Command processing logic
  • Syncpt Interrupt generation logic
  • Register read Interface (MMIO path)
  • SyncptShim interface

Single Channel Example

Channel Concurrency Example

基于上述示例,由于不存在通道间相互阻塞的情况,两个通道可实现完全并发工作。在为通道分配客户端时需谨慎规划:通道并行性(Channel Concurrency)与通道吞吐量(Channel Throughput)对系统性能至关重要

系统共设704个同步点(Syncpts)。其运作机制类似于信号量:主机控制器向客户端下发同步点方法指令时,会指定同步点计数器索引并约定执行状态条件。通过主控器的"等待"方法,可配置任意通道在特定同步点索引值处进入等待状态。

当客户端接收到同步点方法指令后,将根据预设条件向主机控制器返回对应的同步点索引。主机控制器据此递增该特定同步点计数器。以下简单示例演示同步点与等待机制如何实现同步,其中箭头表示通道间的依赖关系(即某通道等待另一通道触发同步点递增)。

Channel Synchronization Example

软件架构

Host program and set syncpoint

Check Syncpoints

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-07-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Android性能优化 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档