1. 计算机组成与体系结构

也许有人认为系统架构设计师不需要硬件或计算机底层原理的知识。因为这个层面的一些处理往往已经封装好,不需要架构师重新进行规划。然而,事实并非如此系统构建于硬件与操作系统之上,如果我们不对计算机底层原理有一定认识,会导致一系列安全与性能问题。

将从计算机的组成计算机的指令系统存储系统等方面展开论述

1.1. 计算机系统组成

计算机系统是一个硬件和软件的综合体,可以把它看成按功能划分的多级层次结构

1.1.1. 计算机硬件的组成

硬件通常是指一切看得见,摸得到的设备实体原始的冯•诺依曼(VonNeumann)计算机结构上是以运算器为中心的,而发展到现在,已转向以存储器为中心了。下图所示为计算机最基本的组成框图。

1.1.1.1. 组成内容

  1. 控制器。控制器是分析和执行指令的部件,也是统一指挥并控制计算机各部件协调工作的中心部件,所依据的是机器指令。
  2. 运算器。运算器也称为算术逻辑单元(ArithmeticandLogicUnit,ALU),其主要功能是在控制器的控制下完成各种算术运算和逻辑运算。
  3. 主存储器。主存储器也称为内存储器(通常简称为“内存”或“主存”)。存储现场操作的信息与中间结果,包括机器指令和数据。
  4. 辅助存储器。辅助存储器也称为外存储器,通常简称为外存或辅存。存储需要长期保存的各种信息。
  5. 输入设备。输入设备的任务是把人们编好的程序和原始数据送到计算机中去,并且将它们转换成计算机内部所能识别和接受的信息方式。按输入信息的形态可分为字符(包括汉字)输入、图形输入、图像输入及语音输入等。目前,常见的输入设备有键盘、 鼠标、扫描仪等
  6. 输出设备。输出设备的任务是将计算机的处理结果以人或其他设备所能接受的形式送出计算机。目前,最常用的输出设备是打印机和显示器。有些设备既可以是输入 设备,同时也可以是输出设备,例如,辅助存储器、自动控制和检测系统中使用的数模转换装置等。

1.1.2. 计算机系统结构的分类

1.1.2.1. 存储程序的概念

“存储程序”的概念是冯•诺依曼等人于 1946 年 6 月首先提出来的

  1. 计算机(指硬件)应由运算器、存储器、控制器、输入设备和输出设备五大基本部件组成。
  2. 计算机内部采用二进制来表示指令和数据。
  3. 将编好的程序和原始数据事先存入存储器中,然后再启动计算机工作。这就是存储程序的基本含义。

冯•诺依曼对计算机世界的最大贡献在于“存储程序控制”概念的提出和实现。

  • 六十多年来,虽然计算机的发展速度惊人,但就其结构原理来说,目前绝大多数计算机仍建立在存储程序概念的基础上。通常把符合存储程序概念的计算机统称为冯•诺依曼型计算机。
  • 随着计算机技术的不断发展,也暴露出了冯•诺依曼型计算机的主要弱点:存储器访问会成为瓶颈。目前,已出现了一些突破存储程序控制的计算机,统称为非冯•诺依曼型计算机

1.1.2.2. Flynn 分类

1966 年,Michael.J.Flynn 提出根据指令流、数据流的多倍性特征对计算机系统进行分类(通常称为 Flynn 分类法)

  1. 指令流:指机器执行的指令序列;
  2. 数据流:指由指令流调用的数据序列,包括输入数据和中间结果,但不包括输出数据。

不同的指令流-数据流组织方式,把计算机系统分成以下四类。

  1. 单指令流单数据流(Single Instruction stream and Single Data stream,SISD)
  2. 单指令流多数据流(Single Instruction stream and Multiple Data stream,SIMD)
  3. 多指令流单数据流(Multiple Instruction stream and Single Data stream,MISD)
  4. 多指令流多数据流(Multiple Instruction stream and Multiple Data stream,MIMD)

1.1.3. 计算机的指令系统

1.1.3.1. 复杂指令系统计算机(Complex Instruction Set Computer,CISC)

