软考高级之系统架构师之计算机基础
概述
今天是9月28日,距离软考高级只剩37天,加油!
概念
三种周期:
- Clock Cycle:时钟周期,CPU主频,又称为时钟频率,时钟周期是时钟频率的倒数
- Instruction Cycle:指令周期,取出并执行一条指令的时间
- BUS Cycle:总线周期,也就是一个访存储器或I/O端口粮作所用的时间
三者关系:一个指令周期由若干个总线周期组成,一个总线周期时间又包含有若干个时钟周期。
主频为1GHz,则说明1秒钟有1G个时钟周期,每个时钟周期为1000*1000*1000/1G=1ns。
吞吐率
吞吐率指的是单位时间内完成的任务数,常用表示方式有MIPS和MFLOPS:
- MIPS:Million Instructions Per Second,每秒处理的百万级的机器语言指令数,主要用于衡量标量机性能
- MFLOPS:Million Floating-point Operations Per Second,每秒百万个浮点操作,不能反映整体情况,只能反映浮点运算情况,主要用于衡量向量机性能。
完成一个指令需要5个机器周期,一个机器周期为3微秒(µs),则MIPS=1/15=0.067。
1秒=1000毫秒(ms)=1000000微秒(µs)=1000000000纳秒(ns)
编码及浮点数
原码、反码、补码
原码:为二进制的数,如十进制数字10的原码为0000 1010
反码:正数与原码相同,如:十进制数字10的反码0000 1010,负数为原码0变1,1变0,符号位不变。如:十进制数字-10,原码1000 1010,反码1111 0101
补码:正数的补码与原码相同,如10的补码为:0000 1010。负数的反码为补码减1,如-10的反码:1111 0101,补码:1111 0110
计算机中数字以补码储存,因为原码和反码计算不准确,而补码是准确的,补码可以直接处理正负数的加减。
浮点数
科学计数法:N=尾数*基数(的指数)
- 浮点数各部分表示意义:
N = 尾数*基数指数- 一般尾数用补码,阶码用移码;
- 阶码的位数决定数的表示范围,位数越多范围越大;
- 尾数的位数决定数的有效精度,位数越多精度越高。
浮点数所能表示的数值范围如下:最大的正数
- 浮点数运算规则:
对阶 > 尾数计算 > 结果格式化- 对阶时,小数向大数看齐;
- 对阶是通过较小数的尾数右移实现的。
流水线
流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各种部件同时处理是针对不同指令而言的,它们可同时为多条指令的不同部分进行工作,以提高各部件的利用率和指令的平均执行速度。
流水线的思想:在CPU中把一条指令的串行执行过程变为若干指令的子过程在CPU中重叠执行。
并行包括同时性与并发性两种含义,同时性指两个或两个以上的事件在同一时刻发生,并发性指的是两个或两个以上的事件在同一时间间隔发生。
流水线建立时间:1条指令执行时间。
流水线周期:执行时间最长的一段
一条指令的执行过程可以分3个阶段:
- 取指:按照指令计数器的内容访问主存储器,取出一条指令送到指令寄存器。
- 分析:对指令操作码部分进行译码,按照给定的寻址方式和地址字段中的内容形成操作数地址,并用这个地址读取操作数。
- 执行:把运算结果写到通用寄存器或主存中。
顺序执行的过程:取址 -> 分析 -> 执行
使用流水线执行过程:

相关考点:
流水线执行时间(理论公式):(t1+t2+..+tk)+(n-1)*∆t
流水线执行时间(实践公式):k*∆t+(n-1)*∆t
流水线吞吐率:吞吐率TP=指令数/执行时间
流水线最大吞吐率:

流水线加速比:顺序执行时间/流水线执行时间
开机过程
BIOS引导程序是固化在ROM芯片上的,每当开机时自动执行BIOS引导程序。主要执行如下任务:
- 标识和配置所有的即插即用设备。如果系统有即插即用设备的BIOS,系统将搜索和测试所有安装的即插即用设备,并为它们分配DMA通道、IRQ及它们需要的其他设备
- 完成加电自检(POST)。加电自检主要检测和测试内存、端口、键盘、视频适配器、磁盘驱动器等基本设备。有一些新版本的系统还支持CD-ROM驱动器
- 对引导驱动器可引导分区定位。在CMOS中,用户可以设置系统的引导顺序,以便对引导驱动器的可引导分区重新定位。大多数系统的引导顺序是软件驱动,然后是硬件驱动,其次是CD-ROM驱动器
- 加载主引导记录及引导驱动器的分区表,执行主引导记录MBR。主引导记录在硬盘上找到可引导分区后,将其分区引导记录装入内存,并将控制权交给分区引导记录。由分区引导记录定位根目录,再装入操作系统。
Cache
Cache的功能全部由硬件实现。提高CPU数据输入输出的速率,突破冯·诺依曼瓶颈,即CPU与存储系统间数据传送带宽限制。在计算机的存储系统体系中,Cache是访问速度最快的层次。使用Cache改善系统性能的依据是程序的局部性原理。
- 时间局部性:如果一个信息项正在被访问,那么在近期很可能还会被再次访问。程序的循环,堆栈等是产生时间局部性的原因;
- 空间局部性:指一旦程序访问某个存储单元,不久以后,其附近的存储单元也将被访问,即程序在一段时间内所访问的地址可能集中在一定的范围内,其典型情况是程序顺序执行。
工作集理论:工作集是进程运行时被频繁访问的页面合集
工作原理:依据局部性原理,把主存储器中访问概率高的内容存放在cache中。当CPU需要读取数据时,首先在cache中查找是否有所需内容,如果有,则直接从cache中读取;若没有,再从主存中读取该数据,然后同时送往CPU和cache。
如果CPU需要访问的内容大多能在cache中找到(访问命中),则可以大大提高系统性能。CPU发出访存请求后,存储器地址先被送到cache控制器以确定所需数据是否已在cache中,若命中则直接对cache进行访问,该过程称为cache的地址映射。常见的映射方法有直接映射、相联映射和组相联映射:
- 直接相联映像:Direct Mapping,硬件电路较简单,但冲突率很高
- 全相联映像:Fully Associative Mapping,电路难于设计和实现,只适用于小容量的cache,冲突率较低
- 组相联映像:n路组相联映射,N-ways Set-Associative Mapping,直接相联与全相联的折中
Cache中数据装满后必须淘汰现有数据,装入新数据,淘汰算法有:随机淘汰法、先进先出法FIFO、近期最少使用淘汰法LRU。LRU平均命中率最高。
Cache写数据常用方法包含以下几类:
- 写直达:当要写cache时,数据同时写回主存储器,也称写通、贯穿
- 写回:CPU修改cache的某一行后,相应数据不立即写入主存,而在该行被从cache中淘汰时,才把数据写回主存储器中。
- 标记法:对cache中的每个数据设置一个有效位。当数据进入cache后,有效位置1,当CPU要对该数据进行修改时,只需将其写入主存储器,并将该位清0。当要从cache中读取数据时,需要测试其有效位:若为1则从cache中取,否则从主存中取。
校验码
校验码通常是一组数字的最后一位,由前面的数字通过某种运算得出,用以检验该组数字的正确性。
常见的校验码有:中华人民共和国居民身份证的最后一位、ISBN号码的最后一位、组织机构代码的最后一位、数据传输的正确性验证码等。
代码作为数据在向计算机或其它设备进行输入时,容易产生输入错误,为减少输入错误,编码专家发明各种校验检错方法,并依据这些方法设置校验码。
奇偶校验:只检奇数位错,不能纠错。
循环校验码CRC:可查错,不可纠错,运用模二除法计算校验码。
海明校验:可查错,可纠错;海明校验码校验位计算:2r>=r+m-1。
性能评估
性能指标
计算机系统的性能一般包括两个大的方面:
- 可用性,也就是计算机系统能正常工作的时间,其指标可以是能够持续工作的时间长度,也可以是在一段时间内,能正常工作的时间所占的百分比
- 处理能力,可分为三类指标:吞吐率、响应时间、资源利用率,即在给定时间区间中,各种部件被使用的时间与整个时间之比。
通常,计算机系统的可用性可从故障率(Failurerate)、健壮性(Robustness)和可恢复性(Recoverability)三个方面来进行评测:
- 故障率是指在给定的时间里,系统故障和维护事件出现的次数
- 健壮性是指系统检测和处理故障的能力,以及系统在各种故障情况下仍然具有的工作能力
- 可恢复性是指系统从故障状态恢复到正常状态的能力。
计算机应用系统的可移植性对推广应用来说是重要的,但对于使用单一系统的多数用户而言,可用性指标主要包括故障率、健壮性和可恢复性。
另外,不同计算机(系统、模块)的性能指标也是不尽相同,重在理解:
- 计算机:时钟频率(主频)、高速缓存、运算速度、运算精度、内存的存储容量、存储器的存取周期、数据处理速率、响应时间、RASIS特性、平均故障响应时间、兼容性
- 网络:设备级、网络级、应用级、用户级、吞吐量
- 操作系统:系统的可靠性、系统的吞吐量、系统响应时间、系统资源利用率、可移植性
- 数据库:数据库描述功能、管理功能、查询和操纵功能、维护功能、
- web服务器:括最大并发连接数、响应延迟、吞吐量(每秒处理的请求数)、成功请求数、失败请求数、每秒点击次数、每秒成功点击次数、每秒失败点击次数、尝试连接数、用户连接
性能评估
计算机性能评估(评价)方法基本上分为两大类,测量方法和模型方法
- 测量方法:通过一定的测量设备或测量程序,可以直接从系统中测得各项性能指标或与之密切的相关度量,然后由它们经过一些简单的运算,求出相应的性能指标。
- 模型方法:其基本思想是,首先对要评估的系统建立适当模型,然后求出模型的性能指标,以便对系统进行性能评估。
测量方法中经典的性能评估方法:
- 时钟频率法:计算机的时钟频率在一定程度上反映机器速度,对于同一种机型的计算机,时钟频率越高,计算机的速度就越快,但是不同体系结构的计算机,相同频率下,其速度和性能可能会差别很大。
- 指令执行速度法:计算机发展中,由于加法的指令速度大体上可反映出乘法、除法等其他算术运算的速度,而逻辑运算、转移指令等简单指令的执行时间往往设计成与加法指令相同,因此可以采用加法指令的运算速度来衡量计算机的速度。常用MIPS评估系统性能。
- 等效指令速度法:也称为吉普森或混合比例计算法,是通过各类指令在程序中所占比例进行计算后得到的计算机运算速度。需要计算各类指令在程序中所占的比例。
- 数据处理速率法:Processing Data Rate,PDR,采用计算PDR值的方法来衡量机器性能,PDR值越大,机器性能越好。PDR与每条指令和每个操作数的平均位数以及每条指令的平均运算速度有关。PDR主要对CPU和主存储器的速度进行度量,不适合衡量机器的整体速度,不能全面反映计算机的性能,因为它没有涉及Cache、多功能部件等技术对性能的影响。
- 综合理论性能法:CPT,该方法是首先计算出处理部件每个计算单元的有效计算率,再按不同字长加以调整,得出该计算单元的理论性能,所有组成该处理部件的计算单元的理论性能之和即为最终的计算机性能。采用每秒百万次理论运算(MTOPS)评估系统性能。
- 基准程序法:把应用程序中用得最多、最频繁的那部分核心程序作为评估计算机系统性能的标准程序,称为基准测试程序(benchmark)。基准程序法是目前一致承认的测试系统性能的较好方法。考虑诸如IVO结构、操作系统、编译程序的效率对系统性能的影响,
另有一说,对计算机系统的性能进行评价的方法主要有三种:
- 测量方法:主要是通过采用各种性能数据获取方法和运行各种不同类型的基准测试程序或工具来测量目标系统的性能情况
- 分析方法:通过为计算机系统建立一种数学模型,进而在给定输入条件下通过计算来获取目标系统的性能情况
- 模拟方法:通过构造系统模型和工作负载模型来近似模仿目标系统,以了解系统的特性
基准程序法
大多数情况下,为测试新系统的性能,用户必须依靠评价程序来评价机器的性能。把应用程序用的最多、最频繁的那部分核心程序作为评价计算机性能的标准程序,称为基准测试程序(benchmark)。
真实程序、核心程序、小型基准程序和合成基准程序,其评测的准确程度依次递减。
事务处理性能委员会(Transaction Processing Performance Council,TPC)是制定商务应用基准程序标准规范、性能和价格度量,并管理测试结果发布的非营利组织,其发布的TPC-C是在线事务处理的基准程序,TPC-D是决策支持的基准程序。
Web服务器性能指标主要有请求响应时间、事务响应时间、并发用户数、吞吐量、资源利用率、每秒钟系统能够处理的交易或者事务的数量等。
基准程序法主要针对CPU(有时包括主存)的性能,通常也会考虑I/O结构、操作系统、编译程序的效率等对系统性能的影响。
计算机系统的性能指标是一些精度较高的数据,用户调查问卷或专家小组法只能取得一些大致的、轮廓性的数据。多数用户并没有使用多种计算机系统,难以进行比较,所以计算机系统性能指标的评价一般不通过用户调查法来确定。
阿姆达尔定律
Gene Amdahl定律:提升一个系统的一个部分的性能对整个系统有多大影响。这里的系统,可指计算机系统或别的什么系统。
当提升系统的一部分性能时,对整个系统性能的影响取决于:
- 这一部分有多重要
- 这一部分性能提升多少
计算方法:

参考
相关文章:
软考高级之系统架构师之计算机基础
概述 今天是9月28日,距离软考高级只剩37天,加油! 概念 三种周期: Clock Cycle:时钟周期,CPU主频,又称为时钟频率,时钟周期是时钟频率的倒数Instruction Cycle:指令周…...
Mysql生产随笔
目录 1. Mysql批量Kill删除processlist 1.1查看进程、拼接、导出、执行 1.2常见错误解决方案 2.关于时区 3.内存占用优化 记录一下生产过程中的一些场景和命令使用方法,不定期进行更新 1. Mysql批量Kill删除processlist 1.1查看进程、拼接、导出、执行 sho…...
现代卷积网络实战系列2:PyTorch构建训练函数、LeNet网络
🌈🌈🌈现代卷积网络实战系列 总目录 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 1、MNIST数据集处理、加载、网络初始化、测试函数 2、训练函数、PyTorch构建LeNet网络 3、PyTorch从零构建AlexNet训练MNIST数据…...
leetCode 62.不同路径 动态规划 + 空间复杂度优化
62. 不同路径 - 力扣(LeetCode) 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” …...
在 .NET 8 Release Candidate 1 中推出 .NET MAUI:质量
作者:David Ortinau 排版:Alan Wang 今天,我们很高兴地宣布 .NET MAUI 在 .NET 8 Release Candidate 1 中已经可用,该版本带有适用于生产应用程序的正式许可证,因此您可以放心地将此版本用于生产环境。我们在 .NET 8 中…...
Spring 学习(八)事务管理
1. 事务 1.1 事务的 ACID 原则 数据库事务(transaction)是访问并可能操作各种数据项的一个数据库操作序列。事务必须满足 ACID 原则——即原子性(Atomicity)、一致性(Consistency)、隔离性(Iso…...
CodeTON Round 6 (Div 1 + Div 2, Rated, Prizes!)(A - E)
CodeTON Round 6 (Div. 1 Div. 2, Rated, Prizes!)(A - E) CodeTON Round 6 (Div. 1 Div. 2, Rated, Prizes!) A. MEXanized Array(分类讨论) 可以发现当 n < k 或者 k > x 1 的时候无法构成 , 其余的时候贪心的用 x 最大化贡献即…...
Spring 源码分析(五)——Spring三级缓存的作用分别是什么?
Spring 的三级缓存是经典面试题,也会看到一些文章讲三级缓存与循环依赖之的关系。那么,三级缓存分别存储的什么呢?他们的作用又分别是什么? 一、一、二级缓存 一级缓存是一个名为 singletonObjects 的 ConcurrentHashMap&#x…...
Django基于类视图实现增删改查
第一步:导入View from django.views import View 第二步:新建这个基类 class CLS_executer(View):db DB_executerdef get(self, request):executer_list list(self.db.objects.all().values())return HttpResponse(json.dumps(executer_list), conte…...
matplotlib绘图实现中文宋体的两种方法(亲测)
方法一:这种方法我没有测试。 第一步 找宋体字体 (win11系统) 2.matplotlib字体目录,如果不知道的话,可以通过以下代码查询: matplotlib.matplotlib_fname() 如果你是Anaconda3 安装的matplotlib&#x…...
非常有用的JavaScript高阶面试技巧!
🍀一、闭包 闭包是指函数中定义的函数,它可以访问外部函数的变量。闭包可以用来创建私有变量和方法,从而保护代码不受外界干扰。 // 例1 function outerFunction() {const privateVariable "私有变量";function innerFunction()…...
windows 安装Linux子系统 Ubuntu 并配置python3
环境说明: Windows 11 Ubuntu 20.04.6 安装步骤以及问题: 1、开启Windows Subsystem for Linux dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart 2、开启虚拟机特性 dism.exe /online /enabl…...
pytorch的pixel_shuffle转tflite文件
torch.pixel_shuffle()是pytorch里面上采样比较常用的方法,但是和tensoflow的depth_to_space不是完全一样的,虽然看起来功能很像,但是细微是有差异的 def tf_pixelshuffle(input, upscale_factor):temp []depth upscale_factor *upscale_f…...
sentinel-dashboard-1.8.0.jar开机自启动脚本
启动阿里巴巴的流控组件控制面板需要运行一个jar包,通常需要运行如下命令: java -server -Xms4G -Xmx4G -Dserver.port8080 -Dcsp.sentinel.dashboard.server127.0.0.1:8080 -Dproject.namesentinel-dashboard -jar sentinel-dashboard-1.8.0.jar &…...
c++堆排序-建堆-插入-删除-排序
本文以大根堆为例,用数组实现,它的nums[0]是数组最大值。 时间复杂度分析: 建堆o(n) 插入删除o(logn) 堆排序O(nlogn) 首先上代码 #include<bits/stdc.h>using namespace std; void down(vector<int>&nums, int idx, i…...
使用代理后pip install 出现ssl错误
window直接设置代理 httphttp://127.0.0.1:7890;httpshttp://127.0.0.1...
护眼灯什么价位的好?最具性价比的护眼台灯推荐
到了晚上光线比较弱,这时候就需要开灯,要是孩子需要近距离看字学习等等,给孩子选择的灯具要特别的重视。护眼灯就是目前颇受学生家长青睐的灯具之一,越来越多的人会购买一个护眼灯给自己的孩子让孩子能够在灯光下学习的时候&#…...
vue event bus 事件总线
vue event bus 事件总线 创建 工程: H:\java_work\java_springboot\vue_study ctrl按住不放 右键 悬着 powershell H:\java_work\java_springboot\js_study\Vue2_3入门到实战-配套资料\01-随堂代码素材\day04\准备代码\08-事件总线-扩展 vue --version vue crea…...
深信服云桌面用户忘记密码后的处理
深信服云桌面用户忘记了密码,分两种情况,一个是忘记了登录深信服云桌面的密码,另外一个是忘记了进入操作系统的密码。 一、忘记了登录深信服云桌面的密码 登录虚拟桌面接入管理系统界面,在用户管理中选择用户后,点击后…...
Cocos Creator3.8 实战问题(一)cocos creator prefab 无法显示内容
问题描述: cocos creator prefab 无法显示内容, 或者只显示一部分内容。 creator编辑器中能看见: 预览时,看不见内容: **问题原因:** prefab node 所在的layer,默认是default。 解决方法&…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
深度学习习题2
1.如果增加神经网络的宽度,精确度会增加到一个特定阈值后,便开始降低。造成这一现象的可能原因是什么? A、即使增加卷积核的数量,只有少部分的核会被用作预测 B、当卷积核数量增加时,神经网络的预测能力会降低 C、当卷…...
RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...
