飞腾CPU体系结构(十二)

1. CPU物理地址空间

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

2. 内存属性

飞腾CPU将系统主存和IO外设看作两种不同的内存类型。

  1. 系统主存的内存属性
  2. IO外设的内存属性

2.1 系统主存属性

针对系统主存的内存属性,飞腾CPU主要为了提升访存性能,因此主要

  1. 支持弱顺序性访存模型,
  2. 支持地址不对齐的访问方式,
  3. 支持写操作合并,
  4. 支持乱序访问机制。

在无缓存模式下

飞腾CPU可以忽略高速缓存直接读/写系统主存,NC和WT两种模式都采用无缓存模式来实现。

在有缓存模式下,即WB模式

飞腾CPU读/写地址单元内容时,如果缓存不命中,就从系统主存中将相应的缓存块内容拷贝到高速缓存中;然后再对高速缓存的缓存块进行相应的操作。

2.2 IO外设属性

针对IO外设的内存属性,为了确保外设操作的正确性,飞腾CPU

  1. 支持强顺序性访存模型,
  2. 支持缓存模式
  3. 支持地址不对齐访问方式。

这种强顺序性访存模型,根据强弱程度有nGnRnE、nGnRE 、nGRE和GRE四种类型。

  1. G表示支持访存合并操作;nG表示不支持访存合并操作;
  2. R表示支持乱序操作;nR表示不支持乱序操作;
  3. E表示写操作的确认不一定来自目标设备;nE表示写操作的确认来自目标设备。

常用的外设内存类型是nGnRE,表示不支持访存合并和乱序操作,写指令完成时,设备内存不保证及时得到更新。

2.3 特别提醒

内存属性,描述了飞腾CPU访问物理地址空间设备的操作特点,但是需要通过虚拟页到物理页帧的映射属性来编程使用。

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

  1. 飞腾CPU体系结构(二)

    第二节 权限级模型 2.1 基本概念 CPU在运行时都会处于一个权限级中.从程序员角度看,权限级可以简单地看作是CPU被允许运行的指令范围.可以访问的寄存器集合和地址范围.一般而言,CPU可以支持多个 ...

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

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

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

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

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

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

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

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

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

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

  7. 飞腾CPU体系结构(八)

    飞腾CPU体系结构(八)--标量访存指令 在阅读之前,请先查看<飞腾CPU体系结构(五)>的SIMD和浮点寄存器.飞腾CPU还提供了32个128 位SIMD和浮点寄存器,这32个128位寄 ...

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

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

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

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

最新文章

  1. Science:比较基因组揭示银边鱼应对捕鱼行为的表型进化机制
  2. Django CMS教程一:安装
  3. Oozie使用java启动外部包
  4. PHP类中的__get()和__set函数到底有什么用
  5. 解决argo workflow报错:MountVolume.SetUp failed for volume “docker-sock“ : hostPath type check failed
  6. 24 个好用到爆的 Python 实用技巧!
  7. 网络编程(part3)--文件读写之二进制文件读写/with操作
  8. 将两个有序链表合并为一个链表任然有序C语言
  9. GPU、TPU买起来,新政策让1亿研发费用可多减税375万元
  10. dhcpd.conf配置的有关说明
  11. android使用Dialog实现复选功能与数据库结合综合实例
  12. iframe透明 自适应高度
  13. Python 代码库之Tuple如何append添加元素
  14. opencv转码,分辨率大小导致的bug
  15. 护眼灯护眼有效果吗?一文了解护眼灯到底有没有用
  16. 【计算机网络】Quiz
  17. 167、缓存-SpringCache-简介
  18. Ubuntu18.04中如何更换为清华的镜像源
  19. 用outlook收发live mail
  20. 软件人生之这些年做项目带新人的经验总结

热门文章

  1. 胡安对话Chainlink创始人Sergey Nazarov,探讨分布式存储和去中心化预言机网络的深度融合
  2. 5G通信-帧结构及RE和RB
  3. Redis进阶教程—基础篇-叶向阳-专题视频课程
  4. 胡博君解Java之多态性
  5. 苹果选择ARM架构的cpu背后的“野心”和“理想”
  6. Python NLP初识-小试牛刀
  7. ABB机器人机械手DSQC328A DSQC509 3HAC5687-1 3HAC16831-1 DSQC540 3HAC14279-1 DSQC532B 3HAC023447-1/01
  8. 学习使用口令破解工具:hashcat、LC、SamInside
  9. 如何分析调查客户背景 成功第一步 事半功倍(普宁电商外贸)
  10. 北京﹝中国﹞气候资料