【鸟叔的Linux私房菜】0-计算机概论

电脑

五个部分:输入单元、输出单元、CPU的运算单元和逻辑控制单元、内存。

在这里插入图片描述

主机机箱的设备大多通过主板连接线在一起,主板上面又个连接沟通所有设备的芯片组,

CPU架构

CPU是一个具有特定功能的芯片,里面含有指令集

所有的软件都要经过CPU的指令集来完成。
世界上最常见的两种CPU架构为:精简指令集RISC、复杂指令集CISC

  • 精简指令集RISC

RISC架构的特点是:

  1. 指令数量少:RISC架构的指令数量通常比复杂指令集计算机(CISC)少。
  2. 指令格式统一:大多数RISC指令有统一的格式,便于CPU解析和执行。
  3. 指令执行快:由于指令简单,大多数RISC指令可以在一个或几个时钟周期内完成。
  4. 寄存器间操作:RISC架构倾向于使用寄存器间的操作,而不是内存间的操作。

以下是一些常见的RISC指令集CPU:

  1. ARM:ARM架构是最著名的RISC架构之一,广泛应用于移动设备、嵌入式系统和一些桌面计算机中。目前使用范围最广的CPU就是ARM 架构。

  2. RISC-V:这是一个开源指令集架构(ISA),由于其开放和免费的特性,越来越受到关注和使用。

  3. MIPS:MIPS架构是另一个早期的RISC设计,曾被广泛用于工作站、游戏机和一些个人计算机中。

  4. PowerPC:虽然PowerPC在技术上可以被分类为一种复杂指令集计算机,但它的设计包含了一些RISC特性,并且随着时间的推移,其设计趋向于RISC化。

  5. SPARC:SPARC架构是Sun Microsystems(现在是Oracle Corporation的一部分)开发的RISC架构,曾用于Sun的服务器和工作站。

  6. SuperH:这是一种由Hitachi开发的RISC架构,主要用于嵌入式系统。

  7. TI C6000:这是德州仪器(Texas Instruments)开发的一系列RISC处理器,主要用于数字信号处理(DSP)应用。

  8. Apple Silicon:苹果公司开发的一系列基于ARM架构的CPU,用于其Mac产品线,如M1、M2等。

  9. AMD Ryzen:虽然AMD的Ryzen系列CPU是基于x86指令集的,但它们的设计采用了一些RISC原则,如模块化和简化的指令集。

  10. IBM Power:IBM的Power系列处理器虽然起源于CISC设计,但随着时间的发展,它们在设计上也吸收了RISC的一些优点。

  • 复杂指令集CISC

CISC架构的特点是:

  1. 指令数量多:CISC架构包含大量的指令,其中一些指令可以执行复杂的操作。
  2. 指令长度可变:CISC指令的长度不固定,这使得指令编码更加灵活。
  3. 微程序控制:CISC处理器通常使用微程序来实现复杂的指令集。
  4. 面向兼容性:CISC设计倾向于保持向后兼容性,使得旧的软件能够在新的处理器上运行。

以下是一些常见的CISC指令集CPU:

  1. x86:这是最常见的CISC架构,由Intel首先开发,广泛应用于个人计算机、服务器和工作站。AMD也生产与之兼容的处理器。x86架构被大量用于个人电脑,64位的个人电脑统称为x86-64架构

不同的x86架构的不同在于指令集的不同。

  1. Intel Pentium:Intel Pentium系列是x86架构的著名代表,曾经是个人计算机的标准配置。

  2. AMD Athlon:AMD的Athlon系列也是基于x86架构的CPU,以其性能和价格比而受到市场的欢迎。

  3. VIA C3和C7:VIA Technologies生产的C3和C7系列处理器也是基于x86架构的CISC设计。

  4. Intel Itanium:这是Intel开发的64位CISC架构,主要面向高端企业级市场。

  5. HP PA-RISC:由Hewlett-Packard开发的PA-RISC(Precision Architecture RISC)是HP自家的CISC架构,用于其高性能服务器。

  6. ENIAC:虽然不是现代CPU,但ENIAC(Electronic Numerical Integrator and Computer)是早期的电子计算机之一,可以视为CISC架构的早期实现。

  7. UNIVAC:UNIVAC(Universal Automatic Computer)系列是早期商业计算机的代表,也是CISC架构的早期实例。

  8. System/360:这是IBM开发的一系列大型计算机,它们采用了CISC架构。

