计算机概论

理解一些计算机硬件的基础知识

CPU的架构

CPU内部有一些微指令,软件都要经过这些指令集来完成

1.精简指令集(Reduced Instruction Set Computer

RISC指令较为简单,运行时间短;若要执行复杂的事则需要多条指令

常见的有ARM,SPAPC

2.复杂指令集(Complex Instruction Set Computer

CISC的每个小指令可以执行一些较为低级的硬件操作,指令复杂,每条指令能做很多事

比如AMD,Intelx86架构

网桥

CPU通过主板连接组件,一些集成在主板上的芯片优劣对性能有影响,早期的芯片通过两个网桥连接各组件

北桥:负责连接速度较快的CPU、内存、与显卡等组件

南桥:连接较慢的设备接口,如硬盘、USB设备、网卡等

目前的架构将北桥整合到了CPU中

CPU的工作频率

​ 因为早期的CPU架构主要通过北桥来连接CPU、内存、显卡,因此每个设备的工作频率都应该相同。于是出现了前端总线(FSB),但CPU命令周期很快,为了满足FSB,于是有了外频倍频

  • 在早期的设计中,外频是指CPU与外部组件传输数据的速度,倍频是指CPU内部用来加速的一个倍数

CPU频率 = 外频 X 倍频

  • 超频:指的是通过主板将CPU的外频和倍频提高成较高频率的方式,但一般倍频被厂家固定,改的是外频

现在CPU会自动帮你超频,自动降频(省电),例如Intel的turbo(睿频)

32位和64位CPU与总线“位宽”

CPU内部有一个内存控制芯片,可以控制内存的频率

前端总线技术(Front Side Bus):表示了CPU的内存控制芯片与内存间的传输速度

例如我的CPU最大支持的内存频率为2666MHz,每个周期能传输64bit(位宽),则我的内存最大带宽为2666MHz X 64bit = 21.3GB/s,又因为我买了两个组了双通道,总带宽为41.6GB/s

CPU每次能处理的数据量叫字长word size,比如32位和64位,32位最大只能支持4GB/s的内存

CPU的等级

​ 早期的x86架构有着不同的针脚和设计,目前的64位则称为x86-64,简称x64

​ 很多软件都有针对CPU的一些设计,而新的CPU有着向下兼容的能力,使用软件时应该注意它对CPU的最低标准

超线程(Hyper - Threading)

​ 现在的CPU都是多核CPU,而CPU的命令执行周期都很短,很多内核处于闲置状态,现在的操作系统都是多任务的,同时有很多程序让CPU来运行,于是想让CPU同时执行2个程序

简单实现:将重要寄存器分为两组,让程序分别使用这两组寄存器

使用超线程技术并不一定会提升性能,看情况而定,目前来说利大于弊

内存

​ 目前个人电脑的内存主要部件位动态随机存取内存(Dynamic Random Access Mermory):随机读写内存只有在通电时才记录,断电后数据消失

DRAM又分好几代,有SDRAMDDR(Double Data Rate) SRAM,DDR是双倍传输速度(类似倍频),他可以在一次时钟周期进行两次数据传输,DDR又分为DDR,DDR2(4倍),DDR3(8倍),DDR4

需要注意的是,DDR3L指的是降低了内存的工作电压,买主板要注意是否支持,不然会烧毁

多通道设计

​ 因为所有的数据都放在内存,那么内存的位宽越大越好,一般位64bit,组合两根,则是128bit

​ 要启用两个(或四根)内存,那么这两根内存要一模一样最好,因为数据要同步进行读写,才能提高整体带宽

在主板上,内存糟要插相同的颜色,这是专门为了双通道设计的

DRAM&SRAM

​ 对于一些常用的数据如果放在CPU内部的话,就不用重复读取,提高了效率,于是设计了二级缓存


要整合到CPU内部,则L2的速度必须跟上CPU,这时候DRAM是无法满足的,需要SRAM(Static Radom Access Memory),它在设计上使用的晶体管较多,成本很高,但速度快,用到CPU中是个不错的选择

只读存储器(ROM

​ 主板上有组件,组件的参数具有可调整性,比如CPU和内存的频率是可以调整的,而网卡、显卡的参数啥的都是记录在主板的CMOS芯片中,CMOS的读写是由主板上的一个存储芯片里的BIOS操作的,这个存储芯片不通电也能存储数据,是只读存储器(Read Only Memory).

​ ROM是一种非易失性的存储,BIOS 对于PC是很重要的,系统启动都会先去读去这个程序

​ 固件(firmware)也是通过ROM来进行软件的写入,固件像软件一样会被系统执行,但他比硬件内部而言更重要,例如BIOS就是一个固件,控制这硬件的各种参数

​ BIOS对于电脑非常重要,但电脑发展的实在是太迅速了,BIOS也要与时俱进,但ROM是无法改写的,所有现在BIOS通常写入类似闪存(flash)或电可擦除可编程只读存储器EEPROM(Electrically Erasable Programmable Read-Only Memory)存储硬件中

固件可以理解为固定在硬件上的控制软件

显卡

​ 也叫VGA(Video Graphics Array),显示图像的重点在于分辨率颜色深度,每个图像显示的颜色会占用内存,所以显卡上也有集成内存显存

​ 在早期,一些3D图像都是有CPU完成的,但运行程序时CPU已经很忙了,于是在显卡上嵌入了3D加速的芯片,成了现在的GPU

​ 显卡也算高速运算的组件,数据传输自然越快越好,现在用的是PCIe插槽,PCIe用的是类似管道概念来处理

规格 1x带宽 16x带宽
PCIe 1.0 250MB/s 4GB/s
PCIe 2.0 500MB/s 8GB/s
PCIe 3.0 1GB/s 16GB/s
PCIe 4.0 2GB/s 32GB/s

书上一道题:

假设显示器使用1024X768分辨率,且使用全彩(每个像素占3B(RGB)),需要多少内存?

答:因为有1024X768 = 786432的像素点,每个占3B,则需要2.25MB的内存

注意PCIe的插槽是与南桥连接还是与CPU直连,阅读主板的逻辑图例

硬盘和存储设备

这里只是粗略了解一下机械硬盘,我在《30天自制系统》已经有所了解,不在赘述

使用机械硬盘要注意通电后别随意移动主机,以防数据损坏,为了让磁头归位,请使用系统关机

传输接口

SATA

具有一条数据线和电源线,还有一个跳线,只有不兼容才会使用

版本 带宽Gbit/s 速度MB/s
SATA 1.0 1.5 150
SATA 2.0 3 300
SATA 3.0 6 600

传输10位编码时,8位是数据,2位是校验用的,bit转换位B为1:10,虽然理论可达600M/s,但由于物理因素,最快只能达到150M~200M左右

SAS

串行SCSI(Serial Attached SCSI),读写稳定速度快,一般用在服务器上,支持热插拔

版本 带宽Gbit/s 速度MB/s
SAS 1.0 3 300
SAS 2.0 6 600
SAS 3.0 12 1200

USB

简介:USB,Universal Serial Bus(通用串行总线)的缩写,USB接口支持设备的即插即用和热插拔功能。

版本 带宽 速度
USB 1.0 1.5Mbps 192KB/s
USB 1.1 12Mbps 1.5MB/s
USB 2.0 480Mbps 60MB/s
USB 3.0(USB 3.1 Gen 1) 5Gbps 500MB/s
USB 3.1 Gen 2 10Gbps 1280MB/s

固态硬盘

SSD(Solid State Disk),利用闪存做的存储设备,相对于机械硬盘,没有驱动马达,延迟低,速度快,还省电

缺点:早期的SSD闪存写入次数有限制,用大概两年就GG,现在的SSD大概用5~6年(不同规格寿命不同)

操作系统

想让电脑执行程序,就得要参考一堆硬件功能的函数,还要学习机器语言,并且每次写程序都有重新改写,如果将所有的硬件都驱动,提供一个软件的参考接口开发软件,就好多了,这就是操作系统

内核(Kernel)

  • OS也是一组程序,这组程序的重点是可以管理电脑的所有活动和驱动系统中的所有硬件
    • 比如让CPU逻辑判断和计算
    • 内存读写代码
    • 让网卡传输数据等
  • 实现上述的功能就是操作系统的内核

系统调用(System Call)

​ 硬件都由内核管理后,开发软件还要去参考内核的功能,还是很麻烦

  • 于是OS会提供一套应用程序的编程接口(Application Programing Interface),用来给程序员开发,就比如学习C语言只需要学习C的函数就行了,然后系统调用会直接将C的相关语法转换为内核可以看懂的任务函数

图中的概念

  • 因为内核是参考硬件规格做的,所有同一系统不能在不同硬件结构下执行,例如windows不能在ARM下运行
  • OS只是管理整个资源,CPU、内存、输入输出设备、文件系统等
  • 应用程序是参考API写的,所以不同操作系统不能运行

内核功能

  • 系统调用接口(System call interface)

    方便程序员与内核的沟通

  • 进程管理(Process control)

    分配多个任务给CPU时,可以有效的加快性能

  • 内存管理(Memory management)

    因为程序代码和数据都是放在内存中的,内核一般会提供虚拟内存的功能,内存不足会提供交换(swap)分区的功能

  • 文件系统管理(Filesystem management)

    文件系统的管理,例如数据的输入输出等工作,还有不同文件格式的支持等,如果你的内核不支持某各文件系统,你就无法使用这个格式的文件

  • 设备驱动(Device drivers)

    用来管理硬件

操作系统与驱动

  • OS要能够驱动硬件,应用程序才能使用硬件功能
  • 一般来说,操作系统会提供API给开发商编写驱动
  • 驱动由厂家提供

参考《鸟哥的Linux私房菜 基础学习篇》

作者

manu

发布于

2019-12-22

更新于

2023-01-06

许可协议

# 相关文章
  1.计算机基本科学
# 推荐文章
  1.ALTER
  2.数据库笔记
  3.微信小程序笔记
  4.动态调试-OD
  5.winPE结构
  6.git指令

:D 一言句子获取中...