飞腾CPU体系结构(八)——标量访存指令

在阅读之前,请先查看《飞腾CPU体系结构(五)》的SIMD和浮点寄存器。飞腾CPU还提供了32个128 位SIMD和浮点寄存器,这32个128位寄存器可以作为标量寄存器使用,也可以作为向量寄存器来使用。

1. 标量访存指令

一共有0~31个标量寄存器,q/d/s/h/b分别表示128/64/32/16/8位的长度。标量访存指令的内存单元地址有按照长度对齐的要求。

标量访存指令可以有

  1. 常规单寄存器类型ldr/str
长度 128 64 32 16
ldr q12, [x12, #-16] ldr d12, [x12, #-8] ldr s12, [x12, #-4] ldr h12, [x12, #-2]
str q17, [x0] str d17, [x0] str s17, [x0] str h17, [x0]
  1. 偏移量为负的单寄存器类型ldur/stur,和ldr/str类似,只不过立即数偏移量为负。
  2. 常规双寄存器类型ldp/stp
  3. 面向流数据的双寄存器类型ldnp/stnp

2. SIMD和浮点寄存器上下文的保存和恢复

  1. 汇编宏fpsimd_save

.macro fpsimd_save state, tmpnr
/*首先保存32个128位的SIMD和浮点寄存器*/
stp q0, q1, [\state, #16 * 0]
stp q2, q3, [\state, #16 * 2]
stp q4, q5, [\state, #16 * 4]
stp q6, q7, [\state, #16 * 6]
stp q8, q9, [\state, #16 * 8]
stp q10, q11, [\state, #16 * 10]
stp q12, q13, [\state, #16 * 12]
stp q14, q15, [\state, #16 * 14]
stp q16, q17, [\state, #16 * 16]
stp q18, q19, [\state, #16 * 18]
stp q20, q21, [\state, #16 * 20]
stp q22, q23, [\state, #16 * 22]
stp q24, q25, [\state, #16 * 24]
stp q26, q27, [\state, #16 * 26]
stp q28, q29, [\state, #16 * 28]
stp q30, q31, [\state, #16 * 30]! /注意这条语句之后|state就更新了/
/*然后保存fpsr和fpcr寄存器,这是两个SIMD和浮点状态寄存器*/
mrs x\tmpnr, fpsr
str w\tmpnr, [\state, #16 * 2]
mrs x\tmpnr, fpcr
str w\tmpnr, [\state, #16 * 2 + 4]
.endm

  1. 汇编宏 fpsimd_restore

/*恢复fpcr寄存器的具体过程,如果内存保存值和寄存器fpcr值相同,就不修改寄存器fpcr的值*/
.macro fpsimd_restore_fpcr state, tmp
mrs \tmp, fpcr
cmp \tmp, \state
b.eq 9999f
msr fpcr, \state
9999:
.endm

.macro fpsimd_restore state, tmpnr
/*首先恢复32个128位的SIMD和浮点寄存器*/
ldp q0, q1, [\state, #16 * 0]
...此处省略
ldp q30, q31, [\state, #16 * 30]!/
/*再恢复fpsr寄存器*/
ldr w\tmpnr, [\state, #16 * 2]
msr fpsr, x\tmpnr
/*最后恢复fpcr寄存器*/
ldr w\tmpnr, [\state, #16 * 2 + 4]
fpsimd_restore_fpcr x\tmpnr, \state
.endm

  1. 浮点状态寄存器fpsr
  1. 这是一个32位寄存器,EL0/1/2/3都是可读写的。
  2. 在AARCH64模式下,浮点类型比较结果会对处理器状态的NZCV位进行相应的设置,而不是在浮点状态寄存器fpsr中的NZCV位进行设置。
  3. 另外,该寄存器还包括:累积饱和位QC、
    异常累积标志,这些标志常规情况下为零。

输入异常累积位IDC
不精确异常累积位IXC
溢出异常累积位UFC
溢出异常累积位OFC
除零异常累积位DZC
无效操作异常累积位IOC

  1. 浮点控制寄存器fpcr
  1. 这是一个32位寄存器,EL0/1/2/3都是可读写的。
  2. 浮点控制寄存器fpcr尽量不要进行修改,修改可能触发“自同步”。
  3. 数据格式和控制模式位

半精度格式控制位AHP
默认NaN模式控制位DN
Flush到零模式控制位FZ
Rounding模式控制位RMode

  1. 控制异常累积发生时是否触发异常:IDE / IXE / UFE / OFE / DZE / IOE

飞腾CPU体系结构(八)相关推荐

  1. 飞腾CPU体系结构简单介绍(一)

    第一章 飞腾CPU体系结构简介 ARM体系结构是一种精简指令集体系结构RISC,具有以下基本特点:通用寄存器数量较多:采用统一寻址模式,系统主存和外设分布在CPU物理地址空间的不同范围:采用load/ ...

  2. 飞腾CPU体系结构(五)

    飞腾CPU体系结构(五)-- 通用寄存器 1. 64位通用寄存器 在AArch64执行状态下,飞腾CPU提供31个64位通用寄存器Xn(n=0/1/-/30),其中X30用作跳转链接寄存器. 某些指令 ...

  3. 飞腾CPU体系结构(九)

    飞腾CPU体系结构(九) 向量访存指令主要包括LD1/ST1. LD2/ST2.LD3/ST3和LD4/ST4四种. LD1/ST1一般针对一个向量寄存器,也有两个.三个或四个向量寄存器的模式. LD ...

  4. 飞腾CPU体系结构之虚拟地址

    飞腾CPU体系结构之虚拟地址 1. 基本概念 虚拟地址:程序运行时指令和数据对应的地址. 虚拟地址空间:一个进程运行时指令和数据能访问到的虚拟地址范围. 注意事项: 每个进程拥有自己的虚拟地址空间,进 ...

  5. 飞腾CPU体系结构(十)

    飞腾CPU体系结构(十) 1.高速缓存模型 为了优化整体性能,飞腾CPU芯片内部提供L1高速缓存和L2高速缓存,有些飞腾CPU也提供芯片内部的L3高速缓存,本节不对这个情况进行赘述. 靠近流水线的高速 ...

  6. 飞腾CPU体系结构之低功耗指令

    飞腾CPU体系结构之低功耗指令 WFE和WFI指令 当飞腾CPU核执行两类指令:WFE或WFI之后,CPU核会进入低功耗状态: 一旦CPU核进入低功耗状态,就要一直保持低功耗状态直到相应的唤醒事件发生 ...

  7. 飞腾CPU体系结构(十二)

    飞腾CPU体系结构(十二) 1. CPU物理地址空间 飞腾CPU支持的物理地址宽度为44位,物理地址空间实际上只有16TB.系统主存(芯片外部内存)和IO外设(例如SoC设备.PCIe设备)都在这个物 ...

  8. 飞腾CPU体系结构(十四)

    飞腾CPU体系结构(十四) 1. MMU原理 MMU的大致工作原理是: 64位虚拟地址首先分成虚拟页帧号和页内偏移量两部分,虚拟页帧号即页表项索引:根据页表项索引,在进程的页表里查找到对应页表项,然后 ...

  9. 飞腾CPU体系结构(十三)

    飞腾CPU体系结构(十三) 1. 虚拟地址到物理地址的映射 程序员编程一般都是使用虚拟地址,无论是否用到高速缓存,飞腾CPU的内存管理单元MMU都会把虚拟地址翻译成物理地址,然后根据物理地址进行数据的 ...

最新文章

  1. 单纯形法(三)(概念部分)
  2. awk的正则表达式提取
  3. 阿里云上测试服务器的搭建
  4. WIN32创建居中对话框
  5. Java之JVM调优案例分析与实战(1) - 高性能硬件上的程序部署策略
  6. JUC锁-CyclicBarrier(七)
  7. EasyImage图床源码V2.0
  8. ubuntu学习日记--Lesson6:shell,bash,dash
  9. ios 点击出现另外一套tabbar_iOS 点击UITabBar触发刷新
  10. 內嵌html字符串顯示
  11. excel 字号对应 html,excel字体大小随表格变
  12. 街头篮球一直提示服务器维护怎么解决,街头篮球为什么进不去 街头篮球进不去怎么办...
  13. 图片特效展示(鼠标移入移除特效)
  14. 模拟器安装app 报错误 INSTALL_FAILED_NO_MATCHING_ABIS
  15. 高考还有几天c语言作业,高考考几天
  16. Markdown学习+Typora快捷键
  17. mysql y m d h i_php时间问题?mysql数据库的时间格式(Y-M-D H:I:S) 在PHP页面想这样显示(Y-M-D) (apos;.#36;rows[apos;ndate...
  18. maven异常记录-must be unique
  19. 数字化办公,就选流畅、清晰的华为云桌面
  20. 每天学习10句英语-第九天

热门文章

  1. iPad菜单日渐走热美国
  2. 0005 前端 Html 04 AutoFileName 图片的显示 文字链接 图片链接 页面内链接 列表 加超链接的列表
  3. 现代的linux和windows7,Windows 7 Vs. Linux谁更强
  4. Hedge fund Two Sigma hires Alfred Spector as Chief Technology Officer
  5. 【C语言|数组】数组a、a、a[0]、a[0][0]的区别与联系
  6. 《设计模式之禅》试评员名单公布
  7. HP840G3电脑系统安装
  8. 一台主机 两台显示器 就可以两个用户同时使用电脑
  9. OpenGL with QtWidgets:练习之甜甜圈
  10. python孩子 哪里学_Python知识免费学!孩子提高逻辑思维,这样练就够了!