单位

  • 容量单位
    K=1024
    M=1024K

  • 速度单位
    CPU的命令周期通常是MHz或GHz,Hz是 次数/秒
    网络传输中,单位是 Mbit/s,每秒多少bit

电脑架构与设备组件

CPU

CPU内部含有指令集,不同的指令集会导致CPU工作效率的高低。

CPU频率是每秒钟可以工作的次数。
不同的CPU之间不能简单的以频率比较性能。因为CPU指令集不同,架构不同,可使用的二级缓存及其运算机制也不同。

前端总线速度FSB:CPU中的内存控制芯片与内存间的传输速度

超线程:每个CPU中重要的寄存器分为两组,让程序分别使用这两组寄存器。可以有两个程序同时竞争CPU的运算单元,而非通过操作系统的多线程任务切换。

CPU和GPU区别

CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景。CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。而GPU面对的则是类型高度统一的、相互无依赖的大规模数据和不需要被打断的纯净的计算环境。

于是CPU和GPU就呈现出非常不同的架构(示意图):
在这里插入图片描述

图片来自nVidia CUDA文档。其中绿色的是计算单元,橙红色的是存储单元,橙黄色的是控制单元。

GPU采用了数量众多的计算单元和超长的流水线,但只有非常简单的控制逻辑并省去了Cache。而CPU不仅被Cache占据了大量空间,而且还有有复杂的控制逻辑和诸多优化电路,相比之下计算能力只是CPU很小的一部分

从上图可以看出:

Cache, local memory: CPU 》 GPU

Threads(线程数): GPU 》 CPU

Registers: GPU 》 CPU 多寄存器可以支持非常多的Thread,thread需要用到register,thread数目大,register也必须得跟着很大才行。

SIMD Unit(单指令多数据流,以同步方式,在同一时间内执行同一条指令): GPU 》 CPU。

CPU 基于低延时的设计:
在这里插入图片描述

CPU有强大的ALU(算术运算单元),它可以在很少的时钟周期内完成算术计算。

当今的CPU可以达到64bit 双精度。执行双精度浮点源算的加法和乘法只需要1~3个时钟周期。

CPU的时钟周期的频率是非常高的,达到1.532~3gigahertz(千兆HZ, 10的9次方)。

大的缓存也可以降低延时。保存很多的数据放在缓存里面,当需要访问的这些数据,只要在之前访问过的,如今直接在缓存里面取即可。

复杂的逻辑控制单元。当程序含有多个分支的时候,它通过提供分支预测的能力来降低延时。

数据转发。 当一些指令依赖前面的指令结果时,数据转发的逻辑控制单元决定这些指令在pipeline中的位置并且尽可能快的转发一个指令的结果给后续的指令。这些动作需要很多的对比电路单元和转发电路单元。

在这里插入图片描述

GPU是基于大的吞吐量设计。GPU的特点是有很多的ALU和很少的cache. 缓存的目的不是保存后面需要访问的数据的,这点和CPU不同,而是为thread提高服务的。如果有很多线程需要访问同一个相同的数据,缓存会合并这些访问,然后再去访问dram(因为需要访问的数据保存在dram中而不是cache里面),获取数据后cache会转发这个数据给对应的线程,这个时候是数据转发的角色。但是由于需要访问dram,自然会带来延时的问题。

GPU的控制单元(左边黄色区域块)可以把多个的访问合并成少的访问。

GPU的虽然有dram延时,却有非常多的ALU和非常多的thread. 为啦平衡内存延时的问题,我们可以中充分利用多的ALU的特性达到一个非常大的吞吐量的效果。尽可能多的分配多的Threads.通常来看GPU ALU会有非常重的pipeline就是因为这样。

