【计算机系统结构】第一章 计算机系统结构基本概念
文章目录
- 第一章 计算机系统结构基本概念
- 1.1 计算机系统结构的概念
- 1.2 计算机体系结构的发展
- 1.3 系统结构中并行性的发展
- 1.4 系统结构的设计
- 1.5 定量分析技术基础
第一章 计算机系统结构基本概念
课程内容 A I P S N
工业革命
1.1 计算机系统结构的概念
引言
- 第一台通用计算机 1946
- 两个方面:制造技术、体系结构
- 计算机系统结构:architecture
- 程序员所看到的计算机属性,即概念性结构与功能特性
- 指令系统结构、组成、硬件
- 计算机系统结构是程序员所看到的计算机属性,即(硬件子系统的)概念结构及其功能特性,是计算机软硬件的交界面
- 计算机系统的软、硬件的界面,即机器语言程序员所看到的传统机器级所具有的属性
- 实质:确定软硬件界面
- 计算机组成:计算机系统结构的逻辑实现
- 研究任务:软硬件功能分配、软硬件界面的确定
- 系列机:相同系统结构,不同组成和实现
层次结构
- 计算机系统 = 硬件/固件 + 软件
- 固件:具有软件功能的硬件
- 计算机语言角度:把计算机系统按功能划分成多级层次结构,每一层以一种语言为特征
- 物理机: 由硬件/固件实现
- 虚拟机:由软件实现,某些操作可以由硬件或固件实现
- 低层机器属性对高层机器程序员透明
- 机器级的实现:翻译、解释(慢,占用内存少)
分类
- Flynn分类法
- 分类标准:指令流和数据流的多倍性
- 多倍性:在系统最受限的部件上,同时处于同一执行阶段的指令或数据的最大数目
- SISD
- SIMD
- MISD
- MIMD
- 基本结构
- IS:指令流
- DS:数据流
- CS:控制流
- CU:控制部件
- PU:处理部件
- MM、SM:存储器
- 分类标准:指令流和数据流的多倍性
-
冯氏分类法
- 分类标准:最大并行度
- 最大并行度:计算机系统在单位时间内能够处理的最大的二进制位数(字宽*字数)
- 平均并行度:取决于系统的运用程度,与应用程序有关
- 每个时钟周期同时处理的二进制位数为 Pi,T 个时钟周期
- 平均并行度 Pa=∑i=1TPiTP_{a}=\frac{\sum_{i=1}^{T} P_{i}}{T}Pa=T∑i=1TPi
- 平均利用率 μ=PaPm=∑i=1TPiTPm\mu=\frac{P_{a}}{P_{m}}=\frac{\sum_{i=1}^{T} P_{i}}{T P_{m}}μ=PmPa=TPm∑i=1TPi
- 每个时钟周期同时处理的二进制位数为 Pi,T 个时钟周期
- 字串位串:n=1,m=1 每次只对一个字的一位进行处理,第一代计算机
- 字串位并:n>1,m=1 同时处理单个字的多个位,单处理机,如16位、32位等
- 字并位串:n=1,m>1 同时处理多个字的同一位(位片)
- 字并位并:n>1,m>1 同时处理多个字的多个位
- 分类标准:最大并行度
-
Handler分类法
- 分类标准:并行度和流水线
- t(系统型号) = (k,d,w)
- k:程序控制部件(PCU)的个数
- d:算术逻辑部件(ALU)或处理部件(PE)的个数
- w:每个算术逻辑部件包含基本逻辑线路(ELC)的套数
- t(系统型号) = (kk’,dd’,w*w’)
- k’:宏流水线中程序控制部件的个数
- d’:指令流水线中算术逻辑部件的个数
- w’:操作流水线中基本逻辑线路的套数
1.2 计算机体系结构的发展
存储程序计算机体系结构及其发展
- 存储程序原理基本点:指令驱动
- 冯·诺依曼结构
- 运算器为中心
- 指令和数据同等对待
- 存储器是按地址访问
- 指令的执行是顺序的
- 指令由操作码和地址码组成
- 指令和数据均以二进制编码表示,采用二进制运算
- 非诺依曼体系结构
- 数据驱动
- 诺依曼瓶颈:中央处理器( CPU )和主存之间只有一条每次只能交换一个字的数据通路
- 优点
- 支持高度的并行操作
- VLSI技术
- 提高软件生产能力
- 缺点
- 操作开销过大
- 不能有效地利用传统诺依曼体系结构计算机已积累起来的丰富的软件资源
- 系统结构改进
- 输入/输出方式
- 程序控制:等待、中断
- DMA:成组传递、周期挪用
- I/O处理机:通道、外围处理机
- 并行处理技术
- 存储器组织结构的发展
- 指令系统的发展
- 复杂指令集计算机CISC
- 精减指令集计算机RISC
- 输入/输出方式
软件影响:可移植性
- 统一高级语言
- 系列机:同一厂家、相同系统结构、不同组成和实现
- 向上(下)兼容
- 向前(后)兼容:
- 向后兼容:系列机的根本特征
- 兼容机:不同厂家、相同系统结构
- 模拟和仿真
- 在一种系统结构上实现另一种系统结构
- 在一种机器上实现另一种机器的指令集
- 模拟:虚拟机
- 解释实现,速度较慢
- 仿真:目标机
- 比模拟快,系统结构差距不大
器件影响
- 系统结构发展的最活跃因素:
- 摩尔定律:集成电路芯片上所集成的晶体管数目每隔18个月就翻一番
应用影响
- 系统结构发展的最根本的动力:应用需求
- 特殊领域需要高性能的系统结构
1.3 系统结构中并行性的发展
并行性
- 概念:计算机系统在同一时刻或者同一时间间隔内进行多种运算或操作
- 同时性:同一时刻
- 并发性:同一时间间隔
- 并行性等级,由低到高
- 数据处理
- 字串位串:每次只对一个字的一位进行处理
- 字串位并:同时处理单个字的多个位
- 字并位串:同时处理多个字的同一位(位片)
- 字并位并(全并行):同时处理多个字的多个位
- 执行程序
- 指令内部并行:单条指令中各微操作之间的并行
- 指令级并行:并行执行两条或两条以上的指令
- 线程级并行:并行执行两个或两个以上的线程
- 任务级或过程级并行:并行执行两个或两个以上的过程或任务(子程序/进程)
- 作业或程序级并行:并行执行两个或两个以上的作业或程序
- 数据处理
- 提高并行性技术途径
- 时间重叠:处理过程错开,加快硬件周转
- 资源重复:重复设置硬件资源
- 资源共享:软件方法,顺序轮流使用同一套硬件设备
- 单机系统的并行性
- 时间重叠:主导作用,部件功能专用化
- 资源重复:多体存储器,多操作部件(指令级并行),阵列处理机
- 资源共享:虚拟机,分时系统
- 多机系统的并行性
- 分类:同构型多处理机、异构型多处理机、分布式系统
- 耦合度:多机系统中各机器之间物理连接的紧密程度和交互作用能力的强弱
- 紧密耦合系统(直接耦合系统):总线或高速开关互连,共享主存
- 松散耦合系统(间接耦合系统):通道或通信线路互连,共享外存
- 最低耦合:除某种中间介质外,无连接无共享
- 功能专用化(时间重叠、异构型多处理机)
- 机间互连(同构型多处理机系统)
- 并行机的发展
- 并行机的萌芽阶段(1964年~1975年)
- 向量机的发展和鼎盛阶段(1976年~1990年)
- MPP出现和蓬勃发展阶段(1990年~1995年)
- 各种体系结构并存阶段(1995年~2000年)
- 机群蓬勃发展阶段(2000年以后)
1.4 系统结构的设计
任务
- 指令系统的设计、数据表示的设计、功能的组织、逻辑设计以及其物理实现等
- 三个方面
- 确定用户对计算机系统的功能、价格和性能的要求
- 软硬件功能分配(平衡)
- 设计出生命周期长的系统结构(符合发展方向)
主要方法
- “由上往下”(top-down)设计
- 适合于专用机的设计,而不适合通用机的设计
- “由下往上”(bottom-up)设计
- 软件技术为被动状态,软硬件脱节,系统效率降低
- 现在很少使用
- “从中间开始”(middle-out)设计
- 中间:软硬件的交界面
程序局部性原理
- 时间局部性:即将用到的信息很可能就是目前正在使用的信息
- 空间局部性:即将用到的信息很可能与目前正在使用的信息在空间上相邻或者临近
设计准则
- 以经常性事件为重点(大概率事件优先原则)
- 优化:分配更多资源
Amdahl 定律
- 系统加速比 SnS_nSn :> 1;改进前与改进后总执行时间之比 Sn=T0Tn=11−Fe+FeSeS_n=\frac{T_0}{T_n}=\frac{1}{1-F_e+\frac{F_e}{S_e}}Sn=TnT0=1−Fe+SeFe1
- 可改进比例 FeF_eFe :< 1;改进前,可改进部分执行时间在总执行时间中的占比
- 部件加速比 SeS_eSe :> 1;可改进部分改进后性能提高的倍数。改进前执行时间与改进后执行时间的比
- 改进后程序的总执行时间 TnT_nTn :T0=(1−Fe+FeSe)T_0=(1-F_e+\frac{F_e}{S_e})T0=(1−Fe+SeFe)
- T0T_0T0 改进前总执行时间
- 如果只对整个任务的一部分做改进,则改进得越多,所得到的总体性能提升就越有限
- 如果只对整个任务的一部分做改进,则加速比不超过 11−Fe\frac{1}{1-F_e}1−Fe1
1.5 定量分析技术基础
性能评测
- 执行时间、吞吐率
- 用户:执行时间(单个程序所花的时间)
- 数据中心管理员:吞吐率(单位时间里能够完成的任务)
- CPU时间
- CPU执行所给定的程序所花费的时间,不包含I/O等待时间以及运行其它程序的时间
- 用户CPU时间:用户程序所耗费的CPU时间
- 系统CPU时间:用户程序运行期间操作系统耗费的CPU时间
基准测试程序
- 最佳选择:真实应用程序
- 简化程序:不可靠
- 核心测试程序:真实程序的关键代码段
- 小测试程序:100行以内的小程序
- 合成的测试程序:按比例合成
- 基准测试程序套件:真实应用程序构成
- 分类:处理器性能测试程序,图形性能测试程序
- SPEC系列
评价标准
- 主要性能指标
- MIPS:每秒百万指令数
- MIPS=CI执行时间×106=1CPI×T×106=fCPI×106MIPS = \frac{CI}{执行时间 \times 10^6} =\frac{1}{CPI \times T \times 10^6} = \frac{f}{CPI \times 10^6}MIPS=执行时间×106CI=CPI×T×1061=CPI×106f
- MFLOPS:每秒百万浮点指令数
- MFLOPS=浮点操作次数执行时间×106MFLOPS = \frac{浮点操作次数}{执行时间 \times 10^6}MFLOPS=执行时间×106浮点操作次数
- 执行时间
- 总执行时间:执行所有程序时间的加和
- (加权)平均执行时间:各个测试程序的算术/加权平均值
- 调和平均值法
- 加权调和平均值公式
- 几何平均值法
- 加权几何平均值
- MIPS:每秒百万指令数
CPU性能
- CPU时间:执行一个程序所需的CPU时间
- CPU时间 = 执行程序所需的时钟周期数 × 时钟周期时间(系统时钟频率的倒数)
- CPU时间 = IC × CPI × 时钟周期时间
- 时钟周期时间:硬件实现、计算机组成
- CPI:计算机组成、指令系统结构
- IC:指令系统结构、编译技术
- 计算机系统有 n 种指令
- 时钟周期数 = ∑i=1n(CPIi×ICi)\sum_{i=1}^{n}(CPI_i \times IC_i)∑i=1n(CPIi×ICi)
- CPU时间 = ∑i=1n(CPIi×ICi)\sum_{i=1}^{n}(CPI_i \times IC_i)∑i=1n(CPIi×ICi) × 时钟周期时间
- CPI=∑i=1n(CPIi×ICi)IC=∑i=1n(CPIi×ICiIC)CPI = \frac{\sum_{i=1}^{n}(CPI_i \times IC_i)}{IC} = \sum_{i=1}^{n}(CPI_i \times \frac{IC_i}{IC})CPI=IC∑i=1n(CPIi×ICi)=∑i=1n(CPIi×ICICi)
- CPI:指令执行的平均时钟周期数
- CPI = 执行程序所需的时钟周期数 / IC
- IC:执行的指令条数
相关文章:

【计算机系统结构】第一章 计算机系统结构基本概念
文章目录第一章 计算机系统结构基本概念1.1 计算机系统结构的概念1.2 计算机体系结构的发展1.3 系统结构中并行性的发展1.4 系统结构的设计1.5 定量分析技术基础第一章 计算机系统结构基本概念 课程内容 A I P S N 工业革命 1.1 计算机系统结构的概念 引言 第一台通用计算机 …...
e2fsprogs logsave Ubuntu 安装失败 unable to make backup link of ‘./usr/bin/chattr‘
最近给服务器从 Ubuntu 18.04 LTS 升级到 20.04 LTS,过程中崩溃,重新尝试执行,提示依赖错误。这时候 apt install 所有的东西都会报错,提示依赖不满足。(这里的报错忘了复制了)执行 apt upgrade 也是一样。…...
在排序数组中查找元素的第一个和最后一个位置(二分查找进阶)
在写这个题目之前需要大家自行看一下我之前写的博客有关二分查找思想,如何判断什么时候使用二分查找以及边界值的确定:二分查找思想力扣实例_徐憨憨!的博客-CSDN博客 题目:给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定…...

1 Nginx跨域配置
跨域问题在之前的单体架构开发中,其实是比较少见的问题,除非是需要接入第三方SDK时,才需要处理此问题。但随着现在前后端分离、分布式架构的流行,跨域问题也成为了每个Java开发必须要懂得解决的一个问题。 跨域问题产生的原因 产…...

