本次笔记内容:
P9 计算机组成原理(09)
P10 计算机组成原理(10)

本节课对应幻灯片:组成原理15 AM2901,第1页起。

文章目录

  • P4 CPU示例
  • P5 运算器的基本功能
  • 执行一次运算的时序关系
  • P13 两种运算器
  • P17 定点运算器功能与组成
  • ALU的线路实现方案
  • P6-10 具体如何设计1位ALU电路
  • P11 设计实现16位ALU
  • Am2901
    • Am2901 的内部组成
    • 哪8种运算功能?算逻运算部件ALU
    • 寄存器组
    • Q寄存器
    • 总线把上述三个核心部分连接
    • 运算器组成部分顺口溜
    • 运算器的时钟信号CP
    • Am2901的控制信号汇总表
    • Am2901的操作使用
  • VHDL 硬件描述语言
  • 小结

前面把运算器的功能讲过了,接下来讲如何应用这些功能?

我们讲以一个具体的运算器芯片为例 AM2901

首先是复习前面讲过的内容,并且介绍一点概述知识,包括:

  • 硬件系统的功能部件(五大部件)
  • CPU示例

P4 CPU示例

上述一个CPU中:

  • CPU由运算器(核心是寄存器和ALU)和控制器组成;
  • 运算器的数据通路包括图中下部;
  • 上面的一部分,从PC开始,属于控制器。
  • 数据通路包括:指令从哪来(有可能来自于存储器,存放在内存当中);指令存储器要有一个寄存器(这个指令在哪);PC就是存储指令的地址的东西;
  • 控制器得到指令,根据操作码,得出“完成什么指令”,然后控制数据通路中剩下的部分完成工作;
  • 所以最重要的是操作码源操作数。把这些东西给操作部件,结果有可能送回寄存器组,也可能送到数据通路中。

P5 运算器的基本功能

运算器是计算机系统中执行数据运算、处理的功能部件,类似于一个工厂中的生产加工车间, 由ALU和寄存器组等组成。

类似工厂流水线,寄存器相当于小仓库、小车间。

  • 完成算术、逻辑运算,产生运算结果:ALU执行+、—、× 、÷、∧、∨、¬
  • 并给出运算结果的状态信息:C,Z,V,S
  • 暂存运算所用操作数:寄存器组、立即数、数据总线
  • 暂存运算的中间结果:寄存器组、Q寄存器、移位线路
  • 输出运算结果:寄存器组、数据总线
  1. 运算器的首要功能是完成对数据的算术和逻辑运算,由其内部的一个被称之为算术与逻辑运算部件(英文缩写为ALU)承担,它在给出运算结果的同时, 还给出结果的某些特征,如溢出否,有无进位,结果是否为零、为负等,这些结果特征信息通常被保存在几个特定的触发器中。要保证 ALU 正常运行,必须向它指明应该执行的某种运算功能。
  2. 运算器的第二项功能,是暂存将参加运算的数据和中间结果,由其内部的一组寄存器承担。因为这些寄存器可以被汇编程序员直接访问与使用, 故通称通用寄存器,以区别于那些计算机内部设置的、不能为汇编程序员访问的专用寄存器。为了向 ALU提供正确的数据来源,必须指明使用通用寄存器组中的哪1个或2个寄存器。
  3. 为了用硬件线路完成乘除指令运算, 运算器内一般还有一个能自行左右移位的专用寄存器,通称乘商寄存器。由于该寄存器属于内部专用,汇编程序员不能访问,许多计算机组成原理教材和技术资料中不大提及此线路。

执行一次运算的时序关系

组合逻辑和时序逻辑区别:

  • 输出是否与当前输入关联(时序逻辑有时钟)。

    要考虑时间:
  • 控制器的延迟要考虑;
  • 控制信号会送给寄存器组,寄存器内容送出时间(延迟)需要考虑;
  • ALU运算时间;
  • 运算结果送出需要时间。

因此,如何设定一个周期?如何设置主频?是值得我们思考的地方。

P13 两种运算器

运算器通常包括定点运算器和浮点运算器两种类型:

  • 定点运算器:完成对整数类型数据的算术运算、逻辑类型数据的逻辑运算
  • 浮点运算器:完成对浮点类型数据的算术运算

P17 定点运算器功能与组成

今天主要介绍定点运算器。

通过几组多路选择器电路实现相互连接,以便数据传送:

  • 完成算术与逻辑运算功能:算术逻辑单元(ALU)
  • 暂存参加运算的数据和中间结果:通用寄存器组
  • 乘除法运算的硬件线路支持 乘商寄存器(Q寄存器)

作为处理机内部数据通路(Data Path)的一部分。

ALU的线路实现方案

由上节课内容为基础,可设计出上述 ALU 的线路。

P6-10 具体如何设计1位ALU电路

