数字逻辑与计算机组成pdf下载pdf下载

数字逻辑与计算机组成百度网盘pdf下载

作者:
简介:本篇主要提供数字逻辑与计算机组成pdf下载
出版社:机械工业出版社自营官方旗舰店
出版时间:2020-10
pdf下载价格:9.10¥


预览


内容介绍

产品特色

内容简介

数字逻辑与计算机组成一直以来都是相辅相成不可分割的,本书将二者合二为一,更利于加强读者对计算机各组成部件的工作原理的理解以及融会贯通,全书主要内容包括:数据在计算机内部的二进制编码表示;数字逻辑基础内容;组合逻辑电路;各种时序逻辑处理模块的基本原理和实现方法;FPGA设计和硬件描述语言的背景知识及其使用;机器指令中涉及的各类基本运算的运算方法以及相应的运算部件;指令系统的设计;CPU的基本功能和基本结构;各类存储器的工作原理和组织形式;系统互连。

作者简介

数字逻辑电路与计算机组成融会贯通之作
从门电路、基本元件、功能部件到微架构循序渐进阐述硬件设计原理
以新兴开放指令集架构RISC-V为模型机
通过大量图示并结合Verilog语言清晰阐述电路设计思路

目录

前言
第1章 二进制编码1
1.1 计算机系统概述1
1.1.1 冯诺依曼结构计算机1
1.1.2 程序的表示与执行3
1.1.3 计算机系统抽象层5
1.2 二进制数的表示6
1.2.1 计算机的外部信息和内部数据6
1.2.2 进位计数制7
1.2.3 二进制数与其他计数制数之间的转换8
1.3 数值型数据的编码表示11
1.3.1 定点数的编码11
1.3.2 整数的表示16
1.3.3 浮点数的表示18
1.3.4 十进制数的二进制编码表示21
1.4 非数值型数据的编码表示22
1.4.1 逻辑值的表示22
1.4.2 西文字符的表示22
1.4.3 汉字的表示24
1.5 数据的宽度和存储24
1.5.1 数据的宽度和单位24
1.5.2 数据的存储和排列顺序26
1.6 本章小结27
习题27
第2章 数字逻辑基础30
2.1 逻辑门和数字抽象30
2.1.1 逻辑门30
2.1.2 数字抽象32
2.1.3 CMOS晶体管34
2.1.4 CMOS电路电气特性39
2.2 布尔代数41
2.2.1 公理系统41
2.2.2 定理42
2.3 逻辑关系描述45
2.3.1 逻辑函数45
2.3.2 真值表与波形图45
2.3.3 逻辑函数的标准表示46
2.4 逻辑函数的化简与变换48
2.4.1 代数法化简48
2.4.2 卡诺图法化简49
2.4.3 逻辑函数变换52
2.5 本章小结54
习题54
第3章 组合逻辑电路56
3.1 组合逻辑电路概述56
3.1.1 组合逻辑电路构成规则56
3.1.2 逻辑电路图57
3.1.3 两级和多级组合逻辑电路59
3.1.4 组合逻辑电路设计59
3.1.5 非法值和高阻态61
3.2 典型组合逻辑部件设计62
3.2.1 译码器和编码器62
3.2.2 多路选择器和多路分配器65
3.2.3 半加器和全加器67
3.3 组合逻辑电路时序分析68
3.3.1 传输延迟和最小延迟68
3.3.2 竞争冒险70
3.4 本章小结70
习题71
第4章 时序逻辑电路74
4.1 时序逻辑电路概述74
4.1.1 时序逻辑与有限状态机74
4.1.2 时序逻辑电路的基本结构76
4.1.3 时序逻辑电路的定时77
4.2 锁存器和触发器77
4.2.1 双稳态元件77
4.2.2 SR锁存器78
4.2.3 D锁存器79
4.2.4 D触发器79
4.2.5 T触发器81
4.3 同步时序逻辑设计82
4.3.1 同步时序逻辑设计步骤82
4.3.2 状态图/状态表设计83
4.3.3 状态化简和状态编码86
4.3.4 电路设计和分析88
4.4 典型时序逻辑部件设计92
4.4.1 计数器92
4.4.2 寄存器和寄存器堆95
4.4.3 移位寄存器97
4.5 本章小结100
习题100
第5章 FPGA设计和硬件描述语言103
5.1 可编程逻辑器件和FPGA设计103
5.1.1 可编程逻辑器件103
5.1.2 存储器阵列106
5.1.3 FPGA设计概述109
5.1.4 专用集成电路110
5.2 HDL概述111
5.2.1 VHDL和Verilog HDL111
5.2.2 基于HDL的数字电路设计流程112
5.3 Verilog语言简介116
5.3.1 模块、端口和实例化116
5.3.2 标识符、常量和注释117
5.3.3 数据类型118
5.3.4 运算符及其优先级121
5.4 Verilog的建模方式125
5.4.1 三种建模方式125
5.4.2 行为建模中的过程语句129
5.5 Verilog代码实例136
5.5.1 组合逻辑代码实例136
5.5.2 时序逻辑代码实例137
5.6 本章小结139
习题140
第6章 运算方法和运算部件143
6.1 基本运算部件143
6.1.1 串行进位加法器143
6.1.2 并行进位加法器145
6.1.3 带标志加法器147
6.1.4 算术逻辑部件149
6.2 定点数运算150
6.2.1 补码加减运算150
6.2.2 原码加减运算152
6.2.3 移码加减运算153
6.2.4 原码乘法运算153
6.2.5 补码乘法运算158
6.2.6 快速乘法器160
6.2.7 原码除法运算163
6.2.8 补码除法运算168
6.3 浮点数运算170
6.3.1 浮点数加减运算171
6.3.2 浮点数乘除运算176
6.4 本章小结179
习题179
第7章 指令系统182
7.1 指令系统概述182
7.2 指令系统设计183
7.2.1 操作数和寻址方式183
7.2.2 操作类型和操作码编码186
7.2.3 标志信息的生成与使用188
7.2.4 指令系统风格190
7.2.5 异常和中断处理192
7.3 指令系统实例:RISC-V架构193
7.3.1 RISC-V指令系统概述194
7.3.2 RISC-V指令参考卡196
7.3.3 基础整数指令集199
7.3.4 可选扩展指令集204
7.4 本章小结206
习题207
第8章 中央处理器212
8.1 CPU概述212
8.1.1 CPU的基本功能212
8.1.2 CPU的基本组成213
8.1.3 数据通路与时序控制215
8.1.4 计算机性能与CPU时间216
8.2 单周期CPU设计218
8.2.1 指令功能的描述219
8.2.2 单周期数据通路的设计220
8.2.3 控制器的设计231
8.2.4 时钟周期的确定239
8.3 多周期CPU设计240
8.3.1 多周期数据通路的设计240
8.3.2 硬连线控制器设计244
8.3.3 微程序控制器设计246
8.3.4 带异常处理的CPU设计247
8.4 流水线CPU设计251
8.4.1 流水线CPU概述251
8.4.2 指令的流水段分析252
8.4.3 流水线数据通路的设计255
8.4.4 流水线控制器的设计259
8.5 流水线冒险及其处理261
8.5.1 结构冒险261
8.5.2 数据冒险262
8.5.3 控制冒险266
8.6 高级流水线技术271
8.6.1 静态多发射处理器272
8.6.2 动态多发射处理器275
8.7 本章小结277
习题278
第9章 存储器层次结构282
9

