计算机组成原理·考点知识点整理

news2024/9/20 14:35:14

根据往年考试题,对考点和知识点的一个整理。

校验编码

码距

  一种编码的最小码距,其实就是指这种编码的码距。码距有两种定义:

码距所描述的对象含义
2 2 2 个特定的码其二进制表示中不同位的个数
一种编码这种编码中任意 2 2 2 个合法编码的最小码距

  课本上出现的码及其码距归纳如下。

  • 奇偶校验码的码距是 2 2 2
  • 能纠 1 1 1 位错的海明码的码距始终 3 3 3,不管 n , k , r n,k,r n,k,r 如何变化。首先,海明码的每一个数据位至少位于 2 2 2 个校验组,这就保证了海明码的码距至少 3 3 3;其次, H 3 H_3 H3 一定位于且仅位于 G 1 , G 2 G_1,G_2 G1,G2 校验组, H 3 H_3 H3 的变化引起且只引起 P 1 , P 2 P_1,P_2 P1,P2 的变化,从而构造了一对码距为 3 3 3 的合法编码,保证海明码的码距最多 3 3 3
  • CRC 编码的码距不固定,但是至少是 3 3 3。不同的 ( n , k ) (n,k) (n,k) 和生成多项式对应了不同的码距。比如下面这张表(来源于这篇博客):
总位数 n n n数据位数 k k k生成多项式 G ( x ) G(x) G(x) G ( x ) G(x) G(x) 的二进制表示码距
7 7 7 4 4 4 x 3 + x + 1 x^3+x+1 x3+x+1 1011 1011 1011 3 3 3
7 7 7 4 4 4 x 3 + x 2 + 1 x^3+x^2+1 x3+x2+1 1101 1101 1101 3 3 3
7 7 7 3 3 3 x 4 + x 3 + x 2 + 1 x^4+x^3+x^2+1 x4+x3+x2+1 11101 11101 11101 4 4 4
7 7 7 3 3 3 x 4 + x 2 + x + 1 x^4+x^2+x+1 x4+x2+x+1 10111 10111 10111 4 4 4
15 15 15 11 11 11 x 4 + x + 1 x^4+x+1 x4+x+1 10011 10011 10011 3 3 3
15 15 15 7 7 7 x 8 + x 7 + x 6 + x 4 + 1 x^8+x^7+x^6+x^4+1 x8+x7+x6+x4+1 111010001 111010001 111010001 5 5 5
31 31 31 26 26 26 x 5 + x 2 + 1 x^{5}+x^{2}+1 x5+x2+1 100101 100101 100101 3 3 3
31 31 31 21 21 21 x 10 + x 9 + x 8 + x 6 + x 5 + x 3 + 1 x^{10}+x^{9}+x^{8}+x^{6}+x^{5}+x^{3}+1 x10+x9+x8+x6+x5+x3+1 11101101001 11101101001 11101101001 5 5 5
63 63 63 57 57 57 x 6 + x + 1 x^{6}+x+1 x6+x+1 1000011 1000011 1000011 3 3 3
63 63 63 51 51 51 x 12 + x 10 + x 5 + x 4 + x 2 + 1 x^{12}+x^{10}+x^{5}+x^{4}+x^{2}+1 x12+x10+x5+x4+x2+1 1010000110101 1010000110101 1010000110101 5 5 5

汉字编码实验

  GB2312 码:占 2 2 2 个字节,每个字节的最高位都是 1 1 1(为了与 ASCII 码区分)。
  区号:GB2312 码高字节的低 7 7 7 位。
  位号:GB2312 码低字节的低 7 7 7 位。
  国标码转区位码的流程如下:

海明码流水传输实验

有关海明码的其它实验以及海明码的概念,可以参看这篇博客。这篇博客没有涉及到海明码的流水传输,在这里回顾一下。CRC 编码的流水传输和海明码流水传输在构成上是相似的。

  流水传输的过程如下所示。图中的~使能/Stall 信号通过各级锁存器依次向右传递,获取了使能的锁存器将在下一个时钟上升沿完成锁存。当发生两位错的时候,前三个锁存器的值清零,同时地址回滚(减 3 3 3),显示阶段的锁存器stall接收到的数据 3 3 3 个时钟周期。

  这是电路复位后的状态:

  据此,总结两位错时各阶段的动作得下表:

阶段动作备注
取数阶段地址回滚地址要回滚 3 3 3 个汉字(ROM 回滚 6 6 6 个字节),出错了的数据重新传输。
编码阶段数据清零这个清零其实核心是把数据状态的值置为 0 0 0,其中锁存的数据可以不用管。
传输阶段数据清零和编码阶段清零是一个道理。
显示阶段数据锁存出错的字重传需要 3 3 3 个时钟周期才能到达显示阶段的锁存器,在这段时间内需要维持上一个字的显示。

CRC 编码解码

  课本上介绍了 CRC编码、解码的时序逻辑实现,原始数据 D k ⋯ D 1 D_k\cdots D_1 DkD1 按位串行输入进来,然后经过时序系统的处理,每个时钟周期产出一位余数。但是我们做实验时用组合逻辑实现,根据 16 16 16 位原始数据 D 1 D_1 D1~ D 16 D_{16} D16 直接得到 6 6 6 校验码 R 1 R_1 R1~ R 6 R_6 R6

实验中有两种思路,一种是采用 6 6 6 位的生成多项式,得到 5 5 5 位余数且 R 6 R_6 R6 作为总偶校验位;另一种是采用 7 7 7 位的生成多项式,得到 6 6 6 位的余数,就不设总偶校验位了。我当时没有想到后一种,因为它放了个 P P P 作为总偶校验位,还以为 R 6 R_6 R6 就是 P P P(心虚)。

  头歌上萝卜打表没打全,能用的 6 6 6 位生成多项式只有下面这个:

  上面的表是课本上的。使用这个生成多项式,直接出现了余数相等的盛况:

  那么这个生成多项式显然在这里 ( k = 16 ) (k=16) (k=16) 是不能用的,只有原始数据是 15 15 15 位及以下才能用。其实表格上面的 x 5 + x 3 + 1 ( 0 x 29 ) x^5+x^3+1(0\rm x29) x5+x3+1(0x29) x 5 + x 2 + 1 ( 0 x 25 ) x^5+x^2+1(0\rm x 25) x5+x2+1(0x25) 都可以使用,但是当时做实验的时候没有关注到课本,自己捏了一个 x 5 + x 3 + x 2 + x + 1 ( 0 x 2 f ) x^5+x^3+x^2+x+1(0\rm x2f) x5+x3+x2+x+1(0x2f) 来用。
  上面出现的这三个 ( 0 x 29 , 0 x 25 , 0 x 2 f ) (\rm{0x29,0x25,0x2f}) (0x29,0x25,0x2f) 都是可以纠正一位错的。考题里现在出现了这样一个问题:

在假定没有 3 3 3 位以上错误发生的前提下,你的生成多项式生成的 CRC 编码检错时能否区分 1 1 1 位错和 2 2 2 位错?

  对于我的版本(多项式 6 6 6 位),答案说是不能区分,余数相同。果真余数相同吗?我们利用下面的代码,尝试一下上面三个生成多项式。

#include<iostream> 

int poly,rest[23] = {0x1};
bool bkt[100],bkt2[900],retag; 

inline int bitcount(int num){
	int ret = 0;
	while(num){
		ret++;
		num >>= 1;
	}
	return ret;
}

inline int getRest(int num){return bitcount(num) == bitcount(poly)?(num ^ poly):num;}

int main(){
	int restnum;
	scanf("%x",&poly);
	for(int i = 1;i < 22;i++){
		rest[i] = getRest(rest[i-1] << 1);
		if(rest[i] == 0)
			return printf("一位错:第 %d 位错的余数是 0."),0;
		if(bkt[rest[i]])
			return printf("一位错:余数重复."),0; 
		bkt[rest[i]] = true;
	}
	for(int i = 0;i < 22;i++)	
		for(int j = i + 1;j < 22;j++){
			restnum = getRest(rest[i] ^ rest[j]);
			if(restnum == 0)
				return printf("两位错(%d,%d)的余数是 0.",i,j),0;
			if(bkt[restnum])
				return printf("两位错(%d,%d)与一位错余数(%d)重复.",i,j,restnum),0;
			if(bkt2[restnum])
				retag = true;
			bkt2[restnum] = true;
		}
	printf(retag?"存在两位错余数重复.":"无重复.");
	return 0;
}

  结果是:

in: 0x2f	out: 两位错(0,1)与一位错余数(3)重复.
in: 0x29	out: 两位错(0,1)与一位错余数(3)重复.
in: 0x25	out: 两位错(0,1)与一位错余数(3)重复.

  那么这三个生成多项式,确实二位错和一位错的余数会重复,答案说得对。至于 7 7 7 位生成多项式的情况,一位错和二位错的余数是不是真的不相同,尝试了同学提供的生成多项式 0 x 6 f \rm 0x6f 0x6f

in: 0x6f	out: 存在两位错余数重复.

  可见就这个生成多项式而言,确实是能够区分两位错和一位错的,因此试卷上的答案没有问题。

Cache 与虚拟存储系统

   k − k- k路组相连,指的是每一个 cache 组有 k k k 个 cache 行(或者说 k k k 个数据块)。这里主要说一下 TLB 这个特殊的 cache 是怎么组织的。
  TLB 作为一个 cache,自然也有全相联、直接相联和组相联三种方式。以 k − k- k路组相联为例对比一下 TLB 和内存 cache。

Cache 类型映射方式 t a g \mathit{tag} tag 字段来源 i n d e x \mathit{index} index 字段位数有无块内偏移 ( o f f s e t ) (\mathit{offset}) (offset)字段
TLB标记 t a g \mathit{tag} tag P P N \mathit{PPN} PPN V P N \mathit{VPN} VPN log ⁡ 2 k \log_2k log2k
内存 cache标记 t a g \mathit{tag} tag → 内存数据块内存地址 log ⁡ 2 k \log_2k log2k

  它们最大的区别就是,TLB 中是没有 o f f s e t \mathit{offset} offset 字段的。内存 cache 是通过 t a g \mathit{tag} tag 字段找到对应的数据块,然后根据 o f f s e t \mathit{offset} offset 字段寻找对应的字节(或者字,看计算机按什么编址了);TLB 直接通过 t a g \mathit{tag} tag 字段找到对应的 P P N \mathit{PPN} PPN,不需要 o f f s e t \mathit{offset} offset 字段。这也就意味着 TLB 行的开销比内存 cache 行小很多。

指令系统

  课本是以 MIPS 指令集讲解的这一章,而 MIPS 指令集中,R 型指令的操作码字段 o p \mathit{op} op 一定是为 0 0 0 的,R 型指令中不同功能的指令根据 f u n c t \mathit{funct} funct 字段来区分。

  其中beq属于上面的 I 型指令,立即数字段时跳转的偏移量。这里的偏移量指的是从下一条指令开始,偏移多少条指令,而不是多少字节或者多少字。对于 MIPS32 而言,其指令字长是恒定的 32 32 32 位,即 4 B 4\rm B 4B,那么beq中立即数为 i i i 意味着要偏移 4 i 4i 4i 个字节。

CPU 设计

数据通路时间相关问题

  如下图,总结了就是两个条件,对于时钟周期,要求有 T c l o c k > T c l k _ t o _ Q + T m a x + T s e t u p T_{\mathit{clock}}>T_{\mathit{clk\_to\_Q}}+T_\mathit{max}+T_\mathit{setup} Tclock>Tclk_to_Q+Tmax+Tsetup。对于寄存器的 hold time 也有要求: T h o l d < T c l k _ t o _ Q + T m i n T_\mathit{hold}<T_{\mathit{clk\_to\_Q}}+T_\mathit{min} Thold<Tclk_to_Q+Tmin

状态机

这里说的都是无中断的状态机。

  传统的三级时序和现代时序是不一样的。三级时序中,每个机器周期都包含 4 4 4 个时钟周期,而现代时序的计算、执行分别为 2 , 3 2,3 2,3 个时钟周期。它们的电路也是不一样:

  三级时序中,时序发生器有一个状态机。硬布线控制器作为一个组合逻辑单元,其输出不给到时序发生器,所以应该将它和时序发生器割裂开来。这个时序发生器的状态机如下图左:

  现代时序中,其实也可以弄一个时序发生器,相比于三级时序的时序发生器,少了 2 2 2 个计算周期和 1 1 1 个执行周期。如上图右所示。但是如果要用 FSM 状态机的话,响应的状态转换图如下:

  这个是将 FSM 状态机和状态寄存器看作一个整的时序逻辑电路,构造出来的状态图;不是 FSM 单独的状态图,组合逻辑电路没有所谓状态图。同时注意一下所有状态中访问内存的那些状态,以及给出的READ/WRITE信号。

