第三组程序及数据的机器级表示
计算机系统结构 复习笔记

第一章概论本章重点:计算机系统的层次结构、计算机系统结构的定义、计算机系统的设计思路、系统结构并行性开发的方法和计算机系统的分类。
本章难点:透明性分析。
复习建议:本章在历年考试中,为必考的章节,但一般考察基本概念和基本知识;从题型来讲主要为单项选择题和填空题。
建议学员在复习时注意基本概念的理解和掌握。
第一节计算机系统的多级层次结构一、计算机系统的层次(1)从使用语言的角度,计算机系统可以被看成是按功能划分的多层机器级所组成的层次结构。
层次结构由高到低依次为应用语言机器级、高级语言机器级、汇编语言机器级、操作系统机器级、传统机器语言机器级和微程序机器级,如图所示。
(2)对各级机器级的理解对每一级编程的程序员来说,只要熟悉和遵守该级语言的使用规定,所编写的程序就能在此机器上运行并得到结果,而不用考虑该机器级是如何实现的。
机器:能存储和执行相应语言程序的算法和数据结构的集合体。
(3)各级机器的实现技术各级机器的实现主要采用翻译或解释技术来实现,或者两者结合。
多级机器构成的层次结构推动了计算机系统结构的发展。
第二节计算机系统结构、计算机组成和计算机实现一、计算机系统结构的定义★系统结构是对计算机系统中的各级界面的定义及其上下的功能分配。
在多级的层级结构中,每层每级都有自己的系统结构。
不同机器级的程序员所看到的计算机属性是不同的,这就是计算机系统不同层次的体现。
系统结构就是要研究对于某级,哪些属性应透明,哪些不应透明。
透明,即如果客观存在的事物或属性从某个角度看不到,则称对它是透明的。
★计算机系统结构也称为计算机系统的体系结构(Computer Architecture),它指的是层次结构中传统机器级的系统结构,其界面之上的功能包括操作系统级、汇编语言级、高级语言级和应用语言级中所有软件的功能。
界面之下的功能包括所有硬件和固件的功能。
计算机系统结构是软件和硬件的交界面。
就目前的通用机来说,计算机系统结构的属性应包括:★l 硬件能直接识别和处理的数据类型和格式等的数据表示;l 最小可寻址单位、寻址种类、地址计算等的寻址方式;l 通用/专用寄存器的设置、数量、字长、使用约定等的寄存器组织;l 二进制或汇编级指令的操作类型、格式、排序方式、控制机构等的指令系统;l 主存的最小编址单位、编址方式、容量、最大可编址空间等的存贮系统组织;l 中断的分类与分级、中断处理程序功能及入口地址等的中断机构;l 系统机器级的管态和用户态的定义和切换;l 输入输出设备的连接、使用方式、流量、操作结束、出错指示等的机器级I/O结构;l 系统各部分的信息保护方式和保护机构;【例题】下列对应用程序员不透明的是( )(2012年单选题)A.标志符数据表示中的标志符B.输入输出系统硬件的功能C.虚拟地址到主存实地址的变换D.“执行”指令【答案】B【解析】对应用程序员来说只需要知道输入输出系统硬件的功能,就能进行应用系统的开发,而标志符、虚地址与实地址如何变换、“执行”指令均属于底层机器级所要确定的问题,对其是透明的。
计算机系统结构复习试题及答案(非计算)

计算机系统结构复习试题及答案(⾮计算)⼀.名词解释计算机系统结构:传统机器程序员所看到的计算机属性,即概念性结构与功能特性。
在计算机技术中,把这种本来存在的事物或属性,但从某种⾓度看⼜好像不存在的概念称为透明性。
系列机:由同⼀⼚家⽣产的具有相同系统结构、但具有不同组成和实现的⼀系列不同型号的计算机。
同构型多处理机系统:由多个同类型或⾄少担负同等功能的处理机组成,它们同时处理同⼀作业中能并⾏执⾏的多个任务。
堆栈型机器:CPU 中存储操作数的单元是堆栈的机器。
累加器型机器:CPU 中存储操作数的单元是累加器的机器。
通⽤寄存器型机器:CPU 中存储操作数的单元是通⽤寄存器的机器。
数据相关:考虑两条指令i 和j,i 在j 的前⾯,如果下述条件之⼀成⽴,则称指令j 与指令 i 数据相关:(1)指令j 使⽤指令i 产⽣的结果;(2)指令j 与指令k 数据相关,⽽指令k ⼜与指令i 数据相关。
定向:⽤来解决写后读冲突的。
在发⽣写后读相关的情况下,在计算结果尚未出来之前,后⾯等待使⽤该结果的指令并不见得是马上就要⽤该结果。
如果能够将该计算结果从其产⽣的地⽅直接送到其它指令需要它的地⽅,那么就可以避免停顿。
向量处理机:指令级并⾏:简称ILP。
是指指令之间存在的⼀种并⾏性,利⽤它,计算机可以并⾏执⾏两条或两条以上的指令。
指令的动态调度:是指在保持数据流和异常⾏为的情况下,通过硬件对指令执⾏顺序进⾏重新安排,以提⾼流⽔线的利⽤率且减少停顿现象。
是由硬件在程序实际运⾏时实施的。
指令的静态调度:是指依靠编译器对代码进⾏静态调度,以减少相关和冲突。
它不是在程序执⾏的过程中、⽽是在编译期间进⾏代码调度和优化的。
失效率:CPU 访存时,在⼀级存储器中找不到所需信息的概率。
失效开销:CPU 向⼆级存储器发出访问请求到把这个数据调⼊⼀级存储器所需的时间。
强制性失效:当第⼀次访问⼀个块时,该块不在Cache 中,需要从下⼀级存储器中调⼊Cache,这就是强制性失效。
计算机系统基础pptICS-Ch3-prog-3