前言/序言

在计算机系统层次结构中,从应用问题到机器语言程序之间的每次转换所涉及的概念都属于软件范畴,在机器语言程序所运行的计算机硬件和上层软件之间需要一座“桥梁”,这座架在软件和硬件交界面上的“桥梁”就是指令集体系结构(Instruction Set Architecture,ISA),它是软件和硬件之间接口的完整定义。实现ISA的具体逻辑结构称为计算机组成(computer organization)或微体系结构(micro architecture),简称微架构。一个特定的微架构包括运算器、通用寄存器组和存储器、输入/输出等功能部件的组织及其互连结构,功能部件层也称为寄存器传送级(Register Transfer Level,RTL)层。功能部件由数字逻辑电路(digital logic circuit)构成,而每个基本的逻辑门电路则由特定的器件技术实现。
本教材的内容主要涵盖计算机系统层次结构中从数字逻辑电路到ISA之间的抽象层,自底向上依次为数字逻辑电路层、功能部件/RTL层、微体系结构层和ISA层。因此,本教材主要介绍数字逻辑电路、计算机组成和ISA涉及的相关概念、理论和技术内容。本教材将以新兴开放指令集体系结构RISC-V为模型机,着重介绍数字逻辑电路、整数和浮点数运算、指令系统、中央处理器、存储器和输入/输出等方面的设计思路和具体结构。
1.为什么要将“数字逻辑电路”和“计算机组成原理”合并
传统课程体系中,“数字逻辑电路”和“计算机组成原理”是两门密切相关但独立开设的课程,通常,“数字逻辑电路”是“计算机组成原理”的先导课。实际上,这两门课程涉及的内容在计算机系统层次结构中关联的抽象层是交叉重叠的,它们之间重复的知识点比较多,例如,两门课程都包含信息的二进制表示、各类功能部件的设计、基本存储元件和存储器模块等内容。将两门课程合并成一门课程,并将有些内容整合到 “计算机系统基础”等相关课程中,除了可以用更短的学时达到更高的学习目标外,还特别有利于将数字逻辑电路和计算机组成相关的知识融会贯通,从而更加有利于深刻理解计算机系统的硬件设计与实现原理。
2.为什么采用RISC-V指令集体系结构作为模型机
涉及计算机组成的教材都需要针对特定的指令集体系结构进行叙述。经过几十年的发展,先后出现了几十种不同的指令集体系结构,但真正被广泛使用的不多,知名的有Intel x86、Sun公司的SPARC、MIPS、ARM、IBM公司的Power等,其中,Intel x86系列处理器在PC和服务器市场占有主导地位,而ARM架构在移动手持设备与嵌入式领域占绝对优势。但是,这两种架构比较复杂,不太适合用作处理器设计相关教材的模型机。有些教材将复杂架构简化后用作模型机,例如,计算机系统方面的著名教材《深入理解计算机系统》(Computer Systems: A Programmer’s Perspective,Randal E. Bryant和David R. O’Hallaron合著)将Intel x86简化为规整、简洁的Y86,作为处理器设计的模型机。目前国内外与计算机组成相关的教材多采用优雅的MIPS架构作为模型机。不过,两位计算机体系结构宗师、图灵奖得主David A. Patterson和John L. Hennessy合著的教材《计算机组成与设计:硬件/软件接口》(Computer Organization and Design: The Hardware/Software Interface)除了有MIPS架构版本外,也有ARM架构和RISC-V架构版本。
本教材将会介绍指令系统和中央处理器等的设计思路和具体结构,因而也必须以一个具体的指令集架构为模型机来讲解。选择RISC-V作为本教材的模型机,主要从以下几个方面来考虑。
首先,RISC-V作为一个新兴的开放指令集架构,以开放共赢为基本原则,不属于某一家商业公司独有,而是由一个统一的非营利组织作为主导者和核心规则制定者,任何公司和个人都可以永久免费使用其架构,无须向商业公司支付高昂的授权费,也不存在受制于人和无法自主可控的隐忧。
其次,RISC-V遵循“大道至简”的设计哲学,通过模块化和可扩展的方式,既保持基础指令集的稳定,也保证扩展指令集的灵活配置,因此,RISC-V指令集具有模块化的特点和非常好的稳定性与可扩展性,在简洁性、实现成本、功耗、性能和程序代码量等各方面都有较显著的优势。从最简单的小面积、低功耗的嵌入式微控制器,到功能强大的服务器都可以基于RISC-V指令集架构进行开发,同时,也非常容易在RISC-V通用架构基础上实现专用领域加速器,这也是RISC-V架构相比ARM和x86等主流商业架构的最大优点之一。
RISC-V所具有的开放、简单、易扩展等特性,加上RISC-V的设计者—加州大学伯克利分校团队配套推出的开源芯片及芯片敏捷开发方式,使得基于RISC-V架构的芯片开发门槛大大降低,吸引了越来越多的个人和企业加入RISC-V生态系统的开发队伍,业界也非常需要一些具备RISC-V基础的从业者。
虽然从原理上来说采用MIPS和RISC-V作为模型机没有多少区别,但是,RISC-V的基本指令集的小型浓缩化、功能指令集的模块化、代码长度的可缩性、访存指令的简洁与灵活性、过程调用的简洁性、特权模式的可组合性、异常/中断处理的简洁和灵活性以及无分支延迟槽等很多特性,都使得采用RISC-V架构进行教学更适合清晰阐述上层软件与指令集架构之间、指令集架构与底层微架构之间的密切关系。同时,目前国内出版的计算机组成与系统结构相关教材中,基于RISC-V架构编写的教材比较少,因此从指令集架构的多样性,以及方便读者针对不同架构进行相互参考和对比学习的角度来说,也非常有必要编写基于RISC-V架构的计算机组成方面的教材。
特别是我们从国外一流大学计算机组成与系统结构相关课程网站了解到,加州大学伯克利分校、麻省理工学院和卡内基梅隆大学等名校从2019年春季学期开始,都采用RISC-V架构作为模型机进行教学或CPU设计实验,这从另一个方面说明了RISC-V指令集架构作为教学模型机的优越性。
3.写作思路和内容组织
本教材结合相应课程在计算机系统能力培养目标中的定位以及课程内容在整个计算机系统层次结构中的位置,在内容组织方面采用了以下写作思路:教材内容按“信息的二进制表示→数字逻辑电路→硬件描述语言→功能部件→指令集体系结构→微体系结构”的顺序进行组织。我们的想法是:通过冯诺依曼结构的基本思想可以很自然地引入二进制编码表示;基于二进制编码和布尔代数就可展开对数字逻辑电路的介绍;有了组合逻辑电路和时序逻辑电路基础,就可很好地理解硬件描述语言(HDL)和FPGA设计;接下来,可以方便地利用HDL进行加法器、乘法器、通用寄存器组等功能部件的设计。这些内容为理解CPU、存储器和输入/输出三大微体系结构核心模块相关内容打下了坚实基础。同时,CPU设计必须要有一个指令集体系结构为实现目标,因而在介绍CPU设计之前必须先介绍指令集体系结构。
4.各章主要内容及教学建议
本书共有10章,各章主要内容如下。
第1章(信息的二进制编码)主要介绍计算机系统抽象层以及相关抽象层之间的关系,从而给出本课程教学内容在整个计算机系统中的位置,同时从冯诺依曼结构的基本思想入手,简要介绍通用计算机的基本组成和工作方式,进而展开对各类数据在计算机内部的二进制编码表示的介绍,包括无符号整数和带符号整数的表示、IEEE 754浮点数标准、西文字符和汉字的编码表示、数据的宽度单位、大端/小端存放顺序等。
在本章教学过程的最开始,强化计算机系统抽象层及其与课程内容的关系,可以起到导学作用,有利于学生理解课程各知识单元之间的关联。对于各类数据的二进制编码表示,在“计算机系统基础”等课程中也有介绍。若本课程先于其他相关课程开设,则这部分内容应详细介绍;若在其他相关课程后开设本课程,则只要简要回顾一下相关内容即可。
第2章(数字逻辑基础)主要内容包括逻辑门和数字抽象、布尔代数、逻辑关系描述、逻辑函数的化简和变换。
这部分属于数字逻辑电路的基础内容,对学生认识和理解数字逻辑电路以及计算机系统硬件设计具有非常重要的作用,因此,对于这部分内容的讲解必不可少。由于这部分内容概念较多,概念之间容易混淆,教学过程中应引导学生正确理解基本概念而不是死记硬背。
第3章(组合逻辑电路)主要内容包括组合逻辑电路构成规则、逻辑表达式和逻辑电路图之间的对应关系、组合逻辑电路设计过程、译码器/编码器/多路选择器/多路分配器/半加器/全加器等常用组合逻辑模块的结构,以及组合逻辑电路时序分析。
组合逻辑电路属于后续CPU设计内容中提到的操作元件设计的基础,在后续的计算机组成部分,需要用到译码器、编码器、多路选择器和加法器等常用组合逻辑电路,可以在讲课时告知学生在后续课程的哪些地方需要用到相应的部件。此外,在CPU设计中需要确定时钟周期的宽度,以及解决信号的竞争冒险问题,因此,组合逻辑电路的时序分析应重点讲解。
第4章(时序逻辑电路)主要内容包括时序逻辑与有限状态机、时序逻辑电路的基本结构、锁存器和触发器、同步时序逻辑设计和典型时序逻辑部件设计等。
时序逻辑电路属于后续CPU设计内容中提到的存储元件设计的基础,在后续的计算机组成部分,需要用到寄存器、寄存器堆、移位寄存器等时序逻辑电路,可以在讲课时告知学生在后续课程的哪些地方需要用到相应的部件。此外,在后续的计算机组成部分,需要用到有限状态机设计,例如,多周期CPU的控制器就是一个有限状态机,因而关于有限状态机的设计应该重点讲解。
第5章(FPGA设计和硬件描述语言)主要内容包括可编程逻辑器件和FPGA设计、存储器阵列、HDL概述、基于HDL的数字电路设计流程、Verilog语言建模,以及如何使用Verilog设计一些简单的数字电路。
对于可编程逻辑器件和FPGA设计部分的内容,由于后续的CPU控制器设计中需要用到PLA,因此PLA结构需要重点讲解;存储器阵列部分的内容与后续的SRAM芯片和DRAM芯片的内容相关,也应重点讲解;对于Verilog语言部分,可通过具体例子进行介绍,并通过实验使学生掌握相关内容。
第6章(运算方法和运算部件)主要内容包括串行进位加法器、并行进位加法器、带标志加法器和算术逻辑部件(ALU)、定点数运算及其运算部件、浮点数运算及其运算部件。
这部分内容中,串行进位加法器、带标志加法器、算术逻辑部件、补码加减运算等是需要优先讲解的内容;并行进位加法器、原码乘法运算、补码乘法运算、原码除法运算、补码除法运算等内容在时间允许的情况下可以讲解;其他内容可以不讲,让学生自学。在讲解各类加法器和算术逻辑部件等基本运算部件时,可以给出对应的Verilog代码。
第7章(指令系统)主要内容包括指令格式、操作数及其寻址方式、操作类型和操作码编码、指令系统风格、异常和中断处理机制,以及指令系统实例RISC-V架构等。
RISC-V指令集体系结构包含的内容较多,在时间有限的情况下,只要举例说明RISC-V的基本设计思想以及基础整数指令集RV32I中的常用指令格式和功能即可。
第8章(中央处理器)主要内容包括CPU的基本功能和基本组成、单周期CPU中数据通路和控制器的设计、多周期CPU设计、硬连线控制器设计、微程序控制器设计、指令流水线的工作原理、流水线数据通路的设计、指令流水线中各种冲突(冒险)现象及其处理,以及关于高级流水线技术的简要介绍。
单周期CPU设计和流水线CPU设计是重点内容,在单周期数据通路中加相应的流水段寄存器可以简单实现流水线数据通路,因而这两方面的内容关联较大,放在同一门课程中一起讲解较好;关于多周期CPU设计,重点内容是控制器如何控制每条指令执行过程中的状态转换,即有限状态机控制器设计,此外,对于带异常处理的CPU设计,如果通过分析多周期CPU的有限状态机来进行讲解,则学生比较容易理解;对于流水线冒险和高级流水线技术部分,在时间允许的情况下,可以介绍相关的基本概念和相应处理的基本思路,具体处理方法和实现电路放到后续的“计算机体系结构”课程中介绍,也可以选择完全不讲解,全部放到后续相关课程中介绍。
第9章(存储器层次结构)主要内容包括半导体随机存取存储器和磁盘存储器等不同类型存储器基本元件的存储和读写原理及其组织结构、SRAM芯片和DRAM芯片的内部结构、如何由DRAM芯片构成内存条、高速缓存(cache)的基本原理和实现技术,以及虚拟存储器实现技术。
第10章(系统互连与输入/输出)主要介绍外设分类、常用外设的基本工作原理、系统互连以及用于系统互连的系统总线、I/O接口的功能和结构、I/O端口的编址,以及程序直接控制、中断控制和DMA控制三种I/O方式,并说明I/O软件和I/O硬件如何协调完成I/O请求。
第9章和第10章的内容与“计算机系统基础”等课程中的相关内容重复。若开设“计算机系统基础”课程,则建议这部分内容在“计算机系统基础”课程中讲解,这是因为“计算机系统基础”课程的定位和内容设置更易于学生理解这部分内容;若不开设“计算机系统基础”课程,则这部分内容可在本课程中讲解。
5.关于使用本书的一些建议
本书可作为“数字逻辑电路”“计算机组成原理”和“数字逻辑与计算机组成”等相关课程的教材。对于本书的使用,具体建议如下:
(1)课堂教学应以主干内容为主,力求完整给出知识框架体系,并着重讲清楚相关概念之间的联系。
(2)标注“*”的内容是可以跳过而不影响阅读连贯性的部分,主要有以下三类:简单易懂的基础性内容、具体实现方面的细节内容和在技术层面上更加深入的内容。这些内容有助于深入理解课程的整体核心内容。因此,在课时允许的情况下,可以选择其中的一部分进行课堂讲解;在课时不允许的情况下,可安排学生课后阅读。
(3)习题中列出的术语基本涵盖了相应章节的主要概念,可以让学生对照检查以判断是否全部清楚其含义;习题中列出的简答问题是相应章节重要的基本问题,可以让学生对照检查以判断自己的掌握程度。
(4)本书在CPU设计方面给出了比较具体的实现方案,相关内容可以作为基于FPGA和硬件描述语言进行CPU设计实验的参考资料。
6.致谢
衷心感谢在本书的编写过程中给予我热情鼓励和中肯建议的各位专家、同事和学生,正是因为有他们的鞭策、鼓励和协助才能顺利完成本书的编写。
首先,非常感谢中科院计算所研究员、中国科学院大学包云岗教授,因为我是通过他和他的学生了解了RISC-V指令集架构的魅力,也是通过他分享的资料开始接触和学习RISC-V架构相关技术,从而能够编写这本基于RISC-V架构的计算机教材。
其次,非常感谢赛灵思(Xilinx)公司对教育部产学合作协同育人项目的大力支持,后续还将与他们同心协力开发配套实验平台和实验内容。同时,非常感谢江南大学柴志雷教授,从最初的提议、鼓励到相关资料的提供与写作时的建言献策,以及相关实验平台的配套支持,都得到了他的无私帮助。
本书基于作者在南京大学从事“数字逻辑电路”“计算机组成与系统结构”“计算机系统基础”课程教学所积累的部分讲稿编写而成。感谢南京大学各位同人和各届学生对讲稿内容和教学过程所提出的宝贵的反馈和改进意见,使得本教材的内容得以不断改进和完善。
特别感谢机械工业出版社为本书的编写和出版工作提供了极大的支持,特别感谢本书的责任编辑曲熠女士,她极其专业和非常细致的审校和编辑工作为本书的出版质量提供了可靠的保证。
7.结束语
本书广泛参考了国内外相关的经典教材和教案,在内容上力求做到取材先进并反映技术发展现状,在内容的组织和描述上力求概念准确、语言通俗易懂、实例深入浅出,并尽量利用图示和实例来解释和说明问题。由于数字逻辑和计算机组成相关的基础理论和技术在不断发展,新的思想、概念、技术和方法不断涌现,加之作者水平有限,书中难免存在不当或遗漏之处,恳请广大读者对本书的不足之处给予指正,以便在后续的版本中予以改进。

作者于南京
2020年7月