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

软考高级《系统架构设计师》知识点(一)

计算机硬件

校验码

  • 码距:就单个编码A:00而言,其码距为1,因为其只需要改变一位就变成另一个编码。在两个编码中,从A码到B码转换所需要改变的位数称为码距,如A:00要转换为B:11,码距为2。一般来说,码距越大,越利于纠错和检错
  • 奇偶校验码:在编码中增加1位校验位来使编码中1的个数为奇数(奇校验)或者偶数(偶校验),从而使码距变为2。奇校验可以检测编码中奇数个数据位出错,即当合法编码中的奇数位发生了错误时,即编码中的1变成0或者0变成1,则该编码中1的个数的奇偶性就发生了变化,从而检查出错误。但无法纠错
  • 循环冗余校验码CRC:CRC只能检错,不能纠错,其原理是找出一个能整除多项式的编码,因此首先要将原始报文除以多项式,将所得的余数作为校验位加在原始报文之后,作为发送数据发给接收方。

计算机硬件和指令

  • 计算机的硬件基本系统由五大部分组成:运算器控制器存储器输入设备(如鼠标键盘)、输出设备(如显示器)。
  • 运算器和控制器合并称为中央处理单元,即CPU
  • 存储器分为内部存储器(即内存,容量小,速度快,临时存放数据)和外部存储器(即硬盘、光盘等,容量大,速度慢,长期保存数据)。
  • 输入设备和输出设备合并称为外设
  • 鼠标键盘等输入设备都是通过中断的原理来实现控制,点击后触发中断,首先进入中断处理程序
  • 主机:CPU(运算器、控制器)、+主存储器。
  • CPU:由运算器控制器寄存器组内部总线组成。实现程序控制、操作控制、时间控制、数据处理功能。
  • 运算器:由算术逻辑单元ALU(实现对数据的算术和逻辑运算)、累加寄存器AC(运算结果或源操作数的存放区)、数据缓冲寄存器DR(暂时存放内存的指令或数据)、和状态条件寄存器PSW(保存指令运行结果的条件码内容,如溢出标志等)组成。执行所有的算术运算,如加减乘除等;执行所有的逻辑运算并进行逻辑测试,如与、或、非、比较等。
  • 控制器:由指令寄存器IR(暂存CPU执行指令)、程序计数器PC(存放指令执行地址)、地址寄存器AR(保存当前CPU所访问的内存地址)、指令译码器ID(分析指令操作码)等组成。控制整个CPU的工作,最为重要。
  • CPU依据指令周期的不同阶段来区分二进制的指令数据,因为在指令周期的不同阶段,指令会命令CPU分别去取指令或者数据。
  • 计算机指令的组成:一条指令由操作码操作数两部分组成,操作码决定要完成的操作,操作数指参加运算的数据及其所在的单元地址。
  • 在计算机中,操作要求和操作数地址都由二进制数码表示,分别称作操作码地址码,整条指令以二进制编码的形式存放在存储器中。
  • 计算机指令执行过程:可分为取指令分析指令执行指令三个步骤。
  • 指令寻址方式:顺序寻址方式、跳跃寻址方式。
  • 指令操作数的寻址方式:直接寻址方式、寄存器寻址方式、基址寻址方式、变址寻址方式、间接寻址方式、相对寻址方式。

指令系统CISC和RISC

  • CISC是复杂指令系统:兼容性强,指令繁多、长度可变,由微程序实现
  • RISC是精简指令系统:指令少,使用频率接近,主要依靠硬件实现(通用寄存器、硬布线逻辑控制)。
    区别对比:
比较项目CISCRISC
指令长度不固定,长短不一固定,通常为32位或64位
指令功能复杂,一条指令可完成多种操作,如同时进行算术运算和内存访问简单,一条指令一般只完成一个基本操作,如加法、减法等
指令周期长,执行一条复杂指令可能需要多个时钟周期短,大多数指令能在一个时钟周期内完成
寻址方式丰富,包括寄存器间接寻址、变址寻址、相对寻址等多种方式较少,通常主要采用寄存器寻址等简单方式
指令数量多,包含大量不同功能和格式的指令少,选取使用频率高的简单指令
硬件复杂度高,需要复杂的硬件电路来支持指令的译码和执行低,硬件结构相对简单,易于设计和实现
编译难度编译程序相对复杂,需要处理各种指令格式和功能编译程序相对简单,优化目标明确
应用场景适用于需要处理复杂任务的通用计算机,如服务器、大型机等常用于对实时性要求高、注重运算速度的场景,如嵌入式系统、移动设备等

