zoukankan      html  css  js  c++  java
  • ARM的体系结构与编程系列博客——ARM体系变种

    ARM体系变种的简介

    有人会很奇怪一件事情,ARM居然会变种,不会是基因突变了吧,呵呵,其实ARM变种通俗一点来讲呢,就是ARM突然具备了一种特定的功能!并非是基因突变哦!ARM是reboot好不好?

    ARM体系变种

    首先让我们通过一个表格来看看ARM变种。了解ARM变种涉及到了什么!

    现在让我来为大家解释一下这张图:

    • ARMv你就不用去管它了
    • v后面对应的是ARM指令集的版本号
    • 有x呢,表示排除某项功能

    要说的是自版本4之后M变种就为标准功能了,不再列出了!

    那么这个就是ARM/Thumb的命名格式啦!不要着急还不了解什么ARM体系变种,且听我细细道来!

    T变种

    t变种的全名——Thumb指令集,可以说T变种是ARM的效率上质一般的飞跃,thumb指令集是ARM指令集的一个子集重新编码而成的。它使ARM更加高效地进行运作。

    ARM的指令长度为32位,而Thumb指令长度只有16位,对于一些冗余空余位的操作来讲的话,在使用16位的基础上,明显比使用32位更加高效!

    但是thumb自身也有一定的局限性:

    • 完成相同的操作时,Thumb指令通常情况下需要比ARM更多的指令。
    • Thumb指令集是不包含异常处理时的一些指令的

    因此ARM是不能舍弃ARM的32位指令的!它与16位的Thumb指令配合才能更加有效率地执行

    那么发展至今,Thumb有哪些版本呢?

    1. Thumb指令集版本1,这个适用在ARM体系版本4中
    2. Thumb指令集版本2,这个适用在ARM体系版本5中

    M变种

    我们通常称之为长乘法指令,那么注意了:

    上篇我们说到了长乘法操作与长乘加操作(乘法指令和乘加法指令的操作),现在就为大家解释一下这两个操作。

    • 长乘法操作:32位整数乘以32位整数,生成64位整数
    • 长乘加操作:32位整数乘以32位整数,加上32位整数,生成64位整数

    它其实做版本3中正式引入,版本2的时候仅是有了这个思想的,然后在版本4以后,M变种就变成了系统中的标准部分。我们也不再说M变种了,因为我们在开发ARM过程中直接是使用相应的指令的!

    E变种

    我们将其定义为增强型DSP指令,针对于ARM的应用范围越来越广阔,那么为了满足DSP算法,ARM就需要增强这个算法的处理性能。

    那么它到底有了哪些的增强呢?

    • 增加了新的16位数据乘法与乘加操作指令
    • 实现饱和的带符号数的加减法操作指令
    • 进行双字数据操作的指令,包含LDRD、STDR、MCRRMRRC
    • cache预取指令PLD

    E变种是在版本5T中开始使用的。值得注意的是:早期的E变种未有包含LDRD、STRD、MCRRMRRC、PLD

    J变种

    ARM能跑android和java不得不归功于这个变种——java加数器jazelle

    这个加数器相当了不起,与一般的java虚拟机相比,它将java代码运行速度提高了整整8倍,而功耗竟降低了80%。使得程序员们可以在这个上面做更有力的开发!

    SIMD变种

    随着技术进步,人们对于数字媒体流更加追捧,你能够在手机上看电影,玩游戏,大多归功于ARM技术的强劲的高性能音频视频处理技术,这就是我们所说的ARM媒体功能扩展(SIMD变种)

    它将音频视频处理性能提高了4倍,具有这个功能的ARM芯片(泛指采用ARM技术的芯片)是目前市场上最受欢迎的芯片了!

    那么,它的特点有哪些呢:

    • 音频视频处理性能提高了4倍
    • 提供小数算术运算
    • 可同时进行两个16位操作数或者4个8位操作数的运算
    • 用户可以定义饱和运算模式
    • 两套16位操作数的乘加/乘减运算
    • 32位乘以32位的小数MAC

    最后,求鲜花,求关注~~~

  • 相关阅读:
    多线程(一)初步使用
    数据迁移:MSSQL脚本文件过大,客户端没有足够的内存继续执行程序
    统计数据,数据库就只有8,9,10的,而前端需要返回连续的记录
    Windows10禁用update
    C#模拟HTTP POST 请求
    C#中Equals和= =(等于号)的比较(转)
    .net framework4与其client profile版本的区别
    centos7 安装mysql
    JAVA中使用ASN.1
    使用gradle建立java application
  • 原文地址:https://www.cnblogs.com/samuelwnb/p/4289378.html
Copyright © 2011-2022 走看看