计算机组成原理cpu教案,计算机组成原理-CPU组成

2023-11-22 15:50

本文主要是介绍计算机组成原理cpu教案,计算机组成原理-CPU组成,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

587b521f5224e710a9eb3405685dadba.png

1、指令周期

计算机每执行一条指令的过程,可以分解成这样几个步骤。

(1).Fetch(取得指令),也就是从 PC 寄存器里找到对应的指令地址,根据指令地址从内存里把具体的指令,加载到指令寄存器中,然后把 PC 寄存器自增,好在未来执行下一条指令。

(2).Decode(指令译码),也就是根据指令寄存器里面的指令,解析成要进行什么样的操作,是 R、I、J 中的哪一种指令,具体要操作哪些寄存器、数据或者内存地址。

(3).Execute(执行指令),也就是实际运行对应的 R、I、J 这些特定的指令,进行算术逻辑操作、数据传输或者直接的地址跳转。

(4). 重复进行 1~3 的步骤。

这样的步骤,其实就是一个永不停歇的“Fetch - Decode - Execute”的循环,这个循环称之为指令周期(Instruction Cycle)。

930fb6995c2f2f6269ef617ae86dd471.png

在取指令的阶段,指令是放在存储器里的,通过 PC 寄存器和指令寄存器取出指令的过程,是由控制器操作的。指令的解码过程,也是由控制器进行的。一旦到了执行指令阶段,无论是进行算术操作、逻辑操作的 R 型指令,还是进行数据传输、条件分支的 I 型指令,都是由算术逻辑单元(ALU)操作的,也就是由运算器处理的。一个简单的无条件地址跳转,可以直接在控制器里面完成,不需要用到运算器。

5940161f6ffd895638f5c49139426786.png

2、数据通路

数据通路就是处理器单元。它通常由两类原件组成。

第一类叫操作元件,也叫组合逻辑元件(Combinational Element),就是 ALU。功能是在特定的输入下,根据下面的组合电路的逻辑,生成特定的输出。

第二类叫存储元件,也有叫状态元件(State Element)的。比如计算过程中需要用到的寄存器,无论是通用寄存器还是状态寄存器,其实都是存储元件。

通过数据总线的方式,把它们连接起来,就可以完成数据的存储、处理和传输了,这就是所谓的建立数据通路。

3、控制器

可以看成只是机械地重复“Fetch - Decode - Execute“循环中的前两个步骤,然后把最后一个步骤,通过控制器产生的控制信号,交给 ALU 去处理。

abba85a35c83378cfd31c9763a0fe6aa.png

4、CPU需要的硬件电路

1)ALU 这样的组合逻辑电路,实际就是一个没有状态的,根据输入计算输出结果的第一个电路。

2) 用来存储数据的锁存器和 D 触发器电路,能够进行状态读写的电路元件,也就是寄存器。这个电路能够存储到上一次的计算结果。这个计算结果并不一定要立刻拿到电路的下游去使用,但是可以在需要的时候拿出来用。常见的能够进行状态读写的电路,就有锁存器、D 触发器电路。

3)用来实现 PC 寄存器的计数器电路,需要有一个“自动”的电路,按照固定的周期,不停地实现 PC 寄存器自增,自动地去执行“Fetch - Decode - Execute“的步骤。

4)用来解码和寻址的译码器电路,无论是对于指令进行 decode,还是对于拿到的内存地址去获取对应的数据或者指令,都需要通过一个电路找到对应的数据。

这四类电路,通过各种方式组合在一起,就能最终组成功能强大的 CPU 了。

5、时序逻辑电路

1)实现自动运行。时序电路接通之后可以不停地开启和关闭开关,进入一个自动运行的状态。

2)通过时序电路实现的触发器,能把计算结果存储在特定的电路里面,而不是像组合逻辑电路那样,一旦输入有任何改变,对应的输出也会改变。

3)解决了各个功能按照时序协调的问题。无论是程序实现的软件指令,还是到硬件层面,各种指令的操作都有先后的顺序要求。时序电路使得不同的事件按照时间顺序发生。

6、反馈电路

5f11f49730c02307843048f803ea8f4c.png

看图,合上开关 A,磁性线圈就会通电,产生磁性,开关 B 就会从合上变成断开。一旦这个开关断开了,电路就中断了,磁性线圈就失去了磁性。于是,开关 B 又会弹回到合上的状态。这样一来,电路接通,线圈又有了磁性。电路就会来回不断地在开启、关闭这两个状态中切换。这个不断切换的过程,对于下游电路来说,就是不断地产生新的 0 和 1 这样的信号。如果在下游的电路上接上一个灯泡,就会发现这个灯泡在亮和暗之间不停切换。这个按照固定的周期不断在 0 和 1 之间切换的信号,就是时钟信号(Clock Signal)。这种电路,其实就相当于把电路的输出信号作为输入信号,再回到当前电路。这样的电路构造方式,叫作反馈电路(Feedback Circuit)。

