

1. WSL不是基于我自己的系统吗？环境变量也是一样的，既然在命令程序行（cmd）下可以运行conda命令，那么在WSL也可以调用我的conda吧？结果报错了conda :not found。这意味着WSL和本机在软件上并不是相通的！摘自[ubuntu - Using conda from WSL Windows 10 - Stack Overflow]([ubuntu - Using conda from WSL Windows 10 - Stack Overflow](https://stackoverflow.com/questions/52866376/using-conda-from-wsl-windows-10))

2. jupyter notebook运行matplotlib

   。如果我只用%matplotlib notebook，显示不了图像，报错Javascript Error: IPython is not defined；然后会显示文本，（[<matplotlib.lines.Line2D at 0x1e4edf19190>] or <Axes: xlabel='total_bill', ylabel='tip'>）或者根本不显示文本，就只有报错。
   如果我只用%matplotlib widget,显示不了图像并且报错，Failed to load model class 'MPLCanvasModel' from module 'jupyter-matplotlib' Error: No version of module jupyter-matplotlib is registered.或者只会显示文本，（[<matplotlib.lines.Line2D at 0x1e4edf19190>] or <Axes: xlabel='total_bill', ylabel='tip'>）。

   以上两者加上%matplotlib inline可以显示图像，但交互不了图像。

​	解决方法：安装  pip install ipympl并使用%matplotlib widget。

3. \usepackage[labelformat=simple]{subcaption}%使子图的编号的括号去掉

\renewcommand{\thesubfigure}{\thefigure-\arabic{subfigure}}%实现1-1，1-2
\makeatletter%与\makeatother中间放入@符号开头代码从而可以直接访问以@开头的命令
\renewcommand\p@subfigure{}这一行用于重新定义子图标签的引用格式，否则引用的时候出现图2 2-1，图2 2-2了。我们要求引用的时候是图2-1，图2-2
\makeatother



4. 
| 架构 | 指令集位数 |解释|
|---|---|---|
| X86 | 32位 |英特尔出的处理习惯以86为结尾，如80186、80286、80386，所以之后被称之为 X86|
| AMD | 64位 |32位向64位演进时，AMD 抢先制造出了兼容 X86 32位指令集的 64位处理器|
| x86-64 | 64位 |因特尔设计 IA-64，比amd晚了一步，且不兼容 X86 32位指令集，比较惨淡<br/>因此后续因特尔也采用 AMD64，但在此基础上进行了扩充，并改名为 X86-64<br/>所以 x86_64,x64,AMD64基本上是同一个东西<br/>现在用的intel/amd的桌面级CPU基本上都是x86_64|
| ARM |  |适用于移动通信这种低成本、高性能、低耗电的领域|
| ARM-V8 | AArch64：64位执行状态<br/>AArch32：32位执行状态 |有两种执行态，适用于 32位和64位|
| AArch64 | 64位 |从 ARM-V8 中独立出来|


x86架构（The x86 architecture）是微处理器执行的计算机语言指令集，指一个Intel通用计算机系列的标准编号缩写，也标识一套通用的计算机指令集合。

1978年6月8日，Intel发布新款16位微处理器“8086”，x86架构诞生。

x86_64是x86 CPU开始迈向64位时面临两种选择：

- 向下兼容x86
- 完全重新设计指令集，不兼容x86

AMD先Intel制造出兼容x86的商用CPU，AMD称之为AMD64，且得到用户的认同。

Intel选择设计了一种不兼容x86的全新64位指令集，称之为IA-64（这个就是前面所说的安腾）。由于较AMD晚，同时由于是全新设计的CPU，没有编译器、不支持Windows后来不得不在时机落后的情况下也开始支持AMD64指令集。换了个名字叫x86_64。表示x86指令集的64扩展。

实际上，x86_64、x64、AMD64基本上是同一个东西，我们现在用的Intel/amd的桌面级CPU都是x86_64，与之相对的arm、ppc等都不是x86_64。



对于普通程序来说，CPU位数的扩展，寄存器数量的增加不会带来明显的性能提升，比如IE浏览器、Office办公软件这些。特定的程序才能够充分利用64位的CPU、以及更多寄存器带来的优势。比如MMX除了提升多媒体程序的性能，对矩阵、多项式、向量计算也能带来提升，更多的MMX寄存器、更大的寄存器都有利于SIMD指令的执行，能够提升CPU对数据的吞吐量（RISC指令集的CPU通常数百例，可以有效的缓存中间计算结果，不需要把中间结果写入内存，从而减少内存的访问次数。显著提升性能）

x86-64有时会简称为x64，是64位微处理器机构及其相应指令集的一种，也是Intel x86架构的延伸产品。

x86-64是1999年由AMD设计，该64位集主要用于扩充IA-32，成为x86-64，后来改为AMD64。AMD64架构在IA-32基上新增64位寄存器，兼容早期的16位和32位软件，可使现有的以x86为对象的编译器转换为AMD64版本。

由于AMD64和Intel64基本上一致，很多软硬件产品都使用一种不倾向任何一方的词汇表达对两种架构的兼容。出于这个目的AMD对这种CPU架构的原始成为由x86_64变体为x86_64。其他公司也使用x64代表x86-64的缩写。

许多操作系统及产品，尤其是那些在Intel进入这块市场之前就引入x86-64支持的，使用amd64同时指代amd64和intel64。

现在的x86CPU在位数上由32/64bit之分，在ARCH上又有x86/x86_64/x64/i386/IA32/IA64/amd64

简单可按照下述理解：

x86=i386=IA32
amd64=x86_64=x64
64bit的CPU都做了向下兼容32bit的特殊设计，所以在64bit CPU上运行32bit的软件（kernel、app、driver）是没有问题的。反之则不行。

arm：（advanced RISC machine或Acorn RISC machine） 适用于移动通信这种低成本、高性能、低耗电的领域。

aarch64：是armv8的一种执行状态。arrch64不是一个单纯的32位ARM架构的扩展，而是ARMv8内全新的架构，完全使用全新的A64指令集。这些都源自于多年对现代架构设计的深入研究。更重要的是，AArch64作为一个分离出的执行状态，意味着一些未来的处理器可能不支持旧的Arrch32状态。

ARMv8将64位架构支持引入ARM架构中，其中包括：

64位通用寄存器、SP堆栈指针、PC程序计数器
64位数据处理和扩展的虚拟寻址
两种主要执行状态：

AArch64：64位执行状态，包括状态的异常模型、内存模型、程序员模型和指令集支持；
AArch32：32位执行状态，包括该状态的一场模型、程序员模型、和指令集支持；
这些执行状态支持3个主要指令集：

A32（或ARM）： 32位固定长度指令集，通过不同架构变体增强部分32位架构执行环境现在称为AArch32；
T32（Thumb）：是以16位固定长度指令集的形式引入，随后在引入Thumb-2技术时增强为16位和32位混合长度指令集。部分32位架构执行环境现在称为AArch32；
A64：提供与ARM和Thumb指令集类似功能的32位固定长度指令集，随ARMv8-A一起引入，它是一种AArch64指令集。
