可以做流程图的网站趣头条自媒体平台

diannao/2025/10/16 8:12:08/文章来源:
可以做流程图的网站,趣头条自媒体平台,加强学校网站建设,兰州新区规划建设局网站文章目录 一、MMU概念介绍二、虚拟地址空间和物理地址空间2.1、(虚拟/物理)地址空间的范围2.2、物理地址空间有效位(范围) 三、Translation regimes四、地址翻译/几级页表#xff1f;4.1、思考#xff1a;页表到底有几级#xff1f;4.2、以4KB granule为例#xff0c;页表的… 文章目录 一、MMU概念介绍二、虚拟地址空间和物理地址空间2.1、(虚拟/物理)地址空间的范围2.2、物理地址空间有效位(范围) 三、Translation regimes四、地址翻译/几级页表4.1、思考页表到底有几级4.2、以4KB granule为例页表的组成方式4.3、optee实际使用的示例 五、页表格式Descriptor format5.1、ARMV8支持的3种页表格式5.2、AArch64 Long Descriptor支持的四种entry5.3、页表的属性位介绍 Block Descriptor/Page Descriptor 5.3.1、stage1的页表属性5.3.2、stage2的页表属性5.3.3、其它标志位的详细介绍 六、地址翻译指令介绍七、地址翻译相关的系统寄存器总结7.1 SCTLR_ELx7.2 TTBRn_ELx7.3 TCR_ELx7.3 MAIR_ELx 推荐 思考 1、为什么要用虚拟地址为什么要用MMU 2、MMU硬件完成了地址翻译我们软件还需要做什么 3、MMU在哪里MMU和SMMU是什么关系 本文转自 周贺贺baron代码改变世界ctwArm精选 armv8/armv9trustzone/teesecureboot资深安全架构专家11年手机安全/SOC底层安全开发经验。擅长trustzone/tee安全产品的设计和开发。文章有感而发。 一、MMU概念介绍 MMU分为两个部分: TLB maintenance 和 address translation MMU的作用主要是完成地址的翻译即虚拟地址到物理地址的转换无论是main-memory地址(DDR地址)还是IO地址(设备device地址)在开启了MMU的系统中CPU发起的指令读取、数据读写都是虚拟地址在ARM Core内部会先经过MMU将该虚拟地址自动转换成物理地址然后在将物理地址发送到AXI总线上完成真正的物理内存、物理设备的读写访问. 那么为什么要用MMU为什么要用虚拟地址 以下总结了三点 多个程序独立执行 — 不需要知道具体物理地址 虚拟地址是连续的 — 程序可以在多个分段的物理内存运行 允许操作系统管理内存 — 哪些是可见的哪些是允许读写的哪些是cacheable的…… 既然MMU开启后硬件会自动的将虚拟地址转换成物理地址那么还需要我们软件做什么事情呢 即创建一个页表翻译都需要做哪些事情呢 或者说启用一个MMU需要软件做什么事情呢 设置页表基地址TTBR(Specify the location of the translation table)初始化MAIR_EL3 (Memory Attribute Indirection Register)配置TCR_EL3 (Configure the translation regime)创建页表 (Generate the translation tables)Enable the MMU 二、虚拟地址空间和物理地址空间 2.1、(虚拟/物理)地址空间的范围 内核虚拟地址空间的范围是什么应用程序的虚拟地址空间的范围是什么 以前我们在学习操作系统时最常看到的一句话是内核的虚拟地址空间范围是3G-4G地址空间应用程序的虚拟地址空间的范围是0-3G地址空间 到了aarch64上则为 内核的虚拟地址空间是0xffff_0000_0000_0000 - 0xffff_ffff_ffff_ffff , 应用程序的虚拟地址空间是: 0x0000_0000_0000_0000 - 0x0000_ffff_ffff_ffff. 做为一名杠精必需告诉你这句话是错误的。错误主要有两点 (1) arm处理器并没有规定你的内核必需要使用哪套地址空间以上这是Linux Kernel自己的设计它设计了让Linux Kernel使用0xffff_0000_0000_0000 - 0xffff_ffff_ffff_ffff地址区间Userspace使用0x0000_0000_0000_0000 - 0x0000_ffff_ffff_ffff地址区间这里正好可以举一个反例比如optee os它的kernel mode和user mode使用的都是高位的虚拟地址空间。(2) 高位是有几个F几个1是根据你操作系统使用的有效虚拟地址位来决定的也并非固定的。比如optee中的mode和user mode的虚拟地址空间范围都是 0x0000_0000_0000_0000 - 0x0000_0000_ffff_ffff 其实arm文档中有一句标准的描述 : 高位是1的虚拟地址空间使用TTBR1_ELx基地址寄存器进行页表翻译高位是0的虚拟地址空间使用TTBR0_ELx基地址寄存器页表翻译。 所以不应该说因为你使用了哪个寄存器(TTBR0/TTBR1)然后决定了你使用的哪套虚拟地址空间应该说你操作系统(或userspace软件)使用了哪套虚拟地址空间决定了使用哪个哪个基地址寄存器(TTBR0/TTBR1)进行翻译。 如下便是两套虚拟地址空间和TTBRn_ELx的对应关系其中高位的位数不是固定的16(即T1SZ和T0SZ不一定等于16) 以下摘自ARM文档的官方描述 As Figure shows, for 48-bit VAs: • The address range translated using TTBR0_ELx is 0x0000000000000000 to 0x0000FFFFFFFFFFFF. • The address range translated using TTBR1_ELx is 0xFFFF000000000000 to 0xFFFFFFFFFFFFFFFF. In an implementation that includes ARMv8.2-LVA and is using Secure EL3 the 64KB translation granule, for 52-bit VAs: • The address range translated using TTBR0_ELx is 0x0000000000000000 to 0x000FFFFFFFFFFFFF. • The address range translated using TTBR1_ELx is 0xFFF0000000000000 to 0xFFFFFFFFFFFFFFFF. Which TTBR_ELx is used depends only on the VA presented for translation. The most significant bits of the VA must all be the same value and: • If the most significant bits of the VA are zero, then TTBR0_ELx is used. • If the most significant bits of the VA are one, then TTBR1_ELx is used. 2.2、物理地址空间有效位(范围) 具体每一个core的物理地址是多少位其实都是定死的虚拟地址是多少位是编译或开发的时候根据自己的需要自己配置的。如下表格摘出了部分arm core的物理地址有效位所以你具体使用多少有效位的物理地址可以查询core TRM手册。 页表翻译相关寄存器的配置 ID_AA64MMFR0_EL1.PARange : Physical address size : 读取arm寄存器得到当前系统支持的有效物理地址是多少位 TCR_EL1.IPS : Output address size : 告诉mmu你需要给我输出多少位的物理地址 TCR_EL1.T0SZ和TCR_EL1.T1SZ : Input address size : 告诉mmu我输入的是多少有效位的虚拟地址 三、Translation regimes 内存管理单元 (MMU) 执行地址翻译。MMU 包含以下内容 The table walk unit : 它从内存中读取页表并完成地址转换 Translation Lookaside Buffers (TLBs) 缓存相当于cache 软件看到的所有内存地址都是虚拟的。 这些内存地址被传递到 MMU它检查最近使用的缓存转换的 TLB。 如果 TLB没有找到最近缓存的翻译那么翻译单元将从内存中读取适当的一个或多个表项目进行地址翻译如下所示 Translation tables 的工作原理是将虚拟地址空间划分为大小相等的块并在表中为每个块提供一个entry。 Translation tables 中的entry 0 提供block 0 的映射entry 1 提供block 1 的映射依此类推。 每个entry都包含相应物理内存块的地址以及访问物理地址时要使用的属性。 在当前的ARMV8/ARMV9体系中(暂不考虑armv9的RME扩展), 至少存在以下9类Translation regime Secure EL10 translation regime, when EL2 is disabled Non-secure EL10 translation regime, when EL2 is disabled Secure EL10 translation regime, when EL2 is enabled Non-secure EL10 translation regime, when EL2 is enabled Secure EL20 translation regime Non-secure EL20 translation regime Secure EL2 translation regime Non-secure EL2 translation regime Secure EL3 translation regime 这9类Translation regime的地址翻译的场景如下图所示 Secure and Non-secure地址空间 在REE(linux)和TEE(optee)双系统的环境下可同时开启两个系统的MMU. 在secure和non-secure中使用不同的页表.secure的页表可以映射non-secure的内存而non-secure的页表不能去映射secure的内存否则在转换时会发生错误 Two Stage Translations EL10 Translation regime处于VM(Virtual Machine)或SP(Secure Partition)时EL2 enabled的情况下是需要stage2转换的。对于EL2 Translation regime 和 EL3 Translation regime是没用stage2 转换的。 四、地址翻译/几级页表 4.1、思考页表到底有几级 从以下图来看有的页表从L2开始有得从L1开始有的从L0开始还有从L-1开始的都是到L3终止。 那么我们的页表到底有几级呢 4.2、以4KB granule为例页表的组成方式 除了第一级index(这里是leve 0 table中的index)每一个查找table/page的index都是9个bit也就是说除了第一级页表后面的每一级table都是有512个offset 如果VA_BIT 39那么leve 0 table用BIT[38:39]表示只有1个offset 如果VA_BIT 48那么leve 0 table用BIT[47:39]表示有512个offset 如果VA_BIT 48那是不存在的因为arm规定大于48的只有一个那就是VA_BIT52并且规定该情况下的最小granue size64KB而我们这里讲述的是granue size4KB的情况 如果VA_BIT 32那么leve 0 table就不用了TTBR_ELx指向Level 1 table 另外我们还需注意一点在Level 0 table中他只能指向D_Table不能指向D_Block 以下针对虚拟地址是48有效位的情形做了一个总结 4.3、optee实际使用的示例 32位有效虚拟地址、3级页表查询(L1、L2、L3)颗粒的位4KB 如下展示是optee os的页表结构TTBR0_EL1指向L1 TableL1 Table中有4个表项但只用了3个 , 也就对应着3张L2 Table. 配置相关的代码如下 五、页表格式Descriptor format 5.1、ARMV8支持的3种页表格式 AArch64 Long Descriptor : 我们只学习这个Armv7-A Long Descriptor for Large Physical Address Extension (LPAE)Armv7-A Short Descriptor 5.2、AArch64 Long Descriptor支持的四种entry 对于AArch64 Long Descriptor又分为下面四种entry An invalid or fault entry.A table entry, that points to the next-level translation table.A block entry, that defines the memory properties for the access.A reserved format 注意entry[1:0] 表示该entry属于哪类entry Block Descriptor和Page Descriptor是一个意思。在当前架构中reserved也是invalid。 5.3、页表的属性位介绍 Block Descriptor/Page Descriptor 5.3.1、stage1的页表属性 Attribute fields in stage 1 VMSAv8-64 Block and Page descriptors PBHA, bits[62:59] for FEAT_HPDS2XN or UXN, bit[54] Execute-never or Unprivileged execute-neverPXN, bit[53] Privileged execute-neverContiguous, bit[52] translation table entry 是连续的可以存在一个TLB Entry中DBM, bit[51] Dirty Bit ModifierGP, bit[50] for FEAT_BTInT, bit[16] for FEAT_BBMnG, bit[11] 缓存在TLB中的翻译是否使用ASID标识AF, bit[10] Access flag, AF0后第一次访问该页面时会将该标志置为1. 即暗示第一次访问SH, bits[9:8] shareable属性AP[2:1], bits[7:6] Data Access Permissions bits,NS, bit[5] Non-secure bitAttrIndx[2:0], bits[4:2] 5.3.2、stage2的页表属性 Attribute fields in stage 2 VMSAv8-64 Block and Page descriptors PBHA[3:1], bits[62:60] for FEAT_HPDS2 PBHA[0], bit[59] for FEAT_HPDS2 XN[1:0], bits[54:53] Execute-never Contiguous, bit[52] translation table entry 是连续的可以存在一个TLB Entry中 DBM, bit[51] Dirty Bit Modifier nT, bit[16] for FEAT_BBM FnXS, bit[11] for FEAT_XS AF, bit[10] Access flag SH, bits[9:8] shareable属性 S2AP, bits[7:6] Stage 2 data Access Permissions MemAttr, bits[5:2] 5.3.3、其它标志位的详细介绍 1、MemAttr 指向MAIR_ELx寄存器中的attrn属性域表示内存的缓存属性如cachable、shareable等 2、NS Non-secure比特 表示转换后的物理地址是secure的还是non-secure的。 3、AP Data access permissions 数据访问权限 4、SH shareable属性 5、AF Access flag, AF0后第一次访问该页面时会将该标志置为1. 即暗示第一次访问 6、nG 对于 EL0/EL1 虚拟地址空间Page Descriptor属性字段中的 nG 位将转换标记为Gloabl(G) 或non-Gloabl(nG)。例如内核映射是Gloabl(G)翻译应用程序映射是non-Gloabl翻译。Gloabl翻译适用于当前正在运的任何应用程序。非全局翻译仅适用于特定应用程序 non-Gloabl映射在 TLB 中使用 ASID进行标记。在 TLB 查找时将 TLB 条目中的 ASID 与当前选择的 ASID 进行比较。如果它们不匹配则不使用TLB 条目。下图显示了内核空间中没有 ASID 标记的全局映射和用户空间中具有 ASID 标记的非全局映射 7、XN or UXN 特权和非特权不可从该memory-region中执行指令的标志位 Execute-never Unprivileged execute-never 六、地址翻译指令介绍 address translation的指令大约14个 总结一下 七、地址翻译相关的系统寄存器总结 地址转换由系统寄存器的组合控制 7.1 SCTLR_ELx 系统控制寄存器控制着MMU、I-cache、D-cache的打开与关闭也控制着translation table walks访问内存的大小端。 M - Enable Memory Management Unit (MMU). C - Enable for data and unified caches. EE - Endianness of translation table walks. 7.2 TTBRn_ELx BADDR : 基地址 ASID TLB entry区分user程序所用的ASID 7.3 TCR_ELx 在ARM Core中(aarch64)有三个Translation Control Register 寄存器: 比特位 功能 说明 ORGN1、IRGN1、ORGN0、IRGN0 cacheable属性 outer/inner cableability的属性(如直写模式、回写模式) SH1、SH0 shareable属性 cache的共享属性配置(如non-shareable, outer/inner shareable) TG0/TG1 Granule size Granule size(其实就是页面的大小,4k/16k/64k) IPS 物理地址size 物理地址size,如32bit/36bit/40bit EPD1、EPD0 - TTBR_EL1/TTBR_EL0的enable和disable TBI1、TBI0 - top addr是ignore还是用于MTE的计算 A1 - ASID的选择是使用TTBR_EL1中的还是使用TTBR_EL0中的 AS - ASID是使用8bit还是使用16bit 7.3 MAIR_ELx 内存属性寄存器分为8个Attrn所以一个core最多只支持8中内存属性。 页表中的每一个entry都会指向一个Attr域。 推荐 ARMv8/ARMv9架构从入门到精通 --博客专栏《Armv8/Armv9架构从入门到精通 第二期》 --大课程8天入门ARM架构 --入门课程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/92316.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wordpress建站详解wordpress 视频播放