过程调用的机器级表示
• IA-32的寄存器使用约定
– 调用者保存寄存器:EAX、EDX、ECX 当过程 P 调用过程 Q 时, Q可以直接使用这三个寄存器,不用 将它们的值保存到栈中。如果P在从Q返回后还要用这三个寄 存器的话,P应在转到 Q之前先保存,并在从Q返回后先恢复 它们的值再使用。
– 被调用者保存寄存器:EBX、ESI、EDI
①
② ⑤
③
Q(参数1,…,参数n);
int add ( int x, int y ) { return x+y; } int caller ( ) { int t1 = 125; int t2 = 80; int sum = add (t1, t2); return sum; }
add 一个简单的过程调用例子
第三章 程序的转换与机器级表示
程序转换概述 IA-32 /x86-64指令系统 C语言程序的机器级表示
复杂数据类型的分配和访问
越界访问和缓冲区溢出、x86-64架构
程序的转换与机器级表示
• 主要教学目标 – 了解高级语言与汇编语言、汇编语言与机器语言之间的关系 – 掌握有关指令格式、操作数类型、寻址方式、操作类型等内容 – 了解高级语言源程序中的语句与机器级代码之间的对应关系
Q必须先将它们的值保存到栈中再使用它们,并在返回 P之前 恢复它们的值。
– EBP和ESP分别是帧指针寄存器和栈指针寄存器,分别用来指 向当前栈帧的底部和顶部。
问题:ห้องสมุดไป่ตู้减少准备和结束阶段的开销,每个过程应先使用哪些寄存器?
EAX、ECX、EDX!
过程调用的机器级表示
• 过程调用过程中栈和栈帧的变化 (Q为被调用过程)
程序的机器级表示
计算机系统结构(第三版)张晨曦 课后答案

fi Si
−1
式中,fi 为可加速部件 i 在未优化系统中所占的比例;Si 是部件 i 的加速比。
⎧ f ⎫ f f S = ⎨[1 − ( f1 + f 2 + f 3 )] + 1 + 2 + 3 ⎬ S S S 1 2 3⎭ ⎩
0.3 0.3 f 3 ⎫ ⎧ 10 = ⎨[1 − (0.3 + 0.3 + f 3 )] + + + ⎬ 30 20 30 ⎭ ⎩
课
45000 × 1 + 75000 × 2 + 8000 × 4 + 1500 × 2 = 1.776 129500
答
案 网
计算机体系结构 • 第一章 • 第4页
⎡ f ⎤ Te = To ⎢(1 − f e ) + e ⎥ S e⎦ ⎣
S=
1 (1 − f e ) +
fe Se
S=
i
1 (1 − ∑ f i ) + ∑
对于第三级而言,为了完成 IC 条指令的功能,第三级指令的条数为: 执行第三级
IC 。为了 M2
IC IC 条指令,需要执行 N 条第二级的指令对其进行解释。那么对第二级 2 M M2 IC IC + 2N 2 M M
而言,总的指令条数为:
N⎤ ⎡ = ⎢1 + ⎥ K ⎣ M⎦ N⎤ ⎡ T4 = ⎢1 + ⎥ K ⎣ M⎦
1.5 计算机系统有三个部件可以改进,这三个部件的加速比如下: 部件加速比 1=30; 部件加速比 2=20; 部件加速比 3=10; (1) 如果部件 1 和部件 2 的可改进比例为 30%,那么当部件 3 的可改进比例为多少时, 系统的加速比才可以达到 10? (2) 如果三个部件的可改进比例为 30%、30%和 20%,三个部件同时改进,那么系统 中不可加速部分的执行时间在总执行时间中占的比例是多少? 解:在多个部件可改进情况下 Amdahl 定理的扩展:
计算机体系结构试题及答案