中断的实现方式

  主要是开中断和关中断实现方式的区别:

中断操作实现方式具体
关中断硬件实现中断响应周期,由硬件完成
开中断软件实现中断返回时,eret指令将 I E \mathit{IE} IE 置为 1 1 1

  具体可以参考下面这两张图。其中中断响应是由硬件完成的操作,中断响应不是中断服务。中断响应周期结束后, P C \mathit{PC} PC 已然是中断服务程序的地址了,中断服务程序通过取指-计算-执行按指令一条条完成。

输入输出系统

  DMA 与程序中断的区别:
1 1 1.中断通过程序传送数据,DMA靠硬件来实现。
2 2 2.中断时机为两指令之间,DMA响应时机为两存储周期之间。
3 3 3.中断不仅具有数据传送能力,还能处理异常事件。DMA只能进行数据传送。
4 4 4.DMA仅挪用了一个存储周期,不改变CPU现场。
5 5 5.DMA请求的优先权比中断请求高。CPU优先响应DMA请求,是为了避免DMA所连接的高速外设丢失数据。
6 6 6.DMA利用了中断技术

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1794171.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

汽车IVI中控开发入门及进阶(二十五):CVBS视频流

前言: AHD和CVBS是两种视频格式,在车载摄像头中,有支持传统CVBS模拟视频的摄像头,也有支持新的高分辨率AHD格式的摄像头。 CVBS视频是经典的模拟视频格式,在视频经常显示在小型监视器上的车辆上仍然最受欢迎。如果想要车辆的最大分辨率,可选择AHD格式,即高分辨率模拟视…

计算机网络错题答案汇总

王道学习 第1章 计算机网络体系结构 1.1 1.2

景区ar互动大屏游戏化体验提升营销力度

从20世纪60年代的初步构想&#xff0c;到如今全球范围内无数企业的竞相投入&#xff0c;AR增强现实技术已成为引领科技潮流的重要力量。而在这一浪潮中&#xff0c;中国的AR公司正以其独特的魅力和创新力&#xff0c;崭露头角。 中国的AR市场正在迎来前所未有的发展机遇。如今&…

C++的类和new和delete和菱形继承机制

文章目录 参考虚函数使用虚函数的class结构相关实现源码IDA反编译子类虚表和父类虚表调用函数菱形继承 参考 https://showlinkroom.me/2017/08/21/C-%E9%80%86%E5%90%91%E5%88%86%E6%9E%90/ https://www.cnblogs.com/bonelee/p/17299985.html https://xz.aliyun.com/t/5242?t…

一文看懂Llama 2:原理、模型与训练

一文看懂Llama 2&#xff1a;原理、模型与训练 Llama 2是一种大规模语言模型&#xff08;LLM&#xff09;&#xff0c;由Meta&#xff08;原Facebook&#xff09;研发&#xff0c;旨在推动自然语言处理&#xff08;NLP&#xff09;领域的发展。本文将详细介绍Llama 2的原理、模…

flutter封装日历选择器(单日选择)

简单封装&#xff1a; 引入库&#xff1a;table_calendar import package:generated/l10n.dart; import package:jade/utils/JadeColors.dart; import package:jade/utils/Utils.dart; import package:util/easy_loading_util.dart; import package:flutter/material.dart; im…

智能小家电品牌如何在美国沃尔玛创新中脱颖而出?

智能小家电品牌想要在美国沃尔玛的创新中脱颖而出&#xff0c;需要采取一系列策略&#xff0c;这些策略不仅涉及产品层面的创新&#xff0c;还包括市场定位、营销策略以及与沃尔玛的合作方式等多个方面。 以下是一些具体的建议&#xff1a; 一、产品创新与技术突破 智能小家电…

UnityXR Interactable Toolkit如何实现Climb爬梯子

前言 在VR中,通常会有一些交互需要我们做爬梯子,爬墙的操作,之前用VRTK3时,里面是还有这个Demo的,最近看XRI,发现也除了一个爬的示例,今天我们就来讲解一下 如何在Unity中使用XR Interaction Toolkit实现爬行(Climb)操作 环境配置 步骤 1:设置XR环境 确保你的Uni…

Memory测试工具-stressapptest详解

✨前言&#xff1a; stressapptest 是一个用于在各种系统组件上施加压力的工具&#xff0c;特别专注于内存和CPU。通过运行各种模式的访问测试&#xff0c;stressapptest 旨在模拟高负载下的系统行为&#xff0c;并帮助发现潜在的错误&#xff0c;比如硬件故障、过热或系统组件…

