用输出倒逼输入day5 计算机组成与体系结构

用输出倒逼输入day5 计算机组成与体系结构本文主要分为如下几个部分计算机结构存储系统数据传输控制方式总线 CISC 和 RISC 流水线校验码嵌入式计算机组成结构计算机结构如上图所示 是基于冯诺依曼体系架构的计算机硬件系统结构图 其核心是 存储程序 思想

欢迎大家来到IT世界,在知识的湖畔探索吧!

本文主要分为如下几个部分

  • 计算机结构
  • 存储系统
  • 数据传输控制方式
  • 总线
  • CISC和RISC
  • 流水线
  • 校验码
  • 嵌入式
  1. 计算机组成结构
用输出倒逼输入day5 计算机组成与体系结构

计算机结构



欢迎大家来到IT世界,在知识的湖畔探索吧!

如上图所示,是基于冯诺依曼体系架构的计算机硬件系统结构图,其核心是“存储程序”思想。各部件直接协作流程如下:

硬件的组成及其功能:

① CPU(中央处理器)

由运算器和控制器组成。是计算机的大脑:

1) 运算器:执行算术、逻辑运算,处理数据

  • 算术逻辑单元ALU(Arithmetic Logic Unit):数据的算术运算和逻辑运算
  • 累加寄存器AC:通用寄存器,为ALU提供一个工作区,用于暂存数据(在连续的运算中,它可以保存每次运算的中间结果)
  • 数据缓冲寄存器DR:写内存时,暂存指令或数据(协调数据在不同速度部件之间的传输
  • 状态条件寄存器PSW:存状态标识与控制标识(用于记录算术和逻辑运算后产生的状态信息,比如运算结果是否为零、是否产生进位或借位等)

2) 控制器 :向其他部件发控制信号,协调计算机各部分有序工作,比如控制数据读取,指令执行节奏

  • 程序计数器PC(Program Counter):存储下一条要执行指令的地址
  • 指令寄存器IR(Instruction Register):存储即将执行的指令
  • 指令译码器ID(Instruction Decoder):对指令中的操作码字符进行解释
  • 时序部件:提供时序控制信号

② 主存储器(内存)

临时存储数据和程序指令的中转站。CPU运算时,需要先把数据、指令从辅助存储器(如硬盘)调入主存,再快速读写,支撑计算机高效运行

③ 辅助存储器(外存,如硬盘、U盘等)

长期存储数据和程序的仓库,容量大但是读写速度慢于主存。负责保存系统文件。应用程序、用户数据等,断电数据不丢失。

④ 输入设备

向计算机输入信息的工具,比如键盘、鼠标、扫描仪等,把外部信息转为计算机能处理的电信号/数据。

⑤ 输出设备

把计算机处理结果输出给用户,比如显示器、打印机、音响等,将计算机内部数据转换为人类可感知的形式

数据/信号流转逻辑

  • 数据(绿色实线):输入设备采集数据→传入主存暂存→运算器从主存取数据运算→结果存回主存→输出设备从主存取数据展示;辅助存储器与主存间也通过数据通路,实现长期存储与临时调用的交互(如开机时系统程序从硬盘加载到内存 )。
  • 控制(黑色实线):控制器主导,向输入 / 输出设备、主存、运算器发控制信号,指挥 “何时读数据、何时执行运算、何时输出结果”,保障流程有序。
  • 地址或指令(蓝色虚线):控制器生成地址信号,指定主存 / 辅助存储器的读写位置;同时,指令也是计算机执行操作的 “命令”,从主存调至控制器解析,再指挥硬件执行对应动作(如 “加法运算” 指令,控制器会调度运算器、主存协同完成 )。

接下来以不同的打工人的角色来更通俗的进行解释其协作流程:

1. 【CPU:“车间主任 + 工人”】

由 “运算器”(工人,负责算数、比大小等)和 “控制器”(主任,发号施令)组成,是电脑最核心的 “大脑 + 双手”。

控制器:指挥其他部件干活(比如喊 “硬盘,把数据送内存!”“显示器,把结果显示!” )。

运算器:听指挥做计算(加减乘除、图片处理、游戏逻辑运算都靠它 )。

2. 【主存储器(内存):“临时快递站”】