🔭 嗨,您好 👋 我是 vnjohn,在互联网企业担任 Java 开发,CSDN 优质创作者 📖 推荐专栏:Spring、MySQL、Nacos、Java,后续其他专栏会持续优化更新迭代 🌲文章所在专栏&…

使用wordpress建立个人网站页面做的好看的网站

ListView默认的分页是先从数据源取得所有数据,然后再截取当前页面的部分,在数据量非常大的情况下效率非常低,因此默认的分布基本不能用。应该是只从数据源取得要显示的数据即可。SQL中语句中取得分页数据的方法为:Select * ,ROW_N…

如何做网站稳定客户网站设计工资

apache spark迁移到Apache Spark之前需要了解的5件事 似乎每个人都只是在谈论最热门的新技术,而忽略采用它的实际含义。 但这是自然的,对吧? 新功能和承诺胜过其他所有事物,而艰难的挑战和决​​定被抛在一边。 这次不行。 软件…

icp网站信息免费python在线网站

过年回来后,时间变得飞快,很多事情都是马上要去干,而且又是很着急的事,呵呵,真的要干趴了 然后——经历了第一次年后的周末连续加班出版本保量产,经历了加班到凌晨3点调试问题,经历我们在疯狂的…

网站打赏怎么做的荆州seo公司

