首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏人人都是极客

    ARMv8 异常处理简介

    本文主要从这三个方面介绍ARMv8架构下CPU的异常处理流程。 一、ARMv8异常简介 1.异常级别 不同于Armv7架构采用CPU模式切换的方式进行异常处理,Armv8架构定义了一组全新的异常级别进行异常处理,即EL0至EL3,有如下特性: 如果ELn为异常级别,

    3.9K32发布于 2020-09-10
  • 来自专栏linux驱动个人学习

    aarch64 和 ARMV8 的区别

    aarch64 和 ARMv8 是紧密相关但涵义不同的术语,在解释他们的区别之前,让我们先简单理解它们各自的含义: ARMv8: ARMv8 是指 ARM 架构的第八个版本,这是由 ARM Holdings ARMv8 架构同时支持 64 位(AArch64)和 32 位(AArch32)指令集。 总而言之,ARMv8 指的是处理器架构的一个版本,这个版本包括了 64 位处理能力。而 aarch64 指的是 ARMv8 架构中的 64 位指令集。 也就是说,aarch64 是 ARMv8 的一部分。 所有运行在 aarch64 模式下的ARM处理器都基于 ARMv8 架构,但 ARMv8 架构也包括对之前架构如 ARMv7 的兼容支持(例如,在 32 位模式下运行)。

    4K10编辑于 2023-12-12
  • 来自专栏linux驱动个人学习

    ARMv8 寄存器

    本文主要介绍 Armv8/v9 指令集架构中常用部分,详细的还是要看 Arm architecture reference manual. ARMv8 架构 ARMv8 架构支持3种指令集: T32, A32, A64 ARMv8 架构有两种执行状态: AArch32, AArch64 一个App 可以混合使用 T32 和 A32, 但是不能混合使用 stack pointer ARMv8体系结构为每个异常等级都实现了一个栈指针SP_ELn,以异常等级为后缀 当PE在某个异常等级处理异常时,可配置使用如下2个栈指针之一(通过PSTATE.SP配置), Saved Program Status Registers (SPSRs)(备份程序寄存器) 用于保存发生异常时的处理器状态 ARMv8体系结构为每个可作为target exception level 在ARMv8中,将PE的状态抽象为PSTATE。

    76311编辑于 2024-03-17
  • 来自专栏linux驱动个人学习

    ARMV8体系结构简介

    1.前言 本文的主要内容来源于ARMV8白皮书v5,对ARMV8做一个概述。 包含如下的内容: 首先从背景谈起,讲述ARM的发展历程; 之后介绍ARMV8体系结构的基本特征; 介绍A64指令集 介绍异常级别 介绍内存管理单元 介绍编程寄存器 介绍DEBUG相关 ARMV8生态系统的演化 引入了多核 Cotex-A5:引入低功耗、低成本的网络互联 Cotex-A7:引入了出色的能效管理,可以延长手机的续航时间 Cotex-A15:引入了很多可选的扩展,如LPAE、虚拟化、 为何要引入ARMV8 ARMV8架构基本特性 ? ARMV8目前只定义了Application profile ARMV8定义了48bit符号虚拟地址和达到48bit物理地址 ARMV8采用了新的指令集A64 ARMV8兼容ARMV7的指令 A32和A64

    1.6K10发布于 2019-05-25
  • 来自专栏嵌入式ARM和Linux

    ARMv8虚拟化基础知识

    ARMv8架构提供了这种捕获VM操作并模拟它们的陷入控制标志位。当配置了某种陷入异常之后,VM执行某个特定的操作,将会造成异常,从而陷入到更高级别的异常级(EL)中。 对于这些寄存器,ARMv8架构提供了代替方案: VPIDR_EL2:EL1读取MIDR_EL1时返回的值。 VMPIDR_EL2:EL1读取MPIDR_EL1时返回的值。 为了使能这些机制,ARMv8架构支持虚拟中断:vIRQ、vFIQ和vSError。这些虚拟中断的行为与物理中断(IRQ、FIQ和SError类似,但只能在EL0或EL1上执行时发出信号。

    3.2K41编辑于 2022-08-15
  • 来自专栏人人都是极客

    ARMv8 内存系统学习笔记

    Normal memory 可以设置为 cacheable 或 non-cacheable,可以按 inner 和 outer 分别设置。

    86620编辑于 2023-09-11
  • 来自专栏嵌入式iot

    ARMV8 mmu页表结构分析

    1.概述 armv8 mmu页表结构比较复杂,总体说来可以将MMU分为以下几个部分: (1)虚拟地址(VA)为48位,而一般只使用到39位(512G内核,512G用户) (2)可以配置成3级页表(64K

    2.7K10发布于 2020-03-17
  • 来自专栏安智客

    图说ARMv8架构特点

    ARMv8是ARM重点发展的一个架构。有一些年头了!我们来了解下! 本文介绍了ARMv8-a中的一些概念! 从ARMv7开始,ARM公司面向三个市场:应用、实时、控制,分别推出A、R、M系列处理器。 在此背景下,ARMv8推出。 我们从5个方面描述: 1,AArch64,A64指令集,这里有一个误解是,64bit的指令集是指通用寄存器是64位宽的,而不是指32位的指令集编码变成64位的。

    3.2K70发布于 2018-02-24
  • 来自专栏安智客

    ARMv8架构特性总结

    ARMv8架构,引入了Execution State、Exception Level、Security State等新特性,是目前ARM架构变动最大的一次,具体来说: 1,A64:对于Large memory ARMv8 定义了4 个 Exception level,简称 EL0-EL3。同时Exception level 包含了 privilege 概念。 ?

    1.6K30发布于 2018-07-30
  • 来自专栏嵌入式与Linux那些事

    【ARM架构】armv8 系统安全概述

    对于ARMv8架构,当EL3使用AArch32时,ARMv8架构相当于ARMv7,以确保完全兼容,安全状态下的所有特权模式被视为处于EL3。 AArch32的安全模型如下图所示。 二者区别主要在于EL3的不同,ARMv7-A中EL3 提供Secure Monitor 和Srcure OS,而ARMV8 中,EL3只提供Secure Monitor 。

    1.2K20编辑于 2023-03-24
  • 来自专栏ADAS性能优化

    Armv8架构虚拟化介绍

    虚拟机视角的物理地址在Armv8中有特定的词描述,叫中间物理地址(intermediate Physical Address, IPA)。 这么做的话,这些主设备控制器也需要一个MMU,Armv8称之为SMMU(通常也称为IOMMU)。 对这些寄存器,Armv8提供了与其对应的不需要陷入的版本。Hypervisor可以在进入VM 时先配置好这些寄存器的值。 Armv8提供了vIRQs, vFIQs, 和vSErrors来支持虚拟中断。 理论上,Armv8可以配置成VM直接接收物理FIQs和虚拟IRQs。但在实际应用中,通常配置VM只接收虚拟中断。

    1.2K20编辑于 2022-05-13
  • 来自专栏人人都是极客

    万字剖析 Armv8 架构虚拟化

    虚拟机视角的物理地址在Armv8中有特定的词描述,叫中间物理地址(intermediate Physical Address, IPA)。 这么做的话,这些主设备控制器也需要一个MMU,Armv8称之为SMMU(通常也称为IOMMU)。 对这些寄存器,Armv8提供了与其对应的不需要陷入的版本。Hypervisor可以在进入VM 时先配置好这些寄存器的值。 Armv8提供了vIRQs, vFIQs, 和vSErrors来支持虚拟中断。 理论上,Armv8可以配置成VM直接接收物理FIQs和虚拟IRQs。但在实际应用中,通常配置VM只接收虚拟中断。

    1.4K30编辑于 2022-07-18
  • 来自专栏JNing的专栏

    手机指令集:armv7 & armv8

    经验总结: 手机指令集主要跟芯片相关,如果是c端,就默认是arm芯片了,也只有arm芯片才有armv7和armv8之分。 如果上MNN的话,MNN的量化都是做在armv8上的 现在c端大部分都是64位APP,对应的架构是armv8。 寄存器个数不一样,指令集也不一样。需要针对这些不同重新设计计算的方式。 armv8: 目前开源的库基本都是在armv8上做的优化。 armv8 比armv7大概10%~20%的收益,一般能用v8,就不用v7。 MNN量化之后armv8大概比armv7快一倍。 tnn的armv8做的还可以,v7这块笔者不太了解,关注得比较少。

    2K10编辑于 2021-12-06
  • 来自专栏linux驱动个人学习

    ARMv8基础篇】CCI-400控制器简介

    CCI(Cache Coherent Interconnect)是ARM中的cache一致性控制器。

    1.1K10编辑于 2023-10-17
  • 来自专栏全栈程序员必看

    ARMv8 Linux内核异常处理过程分析「建议收藏」

    看了Linaro提供的开源ARMv8 Linux内核源代码,发现ARMv8异常处理与ARMv7及之前的架构有所不同,简单分析。 LinaroARMv8工程:http://www.linaro.org/engineering/engineering-projects/armv8 1.1 Linux内核异常处理相关文件 Linux内核中 *.endm */ push x28,x29 //进行压栈操作,push也是一个宏定义,由于ARMv8没有push指令,用stp取代

    2.6K20编辑于 2022-07-07
  • 来自专栏linux驱动个人学习

    深入理解虚拟 物理地址转换,页表--基于ARMV8

    TTBR0 :(Translation Table Base Register)转换表基地址寄存器,用来存放用户(task_struct.mm.pgd)PGD全局转换表的基地址; 2.2 转换描述符格式 armv8

    1.4K00编辑于 2024-05-26
  • 来自专栏全栈程序员必看

    armv7与armv8的区别(v8和w12的区别)

    ARMv7 与 ARMv8的处理器架构自己一直没有详细了解过,现在来学习一下,在arm community 中文社区看到一个不错的总结。 两者之间的区别主要如下: ARMv8指令集分为Aarch64和Aarch32指令集,而ARMv7使用的是A32和T16指令集(分别为32位和16位)。

    2K50编辑于 2022-08-02
  • [jetson]Jetson平台使用Python时的出现“Illegal instruction(cpre dumped)”错误解决方法

    解决方法一:临时解决方法: 在终端export OPENBLAS_CORETYPE=ARMV8 解决方法二:将OPENBLAS_CORETYPE写入bashrc vi ~/.bashrc export OPENBLAS_CORETYPE=ARMV8 source ~/.bashrc 注意这个只对当前用户有效,因此加sudo仍然会提示Illegal instruction 解决方法三:随着脚本执行 OPENBLAS_CORETYPE =ARMV8 python3 xxx.py

    19700编辑于 2025-07-19
  • 来自专栏深度应用

    解决英伟达Jetson平台使用Python时的出现“Illegal instruction(cpre dumped)”错误

    questions/65631801/illegal-instructioncore-dumped-error-on-jetson-nano 解决的方法就是增加:OPENBLAS_CORETYPE=ARMV8 可以使用临时添加方法,在运行Python指令前运行:export OPENBLAS_CORETYPE=ARMV8 也可以采用增加系统变量方法,可以进行全局修改。 将“export OPENBLAS_CORETYPE=ARMV8”加入到“~/.bashrc”中 想弄清楚原因,可以查阅这个:https://www.reddit.com/r/JetsonNano/comments

    6.3K10发布于 2021-09-10
  • 来自专栏linux驱动个人学习

    ARMv8】异常级别的定义EL0、EL1、EL2、EL3

    Exception levels ARMv8-A系列定义了一系列的异常等级,从EL0到EL3,下面具体说明其含义:

    2.4K10编辑于 2024-03-15
领券