计算机硬件扫盲

1.硬件组成:

1.1CPU

计算机的计算与控制单元,有些时候会包含一些额外的集成组件,比如至强可扩展以P结尾的型号集成了一块fpga,苹果M1集成了内存与存储控制器。

现代cpu多采用流水线结构,将一条指令的运行分为5个阶段(IF,ID,EXE,MEM,WB),分别负责取指,译码,执行,访问内存和写回以提高并行效率,可以看到这样的设计和我们写并行程序一样会在有依赖关系的指令相邻执行时产生问题,这些问题统称为CPU冒险,作为程序员我们只需要知道大部分冒险都可以通过将各阶段的寄存器间建立直接连接解决,只有load指令后紧跟使用刚读取的数据时会产生一个空指令(流水线冒泡bubble)拖慢执行效率,所以各位编程时应尽量将所需数据一次性调入寄存器再进行处理或处理第n个数据前预先将第n+1个数据调入寄存器

addIPIDEXEMEMWB
stallbubblebubblebubblebubblebubble
loadIPIDEXEMEMWB
i0IPIDEXEMEMWB
t0t1t2t3t4t5t6t7

流水线及load冒险

再来看CPU的存储结构,只有两种,冯诺依曼结构和哈佛结构,前者是程序和数据共用一块存储空间,后者时程序和数据相互独立,现代计算机总体上都是冯诺依曼结构,但也有特例,不知道大家有没有测过内存速度,你可能会发现l1的复制速度快的有些不正常,又或者看CPU_Z时可能会发现l1缓存会显示两个大小,现在大部分CPU的l1缓存其实是哈佛结构,对程序员来说l1更适合堆放循环分支等结构及其对应的数据

CPU_Z截图

再说一下CPU的性能,主要是三部分,频率,线程,指令集,频率决定了一秒钟内CPU能够通过多少次脉冲信号,线程决定了一次脉冲包含多少个信号,而指令集决定了一个信号会产生什么操作。

只须知道一段程序在该指令集先会被编译成多少条指令再除以频频率和线程数即可得到基本的性能,但也有考虑别的因素,比如说多线程效率,睿频,指令长度等等,通常来说,同基本性能下线程越多,睿频越不稳定,指令集越长,性能都会越差,还有一点就是睿频,它是单核最高加速频率,但更具参考意义的是全核心满载频率,这就是为什么有些移动端CPU看上去参数挺高但打不过桌面端的原因。

电压和散热也很重要,但归根到底还是在影响频率。

最后提一下主流的CPU架构

PC常用的x86与x86_64,由英特尔拥有,AMD和VIA拥有授权,兆手里那所谓授权个也是VIA的,具体我不好细说,可以看看这个https://www.zhihu.com/question/396941093

SoC常用的ARM,由ARM公司拥有,由于保姆式的销售方案,授权已经烂大街了,由于英伟达收购失败,最近要改授权方式,手机市场可能会变天

小型计算机和大型计算机常用的POWER,由IBM拥有,苹果和诺基亚拥有授权,据说有些古董架构已经开源

还有risc_v,确切来说应该是指令集不能算架构,完全开源的,可以与ARM竞争

1.2内存

存储结构之一,主要负责存储正在运行的程序,大部分都是易失性存储器,断电会丢失数据,拥有直接编址,通过总线与CPU连接

内存的定义其实并不明确,它既像是外存的向上延申又像是寄存器的向下拓展,按物理特征来说最早的内存应该是磁芯存储器,按逻辑位置来说应该是SIMM内存,之后经过一段时间的稳定发展,内存迎来了两条岔路,SDR SDRAM和rambus DRAM,最终高性能低性价比的rambus DRAM倒在了历史的尘埃里,而SDR SDRAM经过简单粗暴的叠倍频方式活到了今天,也就是现在我们所熟知的ddr内存系列

磁芯存储器,中央交叉金线上的磁环存储着信息

