【愚公系列】软考高级-架构设计师 010-计算机体系结构
🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。
🏆《近期荣誉》:2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏
🚀前言
计算机体系结构是指计算机系统的设计与组织,它包括计算机系统的各个组成部分及其相互之间的关系。这个概念既涵盖了硬件的物理结构,也包括了软件的逻辑框架,是计算机能够执行任务的基础。计算机体系结构的设计决定了系统的性能、能效、成本以及编程复杂性等多个方面。
计算机体系结构通常分为几个层次,包括:
- 指令集架构(ISA):这是软件和硬件之间的接口,定义了机器级别的编程语言,包括数据类型、寄存器、指令格式和地址模式等。
- 微架构(Microarchitecture):它实现了指令集架构层面的规定,通过具体的硬件组件和逻辑实现指令的执行。微架构的设计会影响到处理器的性能、功耗和生产成本。
- 系统设计(System Design):这一层涉及到计算机系统中的各个组件如何协同工作,包括CPU、内存、输入输出设备的连接和通讯方式等。
- 硬件实现:包括具体的电路设计、逻辑门排列、集成电路的设计等。
计算机体系结构的设计原则主要关注于如何通过优化这些层次的设计来提升系统性能、降低成本和功耗。随着技术的发展,新的体系结构如多核处理器、分布式计算和云计算架构等不断涌现,推动了计算能力的飞速进步。
🚀一、计算机体系结构
🔎1. Flynn分类法
🦋1.1 概念
Flynn的分类法是一种用于区分计算机体系结构的方法,由迈克尔·弗林(Michael Flynn)在1966年提出。这个分类法基于两个维度:指令流(Instruction Stream)和数据流(Data Stream),将计算机体系结构分为四个基本类型:
-
单指令流单数据流(SISD):
- 在任一时刻,计算机只能执行一个指令操作一个数据。
- 这是传统的冯·诺依曼架构计算机的典型特征,适用于大多数早期的个人计算机。
-
单指令流多数据流(SIMD):
- 在任一时刻,计算机执行相同的指令,但是可以在多个数据集上操作。
- SIMD适用于数据并行处理高度相似的操作,如图形处理单元(GPU)中的向量和矩阵运算。
-
多指令流单数据流(MISD):
- 在任一时刻,计算机可以执行多个不同的指令,但这些指令都操作同一个数据流。
- 实际上,MISD架构在实际应用中非常罕见,但理论上它可以用于某些特定的容错计算。
-
多指令流多数据流(MIMD):
- 在任一时刻,计算机能够执行多个不同的指令集,每个指令集操作不同的数据集。
- MIMD架构广泛应用于多处理器和多核心计算机系统,非常适合于任务并行处理和复杂的数据处理应用。
Flynn的分类法提供了一种简单直观的方式来描述和区分不同的计算机体系结构,尽管随着技术的发展,现代计算机系统可能融合了这几种模式的特点,但这个分类法仍然是理解和讨论计算机架构时的有用工具。
🦋1.2 练习
1、Flynn分类法根据计算机在执行程序的过程中( )的不同组合,将计算机分为4类。当前主流的多
核计算机属于( )计算机。
A.指令流和数据流
B.数据流和控制流
C.指令流和控制流
D.数据流和总线带宽
A.SISD
B.SIMD
C.MISD
D.MIMD
解析:
Flynn的分类法是根据计算机系统处理指令流和数据流的方式,将计算机架构分为四类:单指令流单数据流(SISD)、单指令流多数据流(SIMD)、多指令流单数据流(MISD)、以及多指令流多数据流(MIMD)。这个分类体系帮助理解不同计算机系统的并行处理能力。
第一部分的解析:
A. 指令流和数据流:这是正确的。Flynn的分类法正是基于指令流(指令的执行)和数据流(指令操作的数据)的组合方式来区分计算机架构的。
B. 数据流和控制流:控制流是指令流的一部分,因此这个选项的表述不如选项A准确。
C. 指令流和控制流:虽然控制流影响指令流,但按照Flynn的分类法,关键在于指令流和数据流的组合,而不是控制流。
D. 数据流和总线带宽:总线带宽与Flynn分类法的核心概念无关,它关注的是数据传输速度,而非指令和数据的处理方式。
因此,对于第一部分,正确答案是 A.指令流和数据流。
第二部分的解析:
A. SISD:单指令流单数据流,是传统的顺序执行计算机,每个时刻执行一条指令操作一个数据项。大多数早期计算机都是SISD结构。
B. SIMD:单指令流多数据流,可以在同一时刻对多个数据项执行相同的操作,适用于向量和矩阵计算等。某些图形处理单元(GPU)采用这种架构。
C. MISD:多指令流单数据流,这种类型理论上存在,但实际应用中极为罕见。
D. MIMD:多指令流多数据流,每个处理器可以独立执行不同的指令序列和操作不同的数据。这是当前主流的多核计算机采用的架构,支持广泛的并行处理和多任务处理。
对于第二部分,当前主流的多核计算机能够在多个核心上独立执行不同的程序(指令流)操作不同的数据集(数据流),因此它们属于 D. MIMD 类型的计算机。
🔎2.CISC与RISC
🦋2.1 概念
CISC(omplex Instruction Set Computing)和RISC(Reduced Instruction Set Computing)是两种不同的计算机架构风格,主要差异在于它们各自的指令集的复杂度、执行方式以及设计哲学。
CISC(复杂指令集计算):
- 特点:CISC架构的计算机具有复杂的指令集,指令数量多,每条指令的执行可能需要多个周期,指令长度不一,执行复杂操作(如内存间的数据移动、操作和访问)。
- 设计哲学:目的是通过硬件直接实现高级编程语言中的复杂操作,减少编译器的复杂度,以及减少程序的大小。
- 优点:编程模型简单,支持高级语言特性,减少了编译器的复杂度。
- 缺点:指令的解码和执行相对复杂和缓慢,硬件实现更为复杂,功耗较高。
RISC(精简指令集计算):
- 特点:RISC架构的计算机具有简单的指令集,指令数量少,每条指令尽量在一个时钟周期内完成,指令长度固定,便于快速解码,主要执行简单操作,依赖软件来实现复杂操作。
- 设计哲学:通过精简指令集来实现更高的执行效率和更快的指令处理速度,同时简化硬件设计。
- 优点:指令执行速度快,硬件设计简单,功耗相对较低,更容易实现流水线和并行处理。
- 缺点:对编译器的要求更高,需要智能的编译技术来优化代码生成,以利用硬件的性能。
应用
- CISC架构:由于其强大的硬件指令支持和对高级语言的良好适应性,传统上被广泛应用于个人电脑和服务器等领域。典型的CISC架构有Intel的x86架构。
- RISC架构:因其高效的处理能力和低功耗特性,广泛应用于嵌入式系统、移动设备(如智能手机、平板电脑)和某些高性能服务器。典型的RISC架构有ARM、MIPS和RISC-V。
随着技术的发展,CISC和RISC架构之间的界限变得越来越模糊,现代处理器往往结合了两种架构的特点,以达到性能和功效的最佳平衡。
🦋2.2 练习
1、以下关于RISC和CISC的叙述中,不正确的是( )(2022年上半年)
A.RISC的大多指令在一个时钟周期内完成
B.RISC普遍采用微程序控制器,CISC则普遍采用硬布线控制器
C.RISC的指令种类和寻指方式相对于CISC更少
D.RISC和CISC都采用流水线技术
解析:
选项B的说法是不正确的。在RISC(精简指令集计算)和CISC(复杂指令集计算)架构的对比中,实际上是CISC架构普遍采用微程序控制器(Microprogram Control Unit),而RISC架构则倾向于采用硬布线控制器(Hardwired Control Unit)。
A. RISC的大多指令在一个时钟周期内完成:这是正确的。RISC架构的设计哲学强调指令的简单性,以便大多数指令都能在一个时钟周期内完成,这有助于提高处理器的效率和性能。
B. RISC普遍采用微程序控制器,CISC则普遍采用硬布线控制器:这是不正确的。实际上,CISC架构由于其复杂的指令集和多样的指令执行需求,更倾向于使用微程序控制器来管理指令的执行。而RISC架构由于其指令的简洁性和统一性,更容易通过硬布线控制器来实现指令的执行,这有助于减少指令执行的延迟和硬件的复杂度。
C. RISC的指令种类和寻指方式相对于CISC更少:这是正确的。RISC架构的核心原则之一就是减少指令集的复杂度,通过减少指令种类和统一指令格式来简化指令的解码过程,提高执行效率。
D. RISC和CISC都采用流水线技术:这是正确的。无论是RISC还是CISC架构的处理器,流水线技术都是一种常用的方法,用于提高指令处理的速度和效率。流水线允许同时处理多个指令的不同阶段,从而增加处理器的吞吐量。
因此,不正确的叙述是 B. RISC普遍采用微程序控制器,CISC则普遍采用硬布线控制器。
🔎3.流水线技术
🦋3.1 概念
计算机体系结构中的流水线技术是一种将指令处理过程分解为几个阶段并同时处理多个指令的高效执行技术。每个阶段完成处理过程的一部分,类似于工厂生产线上的每个工人完成一个特定的任务。在计算机流水线中,每个阶段由不同的硬件单元处理,这些硬件单元可以同时处理不同指令的不同部分,从而提高整体处理速度和效率。
流水线的基本阶段
典型的指令执行过程可以分为五个基本阶段,每个阶段由流水线的一个部分处理:
- 取指(IF, Instruction Fetch):从内存中获取下一条要执行的指令。
- 译码(ID, Instruction Decode):解析指令,确定需要进行的操作及操作所需的操作数。
- 执行(EX, Execution):执行指令描述的操作,可能是算术运算、逻辑运算等。
- 访存(MEM, Memory Access):如果需要,访问内存读取数据或写入数据。
- 写回(WB, Write Back):将执行结果写回寄存器或内存。
流水线的优势和挑战
优势:
- 提高吞吐量:由于可以同时处理多个指令的不同阶段,流水线大大提高了CPU的吞吐量。
- 提高资源利用率:流水线技术使得CPU内部的各个组件能够得到更充分的利用。
挑战:
- 数据冒险:当后续指令依赖前面指令的执行结果时,可能会发生数据冒险。
- 控制冒险:由于分支和跳转指令的存在,可能导致预先取出的指令序列不再有效。
- 结构冒险:当多个指令需要同时访问同一资源(如同一个内存地址)时,可能会发生结构冒险。
解决策略
- 数据冒险:可以通过前递(Forwarding)或暂停(Stalling)等技术解决。
- 控制冒险:采用分支预测等技术来减少因跳转指令造成的性能损失。
- 结构冒险:通过提供足够的资源或重新调度指令来解决。
流水线技术是现代计算机体系结构设计中不可或缺的一部分,尽管它引入了一些复杂性,但通过智能设计和优化,流水线能够显著提高处理器的性能和效率。
🦋3.2 练习
1、一条指令的执行过程可以分解为取指、分析和执行三步,在取指时间t取指=3△t、分析时间t分析=2△t、
执行时间t执行=4△t的情况下,若按串行方式执行,则10条指令全部执行完需要( )△t;若按流水
线的方式执行,流水线周期为( )△t,则10条指令全部执行完需要( )△t。
解析:
串行方式:(3+2+4)Δt × 10 = 90Δt
流水线方式:
流水线周期(Δt ):最长的一段,即为执行步骤的时间4Δt
;
①理论公式:(t1+t2+…+tk)+(n-1)*Δt
根据理论公式与流水线周期,则可计算得到理论公式下的执行时间为:
(3+2+4)△t+ (10-1)×4△t = 9△t + 36△t = 45△t
②实践公式:(k+n-1)*Δt
n为10;此题的指令包含取指、分析和执行三个阶段,则k为3;流水线周期为最长的一段,即为4Δt;
根据实践公式与流水线周期,则可计算得到实践公式下的执行时间为:
(3+10-1)×4△t = 48△t
2、执行指令时,将每一节指令都分解为取指、分析和执行三步。已知取指时间5△t,分析时间2△t,执行时间3△t,如果按照取指、分析、执行重叠的流水线方式执行指令,从头到尾执行完500条指令需
( )△t。(2019年下半年)
A. 2500
B.2505
C.2510
D.2515
解析:
①理论公式:(t1+t2+…+tk)+(n-1)*Δt
根据理论公式与流水线周期,则可计算得到理论公式下的执行时间为:
(3+2+5)△t+ (500-1)×5△t = 10△t + 2495△t = 2505△t
②实践公式:(k+n-1)*Δt
n为500;此题的指令包含取指、分析和执行三个阶段,则k为3;流水线周期为最长的一段,即为4Δt;
根据实践公式与流水线周期,则可计算得到实践公式下的执行时间为:
(3+500-1)×4△t = 2510△t
以理论公式为准,答案选B。
🔎4.冯诺依曼结构和哈弗结构
🦋4.1 概念
冯·诺依曼结构(Von Neumann architecture)和哈佛结构(Harvard architecture)是两种基本的计算机架构设计,它们在处理指令和数据的方式上有着根本的区别。
冯·诺依曼结构
- 特点:在冯·诺依曼结构中,计算机的指令和数据使用同一存储系统(即共享同一个内存空间),并通过同一套总线进行传输。这种设计简化了计算机的架构,但也意味着指令获取和数据操作不能同时进行,可能导致瓶颈(称为“冯·诺依曼瓶颈”)。
- 优点:架构简单,易于编程和管理。
- 缺点:指令和数据共享内存和总线,导致访问速度受限,存在冯·诺依曼瓶颈。
哈佛结构
- 特点:哈佛结构将数据存储和指令存储分开,使用独立的存储器和总线分别处理数据和指令。这种分离允许数据和指令的并行处理,可以同时读取指令和操作数据,提高了处理效率。
- 优点:指令和数据分别存储,可并行处理,提高了速度和效率。
- 缺点:架构相对复杂,增加了硬件成本,且在某些情况下编程和数据管理更为复杂。
应用场景
- 冯·诺依曼结构:由于其设计简单,易于实现,冯·诺依曼架构被广泛应用于通用计算机和大多数现代计算机系统中。
- 哈佛结构:由于其高效的数据和指令处理能力,哈佛架构常见于嵌入式系统、DSP(数字信号处理器)和一些高性能计算机中。
尽管这两种架构在设计上有显著的不同,但在实际应用中,为了兼顾性能和设计的简便性,许多现代计算机系统采用了这两种架构的混合形式,称为“修改哈佛架构”,它通过缓存等技术,在保持总体设计简便的同时,尝试克服冯·诺依曼瓶颈,实现数据和指令的部分并行处理。
🦋4.2 练习
1、目前处理器市场中存在CPU、GPU和DSP多种类型处理器,分别用于不同场景,这些处理器具有不同的体系结构,DSP采用( )。
A:冯.诺依曼结构
B:哈佛结构
C :FPGA结构
D:与GPU相同结构
解析:
-
哈佛结构:DSP通常采用哈佛结构,这种结构能够将指令存储和数据存储分开,使用独立的存储器和总线分别处理指令和数据。这样,DSP可以同时访问指令和数据,提高了数据处理的速度和效率,这对于实时信号处理任务来说至关重要。
-
冯·诺依曼结构:虽然是计算机科学的基础架构之一,但由于其指令和数据共享同一存储和总线,可能会导致处理速度不足以满足高速信号处理的需求。
-
FPGA结构(Field-Programmable Gate Array,现场可编程门阵列):FPGA是一种可以通过编程来配置的硬件设备,适用于多种应用,包括数字信号处理,但它本身不是一种处理器架构,而是一种可以用来实现定制硬件逻辑的平台。
-
与GPU相同结构:GPU(Graphics Processing Unit,图形处理单元)专为处理大量并行计算任务而设计,尤其是图形渲染。虽然GPU和DSP都可以进行并行处理,但它们的设计和优化点不同。GPU优化用于大规模并行处理图形和计算任务,而DSP优化用于高效执行信号处理算法。
因此,正确答案是 B. 哈佛结构,这反映了DSP在设计上对于快速、并行地访问指令和数据的需求。
🚀感谢:给读者的一封信
亲爱的读者,
我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。
如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。
我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。
如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。
再次感谢您的阅读和支持!
最诚挚的问候, “愚公搬代码”
- 点赞
- 收藏
- 关注作者
评论(0)