计算机硬件基础与实践探知

2023-05-16

计算机硬件的五大单元

在介绍计算机硬件基础之前,我们必须了解一下计算机硬件的五大单元,注意这里说的是硬件的五大单元并不是计算机五大单元。

输入设备

无论是计算机五大单元还是计算机硬件的五大单元,这其中必须包含的东西肯定是输入设备,在计算机日常使用中,输入设备无非就是将我们需要的数据传给计算机的媒介,输入设备常见的由鼠标、键盘、游戏手柄等。

输出设备

输出设备顾名思义就是显示计算机处理数据的媒介,例如显示屏、打印机等都是输出设备。

算术逻辑单元

在介绍算数逻辑单元之前,我们必须了解一下什么是CPUCPU是一个具有特定的功能的一个芯片,每个CPU都包含一堆的指令集。算术逻辑单元就是CPU的一部分,它负责程序的运算以及逻辑判断。

控制单元

同样的控制单元也是CPU的一部分,它负责协调各个周边的组件和各个单元的工作。

主存(内存)

由上文我们都知道CPU是负责各种复杂的运算工作和组件之间的调度协调,那么问题来了,运算过程中势必需要数据,那么数据又要从哪里来呢?答案就是内存,内存就是CPU获取数据来源。但是很多读者肯定又要疑问,我们日常使用电脑的时候,数据不都是存储在硬盘中嘛?为什么CPU不去硬盘获取数据而是需要从主存中获取呢?

答案很简单,CPU处理数据速度非常块,但是磁盘将数据传输给CPU的时候却要非常久,所以为了能够将加快数据传输到CPU的速度以便CPU能够快速完成计算,所以我们就在硬盘和CPU之间搭建了一个重要的组件,内存。有了内存作为中介,使得CPU获取数据的速度会相对快一些,保证CPU的执行效率,从而避免因为数据传输过漫而导致的CPU空转。所以内存常被我们称为主存,而硬盘等设备都被称为辅存。
总结一下上文的描述,我们就可以得到下图所示的内存结构:

在这里插入图片描述

CPU架构初探

精简指令集(RISC)

CPU是包含特定指令集的芯片,而指令集大概可以分为精简指令集和复杂指令集,精简指令集特点很明显。指令所能处理的动作非常简单,并且执行效率极高,常用的常见就是导航系统、网络设备(路由器、交换机)等。

复杂指令集(CISC)

我们日常计算机所用x86架构所用的CPU就是包含复杂指令集的CPU,它所能处理的动作可以是非常复杂,所以执行效率相对精简指令集而言会低一些。常见的CISC微指令就是AMD,Intel这些。需要补充一点,之所以我们管现代所用的计算机结构叫x86的原因也正是因为Intel早年开发的一些列CPU代号都是86结尾。
随着CPU的不断发展,计算机也从原来的32位发展到现在的64位,这就意味着CPU一次可以读写的数据也从原来的32位变为现代的64位,也意味着所能表示的内存地址从原来的4g变为8g。
在这里插入图片描述

用人的构建来理解计算机的运作流程

了解了计算机硬件的组成部分,我们就可以通过人的构建来了解一下计算机的工作流程,我们都知道人是通过大脑进行思考和处理外界的传递的数据的,计算机中的CPU也是同理,他就好比计算机的大脑,通过CPU计算机就是将主存传入的数据进行运算,并交由输出单元传送出去。
人脑进行运算的数据有可能是从五官感知到的,也可能是从自己的记忆中拿到的。而主存就好比人类五官所感知到的记忆。这些数据可能是临时传入也可能是从硬盘中获取的,正是因为主存的存在,计算机才能快速的得到数据,并将数据交由CPU进行思考和处理。
人类对于日常工作处理所需要的数据大部分都来自记忆,而记忆是长期存储的数据。计算机也一样的,硬盘就扮演着存储长期数据的角色,当计算机需要某些数据的时候,主存就会去硬盘中获取这些数据交给CPU处理。
知道了数据处理的地方,那么我就该知道新的数据是从何处进行输入输出的,正如人类一样,人类是通过五官感知外界。而计算机则是通过输入和输出设备完成数据的运输,输入设备可以是鼠标、键盘等。输出设备可以是打印机、显示屏等。
有了计算组件、数据运输组件,那么我们也需要这些组件交互的渠道,人类是通过神经来连接这些组件的。而计算机则是通过主板将这些组件结合起来。

在这里插入图片描述