增强指令的功能,设置一些功能复杂的指令,把一些原来由软件实现的、常用的功能改用硬件的指令系统来实现

  1. 指令数量众多。指令系统拥有大量的指令,通常有 100~250 条
  2. 指令使用频率相差悬殊。最常使用的是一些比较简单的指令,仅占指令总数的 20%,但在程序中出现的频率却占 80%。而大部分复杂指令却很少使用。
  3. 支持很多种寻址方式。支持的寻址方式通常为 5~20 种。
  4. 变长的指令。指令长度不是固定的,变长的指令增加指令译码电路的复杂性。
  5. 指令可以对主存单元中的数据直接进行处理。典型的 CISC 通常都有指令能够直接对主存单元中的数据进行处理,其执行速度较慢。
  6. 以微程序控制为主。CISC 的指令系统很复杂,难以用硬布线逻辑(组合逻辑)电路实现控制器,通常采用微程序控制。
1.1.3.2. 为精简指令系统计算机(Reduced Instruction Set Computer,RISC)

尽量简化指令功能,只保留那些功能简单,能在一个节拍内执行完成指令,较复杂的功能用一段子程序来实现

  1. 指令数量少。优先选取使用频率最高的一些简单指令和一些常用指令,避免使用复杂指令。只提供了 LOAD(从存储器中读数)和 STORE(把数据写入存储器)两条指令对存储器操作,其余所有的操作都在 CPU 的寄存器之间进行。
  2. 指令的寻址方式少。通常只支持寄存器寻址方式、立即数寻址方式和相对寻址方式。
  3. 指令长度固定,指令格式种类少。因为 RISC 指令数量少、格式少、相对简单,其指令长度固定,指令之间各字段的划分比较一致,译码相对容易。
  4. 以硬布线逻辑控制为主。为了提高操作的执行速度,通常采用硬布线逻辑(组合逻辑)来构建控制器。
  5. 单周期指令执行,采用流水线技术。因为简化了指令系统,很容易利用流水线技术,使得大部分指令都能在一个机器周期内完成。少数指令可能会需要多周期,例如,LOAD/STORE 指令因为需要访问存储器,其执行时间就会长一些。
  6. 优化的编译器:RISC 的精简指令集使编译工作简单化。因为指令长度固定、格式少、寻址方式少,编译时不必在具有相似功能的许多指令中进行选择,也不必为寻址方式的选择而费心,同时易于实现优化,从而可以生成高效率执行的机器代码。
  7. CPU 中的通用寄存器数量多,一般在 32 个以上,有的可达上千个。

大多数 RISC 采用了 Cache 方案,使用 Cache 来提高取指令的速度。而且,有的 RISC 使用两个独立的 Cache 来改善性能。一个称为指令 Cache,另一个称为数据 Cache。这样,取指令和取数据可以同时进行,互不干扰。

1.1.3.3. 总线

总线是一组能为多个部件分时共享的公共信息传送线路。共享是指总线上可以挂接多个部件,各个部件之间相互交换的信息都可以通过这组公共线路传送;

  • 分时是指同一时刻只允许有一个部件向总线发送信息,如果出现两个或两个以上部件同时向总线发送信息,势必导致信号冲突。
  • 在同一时刻,允许多个部件同时从总线上接收相同的信息。
1.1.3.3.1. 分类
  1. 按总线相对于 CPU 或其他芯片的位置
  • 内部总线
    CPU 内部,寄存器之间和算术逻辑部件 ALU 与控制部件之间传输数据所用的总线

  • 外部总线
    指 CPU 与内存 RAM、ROM 和输入/输出设备接口之间进行通信的通路

  1. 按总线功能
  • 地址总线:用来传送地址信息
  • 数据总线:用来传送数据信息
  • 控制总线:用来传送各种控制信号

由于 CPU 通过总线实现程序取指令、内存/外设的数据交换,在 CPU 与外设一定的情况下,总线速度是制约计算机整体性能的最大因素。

1.1.4. 存储系统

存储器是用来存放程序和数据的部件,它是一个记忆装置,也是计算机能够实现“存储程序控制”的基础。在计算机系统中,规模较大的存储器往往分成若干级,称为存储器系统。

1.1.4.1. 传统的存储器系统

