苹果6sp680多大内存?

不过有一部分原因是规模损失,rx660m 1.9g 预计在10w附近,wle能有接近3000,n6+高频,这个能效算相当亮眼了(点名某通)



12cu到底是谁搞出来的,8cu 2.2g性能弱不太多(大概ts2100) 功耗还要低一大截(大概18—20w),成本也省了


6cu功耗估计的不太对,6cu只关shader并没有关共享部分,功耗应该是比12cu同频一半高不少的。顺便功耗也不能直接和移动端比,按移动端整机减空载的方法10w的核心功耗在移动端的方法下得15w




ts2500+吧,而且目前内存带宽和三缓带宽有点问题(没锁flck)


苹果的powervr核显是给移动端适配的TBDR管线
英伟达从900系开始也支持了TBR管线
只有AMD目前依然是纯正的IMR桌面渲染管线,这一点也不fusion异构
到了RDNA3,a卡可能也会开始支持TBR,届时a卡的能耗和带宽需求能得到改善,不过这需要进一步的优化支持


首先给大家分享一个巨牛巨牛的人工智能教程,是我无意中发现的。教程不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈~我正在学习中,觉得太牛了,所以分享给大家!点可以跳转到教程

  • 提升处理能力:每个时钟周期同时处理高达 1024位数据

    HVX宽度——可同时处理的数据位数——每个时钟周期应用可执行更多工作。

    标准移动CPU为32位指令宽度,其计算协处理器扩展4倍,达到128位宽度。基本Hexagon处理器为64位指令宽度,是移动CPU正常宽度的两倍,而HVX协处理器扩展了8倍,达到1024位宽度。如下图红色所示,Hexagon DSP可结合两个512位矢量模式单元,在单一时钟周期处理1024位数据。HVX使用超长指令字(VLIW)实现惊人的工作宽度。因此,内置HVX的Hexagon拥有比标准移动CPU 高出8-32倍的性能

    为什么这一点很重要?假设您在移动CPU控制代码模式进行处理,然后切换到协处理器的计算模式。此时,如果您需要使用控制代码,就必须暂停,从协处理器返回到主CPU。而利用Hexagon处理器,DSP的控制代码处理器和HVX的计算代码处理器可同时运行,紧密耦合控制和计算代码。这样,DSP可以获取HVX计算结果,并且用于下一个时钟周期的控制码决定。Corephotonics和SMI在他们的应用中利用了HVX紧密耦合的控制和计算代码。

  • 提高计算效率:绕过 CPU的流式处理

    HVX的流式处理模式适合于极低功耗相机处理。将数据直接从相机流传输到Hexagon DSP本地内存(二级缓存),HVX使得超越摄影的新用例成为可能,比如计算机视觉(CV)、计算成像和机器学习。

    在相机流处理的例子中,比方说您的应用需要将数据从相机感光元件移动到设备处理器。如果没有HVX,应用需将数据读取到DDR内存,然后由CPU读取DDR执行计算,这样,在真正的处理还没有开始之前就消耗了数十毫瓦电量,并且造成DDR内存往返延迟。利用Hexagon SDK 3.0,您可以在Hexagon DSP的HVX中直接处理流式传输,避免临时存储,省却传输步骤,而且还不用涉及到CPU。

    通过直接在DSP运行数据,HVX可以在本地处理数据,尽可能地降低总耗电量。这一点对于集成视觉和机器学习的应用来说尤其有用,可以在隔离状态下立即处理相机数据。如果DSP上的机器学习确认某事件需要额外的处理能力,HVX可以触发调动芯片上的其他元件。

  • 降低功耗:始终在线感知

    智能手机越来越聪明,如果它们能够始终保持警觉,就更加有用了。保持警觉的重要一环就是依赖DSP的始终在线感知:HVX 解决了始终在线感知领域两个挥之不去的问题。首先,始终保持警觉需要消耗巨多电量。但是,运行在DSP的HVX 本身耗电量极低,而且无需调动其它元件就可以做到始终在线感知。其次,视觉一直是最难以捉摸的始终在线感知能力,因为相机数据流式传输时会经过主芯片。但是,HVX 打通了一条直接从相机传输数据到DSP的通道。和其他感知能力一样,借助HVX,始终在线的视觉只有在需要额外处理能力时才会调用芯片的其它元件。

    • 始终在线的语音——设备关闭,等待您称呼它,识别您的语音或关键字。
    • 始终在线的触摸——设备在后台监控屏幕,在您触摸屏幕时唤醒。
    • 始终在线的传感器——罗盘、加速度计等传感器连接到传感器中心,等待需要额外处理的事件。
    • 始终在线的视觉——相机将数据流传输到设备,仅在出现阈值事件才触发处理。
  • Hexagon的内存管理支持MMU和TLB,为应用程序提供了灵活的VA(Virtual Address)访问,其框图如下所示:

  • dspCV的目的:尽可能地封装DSP运行环境,以减小应用开发的风险

  • 在SDK中只提供的对应的库(.a和.so)

