• 发文章

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动
0
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
返回

电子发烧友 电子发烧友

  • 全文搜索
    • 全文搜索
    • 标题搜索
  • 全部时间
    • 全部时间
    • 1小时内
    • 1天内
    • 1周内
    • 1个月内
  • 默认排序
    • 默认排序
    • 按时间排序
  • 全部板块
    • 全部板块
大家还在搜
  • 一文搞懂Armv9的RME环境

    1、armv9的RME简介Arm 机密计算架构引入了 Realm Management Extension (RME) ,它支持称为Realm的新型可证明隔离环境。该环境建立在 TrustZone

    2022-07-27 16:41

  • Armv9 system register class空间编码简析

      1. 前言  Armv9 system register的编码空间由一组参数标识:{op0, op1, CRn, CRm, op2},它们形成了一个编码层次结构,其中:  op0:定义编码空间

    2023-03-17 15:08

  • 使用Armv9增强Chromium的控制流完整性

    反向沿变得更加困难。相关指令完全向后兼容,并在基于 Armv9 的 CPU 上作为无操作执行。将这些技术带到 Chromium 需要什么?对于像 Chrome 这样静态链接到单个二进制文件的应用程序

    2022-10-12 14:35

  • 如何在Android用上Armv9 CPU新引入的PAC安全特性和SVE2呢?

    基于Armv9 CPU的手机芯片已经被广泛采用。早在2020年,arm已经和google合作将这些新特性带入到Android 12, NDK r23也支持了PAC, BTI等。1. 如何利用PAC

    2022-10-13 11:44

  • ARM和Cortex-MARM处理器的体系结构定义

    ARM和Cortex-MARM处理器的体系结构定义了指令集(ISA)和基于这一体系结构下处理器的模型。ARM的指令集从ARMv1发展到今天的ARMv9,每一次体系结构的修改都会添加实用技术。

    2022-01-25 07:33

  • ARM究竟有没有美国的技术?

    会受限?  其实去年华为就表示过,华为已经购买了ARMV8的永远授权,就算后续合作关系不存了,也可以继续基于ARMV8开发芯片,后来ARM又表示过ARMV9也是可以使用的。    但事实上,华为

    2020-06-23 10:48

  • Armv9-A体系结构参考手册

    本增补件是Armv9-A体系结构的Arm®体系结构参考手册增补件轮廓本书介绍了Armv9-A体系结构扩展,因此必须与Arm®体系结构参考手册一起阅读A型架构。

    2023-08-08 07:07

  • ARMv8/ARMv9的Exclusive机制深度解读

    说明:本文虽然以spinlock函数为例,但并不会深度解读spinlock函数。本文重点解读exclusive机制。基础知识每一个core都有一个Internal exclusive monitor,它有open和exclusive两个状态,管理着:Load-Exclusive accesses 、Store-Exclusive accesses、Clear-Exclusive(CLREX) instructionsLoad-Exclusive instruction和Store-Exclusive instruction是LDX, LDAX, STX, STLX可以使用这些指令去构造semaphores、spinlock,以确保在同一个core之间的不同线程的同步操作。在不同的core之间也是可以使用同一个的coherent memory locations来确保同步。Load-Exclusive instruction标记一个block用于独占访问的内存, CTR_EL0定义了这个block的大小。LDXR Wt, [base{,#0}](1)、从 base地址处读取一个数字,存放到Wt寄存器中; (2)、将Monitor的状态变成exclusiveSTXR Ws, Wt, [base{,#0}](1)、将Wt中的数据写入到 base地址处,如果成功Ws返回0,否则返回1; (2)、将Monitor从exclusive状态切换成open, 如果切换成功,则说明写入成功,Ws返回0; 如果切换失败,则数据不会写入到内存,Ws返回1剖析:如果想用独占指令去store一个数,那么必需先要ldx/ldax指令,让Monitor置为exclusive状态,此时它才能继续进行store操作,store完成之后,Monitor将会从exclusive切回open状态。继续白话剖析:我想独占方式往一个地址写数,那么我必需独占monitor,然后我才能往相关地址写数据。示例1:同一个core上访问不同的锁如下一个spinlock的实现,在同一个核上,当有两个线程都要执行这一段代码时。1、thread1先调用 cpu_spin_lock [&lock1]执行到ldaxr时,此时Internal Exclusive Monitor将标记为exclusive状态。换句话说,core已经是 Exclusive Access state,马上就要准备写操作了。2、接着thread2也调用 cpu_spin_lock [&lock2]执行了到ldaxr,此时Internal Exclusive Monitor已经是exclusive状态了,无需重新设置。换句话说,core依然是 Exclusive Access state,马上就要准备写操作了。3、接着thread1先调用了stxr操作,窝槽牛逼啊,直接就成功了,成功将w2写入到[X0]地址处,w1并返回0表示操作成功。此时Internal Exclusive Monitor将会从exclusive切换成open状态。。 4、接着thread2也调用了stxr操作,因为此时Internal Exclusive Monitor已经是open状态了,所以此时的写入操作将会失败。即w2不会被写入到[X0],且w1返回1,反馈给程序一个结果,告诉他:嗨,这步执行没有通过哦。5、按照上述程序的逻辑,thread2在执行stxr失败后,w1返回1, 此时将程序跳回 l2处,重新来一遍...示例2:不同的core上访问不同的锁依然是上述的例子,如果是不同的CPU在获取同一把锁会怎样呢?1、thread1先调用 cpu_spin_lock [&lock1]执行到ldaxr时,此时core1的Internal Exclusive Monitor将标记为exclusive状态。换句话说,core1已经是 Exclusive Access state,马上就要准备写操作了。2、接着thread2也调用 cpu_spin_lock [&lock2]执行了到ldaxr,此时core2的Internal Exclusive Monitor将标记exclusive状态,换句话说,core依然是 Exclusive Access state,马上就要准备写操作了。3、接着thread1先调用了stxr操作,窝槽牛逼啊,直接就成功了,成功将w2写入到[X0]地址处,w1并返回0表示操作成功。此时Internal Exclusive Monitor将会从exclusive切换成open状态。。4、接着thread2也调用了stxr操作,因为此时core2的Internal Exclusive Monitor依然经是exclusive状态了,所以此时的写入操作会成功。示例3:不同的core上,访问相同的锁。依然是上述的例子,如果是不同的CPU在获取同一把锁会怎样呢?1、thread1先调用 cpu_spin_lock [&lock1]执行到ldaxr时,此时core1的Internal Exclusive Monitor将标记为exclusive状态。换句话说,core1已经是 Exclusive Access state,马上就要准备写操作了。2、接着thread2也调用 cpu_spin_lock [&lock1]执行了到ldaxr,此时core2的Internal Exclusive Monitor将标记exclusive状态,由于[X0]标记exclusive访问,将会被缓存到Coherent memory中,此memory遵循MESI协议,故此时该地址数据也会被同步到Global Monitor的cache和Core2的Internal Monior的cache中,也就是说,此时Global Exclusive Monitor也换成了该地址数据,并且也是exclusive状态了。3、接着thread1先调用了stxr操作,窝槽牛逼啊,直接就成功了,成功将w2写入到[X0]地址处,w1并返回0表示操作成功。此时core1的Internal Exclusive Monitor将会从exclusive切换成open状态。Global Monitor也会从exclusive切换成open状态4、接着thread2也调用了stxr操作,根据MESI协议,core2在执行store操作时,必先去snoop core1的cache,此时该地址数据将同步到Global Monitor的cache和core2的Internal Monitore的cache中,此时Global exclusive Monitor将会被置为open状态。因为Global exclusive Monitor缓存了该地址数据,并且为open状态,故stxr操作将失败;5、如果此时core2再次执行一次ldaxr,然后再去执行stxr则能成功。6、按照上述程序的逻辑,core2在执行stxr失败后,w1返回1, 此时将程序跳回 l2处,重新来一遍...原作者:baron

    2023-02-21 15:26

  • 请问一下汇编怎么学?听说不是标准的语言

    刚毕业,发现嵌入式要懂点汇编,查了一下,有什么thumb,thumb2,ARMV7 ARMV9什么的,而且好像不同芯片的芯片语言语法都不一样,请问怎么入手呢?

    2015-12-04 09:28

  • Armv8-A和Armv9-A的内存属性和属性介绍

    1. 本指南介绍Armv8-A和Armv9-A的内存属性和属性。它首先解释内存的属性来自何处,如何分配到内存区域,然后介绍现有的不同属性,并解释内存顺序的基本特性。这一信息对开发低级别代码(如启动

    2023-08-02 09:03