7、程序计数器

时钟信号提供定时的输入; D 型触发器可以在时钟信号控制的时间点写入数据。把这两个功能组合起来,就可以实现一个自动的计数器了。加法器的两个输入,一个始终设置成 1,另外一个来自于一个 D 型触发器 A。加法器的输出结果,写到这个 D 型触发器 A 里面。于是,D 型触发器里面的数据就会在固定的时钟信号为 1 的时候更新一次。这样就有了每过一个时钟周期,就能固定自增 1 的自动计数器了。这个自动计数器,可以拿来当PC 寄存器。也就是程序计数器(Program Counter)。

每次自增之后,可以去对应的 D 型触发器里面取值,这也是下一条需要运行指令的地址。加法计数、内存取值,乃至后面的命令执行,最终其实都是由时钟信号,来控制执行时间点和先后顺序的,这也是需要时序电路最核心的原因。

992af512871545c4039e38999044ead5.png

8、译码器

来完成“寻址”的电路,就是译码器。在现在实际使用的计算机里面,内存所使用的 DRAM,并不是通过上面的 D 型触发器来实现的,而是使用了一种 CMOS 芯片来实现的。还是可以把内存芯片,当成是很多个连在一起的 D 型触发器来实现的。

6c0319017f75150cee1468b3d4c76873.png

通过一个反相器、两个与门和一个或门,就可以实现一个 2-1 选择器。通过控制反相器的输入是 0 还是 1,能够决定对应的输出信号,是和地址 A,还是地址 B 的输入信号一致。译码器的本质,就是从输入的多个位的信号中,根据一定的开关和电路组合,选择出自己想要的信号。

9、构造CPU过程

D 触发器、自动计数以及译码器、 ALU,凑齐了一个拼装一个 CPU 必须要的零件了。

b07051abde9c5677c6d9c3125a6582cd.png

1)自动计数器,这个自动计数器会随着时钟主频不断地自增,来作为 PC 寄存器。

2)译码器,连在计数器后面。译码器还要同时连着内存(通过大量的 D 触发器组成的)。

3)自动计数器会随着时钟主频不断自增,从译码器当中,找到对应的计数器所表示的内存地址,然后读取出里面的 CPU 指令。

4)读取出来的 CPU 指令会通过CPU 时钟控制,写入到一个由 D 触发器组成的寄存器,也就是指令寄存器当中。

5)在指令寄存器后面,再跟一个译码器。这个译码器是把拿到的指令,解析成 opcode 和对应的操作数。

6)opcode 和操作数,对应的输出线路就要连接 ALU,开始进行各种算术和逻辑运算。对应的计算结果,则会再写回到 D 触发器组成的寄存器或者内存当中。

a56b8067cbcecf7c66f993ebb2d1de9b.png

这篇关于计算机组成原理cpu教案,计算机组成原理-CPU组成的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/411247

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三

Redis中Set结构使用过程与原理说明

《Redis中Set结构使用过程与原理说明》本文解析了RedisSet数据结构,涵盖其基本操作(如添加、查找)、集合运算(交并差)、底层实现(intset与hashtable自动切换机制)、典型应用场... 目录开篇:从购物车到Redis Set一、Redis Set的基本操作1.1 编程常用命令1.2 集

Redis中的有序集合zset从使用到原理分析

《Redis中的有序集合zset从使用到原理分析》Redis有序集合(zset)是字符串与分值的有序映射,通过跳跃表和哈希表结合实现高效有序性管理,适用于排行榜、延迟队列等场景,其时间复杂度低,内存占... 目录开篇:排行榜背后的秘密一、zset的基本使用1.1 常用命令1.2 Java客户端示例二、zse

Redis中的AOF原理及分析

《Redis中的AOF原理及分析》Redis的AOF通过记录所有写操作命令实现持久化,支持always/everysec/no三种同步策略,重写机制优化文件体积,与RDB结合可平衡数据安全与恢复效率... 目录开篇:从日记本到AOF一、AOF的基本执行流程1. 命令执行与记录2. AOF重写机制二、AOF的

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

Python中isinstance()函数原理解释及详细用法示例

《Python中isinstance()函数原理解释及详细用法示例》isinstance()是Python内置的一个非常有用的函数,用于检查一个对象是否属于指定的类型或类型元组中的某一个类型,它是Py... 目录python中isinstance()函数原理解释及详细用法指南一、isinstance()函数

java 恺撒加密/解密实现原理(附带源码)

《java恺撒加密/解密实现原理(附带源码)》本文介绍Java实现恺撒加密与解密,通过固定位移量对字母进行循环替换,保留大小写及非字母字符,由于其实现简单、易于理解,恺撒加密常被用作学习加密算法的入... 目录Java 恺撒加密/解密实现1. 项目背景与介绍2. 相关知识2.1 恺撒加密算法原理2.2 Ja