电脑的 “临时仓库”,速度快但断电数据就没。

比如你打开游戏,游戏程序会从硬盘 “搬” 到内存,CPU 直接从这快速拿数据运算,因为从硬盘直接读太慢,内存当 “中转站” 提速。

3. 【辅助存储器(硬盘 / U 盘等):“永久仓库”】

长期存东西的 “大仓库”,容量大(能存无数游戏、电影),但读写慢。

负责 “永久保存”,比如你下载的游戏、拍的照片,关机也不会丢,需要用的时候,再搬到内存给 CPU 用。

4. 【输入设备:“你的传令兵”】

你给电脑发命令的工具,比如:

键盘:你打字、按快捷键,告诉电脑 “我要干嘛”;

鼠标:点图标、拖文件,让电脑执行操作;

还有麦克风(说话输入)、摄像头(拍画面输入),全是 “把你的需求传给电脑” 的角色。

5. 【输出设备:“电脑的传话筒”】

电脑把结果反馈给你的工具:

显示器:把运算后的画面给你看(游戏画面、word 文档);

音箱:把声音结果放出来(音乐、游戏音效);

打印机:把内容变成纸质文件,总之就是 “让你看见 / 听见电脑干了啥”。

【协作流程:像工厂生产】

比如你想 “用 Word 写作文”:

输入:你通过键盘打字(输入设备传数据)→ 数据先到内存(临时存一下);

存储 / 调用:Word 程序本身存在硬盘(辅助存储器),打开时会 “搬” 到内存,和你打的文字数据放一起;

运算 / 控制:CPU 控制器指挥,运算器处理文字(比如加粗、改字体,本质是数据运算 );

输出:处理后的结果从内存送到显示器(输出设备),你就看到排版好的作文啦!

整个流程像 “你指挥传令兵(输入)→ 数据进临时仓库(内存)→ 车间主任(CPU)带工人(运算器)加工 → 结果从临时仓送传话筒(输出)给你看”,辅助仓库(硬盘)负责长期存工具(Word 程序)和成品(作文文件)。

接下来介绍冯・诺依曼结构哈佛结构这两种计算机结构的对比:

用输出倒逼输入day5 计算机组成与体系结构

冯诺依曼VS哈佛结构

层次化存储结构

用输出倒逼输入day5 计算机组成与体系结构

存储类型

核心逻辑是“速度越快,离CPU越近”

计算机存储的核心矛盾是 “速度需求” 和 “成本 / 容量” 的平衡:

  • CPU 运算极快,需要 “身边有高速存储随时待命”(否则 CPU 空等数据,浪费性能);
  • 但高速存储(如寄存器、Cache)成本高、容量小,无法存大量数据;
  • 所以用 “分层结构”:越靠近 CPU 的存储,速度越快、容量越小、成本越高;越远离 CPU 的,速度越慢、容量越大、成本越低。

从上到下,速度递减,容量递增

1. CPU 寄存器(最顶层,速度最快)

  • 地位:CPU “贴身小仓库”,和 CPU 同属一个硬件模块,距离最近。
  • 作用:临时存放CPU当前最急需的数据 / 指令(比如运算中的中间结果、即将执行的指令)。
  • 特点:

速度≈CPU 运算速度(纳秒级,几乎无延迟);

容量极小(一般几十~几百个字节,不同 CPU 核心数量不同);

成本极高(集成在 CPU 芯片内,占用最珍贵的硬件资源)。

2. Cache(高速缓存,第二层)

  • 地位:CPU 和内存之间的 “过渡高速存储”,是一块独立的高速内存芯片(但比主存小、快)。
  • 作用:预判CPU需要的数据 / 指令,提前从内存搬运过来 “待命” 。因为 CPU 访问内存速度慢(相对而言),Cache 当 “快递站”,把常用数据暂存,减少 CPU 等数据的时间。
  • 特点:

速度极快(几纳秒~十几纳秒,比内存快 5~10 倍);

容量小(几 MB~ 几十 MB,远小于内存);

原理:“按内容存取(相联存储器)” → 不是按固定地址找数据,而是根据数据内容匹配(比如找 “数值为 100 的变量”),类似查字典时根据释义找单词,加速数据检索。