转自bbs.enlern.com

SIMM内存

转自japaneseclass.jp

Rambus DRAM,巨大散热片和高温警告标志也说明了其衰落的另一个原因

转自product.pconline.com.cn

现代内存还分三个种类,纯ECC,reg ECC和普通内存,ECC想必各位都知道是什么,reg ECC是ECC内存条上集成了寄存器,这两类内存条一般只在服务器上使用,英特尔和AMD的顶级桌面端CUP酷睿x和线程撕裂者与服务器端CPU至强和霄龙的主要区别也是是否支持ECC内存。

再说一下现代内存条的性能,主要由4方面决定,大小,频率,位宽和延迟,其中位宽和频率最为重要,由于各代频率可选的范围都很小,所以优先考虑位宽,内存通道能占满就占满。大小方面现在来说16g基本够用,再小了不行就拿虚拟内存顶,2g以下基本上就没救了。延迟受小参数影响,就是频率后面那有串数字,比较复杂这里就不讲了。

之前提到过大部分内存都是易失性的,那剩下这个小部分奇葩是谁呢,它就是英特尔的傲腾内存,它和之前的内存使用并不是同一种技术,基于3D XPoint,速度不如ddr但是存储密度高,价格便宜,且非易失,英特尔建议是与DDR混用,需要至强可扩展2代及以上支持,有兴趣可以去海鲜市场整一套玩玩。

3D XPoint

傲腾内存

来源www.gaodi.net

除了傲腾,内存里还有另一朵奇葩,那就是HBM内存,如果傲腾奇葩是因为架构,这家伙就是因为恐怖的带宽,以至于只能被集成在 CPU\GPU上,经常被拿来当l4缓存用。比如采用HBM2显存的mi60带宽高达1TB/s

至强融核7210es,四角的芯片就是HBM内存

来源www.bilibili.com

1.3主板

一大块PCB(理论上也可以不用PCB,但我觉得没人会那么干),只要知道主板用以连接所有硬件并提供一部分电源就行,具体的我们放到后面硬件连接再说。

1.4总线设备

按协议来分的话有很多,pc上常见的就是ISA,PCI和PCIe,我们按功能来看。

1.4.1显卡\计算卡\3D加速卡

这些本质上没什么差别,使用的方向略有不同,都是由CPU的一部分特化而来,可以快速处理并发浮点运算,但没有直接寻址能力,适合处理图像,张量等需要批量处理的数据,一般用于游戏与机器学习训练。

程序员一般只需要使用cuda和rocm就可以在api层面操作显卡而不需要考虑驱动程序级别的问题,但了解一些显卡底层的工作原理对灵活选择设备也是很有帮助的。

再来看显卡的性能,之前说过,显卡是由CPU特化而来,影响两种性能的因素基本相同,只不过显卡还需要考虑集成在PCB上的显存(584改588这种骚操作另说)。还有就是GPU的核心并不是均匀的,同架构下流处理器个数基本可以表征线程数,不同架构下就不容易比较了。

由于显卡是从属设备,某个非硬件因素对性能的影响也比较大,那就是驱动,一般来说英伟达>AMD≈英特尔,英特尔在DX11等新型技术上好一点,但对旧技术兼容太差,AMD那个稳定性我就不说了,用过的都懂,超频闪屏听说过吧,你见过降频闪屏的吗🤣

战术核显卡 gtx690,一发即可摧毁一个航母战斗群

来源vga.zol.com.cn

战术核显卡的父亲 gtx590

来源vga.it168.com

战术核显卡的祖宗 gtx295

来源www.expreview.com

战术核显卡plus titan z

来源www.bitcoinminershashrate.com

1.4.2存储设备

从原理上主要分为电存储和磁存储,前者主要是使用闪存的固态硬盘和U盘以及各种各样的闪存卡,后者主要是机械硬盘,软盘和磁带。还有一种比较特殊,使用物理结构来保存信息,主要是打孔纸带和光盘

