数电第六版阎石答案第二章_数电第六版阎石答案第二章

数电第六版阎石答案第二章_数电第六版阎石答案第二章王道408 计算机组成原理个人向听课笔记[缓慢更新]第一章 计算机系统概述1.0 简介计算机硬件就在我们身边,常见的有CPU内外存显卡等等。上边都有针脚,可以连接到主板上,高低电平分别代表10通过针脚与计算机交换信号,每个二进制位称为比特bit。1.1 计算机的发展什么是计算机系统计算机系统 = 硬

王道408 计算机组成原理个人向听课笔记[缓慢更新]   第一章 计算机系统概述   1.0 简介   计算机硬件就在我们身边,常见的有CPU内外存显卡等等。上边都有针脚,可以连接到主板上,高低电平分别代表10通过针脚与计算机交换信号,每个二进制位称为比特bit。   1.1 计算机的发展   什么是计算机系统   计算机系统 = 硬件 + 软件,性能好坏取决于二者总和。   软件可分为系统软件(如OS、数据库管理系统、网络软件、语言处理程序等)和应用软件。   硬件的发展   1946年第一台电子数字计算机埃尼阿克诞生,以电子管作为它的逻辑件,使用机器语言编程。   第二代计算机使用晶体管(1947年by贝尔实验室),出现了高级编程语言,操作系统出现雏形。   第三代计算机开始使用集成电路(1959年by仙童半导体,之后诞生了Intel和AMD),但规模为中小规模,第四代则为大规模、超大规模集成电路,开始出现CPU、操作系统。   机器字长:CPU一次整数运算能处理的二进制数据位数。   摩尔定律:18个月翻番。   软件的发展   机器语言 -> 汇编语言 -> 高级编程语言。   发展趋势   更微型化、多用途;更巨型化、超高速。   1.2.1 计算机硬件的基本组成   为解决埃尼阿克需要手动接线来控制计算的问题,冯诺依曼提出了储存程序的概念。   储存程序指将指令以二进制代码的形式事先输入计算机的主储存器(内存),然后按其在储存器中的首地址执行程序的第一条指令,之后按顺序执行其他指令直至执行结束。   在计算机系统中,软件和硬件在逻辑上是等效的,但是成本和效率有区别。   冯诺依曼结构的特点   由五大IO部件(输入设备(A/D)、运算器、存储器、控制器、输出设备(D/A))组成。   指令和数据以同等地位存于存储器,可按地址寻访。   指令和数据用二进制表示。   指令由操作码和地址码组成。   存储程序。   以运算器为中心——IO设备与存储器之间的数据传输均通过运算器完成,但是数据计算的效率降低。   现代计算机的结构   以存储器为中心,CPU整合了运算器和控制器,解决了冯诺依曼结构的一个大问题。   存储器包括主存和辅存,其中主存属于主机,辅存属于IO设备。   1.2.2 各个硬件部件工作原理   主存储器的基本组成   储存体~货架:按地址存放数据,每个存储单位对应一个地址(从0开始)并存放一串二进制代码,即存储字,存储字长则为存储子的二进制代码位数。存储即存储二进制的电子件,每个存储可存1bit。   MAR(Memory Address Register)地址寄存器~店员:位数反映存储单的个数   MDR(Memory Data Register)数据寄存器~柜台:其位数等于存储字长   *区分大小b,一个字节一个比特。   运算器的基本组成   运算器:用于实现是算术运算(加减乘除)、逻辑运算(与或非)。   ACC(Accumulator)累加器:用于存放操作数或运算结果。   MQ(Multiple-Quotient Register)乘商寄存器:用于在乘除运算时存放操作数或运算结果。   X通用操作数寄存器:用于存放操作数。   ALU(Arithmetic and Logic Unit)算术逻辑单:运算器的核心部分,通过内部复杂的电路实现算术运算、逻辑运算。   控制器的基本组成   CU(Control Unit)控制单:控制器的核心件,用于分析指令,给出控制信号。   IR(Instruction Register)指令寄存器:用于存放当前执行的指令。   PC(Program Counter)程序计数器:用于存放下一条指令地址,有自动加一功能。   完成一条指令的过程:PC取出指令 -> IR分析指令 -> CU执行指令   计算机的工作过程   初始:指令、数据存入主存,PC指向第一条指令。   从主存中取出指令放入IR,PC自动加一,CU分析指令后指挥其他部件执行指令(划分出很多微指令)。   王道讲的超级详细(18min-32min)   *现在的计算机通常把MAR、MDR也集成到CPU里边了   1.2.3 计算机系统的层次结构   计算机系统的层次结构   M4:虚拟高级语言机器(执行高级语言,用编译程序翻译成汇编语言程序)   M3:虚拟汇编语言机器(执行汇编语言,用汇编程序翻译成机器语言程序)   M2:虚拟操作系统机器(向上提供广义指令,系统调用)   M1:传统机器(执行二进制机器语言指令)   M0:微程序机器(由硬件直接执行微指令)   三种级别的语言   高级语言:如C/C++等 –编译程序(编译器)–> 汇编语言:助记符 –汇编程序(汇编器)–> 机器语言:二进制代码。   若是JavaScript、Python等解释型语言则经过解释程序(解释器)形成机器语言。   编译程序和解释程序的区别在于只翻译一次还是每次执行语句时都要翻译。   1.3 计算机的性能指标   存储器的性能指标   MAR位数反映了存储单的个数(共2^a个),MDR位数即存储字长,表示每个存储单的大小。   总容量 = (2 ^ a * d) bit = (2 ^ a * d / 8) Byte   CPU的性能指标   CPU主频:CPU内数字脉冲信号震荡的频率,与时钟周期互为倒数。   CPI(Clock cycle PerIstruction):执行一条指令所需的时钟周期数,指令不同CPI就不同,甚至相同的指令CPI也可能不同。   CPU执行一条指令所需的时间 = CPI * CPU时钟周期 = CPI / 主频。(IPS的倒数)   执行整个程序的耗时就在一条指令时间的基础上乘指令条数即可。   IPS(Instructions Per Second):每秒执行指令的条数,= 主频 / 平均CPI。   FLOPS(Floating-point Operations Per Second):每秒执行多少次浮点运算。   有时会在IPS和FLOPS前加上数量单位K、M、G、T等。   系统整体的性能指标   数据通路带宽:数据总线一次能并行传送信息的位数(各硬件部件通过数据总线传输数据)。   吞吐量:系统在单位时间内可以处理的请求的数量,主要取决于主存的存取周期。   响应时间:指从用户向计算机发送一个请求到系统对该请求做出响应并获得她所需要的结果的等待时间。通常包括CPU时间(运行一个程序所花费的时间)与等待时间(用于磁盘访问、存储器访问、I/O操作、操作系统开销等时间)。   常用数量单位   在描述存储容量、文件大小时:K = 2^10,M = 2^20,G = 2^30,T = 2^40   在描述频率、速率时:K = 10^3,M = 10^6,G = 10^9,T = 10^12   第二章 数据的表示和运算   2.1.1 进位计数制   进制转换   方法:乘权求和,除r取余逆序输出,乘r取整正序输出,三/四位一组,整数高位补位,小数低位补位。   真值和机器数   真值:人类习惯的实际带正负号的数值   机器数:将正负号数字化后存到机器里的数   2.1.2 BCD码(Binary-Coded Decimal)   BCD码:用四个二进制位表示一个十进制数。   8421码:权值分别映射为8421。   8421码的加法:若结果在1010~1111的未定义范围内,则对结果继续加0110(6)实现进位效果。   余3码:由8421码加上0011(3)得到。   2421码:权值分别映射为2421,表示0~4时最高位为0,表示5~9时最高位为1。   2.1.3 字符与字符串   英文字符在计算机内的表示   ASCII码:128个常用字符用八个二进制位表示,32-126为可印刷字符,其余为控制、通信字符。48-0,65-A,97-a。   中文字符在计算机内的表示   GB2312码:分为区位码(94个区,每区94个位置 -> 二维数组),在区位码的基础上+20H得到国标码,再+80H得到机内码。(避免通信时与ASCII码冲突)   输入编码,如拼音、五笔输入法。   输出编码:汉字字形码。   字符串的存储   字符串在计算机内储存是从低地址到高地址逐个字符存储,通常以’\0’结束。   大端模式:将数据的最高有效字节存放在低地址单中。   小端模式:将数据的最高有效字节存放在高地址单中。   2.1.4 奇偶校验码   校验原理   由若干位代码组成的一个字叫码字。   将两个码字逐位进行对比,具有不同的位的个数称为两个码字间的距离。   一种编码方案可能有若干个合法码字,各个合法码字间的最小距离称为码距(d)。   当d=1时,无检错能力;当d=2时,有检错能力;当d>=3时,若设计合理,可以具有检错、纠错功能。   奇偶校验   奇偶校验码:在有效信息位的最前/最后添加一位奇偶校验位,若为奇校验码,则校验位需要使得整个校验码中1的个数为奇数,同理偶校验码需要使得整个校验码中1的个数为偶数。   奇偶校验只能检查出奇数个比特位跳变产生的错误,且无法确定是哪一位出错,也无法纠错,只能要求重传。因为一个校验位只能携带两种状态信息(对/错)。   偶校验的硬件实现:各信息进行异或(模2加)运算即可得到偶校验位。   2.1.5 海明校验码(需要再看一遍)   设计思路   将信息位分组进行偶校验 -> 产生多个校验位 -> 多个校验位能携带多种状态信息,标注出错位置。   求解步骤   确定校验位数:k个校验位,n个信息位,需满足2^k>=n+k+1的要求。   确定校验位分布:Pi在2^i位,空出来的其他位置依次填入信息位。   求校验位:将信息位的位置序号用k位二进制数表示出来,校验位Pi与位置序号第i位为1的信息位归为同一组进行偶校验。   纠错:对P1,P2,P3…所属各分组进行异或(即分组偶校验)求出S1,S2,S3…,若全为0则说明没有错误,反之其值反映了出错位置。   补充   海明码有一位纠错能力,二位检错能力。   为区分一位错和二位错,还需添加“全校验位”对整体进行偶校验。   2.1.6 循环冗余校验码(Cyclic Redundancy Check)   基本思想   数据的发送方和接收方约定一个“除数”(题目中一般以生成多项式的方式给出),将K个信息位和R个校验位连接后作为“被除数”,要求添加校验位后除法所得的余数为0。接收方收到数据后,进行除法运算,检查余数是否为0,若非0则说明出错,需要重传或者纠错。   K为信息码的长度,R为生成多项式的最高次幂,总位数N=K+R。   校验位由左移R位后的信息码模二除生成多项式的余数确定。(注意模二除法的运算方式)   检错、纠错能力   循环冗余校验码也具有纠错能力,但有时候因为设计不当无法实现。(数据长度超过了校验位所能表示的情况数)若2^R>=K+R+1,则CRC码可纠正单比特错。(实际应用中一般只用来检错)   理论上可以检测出所有奇数个错误,所有双比特错误,所有小于等于校验位长度的连续错误。   2.2.1 定点数的表示   概念   定点数:小数点的位置固定——常规计数   浮点数:小数点的位置不固定——科学计数法   定点整数的隐含小数位在末尾,定点小数的隐含小数位在符号位后。   无符号数 Unsigned   概念:整个机器字长的全部二进制位均为数值位,不存在数的符号位,相当于数的绝对值。   n位无符号数的表示范围为:0~2^n-1。   通常只有无符号整数,没有无符号小数。   有符号数 Signed   有符号数的定点表示:原码/反码/补码/移码   原码   概念:用尾数表示真值的绝对值,符号位的0/1对应正/负。   真值0有+0和-0两种形式,故n+1位机器字长表示的原码整数范围为[-(2^n-1),2^n-1],原码小数范围为[-(1-2^(-n)),1-2^(-n)]。   反码   若符号位为0,则反码与原码相同;若符号位为1,则数值位全部取反。   反码的表示范围与原码一致,真值0同样有两种表示形式。   补码   正数的补码就是原码,负数的补码是在其反码的末尾加1(需进位)。(转回原码也是同样的操作~)   补码的真值0只有一种表示形式。规定[x]补=1000,0000表示-2^7。   若机器字长为n+1位,补码整数的表示范围为[-2^n,2^n-1],补码小数的表示范围为[-1,1-2^(-n)]。   *负数补码中,最右侧的1及其右侧同原码,左侧同反码。   移码   在补码的基础上将符号位取反,但只能用于表示整数,可以很方便的比较数值大小。   真值0同样只有一种表示形式,表示范围和补码相同。   2.2.2 原码补码移码的作用   对原码进行加减运算时,需要把负数变为正数,运算做相应的调整,否则会出错。硬件由加法器、减法器实现。   补码——用加法代替减法   原理:使用补数将减法操作转变为等价的加法,执行加法操作时,符号位可以一起参与运算。补数与原数之和即为模,节省硬件成本。   2.2.3 移位运算   算术移位   小数点前/后移实际上改变了各个数码位的位权,可以等价地实现乘/除法。   右移:相当于除法,高位补0,低位舍弃,若舍弃位不为0则会丢失精度。   左移:相当于乘法,低位补0,高位舍弃,若舍弃位不为0则会出现严重误差。   由于位数有限,有时无法用算数移位精确地等效实现乘除法。   反码的算数移位   正数同上,负数左右移时补位补1。   补码的算数移位   正数同上,负数右移同反码添1,左移同原码添0。   逻辑移位   左移右移都补0,移出的位舍弃,相当于是对无符号数的算数移位。   循环移位   移位时移出来的位回到空位中进行补位。   带进位位的循环左移:多了一位(CF)的循环移位。   2.2.4 加减运算和溢出判断   原码的加法运算   正+正:绝对值做加法,结果为正。   负+负:绝对值做加法,结果为负。   正+负/负+正:绝对值大的减去绝对值小的,符号与绝对值较大的数相同。   *正+正&负+负可能溢出。   原码的减法运算   将减数符号取反,转变为加法操作即可。   补码的加减运算   对补码而言,无论加法还是减法最终都会转变成加法,硬件由加法器实现,符号位也参与运算。   *两数同号时可能由于机器字长不够导致溢出现象。   溢出判断   上溢:正+正=负。&下溢:负+负=正。   判断方法   1.使用一位符号位:   设A的符号为As,B的符号为Bs,运算结果的符号为Ss,则溢出逻辑表达式为V = AsBs┐Ss+┐As┐BsSs。   若V = 0,表示无溢出;若V = 1,表示有溢出。   2.使用一位符号位,根据数据位进位的情况判断:   符号位的进位Cs和最高数值位的进位C1相反时发生溢出。   溢出逻辑表达式为v = Cs ⊕ C1。若V = 0,表示无溢出;若V = 1,表示有溢出。   3.使用双符号位:   正数符号位为00,负数符号位为11。若最终结果符号位为01/10则表示产生溢出。   记两个符号位为Ss1Ss2,则V = Ss1⊕Ss2。若V = 0,表示无溢出;若V = 1,表示有溢出。   *双符号位补码又称模4补码,单符号位补码又称模2补码。   符号扩展   定点整数的符号扩展   在原符号位和数值位中间补位,正数补0,负数原码补0,反、补码补1。   定点小数的符号扩展   在原符号位和数值位后面补位,正数补0,负数原码补0,反、补码补1。   2.2.5-1 原码的乘法运算   实现原理   先加法(ACC+X->ACC)再移位(逻辑右移一/二位,高位补0),重复n次,符号位使用异或单独处理,不参与运算。   原码一位乘法   设机器字长为n+1=5位(含一位符号位):符号单独处理,运算结果符号位=x5⊕ y5;数值位再取绝对值进行乘法运算。   2.2.5-2 补码的乘法运算   补码一位乘法(Booth算法)   进行n轮加法、移位,每次加法的加数由当前MQ中的最低位及辅助位确定,有0/[x]补/[-x]补三种可能;移位则是补码的算数右移;符号位参与运算。最后还有一次加法运算。   由于MQ中增加了一位辅助位,总位数为n+2,故所有寄存器统一采用n+2位,使用双符号位补码进行运算。   2.2.6-1 原码的除法运算   恢复余数法   设机器字长为五位(含一位符号位,n = 4),符号位依旧单独处理:x5⊕ y5,数值位取绝对值进行除法运算。   MQ初始默认商1,若ACC – 除数得到负值则修改商为0,同时ACC加回余数。ACC、MQ整体逻辑左移,ACC高位丢弃,MQ低位补0。重复上述操作直到商达到机器字长的长度。(左移n次,上商n+1次)   加减交替法   设余数为a,除数为b,恢复余数法最终需要得到的新余数就是2*a+b(左移再相加),若为正,则商1,让余数左移一位再减去除数的绝对值,得到新余数;为负则直接商0,并让余数左移一位再加上除数的绝对值。   第一步为被除数减去除数的绝对值得到新余数,之后每次根据余数的正负性来确定应该加商除数的绝对值还是减去。   虽然又名不恢复余数法,但若最终余数为负,还需商0并加上除数的绝对值才能得到正确余数。   2.2.6-2 补码的除法运算   补码的加减交替法与原码类似,但符号位参与运算,且使用双符号位进行运算。   第一步看被除数与除数是否同号,若同号则被除数减去除数;异号则加上除数。之后判断余数和除数是否同号,同号则商1,余数左移一位并减去除数;若为异号则商0,余数左移一位并加上除数。上述操作重复n次(机器字长的限制)。   另外末尾商恒置1(精度误差不超过2^-n)。   2.2.7 强制类型转换   在C中,定点整数使用补码储存。   无符号数与有符号数:不改变数据内容,改变解释方式。   长整数变短整数:高位截断,保留低位。(如int->short)   短整数变长整数:符号扩展(负数高位添1,正数添0)。   2.2.8 数据的存储和排列   大小端模式   多字节数据在内存里一定是占连续的几个字节。以四字节int为例,大端存储方式从左到右(低地址到高地址)是最高有效字节(MSB)到最低有效字节(LSB),符合人类阅读习惯,小端方式则相反,但更便于机器处理。   边界对齐   现代计算机通常是按字节编址,即每个字节对应一个地址,通常也支持按字、半字、字节寻址。(从零开始)一个字对应四个字节,一个半字对应两个字节。则要查找某字节只需要将地址右移两位,查找半字则右移一位。(乘2/4)   由于计算机每次访存只能读/写一个字,边界对齐方式的查找效率要高于边界不对齐方式。(空间换时间)   2.3.1 浮点数的表示   定点数的局限性   定点数可表示的数据范围有限,但我们不能无限制地增加数据长度,故探求如何在数据位数不变的前提下扩大数据的可表示范围。   浮点数的表示   将数划分为阶码和尾数,其中阶码又分为阶符和阶码的数值部分;尾数又分为数符和尾数的数值部分。阶符表示小数点应该左移还是右移(移动几位由阶码的数值部分确定),尾数数值部分越短,所表示的数的精度越低。   阶码通常是补码或移码表示的定点整数,尾数通常是原码或者补码表示的定点小数。   浮点数尾数的规格化   在存储长度有限的情况下,尾数的最高位若是无效值零则会丧失精度。   使用左规的方法将其进行规格化:将尾数算术左移一位,同时阶码减一,直到尾数最高位是有效值。同理也有右规,当浮点数运算的结果尾数出现溢出的情况(双符号位为01或10)时,将尾数算数右移一位,阶码加一,直到双符号位变回00。   *采用双符号位,当发生溢出时可以进行挽救,更高的符号位是正确的符号位。   规格化浮点数的特点   用原码表示的尾数进行规格化   正数为0.1xx…x的形式,其最大值表示为0.11…1;最小值表示为0.10…0,尾数的表示范围为[1/2,1-2^-n]。   负数为1.1xx…x的形式,其最大值表示为1.10…0;最小值表示为1.11…1,尾数的表示范围为[-1+2^-n,-1/2]。   *规格化后的原码尾数,最高数值位一定为一。   用补码表示的尾数进行规格化   正数同原码,负数为1.0xx…x的形式,其最大值表示为1.01…1;最小值表示为1.00…0,尾数的表示范围为[-1,-1/2-2^-n]。   *规格化后的补码尾数,符号位和数值位必定相反。   当出现正下溢或是负下溢时,将这个数近似看作0。

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/75858.html

(0)
上一篇 2024年 8月 4日 下午5:28
下一篇 2024年 8月 4日 下午5:36

相关推荐

关注微信