代码
module alu(a,b,aluc,r,z);
input [31:0] a
input [31:0] b;
input [3:0] aluc;
output [31:0] r;
output z;
assign r = cal (a,b,aluc);
assign z =~|r;
function [31:0] cal;
input [31:0] a,b;
input [3:0] aluc;
casex (aluc)
//0 4 1 5 2 6 3 7 F
4'bx000: cal =a + b;
4'bx100: cal =a - b;
4'bx001: cal =a & b;
4'bx101: cal =a | b;
4'bx010: cal =a ^ b;
4'bx110: cal ={b[15:0],16'h0};
4'bx011: cal =b << a[4:0];
4'b0111: cal =b >> a[4:0];
4'b1111: cal =$signed(b) >>> a[4:0];
endcase
endfunction
endmodule
module shift (d,sa,right,arith,sh);
input [31:0] d;
input [4:0] sa;
input right,arith;
output [31:0] sh;
reg [31:0] sh;
always @* begin
if (right == 0) begin // shift left
sh = d << sa;
end else if (arith == 0) begin // shift right logical
sh = d >> sa;
end else begin // shift right arithmetic
sh = $signed(d) >>> sa;
end
end
endmodule
module regfile (rna,rnb,d,wn,we,clk,clrn,qa,qb);
input [4:0] rna,rnb,wn;
input [31:0] d;
input we,clk,clrn;
output [31:0] qa,qb;
reg [31:0] register [1:31];
assign qa = (rna == 0) ? 0 : register[rna];
assign qb = (rnb == 0) ? 0 : register[rnb];
//posedge:上沿,negedge:下沿
always @ (posedge clk or negedge clrn) begin
if (clrn == 0) begin //初始化寄存器堆
integer i;
for (i=1; i<32; i=i+1)
register[i] <= 0; //<= 非阻塞赋值
end else begin
if ((wn != 0) && (we == 1)) //we:写使能,wn:write number
register[wn] <= d; //<=非阻塞赋值
end
end
endmodule
简答题
画出冯诺依曼计算机结构图
在计算机的主存中,通常设置一定的ROM区,并且 ROM与RAM统一编址,请指出设置ROM区的目的。
存放开机引导的存储数据
某计算机字长32b,其中地址码长度22b,若主存按 字编址,主存的最大容量是多少(字)?若主存按 字节编址,主存的最大容量是多少(字节)?
2^22=4M字
32/8 * 2^22=16MB
计算机为什么要采用多级结构的存储系统?
人们总希望存储器具有容量大、速度快和成本低的特性,而实际上速度快的存储器成本高、容量小,容量大、成本低的存储器又比较慢。为了解决存储器容量、速度和价位之间的矛盾,需要构建多层次的存储系统。
多级存储系统的建立基于什么原理?简述这一原理。
程序局部性原理;程序局部性是指程序在执行期间呈现出局部性的规律,即在一段时间内,CPU访问存储器时,无论是存取指令还是存取数据,所访问的单元都趋于集中在一个较小的连续区域中
试描述挥发性存储器和非挥发性存储器各自的特点, 并各举2个实例。
挥发性存储器:断电后信息丢失:SRAM、DRAM
非挥发性存储器:断电后信息不丢失:磁盘、ROM
什么是存储器的带宽?若存储器的数据总线宽度为 32位,存取周期为200ns,则存储器的带宽是多少?
存储器的带宽指单位时间内从存储器进出信息的最大数量。
存储器带宽 = 1/200ns ×32 位 = 160M 位 / 秒 = 20MB/ 秒 = 5M 字 / 秒 注意 :字长 32 位,不是 16 位。(注: 1ns=10^-9s )
<> 3级存储系统可分为2 个层次:缓存-主存和主存-辅存。请对这2个层 次加以比较
缓存-主存 | 主存-辅存 | |
---|---|---|
目的 | 解决存储系统速度问题 | 解决存储系统容量问题 |
依据的基本原理 | 程序局部性原理 | 程序局部性原理 |
存储容量 | 小 | 大 |
读写速度 | 快 | 慢 |
实现方法 | 硬件 | 软件 |
指令和数据都存于存储器中,计算机如何区分它们
通过不同的时间段来区分指令和数据,即在取指令阶段取出的为指令,在执行指令阶段取出的即为数据。
通过地址来源区分,由PC提供存储单元地址的取出的是指令,由指令地址码部分提供存储单元地址的取出的是操作数。
<>CPU对DMA请求和中断请求的响应时间是否一样?为什么?
不一样,因为两种方式的交换速度相差很大,因此CPU必须以更短的时间间隔查询并响应DMA请求。
什么是多重中断?实现多重中断的必要条件是什么
多重中断是指:当CPU执行某个中断服务程序的过程中,发生了更高级、更紧迫的事件,CPU暂停现行中断服务程序的执行,转去处理该事件的中断,处理完返回现行中断服务程序继续执行的过程。
实现多重中断的必要条件是:在现行中断服务期间,中断允许触发器为1,即开中断。
<>主存一般有哪两种选址方式?简述其特点
(1一维地址译码方式
只有一个地址译码器。字选线选择某个字的所有位。 存储阵列中每一行的所有位对应一个字,共用一根字选择线;
每一列对应不同字的同一位,且与公用的位线相连接。
地址码只需进行一次译码就可选择存储单元,其地址码位数越长,译码器结构越复杂,成本越高,故该寻址方式适合在速度较快、容量较小的存储芯片中使用。
(2)二维地址译码方式
存储体中的存储单元按照阵列方式排列
需要 X 和 Y 两个地址译码器, X 称为行译码器,Y 称 为列译码器。
只有 X 译码器和 Y 译码器同时选中的行、列交叉位 置的存储单元才被选中,主要用于大容量的存储器结构
Cache在存储器的层次结构中能起什么作用?
解决CPU和主存速度不匹配的问题、解决了主存储器速度和价格之间的矛盾
什么是中断优先权?中断嵌套的含义是什么
所谓中断优先级就是指当有两个或以上的中断源同时申请中断,系统会优先响应优先级高的中断源。
中断嵌套是指在中断执行的过程中,如果有一个优先级较高的中断源发送中断请求,系统会打断正在执行的中断转而处理更高优先级中断源的中断事件。
什么是I/O接口?为什么在计算机系统中需要设置I/O接口会起到 什么样的作用
IO接口是指计算机中将主机与外部设备或其他外部系统进行连接的接口逻辑
IO接口时主机与外设链接的桥梁,通过接口可以实现主机和外设之间的信息交换
<>描述中断方式输入输出控制的工作流程
CPU 在发出启动外设的命令后继续执行其他操作,
当外设完成数据准备工作后主动向主机提出中断申请,请求CPU进行数据处理,
CPU 在响应中断后通过执行该设备的中断服务程序完成数据传输工作
简述以下指令的执行过程:lw r24, 100(r15)
根据程序计数器, 从存储器取出指令,并把PC + 4
对指令进行译码,从寄存器堆读出寄存器15中的数据
计算存储器地址:该数据与立即数100相加
访存:相加的结果作为存储器地址, 从存储器中读出数据
把该数据写入寄存器24
MIPS有哪三种类型指令?各举一指令实例,并说明该指令的功能。
R、I、J
add rd,rs,rt 把寄存器rs和rt内容相加,结果存在寄存器rd中
add rt,rs,imm 把寄存器rs数据和无符号立即数imm相加,结果存放在rt中
--------
ADD $8,$9,$10 -》 $8<=($9)+($10)
ADDI $t8,$s3,100 -》 $8=($9)+100
J address -》 PC={PC[31:28]+address<<2}
一个较完整的指令系统,应当包括那些类型的指令?
数据处理、数据存储、数据传送、程序控制
<>从以下5个方面比较DMA 方式与程序中断方式。
程序中断方式 | DMA方式 | |
---|---|---|
数据传送 | 程序(软件) | 硬件 |
响应时间 | 慢 | 快 |
处理异常情况 | 能 | 不能 |
中断请求 | 传送数据 | 处理结束 |
优先级 | 低 | 高 |
MIPS CPU指令格式有哪三种,试分别写出它们的指令格式。
R型指令:|Opcode|rs|rt|rd|Shamt|Funct|
I型指令:|Opcode|rs|rt|immediate|
J型指令:|Opcode|JumpAddr|
(比特顺序:31-0)
<>MIPS指令的寻址方式有哪几种?试举例说明。
MIPS处理器大多指令都是顺序寻址方式,程序转移涉及的寻址方式有三种:
1. 相对寻址
BEQ rs,rt,label
BEQ $t1,$t2,label,当$t1=$t2时,指令转移地址是PC=PC+label
2. 寄存器间接寻址
JALR $1,$3将PC+4的值保存到$1中,然后执行PC=$s3
3. 伪直接寻址
J label指令执行时32位的转移地址是将PC的高4位和26位的JumpAddr左移两位拼接构成的,PC={PC[31:28],label<<2}
试说明以下指令的功能,并写出对应的32位MIPS CPU 二进制机器指令代码。
(1)sll r13, r12, 25 ; (2)addi r3, r1, -1 ; (3) lui r29, 0xffff ;
Shamt:Shift Amount
1. sll rd,rt,shamt
r13=r12<<25
000000 00000 01100 01101 11001 000000
2. addi rt,rs,imm
rt<-(rs)+imm
001000 00001 00011 1111111111111
3. lui rt,imm
rt <- immediate<<16 ;将16位立即数放到目标寄存器高16
位,目标寄存器的低16位填0
001111 00000 11101 1111111111111111
综合题
机器字长32位,主存容量为1MB,16个通用寄存器,共32条指令, 请设计双地址指令格式,要求有立即数、直接、寄存器、寄存器间 接、变址、相对六种寻址方式。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jOVKq3ss-1641558756242)(C:\Users\sun\AppData\Roaming\Typora\typora-user-images\image-20210107003011603.png)]
某机器字长为32位,主存容量为2M*32位,单字长指令,且存储字长等于指令字长,有168种操作,操作码位数固定,采用寄存器寻址、 寄存器间接寻址、 立即寻址、直接寻址和间接寻址。CPU中有32个 32位通用寄存器。试回答:
- 设计三地址指令,画出三地址指令格式并指出各字段的作用;
- 该指令直接寻址的最大范围;
- 寄存器间接寻址范围;
- 立即数(补码表示的有符号机器数)的范围(用十进制数表示)
> 手写,正误不知 <
1.
|OP |X |rs |rt |rd |D |
|8 |3 |5 |5 |5 |6 |
OP:操作码
X:寻址方式
rs:源寄存器地址
rt:另外一个源寄存器地址
rd:目的寄存器地址
D:为立即数和间接寻址使用
2. 2^6-1
3. 0~2^32-1 , 4GW
4. -32 ~ 31
一个容量为16K×32位的存储器,其地址线和数据线的总和是多少?当 选用下列不同规格的存储芯片时,各需要多少片? 1K×4位,2K×8位, 4K×4位,16K×1位,4K×8位,8K×8位
设某机有五个中断源L0、L1、L2、 L3、L4,按中断响应的优先次序由 高向低排序为L0L1 L2 L3 L4,现要求中断处理次序改为L1L4 L2 L0 L3,根据下面的格式,写出各中断源的屏蔽字
中断源 | 原屏蔽字(L01234) | 新屏蔽字(L01234) |
---|---|---|
L0 | 11111 | 10010 |
L1 | 01111 | 11111 |
L2 | 00111 | 10110 |
L3 | 00011 | 00010 |
L4 | 00001 | 10111 |
CPU内有32个32位的通用寄存器,设计一种能容纳64种操作的 指令系统。假设指令字长等于机器字长,试回答以下问题。
- 如果主存可直接或间接寻址,采用“寄存器—存储器” 型指令,能直接寻址的最大存储空间是多少?画出指令格式并说明各字段的含义。
- 在满足(1)的前提下,如果采用通用寄存器作基址寄存器,则上述“寄存器—存储器”型指令的指令格式有何特点? 画出指令格式并指出这类指令可访问多大的存储空间?
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VKIHpcMx-1641558756242)(C:\Users\sun\AppData\Roaming\Typora\typora-user-images\image-20210107003246976.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w2ARjqjb-1641558756243)(C:\Users\sun\AppData\Roaming\Typora\typora-user-images\image-20210107003257398.png)]
某微机指令格式如下所示:
格式中 D 为位移量,X为寻址方式特征值:
- X=00 , 直接寻址;
- X=01, 用变址寄存器R1进行变址
- X=10, 用变址寄存器R2进行变址
- X=11, 相对寻址
设(PC)=1234H,(R1)=0037H,(R2)=1122H,(H代表十六进制数), 请确定如下指令的有效地址:
(1)4420H (2) 2244H (3)1322H (4)3521H (5)6723H
1. 4420H=010001,00,00100000B
X=00,直接寻址
EA=D=20H
2. 2244H=001000,10,01000100B
X=10,用变址寄存器R2进行变址
EA=(R2)+ D=
3. 1322H=000100,11,00100010B
X=11,相对寻址
EA=(PC)+ D
4. 3521H=001101,01,0100001B
X=01,用变址寄存器R1进行变址
EA=(R1)+ D=
5. 6723H=011001,11,0100011B
X=11,相对寻址
EA=(PC)+D =
sample:
正确答案:(1)5472H; (2)0038H; (3)3549H; (4)679AH。 (1)8341H=(1000001101000001)2。X=11,相对址,D=41H,有效地址E=(PC)+D=5431H+41H=5472H。(2)1438H=(0001010000111000)2X=00,直接寻址,D=38H,有效地址E=D=0038H。(3)8134H=(1000000100110100)2X=01,用变址寄存器RXl寻址,D=34H,有效地址E=(RXl)+D=3515H+34H=3549H。(4)6228H=(0110001000101000)2X=10,用变址寄存器RX2寻址,D=28H,有效地址E=(RX2)+D=6766H+34H=679AH。
某MIPS架构的多周期CPU执行一段程序,指令分布情况如下:
假设该程序由100个指令组成,CPU执行完该程序可实现2KB数据的输出,若CPU的时钟周期T=100ps,求处理器的: (1)平均CPI (2)平均IPS (3)数据输出通路的基本带宽。
CPI:CPU每执行一条指令所需的时钟周期数。
IPS(Instructions per second):每秒执行指令数
ps:皮秒,10^-12s
CPI=4*0.45+5*0.25+4*0.15+3*0.1+2*0.05=4.05
IPS=1/(T*CPI)=
2KB/(100/IPS)
某32位MIPS型计算机,其存储器按字编址,存储片段如下:
存储器地址 (十六进值) | 存储内容 (形式化表示) | 寄存器地址(二进值) | 寄存器内容(十进制) |
---|---|---|---|
00000000 | add rd, rs, rt | 01000 | 10 |
00000004 | lw rt, offset(rs) | 01001 | 20 |
00000008 | beq rs, rt, label | 01010 | 17 |
0000000C | 00000008H | 01011 | 11 |
00000010 | 0000000AH | 01100 | 13 |
00000014 | 0000000BH | 01101 | 15 |
若指令的各段代码对应的十进制数为:
$rs=8, $rt=9, $rd=10, offset=6, label=4
请分析下列3种条件下,相关寄存器的值:
(1)add指令执行后,PC寄存器和rd寄存器中的内容分别是什么?
(2)lw指令执行后,PC寄存器和rt寄存器中的内容是什么?
(3)beq指令执行后,PC寄存器的内容是什么?
1. rd<=(rs)+(rt)=10+20=30
(rd)=30
指令长度为4Byte,PC<=PC+4
(PC)=00000004H
2. rt<=Mem[(rs)+offset]
(rt)=Mem[十进制(10+16)]=0000000AH
(PC)=00000008H
3. 由2,(rt)=AH=10
(rs)==(rt)
所以PC<=(PC)+ 4 + offset<<2
(PC)=1CH
其它
时钟周期
时钟周期也称为振荡周期,定义为时钟脉冲的倒数(时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时钟周期就是1/12us),是计算机中的最基本的、最小的时间单位。
在一个时钟周期内,CPU仅完成一个最基本的动作。时钟脉冲是计算机的基本工作脉冲,控制着计算机的工作节奏。时钟频率越高,工作速度就越快。
8051单片机把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。
机器周期
计算机中,常把一条指令的执行过程划分为若干个阶段,每一个阶段完成一项工作。每一项工作称为一个基本操作,完成一个基本操作所需要的时间称为机器周期。8051系列单片机的一个机器周期由6个S周期(状态周期)组成。 一个S周期=2个节拍(P),所以8051单片机的一个机器周期=6个状态周期=12个时钟周期。
例如外接24M晶振的单片机,他的一个机器周期=12/24M 秒;
指令周期文章来源:https://www.toymoban.com/news/detail-480602.html
执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期也不同
单片机外接晶振的倒数,例如12M的晶振,它的时钟周期就是1/12us),是计算机中的最基本的、最小的时间单位。
在一个时钟周期内,CPU仅完成一个最基本的动作。时钟脉冲是计算机的基本工作脉冲,控制着计算机的工作节奏。时钟频率越高,工作速度就越快。
8051单片机把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。
机器周期
计算机中,常把一条指令的执行过程划分为若干个阶段,每一个阶段完成一项工作。每一项工作称为一个基本操作,完成一个基本操作所需要的时间称为机器周期。8051系列单片机的一个机器周期由6个S周期(状态周期)组成。 一个S周期=2个节拍(P),所以8051单片机的一个机器周期=6个状态周期=12个时钟周期。
例如外接24M晶振的单片机,他的一个机器周期=12/24M 秒;
指令周期
执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期也不同文章来源地址https://www.toymoban.com/news/detail-480602.html
到了这里,关于计组期末复习的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!