计算机上常用的计算单位

容量单位

容量单位的进率都是1024,但是bit和byte的进率是8。

1T=1024G
1G=1024M
1M=1024K
1K=1024Byte
1Byte=8bit

速度单位

速度单位最常见的就是网络速度,例如我们日常购买宽带时运营商都会告知宽带为百兆带宽。实际上百兆带宽就是100Mbps,这里的b是bit,所以换算成byte,百兆带宽的实际速度为100/8=12.5Mbyte

计算机设备硬件组成探究

聊到计算机组成我们基本是以AMD或者Intel两个主流派系,两者在历史长河中互相学习,架构已经非常类似了。
早期的主板会将结构分为南北两个部分,北桥负责桥接各种读取速度块的组件,例如主存、CPU、显示适配器等。而南桥负责桥接较慢的装置接口,例如硬盘、网络卡、usb等。
在这里插入图片描述
于是这就引发了一个问题,北桥的CPU要和主存交互时都需要经过北桥,这就会大大占用北桥的带宽,造成其他组件传输效率降低,于是CPU就被改进了,原本北桥中的内存控制器被放置到CPU中,所以现如今的CPU和主存交互都无需经过北桥这一环,传输效率自然高效许多。所以如今的x86计算机架构如下所示

在这里插入图片描述

CPU详解

我们以华硕主机来聊聊CPU这个东西,如图所示,这个插槽就是CPU的插槽,我们都知道使用不同的指令集CPU的执行效率都会有所不同,但是在同款CPU性能比较下(注意是同款CPU哦),频率也是CPU性能的一个重要指标,例如一个CPU的执行频率为 3.6GHz,这就代表着这个CPU的一秒可以执行3.6*10^3次的工作。

在这里插入图片描述

上文我们也提到了,早年的CPU和主存是通过北桥来交互数据的,但是CPU的执行效率远远高于主存的传输速度,所以为了平衡这一点,北桥还设置了一个叫FSB的东西来连接两者。并且为了适配CPU和其他组件的交互速度,CPU还将自己传输分为内频和外频。外频的速度适配外部组件的传输速度,内频则是CPU自己的速度,通过所以早年的CPU可以说是自己内部速度非常快,而外部还在不紧不慢和其他组件缓慢交互。
所以早年我们还会提到一个叫超频的概念,例如我们当前CPU外频率为300MHz,倍频为9,那么CPU的内频就是300*9≈3GHz。假如所以有些计算机硬件发烧友为了能够提高CPU的内频速度,会将外频率速度提高例如将外频率提高为500MHz,那么内频则被提高为4.5GHz,但是这么快的速度确实非正常设置,很可能会导致主机运行时出现宕机的情况。

在这里插入图片描述

上述情况随着时代的发展,Intel使用DMI技术,AMD使用 Hyper Transport,使得CPU和主存以及其他组件交互都无需经过北桥了,所以现在的CPU都是自动超频的。
而另外一个参考指标则是CPU的核心数,现代计算机中一个CPU可能封装不止一个核心,这就使得一个CPU拥有两个核心一起帮忙运算,处理数据的速度自然快很多。

而影响CPU性能的指标也来自于外界,我们都知道CPU的数据都是从主存中获取的,而CPU和主存之间数据传入也是通过内存控制的FSB(前段总线传输速度)。假如内存控制芯片对主存的工作频率为1600Mz,以64位计算机而言,那么CPU最快带宽为1600Mhz64位8byte=12.8Gbyte/s

最后关于CPU性能我们还需要提示一个叫超线程的概念,我们都知道CPU运行速度非常之快,但是面对主存中大量的任务却无法及时的获取并处理完,这就使得CPU处在一个很尴尬的境地。对此设计者们就提出一个超线程的概念,这个概念与操作系统多任务切换类似,就是将CPU内部的register分成两个,让程序分别使用这俩缓存器,这俩缓存器会先后争抢CPU运算单元执行权。这就是使得当一个缓存器使用逻辑运算单元时,另一个缓存器就会去主存获取数据,两个齐头并进的工作着,执行效率就会高很多。
假如我们的CPU由4个核心,那么若开启超线程,那么逻辑上可能就有8个核心哦。

在这里插入图片描述

关于CPU信息,我们可以在Linux系统上键入以下命令查看

more /proc/cpuinfo

以笔者的云服务器为例,我们可以看到以下内容

