Hexagon处理器的指令编码
来源:互联网 发布:419是什么意思网络用语 编辑:程序博客网 时间:2024/05/22 18:24
Hexagon处理器的指令编码
概述
本文将讲解Hexagon处理器指令以及指令包的二进制编码,它包含如下几个部分
l 指令
l 子指令
l Duplex指令
l 指令类
l 指令包
l 循环包
l 立即操作数
l 扩展立即操作数
l 常数补充
l 新值操作数
l 指令映射
指令
所有的Hexagon处理器指令都是基于32位指令字来编码的。指令字格式根据指令的类型各有不同。
指令字中包含了两种位域的方式
l 通用域在每个处理器指令中都存在,并且在所有指令中都拥有相同的定义。
l 特定指令域只会在某些指令中出现,或者根据指令集的定义不同而各有差异。
指令的位域信息如下图所示:
表一 指令的位域信息
子指令
为了减少编码大小,Hexagon处理器支持在单一的32位容器中进行指令对的编码。这样的指令编码被称作子指令。而容器被称作duplexes
子指令用于如下几种常用的指令:
l 算数以及逻辑操作
l 寄存器的分配与传送
l Load与Store指令
l 栈帧的分配与释放
l 子路径的返回操作
图二列出了子指令与群标识符
表二 子指令与群标识符
指令的地址信息如下表所示:
表三 指令的地址信息
复式结构指令
复式结构通过将[15:14]位设置为00来编码为32位指令。被用于构成duplex的子指令在duplex中被编码为13位域。
下图显示了duplex的编码细节
表四
一个指令包可以包含一个duplex以及超过两个的非duplex指令。Duplex只能包含在包的最后一个字中。Duplex指令中的执行流程总是从Slot0-Slot1
Duplex拥有如下的群限制:
表四 Duplex的群限制:
常数扩展使得指令的立即数操作扩展至32位。如下的子指令可以通过常数扩展来使用
Rx = add(Rx,#s7)Rd = #u6
如果duplex包含两个相同子指令群的指令,那么在duplex中,指令比如按照如下的方式来安排:如果子指令以13位的无符号数来操作,那么相应的更小的数字应该被放置在duplex的Slot1中。
子指令必须遵循任意slot的安排群规则,从而适应于单指令,即使duplex模式的存在违反了这些安排。对这些规则,有一个特例:
Jumpr R31必须出现在Slot0的位置上。
指令类
指令类在指令字中四个最重要的位编码(31:28)。这些位被参考为指令的ICLASS域。表五列出了相应指令类的编码值。Slot一列表示slot可以接受的指令类:
表五 指令类的编码值
指令包
指令包通过使用指令字中的两个位[15:14]来进行编码,它们对应着指令字中的Parse域。这些域值有如下的定义
11:意味着该指令是包中的最后一个指令(在指令字的最高位地址)
01或10:意味着该指令不是包中的最后一个指令
00:意味该指令是一个duplex指令
如果四个连续的指令序列都没有包括11,那么处理器将会抛出一个错误异常。下图给出了指令字中Parse域的定位:
图一 Parse域的定位
如下的案例显示了Parse用于编码指令包的流程
{ A ; B}01 11 // Parse fields of instrs A,B{ A ; B ; C}01 01 11 // Parse fields of instrs A,B,C{ A ; B ; C ; D}01 01 01 11 // Parse fields of instrs A,B,C,D
循环包
除了编码包中的最后一个指令外,指令字中的Parse域还被用于编码硬件循环中的最后一个包。
Hexagon处理器支持两种硬件循环:标签0与1.这些循环中的最后一个包受如下的规则限制:
硬件循环0中的最后一个包必须包含两个或者更多的指令
硬件循环1中的最后一个包必须包含三个或者更多的指令
如果循环中最后一个包使用汇编语言来表述,那么汇编器将自动添加一个或两个NOP指令从而扩充编码包,无论该包是否是最后一个循环。
下表显示了用于编码循环包的Parse域:
表六 编码循环包的Parse域
如下的代码案例显示了Parse域是如何用来编码循环包的:
{ A B}:endloop010 11 // Parse fields of instrs A,B{ A B C}:endloop010 01 11 // Parse fields of instrs A,B,C{ A B C D}:endloop010 01 01 11 // Parse fields of instrs A,B,C,D{ A B C}:endloop101 10 11 // Parse fields of instrs A,B,C{ A B C D}:endloop101 10 01 11 // Parse fields of instrs A,B,C,D{ A B C}:endloop0:endloop110 10 11 // Parse fields of instrs A,B,C{ A B C D}:endloop0:endloop110 10 01 11 // Parse fields of instrs A,B,
- Hexagon处理器的指令编码
- Hexagon处理器的特殊功能
- Hexagon处理器的特殊功能
- Hexagon DSP的指令集
- Hexagon处理器的一些特殊操作
- Hexagon处理器的条件执行机制
- HVM,Hexagon处理器的虚拟器解决方案
- Hexagon对数据的操作指令
- Hexagon DSP SDK--DSP处理器
- Hexagon的软件栈
- HEXAGON的意思,举例说明
- Hexagon
- or1200处理器的数据处理类指令说明
- 关于iOS设备处理器的指令集
- iOS设备处理器的指令集
- 协处理器和协处理器指令
- HBase的协处理器编码实战
- HBase的协处理器编码实战
- jquery-chosen 选择框插件
- 省市二级联动
- IOS百度地图
- shell与bash
- transitionFromViewController方法的使用--优化
- Hexagon处理器的指令编码
- 【烙铁使用规范】—— 延长无铅手工焊接工艺中烙铁头的寿命
- android源码开发之监听来电状态
- QT5.5.0 VS2013/CentOS 7自编译
- O2O的六种死法
- ServletContextListener监听+Thread使用
- ios9学习系列:UIStackView
- 图片始终相对于外层DIV居中
- JQuery对CheckBox的一些相关操作