当前位置: 首页 > news >正文

[架构之路-119]-《软考-系统架构设计师》-计算机体系结构 -1- 基本原理(体系结构、指令系统与流水线、层次存储)

第9章 计算机体系结构

9.1 什么是计算机体系结构

计算机系统结构(Computer Architecture)也称为计算机体系结构,它是由计算机结构外特性,内特性,微外特性组成的。经典的计算机系统结构的定义是指计算机系统多级层次结构中机器语言机器级的结构,它是软件和硬件/固件的主要交界面,是由机器语言程序、汇编语言源程序和高级语言源程序翻译生成的机器语言目标程序能在机器上正确运行所应具有的界面结构和功能。 [1]

计算机系统结构指的是什么? 是一台计算机的外表? 还是是指一台计算机内部的一块块板卡安放结构? 都不是,那么它是什么? 计算机系统结构就是计算机的机器语言程序员编译程序编写者所看到的外特性。所谓外特性,就是计算机的概念性结构和功能特性。用一个不恰当的比喻一,比如动物吧,它的"系统结构"是指什么呢? 它的概念性结构和功能特性,就相当于动物的器官组成及其功能特性,如鸡有胃,胃可以消化食物。至于鸡的胃是什么形状的、鸡的胃部由什么组成就不是"系统结构"研究的问题了。

冯·诺依曼计算机的主要特点是:存储程序方式;指令串行执行,并由控制器加以集中控制;单元定长的一维线性空间的存储器;使用低级机器语言,数据以二进制表示;单处理机结构,以运算器为中心。 [2]

改进后的冯·诺依曼计算机使其从原来的以运算器为中心演变为以存储器为中心。从系统结构上讲,主要是通过各种并行处理手段提高计算机系统性能。

9.2 计算机体系结构分类

按"流"分类的方法,这是Flynn教授提出的按指令流和数据流的多倍性概念进行分类的方法。

共有四大类,即:(S-single 单一的 I-instruction 指令 M-multiple 多倍的 D-data 数据)

SISD 单指令流单数据流,传统的单处理机属于SISD计算机。

SIMD 单指令流多数据流,并行处理机是SIMD计算机的典型代表。中国的YH-I型是此类计算机型。

MISD 多指令流单数据流,实际上不存在,但也有学者认为存在。

MIMD 多指令流多数据流,包括了大多数多处理机及多计算机系统。中国的YH-Ⅱ型计算机是这种类型的计算机。

一般将标量流水机视为SISD类型,把向量流水机视为SIMD类型。

按"并行级"和"流水线"分类:这是在计算机系统中的三个子系统级别上按并行程度及流水线处理程度进行分类的方法。

SIMD全称Single Instruction Multiple Data,单指令多数据流,能够复制多个操作数,并把它们打包在大型寄存器的一组指令集。

多指令流多数据流MIMD是用于实现并行性的技术。MIMD计算机具有多个异步和独立工作的处理器。在任何时钟周期内,不同的处理器可以在不同的数据片段上执行不同的指令,也即是同时执行多个指令流,而这些指令流分别对不同数据流进行操作。MIMD架构可以用于诸如计算机辅助设计、计算机辅助制造、仿真、建模、通信交换机的多个应用领域。 MIMD机器可以是共享存储器或分布式存储器类别。共享存储器机器包括UMA、NUMA、COMA等。分布式存储器机器包括NORAM等。

单指令多数据(SIMD)意味着所有并行单元共享相同的指令,但它们计算不同的数据。例如,执行数组[1,2,3,4]加上[5,6,7,8],得到一个数组[6,8,10,12]。此时共有4个算术单元在工作,但它们都可以共享相同的指令(此处为“加法”),并且所有相同的操作都是同步执行的。下图是表明SIMD的图片:

SIMD 用于需要大量计算且所有处理器执行相同工作的情况。由于 SIMD 设计简单,成本更低,速度更快。由于是同步的,SIMD 架构中的编程相对容易。

SIMD 仅限于少数应用,在我们没有相同且独立的任务的情况下使用 MIMD 架构。多指令多数据(MIMD)意味着每个并行单元具有独立的指令,因此每个单元都可以在任何时间执行不同的操作;一个执行加法,另一个可能执行乘法,另一个可能执行分支等等。这时可以让程序将函数调用分发给不同的处理器上执行,这些核心都是独立的,无论它们是在同一芯片上(多核)、不同的芯片上(多处理器),还是两者的混合。下图是表明MIMD的图片:

MIMD 操作可能同步也可能不同步。