cache对于程序员来说是透明的,使用cache改善系统性能的依据是程序的局部性原理(时间局部性和空间局部性)。

时间局部性:指程序浩总的某条指令一旦执行,不久以后该指令可能再次执行,典型原因是由于程序中存在着大佬的循环操作

空间局部性:指一旦程序访问了某个存储单元,不久以后,其附近的存储单元也会被访问,即程序在一段时间内所访问的地址可能集中在一定的范围内,典型情况是顺序执行。

工作集理论:工作集是进程运行时被频繁访问的页面集合。

如果以h代表队Cache的访问命中率,t1表示cache的周期时间,t2表示主存储器周期时间,以读操作为例,使用Cache+主存储器的系统的平均周期为t3,则:t3=h*t1+(1-h)*t2 ,其中1-h称为失效率或者未命中率。

Cache的设计思想是在合理的成本下提高命中率。

3. 内存(主存,第三层,DRAM 动态随机存取存储器)

  • 地位:计算机 “主力临时仓库”,程序运行时的核心存储区(操作系统、打开的软件、正在处理的数据都存在这)。
  • 作用:长期存储?不!是 “临时存放 CPU 当前需要处理的活跃数据 / 程序” 。因为外存(硬盘)太慢,内存当 “中转站”,把外存里的常用数据调过来,供 CPU 快速访问。
  • 特点:

速度中等(几十纳秒~百纳秒级,比 Cache 慢,但比外存快 100 倍以上);

容量较大(几 GB~ 几十 GB,能存得下系统、软件和大量临时数据);

  • 缺点:断电数据丢失(DRAM 需要不断刷新电路保持数据,关机就没了)。

4. 外存(辅存,第四层,硬盘 / 光盘 / U 盘等)

  • 地位:计算机 “长期仓库”,永久存储数据 / 程序的地方(系统安装包、电影、文档、游戏本体都存在这)。
  • 作用:负责 “长期保存”,速度慢但容量大、成本低,作为内存的 “后盾”。程序启动时,把需要的部分从外存加载到内存;数据要长期留存时,从内存存回外存。
  • 特点:

速度慢(硬盘几百微秒~毫秒级,U 盘更慢;和内存比,慢了几千倍);

容量极大(几百 GB~ 几 TB 甚至 PB 级,能存海量数据);

  • 优点:断电数据不丢失(物理存储介质记录数据,比如硬盘的磁信号、U 盘的闪存芯片)。

协作流程(以点击游戏为例):

  • 外存→内存:你点击 “游戏图标”,系统先从硬盘(外存)把游戏程序的必要部分(比如启动界面、基础代码)加载到内存(主存);
  • 内存→Cache:CPU 要执行游戏代码时,Cache 预判需求,从内存把高频使用的数据 / 指令(比如游戏逻辑、角色模型)搬运到 Cache;
  • Cache→寄存器:CPU 真正运算时,把 Cache 里的数据再搬运到寄存器(比如计算角色血量变化、碰撞检测的中间值);
  • 反向存储:如果游戏里你保存了进度,数据会从寄存器→Cache→内存→外存(硬盘),完成 “永久保存”。

总的来说:越靠近 CPU,跑得越快(速度),但力气小(容量小)、成本高;越远离 CPU,跑得越慢,但力气大(容量大)、成本低 。平衡了速度、容量、成本的矛盾。

主存编址

核心理解就是给内存中的每个格子发门牌号

主存(内存)是计算机的临时数据仓库,由大量存储单元组成(每个单元存1字节或多字节数据。类似仓库里的格子)

主存编址就是给这些各自分配唯一的地址编号。让CPU能精准找到存数据的位置或取数据的位置。

简单说:

  • 存储单元 = 仓库格子 最大地址-最小地址+1
  • 地址 = 门牌号
  • 编址 = 给所有格子分配唯一门牌号

地址怎么排?数据如何对应?

地址的本质是二进制编码

主存地址用二进制数表示(计算机硬件的底层只能识别0和1),例如:

32位字体,地址是32位二进制 对应0~2^32 -1大概4GB寻址空间,64位系统,地址是64位二进制

编址单元:按字节还是字?

主存编址有两种基本方式:

  • 按字节编址:

每个字节(8位)分配一个独立地址

灵活,适配字符、证书等不同类型数据(字符占1字节,整数可能占4字节)

  • 按字编址:

每个字(计算机基本数据单元,如32位系统中1字=4字节)分配一个地址

适合纯数值运算场景,单处理字符等1字节数据时会浪费空间

地址映射:程序中的变量,如何对应物理地址?

程序中写的变量(如int a = 10; ),编译后会被分配一个逻辑地址(程序视角的 “门牌号”),但实际运行时,需要映射到物理地址(内存硬件的真实门牌号)。

  • 实模式(早期):逻辑地址 = 物理地址,程序直接操作真实内存(易冲突、不安全)。
  • 保护模式(现代):逻辑地址→通过内存管理单元(MMU) 转换为物理地址,实现:

多程序 “隔离”(每个程序的逻辑地址独立,互不干扰);

虚拟内存(硬盘当 “扩展内存”,程序以为自己有大内存,实际按需映射)。

地址如何分配?如何访问?

1. 地址线与寻址空间

  • 主存与 CPU 通过地址总线(地址线) 传递地址信号。
  • 地址线数量决定最大寻址空间(二进制位数):

地址线数量 = n → 寻址空间 = 2ⁿ 字节。

例:32 根地址线 → 寻址空间 = 2³² 字节 = 4GB;64 根地址线→寻址空间极大(理论上支持 16EB)。

2. 地址分配流程(CPU 读内存)

  • CPU 发地址:CPU 执行load 指令(如读取变量a ),通过地址总线发送物理地址(或逻辑地址经 MMU 转换后)。
  • 内存译码:内存控制器接收地址,通过译码电路解析地址(类似 “门牌号识别”),找到对应存储单元。
  • 数据传输:找到存储单元后,通过数据总线把数据传回 CPU。

3. 编址与数据宽度的适配

内存的数据总线宽度(一次能传多少数据)需与编址方式适配:

  • 按字节编址时,数据总线通常是 8 位、16 位、32 位等(如 32 位 CPU 数据总线 32 位,一次传 4 字节)。
  • 地址与数据总线配合:地址选 “格子”,数据总线传 “格子里的内容”。

类比生活场景:“快递驿站的货架管理”

把主存比作快递驿站的货架,理解编址逻辑:

  • 存储单元 = 货架上的 “格子”(每个格子存 1 个包裹 / 1 字节数据);
  • 地址 = 格子的 “编号”(如 A 区 1 层 001 号);
  • 编址 = 给所有格子规划唯一编号规则(A 区 1 层 001、A 区 1 层 002…);
  • CPU 访问 = 快递员按编号找格子取包裹(地址总线传编号,数据总线拿包裹 / 数据);
  • 虚拟地址映射 = 驿站给用户发 “取件码”(逻辑地址),实际对应货架的真实编号(物理地址),用户不用管真实位置,驿站内部转换。

为什么重要?“编址是内存高效工作的基础”

  • 精准访问:没有编址,CPU 无法找到数据,内存就是 “一盘散沙”;
  • 多任务协同:通过虚拟地址映射,让多个程序 “共存” 内存,互不干扰;
  • 性能优化:合理编址 + Cache(高速缓存)配合,减少 CPU 等待内存的时间,提升整体效率。

磁盘管理-磁盘的基本结构与存取过程

