计算机系统基础知识
计算机系统硬件基本组成
由运算器、控制器、存储器、输入设备和输出设备5大部件组成
CPU(中央处理单元)包括运算器、控制器等,用于数据的加工处理,能完成各种算术、逻辑运算及控制功能。
存储器分为内部存储器和外部存储器。前者速度高、容量小,一般用于临时存放程序、数据及中间结果。而后者容量大、速度慢,可以长期保存程序和数据。
输入设备和输出设备合称为外部设备(简称外设),输入设备用于输入原始数据及各种命令,而输出设备则用于输出计算机运行的结果。
(CPU)中央处理单元
CPU是计算机系统的核心部件,它负责获取程序指令、对指令进行译码并加以执行。
CPU的功能
- 程序控制
CPU通过执行指令来控制程序的执行顺序 - 操作控制
一条指令功能的实现需要若干操作信号配合来完成,CPU产生每条指令的操作信号并将操作信号送往对应的部件,控制相应的部件按指令的功能要求进行操作。 - 时间控制
CPU对各种操作进行时间上的控制,即指令执行过程中操作信号的出现时间、持续时间及出现的时间顺序都需要进行严格控制 - 数据处理
CPU通过对数据进行算术运算及逻辑运算等方式进行加工处理,数据加工处理的结果被人们所利用。所以,对数据的加工处理也是CPU最根本的任务 - 对系统内外部的中断(异常)做出响应,进行相应的处理
CPU的组成
运算器
由算术逻辑单元(ALU)、累加寄存器、数据缓冲寄存器和状态条件寄存器等组成,是数据加工处理部件,用于完成计算机的各种算术和逻辑运算
相对控制器而言,运算器接受控制器的命令而进行动作,即运算器所进行的全部操作都是由控制器发出的控制信号来指挥的,所以它是执行部件
主要功能:
- 执行所有的算术运算,例如加、减、乘、除等基本运算及附加运算
- 执行所有的逻辑运算并进行逻辑测试,例如与、或、非、零值测试或两个值的比较等。
各部件功能:
- 算术逻辑单元(ALU):
是运算器的重要组成部件,负责处理数据,实现对数据的算术运算和逻辑运算- 累加寄存器(AC):
AC通常简称为累加器,它是一个通用寄存器,其功能是当运算器的算术逻辑单元执行算术或逻辑运算时,为ALU提供一个工作区。
例如:
在执行一个减法运算前,先将被减数取出暂存在AC中,再从内存储器中取出减数,然后同AC的内容相减,将所得的结果送回AC中。
运算的结果是放在累加器中的,运算器中至少要有一个累加寄存器- 数据缓冲寄存器(DR):
在对内存储器进行读/写操作时,用DR暂时存放由内存储器读/写的一条指令或一个数据字,将不同时间段内读/写的数据隔离开来。
DR的主要作用为:
- 作为CPU和内存、外部设备之间数据传送的中转站
- 作为CPU和内存、外围设备之间在操作速度上的缓冲
- 在单累加器结构的运算器中,数据缓存寄存器还可兼做为操作数寄存器
- 状态条件寄存器(PSW):
PSW保存由算术指令和逻辑指令运行或测试的结果建立的各种条件码内容,主要分为状态标志和控制标志,例如运算结果进位标志(C)、运算结果溢出标志(V)、运算结果为0标志(Z)、运算结果为负标志(N)、中断标志(I)、方向标志(D)和单步标志等
这些标志通常分别由1位触发器保存,保存了当前指令执行完成之后的状态。通常,一个算术操作产生一个运算结果,而一个逻辑操作产生一个判决
控制器
运算器只能完成运算,而控制器用于控制整个CPU的工作,它决定了计算机运行过程的自动化。它不仅要保证程序的正确运行,而且要能处理异常事件。控制器一般包括指令控制逻辑、时序控制逻辑、总线控制逻辑和中断控制逻辑等几个部分。
指令控制逻辑要完成取指令、分析指令和执行指令的操作,其过程分为取指令、指令译码、按指令操作码执行、形成下一条指令地址等步骤
各部件功能:
- 指令寄存器(IR):
当CPU执行一条指令时,先把它从内存储器取到缓冲寄存器中,再送入IR暂存,指令译码器根据IR的内容产生各种微操作指令,控制其他的组成部件工作,完成所需的功能- 程序计数器(PC):
PC具有寄存信息和计数两种功能,又称为指令计数器。程序的执行分两种情况,一是顺序执行,二是转移执行。在程序开始执行前,将程序的起始地址送入PC,该地址在程序加载到内存时确定,因此PC的内容即是程序第一条指令的地址。由于大多数指令都是按顺序来执行的,所以修改的过程通常只是简单地对PC加1。当遇到转移指令时,后继指令的地址根据当前指令的地址加上一个向前或向后转移的位移量得到,或者根据转移指令给出的直接转移的地址得到- 地址寄存器(AR):
AR保存当前CPU所访问的内存单元的地址。由于内存和CPU存在着操作速度上的差异,所以需要使用AR保持地址信息,直到内存的读/写操作完成位置- 指令译码器(ID):
指令包含操作码和地址码两部分,为了能执行任何给定的指令,必须对操作码进行分析,以便识别所完成的操作。指令译码器就是对指令中的操作码字段进行分析解释,识别该指令规定的操作,向操作控制器发出具体的控制信号,控制各部件工作,完成所需的功能。
时序逻辑控制要为每条指令按时间顺序提供应有的控制信号。总线逻辑是为多个功能部件服务的信息通路的控制电路。中断控制逻辑用于控制各种中断请求,并根据优先级的高低对中断请求进行排队,逐个交给CPU处理
寄存器组
寄存器组可分为专业寄存器和通用寄存器。运算器和控制器中的寄存器是专用寄存器,其作用是固定的。通用寄存器用途广泛并可由程序员规定其用途,其数目因处理器不同有所差异
多核CPU
核心又称内核,是CPU最重要的组成部分。CPU中心那块隆起的芯片就是核心,是由单晶硅以一定的生产工艺制造出来的,CPU所有的计算、接收/存储命令、处理数据都由核心执行。各种CPU核心都具有固定的逻辑结构,一级缓存、二级缓存、执行单元、指令级单元和总线接口等逻辑单元都会有合理的布局。
多核即在一个单芯片上面集成两个甚至更多个处理器内核,其中,每个内核都有自己的逻辑单元、控制单元、中断处理器、运算单元,一级Cache、二级Cache共享或独有,其部件的完整性和单核处理器内核相比完全一致。
CPU的主要产商AMD和Intel的双核技术在物理结构上有所不同。AMD将两个内核做在一个Die(晶元)上,通过直连架构连接起来,集成度更高。Intel则是将放在不同核心上的两个内核封装在一起,因此将Intel的方案称为“双芯”,将AMD的方案称为“双核”。从用户端的角度来看,AMD的方案能够使双核CPU的管脚、功耗等指标跟单核CPU保持一致,从单核升级到双核,不需要更换电源、芯片组、散热系统和主板,只需要刷新BIOS软件即可。
多核CPU系统最大的有点(也是开发的最主要目的)是可满足用户同时进行多任务处理的要求。
单核多线程CPU是交替地转换执行多个任务,只不过交替转换地时间很短,用户一般感觉不出来。如果同时执行的任务太多,就会感觉到“慢”或者“卡”。而多核在理论上则是在任何时间内每个核执行各自的任务,不存在交替问题。因此,单核多线程和多核(一般每核也是多线程的)虽然都可以执行多任务,但多核的速度更快。
虽然采用了Intel超线程技术的单核可以视为是双核,4核可以视为是8核。然而,视为是8核比不上实际是8核的CPU性能。
要发挥CPU的多核性能,就需要操作系统能够及时、合理地给各个核分配任务和资源(如缓存、总线、内存等),也需要应用软件在运行时可以把并行地线程同时交付给多个核心分别处理。
数据表示
校验码
计算机体系结构
计算机体系结构的发展
计算机体系结构分类
- 从宏观上按处理机的数量进行分类,分为单处理系统、并行处理系统与多处理系统和分布式处理系统。
- 单处理系统:利用一个处理单元(CPU)与其他外部设备结合起来,实现存储、计算、通信、输入与输出等功能的系统
- 并行处理与多处理系统:为了充分发挥问题求解过程中处理的并行性,将两个以上的处理机互连起来,彼此进行通信协调,以便共同求解一个大问题的计算机系统
- 分布式处理系统:指物理上远距离而松耦合的多计算机系统。其中,物理上的远距离意味着通信时间与处理时间相比已不可忽略,在通信线路上的数据传输速率要比在处理机内部总线上传输慢得多,这也是松耦合的含义。松耦合意味着各个计算机之间的联系相对较弱。它们不像紧密耦合的多处理机系统那样高度集成和协同工作。在分布式处理系统中,每个计算机都可以独立地处理任务,也可以与其他计算机协作完成任务。它们之间的通信主要是通过网络进行的,而不是像紧密耦合系统那样通过共享内存或高速总线进行。
- 从微观上按并行程度分类,有Flynn分类法、冯泽云分类法和Kuck分类法。
- Flynn分类法:按指令流和数据流的多少分类。
指令系统
一个处理器支持的指令和指令的字节级编码称为其指令集体系结构,不同的处理器支持不同的指令集体系结构,因此,一个程序被编译在一种机器上运行,往往不能在另一种机器上运行
以下是对这段内容的详细解释:
一、指令集体系结构的定义
指令集体系结构(Instruction Set Architecture,ISA)是计算机处理器的一个关键特性。它涵盖了一个处理器所支持的全部指令以及这些指令的字节级编码方式。
指令是处理器能够执行的基本操作命令,比如加法、减法、数据移动、逻辑运算等。而字节级编码则是将这些指令以特定的二进制格式进行表示,以便处理器能够识别和执行。例如,某个特定的加法指令可能被编码为一组特定的二进制数字序列。
二、不同处理器的指令集差异
不同的处理器通常支持不同的指令集体系结构。这是因为处理器的设计目标、应用场景和技术实现各不相同。
设计目标差异:
- 有的处理器可能侧重于高性能计算,因此会设计出复杂而强大的指令集,以支持高效的科学计算、图形处理等任务。例如,某些高端服务器处理器可能具有大量的向量指令和浮点运算指令,以加速大规模数据处理和复杂的数值计算。
- 而有的处理器则可能注重低功耗和嵌入式应用,其指令集可能相对简单,以降低芯片面积和功耗。比如在物联网设备中使用的微控制器,其指令集通常较为精简,以满足有限的资源和低功耗要求。
应用场景差异:
- 不同的应用领域对指令集的需求也不同。例如,在移动设备中,处理器需要支持高效的多媒体处理和图形显示指令,以满足用户对高清视频播放、游戏等应用的需求。而在数据中心的服务器中,处理器则需要支持大规模并行处理和高速网络通信指令,以处理大量的并发请求和数据传输任务。
技术实现差异:
- 处理器的制造工艺、架构设计等技术因素也会影响指令集的选择。例如,一些处理器可能采用复杂的超标量、乱序执行等技术,以提高指令执行的并行度和效率,这就需要相应的指令集支持。而另一些处理器可能采用简单的顺序执行架构,其指令集也会相对简单。
三、程序在不同机器上运行的限制
由于不同的处理器具有不同的指令集体系结构,一个程序在一种机器上编译后,往往不能直接在另一种机器上运行。
编译过程的依赖:
- 当一个程序被编译时,编译器会将高级语言代码转换为特定处理器的机器代码,这个过程是基于目标处理器的指令集进行的。例如,一个用 C 语言编写的程序在一台使用 x86 指令集的计算机上编译,编译器会生成适合 x86 处理器执行的机器代码。
- 如果将这个编译后的程序拿到一台使用 ARM 指令集的机器上运行,由于 ARM 处理器无法理解 x86 机器代码,程序将无法正常运行。
解决方法:
- 为了解决这个问题,可以使用跨平台的编程语言和技术。例如,Java 语言通过 Java 虚拟机(JVM)实现了跨平台运行。Java 程序首先被编译为字节码,这种字节码可以在任何安装了 JVM 的机器上运行,JVM 会根据不同的处理器架构将字节码转换为相应的机器代码。
- 另一种方法是使用交叉编译工具。可以在一种机器上为另一种不同指令集的机器编译程序,这样就可以在目标机器上运行编译后的程序。
综上所述,指令集体系结构是处理器的重要特性,不同的处理器支持不同的指令集体系结构,这导致了程序在不同机器上运行的限制。为了实现跨平台运行,可以使用跨平台的编程语言和技术,或者使用交叉编译工具。
指令集体系结构的分类
按体系结构分类
一、操作数在 CPU 中的存储方式
寄存器存储
- 操作数从主存中取出后保存在 CPU 的寄存器中。寄存器是 CPU 内部的高速存储单元,访问速度非常快。这种方式可以减少对主存的访问次数,提高指令执行的速度。例如,在一些 RISC 架构中,大多数操作数都存储在寄存器中,指令通常只对寄存器中的操作数进行操作。
- 优点:访问速度快,减少了对主存的依赖,有利于提高指令执行效率。
- 缺点:寄存器数量有限,可能需要频繁地在寄存器和主存之间进行数据传输。
主存存储
- 操作数从主存中取出后仍然保存在主存中。这种方式需要频繁地访问主存,速度相对较慢。但是,主存的容量通常比寄存器大得多,可以存储更多的数据。在一些 CISC 架构中,指令可以直接对主存中的操作数进行操作。
- 优点:可以存储大量的数据,不受寄存器数量的限制。
- 缺点:访问速度慢,增加了指令执行的时间。
二、显式操作数的数量
零操作数指令
- 指令中没有显式命名的操作数。这种指令通常是一些控制指令,如跳转指令、中断指令等。它们的操作数通常是隐含的,由 CPU 的状态或程序计数器等决定。
- 例如:JMP(跳转指令),它的操作数是目标地址,但这个地址通常是隐含在指令中的,由程序计数器和指令中的偏移量计算得到。
单操作数指令
- 指令中有一个显式命名的操作数。这个操作数可以是寄存器、主存地址或立即数等。例如,INC(自增指令),它只有一个操作数,表示要自增的寄存器或内存地址。
- 优点:指令简单,执行速度相对较快。
- 缺点:功能相对单一,对于一些复杂的操作可能需要多条指令来完成。
双操作数指令
- 指令中有两个显式命名的操作数。这种指令通常用于算术运算、逻辑运算等操作。例如,ADD(加法指令),它有两个操作数,分别表示要相加的两个数。
- 优点:可以直接完成一些常见的运算操作,提高了编程的效率。
- 缺点:指令长度相对较长,可能会占用更多的存储空间。
三操作数指令及以上
- 指令中有三个或更多显式命名的操作数。这种指令通常用于一些复杂的运算或数据处理操作。例如,在某些高级编程语言中,可能会有三操作数的赋值语句,如 a = b + c。在指令集中,也可能会有类似的指令来实现这种功能。
- 优点:可以完成非常复杂的操作,提高了编程的灵活性。
- 缺点:指令非常复杂,硬件实现难度大,执行速度可能会受到影响。
三、操作数的位置
操作数只能在寄存器中
- 指令的操作数只能是寄存器中的数据。这种方式可以提高指令执行的速度,因为寄存器的访问速度非常快。但是,它也限制了指令的灵活性,因为操作数不能直接来自主存。例如,在一些 RISC 架构中,大多数指令的操作数都只能是寄存器中的数据。
- 优点:访问速度快,有利于提高指令执行效率。
- 缺点:编程时需要频繁地在寄存器和主存之间进行数据传输,增加了编程的复杂性。
操作数可以在主存中
- 指令的操作数可以是主存中的数据。这种方式增加了指令的灵活性,因为操作数可以直接来自主存,不需要先将数据加载到寄存器中。但是,它也降低了指令执行的速度,因为主存的访问速度相对较慢。例如,在一些 CISC 架构中,指令可以直接对主存中的数据进行操作。
- 优点:编程更加灵活,可以直接对主存中的数据进行操作。
- 缺点:访问速度慢,增加了指令执行的时间。
操作数可以在寄存器和主存中混合使用
- 指令的操作数可以是寄存器中的数据,也可以是主存中的数据。这种方式结合了上述两种方式的优点,既可以提高指令执行的速度,又可以增加指令的灵活性。例如,在一些现代的处理器架构中,指令可以根据需要选择操作数的来源,既可以是寄存器,也可以是主存。
- 优点:兼顾了访问速度和编程灵活性。
- 缺点:硬件实现相对复杂,需要更多的控制逻辑来处理不同来源的操作数。
四、指令的操作
算术运算指令
- 包括加法、减法、乘法、除法等指令。这些指令用于对数值型数据进行运算,是指令集中最基本的操作之一。例如,ADD(加法指令)、SUB(减法指令)、MUL(乘法指令)、DIV(除法指令)等。
- 优点:可以完成基本的数学运算,是各种计算任务的基础。
- 缺点:对于一些复杂的数学运算,可能需要多条指令来完成。
逻辑运算指令
- 包括与、或、非、异或等指令。这些指令用于对逻辑型数据进行运算,常用于条件判断、位操作等任务。例如,AND(与指令)、OR(或指令)、NOT(非指令)、XOR(异或指令)等。
- 优点:可以完成逻辑运算,适用于各种逻辑控制任务。
- 缺点:对于一些复杂的逻辑运算,可能需要多条指令来完成。
数据传输指令
- 包括加载(Load)指令和存储(Store)指令。加载指令用于将数据从主存加载到寄存器中,存储指令用于将寄存器中的数据存储到主存中。这些指令是实现数据在 CPU 和主存之间传输的关键。例如,LOAD(加载指令)、STORE(存储指令)等。
- 优点:可以实现数据在 CPU 和主存之间的高效传输。
- 缺点:需要占用一定的指令周期,影响指令执行的效率。
控制转移指令
- 包括跳转(Jump)指令、调用(Call)指令和返回(Return)指令等。这些指令用于改变程序的执行流程,实现程序的分支、循环和函数调用等功能。例如,JMP(跳转指令)、CALL(调用指令)、RET(返回指令)等。
- 优点:可以实现程序的灵活控制,提高编程的效率。
- 缺点:如果使用不当,可能会导致程序的逻辑混乱,难以调试。
五、操作数的类型与大小
整数类型
- 操作数可以是整数类型的数据,包括有符号整数和无符号整数。整数类型的操作数在计算机中广泛应用于各种数值计算和逻辑控制任务。例如,在加法指令中,操作数可以是整数类型的数据,用于对两个整数进行相加。
- 优点:整数类型的数据在计算机中表示简单,运算速度快。
- 缺点:对于一些需要高精度计算的任务,整数类型的数据可能不够精确。
浮点数类型
- 操作数可以是浮点数类型的数据,用于表示实数。浮点数类型的操作数在科学计算、图形处理等领域中广泛应用。例如,在乘法指令中,操作数可以是浮点数类型的数据,用于对两个实数进行相乘。
- 优点:可以表示实数,具有较高的精度。
- 缺点:浮点数的运算速度相对较慢,硬件实现也比较复杂。
字符类型
- 操作数可以是字符类型的数据,用于表示文本信息。字符类型的操作数在文本处理、数据库管理等领域中广泛应用。例如,在比较指令中,操作数可以是字符类型的数据,用于比较两个字符串的大小。
- 优点:可以表示文本信息,方便进行文本处理。
- 缺点:字符类型的数据通常需要占用一定的存储空间,而且字符的比较和处理相对复杂。
其他类型
- 除了上述几种常见的类型外,操作数还可以是其他类型的数据,如布尔类型、指针类型等。这些类型的数据在特定的应用场景中具有重要的作用。例如,在条件判断指令中,操作数可以是布尔类型的数据,用于判断条件是否成立。
- 优点:可以满足不同应用场景的需求。
- 缺点:不同类型的数据需要不同的处理方式,增加了硬件设计和编程的复杂性。
按暂存机制分类:
根据在CPU内部存储操作数的区别,可以把指令集体系分为3类:
堆栈、累加器和寄存器组
通用寄存器的关键性优点是编译程序能有效地使用寄存器,无论是计算表达式地值,还是从全局地角度使用寄存器来保存变量的值。在求解表达式时,寄存器比堆栈或者累加器能提供更加灵活的次序。更重要的是,寄存器能用来保存变量。当变量分配给寄存器时,访存流量就会减少,程序运行就会加速,而且代码密度也会得到改善。用户可以用指令集的两个主要特征来区分GPR体系结构。第一个是ALU指令有两个或三个操作数。在三操作数格式中,指令包括两个源操作数和一个目的操作数;在二操作数格式中,有一个操作数既是源操作数又是目的操作数。第二个是ALU指令中有几个操作数是存储器地址,对于典型的ALU指令,这个数可能在1~3之间。
CISC和RISC
阵列处理机、并行处理机和多处理机
并行性包括同时性和并发性。其中,同时性是指两个或两个以上的事件在同一时刻发生,并行性是指两个或两个以上的事件在同一时间间隔内连续发生。
从计算机信息处理的步骤和阶段的角度看,并行处理可分为如下几类:
- 存储器操作并行
- 处理器操作步骤并行(流水线处理机)
- 处理器操作并行(阵列处理机)
- 指令、任务、作业并行(多处理机、分布处理系统、计算机网络)
阵列处理机
阵列处理机将重复设置的多个处理单元(PU)按一定方式连成阵列,在单个控制部件(CU)控制下,对分配给自己的数据进行处理,并行地完成一条指令所规定地操作。这是一种单指令流多数据流计算机,通过资源重复实现并行性
并行处理机
存储结构
存储器的层次结构
计算机系统中可能包括各种存储器,如CPU内部的通用寄存器组、CPU内的Cache(高速缓存)、CPU外部的Cache、主板上的主存储器、主板外的联机(在线)磁盘存储器以及脱机(离线)的磁带存储器和光盘存储器等。不同特点的存储器通过适当的硬件、软件有机地组合在一起形成计算机地存储体系结构。
其中,Cache和主存之间地交互功能全部由硬件实现,而主存与辅存之间地交互功能可由硬件和软件结合起来实现、
存储器的分类
按存储器所处的位置分类
- 内存:
也成为主存,设在主机内或主机板上,用来存放机器当前运行所需要的程序和数据,以便向CPU提供信息。对于外存,其特点是容量小、速度快 - 外存:
也称为辅存,如磁盘、磁带和光盘等,用来存放当前不参加运行的大量信息,而在需要时调入内存
按存储器的构成材料分类
- 磁存储器:
磁存储器是用磁性介质做成的,如磁芯、磁泡、磁膜、磁鼓、磁带及磁盘等 - 半导体存储器:
根据所用元件又可分为双极型和MOS型;根据数据是否需要刷新又可分为静态和动态两类 - 光存储器:
利用光学方法读/写数据的存储器,如光盘
按存储器的工作方式分类
- 读/写存储器(RAM):
它指既能读取数据也能存入数据的存储器 - 只读存储器:
工作过程中仅能读取的存储器,根据数据的写入方式,这种存储器又可细分为ROM、PROM、EPROM和EEPROM等类型- 固定只读存储器(ROM):
这种存储器是在厂家生产时就写好数据的,其内容只能读出,不能改变。一般用于存放系统程序BIOS和用于微程序控制 - 可编程的只读存储器(PROM):
其中的内容可以由用户一次性地写入,写入后不能再修改 - 可擦除可编程的只读存储器(EPROM):
其中的内容既可以读出,也可以由用户写入,写入后还可以修改。改写的方法是写入之前先用紫外线照射15~20分钟以擦去所有信息,然后再用特殊的电子设备写入信息 - 电擦除可编程的只读存储器(EEPROM):
与EPROM相似,EEPROM中的内容既可以读出,也可以进行改写。只不过这种存储器是用电擦除的方法进行数据的改写 - 闪速存储器(Flash Memory):
简称闪存,闪存的特性介于EPROM和EEPROM之间,类似于EEPROM,也可使用电信号进行信息的擦除操作。整块闪存可以在数秒内删除,速度远快于EPROM
- 固定只读存储器(ROM):
按访问方式分类
按访问方式可分为按地址访问的存储器和按内容访问的存储器
按寻址方式分类
按寻址方式可分为随机存储器、顺序存储器和按内容访问的存储器。
- 随机存储器(RAM):
这种存储器可对任何存储单元存入或读取数据,访问任何一个存储单元所需的时间都是相同 - 顺序存储器(SAM):
访问数据所需要的时间与数据所在的存储位置相关,磁带是典型的顺序存储器 - 直接存储器(DAM):
介于随机存取和顺序存取之间的一种寻址方式。磁盘是一种直接存取存储器,它对磁道的寻址是随机的,而在一个磁道内则是顺序寻址
相联存储器
相联存储器是一种按内容访问的存储器。其工作原理就是把数据或数据的某一部分作为关键字,按顺序写入信息,读出时并行地将关键字与存储器中的每一单元进行比较,找出存储器中所有与关键字相同地数据字,特别适合于信息地检索和更新。
其中,输入检索寄存器用来存放要检索的内容(关键字),屏蔽寄存器用来屏蔽那些不参与检索的字段,比较器将检索的关键字与存储体的每一单元进行比较。为了提高速度,比较器的数量应很大。对于位比较器,应每位对应一个,应有$ 2^m×N $个,对于字比较器应有$ 2^m $个。匹配寄存器用来记录比较的结果,它应有$ 2^m $个二进制位,用来记录$ 2^m $个比较器的结果,1为相等(匹配),0为不相等(不匹配)
以下是对这句话的详细解释:
一、位比较器
定义与作用
- 位比较器是用于比较两个数字在每一位上的大小关系的逻辑电路。它通常接收两个输入数字,每个数字由若干位组成,并逐位进行比较,以确定两个数字的大小关系或是否相等。
数量计算
假设有两个数字,每个数字有 $m$ 位。对于每一位,都需要一个位比较器来比较该位上的两个数字。
由于每个数字的每一位都需要一个比较器,所以对于两个数字,总共需要 $2m$ 个位比较器。
如果有 $N$ 对这样的数字需要进行比较,那么总共需要的位比较器数量就是 $2m×N$。
例如,假设有两个 4 位数字需要比较,那么总共需要 $2×4 = 8$ 个位比较器。如果有 3 对这样的 4 位数字需要比较,那么总共需要 $2×4×3 = 24$ 个位比较器。
二、字比较器
定义与作用
- 字比较器是用于比较两个完整的数字(字)的大小关系或是否相等的逻辑电路。它通常接收两个输入数字,并综合考虑所有位的信息来确定两个数字的整体大小关系。
数量计算
对于有 $m$ 位的数字,只需要一个字比较器就可以比较两个这样的数字。
因为字比较器是对整个数字进行比较,而不是逐位比较,所以无论有多少对数字需要比较,对于特定位数的数字,只需要 $2^m$ 个不同状态的字比较器来覆盖所有可能的输入组合。
例如,对于 4 位数字,有 $2^4 = 16$ 种不同的输入组合,所以只需要 16 个不同状态的字比较器就可以比较所有可能的 4 位数字对。
综上所述,位比较器和字比较器在数量上的差异主要是由于它们的比较方式不同。位比较器逐位比较,所以数量与数字的位数和比较的对数有关;而字比较器对整个数字进行比较,数量只与数字的位数有关。
相联存储器可用在高速缓冲存储器中,在虚拟存储器中用来作为段表、页表或快表存储器,用在数据库和知识库中
高速缓存
高速缓存用来存放当前最活跃的程序和数据,其特点是:位于CPU和主存之间;容量一般在几千字节到几兆字节之间;速度一般比主存快5~10倍,由快速半导体存储器构成;其内容是主存局部域的副本,对程序员来说是透明的。
高速缓存的组成
高速缓存(Cache)、主存(Main Memory)与CPU的关系:
Cache存储器部分用来存放主存的部分拷贝(副本)信息。控制部分的功能是判断CPU要访问的信息是否在Cache存储器中,若在即为命中,若不在则没有命中。命中时直接对Cache存储器寻址;未命中时,要按照替换原则决定主存的一块信息放到Cache存储器的哪一块里。
现代CPU中Cache分为了多个层级:
高速缓存中地址映像方法
在CPU工作时,送出的是主存单元的地址,而应从Cache存储器中读/写信息。这就需要将主存地址转换成Cache存储器的地址,这种地址的转换称为地址映像。
Cache的地址映像有如下三种方法:
直接映像:
直接映像是指主存的块与Cache块的对应关系是固定的。在这种映像方式下,由于主存中的块只能存放在Cache存储器的相同块号中,因此,只要主存地址中的主存区号与Cache中记录的主存区号相同,则表明访问Cache命中。一旦命中,由主存地址中的区内块号立即可得到要访问的Cache存储器中的块,而块内地址就是主存地址中给出的地位地址。
直接映像方式的优点是地址变换很简单,缺点是灵活性差。例如,不同区号中块号相同的块无法同时调入Cache存储器,即使Cache存储器中有空着的块也不能利用