版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 计算机组成原理 当用计算机解决某个问题时,我们首先必须为它 编写程序。从上一章知道,程序是一个指令序列, 这个序列明确告诉计算机应该执行什么操作,在 什么地方找到用来操作的数据。一旦把程序装入 内存储器,就可以由计算机来自动完成取出指令 和执行指令的任务。专门用来完成此项工作的计 算机部件称为中央处理器,通常简称CPU。 计算机组成原理 作为控制并执行指令的部件,CPU对整个计算机 系统的运行是至关重要的 不仅要与计算机的其他功能部件进行信息交换 还要控制这些功能部件的操作 CPU工作过程 编写程序,把程序同数据预先保存到主存储器中 计算机工作时, 按顺序逐条取出指令,分析指令,执行指令 自
2、动转到下一条指令 计算机一条一条地执行指令,实现预先设计的程序控制, 直到程序规定的任务完成为止 1)程序控制 2)操作控制 3)时间控制 4)数据加工 程序控制就是控制指令的执行顺序 程序是指令的有序集合 指令的相互顺序不能任意颠倒,必须严格按照程序规定 的顺序执行 保证计算机按一定顺序执行程序是CPU的首要任 务 操作控制就是控制指令进行操作 一条指令的功能往往由若干个操作信号的组合来 实现 CPU管理并产生每条指令的操作信号 把各种操作信号送往相应的部件 从而控制这些部件按指令的要求进行操作 时间控制就是对各种操作实施定时控制 因为在计算机中,各种指令的操作信号均受到时间的严格定 时。另
3、一方面,一条指令的整个执行过程也受到时间的严格 定时。 只有这样,计算机才能有条不紊地工作 数据加工就是对数据进行算术和逻辑运算 完成数据的加工处理,是CPU的根本任务 传统上,CPU由控制器和运算器这两个主要部件 组成 新型CPU集成了一些原先置于CPU之外的分立功能部件 如浮点处理器、高速缓存(Cache)等 大大提高CPU性能指标,也使得CPU的内部组成日益复杂 化 控制器是整个计算机系统的指挥中心 在控制器的指挥控制下,运算器、存储器和输入/输出 设备等部件协同工作,构成一台完整的通用计算机 控制器根据程序预定的指令执行顺序, 从主存取出一条指令, 按照该指令的功能,用硬件产生带有时序
4、标志的一系列 微操作控制信号 控制计算机内各功能部件的操作 协调和指挥整个计算机实现指令的功能 控制器的组成 程序计数器(PC)、指令寄存器(IR)、指令译码器 (ID)、时序发生器、操作控制器 控制器的主要功能 从主存中取出一条指令,并指出下一条指令在主存中的位置 对指令进行译码,并产生相应的操作控制信号,以便启动规 定的动作 指挥并控制CPU、主存和输入/输出设备之间数据流动的方 向 运算器是计算机中用于实现数据加工处理功能的部件 接受控制器的命令,完成对操作数据的加工处理任务 其核心部件是算术逻辑单元ALU 相对控制器而言,运算器接受控制器的命令而进行动 作 即运算器所进行的全部操作都是
5、由控制器发出的控制信号来 指挥的 所以是执行部件 运算器的组成 算术逻辑单元(ALU)、累加寄存器(AC)、数据寄存 器(DR)、程序状态字寄存器(PSW) 运算器主要功能 执行所有的算术运算 执行所有的逻辑运算,并进行逻辑测试 三、CPU中的主要寄存器 各种计算机的CPU可能有这样或那样的不同,但是在 CPU中至少要有六类寄存器,如上图所示。 这些寄存器是: (1)指令寄存器(IR); (2)程序计数器(PC); (3)地址寄存器(AR); (4)缓冲寄存器(DR);(5)累加寄存器(AC); (6)状态条件寄存器(PSW)。 上述这些寄存器用来暂存一个计算机字。根据需要, 可以扩充其数目。
6、下面详细介绍这些寄存器的功能与 结构。 数据寄存器(Data Register,DR)又称数据缓冲寄存器 其主要功能是作为CPU和主存、外设之间信息传输的中转站 用以弥补CPU和主存、外设之间操作速度上的差异 数据寄存器用来暂时存放由主存储器读出的一条指令或一个数 据字 当向主存存入一条指令或一个数据字时,也将它们暂时存放在 数据寄存器中 数据寄存器的作用 作为CPU和主存、外围设备之间信息传送的中转站 弥补CPU和主存、外围设备之间在操作速度上的差异 在单累加器结构的运算器中,数据寄存器还可兼作操作数寄存器 指令寄存器(Instruction Register,IR)用来保存当前正在 执行的
7、一条指令 当执行一条指令时, 首先把该指令从主存读取到数据寄存器中 然后再传送至指令寄存器 指令译码器(Instruction Decoder,ID) 对操作码进行测试,识别出所要求的操作 对指令寄存器的操作码部分进行译码,以产生指令所要求操作的控制 电位,并将其送到微操作控制线路上 在时序部件定时信号的作用下,产生具体的操作控制信号 指令寄存器中操作码字段的输出就是指令译码器的输入 操作码一经译码,即可向操作控制器发出具体操作的特定信号 程序计数器(Program Counter,PC)用来指出下一条 指令在主存储器中的地址 在程序执行之前, 首先必须将程序的首地址,即程序第一条指令所在主存
8、单元的地 址送入PC 因此PC的内容即是从主存提取的第一条指令的地址 当执行指令时, CPU能自动递增PC的内容,使其始终保存将要执行的下一条指令 的主存地址,为取下一条指令做好准备 若为单字长指令,则(PC)+1PC 若为双字长指令,则(PC)+2PC,以此类推 当遇到转移指令时,下一条指令的地址将由转移指令的地址码字 段来指定 程序计数器具有寄存信息和计数两种功能 地址寄存器(Address Register,AR)用来保存 CPU当前所访问的主存单元的地址 由于在主存和CPU之间存在操作速度上的差异,必须 使用地址寄存器来暂时保存主存的地址信息,直到主 存的存取操作完成为止 当CPU和主
9、存进行信息交换时,都要使用地址寄存器 和数据寄存器 如果把外围设备与主存单元进行统一编址,那么,当 CPU和外围设备交换信息时,同样要使用地址寄存器 和数据寄存器 累加寄存器通常简称累加器(Accumulator, AC),是一个通用寄存器 累加器的功能 当运算器的算术逻辑单元ALU执行算术或逻辑运算时, 为ALU提供一个工作区,可以为ALU暂时保存一个操作 数或运算结果 显然,运算器中至少要有一个累加寄存器 程序状态字(Program Status Word,PSW)用来 表征当前运算的状态及程序的工作方式 程序状态字寄存器 用来保存由算术/逻辑指令运行或测试的结果所建立起来的 各种条件码内
10、容 如运算结果进/借位标志(C)、运算结果溢出标志(O)、运算结 果为零标志(Z)、运算结果为负标志(N)、运算结果符号标志 (S)等 这些标志位通常用1位触发器来保存 还用来保存中断和系统工作状态等信息 以便CPU和系统及时了解机器运行状态和程序运行状态 程序状态字寄存器是一个保存各种状态条件标志的寄 存器 四、操作控制器与时序产生器 从上面叙述可知,CPU中的6类主要寄存器,每一 个完成一种特定的功能。然而信息怎样才能在各寄 存器之间传送呢?也就是说,数据的流动是由什么部 件控制的呢? 微操作(Microoperation) 控制器在实现一条指令的功能时,总是把每一条指令分 解成时间上先后
11、有序的一系列最基本、最简单、不可再 分的操作控制动作 这种最基本、最简单、不可再分的操作称为微操作 数据通路(Data Path) 通常把许多寄存器之间传输信息的通路称为数据通路 控制信息从什么地方开始,中间经过哪个寄存器或多路开关, 最后传送到哪个寄存器 在数据通路中, 微操作通过自身的控制作用和彼此之间的密切配合,使指令 流、数据流等信息流按照预定的路径流动,以实现指令的功 能 每一条指令的功能决定了它所需要的一系列带时序的微操作 信号 在各寄存器之间建立数据通路的任务,是由称为操作 控制器的部件来完成的。操作控制器的功能,就是根 据指令操作码和时序信号,产生各种操作控制信号, 以便正确地
12、建立数据通路,从而完成取指令和执行指 令的控制。 控制器的基本功能是负责指令的读出、识别和解释, 并指挥协调各功能部件执行指令 操作控制器是CPU中完成取指令和执行指令全过程的 部件 其主要功能是根据指令操作码和时序信号的要求,产生各种 操作控制信号 以便在各寄存器之间正确地建立数据通路,从而完成取指令 和执行指令的控制 根据设计方法不同,操作控制器可分为组合逻辑 控制器和微程序控制器两种 二者的区别在于其中的控制信号形成部件不同,进而反 映出不同的设计原理和方法 根据使用器件的不同,组合逻辑控制器又可进一步细分 为硬连线控制器和门阵列控制器 CPU中除了操作控制器外,还必须包括时序发生 器
13、由于计算机的高速工作,每一个动作的时间必须 非常严格,不能有任何差错 时序发生器的作用 对操作控制器产生的各种控制信号实施时间上的严格控 制 产生各功能部件所需要的定时控制信号 下图示出了微程序控制器中使用的时序信号产生器 的结构图 时钟源用来为环形脉冲发生器提供频率稳定且电平 匹配的方波时钟脉冲信号。它通常由石英晶体振 荡器和与非门组成的正反馈振荡电路组成,其输 出送至环形脉冲发生器。 环形脉冲发生器的作用是产生一组有序的间隔 相等或不等的脉冲序列,以便通过译码电路来产 生最后所需的节拍脉冲。 为了在节拍脉冲上不带干扰毛刺,环形脉冲发 生器通常采用循环移位寄存器形式。下图示出了 一种典型的环
14、形脉冲发生器及其译码逻辑。 我们假定时钟源输出5MHz(脉冲宽度200ns)的时钟信号。 当CPU发生出总清零信号( )使触发器C4置“1时,门3 打开,第一个正脉冲通过门3触发器C1C3清“0”。 经过半个主脉冲周期(100ns)的延迟,触发器C4由“1” 状态翻到“0”状态,再经过半个主脉冲周期的延迟后, 第二个正脉冲的上升沿(即第一个 的后沿)作移位信号, 使触发器C1C3变为“100”状态。此后,第二个 、第 三个 连续通过门2形成移位信号,使C1C3相继变为 “110”,“111”状态,其过程如下图所示。 在上面的环形脉冲发生器与译码逻辑图中的上半部示出了 节拍脉冲和读/写时序的译码
15、逻辑。我们假定在一个CPU 周期中产生四个等间隔的节拍脉冲,那么其译码逻辑可表 示为: 节拍脉冲T10T40的脉冲宽度均为200ns,因此一个CPU 周期便是800ns,在下一个CPU周期中,它们又按固定 的时间关系,重复T10,T20,T30,T40的先后次序,以 供给机器工作所需的原始节拍脉冲。 计算机组成原理 读/写时序信号的译码逻辑表达式为: 其中RD,WE和MREQ信号配合后进行存储的 读/写操作; 而RD,WE和IORQ信号配合后配合后可进 行外围设备的读/写操作。表达式右边带撇号的 RD,WE,MREQ,IORQ是来自微程序控 制器的控制信号,它们都是持续时间为一个CPU 周期的
16、节拍电位信号。这就是说,读/写时序信号 RD,WE,MREQ,IORQ是受到控制的, 它们只有在等式右边带撇号的控制信号有效后才 能产生,而不像节拍脉冲T10T40那样,一旦加 上电源后就会自动产生。 机器一旦接通电源,就会自动产生原始的节拍脉 冲信号T10T40,然而,只有在启动机器运行的 情况下,才允许时序产生器发出CPU工作所需的 节拍脉冲T1T4。为此需要由启停控制逻辑来控 制T10T40的发送。同样,对读/写时序信号也 需要由启停逻辑加以控制。下图给出的启停控制 逻辑,它是一个实用有效的工具性电路。 启停控制逻辑的核心是一个运行标志触发器Cr。 当运行触发器为“1”时,原始节拍脉冲T
17、10T40 和读/写时序信号RD,WE,MREQ通过门电 路发送出去,变成CPU真正需要的节拍脉冲信号 T1T4和读/写。反之,当运行触发器“0”时, 就关闭时序产生器。 由于启动计算机是随机的,停机也是随机的,为 此必须要求:当计算机启动时,一定要从第一个 节拍脉冲前沿开始工作,而在停机时一定要在第 四个节拍脉冲结束后关闭时序产生器。只有这样, 才能使发送出去的脉冲都是完整的脉冲。上图中, 在Cr(D触发器)下面加上一个RS触发器,且用 信号作Cr触发器的时钟控制端,那么就可以保证 在T1的前沿开启时序产生器,而在T4的后沿关闭 时序产生器。 计算机组成原理河北经贸大学 信息技术学院 2.
18、80386结构及外部连线 Intel 80386包括指令部件、执行部件和存储管理部 件等。指令部件完成取指及指令译码功能,并产生 控制信号;执行部件包括ALU、乘法部件、寄存器 组等;存储管理部件用来确定存储器地址。 CPU的基本工作是执行预先存储的指令序列(即 程序) 程序的执行过程实际上是不断地取出指令、分析 指令、执行指令的过程 CPU从存放程序的主存储器里取出一条指令 译码并执行这条指令 保存执行结果 紧接着又去取指令,译码,执行指令 如此周而复始,反复循环,使得计算机能够自动地工作 除非遇到停机指令,否则这个循环将一直进行下去 1取指令阶段 2指令译码阶段 3执行指令阶段 4访存取数
19、阶段 5结果写回阶段 几乎所有的冯诺伊曼型计 算机的CPU,其工作都可 以分为5个阶段 取指令 指令译码 执行指令 访存取数 结果写回 指令的执行过程 取指令(Instruction Fetch,IF)阶段是将一 条指令从主存中取到指令寄存器的过程 程序计数器PC中的数值,用来指示当前指令在主 存中的位置 当一条指令被取出后,PC中的数值将根据指令字长度 而自动递增: 若为单字长指令,则(PC)+1PC; 若为双字长指令,则(PC)+2PC,依此类推 取出指令后,计算机立即进入指令译码 (Instruction Decode,ID)阶段 在指令译码阶段, 指令译码器按照预定的指令格式,对取回的
20、指令进行拆 分和解释,识别区分出不同的指令类别以及各种获取操 作数的方法 在组合逻辑控制的计算机中, 指令译码器对不同的指令操作码产生不同的控制电位, 以形成不同的微操作序列 在微程序控制的计算机中, 指令译码器用指令操作码来找到执行该指令的微程序的 入口,并从此入口开始执行 在传统的设计里,CPU中负责指令译码的部分是 无法改变的 在众多运用微程序控制技术的新型CPU中,微程 序有时是可重写的,可以通过修改成品CPU来改 变CPU的译码方式 在取指令和指令译码阶段之后,接着进入执行指 令(Execute,EX)阶段 完成指令所规定的各种操作 具体实现指令的功能 为此,CPU的不同部分被连接起
21、来,以执行所需 的操作 例如,如果要求完成一个加法运算, 算术逻辑单元ALU将被连接到一组输入和一组输出 输入端提供需要相加的数值 输出端将含有最后的运算结果 根据指令需要,有可能要访问主存,读取操作数, 这样就进入了访存取数(Memory,MEM)阶段 根据指令地址码,得到操作数在主存中的地址 从主存中读取该操作数用于运算 作为最后一个阶段,结果写回(Writeback, WB)阶段把执行指令阶段的运行结果数据“写 回”到某种存储形式: 结果数据经常被写到CPU的内部寄存器中,以便被后续 的指令快速地存取 在有些情况下,结果数据也可被写入相对较慢、但较廉 价且容量较大的主存 许多指令还会改变
22、程序状态字寄存器中标志位的状态 标识不同的操作结果,可被用来影响程序的动作 在指令执行完毕、结果数据写回之后,若无意外 事件(如结果溢出等)发生, 计算机就接着从程序计数器PC中取得下一条指令地址, 开始新一轮的循环,下一个指令周期将顺序取出下一条 指令 许多新型CPU可以同时取出、译码和执行多条指 令,体现并行处理的特性 我们知道,指令和数据均放在内存里。从形式上 看,它们都是二进制代码,所以对人来说,很难 区分出这些代码是指令还是数据。然而CPU却能 识别这些二进制代码:它能准确地判别出哪些是 指令字,哪些是数据字,并将它们送往相应的地 方。本节我们将讨论在一些典型的指令周期中, CPU的
23、各部分是怎样工作的,从而能加深对这一 问题的理解和体验。 计算机所以能自动地工作,是因为CPU能从存放 程序的内存里取出一条指令并执行这条指令;紧接 着又是取指令,执行指令,如此周而复始, 构成了一个封闭的循环。除非遇到停机指令,否则 这个循环将一直继续下去,其过程如下图所示。 动画 CPU每取出并执行一条指令,都要完成一系列的操作,这一 系列操作所需的时间通常叫做一个指令周期。更简单地说, 指令周期是取出并执行一条指令的时间。由于各种指令的操 作功能不同,有的简单,有的复杂,因此各种指令的指令周 期是不尽相同的。例如,一条访内指令的指令周期,同一条 非访内指令的指令周期是不相同的。 指令周期
24、常常用若干个CPU周期数来表示,CPU周期也称为 机器周期。由于CPU内部的操作速度较快,CPU访问一次内 存所花的时间较长,因此通常用内存中读取一个指令字的最 短时间来规定CPU周期。这就是说,一条指令的取出阶段 (通常称为取指)需要一个CPU周期时间。而一个CPU周期时 间又包含有若干个时钟周期(通常称为节拍脉冲或T周期,它 是处理操作的最基本单位)。这些时钟周期的总和则规定了一 个CPU周期的时间宽度。 取出和执行任何一条指令所需的最短时间为两个 CPU周期。就是说,任何一条指令,它的指令周期 至少需要两个CPU周期,而复杂一些的指令周期, 则需要更多的CPU周期。但必须指出,对CPU周
25、期 的规定在各种计算机中不尽相同。下表列出了由五 条指令组成的一个简单程序。 这五条指令是有意安排的,因为它们是非常典型的。 其中CLA指令是非访内指令,ADD指令和STA指令 是访内指令,NOP指令也是一条非访内指令,而 JMP指令则是程序控制指令。我们将在下面通过 CPU执行这一程序的过程,或者说通过每一条指令 取指阶段与执行阶段的分解动作,来具体认识每一 条指令的指令周期 非访内指令的指令周期 CLA是一条非访内指令,其指令周期如下图所示。 它需要两个CPU周期,其中取指令阶段需要一个 CPU周期,执行指令阶段需要一个CPU周期。 在第一个CPU周期,即取指令阶段,CPU完成三件 事:(
26、1)从内存取出指令;(2)对程序计数器PC加 1,以便为取下一条指令做好准备;(3)对指令操作 码进行译码或测试,以便确定进行什么操作。 在第二个CPU周期,即执行指令阶段,CPU根据对 指令操作码的译码或测试,进行指令所要求的操作。 对非访内指令来说,执行阶段通常涉及到累加器的 内容,如累加器内容清零、累加器内容求反等操作。 显然,其他一些零地址格式的指令,执行阶段一般 也仅需要一个CPU周期。 1. 取指令阶段 我们假定上表的程序已装入内存中,因而在此阶段内,CPU 的动作如下: 程序计数器PC的内容20(八进制)被装入地址寄存器AR; 程序计数器内容加1,变成21,为取下一条指令做好准
27、备; 地址寄存器的内容被放到地址总线上; 所选存储器单元20的内容经过数据总线,传送到数据缓 冲寄存器DR; 缓冲寄存器的内容传送到指令寄存器IR; 指令寄存器中的操作码被译码或测试; CPU识别出是指令CLA,至此,取指令阶段即告结束。 指令周期示意图 2. 执行指令阶段 在此阶段,CPU的动作如下: 操作控制器送一控制信号给算术逻辑运算单元 ALU; ALU响应该控制信号,将累加寄存器AC的内容 全部清零,从而执行了CLA指令。 三、直接访内指令的指令周期 程序的第二条指令是ADD指令,这是一条访问内存取数 并执行加法的指令。 其中第一个CPU周期为取值指令阶段,它的过程完全与 CLA指令
28、相同。执行指令阶段由两个CPU周期组成:其 中在第二个CPU周期中将操作数的地址送往地址寄存器并 完成地址译码,而在第三个CPU周期从内存取出操作数并 执行相加的操作。我们看到,取出第一条指令CLA时,程 序计数器的内容已经加1变成21,这正好是存放“ADD 30”指令的内存单元。这样,当从内存取第2条指令时, 取指令阶段的过程和数据通路完全与第一条指令相同。我 们就不讨论ADD指令的第一个CPU周期即取指令阶段, 我们从第二个CPU周期开始来讨论这条指令的执行阶段。 假定第一个CPU周期结束时,指令寄存器中已经存放好 ADD指令并进行译码测试,同时,程序计数器内容又加1, 变为22,为取第三
29、条指令做好准确。 1. 送操作数地址 第二个CPU周期主要完成送操作数地址,其数据通路 示于下图中。在此阶段,CPU的动作只有一个,那就 是把指令寄存器中的地址码部分(30)装入地址寄存器, 其中30为内存中存放操作数的地址。 2. 两操作数相加 第三个CPU周期主要完成取操作数并执行加法操 作,在此阶段,CPU完成如下动作: (1) 把地址寄存器中的操作数的地址(30)发送 到地址总线上。 (2) 由存储器单元30中读出操作数(6),并经 过数据总线传送到缓冲寄存器。 (3) 执行加操作:由数据缓冲寄存器来的操作 数(6)可送往ALU的一个输入端,已等候在累加 器内的另一个操作数(因为CLA
30、指令执行结果现 累加器内容为零)送往ALU的另一输入端,于是 ALU将两数相加,产生运算结果为0+66。 这个结果放回累加器,替换了累加器中原先的数 0。 间接访问内存指令的指令周期 程序的第三条指令是“STA 31指令,这是一条间 接访问内存的存数指令。 其中第一个CPU周期仍然是取指令阶段,其过程和 CLA指令、ADD指令完全一样,不同的是此阶段中 程序计数器加1后变为23,因而为取第四条指令做好 了准备。我们假定,第一个CPU周期结束后, “STA i 31”指令已放入指令寄存器并完成译码测试。 所以下面我们仍不讨论第一个CPU周期,而讨论从第 二个CPU周期开始的指令执行阶段的各个操作。 1. 送操作数地址 在执行阶段的第一个CPU周期中,CPU完成的动作 是,把指令寄存器中地址码部分的形式地址31装到 地址寄存器。其中数字31是操作数地址的地址。 2.取操作数地址 cpu完成从内存中取出操作数地址,然后把操作数 地址存入地址寄存器 3. 存储和数 执行阶段的第三个CPU周期中,累加寄存器的内容 传送到缓冲寄存器,然后再存入到所选定的存储单 元(40)中 第一个CPU周期仍然是取指令阶段,CPU把23号单元 的“JMP 21”指令取
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年劳动法修订:试用劳动合同
- 2024年农产品购销大豆合同
- 2024年个性化离婚协议书:根据需求定制正规有效
- 2024年全面水暖施工协议
- 2024年修订版基坑支护分包协议
- 2024年学院教务管理聘用合同
- 2024年商业信息传递补偿协议
- 2024年京东店铺风险控制托管合同
- 2024年定制:股权回购协议模板
- 2024年工程使用:废旧拆除合同样本
- DL∕T 1475-2015 电力安全工器具配置与存放技术要求
- 投诉法官枉法裁判范本
- 密封条范文模板(A4打印版)
- 辛亥革命(共16张PPT)
- 班前安全技术交底记录表
- 七年级上册数学期中考试试题(含答案)
- 纸品配送服务方案纸品采购项目方案
- 船舶管理之—船舶防污染
- 交互语义学探究
- 家庭农场项目建设方案3篇
- 爆破施工工艺流程图
评论
0/150
提交评论