1.1.4.1.1. 高速缓冲存储器(Cache)
  • 当 CPU 速度很高时,为了使访问存储器的速度能与 CPU 的速度相匹配,又在主存和 CPU 间增设了一级 Cache。
  • Cache 的存取速度比主存更快,但容量更小,用来存放当前最急需处理的程序和数据,以便快速地向 CPU 提供指令和数据。
    • 因此,计算机采用多级存储器体系,确保能够获得尽可能高的存取速率,同时保持较低的成本。
  1. Cache 的功能是提高 CPU 数据输入输出的速率,突破所谓的“冯•诺依曼瓶颈”,即 CPU 与存储系统间数据传送带宽限制。
  2. 高速存储器能以极高的速率进行数据访问,但因其价格高昂,如果计算机的内存完全由这种高速存储器组成,则会大大增加计算机的成本。
  3. 通常在CPU 和内存之间设置小容量的 Cache。Cache 容量小但速度快,内存速度较低但容量大,通过优化调度算法,系统的性能会大大改善,仿佛其存储系统容量与内存相当而访问速度近似 Cache。
  4. Cache 通常采用相联存储器(ContentAddressable Memory,CAM)
  • CAM 是一种基于数据内容进行访问的存储设备。当对其写入数据时,CAM 能够自动选择一个未用的空单元进行存储;当要读出数据时,不是给出其存储单元的地址,而是直接给出该数据或者该数据的一部分内容,CAM 对所有存储单元中的数据同时进行比较,并标记符合条件的所有数据以供读取
  • 由于比较是同时、并行进行的,所以,这种基于数据内容进行读写的机制,其速度比基于地址进行读写的方式要快很多。
  1. 为保障性能,内存与 Cache 之间的映射往往采用硬件完成,所以Cache 对于程序员而言是透明的,程序员编程时,完全不用考虑 Cache。
1.1.4.1.2. 主存

可由 CPU 直接访问,存取速度快,但容量较小,一般用来存放当前正在执行的程序和数据。

  1. 主存用来存放计算机运行期间所需要的程序和数据,CPU 可直接随机地进行读/写。
  2. 主存具有一定容量,存取速度较高。
  3. 由于 CPU 要频繁地访问主存,所以主存的性能在很大程度上影响了整个计算机系统的性能

根据工艺和技术不同

  1. 随机存取存储器

随机存取存储器(Random Access Memory,RAM)既可以写入也可以读出,但断电后信息无法保存,因此只能用于暂存数据。

  • DRAM(Dynamic RAM,动态 RAM)

    • DRAM 的信息会随时间逐渐消失,因此需要定时对其进行刷新维持信息不丢失
  • SRAM(Static RAM,静态 RAM)
    • SRAM 在不断电的情况下信息能够一直保持而不会丢失。DRAM 的密度大于 SRAM 且更加便宜,
    • 但 SRAM 速度快,电路简单(不需要刷新电路),然而容量小,价格高。
  1. 只读存储器

只读存储器(Read Only Memory,ROM)可以看作 RAM 的一种特殊形式

  • 存储器的内容只能随机读出而不能写入
  • 这类存储器常用来存放那些不需要改变的信息。由于信息一旦写入存储器就固定不变了,即使断电,写入的内容也不会丢失,所以又称为固定存储器。
  • ROM 一般用于存放系统程序 BIOS(Basic Input Output System,基本输入输出系统)。
  1. 存储器编址单位
  • 内存编址方法在计算机系统中,存储器中每个单元的位数是相同且固定的
1.1.4.1.3. 辅存

设置在主机外部,它的存储容量大,价格较低,但存取速度较慢,一般用来存放暂时不参与运行的程序和数据,CPU 不可以直接访问辅存,辅存中的程序和数据在需要时才传送到主存,因此它是主存的补充和后援。

  1. 磁带存储器磁带存储器
  • 是一种顺序存取的设备,其特点包括:存取时间较长,但存储容量大,便于携带,价格便宜。磁带应用的场景越来越少,目前主要用于资料的归档保存。
  1. 硬盘存储器
  • 在硬盘中,信息分布呈以下层次:记录面、圆柱面、磁道和扇区.
1.1.4.1.4. 局部性原理