是对上节课的一个复习,具体见 P6-11。

P11 设计实现16位ALU

单纯的连接可能会造成性能的损失(上节课所说),可以使用上节课所说的“超前进位”来提升。

Am2901

尽管现在已经比较少见,但是AM2901是一个很成功、很广泛的商用计算器。

这节课介绍一下这款经典的芯片。

Am2901 的内部组成

哪8种运算功能?算逻运算部件ALU

一种加法,两种减法,五种逻辑运算。

实现的功能很少,剩下的运算组合都交给软件了。

“该芯片的第一个组成成分是一个4位的算逻运算部件ALU,它的输出为F,两路输入分别用R和S标记,还有送入ALU最低位的进位信号Cn。它能实现R+S、S-R、R-S三种算术运算功能,和R∨S、R∧S、R∧S、R ∨S、R ∨S五种逻辑运算功能。在给出运算结果的同时,还送出向高位的进位输出信号Cn+4,溢出标志信号OVR,最高位的状态信号F3(可能用作符号位),以及运算结果为零的标志信号F=0000。”

寄存器组

“该芯片的第二个组成成分是由16个4位的通用寄存器组成的寄存器组。它是一个用双端口(A口和B口)控制读出,单端口(B口)控制写入的部件。为了对其进行读写,需通过A地址(寄存器编号)、B地址(寄存器编号)指定被读写的寄存器。两路读出数据分辨用A口、B口标记,经锁存器线路可以送到ALU的R、S输入端的多路选择器,A口读出数据还可以用作该芯片的可选输出数据之一。寄存器组的写入数据由一组多路选择器给出,并由B地址选择写入的寄存器。 ”

为什么没有控制信号控制何时读写?

  • 因为在一个周期里面,何时读,何时写都是固定的。

Q寄存器

“该芯片的第三个组成成分是一个4位的Q寄存器,主要用于实现硬件的乘法、除法指令,能对本身的内容完成左、右移位功能,能接收ALU的输出,输出送到ALU的S输入端。 ”

总线把上述三个核心部分连接

如上,有3位数据控制码。

其总的结构如下。两个三选一完成两个寄存器的控制。

如下,一个二选一完成输出输出数据的控制。

运算器组成部分顺口溜

可以看出,三种功能都是通过三位控制码完成的,共9位控制码。

运算器的时钟信号CP

其始终与周期设计如上。各个固定任务始终遵循固定的周期与顺序。

Am2901的控制信号汇总表

对于设计人员,这个表会在实践中烂熟于心。

Am2901的操作使用

比如第一行:

  • 可能对应汇编语言 ADD R0 R1
  • 其完成加法功能,根据控制信号汇总表I5 I4 I3应该选择000
  • 数据来源于 A 和 B,根据控制信号汇总表I2 I1 I0应该选择001
  • 如何知道 R1 和 R0 是 A 和 B 的?因为计算结果要写回到 R0 ,因此B口只能是R0,是0000,A口是对应R1 0001
  • F要送回到 B 口去,不做移位,因此输出无所谓,根据控制信号汇总表I8 I7 I6选择010011都可以。

把这18位交给Am2901,其就会得到一个完整的任务描述,完成任务。

VHDL 硬件描述语言

  • VHDL具有强大的语言结构
  • 系统硬件描述能力强、设计效率高
  • 具有较高的抽象描述能力
  • 可读性强,易于修改和发现错误公
  • 移植性好

用VHDL设计Am2901:

  • 逻辑设计:功能分析
  • 设计描述:自顶向下设计方法,划分模块(ALU、Register Files(读/写)、A和B锁存器)
  • 模拟仿真
  • 硬件调试

首先实体设计如下。

结构体定义如下。

通用寄存器模块(A锁存器、B锁存器)如下。

另外一个模块,ALU如下。

多路选通如下(只是举例,没有写完)。

小结

老的视频课程与2019的ppt有一点对不上,新的ppt没有讲VHDL。我截下的这些幻灯片比较有几年意义。

ppt中的这些内容,视频中没有涉及到(ppt的第35页起):

  • 运算器最低位进位输入信号 Cin 的形成
  • 运算器4位标志位信号的接收与记忆线路
  • 移位时最高、最低位的移位输入信号设计

