Hans学Linux 第0章 计算机系统


Hans学Linux系列文章目录

回顾从大学开始,学习的方向在不停的变化,从汽车服务工程到汽车售后的工作,再到后来考研究生研究机器学习、无人驾驶感知算法、视觉泊车辅助算法,再到现在的工作原因,转到了虚拟化方向。

很多东西都要重头学起,虽然略有心酸,但学习些新的内容,总比停滞不前要好上许多,从此篇博客开始,记录我学习Linux和遇到的一些问题。也算是对自己的另一种激励。

        第0章 计算机系统


目录

Hans学Linux系列文章目录

前言

一、计算机组成

二、指令集

1.精简指令集

2.复杂指令集

 三、微架构

总结



前言


一、计算机组成

研究计算机总要从硬件说起,构建较为宏观的架构对系统性的学习是有很大好处的,这也是我的学习习惯之一。

冯·诺依曼结构的计算机由五个部分组成:

        运算器、控制器、存储器、输入设备、输出设备

CPU(Central Processing Unit)主要担任运算器和控制器的职能,是一块超大规模的集成电路。用途:解释计算机指令以及处理计算机软件中的数据。

储存器:分为内存储器和外存储器。

 内存一般采用半导体存储单元,内存包括:随机存储器(RAM),只读存储器(ROM),以及高速缓存(CACHE)

外存一般容量较大,一般用以储存操作系统、各类软件和文档等

 I/O,即输入/输出端口。每个设备都会有一个专用的I/O地址,用来处理自己的输入输出信息。 常见的I/O设备包括键盘、鼠标、显示器等。


二、指令集

所写的所有代码都是经过转换成CPU内部的指令集来执行的,而不同的架构对应不同的指令集,这也是不同架构的设备的代码不能直接迁移的原因。

目前最为常见的指令集分为两种:精简指令集(RISC) 与复杂指令集(CISC) 


1.精简指令集

精简指令集(Reduced Instruction Set Computer, RISC),顾名思义,微指令集较为精简,每个指令的执行时间都很短,完成的动作也很单纯,指令的执行效能较佳; 但是若要做复杂的事情,就要由多个指令来完成。

最常见的ARM架构的CPU即使用精简指令集。

ARM指令集架构发展简史:

(1)ARMv1、ARMv2 这两代没有做CPU,没有商业化;

(2)ARMv3 对应的 CPU 是 ARM6;

(3)ARMv4 首次增加 Thumb 指令集;

(4)ARMv5 改进了 Thumb,首次增加 E(增强型DSP指令)

(5)ARMv6 首次增加 SIMD,升级为 Thunmb-2

(6)ARMv7 首次增加 M(长乘法指令),NEON(DSP+SIMD) CPU 系列名字为“Cortex”

(7) ARMv8 首次引入了AArch64架构,可执行64位指令

(8)ARMv9 具有安全计算、SVE2指令集和性能优化三大特性


2.复杂指令集

复杂指令集(Complex Instruction Set Computer, CISC),每条指令可以执行较为复杂的功能,因此花费的时间较长,常见的CISC指令集CPU主要有AMD、Intel等x86架构的CPU。

intel指令集发展简史:

(1)X86指令集,适配“8086”微处理器的指令集;

(2)MMX指令集,一种SIMD多媒体指令集;

(3)SSE指令集,引入了新的128比特宽的寄存器集;

(4)SSE2指令集添加了对64位双精度浮点数的支持

(5)SSE3指令集支持超线程技术

(6)SSSE3是Intel针对SSE3指令集的一次额外扩充

(7)SSE4为新增的47条新多媒体指令集

(8)AVX指令集为SSE的延伸,实现更高的浮点运算能力和效率

(9)AVX2扩充到了支持256bit的整数运算指令

(9)AVX-512将AVX扩充到了支持512-bit运算

 三、微架构

指令的执行可以大概分为以下几个阶段:

1.取指:从内存读取指令字节,地址为程序计数器(PC)的值

2.译码:从寄存器文件读入最多两个操作数,得到值valA 和/或valB

3.执行:算术/逻辑单元(ALU)执行指令指明的操作

4.访存:将数据写入内存,或者从内存读出数据

5.写回:最多可以写两个结果到寄存器文件

6.更新PC:PC设置成下一条指令的地址

 为了加快指令的运行速度,出现了并行技术,并行即同时处理多个任务的能力。

存在指令并行、数据并行和线程并行三类方法:

数据并行:

SIMD(Single -Instruction ,Multple -Data)单指令多数据流技术,单一指令运行多个操作数并行计算,可以提供更快的图像、声音和视频数据的运行速度。

 线程并行:

多核技术:提高处理器的核心数量

超线程技术:单个物理核心同时两个线程,它的物理核心数是1个,通过Hyperthreading技术实现的线程级并行。

 为了提升系统的吞吐量,引入了流水线技术,待执行的任务被划分成了若干个独立的阶段,流水线化的一个重要的特性就是提高了系统的吞吐量(throughput),不过它也会轻微地增加延迟(latency)。

吞吐率(Through Put)—— 单位时间内流水线完成任务数量或输出的结果数: TP = n / Tk

n 为任务数, TK 为完成n个任务所用时间



总结

这里简单的总结了一下之前关于计算机系统的内容,如果想要全面了解的话还是推荐阅读

《深入了解计算机系统》

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值