多层级的存储体系之所以能用低投入换来较高的存取速率,得益于局部性原理。

  1. 局部性原理是指程序在执行时呈现出局部性规律,即在一较短的时间内,程序的执行仅局限于某个部分。相应地,它所访问的存储空间也仅局限于某个区域。

  2. 程序局部性包括时间局部性和空间局部性

  • 时间局部性是指程序中的某条指令一旦执行,不久以后该指令可能再次执行。产生时间局部性的典型原因是由于程序中存在着大量的循环操作;
  • 空间局部性是指一旦程序访问了某个存储单元,不久以后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址可能集中在一定的范围内,其典型情况是程序顺序执行。
  1. 存储器中数据常用的存取方式
  • 顺序存取

    • 存储器的数据以记录的形式进行组织。对数据的访问必须按特定的线性顺序进行。磁带存储器采用顺序存取的方式。
  • 直接存取
    • 与顺序存取相似,直接存取也使用一个共享的读写装置对所有的数据进行访问。但是,每个数据块都拥有唯一的地址标识,读写装置可以直接移动到目的数据块所在位置进行访问。存取时间也是可变的。磁盘存储器采用直接存取的方式。
  • 随机存取
    • 存储器的每一个可寻址单元都具有自己唯一的地址和读写装置,系统可以在相同的时间内对任意一个存储单元的数据进行访问,而与先前的访问序列无关。主存储器采用随机存取的方式。
  • 相联存取
    • 相联存取也是一种随机存取的形式,但是选择某一单元进行读写是取决于其内容而不是其地址。与普通的随机存取方式一样,每个单元都有自己的读写装置,读写时间也是一个常数。使用相联存取方式,可以对所有的存储单元的特定位进行比较,选择符合条件的单元进行访问。为了提高地址映射的速度,Cache 采取相联存取的方式。

1.1.5. 流水线

流水线技术把一个任务分解为若干顺序执行的子任务,不同的子任务由不同的执行机构负责执行,而这些机构可以同时并行工作。在任一时刻,任一任务只占用其中一个执行机构,这样就可以实现多个任务的重叠执行,以提高工作效率。

1.1.5.1. 流水线周期

流水线应用过程中,会将需要处理的工作分为 N 个阶段,最耗时的那一段所消耗的时间为流水线周期。如:使用流水线技术执行 100 条指令,每条指令取指 2ms,分析 4ms,执行 1ms,则流水线周期为 4ms。

例:某计算机系统,一条指令的执行需要经历取指(2ms)、分析(4ms)、执行(1ms)
三个阶段,现要执行 100 条指令,利用流水线技术需要多长时间?
  1. 理论上来说,1 条指令的执行时间为:2ms+4ms+1ms=7ms。所以:理论流水线执行时间=2ms+4ms+1ms+(100-1)*4=403ms。
  2. 而实际上,真正做流水线处理时,考虑到处理的复杂性,会将指令的每个执行阶段的时间都统一为流水线周期,即 1 条指令的执行时间为:4ms+4ms+4ms=12ms。 所以:实际流水线执行时间=4ms+4ms+4ms+(100-1)*4=408ms。
  3. 考试时 80%以上的概率采用理论公式计算,所以考试时需要以理论公式计算,若计算的结果无正确选项才考虑采用实际公式计算。