ChatGTP如此强大,我们普通人如何利用它来赚钱?
我从效率提升的角度,分享了我这段时间看到的、用到的,以及思考的一些内容。 最近这段时间,我算是密集的学习。不得不说,优质的资料在推特和油管上特别多,看科技大佬的分享真是一种享受。 很多大神也会录制各种详细的…...

常见的九种大数据分析模型
常见的9种大数据分析模型分别为: 事件分析、 属性分析、 渠道分析、 Session分析、 留存分析、 归因分析、 漏斗分析、 路径分析、 分布分析 1、【事件分析】 事件分析,是指用户在 APP、网站等应用上发生的行为,即何人,何时&…...
射频识别(RFID)技术的基本原理、特性、发展和应用
何谓射频识别 随着高科技的蓬勃发展,智能化管理已经走进了人们的社会生活,一些门禁卡、第二代身份证、公交卡、超市的物品标签等,这些卡片正在改变人们的生活方式。其实秘密就在这些卡片都使用了射频识别技术,可以说射频识别已成…...

3.3 二维随机变量条件分布
学习目标: 要学习二维随机变量的条件分布,我可能会采取以下步骤: 复习边缘分布和联合分布:首先需要了解二维随机变量的边缘分布和联合分布的概念以及相应的公式。 复习条件概率:学习条件概率的定义和计算公式&#x…...

