中央处理器

CPU的功能和组成 CPU的功能 CPU是计算机的核心部件,其基本功能包括: 指令控制:从存储器取出指令,译码并执行。 操作控制:产生微操作信号,驱动各部件执行指令。 时间控制:为每条指令提供时序节拍。 数据加工:通过ALU对数据进行算术/逻辑运算。 中断处理:响应外部/内部中断,切换进程。 CPU的基本组成 CPU主要由运算器、控制器、寄存器组和内部总线组成。控制器包括程序计数器(PC)、指令寄存器(IR)、指令译码器、时序产生器和控制逻辑(微程序或硬布线)。 CPU中的主要寄存器 程序计数器(PC):存放下一条指令的地址。 指令寄存器(IR):存放当前正在执行的指令。 累加器(ACC):存放中间运算结果。 状态寄存器(PSW/Flag):存放条件标志(C、Z、N、V)和中断允许等状态。 通用寄存器(R0-Rn):存放操作数和地址。 堆栈指针(SP):指向栈顶地址。 基址/变址寄存器:支持多种寻址方式。 操作控制器与时序产生器 操作控制器产生微操作命令序列,分为微程序控制器(存储微指令)和硬布线控制器(组合逻辑)。时序产生器提供时钟信号和节拍信号,控制指令的执行步骤。 指令周期 指令周期的基本概念 指令周期是指CPU从取指令、译码到执行完一条指令所花的时间。一个指令周期通常包含取指周期(取指令)、间址周期(若需取操作数地址)、执行周期、中断周期(若响应中断)。每个周期又由若干时钟周期(T周期)组成。 MOV指令的指令周期 MOV指令(寄存器间或立即数传送)的指令周期:取指→译码→执行(传送数据)。执行周期只需一个时钟周期(寄存器间)。若MOV涉及内存,则需内存读/写周期。 LAD指令的指令周期 LAD(LOAD)从内存读数据到寄存器:取指→译码→计算地址→读内存→写寄存器。执行周期包括地址计算和内存访问,通常需多个时钟周期。 ADD指令的指令周期 ADD加法指令(寄存器-寄存器):取指→译码→ALU计算→写回结果。执行周期为1个时钟周期。若为内存操作数,则需额外访存周期。 STO指令的指令周期 STO(STORE)将寄存器内容写回内存:取指→译码→计算地址→写内存。写内存通常需要1个周期(假设内存写操作)。 JMP指令的指令周期 JMP无条件跳转:取指→译码→计算目标地址→将目标地址写入PC。执行周期短。条件跳转还需根据标志位决定是否修改PC。 用方框图语言表示指令周期 方框图语言以矩形框表示操作(如“取指令”)、菱形框表示判断(如“是否需要间址”),描述指令周期流程。可以清晰展示微操作序列和时序关系。 时序产生器和控制方式 时序信号的作用和体制 时序信号为CPU各部件提供同步节拍。常见体制:单节拍(所有操作在一个时钟周期完成,限于低速)、多节拍(每条指令分多个时钟周期)、异步(无统一时钟,应答方式)。 时序信号产生器 时序产生器由晶体振荡器(产生主频时钟)、分频器、节拍发生器(环形计数器或分频逻辑)组成。产生时钟周期(T1, T2…)、机器周期(M周期)、指令周期等信号。 控制方式 控制方式指CPU如何发出微操作命令: 同步控制:所有指令使用固定长度的时钟周期。简单但效率低。 异步控制:每条指令或微操作采用应答方式,速度较快但控制复杂。 联合控制:大部分指令同步,少数复杂指令异步扩展。 微程序控制器 微程序控制原理 微程序控制将机器指令(宏指令)解释为一串微指令序列。控制存储器(ROM或RAM)存放微程序。执行指令时,微地址生成器根据指令操作码产生微地址,逐条读取微指令,每个微指令产生一组微操作控制信号。微指令格式分为水平型(一个时钟周期执行多个微操作)和垂直型(类似于机器指令的微指令)。 微程序设计技术 微程序设计技术包括:微指令编码(直接编码、字段直接编码、字段间接编码)、微地址形成(增量、多路转移、下址字段)、微程序顺序控制、微程序设计语言等。现代CPU的微程序常采用加标签的控制存储和分支逻辑。 硬布线控制器 硬布线控制器由组合逻辑电路(门电路、触发器)构成,直接根据指令操作码、时序节拍和状态条件产生控制信号。速度比微程序控制器快,但指令集复杂时逻辑设计极为复杂,不易修改。RISC处理器多采用硬布线控制(也有少数RISC使用微程序)。CISC的早期如8086使用微程序,后来逐步混合。 流水CPU 并行处理技术 并行处理技术包括:指令流水线(时间并行)、多发射(超标量)、多核(空间并行)。流水线将指令执行分解为若干阶段(取指、译码、执行、访存、写回),多个指令重叠执行。 流水CPU的结构 经典五级流水线:IF(取指令)、ID(指令译码/读寄存器)、EX(执行/地址计算)、MEM(访存)、WB(写回)。流水线寄存器(IF/ID、ID/EX、EX/MEM、MEM/WB)用于传递数据和控制信号。流水线需要处理结构冒险、数据冒险和控制冒险。 流水线中的主要问题 结构冒险:资源冲突,如指令和数据共用同一存储器。解决:哈佛结构(指令/数据分离)、增加资源。 数据冒险:后一条指令依赖前一条指令的结果。解决:转发(旁路)、插入气泡(停顿)、编译优化。 控制冒险:分支指令改变PC,导致流水线冲刷。解决:分支预测(静态/动态)、延迟槽(早期RISC)。 现代流水线深度可达10-20级(如Intel Core)。 RISC CPU RISC机器的特点 前面已述。RISC通常采用流水线、单周期指令、LOAD/STORE结构、大量寄存器。典型RISC处理器有ARM、MIPS、RISC-V、PowerPC(早期)等。 RISC CPU实例 ARM Cortex-A系列:多级流水线(通常13级或更少),支持超标量、乱序执行。RISC-V是一个开源指令集,设计简洁,适合教育和嵌入式。 动态流水线调度 动态调度由硬件(如Tomasulo算法)在运行时重排指令顺序,减少数据冒险造成的停顿。需要保留站、重排序缓冲(ROB)和寄存器重命名技术。常见于高性能处理器(Intel Core、AMD Zen)。与之相对的是静态调度(编译器优化)。

