计算机学科专业基础综合(计算机组成原理----温习概述)

以下的内容是我从头开始看的时候,看到哪儿就想到书上的知识点进行整理的,所以前后有关联,整理时也是想到哪儿就写到哪儿,还有模棱两可,不会的就去看书,或者百度,感觉这种方法还不错吧。。。。也是刚开始写博客。。。。边回忆边记录。。。。。。。

1.冯诺依曼体系结构是采用“存储程序”的思想,是将指令与数据一起放入存储器中,按照地址来访问(这里有牵涉到一个问题,指令和数据都是二进制代码表示的,那么如何区分取出来的是指令还是数据呢,很有意思,可以从时间和空间上来解释,时间上:在指令的取指周期,取出的是指令,在指令的执行周期,取得是数据;在空间上:取出的指令是流向指令寄存器的,取出的数据是流向运算器(通用寄存器)),这里还要扩展一下指令的几个周期:取指周期是用来取指令,间址周期是用通过指令的地址码部分,取出有效地址,通过有效地址再去取操作数,执行周期是通过指令的操作码字段,执行相应的操作,中断周期是当CPU与IO之间采用中断方式进行信息交换时,CPU在执行完指令之前会像IO发出中断查询请求,如果发现有中断请求,那么就会进入中断响应阶段,这个阶段就是中断周期(保存程序断点)

冯诺依曼是以运算器为中心,现代计算机是以存储器为中心

2.两种寄存器(现代计算机中,这俩寄存器存在于CPU中,但是却不在运算器和控制器中)

MAR(地址寄存器):用来存储即将访问的存储单元的地址的

MDR(数据寄存器):用来暂存从存储器中读或者写的信息(这个信息可以是指令,可以是数据)

 3.翻译程序(把高级语言源程序翻译成机器语言程序(目标代码))

  • 编译程序:编译器把高级语言程序一次全部翻译为目标程序(目标程序仍然不是机器能够直接执行的代码),以后需要执行程序时,只需要执行目标程序,只要程序不变动,就无须重新翻译
  • 解释程序:解释器将源程序中的一条语句翻译成对应的目标机器代码,并立即执行,注意这里没有目标程序,是边翻译边执行

小结:C语言中是编译程序,python是解释程序,所以这两个语言可想而知,为啥python那么慢,C语言执行那么快了

4.各种字长

  • 机器字长:计算机一次能够直接处理的二进制数据的位数
  • 指令字长:一个指令字的包含的二进制的位数
  • 存储字长:一个存储单元包含的二进制的位数

 小结:计算机中有的指令的的长度不一,但都是存储字长的整数倍,所以,当是存储字长的两倍时,需要访存两次才能取出这条指令

5.计算机中的不同进制的转换

2->8:取二进制的3位

2->16:取二进制的4位

8->16:先转换为2进制,再取二进制的4位

6.几种编码

  • ASCII编码:是7位二进制的编码,所以可以表示2的7次方(也就是128)个字符,(0~9的ASCII编码是48~57)
  • 奇偶校验码:能发现奇数位的出错情况,但是不能纠错
  • 海明码:能够发现错误还能纠错
  • CRC(循环冗余校验码):在计算机网络中使用,在报文中,用于检验数据是否出现差错

7.关于大端模式和小端模式(这个一开始学习的时候一头雾水)

首先了解一个概念:在计算机中,地址从左往右低地址到高地址,但是字节并不是,从左往右是高字节到低字节

  • 大端模式:低地址是高位字节,高地址是低位字节
  • 小端模式:低地址是低位字节,高地址是高位字节 

 所以,这就能理解为啥说大端模式是自然的思维方式了吧,就是因为地址的排列顺序和字节的排列顺序是一样的,都是从左往右依次装入,我一开始就很纳闷,什么事自然的方式。。。。主要是一开始不知道字节是从高到低的。。。。

8.计算机中的三大存储器(构成三级存储结构)

  • 主存(内存):DRAM
  • 辅存(外存)
  • 高速缓存(Cache):SRAM
  • RAM:随机存储器(随机存取)      易失性存储器(这点很好记忆,下面的DRAM和SRAM都需要特定的方式来寄存信息,肯定是信息容易丢失呀,所以理解一下就比较好记)
  1. DRAM通过触发器寄存信息
  2. SRAM通过栅极电容寄存信息
  • ROM:只读存储器(随机存取)     非易失性存储器(可以用于存放固定不变的程序,同时也能作为主存的一部分)
  • 串行访问存储器:磁带(顺序存取),磁带(直接存取)

