glibc 知:手册84:附录E:平台特定设施
文章目录
- 1. 前言
- 2. 附录 E 平台特定设施
- 2.1. PowerPC 特定设施
- 2.2. RISC-V 特定设施
- 2.3. X86 特定设施
- 3. 参考
1. 前言
The GNU C Library Reference Manual for version 2.35
2. 附录 E 平台特定设施
Appendix E Platform-specific facilities
GNU C 库可以提供特定于机器的功能。
2.1. PowerPC 特定设施
PowerPC-specific Facilities
不特定于特定操作系统的特定于 PowerPC 的工具在 sys/platform/ppc.h 中声明。
函数:uint64_t __ppc_get_timebase (void)
Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
读取时基寄存器的当前值。
时基寄存器是一个 64 位寄存器,用于存储以系统相关频率更新的单调递增值,该频率可能与处理器频率不同。Power ISA 2.06b - Book II - Section 5.2 中提供了更多信息。
__ppc_get_timebase 直接使用处理器的时基功能,不需要操作系统的帮助,因此非常高效。
函数:uint64_t __ppc_get_timebase_freq (void)
Preliminary: | MT-Unsafe init | AS-Unsafe corrupt:init | AC-Unsafe corrupt:init | See POSIX Safety Concepts.
读取时基寄存器更新的当前频率。
该频率与处理器时钟或总线时钟无关。该频率也可能不是恒定的。Power ISA 2.06b - Book II - Section 5.2 中提供了更多信息。
以下函数提供有关使用与其他处理器共享的资源的提示。例如,如果等待锁的程序打算转移共享资源以供其他处理器使用,则可以使用它们。Power ISA 2.06b - Book II - Section 3.2 中提供了更多信息。
函数:void __ppc_yield (void)
Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
如果释放专用于执行处理器的共享资源供其他处理器使用,则提示性能可能会提高。
函数:void __ppc_mdoio (void)
Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
提示如果释放专用于执行处理器的共享资源,直到对缓存禁止存储的所有未完成的存储访问都已完成,则性能可能会提高。
函数:void __ppc_mdoom (void)
Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
提示如果释放专用于执行处理器的共享资源,直到所有未完成的对数据不在缓存中的可缓存存储的存储访问都已完成,则性能可能会提高。
函数:void __ppc_set_ppr_med (void)
Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
将程序优先级寄存器设置为中等值(默认)。
程序优先级寄存器 (PPR) 是一个 64 位寄存器,用于控制程序的优先级。通过调整 PPR 值,程序员可以通过更有效地使用系统资源来提高系统吞吐量,尤其是在争用情况下。__ppc_set_ppr_med (medium – default)、__ppc_set_ppc_low (low) 和 __ppc_set_ppc_med_low (medium low) 函数涵盖了三种可用的非特权状态。Power ISA 2.06b - Book II - Section 3.1 中提供了更多信息。
函数:void __ppc_set_ppr_low (void)
Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
将程序优先级寄存器设置为低值。
函数:void __ppc_set_ppr_med_low (void)
Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
将程序优先级寄存器设置为中低值。
Power ISA 2.07 扩展了可以设置到程序优先级寄存器 (PPR) 的优先级。以下函数实现了新的优先级:非常低和中高。
函数:void __ppc_set_ppr_very_low (void)
Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
将程序优先级寄存器设置为非常低的值。
函数:void __ppc_set_ppr_med_high (void)
Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
将程序优先级寄存器设置为中高值。中高优先级具有特权,只能在特定时间间隔内由问题状态程序设置。如果在时间间隔到期时程序优先级为中高,或者如果在不允许时尝试将优先级设置为中高,则将优先级设置为中。
2.2. RISC-V 特定设施
RISC-V-specific Facilities
特定于实现 Linux ABI 的 RISC-V 系统的缓存管理工具在 sys/cachectl.h 中声明。
函数:void __riscv_flush_icache (void *start, void *end, unsigned long int flags)
Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
强制存储和指令缓存提取之间的排序。强制排序的地址范围由 start 和 end 指定。flags 参数控制此排序的范围,默认行为(标志值为 0)是在当前进程中的所有线程上强制执行栅栏。设置 SYS_RISCV_FLUSH_ICACHE_LOCAL 位允许用户指示仅在当前线程上强制排序是必要的。所有其他标志位都保留。
2.3. X86 特定设施
X86-specific Facilities
X86 特定的设施,但不特定于特定操作系统的功能在 sys/platform/x86.h 中声明。
函数:const struct cpuid_feature * __x86_get_cpuid_feature_leaf (unsigned int leaf)
Preliminary: | MT-Safe | AS-Safe | AC-Safe | See POSIX Safety Concepts.
返回指向 x86 CPU 特征叶的查询宏使用的 x86 CPU 特征结构的指针。
宏:int CPU_FEATURE_PRESENT (name)
如果处理器具有特征名称,则此宏返回非零值 (true)。
宏:int CPU_FEATURE_ACTIVE (name)
如果处理器具有功能名称并且功能处于活动状态,则此宏返回非零值 (true)。可能还有其他先决条件,例如足够的堆栈空间或 AMX 的进一步设置,必须满足这些先决条件才能使用该功能。
支持的处理器功能包括:
- ACPI – 热监控器和软件控制的时钟设施。
- ADX – ADX 指令扩展。
- APIC – APIC 片上。
- AES – AES 指令扩展。
- AESKLE – AES Key Locker 指令由操作系统启用。
- AMD_IBPB – AMD CPU 的间接分支预测器屏障 (IBPB)。
- AMD_IBRS – AMD CPU 的间接分支限制推测 (IBPB)。
- AMD_SSBD – AMD CPU 的推测性存储绕过禁用 (SSBD)。
- AMD_STIBP – AMD CPU 的单线程间接分支预测器 (STIBP)。
- AMD_VIRT_SSBD – AMD CPU(旧系统)的推测性存储绕过禁用 (SSBD)。
- AMX_BF16 – 对 bfloat16 数字进行平铺计算操作。
- AMX_INT8 – 平铺 8 位数字的计算操作。
- AMX_TILE – 平铺架构。
- ARCH_CAPABILITIES – IA32_ARCH_CAPABILITIES MSR。
- AVX – AVX 指令扩展。
- AVX2 – AVX2 指令扩展。
- AVX_VNNI – AVX-VNNI 指令扩展。
- AVX512_4FMAPS – AVX512_4FMAPS 指令扩展。
- AVX512_4VNNIW – AVX512_4VNNIW 指令扩展。
- AVX512_BF16 – AVX512_BF16 指令扩展。
- AVX512_BITALG – AVX512_BITALG 指令扩展。
- AVX512_FP16 – AVX512_FP16 指令扩展。
- AVX512_IFMA – AVX512_IFMA 指令扩展。
- AVX512_VBMI – AVX512_VBMI 指令扩展。
- AVX512_VBMI2 – AVX512_VBMI2 指令扩展。
- AVX512_VNNI – AVX512_VNNI 指令扩展。
- AVX512_VP2INTERSECT – AVX512_VP2INTERSECT 指令扩展。
- AVX512_VPOPCNTDQ – AVX512_VPOPCNTDQ 指令扩展。
- AVX512BW – AVX512BW 指令扩展。
- AVX512CD – AVX512CD 指令扩展。
- AVX512ER – AVX512ER 指令扩展。
- AVX512DQ – AVX512DQ 指令扩展。
- AVX512F – AVX512F 指令扩展。
- AVX512PF – AVX512PF 指令扩展。
- AVX512VL – AVX512VL 指令扩展。
- BMI1 – BMI1 指令。
- BMI2 – BMI2 指令。
- CLDEMOTE – CLDEMOTE 指令。
- CLFLUSHOPT – CLFLUSHOPT 指令。
- CLFSH — CLFLUSH 指令。
- CLWB — CLWB 指令。
- CMOV – 条件移动指令。
- CMPXCHG16B — CMPXCHG16B 指令。
- CNXT_ID – L1 上下文 ID。
- CORE_CAPABILITIES – IA32_CORE_CAPABILITIES MSR。
- CX8 — CMPXCHG8B 指令。
- DCA – 从内存映射设备预取数据。
- DE — 调试扩展。
- DEPR_FPU_CS_DS – 弃用 FPU CS 和 FPU DS 值。
- DS — 调试存储。
- DS_CPL – CPL 合格的调试存储。
- DTES64 — 64 位 DS 区。
- EIST – 增强的英特尔 SpeedStep 技术。
- ENQCMD – 入队存储指令。
- ERMS – 增强型 REP MOVSB/STOSB。
- F16C – 16 位浮点转换指令。
- FMA – 使用 YMM 状态的 FMA 扩展。
- FMA4 – FMA4 指令扩展。
- FPU – X87 片上浮点单元。
- FSGSBASE — RDFSBASE/RDGSBASE/WRFSBASE/WRGSBASE 指令。
- FSRCS – 快速短 REP CMP 和 SCA。
- FSRM – 快速短 REP MOV。
- FSRS – 快速短 REP STO。
- FXSR – FXSAVE 和 FXRSTOR 指令。
- FZLRM – 快速零长度 REP MOV。
- GFNI – GFNI 指令扩展。
- HLE – HLE 指令扩展。
- HTT – 最大 APIC ID 保留字段有效。
- HRESET – 历史重置。
- HYBRID – 混合处理器。
- IBRS_IBPB – 间接分支受限推测 (IBRS) 和间接分支预测器屏障 (IBPB)。
- IBT – 英特尔间接分支跟踪指令扩展。
- INVARIANT_TSC – 不变的 TSC。
- INVPCID — INVPCID 指令。
- KL – AES Key Locker 说明。
- LAM — 线性地址屏蔽。
- L1D_FLUSH – IA32_FLUSH_CMD MSR。
- LAHF64_SAHF64 – LAHF/SAHF 在 64 位模式下可用。
- LM — 长模式。
- LWP – 轻量级分析。
- LZCNT — LZCNT 指令。
- MCA — 机器检查架构。
- MCE — 机器检查异常。
- MD_CLEAR – MD_CLEAR。
- MMX – 英特尔 MMX 技术。
- MONITOR – MONITOR/MWAIT 指令。
- MOVBE — MOVBE 指令。
- MOVDIRI – MOVDIRI 指令。
- MOVDIR64B – MOVDIR64B 指令。
- MPX – 英特尔内存保护扩展。
- MSR – 模型特定寄存器 RDMSR 和 WRMSR 指令。
- MTRR — 内存类型范围寄存器。
- NX – 不执行页面保护。
- OSPKE – 操作系统已设置 CR4.PKE 以启用保护密钥。
- OSXSAVE – 操作系统已设置 CR4.OSXSAVE[bit 18] 以启用 XSETBV/XGETBV 指令来访问 XCR0 并支持使用 XSAVE/XRSTOR 的处- 理器扩展状态管理。
- PAE — 物理地址扩展。
- PAGE1GB – 1 GB 页面。
- PAT — 页面属性表。
- PBE – 等待中断启用。
- PCID — 进程上下文标识符。
- PCLMULQDQ – PCLMULQDQ 指令。
- PCONFIG — PCONFIG 指令。
- PDCM – 性能和调试能力。
- PGE – 页面全局位。
- PKS – 管理员模式页面的保护密钥。
- PKU – 用户模式页面的保护密钥。
- POPCNT — POPCNT 指令。
- PREFETCHW – PREFETCHW 指令。
- PREFETCHWT1 — PREFETCHWT1 指令。
- PSE – 页面大小扩展。
- PSE_36 – 36 位页面大小扩展。
- PSN — 处理器序列号。
- PTWRITE — PTWRITE 指令。
- RDPID – RDPID 指令。
- RDRAND – RDRAND 指令。
- RDSEED — RDSEED 指令。
- RDT_A – 英特尔资源控制器技术(英特尔 RDT)分配功能。
- RDT_M – 英特尔资源控制器技术(英特尔 RDT)监控功能。
- RDTSCP — RDTSCP 指令。
- RTM – RTM 指令扩展。
- RTM_ALWAYS_ABORT – 事务总是中止,使 RTM 不可用。
- SDBG – IA32_DEBUG_INTERFACE MSR 用于芯片调试。
- SEP – SYSENTER 和 SYSEXIT 指令。
- SERIALIZE — 序列化指令。
- SGX – 英特尔软件保护扩展。
- SGX_LC – SGX 启动配置。
- SHA – SHA 指令扩展。
- SHSTK – 英特尔影子堆栈指令扩展。
- SMAP – 主管模式访问预防。
- SMEP – 主管模式执行预防。
- SMX – 更安全的模式扩展。
- SS — 自我窥探。
- SSBD – 推测性存储绕过禁用 (SSBD)。
- SSE – 流式 SIMD 扩展。
- SSE2 – 流式 SIMD 扩展 2。
- SSE3 – 流式 SIMD 扩展 3。
- SSE4_1 – 流式 SIMD 扩展 4.1。
- SSE4_2 – 流式 SIMD 扩展 4.2。
- SSE4A – SSE4A 指令扩展。
- SSSE3 - 补充流 SIMD 扩展 3。
- STIBP – 单线程间接分支预测器 (STIBP)。
- SVM – 安全虚拟机。
- SYSCALL_SYSRET – SYSCALL/SYSRET 指令。
- TBM – 尾随位操作指令。
- TM – 热监控器。
- TM2 – 热监视器 2。
- TRACE — 英特尔处理器跟踪。
- TSC — 时间戳计数器。RDTSC 指令。
- TSC_ADJUST – IA32_TSC_ADJUST MSR。
- TSC_DEADLINE – 本地 APIC 计时器支持使用 TSC 截止日期值的一次性操作。
- TSXLDTRK – TSXLDTRK 指令。
- UINTR — 用户中断。
- UMIP – 用户模式指令预防。
- VAES – VAES 指令扩展。
- VME – 虚拟 8086 模式增强功能。
- VMX – 虚拟机扩展。
- VPCLMULQDQ – VPCLMULQDQ 指令。
- WAITPKG – WAITPKG 指令扩展。
- WBNOINVD – WBINVD/WBNOINVD 指令。
- WIDE_KL – AES 宽密钥储物柜指令。
- X2APIC – x2APIC。
- XFD – 扩展功能禁用 (XFD)。
- XGETBV_ECX_1 – ECX = 1 的 XGETBV。
- XOP — XOP 指令扩展。
- XSAVE – XSAVE/XRSTOR 处理器扩展状态功能、XSETBV/XGETBV 指令和 XCR0。
- XSAVEC – XSAVEC 指令。
- XSAVEOPT – XSAVEOPT 指令。
- XSAVES – XSAVES/XRSTORS 指令。
- XTPRUPDCTRL – xTPR 更新控制。
您可以通过以下方式查询处理器是否支持 AVX:
#include <sys/platform/x86.h>int
avx_present (void)
{return CPU_FEATURE_PRESENT (AVX);
}
如果 AVX 处于活动状态并且可以用于:
#include <sys/platform/x86.h>int
avx_active (void)
{return CPU_FEATURE_ACTIVE (AVX);
}
3. 参考
- Appendix E Platform-specific facilities
glibc 知:手册84:附录E:平台特定设施相关推荐
- 计算机音乐教学软件,音乐教学软件有哪些?小知大数智慧音乐教育平台学生使用手册...
原标题:音乐教学软件有哪些?小知大数智慧音乐教育平台学生使用手册 一.电脑端使用 第一步:登录系统小知大数智慧音乐教学平台. 选择所在学校: 使用学生账号.密码登录,即可进入平台. 第二步:学生自主学 ...
- glibc 知:官方
文章目录 1. 官网 1.1. What is glibc?什么是glibc 1.2. Get started 开始 1.3. Get Involved 参与其中 1.4. Sources 源码 1. ...
- glibc 知:测试套件
文章目录 前言 测试套件目标 只测试一项测试 ABI检查 有关 make xcheck 特定测试的详细信息 编写测试用例 使用交叉编译器进行测试 已知的测试套件失败 abi-check bug-ate ...
- 泛微-采知连文档协作平台:采集、存储、协作更高效智能
文档管理是组织数字化进程中的关键环节.<国家信息化发展战略纲要>中要求"开发信息资源,释放数字红利","全面提升信息采集.处理.传输.利用.安全能力" ...
- glibc 知:构建2.34版本
文章目录 获取版本 构建安装 测试 testrun.sh strace 获取版本 主页:https://www.gnu.org/software/libc 这里选择任意一个压缩包下载即可. 构建安装 ...
- glibc 知:手册06:字符集处理
文章目录 1. 前言 2. 字符集处理 2.1. 扩展字符简介 2.2. 字符处理函数概述 2.3. 可重启的多字节转换函数 2.3.1. 选择转换及其属性 2.3.2. 表示转换的状态 2.3.3. ...
- glibc 知:手册05:字符串和数组
文章目录 1. 前言 2. 字符串和数组实用程序 2.1. 字符串的表示 2.2. 字符串和数组约定 2.3. 字符串长度 2.4. 复制字符串和数组 2.5. 连接字符串 2.6. 复制时截断字符串 ...
- glibc 知:手册21:日期和时间
文章目录 1. 前言 2. 日期和时间 2.1. 时间基础 2.2. 时间类型 2.3. 计算经过时间 2.4. 处理器和 CPU 时间 2.4.1. CPU时间查询 2.4.2. 处理器时间查询 2 ...
- glibc 知:手册12:输入/输出流
文章目录 1. 前言 2. 输入/输出流 2.1. 流 2.2. 标准流 2.3. 打开流 2.4. 关闭流 2.5. 流和线程 2.6. 国际化应用程序中的流 2.7. 按字符或行的简单输出 2.8 ...
最新文章
- 误删了数据库,我只能跑路么?
- Mars 如何分布式地执行
- 妲己机器人怎么升级固件_台湾重金设计的3D妲己,亮瞎了
- 【Level 09】U1 The way I see it L1 A great adventure
- c语言中的数组二分法排序程序,#C语言#二分法查找有序数组
- 鸽主姓名查询成绩_SQL学习之旅-Select简单查询
- dhcp、tftp基础
- 重庆兴渝计算机培训中心,重庆兴渝职业中等专业学校招生录取分数线
- 腾讯笔试题编程题——纸牌游戏
- 华为网络工程师认证有了解的吗?
- 英雄联盟英雄技能总结
- java 水晶按钮图片_JAVA GUI 开发---水晶图片按钮
- Java核心技术 学习记录1
- 8. G1垃圾收集日志
- 城市信息化重要载体“无线城市”
- 【Matlab学习手记】良好的编程习惯
- 树莓派安装后中文设置及输入法安装
- 90句美丽的英文及翻译
- Excel导入导出详细教程------EasyExcel功能整合
- C程序设计谭浩强第五版课后答案 第三章习题答案