# 逻辑处理器唯一标识符
processor       : 0
# 代表处理器类型,下面这段配置就代表这个cpu为英特尔的
vendor_id       : GenuineIntel
cpu family      : 6
model           : 79
model name      : Intel(R) Xeon(R) CPU E5-2682 v4 @ 2.50GHz
stepping        : 1
microcode       : 0x1
cpu MHz         : 2499.994
cache size      : 40960 KB
physical id     : 0
# siblings     和cpu cores之间有一个对应关系,如果siblings 是cpu cores的两倍,那就说明当前cpu支持超线程,反之就有可能是CPU不支持超线程或者说超线程的功能未开启
siblings        : 1
core id         : 0
cpu cores       : 1
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 20
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant
_tsc rep_good nopl nonstop_tsc cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c r
drand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti ibrs ibpb stibp fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsav
eopt arat
bugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs taa itlb_multihit
bogomips        : 4999.98
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical, 48 bits virtual
power management:

当然若想查看当前系统物理cpu个数,可键入以下命令

more /proc/cpuinfo |grep 'physical id'|sort

以笔者为例,当前服务器就会输出以下信息,这就意为着笔者的服务器为有16个物理CPU


physical id     : 0
physical id     : 10
physical id     : 12
physical id     : 14
physical id     : 16
physical id     : 18
physical id     : 2
physical id     : 20
physical id     : 22
physical id     : 24
physical id     : 26
physical id     : 28
physical id     : 30
physical id     : 4
physical id     : 6
physical id     : 8

若我们想查看每个CPU内核个数,我们可以键入以下命令

more /proc/cpuinfo |grep 'cpu cores'

可以看到笔者使用的服务器的CPU都是单核心的


cpu cores       : 1
cpu cores       : 1
cpu cores       : 1
cpu cores       : 1
cpu cores       : 1
cpu cores       : 1
cpu cores       : 1
cpu cores       : 1
cpu cores       : 1
cpu cores       : 1
cpu cores       : 1
cpu cores       : 1
cpu cores       : 1
cpu cores       : 1
cpu cores       : 1
cpu cores       : 1

我们也可以键入以下命令查看逻辑CPU个数以及超线程个数的总和,通过输出可知我们知道最终总数为16

cat /proc/cpuinfo | grep "processor" | wc -l
16

内存详解

上文已经说明了CPU和主存决定的计算机执行效率,所以我们再来聊聊内存,内存一般都是一条条芯片,以华硕主机为例子,他会被插在下图所示的插槽中,对于个人计算机而言,需要处理的数据都必须加载到内存中才能被执行,而且内存中的数据如果没有及时报错的话,关机后就会消失。

在这里插入图片描述

而内存SD RAMDDR RAM两种情况,如下图,他们的带宽都是频率*宽度/8,可以看到DDR的频率比较高所以带宽也相对大些,现在主流的主存都是使用DDR4的内存了。

在这里插入图片描述

除此之外,内存还需要考虑的另一个因素就是容量,只有足够大的容量还能保证从辅存中读取的数据会在处理前呆在内存中,不会因为内存不足而被置换出去,直到被CPU执行。从上文我们也看到内存插槽有4个,之所以有这么多就是因为通过增加插槽数目可以增加更多的内存条,从而提高容量的通信也增加了通道,假如一支内存只有64位,那么两条内存条带宽就会达到128位。那么容量就是16G了。

现代计算机为了保证常用数据会快速被响应执行,就在CPU中增加了一个二级缓存,所以当从主存读取的数据执行完成后,有可能会滞留在CPU二级缓存中,二级缓存的执行速度和CPU是一样的,这就是使得计算机的执行性能再次提高。

在这里插入图片描述

有一段重要的程序BIOS,他存储的计算机的硬件信息以及开机设备等选择项,他原本是存在ROM(只读存储器)中,他是一个会挥发性内存,所有数据都会长期保留在内存中且不会修改,但是现代计算机发展速度太快了,这种做法带来了很大的不便,所以为了能够修改这段程序,BIOS现在一般都存到闪存(flash)或者EEPROM中。

显示适配器

显示适配器又称为VGA,因为显示的图形图像的颜色会占用内存,所以显示适配器的容量就会决定图像显示的质量。
而且现如今社会,大量的3D特效出现,这些特效都是需要运算的,早年我们会将运算的任务交给CPU处理,但是CPU实在太忙碌了,所以显示适配器的厂商如今都会在显示适配器中内嵌一个加速芯片来完成运算,这就是所谓的GPU

