十进制数-72的8位补码表示是
补码(Two's Complement)是计算机中表示有符号整数最常用的编码方式。理解补码需要先掌握以下概念:
原码(Sign-Magnitude):最高位为符号位,0表示正数,1表示负数,其余位为数值的绝对值的二进制表示。例如,+72的8位原码为 01001000,-72的8位原码为 11001000。
反码(One's Complement):正数的反码与原码相同;负数的反码是在原码的基础上,符号位不变,其余各位取反(0变1,1变0)。
补码(Two's Complement):正数的补码与原码相同;负数的补码是在反码的基础上加1。
补码的核心目的是让计算机可以用同一套加法器来完成加法和减法运算,大大简化了硬件设计。
求负数补码的步骤(方法一:原码→反码→补码):
求负数补码的步骤(方法二:从右向左找第一个1,该1及其右边不变,左边各位取反):这是更快捷的方法,直接对原码操作得补码。
计算过程:
第一步:写出 +72 的8位二进制原码。
72 = 64 + 8 = 2^6 + 2^3 = 01001000(8位,最高位0为正数符号位)
第二步:写出 -72 的8位原码(符号位改为1):11001000
第三步:求反码(符号位不变,数值位取反):10110111
第四步:反码加1得补码:10110111 + 1 = 10111000
验证:10111000的数值位为0111000 = 56,符号位为1(负数),按补码规则:-(128 - 56) = -72,正确。
A. 01001000:最高位为0,表示正数,这是 +72 的原码/补码,而非 -72 的补码。错误。
B. 11001000:最高位为1,表示负数,数值位1001000 = 72,这是 -72 的原码,不是补码。错误。
C. 10110111:这是 -72 的反码,不是补码。反码还需要再加1才能得到补码。错误。
D. 10111000:这是 -72 的补码,计算过程如上。正确。
记住负数补码的求法口诀:"原码取反加一得补码"。步骤为:原码 → 数值位各位取反 → 末位加1。
常见错误陷阱:B选项(11001000)是原码,C选项(10110111)是反码,这两个干扰项专门考查学生是否能区分原码、反码、补码三种编码。
快速验证:一个8位负数补码 X 的真值 = -(256 - X的无符号值)。10111000无符号值 = 128+32+16+8 = 184,则真值 = -(256-184) = -72,验证正确。
第2章 数据的表示和运算 — 2.1节 数值数据的表示,补码表示法。本题考查有符号整数补码编码的基本计算方法,是本章的核心基础知识点。
若传送的是字符C,其ASCII码为1000011,采用偶校验方式传送8位编码,首位增加奇偶校验位后的编码表示是
奇偶校验(Parity Check)是一种最简单的错误检测方法,用于检测数据在传输过程中是否发生了1位的错误。
奇偶校验的基本原理:在原始数据位之外,额外增加一个校验位(Parity Bit),使得整个编码(原始数据 + 校验位)中1的个数满足特定的奇偶性要求。
偶校验(Even Parity):要求整个编码(含校验位)中1的总个数为偶数。校验位的值由此确定:若原始数据中1的个数已经是偶数,则校验位为0;若原始数据中1的个数是奇数,则校验位为1(补充使总数变为偶数)。
奇校验(Odd Parity):要求整个编码中1的总个数为奇数。规则与偶校验相反。
校验位的位置:题目说"首位增加奇偶校验位",即校验位加在最高位(最左边)。
ASCII码:美国信息交换标准码(American Standard Code for Information Interchange),用7位二进制编码表示英文字母、数字和常用符号,共128个字符。字符'C'的ASCII码为67,二进制为1000011。
计算过程:
原始ASCII码:1000011(7位)
统计其中1的个数:第1位=1,第6位=1,第7位=1,共有 3 个1。
采用偶校验,要求加上校验位后1的总数为偶数。当前1的个数为3(奇数),需要使总数变为偶数,因此校验位必须为 1。
校验位加在首位(最高位),所以8位编码为:1 + 1000011 = 11000011。
A. 01000011:校验位为0,加上后1的总数为0+1+1+1=3个(奇数),不满足偶校验要求。错误。
B. 11000011:校验位为1,加上后1的总数为1+1+1+1=4个(偶数),满足偶校验要求。正确。
C. 10000110:这不是在1000011首位加校验位,而是将数据位做了移位或变换,数据内容已改变,不是字符C的编码。错误。
D. 10000111:同C,数据位发生了改变,不是字符C的ASCII编码加首位校验位的形式。错误。
偶校验记忆口诀:"数1的个数,偶数加0,奇数加1",目标是让全部编码中1的总数为偶数。
注意题目说"首位增加",即校验位是最高位(左边第一位),而不是最低位(右边第一位)。
解题步骤:(1) 数原始数据中1的个数 → (2) 判断奇偶 → (3) 确定校验位 → (4) 拼接到指定位置。
第2章 数据的表示和运算 — 2.4节 数据校验码,奇偶校验码部分。本题考查偶校验位的计算方法,是差错检测编码的基础内容。
下列寻址方式中,需要从寄存器中取操作数的是
寻址方式(Addressing Mode)是指指令中指定操作数或操作数地址的方式。CPU执行指令时需要获取操作数,而操作数可能存放在不同的地方,寻址方式就规定了如何找到操作数。
理解每种寻址方式时,关键是弄清楚"操作数在哪里?"这个问题。
常见寻址方式总结:
A. 直接寻址:指令中给出的是操作数的主存地址,CPU需要访问主存才能得到操作数,操作数在主存中而不在寄存器中。错误。
B. 寄存器直接寻址:指令中给出寄存器的编号(如R0、R1等),操作数直接存放在该寄存器内部。CPU从寄存器中读取数据即可,不需要访问主存。这正是"从寄存器中取操作数"。正确。
C. 寄存器间接寻址:虽然名字中有"寄存器",但操作数并不在寄存器中。寄存器中存放的是操作数的主存地址(相当于一个指针),CPU需要以寄存器中的值为地址,再访问一次主存才能得到操作数。操作数在主存中。错误。
D. 相对寻址:操作数地址由PC加偏移量计算得到,操作数存放在主存中,需要访问主存获取。错误。
区分"寄存器直接"和"寄存器间接"的关键:
寄存器直接 = 寄存器里装的是操作数本身(直达目的地)。
寄存器间接 = 寄存器里装的是地址(还需要再去主存找一次)。
类比理解:直接寻址就像朋友直接告诉你答案;间接寻址就像朋友告诉你"去某个地方找答案"。
寄存器直接寻址是速度最快的寻址方式(除立即数外),因为寄存器访问速度远快于主存。
第3章 指令系统 — 3.3节 指令的寻址方式,各种寻址方式的定义和比较。本题是指令系统章节的基础考点,要求能区分各种寻址方式中操作数的来源。
若经过CPU处理后的运算结果为负,则可以反映在条件码寄存器的标志位
条件码寄存器(Condition Code Register,CCR),也称标志寄存器或程序状态字(PSW,Program Status Word),是CPU内部的一个特殊寄存器。它的作用是记录最近一次运算操作的结果状态,供后续的条件判断指令(如跳转指令)使用。
常见的四个标志位(以x86架构为例):
这些标志位对程序控制流至关重要。例如,条件跳转指令"如果结果为负则跳转"会检查SF标志位。
A. ZF(零标志位):ZF反映的是运算结果是否为零。结果为负时,结果不为零,ZF=0,与"结果为负"无直接对应关系。错误。
B. OF(溢出标志位):OF反映的是有符号数运算是否发生了溢出。溢出是指正数+正数得负数,或负数+负数得正数这类异常情况。运算结果为负不代表一定发生了溢出(正常的负数结果不溢出)。错误。
C. SF(符号标志位):SF直接记录运算结果最高位(符号位)的值。在补码表示中,负数的符号位为1,因此当运算结果为负时,SF=1。SF正是用来标记"结果的正负性"的标志位。正确。
D. CF(进位标志位):CF用于无符号数运算,记录最高位是否有进位(加法)或借位(减法)。它与有符号数的正负无关。错误。
四个标志位记忆:ZF=零,SF=符号(正负),OF=有符号溢出,CF=无符号进位/借位。
英文首字母助记:Z(Zero零) S(Sign符号) O(Overflow溢出) C(Carry进位)。
判断"结果为负"用SF;判断"结果为零"用ZF;判断"有符号溢出"用OF;判断"无符号进位"用CF。
第4章 中央处理器 — 4.1节 CPU的功能和基本结构,标志寄存器(条件码寄存器)部分。也涉及第2章 数据的表示和运算中关于运算结果状态的内容。
MIPS处理器的字长为
MIPS(Microprocessor without Interlocked Pipeline Stages)是一种经典的RISC(精简指令集计算机,Reduced Instruction Set Computer)处理器体系结构,由美国斯坦福大学John Hennessy教授于1981年设计,后由MIPS计算机系统公司商业化。
字长(Word Length)是指计算机CPU一次能处理的二进制数据的位数,也是通用寄存器的位数、数据总线的宽度,以及基本数据单元"字(Word)"的大小。字长直接影响计算机的处理能力和寻址范围。
MIPS32是最经典、教材中最常用的MIPS版本,字长为32位。其主要特征:
袁春风教材使用MIPS32作为贯穿全书的示例处理器,学习本课程时MIPS默认指MIPS32(32位版本)。
A. 8位:8位处理器是早期微处理器的典型字长,如Intel 8080。MIPS不是8位处理器。错误。
B. 16位:16位处理器的代表如Intel 8086。MIPS不是16位处理器。错误。
C. 32位:MIPS32(即教材中常用的MIPS处理器)字长为32位,寄存器32位,指令32位。这是本课程标准答案。正确。
D. 64位:确实存在MIPS64版本(字长64位),但教材中讨论的MIPS默认为MIPS32,即32位版本。此选项为干扰项。错误。
MIPS = MIPS32 = 32位。这是本课程(02318计算机组成原理)的标准知识点,凡是题目提到MIPS处理器字长,答案均为32位。
MIPS的"32"就在名字里:MIPS32,字长32位,32个寄存器,指令长度32位,三个"32"一起记。
第3章 指令系统 — MIPS指令集介绍部分;第4章 中央处理器 — MIPS处理器结构。MIPS32是本教材贯穿始终的示例处理器,32位字长是基本背景知识。
采用RAM方式存取信息的存储器是
存储器按照存取方式(Access Method)可以分为以下几类:
RAM(Random Access Memory,随机存取存储器):可以以任意顺序访问任意存储单元,且访问时间与存储单元的物理位置无关,即无论读取哪个地址的数据,所需时间大致相同。RAM既可读又可写(只读型ROM除外)。
SAM(Sequential Access Memory,顺序存取存储器):只能按照数据存储的顺序依次读写,不能跳过中间数据直接访问目标数据。访问时间取决于目标数据的位置。磁带是典型的顺序存取设备。
DAM(Direct Access Memory,直接存取存储器):介于随机和顺序之间。可以先直接定位到目标数据附近的区域(如磁盘的某个磁道),然后在该区域内顺序查找目标数据。硬盘、光盘是典型的直接存取设备。
注意"RAM"在不同语境下的含义:日常口语中"RAM"常指内存条(即主存),但从存取方式的角度,RAM是一种存取方法,主存就是采用这种随机存取方式的存储器。
A. 主存:主存(内存)由DRAM(动态随机存取存储器)或SRAM(静态随机存取存储器)构成,采用随机存取方式,CPU可以直接以地址访问任意存储单元,访问时间固定,是典型的RAM存储器。正确。
B. 硬盘:硬盘是磁性存储设备,读写头需要先移动到目标磁道(寻道),再等待目标扇区转到读写头下方(旋转延迟),然后才能读写数据。这种存取方式是直接存取(DAM),不是RAM方式。错误。
C. 磁带:磁带是顺序存取设备,必须从头开始依次扫描才能找到目标数据,存取时间与数据位置密切相关,是典型的顺序存取(SAM)存储器。错误。
D. 光盘:光盘与硬盘类似,采用直接存取方式(DAM),激光头需要先定位到目标磁道再顺序读取。不是RAM方式。错误。
存取方式三分法:主存=随机存取(RAM),硬盘/光盘=直接存取(DAM),磁带=顺序存取(SAM)。
随机存取的本质:访问时间与地址无关,任意地址等速访问,这是半导体存储器(主存)的特点。
磁盘为什么不是RAM?因为它有机械结构(磁头移动、盘片旋转),访问时间与数据位置有关。
第5章 存储器层次结构 — 5.1节 存储器概述,存储器的分类(按存取方式分类)。本题考查RAM存取方式的概念及其对应的存储器类型。
有一个4MB的主存储器,按字节编址需要地址线
地址线(Address Lines)是计算机总线中专门用于传送内存地址的信号线。地址线的数量决定了CPU能够直接寻址的最大存储空间。
基本原理:n条地址线可以表示 2^n 个不同的地址,即可以寻址 2^n 个存储单元。反过来,要寻址 N 个存储单元,需要 log₂(N) 条地址线。
按字节编址:意味着每个存储单元存放1字节(8位)的数据,每个字节有一个唯一的地址。这是现代计算机最常见的编址方式。
存储容量单位换算:
因此,4MB = 4 × 2^20 B = 2^2 × 2^20 B = 2^22 B,即共有 2^22 个字节,需要 22 条地址线。
计算过程:
存储容量 = 4MB = 4 × 1024 × 1024 B = 4 × 2^20 B = 2^2 × 2^20 B = 2^22 B
按字节编址,共有 2^22 个地址(0 到 2^22 - 1)。
需要的地址线数 n 满足:2^n = 2^22,所以 n = 22。
A. 2条:2条地址线只能寻址 2^2 = 4 个字节,远不够4MB。错误。
B. 4条:4条地址线只能寻址 2^4 = 16 个字节,远不够4MB。错误。
C. 12条:12条地址线能寻址 2^12 = 4096 字节 = 4KB,不够4MB。干扰项:可能有人只计算了4×1024×?的某一步,出现了12这个数字,要注意不能只算一部分。错误。
D. 22条:22条地址线能寻址 2^22 字节 = 4MB,恰好满足要求。正确。
公式:地址线数 = log₂(存储容量字节数)。
常用结论:1KB需10条地址线,1MB需20条,1GB需30条,4MB = 2^22 B 需22条。
快速计算:将容量转换为"2的幂次"形式,幂次就是地址线数。4MB = 4×2^20 = 2^2×2^20 = 2^22,需22条。
第5章 存储器层次结构 — 5.2节 主存储器的基本组成,存储容量与地址线的关系。本题考查地址线数量与寻址空间的对应计算,是存储器章节的基础计算题。
MIPS计算机的汇编指令"and $s1, $s2, $s3"的功能是
MIPS汇编语言是一种低级编程语言,直接对应MIPS处理器的机器指令。了解MIPS汇编指令的格式是学习计算机组成原理的重要内容。
MIPS寄存器命名:MIPS有32个通用寄存器,编号为$0到$31。除数字编号外,还有按功能命名的助记符名称:
MIPS三操作数指令格式:大多数MIPS算术/逻辑指令采用"目的寄存器, 源寄存器1, 源寄存器2"的三操作数格式:
指令格式:op $rd, $rs, $rt
含义:$rd = $rs op $rt(用$rs和$rt进行操作,结果存入$rd)
and指令:按位逻辑与(Bitwise AND)操作,对两个寄存器的每一位分别进行AND运算。
指令解析:and $s1, $s2, $s3
功能:将 $s2 和 $s3 的值按位与,结果存入 $s1,即 $s1 = $s2 & $s3。
A. $s1=$s2 & $s3:操作符是and(按位与),结果存入第一个操作数$s1,源操作数为$s2和$s3。完全正确。正确。
B. $s1=$s2+$s3:操作符错误,这是加法(add指令的功能),而非and指令。错误。
C. $s3=$s1+$s2:操作符错误(是加法不是与),且目的寄存器写错(应为$s1,不是$s3)。两个错误。错误。
D. $s3=$s1 & $s2:操作符正确(是按位与),但目的寄存器写错。MIPS指令中第一个操作数是目的寄存器,是$s1而不是$s3。错误。
MIPS三操作数格式记忆:第一个 = 目的(结果放这里),第二和第三 = 源(从这里取数)。口诀:"第一个是目的,后两个是来源"。
常见MIPS指令对照:add = 加法,sub = 减法,and = 按位与,or = 按位或,nor = 按位或非,slt = 小于则置1。
区分D和A:D中目的寄存器是$s3(最后一个),A中目的寄存器是$s1(第一个)。MIPS规定第一个操作数为目的寄存器。
第3章 指令系统 — MIPS指令集,算术逻辑类指令格式与功能。本题考查MIPS汇编指令的语法格式,重点是理解三操作数指令中操作数的顺序含义。
计算机中的打印机属于
计算机系统的五大经典组成部分(冯·诺依曼体系结构):运算器、控制器、存储器、输入设备、输出设备。
输入设备(Input Device):将外部信息(人的操作、外界数据等)转换为计算机能识别的电信号,送入计算机内部。数据流向:外部世界 → 计算机。常见输入设备:键盘、鼠标、扫描仪、摄像头、麦克风、触摸屏等。
输出设备(Output Device):将计算机内部处理好的数据转换为人类或其他系统可以感知的形式,输出到外部世界。数据流向:计算机 → 外部世界。常见输出设备:显示器、打印机、音箱、投影仪等。
判断输入还是输出的方法:从计算机的角度看,数据是流向计算机(输入)还是从计算机流出(输出)。打印机将计算机存储的数字信息打印到纸张上,数据从计算机流向打印机再到纸张,属于输出。
A. 控制器:控制器是CPU的组成部分之一,负责从存储器取指令并分析指令、控制各部件协调工作,是计算机内部的指挥中心。打印机显然不是控制器。错误。
B. 运算器:运算器是CPU的另一组成部分,负责执行算术运算(加减乘除)和逻辑运算(与或非)。打印机不具备运算功能。错误。
C. 输入设备:输入设备是将外部数据送入计算机的设备。打印机的功能是将计算机的数据输出到纸张,数据是从计算机流出,而非流入。错误。
D. 输出设备:打印机接收计算机发送的数字信号,将其转换为可见的文字或图像打印在纸张上,完成"计算机 → 外部"的数据传递,属于典型的输出设备。正确。
常见设备分类记忆:
输入:键盘、鼠标、扫描仪、摄像头、话筒(这些都是"往计算机里输送"信息的)。
输出:显示器、打印机、音箱、投影仪(这些都是"从计算机里取出"信息展示给人的)。
打印机的功能是"打印出来",纸是输出介质,所以打印机=输出设备,这是最直观的判断。
第1章 计算机系统概述 — 计算机的基本组成(冯·诺依曼体系结构),输入输出设备的定义;第6章 互连及输入输出组织 — 输入输出设备的分类。本题是基础概念题。
在中断控制方式下,总线控制权归
I/O控制方式(输入输出控制方式)是指CPU与外部设备之间进行数据传输时所采用的管理和协调机制。主要有以下几种方式:
程序查询方式(Polling):CPU主动、不断地查询I/O设备的状态,等待设备就绪后进行数据传输。CPU始终参与,效率低下,CPU几乎被I/O操作占用。总线控制权:CPU。
中断控制方式(Interrupt-driven I/O):CPU启动I/O设备后,不等待设备就绪,而是继续执行其他程序。当I/O设备完成操作后,向CPU发出中断请求信号,CPU响应中断,暂停当前程序,转而执行中断服务程序来处理I/O数据,处理完后返回原程序继续执行。这种方式CPU利用率高,但每次中断都需要CPU全程参与数据传输。总线控制权:始终归CPU,CPU主导所有数据传输。
DMA方式(Direct Memory Access,直接存储器存取):由专用的DMA控制器负责直接在I/O设备和主存之间传输数据,无需CPU介入数据传输过程。DMA传输期间,总线控制权交给DMA控制器,CPU暂时释放总线使用权。总线控制权:在DMA传输期间归DMA控制器。
A. 程序员掌控:程序员不是硬件部件,无法直接掌控总线控制权。错误。
B. 主存掌控:主存是被动的存储部件,它响应总线上的读写请求,但不主动掌控总线。错误。
C. CPU掌控:在中断控制方式下,虽然I/O设备可以通过中断请求信号"通知"CPU,但实际的数据传输过程(从I/O设备读取数据或向I/O设备写入数据)仍然需要CPU执行指令来完成。CPU始终是总线的主控方(Bus Master),负责发出地址信号和控制信号。正确。
D. 中断控制器掌控:中断控制器(如Intel 8259A)的作用是管理多个中断源的优先级、屏蔽等,它是中断请求信号的仲裁器,但它本身不掌控数据总线,也不负责数据传输。总线控制权仍归CPU。错误。
补充区分:中断方式与DMA方式的关键区别在于——中断方式下CPU全程参与数据传输(CPU是总线主控),DMA方式下CPU将总线控制权暂时交给DMA控制器(DMA是总线主控)。
三种I/O方式与总线控制权:
程序查询:CPU(一直占用,效率最低)
中断方式:CPU(设备通知CPU,CPU来传数据)
DMA方式:DMA控制器(传输期间,CPU让出总线)
关键区分:只有DMA方式才会将总线控制权转移给非CPU部件(DMA控制器)。中断方式虽然设备可以"打断"CPU,但总线控制权始终在CPU手中。
第6章 互连及输入输出组织 — 6.4节 I/O控制方式,中断控制方式的工作原理及总线控制权分析。本题考查对中断方式特点的理解,尤其是与DMA方式的对比。
在写磁盘过程中,适配器向主机发出DMA请求是在
DMA(Direct Memory Access,直接存储器存取)是一种高效的I/O控制方式,允许I/O设备与主存之间直接传输数据,而不需要CPU参与每个字节的传输。
磁盘写操作(Write to Disk)的数据流向:主存 → 磁盘适配器(缓冲器)→ 磁盘。
磁盘适配器(Disk Adapter/Controller):是连接磁盘和系统总线之间的接口电路,内部有扇区缓冲器(Sector Buffer),用于临时存放一个扇区的数据。
写磁盘的过程详解:
关键问题:DMA请求应该在什么时候发出?——必须在缓冲器空(需要数据)且磁盘即将准备好接收数据时。即当缓冲器为空时,适配器发出DMA请求,请求从主存取数据填满缓冲器,然后再写入磁盘。
A. 扇区缓冲器满时:缓冲器已满说明数据已经从主存传来了,适配器正在将数据写入磁盘,此时不需要再向主机请求数据(DMA请求的目的是请求主机把数据送来)。错误。
B. 扇区缓冲器空时:写磁盘时,数据需要先从主存传到适配器的缓冲器,再从缓冲器写入磁盘。当缓冲器为空时,说明适配器需要数据,此时发出DMA请求,向主机申请将下一扇区的数据从主存传入缓冲器。正确。
C. 寻道完成时:寻道完成只是表示磁头到达了目标磁道,但还需要等待目标扇区旋转到磁头下方(旋转延迟),此时还不是发出DMA请求的最佳时机。寻道完成不是触发DMA请求的直接条件。错误。
D. 启动磁盘时:启动磁盘时,磁头才开始寻道,整个读写操作刚刚开始,缓冲器中还可能有数据,也未确定何时需要数据,此时发出DMA请求为时过早。错误。
理解写磁盘数据流向:主存 → 缓冲器 → 磁盘。
DMA请求的触发逻辑:缓冲器空 = "我需要数据了" = 向主机发DMA请求 = 从主存取数据填缓冲器。
对比读磁盘:读磁盘时,数据流向是磁盘 → 缓冲器 → 主存,DMA请求发出时机是缓冲器满时("我有数据要给你了")。写和读的触发条件正好相反。
第6章 互连及输入输出组织 — 6.4节 I/O控制方式中的DMA方式,磁盘读写的DMA工作过程详解。本题需要理解写磁盘操作中数据流的方向和DMA请求的触发时机。
静态存储器是指
半导体随机存取存储器(RAM)按照存储信息的基本电路结构,分为两大类:
SRAM(Static RAM,静态随机存取存储器):
DRAM(Dynamic RAM,动态随机存取存储器):
注意:SRAM和DRAM都是易失性存储器(Volatile),断电后数据均会丢失。"静态"的意思是在供电状态下不需要刷新,而不是断电后数据不丢失。
A. 信息一旦写入就不再改变:这描述的是ROM(只读存储器)的特性,ROM写入后通常不能(或不容易)修改。SRAM可以随时读写,内容可以改变。错误。
B. 电源掉电后其内容仍保持不变:这描述的是非易失性存储器(Non-volatile Memory)的特性,如Flash、磁盘、ROM等。SRAM是易失性存储器,掉电后数据会丢失。错误。
C. 通过附加电池来保证信息不丢失:这不是SRAM的定义,某些系统确实用电池备份SRAM(如CMOS RAM存储BIOS设置),但这是一种应用方式,不是"静态"的定义。错误。
D. 用稳定的双稳态触发器保存信息:这准确描述了SRAM的物理实现原理。SRAM用双稳态触发器(即flip-flop)作为存储单元,触发器有两个稳定状态,在有电源的情况下可以稳定保持0或1状态,无需刷新。"静态"正是相对于DRAM"需要动态刷新"而言的。正确。
静态(SRAM) vs 动态(DRAM)的核心区别:
SRAM = 双稳态触发器 = 不需要刷新 = 速度快 = 成本高 = 用于Cache。
DRAM = 电容存电荷 = 需要刷新 = 集成度高 = 成本低 = 用于主存。
"静态"的含义:在有电时,数据状态不会自动变化(不需要刷新维持),而非"断电后不变"。
常见混淆:不要把"静态(不需要刷新)"和"非易失(断电不丢失)"混为一谈。
第5章 存储器层次结构 — 5.2节 主存储器的基本组成,SRAM和DRAM的结构原理与比较。本题考查静态RAM(SRAM)的定义,核心是双稳态触发器这一物理实现。
指令周期是指
CPU执行指令时涉及多个时间层次的概念,理解它们的区别非常重要:
时钟周期(Clock Cycle / 机器周期的基础单位):CPU主时钟信号的一个完整振荡周期,是CPU时序的最小单位。时钟周期 = 1 / 时钟频率。例如,3GHz的CPU时钟周期约为0.33纳秒。
总线周期(Bus Cycle)/ 存储器周期:完成一次总线操作(如一次主存读或写)所需的时间,通常由若干个时钟周期组成。
指令周期(Instruction Cycle):CPU从主存中取出一条指令并完整执行该指令所需的总时间。指令周期包含:
指令周期是CPU执行程序的基本循环单位,不同指令的指令周期长度可以不同(取决于指令复杂度)。
A. 分析并完成一条指令的功能所用的时间:这个描述遗漏了"取指"这一关键步骤。指令周期从"从主存取出指令"开始,不仅仅是"分析并完成"。只包含译码和执行,缺少取指,描述不完整。错误。
B. 完成一定功能的几条指令的执行时间:这描述的是多条指令的执行时间,不是单条指令的执行周期,不符合"指令周期"的定义(指令周期是针对单条指令的)。错误。
C. 从主存取一条指令并执行所用的时间:完整地描述了指令周期的定义——从取指开始,直到该指令完全执行完毕。这涵盖了指令周期的全过程(取指+译码+执行+写回)。正确。
D. CPU主脉冲频率的倒数:CPU主脉冲频率的倒数是时钟周期(Clock Cycle),而不是指令周期。时钟周期是最小时间单位,指令周期由多个时钟周期组成。错误。
三种周期的层次关系(从小到大):时钟周期 < 总线周期(存储器周期)< 指令周期。
指令周期 = 取指 + 译码 + 执行(+写回)的总时间,是针对一条指令的完整执行过程。
D选项是常见干扰:1/频率 = 时钟周期(最小单位),不是指令周期。
指令周期的定义关键词:"从主存取一条指令"(取指是起点)+ "执行所用的时间"(到执行完为终点)。
第4章 中央处理器 — 4.3节 指令周期,指令周期的定义及组成阶段(取指周期、间址周期、执行周期、中断周期)。本题考查指令周期的准确定义,要与时钟周期区分。
并行接口指接口与系统总线之间、接口与外设之间采用的数据总线传送方式分别是
计算机接口(Interface)是CPU/主存与外部设备之间的连接电路,负责协调两者之间的数据传输。接口按照与外设之间的数据传输方式,分为两大类:
并行接口(Parallel Interface):接口与外设之间通过多条数据线同时传输多位数据(并行传输)。同时,接口与系统总线之间也是并行传输。换言之,并行接口两侧(总线侧和外设侧)均采用并行数据传输方式。
串行接口(Serial Interface):接口与外设之间通过一条数据线,一位一位地顺序传输数据(串行传输)。接口与系统总线之间是并行传输,因此串行接口内部需要进行并行-串行转换(发送时:并转串;接收时:串转并)。
系统总线(System Bus)始终是并行的(多位数据同时传输),这是因为总线本身就是由多根并行导线组成的。
题目问的是"并行接口"中,"接口与系统总线之间"和"接口与外设之间"的传输方式。
A. 串行、串行:接口与系统总线之间为串行——错误,系统总线始终是并行的。错误。
B. 并行、串行:这描述的是串行接口的特征(总线侧并行,外设侧串行),不是并行接口。错误。
C. 并行、并行:并行接口两侧均采用并行传输方式——接口与系统总线之间是并行传输,接口与外设之间也是并行传输。这正是"并行接口"名称的由来。正确。
D. 串行、并行:接口与总线之间串行是错误的,系统总线必须是并行。此选项两边都写反了。错误。
并行接口 = 两侧都并行(与总线并行,与外设也并行)。
串行接口 = 总线侧并行(总线必须并行),外设侧串行(一位一位传)。
记忆规律:系统总线永远是并行的,"接口与系统总线之间"答案一定是并行,因此只需要判断"接口与外设之间"是并行还是串行,由接口类型(并行接口还是串行接口)决定。
第6章 互连及输入输出组织 — 6.3节 接口的基本概念,并行接口与串行接口的定义和比较。本题考查并行接口与串行接口在数据传输方式上的核心区别。
设置中断屏蔽字的作用是
在实际计算机系统中,往往存在多个中断源(如键盘、打印机、磁盘、定时器等),当多个中断同时发生时,CPU需要决定先处理哪一个,这就涉及中断优先级和中断屏蔽机制。
中断屏蔽(Interrupt Masking):通过设置特定的标志位来禁止CPU响应某些中断请求,即"屏蔽"掉不希望立即处理的中断。
中断屏蔽字(Interrupt Mask Word):是存储在特殊寄存器(中断屏蔽寄存器或程序状态字PSW的一部分)中的一组二进制位,每一位对应一个中断源(或一组中断源)。
中断屏蔽的用途:
区分"屏蔽所有中断"和"屏蔽某些中断":关中断(DI指令,Disable Interrupt)是屏蔽全部中断(包括可屏蔽中断);而设置中断屏蔽字是有选择地屏蔽部分中断,另一些中断仍可正常响应。
A. 暂停外设对主存的访问:这是DMA方式中CPU周期挪用时的情形,与中断屏蔽字无关。中断屏蔽字控制的是CPU对中断请求的响应,与外设访问主存无关。错误。
B. 暂停CPU对主存的访问:中断屏蔽字不涉及CPU对主存的访问,CPU在正常执行指令时始终需要访问主存(取指、读写数据)。错误。
C. 暂停CPU对一切中断的响应:这描述的是"关中断"(全局中断禁止),即通过标志位(如x86的IF标志)关闭所有可屏蔽中断。中断屏蔽字是选择性的,可以只屏蔽部分中断,而不是全部。错误。
D. 暂停CPU对某些中断的响应:中断屏蔽字是一个位图,每一位控制一个中断源的屏蔽状态。通过设置不同的位,可以灵活地选择性地屏蔽"某些"中断,同时允许其他中断继续响应。这正是中断屏蔽字的核心作用。正确。
中断屏蔽字 vs 关中断的区别:
关中断(DI/CLI指令)= 屏蔽一切可屏蔽中断(全屏蔽)。
中断屏蔽字 = 有选择地屏蔽某些中断(部分屏蔽),其余中断仍可响应。
C选项"一切中断"是关中断的效果,D选项"某些中断"是中断屏蔽字的效果。
注意:中断屏蔽字与中断优先级密切相关,高优先级中断服务程序通过设置屏蔽字来屏蔽低优先级中断,防止自己被低优先级中断打断。
第6章 互连及输入输出组织 — 6.5节 中断系统,中断屏蔽字的概念、设置方法及其与中断优先级的关系。本题考查中断屏蔽字的作用,注意与全局关中断的区别。
计算机的五个基本组成部件是输入设备、输出设备、控制器、______和______。
计算机体系结构的奠基人冯·诺依曼(John von Neumann)在1945年提出了"存储程序"的概念,并给出了计算机的基本结构模型。这一模型被称为"冯·诺依曼结构",是现代几乎所有计算机的理论基础。
冯·诺依曼结构的核心思想有两点:第一,程序和数据都以二进制形式存储在存储器中;第二,计算机按照存储在存储器中的程序指令顺序自动执行。
根据这一结构,计算机由五个基本部件构成,每个部件承担不同的职责,协同工作完成信息处理任务。理解这五个部件是学习计算机组成原理的最基础起点,就像学习人体结构必须先了解五脏六腑一样。
冯·诺依曼计算机的五个基本组成部件如下:
1. 输入设备(Input Device)
负责将外部信息(如文字、图像、声音等)转换为计算机能够识别的二进制信号,输入到计算机内部。常见的输入设备有键盘、鼠标、扫描仪、麦克风等。
2. 输出设备(Output Device)
负责将计算机内部处理完毕的二进制信息转换为人类可以感知的形式(如文字、图像、声音等)输出。常见的输出设备有显示器、打印机、音箱等。
3. 控制器(Controller / Control Unit)
是计算机的"指挥中心",负责从存储器中取出指令,对指令进行译码(分析指令的含义),然后根据指令的要求,向其他各部件发出控制信号,协调各部件有序工作。控制器本身不进行数据运算,它只负责指挥和调度。
4. 运算器(Arithmetic Logic Unit, ALU)
是计算机的"计算中心",负责对数据进行算术运算(加、减、乘、除)和逻辑运算(与、或、非、异或等)。运算器接收来自存储器或寄存器的数据,完成运算后将结果送回存储器或寄存器。运算器与控制器合称为中央处理器(CPU)。
5. 存储器(Memory / Storage)
是计算机的"记忆中心",负责存储程序(指令序列)和数据。存储器可以读出(读取已存储的信息)和写入(存储新的信息)。存储器按照地址来组织,每个存储单元都有唯一的地址编号。广义上的存储器包括内存(主存)和外存(如硬盘),通常在讨论冯·诺依曼五大部件时,存储器主要指内存(主存储器)。
题目中已经给出了输入设备、输出设备、控制器三个部件,因此两个空格分别填写运算器和存储器。
五个部件之间的关系:控制器从存储器中取出指令并发出控制信号;运算器在控制器的指令下对存储器中的数据进行运算;输入设备将外部数据输入到存储器;输出设备将存储器中的数据输出给用户。
口诀记忆:"输入输出存控算"——输入设备、输出设备、存储器、控制器、运算器,五个字头分别对应五大部件。
或者记忆为:"冯氏五件套" = 输入 + 输出 + 存储 + 控制 + 运算。
重要关联:运算器 + 控制器 = CPU(中央处理器)。这是考试中另一个常考知识点。
答题技巧:当题目给出其中三个部件时,只需从"五大部件"中排除已知的,剩余即为答案。此题给出了输入设备、输出设备、控制器,所以答案是运算器和存储器。
本题知识点出自教材第1章:计算机系统概述。具体对应"冯·诺依曼计算机的组成结构"相关内容,是第1章的核心基础知识,也是整门课程的起点。
数据在计算机内部处理中,为了减少和避免错误,常用的数据校验码有奇偶校验码、______和______。
计算机在存储和传输数据时,由于硬件故障、电磁干扰、线路噪声等原因,数据可能会发生错误(某些二进制位从0变成1,或从1变成0)。为了检测乃至纠正这类错误,工程师们在原始数据之外额外附加一些"校验位"(冗余位),利用编码规律来识别错误。这种技术统称为"差错控制编码"或"数据校验码"技术。
数据校验码的基本思想是:发送方按照某种规则,在数据中加入额外的校验信息;接收方收到数据后,用同样的规则重新计算校验信息,并与附带的校验信息对比。如果一致,说明数据正确;如果不一致,说明数据在传输过程中发生了错误。
不同的校验方法有不同的检错和纠错能力,常见的有三种:奇偶校验码、海明校验码和循环冗余校验码。
1. 奇偶校验码(Parity Check Code)
奇偶校验是最简单的校验方法。做法是在数据位后面添加1个校验位,使得整个编码(数据位+校验位)中"1"的个数满足奇数(奇校验)或偶数(偶校验)的规则。
例如,偶校验下,数据1010001有四个1(偶数),校验位补0,整体为10100010;若数据1010011有五个1(奇数),校验位补1,整体为10100111,使得1的总数变为偶数。
特点:只能检测出奇数个位发生错误的情况(如1位错、3位错),不能纠错,也不能检测出偶数个位同时出错的情况。是三种校验码中能力最弱的,但实现最简单。
2. 海明校验码(Hamming Code)
由美国数学家理查德·海明(Richard Hamming)在1950年提出。海明码在数据中插入多个校验位,每个校验位负责检验特定位置的一组数据位是否正确。
原理:设数据位有k位,需要添加r个校验位,满足 2^r >= k + r + 1。校验位放置在编码的第1、2、4、8、16……(2的幂次)位置。每个校验位通过对其负责的那组数据位做奇偶校验来生成。
特点:海明码既能检错也能纠错,最基本的海明码可以检测出2位错误,纠正1位错误。这是三种校验码中唯一具备自动纠错能力的。
3. 循环冗余校验码(Cyclic Redundancy Check, CRC)
CRC是目前应用最广泛的差错检测方法,广泛用于网络通信(以太网、Wi-Fi)、硬盘存储等领域。
原理:将需要发送的数据(看作一个多项式)除以一个预先约定的"生成多项式",得到的余数就是CRC校验码,附加在原始数据后面一起发送。接收方收到数据后用同样的生成多项式去除,若余数为0则说明无误,若不为0则说明发生了错误。
特点:CRC的检错能力很强,可以检测出多位错误、突发错误(连续多位出错),但通常只用于检错而非纠错(纠错需要额外的机制)。
题目已给出奇偶校验码,因此两个空格分别填写海明校验码和循环冗余校验码。
三种校验码的对比记忆:
奇偶校验码:1个校验位,只能检错(奇数位出错),不能纠错。最简单。
海明校验码:多个校验位,既能检错又能纠错(纠正1位错)。最强纠错能力。
循环冗余校验码(CRC):基于多项式除法,检错能力强,适合通信和存储。最广泛使用。
记忆口诀:"奇偶最简单,海明能纠错,CRC跑通信"。
注意:海明校验码的英文Hamming来自发明人姓名,翻译为"海明";CRC的中文全称是"循环冗余校验码",注意"冗余"(redundancy)的写法,考试中常需要填写全称。
本题知识点出自教材第2章:数据的表示和运算。具体对应"数据校验码"相关章节,包括奇偶校验码、海明校验码和循环冗余校验码的原理与比较,是第2章的重要考点。
MIPS指令采用三地址指令格式,且其三种类型分别为R-型指令、______和______。
MIPS(Microprocessor without Interlocked Pipeline Stages)是一种精简指令集计算机(RISC)体系结构,由斯坦福大学的约翰·亨尼西(John Hennessy)教授主导设计,于1981年提出。MIPS架构以其简洁、规整的指令格式著称,是计算机组成原理教学中最常用的示例架构之一。
MIPS指令集的设计哲学是:所有指令长度固定为32位(4字节),指令格式种类少而规整,便于硬件解码和流水线处理。这与x86等复杂指令集(CISC)形成鲜明对比。
所谓"三地址指令格式"是指一条指令中可以包含三个操作数的地址(或编号)。对于MIPS来说,通常是两个源操作数和一个目标操作数,例如"将寄存器1和寄存器2的值相加,结果存入寄存器3"这样的操作。
MIPS指令集将所有32位指令划分为三种格式类型,每种类型的字段划分方式不同,适用于不同类型的操作:
1. R-型指令(Register Type,寄存器型)
R型指令的所有操作数都来自寄存器,结果也写回寄存器。适用于算术运算(如加法add、减法sub)、逻辑运算(如与and、或or)、移位运算等。
R型指令的32位格式划分为6个字段:
op(6位):操作码,R型指令此字段全为0;
rs(5位):第一个源寄存器编号;
rt(5位):第二个源寄存器编号;
rd(5位):目标寄存器编号;
shamt(5位):移位量;
funct(6位):功能码,用于区分不同的R型操作。
2. I-型指令(Immediate Type,立即数型)
I型指令包含一个16位的立即数(即常量值,直接写在指令中)。适用于含有常数的运算(如加立即数addi)、数据存取(如加载lw、存储sw)、条件分支(如相等时分支beq)等。
I型指令的32位格式划分为4个字段:
op(6位):操作码;
rs(5位):源寄存器编号;
rt(5位):目标寄存器编号(或第二源寄存器);
immediate(16位):立即数或偏移量。
3. J-型指令(Jump Type,跳转型)
J型指令专门用于无条件跳转操作(如j jump、jal jump and link调用子程序)。由于跳转地址需要较多的位数,J型指令将大部分位都分配给目标地址字段。
J型指令的32位格式划分为2个字段:
op(6位):操作码;
target(26位):跳转目标地址(实际地址计算时还需结合PC高位)。
三种类型的设计逻辑:R型针对纯寄存器操作,I型引入立即数和内存访问/条件跳转,J型专门处理大范围无条件跳转,三者覆盖了计算机程序所需的所有基本操作类型。
题目已给出R-型指令,两个空格分别填写I-型指令和J-型指令。
用首字母帮助记忆:R-I-J,分别对应 Register(寄存器)、Immediate(立即数)、Jump(跳转)。
功能对应记忆:
R型 = 寄存器间运算(纯计算)
I型 = 含立即数 / 内存读写 / 条件分支
J型 = 无条件跳转
关键数字记忆:R型有6个字段(op/rs/rt/rd/shamt/funct),I型有4个字段(op/rs/rt/imm16),J型只有2个字段(op/target26)。三种格式总位数均为32位。
注意书写规范:题目中使用"R-型指令"的写法(含连字符和中文"型"字),答题时应保持一致,写作"I-型指令"和"J-型指令"。
本题知识点出自教材第3章:指令系统。具体对应MIPS指令格式相关内容,包括三种指令类型(R型、I型、J型)的字段划分和各自的适用场景,是第3章的核心重点之一。
Intel将内部异常分为三类:故障、______和______。
在计算机运行过程中,除了正常的程序执行流程外,还存在各种"意外"或"特殊"情况需要CPU暂停当前任务,转而处理这些特殊情况,处理完毕后再决定是否继续原来的任务。这类机制统称为"中断与异常"机制。
中断(Interrupt)通常指来自CPU外部的信号(如外部设备发出的请求),而异常(Exception)通常指CPU内部在执行指令过程中发生的特殊情况(如除以零、访问非法内存地址、执行了特殊的系统调用指令等)。
不同的计算机体系结构对中断和异常的分类和命名可能有所不同。Intel x86架构对内部异常(即执行指令过程中在CPU内部产生的异常)按照异常发生后程序能否继续执行、以及返回时重新执行哪条指令,将内部异常划分为三类:故障、陷阱和终止。
Intel内部异常的三种类型如下:
1. 故障(Fault)
故障是一种可以被纠正的异常。发生故障时,CPU保存的是引发故障的那条指令的地址(即异常发生前的状态)。异常处理程序(操作系统内核)处理完毕后,CPU会返回并重新执行引发故障的那条指令。
典型例子:"缺页故障"(Page Fault)。当程序访问的内存页面不在物理内存中时,CPU产生缺页故障,操作系统将该页面从硬盘调入内存,然后让CPU重新执行刚才引发缺页的那条访存指令,这一次就能正常访问到数据了。故障得到了纠正,程序正常继续执行。
特点:返回到引发异常的那条指令,重新执行它。异常是可以被修复的。
2. 陷阱(Trap)
陷阱是一种有意安排的异常,通常是程序主动触发的,目的是请求操作系统提供某种服务(即系统调用)。发生陷阱时,CPU保存的是引发陷阱的那条指令的下一条指令的地址。异常处理完毕后,CPU返回到陷阱指令的后一条指令继续执行。
典型例子:程序执行INT指令(x86的软中断指令)来发起系统调用,比如请求操作系统读取文件、申请内存等。这是程序故意"陷入"操作系统内核的一种机制,故障处理后程序从下一条指令继续。
特点:返回到引发异常的下一条指令,不重新执行陷阱指令。是程序主动发起的,可以正常继续。
3. 终止(Abort)
终止是最严重的一类异常,通常由不可恢复的硬件故障引起(如内存校验错误、总线错误等)。发生终止时,CPU无法确定引发异常的指令位置,也无法恢复程序的正常运行,操作系统通常会强制终止当前进程甚至整个系统(即系统崩溃)。
典型例子:内存奇偶校验错误(硬件故障)、CPU检测到严重硬件错误。
特点:不返回,程序无法继续执行,通常导致进程或系统终止。
三类异常的对比总结:故障可纠正且重新执行该指令;陷阱是主动触发且执行下一条指令;终止不可恢复且程序终止。题目已给出"故障",两个空格分别填写陷阱和终止。
三类异常按严重程度递增排列:故障 < 陷阱 < 终止(从可修复到完全不可恢复)。
返回行为记忆:
故障(Fault):重新执行引发异常的那条指令(回头重来)
陷阱(Trap):执行引发异常的下一条指令(继续向前)
终止(Abort):不返回(结束了)
英文对应记忆:Fault(故障/错误)、Trap(陷阱/系统调用)、Abort(中止/终止)。
生活类比:故障好比汽车爆胎修好后继续原路行驶;陷阱好比主动进加油站加完油继续往前走;终止好比汽车发动机彻底报废无法继续行驶。
本题知识点出自教材第4章:中央处理器。具体对应"中断与异常"相关章节,Intel内部异常的三种分类(故障、陷阱、终止)是第4章关于异常处理机制的重要考点。
I/O数据传送主要有三种不同的控制方式,分别是______、______和中断控制。
I/O(Input/Output,输入/输出)是计算机与外部设备(键盘、鼠标、硬盘、网卡、打印机等)之间交换数据的过程。由于外部设备的速度通常远远慢于CPU,如何高效地完成I/O数据传送,同时尽量不浪费CPU的时间,是计算机体系结构中的一个重要问题。
为此,计算机工程师们发展出了不同层次的I/O控制方式,从最简单的"CPU全程盯着"到"专用硬件自主传输",CPU的介入程度逐渐降低,系统的整体效率逐渐提高。
教材中总结出I/O数据传送的三种主要控制方式,理解这三种方式的工作原理和优缺点是学习I/O组织的基础。
I/O数据传送的三种控制方式如下:
1. 程序直接控制(Programmed I/O,也称程序查询方式)
这是最简单、最原始的I/O控制方式。CPU通过执行程序中的I/O指令,主动查询外部设备的状态(询问:"你准备好了吗?"),等到设备就绪后,再由CPU亲自将数据从设备读入,或将数据写出到设备。在等待设备就绪的过程中,CPU只能不断地循环查询,无法做其他任何事情。
工作过程举例(读操作):
CPU发出读命令 → CPU反复查询设备状态寄存器(忙等,又称"轮询")→ 设备就绪后,CPU从数据寄存器读取一个字节/字 → 重复以上过程直到数据传输完毕。
优点:实现简单,不需要额外硬件支持。
缺点:CPU大量时间浪费在等待慢速设备上,效率极低,尤其不适合大量数据传输。
2. 中断控制(Interrupt-driven I/O,中断驱动方式)
为了克服程序直接控制中CPU忙等的缺点,引入了中断机制。CPU发出I/O命令后,不再一直等待,而是继续执行其他程序。当设备准备就绪(或完成一次数据传输)后,设备向CPU发出中断请求信号。CPU收到中断请求后,暂停当前程序,转去执行中断服务程序(完成一次数据读写),然后返回被打断的程序继续执行。
工作过程举例:CPU发出读命令 → CPU去做其他事情 → 设备就绪,向CPU发中断 → CPU响应中断,暂停当前任务 → CPU执行中断服务程序,读取一个数据 → CPU返回,继续原来任务 → 重复直至传输完毕。
优点:CPU不再忙等,可以并行处理其他任务,效率大幅提升。
缺点:每传输一个数据就需要产生一次中断、保存和恢复CPU状态,中断处理开销较大;对于大量数据传输,频繁中断仍会消耗大量CPU时间。
3. DMA控制(Direct Memory Access,直接内存访问控制)
DMA是更高效的I/O方式。系统中设置专用的DMA控制器(DMAC),它可以代替CPU直接在外部设备和内存之间传输数据,整个传输过程中CPU不参与(无需CPU每次读写一个数据字)。只有在一批数据(整块数据)传输完成后,DMA控制器才向CPU发一次中断,通知CPU传输完毕。
工作过程举例:CPU初始化DMA控制器(告诉它数据的内存起始地址、设备地址、传输字节数)→ CPU去做其他事情 → DMA控制器自主控制总线,直接在设备和内存之间传数据(CPU不介入)→ 一整块数据传完,DMA向CPU发一次中断 → CPU处理完成信号。
优点:大批量数据传输时,CPU几乎不消耗时间,系统效率最高。
缺点:需要专用的DMA控制器硬件,成本较高;DMA占用总线时可能与CPU争用总线(总线竞争)。
三种方式对比:程序直接控制中CPU全程参与,效率最低;中断控制中CPU在数据传输期间可做其他事,但每次传一个数据就中断一次;DMA控制中CPU只需在整块数据传完后响应一次中断,效率最高。
题目已给出中断控制,两个空格分别填写程序直接控制和DMA控制。
按CPU介入程度从多到少排列:程序直接控制 > 中断控制 > DMA控制。
口诀:"程序查,中断告,DMA自己跑"——程序直接控制靠CPU不断查询,中断控制靠设备告诉CPU,DMA控制靠专用硬件自己完成传输。
DMA的全称一定要记住:Direct Memory Access,直接内存访问。考试中"DMA控制"可能需要写出全称,或者考查DMA的英文缩写含义。
注意"程序直接控制"的完整名称,不要写成"程序控制"(太简单)或"查询控制"(虽然常用但不是本题答案的标准表述)。按教材的标准表述,此处为"程序直接控制"。
从适用场景区分:少量数据且设备简单用程序直接控制;普通I/O设备(键盘、鼠标等)用中断控制;大批量数据传输(硬盘读写、网络数据包)用DMA控制。
本题知识点出自教材第6章:互连及输入输出组织。具体对应"I/O数据传送控制方式"相关章节,程序直接控制、中断控制和DMA控制三种方式的原理、比较与适用场景是第6章最核心的考点之一。
请解释名词: 控制器
用来对指令进行译码,生成相应的控制信号,以控制数据通路进行特定的操作。
计算机的核心部件是中央处理器(CPU,Central Processing Unit)。CPU 内部由两大部分组成:运算器和控制器。 运算器负责做算术与逻辑运算(比如加减乘除、与或非),而控制器则是 CPU 的"指挥中心"——它告诉运算器和其他部件"该做什么、什么时候做、怎么做"。
要理解控制器,首先需要理解"指令"的概念。程序是由一条条指令组成的,每条指令都是一个二进制编码(0和1的序列),它描述了计算机需要执行的某个操作(例如:把两个数相加,或者把一个数存入内存)。 控制器的任务就是读取这些指令,弄清楚它们的含义,然后发出一系列控制信号,驱动计算机各个部件协同工作。
控制器的工作可以分为以下几个核心环节:
简而言之,控制器的本质是一个"有限状态机"或"微程序控制器",它根据指令的编码和当前的状态,有序地产生驱动整台计算机运行所需的全部控制信号。没有控制器,运算器和存储器就无法协调工作,计算机就不能自动执行程序。
控制器 = "指挥官":它的三个核心动作是——译码(看懂指令)、生成控制信号(发出命令)、控制数据通路(指挥执行)。 可以用一句话记忆:控制器读懂指令,发出信号,指挥数据通路完成操作。 与运算器的区别:运算器是"干活的",控制器是"指挥干活的"。
对应教材第4章《中央处理器》,控制器是 CPU 的重要组成部分,与运算器、寄存器组、内部总线共同构成 CPU 的基本结构。
请解释名词: 机器数
将数值数据在计算机内部编码表示的数称为机器数。
在日常生活中,我们使用十进制数,并且可以用正号(+)和负号(-)来表示一个数的正负,例如 +5、-3。这种带有符号的数叫做"真值",是数学意义上的数。
然而,计算机内部只有两种状态:高电平和低电平,对应二进制的 1 和 0。计算机无法直接存储"+"或"-"这样的符号,只能存储 0 和 1 的序列。因此,工程师们设计了一套规则,将数值(包括符号和数值本身)全部编码为 0 和 1 的序列,以便在计算机内部存储和运算。这样编码后的结果就叫做"机器数"。
机器数有以下几个重要特点:
例如,真值 +7 在8位补码机器数中表示为 00000111;真值 -7 在8位补码机器数中表示为 11111001。
机器数 = 计算机内部用二进制编码表示的数,核心特征是:符号数字化、位数固定。 与"真值"的关系:真值是数学意义上的数(有正负号),机器数是真值在计算机内部的二进制编码形式。 三种常见机器数编码:原码(最直观)、反码(过渡)、补码(最常用,现代计算机的标准)。
对应教材第2章《数据的表示和运算》,机器数是本章的基础概念,引出原码、反码、补码等重要编码方式。
请解释名词: 寄存器直接寻址
指令中给出的是操作数所在的寄存器编号,操作数存放在该寄存器中。
要理解寄存器直接寻址,首先需要了解两个基础概念:寻址方式和寄存器。
寻址方式是指指令如何找到它所需要的操作数(即参与运算的数据)。同一条指令(例如"加法")可以用不同方式指定操作数的位置:操作数可能直接写在指令里、可能存在内存某个地址里、也可能存在 CPU 内部的寄存器里。不同的寻址方式对应不同的操作数获取方法。
寄存器是 CPU 内部的高速存储单元,数量少(通常只有几个到几十个)、速度极快(比内存快几十倍甚至数百倍)、容量小。常见的寄存器有:通用寄存器(R0、R1、R2...)、累加器(ACC)、数据寄存器等。每个寄存器都有唯一的编号(或名称),称为寄存器号。
在寄存器直接寻址方式下,指令的操作数字段中存放的不是操作数本身,也不是操作数在内存中的地址,而是操作数所在寄存器的编号。CPU 执行该指令时,直接到对应编号的寄存器中读取操作数的值。
举例说明:
假设有一条加法指令:ADD R1, R2(将寄存器R1和寄存器R2中的数相加,结果存入R1)。这里,R1 和 R2 就是寄存器编号。CPU 执行时,直接从寄存器 R1 和 R2 中读取数据,进行加法运算,不需要访问内存。这就是寄存器直接寻址。
与其他寻址方式的对比:
寄存器直接寻址的主要优点是:由于寄存器在 CPU 内部,访问速度极快,不需要额外的内存访问周期,指令执行效率高。因此,在编写高性能程序时,尽量将频繁使用的变量放在寄存器中,并使用寄存器直接寻址方式操作。
缺点是:寄存器数量有限,不能存放太多数据,且指令中需要用若干位来编码寄存器号(例如8个寄存器需要3位编码)。
寄存器直接寻址的核心:指令给的是寄存器编号,操作数就直接存在该寄存器中。 "直接"二字的含义:操作数直接在寄存器里,无需再去内存找,一步到位。 与"寄存器间接寻址"的区别:直接寻址中寄存器存的是操作数本身;间接寻址中寄存器存的是操作数的内存地址,还需要再访问一次内存。 速度排序(从快到慢):立即寻址 ≈ 寄存器直接寻址 > 寄存器间接寻址 > 直接寻址。
对应教材第3章《指令系统》,寻址方式是本章的核心内容之一,寄存器直接寻址是最常用的寻址方式之一。
请解释名词: 数据通路
将指令执行过程中数据所经过的路径,包括路径上的部件称为数据通路。
计算机执行一条指令,本质上是让数据在各个部件之间流动,并经过特定部件的处理。例如执行一条加法指令,数据需要从寄存器流向 ALU(算术逻辑单元),ALU 完成计算后,结果再流回寄存器。这些数据流动的"通道"和"加工站"合在一起,就构成了数据通路。
可以把数据通路理解为工厂里的"流水线":原材料(数据)在流水线上经过各个加工站(部件),最终变成成品(运算结果)。流水线的轨道(连线/总线)和加工站(寄存器、ALU等)合在一起就是数据通路。
数据通路(Datapath)是 CPU 内部的核心硬件结构,它包含两类要素:
数据通路与控制器的关系:数据通路是"硬件执行机构",负责实际的数据存储和运算;控制器是"指挥机构",负责向数据通路发出控制信号,告诉数据通路"数据应该从哪里来、经过哪些部件、流向哪里"。两者分工明确、协同工作,共同构成完整的 CPU。
以执行指令 "R1 = R2 + R3" 为例,数据通路的工作过程如下:
在这个过程中,数据流经的路径(R2 → ALU 输入A,R3 → ALU 输入B,ALU 输出 → R1)以及路径上的部件(寄存器 R2、R3、R1 和 ALU)合在一起,就是执行这条指令时用到的数据通路。
数据通路 = 数据流动的路径 + 路径上的功能部件。 形象记忆:数据通路是数据在 CPU 内部"旅行"的路线图,包括"公路"(总线/连线)和"驿站"(寄存器、ALU等部件)。 与控制器的分工:数据通路负责"干活"(数据的存储和运算),控制器负责"指挥"(发出控制信号)。两者合称 CPU 的核心。
对应教材第4章《中央处理器》,数据通路是 CPU 内部结构的核心概念,是理解指令执行过程的基础。
请解释名词: 直接存取存储器
该存取方式兼有随机访问和顺序访问的特点,先直接选取所需信息所在区域,然后按顺序方式存取。
存储器(Memory)是计算机用来存放数据和程序的部件。根据存取数据的方式不同,存储器可以分为以下几种类型:
直接存取存储器(DAM)采用一种"两阶段"的存取方式:
最典型的直接存取存储器是磁盘(Hard Disk Drive,HDD):
与纯随机存取(RAM)相比,直接存取存储器的访问时间较长(因为有机械运动),但容量大、成本低,适合存储大量数据(如操作系统、文件等)。 与纯顺序存取(磁带)相比,直接存取存储器访问特定区域的速度快得多,不需要从头开始遍历整个介质。
直接存取存储器 = 先直接定位区域(随机特性)+ 再顺序存取数据(顺序特性)。 典型代表:磁盘(硬盘 HDD)。磁头先移到目标磁道(直接),再等磁盘转到目标扇区(顺序)。 三种存取方式对比记忆: 随机存取(RAM)—— 任意位置,时间相同,速度最快(如内存); 直接存取(DAM)—— 先定位区域,再顺序读,速度居中(如磁盘); 顺序存取(SAM)—— 必须从头开始,速度最慢(如磁带)。
对应教材第5章《存储器层次结构》,直接存取存储器是辅助存储器(外存)的重要类型,磁盘是其最典型的代表,理解其存取方式有助于掌握磁盘的工作原理和性能参数(寻道时间、旋转延迟)。
冯·诺依曼结构计算机的基本思想主要包括哪几个方面?
(1)采用"存储程序"工作方式;(2分)
(2)计算机由运算器、控制器、存储器、输入设备和输出设备五个基本部件组成;(1分)
(3)存储器不仅能存放数据,而且也能存放指令;(1分)
(4)计算机内部以二进制形式表示指令和数据。(1分)
冯·诺依曼(John von Neumann,1903—1957)是美籍匈牙利数学家,被称为"现代计算机之父"。1945年,他在与他人合写的报告《EDVAC报告书的第一份草案》中,首次系统地提出了现代计算机的基本设计思想,这一思想被称为"冯·诺依曼体系结构"(Von Neumann Architecture)。
在冯·诺依曼之前,早期的计算机(如ENIAC)是通过人工插拔电线、拨动开关来改变程序的,每次换一个任务就需要花费大量时间重新"接线",极为不便。冯·诺依曼提出了一种革命性的思想:把程序(指令序列)和数据一起存放在存储器中,计算机自动地依次取出指令并执行——这就是"存储程序"的核心理念,它使得计算机真正变得通用、灵活。
时至今日,几乎所有我们日常使用的计算机(个人电脑、手机、服务器)在本质上仍然是冯·诺依曼结构,因此这道题考查的是计算机科学中最基础、最重要的知识点之一。
第一个方面:存储程序工作方式(最核心,2分)
这是冯·诺依曼思想的灵魂所在。"存储程序"的含义是:将事先编写好的程序(一条条的指令)预先存入计算机的内存储器中,计算机启动后,控制器自动地从内存中一条一条地取出指令,分析指令,然后执行指令,执行完一条再取下一条,如此循环,直到程序结束。
这个思想的革命性在于:程序不再是硬件接线的结果,而是存储在内存里的软件。想换一个程序,只需将新程序写入内存,不需要改动任何硬件,计算机因此具备了"通用性"。这也是现代计算机能够运行各种软件(游戏、办公、浏览器……)的根本原因。
第二个方面:五大基本部件(1分)
冯·诺依曼指出,一台完整的计算机必须由以下五个基本部件组成:
第三个方面:存储器既能存放数据也能存放指令(1分)
在冯·诺依曼之前,人们并没有清晰地意识到:指令和数据在本质上可以用同样的方式存储。冯·诺依曼明确提出,存储器中存放的内容有两类——一类是"数据"(参与运算的数值),另一类是"指令"(告诉计算机做什么的命令)。两者都以二进制编码的形式存放在同一个存储器里,CPU根据当前的执行状态来区分取出的是数据还是指令。这一点与第一个方面(存储程序)紧密相连,但考试中将其单独列为一点,需要明确作答。
第四个方面:以二进制形式表示指令和数据(1分)
计算机内部所有信息——无论是数字、字母、图片、声音,还是程序指令——都用二进制(只有0和1两种状态)来表示和存储。选择二进制的原因在于:电子器件天然具有两种稳定状态(如电压的高低、电容的充放电),用这两种状态分别表示0和1,既简单可靠,又便于用布尔代数(逻辑运算)来设计电路,技术实现难度最低。
可以用以下口诀记忆冯·诺依曼结构的四个方面:
"存程五部件,指令数据二进制"
注意:考试最容易失分的地方是漏写"五个部件"中的某一个,尤其容易忘记输入设备和输出设备。另外,"存储程序"是冯·诺依曼思想中最关键的创新点,占2分,务必首先写出并略加解释。
本题知识点对应教材第1章 计算机系统概述中关于"冯·诺依曼计算机的基本思想"的相关内容。这是第1章最基础、最重要的考点,属于必须掌握的核心知识,几乎每年的考卷都会涉及,需要做到准确、完整地背诵和理解。
既然计算机内部所有信息都用二进制表示,为什么还要用到八进制或十六进制数?
二进制数太长,书写、阅读均不方便,而八进制或十六进制数却像十进制数一样简练、易写易记。(3分)虽然计算机中只使用二进制一种记数制,但为了开发和调试程序、阅读机器代码时的方便,人们经常用八进制或十六进制数来等价地表示二进制数。(2分)
计算机内部使用二进制,这是由电子元器件的物理特性决定的:电路只有"通"和"断"、电压"高"和"低"两种稳定状态,天然对应0和1。然而,二进制数对于人类来说非常不直观——一个简单的十进制数255,写成二进制就是11111111,一共8位;更大的数字会变得极为冗长。
为了解决人机之间的"沟通障碍",工程师们引入了八进制(Octal,逢8进1)和十六进制(Hexadecimal,逢16进1)作为二进制的简写形式。它们与二进制之间存在完美的对应关系:
这种完美的对应关系使得二进制与八/十六进制之间的互相转换极为简单,无需复杂计算,只需分组替换即可。在实际的计算机开发工作中,程序员在查看内存地址、机器码、调试信息时,通常看到的都是十六进制表示(如0xFF, 0x1A3B等),而不是一大串0和1。
第一个原因:二进制太长,不便于人类阅读和书写(3分的核心)
我们用一个具体的例子来说明这个问题。假设一个8位的二进制数:
二进制:1010 1111
八进制:257
十六进制:AF
同样的数值,二进制需要写8个字符,八进制只需要3个字符,十六进制只需要2个字符。当数据量更大时(如32位、64位的地址),差距会更加悬殊。例如,32位全1的二进制数:
二进制:11111111 11111111 11111111 11111111(32位)
十六进制:FFFFFFFF(8位)
显然,书写和阅读32位的0和1序列,对人类来说极易出错,而十六进制的FFFFFFFF则简洁得多,也更容易记忆和核对。
第二个原因:八/十六进制与二进制之间转换极为简便(这是选择它们而不是十进制的关键)
你可能会问:既然嫌二进制太麻烦,为什么不直接用十进制呢?这是因为二进制与十进制之间的转换需要做除法或乘法运算,比较繁琐;而二进制与八进制、十六进制之间的转换,只需要简单地"分组替换",无需任何运算:
实际应用场景
在以下场景中,程序员和工程师日常会用到八进制或十六进制:
总结:计算机内部处理的永远是二进制,八进制和十六进制只是人类与计算机打交道时使用的一种"简写符号",是给人看的,不是给计算机用的。它们的本质仍然是二进制,只是换了一种更简洁的书写形式。
回答这道题需要抓住两个核心要点:
关键词组合记忆:"太长不便 → 简写替代 → 开发调试用"
注意不要混淆:八/十六进制是人类使用的书写工具,计算机内部并不"理解"它们,机器只认识0和1。
本题知识点对应教材第2章 数据的表示和运算中关于"数制与编码"的相关内容,具体涉及二进制、八进制、十六进制的概念及其相互关系。这是第2章开篇的基础知识,理解这个问题有助于深入学习后续的数据表示(补码、浮点数等)内容。
为什么动态存储器需要刷新?
动态存储器的基本单元是以栅极电容来保存信息,其容量较小,栅极电容上充上的电荷经过一段时间后就会泄漏掉(3分),为了保持信息不变,就需要定期向其补充电荷,即动态刷新(2分)。
计算机中的主存储器(内存)主要有两大类:静态存储器(SRAM,Static Random Access Memory)和动态存储器(DRAM,Dynamic Random Access Memory)。我们日常使用的电脑内存条(RAM)通常就是动态存储器(DRAM)。
这两类存储器在存储信息的物理原理上有根本的不同:
理解DRAM为何需要刷新,关键在于理解其"用电容存储信息"的工作原理。
一、动态存储器的基本存储单元结构
DRAM的每一个基本存储单元(存储1个比特信息)的核心是一个极小的电容(通常是MOS管的栅极电容)加上一个访问控制晶体管。
存储信息的规则如下:
向电容充电表示写入"1",不充电(或放掉电荷)表示写入"0"。读取时,检测电容上是否有电荷即可知道存储的是0还是1。
二、为什么电荷会丢失——电容的漏电问题
电容在物理上并不是完美的储电容器。现实中的电容器(尤其是DRAM中使用的极小的栅极电容)存在不可避免的漏电现象:电容上存储的电荷会通过绝缘层的微小缺陷、PN结的反向漏电等途径,缓慢地"流失"。
这就意味着:
DRAM中的栅极电容容量极小(通常只有几十飞法,1飞法 = 10的负15次方法拉),存储的电荷量本来就很少,漏电流虽然微小,但影响却很显著。一般DRAM的信息保持时间约为几毫秒到几十毫秒。
三、刷新的含义和方式
为了防止存储的信息因漏电而丢失,必须在信息消失之前,定期对所有存储"1"的电容进行重新充电,补足流失的电荷,使其恢复到代表"1"的电压水平。这个过程就称为动态刷新(Dynamic Refresh)。
刷新的主要特点:
四、静态存储器为何不需要刷新
对比来看,SRAM使用触发器(由晶体管构成的双稳态电路)存储信息。触发器只要有持续供电,就可以一直维持当前状态(0或1),没有"电荷泄漏"的问题,因此完全不需要刷新。这也是SRAM速度更快但成本更高的原因之一。
回答这道题的逻辑链条是:
栅极电容存信息 → 电容容量小 → 电荷会漏电泄漏 → 时间一长信息丢失 → 需要定期补充电荷 = 动态刷新
关键词:栅极电容、电荷泄漏、定期补充电荷(刷新)
答题时一定要包含两个层次:
常见错误:只说"会漏电"而不解释为什么漏电会导致信息丢失;或者只说"需要刷新"而不解释刷新的物理含义(补充电荷)。
本题知识点对应教材第5章 存储器层次结构中关于"半导体存储器"的相关内容,具体涉及动态随机存储器(DRAM)的工作原理和刷新机制。与之对应的对比知识点是静态随机存储器(SRAM),两者的区别与联系是本章的重要考点,建议一并掌握。
在中断响应周期中,通过执行一条隐指令,可以完成哪几项操作?
需要完成以下三个操作:
(1)关中断,将中断允许标志置为禁止状态;(1分)
(2)保护断点,将PC和PSW送入栈或特殊寄存器;(2分)
(3)识别中断源并转中断服务程序。(2分)
要理解这道题,需要先明白几个基本概念:
什么是中断(Interrupt)?
中断是指计算机在正常执行程序的过程中,由于某个事件(如外部设备完成了数据传输、用户按下了键盘、发生了错误等)的发生,CPU暂时中止当前正在执行的程序,转去处理这个突发事件的过程。处理完毕后,再回来继续执行原来被打断的程序。类比日常生活:你正在看书(执行程序),突然手机响了(发生中断),你放下书去接电话(处理中断),接完电话再回来继续看书(中断返回)。
什么是中断响应周期?
中断响应周期是指:CPU在检测到中断请求之后,在正式跳转去执行中断服务程序之前,CPU硬件自动完成的一系列准备工作所用的时间周期。这个周期是由硬件自动完成的,不是程序员写的程序代码,而是CPU设计时就固化在硬件逻辑中的。
什么是隐指令?
"隐指令"是指在中断响应周期中,CPU硬件自动执行的一系列操作。它被称为"隐"指令,是因为这条"指令"在指令系统中没有对应的操作码(即程序员无法通过编程来调用它),它是CPU响应中断时在硬件层面自动、隐式地执行的动作序列,对程序员"隐藏",因此得名。
什么是PC和PSW?
在中断响应周期中,隐指令完成以下三项关键操作:
操作一:关中断(1分)
CPU在响应中断时,首先要做的第一件事是"关中断",即将CPU内部的中断允许标志(IF,Interrupt Flag)置为0(禁止状态)。
为什么必须先关中断?
注意:关中断只是暂时禁止CPU响应新的中断请求,并不影响外部设备继续发出中断请求信号(这些请求会被记录下来,等中断开放后再处理)。
操作二:保护断点(2分)
CPU接下来将当前的PC值和PSW值保存到安全的地方(通常是压入内存中的堆栈,或保存到特定的寄存器中)。
为什么要保护断点?
保护断点的具体动作:
这样,在中断服务程序结束时,执行中断返回指令(如IRET),CPU就能从堆栈中弹出保存的PC和PSW,恢复到中断前的状态,继续执行被中断的程序。
操作三:识别中断源并转入中断服务程序(2分)
保护好断点之后,CPU需要确定是哪个设备或事件引发了这次中断(即识别中断源),然后跳转到对应的中断服务程序的入口地址,开始执行该程序来处理这个中断事件。
识别中断源的常用方法有两种:
确定了中断服务程序的入口地址之后,CPU将该地址送入PC,从下一个时钟周期开始,就正式进入中断服务程序的执行阶段(中断处理周期)。
三项操作的时序总结:
关中断(禁止新中断)
→ 保护断点(保存PC和PSW)
→ 识别中断源
→ 转入中断服务程序入口地址(修改PC)
→ 开始执行中断服务程序
这三项操作全部由CPU硬件自动完成,合起来就是"隐指令"的全部内容,程序员既无需也无法干预这个过程。
三项操作用口诀记忆:"关断 → 保存 → 跳转"
常见错误分析:
重要程度提示:这道题的答案是固定的,只有这三项,不多不少,务必准确记忆。
本题知识点对应教材第4章 中央处理器中关于"中断系统"和"指令执行过程"的相关内容,具体涉及中断响应周期的工作原理和隐指令的概念。中断是第4章也是整个计算机组成原理课程中的重要考点,与之相关的还有:中断优先级、中断屏蔽、中断嵌套、中断服务程序的工作流程等,建议一并学习掌握。
假设某个频繁使用的程序P在机器M1上运行需要20s,M1的时钟频率为2GHz。设计人员想开发一台与M1具有相同ISA的新机器M2。采用新技术可使M2的时钟频率增加,但同时也会使CPI增加。假定P在M2上执行时的时钟周期数是在M1上的1.5倍,则M2的时钟频率至少达到多少才能使程序P在M2上的运行时间缩短为10s?(6分)
第一步(2分):计算程序P在机器M1上的时钟周期数
CPU执行时间 = 时钟周期数 / 时钟频率,因此:
时钟周期数 = CPU执行时间 × 时钟频率 = 20s × 2GHz = 40G(即 40 × 10^9 个时钟周期)
第二步(2分):计算程序P在机器M2上的时钟周期数
M2上的时钟周期数 = 1.5 × 40G = 60G(即 60 × 10^9 个时钟周期)
第三步(2分):计算M2所需的最低时钟频率
时钟频率 = 时钟周期数 / CPU执行时间 = 60G / 10s = 6GHz
结论:M2的时钟频率至少需要达到 6GHz,才能使程序P的运行时间缩短为10s。
本题涉及计算机性能评估的核心公式,来自第4章(中央处理器)和第1章(计算机系统概述)的性能分析部分。
关键概念1:时钟频率(Clock Frequency)
时钟频率是指CPU每秒钟产生的时钟脉冲数,单位是赫兹(Hz)。1GHz = 10^9 Hz,表示每秒10亿个时钟脉冲。时钟频率越高,理论上CPU运算越快。
关键概念2:时钟周期(Clock Cycle)
时钟周期是时钟频率的倒数,即相邻两个时钟脉冲之间的时间间隔。例如时钟频率为2GHz,则时钟周期 = 1 / 2GHz = 0.5纳秒。
关键概念3:CPI(Cycles Per Instruction,每条指令的平均时钟周期数)
CPI表示CPU平均执行一条指令需要多少个时钟周期。不同指令的CPI不同,复杂指令的CPI更大。整个程序的平均CPI是所有指令CPI的加权平均值。
关键概念4:CPU执行时间公式
这是计算机体系结构中最核心的性能公式:
CPU执行时间 = 指令条数(IC) × CPI / 时钟频率
或等价地:
CPU执行时间 = 程序的总时钟周期数 / 时钟频率
其中:程序的总时钟周期数 = IC × CPI
关键概念5:ISA(Instruction Set Architecture,指令集架构)
ISA是CPU与软件之间的接口规范,定义了指令的种类、格式、寻址方式等。M1和M2具有相同的ISA,意味着同一个程序在两台机器上执行相同的指令序列(即指令条数IC相同),但由于硬件实现不同,CPI可能不同。
已知条件整理:
第一步:求P在M1上的总时钟周期数
由公式:CPU执行时间 = 总时钟周期数 / 时钟频率
变形得:总时钟周期数 = CPU执行时间 × 时钟频率
代入数值:
cycles_M1 = T_M1 × f_M1
cycles_M1 = 20s × 2 × 10^9 Hz
cycles_M1 = 40 × 10^9
cycles_M1 = 40G(40亿个时钟周期)
第二步:求P在M2上的总时钟周期数
题目说明:P在M2上执行时的时钟周期数是在M1上的1.5倍
cycles_M2 = 1.5 × cycles_M1
cycles_M2 = 1.5 × 40G
cycles_M2 = 60G(60亿个时钟周期)
注意:时钟周期数增加是因为M2的CPI增大了(尽管时钟频率也提高了)。这体现了一个常见的工程权衡:提高时钟频率往往伴随着流水线级数增加或其他复杂度提升,导致每条指令需要更多时钟周期。
第三步:求M2所需的最低时钟频率
由公式:CPU执行时间 = 总时钟周期数 / 时钟频率
变形得:时钟频率 = 总时钟周期数 / CPU执行时间
将M2的数据代入:
f_M2 = cycles_M2 / T_M2
f_M2 = 60 × 10^9 / 10s
f_M2 = 6 × 10^9 Hz
f_M2 = 6GHz
验证:
如果 f_M2 = 6GHz,T_M2 = cycles_M2 / f_M2 = 60G / 6GHz = 10s,满足题目要求。
性能提升分析:
M2的时钟频率从2GHz提升到6GHz,提升了3倍。但由于时钟周期数也从40G增加到60G(增加了1.5倍),最终执行时间从20s缩短到10s,仅提升了2倍。这说明单纯提高时钟频率并不能线性地提升程序性能,还需要考虑CPI的变化。
核心公式(必须牢记):
CPU执行时间 T = 总时钟周期数 / 时钟频率
总时钟周期数 = IC(指令条数) × CPI
因此:T = IC × CPI / f
变形公式(根据题目求不同量):
单位换算(常见考点):
做题思路口诀:先求M1的总周期数(时间×频率),再乘以倍数得M2的总周期数,最后用总周期数除以目标时间得所需频率。
本题知识点来源于教材第1章 计算机系统概述中的"计算机性能评价"部分,以及第4章 中央处理器中关于CPU性能的相关内容。
具体对应知识点:
这类题目在历年自考中频繁出现,属于必考计算题,需要熟练掌握公式的各种变形。
将十进制数160转换为IEEE754的单精度(32位)浮点数格式,要求最后格式用十六进制数表示。注:IEEE754单精度浮点数的计数公式为(-1)^s × 1.f × 2^(E-127),其中符号位1位,阶码8位,尾数23位。(6分)
第一步(1分):将十进制数转换成二进制数
(160)10 = (10100000)2
第二步(1分):规格化二进制数
移动小数点,使其在第1、2位之间:10100000 = 1.0100000 × 2^7
第三步(1分):计算移码表示的阶码E
阶码真值 e = 7,偏置值 = 127
阶码 E = (127 + 7)10 = (134)10 = (10000110)2
第四步(1分):以单精度(32位)浮点数格式存储该数
符号位 S = 0(正数)
阶码 E = 10000110
尾数 f = 01000000000000000000000(共23位)
32位二进制存储格式为:
0 10000110 01000000000000000000000
第五步(2分):转换为十六进制
结果为:(43200000)16
本题涉及第2章(数据的表示和运算)中浮点数的表示方法,是计算机组成原理中最重要的数据表示格式之一。
什么是IEEE754标准?
IEEE754是美国电气和电子工程师学会(IEEE)制定的浮点数运算标准,1985年发布,目前几乎所有计算机都遵循此标准。它规定了浮点数在计算机中的存储格式,使得不同计算机之间能够交换浮点数数据。
单精度浮点数的格式(共32位):
| S(1位) | E(8位) | f(23位) |
| 符号位 | 阶码 | 尾数 |
什么是规格化?
规格化是指将一个二进制数调整为 1.xxx × 2^n 的形式,其中整数部分固定为1。这样做的好处是可以多存储一位有效数字(因为整数的1不需要存储)。
什么是移码(偏置码)?
移码是一种表示阶码的方式,等于真实指数加上一个固定的偏置值(bias)。单精度浮点数的偏置值为127,双精度为1023。使用移码的好处是可以用无符号整数比较来比较浮点数的大小,简化硬件设计。
第一步:将十进制整数160转换为二进制
方法:用160连续除以2,记录余数,从下往上读取余数即为二进制结果。
160 ÷ 2 = 80 余 0 (最低位)
80 ÷ 2 = 40 余 0
40 ÷ 2 = 20 余 0
20 ÷ 2 = 10 余 0
10 ÷ 2 = 5 余 0
5 ÷ 2 = 2 余 1
2 ÷ 2 = 1 余 0
1 ÷ 2 = 0 余 1 (最高位)
从最高位到最低位读取余数:(160)10 = (10100000)2
验证:1×2^7 + 0×2^6 + 1×2^5 + 0×2^4 + 0×2^3 + 0×2^2 + 0×2^1 + 0×2^0 = 128 + 32 = 160,正确。
第二步:规格化二进制数
原始二进制数:10100000(这是一个整数,小数点在最右边:10100000.0)
需要将其表示为 1.xxx × 2^n 的形式:
10100000.0 = 1.0100000 × 2^7
解释:小数点向左移动了7位,所以指数为7。移动后整数部分的1就是隐含位,不需要存储。尾数部分(小数点后面)为 0100000。
第三步:计算阶码E(移码表示)
真实指数(阶码真值)e = 7
偏置值 bias = 127(IEEE754单精度规定)
存储的阶码 E = e + bias = 7 + 127 = 134
将134转换为8位二进制:
134 ÷ 2 = 67 余 0
67 ÷ 2 = 33 余 1
33 ÷ 2 = 16 余 1
16 ÷ 2 = 8 余 0
8 ÷ 2 = 4 余 0
4 ÷ 2 = 2 余 0
2 ÷ 2 = 1 余 0
1 ÷ 2 = 0 余 1
从高位到低位:(134)10 = (10000110)2
验证:1×128 + 0×64 + 0×32 + 0×16 + 0×8 + 1×4 + 1×2 + 0×1 = 128 + 4 + 2 = 134,正确。
第四步:组装32位浮点数
符号位S:160是正数,S = 0
阶码E(8位):10000110
尾数f(23位):规格化后小数点后面的部分是 0100000,共7位,后面补0到23位,得到:01000000000000000000000
组装结果:
位序: 31 30-23 22-0
内容: 0 10000110 01000000000000000000000
完整32位:0 10000110 01000000000000000000000
第五步:将32位二进制转换为十六进制
方法:每4位二进制对应1位十六进制。将32位分成8组,每组4位:
0100 | 0011 | 0010 | 0000 | 0000 | 0000 | 0000 | 0000
重新分组(从左到右,每4位一组):
0 1000 0110 0100 0000 0000 0000 0000 0000
注意:先写出完整的32位:
0 1000 0110 0100 0000 0000 0000 0000 0000
去掉空格,32位连续写出:
01000011001000000000000000000000
每4位一组:
0100 | 0011 | 0010 | 0000 | 0000 | 0000 | 0000 | 0000
4 3 2 0 0 0 0 0
逐组对应:
最终结果:(43200000)16
详细分组验证:
32位二进制:0 10000110 01000000000000000000000
去掉空格后:01000011001000000000000000000000
每4位分组:0100 | 0011 | 0010 | 0000 | 0000 | 0000 | 0000 | 0000
对应十六进制:4 | 3 | 2 | 0 | 0 | 0 | 0 | 0
结果:43200000(十六进制)
IEEE754单精度浮点数结构(必须牢记):
32位 = 1位符号S + 8位阶码E + 23位尾数f
偏置值 bias = 127(单精度)
存储的阶码 E = 真实指数 e + 127
表示的数值 = (-1)^S × 1.f × 2^(E-127)
转换步骤口诀(五步法):
常见易错点:
快速验证方法:最终结果代入公式(-1)^S × 1.f × 2^(E-127),看能否还原为原始数值。
本题知识点来源于教材第2章 数据的表示和运算中的"浮点数的表示"部分。
具体对应知识点:
IEEE754浮点数转换是历年自考的必考计算题,建议熟练掌握五步转换法,并多做练习题巩固。
假定某同步总线在一个总线时钟周期内传送一个8字节的数据,总线时钟频率为66MHz,则总线带宽是多少?如果总线宽度改为256位,一个时钟周期能传送两次数据,总线时钟频率为133MHz,则总线带宽是多少?(6分)
第一问(3分):原始总线的带宽
根据总线带宽计算公式:B = W × F / N
其中:W = 8B(每次传送8字节),F = 66MHz(时钟频率),N = 1(每次传送需要1个时钟周期)
B = 8B × 66MHz / 1 = 528MB/s
第二问(3分):改进后总线的带宽
总线宽度改为256位 = 256/8 = 32字节,一个时钟周期传送两次数据,时钟频率133MHz
B = (256/8)B × 133MHz × 2 = 32B × 133MHz × 2 = 8512MB/s
本题涉及第6章(互连及输入输出组织)中总线的性能指标,是理解计算机系统I/O性能的重要基础。
什么是总线(Bus)?
总线是连接计算机内部各个部件(CPU、内存、I/O设备等)的公共传输通道。它就像一条公共道路,所有需要相互通信的部件都通过这条道路传送信息。总线通常由一组导线组成,分为数据总线、地址总线和控制总线三类。
什么是同步总线?
同步总线是指总线上所有设备的操作都由一个统一的时钟信号控制的总线。每个时钟周期内可以执行固定的操作,节拍规整,设计简单。与之对应的是异步总线(使用握手协议,没有统一时钟)。
总线带宽的核心概念:
总线带宽计算公式:
B = W × F / N
其中:
B = 总线带宽(MB/s)
W = 每次传输的数据量(B,字节)
F = 总线时钟频率(MHz)
N = 每次传输所需的时钟周期数
注意:当"一个时钟周期内传送两次数据"时,相当于N=0.5(每次传输只需半个周期),或者等价地理解为实际每秒传输次数 = F × 2,此时公式变为 B = W × F × (1/N) = W × F × 2。
第一问:计算原始总线的带宽
已知条件:
套用公式:
B = W × F / N
B = 8B × 66MHz / 1
B = 8 × 66 MB/s
B = 528 MB/s
单位说明:B(字节)× MHz(= 10^6次/秒)= 10^6 B/s = MB/s,单位自然成立。
物理含义解释:这条总线每秒钟能传送528兆字节的数据。具体来说,每秒有6600万(66×10^6)个时钟周期,每个周期传送8字节,所以每秒共传送 66×10^6 × 8 = 528×10^6 字节 = 528MB。
第二问:计算改进后总线的带宽
已知条件:
套用公式(N=1/2,即1个周期传2次):
B = W × F × (每个周期传输次数)
B = W × F / N
B = 32B × 133MHz / (1/2)
B = 32B × 133MHz × 2
B = 32 × 133 × 2 MB/s
B = 32 × 266 MB/s
B = 8512 MB/s
计算过程展开:
32 × 133 = 4256
4256 × 2 = 8512
结果:B = 8512 MB/s
物理含义解释:改进后的总线每秒钟能传送8512兆字节的数据。具体来说,每秒有1.33亿(133×10^6)个时钟周期,每个周期传送2次,每次传送32字节,所以每秒共传送 133×10^6 × 2 × 32 = 8512×10^6 字节 = 8512MB。
性能对比:
改进后的带宽 / 改进前的带宽 = 8512 / 528 = 16.12倍
性能提升来源分析:
核心公式(必须牢记):
总线带宽 B = W × F / N
W = 每次传输的数据宽度(字节)
F = 总线时钟频率(MHz)
N = 每次传输所需时钟周期数
B 的单位 = MB/s
常用变形:
单位换算(必须注意):
做题口诀:"宽度转字节、频率乘以次、周期在分母"。先把总线宽度换算成字节,乘以时钟频率,再根据每次传输需要几个周期(在分母)或每个周期传几次(乘以倍数)来调整。
常见易错点:
本题知识点来源于教材第6章 互连及输入输出组织中的"总线"部分,具体是总线性能指标的相关内容。
具体对应知识点:
总线带宽计算是历年自考的常考计算题,题目形式相对固定,重点在于正确套用公式,注意单位换算,以及正确理解"每个周期传N次"和"传一次需N个周期"的区别。
某计算机字长16位,采用16位定长指令格式,部分数据通路结构如题33图所示。假设MAR的输出一直处于使能状态。
(1)加法指令"ADD (R2),(R1)"在执行阶段需要多少个节拍?
(2)写出每个节拍的功能和有效控制信号。
注:该指令功能为:M[R[R2]] <-- M[R[R2]] + M[R[R1]]
寄存器堆 ALU 运算部件
+----------+ +-----------+
| R1 [R1out] ---+ | |
| R2 [R2out] ---+--[内部总线]--> A 输入 |
| ... | | | |
| RN [RNout] --+ | B 输入 <--[Y寄存器]<--[Yin]
| R1in / RNin| | |
+----------+ | ADD/SUB |
| 1->Co |
IR PC +-----------+
|
[Z 寄存器] [Zout]
|
+---[内部总线]<-------------------+
|
+---> MAR [MARin] ---[地址总线]---> 主存
|
+---> MDR [MDRin] <--[数据总线]---> 主存
[MDRout]
[MemR / MemW 控制信号]
说明:内部总线连接各寄存器输出与 ALU/MAR/MDR 输入;MAR 输出一直使能,地址总线始终有效。
(1)需要 8 个节拍。(2分)
(2)各节拍控制信号与功能:
| 节拍 | 有效控制信号 | 微操作功能 | 分值 |
|---|---|---|---|
| 节拍 1 | R1out, MARin | MAR <-- (R1) | 1分 |
| 节拍 2 | MemR | MDR <-- M(MAR),即读取 M[R1] 的内容到 MDR | 1分 |
| 节拍 3 | MDRout, Yin | Y <-- (MDR),将第一个操作数暂存到 Y | 1分 |
| 节拍 4 | R2out, MARin | MAR <-- (R2),取第二个操作数的地址 | 1分 |
| 节拍 5 | MemR | MDR <-- M(MAR),即读取 M[R2] 的内容到 MDR | 1分 |
| 节拍 6 | MDRout, ADD | Z <-- (MDR) + (Y),ALU 执行加法,结果存入 Z | 2分 |
| 节拍 7 | Zout, MDRin | MDR <-- (Z),将运算结果送入 MDR 准备写回 | 1分 |
| 节拍 8 | MemW | M(MAR) <-- (MDR),将结果写回到 M[R2](MAR 仍保持 R2 的地址) | 2分 |
注:节拍 8 能正确写回,是因为 MAR 的输出一直使能,且节拍 4 已将 R2 的地址装入 MAR,到节拍 8 时 MAR 中地址未被改变,故直接执行写操作即可。
一、什么是数据通路?
数据通路(Data Path)是计算机 CPU 内部用于传送和处理数据的硬件结构,由寄存器、算术逻辑单元(ALU)、内部总线、多路选择器等部件组成。CPU 执行每一条指令,都是通过一系列控制信号驱动数据在通路上流动来实现的。
二、关键部件含义
三、什么是节拍?
CPU 的工作是由时钟节拍(Clock Cycle,也称为节拍、时钟周期)驱动的。每个节拍内,控制器发出一组控制信号,完成一个或若干个基本的微操作(如寄存器传送、ALU 运算等)。执行一条复杂指令往往需要多个节拍才能完成。节拍数越少,指令执行效率越高。
四、寻址方式:寄存器间接寻址
指令"ADD (R2),(R1)"中,(R1) 和 (R2) 表示寄存器间接寻址:操作数不在寄存器 R1、R2 中,而在以 R1、R2 的内容为地址的主存单元中。即:
因此,执行这条指令必须两次读主存(分别取两个操作数)、一次写主存(写回结果),共三次访存,这是节拍数较多(8个)的根本原因。
第(1)问:执行阶段需要几个节拍?
分析这条指令 M[R[R2]] <-- M[R[R2]] + M[R[R1]] 的执行过程,CPU 需要完成以下工作:
合计:2 + 1 + 2 + 1 + 1 + 1 = 8 个节拍。
第(2)问:各节拍详细分析
节拍 1:R1out, MARin → MAR <-- (R1)
目的:为读取第一个操作数做地址准备。R1out 信号打开,R1 的内容(即第一个操作数的主存地址)被送上内部总线;同时 MARin 信号打开,将总线上的值写入 MAR。执行后,MAR 中存放的是 R1 的值。
节拍 2:MemR → MDR <-- M(MAR)
目的:从主存读取第一个操作数。发出 MemR(内存读)信号,主存根据地址总线上的 MAR 值(即 R1),将对应单元 M[R1] 的数据通过数据总线送入 MDR。这一步通常需要等待主存的存取时间,因此单独占用一个节拍。
节拍 3:MDRout, Yin → Y <-- (MDR)
目的:将第一个操作数暂存到 Y,腾出 MDR 供后续读取第二个操作数使用。MDRout 打开,MDR 中的内容(M[R1] 的值)送上内部总线;Yin 打开,将总线数据写入 Y 寄存器。此后 Y 中保存了 M[R1],作为 ALU 的 B 端输入。
节拍 4:R2out, MARin → MAR <-- (R2)
目的:为读取第二个操作数做地址准备。R2out 打开,R2 的内容(第二个操作数的主存地址)被送上内部总线;MARin 打开,将该地址写入 MAR。注意:这一步同时覆盖了节拍 1 中写入的 R1 地址,从本节拍起 MAR 中保存的是 R2 的地址,直到指令执行结束。
节拍 5:MemR → MDR <-- M(MAR)
目的:从主存读取第二个操作数(也是写回目标的地址)。发出 MemR 信号,主存根据地址总线上的 MAR 值(即 R2),将 M[R2] 的数据通过数据总线送入 MDR。此时 MDR 中存放的是 M[R2] 的值,将作为 ALU 的 A 端输入。
节拍 6:MDRout, ADD → Z <-- (MDR) + (Y)
目的:执行加法运算。MDRout 打开,MDR 中 M[R2] 的值被送上内部总线,作为 ALU 的 A 端输入;同时 Y 寄存器中保存的 M[R1] 值作为 ALU 的 B 端输入。ADD 控制信号激活 ALU 的加法功能,运算结果自动存入 Z 寄存器。这一步同时用到了两个控制信号(MDRout 和 ADD),因此分值较高(2分)。
节拍 7:Zout, MDRin → MDR <-- (Z)
目的:将运算结果从 Z 移送到 MDR,为写回主存做准备。Z 寄存器没有直接连接数据总线到主存的通路,必须先经过内部总线送入 MDR,再由 MDR 写入主存。Zout 打开,Z 中的结果送上内部总线;MDRin 打开,将结果写入 MDR。
节拍 8:MemW → M(MAR) <-- (MDR)
目的:将运算结果写回主存。发出 MemW(内存写)信号,MDR 中的结果通过数据总线写入 MAR 所指的主存地址。此时 MAR 中保存的仍是节拍 4 写入的 R2 地址(期间未被修改),因此写回的目标地址正是 M[R2],完全符合指令语义。
关键说明:题目指出"MAR 的输出一直处于使能状态",这意味着无论何时,MAR 中的内容都通过地址总线持续输出给主存,不需要额外的使能信号。这是节拍 8 能正确执行写操作的硬件保证。
节拍数为什么是 8 而不更少?
有同学可能会问:能否合并某些节拍?一般而言,在单总线结构中,同一节拍内只允许一个部件向总线输出,且读写主存通常需要独立节拍(因为访存时间较长)。因此:节拍 2 和 5 的读主存操作不能与其他寄存器传送合并;节拍 1、3、4、7 各自只传送一路数据,无法省略;节拍 6 同时需要 MDRout 和 ADD 已是这条路径能做到的最优;节拍 8 的写主存同样独占。所以 8 个节拍是该数据通路结构下的最优解。
本题考查内容对应教材第4章 中央处理器中的以下知识点:
重点复习:教材第4章关于"CPU 执行指令的数据流向"部分,尤其是包含寄存器间接寻址的双操作数运算指令的完整微操作序列。建议结合教材中的数据通路图,对照本题的节拍分析,逐步理解每个控制信号的作用。
某计算机主存地址空间大小为4MB,按字节编址。主存与Cache之间采用直接映射方式,块大小为1KB。Cache数据区大小为8KB。
(1)该Cache共有多少行?
(2)主存地址需要多少位?如何划分?要求说明每个字段的含义、位数和在主存地址中的位置。
(1)Cache 行数计算:(2分)
Cache 数据区大小 = 8KB,每块(每行)大小 = 1KB,因此:
Cache 行数 = 8KB / 1KB = 8 行
(2)主存地址位数与划分:(8分)
主存地址空间 = 4MB = 222 B,故主存地址长度为 22 位。(2分)
按直接映射方式,主存地址从高到低依次划分为三个字段:
| 字段名称 | 位数 | 在地址中的位置 | 含义 | 分值 |
|---|---|---|---|---|
| 标记(Tag) | 9 位 | 高 9 位(第21-13位) | 区分映射到同一 Cache 行的不同主存块 | 2分 |
| Cache 行号(Index) | 3 位 | 中间 3 位(第12-10位) | 确定该主存块映射到 Cache 中的哪一行 | 2分 |
| 块内地址(Offset) | 10 位 | 低 10 位(第9-0位) | 确定所访问字节在块内的位置 | 2分 |
主存地址结构示意:
| 标记 9位 第21~13位 |
Cache行号 3位 第12~10位 |
块内地址 10位 第9~0位 |
| 合计:9 + 3 + 10 = 22 位 | ||
一、为什么需要 Cache?
主存(DRAM)的访问速度远慢于 CPU 的运算速度,如果 CPU 每次都直接从主存取数,会大量浪费时间等待数据,造成"CPU 饥饿"。Cache(高速缓冲存储器,使用 SRAM 制造)速度远快于主存,容量较小但价格昂贵。通过将 CPU 近期频繁访问的数据提前复制到 Cache,可以让绝大多数访问命中 Cache,大大提升系统性能。
二、Cache 的基本组织:块(行)
Cache 内部以"行"为单位组织,每一行存放一个"块"的数据。"块"是 Cache 与主存之间数据交换的基本单位——每次从主存调入数据时,不是单个字节,而是整块(本题为 1KB)一起调入。每行除了存放数据本身外,还有一个"标记"字段(Tag),用于记录该行存放的是主存中哪个块的数据,以便 CPU 查找时做比对。
三、直接映射(Direct Mapping)
直接映射是最简单的 Cache 映射方式。其规则是:主存中的每个块只能映射到 Cache 中唯一确定的一行,映射关系为:
Cache 行号 = 主存块号 mod Cache 总行数
优点:实现简单,查找速度快(知道主存地址即可直接定位 Cache 行,无需搜索)。
缺点:灵活性差,若两个频繁访问的主存块恰好映射到同一 Cache 行,会反复互相驱逐,导致"抖动"(Thrashing)。
四、主存地址的三段划分
在直接映射方式下,CPU 给出的主存地址被自动划分为三个字段,硬件根据这三个字段快速定位数据:
五、按字节编址的含义
按字节编址意味着主存中每个地址对应 1 字节(8位)的存储空间。主存总大小 4MB = 4 × 220 = 222 字节,因此需要 22 位地址才能唯一标识每个字节的位置(222 个地址 = 4M 个字节)。
第(1)问:Cache 共有多少行?
思路:Cache 中每一行存放一个块的数据,块大小 = Cache 行的数据容量。因此:
Cache 行数 = Cache 数据区总大小 / 每行(每块)大小
= 8KB / 1KB = 8 行
注意:这里 8KB 指的是 Cache 的"数据区"大小,不包含每行的标记位、有效位等额外存储开销。实际 Cache 芯片的物理容量略大于 8KB,但题目已明确给出数据区大小,直接使用即可。
第(2)问:主存地址位数与字段划分
步骤一:确定主存地址总位数
主存地址空间 = 4MB = 4 × 1024 × 1024 B = 4 × 220 B = 22 × 220 B = 222 B
按字节编址,需要寻址 222 个不同地址,因此地址总线需要 22 位。
验证:222 = 4,194,304 ≈ 4M,正确。
步骤二:确定块内地址位数(最低位)
块大小 = 1KB = 1 × 1024 B = 210 B
在一个 1KB 的块内,有 210 = 1024 个字节,需要 10 位地址来区分每个字节的位置。
因此:块内地址 = 10 位(主存地址的低 10 位,即第 9 ~ 0 位)
步骤三:确定 Cache 行号位数(中间位)
Cache 共有 8 行 = 23 行,需要 3 位来编码每一行的行号(000 ~ 111)。
因此:Cache 行号 = 3 位(主存地址的中间 3 位,即第 12 ~ 10 位)
步骤四:确定标记位数(最高位)
主存地址总共 22 位,已知低 10 位是块内地址,中间 3 位是 Cache 行号,剩余高位全部作为标记:
标记位数 = 22 - 10 - 3 = 9 位(主存地址的高 9 位,即第 21 ~ 13 位)
步骤五:验证——主存共有多少块?标记能区分多少组?
主存总大小 = 222 B,块大小 = 210 B,故主存总块数 = 222 / 210 = 212 = 4096 块。
Cache 有 8 行,每组(同一 Cache 行)对应 4096 / 8 = 512 = 29 个主存块,需要 9 位标记来区分,与计算结果完全吻合。
直接映射工作过程举例
假设 CPU 访问主存地址(22位二进制):
0 1 1 0 1 0 1 0 0 | 1 0 1 | 0 0 1 1 0 0 1 0 1 0
高9位(标记)= 011010100,中3位(行号)= 101(=5),低10位(块内)= 0011001010
本题考查内容对应教材第5章 存储器层次结构中的以下知识点:
重点复习:教材第5章中直接映射方式下主存地址三字段划分的完整例题,以及直接映射、全相联映射、组相联映射的对比表格。考试中 Cache 相关计算题几乎每次必考,要求能熟练推导地址位数和各字段长度。