zephyr-浮点运算服务
来源:互联网 发布:分卷包数据不正确修复 编辑:程序博客网 时间:2024/06/05 06:05
注意:
当前浮点运算服务只在基于ARM Cortex-M4或者inter X86架构的开发板上可用,此服务与体系架构相关
概念
内核允许应用的tasks和fibers使用开发板配置中支持的浮点寄存器(内核不支持通过ISRs方式使用浮点寄存器)
内核可以配置成仅为应用提供需要的浮点运算服务。支持下面三种操作模式。此外,内核对SSE寄存器的支持也可以被包含,舍弃或者关闭
No FP registers mode
这种模式用于当因公没有tasks或者fibers使用浮点寄存器的情况。这是内核默认的浮点服务模式。
如果一个task或者fiber在这种模式下使用任何浮点寄存器,内核将会产生一个错误状况并退出线程
Unshared FP registers mode
这个模式用于当应用只有一个task或者fiber使用浮点寄存器的情况
内核会初始化浮点寄存器以使它们可以被任何task或者fiber使用。无论发生任何上下文切换,浮点寄存器将始终保持不变。
当内核不支持多线程访问寄存器的时候,两个或多个任务或线程使用浮点寄存器将会产生错误。
Shared FP registers mode
这个模式用于应用有两个或多个线程使用浮点寄存器的情况。基于底层的CPU架构,内核支持一个或多个一下线程子类:
non-user:一个线程不能使用任何浮点寄存器
FPU user:一个线程可以使用标准的浮点寄存器
SSE user: 线程可以使用标准浮点寄存器和SSE寄存器
内核初始化浮点寄存器,所以他们可以被任何task或者fiber使用,然后在上下文切换的时候保存和恢复这些寄存器来保证每个FPU和SSE使用者的计算不和其他使用者的计算冲突。
在ARM cotex-M4架构上,当shared FP registers 模式开启的时候,内核将所有tasks和fibers作为FPU使用者。这意味着浮点寄存器将会在上下文切换的时候被保存和恢复,即使当相关的线程没有使用他们的时候。每一个task和fiber都必须在寄存器被保存的地方提供一个额外的132byte的栈空间
在X86架构的内核上,当
- zephyr-浮点运算服务
- zephyr-原子服务
- 浮点运算
- 浮点运算
- 浮点寄存器及浮点运算
- ARM 浮点运算,软浮点,硬浮点
- ARM 浮点运算,软浮点,硬浮点
- zephyr-可执行上下文服务-定制数据值机制
- 浮点运算简介
- 矩阵、浮点运算测试报告
- 浮点运算简介
- 浮点函数运算类
- 浮点运算简介
- 浮点运算误差
- 浮点运算指令集
- javascript浮点精确运算
- JavaScript 浮点数运算
- 矩阵、浮点运算测试报告
- Cocos2d-x ListView 的添加,删除,点击和滑动到头和尾监听
- 交换排序(快速排序 冒泡排序)
- 你不了解的Hacker,实现AngularJS Controller的继承扩展
- C++(继承篇)
- codeforces732a
- zephyr-浮点运算服务
- 轻松搞定面试中的二叉树题目
- dump so
- Android APP--编写简单的答题器
- SSM框架---整合配置详情
- Test
- oracle查询表结构
- CocoaPods私有库
- mysql教程