由于设计的复杂性,MIMD 处理器往往很昂贵,可以比SIMD解决更复杂的问题。

9.3 指令集

指令系统有如下两个截然不同的发展方向:

1.增强原有指令的功能,设置更加复杂的新指令实现软件功能的硬化,称为CISC(x86架构);

2.减少指令种类和简化指令功能,提高指令的运行速度,称为RISC(ARM架构、MIP架构);

1.复杂指令系统计算机(CISC)

随着VLSI技术的发展,硬件成本下降,软件成本上升,促使人们在指令系统中增加更多、更复杂的指令。

主要特点:

指令系统庞大复杂,指令数目在20条以上。

指令的长度不固定,指令格式多,寻址方式多。

可以访存的指令不受限制。

各种指令执行时间相差很大,大部分指令需要多个时钟时期才能完成。

控制器大多采用微程序控制,有些指令非常复杂,以至于无法采用硬连线控制。

难以用优化编译生成高效的目标代码程序。

2.精简指令系统计算机(RISC)

中心思想:要求指令系统简化,尽量采用寄存器-寄存器操作指令,指令格式力求一致。

主要特点:

选取使用频率最高的一些简单指令,复杂指令的功能由简单指令的组合来实现

指令长度固定,指令格式种类少,寻址方式种类少

只有Load/Store(取数/存数)指令访存,其余指令都在寄存器之间进行

CPU中通用寄存器的数量相当多

RISC一定采用指令流水线技术,大部分指令的操作都在一个时钟周期内完成

以硬布线控制为主,不用或少用微程序控制

特别重视编译优化工作,以减少程序执行时间

CISC兼容性更好。

3.CISC和RISC的比较

与CISC相比RISC的优点:

更能充分利用VLSI芯片的面积

有更高的运算速度

便于设计,可降低成本,提高可靠性

有利于编译程序代码的优化

对比表:

微程序:使用多个微码来解释复杂指令集中的复杂指令,这也是复杂指令为什么可以实现复杂功能的原因。

CISC

RISC

指令系统

复杂,庞大

简单,精简

指令数目

一般大于200条

一般小于100条

指令字长

不固定

固定

可访存指令

不加限制

只有Load/Store指令

各种指令执行时间

相差较大

绝大多数在一个周期内完成

各种指令使用频度

相差很大

都比较常用

通用寄存器数量

较少

目标代码

难以用优化编译生成高效的目标代码程序

采用优化的编译程序,生成代码较为高效

控制方式

绝大多数为微程序控制

绝大多数为组合逻辑控制

指令流水线

可以通过一定方式实现

必须实现

9.4 两大结构

(1)冯诺依曼结构?

中央处理器(CPU)通过控制器将数据读从输入设备读取到存储器上,然后通过运算器对存储器中的数据进行运算,最后再通过控制器将运算结果显示到输出设备上,这种结构称之为冯诺依曼结构。

在冯诺依曼结构中数据存储器和指令存储器在一个存储器上,但已经有了分开的概念。

(2)哈佛结构

中央处理器先从指令存储器里读取程序指令的内容,解码得到数据地址,再到相应的数据存储器中读取程序执行所需的数据,然后执行,这种结构我们称之为哈佛结构。

在哈佛结构中,数据存储器和指令存储器是分开的两个存储器。

(3)冯诺依曼结构和哈佛结构的区别:

哈佛结构将数据和指令分开来存储具有较高的执行效率,在执行指令的同时可以提前读取下一条指令;而且因为数据和指令分开存储在两个存储器中,数据和指令就可以采用两种不同的数据长度进行存储。

但在程序执行的过程中,我们通常要频繁的变化所执行的程序指令,这个时候就要对数据和指令占有的存储器从新分配,这个时候冯诺依曼结构统一的编码格式就能最大限度的利用资源。

ARM核通常是冯诺依曼结构!!!

DSP通常采用哈佛结构!!!

计算机体系结构主要影响的编译器,对高级编程语言影响是透明的!!!

9.5 层次存储(物理存储器)-- 成本约束

9.5.1 层次化结构

9.5.2 Cache

备注:

可以看到两者的主要差别是冯诺依曼架构不区分数据与指令,将两者放在同一内存中;而哈佛结构将两者分别存放在Instruction Memory和Data Memory。

指令和数据放在一起的后果是取指令和取数据不能同时进行,否则会引起访存的混乱。

发展到今天,CPU的运算速度已经远远超过了访存速度,因此CPU必须浪费时间等数据;