磁盘主要由盘片、磁头、电机、控制电路等部分组成,下面具体展开介绍:

  • 盘片:盘片是磁盘存储数据的介质,一般由金属或玻璃等材料制成,并在表面涂有一层磁性材料。一个磁盘中可能包含多个盘片,它们同轴安装, 盘片两面都可以存储数据。盘片以恒定的速度旋转,常见的转速有 5400 转 / 分钟、7200 转 / 分钟等 。
  • 磁道:盘片表面被划分成许多同心圆,这些同心圆称为磁道(Track)。最外圈的磁道为 0 磁道,向圆心方向磁道编号依次增大。磁道是磁盘上数据存储的基本单位之一,每个磁道能存储的数据量大致相同。
  • 扇区:每个磁道又进一步被等分为若干个弧段,这些弧段就是扇区(Sector)。扇区是磁盘进行数据读写的最小单位,常见的扇区大小是 512 字节或 4096 字节 。
  • 柱面:在具有多个盘片的磁盘中,不同盘片相同位置的磁道构成一个柱面(Cylinder)。柱面是在进行磁盘分区等操作时常用到的一个概念。
  • 磁头:磁头用于读取和写入盘片上的数据,每个盘片的上下两面都对应有一个磁头 。在读写数据时,磁头悬浮在盘片表面,与盘片之间保持极小的间隙(一般为微米级),以避免划伤盘片。
  • 电机:电机用于驱动盘片旋转,同时也会驱动磁头的移动。电机的转速决定了盘片旋转的速度,进而影响磁盘数据的存取速度。
  • 控制电路:控制电路负责协调磁盘各个部件的工作,它接收来自计算机主机的指令,控制磁头的移动、盘片的转速,以及数据的读写和传输等操作。同时,它还负责对磁盘进行错误检测和校正等功能。

磁盘的存取过程

磁盘的存取过程分为数据写入和数据读取两个方面:

数据写入过程

  1. 命令接收:计算机主机通过接口(如 SATA 接口、SAS 接口等)向磁盘的控制电路发送写入数据的命令,命令中包含了要写入数据的逻辑地址(可以通过文件系统映射到磁盘的物理地址,即柱面号、磁头号和扇区号 )以及要写入的数据内容。
  2. 磁头定位:控制电路根据接收到的逻辑地址,计算出对应的物理地址。然后控制电机驱动磁头移动到指定的柱面和磁头位置。这个过程就像是在图书馆里找到存放书籍的书架和书架的某一层。
  3. 数据写入:当磁头定位到正确的位置后,随着盘片的旋转,磁头将数据转换为磁信号,写入到指定的扇区中。这个过程类似于在纸上用特殊的笔记录信息,只不过磁盘是用磁信号来记录数据。

数据读取过程

  1. 命令接收:计算机主机向磁盘的控制电路发送读取数据的命令,命令中包含要读取数据的逻辑地址。
  2. 磁头定位:控制电路同样先将逻辑地址转换为物理地址,然后驱动电机使磁头移动到对应的柱面和磁头位置。
  3. 数据读取:盘片旋转时,磁头感应盘片上的磁信号变化,并将其转换为电信号。这些电信号经过放大、整形等处理后,被转换为计算机能够识别的数据形式,然后通过接口传输回计算机主机 。


读取磁盘数据的时间包含三部分:找磁道时间 找块(扇区)的时间,即旋转延迟时间 传输时间

平均访问时间=平均寻道时间+平均等待时间

磁盘调度算法

  • 先来先服务(FCFS):按请求顺序处理,简单但可能绕远路
  • 最短寻道时间优先(SSTF):优先处理与当前磁头最近的请求,减少寻道距离
  • 扫描算法(SCAN)也叫电梯算法:磁头单向移动,处理路径上所有请求,到端点后反向
  • 循环扫描算法(CSCAN):到端点后不反向

数据传输控制方式:

数据传输控制方式是指在计算机系统中,主机与外部设备之间进行数据传输时所采用的控制策略和方法,常见的数据传输控制方式有程序直接控制方式、中断控制方式、DMA(直接存储器存取)控制方式和通道控制方式,以下为你详细介绍:

1. 程序直接控制方式

  • 工作原理:在这种方式下,CPU 直接参与数据的传输过程。当需要进行数据传输时,CPU 向外部设备发出启动命令,然后不断查询设备的状态,看数据是否准备好。如果设备准备好了,CPU 就进行数据的读写操作;如果没准备好,CPU 就一直等待,直到设备准备好为止。例如,在早期的一些简单输入输出系统中,CPU 向打印机发送打印命令后,会不断查询打印机是否空闲,只有当打印机空闲时,才会将数据发送给打印机进行打印。
  • 优点:实现简单,不需要额外的硬件支持。
  • 缺点:CPU 利用率低,因为在等待设备准备数据的过程中,CPU 一直处于查询等待状态,不能做其他事情,严重浪费了 CPU 的资源;数据传输效率低,传输速度取决于 CPU 的查询频率。