指令的流水处理

  • 流水线原理:将指令分成不同段,每段由不同的部分去处理,因此可以产生叠加的效果,所有的部件去处理指令的不同段。
  • RISC中的流水线技术:超流水线(在每个机器周期内能完成一个甚至两个浮点操作,以时间换空间)、超标量(内装多条流水线同时执行多个处理,以空间换时间)、超长指令字VLIW(同时执行多条指令,发挥软件作用)。
  • 流水线周期:指令分成不同执行段,其中执行时间最长的段流水线周期
  • 流水线执行时间:1条指令总执行时间+(总指令条数-1)*流水线周期。
  • 单缓冲区和双缓冲区:一般来说,能够同时执行的阶段就是流水线的独立执行阶段;只能独立执行的阶段应该合并为流水线中的一个独立执行阶段。
  • 流水线吞吐率计算:吞吐率即单位时间内执行的指令条数。
    公式:指令条数/流水线执行时间
  • 流水线的加速比计算:加速比即使用流水线后的效率提升度,即比不使用流水线快了多少倍,越高表明流水线效率越高。
    公式:不使用流水线执行时间/使用流水线执行时间。

存储系统

  • 计算机存储结构层次图
    从上到下,存储设备的速度逐渐降低,而容量逐渐增大 。
  • 计算机采用分级存储体系的主要目的:是为了解决存储容量成本速度之间的矛盾问题。
  • 两级存储映像为:Cache-主存主存-辅存(虚拟存储体系)。
  • 存储器的分类,按存储器所处的位置分:内存外存
  • 存储器的分类,按存储器构成材料:磁存储器(磁带)、半导体存储器、光存储器(光盘)。
  • 存储器的分类,按存储器的工作方式:可读可写存储器(RAM)、只读存储器(ROM只能读,PROM可写入一次,EPROM和EEPOM既可以读也可以写,只是修改方式不用)。
  • 存储器的分类,按存储器访问方式:按地址访问、按内容访问(相联存储器)。
  • 存储器的分类,按寻址方式:随机存储器(访问任意存储单元所用时间相同)、顺序存储器(只能按顺序访问,如磁带)、直接存储器(二者结合,如磁盘,对于磁道的寻址是随机的,在一个磁道内则是顺序的)。
  • 局部性原理:在CPU运行时,所访问的数据会趋向于一个较小的局部空间地址内。(例如循环操作,循环体被反复执行)
  • 时间局部性原理:如果一个数据项正在被访问,那么在近期它很可能会被再次访问,即在相邻的时间里会访问同一个数据项。
  • 空间局部性原理:在最近的将来会用到的数据的地址和现在正在访问的数据地址很可能是相近的,即相邻的空间地址会被连续访问。
  • 高速缓存Cache:用来存储当前最活跃的程序和数据,直接与CPU交互,位于CPU和主存之间,容量小,速度为内存的5-10倍,由半导体材料构成。其内容是主存内存的副本拷贝,对于程序来说是透明的。
  • Cache由控制部分存储器组成,存储器存储数据,控制部分判断CPU要访问的数据是否在Cache中,在则命中,不在则依据一定的算法从主存中替换。
  • 地址映射方法:在CPU工作时,送出的是主存单元的地址,而应从Cache存储器中读/写信息。这就需要将主存地址转换为Cache存储器地址,这种地址的转换称为地址映像,由硬件自动完成映射。
  • 地址映射方法分为下列三种方法:
映射方法基本原理优点缺点
直接映像Cache与主存等分成块,主存块与Cache块号相同才能命中地址变换简单,硬件实现容易灵活性差,容易造成Cache资源浪费,块冲突概率较高
全相联映像主存任意一块可与Cache任意一块对应最不容易发生块冲突,能充分利用Cache空间地址变换复杂,速度慢,需要大量比较电路,硬件成本高
组相联映像Cache和主存先分块再分组,组间直接映像,组内全相联映像结合了直接映像和全相联映像的优点,在地址变换复杂度和块冲突概率之间取得平衡需要一定的硬件复杂度来实现组内的全相联查找和替换算法
  • 命中率及平均时间:
    Cache存储器的大小一般为K或者M单位,很小,但是最快,仅次于CPU中的寄存器,而寄存器一般不算作存储器,CPU与内存之间的数据交互,内存会先将数据拷贝到Cache里,这样,根据局部性原理,若Cache中的数据被循环执行,则不用每次都去内存中读取数据,会加快CPU工作效率。
    因此,Cache有一个命中率的概念,即当CPU所访问的数据在Cache中时,命中,直接从Cache中读取数据,设读取一次Cache时间为1ns,若CPU访问的数据不在Cache中,则需要从内存中读取,设读取一次内存的时间为1000ns,若在CPU多次读取数据过程中,有90%命中Cache,则CPU读取一次的平均时间为(90%1+10%1000)ns,很容易理解。
  • 虚拟存储器技术是将很大的数据分成许多较小的块,全部存储在外存中。运行时,将用到的数据调入主存中,马上要用到的数据置于缓存中,这样,一边运行一边进行所需数据块的调入/调出。
  • 对于应用程序来说,就好像有一个比实际主存空间大得多的虚拟主存空间,基本层级为:主存—缓存—外存。与CPU—高速缓存Cache—主存的原理类似。但虚拟存储器中程序无需考虑地址映像关系,由系统自动完成,因此对于程序来说是透明的。其管理方式分为页式段式段页式
  • 磁盘结构和参数:磁盘有正反两个盘面,每个盘面有多个同心圆,每个同心圆是一个磁道,每个同心圆又被划分为多个扇区,数据就被存放在一个个扇区中。
  • 公式为:存取时间=寻道时间+等待时间(平均定位时间+转动延迟)。
    注意:寻道时间是指磁头移动到磁道所需的时间;等待时间为等待读写的扇区转到磁头下方所用的时间。
  • 磁盘调度算法:磁盘数据的读取时间分为寻道时间+旋转时间,也即先找到对应的磁道,而后再旋转到对应的扇区才能读取数据,其中寻道时间耗时最长,需要重点调度。
    1)先来先服务FCFS:根据进程请求访问磁盘的先后顺序进行调度。
    2)最短寻道时间优先SSTF:请求访问的磁道与当前磁道最近的进程优先调度,使得每次的寻道时间最短。会产生“饥饿”现象,即远处进程可能永远无法访问。
    3)扫描算法SCAN:又称“电梯算法”,磁头在磁盘上双向移动,其会选择离磁头当前所在磁道最近的请求访问的磁道,并且与磁头移动方向一致,磁头永远都是从里向外或者从外向里一直移动完才掉头,与电梯类似。
    4)单向扫描调度算法CSCAN:与SCAN不同的是,其只做单向移动,即只能从里向外或者从外向里。

输入输出

  • 计算机系统中存在多种内存与接口地址的编址方法,常见的是下面两种:内存与接口地址独立编址和内存与接口地址统一编址
  • 程序控制(查询)方式:CPU主动查询外设是否完成数据传输,效率极低
  • 程序中断方式:外设完成数据传输后,向CPU发送中断,等待CPU处理数据,效率相对较高。中断响应时间指的是从发出中断请求到开始进入中断处理程序;中断处理时间指的是从中断处理开始到中断处理结束。中断向量提供中断服务程序的入口地址。多级中断嵌套,使用堆栈来保护断点和现场。
  • DMA方式(直接主存存取):CPU只需完成必要的初始化等操作,数据传输的整个过程都由DMA控制器来完成,在主存和外设之间建立直接的数据通路,效率很高。在一个总线周期结束后,CPU会响应DMA请求开始读取数据;CPU响应程序中断方式请求是在一条指令执行结束时;区分指令执行结束和总线周期结束。

总线

  • 总线从广义上讲,任何连接两个以上电子元器件的导线都可以称为总线,通常分为以下三类:内部总线、系统总线、外部总线。
  • 内部总线:内部芯片级别的总线,芯片与处理器之间通信的总线。
  • 系统总线:板级的总线,用于计算机内各部分之间的连接,具体分为数据总线(并行数据传输位数)、地址总线(系统可管理的内存空间的大小)、控制总线(传送控制命令)。代表的有ISA总线、EISA总线、PCl总线。
  • 外部总线:设备一级的总线,微机和外部设备的总线。代表的有RS232(串行总线)、SCSI(并行总线)、USB(通用串行总线,即插即用,支持热插拔)。
  • 并行总线适合近距离``高速数据传输,串行总线适合长距离数据传输,专用总线在设计上可以与连接设备实现最佳匹配。
  • 总线计算:总线的时钟周期=时钟频率的倒数;总线的宽度(传输速率)=单位时间内传输的数据总量/单位时间大小。