而哈佛构架由于指令和数据是分开存放的,所以在等数据的同时可以预取指令,CPU的利用率更高。

由于指令与数据放在同一内存带来的CPU利用率(吞吐率)降低就是冯诺依曼瓶颈。

9.5.3 局部性原理

9.5.4 主存分类

9.5.5 主存编址

9.5.6 磁盘结构与参数

详细了解硬盘的工作原理,原来数据的读写这么神奇,数码,数码硬件,好看视频 (baidu.com)

9.6 流水线

流水线,又称装配线,工业上的一种生产方式,指每一个生产单位只专注处理某一个片段的工作,以提高工作效率及产量。

按照流水线的输送方式大体可以分为:皮带流水装配线、板链线、倍速链、插件线、网带线、悬挂线及滚筒流水线这七类流水线。一般包括牵引件、承载构件、驱动装置、涨紧装置、改向装置和支承件等组成。

cpu流水线技术是一种将指令分解为多步,并让不同指令的各步操作重叠,从而实现几条指令并行处理,以加速程序运行过程的技术。指令的每步有各自独立的电路来处理,每完成一步,就进到下一步,而前一步则处理后续指令。

采用流水线技术后,并没有加速单条指令的执行,每条指令的操作步骤一个也不能少,只是多条指令的不同操作步骤同时执行,因而从总体上看加快了指令流速度,缩短了程序执行时间。

为了进一步满足普通流水线设计所不能适应的更高时钟频率的要求,高档位处理器中的流水线的深度(级数)在逐代增多。当流水线深度在5~6级以上时,通常称为超流水线结构(Super Pipeline)。显然,流水线级数越多,每级所花的时间越短,时钟周期就可以设计的越短,指令速度越快,指令平均执行时间也就越短。

流水线技术是通过增加计算机硬件来实现的。它要求各功能段能互相独立地工作,这就要增加硬件,相应地也加大了控制的复杂性。如果没有互相独立的操作部件,很可能会发生各种冲突。例如要能预取指令,就需增加指令的硬件电路,并把取来的指令存放到指令队列缓冲器中,使微处理器能同时进行取指令和分析、执行指令的操作。

9.7 总线

9.10 嵌入式

9.10.1 主处理芯片

9.10.2 交叉开发环境

9.10.3 初始化过程

备注:

  • 片级初始 =》板级初始化=》 系统级初始化

  • SOC/CPU =》 UBOOT =》 Linux OS

9.10.4 校验码

(1)奇偶校验

(2)CRC

(3)海明码

9.11 系统配置与性能评价

9.11.1 计算机性能指标

9.11.2 阿姆达尔解决方案

9.11.3 性能评价方法

  • 时钟(时钟)-》指令数(cpu)=》混合指令(cpu) =》数据处理(cpu+内存)=》多核计算 =》基准程序

  • 从物理信号 =》基准程序 =》 典型应用程序 =》 真实应用程序

备注:

基准程序是通用基准程序,是经过严格精确设计的程序。

相关文章:

[架构之路-119]-《软考-系统架构设计师》-计算机体系结构 -1- 基本原理(体系结构、指令系统与流水线、层次存储)

第9章 计算机体系结构9.1 什么是计算机体系结构计算机系统结构(Computer Architecture)也称为计算机体系结构,它是由计算机结构外特性,内特性,微外特性组成的。经典的计算机系统结构的定义是指计算机系统多级层次结构中…...

【离线数仓-8-数据仓库开发DWD层-交易域相关事实表】

离线数仓-8-数据仓库开发DWD层-交易域相关事实表离线数仓-8-数据仓库开发DWD层-交易域相关事实表一、DWD层设计要点二、交易域相关事实表1.交易域加购事务事实表1.加购事务事实表 前期梳理2.加购事务事实表 DDL表设计分析3.加购事务事实表 加载数据分析1.首日全量加购的数据加载…...

你知道Java架构师学习路线该怎么走吗?你所缺少的是学习方法以及完整规划!

怎么成为一名Java架构师?都需要掌握哪些技术?Java架构师,首先要是一个高级Java攻城狮,熟练使用各种框架,并知道它们实现的原理。jvm虚拟机原理、调优,懂得jvm能让你写出性能更好的代码;池技术,什…...

华为OD机试用Python实现 -【查找树中的元素 or 查找二叉树节点】(2023-Q1 新题)

华为OD机试题 华为OD机试300题大纲查找树中的元素 or 查找二叉树节点题目描述输入描述输出描述说明示例一输入输出示例二输入输出Python 代码实现代码编写思路华为OD机试300题大纲 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 O…...