9.关于计算机的三级存储结构

从高到低是:Cache-主存;主存-辅存     (cache-主存是主存-辅存的副本

  • Cache-主存之间的故事:因为随着计算机的发展,现在的CPU速度越来越快了,主存的存取速度根本赶不上,所以,CPU从主存取数据进行运算的时候,就很烦,我这边的话一会就完事,你那边要老半天才能把数据拿给我,我总不能一直干等着吧,这样多浪费大家时间,我CPU还有很多事要做呢,所以,就在CPU与主存中间加上了这么一层Cache来缓解CPU与主存之间速度不匹配的问题,由于Cache速度比较快,所以能够胜任与CPU之间的协调工作,但是造价昂贵,一台机子就那么贵,总不能搞特别大的Cache吧,所以,Cache只能装入部分内存中的数据(这就涉及到主存与Cache的映射问题,CPU要去取数据时,这部分数据是否在Cache中命中,以及未命中时需要的一些主存块的替换算法)
  • 主存与辅存的故事:同样的,主存虽然没有Cache快,但是也很快了,咱们平时买的一些那些内存条,也挺贵的,不可能整个机子都用内存条,搞个几百个G的内存吧,所以,需要更大的外存来扩展整个计算机的存储容量,这里涉及到操作系统中虚拟内存,真正计算机在执行一个应用程序时,并不会将整个应用进程都装入内存,这样哪吃得消,像平时那些吃鸡游戏,那么大,是吧,所以,就用虚拟内存技术,把需要用的部分调入内存执行,当需要再用到更多的程序段数据时,再将他们调用,并将一部分不用的调出内存,所以主存与辅存之间主要是解决一个存储容量的问题

小结:就这样,计算机的速度与存储容量的问题就得到解决了

10.Cache与主存的映射方式

  • 直接映射
  • 全相联映射
  • 组相联映射

11.Cache的替换算法

  • 随机算法
  • 先进先出算法
  • 最近最少使用算法:长时间未被访问
  • 最不经常使用算法:被访问的次数最少

12.Cache的写策略(主要是针对写操作时,Cache与主存内容不一致的问题)

因为Cache中只是主存当中的部分活跃的数据,所以,当CPU要访问的地址命中Cache时,此时直接对Cache中的地址进行写操作,牵涉不到主存,但是这就存在一个问题,主存中的数据与Cache不一致(Cache只是他们中数据传输的一个跳板),所以,也就产生了写策略(写命中的策略与写不命中的策略)

   1.写Cache命中的策略

  • 全写法:CPU在写命中Cache时,会把数据同时写入主存和Cache,来保证两个存储器数据的一致性,但是这样每次写都要写进主存,也就增加了访存次数(注意一下,由于是同时写入主存和Cache,主存的写入速度还是很慢的,为了解决CPU在写主存时这种速度的不匹配,所以在CPU与主存之间加入一个Buffer缓冲队列)
  • 写回法:CPU在写命中Cache时,只写入Cache,此时不写入主存,当下次Cache中的这个块被换出时(需要设置一个脏位,有的教材叫浊状态,来表示该Cache是否被CPU写过,表示自己不干净了哈哈哈哈哈),才写入主存,所以,可能这个块被多次写,但是当被替换时,只需要写一次主存即可,所以减少了访存次数

  2.写未命中的策略

  • 写分配法:当写Cache没有命中时,只能加载主存的块到Cache中
  • 非写分配法:当写Cache没有命中时,只写入主存不进行调块

通常:非写分配法与全写法合用,写分配法与写回法合用

13.寻址方式(寻找指令的地址和寻找操作数的地址)

1.指令寻址:(其实本质也是修改PC,因为PC是用来表示下一条欲执行的指令的地址的,顺序和跳跃寻址的区别就是PC的步长不同)

  • 顺序寻址:PC自动加1
  • 跳跃寻址:转移指令(根据本条指令给出下一个指令的地址的计算方式)

2.数据寻址:(如何得到操作数)

  • 隐含寻址:隐含操作数的地址
  • 立即寻址:地址字段就是操作数本身
  • 直接寻址:地址字段是操作数的真实地址
  • 间接寻址:地址字段是操作数地址的地址
  • 寄存器寻址:地址字段是寄存器的编号,该编号的寄存器中存放操作数
  • 寄存器间接寻址:地址字段是寄存器编号,该编号的寄存器中存放的是操作数的地址
  • 相对寻址:PC+形式地址,得到操作数的地址,然后根据这个地址去取操作数
  • 基址寻址:基址寄存器的内容+形式地址,得到操作数的地址,然后根据这个地址去取操作数
  • 变址寻址:变址寄存器的内容+形式地址,得到操作数的地址,然后根据这个地址去取操作数
  • 堆栈寻址

14.关于CISC与RISC的区别(理解记忆,如果涉及到组原,这应该是一个高频考点)

  • CISC(complex instruction setting computer)复杂指令系统计算机:所谓复杂,其实是指令的种类繁多(指令长度不固定,所以指令执行的时间差很大),指令系统复杂,对于访存并没有什么太多的限制,是采用的微程序控制方式,难以用优化编译生成高效的目标代码
  • RISC(reduced instruction setting computer)精简指令系统计算机:所谓精简,其实就是指令的种少(复杂的功能是由简单的指令进行组合来实现的),指令长度固定,只有load/store(取数/存数)指令才能访存(其他的指令都在寄存器当中执行,速度相当快),采用硬布线方式,采用流水技术

小结:对于RISC的流水技术,有几个点:指令流水需要指令长度一致(如果指令长度不一,会影响流水的性能),而且支持边界对齐,一次访存取出一条指令(如果不按边界对齐,那么可能需要几次访存才能取出一条指令),这样的话,取指的时间都相同,有利于指令流水,所以综合上面的看,除了访存指令,其他的指令都在寄存器中执行,再加上指令流水技术,所以RISC的执行速度是相当快的,像现在的ARM,MIPS架构的计算机都是采用这种,而X86架构的是采用的CISC

15.中央处理器

CPU的主要功能概括起来就是:(控制器)控制程序指令的执行顺序,(运算器)对数据进行运算加工

  • 控制器:主要是控制指令的执行(取指,分析指令,执行指令),每条指令的执行都是由控制器发现的一组微操作实现的

      控制器分类:硬布线控制器和微程序控制器

  • 运算器:接受从控制器送来的命令,并执行相应的动作,对数据进行加工处理

16.接口与端口的区别

  • 端口:实质上就是寄存器
  • 接口:若干个端口加上控制逻辑实现的   (IO接口也称为IO控制器)

17.CPU与外设之间的信息传递

CPU与IO设备之间的信息传递,必须经过IO接口中的某些寄存器(IO端口),所以,CPU要想进行信息传递,就必须要知道IO端口的地址,才能找到,并通信呀,所以就有了IO端口的编址方式

  • 统一编制(存储器映射方式):把IO端口的地址当做存储器的单元地址进行分配,这样的话就不需要专门的IO指令了,只需要统一的访存指令即可,但是,访存指令!!!(CPU进行访存是很慢的,还记得之前讨论的速度不匹配么)
  • 独立编制(IO映射方式):IO端口地址与存储器的地址无关,设置专门的IO指令来访问端口,但是的话就增加了控制的复杂性

18.IO方式(主机与外设的传递数据的方式)

  • 程序查询方式:CPU一旦进行IO,就必须停止现行的程序,进行等待(一段时间内只能与一台外设进行交换信息)
  • 程序中断方式:CPU与IO设备可以同时进行,IO先准备数据,CPU执行现行程序,当IO设备准备好数据之后,通知CPU,我准备好了,然后CPU进行中断响应,执行中断处理程序,执行结束后,返回刚刚的程序继续执行(这种方式时,指令周期中是会有中断周期的)
  • DMA方式:主存与外设之间有专门的数据通路,他们之间的数据传送无需经过CPU,但是如果IO设备与CPU同时访存,此时就涉及到主存的竞争访问问题,就有了DMA传送数据的三种方式
  1. 停止CPU访问
  2. DMA与CPU交替实现
  3. 周期挪用(也有三种情况,只有在竞争使用时才挪用一个或者多个存取周期)
  • 通道方式

19.DMA与程序中断方式的区别

  •  中断方式是程序的切换,需要CPU进行保护现场;DMA方式除了预处理(CPU做一些准备工作)和后处理(CPU对传入主存的数据进行校验,测试)阶段,其他时间不占用CPU的任何资源
  • 中断方式只能发生在指令的执行结束(中断周期);DMA方式可以发生在指令执行的任何阶段
  • 中断方式靠程序;DMA方式靠硬件
  • 中断方式可以对异常事件进行处理;DMA方式是仅仅局限于数据块进行IO的传输,当所有的数据传输结束之后,再像CPU发出中断请求

20.程序查询与程序中断的区别

  • 程序查询:CPU与IO串行处理数据,CPU定时的向IO设备发出中断查询,如果IO设备还在准备数据,那么CPU就必须进行等待,是一种主动的过程,比较慢
  • 程序中断:CPU与IO并行传输数据,CPU执行现行程序,IO设备准备数据,IO数据准备结束之后,向CPU发出中断处理请求,CPU在指令的执行周期之后,查询是否有中断请求,此时有请求,则进行中断响应,中断现行的程序,然后执行中断处理程序,执行结束之后,CPU返回断点继续执行之前被中断的程序,是被动的,是事件触发的,比较实时

21. DMA与通道方式(有程序参与,不是纯硬件)的区别

 I/O 通道是指专门负责输入/输出的处理机,每个通道都挂接外设,主机在执行 I/O命令时,只需要启动通道,然后通道会执行通道程序。

通道方式是对DMA方式的发展,由一个数据块的读写发展成为对一组数据块的处理。

  通道的工作过程:CPU只要向 I/O通道发送一条 I/O指令,哪怕是一组相关的读写操作,通道会执行通道程序,完成一组数据的传送。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 计算机组成原理是指计算机硬件系统的设计、构造、功能、工作原理和性能等方面的理论与方法。其中,计算机组成原理的核心是计算机的基本组成部分以及这些部分之间的工作原理。 计算机由五大基本部分组成:运算器、控制器、存储器、输入设备和输出设备。运算器是计算机的核心部件,主要用于执行各种运算。控制器用于控制计算机的各个部件,使其按照程序的要求工作。存储器用于存储程序和数据,是计算机的重要组成部分。输入设备用于向计算机输入数据和程序,输出设备用于将计算机处理后的结果输出给用户。 计算机组成原理的核心是将这些基本部件组合在一起,形成计算机的完整功能。其中,控制器和运算器的工作原理是计算机组成原理的重点之一。控制器主要负责解释和执行程序,将程序中的指令翻译成计算机可以理解的语言,并控制各个部件按照程序的要求工作。运算器则负责执行各种算术和逻辑运算。 除了基本组成部分之外,计算机组成原理还包括数据通路和控制信号等方面的内容。数据通路是计算机各个部件之间传递数据的通道,控制信号则是控制器向各个部件发送的控制信息。 总之,计算机组成原理计算机科学中的基础课程之一,了解计算机组成原理可以帮助我们更好地理解计算机的工作原理,从而更好地设计和应用计算机。 ### 回答2: 复习计算机组成原理可以采取以下几个步骤: 1. 温习基础概念:计算机组成原理计算机科学的基础课程,需要掌握一些基本概念,例如:计算机的运行原理、计算机的组成部分等。可以通过阅读教材或相关资料,并结合课堂笔记进行温习。 2. 着重理解关键知识点:计算机组成原理中有一些重要的知识点,如处理器的结构、存储器的层次结构、指令的编码和执行等。重点理解这些知识点的原理和运行机制,可以通过查阅各种教材、视频或参考书等多种资源进行学习。 3. 运用实践:理论与实践相结合是学习计算机组成原理的关键。通过实际操作,例如使用计算机模拟器或编写程序来实现一些基本的计算机组成原理的功能,能够帮助加深对知识的理解和记忆。 4. 解答习题和做练习:通过解答习题和做相关的练习,可以加深对知识的理解和掌握程度。可以找一些经典的习题和案例进行解答,也可以寻找一些练习题来检验自己的掌握情况。 5. 互助学习:与同学或其他学习者一起学习,互相交流和讨论,可以加深对知识的理解和记忆。可以分组或组建学习小组,共同讨论难点和问题,并相互帮助解决。 总的来说,复习计算机组成原理需要系统地温习基础知识、理解关键知识点、运用实践、解答习题和做练习,并与他人进行互助学习。通过这些方法的综合应用,可以更好地掌握计算机组成原理这门课程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值