RV32/64 特权架构 - 特权模式与指令 1 特权模式2 特权指令2.1 mret(从机器模式返回到先前的模式)2.2 sret(从监管模式返回到先前的模式)2.3 wfi(等待中断)2.4 sfence.vma(内存屏障) …

做网站多少钱赚钱吗wordpress服务器版

LLVM 是 Low Level Virtual Machine (低级虚拟机)的简称,这个库提供了与编译器相关的支持,可以作为多种语言编译器的后台来使用。能够进行程序语言的编译期优化、链接优化、在线编译优化、代码生成。LLVM的项目是一个模块化和可重复使用的编译器和工具技…

软件开发工具与平台杭州优化seo公司

一、ECMAScript6标准简述 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。 1.1E…

网站开发要源码多少钱火车头采集wordpress发布时间

关于2021,我们能看到的技术变化有很多。当云原生向下而生,当分布式数据库席卷而至,当低代码平台扩展了开发的边界,当万物互联蔚然成风……我们看到了太多在2021年形成的变化,但也能看到这些趋势非但没有结束&#xff0…

网站换域名seo怎么做个人如何做一个网站

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼前几天在微博上看到24点的游戏,6 6 610。算了很久是在算不出来,最后我想我何不写一个小程序解决它?说做就做,我刚开始的想法很简单,就是列举4个数的所有可能的表达式组合&…