MyBatis——创建与使用

概念 当我们使用传统的jdbc进行数据库与程序的连接时,每一个操作都需要写一条sql语句,并且没法调试和修改 jdbc连接数据库流程: 创建数据库连接池DataSource获取数据库连接Connection执行带占位符的sql语句通过Connection创建操作对象Stat…...

【涨薪技术】0到1学会性能测试 —— 参数化关联

前言 上一次推文我们分享了性能测试工作原理、事务、检查点!今天给大家带来性能测试参数化,检查点知识!后续文章都会系统分享干货,带大家从0到1学会性能测试,另外还有教程等同步资料,文末免费获取~ 01、性…...

go进阶(2) -深入理解Channel实现原理

Go的并发模型已经在https://guisu.blog.csdn.net/article/details/129107148 详细说明。 1、channel使用详解 1、channel概述 Go的CSP并发模型,是通过goroutine和channel来实现的。 channel是Go语言中各个并发结构体(goroutine)之前的通信机制。 通俗的讲&#xf…...

数组(二)-- LeetCode[303][304] 区域和检索 - 数组不可变

1 区域和检索 - 数组不可变 1.1 题目描述 题目链接:https://leetcode.cn/problems/range-sum-query-immutable/ 1.2 思路分析 最朴素的想法是存储数组 nums 的值,每次调用 sumRange 时,通过循环的方法计算数组 nums 从下标 iii 到下标 jjj …...

22-基于分时电价条件下家庭能量管理策略研究MATLAB程序

参考文献:《基于分时电价和蓄电池实时控制策略的家庭能量系统优化》参考部分模型《计及舒适度的家庭能量管理系统优化控制策略》参考部分模型主要内容:主要做的是家庭能量管理模型,首先构建了电动汽车、空调、热水器以及烘干机等若干家庭用户…...

“XXX.app 已损坏,打不开。您应该将它移到废纸篓”,Mac应用程序无法打开或文件损坏的处理方法(2)

1. 检查状态 在sip系统完整性关闭前,我们先检查是否启用了SIP系统完整性保护。打开终端输入以下命令【csrutil status】并回车: 你会看到以下信息中的一个,用来指示SIP状态。已关闭 disabled: System Integrity Protection status: disabl…...

flask入门-3.Flask操作数据库

3. Flask操作数据库 1. 连接数据库 首先下载 MySQL数据库 其次下载对应的包: pip install pymysql pip install flask-sqlalchemy在 app.py 中进行连接测试 from flask import Flask, request, render_template from flask_sqlalchemy import SQLAlchemyhostname "1…...

STM32 使用microros与ROS2通信

本文主要介绍如何在STM32中使用microros与ROS2进行通信,在ROS1中标准的库是rosserial,在ROS2中则是microros,目前网上的资料也有一部分了,但是都没有提供完整可验证的demo,本文将根据提供的demo一步步给大家进行演示。1、首先如果你用的不是S…...

51单片机入门 - 测试:SDCC / Keil C51 会让没有调用的函数参与编译吗?