相关文章:

软考高级《系统架构设计师》知识点(一)

计算机硬件 校验码 码距:就单个编码A:00而言,其码距为1,因为其只需要改变一位就变成另一个编码。在两个编码中,从A码到B码转换所需要改变的位数称为码距,如A:00要转换为B:11,码距为2。一般来说,…...

用大模型学大模型01-制定学习计划

提示词:我想学习大模型,需要AI制定一个完整的学习计划,并给出学习路径和学习资料。以教科书目录的方式给出学习路线 第1章:数学与编程基础(4-6周) 1.1 数学基础 线性代数(矩阵运算、特征值分…...

lvs的DR模式

基于Linux的负载均衡集群软件 LVS 全称为Linux Virtual Server,是一款开源的四层(传输层)负载均衡软件 Nginx 支持四层和七层(应用层)负载均衡 HAProxy 和Nginx一样,也可同时支持四层和七层(应用层)负载均衡 基于Linux的高可用集群软件 Keepalived Keepalived是Linux…...

mysql读写分离与proxysql的结合

上一篇文章介绍了mysql如何设置成主从复制模式,而主从复制的目的,是为了读写分离。 读写分离,拿spring boot项目来说,可以有2种方式: 1)设置2个数据源,读和写分开使用 2)使用中间件…...

【C++学习篇】C++11第二期学习

目录 1. 可变参数模板 1.1 基本语法及原理 1.2 包扩展 1.3empalce系列接⼝ 2. lamba 2.1 lambda的语法表达式 2.2 捕捉列表 2.3 lamba的原理 1. 可变参数模板 1.1 基本语法及原理 1. C11⽀持可变参数模板,也就是说⽀持可变数量参数的函数模板和类模板&…...

TextWebSocketHandler 和 @ServerEndpoint 各自实现 WebSocket 服务器

TextWebSocketHandler 和 ServerEndpoint 都可以用于实现 WebSocket 服务器,但它们属于不同的技术栈,使用方式和功能有一些区别。以下是它们的对比: 1. 技术栈对比 特性TextWebSocketHandler (Spring)ServerEndpoint (Java EE/JSR-356)所属框…...

【C++高并发服务器WebServer】-18:事件处理模式与线程池

本文目录 一、事件处理模式1.1 Reactor模式1.2 Proactor模式1.3 同步IO模拟Proactor模式 二、线程池 一、事件处理模式 服务器程序通常需要处理三类事件:I/O事件、信号、定时事件。 对应的有两种高效的事件处理模式:Reactor和Proactor,同步…...

23种设计模式的定义和应用场景-02-结构型模式-C#代码

23种设计模式的定义和应用场景: 1. 创建型模式(共5种): 单例模式(Singleton)、工厂方法模式(Factory Method)、抽象工厂模式(Abstract Factory)、建造者模式…...

数据脱敏方案总结

什么是数据脱敏 数据脱敏的定义 数据脱敏百度百科中是这样定义的: 数据脱敏,指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。这样就可以在开发、测试和其它非生产环境以及外包环境中安全地使用脱敏后的真实数据集…...

自然语言处理NLP入门 -- 第二节预处理文本数据

在自然语言处理(NLP)中,数据的质量直接影响模型的表现。文本预处理的目标是清理和标准化文本数据,使其适合机器学习或深度学习模型处理。本章介绍几种常见的文本预处理方法,并通过 Python 代码进行示例。 2.1 文本清理…...

02.10 TCP之文件传输

1.思维导图 2.作业 服务器代码&#xff1a; #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <pthread.h> …...

基于STM32的ADS1230驱动例程

自己在练手项目中用到了ADS1230&#xff0c;根据芯片手册自写的驱动代码&#xff0c;已测可用&#xff0c;希望对将要用到ADS1230芯片的人有所帮助。 芯片&#xff1a;STM32系列任意芯片、ADS1230 环境&#xff1a;使用STM32CubeMX配置引脚、KEIL 部分电路&#xff1a; 代码…...

Bro想要玩github api

Bro想要在vscode 和 rest client插件的帮助下&#xff0c;修改我的github个人信息 ### 先安装REST client插件 ### 文件名test-github.http ### bro需要自己在github develop setting 获得token ### ref link: https://docs.github.com/en/authentication/keeping-your-accoun…...

