飞腾CPU体系结构(六)
飞腾CPU体系结构(六)—— 寻址方式
1. 基本寻址方式
在AArch64执行模式下,飞腾CPU的Load/Store访存指令采用64位地址。
访存的基地址是由64位的通用寄存器Xn或者堆栈寄存器SP来提供:
- 基地址寄存器
寻址 说明 [Xn] 地址直接为寄存器Xn的值
- 基地址寄存器+立即数偏移量
寻址 说明 [Xn, #imm] 地址为寄存器Xn+#imm的值
- 基地址寄存器+寄存器偏移量。
寻址 说明 [Xn, Xm] 地址为两个寄存器Xn+Xm的和值 [Xn, Xm, LSL #imm] 地址为Xn+(Xm左移#imm位)的和值
上述寻址方式,有一个共同点,寄存器Xn的值不会更新。
2. 基地址寄存器更新的寻址方式
为了提升连续寻址的性能,飞腾CPU增加了基地址寄存器更新的能力,我们可以简单理解这样的寻址方式是在普通寻址方式后,追加一条关于基地址寄存器的计算指令。
访存的基地址也是由64位的通用寄存器Xn或者堆栈寄存器SP来提供:
- 基地址寄存器
寻址 寻址说明 基地址寄存器更新说明 [Xn],Xm 地址直接为寄存器Xn的值 Xn更新为Xn+Xm [Xn],#imm 地址直接为寄存器Xn的值 Xn更新为Xn+#imm
- 基地址寄存器+立即数偏移量
寻址 寻址说明 基地址寄存器更新说明 [Xn, #imm]! 地址为寄存器Xn+#imm的值 Xn更新为Xn+#imm
说明:“[Xn],Xm”的寻址方式只能用于SIMD寄存器和内存之间的数据传输,通用寄存器和内存之间的数据传输不能使用该方式寻址。
3. PC相对寻址
另外,还有一种特殊的寻址方式,就是PC相对寻址 ,跳转指令经常用PC相对寻址,这样的寻址方式范围必须在1M范围之内。
飞腾CPU体系结构(六)相关推荐
- 飞腾CPU体系结构简单介绍(一)
第一章 飞腾CPU体系结构简介 ARM体系结构是一种精简指令集体系结构RISC,具有以下基本特点:通用寄存器数量较多:采用统一寻址模式,系统主存和外设分布在CPU物理地址空间的不同范围:采用load/ ...
- 飞腾CPU体系结构(五)
飞腾CPU体系结构(五)-- 通用寄存器 1. 64位通用寄存器 在AArch64执行状态下,飞腾CPU提供31个64位通用寄存器Xn(n=0/1/-/30),其中X30用作跳转链接寄存器. 某些指令 ...
- 飞腾CPU体系结构(九)
飞腾CPU体系结构(九) 向量访存指令主要包括LD1/ST1. LD2/ST2.LD3/ST3和LD4/ST4四种. LD1/ST1一般针对一个向量寄存器,也有两个.三个或四个向量寄存器的模式. LD ...
- 飞腾CPU体系结构(八)
飞腾CPU体系结构(八)--标量访存指令 在阅读之前,请先查看<飞腾CPU体系结构(五)>的SIMD和浮点寄存器.飞腾CPU还提供了32个128 位SIMD和浮点寄存器,这32个128位寄 ...
- 飞腾CPU体系结构之虚拟地址
飞腾CPU体系结构之虚拟地址 1. 基本概念 虚拟地址:程序运行时指令和数据对应的地址. 虚拟地址空间:一个进程运行时指令和数据能访问到的虚拟地址范围. 注意事项: 每个进程拥有自己的虚拟地址空间,进 ...
- 飞腾CPU体系结构(十)
飞腾CPU体系结构(十) 1.高速缓存模型 为了优化整体性能,飞腾CPU芯片内部提供L1高速缓存和L2高速缓存,有些飞腾CPU也提供芯片内部的L3高速缓存,本节不对这个情况进行赘述. 靠近流水线的高速 ...
- 飞腾CPU体系结构之低功耗指令
飞腾CPU体系结构之低功耗指令 WFE和WFI指令 当飞腾CPU核执行两类指令:WFE或WFI之后,CPU核会进入低功耗状态: 一旦CPU核进入低功耗状态,就要一直保持低功耗状态直到相应的唤醒事件发生 ...
- 飞腾CPU体系结构(十二)
飞腾CPU体系结构(十二) 1. CPU物理地址空间 飞腾CPU支持的物理地址宽度为44位,物理地址空间实际上只有16TB.系统主存(芯片外部内存)和IO外设(例如SoC设备.PCIe设备)都在这个物 ...
- 飞腾CPU体系结构(十四)
飞腾CPU体系结构(十四) 1. MMU原理 MMU的大致工作原理是: 64位虚拟地址首先分成虚拟页帧号和页内偏移量两部分,虚拟页帧号即页表项索引:根据页表项索引,在进程的页表里查找到对应页表项,然后 ...
最新文章
- goland 报错 Main file has non-main package or doesn’t contain main function
- 资深专家给.NET初学者的学习建议(转)
- ASP网站精品源码集合(免积分下载)
- 看完后完全了解 Vue 2.0 和 Vue 3.0 的区别
- 论文小综 | Attention in Graph Neural Networks
- redis3.0搭建分布式集群
- 他开发了 redux,昨晚字节一面却挂了?
- shmget出现Invalid argument错误
- 威联通_AMD YES!威联通高性价比9盘位TS-963N 5GbE NAS体验
- 苹果手机投影到墙上_隔空触控的投影仪,仅有巴掌大小
- c# TcpClient 客户端断线重连类库
- foxmail超大附件服务器文件怎么删,foxmail邮件太大怎么发?foxmail发送超大附件的方法...
- 浅析芝麻信用分征信体系
- 计算机开机高级设置密码,给电脑设置开机密码
- 倪光南建议禁用Win10政府版 微软合作方回应
- 【Linux kernel/cpufreq】framework ----cpufreq governor
- YOLOv2原文解读
- 亚马逊链接那些非正常原因变狗的情况你都了解吗?
- mysql forward_only_mysql参数调优
- ios 不能触发click事件
热门文章
- chatGPT背后的男人们
- 认知提升-《影响力》读后感
- 零基础语法入门第五讲 名词性/形容词性物主代词
- solr的下载与使用
- dubbo中的红叉叉
- 程序员熬夜加班接私活被朋友坑3w,网友:留后门啊!不给钱就bug
- 拍拍贷Q2季报图解:净利6亿 环比增39%同比降4%
- windows10打开网页“网页可能暂时无法连接,或者它已永久性地移动到了新网址。 ERR_FAILED“报错解决方法
- go语言怎么 控制一个变量输入的范围_go语言并发原理和机制【二】
- Windows上实现iOS APP自动化测试:tidevice + WDA + facebook-wda / appium