Small Device C Compiler(SDCC)是一款免费 C 编译器,适用于 8 位微控制器。 不想看测试过程的话可以直接划到最下面看结论:) 关于软硬件环境的信息: Windows 10STC89C52RCSDCC (构建HEX文件&…...

【计算机网络】计算机网络

目录一、概述计算机网络体系结构二、应用层DNS应用文件传输应用DHCP 应用电子邮件应用Web应用当访问一个网页的时候,都会发生什么三、传输层UDP 和 TCP 的特点UDP 首部格式TCP 首部格式TCP 的三次握手TCP 的四次挥手TCP 流量控制TCP 拥塞控制三、网络层IP 数据报格式…...

【java web篇】项目管理构建工具Maven简介以及安装配置

📋 个人简介 💖 作者简介:大家好,我是阿牛,全栈领域优质创作者。😜📝 个人主页:馆主阿牛🔥🎉 支持我:点赞👍收藏⭐️留言&#x1f4d…...

springboot笔记

微服务架构 微服务是一种架构风格,开发构建应用的时候把应用的业务构建成一个个的小服务(这就类似于把我们的应用程序构建成了一个个小小的盒子,它们在一个大的容器中运行,这种一个个的小盒子我们把它叫做服务)&#…...

【多线程与高并发】- 浅谈volatile

浅谈volatile简介JMM概述volatile的特性1、可见性举个例子总结2、无法保证原子性举个例子分析使用volatile对原子性测试使用锁的机制总结3、禁止指令重排什么是指令重排序重排序怎么提高执行速度重排序的问题所在volatile禁止指令重排序内存屏障(Memory Barrier)作用volatile内…...

avro格式详解

【Avro介绍】Apache Avro是hadoop中的一个子项目,也是一个数据序列化系统,其数据最终以二进制格式,采用行式存储的方式进行存储。Avro提供了:丰富的数据结构可压缩、快速的二进制数据格式一个用来存储持久化数据的容器文件远程过程…...

【涨薪技术】0到1学会性能测试 —— LR录制回放事务检查点

前言 上一次推文我们分享了性能测试分类和应用领域,今天带大家学习性能测试工作原理、事务、检查点!后续文章都会系统分享干货,带大家从0到1学会性能测试,另外还有教程等同步资料,文末免费获取~ 01、LR工作原理 通常…...

卡尔曼滤波原理及代码实战

目录简介1.原理介绍场景假设(1).下一时刻的状态(2).增加系统的内部控制(3).考虑运动系统外部的影响(4).后验估计:预测结果与观测结果的融合卡尔曼增益K2.卡尔曼滤波计算过程(1).预测阶段(先验估计阶段)(2).更新阶段(后验估计阶段&…...

Jmeter使用教程

目录一,简介二,Jmeter安装1,下载2,安装三,创建测试1,创建线程组2,创建HTTP请求默认值3,创建HTTP请求4,添加HTTP请求头5,添加断言6,添加查看结果树…...

论文笔记|固定效应的解释和使用

DeHaan E. Using and interpreting fixed effects models[J]. Available at SSRN 3699777, 2021. 虽然固定效应在金融经济学研究中无处不在,但许多研究人员对作用的了解有限。这篇论文解释了固定效应如何消除遗漏变量偏差并影响标准误差,并讨论了使用固…...

数据集市与数据仓库的区别

数据仓库是企业级的,能为整个企业各个部门的运作提供决策支持;而数据集市则是部门级的,一般只能为某个局部范围内的管理人员服务,因此也称之为部门级数据仓库。 1、两种数据集市结构 数据集市按数据的来源分为以下两种 &#x…...

Golang学习Day3

😋 大家好,我是YAy_17,是一枚爱好网安的小白。 本人水平有限,欢迎各位师傅指点,欢迎关注 😁,一起学习 💗 ,一起进步 ⭐ 。 ⭐ 此后如竟没有炬火,我便是唯一的…...

Python并发编程-事件驱动模型

一、事件驱动模型介绍 1、传统的编程模式 例如:线性模式大致流程 开始--->代码块A--->代码块B--->代码块C--->代码块D--->......---&…...

构建系统发育树简述

1. 要点 系统发育树代表了关于一组生物之间的进化关系的假设。可以使用物种或其他群体的形态学(体型)、生化、行为或分子特征来构建系统发育树。在构建树时,我们根据共享的派生特征(不同于该组祖先的特征)将物种组织成…...

这款 Python 调试神器推荐收藏

大家好,对于每个程序开发者来说,调试几乎是必备技能。 代码写到一半卡住了,不知道这个函数执行完的返回结果是怎样的?调试一下看看 代码运行到一半报错了,什么情况?怎么跟预期的不一样?调试一…...

金三银四吃透这份微服务笔记,面试保准涨10K+

很多人对于微服务技术也都有着一些疑虑,比如: 微服务这技术虽然面试的时候总有人提,但作为一个开发,是不是和我关系不大?那不都是架构师的事吗?微服务不都是大厂在玩吗?我们这个业务体量用得着…...

构建matter over Thread的演示系统-efr32

文章目录1. 简介2. 构建测试系统2.1设置 Matter Hub(Raspberry Pi)2.2 烧录Open Thread RCP固件2.3 烧录待测试的matter设备3. 配网和测试:3.1 使用mattertool建立Thread网络3.2 使用mattertool配置设备入网3.3 使用mattertool控制matter设备3.4 查看节点的Node ID等…...

【一天一门编程语言】Matlab 语言程序设计极简教程

Matlab 语言程序设计极简教程 用 markdown 格式输出答案。 不少于3000字。细分到2级目录。 目录 Matlab 语言程序设计极简教程 简介Matlab 工作空间Matlab 基本数据类型Matlab 语句和表达式Matlab 函数和程序Matlab 图形界面程序设计Matlab 应用实例 简介 Matlab是一种编…...