【Computer Organization笔记05】运算器基本功能,定点运算器,Am2901的组成与功能,VHDL硬件描述语言相关推荐

  1. 【Computer Organization笔记01】计算机组成原理课程要求、计算机的层次结构、计算机的发展历史

    资源Bilibili AV58129929 计算机组成原理 清华大学 刘卫东 本次笔记内容: P1 计算机组成原理(01) P2 计算机组成原理(02) 文章目录 课程信息 预热内容-课程介绍 学习目 ...

  2. 【Computer Organization笔记16】大实验任务详细说明:支持指令流水的计算机系统设计与实现

    本次笔记内容: P31 计算机组成原理(31) P32 计算机组成原理(32) 我的计组笔记汇总:计算机组原理成笔记 视频地址:计算机组成原理 清华大学刘卫东 全58讲 国家精品课程 1080P 更完 ...

  3. 【Computer Organization笔记04】ALU的基本功能,1位ALU,位数扩展以及功能扩展

    本次笔记内容: P7 计算机组成原理(07) P8 计算机组成原理(08) 本节课对应幻灯片:组成原理14 ALU,第1页起. 文章目录 P4 运算器基本功能 P6 将上述组装,得到一个初步数据通路 ...

  4. 【Computer Organization笔记28】总复习

    本次笔记内容: P55 计算机组成原理(55) P56 计算机组成原理(56) 我的计组笔记汇总:计算机组原理成笔记 视频地址:计算机组成原理 清华大学刘卫东 全58讲 国家精品课程 1080P 更完 ...

  5. 【Computer Organization笔记12】流水线技术概述

    本次笔记内容: P23 计算机组成原理(23) P24 计算机组成原理(24) 本节课对应幻灯片: 组成原理26 pipeline.pptx 文章目录 本讲概要 多周期CPU 生活中的流水线 顺序洗衣 ...

  6. 【Computer Organization笔记03】信息编码与码制转换,数据表示:检错与纠错、码距、汉明码等

    本次笔记内容: P5 计算机组成原理(05) P6 计算机组成原理(06) 注:本节课开始,我找到了对应内容的课件,请见于GitHub的CS笔记仓库.因此,为了节省时间,我只记录老师上课强调的内容与对 ...

  7. 【Computer Organization笔记02】指令系统、MIPS指令系统简介、THCO MIPS指令系统、THINPAD指令模拟器

    本次笔记内容: P3 计算机组成原理(03) P4 计算机组成原理(04) 文章目录 计算机的指令系统:概述 计算机程序 什么是计算机程序? 程序举例 Von Neumannan结构计算机 指令和指令 ...

  8. 【Computer Organization笔记29】大作业展示

    本次笔记内容: P57 计算机组成原理(57) P58 计算机组成原理(58) 我的计组笔记汇总:计算机组原理成笔记 视频地址:计算机组成原理 清华大学刘卫东 全58讲 国家精品课程 1080P 更完 ...

  9. 【Computer Organization笔记27】接口电路和外部设备

    本次笔记内容: P53 计算机组成原理(53) P54 计算机组成原理(54) 我的计组笔记汇总:计算机组原理成笔记 视频地址:计算机组成原理 清华大学刘卫东 全58讲 国家精品课程 1080P 更完 ...

最新文章

  1. 每年节省170万美元的文档预览费用,借助机器学习的DropBox有多强​?
  2. Fragment-FragmentMannager中的方法
  3. 遥遥无期还是近在咫尺?长文展望「大模型」商业化前景
  4. ASA防火墙学习笔记1-基础篇
  5. openpyxl模块介绍
  6. 程序员们请收好这本JVM日历:Java 2018大事回顾
  7. 存储过程学习笔记(SQL数据库
  8. 455. Assign Cookies - LeetCode
  9. osmnx 补充笔记:get_edge_colors_by_attr get_node_colors_by_attr
  10. 排序算法时间复杂度、空间复杂度、稳定性整理
  11. 如何复制带格式的Notepad++文本?
  12. mysql+sqlplus命令找不到_bash: sqlplus: command not found 解决方法
  13. Doug Cutting—访谈录
  14. Matlab编程学习笔记【待续】
  15. jquery的全选和多选操作
  16. Linux内核学习-字符设备驱动学习(二)
  17. 离散数学 习题篇 —— 关系的性质
  18. c语言opengles程序,OpenGL教程 OpenGL编程指南
  19. 不同分子量的PEG衍生物试剂,DSPE-PEG6-Mal
  20. 电话交换机的作用,程控交换机的作用

热门文章

  1. 力扣题目——1. 两数之和
  2. 【PostgreSQL-9.6.3】使用pg_settings表查看参数的生效条件
  3. 文件的属性 计算机知识,计算机基础知识文件的属性(二)
  4. Win11怎么查看设备管理器?Win11设备管理器在哪里打开?
  5. Linux安装,虚拟机VMware-workstation安装CentOS操作系统的安装手册
  6. TortoiseGit:参考文章
  7. retinanet 部署_目标检测RetinaNet_飞桨-源于产业实践的开源深度学习平台
  8. 洛谷——P1548 [NOIP1997 普及组] 棋盘问题
  9. JavaScript中的(字符串,数字型,布尔型)是如何实现类型转换的?
  10. 2D转换中心点transform-origin(CSS3)