在计算机内部,指令信息采用的表示形式是
计算机是一种电子设备,其内部的所有信息(包括数据和指令)都是通过电信号来表示和处理的。电信号只有两种稳定状态:高电平和低电平,分别对应二进制中的1和0。因此,计算机内部只能识别和处理二进制信息。指令是告诉计算机"做什么"和"怎么做"的命令,在计算机内部同样以二进制序列的形式存储和传输。八进制、十进制和十六进制只是人们为了方便阅读和书写而使用的表示方式,计算机内部并不直接使用这些进制。
A. 二进制序列 -- (正确) 计算机内部一切信息,包括指令和数据,都采用二进制编码表示。这是由计算机的物理特性(电子器件的两种稳定状态)决定的。
B. 八进制序列 -- (错误) 八进制是一种简写形式,常用于某些编程场景中方便人类阅读,但计算机内部不以八进制形式存储或处理信息。
C. 十进制序列 -- (错误) 十进制是人类日常生活中最常用的计数方式,但计算机内部并不使用十进制。虽然存在BCD码等十进制编码方案,但那本质上仍是用二进制来表示十进制数字。
D. 十六进制序列 -- (错误) 十六进制常被程序员用来简写较长的二进制串(每4位二进制对应1位十六进制),但这只是人类的书写习惯,计算机内部仍然使用二进制。
核心结论:计算机内部的一切信息(数据和指令)都以二进制形式表示。原因是计算机由电子器件构成,电子器件只有高电平和低电平两种稳定状态,天然对应二进制的1和0。记住一句话:"计算机内部只认识0和1"。
第1章 计算机系统概述
若传送的是字符A,其ASCII码为1000001,采用偶校验方式传送8位编码,首位增加奇偶校验位后的编码表示是
校验码是一种检测数据传输或存储过程中是否出错的简单方法。奇偶校验是最基本的校验方式之一。其原理如下:在原始数据位之外,额外增加一个校验位(0或1),使得整个编码中"1"的个数满足特定要求。"偶校验"要求整个编码(包括校验位在内)中"1"的总个数为偶数;"奇校验"则要求"1"的总个数为奇数。本题中,字符A的ASCII码是1000001(7位),其中有2个"1"。采用偶校验时,需要在首位(最高位)添加一个校验位,使得8位编码中"1"的总数为偶数。
A. 01000001 -- (正确) 原始数据1000001中有2个"1"(第7位和第1位),2已经是偶数。因此校验位应为0,使总的"1"的个数保持为偶数(0+2=2,偶数)。在首位加0后得到01000001。
B. 11000001 -- (错误) 如果首位加1,则整个编码中"1"的个数为1+2=3,是奇数,不满足偶校验的要求。这个选项适用于奇校验而非偶校验。
C. 10000010 -- (错误) 这个编码的后7位是0000010,与字符A的ASCII码1000001不同,数据部分已被改变,不正确。
D. 10000011 -- (错误) 这个编码的后7位是0000011,同样与字符A的ASCII码1000001不同,数据部分被改变,不正确。
偶校验的口诀:"整体含1为偶数"。做题步骤:(1) 先数原始数据中有几个1;(2) 如果1的个数已经是偶数,校验位填0;如果是奇数,校验位填1。注意区分"偶校验"和"奇校验",以及校验位添加的位置(本题是加在首位/最高位)。
第2章 数据的表示和运算
下列各种寻址方式中不需要从存储器中取操作数的是
寻址方式是指CPU如何找到指令中所需操作数的方法。不同的寻址方式决定了操作数存放在哪里以及如何获取。计算机中,数据可以存放在两个地方:(1) 寄存器 -- 位于CPU内部,速度极快;(2) 主存储器(内存) -- 位于CPU外部,速度相对较慢。如果操作数在寄存器中,就不需要访问存储器;如果操作数在主存中,则需要访问存储器才能取到数据。
A. 直接寻址 -- (错误) 直接寻址是指指令中直接给出操作数在主存中的地址,CPU需要根据这个地址去主存中读取操作数,因此需要访问存储器。
B. 相对寻址 -- (错误) 相对寻址是指将程序计数器PC的内容与指令中的偏移量相加,得到操作数的有效地址,然后根据该地址去主存取操作数。因此需要访问存储器。
C. 寄存器直接寻址 -- (正确) 寄存器直接寻址是指操作数就存放在CPU内部的寄存器中,指令中给出的是寄存器编号。CPU直接从指定寄存器中取出操作数即可,完全不需要访问主存储器。这是速度最快的寻址方式。
D. 寄存器间接寻址 -- (错误) 寄存器间接寻址是指寄存器中存放的不是操作数本身,而是操作数在主存中的地址。CPU先从寄存器中取出地址,然后再根据这个地址去主存中取操作数,因此仍需要访问存储器。
关键区分:只有"寄存器直接寻址"的操作数直接在寄存器中,不需要访问主存。而"寄存器间接寻址"虽然名称中也有"寄存器",但寄存器中存的是地址而非操作数,最终仍需访问主存。凡是名称中带"间接"的寻址方式,都意味着至少需要一次额外的存储器访问。
第3章 指令系统
计算机中完成对指令译码的部件是
计算机的五大基本部件是:运算器、控制器、存储器、输入设备和输出设备。每个部件有明确的分工。指令的执行过程通常分为:取指(从存储器取出指令)、译码(分析指令的含义)、执行(完成指令规定的操作)等阶段。"译码"是指对已取出的指令进行分析,确定该指令要执行什么操作、操作数在哪里等信息。这项工作由控制器中的指令译码器完成。
A. 运算器 -- (错误) 运算器负责"做计算",不负责"分析指令含义"。
B. 控制器 -- (正确) 控制器包含指令译码器,负责对取出的指令进行译码分析,确定操作类型和操作数,然后产生相应的控制信号来指挥其他部件工作。
C. 存储器 -- (错误) 存储器负责存放数据和程序,不具备分析指令的能力。
D. 输入输出设备 -- (错误) 输入输出设备负责与外部世界交互,与指令译码无关。
口诀:"取指译码看控制,算术逻辑找运算"。控制器是计算机的"指挥中心"。
第4章 中央处理器
MIPS计算机的汇编指令"sub $s1, $s2, $s3"的功能是
MIPS是一种经典的精简指令集计算机(RISC)体系结构。MIPS的算术指令遵循固定格式:操作码 目的寄存器, 源寄存器1, 源寄存器2。其中"sub"是减法指令(subtract的缩写),第一个操作数始终是目的操作数(存放结果),后面两个是源操作数。
A. $s1=$s2-$s3 -- (正确) 按照MIPS指令的标准格式"op rd, rs, rt",sub $s1, $s2, $s3表示将$s2的值减去$s3的值,结果存入$s1。
B. $s2=$s1-$s3 -- (错误) 错误地将$s2当作目的寄存器。
C. $s3=$s1-$s2 -- (错误) 目的寄存器和源操作数都搞错了。
D. $s3=$s1 & $s2 -- (错误) 目的寄存器错误,且将减法错误地理解为按位与运算。
MIPS三操作数指令的格式口诀:"操作 目的, 源1, 源2",即第一个寄存器接收结果,后两个寄存器提供操作数。sub rd, rs, rt 的含义是 rd = rs - rt。
第3章 指令系统
下列MIPS指令助记符中实现条件分支的是
"条件分支"是指根据某个条件来决定接下来执行哪段代码。在MIPS指令集中,以"b"开头的指令通常是分支指令(Branch)。
A. lw (Load Word) -- (错误) "取字"指令,从内存加载数据到寄存器。
B. sll (Shift Left Logical) -- (错误) "逻辑左移"指令,移位操作。
C. jr (Jump Register) -- (错误) "寄存器跳转"指令,是无条件跳转,不是条件分支。
D. bne (Branch if Not Equal) -- (正确) "不等则分支"指令,比较两个寄存器的值,不相等就跳转,是典型的条件分支指令。
MIPS中条件分支指令以"b"开头(beq、bne等),无条件跳转以"j"开头(j、jal、jr)。关键区分:条件分支需要判断条件,无条件跳转直接跳。
第3章 指令系统
有一个128KB的主存储器,按字节编址需要地址线
地址线的数量决定了存储器能够寻址的最大空间。n条地址线可以产生2^n个不同的地址。按字节编址意味着每个地址对应一个字节。128KB = 128 x 1024 = 131072字节 = 2^17字节,理论上需要17条地址线。
A. 4条 -- (错误) 4条地址线只能寻址2^4 = 16个字节,远不够。
B. 7条 -- (官方答案) 7条地址线只能寻址2^7 = 128个字节。从数学计算来看,128KB = 2^17字节应需要17条地址线。此处官方答案存在争议,可能题目原文为"128B"或选项存在印刷错误。考试中建议按正确计算方法理解(128KB需17条),但若选项限制则选B。
C. 10条 -- (错误) 10条地址线可寻址2^10 = 1KB,不够128KB。
D. 20条 -- (错误) 20条地址线可寻址2^20 = 1MB,大于128KB,但不是最精确的答案。
计算地址线数量:将存储容量换算为字节数,表示为2的幂次,幂次就是地址线条数。关键换算:1KB = 2^10 B,1MB = 2^20 B。例如128KB = 2^7 x 2^10 = 2^17 B,需要17条地址线。
第5章 存储器层次结构
按存取方式分类,磁盘存储器属于
存储器按存取方式分为:随机存取(RAM,如内存)、顺序存取(SAM,如磁带)、直接存取(DAM,如磁盘)。磁盘先直接定位到目标磁道,再在磁道内顺序查找扇区,是"先直接后顺序"的方式。
A. 随机存取存储器 -- (错误) 内存(RAM)是随机存取,磁盘访问时间因位置不同而不同。
B. 顺序存取存储器 -- (错误) 磁带是顺序存取,磁盘不需要从头顺序查找。
C. 直接存取存储器 -- (正确) 磁盘先直接移动磁头到目标磁道,再等待目标扇区旋转到磁头下方。
D. 只读存储器 -- (错误) 只读存储器是按功能分类,磁盘可读可写。
典型对应:随机存取=内存;顺序存取=磁带;直接存取=磁盘。
第5章 存储器层次结构
计算机中的硬盘属于
计算机存储系统分为内存(主存)和外存(辅助存储器)。内存速度快、容量小、易失性;外存速度慢、容量大、非易失性。硬盘属于外存。
A. 运算器 -- (错误) 运算器是CPU内部执行运算的部件。
B. 控制器 -- (错误) 控制器是CPU内部负责指挥的部件。
C. 内存 -- (错误) 内存指半导体存储器(DRAM),直接与CPU交互。
D. 外存 -- (正确) 硬盘是最典型的外存设备,容量大、速度慢、非易失性。
存储器层次从快到慢:寄存器 > Cache > 内存 > 外存(硬盘)。CPU不能直接访问外存数据,必须先调入内存。
第5章 存储器层次结构
中断响应过程中的保存断点是指
中断时CPU需要保存"断点"以便处理完中断后返回原程序。"断点"就是被中断程序的返回地址,即PC中保存的下一条指令地址。
A. 将PSW压入堆栈 -- (错误) 保存PSW属于"保存现场",不是"保存断点"。
B. 将PC压入堆栈 -- (正确) PC中保存的是下一条要执行的指令地址,即返回地址。保存PC就是"保存断点"。
C. 将IR压入堆栈 -- (错误) IR中是当前指令内容,已执行完毕,不需要保存。
D. 将SP压入堆栈 -- (错误) SP是栈顶指针,保存SP没有意义。
"断点" = "返回地址" = PC的内容。保存断点就是将PC压入堆栈。注意区分"保存断点"(只保存PC)和"保存现场"(保存各寄存器和PSW)。
第6章 互连及输入输出组织
在读磁盘过程中,适配器向主机发出DMA请求是在
DMA(直接存储器访问)允许外设直接与内存交换数据。读磁盘时,数据先暂存在扇区缓冲器中,缓冲器满了才发DMA请求传送到内存。
A. 扇区缓冲器满时 -- (正确) 读操作中,数据从磁盘填入缓冲器,装满后发DMA请求批量传送到内存。
B. 扇区缓冲器空时 -- (错误) 空时发DMA请求适用于"写磁盘"场景。
C. 寻道完成时 -- (错误) 寻道完成后还没开始读数据,不需要DMA。
D. 启动磁盘时 -- (错误) 刚启动还没有数据可传。
口诀:"读满写空发DMA"。读操作缓冲器满了发请求,写操作缓冲器空了发请求。
第6章 互连及输入输出组织
打印机接口应选用
数据传送方式:程序查询方式(CPU不断查询,效率极低)、中断方式(外设准备好后通知CPU)、DMA方式(外设直接与内存传数据,适合高速大批量)。
A. 程序直接控制传送接口 -- (错误) 效率太低,打印机速度慢会浪费大量CPU时间。
B. DMA接口 -- (错误) DMA适合高速设备如磁盘,打印机是低速设备没必要。
C. 中断接口 -- (正确) 打印机是低速外设,中断方式最合适,打印期间CPU可做其他工作。
D. PCI总线接口 -- (错误) PCI用于连接高速设备,打印机不需要。
低速设备(打印机、键盘)用中断方式;高速设备(磁盘)用DMA方式。
第6章 互连及输入输出组织
在多重中断控制方式下,若外设有新的中断请求向CPU提出,则CPU
多重中断(中断嵌套)允许高优先级中断打断低优先级中断的处理。CPU遵循"只响应更高优先级"的原则。
A. 一定会响应 -- (错误) 低优先级的不会被响应。
B. 一定不会响应 -- (错误) 高优先级的会被响应。
C. 响应优先级更高的中断请求 -- (正确) 多重中断的核心规则。
D. 响应优先级更低的中断请求 -- (错误) 与优先级原则完全相反。
多重中断原则:"高可以打断低,低不能打断高"。实现条件:中断服务程序中开中断 + 优先级排队机制。
第6章 互连及输入输出组织
串行接口指接口与系统总线之间、接口与外设之间采用的数据总线传送方式,分别是
串行接口的命名是根据接口与外设之间的传送方式命名的。接口与系统总线之间始终是并行传送(因为系统总线本身是并行的),而接口与外设之间采用串行传送。
A. 串行、串行 -- (错误) 接口与系统总线之间是并行的。
B. 并行、串行 -- (正确) 内部并行、外部串行,所以叫"串行"接口。
C. 并行、并行 -- (错误) 这是并行接口。
D. 串行、并行 -- (错误) 两边搞反了。
口诀:"内并外串叫串口,内并外并叫并口"。无论串行还是并行接口,与系统总线之间都是并行的。
第6章 互连及输入输出组织
单地址指令
单地址指令只显式给出一个操作数的地址,但可以有两种用法:(1) 单操作数运算(如取反、自增);(2) 双操作数运算时,另一个操作数隐含在累加器ACC中(如ADD X表示ACC = ACC + M(X))。
A. 只能对单操作数进行加工处理 -- (错误) 也能处理双操作数(另一个隐含在ACC中)。
B. 只能对双操作数进行加工处理 -- (错误) 也能处理单操作数(如NOT、INC)。
C. 无处理双操作数的功能 -- (错误) 通过隐含寻址可以处理双操作数。
D. 既能对单操作数,也能对双操作数进行加工处理 -- (正确) 单地址指令具有双重功能。
关键词:"隐含寻址"。单地址指令虽然只写了一个地址,但累加器ACC作为隐含操作数也可以参与运算,因此既能处理单操作数也能处理双操作数。
第3章 指令系统
按照在计算机上完成任务的不同,可以把使用计算机的用户分成以下4类:最终用户、系统管理员、______和______。
计算机用户按照与计算机打交道的"深度"分为四类:最终用户(只用软件)、系统管理员(维护系统)、应用程序员(开发应用软件)、系统程序员(开发系统软件,最接近硬件)。
这四类用户从"离硬件最远"到"离硬件最近"依次是:最终用户 -> 系统管理员 -> 应用程序员 -> 系统程序员。应用程序员使用高级语言开发应用软件(如App、游戏);系统程序员开发操作系统、编译器、驱动程序等底层系统软件,需要深入了解硬件。
用户四分类 = 终用 + 管理 + 应用开发 + 系统开发。题目已给出前两类,要填后两类程序员。
第1章 计算机系统概述
指令所处理的基本数据类型分为______和______两种。
数值数据表示数量大小,可以做算术运算(如整数、浮点数);非数值数据不表示数量,包括逻辑数据(真/假)和字符数据(ASCII码、汉字编码等)。
这是一个二分法:所有数据不是数值就是非数值。数值数据关注"量的大小",非数值数据关注"信息的符号表示"。
数据 = 数值(能算的数字)+ 非数值(文字、符号、逻辑值)。
第2章 数据的表示和运算
CPU最基本的组成部件是______和______。
CPU = 数据通路(Datapath)+ 控制部件(Control Unit)。数据通路包含ALU、寄存器组和内部总线,负责数据的运算和传输;控制部件负责发出控制信号来指挥数据通路工作。
数据通路负责"干活"(运算和搬运数据),控制部件负责"指挥"(分析指令、发出控制信号)。两者缺一不可。
CPU = "一个干活 + 一个指挥"。注意标准表述是"数据通路"和"控制部件",而非"运算器"和"控制器"。
第4章 中央处理器
虚拟存储器分成三种不同类型,分别是分页式、______和______。
虚拟存储器用硬盘扩展内存,三种类型按划分方式不同:分页式(固定大小的页)、分段式(按逻辑结构的段)、段页式(先分段再分页,是前两者的结合)。
分页式管理简单但不考虑程序逻辑;分段式符合逻辑结构但易产生碎片;段页式兼具两者优点,现代OS多采用。
口诀:"页段段页"。已给出分页式,填分段式和段页式。
第5章 存储器层次结构
对I/O接口中可访问的寄存器编址,其方式有______和______两种。
独立编址:I/O和内存各有各的地址空间,需专用I/O指令(如x86的IN/OUT)。统一编址:I/O和内存共用地址空间,用普通内存指令即可访问I/O(如ARM)。
独立编址 = 两套地址 + 专用I/O指令;统一编址 = 一套地址 + 通用内存指令。各有优缺点。
"独立"= 分开编地址,需专门指令;"统一"= 共用地址空间,用普通指令。
第6章 互连及输入输出组织
指令
指令(Instruction)是计算机能够直接识别和执行的最基本命令,由二进制代码构成。一条指令包含操作码(做什么操作)和地址码(对什么数据做操作)两部分。指令不同于程序:一条指令只完成一个基本操作,程序是多条指令的有序集合。
答题抓住三个关键点:(1) 形式上是0和1组成的二进制序列;(2) 作用是指示CPU工作;(3) 完成的是一个特定的基本操作。
指令 = 二进制序列 + 指示CPU + 基本操作。
第3章 指令系统
字长
字长反映CPU一次能处理的二进制数据位数。32位CPU一次处理32位数据,64位CPU一次处理64位数据。字长越长,计算精度越高、处理速度越快、寻址能力越强。
注意官方定义中两个限定词:"整数运算"(不是浮点运算)和"数据通路的宽度"(不是寄存器个数或存储容量)。
答题关键词:CPU内部 + 整数运算 + 数据通路 + 宽度。字长 = CPU"整数运算高速公路"的车道数。
第1章 计算机系统概述
寄存器间接寻址
寄存器间接寻址的工作过程:指令给出寄存器编号 -> 找到寄存器 -> 取出寄存器中的内容(这是内存地址)-> 用此地址去内存取操作数。寄存器是"中转站",存的是地址而非数据本身。
与"寄存器直接寻址"区别:直接寻址中操作数在寄存器里;间接寻址中寄存器里存的是地址,操作数在内存里,需要多一步去内存取数。
三个关键点:(1) 地址码是寄存器编号;(2) 寄存器中存的是有效地址(不是操作数);(3) 用有效地址去内存取操作数。"间接"= 寄存器只是中转站。
第3章 指令系统
微地址
在微程序控制方式中,每条机器指令对应一个微程序(一系列微指令),微指令存放在控制存储器(CM)中。微地址就是微指令在控制存储器中的位置编号,就像"操作手册"中每一行指示的行号。
类比:普通指令存在主存中,其地址叫"指令地址";微指令存在控存中,其地址叫"微地址"。两者是对称概念。
微地址 = 微指令在控制存储器中的存储单元地址。注意是控存(不是主存)中的地址。
第4章 中央处理器
同步总线
同步总线就像军队齐步走,所有设备按统一的时钟节拍工作。优点是控制简单、速度快;缺点是必须迁就最慢的设备。与之相对的异步总线使用"握手"信号协调,更灵活但更复杂。
定义要抓住两个核心要素:(1) 使用"公共时钟信号"定时;(2) 所有设备都从时钟线获取定时信号。
口诀:"同步靠时钟,大家一起动"。同步 = 统一时钟,异步 = 握手信号。
第6章 互连及输入输出组织
在条件转移指令中,常根据哪些不同的标志信息改变程序的执行顺序?
CPU每执行一次算术或逻辑运算,会自动在标志寄存器中记录运算结果的特征信息。条件转移指令通过检查这些标志位来决定是否跳转。
1. 零标志ZF(Zero Flag):结果为零则ZF=1,用于判断两个数是否相等(相减为零则相等)。
2. 溢出标志OF(Overflow Flag):有符号数运算结果超出表示范围则OF=1。
3. 符号标志SF(Sign Flag):结果为负数(最高位为1)则SF=1,用于判断正负。
4. 进位/借位标志CF(Carry Flag):无符号数运算产生进位或借位则CF=1,用于多精度运算和无符号数大小比较。
口诀:"零溢符进"(ZF、OF、SF、CF)。做完算术题关心四件事:是不是零?溢出没?正还是负?进位没?英文缩写:Z=Zero, O=Overflow, S=Sign, C=Carry。
第3章 指令系统
分别简述CPU中设置的指令寄存器(IR)、时序信号产生部件的作用。
IR(指令寄存器)存放当前正在执行的指令。CPU从内存取出指令后放入IR,供译码器分析和各部件使用。就像厨师的"当前步骤展示板"。
时序信号产生部件像交响乐团的指挥,根据基本时钟脉冲产生多级时序信号(时钟脉冲 -> 节拍 -> 机器周期 -> 指令周期),确保各部件在正确时间做正确的事。
IR每次只保存一条指令("现行"指令),指令周期结束后装入下一条。时序信号产生部件会根据当前IR中的指令类型产生对应的时序信号序列(不同指令需要的节拍数不同)。
IR = 存放现行指令。时序 = 以时钟脉冲为基础,产生周期/节拍/脉冲等时序信号,控制指令执行节奏。
第4章 中央处理器
简述动态存储器需要刷新的原因。
DRAM用极小的电容存储数据(有电荷=1,无电荷=0),但电容会漏电。就像一排漏水的小杯子,必须定期给有水的杯子重新加满水(刷新),否则信息丢失。刷新周期通常为2~4毫秒。
答题逻辑分两部分:(1) 为什么会丢失(栅极电容容量小、电荷泄漏,3分);(2) 怎么防止(定期补充电荷即刷新,2分)。SRAM用触发器存储,不需要刷新。
口诀:"小电容、易漏电、勤刷新、保数据"。答题关键三词:栅极电容 -> 电荷泄漏 -> 定期刷新。
第5章 存储器层次结构
简述在中断响应周期中需要完成的三个操作。
中断响应周期是CPU从检测到中断请求到开始执行中断服务程序之间的准备阶段,由硬件自动完成。
1. 关中断(1分):将中断允许标志IF置0,防止在保护断点时被新中断打断。
2. 保护断点(2分):将PC(返回地址)和PSW(程序状态)压入堆栈或送入特殊寄存器。注意:不仅要保存PC,还要保存PSW。
3. 识别中断源并转中断服务程序(2分):确定是哪个设备发出的中断请求,找到对应中断服务程序的入口地址送入PC。
口诀:"关、保、转"。关中断 -> 保护断点(PC+PSW) -> 识别中断源并转入服务程序。三步顺序固定,全部由硬件完成。
第6章 互连及输入输出组织
假设某个频繁使用的程序P在机器M1上运行需要15S,M1的时钟频率为3GHz。设计人员想开发一台与M1具有相同ISA的新机器M2。采用新技术可使M2的时钟频率增加,但同时也会使CPI增加。假定P在M2上执行时的时钟周期数是在M1上的2倍,则M2的时钟频率至少达到多少才能使程序P在M2上的运行时间缩短为10S?
程序P在机器M1上的时钟周期数为:CPU执行时间 x 时钟频率 = 15S x 3GHz = 45G。(2分)
因此,程序P在机器M2上的时钟周期数为:2 x 45G = 90G。(2分)
要使程序P在M2上的运行时间缩短为10S,则M2的时钟频率至少应为:程序所含时钟周期 / CPU执行时间 = 90G / 10S = 9GHz。(2分)
核心公式:CPU执行时间 = 时钟周期数 / 时钟频率,即 T = N / f。时钟频率就像CPU的"心跳速度",时钟周期数就是程序总共需要多少次"心跳"。
三个量知二求一:求时间 T = N/f;求周期数 N = T x f;求频率 f = N/T。
第一步:N_M1 = T_M1 x f_M1 = 15S x 3GHz = 45G(个时钟周期)
第二步:N_M2 = 2 x N_M1 = 2 x 45G = 90G
第三步:f_M2 = N_M2 / T_M2 = 90G / 10S = 9GHz
验算:T_M2 = 90G / 9GHz = 10S。正确!
直觉理解:工作量翻2倍(90G vs 45G),时间缩为2/3(10S vs 15S),速度需要原来的3倍 = 9GHz。
口诀:"时间等于周期数除频率"。相同ISA意味着指令条数IC相同,但CPI可能不同。注意单位:1GHz = 10^9 Hz。
第1章 计算机系统概述
将十进制数100转换为IEEE754的单精度(32位)浮点数格式,要求最后格式用十六进制数表示。注:IEEE754单精度浮点数的计数公式为(-1)s x 1.f x 2(E-127),其中符号位1位,阶码8位,尾数23位。
(1) 将十进制数转换成二进制数:(100)10 = (1100100)2 (1分)
(2) 规格化:1100100 = 1.100100 x 26 (1分)
(3) 阶码 E = 127 + 6 = 133 = (10000101)2 (1分)
(4) 32位浮点数:0 10000101 10010000000000000000000 (1分)
(5) 十六进制:(42C80000)16 (2分)
IEEE 754单精度浮点数 = 符号位S(1位) + 阶码E(8位) + 尾数f(23位)。公式:(-1)^S x 1.f x 2^(E-127)。"1."是隐含的,不存储。偏置值固定为127。
步骤1 - 转二进制:100 = 64+32+4 = 1100100
步骤2 - 规格化:1100100 = 1.100100 x 2^6(小数点移到第一个1后面,移了6位)
步骤3 - 符号位:100是正数,S = 0
步骤4 - 阶码:E = 127 + 6 = 133 = 10000101
步骤5 - 尾数:"1."隐含不存,f = 100100后补零至23位 = 10010000000000000000000
步骤6 - 拼接:0 | 10000101 | 10010000000000000000000
步骤7 - 转十六进制:每4位一组:0100 0010 1100 1000 0000 0000 0000 0000 = 4 2 C 8 0 0 0 0
五步法口诀:"转二规格求阶尾,拼好四位变十六"。关键数字:单精度偏置值=127,阶码8位,尾数23位。注意"1."隐含不存储。
第2章 数据的表示和运算
假定某同步总线在一个总线时钟周期内传送一个10字节的数据,总线时钟频率为133MHz,则总线带宽是多少?如果总线宽度改为128位,一个时钟周期能传送三次数据,总线时钟频率为266MHz,则总线带宽是多少?
根据总线带宽公式:B = W x F / N
原始带宽:B = 10B x 133MHz / 1 = 1330MB/s (3分)
改进后:B = (128/8)B x 266MHz x 3 = 12768MB/s (3分)
总线带宽 = 每次传输数据量 x 时钟频率 x 每周期传输次数,即 B = W x F x N。总线带宽表示每秒能传输的最大数据量(MB/s)。注意128位 = 16字节。
第一问:W=10字节, F=133MHz, 每周期1次 -> B = 10 x 133 = 1330 MB/s
第二问:W=128/8=16字节, F=266MHz, 每周期3次 -> B = 16 x 266 x 3 = 12768 MB/s
改进后带宽提升约9.6倍,来自三方面:宽度1.6倍 x 频率2倍 x 次数3倍。
口诀:"带宽等于宽频次"。注意位和字节换算:1字节=8位。当F用MHz、W用字节时,B单位直接就是MB/s。
第6章 互连及输入输出组织
某计算机字长16位,采用16位定长指令格式,部分数据通路结构如题33图所示。假设MAR的输出一直处于使能状态,那么:
(1)指令"SUB (R1), (R2)"在执行阶段需要多少个节拍?该指令功能为 M[R[R1]] ← M[R[R1]] SUB M[R[R2]]。
(2)请写出每个节拍的功能和有效控制信号。
(1)需要 8个节拍(2分)
(2)各节拍的控制信号与功能:
| 节拍 | 有效控制信号 | 功能 | 分值 |
|---|---|---|---|
| 1 | R2out, MARin | MAR←(R2) | 1分 |
| 2 | MemR | MDR←M(MAR) | 1分 |
| 3 | MDRout, Yin | Y←(MDR) | 1分 |
| 4 | R1out, MARin | MAR←(R1) | 1分 |
| 5 | MemR | MDR←M(MAR) | 1分 |
| 6 | MDRout, SUB | Z←(MDR) SUB (Y) | 2分 |
| 7 | Zout, MDRin | MDR←(Z) | 1分 |
| 8 | MemW | M(MAR)←MDR | 1分 |
数据通路是CPU内部各部件之间传输数据的路径集合。本题中的关键部件:MAR(存地址)、MDR(存数据)、R1/R2(通用寄存器)、Y(暂存操作数)、ALU(做运算)、Z(存结果)。
间接寻址:(R1)和(R2)的括号表示寄存器间接寻址,即R1/R2中存的是内存地址,需要用这个地址去内存取操作数。
指令含义:M[R[R1]] ← M[R[R1]] SUB M[R[R2]],即用R2指向的内存数据作为减数,用R1指向的内存数据作为被减数,结果写回R1指向的内存地址。
单总线结构中同一时刻只能有一个部件向总线送数据,每步微操作占用一个节拍:
合计 3+2+1+2 = 8拍
阶段一:取减数(从M[R2]取数据暂存到Y)
节拍1: R2out,MARin R2的地址值送MAR
节拍2: MemR 按MAR地址读内存到MDR
节拍3: MDRout,Yin 减数从MDR送到Y暂存
阶段二:取被减数(从M[R1]取数据到MDR)
节拍4: R1out,MARin R1的地址值送MAR(此地址保留到节拍8写回用)
节拍5: MemR 按MAR地址读内存到MDR
阶段三:执行减法
节拍6: MDRout,SUB 被减数(MDR)->ALU端A, 减数(Y)->ALU端B, Z=A-B
阶段四:写回结果
节拍7: Zout,MDRin 结果从Z送到MDR
节拍8: MemW MDR内容写入M[MAR](MAR仍是节拍4的R1地址)
关键技巧:先取R2(减数)存入Y,再取R1(被减数),这样MAR中保留R1的地址,写回时不需要重新装载地址。
单总线限制:同一节拍只能有一个xxxout信号,但可以有多个xxxin信号。
第4章 中央处理器
某计算机主存地址空间大小8MB,按字节编址。主存与Cache之间采用直接映射方式,块大小为2K字节。Cache数据区大小为16KB。请问:
(1)该Cache共有多少行?
(2)主存地址需多少位?如何划分?要求说明每个字段的含义、位数和在主存地址中的位置。
(1)Cache行数 = 16KB / 2KB = 8行(3分)
(2)主存地址长度 = 23位(8MB = 223B)(2分)
地址划分为三个字段:
Cache就像你书桌上的小笔记本(快但小),主存就像图书馆(大但慢)。Cache存放CPU最近常用的数据,解决CPU与主存的速度差异。
直接映射:每个主存块只能存到Cache中固定的一行。规则:Cache行号 = 主存块号 mod Cache行数。简单但容易冲突。
每行存一个块(2KB),Cache数据区16KB,所以行数 = 16KB / 2KB = 8行
主存地址总位数:8MB = 223B,需要23位地址。
地址分三段(从低到高):
23位主存地址
|<─────────────────────────────────────>|
┌───────────┬──────────┬────────────────┐
│ 标记(Tag) │ Cache行号 │ 块内地址 │
│ 9 位 │ 3 位 │ 11 位 │
│ (高位) │ (中间) │ (低位) │
│ 第22~14位 │第13~11位 │ 第10~0位 │
└───────────┴──────────┴────────────────┘
块内地址(11位):2KB = 211B,定位块内具体字节。
Cache行号(3位):8行 = 23,确定数据存在Cache的哪一行。
标记(9位):23-11-3 = 9,区分映射到同一行的不同主存块,判断Cache是否命中。
地址划分公式:主存地址 = 标记 + 行号 + 块内地址(从高到低)。
块内地址位数 = log2(块大小);行号位数 = log2(Cache行数);标记位数 = 总位数 - 行号 - 块内地址。
第5章 存储器层次结构