Skip to content

Commit

Permalink
init
Browse files Browse the repository at this point in the history
  • Loading branch information
ReturnTmp committed Oct 20, 2023
1 parent c71bf6c commit 55c135c
Show file tree
Hide file tree
Showing 9 changed files with 453 additions and 30 deletions.
162 changes: 162 additions & 0 deletions docs/03.框架工具/15.ARM 与 x86 区分.md
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)



52 changes: 26 additions & 26 deletions docs/04.运维笔记/73.GitHub Action 部署静态博客.md
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:
Expand All @@ -17,7 +17,7 @@ author:

之前博主是使用的 `Jenkins` 实现 `vuepress` 博客的自动部署与持续交付,但是因为现在迁移服务器到海外,并且服务器配置降低。现在经常出现**服务器的 `Jenkins` 构建过程中 CPU 占用率过高,导致服务器卡死**

然后我想的话既然只是部署静态博客,似乎也没必要使用 `Jenkins` 这样重量级的 CI/CD 工具,所以本文将会主要讲解**如何使用 GitHub Actions 部署我们的 vuepress 静态博客**
然后我想的话既然只是部署**静态博客**,似乎也没必要使用 `Jenkins` 这样重量级的 CI/CD 工具,所以本文将会主要讲解**如何使用 GitHub Actions 部署我们的 vuepress 静态博客**

下面给出博主的博客仓库地址,后面我们的配置过程中需要用到

Expand All @@ -27,9 +27,7 @@ author:


## 步骤

### 配置密钥
## 配置密钥

首先我们需要**配置私钥到 GitHub Actions** ,以便其可以与我们的云服务器交互

Expand All @@ -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`(公钥)
Expand All @@ -63,7 +61,7 @@ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys



### 工作流配置
## 工作流配置

然后我们按照同样的方法创建 `IP` 变量,填写自己服务器的域名或是 IP,当然不创建后面直接使用明文也是可以的

Expand Down Expand Up @@ -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
Expand All @@ -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 文件空间过多,后期会进行优化



Expand All @@ -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)
6 changes: 3 additions & 3 deletions docs/04.运维笔记/76.Nginx 403 forbidden 问题.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,19 +54,19 @@ try_files $uri $uri/ /index.html;

### 缺少权限

我们可以修改目录的读写权限(一般来说不需要)
我们可以修改 web 目录的读写权限

```bash
chmod -R 755 /data
```

修改目录的所属用户为 Nginx 启动用户(当然可以直接修改 conf 文件,改动 Nginx 启动用户)
或者说修改目录的所属用户为 Nginx 启动用户(当然可以直接修改 conf 文件,改动 Nginx 启动用户)

```bash
chown -R root:root /data
```

但是可能仍旧爆出 403 错误,这是因为




Expand Down
Loading

0 comments on commit 55c135c

Please sign in to comment.