Kafka——概述、安装及命令行操作
文章目录一、概述1.1、定义1.2、如何运作?1.3、传统消息队列的应用场景1.4、消息队列的两种模式1.5、Kafka的基础架构二、安装(需要安装zookeeper)三、常用命令行操作3.1、主题命令行操作3.2、生产者命令行操作3.3、消费者命令行操作一、概述…...
怎么控制ERP企业管理系统开发的价格
企业资源规划(ERP)是一种广泛使用的商业软件系统,用于管理企业的各个方面,包括财务、供应链、客户关系、人力资源等等。开发一个适合企业的ERP系统可能是一项昂贵的任务,但控制ERP企业管理系统开发的价格是可行的。以下…...

我在“Now In Android”中学到的 9 件事
我在“Now In Android”中学到的 9 件事 Now in Android是一款功能齐全的 Android 应用程序,完全使用 Kotlin 和 Jetpack Compose 构建。它遵循 Android 设计和开发最佳实践,旨在为开发人员提供有用的参考。 https://github.com/android/nowinandroid UI…...

ChatGPT宝藏插件丨装上之后,上网、语音聊天、一键分享对话……简直让你爽到起飞!
今天分享4个让你的 ChatGPT 功能更强大的浏览器插件,装上就能用,每一个都是精挑细选。 1. WebChatGPT 很多小伙伴在用 ChatGPT查阅信息时,发现它有一个致命的问题: ChatGPT的知识库全部截止到 2021年9月,正常情况下…...