2. 中断控制方式

  • 工作原理:当外部设备准备好数据或者完成数据传输后,会向 CPU 发送一个中断请求信号。CPU 在接收到中断请求后,会暂停当前正在执行的程序,保存现场信息(如寄存器的值等),然后转去执行中断服务程序,进行数据的传输操作。在完成数据传输后,再恢复现场信息,继续执行原来被中断的程序。比如,当键盘有按键按下时,键盘接口会向 CPU 发送中断请求,CPU 响应中断后,读取键盘输入的数据。中断时数据保存在栈中。
  • 优点:提高了 CPU 的利用率,CPU 不需要一直查询设备状态,在设备准备数据的过程中,CPU 可以执行其他程序,只有当设备发出中断请求时,CPU 才会处理数据传输;可以实现 CPU 与外部设备的并行工作,提高了系统的效率。可以实现对突发事件做出快速响应。
  • 缺点:每进行一次数据传输都需要 CPU 执行中断服务程序,会产生一定的系统开销;对于高速数据传输,频繁的中断可能会导致 CPU 应接不暇,影响数据传输的连续性。

3. DMA(直接存储器存取)控制方式

  • 工作原理:DMA 方式有一个专门的 DMA 控制器(DMAC)。在数据传输之前,CPU 先对 DMA 控制器进行初始化,设置好要传输的数据块大小、源地址和目标地址等参数。然后启动 DMA 传输,此时 DMA 控制器接管系统总线,直接在内存和外部设备之间进行数据传输,而不需要 CPU 的干预。当数据传输完成后,DMA 控制器会向 CPU 发送一个中断信号,通知 CPU 数据传输已经结束。例如,在计算机从硬盘读取数据到内存时,就可以使用 DMA 方式,让硬盘直接将数据写入内存,而不需要 CPU 频繁地参与数据搬运。
  • 优点:数据传输速度快,因为不需要 CPU 的干预,减少了 CPU 的处理时间,提高了数据传输效率;可以实现高速设备与内存之间的批量数据传输,适合大数据量的快速传输场景。
  • 缺点:需要专门的 DMA 控制器,增加了硬件成本;DMA 控制器的编程和设置相对复杂,需要一定的技术水平。

4. 通道控制方式

  • 工作原理:通道是一种专用的输入输出处理器,它可以独立地执行通道程序,控制外部设备与内存之间的数据传输。通道程序是由一系列的通道指令组成,这些指令可以完成对设备的启动、停止、数据传输等操作。CPU 只需发出启动通道的命令,然后通道就可以按照通道程序的规定,独立地进行数据传输,在数据传输完成后,通道会向 CPU 发送中断信号。例如,在大型计算机系统中,多个外部设备(如磁盘、磁带等)可以通过通道与内存进行数据传输,通道可以同时管理多个设备的输入输出操作。
  • 优点:进一步提高了 CPU 的利用率,CPU 几乎不需要参与数据传输的具体过程;可以实现多台外部设备的并行操作,大大提高了系统的输入输出能力和效率。
  • 缺点:通道的硬件结构复杂,成本较高;通道程序的设计和管理也比较复杂,需要专业的技术人员进行操作和维护。

总线

一条总线同一时刻仅允许一个设备发送,但允许多个社保接收,所以总线是半双工模型

总线的分类:

  • 数据总线(DB):双向传输,既可以将数据从源部件传送到目标部件,也能反向传输 。
  • 地址总线(AB):用来传输内存单元或 I/O 设备的地址信息,单向传输,只能由 CPU 发出地址信号,其他部件接收
  • 控制总线(CB):用于传输控制信号,协调计算机各个部件的操作。每一根控制总线的信号都是单向传输的,但作为一个整体,控制总线可以实现双向的控制信息传输。

流水线技术

流水线(Pipeline)是计算机体系结构中提升 CPU 执行效率的核心技术,本质是 “将指令执行过程拆解为多个步骤,让多条指令在不同步骤并行处理”,类似工厂的 “装配线”—— 前一条指令在 “拧螺丝” 时,后一条指令可以 “装零件”,大幅缩短总耗时。

非流水线:串行执行,一条指令执行完(如 “取指令→译码→执行→写结果”),才能开始下一条指令,总时间 = 单条指令耗时 × 指令数。

