-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
9 changed files
with
453 additions
and
30 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,162 @@ | ||
--- | ||
title: 『ARM』和『x86』处理器架构解析指南 | ||
date: 2023-10-19 17:06:05 | ||
permalink: /pages/d29a94/ | ||
categories: | ||
- 框架工具 | ||
tags: | ||
- | ||
author: | ||
name: ReturnTmp | ||
link: https://github.com/ReturnTmp | ||
--- | ||
|
||
|
||
|
||
## 前言 | ||
|
||
如果问大家是否知道 CPU,我相信不会得到否定的答案,但是如果继续问大家是否了解 **ARM 和 X86 架构**,他们的区别又是什么,相信**可能部分人就会哑口无言**了 | ||
|
||
目前随着深度学习、高性能计算、NLP、AIGC、GLM、AGI 的技术迭代,助力大模型快速发展,对于**多元算力结合(CPU+GPU)需求越来越高**,再不了解 CPU 就说不过去了,因此本文将会**带您深入了解 CPU 架构,并且解析 CPU 两大主流架构:ARM 和 X86** | ||
|
||
![419a8ad171e1f2ccd36d965b9cdded05](https://cdn.jsdelivr.net/gh/Returntmp/blog-image@main/blog/202310191934182.png) | ||
|
||
|
||
|
||
|
||
|
||
## 简介 | ||
|
||
**中央处理器(Central Processing Unit,CPU)** 是计算机的运算核心和控制核心。**CPU、内部存储器和输入/输出设备**是电子计算机三大核心部件。其功能主要是解释计算机指令以及处理计算机软件中的数据 | ||
|
||
**CPU 由运算器、控制器和寄存器及实现它们之间联系的数据、控制及状态的总线构成**。差不多所有的CPU的**运作原理**可分为四个阶段:**提取(Fetch)、解码(Decode)、执行(Execute)和写回(Writeback)**。 CPU从存储器或高速缓冲存储器中取出指令,放入指令寄存器,并对指令译码,并执行指令 | ||
|
||
|
||
|
||
## 处理器系列 | ||
|
||
### x86 | ||
|
||
**Intel 系列**: Celeron(赛扬)、Pentium(奔腾)和Core(酷睿)从低端到高端 | ||
|
||
**AMD 系列**:Semporn(闪龙)Athlon(速龙)和 羿龙系列 从低端到高端 | ||
|
||
因为 Intel 为 x86 架构处理器龙头老大,因此后文某些地方可能使用 **Intel 处理器代指 x86 架构处理器** | ||
|
||
> 注:上面两家公司主要做 x86 架构,但是也会做 ARM 架构,比如 2016 年 AMD 公司推出基于ARM架构的处理器 Opteron A1100 | ||
### ARM | ||
|
||
基本就是英国 ARM 公司的处理器系列,以及所有 ARM 公司授权的公司,诸如高通、苹果(三星代做)、三星和华为 | ||
|
||
|
||
|
||
## 指令集区别 | ||
|
||
想要了解 X86 和 ARM,需要先了解**复杂指令集(Complex Instruction Set Computer,简称 CISC)和精简指令集(Reduced Instruction Set Computer,简称 RISC)** | ||
|
||
![image-20231019191356285](https://cdn.jsdelivr.net/gh/Returntmp/blog-image@main/blog/202310191913319.png) | ||
|
||
### 复杂指令集 | ||
|
||
在 CISC 微处理器中,**程序的各条指令是按顺序串行执行的**,每条指令中的各个操作也是按顺序串行执行的。**顺序执行的优点是控制简单,但计算机各部分的利用率不高,执行速度慢**。CISC架构的服务器主要以IA-32架构(Intel Architecture,英特尔架构)为主,而且多数为中低档服务器所采用 | ||
|
||
计算机的指令系统比较丰富,有专用指令来完成特定的功能,因此,**处理特殊任务效率较高**。机器的存储器**操作指令多,操作直接**。包含有丰富的电路单元,因而**功能强、面积大、功耗大** | ||
|
||
适用领域:==个人电脑和服务器== | ||
|
||
> 注:**x86 架构** 主要采用 **复杂指令集** | ||
|
||
|
||
### 精简指令集 | ||
|
||
**RISC 是执行较少类型计算机指令的微处理器**,起源于 80 年代的 MIPS 主机 (即 RISC 机),RISC 机中采用的微处理器统称 RISC 处理器 | ||
|
||
RISC 处理器能够以更快的速度执行操作 (每秒执行更多百万条指令,即 MIPS)。因为计算机执行每个指令类型都需要额外的晶体管和电路元件,计算机指令集越大就会使微处理器更复杂,执行操作也会更慢 | ||
|
||
因为设计者主要精力放在那些经常使用的指令上,尽量使它们具有简单高效的特色,不常用功能会通过组合指令来完成,因此在RISC 机器上**实现特殊功能时,效率可能较低**,但可以利用流水技术和超标量技术加以改进和弥补 | ||
|
||
**对存储器操作有限制,使控制简单化**。包含有较少的单元电路,因而**面积小、功耗低** | ||
|
||
适用领域:==移动设备和嵌入式系统== | ||
|
||
> 注:**ARM 架构 ** 主要采用 **精简指令集** | ||
|
||
|
||
### 总结 | ||
|
||
就 CPU 功耗来讲,RISC 和 CISC 走了两条不同道路。**CISC 走的是性能路线**,先把性能做上去,功耗其次。不断地考虑如何散热,使用金属片,风扇,水冷等多种设备降温,因为用在 PC 上,耗电大不会有明显的问题。**RISC走的是低功耗路线**,面向的是需要用电池的场景,功耗低是首要原则,性能其次 | ||
|
||
|
||
|
||
## 64位计算 | ||
|
||
### x86 | ||
|
||
ADM 公司首先开发出 64 位版本的 x86 指令集,64 位的指令集名为 **x86-64(简称 x64)** | ||
|
||
Intel 公司认为将自己 32 位 x86 架构进化出 64 位架构,新架构效率会很低,因此创建新 64 位处理器项目,名为 IA64,由此制造出 Itanium 系列处理器 | ||
|
||
后面 AMD 知道自己造不出能与 IA64 兼容的处理器,于是将 x86 扩展,加入了 64 位寻址和 64 位寄存器。最终出来的架构就是 AMD64,**最终 ADM 成为了 64 位版本的 x86 处理器的标准**。最后 Intel 将 Itanium 系列处理器彻底废弃,并最终采用 AMD64 | ||
|
||
|
||
|
||
### ARM | ||
|
||
ARM 公司在看到移动设备对 64 位计算的需求后,于 2011 年发布了 ARMv8 64 位架构,基于原有的原则和指令集,开发简明的 64 位架构,**ARMv8** 使用了两种执行模式,**AArch32 和 AArch64** | ||
|
||
ARM 设计的巧妙之处,是**处理器运行中可以无缝地在两种模式间切换**。这意味着 **64 位指令的解码器是全新设计的,无需兼顾 32 位指令**,而处理器依然可以向后兼容 | ||
|
||
|
||
|
||
|
||
|
||
## 异构计算 | ||
|
||
![ARM big.LITTLE - Wikipedia](https://upload.wikimedia.org/wikipedia/commons/thumb/8/87/In_Kernel_Switcher.jpg/370px-In_Kernel_Switcher.jpg) | ||
|
||
**ARM 的 big.LITTLE 架构**处理解决当今行业面临的难题:**如何创建既有高性能又有极佳节能效果的片上系统 (SoC) 以延长电池使用寿命** | ||
|
||
在 big.LITTLE 架构里,处理器可以是不同类型的。传统的双核或者四核处理器中包含同样的 2 个核或者 4 个核。一个双核 Atom 处理器中有两个一模一样的核,提供一样的性能,拥有相同的功耗。**ARM 通过 big.LITTLE 向移动设备推出了异构计算**。这意味着**处理器中的核可以有不同的性能和功耗**。当设备正常运行时,使用低功耗核,而当你运行复杂的游戏时,使用的是高性能的核 | ||
|
||
big.Little 系统中两个处理器之间高效无缝地切换工作负载是通过开发高级 ARM 系统 IP 实现的,这样可确保 Cortex-A15 和 Cortex-A7 处理器之间完全的高速缓存、I/O 的一致性 | ||
|
||
如果您想要**详细了解 big.LITTLE 的底层原理和机制**,可以查看下方 **ARM 官网解释** | ||
|
||
> 官方解释: | ||
> | ||
> - [big.LITTLE – Arm®](https://www.arm.com/technologies/big-little) | ||
> - [Wayback Machine (archive.org)](https://web.archive.org/web/20131017064722/http://www.arm.com/files/downloads/big_LITTLE_Final_Final.pdf) | ||
|
||
|
||
## 功耗对比 | ||
|
||
以前人们的刻板印象,低功耗和高算力处理器就是泾渭分明,x86 架构就是做高算力,ARM 架构就是做低功耗 | ||
|
||
但是自从苹果发布 M1 芯片(目前的 M2 芯片远超同等 x86 处理器性能),并且随着其他 ARM 处理器的快速发展,人们才恍然惊觉,**原来靠低功耗起家的 ARM 也能做高算力**,可以真正做到**更高性能和更低功耗** | ||
|
||
根据 2022 年 Ampere 公司给出的数据,**其 CPU 的性能超越传统 x86 处理器 3 倍,性能功耗比领先近 4 倍**,与 x86 服务器 CPU 相比,Ampere Altra 系列可用 50% 的能耗,提供 200% 的性能 | ||
|
||
![Arm服务器CPU将进一步扩大与x86 CPU的性能差距](https://cdn.jsdelivr.net/gh/Returntmp/blog-image@main/blog/202310192006893.png) | ||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
## 参考链接 | ||
|
||
- [分不清ARM和X86架构,别跟我说你懂CPU! - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/21266987) | ||
- [ARM 与 x86:有何区别? (redhat.com)](https://www.redhat.com/zh/topics/linux/ARM-vs-x86) | ||
- [CPU的基本概念 - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/44090987) | ||
- [CPU的介绍与选择,看完你懂了吗? - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/122370117) | ||
- [什么是 CPU?– 中央处理器详解 – AWS (amazon.com)](https://aws.amazon.com/cn/what-is/cpu/) | ||
- [CISC和RISC的特点和区别 - 不是公子的小白 - 博客园 (cnblogs.com)](https://www.cnblogs.com/bobbycheng/p/13748294.html) | ||
- [CPU_X86架构和ARM架构入门篇-腾讯云开发者社区-腾讯云 (tencent.com)](https://cloud.tencent.com/developer/article/1862717) | ||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
--- | ||
title: GitHub Actions 部署静态博客 | ||
title: 『GitHub Actions』静态博客部署指南 | ||
date: 2023-10-13 16:20:30 | ||
permalink: /pages/39ba33/ | ||
categories: | ||
|
@@ -17,7 +17,7 @@ author: | |
|
||
之前博主是使用的 `Jenkins` 实现 `vuepress` 博客的自动部署与持续交付,但是因为现在迁移服务器到海外,并且服务器配置降低。现在经常出现**服务器的 `Jenkins` 构建过程中 CPU 占用率过高,导致服务器卡死** | ||
|
||
然后我想的话既然只是部署静态博客,似乎也没必要使用 `Jenkins` 这样重量级的 CI/CD 工具,所以本文将会主要讲解**如何使用 GitHub Actions 部署我们的 vuepress 静态博客** | ||
然后我想的话既然只是部署**静态博客**,似乎也没必要使用 `Jenkins` 这样重量级的 CI/CD 工具,所以本文将会主要讲解**如何使用 GitHub Actions 部署我们的 vuepress 静态博客** | ||
|
||
下面给出博主的博客仓库地址,后面我们的配置过程中需要用到 | ||
|
||
|
@@ -27,9 +27,7 @@ author: | |
|
||
|
||
## 步骤 | ||
|
||
### 配置密钥 | ||
## 配置密钥 | ||
|
||
首先我们需要**配置私钥到 GitHub Actions** ,以便其可以与我们的云服务器交互 | ||
|
||
|
@@ -42,7 +40,7 @@ ssh-keygen -t rsa -C "[email protected]" | |
或者说我们可以**指定私钥和公钥的名称** | ||
|
||
```bash | ||
ssh-keygen -t rsa -f action -C "[email protected]" | ||
ssh-keygen -t rsa -f mysite -C "[email protected]" | ||
``` | ||
|
||
然后就会在 `~/.ssh`下生成两个文件:`mysite`(私钥)和`mysite.pub`(公钥) | ||
|
@@ -63,7 +61,7 @@ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys | |
|
||
|
||
|
||
### 工作流配置 | ||
## 工作流配置 | ||
|
||
然后我们按照同样的方法创建 `IP` 变量,填写自己服务器的域名或是 IP,当然不创建后面直接使用明文也是可以的 | ||
|
||
|
@@ -108,28 +106,30 @@ jobs: | |
SOURCE: "docs/.vuepress/dist" | ||
REMOTE_HOST: ${{ secrets.IP }} #服务器ip | ||
REMOTE_USER: "root" | ||
TARGET: "/root/app/blog-vuepress-vdoing/" | ||
TARGET: "/usr/share/nginx/blog/" | ||
EXCLUDE: "/node_modules/" | ||
|
||
``` | ||
|
||
其中 `/root/app` 是我们需要部署博客的目标文件夹,尽量提前创建文件夹 | ||
其中 `/usr/share/nginx/blog/` 是我们需要部署博客的目标文件夹,尽量提前创建文件夹,否则可能出现错误 | ||
|
||
> 注:其中 action 详细配置可以自行查找对应仓库,例如 actions/checkout action ,仓库位于:https://github.com/actions/checkout | ||
|
||
|
||
### 配置 Nginx | ||
## 配置 Nginx | ||
|
||
编辑文件 `/etc/nginx/nginx.conf` ,编辑如下 | ||
|
||
server { | ||
location / { | ||
root /root/app/blog-vuepress-vdoing/dist; | ||
index index.html index.htm; | ||
try_files $uri $uri/ /index.html; | ||
} | ||
```bash | ||
server { | ||
location / { | ||
root /usr/share/nginx/blog/dist; | ||
index index.html index.htm; | ||
try_files $uri $uri/ /index.html; | ||
} | ||
} | ||
``` | ||
同时需要更改 Nginx 启动用户,修改 `/etc/nginx/nginx.conf` | ||
|
||
```bash | ||
|
@@ -142,29 +142,29 @@ user root; | |
systemctl restart nginx | ||
``` | ||
|
||
这里需要注意,后面我们推送工作流之后,拉取下来的 dist 文件夹所属用户和用户组不是 root,nginx 会有 403 错误 | ||
|
||
![image-20231014193340180](https://cdn.jsdelivr.net/gh/Returntmp/blog-image@main/blog/202310141934940.png) | ||
|
||
需要执行如下命令 | ||
## 工作流推送 | ||
|
||
```bash | ||
chown -R root:root /root/app/blog-vuepress-vdoing/dist | ||
``` | ||
最后推送本地的 `deploy.yml` 到远程 GitHub 源码库,查看最后 Actions 执行效果即可 | ||
|
||
![image-20231014170229221](https://cdn.jsdelivr.net/gh/Returntmp/blog-image@main/blog/202310141702704.png) | ||
|
||
|
||
|
||
然后查看博客部署效果即可 | ||
|
||
### 工作流推送 | ||
**博客访问地址**:http://www.returntmp.fun | ||
|
||
最后推送本地的 `deploy.yml` 到远程 GitHub 源码库,查看最后 Actions 执行效果即可 | ||
|
||
![image-20231014170229221](https://cdn.jsdelivr.net/gh/Returntmp/blog-image@main/blog/202310141702704.png) | ||
|
||
![image-20231014205158399](https://cdn.jsdelivr.net/gh/Returntmp/blog-image@main/blog/202310142051694.png) | ||
|
||
|
||
|
||
但是由于服务器在海外,并且文章比较多,导致 app.js 过大,加载时间比较长,实测不使用科学上网的话大概十几秒才加载出来网站 | ||
|
||
其中排查主要是全文搜索占用 app.js 文件空间过多,后期会进行优化 | ||
|
||
|
||
|
||
|
@@ -174,5 +174,5 @@ chown -R root:root /root/app/blog-vuepress-vdoing/dist | |
|
||
- [GitHub Actions 入门教程 - 阮一峰的网络日志 (ruanyifeng.com)](http://www.ruanyifeng.com/blog/2019/09/getting-started-with-github-actions.html) | ||
- [使用GithubActions自动部署(ECS)-腾讯云开发者社区-腾讯云 (tencent.com)](https://cloud.tencent.com/developer/article/1720500) | ||
- [使用Github Action+Vuepress+Nginx自动部署阿里云服务器 - RuoVea - 博客园 (cnblogs.com)](https://www.cnblogs.com/stry/articles/17037771.html) | ||
- [使用Github Action+Vuepress+Nginx自动部署 博客园 (cnblogs.com)](https://www.cnblogs.com/stry/articles/17037771.html) | ||
- [通过 GitHub Actions 自动部署 vuepresss 项目到云服务器-CSDN博客](https://blog.csdn.net/weixin_50566466/article/details/122619366) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.