私有句柄表
私有句柄表 实验环境 win7 x86 什么是私有句柄表? 私有句柄表是操作系统内部的一种数据结构,用于存储一个进程所拥有的句柄(或称为句柄对象)的信息。在操作系统中,句柄是一个标识符,用于唯一标识一个对…...
Vue——类与样式绑定
目录 Class 与 Style 绑定 绑定 HTML class 绑定对象 绑定数组 在组件上使用 绑定内联样式 绑定对象 绑定数组 自动前缀 样式多值 Class 与 Style 绑定 数据绑定的一个常见需求场景是操纵元素的 CSS class 列表和内联样式。因为 class 和 styl…...
软考中项计算题总结
计算题在下午的考试属于重中之重,可以说得计算题得天下,先把计算题搞定,再看案例找错题,这2个是最容易得分的,所以对于进度、成本类的计算题一定要搞懂: 所属项目过程计算计算公式说明进度管理三点估算&am…...

如何使用基于GPT-4的Cursor编辑器提升开发效率
程序员最恨两件事情:一是别人代码不写文档,二是要让自己写文档。随着 GPT-4 的到来这些都不是问题了,顺带可能连程序员都解决了。。。 之前一直觉得 AI 生成的代码也就写个面试题的水平,小打小闹,现在时代可变了。Curs…...

压箱底教程分享,手把手教会你如何注册target账号和下单
喜欢套利的朋友肯定都认识target这个平台吧,它是美国热门的综合性海淘网站之一。东哥近日收到私信有朋友向我请教在注册target账号时遇到的一些问题,所以今天东哥想跟大家分享的就是就是target账号注册教程和下单流程,让也想注册target账号的…...

一次性搞懂dBSPL、dBm、dBu、dBV、dBFS的区别!
相信学习音乐制作的同学在混音阶段经常会碰到各种关于声音的单位,其中最具代表性的可能就是分贝家族的单位了,如dBSPL、dBm、dBu、dBV、dBFS等。 那么,这些单位分别表示什么,又有什么区别呢? 描述声音信号强弱的单位…...

漂亮实用的15个脑图模板,你知道哪些是AI做的吗?
对于很多第一次接触到思维导图的朋友,看到软件的时候往往找不到方向,不知道如何创作? 今天大家的好助手来了。 一是有大量的思维导图模板,大家看着模板做,慢慢就会做了。 二是ProcessOn 思维导图已经可以用AI 做思维…...
历代程序员都无法逃脱的诅咒 -- 低代码
1764年5月4日星期四 愤怒的纺织工人 纵火烧毁了哈格里夫斯的家 因为他发明的珍妮纺织机 让很多当地的手工纺织工人失业了 这也被认为是第一次工业革命的开端 由于事发的星期四 所以这一事件也被称作疯狂星期四 类似的变革 也一次次的出现在软件行业 他是历代程序员都无法逃脱的…...

