【计算机系统结构】第一章 计算机系统结构基本概念
文章目录
- 第一章 计算机系统结构基本概念
- 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日星期四 愤怒的纺织工人 纵火烧毁了哈格里夫斯的家 因为他发明的珍妮纺织机 让很多当地的手工纺织工人失业了 这也被认为是第一次工业革命的开端 由于事发的星期四 所以这一事件也被称作疯狂星期四 类似的变革 也一次次的出现在软件行业 他是历代程序员都无法逃脱的…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
基于鸿蒙(HarmonyOS5)的打车小程序
1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...