wordpress mysqli苏州seo关键词优化方法

最近测试了www.doweb8.com/m/list.php?tid1 在手机站访问的时候,无法跳转到手机的模板,终于找到了解决了方法,给大家分享一下修改根目录下的m/list.php文件重新弄的代码, 不区分几级目录,理论是根据你指定的PC&#…

php企业网站开发实训报告网站发布到ftp

排序算法 基础排序 冒泡排序 核心为交换,通过不断进行交换,将大的元素一点一点往后移,每一轮最大的元素排到对应的位置上,形成有序。 设数组长度为N,过程为: 共进行N轮排序每一轮排序从数组的最左边开始&#xff0…

网站创建知识广告网页制作模板

Web3.0的概念代表着互联网的下一阶段发展,它将实现更加分散、安全、私密且能够实现无需中心化管理的网络生态系统。随着Web3.0的发展,推广策略也需要跟进并进行相应的创新。本文将为您介绍7个Web3.0时代的爆款推广策略,帮助你更好地了解和把握…

网站建设项目描述范文深圳做网站

一、AI 解析 DNS欺骗,又称DNS缓存投毒,是一种网络攻击技术。攻击者通过篡改DNS服务器的缓存数据,使得DNS查询的结果指向一个恶意的IP地址,从而引导用户访问到钓鱼网站或者恶意软件下载页面,对用户的信息安全造成威胁。…