在这里插入图片描述

除此之外,显示适配器也也需要和CPU等组件进行沟通,所以数据的传输效率也决定的显示的效率,先主流的显示适配器的规格如下,基本都是采用pcie,这就使得传输速度也是杠杠的。

在这里插入图片描述

所以,如果我们需要看到pcie规格所对应的显示适配器的信息,我们完全可以键入以下命令查看

lspci

可以看到笔者服务器所对应的显示适配器为Cirrus Logic GD 5446这个型号的

在这里插入图片描述

硬盘与存储设备

最后就是硬盘了,早期的辅存设备就是硬盘,如下所示

在这里插入图片描述

他对数据的读写都是通过转动磁头来进行的,而且因为磁盘外圈大的原因,所以这种硬盘写数据都是从外往内写的

同样的磁盘传输速度也是非常重要的,传统磁盘连接界面包括有 SATA, SAS, IDE 与 SCSI 等等,但如今
SATA已将IDE取代,而SAS已将SCSI 取代。如下图所示,这就是SATA的插槽

在这里插入图片描述

不同版本的SATA传输速度如下

在这里插入图片描述

虽然SAS传输速度比SATA好,但碍于价格过于昂贵,所以个人计算机不常用,对此我们对SAS速度做个了解就好了

在这里插入图片描述

USB相比大家都知道了,这里我们也就做个简单的介绍

在这里插入图片描述

最后我们就来介绍主流的辅存设备了,固态硬盘(SDD),如今的电脑基本都是使用固态硬盘的,与传统磁盘不同的是,他不需要马达以及转动获取数据,他都是透过内存随机存取的。所以读取速度基本没有延迟,如今的笔记本基本都是使用固态硬盘了。在2016年的时候Intel顶级的ssd已经可以达到500Mbyte/s,这已经可以比肩SATA3了。更何况今日呢?所以传统磁盘已主键被淘汰,我们日常使用个人计算机的基本都是使用SSD了。

关于这些辅存设备信息,我们同样可以使用lspci查看,如下所示,这就笔者服务上所能看到的usb接口、SATA接口等各个接口对应的设备信息。


00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01)
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
00:02.0 VGA compatible controller: Cirrus Logic GD 5446
00:03.0 Ethernet controller: Red Hat, Inc. Virtio network device
00:04.0 Communication controller: Red Hat, Inc. Virtio console
00:05.0 SCSI storage controller: Red Hat, Inc. Virtio block device
00:06.0 Unclassified device [00ff]: Red Hat, Inc. Virtio memory balloon

参考文献

鸟哥的Linux私房菜

循序渐进Linux(第2版)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机硬件基础与实践探知 的相关文章

