十进制数-72的8位补码表示是
在计算机中,负数通常用补码来表示。补码是计算机中最常用的有符号整数表示方法,因为它能让加法和减法使用同一套电路完成。
要理解补码,需要先了解三个概念:
原码:最高位为符号位(0表示正,1表示负),其余位表示数值的绝对值。例如,+72的8位原码是 01001000,-72的8位原码是 11001000。
反码:正数的反码与原码相同;负数的反码是在原码的基础上,符号位不变,其余各位取反(0变1,1变0)。
补码:正数的补码与原码相同;负数的补码是在反码的基础上加1。
现在我们来一步步求 -72 的8位补码:
第一步:求72的二进制表示。
72 / 2 = 36 余 0
36 / 2 = 18 余 0
18 / 2 = 9 余 0
9 / 2 = 4 余 1
4 / 2 = 2 余 0
2 / 2 = 1 余 0
1 / 2 = 0 余 1
从下往上读:72 = 1001000(二进制)
第二步:写出-72的8位原码。
符号位为1(负数),数值部分为 1001000,补齐为8位:
原码 = 11001000
第三步:求反码(符号位不变,其余位取反)。
原码 = 1 1001000
反码 = 1 0110111
即反码 = 10110111
第四步:求补码(反码加1)。
反码 = 10110111
加1:10110111 + 1 = 10111000
即补码 = 10111000
因此,-72的8位补码是 10111000。
负数求补码的口诀:"原码取反加一"。具体步骤:先写出绝对值的二进制,加上符号位1得原码,然后符号位不变、其余位取反得反码,最后反码加1得补码。注意:正数的原码、反码、补码三者相同。本题中四个选项分别对应:A是+72的原码/补码,B是-72的反码,C是-72的原码,D是-72的补码。考试时要特别注意不要在反码这一步就停下来。
第2章 数据的表示和运算 -- 定点数的补码表示
若传送的是字符A,其ASCII码为1000001,采用偶校验方式传送8位编码,末位增加偶校验位后的编码表示是
校验码是一种用于检测数据在传输过程中是否出错的编码方法。最简单的校验码是奇偶校验。
偶校验的规则是:在原始数据的基础上增加一个校验位,使得整个编码(包括校验位在内)中"1"的个数为偶数。
奇校验则相反,使得"1"的个数为奇数。
ASCII码是一种字符编码标准,用7位二进制数来表示一个字符。字符A的ASCII码是 1000001(十进制65)。
本题要求在末位增加偶校验位,传送8位编码。即7位ASCII码在前,第8位(最低位/末位)为校验位。
计算过程:
原始7位ASCII码为:1000001
统计其中"1"的个数:第1位是1,第7位是1,共有2个1。
偶校验要求整个8位编码中"1"的总数为偶数。当前已有2个1,2本身就是偶数,所以校验位应该添加0,使得总数仍为偶数(2+0=2,偶数)。
因此,8位编码为:1000001 + 0 = 10000010(7位数据在高位,校验位0在最低位/末位)。
偶校验口诀:"凑偶数"。先数原始数据中有多少个1,如果已经是偶数个,校验位就补0;如果是奇数个,校验位就补1。注意审题:校验位加在什么位置(最高位还是最低位),这会影响最终编码的排列。本题是"末位增加",即校验位在最后。
第2章 数据的表示和运算 -- 数据校验码(奇偶校验码)
采用变址寻址方式的操作数存放在
寻址方式是指CPU如何找到指令中操作数的方法。不同的寻址方式决定了操作数存放的位置和获取操作数的途径。
常见的寻址方式有以下几种:
立即寻址:操作数直接包含在指令中,就是指令的一部分。
寄存器寻址:操作数存放在CPU内部的寄存器中,指令中给出寄存器编号。
直接寻址:指令中直接给出操作数在内存中的地址,操作数存放在内存中。
变址寻址:操作数的有效地址 = 变址寄存器的内容 + 指令中给出的形式地址(偏移量)。这个有效地址指向内存中的某个位置,操作数最终是从内存中取出的。变址寻址特别适用于数组操作,因为可以通过改变变址寄存器的值来依次访问数组的各个元素。
记住各种寻址方式操作数的位置:立即寻址 -- 操作数在指令中;寄存器寻址 -- 操作数在寄存器中;直接寻址、间接寻址、变址寻址、基址寻址 -- 操作数都在内存中。简单来说,只要涉及到去内存地址取数据的寻址方式,操作数就在内存中。
第3章 指令系统 -- 寻址方式(变址寻址)
若经过CPU处理后的运算结果为零,则反映在条件码寄存器的标志位是
CPU在执行算术运算或逻辑运算后,会将运算结果的一些特征记录在一个特殊的寄存器中,这个寄存器叫做条件码寄存器(也叫标志寄存器、状态寄存器、程序状态字寄存器PSW)。
常见的标志位有:
ZF(Zero Flag,零标志位):当运算结果为零时,ZF置1;否则ZF为0。
OF(Overflow Flag,溢出标志位):当有符号数运算发生溢出时,OF置1。
SF(Sign Flag,符号标志位):记录运算结果的符号,即结果的最高位。SF=1表示结果为负。
CF(Carry Flag,进位/借位标志位):当无符号数运算产生进位或借位时,CF置1。
四个标志位的名称来自英文首字母:Zero -> ZF,Overflow -> OF,Sign -> SF,Carry -> CF。每个标志位各司其职:ZF看是否为零,OF看是否溢出,SF看正负号,CF看是否进位。
第4章 中央处理器 -- 条件码/标志寄存器
指令顺序执行时,提供下一条指令地址的寄存器是
CPU中有多种寄存器,每种有不同的功能:
程序计数器(PC,Program Counter):存放下一条将要执行的指令的内存地址。每取出一条指令后,PC会自动加上该指令的长度,从而指向下一条指令的地址。
指令寄存器(IR,Instruction Register):用于存放当前正在执行的指令的内容(即指令的二进制编码)。
通用寄存器:用于存放操作数或中间运算结果。
标志寄存器:存放CPU运算后产生的状态标志(如零标志、溢出标志等)。
PC和IR是一对容易混淆的寄存器:PC存地址(下一条指令在哪里),IR存内容(当前指令是什么)。可以这样记:"计数器计地址,寄存器存指令"。
第4章 中央处理器 -- CPU的基本组成与寄存器
MIPS计算机的汇编指令"add $s1, $s2, $s3"的功能是
MIPS是一种经典的精简指令集计算机(RISC)架构。MIPS汇编指令的一般格式为:操作码 目的操作数, 源操作数1, 源操作数2,即 op rd, rs, rt。其中rd是目的寄存器(存放运算结果),rs和rt是源寄存器(提供操作数)。
所以 "add $s1, $s2, $s3" 的含义是:将 $s2 和 $s3 的值相加,结果存入 $s1。即 $s1 = $s2 + $s3。
MIPS指令的操作数顺序是"结果在前,来源在后"。记住口诀:"MIPS三操作数,第一个放结果。"这与赋值语句 "a = b + c" 的格式一致。
第3章 指令系统 -- MIPS指令格式与R型指令
有一个8MB的主存储器,按字节编址,需要寻址的地址线条数是
地址线是CPU与存储器之间连接的信号线之一,用于传递要访问的存储单元的地址。如果有n条地址线,则CPU最多可以区分 2n 个不同的地址。
"按字节编址"意味着每个地址对应存储器中的一个字节(8位)。
计算过程:
8MB = 8 × 1024 × 1024 字节 = 23 × 210 × 210 = 223 字节
要为 223 个字节编址,需要 23条 地址线。
关键是记住单位换算中2的幂次:1KB = 210 B,1MB = 220 B,1GB = 230 B。所以 8MB = 23 × 220 = 223 B,需要23条地址线。做这类题时,把所有数字都转换成2的幂次,然后把指数相加即可。
第5章 存储器层次结构 -- 主存储器的组织与地址编码
对硬盘上信息的存取采用
存储器的访问方式分为以下几种:
RAM(Random Access Memory,随机存取):可以按地址直接访问任意存储单元,访问任何位置所需时间相同。典型代表是内存。
SAM(Sequential Access Memory,顺序存取):必须按数据存储的顺序依次访问。典型代表是磁带。
DAM(Direct Access Memory,直接存取):介于随机存取和顺序存取之间。先直接移动到数据所在的大致区域,然后在该区域内顺序搜索。典型代表是磁盘(硬盘)。
ROM(Read-Only Memory):ROM描述的是读写特性(只读),而不是存取方式。
三种存取方式对应的典型设备:RAM -- 内存,SAM -- 磁带,DAM -- 磁盘/硬盘。可以用生活类比:RAM像翻书直接翻到某一页;SAM像听录音带必须快进;DAM像唱片机,先把唱针放到大致位置,然后等唱片转到目标位置。
第5章 存储器层次结构 -- 外部存储器(磁盘存储器的存取方式)
鼠标接口应选用
CPU与外部设备之间的数据传送有多种控制方式:
程序直接控制方式:CPU不断地查询外设的状态,效率极低。
中断控制方式:外设准备好数据后,主动向CPU发出中断请求。适用于低速、中速的外设,如键盘、鼠标、打印机等。
DMA控制方式:数据在外设和内存之间直接传送,不经过CPU。适用于高速的外设,如硬盘等。
I/O控制方式的选择取决于设备的速度和数据量:低速设备(键盘、鼠标)用中断方式,高速设备(硬盘)用DMA方式。口诀:"慢设备用中断,快设备用DMA"。
第6章 互连及输入输出组织 -- I/O控制方式
在多重中断方式下,若外设向CPU提出新的中断请求,则CPU
单重中断:在CPU处理一个中断的过程中,不允许再响应新的中断请求。
多重中断(中断嵌套):在CPU处理一个中断的过程中,如果又来了一个优先级更高的中断请求,CPU会暂停当前的中断处理,转而处理更高优先级的中断。
核心原则:高优先级的中断可以打断低优先级的中断,但反过来不行。
多重中断的核心原则:"高可以打断低,低不能打断高"。类比:你正在处理一件普通工作,突然领导来了紧急任务,你会放下手头的工作先处理紧急任务。
第6章 互连及输入输出组织 -- 中断系统(多重中断与中断优先级)
在计算机系统中,常用的进位记数制有二进制、____进制、____进制和____进制。
八、十、十六
"进位记数制"是一种用有限个数字符号,按照某种规则来表示数值的方法。"进制"就是"逢几进一"的意思。
在计算机系统中,常用的进位记数制有四种:
八进制和十六进制是二进制的"快捷写法",可以用更短的字符串表示较长的二进制数。由于现代计算机的数据位宽通常是4的倍数(8位、16位、32位、64位),十六进制比八进制更加常用。
计算机中四种常用进制按基数从小到大:二、八、十、十六。口诀:"二八十十六,进制要记住"。
第2章 数据的表示和运算 -- 进位记数制
定点数编码表示方法主要有以下4种:原码、____、____和____。
补码、反码、移码
为了在计算机中表示带符号的定点数,人们发明了多种编码方法:
核心关系链:原码 -> 数值位取反 -> 反码 -> 末位加1 -> 补码 -> 符号位取反 -> 移码。
使用场景:补码用于整数运算(最常用)、移码用于浮点数阶码、原码用于浮点数尾数、反码是求补码的中间步骤。
四种编码的记忆口诀:"原补反移"。
第2章 数据的表示和运算 -- 定点数的编码表示
MIPS指令采用三种指令格式,分别是R-型指令、____和____。
I-型指令、J-型指令
MIPS所有指令都是32位长,但根据功能不同划分为三种格式:
三种格式的首字母R、I、J分别对应Register(寄存器操作)、Immediate(立即数操作)、Jump(跳转操作)。字段数量递减:R-型6个、I-型4个、J-型2个,因为需要更长的立即数/地址字段。
口诀:"R寄存器算,I立即数搬,J跳转转"。所有格式都是32位,op字段都是最高6位。
第3章 指令系统 -- MIPS指令格式
指令流水线在有些情况下会发生流水线冒险,包括结构冒险、____和____。
数据冒险、控制冒险
流水线技术让多条指令的不同阶段在时间上重叠执行,提高指令吞吐率。但某些情况会导致流水线无法正常推进,称为"流水线冒险"。
口诀:"结数控"(谐音"结束控")。对应关系:结构冒险 -- "抢设备",数据冒险 -- "等数据",控制冒险 -- "猜方向"。
第4章 中央处理器 -- 指令流水线与流水线冒险
虚拟存储器分成三种不同类型:分页式、____和____。
分段式、段页式
虚拟存储器用大容量的辅存(硬盘)来扩展小容量的主存(内存),给程序员提供一个容量巨大的"虚拟"存储空间。
逻辑是"页 + 段 = 段页"。分页按固定大小切,分段按逻辑结构切,段页式结合两者。
第5章 存储器层次结构 -- 虚拟存储器
系统总线通常由____线、____线和____线等三组线构成。
数据、地址、控制
系统总线是连接CPU、主存、I/O接口等主要部件的信息传送通道。
三组总线分别解决"传什么"、"在哪里"和"怎么做"的问题。
用问句来记忆:"传什么?-- 数据线"、"在哪里?-- 地址线"、"怎么做?-- 控制线"。
第6章 互连及输入输出组织 -- 总线的基本概念
数据通路
数据通路是指指令执行过程中数据所流经的部件,其中包含各类运算部件。
CPU执行一条指令时,数据需要从一个地方"流动"到另一个地方。比如做加法运算,两个操作数需要从寄存器中取出,送到ALU中计算,结果再送回寄存器保存。这一路上,数据经过的所有"路径"和"部件",就构成了数据通路。
数据通路的组成部分包括:寄存器、算术逻辑单元(ALU)、内部总线、多路选择器(MUX)、移位器等。数据通路负责"执行"(数据的传送和运算),而控制器负责"指挥"(发出控制信号)。两者共同组成CPU的核心。
数据通路 = 数据流经的部件 + 运算部件。抓住两个关键词:"数据流经"和"运算部件"。
第4章 中央处理器 -- 数据通路的功能和基本结构
机器数
将数值数据在计算机内部编码表示的数称为机器数。
计算机内部只认识0和1,无法直接表示"+""-"等符号。因此需要把数字(包括正负号)全部用0和1来编码表示。这种经过编码后在计算机内部存储和处理的数,就叫做"机器数"。与之对应的是"真值",即日常书写的带正负号的实际数值。
机器数的核心特征:符号数字化(正号用0表示,负号用1表示);位数固定(如8位、16位、32位);有多种编码方式(原码、反码、补码、移码)。
机器数 = 数值数据在计算机内部的编码表示。配对记忆:真值是人看的数,机器数是机器看的数。
第2章 数据的表示和运算 -- 数值数据的表示
小端方式
小端方式将数据的最高有效字节MSB存放在高地址中,将最低有效字节LSB存放在低地址中。
当存储一个多字节数据(如32位整数占4字节)时,这些字节按什么顺序存放在内存中?这就涉及到"字节序"(Byte Order)。
MSB(Most Significant Byte):最高有效字节,权值最大的字节。LSB(Least Significant Byte):最低有效字节,权值最小的字节。
小端方式:低地址存放低字节(LSB),高地址存放高字节(MSB)。例如 0x12345678 从地址0x1000开始,小端存放为:0x1000存0x78,0x1001存0x56,0x1002存0x34,0x1003存0x12。Intel x86处理器采用小端方式。
小端方式:"低低小端"(低字节放低地址就是小端)。联想:小端 = 小的在前面(低地址)。
第2章 数据的表示和运算 -- 数据的存储和排列顺序
寄存器直接寻址
指令中给出的是操作数所在的寄存器编号,操作数在寄存器中,这种寻址方式称为寄存器直接寻址。
"寻址方式"就是指令中告诉CPU"去哪里找操作数"的方法。寄存器直接寻址是其中一种:指令给出寄存器编号,CPU直接到对应的寄存器中取出操作数,不需要访问内存,速度很快。
寄存器直接寻址的三个关键点:(1)指令中给的是寄存器编号;(2)操作数在寄存器中;(3)是"直接"寻址,寄存器中存的就是操作数本身。优点是速度快(不需访存),指令短(寄存器编号位数少)。
区别于"寄存器间接寻址":直接寻址 -- 寄存器中存的是操作数本身;间接寻址 -- 寄存器中存的是操作数的地址,还要再去内存找一次。
第3章 指令系统 -- 操作数寻址方式
中断嵌套
中断系统允许CPU在执行某个中断服务程序时,被新的中断请求打断。
中断嵌套就是"中断中再中断"。当CPU正在处理一个中断时,如果来了一个优先级更高的中断请求,CPU会暂停当前中断服务程序,转而处理更高优先级的中断,处理完后再回来继续处理之前的中断。
中断嵌套的条件:新中断的优先级必须高于当前正在处理的中断;CPU的中断允许标志必须处于开中断状态。中断嵌套保证了高优先级事件能得到及时响应。
中断嵌套 = 正在执行中断服务程序时,被新的(更高优先级的)中断请求打断。联想为"大事打断小事"。
第6章 互连及输入输出组织 -- 中断系统(中断嵌套)
浮点加减运算需要经过哪几个主要步骤?
对阶(1分)、尾数相加减(1分)、规格化(1分)、尾数舍入(1分)和溢出判断等(1分)。
浮点数由阶码(指数)和尾数(有效数字)组成:N = M × 2E。要对两个浮点数做加减法,必须先让它们的"阶"一致(小数点对齐),这是浮点运算与定点运算最大的不同。
第一步:对阶 -- 让两个浮点数的阶码一致。规则:小阶向大阶看齐(阶码小的尾数右移,阶码增大)。
第二步:尾数相加减 -- 对阶完成后,两个数的阶码相同,直接对尾数进行加减运算。
第三步:规格化 -- 调整结果使尾数符合标准格式(左规或右规)。
第四步:尾数舍入 -- 对阶和右规中尾数右移可能丢失低位,需要舍入处理以减小误差。
第五步:溢出判断 -- 检查结果的阶码是否超出范围。阶码上溢表示结果太大(溢出),阶码下溢表示结果趋近于零。
五个步骤的首字可组成口诀:"对尾规舍溢"。联想记忆:"对位以后算,算完要规范,不精确就四舍五入,最后检查有没有爆表"。
第2章 数据的表示和运算 -- 浮点数的加减运算
转移指令和调用(转子)指令的区别是什么?
转移指令和调用(转子)指令的区别在于执行调用(转子)指令时必须保存下条指令的地址(即返回地址)(2分);调用(转子)指令用于过程调用或函数调用,当被调用过程执行结束时,根据返回地址返回到调用过程继续执行,(2分)而转移指令则不返回执行,因而无需保存返回地址。(1分)
用生活比喻来理解两者的区别:
| 比较项 | 转移指令 | 调用(转子)指令 |
|---|---|---|
| 是否保存返回地址 | 不保存 | 保存(压栈或存入特定寄存器) |
| 是否返回 | 不返回,单向跳转 | 返回,执行完子程序后回到调用点 |
| 用途 | 实现循环、条件分支(if-else) | 实现函数调用、过程调用 |
| 配对指令 | 无配对指令 | 与RET(返回指令)配对使用 |
核心区别就一句话:调用指令要保存返回地址,转移指令不保存。联想记忆:转移 = "搬家"(走了不回来);调用 = "出差"(出去办事还要回来)。
第3章 指令系统 -- 程序控制类指令
什么是指令周期?不同指令的指令执行周期是否一致?
CPU取出并执行一条指令的时间为一个指令周期(3分),可分为取指令、读操作数、执行并写结果等多个基本工作周期;不同指令的指令执行周期一般不一致,主要与操作数寻址方式以及存结果的地址等有关。(2分)
先区分三个容易混淆的"周期"概念:
它们的关系:指令周期 > 机器周期 > 时钟周期。
不同指令的指令周期一般不一致,原因:(1)寻址方式不同导致访存次数不同;(2)操作类型不同(如乘法比加法慢);(3)结果存放位置不同(存寄存器比存内存快)。
(1)指令周期 = CPU取出并执行完一条指令的时间。(2)不同指令的指令周期一般不一致。(3)三种周期大小:时钟周期 < 机器周期 < 指令周期。
第4章 中央处理器 -- CPU的工作原理和指令执行过程
在中断响应周期中,通过执行一条隐指令,可以完成哪几项操作?
在中断响应周期中,通过执行一条隐指令,可以完成的操作是:(1)关中断:将中断允许标志置为禁止状态(2分)(2)保护断点:将PC和PSW存入栈或特殊寄存器(2分)(3)识别中断源并转中断服务程序:通过某种方式,获得优先级最高的中断源对应的中断服务程序的首地址和初始PSW,并分别送PC和PSWR。(1分)
"隐指令"是CPU在中断响应时由硬件自动完成的操作,不是程序员编写的指令,也不出现在程序中。它在程序员看来是"隐形"的。
隐指令完成的三项操作:
注意:"保护现场"(保存通用寄存器)是中断服务程序中的软件操作,不属于隐指令。
隐指令完成三件事,口诀:"关、保、转"。关中断 -- 保护断点 -- 转中断服务程序。顺序不能搞反。
第6章 互连及输入输出组织 -- 中断系统(中断响应过程)
假设某个频繁使用的程序P在机器M1上运行需要15S,M1的时钟频率为2GHz。设计人员想开发一台与M1具有相同ISA的新机器M2。采用新技术可使M2的时钟频率增加,但同时也会使CPI增加。假定P在M2上执行时的时钟周期数是在M1上的3倍,则M2的时钟频率至少达到多少才能使程序P在M2上的运行时间缩短为10S?
程序P在机器M1上的时钟周期数为 CPU执行时间 × 时钟频率 = 15S × 2GHz = 30G
因此,程序P在机器M2上的时钟周期数为 3 × 30G = 90G
要使程序P在M2上的运行时间缩短为10S,则M2的时钟频率至少应为 程序所含时钟周期数 / CPU执行时间 = 90G / 10S = 9GHz
CPU性能公式(核心公式):CPU执行时间 = 程序的时钟周期总数 / 时钟频率
GHz(吉赫兹)= 109Hz = 每秒10亿次。时钟频率就是CPU每秒产生的时钟脉冲数。CPI是"每条指令所需的时钟周期数"的平均值。ISA相同意味着同一程序执行的指令条数相同。
第一步:求程序P在M1上的时钟周期总数
时钟周期总数 = CPU执行时间 × 时钟频率 = 15S × 2GHz = 15 × 2 × 109 = 30 × 109(即300亿个时钟周期)
第二步:求程序P在M2上的时钟周期总数
M2上的时钟周期总数 = 3 × 30G = 90G(即900亿个时钟周期)
第三步:求M2所需的最低时钟频率
时钟频率 = 时钟周期总数 / CPU执行时间 = 90G / 10S = 9GHz
验证:如果M2频率为9GHz,CPU执行时间 = 90G / 9GHz = 10S,正确。
核心公式:CPU执行时间 = 时钟周期总数 / 时钟频率。提高频率可以缩短执行时间,但如果CPI也增加,总周期数会增大,需要频率提高幅度大于CPI增加幅度才能真正提升性能。
第1章 计算机系统概述 -- 计算机性能指标
将十进制数160转换为IEEE754的单精度(32位)浮点数格式,要求最后格式用十六进制数表示。
(1) (160)10 = (10100000)2
(2) 规格化:1.0100000 × 27
(3) 阶码E = 127 + 7 = 134 = (10000110)2
(4) S=0, E=10000110, M=01000000000000000000000
(5) 32位二进制:0 10000110 01000000000000000000000
(6) 十六进制:(43200000)16
IEEE 754单精度(32位)格式:
实际值 = (-1)S × 1.M × 2(E-127)。偏置值为127。规格化后整数部分的"1"隐含不存储。
第一步:确定符号位 -- 160是正数,S = 0
第二步:十进制转二进制
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
从下往上读:10100000(验证:128+32=160)
第三步:规格化
10100000 = 1.0100000 × 27(小数点左移7位)
第四步:计算阶码E
E = 偏置值 + 阶码真值 = 127 + 7 = 134 = 100001102(验证:128+4+2=134)
第五步:组装尾数M(23位)
隐含整数"1"不存储,取小数部分:01000000000000000000000
第六步:拼接32位
0 | 10000110 | 01000000000000000000000
第七步:转十六进制(每4位一组)
0100 | 0011 | 0010 | 0000 | 0000 | 0000 | 0000 | 0000
4 3 2 0 0 0 0 0
结果:(43200000)16
步骤口诀:定符号 -> 转二进制 -> 规格化 -> 算阶码(+127) -> 取尾数 -> 拼起来 -> 转十六进制。偏置值127必须牢记。
第2章 数据的表示和运算 -- IEEE 754浮点数表示
假定某同步总线在一个总线时钟周期内传送一个16字节的数据,总线时钟频率为80MHz,则总线带宽是多少?如果总线宽度改为256位,一个时钟周期能传送两次数据,总线时钟频率为200MHz,则总线带宽是多少?
根据总线的总带宽计算公式:B = W × F / N
本题总线的总带宽为:B = 16B × 80MHz / 1 = 1280MB/s
改进后:B = (256/8)B × 200MHz / 0.5 = 12800MB/s
总线带宽是单位时间内总线能传输的最大数据量。公式:B = W × F / N,其中W=每次传输的字节数,F=时钟频率,N=完成一次传送所需的时钟周期数。
第一问:W=16B, F=80MHz, N=1
B = 16 × 80 × 106 / 1 = 1280MB/s
第二问:W=256位=32B, F=200MHz, 每周期传两次 -> N=0.5
B = 32 × 200 × 106 / 0.5 = 12800MB/s
带宽提升10倍(宽度2倍 × 频率2.5倍 × 传输次数2倍 = 10倍)
核心公式:B = W × F / N。注意单位换算:位(bit)转字节(Byte)要除以8。N=0.5表示一个周期传两次(类似DDR技术)。
第6章 互连及输入输出组织 -- 总线的性能指标
某计算机主存地址空间大小64MB,按字节编址。主存与cache之间采用直接映射方式,块大小为2K字节。cache数据区大小为64KB。
(1) 该cache共有多少行?
(2) 主存地址需多少位?如何划分?要求说明每个字段的含义、位数和在主存地址中的位置。
(1) 64KB / 2KB = 32行
(2) 64MB = 226B,故主存地址长度为26位,划分为:标记(10位) + 行号(5位) + 块内地址(11位)
Cache是位于CPU和主存之间的高速缓冲存储器。直接映射规定主存中的每一块只能存放到Cache中固定的一行(Cache行号 = 主存块号 mod Cache总行数)。
主存地址在直接映射中被划分为三个字段:标记(Tag)用来区分映射到同一Cache行的不同主存块;行号(Index)确定数据对应的Cache行;块内地址(Offset)确定数据在块内的位置。
第(1)题:求Cache的行数
Cache行数 = Cache数据区大小 / 块大小 = 64KB / 2KB = 216 / 211 = 25 = 32行
第(2)题:主存地址位数和划分
主存地址总位数:64MB = 226B,需要26位地址
块内地址:2KB = 211B -> 11位(最低11位)
行号:32行 = 25 -> 5位(中间5位)
标记:26 - 11 - 5 = 10位(最高10位)
主存地址格式图:
验证:10 + 5 + 11 = 26位,正确。
地址划分三步走:先定块内地址(取决于块大小),再定行号(取决于Cache行数),最后标记是剩余位数。位数计算的关键:有2n个项目就需要n位来编号。
第5章 存储器层次结构 -- Cache的基本原理与直接映射
某计算机字长16位,采用16位定长指令格式,部分数据通路结构如题30图所示。假设MAR的输出一直处于使能状态。
(1) 逻辑指令"AND R2, (R1)"在执行阶段需要多少个节拍?该指令功能为 R[R2] ← R[R2] AND M[R[R1]]。
(2) 写出每个节拍的有效控制信号和功能。
(1) 需要4个或5个节拍
(2) 控制信号和功能:
说明:如果答案为4个节拍,则将节拍2与节拍3合并为一个节拍。
数据通路中的关键部件:
指令 AND R2, (R1) 的含义:R2中的值 与 内存中地址为R1处的值 做AND运算,结果存回R2。(R1)表示寄存器间接寻址。
节拍1:将R1的内容送入MAR
控制信号:R1out, MARin
功能:MAR ← (R1) 数据流向:R1 → 内部总线 → MAR
说明:R1中存放的是内存地址,送入MAR为下一步的内存读操作做准备。
节拍2:从内存读取数据到MDR
控制信号:MemR
功能:MDR ← M(MAR) 数据流向:内存[MAR指向的地址] → 数据总线 → MDR
说明:MemR信号通知内存进行读操作,数据被送到MDR中锁存。
节拍3:将MDR的内容送入Y寄存器
控制信号:MDRout, Yin
功能:Y ← (MDR) 数据流向:MDR → 内部总线 → Y
说明:ALU的一个操作数先存到Y,为下一步运算做准备。节拍2和3可合并为4节拍方案。
节拍4:执行AND运算
控制信号:R2out, AND
功能:Z ← (Y) AND (R2) 数据流向:Y + R2(通过总线) → ALU → Z
说明:R2通过总线送入ALU的一个输入端,Y已连接ALU另一个输入端,结果存入Z。
节拍5:将运算结果存回R2
控制信号:Zout, R2in
功能:R2 ← (Z) 数据流向:Z → 内部总线 → R2
说明:运算结果从Z经总线写入R2,指令执行完毕。
完整执行过程总结
| 节拍 | 控制信号 | 功能 | 数据流向 |
|---|---|---|---|
| 1 | R1out, MARin | MAR ← (R1) | R1 → 总线 → MAR |
| 2 | MemR | MDR ← M(MAR) | 内存 → MDR |
| 3 | MDRout, Yin | Y ← (MDR) | MDR → 总线 → Y |
| 4 | R2out, AND | Z ← (Y) AND (R2) | Y + R2 → ALU → Z |
| 5 | Zout, R2in | R2 ← (Z) | Z → 总线 → R2 |
1. 每个节拍只能完成一个"数据传送"操作(总线同一时刻只能传一个数据)。
2. ALU运算:一个操作数通过Y寄存器提供,一个通过总线直接提供,结果存入Z寄存器。
3. 寄存器间接寻址 (R1) 的处理:先把寄存器值送MAR,再通过MAR去内存取数。
4. 控制信号命名规律:"XXXout"打开输出门,"XXXin"使能输入端,"MemR"内存读。
第4章 中央处理器 -- 数据通路与控制信号