idea插件开发,如何获取idea设置的系统语言

手打不易&#xff0c;如果转摘&#xff0c;请注明出处&#xff01; 注明原文&#xff1a;https://zhangxiaofan.blog.csdn.net/article/details/145578160 版本要求 大于 2024.3 错误用法 网上有的说使用&#xff1a;UIUtil com.intellij.util.ui.UIUtil 代码示例&#xf…...

怎麼使用靜態住宅IP進行多社媒帳號管理

隨著社交媒體平臺的多樣化&#xff0c;很多人發現一個社媒帳號已經無法滿足需求。以下是幾個常見場景&#xff1a; 企業需求&#xff1a;企業可能需要在不同平臺上運營多個品牌帳號&#xff0c;為每個市場地區單獨設立帳號。個人需求&#xff1a;一些自由職業者或內容創作者可…...

InfiniBand与IP over InfiniBand(IPOIB):实现高性能网络通信的底层机制

在现代高性能计算(HPC)和数据中心环境中,网络通信的效率和性能至关重要。InfiniBand(IB)作为一种高性能的串行计算机总线架构,以其低延迟、高带宽和高可靠性而广泛应用于集群计算和数据中心。IP over InfiniBand(IPOIB)则是在InfiniBand网络上实现IP协议的一种方式,它…...

掌握 PHP 单例模式:构建更高效的应用

在 PHP 应用开发中&#xff0c;资源的高效管理至关重要。单例模式是一种能够帮助我们实现这一目标的设计模式。本文将深入探讨单例模式的概念、工作原理以及在 PHP 项目中何时应该&#xff08;或不应该&#xff09;使用它。 什么是单例模式&#xff1f; 单例模式是一种设计模…...

实现限制同一个账号最多只能在3个客户端(有电脑、手机等)登录(附关键源码)

如上图&#xff0c;我的百度网盘已登录设备列表&#xff0c;有一个手机&#xff0c;2个windows客户端。手机设备有型号、最后登录时间、IP等。windows客户端信息有最后登录时间、操作系统类型、IP地址等。这些具体是如何实现的&#xff1f;下面分别给出android APP中采集手机信…...

Python入门全攻略(四)

函数 初识函数 函数&#xff1a;封装具有某种功能的代码块。 函数定义 使用def关键字来定义函数 # 定义函数 def 函数名(): 代码块 # 调用函数 函数名() 函数参数 def 函数名(形参) 代码块 # 调用 函数名(实参) 位置参数 按参数顺序传参 def func(a, b): print(a b)…...

Ubuntu 22.04 - OpenLDAP安装使用(服务器+LAM+客户端)

csdn你…怎么不自动保存了很崩溃啊啊啊啊&#xff0c;我记得发现没保存之后我又改了一遍然后保存了&#xff0c;怎么现在又没了啊啊啊啊&#xff0c;过了这么久我都不记得了啊啊啊啊啊 参考 在 Ubuntu 22.04|20.04|18.04 上安装 OpenLDAP 和 phpLDAPadmin 在 Ubuntu 22.04|20…...

第19节 Node.js Express 框架

Express 是一个为Node.js设计的web开发框架&#xff0c;它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用&#xff0c;和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

GraphQL 实战篇:Apollo Client 配置与缓存

GraphQL 实战篇&#xff1a;Apollo Client 配置与缓存 上一篇&#xff1a;GraphQL 入门篇&#xff1a;基础查询语法 依旧和上一篇的笔记一样&#xff0c;主实操&#xff0c;没啥过多的细节讲解&#xff0c;代码具体在&#xff1a; https://github.com/GoldenaArcher/graphql…...

Linux-进程间的通信

1、IPC&#xff1a; Inter Process Communication&#xff08;进程间通信&#xff09;&#xff1a; 由于每个进程在操作系统中有独立的地址空间&#xff0c;它们不能像线程那样直接访问彼此的内存&#xff0c;所以必须通过某种方式进行通信。 常见的 IPC 方式包括&#…...

CppCon 2015 学习:REFLECTION TECHNIQUES IN C++

关于 Reflection&#xff08;反射&#xff09; 这个概念&#xff0c;总结一下&#xff1a; Reflection&#xff08;反射&#xff09;是什么&#xff1f; 反射是对类型的自我检查能力&#xff08;Introspection&#xff09; 可以查看类的成员变量、成员函数等信息。反射允许枚…...