计算机体系结构试题及答案12008年01月23日22:211、计算机高性能发展受益于:(1)电路技术的发展;(2)计算机体系结构技术的发展。
2、层次结构:计算机系统可以按语言的功能划分为多级层次结构,每一层以不同的语言为特征。
第六级:应用语言虚拟机-> 第五级:高级语言虚拟机-> 第四级:汇编语言虚拟机-> 第三级:操作系统虚拟机-> 第二级:机器语言(传统机器级) ->第一级:微程序机器级。
3、计算机体系结构:程序员所看到的计算机的属性,即概括性结构与功能特性。
For personal use only in study and research; not for commercial use4、透明性:在计算机技术中,对本来存在的事物或属性,从某一角度来看又好像不存在的概念称为透明性。
5、Amdahl提出的体系结构是指机器语言级程序员所看见的计算机属性。
6、经典计算机体系结构概念的实质3是计算机系统中软、硬件界面的确定,也就是指令集的设计,该界面之上由软件的功能实现,界面之下由硬件和固件的功能来实现。
7、计算机组织是计算机系统的逻辑实现;计算机实现是计算机系统的物理实现。
8、计算机体系结构、计算机组织、计算机实现的区别和联系?答:一种体系结构可以有多种组成,一种组成可以有多种物理实现,体系结构包括对组织与实现的研究。
9、系列机:是指具有相同的体系结构但具有不同组织和实现的一系列不同型号的机器。
10、软件兼容:即同一个软件可以不加修改地运行于系统结构相同的各机器,而且它们所获得的结果一样,差别只在于运行时间的不同。
11、兼容机:不同厂家生产的、具有相同体系结构的计算机。
12、向后兼容是软件兼容的根本特征,也是系列机的根本特征。
13、当今计算机领域市场可划分为:服务器、桌面系统、嵌入式计算三大领域。
14、摩尔定律:集成电路密度大约每两年翻一番。
15、定量分析技术基础(1)性能的评测:(a)响应时间:从事件开始到结束之间的时间;计算机完成某一任务所花费的全部时间。
计算机组成原理期末考点重点

第一章1)冯.诺依曼主要三个思想是什么?(1)计算机处理采用二进制或二进制代码(2)存储程序(3)硬件五大部分:输入设备、输出设备、存储器、运算器和控制器2)计算机硬件由哪5部分组成?输入设备、输出设备、存储器、运算器和控制器3)VLSI中文的意思是什么?超大规模集成电路4)列举出三个计算机应用领域?1.科学技术计算2.数据信息处理3.计算机控制4.计算机辅助技术5.家庭电脑化5)计算机系统分哪两大系统?硬件和软件系统6)计算机内部信息包括哪两大信息?计算机中有两种信息流动:一是控制信息,即操作命令,其发源地为控制器;另一种是数据流,它受控制信息的控制,从一部件流向另一部件,边流动边加工处理。
7)计算机性能主要包括哪三个主要性能?(1)基本字长: 是参与运算的数的基本长度,用二进制数位的长短来衡量,取决寄存器、加法器、数据总线等部件的位数。
(2)主存容量:可以用字节,有的用字长,K、M、G、T(3)运算速度: 是每秒能执行的指令条数来表示,单位是条/秒。
(MIPS)8)现代计算机系统分为五个层次级别是如何划分的?从功能上,可把现代计算机系统分为五个层次级别:第一级是微程序设计级:是硬件级第二级是一般机器级:机器语言级第三级是操作系统级:是操作系统程序实现。
(混合级)第四级是汇编语言级:一种符号形式语言。
第五级是高级语言级9)机器数是指什么?它主要是解决了数值的什么表示?10)机器数有哪4种表示方法?原码表示法、补码表示法、和移码表示法四种。
11)计算机数值有哪两种表示方式?它主要解决了数值的什么表示?定点表示和浮点表示。
主要解决数中小数点的位置的确定。
12)浮点数在计算机内部表示两种方式是如何安排的?13)尾数是补码表示其规格化如何表示?正数:0.1×…×的形式负数:1.0×…×的形式14)解释计算机内部数值0和字符0有何不同?数值0在计算机中为00H,而字符0为其ASCII码30H。
计算机系统结构年串讲及汇总第一部分