它在一个cycle中执行以下操作:

  • 以0开销的方式执行循环分支,且有两个硬件分支:loop0loop1,这两个硬件循环可以嵌套。
  • 对于非嵌套循环,使用 loop0
  • 对于嵌套循环,loop0 作为内循环,loop1 作为外循环
  • 如果多于多个嵌套循环,则两个内循环使用硬件循环,外部使用软件分支

  • 与大部分指令包操作不一样,dual jumps不并行执行,而是以下顺序执行:

  • 使用{}明确定义指令包,一个指令包可以包含1到4个指令,这些指令在一个Cycle中被执行。
    • 原子性(要么全部执行,要么全部不执行,不能部分执行
    • 一个指令包有一个单一的PC地址,在指令包的中间不能执行分支操作
    • 指令包所需要的资源不能超过可获得的硬件资源,如: 不能多于两个load指令,因为只有2个load单元
  • 如果指令包违背了分组规则,则此包相当于未定义

如果一个寄存器的值在同一个指令包中产生并被使用,则使用时在寄存器后面加上.new。

寄存器R0是值是先用后增加,与C中的for循环类似:

其效果与如下代码相当,只是它更加灵活,可以运行时修改:

设置并访问150字节的循环Buffer:

上面的代码等效如下C代码(更新数据指针):

  • 定点数据(Fixed-point data):支持8/16/32/64位定点数据,数据可以为有符号/无符号 整数、分数

  • 饱和(Saturation):如果指令结果小于最小值,则设为最小值;若大于最大值,则设为最大值

  • l2fetch:是非阻塞调用,它只负责发送预取请求
  • Rs: 32位虚拟地址,指示内存区域的起始地址
  • Rt[15:8]:宽度(Width),批定内存块的宽度,以字节为单位(8位)
  • Rt[7:0]:高度(Height),指定有多少个Width数据行需要被预取(8位)
  • Rt[31:16]:跨度(Stride),一个无符号的字节偏移,用于在取完一行(width字节)之后增加取数据的指针

Hexagon条件执行:基于比较指令在4个8-bit判断寄存器(P0-P3)中的设置。

  • 标量判断:由8位值表示


根据Px的每个位选择对应的字节。

HVX增加了非常宽的SIMD,SIMD操作可操作1024位向量寄存器,且多个HVX SIMD指令可以并行执行(在同一个指令包),其特征如下:

  • 多个向量操作可以并行执行
  • 向量元素可以为有/无符号 字节、半字、字
  • V2X=0(SYSCFG寄存器)【64字节模式】:向量512位宽(64字节),向量判断64位宽

  • 向量寄存器与通用寄存器间的赋值

  • 一个指令包可包含两个插入指令或一个提取指令

  • 64字模式:需要64字节对齐,即地址的低6位无效
  • 128字节模式: 需要128字节对齐,即地址的低7位无效
  • 也可采用特殊指令VMEMU,而无需要对齐

  • 执行一个HVX指令需要2个或4个时钟周期。
  • 新的指令包每个2个钟周期发出一个执行请求

9.2 让每个指令包(VLIW Packet)处理更多的控制代码工作

  • 在使用VMEM指令加载(load)数据之前,应当使用l2fetch指令把需要的数据预加载到L2 Cache中
  • 在使用数据之前的几百个Cycles时发布。如果l2fetch发布太早,数据在使用前可能失效;通常处理此行(Rows)或片(Tiles)时,预取下一行或片。
  • 所有被VMEM使用的数据必须被预取,如果需要的数据没有被预取到L2,VMEM将停止(stall)
  • 如果以前的l2fetch没有执行完,新的l2fetch排除等候,如果排队数达到3,则取消最早的l2fetch
  • Rs:指定32位起始虚拟地址

  • Rt[31:16] = Stride:一个无符号字节偏移量,当预取完一块之后,数据指针增加此Stride
  • 0:预取以行的方式执行,即在处理下一行之前,在一行中的所有cache lines应当被预取
  • 1:预取以行的方式执行,即在处理下一列之前,在一列中的所有cache lines应当被预取

我要回帖

更多关于 6s内存怎么扩充 的文章

 

随机推荐