计算机硬件基础

计算机基本硬件

计算机的基本硬件系统由运算器、控制器、存储器、输入设备和输出设备五大核心部件组成。

  • 中央处理单元(Central Processing Unit,CPU):集成了运算器和控制器等逻辑部件,负责执行指令、对数据进行各种算术、逻辑运算,并控制整个计算机系统的运行
  • 内部存储器(主存储器):速度高、容量小,断点易失,用来临时存放程序、数据和运算的中间结果。有较高的随机访问速度,能直接访问任一存储单元。
  • 外部存储器(辅助存储器):容量大、速度较慢、断电不易失,主要采用顺序访问,不适合高速随机访问。用于长期保存数据。
  • 外设:
    • 输入设备:将外部信息输入到计算机系统(键鼠、扫描仪、麦克风等)
    • 输出设备:将处理后的数据显示给用户(显示器、音响、打印机等)

CPU主要功能

CPU作为计算机的核心,负责执行程序并协调系统工作。

  • 程序控制:CPU按照设定的顺序自动逐条取出、解释、执行指令,CPU最核心的功能。
  • 操作控制:CPU 将指令译码后的微操作信号发送给计算机的各个相关部件,控制他们严格按照指令要求完成具体操作。
  • 时间控制:CPU精确控制指令执行过程中各个微操作的开始时间、持续时间以及先后顺序,协调系统工作。
  • 数据处理:CPU通过算术逻辑单元对数据进行算术运算和逻辑运算,完成对数据的加工。
  • 中断响应:对系统内部(运算溢出、非法指令)和外部(打印机就绪,键盘输入)的中断暂停当前程序处理,转而处理中断时间,处理完毕后再恢复原程序执行。

CPU组成

CPU由以下部件组成,通过内部总线进行连接

  • 运算器:
    • 算术逻辑单元ALU:执行所有的算术运算(加减乘除)和逻辑运算(与、或、非)。
    • 累加寄存器AC:主要存放ALU运算的结果,部分指令也可能作为源操作数的来源。
    • 数据缓存寄存器DR:作为主存储器和外设的数据缓冲,暂时存放从内存中取出的指令和数据
    • 状态寄存器PSW:记录ALU运算结果的状态标志(如:结果为零 Zero/ Z、结果为负 Negative/ N、溢出 Overflow/ V、进位 Carry/ C、奇偶校验 Parity/ P等)。
  • 控制器:协调和控制整个CPU及整个计算机的操作
    • 指令寄存器IR:存放当前正在执行的指令本身。
    • 程序计数器PC:存放下一条待执行指令在主存储器的地址,CPU通过修改PC来控制程序的执行流程(顺序、跳转、调用等)。
    • 地址寄存器AR:保存CPU当前访问的内存地址。存放CPU当前访问(读/写)的主存储器的地址
    • 指令译码器ID:对指令寄存器的指令操作码进行解析,确定要执行的操作类型和所需的操作数来源,产生相应的控制信号。
  • 寄存器组:通用寄存器,用于高速暂存数据、地址和运算中间结果。减少对主存的访问。
  • 内部总线:在CPU各个部件之间传输数据、地址和控制信号。

校验码

码距: 两个编码。从A码 → B码 需要改变的位数。用于衡量编码的检错/纠错能力,码距越大,纠错能力越强。
如000 - 101码距为2,000-111码距是3

奇偶校验码

在原始数据后添加一位校验位,使整个编码中的1的个数满足奇数(奇校验)或偶数(偶校验)
码距 为 2,只能检查1位错误,不能纠错。

原始数据

奇校验码

偶校验码

10001

100011

100010

11001

110010

110011

CRC循环冗余校验码