第一章计算机系统结构的基本概念1. 从使用语言的角度可以将系统看成是按功能划分的多个机器级组成的层次结构;由高到低分别为:1应用语言机器级 2高级语言机器级 3汇编语言机器级 4操作系统机器级 5传统机器语言机器级 6微程序机器级;2. 应用程序语言经应用程序包的翻译成高级语言程序;3. 高级语言程序经编译程序的翻译成汇编语言程序;4.汇编语言程序经汇编程序的翻译成机器语言程序;5.在操作系统机器级,一般用机器语言程序解释作业控制语句;6.传统机器语言机器级,是用微指令程序来解释机器指令;7.微指令由硬件直接执行;8. 在计算机系统结构的层次结构中,机器被定义为能存储和执行相应语言程序的算法和数据结构的集合体;9.透明指的是客观存在的事物或属性从某个角度看不到,它带来的好处是简化某级的设计,带来的不利是无法控制10.翻译:先用转换程序将高一级机器级上的程序整个地变换成底一级机器级上行将的程序,然后在低一级机器级上实现的技术11.解释:在低级机器级上用它的一串语句或指令来仿真高级机器级上的一条语句或指令的功能,通过高级机器语言程序中的每条语句或指令逐条解释来实现的技术;12硬件取舍原则:1应考虑在现有硬器件主要是逻辑器件和存储器件条件下,系统要有高的性能价格比;2要考虑到准备采用和可能采用的组成技术,使它尽可能不要过多或不合理地限制各种组成、实现技术的采用;3不能仅从“硬”的角度考虑如何便于应用组成技术的成果和便于发挥器件技术的进展,还应从“软”的角度把如何为编译和操作系统的实现以及为高级语言程序的设计提供更多更好的硬件支持放在首位;13. 计算机系统的设计思路:1由上往下2由下往上3由中间开始14. 软件的可移植性:指的是软件不修改或只经少量修改就可由一台机器搬到另一台机器上运行,同一软件可应用于不同的环境;15. 实现欠件移植的几个基本技术:1统一高级语言 2采用系列机 3模拟与仿真16. 为什么没有对各种应用真正通用的语言1不同的用途要求语言的语法、语义结构不同;2人们对语言的基本结构看法不一;3即使同一种高级语言在不同厂家的机器上也不能完全通用;4受习惯势力阻挠,人们不愿意抛弃惯用的语言;17 模拟:用机器语言程序解释实现软件移植的方法称为模拟;需经二重解释,速度低,实时性差模拟灵活,可实现不同系统间的软件移植,系统差异太大时效率速度急剧下降18 仿真:用微程序直接解释另一种机器指令系统的方法称为仿真;速度上损失小,但不灵活,只在差别不大的机器上使用,两种机器差别太大时,就很难仿真19 模拟与仿真的区别:仿真是用微程序解释,其解释程序存入在控制存储器中;而模拟是用机器语言程序来解释,其解释程序存放在主存中;20 并行性:把解题中具有可以同时进行运算或操作的特性;并行性包括1同时性和2并发性同时性:指两个或多个事件在同一时刻发生并发性:指两个或多个事件在同一时间间隔内发生21开发并行性途径:1时间重叠 2资源重复 3资源共享时间重叠:让多个处理过程在时间上相互错开,轮流重叠地使用同一套硬件设备的各个部分,加快硬件周围来赢得速度;资源重复:通过得利设置硬件资源来提高可靠性或性能;资源共享:用软件方法让多个用户按一定时间顺序轮流使用同一套资源来提高其利用率,相应也就提高了系统的性能;第二章数据表示与指令系统1.数据表示:指的是能由机器硬件直接识别昨引用的数据类型;2.数据结构反映了应用中要用的各种数据元素或信息单元之间的结构关系; 数据表示是数据结构的组成元素;3.数据结构和数据表示是软、硬件的交界面;数据表示的确定实质是软、硬件的取舍;4.高级数据表示:1自定义数据表示 2微量数组数据表示 3堆栈数据表示5.标志符数据表示:将数据类型和数据本身直接联系到一起;合存于同一存储单元中6.标志符数据表示的优点:1简化了指令系统和程序设计2简化了编译程序3便于实现一至性校验4能由硬件自动变换数据类型5支持了数据库系统的实现与数据类型无关的要求6为软件调试和应用软件开发提供了支持7.标志符数据表示可能带来的问题:1每个数据字因增设标志符,会增加程序所占的主存空间2采用标志符会降低指令的执行速度8.规模机器的特征:(1)有高速寄存器组成的硬件堆栈,并附加控制电路让它与主存中的堆栈区在逻辑上构成整体,使堆栈的访问速度是寄存器,容量是主存的(2)有丰富的堆栈操作指令且功能很强,直接可对堆栈中的数据进行各种去处和处理(3)有力地支持高级语言程序的编译(4)有力地支持子程序的嵌套和递归调用9.引入数据表示的原则:(1)看系统的效率有否提高,即是否减少了实现时间的存储空间(2)看引入这种数据表示后,其通用性和利用率是否高10.浮点数尾数的下溢处理方法:1截值法 2舍入法 3恒置1法 4查表舍入法11.寻址方式:指的是指令按什么方式寻长或访问到所需的操作数或信息;12.寻址方式在指令中的两种指明方式:1 占有操作码中的某些位 2在地址码部分专门设置寻址方式位字段指明13.逻辑地址是程序员编程用的地址;物理地址是程序在主存中的实际地址;14.静态再定位:在目的程序装入主存时,由装入程序用软件方法把目的程序的逻辑地址变换成物理地址15.动态再定位:在执行每条指令时才形成访存物理地址的方法16.指令由操作码和地址码两部分构成;操作码指明操作种类和所用操作数的数据类型;地址码包括操作数的地址、地址的附加信息、寻址方式等;17.指令格式的优化:指的是如何用最短的倍数来表示指令的操作信息和地址信息,使程序中指令的平均字长最短;18.操作码的优化表示,主要是为了缩短指令字长,减少程序总位数及增加指令字能表示的操作信息和地址信息;19.哈夫曼压缩概念的基本思想:当各种事件发生的概率不均等时,采用优化技术对发生概率最高的事件用最短的位数时间来表示处理,而对出现概率较低的,允许用较长的位数时间来表示处理,这样,就会导致表示处理的平均时间的缩短;20.操作码的表示方式通常有下列三种:1固定长度编码法 2哈夫曼编码法 3扩展操作码编码法21.指令系统的设计、发展和改进上的两种不同方向:1CISC 2RISC22.CISC:进一步增强原有指令的功能以及设置更为复杂的新指令取代原先由软子程序完成的功能,实现软件功能的硬化;23.CISC复杂指令系统计算机的优化实现:1 面各目标程序的优化2 面向高级语言的优化3 面向操作系统的优化24.面向目标程序的优化1 对存贮器语言程序及其执行情况进行统计各种指令和指令串的使用频度来加以分析和改进;静态使用频度:对程序中统计出的指令及指令串使用频度着眼于减少目标程序所占用的储存空间动态使用频度:在目标程序执行过程中对指令和指令串统计出的频度着眼于减少目标程序的执行时间2 增设强功能复合指令来取代原先是由常用宏指令或子程序实现的功能,用微程序解释实现;25.面向高级语言优化实现改进尽可能缩短高级语言和机器语言的语义差距,支持高级语言编译,缩短编译程序长度和编译时间1 通过对源程序中各种高级语言语句的使用频度进行统计来分析改进;2 如果面向编译,优化代码生成来改进;3 设法改进指令系统,使它与各种语言间的语义差距都有同等的缩小;4 让机器具有分别面向各种高级语言的多种指令系统、各种系统结构;5 发展高级语言计算机或称高级语言机器26.面向操作系统的优化1 对常用指令和指令串的使用频度进行统计分析来改进;改进指令系统2 考虑如何增设专用于操作系统的新指令;改进指令系统3 把操作系统中频繁使用的对速度影响大的某些软件子程序硬化或固化,改为直接用硬件或微程序解释实现;4 发展让操作系统由专门的处理机来执行的功能分布处理系统结构;27.CISC存在的问题:1 指令系统庞大,一般在200条指令以上;许多指令功能异常复杂;2 由于许多指令的繁杂,执行速度很低;3 指令系统庞大,故高级语言编译程序选择目标指令的范围大太,难以优化生成高效机器语言程序,编译程序也太长太复杂;4 由于指令系统庞大,各种指令的使用频度都不会太高,具差别很大,其中相当一部分指令的利用率很低;28.设计RISC的原则:1 只选择那些使用频度很高的指令,再增加少量其他功能的指令,使之一般不超过100条2 减少指令系统寻址方式各类,一般不超过两种,并让全部指令都是相同的长度;3 让所有指令都在一个机器周期内完成4 扩大通用寄存器数,尽量减少访存;仅存store、取load指令访存,其他指使一律对寄存器操作;5 大多数年指令都用硬联控制实现,少数指令用微程序实现;6 精简指令和优化设计编译程序,简单有效地支持高级语言的实现;29.设计RISC结构用的基本技术:1 按RISC一般原则设计2 逻辑实现用硬联和微程序结合3 用重叠寄存器窗口4 指令用流水和延迟转移5 优化设计编译系统30.采用RISC技术带来的好处:1 简化指令系统设计,适合VLSI实现2 提高机器的执行速度和效率3 设计成本,提高了系统的可靠性4 可直接支持高级语言的实现31.RISC的不足:1 由于指令少,一条CISC指令能完成的某些功能需要多条RISC指令才能完成,加重了汇编各方程序设计的负担,增加了机器语言程序的长度,占用在座空间多,加大了指令的信息流量;2 对浮点去处执行的虚拟存储器的支持虽有很大加强,但仍显不足;3 RISC机器的编译程序比CISC的难写;第三章总线、中断与输入输出系统1.输入输出系统包括输入输出设备、设备控制器及与输入输出操作有关的软硬件2.I/O系统设计主要考虑解决好CPU、主存和I/O设备在速度上的巨大差距;3.输入输出系统发展经历了三个阶段:1程序控制I/O 2直接存储器访问 3I/O处理机方式a.通道 b.外围处理机方式4.总线类型:按信息传送方向分:1单向传输 2双向传输按用法分:1专用 2非专用相关介绍及优缺点见P635.非专用总线总线控制方式:集中式控制:总线控制机构基本上集中在一起; 分布式控制:总线控制逻辑分散在各个部件中 P646.集中式总线控制:1串行链接控制 2定时查询方式 3独立查询方式P647.集中式串行链接式的总线分配过程:1.部件发总线请求;2.总线不忙时,总线控制器返回总线响应总线可用信号;3.没发总线请求信号的部件传送总线响应信号,发的部件截留响应信号;4.截留后,发总线忙状态,撤销请求,开始占用总线;5.传送结束撤销总线忙;6.总线不忙后,撤销总线响应;8.优点: 1.选择算法简单,控制线线数少; 2.部件增加容易,可扩充性好; 3.容易通过重复设置提高可靠性;9.缺点: 1.对“总线可用”线及其有关电路的失效敏感; 2.优先级是线连固定,不灵活; 3.限制了总线的分配速度;10.集中定时查询方式的总线分配过程:1.部件发总线请求;2.总线不忙时,总线控制器的查询计数器开始计数;3.定时查询各部件;4.部件接收计数值,并判断,若与部件号一致,则发总线忙,撤销请求,并占用总线;5.总线控制器收到总线忙,停止计数,停止查询;6.传送结束撤销总线忙;11.优点: 1.优先次序可用程序控制,灵活性强; 2.可靠性高;12.缺点: 1.总线线数较多; 2.部件数受限于定时查询线线数; 3.控制较为复杂; 4.总线分配的速度不能提高;13.集中式独立请求方式的总线分配过程:1.部件发总线请求;2.总线不忙时,按某种算法,发一个总线响应;3.被响应部件发总线忙状态,撤销请求,开始占用总线;4.传送结束,撤销总线忙;5.总线不忙后,撤销总线响应;14.优点:1.总线分配速度快; 2.可用选定的方式确定响应的部件; 3.能方便的隔离失效部件的请求;15.缺点:1.控制线数量过大; 2.总线控制器要复杂的多;16.总线的传送方式分为:1同步通信 2异步通信17.同步通信:两个部件之间的信息传送是通过定宽定距的系统时标进行同步的受同步时钟的控制18.同步通信的优点:信息传送速率高,受总线的长度影响小;19.同步通信的缺点:但会因时钟在总线上的时滞而造成同步误差, 且时钟线上的干扰信号易引起误同步;20.异步通信:用于I/O总线,连接不同速度的I/O设备;又可分为a.单向控制和b.双向请求/回答控制两种1单向控制:指的是通信过程只由目的或源部件中的一个单一控制;单向控制又有源控制和目的控制两种;优点:简单,高速;缺点:未能保证下一数据传送之前让所有数据线和控制线的电平信号恢复成初始状态,从而可能造成错误;2请求/回答双向控制:由源和目共同控制;特点:增加了信号总线来回传送的次数,使控制硬件变得复杂,但它能适应各种不同速度的I/O设备,保证数据传送的正确性,有较高的数据传送率;21.数据宽度:是I/O设备取得I/O总线使用权后在一次I/O总线分配期间内,所传送数据的总量;22.数据通路宽度:数据总线的位数,是数据传送的物理宽度;即一个时钟周期所传送的信息量,它直接取决于数据总线的线数;23.总线的线数越多,成本越高、干扰越大、可靠性越低、占用的空间也越大,当然传送速度和流量也越高;为此,越是长的总线,其线数就应尽可能减少;24.减少线数的方法:1同一根线多个功能复用; 2并/串—串/并转换 3编码25.中断源:引起中断的各种事件; 中断请求:中断源向中断系统发出请求中断的申请; 中断响应:允许中断请求中断CPU现行程序的运行,转去对该请求进行预处理,包括保存好断点现场,调出有关处理该中断的中断处理程序,准备运行;26.中断分类的目的:中断源数量很多,若形成单独入口,硬件复杂,代价大,故进行分类,把性质相近的中断源归为一类;同一类中断共用一个中断入口地址,再由软件形成实际入口地址;27.中断的分类:1机器校验中断第一级:设备故障,电源故障,主存出错;2管理程序调用访管中断第二级:访管指令;3程序性中断第二级:溢出,除数为零,数据格式错;4外部中断第三级:定时器,外部信号;5输入/输出中断第四级:I/O请求;6重新启动中断第五级:启动另一个程序;28.中断分级的目的:解决多个中断请求同时发生时的响应次序问题;29.分级原则: 1同一类的优先次序由软件管理一般情况下,同类同级,不同类不同级2不同类的中断根据中断的轻重缓急分成不同的级别;30.中断嵌套原则: 1禁止同级或低级中断; 2允许高级中断;31.中断响应次序和处理次序中断响应次序用排队器硬件实现,次序是由高到低定死的,但可以根据需要用软件改变实际的中断处理完次序简称中断处理次序;中断级屏蔽位的作用:决定某级中断请求能否进入排队器只要能进入,还是按上面讲的优先级次序由高到底响应中断中断响应次序由硬件定死;而处理次序由中断屏蔽位决定;32.中断系统的功能包括:中断请求的保存与清除,确定优先级,保护断点,保护现场,中断源分析,中断处理,中断返回等;33.中断系统的软、硬件功能分配实质是中断处理程序软件和中断响应硬件的功能分配;34.中断系统的软件与硬件的功能分配主要考虑如下两个因素:1中断响应时间 2灵活性;35.通道的功能:1接受CPU的输入输出操作指令,按指令要求控制外设接受指令2从主存读取通道程序,并执行即向设备控制器发送各种指令执行程序3组织和控制数据在内存与外设之间的传送操作传送数据4读取外设的状态信息,形成整个通道的状态信息,提供给CPU或保存在主存中通道状态5向CPU发出输入输出操作中断请求中断请求36.通道的工作过程:1用户在目态中安排广义I/O指令;包括访管指令和参数2当目态程序执行到访管指令后,产生访管中断;3CPU响应中断,第一次访管态,运行管态程序;4管理程序编制通道程序;根据参数:设备号、主存地址、信息长度等通道程序放在主存中,由通道执行5执行“启动I/O”指令:选择通道,校验第一条通道指令格式,选择设备并启动通道及设备;6通道启动后,<1>CPU退出管态,运行目态程序;<2>通道与设备开始传送数据;7通道传送结束后,向CPU发I/O中断;8CPU 响应中断,第二次转管态,对刚才的通道作“善后”处理;9返回目态,运行目态程序;37. 通道的种类:(1) 字节多路通道:适用于大量的像光电机等字符类低速设备;数据宽度:单字节多设备交叉(2) 数组多路通道:适合于连接多台像磁盘等调整设备;数据宽度:定长块多设备交叉(3) 选择通道:适合于优先级高的磁盘等调整设备,让它独占通道,只执行一台通道程序;数据宽度:可变长块独占38. 通道流量:通道在数据传送期内,单位时间内传送的字节数字节传输速率;它能达到的最大流量称通道极限流量;重要参数: TS : 选择一次设备的时间; TD :传送一个字节的时间; K :定长块的字节长度; N :传送的全部字节个数;39. 通道极限流量:字节多路通道:f max ·byte = 1/TS+TD 每选择一台设备,只传送一字节 数组多路通道:f max ·block = K/TS+K ·TD= 1/TS/K+TD 每选择一台设备,传送定长K 字节 选择通道: f max ·select = N/TS+N ·TD= 1/TS/N+TD显然,若通道的TS 、TD 一定, 且N>K 时,字节多路方式工作时所能达到的极限流量最小,数组多路方式工作的居中, 选择方式工作的最大;40. 如果通道上所挂p 设备都被启动,则设备对通道要求的的实际最大流量分别为:字节多路通道应为该通道所接各设备的字节传送速率之和, 即而对于其他两种类型的通道应为所接各设备的字节传送速率中之最大的那个, 即41. 保证第j 号通道上所挂的设备在满负荷的最坏情况下都不丢失信息的条件: 设备最大流量 <= 极限流量 ∑=⋅⋅=j p i j i j byte f f 1。
1-3-4-5计算机组成原理课后习题答案