对网站建设的问题wordpress 文章序号

数据库表 实体类&#xff08;对应数据库的字段&#xff0c;可以驼峰命名&#xff09; 封装的查询方法sql List<Student> getAllStudents(String name,String studentId,Integer classId,String className); 这里的值一一对应。 在多表查询时&#xff0c;查询到的指定字段…

美做天然居家居网站高端营销型网站制作

1. strlen函数的使用和模拟实现 size_t strlen(const char* str); 1.1 函数功能以及用法 字符串长度 strlen函数的功能是计算字符串的长度。在使用时&#xff0c;要求用户传入需要计算长度的字符串的起始位置&#xff0c;并返回字符串的长度。 #include <stdio.h> #…

网站首页幻灯片尺寸房屋装修设计师培训

全栈工程师开发手册 &#xff08;作者&#xff1a;栾鹏&#xff09; 一站式云原生机器学习平台 前言 开源地址&#xff1a;https://github.com/tencentmusic/cube-studio cube studio 腾讯开源的国内最热门的一站式机器学习mlops/大模型训练平台&#xff0c;支持多租户&…

免费制作购物网站网站免费搭建

ios 静音模式您最近是否遵循Mute-Design-Pattern™编写了大量代码&#xff1f; 例如 try {complex();logic();here(); } catch (Exception ignore) {// Will never happen heheSystem.exit(-1); }Java 8有一个更简单的方法&#xff01; 只需将这个非常有用的工具添加到您的Ut…

后端开发网站做一些什么创建网站的软件什么梦

目录 引言&#xff1a; 冒泡排序概述&#xff1a; 优化前&#xff1a; 优化后(注意看注释)&#xff1a; 解析优化后&#xff1a; 原理&#xff08;先去了解qsort&#xff09;&#xff1a; 引言&#xff1a; 排序算法是计算机科学中的基础问题之一。在本篇博客中&#xff0c…

dz论坛网站创建页面企业网站建设和运营

描述 编写一个4bit乘法器模块&#xff0c;并例化该乘法器求解c12*a5*b&#xff0c;其中输入信号a,b为4bit无符号数&#xff0c;c为输出。注意请不要直接使用*符号实现乘法功能。 模块的信号接口图如下&#xff1a; 要求使用Verilog HDL语言实现以上功能&#xff0c;并编写tes…

小程序名称大全网络优化推广公司哪家好

计算器默认角度制(D)。此时&#xff0c;按下mode&#xff0c;mode&#xff0c;2(Rad)&#xff0c;可将计算器调整为弧度制。输入要转化的角度(如30)&#xff0c;按下shift&#xff0c;ans(DRG三角)&#xff0c;1(D)&#xff0c;画面将显示30度&#xff0c;按下等号&#xff0c;…