所以与CPU擅长逻辑控制,串行的运算。和通用类型数据运算不同,GPU擅长的是大规模并发计算,这也正是密码破解等所需要的。所以GPU除了图像处理,也越来越多的参与到计算当中来。

GPU的工作大部分就是这样,计算量大,但没什么技术含量,而且要重复很多很多次。就像你有个工作需要算几亿次一百以内加减乘除一样,最好的办法就是雇上几十个小学生一起算,一人算一部分,反正这些计算也没什么技术含量,纯粹体力活而已。而CPU就像老教授,积分微分都会算,就是工资高,一个老教授资顶二十个小学生,你要是富士康你雇哪个?GPU就是这样,用很多简单的计算单元去完成大量的计算任务,纯粹的人海战术。这种策略基于一个前提,就是小学生A和小学生B的工作没有什么依赖性,是互相独立的。很多涉及到大量计算的问题基本都有这种特性,比如你说的破解密码,挖矿和很多图形学的计算。这些计算可以分解为多个相同的简单小任务,每个任务就可以分给一个小学生去做。但还有一些任务涉及到“流”的问题。比如你去相亲,双方看着顺眼才能继续发展。总不能你这边还没见面呢,那边找人把证都给领了。这种比较复杂的问题都是CPU来做的。

总而言之,CPU和GPU因为最初用来处理的任务就不同,所以设计上有不小的区别。而某些任务和GPU最初用来解决的问题比较相似,所以用GPU来算了。GPU的运算速度取决于雇了多少小学生,CPU的运算速度取决于请了多么厉害的教授。教授处理复杂任务的能力是碾压小学生的,但是对于没那么复杂的任务,还是顶不住人多。当然现在的GPU也能做一些稍微复杂的工作了,相当于升级成初中生高中生的水平。但还需要CPU来把数据喂到嘴边才能开始干活,究竟还是靠CPU来管的。

内存

CPU实际要处理的数据都来源于内存。

个人电脑的内存主要为DRAM动态随机存取内存,只在通电的时候记录,断电后数据消失,也称为挥发性内存。

  • 二级高速缓存:CPU和内存间还得通过内存控制器,为了提升性能,将很常用的程序和数据放置在CPU内部。
    二级缓存(L2 cache)整合到CPU内部,L2内存的速度和CPU频率相同,使用SRAM静态随机存取内存,整合到CPU内成为高速缓存。
    在这里插入图片描述

内存的容量够大才能够完整的加载大容量数据,不用常常释放内存中的数据,所以越大的内存代表越快速的系统。

  • 双通道设计:传统的总线位宽是64位,为了加大位宽,将两个内存集合在一起,按插两根内存,最好一模一样。

  • BIOS:一个程序,控制着启动时各项硬件参数的获取。
    写死在主板的一个存储芯片,这个芯片在没有通电时也能记录数据,就是只读存储器ROM。
    BIOS原本使用根本无法修改的ROM,但是为了更新,现在通常是写入类似闪存flashEEPROM存储硬件中。 BIOS在计算机启动的时候执行,来加载CMOS中的数据。

  • CMOS芯片:主要功能是记录主板上的重要参数,包括系统时间、CPU电压、频率、各项设备的I/O地址、IRQ等。

显卡

显卡是专门设计用来处理图形和图像数据的硬件设备,又称为VGA。
显卡上会有集成内存称为显存。

显卡厂商在显卡上面直接嵌入一个3D加速的芯片,就是GPU称谓的由来。

GPU是图形处理器,一般GPU就是焊接在显卡上的, 大部分情况下,我们所说GPU就等于指显卡,但是实际情况是GPU是显示卡的“心脏”,是显卡的一个核心零部件,核心组成部分。
简单说GPU就是能够从硬件上支持T&L(多边形转换和光源处理)的显示芯片,由于T&L是3D渲染中的一个重要部分,其作用是计算多边形的3D位置与处理动态光线效果,也能称为“几何处理”。在这里插入图片描述