其实大部分存储设备都不是直接与主线相连的,sata,sas这类存储其实是控制器连着总线,只有NVNe和PCIE硬盘直接与总线相连,不过现在NVMe是主流,这里就放在总线设备里讲了

机械硬盘是通过磁化盘片上的金属层存储信息,由磁头负责读取和写入,盘片分为不同磁道和扇区,一块硬盘又包含数个盘片,盘片上的磁道就组成了柱面。磁头移动可以切换磁道,盘片高速转动以读取磁道不同位置的信息,磁头靠盘片的附面层气体悬浮在盘片上,如果气体含有固体杂质盘片就会被划伤,这也就是为什么氦气盘普遍优于空气盘,具体磁头是怎么飞起来的可以看看这个https://www.zhihu.com/question/66327714。

硬盘实际读写时间就等于寻道时间加转动延迟加操作时间,这就是为什么只有一块硬盘时装系统也最好单独分区,因为分区会优先使用相邻柱面从而减少寻道时间

硬盘结构

来源www.laoyaoba.com

固态硬盘其实和硬盘没关系,只不过之前的存储设备都叫xxx盘,它也就跟着这么叫了,其本质是闪存存储器,闪存是由上世纪80年代东芝公司发明的,不过50年就基本抢占了消费级市场磁存储的大部分蛋糕(你问问服务器市场用什么?磁带呀😁)。

闪存的基本结构是一个带浮栅的MOS管,浮栅用电子存储信息并控制MOS管栅极,MOS负责读写,将多个单元网状串联就形成了闪存。

带浮栅的MOS管

而根据每个单元存储的位数,可以将闪存分为4代,也就是我们熟知的SLC,MLC,TLC和QLC,代数越高存储密度越高,每比特成本越低,但读写性能与稳定性也越差。

各代闪存每单元存储位数

现代固态硬盘基本由4部分组成,主控,缓存颗粒,闪存颗粒和供电电路,主控负责译址并将读写操作转换为闪存操作,缓存颗粒负责缓冲高频数据,闪存颗粒负责实际存储,供电电路负责提供闪存操作所需电压

再来说性能,就比较简单了,决定一切,不过值得注意的是许多厂家喜欢标榜自己硬盘顺序读写5000+MB/s,但实际上重要的是4k随机读写性能

给各位表演个绝活,机械硬盘拳打990pro,脚踢SE10🤣

刚才内存里的那个奇葩就又跳出来了,傲腾表示“我一非易失性存储,我干嘛只当内存呀”,所有就有了傲腾硬盘,这玩意可就真的盘拳打990pro,脚踢SE10了,不过可惜作为硬盘有点贵。

傲腾905p,史上最快量产单硬盘

来源zhuanlan.zhihu.com

1.4.3其他总线设备

网卡,声卡,接收卡,PCIe转xxx转接卡……

1.5电源

将市电转成3.3V,5V,12V,标称是最大稳定输出功率,80plus标志代表能量转化率大于80%

1.6散热器

满载不撞温度墙就是胜利,能用风冷就别用水冷。

如果限制水冷必须塞进标准atx机型里那么散热器王者在风冷这边(ProSiphon Elite),如果外置480*4的冷排那另说。

2.硬件间连接

2.1 逻辑协议

2.1.1 PCI/PCI-X/PCIe

用以连接北桥/CPU和和电脑内除内存外的所有设备,主从协议,主控设备一般只有北桥(CPU),从属设备为各PCIe设备,从属设备用于通信的寄存器都有直接编址,中控通过操作寄存器来操作设备,数据并行传输。

PCI-X 66 64位 66MHz Hot Plugging, 3.3 V 533MB/s

PCI-X 133 64位 133MHz Hot Plugging, 3.3 V 1.06GB/s

PCI-X 266 64位/16位选项 133MHz Double Data Rate Hot Plugging, 3.3 & 1.5 V, ECC supported 2.13GB/s

