ARM具有流水线架构 . 每个时钟周期使流水线前进一步(例如,获取/解码/执行/读取......) . 由于管道连续馈电,执行每条指令的总时间可以接近1个周期,但是从“获取”到完成的单个指令的实际时间可以是3个周期 . ARM在他们的网站上有一个很好的解释:

内存延迟为这个想法增加了另一层复杂性 . ARM采用多级缓存系统,旨在以最少的周期提供最常用的数据 . 即使从最快(L0)缓存中读取也会涉及几个延迟周期 . 如果不立即使用数据,该管道包括允许稍后完成读取请求的工具 . 通过示例更容易理解:

LDR R0,[R1]

MOV R2,R3 // Allow time for memory read to occur

ADD R4,R4,#200 // by interleaving other instructions

CMP R0,#0 // before trying to use the value

// By trying to access the data immediately, this will cause a pipeline

// 'stall' and waste time waiting for the data to become available.

LDR R0,[R1]

CMP R0,#0 // Wastes at least 1 cycle due to pipeline not having the data

我们的想法是隐藏管道中的固有延迟,如果可以的话,通过延迟对寄存器的依赖性(也就是指令交错)来隐藏内存访问中的额外延迟 .

都是arm 为什么用java,为什么内存指令在ARM汇编中需要4个周期?相关推荐

  1. java volatile内存屏障_从汇编看Volatile的内存屏障

    Java的Volatile的特征是任何读都能读到最新值,本质上是JVM通过内存屏障来实现的,让我们看看从字节码以及汇编码的角度,来看下是否真是如此? 一 Volatile与内存屏障 为了实现volat ...

  2. java list 内存释放_java集合ArrayList中clear方法内存释放分析

    最近在看ArrayList源码的时候看到了ArrayList的clear方法,源码如下: public void clear() { modCount++; // clear to let GC do ...

  3. ARM硬件支持java技术Jazelle DBX

    ava已 经在各个领域得到了广泛的应用,尤其是无线移动领域,全球超过100个移动运营商已经推出了Java下载服务.Java也正成为其它 嵌入式 设备的支持标 准,如机顶盒.Java应用的快速增长源于以 ...

  4. 深入探究JVM(1) - Java的内存区域解析

    深入探究JVM(1) - Java的内存区域解析 Java 虚拟机在执行Java程序的时候会把它管理的内存区域划为几部分,这一节我们就来解析一下Java的内存区域. 有的人把JVM管理的内存简单地分为 ...

  5. 全网最硬核 Java 新内存模型解析与实验 - 2. 原子访问与字分裂

    个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判.如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 i ...

  6. 全网最硬核 Java 新内存模型解析与实验 - 1. 什么是 Java 内存模型

    个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判.如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 i ...

  7. 全网最硬核 Java 新内存模型解析与实验 - 4. Java 新内存访问方式与实验

    个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判.如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 i ...

  8. 全网最硬核 Java 新内存模型解析与实验 - 3. 硬核理解内存屏障(CPU+编译器)

    个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判.如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 i ...

  9. java查看内存地址_Java内存机制和内存地址

    问题一: String str1 = "abc"; String str2 = "abc"; System.out.println(str1==str2); / ...

  10. java 全局变量 内存不回收_Java的内存 - 内存回收

    这篇承接上一篇 <Java的内存 - 内存模型>,分析内存回收相关的知识点. 垃圾回收包含两个步骤,①标记哪些内存是垃圾 ②回收内存.下面分别说这两个步骤有哪些算法: 1. 垃圾标记 1. ...

最新文章

  1. python字符串内置方法
  2. 2/100. Hamming Distance
  3. CNN的稀疏结构分析-CVPR2018
  4. java中统计括号配对_括号配对问题(C语言或JAVA语言代码)
  5. 该如何来开发这个喜欢的功能呢?
  6. 活力四射MSNMessenger(转)
  7. Swift游戏实战-跑酷熊猫 10 视差滚动背景
  8. 网络编程之OSI七层模型,讲解tcp/ip五层涉及的网络协议,网络通信实现,结合协议来看网络通信流程...
  9. Android输入法官方SoftKeyboard示例解析
  10. 夫妻租房,同时办取上海市居住证 攻略
  11. 5.2-国内知识图谱相关企业和资源
  12. win10 uwp 如何让WebView标识win10手机
  13. 用八叉树优化RayCasting
  14. What is a Posterior Probability?
  15. 基础地图-在线地图-天地图(标注)
  16. Access2003中自定义菜单栏
  17. 十大最易受攻击的软件 Java第一Adobe第三
  18. Imail 邮件服务器的SMTP配置与 .NET 下使用 System.Net.SmtpClient 发送邮件
  19. python获取电脑的机器码_python获取机器信息脚本(网上寻找的)
  20. 使用docker安装gitlab以及gitlab简单使用

热门文章

  1. MVC之使用Nhibernate
  2. 服务器保持与Mysql的连接
  3. 捕鱼分鱼、出售鱼、平分七筐鱼
  4. 关于mqtt+js前端中mqtt服务器关闭重连服务器后js前端接收不到消息的问题
  5. 游戏开发之测试篇3(C++)
  6. 厂商为什么喜欢使用堆叠?
  7. ETH-TRUNK链路原理和实验
  8. 关于BMZCTF hitcon_2017_ssrfme的解法
  9. 固定大小采样池中的随机采样证明
  10. 在Office 365中使用自助密码重置功能减轻管理员负担(一)功能简介