September 3, 2025 · 1 min · farmer3-c

指令系统

指令系统的发展与性能要求 指令系统的发展 早期计算机指令非常简单(如单地址、零地址指令)。随着硬件发展和应用需求,指令系统从基本算术逻辑扩展至浮点运算、字符串处理、多媒体(SIMD指令)、加密等。出现了复杂指令集计算机(CISC)和精简指令集计算机(RISC)两种设计哲学。CISC(如x86)指令丰富,便于编程但实现复杂;RISC(如ARM、MIPS)指令精简、规整,易于流水线和高频实现。 指令系统的性能要求 指令系统应满足:完整性(覆盖所有必要操作)、规整性(指令格式简单,寻址方式一致)、高效性(常用指令执行快)、兼容性(软件向前兼容)、可扩展性(便于增加新指令)。此外,还需要支持高级语言、操作系统和并发编程。 低级语言与硬件结构的关系 机器语言(二进制)和汇编语言(助记符)直接对应机器指令,与硬件结构(寄存器、ALU、总线等)紧密相关。程序员通过低级语言可以直接控制硬件资源,但编程效率低。高级语言通过编译或解释转换为目标机器指令,抽象层次更高。 指令格式 操作码 操作码(Opcode)指定指令要执行的操作(如ADD、MOV)。操作码长度可以是定长(便于译码,如RISC通常32位固定长度)或变长(如x86,1-15字节,节省空间但译码复杂)。操作码设计常采用扩展操作码技术,通过预留码点扩展指令数量。 地址码 地址码字段指明操作数的来源和结果的去向。根据地址码数量,指令可分为三地址、二地址、一地址、零地址(如堆栈机)。例如:ADD R1, R2, R3 (R1←R2+R3)为三地址;ADD R1, R2 (R1←R1+R2)为二地址;ADD R1 (ACC←ACC+R1)为一地址。 指令字长度 指令字长度可以是定长(如ARM的32位)或变长(如x86的1-15字节)。定长指令便于取指和译码,适合流水线;变长指令代码密度高,节省内存。现代处理器常采用混合方式:主流RISC为定长32位,CISC使用变长,但在内部转换为类似RISC的微操作。 指令助记符 助记符(Mnemonic)是汇编语言中表示操作码的英文缩写,如ADD、SUB、MOV、JMP。便于记忆和编写。操作数通常使用寄存器符号(如EAX)或立即数、内存地址表达式。 指令格式举例 ARM 32位指令:例如 ADD r0, r1, r2(机器码:E0810002,其中[31:28]条件码,[27:25]为00,[24:21]操作为0100,[20]为S位等)。 x86指令:变长,例如 89 C8 表示 MOV eax, ecx。 操作数类型 一般的数据类型 常见操作数类型:整数(字节、半字、字、双字)、浮点数(单精度/双精度)、字符(ASCII/Unicode)、逻辑数(布尔值)、指针(地址)。 Pentium数据类型 英特尔x86支持:字节(8位)、字(16位)、双字(32位)、四字(64位)、双四字(128位,用于SSE)、10字节扩展浮点数(80位)。也支持BCD(二进制编码十进制)和打包的SIMD数据。 Power PC数据类型 PowerPC(RISC)支持:字节、半字(16位)、字(32位)、双字(64位)。浮点类型为单精度和双精度。支持对齐访问。 指令和数据的寻址方式 指令的寻址方式 指令的寻址即确定下一条指令的地址。顺序执行时,指令地址由程序计数器(PC)自动递增;跳转指令通过偏移量(相对寻址)或绝对地址改变PC值。 操作数基本寻址方式 常见寻址方式: 立即寻址:操作数直接包含在指令中(如 ADD R1, #5)。 寄存器寻址:操作数存放在寄存器中(如 ADD R1, R2)。 直接寻址:指令给出内存地址(如 ADD R1, [1000])。 间接寻址:指令给出存放地址的寄存器或内存单元(如 ADD R1, [R2])。 变址寻址:基址寄存器+偏移量(如 ADD R1, [R2 + 10]),适于数组访问。 相对寻址:PC+偏移量,用于转移指令。 基址寻址:基址寄存器+偏移量,常用于重定位。 堆栈寻址:隐含使用堆栈指针(SP)访问栈顶。 寻址方式举例 以ARM为例:LDR R1, [R2, #8](变址)、LDR R1, [R2, R3](寄存器偏移)、LDR R1, label(PC相对寻址)。x86的 MOV eax, [ebx+ecx*4+8] 复杂变址。 典型指令 指令的分类 指令通常分为: 数据传送指令(MOV,LOAD,STORE) 算术运算指令(ADD,SUB,MUL,DIV) 逻辑运算指令(AND,OR,XOR,NOT,移位) 控制转移指令(JMP,BCC(条件分支),CALL,RET) 输入输出指令(IN,OUT) 系统控制指令(NOP,HLT,特权指令) 浮点指令(FADD,FMUL等) SIMD指令(MMX,SSE,AVX,NEON) 基本指令系统的操作 基本指令包括:算术/逻辑、存储器读写、分支、子程序调用/返回、堆栈操作等。例如,一个简单RISC指令集通常包含20-40种指令。 RISC指令系统 RISC(精简指令集计算机)的特点: 指令数量少,每条指令功能简单,执行时间固定(通常单周期)。 指令长度固定,格式规整。 只有LOAD/STORE指令访问内存,其他指令操作数均来自寄存器。 大量通用寄存器(32个或更多)。 硬件实现简单,利于流水线和超标量。 典型RISC:ARM、MIPS、RISC-V。 ARM汇编语言 ARM汇编语言基于ARM指令集(32位/64位)。常见指令:MOV(传送)、ADD/SUB(加减)、LDR/STR(内存读写)、B/BL(分支/带返回分支)、CMP(比较)、条件执行(如ADDEQ)。寄存器:R0-R12通用,R13(SP),R14(LR),R15(PC)。示例程序: 1 2 3 4 5 6 AREA Example, CODE, READONLY ENTRY MOV R0, #5 MOV R1, #3 ADD R2, R0, R1 ; R2 = 8 END ...

September 3, 2025 · 1 min · farmer3-c

存储系统

存储系统概述 存储系统的层次结构 为了解决存储容量、存取速度和价格之间的矛盾,计算机中通常采用多级存储器体系结构,即使用高速缓冲存储器、主存储器和外存储器。CPU能直接访问的存储器称为内存储器,包括高速缓冲存储器和主存储器。CPU不能直接访问外存储器,外存储器的信息必须调入内存储器才能被CPU处理。 高速缓冲存储器-主存 层次:CPU的处理速度比主存的存取速度快。为弥补主存速度的不足,在主存和CPU之间增加一级高速缓冲存储器(Cache)。其特点是速度高而容量小。它所存放的是主存中部分内容的复制,是当前最有可能被CPU访问的信息。 从整体看,Cache-主存层次的存取速度接近于Cache的速度,而容量接近于主存的容量。Cache存储器全部由硬件调度,对程序员是透明的。 从整体看,主存-辅存层次具有接近于主存的速度和接近于辅存的容量。 存储器的分类 按存储介质分 • 半导体存储器:主要有MOS型存储器和双极型存储器两大类。 • 磁表面存储器:在金属或塑料基体上,涂覆一层磁性材料,用磁层存储信息,常见的有磁盘、磁带等。 • 光存储器:采用激光技术访问的存储器。 按存取方式分 • 随机存储器:任何存储单元的内容都能被随机存取,且存取时间和存储单元的物理位置无关。如半导体存储器。 • 顺序存储器:只能按某种顺序来存取,存取时间和存储单元的物理位置有关。如磁带存储器。 磁盘存储器既不像随机存储器那样能随机地访问任一个存储单元,也不像顺序存储器那样完全按顺序存取,而是介于两者之间。存取信息时,第一步指向整个存储器中的某个小区域(磁盘上的磁道);第二步在小区域内顺序检索,直至找到目的地后再进行读/写操作。其存取时间和信息的物理位置有一定关系。 按存储器的读写功能分 • 只读存储器(ROM):存储的内容固定不变,只能读出而不能写入。 • 随机读写存储器(RAM):既能读出又能写入。 按信息的可保存性分 • 易失性存储器:断电后信息即消失的存储器。 • 非易失性存储器:断电后仍能保存信息的存储器。 按在计算机系统中的作用分 • 根据存储器在计算机系统中所起的作用,可分为主存储器、辅助存储器、高速缓冲存储器、控制存储器(用于存放微程序,由ROM构成)。 存储器的编址和端模式 存储器的技术指标 存储容量:存储器所包含的存储单元的总数称为存储容量。存储容量用字数或字节数表示。一个字节定义为8个二进制位,一个字包括2个或4个字节。 存取时间:从启动一次存储器操作到完成该操作所经历的时间。例如:读出时间是指从CPU向主存发出有效地址和读命令开始,直到将被选单元的内容读出为止所用的时间;写入时间是指从CPU向主存发出有效地址和写命令开始,直到信息写入被选中单元为止所用的时间。 存取周期:连续两次访问存储器操作之间所需要的最短时间。一般情况下,存取周期大于存取时间。这是因为对于任何一种存储器,在读写操作之后,总要有一段恢复内部状态的复原时间。 存储器带宽:又称数据传输率,指单位时间内存储器可读写的数据量,用位/秒或字节/秒度量。由存取周期和字长决定。 可靠性:用平均无故障时间来衡量。 其它参数:功耗、价格等。 静态随机存取存储器 目前广泛使用的半导体存储器是MOS型半导体存储器,可以分为静态MOS型存储器(Static RAM)和动态MOS型存储器(Dynamic RAM) 六管SRAM存储元的电路图 $T_3、T_4$相当于负载电阻,$T_1、T_2$构成双稳态触发器。若$T_1$截止,A为高电平,使$T_2$导通,B为低电平,而B的低电平又使$T_1$更加截止;反之,若B为高电平,则A为低电平。 可见该电路有两个稳定状态,且A和B两点电位总是互反的。如果用A点高电平代表 “1”,A点低电平代表 “ 0”,该电路可存储一位二进制数。 $T_5、T_6、T_7和T_8$为控制管。如果某存储元被选中,X、Y地址译码线均处于高电平,使$T_5~T_8$导通,输入输出电路I/O和$\overline{I/O}$分别与A点和B点相连,A点和B点的电平状态就能输出到I/O和$\overline{I/O}$上,完成读操作。 写操作时,如果要写入“1”,在I/O线上输入高电位,在$\overline{I/O}$线上输入低电位,开启$T_5~T_8$四个MOS管把高、低电位分别加在A、B点,使$T_1$管截止,使$T_2$管导通,将“1”写入存储元。如果要写入“0”,在I/O线上输入低电位,在$\overline{I/O}$线上输入高电位,打开$T_5~T_8$,把低、高电位分别加在A、B点,使$T_1$管导通,$T_2$管截止,将“0” 写入存储元。 基本的静态存储元阵列 本例 任何一个 SRAM,都有三组信号线与外部打交道: ①地址线,本例中有 6 条,即 $A_0、A_1、 A_2、 A_3、 A_4、 A_5$,它指定了存储器的容量是 $2^6$=64 个存储单元。 ②数据线,本例中有4 条,即 $I/O_0、 I/O_1、 I/O_2 、 I/O_3$,说明存储器的字长是 4 位,因此存储位元的总数是 64×4=256。 ③控制线, 本例中 $R/\overline{W}$ 控制线, 它指定了对存储器进行读( $R/\overline{W}$ 高电平), 还是进行写( $R/\overline{W}$低电平)。注意,读写操作不会同时发生。 基本的SRAM逻辑结构 SRAM存储器由存储体、地址译码电路、读写电路和控制电路组成。 * 存储体: 存储体是存储单元的集合。 * 地址译码器:CPU要选择某一存储单元,就在地址总线上输出该单元的地址信号给地址译码器,译码器把二进制代码表示的地址转换成电平信号,选中要访问的存储单元。 * 片选与读写控制电路:读写控制线用来控制芯片是进行读操作还是写操作;片选线用来决定该芯片是否被选中。 SRAM读/写时序 存储器容量的扩充 存储器与CPU的连接 存储容量: 半导体存储芯片所能存储的二进制信息位数(单位bit) 可寻址最大范围: $2^k n$ (单位bit,1Byte=8bit) RAM芯片通过地址线、数据线和控制线与外部连接。存储器同CPU的连接就是要完成地址线、数据线和控制线的连接。地址线是单向输入的,数据线是双向的,既可输入也可输出。单个芯片的存储容量往往不能满足要求,需要进行扩展。扩展的方法有:位扩展法、字扩展法、字位同时扩展法。 动态随机存取存储器 DRAM存储元的工作原理 DRAM芯片的逻辑结构 DRAM读/写时序 DRAM的刷新操作 突发传输模式 同步DRAM(SDRAM) 双倍数据率SDRAM(DDR SDRAM) DRAM读/写校验 CDRAM 只读存储器 只读存储器概述 NOR闪存 并行存储器 双端口存储器 多模块交叉存储器 cache存储器 cache基本原理 主存与cache的地址映射 cache的替换策略 cache的写操作策略 Pentium 4的cache组织 使用多级cache减少缺失损失 虚拟存储器 虚拟存储器的基本概念 页式虚拟存储器 段式虚拟存储器和段页式虚拟存储器 虚存的替换算法 存储管理部件 奔腾系列机的虚存组织 存储器模型 虚地址模式 分页模式下的地址转换 ...

September 3, 2025 · 1 min · farmer3-c

运算方法和运算器

数据与文字的表示方法 数据格式 数的机器码表示 字符与字符串的表示方法 汉字的表示方法 校验码 定点加法、减法运算 补码加法 补码减法 溢出概念与检测方法 基本的二进制加法/减法器 定点除法运算 原码除法算法原理 并行除法器 定点运算器的组成 逻辑运算 多功能算术/逻辑运算单元 内部总线 定点运算器的基本结构 浮点运算方法和浮点运算器 浮点加法、减法运算 浮点乘法、除法运算 浮点运算流水线 数据与文字的表示方法 数据格式 计算机中的数据分为数值数据和非数值数据(字符、汉字、图像、声音等)。数值数据在计算机内部采用二进制编码表示,根据小数点位置是否固定,分为定点表示法和浮点表示法。 定点表示法:小数点位置固定不变,分为定点整数(纯整数)和定点小数(纯小数)。定点数通常用补码或原码表示。 浮点表示法:形如 N = M × R^E,其中M为尾数(定点小数),E为阶码(整数),R为基数(通常为2)。IEEE 754标准定义了单精度(32位)、双精度(64位)等浮点数格式。 数的机器码表示 计算机中为了简化运算电路,通常使用以下机器码表示有符号数: 原码:符号位(0正1负)加绝对值。简单但不便于加减运算。 反码:正数同原码,负数符号位不变,其余位取反。主要用于中间计算。 补码:正数同原码,负数反码加1。补码可将减法转化为加法,是现代计算机最常用的有符号整数编码。 移码:在补码基础上加上偏置常数(通常2^(n-1)),用于浮点数的阶码表示。 字符与字符串的表示方法 字符编码采用标准编码方案,如ASCII(美国信息交换标准代码)使用7位或8位二进制表示128个基本字符(英文大小写字母、数字、标点符号、控制字符)。扩展ASCII(ISO-8859)支持西欧语言。Unicode(如UTF-8、UTF-16)统一表示全世界所有字符,支持多语言混排。字符串在内存中通常以连续字节存储,以空字符(’\0’)或长度字段作为结束标志。 汉字的表示方法 汉字编码分为输入码(拼音、五笔等)、机内码(存储编码,如GB2312、GB18030、BIG5、Unicode中的汉字区)、字形码(点阵或矢量字体)。国家标准GB2312包含6763个常用汉字,GB18030兼容GB2312并扩展至7万余汉字。在Unicode中,汉字位于CJK统一表意文字区(U+4E00至U+9FFF)。 校验码 校验码用于检测数据在传输或存储过程中的错误。常见类型: 奇偶校验码:增加一位奇偶位,使整个码字中1的个数为奇数(奇校验)或偶数(偶校验)。只能检测奇数个错误,不能纠错。 海明校验码:通过在数据位之间插入多个校验位,能够检测并纠正一位错误(或者检测两位错)。 循环冗余校验(CRC):将数据视为多项式,除以生成多项式得到余数作为校验码。CRC能检测突发错误,广泛用于网络通信和存储设备。 定点加法、减法运算 补码加法 补码加法的公式:[X+Y]补 = [X]补 + [Y]补 (mod 2^n)。即直接将两个数的补码相加,若最高位产生进位则丢弃该进位(模2^n运算)。正负数均可直接相加,无需特殊处理。例如:X=5(0101),Y=-3(1101),和=2(0010)。 补码减法 补码减法转化为加法:[X-Y]补 = [X]补 + [-Y]补。其中[-Y]补可通过将[Y]补连同符号位一起取反后加1得到。例如:X=5(0101),Y=3(0011),则[-Y]补=1101,相加得0010(即2)。 溢出概念与检测方法 当运算结果超出机器数表示范围时发生溢出。对于补码加减法,溢出检测方法: 双符号位法(变形补码):用两个符号位,如00为正,01为上溢,10为下溢,11为负。结果的两个符号位不同则表示溢出。 单符号位法:比较操作数的符号和结果的符号。若两个正数相加得负数,或两个负数相加得正数,则溢出。进位检测法:最高有效位的进位与符号位的进位不同时溢出。 基本的二进制加法/减法器 一位全加器(FA)是实现加法/减法的基础。它有三个输入:A、B、低位进位Cin;两个输出:和S、进位Cout。逻辑表达式:S = A ⊕ B ⊕ Cin;Cout = AB + (A⊕B)Cin。多个全加器串联构成行波进位加法器(RCA)。减法可通过将减数取反(按位取反后加1,即使用异或门控制)并设置初始进位为1来实现。为提高速度,可采用超前进位加法器(CLA)并行计算进位。 ...

September 3, 2025 · 1 min · farmer3-c

计组概论

计算机的分类 计算机的发展简史 计算机的五代变化 半导体存储器的发展 微处理器的发展 计算机的性能指标 计算机的硬件 硬件组成要素 运算器 存储器 控制器 适配器与输入/输出设备 计算机的软件 软件的组成与分类 软件的发展演变 计算机系统的层次结构 多级组成的计算机系统 软件与硬件的逻辑等价性 计算机的分类 电子计算机从总体上来说分为两大类。一类是电子模拟计算机,模拟计算机的特点是数值由连续量来表示,运算过程也是连续的。另一类是电子数字计算机,数字计算机的主要特点是按位运算,并且不连续地跳动计算。 此外,数字计算机还可根据规模和用途分为巨型机、大型机、小型机、微型机、工作站、嵌入式计算机等类别。巨型机用于科学计算和国家战略任务;微型机(个人计算机)普及最广;嵌入式系统则应用于智能设备、汽车电子等领域。 计算机的发展简史 计算机的五代变化 世界上第一台电子数字计算机是1946年在美国宾夕法尼亚大学制成的ENIAC。这台机器用了18000多个电子管,占地170m²,重量达30吨,而运算速度只有5000次/秒。 自从这台计算机问世70多年来,从使用器件的角度来说,计算机的发展大致经历了五代的变化。 第一代为1946~1957年,电子管计算机。采用电子管作为逻辑元件,磁鼓或磁芯作为存储器,体积庞大、功耗高、可靠性低。主要用于科学计算。 第二代为1958~1964年,晶体管计算机。晶体管代替电子管,体积缩小,功耗降低,速度提高。出现了高级编程语言(如FORTRAN、COBOL),开始应用于商业领域。 第三代为1965~1971年,中小规模集成电路计算机。将多个晶体管集成在一块硅片上,使计算机进一步小型化,运算速度达到每秒数百万次。操作系统和分时系统开始普及。 第四代为1972~1990年,大规模和超大规模集成电路计算机。一片芯片可集成数千至上万个元件。个人计算机(PC)诞生并迅速发展。1971年Intel 4004微处理器标志着微计算机时代的开始。 第五代为1991年开始的巨大规模集成电路计算机。运算速度提高到每秒10亿次以上。由一片巨大规模集成电路实现的单片计算机(系统级芯片,SoC)开始出现。并行处理、多核技术、量子计算等新技术不断涌现。 计算机从第三代起,与集成电路技术的发展密切相关。LSI(大规模集成电路)的采用,一块集成电路芯片上可以放置1000个元件,VLSI(超大规模集成电路)达到每个芯片1万个元件,现在的ULSI(甚大规模集成电路)芯片超过了100万个元件。1965年摩尔观察到芯片上的晶体管数量每年翻一番,1970年这种态势减慢成每18个月翻一番,这就是人们所称的摩尔定律。该定律揭示了集成电路工艺的持续进步,但也面临物理极限的挑战。 半导体存储器的发展 半导体存储器的发展经历了从磁芯存储器到半导体RAM和ROM的转变。20世纪60年代末,半导体存储器开始取代磁芯存储器,成为计算机的主要存储部件。随着集成电路技术的进步,存储容量不断增大,成本不断降低,速度也大幅提升。如今,DRAM(动态随机存取存储器)和SRAM(静态随机存取存储器)广泛应用于主存和高速缓存,闪存(Flash)则成为移动设备和固态硬盘的重要存储介质。近年来,3D NAND、MRAM、ReRAM等新型存储器不断涌现,进一步拓展了存储技术的边界。 微处理器的发展 微处理器是将中央处理器的主要功能集成到一块芯片上的器件。1971年,英特尔公司推出了世界上第一块微处理器4004,4位字长,主频108kHz,开启了微处理器时代。随后,8位微处理器(Intel 8080、Zilog Z80)、16位(Intel 8086/8088、Motorola 68000)、32位(Intel 80386、ARM)、64位微处理器相继问世,性能不断提升,集成度从数千晶体管发展到数百亿晶体管。微处理器的出现极大地推动了个人计算机和嵌入式系统的发展。当前主流微处理器包括Intel Core系列、AMD Ryzen系列、ARM Cortex系列等,广泛应用于从智能手机到超级计算机的各类设备。 计算机的性能指标 衡量计算机性能的主要指标包括: 主频(时钟频率):CPU的核心时钟速率,单位Hz。主频越高,单位时间内能完成的操作越多,但不同架构的CPU不能单纯比较主频。 字长:CPU一次能并行处理的二进制位数,通常为8、16、32、64位。字长影响数据精度和寻址范围。 运算速度:通常用每秒百万条指令(MIPS)或每秒浮点运算次数(FLOPS)表示。现代计算机常用SPEC等基准测试程序综合评估。 存储容量:主存(RAM)容量和辅存(硬盘/SSD)容量。容量越大,可运行的程序和数据越多。 输入输出速度:I/O带宽和响应时间,影响系统的整体运行效率。 其他指标:功耗、可靠性(MTBF)、可用性、可扩展性等。 计算机的硬件 硬件组成要素 计算机硬件主要包括运算器、存储器、控制器、输入设备和输出设备五大部分。它们共同协作,实现数据的输入、存储、运算、控制和输出功能。这些部件通过总线(数据总线、地址总线、控制总线)相互连接,组成完整的硬件系统。 运算器 运算器负责对数据进行算术和逻辑运算,是计算机的“计算核心”。它通常包括算术逻辑单元(ALU)、累加器(ACC)、暂存器、状态寄存器(标志寄存器)等部件。ALU执行加、减、乘、除等算术运算和与、或、非、异或等逻辑运算。运算器的设计对计算机的性能至关重要。 存储器 存储器用于存放程序和数据,分为主存(内存)和辅存(外存)。主存速度快但容量有限,通常由DRAM构成,直接与CPU交换信息;辅存容量大但速度较慢,如硬盘、固态硬盘、光盘等,用于长期保存信息。存储器系统采用层次结构(Cache-主存-辅存)来兼顾速度、容量和成本。 控制器 控制器负责协调和控制计算机各部件的工作,保证程序的正确执行。它通过时序信号和控制信号实现对各部件的管理。控制器从存储器中逐条取出指令,分析指令(译码),然后发出相应的微操作命令序列,驱动运算器、存储器、I/O设备执行指令规定的操作。控制器分为微程序控制器和硬布线控制器两种主要类型。 适配器与输入输出设备 适配器(也称接口或控制器)用于连接主机与各种输入输出设备,如键盘、鼠标、显示器、打印机、磁盘驱动器等,实现数据的输入和输出。适配器负责信号转换、数据缓冲、协议转换和错误处理。常见的I/O接口标准有USB、HDMI、SATA、PCIe等。输入设备将外部信息转换为计算机可识别的电信号;输出设备则将计算机的处理结果转换为人们可感知的形式(如显示、打印、声音)。 计算机的软件 软件的组成与分类 计算机软件分为系统软件和应用软件。 系统软件:包括操作系统(Windows、Linux、macOS等)、编译程序(GCC、LLVM等)、解释程序、数据库管理系统(MySQL、Oracle等)、汇编程序、链接程序等,负责管理硬件资源和为应用软件提供运行环境。 应用软件:用于完成特定的用户任务,如文字处理(Word)、图像编辑(Photoshop)、科学计算(MATLAB)、网页浏览(Chrome)、游戏、财务软件等。 软件的发展演变 软件从最初的机器语言(二进制代码)、汇编语言(符号化机器指令)发展到高级语言(FORTRAN、C、Java、Python等)和面向对象编程,极大地提高了开发效率和程序的可维护性。随着互联网和人工智能的发展,软件的功能和复杂性也在不断提升。软件开发方法也从结构化方法发展到面向对象、组件化、服务化、敏捷开发、DevOps等模式。开源软件的兴起深刻改变了软件产业格局。 ...

September 3, 2025 · 1 min · farmer3-c

计算机组成原理

计算机组成原理 概论 运算方法和运算器 存储系统 指令系统 中央处理器 总线系统 参考 白中英,戴志涛.计算机组成原理 第6版

September 3, 2025 · 1 min · farmer3-c

应用层

应用层是参考模型的最上层,也是距离用户最近的一层,为各式各样的应用定义了通信规则和协同方式,满足不同的应用需求。围绕这个主题,本章主要探讨了以下内容。 (1)应用进程通信方式与套接字编程 客户/服务器模型(C/S):服务器长期运行,被动等待请求;客户主动发起请求,完成服务后断开。优点是集中管理,缺点是服务器可能成为瓶颈。现代 Web、FTP、电子邮件均采用此模型。 套接字(Socket):应用层与传输层的编程接口。原语包括: socket():创建套接字。 bind():绑定本地地址和端口(服务器用)。 listen()(TCP):进入被动监听状态。 accept()(TCP):接受连接请求。 connect()(TCP):主动连接服务器。 send()/recv() 或 write()/read():数据传输。 close():关闭连接。 基于 TCP 的套接字流程:服务器创建→绑定→监听→接受;客户端创建→连接→通信;可靠有序字节流。 基于 UDP 的套接字流程:无需连接,直接使用 sendto()/recvfrom(),发送和接收数据报。 (2)域名系统(DNS) DNS 负责将主机名(如 www.example.com)解析为 IP 地址。域名空间为层次树结构,根域为 ""(点),顶层域(TLD)包括通用域(.com, .org)和国家域(.cn, .uk)等。 域名服务器按层次分工: 根域名服务器:全球 13 组(逻辑上),不直接解析,只指引到 TLD 服务器。 顶级域名服务器:负责特定 TLD 下的域名。 权威域名服务器:负责特定域(如 example.com)的所有记录。 本地域名服务器:ISP 或企业网络提供,缓存解析结果,代表用户发起查询。 解析算法: 递归查询:本地域名服务器代为请求其他服务器,将最终结果返回用户。 迭代查询:本地域名服务器依次询问各服务器(根→TLD→权威),每个服务器返回下一级地址。 DNS 缓存:各层服务器缓存解析结果,降低延迟,但必须设置 TTL 以确保更新。 (3)典型应用层协议 文件传输(FTP):使用两个 TCP 连接:控制连接(端口 21,发送命令)和数据连接(端口 20,传输文件)。支持主动模式(服务器主动连接客户端)和被动模式(客户端连接服务器协商的端口)。 远程登录 TELNET/SSH: TELNET(端口 23):明文传输,不安全。 SSH(端口 22):加密认证,支持远程 shell、文件传输(SFTP)、端口转发。 电子邮件协议: SMTP(简单邮件传输协议)(端口 25):用于邮件客户端到服务器、服务器到服务器之间的邮件发送。仅支持 ASCII 文本,使用 MIME 支持多媒体。 POP3(邮局协议第3版)(端口 110):下载邮件到本地,通常删除服务器上的邮件。 IMAP(互联网消息访问协议)(端口 143):邮件保留在服务器上,支持远程文件夹管理、部分下载。 MIME(多用途互联网邮件扩展):在邮件中传输非 ASCII 内容(图片、音频、附件),通过定义新的内容类型(Content-Type)和编码方式(Base64、QP)。 ...

August 27, 2025 · 1 min · farmer3-c

网络层

网络层是两个核心层之一,其功能是将分组从源主机一路送到目的主机。本章围绕这个功能,探讨网络层的技术和协议。 网络层服务模型 网络层首先探讨了源和目的之间的通信网络的分类和提供的服务: 数据报网络:提供无连接的服务,每个分组(数据报)独立路由,使用 IP 协议。特点:不维护连接状态,分组可能乱序到达。优点:鲁棒性强,适合动态路由。 虚电路网络:提供面向连接的服务,通信前需建立虚电路(如 X.25、ATM、MPLS)。特点:所有分组沿相同路径按序到达,可以预留资源(QoS)。缺点:需要维护连接状态,容错性差(节点故障导致所有连接中断)。 网络层上的协议分为被路由协议(routed protocol)和路由选择协议(routing protocol): 被路由协议:为分组的路由提供所需要的信息,例如 IP 协议提供地址和分组格式。 路由选择协议:用于填充路由表,如 RIP、OSPF、BGP。 IPv4 地址与子网划分 IPv4 地址表示和分类 IPv4 地址长度为 32 位,通常用点分十进制表示(如 192.0.2.1)。最初分为五类(A、B、C、D、E): A 类:首位 0,网络号 8 位,主机号 24 位(范围 0.0.0.0 – 127.255.255.255),但 0 和 127 保留,实际 1–126。 B 类:首位 10,网络号 16 位,主机号 16 位(128.0.0.0 – 191.255.255.255)。 C 类:首位 110,网络号 24 位,主机号 8 位(192.0.0.0 – 223.255.255.255)。 D 类(组播):1110 开头,地址 224.0.0.0 – 239.255.255.255。 E 类(保留):240.0.0.0 – 255.255.255.255。 子网划分与 CIDR IPv4 地址资源按块分配给 ISP,个人用户从 ISP 获取 IP 地址。为了方便管理和节约 IP 地址,使用子网掩码(如 255.255.255.0)将主机号再分为子网号和子网内主机号。**可变长子网掩码(VLSM)**允许不同子网使用不同掩码长度,尽量不浪费地址。 ...

August 27, 2025 · 2 min · farmer3-c

传输层

传输层是承接应用层和网络层的关键一环,传输层基于网络层提供的服务将主机与主机之间的通信封装为端与端之间的通信,实现了两台主机进程之间的数据交付,并且为上层应用屏蔽了复杂的底层网络细节,建立了网络的抽象模型。围绕以上特性,本章探讨传输层使用的技术。 (1)传输层多路复用/分用功能与端到端传输 传输层通过 多路复用 和 多路分用 实现多个应用进程共享网络层服务。 多路复用:发送方传输层将多个应用进程的数据(来自不同套接字)封装成数据段,然后传递给网络层。 多路分用:接收方传输层根据数据段中的端口号,将数据交付给正确的套接字(即相应进程)。 端口:16 位整数(0–65535),用于标识主机上的特定进程。 熟知端口(0–1023):分配给标准服务,如 HTTP(80)、HTTPS(443)、FTP(21)、SSH(22)、DNS(53)。 注册端口(1024–49151):用户应用程序使用,需要向 IANA 注册。 动态/私有端口(49152–65535):客户端临时使用。 套接字(Socket):IP 地址 + 端口号的组合,唯一标识网络中的一个端点。套接字是应用层与传输层之间的编程抽象。 传输层提供两种核心服务模式:无连接的 UDP 和面向连接的 TCP。 (2)UDP(用户数据报协议) UDP 提供无连接、不可靠的数据传输服务,不保证顺序,不进行重传。 特点: 无连接:发送前无需建立连接,每个 UDP 数据段独立处理。 轻量:头部开销小(仅 8 字节),无拥塞控制和流量控制。 支持组播和广播。 应用场景:对延迟敏感、容忍丢包、实时性要求高的场景(如 DNS 查询、VoIP、视频直播、在线游戏)。 UDP 数据段格式: 源端口(2 字节)、目的端口(2 字节)、长度(2 字节,包括头部和数据)、校验和(2 字节,覆盖头部和数据及伪头部)。 校验和计算:包含 UDP 伪头部(源 IP、目的 IP、协议号、UDP 长度),用于检测从网络层到传输层的差错。 典型应用: 远程过程调用(RPC):客户调用远程服务时,UDP 的低延迟适合请求-响应交互。 实时传输协议(RTP):通常运行在 UDP 上,传输音视频媒体流,允许少量丢包。 (3)TCP(传输控制协议) TCP 提供面向连接、可靠、有序的字节流服务。 特点: 面向连接:数据传输前需经过三次握手建立连接。 可靠传输:使用序号、确认、重传保证数据不丢失、不重复、按序到达。 流量控制:基于滑动窗口机制,协调发送速率避免接收方缓存溢出。 拥塞控制:动态调整发送速率,避免网络过载。 全双工通信:支持双向同时传输数据。 TCP 数据段格式: 源端口、目的端口(各 2 字节) 序号(4 字节,本段第一个字节的序号) 确认号(4 字节,期望收到的下一个序号,表示之前的数据都已收到) 数据偏移(4 位,头部长度) 标志位:ACK(确认有效)、RST(复位)、SYN(同步序号)、FIN(终止连接)、URG(紧急指针有效)、PSH(立即推送) 窗口大小(2 字节,接收方给出的剩余缓存空间) 校验和(2 字节,覆盖头部、数据和伪头部) 紧急指针(2 字节,与 URG 配合) 选项(可变长,如最大段大小 MSS、时间戳、窗口缩放因子) 可靠传输机制: ...

August 27, 2025 · 2 min · farmer3-c

链路层

数据链路层的主要功能 数据链路层位于物理层和网络层之间,其主要功能包括: 成帧:将网络层交付的比特流封装成独立的帧,添加帧头和帧尾,以便接收方能识别帧的边界。 差错控制:通过检错码或纠错码检测(或纠正)传输过程中产生的比特错误,并可配合重传机制。 流量控制:协调发送方和接收方的速率,防止接收方缓存溢出。 介质访问控制(MAC):在广播型多路访问链路(如以太网、WiFi)上,决定哪个节点何时占用信道。 链路管理:建立、维护和释放数据链路层的连接(在面向连接的链路中)。 可靠传输:在不可靠的物理链路上,通过确认和重传机制实现数据的可靠交付。 本章对成帧的基本方法进行了详细的描述;针对错误的处理这一数据链路层的重要任务,介绍了检错和纠错的基本原理和典型的编码方法;详细介绍了奇偶检验、循环冗余校验、互联网校验等常用检错码,以及纠1位错的海明码、里所码、低密度奇偶检验等常用纠错码。 成帧的基本方法 成帧是指将原始比特流分割成若干独立的帧,以便接收方能准确提取每个帧的数据。常用方法: 字节计数法:帧头中使用一个字段表示帧的总长度(字节数)。接收方读取长度字段后,就知道从哪里结束。缺点:长度字段本身出错会导致帧同步丢失。 字节填充的标志字节法:使用特殊标志字节(如 FLAG=0x7E)表示帧的开始和结束。如果数据中出现了标志字节,则在其前面插入转义字节(如 ESC=0x7D)。接收方遇到转义字节则删除并还原数据。 比特填充的标志比特法(HDLC 常用):使用标志位序列 01111110 作为帧边界。发送方在数据中连续出现 5 个 1 后自动插入一个 0;接收方连续收到 5 个 1 后,若下一比特为 0 则删除该 0,若为 1 且再下一比特为 0 则视为标志。该方法避免了修改数据内容长度。 物理层编码违例法:利用物理层编码中的“非法”信号作为帧边界(例如曼彻斯特编码中不使用连续的相同电平)。仅适用于特定的物理层编码。 检错与纠错基本原理 检错码:在数据后添加冗余位(校验位),使得接收方能根据校验位判断数据是否出错。常见检错码:奇偶校验、循环冗余校验(CRC)、校验和(Checksum)。检错码无法确定错误位置,只能判断“有/无错误”。 纠错码:添加更多冗余位,使接收方能不仅检测错误,还能定位并纠正一定数量的错误比特。典型纠错码:海明码(纠1位错)、BCH码、里所(Reed-Solomon)码、低密度奇偶检验(LDPC)码。纠错码的编码效率(数据位/总位数)较低,适用于无法重传的场景(如深空通信、实时音频)。 常用检错码详解 奇偶校验:在数据后面附加一个比特,使整个数据中 1 的个数为奇数(奇校验)或偶数(偶校验)。可以检测奇数个比特错误,但不能检测偶数个错误,且无法纠错。 循环冗余校验(CRC):将数据视为多项式,用生成多项式相除,余数作为 CRC 码附加。接收方重新计算并比对余数。可以检测任意长度的大多数突发错误(取决于生成多项式),广泛用于以太网、WiFi、存储设备。 互联网校验和(Internet Checksum):将数据按 16 位字分组,进行二进制反码求和,结果取反。简单高效,用于 IP、TCP、UDP 头部校验。错误检测能力弱于 CRC,但便于在软件中快速计算。 常用纠错码简介 海明码(Hamming Code):通过在数据位之间插入校验位,使得数据位与校验位形成多个奇偶校验组。能够纠正单比特错误,并能检测双比特错误(扩展海明码)。最小码距为 3(或 4)。 里所码(Reed-Solomon, RS):非二进制纠错码,以符号(如 8 位字节)为单位进行编码,非常擅长纠正突发错误。广泛用于光盘、QR 码、卫星通信、数字电视。 低密度奇偶检验码(LDPC):使用稀疏校验矩阵,通过迭代置信传播译码,性能接近香农极限。用于 5G、WiFi 6(802.11ax)、10G 以太网等。 为了实现数据链路层上的可靠传输,本章介绍了利用停-等协议实现流量控制,利用肯定确认与重传机制处理信道上出现差错的情况。此外,为了提高信道利用率,本章介绍了滑动窗口协议的基本思想,在此基础上详细说明了回退 n 帧协议和选择性重传协议的工作原理,并对两者的滑动窗口大小进行了分析。 ...

August 27, 2025 · 2 min · farmer3-c