PCI-X 533 64位/16位选项 133MHz Quad Data Rate Hot Plugging, 3.3 & 1.5 V, ECC supported 4.26GB/s

2.1.2 前端总线 FSB/HT/HT link/QPI

用以连接CPU和北桥,先多以被集成到了CPU内部。

2.1.3 内部总线

CPU内部各部分间通信协议的总称。

2.1.4 SATA1/2/3

用以连接SAST控制器和硬盘,数据串行传输。

2.1.5 SAS

用以连接SAS控制器和硬盘,数据串行传输,兼容SATA,速度更快。

2.1.6 AHCI

PCIe的上层协议,用以SATA控制器与北桥的通信,与SATA协议组成了完整的SATA硬盘协议。

2.1.7 NVMe

PCIe的上层协议,用以硬盘与北桥的通信。

2.1.8 通用串行总线 USB1\2\3\4

用以连接低速外部设备,取代ps2,rs-232,rs-422等协议。

2.1.9 网络协议 以太网/令牌环/FDDI

用以计算机间通信。

2.2 物理连接

现代计算机中,多数北桥都被集成到了CPU中,其余的看图吧。

这里就可以说一下寄存器,缓存,物理内存,逻辑内存,外存的区别了,各位估计也在网上看到过提供大小,速度,成本,易失性判断的方法,但这些其实只是经验判断并不是严格定义,真正决定的是他们所处的位置,指令能直接操作的是寄存器,有直接编址但并不通过总线访问的是缓存,有直接编址的通过总线访问的专用存储器是物理内存,所有有编址的存储,包括缓存,物理内存和总线设备用于通信的寄存器都是逻辑内存,外存是所有非直接编址的存储器。记好了,以后可别到处说自己手机内存1t的,那是外存。

2.3 物理接口

2.3.1 电源

电源接口是可以拆分的,按主板接口数量连接即可。

2.3.2 内存

一个内存通道一般由两个插槽,按照优先级插入能保证通道数最大。

2.3.3 风扇

12V,第3,4pin分别是工作检测和PWM调速,也可以接散热器水泵。

2.3.4 背板IO

USB,HDMI,rj45,音频组。

2.3.5 PCIe

PCIe插槽是向下兼容的,有些尾部没有封闭的也可以向上兼容,一般主板上的PCIe插槽会多于芯片组提供的,实际通道情况以BIOS为准.

2.3.6 M.2

M-key一般为NVMe硬盘和网卡(实际上就是PCIe x4),M-key B-key一般为SATA硬盘。

2.3.7 SATA

2.3.8 前面板

Maven

一、Maven是什么 引用官方介绍—Apache Maven是一个软件项目管理和理解工具。基于项目对象模型的概念 (POM),Maven可以从一个中心信息中管理...

PS抠图技巧

抠图是Photoshop操作最基本的技能,看似简单,但不同的图像用不同的方法或许会达到事半功倍的效果。这里介绍十种常用的抠图方法。 1.橡皮擦工具 橡皮擦工...

区块链与比特币

什么是比特币 一种加密数字货币 比特币的出现 bitcoin-20081003下载 区块链是什么 比特币是怎么分发的 中本聪是谁? 区块...

mysql安装配置以及navicat与mysql的连接

一、打开MYSQL官网进行安装包的下载 https://downloads.mysql.com/archives/installer/ 二、安装MYSQL 双击下载好的文件进行安装 这里我们...

学英语小工具

我想给大家分享的是学习英语的小工具,英语对大学生来说,不仅对以后考研很重要,而且对于学习编程的我们来说也是有必要继续学习的。我以四六级的三个部分给...

Word格式技巧

在制作word文档时,我们可以应用到许多快捷方式来节省很多时间和精力,这时熟悉一些常用的快捷键会让我们在制作Word时增添一些乐趣,下面就是一些平时可能会...