随机推荐

  • linux之物理网卡配置桥接br0

    1 桥接 linux内核支持网口的桥接 xff08 目前只支持以太网接口 xff09 linux内核是通过一个虚拟的网桥设备来实现桥接的 这个虚拟设备可以绑定若干个以太网接口设备 xff0c 从而将它们桥接起来 真实主机中安装的虚拟主机 x
  • MacOS通过Time Machine恢复,迁移到新MacBook Pro后聚焦搜索与访达最近使用不正常的最终解决方法

    有一次老的MacBook Pro出了问题 xff0c 格式化后重装了系统通过Time Machine恢复后发现有部分软件不正常 xff0c 而且系统自带的聚焦搜索 xff0c 访达最近使用也都不显示东西了 xff0c 最近换了新款的MacB
  • C#中,FTP同步或异步读取大量文件

    一次快速读取上万个文件中的内容 在C 中 xff0c 可以使用FTP客户端类 xff08 如FtpWebRequest xff09 来连接FTP服务器并进行文件操作 一次快速读取上万个文件中的内容 xff0c 可以采用多线程的方式并发读取文
  • Ubuntu远程桌面链接树莓派

    树莓派安装远程桌面 前言树莓派安装real vnc serverubuntu安装vnc viewer 前言 网上的教程太杂乱 xff0c 就为这个事情找了不少资料 xff0c 最后终于自己摸清楚了 事情其实很简单 xff0c 就两部分 xf
  • 岁月不曾辜负谁--写于26岁生日前

    姑且当这是年终总结吧 xff0c 今天是平安夜也是我的25岁青春岁月的最后一天 回首2013 xff0c 3月份经朋友劝说和推荐来到了徐州继续我的挨踢生涯 xff0c 11月份与男友的恋情修的正果步入婚姻的殿堂 xff0c 这就是这一年里发
  • Nvidia JetsonTx2 使用中遇到的坑与填坑方法

    1 Tx2 买回来后最好刷机 xff0c 自带系统没有cuda等驱动 xff0c 重新刷JetPack包 Tx2刷JetPack 3 3方法 xff1a https blog csdn net long19960208 article de
  • Shell 的赋值命令

    首先 Shell赋值时 等号左右两边是不能有空格的 一般赋值 s 61 123 echo s 日期赋值 s 61 96 date 43 34 Y m d 34 96 注意 96 不是单引号 而是 下面的点 echo s 96 对字符串进行连
  • centos7开启telnet登陆

    centos7安装telnet xff0c 开启telnet登陆 xff1a xff08 1 xff09 安装命令 xff1a yum install telnet server yum install xinetd xff08 2 xff
  • 使用iptables命令配置防火墙重启失效的解决办法

    该命令列出当前的防火墙配置 iptables save保存配置 centos系统 保存配置到文件 service iptables save 开机自动启用 chkconfig iptables on 若不是centos系统 保存 iptab
  • MFC 中设置定时器Timer的方法

    在用settimer之前要知道 1 同1个 settimer xff08 xff09 在一个循环里设置一次就行了 xff0c 要是让其不断的set xff0c 是很可能执行不到ontimer xff08 xff09 消息处理函数的 xff0
  • 控制中的各种函数MATLAB仿真

    控制系统的MATLAB仿真 1 MATLAB简介 MATLAB是Mathworks公司开发的一种集数值计算 符号计算和图形可视化三大基本功能于一体的功能强大 操作简单的优秀工程计算应用软件 MATLAB不仅可以处理代数问题和数值分析问题 x
  • 使用VNC实现Windows7远程CentOS的桌面

    使用VNC实现Windows7远程CentOS的桌面 一 CentOS服务端配置 1 下载Putty远程登录软件 下载windows版本 输入CentOS计算机的ip xff0c 登录CentOS计算机的终端 xff08 下载Putty地址
  • iperf3使用方法(Windows与MacOS,iOS)

    Windows下载 https iperf fr iperf download php windows MacOS下载 brew install iperf3 iOS App Store搜索 iperf 61 61 61 61 61 在软路
  • 树莓派raspberry pi 安装远程工具teamviewer

    raspberry pi 安装远程工具teamviewer 1 下载Teamviewer wget http download teamviewer com download linux version 11x teamviewer hos
  • windows配置端口映射到其它电脑(转载)

    windows配置端口映射到其它电脑 转载 A 配置方法 假定需要通过192 168 1 8的14941端口连接192 168 1 118的1494端口 xff0c 则需要在192 168 1 8主机的命令行输入如下语句 netsh int
  • RFID ACCESS CONTROL门禁密码修改

    1 必须先进入编程方式 xff1a 按 xff3b xff3d xff0b xff3b 6位编程密码 如012345 xff0c 忘记编程密码参考第6步重置 xff0c 嘟嘟两声响 xff0c xff08 红灯闪烁 xff0c 绿灯长亮 出
  • 【论文笔记】SphereFace: Deep Hypersphere Embedding for Face Recognition

    参考文献 xff1a Liu W Wen Y Yu Z et al SphereFace Deep Hypersphere Embedding for Face Recognition J arXiv preprint arXiv 1704
  • vue3项目使用node连接数据库(前后端分离)

    学习关键语句 xff1a vue连接mysql数据库 vue项目连接后台数据库配置 vue通过node连接MySQL数据库 写在前面 为了快速学习nodejs制作后端并和数据库进行交互的方法 所以赶紧写一篇这样的文章出来 如果你对这篇文章中
  • 机器学习实战-64:线性判别分析降维算法(Linear Discriminant Analysis)

    机器学习实战 64 线性判别分析降维算法 深度学习原理与实践 开源图书 总目录 xff0c 建议收藏 xff0c 告别碎片阅读 xff01 机器学习分为监督学习 无监督学习和半监督学习 强化学习 无监督学习最常应用的场景是聚类 cluste
  • 计算机硬件基础与实践探知

    计算机硬件的五大单元 在介绍计算机硬件基础之前 xff0c 我们必须了解一下计算机硬件的五大单元 xff0c 注意这里说的是硬件的五大单元并不是计算机五大单元 输入设备 无论是计算机五大单元还是计算机硬件的五大单元 xff0c 这其中必须包