流水线:并行执行,将指令执行拆解为n 个独立步骤(阶段),每个步骤由专门硬件处理,前一条指令进入第 2 步时,后一条指令可进入第 1 步,实现 “重叠执行”。

一条指令的执行过程可以分解为取指、分析和执行三步。

流水线性能指标:

  • 吞吐率:单位时间内完成的指令数
  • 加速比:流水线执行时间 / 非流水线执行时间
  • 效率:实际使用的硬件资源占比

校验码

校验码(Check Code)是一种通过特定算法在数据中加入冗余信息,用于检测或纠正数据传输、存储过程中因噪声、干扰等产生的错误的编码方式。其核心逻辑是:原始数据 + 校验信息→整体传输 / 存储,接收方通过校验信息验证数据完整性

奇偶校验码(最简单的检错码)

在数据末尾添加 1 位 “奇偶位”,使 “整个数据(包括奇偶位)中 1 的个数为奇数(奇校验)或偶数(偶校验)”,通过检查 1 的个数是否符合规则判断错误。

  • 检错能力:只能检测奇数位错误(如 1 位、3 位错误),无法检测偶数位错误,也不能纠错。
  • 优势:实现简单(硬件 / 软件均可),额外开销小(仅 1 位)。

循环冗余校验码(CRC,高效检错码)

通过 “多项式除法” 生成校验位:将原始数据视为二进制多项式,除以一个预设的 “生成多项式”,余数作为校验位。接收方用同样的生成多项式除法,若余数为 0 则数据正确。

计算步骤(以生成多项式G(x)=x³+x+1(对应二进制1011)为例):

  1. 确定校验位长度:生成多项式最高次幂为 3 → 校验位长度 = 3 位。
  2. 原始数据补零:在原始数据后加 3 个 0(如原始数据1010 → )。
  3. 多项式除法(模 2 除法,无进位借位,异或运算):
  4. 传输数据:原始数据 + 校验位 → 1010 011。
  • 检错能力:可检测所有单比特错误、双比特错误、奇数位错误、突发错误(长度≤校验位长度),检错效率远高于奇偶校验。
  • 优势:检错能力强,硬件实现简单(移位寄存器),广泛用于高速传输。

海明码(能纠错的校验码)

在原始数据中插入多个校验位,通过校验位的组合定位错误位置(不仅能检错,还能纠正 1 位错误)。校验位位置需满足:第2ⁿ位(1、2、4、8…)为校验位,其余为数据位。

计算步骤(以 4 位数据D3D2D1D0=1010为例):

  1. 确定校验位数量:设数据位 k=4,校验位 r 需满足2ʳ ≥ k + r + 1 → r=3(2³=8 ≥4+3+1=8)。
  2. 定位数据位和校验位:总长度 = 4+3=7 位,位置 1、2、4 为校验位(P1、P2、P4),位置 3、5、6、7 为数据位(D0、D1、D2、D3):
  3. 位置1(P1)2(P2)3(D0)4(P4)5(D1)6(D2)7(D3)数据??0 ?1 0 1
  4. 计算校验位(每个校验位负责特定位置的奇偶校验):P1:覆盖位置 1、3、5、7(二进制末位为 1 的位置)→ 1(P1)、0(D0)、1(D1)、1(D3)→ 偶校验:1+0+1+1=3(奇数)→ P1=1(使总和为偶数)。P2:覆盖位置 2、3、6、7(二进制倒数第 2 位为 1)→ 1(P2)、0(D0)、0(D2)、1(D3)→ 偶校验:1+0+0+1=2(偶数)→ P2=0。P4:覆盖位置 4、5、6、7(二进制倒数第 3 位为 1)→ 1(P4)、1(D1)、0(D2)、1(D3)→ 偶校验:1+1+0+1=3(奇数)→ P4=1。
  5. 传输数据:P1 P2 D0 P4 D1 D2 D3 → 1 0 0 1 1 0 1。
  • 能力:可检测1 位或 2 位错误,并纠正1 位错误(最常用)。
  • 优势:纠错能力强,适合对数据正确性要求高的场景。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/138189.html

(0)
上一篇 23分钟前
下一篇 8分钟前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信