使用 Mechanical 脚本获取联合反作用力和力矩
介绍 在上一篇文章中,我们详细介绍了在 Ansys Mechanical 静态/瞬态结构、随机振动和/或响应谱分析中提取所有螺栓连接的反作用力的过程。他,我们将讨论如何使用 Python 代码结果对象对关节连接执行相同的作,这对于随机振动/响应谱分析非常有…...

007-nlohmann/json 项目应用-C++开源库108杰
本课为 fswatch(第一“杰”)的示例项目加上对配置文件读取的支持,同时借助 第三“杰” CLI11 的支持,完美实现命令行参数与配置文件的逻辑统一。 012-nlohmann/json-4-项目应用 项目基于原有的 CMake 项目 HelloFSWatch 修改。 C…...
【基础】每天掌握一个Linux命令 - awk
目录 【基础】每天掌握一个Linux命令 - awk一、工具概述二、安装方式Ubuntu/Debian系统:CentOS/RHEL系统:macOS系统: 三、核心功能四、基础用法基本语法常用选项内置变量基本操作示例1. 打印文件所有内容2. 打印每行的第一个字段3. 指定分隔符…...

《UE5_C++多人TPS完整教程》学习笔记37 ——《P38 变量复制(Variable Replication)》
本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P38 变量复制(Variable Replication)》 的学习笔记,该系列教学视频为计算机工程师、程序员、游戏开发者、作家(Engineer, Programmer, Game Developer, Author)…...

IDEA安装迁移IDEA配置数据位置
需求 因为C盘有清空风险,需要把IDEA(2025)安装位置以及配置数据都挪到D盘。 安装 到官网下载安装包 安装,这里可以改下安装位置 这几个选项随意,然后一直下一步就好 完成后重启或不重启都随意 迁移数据 初次安…...
Registry和docker有什么关系?
当遇到多个服务器需要同时传docker镜像的时候,一个一个的传效率会非常慢且压力完全在发送方的网络带宽;可以参考git hub,通常我们会用git push将代码传到git hub,如果谁需要代码用git pull就可以拉到自己的机器上,dock…...

ASP.NET Core 中间件深度解析:构建灵活高效的请求处理管道
在现代Web应用开发中,请求处理管道的设计和实现至关重要。ASP.NET Core通过其中间件(Middleware)系统提供了一种高度灵活、可扩展的方式来构建请求处理管道。本文将全面深入地探讨ASP.NET Core中间件的概念、工作原理、实现方式以及最佳实践,帮助开发者掌…...

阿里云ACP云计算备考笔记 (3)——云存储RDS
目录 第一章 云存储概览 1、云存储通用知识 ① 发展历史 ② 云存储的优势 2、云存储分类 3、文件存储业务场景 第二章 块存储 1、块存储分类 2、云盘的优势 3、创建云盘 4、管理数据盘 ① 格式化数据盘 ② 挂载数据盘 ③ 通过 API 挂载云盘 5、管理系统盘 ① 更…...
互联网大厂Java求职面试:AI与大模型技术在企业知识库中的深度应用
互联网大厂Java求职面试:AI与大模型技术在企业知识库中的深度应用 第一轮:场景引入与基础架构设计 面试官(技术总监): “郑薪苦,我们先从一个实际场景开始吧。假设我们要为企业知识库设计一个深度融合AI大…...

面向对象进阶 | 深入探究 Java 静态成员与继承体系
个人主页 文章专栏 文章目录 个人主页文章专栏 一、static(静态)1.static 静态变量代码展示内存图 2.static 静态方法工具类:练习: 3.static注意事项4.重新认识main方法 二、继承1.继承概述2.继承的特点3.子类到底能继承父类中的…...