IGraph使用实例——图属性设置2之GML或GraphML输出

1 概述 1.1GML Graph Modeling Language (GML) 是一种用于描述图形结构的文本格式&#xff0c;它提供了为节点和边分配属性的灵活性。以下是关于GML的详细解释&#xff1a;1&#xff09;定义与用途&#xff1a; GML是一种通用的图形表示语言&#xff0c;常用于表示网络…

个人笔记-python生成gif

使用文件的修改时间戳进行排序 import os import re import imageio# 设置图片所在的文件夹路径 folder_path /home/czy/ACode/AMAW_20240219/9.3.x(Discrete_time_marching&#xff09;/9.3.17.11.1(Disc_concessive_CH_ZJ)/current_figures # 文件夹路径&#xff1b;linux…

Mysql疑难报错排查 - Field ‘XXX‘ doesn‘t have a default value

项目场景&#xff1a; 数据库环境 &#xff1a;mysql8; 工程使用&#xff1a;MyBatisPlus 表情况&#xff1a; 问题描述 某一个插入语句使用了 MyBatisPlus 的 save 方法&#xff0c;因为end_time1 end_time2都并没有值&#xff0c;所以在MyBatisPlus默认情况下&#xff0c;…

kafka-消费者-指定offset消费(SpringBoot整合Kafka)

文章目录 1、指定offset消费1.1、创建消费者监听器‘1.2、application.yml配置1.3、使用 Java代码 创建 主题 my_topic1 并建立3个分区并给每个分区建立3个副本1.4、创建生产者发送消息1.4.1、分区0中的数据 1.5、创建SpringBoot启动类1.6、屏蔽 kafka debug 日志 logback.xml1…

视频汇聚平台EasyCVR对接GA/T 1400视图库:结构化数据(人员/人脸、车辆、物品)对象XMLSchema描述

在信息化浪潮席卷全球的背景下&#xff0c;公安信息化建设日益成为提升社会治理能力和维护社会稳定的关键手段。其中&#xff0c;GA/T 1400标准作为公安视频图像信息应用系统的核心规范&#xff0c;以其结构化数据处理与应用能力&#xff0c;为公安信息化建设注入了强大的动力。…

精妙无比的App UI 风格

精妙无比的App UI 风格

BERT+PET方式模型训练

基于BERTPET方式文本分类模型搭建 模型搭建 本项目中完成BERTPET模型搭建、训练及应用的步骤如下&#xff08;注意&#xff1a;因为本项目中使用的是BERT预训练模型&#xff0c;所以直接加载即可&#xff0c;无需重复搭建模型架构&#xff09;: 一、实现模型工具类函数二、实现…

RAG检索增强生成(1)-大语言模型的外挂数据库

Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks Lewis P, Perez E, Piktus A, et al. Retrieval-augmented generation for knowledge-intensive nlp tasks[J]. Advances in Neural Information Processing Systems, 2020, 33: 9459-9474. RAG结合了信息检…

AI绘画揽活新中式室内设计,能不能让你一见“粽”情?

端午节即将来临&#xff0c;计划节前完成的图赶出来了吗?别着急&#xff0c;可以找个AI绘画工具做帮手&#xff0c;让你在短时间内完成高质量的设计。 恰逢端午佳节&#xff0c;相比其他装修风格&#xff0c;新中式显然与端午节更般配&#xff0c;那么我们就用AI绘画的新中式风…

趣测小程序开发搭建,趣测趣玩小程序是何物?

一、趣测小程序简介 趣测趣玩小程序是一款提供趣味测试和玩乐功能的应用程序。用户可以通过该小程序参与各种有趣的测试&#xff0c;这些测试可能涵盖性格、情感、智力等多个方面&#xff0c;旨在为用户提供轻松愉快的体验。同时&#xff0c;该小程序还可能包含一些游戏元素&a…

实战项目《负载均衡在线OJ系统》

一、项目灵感来源 在日常做题的过程中&#xff0c;我们总会去力扣和牛客网上去做题&#xff0c;但是从来没有想过网站是如何加载给用户的&#xff0c;以及在提交代码时&#xff0c;是如何得知我们的代码是否正确。基于这样的原因&#xff0c;也是学习到一定程度的知识后&#x…