通过多项式除法(模2)生成校验码,附加到原始数据后进行传输,可以检测多位错误。
如原数据10110

  1. 生成多项式G(x),(一般题目给出多项式)
    1. 计算步骤
    1. 模2运算
      101100000    ← 补零后的数据
    ⊕ 10011        ← G(x) = 10011 (首位对齐)
    -------------
         1010000    → 异或结果
         10011      ← G(x) 对齐下一个`1`
    -------------
           11100    → 异或结果
           10011    ← G(x) 对齐
    -------------
            1111    → 余数(4位)
    1. 验证
      用相同的G(x)对最后的 10110 1111编码再做一次模2运算,余数为0则传输正确。

    指令系统

    计算机指令由操作码和操作数两部分组成,

    • 操作码决定要执行的具体操作,(如加、减、乘、除、存储、跳转、载入等)。
    • 操作数提供执行指令所需的数据 或者 数据的来源/地址。
      CPU执行指令步骤:
    1. 取指令
      • CPU将程序计数器(PC)当前内容送入地址总线(下一条要执行指令的地址)。
      • CPU根据地址通过地址总线找到对应的指令,存入IR(指令寄存器)
    1. 分析指令
      • 译码器读取IR中的指令,
      • 译码器分析指令的操作码,确定要执行的具体操作。
      • 译码器解析指令的操作数/地址码部分,确定要操作数据的位置
    1. 执行指令
      • 根据译码器确定的操作码和操作数,算术逻辑单元ALU进行运算。将结果写入目标寄存器或目标内存地址
      • 更新程序计数器(PC),执行下一条要执行的指令地址。

    指令寻址方式

    即如何寻找下一条要执行的指令

    1. 顺序寻址方式:指令在内存中连续存放,按顺序执行,程序计数器(PC)自动递增,指向下一条指令的地址
    2. 跳跃寻址方式:下一条指令的地址由当前指令直接给出,程序计数器(PC)更新为新的目标地址,从新地址继续顺序执行(如if/for/函数调用返回等)

    指令操作数的寻址方式

    • 立即寻址: 指令的地址码字段指出的不是地址,而是操作数本身。
    • 直接寻址: 在指令的地址字段中直接指出操作数在主存的地址
    • 间接寻址方式: 指令地址码指向的存储单元存放的是操作数的地址(指针的指针)
    • 寄存器寻址方式: 地址码给出的是存放操作数的寄存器编号。
    • 寄存器间接寻址: 寄存器存放的是操作数在内存中的地址

    指令类型

    CISC: 复杂指令集,兼容性强,指令多,长度可变,由微程序控制技术实现(微码解释复杂指令)。
    RISC:精简指令集,指令少,频率接近,硬布线逻辑控制为主 (直接硬件实现简单指令),增加了通用寄存器

    指令流水线

    将单条指令拆分为多个功能段(如取指、译码、执行、访存、写回),每段由专门硬件执行,实现多条指令的不同阶段同时执行。通过时间重叠提升吞吐率。

    RISC中的流水线技术

    • 超流水线(Super Pipline):把传统的流水线阶段划分的更细,如原来的5级流水线拆分为10级,这样也就可以有更多的指令可以并行执行,可以提高CPU主频,缺点是会增加单条指令的执行延迟,因为要经过更多阶段。
    • 超标量(Super Scalar):同一个处理器芯片内部集成多个执行单元(如多个ALU、多个乘法器、多个加载/存储单元),内装多个流水线同时执行多个处理,时钟频率虽然和一般流水线接近,但是有更小的IPC,以空间换时间。
    • 超长指令字(Very Long Instruction Word ,VLIW):超长指令字和超标量都是20世纪80年代出现的概念,共同点都是要执行多条指令,
      超标量使用硬件实现,超长指令字则是发挥软件的作用,而使硬件简化。 将发现指令间并行性的任务完全交给编译器。

    如执行三条指令1、2、3

    未使用流水线的情况

    取指

    1

    2

    3

    分析

    1

    2

    3

    执行

    1

    2

    3

    使用流水线

    取指

    1

    2

    3

    分析

    1

    2

    3

    执行

    1

    2

    3

    流水线时间计算

    • 流水线周期:指令分为不同段、执行时间最长的一段为流水线周期
    • 流水线执行时间:(流水线周期*指令条数)+(一条指令总执行时间-流水线周期)
    • 流水线吞吐率计算:吞吐率即单位时间内执行的指令条数,指令条数/流水线执行时间。
    • 流水线加速比计算:加速比即使用流水线效率提升多少倍,不使用流水线执行时间÷使用流水线执行时间。

    存储系统

    分级存储体系

    两级存储:cache ⇄ 主存储器,主存储器 ⇄ 辅助存储器
    主要是为了解决 容量、访问速度、成本 三者之间的矛盾
    目标是提供接近最快存储器的速度、最慢存储器的容量和价格。
    实现方式→利用局部性原理  
    CPU在执行过程中,倾向于在短时间内集中访问一小块连续或相关的内存地址区域。

    • 时间局部性:一个被访问的数据,在近期可能会被再次访问(如循环变量、函数参数)
    • 空间局部性:相邻的地址很可能会被连续访问(顺序执行的指令,数组)
      Cahce利用局部性原理,将最近可能访问的数据块从主存复制到Cache中。  
      容量:低 → 高 ,速度:高 → 低  
      CPU寄存器 → Cache → 主存储器 → 联机磁盘存储器 → 脱机光盘、磁盘存储器

    Cache

    高速缓存Cache 位于CPU和主存之间,  
    内容是主存的部分拷贝,  
    存储当前最活跃的程序和数据。  
    Cache由控制器和存储器组成,控制器判断CPU访问的数据是否存在,不存在则按照一定的规则算法从主存中提取、替换。  

    映像方式

    地址映射:将 CPU 发出的 主存地址 转换为 Cache 地址 的规则(由硬件自动完成)。

    • 直接映像:将Cache存储器等分成块,主存也等分成块并编号,主存中的块和Cache中的块的对应关系是固定的,即二者块号相同才能命中,地址转换简单但是不灵活,容易造成资源浪费。
    • 全相连映像:同样划分成块并且编号,cache中的任意一块都可以与主存的任意一块对应,主存中的内容可以随意调入cache,只有cache满了才会发生冲突,是最不容易发生冲突的映像方式。
    • 组组相连映像:两种方式的结合,Cache和主存都是先分块后分组,组和组之间采用直接映像,组内块和块之间采用全相连映像。

    替换算法

    替换是因为Cache远远比内存的空间要小,所以需要替换内容以便程序使用,
    替换算法的目标是使Cache尽可能的提高命中率

    • 随机替换算法:随机对当前Cache的内容进行替换
    • 先进先出算法:对最早的Cache内容进行替换
    • 近期最少使用算法: 对近期内使用最少的内容进行替换
    • 优化替换算法:需要先执行一次程序,统计Cache的替换情况,下次执行就可以使用最有效的方式进行替换。

    命中率和平均时间

    Cache因为远比内存容量小,所以会有数据无法命中,要去内存中去取数据,假设读取内存一次的时间为1000ns,命中cache的概率为90%,则CPU读取一次的平均时间为(90% * 1 + 10%*1000)ns,

    磁盘

    磁盘组成

    • 盘面:磁盘一般有多个盘片,每个盘片有正反两个盘面、两个磁头
    • 磁道:每个盘面有多个同心圆,每个同心圆是一个磁道,所有盘片相同半径的磁道组成了一个柱面,
    • 扇区:一个磁道划分为多个扇区,最小的可寻址单元,
    • 磁头:每个盘面一个读写磁头,所有磁头固定在一个移动臂上,因此他们总是处于所有盘面的相同柱面上。
    • 柱面:所有盘面相同半径的同心圆组成的虚拟圆柱体。

    磁盘访问

    磁头需要先寻找到磁道,然后磁盘进行周期旋转,旋转到指定的扇区,才能够读取数据,所以磁盘读取数据会有寻道时间和旋转延迟,
    存取时间 = 寻道时间+旋转延迟+传输时间

    • 寻道时间:移动磁臂到目标磁道所需的时间,磁盘的主要性能瓶颈
    • 旋转延迟:等待磁盘旋转,使目标扇区移动到磁盘下方所需的时间,
    • 传输时间:磁头找到对应扇区后,实际读取或写入的时间。
      因为旋转只能一个方向,控制有限,并且寻道时间一般耗时最长,所以需要对寻道时间进行重点调度,有如下调度算法
      • 先来先服务FCFS:根据访问磁盘请求的先后顺序进行调度。缺点是有可能跨度过大,效率过低。
      • 最短寻道时间SSTF:优先寻道和当前位置最近的访问请求,使得每次寻道时间最短,但可能会产生‘饥饿’问题,即远端的访问请求一直未被处理。
      • 扫描算法SCAN:电梯算法,磁头双向移动,磁头从里到外或者从外到里移动到这个方向再无请求。与电梯类似
      • 单向扫描算法CSCAN:和SCAN相比,只做单向移动,即只会从外到里,或者只会从里到外移动。移动到尽头后再快速返回。

    输入输出

    内存和地址的编址方式

    • 独立编址:内存地址和接口地址是完全独立的两个地址空间,访问数据所使用的指令也完全不同,用于接口的指令只能用于对接口的读/写,编写程序时容易使用和辨认,但是用于接口的指令较少,功能较弱。
    • 统一编址:内存地址和接口地址在同一个地址空间中,原则上用于内存的指令全都可以用于接口,不用区分内存指令和接口指令,但是会导致地址空间分为两部分,经常会导致内存地址不连续。

    外设数据交互方式

    • 程序控制(查询)方式:CPU循环查询外设状态,就绪时读写数据,效率低。
    • 程序中断方式:外设数据传输完毕以后,向CPU发送中断,效率相对较高
          * 中断响应时间:发出中断到开始执行中断程序(ISR)。
          * 中断处理时间:中断程序(ISR)处理时间
          * 中断向量:提供中断程序的入口地址指针表。  
          * 中断嵌套:高优先级中断可抢占低优先级、依赖堆栈保存断点(PC、寄存器)
    • DMA(直接主存存取):CPU完成初始化操作,后续的数据传输过程有DMA控制器完成,在主存和外设之间建立直连的数据通路,传输完成后向CPU发送中断。
      中断响应时机  
    • 在一个总线周期结束后,CPU响应DMA请求开始读取数据  
    • 在一条指令执行结束后,CPU响应中断。

    总线

    计算机设备之间进行传输的公共数据通道。由所有设备共享。

    • 内部总线:芯片内组件通信(如CPU寄存器与ALU算术逻辑单元)
    • 系统总线:板级总线,用于计算机各内各部分连接,CPU/内存/IO控制器
          * 数据总线:双向传输数据
          * 地址总线:指定内存/I/O地址
          * 控制总线:传输命令/状态信号
    • 外部总线:计算机和外设连接的总线,如USB、Thunderbolt、SATA

    评论
    成就一亿技术人!
    拼手气红包6.0元
    还能输入1000个字符
     
    红包 添加红包
    表情包 插入表情
     条评论被折叠 查看
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值