显卡通过GPU的控制芯片来与CPU、内存通信。

显卡规格:PCI - AGP - PCIe
PCIe使用类似管道的概念,管道越多,带宽越高。

显卡通过各种类型的接口与计算机的主板和显示器相连。以下是一些常见的显卡连接接口:

  1. PCI Express (PCIe):

    • 目前最常用的接口,用于连接显卡和主板。
    • 支持高速数据传输,有不同的通道宽度,如x1, x4, x8, x16等,其中x16是最常用于显卡的。
  2. HDMI (High-Definition Multimedia Interface):

    • 支持视频和音频传输。
    • 常用于连接显示器、电视和家庭影院系统。
  3. DisplayPort:

    • 支持高分辨率显示和多显示器配置。
    • 支持音频传输和更高的带宽。
  4. DVI (Digital Visual Interface):

    • 可以传输数字信号,也支持模拟信号(通过DVI-A接口)。
    • 有多种类型,包括DVI-D(仅数字)、DVI-I(数字+模拟)和DVI-A(仅模拟)。
  5. VGA (Video Graphics Array):

    • 传统的模拟视频接口,也称为D-Sub。
    • 由于是模拟信号,通常不如数字接口提供清晰的图像。

硬盘与存储设备

传统机械硬盘HDD:圆形,有磁片,需要机械手臂可伸展让磁头读取数据。

这会造成严重的读取延迟。
因此,商家用闪存(直接读写的特性)来制作高容量的设备,连接接口也是SATA或SAS,外形和传统磁盘一样。
称为固态硬盘SSD

闪存的致命伤是有写入次数的限制。

以下是一些常见的磁盘驱动器接口:

  1. SATA (Serial ATA):

    • 目前最常见的硬盘和固态硬盘接口。
    • 使用串行连接并通过7针连接器传输数据。
  2. SAS (Serial Attached SCSI):

    • 用于高性能存储系统,包括服务器和高端外部存储设备。
    • 提供比SATA更高的数据传输速率。
  3. USB (Universal Serial Bus):

    • 用于外部硬盘和固态硬盘。
    • USB接口有多个版本,如USB 2.0、USB 3.0、USB 3.1和最新的USB4,数据传输速率逐渐提高。

使用须知
由于硬盘内部机械手臂上的磁头与碟片的接触是很细微的空间,如果有抖动或是污物附着在磁头
与碟片之间就会造成数据的损坏或是物理硬盘整个损坏,因此,正确的使用电脑的方式,应该是在电
脑通电之后,就绝对不要移动主机,避免震动硬盘,而导致整个硬盘数据发生问题。另外,也不要随
便将插头拔掉就以为是顺利关机。因为机械手臂必须要回归原位,所以使用操作系统的正常关机方式,才能够比较好地保护硬盘,因为它会让硬盘的机械手臂回归原位。

主板

设备I/O地址和IRQ中断请求是在计算机系统中用来管理硬件设备与操作系统之间通信的重要概念。

  1. 设备I/O地址(Input/Output Address):

    • 设备I/O地址是硬件设备在计算机系统中的唯一标识符,用于控制和访问硬件设备。每个设备都被分配一个唯一的I/O地址,操作系统通过这个地址与设备进行通信。
    • 设备I/O地址通常是一个16位或32位的地址,用来指定设备在计算机系统的内存映射区域的位置。通过读取和写入这些地址,操作系统可以向硬件设备发送控制指令或接收设备的状态信息。
  2. IRQ中断请求(Interrupt Request):

    • IRQ中断请求是硬件设备向CPU请求处理器时间的机制,用于通知CPU有重要事件需要处理。当硬件设备需要处理某个事件时,会向CPU发送一个中断请求信号。
    • IRQ中断请求通常由硬件设备的IRQ线路进行传输,CPU收到中断请求后会暂停当前任务,跳转到对应的中断处理程序进行处理。中断处理程序一般由操作系统提供,用来响应特定的中断事件并进行相应的处理。

