Base Integer Instructions: 设计 101 ..... 15
1.4 全书的总览 ..... 19
1.5 结束语 ..... 20
1.6 扩展阅读 ..... 21
第二章 RV32I: RISC-V 基础整数指令集 ..... 23
2.1 导言 ..... 23
2.2 RV32I 指令格式 ..... 23
2.3 RV32I 寄存器 ..... 26
2.4 RV32I 整数计算 ...
2.7 RV32I 无条件跳转 ..... 31
2.8 RV32I 杂项 ..... 31
2.9 使用插入排序比较 RV32I, ARM-32, MIPS-32 和 x86-32 指令集 ..... 32
2.10 结束语 ..... 32
2.11 扩展阅读 ..... 33
第三章 RISC-V 汇编语言 ..... 41
3.1 导言 ..... 41
3 0 码力 |
164 页 |
8.85 MB
| 2 年前 3
• eve::algo::mismatch
MEMCMP RESULTS, X86
name : mismatch | size : 10000 | type : char | group : avx2+bmi | padding : min
 EXTENSIONS
▶ x86
■ 128 bits: SSE2, SSE3, SSSE3, SSE4, SSE4.1, SSE4.2
■ 256 bits: AVX, AVX2, XOP
■ 512 bits: AVX512 and its myriad of sub-genre
ARM
■ 128 bits: NEON, ASIMD
■ SVE (VLS/VLA)
PowerPC out) → out_it
copy_if_result{..in, ..out}
## COMPRESS COPY (PURE SIMD)
• compress instructions (avx512, sve)
• tiny lookup tables (@aqrit)
• bmi2 (Peter Cordes)
• switch + shuffle (@Z boson)
compress_copy 0 码力 |
96 页 |
4.55 MB
| 1 年前 3 SIMD facilities (disclaimer: I don't work for Intel)
• Create some useful functions in terms of AVX-512 intrinsics
• Try some SIMD-style thinking to tackle some interesting problems
• Intra-register median-of-seven filter
• Fast small-kernel convolution
• Faster (?) UTF-8 to UTF-32 conversion (with AVX2)
## • No heavy code, but lots of pictures
• Thinking "vertically"
## Getting Started
#include [Image](/uploads/documents/1/3/8/f/138fa9de6d16700ecf0a8c3c6e7d3362/p58_5.jpg)
## Function avx_median_of_7()
void avx_median_of_7(float* pdst, float const* psrc, size_t const buf_len)
{
rf_512 prev; 0 码力 |
88 页 |
824.07 KB
| 1 年前 3 Bell),微软公司成员,Digital PDP-11 和 VAX-11 指令集架构的设计者
这本方便的小书轻松地总结了 RISC-V 指令集架构所有的基本要素,是学生和从业者的完美参考指南。
——兰迪·卡茨(Randy Katz),加州大学伯克利分校教授,RAID 存储系统的发明者之一
RISC-V 是学生学习 指令集架构和汇编语言编程的不错选择,二者是后续使用高级语言的基础。本书清晰地介绍了 RISC-V,还包含对其演化历史的深刻见解,以及与其他常见架构的对比。以过去的 指令集架构为鉴,RISC-V 的设计者能规避一些不必要、不合理的特性,使其易于教学。虽然它很简洁,但它的强大足以在实际应用中广泛使用。很久以前我教过汇编编程的入门课,如果我现在去教这门课,我很乐意用本书作为教材。
——约翰·马沙(John Mashey),MIPS 指令集架构的设计者之一
本书讲述了 RISC-V 能做什么,及其设计者为何赋予
RISC-V 基础整数 指令集(RV32I/64I),特权指令,和可选的RV32/64C。寄存器x1-x31和PC在RV32I中是32位,在RV64I中是64位(x0=0)。RV64I添加了用于处理更宽数据的12条指令。每条16 0 码力 |
223 页 |
15.31 MB
| 2 年前 3 ymm0?因为他不敢保证运行这个程序的电脑支持 AVX 指令集.....
_Z4funcPi:
.LFB0:
.cfi_startproc
# main.cpp:2: a[0] = 111;
movdqa .LC0(%rip), %xmm0 #, tmp83
movups %xmm0, (%rdi) # tmp83, MEM
## 让编译器自动检测当前硬件支持的指令集
$$ \text{void func(int 777; \\
a[7] = 888; \\
10 \end{array} $$
-march=native 让编译器自动判断当前硬件支持的指令。老师的电脑支持 AVX 指令集,所以他用了。不过注意这样编译出的程序,可能放到别人不支持 AVX 的电脑上没法运行。
## gcc -march=native -03
_Z4funcPi:
.LFB0:
.cfi_startproc
pushq %rbp 0 码力 |
108 页 |
9.47 MB
| 2 年前 3 版本,支持自动反馈优化、软硬件协同、内存优化、SVE 向量化、矢量化数学库等特性。
1. GCC 版本升级到 12.3,默认语言标准从 C14/C++14 升级到 C17/C++17 标准,支持 Armv9-a 架构,X86 的 AVX512 FP16 等更多硬件架构特性。
||GCC 10.3.0|GCC 11.3.0|GCC 12.3.0|
|---|---|---|---|
|发布时间|2021/4/8|2022/4/21|2023/5/8| atomic load and storearmv8.8-a, +mop, acceleratememory operationsarmv9-aAmpere-1Cortex-A710Cortex-X2AVX512-FP16SSE2-FP16|
2. 支持结构体优化,指令选择优化等,充分使能 ARM 架构的硬件特性,运行效率更高,在 SPEC CPU 2017 等基准测试中性能大幅优于上游社区的 GCC 相关使用方式请参考 gala-gopher daemonset 部署介绍和 REST 配置介绍。
## CTinspector 项目
CTinspector 是天翼云科技有限公司基于 ebpf 指令集自主创新研发的语言虚拟机运行框架。基于 CTinspector 运行框架可以快速拓展其应用实例用于诊断网络性能瓶颈点,诊断存储 I/O 处理的热点和负载均衡等,提高系统运行时诊断的稳定性和时效性。
0 码力 |
52 页 |
5.25 MB
| 1 年前 3 部分计算:程序优化,根据已知信息,运算进行特化
◦ 已知源程序与解释器,进行部分运算,获得目标程序
■ 目标程序 x 输入数据 -> 输出数据
## 虚拟机
• 一处编写,处处运行
☐ 定义一个不基于任何平台的指令集
在不同平台上实现解释器
• 两种常见的虚拟机
☐ 堆栈虚拟机:运算数存储在栈上,数据遵循先进后出原则
☐ 寄存器虚拟机:运算数存储在寄存器中
## 寄存器虚拟机
• 例:Lua VM (The local.get $m
## WebAssembly
• WebAssembly是什么?
☐ 一个虚拟指令集
可以在浏览器以及其他运行时(Wasmtime WAMR WasmEdge等)中运行
○ MoonBit的第一个后端
• WebAssembly指令集的子集为例
## 简单指令集
• 数据
☐ 只考虑32位有符号整数
☐ 非零代表 true,零代表 false
· 指令
☐ rest
Stack
Instruction
Stack
## 总结
• 本节课展示了一个堆栈虚拟机
介绍了WebAssebmly指令集的一小部份
☐ 实现了一个编译器
☐ 实现了一个解释器
• 挑战
☐ 在语法解析器中拓展函数定义
☐ 在指令集中添加提前返回指令(return) 0 码力 |
31 页 |
594.38 KB
| 2 年前 3 CPU supports
instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
Hello TensorFlow
## 支持 AVX2 指令集的 CPUs
## • Intel
• Haswell processor, Q2 2013
• Haswell E processor, Q3 2014 0 码力 |
20 页 |
15.87 MB
| 2 年前 3 .....40
5.5存储优化.....42
第六章Linux X86汇编程序设计.....46
6.1编译和链接.....46
6.2基本示例.....46
第七章X86汇编指令集汇总.....47
一.数据传输指令.....47
二、算术运算指令.....49
三、逻辑运算指令.....49
四、串指令.....50
五、程序转移指令.....50
六、伪指令 指令),而你很清楚,那么可以用 DB 机器码的方式强行写下指令。这意味着,你可以超越汇编器的能力撰写汇编程序,然而,直接用机器码编程是几乎肯定是一件费力不讨好的事——汇编器厂商会经常更新它所支持的指令集以适应市场需要,而且,你可以期待你的汇编其能够产生正确的代码,因为机器查表是不会出错的。既然机器能够帮我们做将程序转换为代码这件事情,那么为什么不让它来做呢?
细心的读者不难发现,在程序中我们没有对 一样,它用的是 Linux 中的 80h 中断,相当于 DOS 下的 21h 中断,只是因为 Linux 是 32 位操作系统,所以采用了 eax、ebx 等寄存器。
## 第七章 X86 汇编指令集汇总
### 一. 数据传输指令
它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据。
### 1. 通用数据传送指令
1)MOV 传送字或字节.
MOV SX 先符号扩展,再传送.
MOV 0 码力 |
63 页 |
598.28 KB
| 2 年前 3
|