zoukankan      html  css  js  c++  java
  • armv6 的特点

    ARMv6体系结构

      实现新一代微处理器的第一步就是订立一个新的结构体系。这里所说的结构体系只是对处理器行为进行描述,并不包括具体地指定处理器是如何被建造的。结构体系的定义提供了处理器和外界(操作系统,应用程序和调试支持)的接口,从细节上说,处理器结构体系定义了指令集、编程模式和最近的存储器之间的接口。最新的ARM处理器架构—ARMv6,发布于2001年10月,它建立于过去十年ARM许多成功的结构体系基础上。同处理器的授权相似,ARM也向客户授权它的结构体系。比如,Intel的XScale就是基于ARMv5TE的处理器。

    编辑本段目标应用

      ARMv6架构是根据下一代的消费类电子、无线设备、网络应用和汽车电子产品等需求而制定的。ARM11的媒体处理能力和低功耗特点,特别适用于无线和消费类电子产品;其高数据吞吐量和高性能的结合非常适合网络处理应用;另外,也在实时性能和浮点处理等方面ARM11可以满足汽车电子应用的需求。可以预言,基于AMRv6体系结构的ARM11系列处理器将在上述领域发挥巨大的作用。

    编辑本段特点

      对于各种无线移动应用,毫无节制的提供高性能处理器是无用的。同成本控制类似,功耗的控制也是一个重要因素。ARM11系列处理器展示了在性能上的巨大提升,首先推出350M~500MHz时钟频率的内核,在未来将上升到1GHz时钟频率ARM11处理器在提供高性能的同时,也允许在性能和功耗间做权衡以满足某些特殊应用。通过动态调整时钟频率和供应电压,开发者完全可以控制这两者的平衡。在0.13um工艺,1.2v条件下,ARM11处理器的功耗可以低至0.4mW/MHz。ARM11处理器同时提供了可综合版本和半定制硬核两种实现。可综合版本可以让客户根据自己的半导体工艺开发出各有特色的处理器内核,并保持足够灵活性。ARM实现的硬核则是为了满足那些极高性能和速度要求的应用,同时为客户节省实现的成本和时间。为了让客户更方便地走完实现流程,ARM11处理器采用了易于综合的流水线结构,并和常用的综合工具以及RAM compiler良好结合,确保了客户可以成功并迅速的达到时序收敛。目前已有的ARM11处理器在不包含Cache的情况下面积小于2.7mm2,对于当前复杂的SoC设计来说,如此小的die size对芯片成本的降低是极其重要的。ARM11处理器在很多方面为软件开发者带来便利。一方面,它包含了更多的多媒体处理指令来加速视频和音频处理;另一方面,它的新型存储器系统进一步提高了操作系统的性能;此外,还提供了新指令来加速实时性能和中断的响应。再次,目前有很多应用要求多处理器的配置(多个ARM内核,或ARM+DSP的组合),ARM11处理器从设计伊始就注重更容易地与其他处理器共享数据,以及从非ARM的处理器上移植软件。此外,ARM还开发了基于ARM11系列的多处理器系统——MPCORE(由二个到四个ARM11内核组成)。

    编辑本段性能

      ARM11处理器的超强性能是由一系列的架构特点所决定的。

      ARMv6—决定性能的基础

      ARMv6架构决定了可以达到高性能处理器的基础。总的来说,ARMv6架构通过以下几点来增强处理器的性能:

      1.多媒体处理扩展 使MPEG4编码/解码加快一倍

      音频处理加快一倍

      2.增强的Cache结构

      实地址Cache4

      减少Cache的刷新和重载

      减少上下文切换的开销

      3.增强的异常和中断处理 使实时任务的处理更加迅速

      4.支持Unaligned和Mixed-endian数据访问 使数据共享、软件移植更简单,也有利于节省存储器空间

      对绝大多数应用来说,ARMv6保持了100%的二进制向下兼容,使用户过去开发的程序可以进一步继承下去。ARMv6保持了所有过去架构中的T(Thumb指令)和E(DSP指令)扩展,使代码压缩和DSP处理特点得到延续;为了加速Java代码执行速度的ARM Jazalle技术也继续在ARMv6架构中发挥重要作用。

    编辑本段ARM11处理器的内核特点

      ARM11处理器是为了有效的提供高性能处理能力而设计的。在这里需要强调的是,ARM并不是不能设计出运行在更高频率的处理器,而是,在处理器能提供超高性能的同时,还要保证功耗、面积的有效性。ARM11优秀的流水线设计是这些功能的重要保证。

      ARM11处理器的流水线和以前的ARM内核不同,它由8级流水线组成,比以前的ARM内核提高了至少40%的吞吐量。8级流水线可以使8条指令同时被执行。

      从通常的角度说,过长的流水线往往会削弱指令的执行效率。一方面,如果随后的指令需要用到前面指令的执行结果作为输入,它就需要等到前面指令执行完。ARM11处理器通过forwarding来避免这种流水线中的数据冲突,它可以让指令执行的结果快速进入到后面指令的流水线中。另一方面,如果指令执行的正常顺序被打断(如出现跳转指令),普通流水线处理器往往要付出更大的代价,ARM11通过实现跳转预测技术来保持最佳的流水线效率。这些特殊技术的使用,使ARM11处理器优化到更高的流水线吞吐量的同时,还能保持和5级流水线(如ARM9处理器中的流水结构)一样的有效性。

    跳转预测及管理
      跳转指令通常都是条件执行的。问题在于那些决定是否跳转的条件要在跳转指令被译码的后3~4个周期才能就绪。如果不做特殊处理,跳转指令必须等待,这样使指令执行效率变得让人难以忍受。跳转预测就是用来帮助解决这种延迟的。ARM11处理器提供两种技术来对跳转作出预测—动态预测和静态预测。

      动态预测:在ARM11处理器中包含了64个4状态跳转地址缓存器(4-state branch target address cache)来保存最近发生的跳转指令的结果。通过对这些历史纪录的查找,处理器可以预测出当前的跳转指令是否会被执行。

      静态预测:当在动态预测的缓存器中无法查到和当前指令匹配的记录,ARM11处理器就从跳转的方式来判断是否执行。如果是向回跳转,大多数情况是遇到一个循环,处理器会假设这条指令被执行。如果是向前跳转,处理器会假设这条指令不被执行。

      动态预测和静态预测的组合使ARM11处理器能达到85%的预测正确性,对于每一个正确的预测,给指令执行带来的是减少5个时钟周期的等待时间。

    增强的存储器访问
      在ARM11处理器中,指令和数据可以更长时间的被保存在Cache中。一方面是由于物理地址Cache的实现,使上下文切换避免了反复重载Cache,另一方面是由于ARM11的Cache还有很多其它新颖的技术特点。

      如果数据的访问引起了CacheMiss,Cache将到存储器中读取需要的数据。但是ARM11处理器的流水线并不会停止下来。只要后面的指令没有用到Cache Miss将读回来的数据,ARM11处理器就会继续执行下去。即使下一条指令还是存储器访问指令,只要数据存放在Cache中,ARM11也会允许这条指令被执行。只有这条指令又引起一次CacheMiss,处理器才会停止下来。在大多数应用中,经过编译器调配后,这种情况并不多见。

    流水线的并行机制
      尽管ARM11是单指令发射处理器,但是在流水线的后半部分允许了极大程度的并行性。一旦指令被解码,将根据操作类型发射到不同的执行单元中。ARM11的数据通路中包含多个处理单元,允许ALU操作、乘法操作和存储器访问操作同时进行。

      考虑到不同的指令需要不同的执行时间,当三类指令先后被发射到流水线中,它们就可以同时被执行。而且ARM11处理器允许指令的乱续完成,如果在指令之间没有数据的相关性,所有指令都可以不必等待前面的指令完成而结束自己的执行。

    64位的数据通道
      在绝大多数的应用中,一个真正的64位处理器,在功耗面积的成本上还是不经济的。ARM11处理器展示了一种以32位处理器的成本,提供64位处理器性能的解决方案。ARM11处理中,内核和Cache,及协处理器之间的数据通路是64位的。这使处理器可以每周期读入两条指令或存放两个连续的数据,以大大提高数据访问和处理的速度。经过评测,这已经和64位处理器的性能相差无几。
  • 相关阅读:
    [LeetCode] 981. Time Based Key-Value Store
    [LeetCode] 97. Interleaving String
    [LeetCode] 953. Verifying an Alien Dictionary
    代价敏感的学习方法
    深度学习中Dropout原理解析
    梯度下降法的三种形式BGD、SGD以及MBGD
    吉布斯采样(Gibbs Sampling)简介(转)
    Java中next()和hasNext() ? nextLine()和hasNextLine()?区别详解
    红黑树介绍及旋转详解
    Pycharm中实现openCV安装好后简单测试
  • 原文地址:https://www.cnblogs.com/leaven/p/1891665.html
Copyright © 2011-2022 走看看