前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >计算机组成原理实验解析

计算机组成原理实验解析

作者头像
用户7267083
发布2022-12-08 14:23:53
7040
发布2022-12-08 14:23:53
举报
文章被收录于专栏:sukuna的博客sukuna的博客

计算机组成原理实验解析

于2021年12月7日2021年12月7日由Sukuna发布

数据表示实验

第一关:汉字转换

  • 区位码+2020H=国标码
  • 那么根据补码原理,国标-2020H = 国标+FFFFH-2020H+1 = 国标+DFDFH+1 = 国标+DFE0H

第二关:偶校验码生成

回忆:偶校验就是为了让数里面1的个数为偶数,做法是所有数位.奇校验就是让数里面1的个数为奇数

第三关:检验错误

偶校验检验错误就是看数里面1的个数是不是偶数,做法就是异或:

第四关:海明编码

海明码的位置是这样的,校验位占据2的幂方次位,其他数据位就是占据其他没有被校验位占据的位置. 对于数据位

H_n
H_n

怎么放置校验组的方法就是看数据位的下标,把下标

n
n

用二进制标出来,第几位是1就放进第几组校验组. 第n组校验组里面全部都是下标第n位为1的数据 比如说

H_{15}
H_{15}

,二进制标出来是1111,就放入第一个第二个第三个第四个校验组里面.然后每个校验码都是校验组里面所有数据位异或即可.

第五关:海明解码

看看总校验码G的大小,G=0代表没有出错,G=n代表第n位出错了,最后有一个总的偶检验位,如果发生了两位错,偶检验是检验不出来的,但是一位错偶检验肯定能看出来.

运算器实验

第一关:8位可控加减法器

时延已经填写在上面了,全加器的时延是,产生进位需要5T,获取答案需要6T,但是我们知道在第二个全加器之后,有关X和Y的运算都已经算好了,就等待上一个全加器的进位信号了,也就是说假如说有关X和Y的运算已经算好的情况下,全加器输出进位只需要2T,输出结果只需要3T.也就是说n个全加器输出进位信号只需要2n+6T的时间.

实验的思路很简单,就是上一位的进位沿着进位链进行传播.下面用一个Sub信号代表控制减法,因为根据减法的性质,我们可以知道x-y就相当于x+-y的补码,负数的补码就是取反+1,这个可以用异或门代表取反,谁异或0都是自己,谁异或1都是自己的相反.

第二关:四位先行进位加法器

我们可以构造

P_i=X_i /oplus Y_i
P_i=X_i /oplus Y_i

,

G_i=X_iY_i
G_i=X_iY_i

,这个时候我们就知道

S_i=P_i \oplus C_i
S_i=P_i \oplus C_i

,

C_{i+1}=G_i+P_iC_i
C_{i+1}=G_i+P_iC_i

,然后按照级次来依次构造,生成本组的进位生成函数和进位传递函数,这个时候我们对于4的倍数位加法就可以进行分割,每4位进行一次加法,然后每个四位都可以生成进位和得数

第三关:四位快速加法器

输入X和Y,通过每一位的P和G生成进位,这个时候可以利用生成得到的进位函数直接带入全加器进行运算,就是用一个电路并行生成进位,然后再用这个进位直接生成答案

第四关:16位快速加法器

这下可以把16位拆成4个4位运算,把每个4位运算当成整体来进行计算,先输入X和Y(4位),每4位都可以产生进位生成函数和进位传递函数,接着传给CLA74182,它会并行生成

C_4,C_8,C_12
C_4,C_8,C_12

的进位信号.接着4个快速加法器可以并行生成答案.

思路就是把16位的分解成4个4位的,对每个4位的加法都当成一个整体,这4位加法都产生进位生成函数和进位生成函数然后传递给CLA74182,接着生成进位.并行计算

时延:每个快速加法器生成P和G,5T,74182计算进位,2T,就是7T,每个元素算出答案是5T,就是12T

第五关:32位快速加法器

把32位拆成2个16位,第一个16位加法运算的向后进位传递给第二个16位加法运算.

第六关:阵列乘法器

对着书看就行

第七关:乘法流水线

模仿竖式计算的思路,通过与门阵列的元素乘数第n位乘以被乘数的值,这个是5位的,然后就是模拟竖式计算的.

第八关:补码阵列乘法器

单独对符号位进行处理.负负得正,正负得负.

第九关:原码一位乘法器

为什么计数器要到9才停止呢?因为第一次要载入Y,有n位就做n次加法运算,然后维护一个暂存值P,每一次做加法都看y的最低一位,如果最低一位是0的话,暂存值就加0,如果最低一位是1的话,暂存值就加x.注意,每次做完加法Y和暂存值P都要往右移动一位

第十关:补码一位乘法器

在y的右边增加一位,这样一来,Y就有n+1位元素了!还是一样,有一个暂存值P还有一个Y值,加法的时候就是看Y的最后两位(包括增加的那一位),如果最后两位是01的话就是暂存值P加x,如果最后两位是11&00的话就是暂存值P加0,如果最后两位是10的话就是暂存值P减去x.做完加法后的话暂存值和Y都是要右走一位的.

存储器实验

第一关:字库实验

一个大的块分成若干个小的块,地址不变的情况的情况下,地址的高位选择究竟是哪块,低地址就是选择块内的哪一个字节.

第二关:RAM

首先是选择究竟是直接访问一个字,还是一个字节,还是只是半个字.如果是一个字就好办,如果只是半个字的话,另外一半字就是要输出0,如果只是一个字节,那么另外3/4个字就是0.写也是一样,但是写的话可以选择究竟写在哪个半字,究竟写在哪个字节里面.

在字节的情况下,Din0,Din1,Din2,Din3都是一样的,在字的情况下,Din0,Din1&Din2,Din3都是一样的,然后我们可以根据半字选择和字选择选择写在哪里或者读在哪里.假设字有4位,那么倒数第2位就是选择写在哪个半字里面,最后2位就是字内偏移.

第三关:寄存器组,W#确定写在哪里,WE表示这里要开始写数据了,R1#表示选择哪个寄存器来读.很简单(注意,第一个寄存器一定是0)

第四关:四路组相连Cache

这个电路比较复杂,现在我在这里进行讲解.

这一个部分是对地址进行分析的,把地址进行了分块,最低的就是块内偏移,index代表会分到哪一个组里面,这个是确定的,这里面一共分成了4个部分,每个部分有两组.最后一个就是tag.

cache被分成固定大小的组,每组有k行,就是k-路组相连.cache组号=主存块号%cache组数(这里cache有两组)

接着就是存储功能的器件:这里cache有8个行,一组有4行,一共有两个组,所以说cache组号=块号%2,每一行存储了淘汰计数,valid,tag和数据副本.

检查命中:检查命中的原理就是,先看这个主存地址属于哪一组,然后在这个组内部的4个元素一一进行比较,找到和哪个tag是一样的.

写入也是一样的,对于要写入cache的主存地址,首先看看这个主存地址属于哪个组里面,再在这个组里面寻找到一个合适的位置塞进去.

所有的行里面的valid都满了那就是槽满了

淘汰策略:没有被访问过计数器的值+1,被访问过了就清零,然后看计数器内部的元素谁最大?

选择写在那个槽里面

CPU实验

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年12月7日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 计算机组成原理实验解析
    • 数据表示实验
      • 运算器实验
        • 存储器实验
          • CPU实验
          相关产品与服务
          GPU 云服务器
          GPU 云服务器(Cloud GPU Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于生成式AI,自动驾驶,深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档