本内容是我在计组期末复习时的记录,可能对你的复习帮助不大。下面是我复习时看的一些资料和视频:
知识体系:
【【计算机组成原理】计算机组成原理期末考试速成课,不挂科!!】https://www.bilibili.com/video/BV1ur4y1D7gR?vd_source=564abed1c36a31978eb9de7cdc6668d2
这个视频新版讲的不错,但是后续课程需要 "钞能力" ~~(老版的课程还行,相当于过一个知识点)
老版课程的资料:
链接:https://pan.baidu.com/s/1K27Nq6WmHHwM2gXTZqcxQQ?pwd=yyds
提取码:yyds
大题速成:
【计算机组成原理速成、不挂科、搞定期末考试大题(横屏版)】https://www.bilibili.com/video/BV1P3411v7gd?vd_source=564abed1c36a31978eb9de7cdc6668d2
存储器与CPU的连接一道设计题
【存储器与CPU的连接一道设计题】https://www.bilibili.com/video/BV12s411V7Sn?vd_source=564abed1c36a31978eb9de7cdc6668d2
个人觉得讲得比较好的:
【【双总线指令周期流程图】白中英计算机组成原理期末速成】https://www.bilibili.com/video/BV1ks4y187wn?vd_source=564abed1c36a31978eb9de7cdc6668d2
当然如果遇到那个知识点不懂,这里建议还是详细看一下《王道》, 不要觉得时间来不急,只要学就来得及!!!
计算机系统概论
1. 计算机的基本组成
计算机系统 = 软件 + 硬件
为了解决CPU和内存速度不匹配的问题,就需要设计一个Cache。这里Cache的设计并不是为了扩大内存容量
冯诺依曼计算机的五大功能部件:
运算器:进行加减乘除、与或之类的运算
控制器:对计算机进行运算
存储器:用来存放程序和数据的
输入设备、输出设备
冯诺依曼计算机的特点
指令和数据以不加区别的混合存储在同一存储器(主要区别于哈弗计算机指令和数据完全分开存储)
2. 计算机硬件的主要技术指标
一、机器字长
二、运算速度
例如:主频为2Hz,代表每秒振动两下
1M = 10^6
1G = 10^9
时钟周期:振荡一次所需要的时间
主频为3.6GHz可以理解为每秒中包含3.6G(3.6*10^9)个时钟周期。
1s = 10^3 ms(毫秒) = 10^6 us(微秒) = 10^9 ns(纳秒)
3. CUP的运算速度
一个程序包含多个指令
CPI
CPI : 执行一条指令所需的平均时钟周期
或 执行某个程序 所需要的CPU总的时钟周期数 / 程序指令条数
CPU执行时间
CPU执行一般程序所需要的CPU时间
= 执行某段程序所需要的CPU时钟周期数 * 时钟周期
需要两个时钟周期,每个时钟周期有2s
= 执行某段程序所需要的CPU时钟周期数 / 时钟频率f
又因为 执行某个程序 所需要的CPU总的时钟周期数 / 程序指令条数,所以“执行某段程序所需要的CPU时钟周期数” = CPI * 程序指令条数
所以 = 程序指令数 * CPI / 时钟频率f
MIPS
每秒百万(10^6)指令数,即单位时间内执行的定点指令条数
MIPS = 指令条数 / (程序执行时间 * 10^6)
= 时钟频率(MHz)/ CPI
每秒包含百万时钟周期数 / 执行一条指令所需要的时钟周期数
MFLOPS
每秒百万次浮点操作数,衡量机器浮点操作的性能
= 浮点操作次数 / 程序执行时间 * 10^6
4. 主存的性能指标
主存带宽:单位时间内从主存储器读出的二进制信息量,一般用字节/秒(B/s)表示。
运算方法和运算器
整数及其运算
无符号整数
带符号整数
使用补码进行加法运算时,符号位也要参与运算。
小数及其运算
溢出判断
奇偶校验
奇校验是一种数据传送时采用的校正数据错误的方式,它基于被传输的一组二进制代码的数位中“1”的个数是奇数还是偶数来进行校验。在奇校验中,如果实际数据中“1”的个数为偶数,则校验位为“1”,以确保总的“1”的个数是奇数;反之,如果实际数据中“1”的个数为奇数,则校验位为“0”。
指令处理器
1. 指令格式
指令(又称为机器指令) 是 指示计算机执行某种操作的命令,程序是有一条条指令构成。
指令的长度是指一条指令中包含的二进制代码的位数。指令字长取决于操作码的长度、操作数地址码的长度和操作数地址的个数。
主要分为:零、一、二、三、四地址指令(其中一个数字代表的地址码的个数,不包括操作码)
这种考的大题类似于:
2. 指令的寻址方式
指令中的地址码字段 并不代表操作数的真实地址,这种地址称为形式地址;
形式地址结合寻址方式,可以计算出操作数在存储器中的真实地址,这种地址称为有效地址。
也即,A地址中存放的是数据存放的真实地址,通过这个真实地址才能找到我们需要的数据和信息。
指令寻址:顺序寻址(通过程序计数器 + "1");跳跃寻址(下一条指令的地址码有本条指令给出计算方式得到)
数据寻址
采用间接寻址的方式进行寻址就是因为,地址码的位数限制,导致寻址范围有限
由于间接访存需要多次进行访存,速度较慢,就采用寄存器寻址
3. CISC 和 RISC的基本概念
中央处理器
1. CPU的功能和基本结构
2. 指令执行过程
3. 数据通路的基本结构
4. 指令流水线
- 机器指令:
- 定义:机器指令是CPU能直接识别并执行的指令,表现形式为二进制编码。
- 结构:通常由操作码和操作数两部分组成,操作码指出指令的功能,操作数指出参与运算的对象及运算结果所存放的位置。
- 特点:由于与CPU紧密相关,不同种类的CPU对应的机器指令不同,指令系统往往相差很大。
- 微指令:
- 定义:微指令是指在微程序控制的计算机中,同时发出的控制信号所执行的一组微操作。
- 作用:实现一定操作功能的微命令的组合。
- 结构:一般的微指令格式由操作控制和顺序控制两部分构成。
- 关系:若干条微指令可以构成一个微程序,而一个微程序对应了一条机器指令。机器指令的功能是通过若干条微指令组成的序列来实现的。
- 微操作:
- 定义:微操作是指计算机中最基本的、不可再分解的操作。
- 实现:由微命令控制实现。
- 关系:微命令和微操作是一一对应的,微命令是微操作的控制信号,而微操作是微命令的操作过程。
总结这三者之间的关系:
- 机器指令是计算机执行的基本单位,它的功能是通过微程序来实现的。
- 微程序则是由微指令组成的,用于描述机器指令。
- 微指令则是控制计算机各部件完成某个基本微操作的命令,这些微操作是最基本的、不可再分解的操作。
A. 微程序:是一组微指令的集合,用于描述一条机器指令的执行过程。它存储在控制存储器(通常是ROM)中。
B. 微命令:是微程序控制器发出的一种最基本的控制命令,用于控制微操作。它是微指令的组成部分,直接由硬件执行。
C. 微操作:是机器指令的一个执行步骤,由微命令序列来实现。例如,读取寄存器、写入内存等都是微操作。
D. 微指令:是一条控制指令,它包含若干个微命令字段和一些其他信息(如下一条微指令的地址等)。微指令用于产生一系列微命令,从而控制机器指令的执行。
-
指令周期:是指从取指令开始到完成一条指令所需的全部时间。这个过程通常包括取指令、译码、执行、访存、写回等多个步骤。
-
机器周期:也称为CPU周期,是计算机完成一个基本操作所需的时间,如数据传输、算术运算等。一个机器周期可能包含一个或多个指令周期中的步骤。
-
关系:指令周期和机器周期是紧密相关的,但两者并不相等。指令周期通常包含多个机器周期。具体来说,指令周期包括了取指令、译码、执行等多个阶段,每个阶段都可能对应一个或多个机器周期。
在计算机中,存在多种周期概念,它们各自在CPU和其他硬件组件的运作中扮演着重要角色。以下是这些周期的定义以及它们之间的关系:
- 时钟周期(T周期或节拍脉冲):
- 定义:时钟周期是CPU和其他单片机的基本时间单位,也称为振荡周期。它通常定义为时钟晶振频率(1秒钟的时钟脉冲数)的倒数。
- 作用:时钟周期控制着计算机的工作节奏,CPU在每个时钟周期内完成一个最基本的动作。
- 数字示例:例如,工作频率为100MHz的芯片,其时钟周期为10ns(因为1s有10^9 ns,所以1/100MHz = 10ns)。
- 机器周期(CPU周期):
- 定义:机器周期也称为CPU周期,是计算机完成一个基本操作(如取指令、存储器读、存储器写等)所需的时间。
- 关系:一个机器周期通常由若干个时钟周期组成。具体数量取决于计算机系统的设计和指令的复杂性。
- 数字示例:在8051系列单片机中,一个机器周期由6个状态周期(S周期)组成,每个状态周期又包含两个时钟周期,因此一个机器周期等于12个时钟周期。
- 指令周期:
- 定义:指令周期是执行一条指令所需要的时间,即从取指令、分析指令到执行完指令所需的全部时间。
- 关系:指令周期通常由若干个机器周期组成。不同指令的指令周期可能不同,取决于指令的复杂性和系统设计。
- 数字示例:MCS-51的指令周期根据指令的不同,可分别包含有一、二、四个机器周期。
- 总线周期:
- 定义:总线周期是CPU通过总线对外部(存储器或I/O接口)进行一次访问所需的时间。
- 关系:总线周期通常包含多个时钟周期,具体数量取决于系统的总线设计和访问速度。
- 状态周期(S周期):
- 定义:在某些系统中(如8051单片机),状态周期是机器周期的子集,一个机器周期包含多个状态周期。
- 关系:一个状态周期通常包含两个时钟周期(节拍)。
归纳:
- 时钟周期是计算机中最基本、最小的时间单位,它决定了CPU和其他硬件组件的工作节奏。
- 机器周期是完成一个基本操作(如取指令、读写内存等)所需的时间,通常由多个时钟周期组成。
- 指令周期是执行一条指令所需的总时间,由多个机器周期组成,具体数量取决于指令的复杂性和系统设计。
- 总线周期是CPU与外部设备(如内存、I/O接口)进行交互所需的时间,也由多个时钟周期组成。
- 状态周期是某些系统中机器周期的子集,用于更细粒度地描述机器周期内的操作。
微操作、微指令、微命令在计算机架构中扮演着不同的角色,以下是它们各自的定义以及它们之间的关系:
- 微操作(Micro-Operation):
- 定义:微操作是指计算机中最基本的、不可再分解的操作。它是最底层、最基本的指令执行步骤。
- 特点:在计算机内部,各种复杂的操作被分解为一系列的微操作,通过执行这些微操作来实现整体的功能。
- 微指令(Micro-Instruction):
- 定义:微指令是指在微程序控制的计算机中,同时发出的控制信号所执行的一组微操作。它描述了在CPU的一个时钟周期内,如何执行一组微操作。
- 组成:微指令由同时发出的控制信号的有关信息汇集而成。它将复杂的机器指令分解成更小的、更易于管理和执行的微操作序列。
- 类型:微指令的格式大体分为两类:水平型微指令和垂直型微指令。水平型微指令一次能定义并执行多个并行操作的微命令,而垂直型微指令中设置微操作码字段,由微操作码规定微指令的功能。
- 微命令(Micro-Command):
- 定义:微命令是控制计算机各部件完成某个基本微操作的命令。它是微操作的控制信号,直接指导硬件如何执行特定的动作。
- 实现:在微指令的控制字段中,每一位代表一个微命令。通过控制字段的编码,可以确定哪些微命令需要被执行,进而控制计算机硬件执行相应的操作。
它们之间的关系:
- 微命令与微操作:微命令是微操作的控制信号,而微操作是微命令的具体执行过程。它们是相互对应的,微命令决定了要执行哪个微操作,而微操作则是微命令的实际执行。
- 微指令与微操作:微指令是由一组微操作组成的,它描述了在一个CPU周期内如何执行这些微操作。微指令是微操作的集合,用于指导计算机硬件按照预定的顺序执行一系列的微操作。
- 微程序与微指令:微程序是机器指令的实时解释器,每一条机器指令都对应一个微程序。而微程序则是由一系列的微指令组成的,用于描述机器指令的执行过程。
综上所述,微操作、微指令、微命令在计算机架构中形成了一个从底层到高层的执行体系。微操作是最基本的执行单元,微指令则是一组微操作的集合,而微命令则是微操作的控制信号。这三者共同构成了计算机内部指令执行的基础。
总线
1、总线概述
定义
计算机的若干功能部件之间如果采用全相联形式(每两个设备之间都有一个通路),当计算机设备比较多时,这样需要设计的通路就非常多。
解决方案就是,所有设备之间都通过一组总线进行数据传输。
总线的作用:借助于总线连接,计算机在各系统功能部件之间实现地址、数据和控制信息的交换,并在争用资源的基础上进行工作。
地址信息:数据存放位置的信息;
数据信息:程序处理所需的数据;
控制信息:传输计算机在什么时候做什么工作的信号信息。
总线特性和分类
根据系统总线的功能还可以将系统总线分类成:
数据总线、地址总线、控制总线
地址总线用于指定主存单元和I/O设备接口电路的地址
总线带宽和数据传输率
因为时钟频率表示 一秒钟有多少个时钟周期,所以时钟频率 / 完成一个数据传输所用的使用周期数 就等于 一秒钟能完成多少次数据传输;数据总线宽度表示 一次数据传输能够传送多少个字节,所以两者的乘积就表示 一秒钟能够传送多少个字节。
- 并行和串行的传输方式
补充一个知识:
总线结构
总线结构有 单总线结构、双总线结构、三总线结构
从总线的 利用率 来看,三总线结构的效率最低;
从整个系统的 吞吐量 来看,三总线结构的效率最高。
2、总线仲裁
集中仲裁
链式查询方式
所有设备通过一条共享的线(总线请求线)串联起来,CPU从最高优先级的设备(离总线仲裁器最近的设备)开始检查是否有总线请求(通过BG线进行查询)。如果有请求,就给予总线使用权,并由该设备通过BS线发出总线忙的信号,停止查询;如果没有,则继续查询下一个设备。这种方式成本低但响应慢,且优先级固定。
计数器查询方式
使用一个计数器来循环遍历所有请求设备,按照固定的顺序分配总线使用权。这种方式提供了较为公平的访问机会,每个设备都有机会按照轮转的顺序获得总线控制权。
这里增加控制线的条数,通常是采用一个译码器生成 n 种信号。
独立式请求方式
小结:
分布式仲裁
特点:不需要中央仲裁器,每个潜在的主模块都有自己的仲裁器和仲裁号,多个仲裁器竞争使用总线。
- 当设备有总线请求时,它们就把各自唯一的仲裁号发送到共享的仲裁总线上
- 每个仲裁器将从仲裁总线上得到的仲裁号与自己的仲裁号进行比较;
- 如果仲裁总线上的号优先级高,则它的总线请求不予响应,并撤销它的仲裁号;
- 最后,获胜者的仲裁号保留在仲裁总线上。
3、总线定时(通信)
目的:解决主机与外设通过总线进行信息交换时,在时间上的配合和动作的协调问题。
总线定时(通信)方式有如下几种:
同步方式、异步方式、半同步方式、周期分裂方式
同步方式
异步方式
半同步方式
周期分裂方式
4、一些题目
存储器
1. 存储器的层次结构
存储器分层次的原因:
- 速度快的存储器价格贵,容量小
- 价格低的存储器速度慢,容量大
为了解决存储容量、价格和存储速度之间的矛盾,就需要进行存储器的分层
二级存储系统:内存 + 外存
三级存储系统:cache + 主存 + 辅存
2. 主存
一、存储器地址分配
二、主存的性能指标
三、半导体存储芯片
RAM
DRAM的刷新
因为物理硬件的影响(栅极电容),DRAM电容上的电荷一般只能维持1~2s,即使不断电,信息也会自动消失,为此,每隔一定时间必须刷新,通常取2s,这个时间称为刷新周期。
常用的刷新方式有3种:集中刷新、分散刷新和异步刷新。
ROM
四、主存与CPU的连接
连接原理
这里需要注意:数据总线是双向的;而地址总线是单向的,只能由CPU向主存发送地址信息。
主存容量的扩展
单个存储芯片的容量有限,在字数或字长方面与实际存储器的要求有差距,需在字和位两方面进行扩充才能满足要求。
1. 位扩展法
一、定义
位扩展法是指在保持存储器中字的数量不变的情况下,通过增加每个字的数据位数(即存储字长)来扩展存储器的容量。这种方法常用于当数据总线宽度大于单个存储器芯片的数据位数时,通过组合多个芯片来增加数据位数。
二、实现方式
- 芯片选择:首先选择具有较小数据位数的存储器芯片作为基本单元。例如,可以使用8K×1位的RAM芯片作为基本单元。
- 数据线连接:将多个基本单元的数据线并联起来,以形成更宽的数据总线。例如,使用8片8K×1位的RAM芯片,通过并联数据线的方式,可以组成8K×8位的存储器。
- 地址线连接:在位扩展法中,所有芯片的地址线都是直接相连的,因为位扩展不改变存储器中字的数量,所以地址线不需要进行特殊设计。
- 片选信号:由于所有芯片在某一时刻都需要被同时选中以进行读写操作,因此片选信号(CS)需要连接到所有芯片上。
三、特点
- 数据位数增加:通过位扩展法,可以显著增加存储器的数据位数,从而提高数据处理的效率。
- 字的数量不变:位扩展法只改变存储器的数据位数,而不改变存储器中字的数量,因此不会改变存储器的地址空间。
- 灵活性:位扩展法可以根据实际需求,通过组合不同数量的芯片来灵活扩展存储器的数据位数。
四、示例
假设我们需要一个8K×8位的存储器,但手头上只有8K×1位的RAM芯片。这时,我们可以使用位扩展法,通过并联8片8K×1位的RAM芯片的数据线,组成一个8K×8位的存储器。在这个过程中,所有芯片的地址线都是直接相连的,而片选信号则连接到所有芯片上。
2. 字扩展法
定义:在不改变存储字长(即数据位数)的情况下,增加存储器中字的数量。
- 基本概念:
- 存储字长:通常指一个存储单元所存储的二进制代码的总位数,也就是存储单元能够存储的数据位数。
- 字的数量:指的是存储器中可以存储的不同存储单元的数量。
- 字扩展法的特点:
- 在字扩展法中,我们保持每个存储单元的数据位数(即存储字长)不变,而通过增加更多的存储单元(即增加字的数量)来扩展整个存储器的容量。
- 实现方式:
- 地址线:在进行字扩展时,地址线通常会分为高位地址线和低位地址线。低位地址线直接连接到所有芯片上,用于选择芯片内部的存储单元;而高位地址线则通过译码器或其他方式连接到芯片上,用于选择特定的芯片(即字扩展)。
- 数据线:数据线通常直接连接到所有芯片上,因为字扩展不改变数据位数。
- 片选信号:通过片选信号(CS)或译码器的设计,可以确保在某一时刻只有部分芯片被选中,从而实现对不同芯片的访问。
- 示例:
- 假设我们有4个16K×8位的RAM芯片,通过使用字扩展法,我们可以将它们组合成一个64K×8位的存储器。在这个例子中,每个芯片都有16K(即16,384个)8位的存储单元。通过将这四个芯片并联在一起,我们得到了一个总共包含65,536(即64K)个8位存储单元的存储器。
3. 字位同时扩展法
一、定义
字位扩展,又称为“全扩展”或“同时扩展”,它结合了字扩展和位扩展的特点,既增加了存储单元(字)的数量,又增加了每个存储单元的数据位数(位)。这种方法通常用于需要同时提高存储器的容量和数据处理能力的场合。
二、实现方式
-
芯片选择:选择具有适当容量和数据位数的存储器芯片作为基本单元。
-
数据线连接:将多个基本单元的数据线并联起来,形成更宽的数据总线,以满足扩展后的存储字长需求。
-
地址线连接:地址线分为两部分,一部分连接到所有芯片的低位地址线,用于选择芯片内部的存储单元;另一部分经过译码器连接到各个芯片的高位地址线,用于选择特定的芯片(即字扩展)。
-
片选信号:通过译码器或其他逻辑电路产生片选信号,确保在某一时刻只有部分芯片被选中,以实现对不同芯片的访问。
三、特点
-
容量和数据位数同时增加:字位扩展通过同时增加存储单元的数量和每个单元的数据位数,实现了存储器容量和数据处理能力的双重提升。
-
灵活性高:字位扩展可以根据实际需求灵活调整存储单元的数量和数据位数,以适应不同的应用场景。
-
复杂度较高:由于同时涉及到字扩展和位扩展,字位扩展的实现过程相对复杂,需要精心设计地址线、数据线和片选信号等连接关系。
四、示例
假设我们有4个1K×4位的RAM芯片,现在想要通过字位扩展法将它们组合成一个2K×8位的存储器。具体实现过程如下:
-
扩展方法:首先进行位扩展,将两个1K×4位的芯片并联起来形成一个1K×8位的模块;然后进行字扩展,将两个1K×8位的模块组合起来形成一个2K×8位的存储器。
-
地址线连接:每个1K×4位的芯片有10条地址线(A0A9),用于选择芯片内部的1024个存储单元。在进行位扩展时,将两个芯片的A0A9地址线直接并联;在进行字扩展时,将两个1K×8位模块的A10地址线连接到译码器上产生片选信号,以区分两个模块。
-
数据线连接:每个1K×4位的芯片有4条数据线(D0~D3),用于传输数据。在进行位扩展时,将两个芯片的D0~D3数据线按顺序并联起来形成8条数据线(D0~D7)。
-
片选信号:通过译码器将A10地址线转换为片选信号CS0和CS1,分别控制两个1K×8位模块的选通。当A10为0时选中第一个模块;当A10为1时选中第二个模块。
字位扩展的设计,可以看这个视频:
https://www.bilibili.com/video/BV1co4y1X7fr?vd_source=564abed1c36a31978eb9de7cdc6668d2
32K×8位的芯片:这里的32K指的是存储单元的数量,也即该芯片中总共有32K个存储单元;8位代表每个存储单元可以存储8个二进制位,也即一个存储单元可以表示0到2^8-1(即0到255)之间的一个十进制数,或者说一个字节的数据)。还需要注意的是8位指的是比特位bit,如果换算成字节也就是1个字节,所以这个芯片的容量为 32KB(这里的B表示的是字节,Byte)
- 首先分析我们采用什么扩展法:因为我们手里面有32K×8位的芯片,我们要使用该芯片组成成128K*16位的芯片。由8位组成16位,需要2个该芯片进行位扩展,这样我们就可以组成32K*16位的芯片;由32K字组成128K字,需要4组32K,即4 * 32K = 128K,所以我们需要4个32K*16芯片利用字扩展去组成128K*16芯片;
- 位扩展主要体现在数据线的连接上,因为我们是用4个32K*16芯片组成,而每一个32K*16芯片是由两个32K*8芯片组成,所以第一个芯片的8位可以接到数据线的0~7接口上,第二个芯片的8位要接到8~15接口上。每一个32K*16芯片都需要进行位扩展,其接法相同。
- 字扩展主要体现在地址线上,一条地址线能够表示两种状态(高低电平),为了表示32K个字的状态(32K = 2^15),因此一个32K*8芯片需要接15个地址线(即0~14)。由于我们是要128K个状态,也即2^17个,为了表示2^17中状态,就需要17根地址线。但是,我们不能直接将额外的两根地址线直接连接到每个32K×16的芯片上,因为这样会导致每个芯片都认为它有 ( 2^17 ) 个地址空间,而实际上它只有 ( 2^15 ) 个。为了解决这个问题,我们需要使用一个额外的译码器(如2-to-4译码器)来根据这两根额外的地址线选择四个32K×16的芯片中的一个。具体地说,我们可以将这两根额外的地址线(我们称之为A16和A17)连接到译码器的输入,并将译码器的四个输出分别连接到四个32K×16的芯片的片选信号(Chip Select, CS)上。这样,当A16和A17的值变化时,只有一个芯片会被选中,而它的15根地址线将被用来访问其内部的32K个字。
总结起来,我们需要:
- 两个32K×8的芯片进行位扩展,形成一个32K×16的芯片。
- 四个这样的32K×16的芯片进行字扩展,形成一个128K×16的芯片。
- 一个2-to-4的译码器来选择这四个芯片中的一个。
同时还需要连接读写线的接入:
- 在设计主存扩展时,R/W线应作为全局控制信号,连接到所有存储器芯片上。
- 无论进行位扩展还是字扩展,R/W线的连接方法都是相同的,即直接并联并连接到系统的R/W控制线上。
- 确保R/W线在整个系统中的连接是唯一的,并且没有与其他信号线发生冲突。
五、Cache
引入:程序访问的局部性原理
在CPU与Cache之间的数据交换中,当提到“字”作为单位时,这个“字”通常指的是一个特定大小的数据块,而不是字节。在计算机体系结构中,“字”的大小可以根据不同的系统和上下文有所不同,但它通常比字节(byte)要大。
例如,在一个32位的CPU架构中,一个“字”可能指的是32位(即4字节)的数据。在一个64位的CPU架构中,一个“字”则可能指的是64位(即8字节)的数据。但是,这只是一个常见的约定,实际上“字”的大小可能因不同的处理器和架构而异。
当CPU从Cache中读取或写入数据时,它通常以“字”为单位进行操作,因为这样做可以提高数据传输的效率。例如,如果CPU需要读取一个4字节的整数,而Cache以字节为单位传输数据,那么CPU需要发送4个独立的请求来获取这4个字节。然而,如果Cache能够以字为单位传输数据,那么CPU只需要发送一个请求就可以获取整个整数。
- CPU在访问数据时,首先会尝试从缓存中获取,以减少对内存的访问次数,从而提高性能。
- Cache通过存储内存中一部分数据的副本来加速CPU的数据访问。
- 当缓存未命中时,CPU会向内存发出请求,而内存会响应这些请求并提供所需的数据。
- 数据在CPU、Cache和内存之间的传输通常以较大的数据块(如Cache Line或内存块)为单位进行,以提高数据传输的效率。
Cache和主存的映射关系
由于Cache的容量远小于主存,因此多个主存块可能会映射到同一个Cache行。这种情况称为地址冲突或别名问题。要通过设计合理的映射策略,减少或避免地址冲突,从而提高Cache的利用率和性能。
如何区分Cache中存放的是哪个主存块?
- 给每个Cache块增加个“标记”记录对应的主存块号?
- 还要增加“有效位“
全相联映射
直接映射
Cache的标记可以进行优化
访存
组相联映射
题目
这里的总容量不仅仅是指Cache本身的容量8x64B,还要包括 采用直接映射方法 额外所需要的容量。
- 为了唯一标识Cache的行号,所以要有一个Cache块号(这里Cache总共有8行,只需要使用三个bit就能标识了,所以Cache块号需要占3位);
- 为了确定该Cache块中存放的是主存哪个地方的数据,所以要有一个标记字段(因为主存容量为 256MB = 2^28B,其中Cache中一行有64B 2^6B,所以标记位有28 - 6 - 3 = 19位);
- 如果该Cache行没有被使用,那么其行号为0,但0可能也表示是0行也可以表示对应主存第0行,所以还应该在设置一位的有效位。
数据部分:8个Cache行,每行64B,所以数据部分的总容量是 8 * 64B = 512B。
额外部分(作为元数据):
- Cache块号:3位(用于标识8个Cache行中的哪一个)
- 标记字段:17位(用于标识主存中的哪个块映射到当前的Cache行)
- 有效位:1位(表示Cache行是否包含有效数据)
在计算Cache的总容量时,通常我们不需要单独为Cache块号(也称为索引)加上额外的存储空间,因为Cache块号是用于确定数据应该存放在哪个Cache行中的逻辑标识符,而不是物理上需要额外存储的信息。
所以 额外所需要的位数为:(28-6-3) + 1 = 20 * 8bit
总容量也就是8 * 64 * 8 + 20 * 8 bit = 4256 bit
题目:
- 数据线分析:
- 由于DRAM芯片是4M×8位,即每个芯片有8位数据线,用于传输数据。因此,数据引脚的数量是8。
- 地址线分析:
- 对于4M(即2^22字节)的DRAM芯片,理论上需要22根地址线来唯一标识每一个存储单元。但是,DRAM芯片通常采用地址复用技术,即将地址线分为行地址和列地址两次传送。
- 因此,实际使用的地址线数是原来的一半,即22/2 = 11根。
- 引脚总数计算:
- 地址引脚与数据引脚的总数 = 地址引脚数 + 数据引脚数
- 代入已知数值,即 11(地址引脚数)+ 8(数据引脚数)= 19。
易错题:
首先,我们需要明确几个关键的概念和数值:
- 机器字长:32位,这通常意味着数据总线宽度是32位。但在这个问题中,关键的是CPU按半字寻址。
- 半字:在大多数上下文中,半字通常指的是一个字的一半。既然机器字长是32位,那么半字就是16位(或2字节)。
- 存储器容量:16MB = 16 × 2^20 字节(因为1MB = 2^20 字节)。
- CPU按半字寻址:这意味着CPU每次从存储器中读取或写入的数据量是16位(或2字节),但寻址单元的大小是半字,即每个地址对应2字节。
接下来,我们来计算可寻址的单元数:
- 存储器的总字节数是 16 × 2^20 字节。
- 因为每个寻址单元是2字节,所以可寻址的单元数是 (16 × 2^20) ÷ 2 = 2^23。
首先,我们需要明确几个关键参数:
- Cache的容量:64块
- Cache的字块大小:128字
- Cache的组相联度:每4块为一组
- 主存的容量:4096块
- 主存以字编址
接下来,我们进行步骤分析:
- 计算主存地址位数:
- 主存的容量为4096块,所以需要的位数来表示这些块是 (log_2(4096) = 12) 位。
- 但由于主存是以字编址的,而Cache的字块大小为128字,所以每个块内需要 (log_2(128) = 7) 位来编址块内的字。
- 因此,主存地址总位数是块地址位数加块内地址位数,即 (12 + 7 = 19) 位。
- 计算主存标记位数:
- 由于Cache每组有4块,而主存总共有4096块,所以Cache有 (64 / 4 = 16) 组。
- 每组可以映射到主存的 (4096 / 16 = 256) 块。
- 因此,需要 (log_2(256) = 8) 位来表示这256个主存块,即主存标记的位数(总主存共有19位,Cache块号需要4位,块内地址需要7位,其余的用来标记)。
现在,我们可以对照选项:
- 主存地址位数:19位
- 主存标记位数:8位
所以正确答案是D:19,8。
简答题:
1. 计算机硬件的五大部件及其功能如下:
- 运算器(Arithmetic Logic Unit, ALU)
- 功能:执行各种算术和逻辑运算。
- 组成部分:算术逻辑单元(ALU)、累加器、状态寄存器、通用寄存器组等。
- 详细说明:算术逻辑单元(ALU)负责进行基本的四则运算(加、减、乘、除)和逻辑操作(与、或、非、异或等),以及移位、求补等操作。
- 控制器(Control Unit, CU)
- 功能:控制整个计算机系统的操作,包括控制指令的执行顺序和数据的流动。
- 详细说明:控制器从存储器中逐条取出指令,分析每条指令规定的操作以及所需数据的存放位置等,然后根据分析的结果向计算机其他部件发出控制信号,统一指挥整个计算机完成指令所规定的操作。它是整个计算机系统的控制中心。
- 存储器(Memory)
- 功能:用于存放程序和数据,是计算机系统中的记忆设备。
- 组成部分:主存储器(主存、内存)和辅助存储器(辅存、外存)。
- 详细说明:主存用于暂时存储正在进行处理的数据和指令,而辅存则用于长期保存数据和程序。计算机在处理外存的信息时,必须首先经过内外存之间的信息交换。
- 输入设备(Input Devices)
- 功能:用于将外部数据输入到计算机中。
- 示例:键盘、鼠标、扫描仪等。
- 详细说明:输入设备接受用户的命令和外部数据,并将其发送给计算机进行处理。
- 输出设备(Output Devices)
- 功能:用于将计算机处理后的结果输出到外部。
- 示例:显示器、打印机、投影仪等。
- 详细说明:输出设备将计算机处理得到的数据或信息展示给用户或其他设备。
这五大部件相互配合,协同工作,共同构成了计算机硬件系统的基本框架。其中,控制器是整个系统的控制中心,负责协调各个部件的工作;运算器负责执行各种算术和逻辑运算;存储器用于存放程序和数据;输入设备用于接收外部信息;输出设备则用于展示处理结果。
软件与硬件的逻辑等价性是指在计算机系统中,软件和硬件在逻辑功能上的等价性。这种等价性体现在以下几个方面:
- 功能实现:
- 任何一个由软件所完成的操作也可以直接由硬件来实现。例如,硬件可以直接执行乘法运算,而软件也可以通过一系列的指令模拟这个过程。
- 类似地,任何一条由硬件所执行的指令也能用软件来完成。这意味着,原本需要硬件直接支持的某些功能,现在也可以通过编写相应的软件程序来实现。
- 物理与逻辑的区别:
- 软件是无形的逻辑实体,而硬件则是有形的物理实体。但它们在逻辑功能上是可以相互替代的。
- 系统设计的依据:
- 软硬件的逻辑等价性原理是计算机系统设计的重要依据。在设计计算机系统时,设计者需要明确分配每一级的任务,确定哪些情况使用硬件,哪些情况使用软件。
- 软硬件界限的模糊化:
- 随着大规模集成电路技术的发展和软件硬化的趋势,计算机系统软、硬件界限已经变得模糊了。现在,许多复杂的、常用的程序可以被制作成固件,这些固件在功能上是软件,但在形态上又可以被视为硬件。
- 软硬件的相互影响与发展:
- 软硬件的逻辑等价性也促进了它们之间的相互影响和发展。例如,随着硬件功能的增强,原本需要复杂软件程序才能实现的功能现在可以通过简单的硬件电路来完成。反之,软件技术的进步也为硬件设计提供了更多的可能性。
- 举例说明:
- 以乘法运算为例,硬件可以直接执行乘法指令得到结果,而软件则可以通过循环加法的方式模拟乘法运算。虽然两者在物理实现上有所不同,但在逻辑功能上它们是等价的。
综上所述,软件与硬件的逻辑等价性是指软件和硬件在逻辑功能上的相互替代性。这种等价性不仅体现在功能实现上,还体现在系统设计的依据、软硬件界限的模糊化以及它们之间的相互影响与发展上。
DRAM(动态随机访问存储器)和SRAM(静态随机访问存储器)各有其显著的特点,以下是对它们特点的详细分析:
DRAM的特点:
- 存储容量大且可扩展性强:DRAM的存储容量非常大,通常可以提供从几百兆字节(MB)到数十或数百GB不等的存储容量,满足了现代计算机系统对大容量内存的需求。此外,DRAM模块可以通过添加更多的存储芯片进行扩展,以适应不断增长的数据处理需求。
- 高速的数据访问和传输:DRAM拥有非常高的读取和写入速度,使得数据的访问和传输更加迅速。DRAM的读写速度通常以纳秒(ns)为单位,可以高效地满足多线程处理、实时计算和大规模数据操作等需要快速数据访问的场景。
- 需要周期性刷新:DRAM的一个显著特点是其需要周期性刷新来保持存储数据的稳定性。这是因为DRAM使用电容来存储数据,而电容会逐渐放电导致数据丢失,所以需要周期性地对电容进行充电以保持数据的完整性。
- 成本较低:相对于SRAM,DRAM的单位存储成本较低,因此在大多数计算机系统中得到广泛应用。
SRAM的特点:
- 速度快:SRAM具有高速读写能力,可以在几纳秒的时间内完成读写操作。这是因为SRAM使用触发器来存储数据,不需要像DRAM那样周期性地刷新电容以保持数据。
- 不需要刷新:SRAM是一种非易失性存储器,即在电源关闭后仍然可以保持存储的数据。这是因为SRAM使用触发器来存储数据,触发器具有双稳态特性,可以保持数据的稳定性。
- 容量较小:与DRAM相比,SRAM的存储容量相对较小。这是因为SRAM使用更多的晶体管来存储一个比特的数据,而DRAM只需要一个电容和一个访问晶体管来存储一个位。
- 功耗较高:由于使用了更多的晶体管,SRAM在工作时需要更多的功耗,从而导致更高的功耗。
- 稳定性好:由于SRAM使用触发器来存储数据,它对于外界干扰的抗干扰能力更强,更稳定。
综上所述,DRAM和SRAM各有其优缺点。DRAM以其大容量、高速访问和低成本在大多数计算机系统中得到广泛应用,而SRAM则以其高速、稳定和低延迟在需要高性能存储的场合(如CPU缓存)中得到使用。
我们考试考了:
1. DMA运行时,CPU会进行什么操作?
2. 程序,机器指令,微程序,微指令,微命令,微操作之间的关系
3. 影响流水线速度的因素
4. 水平指令和垂直指令是什么?其特点?
最后,希望大家都能高分通过计组考试……