各设备通过IRQ告知CPU设备的工作情况,以方便CPU分配任务。

软件程序运行

操作系统

操作系统内核kernel
操作系统OS:一组程序,管理电脑的所有活动以及驱动系统中所有硬件,包括CPU、内存、输入输出设备、文件系统等。
内核程序放置到内存当中的区块是受保护的,并且启动后就一直放在内存中。

系统调用
操作系统提供应用程序编程接口API 给程序员开发软件

应用程序或壳程序shell
系统调用
内核
硬件

内核的功能

  • 系统调用接口
  • 进程管理
  • 内存管理
  • 文件系统管理
  • 设备驱动
    硬件的驱动程序是根据操作系统开发的,操作系统上安装驱动程序来驱动硬件设备。

总结

  • 计算机的定义为:接受用户输入命令与数据,经由中央处理器的数学与逻辑单元运算处理后,
    以产生或存储成有用的信息。
  • 电脑的五大单元包括:输入单元、输出单元、控制单元、算术逻辑单元、记忆单元五大部分,其
    中CPU包含控制、算术逻辑单元,记忆单元又包含内存与辅助存储。
  • 数据会流进或流出内存是CPU 所发布的控制命令,而CPU 实际要处理的数据则完全来自于内存;
  • CPU依设计理念主要分为:精简指令集(RISC)与复杂指令集(CISC)系统。
    关于 CPU 的频率部分:外频指的是 CPU 与外部组件进行数据传输时的速度,倍频则是CPU 内
    部用来加速工作性能的一个倍数,两者相乘才是CPU的频率速度。
  • 新的 CPU 设计中,已经将北桥的内存控制芯片整合到 CPU 内,而 CPU 与内存、显卡通信的总线通常称为系统总线。南桥就是所谓的输入输出(I/O)总线,主要在连接硬盘、USB、网卡等设备。
  • CPU 每次能够处理的数据量称为字长(word size),字长依据 CPU 的设计而有 32 位与 64 位。
    我们现在所称的电脑是 32或64 位主要是依据这个CPU解析的字长而来。
  • 个人电脑的内存主要组件为动态随机存取内存(Dynamic Random Access Memory, DRAM),
    至于 CPU 内部的二级缓存则使用静态随机存取内存(Static Random Access Memory,SRAM)。
  • BIOS(Basic Input Output System)是一个程序,这个程序是写死到主板上面的一个内存芯片中,这个内存芯片在没有通电时也能够将数据记录下来,那就是只读存储器(Read Only Memory, ROM)。
  • 目前主流的外接卡接口大多为PCIe 接口,且最新为PCIe 3.0,单通道速度高达1GB/s。
  • 常见的显卡连接到屏幕的接口有 HDMI、DVI、D-Sub、DisplayPort 等。HDMI可同时传送影像
    与声音。
  • 传统硬盘的组成为:圆形碟片、机械手臂、磁头与主轴马达所组成的,其中碟片的组成为扇区、
    磁道与柱面。
  • 磁盘连接到主板的接口大多为 SATA 或 SAS,目前桌面电脑主流使用的为 SATA 3.0,理论极速可
    达600MB/s。
  • 常见的字符编码为 ASCII,简体中文编码主要有 GB2312 及 UTF-8 两种,目前主流为 UTF-8。
  • 操作系统(Operating System,OS)其实也是一组程序,这组程序的重点在于管理电脑的所有操
    作以及驱动系统中的所有硬件。
  • 电脑主要以二进制为单位,常用的磁盘容量单位为字节(Byte),其单位换算为1字节=8位。
  • 最普通的操作系统仅在驱动与管理硬件,而要使用硬件时,就得需要通过应用软件或是壳程序
    (Shell)的功能,来调用操作系统操作硬件工作。目前称为操作系统的除了上述功能外,通常已经
    包含了日常工作所需要的应用软件在内。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值