第一章计算机系统概论习题答案1、答:计算机系统由硬件和软件两大部分组成。
硬件即指计算机的实体部分,它由看得见摸的着的各种电子元器件,各类光电、机设备的实物组成,如主机、外设等。
软件时看不见摸不着的,由人们事先编制成具有各类特殊功能的信息组成,用来充分发挥硬件功能,提高机器工作效率,便于人们使用机器,指挥整个计算机硬件系统工作的程序集合。
软件和硬件都很重要。
2、答:从计算机系统的层次结构来看,它通常可有五个以上的不同级组成,每一个上都能进行程序设计。
由下至上可排序为:第一级微程序机器级,微指令由硬件直接执行;第二级传统机器级,用微程序解释机器指令;第三级操作系统级,一般用机器语言程序解释作业控制语句;第四级汇编语言机器级,这一级由汇编程序支持和执行;第五级高级语言机器级,采用高级语言,由各种高级语言编译程序支持和执行,还可以有第六级应用语言机器级,采用各种面向问题的应用语言。
3、答:机器语言由0、1代码组成,是机器能识别的一种语言。
汇编语言是面向机器的语言,它由一些特殊的符号表示指令,高级语言是面向用户的语言,它是一种接近于数学的语言,直观,通用,与具体机器无关。
4、答:计算机组成是指如何实现计算机体系结构所体现的属性,它包含了许多对程序员来说是透明的硬件细节。
计算机体系结构是指那些能够被程序员所见到的计算机系统的属性,即概念性的结构与功能特性,通常是指用机器语言编程的程序员所看到的传统机器的属性,包括指令集、数据类型、存储器寻址技术、I/O机理等等,大都属于抽象的属性。
5、答:特点是:(1) 计算机由运算器、存储器、控制器和输入设备、输出设备五大部件组成(2) 指令和数据以同等的地位存放于存储器内,并可以按地址寻访(3) 指令和数据均可以用二进制代码表示(4) 指令由操作码和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数所在存储器中的位置(5) 指令在存储器内按顺序存放。
通常,指令是顺序执行的,在特定情况下,可根据运算结果或根据设定的条件改变执行顺序(6) 机器以运算器为中心,输入输出设备与存储器的数据传送通过运算器。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//代码段二 #include <stdio.h> int main() { double x=1.0, y=-1.0, z=0.0; printf ("Division by zero:%f%f\n", x/z, y/z); return 0; }
解释
从通用概念来说,除0本来就是不允许的, 即使允许,它的值也应该是无穷大。 int值采用的补码通用表示法,使得它 表示的整数范围有限,无法表示无穷 大这一概念; 而根据IEEE浮点表示法,有正无穷和 负无穷的表示,即指数全1和尾数全0, 所以可以不报错,而从得到的结果正 负无穷来指示结果出错。
舍入
现在来看一下本题中的数据: 1234567890=(01001001100101100000001011010010)2 = 1.001001100101100000001011010010 * 230
双精度浮点型浮点格式:
63 62 52 0
s
exp
frac
由 于 double 的 尾 数 位 有 52 位 , 因 此 double 类 型 可 以 精 确 表 示 1234567890,所以打印结果为1234567890.000000
简而言之,如果遇到 #INF / inf,就检查 是否发生了运算结果溢出除零。
Gdb调试 – 代码段一
不能执行return 0, 说明程序异常中断
重启动标志RF用来控制是否接受 调试故障。规定:RF=0时,表示 “接受”调试故障,否则拒绝之。 在成功执行完一条指令后,处理 机把RF置为0,当接受到一个非调 试故障时,处理机就把它置为1。
运行结果: -2147483648
运行结果: 程序结束
整数的除运算
这两个结果或许大家都感到很诧异,下面我们通 过汇编代码来研究到底发生了什么 Linux下两段代码运行情况: 代码一:
程序在汇编中解释为neg(取反) Tmin取反后还是其本身,不会 溢出
整数的除运算
neg:
NEG是汇编指令中的求补指令,NEG指令对操作数执 行求补运算:用零减去操作数按位取反后 加1。
10.010舍入后值为10.0
10.110舍入后值为11.0
舍入
现在来看一下本题中的数据: 1234567890=(01001001100101100000001011010010)2 = 1.001001100101100000001011010010 * 230
单精度浮点型浮点格式:
31 30 23 22 0
s
exp
frac
此时阶码E=30,在float表示范围之内,符号位为0。 由于float型尾数只有23位,而这里要表示的数尾数有30位,因 此需要舍入到二进制小数点右边23位,显然后7为1010010是大 于两个可能结果正中间的值,因此直接在小数点后第23位进一 位即可。 舍入后结果为1.00100110010110000000110 又1.00100110010110000000110 x 230=1234567936(即打印结果)
Gdb调试 – 代码段二
执行return 0,说明 程序没有异常中断
没有出现标志位RF。
03.浮点数舍入问题
例:将同一实数分别赋值给单精度和双精度类型变量, 然后打印输出。 #include <stdio.h> main(){ float a; double b; a = 123456.789e4; b = 123456.789e4; printf(“%f/n%f/n”,a,b);
格式:NEG OPR 执行的操作:(OPR)<-- —(OPR) 亦即把操作数按位求反后末位加1,因而执行的操作也可表示为: (OPR)<-- 0FFFFH — (OPR) + 1 NEG指令对标志的影响与用零作减法的SUB指令一样。
整数的除运算
这两个结果或许大家都感到很诧异,下面我们通 过汇编代码来研究到底发生了什么 Linux下两段代码运行情况: 代码二:
程序在汇编中解释为idivl(除法) Tmin/-1 = TMax+1,发生溢出, 程序中断。
整数的除运算
idivl:
idivl S R[%edx] = R[%edx]:R[%eax] % S; R[%eax] = R[%edx]:R[%eax] / S; 有符号除法,保存余数和商
divl:
divl S R[%edx] = R[%edx]:R[%eax] % S; R[%eax] = R[%edx]:R[%eax] / S; 无符号除法,保存余数和商
}
运行结果如下: 1234567936.000000 1234567890.000000 问题:为什么同一个实数赋值给float型变量和double型变 量,输出结果会有所不同呢?
舍入
由于表示方法限制了浮点数的范围和精度,浮点运算只能近似地 表示实数运算。因此对于某一值x,我们想要用一种系统的方法,用浮点形 式表示最接近的值,这就是舍入。 向偶数舍入是默认的方式,也被称为最接近的值的舍入。其采取 的方法是对于两个可能结果正中间的值,将数字向上或者向下舍入,使得 结果的最低有效数字是偶数,在二进制表示中最低有效位的值0认为是偶 数,1认为是奇数。 例如舍入到二进制小数点右边1位。
程序及数据的机器级表示
第三组 樊朝辉 孙懿 黄杰 任成琨 黄章冠 潘鑫 王嘉琦 杨玉茹
目录
CONTENTS
1 2 3
整数的除运算
整数除0和浮点数除0的问题
浮点数舍入问题
01.整数的除运算
针对下列两个小程序,给出运行结果,并解释为什么? 利用你所掌握的反汇编调试工具,佐证你的观点。
代码段一: int a = 0x80000000; int b = a / -1; printf("%d\n", b); 代码段二: int a = 0x80000000; int b = -1; int c = a / b; printf("%d\n", c);
整数的除运算
这两个结果或许大家都感到很诧异,下面我们通 过汇编代码来研究到底发生了什么 Linux下两段代码运行情况: 代码二:
将断点设置在除法进行的地方, 调试如图所示,抛出异常,程 序终止
02.整数除0和浮点数除
0的问题
代码示例
运行结果
运行结果
//代码段一 #include <stdio.h> int main() { int a=1, b=0; printf ("Division by zero:%d\n", a/b); return 0; }
浮点数中的INF
#INF / inf:这个值表示“无穷大 (infinity 的缩写)”,即超出了计算机可以 表示的浮点数的最大范围(或者说超过了 double 类型的最大值)。
例如,当用 0 除一个整数时便会得到一个 #INF / inf值;相应的,如果用 0 除一个 负整数也会得到 -#INF / -inf 值。