计算机组成和体系结构[备考]相关推荐

  1. 计算机组成与系统结构2018,2018年国家电网考试备考计算机组成与体系结构

    加入2021湖南事业单位学习Q群获取资料,群号:709010555    计算机--计算机组成与体系结构 1.总线.中断与输入输出系统和存储体系 总线(Bus)是计算机各种功能部件之间传送信息的公共通 ...

  2. 计算机三级数据库要学哪些知识,计算机三级数据库怎么备考 考试内容是什么...

    很多同学想知道计算机三级数据库如何备考,下面是小编整理的相关内容,希望对大家有所帮助! 计算机三级数据库如何备考 1.章节复习,不管是那门学科都分为大的章节和小的课时,一般当讲完一个章节的所有课时就会 ...

  3. java二级考试备考_计算机二级java如何备考 方法在这里

    很多同学想知道计算机二级java如何备考,下面是小编整理的相关内,希望对大家有所帮助! 计算机二级java如何备考 选好复习用书 在复习应考时,大家要根据自己的具体情况,制定一套完整的复习计划.不要拘 ...

  4. 任铄 计算机操作系统,计算机组成与体系结构-CSDN.PDF

    计算机组成与体系结构-CSDN 系统分析师 --计算机组成与体系结构(一) 高级项目经理 任铄 QQ :1530841586 第一章 计算机组成与体系结构  1.1 计算机组成与分类  1.2 多 ...

  5. 全国计算机一级考试的练题软件,2017全国计算机一级考试WPS备考练习题

    2017全国计算机一级考试WPS备考练习题 计算机等级考试要取得好成绩平时一定要多加练习,提高做题技巧和速度.下面是小编为大家整理的2017全国计算机一级考试WPS备考练习题,希望对大家有帮助! 单选 ...

  6. 太原理工计算机组成原理报告,太原理工《计算机组成原理与体系结构》--实验报告.docx...

    本科实验报告 课程名称:计算机组成原理与体系结构 实验项目: 运算器.移位器.运算存储器. 总线控制.微程序控制器原理 实验地点: 明向计算机学院306实验室 专业班级: 物联1403 学号:2014 ...

  7. 计算机组成结构IR,计算机组成与体系结构试题

    <计算机组成与体系结构试题>由会员分享,可在线阅读,更多相关<计算机组成与体系结构试题(5页珍藏版)>请在人人文库网上搜索. 1.____________________ 系 ...

  8. 清华大学计算机组成与体系结构,清华大学出版社-图书详情-《计算机组成与体系结构(第2版)》...

    作为"21世纪大学本科计算机专业系列教材",遵照本系列教材评审组专家的意见,本书包括了数字电路基础.计算机组成.计算机体系结构3个部分内容.本书读者对象主要是学习计算机课程的大学生 ...

  9. 计算机组成原理和体系结构----软考(到处copy)

    计算机组成原理和体系结构 数据的表示 n进制转十进制 十进制转n进制 使用短除法 二进制转八进制和十六进制 原码.反码.补码以及移码 浮点数运算 计算机结构 计算机体系结构分类 - Flynn CIS ...

最新文章

  1. 【2012年华为校园招聘软开上机-成都】字母转换、统计单词个数
  2. 假期《JAVA技术》预备作业01
  3. oracle备份片校验,oracle rman 备份日志单独备份和交叉校验
  4. 1033 旧键盘打字 (20 分)(c语言)
  5. wpf office 菜单_如何带回Office 2007中的旧菜单
  6. 人工智能会让工作环境变得更公平,还是更压抑?
  7. phpStrom编辑器常用功能教程
  8. 浏览器一直不停的异步请求(环境:vs.net mvc)
  9. Apache工具库——Apache Commons的使用
  10. 秒杀面试 - 程序员面试宝典
  11. Chinalinuxpub.com初学版精华
  12. Log4j(三)——Log4j配置文件位置详解
  13. 币圈IDO与ICO/IPO的区别和联系
  14. TMUX Cheat Table:和那些妖艳贱货不一样的 TMUX 教程
  15. python练习3:输入某年某月某日,判断这一天是这一年的第几天?
  16. Linux-vim编辑器
  17. iPad/iPhone内存管理五之如何确定对象返回的值是autorelease
  18. 用html做七巧板的方法,纯HTML5绘制的七巧板
  19. vc60.pdb打不开怎么办
  20. 我对创业投资的一些体会看法

热门文章

  1. Hashtable 的实现原理
  2. 数据包收发c语言程序,在C程序中发送ICMP数据包
  3. No.11 position定位 之 fixed固定定位
  4. GNSS定位的时空基准
  5. 【海康威视】web无插件3.2,vue开发
  6. 真心求一个有pi控制的基于28335的dsp程序
  7. java浏览器fx,浏览器控件JxBrowser JavaFX开发快速入门指南
  8. java链表求平均值和方差_用c语言链表求n个数的均值和标准差
  9. 计算机病毒引起的死机现象属于硬件故障吗,区别计算机病毒与故障
  10. 40年未有之大变局,小家电江湖谁主风云